forked from Mirrorlandia_minetest/minetest
Retrieve mapblocks from the server in a sphere, not a cube
Use unused range argument in 'isBlockInSight()' to limit mapblock sends to a sphere of radius 'max block send distance'.
This commit is contained in:
parent
2b21cac1d8
commit
e7c62edec9
@ -175,6 +175,7 @@ void RemoteClient::GetNextBlocks (
|
|||||||
|
|
||||||
const s16 full_d_max = g_settings->getS16("max_block_send_distance");
|
const s16 full_d_max = g_settings->getS16("max_block_send_distance");
|
||||||
const s16 d_opt = g_settings->getS16("block_send_optimize_distance");
|
const s16 d_opt = g_settings->getS16("block_send_optimize_distance");
|
||||||
|
const s16 d_blocks_in_sight = (full_d_max + 1) * BS * MAP_BLOCKSIZE;
|
||||||
|
|
||||||
s16 d_max = full_d_max;
|
s16 d_max = full_d_max;
|
||||||
s16 d_max_gen = g_settings->getS16("max_block_generate_distance");
|
s16 d_max_gen = g_settings->getS16("max_block_generate_distance");
|
||||||
@ -242,7 +243,7 @@ void RemoteClient::GetNextBlocks (
|
|||||||
*/
|
*/
|
||||||
|
|
||||||
float camera_fov = (72.0*M_PI/180) * 4./3.;
|
float camera_fov = (72.0*M_PI/180) * 4./3.;
|
||||||
if(isBlockInSight(p, camera_pos, camera_dir, camera_fov, 10000*BS) == false)
|
if(isBlockInSight(p, camera_pos, camera_dir, camera_fov, d_blocks_in_sight) == false)
|
||||||
{
|
{
|
||||||
continue;
|
continue;
|
||||||
}
|
}
|
||||||
|
Loading…
Reference in New Issue
Block a user