From 16183c02e331a3b1b510783b3680f7c69c0051c3 Mon Sep 17 00:00:00 2001 From: Jonah Henriksson <33059163+JonahPlusPlus@users.noreply.github.com> Date: Tue, 2 Aug 2022 22:56:45 -0400 Subject: [PATCH 1/2] Matched windows and formatted code --- src/lib.rs | 92 +++++++++++++++++++++++++++++++----------------------- 1 file changed, 53 insertions(+), 39 deletions(-) diff --git a/src/lib.rs b/src/lib.rs index d3d11ec..0b20e36 100644 --- a/src/lib.rs +++ b/src/lib.rs @@ -37,7 +37,11 @@ fn toggle_grab_cursor(window: &mut Window) { /// Grabs the cursor when game first starts fn initial_grab_cursor(mut windows: ResMut) { - toggle_grab_cursor(windows.get_primary_mut().unwrap()); + if let Some(window) = windows.get_primary_mut() { + toggle_grab_cursor(window); + } else { + warn!("Primary window not found!"); + } } /// Spawns the `Camera3dBundle` to be controlled @@ -58,30 +62,33 @@ fn player_move( settings: Res, mut query: Query<&mut Transform, With>, ) { - let window = windows.get_primary().unwrap(); - for mut transform in query.iter_mut() { - let mut velocity = Vec3::ZERO; - let local_z = transform.local_z(); - let forward = -Vec3::new(local_z.x, 0., local_z.z); - let right = Vec3::new(local_z.z, 0., -local_z.x); - - for key in keys.get_pressed() { - if window.cursor_locked() { - match key { - KeyCode::W => velocity += forward, - KeyCode::S => velocity -= forward, - KeyCode::A => velocity -= right, - KeyCode::D => velocity += right, - KeyCode::Space => velocity += Vec3::Y, - KeyCode::LShift => velocity -= Vec3::Y, - _ => (), + if let Some(window) = windows.get_primary() { + for mut transform in query.iter_mut() { + let mut velocity = Vec3::ZERO; + let local_z = transform.local_z(); + let forward = -Vec3::new(local_z.x, 0., local_z.z); + let right = Vec3::new(local_z.z, 0., -local_z.x); + + for key in keys.get_pressed() { + if window.cursor_locked() { + match key { + KeyCode::W => velocity += forward, + KeyCode::S => velocity -= forward, + KeyCode::A => velocity -= right, + KeyCode::D => velocity += right, + KeyCode::Space => velocity += Vec3::Y, + KeyCode::LShift => velocity -= Vec3::Y, + _ => (), + } } } - } - velocity = velocity.normalize_or_zero(); + velocity = velocity.normalize_or_zero(); - transform.translation += velocity * time.delta_seconds() * settings.speed + transform.translation += velocity * time.delta_seconds() * settings.speed + } + } else { + warn!("Primary window not found!"); } } @@ -93,31 +100,38 @@ fn player_look( motion: Res>, mut query: Query<&mut Transform, With>, ) { - let window = windows.get_primary().unwrap(); - let mut delta_state = state.as_mut(); - for mut transform in query.iter_mut() { - for ev in delta_state.reader_motion.iter(&motion) { - if window.cursor_locked() { - // Using smallest of height or width ensures equal vertical and horizontal sensitivity - let window_scale = window.height().min(window.width()); - delta_state.pitch -= - (settings.sensitivity * ev.delta.y * window_scale).to_radians(); - delta_state.yaw -= (settings.sensitivity * ev.delta.x * window_scale).to_radians(); - } + if let Some(window) = windows.get_primary() { + let mut delta_state = state.as_mut(); + for mut transform in query.iter_mut() { + for ev in delta_state.reader_motion.iter(&motion) { + if window.cursor_locked() { + // Using smallest of height or width ensures equal vertical and horizontal sensitivity + let window_scale = window.height().min(window.width()); + delta_state.pitch -= + (settings.sensitivity * ev.delta.y * window_scale).to_radians(); + delta_state.yaw -= + (settings.sensitivity * ev.delta.x * window_scale).to_radians(); + } - delta_state.pitch = delta_state.pitch.clamp(-1.54, 1.54); + delta_state.pitch = delta_state.pitch.clamp(-1.54, 1.54); - // Order is important to prevent unintended roll - transform.rotation = Quat::from_axis_angle(Vec3::Y, delta_state.yaw) - * Quat::from_axis_angle(Vec3::X, delta_state.pitch); + // Order is important to prevent unintended roll + transform.rotation = Quat::from_axis_angle(Vec3::Y, delta_state.yaw) + * Quat::from_axis_angle(Vec3::X, delta_state.pitch); + } } + } else { + warn!("Primary window not found!"); } } fn cursor_grab(keys: Res>, mut windows: ResMut) { - let window = windows.get_primary_mut().unwrap(); - if keys.just_pressed(KeyCode::Escape) { - toggle_grab_cursor(window); + if let Some(window) = windows.get_primary_mut() { + if keys.just_pressed(KeyCode::Escape) { + toggle_grab_cursor(window); + } + } else { + warn!("Primary window not found!"); } } From 19d9b01b4f5d55895b91d819f586fb108112177e Mon Sep 17 00:00:00 2001 From: Jonah Henriksson <33059163+JonahPlusPlus@users.noreply.github.com> Date: Wed, 3 Aug 2022 00:03:11 -0400 Subject: [PATCH 2/2] Added context to warnings --- src/lib.rs | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/src/lib.rs b/src/lib.rs index 0b20e36..160a2ed 100644 --- a/src/lib.rs +++ b/src/lib.rs @@ -40,7 +40,7 @@ fn initial_grab_cursor(mut windows: ResMut) { if let Some(window) = windows.get_primary_mut() { toggle_grab_cursor(window); } else { - warn!("Primary window not found!"); + warn!("Primary window not found for `initial_grab_cursor`!"); } } @@ -88,7 +88,7 @@ fn player_move( transform.translation += velocity * time.delta_seconds() * settings.speed } } else { - warn!("Primary window not found!"); + warn!("Primary window not found for `player_move`!"); } } @@ -121,7 +121,7 @@ fn player_look( } } } else { - warn!("Primary window not found!"); + warn!("Primary window not found for `player_look`!"); } } @@ -131,7 +131,7 @@ fn cursor_grab(keys: Res>, mut windows: ResMut) { toggle_grab_cursor(window); } } else { - warn!("Primary window not found!"); + warn!("Primary window not found for `cursor_grab`!"); } }