internal void OnQualitySettingsChanged(QualitySettings settings)
    {
        if (fpsCapped == settings.fpsCap)
        {
            return;
        }

        fpsCapped = settings.fpsCap;
        if (settings.fpsCap)
        {
            controller = new AutoQualityCappedFPSController(TARGET_FPS, currentQualityIndex, qualitySettings);
        }
        else
        {
            controller = new AutoQualityUncappedFPSController(currentQualityIndex, qualitySettings);
        }
    }
    void Start()
    {
        if (autoQualityEnabled == null || qualitySettings == null || qualitySettings.Length == 0)
        {
            return;
        }

        currentQualityIndex = PlayerPrefsUtils.GetInt(LAST_QUALITY_INDEX, (qualitySettings.Length - 1) / 2);

        controller = new AutoQualityUncappedFPSController(currentQualityIndex, qualitySettings);

        Settings.i.OnQualitySettingsChanged += OnQualitySettingsChanged;
        autoQualityEnabled.OnChange         += SetAutoSettings;

        fpsCapped = !Settings.i.currentQualitySettings.fpsCap;
        OnQualitySettingsChanged(Settings.i.qualitySettings);
        SetAutoSettings(autoQualityEnabled.Get(), !autoQualityEnabled.Get());
    }