using Content.Server.NodeContainer; using Content.Server.NodeContainer.Nodes; using Content.Shared.NodeContainer; using Robust.Shared.Map; using Robust.Shared.Map.Components; namespace Content.Server.Power.Nodes { [DataDefinition] public sealed partial class CableTerminalPortNode : Node { public override IEnumerable GetReachableNodes(TransformComponent xform, EntityQuery nodeQuery, EntityQuery xformQuery, MapGridComponent? grid, IEntityManager entMan) { if (!xform.Anchored || grid == null) yield break; var gridIndex = grid.TileIndicesFor(xform.Coordinates); var nodes = NodeHelpers.GetCardinalNeighborNodes(nodeQuery, grid, gridIndex, includeSameTile: false); foreach (var (dir, node) in nodes) { if (node is CableTerminalNode && dir != Direction.Invalid && xformQuery.GetComponent(node.Owner).LocalRotation.GetCardinalDir().GetOpposite() == dir) yield return node; } } } }