summary refs log tree commit diff
path: root/src/World/Chunk.hpp
diff options
context:
space:
mode:
authorMel <einebeere@gmail.com>2023-06-29 22:15:32 +0200
committerMel <einebeere@gmail.com>2023-06-29 22:15:32 +0200
commit52732d71e72b02ff45e25f44e414f87ec9ab7666 (patch)
treea3db775e01e04abaf0291e7d172740ff47ff1006 /src/World/Chunk.hpp
parent92ac46df6afa8ee76f972cceb681cf32658f84a2 (diff)
downloadmeowcraft-52732d71e72b02ff45e25f44e414f87ec9ab7666.tar.zst
meowcraft-52732d71e72b02ff45e25f44e414f87ec9ab7666.zip
Pretty terrain generation
Diffstat (limited to 'src/World/Chunk.hpp')
-rw-r--r--src/World/Chunk.hpp25
1 files changed, 17 insertions, 8 deletions
diff --git a/src/World/Chunk.hpp b/src/World/Chunk.hpp
index 2b0379c..d200039 100644
--- a/src/World/Chunk.hpp
+++ b/src/World/Chunk.hpp
@@ -1,29 +1,36 @@
 #pragma once
 
 #include <cstdint>
-#include <optional>
+#include "BiomeType.hpp"
 #include "BlockType.hpp"
 #include "../GFX/Mesh.hpp"
 #include "BlockSide.hpp"
-#include "../GFX/Binder.hpp"
 
 namespace MC::World {
 
 class Chunk {
 public:
-    static constexpr const uint32_t Width = 16;
-    static constexpr const uint32_t Height = 128;
+    static constexpr uint32_t Width = 16;
+    static constexpr uint32_t Height = 128;
 
     Chunk(int64_t x, int64_t y)
-        : m_blocks{Chunk::Width * Chunk::Height * Chunk::Width, {BlockType::Air}},
-        m_position{(float)x * Chunk::Width, 0.0f, (float)y * Chunk::Width} {};
+        : m_blocks{Width * Height * Width, {BlockType::Air}},
+        m_position{(float)x * Width, 0.0f, (float)y * Width} {}
 
     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);
+    void set(uint32_t x, uint32_t y, uint32_t z, BlockData data);
+    BlockData get(uint32_t x, uint32_t y, uint32_t z) const;
+
+    struct Details {
+        Matrix<Width, Width> landmass_values{};
+        Matrix<Width, Width> hill_values{};
+        Matrix<Width, Width, BiomeType> biome_values{};
+    };
+    void set_details(const Details& details) { m_details = details; }
+    Details& details(){ return m_details; }
 
     Vector<3> position();
     GFX::Mesh mesh();
@@ -37,6 +44,8 @@ private:
 
     Vector<3> m_position;
     std::vector<BlockData> m_blocks;
+
+    Details m_details;
 };
 
 }