/* core/extension.h This file is part of the Osirion project and is distributed under the terms of the GNU General Public License version 2 */ #ifndef __INCLUDED_CORE_EXTENSION_H__ #define __INCLUDED_CORE_EXTENSION_H__ namespace core { class Extension; } #include "core/entity.h" namespace core { /// a abstract base class for entity extensions class Extension { public: /// extension types enum Type { Client = 0, Render = 1, Sound = 2, Game = 3 }; inline Type type() const { return extension_type; } inline Entity *entity() { return extension_entity; } Extension(Type type, Entity *entity); virtual ~Extension(); virtual void frame(float elapsed) = 0; private: Type extension_type; Entity *extension_entity; }; } // namespace core #endif // __INCLUDED_CORE_EXTENSION_H__