private IEnumerator CollectSourcesAsync(Action callback) { float time = Time.get_realtimeSinceStartup(); Debug.Log((object)"Starting Navmesh Source Collecting."); NavMeshBuilder.CollectSources(this.Bounds, LayerMask.op_Implicit(this.LayerMask), this.NavMeshCollectGeometry, this.defaultArea, new List <NavMeshBuildMarkup>(), this.sources); if (Object.op_Inequality((Object)TerrainMeta.HeightMap, (Object)null)) { for (float x = (float)-((Bounds) ref this.Bounds).get_extents().x; (double)x < ((Bounds) ref this.Bounds).get_extents().x; x += (float)this.AsyncTerrainNavMeshBakeCellSize) { for (float z = (float)-((Bounds) ref this.Bounds).get_extents().z; (double)z < ((Bounds) ref this.Bounds).get_extents().z; z += (float)this.AsyncTerrainNavMeshBakeCellSize) { AsyncTerrainNavMeshBake terrainSource = new AsyncTerrainNavMeshBake(new Vector3(x, 0.0f, z), this.AsyncTerrainNavMeshBakeCellSize, this.AsyncTerrainNavMeshBakeCellHeight, false, true); yield return((object)terrainSource); this.terrainBakes.Add(terrainSource); this.sources.Add(terrainSource.CreateNavMeshBuildSource(true)); terrainSource = (AsyncTerrainNavMeshBake)null; } } } this.AppendModifierVolumes(ref this.sources); float num = Time.get_realtimeSinceStartup() - time; if ((double)num > 0.100000001490116) { Debug.LogWarning((object)("Calling CollectSourcesAsync took " + (object)num)); } if (callback != null) { callback(); } }
private IEnumerator CollectSourcesAsync(Action callback) { MonumentNavMesh monumentNavMesh = null; float single = UnityEngine.Time.realtimeSinceStartup; UnityEngine.Debug.Log("Starting Navmesh Source Collecting."); List <NavMeshBuildMarkup> navMeshBuildMarkups = new List <NavMeshBuildMarkup>(); NavMeshBuilder.CollectSources(monumentNavMesh.Bounds, monumentNavMesh.LayerMask, monumentNavMesh.NavMeshCollectGeometry, monumentNavMesh.defaultArea, navMeshBuildMarkups, monumentNavMesh.sources); if (TerrainMeta.HeightMap != null) { for (float i = -monumentNavMesh.Bounds.extents.x; i < monumentNavMesh.Bounds.extents.x; i += (float)monumentNavMesh.CellSize) { for (float j = -monumentNavMesh.Bounds.extents.z; j < monumentNavMesh.Bounds.extents.z; j += (float)monumentNavMesh.CellSize) { AsyncTerrainNavMeshBake asyncTerrainNavMeshBake = new AsyncTerrainNavMeshBake(monumentNavMesh.Bounds.center + new Vector3(i, 0f, j), monumentNavMesh.CellSize, monumentNavMesh.Height, false, true); yield return(asyncTerrainNavMeshBake); monumentNavMesh.terrainBakes.Add(asyncTerrainNavMeshBake); NavMeshBuildSource navMeshBuildSource = asyncTerrainNavMeshBake.CreateNavMeshBuildSource(true); navMeshBuildSource.area = monumentNavMesh.defaultArea; monumentNavMesh.sources.Add(navMeshBuildSource); asyncTerrainNavMeshBake = null; } } } monumentNavMesh.AppendModifierVolumes(ref monumentNavMesh.sources); float single1 = UnityEngine.Time.realtimeSinceStartup - single; if (single1 > 0.1f) { UnityEngine.Debug.LogWarning(string.Concat("Calling CollectSourcesAsync took ", single1)); } if (callback != null) { callback(); } }