#pragma once #include #include #include #include #include "StaticRegistry.h" class Entity; class EntityType : public virtual Framework::ReferenceCounter { private: const int id; protected: EntityType( int id ); virtual void loadSuperEntity( Entity* zEntity, Framework::StreamReader* zReader ) const; virtual void saveSuperEntity( Entity* zEntity, Framework::StreamWriter* zWriter ) const; virtual void createSuperEntity( Entity* zEntity ) const; virtual Entity* createEntity( Framework::Vec3 position, int dimensionId, int entityId ) const = 0; public: virtual Entity* loadEntity( Framework::StreamReader* zReader ) const; virtual void saveEntity( Entity* zEntity, Framework::StreamWriter* zWriter ) const; virtual Entity* createEntityAt( Framework::Vec3 position, int dimensionId ) const; int getId() const; };