Browse Source

Merge pull request #48912 from lyuma/gltf_graceful_fail_mesh

Fail gracefully when a mesh fails to import.
Rémi Verschelde 4 năm trước cách đây
mục cha
commit
6c2420bc38
1 tập tin đã thay đổi với 4 bổ sung2 xóa
  1. 4 2
      modules/gltf/gltf_document.cpp

+ 4 - 2
modules/gltf/gltf_document.cpp

@@ -5978,13 +5978,15 @@ void GLTFDocument::_process_mesh_instances(Ref<GLTFState> state, Node *scene_roo
 			const GLTFSkinIndex skin_i = node->skin;
 			const GLTFSkinIndex skin_i = node->skin;
 
 
 			Map<GLTFNodeIndex, Node *>::Element *mi_element = state->scene_nodes.find(node_i);
 			Map<GLTFNodeIndex, Node *>::Element *mi_element = state->scene_nodes.find(node_i);
+			ERR_CONTINUE_MSG(mi_element == nullptr, vformat("Unable to find node %d", node_i));
+
 			EditorSceneImporterMeshNode3D *mi = Object::cast_to<EditorSceneImporterMeshNode3D>(mi_element->get());
 			EditorSceneImporterMeshNode3D *mi = Object::cast_to<EditorSceneImporterMeshNode3D>(mi_element->get());
-			ERR_FAIL_COND(mi == nullptr);
+			ERR_CONTINUE_MSG(mi == nullptr, vformat("Unable to cast node %d of type %s to EditorSceneImporterMeshNode3D", node_i, mi_element->get()->get_class_name()));
 
 
 			const GLTFSkeletonIndex skel_i = state->skins.write[node->skin]->skeleton;
 			const GLTFSkeletonIndex skel_i = state->skins.write[node->skin]->skeleton;
 			Ref<GLTFSkeleton> gltf_skeleton = state->skeletons.write[skel_i];
 			Ref<GLTFSkeleton> gltf_skeleton = state->skeletons.write[skel_i];
 			Skeleton3D *skeleton = gltf_skeleton->godot_skeleton;
 			Skeleton3D *skeleton = gltf_skeleton->godot_skeleton;
-			ERR_FAIL_COND(skeleton == nullptr);
+			ERR_CONTINUE_MSG(skeleton == nullptr, vformat("Unable to find Skeleton for node %d skin %d", node_i, skin_i));
 
 
 			mi->get_parent()->remove_child(mi);
 			mi->get_parent()->remove_child(mi);
 			skeleton->add_child(mi);
 			skeleton->add_child(mi);