You've already forked godot
mirror of
https://github.com/godotengine/godot.git
synced 2025-11-07 12:30:27 +00:00
Fix Game View cannot be editor feature disabled
This commit is contained in:
@@ -34,6 +34,7 @@
|
||||
#include "core/debugger/debugger_marshalls.h"
|
||||
#include "editor/debugger/editor_debugger_node.h"
|
||||
#include "editor/editor_command_palette.h"
|
||||
#include "editor/editor_feature_profile.h"
|
||||
#include "editor/editor_interface.h"
|
||||
#include "editor/editor_main_screen.h"
|
||||
#include "editor/editor_node.h"
|
||||
@@ -49,6 +50,10 @@
|
||||
#include "scene/gui/separator.h"
|
||||
|
||||
void GameViewDebugger::_session_started(Ref<EditorDebuggerSession> p_session) {
|
||||
if (!is_feature_enabled) {
|
||||
return;
|
||||
}
|
||||
|
||||
Array setup_data;
|
||||
Dictionary settings;
|
||||
settings["editors/panning/2d_editor_panning_scheme"] = EDITOR_GET("editors/panning/2d_editor_panning_scheme");
|
||||
@@ -73,9 +78,17 @@ void GameViewDebugger::_session_started(Ref<EditorDebuggerSession> p_session) {
|
||||
}
|
||||
|
||||
void GameViewDebugger::_session_stopped() {
|
||||
if (!is_feature_enabled) {
|
||||
return;
|
||||
}
|
||||
|
||||
emit_signal(SNAME("session_stopped"));
|
||||
}
|
||||
|
||||
void GameViewDebugger::set_is_feature_enabled(bool p_enabled) {
|
||||
is_feature_enabled = p_enabled;
|
||||
}
|
||||
|
||||
void GameViewDebugger::set_suspend(bool p_enabled) {
|
||||
Array message;
|
||||
message.append(p_enabled);
|
||||
@@ -198,6 +211,9 @@ void GameView::_instance_starting_static(int p_idx, List<String> &r_arguments) {
|
||||
}
|
||||
|
||||
void GameView::_instance_starting(int p_idx, List<String> &r_arguments) {
|
||||
if (!is_feature_enabled) {
|
||||
return;
|
||||
}
|
||||
if (p_idx == 0 && embed_on_play && make_floating_on_play && !window_wrapper->get_window_enabled() && EditorNode::get_singleton()->is_multi_window_enabled()) {
|
||||
window_wrapper->restore_window_from_saved_position(floating_window_rect, floating_window_screen, floating_window_screen_rect);
|
||||
}
|
||||
@@ -206,6 +222,10 @@ void GameView::_instance_starting(int p_idx, List<String> &r_arguments) {
|
||||
}
|
||||
|
||||
void GameView::_play_pressed() {
|
||||
if (!is_feature_enabled) {
|
||||
return;
|
||||
}
|
||||
|
||||
OS::ProcessID current_process_id = EditorRunBar::get_singleton()->get_current_process();
|
||||
if (current_process_id == 0) {
|
||||
return;
|
||||
@@ -231,6 +251,10 @@ void GameView::_play_pressed() {
|
||||
}
|
||||
|
||||
void GameView::_stop_pressed() {
|
||||
if (!is_feature_enabled) {
|
||||
return;
|
||||
}
|
||||
|
||||
EditorNode::get_singleton()->set_unfocused_low_processor_usage_mode_enabled(true);
|
||||
embedded_process->reset();
|
||||
_update_ui();
|
||||
@@ -476,6 +500,10 @@ void GameView::_notification(int p_what) {
|
||||
}
|
||||
}
|
||||
|
||||
void GameView::set_is_feature_enabled(bool p_enabled) {
|
||||
is_feature_enabled = p_enabled;
|
||||
}
|
||||
|
||||
void GameView::set_state(const Dictionary &p_state) {
|
||||
if (p_state.has("hide_selection")) {
|
||||
hide_selection->set_pressed(p_state["hide_selection"]);
|
||||
@@ -801,6 +829,22 @@ void GameViewPlugin::_notification(int p_what) {
|
||||
}
|
||||
}
|
||||
|
||||
void GameViewPlugin::_feature_profile_changed() {
|
||||
bool is_feature_enabled = true;
|
||||
Ref<EditorFeatureProfile> profile = EditorFeatureProfileManager::get_singleton()->get_current_profile();
|
||||
if (profile.is_valid()) {
|
||||
is_feature_enabled = !profile->is_feature_disabled(EditorFeatureProfile::FEATURE_GAME);
|
||||
}
|
||||
|
||||
if (debugger.is_valid()) {
|
||||
debugger->set_is_feature_enabled(is_feature_enabled);
|
||||
}
|
||||
|
||||
if (game_view) {
|
||||
game_view->set_is_feature_enabled(is_feature_enabled);
|
||||
}
|
||||
}
|
||||
|
||||
void GameViewPlugin::_window_visibility_changed(bool p_visible) {
|
||||
_focus_another_editor();
|
||||
}
|
||||
@@ -834,6 +878,8 @@ GameViewPlugin::GameViewPlugin() {
|
||||
window_wrapper->set_v_size_flags(Control::SIZE_EXPAND_FILL);
|
||||
window_wrapper->hide();
|
||||
window_wrapper->connect("window_visibility_changed", callable_mp(this, &GameViewPlugin::_window_visibility_changed));
|
||||
|
||||
EditorFeatureProfileManager::get_singleton()->connect("current_feature_profile_changed", callable_mp(this, &GameViewPlugin::_feature_profile_changed));
|
||||
}
|
||||
|
||||
GameViewPlugin::~GameViewPlugin() {
|
||||
|
||||
Reference in New Issue
Block a user