Skip to content

Commit

Permalink
Update winit to 0.29.10
Browse files Browse the repository at this point in the history
  • Loading branch information
patowen authored and Ralith committed Feb 24, 2024
1 parent 6392ee8 commit d3c4cd1
Show file tree
Hide file tree
Showing 2 changed files with 68 additions and 64 deletions.
4 changes: 2 additions & 2 deletions client/Cargo.toml
Original file line number Diff line number Diff line change
Expand Up @@ -14,9 +14,9 @@ server = { path = "../server" }
tracing = "0.1.10"
ash = { version = "0.37.1", features = ["loaded"] }
lahar = { git = "https://github.com/Ralith/lahar", rev = "88abd75e41d04c3a4199d95f581cb135f5962844" }
winit = "0.28.1"
winit = { version = "0.29.10", features = ["rwh_05"] }
ash-window = "0.12.0"
raw-window-handle = "0.5.0"
raw-window-handle = { version = "0.5.0", features = ["std"] }
directories = "5.0.1"
vk-shader-macros = "0.2.5"
nalgebra = { workspace = true }
Expand Down
128 changes: 66 additions & 62 deletions client/src/graphics/window.rs
Original file line number Diff line number Diff line change
Expand Up @@ -6,12 +6,12 @@ use ash::{extensions::khr, vk};
use lahar::DedicatedImage;
use raw_window_handle::{HasRawDisplayHandle, HasRawWindowHandle};
use tracing::{error, info};
use winit::event::KeyEvent;
use winit::keyboard::{KeyCode, PhysicalKey};
use winit::{
dpi::PhysicalSize,
event::{
DeviceEvent, ElementState, Event, KeyboardInput, MouseButton, VirtualKeyCode, WindowEvent,
},
event_loop::{ControlFlow, EventLoop},
event::{DeviceEvent, ElementState, Event, MouseButton, WindowEvent},
event_loop::EventLoop,
window::{CursorGrabMode, Window as WinitWindow, WindowBuilder},
};

