Exemplo n.º 1
0
    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();
        }
    }
Exemplo n.º 2
0
    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();
        }
    }