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 TESBoundObject classes #233

Merged
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
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);
}