Skip to content

Commit

Permalink
feat: remaining TESForm classes
Browse files Browse the repository at this point in the history
  • Loading branch information
powerof3 committed Jan 15, 2024
1 parent e520449 commit 951c98c
Show file tree
Hide file tree
Showing 96 changed files with 4,039 additions and 23 deletions.
19 changes: 19 additions & 0 deletions CommonLibSF/include/RE/B/BGSAction.h
Original file line number Diff line number Diff line change
@@ -0,0 +1,19 @@
#pragma once

#include "RE/B/BGSKeyword.h"

namespace RE
{
class BGSAction : public BGSKeyword
{
public:
SF_RTTI_VTABLE(BGSAction);
SF_FORMTYPE(AACT);

~BGSAction() override; // 00

// members
std::uint32_t index; // 80
};
static_assert(sizeof(BGSAction) == 0x80);
}
38 changes: 38 additions & 0 deletions CommonLibSF/include/RE/B/BGSAddonNode.h
Original file line number Diff line number Diff line change
@@ -0,0 +1,38 @@
#pragma once

#include "RE/B/BGSModelMaterialSwap.h"
#include "RE/T/TESBoundObject.h"
#include "RE/W/WWiseSoundHook.h"

namespace RE
{
class TESObjectLIGH;

struct ADDON_DATA
{
public:
// members
std::uint16_t masterParticleCap; // 0
std::int8_t flags; // 2
};
static_assert(sizeof(ADDON_DATA) == 0x4);

class BGSAddonNode :
public TESBoundObject, // 00
public BGSModelMaterialSwap // E0
{
public:
SF_RTTI_VTABLE(BGSAddonNode);
SF_FORMTYPE(ADDN);

~BGSAddonNode() override; // 00

// members
std::uint32_t index; // 108
BGSAudio::WwiseSoundHook sound; // 110
TESObjectLIGH* light; // 140
std::uint8_t unk148[776]; // 148 - reflection data
ADDON_DATA data; // 450
};
static_assert(sizeof(BGSAddonNode) == 0x458);
}
42 changes: 42 additions & 0 deletions CommonLibSF/include/RE/B/BGSAffinityEvent.h
Original file line number Diff line number Diff line change
@@ -0,0 +1,42 @@
#pragma once

#include "RE/T/TESForm.h"
#include "RE/T/TESFullName.h"

namespace RE
{
class ActorValueInfo;
class TESFaction;
class TESGlobal;
class TESNPC;

class BGSAffinityEvent : public TESForm
{
public:
SF_RTTI_VTABLE(BGSAffinityEvent);
SF_FORMTYPE(AFFE);

struct ReactionData
{
public:
// members
TESNPC* npc; // 00
TESGlobal* reaction; // 08
};
static_assert(sizeof(ReactionData) == 0x10);

~BGSAffinityEvent() override; // 00

// members
ActorValueInfo* actorValue; // 30
TESGlobal* eventSize; // 38
TESGlobal* eventDistance; // 40
TESGlobal* eventCooldown; // 48
TESFaction* faction; // 50
std::uint32_t flags; // 58
std::uint32_t unk5C; // 5C
std::vector<ReactionData*> reactionData; // 60
std::uint32_t unk78; // 78
};
static_assert(sizeof(BGSAffinityEvent) == 0x80);
}
24 changes: 24 additions & 0 deletions CommonLibSF/include/RE/B/BGSAmbienceSet.h
Original file line number Diff line number Diff line change
@@ -0,0 +1,24 @@
#pragma once

#include "RE/T/TESForm.h"
#include "RE/W/WwiseSoundHook.h"

namespace RE
{
class BGSAmbienceSet : public TESForm
{
public:
SF_RTTI_VTABLE(BGSAmbienceSet);
SF_FORMTYPE(AMBS);

~BGSAmbienceSet() override; // 00

// members
std::uint64_t unk30; // 30
std::uint64_t unk38; // 38
std::uint64_t unk40; // 40
bool unk48; // 48
BGSAudio::WwiseSoundHook unk50; // 50
};
static_assert(sizeof(BGSAmbienceSet) == 0x80);
}
6 changes: 3 additions & 3 deletions CommonLibSF/include/RE/B/BGSArtObject.h
Original file line number Diff line number Diff line change
Expand Up @@ -6,7 +6,7 @@

namespace RE
{
class EffectShader;
class TESEffectShader;

class BGSArtObject :
public TESBoundObject, // 000
Expand Down Expand Up @@ -36,8 +36,8 @@ namespace RE
~BGSArtObject() override; // 00

// members
Data data; // 138
EffectShader* effectShader; // 140
Data data; // 138
TESEffectShader* effectShader; // 140
};
static_assert(sizeof(BGSArtObject) == 0x148);
}
140 changes: 140 additions & 0 deletions CommonLibSF/include/RE/B/BGSAtmosphere.h
Original file line number Diff line number Diff line change
@@ -0,0 +1,140 @@
#pragma once

#include "RE/B/BGSReflectedForm.h"
#include "RE/B/BSTArray.h"

