engine/examples/free_space/src/game.rs

45 lines
1.2 KiB
Rust
Raw Normal View History

2025-03-11 12:49:23 +00:00
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::<FreeCameraControl>();
camera_control.mouse_down();
}
EngineEvent::MouseButtonUp(MouseButton::Left) => {
let camera_control = world.resources.get_mut::<FreeCameraControl>();
camera_control.mouse_release();
}
EngineEvent::MouseMotion(x, y) => {
let mut resources = world.resources.multi_mut();
let scene = resources.get::<Scene>();
let camera_control = resources.get::<FreeCameraControl>();
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(())
}
}