// // Created by Wouter Groeneveld on 08/07/20. // #ifndef GBA_BITMAP_ENGINE_PROJECT_MESH_H #define GBA_BITMAP_ENGINE_PROJECT_MESH_H #include #include #include #include #include class Mesh { private: VectorFx pos; VectorFx rot; u8 cIndex; std::vector> verticesArr; std::vector> facesArr; public: void add(VectorFx coords, VectorFx normal); void add(VectorFx v); void addFace(int a, int b, int c); inline std::vector> const& vertices() const { return verticesArr; } inline std::vector> const& faces() const { return facesArr; } void setPosition(VectorFx position) { pos = position; } inline VectorFx &position() { return pos; } inline VectorFx &rotation() { return rot; } inline u8 colorIndex() const { return cIndex; } inline FIXED rotx() const { return rot.x(); } inline FIXED roty() const { return rot.y(); } inline FIXED rotz() const { return rot.z(); } inline void resetRotation() { rot.setX(0); rot.setY(0); } void rotateTo(FIXED x, FIXED y) { rot.setX(x); rot.setY(y); } inline void rotate(FIXED x, FIXED y) { rot.setX(rot.x() + x); rot.setY(rot.y() + y); } explicit Mesh() : pos(VectorFx()), rot(VectorFx()), cIndex(1) {} Mesh(const Mesh&) = delete; Mesh& operator=(const Mesh&) = delete; }; #endif //GBA_BITMAP_ENGINE_PROJECT_MESH_H