3cef28e731
I could honestly not make much sense of the timer implementation that was here. Instead I've implemented the type of timer algorithm that I've used before, and tested it instead. The concept is extremely simple: all timers are put in an ordered list. We check every server tick if any of the timers have elapsed, and execute the function associated with this timer. We know that many timers by themselves cause new timers to be added to this list, so we iterate *backwards* over the timer list. This means that new timers being added while timers are being executed, can never be executed in the same function pass, as they are always appended to the table *after* the end of the table, which we will never reach in the current pass over all the table elements. We switch time keeping to minetest.get_us_time(). dtime is likely unreliable and we have our own high-res timer that we can fix if it is indeed broken. This removes the need to do any sort of time keeping. |
||
---|---|---|
.. | ||
auth.lua | ||
chatcommands.lua | ||
constants.lua | ||
deprecated.lua | ||
detached_inventory.lua | ||
falling.lua | ||
features.lua | ||
forceloading.lua | ||
init.lua | ||
item.lua | ||
item_entity.lua | ||
misc.lua | ||
mod_profiling.lua | ||
privileges.lua | ||
register.lua | ||
statbars.lua | ||
static_spawn.lua | ||
voxelarea.lua |