unitframes: combine unit visibility scanners

improve performance by reducing the amount of visible frames
and combining visibility scanners into a single dedicated updater
This commit is contained in:
shagu
2020-08-25 18:39:33 +02:00
parent 990ec09296
commit 092c8a72a0
+8 -10
View File
@@ -125,11 +125,12 @@ local function DebuffOnClick()
end end
end end
local function UpdateVisibilityScanner(self) local visibilityscan = CreateFrame("Frame", "pfUnitFrameVisibility", UIParent)
local self = self or this visibilityscan.frames = {}
if ( self.limit or 1) > GetTime() then return else self.limit = GetTime() + .2 end visibilityscan:SetScript("OnUpdate", function()
self.frame:UpdateVisibility() if ( this.limit or 1) > GetTime() then return else this.limit = GetTime() + .2 end
end for frame in pairs(this.frames) do frame:UpdateVisibility() end
end)
local aggrodata = { } local aggrodata = { }
function pfUI.api.UnitHasAggro(unit) function pfUI.api.UnitHasAggro(unit)
@@ -945,8 +946,8 @@ function pfUI.uf:EnableScripts()
f:SetScript("OnLeave", pfUI.uf.OnLeave) f:SetScript("OnLeave", pfUI.uf.OnLeave)
f:EnableClickCast() f:EnableClickCast()
-- add generic visibility handler -- add frame to visibility refresh handler
f.visibility:SetScript("OnUpdate", UpdateVisibilityScanner) visibilityscan.frames[f] = true
end end
function pfUI.uf:CreateUnitFrame(unit, id, config, tick) function pfUI.uf:CreateUnitFrame(unit, id, config, tick)
@@ -1044,9 +1045,6 @@ function pfUI.uf:CreateUnitFrame(unit, id, config, tick)
f.portrait.model.next = CreateFrame("PlayerModel", nil, nil) f.portrait.model.next = CreateFrame("PlayerModel", nil, nil)
f.feedbackText = f:CreateFontString("pfHitIndicator" .. f.label .. f.id, "OVERLAY", "NumberFontNormalHuge") f.feedbackText = f:CreateFontString("pfHitIndicator" .. f.label .. f.id, "OVERLAY", "NumberFontNormalHuge")
f.visibility = f.visibility or CreateFrame("Frame", nil, pfUI)
f.visibility.frame = f
f:Hide() f:Hide()
f:UpdateConfig() f:UpdateConfig()
f:UpdateFrameSize() f:UpdateFrameSize()