using System.Collections.Generic; using Content.Server.Access.Systems; using Content.Server.AI.Components; using Robust.Shared.GameObjects; using Robust.Shared.IoC; 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; if (IoCManager.Resolve().TryGetComponent(entity, out IPhysBody? physics)) { collisionMask = physics.CollisionMask; } var accessSystem = EntitySystem.Get(); var access = accessSystem.FindAccessTags(entity); var visionRadius = IoCManager.Resolve().GetComponent(entity).VisionRadius; return new ReachableArgs(visionRadius, access, collisionMask); } } }