Input replication (#62)
This commit is contained in:
@@ -8,13 +8,14 @@ use crate::{
|
||||
};
|
||||
use bevy::prelude::*;
|
||||
use happy_feet::prelude::{Grounding, KinematicVelocity, MoveInput};
|
||||
use lightyear::prelude::input::native::ActionState;
|
||||
|
||||
pub struct CharacterControllerPlugin;
|
||||
|
||||
impl Plugin for CharacterControllerPlugin {
|
||||
fn build(&self, app: &mut App) {
|
||||
app.add_systems(
|
||||
PreUpdate,
|
||||
FixedUpdate,
|
||||
(rotate_view, apply_controls)
|
||||
.chain()
|
||||
.in_set(ControllerSet::ApplyControlsRun)
|
||||
@@ -24,20 +25,21 @@ impl Plugin for CharacterControllerPlugin {
|
||||
}
|
||||
|
||||
fn rotate_view(
|
||||
controls: Res<ControlState>,
|
||||
mut player: Query<&mut Transform, With<PlayerBodyMesh>>,
|
||||
actions: Query<&ActionState<ControlState>>,
|
||||
mut player: Query<(&mut Transform, &ChildOf), With<PlayerBodyMesh>>,
|
||||
) {
|
||||
if controls.view_mode {
|
||||
return;
|
||||
}
|
||||
for (mut tr, child_of) in player.iter_mut() {
|
||||
let controls = actions.get(child_of.parent()).unwrap();
|
||||
|
||||
if controls.view_mode {
|
||||
continue;
|
||||
}
|
||||
|
||||
for mut tr in player.iter_mut() {
|
||||
tr.rotate_y(controls.look_dir.x * -0.001);
|
||||
}
|
||||
}
|
||||
|
||||
fn apply_controls(
|
||||
controls: Res<ControlState>,
|
||||
mut character: Query<(
|
||||
&mut MoveInput,
|
||||
&mut Grounding,
|
||||
@@ -45,12 +47,20 @@ fn apply_controls(
|
||||
&mut AnimationFlags,
|
||||
&ControllerSettings,
|
||||
&MovementSpeedFactor,
|
||||
&ActionState<ControlState>,
|
||||
)>,
|
||||
rig_transform_q: Option<Single<&GlobalTransform, With<PlayerBodyMesh>>>,
|
||||
is_server: Option<Res<IsServer>>,
|
||||
) {
|
||||
let Ok((mut move_input, mut grounding, mut velocity, mut flags, settings, move_factor)) =
|
||||
character.single_mut()
|
||||
let Ok((
|
||||
mut move_input,
|
||||
mut grounding,
|
||||
mut velocity,
|
||||
mut flags,
|
||||
settings,
|
||||
move_factor,
|
||||
controls,
|
||||
)) = character.single_mut()
|
||||
else {
|
||||
return;
|
||||
};
|
||||
|
||||
Reference in New Issue
Block a user