#pragma once #include #include #include #include "Block.h" class GeneratorTemplate; class MultiblockStructure; class GeneratedStructure : public Framework::ReferenceCounter { private: int* blockIds; Block** blocks; Framework::Vec3 size; Framework::Vec3 minAffectedPos; Framework::Vec3 originPos; GeneratorTemplate* t; MultiblockStructure* multiblock; public: GeneratedStructure(GeneratorTemplate* t, Framework::Vec3 originPos, Framework::Vec3 size, Framework::Vec3 minAffectedPos); ~GeneratedStructure(); void setBlockAt( Framework::Either block, Framework::Vec3 localPos); bool isBlockAffected(Framework::Vec3 location) const; Framework::Either generateBlockAt( Framework::Vec3 location, int dimensionId) const; void addAllBlocksToStructure(MultiblockStructure* structure); Framework::Vec3 getOriginPos() const; GeneratorTemplate* zTemplate() const; };