* nameplates: drive discovery + GUID lookup via C_NamePlate
ClassicAPI now provides the modern C_NamePlate API and the matching
NAME_PLATE_CREATED / NAME_PLATE_UNIT_ADDED / NAME_PLATE_UNIT_REMOVED
events. Replace the WorldFrame:GetChildren polling + manual GUID
dictionary with event-driven plumbing.
- Drop the per-tick WorldFrame:GetNumChildren / GetChildren scan
- Delete IsNamePlate() border-texture filter (events only deliver
nameplate frames)
- Delete the guidRegistry table + its OnShow/OnUpdate maintenance;
every lookup now goes through C_NamePlate.GetNamePlateForGUID
- Move per-GUID cache cleanup (debuffCache / threatMemory /
combatColorCache / libdebuff_casts) from the OnUpdate visibility
scan to a NAME_PLATE_UNIT_REMOVED handler — fires exactly once
per unit going out of range
- NAME_PLATE_CREATED drives nameplates.OnCreate; NAME_PLATE_UNIT_ADDED
sets cachedGuid and drives nameplates.OnShow (so OnCreate no longer
calls OnShow directly and no longer HookScripts the parent)
- visiblePlateCount uses table.getn(C_NamePlate.GetNamePlates())
Net -64 lines, with a meaningful reduction in per-tick CPU (no more
WorldFrame child iteration + region/texture filter every 50ms).
* nameplates: switch UNIT_ADDED/REMOVED handlers to nameplateN tokens
ClassicAPI's NAME_PLATE_UNIT_ADDED / _REMOVED events now ship the
"nameplateN" unit token as arg1 (matching modern WoW) instead of the
GUID string.
- UNIT_ADDED: resolve plate via C_NamePlate.GetNamePlateForUnit(arg1);
derive the cache-key GUID via UnitGUID(arg1)
- UNIT_REMOVED: same lookup pattern; compute UnitGUID(arg1) inside the
handler before the slot recycles (per docs guarantee)
The other six GetNamePlateForGUID call sites (libdebuff aura callbacks,
UNIT_FLAGS_GUID, PLAYER_TARGET_CHANGED, combo-point handler, castbar
frame) stay on the GUID flavor — they receive real GUIDs from other
event paths.
---------
Co-authored-by: Brues <5278969+brues-code@users.noreply.github.com>