diff options
author | fluxionary <25628292+fluxionary@users.noreply.github.com> | 2022-02-13 06:54:41 -0800 |
---|---|---|
committer | GitHub <noreply@github.com> | 2022-02-13 15:54:41 +0100 |
commit | 2651262fa3134415f349f63840c89486fabd9063 (patch) | |
tree | 3fa7f2ac228e662b4e9bc8071acc2f0650c44e65 /cleanup.lua | |
parent | 1a41379e1d7ae69347f0e6ee6a997234f7590793 (diff) | |
download | mesecons_debug-2651262fa3134415f349f63840c89486fabd9063.tar.gz mesecons_debug-2651262fa3134415f349f63840c89486fabd9063.zip |
rework mesecons debug to be more flexible (#7)
* add proper settings (untested)
* more constants -> settings
* normalize whitespace between code files
* refactor globalsteps in order to simplify logic
* minor refactoring
* rename file
* use mod_storage for persistent data; optimize context initialization
* refactoring (moving files around)
* rewrite penalty
* add settings; document; allow changing while game is running
* add command to update settings
* update init after splitting commands into files
* fix bugs; add debugging tools; too much for one commit...
* fix whitelist conversion
* add adjustable blinky plant to timer overrides
* add some more mesecons nodes with repeating timers
* resolve luacheck warnings
* tweak hud
* Update documentation; parameterize more things; refactor some logic for readability
Diffstat (limited to 'cleanup.lua')
-rw-r--r-- | cleanup.lua | 29 |
1 files changed, 29 insertions, 0 deletions
diff --git a/cleanup.lua b/cleanup.lua new file mode 100644 index 0000000..69bd20c --- /dev/null +++ b/cleanup.lua @@ -0,0 +1,29 @@ +local subscribe_for_modification = mesecons_debug.settings._subscribe_for_modification +local gc_interval = mesecons_debug.settings.gc_interval +local cleanup_time_micros = gc_interval * 1000000 + +subscribe_for_modification("gc_interval", function(value) + gc_interval = value + cleanup_time_micros = value * 1000000 +end) + +local context_store = mesecons_debug.context_store + +local cleanup_timer = 0 +minetest.register_globalstep(function(dtime) + cleanup_timer = cleanup_timer + dtime + if cleanup_timer < gc_interval then + return + end + cleanup_timer = 0 + + local now = minetest.get_us_time() + for hash, ctx in pairs(context_store) do + local time_diff = now - ctx.mtime + if time_diff > cleanup_time_micros then + -- remove item + context_store[hash] = nil + mesecons_debug.context_store_size = mesecons_debug.context_store_size - 1 + end + end +end) |