WorldFrame

From Warcraft Wiki
Jump to navigation Jump to search

WorldFrame is a unique frame and renders the 3D world.

Details

  • Occupies the "WORLD" Frame Strata behind all other frames.
  • Remains even when the UI is hidden with Alt-Z. Children also remain.
  • Dismissing WorldFrame with Region:Hide() blocks all interaction with the 3D world.
  • Resizing WorldFrame with Region:SetPoint() leaves black borders that other widgets may fill.
    • Avoid anchor families (e.g. UIParent) because nameplate child frames are protected.
    • Disable the CinematicFrame OnShow and OnHide handlers to prevent errors during mid-encounter cinematics (e.g Mythic N'Zoth).
    • The 3D world scales to the height of WorldFrame, so a shorter, flatter frame has a wider-than-normal horizontal field of view.

Developer guidance

A comment in FrameXML/WorldFrame.lua provides the following guidance:

This special frame is used to render the world.
There can be only one of these frames!!
The world is rendered in the background of the frame.
Children of the world frame are visible even when the UI is turned off.

You can move/resize this frame by doing something like the following:
/script WorldFrame:ClearAllPoints(); WorldFrame:SetPoint("TOPLEFT", 32, 0); WorldFrame:SetPoint("BOTTOMRIGHT", -32, 32);
which is wide-screen aware, or...
/script WorldFrame:ClearAllPoints(); WorldFrame:SetWidth(960); WorldFrame:SetHeight(736); WorldFrame:SetPoint("CENTER", 0, 32);
which assumes 4x3 aspect ratio...
You also can type: 
/script WorldFrame:SetScale(value) Default is 1. This only affects Nameplates and will not be saved through relogs or ui reloads.

If you want to have the WorldFrame size/position saved, you can do:
/script WorldFrame:SetUserPlaced(true);

If you want to reset the WorldFrame's size and position, you can do:
/script WorldFrame:SetUserPlaced(false);
and then log out or reload the UI