Table of Contents

Namespace WoWLib.Formats.M2

Classes

M2

A whole model, abstract over the client version — the MD20 body with its satellite files (.skin, .anim) baked in. Construct the concrete version with M2.for_version(expansion), then read()/write(); the per-version M2* classes are subclasses. See https://wowdev.wiki/M2.

M2.Era

The typed era factories: one method per expansion, each returning the concrete range class covering it — the compile-time twin of ForVersion.

M2Bfa

A whole model for one client version: the MD20 body with skins and external sequence data baked in. A written model is canonical-layout and re-reads equal (no byte-perfect guarantee for offset formats). See https://wowdev.wiki/M2.

M2CataToMop

A whole model for one client version: the MD20 body with skins and external sequence data baked in. A written model is canonical-layout and re-reads equal (no byte-perfect guarantee for offset formats). See https://wowdev.wiki/M2.

M2Dragonflight

A whole model for one client version: the MD20 body with skins and external sequence data baked in. A written model is canonical-layout and re-reads equal (no byte-perfect guarantee for offset formats). See https://wowdev.wiki/M2.

M2Legion

A whole model for one client version: the MD20 body with skins and external sequence data baked in. A written model is canonical-layout and re-reads equal (no byte-perfect guarantee for offset formats). See https://wowdev.wiki/M2.

M2Shadowlands

A whole model for one client version: the MD20 body with skins and external sequence data baked in. A written model is canonical-layout and re-reads equal (no byte-perfect guarantee for offset formats). See https://wowdev.wiki/M2.

M2Tbc

A whole model for one client version: the MD20 body with skins and external sequence data baked in. A written model is canonical-layout and re-reads equal (no byte-perfect guarantee for offset formats). See https://wowdev.wiki/M2.

M2TheWarWithin

A whole model for one client version: the MD20 body with skins and external sequence data baked in. A written model is canonical-layout and re-reads equal (no byte-perfect guarantee for offset formats). See https://wowdev.wiki/M2.

M2Vanilla

A whole model for one client version: the MD20 body with skins and external sequence data baked in. A written model is canonical-layout and re-reads equal (no byte-perfect guarantee for offset formats). See https://wowdev.wiki/M2.

M2Wod

A whole model for one client version: the MD20 body with skins and external sequence data baked in. A written model is canonical-layout and re-reads equal (no byte-perfect guarantee for offset formats). See https://wowdev.wiki/M2.

M2Wotlk

A whole model for one client version: the MD20 body with skins and external sequence data baked in. A written model is canonical-layout and re-reads equal (no byte-perfect guarantee for offset formats). See https://wowdev.wiki/M2.

SkelAttachments

Era-resolved construction for the SkelAttachments family (the C# for_version): the dynamic ForVersion pair where a common welded base exists, and the nested Era factory mapping each expansion to its covering range class at compile time.

SkelAttachments.Era

The typed era factories: one method per expansion, each returning the concrete range class covering it — the compile-time twin of ForVersion.

SkelAttachmentsLegionPlus

The SKA1 payload: the attachments that moved out of the model (external sequences' track data lives in the .anim AFSA chunks).

SkelBones

Era-resolved construction for the SkelBones family (the C# for_version): the dynamic ForVersion pair where a common welded base exists, and the nested Era factory mapping each expansion to its covering range class at compile time.

SkelBones.Era

The typed era factories: one method per expansion, each returning the concrete range class covering it — the compile-time twin of ForVersion.

SkelBonesLegionPlus

The SKB1 payload: the bones that moved out of the model (external sequences' track data lives in the .anim AFSB chunks).

SkelHeader

Era-resolved construction for the SkelHeader family (the C# for_version): the dynamic ForVersion pair where a common welded base exists, and the nested Era factory mapping each expansion to its covering range class at compile time.

SkelHeader.Era

The typed era factories: one method per expansion, each returning the concrete range class covering it — the compile-time twin of ForVersion.

SkelHeaderLegionPlus

The SKL1 payload: the skeleton's identity.

SkelParentData

The SKPD parent-skeleton link: the parent .skel FileDataID whose AFID/BFID satellite files this skeleton shares.

SkelSequences

Era-resolved construction for the SkelSequences family (the C# for_version): the dynamic ForVersion pair where a common welded base exists, and the nested Era factory mapping each expansion to its covering range class at compile time.

SkelSequences.Era

The typed era factories: one method per expansion, each returning the concrete range class covering it — the compile-time twin of ForVersion.

SkelSequencesLegionPlus

The SKS1 payload: the sequence set that moved out of the model.

Skeleton

A shared model skeleton (.skel, Legion 7.3+), abstract over the client version. Construct a concrete version with Skeleton.for_version(expansion); the per-version Skeleton* classes are subclasses. See https://wowdev.wiki/M2/.skel.

Skeleton.Era

The typed era factories: one method per expansion, each returning the concrete range class covering it — the compile-time twin of ForVersion.

SkeletonLegionPlus

A shared model skeleton (.skel, Legion 7.3+): bones, attachments and sequences for skel-based models, shareable between models via the parent link. See https://wowdev.wiki/M2/.skel.

Structs

SkelParentData.Data

A blittable value twin of the NATIVE layout (size 16): read or write whole record buffers through Vector<T>.AsSpan<Data>() / FixedArray<T>.AsSpan<Data>() — one interop crossing for the buffer, where the live-view indexer pays per element. Field offsets are the native ABI's, asserted in the shim.