summary refs log tree commit diff
path: root/src/World/Generator.hpp
diff options
context:
space:
mode:
Diffstat (limited to 'src/World/Generator.hpp')
-rw-r--r--src/World/Generator.hpp63
1 files changed, 0 insertions, 63 deletions
diff --git a/src/World/Generator.hpp b/src/World/Generator.hpp
deleted file mode 100644
index a90d1bc..0000000
--- a/src/World/Generator.hpp
+++ /dev/null
@@ -1,63 +0,0 @@
-#pragma once
-
-#include <cstdint>
-#include "Chunk.hpp"
-#include "BiomeType.hpp"
-#include "../Math/Perlin.hpp"
-#include "../Math/Tensor.hpp"
-
-namespace MC::World {
-
-class Generator {
-public:
-    Generator() = default;
-    Chunk generate(int64_t chunk_x, int64_t chunk_y);
-private:
-    template <typename V> using Map2D = Matrix<Chunk::Width, Chunk::Width, V>;
-    template <typename V> using Map3D = Tensor<3, V, Chunk::Width, Chunk::Height, Chunk::Width>;
-
-    Map2D<float> generate_landmass_map(int64_t chunk_x, int64_t chunk_y);
-    Map2D<float> generate_hill_map(int64_t chunk_x, int64_t chunk_y);
-    Map2D<float> generate_height_map(Map2D<float>& landmass_map, Map2D<float>& hill_map, int64_t chunk_x, int64_t chunk_y);
-
-    Map2D<BiomeType> generate_biome_map(Map2D<float>& landmass_map, Map2D<float>& hill_map, Map2D<float>& height_map, int64_t chunk_x, int64_t chunk_y);
-
-    Map3D<bool> generate_terrain(Map2D<float>& height_map, int64_t chunk_x, int64_t chunk_y);
-
-    void decorate_soil(Chunk& chunk, Map2D<BiomeType>& biome_map, Map3D<bool>& terrain_map);
-
-    [[nodiscard]] float get_landmass(Vector<2> pos) const;
-    [[nodiscard]] float get_hill(Vector<2> pos) const;
-
-    [[nodiscard]] float get_humidity(Vector<2> pos) const;
-    [[nodiscard]] float get_temperature(Vector<2> pos) const;
-
-    [[nodiscard]] float get_density(Vector<3> pos) const;
-
-    static Vector<2> chunk_position_to_world_vector(int64_t chunk_x, int64_t chunk_y, uint x, uint y);
-
-    Math::Perlin::Noise<2> m_landmass_noise{.scale=800.0f, .octaves=4, .persistence=0.3f, .lacunarity=3.5f};
-    Math::Perlin::Noise<2> m_hill_noise{.scale=400.0f, .octaves=3, .persistence=0.5f, .lacunarity=2.0f};
-
-    Math::Perlin::Noise<2> m_temperature_noise{.scale=700.0f, .octaves=3, .persistence=0.5f, .lacunarity=2.0f};
-    Math::Perlin::Noise<2> m_humidity_noise{.scale=400.0f, .octaves=2, .persistence=0.5f, .lacunarity=2.0f};
-
-    Math::Perlin::Noise<3> m_density_noise{.scale=30.0f, .octaves=2, .persistence=0.7f, .lacunarity=2.0f};
-
-    enum class HillSlice { Mountain, Middle, Valley };
-    enum class LandmassSlice { Land, Beach, Ocean };
-    enum class TemperatureZone { Hot, Fair, Cold };
-    enum class HumidityZone { Wet, Lush, Temperate, Dry };
-    static constexpr uint HillSliceSize = (uint)HillSlice::Valley + 1;
-    static constexpr uint LandmassSliceSize = (uint)LandmassSlice::Ocean + 1;
-    static constexpr uint TemperatureZoneSize = (uint)TemperatureZone::Cold + 1;
-    static constexpr uint HumidityZoneSize = (uint)HumidityZone::Dry + 1;
-
-    static constexpr size_t biome_lookup_table_size = (size_t)HillSliceSize * (size_t)LandmassSliceSize * (size_t)TemperatureZoneSize * (size_t)HumidityZoneSize;
-    static std::array<BiomeType, biome_lookup_table_size> create_biome_lookup_table();
-    static size_t biome_lookup_table_index(HillSlice hill_slice, LandmassSlice landmass_slice, TemperatureZone temperature_zone, HumidityZone humidity_zone);
-    static BiomeType lookup_biome(HillSlice hill_slice, LandmassSlice landmass_slice, TemperatureZone temperature_zone, HumidityZone humidity_zone);
-    static inline std::array<BiomeType, biome_lookup_table_size> biome_lookup_table = create_biome_lookup_table();
-};
-
-}