CommonLibSSE (Parapets fork)
TESObjectDOOR.h
Go to the documentation of this file.
1 #pragma once
2 
5 #include "RE/B/BSTArray.h"
6 #include "RE/F/FormTypes.h"
8 #include "RE/T/TESFullName.h"
10 
11 namespace RE
12 {
13  class TESObjectDOOR :
14  public TESBoundAnimObject, // 00
15  public TESFullName, // 30
16  public TESModelTextureSwap, // 40
17  public BGSDestructibleObjectForm, // 78
18  public BGSOpenCloseForm // 88
19  {
20  public:
21  inline static constexpr auto RTTI = RTTI_TESObjectDOOR;
22  inline static constexpr auto FORMTYPE = FormType::Door;
23 
24  enum class Flag
25  {
26  kNone = 0,
27  kAutomatic = 1 << 1,
28  kHidden = 1 << 2,
29  kMinimalUse = 1 << 3,
30  kSliding = 1 << 4,
32  };
33 
34  struct ChangeFlags
35  {
36  enum ChangeFlag : std::uint32_t
37  {
38  kTeleportExtra = 1 << 17
39  };
40  };
41 
42  struct RecordFlags
43  {
44  enum RecordFlag : std::uint32_t
45  {
46  kDeleted = 1 << 5,
47  kIgnored = 1 << 12,
48  kHasDistantLOD = 1 << 15,
49  kRandomAnimStart = 1 << 16,
50  kIsMarker = 1 << 23
51  };
52  };
53 
54  ~TESObjectDOOR() override; // 00
55 
56  // override (TESBoundAnimObject)
57  void InitializeData() override; // 04
58  void ClearData() override; // 05
59  bool Load(TESFile* a_mod) override; // 06
60  void InitItemImpl() override; // 13
61  bool Activate(TESObjectREFR* a_targetRef, TESObjectREFR* a_activatorRef, std::uint8_t a_arg3, TESBoundObject* a_object, std::int32_t a_targetCount) override; // 37
62  NiAVObject* Clone3D(TESObjectREFR* a_ref) override; // 4A
63  bool GetActivateText(TESObjectREFR* a_activator, BSString& a_dst) override; // 4C
64  bool CalculateDoFavor(Actor* a_activator, bool a_arg2, TESObjectREFR* a_toActivate, float a_arg3) override; // 4D
65 
66  // override (BGSOpenCloseForm)
67  void HandleOpen(TESObjectREFR* a_target, TESObjectREFR* a_activator) override; // 01
68 
69  // members
70  std::uint64_t unk90; // 90
75  std::uint8_t padB1; // B1
76  std::uint16_t padB2; // B2
77  std::uint32_t padB4; // B4
79  };
80  static_assert(sizeof(TESObjectDOOR) == 0xD0);
81 }
Definition: Actor.h:134
Definition: BGSDestructibleObjectForm.h:61
Definition: BGSOpenCloseForm.h:9
Definition: BGSSoundDescriptorForm.h:14
Definition: BSTArray.h:377
Definition: NiAVObject.h:45
Definition: TESBoundAnimObject.h:8
Definition: TESBoundObject.h:24
Definition: TESFile.h:14
Definition: TESFullName.h:9
Definition: TESModelTextureSwap.h:10
Definition: TESObjectDOOR.h:19
void InitItemImpl() override
bool CalculateDoFavor(Actor *a_activator, bool a_arg2, TESObjectREFR *a_toActivate, float a_arg3) override
NiAVObject * Clone3D(TESObjectREFR *a_ref) override
~TESObjectDOOR() override
Flag
Definition: TESObjectDOOR.h:25
std::uint64_t unk90
Definition: TESObjectDOOR.h:70
stl::enumeration< Flag, std::uint8_t > flags
Definition: TESObjectDOOR.h:74
static constexpr auto FORMTYPE
Definition: TESObjectDOOR.h:22
void ClearData() override
bool Load(TESFile *a_mod) override
std::uint16_t padB2
Definition: TESObjectDOOR.h:76
bool Activate(TESObjectREFR *a_targetRef, TESObjectREFR *a_activatorRef, std::uint8_t a_arg3, TESBoundObject *a_object, std::int32_t a_targetCount) override
std::uint8_t padB1
Definition: TESObjectDOOR.h:75
BGSSoundDescriptorForm * openSound
Definition: TESObjectDOOR.h:71
bool GetActivateText(TESObjectREFR *a_activator, BSString &a_dst) override
BGSSoundDescriptorForm * loopSound
Definition: TESObjectDOOR.h:73
void InitializeData() override
std::uint32_t padB4
Definition: TESObjectDOOR.h:77
BSTArray< TESForm * > randomTeleports
Definition: TESObjectDOOR.h:78
static constexpr auto RTTI
Definition: TESObjectDOOR.h:21
void HandleOpen(TESObjectREFR *a_target, TESObjectREFR *a_activator) override
BGSSoundDescriptorForm * closeSound
Definition: TESObjectDOOR.h:72
Definition: TESObjectREFR.h:105
Definition: AbsorbEffect.h:6
constexpr REL::ID RTTI_TESObjectDOOR
Definition: Offsets_RTTI.h:6035
Definition: TESObjectDOOR.h:35
ChangeFlag
Definition: TESObjectDOOR.h:37
@ kTeleportExtra
Definition: TESObjectDOOR.h:38
Definition: TESObjectDOOR.h:43
RecordFlag
Definition: TESObjectDOOR.h:45
@ kIsMarker
Definition: TESObjectDOOR.h:50
@ kDeleted
Definition: TESObjectDOOR.h:46
@ kRandomAnimStart
Definition: TESObjectDOOR.h:49
@ kHasDistantLOD
Definition: TESObjectDOOR.h:48
@ kIgnored
Definition: TESObjectDOOR.h:47