diff --git a/src/Nazara/Utility/Mesh.cpp b/src/Nazara/Utility/Mesh.cpp index acfc34829..bbc06881f 100644 --- a/src/Nazara/Utility/Mesh.cpp +++ b/src/Nazara/Utility/Mesh.cpp @@ -401,10 +401,15 @@ const NzBoxf& NzMesh::GetAABB() const if (!m_impl->aabbUpdated) { - m_impl->aabb.MakeZero(); - - for (NzSubMesh* subMesh : m_impl->subMeshes) - m_impl->aabb.ExtendTo(subMesh->GetAABB()); + unsigned int subMeshCount = m_impl->subMeshes.size(); + if (subMeshCount > 0) + { + m_impl->aabb.Set(m_impl->subMeshes[0]->GetAABB()); + for (unsigned int i = 1; i < subMeshCount; ++i) + m_impl->aabb.ExtendTo(m_impl->subMeshes[i]->GetAABB()); + } + else + m_impl->aabb.MakeZero(); m_impl->aabbUpdated = true; } diff --git a/src/Nazara/Utility/Skeleton.cpp b/src/Nazara/Utility/Skeleton.cpp index a864bbe01..bab0afca2 100644 --- a/src/Nazara/Utility/Skeleton.cpp +++ b/src/Nazara/Utility/Skeleton.cpp @@ -65,10 +65,15 @@ const NzBoxf& NzSkeleton::GetAABB() const if (!m_impl->aabbUpdated) { - m_impl->aabb.MakeZero(); - - for (unsigned int i = 0; i < m_impl->joints.size(); ++i) - m_impl->aabb.ExtendTo(m_impl->joints[i].GetPosition()); + unsigned int jointCount = m_impl->joints.size(); + if (jointCount > 0) + { + m_impl->aabb.Set(m_impl->joints[0].GetPosition()); + for (unsigned int i = 1; i < jointCount; ++i) + m_impl->aabb.ExtendTo(m_impl->joints[i].GetPosition()); + } + else + m_impl->aabb.MakeZero(); m_impl->aabbUpdated = true; } diff --git a/src/Nazara/Utility/StaticMesh.cpp b/src/Nazara/Utility/StaticMesh.cpp index 46ae154b0..840b60f57 100644 --- a/src/Nazara/Utility/StaticMesh.cpp +++ b/src/Nazara/Utility/StaticMesh.cpp @@ -4,6 +4,7 @@ #include #include +#include #include #include #include @@ -56,16 +57,7 @@ bool NzStaticMesh::GenerateAABB() { // On lock le buffer pour itérer sur toutes les positions et composer notre AABB NzBufferMapper mapper(m_vertexBuffer, nzBufferAccess_ReadOnly); - - m_aabb.MakeZero(); - - NzMeshVertex* vertex = reinterpret_cast(mapper.GetPointer()); - unsigned int vertexCount = m_vertexBuffer->GetVertexCount(); - for (unsigned int i = 0; i < vertexCount; ++i) - { - m_aabb.ExtendTo(vertex->position); - vertex++; - } + m_aabb = NzComputeVerticesAABB(static_cast(mapper.GetPointer()), m_vertexBuffer->GetVertexCount()); return true; }