…lines 1–27 unchanged (27 lines)
28/* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */
29/**************************************************************************/
30
31#include "camera_3d_editor_plugin.h"
32
33#include "core/config/project_settings.h"
34#include "node_3d_editor_plugin.h"
35#include "scene/gui/aspect_ratio_container.h"
36#include "scene/gui/foldable_container.h"
37#include "scene/gui/subviewport_container.h"
38#include "scene/main/viewport.h"
39
40void Camera3DEditor::_node_removed(Node *p_node) {
41 if (p_node == node) {
42 node = nullptr;
43 Node3DEditor::get_singleton()->set_custom_camera(nullptr);
…lines 44–76 unchanged (33 lines)
77 preview->set_offset(SIDE_RIGHT, 0);
78 preview->set_offset(SIDE_TOP, 0);
79 preview->set_offset(SIDE_BOTTOM, 10);
80 preview->connect(SceneStringName(pressed), callable_mp(this, &Camera3DEditor::_pressed));
81}
82
83bool Camera3DPreview::camera_preview_folded = false;
84
85void Camera3DPreview::_update_sub_viewport_size() {
86 const Size2i camera_size = Node3DEditor::get_camera_viewport_size(camera);
87 centering_container->set_ratio(camera_size.aspect());
88}
89
90void Camera3DPreview::_toggle_folding(bool p_folded) {
91 camera_preview_folded = p_folded;
92}
93
94Camera3DPreview::Camera3DPreview(Camera3D *p_camera) {
95 camera = p_camera;
96
97 FoldableContainer *folder = memnew(FoldableContainer);
98 folder->set_title(TTRC("Camera Preview"));
99 folder->set_title_text_overrun_behavior(TextServer::OVERRUN_TRIM_ELLIPSIS);
100 folder->set_folded(camera_preview_folded);
101 folder->connect("folding_changed", callable_mp(this, &Camera3DPreview::_toggle_folding));
102 add_child(folder);
103
104 centering_container = memnew(AspectRatioContainer);
105 centering_container->set_custom_minimum_size(Size2(0.0, 256.0) * EDSCALE);
106 folder->add_child(centering_container);
107
108 SubViewportContainer *sub_viewport_container = memnew(SubViewportContainer);
109 sub_viewport_container->set_stretch(true);
110 sub_viewport_container->set_texture_filter(TEXTURE_FILTER_NEAREST_WITH_MIPMAPS);
111 centering_container->add_child(sub_viewport_container);
112
113 sub_viewport = memnew(SubViewport);
114 sub_viewport_container->add_child(sub_viewport);
115
116 RenderingServer::get_singleton()->viewport_attach_camera(sub_viewport->get_viewport_rid(), camera->get_camera());
117
118 ProjectSettings::get_singleton()->connect("settings_changed", callable_mp(this, &Camera3DPreview::_project_settings_changed));
119 _project_settings_changed();
120}
121
122void Camera3DPreview::_project_settings_changed() {
123 _update_sub_viewport_size();
…lines 124–159 unchanged (36 lines)