#pragma once #include #include #include "GeneratedStructure.h" #include "Noise.h" class GeneratorTemplate : public Framework::ReferenceCounter { private: float propability; Framework::Vec3 minPosOffset; Framework::Vec3 maxSize; public: GeneratorTemplate(float propability, Framework::Vec3 minPosOffset, Framework::Vec3 maxSize); virtual bool canEffect(Framework::Vec3 location, Framework::Vec3 affectedLocation) const; virtual GeneratedStructure* generateAt( Framework::Vec3 location, Noise* zNoise, int dimensionId) = 0; float getPropability() const; Framework::Vec3 getMinAffectedOffset() const; Framework::Vec3 getMaxAffectedOffset() const; }; class GeneratorTemplateFactory : public Framework::ReferenceCounter { public: GeneratorTemplateFactory(); virtual GeneratorTemplate* createTemplate( Framework::JSON::JSONValue* zConfig) = 0; virtual Framework::JSON::Validator::JSONValidator* getValidator() = 0; };