summaryrefslogtreecommitdiffhomepage
diff options
context:
space:
mode:
-rw-r--r--Stars45/Clock.cpp49
-rw-r--r--Stars45/Clock.h10
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;
};