diff --git a/include/Nazara/Utility/StaticMesh.hpp b/include/Nazara/Utility/StaticMesh.hpp index ac6fcfade..4bd8b4bea 100644 --- a/include/Nazara/Utility/StaticMesh.hpp +++ b/include/Nazara/Utility/StaticMesh.hpp @@ -20,7 +20,7 @@ class NAZARA_API NzStaticMesh final : public NzSubMesh, NzResourceListener { public: NzStaticMesh(const NzMesh* parent); - virtual ~NzStaticMesh(); + ~NzStaticMesh(); void Center(); @@ -43,8 +43,6 @@ class NAZARA_API NzStaticMesh final : public NzSubMesh, NzResourceListener void SetIndexBuffer(const NzIndexBuffer* indexBuffer); private: - void OnResourceReleased(const NzResource* resource, int index) override; - NzBoxf m_aabb; NzIndexBufferConstRef m_indexBuffer = nullptr; NzVertexBufferRef m_vertexBuffer = nullptr; diff --git a/src/Nazara/Utility/StaticMesh.cpp b/src/Nazara/Utility/StaticMesh.cpp index 39b5a94ff..e0df0765b 100644 --- a/src/Nazara/Utility/StaticMesh.cpp +++ b/src/Nazara/Utility/StaticMesh.cpp @@ -26,9 +26,11 @@ 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); + NzSparsePtr position = mapper.GetAttributePtr(nzAttributeUsage_Position); + unsigned int vertexCount = mapper.GetVertexCount(); for (unsigned int i = 0; i < vertexCount; ++i) - mapper.SetPosition(i, mapper.GetPosition(i) - offset); + position[i] -= offset; m_aabb.x -= offset.x; m_aabb.y -= offset.y; @@ -48,8 +50,6 @@ bool NzStaticMesh::Create(NzVertexBuffer* vertexBuffer) #endif m_vertexBuffer = vertexBuffer; - m_vertexBuffer->AddResourceListener(this); - return true; } @@ -59,14 +59,8 @@ void NzStaticMesh::Destroy() { NotifyDestroy(); - if (m_indexBuffer) - { - m_indexBuffer->RemoveResourceListener(this); - m_indexBuffer = nullptr; - } - - m_vertexBuffer->RemoveResourceListener(this); - m_vertexBuffer = nullptr; + m_indexBuffer.Reset(); + m_vertexBuffer.Reset(); } } @@ -126,23 +120,5 @@ void NzStaticMesh::SetAABB(const NzBoxf& aabb) void NzStaticMesh::SetIndexBuffer(const NzIndexBuffer* indexBuffer) { - if (m_indexBuffer) - m_indexBuffer->RemoveResourceListener(this); - - if (indexBuffer) - indexBuffer->AddResourceListener(this); - m_indexBuffer = indexBuffer; } - -void NzStaticMesh::OnResourceReleased(const NzResource* resource, int index) -{ - NazaraUnused(index); - - if (resource == m_indexBuffer) - m_indexBuffer = nullptr; - else if (resource == m_vertexBuffer) - m_vertexBuffer = nullptr; - else - NazaraInternalError("Not listening to " + NzString::Pointer(resource)); -}