summaryrefslogtreecommitdiffstats
path: root/scene/main/node.cpp
diff options
context:
space:
mode:
authorRindbee <idleman@yeah.net>2022-11-13 14:52:37 +0800
committerRindbee <idleman@yeah.net>2023-06-12 21:49:30 +0800
commiteb74079dfbebabcab15688495bec7aa748a5bd9c (patch)
treea3e621b907b1729586fa3aac9ec28c4c0926c2ae /scene/main/node.cpp
parent9f12e7b52d944281a39b7d3a33de6700c76cc23a (diff)
downloadredot-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.cpp4
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");