X-Git-Url: http://git.localhorst.tv/?a=blobdiff_plain;f=src%2Fworld%2FBlockType.hpp;h=1ea34a1f897558e28e5020dc4545eb19513b55a5;hb=9c5308ba4108bd842af6d9d2e893ea575a7e6ca8;hp=4208d94665d29ed56436b8662a406427f787b0b8;hpb=b61d462707dd3d40a32a6104d88eb24f6a52df63;p=blank.git diff --git a/src/world/BlockType.hpp b/src/world/BlockType.hpp index 4208d94..1ea34a1 100644 --- a/src/world/BlockType.hpp +++ b/src/world/BlockType.hpp @@ -5,9 +5,10 @@ #include "../graphics/BlockMesh.hpp" #include "../graphics/EntityMesh.hpp" #include "../graphics/OutlineMesh.hpp" -#include "../model/bounds.hpp" +#include "../model/Shape.hpp" #include +#include namespace blank { @@ -16,8 +17,8 @@ namespace blank { /// attributes of a type of block struct BlockType { - const CollisionBounds *shape; - float texture; + const Shape *shape; + std::vector textures; glm::vec3 hsl_mod; glm::vec3 rgb_mod; glm::vec3 outline_color; @@ -60,31 +61,15 @@ struct BlockType { /// commonness factor, random chance is multiplied by this float commonness; - struct Faces { - bool face[Block::FACE_COUNT]; - Faces &operator =(const Faces &other) noexcept { - for (int i = 0; i < Block::FACE_COUNT; ++i) { - face[i] = other.face[i]; - } - return *this; - } - bool operator [](Block::Face f) const noexcept { - return face[f]; - } - } fill; - BlockType() noexcept; - static const NullBounds DEFAULT_SHAPE; - bool FaceFilled(const Block &block, Block::Face face) const noexcept { - return fill[block.OrientedFace(face)]; + return shape && shape->FaceFilled(block.OrientedFace(face)); } void FillEntityMesh( EntityMesh::Buffer &m, - const glm::mat4 &transform = glm::mat4(1.0f), - EntityMesh::Index idx_offset = 0 + const glm::mat4 &transform = glm::mat4(1.0f) ) const noexcept; void FillBlockMesh( BlockMesh::Buffer &m,