]> git.localhorst.tv Git - blank.git/blobdiff - src/world/Generator.hpp
glm backwards compatibility
[blank.git] / src / world / Generator.hpp
index 5251ac69aed002c3a97e5b488e1ff863ddeba07c..e431f7debbd02a588d1d118250795f0e07248a34 100644 (file)
@@ -1,16 +1,17 @@
 #ifndef BLANK_WORLD_GENERATOR_HPP_
 #define BLANK_WORLD_GENERATOR_HPP_
 
+#include "../graphics/glm.hpp"
 #include "../rand/SimplexNoise.hpp"
-#include "../rand/WorleyNoise.hpp"
 
 #include <cstdint>
-#include <glm/glm.hpp>
+#include <vector>
 
 
 namespace blank {
 
 class Block;
+class BlockType;
 class BlockTypeRegistry;
 class Chunk;
 
@@ -28,29 +29,27 @@ public:
                        float growth;
                };
                NoiseParam solidity = { 0xA85033F6BCBDD110, 3, 0.5f, 1.0f/64.0f, 2.0f, 2.0f };
-               NoiseParam humidity = { 0x3A463FB24B04A901, 3, 0.5f, 1.0f/256.0f, 2.0f, 2.0f };
-               NoiseParam temperature = { 0x2530BA6C6134A9FB, 3, 0.5f, 1.0f/512.0f, 2.0f, 2.0f };
+               NoiseParam humidity = { 0x3A463FB24B04A901, 2, 0.5f, 1.0f/512.0f, 2.0f, 2.0f };
+               NoiseParam temperature = { 0x2530BA6C6134A9FB, 2, 0.5f, 1.0f/1024.0f, 2.0f, 2.0f };
                NoiseParam richness = { 0x95A179F180103446, 3, 0.5f, 1.0f/128.0f, 2.0f, 2.0f };
                NoiseParam randomness = { 0x074453EEE1496390, 3, 0.5f, 1.0f/16.0f, 2.0f, 2.0f };
        };
 
-       explicit Generator(const Config &, const BlockTypeRegistry &) noexcept;
+       explicit Generator(const Config &) noexcept;
 
-       // scan types for generation
-       void Scan();
+       void LoadTypes(const BlockTypeRegistry &);
 
        void operator ()(Chunk &) const noexcept;
 
 private:
-       Block Generate(const glm::vec3 &position) const noexcept;
-       static float GetValue(
-               const SimplexNoise &,
-               const glm::vec3 &,
-               const Config::NoiseParam &) noexcept;
+       struct ValueField;
+       Block Generate(const ValueField &, const glm::ivec3 &position) const noexcept;
 
 private:
        const Config &config;
-       const BlockTypeRegistry &types;
+       std::vector<const BlockType *> types;
+       float min_solidity;
+
        SimplexNoise solidity_noise;
        SimplexNoise humidity_noise;
        SimplexNoise temperature_noise;