using Content.Server.NPC.Systems; namespace Content.Server.NPC.Components; /// /// Stores data for RVO collision avoidance /// [RegisterComponent] public sealed class NPCRVOComponent : Component { /// /// Maximum number of dynamic neighbors to consider for collision avoidance. /// [ViewVariables(VVAccess.ReadWrite), DataField("maxNeighbors")] public int MaxNeighbors = 5; /// /// Time horizon to consider for dynamic neighbor collision /// [ViewVariables(VVAccess.ReadWrite)] public float TimeHorizon = 3f; /// /// Time horizon to consider for static neighbor collision. /// [ViewVariables(VVAccess.ReadWrite)] public float ObstacleTimeHorizon = 3f; /// /// Range considered for neighbor agents /// [ViewVariables(VVAccess.ReadWrite), DataField("neighborRange")] public float NeighborRange = 3f; [ViewVariables] public readonly HashSet ObstacleNeighbors = new(); [ViewVariables] public readonly HashSet AgentNeighbors = new(); }