public static void PaintFlood(PaintedHillsMod mymod, Colorer colorer, int tile_x, int tile_y, Paints hue) { var peek = new Dictionary <int, ISet <int> >(); peek[tile_x] = new HashSet <int>(); peek[tile_x].Add(tile_y); do { foreach (int x in peek.Keys) { foreach (int y in peek[x]) { colorer.ColorTile(mymod, x, y); } } int[] peek_x = peek.Keys.ToArray(); foreach (int x in peek_x) { int[] peek_y = peek[x].ToArray(); foreach (int y in peek_y) { AreaPainter.PeekAdjacentClearTiles(colorer.HueMap, peek, x, y); peek[x].Remove(y); } if (peek[x].Count == 0) { peek.Remove(x); } } } while(peek.Count > 0); }