X-Git-Url: https://git.localhorst.tv/?a=blobdiff_plain;f=src%2Fclient%2Fclient.cpp;h=232ba250eaa9236ff4fd9a4603a85ab9449536f9;hb=fa73e3600dee78063ab95e1903172ab339dcd4bd;hp=0eec9847b0473e666197052dd6b3f668d40411ef;hpb=a957788426ff011acf662e29ec5fc0525c1a578f;p=blank.git diff --git a/src/client/client.cpp b/src/client/client.cpp index 0eec984..232ba25 100644 --- a/src/client/client.cpp +++ b/src/client/client.cpp @@ -56,13 +56,15 @@ InteractiveState::InteractiveState(MasterState &master, uint32_t player_id) , 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()); } @@ -163,7 +165,14 @@ void InteractiveState::Update(int dt) { 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()) { @@ -180,12 +189,13 @@ void InteractiveState::Update(int 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);