public static void Dilate(List <IntVec3> cells, int count, Map map, Predicate <IntVec3> extraPredicate = null) { if (count <= 0) { return; } FloodFiller arg_73_0 = map.floodFiller; IntVec3 invalid = IntVec3.Invalid; Predicate <IntVec3> arg_52_0 = extraPredicate; if (extraPredicate == null) { arg_52_0 = ((IntVec3 x) => true); } Predicate <IntVec3> passCheck = arg_52_0; Func <IntVec3, int, bool> processor = delegate(IntVec3 cell, int traversalDist) { if (traversalDist > count) { return(true); } if (traversalDist != 0) { cells.Add(cell); } return(false); }; List <IntVec3> cells2 = cells; arg_73_0.FloodFill(invalid, passCheck, processor, 2147483647, false, cells2); }
public static void Dilate(List <IntVec3> cells, int count, Map map, Predicate <IntVec3> extraPredicate = null) { if (count <= 0) { return; } FloodFiller floodFiller = map.floodFiller; IntVec3 invalid = IntVec3.Invalid; Predicate <IntVec3> predicate = extraPredicate; if (extraPredicate == null) { predicate = ((IntVec3 x) => true); } Predicate <IntVec3> passCheck = predicate; Func <IntVec3, int, bool> processor = delegate(IntVec3 cell, int traversalDist) { if (traversalDist > count) { return(true); } if (traversalDist != 0) { cells.Add(cell); } return(false); }; List <IntVec3> cells2 = cells; floodFiller.FloodFill(invalid, passCheck, processor, int.MaxValue, false, cells2); }
public static void Erode(List <IntVec3> cells, int count, Map map, Predicate <IntVec3> extraPredicate = null) { if (count <= 0) { return; } IntVec3[] cardinalDirections = GenAdj.CardinalDirections; GenMorphology.cellsSet.Clear(); GenMorphology.cellsSet.AddRange(cells); GenMorphology.tmpEdgeCells.Clear(); for (int i = 0; i < cells.Count; i++) { for (int j = 0; j < 4; j++) { IntVec3 item = cells[i] + cardinalDirections[j]; if (!GenMorphology.cellsSet.Contains(item)) { GenMorphology.tmpEdgeCells.Add(cells[i]); break; } } } if (!GenMorphology.tmpEdgeCells.Any <IntVec3>()) { return; } GenMorphology.tmpOutput.Clear(); Predicate <IntVec3> predicate; if (extraPredicate != null) { predicate = ((IntVec3 x) => GenMorphology.cellsSet.Contains(x) && extraPredicate(x)); } else { predicate = ((IntVec3 x) => GenMorphology.cellsSet.Contains(x)); } FloodFiller arg_13B_0 = map.floodFiller; IntVec3 invalid = IntVec3.Invalid; Predicate <IntVec3> passCheck = predicate; Func <IntVec3, int, bool> processor = delegate(IntVec3 cell, int traversalDist) { if (traversalDist >= count) { GenMorphology.tmpOutput.Add(cell); } return(false); }; List <IntVec3> extraRoots = GenMorphology.tmpEdgeCells; arg_13B_0.FloodFill(invalid, passCheck, processor, 2147483647, false, extraRoots); cells.Clear(); cells.AddRange(GenMorphology.tmpOutput); }
public static void Erode(List <IntVec3> cells, int count, Map map, Predicate <IntVec3> extraPredicate = null) { if (count > 0) { IntVec3[] cardinalDirections = GenAdj.CardinalDirections; cellsSet.Clear(); cellsSet.AddRange(cells); tmpEdgeCells.Clear(); for (int i = 0; i < cells.Count; i++) { for (int j = 0; j < 4; j++) { IntVec3 item = cells[i] + cardinalDirections[j]; if (!cellsSet.Contains(item)) { tmpEdgeCells.Add(cells[i]); break; } } } if (tmpEdgeCells.Any()) { tmpOutput.Clear(); Predicate <IntVec3> predicate = (extraPredicate == null) ? ((Predicate <IntVec3>)((IntVec3 x) => cellsSet.Contains(x))) : ((Predicate <IntVec3>)((IntVec3 x) => cellsSet.Contains(x) && extraPredicate(x))); FloodFiller floodFiller = map.floodFiller; IntVec3 invalid = IntVec3.Invalid; Predicate <IntVec3> passCheck = predicate; Func <IntVec3, int, bool> processor = delegate(IntVec3 cell, int traversalDist) { if (traversalDist >= count) { tmpOutput.Add(cell); } return(false); }; List <IntVec3> extraRoots = tmpEdgeCells; floodFiller.FloodFill(invalid, passCheck, processor, 2147483647, rememberParents: false, extraRoots); cells.Clear(); cells.AddRange(tmpOutput); } } }
public static void Dilate(List <IntVec3> cells, int count, Map map, Predicate <IntVec3> extraPredicate = null) { if (count > 0) { FloodFiller floodFiller = map.floodFiller; IntVec3 invalid = IntVec3.Invalid; Predicate <IntVec3> passCheck = extraPredicate ?? ((Predicate <IntVec3>)((IntVec3 x) => true)); Func <IntVec3, int, bool> processor = delegate(IntVec3 cell, int traversalDist) { if (traversalDist > count) { return(true); } if (traversalDist != 0) { cells.Add(cell); } return(false); }; List <IntVec3> extraRoots = cells; floodFiller.FloodFill(invalid, passCheck, processor, 2147483647, rememberParents: false, extraRoots); } }