#pragma once #include namespace td { namespace sim { using GameHistory = std::vector; class RealTimeSimulation { private: std::uint64_t m_StepTime; game::World& m_World; GameHistory m_History; std::uint64_t m_CurrentTime; std::uint64_t m_LastTime; std::size_t m_CurrentStep; public: /** * \param a_StepTime in ms */ RealTimeSimulation(game::World& a_World, GameHistory&& a_History, std::uint64_t a_StepTime); /** * \return the progress [0-1] between two steps */ float Update(); private: void Step(); }; } // namespace sim } // namespace td