MinecraftConsoles/Minecraft.World/ClimateLayer.h

30 lines
728 B
C++

#pragma once
#include "Layer.h"
#include "PerlinNoise.h"
#include "Biome.h"
#include <vector>
class ClimateLayer : public Layer
{
private:
PerlinNoise* temperatureNoise;
PerlinNoise* humidityNoise;
double scale; // ìàñøòàá øóìà (÷åì ìåíüøå, òåì êðóïíåå áèîìû)
struct BiomeCenter {
float temp;
float hum;
Biome* biome;
};
std::vector<BiomeCenter> centers;
void initBiomeCenters(); // çàïîëíèòü öåíòðû áèîìîâ
Biome* getBiomeForClimate(float temp, float hum) const;
public:
ClimateLayer(int64_t seed, int octaves, double scale, shared_ptr<Layer> parent);
virtual ~ClimateLayer();
virtual intArray getArea(int xo, int yo, int w, int h) override;
};