summaryrefslogtreecommitdiffstats
path: root/editor/editor_data.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'editor/editor_data.cpp')
-rw-r--r--editor/editor_data.cpp8
1 files changed, 6 insertions, 2 deletions
diff --git a/editor/editor_data.cpp b/editor/editor_data.cpp
index 47642c1592..4b68a21cb9 100644
--- a/editor/editor_data.cpp
+++ b/editor/editor_data.cpp
@@ -721,8 +721,12 @@ bool EditorData::check_and_update_scene(int p_idx) {
}
new_scene->set_scene_file_path(edited_scene[p_idx].root->get_scene_file_path());
-
- memdelete(edited_scene[p_idx].root);
+ Node *old_root = edited_scene[p_idx].root;
+ for (int i = 0; i < old_root->get_child_count(); i++) {
+ memdelete(old_root->get_child(i));
+ }
+ old_root->replace_by(new_scene);
+ memdelete(old_root);
edited_scene.write[p_idx].root = new_scene;
if (!new_scene->get_scene_file_path().is_empty()) {
edited_scene.write[p_idx].path = new_scene->get_scene_file_path();