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();
}