Change embedded window options to use three stacked dots and add HDR window information.

Co-authored-by: Josh Jones <kilauea.jones@gmail.com>
This commit is contained in:
Allen Pestaluky
2026-03-26 10:33:40 -04:00
parent ee713ccb7c
commit 2a059cd513
5 changed files with 305 additions and 53 deletions
+58
View File
@@ -52,6 +52,8 @@
#include "scene/main/window.h" // SceneTree:get_root()
#include "scene/resources/packed_scene.h"
#include "servers/audio/audio_server.h"
#include "servers/display/display_server.h"
#include "servers/rendering/rendering_device.h"
#include "servers/rendering/rendering_server.h"
#ifndef _3D_DISABLED
@@ -137,11 +139,27 @@ void SceneDebugger::_handle_embed_input(const Ref<InputEvent> &p_event, const Di
}
}
void SceneDebugger::_on_window_size_changed() {
_msg_window_request_size(Array());
}
void SceneDebugger::_on_output_max_linear_value_changed(float max_linear_value) {
_msg_hdr_output_request_state(Array());
}
Error SceneDebugger::_msg_setup_scene(const Array &p_args) {
SceneTree::get_singleton()->get_root()->connect(SceneStringName(window_input), callable_mp_static(SceneDebugger::_handle_input).bind(DebuggerMarshalls::deserialize_key_shortcut(p_args)));
return OK;
}
Error SceneDebugger::_msg_setup_game_view(const Array &p_args) {
Window *root = SceneTree::get_singleton()->get_root();
root->connect("size_changed", callable_mp_static(SceneDebugger::_on_window_size_changed));
root->connect("output_max_linear_value_changed", callable_mp_static(SceneDebugger::_on_output_max_linear_value_changed));
EngineDebugger::get_singleton()->send_message("game_view:setup_complete", Array());
return OK;
}
Error SceneDebugger::_msg_request_scene_tree(const Array &p_args) {
LiveEditor::get_singleton()->_send_tree();
return OK;
@@ -218,6 +236,42 @@ Error SceneDebugger::_msg_debug_mute_audio(const Array &p_args) {
return OK;
}
Error SceneDebugger::_msg_window_request_size(const Array &p_args) {
Array size;
size.append(SceneTree::get_singleton()->get_root()->get_size());
EngineDebugger::get_singleton()->send_message("game_view:window_size", size);
return OK;
}
Error SceneDebugger::_msg_hdr_output_request_state(const Array &p_args) {
DisplayServer *ds = DisplayServer::get_singleton();
bool renderer_supports_hdr_output = false;
#if defined(RD_ENABLED)
RenderingDevice *rendering_device = RD::get_singleton();
if (rendering_device && rendering_device->has_feature(RD::SUPPORTS_HDR_OUTPUT)) {
renderer_supports_hdr_output = true;
}
#endif
Array state;
state.append(ds->window_is_hdr_output_requested());
state.append(ds->window_is_hdr_output_enabled());
state.append(ds->window_get_hdr_output_current_reference_luminance());
state.append(ds->window_get_hdr_output_current_max_luminance());
state.append(ds->window_get_output_max_linear_value());
state.append(ds->has_feature(DisplayServerEnums::Feature::FEATURE_HDR_OUTPUT));
state.append(renderer_supports_hdr_output);
EngineDebugger::get_singleton()->send_message("game_view:hdr_state", state);
return OK;
}
Error SceneDebugger::_msg_hdr_output_toggle_requested(const Array &p_args) {
DisplayServer *ds = DisplayServer::get_singleton();
ds->window_request_hdr_output(!ds->window_is_hdr_output_requested());
return OK;
}
Error SceneDebugger::_msg_override_cameras(const Array &p_args) {
ERR_FAIL_COND_V(p_args.is_empty(), ERR_INVALID_DATA);
bool enable = p_args[0];
@@ -548,6 +602,7 @@ Error SceneDebugger::parse_message(void *p_user, const String &p_msg, const Arra
void SceneDebugger::_init_message_handlers() {
message_handlers["setup_scene"] = _msg_setup_scene;
message_handlers["setup_game_view"] = _msg_setup_game_view;
message_handlers["setup_embedded_shortcuts"] = _msg_setup_embedded_shortcuts;
message_handlers["request_scene_tree"] = _msg_request_scene_tree;
message_handlers["save_node"] = _msg_save_node;
@@ -560,6 +615,9 @@ void SceneDebugger::_init_message_handlers() {
message_handlers["next_frame"] = _msg_next_frame;
message_handlers["speed_changed"] = _msg_speed_changed;
message_handlers["debug_mute_audio"] = _msg_debug_mute_audio;
message_handlers["window_request_size"] = _msg_window_request_size;
message_handlers["hdr_output_request_state"] = _msg_hdr_output_request_state;
message_handlers["hdr_output_toggle_requested"] = _msg_hdr_output_toggle_requested;
message_handlers["override_cameras"] = _msg_override_cameras;
message_handlers["transform_camera_2d"] = _msg_transform_camera_2d;
#ifndef _3D_DISABLED