From d50cfd9f181d02bff4830a4e1c5b49fa15280654 Mon Sep 17 00:00:00 2001 From: Haoyu Qiu Date: Thu, 20 Oct 2022 15:06:17 +0800 Subject: [PATCH] Fix wrong owner for editor plugin created nodes in instanced scene --- editor/plugins/mesh_instance_editor_plugin.cpp | 17 +++++++---------- editor/plugins/skeleton_editor_plugin.cpp | 2 +- 2 files changed, 8 insertions(+), 11 deletions(-) diff --git a/editor/plugins/mesh_instance_editor_plugin.cpp b/editor/plugins/mesh_instance_editor_plugin.cpp index 1df8382f69c..5958617a329 100644 --- a/editor/plugins/mesh_instance_editor_plugin.cpp +++ b/editor/plugins/mesh_instance_editor_plugin.cpp @@ -76,7 +76,7 @@ void MeshInstanceEditor::_menu_option(int p_option) { StaticBody *body = memnew(StaticBody); body->add_child(cshape); - Node *owner = node == get_tree()->get_edited_scene_root() ? node : node->get_owner(); + Node *owner = get_tree()->get_edited_scene_root(); ur->create_action(TTR("Create Static Trimesh Body")); ur->add_do_method(node, "add_child", body); @@ -111,7 +111,7 @@ void MeshInstanceEditor::_menu_option(int p_option) { StaticBody *body = memnew(StaticBody); body->add_child(cshape); - Node *owner = instance == get_tree()->get_edited_scene_root() ? instance : instance->get_owner(); + Node *owner = get_tree()->get_edited_scene_root(); ur->add_do_method(instance, "add_child", body); ur->add_do_method(body, "set_owner", owner); @@ -140,7 +140,7 @@ void MeshInstanceEditor::_menu_option(int p_option) { cshape->set_shape(shape); cshape->set_transform(node->get_transform()); - Node *owner = node->get_owner(); + Node *owner = get_tree()->get_edited_scene_root(); UndoRedo *ur = EditorNode::get_singleton()->get_undo_redo(); @@ -183,7 +183,7 @@ void MeshInstanceEditor::_menu_option(int p_option) { cshape->set_shape(shape); cshape->set_transform(node->get_transform()); - Node *owner = node->get_owner(); + Node *owner = get_tree()->get_edited_scene_root(); ur->add_do_method(node->get_parent(), "add_child", cshape); ur->add_do_method(node->get_parent(), "move_child", cshape, node->get_index() + 1); @@ -218,7 +218,7 @@ void MeshInstanceEditor::_menu_option(int p_option) { cshape->set_shape(shapes[i]); cshape->set_transform(node->get_transform()); - Node *owner = node->get_owner(); + Node *owner = get_tree()->get_edited_scene_root(); ur->add_do_method(node->get_parent(), "add_child", cshape); ur->add_do_method(node->get_parent(), "move_child", cshape, node->get_index() + 1); @@ -241,7 +241,7 @@ void MeshInstanceEditor::_menu_option(int p_option) { NavigationMeshInstance *nmi = memnew(NavigationMeshInstance); nmi->set_navigation_mesh(nmesh); - Node *owner = node == get_tree()->get_edited_scene_root() ? node : node->get_owner(); + Node *owner = get_tree()->get_edited_scene_root(); UndoRedo *ur = EditorNode::get_singleton()->get_undo_redo(); ur->create_action(TTR("Create Navigation Mesh")); @@ -419,10 +419,7 @@ void MeshInstanceEditor::_create_outline_mesh() { MeshInstance *mi = memnew(MeshInstance); mi->set_mesh(mesho); - Node *owner = node->get_owner(); - if (get_tree()->get_edited_scene_root() == node) { - owner = node; - } + Node *owner = get_tree()->get_edited_scene_root(); UndoRedo *ur = EditorNode::get_singleton()->get_undo_redo(); diff --git a/editor/plugins/skeleton_editor_plugin.cpp b/editor/plugins/skeleton_editor_plugin.cpp index 077920ab2e1..14f0ae30bd7 100644 --- a/editor/plugins/skeleton_editor_plugin.cpp +++ b/editor/plugins/skeleton_editor_plugin.cpp @@ -51,7 +51,7 @@ void SkeletonEditor::_on_click_option(int p_option) { void SkeletonEditor::create_physical_skeleton() { UndoRedo *ur = EditorNode::get_singleton()->get_undo_redo(); - Node *owner = skeleton == get_tree()->get_edited_scene_root() ? skeleton : skeleton->get_owner(); + Node *owner = get_tree()->get_edited_scene_root(); const int bc = skeleton->get_bone_count();