init.lua 1.4 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455
  1. --[[
  2. Debug resource graph class
  3. @author : Eiyeron Fulmincendii
  4. A Flixel-like graph class to show some graphs related to CPU and Memory usage.
  5. ]]--
  6. require("imgui")
  7. local class = require("class")
  8. local DebugWindow = require("debug_overlay.debugwindow")
  9. local Graphs = class(DebugWindow)
  10. local function shift_push_array(arr, new)
  11. for i=1,#arr-1 do
  12. arr[i] = arr[i+1]
  13. end
  14. arr[#arr] = new
  15. end
  16. function Graphs:init()
  17. self.shortcut = "f11"
  18. self.fps = {}
  19. self.cpu = {}
  20. self.mem = {}
  21. self.mem_avg = 0
  22. for i=1,60 do self.fps[i], self.cpu[i], self.mem[i] = 0,0,0 end
  23. end
  24. function Graphs:update_avg()
  25. local sum = 0
  26. for k,v in ipairs(self.mem) do
  27. sum = sum + v
  28. end
  29. self.mem_avg = sum / #self.mem
  30. end
  31. function Graphs:update()
  32. shift_push_array(self.fps, love.timer.getFPS())
  33. shift_push_array(self.cpu, love.timer.getDelta())
  34. shift_push_array(self.mem, collectgarbage("count"))
  35. self:update_avg()
  36. end
  37. function Graphs:render()
  38. imgui.Begin("Performance")
  39. imgui.PlotLines("CPU", self.cpu, #self.cpu, 0, "", 0, 15)
  40. imgui.PlotLines("FPS", self.fps, #self.fps, 0, "", 0, 60)
  41. imgui.PlotLines("Mem", self.mem, #self.mem)
  42. imgui.TextUnformatted(string.format("Average DT %0.3f ms", love.timer.getAverageDelta()*1000))
  43. imgui.TextUnformatted(string.format("Memory %0.2f KB", self.mem_avg))
  44. imgui.End()
  45. end
  46. return Graphs