CommonLibSSE NG
BSTempEffectParticle.h
Go to the documentation of this file.
1 #pragma once
2 
3 #include "RE/B/BSSoundHandle.h"
4 #include "RE/B/BSTSmartPointer.h"
5 #include "RE/B/BSTempEffect.h"
6 #include "RE/N/NiMatrix3.h"
7 #include "RE/N/NiPoint3.h"
8 #include "RE/N/NiSmartPointer.h"
9 #include "RE/N/NiTransform.h"
10 
11 namespace RE
12 {
13  class BGSImpactData;
14  class BGSParticleObjectCloneTask;
15  class NiAVObject;
16  class NiNode;
17 
19  {
20  public:
21  inline static constexpr auto RTTI = RTTI_BSTempEffectParticle;
22  inline static auto Ni_RTTI = NiRTTI_BSTempEffectParticle;
23  inline static constexpr auto TYPE = TEMP_EFFECT_TYPE::kParticle;
24 
25  ~BSTempEffectParticle() override; // 00
26 
27  // override (BSTempEffect)
28  const NiRTTI* GetRTTI() const override; // 02
29  void Detach() override; // 27
30  bool Update(float a_arg1) override; // 28
31  [[nodiscard]] TEMP_EFFECT_TYPE GetType() const override; // 2C - { return kParticle; }
32 
33  static BSTempEffectParticle* Spawn(TESObjectCELL* a_cell, float a_lifetime, const char* a_modelName, const NiPoint3& a_rotation, const NiPoint3& a_position, float a_scale, std::uint32_t a_flags, NiAVObject* a_target)
34  {
35  using func_t = BSTempEffectParticle* (*)(TESObjectCELL*, float, const char*, const NiPoint3&, const NiPoint3&, float, std::uint32_t, NiAVObject*);
36  REL::Relocation<func_t> func{ RELOCATION_ID(29218, 30071) };
37  return func(a_cell, a_lifetime, a_modelName, a_rotation, a_position, a_scale, a_flags, a_target);
38  }
39  static BSTempEffectParticle* Spawn(TESObjectCELL* a_cell, float a_lifetime, const char* a_modelName, const NiMatrix3& a_normal, const NiPoint3& a_position, float a_scale, std::uint32_t a_flags, NiAVObject* a_target)
40  {
41  using func_t = BSTempEffectParticle* (*)(TESObjectCELL*, float, const char*, const NiMatrix3&, const NiPoint3&, float, std::uint32_t, NiAVObject*);
42  REL::Relocation<func_t> func{ RELOCATION_ID(29219, 30072) };
43  return func(a_cell, a_lifetime, a_modelName, a_normal, a_position, a_scale, a_flags, a_target);
44  }
45 
46  // members
49  const char* modelName; // 40
52  std::uint32_t flags; // 84
55  std::uint32_t padC4; // C4
59  std::uint8_t unkE8; // E8
60  std::uint8_t padE9; // E9
61  std::uint16_t unkEA; // EA
62  std::uint32_t unkEC; // EC
63  };
64  static_assert(sizeof(BSTempEffectParticle) == 0xF0);
65 };
#define RELOCATION_ID(a_se, a_ae)
Definition: PCH.h:724
Definition: Relocation.h:204
Definition: BGSImpactData.h:16
Definition: BSTempEffectParticle.h:19
const NiRTTI * GetRTTI() const override
static BSTempEffectParticle * Spawn(TESObjectCELL *a_cell, float a_lifetime, const char *a_modelName, const NiMatrix3 &a_normal, const NiPoint3 &a_position, float a_scale, std::uint32_t a_flags, NiAVObject *a_target)
Definition: BSTempEffectParticle.h:39
NiPointer< NiAVObject > spawnNode
Definition: BSTempEffectParticle.h:53
NiPointer< NiNode > dynamicCellNode
Definition: BSTempEffectParticle.h:50
BSSoundHandle sound2
Definition: BSTempEffectParticle.h:58
static constexpr auto TYPE
Definition: BSTempEffectParticle.h:23
const char * modelName
Definition: BSTempEffectParticle.h:49
std::uint32_t padC4
Definition: BSTempEffectParticle.h:55
std::uint32_t flags
Definition: BSTempEffectParticle.h:52
NiTransform spawnNodeTransform
Definition: BSTempEffectParticle.h:54
bool Update(float a_arg1) override
static BSTempEffectParticle * Spawn(TESObjectCELL *a_cell, float a_lifetime, const char *a_modelName, const NiPoint3 &a_rotation, const NiPoint3 &a_position, float a_scale, std::uint32_t a_flags, NiAVObject *a_target)
Definition: BSTempEffectParticle.h:33
static constexpr auto RTTI
Definition: BSTempEffectParticle.h:21
void Detach() override
std::uint8_t padE9
Definition: BSTempEffectParticle.h:60
NiPointer< NiAVObject > particleObject
Definition: BSTempEffectParticle.h:47
std::uint16_t unkEA
Definition: BSTempEffectParticle.h:61
std::uint8_t unkE8
Definition: BSTempEffectParticle.h:59
BGSImpactData * impactData
Definition: BSTempEffectParticle.h:56
~BSTempEffectParticle() override
static auto Ni_RTTI
Definition: BSTempEffectParticle.h:22
std::uint32_t unkEC
Definition: BSTempEffectParticle.h:62
NiTransform particleEffectTransform
Definition: BSTempEffectParticle.h:51
BSSoundHandle sound1
Definition: BSTempEffectParticle.h:57
BSTSmartPointer< BGSParticleObjectCloneTask > cloneTask
Definition: BSTempEffectParticle.h:48
TEMP_EFFECT_TYPE GetType() const override
Definition: BSTempEffect.h:29
Definition: NiAVObject.h:50
Definition: NiMatrix3.h:8
Definition: NiPoint3.h:6
Definition: NiSmartPointer.h:9
Definition: NiRTTI.h:6
Definition: NiTransform.h:9
Definition: TESObjectCELL.h:116
Definition: AbsorbEffect.h:6
TEMP_EFFECT_TYPE
Definition: BSTempEffect.h:13
constexpr REL::VariantID NiRTTI_BSTempEffectParticle(515935, 402032, 0x2fd2468)
constexpr REL::VariantID RTTI_BSTempEffectParticle(686052, 393860, 0x1ef5158)
Definition: BSSoundHandle.h:10