diff options
Diffstat (limited to 'editor/editor_data.cpp')
-rw-r--r-- | editor/editor_data.cpp | 8 |
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(); |