, skeletons()
, spawner(world, skeletons, gc.seed)
, server(sc, world)
-, push_timer(16) {
+, loop_timer(16) {
TextureIndex tex_index;
env.loader.LoadBlockTypes("default", block_types, tex_index);
skeletons.LoadHeadless();
- push_timer.Start();
+ loop_timer.Start();
std::cout << "listening on UDP port " << sc.port << std::endl;
}
void ServerState::Update(int dt) {
- push_timer.Update(dt);
+ loop_timer.Update(dt);
server.Handle();
- spawner.Update(dt);
- if (!world.Players().empty()) {
- world.Update(dt);
+ int world_dt = 0;
+ while (loop_timer.HitOnce()) {
+ spawner.Update(loop_timer.Interval());
+ world.Update(loop_timer.Interval());
+ world_dt += loop_timer.Interval();
+ loop_timer.PopIteration();
}
- if (push_timer.Hit()) {
- server.Update(dt);
+ chunk_loader.Update(dt);
+ if (world_dt > 0) {
+ server.Update(world_dt);
}
}