forked from Mirrorlandia_minetest/minetest
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).
This commit is contained in:
parent
2886f0ccb0
commit
60772071e9
@ -20,6 +20,7 @@ with this program; if not, write to the Free Software Foundation, Inc.,
|
|||||||
#include <iostream>
|
#include <iostream>
|
||||||
#include <algorithm>
|
#include <algorithm>
|
||||||
#include <sstream>
|
#include <sstream>
|
||||||
|
#include <cmath>
|
||||||
#include <IFileSystem.h>
|
#include <IFileSystem.h>
|
||||||
#include "threading/mutex_auto_lock.h"
|
#include "threading/mutex_auto_lock.h"
|
||||||
#include "util/auth.h"
|
#include "util/auth.h"
|
||||||
@ -939,7 +940,7 @@ void writePlayerPos(LocalPlayer *myplayer, ClientMap *clientMap, NetworkPacket *
|
|||||||
u32 keyPressed = myplayer->keyPressed;
|
u32 keyPressed = myplayer->keyPressed;
|
||||||
// scaled by 80, so that pi can fit into a u8
|
// scaled by 80, so that pi can fit into a u8
|
||||||
u8 fov = clientMap->getCameraFov() * 80;
|
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 position(pf.X, pf.Y, pf.Z);
|
||||||
v3s32 speed(sf.X, sf.Y, sf.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] s32 yaw*100
|
||||||
[12+12+4+4] u32 keyPressed
|
[12+12+4+4] u32 keyPressed
|
||||||
[12+12+4+4+4] u8 fov*80
|
[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 << position << speed << pitch << yaw << keyPressed;
|
||||||
*pkt << fov << wanted_range;
|
*pkt << fov << wanted_range;
|
||||||
|
@ -4214,7 +4214,7 @@ void Game::updateFrame(ProfilerGraph *graph, RunStats *stats,
|
|||||||
if (draw_control->range_all) {
|
if (draw_control->range_all) {
|
||||||
runData->fog_range = 100000 * BS;
|
runData->fog_range = 100000 * BS;
|
||||||
} else {
|
} else {
|
||||||
runData->fog_range = 0.9 * draw_control->wanted_range * BS;
|
runData->fog_range = draw_control->wanted_range * BS;
|
||||||
}
|
}
|
||||||
|
|
||||||
/*
|
/*
|
||||||
|
@ -652,7 +652,7 @@ enum ToServerCommand
|
|||||||
[2+12+12+4] s32 yaw*100
|
[2+12+12+4] s32 yaw*100
|
||||||
[2+12+12+4+4] u32 keyPressed
|
[2+12+12+4+4] u32 keyPressed
|
||||||
[2+12+12+4+4+1] u8 fov*80
|
[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,
|
TOSERVER_GOTBLOCKS = 0x24,
|
||||||
|
Loading…
Reference in New Issue
Block a user