forked from 26F-Studio/Zenitha
-
Notifications
You must be signed in to change notification settings - Fork 0
/
debug.lua
54 lines (45 loc) · 1.41 KB
/
debug.lua
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
local yield=coroutine.yield
local DEBUG={}
local loadTimeList,lastTimeStamp={},love.timer.getTime()
---Use this a few times in main.lua to mark time used for loading,
---then use `DEBUG.logLoadTime()` to log the times
---@param msg string
function DEBUG.checkLoadTime(msg)
table.insert(loadTimeList,("%-26s \t%.3fs"):format(tostring(msg)..":",love.timer.getTime()-lastTimeStamp))
lastTimeStamp=love.timer.getTime()
end
---Log the times marked by `DEBUG.checkLoadTime()`
function DEBUG.logLoadTime()
for i=1,#loadTimeList do LOG(loadTimeList[i]) end
end
---Set metatable for _G, print messages when a new variable is created
function DEBUG.runVarMonitor()
setmetatable(_G,{__newindex=function(self,k,v)
print('>>'..k)
print(debug.traceback():match("\n.-\n\t(.-): "))
rawset(self,k,v)
end})
end
---Set Visible collectgarbage call
function DEBUG.setCollectGarvageVisible()
local _gc=collectgarbage
collectgarbage=function()
_gc()
print(debug.traceback())
end
end
---Yield until the scene swapping animation finished
function DEBUG.yieldUntilNextScene()
while SCN.swapping do yield() end
end
---Yield for some times
---@param count number
function DEBUG.yieldN(count)
for _=1,count do yield() end
end
---Yield for some seconds
function DEBUG.yieldT(time)
local t=love.timer.getTime()
while love.timer.getTime()-t<time do yield() end
end
return DEBUG