Explorar o código

Fixes naming conflict in GLTF importer

SaracenOne %!s(int64=4) %!d(string=hai) anos
pai
achega
c6387e58e9
Modificáronse 1 ficheiros con 5 adicións e 2 borrados
  1. 5 2
      modules/gltf/gltf_document.cpp

+ 5 - 2
modules/gltf/gltf_document.cpp

@@ -598,9 +598,9 @@ Error GLTFDocument::_parse_scenes(Ref<GLTFState> state) {
 		}
 
 		if (s.has("name") && !String(s["name"]).empty() && !((String)s["name"]).begins_with("Scene")) {
-			state->scene_name = _gen_unique_name(state, s["name"]);
+			state->scene_name = s["name"];
 		} else {
-			state->scene_name = _gen_unique_name(state, state->filename);
+			state->scene_name = state->filename;
 		}
 	}
 
@@ -4952,6 +4952,9 @@ void GLTFDocument::_assign_scene_names(Ref<GLTFState> state) {
 
 		n->set_name(_gen_unique_name(state, n->get_name()));
 	}
+
+	// Assign a unique name to the scene last to avoid naming conflicts with the root
+	state->scene_name = _gen_unique_name(state, state->scene_name);
 }
 
 BoneAttachment *GLTFDocument::_generate_bone_attachment(Ref<GLTFState> state, Skeleton *skeleton, const GLTFNodeIndex node_index, const GLTFNodeIndex bone_index) {