DimensionGenerator.h 802 B

1234567891011121314151617181920212223242526272829
  1. #pragma once
  2. #include <Array.h>
  3. #include <ReferenceCounter.h>
  4. #include <Either.h>
  5. #include "BiomGenerator.h"
  6. #include "Chunk.h"
  7. class DimensionGenerator : public virtual Framework::ReferenceCounter
  8. {
  9. private:
  10. Framework::RCArray<BiomGenerator> biomGenerators;
  11. Framework::Array<double> biomDistribution;
  12. const int dimensionId;
  13. BiomGenerator* zBiomGenerator( int seed, int x, int y );
  14. protected:
  15. DimensionGenerator( int dimensionId );
  16. ~DimensionGenerator();
  17. void registerBiom( BiomGenerator* generator, double possibility );
  18. public:
  19. Chunk* generateChunk( int seed, int centerX, int centerY );
  20. Framework::Either<Block*, int> generateBlock( int seed, Framework::Vec3<int> location );
  21. int getDimensionId() const;
  22. virtual Noise* zBiomNoise( int seed ) = 0;
  23. };