CommonLibSSE NG
NiGeometry.h
Go to the documentation of this file.
1 #pragma once
2 
3 #include "RE/N/NiAVObject.h"
4 #include "RE/N/NiGeometryData.h"
5 #include "RE/N/NiProperty.h"
6 #include "RE/N/NiSkinInstance.h"
7 
8 namespace RE
9 {
10  class NiGeometry : public NiAVObject
11  {
12  public:
13  struct RUNTIME_DATA
14  {
15 #define RUNTIME_DATA_CONTENT \
16  NiPointer<NiProperty> m_spPropertyState; /* 110 */ \
17  NiPointer<NiProperty> m_spEffectState; /* 118 */ \
18  NiPointer<NiSkinInstance> m_spSkinInstance; /* 120 */ \
19  NiPointer<NiGeometryData> m_spModelData; /* 128 */ \
20  std::uint64_t unk130; /* 130 */
21 
23  };
24  static_assert(sizeof(RUNTIME_DATA) == 0x28);
25 
26  // add
27  SKYRIM_REL_VR_VIRTUAL void Unk_35(void); // 35, 36 - call controller vtbl+0xA0?
28  SKYRIM_REL_VR_VIRTUAL void Unk_36(void); // 36, 37 - ret 0
29  SKYRIM_REL_VR_VIRTUAL void Unk_37(void); // 37, 38 - same as Unk_33
30  SKYRIM_REL_VR_VIRTUAL void* Unk_38(void); // 38, 39 - ret call m_spModelData vtbl+0x9C
31  SKYRIM_REL_VR_VIRTUAL void SetGeometryData(NiGeometryData* unk1); // 39, 3A - set and AddRef geometry data
32  SKYRIM_REL_VR_VIRTUAL void* Unk_3A(void); // 3A, 3B - ret call m_spModelData vtbl+0x94
33  SKYRIM_REL_VR_VIRTUAL std::uint16_t Unk_3B(bool unk1); // 3B, 3C ??
34 
35  [[nodiscard]] inline RUNTIME_DATA& GetRuntimeData() noexcept
36  {
37  return REL::RelocateMember<RUNTIME_DATA>(this, 0x110, 0x138);
38  }
39 
40  [[nodiscard]] inline const RUNTIME_DATA& GetRuntimeData() const noexcept
41  {
42  return REL::RelocateMember<RUNTIME_DATA>(this, 0x110, 0x138);
43  }
44 
45  RUNTIME_DATA_CONTENT // 110, 138
46  };
47 #if !defined(ENABLE_SKYRIM_AE) && !defined(ENABLE_SKYRIM_SE)
48  static_assert(sizeof(NiGeometry) == 0x160);
49 #else
50  static_assert(sizeof(NiGeometry) == 0x138);
51 #endif
52 }
53 #undef RUNTIME_DATA_CONTENT
#define SKYRIM_REL_VR_VIRTUAL
Definition: Common.h:94
#define RUNTIME_DATA_CONTENT
Definition: NiGeometry.h:15
Definition: NiAVObject.h:50
Definition: NiGeometryData.h:16
Definition: NiGeometry.h:11
SKYRIM_REL_VR_VIRTUAL std::uint16_t Unk_3B(bool unk1)
SKYRIM_REL_VR_VIRTUAL void * Unk_3A(void)
const RUNTIME_DATA & GetRuntimeData() const noexcept
Definition: NiGeometry.h:40
SKYRIM_REL_VR_VIRTUAL void Unk_35(void)
SKYRIM_REL_VR_VIRTUAL void Unk_36(void)
SKYRIM_REL_VR_VIRTUAL void * Unk_38(void)
SKYRIM_REL_VR_VIRTUAL void Unk_37(void)
SKYRIM_REL_VR_VIRTUAL void SetGeometryData(NiGeometryData *unk1)
RUNTIME_DATA & GetRuntimeData() noexcept
Definition: NiGeometry.h:35
Definition: AbsorbEffect.h:6
Definition: NiGeometry.h:14