diff --git a/src/voxels/Block.cpp b/src/voxels/Block.cpp index ec125430..f06f052d 100644 --- a/src/voxels/Block.cpp +++ b/src/voxels/Block.cpp @@ -3,6 +3,7 @@ #include #include "core_defs.hpp" +#include "data/StructLayout.hpp" #include "util/stringutil.hpp" std::string to_string(BlockModel model) { @@ -102,6 +103,8 @@ Block::Block(const std::string& name) } { } +Block::~Block() {} + Block::Block(std::string name, const std::string& texture) : name(std::move(name)), textureFaces {texture, texture, texture, texture, texture, texture} { diff --git a/src/voxels/Block.hpp b/src/voxels/Block.hpp index 210972bb..4cbbe394 100644 --- a/src/voxels/Block.hpp +++ b/src/voxels/Block.hpp @@ -9,6 +9,10 @@ #include "maths/aabb.hpp" #include "typedefs.hpp" +namespace data { + class StructLayout; +} + inline std::string BLOCK_ITEM_SUFFIX = ".item"; inline constexpr uint FACE_MX = 0; @@ -184,6 +188,8 @@ public: // @brief Block tick interval (1 - 20tps, 2 - 10tps) uint tickInterval = 1; + std::unique_ptr dataStruct; + /// @brief Runtime indices (content indexing results) struct { /// @brief block runtime integer id @@ -211,6 +217,7 @@ public: Block(const std::string& name); Block(std::string name, const std::string& texture); Block(const Block&) = delete; + ~Block(); void cloneTo(Block& dst); }; diff --git a/src/voxels/Chunk.hpp b/src/voxels/Chunk.hpp index 79f75c28..1c537671 100644 --- a/src/voxels/Chunk.hpp +++ b/src/voxels/Chunk.hpp @@ -7,11 +7,11 @@ #include "constants.hpp" #include "lighting/Lightmap.hpp" +#include "util/SmallHeap.hpp" #include "voxel.hpp" inline constexpr int CHUNK_DATA_LEN = CHUNK_VOL * 4; -class Lightmap; class ContentReport; class Inventory; @@ -40,6 +40,8 @@ public: /// @brief Block inventories map where key is index of block in voxels array chunk_inventories_map inventories; + /// @brief Blocks metadata heap + util::SmallHeap blocksMetadata; Chunk(int x, int z);