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 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 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}