Imported update to FrameRate

This commit is contained in:
Kayne Ruse
2013-06-04 21:11:21 +10:00
parent a8b798ddff
commit a260f29d4f
4 changed files with 39 additions and 17 deletions
+2 -2
View File
@@ -40,7 +40,7 @@ TestSystems::~TestSystems() {
//-------------------------
void TestSystems::FrameStart() {
frameRate.Calculate();
FrameRate::Calculate();
}
void TestSystems::Update(double delta) {
@@ -60,7 +60,7 @@ string IToS(int i) {
void TestSystems::Render(SDL_Surface* const screen) {
playerMgr.DrawAllTo(screen);
font.DrawStringTo("FPS: " + IToS(frameRate.GetFrameRate()), screen, 16, 16);
font.DrawStringTo("FPS: " + IToS(FrameRate::GetFrameRate()), screen, 16, 16);
}
//-------------------------
-2
View File
@@ -45,8 +45,6 @@ protected:
UDPNetworkUtility* netUtil = nullptr;
PlayerManager playerMgr;
FrameRate frameRate;
RasterFont font;
int playerCounter;
+26
View File
@@ -0,0 +1,26 @@
/* Copyright: (c) Kayne Ruse 2013
*
* This software is provided 'as-is', without any express or implied
* warranty. In no event will the authors be held liable for any damages
* arising from the use of this software.
*
* Permission is granted to anyone to use this software for any purpose,
* including commercial applications, and to alter it and redistribute it
* freely, subject to the following restrictions:
*
* 1. The origin of this software must not be misrepresented; you must not
* claim that you wrote the original software. If you use this software
* in a product, an acknowledgment in the product documentation would be
* appreciated but is not required.
*
* 2. Altered source versions must be plainly marked as such, and must not be
* misrepresented as being the original software.
*
* 3. This notice may not be removed or altered from any source
* distribution.
*/
#include "frame_rate.hpp"
int FrameRate::frameCount = 0;
int FrameRate::lastFrameRate = 0;
FrameRate::Clock::time_point FrameRate::tick = FrameRate::Clock::now();
+11 -13
View File
@@ -22,29 +22,27 @@
#ifndef FRAMERATE_HPP_
#define FRAMERATE_HPP_
#include <ctime>
#include <chrono>
class FrameRate {
public:
FrameRate() {
frameCount = lastFrameRate = tick = 0;
}
int Calculate() {
typedef std::chrono::high_resolution_clock Clock;
FrameRate() = delete;
static int Calculate() {
frameCount++;
if (clock() - tick >= CLOCKS_PER_SEC) {
if (Clock::now() - tick >= std::chrono::duration<int>(1)) {
lastFrameRate = frameCount;
frameCount = 0;
tick = clock();
tick = Clock::now();
}
return lastFrameRate;
}
int GetFrameRate() const {
return lastFrameRate;
}
static int GetFrameRate() { return lastFrameRate; }
private:
int frameCount;
int lastFrameRate;
int tick;
static int frameCount;
static int lastFrameRate;
static Clock::time_point tick;
};
#endif