diff options
| author | Mel <einebeere@gmail.com> | 2023-06-29 22:15:32 +0200 |
|---|---|---|
| committer | Mel <einebeere@gmail.com> | 2023-06-29 22:15:32 +0200 |
| commit | 52732d71e72b02ff45e25f44e414f87ec9ab7666 (patch) | |
| tree | a3db775e01e04abaf0291e7d172740ff47ff1006 /src/World/Chunk.hpp | |
| parent | 92ac46df6afa8ee76f972cceb681cf32658f84a2 (diff) | |
| download | meowcraft-52732d71e72b02ff45e25f44e414f87ec9ab7666.tar.zst meowcraft-52732d71e72b02ff45e25f44e414f87ec9ab7666.zip | |
Pretty terrain generation
Diffstat (limited to 'src/World/Chunk.hpp')
| -rw-r--r-- | src/World/Chunk.hpp | 25 |
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; }; } |
