diff --git a/examples/DeferredShading/main.cpp b/examples/DeferredShading/main.cpp index b14f6b103..33de55fec 100644 --- a/examples/DeferredShading/main.cpp +++ b/examples/DeferredShading/main.cpp @@ -83,6 +83,7 @@ int main() Nz::MeshParams meshParams; meshParams.storage = Nz::DataStorage::Software; + meshParams.center = true; meshParams.matrix = Nz::Matrix4f::Rotate(Nz::EulerAnglesf(0.f, 90.f, 180.f)) * Nz::Matrix4f::Scale(Nz::Vector3f(0.002f)); meshParams.vertexDeclaration = Nz::VertexDeclaration::Get(Nz::VertexLayout::XYZ_Normal_UV); diff --git a/src/Nazara/Utility/Mesh.cpp b/src/Nazara/Utility/Mesh.cpp index 93e5a08d9..23a1ba615 100644 --- a/src/Nazara/Utility/Mesh.cpp +++ b/src/Nazara/Utility/Mesh.cpp @@ -515,15 +515,12 @@ namespace Nz { StaticMesh& staticMesh = static_cast(*data.subMesh); - BufferMapper mapper(*staticMesh.GetVertexBuffer(), BufferAccess::ReadWrite); - MeshVertex* vertices = static_cast(mapper.GetPointer()); + VertexMapper mapper(*staticMesh.GetVertexBuffer()); + SparsePtr position = mapper.GetComponentPtr(VertexComponent::Position); std::size_t vertexCount = staticMesh.GetVertexCount(); for (std::size_t i = 0; i < vertexCount; ++i) - { - vertices->position -= center; - vertices++; - } + *position++ -= center; // Our AABB doesn't change shape, only position Boxf aabb = staticMesh.GetAABB();