DimensionGenerator.h 925 B

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