aboutsummaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorRogier-5 <rogier777@gmail.com>2016-12-11 19:49:49 +0100
committerest31 <est31@users.noreply.github.com>2016-12-11 19:49:49 +0100
commit60772071e9b63c24a939078c706b713f46bf3279 (patch)
treebf4fd991f240a81a8f3fbc99e382b757ee4ec5f1 /src
parent2886f0ccb06af04927d4cd661eaf82a253426c05 (diff)
downloadminetest-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.cpp5
-rw-r--r--src/game.cpp2
-rw-r--r--src/network/networkprotocol.h2
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,