#pragma once #include #include #include #include "BiomGenerator.h" #include "BiomInterpolator.h" #include "Chunk.h" class DimensionGenerator : public virtual Framework::ReferenceCounter { private: BiomInterpolator* interpolator; Framework::RCArray biomGenerators; const int dimensionId; void findBiom( int x, int y, Noise* zNoise, BiomGenerator** firstChoice, BiomGenerator** secondChoice, double& firstChoiceWeight, double& secondChoiceWeight ); protected: DimensionGenerator( BiomInterpolator* interpolator, int dimensionId ); ~DimensionGenerator(); void registerBiom( BiomGenerator* generator ); public: Chunk* generateChunk( Noise* zNoise, Game* zGame, int centerX, int centerY ); Framework::Either generateBlock( Noise* zNoise, Game* zGame, Framework::Vec3 location ); int getDimensionId() const; };