local class, object = require("class"), require("class.object") local Console = require("debug_overlay.console") local Graphs = require("debug_overlay.graphs") local Watch = require("debug_overlay.watch") require("imgui") local Debug = class(object) function Debug:init() self.debug_menus = { Debug = { Console = Console:new(), Watch = Watch:new(), Graphs = Graphs:new(), } } self.console = self.debug_menus.Debug.Console self.watch = self.debug_menus.Debug.Watch end function Debug:register_menu(menu_name, windows) assert(not self.debug_menus[menu_name]) self.debug_menus[menu_name] = windows end function Debug:render() self.debug_menus.Debug.Graphs:update() if imgui.BeginMainMenuBar() then for menu,windows in pairs(self.debug_menus) do -- Menu if imgui.BeginMenu(menu) then for k,v in pairs(windows) do if imgui.MenuItem(k, v.shortcut, v.visible) then v:toggle() end end imgui.EndMenu() end end imgui.EndMainMenuBar() for menu,windows in pairs(self.debug_menus) do for k, window in pairs(windows) do if window.visible then window:render() end end end end end function Debug:keypressed(key) for _, windows in pairs(self.debug_menus) do for __, window in pairs(windows) do if window.shortcut and key == window.shortcut then window:toggle() end end end end return Debug