private void DetermineStartRegions(IntVec3 start) { startingRegions.Clear(); if (pathGrid.WalkableFast(start)) { Region validRegionAt = regionGrid.GetValidRegionAt(start); QueueNewOpenRegion(validRegionAt); startingRegions.Add(validRegionAt); } else { for (int i = 0; i < 8; i++) { IntVec3 intVec = start + GenAdj.AdjacentCells[i]; if (intVec.InBounds(map) && pathGrid.WalkableFast(intVec)) { Region validRegionAt2 = regionGrid.GetValidRegionAt(intVec); if (validRegionAt2 != null && validRegionAt2.reachedIndex != reachedIndex) { QueueNewOpenRegion(validRegionAt2); startingRegions.Add(validRegionAt2); } } } } }
private void RegisterThingsInRegionListers() { CellRect extentsClose = newReg.extentsClose; extentsClose = extentsClose.ExpandedBy(1); extentsClose.ClipInsideMap(map); tmpProcessedThings.Clear(); CellRect.CellRectIterator iterator = extentsClose.GetIterator(); while (!iterator.Done()) { IntVec3 current = iterator.Current; bool flag = false; for (int i = 0; i < 9; i++) { IntVec3 c = current + GenAdj.AdjacentCellsAndInside[i]; if (c.InBounds(map) && regionGrid.GetValidRegionAt(c) == newReg) { flag = true; break; } } if (flag) { RegionListersUpdater.RegisterAllAt(current, map, tmpProcessedThings); } iterator.MoveNext(); } tmpProcessedThings.Clear(); }
private void RegisterThingsInRegionListers() { CellRect extentsClose = newReg.extentsClose; extentsClose = extentsClose.ExpandedBy(1); extentsClose.ClipInsideMap(map); tmpProcessedThings.Clear(); foreach (IntVec3 item in extentsClose) { bool flag = false; for (int i = 0; i < 9; i++) { IntVec3 c = item + GenAdj.AdjacentCellsAndInside[i]; if (c.InBounds(map) && regionGrid.GetValidRegionAt(c) == newReg) { flag = true; break; } } if (flag) { RegionListersUpdater.RegisterAllAt(item, map, tmpProcessedThings); } } tmpProcessedThings.Clear(); }