#ifndef _ENTITYFACTORYBASE_H #define _ENTITYFACTORYASE_H #include "Module.h" namespace Engine { struct EntityBase; struct EntityPhysicState; struct EntityControllerState; /** \brief Takes care of the creation of user-defined Entities * * To be able to define custom types of Entities we use a Object Factory for * which the actual CreateEntityXYZState () function can be overloaded with * the creation of custom types. * * The method EntityFactory::CreateEntity() will be called by the * Model::CreateEntity() function which also takes care of registering the * Entity to required submodules. */ class EntityFactoryBase : public Module { public: EntityFactoryBase () {}; virtual EntityPhysicState* CreateEntityPhysicState (int type); virtual EntityControllerState* CreateEntityControllerState (int type); virtual EntityBase* CreateEntity (int type); protected: virtual int OnInit (int argc, char* argv[]); }; } #endif // _ENTITYFACTORYBASE_H