126 lines
2.8 KiB
Lua
126 lines
2.8 KiB
Lua
--------------------------------------------------------------------------------
|
|
-- Copyright (c) 2015 - 2016 , 蒙占志(topameng) topameng@gmail.com
|
|
-- All rights reserved.
|
|
-- Use, modification and distribution are subject to the "MIT License"
|
|
--------------------------------------------------------------------------------
|
|
local rawget = rawget
|
|
local uTime = UnityEngine.Time
|
|
local gettime = tolua.gettime
|
|
|
|
local _Time =
|
|
{
|
|
deltaTime = 0,
|
|
fixedDeltaTime = 0,
|
|
maximumDeltaTime = 0.3333333,
|
|
fixedTime = 0,
|
|
frameCount = 1,
|
|
realtimeSinceStartup=0,
|
|
time = 0,
|
|
timeScale = 1,
|
|
timeSinceLevelLoad = 0,
|
|
unscaledDeltaTime = 0,
|
|
unscaledTime = 0,
|
|
}
|
|
|
|
local _set = {}
|
|
|
|
function _set.fixedDeltaTime(v)
|
|
_Time.fixedDeltaTime = v
|
|
uTime.fixedDeltaTime = v
|
|
end
|
|
|
|
function _set.maximumDeltaTime(v)
|
|
_Time.maximumDeltaTime = v
|
|
uTime.maximumDeltaTime = v
|
|
end
|
|
|
|
function _set.timeScale(v)
|
|
_Time.timeScale = v
|
|
uTime.timeScale = v
|
|
end
|
|
|
|
function _set.captureFramerate(v)
|
|
_Time.captureFramerate = v
|
|
uTime.captureFramerate = v
|
|
end
|
|
|
|
function _set.timeSinceLevelLoad(v)
|
|
_Time.timeSinceLevelLoad = v
|
|
end
|
|
|
|
_Time.__index = function(t, k)
|
|
local var = rawget(_Time, k)
|
|
|
|
if var then
|
|
return var
|
|
end
|
|
|
|
return uTime.__index(uTime, k)
|
|
end
|
|
|
|
_Time.__newindex = function(t, k, v)
|
|
local func = rawget(_set, k)
|
|
|
|
if func then
|
|
return func(v)
|
|
end
|
|
|
|
error(string.format("Property or indexer `UnityEngine.Time.%s' cannot be assigned to (it is read only)", k))
|
|
end
|
|
|
|
local Time = {}
|
|
local counter = 1
|
|
|
|
function Time:SetDeltaTime(deltaTime, unscaledDeltaTime)
|
|
local _Time = _Time
|
|
_Time.deltaTime = deltaTime
|
|
_Time.unscaledDeltaTime = unscaledDeltaTime
|
|
counter = counter - 1
|
|
|
|
if counter == 0 and uTime then
|
|
_Time.time = uTime.time
|
|
_Time.timeSinceLevelLoad = uTime.timeSinceLevelLoad
|
|
_Time.unscaledTime = uTime.unscaledTime
|
|
_Time.realtimeSinceStartup = uTime.realtimeSinceStartup
|
|
_Time.frameCount = uTime.frameCount
|
|
counter = 1000000
|
|
else
|
|
_Time.time = _Time.time + deltaTime
|
|
_Time.realtimeSinceStartup = _Time.realtimeSinceStartup + unscaledDeltaTime
|
|
_Time.timeSinceLevelLoad = _Time.timeSinceLevelLoad + deltaTime
|
|
_Time.unscaledTime = _Time.unscaledTime + unscaledDeltaTime
|
|
end
|
|
end
|
|
|
|
function Time:SetFixedDelta(fixedDeltaTime)
|
|
_Time.deltaTime = fixedDeltaTime
|
|
_Time.fixedDeltaTime = fixedDeltaTime
|
|
|
|
_Time.fixedTime = _Time.fixedTime + fixedDeltaTime
|
|
end
|
|
|
|
function Time:SetFrameCount()
|
|
_Time.frameCount = _Time.frameCount + 1
|
|
end
|
|
|
|
function Time:SetTimeScale(scale)
|
|
local last = _Time.timeScale
|
|
_Time.timeScale = scale
|
|
uTime.timeScale = scale
|
|
return last
|
|
end
|
|
|
|
function Time:GetTimestamp()
|
|
return gettime()
|
|
end
|
|
|
|
UnityEngine.Time = Time
|
|
setmetatable(Time, _Time)
|
|
|
|
if uTime ~= nil then
|
|
_Time.maximumDeltaTime = uTime.maximumDeltaTime
|
|
_Time.timeScale = uTime.timeScale
|
|
end
|
|
|
|
|
|
return Time |