X-Git-Url: http://git.localhorst.tv/?a=blobdiff_plain;f=src%2Fmodel%2FCollisionBounds.hpp;h=e43b0d82e66e69ae624cbfbfbbba9e540ea8f770;hb=e4a1425dccd0ba9b106e415dd02809f4308a85ee;hp=15c4fe10ade6ed89344ebed1cdea5cd18aa4dff3;hpb=b61d462707dd3d40a32a6104d88eb24f6a52df63;p=blank.git diff --git a/src/model/CollisionBounds.hpp b/src/model/CollisionBounds.hpp index 15c4fe1..e43b0d8 100644 --- a/src/model/CollisionBounds.hpp +++ b/src/model/CollisionBounds.hpp @@ -1,9 +1,7 @@ #ifndef BLANK_MODEL_COLLISIONBOUNDS_HPP_ #define BLANK_MODEL_COLLISIONBOUNDS_HPP_ -#include "../graphics/BlockMesh.hpp" -#include "../graphics/EntityMesh.hpp" -#include "../graphics/OutlineMesh.hpp" +#include "../graphics/PrimitiveMesh.hpp" #include @@ -15,44 +13,13 @@ class Ray; struct CollisionBounds { - /// the number of vertices (and normals) this shape has - size_t VertexCount() const noexcept { return vtx_pos.size(); } - /// the number of vertex indices this shape has - size_t VertexIndexCount() const noexcept { return vtx_idx.size(); } - - const EntityMesh::Normal &VertexNormal(size_t idx) const noexcept { return vtx_nrm[idx]; } - EntityMesh::Normal VertexNormal( - size_t idx, const glm::mat4 &transform - ) const noexcept { - return EntityMesh::Normal(transform * glm::vec4(vtx_nrm[idx], 0.0f)); - } - - /// fill given buffers with this shape's elements with an - /// optional transform and offset - void Vertices( - EntityMesh::Buffer &out, - float tex_offset = 0.0f - ) const; - void Vertices( - EntityMesh::Buffer &out, - const glm::mat4 &transform, - float tex_offset = 0.0f, - EntityMesh::Index idx_offset = 0 - ) const; - void Vertices( - BlockMesh::Buffer &out, - const glm::mat4 &transform, - float tex_offset = 0.0f, - BlockMesh::Index idx_offset = 0 - ) const; - /// the number of vertices this shape's outline has - size_t OutlineCount() const { return out_pos.size(); } + std::size_t OutlineCount() const { return out_pos.size(); } /// the number of vertex indices this shape's outline has - size_t OutlineIndexCount() const { return out_idx.size(); } + std::size_t OutlineIndexCount() const { return out_idx.size(); } - /// fill given buffers with this shape's outline's elements - void Outline(OutlineMesh::Buffer &out) const; + /// fill given buffers with these bounds' outline's elements + void Outline(PrimitiveMesh::Buffer &out) const; /// Check if given ray would pass though this shape if it were /// transformed with given matrix. @@ -76,25 +43,13 @@ struct CollisionBounds { ) const noexcept = 0; protected: - void SetShape( - const EntityMesh::Positions &pos, - const EntityMesh::Normals &nrm, - const EntityMesh::Indices &idx); - void SetTexture( - const BlockMesh::TexCoords &tex_coords); void SetOutline( - const OutlineMesh::Positions &pos, - const OutlineMesh::Indices &idx); + const PrimitiveMesh::Positions &pos, + const PrimitiveMesh::Indices &idx); private: - EntityMesh::Positions vtx_pos; - EntityMesh::Normals vtx_nrm; - EntityMesh::Indices vtx_idx; - - BlockMesh::TexCoords vtx_tex_coords; - - OutlineMesh::Positions out_pos; - OutlineMesh::Indices out_idx; + PrimitiveMesh::Positions out_pos; + PrimitiveMesh::Indices out_idx; };