CommonLibVR
TESObjectTREE.h
Go to the documentation of this file.
1 #pragma once
2 
4 #include "RE/B/BSTArray.h"
5 #include "RE/F/FormTypes.h"
6 #include "RE/N/NiMatrix3.h"
7 #include "RE/N/NiPoint3.h"
8 #include "RE/T/TESBoundObject.h"
9 #include "RE/T/TESFullName.h"
10 #include "RE/T/TESModel.h"
11 #include "RE/T/TESProduceForm.h"
12 
13 namespace RE
14 {
15  struct OBJ_TREE // CNAM
16  {
17  float trunkFlexibility; // 00
18  float branchFlexibility; // 04
19  float trunkAmplitude; // 08
20  float frontAmplitude; // 0C
21  float backAmplitude; // 10
22  float sideAmplitude; // 14
23  float frontFrequency; // 18
24  float backFrequency; // 1C
25  float sideFrequency; // 20
26  float leafFlexibility; // 24
27  float leafAmplitude; // 28
28  float leafFrequency; // 2C
29  };
30  static_assert(sizeof(OBJ_TREE) == 0x30);
31 
32  struct BoneData
33  {
36  std::uint32_t parentWorldBoneRotationIndex; // 30
37  };
38  static_assert(sizeof(BoneData) == 0x34);
39 
41  {
42  std::uint32_t pad04; // 04
45  };
46  static_assert(sizeof(BaseTreeData) == 0x38);
47 
48  class TESObjectTREE :
49  public TESBoundObject, // 00
50  public TESModel, // 30
51  public TESFullName, // 58
52  public TESProduceForm // 68
53  {
54  public:
55  inline static constexpr auto RTTI = RTTI_TESObjectTREE;
56  inline static constexpr auto VTABLE = VTABLE_TESObjectTREE;
57  inline static constexpr auto FORMTYPE = FormType::Tree;
58 
59  enum class etTreeType
60  {
61  kShortAndThin = 0,
62  kShortAndThick = 1,
63  kTallAndThin = 2,
64  kTallAndThick = 3
65  };
66 
67  struct RecordFlags
68  {
69  enum RecordFlag : std::uint32_t
70  {
71  kDeleted = 1 << 5,
72  kIgnored = 1 << 12,
73  kHasDistantLOD = 1 << 15
74  };
75  };
76 
77  ~TESObjectTREE() override; // 00
78 
79  // override (TESBoundObject)
80  void InitializeData() override; // 04
81  bool Load(TESFile* a_mod) override; // 06
82  void InitItemImpl() override; // 13
83  bool Activate(TESObjectREFR* a_targetRef, TESObjectREFR* a_activatorRef, std::uint8_t a_arg3, TESBoundObject* a_object, std::int32_t a_targetCount) override; // 37
84  bool ReplaceModel() override; // 44
85  bool GetActivateText(TESObjectREFR* a_activator, BSString& a_dst) override; // 4C
86  void OnRemove3D(NiAVObject* a_obj3D) override; // 4F
87  void OnCheckModels() override; // 50 - { return; }
88  void OnCopyReference() override; // 51 - { return; }
89  void OnFinishScale() override; // 52 - { return; }
90 
91  // members
92  OBJ_TREE data; // 88
95  std::uint32_t padC4; // C4
96  private:
97  KEEP_FOR_RE()
98  };
99  static_assert(sizeof(TESObjectTREE) == 0xC8);
100 }
#define KEEP_FOR_RE()
Definition: PCH.h:713
Definition: BSTArray.h:378
Definition: NiAVObject.h:57
Definition: NiMatrix3.h:8
Definition: NiPoint3.h:6
Definition: TESBoundObject.h:26
Definition: TESFile.h:17
Definition: TESFullName.h:9
Definition: TESModel.h:16
Definition: TESObjectREFR.h:113
Definition: TESObjectTREE.h:53
void OnRemove3D(NiAVObject *a_obj3D) override
etTreeType
Definition: TESObjectTREE.h:60
void OnCheckModels() override
bool ReplaceModel() override
~TESObjectTREE() override
BaseTreeData * baseData
Definition: TESObjectTREE.h:93
bool Activate(TESObjectREFR *a_targetRef, TESObjectREFR *a_activatorRef, std::uint8_t a_arg3, TESBoundObject *a_object, std::int32_t a_targetCount) override
static constexpr auto VTABLE
Definition: TESObjectTREE.h:56
bool Load(TESFile *a_mod) override
void InitializeData() override
void OnCopyReference() override
stl::enumeration< etTreeType, std::uint32_t > type
Definition: TESObjectTREE.h:94
void InitItemImpl() override
void OnFinishScale() override
std::uint32_t padC4
Definition: TESObjectTREE.h:95
static constexpr auto RTTI
Definition: TESObjectTREE.h:55
OBJ_TREE data
Definition: TESObjectTREE.h:92
bool GetActivateText(TESObjectREFR *a_activator, BSString &a_dst) override
static constexpr auto FORMTYPE
Definition: TESObjectTREE.h:57
Definition: TESProduceForm.h:25
Definition: AbsorbEffect.h:6
constexpr REL::ID RTTI_TESObjectTREE(static_cast< std::uint64_t >(513978))
constexpr std::array< REL::ID, 4 > VTABLE_TESObjectTREE
Definition: Offsets_VTABLE.h:12873
Definition: BSIntrusiveRefCounted.h:8
Definition: TESObjectTREE.h:41
std::uint32_t pad04
Definition: TESObjectTREE.h:42
BSTArray< BoneData > branchBoneData
Definition: TESObjectTREE.h:43
BSTArray< NiMatrix3 > parentWorldBoneRotations
Definition: TESObjectTREE.h:44
Definition: TESObjectTREE.h:33
NiPoint3 worldBoneDir
Definition: TESObjectTREE.h:35
std::uint32_t parentWorldBoneRotationIndex
Definition: TESObjectTREE.h:36
NiMatrix3 localBoneRotation
Definition: TESObjectTREE.h:34
Definition: TESObjectTREE.h:16
float leafAmplitude
Definition: TESObjectTREE.h:27
float frontAmplitude
Definition: TESObjectTREE.h:20
float sideFrequency
Definition: TESObjectTREE.h:25
float leafFlexibility
Definition: TESObjectTREE.h:26
float leafFrequency
Definition: TESObjectTREE.h:28
float frontFrequency
Definition: TESObjectTREE.h:23
float trunkFlexibility
Definition: TESObjectTREE.h:17
float branchFlexibility
Definition: TESObjectTREE.h:18
float sideAmplitude
Definition: TESObjectTREE.h:22
float backAmplitude
Definition: TESObjectTREE.h:21
float trunkAmplitude
Definition: TESObjectTREE.h:19
float backFrequency
Definition: TESObjectTREE.h:24
Definition: TESObjectTREE.h:68
RecordFlag
Definition: TESObjectTREE.h:70
@ kDeleted
Definition: TESObjectTREE.h:71
@ kHasDistantLOD
Definition: TESObjectTREE.h:73
@ kIgnored
Definition: TESObjectTREE.h:72