Process ABMs in a spherical volume instead of cubic
authorLars Hofhansl <larsh@apache.org>
Sat, 10 Dec 2016 18:31:17 +0000 (10:31 -0800)
committerparamat <mat.gregory@virginmedia.com>
Sat, 24 Dec 2016 00:28:39 +0000 (00:28 +0000)
Increase active_block_range default to a 3 mapblock radius.

builtin/settingtypes.txt
minetest.conf.example
src/defaultsettings.cpp
src/environment.cpp

index 1818b5a187cb1db97ddde01cfca04cce5e6335ed..3a740f3ca0bf2b828415e55bec019adc7a6a5771 100644 (file)
@@ -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).
 #    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).
 max_block_send_distance (Max block send distance) int 10
index 867d98584251b54a80eb55bacf862af12ce033c5..b1d6c86bd883ef70bd23ea48486729591f66ac0f 100644 (file)
 #    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.
 #    type: int
-# active_block_range = 2
+# active_block_range = 3
 
 #    From how far blocks are sent to clients, stated in mapblocks (16 nodes).
 #    type: int
index 0b4be6322d7fb8022a6579225bca8557ec6cdefe..5bcd7da3dce09bfc983664acb7d8a911d4cc327f 100644 (file)
@@ -273,7 +273,7 @@ void set_default_settings(Settings *settings)
        settings->setDefault("profiler_print_interval", "0");
        settings->setDefault("enable_mapgen_debug_info", "false");
        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");
        // This causes frametime jitter on client side, or does it?
        settings->setDefault("max_simultaneous_block_sends_per_client", "10");
index 13c64b37ccac3e7a3057d7ded92bd1d7a5850a6f..3d4a2efc1616252c3bb51e8e8845df706fe367f3 100644 (file)
@@ -397,8 +397,11 @@ 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.Z=p0.Z-r; p.Z<=p0.Z+r; p.Z++)
        {
-               // Set in list
-               list.insert(p);
+               // limit to a sphere
+               if (p.getDistanceFrom(p0) <= r) {
+                       // Set in list
+                       list.insert(p);
+               }
        }
 }