mirror of
https://github.com/Bluewhale1337/HealBotBlue.git
synced 2026-09-11 09:50:21 +00:00
Hotfix: implement fast-path update pipeline to optimize mana tracking performance, skipping unnecessary ui re-draws
This commit is contained in:
+1
-1
@@ -1,6 +1,6 @@
|
|||||||
## Interface: 11200
|
## Interface: 11200
|
||||||
## Title: HealBotBlue
|
## Title: HealBotBlue
|
||||||
## Version: 1.6.4
|
## Version: 1.6.5
|
||||||
## Author: Bluewhale
|
## Author: Bluewhale
|
||||||
## Notes: Adds panel with skinable bars for healing and decursive
|
## Notes: Adds panel with skinable bars for healing and decursive
|
||||||
## SavedVariablesPerCharacter: HealBot_Config
|
## SavedVariablesPerCharacter: HealBot_Config
|
||||||
|
|||||||
@@ -2,6 +2,7 @@
|
|||||||
-- Manages WoW Frame events and periodic updates, routing to respective services
|
-- Manages WoW Frame events and periodic updates, routing to respective services
|
||||||
|
|
||||||
HealBot_View_DirtyUnits = {}
|
HealBot_View_DirtyUnits = {}
|
||||||
|
HealBot_View_DirtyPower = {}
|
||||||
local HealBot_Timer1, HealsIn_Timer = 0, 0;
|
local HealBot_Timer1, HealsIn_Timer = 0, 0;
|
||||||
HealBot_LastModState = ""
|
HealBot_LastModState = ""
|
||||||
|
|
||||||
@@ -20,7 +21,7 @@ function HealBot_OnLoad(this)
|
|||||||
HealBot_View_DirtyUnits[unitID] = true
|
HealBot_View_DirtyUnits[unitID] = true
|
||||||
end)
|
end)
|
||||||
HealBot_Model:RegisterObserver("UNIT_POWER_CHANGED", function(unitID)
|
HealBot_Model:RegisterObserver("UNIT_POWER_CHANGED", function(unitID)
|
||||||
HealBot_View_DirtyUnits[unitID] = true
|
HealBot_View_DirtyPower[unitID] = true
|
||||||
end)
|
end)
|
||||||
HealBot_Model:RegisterObserver("UNIT_AURA_CHANGED", function(unitID)
|
HealBot_Model:RegisterObserver("UNIT_AURA_CHANGED", function(unitID)
|
||||||
HealBot_View_DirtyUnits[unitID] = true
|
HealBot_View_DirtyUnits[unitID] = true
|
||||||
@@ -78,9 +79,17 @@ function HealBot_OnUpdate(this, arg1)
|
|||||||
while unitID do
|
while unitID do
|
||||||
HealBot_Action_RefreshButtons(unitID)
|
HealBot_Action_RefreshButtons(unitID)
|
||||||
HealBot_View_DirtyUnits[unitID] = nil
|
HealBot_View_DirtyUnits[unitID] = nil
|
||||||
|
HealBot_View_DirtyPower[unitID] = nil -- Skip fast path if doing full refresh
|
||||||
unitID, _ = next(HealBot_View_DirtyUnits)
|
unitID, _ = next(HealBot_View_DirtyUnits)
|
||||||
end
|
end
|
||||||
|
|
||||||
|
local powerID, _ = next(HealBot_View_DirtyPower)
|
||||||
|
while powerID do
|
||||||
|
HealBot_Action_RefreshPower(powerID)
|
||||||
|
HealBot_View_DirtyPower[powerID] = nil
|
||||||
|
powerID, _ = next(HealBot_View_DirtyPower)
|
||||||
|
end
|
||||||
|
|
||||||
if HealBot_EquipChangeTimer > 0 then
|
if HealBot_EquipChangeTimer > 0 then
|
||||||
HealBot_EquipChangeTimer = HealBot_EquipChangeTimer - arg1
|
HealBot_EquipChangeTimer = HealBot_EquipChangeTimer - arg1
|
||||||
if HealBot_EquipChangeTimer <= 0 then
|
if HealBot_EquipChangeTimer <= 0 then
|
||||||
|
|||||||
@@ -303,6 +303,21 @@ function HealBot_Action_RefreshButtons(unit)
|
|||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
|
function HealBot_Action_RefreshPower(unit)
|
||||||
|
if not unit or not HealBot_Action_UnitButtons[unit] then return end
|
||||||
|
local state = HealBot_Model.units[unit]
|
||||||
|
if not state then return end
|
||||||
|
|
||||||
|
for index, button in pairs(HealBot_Action_UnitButtons[unit]) do
|
||||||
|
if not button.bar3 then button.bar3 = getglobal(button:GetName() .. "Bar3") end
|
||||||
|
local bar3 = button.bar3
|
||||||
|
if bar3 and bar3:IsVisible() then
|
||||||
|
bar3:SetMinMaxValues(0, state.maxMana)
|
||||||
|
bar3:SetValue(state.mana)
|
||||||
|
end
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
function HealBot_Action_PositionButton(button, OsetX, OsetY, bwidth, bheight, checked, header)
|
function HealBot_Action_PositionButton(button, OsetX, OsetY, bwidth, bheight, checked, header)
|
||||||
local brspace = HealBot_Config.brspace[HealBot_Config.Current_Skin] or 3;
|
local brspace = HealBot_Config.brspace[HealBot_Config.Current_Skin] or 3;
|
||||||
if header then
|
if header then
|
||||||
|
|||||||
@@ -49,6 +49,9 @@ Default installation path: `C:\Program Files\World of Warcraft\Interface\AddOns\
|
|||||||
|
|
||||||
### Change Log
|
### Change Log
|
||||||
|
|
||||||
|
**v1.6.5**
|
||||||
|
* **Performance Update - Mana Tracking** - Added a fast-path redraw pipeline for unit power changes. This massive optimization prevents full frame redraws when players naturally regenerate or consume mana, resolving severe FPS drops in 40-man raids while tracking mana.
|
||||||
|
|
||||||
**v1.6.4**
|
**v1.6.4**
|
||||||
* **Bug Fix - UI Opacity** - Fixed a rendering layering bug where incoming heals drew on top of actual health, causing the semi-transparent incoming heal bar to wash out the solid health bar.
|
* **Bug Fix - UI Opacity** - Fixed a rendering layering bug where incoming heals drew on top of actual health, causing the semi-transparent incoming heal bar to wash out the solid health bar.
|
||||||
* **Bug Fix - CDC Colors** - Fixed health bar debuff coloring (CDC) by stopping `HealBot_HealthColor` from incorrectly querying debuffs directly, relying instead on cached debuff types.
|
* **Bug Fix - CDC Colors** - Fixed health bar debuff coloring (CDC) by stopping `HealBot_HealthColor` from incorrectly querying debuffs directly, relying instead on cached debuff types.
|
||||||
|
|||||||
Reference in New Issue
Block a user