X-Git-Url: http://git.localhorst.tv/?a=blobdiff_plain;f=src%2Fui%2Fui.cpp;h=02f2781c5e8f9cdb2326c1933092fd9105569ff1;hb=1bc2f230105ad6e1ee8d999ddc079cd85d244bf9;hp=6c7ab6aa49ff53163b734c271e5fc0b92cf4bff9;hpb=225a7e66ed3f3f03ab458ab39c914ed55cd69600;p=blank.git diff --git a/src/ui/ui.cpp b/src/ui/ui.cpp index 6c7ab6a..02f2781 100644 --- a/src/ui/ui.cpp +++ b/src/ui/ui.cpp @@ -13,11 +13,12 @@ #include "../app/init.hpp" #include "../audio/Audio.hpp" #include "../audio/SoundBank.hpp" +#include "../geometry/distance.hpp" #include "../graphics/Font.hpp" #include "../graphics/Viewport.hpp" #include "../io/TokenStreamReader.hpp" #include "../model/bounds.hpp" -#include "../net/ConnectionHandler.hpp" +#include "../net/CongestionControl.hpp" #include "../world/BlockLookup.hpp" #include "../world/World.hpp" #include "../world/WorldManipulator.hpp" @@ -60,7 +61,13 @@ void PlayerController::SetMovement(const glm::vec3 &m) noexcept { } glm::vec3 PlayerController::ControlForce(const Entity &e, const EntityState &s) const { - return TargetVelocity(rotateY(move_dir * e.MaxVelocity(), s.yaw), s, 5.0f); + if (!iszero(move_dir)) { + // scale input by max velocity, apply yaw, and transform to world space + return TargetVelocity(glm::vec3(glm::vec4(rotateY(move_dir * e.MaxVelocity(), s.yaw), 0.0f) * transpose(e.Transform())), s, 5.0f); + } else { + // target velocity of 0 is the same as halt + return Halt(s, 5.0f); + } } void PlayerController::TurnHead(float dp, float dy) noexcept { @@ -90,10 +97,10 @@ void PlayerController::Invalidate() noexcept { void PlayerController::UpdatePlayer() noexcept { if (dirty) { Ray aim = player.Aim(); - if (!world.Intersection(aim, glm::mat4(1.0f), player.GetEntity().ChunkCoords(), aim_world)) { + if (!world.Intersection(aim, player.GetEntity().ChunkCoords(), aim_world)) { aim_world = WorldCollision(); } - if (!world.Intersection(aim, glm::mat4(1.0f), player.GetEntity(), aim_entity)) { + if (!world.Intersection(aim, player.GetEntity(), aim_entity)) { aim_entity = EntityCollision(); } if (aim_world && aim_entity) { @@ -368,8 +375,8 @@ void HUD::UpdatePosition() { void HUD::UpdateOrientation() { std::stringstream s; - s << std::setprecision(3) << "pitch: " << rad2deg(player.GetEntity().Pitch()) - << ", yaw: " << rad2deg(player.GetEntity().Yaw()); + s << std::setprecision(3) << "pitch: " << glm::degrees(player.GetEntity().Pitch()) + << ", yaw: " << glm::degrees(player.GetEntity().Yaw()); orientation_text.Set(env.assets.small_ui_font, s.str()); } @@ -381,19 +388,21 @@ void HUD::PostMessage(const char *msg) { } -void HUD::UpdateNetStats(const ConnectionHandler &conn) { +void HUD::UpdateNetStats(const CongestionControl &stat) { + if (!config.video.debug) return; + std::stringstream s; s << std::fixed << std::setprecision(1) - << "TX: " << conn.Upstream() - << "KB/s, RX: " << conn.Downstream() << "KB/s"; + << "TX: " << stat.Upstream() + << "KB/s, RX: " << stat.Downstream() << "KB/s"; bandwidth_text.Set(env.assets.small_ui_font, s.str()); s.str(""); - s << "RTT: " << conn.RoundTripTime() << "ms"; + s << "RTT: " << stat.RoundTripTime() << "ms"; rtt_text.Set(env.assets.small_ui_font, s.str()); s.str(""); - s << "Packet loss: " << (conn.PacketLoss() * 100.0f) << "%"; + s << "Packet loss: " << (stat.PacketLoss() * 100.0f) << "%"; packet_loss_text.Set(env.assets.small_ui_font, s.str()); show_net = true; @@ -431,6 +440,8 @@ void HUD::Render(Viewport &viewport) noexcept { if (block_visible) { DirectionalLighting &world_prog = viewport.HUDProgram(); world_prog.SetLightDirection({ 1.0f, 3.0f, 5.0f }); + world_prog.SetLightColor({ 1.0f, 1.0f, 1.0f }); + world_prog.SetAmbientColor({ 0.1f, 0.1f, 0.1f }); // disable distance fog world_prog.SetFogDensity(0.0f); @@ -507,7 +518,6 @@ Interface::Interface( , client_ctrl(cc) , fwd(0) , rev(0) -, slot(0) , num_slots(10) , locked(false) { @@ -707,7 +717,7 @@ void Interface::UpdateMovement() { } void Interface::InvAbs(int s) { - slot = s % num_slots; + int slot = s % num_slots; while (slot < 0) { slot += num_slots; } @@ -715,7 +725,7 @@ void Interface::InvAbs(int s) { } void Interface::InvRel(int delta) { - InvAbs(slot + delta); + InvAbs(player_ctrl.GetPlayer().GetInventorySlot() + delta); }