Continue when glTF2 lights fail to parse.
(cherry picked from commit 0c79a8fa22
)
This commit is contained in:
parent
9aafb22d99
commit
beb3a6859d
1 changed files with 7 additions and 5 deletions
|
@ -49,6 +49,7 @@
|
||||||
|
|
||||||
#include "core/bind/core_bind.h"
|
#include "core/bind/core_bind.h"
|
||||||
#include "core/crypto/crypto_core.h"
|
#include "core/crypto/crypto_core.h"
|
||||||
|
#include "core/error_macros.h"
|
||||||
#include "core/io/json.h"
|
#include "core/io/json.h"
|
||||||
#include "core/math/disjoint_set.h"
|
#include "core/math/disjoint_set.h"
|
||||||
#include "core/os/file_access.h"
|
#include "core/os/file_access.h"
|
||||||
|
@ -4573,9 +4574,9 @@ Error GLTFDocument::_parse_lights(Ref<GLTFState> state) {
|
||||||
const Dictionary &spot = d["spot"];
|
const Dictionary &spot = d["spot"];
|
||||||
light->inner_cone_angle = spot["innerConeAngle"];
|
light->inner_cone_angle = spot["innerConeAngle"];
|
||||||
light->outer_cone_angle = spot["outerConeAngle"];
|
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") {
|
} 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);
|
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
|
// and attach it to the bone_attachment
|
||||||
scene_parent = bone_attachment;
|
scene_parent = bone_attachment;
|
||||||
}
|
}
|
||||||
|
|
||||||
// We still have not managed to make a node
|
|
||||||
if (gltf_node->mesh >= 0) {
|
if (gltf_node->mesh >= 0) {
|
||||||
current_node = _generate_mesh_instance(state, scene_parent, node_index);
|
current_node = _generate_mesh_instance(state, scene_parent, node_index);
|
||||||
} else if (gltf_node->camera >= 0) {
|
} else if (gltf_node->camera >= 0) {
|
||||||
current_node = _generate_camera(state, scene_parent, node_index);
|
current_node = _generate_camera(state, scene_parent, node_index);
|
||||||
} else if (gltf_node->light >= 0) {
|
} else if (gltf_node->light >= 0) {
|
||||||
current_node = _generate_light(state, scene_parent, node_index);
|
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);
|
current_node = _generate_spatial(state, scene_parent, node_index);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
Loading…
Reference in a new issue