Group together 2D camera override functions

This commit is contained in:
Aaron Franke 2025-10-01 00:04:45 -07:00
parent 7fbc3a5307
commit e2dd60b5f8
No known key found for this signature in database
GPG key ID: 40A1750B977E56BF
4 changed files with 80 additions and 80 deletions

View file

@ -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;

View file

@ -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);

View file

@ -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);

View file

@ -534,13 +534,6 @@ public:
Ref<World2D> get_world_2d() const;
Ref<World2D> 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<Camera2D> 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<ObjectID, uint64_t> physics_2d_mouseover;