-- If not debug then returning a blank class. if not _G.ENABLE_DEBUG_OVERLAY then local void = {} local mt = { __index = function(self, key) return self end, __newindex = function(self, key) return self end, __metatable = {}, __call = function() return void end } setmetatable(void, mt) print(void) return void end require("imgui") 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") 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) if self.debug_menus[menu_name] then self.console:error('Debug : '..menu_name.." debug menu is already registered.") return end 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