SubMeshs are now valid even when not animated
Former-commit-id: 5bd6289d30f4f6ffa1fcaf8d946aa9aba9cf7131
This commit is contained in:
parent
817119933c
commit
2e40ad832e
|
|
@ -35,6 +35,8 @@ class NAZARA_API NzSkeletalMesh final : public NzSubMesh
|
|||
bool Create(NzVertexBuffer* vertexBuffer, unsigned int weightCount);
|
||||
void Destroy();
|
||||
|
||||
void Finish();
|
||||
|
||||
const NzAxisAlignedBox& GetAABB() const;
|
||||
nzAnimationType GetAnimationType() const final;
|
||||
void* GetBindPoseBuffer();
|
||||
|
|
|
|||
|
|
@ -20,6 +20,8 @@ class NAZARA_API NzStaticMesh final : public NzSubMesh, NzResourceListener
|
|||
bool Create(NzVertexBuffer* vertexBuffer);
|
||||
void Destroy();
|
||||
|
||||
void Finish();
|
||||
|
||||
bool GenerateAABB();
|
||||
|
||||
const NzAxisAlignedBox& GetAABB() const override;
|
||||
|
|
|
|||
|
|
@ -25,6 +25,8 @@ class NAZARA_API NzSubMesh : public NzResource
|
|||
NzSubMesh(const NzMesh* parent);
|
||||
virtual ~NzSubMesh();
|
||||
|
||||
virtual void Finish() = 0; ///DOC: Mets le mesh dans sa position d'origine et calcule son AABB
|
||||
|
||||
virtual const NzAxisAlignedBox& GetAABB() const = 0;
|
||||
virtual nzAnimationType GetAnimationType() const = 0;
|
||||
virtual const NzIndexBuffer* GetIndexBuffer() const = 0;
|
||||
|
|
|
|||
|
|
@ -73,6 +73,7 @@ bool NzMesh::AddSubMesh(NzSubMesh* subMesh)
|
|||
#endif
|
||||
|
||||
subMesh->AddResourceListener(this, m_impl->subMeshes.size());
|
||||
subMesh->Finish();
|
||||
|
||||
m_impl->aabb.SetNull(); // On invalide l'AABB
|
||||
m_impl->subMeshes.push_back(subMesh);
|
||||
|
|
@ -118,6 +119,7 @@ bool NzMesh::AddSubMesh(const NzString& identifier, NzSubMesh* subMesh)
|
|||
int index = m_impl->subMeshes.size();
|
||||
|
||||
subMesh->AddResourceListener(this, index);
|
||||
subMesh->Finish();
|
||||
|
||||
m_impl->aabb.SetNull(); // On invalide l'AABB
|
||||
m_impl->subMeshes.push_back(subMesh);
|
||||
|
|
|
|||
|
|
@ -76,6 +76,19 @@ void NzSkeletalMesh::Destroy()
|
|||
}
|
||||
}
|
||||
|
||||
void NzSkeletalMesh::Finish()
|
||||
{
|
||||
#if NAZARA_UTILITY_SAFE
|
||||
if (!m_impl)
|
||||
{
|
||||
NazaraError("Skeletal mesh not created");
|
||||
return;
|
||||
}
|
||||
#endif
|
||||
|
||||
Skin();
|
||||
}
|
||||
|
||||
const NzAxisAlignedBox& NzSkeletalMesh::GetAABB() const
|
||||
{
|
||||
#if NAZARA_UTILITY_SAFE
|
||||
|
|
|
|||
|
|
@ -53,6 +53,12 @@ void NzStaticMesh::Destroy()
|
|||
}
|
||||
}
|
||||
|
||||
void NzStaticMesh::Finish()
|
||||
{
|
||||
// La seule chose à faire ici est de calculer l'AABB
|
||||
GenerateAABB();
|
||||
}
|
||||
|
||||
bool NzStaticMesh::GenerateAABB()
|
||||
{
|
||||
if (!m_aabb.IsNull())
|
||||
|
|
|
|||
Loading…
Reference in New Issue