Skip to content

Commit

Permalink
perf monitoring updates
Browse files Browse the repository at this point in the history
  • Loading branch information
DerpleMQ2 committed Jan 7, 2024
1 parent 147aee7 commit ee9a3db
Show file tree
Hide file tree
Showing 9 changed files with 120 additions and 49 deletions.
2 changes: 1 addition & 1 deletion class_configs/shd_class_config.lua
Original file line number Diff line number Diff line change
Expand Up @@ -73,7 +73,7 @@ local Tooltips = {

-- helper function for advanced logic to see if we want to use Dark Lord's Unity
local function castDLU()
local shroudAction = RGMercModules:execModule("Class", "GetResolvedActionMapItem", "Shroud")
local shroudAction = RGMercModules:ExecModule("Class", "GetResolvedActionMapItem", "Shroud")
if not shroudAction then return false end

local res = shroudAction.Level() <=
Expand Down
22 changes: 11 additions & 11 deletions class_configs/wiz_class_config.lua
Original file line number Diff line number Diff line change
Expand Up @@ -640,7 +640,7 @@ return {
type = "AA",
active_cond = function(self, aaName) return RGMercUtils.BuffActiveByID(mq.TLO.Me.AltAbility(aaName).Spell.Trigger(1).ID()) end,
cond = function(self, aaName)
local selfHPBuff = RGMercModules:execModule("Class", "GetResolvedActionMapItem", "SelfHPBuff")
local selfHPBuff = RGMercModules:ExecModule("Class", "GetResolvedActionMapItem", "SelfHPBuff")
local selfHPBuffLevel = selfHPBuff and selfHPBuff() and selfHPBuff.Level() or 0
return (mq.TLO.Me.AltAbility("Etherealist's Unity").Spell.Trigger(1).Level() or 0) > selfHPBuffLevel and RGMercUtils.SelfBuffAACheck(aaName)
end,
Expand Down Expand Up @@ -768,7 +768,7 @@ return {
name = "FuseNuke",
type = "Spell",
cond = function(self, spell)
local fireClaw = RGMercModules:execModule("Class", "GetResolvedActionMapItem", "FireClaw")
local fireClaw = RGMercModules:ExecModule("Class", "GetResolvedActionMapItem", "FireClaw")
return not RGMercUtils.DetGambitCheck() and ((not fireClaw or not fireClaw()) or not mq.TLO.Me.SpellReady(fireClaw.RankName()))
end,
},
Expand Down Expand Up @@ -836,7 +836,7 @@ return {
type = "AA",
active_cond = function(self, aaName) return RGMercUtils.BuffActiveByID(mq.TLO.Me.AltAbility(aaName).Spell.Trigger(1).ID()) end,
cond = function(self, aaName)
local selfHPBuff = RGMercModules:execModule("Class", "GetResolvedActionMapItem", "SelfHPBuff")
local selfHPBuff = RGMercModules:ExecModule("Class", "GetResolvedActionMapItem", "SelfHPBuff")
local selfHPBuffLevel = selfHPBuff and selfHPBuff() and selfHPBuff.Level() or 0
return (mq.TLO.Me.AltAbility("Etherealist's Unity").Spell.Trigger(1).Level() or 0) > selfHPBuffLevel and RGMercUtils.SelfBuffAACheck(aaName)
end,
Expand All @@ -862,7 +862,7 @@ return {
type = "AA",
active_cond = function(self, aaName) return RGMercUtils.BuffActiveByID(mq.TLO.Me.AltAbility(aaName).Spell.ID()) end,
cond = function(self, aaName)
local familiarBuff = RGMercModules:execModule("Class", "GetResolvedActionMapItem", "FamiliarBuff")
local familiarBuff = RGMercModules:ExecModule("Class", "GetResolvedActionMapItem", "FamiliarBuff")
local familiarBuffLevel = familiarBuff and familiarBuff() and familiarBuff.Level() or 0
return (mq.TLO.Me.AltAbility(aaName).Spell.Level() or 0) > familiarBuffLevel and RGMercUtils.SelfBuffAACheck(aaName)
end,
Expand Down Expand Up @@ -907,7 +907,7 @@ return {
{
gem = 1,
spells = {
{ name = string.format("%sClaw", RGMercModules:execModule("Class", "GetClassModeName")), },
{ name = string.format("%sClaw", RGMercModules:ExecModule("Class", "GetClassModeName")), },
{ name = "IceClaw", },
{ name = "FireClaw", },
{ name = "MagicClaw", },
Expand All @@ -917,8 +917,8 @@ return {
{
gem = 2,
spells = {
{ name = string.format("%sEtherealNuke", RGMercModules:execModule("Class", "GetClassModeName")), },
{ name = string.format("%sNuke", RGMercModules:execModule("Class", "GetClassModeName")), },
{ name = string.format("%sEtherealNuke", RGMercModules:ExecModule("Class", "GetClassModeName")), },
{ name = string.format("%sNuke", RGMercModules:ExecModule("Class", "GetClassModeName")), },
{ name = "FireEtherealNuke", },
{ name = "FireNuke", },
},
Expand All @@ -930,7 +930,7 @@ return {
{
name = "MagicNuke",
cond = function(self)
return RGMercModules:execModule("Class", "GetClassModeName") ~= "Magic" -- Magic mode will put this elsewhere so load an ice nuke.
return RGMercModules:ExecModule("Class", "GetClassModeName") ~= "Magic" -- Magic mode will put this elsewhere so load an ice nuke.
end,
},
{ name = "IceNuke", },
Expand All @@ -943,13 +943,13 @@ return {
{
name = "IceNuke",
cond = function(self)
return RGMercModules:execModule("Class", "GetClassModeName") == "Fire" or RGMercModules:execModule("Class", "GetClassModeName") == "Combo"
return RGMercModules:ExecModule("Class", "GetClassModeName") == "Fire" or RGMercModules:ExecModule("Class", "GetClassModeName") == "Combo"
end,
},
{
name = "FireNuke",
cond = function(self)
return RGMercModules:execModule("Class", "GetClassModeName") == "Ice" or RGMercModules:execModule("Class", "GetClassModeName") == "Magic"
return RGMercModules:ExecModule("Class", "GetClassModeName") == "Ice" or RGMercModules:ExecModule("Class", "GetClassModeName") == "Magic"
end,
},
},
Expand All @@ -969,7 +969,7 @@ return {
{
name = "IceEtherealNuke",
cond = function(self)
return RGMercModules:execModule("Class", "GetClassModeName") ~= "Ice" -- Ice will load this elsewhere.
return RGMercModules:ExecModule("Class", "GetClassModeName") ~= "Ice" -- Ice will load this elsewhere.
end,
},
{
Expand Down
2 changes: 1 addition & 1 deletion extras/version.lua
Original file line number Diff line number Diff line change
@@ -1 +1 @@
return { commitId = '5a011da 2024-01-06' }
return { commitId = '147aee7 2024-01-06' }
26 changes: 13 additions & 13 deletions init.lua
Original file line number Diff line number Diff line change
Expand Up @@ -67,9 +67,9 @@ end
local function renderModulesTabs()
if not RGMercConfig:SettingsLoaded() then return end

for _, name in ipairs(RGMercModules:getModuleOrderedNames()) do
for _, name in ipairs(RGMercModules:GetModuleOrderedNames()) do
if ImGui.BeginTabItem(name) then
RGMercModules:execModule(name, "Render")
RGMercModules:ExecModule(name, "Render")
ImGui.EndTabItem()
end
end
Expand All @@ -93,7 +93,7 @@ local function Alive()
end

local function GetTheme()
return RGMercModules:execModule("Class", "GetTheme")
return RGMercModules:ExecModule("Class", "GetTheme")
end

local function RenderTarget()
Expand Down Expand Up @@ -217,7 +217,7 @@ local function RGMercsGUI()
if ImGui.CollapsingHeader(string.format("%s: Config Options", n)) then
s.settings, pressed, _ = RGMercUtils.RenderSettings(s.settings, s.defaults, s.categories)
if pressed then
RGMercModules:execModule(n, "SaveSettings", true)
RGMercModules:ExecModule(n, "SaveSettings", true)
end
end
end
Expand Down Expand Up @@ -312,7 +312,7 @@ local function RGInit(...)
unloadedPlugins = RGMercUtils.UnCheckPlugins({ "MQ2Melee", })

-- complex objects are passed by reference so we can just use these without having to pass them back in for saving.
RGMercConfig.SubModuleSettings = RGMercModules:execAll("Init")
RGMercConfig.SubModuleSettings = RGMercModules:ExecAll("Init")

if not RGMercConfig:GetSettings().DoTwist then
local unloaded = RGMercUtils.UnCheckPlugins({ "MQ2Twist", })
Expand Down Expand Up @@ -384,7 +384,7 @@ end
local function Main()
if mq.TLO.Me.Zoning() then
if notifyZoning then
RGMercModules:execAll("OnZone")
RGMercModules:ExecAll("OnZone")
notifyZoning = false
end
mq.delay(1000)
Expand All @@ -406,7 +406,7 @@ local function Main()
if RGMercConfig.Globals.PauseMain then
mq.delay(1000)
if RGMercConfig:GetSettings().RunMovePaused then
RGMercModules:execModule("Movement", "GiveTime", curState)
RGMercModules:ExecModule("Movement", "GiveTime", curState)
end
return
end
Expand All @@ -415,7 +415,7 @@ local function Main()

if RGMercConfig.Globals.CurLoadedChar ~= mq.TLO.Me.DisplayName() then
RGMercConfig:LoadSettings()
RGMercModules:execAll("LoadSettings")
RGMercModules:ExecAll("LoadSettings")
end

RGMercConfig:StoreLastMove()
Expand Down Expand Up @@ -530,7 +530,7 @@ local function Main()
end
end

RGMercModules:execAll("GiveTime", curState)
RGMercModules:ExecAll("GiveTime", curState)

mq.doevents()
mq.delay(100)
Expand All @@ -550,7 +550,7 @@ local script_actor = RGMercUtils.Actors.register(function(message)
if message()["module"] == "main" then
RGMercConfig:LoadSettings()
else
RGMercModules:execModule(message()["module"], message()["event"], message()["data"])
RGMercModules:ExecModule(message()["module"], message()["event"], message()["data"])
end
end
end)
Expand Down Expand Up @@ -579,7 +579,7 @@ local function bindHandler(cmd, ...)
return
end

local results = RGMercModules:execAll("HandleBind", cmd, ...)
local results = RGMercModules:ExecAll("HandleBind", cmd, ...)

local processed = false

Expand All @@ -600,7 +600,7 @@ mq.event("CantSee", "You cannot see your target.", function()
mq.cmdf("/stick off")
end

if RGMercModules:execModule("Pull", "IsPullState", "PULL_PULLING") then
if RGMercModules:ExecModule("Pull", "IsPullState", "PULL_PULLING") then
RGMercsLogger.log_info("\ayWe are in Pull_State PULLING and Cannot see our target!")
mq.cmdf("/nav id %d distance=%d lineofsight=on log=off", mq.TLO.Target.ID() or 0, (mq.TLO.Target.Distance() or 0) * 0.5)
mq.delay("2s", function() return mq.TLO.Navigation.Active() end)
Expand Down Expand Up @@ -650,4 +650,4 @@ while openGUI do
mq.delay(10)
end

RGMercModules:execAll("Shutdown")
RGMercModules:ExecAll("Shutdown")
65 changes: 57 additions & 8 deletions modules/performance.lua
Original file line number Diff line number Diff line change
Expand Up @@ -3,12 +3,30 @@ local mq = require('mq')
local RGMercsLogger = require("utils.rgmercs_logger")
local RGMercUtils = require("utils.rgmercs_utils")
local ImPlot = require('ImPlot')
local Set = require('mq.Set')

local Module = { _version = '0.1a', _name = "Performance", _author = 'Derple', }
Module.__index = Module
Module.settings = {}
Module.DefaultConfig = {}
Module.DefaultCategories = {}
Module.MaxFrame = 50
Module.MaxFrameStep = 5.0
Module.GoalMax = 0
Module.xAxes = {}
Module.SettingsLoaded = false
Module.LastExtentsCheck = os.clock()

Module.DefaultConfig = {
['FramesToStore'] = { DisplayName = "Frame Storage #", Category = "Monitoring", Tooltip = "The number of frametimes to keep in history.", Default = 100, Min = 10, Max = 500, Step = 5, },
}

Module.DefaultCategories = Set.new({})
for _, v in pairs(Module.DefaultConfig) do
if v.Type ~= "Custom" then
Module.DefaultCategories:add(v.Category)
end
end

local function getConfigFileName()
local server = mq.TLO.EverQuest.Server()
Expand Down Expand Up @@ -41,6 +59,8 @@ function Module:LoadSettings()

-- Setup Defaults
self.settings = RGMercUtils.ResolveDefaults(self.DefaultConfig, self.settings)

self.SettingsLoaded = true
end

function Module.New()
Expand All @@ -59,27 +79,56 @@ function Module:Render()
ImGui.Text("Performance Monitor Modules")
local pressed

if not self.SettingsLoaded then return end

if os.clock() - self.LastExtentsCheck > 0.01 then
self.GoalMax = 0
self.LastExtentsCheck = os.clock()
for _, times in pairs(RGMercModules.FrameTimes) do
for _, t in ipairs(times) do
if t > self.GoalMax then
self.GoalMax = math.ceil(t / self.MaxFrameStep) * self.MaxFrameStep
end
end
end
end

-- converge on new max recalc min and maxes
if RGMercModules:GetMaxFrameTime() < self.GoalMax then RGMercModules:SetMaxFrameTime(RGMercModules:GetMaxFrameTime() + 1) end
if RGMercModules:GetMaxFrameTime() > self.GoalMax then RGMercModules:SetMaxFrameTime(RGMercModules:GetMaxFrameTime() - 1) end

if self.settings.FramesToStore ~= #self.xAxes then
self.xAxes = {}
for i = 1, self.settings.FramesToStore do table.insert(self.xAxes, i) end
end

if ImPlot.BeginPlot("Frame Times for RGMercs Modules") then
ImPlot.SetupAxes("Frame #", "Frame Time (ms)")
ImPlot.SetupAxesLimits(1, RGMercModules.FramesToStore, 0, 50, ImPlotCond.Always)
local xAxis = {}
ImPlot.SetupAxesLimits(1, self.settings.FramesToStore, 0, RGMercModules:GetMaxFrameTime(), ImPlotCond.Always)

for module, times in pairs(RGMercModules.FrameTimes) do
if #xAxis == 0 then
for i, _ in ipairs(times or { 1, }) do table.insert(xAxis, i) end
end

if times then
ImPlot.PlotLine(module, xAxis, times, #times)
ImPlot.PlotLine(module, self.xAxes, times, #times)
end
end

ImPlot.EndPlot()
end

if ImGui.CollapsingHeader("Config Options") then
self.settings, pressed, _ = RGMercUtils.RenderSettings(self.settings, self.DefaultConfig, self.DefaultCategories)
if pressed then
self:SaveSettings(true)
end
end
end

function Module:GiveTime(combat_state)
-- Main Module logic goes here.
if RGMercModules:GetFramesToStore() ~= self.settings.FramesToStore then
RGMercModules:SetFramesToStore(self.settings.FramesToStore)
end

local newHigh = 0 --RGMercModules:GetMaxFrameTime()
end

function Module:OnDeath()
Expand Down
2 changes: 1 addition & 1 deletion modules/pull.lua
Original file line number Diff line number Diff line change
Expand Up @@ -790,7 +790,7 @@ function Module:GiveTime(combat_stateModule)
return
end

local campData = RGMercModules:execModule("Movement", "GetCampData")
local campData = RGMercModules:ExecModule("Movement", "GetCampData")

if self.settings.PullAbility == PullAbilityIDToName.PetPull and (mq.TLO.Me.Pet.ID() or 0) == 0 then
RGMercUtils.PrintGroupMessage("Need to create a new pet to throw as mob fodder.")
Expand Down
2 changes: 1 addition & 1 deletion utils/rgmercs_datatypes.lua
Original file line number Diff line number Diff line change
Expand Up @@ -25,7 +25,7 @@ local rgMercsModuleType = mq.DataType.new('RGMercsModule', {

---@return MQType, RGMercsModuleType
local function RGMercsTLOHandler(param)
return rgMercsModuleType, RGMercModules:getModule(param)
return rgMercsModuleType, RGMercModules:GetModule(param)
end
-- Register our TLO functions
mq.AddTopLevelObject('RGMercs', RGMercsTLOHandler)

0 comments on commit ee9a3db

Please sign in to comment.