Namespace WoWLib.Formats.WMO.Root.Chunks
Classes
- AmbientBoxVolume
One MBVD entry (8.3+): a box-shaped ambient volume bounded by six planes. Only read when MAVG or MAVD is present.
- AmbientVolume
One ambient volume (MAVD, 8.3+) - a spherical region overriding the root ambient color - or a global ambient entry (MAVG), which shares the layout with position/start/end zeroed.
- FogExtra
One MFED entry (9.0+): fog extra data; same count as MFOG.
- GroupInfo2
One MGI2 entry (9.0+): group info v2. Same count as MOGI; when present it overrides the older LOD-selection logic.
- LightExtension
One MOLV entry (9.1+): a directional-gradient extension to a MOLT light. Multiple entries may extend the same light.
- LightExtension.Gradient
One directional gradient sample: a direction (usually axis-aligned) and its value.
- NewLight
One MNLD entry (9.0+): a Shadowlands dynamic light - point or spot - used for everything from torch fires to window-light projection.
- PortalExtra
One MOPE entry (11.1+): portal extra data; largely undeciphered.
- SmoDoodadDef
One MODD doodad placement: an M2 instance inside the WMO, quaternion-oriented in model space.
- SmoDoodadSet
One MODS doodad set: a named range of doodad placements. Set 0 ("Set_$DefaultGlobal") is additive and always shown; other sets are exclusive alternatives.
- SmoFog
One MFOG entry: a fog volume with regular and under-water settings.
- SmoFog.FogBand
One fog band: end distance, start scalar and color.
- SmoGroupInfo
One MOGI entry: per-group flags, bounds and name, mirrored from the group file's own header.
- SmoHeader
The MOHD root header: entity counts, ambient color, bounds and root-wide flags.
- SmoLight
One MOLT light. Not rendered by classic-era clients, but baked into vertex colors by the exporter.
- SmoMaterial
One MOMT material, 64 bytes. The layout is stable across v17; what changed in 8.1 is the meaning of the texture fields - MOTX byte offsets before (and in the fallback mode signalled by MOTX's presence), FileDataIDs after.
- SmoPortal
One MOPT portal: a polygon plane separating two groups.
- SmoPortalRef
One MOPR entry: a group's reference to a portal and the group on the other side.
- SmoVisibleBlock
One MOVB visible block: a vertex range in MOVV.
- UvAnimation
One MOUV entry (7.3+): texture-coordinate translation speeds for two of the material's texture layers. Same count as the materials; all-zero entries mean no animation.
Structs
- AmbientVolume.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.
- FogExtra.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.
- GroupInfo2.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.
- LightExtension.Gradient.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.
- NewLight.Data
A blittable value twin of the NATIVE layout (size 184): 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.
- PortalExtra.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.
- SmoDoodadDef.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.
- SmoDoodadSet.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.
- SmoFog.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.
- SmoFog.FogBand.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.
- SmoGroupInfo.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.
- SmoHeader.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.
- SmoLight.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.
- SmoMaterial.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.
- SmoPortal.Data
A blittable value twin of the NATIVE layout (size 20): 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.
- SmoPortalRef.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.
- SmoVisibleBlock.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.
Enums
- DoodadFlags
Doodad placement flag bits, packed into the high byte of SMODoodadDef.name_and_flags.
- HeaderFlags
Root header flag bits (SMOHeader.flags).
- LightType
The kind of a WMO light (SMOLight.type).
- MaterialFlags
Material flag bits (SMOMaterial.flags).