ContinuousClock.cs 836 B

123456789101112131415161718192021222324252627282930313233343536
  1. using System;
  2. using Microsoft.Xna.Framework;
  3. namespace MonoGame.Extended.Timers
  4. {
  5. public class ContinuousClock : GameTimer
  6. {
  7. public ContinuousClock(double intervalSeconds)
  8. : base(intervalSeconds)
  9. {
  10. }
  11. public ContinuousClock(TimeSpan interval)
  12. : base(interval)
  13. {
  14. }
  15. public TimeSpan NextTickTime { get; protected set; }
  16. public event EventHandler Tick;
  17. protected override void OnStopped()
  18. {
  19. NextTickTime = CurrentTime + Interval;
  20. }
  21. protected override void OnUpdate(GameTime gameTime)
  22. {
  23. if (CurrentTime >= NextTickTime)
  24. {
  25. NextTickTime = CurrentTime + Interval;
  26. Tick?.Invoke(this, EventArgs.Empty);
  27. }
  28. }
  29. }
  30. }