#pragma once #include #include #include #include "GeneratorRule.h" #include "JNoise.h" #include "JsonExpression.h" #include "StructureCollection.h" class Block; class Noise; class BiomGenerator : public virtual Framework::ReferenceCounter { private: Framework::Text name; Framework::RCArray templates; Framework::RCArray rules; JBoolExpression* condition; Framework::Vec3 minStructureOffset; Framework::Vec3 maxStructureOffset; protected: int seed; public: BiomGenerator( Framework::JSON::JSONValue* zConfig, JExpressionMemory* zMemory); Framework::Either generateBlock(int x, int y, int z, int dimensionId, JExpressionMemory* zMemory, Chunk* partialGeneratedChunk); bool isApplicable(JExpressionMemory* zMemory); void generateStructures(int x, int y, int z, int dimensionId, JExpressionMemory* zMemory, Framework::Vec3 minPos, Framework::Vec3 maxPos, Framework::RCArray* zResult); const Framework::RCArray& getTemplates() const; Framework::Vec3 getMinStructureOffset() const; Framework::Vec3 getMaxStructureOffset() const; static Framework::JSON::Validator::JSONValidator* getConfigValidator(); };