12#include <welder/vocabulary.hpp>
20 "One WoD point light (MPLT); Legion clients stop reading these in "
23 [[=welder::doc(
"Unique light id within the WDT.")]]
26 [[=welder::doc(
"The ADT tile x coordinate.")]]
27 std::uint16_t
tileX = 0;
29 [[=welder::doc(
"The ADT tile y coordinate.")]]
30 std::uint16_t
tileY = 0;
32 [[=welder::doc(
"Light color.")]]
35 [[=welder::doc(
"Light position.")]]
39 "Intensity and related parameters; exact meaning undocumented.")]]
40 std::array<float, 3> unknown{};
47 =welder::doc(
"One Legion point light (MPL2).")
50 "Unique light id within the WDT; increment for each new light.")]]
53 [[=welder::doc(
"Light color (b, g, r, a); alpha 0 means fully opaque.")]]
56 [[=welder::doc(
"Light position.")]]
59 [[=welder::doc(
"Where the light's spread starts; usually 0.")]]
62 [[=welder::doc(
"How far the light spreads.")]]
65 [[=welder::doc(
"Light intensity.")]]
68 [[=welder::doc(
"Rotation; usually zero for point lights.")]]
71 [[=welder::doc(
"The ADT tile x coordinate.")]]
72 std::uint16_t
tileX = 0;
74 [[=welder::doc(
"The ADT tile y coordinate.")]]
75 std::uint16_t
tileY = 0;
77 [[=welder::doc(
"Index into MLTA, or -1 when unanimated.")]]
80 [[=welder::doc(
"Index into MTEX, or -1.")]]
89 "One Shadowlands point light (MPL3; replaces MPL2 in 9.0+ files).")
91 [[=welder::doc(
"Unique light id within the WDT.")]]
94 [[=welder::doc(
"Light color (b, g, r, a); alpha 0 means fully opaque.")]]
97 [[=welder::doc(
"Light position.")]]
100 [[=welder::doc(
"Where the light's spread starts.")]]
103 [[=welder::doc(
"How far the light spreads.")]]
106 [[=welder::doc(
"Light intensity.")]]
109 [[=welder::doc(
"Rotation; only used to orient light-cookie projection.")]]
112 [[=welder::doc(
"The ADT tile x coordinate.")]]
113 std::uint16_t
tileX = 0;
115 [[=welder::doc(
"The ADT tile y coordinate.")]]
116 std::uint16_t
tileY = 0;
118 [[=welder::doc(
"Index into MLTA, or -1 when unanimated.")]]
121 [[=welder::doc(
"Index into MTEX for the light-cookie texture, or -1.")]]
125 "Flags; 0x1 casts raytraced shadows (D3D12, shadow RT level 2+).")]]
126 std::uint16_t flags = 0;
129 "Scale as a raw IEEE half-float (0.5 is the default; 10.0 hides "
130 "player shadows).")]]
131 std::uint16_t scaleHalf = 0x3800;
138 =welder::doc(
"One Legion spot light (MSLT).")
140 [[=welder::doc(
"Unique light id within the WDT.")]]
141 std::uint32_t
id = 0;
143 [[=welder::doc(
"Light color (b, g, r, a); alpha 0 means fully opaque.")]]
146 [[=welder::doc(
"Light position.")]]
150 "Where the light's spread starts; must be <= attenuation_end.")]]
153 [[=welder::doc(
"How far the light spreads.")]]
156 [[=welder::doc(
"Light intensity.")]]
159 [[=welder::doc(
"Rotation, radians.")]]
162 [[=welder::doc(
"Spotlight cone radius.")]]
165 [[=welder::doc(
"Inner cone angle, radians.")]]
168 [[=welder::doc(
"Outer cone angle, radians.")]]
171 [[=welder::doc(
"The ADT tile x coordinate.")]]
172 std::uint16_t tileX = 0;
174 [[=welder::doc(
"The ADT tile y coordinate.")]]
175 std::uint16_t tileY = 0;
177 [[=welder::doc(
"Index into MLTA, or -1 when unanimated.")]]
178 std::int16_t mltaIndex = -1;
180 [[=welder::doc(
"Index into MTEX, or -1.")]]
181 std::int16_t textureIndex = -1;
189 "One light texture animation (MLTA), referenced by mlta_index.")
191 [[=welder::doc(
"Animation amplitude.")]]
194 [[=welder::doc(
"Animation frequency.")]]
197 [[=welder::doc(
"Curve function: 0 off, 1 sine, 2 noise, 3 noise step.")]]
198 std::int32_t function = 0;
The binary-level math and color primitives shared across WoW file formats (wowdev....