+void Stage::synthesize_initial_events(EventObserver &target_observer)
+{
+ synthesize_initial_events(Handle<Entity>::from_object(root.get()), target_observer);
+ if(active_camera)
+ event_source.emit_to<Events::CameraChanged>(target_observer, active_camera);
+}
+
+void Stage::synthesize_initial_events(Handle<Entity> entity, EventObserver &target_observer)
+{
+ for(Handle<Component> c: entity->get_components())
+ event_source.emit_to<Events::ComponentCreated>(target_observer, c);
+ for(Handle<Entity> e: entity->get_children())
+ synthesize_initial_events(e, target_observer);
+ event_source.emit_to<Events::EntityCreated>(target_observer, entity);
+}
+