#nullable enable using System.Collections.Generic; using System.Linq; using System.Runtime.CompilerServices; using Content.Shared.Maps; using Robust.Server.GameObjects.EntitySystems.TileLookup; using Robust.Shared.GameObjects.Systems; using Robust.Shared.Interfaces.GameObjects; using Robust.Shared.Map; namespace Content.Server.Utility { public static class GridTileLookupHelpers { /// /// Helper that returns all entities in a turf very fast. /// [MethodImpl(MethodImplOptions.AggressiveInlining)] public static IEnumerable GetEntitiesInTileFast(this TileRef turf, GridTileLookupSystem? gridTileLookup = null) { gridTileLookup ??= EntitySystem.Get(); return gridTileLookup.GetEntitiesIntersecting(turf.GridIndex, turf.GridIndices); } /// /// Helper that returns all entities in a turf. /// [MethodImpl(MethodImplOptions.AggressiveInlining)] public static IEnumerable GetEntitiesInTileFast(this MapIndices indices, GridId gridId, GridTileLookupSystem? gridTileLookup = null) { var turf = indices.GetTileRef(gridId); if (turf == null) return Enumerable.Empty(); return GetEntitiesInTileFast(turf.Value, gridTileLookup); } } }