10 Stage::Stage(DataFile::Collection &r):
12 event_source(event_bus),
13 event_observer(event_bus),
14 root(std::make_unique<Root>(*this))
16 event_observer.observe<Events::ComponentCreated>([this](auto &e){
18 if(Handle<Camera> camera = dynamic_handle_cast<Camera>(e.component))
19 set_active_camera(camera);
23 // Hide unique_ptr destructors from the header
27 void Stage::remove_system(System &s)
29 erase_if(systems, [&s](auto &p){ return p.get()==&s; });
32 void Stage::set_active_camera(Handle<Camera> c)
35 event_source.emit<Events::CameraChanged>(active_camera);
38 void Stage::tick(Time::TimeDelta dt)
40 for(const auto &s: systems)
44 } // namespace Msp::Game