|
|
local setmetatable = setmetatable
|
|
local xpcall = xpcall
|
|
local pcall = pcall
|
|
local assert = assert
|
|
local rawget = rawget
|
|
local error = error
|
|
local print = print
|
|
local traceback = traceback
|
|
-- local ilist = ilist
|
|
|
|
-- local _xpcall = {}
|
|
-- setmetatable(_xpcall, _xpcall)
|
|
|
|
-- _xpcall.__call = function(self, ...)
|
|
-- local flag = true
|
|
-- local msg = nil
|
|
|
|
-- if jit then
|
|
-- if nil == self.obj then
|
|
-- flag, msg = xpcall(self.func, traceback, ...)
|
|
-- else
|
|
-- flag, msg = xpcall(self.func, traceback, self.obj, ...)
|
|
-- end
|
|
-- else
|
|
-- local args = {...}
|
|
|
|
-- if nil == self.obj then
|
|
-- local func = function() self.func(unpack(args)) end
|
|
-- flag, msg = xpcall(func, traceback)
|
|
-- else
|
|
-- local func = function() self.func(self.obj, unpack(args)) end
|
|
-- flag, msg = xpcall(func, traceback)
|
|
-- end
|
|
-- end
|
|
|
|
-- return flag, msg
|
|
-- end
|
|
|
|
-- _xpcall.__eq = function(lhs, rhs)
|
|
-- return lhs.func == rhs.func and lhs.obj == rhs.obj
|
|
-- end
|
|
|
|
-- local function xfunctor(func, obj)
|
|
-- local st = {func = func, obj = obj}
|
|
-- setmetatable(st, _xpcall)
|
|
-- return st
|
|
-- end
|
|
|
|
-- local _pcall = {}
|
|
|
|
-- _pcall.__call = function(self, ...)
|
|
-- local flag = true
|
|
-- local msg = nil
|
|
|
|
-- if nil == self.obj then
|
|
-- flag, msg = pcall(self.func, ...)
|
|
-- else
|
|
-- flag, msg = pcall(self.func, self.obj, ...)
|
|
-- end
|
|
|
|
-- return flag, msg
|
|
-- end
|
|
|
|
-- _pcall.__eq = function(lhs, rhs)
|
|
-- return lhs.func == rhs.func and lhs.obj == rhs.obj
|
|
-- end
|
|
|
|
-- local function functor(func, obj)
|
|
-- local st = {func = func, obj = obj}
|
|
-- setmetatable(st, _pcall)
|
|
-- return st
|
|
-- end
|
|
|
|
|
|
-- setmetatable(_event, _event)
|
|
|
|
local function event()
|
|
local _event = {callback_list = {}}
|
|
|
|
function _event:Add(func, obj)
|
|
obj = obj or false
|
|
_event.callback_list[func] = obj
|
|
end
|
|
|
|
function _event:Remove(func, obj)
|
|
_event.callback_list[func] = nil
|
|
end
|
|
|
|
-- function _event:Count()
|
|
-- return _event.callback_list.length
|
|
-- end
|
|
|
|
-- function _event:Clear()
|
|
-- _event.callback_list:clear()
|
|
-- end
|
|
|
|
function _event:CallFunc(...)
|
|
local callback_list = _event.callback_list
|
|
for func, obj in pairs(callback_list) do
|
|
func(obj, ...)
|
|
end
|
|
end
|
|
return _event
|
|
end
|
|
|
|
UpdateBeat = event()
|
|
LateUpdateBeat = event()
|
|
FixedUpdateBeat = event()
|
|
-- CoUpdateBeat = event("CoUpdate") --只在协同使用
|
|
|
|
local Time = Time
|
|
local UpdateBeat = UpdateBeat
|
|
local LateUpdateBeat = LateUpdateBeat
|
|
local FixedUpdateBeat = FixedUpdateBeat
|
|
-- local CoUpdateBeat = CoUpdateBeat
|
|
|
|
--逻辑update
|
|
function Update(deltaTime, unscaledDeltaTime)
|
|
Time:SetDeltaTime(deltaTime, unscaledDeltaTime)
|
|
UpdateBeat:CallFunc()
|
|
end
|
|
|
|
function LateUpdate()
|
|
LateUpdateBeat:CallFunc()
|
|
-- CoUpdateBeat()
|
|
Time:SetFrameCount()
|
|
end
|
|
|
|
--物理update
|
|
function FixedUpdate(fixedDeltaTime)
|
|
Time:SetFixedDelta(fixedDeltaTime)
|
|
-- FixedUpdateBeat:CallFunc()
|
|
end
|
|
|
|
function PrintEvents()
|
|
UpdateBeat:Dump()
|
|
FixedUpdateBeat:Dump()
|
|
end
|