Drive auras from UNIT_AURA_DELTA

UNIT_AURA says nothing about what changed and stays silent when a buff
is refreshed or its duration packet lands, so a recast HoT kept its old
timer until something else rebuilt the row. UNIT_AURA_DELTA reports
added, updated and removed aura instances, refreshes included.

Unit frames register it on their own token. An add, a removal or a full
update rebuilds the auras as before; an update-only delta re-reads the
slot behind each shown icon for its stacks and timer and redraws the
buff indicators, without a relayout or a dispel scan. Frames that
follow a GUID (the target-of-X chain) stay on UNIT_AURA, since the
delta only fires for tokens. A finished aura layout announces itself
as "unitframe:auras".

buffwatch drops its 0.4s rescan: bars rebuild on the delta, on login
and on a target change, and a timer wakes the frame when the next aura
crosses the bar threshold. Bars re-anchor when the player or target
frame lays out its aura rows, and a whitelist or blacklist click
applies at once.

Nameplates, the loss of control alert and the equipment manager's
mount/stealth/dining check listen to the delta as well.
This commit is contained in:
Brues
2026-10-31 11:32:47 -05:00
parent 8b5a27f9be
commit b6f58b0e04
5 changed files with 98 additions and 17 deletions
+1 -1
View File
@@ -1536,7 +1536,7 @@ pfUI:RegisterModule("equipmentmanager", function()
engineEvents:RegisterEvent("PLAYER_ENTERING_WORLD")
engineEvents:RegisterEvent("PLAYER_LEAVING_WORLD")
engineEvents:RegisterUnitEvent("UNIT_AURA", "player") -- mounted, stealth, dining
engineEvents:RegisterUnitEvent("UNIT_AURA_DELTA", "player") -- mounted, stealth, dining
engineEvents:RegisterEvent("UPDATE_SHAPESHIFT_FORM")
engineEvents:RegisterEvent("ZONE_CHANGED")
engineEvents:RegisterEvent("ZONE_CHANGED_INDOORS")