Utility: Allow TriangleIterator and VertexMapper to take constant submesh

Former-commit-id: 708fe75333a54b739794e7c9729ee1557ab26164 [formerly c68c2ff4e2deb1a512237ec4e502f00c801f7c7e]
Former-commit-id: 5fd3fd8b0a518526ee3c91d418cf321611d2bc67
This commit is contained in:
Lynix
2016-07-08 08:36:42 +02:00
parent 52436a9395
commit 5711ff555f
4 changed files with 49 additions and 4 deletions

View File

@@ -47,6 +47,42 @@ namespace Nz
ErrorFlags flags(ErrorFlag_ThrowException, true);
m_mapper.Map(vertexBuffer, access);
}
VertexMapper::VertexMapper(const SubMesh* subMesh, BufferAccess access)
{
ErrorFlags flags(ErrorFlag_ThrowException, true);
const VertexBuffer* buffer = nullptr;
switch (subMesh->GetAnimationType())
{
case AnimationType_Skeletal:
{
const SkeletalMesh* skeletalMesh = static_cast<const SkeletalMesh*>(subMesh);
buffer = skeletalMesh->GetVertexBuffer();
break;
}
case AnimationType_Static:
{
const StaticMesh* staticMesh = static_cast<const StaticMesh*>(subMesh);
buffer = staticMesh->GetVertexBuffer();
break;
}
}
if (!buffer)
{
NazaraInternalError("Animation type not handled (0x" + String::Number(subMesh->GetAnimationType(), 16) + ')');
}
m_mapper.Map(buffer, access);
}
VertexMapper::VertexMapper(const VertexBuffer* vertexBuffer, BufferAccess access)
{
ErrorFlags flags(ErrorFlag_ThrowException, true);
m_mapper.Map(vertexBuffer, access);
}
VertexMapper::~VertexMapper() = default;