// Token: 0x06000C11 RID: 3089 RVA: 0x0005BF23 File Offset: 0x0005A323 public virtual void bakeFoliage(FoliageBakeSettings bakeSettings, IFoliageSurface surface, Bounds bounds, float surfaceWeight, float collectionWeight) { if (!this.isSurfaceWeightValid(surfaceWeight)) { return; } this.bakeFoliageSteps(surface, bounds, surfaceWeight, collectionWeight, new FoliageInfoAsset.BakeFoliageStepHandler(this.handleBakeFoliageStep)); }
public virtual void bakeFoliage(FoliageBakeSettings bakeSettings, IFoliageSurface surface, Bounds bounds, float weight) { foreach (FoliageInfoCollectionAsset.FoliageInfoCollectionElement foliageInfoCollectionElement in this.elements) { FoliageInfoAsset foliageInfoAsset = Assets.find <FoliageInfoAsset>(foliageInfoCollectionElement.asset); if (foliageInfoAsset != null) { foliageInfoAsset.bakeFoliage(bakeSettings, surface, bounds, weight, foliageInfoCollectionElement.weight); } } }
protected virtual void handleBakeFoliageStep(IFoliageSurface surface, Bounds bounds, float surfaceWeight, float collectionWeight) { Vector3 testPosition = this.getTestPosition(bounds); Vector3 surfacePosition; Vector3 surfaceNormal; if (!surface.getFoliageSurfaceInfo(testPosition, out surfacePosition, out surfaceNormal)) { return; } this.addFoliageToSurface(surfacePosition, surfaceNormal, true, false); }
// Token: 0x06000C49 RID: 3145 RVA: 0x0005CB19 File Offset: 0x0005AF19 public override void bakeFoliage(FoliageBakeSettings bakeSettings, IFoliageSurface surface, Bounds bounds, float surfaceWeight, float collectionWeight) { if (!bakeSettings.bakeInstancesMeshes) { return; } if (bakeSettings.bakeClear) { return; } base.bakeFoliage(bakeSettings, surface, bounds, surfaceWeight, collectionWeight); }
protected virtual void bakeFoliageSteps(IFoliageSurface surface, Bounds bounds, float surfaceWeight, float collectionWeight, FoliageInfoAsset.BakeFoliageStepHandler callback) { float num = surfaceWeight * collectionWeight; float num2 = bounds.size.x * bounds.size.z; float num3 = num2 / this.density * num; int num4 = Mathf.FloorToInt(num3); if (Random.value < num3 - (float)num4) { num4++; } for (int i = 0; i < num4; i++) { callback(surface, bounds, surfaceWeight, collectionWeight); } }
// Token: 0x06000CAD RID: 3245 RVA: 0x0005D890 File Offset: 0x0005BC90 public static void addSurface(IFoliageSurface surface) { FoliageSystem.surfaces.Add(surface); }
// Token: 0x06000CAE RID: 3246 RVA: 0x0005D89D File Offset: 0x0005BC9D public static void removeSurface(IFoliageSurface surface) { FoliageSystem.surfaces.Remove(surface); }