X-Git-Url: http://git.localhorst.tv/?a=blobdiff_plain;f=src%2Fclient%2Fclient.cpp;h=b79c435473e946de841c7353cb2fb37870923c87;hb=e5caf98d970fe569fd8484dd0d6ea738f8251ae4;hp=d20a98c32bcdcd514d44fb7ef37c5964416f9fb0;hpb=b9462143d9b2fd1f54aa3b4ec32eecb62c01615f;p=blank.git diff --git a/src/client/client.cpp b/src/client/client.cpp index d20a98c..b79c435 100644 --- a/src/client/client.cpp +++ b/src/client/client.cpp @@ -4,6 +4,7 @@ #include "../app/Environment.hpp" #include "../app/init.hpp" +#include "../geometry/distance.hpp" #include "../model/Model.hpp" #include "../io/WorldSave.hpp" #include "../world/ChunkIndex.hpp" @@ -56,7 +57,7 @@ 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) @@ -79,9 +80,6 @@ InteractiveState::InteractiveState(MasterState &master, uint32_t player_id) chunk_renderer.FogDensity(master.GetWorldConf().fog_density); loop_timer.Start(); stat_timer.Start(); - if (save.Exists(player)) { - save.Read(player); - } } void InteractiveState::OnResume() { @@ -160,7 +158,7 @@ void InteractiveState::Update(int dt) { if (input.BlockFocus()) { hud.FocusBlock(input.BlockFocus().GetChunk(), input.BlockFocus().block); } else if (input.EntityFocus()) { - hud.FocusEntity(*input.EntityFocus().entity); + hud.FocusEntity(input.EntityFocus().GetEntity()); } else { hud.FocusNone(); } @@ -189,12 +187,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); @@ -349,6 +348,14 @@ void InteractiveState::SetDebug(bool b) { } } +void InteractiveState::NextCamera() { + if (iszero(master.GetEnv().viewport.CameraOffset())) { + master.GetEnv().viewport.OffsetCamera(glm::vec3(0.0f, 0.0f, -5.0f)); + } else { + master.GetEnv().viewport.OffsetCamera(glm::vec3(0.0f, 0.0f, 0.0f)); + } +} + void InteractiveState::Exit() { save.Write(player); master.Quit();