Loading logic moved to Asset classes
This commit is contained in:
@@ -3,15 +3,54 @@
|
||||
|
||||
namespace Seele
|
||||
{
|
||||
#define MAX_TEX_CHANNELS 4
|
||||
enum class VertexAttribute
|
||||
{
|
||||
POSITION,
|
||||
TEXCOORD,
|
||||
NORMAL,
|
||||
TANGENT,
|
||||
BITANGENT
|
||||
};
|
||||
struct MeshDescription
|
||||
{
|
||||
Array<VertexAttribute> layout;
|
||||
Gfx::PVertexDeclaration declaration;
|
||||
uint32 getStride() const
|
||||
{
|
||||
return getNumFloats() * sizeof(float);
|
||||
}
|
||||
uint32 getNumFloats() const
|
||||
{
|
||||
uint32 vertexSize = 0;
|
||||
for(auto a : layout)
|
||||
{
|
||||
switch (a)
|
||||
{
|
||||
case VertexAttribute::POSITION:
|
||||
case VertexAttribute::NORMAL:
|
||||
case VertexAttribute::TANGENT:
|
||||
case VertexAttribute::BITANGENT:
|
||||
vertexSize += 3;
|
||||
break;
|
||||
case VertexAttribute::TEXCOORD:
|
||||
vertexSize += 2;
|
||||
break;
|
||||
}
|
||||
}
|
||||
return vertexSize;
|
||||
}
|
||||
};
|
||||
DECLARE_REF(MaterialAsset);
|
||||
class Mesh
|
||||
{
|
||||
public:
|
||||
Mesh(Gfx::PVertexBuffer vertexBuffer, Gfx::PIndexBuffer indexBuffer);
|
||||
Mesh(MeshDescription description, Gfx::PIndexBuffer indexBuffer);
|
||||
~Mesh();
|
||||
|
||||
private:
|
||||
Gfx::PVertexBuffer vertexBuffer;
|
||||
Gfx::PIndexBuffer indexBuffer;
|
||||
MeshDescription description;
|
||||
PMaterialAsset referencedMaterial;
|
||||
};
|
||||
DEFINE_REF(Mesh);
|
||||
} // namespace Seele
|
||||
Reference in New Issue
Block a user