public const float DefaultMinimumFrictionSpeed = 0.005f;
public const float DefaultWeightlessFriction = 1f;
public const float DefaultWeightlessFrictionNoInput = 0.2f;
+ public const float DefaultOffGridFriction = 0.05f;
public const float DefaultWeightlessModifier = 0.7f;
public const float DefaultWeightlessAcceleration = 1f;
[ViewVariables(VVAccess.ReadWrite), DataField]
public float WeightlessFrictionNoInput = DefaultWeightlessFrictionNoInput;
+ /// <summary>
+ /// The negative velocity applied for friction when weightless and not standing on a grid or mapgrid
+ /// </summary>
+ [ViewVariables(VVAccess.ReadWrite), DataField]
+ public float OffGridFriction = DefaultOffGridFriction;
+
/// <summary>
/// The movement speed modifier applied to a mob's total input velocity when weightless.
/// </summary>
if (weightless)
{
- if (worldTotal != Vector2.Zero && touching)
+ if (gridComp == null && !MapGridQuery.HasComp(xform.GridUid))
+ friction = moveSpeedComponent?.OffGridFriction ?? MovementSpeedModifierComponent.DefaultOffGridFriction;
+ else if (worldTotal != Vector2.Zero && touching)
friction = moveSpeedComponent?.WeightlessFriction ?? MovementSpeedModifierComponent.DefaultWeightlessFriction;
else
friction = moveSpeedComponent?.WeightlessFrictionNoInput ?? MovementSpeedModifierComponent.DefaultWeightlessFrictionNoInput;