Browse Source

Add simple timer functionality to Timeline

v2: Address style issues (by mosra), add documentation, and add
    currentFrameTime() for consistency with existing code.
pull/604/head
Stanislaw Halik 4 years ago
parent
commit
7a322733f1
  1. 15
      src/Magnum/Timeline.cpp
  2. 16
      src/Magnum/Timeline.h

15
src/Magnum/Timeline.cpp

@ -61,4 +61,19 @@ Float Timeline::previousFrameTime() const {
return duration_cast<microseconds>(_previousFrameTime-_startTime).count()/1e6f; return duration_cast<microseconds>(_previousFrameTime-_startTime).count()/1e6f;
} }
Float Timeline::currentFrameDuration() const {
if (!running) return 0;
auto now = high_resolution_clock::now();
auto duration = UnsignedInt(duration_cast<microseconds>(now-_previousFrameTime).count());
return duration/1e6f;
}
Float Timeline::currentFrameTime() const {
if (!running) return 0;
auto now = high_resolution_clock::now();
return duration_cast<microseconds>(now-_startTime).count()/1e6f;
}
} }

16
src/Magnum/Timeline.h

@ -134,6 +134,22 @@ class MAGNUM_EXPORT Timeline {
*/ */
Float previousFrameDuration() const { return _previousFrameDuration; } Float previousFrameDuration() const { return _previousFrameDuration; }
/**
* @brief Time since the last frame (in seconds)
*
* Returns time elapsed since nextFrame() was called. If the timeline is
* stopped, the function returns @cpp 0.0f @ce.
*/
Float currentFrameDuration() const;
/**
* @brief Present time (in seconds)
*
* Returns time elapsed since start() was called. If the timeline is
* stopped, the function returns @cpp 0.0f @ce.
*/
Float currentFrameTime() const;
private: private:
std::chrono::high_resolution_clock::time_point _startTime; std::chrono::high_resolution_clock::time_point _startTime;
std::chrono::high_resolution_clock::time_point _previousFrameTime; std::chrono::high_resolution_clock::time_point _previousFrameTime;

Loading…
Cancel
Save