From 5388c37bdc040ba50d21ec16a01f399d20592a90 Mon Sep 17 00:00:00 2001 From: Stijn Buys Date: Sat, 3 May 2008 18:31:13 +0000 Subject: server frame time, rotation snap, flares --- src/core/gameserver.cc | 16 ++++++++++++++-- 1 file changed, 14 insertions(+), 2 deletions(-) (limited to 'src/core/gameserver.cc') diff --git a/src/core/gameserver.cc b/src/core/gameserver.cc index 2169e21..bedab1d 100644 --- a/src/core/gameserver.cc +++ b/src/core/gameserver.cc @@ -32,6 +32,7 @@ GameServer::GameServer() : GameInterface() con_print << "Initializing game server...\n"; server_instance = this; server_network = 0; + server_frametime = 0.0f; server_maxplayerid = 1; server_module = Module::preload(); @@ -255,19 +256,28 @@ void GameServer::frame(float seconds) if (localplayer()->dirty()) localplayer()->update_info(); + float f = 0; + server_frametime += seconds; + if (core::Cvar::sv_framerate->value()) { + f = 1.0f / core::Cvar::sv_framerate->value(); + if (server_frametime < f) { + return; + } + } + // run a time frame on each entity std::map::iterator it; for (it=Entity::registry.begin(); it != Entity::registry.end(); it++) { Entity *entity = (*it).second; if ((entity->type() == Entity::Controlable) || (entity->type() == Entity::Dynamic)) { - entity->frame(seconds); + entity->frame(server_frametime); } } // run a frame on the module if (server_module) { - server_module->frame(seconds); + server_module->frame(server_frametime); if (server_module->error()) { abort(); return; @@ -347,6 +357,8 @@ void GameServer::frame(float seconds) entity->entity_dirty = false; } } + + server_frametime -= f; } -- cgit v1.2.3