Node::replace_by was not copying node properties - removed the dead code.
The code to copy node properties to the new node never worked, so there is no reason to keep the useless bits in there
This commit is contained in:
parent
0f4e2cd40c
commit
022c2952fc
|
@ -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