#pragma once #include #include #include "Block.h" class MultiblockStructure : public virtual Framework::ReferenceCounter { private: Framework::Array affectedChunks; Framework::Array> memberBlockPositions; Framework::Vec3 uniquePosition; int dimensionId; __int64 structureId; protected: Framework::RCArray loadedMembers; public: MultiblockStructure(int dimensionId, __int64 structureId, Framework::Vec3 uniquePosition); ~MultiblockStructure(); void onBlockLoaded(Block* block); void onBlockUnloaded(Block* zBlock); void addMemberPosition(Framework::Vec3 blockPos); virtual void onBlockRemoved(Block* zBlock); bool isEmpty() const; bool isFullyLoaded() const; bool isFullyUnloaded() const; bool isBlockMember(Block* zBlock) const; __int64 getStructureId() const; Framework::Vec3 getUniquePosition() const; };