diff options
author | Rémi Verschelde <rverschelde@gmail.com> | 2024-02-09 12:14:29 +0100 |
---|---|---|
committer | Rémi Verschelde <rverschelde@gmail.com> | 2024-02-09 12:14:29 +0100 |
commit | 58a8eb8617bbfbde85657dcdb80de6bbf6506b87 (patch) | |
tree | c516b35c1ca7ebc2799c99a1e1842053e017f744 /scene/main/node.cpp | |
parent | 0bda868f406a7745def56a9b067f4e62af1e09e5 (diff) | |
parent | f19c4191260041eed72daa8a2633187e71500d10 (diff) | |
download | redot-engine-58a8eb8617bbfbde85657dcdb80de6bbf6506b87.tar.gz |
Merge pull request #84824 from Rindbee/fix-double-internal-node
Fix duplicating sub-scene may get two copies of internal node
Diffstat (limited to 'scene/main/node.cpp')
-rw-r--r-- | scene/main/node.cpp | 5 |
1 files changed, 5 insertions, 0 deletions
diff --git a/scene/main/node.cpp b/scene/main/node.cpp index 0a6afb3d59..dfbc940660 100644 --- a/scene/main/node.cpp +++ b/scene/main/node.cpp @@ -2549,6 +2549,11 @@ Node *Node::_duplicate(int p_flags, HashMap<const Node *, Node *> *r_duplimap) c for (List<const Node *>::Element *N = node_tree.front(); N; N = N->next()) { for (int i = 0; i < N->get()->get_child_count(); ++i) { Node *descendant = N->get()->get_child(i); + + if (!descendant->get_owner()) { + continue; // Internal nodes or nodes added by scripts. + } + // Skip nodes not really belonging to the instantiated hierarchy; they'll be processed normally later // but remember non-instantiated nodes that are hidden below instantiated ones if (!instance_roots.has(descendant->get_owner())) { |