CommonLibSSE (Parapets fork)
BSGeometry.h
Go to the documentation of this file.
1 #pragma once
2 
3 #include "RE/N/NiAVObject.h"
4 #include "RE/N/NiSmartPointer.h"
5 
6 namespace RE
7 {
8  class BSMultiIndexTriShape;
9  class BSSkinnedDecalTriShape;
10  class NiProperty;
11  class NiSkinInstance;
12 
13  class BSGeometry : public NiAVObject
14  {
15  public:
16  inline static constexpr auto RTTI = RTTI_BSGeometry;
17  inline static constexpr auto Ni_RTTI = NiRTTI_BSGeometry;
18 
19  enum class Type
20  {
21  kGeometry = 0,
22  kParticles = 1,
23  kStripParticles = 2,
24  kTriShape = 3,
25  kDynamicTriShape = 4,
26  kMeshLODTriShape = 5,
33  kLines = 12,
34  kDynamicLines = 13,
35  kInstanceGroup = 14
36  };
37 
38  struct States
39  {
40  enum State
41  {
44  kTotal
45  };
46  };
47 
48  ~BSGeometry() override; // 00
49 
50  // override (NiAVObject)
51  const NiRTTI* GetRTTI() const override; // 02
52  BSGeometry* AsGeometry() override; // 07 - { return this; }
53  void LoadBinary(NiStream& a_stream) override; // 18
54  void LinkObject(NiStream& a_stream) override; // 19
55  bool RegisterStreamables(NiStream& a_stream) override; // 1A
56  void SaveBinary(NiStream& a_stream) override; // 1B
57  bool IsEqual(NiObject* a_object) override; // 1C - { return false; }
58  void ProcessClone(NiCloningProcess& a_cloning) override; // 1D
59  void PostLinkObject(NiStream& a_stream) override; // 1E
60  void AttachProperty(NiAlphaProperty* a_property) override; // 27
61  void SetSelectiveUpdateFlags(bool& a_selectiveUpdate, bool a_selectiveUpdateTransforms, bool& a_rigid) override; // 2B
62  void UpdateDownwardPass(NiUpdateData& a_data, std::uint32_t a_arg2) override; // 2C
63  void UpdateSelectedDownwardPass(NiUpdateData& a_data, std::uint32_t a_arg2) override; // 2D
64  void UpdateRigidDownwardPass(NiUpdateData& a_data, std::uint32_t a_arg2) override; // 2E
65  void UpdateWorldBound() override; // 2F
66  void OnVisible(NiCullingProcess& a_process) override; // 34
67 
68  // add
69  virtual BSMultiIndexTriShape* AsMultiIndexTriShape(); // 35 - { return 0; }
70  virtual BSSkinnedDecalTriShape* AsSkinnedDecalTriShape(); // 36 - { return 0; }
71  virtual void Unk_37(void); // 37 - { return 0; }
72 
73  // members
75 #ifdef SKYRIMVR
76  NiPoint3 unkVR09; // VR offset moved by 0x18
77  NiPoint3 unkVR10;
78 #endif
81  void* rendererData; // 138
82  void* unk140; // 140 - smart ptr
83  std::uint64_t vertexDesc; // 148
85  std::uint8_t pad151; // 151
86  std::uint16_t pad152; // 152
87  std::uint32_t pad154; // 154
88  };
89 #ifndef SKYRIMVR
90  static_assert(sizeof(BSGeometry) == 0x158);
91 #else
92  static_assert(sizeof(BSGeometry) == 0x198);
93 #endif
94 }
Definition: BSGeometry.h:14
Type
Definition: BSGeometry.h:20
void SetSelectiveUpdateFlags(bool &a_selectiveUpdate, bool a_selectiveUpdateTransforms, bool &a_rigid) override
void UpdateRigidDownwardPass(NiUpdateData &a_data, std::uint32_t a_arg2) override
NiBound modelBound
Definition: BSGeometry.h:74
void SaveBinary(NiStream &a_stream) override
std::uint64_t vertexDesc
Definition: BSGeometry.h:83
void OnVisible(NiCullingProcess &a_process) override
bool IsEqual(NiObject *a_object) override
NiPointer< NiSkinInstance > skinInstance
Definition: BSGeometry.h:80
static constexpr auto RTTI
Definition: BSGeometry.h:16
void ProcessClone(NiCloningProcess &a_cloning) override
const NiRTTI * GetRTTI() const override
bool RegisterStreamables(NiStream &a_stream) override
std::uint8_t pad151
Definition: BSGeometry.h:85
virtual BSSkinnedDecalTriShape * AsSkinnedDecalTriShape()
virtual BSMultiIndexTriShape * AsMultiIndexTriShape()
NiPointer< NiProperty > properties[States::kTotal]
Definition: BSGeometry.h:79
virtual void Unk_37(void)
~BSGeometry() override
void LinkObject(NiStream &a_stream) override
void UpdateWorldBound() override
void UpdateSelectedDownwardPass(NiUpdateData &a_data, std::uint32_t a_arg2) override
void PostLinkObject(NiStream &a_stream) override
stl::enumeration< Type, std::uint8_t > type
Definition: BSGeometry.h:84
void UpdateDownwardPass(NiUpdateData &a_data, std::uint32_t a_arg2) override
std::uint16_t pad152
Definition: BSGeometry.h:86
BSGeometry * AsGeometry() override
void LoadBinary(NiStream &a_stream) override
void AttachProperty(NiAlphaProperty *a_property) override
void * rendererData
Definition: BSGeometry.h:81
void * unk140
Definition: BSGeometry.h:82
static constexpr auto Ni_RTTI
Definition: BSGeometry.h:17
std::uint32_t pad154
Definition: BSGeometry.h:87
Definition: BSMultiIndexTriShape.h:17
Definition: NiAVObject.h:45
Definition: NiAlphaProperty.h:8
Definition: NiBound.h:8
Definition: NiCullingProcess.h:34
Definition: NiObject.h:37
Definition: NiPoint3.h:6
Definition: NiSmartPointer.h:9
Definition: NiRTTI.h:6
Definition: NiStream.h:6
Definition: NiAVObject.h:22
Definition: AbsorbEffect.h:6
constexpr REL::ID NiRTTI_BSGeometry
Definition: Offsets_NiRTTI.h:49
constexpr REL::ID RTTI_BSGeometry
Definition: Offsets_RTTI.h:1720
Definition: BSGeometry.h:39
State
Definition: BSGeometry.h:41
@ kProperty
Definition: BSGeometry.h:42
@ kEffect
Definition: BSGeometry.h:43
@ kTotal
Definition: BSGeometry.h:44