diff options
-rw-r--r-- | README.md | 5 | ||||
-rw-r--r-- | globalstep.lua | 25 |
2 files changed, 19 insertions, 11 deletions
@@ -2,8 +2,9 @@ ## Settings -* `mesecons_debug.circuit_breaker` Max time usage per mapblock in micros per 10 seconds. -* `mesecons_debug.dark_timer` Dark time in microseconds: how long the mapblock stays inactive. +* `mesecons_debug_max_globalstep_time` +* `mesecons_debug_cooldown_steps` +* `mesecons_debug_autoflush` ## Commands diff --git a/globalstep.lua b/globalstep.lua index 7df1970..bb4bf34 100644 --- a/globalstep.lua +++ b/globalstep.lua @@ -16,19 +16,26 @@ for i, globalstep in ipairs(minetest.registered_globalsteps) do local cooldown = 0 local fn = function(dtime) if cooldown > 0 then - cooldown = cooldown - 1 - return + cooldown = cooldown - 1 + return end if enabled then - local t0 = minetest.get_us_time() + local max_globalstep_time = tonumber(minetest.settings:get("mesecons_debug_max_globalstep_time", "75000")) + local cooldown_steps = tonumber(minetest.settings:get("mesecons_debug_cooldown_steps", "5")) + local autoflush = tonumber(minetest.settings:get_bool("mesecons_debug_autoflush", false)) + + local t0 = minetest.get_us_time() globalstep(dtime) - local t1 = minetest.get_us_time() - local diff = t1 - t0 - if diff > 75000 then - cooldown = 5 - minetest.log("warning", "[mesecons_debug] cooldown triggered") - end + local t1 = minetest.get_us_time() + local diff = t1 - t0 + if diff > max_globalstep_time then + cooldown = cooldown_steps + minetest.log("warning", "[mesecons_debug] cooldown triggered") + if autoflush then + mesecon.queue.actions = {} + end + end end end |