diff --git a/client/test_systems.cpp b/client/test_systems.cpp index 0ecef6e..d7ec323 100644 --- a/client/test_systems.cpp +++ b/client/test_systems.cpp @@ -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); } //------------------------- diff --git a/client/test_systems.hpp b/client/test_systems.hpp index d91cd90..bb22702 100644 --- a/client/test_systems.hpp +++ b/client/test_systems.hpp @@ -45,8 +45,6 @@ protected: UDPNetworkUtility* netUtil = nullptr; PlayerManager playerMgr; - - FrameRate frameRate; RasterFont font; int playerCounter; diff --git a/common/frame_rate.cpp b/common/frame_rate.cpp new file mode 100644 index 0000000..e0be7a7 --- /dev/null +++ b/common/frame_rate.cpp @@ -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(); diff --git a/common/frame_rate.hpp b/common/frame_rate.hpp index df3ff7d..078139a 100644 --- a/common/frame_rate.hpp +++ b/common/frame_rate.hpp @@ -22,29 +22,27 @@ #ifndef FRAMERATE_HPP_ #define FRAMERATE_HPP_ -#include +#include 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(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