| 12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455 |
- local class = require("class")
- local DebugWindow = require("debug_overlay.debugwindow")
- require "imgui"
- local Watcher = class(DebugWindow)
- function Watcher:init( )
- self.watched_values = {}
- self.shortcut = "f10"
- end
- function Watcher:add(obj, member, name)
- self.watched_values[#self.watched_values + 1] = setmetatable({
- obj = obj,
- member = member,
- name = name or member
- }, {__mode = 'v'})
- end
- function Watcher:render()
- imgui.Begin("Watch")
- if #self.watched_values > 0 then
- imgui.Columns(2)
- for k,v in ipairs(self.watched_values) do
- if v.obj and v.member then
- local status,res = pcall(function() return tostring(v.obj[v.member]) end)
- if status then
- imgui.TextUnformatted(v.name)
- imgui.NextColumn()
- imgui.TextUnformatted(res)
- imgui.NextColumn()
- else
- debug_overlay.console:error("Watcher: "..v.name.. " couldn't be read. ")
- debug_overlay.console:debug(res)
- table.remove(self.watched_values, k)
- end
- elseif v.obj == nil then
- imgui.TextUnformatted(v.name .. " <<Miss. obj.>>")
- imgui.NextColumn()
- imgui.NextColumn()
- else
- imgui.TextUnformatted(v.name .. " <<Miss. mem.>>")
- imgui.NextColumn()
- imgui.NextColumn()
- end
- end
- end
- imgui.End()
- end
- return Watcher
|