diff options
author | William Tumeo <tumeowilliam@gmail.com> | 2018-09-21 00:14:04 -0300 |
---|---|---|
committer | William Tumeo <tumeowilliam@gmail.com> | 2018-10-02 15:41:16 -0300 |
commit | 62218ea41b785378176334bb9a6eef79d7286441 (patch) | |
tree | a4a45f38fdb387fdf2e666952af1c2fe3930308f | |
parent | d9e88bccbea11189b9ea1437d4a48266b69aaf27 (diff) |
Editor: Skip loading main scene if restore_scenes_on_load is used
-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 03746fb8b7..a4c1964515 100644 --- a/editor/editor_node.cpp +++ b/editor/editor_node.cpp @@ -3592,6 +3592,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); } @@ -3786,6 +3787,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 bdbe0a245b..6ca0423d8f 100644 --- a/editor/editor_node.h +++ b/editor/editor_node.h @@ -777,6 +777,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 dac646ba70..dbbf4a107d 100644 --- a/main/main.cpp +++ b/main/main.cpp @@ -1681,9 +1681,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 |