using System; using Robust.Shared.Interfaces.Physics; using Robust.Shared.IoC; using Robust.Shared.Physics; namespace Content.Shared.Physics { public abstract class FrictionController : VirtualController { [Dependency] private readonly IPhysicsManager _physicsManager = default!; public override void UpdateAfterProcessing() { base.UpdateAfterProcessing(); if (ControlledComponent != null && !_physicsManager.IsWeightless(ControlledComponent.Owner.Transform.Coordinates)) { LinearVelocity *= 0.85f; if (MathF.Abs(LinearVelocity.Length) < 1f) Stop(); } } } }