Esempio n. 1
0
        public IEnumerator ProcessProfile()
        {
            // Pre-arrange
            const int GO_COUNT = 10;

            GameObject[] gos   = new GameObject[GO_COUNT];
            Renderer[]   rends = new Renderer[GO_COUNT];

            for (int i = 0; i < GO_COUNT; i++)
            {
                gos[i] = GameObject.CreatePrimitive(PrimitiveType.Cube);

                if (i >= GO_COUNT >> 1)
                {
                    Object.DestroyImmediate(gos[i].GetComponent <Renderer>());
                    gos[i].AddComponent <SkinnedMeshRenderer>();
                }

                rends[i] = gos[i].GetComponent <Renderer>();
            }

            var settings = cullingController.GetSettingsCopy();

            settings.skinnedRendererProfile.visibleDistanceThreshold         = 0;
            settings.skinnedRendererProfile.emissiveSizeThreshold            = 0;
            settings.skinnedRendererProfile.opaqueSizeThreshold              = 0;
            settings.skinnedRendererProfile.shadowDistanceThreshold          = 0;
            settings.skinnedRendererProfile.shadowRendererSizeThreshold      = 0;
            settings.skinnedRendererProfile.shadowMapProjectionSizeThreshold = 0;

            settings.rendererProfile.visibleDistanceThreshold         = 0;
            settings.rendererProfile.emissiveSizeThreshold            = 0;
            settings.rendererProfile.opaqueSizeThreshold              = 0;
            settings.rendererProfile.shadowDistanceThreshold          = 0;
            settings.rendererProfile.shadowRendererSizeThreshold      = 0;
            settings.rendererProfile.shadowMapProjectionSizeThreshold = 0;

            settings.enableObjectCulling = true;

            cullingController.SetSettings(settings);
            cullingController.objectsTracker.MarkDirty();

            yield return(cullingController.objectsTracker.PopulateRenderersList());

            yield return(cullingController.ProcessProfile(settings.rendererProfile));

            for (int i = 0; i < 5; i++)
            {
                cullingController.Received().SetCullingForRenderer(rends[i], true, true);
            }

            yield return(cullingController.ProcessProfile(settings.skinnedRendererProfile));

            for (int i = 5; i < GO_COUNT; i++)
            {
                cullingController.Received().SetCullingForRenderer(rends[i], true, true);
            }

            // Annihilate
            for (int i = 0; i < GO_COUNT; i++)
            {
                Object.Destroy(gos[i]);
            }
        }