|
wowlib 0.0.0
Read & write World of Warcraft client files — a C++26 core
|
The M2 entity (namespace wowlib::formats::m2): a whole model with its satellite files baked in, versioned on the client it is laid out for. More...
#include <array>#include <cstring>#include <format>#include <optional>#include <ranges>#include <span>#include <string>#include <string_view>#include <vector>#include <wowlib/core/client_version.hpp>#include <wowlib/core/error.hpp>#include <wowlib/core/file_key.hpp>#include <wowlib/core/lang.hpp>#include <wowlib/formats/common/file_entity.hpp>#include <wowlib/formats/common/flags.hpp>#include <wowlib/formats/common/version_slot.hpp>#include <wowlib/formats/m2/bone/bone.hpp>#include <wowlib/formats/m2/offset_block.hpp>#include <wowlib/formats/m2/chunked/chunked.hpp>#include <wowlib/formats/m2/root/root.hpp>#include <wowlib/formats/m2/satellites.hpp>#include <wowlib/formats/m2/skeleton.hpp>#include <wowlib/formats/m2/skin/skin.hpp>#include <wowlib/fs/filesystem.hpp>Go to the source code of this file.
Classes | |
| struct | wowlib::formats::m2::M2Base |
| The version-agnostic base of every M2<V> (welded as "M2"). More... | |
| struct | wowlib::formats::m2::detail::AssemblySkins< V > |
| WotLK+ assembly members: the external .skin LOD views baked in. More... | |
| struct | wowlib::formats::m2::detail::AssemblySkins< V > |
| struct | wowlib::formats::m2::detail::AssemblyLegion< V > |
| legion+ assembly members: the chunk stream and the satellites it references. More... | |
| struct | wowlib::formats::m2::detail::AssemblyLegion< V > |
| struct | wowlib::formats::m2::detail::M2< V > |
| A whole M2 model for one client version: the MD20 body plus every baked-in satellite. More... | |
| struct | wowlib::formats::m2::BoneFile |
| One .bone file: which bones get facial-pose offset matrices, and the matrices. More... | |
Namespaces | |
| namespace | wowlib |
| namespace | wowlib::formats |
| namespace | wowlib::formats::m2 |
| namespace | wowlib::formats::m2::detail |
| A shared model skeleton (.skel, 7.3+): the bones, attachments and sequences a skel-based model moved out of its MD20 image, plus the satellite ids. | |
Typedefs | |
| template<ClientVersion V> | |
| using | wowlib::formats::m2::M2 = detail::M2<canonicalVersion(V, M2AssemblyPivots, M2Versions)> |
| A whole model — the canonicalizing face of detail::M2: every client version maps to its range's first grid version (M2AssemblyPivots), so one instantiation serves e.g. | |
| template<ClientVersion V> | |
| using | wowlib::formats::m2::Skin |
| An external LOD view — the canonicalizing face of detail::Skin: every WotLK+ version maps to its range's first grid version (M2SkinPivots: only Cata's shadow batches split the era, so two instantiations cover all nine releases). | |
Enumerations | |
| enum class | wowlib::formats::m2::GlobalFlags |
| M2Root::globalFlags bits. More... | |
Functions | |
| template<typename Profile, typename Root> | |
| void | wowlib::formats::m2::detail::validateProfileAgainstRoot (const Profile &profile, const Root &root, ValidationReport &report) |
| Check one skin profile's references INTO the model body — the half of a skin's contracts that needs both files: the local->global vertex lookup and the lookup-table slices every render batch and submesh addresses. | |
Variables | |
| constexpr std::uint32_t | wowlib::formats::m2::Md20Magic |
| The MD20 leading magic, as memcpy'd from disk. | |
| constexpr std::uint32_t | wowlib::formats::m2::SkinMagic |
| The .skin leading magic, as memcpy'd from disk. | |
The M2 entity (namespace wowlib::formats::m2): a whole model with its satellite files baked in, versioned on the client it is laid out for.
The assembly unifies the MD20 body (M2Root) with the external .skin LOD views and re-splits low-priority sequence data back out to .anim files on write (driven by the sequence flags). Pre-WotLK everything is one file; Legion+ adds the chunked wrapper and .skel/.bone/.phys satellites (stage 3).
Definition in file m2.hpp.