From 7a158a0bf8f68069c5ee645f569de4bd83dc3308 Mon Sep 17 00:00:00 2001 From: Samsonium Date: Thu, 1 Oct 2026 14:55:42 +0300 Subject: [PATCH] feat: update engine features - WIP start/stop methods - Remove test module --- include/engine/core/engine.hpp | 18 +++++++++++++++++- include/engine/core/engine_module.hpp | 20 +++++++++++++++++++- src/engine/core/engine.cpp | 27 +++++++++++++++++++++++++++ src/engine/modules/test1/test1.hpp | 22 ---------------------- 4 files changed, 63 insertions(+), 24 deletions(-) delete mode 100644 src/engine/modules/test1/test1.hpp diff --git a/include/engine/core/engine.hpp b/include/engine/core/engine.hpp index e6b0284..7fd3882 100644 --- a/include/engine/core/engine.hpp +++ b/include/engine/core/engine.hpp @@ -12,16 +12,32 @@ class MscEngine : public IMscEngineModuleAPI { private: - /// Loaded modules list + using clock = std::chrono::steady_clock; + + /// @brief Loaded modules list std::vector> _modules; + + /// @brief Common event bus MscEventBus _bus; + /// @brief Is engine running rn + bool _isRunning = false; + + /// @brief Last update time + clock::time_point _lastUpdate; + public: /// Actual version static uint16_t REV; MscEngine(std::vector> modules); + /// @brief Start engine + void start(); + + /// @brief Stop engine + void stop(); + MscEventBus &getBus() override; std::unordered_map getLoadedModules() const override; MscEngineModule &getModule(const std::string &name) override; diff --git a/include/engine/core/engine_module.hpp b/include/engine/core/engine_module.hpp index 19978a6..a1fc3bc 100644 --- a/include/engine/core/engine_module.hpp +++ b/include/engine/core/engine_module.hpp @@ -23,8 +23,26 @@ public: virtual const std::unordered_map & getDependencies() const = 0; - /// Module initialization phase + /// @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__ diff --git a/src/engine/core/engine.cpp b/src/engine/core/engine.cpp index 95f8ff6..f816867 100644 --- a/src/engine/core/engine.cpp +++ b/src/engine/core/engine.cpp @@ -49,11 +49,38 @@ MscEngine::MscEngine(std::vector> modules) std::to_string(current_rev)); } } + + module.get()->onInitialize(*this); } _modules = std::move(modules); } +void MscEngine::start() +{ + if (_isRunning) + return; + + _isRunning = true; + _lastUpdate = clock::now(); + + double accumulator = 0.0; + constexpr double fixedDt = 1.0 / 30.0; + + while (_isRunning) + { + // + } +} + +void MscEngine::stop() +{ + if (!_isRunning) + return; + + _isRunning = false; +} + MscEventBus &MscEngine::getBus() { return _bus; diff --git a/src/engine/modules/test1/test1.hpp b/src/engine/modules/test1/test1.hpp deleted file mode 100644 index cac5322..0000000 --- a/src/engine/modules/test1/test1.hpp +++ /dev/null @@ -1,22 +0,0 @@ -#include "engine/modules/test1/test1.hpp" -#include "engine/core/engine_module_api.hpp" -#include "engine/utils/rev_range.hpp" -#include -#include -#include - -std::string Test1Module::getName() const { return "test1"; } - -uint16_t Test1Module::getRev() const { return 1; } - -const std::unordered_map & -Test1Module::getDependencies() const -{ - static const std::unordered_map deps{}; - return deps; -} - -void Test1Module::onInitialize(IMscEngineModuleAPI &engine) -{ - (void)(engine); -}