3 #include <msp/time/utils.h>
12 Director::Director(DataFile::Collection &r):
14 event_source(event_bus)
17 access_guard.emplace();
20 reflector.get_or_create_class<Entity>().set_polymorphic_base<Entity>();
21 reflector.get_or_create_class<Component>().set_polymorphic_base<Component>();
24 // Hide ~unique_ptr<Stage> from the header
28 Stage &Director::create_stage()
30 stages.emplace_back(std::make_unique<Stage>(std::ref(reflector), std::ref(resources)));
31 event_source.emit<Events::StageCreated>(std::ref(*stages.back()));
32 return *stages.back();
35 void Director::activate_stage(Stage &s)
38 event_source.emit<Events::StageDeactivated>(std::ref(s));
40 event_source.emit<Events::StageActivated>(std::ref(s));
45 Time::TimeStamp now = Time::now();
46 Time::TimeDelta dt = (last_tick ? now-last_tick : Time::zero);
49 backlog = min(backlog+dt, stepsize*max_backlog_steps);
50 for(unsigned i=0; (i<max_steps_per_frame && backlog>=stepsize); ++i, backlog-=stepsize)
51 for(const auto &s: stages)
55 } // namespace Msp::Game