Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

feat: remaining TESForm classes #238

Merged
merged 1 commit into from
Jan 15, 2024
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
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