blob: e180be1664f8172e9de6ad2be565a4a197fac148 (
plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
|
using Microsoft.Xna.Framework;
namespace V3
{
/// <summary>
/// A class for telling when to do an update for events with a constant frequency.
/// </summary>
public sealed class UpdatesPerSecond
{
private double mTimeBetweenUpdates;
private double mTimeSinceLastUpdate;
/// <summary>
/// Initializes class.
/// </summary>
/// <param name="frequency">How many updates should be done per second.</param>
public UpdatesPerSecond(double frequency)
{
ChangeFrequency(frequency);
}
/// <summary>
/// Change update frequency.
/// </summary>
/// <param name="frequency">How many updates should be done per second.</param>
private void ChangeFrequency(double frequency)
{
mTimeBetweenUpdates = 1d / frequency;
}
/// <summary>
/// Tells if it is time to do an update.
/// </summary>
/// <param name="gameTime">Current game time.</param>
/// <returns></returns>
public bool IsItTime(GameTime gameTime)
{
mTimeSinceLastUpdate += gameTime.ElapsedGameTime.TotalSeconds;
if (mTimeSinceLastUpdate >= mTimeBetweenUpdates)
{
Reset();
return true;
}
return false;
}
/// <summary>
/// Reset internal timer for checking if update should be done.
/// </summary>
private void Reset()
{
mTimeSinceLastUpdate = 0;
}
}
}
|