38 lines
752 B
C#
38 lines
752 B
C#
using System;
|
|
using System.Diagnostics;
|
|
|
|
namespace _2DGAMELIB
|
|
{
|
|
public class FPS
|
|
{
|
|
public Stopwatch sw = new Stopwatch();
|
|
|
|
private long last_frame;
|
|
public double Value;
|
|
|
|
private double ticks_per_frame;
|
|
public FPS(double FPS)
|
|
{
|
|
Value = FPS;
|
|
ticks_per_frame = (double)Stopwatch.Frequency / FPS;
|
|
sw.Start();
|
|
last_frame = sw.ElapsedTicks;
|
|
}
|
|
|
|
public void FPSFixed(Action Action)
|
|
{
|
|
long current_time = sw.ElapsedTicks;
|
|
|
|
if (current_time - last_frame >= ticks_per_frame)
|
|
{
|
|
Action();
|
|
|
|
Value = (9 * Value + ((double)Stopwatch.Frequency / (sw.ElapsedTicks - last_frame)))/10;
|
|
|
|
last_frame = current_time;
|
|
}
|
|
|
|
}
|
|
}
|
|
}
|