aboutsummaryrefslogtreecommitdiff
path: root/util
diff options
context:
space:
mode:
authorAuke Kok <sofar@foo-projects.org>2016-01-21 01:07:38 -0800
committerShadowNinja <shadowninja@minetest.net>2016-01-29 01:04:51 -0500
commitad884f23d4e73d38ce0f529de49591dd66cee44d (patch)
tree5c596b41f2d8edd006af13d0cf2552767fb466c1 /util
parent4ac1e9bccbd0222ab779b3fc4d2144d60e1f2b49 (diff)
downloadminetest-ad884f23d4e73d38ce0f529de49591dd66cee44d.tar.gz
minetest-ad884f23d4e73d38ce0f529de49591dd66cee44d.tar.bz2
minetest-ad884f23d4e73d38ce0f529de49591dd66cee44d.zip
New timer design.
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.
Diffstat (limited to 'util')
0 files changed, 0 insertions, 0 deletions