From e2dd60b5f8cd206cae03e71e61d71ed17f30c5be Mon Sep 17 00:00:00 2001 From: Aaron Franke Date: Wed, 1 Oct 2025 00:04:45 -0700 Subject: [PATCH] Group together 2D camera override functions --- scene/debugger/scene_debugger.cpp | 67 +++++++++++++++---------------- scene/debugger/scene_debugger.h | 11 +++-- scene/main/viewport.cpp | 64 +++++++++++++++-------------- scene/main/viewport.h | 18 ++++----- 4 files changed, 80 insertions(+), 80 deletions(-) diff --git a/scene/debugger/scene_debugger.cpp b/scene/debugger/scene_debugger.cpp index 57da87b475c..bb9d1d44d95 100644 --- a/scene/debugger/scene_debugger.cpp +++ b/scene/debugger/scene_debugger.cpp @@ -225,39 +225,6 @@ Error SceneDebugger::_msg_override_cameras(const Array &p_args) { return OK; } -Error SceneDebugger::_msg_transform_camera_2d(const Array &p_args) { - ERR_FAIL_COND_V(p_args.is_empty(), ERR_INVALID_DATA); - ERR_FAIL_COND_V(!SceneTree::get_singleton()->get_root()->is_camera_2d_override_enabled(), ERR_BUG); - Transform2D transform = p_args[0]; - Camera2D *override_camera = SceneTree::get_singleton()->get_root()->get_override_camera_2d(); - override_camera->set_offset(transform.affine_inverse().get_origin()); - override_camera->set_zoom(transform.get_scale()); - RuntimeNodeSelect::get_singleton()->_queue_selection_update(); - return OK; -} - -#ifndef _3D_DISABLED -Error SceneDebugger::_msg_transform_camera_3d(const Array &p_args) { - ERR_FAIL_COND_V(p_args.size() < 5, ERR_INVALID_DATA); - ERR_FAIL_COND_V(!SceneTree::get_singleton()->get_root()->is_camera_3d_override_enabled(), ERR_BUG); - Transform3D transform = p_args[0]; - bool is_perspective = p_args[1]; - float size_or_fov = p_args[2]; - float depth_near = p_args[3]; - float depth_far = p_args[4]; - - Camera3D *override_camera = SceneTree::get_singleton()->get_root()->get_override_camera_3d(); - if (is_perspective) { - override_camera->set_perspective(size_or_fov, depth_near, depth_far); - } else { - override_camera->set_orthogonal(size_or_fov, depth_near, depth_far); - } - override_camera->set_transform(transform); - RuntimeNodeSelect::get_singleton()->_queue_selection_update(); - return OK; -} -#endif // _3D_DISABLED - Error SceneDebugger::_msg_set_object_property(const Array &p_args) { ERR_FAIL_COND_V(p_args.size() < 3, ERR_INVALID_DATA); _set_object_property(p_args[0], p_args[1], p_args[2]); @@ -443,11 +410,43 @@ Error SceneDebugger::_msg_runtime_node_select_reset_camera_2d(const Array &p_arg RuntimeNodeSelect::get_singleton()->_reset_camera_2d(); return OK; } + +Error SceneDebugger::_msg_transform_camera_2d(const Array &p_args) { + ERR_FAIL_COND_V(p_args.is_empty(), ERR_INVALID_DATA); + ERR_FAIL_COND_V(!SceneTree::get_singleton()->get_root()->is_camera_2d_override_enabled(), ERR_BUG); + Transform2D transform = p_args[0]; + Camera2D *override_camera = SceneTree::get_singleton()->get_root()->get_override_camera_2d(); + override_camera->set_offset(transform.affine_inverse().get_origin()); + override_camera->set_zoom(transform.get_scale()); + RuntimeNodeSelect::get_singleton()->_queue_selection_update(); + return OK; +} + #ifndef _3D_DISABLED Error SceneDebugger::_msg_runtime_node_select_reset_camera_3d(const Array &p_args) { RuntimeNodeSelect::get_singleton()->_reset_camera_3d(); return OK; } + +Error SceneDebugger::_msg_transform_camera_3d(const Array &p_args) { + ERR_FAIL_COND_V(p_args.size() < 5, ERR_INVALID_DATA); + ERR_FAIL_COND_V(!SceneTree::get_singleton()->get_root()->is_camera_3d_override_enabled(), ERR_BUG); + Transform3D transform = p_args[0]; + bool is_perspective = p_args[1]; + float size_or_fov = p_args[2]; + float depth_near = p_args[3]; + float depth_far = p_args[4]; + + Camera3D *override_camera = SceneTree::get_singleton()->get_root()->get_override_camera_3d(); + if (is_perspective) { + override_camera->set_perspective(size_or_fov, depth_near, depth_far); + } else { + override_camera->set_orthogonal(size_or_fov, depth_near, depth_far); + } + override_camera->set_transform(transform); + RuntimeNodeSelect::get_singleton()->_queue_selection_update(); + return OK; +} #endif // _3D_DISABLED // endregion @@ -534,7 +533,7 @@ void SceneDebugger::_init_message_handlers() { message_handlers["transform_camera_2d"] = _msg_transform_camera_2d; #ifndef _3D_DISABLED message_handlers["transform_camera_3d"] = _msg_transform_camera_3d; -#endif +#endif // _3D_DISABLED message_handlers["set_object_property"] = _msg_set_object_property; message_handlers["set_object_property_field"] = _msg_set_object_property_field; message_handlers["reload_cached_files"] = _msg_reload_cached_files; diff --git a/scene/debugger/scene_debugger.h b/scene/debugger/scene_debugger.h index d2062090406..f8025d79b0d 100644 --- a/scene/debugger/scene_debugger.h +++ b/scene/debugger/scene_debugger.h @@ -91,10 +91,6 @@ private: static Error _msg_next_frame(const Array &p_args); static Error _msg_debug_mute_audio(const Array &p_args); static Error _msg_override_cameras(const Array &p_args); - static Error _msg_transform_camera_2d(const Array &p_args); -#ifndef _3D_DISABLED - static Error _msg_transform_camera_3d(const Array &p_args); -#endif static Error _msg_set_object_property(const Array &p_args); static Error _msg_set_object_property_field(const Array &p_args); static Error _msg_reload_cached_files(const Array &p_args); @@ -118,11 +114,14 @@ private: static Error _msg_runtime_node_select_set_type(const Array &p_args); static Error _msg_runtime_node_select_set_mode(const Array &p_args); static Error _msg_runtime_node_select_set_visible(const Array &p_args); + static Error _msg_rq_screenshot(const Array &p_args); + static Error _msg_runtime_node_select_reset_camera_2d(const Array &p_args); + static Error _msg_transform_camera_2d(const Array &p_args); #ifndef _3D_DISABLED static Error _msg_runtime_node_select_reset_camera_3d(const Array &p_args); -#endif - static Error _msg_rq_screenshot(const Array &p_args); + static Error _msg_transform_camera_3d(const Array &p_args); +#endif // _3D_DISABLED public: static Error parse_message(void *p_user, const String &p_msg, const Array &p_args, bool &r_captured); diff --git a/scene/main/viewport.cpp b/scene/main/viewport.cpp index 001d8f46a1e..0a05c055ac0 100644 --- a/scene/main/viewport.cpp +++ b/scene/main/viewport.cpp @@ -34,8 +34,6 @@ #include "core/debugger/engine_debugger.h" #include "core/templates/pair.h" #include "core/templates/sort_array.h" -#include "scene/2d/audio_listener_2d.h" -#include "scene/2d/camera_2d.h" #include "scene/gui/control.h" #include "scene/gui/label.h" #include "scene/gui/popup.h" @@ -50,6 +48,10 @@ #include "servers/audio_server.h" #include "servers/rendering/rendering_server_globals.h" +// 2D. +#include "scene/2d/audio_listener_2d.h" +#include "scene/2d/camera_2d.h" + #ifndef _3D_DISABLED #include "scene/3d/audio_listener_3d.h" #include "scene/3d/camera_3d.h" @@ -1205,35 +1207,6 @@ void Viewport::canvas_parent_mark_dirty(Node *p_node) { } } -#if DEBUG_ENABLED -void Viewport::enable_camera_2d_override(bool p_enable) { - ERR_MAIN_THREAD_GUARD; - - if (p_enable) { - camera_2d_override.enable(this, camera_2d); - } else { - camera_2d_override.disable(camera_2d); - } -} - -bool Viewport::is_camera_2d_override_enabled() const { - ERR_READ_THREAD_GUARD_V(false); - return camera_2d_override.is_enabled(); -} - -Camera2D *Viewport::get_overridden_camera_2d() const { - ERR_READ_THREAD_GUARD_V(nullptr); - ERR_FAIL_COND_V(!camera_2d_override.is_enabled(), nullptr); - return camera_2d_override.get_overridden_camera(); -} - -Camera2D *Viewport::get_override_camera_2d() const { - ERR_READ_THREAD_GUARD_V(nullptr); - ERR_FAIL_COND_V(!camera_2d_override.is_enabled(), nullptr); - return camera_2d_override.is_enabled() ? get_camera_2d() : nullptr; -} -#endif // DEBUG_ENABLED - void Viewport::set_canvas_transform(const Transform2D &p_transform) { ERR_MAIN_THREAD_GUARD; canvas_transform = p_transform; @@ -4400,6 +4373,35 @@ void Viewport::assign_next_enabled_camera_2d(const StringName &p_camera_group) { } } +#if DEBUG_ENABLED +void Viewport::enable_camera_2d_override(bool p_enable) { + ERR_MAIN_THREAD_GUARD; + + if (p_enable) { + camera_2d_override.enable(this, camera_2d); + } else { + camera_2d_override.disable(camera_2d); + } +} + +bool Viewport::is_camera_2d_override_enabled() const { + ERR_READ_THREAD_GUARD_V(false); + return camera_2d_override.is_enabled(); +} + +Camera2D *Viewport::get_overridden_camera_2d() const { + ERR_READ_THREAD_GUARD_V(nullptr); + ERR_FAIL_COND_V(!camera_2d_override.is_enabled(), nullptr); + return camera_2d_override.get_overridden_camera(); +} + +Camera2D *Viewport::get_override_camera_2d() const { + ERR_READ_THREAD_GUARD_V(nullptr); + ERR_FAIL_COND_V(!camera_2d_override.is_enabled(), nullptr); + return camera_2d_override.is_enabled() ? get_camera_2d() : nullptr; +} +#endif // DEBUG_ENABLED + #ifndef _3D_DISABLED AudioListener3D *Viewport::get_audio_listener_3d() const { ERR_READ_THREAD_GUARD_V(nullptr); diff --git a/scene/main/viewport.h b/scene/main/viewport.h index 6e7efe54eb4..4dd39c14998 100644 --- a/scene/main/viewport.h +++ b/scene/main/viewport.h @@ -534,13 +534,6 @@ public: Ref get_world_2d() const; Ref find_world_2d() const; -#if DEBUG_ENABLED - void enable_camera_2d_override(bool p_enable); - bool is_camera_2d_override_enabled() const; - Camera2D *get_overridden_camera_2d() const; - Camera2D *get_override_camera_2d() const; -#endif // DEBUG_ENABLED - void set_canvas_transform(const Transform2D &p_transform); Transform2D get_canvas_transform() const; @@ -766,11 +759,18 @@ private: friend class Camera2D; // Needs _camera_2d_set Camera2D *camera_2d = nullptr; + void _camera_2d_set(Camera2D *p_camera_2d); #if DEBUG_ENABLED CameraOverride camera_2d_override; -#endif // DEBUG_ENABLED - void _camera_2d_set(Camera2D *p_camera_2d); +public: + void enable_camera_2d_override(bool p_enable); + bool is_camera_2d_override_enabled() const; + Camera2D *get_overridden_camera_2d() const; + Camera2D *get_override_camera_2d() const; +#endif // DEBUG_ENABLED + +private: #ifndef PHYSICS_2D_DISABLED // Collider to frame HashMap physics_2d_mouseover;