]> git.localhorst.tv Git - blank.git/blobdiff - src/app/IntervalTimer.hpp
the sound thing
[blank.git] / src / app / IntervalTimer.hpp
index e5d02481e676d9c618388b626b9931f8caf6fc5a..06caa5e21b9bb5c805a1f2e73d68d89c855f8996 100644 (file)
@@ -4,10 +4,16 @@
 
 namespace blank {
 
+/// Timer that hits every n milliseconds. Resolution is that of the
+/// delta values passed to Update(), minimum 1ms.
+/// Also tracks the number of iterations as well as milliseconds
+/// passed.
 class IntervalTimer {
 
 public:
-       explicit IntervalTimer(int interval_ms) noexcept
+       /// Create a timer that hits every interval_ms milliseconds.
+       /// Initial state is stopped.
+       explicit IntervalTimer(int interval_ms = 0) noexcept
        : intv(interval_ms) { }
 
        void Start() noexcept {
@@ -17,13 +23,20 @@ public:
                value = 0;
                speed = 0;
        }
+       void Reset() noexcept {
+               value = 0;
+       }
 
        bool Running() const noexcept {
                return speed != 0;
        }
+       /// true if an interval boundary was passed by the last call to Update()
        bool Hit() const noexcept {
                return Running() && value % intv < last_dt;
        }
+       bool HitOnce() const noexcept {
+               return Running() && value >= intv;
+       }
        int Elapsed() const noexcept {
                return value;
        }