diff options
author | NatureFreshMilk <naturefreshmilk@github.com> | 2019-09-13 16:07:03 +0200 |
---|---|---|
committer | NatureFreshMilk <naturefreshmilk@github.com> | 2019-09-13 16:07:03 +0200 |
commit | adfb1c244db6aacd46e4f80ca142caa83fd47ab8 (patch) | |
tree | 77efda33a7902120c5c49b9c040ac96ce998065d /globalstep.lua | |
parent | da90c6b774d6c3070d10cc8743d5fa97a33dbf6f (diff) | |
download | mesecons_debug-adfb1c244db6aacd46e4f80ca142caa83fd47ab8.tar.gz mesecons_debug-adfb1c244db6aacd46e4f80ca142caa83fd47ab8.zip |
globalstep min delay
Diffstat (limited to 'globalstep.lua')
-rw-r--r-- | globalstep.lua | 22 |
1 files changed, 22 insertions, 0 deletions
diff --git a/globalstep.lua b/globalstep.lua index ccb0b3a..be02e67 100644 --- a/globalstep.lua +++ b/globalstep.lua @@ -3,6 +3,7 @@ local enabled = true local dump = 0 +local step_index = 0 -- globalstep on/off for i, globalstep in ipairs(minetest.registered_globalsteps) do @@ -14,7 +15,15 @@ for i, globalstep in ipairs(minetest.registered_globalsteps) do local modname = info.mod if modname == "mesecons" then + step_index = step_index + 1 + if step_index > 1 then + -- only override first globalstep in mesecons + return + end + local cooldown = 0 + local last_run_time = 0 + local fn = function(dtime) if cooldown > 0 then cooldown = cooldown - 1 @@ -22,19 +31,32 @@ for i, globalstep in ipairs(minetest.registered_globalsteps) do end if enabled then + local max_globalstep_time = tonumber(minetest.settings:get("mesecons_debug_max_globalstep_time")) or 75000 + local min_delay_time = tonumber(minetest.settings:get("mesecons_debug_min_delay_time")) or 200000 local cooldown_steps = tonumber(minetest.settings:get("mesecons_debug_cooldown_steps")) or 5 local autoflush = minetest.settings:get_bool("mesecons_debug_autoflush", false) + local now = minetest.get_us_time() + if (now - last_run_time) < min_delay_time then + -- adhere to min delay + return + end + + last_run_time = now + if dump > 0 then + -- dump action queue mesecons_debug.dump_queue() dump = dump - 1 end + -- execute with time measurement local t0 = minetest.get_us_time() globalstep(dtime) 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") |