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