summary refs log tree commit diff
path: root/src/Time.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'src/Time.cpp')
-rw-r--r--src/Time.cpp33
1 files changed, 33 insertions, 0 deletions
diff --git a/src/Time.cpp b/src/Time.cpp
new file mode 100644
index 0000000..7f59250
--- /dev/null
+++ b/src/Time.cpp
@@ -0,0 +1,33 @@
+#include "Time.hpp"
+#include <chrono>
+#include <algorithm>
+
+namespace MC {
+
+void Time::start_frame() {
+    m_current_frame_start = now();
+}
+
+void Time::end_frame() {
+    auto frame_end = now();
+    m_delta = (frame_end - m_current_frame_start) / 1000.0;
+    m_delta = std::clamp(m_delta, delta_min, delta_max);
+
+    m_total_frames++;
+}
+
+U64 Time::total_frames() const {
+    return m_total_frames;
+}
+
+Real Time::delta() const {
+    return m_delta;
+}
+
+Time::Timestamp Time::now() {
+    auto time = std::chrono::system_clock::now().time_since_epoch();
+    auto ms = std::chrono::duration_cast<std::chrono::milliseconds>(time);
+    return ms.count();
+}
+
+}