using Microsoft.Xna.Framework;
namespace V3
{
///
/// A class for telling when to do an update for events with a constant frequency.
///
public sealed class UpdatesPerSecond
{
private double mTimeBetweenUpdates;
private double mTimeSinceLastUpdate;
///
/// Initializes class.
///
/// How many updates should be done per second.
public UpdatesPerSecond(double frequency)
{
ChangeFrequency(frequency);
}
///
/// Change update frequency.
///
/// How many updates should be done per second.
private void ChangeFrequency(double frequency)
{
mTimeBetweenUpdates = 1d / frequency;
}
///
/// Tells if it is time to do an update.
///
/// Current game time.
///
public bool IsItTime(GameTime gameTime)
{
mTimeSinceLastUpdate += gameTime.ElapsedGameTime.TotalSeconds;
if (mTimeSinceLastUpdate >= mTimeBetweenUpdates)
{
Reset();
return true;
}
return false;
}
///
/// Reset internal timer for checking if update should be done.
///
private void Reset()
{
mTimeSinceLastUpdate = 0;
}
}
}