Skip to content

Commit

Permalink
feat: remaining TESBoundObject classes (#233)
Browse files Browse the repository at this point in the history
  • Loading branch information
powerof3 authored Nov 23, 2023
1 parent fd9c006 commit 2bec87f
Show file tree
Hide file tree
Showing 9 changed files with 308 additions and 1 deletion.
35 changes: 35 additions & 0 deletions CommonLibSF/include/RE/B/BGSMovableStatic.h
Original file line number Diff line number Diff line change
@@ -0,0 +1,35 @@
#pragma once

#include "RE/B/BGSDestructibleObjectForm.h"
#include "RE/B/BGSKeywordForm.h"
#include "RE/T/TESMagicTargetForm.h"
#include "RE/T/TESObjectSTAT.h"

namespace RE
{
struct MOVABLE_STATIC_DATA
{
public:
// members
std::uint8_t flags; // 0
};
static_assert(sizeof(MOVABLE_STATIC_DATA) == 0x1);

class BGSMovableStatic :
public TESObjectSTAT, // 000
public BGSDestructibleObjectForm, // 170
public TESMagicTargetForm, // 180
public BGSKeywordForm // 188
{
public:
SF_RTTI_VTABLE(BGSMovableStatic);
SF_FORMTYPE(MSTT);

~BGSMovableStatic() override; // 00

// members
MOVABLE_STATIC_DATA data; // 1B8
float unk1BC; // 1BC
};
static_assert(sizeof(BGSMovableStatic) == 0x1C0);
}
36 changes: 36 additions & 0 deletions CommonLibSF/include/RE/B/BGSSnapTemplateNode.h
Original file line number Diff line number Diff line change
@@ -0,0 +1,36 @@
#pragma once

#include "RE/B/BGSKeywordForm.h"
#include "RE/B/BGSModelMaterialSwap.h"
#include "RE/N/NiPoint3.h"
#include "RE/T/TESBoundObject.h"

namespace RE
{
class BGSArtObject;

class BGSSnapTemplateNode :
public TESBoundObject, // 000
public BGSModelMaterialSwap, // 0E0
public BGSKeywordForm // 108
{
public:
SF_RTTI_VTABLE(BGSSnapTemplateNode);
SF_FORMTYPE(STND);

~BGSSnapTemplateNode() override; // 00

// members
NiPoint3 snapAngles; // 138
std::uint32_t unk144; // 144
std::uint32_t unk148; // 148
std::uint32_t unk14C; // 14C
std::uint64_t unk150; // 150
std::uint64_t unk158; // 158
std::uint64_t unk160; // 160
std::uint64_t unk168; // 168
std::uint64_t unk170; // 170
BGSArtObject* artObject; // 178
};
static_assert(sizeof(BGSSnapTemplateNode) == 0x180);
}
22 changes: 22 additions & 0 deletions CommonLibSF/include/RE/B/BGSSoundEcho.h
Original file line number Diff line number Diff line change
@@ -0,0 +1,22 @@
#pragma once

#include "RE/B/BSTArray.h"
#include "RE/T/TESBoundAnimObject.h"
#include "RE/W/WWiseSoundHook.h"

namespace RE
{
class BGSSoundEcho : public TESBoundAnimObject
{
public:
SF_RTTI_VTABLE(BGSSoundEcho);
SF_FORMTYPE(SECH);

~BGSSoundEcho() override; // 00

// members
BSTArray<void*> unk0E0; // 0E0
BGSAudio::WwiseSoundHook unk128; // 0F0
};
static_assert(sizeof(BGSSoundEcho) == 0x120);
}
26 changes: 26 additions & 0 deletions CommonLibSF/include/RE/B/BGSTalkingActivator.h
Original file line number Diff line number Diff line change
@@ -0,0 +1,26 @@
#pragma once

#include "RE/T/TESObjectACTI.h"

namespace RE
{
class TESObjectREFR;
class BGSVoiceType;

class BGSTalkingActivator : public TESObjectACTI
{
public:
SF_RTTI_VTABLE(BGSTalkingActivator);
SF_FORMTYPE(TACT);

~BGSTalkingActivator() override; // 00

// add
virtual bool GetReflectedByAutoWater(); // 82 - { return false; }

// members
TESObjectREFR* tempRef; // 220
BGSVoiceType* voiceType; // 228
};
static_assert(sizeof(BGSTalkingActivator) == 0x230);
}
14 changes: 13 additions & 1 deletion CommonLibSF/include/RE/B/BGSTerminal.h
Original file line number Diff line number Diff line change
@@ -1,10 +1,22 @@
#pragma once

#include "RE/T/TESFurniture.h"

namespace RE
{
class BGSTerminal
class BGSTerminalMenu;

class BGSTerminal : public TESFurniture
{
public:
SF_RTTI_VTABLE(BGSTerminal);
SF_FORMTYPE(TERM);

~BGSTerminal() override; // 00

// members
BGSTerminalMenu* menu; // 280
std::uint8_t unk288; // 288
};
static_assert(sizeof(BGSTerminal) == 0x290);
}
34 changes: 34 additions & 0 deletions CommonLibSF/include/RE/T/TESFlora.h
Original file line number Diff line number Diff line change
@@ -0,0 +1,34 @@
#pragma once

#include "RE/B/BGSAttachParentArray.h"
#include "RE/T/TESObjectACTI.h"
#include "RE/T/TESProduceForm.h"

namespace RE
{
class BGSExplosion;
class TESGlobal;

class TESFlora :
public TESObjectACTI, // 000
public TESProduceForm // 220
{
public:
SF_RTTI_VTABLE(TESFlora);
SF_FORMTYPE(FLOR);

~TESFlora() override; // 00

// members
BGSAttachParentArray attachParents; // 268
BGSAudio::WwiseSoundHook sound; // 288
BGSKeyword* actionKeyword; // 2B8
TESGlobal* maxGlobal; // 2C0
TESGlobal* minGlobal; // 2C8
BGSExplosion* explosion; // 2D0
float unk2D8; // 2D8
float unk2DC; // 2DC
std::uint32_t unk2E0; // 2E0
};
static_assert(sizeof(TESFlora) == 0x2E8);
}
77 changes: 77 additions & 0 deletions CommonLibSF/include/RE/T/TESFurniture.h
Original file line number Diff line number Diff line change
@@ -0,0 +1,77 @@
#pragma once

#include "RE/B/BGSAttachParentArray.h"
#include "RE/B/BSTArray.h"
#include "RE/T/TESObjectACTI.h"

namespace RE
{
struct WorkbenchData
{
public:
enum class Type
{
kNone = 0,
kCreateObject = 1,
kWeapons = 2,
kEnchanting = 3,
kEnchantingExperiment = 4,
kAlchemy = 5,
kAlchemyExperiment = 6,
kArmor = 7,
kPowerArmor = 8,
kRobotMod = 9,
kUnknown10 = 10,
kResearch = 11
};

// members
stl::enumeration<Type, std::uint8_t> type; // 0
};
static_assert(sizeof(WorkbenchData) == 0x1);

class BSFurnitureMarker
{
public:
// members
NiPoint3 position; // 00
float rotationZ; // 0C
BGSKeyword* actorMustHaveKeyword; // 10
float heading; // 18
std::uint32_t allowedAnimations; // 1C
std::uint64_t unk20; // 20
};
static_assert(sizeof(BSFurnitureMarker) == 0x28);

class TESFurniture : public TESObjectACTI
{
public:
SF_RTTI_VTABLE(TESFurniture);
SF_FORMTYPE(FURN);

struct EntryPointData
{
public:
// members
std::uint32_t entryPoint; // 0
std::uint32_t flags; // 4
};
static_assert(sizeof(EntryPointData) == 0x8);

~TESFurniture() override; // 00

// add
virtual bool AllowZeroGravityUse() const; // 82

// members
TESFurniture* furnitureTemplate; // 220
BSTArray<EntryPointData> entryPointDataArray; // 228
BGSAttachParentArray attachParents; // 248
WorkbenchData workBenchData; // 258
std::uint32_t furnFlags; // 25C
TESForm* associatedForm; // 260
BSTArray<BSFurnitureMarker> markersArray; // 268
std::uint32_t unk278; // 278
};
static_assert(sizeof(TESFurniture) == 0x280);
}
41 changes: 41 additions & 0 deletions CommonLibSF/include/RE/T/TESProduceForm.h
Original file line number Diff line number Diff line change
@@ -0,0 +1,41 @@
#pragma once

#include "RE/B/BaseFormComponent.h"
#include "RE/W/WwiseSoundHook.h"

namespace RE
{
class TESBoundObject;

struct SEASON
{
enum : std::uint32_t
{
kNone = static_cast<std::uint32_t>(-1),
kSpring = 0,
kSummer,
kFall,
kWinter,

kTotal,
};
};

class TESProduceForm : public BaseFormComponent
{
public:
SF_RTTI(TESProduceForm);

~TESProduceForm() override; // 00

// override (BaseFormComponent)
const BSFixedString& GetFormComponentType() const override; // 01 - { return "TESProduce_Component"; }
void InitializeDataComponent() override; // 02

// members
BGSAudio::WwiseSoundHook harvestSound; // 08
TESBoundObject* produceItem; // 38
std::int8_t produceChance[SEASON::kTotal]; // 40
};
static_assert(sizeof(TESProduceForm) == 0x48);
}
24 changes: 24 additions & 0 deletions CommonLibSF/include/RE/T/TESSound.h
Original file line number Diff line number Diff line change
@@ -0,0 +1,24 @@
#pragma once

#include "RE/B/BGSKeywordForm.h"
#include "RE/T/TESBoundAnimObject.h"
#include "RE/W/WWiseSoundHook.h"

namespace RE
{
class TESSound :
public TESBoundAnimObject, // 00
public BGSKeywordForm // E8
{
public:
SF_RTTI_VTABLE(TESSound);
SF_FORMTYPE(SOUN);

~TESSound() override; // 00

// members
BGSAudio::WwiseSoundHook sound; // 110 - SMLS
std::uint64_t unk140; // 140
};
static_assert(sizeof(TESSound) == 0x148);
}

0 comments on commit 2bec87f

Please sign in to comment.