فهرست منبع

Continue when glTF2 lights fail to parse.

(cherry picked from commit 0c79a8fa2214a6d588614f6894fb9476acea02e9)
K. S. Ernest (iFire) Lee 4 سال پیش
والد
کامیت
beb3a6859d
1فایلهای تغییر یافته به همراه7 افزوده شده و 5 حذف شده
  1. 7 5
      modules/gltf/gltf_document.cpp

+ 7 - 5
modules/gltf/gltf_document.cpp

@@ -49,6 +49,7 @@
 
 #include "core/bind/core_bind.h"
 #include "core/crypto/crypto_core.h"
+#include "core/error_macros.h"
 #include "core/io/json.h"
 #include "core/math/disjoint_set.h"
 #include "core/os/file_access.h"
@@ -4573,9 +4574,9 @@ Error GLTFDocument::_parse_lights(Ref<GLTFState> state) {
 			const Dictionary &spot = d["spot"];
 			light->inner_cone_angle = spot["innerConeAngle"];
 			light->outer_cone_angle = spot["outerConeAngle"];
-			ERR_FAIL_COND_V_MSG(light->inner_cone_angle >= light->outer_cone_angle, ERR_PARSE_ERROR, "The inner angle must be smaller than the outer angle.");
+			ERR_CONTINUE_MSG(light->inner_cone_angle >= light->outer_cone_angle, "The inner angle must be smaller than the outer angle.");
 		} else if (type != "point" && type != "directional") {
-			ERR_FAIL_V_MSG(ERR_PARSE_ERROR, "Light type is unknown.");
+			ERR_CONTINUE_MSG(ERR_PARSE_ERROR, "Light type is unknown.");
 		}
 
 		state->lights.push_back(light);
@@ -5490,15 +5491,16 @@ void GLTFDocument::_generate_scene_node(Ref<GLTFState> state, Node *scene_parent
 		// and attach it to the bone_attachment
 		scene_parent = bone_attachment;
 	}
-
-	// We still have not managed to make a node
 	if (gltf_node->mesh >= 0) {
 		current_node = _generate_mesh_instance(state, scene_parent, node_index);
 	} else if (gltf_node->camera >= 0) {
 		current_node = _generate_camera(state, scene_parent, node_index);
 	} else if (gltf_node->light >= 0) {
 		current_node = _generate_light(state, scene_parent, node_index);
-	} else {
+	}
+
+	// We still have not managed to make a node.
+	if (!current_node) {
 		current_node = _generate_spatial(state, scene_parent, node_index);
 	}