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