diff --git a/editor/scene_tree_dock.cpp b/editor/scene_tree_dock.cpp index afacc4ba1faf..ac1beb1c3721 100644 --- a/editor/scene_tree_dock.cpp +++ b/editor/scene_tree_dock.cpp @@ -2140,7 +2140,6 @@ void SceneTreeDock::replace_node(Node *p_node, Node *p_by_node, bool p_keep_prop if (n == edited_scene) { edited_scene = newnode; editor->set_edited_scene(newnode); - newnode->set_editable_instances(n->get_editable_instances()); } //small hack to make collisionshapes and other kind of nodes to work diff --git a/scene/main/node.cpp b/scene/main/node.cpp index 1b6f73efe1f9..6a1b896b047a 100644 --- a/scene/main/node.cpp +++ b/scene/main/node.cpp @@ -1920,32 +1920,22 @@ String Node::get_editor_description() const { void Node::set_editable_instance(Node *p_node, bool p_editable) { ERR_FAIL_NULL(p_node); ERR_FAIL_COND(!is_a_parent_of(p_node)); - NodePath p = get_path_to(p_node); if (!p_editable) { - data.editable_instances.erase(p); + p_node->data.editable_instance = false; // Avoid this flag being needlessly saved; // also give more visual feedback if editable children is re-enabled set_display_folded(false); } else { - data.editable_instances[p] = true; + p_node->data.editable_instance = true; } } bool Node::is_editable_instance(const Node *p_node) const { if (!p_node) { - return false; //easier, null is never editable :) + return false; // Easier, null is never editable. :) } ERR_FAIL_COND_V(!is_a_parent_of(p_node), false); - NodePath p = get_path_to(p_node); - return data.editable_instances.has(p); -} - -void Node::set_editable_instances(const HashMap &p_editable_instances) { - data.editable_instances = p_editable_instances; -} - -HashMap Node::get_editable_instances() const { - return data.editable_instances; + return p_node->data.editable_instance; } void Node::set_scene_instance_state(const Ref &p_state) { diff --git a/scene/main/node.h b/scene/main/node.h index fc7590c5a4b7..a0dca7579133 100644 --- a/scene/main/node.h +++ b/scene/main/node.h @@ -88,8 +88,6 @@ class Node : public Object { Ref instance_state; Ref inherited_state; - HashMap editable_instances; - Node *parent = nullptr; Node *owner = nullptr; Vector children; @@ -136,6 +134,7 @@ class Node : public Object { bool use_placeholder = false; bool display_folded = false; + bool editable_instance = false; mutable NodePath *path_cache = nullptr; @@ -325,8 +324,6 @@ class Node : public Object { void set_editable_instance(Node *p_node, bool p_editable); bool is_editable_instance(const Node *p_node) const; - void set_editable_instances(const HashMap &p_editable_instances); - HashMap get_editable_instances() const; /* NOTIFICATIONS */