project structure cleanup

This commit is contained in:
Piotrek
2021-04-16 10:54:00 +02:00
parent 9cd599743d
commit 3ad54777cd
8 changed files with 107 additions and 97 deletions
+60
View File
@@ -0,0 +1,60 @@
use winit::{
event::{Event, WindowEvent, KeyboardInput, ElementState, VirtualKeyCode, MouseButton},
window::Window
};
use std::sync::Arc;
mod camera_controller; use camera_controller::CameraController;
use crate::renderer::Renderer;
pub struct App {
pub window: Window,
pub renderer: Renderer,
camera_controller: CameraController,
}
impl App {
pub fn new(window: Window, renderer: Renderer) -> Self {
let camera_controller = CameraController::new();
Self { window, renderer, camera_controller }
}
pub fn input(&mut self, event: Arc<Event<()>>) {
match event.as_ref() {
Event::WindowEvent { ref event, .. } => {
match event {
// Escape key
WindowEvent::KeyboardInput { input: KeyboardInput { state: ElementState::Pressed, virtual_keycode: Some(VirtualKeyCode::Escape), .. }, .. } => {
self.window.set_cursor_grab(false).unwrap();
self.window.set_cursor_visible(true);
self.camera_controller.set_enabled(false);
}
// Window clicked
WindowEvent::MouseInput { state: ElementState::Pressed, button: MouseButton::Left, .. } => {
self.window.set_cursor_grab(true).unwrap();
self.window.set_cursor_visible(false);
self.camera_controller.set_enabled(true);
}
// Window resized
WindowEvent::Resized(physical_size) => {
self.renderer.resize(Some(*physical_size));
}
WindowEvent::ScaleFactorChanged { new_inner_size, .. } => {
self.renderer.resize(Some(**new_inner_size));
}
_ => ()
}
}
_ => ()
}
// Update camera controller
self.camera_controller.handle_input(event.as_ref());
}
pub fn update(&mut self, delta: f32) {
self.camera_controller.update_camera(&mut self.renderer.camera, delta);
}
}