Namespace WoWLib.Formats.WMO.Group.Chunks
Classes
- CAaBspNode
One MOBN BSP node for collision: a split plane or a leaf referencing faces through MOBR.
- LightSet
One light-set range (8.1+): a (first, count) window into the group's spot lights (MLSS -> MOLS), point lights (MLSP -> MOLP) or point-light animations (MLSK -> MOP2).
- MliqData
Structured MLIQ liquid data: a vertex grid and a tile-flag grid with a base position and material id. The on-disk header is 30 bytes (the uint16 material id sits directly after a 12-byte vector, so the header is read field-by-field, not memcpy'd) followed by verts_dim.xverts_dim.y vertices and tiles_dim.xtiles_dim.y tile bytes.
- PointLight
One MOLP point light (Legion+).
- PointLightAnim
One MOP2 entry (8.1+): an animated point light with flicker and light-cookie texture data.
- Poly2
Per-triangle material info v2 (MPY2, 10.0+): the MOPY replacement with 16-bit fields for multiple-material support.
- RenderBatchOverride
One MORB entry (Cata+): a triangle-strip override of the matching MOBA batch's start and count. Same count as MOBA; ignored unless the client renders strips.
- ShadowBatch
One MOBS shadow batch (Cata+): the shadow-pass counterpart of a MOBA render batch.
- SmoPoly
Per-triangle material info (MOPY).
- SmolTile
One MLIQ tile flag byte: bits 0-5 the legacy liquid type, bit 6 fishable, bit 7 shared with an adjacent group.
- SmolVert
One MLIQ liquid vertex (8 bytes). The byte layout is fixed but its interpretation depends on the group's liquid type: water/ocean read the named flow fields; magma/slime reinterpret the first four bytes as two int16 texture coordinates (s, t) — use as_magma()/set_magma() for that reading. Both are 8 bytes, so round-trip is layout-agnostic — pick the reading from the group's liquid type.
- SmomVert
The magma/slime reading of an MLIQ vertex (8 bytes): two int16 texture coordinates sharing the layout with the water reading (SMOLVert). Obtain one with SMOLVert.as_magma(); which reading is correct is set by the group's liquid type, not stored per vertex.
- WMOBatch
A MOBA render batch, abstract over the client version. Construct a concrete version with WMOBatch.for_version(expansion).
- WMOBatch.Era
The typed era factories: one method per expansion, each returning the concrete range class covering it — the compile-time twin of ForVersion.
- WMOBatchLegionPlus
One MOBA render batch: an index range sharing one material (Legion+ layout with the 16-bit material id).
- WMOBatchVanillaToWod
One MOBA render batch: an index range sharing one material, with its low-resolution culling box.
- WMOGroupHeader
A MOGP group header, abstract over the client version. Construct a concrete version with WMOGroupHeader.for_version(expansion).
- WMOGroupHeader.Era
The typed era factories: one method per expansion, each returning the concrete range class covering it — the compile-time twin of ForVersion.
- WMOGroupHeaderShadowlandsPlus
The MOGP group header: names, flags, bounds, portal and batch ranges, fog, liquid and split-group links (9.2+).
- WMOGroupHeaderVanillaToBfa
The MOGP group header: names, flags, bounds, portal and batch ranges, fog and liquid.
Structs
- CAaBspNode.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.
- LightSet.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.
- PointLight.Data
A blittable value twin of the NATIVE layout (size 44): 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.
- PointLightAnim.Data
A blittable value twin of the NATIVE layout (size 96): 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.
- Poly2.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.
- RenderBatchOverride.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.
- ShadowBatch.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.
- SmoPoly.Data
A blittable value twin of the NATIVE layout (size 2): 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.
- SmolTile.Data
A blittable value twin of the NATIVE layout (size 1): 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.
- SmolVert.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.
- SmomVert.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.
- WMOBatchLegionPlus.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.
- WMOBatchVanillaToWod.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.
- WMOGroupHeaderShadowlandsPlus.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.
- WMOGroupHeaderVanillaToBfa.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.
Enums
- GroupFlags
Group flag bits (MOGP and MOGI flags).
- GroupFlags2
Extended group flag bits (MOGP.flags2 and MGI2).
- PolyFlags
Per-triangle flag bits (MOPY and MPY2).