From 7bd894ba7a9d68df8dcaebccb40187db963598c2 Mon Sep 17 00:00:00 2001 From: Aaron Franke Date: Sun, 20 Aug 2023 15:21:12 -0500 Subject: [PATCH] Fix skeletons when generating multiple Godot scenes from one GLTF --- modules/gltf/gltf_document.cpp | 14 ++++++-------- 1 file changed, 6 insertions(+), 8 deletions(-) diff --git a/modules/gltf/gltf_document.cpp b/modules/gltf/gltf_document.cpp index cee65d70c9c..bac988630dd 100644 --- a/modules/gltf/gltf_document.cpp +++ b/modules/gltf/gltf_document.cpp @@ -7347,6 +7347,12 @@ Error GLTFDocument::write_to_filesystem(Ref p_state, const String &p_ } Node *GLTFDocument::_generate_scene_node_tree(Ref p_state) { + // Generate the skeletons and skins (if any). + Error err = _create_skeletons(p_state); + ERR_FAIL_COND_V_MSG(err != OK, nullptr, "GLTF: Failed to create skeletons."); + err = _create_skins(p_state); + ERR_FAIL_COND_V_MSG(err != OK, nullptr, "GLTF: Failed to create skins."); + // Generate the node tree. Node *single_root; if (p_state->extensions_used.has("GODOT_single_root")) { _generate_scene_node(p_state, 0, nullptr, nullptr); @@ -7539,14 +7545,6 @@ Error GLTFDocument::_parse_gltf_state(Ref p_state, const String &p_se err = _determine_skeletons(p_state); ERR_FAIL_COND_V(err != OK, ERR_PARSE_ERROR); - /* CREATE SKELETONS */ - err = _create_skeletons(p_state); - ERR_FAIL_COND_V(err != OK, ERR_PARSE_ERROR); - - /* CREATE SKINS */ - err = _create_skins(p_state); - ERR_FAIL_COND_V(err != OK, ERR_PARSE_ERROR); - /* PARSE MESHES (we have enough info now) */ err = _parse_meshes(p_state); ERR_FAIL_COND_V(err != OK, ERR_PARSE_ERROR);