diff options
author | Rindbee <idleman@yeah.net> | 2022-11-13 14:52:37 +0800 |
---|---|---|
committer | Rindbee <idleman@yeah.net> | 2023-06-12 21:49:30 +0800 |
commit | eb74079dfbebabcab15688495bec7aa748a5bd9c (patch) | |
tree | a3e621b907b1729586fa3aac9ec28c4c0926c2ae /scene/main/node.cpp | |
parent | 9f12e7b52d944281a39b7d3a33de6700c76cc23a (diff) | |
download | redot-engine-eb74079dfbebabcab15688495bec7aa748a5bd9c.tar.gz |
Update the edit scene root in time after it is replaced
When changing the type of the edited scene root node, it may be necessary
to update edited scene root in time for the child nodes to work properly.
Diffstat (limited to 'scene/main/node.cpp')
-rw-r--r-- | scene/main/node.cpp | 4 |
1 files changed, 4 insertions, 0 deletions
diff --git a/scene/main/node.cpp b/scene/main/node.cpp index b947526e96..8f3c8453cc 100644 --- a/scene/main/node.cpp +++ b/scene/main/node.cpp @@ -2500,6 +2500,8 @@ void Node::replace_by(Node *p_node, bool p_keep_groups) { parent->move_child(p_node, index_in_parent); } + emit_signal(SNAME("replacing_by"), p_node); + while (get_child_count()) { Node *child = get_child(0); remove_child(child); @@ -3040,7 +3042,9 @@ void Node::_bind_methods() { ADD_SIGNAL(MethodInfo("tree_exited")); ADD_SIGNAL(MethodInfo("child_entered_tree", PropertyInfo(Variant::OBJECT, "node", PROPERTY_HINT_NONE, "", PROPERTY_USAGE_DEFAULT, "Node"))); ADD_SIGNAL(MethodInfo("child_exiting_tree", PropertyInfo(Variant::OBJECT, "node", PROPERTY_HINT_NONE, "", PROPERTY_USAGE_DEFAULT, "Node"))); + ADD_SIGNAL(MethodInfo("child_order_changed")); + ADD_SIGNAL(MethodInfo("replacing_by", PropertyInfo(Variant::OBJECT, "node", PROPERTY_HINT_NONE, "", PROPERTY_USAGE_DEFAULT, "Node"))); ADD_PROPERTY(PropertyInfo(Variant::STRING_NAME, "name", PROPERTY_HINT_NONE, "", PROPERTY_USAGE_NONE), "set_name", "get_name"); ADD_PROPERTY(PropertyInfo(Variant::BOOL, "unique_name_in_owner", PROPERTY_HINT_NONE, "", PROPERTY_USAGE_NO_EDITOR), "set_unique_name_in_owner", "is_unique_name_in_owner"); |