Process ABMs in a spherical volume instead of cubic

Increase active_block_range default to a 3 mapblock radius.
This commit is contained in:
Lars Hofhansl 2016-12-10 10:31:17 -08:00 committed by paramat
parent 923a8f1983
commit 2f59a0c840
4 changed files with 8 additions and 5 deletions

@ -758,7 +758,7 @@ active_object_send_range_blocks (Active object send range) int 3
# How large area of blocks are subject to the active block stuff, stated in mapblocks (16 nodes). # How large area of blocks are subject to the active block stuff, stated in mapblocks (16 nodes).
# In active blocks objects are loaded and ABMs run. # In active blocks objects are loaded and ABMs run.
active_block_range (Active block range) int 2 active_block_range (Active block range) int 3
# From how far blocks are sent to clients, stated in mapblocks (16 nodes). # From how far blocks are sent to clients, stated in mapblocks (16 nodes).
max_block_send_distance (Max block send distance) int 10 max_block_send_distance (Max block send distance) int 10

@ -913,7 +913,7 @@
# How large area of blocks are subject to the active block stuff, stated in mapblocks (16 nodes). # How large area of blocks are subject to the active block stuff, stated in mapblocks (16 nodes).
# In active blocks objects are loaded and ABMs run. # In active blocks objects are loaded and ABMs run.
# type: int # type: int
# active_block_range = 2 # active_block_range = 3
# From how far blocks are sent to clients, stated in mapblocks (16 nodes). # From how far blocks are sent to clients, stated in mapblocks (16 nodes).
# type: int # type: int

@ -273,7 +273,7 @@ void set_default_settings(Settings *settings)
settings->setDefault("profiler_print_interval", "0"); settings->setDefault("profiler_print_interval", "0");
settings->setDefault("enable_mapgen_debug_info", "false"); settings->setDefault("enable_mapgen_debug_info", "false");
settings->setDefault("active_object_send_range_blocks", "3"); settings->setDefault("active_object_send_range_blocks", "3");
settings->setDefault("active_block_range", "2"); settings->setDefault("active_block_range", "3");
//settings->setDefault("max_simultaneous_block_sends_per_client", "1"); //settings->setDefault("max_simultaneous_block_sends_per_client", "1");
// This causes frametime jitter on client side, or does it? // This causes frametime jitter on client side, or does it?
settings->setDefault("max_simultaneous_block_sends_per_client", "10"); settings->setDefault("max_simultaneous_block_sends_per_client", "10");

@ -397,10 +397,13 @@ void fillRadiusBlock(v3s16 p0, s16 r, std::set<v3s16> &list)
for(p.Y=p0.Y-r; p.Y<=p0.Y+r; p.Y++) for(p.Y=p0.Y-r; p.Y<=p0.Y+r; p.Y++)
for(p.Z=p0.Z-r; p.Z<=p0.Z+r; p.Z++) for(p.Z=p0.Z-r; p.Z<=p0.Z+r; p.Z++)
{ {
// limit to a sphere
if (p.getDistanceFrom(p0) <= r) {
// Set in list // Set in list
list.insert(p); list.insert(p);
} }
} }
}
void ActiveBlockList::update(std::vector<v3s16> &active_positions, void ActiveBlockList::update(std::vector<v3s16> &active_positions,
s16 radius, s16 radius,