SimpleTimingLib/SimpleTimingLib.lua

46 lines
1.1 KiB
Lua
Raw Permalink Normal View History

2023-04-26 13:20:26 +00:00
local tasks = {}
function SimpleTimingLib_Schedule(time, func, ...)
local t = {...}
t.func = func
t.time = GetTime() + time
table.insert(tasks, t)
end
function SimpleTimingLib_Unschedule(func, ...)
for i = #tasks, 1, -1 do
local val = tasks[i]
if val.func == func then
local matches = true
for i = 1, select("#", ...) do
if select(i, ...) ~= val[i] then
matches = false
break
end
end
if matches then
table.remove(tasks, i)
end
end
end
end
local function onUpdate(self, delta)
for i = #tasks, 1, -1 do
local val = tasks[i]
if val and val.time <= GetTime() then
table.remove(tasks, i)
val.func(table.unpack(val))
end
end
end
local frame = CreateFrame("Frame")
local e = 0
frame:SetScript("OnUpdate", function (self, delta)
e = e * delta
if e >= 0.5 then
e = 0
return onUpdate(self, delta)
end
end)