CommonLibSSE (Parapets fork)
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 FORMTYPE = FormType::Tree;
57 
58  enum class etTreeType
59  {
60  kShortAndThin = 0,
61  kShortAndThick = 1,
62  kTallAndThin = 2,
63  kTallAndThick = 3
64  };
65 
66  struct RecordFlags
67  {
68  enum RecordFlag : std::uint32_t
69  {
70  kDeleted = 1 << 5,
71  kIgnored = 1 << 12,
72  kHasDistantLOD = 1 << 15
73  };
74  };
75 
76  ~TESObjectTREE() override; // 00
77 
78  // override (TESBoundObject)
79  void InitializeData() override; // 04
80  bool Load(TESFile* a_mod) override; // 06
81  void InitItemImpl() override; // 13
82  bool Activate(TESObjectREFR* a_targetRef, TESObjectREFR* a_activatorRef, std::uint8_t a_arg3, TESBoundObject* a_object, std::int32_t a_targetCount) override; // 37
83  bool ReplaceModel() override; // 44
84  bool GetActivateText(TESObjectREFR* a_activator, BSString& a_dst) override; // 4C
85  void OnRemove3D(NiAVObject* a_obj3D) override; // 4F
86  void OnCheckModels() override; // 50 - { return; }
87  void OnCopyReference() override; // 51 - { return; }
88  void OnFinishScale() override; // 52 - { return; }
89 
90  // members
91  OBJ_TREE data; // 88
94  std::uint32_t padC4; // C4
95  };
96  static_assert(sizeof(TESObjectTREE) == 0xC8);
97 }
Definition: BSTArray.h:377
Definition: NiAVObject.h:45
Definition: NiMatrix3.h:8
Definition: NiPoint3.h:6
Definition: TESBoundObject.h:24
Definition: TESFile.h:14
Definition: TESFullName.h:9
Definition: TESModel.h:16
Definition: TESObjectREFR.h:105
Definition: TESObjectTREE.h:53
void OnRemove3D(NiAVObject *a_obj3D) override
etTreeType
Definition: TESObjectTREE.h:59
void OnCheckModels() override
bool ReplaceModel() override
~TESObjectTREE() override
BaseTreeData * baseData
Definition: TESObjectTREE.h:92
bool Activate(TESObjectREFR *a_targetRef, TESObjectREFR *a_activatorRef, std::uint8_t a_arg3, TESBoundObject *a_object, std::int32_t a_targetCount) override
bool Load(TESFile *a_mod) override
void InitializeData() override
void OnCopyReference() override
stl::enumeration< etTreeType, std::uint32_t > type
Definition: TESObjectTREE.h:93
void InitItemImpl() override
void OnFinishScale() override
std::uint32_t padC4
Definition: TESObjectTREE.h:94
static constexpr auto RTTI
Definition: TESObjectTREE.h:55
OBJ_TREE data
Definition: TESObjectTREE.h:91
bool GetActivateText(TESObjectREFR *a_activator, BSString &a_dst) override
static constexpr auto FORMTYPE
Definition: TESObjectTREE.h:56
Definition: TESProduceForm.h:25
Definition: AbsorbEffect.h:6
constexpr REL::ID RTTI_TESObjectTREE
Definition: Offsets_RTTI.h:6044
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:67
RecordFlag
Definition: TESObjectTREE.h:69
@ kDeleted
Definition: TESObjectTREE.h:70
@ kHasDistantLOD
Definition: TESObjectTREE.h:72
@ kIgnored
Definition: TESObjectTREE.h:71