#ifndef __MCS_ENGINE_MODULE_HPP__ #define __MCS_ENGINE_MODULE_HPP__ #include "engine/utils/rev_range.hpp" #include "engine/core/engine_module_api.hpp" #include #include #include /// Engine module base class class MscEngineModule { public: virtual ~MscEngineModule() = default; /// Get module name virtual std::string getName() const = 0; /// Get module revision virtual uint16_t getRev() const = 0; /// Module dependency list virtual const std::unordered_map & getDependencies() const = 0; /// @brief Module initialization /// @param engine engine public API for modules virtual void onInitialize(IMscEngineModuleAPI &engine) = 0; /// @brief Engine start event handler /// @param engine engine public API for modules virtual void onStart(IMscEngineModuleAPI &engine) = 0; /// @brief Engine update cycle step /// @param engine engine public API for modules /// @param dt loop delta virtual void onUpdate(IMscEngineModuleAPI &engine, float dt) = 0; /// @brief Engine stop event handler /// @param engine engine public API for modules virtual void onStop(IMscEngineModuleAPI &engine) = 0; /// @brief Module destroying /// @param engine engine public API for modules virtual void onDestory(IMscEngineModuleAPI &engine) = 0; }; #endif // __MCS_ENGINE_MODULE_HPP__