--[[ Debug resource graph class @author : Eiyeron Fulmincendii A Flixel-like graph class to show some graphs related to CPU and Memory usage. ]]-- require("imgui") local class = require("class") local DebugWindow = require("debug_overlay.debugwindow") local Graphs = class(DebugWindow) local function shift_push_array(arr, new) for i=1,#arr-1 do arr[i] = arr[i+1] end arr[#arr] = new end function Graphs:init() self.shortcut = "f11" self.fps = {} self.cpu = {} self.mem = {} self.mem_avg = 0 for i=1,60 do self.fps[i], self.cpu[i], self.mem[i] = 0,0,0 end end function Graphs:update_avg() local sum = 0 for k,v in ipairs(self.mem) do sum = sum + v end self.mem_avg = sum / #self.mem end function Graphs:update() shift_push_array(self.fps, love.timer.getFPS()) shift_push_array(self.cpu, love.timer.getDelta()) shift_push_array(self.mem, collectgarbage("count")) self:update_avg() end function Graphs:render() imgui.Begin("Performance") imgui.PlotLines("CPU", self.cpu, #self.cpu, 0, "", 0, 15) imgui.PlotLines("FPS", self.fps, #self.fps, 0, "", 0, 60) imgui.PlotLines("Mem", self.mem, #self.mem) imgui.TextUnformatted(string.format("Average DT %0.3f ms", love.timer.getAverageDelta()*1000)) imgui.TextUnformatted(string.format("Memory %0.2f KB", self.mem_avg)) imgui.End() end return Graphs