mirror of
https://github.com/brues-code/pfUI.git
synced 2026-10-26 05:50:50 +00:00
Use ClassicAPI animation groups for fades and pulses
Replace hand-rolled OnUpdate alpha loops with engine animation groups: unit frame aggro/combat glow, tracking icon pulse, new-mail blink, castbar fade-out, autohide, XP/rep bar fade, info box timeout and the unlock-mode scale label. Timing no longer depends on framerate, and the always-running glow driver and tracking OnUpdate are gone. The XP bar tracks hover through OnEnter/OnLeave instead of MouseIsOver, so a fade can't restart under the cursor.
This commit is contained in:
+11
-18
@@ -34,6 +34,14 @@ pfUI:RegisterModule("tracking", function ()
|
||||
pfUI.tracking.icon:SetTexCoord(.08, .92, .08, .92)
|
||||
pfUI.tracking.icon:SetAllPoints(pfUI.tracking)
|
||||
|
||||
-- Pulses the icon while no tracking spell is active
|
||||
pfUI.tracking.pulse = pfUI.tracking.icon:CreateAnimationGroup()
|
||||
pfUI.tracking.pulse:SetLooping("BOUNCE")
|
||||
local fade = pfUI.tracking.pulse:CreateAnimation("Alpha")
|
||||
fade:SetChange(-.5)
|
||||
fade:SetDuration(.5)
|
||||
fade:SetSmoothing("IN_OUT")
|
||||
|
||||
pfUI.tracking.menu = CreateFrame("Frame", "pfUIDropDownMenuTracking", nil, "UIDropDownMenuTemplate")
|
||||
|
||||
pfUI.tracking:RegisterEvent("PLAYER_ENTERING_WORLD")
|
||||
@@ -48,19 +56,6 @@ pfUI:RegisterModule("tracking", function ()
|
||||
this:RefreshMenu()
|
||||
end)
|
||||
|
||||
pfUI.tracking:SetScript("OnUpdate", function()
|
||||
if this.pulse then
|
||||
local _,_,_,alpha = this.icon:GetVertexColor()
|
||||
local fpsmod = GetFramerate() / 30
|
||||
if not alpha or alpha >= 0.9 then
|
||||
this.modifier = -0.03 / fpsmod
|
||||
elseif alpha <= .5 then
|
||||
this.modifier = 0.03 / fpsmod
|
||||
end
|
||||
this.icon:SetVertexColor(1,1,1,alpha + this.modifier)
|
||||
end
|
||||
end)
|
||||
|
||||
pfUI.tracking:RegisterForClicks("LeftButtonUp", "RightButtonUp")
|
||||
pfUI.tracking:SetScript("OnClick", function()
|
||||
if arg1 == "RightButton" then
|
||||
@@ -113,20 +108,18 @@ pfUI:RegisterModule("tracking", function ()
|
||||
local texture = GetTrackingTexture()
|
||||
if texture and texture ~= state.texture then
|
||||
state.texture = texture
|
||||
pfUI.tracking.pulse = nil
|
||||
pfUI.tracking.pulse:Stop()
|
||||
pfUI.tracking.icon:SetTexture(texture)
|
||||
pfUI.tracking.icon:SetVertexColor(1,1,1,1)
|
||||
pfUI.tracking:Show()
|
||||
elseif not texture then
|
||||
state.texture = nil
|
||||
|
||||
if pulse and next(state.spells) ~= nil then
|
||||
pfUI.tracking.pulse = true
|
||||
pfUI.tracking.icon:SetTexture("Interface\\Icons\\INV_Misc_QuestionMark")
|
||||
pfUI.tracking.icon:SetVertexColor(1,1,1,1)
|
||||
if not pfUI.tracking.pulse:IsPlaying() then pfUI.tracking.pulse:Play() end
|
||||
pfUI.tracking:Show()
|
||||
else
|
||||
pfUI.tracking.pulse = nil
|
||||
pfUI.tracking.pulse:Stop()
|
||||
pfUI.tracking:Hide()
|
||||
end
|
||||
end
|
||||
|
||||
Reference in New Issue
Block a user