Files
42_vox/Application/NoiseCollection.h
2025-05-31 20:07:52 +02:00

49 lines
1.2 KiB
C++

#ifndef NOISECOLLECTION_H
# define NOISECOLLECTION_H
#include <Noise.h>
#include <cstdint>
#include <memory>
#include <unordered_map>
constexpr std::uint32_t ARTIFICIAL_ELEVATION = 40;
constexpr std::uint32_t WATER_LEVEL = 20;
class NoiseCollection
{
public:
inline NoiseCollection(const std::uint32_t seed)
{
m_collection.emplace("terrain", std::make_unique<Noise>(seed, // seed
0.045f,
0.8f,
4,
2.0f,
0.7f,
4,
1.2f
));
m_collection.emplace("caves", std::make_unique<Noise>(seed,
0.02f,
1.0f,
5,
2.0f,
0.5f,
3,
1.0f
)); // TODO !!!!!!
}
Noise* GetNoise(const std::string& key) const;
inline void AddNoise(std::string key, std::unique_ptr<Noise> noise) { m_collection.emplace(std::move(key), std::move(noise)); }
const std::array<std::uint32_t, CHUNK_SIZE.y> GetBlocks(Scop::Vec2i pos);
~NoiseCollection() = default;
private:
std::unordered_map<std::string, std::unique_ptr<Noise>> m_collection;
};
#endif