summary refs log tree commit diff
path: root/src/World/Chunk.hpp
diff options
context:
space:
mode:
Diffstat (limited to 'src/World/Chunk.hpp')
-rw-r--r--src/World/Chunk.hpp18
1 files changed, 11 insertions, 7 deletions
diff --git a/src/World/Chunk.hpp b/src/World/Chunk.hpp
index cb4f7e1..2b0379c 100644
--- a/src/World/Chunk.hpp
+++ b/src/World/Chunk.hpp
@@ -12,12 +12,18 @@ namespace MC::World {
 class Chunk {
 public:
     static constexpr const uint32_t Width = 16;
-    static constexpr const uint32_t Height = 64;
+    static constexpr const uint32_t Height = 128;
 
     Chunk(int64_t x, int64_t y)
-        : m_blocks{}, m_position{(float)x * Chunk::Width, 0.0f, (float)y * Chunk::Width} {};
+        : m_blocks{Chunk::Width * Chunk::Height * Chunk::Width, {BlockType::Air}},
+        m_position{(float)x * Chunk::Width, 0.0f, (float)y * Chunk::Width} {};
 
-    void set(uint32_t x, uint32_t y, uint32_t z, BlockType type);
+    struct BlockData {
+        BlockType type;
+    };
+
+    void set(uint32_t x, uint32_t y, uint32_t z, BlockData type);
+    BlockData get(uint32_t x, uint32_t y, uint32_t z);
 
     Vector<3> position();
     GFX::Mesh mesh();
@@ -27,12 +33,10 @@ private:
     static std::array<Vector<2>, 4> face_tex_coords(BlockType type, BlockSide side);
     static std::array<Vector<3>, 4> face_normals(BlockSide side);
 
-    struct BlockData {
-        BlockType type;
-    };
+    static uint64_t pos(uint32_t x, uint32_t y, uint32_t z);
 
     Vector<3> m_position;
-    BlockData m_blocks[Chunk::Width][Chunk::Height][Chunk::Width];
+    std::vector<BlockData> m_blocks;
 };
 
 }