]> git.tdb.fi Git - libs/game.git/blob - source/game/director.cpp
741965bc290988a7f73210bf453d5cb081533f98
[libs/game.git] / source / game / director.cpp
1 #include "director.h"
2 #include <stdexcept>
3 #include <msp/time/utils.h>
4 #include "stage.h"
5
6 using namespace std;
7
8 namespace Msp::Game {
9
10 Stage &Director::create_stage()
11 {
12         stages.emplace_back(std::make_unique<Stage>());
13         return *stages.back();
14 }
15
16 void Director::tick()
17 {
18         Time::TimeStamp now = Time::now();
19         Time::TimeDelta dt = (last_tick ? now-last_tick : Time::zero);
20         last_tick = now;
21
22         backlog = min(backlog+dt, stepsize*max_backlog_steps);
23         for(unsigned i=0; (i<max_steps_per_frame && backlog>=stepsize); ++i, backlog-=stepsize)
24                 for(const auto &s: stages)
25                         s->tick(stepsize);
26 }
27
28 } // namespace Msp::Game