// Token: 0x06000CBF RID: 3263 RVA: 0x0005DF10 File Offset: 0x0005C310 public static void drawTiles(Vector3 position, int drawDistance, Camera camera, Plane[] frustumPlanes) { int num = drawDistance * drawDistance; FoliageCoord foliageCoord = new FoliageCoord(position); for (int i = -drawDistance; i <= drawDistance; i++) { for (int j = -drawDistance; j <= drawDistance; j++) { FoliageCoord foliageCoord2 = new FoliageCoord(foliageCoord.x + i, foliageCoord.y + j); if (!FoliageSystem.activeTiles.ContainsKey(foliageCoord2)) { FoliageTile tile = FoliageSystem.getTile(foliageCoord2); if (tile != null) { int num2 = i * i + j * j; if (num2 <= num) { float density = 1f; float num3 = Mathf.Sqrt((float)num2); if (num3 > 2f && drawDistance > 3) { density = 1f - (num3 - 2f) / (float)(drawDistance - 1); } FoliageSystem.drawTileCullingChecks(tile, num2, density, camera, frustumPlanes); FoliageSystem.activeTiles.Add(foliageCoord2, tile); } } } } } }
// Token: 0x06000CB6 RID: 3254 RVA: 0x0005DBA0 File Offset: 0x0005BFA0 private static void bakeLocalBegin() { FoliageSystem.bakeLocalPosition = MainCamera.instance.transform.position; int num = 6; int num2 = num * num; FoliageCoord foliageCoord = new FoliageCoord(FoliageSystem.bakeLocalPosition); Dictionary <FoliageTile, List <IFoliageSurface> > tileSurfacePairs = FoliageSystem.getTileSurfacePairs(); for (int i = -num; i <= num; i++) { for (int j = -num; j <= num; j++) { int num3 = i * i + j * j; if (num3 <= num2) { FoliageCoord tileCoord = new FoliageCoord(foliageCoord.x + i, foliageCoord.y + j); FoliageTile tile = FoliageSystem.getTile(tileCoord); if (tile != null) { List <IFoliageSurface> value; if (tileSurfacePairs.TryGetValue(tile, out value)) { KeyValuePair <FoliageTile, List <IFoliageSurface> > item = new KeyValuePair <FoliageTile, List <IFoliageSurface> >(tile, value); FoliageSystem.bakeQueue.Enqueue(item); } } } } } FoliageSystem.bakeQueueTotal = FoliageSystem.bakeQueue.Count; if (FoliageSystem.< > f__mg$cache1 == null) { FoliageSystem.< > f__mg$cache1 = new FoliageSystemPostBakeHandler(FoliageSystem.bakeLocalEnd); } FoliageSystem.bakeEnd = FoliageSystem.< > f__mg$cache1; FoliageSystem.bakeEnd(); }
// 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); }
// Token: 0x06000CC3 RID: 3267 RVA: 0x0005E284 File Offset: 0x0005C684 public static FoliageTile getTile(Vector3 worldPosition) { FoliageCoord tileCoord = new FoliageCoord(worldPosition); return(FoliageSystem.getTile(tileCoord)); }