From 2924536e903bebe0d7ddb892784fb3c3f16b23dd Mon Sep 17 00:00:00 2001 From: MarianoGNU Date: Sun, 26 Jun 2016 00:54:17 -0300 Subject: Save all edited scenes when Runing (and auto-save is enabled). Fixes #4410 --- tools/editor/editor_data.cpp | 31 ++++++++++++++++++++++--------- 1 file changed, 22 insertions(+), 9 deletions(-) (limited to 'tools/editor/editor_data.cpp') diff --git a/tools/editor/editor_data.cpp b/tools/editor/editor_data.cpp index 0f1004103..78c3392f4 100644 --- a/tools/editor/editor_data.cpp +++ b/tools/editor/editor_data.cpp @@ -613,11 +613,14 @@ void EditorData::set_edited_scene(int p_idx){ current_edited_scene=p_idx; //swap } -Node* EditorData::get_edited_scene_root(){ - - ERR_FAIL_INDEX_V(current_edited_scene,edited_scene.size(),NULL); - - return edited_scene[current_edited_scene].root; +Node* EditorData::get_edited_scene_root(int p_idx){ + if (p_idx < 0) { + ERR_FAIL_INDEX_V(current_edited_scene,edited_scene.size(),NULL); + return edited_scene[current_edited_scene].root; + } else { + ERR_FAIL_INDEX_V(p_idx,edited_scene.size(),NULL); + return edited_scene[p_idx].root; + } } void EditorData::set_edited_scene_root(Node* p_root) { @@ -630,9 +633,14 @@ int EditorData::get_edited_scene_count() const { return edited_scene.size(); } -void EditorData::set_edited_scene_version(uint64_t version) { +void EditorData::set_edited_scene_version(uint64_t version, int scene_idx) { ERR_FAIL_INDEX(current_edited_scene,edited_scene.size()); - edited_scene[current_edited_scene].version=version; + if (scene_idx < 0) { + edited_scene[current_edited_scene].version=version; + } else { + ERR_FAIL_INDEX(scene_idx,edited_scene.size()); + edited_scene[scene_idx].version=version; + } } @@ -758,10 +766,15 @@ void EditorData::set_edited_scene_import_metadata(Ref p_ } -Ref EditorData::get_edited_scene_import_metadata() const{ +Ref EditorData::get_edited_scene_import_metadata(int idx) const{ ERR_FAIL_INDEX_V(current_edited_scene,edited_scene.size(),Ref()); - return edited_scene[current_edited_scene].medatata; + if(idx<0) { + return edited_scene[current_edited_scene].medatata; + } else { + ERR_FAIL_INDEX_V(idx,edited_scene.size(),Ref()); + return edited_scene[idx].medatata; + } } -- cgit v1.2.3-70-g09d2 From 158585b21cf5570c425428bb76c6749518199042 Mon Sep 17 00:00:00 2001 From: MarianoGNU Date: Fri, 8 Jul 2016 13:36:57 -0300 Subject: save the editor state of the right scene instead of current --- tools/editor/editor_data.cpp | 7 +++++++ tools/editor/editor_data.h | 1 + tools/editor/editor_node.cpp | 4 ++-- 3 files changed, 10 insertions(+), 2 deletions(-) (limited to 'tools/editor/editor_data.cpp') diff --git a/tools/editor/editor_data.cpp b/tools/editor/editor_data.cpp index 78c3392f4..8d3fd6c9c 100644 --- a/tools/editor/editor_data.cpp +++ b/tools/editor/editor_data.cpp @@ -326,6 +326,13 @@ Dictionary EditorData::get_editor_states() const { } +Dictionary EditorData::get_scene_editor_states(int p_idx) const +{ + ERR_FAIL_INDEX_V(p_idx,edited_scene.size(),Dictionary()); + EditedScene es = edited_scene[p_idx]; + return es.editor_states; +} + void EditorData::set_editor_states(const Dictionary& p_states) { List keys; diff --git a/tools/editor/editor_data.h b/tools/editor/editor_data.h index 785e9076d..a0b716f56 100644 --- a/tools/editor/editor_data.h +++ b/tools/editor/editor_data.h @@ -156,6 +156,7 @@ public: void paste_object_params(Object *p_object); Dictionary get_editor_states() const; + Dictionary get_scene_editor_states(int p_idx) const; void set_editor_states(const Dictionary& p_states); void get_editor_breakpoints(List *p_breakpoints); void clear_editor_states(); diff --git a/tools/editor/editor_node.cpp b/tools/editor/editor_node.cpp index 98cd8b9cd..6f4f86ea6 100644 --- a/tools/editor/editor_node.cpp +++ b/tools/editor/editor_node.cpp @@ -740,7 +740,7 @@ void EditorNode::_set_scene_metadata(const String& p_file, int p_idx) { Ref cf; cf.instance(); - Dictionary md = editor_data.get_editor_states(); + Dictionary md = editor_data.get_edited_scene()==p_idx?editor_data.get_editor_states():editor_data.get_scene_editor_states(p_idx); List keys; md.get_key_list(&keys); @@ -970,7 +970,7 @@ void EditorNode::_save_scene(String p_file, int idx) { editor_data.apply_changes_in_editors(); - _set_scene_metadata(p_file); + _set_scene_metadata(p_file,idx); Ref sdata; -- cgit v1.2.3-70-g09d2