init.lua 1.2 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344
  1. local class = require("class")
  2. local DebugWindow = require("debug_overlay.debugwindow")
  3. local ECS = require("ecs.ECS")
  4. require "imgui"
  5. local ECSDebug = class(DebugWindow)
  6. function ECSDebug:init()
  7. self.ecs = ecs
  8. self.once = true
  9. end
  10. function ECSDebug:render()
  11. imgui.Begin("ECS")
  12. imgui.BeginChild("Entity table", 0,-imgui.GetItemsLineHeightWithSpacing()*2)
  13. imgui.Columns(ecs.n_components+1)
  14. imgui.SetColumnOffset(1, 64)
  15. -- Header
  16. imgui.TextUnformatted("Entities")
  17. imgui.NextColumn()
  18. for i,v in pairs(ecs.components) do
  19. imgui.TextUnformatted(string.format("%s", i))
  20. imgui.NextColumn()
  21. end
  22. imgui.Separator()
  23. for i=0,ECS.N_ENTITIES-1 do
  24. if ecs.entities[i] then
  25. imgui.TextUnformatted(string.format("%d", i))
  26. imgui.NextColumn()
  27. for j,c in pairs(ecs.components) do
  28. if c[i]._alive then
  29. imgui.TextUnformatted(tostring(c[i]))
  30. else
  31. imgui.NewLine()
  32. end
  33. imgui.NextColumn()
  34. end
  35. end
  36. end
  37. imgui.EndChild()
  38. imgui.End()
  39. end
  40. return ECSDebug