ksys: Implement Timer

This commit is contained in:
Léo Lam
2021-01-25 15:53:03 +01:00
parent 053c200741
commit 51755635aa
3 changed files with 30 additions and 9 deletions
+21
View File
@@ -1 +1,22 @@
#include "KingSystem/System/Timer.h"
#include "KingSystem/System/VFR.h"
namespace ksys {
void Timer::update(f32* t, f32 rate) {
*t += VFR::instance()->getDeltaTime() * rate;
}
void Timer::update() {
previous_value = value;
update(&value, rate);
}
bool Timer::hasEnded(f32 end_time) const {
if (value == end_time)
return true;
return (previous_value - end_time) * (value - end_time) < 0.0;
}
} // namespace ksys
+6 -6
View File
@@ -6,21 +6,21 @@ namespace ksys {
struct Timer {
Timer() = default;
Timer(f32 value, f32 previous_value, f32 speed = -1.0)
: value(value), previous_value(previous_value), speed(speed) {}
Timer(f32 value, f32 previous_value, f32 rate = -1.0)
: value(value), previous_value(previous_value), rate(rate) {}
void reset(f32 value_, f32 speed_ = -1.0) {
void reset(f32 value_, f32 rate_ = -1.0) {
value = previous_value = value_;
speed = speed_;
rate = rate_;
}
void update();
static void update(f32& t);
static void update(f32* t, f32 rate);
bool hasEnded(f32 end_time) const;
f32 value{};
f32 previous_value{};
f32 speed{};
f32 rate{};
};
} // namespace ksys