#pragma once #include "BlockType.h" #include "Block.h" class NoBlockBlockType; class NoBlock : public Block { public: static const NoBlock INSTANCE; protected: NoBlock(); friend NoBlockBlockType; }; class NoBlockBlockType : public BlockType { REGISTRABLE( NoBlockBlockType ) protected: NoBlockBlockType(); NoBlockBlockType( int id ); virtual Block* createBlock( Framework::Vec3 position ) override; virtual Block* loadBlock( Framework::Vec3 position, Framework::StreamReader* zReader ) override; virtual void initializeSuperBlock( Block* zBlock ) override; virtual const Block* zDefault() override; virtual bool needsInstance() const override; }; REGISTER( NoBlockBlockType, BlockType ) class AirBlock : public Block { public: static const AirBlock INSTANCE; protected: AirBlock(); }; class AirBlockBlockType : public NoBlockBlockType { REGISTRABLE( AirBlockBlockType ) protected: AirBlockBlockType(); virtual const Block* zDefault() override; }; REGISTER( AirBlockBlockType, BlockType )