From 8045b8ba04aae39a4cf9733e72413f648b6ebe2b Mon Sep 17 00:00:00 2001 From: tylermurphy534 Date: Sun, 18 Sep 2022 21:20:51 -0400 Subject: stanford dragon rendering --- engine/xe_game_object.hpp | 50 +++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 50 insertions(+) create mode 100644 engine/xe_game_object.hpp (limited to 'engine/xe_game_object.hpp') diff --git a/engine/xe_game_object.hpp b/engine/xe_game_object.hpp new file mode 100644 index 0000000..7adbbed --- /dev/null +++ b/engine/xe_game_object.hpp @@ -0,0 +1,50 @@ +#pragma once + +#include "xe_model.hpp" + +#include +#include + +#include +#include + +namespace xe { + +struct TransformComponent { + glm::vec3 translation{}; + glm::vec3 scale{1.f, 1.f, 1.f}; + glm::vec3 rotation{}; + + + glm::mat4 mat4(); + glm::mat3 normalMatrix(); + +}; + +class XeGameObject { + public: + using id_t = unsigned int; + + static XeGameObject createGameObject() { + static id_t currentId = 0; + return XeGameObject(currentId++); + } + + XeGameObject(const XeGameObject &) = delete; + XeGameObject &operator=(const XeGameObject &) = delete; + XeGameObject(XeGameObject&&) = default; + XeGameObject &operator=(XeGameObject &&) = default; + + id_t getId() { return id; } + + std::shared_ptr model{}; + glm::vec3 color{}; + TransformComponent transform; + + private: + XeGameObject(id_t objId) : id{objId} {} + + id_t id; +}; + +} \ No newline at end of file -- cgit v1.2.3-freya