CommonLibSSE NG
NiPSysModifier.h
Go to the documentation of this file.
1 #pragma once
2 
3 #include "RE/B/BSFixedString.h"
4 #include "RE/N/NiObject.h"
5 
6 namespace RE
7 {
8  class NiColorA;
9  class NiParticleSystem;
10  class NiPoint3;
11  class NiPSysData;
12 
13  class NiPSysModifier : public NiObject
14  {
15  public:
16  inline static constexpr auto RTTI = RTTI_NiPSysModifier;
17  inline static constexpr auto Ni_RTTI = NiRTTI_NiPSysModifier;
18 
19  enum class ORDER
20  {
22  kBSLOD = 1,
23  kEmitter = 1000,
24  kSpawn = 2000,
25  kGeneral = 3000,
26  kForce = 4000,
27  kCollider = 5000,
28  kPosUpdate = 6000,
29  kPostPosUpdate = 6500,
30  kBoundUpdate = 7000,
31  kBSStripUpdate = 8000
32  };
33 
34  ~NiPSysModifier() override; // 00
35 
36  // override (NiObject)
37  const NiRTTI* GetRTTI() const override; // 02
38  void LoadBinary(NiStream& a_stream) override; // 18
39  void LinkObject(NiStream& a_stream) override; // 19
40  bool RegisterStreamables(NiStream& a_stream) override; // 1A
41  void SaveBinary(NiStream& a_stream) override; // 1B
42  bool IsEqual(NiObject* a_object) override; // 1C - { return false; }
43  void ProcessClone(NiCloningProcess& a_cloning) override; // 1D
44 
45  // add
46  virtual bool Update(float a_time, NiPSysData* a_particleData, NiPoint3* a_position, NiPoint3* a_radii, NiColorA* a_rotation) = 0; // 25
47  virtual void Initialize(NiPSysData* a_particleData, std::uint16_t, NiPoint3*); // 26
48  virtual void HandleReset(); // 27
49  virtual void SetActive(bool a_active); // 28
50  virtual void SetSystemPointer(NiParticleSystem* a_target); // 29
51 
52  // members
55  std::uint32_t pad1C; // 1C
57  bool active; // 28
58  std::uint8_t pad29; // 29
59  std::uint16_t pad2A; // 29
60  std::uint32_t pad2C; // 29
61  };
62  static_assert(sizeof(NiPSysModifier) == 0x30);
63 }
Definition: NiCloningProcess.h:10
Definition: NiColor.h:276
Definition: NiObject.h:37
Definition: NiPSysData.h:22
Definition: NiPSysModifier.h:14
virtual void SetActive(bool a_active)
virtual void HandleReset()
ORDER
Definition: NiPSysModifier.h:20
BSFixedString name
Definition: NiPSysModifier.h:53
static constexpr auto RTTI
Definition: NiPSysModifier.h:16
bool active
Definition: NiPSysModifier.h:57
static constexpr auto Ni_RTTI
Definition: NiPSysModifier.h:17
virtual void SetSystemPointer(NiParticleSystem *a_target)
virtual bool Update(float a_time, NiPSysData *a_particleData, NiPoint3 *a_position, NiPoint3 *a_radii, NiColorA *a_rotation)=0
~NiPSysModifier() override
virtual void Initialize(NiPSysData *a_particleData, std::uint16_t, NiPoint3 *)
std::uint32_t pad1C
Definition: NiPSysModifier.h:55
void LinkObject(NiStream &a_stream) override
std::uint16_t pad2A
Definition: NiPSysModifier.h:59
std::uint32_t pad2C
Definition: NiPSysModifier.h:60
bool RegisterStreamables(NiStream &a_stream) override
void SaveBinary(NiStream &a_stream) override
stl::enumeration< ORDER, std::uint32_t > order
Definition: NiPSysModifier.h:54
void ProcessClone(NiCloningProcess &a_cloning) override
std::uint8_t pad29
Definition: NiPSysModifier.h:58
NiParticleSystem * target
Definition: NiPSysModifier.h:56
void LoadBinary(NiStream &a_stream) override
bool IsEqual(NiObject *a_object) override
const NiRTTI * GetRTTI() const override
Definition: NiParticleSystem.h:11
Definition: NiPoint3.h:6
Definition: NiRTTI.h:6
Definition: NiStream.h:29
Definition: AbsorbEffect.h:6
constexpr REL::VariantID RTTI_NiPSysModifier(690586, 398441, 0x1f63f60)
constexpr REL::VariantID NiRTTI_NiPSysModifier(524478, 411059, 0x316d8c8)