|
wowlib 0.0.0
Read & write World of Warcraft client files — a C++26 core
|
The MOGP container payload for one client version. More...
#include <wowlib/formats/wmo/group/group.hpp>
Public Member Functions | |
| std::size_t | texcoordSetCount () const |
| std::vector< C2Vector > * | texcoordSet (std::size_t set) |
| Result< void > | setTexcoordSet (std::size_t set, std::vector< C2Vector > coords) |
| Result< void > | appendTexcoordSet (std::vector< C2Vector > coords) |
| void | clearTexcoordSets () |
| std::size_t | vertexColorLayerCount () const |
| std::vector< CImVector > * | vertexColorLayer (std::size_t layer) |
| Result< void > | setVertexColorLayer (std::size_t layer, std::vector< CImVector > colors) |
| Result< void > | appendVertexColorLayer (std::vector< CImVector > colors) |
| void | clearVertexColorLayers () |
| std::size_t | activeIndexCount () const |
| The number of triangle vertex indices the group's batches and BSP reference: MOVX (the large-mesh replacement) when engaged, MOVI otherwise. | |
| void | validateExtra (ValidationReport &report) const |
| Validation hook (see detail::validateEntity): the group contracts the annotations cannot express — render-batch and BSP index ranges, light-set ranges, header-flag/chunk-presence coherence and the MLIQ grid arithmetic. | |
| Public Member Functions inherited from wowlib::formats::ChunkedFile< WMOGroupBody< V > > | |
| Result< void > | read (std::span< const std::byte > data) |
| Deserialize file bytes into this entity, replacing its contents. | |
| Result< FileBuffer > | write () const |
| Serialize this entity. | |
| ValidationReport | validate () const |
| Result< void > | ensureValid () const |
| Validate and raise on the first error instead of returning a report — the assert-style face of validate(). | |
| bool | operator== (const ChunkedFile &) const=default |
| Public Member Functions inherited from wowlib::formats::ChunkExtras | |
| bool | operator== (const ChunkExtras &) const =default |
Public Attributes | |
| SMOGroupHeader< V > | header {} |
| std::vector< SMOPoly > | polys |
| std::vector< std::uint16_t > | indices |
| std::vector< C3Vector > | vertices |
| std::vector< C3Vector > | normals |
| Repeated< std::vector< C2Vector >, 4 > | texcoords |
| std::vector< SMOBatch< V > > | batches |
| std::vector< std::uint16_t > | lightRefs |
| std::vector< std::uint16_t > | doodadRefs |
| std::vector< CAaBspNode > | bspNodes |
| std::vector< std::uint16_t > | bspFaceIndices |
| Repeated< std::vector< CImVector >, 2 > | vertexColors |
| MLIQData | liquid |
| std::vector< std::uint16_t > | transBatchIndices |
| Public Attributes inherited from wowlib::formats::ChunkExtras | |
| std::vector< JournalEntry > | journal |
| std::vector< UnknownChunk > | unknown |
| std::vector< std::byte > | trailing |
Static Public Attributes | |
| static constexpr ClientVersion | Version = V |
| static constexpr std::array | ChunkOrder |
| The canonical chunk-stream order the serializer emits a fresh entity in — decoupled from the by-trait flatten order of the version bases. | |
The MOGP container payload for one client version.
MOGP wraps the geometry that makes up one WMO group: the group header followed by the triangle/vertex/normal arrays, texture coordinates, render batches, the collision BSP tree, liquid grid and — on later clients — the group-local light and volume reference chunks. The always-present chunks are own members (canonical order); version-gated chunks are inherited from the detail:: trait bases active for V.
| V | the client version this layout targets. |
|
inline |
|
inlinenodiscard |
|
inlinenodiscard |
|
inline |
|
inline |
|
inlinenodiscard |
|
inlinenodiscard |
|
inlinenodiscard |
|
inline |
|
inline |
Validation hook (see detail::validateEntity): the group contracts the annotations cannot express — render-batch and BSP index ranges, light-set ranges, header-flag/chunk-presence coherence and the MLIQ grid arithmetic.
Cross-entity contracts (references into the root) are the assembly's validate().
| report | the report findings land in. |
|
inlinenodiscard |
|
inline |
| std::vector<SMOBatch<V> > wowlib::formats::wmo::group::detail::WMOGroupBody< V >::batches |
| std::vector<std::uint16_t> wowlib::formats::wmo::group::detail::WMOGroupBody< V >::bspFaceIndices |
| std::vector<CAaBspNode> wowlib::formats::wmo::group::detail::WMOGroupBody< V >::bspNodes |
|
staticconstexpr |
The canonical chunk-stream order the serializer emits a fresh entity in — decoupled from the by-trait flatten order of the version bases.
Lists every chunk member exactly once (checked at compile time by writeOrder). The header (MOGP prelude) is written ahead of the stream, so it is not listed.
v14-alpha-only subchunks (MOLM/MOLD, MOIN, lightmap MOLV, MPB*) predate the supported range; anything else unmodeled round-trips via ChunkExtras.
| std::vector<std::uint16_t> wowlib::formats::wmo::group::detail::WMOGroupBody< V >::doodadRefs |
| SMOGroupHeader<V> wowlib::formats::wmo::group::detail::WMOGroupBody< V >::header {} |
| std::vector<std::uint16_t> wowlib::formats::wmo::group::detail::WMOGroupBody< V >::indices |
| std::vector<std::uint16_t> wowlib::formats::wmo::group::detail::WMOGroupBody< V >::lightRefs |
| MLIQData wowlib::formats::wmo::group::detail::WMOGroupBody< V >::liquid |
| std::vector<C3Vector> wowlib::formats::wmo::group::detail::WMOGroupBody< V >::normals |
| std::vector<SMOPoly> wowlib::formats::wmo::group::detail::WMOGroupBody< V >::polys |
| Repeated<std::vector<C2Vector>, 4> wowlib::formats::wmo::group::detail::WMOGroupBody< V >::texcoords |
| std::vector<std::uint16_t> wowlib::formats::wmo::group::detail::WMOGroupBody< V >::transBatchIndices |
|
staticconstexpr |
| Repeated<std::vector<CImVector>, 2> wowlib::formats::wmo::group::detail::WMOGroupBody< V >::vertexColors |
| std::vector<C3Vector> wowlib::formats::wmo::group::detail::WMOGroupBody< V >::vertices |