Simplify working with controls (#27)
This commit is contained in:
@@ -2,8 +2,10 @@ use avian3d::prelude::*;
|
||||
use bevy::prelude::*;
|
||||
|
||||
use crate::{
|
||||
GameState, control::Controls, control::controller_common::PlayerMovement,
|
||||
loading_assets::UIAssets, physics_layers::GameLayer,
|
||||
GameState,
|
||||
control::{ControlState, controller_common::PlayerMovement},
|
||||
loading_assets::UIAssets,
|
||||
physics_layers::GameLayer,
|
||||
};
|
||||
|
||||
#[derive(Component, Reflect, Debug)]
|
||||
@@ -50,14 +52,7 @@ pub fn plugin(app: &mut App) {
|
||||
app.add_systems(OnEnter(GameState::Playing), startup);
|
||||
app.add_systems(
|
||||
Update,
|
||||
(
|
||||
update,
|
||||
update_ui,
|
||||
update_look_around,
|
||||
rotate_view_keyboard,
|
||||
rotate_view_gamepad,
|
||||
)
|
||||
.run_if(in_state(GameState::Playing)),
|
||||
(update, update_ui, update_look_around, rotate_view).run_if(in_state(GameState::Playing)),
|
||||
);
|
||||
}
|
||||
|
||||
@@ -69,9 +64,8 @@ fn startup(mut commands: Commands) {
|
||||
));
|
||||
}
|
||||
|
||||
fn update_look_around(controls: Res<Controls>, mut cam_state: ResMut<CameraState>) {
|
||||
let look_around =
|
||||
controls.keyboard_state.view_mode || controls.gamepad_state.is_some_and(|g| g.view_mode);
|
||||
fn update_look_around(controls: Res<ControlState>, mut cam_state: ResMut<CameraState>) {
|
||||
let look_around = controls.view_mode;
|
||||
|
||||
if look_around != cam_state.look_around {
|
||||
cam_state.look_around = look_around;
|
||||
@@ -159,8 +153,8 @@ fn update(
|
||||
*cam_transform = Transform::from_translation(cam_pos).looking_at(target, Vec3::Y);
|
||||
}
|
||||
|
||||
fn rotate_view_keyboard(
|
||||
mut controls: ResMut<Controls>,
|
||||
fn rotate_view(
|
||||
controls: Res<ControlState>,
|
||||
mut cam: Query<&mut CameraRotationInput>,
|
||||
movement: Res<PlayerMovement>,
|
||||
) {
|
||||
@@ -168,7 +162,7 @@ fn rotate_view_keyboard(
|
||||
return;
|
||||
};
|
||||
|
||||
if !controls.keyboard_state.view_mode {
|
||||
if !controls.view_mode {
|
||||
if movement.any_direction {
|
||||
cam.x = 0.;
|
||||
}
|
||||
@@ -176,31 +170,5 @@ fn rotate_view_keyboard(
|
||||
return;
|
||||
}
|
||||
|
||||
cam.x += controls.keyboard_state.look_dir.x * -0.001;
|
||||
cam.y += controls.keyboard_state.look_dir.y * -0.001;
|
||||
|
||||
controls.keyboard_state.look_dir = Vec2::ZERO;
|
||||
}
|
||||
|
||||
fn rotate_view_gamepad(
|
||||
controls: Res<Controls>,
|
||||
mut cam: Query<&mut CameraRotationInput>,
|
||||
movement: Res<PlayerMovement>,
|
||||
) {
|
||||
let Ok(mut cam) = cam.get_single_mut() else {
|
||||
return;
|
||||
};
|
||||
|
||||
let Some(gamepad) = controls.gamepad_state else {
|
||||
return;
|
||||
};
|
||||
|
||||
if !gamepad.view_mode {
|
||||
if movement.any_direction {
|
||||
cam.x = 0.;
|
||||
}
|
||||
} else {
|
||||
cam.x += gamepad.look_dir.x * -0.001;
|
||||
cam.y += gamepad.look_dir.y * -0.001;
|
||||
}
|
||||
cam.0 += controls.look_dir * -0.001;
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user