/// <summary> /// Given some input EdgeCollection, iterates through its edges and adds 'valid' ones to a new /// collection, which is then returned. /// Validity is determined through the _IsLedgeValid function. /// </summary> /// <param name="ledgeColl"></param> /// <param name="preTileMap"></param> /// <param name="superTileMap"></param> /// <returns></returns> private static EdgeCollection <TileEdge> _BuildHoleGroupValidLedges(EdgeCollection <TileEdge> ledgeColl, TileMap preTileMap, TileMap superTileMap) { var validLedges = new EdgeCollection <TileEdge>(); foreach (TileEdge ledge in ledgeColl) { if (_IsLedgeValid(ledge, preTileMap, superTileMap)) { TileEdge superimposedLedge = ledge.GetShiftedByN(SHIFT_DIST); if (!validLedges.HasEdgePoints(superimposedLedge)) { validLedges.Add(superimposedLedge); } } } return(validLedges); }