wowlib 0.0.0
Read & write World of Warcraft client files — a C++26 core
Loading...
Searching...
No Matches
boundaries.hpp File Reference

ADT version grids, layout pivots and the alpha-format context. More...

#include <array>
#include <cstdint>
#include <welder/vocabulary.hpp>
#include <wowlib/core/client_builds.hpp>
#include <wowlib/core/client_version.hpp>
#include <wowlib/formats/common/version_range.hpp>
Include dependency graph for boundaries.hpp:
This graph shows which files directly or indirectly include this file:

Go to the source code of this file.

Namespaces

namespace  wowlib
namespace  wowlib::formats
namespace  wowlib::formats::adt

Enumerations

enum class  wowlib::formats::adt::AlphaFormat : std::uint8_t { wowlib::formats::adt::Lowres4Bit = 0 , wowlib::formats::adt::Highres8Bit = 1 }

Variables

constexpr std::uint32_t wowlib::formats::adt::AdtVersion18 = 18
 The ADT format version every supported client writes (the MVER payload).
constexpr std::size_t wowlib::formats::adt::ChunksPerTile = 16 * 16
 The terrain chunks a tile is divided into: a 16x16 grid, indexed row-major (y * 16 + x) — the client addresses them positionally, so the count is fixed for every version.
constexpr ClientVersion wowlib::formats::adt::AdtTexFdids = builds::BfA_TidesOfVengeance_28294
 8.1.0.27826: MDID/MHID diffuse+height FileDataID tables arrive in _tex0 (MTEX still present this one build).
constexpr ClientVersion wowlib::formats::adt::AdtSplit = builds::Cata
 Cataclysm: ADTs split into root/_tex0/_obj0 (+_obj1); MCIN gone, MCLV / MCRD / MCRW / MAMP / MCMT arrive.
constexpr std::array wowlib::formats::adt::AdtVersions
 The versions ADT is instantiated (and welded) for: every targeted last-minor-of-major release, in release order.
constexpr std::array wowlib::formats::adt::MapChunkPivots {builds::WotLK, builds::Cata}
 MapChunk<V> content pivots — only boundaries that change what a chunk CURRENTLY carries: WotLK (MCCV vertex colors arrive) and Cata (MCLV baked lighting + MCMT materials arrive, and the legacy MCLQ liquid is finally gone).
constexpr std::array wowlib::formats::adt::AdtPivots {builds::TBC, builds::WotLK, builds::Cata, AdtTexFdids}
 ADT<V> assembly content pivots — only boundaries that change what the tile CURRENTLY carries: TBC (MFBO), WotLK (MH2O/MTXF/MCCV), Cata (split files, MAMP, obj1/lod), 8.1 (MDID/MHID FileDataID texture tables).

Detailed Description

ADT version grids, layout pivots and the alpha-format context.

ADT is ONE version-agnostic entity (ADT<V>, see adt.hpp): the split into physical files (root/_tex0/_obj0/_obj1/_lod, Cata+) is a serializer concern, not a class split. Almost every version difference is chunk PRESENCE, carried inline by the members' since()/until() annotations; the pivots below are the union of every boundary that changes what an ADT<V> (or MapChunk<V>) carries, used only to collapse the instantiation matrix to its real permutations.

Definition in file boundaries.hpp.