y_engine/
app.rs

1use std::sync::Arc;
2
3use winit::{
4    dpi::PhysicalPosition,
5    event::{ElementState, MouseButton, MouseScrollDelta, TouchPhase},
6    event_loop::ActiveEventLoop,
7    keyboard::Key,
8    window::Window,
9};
10
11use crate::state::common::render::RenderCore;
12
13#[allow(unused_variables)]
14pub trait App {
15    fn new(window: Arc<Window>, render_core: RenderCore) -> Box<Self>
16    where
17        Self: Sized;
18
19    // Window events
20    fn window_resized(&mut self, width: u32, height: u32) {}
21    fn window_close_requested(&mut self, winit_event_loop: &ActiveEventLoop) {}
22    fn window_redraw(&mut self) {}
23
24    // User input events
25    fn mouse_button_input(&mut self, button: MouseButton, state: ElementState) {}
26    fn mouse_wheel_input(&mut self, delta: MouseScrollDelta, phase: TouchPhase) {}
27    fn cursor_moved(&mut self, position: PhysicalPosition<f64>) {}
28    fn cursor_entered_window(&mut self) {}
29    fn cursor_left_window(&mut self) {}
30    fn keyboard_button_input(&mut self, key: Key, state: ElementState) {}
31}