using System.Numerics; namespace Content.Server.Shuttles.Components { [RegisterComponent] public sealed partial class ShuttleComponent : Component { [ViewVariables] public bool Enabled = true; [ViewVariables] public Vector2[] CenterOfThrust = new Vector2[4]; /// /// Thrust gets multiplied by this value if it's for braking. /// public const float BrakeCoefficient = 1.5f; /// /// Maximum velocity. /// [ViewVariables(VVAccess.ReadWrite)] public float BaseMaxLinearVelocity = 60f; public const float MaxAngularVelocity = 4f; /// /// The cached thrust available for each cardinal direction /// [ViewVariables] public readonly float[] LinearThrust = new float[4]; /// /// The thrusters contributing to each direction for impulse. /// // No touchy public readonly List[] LinearThrusters = new List[] { new(), new(), new(), new(), }; /// /// The thrusters contributing to the angular impulse of the shuttle. /// public readonly List AngularThrusters = new(); [ViewVariables] public float AngularThrust = 0f; /// /// A bitmask of all the directions we are considered thrusting. /// [ViewVariables] public DirectionFlag ThrustDirections = DirectionFlag.None; /// /// Base damping modifier applied to the shuttle's physics component when not in FTL. /// [DataField] public float BodyModifier = 0.25f; /// /// Final Damping Modifier for a shuttle. /// This value is set to 0 during FTL. And to BodyModifier when not in FTL. /// [DataField] public float DampingModifier; } }