Ejemplo n.º 1
0
 private void btnMin2_Click(object sender, EventArgs e)
 {
     Quality2 -= 1;
     if (Quality2 < 0)
     {
         Quality2        = 0;
         btnMin2.Enabled = false;
     }
     tbQuality2.Text = Quality2.ToString();
 }
    public void DrawSetQuality()
    {
        //Label("Select Quality:");

        //if (_Loader.autoQuality)
        //    GUI.enabled = false;

        Label("Graphics Quality");
        GUILayout.BeginHorizontal();

        if (!androidPlatform)
        {
            _Loader.autoQuality = GlowButton("Auto", _Loader.autoQuality) || _Loader.autoQuality;
        }
        Quality2 q = (Quality2)Toolbar(autoQuality ? -1 : (int)quality, Enum.GetNames(typeof(Quality2)), false, false, android || flash ? 4 : 99, -1, false);

        GUILayout.EndHorizontal();
        if (quality != q && (int)q != -1)
        {
            _Loader.autoQuality = false;
            drawDistanceSet     = false;
            StartCoroutine(SetQuality(q));
        }

        //GUI.enabled = true;
        if (Application.platform != RuntimePlatform.Android)
        {
            bool shadows = Toggle(_Loader.shadows, "Enable shadows");
            if (shadows != _Loader.shadows)
            {
                _Loader.shadows = shadows;
                UpdateShadows();
            }
        }
#if blur
        if (highQuality)
        {
            var mb = Toggle(_Loader.enableBlur, "Motion blur");
            if (mb != _Loader.enableBlur)
            {
                _Loader.enableBlur = mb;
                StartCoroutine(SetQuality(quality));
            }
        }
#endif
        if (UltraQuality)
        {
            bool bloom = Toggle(_Loader.enableBloom, "Enable Bloom");
            if (bloom != _Loader.enableBloom)
            {
                _Loader.enableBloom = bloom;
                StartCoroutine(SetQuality(quality));
            }
        }
    }
    //private Material oldSky;
    public IEnumerator SetQuality(Quality2 q)
    {
        Debug.LogWarning("SetQuality:" + q);
        //return;
        //if (!webPlayer && q == Quality.Ultra)
        //{
        //    if (_Loader.quality == Quality.High) return;
        //    q = Quality.High;
        //}
        _Loader.quality = q;

        //if (Application.platform == RuntimePlatform.Android && _Game == null)
        //    q = Quality.Low;
        if (!drawDistanceSet)
        {
            if (android)
            {
                _Loader.drawDistance = q == Quality2.Lowest ? 150 : q <= Quality2.Low ? 200 : q == Quality2.Medium ? 300 : 500;
            }
            else
            {
                _Loader.drawDistance = q == Quality2.Lowest ? 200 : q == Quality2.Low ? 1200 : 10000;
            }
        }
        if (q < Quality2.Lowest)
        {
            q = Quality2.Lowest;
        }
        if (q > Quality2.Ultra)
        {
            q = Quality2.Ultra;
        }
        if (!android)
        {
            var qlevel = q >= Quality2.Medium ? 5 : q >= Quality2.Low && !android ? 3 : 0;
            if (QualitySettings.GetQualityLevel() != qlevel)
            {
                QualitySettings.SetQualityLevel(qlevel, !autoQuality);
            }
        }
        RenderSettings.fog = q > Quality2.Low;

        fixedDeltaTime          = Time.fixedDeltaTime = q < Quality2.Low ? 0.01f : 0.005f;
        Shader.globalMaximumLOD = q > Quality2.Low ? 600 : 100;
        //if (android)
        //{
        //    QualitySettings.vSyncCount = 0;
        //    Application.targetFrameRate = -1;
        //}


        //if (autoQuality)
        _Loader.shadows = q >= Quality2.High && !(flash && splitScreen);

        UpdateShadows();
        //if (game)
        //{
        var findGameObjectWithTag = GameObject.FindGameObjectWithTag("RearCamera");

        if (findGameObjectWithTag != null)
        {
            findGameObjectWithTag.camera.enabled = q > Quality2.Low && _Loader.rearCamera;
        }
        foreach (Camera a in Camera.allCameras)
        {
            if (a.tag == Tag.mainCamera || a.tag == Tag.rearCamera)
            //if (a.name != "Hud")
            {
                //print(a.clearFlags);

                if (q < Quality2.Low)
                {
                    RenderSettings.skybox = null;
                }


                a.renderingPath = q <= Quality2.Low ? RenderingPath.VertexLit : RenderingPath.DeferredLighting;
                print(a.renderingPath);
                //if (setting.hideCull || q == Quality2.Lowest && android)
                //    a.cullingMask &= ~(1 << Layer.cull);
                //else
                //    a.cullingMask |= 1 << Layer.cull;

                if (android && lowQuality)
                {
                    a.cullingMask &= ~(1 << Layer.stadium);
                }
                else
                {
                    a.cullingMask |= 1 << Layer.stadium;
                }

                if (android && lowQuality)
                {
                    a.cullingMask &= ~(1 << Layer.water);
                }
                else
                {
                    a.cullingMask |= 1 << Layer.water;
                }

                a.backgroundColor = RenderSettings.fogColor;
                a.farClipPlane    = lowQuality && android ? 1000 : 10000;

                a.hdr = _Loader.enableBloom;

                //if (_Loader.levelEditor == null)
                a.nearClipPlane = android ? .3f : .1f;
            }
        }
        //}
        if (_MapLoader != null && _MapLoader.terrain != null)
        {
            _MapLoader.terrain.gameObject.SetActive(!lowQuality || _Loader.dm);
            //_MapLoader.terrain.collider.enabled = _MapLoader.terrain.enabled = (!lowQuality || _Loader.dm);
            if (android)
            {
                _MapLoader.terrain.heightmapMaximumLOD = 1;
            }
            _MapLoader.terrain.editorRenderFlags = highOrNotAndroid ? TerrainRenderFlags.all : TerrainRenderFlags.heightmap | TerrainRenderFlags.details;
        }
        foreach (AudioReverbFilter a in FindObjectsOfType(typeof(AudioReverbFilter)))
        {
            a.enabled = medium;
        }

        foreach (MonoBehaviour a in FindObjectsOfType(typeof(PostEffectsBase)))
        {
            EnablePostEffect(a);
        }
        foreach (MonoBehaviour a in FindObjectsOfType(typeof(SSAOEffect)))
        {
            EnablePostEffect(a);
        }
#if blur
        foreach (MonoBehaviour a in FindObjectsOfType(typeof(AmplifyMotionEffect)))
        {
            a.enabled = _Loader.enableBlur && highQuality;
        }
#endif

        foreach (SunShafts efect in FindObjectsOfType(typeof(SunShafts)))
        {
            foreach (Light lt in FindObjectsOfType(typeof(Light)).Cast <Light>().Where(b => b.type == LightType.Directional))
            {
                if (lt.flare != null)
                {
                    lt.enabled = !UltraQuality;
                }
                else
                {
                    efect.sunTransform = lt.transform;
                }
            }
        }

        if (_Loader.levelEditor == null && _Game != null)
        {
            UpdateMaterials();
        }
        //if (android && _Game != null)
        //{
        //    if (_Player != null)
        //        _Player.hud.gameObject.SetActive(quality > Quality2.Medium);
        //    if (_Player2 != null)
        //        _Player2.hud.gameObject.SetActive(quality > Quality2.Medium);
        //}
        UpdateCull();

        if (!flash)
        {
            Application.targetFrameRate = -1;
            int vSyncCount = setting.fps10 ? 0 : isDebug || !lowQuality ? 1 : 0;
            QualitySettings.vSyncCount = vSyncCount;
            print("Set Vsync " + vSyncCount);
        }

        yield return(null);
    }
    //private Material oldSky;
    public IEnumerator SetQuality(Quality2 q)
    {
        Debug.LogWarning("SetQuality:" + q);
        //return;
        //if (!webPlayer && q == Quality.Ultra)
        //{
        //    if (_Loader.quality == Quality.High) return;
        //    q = Quality.High;
        //}
        _Loader.quality = q;
        
        //if (Application.platform == RuntimePlatform.Android && _Game == null)
        //    q = Quality.Low;
        if (!drawDistanceSet)
        {
            if (android)
                _Loader.drawDistance = q == Quality2.Lowest ? 150 : q <= Quality2.Low ? 200 : q == Quality2.Medium ? 300 : 500;
            else
                _Loader.drawDistance = q == Quality2.Lowest ? 200 : q == Quality2.Low ? 1200 : 10000;
        }
        if (q < Quality2.Lowest) q = Quality2.Lowest;
        if (q > Quality2.Ultra) q = Quality2.Ultra;
        if (!android)
        {
            var qlevel = q >= Quality2.Medium ? 5 : q >= Quality2.Low && !android ? 3 : 0;
            if (QualitySettings.GetQualityLevel() != qlevel)
                QualitySettings.SetQualityLevel(qlevel, !autoQuality);
        }
        RenderSettings.fog = q > Quality2.Low;

        fixedDeltaTime = Time.fixedDeltaTime = q < Quality2.Low ? 0.01f : 0.005f;
        Shader.globalMaximumLOD = q > Quality2.Low ? 600 : 100;
        //if (android)
        //{
        //    QualitySettings.vSyncCount = 0;
        //    Application.targetFrameRate = -1;
        //}
        

        //if (autoQuality)
        _Loader.shadows = q >= Quality2.High && !(flash && splitScreen);
        
        UpdateShadows();
        //if (game)
        //{
        var findGameObjectWithTag = GameObject.FindGameObjectWithTag("RearCamera");
        if (findGameObjectWithTag != null)
            findGameObjectWithTag.camera.enabled = q > Quality2.Low && _Loader.rearCamera;
        foreach (Camera a in Camera.allCameras)
            if (a.tag == Tag.mainCamera || a.tag == Tag.rearCamera)
            //if (a.name != "Hud")
            {
                //print(a.clearFlags);

                if (q < Quality2.Low)
                    RenderSettings.skybox = null;
                
                
                a.renderingPath = q <= Quality2.Low ? RenderingPath.VertexLit : RenderingPath.DeferredLighting;
                print(a.renderingPath);
                //if (setting.hideCull || q == Quality2.Lowest && android)
                //    a.cullingMask &= ~(1 << Layer.cull);
                //else
                //    a.cullingMask |= 1 << Layer.cull;

                    if (android && lowQuality)
                        a.cullingMask &= ~(1 << Layer.stadium);
                    else
                        a.cullingMask |= 1 << Layer.stadium;

                    if (android && lowQuality)
                        a.cullingMask &= ~(1 << Layer.water);
                    else
                        a.cullingMask |= 1 << Layer.water;

                a.backgroundColor = RenderSettings.fogColor;
                a.farClipPlane = lowQuality && android ? 1000 : 10000;

                a.hdr = _Loader.enableBloom;

                //if (_Loader.levelEditor == null)
                    a.nearClipPlane = android ? .3f : .1f;
                
            }
        //}
        if (_MapLoader != null && _MapLoader.terrain != null)
        {
            _MapLoader.terrain.gameObject.SetActive(!lowQuality || _Loader.dm);
            //_MapLoader.terrain.collider.enabled = _MapLoader.terrain.enabled = (!lowQuality || _Loader.dm);
            if (android)
                _MapLoader.terrain.heightmapMaximumLOD = 1;
            _MapLoader.terrain.editorRenderFlags = highOrNotAndroid ? TerrainRenderFlags.all : TerrainRenderFlags.heightmap | TerrainRenderFlags.details;
        }
        foreach (AudioReverbFilter a in FindObjectsOfType(typeof(AudioReverbFilter)))
            a.enabled = medium; 

        foreach (MonoBehaviour a in FindObjectsOfType(typeof(PostEffectsBase)))
            EnablePostEffect(a);
        foreach (MonoBehaviour a in FindObjectsOfType(typeof(SSAOEffect)))
            EnablePostEffect(a);
#if blur
        foreach (MonoBehaviour a in FindObjectsOfType(typeof (AmplifyMotionEffect)))
            a.enabled = _Loader.enableBlur && highQuality;
#endif

        foreach (SunShafts efect in FindObjectsOfType(typeof(SunShafts)))
        {
            foreach (Light lt in FindObjectsOfType(typeof(Light)).Cast<Light>().Where(b => b.type == LightType.Directional))
                if (lt.flare != null)
                    lt.enabled = !UltraQuality;
                else
                    efect.sunTransform = lt.transform;
        }

        if (_Loader.levelEditor == null && _Game != null)
            UpdateMaterials();
        //if (android && _Game != null)
        //{
        //    if (_Player != null)
        //        _Player.hud.gameObject.SetActive(quality > Quality2.Medium);
        //    if (_Player2 != null)
        //        _Player2.hud.gameObject.SetActive(quality > Quality2.Medium);
        //}
        UpdateCull();

        if (!flash)
        {
            Application.targetFrameRate = -1;
            int vSyncCount = setting.fps10 ? 0 : isDebug || !lowQuality ? 1 : 0;
            QualitySettings.vSyncCount = vSyncCount;
            print("Set Vsync " + vSyncCount);
        }
        
        yield return null;
    }
Ejemplo n.º 5
0
 private void btnPlus2_Click(object sender, EventArgs e)
 {
     Quality2       += 1;
     btnMin2.Enabled = true;
     tbQuality2.Text = Quality2.ToString();
 }