X-Git-Url: http://git.localhorst.tv/?a=blobdiff_plain;f=src%2Fmodel%2FPart.hpp;fp=src%2Fmodel%2FPart.hpp;h=f71efc5425a1580a992ba1b857e38e8ef9797a44;hb=7e782291e0ce39eb2d4e8c1df28f682c313e6f8d;hp=f3d78e26f610e8c124d1047a89ddf26a4646b422;hpb=a26ca06878d45d3ce77cbc28b574f2553e121944;p=blank.git diff --git a/src/model/Part.hpp b/src/model/Part.hpp index f3d78e2..f71efc5 100644 --- a/src/model/Part.hpp +++ b/src/model/Part.hpp @@ -5,6 +5,7 @@ #include #include +#include #include #include #include @@ -13,23 +14,27 @@ namespace blank { class DirectionalLighting; +class EntityMesh; class Instance; class Model; class Shape; +class ShapeRegistry; +class TextureIndex; +class TokenStreamReader; struct Part { - std::uint16_t id; - AABB bounds; +public: struct State { glm::vec3 position = glm::vec3(0.0f, 0.0f, 0.0f); glm::quat orientation = glm::quat(1.0f, 0.0f, 0.0f, 0.0f); - } initial; - const Shape *shape; + }; Part(); ~Part(); + void Read(TokenStreamReader &, TextureIndex &, const ShapeRegistry &); + Part &AddChild(); const std::list &Children() const noexcept { return children; } @@ -39,7 +44,6 @@ struct Part { glm::mat4 LocalTransform(const Instance &) const noexcept; glm::mat4 GlobalTransform(const Instance &) const noexcept; - void LoadMeshes(Instance &) const; void Render( const glm::mat4 &, const Instance &, @@ -47,7 +51,14 @@ struct Part { private: const Part *parent; + const Shape *shape; std::list children; + std::vector tex_map; + mutable std::unique_ptr mesh; + State initial; + glm::vec3 hsl_mod; + glm::vec3 rgb_mod; + std::uint16_t id; };