private void SetAccessibleTiles() { List <Vector2Int> currentLayer; var previousLayer = new List <Vector2Int>(); var steps = maxSteps; previousLayer.Add(coords); while (steps >= 0) { currentLayer = new List <Vector2Int>(); // still gotta deduplicate previousLayer.ForEach(tile => { if (!grid.TileHasObstacle(tile)) { accessibleTiles.Add(tile); grid.GetNeighbours(tile).ForEach(tile => { if (!previousLayer.Contains(tile) && !currentLayer.Contains(tile)) { currentLayer.Add(tile); } }); } }); previousLayer = currentLayer; steps--; } }