#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
|