init.lua 2.1 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081
  1. -- If not debug then returning a blank class.
  2. if not _G.ENABLE_DEBUG_OVERLAY then
  3. local void = {}
  4. local mt = {
  5. __index = function(self, key) return self end,
  6. __newindex = function(self, key) return self end,
  7. __metatable = {},
  8. __call = function() return void end
  9. }
  10. setmetatable(void, mt)
  11. print(void)
  12. return void
  13. end
  14. require("imgui")
  15. local class, object = require("class"), require("class.object")
  16. local Console = require("debug_overlay.console")
  17. local Graphs = require("debug_overlay.graphs")
  18. local Watch = require("debug_overlay.watch")
  19. local Debug = class(object)
  20. function Debug:init()
  21. self.debug_menus = {
  22. Debug = {
  23. Console = Console:new(),
  24. Watch = Watch:new(),
  25. Graphs = Graphs:new(),
  26. }
  27. }
  28. self.console = self.debug_menus.Debug.Console
  29. self.watch = self.debug_menus.Debug.Watch
  30. end
  31. function Debug:register_menu(menu_name, windows)
  32. if self.debug_menus[menu_name] then
  33. self.console:error('Debug : '..menu_name.." debug menu is already registered.")
  34. return
  35. end
  36. self.debug_menus[menu_name] = windows
  37. end
  38. function Debug:render()
  39. self.debug_menus.Debug.Graphs:update()
  40. if imgui.BeginMainMenuBar() then
  41. for menu,windows in pairs(self.debug_menus) do
  42. -- Menu
  43. if imgui.BeginMenu(menu) then
  44. for k,v in pairs(windows) do
  45. if imgui.MenuItem(k, v.shortcut, v.visible) then
  46. v:toggle()
  47. end
  48. end
  49. imgui.EndMenu()
  50. end
  51. end
  52. imgui.EndMainMenuBar()
  53. for menu,windows in pairs(self.debug_menus) do
  54. for k, window in pairs(windows) do
  55. if window.visible then
  56. window:render()
  57. end
  58. end
  59. end
  60. end
  61. end
  62. function Debug:keypressed(key)
  63. for _, windows in pairs(self.debug_menus) do
  64. for __, window in pairs(windows) do
  65. if window.shortcut and key == window.shortcut then
  66. window:toggle()
  67. end
  68. end
  69. end
  70. end
  71. return Debug