use anyhow::Result; use ecs::*; use engine::prelude::*; pub struct Game; impl Game { pub fn update(&mut self, _world: &mut World) -> Result<()> { Ok(()) } pub fn event(&mut self, world: &mut World, event: EngineEvent<'_>) -> Result<()> { match event { EngineEvent::MouseButtonDown(MouseButton::Left) => { let camera_control = world.resources.get_mut::(); camera_control.mouse_down(); } EngineEvent::MouseButtonUp(MouseButton::Left) => { let camera_control = world.resources.get_mut::(); camera_control.mouse_release(); } EngineEvent::MouseMotion(x, y) => { let mut resources = world.resources.multi_mut(); let scene = resources.get::(); let camera_control = resources.get::(); camera_control.mouse_move(x, y, scene.view_mut())?; } _ => (), } Ok(()) } } impl Game { pub fn setup_updates(world_builder: &mut WorldBuilder) -> Result<()> { world_builder.add_update(name, priority, func, filter)?; Ok(()) } }