//$ Copyright 2015-22, Code Respawn Technologies Pvt Ltd - All Rights Reserved $//
namespace DungeonArchitect.Editors
{
///
/// Ticks every few milli-seconds
///
public class Timer
{
private float hertz;
///
/// Ticks per second
///
public float Hertz
{
get
{
return hertz;
}
set
{
hertz = value;
if (hertz == 0)
{
hertz = 1e-6f;
}
frameTime = 1.0f / hertz;
}
}
float frameTime;
float timeSinceFrameStart = 0;
public delegate void OnTick(float elapsedTime);
public event OnTick Tick;
public Timer()
{
Hertz = 30;
}
///
/// Update should be called once per frame
///
/// The frame time between calls
public void Update(float deltaSeconds)
{
timeSinceFrameStart += deltaSeconds;
if (timeSinceFrameStart >= frameTime)
{
timeSinceFrameStart = 0;
if (Tick != null)
{
Tick(frameTime);
}
}
}
}
}