Spread load better in leaf decay trunk caching
authorPerttu Ahola <celeron55@gmail.com>
Sun, 1 Apr 2012 10:46:46 +0000 (13:46 +0300)
committerPerttu Ahola <celeron55@gmail.com>
Sun, 1 Apr 2012 10:46:46 +0000 (13:46 +0300)
mods/default/leafdecay.lua

index a01fe6168baab259aa706eeb939c6dcd158869e3..36b6df87a5a7695f31303c09ad7dd7f518259464 100644 (file)
 
 default.leafdecay_trunk_cache = {}
 default.leafdecay_enable_cache = true
+-- Spread the load of finding trunks
+default.leafdecay_trunk_find_allow_accumulator = 0
+
+minetest.register_globalstep(function(dtime)
+       local finds_per_second = 5000
+       default.leafdecay_trunk_find_allow_accumulator =
+                       math.floor(dtime * finds_per_second)
+end)
 
 minetest.register_abm({
        nodenames = {"group:leafdecay"},
@@ -48,6 +56,11 @@ minetest.register_abm({
                                table.remove(default.leafdecay_trunk_cache, p0_hash)
                        end
                end
+               if default.leafdecay_trunk_find_allow_accumulator <= 0 then
+                       return
+               end
+               default.leafdecay_trunk_find_allow_accumulator =
+                               default.leafdecay_trunk_find_allow_accumulator - 1
                for dx = -d, d do if do_preserve then break end
                for dy = -d, d do if do_preserve then break end
                for dz = -d, d do if do_preserve then break end