X-Git-Url: https://git.localhorst.tv/?a=blobdiff_plain;f=src%2Fworld%2FBlockType.hpp;h=786c76cffbe3b566cdc048bce40624790c56db7c;hb=5998b18978bd8e7a0c9deb516474634e1d3521c9;hp=344bec7f6542b1c5ffa049ec08cda2b8dd8135d2;hpb=b7d09e1e35ef90282c97509e0020b20db3c7ea9f;p=blank.git diff --git a/src/world/BlockType.hpp b/src/world/BlockType.hpp index 344bec7..786c76c 100644 --- a/src/world/BlockType.hpp +++ b/src/world/BlockType.hpp @@ -3,7 +3,7 @@ #include "Block.hpp" #include "../model/BlockModel.hpp" -#include "../model/Model.hpp" +#include "../model/EntityModel.hpp" #include "../model/OutlineModel.hpp" #include "../model/shapes.hpp" @@ -20,13 +20,24 @@ struct BlockType { glm::vec3 color; glm::vec3 outline_color; + // a string to display to the user + std::string label; + Block::Type id; + // light level that blocks of this type emit int luminosity; + // whether to draw bool visible; + // if true, stops light from propagating and fixes level to luminosity bool block_light; + // whether to check for collisions at all + bool collision; + // if the block should be impenetrable + bool collide_block; + struct Faces { bool face[Block::FACE_COUNT]; Faces &operator =(const Faces &other) noexcept { @@ -52,10 +63,10 @@ struct BlockType { return fill[block.OrientedFace(face)]; } - void FillModel( - Model::Buffer &m, + void FillEntityModel( + EntityModel::Buffer &m, const glm::mat4 &transform = glm::mat4(1.0f), - Model::Index idx_offset = 0 + EntityModel::Index idx_offset = 0 ) const noexcept; void FillBlockModel( BlockModel::Buffer &m, @@ -63,7 +74,7 @@ struct BlockType { BlockModel::Index idx_offset = 0 ) const noexcept; void FillOutlineModel( - OutlineModel &m, + OutlineModel::Buffer &m, const glm::vec3 &pos_offset = { 0, 0, 0 }, OutlineModel::Index idx_offset = 0 ) const noexcept;