CommonLibSSE (powerof3)
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 constexpr auto Ni_RTTI = NiRTTI_BSTempEffectParticle;
23  inline static constexpr auto VTABLE = VTABLE_BSTempEffectParticle;
24  inline static constexpr auto TYPE = TEMP_EFFECT_TYPE::kParticle;
25 
26  ~BSTempEffectParticle() override; // 00
27 
28  // override (BSTempEffect)
29  const NiRTTI* GetRTTI() const override; // 02
30  void Detach() override; // 27
31  bool Update(float a_arg1) override; // 28
32  [[nodiscard]] TEMP_EFFECT_TYPE GetType() const override; // 2C - { return kParticle; }
33 
34  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)
35  {
36  using func_t = BSTempEffectParticle* (*)(TESObjectCELL*, float, const char*, const NiPoint3&, const NiPoint3&, float, std::uint32_t, NiAVObject*);
37  static REL::Relocation<func_t> func{ RELOCATION_ID(29218, 30071) };
38  return func(a_cell, a_lifetime, a_modelName, a_rotation, a_position, a_scale, a_flags, a_target);
39  }
40  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)
41  {
42  using func_t = BSTempEffectParticle* (*)(TESObjectCELL*, float, const char*, const NiMatrix3&, const NiPoint3&, float, std::uint32_t, NiAVObject*);
43  static REL::Relocation<func_t> func{ RELOCATION_ID(29219, 30072) };
44  return func(a_cell, a_lifetime, a_modelName, a_normal, a_position, a_scale, a_flags, a_target);
45  }
46 
47  // members
50  const char* modelName; // 40
53  std::uint32_t flags; // 84
56  std::uint32_t padC4; // C4
60  std::uint8_t unkE8; // E8
61  std::uint8_t padE9; // E9
62  std::uint16_t unkEA; // EA
63  std::uint32_t unkEC; // EC
64  };
65  static_assert(sizeof(BSTempEffectParticle) == 0xF0);
66 };
#define RELOCATION_ID(SE, AE)
Definition: PCH.h:505
Definition: Relocation.h:210
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:40
NiPointer< NiAVObject > spawnNode
Definition: BSTempEffectParticle.h:54
NiPointer< NiNode > dynamicCellNode
Definition: BSTempEffectParticle.h:51
BSSoundHandle sound2
Definition: BSTempEffectParticle.h:59
static constexpr auto VTABLE
Definition: BSTempEffectParticle.h:23
static constexpr auto TYPE
Definition: BSTempEffectParticle.h:24
const char * modelName
Definition: BSTempEffectParticle.h:50
std::uint32_t padC4
Definition: BSTempEffectParticle.h:56
std::uint32_t flags
Definition: BSTempEffectParticle.h:53
NiTransform spawnNodeTransform
Definition: BSTempEffectParticle.h:55
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:34
static constexpr auto RTTI
Definition: BSTempEffectParticle.h:21
void Detach() override
std::uint8_t padE9
Definition: BSTempEffectParticle.h:61
NiPointer< NiAVObject > particleObject
Definition: BSTempEffectParticle.h:48
std::uint16_t unkEA
Definition: BSTempEffectParticle.h:62
std::uint8_t unkE8
Definition: BSTempEffectParticle.h:60
BGSImpactData * impactData
Definition: BSTempEffectParticle.h:57
~BSTempEffectParticle() override
std::uint32_t unkEC
Definition: BSTempEffectParticle.h:63
NiTransform particleEffectTransform
Definition: BSTempEffectParticle.h:52
BSSoundHandle sound1
Definition: BSTempEffectParticle.h:58
static constexpr auto Ni_RTTI
Definition: BSTempEffectParticle.h:22
BSTSmartPointer< BGSParticleObjectCloneTask > cloneTask
Definition: BSTempEffectParticle.h:49
TEMP_EFFECT_TYPE GetType() const override
Definition: BSTempEffect.h:29
Definition: NiAVObject.h:51
Definition: NiMatrix3.h:8
Definition: NiPoint3.h:6
Definition: NiSmartPointer.h:9
Definition: NiRTTI.h:6
Definition: NiTransform.h:9
Definition: TESObjectCELL.h:115
Definition: AbsorbEffect.h:6
TEMP_EFFECT_TYPE
Definition: BSTempEffect.h:13
constexpr REL::ID NiRTTI_BSTempEffectParticle(static_cast< std::uint64_t >(515935))
constexpr std::array< REL::ID, 1 > VTABLE_BSTempEffectParticle
Definition: Offsets_VTABLE.h:10541
constexpr REL::ID RTTI_BSTempEffectParticle(static_cast< std::uint64_t >(686052))
Definition: BSSoundHandle.h:10