#pragma once #include #include #include "GenerationTemplate.h" class Block; class Noise; class BiomGenerator : public virtual Framework::ReferenceCounter { private: Framework::RCArray templates; protected: int seed; void addTemplateGenerator(GenerationTemplate* gTemplate); public: BiomGenerator(); virtual Framework::Either generateAboveSurfaceBlock(int x, int y, int z, int dimensionId, int surfaceHeight, Chunk* partialGeneratedChunk) = 0; virtual Framework::Either generateSurfaceBlock( int x, int y, int z, int dimensionId) = 0; virtual Framework::Either generateBelowSurfaceBlock( int x, int y, int z, int dimensionId) = 0; virtual Framework::Either generateCaveBlock( int x, int y, int z, int dimensionId) = 0; virtual Framework::Either generateUnderWaterBlock(int x, int y, int z, int dimensionId, int surfaceHeight, Chunk* partialGeneratedChunk) = 0; virtual void setSeed(int seed); virtual Noise* zHeightMapNoise() = 0; const Framework::RCArray& getTemplates(); };