X-Git-Url: http://git.localhorst.tv/?a=blobdiff_plain;f=src%2Fserver%2FServerState.cpp;h=860b71f4716e24f6d2c6fb8deb96364764bdfc00;hb=3185bad87c06739e4ec19b456c7158437ba9621f;hp=0bec3918c0345bc0e3e836157d3d148ba0ddcac2;hpb=9c5308ba4108bd842af6d9d2e893ea575a7e6ca8;p=blank.git diff --git a/src/server/ServerState.cpp b/src/server/ServerState.cpp index 0bec391..860b71f 100644 --- a/src/server/ServerState.cpp +++ b/src/server/ServerState.cpp @@ -22,7 +22,7 @@ ServerState::ServerState( , world(res.block_types, wc) , generator(gc) , chunk_loader(world.Chunks(), generator, ws) -, spawner(world, res.models, env.rng) +, spawner(world, res.models) , server(config.net, world, wc, ws) , loop_timer(16) { res.Load(env.loader, "default"); @@ -58,6 +58,15 @@ void ServerState::Handle(const SDL_Event &event) { void ServerState::Update(int dt) { loop_timer.Update(dt); + if (!loop_timer.HitOnce() && loop_timer.IntervalRemain() > 1) { + server.Wait(loop_timer.IntervalRemain() - 1); + return; + } + if (dt == 0 && !server.Ready()) { + // effectively wait in a spin loop + return; + } + server.Handle(); int world_dt = 0; while (loop_timer.HitOnce()) { @@ -70,6 +79,9 @@ void ServerState::Update(int dt) { if (world_dt > 0) { server.Update(world_dt); } + if (world_dt > 32) { + std::cout << "world dt at " << world_dt << "ms!" << std::endl; + } }