9#include <welder/vocabulary.hpp>
23 =welder::weld_as(
"M2Attachment"),
26 One attachment point. Abstract over the client version; construct a concrete
27 version with M2Attachment.ForVersion / for_version.)")
39 =welder::weld_as(
"M2Event"),
42 One timed event. Abstract over the client version; construct a concrete
43 version with M2Event.ForVersion / for_version.)")
55 =welder::weld_as(
"M2Light"),
58 One placed light. Abstract over the client version; construct a concrete
59 version with M2Light.ForVersion / for_version.)")
71 =welder::weld_as(
"M2Camera"),
74 One model camera. Abstract over the client version; construct a concrete
75 version with M2Camera.ForVersion / for_version.)")
84 template <ClientVersion V>
88 "An attachment point (weapons, effects, name plates), relative to a "
91 [[=welder::doc(
"Attachment slot (see wowdev's attachment id table).")]]
93 [[=welder::doc(
"The bone the point follows.")]]
94 std::uint16_t
bone = 0;
95 [[=welder::doc(
"Unknown; almost always 0 (vanilla's BogBeast.m2 carries "
97 std::uint16_t unknown = 0;
98 [[=welder::doc(
"Relative to the bone, typically its pivot.")]]
100 [[=welder::doc(
"Bool track: animate the attached model.")]]
106 template <ClientVersion V>
110 "A timed event ($DTH death thud, footsteps, sounds); every "
111 "enabled-track key fires.")
113 [[=welder::doc(
"Usually a '$xxx' four-char tag stored raw.")]]
114 std::uint32_t identifier = 0;
115 [[=welder::doc(
"Payload passed on fire (sound entry id, ...).")]]
116 std::uint32_t data = 0;
117 [[=welder::doc(
"The bone the event hangs off.")]]
119 [[=welder::doc(
"Relative to the bone.")]]
121 [[=welder::doc(
"Timestamp-only track: each key fires the event.")]]
127 template <ClientVersion V>
131 "A model light: type 0 directional (login screens only), 1 point.")
133 [[=welder::doc(
"0 directional, 1 point.")]]
135 [[=welder::doc(
"Bone to attach to, -1 for none.")]]
137 [[=welder::doc(
"Relative to the bone, if any.")]]
139 [[=welder::doc(
"RGB ambient color (no alpha).")]]
141 [[=welder::doc(
"Multiplies the ambient color; defaults to 1.0.")]]
143 [[=welder::doc(
"RGB diffuse color (no alpha).")]]
145 [[=welder::doc(
"Multiplies the diffuse color; defaults to 1.0.")]]
147 [[=welder::doc(
"Distance where attenuation begins.")]]
149 [[=welder::doc(
"Distance where the light fades out entirely.")]]
151 [[=welder::doc(
"Bool track: the light is enabled.")]]
154 bool operator==(
const M2Light&)
const =
default;
157 template <ClientVersion V>
163 =welder::doc(
"A camera, pre-Cata layout: a static diagonal FOV plus "
164 "position/target/roll spline tracks.")
165 ]] M2Camera<V> : M2CameraBase {
166 [[=welder::doc(
"0 portrait, 1 character info, -1 flyby.")]]
167 std::uint32_t type = 0;
168 [[=welder::doc(
"Diagonal field of view, radians.")]]
170 [[=welder::doc(
"Far clip distance.")]]
172 [[=welder::doc(
"Near clip distance.")]]
174 [[=welder::doc(
"Spline track moving the camera, one spline per segment.")]
177 [[=welder::doc(
"Pivot point the position splines are relative to.")]]
178 C3Vector positionBase{};
179 [[=welder::doc(
"Spline track moving the look-at target, one spline per "
182 [[=welder::doc(
"Pivot point the target splines are relative to.")]]
183 C3Vector targetPositionBase{};
184 [[=welder::doc(
"0 .. 2*pi.")]]
187 bool operator==(
const M2Camera&)
const =
default;
190 template <ClientVersion V>
195 "A camera (Cata+): the FOV becomes a spline track at the record tail.")
197 [[=welder::doc(
"0 portrait, 1 character info, -1 flyby.")]]
198 std::uint32_t type = 0;
199 [[=welder::doc(
"Far clip distance.")]]
201 [[=welder::doc(
"Near clip distance.")]]
203 [[=welder::doc(
"Spline track moving the camera, one spline per segment.")]
206 [[=welder::doc(
"Pivot point the position splines are relative to.")]]
208 [[=welder::doc(
"Spline track moving the look-at target, one spline per "
211 [[=welder::doc(
"Pivot point the target splines are relative to.")]]
213 [[=welder::doc(
"0 .. 2*pi.")]]
215 [[=welder::doc(
"Diagonal field of view, radians.")]]
218 bool operator==(
const M2Camera&)
const =
default;
225 template <ClientVersion V>
228 template <ClientVersion V>
231 template <ClientVersion V>
234 template <ClientVersion V>
Client version identity, the flavor axis that separates a client's CONTENT version from the engine ge...
Binding-language identities welder's core does not name.
#define WOWLIB_CS_FAMILY_SURFACE
The C# rod's family-surface opt-in, spellable in every build.
The M2 version vocabulary: the layout pivots record/entity partial specializations key on,...
The M2 animation vocabulary (namespace wowlib::formats::m2::root::record): the small fixed-size primi...