Files
Commonwealth-Online-Public/plugin/lib/commonlibf4/include/RE/T/TESWeather.h
T
2026-05-30 18:33:24 +12:00

140 lines
4.3 KiB
C++

#pragma once
#include "RE/B/BGSDirectionalAmbientLightingColors.h"
#include "RE/B/BSSimpleList.h"
#include "RE/B/BSTArray.h"
#include "RE/T/TESForm.h"
#include "RE/T/TESModel.h"
#include "RE/T/TESTexture1024.h"
namespace RE
{
class BGSReferenceEffect;
class BGSShaderParticleGeometryData;
class __declspec(novtable) TESWeather :
public TESForm // 000
{
public:
static constexpr auto RTTI{ RTTI::TESWeather };
static constexpr auto VTABLE{ VTABLE::TESWeather };
static constexpr auto FORM_ID{ ENUM_FORM_ID::kWTHR };
enum class ColorTime
{
kSunrise = 0x0,
kDay = 0x1,
kSunset = 0x2,
kNight = 0x3,
kEarlySunrise = 0x4,
kLateSunrise = 0x5,
kEarlySunset = 0x6,
kLateSunset = 0x7,
kCount = 0x8
};
enum class SpellContext
{
kApplyOnLightning = 0x0,
kApplyWhenActive = 0x1
};
enum class SoundType
{
kDefault = 0x0,
kPrecipitation = 0x1,
kWind = 0x2,
kThunder = 0x3
};
enum class WeatherData
{
kWindSpeed = 0x0,
kCloudSpeedY = 0x1,
kCloudSpeedX = 0x2,
kTransDelta = 0x3,
kSunGlare = 0x4,
kSunDamage = 0x5,
kBeginPrecip = 0x6,
kEndPrecip = 0x7,
kBeginThunder = 0x8,
kEndThunder = 0x9,
kThunderFreq = 0xA,
kFlags = 0xB,
kLightningR = 0xC,
kLightningG = 0xD,
kLightningB = 0xE,
kBeginEffect = 0xF,
kEndEffect = 0x10,
kWindDir = 0x11,
kWindDirRange = 0x12,
kWindTurbulence = 0x13,
kCount = 0x14
};
enum class WeatherDataFlags
{
kPleasant = 0x1,
kCloudy = 0x2,
kRainy = 0x4,
kSnow = 0x8,
kPermAurora = 0x10,
kAuroraFollowsSun = 0x20,
kRainOcclusion = 0x40,
kHudRain = 0x80
};
class SpellData
{
public:
// members
MagicItem* spell; // 00
float threshold; // 08
};
static_assert(sizeof(SpellData) == 0x10);
class WeatherSound
{
public:
// members
BGSSoundDescriptorForm* soundForm; // 00
REX::TEnumSet<SoundType, std::int32_t> type; // 08
};
static_assert(sizeof(WeatherSound) == 0x10);
class WeatherSoundList :
public BSSimpleList<WeatherSound*>
{
public:
};
static_assert(sizeof(WeatherSoundList) == 0x10);
// members
REX::TEnumSet<SpellContext, std::int32_t> context; // 020
TESTexture1024 cloudTexture[32]; // 028
std::int8_t cloudLayerSpeedY[32]; // 228
std::int8_t cloudLayerSpeedX[32]; // 248
std::uint32_t cloudColorData[32][8]; // 268
float cloudAlpha[32][8]; // 668
std::uint32_t cloudLayerDisabledBits; // A68
std::int8_t weatherData[20]; // A6C
float fogData[18]; // A80
std::uint32_t colorData[19][8]; // AC8
float fogColorScales[4][8]; // D28
SpellData weatherSpellData[2]; // DA8
WeatherSoundList soundList; // DC8
BSTArray<TESObjectSTAT*> skyStatics; // DD8
std::uint32_t numCloudLayers; // DF0
TESImageSpace* imageSpace[8]; // DF8
BGSGodRays* godRays[8]; // E38
BGSDirectionalAmbientLightingColors directionalAmbientLightingColors[8]; // E78
TESModel aurora; // F78
BGSLensFlare* sunGlareLensFlare; // FA8
float volatilityMult; // FB0
float visibilityMult; // FB4
BGSShaderParticleGeometryData* precipitationData; // FB8
BGSReferenceEffect* referenceEffect; // FC0
};
static_assert(sizeof(TESWeather) == 0xFC8);
}