private static bool NextWaveIteration(ref List <Subregion> openSet, ref Region region) { if (openSet.Count == 0) { return(false); } for (int i = openSet.Count - 1; i >= 0; i--) { if (openSet[i].region != region) { if (openSet[i].region is null) { region.AddSubregion(openSet[i]); continue; } } } foreach (Subregion neighbour in openSet[0].neighbouringSubregions) { if (neighbour.region == region || openSet.Contains(neighbour)) { continue; } openSet.Add(neighbour); } openSet.RemoveAt(0); return(true); }