1
0
Fork 0

Spectre/Game/FPSCounter: Use sp::Time

This commit is contained in:
Henrik Hautakoski 2020-12-14 18:27:18 +01:00
parent 6de6028ba4
commit 919aa7740a
2 changed files with 19 additions and 18 deletions

View file

@ -2,6 +2,8 @@
#ifndef SPECTRE_FPS_COUNTER_H
#define SPECTRE_FPS_COUNTER_H
#include <Spectre/Math/Time.h>
// Simple FPS counter.
namespace sp {
@ -19,7 +21,7 @@ public :
// Set the update rate (in seconds).
// How often the FPS should be sampled and calculated.
void setUpdateRate(unsigned int seconds);
void setUpdateRate(unsigned int rate);
// Update the internal time measurment.
bool update();
@ -29,16 +31,16 @@ public :
private :
// Frame counter.
// Number of frames since last update.
unsigned int m_count;
// time (in ms)
unsigned int m_time;
// Last time we updated the counter.
Time m_time;
// Update rate (in ms)
unsigned int m_updateRate;
// Update rate (at what interval should we update)
Time m_updateRate;
// Calculated fps.
// Calculated Frames per second.
float m_fps;
};

View file

@ -5,9 +5,9 @@
namespace sp {
FPSCounter::FPSCounter() :
m_fps (60.0f),
m_updateRate (2000)
m_fps (60.0f)
{
m_updateRate = Time::seconds(2);
reset();
}
@ -21,14 +21,14 @@ float FPSCounter::getFPS() const
return m_fps;
}
void FPSCounter::setUpdateRate(unsigned int ups)
void FPSCounter::setUpdateRate(unsigned int rate)
{
// Clamp to 1.
if (ups < 1) {
ups = 1;
if (rate < 1) {
rate = 1;
}
m_updateRate = ups * 1000;
m_updateRate = Time::seconds(rate);
// Must reset the counter.
reset();
@ -36,12 +36,11 @@ void FPSCounter::setUpdateRate(unsigned int ups)
bool FPSCounter::update()
{
unsigned int current = system::getMilliseconds();
unsigned int elapsed = current - m_time;
Time current = Time::milliseconds(system::getMilliseconds());
Time elapsed = current - m_time;
if (elapsed >= m_updateRate) {
float fraction = m_count / ((float) elapsed);
m_fps = fraction * 1000.f;
m_fps = m_count / elapsed.seconds();
m_time = current;
m_count = 0;
@ -52,7 +51,7 @@ bool FPSCounter::update()
void FPSCounter::reset()
{
m_time = system::getMilliseconds();
m_time = Time::milliseconds(system::getMilliseconds());
m_count = 0;
}