X-Git-Url: http://git.localhorst.tv/?a=blobdiff_plain;f=src%2Fworld%2FGenerator.hpp;h=e431f7debbd02a588d1d118250795f0e07248a34;hb=dcd54cacda98c2c0f7cf0c7a9131fb858d8ee10a;hp=5251ac69aed002c3a97e5b488e1ff863ddeba07c;hpb=75ebb9101c7aec9c16ef418b822c39e81889f66f;p=blank.git diff --git a/src/world/Generator.hpp b/src/world/Generator.hpp index 5251ac6..e431f7d 100644 --- a/src/world/Generator.hpp +++ b/src/world/Generator.hpp @@ -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 -#include +#include 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 types; + float min_solidity; + SimplexNoise solidity_noise; SimplexNoise humidity_noise; SimplexNoise temperature_noise;