#pragma once #include "Color.hpp" #include "Point.hpp" #include "Vec.hpp" #include const int FACE_LIMIT = 30000; const int MATERIAL_LIMIT = 5; const int TEXTURE_SIZE_LIMIT = 1024; const int VERTEX_LIMIT = 20000; struct Texture { ColorU32 texels[TEXTURE_SIZE_LIMIT][TEXTURE_SIZE_LIMIT]; unsigned int width; unsigned int height; }; struct TextureList { Texture data[MATERIAL_LIMIT]; }; struct Material { ColorF32 ambient; ColorF32 diffuse; ColorF32 specular; float glossiness; float opacity; }; struct MaterialList { Material data[MATERIAL_LIMIT]; unsigned long size; }; struct UV { float u; float v; }; struct UVList { UV data[VERTEX_LIMIT]; unsigned long size; }; struct Vertex { Point position; Vector normal; ColorF32 color; }; struct VertexList { Vertex data[VERTEX_LIMIT]; unsigned long size; }; struct Face { int vertIndex[3]; int uvIndex[3]; int materialIndex; }; struct FaceList { Face data[FACE_LIMIT]; unsigned long size; }; struct Mesh { Point position; Point rotation; float scale; };