#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; };