Table of Contents

Namespace WoWLib.Formats.WDL.Chunks

Classes

LodDoodadFade

A fade-distance range for one low-resolution M2 placement (an MLDF record, BfA): undocumented on wowdev; layout established by surveying every 8.3.7 WDL carrying the chunk (33 files) — always exactly one 8-byte record per MLDD entry, holding a pair of ascending distances drawn from clean round values ((500, 3500), (3500, 4000), (5000, 5050), (10000, 10050)).

LodExtent

Visibility extents for one low-resolution placement (an MLDX/MLMX record, Legion+): the transformed model's bounding box and a radius, in server coordinates. Same count and order as the placement list it accompanies.

LodMapObjDef

A low-resolution WMO placement (an MLMD record, Legion+): an SMMapObjDef without the extents — those live in the parallel MLMX record. name_id is always a FileDataID here (the WDL has no name table).

SceneLivingDef

One scene-living (world) definition (an MSLD record, The War Within+): a time-windowed scene schedule.

SkyScene

One sky scene (an MSSN record, Shadowlands+), tying a SkySceneID to its condition and object ranges.

SkySceneCondition

One sky-scene condition (an MSSC record, Shadowlands+).

SkySceneObject

One sky-scene object (an MSSO record, Shadowlands+): a placed distant M2.

SkySceneObjectParams

One sky-scene object params record (an MSSF record; documented as Dragonflight+ but observed in 9.2.7 files).

TileHeights

One tile's low-resolution heightmap (a MARE payload): a 17x17 grid of int16 heights with a 16x16 grid of midpoints, on the same scale as the full-resolution ADT heights. The background mountain silhouettes are drawn from these.

TileHoles

One tile's hole mask (a MAHO payload, TBC+): 16 row bitmasks, one per chunk row (y), one bit per chunk column (x) — a set bit is a hole. Blizzard sets a bit when all 16 holes of the ADT chunk are set; an all-zero mask is always written anyway.

TileOcean

One tile's ocean mask (a MAOE payload, Legion+): a 32-byte mask selecting the ocean alpha texture — 0xFF bytes mean water everywhere, 0x00 none. Emitted before the tile's hole mask.

Structs

LodDoodadFade.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.

LodExtent.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.

LodMapObjDef.Data

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

SceneLivingDef.Data

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

SkyScene.Data

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

SkySceneCondition.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.

SkySceneObject.Data

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

SkySceneObjectParams.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.

TileHeights.Data

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

TileHoles.Data

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

TileOcean.Data

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