/* Starshatter: The Open Source Project Copyright (c) 2021-2022, Starshatter: The Open Source Project Contributors Copyright (c) 2011-2012, Starshatter OpenSource Distribution Contributors Copyright (c) 1997-2006, Destroyer Studios LLC. */ #ifndef Clock_h #define Clock_h #include class Clock { public: using inner_clock = std::chrono::high_resolution_clock; using elapsed_duration = std::chrono::milliseconds; using count_type = elapsed_duration::rep; Clock(); void Set(); void Reset(); double Step(); double Delta() const; double GuiDelta() const; double TimeCompression() const; count_type GameTime() const; count_type RealTime() const; void SetTimeCompression(double compression); protected: inner_clock::time_point m_point; elapsed_duration m_game_elapsed; elapsed_duration m_real_elapsed; double m_compression; double m_delta; double m_gui_delta; }; #endif // Clock_h