Expand All @@ -27,7 +27,7 @@ pub struct EarlyWindow {

impl EarlyWindow {
pub fn new() -> Self {
let event_loop = EventLoop::new();
let event_loop = EventLoop::new().unwrap();
let window = WindowBuilder::new()
.with_title("hypermine")
.build(&event_loop)
Expand Down Expand Up @@ -105,7 +105,7 @@ impl Window {
}

/// Run the event loop until process exit
pub fn run(mut self, gfx: Arc<Base>) -> ! {
pub fn run(mut self, gfx: Arc<Base>) {
// Allocate the presentable images we'll be rendering to
self.swapchain = Some(SwapchainMgr::new(
&self,
Expand All @@ -128,34 +128,9 @@ impl Window {
self.event_loop
.take()
.unwrap()
.run(move |event, _, control_flow| match event {
Event::MainEventsCleared => {
while let Ok(msg) = self.net.incoming.try_recv() {
self.handle_net(msg);
}

if let Some(sim) = self.sim.as_mut() {
let this_frame = Instant::now();
let dt = this_frame - last_frame;
sim.set_movement_input(na::Vector3::new(
right as u8 as f32 - left as u8 as f32,
up as u8 as f32 - down as u8 as f32,
back as u8 as f32 - forward as u8 as f32,
));
sim.set_jump_held(jump);

sim.look(
0.0,
0.0,
2.0 * (anticlockwise as u8 as f32 - clockwise as u8 as f32)
* dt.as_secs_f32(),
);

sim.step(dt, &mut self.net);
last_frame = this_frame;
}

self.draw();
.run(move |event, window_target| match event {
Event::AboutToWait => {
self.window.request_redraw();
}
Event::DeviceEvent { event, .. } => match event {
DeviceEvent::MouseMotion { delta } if mouse_captured => {
Expand All @@ -171,6 +146,34 @@ impl Window {
_ => {}
},
Event::WindowEvent { event, .. } => match event {
WindowEvent::RedrawRequested => {
while let Ok(msg) = self.net.incoming.try_recv() {
self.handle_net(msg);
}

if let Some(sim) = self.sim.as_mut() {
let this_frame = Instant::now();
let dt = this_frame - last_frame;
sim.set_movement_input(na::Vector3::new(
right as u8 as f32 - left as u8 as f32,
up as u8 as f32 - down as u8 as f32,
back as u8 as f32 - forward as u8 as f32,
));
sim.set_jump_held(jump);

sim.look(
0.0,
0.0,
2.0 * (anticlockwise as u8 as f32 - clockwise as u8 as f32)
* dt.as_secs_f32(),
);

sim.step(dt, &mut self.net);
last_frame = this_frame;
}

self.draw();
}
WindowEvent::Resized(_) => {
// Some environments may not emit the vulkan signals that recommend or
// require surface reconstruction, so we need to check for messages from the
Expand All @@ -180,7 +183,7 @@ impl Window {
}
WindowEvent::CloseRequested => {
info!("exiting due to closed window");
*control_flow = ControlFlow::Exit;
window_target.exit();
}
WindowEvent::MouseInput {
button: MouseButton::Left,
Expand Down Expand Up @@ -211,52 +214,52 @@ impl Window {
}
}
WindowEvent::KeyboardInput {
input:
KeyboardInput {
event:
KeyEvent {
state,
virtual_keycode: Some(key),
physical_key: PhysicalKey::Code(key),
..
},
..
} => match key {
VirtualKeyCode::W => {
KeyCode::KeyW => {
forward = state == ElementState::Pressed;
}
VirtualKeyCode::A => {
KeyCode::KeyA => {
left = state == ElementState::Pressed;
}
VirtualKeyCode::S => {
KeyCode::KeyS => {
back = state == ElementState::Pressed;
}
VirtualKeyCode::D => {
KeyCode::KeyD => {
right = state == ElementState::Pressed;
}
VirtualKeyCode::Q => {
KeyCode::KeyQ => {
anticlockwise = state == ElementState::Pressed;
}
VirtualKeyCode::E => {
KeyCode::KeyE => {
clockwise = state == ElementState::Pressed;
}
VirtualKeyCode::R => {
KeyCode::KeyR => {
up = state == ElementState::Pressed;
}
VirtualKeyCode::F => {
KeyCode::KeyF => {
down = state == ElementState::Pressed;
}
VirtualKeyCode::Space => {
KeyCode::Space => {
if let Some(sim) = self.sim.as_mut() {
if !jump && state == ElementState::Pressed {
sim.set_jump_pressed_true();
}
jump = state == ElementState::Pressed;
}
}
VirtualKeyCode::V if state == ElementState::Pressed => {
KeyCode::KeyV if state == ElementState::Pressed => {
if let Some(sim) = self.sim.as_mut() {
sim.toggle_no_clip();
}
}
VirtualKeyCode::Escape => {
KeyCode::Escape => {
let _ = self.window.set_cursor_grab(CursorGrabMode::None);
self.window.set_cursor_visible(true);
mouse_captured = false;
Expand All @@ -280,11 +283,12 @@ impl Window {
}
_ => {}
},
Event::LoopDestroyed => {
Event::LoopExiting => {
self.metrics.report();
}
_ => {}
});
})
.unwrap();
}

fn handle_net(&mut self, msg: net::Message) {
Expand Down Expand Up @@ -364,18 +368,18 @@ impl Window {
}
}

fn number_key_to_index(key: VirtualKeyCode) -> Option<usize> {
fn number_key_to_index(key: KeyCode) -> Option<usize> {
match key {
VirtualKeyCode::Key1 => Some(0),
VirtualKeyCode::Key2 => Some(1),
VirtualKeyCode::Key3 => Some(2),
VirtualKeyCode::Key4 => Some(3),
VirtualKeyCode::Key5 => Some(4),
VirtualKeyCode::Key6 => Some(5),
VirtualKeyCode::Key7 => Some(6),
VirtualKeyCode::Key8 => Some(7),
VirtualKeyCode::Key9 => Some(8),
VirtualKeyCode::Key0 => Some(9),
KeyCode::Digit1 => Some(0),
KeyCode::Digit2 => Some(1),
KeyCode::Digit3 => Some(2),
KeyCode::Digit4 => Some(3),
KeyCode::Digit5 => Some(4),
KeyCode::Digit6 => Some(5),
KeyCode::Digit7 => Some(6),
KeyCode::Digit8 => Some(7),
KeyCode::Digit9 => Some(8),
KeyCode::Digit0 => Some(9),
_ => None,
}
}
Expand Down

0 comments on commit d3c4cd1

Please sign in to comment.