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;
}
}
}