CommonLibVR
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  inline static constexpr auto RTTI = RTTI_NiGeometry;
14  inline static constexpr auto Ni_RTTI = NiRTTI_NiGeometry;
15  inline static constexpr auto VTABLE = VTABLE_NiGeometry;
16 
17  ~NiGeometry() override; // 00
18 
19  // override (NiAVObject)
20  const NiRTTI* GetRTTI() const override; // 02
21  void LoadBinary(NiStream& a_stream) override; // 18
22  void LinkObject(NiStream& a_stream) override; // 19
23  bool RegisterStreamables(NiStream& a_stream) override; // 1A
24  void SaveBinary(NiStream& a_stream) override; // 1B
25  bool IsEqual(NiObject* a_object) override; // 1C
26  void ProcessClone(NiCloningProcess& a_cloning) override; // 1D
27  void AttachProperty(NiAlphaProperty* a_property) override; // 27
28  void SetSelectiveUpdateFlags(bool& a_selectiveUpdate, bool a_selectiveUpdateTransforms, bool& a_rigid) override; // 2B
29  void UpdateDownwardPass(NiUpdateData& a_data, std::uint32_t a_arg2) override; // 2C
30  void UpdateSelectedDownwardPass(NiUpdateData& a_data, std::uint32_t a_arg2) override; // 2D
31  void UpdateRigidDownwardPass(NiUpdateData& a_data, std::uint32_t a_arg2) override; // 2E
32  void UpdateWorldBound() override; // 2F
33 
34  // override (NiObject)
35  NiGeometry* AsNiGeometry() { return nullptr; } // 0D
36  void PostLinkObject([[maybe_unused]] NiStream& a_stream) override; // 1E
37 
38  // add
39  virtual void Unk_35(void); // 35 - call controller vtbl+0xA0?
40  virtual void Unk_36(void); // 36 - ret 0
41  virtual void Unk_37(void); // 37 - same as Unk_33
42  virtual void* Unk_38(void); // 38 - ret call spModelData vtbl+0x9C
43  virtual void SetGeometryData(NiGeometryData* unk1); // 39 - set and AddRef geometry data
44  virtual void* Unk_3A(void); // 3A - ret callspModelData vtbl+0x94
45 
46  // members
51  std::uint64_t unk130; // 130
52  private:
53  KEEP_FOR_RE()
54  };
55 #ifndef SKYRIMVR
56  static_assert(sizeof(NiGeometry) == 0x138);
57 #else
58  static_assert(sizeof(NiGeometry) == 0x160);
59 #endif
60 }
#define KEEP_FOR_RE()
Definition: PCH.h:713
Definition: NiAVObject.h:57
Definition: NiAlphaProperty.h:8
Definition: NiCloningProcess.h:10
Definition: NiGeometryData.h:16
Definition: NiGeometry.h:11
bool RegisterStreamables(NiStream &a_stream) override
~NiGeometry() override
virtual void * Unk_38(void)
void LinkObject(NiStream &a_stream) override
void SetSelectiveUpdateFlags(bool &a_selectiveUpdate, bool a_selectiveUpdateTransforms, bool &a_rigid) override
NiPointer< NiSkinInstance > spSkinInstance
Definition: NiGeometry.h:49
void UpdateWorldBound() override
void UpdateRigidDownwardPass(NiUpdateData &a_data, std::uint32_t a_arg2) override
void UpdateSelectedDownwardPass(NiUpdateData &a_data, std::uint32_t a_arg2) override
static constexpr auto RTTI
Definition: NiGeometry.h:13
virtual void Unk_35(void)
static constexpr auto VTABLE
Definition: NiGeometry.h:15
static constexpr auto Ni_RTTI
Definition: NiGeometry.h:14
std::uint64_t unk130
Definition: NiGeometry.h:51
void AttachProperty(NiAlphaProperty *a_property) override
void UpdateDownwardPass(NiUpdateData &a_data, std::uint32_t a_arg2) override
void LoadBinary(NiStream &a_stream) override
NiPointer< NiProperty > spEffectState
Definition: NiGeometry.h:48
virtual void * Unk_3A(void)
virtual void Unk_36(void)
NiGeometry * AsNiGeometry()
Definition: NiGeometry.h:35
bool IsEqual(NiObject *a_object) override
NiPointer< NiGeometryData > spModelData
Definition: NiGeometry.h:50
void ProcessClone(NiCloningProcess &a_cloning) override
const NiRTTI * GetRTTI() const override
void SaveBinary(NiStream &a_stream) override
virtual void SetGeometryData(NiGeometryData *unk1)
virtual void Unk_37(void)
void PostLinkObject([[maybe_unused]] NiStream &a_stream) override
NiPointer< NiProperty > spPropertyState
Definition: NiGeometry.h:47
Definition: NiObject.h:37
Definition: NiSmartPointer.h:9
Definition: NiRTTI.h:6
Definition: NiStream.h:29
Definition: NiAVObject.h:28
Definition: AbsorbEffect.h:6
constexpr REL::ID NiRTTI_NiGeometry(static_cast< std::uint64_t >(523978))
constexpr std::array< REL::ID, 1 > VTABLE_NiGeometry
Definition: Offsets_VTABLE.h:12215
constexpr REL::ID RTTI_NiGeometry(static_cast< std::uint64_t >(690443))