CommonLibSSE (powerof3)
TESWeather.h
Go to the documentation of this file.
1 #pragma once
2 
4 #include "RE/B/BSTArray.h"
5 #include "RE/B/BSTList.h"
6 #include "RE/C/Color.h"
7 #include "RE/F/FormTypes.h"
8 #include "RE/T/TESForm.h"
9 #include "RE/T/TESModel.h"
10 #include "RE/T/TESTexture1024.h"
11 
12 namespace RE
13 {
14  class BGSVolumetricLighting;
15 
16  class TESWeather : public TESForm
17  {
18  public:
19  inline static constexpr auto RTTI = RTTI_TESWeather;
20  inline static constexpr auto VTABLE = VTABLE_TESWeather;
21  inline static constexpr auto FORMTYPE = FormType::Weather;
22 
23  enum
24  {
25  kTotalLayers = 32
26  };
27 
28  enum class SoundType
29  {
30  kDefault = 0,
31  kPrecip = 1,
32  kWind = 2,
33  kThunder = 3
34  };
35 
36  enum class WeatherDataFlag
37  {
38  kNone = 0,
39  kPleasant = 1 << 0,
40  kCloudy = 1 << 1,
41  kRainy = 1 << 2,
42  kSnow = 1 << 3,
43  kPermAurora = 1 << 4,
44  kAuroraFollowsSun = 1 << 5
45  };
46 
47  struct ColorTimes
48  {
49  enum ColorTime : std::uint32_t
50  {
51  kSunrise = 0,
55 
56  kTotal
57  };
58  };
60 
61  struct ColorTypes
62  {
63  enum
64  {
65  kSkyUpper = 0,
82 
83  kTotal
84  };
85  };
86 
87  struct RecordFlags
88  {
89  enum RecordFlag : std::uint32_t
90  {
91  kDeleted = 1 << 5,
92  kIgnored = 1 << 12
93  };
94  };
95 
96  struct Data // DATA
97  {
98  public:
99  struct Color3
100  {
101  public:
102  // members
103  std::int8_t red; // 0
104  std::int8_t green; // 1
105  std::int8_t blue; // 2
106  };
107  static_assert(sizeof(Color3) == 0x3);
108 
109  // members
110  std::uint8_t windSpeed; // 00
111  std::int8_t unk01; // 01
112  std::int8_t unk02; // 02
113  std::int8_t transDelta; // 03
114  std::int8_t sunGlare; // 04
115  std::int8_t sunDamage; // 05
116  std::int8_t precipitationBeginFadeIn; // 06
117  std::int8_t precipitationEndFadeOut; // 07
118  std::int8_t thunderLightningBeginFadeIn; // 08
119  std::int8_t thunderLightningEndFadeOut; // 09
120  std::int8_t thunderLightningFrequency; // 0A
123  std::int8_t visualEffectBegin; // 0F
124  std::int8_t visualEffectEnd; // 10
125  std::int8_t windDirection; // 11
126  std::int8_t windDirectionRange; // 12
127  std::int8_t unk13; // 13
128  };
129  static_assert(sizeof(Data) == 0x14);
130 
131  struct FogData // FNAM
132  {
133  public:
134  // members
135  float dayNear; // 00
136  float dayFar; // 04
137  float nightNear; // 08
138  float nightFar; // 0C
139  float dayPower; // 10
140  float nightPower; // 14
141  float dayMax; // 18
142  float nightMax; // 1C
143  };
144  static_assert(sizeof(FogData) == 0x20);
145 
146  struct WeatherSound // SNAM
147  {
148  public:
149  // members
152  };
153  static_assert(sizeof(WeatherSound) == 0x8);
154 
155  struct WeatherSoundList : public BSSimpleList<WeatherSound*>
156  {};
157 
158  ~TESWeather() override; // 00
159 
160  // override (TESForm)
161  void InitializeData() override; // 04
162  void ClearData() override; // 05
163  bool Load(TESFile* a_mod) override; // 06
164  void InitItemImpl() override; // 13
165 
166  // members
168  std::int8_t cloudLayerSpeedY[kTotalLayers]; // 220 - RNAM
169  std::int8_t cloudLayerSpeedX[kTotalLayers]; // 240 - QNAM
170  Color cloudColorData[kTotalLayers][ColorTime::kTotal]; // 260 - PNAM
171  float cloudAlpha[kTotalLayers][ColorTime::kTotal]; // 460 - JNAM
172  std::uint32_t cloudLayerDisabledBits; // 660 - NAM1 - bitfield
173  Data data; // 664 - DATA
174  FogData fogData; // 678 - FNAM
175  Color colorData[ColorTypes::kTotal][ColorTime::kTotal]; // 698 - NAM0
178  std::uint32_t numCloudLayers; // 7D0 - LNAM
179  std::uint32_t pad7D4; // 7D4
180  TESImageSpace* imageSpaces[ColorTime::kTotal]; // 7D8 - IMSP
182  TESModel aurora; // 878
184  BGSVolumetricLighting* volumetricLighting[ColorTime::kTotal]; // 8A8 - HNAM
187  };
188  static_assert(sizeof(TESWeather) == 0x8D8);
189 }
Definition: BGSDirectionalAmbientLightingColors.h:8
Definition: BGSLensFlare.h:12
Definition: BGSReferenceEffect.h:9
Definition: BGSShaderParticleGeometryData.h:18
Definition: BGSVolumetricLighting.h:12
Definition: BSTList.h:10
Definition: BSTArray.h:378
Definition: TESFile.h:17
Definition: TESForm.h:36
Definition: TESImageSpace.h:10
Definition: TESModel.h:16
Definition: TESTexture1024.h:8
Definition: TESWeather.h:17
WeatherDataFlag
Definition: TESWeather.h:37
BGSDirectionalAmbientLightingColors directionalAmbientLightingColors[ColorTime::kTotal]
Definition: TESWeather.h:181
BGSShaderParticleGeometryData * precipitationData
Definition: TESWeather.h:185
~TESWeather() override
BGSReferenceEffect * referenceEffect
Definition: TESWeather.h:186
std::int8_t cloudLayerSpeedY[kTotalLayers]
Definition: TESWeather.h:168
void InitItemImpl() override
static constexpr auto FORMTYPE
Definition: TESWeather.h:21
bool Load(TESFile *a_mod) override
TESImageSpace * imageSpaces[ColorTime::kTotal]
Definition: TESWeather.h:180
std::uint32_t pad7D4
Definition: TESWeather.h:179
std::uint32_t numCloudLayers
Definition: TESWeather.h:178
std::int8_t cloudLayerSpeedX[kTotalLayers]
Definition: TESWeather.h:169
WeatherSoundList sounds
Definition: TESWeather.h:176
FogData fogData
Definition: TESWeather.h:174
void InitializeData() override
SoundType
Definition: TESWeather.h:29
static constexpr auto RTTI
Definition: TESWeather.h:19
Color colorData[ColorTypes::kTotal][ColorTime::kTotal]
Definition: TESWeather.h:175
BGSLensFlare * sunGlareLensFlare
Definition: TESWeather.h:183
TESModel aurora
Definition: TESWeather.h:182
Data data
Definition: TESWeather.h:173
static constexpr auto VTABLE
Definition: TESWeather.h:20
BSTArray< TESObjectSTAT * > skyStatics
Definition: TESWeather.h:177
@ kTotalLayers
Definition: TESWeather.h:25
void ClearData() override
float cloudAlpha[kTotalLayers][ColorTime::kTotal]
Definition: TESWeather.h:171
TESTexture1024 cloudTextures[kTotalLayers]
Definition: TESWeather.h:167
std::uint32_t cloudLayerDisabledBits
Definition: TESWeather.h:172
Color cloudColorData[kTotalLayers][ColorTime::kTotal]
Definition: TESWeather.h:170
BGSVolumetricLighting * volumetricLighting[ColorTime::kTotal]
Definition: TESWeather.h:184
Definition: AbsorbEffect.h:6
std::uint32_t FormID
Definition: BSCoreTypes.h:5
constexpr REL::ID RTTI_TESWeather(static_cast< std::uint64_t >(513983))
constexpr std::array< REL::ID, 1 > VTABLE_TESWeather
Definition: Offsets_VTABLE.h:12917
Definition: Color.h:8
Definition: TESWeather.h:48
ColorTime
Definition: TESWeather.h:50
@ kTotal
Definition: TESWeather.h:56
@ kDay
Definition: TESWeather.h:52
@ kSunrise
Definition: TESWeather.h:51
@ kNight
Definition: TESWeather.h:54
@ kSunset
Definition: TESWeather.h:53
Definition: TESWeather.h:62
@ kMoonGlare
Definition: TESWeather.h:81
@ kUnknown
Definition: TESWeather.h:67
@ kHorizon
Definition: TESWeather.h:73
@ kSkyStatics
Definition: TESWeather.h:78
@ kFogNear
Definition: TESWeather.h:66
@ kSunGlare
Definition: TESWeather.h:80
@ kStars
Definition: TESWeather.h:71
@ kEffectLighting
Definition: TESWeather.h:74
@ kSunlight
Definition: TESWeather.h:69
@ kSkyLower
Definition: TESWeather.h:72
@ kFogFar
Definition: TESWeather.h:77
@ kCloudLODDiffuse
Definition: TESWeather.h:75
@ kSun
Definition: TESWeather.h:70
@ kCloudLODAmbient
Definition: TESWeather.h:76
@ kWaterMultiplier
Definition: TESWeather.h:79
@ kAmbient
Definition: TESWeather.h:68
@ kTotal
Definition: TESWeather.h:83
@ kSkyUpper
Definition: TESWeather.h:65
Definition: TESWeather.h:100
std::int8_t red
Definition: TESWeather.h:103
std::int8_t blue
Definition: TESWeather.h:105
std::int8_t green
Definition: TESWeather.h:104
Definition: TESWeather.h:97
std::int8_t thunderLightningEndFadeOut
Definition: TESWeather.h:119
std::int8_t thunderLightningFrequency
Definition: TESWeather.h:120
std::int8_t sunGlare
Definition: TESWeather.h:114
std::int8_t unk13
Definition: TESWeather.h:127
std::int8_t unk01
Definition: TESWeather.h:111
REX::EnumSet< WeatherDataFlag, std::uint8_t > flags
Definition: TESWeather.h:121
Color3 lightningColor
Definition: TESWeather.h:122
std::int8_t sunDamage
Definition: TESWeather.h:115
std::int8_t precipitationBeginFadeIn
Definition: TESWeather.h:116
std::int8_t windDirectionRange
Definition: TESWeather.h:126
std::int8_t visualEffectEnd
Definition: TESWeather.h:124
std::int8_t transDelta
Definition: TESWeather.h:113
std::int8_t windDirection
Definition: TESWeather.h:125
std::uint8_t windSpeed
Definition: TESWeather.h:107
std::int8_t unk02
Definition: TESWeather.h:112
std::int8_t precipitationEndFadeOut
Definition: TESWeather.h:117
std::int8_t visualEffectBegin
Definition: TESWeather.h:123
std::int8_t thunderLightningBeginFadeIn
Definition: TESWeather.h:118
Definition: TESWeather.h:132
float nightFar
Definition: TESWeather.h:138
float dayFar
Definition: TESWeather.h:136
float nightNear
Definition: TESWeather.h:137
float nightPower
Definition: TESWeather.h:140
float dayPower
Definition: TESWeather.h:139
float dayMax
Definition: TESWeather.h:141
float nightMax
Definition: TESWeather.h:142
float dayNear
Definition: TESWeather.h:135
Definition: TESWeather.h:88
RecordFlag
Definition: TESWeather.h:90
@ kIgnored
Definition: TESWeather.h:92
@ kDeleted
Definition: TESWeather.h:91
Definition: TESWeather.h:156
Definition: TESWeather.h:147
REX::EnumSet< SoundType, std::uint32_t > type
Definition: TESWeather.h:151
FormID soundFormID
Definition: TESWeather.h:150