50 lines
1.4 KiB
C++
50 lines
1.4 KiB
C++
#ifndef __MCS_ENGINE_MODULE_HPP__
|
|
#define __MCS_ENGINE_MODULE_HPP__
|
|
|
|
#include "engine/core/engine_module_api.hpp"
|
|
#include "engine/utils/rev_range.hpp"
|
|
#include <cstdint>
|
|
#include <string>
|
|
#include <unordered_map>
|
|
|
|
/// 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<std::string, MscRevisionRange> &
|
|
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,
|
|
IMscEngineModuleAPI::clock::duration 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__
|