GLTF: Propagate owner for root node children

(cherry picked from commit 246cc7e86d)
This commit is contained in:
Aaron Franke 2024-08-04 02:23:01 -07:00 committed by Rémi Verschelde
parent df522db6f0
commit 1d0bcae019
No known key found for this signature in database
GPG Key ID: C3336907360768E1
1 changed files with 9 additions and 0 deletions

View File

@ -5658,6 +5658,15 @@ void GLTFDocument::_generate_scene_node(Ref<GLTFState> p_state, const GLTFNodeIn
if (p_scene_root == nullptr) { if (p_scene_root == nullptr) {
// If the root node argument is null, this is the root node. // If the root node argument is null, this is the root node.
p_scene_root = current_node; p_scene_root = current_node;
// If multiple nodes were generated under the root node, ensure they have the owner set.
if (unlikely(current_node->get_child_count() > 0)) {
Array args;
args.append(p_scene_root);
for (int i = 0; i < current_node->get_child_count(); i++) {
Node *child = current_node->get_child(i);
child->propagate_call(StringName("set_owner"), args);
}
}
} else { } else {
// Add the node we generated and set the owner to the scene root. // Add the node we generated and set the owner to the scene root.
p_scene_parent->add_child(current_node, true); p_scene_parent->add_child(current_node, true);