예제 #1
0
        private void MergeLists(DataSplitFinder finder)
        {
            DataSplitInfo info = finder.GetFinderInfo();

            _found.AddRange(info.found);
            _newPositions.AddRange(info.confirmed);
            _findersToRemove.Add(finder);
        }
예제 #2
0
 private DataSplitFinder FinderFound(IntVec3 position, DataSplitFinder toIgnore)
 {
     foreach (DataSplitFinder finder in _finders)
     {
         if (!ReferenceEquals(finder, toIgnore) && !_findersToRemove.Contains(finder) && finder.ContainsPosition(position))
         {
             return(finder);
         }
     }
     return(null);
 }
예제 #3
0
 private void CheckPosition(IntVec3 position)
 {
     if (VoxelEdit.ValidPosition(_regionCollection.GetDimensions() * VoxelData.SIZE, position) && VoxelEdit.GetAt(_regionCollection, position).visible == 1)
     {
         DataSplitFinder finder = FinderFound(position, this);
         if (!ReferenceEquals(finder, null))
         {
             MergeLists(finder);
         }
         else if (!ContainsPosition(position))
         {
             _newPositions.Add(position);
         }
     }
 }