X-Git-Url: http://git.tdb.fi/?a=blobdiff_plain;f=source%2Fgame%2Fstage.cpp;h=81893e1e1ef8c27ca72db42e456c78462a999452;hb=fce6e7846814e54de9d38000d2f5e2295ee2119e;hp=83176104348538a148d667c9126fff11107e7a8b;hpb=db01a6ed506ea2352b20f10b2694e249d2bba6c5;p=libs%2Fgame.git diff --git a/source/game/stage.cpp b/source/game/stage.cpp index 8317610..81893e1 100644 --- a/source/game/stage.cpp +++ b/source/game/stage.cpp @@ -35,6 +35,22 @@ void Stage::set_active_camera(Handle c) event_source.emit(active_camera); } +void Stage::synthesize_initial_events(EventObserver &target_observer) +{ + synthesize_initial_events(Handle::from_object(root.get()), target_observer); + if(active_camera) + event_source.emit_to(target_observer, active_camera); +} + +void Stage::synthesize_initial_events(Handle entity, EventObserver &target_observer) +{ + for(Handle c: entity->get_components()) + event_source.emit_to(target_observer, c); + for(Handle e: entity->get_children()) + synthesize_initial_events(e, target_observer); + event_source.emit_to(target_observer, entity); +} + void Stage::tick(Time::TimeDelta dt) { for(const auto &s: systems)