+void Renderer::entity_created(const Game::Events::EntityCreated &event)
+{
+ Game::Handle<Game::MeshSource> mesh_source = event.entity->get_component<Game::MeshSource>();
+ Game::Handle<MeshRenderer> mesh_renderer = event.entity->get_component<MeshRenderer>();
+ if(mesh_source && !mesh_renderer)
+ {
+ auto i = lower_bound_member(entities, event.entity, &RenderedEntity::entity);
+ i = entities.emplace(i, event.entity, Game::Owned<MeshRenderer>(event.entity, mesh_source));
+ scene.add(i->mesh_renderer->get_instance());
+ }
+}
+
+void Renderer::entity_destroyed(const Game::Events::EntityDestroyed &event)
+{
+ auto i = lower_bound_member(entities, event.entity, &RenderedEntity::entity);
+ if(i!=entities.end() && i->entity==event.entity)
+ {
+ scene.remove(i->mesh_renderer->get_instance());
+ entities.erase(i);
+ }
+}
+