X-Git-Url: http://git.localhorst.tv/?a=blobdiff_plain;f=src%2Fserver%2FServerState.cpp;h=76686b0c616119b935a7c0819751f760a8140efa;hb=8368621fd8996569e3ca8fc6fd68ac0168742392;hp=0bec3918c0345bc0e3e836157d3d148ba0ddcac2;hpb=9c5308ba4108bd842af6d9d2e893ea575a7e6ca8;p=blank.git diff --git a/src/server/ServerState.cpp b/src/server/ServerState.cpp index 0bec391..76686b0 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"); @@ -33,6 +33,9 @@ ServerState::ServerState( spawner.LimitModels(1, res.models.size()); server.SetPlayerModel(res.models[0]); + std::cout << "loading spawn chunks" << std::endl; + chunk_loader.LoadN(chunk_loader.ToLoad()); + loop_timer.Start(); std::cout << "listening on UDP port " << config.net.port << std::endl; @@ -58,6 +61,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,10 +82,13 @@ 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; + } } -void ServerState::Render(Viewport &viewport) { +void ServerState::Render(Viewport &) { }