diff options
-rw-r--r-- | Stars45/Clock.cpp | 49 | ||||
-rw-r--r-- | 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 <chrono> +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<double> 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; }; |