using Content.Server.AI.Components; using Content.Shared.Access.Systems; using Robust.Shared.Physics; namespace Content.Server.AI.Pathfinding.Accessible { public sealed class ReachableArgs { public float VisionRadius { get; set; } public ICollection Access { get; } public int CollisionMask { get; } public ReachableArgs(float visionRadius, ICollection access, int collisionMask) { VisionRadius = visionRadius; Access = access; CollisionMask = collisionMask; } /// /// Get appropriate args for a particular entity /// /// /// public static ReachableArgs GetArgs(EntityUid entity) { var collisionMask = 0; var entMan = IoCManager.Resolve(); if (entMan.TryGetComponent(entity, out IPhysBody? physics)) { collisionMask = physics.CollisionMask; } var accessSystem = EntitySystem.Get(); var access = accessSystem.FindAccessTags(entity); var visionRadius = entMan.GetComponent(entity).VisionRadius; return new ReachableArgs(visionRadius, access, collisionMask); } } }