示例#1
0
 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);
                 }
             }
         }
     }
 }
示例#2
0
        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();
        }
示例#3
0
        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();
        }