diff --git a/include/Nazara/Utility/VertexMapper.hpp b/include/Nazara/Utility/VertexMapper.hpp index 8bfdd4ca0..3830ff103 100644 --- a/include/Nazara/Utility/VertexMapper.hpp +++ b/include/Nazara/Utility/VertexMapper.hpp @@ -18,18 +18,16 @@ class NzSubMesh; class NAZARA_API NzVertexMapper { public: - NzVertexMapper(NzVertexBuffer* vertexBuffer, unsigned int vertexCount); - NzVertexMapper(NzSubMesh* subMesh); + NzVertexMapper(NzSubMesh* subMesh, nzBufferAccess access = nzBufferAccess_ReadWrite); + NzVertexMapper(NzVertexBuffer* vertexBuffer, nzBufferAccess access = nzBufferAccess_ReadWrite); ~NzVertexMapper(); template NzSparsePtr GetComponentPtr(nzVertexComponent component); - unsigned int GetVertexCount() const; void Unmap(); private: NzBufferMapper m_mapper; - unsigned int m_vertexCount; }; #include diff --git a/src/Nazara/Utility/StaticMesh.cpp b/src/Nazara/Utility/StaticMesh.cpp index 8516a0b2b..493b61ebf 100644 --- a/src/Nazara/Utility/StaticMesh.cpp +++ b/src/Nazara/Utility/StaticMesh.cpp @@ -25,12 +25,12 @@ void NzStaticMesh::Center() { NzVector3f offset(m_aabb.x + m_aabb.width/2.f, m_aabb.y + m_aabb.height/2.f, m_aabb.z + m_aabb.depth/2.f); - NzVertexMapper mapper(this); + NzVertexMapper mapper(m_vertexBuffer); NzSparsePtr position = mapper.GetComponentPtr(nzVertexComponent_Position); - unsigned int vertexCount = mapper.GetVertexCount(); + unsigned int vertexCount = m_vertexBuffer->GetVertexCount(); for (unsigned int i = 0; i < vertexCount; ++i) - position[i] -= offset; + *position++ -= offset; m_aabb.x -= offset.x; m_aabb.y -= offset.y; diff --git a/src/Nazara/Utility/SubMesh.cpp b/src/Nazara/Utility/SubMesh.cpp index 5ed92b956..e9e1c3324 100644 --- a/src/Nazara/Utility/SubMesh.cpp +++ b/src/Nazara/Utility/SubMesh.cpp @@ -25,7 +25,7 @@ NzSubMesh::~NzSubMesh() = default; void NzSubMesh::GenerateNormals() { NzVertexMapper mapper(this); - unsigned int vertexCount = mapper.GetVertexCount(); + unsigned int vertexCount = GetVertexCount(); NzSparsePtr normals = mapper.GetComponentPtr(nzVertexComponent_Normal); NzSparsePtr positions = mapper.GetComponentPtr(nzVertexComponent_Position); @@ -56,7 +56,7 @@ void NzSubMesh::GenerateNormals() void NzSubMesh::GenerateNormalsAndTangents() { NzVertexMapper mapper(this); - unsigned int vertexCount = mapper.GetVertexCount(); + unsigned int vertexCount = GetVertexCount(); NzSparsePtr normals = mapper.GetComponentPtr(nzVertexComponent_Normal); NzSparsePtr positions = mapper.GetComponentPtr(nzVertexComponent_Position); diff --git a/src/Nazara/Utility/VertexMapper.cpp b/src/Nazara/Utility/VertexMapper.cpp index e4b272803..3b30ad3d3 100644 --- a/src/Nazara/Utility/VertexMapper.cpp +++ b/src/Nazara/Utility/VertexMapper.cpp @@ -10,7 +10,7 @@ #include #include -NzVertexMapper::NzVertexMapper(NzSubMesh* subMesh) +NzVertexMapper::NzVertexMapper(NzSubMesh* subMesh, nzBufferAccess access) { NzErrorFlags flags(nzErrorFlag_ThrowException, true); @@ -37,26 +37,17 @@ NzVertexMapper::NzVertexMapper(NzSubMesh* subMesh) NazaraInternalError("Animation type not handled (0x" + NzString::Number(subMesh->GetAnimationType(), 16) + ')'); } - m_vertexCount = subMesh->GetVertexCount(); - - m_mapper.Map(buffer, nzBufferAccess_ReadWrite); + m_mapper.Map(buffer, access); } -NzVertexMapper::NzVertexMapper(NzVertexBuffer* vertexBuffer, unsigned int vertexCount) +NzVertexMapper::NzVertexMapper(NzVertexBuffer* vertexBuffer, nzBufferAccess access) { NzErrorFlags flags(nzErrorFlag_ThrowException, true); - - m_mapper.Map(vertexBuffer, nzBufferAccess_ReadWrite); - m_vertexCount = vertexCount; + m_mapper.Map(vertexBuffer, access); } NzVertexMapper::~NzVertexMapper() = default; -unsigned int NzVertexMapper::GetVertexCount() const -{ - return m_vertexCount; -} - void NzVertexMapper::Unmap() { m_mapper.Unmap();