Пример #1
0
 // Token: 0x06000CD7 RID: 3287 RVA: 0x0005E72C File Offset: 0x0005CB2C
 public void addCut(IShapeVolume cut)
 {
     this.cuts.Add(cut);
     if (!this.hasInstances)
     {
         return;
     }
     foreach (KeyValuePair <AssetReference <FoliageInstancedMeshInfoAsset>, FoliageInstanceList> keyValuePair in this.instances)
     {
         FoliageInstanceList value = keyValuePair.Value;
         for (int i = 0; i < value.matrices.Count; i++)
         {
             List <Matrix4x4> list  = value.matrices[i];
             List <bool>      list2 = value.clearWhenBaked[i];
             for (int j = list.Count - 1; j >= 0; j--)
             {
                 if (cut.containsPoint(list[j].GetPosition()))
                 {
                     list.RemoveAt(j);
                     list2.RemoveAt(j);
                 }
             }
         }
     }
 }
        public override int getInstanceCountInVolume(IShapeVolume volume)
        {
            Bounds       worldBounds  = volume.worldBounds;
            RegionBounds regionBounds = new RegionBounds(worldBounds);
            int          num          = 0;

            for (byte b = regionBounds.min.x; b <= regionBounds.max.x; b += 1)
            {
                for (byte b2 = regionBounds.min.y; b2 <= regionBounds.max.y; b2 += 1)
                {
                    List <ResourceSpawnpoint> list = LevelGround.trees[(int)b, (int)b2];
                    foreach (ResourceSpawnpoint resourceSpawnpoint in list)
                    {
                        if (this.resource.isReferenceTo(resourceSpawnpoint.asset))
                        {
                            if (volume.containsPoint(resourceSpawnpoint.point))
                            {
                                num++;
                            }
                        }
                    }
                }
            }
            return(num);
        }
Пример #3
0
        public override int getInstanceCountInVolume(IShapeVolume volume)
        {
            Bounds       worldBounds  = volume.worldBounds;
            RegionBounds regionBounds = new RegionBounds(worldBounds);
            int          num          = 0;

            for (byte b = regionBounds.min.x; b <= regionBounds.max.x; b += 1)
            {
                for (byte b2 = regionBounds.min.y; b2 <= regionBounds.max.y; b2 += 1)
                {
                    List <LevelObject> list = LevelObjects.objects[(int)b, (int)b2];
                    foreach (LevelObject levelObject in list)
                    {
                        if (this.obj.isReferenceTo(levelObject.asset))
                        {
                            if (volume.containsPoint(levelObject.transform.position))
                            {
                                num++;
                            }
                        }
                    }
                }
            }
            return(num);
        }
Пример #4
0
        // Token: 0x06000CAF RID: 3247 RVA: 0x0005D8AC File Offset: 0x0005BCAC
        public static void addCut(IShapeVolume cut)
        {
            Bounds        worldBounds   = cut.worldBounds;
            FoliageBounds foliageBounds = new FoliageBounds(worldBounds);

            for (int i = foliageBounds.min.x; i <= foliageBounds.max.x; i++)
            {
                for (int j = foliageBounds.min.y; j <= foliageBounds.max.y; j++)
                {
                    FoliageCoord tileCoord = new FoliageCoord(i, j);
                    FoliageTile  orAddTile = FoliageSystem.getOrAddTile(tileCoord);
                    orAddTile.addCut(cut);
                }
            }
        }
Пример #5
0
        // Token: 0x06000C4A RID: 3146 RVA: 0x0005CB44 File Offset: 0x0005AF44
        public override int getInstanceCountInVolume(IShapeVolume volume)
        {
            Bounds        worldBounds   = volume.worldBounds;
            FoliageBounds foliageBounds = new FoliageBounds(worldBounds);
            int           num           = 0;

            for (int i = foliageBounds.min.x; i <= foliageBounds.max.x; i++)
            {
                for (int j = foliageBounds.min.y; j <= foliageBounds.max.y; j++)
                {
                    FoliageCoord tileCoord = new FoliageCoord(i, j);
                    FoliageTile  tile      = FoliageSystem.getTile(tileCoord);
                    if (tile != null)
                    {
                        if (!tile.hasInstances)
                        {
                            tile.readInstancesOnThread();
                        }
                        FoliageInstanceList foliageInstanceList;
                        if (tile.instances != null && tile.instances.TryGetValue(base.getReferenceTo <FoliageInstancedMeshInfoAsset>(), out foliageInstanceList))
                        {
                            foreach (List <Matrix4x4> list in foliageInstanceList.matrices)
                            {
                                foreach (Matrix4x4 matrix in list)
                                {
                                    if (volume.containsPoint(matrix.GetPosition()))
                                    {
                                        num++;
                                    }
                                }
                            }
                        }
                    }
                }
            }
            return(num);
        }
Пример #6
0
 // Token: 0x06000C13 RID: 3091
 public abstract int getInstanceCountInVolume(IShapeVolume volume);