, manip(master.GetEnv().audio, sounds, player.GetEntity())
, input(world, player, master.GetClient())
, interface(master.GetConfig(), master.GetEnv().keymap, input, *this)
-, chunk_receiver(world.Chunks(), save)
+, chunk_receiver(master.GetClient(), world.Chunks(), save)
, chunk_renderer(player.GetChunks())
, loop_timer(16)
, stat_timer(1000)
, sky(master.GetEnv().loader.LoadCubeMap("skybox"))
, update_status()
-, chat(master.GetEnv(), *this, *this) {
+, chat(master.GetEnv(), *this, *this)
+, time_skipped(0)
+, packets_skipped(0) {
if (!save.Exists()) {
save.Write(master.GetWorldConf());
}
hud.FocusNone();
}
if (world_dt > 0) {
- input.PushPlayerUpdate(world_dt);
+ if (input.UpdateImportant() || packets_skipped >= master.NetStat().SuggestedPacketSkip()) {
+ input.PushPlayerUpdate(time_skipped + world_dt);
+ time_skipped = 0;
+ packets_skipped = 0;
+ } else {
+ time_skipped += world_dt;
+ ++packets_skipped;
+ }
}
hud.Display(res.block_types[player.GetInventorySlot() + 1]);
if (stat_timer.Hit()) {
- hud.UpdateNetStats(master);
+ hud.UpdateNetStats(master.NetStat());
}
hud.Update(dt);
}
void InteractiveState::Render(Viewport &viewport) {
- viewport.WorldPosition(
- player.GetEntity().Transform(player.GetEntity().ChunkCoords())
- * player.GetEntity().GetModel().EyesTransform());
+ viewport.WorldPosition(player.GetEntity().ViewTransform(player.GetEntity().ChunkCoords()));
if (master.GetConfig().video.world) {
chunk_renderer.Render(viewport);
world.Render(viewport);
+ if (master.GetConfig().video.debug) {
+ world.RenderDebug(viewport);
+ }
sky.Render(viewport);
}
hud.Render(viewport);