X-Git-Url: http://git.localhorst.tv/?a=blobdiff_plain;f=src%2Fmodel%2FShape.hpp;h=28a36ab6445afd585328a2999ad3ea8967011bb0;hb=8fdc24f0b3fb287f5d4e1c7d1f85ad85d5ed2414;hp=c6964f9c410110d10e4ed48933b07bce0512eb42;hpb=5998b18978bd8e7a0c9deb516474634e1d3521c9;p=blank.git diff --git a/src/model/Shape.hpp b/src/model/Shape.hpp index c6964f9..28a36ab 100644 --- a/src/model/Shape.hpp +++ b/src/model/Shape.hpp @@ -5,7 +5,6 @@ #include "EntityModel.hpp" #include "OutlineModel.hpp" -#include #include @@ -31,21 +30,19 @@ struct Shape { /// fill given buffers with this shape's elements with an /// optional transform and offset void Vertices( - EntityModel::Positions &vertex, - EntityModel::Normals &normal, - EntityModel::Indices &index + EntityModel::Buffer &out, + float tex_offset = 0.0f ) const; void Vertices( - EntityModel::Positions &vertex, - EntityModel::Normals &normal, - EntityModel::Indices &index, + EntityModel::Buffer &out, const glm::mat4 &transform, + float tex_offset = 0.0f, EntityModel::Index idx_offset = 0 ) const; void Vertices( - BlockModel::Positions &vertex, - BlockModel::Indices &index, + BlockModel::Buffer &out, const glm::mat4 &transform, + float tex_offset = 0.0f, BlockModel::Index idx_offset = 0 ) const; @@ -54,14 +51,8 @@ struct Shape { /// the number of vertex indices this shape's outline has size_t OutlineIndexCount() const { return out_idx.size(); } - /// fill given buffers with this shape's outline's elements with - /// an optional offset - void Outline( - OutlineModel::Positions &vertex, - OutlineModel::Indices &index, - const OutlineModel::Position &offset = { 0.0f, 0.0f, 0.0f }, - OutlineModel::Index idx_offset = 0 - ) const; + /// fill given buffers with this shape's outline's elements + void Outline(OutlineModel::Buffer &out) const; /// Check if given ray would pass though this shape if it were /// transformed with given matrix. @@ -85,21 +76,23 @@ struct Shape { ) const noexcept = 0; protected: - void SetShape(const EntityModel::Positions &pos, const EntityModel::Normals &nrm, const EntityModel::Indices &idx) { - vtx_pos = pos; - vtx_nrm = nrm; - vtx_idx = idx; - } - void SetOutline(const OutlineModel::Positions &pos, const OutlineModel::Indices &idx) { - out_pos = pos; - out_idx = idx; - } + void SetShape( + const EntityModel::Positions &pos, + const EntityModel::Normals &nrm, + const EntityModel::Indices &idx); + void SetTexture( + const BlockModel::TexCoords &tex_coords); + void SetOutline( + const OutlineModel::Positions &pos, + const OutlineModel::Indices &idx); private: EntityModel::Positions vtx_pos; EntityModel::Normals vtx_nrm; EntityModel::Indices vtx_idx; + BlockModel::TexCoords vtx_tex_coords; + OutlineModel::Positions out_pos; OutlineModel::Indices out_idx;