diff options
author | Loek Le Blansch <loek@pipeframe.xyz> | 2024-12-18 14:07:39 +0100 |
---|---|---|
committer | Loek Le Blansch <loek@pipeframe.xyz> | 2024-12-18 14:07:39 +0100 |
commit | 8dfdb5a588614db80fa8f41ccf883c1766fe56ff (patch) | |
tree | 3f5a323bc6f23ed1072bded1ac2b527c2bb031a6 /src/crepe | |
parent | efcb4e88c7b921684379adce2a3d09c8f9aaf3a3 (diff) | |
parent | 8afdca56d61a6c66ad1ac1bbd092192eeb827173 (diff) |
merge master
Diffstat (limited to 'src/crepe')
-rw-r--r-- | src/crepe/api/Script.cpp | 4 | ||||
-rw-r--r-- | src/crepe/api/Script.h | 16 | ||||
-rw-r--r-- | src/crepe/system/ScriptSystem.cpp | 5 |
3 files changed, 21 insertions, 4 deletions
diff --git a/src/crepe/api/Script.cpp b/src/crepe/api/Script.cpp index ee76011..6de6830 100644 --- a/src/crepe/api/Script.cpp +++ b/src/crepe/api/Script.cpp @@ -2,6 +2,7 @@ #include "../facade/SDLContext.h" #include "../manager/SceneManager.h" + #include "Script.h" using namespace crepe; @@ -26,6 +27,8 @@ void Script::set_next_scene(const string & name) { SaveManager & Script::get_save_manager() const { return this->mediator->save_manager; } +LoopTimerManager & Script::get_loop_timer() const { return this->mediator->loop_timer; } + void Script::replay::record_start() { ReplayManager & mgr = this->mediator->replay_manager; return mgr.record_start(); @@ -58,3 +61,4 @@ bool Script::get_key_state(Keycode key) const noexcept { return false; } } + diff --git a/src/crepe/api/Script.h b/src/crepe/api/Script.h index 2750df0..2422cdc 100644 --- a/src/crepe/api/Script.h +++ b/src/crepe/api/Script.h @@ -4,6 +4,7 @@ #include "../api/KeyCodes.h" #include "../manager/EventManager.h" +#include "../manager/LoopTimerManager.h" #include "../manager/Mediator.h" #include "../manager/ReplayManager.h" #include "../system/CollisionSystem.h" @@ -49,10 +50,12 @@ protected: /** * \brief Script update function (empty by default) * + * \param delta_time Time since last fixed update + * * This function is called during the ScriptSystem::update() routine if the \c BehaviorScript * component holding this script instance is active. */ - virtual void update() {} + virtual void update(duration_t delta_time) {} //! \} //! ScriptSystem calls \c init() and \c update() @@ -142,6 +145,15 @@ protected: SaveManager & get_save_manager() const; //! \} + /** + * \name Timing functions + * \see LoopTimerManager + * \{ + */ + //! Retrieve LoopTimerManager reference + LoopTimerManager & get_loop_timer() const; + //! \} + //! Replay management functions struct replay { // NOLINT //! \copydoc ReplayManager::record_start @@ -164,7 +176,6 @@ protected: * \see SDLContext::get_keyboard_state * * \return current keyboard state map with Keycode as key and bool as value(true = pressed, false = not pressed) - * */ const keyboard_state_t & get_keyboard_state() const; /** @@ -172,7 +183,6 @@ protected: * \see SDLContext::get_keyboard_state * * \return Keycode state (true if pressed, false if not pressed). - * */ bool get_key_state(Keycode key) const noexcept; diff --git a/src/crepe/system/ScriptSystem.cpp b/src/crepe/system/ScriptSystem.cpp index 0d10011..746285f 100644 --- a/src/crepe/system/ScriptSystem.cpp +++ b/src/crepe/system/ScriptSystem.cpp @@ -12,6 +12,7 @@ void ScriptSystem::fixed_update() { dbg_trace(); ComponentManager & mgr = this->mediator.component_manager; + LoopTimerManager & timer = this->mediator.loop_timer; RefVector<BehaviorScript> behavior_scripts = mgr.get_components_by_type<BehaviorScript>(); for (BehaviorScript & behavior_script : behavior_scripts) { @@ -24,6 +25,8 @@ void ScriptSystem::fixed_update() { script->init(); script->initialized = true; } - script->update(); + + duration_t delta_time = timer.get_scaled_fixed_delta_time(); + script->update(delta_time); } } |