CommonLibSSE (powerof3)
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  inline static constexpr auto VTABLE = VTABLE_NiPSysModifier;
19 
20  enum class ORDER
21  {
23  kBSLOD = 1,
24  kEmitter = 1000,
25  kSpawn = 2000,
26  kGeneral = 3000,
27  kForce = 4000,
28  kCollider = 5000,
29  kPosUpdate = 6000,
30  kPostPosUpdate = 6500,
31  kBoundUpdate = 7000,
32  kBSStripUpdate = 8000
33  };
34 
35  ~NiPSysModifier() override; // 00
36 
37  // override (NiObject)
38  const NiRTTI* GetRTTI() const override; // 02
39  void LoadBinary(NiStream& a_stream) override; // 18
40  void LinkObject(NiStream& a_stream) override; // 19
41  bool RegisterStreamables(NiStream& a_stream) override; // 1A
42  void SaveBinary(NiStream& a_stream) override; // 1B
43  bool IsEqual(NiObject* a_object) override; // 1C - { return false; }
44  void ProcessClone(NiCloningProcess& a_cloning) override; // 1D
45 
46  // add
47  virtual bool Update(float a_time, NiPSysData* a_particleData, NiPoint3* a_position, NiPoint3* a_radii, NiColorA* a_rotation) = 0; // 25
48  virtual void Initialize(NiPSysData* a_particleData, std::uint16_t, NiPoint3*); // 26
49  virtual void HandleReset(); // 27
50  virtual void SetActive(bool a_active); // 28
51  virtual void SetSystemPointer(NiParticleSystem* a_target); // 29
52 
53  // members
56  std::uint32_t pad1C; // 1C
58  bool active; // 28
59  std::uint8_t pad29; // 29
60  std::uint16_t pad2A; // 29
61  std::uint32_t pad2C; // 29
62  };
63  static_assert(sizeof(NiPSysModifier) == 0x30);
64 }
Definition: NiCloningProcess.h:10
Definition: NiColor.h:281
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:21
BSFixedString name
Definition: NiPSysModifier.h:54
REX::EnumSet< ORDER, std::uint32_t > order
Definition: NiPSysModifier.h:55
static constexpr auto RTTI
Definition: NiPSysModifier.h:16
static constexpr auto VTABLE
Definition: NiPSysModifier.h:18
bool active
Definition: NiPSysModifier.h:58
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:56
void LinkObject(NiStream &a_stream) override
std::uint16_t pad2A
Definition: NiPSysModifier.h:60
std::uint32_t pad2C
Definition: NiPSysModifier.h:61
bool RegisterStreamables(NiStream &a_stream) override
void SaveBinary(NiStream &a_stream) override
void ProcessClone(NiCloningProcess &a_cloning) override
std::uint8_t pad29
Definition: NiPSysModifier.h:59
NiParticleSystem * target
Definition: NiPSysModifier.h:57
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 std::array< REL::ID, 1 > VTABLE_NiPSysModifier
Definition: Offsets_VTABLE.h:12280
constexpr REL::ID NiRTTI_NiPSysModifier(static_cast< std::uint64_t >(524478))
constexpr REL::ID RTTI_NiPSysModifier(static_cast< std::uint64_t >(690586))