#pragma once #include #include #include #include "StaticRegistry.h" class Block; class BlockType : public virtual Framework::ReferenceCounter { private: const int id; protected: BlockType( int id ); virtual void loadSuperBlock( Block *zBlock, Framework::StreamReader *zReader ); virtual Block *createBlock( Framework::Vec3 position ) = 0; public: virtual Block *loadBlock( Framework::Vec3 position, Framework::StreamReader *zReader ); int getId() const; };