Remove some unused stuff and and better handling for cursor visibility
parent
9a03b4a36c
commit
6fe6604c35
|
@ -15,7 +15,6 @@ pub struct Camera {
|
||||||
pub eye: cgmath::Point3<f32>,
|
pub eye: cgmath::Point3<f32>,
|
||||||
pub target: cgmath::Point3<f32>,
|
pub target: cgmath::Point3<f32>,
|
||||||
pub up: cgmath::Vector3<f32>,
|
pub up: cgmath::Vector3<f32>,
|
||||||
aspect: f32,
|
|
||||||
fovy: f32,
|
fovy: f32,
|
||||||
znear: f32,
|
znear: f32,
|
||||||
zfar: f32,
|
zfar: f32,
|
||||||
|
@ -29,12 +28,11 @@ pub struct CameraInfo {
|
||||||
}
|
}
|
||||||
|
|
||||||
impl Camera {
|
impl Camera {
|
||||||
pub fn new(config: &wgpu::SurfaceConfiguration, device: &wgpu::Device) -> (Self, CameraInfo) {
|
pub fn new(device: &wgpu::Device) -> (Self, CameraInfo) {
|
||||||
let camera = Self {
|
let camera = Self {
|
||||||
eye: (0.0, 0.0, DEFAULT_CAMERA_ZOOM).into(),
|
eye: (0.0, 0.0, DEFAULT_CAMERA_ZOOM).into(),
|
||||||
target: (0.0, 0.0, 0.0).into(),
|
target: (0.0, 0.0, 0.0).into(),
|
||||||
up: cgmath::Vector3::unit_y(),
|
up: cgmath::Vector3::unit_y(),
|
||||||
aspect: config.width as f32 / config.height as f32,
|
|
||||||
fovy: 45.0,
|
fovy: 45.0,
|
||||||
znear: 0.1,
|
znear: 0.1,
|
||||||
zfar: 100.0,
|
zfar: 100.0,
|
||||||
|
|
|
@ -1,3 +1,5 @@
|
||||||
|
use std::sync::Arc;
|
||||||
|
|
||||||
use wgpu::util::DeviceExt;
|
use wgpu::util::DeviceExt;
|
||||||
use winit::{
|
use winit::{
|
||||||
event::{ElementState, MouseScrollDelta, WindowEvent},
|
event::{ElementState, MouseScrollDelta, WindowEvent},
|
||||||
|
@ -7,6 +9,8 @@ use winit::{
|
||||||
use crate::controller::CameraController;
|
use crate::controller::CameraController;
|
||||||
|
|
||||||
pub struct Spotlight {
|
pub struct Spotlight {
|
||||||
|
window: Arc<winit::window::Window>,
|
||||||
|
|
||||||
cursor_position: (f32, f32),
|
cursor_position: (f32, f32),
|
||||||
size: f32,
|
size: f32,
|
||||||
|
|
||||||
|
@ -21,8 +25,10 @@ pub struct SpotlightInfo {
|
||||||
}
|
}
|
||||||
|
|
||||||
impl Spotlight {
|
impl Spotlight {
|
||||||
pub fn new(device: &wgpu::Device) -> (Self, SpotlightInfo) {
|
pub fn new(device: &wgpu::Device, window: Arc<winit::window::Window>) -> (Self, SpotlightInfo) {
|
||||||
let spotlight = Self {
|
let spotlight = Self {
|
||||||
|
window,
|
||||||
|
|
||||||
cursor_position: (960.0, 540.0),
|
cursor_position: (960.0, 540.0),
|
||||||
size: 50.0,
|
size: 50.0,
|
||||||
|
|
||||||
|
@ -83,10 +89,19 @@ impl Spotlight {
|
||||||
}
|
}
|
||||||
WindowEvent::KeyboardInput { event, .. } => {
|
WindowEvent::KeyboardInput { event, .. } => {
|
||||||
self.is_ctrl_pressed = false;
|
self.is_ctrl_pressed = false;
|
||||||
if event.state == ElementState::Pressed {
|
let key = &event.logical_key;
|
||||||
let key = &event.logical_key;
|
match event.state {
|
||||||
if let Key::Named(NamedKey::Control) = key {
|
ElementState::Pressed => {
|
||||||
self.is_ctrl_pressed = true;
|
if let Key::Named(NamedKey::Control) = key {
|
||||||
|
self.is_ctrl_pressed = true;
|
||||||
|
self.window.set_cursor_visible(false);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
ElementState::Released => {
|
||||||
|
if let Key::Named(NamedKey::Control) = key {
|
||||||
|
self.is_ctrl_pressed = false;
|
||||||
|
self.window.set_cursor_visible(true);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -101,9 +116,7 @@ impl Spotlight {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
pub fn update(&mut self, window: &winit::window::Window) {
|
pub fn update(&mut self) {}
|
||||||
window.set_cursor_visible(!self.is_ctrl_pressed);
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
#[repr(C)]
|
#[repr(C)]
|
||||||
|
|
|
@ -62,7 +62,6 @@ pub struct State<'a> {
|
||||||
pub spotlight_info: SpotlightInfo,
|
pub spotlight_info: SpotlightInfo,
|
||||||
pub zoom: f32,
|
pub zoom: f32,
|
||||||
pub camera_controller: CameraController,
|
pub camera_controller: CameraController,
|
||||||
hide_cursor: bool,
|
|
||||||
}
|
}
|
||||||
|
|
||||||
impl<'a> State<'a> {
|
impl<'a> State<'a> {
|
||||||
|
@ -118,10 +117,10 @@ impl<'a> State<'a> {
|
||||||
desired_maximum_frame_latency: 2,
|
desired_maximum_frame_latency: 2,
|
||||||
};
|
};
|
||||||
|
|
||||||
let (camera, camera_info) = Camera::new(&config, &device);
|
let (camera, camera_info) = Camera::new(&device);
|
||||||
let camera_controller = CameraController::new(ZOOM_SPEED, MOVE_SPEED);
|
let camera_controller = CameraController::new(ZOOM_SPEED, MOVE_SPEED);
|
||||||
|
|
||||||
let (spotlight, spotlight_info) = Spotlight::new(&device);
|
let (spotlight, spotlight_info) = Spotlight::new(&device, window.clone());
|
||||||
|
|
||||||
let shader = device.create_shader_module(wgpu::include_wgsl!("shader.wgsl"));
|
let shader = device.create_shader_module(wgpu::include_wgsl!("shader.wgsl"));
|
||||||
|
|
||||||
|
@ -205,7 +204,6 @@ impl<'a> State<'a> {
|
||||||
spotlight_info,
|
spotlight_info,
|
||||||
camera_controller,
|
camera_controller,
|
||||||
zoom: 1.0,
|
zoom: 1.0,
|
||||||
hide_cursor: false,
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -252,7 +250,7 @@ impl<'a> State<'a> {
|
||||||
bytemuck::cast_slice(&[self.camera_info.uniform]),
|
bytemuck::cast_slice(&[self.camera_info.uniform]),
|
||||||
);
|
);
|
||||||
|
|
||||||
self.spotlight.update(&self.window);
|
self.spotlight.update();
|
||||||
self.spotlight_info
|
self.spotlight_info
|
||||||
.uniform
|
.uniform
|
||||||
.update(&self.spotlight, &self.camera_controller);
|
.update(&self.spotlight, &self.camera_controller);
|
||||||
|
|
|
@ -1,5 +1,3 @@
|
||||||
use image::GenericImageView;
|
|
||||||
|
|
||||||
pub struct Texture {
|
pub struct Texture {
|
||||||
pub layout: wgpu::BindGroupLayout,
|
pub layout: wgpu::BindGroupLayout,
|
||||||
pub bind_group: wgpu::BindGroup,
|
pub bind_group: wgpu::BindGroup,
|
||||||
|
|
Loading…
Reference in New Issue