diff options
author | Stijn Buys <ingar@osirion.org> | 2008-02-21 19:06:15 +0000 |
---|---|---|
committer | Stijn Buys <ingar@osirion.org> | 2008-02-21 19:06:15 +0000 |
commit | 8aa04fc836116a58f8ffd1e0c3539b9ea8a94ddf (patch) | |
tree | bb933edb3919ed67d05b098a6b97a73f01746762 /src/server | |
parent | 41ad1e4c9e2a70d0a8811f4b035f0d3018045e61 (diff) |
dedicated server, entity transfer
Diffstat (limited to 'src/server')
-rw-r--r-- | src/server/server.cc | 18 | ||||
-rw-r--r-- | src/server/timer.cc | 11 |
2 files changed, 19 insertions, 10 deletions
diff --git a/src/server/server.cc b/src/server/server.cc index 4c087b8..c07be52 100644 --- a/src/server/server.cc +++ b/src/server/server.cc @@ -64,18 +64,24 @@ void Server::init() void Server::run() { - const float server_framerate = 1.0f / 20.0f; - server::Timer timer; + float server_framerate = 1.0f / 20.0f; + if (core::Cvar::sv_framerate->value()) + server_framerate = 1.0f / core::Cvar::sv_framerate->value(); - timer.mark(); + server::Timer timer; while(true) { + timer.mark(); + frame(server_framerate); float elapsed = timer.elapsed(); - frame(elapsed); + float sleeptime = server_framerate - elapsed; + if (sleeptime <0) + sleeptime = 0; - sys::sleep(server_framerate - elapsed); - timer.mark(); + sys::sleep(sleeptime); + + } } diff --git a/src/server/timer.cc b/src/server/timer.cc index 946da2c..56075c7 100644 --- a/src/server/timer.cc +++ b/src/server/timer.cc @@ -5,7 +5,9 @@ */ #include "timer.h" + #include <unistd.h> +#include <iostream> namespace server { @@ -26,13 +28,14 @@ void Timer::mark() float Timer::elapsed() { - timeval tick; + struct timeval tick; + struct timezone tick_tz; - gettimeofday(&tick, &timer_tz); + gettimeofday(&tick, &tick_tz); // calculate elapsed time in 10^-6 seconds - long delta = (tick.tv_sec - timer_tick.tv_sec) * 1000000 + (tick.tv_usec - timer_tick.tv_usec); - return( (float) delta / 1000000); + long delta = (tick.tv_sec - timer_tick.tv_sec) * 1000000 + (tick.tv_usec - timer_tick.tv_usec); + return( (float) delta / 1000000.0f); } } |