wowlib 0.0.0
Read & write World of Warcraft client files — a C++26 core
Loading...
Searching...
No Matches
wowlib::formats::wmo::group::chunks Namespace Reference

WMO group-file chunk binary structs (the MOGP header, render batches, BSP nodes, group lights) and their flag enums. More...

Namespaces

namespace  detail
 One render batch, 24 bytes.

Classes

struct  CAaBspNode
 One MOBN BSP node for collision: a split plane or a leaf referencing faces through MOBR. More...
struct  LightSet
struct  MLIQData
struct  PointLight
 One MOLP point light (Legion+). More...
struct  PointLightAnim
 One MOP2 entry (8.1+): an animated point light with flicker and light-cookie texture data. More...
struct  Poly2
struct  RenderBatchOverride
struct  ShadowBatch
 One MOBS shadow batch (Cata+): the shadow-pass counterpart of a MOBA render batch. More...
struct  SMOLTile
struct  SMOLVert
struct  SMOMVert
struct  SMOPoly
 Per-triangle material info (MOPY). More...
struct  WMOBatchBase
 The version-agnostic base of every SMOBatch<V>, welded as "WMOBatch". More...
struct  WMOGroupHeaderBase
 The version-agnostic base of every SMOGroupHeader<V>, welded as "WMOGroupHeader". More...

Typedefs

template<ClientVersion V>
using SMOBatch = detail::SMOBatch<canonicalVersion(V, WmoBatchPivots, WmoVersions)>
 A MOBA render batch — the canonicalizing face of detail::SMOBatch (WmoBatchPivots: the culling box gives way to the large material id at Legion), so two instantiations cover all eleven releases.
template<ClientVersion V>
using SMOGroupHeader = detail::SMOGroupHeader<canonicalVersion(V, WmoGroupHeaderPivots, WmoVersions)>
 The MOGP header — the canonicalizing face of detail::SMOGroupHeader (WmoGroupHeaderPivots: the split-group indices arrive at 9.2), so two instantiations cover all eleven releases.

Enumerations

enum class  PolyFlags : std::uint8_t {
  Transition = 0x1 , NoCamCollide = 0x2 , Detail = 0x4 , Collision = 0x8 ,
  Hint = 0x10 , Render = 0x20 , CullObjects = 0x40 , CollideHit = 0x80
}
 Per-triangle flag bits (MOPY and MPY2). More...
enum class  GroupFlags : std::uint32_t {
  HasBsp = 0x1 , HasLightMap , HasVertexColors = 0x4 , Exterior = 0x8 ,
  ExteriorLit = 0x40 , Unreachable = 0x80 , ShowExteriorSky , HasLights = 0x200 ,
  Lod , HasDoodads = 0x800 , HasLiquid , Interior = 0x2000 ,
  QueryMountAllowed = 0x8000 , AlwaysDraw , HasTriangleStrips = 0x20000 , ShowSkybox = 0x40000 ,
  Ocean , MountAllowed = 0x200000 , HasTwoMocv , HasTwoMotv ,
  Antiportal , ExteriorCull , HasThreeMotv = 0x40000000
}
 Group flag bits (MOGP and MOGI flags). More...
enum class  GroupFlags2 : std::uint32_t { CanCutTerrain = 0x1 , IsSplitGroupParent = 0x40 , IsSplitGroupChild = 0x80 , AttachmentMesh = 0x100 }
 Extended group flag bits (MOGP.flags2 and MGI2). More...

Detailed Description

WMO group-file chunk binary structs (the MOGP header, render batches, BSP nodes, group lights) and their flag enums.

Typedef Documentation

◆ SMOBatch

A MOBA render batch — the canonicalizing face of detail::SMOBatch (WmoBatchPivots: the culling box gives way to the large material id at Legion), so two instantiations cover all eleven releases.

Definition at line 143 of file geometry.hpp.

◆ SMOGroupHeader

The MOGP header — the canonicalizing face of detail::SMOGroupHeader (WmoGroupHeaderPivots: the split-group indices arrive at 9.2), so two instantiations cover all eleven releases.

Definition at line 201 of file header.hpp.

Enumeration Type Documentation

◆ GroupFlags

enum class wowlib::formats::wmo::group::chunks::GroupFlags : std::uint32_t
strong

Group flag bits (MOGP and MOGI flags).

Enumerator
HasBsp 

Has a collision BSP tree (MOBN/MOBR).

HasLightMap 

Has a light map (v14 legacy; unused since vanilla).

HasVertexColors 

Has vertex colors (MOCV).

Exterior 

Outdoor group (SMOGroup::EXTERIOR).

ExteriorLit 

Use exterior lighting; no local diffuse.

Unreachable 

Unreachable (SMOGroup::UNREACHABLE).

ShowExteriorSky 

Show the exterior sky inside this interior group.

HasLights 

Has light references (MOLR).

Lod 

Legion+: an LOD group.

Pre-Cata: marked the unused MPB* chunks.

HasDoodads 

Has doodad references (MODR).

HasLiquid 

Has liquid (MLIQ), or an implicitly full volume.

Interior 

Indoor group (SMOGroup::INTERIOR).

QueryMountAllowed 

Pre-WotLK: whether mount queries are allowed.

AlwaysDraw 

Always draw (clears exterior after group creation).

HasTriangleStrips 

Has triangle-strip data (MORI/MORB).

ShowSkybox 

Show the skybox; unset automatically when MOSB is absent.

Ocean 

The liquid is ocean, not water (LiquidType handling).

MountAllowed 

Mounting is allowed in this group.

HasTwoMocv 

Has a second MOCV layer; only its alpha is used.

HasTwoMotv 

Has two MOTV texcoord sets (SMOGroup::TVERTS2).

Antiportal 

An antiportal occluder group (SMOGroup::ANTIPORTAL).

ExteriorCull 

Exterior culling (SMOGroup::EXTERIOR_CULL, Legion+).

HasThreeMotv 

Has three MOTV texcoord sets, e.g.

for shader 18.

Definition at line 22 of file header.hpp.

◆ GroupFlags2

enum class wowlib::formats::wmo::group::chunks::GroupFlags2 : std::uint32_t
strong

Extended group flag bits (MOGP.flags2 and MGI2).

Enumerator
CanCutTerrain 

Has terrain-cutting portal planes (MOPL, WoD+).

IsSplitGroupParent 

Parent of a split group (9.2+).

IsSplitGroupChild 

Child of a split group (9.2+).

AttachmentMesh 

An attachment mesh (9.2 - 11.0).

Definition at line 60 of file header.hpp.

◆ PolyFlags

enum class wowlib::formats::wmo::group::chunks::PolyFlags : std::uint8_t
strong

Per-triangle flag bits (MOPY and MPY2).

Enumerator
Transition 

A transition face, blending exterior and interior lighting.

NoCamCollide 

The camera does not collide with this face.

Detail 

A detail face.

Collision 

Collision-only (also turns off water ripples).

Hint 

A hint face.

Render 

A rendered face.

CullObjects 

Enables game-object culling against this face.

CollideHit 

Collides with projectiles/hit tests.

Definition at line 22 of file geometry.hpp.