From b0d9f7686c719c2aa38e979e8cc5329b8439b065 Mon Sep 17 00:00:00 2001 From: DualMatrix Date: Fri, 14 Sep 2018 18:13:41 +0200 Subject: [PATCH] Made duplicate_and_reown preserve groups --- scene/main/node.cpp | 12 ++++++++++++ 1 file changed, 12 insertions(+) diff --git a/scene/main/node.cpp b/scene/main/node.cpp index d4456738ae1..06bc12d774c 100644 --- a/scene/main/node.cpp +++ b/scene/main/node.cpp @@ -2116,6 +2116,12 @@ void Node::_duplicate_and_reown(Node *p_new_parent, const Map &p node->set(name, value); } + List groups; + get_groups(&groups); + + for (List::Element *E = groups.front(); E; E = E->next()) + node->add_to_group(E->get().name, E->get().persistent); + node->set_name(get_name()); p_new_parent->add_child(node); @@ -2210,6 +2216,12 @@ Node *Node::duplicate_and_reown(const Map &p_reown_map) const { node->set(name, get(name)); } + List groups; + get_groups(&groups); + + for (List::Element *E = groups.front(); E; E = E->next()) + node->add_to_group(E->get().name, E->get().persistent); + for (int i = 0; i < get_child_count(); i++) { get_child(i)->_duplicate_and_reown(node, p_reown_map);