wowlib 0.0.0
Read & write World of Warcraft client files — a C++26 core
Loading...
Searching...
No Matches
wowlib::formats::wmo Namespace Reference

Namespaces

namespace  detail
namespace  group
 The WMO group-file entities: WMOGroup, WMOGroupBody and their per-version classes.
namespace  root
 The WMO root-file entity: WMORoot and its per-version classes.

Classes

struct  WMOBase
 The version-agnostic base of every WMO<V> (welded as "WMO"). More...

Typedefs

template<ClientVersion V>
using WMO = detail::WMO<canonicalVersion(V, WmoAssemblyPivots, WmoVersions)>
 A whole WMO — the canonicalizing face of detail::WMO: every client version maps to its range's first grid version (WmoAssemblyPivots), so e.g.
template<ClientVersion V>
using WMORoot
 A WMO root file — the canonicalizing face of detail::WMORoot: every client version maps to its range's first grid version (WmoRootPivots), so e.g.
template<ClientVersion V>
using WMOGroup
 One WMO group file — the canonicalizing face of detail::WMOGroup (same pivots as the body it contains).

Variables

constexpr std::uint32_t WmoVersionV17 = 17
 The WMO format version every supported client uses (MVER payload).
constexpr ClientVersion WmoBatchLargeMaterial = builds::Legion_Alpha
 legion 7.0.1.20740: SMOBatch's culling-box prelude gives way to a large (uint16) material id.
constexpr ClientVersion WmoSplitGroups = builds::SL_EternitysEnd
 9.2.0.42423: the unused u32 at MOGP+0x40 becomes the two split-group indices.
constexpr std::array WmoVersions
 The versions WMO is instantiated (and welded) for: every targeted last-minor-of-major release, in release order.
constexpr std::array WmoBatchPivots {WmoBatchLargeMaterial}
 SMOBatch: the culling-box prelude gives way to the large material id.
constexpr std::array WmoGroupHeaderPivots {WmoSplitGroups}
 SMOGroupHeader: the split-group indices replacing the unused u32.
constexpr std::array WmoRootPivots
 WMORoot: every trait-slot boundary and chunk-introduction build the root file carries (GFID/MOUV/MOSI/MODI/the volume family/new lights/ M3 materials).
constexpr std::array WmoGroupPivots
 WMOGroupBody / WMOGroup: every trait-slot boundary and chunk build the group files carry, plus the two binary-layout pivots above.
constexpr std::array WmoAssemblyPivots
 The WMO assembly: the union of the root and group pivots.

Typedef Documentation

◆ WMO

A whole WMO — the canonicalizing face of detail::WMO: every client version maps to its range's first grid version (WmoAssemblyPivots), so e.g.

one instantiation serves Vanilla through WotLK.

Definition at line 138 of file wmo.hpp.

◆ WMOGroup

One WMO group file — the canonicalizing face of detail::WMOGroup (same pivots as the body it contains).

Definition at line 756 of file group.hpp.

◆ WMORoot

A WMO root file — the canonicalizing face of detail::WMORoot: every client version maps to its range's first grid version (WmoRootPivots), so e.g.

one instantiation serves Vanilla through WoD.

Definition at line 431 of file root.hpp.

Variable Documentation

◆ WmoAssemblyPivots

