22 lines
798 B
Plaintext
22 lines
798 B
Plaintext
-- A debugging aid to help animate intermediate results within f.
|
|
-- Pause animation in the current frame using loiter().
|
|
-- Try to only have one such call in your program.
|
|
-- You can have multiple, but things might get confusing if one of them indirectly calls the other,
|
|
-- or more generally if a single function ever loiters sometimes under the call tree of one and sometimes under the other.
|
|
animate = function(f, ...)
|
|
local args = {...}
|
|
Error_with_callstack = nil
|
|
local co = coroutine.create(
|
|
function()
|
|
xpcall(function()
|
|
f(unpack(args))
|
|
end,
|
|
save_callstack)
|
|
end)
|
|
coroutine.resume(co, ...)
|
|
if Error_with_callstack then
|
|
error(Error_with_callstack)
|
|
end
|
|
table.insert(Debug_animations_in_progress, {co=co, next_run=Current_time+0.3})
|
|
end
|