Files
PerfBoostSettings/settings.lua
T
2026-02-05 07:59:39 -08:00

952 lines
29 KiB
Lua

-- No PerfBoost v2, no need for settings
local has_perf_boost = pcall(GetCVar, "PB_Enabled")
if not has_perf_boost then
DEFAULT_CHAT_FRAME:AddMessage("|cffffcc00PerfBoost|cffffaaaa not present hiding settings.")
return
end
PerfBoost = AceLibrary("AceAddon-2.0"):new("AceEvent-2.0", "AceDebug-2.0", "AceModuleCore-2.0", "AceConsole-2.0", "AceDB-2.0", "AceHook-2.1")
PerfBoost:RegisterDB("PerfBoostSettingsDB")
PerfBoost:RegisterDefaults("profile", {
per_character_settings = false,
previous_player_render_dist = nil,
previous_player_render_dist_in_combat = nil,
})
PerfBoost.frame = CreateFrame("Frame", "PerfBoost", UIParent)
BINDING_HEADER_PERFBOOST = "PerfBoost";
BINDING_NAME_PERFBOOSTENABLE = "Toggles whether perfboot is enabled/disabled";
BINDING_NAME_PBHIDEALLPLAYERS = "Toggle hide all players (overrides other settings)";
BINDING_NAME_PBTOGGLEPLAYERRENDERIST = "Toggle 0 player render distance (hides all players respecting other settings)";
BINDING_NAME_PBSHOWALLPLAYERS = "Toggle show all players (overrides other settings)";
BINDING_NAME_PBCYCLEPLAYERVISIBILITY = "Cycle player visibility: show all -> hide all -> normal";
-- used when turning on per character settings
function PerfBoost:SavePerCharacterSettings()
local function saveNestedSettings(args)
for settingKey, settingData in pairs(args) do
if string.find(settingKey, "PB_") == 1 and settingData.get and settingData.set then
settingData.set(settingData.get()) -- trigger the set function for each setting with the current value
elseif settingData.args then
saveNestedSettings(settingData.args)
end
end
end
saveNestedSettings(PerfBoost.cmdtable.args)
end
function PerfBoost:ApplySavedSettings()
local function applyNestedSettings(args)
for settingKey, settingData in pairs(args) do
if string.find(settingKey, "PB_") == 1 and settingData.set then
if PerfBoost.db.profile[settingKey] ~= nil then
settingData.set(PerfBoost.db.profile[settingKey])
end
elseif settingData.args then
applyNestedSettings(settingData.args)
end
end
end
applyNestedSettings(PerfBoost.cmdtable.args)
end
function PerfBoost:OnEnable()
-- if per character settings are enabled, apply them
if PerfBoost.db.profile.per_character_settings then
PerfBoost:ApplySavedSettings()
end
end
PerfBoost.cmdtable = {
type = "group",
handler = PerfBoost,
args = {
per_character_settings = {
type = "toggle",
name = "Enable Per Character Settings",
desc = "Whether to use per character settings for all of the PB_ settings. This will cause settings saved in your character's PerfBoostSettings.lua to override any global settings in Config.wtf.",
order = 1,
get = function()
return PerfBoost.db.profile.per_character_settings
end,
set = function(v)
if v ~= PerfBoost.db.profile.per_character_settings then
PerfBoost.db.profile.per_character_settings = v
if v == true then
PerfBoost:SavePerCharacterSettings()
end
end
end,
},
PB_Enabled = {
type = "toggle",
name = "Enable Performance Boost",
desc = "Enable/disable all performance boost features",
order = 5,
get = function()
return GetCVar("PB_Enabled") == "1"
end,
set = function(v)
PerfBoost.db.profile.PB_Enabled = v
if v == true then
SetCVar("PB_Enabled", "1")
else
SetCVar("PB_Enabled", "0")
end
end,
},
PB_ShowAllPlayers = {
type = "toggle",
name = "Show All Players (Overrides other settings)",
desc = "Show all players regardless of distance and other render settings. Has priority over hide all players.",
order = 6,
get = function()
return GetCVar("PB_ShowAllPlayers") == "1"
end,
set = function(v)
PerfBoost.db.profile.PB_ShowAllPlayers = v
if v == true then
SetCVar("PB_ShowAllPlayers", "1")
else
SetCVar("PB_ShowAllPlayers", "0")
end
end,
},
PB_HideAllPlayers = {
type = "toggle",
name = "Hide All Players (Overrides other settings)",
desc = "Hide all players regardless of other render settings",
order = 7,
get = function()
return GetCVar("PB_HideAllPlayers") == "1"
end,
set = function(v)
PerfBoost.db.profile.PB_HideAllPlayers = v
if v == true then
SetCVar("PB_HideAllPlayers", "1")
else
SetCVar("PB_HideAllPlayers", "0")
end
end,
},
spacera = {
type = "header",
name = " ",
order = 10,
},
rendering = {
type = "group",
name = "Rendering Settings",
desc = "Configure all rendering and visibility options",
order = 15,
args = {
PB_AlwaysRenderRaidMarks = {
type = "toggle",
name = "Always Render Raid Marks",
desc = "Whether to always render raid marks",
order = 1,
get = function()
return GetCVar("PB_AlwaysRenderRaidMarks") == "1"
end,
set = function(v)
PerfBoost.db.profile.PB_AlwaysRenderRaidMarks = v
if v == true then
SetCVar("PB_AlwaysRenderRaidMarks", "1")
else
SetCVar("PB_AlwaysRenderRaidMarks", "0")
end
end,
},
PB_AlwaysRenderPVP = {
type = "toggle",
name = "Always Render PVP Players",
desc = "Whether to always render players flagged for PVP",
order = 2,
get = function()
return GetCVar("PB_AlwaysRenderPVP") == "1"
end,
set = function(v)
PerfBoost.db.profile.PB_AlwaysRenderPVP = v
if v == true then
SetCVar("PB_AlwaysRenderPVP", "1")
else
SetCVar("PB_AlwaysRenderPVP", "0")
end
end,
},
PB_AlwaysRenderPlayersWithAggro = {
type = "toggle",
name = "Always Render Players With Aggro",
desc = "Whether to always render players who have aggro from enemies",
order = 3,
get = function()
return GetCVar("PB_AlwaysRenderPlayersWithAggro") == "1"
end,
set = function(v)
PerfBoost.db.profile.PB_AlwaysRenderPlayersWithAggro = v
if v == true then
SetCVar("PB_AlwaysRenderPlayersWithAggro", "1")
else
SetCVar("PB_AlwaysRenderPlayersWithAggro", "0")
end
end,
},
PB_AlwaysRenderPlayers = {
type = "text",
name = "Always Render Players (ENTER to save)",
desc = "Comma separated list of playernames to always render regardless of other settings",
usage = "Name1,Name2,etc",
order = 4,
get = function()
return GetCVar("PB_AlwaysRenderPlayers") or ""
end,
set = function(v)
PerfBoost.db.profile.PB_AlwaysRenderPlayers = v
SetCVar("PB_AlwaysRenderPlayers", v)
end,
},
PB_NeverRenderPlayers = {
type = "text",
name = "Never Render Players (ENTER to save)",
desc = "Comma separated list of playernames to never render regardless of other settings",
usage = "Name1,Name2,etc",
order = 5,
get = function()
return GetCVar("PB_NeverRenderPlayers") or ""
end,
set = function(v)
PerfBoost.db.profile.PB_NeverRenderPlayers = v
SetCVar("PB_NeverRenderPlayers", v)
end,
},
spacer_player = {
type = "header",
name = "Player Distances",
order = 10,
},
PB_PlayerRenderDist = {
type = "range",
name = "Default Player Render Distance",
desc = "Max distance to render players when not in combat",
order = 11,
min = -1,
max = 100,
step = 1,
get = function()
local val = GetCVar("PB_PlayerRenderDist")
return val and tonumber(val) or 0
end,
set = function(v)
PerfBoost.db.profile.PB_PlayerRenderDist = v
SetCVar("PB_PlayerRenderDist", tostring(v))
end,
},
PB_PlayerRenderDistInCombat = {
type = "range",
name = "In Combat Player Render Distance",
desc = "Max distance to render players when in combat",
order = 12,
min = -1,
max = 100,
step = 1,
get = function()
local val = GetCVar("PB_PlayerRenderDistInCombat")
return val and tonumber(val) or 0
end,
set = function(v)
PerfBoost.db.profile.PB_PlayerRenderDistInCombat = v
SetCVar("PB_PlayerRenderDistInCombat", tostring(v))
end,
},
PB_PlayerRenderDistInCities = {
type = "range",
name = "In Cities Player Render Distance",
desc = "Max distance to render players when in cities",
order = 13,
min = -1,
max = 100,
step = 1,
get = function()
local val = GetCVar("PB_PlayerRenderDistInCities")
return val and tonumber(val) or 0
end,
set = function(v)
PerfBoost.db.profile.PB_PlayerRenderDistInCities = v
SetCVar("PB_PlayerRenderDistInCities", tostring(v))
end,
},
spacer_trash = {
type = "header",
name = "Trash Units",
order = 20,
},
PB_TrashUnitRenderDist = {
type = "range",
name = "Default Trash Unit (lvl < 63) Render Distance",
desc = "Max distance to render trash units when not in combat",
order = 21,
min = -1,
max = 100,
step = 1,
get = function()
local val = GetCVar("PB_TrashUnitRenderDist")
return val and tonumber(val) or 0
end,
set = function(v)
PerfBoost.db.profile.PB_TrashUnitRenderDist = v
SetCVar("PB_TrashUnitRenderDist", tostring(v))
end,
},
PB_TrashUnitRenderDistInCombat = {
type = "range",
name = "In Combat Trash Unit (lvl < 63) Render Distance",
desc = "Max distance to render trash units when in combat",
order = 22,
min = -1,
max = 100,
step = 1,
get = function()
local val = GetCVar("PB_TrashUnitRenderDistInCombat")
return val and tonumber(val) or 0
end,
set = function(v)
PerfBoost.db.profile.PB_TrashUnitRenderDistInCombat = v
SetCVar("PB_TrashUnitRenderDistInCombat", tostring(v))
end,
},
spacer_pets = {
type = "header",
name = "Pets & Summons",
order = 30,
},
PB_PetRenderDist = {
type = "range",
name = "Default Pet Render Distance",
desc = "Max distance to render pets when not in combat. Your own pet is always shown.",
order = 31,
min = -1,
max = 100,
step = 1,
get = function()
local val = GetCVar("PB_PetRenderDist")
return val and tonumber(val) or 0
end,
set = function(v)
PerfBoost.db.profile.PB_PetRenderDist = v
SetCVar("PB_PetRenderDist", tostring(v))
end,
},
PB_PetRenderDistInCombat = {
type = "range",
name = "In Combat Pet Render Distance",
desc = "Max distance to render pets when in combat. Your own pet is always shown.",
order = 32,
min = -1,
max = 100,
step = 1,
get = function()
local val = GetCVar("PB_PetRenderDistInCombat")
return val and tonumber(val) or 0
end,
set = function(v)
PerfBoost.db.profile.PB_PetRenderDistInCombat = v
SetCVar("PB_PetRenderDistInCombat", tostring(v))
end,
},
PB_SummonRenderDist = {
type = "range",
name = "Default Totem/Guardian Render Distance",
desc = "Max distance to render unnamed summons when not in combat. Your own totems and guardians are always shown.",
order = 33,
min = -1,
max = 100,
step = 1,
get = function()
local val = GetCVar("PB_SummonRenderDist")
return val and tonumber(val) or 0
end,
set = function(v)
PerfBoost.db.profile.PB_SummonRenderDist = v
SetCVar("PB_SummonRenderDist", tostring(v))
end,
},
PB_SummonRenderDistInCombat = {
type = "range",
name = "In Combat Totem/Guardian Render Distance",
desc = "Max distance to render unnamed summons when in combat. Your own totems and guardians are always shown.",
order = 34,
min = -1,
max = 100,
step = 1,
get = function()
local val = GetCVar("PB_SummonRenderDistInCombat")
return val and tonumber(val) or 0
end,
set = function(v)
PerfBoost.db.profile.PB_SummonRenderDistInCombat = v
SetCVar("PB_SummonRenderDistInCombat", tostring(v))
end,
},
spacer_corpse = {
type = "header",
name = "Other Objects",
order = 40,
},
PB_CorpseRenderDist = {
type = "range",
name = "Corpse Render Distance (see desc)",
desc = "Max distance to render corpses. Won't hide corpses for units >= lvl 63 or any corpses if you have group loot, need before greed or round robin set.",
order = 41,
min = -1,
max = 100,
step = 1,
get = function()
local val = GetCVar("PB_CorpseRenderDist")
return val and tonumber(val) or 0
end,
set = function(v)
PerfBoost.db.profile.PB_CorpseRenderDist = v
SetCVar("PB_CorpseRenderDist", tostring(v))
end,
},
},
},
spells = {
type = "group",
name = "Spell Visual Settings",
desc = "Configure spell visual effects and filtering",
order = 20,
args = {
PB_ShowPlayerSpellVisuals = {
type = "toggle",
name = "Show Other Player Spell Visuals",
desc = "Whether to show spell visual effects from other players. This includes spell casts, ranged weapon projectiles, wanding, not sure what else.",
order = 1,
get = function()
return GetCVar("PB_ShowPlayerSpellVisuals") == "1"
end,
set = function(v)
PerfBoost.db.profile.PB_ShowPlayerSpellVisuals = v
if v == true then
SetCVar("PB_ShowPlayerSpellVisuals", "1")
else
SetCVar("PB_ShowPlayerSpellVisuals", "0")
end
end,
},
PB_ShowPlayerGroundEffects = {
type = "toggle",
name = "Show Other Player Ground Effects",
desc = "Whether to show ground effects from players",
order = 2,
get = function()
return GetCVar("PB_ShowPlayerGroundEffects") == "1"
end,
set = function(v)
PerfBoost.db.profile.PB_ShowPlayerGroundEffects = v
if v == true then
SetCVar("PB_ShowPlayerGroundEffects", "1")
else
SetCVar("PB_ShowPlayerGroundEffects", "0")
end
end,
},
PB_ShowPlayerAuraVisuals = {
type = "toggle",
name = "Show Other Player Aura Visuals",
desc = "Whether to show aura visual effects on players",
order = 3,
get = function()
return GetCVar("PB_ShowPlayerAuraVisuals") == "1"
end,
set = function(v)
PerfBoost.db.profile.PB_ShowPlayerAuraVisuals = v
if v == true then
SetCVar("PB_ShowPlayerAuraVisuals", "1")
else
SetCVar("PB_ShowPlayerAuraVisuals", "0")
end
end,
},
PB_ShowUnitAuraVisuals = {
type = "toggle",
name = "Show Unit Aura Visuals",
desc = "Whether to show aura visual effects on units (NPCs, mobs)",
order = 4,
get = function()
return GetCVar("PB_ShowUnitAuraVisuals") == "1"
end,
set = function(v)
PerfBoost.db.profile.PB_ShowUnitAuraVisuals = v
if v == true then
SetCVar("PB_ShowUnitAuraVisuals", "1")
else
SetCVar("PB_ShowUnitAuraVisuals", "0")
end
end,
},
PB_HideSpellsForHiddenPlayers = {
type = "toggle",
name = "Hide Spells for Hidden Players",
desc = "Hide spell visuals from players that are hidden due to render distance or other settings",
order = 5,
get = function()
return GetCVar("PB_HideSpellsForHiddenPlayers") == "1"
end,
set = function(v)
PerfBoost.db.profile.PB_HideSpellsForHiddenPlayers = v
if v == true then
SetCVar("PB_HideSpellsForHiddenPlayers", "1")
else
SetCVar("PB_HideSpellsForHiddenPlayers", "0")
end
end,
},
spacer_spells = {
type = "header",
order = 10,
},
PB_HiddenSpellIds = {
type = "text",
name = "Always Hidden Spell IDs (ENTER to save)",
desc = "Comma separated list of spell IDs to hide visuals for",
usage = "1234,5678,etc",
order = 11,
get = function()
return GetCVar("PB_HiddenSpellIds") or ""
end,
set = function(v)
PerfBoost.db.profile.PB_HiddenSpellIds = v
SetCVar("PB_HiddenSpellIds", v)
end,
},
PB_AlwaysShownSpellIds = {
type = "text",
name = "Always Shown Spell IDs (ENTER to save)",
desc = "Comma separated list of spell IDs to always show visuals for, overriding other settings",
usage = "1234,5678,etc",
order = 12,
get = function()
return GetCVar("PB_AlwaysShownSpellIds") or ""
end,
set = function(v)
PerfBoost.db.profile.PB_AlwaysShownSpellIds = v
SetCVar("PB_AlwaysShownSpellIds", v)
end,
},
PB_ApplyHiddenSpellIdsToMe = {
type = "toggle",
name = "Apply Hidden Spell IDs to Me",
desc = "Whether to apply the hidden spell IDs list to your own character's spells",
order = 13,
get = function()
return GetCVar("PB_ApplyHiddenSpellIdsToMe") == "1"
end,
set = function(v)
PerfBoost.db.profile.PB_ApplyHiddenSpellIdsToMe = v
if v == true then
SetCVar("PB_ApplyHiddenSpellIdsToMe", "1")
else
SetCVar("PB_ApplyHiddenSpellIdsToMe", "0")
end
end,
},
spacer_debug = {
type = "header",
name = " ",
order = 20,
},
},
},
spacer_main = {
type = "header",
name = " ",
order = 25,
},
PB_FilterGuidEvents = {
type = "toggle",
name = "Filter GUID Events",
desc = "Filters out generally unnecessary superwow GUID-based events to reduce event spam and improve performance. Blocks events like UNIT_AURA, UNIT_HEALTH, UNIT_MANA when triggered with a guid instead of a string like 'player' or 'raid1', while preserving commonly used guid events like UNIT_COMBAT and UNIT_MODEL_CHANGED.",
order = 30,
get = function()
return GetCVar("PB_FilterGuidEvents") == "1"
end,
set = function(v)
PerfBoost.db.profile.PB_FilterGuidEvents = v
if v == true then
SetCVar("PB_FilterGuidEvents", "1")
else
SetCVar("PB_FilterGuidEvents", "0")
end
end,
},
},
}
local deuce = PerfBoost:NewModule("PerfBoost Options Menu")
deuce.hasFuBar = IsAddOnLoaded("FuBar") and FuBar
deuce.consoleCmd = not deuce.hasFuBar
PerfBoostOptions = AceLibrary("AceAddon-2.0"):new("AceDB-2.0", "FuBarPlugin-2.0")
PerfBoostOptions.name = "FuBar - PerfBoost"
PerfBoostOptions.hasIcon = "Interface\\Icons\\Spell_Nature_Strength"
PerfBoostOptions.defaultMinimapPosition = 180
PerfBoostOptions.independentProfile = true
PerfBoostOptions.hideWithoutStandby = false
PerfBoostOptions.OnMenuRequest = PerfBoost.cmdtable
local args = AceLibrary("FuBarPlugin-2.0"):GetAceOptionsDataTable(PerfBoostOptions)
for k, v in pairs(args) do
if PerfBoostOptions.OnMenuRequest.args[k] == nil then
PerfBoostOptions.OnMenuRequest.args[k] = v
end
end
SLASH_PBENABLE1, SLASH_PBENABLE2 = '/pbenable', '/perfboostenable'
function SlashCmdList.PBENABLE(msg, editbox)
local v = not (GetCVar("PB_Enabled") == "1")
PerfBoost.db.profile.PB_Enabled = v
if v == true then
SetCVar("PB_Enabled", "1")
DEFAULT_CHAT_FRAME:AddMessage("|cffffcc00PerfBoost:|r enabled")
else
SetCVar("PB_Enabled", "0")
DEFAULT_CHAT_FRAME:AddMessage("|cffffcc00PerfBoost:|r disabled")
end
end
SLASH_PBALWAYSRENDER1, SLASH_PBALWAYSRENDER2 = '/pbalwaysrender', '/pbar'
function SlashCmdList.PBALWAYSRENDER(msg, editbox)
local target = UnitName("target")
if not target then
DEFAULT_CHAT_FRAME:AddMessage("|cffffcc00PerfBoost:|r No target selected")
return
end
local current = GetCVar("PB_AlwaysRenderPlayers") or ""
local names = {}
if current ~= "" then
for name in string.gfind(current, "([^,]+)") do
name = string.gsub(name, "^%s*(.-)%s*$", "%1")
if name ~= "" then
names[name] = true
end
end
end
if names[target] then
DEFAULT_CHAT_FRAME:AddMessage("|cffffcc00PerfBoost:|r " .. target .. " is already in always render list")
return
end
names[target] = true
local newList = ""
for name in pairs(names) do
if newList == "" then
newList = name
else
newList = newList .. "," .. name
end
end
PerfBoost.db.profile.PB_AlwaysRenderPlayers = newList
SetCVar("PB_AlwaysRenderPlayers", newList)
DEFAULT_CHAT_FRAME:AddMessage("|cffffcc00PerfBoost:|r Added " .. target .. " to always render list")
end
SLASH_PBNEVERRENDER1, SLASH_PBNEVERRENDER2 = '/pbneverrender', '/pbnr'
function SlashCmdList.PBNEVERRENDER(msg, editbox)
local target = UnitName("target")
if not target then
DEFAULT_CHAT_FRAME:AddMessage("|cffffcc00PerfBoost:|r No target selected")
return
end
local current = GetCVar("PB_NeverRenderPlayers") or ""
local names = {}
if current ~= "" then
for name in string.gfind(current, "([^,]+)") do
name = string.gsub(name, "^%s*(.-)%s*$", "%1")
if name ~= "" then
names[name] = true
end
end
end
if names[target] then
DEFAULT_CHAT_FRAME:AddMessage("|cffffcc00PerfBoost:|r " .. target .. " is already in never render list")
return
end
names[target] = true
local newList = ""
for name in pairs(names) do
if newList == "" then
newList = name
else
newList = newList .. "," .. name
end
end
PerfBoost.db.profile.PB_NeverRenderPlayers = newList
SetCVar("PB_NeverRenderPlayers", newList)
DEFAULT_CHAT_FRAME:AddMessage("|cffffcc00PerfBoost:|r Added " .. target .. " to never render list")
end
SLASH_PBALWAYSRENDERREMOVE1, SLASH_PBALWAYSRENDERREMOVE2 = '/pbalwaysrenderremove', '/pbarr'
function SlashCmdList.PBALWAYSRENDERREMOVE(msg, editbox)
local target = UnitName("target")
if not target then
DEFAULT_CHAT_FRAME:AddMessage("|cffffcc00PerfBoost:|r No target selected")
return
end
local current = GetCVar("PB_AlwaysRenderPlayers") or ""
local names = {}
if current ~= "" then
for name in string.gfind(current, "([^,]+)") do
name = string.gsub(name, "^%s*(.-)%s*$", "%1")
if name ~= "" and name ~= target then
names[name] = true
end
end
end
local newList = ""
for name in pairs(names) do
if newList == "" then
newList = name
else
newList = newList .. "," .. name
end
end
PerfBoost.db.profile.PB_AlwaysRenderPlayers = newList
SetCVar("PB_AlwaysRenderPlayers", newList)
DEFAULT_CHAT_FRAME:AddMessage("|cffffcc00PerfBoost:|r Removed " .. target .. " from always render list")
end
SLASH_PBNEVERRENDERREMOVE1, SLASH_PBNEVERRENDERREMOVE2 = '/pbneverrenderremove', '/pbnrr'
function SlashCmdList.PBNEVERRENDERREMOVE(msg, editbox)
local target = UnitName("target")
if not target then
DEFAULT_CHAT_FRAME:AddMessage("|cffffcc00PerfBoost:|r No target selected")
return
end
local current = GetCVar("PB_NeverRenderPlayers") or ""
local names = {}
if current ~= "" then
for name in string.gfind(current, "([^,]+)") do
name = string.gsub(name, "^%s*(.-)%s*$", "%1")
if name ~= "" and name ~= target then
names[name] = true
end
end
end
local newList = ""
for name in pairs(names) do
if newList == "" then
newList = name
else
newList = newList .. "," .. name
end
end
PerfBoost.db.profile.PB_NeverRenderPlayers = newList
SetCVar("PB_NeverRenderPlayers", newList)
DEFAULT_CHAT_FRAME:AddMessage("|cffffcc00PerfBoost:|r Removed " .. target .. " from never render list")
end
SLASH_PBALWAYSRENDERCLEAR1, SLASH_PBALWAYSRENDERCLEAR2 = '/pbalwaysrenderclear', '/pbarc'
function SlashCmdList.PBALWAYSRENDERCLEAR(msg, editbox)
PerfBoost.db.profile.PB_AlwaysRenderPlayers = ""
SetCVar("PB_AlwaysRenderPlayers", "")
DEFAULT_CHAT_FRAME:AddMessage("|cffffcc00PerfBoost:|r Cleared always render list")
end
SLASH_PBNEVERRENDERCLEAR1, SLASH_PBNEVERRENDERCLEAR2 = '/pbneverrenderclear', '/pbnrc'
function SlashCmdList.PBNEVERRENDERCLEAR(msg, editbox)
PerfBoost.db.profile.PB_NeverRenderPlayers = ""
SetCVar("PB_NeverRenderPlayers", "")
DEFAULT_CHAT_FRAME:AddMessage("|cffffcc00PerfBoost:|r Cleared never render list")
end
SLASH_PBHIDEALLPLAYERS1, SLASH_PBHIDEALLPLAYERS2 = '/pbhideallplayers', '/pbhap'
function SlashCmdList.PBHIDEALLPLAYERS(msg, editbox)
local v = not (GetCVar("PB_HideAllPlayers") == "1")
PerfBoost.db.profile.PB_HideAllPlayers = v
if v == true then
SetCVar("PB_HideAllPlayers", "1")
DEFAULT_CHAT_FRAME:AddMessage("|cffffcc00PerfBoost:|r Hide all players enabled")
else
SetCVar("PB_HideAllPlayers", "0")
DEFAULT_CHAT_FRAME:AddMessage("|cffffcc00PerfBoost:|r Hide all players disabled")
end
end
SLASH_PBSHOWALLPLAYERS1, SLASH_PBSHOWALLPLAYERS2 = '/pbshowallplayers', '/pbsap'
function SlashCmdList.PBSHOWALLPLAYERS(msg, editbox)
local v = not (GetCVar("PB_ShowAllPlayers") == "1")
PerfBoost.db.profile.PB_ShowAllPlayers = v
if v == true then
SetCVar("PB_ShowAllPlayers", "1")
DEFAULT_CHAT_FRAME:AddMessage("|cffffcc00PerfBoost:|r Show all players enabled")
else
SetCVar("PB_ShowAllPlayers", "0")
DEFAULT_CHAT_FRAME:AddMessage("|cffffcc00PerfBoost:|r Show all players disabled")
end
end
SLASH_PBCYCLEPLAYERVISIBILITY1, SLASH_PBCYCLEPLAYERVISIBILITY2 = '/pbcycleplayervisibility', '/pbcycle'
function SlashCmdList.PBCYCLEPLAYERVISIBILITY(msg, editbox)
local showAll = GetCVar("PB_ShowAllPlayers") == "1"
local hideAll = GetCVar("PB_HideAllPlayers") == "1"
if not showAll and not hideAll then
-- Normal -> Show All
PerfBoost.db.profile.PB_ShowAllPlayers = true
PerfBoost.db.profile.PB_HideAllPlayers = false
SetCVar("PB_ShowAllPlayers", "1")
SetCVar("PB_HideAllPlayers", "0")
DEFAULT_CHAT_FRAME:AddMessage("|cffffcc00PerfBoost:|r Show all players enabled")
elseif showAll and not hideAll then
-- Show All -> Hide All
PerfBoost.db.profile.PB_ShowAllPlayers = false
PerfBoost.db.profile.PB_HideAllPlayers = true
SetCVar("PB_ShowAllPlayers", "0")
SetCVar("PB_HideAllPlayers", "1")
DEFAULT_CHAT_FRAME:AddMessage("|cffffcc00PerfBoost:|r Hide all players enabled")
else
-- Hide All (or both) -> Normal
PerfBoost.db.profile.PB_ShowAllPlayers = false
PerfBoost.db.profile.PB_HideAllPlayers = false
SetCVar("PB_ShowAllPlayers", "0")
SetCVar("PB_HideAllPlayers", "0")
DEFAULT_CHAT_FRAME:AddMessage("|cffffcc00PerfBoost:|r Normal player rendering enabled")
end
end
SLASH_PBTOGGLEPLAYERRENDERIST1, SLASH_PBTOGGLEPLAYERRENDERIST2 = '/pbtoggleplayerrenderist', '/pbtrd'
function SlashCmdList.PBTOGGLEPLAYERRENDERIST(msg, editbox)
local currentDist = PerfBoost.db.profile.PB_PlayerRenderDist
local currentDistInCombat = PerfBoost.db.profile.PB_PlayerRenderDistInCombat
if PerfBoost.db.profile.previous_player_render_dist ~= nil then
-- restore previous values
local restoreValue = PerfBoost.db.profile.previous_player_render_dist
local restoreValueInCombat = PerfBoost.db.profile.previous_player_render_dist_in_combat
PerfBoost.db.profile.PB_PlayerRenderDist = restoreValue
PerfBoost.db.profile.PB_PlayerRenderDistInCombat = restoreValueInCombat
SetCVar("PB_PlayerRenderDist", tostring(restoreValue))
SetCVar("PB_PlayerRenderDistInCombat", tostring(restoreValueInCombat))
DEFAULT_CHAT_FRAME:AddMessage("|cffffcc00PerfBoost:|r Player render distances restored to " .. tostring(restoreValue) .. " (normal) and " .. tostring(restoreValueInCombat) .. " (combat)")
PerfBoost.db.profile.previous_player_render_dist = nil
PerfBoost.db.profile.previous_player_render_dist_in_combat = nil
else
-- Save current values and set both to 0
PerfBoost.db.profile.previous_player_render_dist = currentDist
PerfBoost.db.profile.previous_player_render_dist_in_combat = currentDistInCombat
PerfBoost.db.profile.PB_PlayerRenderDist = 0
PerfBoost.db.profile.PB_PlayerRenderDistInCombat = 0
SetCVar("PB_PlayerRenderDist", "0")
SetCVar("PB_PlayerRenderDistInCombat", "0")
DEFAULT_CHAT_FRAME:AddMessage("|cffffcc00PerfBoost:|r Player render distances set to 0 (saved: " .. tostring(currentDist) .. " normal, " .. tostring(currentDistInCombat) .. " combat)")
end
end
-- Conditionally add new CVars if they exist (for compatibility with older DLL versions)
local has_laggy_boss_spells = pcall(GetCVar, "PB_HideLaggyBossSpellsOnOthers")
if has_laggy_boss_spells then
PerfBoost.cmdtable.args.spells.args.PB_HideLaggyBossSpellsOnOthers = {
type = "toggle",
name = "Hide Laggy Boss Spells on Others",
desc = "Curated list of spells for Sapphiron, Gnarlmoon, and Anomalus that will be hidden on other players/units. If you aren't displaying unit auras most of these will already be hidden.",
order = 6,
get = function()
return GetCVar("PB_HideLaggyBossSpellsOnOthers") == "1"
end,
set = function(v)
PerfBoost.db.profile.PB_HideLaggyBossSpellsOnOthers = v
if v == true then
SetCVar("PB_HideLaggyBossSpellsOnOthers", "1")
else
SetCVar("PB_HideLaggyBossSpellsOnOthers", "0")
end
end,
}
end
local has_debug_shown_spells = pcall(GetCVar, "PB_DebugShownSpells")
if has_debug_shown_spells then
PerfBoost.cmdtable.args.spells.args.PB_DebugShownSpells = {
type = "toggle",
name = "Debug Shown Spells",
desc = "Prints to the log information about each spell being displayed.",
order = 21,
get = function()
return GetCVar("PB_DebugShownSpells") == "1"
end,
set = function(v)
PerfBoost.db.profile.PB_DebugShownSpells = v
if v == true then
SetCVar("PB_DebugShownSpells", "1")
else
SetCVar("PB_DebugShownSpells", "0")
end
end,
}
end
local has_doodad_render_dist = pcall(GetCVar, "PB_DoodadRenderDist")
if has_doodad_render_dist then
PerfBoost.cmdtable.args.rendering.args.PB_DoodadRenderDist = {
type = "range",
name = "Doodad/Game Object Render Distance",
desc = "Max distance to render doodads. Interactable game objects (chests, doors, quest objects, etc.) are not hidden. Ignored if you are PvP flagged.",
order = 42,
min = -1,
max = 100,
step = 1,
get = function()
local val = GetCVar("PB_DoodadRenderDist")
return val and tonumber(val) or 0
end,
set = function(v)
PerfBoost.db.profile.PB_DoodadRenderDist = v
SetCVar("PB_DoodadRenderDist", tostring(v))
end,
}
end