namespace UnityEngine.AdaptivePerformance { /// /// A scaler used by to adjust the application update rate using . /// public class AdaptiveFramerate : AdaptivePerformanceScaler { int m_DefaultFPS; /// /// Ensures settings are applied during startup. /// protected override void Awake() { base.Awake(); if (m_Settings == null) return; ApplyDefaultSetting(m_Settings.scalerSettings.AdaptiveFramerate); } /// /// Callback when scaler gets disabled and removed from indexer /// protected override void OnDisabled() { Application.targetFrameRate = m_DefaultFPS; } /// /// Callback when scaler gets enabled and added to the indexer /// protected override void OnEnabled() { m_DefaultFPS = Application.targetFrameRate; Application.targetFrameRate = (int)MaxBound; } /// /// Callback for when the quality level is decreased/scaler level increased. /// protected override void OnLevelIncrease() { base.OnLevelIncrease(); var framerateDecrease = 1; if (Holder.Instance.Indexer.PerformanceAction == StateAction.FastDecrease) framerateDecrease = 5; var fps = Application.targetFrameRate - framerateDecrease; if (fps >= MinBound && fps <= MaxBound) Application.targetFrameRate = fps; } /// /// Callback for when the quality level is increased/scaler level decreased. /// protected override void OnLevelDecrease() { base.OnLevelDecrease(); var fps = Application.targetFrameRate + 5; if (fps >= MinBound && fps <= MaxBound) Application.targetFrameRate = fps; } } }