Table of Contents

Namespace WoWLib.Formats.Common

Classes

C2IVector

A 2D integer vector.

C2Vector

A 2D float vector: texture coordinates, UV animation speeds.

C33Matrix

A 3x3 matrix as three column C3Vectors.

C34Matrix

A 3x4 matrix as four column C3Vectors.

C3IVector

A 3D integer vector.

C3Vector

A 3D float vector — the workhorse: positions, normals, rotations-as-Euler-degrees in placements.

C44Matrix

A 4x4 matrix as four column C4Vectors.

C4Plane

A plane as a normal and its signed distance from the origin.

C4Quaternion

A quaternion with the scalar part LAST on disk (x, y, z, w) — note the difference from math libraries that lead with w.

C4Vector

A 4D float vector.

CAaBox

An axis-aligned bounding box: minimum and maximum corners.

CAaSphere

An axis-aligned sphere: position and radius.

CArgb

A color stored as r, g, b, a bytes.

CImVector

A color stored as b, g, r, a bytes — the client's immediate-mode vertex color layout (WMO MOCV, doodad colors).

CRange

A float range: minimum and maximum.

Fixed16

A signed 16-bit fixed-point value with an implicit 0x7FFF scale.

SmDoodadDef

An M2 (doodad) placement (the 36-byte MDDF record of ADT, reused by the WDL MLDD low-resolution set): which model, where, and at what scale.

SmMapObjDef

A WMO placement (the 64-byte MODF record of WDT, WDL and ADT): which object, where, and how it is instanced.

Structs

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

Enums

DoodadDefFlags

M2 placement flag bits (SMDoodadDef.flags).

MapObjDefFlags

WMO placement flag bits (SMMapObjDef.flags).