core: move to steady_clock where applicable
avoid issues when system clock gets desynchronized or changed
This commit is contained in:
parent
918d8340af
commit
1d70962892
10 changed files with 31 additions and 31 deletions
|
|
@ -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);
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -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();
|
||||
|
|
|
|||
|
|
@ -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;
|
||||
}
|
||||
|
|
@ -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();
|
||||
};
|
||||
Loading…
Add table
Add a link
Reference in a new issue