#pragma once #include #include "math/vec3.hpp" #include "math/vec2.hpp" struct index_ptn { uint16_t position; uint16_t texture; uint16_t normal; }; union triangle { struct { struct index_ptn a; struct index_ptn b; struct index_ptn c; }; struct index_ptn v[3]; }; union quadrilateral { struct { struct index_ptn a; struct index_ptn b; struct index_ptn c; struct index_ptn d; }; struct index_ptn v[4]; }; using vertex_position = vec<3, float>; using vertex_normal = vec<3, float>; using vertex_texture = vec<2, float>; struct object { const union triangle * triangle; const union quadrilateral * quadrilateral; const int triangle_count; const int quadrilateral_count; const int material; }; struct model { const vertex_position * position; const vertex_texture * texture; const vertex_normal * normal; const struct object ** object; const int object_count; };