|
|
-
- 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
|