Ok, I've done away with the OnEvent script in all but my target panel, and this is what I have:
local elite = kgPanels:FetchFrame("Elite")
local boss = kgPanels:FetchFrame("Boss")
local rare = kgPanels:FetchFrame("Rare")
local rareelite = kgPanels:FetchFrame("RareElite")
local cl = UnitClassification("Target")
self:RegisterEvent("PLAYER_TARGET_CHANGED")
if cl == "elite" then
elite:Show()
boss:Hide()
rare:Hide()
rareelite:Hide()
self:Hide()
elseif cl == "worldboss" then
elite:Hide()
boss:Show()
rare:Hide()
rareelite:Hide()
self:Hide()
elseif cl == "rare" then
elite:Hide()
boss:Hide()
rare:Show()
rareelite:Hide()
self:Hide()
elseif cl == "rareelite" then
elite:Hide()
boss:Hide()
rare:Hide()
rareelite:Show()
self:Hide()
else
elite:Hide()
boss:Hide()
rare:Hide()
rareelite:Hide()
self:Show()
end
It's working great and there's no more delay. Thanks all.