wowlib 0.0.0
Read & write World of Warcraft client files — a C++26 core
Loading...
Searching...
No Matches
skyscene.hpp
Go to the documentation of this file.
1#pragma once
2
8
9#include <cstdint>
10
11#include <welder/vocabulary.hpp>
12
14
16 struct [[
17 =welder::weld,
18 =welder::doc("One sky scene (an MSSN record, Shadowlands+), tying a "
19 "SkySceneID to its condition and object ranges.")
20 ]] SkyScene {
21 [[=welder::doc("Foreign key into SkySceneXPlayerCondition (SkySceneID).")]]
22 std::uint32_t skySceneId = 0;
23
24 [[=welder::doc(
25 "Unknown; possibly the SkySceneXPlayerCondition record count.")]]
26 std::uint32_t unk1 = 0;
27
28 [[=welder::doc("First condition record in MSSC.")]]
29 std::int16_t conditionIndex = 0;
30
31 [[=welder::doc("Condition record count.")]]
32 std::int16_t conditionCount = 0;
33
34 [[=welder::doc("First object record in MSSO.")]]
35 std::uint16_t objectIndex = 0;
36
37 [[=welder::doc("Object record count.")]]
38 std::int16_t objectCount = 0;
39
40 [[=welder::doc("Unknown.")]]
41 std::uint32_t unk4 = 0;
42
43 [[=welder::doc("Unknown.")]]
44 std::uint32_t unk5 = 0;
45
46 [[=welder::doc("Unknown.")]]
47 std::uint32_t unk6 = 0;
48
49 [[=welder::doc("Unknown.")]]
50 std::uint32_t unk7 = 0;
51 };
53 static_assert(sizeof(SkyScene) == 32);
55 struct [[
56 =welder::weld,
57 =welder::doc("One sky-scene condition (an MSSC record, Shadowlands+).")
59 [[=welder::doc("Unknown.")]]
60 std::uint32_t unk0 = 0;
61
62 [[=welder::doc("Unknown.")]]
63 std::uint32_t unk1 = 0;
64
65 [[=welder::doc(
66 "What condition_value keys into: 1 AreaTable (a parent of the "
67 "player's area), 2 LightParams, 3 LightSkybox (the current "
68 "skybox), 5 ZoneLight.")]]
69 std::uint32_t conditionType = 0;
70
71 [[=welder::doc("Unknown.")]]
72 std::uint32_t unk3 = 0;
73
74 [[=welder::doc("Unknown.")]]
75 std::uint32_t unk4 = 0;
76
77 [[=welder::doc("Unknown.")]]
78 std::uint32_t unk5 = 0;
79
80 [[=welder::doc("The db2 key condition_type selects.")]]
81 std::uint32_t conditionValue = 0;
82 };
84 static_assert(sizeof(SkySceneCondition) == 28);
85
86 struct [[
87 =welder::weld,
88 =welder::doc(
89 "One sky-scene object (an MSSO record, Shadowlands+): a placed "
90 "distant M2.")
92 [[=welder::doc("Unknown.")]]
93 std::uint32_t unk0 = 0;
94
95 [[=welder::doc("Flags; 0x1 means the object has an MSSF params record.")]]
96 std::uint32_t flags = 0;
97
98 [[=welder::doc("The model FileDataID.")]]
99 std::uint32_t fdid = 0;
100
101 [[=welder::doc("Translation.")]]
103
104 [[=welder::doc("Rotation as Euler angles, radians.")]]
105 C3Vector rotation{};
106
107 [[=welder::doc("Uniform scale.")]]
108 float scale = 1;
110 [[=welder::doc("Index into MSSF when flags has 0x1.")]]
111 std::uint32_t paramsIndex = 0;
113 [[=welder::doc("Unknown.")]]
114 std::uint32_t unk11 = 0;
115 };
116
117 static_assert(sizeof(SkySceneObject) == 48);
119 struct [[
120 =welder::weld,
121 =welder::doc(
122 "One sky-scene object params record (an MSSF record; documented "
123 "as Dragonflight+ but observed in 9.2.7 files).")
125 [[=welder::doc("Unknown.")]]
126 float unk0 = 0;
127
128 [[=welder::doc("Unknown.")]]
129 float unk1 = 0;
130 };
131
132 static_assert(sizeof(SkySceneObjectParams) == 8);
133
134 struct [[
135 =welder::weld,
136 =welder::doc(
137 "One scene-living (world) definition (an MSLD record, The War "
138 "Within+): a time-windowed scene schedule.")
139 ]] SceneLivingDef {
140 [[=welder::doc("Unknown.")]]
141 std::uint32_t unk0 = 0;
142
143 [[=welder::doc("Unknown.")]]
144 std::uint32_t unk1 = 0;
145
146 [[=welder::doc("Unknown.")]]
147 std::uint32_t unk2 = 0;
148
149 [[=welder::doc("Unknown.")]]
150 std::uint32_t unk3 = 0;
151
152 [[=welder::doc("Window start (first pair value).")]]
153 std::uint32_t timeStart0 = 0;
154
155 [[=welder::doc("Window start (second pair value).")]]
156 std::uint32_t timeStart1 = 0;
157
158 [[=welder::doc("Window end (first pair value).")]]
159 std::uint32_t timeEnd0 = 0;
160
161 [[=welder::doc("Window end (second pair value).")]]
162 std::uint32_t timeEnd1 = 0;
163 };
164
165 static_assert(sizeof(SceneLivingDef) == 32);
166}
WDL chunk binary structs (per-tile heightmaps, hole and ocean masks, low-resolution placements,...
Definition objects.hpp:17
A 3D float vector — the workhorse: positions, normals, rotations-as-Euler-degrees in placements.
Definition types.hpp:49
One scene-living (world) definition (an MSLD record, The War Within+): a time-windowed scene schedule...
Definition skyscene.hpp:118
std::uint32_t timeStart1
Window start (second pair value).
Definition skyscene.hpp:135
std::uint32_t timeStart0
Window start (first pair value).
Definition skyscene.hpp:132
std::uint32_t timeEnd0
Window end (first pair value).
Definition skyscene.hpp:138
std::uint32_t timeEnd1
Window end (second pair value).
Definition skyscene.hpp:141
One sky-scene condition (an MSSC record, Shadowlands+).
Definition skyscene.hpp:52
std::uint32_t conditionValue
The db2 key condition_type selects.
Definition skyscene.hpp:72
std::uint32_t conditionType
What condition_value keys into: 1 AreaTable (a parent of the player's area), 2 LightParams,...
Definition skyscene.hpp:60
One sky-scene object params record (an MSSF record; documented as Dragonflight+ but observed in 9....
Definition skyscene.hpp:107
One sky-scene object (an MSSO record, Shadowlands+): a placed distant M2.
Definition skyscene.hpp:78
C3Vector rotation
Rotation as Euler angles, radians.
Definition skyscene.hpp:92
std::uint32_t fdid
The model FileDataID.
Definition skyscene.hpp:86
std::uint32_t flags
Flags; 0x1 means the object has an MSSF params record.
Definition skyscene.hpp:83
std::uint32_t paramsIndex
Index into MSSF when flags has 0x1.
Definition skyscene.hpp:98
One sky scene (an MSSN record, Shadowlands+), tying a SkySceneID to its condition and object ranges.
Definition skyscene.hpp:17
std::uint16_t objectIndex
First object record in MSSO.
Definition skyscene.hpp:31
std::uint32_t skySceneId
Foreign key into SkySceneXPlayerCondition (SkySceneID).
Definition skyscene.hpp:19
std::int16_t conditionIndex
First condition record in MSSC.
Definition skyscene.hpp:25
std::int16_t objectCount
Object record count.
Definition skyscene.hpp:34
std::int16_t conditionCount
Condition record count.
Definition skyscene.hpp:28
std::uint32_t unk1
Unknown; possibly the SkySceneXPlayerCondition record count.
Definition skyscene.hpp:22
The binary-level math and color primitives shared across WoW file formats (wowdev....