Merge pull request #45604 from nemerle/node_replace_by_dead_code_removal
Node::replace_by is not copying node properties, removed the dead code
This commit is contained in:
commit
c4a801cdbf
@ -623,10 +623,11 @@
|
|||||||
</return>
|
</return>
|
||||||
<argument index="0" name="node" type="Node">
|
<argument index="0" name="node" type="Node">
|
||||||
</argument>
|
</argument>
|
||||||
<argument index="1" name="keep_data" type="bool" default="false">
|
<argument index="1" name="keep_groups" type="bool" default="false">
|
||||||
</argument>
|
</argument>
|
||||||
<description>
|
<description>
|
||||||
Replaces a node in a scene by the given one. Subscriptions that pass through this node will be lost.
|
Replaces a node in a scene by the given one. Subscriptions that pass through this node will be lost.
|
||||||
|
If [code]keep_groups[/code] is [code]true[/code], the [code]node[/code] is added to the same groups that the replaced node is in.
|
||||||
</description>
|
</description>
|
||||||
</method>
|
</method>
|
||||||
<method name="request_ready">
|
<method name="request_ready">
|
||||||
|
@ -2332,12 +2332,7 @@ static void find_owned_by(Node *p_by, Node *p_node, List<Node *> *p_owned) {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
struct _NodeReplaceByPair {
|
void Node::replace_by(Node *p_node, bool p_keep_groups) {
|
||||||
String name;
|
|
||||||
Variant value;
|
|
||||||
};
|
|
||||||
|
|
||||||
void Node::replace_by(Node *p_node, bool p_keep_data) {
|
|
||||||
ERR_FAIL_NULL(p_node);
|
ERR_FAIL_NULL(p_node);
|
||||||
ERR_FAIL_COND(p_node->data.parent);
|
ERR_FAIL_COND(p_node->data.parent);
|
||||||
|
|
||||||
@ -2345,21 +2340,7 @@ void Node::replace_by(Node *p_node, bool p_keep_data) {
|
|||||||
List<Node *> owned_by_owner;
|
List<Node *> owned_by_owner;
|
||||||
Node *owner = (data.owner == this) ? p_node : data.owner;
|
Node *owner = (data.owner == this) ? p_node : data.owner;
|
||||||
|
|
||||||
List<_NodeReplaceByPair> replace_data;
|
if (p_keep_groups) {
|
||||||
|
|
||||||
if (p_keep_data) {
|
|
||||||
List<PropertyInfo> plist;
|
|
||||||
get_property_list(&plist);
|
|
||||||
|
|
||||||
for (List<PropertyInfo>::Element *E = plist.front(); E; E = E->next()) {
|
|
||||||
_NodeReplaceByPair rd;
|
|
||||||
if (!(E->get().usage & PROPERTY_USAGE_STORAGE)) {
|
|
||||||
continue;
|
|
||||||
}
|
|
||||||
rd.name = E->get().name;
|
|
||||||
rd.value = get(rd.name);
|
|
||||||
}
|
|
||||||
|
|
||||||
List<GroupInfo> groups;
|
List<GroupInfo> groups;
|
||||||
get_groups(&groups);
|
get_groups(&groups);
|
||||||
|
|
||||||
@ -2404,10 +2385,6 @@ void Node::replace_by(Node *p_node, bool p_keep_data) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
p_node->set_filename(get_filename());
|
p_node->set_filename(get_filename());
|
||||||
|
|
||||||
for (List<_NodeReplaceByPair>::Element *E = replace_data.front(); E; E = E->next()) {
|
|
||||||
p_node->set(E->get().name, E->get().value);
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
void Node::_replace_connections_target(Node *p_new_target) {
|
void Node::_replace_connections_target(Node *p_new_target) {
|
||||||
@ -2774,7 +2751,7 @@ void Node::_bind_methods() {
|
|||||||
ClassDB::bind_method(D_METHOD("get_tree"), &Node::get_tree);
|
ClassDB::bind_method(D_METHOD("get_tree"), &Node::get_tree);
|
||||||
|
|
||||||
ClassDB::bind_method(D_METHOD("duplicate", "flags"), &Node::duplicate, DEFVAL(DUPLICATE_USE_INSTANCING | DUPLICATE_SIGNALS | DUPLICATE_GROUPS | DUPLICATE_SCRIPTS));
|
ClassDB::bind_method(D_METHOD("duplicate", "flags"), &Node::duplicate, DEFVAL(DUPLICATE_USE_INSTANCING | DUPLICATE_SIGNALS | DUPLICATE_GROUPS | DUPLICATE_SCRIPTS));
|
||||||
ClassDB::bind_method(D_METHOD("replace_by", "node", "keep_data"), &Node::replace_by, DEFVAL(false));
|
ClassDB::bind_method(D_METHOD("replace_by", "node", "keep_groups"), &Node::replace_by, DEFVAL(false));
|
||||||
|
|
||||||
ClassDB::bind_method(D_METHOD("set_scene_instance_load_placeholder", "load_placeholder"), &Node::set_scene_instance_load_placeholder);
|
ClassDB::bind_method(D_METHOD("set_scene_instance_load_placeholder", "load_placeholder"), &Node::set_scene_instance_load_placeholder);
|
||||||
ClassDB::bind_method(D_METHOD("get_scene_instance_load_placeholder"), &Node::get_scene_instance_load_placeholder);
|
ClassDB::bind_method(D_METHOD("get_scene_instance_load_placeholder"), &Node::get_scene_instance_load_placeholder);
|
||||||
|
Loading…
Reference in New Issue
Block a user