From: Tayrtahn Date: Wed, 28 May 2025 00:14:49 +0000 (-0400) Subject: Fix walking in place animations when holding walk button (#37887) X-Git-Url: https://git.smokeofanarchy.ru/gitweb.cgi?a=commitdiff_plain;h=c1b9b7e6d72da65ff629bbfdeb9e603d900dc1a4;p=space-station-14.git Fix walking in place animations when holding walk button (#37887) Fix SpriteMovement playing when holding walk button --- 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); } }