]> git.localhorst.tv Git - blank.git/blobdiff - src/app/ServerState.cpp
some experiements with state sync
[blank.git] / src / app / ServerState.cpp
index 0be565307308ce330b9a38d793b2be1a5496dc3b..d980cbcc697ce4dda8a4c393bdefb88a0a6398e8 100644 (file)
@@ -24,11 +24,13 @@ ServerState::ServerState(
 , skeletons()
 , spawner(world, skeletons, gc.seed)
 , server(sc, world)
+, loop_timer(16)
 , push_timer(16) {
        TextureIndex tex_index;
        env.loader.LoadBlockTypes("default", block_types, tex_index);
        skeletons.LoadHeadless();
 
+       loop_timer.Start();
        push_timer.Start();
 
        std::cout << "listening on UDP port " << sc.port << std::endl;
@@ -43,10 +45,14 @@ void ServerState::Handle(const SDL_Event &event) {
 
 
 void ServerState::Update(int dt) {
+       loop_timer.Update(dt);
        push_timer.Update(dt);
        server.Handle();
-       spawner.Update(dt);
-       world.Update(dt);
+       while (loop_timer.HitOnce()) {
+               spawner.Update(loop_timer.Interval());
+               world.Update(loop_timer.Interval());
+               loop_timer.PopIteration();
+       }
        chunk_loader.Update(dt);
        if (push_timer.Hit()) {
                server.Update(dt);