Gonna move to server authority
This commit is contained in:
@@ -0,0 +1,69 @@
|
||||
using UnityEngine;
|
||||
|
||||
namespace FirstGearGames.Utilities.Maths
|
||||
{
|
||||
|
||||
public class FrameRateCalculator
|
||||
{
|
||||
#region Private.
|
||||
/// <summary>
|
||||
/// Time used to generate Frames.
|
||||
/// </summary>
|
||||
private float _timePassed = 0f;
|
||||
/// <summary>
|
||||
/// Frames performed in TimePassed. Float is used to reduce casting.
|
||||
/// </summary>
|
||||
private float _frames = 0;
|
||||
#endregion
|
||||
|
||||
#region Const.
|
||||
/// <summary>
|
||||
/// How many frames to pass before slicing calculation values.
|
||||
/// </summary>
|
||||
private const int RESET_FRAME_COUNT = 60;
|
||||
/// <summary>
|
||||
/// Percentage to slice calculation values by. Higher percentages result in smoother frame rate adjustments.
|
||||
/// </summary>
|
||||
private const float CALCULATION_SLICE_PERCENT = 0.7f;
|
||||
#endregion
|
||||
|
||||
/// <summary>
|
||||
/// Gets the current frame rate.
|
||||
/// </summary>
|
||||
/// <returns></returns>
|
||||
public int GetIntFrameRate()
|
||||
{
|
||||
return Mathf.CeilToInt((_frames / _timePassed));
|
||||
}
|
||||
/// <summary>
|
||||
/// Gets the current frame rate.
|
||||
/// </summary>
|
||||
/// <returns></returns>
|
||||
public float GetFloatFrameRate()
|
||||
{
|
||||
return (_frames / _timePassed);
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Updates frame count and time passed.
|
||||
/// </summary>
|
||||
public bool Update(float unscaledDeltaTime)
|
||||
{
|
||||
_timePassed += unscaledDeltaTime;
|
||||
_frames++;
|
||||
|
||||
if (_frames > RESET_FRAME_COUNT)
|
||||
{
|
||||
_frames *= CALCULATION_SLICE_PERCENT;
|
||||
_timePassed *= CALCULATION_SLICE_PERCENT;
|
||||
return true;
|
||||
}
|
||||
else
|
||||
{
|
||||
return false;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
}
|
||||
Reference in New Issue
Block a user