#pragma once #include #include #include #include "BiomGenerator.h" #include "Chunk.h" class DimensionGenerator : public virtual Framework::ReferenceCounter { private: Framework::RCArray biomGenerators; Framework::Array biomDistribution; const int dimensionId; Framework::Vec3 minTemplateAffectedPosition; Framework::Vec3 maxTemplateAffectedPosition; BiomGenerator* zBiomGenerator(int seed, int x, int y); protected: DimensionGenerator(int dimensionId); ~DimensionGenerator(); void registerBiom(BiomGenerator* generator, double possibility); Framework::RCArray* getGeneratedStructoresForArea(int seed, Framework::Vec3 minPos, Framework::Vec3 maxPos); public: Chunk* generateChunk(int seed, int centerX, int centerY); Framework::Either generateBlock(int seed, Framework::Vec3 location); int getDimensionId() const; virtual Noise* zBiomNoise(int seed) = 0; virtual Noise* zStructureNoise(int seed) = 0; };