namespace RE
{
class BGSResource;
class TESClimate;
class TESImageSpace;

namespace BSGalaxy
{
class BGSSunPresetForm;
}

class BGSAtmosphere : public BGSReflectedForm
{
public:
SF_RTTI_VTABLE(BGSAtmosphere);
SF_FORMTYPE(ATMO);

enum class ATMOSPHERE_TYPE
{
kNone = 0,
kNitrogen,
kMethane,
kCarbonDioxide,
kOxygen,
kLowOxygen,
kHighOxygen
};

struct alignas(4) ScatteringSettings
{
public:
struct alignas(4) RayleighSettings
{
float moleculesPerUnitVolume; // 00
float refractiveIndexOfAir; // 04
float depolarizationFactor; // 08
bool useOzoneAbsorptionApproximation; // 0C
DirectX::XMFLOAT4 ozoneAbsorptionCoef; // 10
DirectX::XMFLOAT4 rayleighCoef; // 20
};
static_assert(sizeof(RayleighSettings) == 0x30);

struct alignas(4) MieSettings
{
float aerosolDensity; // 00
float aerosolAbsorbtion; // 04
DirectX::XMFLOAT4 mieCoef; // 08
};
static_assert(sizeof(MieSettings) == 0x18);

// members
std::uint32_t height; // 00
bool useCustomCoefficients; // 04
RayleighSettings rayleigh; // 08
MieSettings mie; // 38
float aerosolPhaseFunction; // 50
float scatteringScale; // 54
float edgeEffectExponent; // 58
float edgeEffectCoefficient; // 5C
};
static_assert(sizeof(ScatteringSettings) == 0x60);

struct alignas(4) StarSettings
{
float planetStarfieldBackgroundScale; // 00
float planetStarfieldBackgroundGIContribution; // 04
float planetStarfieldStarBrightnessScale; // 08
float planetStarGlowBackgroundScale; // 0C
float horizonScatteringBlendScale; // 10
bool disableSimulatedVisibility; // 14
float staticVisibility; // 18
};
static_assert(sizeof(StarSettings) == 0x1C);

struct alignas(4) CelestialBodySettings
{
float celestialBodyIlluminanceScale; // 0
};
static_assert(sizeof(CelestialBodySettings) == 0x4);

struct OverrideSettings
{
BSGalaxy::BGSSunPresetForm* sunPresetOverride; // 00
};
static_assert(sizeof(OverrideSettings) == 0x8);

struct MiscSettings
{
stl::enumeration<ATMOSPHERE_TYPE, std::uint32_t> atmosphereType; // 00
BSTArray<BGSResource*> inorganicResources; // 08
TESImageSpace* imageSpaceDay; // 18
TESImageSpace* imageSpaceNight; // 20
TESClimate* climateOverride; // 28
};
static_assert(sizeof(MiscSettings) == 0x30);

struct AtmosphereSettings
{
public:
// members
BGSAtmosphere* parent; // 00
ScatteringSettings scattering; // 08
StarSettings stars; // 68
CelestialBodySettings celestialBodies; // 84
OverrideSettings overrides; // 88
MiscSettings misc; // 90
};
static_assert(sizeof(AtmosphereSettings) == 0xC0);

~BGSAtmosphere() override; // 00

// members
AtmosphereSettings settings; // 030
BSTArray<void*> unk0F0; // 0F0 - incomplete reflection?
std::uint64_t unk100; // 100
std::uint32_t unk108; // 108
std::uint32_t unk10C; // 10C
std::uint32_t unk110; // 110
std::uint32_t unk114; // 114
std::uint32_t unk118; // 118
std::uint32_t unk11C; // 11C
std::uint32_t unk120; // 120
std::uint32_t unk124; // 124
std::uint32_t unk128; // 128
std::uint32_t unk12C; // 12C
std::uint32_t unk130; // 130
std::uint32_t unk134; // 134
std::uint32_t unk138; // 138
std::uint32_t unk13C; // 13C
std::uint32_t unk140; // 140
std::uint32_t unk144; // 144
std::uint32_t unk148; // 148
};
static_assert(sizeof(BGSAtmosphere) == 0x150);
}
33 changes: 33 additions & 0 deletions CommonLibSF/include/RE/B/BGSAttractionRule.h
Original file line number Diff line number Diff line change
@@ -0,0 +1,33 @@
#pragma once

#include "RE/B/BGSEditorID.h"
#include "RE/T/TESForm.h"

namespace RE
{
class BGSAttractionRule : public TESForm
{
public:
SF_RTTI_VTABLE(BGSAttractionRule);
SF_FORMTYPE(AORU);

class Rule
{
public:
// members
float radius; // 00
float minDelay; // 04
float maxDelay; // 08
bool requiresLOS; // 0C
bool combatTarget; // 0D
};
static_assert(sizeof(Rule) == 0x10);

~BGSAttractionRule() override; // 00

// members
BGSEditorID formEditorID; // 30
Rule attractionRule; // 40
};
static_assert(sizeof(BGSAttractionRule) == 0x50);
}
Loading

0 comments on commit 951c98c

Please sign in to comment.