CommonLibSSE NG
BSMasterParticleSystem.h
Go to the documentation of this file.
1 #pragma once
2 
3 #include "RE/N/NiNode.h"
4 
5 namespace RE
6 {
7  class NiParticles;
8 
10  {
11  public:
12  inline static constexpr auto RTTI = RTTI_BSMasterParticleSystem;
13  inline static constexpr auto Ni_RTTI = NiRTTI_BSMasterParticleSystem;
14 
15  ~BSMasterParticleSystem() override; // 00
16 
17  // override (NiNode)
18  const NiRTTI* GetRTTI() const override; // 02
19  void LoadBinary(NiStream& a_stream) override; // 18
20  void LinkObject(NiStream& a_stream) override; // 19
21  bool RegisterStreamables(NiStream& a_stream) override; // 1A
22  void SaveBinary(NiStream& a_stream) override; // 1B
23  void PostLinkObject(NiStream& a_stream) override; // 1E
24  bool IsEqual(NiObject* a_object) override; // 1C
25 #ifndef SKYRIM_CROSS_VR
26  void UpdateDownwardPass(NiUpdateData& a_data, std::uint32_t a_arg2) override; // 2C
27  void UpdateSelectedDownwardPass(NiUpdateData& a_data, std::uint32_t a_arg2) override; // 2D
28  void UpdateRigidDownwardPass(NiUpdateData& a_data, std::uint32_t a_arg2) override; // 2E
29 #endif
30 
32  {
33 #define RUNTIME_DATA_CONTENT \
34  BSTArray<NiPointer<NiAVObject>> emitterObjs; /* 128 */ \
35  BSTArray<NiParticles*> particles; /* 140 */ \
36  std::int32_t index; /* 158 */ \
37  std::uint32_t unk15C; /* 15C */ \
38  std::uint16_t unk160; /* 160 */ \
39  std::uint16_t maxEmitterObj; /* 162 */ \
40  std::uint16_t maxParticlesPerFrame; /* 164 */ \
41  bool destroyWhenNotInUse; /* 166 */ \
42  std::uint8_t pad167; /* 167 */
43 
45  };
46 
48  {
49  return REL::RelocateMember<MASTER_PARTICLE_SYSTEM_RUNTIME_DATA>(this, 0x128, 0x150);
50  }
51 
52  [[nodiscard]] inline const MASTER_PARTICLE_SYSTEM_RUNTIME_DATA& GetMasterParticleSystemRuntimeData() const noexcept
53  {
54  return REL::RelocateMember<MASTER_PARTICLE_SYSTEM_RUNTIME_DATA>(this, 0x128, 0x150);
55  }
56 
57  // members
58 #ifndef SKYRIM_CROSS_VR
59  RUNTIME_DATA_CONTENT // 128, 150
60 #endif
61  };
62 }
63 #undef RUNTIME_DATA_CONTENT
#define RUNTIME_DATA_CONTENT
Definition: BSMasterParticleSystem.h:33
Definition: BSMasterParticleSystem.h:10
void LinkObject(NiStream &a_stream) override
void SaveBinary(NiStream &a_stream) override
MASTER_PARTICLE_SYSTEM_RUNTIME_DATA & GetMasterParticleSystemRuntimeData() noexcept
Definition: BSMasterParticleSystem.h:47
const MASTER_PARTICLE_SYSTEM_RUNTIME_DATA & GetMasterParticleSystemRuntimeData() const noexcept
Definition: BSMasterParticleSystem.h:52
void UpdateDownwardPass(NiUpdateData &a_data, std::uint32_t a_arg2) override
void UpdateSelectedDownwardPass(NiUpdateData &a_data, std::uint32_t a_arg2) override
void UpdateRigidDownwardPass(NiUpdateData &a_data, std::uint32_t a_arg2) override
static constexpr auto Ni_RTTI
Definition: BSMasterParticleSystem.h:13
~BSMasterParticleSystem() override
static constexpr auto RTTI
Definition: BSMasterParticleSystem.h:12
void LoadBinary(NiStream &a_stream) override
const NiRTTI * GetRTTI() const override
bool RegisterStreamables(NiStream &a_stream) override
bool IsEqual(NiObject *a_object) override
void PostLinkObject(NiStream &a_stream) override
Definition: NiNode.h:12
Definition: NiObject.h:37
Definition: NiRTTI.h:6
Definition: NiStream.h:29
Definition: NiAVObject.h:25
Definition: AbsorbEffect.h:6
constexpr REL::VariantID NiRTTI_BSMasterParticleSystem(524698, 411318, 0x317e618)
constexpr REL::VariantID RTTI_BSMasterParticleSystem(690732, 398587, 0x1f66450)