X-Git-Url: http://git.localhorst.tv/?a=blobdiff_plain;f=src%2Fworld%2FBlockType.hpp;h=a63507aec28ce568f991866a2abece597d2ac845;hb=e4a1425dccd0ba9b106e415dd02809f4308a85ee;hp=b7861e1dd24281088bdab5cbde4d594dff05b489;hpb=07b8335e7bfd631e0878e183c87238812d632c56;p=blank.git diff --git a/src/world/BlockType.hpp b/src/world/BlockType.hpp index b7861e1..a63507a 100644 --- a/src/world/BlockType.hpp +++ b/src/world/BlockType.hpp @@ -2,9 +2,10 @@ #define BLANK_WORLD_BLOCKTYPE_HPP_ #include "Block.hpp" +#include "BlockGravity.hpp" #include "../graphics/BlockMesh.hpp" #include "../graphics/EntityMesh.hpp" -#include "../graphics/OutlineMesh.hpp" +#include "../graphics/PrimitiveMesh.hpp" #include "../model/Shape.hpp" #include @@ -13,6 +14,10 @@ namespace blank { +class ResourceIndex; +class ShapeRegistry; +class TokenStreamReader; + /// single 1x1x1 cube /// attributes of a type of block struct BlockType { @@ -23,6 +28,9 @@ struct BlockType { glm::vec3 rgb_mod; glm::vec3 outline_color; + /// gravity configuration or null if not emitting gravity + std::unique_ptr gravity; + /// a string to display to the user std::string label; @@ -66,6 +74,12 @@ struct BlockType { BlockType() noexcept; + void Read( + TokenStreamReader &in, + ResourceIndex &snd_index, + ResourceIndex &tex_index, + const ShapeRegistry &shapes); + bool FaceFilled(const Block &block, Block::Face face) const noexcept { return shape && shape->FaceFilled(block.OrientedFace(face)); } @@ -79,7 +93,7 @@ struct BlockType { const glm::mat4 &transform = glm::mat4(1.0f), BlockMesh::Index idx_offset = 0 ) const noexcept; - void FillOutlineMesh(OutlineMesh::Buffer &m) const noexcept; + void OutlinePrimitiveMesh(PrimitiveMesh::Buffer &) const noexcept; };