Table of Contents

Namespace WoWLib.Formats.M2.Root.Record

Classes

FBlockC2Vector

The header-less 'fake' animation block: sequence-independent u16 timestamps plus keys (WotLK+ particle ramps).

FBlockC3Vector

The header-less 'fake' animation block: sequence-independent u16 timestamps plus keys (WotLK+ particle ramps).

FBlockFixed16

The header-less 'fake' animation block: sequence-independent u16 timestamps plus keys (WotLK+ particle ramps).

FBlockUInt16

The header-less 'fake' animation block: sequence-independent u16 timestamps plus keys (WotLK+ particle ramps).

M2Attachment

One attachment point. Abstract over the client version; construct a concrete version with M2Attachment.ForVersion / for_version.

M2Attachment.Era

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

M2AttachmentVanillaToTbc

An attachment point (weapons, effects, name plates), relative to a bone.

M2AttachmentWotlkPlus

An attachment point (weapons, effects, name plates), relative to a bone.

M2Bounds

A bounding volume: axis-aligned extent plus sphere radius.

M2Box

A model-space box: minimum and maximum corner vectors.

M2Camera

One model camera. Abstract over the client version; construct a concrete version with M2Camera.ForVersion / for_version.

M2Camera.Era

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

M2CameraCataPlus

A camera (Cata+): the FOV becomes a spline track at the record tail.

M2CameraVanillaToTbc

A camera, pre-Cata layout: a static diagonal FOV plus position/target/roll spline tracks.

M2CameraWotlk

A camera, pre-Cata layout: a static diagonal FOV plus position/target/roll spline tracks.

M2Color

One color + alpha animation pair. Abstract over the client version; construct a concrete version with M2Color.ForVersion / for_version.

M2Color.Era

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

M2ColorVanillaToTbc

A vertex color + alpha animation pair, referenced from skin batches by color index.

M2ColorWotlkPlus

A vertex color + alpha animation pair, referenced from skin batches by color index.

M2CompBone

One skeleton bone. Abstract over the client version; construct a concrete version with M2CompBone.ForVersion / for_version.

M2CompBone.Era

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

M2CompBoneTbc

A bone (TBC+): compressed-quaternion rotations plus the debug name CRC; the track era inside follows the entity version.

M2CompBoneVanilla

A bone, vanilla layout: raw-quaternion rotations, no name CRC.

M2CompBoneWotlkPlus

A bone (TBC+): compressed-quaternion rotations plus the debug name CRC; the track era inside follows the entity version.

M2CompQuat
M2Event

One timed event. Abstract over the client version; construct a concrete version with M2Event.ForVersion / for_version.

M2Event.Era

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

M2EventTrack

A timestamp-only event track (every key fires). Abstract over the client version; construct a concrete version with M2EventTrack.ForVersion / for_version.

M2EventTrack.Era

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

M2EventTrackVanillaToTbc

A timestamp-only event track, pre-WotLK layout (every key fires).

M2EventTrackWotlkPlus

A timestamp-only event track, WotLK+ layout (every key fires).

M2EventVanillaToTbc

A timed event ($DTH death thud, footsteps, sounds); every enabled-track key fires.

M2EventWotlkPlus

A timed event ($DTH death thud, footsteps, sounds); every enabled-track key fires.

M2Light

One placed light. Abstract over the client version; construct a concrete version with M2Light.ForVersion / for_version.

M2Light.Era

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

M2LightVanillaToTbc

A model light: type 0 directional (login screens only), 1 point.

M2LightWotlkPlus

A model light: type 0 directional (login screens only), 1 point.

M2Loop

A global-loop entry: the timestamp a global sequence wraps at.

M2Material

An M2 material: render flags (see MaterialFlags) and the blending mode (see M2/Rendering M2BLEND).

M2PartTrackFixed16

A partial track: normalized fixed16 times plus values (Legion+ EXP2 alpha cutoffs).

M2Particle

One particle emitter. Abstract over the client version; construct a concrete version with M2Particle.ForVersion / for_version.

M2Particle.Era

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

M2ParticleCataPlus

A particle emitter (Cata+, 492 bytes): multi-textured — packed texture ids, multiTexScale, trailing scroll parameters.

M2ParticleTbc

A particle emitter, TBC layout: byte-packed blending/emitter beside the ParticleColor.dbc index; ramps still static.

M2ParticleVanilla

A particle emitter, vanilla layout: wide u16 blending/emitter header, static color/scale/UV ramps, a single spin value.

