From 609559c074478be839ca4e09a3bd45341a7c10a9 Mon Sep 17 00:00:00 2001 From: ajreckof Date: Sun, 7 Apr 2024 03:49:43 +0200 Subject: [PATCH] Fix strange visual bug with camera and external change. --- editor/editor_data.cpp | 1 + editor/editor_node.cpp | 4 +++- 2 files changed, 4 insertions(+), 1 deletion(-) diff --git a/editor/editor_data.cpp b/editor/editor_data.cpp index 6ab29c185099..72225fd4548c 100644 --- a/editor/editor_data.cpp +++ b/editor/editor_data.cpp @@ -722,6 +722,7 @@ bool EditorData::check_and_update_scene(int p_idx) { new_scene->set_scene_file_path(edited_scene[p_idx].root->get_scene_file_path()); Node *old_root = edited_scene[p_idx].root; + edited_scene.write[p_idx].root = new_scene; old_root->replace_by(new_scene, false, false); memdelete(old_root); edited_scene.write[p_idx].selection = new_selection; diff --git a/editor/editor_node.cpp b/editor/editor_node.cpp index 1c079bfca2b6..0e6c814b44af 100644 --- a/editor/editor_node.cpp +++ b/editor/editor_node.cpp @@ -3674,7 +3674,9 @@ void EditorNode::set_edited_scene(Node *p_scene) { if (old_edited_scene_root->get_parent() == scene_root) { scene_root->remove_child(old_edited_scene_root); } - old_edited_scene_root->disconnect(SNAME("replacing_by"), callable_mp(this, &EditorNode::set_edited_scene)); + if (old_edited_scene_root->is_connected("replacing_by", callable_mp(this, &EditorNode::set_edited_scene))) { + old_edited_scene_root->disconnect(SNAME("replacing_by"), callable_mp(this, &EditorNode::set_edited_scene)); + } } get_editor_data().set_edited_scene_root(p_scene);