Input replication (#62)

This commit is contained in:
PROMETHIA-27
2025-08-25 03:41:28 -04:00
committed by GitHub
parent c650924d68
commit 7f6c00b5d6
20 changed files with 345 additions and 280 deletions

View File

@@ -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;
};