45 lines
1.2 KiB
Rust
45 lines
1.2 KiB
Rust
|
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(())
|
||
|
}
|
||
|
}
|