From 4f75b94c99eeb1642a5ec46144542bfcd18af934 Mon Sep 17 00:00:00 2001 From: Tycho Date: Sun, 11 Jan 2015 01:54:18 +0000 Subject: Created new type cTickTime and rewrote cWorld::TickThread to use it --- src/Globals.h | 3 +++ src/World.cpp | 11 +++++------ 2 files changed, 8 insertions(+), 6 deletions(-) diff --git a/src/Globals.h b/src/Globals.h index 61f500db9..b8e9ec7ed 100644 --- a/src/Globals.h +++ b/src/Globals.h @@ -419,6 +419,8 @@ std::unique_ptr make_unique(Args&&... args) return std::unique_ptr(new T(args...)); } +// a tick is 50 ms +using cTickTime = std::chrono::duration>>; #ifndef TOLUA_TEMPLATE_BIND #define TOLUA_TEMPLATE_BIND(x) @@ -436,3 +438,4 @@ std::unique_ptr make_unique(Args&&... args) + diff --git a/src/World.cpp b/src/World.cpp index c08b44f77..2dd03497b 100644 --- a/src/World.cpp +++ b/src/World.cpp @@ -233,8 +233,7 @@ cWorld::cTickThread::cTickThread(cWorld & a_World) : void cWorld::cTickThread::Execute(void) { auto LastTime = std::chrono::steady_clock::now(); - static const auto msPerTick = std::chrono::milliseconds(50); - auto TickTime = std::chrono::steady_clock::duration(50); + auto TickTime = std::chrono::duration_cast(cTickTime(1)); while (!m_ShouldTerminate) { @@ -242,12 +241,12 @@ void cWorld::cTickThread::Execute(void) auto msec = std::chrono::duration_cast(NowTime - LastTime).count(); auto LastTickMsec = std::chrono::duration_cast>(TickTime).count(); m_World.Tick(static_cast(msec), LastTickMsec); - TickTime = std::chrono::steady_clock::now() - NowTime; + TickTime = std::chrono::duration_cast(std::chrono::steady_clock::now() - NowTime); - if (TickTime < msPerTick) + if (TickTime < cTickTime(1)) { - // Stretch tick time until it's at least msPerTick - std::this_thread::sleep_for(msPerTick - TickTime); + // Stretch tick time until it's at least 1 tick + std::this_thread::sleep_for(cTickTime(1) - TickTime); } LastTime = NowTime; -- cgit v1.2.3