|
@@ -1,10 +1,12 @@
|
|
|
use std::iter;
|
|
use std::iter;
|
|
|
|
|
|
|
|
|
|
+use controller::CameraController;
|
|
|
use debug_triangle::DEBUG_VERT;
|
|
use debug_triangle::DEBUG_VERT;
|
|
|
use simple_plane::generate_jamie_plane;
|
|
use simple_plane::generate_jamie_plane;
|
|
|
use simple_plane::generate_square;
|
|
use simple_plane::generate_square;
|
|
|
use wgpu::util::DeviceExt;
|
|
use wgpu::util::DeviceExt;
|
|
|
|
|
|
|
|
|
|
+mod controller;
|
|
|
mod vertex;
|
|
mod vertex;
|
|
|
use vertex::Vertex;
|
|
use vertex::Vertex;
|
|
|
mod simple_plane;
|
|
mod simple_plane;
|
|
@@ -116,6 +118,7 @@ struct State<'a> {
|
|
|
camera_uniform: CameraUniform,
|
|
camera_uniform: CameraUniform,
|
|
|
camera_buffer: wgpu::Buffer,
|
|
camera_buffer: wgpu::Buffer,
|
|
|
camera_bind_group: wgpu::BindGroup,
|
|
camera_bind_group: wgpu::BindGroup,
|
|
|
|
|
+ camera_controller: CameraController,
|
|
|
}
|
|
}
|
|
|
|
|
|
|
|
impl<'a> State<'a> {
|
|
impl<'a> State<'a> {
|
|
@@ -379,6 +382,8 @@ impl<'a> State<'a> {
|
|
|
|
|
|
|
|
let num_vertices = vert.len() as u32;
|
|
let num_vertices = vert.len() as u32;
|
|
|
//let num_indices = indices.len() as u32;
|
|
//let num_indices = indices.len() as u32;
|
|
|
|
|
+
|
|
|
|
|
+ let camera_controller = CameraController::new(0.2);
|
|
|
Self {
|
|
Self {
|
|
|
surface,
|
|
surface,
|
|
|
device,
|
|
device,
|
|
@@ -398,6 +403,7 @@ impl<'a> State<'a> {
|
|
|
camera_uniform,
|
|
camera_uniform,
|
|
|
camera_buffer,
|
|
camera_buffer,
|
|
|
camera_bind_group,
|
|
camera_bind_group,
|
|
|
|
|
+ camera_controller,
|
|
|
}
|
|
}
|
|
|
}
|
|
}
|
|
|
|
|
|
|
@@ -416,10 +422,14 @@ impl<'a> State<'a> {
|
|
|
|
|
|
|
|
#[allow(unused_variables)]
|
|
#[allow(unused_variables)]
|
|
|
fn input(&mut self, event: &WindowEvent) -> bool {
|
|
fn input(&mut self, event: &WindowEvent) -> bool {
|
|
|
- false
|
|
|
|
|
|
|
+ self.camera_controller.process_events(event)
|
|
|
}
|
|
}
|
|
|
|
|
|
|
|
- fn update(&mut self) {}
|
|
|
|
|
|
|
+ fn update(&mut self) {
|
|
|
|
|
+ self.camera_controller.update_camera(&mut self.camera);
|
|
|
|
|
+ self.camera_uniform.update_view_proj(&self.camera);
|
|
|
|
|
+ self.queue.write_buffer(&self.camera_buffer, 0, bytemuck::cast_slice(&[self.camera_uniform]));
|
|
|
|
|
+ }
|
|
|
|
|
|
|
|
fn render(&mut self) -> Result<(), wgpu::SurfaceError> {
|
|
fn render(&mut self) -> Result<(), wgpu::SurfaceError> {
|
|
|
let output = self.surface.get_current_texture()?;
|
|
let output = self.surface.get_current_texture()?;
|