diff options
author | Rogier-5 <rogier777@gmail.com> | 2016-12-11 19:49:49 +0100 |
---|---|---|
committer | est31 <est31@users.noreply.github.com> | 2016-12-11 19:49:49 +0100 |
commit | 60772071e9b63c24a939078c706b713f46bf3279 (patch) | |
tree | bf4fd991f240a81a8f3fbc99e382b757ee4ec5f1 /src | |
parent | 2886f0ccb06af04927d4cd661eaf82a253426c05 (diff) | |
download | minetest-60772071e9b63c24a939078c706b713f46bf3279.tar.gz minetest-60772071e9b63c24a939078c706b713f46bf3279.tar.bz2 minetest-60772071e9b63c24a939078c706b713f46bf3279.zip |
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).
Diffstat (limited to 'src')
-rw-r--r-- | src/client.cpp | 5 | ||||
-rw-r--r-- | src/game.cpp | 2 | ||||
-rw-r--r-- | 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 <iostream> #include <algorithm> #include <sstream> +#include <cmath> #include <IFileSystem.h> #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, |