Exemple #1
0
    private IEnumerator DoBigProcess()
    {
        levelXLength++;
        levelZLength++;

        yield return(StartCoroutine(CalculateTerrainPartSize()));

        _levelMap = StreetGenerator.GenerateStreetMap(levelZLength, levelXLength, streetsAlongX, streetsAlongZ);
        yield return(null);

        yield return(StartCoroutine(GenerateMesh()));

        CreateTerrainParts(_numberTerrainMeshPartsX * _numberTerrainMeshPartsZ);
        yield return(null);

        yield return(StartCoroutine(GetComponent <BuildingGenerator>().MarkUpLevelArea(_levelMap)));

        yield return(null);

        yield return(StartCoroutine(AssembleTerrainParts()));

        SpawnLevelBorders();
        StaticOcclusionCulling.GenerateInBackground();
        while (StaticOcclusionCulling.isRunning)
        {
            yield return(null);
        }
        yield return(null);

        isDone = true;
        yield return(null);
    }
    public override IEnumerator Execute(UTContext context)
    {
#if UNITY_3_5 || UNITY_4_0 || UNITY_4_0_1 || UNITY_4_1 || UNITY_4_2
        var realCellSize     = viewCellSize.EvaluateIn(context);
        var realNearClipPane = nearClipPane.EvaluateIn(context);
        var realFarClipPane  = farClipPane.EvaluateIn(context);
        var realMemoryLimit  = memoryLimit.EvaluateIn(context);
        var realMode         = mode.EvaluateIn(context);

        Debug.Log("Starting baking of occlusion culling.");

        StaticOcclusionCulling.GenerateInBackground(realCellSize, realNearClipPane, realFarClipPane, realMemoryLimit, realMode);
#else
        var realSmallestOccluder  = smallestOccluder.EvaluateIn(context);
        var realSmallestHole      = smallestHole.EvaluateIn(context);
        var realBackfaceThreshold = backfaceThreshold.EvaluateIn(context);

        Debug.Log("Starting baking of occlusion culling.");

        StaticOcclusionCulling.smallestOccluder  = realSmallestOccluder;
        StaticOcclusionCulling.smallestHole      = realSmallestHole;
        StaticOcclusionCulling.backfaceThreshold = realBackfaceThreshold;

        StaticOcclusionCulling.GenerateInBackground();
#endif
        do
        {
            yield return("");

            if (context.CancelRequested)
            {
                StaticOcclusionCulling.Cancel();
            }
        }while(StaticOcclusionCulling.isRunning);
        Debug.Log("Occlusion culling bake process finished.");
    }
Exemple #3
0
        /// <inheritdoc />
        protected override IEnumerator OnExecute(JobContext context)
        {
            // store old settings for later restoration
            var tempSmallestHole      = StaticOcclusionCulling.smallestHole;
            var tempSmallestOccluder  = StaticOcclusionCulling.smallestOccluder;
            var tempBackfaceThreshold = StaticOcclusionCulling.backfaceThreshold;

            // assign new settings
            StaticOcclusionCulling.smallestHole      = SmallestHole;
            StaticOcclusionCulling.smallestOccluder  = SmallestOccluder;
            StaticOcclusionCulling.backfaceThreshold = Mathf.Clamp(BackfaceThreshold, 5, 100);

            IsSuccess = StaticOcclusionCulling.GenerateInBackground();

            while (StaticOcclusionCulling.isRunning)
            {
                yield return(null);
            }

            // restore default values
            StaticOcclusionCulling.smallestHole      = tempSmallestHole;
            StaticOcclusionCulling.smallestOccluder  = tempSmallestOccluder;
            StaticOcclusionCulling.backfaceThreshold = tempBackfaceThreshold;
        }