X-Git-Url: http://git.localhorst.tv/?a=blobdiff_plain;f=src%2Fworld%2FBlockType.hpp;h=0cae9c00389767c013880e559f3a37bf1126c7c8;hb=9da6ac5e93d79e79658a95d5f6efe42146873583;hp=caccb8f4b7ec237a014086195c6b065c875e2107;hpb=55dbd6b35a39888f245e247d2e140f141f918178;p=blank.git diff --git a/src/world/BlockType.hpp b/src/world/BlockType.hpp index caccb8f..0cae9c0 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" @@ -17,27 +17,48 @@ namespace blank { struct BlockType { const Shape *shape; + float texture; glm::vec3 color; glm::vec3 outline_color; - // a string to display to the user + /// a string to display to the user std::string label; Block::Type id; - // light level that blocks of this type emit + /// light level that blocks of this type emit int luminosity; - // whether to draw + /// whether to draw bool visible; - // if true, stops light from propagating and fixes level to luminosity + /// if true, stops light from propagating and fixes level to luminosity bool block_light; - // whether to check for collisions at all + /// whether to check for collisions at all bool collision; - // if the block should be impenetrable + /// if the block should be impenetrable bool collide_block; + // generation properties + /// whether to use this block in generation at all + bool generate; + // min/mid/max points for the respective properties + // should all be in the (-1,1) range + float min_solidity; + float mid_solidity; + float max_solidity; + float min_humidity; + float mid_humidity; + float max_humidity; + float min_temperature; + float mid_temperature; + float max_temperature; + float min_richness; + float mid_richness; + float max_richness; + /// commonness factor, random chance is multiplied by this + float commonness; + struct Faces { bool face[Block::FACE_COUNT]; Faces &operator =(const Faces &other) noexcept { @@ -63,21 +84,17 @@ 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, const glm::mat4 &transform = glm::mat4(1.0f), BlockModel::Index idx_offset = 0 ) const noexcept; - void FillOutlineModel( - OutlineModel &m, - const glm::vec3 &pos_offset = { 0, 0, 0 }, - OutlineModel::Index idx_offset = 0 - ) const noexcept; + void FillOutlineModel(OutlineModel::Buffer &m) const noexcept; };