diff options
author | Juan Linietsky <reduzio@gmail.com> | 2018-11-19 10:42:27 -0300 |
---|---|---|
committer | Juan Linietsky <reduzio@gmail.com> | 2018-11-19 10:43:29 -0300 |
commit | 634aa4fc24dcc2ca5ebb284a0deb4664d6f1266b (patch) | |
tree | 87fe6f8802c8e4f7a3a4fc4a955922a46422c16c /drivers | |
parent | 5d152cc42df201263ed7c417f11eaee36a199392 (diff) |
Ensure bone AABBs are properly transformed to affect mesh AABB, fixes #19281
Diffstat (limited to 'drivers')
-rw-r--r-- | drivers/gles3/rasterizer_storage_gles3.cpp | 9 |
1 files changed, 7 insertions, 2 deletions
diff --git a/drivers/gles3/rasterizer_storage_gles3.cpp b/drivers/gles3/rasterizer_storage_gles3.cpp index 64e04eec71..65543956fa 100644 --- a/drivers/gles3/rasterizer_storage_gles3.cpp +++ b/drivers/gles3/rasterizer_storage_gles3.cpp @@ -3787,12 +3787,14 @@ AABB RasterizerStorageGLES3::mesh_get_aabb(RID p_mesh, RID p_skeleton) const { Mesh *mesh = mesh_owner.get(p_mesh); ERR_FAIL_COND_V(!mesh, AABB()); - if (mesh->custom_aabb != AABB()) + if (mesh->custom_aabb != AABB()) { return mesh->custom_aabb; + } Skeleton *sk = NULL; - if (p_skeleton.is_valid()) + if (p_skeleton.is_valid()) { sk = skeleton_owner.get(p_skeleton); + } AABB aabb; @@ -3831,6 +3833,7 @@ AABB RasterizerStorageGLES3::mesh_get_aabb(RID p_mesh, RID p_skeleton) const { mtx.origin.y = texture[base_ofs + 3]; AABB baabb = mtx.xform(skbones[j]); + if (first) { laabb = baabb; first = false; @@ -3863,6 +3866,8 @@ AABB RasterizerStorageGLES3::mesh_get_aabb(RID p_mesh, RID p_skeleton) const { mtx.basis[2].z = texture[base_ofs + 2]; mtx.origin.z = texture[base_ofs + 3]; + print_line("surface " + itos(i) + " bone " + itos(j) + " aabb: " + skbones[j]); + AABB baabb = mtx.xform(skbones[j]); if (first) { laabb = baabb; |