CommonLibSSE (powerof3)
TESFurniture.h
Go to the documentation of this file.
1 #pragma once
2 
3 #include "RE/A/ActorValues.h"
4 #include "RE/B/BSTArray.h"
5 #include "RE/F/FormTypes.h"
6 #include "RE/T/TESObjectACTI.h"
7 
8 namespace RE
9 {
10  class TESFurniture : public TESObjectACTI
11  {
12  public:
13  inline static constexpr auto RTTI = RTTI_TESFurniture;
14  inline static constexpr auto VTABLE = VTABLE_TESFurniture;
15  inline static constexpr auto FORMTYPE = FormType::Furniture;
16 
17  enum class ActiveMarker
18  {
19  kNone = 0,
20  kSit0 = 1 << 0,
21  kSit1 = 1 << 1,
22  kSit2 = 1 << 2,
23  kSit3 = 1 << 3,
24  kSit4 = 1 << 4,
25  kSit5 = 1 << 5,
26  kSit6 = 1 << 6,
27  kSit7 = 1 << 7,
28  kSit8 = 1 << 8,
29  kSit9 = 1 << 9,
30  kSit10 = 1 << 10,
31  kSit11 = 1 << 11,
32  kSit12 = 1 << 12,
33  kSit13 = 1 << 13,
34  kSit14 = 1 << 14,
35  kSit15 = 1 << 15,
36  kSit16 = 1 << 16,
37  kSit17 = 1 << 17,
38  kSit18 = 1 << 18,
39  kSit19 = 1 << 19,
40  kSit20 = 1 << 20,
41  kSit21 = 1 << 21,
42  kSit22 = 1 << 22,
43  kSit23 = 1 << 23,
44  kDisablesActivation = 1 << 25,
45  kIsPerch = 1 << 26,
46  kMustExitToTalk = 1 << 27,
47  kSit28 = 1 << 28,
48  kCanLean = 1 << 29,
49  kCanSit = 1 << 30,
50  kCanSleep = 1 << 31
51  };
52 
53  struct RecordFlags
54  {
55  enum RecordFlag : std::uint32_t
56  {
57  kDeleted = 1 << 5,
58  kIsPerch = 1 << 7,
59  kIgnored = 1 << 12,
60  kHasDistantLOD = 1 << 15,
61  kRandomAnimStart = 1 << 16,
62  kIsMarker = 1 << 23,
63  kMustExitToTalk = 1 << 28,
64  kChildCanUse = 1 << 29
65  };
66  };
67 
68  struct WorkBenchData // WBDT
69  {
70  public:
71  enum class BenchType
72  {
73  kNone = 0,
74  kCreateObject = 1,
75  kSmithingWeapon = 2,
76  kEnchanting = 3,
78  kAlchemy = 5,
80  kSmithingArmor = 7,
81  };
82 
83  // members
86  };
87  static_assert(sizeof(WorkBenchData) == 0x2);
88 
90  {
91  public:
92  struct DisabledEntryPoint // NAM0
93  {
94  public:
95  enum class DisabledPoint
96  {
97  kNone = 0,
98  kFront = 1 << 0,
99  kBehind = 1 << 1,
100  kRight = 1 << 2,
101  kLeft = 1 << 3,
102  kUp = 1 << 4
103  };
104 
105  // members
106  std::uint16_t unk0; // 0
108  };
109  static_assert(sizeof(DisabledEntryPoint) == 0x4);
110 
111  // members
112  std::uint32_t entryPoint; // 00 - ENAM
114  BGSKeyword* keyword; // 08 - FNMK
115  };
116  static_assert(sizeof(EntryPointData) == 0x10);
117 
118  ~TESFurniture() override; // 00
119 
120  // override (TESObjectACTI)
121  void InitializeData() override; // 04
122  void ClearData() override; // 05
123  bool Load(TESFile* a_mod) override; // 06
124  void InitItemImpl() override; // 13
125  bool Activate(TESObjectREFR* a_targetRef, TESObjectREFR* a_activatorRef, std::uint8_t a_arg3, TESBoundObject* a_object, std::int32_t a_targetCount) override; // 37
126  NiAVObject* Clone3D(TESObjectREFR* a_ref) override; // 4A
127  bool GetActivateText(TESObjectREFR* a_activator, BSString& a_dst) override; // 4C
128  bool CalculateDoFavor(Actor* a_activator, bool a_arg2, TESObjectREFR* a_toActivate, float a_arg3) override; // 4D
129 
130  // members
133  std::uint16_t padE2; // E2
136  };
137  static_assert(sizeof(TESFurniture) == 0xF0);
138 }
Definition: Actor.h:133
Definition: BGSKeyword.h:10
Definition: BSTArray.h:378
Definition: NiAVObject.h:51
Definition: SpellItem.h:16
Definition: TESBoundObject.h:24
Definition: TESFile.h:17
Definition: TESFurniture.h:11
BSTArray< EntryPointData > entryPointDataArray
Definition: TESFurniture.h:131
~TESFurniture() override
SpellItem * associatedForm
Definition: TESFurniture.h:135
static constexpr auto FORMTYPE
Definition: TESFurniture.h:15
bool Load(TESFile *a_mod) override
static constexpr auto VTABLE
Definition: TESFurniture.h:14
void ClearData() override
ActiveMarker
Definition: TESFurniture.h:18
void InitItemImpl() override
WorkBenchData workBenchData
Definition: TESFurniture.h:132
static constexpr auto RTTI
Definition: TESFurniture.h:13
void InitializeData() override
REX::EnumSet< ActiveMarker, std::uint32_t > furnFlags
Definition: TESFurniture.h:134
bool CalculateDoFavor(Actor *a_activator, bool a_arg2, TESObjectREFR *a_toActivate, float a_arg3) override
bool Activate(TESObjectREFR *a_targetRef, TESObjectREFR *a_activatorRef, std::uint8_t a_arg3, TESBoundObject *a_object, std::int32_t a_targetCount) override
bool GetActivateText(TESObjectREFR *a_activator, BSString &a_dst) override
std::uint16_t padE2
Definition: TESFurniture.h:133
NiAVObject * Clone3D(TESObjectREFR *a_ref) override
Definition: TESObjectACTI.h:22
Definition: TESObjectREFR.h:114
Definition: AbsorbEffect.h:6
constexpr std::array< REL::ID, 6 > VTABLE_TESFurniture
Definition: Offsets_VTABLE.h:12830
constexpr REL::ID RTTI_TESFurniture(static_cast< std::uint64_t >(685051))
REX::EnumSet< DisabledPoint, std::uint16_t > disabledPoints
Definition: TESFurniture.h:107
std::uint16_t unk0
Definition: TESFurniture.h:106
Definition: TESFurniture.h:90
std::uint32_t entryPoint
Definition: TESFurniture.h:109
DisabledEntryPoint disabledEntryPoints
Definition: TESFurniture.h:113
BGSKeyword * keyword
Definition: TESFurniture.h:114
Definition: TESFurniture.h:54
RecordFlag
Definition: TESFurniture.h:56
@ kMustExitToTalk
Definition: TESFurniture.h:63
@ kRandomAnimStart
Definition: TESFurniture.h:61
@ kDeleted
Definition: TESFurniture.h:57
@ kHasDistantLOD
Definition: TESFurniture.h:60
@ kIsPerch
Definition: TESFurniture.h:58
@ kIsMarker
Definition: TESFurniture.h:62
@ kChildCanUse
Definition: TESFurniture.h:64
@ kIgnored
Definition: TESFurniture.h:59
Definition: TESFurniture.h:69
BenchType
Definition: TESFurniture.h:72
REX::EnumSet< BenchType, std::uint8_t > benchType
Definition: TESFurniture.h:84
REX::EnumSet< ActorValue, std::uint8_t > usesSkill
Definition: TESFurniture.h:85