1
0
Fork 0

Initial commit

This commit is contained in:
Henrik Hautakoski 2015-12-22 17:43:51 +01:00
commit edfc5298e1
252 changed files with 93965 additions and 0 deletions

View file

@ -0,0 +1,55 @@
#include <Spectre/Game/FPSCounter.h>
#include <Spectre/System/System.h>
FPSCounter::FPSCounter() :
m_fps (60.0f),
m_updateRate (2000)
{
reset();
}
void FPSCounter::addFrame()
{
m_count++;
}
float FPSCounter::getFPS() const
{
return m_fps;
}
void FPSCounter::setUpdateRate(unsigned int ups)
{
// Clamp to 1.
if (ups < 1) {
ups = 1;
}
m_updateRate = ups * 1000;
// Must reset the counter.
reset();
}
bool FPSCounter::update()
{
unsigned int current = System::getMilliseconds();
unsigned int elapsed = current - m_time;
if (elapsed >= m_updateRate) {
float fraction = m_count / ((float) elapsed);
m_fps = fraction * 1000.f;
m_time = current;
m_count = 0;
return true;
}
return false;
}
void FPSCounter::reset()
{
m_time = System::getMilliseconds();
m_count = 0;
}

76
source/Game/GameTime.cpp Normal file
View file

@ -0,0 +1,76 @@
#include <iostream>
#include <Spectre/Game/GameTime.h>
#include <Spectre/System/System.h>
GameTime::GameTime(unsigned long updates_per_sec)
{
m_acc = 0;
m_current = System::getMilliseconds();
m_lastUpdate = m_current;
setTimeStep(updates_per_sec);
}
double GameTime::getTimeStep() const
{
return m_slice;
}
void GameTime::setTimeStep(unsigned long updates_per_sec)
{
m_slice = (1000.0f / ((double) updates_per_sec));
reset();
}
unsigned long GameTime::getElapsed() const
{
return m_current - m_lastUpdate;
}
bool GameTime::beginFrame()
{
reset();
accumulateTime();
if (m_acc > m_slice) {
m_inLoop = true;
}
return m_inLoop;
}
bool GameTime::tick()
{
if (m_acc > m_slice) {
m_acc -= m_slice;
return true;
}
return false;
}
void GameTime::reset()
{
m_lastUpdate = m_current;
m_inLoop = false;
}
void GameTime::accumulateTime()
{
updateTime();
m_acc += (double) (m_current - m_lastUpdate);
if (m_acc > (1000.f / m_slice)) {
m_acc = 1000.f / m_slice;
}
}
void GameTime::updateTime()
{
m_current = System::getMilliseconds();
// Just to be safe. check so we don't get a negative interval.
if (m_current < m_lastUpdate) {
m_lastUpdate = m_current;
}
}