Skip to content

feat(raidframes): portrait 3D Zoom to a full-body view, Character Size for Inside portraits - #2260

Merged
EllesmereGaming merged 1 commit into
EllesmereGaming:mainfrom
dfrisone:feat/raid-portrait-char-size
Sep 27, 2026
Merged

EllesmereGaming merged 1 commit into
EllesmereGaming:mainfrom
dfrisone:feat/raid-portrait-char-size

Conversation

@dfrisone

@dfrisone dfrisone commented Sep 27, 2026 •

Copy link
Copy Markdown
Contributor

What does this PR do?

Two additions to the raid frame portrait's 3D mode, written by Tzahal (sent as a patched 9.2.9 build; rebased here onto current main).

  • 3D Zoom now goes to 500. Up to 300 it is exactly the old camera distance (1..3). Above 300 the camera blends toward the full-body view (portrait zoom 1 -> 0, distance 3 -> 1), so the top of the slider shows the whole character. The slider tooltip says so.
  • Character Size (50..200%, new, in the same cog): scales the 3D character inside the portrait box, growing up from its bottom edge, while the box keeps its size. It applies to the Inside positions only (Detached style), where the box already clips its children (SetClipsChildren(inside)), and is disabled with a tooltip otherwise.

How: the model renders on a canvas the box's size times the scale, anchored to the box's bottom, and follows the box's real size through OnSizeChanged (Inside boxes take their height from anchors). At 100% nothing changes: the model is re-anchored to the box exactly as before, with no size script set.

Defaults are unchanged (3D Zoom 100, Character Size 100), so existing layouts look the same until someone moves a slider.

How was it tested?

  • Diffed the zip against the v9.2.9 tag: the change is these three files only. Applied cleanly onto current main (the portrait file is unchanged since 9.2.9).
  • Reviewed against the portrait code on main: the options' Inside rule matches the runtime's SideOf, the box clips its children for Inside positions, nothing else sets the box's OnSizeChanged, and the 3D Zoom mapping is continuous at 300 (zoom 1, distance 3).
  • ellesmereui-pr-check style gate: clean. luac -p: clean. No new locale keys.
  • Tested in game on live: 3D Zoom above 300 pulls back to the whole character, and Character Size scales the model inside an Inside portrait box.

Screenshots

Missing.

Checklist

  • New settings default OFF (no behavior change without opt-in) - Character Size defaults to 100% and 3D Zoom keeps its old default and behaviour up to 300
  • Zero cost while disabled: no events registered, no polling, no hooks doing work, no frames built - at 100% no size script is set
  • Cheap while enabled: event-driven (no polling, no timer-based logic, no per-frame allocations) - one OnSizeChanged on the addon's own portrait box while scaled
  • No writes onto Blizzard-owned frames (weak-table pattern used); HookScript/hooksecurefunc only, never SetScript on Blizzard frames - the box and model are the addon's own frames
  • Tested in-game on live; no version gates or pre-Midnight APIs added

Zoom out

@EllesmereGaming
EllesmereGaming merged commit eeb245b into EllesmereGaming:main Sep 27, 2026
1 check passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants