diff options
author | RĂ©mi Verschelde <rverschelde@gmail.com> | 2019-12-30 16:35:02 +0100 |
---|---|---|
committer | GitHub <noreply@github.com> | 2019-12-30 16:35:02 +0100 |
commit | e799271bb7e973722eb91a639a1b410b5a209aec (patch) | |
tree | 4653a0361dfb02ee370071b0246a8c863b5c2b19 | |
parent | d595a5e9c3f46fd8c09a8deef4b7bca2959c457e (diff) | |
parent | d3cf8cfb7d33816ae69eb45728088baae9a3195b (diff) |
Merge pull request #34594 from marstaik/gltf_colorfix_u
Fix Hard Crash on glTF Color Accessor Import
-rw-r--r-- | editor/import/editor_scene_importer_gltf.cpp | 15 |
1 files changed, 7 insertions, 8 deletions
diff --git a/editor/import/editor_scene_importer_gltf.cpp b/editor/import/editor_scene_importer_gltf.cpp index be066e15a5..796b950444 100644 --- a/editor/import/editor_scene_importer_gltf.cpp +++ b/editor/import/editor_scene_importer_gltf.cpp @@ -855,25 +855,24 @@ PoolVector<Color> EditorSceneImporterGLTF::_decode_accessor_as_color(GLTFState & const int type = state.accessors[p_accessor].type; ERR_FAIL_COND_V(!(type == TYPE_VEC3 || type == TYPE_VEC4), ret); - int components; - if (type == TYPE_VEC3) { - components = 3; - } else { // TYPE_VEC4 - components = 4; + int vec_len = 3; + if (type == TYPE_VEC4) { + vec_len = 4; } - ERR_FAIL_COND_V(attribs.size() % components != 0, ret); + ERR_FAIL_COND_V(attribs.size() % vec_len != 0, ret); const double *attribs_ptr = attribs.ptr(); - const int ret_size = attribs.size() / components; + const int ret_size = attribs.size() / vec_len; ret.resize(ret_size); { PoolVector<Color>::Write w = ret.write(); for (int i = 0; i < ret_size; i++) { - w[i] = Color(attribs_ptr[i * 4 + 0], attribs_ptr[i * 4 + 1], attribs_ptr[i * 4 + 2], components == 4 ? attribs_ptr[i * 4 + 3] : 1.0); + w[i] = Color(attribs_ptr[i * vec_len + 0], attribs_ptr[i * vec_len + 1], attribs_ptr[i * vec_len + 2], vec_len == 4 ? attribs_ptr[i * 4 + 3] : 1.0); } } return ret; } + Vector<Quat> EditorSceneImporterGLTF::_decode_accessor_as_quat(GLTFState &state, const GLTFAccessorIndex p_accessor, const bool p_for_vertex) { const Vector<double> attribs = _decode_accessor(state, p_accessor, p_for_vertex); |