core: move to steady_clock where applicable

avoid issues when system clock gets desynchronized or changed
This commit is contained in:
Vaxry 2024-06-25 16:05:39 +02:00
parent 918d8340af
commit 1d70962892
10 changed files with 31 additions and 31 deletions

View file

@ -57,11 +57,11 @@ void CBaseAnimatedVariable::registerVar() {
int CBaseAnimatedVariable::getDurationLeftMs() {
return std::max(
(int)(m_pConfig->pValues->internalSpeed * 100) - (int)std::chrono::duration_cast<std::chrono::milliseconds>(std::chrono::system_clock::now() - animationBegin).count(), 0);
(int)(m_pConfig->pValues->internalSpeed * 100) - (int)std::chrono::duration_cast<std::chrono::milliseconds>(std::chrono::steady_clock::now() - animationBegin).count(), 0);
}
float CBaseAnimatedVariable::getPercent() {
const auto DURATIONPASSED = std::chrono::duration_cast<std::chrono::milliseconds>(std::chrono::system_clock::now() - animationBegin).count();
const auto DURATIONPASSED = std::chrono::duration_cast<std::chrono::milliseconds>(std::chrono::steady_clock::now() - animationBegin).count();
return std::clamp((DURATIONPASSED / 100.f) / m_pConfig->pValues->internalSpeed, 0.f, 1.f);
}

View file

@ -155,7 +155,7 @@ class CBaseAnimatedVariable {
bool m_bIsRegistered = false;
bool m_bIsBeingAnimated = false;
std::chrono::system_clock::time_point animationBegin;
std::chrono::steady_clock::time_point animationBegin;
AVARDAMAGEPOLICY m_eDamagePolicy = AVARDAMAGE_NONE;
ANIMATEDVARTYPE m_Type;
@ -253,7 +253,7 @@ class CAnimatedVariable : public CBaseAnimatedVariable {
return *this;
m_Goal = v;
animationBegin = std::chrono::system_clock::now();
animationBegin = std::chrono::steady_clock::now();
m_Begun = m_Value;
onAnimationBegin();
@ -267,7 +267,7 @@ class CAnimatedVariable : public CBaseAnimatedVariable {
return;
m_Value = v;
animationBegin = std::chrono::system_clock::now();
animationBegin = std::chrono::steady_clock::now();
m_Begun = m_Value;
onAnimationBegin();

View file

@ -1,11 +1,11 @@
#include "Timer.hpp"
void CTimer::reset() {
m_tpLastReset = std::chrono::system_clock::now();
m_tpLastReset = std::chrono::steady_clock::now();
}
std::chrono::system_clock::duration CTimer::getDuration() {
return std::chrono::system_clock::now() - m_tpLastReset;
std::chrono::steady_clock::duration CTimer::getDuration() {
return std::chrono::steady_clock::now() - m_tpLastReset;
}
int CTimer::getMillis() {
@ -16,6 +16,6 @@ float CTimer::getSeconds() {
return std::chrono::duration_cast<std::chrono::milliseconds>(getDuration()).count() / 1000.f;
}
const std::chrono::system_clock::time_point& CTimer::chrono() const {
const std::chrono::steady_clock::time_point& CTimer::chrono() const {
return m_tpLastReset;
}

View file

@ -7,10 +7,10 @@ class CTimer {
void reset();
float getSeconds();
int getMillis();
const std::chrono::system_clock::time_point& chrono() const;
const std::chrono::steady_clock::time_point& chrono() const;
private:
std::chrono::system_clock::time_point m_tpLastReset;
std::chrono::steady_clock::time_point m_tpLastReset;
std::chrono::system_clock::duration getDuration();
std::chrono::steady_clock::duration getDuration();
};