#pragma once #include "cve_model.hpp" #include namespace cve { struct Transform2dComponent { glm::vec2 translation{}; // Position offset glm::mat2 mat2() { return glm::mat2{1.f}; }; }; class CveGameObject { public: using id_t = unsigned int; static CveGameObject createGameObject() { static id_t currentId = 0; return CveGameObject{currentId++}; } CveGameObject(const CveGameObject &) = delete; CveGameObject &operator=(const CveGameObject &) = delete; CveGameObject(CveGameObject &&) = default; CveGameObject &operator=(CveGameObject &&) = default; const id_t getId() { return id; } std::shared_ptr model{}; glm::vec3 color; Transform2dComponent transform2d{}; private: CveGameObject(id_t objID) : id{objID} {} id_t id; }; }