using System.Numerics; using Robust.Shared.GameStates; using Robust.Shared.Serialization; using Robust.Shared.Timing; namespace Content.Shared.Throwing { [RegisterComponent, NetworkedComponent, AutoGenerateComponentState(true), AutoGenerateComponentPause] public sealed partial class ThrownItemComponent : Component { /// /// Should the in-air throwing animation play. /// [DataField, AutoNetworkedField] public bool Animate = true; /// /// The entity that threw this entity. /// [DataField, ViewVariables(VVAccess.ReadWrite), AutoNetworkedField] public EntityUid? Thrower; /// /// The timestamp at which this entity was thrown. /// [DataField, ViewVariables(VVAccess.ReadWrite), AutoNetworkedField] public TimeSpan? ThrownTime; /// /// Compared to to land this entity, if any. /// [DataField, ViewVariables(VVAccess.ReadWrite), AutoNetworkedField] [AutoPausedField] public TimeSpan? LandTime; /// /// Whether or not this entity was already landed. /// [DataField, ViewVariables(VVAccess.ReadWrite), AutoNetworkedField] public bool Landed; /// /// Whether or not to play a sound when the entity lands. /// [DataField, ViewVariables(VVAccess.ReadWrite), AutoNetworkedField] public bool PlayLandSound; /// /// Used to restore state after the throwing scale animation is finished. /// [DataField] public Vector2? OriginalScale = null; } }