BiomGenerator.h 1.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748
  1. #pragma once
  2. #include <Either.h>
  3. #include <ReferenceCounter.h>
  4. #include "GenerationTemplate.h"
  5. class Block;
  6. class Noise;
  7. class BiomGenerator : public virtual Framework::ReferenceCounter
  8. {
  9. private:
  10. Framework::RCArray<GenerationTemplate> templates;
  11. protected:
  12. int seed;
  13. void addTemplateGenerator(GenerationTemplate* gTemplate);
  14. public:
  15. BiomGenerator();
  16. virtual Framework::Either<Block*, int> generateAboveSurfaceBlock(int x,
  17. int y,
  18. int z,
  19. int dimensionId,
  20. int surfaceHeight,
  21. Chunk* partialGeneratedChunk)
  22. = 0;
  23. virtual Framework::Either<Block*, int> generateSurfaceBlock(
  24. int x, int y, int z, int dimensionId)
  25. = 0;
  26. virtual Framework::Either<Block*, int> generateBelowSurfaceBlock(
  27. int x, int y, int z, int dimensionId)
  28. = 0;
  29. virtual Framework::Either<Block*, int> generateCaveBlock(
  30. int x, int y, int z, int dimensionId)
  31. = 0;
  32. virtual Framework::Either<Block*, int> generateUnderWaterBlock(int x,
  33. int y,
  34. int z,
  35. int dimensionId,
  36. int surfaceHeight,
  37. Chunk* partialGeneratedChunk)
  38. = 0;
  39. virtual void setSeed(int seed);
  40. virtual Noise* zHeightMapNoise() = 0;
  41. const Framework::RCArray<GenerationTemplate>& getTemplates();
  42. };