summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorWilliam Tumeo <tumeowilliam@gmail.com>2018-09-21 00:14:04 -0300
committerWilliam Tumeo <tumeowilliam@gmail.com>2018-10-02 15:41:16 -0300
commit62218ea41b785378176334bb9a6eef79d7286441 (patch)
treea4a45f38fdb387fdf2e666952af1c2fe3930308f
parentd9e88bccbea11189b9ea1437d4a48266b69aaf27 (diff)
Editor: Skip loading main scene if restore_scenes_on_load is used
-rw-r--r--editor/editor_node.cpp18
-rw-r--r--editor/editor_node.h1
-rw-r--r--main/main.cpp8
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