From c1b9b7e6d72da65ff629bbfdeb9e603d900dc1a4 Mon Sep 17 00:00:00 2001 From: Tayrtahn Date: Tue, 27 May 2025 20:14:49 -0400 Subject: [PATCH] Fix walking in place animations when holding walk button (#37887) Fix SpriteMovement playing when holding walk button --- Content.Shared/Movement/Components/InputMoverComponent.cs | 8 ++++++++ .../Movement/Systems/SharedMoverController.Input.cs | 4 ++-- 2 files changed, 10 insertions(+), 2 deletions(-) diff --git a/Content.Shared/Movement/Components/InputMoverComponent.cs b/Content.Shared/Movement/Components/InputMoverComponent.cs index f03619ccc6..87da601f76 100644 --- a/Content.Shared/Movement/Components/InputMoverComponent.cs +++ b/Content.Shared/Movement/Components/InputMoverComponent.cs @@ -37,6 +37,14 @@ namespace Content.Shared.Movement.Components public MoveButtons HeldMoveButtons = MoveButtons.None; + /// + /// Does our input indicate actual movement, and not just modifiers? + /// + /// + /// This can be useful to filter out input from just pressing the walk button with no directions, for example. + /// + public bool HasDirectionalMovement => (HeldMoveButtons & MoveButtons.AnyDirection) != MoveButtons.None; + // I don't know if we even need this networked? It's mostly so conveyors can calculate properly. /// /// Direction to move this tick. diff --git a/Content.Shared/Movement/Systems/SharedMoverController.Input.cs b/Content.Shared/Movement/Systems/SharedMoverController.Input.cs index cf7aedd95f..2560f33e9c 100644 --- a/Content.Shared/Movement/Systems/SharedMoverController.Input.cs +++ b/Content.Shared/Movement/Systems/SharedMoverController.Input.cs @@ -98,7 +98,7 @@ namespace Content.Shared.Movement.Systems RaiseLocalEvent(entity, ref moveEvent); Dirty(entity, entity.Comp); - var ev = new SpriteMoveEvent(entity.Comp.HeldMoveButtons != MoveButtons.None); + var ev = new SpriteMoveEvent(entity.Comp.HasDirectionalMovement); RaiseLocalEvent(entity, ref ev); } @@ -124,7 +124,7 @@ namespace Content.Shared.Movement.Systems entity.Comp.HeldMoveButtons = state.HeldMoveButtons; RaiseLocalEvent(entity.Owner, ref moveEvent); - var ev = new SpriteMoveEvent(entity.Comp.HeldMoveButtons != MoveButtons.None); + var ev = new SpriteMoveEvent(entity.Comp.HasDirectionalMovement); RaiseLocalEvent(entity, ref ev); } }