CommonLibSSE NG
BSMultiStreamInstanceTriShape.h
Go to the documentation of this file.
1 #pragma once
2 
4 
5 namespace RE
6 {
8  {
9  public:
10  inline static constexpr auto RTTI = RTTI_BSMultiStreamInstanceTriShape;
12 
14  {
15 #define RUNTIME_DATA_CONTENT \
16  BSTArray<void*> unk160; /* 00 */ \
17  std::uint32_t unk178; /* 18 */ \
18  std::uint32_t unk17C; /* 1C */ \
19  std::uint64_t unk180; /* 20 */ \
20  std::uint64_t unk188; /* 28 */ \
21  std::uint32_t unk190; /* 30 */ \
22  std::uint32_t unk194; /* 34 */ \
23  std::uint32_t unk198; /* 38 */
24 
26  };
27  static_assert(sizeof(MULTISTREAM_TRISHAPE_RUNTIME_DATA) == 0x40);
28 
30 
31  // override (BSInstanceTriShape)
32  const NiRTTI* GetRTTI() const override; // 02
33  NiObject* CreateClone(NiCloningProcess& a_cloning) override; // 17
34 #if !defined(ENABLE_SKYRIM_VR) || (!defined(ENABLE_SKYRIM_AE) && !defined(ENABLE_SKYRIM_VR))
35  // The following are virtual functions past the point where VR compatibility breaks.
36  void OnVisible(NiCullingProcess& a_process) override; // 34
37 
38  // overrides for BSTriShape
39  void Unk_37(void) override; // 37
40  void BeginAddingInstances(std::uint32_t a_numFloatsPerInstance) override; // 38
41  void AddInstances(std::uint32_t a_numFloatsPerInstance, std::uint16_t& a_instanceData) override; // 39
42  void DoneAddingInstances(BSTArray<std::uint32_t>& a_instances) override; // 3A
43  bool GetIsAddingInstances() override; // 3B
44  std::uint32_t AddGroup(std::uint32_t a_numInstances, std::uint16_t& a_instanceData, std::uint32_t a_arg3, float a_arg4) override; // 3C
45  void RemoveGroup(std::uint32_t a_numInstance) override; // 3D
46 #endif
47 
49  {
50  return REL::RelocateMember<MULTISTREAM_TRISHAPE_RUNTIME_DATA>(this, 0x160, 0x1A8);
51  }
52 
53  [[nodiscard]] inline const MULTISTREAM_TRISHAPE_RUNTIME_DATA& GetMultiStreamTrishapeRuntimeData() const noexcept
54  {
55  return REL::RelocateMember<MULTISTREAM_TRISHAPE_RUNTIME_DATA>(this, 0x160, 0x1A8);
56  }
57 
58  // members
59 #ifndef SKYRIM_CROSS_VR
60  RUNTIME_DATA_CONTENT // 160, 1A8
61 #endif
62  };
63 #ifndef ENABLE_SKYRIM_VR
64  static_assert(sizeof(BSMultiStreamInstanceTriShape) == 0x1A0);
65 #elif !defined(ENABLE_SKYRIM_AE) && !defined(ENABLE_SKYRIM_SE)
66  static_assert(sizeof(BSMultiStreamInstanceTriShape) == 0x1E8);
67 #endif
68 }
69 #undef RUNTIME_DATA_CONTENT
RUNTIME_DATA_CONTENT
Definition: BSGeometry.h:141
Definition: BSInstanceTriShape.h:9
Definition: BSMultiStreamInstanceTriShape.h:8
void BeginAddingInstances(std::uint32_t a_numFloatsPerInstance) override
MULTISTREAM_TRISHAPE_RUNTIME_DATA & GetMultiStreamTrishapeRuntimeData() noexcept
Definition: BSMultiStreamInstanceTriShape.h:48
void DoneAddingInstances(BSTArray< std::uint32_t > &a_instances) override
const NiRTTI * GetRTTI() const override
std::uint32_t AddGroup(std::uint32_t a_numInstances, std::uint16_t &a_instanceData, std::uint32_t a_arg3, float a_arg4) override
static constexpr auto RTTI
Definition: BSMultiStreamInstanceTriShape.h:10
static auto Ni_RTTI
Definition: BSMultiStreamInstanceTriShape.h:11
void OnVisible(NiCullingProcess &a_process) override
void RemoveGroup(std::uint32_t a_numInstance) override
const MULTISTREAM_TRISHAPE_RUNTIME_DATA & GetMultiStreamTrishapeRuntimeData() const noexcept
Definition: BSMultiStreamInstanceTriShape.h:53
void AddInstances(std::uint32_t a_numFloatsPerInstance, std::uint16_t &a_instanceData) override
NiObject * CreateClone(NiCloningProcess &a_cloning) override
Definition: NiCloningProcess.h:10
Definition: NiCullingProcess.h:34
Definition: NiObject.h:37
Definition: NiRTTI.h:6
Definition: AbsorbEffect.h:6
constexpr REL::VariantID NiRTTI_BSMultiStreamInstanceTriShape(524606, 411246, 0x317c968)
constexpr REL::VariantID RTTI_BSMultiStreamInstanceTriShape(690705, 398560, 0x1f65e58)
Definition: BSMultiStreamInstanceTriShape.h:14