init.lua 1.2 KB

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