M2ParticleWotlk

A particle emitter, WotLK-era layout (476 bytes): FBlock ramps, lifespan/emission variation, four spin fields.

M2Range

An inclusive u32 range: pre-WotLK track interpolation ranges, sequence replay bounds.

M2Ribbon

One ribbon emitter. Abstract over the client version; construct a concrete version with M2Ribbon.ForVersion / for_version.

M2Ribbon.Era

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

M2RibbonVanillaToTbc

A ribbon (trail) emitter; the priority/color-index tail exists WotLK+.

M2RibbonWotlkPlus

A ribbon (trail) emitter; the priority/color-index tail exists WotLK+.

M2Sequence

One animation sequence entry. Abstract over the client version; construct a concrete version with M2Sequence.ForVersion / for_version.

M2Sequence.Era

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

M2SequenceFallback

A pre-WotLK playable-animation fallback: the substitute animation id plus how to play it (0 normal, 1 backwards, 2 frame-by-frame, 3 freeze).

M2SequenceVanillaToTbc

An animation sequence, pre-WotLK layout: global start/end timestamps, one u32 blend time.

M2SequenceWodPlus

An animation sequence, WoD+ layout: an own duration, split blend-in/out times.

M2SequenceWotlkToMop

An animation sequence, WotLK through MoP layout: an own duration, one u32 blend time.

M2SplineKeyC3Vector

A spline keyframe: the value plus incoming/outgoing tangents (bezier/hermite camera tracks).

M2SplineKeyFloat

A spline keyframe: the value plus incoming/outgoing tangents (bezier/hermite camera tracks).

M2Texture

A texture definition: type 0 references the filename (TXID FileDataIDs replace it in 8.0+); non-zero types are runtime component slots (skin, hair, monster skins, ...).

M2TextureFlipbook

One texture flipbook animation. Abstract over the client version; construct a concrete version with M2TextureFlipbook.ForVersion / for_version.

M2TextureFlipbook.Era

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

M2TextureFlipbookVanillaToTbc

A pre-WotLK texture flipbook slot; never observed engaged in files.

M2TextureFlipbookWotlkPlus

A pre-WotLK texture flipbook slot; never observed engaged in files.

M2TextureTransform

One texture UV transform animation. Abstract over the client version; construct a concrete version with M2TextureTransform.ForVersion / for_version.

M2TextureTransform.Era

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

M2TextureTransformVanillaToTbc

A UV animation: translation/rotation/scaling keyframes for the texture matrix (rotation pivots at texture center 0.5, 0.5).

M2TextureTransformWotlkPlus

A UV animation: translation/rotation/scaling keyframes for the texture matrix (rotation pivots at texture center 0.5, 0.5).

M2TextureWeight

One texture weight (transparency) track. Abstract over the client version; construct a concrete version with M2TextureWeight.ForVersion / for_version.

M2TextureWeight.Era

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

M2TextureWeightVanillaToTbc

A global texture weight (transparency) track.

M2TextureWeightWotlkPlus

A global texture weight (transparency) track.

M2TrackC3Vector

An animation track family for one value type, abstract over the client version; the per-version classes are subclasses.

M2TrackC3Vector.Era

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

M2TrackC3VectorVanillaToTbc

An animation track, pre-WotLK layout: one global timeline with per-sequence interpolation ranges.

M2TrackC3VectorWotlkPlus

An animation track, WotLK+ layout: one timestamp/value array per sequence; an external sequence keeps its arrays in the .anim file.

M2TrackC4Quaternion

An animation track family for one value type, abstract over the client version; the per-version classes are subclasses.

M2TrackC4Quaternion.Era

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

M2TrackC4QuaternionVanillaToTbc

An animation track, pre-WotLK layout: one global timeline with per-sequence interpolation ranges.

M2TrackC4QuaternionWotlkPlus

An animation track, WotLK+ layout: one timestamp/value array per sequence; an external sequence keeps its arrays in the .anim file.

M2TrackCompQuat

An animation track family for one value type, abstract over the client version; the per-version classes are subclasses.

M2TrackCompQuat.Era

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

M2TrackCompQuatVanillaToTbc

An animation track, pre-WotLK layout: one global timeline with per-sequence interpolation ranges.

M2TrackCompQuatWotlkPlus

An animation track, WotLK+ layout: one timestamp/value array per sequence; an external sequence keeps its arrays in the .anim file.

M2TrackFixed16

