AdjacentNode.cs 994 B

123456789101112131415161718192021222324252627282930
  1. using Robust.Shared.Map;
  2. using Robust.Shared.Map.Components;
  3. namespace Content.Server.NodeContainer.Nodes
  4. {
  5. /// <summary>
  6. /// A <see cref="Node"/> that can reach other <see cref="AdjacentNode"/>s that are directly adjacent to it.
  7. /// </summary>
  8. [DataDefinition]
  9. public sealed partial class AdjacentNode : Node
  10. {
  11. public override IEnumerable<Node> GetReachableNodes(TransformComponent xform,
  12. EntityQuery<NodeContainerComponent> nodeQuery,
  13. EntityQuery<TransformComponent> xformQuery,
  14. MapGridComponent? grid,
  15. IEntityManager entMan)
  16. {
  17. if (!xform.Anchored || grid == null)
  18. yield break;
  19. var gridIndex = grid.TileIndicesFor(xform.Coordinates);
  20. foreach (var (_, node) in NodeHelpers.GetCardinalNeighborNodes(nodeQuery, grid, gridIndex))
  21. {
  22. if (node != this)
  23. yield return node;
  24. }
  25. }
  26. }
  27. }