------------------------------ -- Localizing some crap -- ------------------------------ local MEMTHRESH = 32 local string_format, math_modf, GetNetStats, GetFramerate, gcinfo = string.format, math.modf, GetNetStats, GetFramerate, gcinfo local function ColorGradient(perc, r1, g1, b1, r2, g2, b2, r3, g3, b3) if perc >= 1 then return r3, g3, b3 elseif perc <= 0 then return r1, g1, b1 end local segment, relperc = math_modf(perc*2) if segment == 1 then r1, g1, b1, r2, g2, b2 = r2, g2, b2, r3, g3, b3 end return r1 + (r2-r1)*relperc, g1 + (g2-g1)*relperc, b1 + (b2-b1)*relperc end local function formats(value) if(value > 999) then return format('%.1f MiB', value / 1024) else return format('%.1f KiB', value) end end ------------------------ -- Tooltip! -- ------------------------ local onEnter = function(self) GameTooltip:SetOwner(TimeManagerClockButton, "ANCHOR_BOTTOMRIGHT") local fps = GetFramerate() local r, g, b = ColorGradient(fps/75, 1,0,0, 1,1,0, 0,1,0) GameTooltip:AddDoubleLine("FPS:", string_format("%.1f", fps), nil,nil,nil, r,g,b) local _, _, lag = GetNetStats() local r, g, b = ColorGradient(lag/1000, 0,1,0, 1,1,0, 1,0,0) GameTooltip:AddDoubleLine("Lag:", lag.. " ms", nil,nil,nil, r,g,b) GameTooltip:AddLine(" ") local addons, addon, total = {}, {}, 0 for i=1, GetNumAddOns() do addon = {GetAddOnInfo(i), GetAddOnMemoryUsage(i)} table.insert(addons, addon) total = total + GetAddOnMemoryUsage(i) end table.sort(addons, (function(a, b) return a[2] > b[2] end)) UpdateAddOnMemoryUsage() for i,addons in pairs(addons) do if addons[2] > MEMTHRESH then local r, g, b = ColorGradient((addons[2] - MEMTHRESH)/768, 0,1,0, 1,1,0, 1,0,0) local memstr = addons[2] > 1024 and string_format("%.1f MiB", addons[2]/1024) or string_format("%.1f KiB", addons[2]) GameTooltip:AddDoubleLine(addons[1], memstr, 1,1,1, r,g,b) end end GameTooltip:AddLine(" ") local r, g, b = ColorGradient(total/(40*1024), 0,1,0, 1,1,0, 1,0,0) GameTooltip:AddDoubleLine("Addon memory:", string_format("%.2f MiB", total/1024), nil,nil,nil, r,g,b) local mem = collectgarbage("count") local r, g, b = ColorGradient(mem/(20*1024), 0,1,0, 1,1,0, 1,0,0) GameTooltip:AddDoubleLine("Default UI memory:", string_format("%.2f MiB", (gcinfo()-total)/1024), nil,nil,nil, r,g,b) GameTooltip:AddLine(" ") GameTooltip:Show() end TimeManagerClockButton:SetScript("OnEnter", onEnter) TimeManagerClockButton:SetScript("OnLeave", function() GameTooltip:Hide() end)