diff options
-rw-r--r-- | editor/editor_node.cpp | 18 | ||||
-rw-r--r-- | editor/editor_node.h | 1 | ||||
-rw-r--r-- | main/main.cpp | 8 |
3 files changed, 24 insertions, 3 deletions
diff --git a/editor/editor_node.cpp b/editor/editor_node.cpp index d009ed61b5..a3743efb38 100644 --- a/editor/editor_node.cpp +++ b/editor/editor_node.cpp @@ -3645,6 +3645,7 @@ void EditorNode::_load_docks() { _load_docks_from_config(config, "docks"); _load_open_scenes_from_config(config, "EditorNode"); + editor_data.set_plugin_window_layout(config); } @@ -3839,6 +3840,23 @@ void EditorNode::_load_open_scenes_from_config(Ref<ConfigFile> p_layout, const S restoring_scenes = false; } +bool EditorNode::has_scenes_in_session() { + if (!bool(EDITOR_GET("interface/scene_tabs/restore_scenes_on_load"))) { + return false; + } + Ref<ConfigFile> config; + config.instance(); + Error err = config->load(EditorSettings::get_singleton()->get_project_settings_dir().plus_file("editor_layout.cfg")); + if (err != OK) { + return false; + } + if (!config->has_section("EditorNode") || !config->has_section_key("EditorNode", "open_scenes")) { + return false; + } + Array scenes = config->get_value("EditorNode", "open_scenes"); + return !scenes.empty(); +} + void EditorNode::_update_layouts_menu() { editor_layouts->clear(); diff --git a/editor/editor_node.h b/editor/editor_node.h index 4d89d1f956..3a4b8d451f 100644 --- a/editor/editor_node.h +++ b/editor/editor_node.h @@ -789,6 +789,7 @@ public: void edit_current() { _edit_current(); }; void update_keying() const { inspector_dock->update_keying(); }; + bool has_scenes_in_session(); EditorNode(); ~EditorNode(); diff --git a/main/main.cpp b/main/main.cpp index db23a6c214..6a786e9cb5 100644 --- a/main/main.cpp +++ b/main/main.cpp @@ -1697,9 +1697,11 @@ bool Main::start() { #ifdef TOOLS_ENABLED if (editor) { - Error serr = editor_node->load_scene(local_game_path); - if (serr != OK) - ERR_PRINT("Failed to load scene"); + if (game_path != GLOBAL_GET("application/run/main_scene") || !editor_node->has_scenes_in_session()) { + Error serr = editor_node->load_scene(local_game_path); + if (serr != OK) + ERR_PRINT("Failed to load scene"); + } OS::get_singleton()->set_context(OS::CONTEXT_EDITOR); } #endif |