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:
@@ -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
|
||||
|
||||
Reference in New Issue
Block a user