]> git.localhorst.tv Git - blank.git/blobdiff - src/model/Model.hpp
glm backwards compatibility
[blank.git] / src / model / Model.hpp
index 118ac2e2004d723d0351c9a458a705006a562bcd..54b5256c13f34e4767475735d259d3161272aa9c 100644 (file)
@@ -1,11 +1,12 @@
 #ifndef BLANK_MODEL_MODEL_HPP_
 #define BLANK_MODEL_MODEL_HPP_
 
-#include "geometry.hpp"
+#include "Part.hpp"
+#include "../graphics/glm.hpp"
 
 #include <cstdint>
 #include <list>
-#include <glm/glm.hpp>
+#include <vector>
 #include <glm/gtc/quaternion.hpp>
 
 
@@ -25,42 +26,26 @@ public:
        std::uint32_t ID() const noexcept { return id; }
        void ID(std::uint32_t i) noexcept { id = i; }
 
-       const AABB &Bounds() const noexcept { return bounds; }
-       void Bounds(const AABB &b) noexcept { bounds = b; }
+       Part &RootPart() noexcept { return root; }
+       const Part &RootPart() const noexcept { return root; }
+       Part &GetPart(std::size_t i) noexcept { return *part[i]; }
+       const Part &GetPart(std::size_t i) const noexcept { return *part[i]; }
 
-       const glm::vec3 &Position() const noexcept { return position; }
-       void Position(const glm::vec3 &p) noexcept { position = p; }
+       void SetBody(std::uint16_t id) { body_id = id; }
+       const Part &GetBodyPart() const noexcept { return GetPart(body_id); }
 
-       const glm::quat &Orientation() const noexcept { return orientation; }
-       void Orientation(const glm::quat &o) noexcept { orientation = o; }
-
-       bool HasNodeMesh() const noexcept { return node_mesh; }
-       void SetNodeMesh(const EntityMesh *m) noexcept { node_mesh = m; }
-
-       const EntityMesh &NodeMesh() const noexcept { return *node_mesh; }
-
-       Model &AddPart();
-       bool HasParent() const noexcept { return parent; }
-       Model &Parent() const noexcept { return *parent; }
-       bool IsRoot() const noexcept { return !HasParent(); }
-
-       glm::mat4 LocalTransform() const noexcept;
-       glm::mat4 GlobalTransform() const noexcept;
+       void SetEyes(std::uint16_t id) { eyes_id = id; }
+       const Part &GetEyesPart() const noexcept { return GetPart(eyes_id); }
 
+       void Enumerate();
        void Instantiate(Instance &) const;
 
 private:
-       Model *parent;
-       const EntityMesh *node_mesh;
-
        std::uint32_t id;
-
-       AABB bounds;
-
-       glm::vec3 position;
-       glm::quat orientation;
-
-       std::list<Model> parts;
+       Part root;
+       std::vector<Part *> part;
+       std::uint16_t body_id;
+       std::uint16_t eyes_id;
 
 };