using System.Numerics; using Robust.Shared.GameStates; using Robust.Shared.Serialization.TypeSerializers.Implementations.Custom; namespace Content.Shared.Climbing.Components; [RegisterComponent, NetworkedComponent, AutoGenerateComponentState] public sealed partial class ClimbingComponent : Component { /// /// Whether the owner is climbing on a climbable entity. /// [AutoNetworkedField, DataField] public bool IsClimbing; /// /// Whether the owner is being moved onto the climbed entity. /// [AutoNetworkedField, DataField(customTypeSerializer: typeof(TimeOffsetSerializer))] public TimeSpan? NextTransition; /// /// Direction to move when transition. /// [AutoNetworkedField, DataField] public Vector2 Direction; /// /// How fast the entity is moved when climbing. /// [DataField] public float TransitionRate = 5f; [AutoNetworkedField, DataField] public Dictionary DisabledFixtureMasks = new(); }