Skip to main content

oxide_engine/
event.rs

1//! Event types for the engine
2
3use winit::event::WindowEvent;
4
5#[derive(Debug, Clone)]
6pub enum EngineEvent {
7    Resized { width: u32, height: u32 },
8    ScaleFactorChanged { scale_factor: f64 },
9    CloseRequested,
10    Destroyed,
11    Focused(bool),
12}
13
14pub fn window_event_to_engine(event: &WindowEvent) -> Option<EngineEvent> {
15    match event {
16        WindowEvent::Resized(size) => Some(EngineEvent::Resized {
17            width: size.width,
18            height: size.height,
19        }),
20        WindowEvent::ScaleFactorChanged { scale_factor, .. } => {
21            Some(EngineEvent::ScaleFactorChanged {
22                scale_factor: *scale_factor,
23            })
24        }
25        WindowEvent::CloseRequested => Some(EngineEvent::CloseRequested),
26        WindowEvent::Destroyed => Some(EngineEvent::Destroyed),
27        WindowEvent::Focused(focused) => Some(EngineEvent::Focused(*focused)),
28        _ => None,
29    }
30}