std::array wowlib::formats::wmo::WmoAssemblyPivots
inlineconstexpr
Initial value:
{
}
constexpr ClientVersion DF_Alpha
dragonflight alpha, 10.0.0 build 46181.
constexpr ClientVersion TWW_Alpha
The War Within alpha, 11.0.0 build 54210.
constexpr ClientVersion Legion_ShadowsOfArgus_24473
legion, Shadows of Argus PTR, 7.3.0 build 24473.
constexpr ClientVersion Cata
Cataclysm (any 4.x client).
constexpr ClientVersion BfA_VisionsOfNzoth_33775
BfA, Visions of N'Zoth, 8.3.0 build 33775 (WMO MPVR).
constexpr ClientVersion BfA_VisionsOfNzoth_32044
BfA, Visions of N'Zoth PTR, 8.3.0 build 32044.
constexpr ClientVersion SL_Alpha_33978
shadowlands alpha, 9.0.1 build 33978 (WFV3/EDGF/NERF/DBOC; PFDC is dated here by wowdev but reached l...
constexpr ClientVersion BfA_TidesOfVengeance
BfA, Tides of Vengeance PTR, 8.1.0 build 27826 (RPID/GPID, WMO MOSI/MODI).
constexpr ClientVersion SL_ChainsOfDomination
shadowlands, Chains of Domination PTR, 9.1.0 build 39015.
constexpr ClientVersion MoP
Mists of Pandaria (any 5.x client).
constexpr ClientVersion WoD
Warlords of Draenor (any 6.x client).
constexpr ClientVersion TWW_Undermined
TWW, Undermine(d) PTR, 11.1.0 build 58221.
constexpr ClientVersion WmoSplitGroups
9.2.0.42423: the unused u32 at MOGP+0x40 becomes the two split-group indices.
constexpr ClientVersion WmoBatchLargeMaterial
legion 7.0.1.20740: SMOBatch's culling-box prelude gives way to a large (uint16) material id.

The WMO assembly: the union of the root and group pivots.

Definition at line 100 of file boundaries.hpp.

◆ WmoBatchLargeMaterial

ClientVersion wowlib::formats::wmo::WmoBatchLargeMaterial = builds::Legion_Alpha
inlineconstexpr

legion 7.0.1.20740: SMOBatch's culling-box prelude gives way to a large (uint16) material id.

A layout pivot for SMOBatch.

Definition at line 27 of file boundaries.hpp.

◆ WmoBatchPivots

std::array wowlib::formats::wmo::WmoBatchPivots {WmoBatchLargeMaterial}
inlineconstexpr

SMOBatch: the culling-box prelude gives way to the large material id.

Definition at line 59 of file boundaries.hpp.

◆ WmoGroupHeaderPivots

std::array wowlib::formats::wmo::WmoGroupHeaderPivots {WmoSplitGroups}
inlineconstexpr

SMOGroupHeader: the split-group indices replacing the unused u32.

Definition at line 62 of file boundaries.hpp.

◆ WmoGroupPivots

std::array wowlib::formats::wmo::WmoGroupPivots
inlineconstexpr
Initial value:

WMOGroupBody / WMOGroup: every trait-slot boundary and chunk build the group files carry, plus the two binary-layout pivots above.

MoP is a pivot because MDAL debuts there, NOT at WoD as wowdev has it ("could have been added earlier", flagged unverified): a 5.4.8 corpus sweep found 421 MDAL chunks, while 700 sampled Cata groups and 400 WotLK groups carry none. Without the pivot, WMOGroupBody<mop> would canonicalize onto the Cata instantiation and the chunk would stay unmodelled for the era that introduced it.

Definition at line 87 of file boundaries.hpp.

◆ WmoRootPivots

std::array wowlib::formats::wmo::WmoRootPivots
inlineconstexpr
Initial value:

WMORoot: every trait-slot boundary and chunk-introduction build the root file carries (GFID/MOUV/MOSI/MODI/the volume family/new lights/ M3 materials).

Definition at line 67 of file boundaries.hpp.

◆ WmoSplitGroups

ClientVersion wowlib::formats::wmo::WmoSplitGroups = builds::SL_EternitysEnd
inlineconstexpr

9.2.0.42423: the unused u32 at MOGP+0x40 becomes the two split-group indices.

A layout pivot for SMOGroupHeader.

Definition at line 31 of file boundaries.hpp.

◆ WmoVersions

std::array wowlib::formats::wmo::WmoVersions
inlineconstexpr
Initial value:
{
}
constexpr ClientVersion Shadowlands
constexpr ClientVersion Tww
constexpr ClientVersion Bfa
constexpr ClientVersion Mop
constexpr ClientVersion Wod
constexpr ClientVersion Tbc
constexpr ClientVersion Vanilla
constexpr ClientVersion Legion
constexpr ClientVersion Dragonflight
constexpr ClientVersion Cata
constexpr ClientVersion Wotlk

The versions WMO is instantiated (and welded) for: every targeted last-minor-of-major release, in release order.

Definition at line 44 of file boundaries.hpp.

Referenced by wowlib::audit::detail::FormatDrivers::wmo().

◆ WmoVersionV17

std::uint32_t wowlib::formats::wmo::WmoVersionV17 = 17
inlineconstexpr

The WMO format version every supported client uses (MVER payload).

Definition at line 23 of file boundaries.hpp.