slot0 = setmetatable slot1 = xpcall slot2 = pcall slot3 = assert slot4 = rawget slot5 = error slot6 = print slot7 = tolua.traceback slot8 = ilist slot9 = { __call = function (slot0, ...) if jit then if slot0.obj == nil then return uv0(slot0.func, uv1, ...) else return uv0(slot0.func, uv1, slot0.obj, ...) end else slot1 = { len = select("#", ...), ... } if slot0.obj == nil then return uv0(function () uv0.func(unpack(uv1, 1, uv1.len)) end, uv1) else return uv0(function () uv0.func(uv0.obj, unpack(uv1, 1, uv1.len)) end, uv1) end end end, __eq = function (slot0, slot1) return slot0.func == slot1.func and slot0.obj == slot1.obj end } function slot10(slot0, slot1) return uv0({ func = slot0, obj = slot1 }, uv1) end slot11 = { __call = function (slot0, ...) if slot0.obj == nil then return uv0(slot0.func, ...) else return uv0(slot0.func, slot0.obj, ...) end end, __eq = function (slot0, slot1) return slot0.func == slot1.func and slot0.obj == slot1.obj end } function slot12(slot0, slot1) return uv0({ func = slot0, obj = slot1 }, uv1) end slot13 = { __index = slot13 } function slot13.Add(slot0, slot1, slot2) if slot0.lock then table.insert(slot0.opList, function () uv0.list:pushnode(uv1) end) return { _next = 0, removed = true, _prev = 0, value = (not slot0.keepSafe or uv0(slot1, slot2)) and uv1(uv0(slot1, slot2), slot2) } else return slot0.list:push(slot1) end end function slot13.Remove(slot0, slot1, slot2) for slot6, slot7 in uv0(slot0.list) do if slot7.func == slot1 and slot7.obj == slot2 then if slot0.lock then table.insert(slot0.opList, function () uv0.list:remove(uv1) end) else slot0.list:remove(slot6) end break end end end function slot13.CreateListener(slot0, slot1, slot2) return { _next = 0, removed = true, _prev = 0, value = (not slot0.keepSafe or uv0(slot1, slot2)) and uv1(uv0(slot1, slot2), slot2) } end function slot13.AddListener(slot0, slot1) if slot0.lock then table.insert(slot0.opList, function () uv0.list:pushnode(uv1) end) else slot0.list:pushnode(slot1) end end function slot13.RemoveListener(slot0, slot1) if slot0.lock then table.insert(slot0.opList, function () uv0.list:remove(uv1) end) else slot0.list:remove(slot1) end end function slot13.Count(slot0) return slot0.list.length end function slot13.Clear(slot0) slot0.list:clear() slot0.opList = {} slot0.lock = false slot0.keepSafe = false slot0.current = nil end function slot13.Dump(slot0) slot1 = 0 for slot5, slot6 in uv0(slot0.list) do if slot6.obj then uv1("update function:", slot6.func, "object name:", slot6.obj.name) else uv1("update function: ", slot6.func) end slot1 = slot1 + 1 end uv1("all function is:", slot1) end function slot13.__call(slot0, ...) slot0.lock = true for slot6, slot7 in uv0(slot0.list) do slot0.current = slot6 slot8, slot9 = slot7(...) if not slot8 then slot1:remove(slot6) slot0.lock = false uv1(slot9) end end slot0.lock = false for slot7, slot8 in ipairs(slot0.opList) do slot8() slot3[slot7] = nil end end function event(slot0, slot1) return uv0({ lock = false, name = slot0, keepSafe = slot1 or false, opList = {}, list = list:new() }, uv1) end UpdateBeat = event("Update", true) LateUpdateBeat = event("LateUpdate", true) FixedUpdateBeat = event("FixedUpdate", true) CoUpdateBeat = event("CoUpdate") slot14 = Time slot15 = UpdateBeat slot16 = LateUpdateBeat slot17 = FixedUpdateBeat slot18 = CoUpdateBeat function Update(slot0, slot1) uv0:SetDeltaTime(slot0, slot1) uv1() end function LateUpdate() uv0() uv1() uv2:SetFrameCount() end function FixedUpdate(slot0) uv0:SetFixedDelta(slot0) uv1() end function PrintEvents() uv0:Dump() uv1:Dump() end