From c8454e077864345833015a03ca6746bd54662642 Mon Sep 17 00:00:00 2001 From: Aki Date: Wed, 2 Mar 2022 20:25:47 +0100 Subject: Extended new clock with some utility methods --- Stars45/Clock.cpp | 49 ++++++++++++++++++++++++++++++++++++++++++++++--- Stars45/Clock.h | 10 ++++++++++ 2 files changed, 56 insertions(+), 3 deletions(-) diff --git a/Stars45/Clock.cpp b/Stars45/Clock.cpp index 6e3ec3f..8fd4f95 100644 --- a/Stars45/Clock.cpp +++ b/Stars45/Clock.cpp @@ -8,11 +8,24 @@ #include +static constexpr double NO_COMPRESSION {1.0}; +static constexpr double STARTING_DELTA {1.0 / 60.0}; + Clock::Clock() : - m_point {inner_clock::now()}, - m_compression {1.0} + m_epoch {inner_clock::now()} +{ + Reset(); +} + + +void +Clock::Reset() { + m_point = inner_clock::now(); + m_compression = NO_COMPRESSION; + m_delta = STARTING_DELTA; + m_gui_delta = STARTING_DELTA; } @@ -22,5 +35,35 @@ Clock::Step() const auto next = inner_clock::now(); const std::chrono::duration delta = next - m_point; m_point = next; - return delta.count() * m_compression; + m_delta = delta.count() * m_compression; + m_gui_delta = delta.count(); + return m_delta; +} + + +double +Clock::Delta() const +{ + return m_delta; +} + + +double +Clock::GuiDelta() const +{ + return m_gui_delta; +} + + +void +Clock::SetTimeCompression(double compression) +{ + m_compression = compression; +} + + +double +Clock::TimeCompression() const +{ + return m_compression; } diff --git a/Stars45/Clock.h b/Stars45/Clock.h index e82315a..a0b3c4f 100644 --- a/Stars45/Clock.h +++ b/Stars45/Clock.h @@ -15,12 +15,22 @@ class Clock public: Clock(); + void Reset(); double Step(); + double Delta() const; + double GuiDelta() const; + + void SetTimeCompression(double compression); + double TimeCompression() const; + protected: using inner_clock = std::chrono::high_resolution_clock; + inner_clock::time_point m_epoch; inner_clock::time_point m_point; double m_compression; + double m_delta; + double m_gui_delta; }; -- cgit v1.1