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