aboutsummaryrefslogtreecommitdiff
path: root/src/crepe
diff options
context:
space:
mode:
authorJAROWMR <jarorutjes07@gmail.com>2024-12-13 20:49:32 +0100
committerJAROWMR <jarorutjes07@gmail.com>2024-12-13 20:49:32 +0100
commitb25d9438b3849efd0a6b6034d238eb36e23d6a5c (patch)
tree75973b75580fbc708ad6d6361deab587c7758921 /src/crepe
parentded2f0d56d95edffb97830f406bce9e1ec4293d1 (diff)
parent8f20aac54aed1a060d59d5169276ef3ed33a8dc9 (diff)
Merge branch 'master' of github.com:lonkaars/crepe into jaro/mediator_concealing_scene
Diffstat (limited to 'src/crepe')
-rw-r--r--src/crepe/manager/LoopTimerManager.cpp2
-rw-r--r--src/crepe/manager/LoopTimerManager.h8
-rw-r--r--src/crepe/system/AnimatorSystem.cpp5
3 files changed, 9 insertions, 6 deletions
diff --git a/src/crepe/manager/LoopTimerManager.cpp b/src/crepe/manager/LoopTimerManager.cpp
index 9819632..a6e4788 100644
--- a/src/crepe/manager/LoopTimerManager.cpp
+++ b/src/crepe/manager/LoopTimerManager.cpp
@@ -31,7 +31,7 @@ void LoopTimerManager::update() {
this->delta_time = this->maximum_delta_time;
}
if (this->delta_time > 0s) {
- this->actual_fps = 1.0 / duration_cast<seconds>(this->delta_time).count();
+ this->actual_fps = static_cast<unsigned>(1.0 / this->delta_time.count());
} else {
this->actual_fps = 0;
}
diff --git a/src/crepe/manager/LoopTimerManager.h b/src/crepe/manager/LoopTimerManager.h
index 91403e4..76b02d3 100644
--- a/src/crepe/manager/LoopTimerManager.h
+++ b/src/crepe/manager/LoopTimerManager.h
@@ -6,7 +6,7 @@
namespace crepe {
-typedef std::chrono::duration<double> duration_t;
+typedef std::chrono::duration<float> duration_t;
typedef std::chrono::duration<unsigned long long, std::micro> elapsed_time_t;
/**
@@ -55,7 +55,7 @@ public:
*
* \return Current FPS.
*/
- unsigned get_fps() const;
+ unsigned int get_fps() const;
/**
* \brief Get the current time scale.
@@ -149,9 +149,9 @@ private:
private:
//! Target frames per second.
- unsigned target_fps = 60;
+ unsigned int target_fps = 60;
//! Actual frames per second.
- unsigned actual_fps = 0;
+ unsigned int actual_fps = 0;
//! Time scale for speeding up or slowing down the game (0 = pause, < 1 = slow down, 1 = normal speed, > 1 = speed up).
float time_scale = 1;
//! Maximum delta time in seconds to avoid large jumps.
diff --git a/src/crepe/system/AnimatorSystem.cpp b/src/crepe/system/AnimatorSystem.cpp
index 31eb85c..107b25d 100644
--- a/src/crepe/system/AnimatorSystem.cpp
+++ b/src/crepe/system/AnimatorSystem.cpp
@@ -3,20 +3,23 @@
#include "../api/Animator.h"
#include "../manager/ComponentManager.h"
#include "../manager/LoopTimerManager.h"
+#include <chrono>
#include "AnimatorSystem.h"
using namespace crepe;
+using namespace std::chrono;
void AnimatorSystem::update() {
ComponentManager & mgr = this->mediator.component_manager;
LoopTimerManager & timer = this->mediator.loop_timer;
RefVector<Animator> animations = mgr.get_components_by_type<Animator>();
- unsigned long long elapsed_time = timer.get_elapsed_time().count();
+ float elapsed_time = duration_cast<duration<float>>(timer.get_elapsed_time()).count();
for (Animator & a : animations) {
if (!a.active) continue;
+ if (a.data.fps == 0) continue;
Animator::Data & ctx = a.data;
float frame_duration = 1.0f / ctx.fps;