From 60772071e9b63c24a939078c706b713f46bf3279 Mon Sep 17 00:00:00 2001 From: Rogier-5 Date: Sun, 11 Dec 2016 19:49:49 +0100 Subject: [PATCH] Fix computation of viewing range (in blocks) sent to server (#4882) Fixes #4878 Also remove an artificial viewing range reduction that (presumably) was added to compensate for miscomputed viewing ranges, and that doesn't seem to be needed any more (thanks to lhofhansl). --- src/client.cpp | 5 +++-- src/game.cpp | 2 +- src/network/networkprotocol.h | 2 +- 3 files changed, 5 insertions(+), 4 deletions(-) diff --git a/src/client.cpp b/src/client.cpp index e9d273c69..7e88e5562 100644 --- a/src/client.cpp +++ b/src/client.cpp @@ -20,6 +20,7 @@ with this program; if not, write to the Free Software Foundation, Inc., #include #include #include +#include #include #include "threading/mutex_auto_lock.h" #include "util/auth.h" @@ -939,7 +940,7 @@ void writePlayerPos(LocalPlayer *myplayer, ClientMap *clientMap, NetworkPacket * u32 keyPressed = myplayer->keyPressed; // scaled by 80, so that pi can fit into a u8 u8 fov = clientMap->getCameraFov() * 80; - u8 wanted_range = clientMap->getControl().wanted_range / MAP_BLOCKSIZE; + u8 wanted_range = std::ceil(clientMap->getControl().wanted_range / MAP_BLOCKSIZE); v3s32 position(pf.X, pf.Y, pf.Z); v3s32 speed(sf.X, sf.Y, sf.Z); @@ -952,7 +953,7 @@ void writePlayerPos(LocalPlayer *myplayer, ClientMap *clientMap, NetworkPacket * [12+12+4] s32 yaw*100 [12+12+4+4] u32 keyPressed [12+12+4+4+4] u8 fov*80 - [12+12+4+4+4+1] u8 wanted_range / MAP_BLOCKSIZE + [12+12+4+4+4+1] u8 ceil(wanted_range / MAP_BLOCKSIZE) */ *pkt << position << speed << pitch << yaw << keyPressed; *pkt << fov << wanted_range; diff --git a/src/game.cpp b/src/game.cpp index cc6e5a0e3..18b28c142 100644 --- a/src/game.cpp +++ b/src/game.cpp @@ -4214,7 +4214,7 @@ void Game::updateFrame(ProfilerGraph *graph, RunStats *stats, if (draw_control->range_all) { runData->fog_range = 100000 * BS; } else { - runData->fog_range = 0.9 * draw_control->wanted_range * BS; + runData->fog_range = draw_control->wanted_range * BS; } /* diff --git a/src/network/networkprotocol.h b/src/network/networkprotocol.h index c9919e1c4..018b392b6 100644 --- a/src/network/networkprotocol.h +++ b/src/network/networkprotocol.h @@ -652,7 +652,7 @@ enum ToServerCommand [2+12+12+4] s32 yaw*100 [2+12+12+4+4] u32 keyPressed [2+12+12+4+4+1] u8 fov*80 - [2+12+12+4+4+4+1] u8 wanted_range / MAP_BLOCKSIZE + [2+12+12+4+4+4+1] u8 ceil(wanted_range / MAP_BLOCKSIZE) */ TOSERVER_GOTBLOCKS = 0x24,