X-Git-Url: http://git.localhorst.tv/?a=blobdiff_plain;f=src%2Fshape.hpp;h=abf87954c557bcfe6d9459492db60fb641cae757;hb=4ef32c5a4a5bdb6da8383f66d8265715eb2ed4f9;hp=f31075b10fb48f8e2103bbad1349af97b9c10dfd;hpb=b4995967309bf5570161db2287e27b84ca94ab9a;p=blank.git diff --git a/src/shape.hpp b/src/shape.hpp index f31075b..abf8795 100644 --- a/src/shape.hpp +++ b/src/shape.hpp @@ -17,14 +17,19 @@ struct Shape { /// the number of vertex indices this shape has size_t VertexIndexCount() const { return vtx_idx.size(); } + const Model::Normal &VertexNormal(size_t idx) const { return vtx_nrm[idx]; } + Model::Normal VertexNormal( + size_t idx, const glm::mat4 &transform + ) const { + return Model::Normal(transform * glm::vec4(vtx_nrm[idx], 0.0f)); + } + /// fill given buffers with this shape's elements with an - /// optional offset + /// optional transform and offset void Vertices( Model::Positions &vertex, Model::Normals &normal, - Model::Indices &index, - const Model::Position &elem_offset = { 0.0f, 0.0f, 0.0f }, - Model::Index idx_offset = 0 + Model::Indices &index ) const; void Vertices( Model::Positions &vertex, @@ -33,6 +38,12 @@ struct Shape { const glm::mat4 &transform, Model::Index idx_offset = 0 ) const; + void Vertices( + BlockModel::Positions &vertex, + BlockModel::Indices &index, + const glm::mat4 &transform, + BlockModel::Index idx_offset = 0 + ) const; /// the number of vertices this shape's outline has size_t OutlineCount() const { return out_pos.size(); }