An animation track family for one value type, abstract over the client version; the per-version classes are subclasses.

M2TrackFixed16.Era

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

M2TrackFixed16VanillaToTbc

An animation track, pre-WotLK layout: one global timeline with per-sequence interpolation ranges.

M2TrackFixed16WotlkPlus

An animation track, WotLK+ layout: one timestamp/value array per sequence; an external sequence keeps its arrays in the .anim file.

M2TrackFloat

An animation track family for one value type, abstract over the client version; the per-version classes are subclasses.

M2TrackFloat.Era

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

M2TrackFloatVanillaToTbc

An animation track, pre-WotLK layout: one global timeline with per-sequence interpolation ranges.

M2TrackFloatWotlkPlus

An animation track, WotLK+ layout: one timestamp/value array per sequence; an external sequence keeps its arrays in the .anim file.

M2TrackSplineC3Vector

An animation track family for one value type, abstract over the client version; the per-version classes are subclasses.

M2TrackSplineC3Vector.Era

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

M2TrackSplineC3VectorVanillaToTbc

An animation track, pre-WotLK layout: one global timeline with per-sequence interpolation ranges.

M2TrackSplineC3VectorWotlkPlus

An animation track, WotLK+ layout: one timestamp/value array per sequence; an external sequence keeps its arrays in the .anim file.

M2TrackSplineFloat

An animation track family for one value type, abstract over the client version; the per-version classes are subclasses.

M2TrackSplineFloat.Era

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

M2TrackSplineFloatVanillaToTbc

An animation track, pre-WotLK layout: one global timeline with per-sequence interpolation ranges.

M2TrackSplineFloatWotlkPlus

An animation track, WotLK+ layout: one timestamp/value array per sequence; an external sequence keeps its arrays in the .anim file.

M2TrackUInt16

An animation track family for one value type, abstract over the client version; the per-version classes are subclasses.

M2TrackUInt16.Era

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

M2TrackUInt16VanillaToTbc

An animation track, pre-WotLK layout: one global timeline with per-sequence interpolation ranges.

M2TrackUInt16WotlkPlus

An animation track, WotLK+ layout: one timestamp/value array per sequence; an external sequence keeps its arrays in the .anim file.

M2TrackUInt8

An animation track family for one value type, abstract over the client version; the per-version classes are subclasses.

M2TrackUInt8.Era

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

M2TrackUInt8VanillaToTbc

An animation track, pre-WotLK layout: one global timeline with per-sequence interpolation ranges.

M2TrackUInt8WotlkPlus

An animation track, WotLK+ layout: one timestamp/value array per sequence; an external sequence keeps its arrays in the .anim file.

M2Vec2Fp69

A 2D vector of 6.9 fixed-point values (raw u16 storage).

M2Vertex

An M2 vertex: position, 4-bone weights/indices, normal and two texture coordinate sets.

Structs

M2Bounds.Data

A blittable value twin of the NATIVE layout (size 28): 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.

M2Box.Data

A blittable value twin of the NATIVE layout (size 24): 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.

M2CompQuat.Data

A blittable value twin of the NATIVE layout (size 8): 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.

M2Loop.Data

A blittable value twin of the NATIVE layout (size 4): 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.

M2Material.Data

A blittable value twin of the NATIVE layout (size 4): 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.

M2Range.Data

A blittable value twin of the NATIVE layout (size 8): 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.

M2SequenceFallback.Data

A blittable value twin of the NATIVE layout (size 4): 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.

M2SequenceVanillaToTbc.Data

A blittable value twin of the NATIVE layout (size 68): 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.

M2SequenceWodPlus.Data

A blittable value twin of the NATIVE layout (size 64): 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.

M2SequenceWotlkToMop.Data

A blittable value twin of the NATIVE layout (size 64): 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.

M2SplineKeyC3Vector.Data

A blittable value twin of the NATIVE layout (size 36): 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.

M2SplineKeyFloat.Data

A blittable value twin of the NATIVE layout (size 12): 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.

M2Vec2Fp69.Data

A blittable value twin of the NATIVE layout (size 4): 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.

Interfaces

IAnimTimeline

Era-resolved construction for the M2TrackC3Vector 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.

Enums

BoneFlags

M2CompBone flags: parent-transform exemptions, billboarding and physics participation.

MaterialFlags

M2Material render flags.

SequenceFlags

M2Sequence flags — the 0x20/0x40/0x130 combination decides where the sequence's track data lives (.m2 vs .anim file).