summaryrefslogtreecommitdiff
path: root/src/server.cpp
diff options
context:
space:
mode:
authorlhofhansl <lhofhansl@yahoo.com>2016-11-30 00:13:14 -0800
committerZeno- <kde.psych@gmail.com>2016-11-30 18:13:14 +1000
commit5dc61988788e44bc87e8c57c0beded97d4efdf05 (patch)
treecc812fe691ba6ad62dbe65745d89c86cd974e817 /src/server.cpp
parentc38985825f299999135cc01aaf0052ec9138135a (diff)
downloadminetest-5dc61988788e44bc87e8c57c0beded97d4efdf05.tar.gz
minetest-5dc61988788e44bc87e8c57c0beded97d4efdf05.tar.bz2
minetest-5dc61988788e44bc87e8c57c0beded97d4efdf05.zip
Optimize/adjust blocks/ActiveObjects sent at the server based on client settings. (#4811)
Optimize/adjust blocks and active blocks sent at the server based on client settings.
Diffstat (limited to 'src/server.cpp')
-rw-r--r--src/server.cpp8
1 files changed, 6 insertions, 2 deletions
diff --git a/src/server.cpp b/src/server.cpp
index fe67ac96e..c9d5c7129 100644
--- a/src/server.cpp
+++ b/src/server.cpp
@@ -705,11 +705,15 @@ void Server::AsyncRunStep(bool initial_step)
if (playersao == NULL)
continue;
+ s16 my_radius = MYMIN(radius, playersao->getWantedRange() * MAP_BLOCKSIZE);
+ if (my_radius <= 0) my_radius = radius;
+ //infostream << "Server: Active Radius " << my_radius << std::endl;
+
std::queue<u16> removed_objects;
std::queue<u16> added_objects;
- m_env->getRemovedActiveObjects(playersao, radius, player_radius,
+ m_env->getRemovedActiveObjects(playersao, my_radius, player_radius,
client->m_known_objects, removed_objects);
- m_env->getAddedActiveObjects(playersao, radius, player_radius,
+ m_env->getAddedActiveObjects(playersao, my_radius, player_radius,
client->m_known_objects, added_objects);
// Ignore if nothing happened