using Content.Server.GameObjects.Components.Movement; using Robust.Shared.Interfaces.GameObjects; using Robust.Shared.Map; using Robust.Shared.Maths; namespace Content.Server.Interfaces.GameObjects.Components.Movement { // Does nothing except ensure uniqueness between mover components. // There can only be one. public interface IMoverComponent : IComponent { /// /// Movement speed (m/s) that the entity walks. /// float CurrentWalkSpeed { get; } /// /// Movement speed (m/s) that the entity sprints. /// float CurrentSprintSpeed { get; } /// /// The movement speed (m/s) of the entity when it pushes off of a solid object in zero gravity. /// float CurrentPushSpeed { get; } /// /// How far an entity can reach (in meters) to grab hold of a solid object in zero gravity. /// float GrabRange { get; } /// /// Is the entity Sprinting (running)? /// bool Sprinting { get; set; } /// /// Calculated linear velocity direction of the entity. /// Vector2 VelocityDir { get; } GridCoordinates LastPosition { get; set; } float StepSoundDistance { get; set; } /// /// Toggles one of the four cardinal directions. Each of the four directions are /// composed into a single direction vector, . Enabling /// opposite directions will cancel each other out, resulting in no direction. /// /// Direction to toggle. /// If the direction is active. void SetVelocityDirection(Direction direction, bool enabled); } }