CommonLibSSE NG
ShaderReferenceEffect.h
Go to the documentation of this file.
1 #pragma once
2 
3 #include "RE/B/BSSoundHandle.h"
4 #include "RE/B/BSTArray.h"
5 #include "RE/N/NiSmartPointer.h"
6 #include "RE/R/ReferenceEffect.h"
7 
8 namespace RE
9 {
10  class BSEffectShaderData;
11  class BSParticleShaderObjectEmitter;
12  class BSParticleShaderProperty;
13  class NiAVObject;
14  class NiSourceTexture;
15  class TESBoundObject;
16  class TESEffectShader;
17  class BSEffectShaderData;
18 
20  {
21  public:
22  inline static constexpr auto RTTI = RTTI_ShaderReferenceEffect;
23  inline static auto Ni_RTTI = NiRTTI_ShaderReferenceEffect;
24  inline static constexpr auto VTABLE = VTABLE_ShaderReferenceEffect;
25  inline static constexpr auto TYPE = TEMP_EFFECT_TYPE::kRefShader;
26 
27  enum class Flag
28  {
29  kNone = 0,
30  kVisible = 1 << 0,
31  kInterfaceEffect = 1 << 1,
32  kAllowTargetRoot = 1 << 7
33  };
34 
36  {
37  std::uint64_t unk00; // 00
39  };
40  static_assert(sizeof(TextureRequest) == 0x10);
41 
43  {
46  };
47  static_assert(sizeof(ParticleShader) == 0x10);
48 
49  ~ShaderReferenceEffect() override; // 00
50 
51  // override (ReferenceEffect)
52  const NiRTTI* GetRTTI() const override; // 02
53  bool Update(float a_arg1) override; // 28
54  NiAVObject* Get3D() const override; // 29 - { return lastRootNode.get(); }
55  TEMP_EFFECT_TYPE GetType() const override; // 2C - { return 10; }
56  void SaveGame(BGSSaveGameBuffer* a_buf) override; // 2D
57  void LoadGame(BGSLoadGameBuffer* a_buf) override; // 2E
58  void FinishLoadGame(BGSLoadGameBuffer* a_buf) override; // 2F - { return ReferenceEffect::Unk_2F(); }
59  bool IsInterfaceEffect() const override; // 30 - { return (unk130 >> 1) & 1; }
60  void SetInterfaceEffect(bool a_set) override; // 31
61  bool GetStackable() const override; // 32 - { return true; }
62  bool GetStackableMatch(BSTempEffect* a_effect) const override; // 33
63  void Push() override; // 34 - { if (effectShaderData) ++pushCount; }
64  void Pop() override; // 35
65  void Init() override; // 36
66  void Suspend() override; // 37
67  void Resume() override; // 38
68  void ClearTarget() override; // 39
69  void UpdatePosition() override; // 3B
70  NiAVObject* GetAttachRoot() override; // 3C
71  void DetachImpl() override; // 3E
72 
73  // members
78  BSTArray<void*> unk0A8; // 0A8 - smart ptrs
80  std::uint32_t pad0CC; // 0CC
90  NiPointer<NiAVObject> targetRoot; // 118 - smart ptr
91  float alphaTimer; // 120
92  float addonAlpha; // 124 - 1.0f
93  float addonScale; // 128 - 1.0f
94  float effectShaderAge; // 12C
96  std::uint32_t pushCount; // 134
97  };
98  static_assert(sizeof(ShaderReferenceEffect) == 0x138);
99 }
Definition: BGSLoadGameBuffer.h:6
Definition: BGSSaveGameBuffer.h:10
Definition: BSEffectShaderData.h:16
Definition: BSTArray.h:377
Definition: BSTempEffect.h:29
Definition: NiAVObject.h:50
Definition: NiSmartPointer.h:9
Definition: NiRTTI.h:6
Definition: ReferenceEffect.h:12
Definition: ShaderReferenceEffect.h:20
Flag
Definition: ShaderReferenceEffect.h:28
std::uint32_t pushCount
Definition: ShaderReferenceEffect.h:96
bool GetStackableMatch(BSTempEffect *a_effect) const override
static constexpr auto TYPE
Definition: ShaderReferenceEffect.h:25
BSTArray< NiPointer< NiAVObject > > addonModels
Definition: ShaderReferenceEffect.h:75
float addonScale
Definition: ShaderReferenceEffect.h:93
TESEffectShader * effectData
Definition: ShaderReferenceEffect.h:88
NiPointer< NiAVObject > lastRootNode
Definition: ShaderReferenceEffect.h:86
BSTArray< void * > unk078
Definition: ShaderReferenceEffect.h:76
void UpdatePosition() override
void DetachImpl() override
BSEffectShaderData * effectShaderData
Definition: ShaderReferenceEffect.h:89
NiPointer< NiAVObject > targetRoot
Definition: ShaderReferenceEffect.h:90
bool Update(float a_arg1) override
static constexpr auto VTABLE
Definition: ShaderReferenceEffect.h:24
stl::enumeration< Flag, std::uint32_t > flags
Definition: ShaderReferenceEffect.h:95
float alphaTimer
Definition: ShaderReferenceEffect.h:91
~ShaderReferenceEffect() override
NiAVObject * GetAttachRoot() override
const NiRTTI * GetRTTI() const override
NiPointer< NiSourceTexture > particleShaderTexture
Definition: ShaderReferenceEffect.h:81
NiPointer< NiSourceTexture > holesTexture
Definition: ShaderReferenceEffect.h:84
void FinishLoadGame(BGSLoadGameBuffer *a_buf) override
std::uint32_t pad0CC
Definition: ShaderReferenceEffect.h:80
NiAVObject * Get3D() const override
static constexpr auto RTTI
Definition: ShaderReferenceEffect.h:22
static auto Ni_RTTI
Definition: ShaderReferenceEffect.h:23
BSTArray< TextureRequest > textureRequests
Definition: ShaderReferenceEffect.h:74
bool IsInterfaceEffect() const override
void Resume() override
void SaveGame(BGSSaveGameBuffer *a_buf) override
bool GetStackable() const override
float addonAlpha
Definition: ShaderReferenceEffect.h:92
NiPointer< NiSourceTexture > paletteTexture
Definition: ShaderReferenceEffect.h:85
TEMP_EFFECT_TYPE GetType() const override
void SetInterfaceEffect(bool a_set) override
TESBoundObject * wornObject
Definition: ShaderReferenceEffect.h:87
NiPointer< NiSourceTexture > particlePaletteTexture
Definition: ShaderReferenceEffect.h:82
NiPointer< NiSourceTexture > fillTexture
Definition: ShaderReferenceEffect.h:83
BSTArray< void * > unk0A8
Definition: ShaderReferenceEffect.h:78
void Suspend() override
BSSoundHandle soundHandle
Definition: ShaderReferenceEffect.h:79
BSTArray< ParticleShader > particleShaders
Definition: ShaderReferenceEffect.h:77
void LoadGame(BGSLoadGameBuffer *a_buf) override
float effectShaderAge
Definition: ShaderReferenceEffect.h:94
void ClearTarget() override
Definition: TESBoundObject.h:24
Definition: TESEffectShader.h:182
Definition: AbsorbEffect.h:6
TEMP_EFFECT_TYPE
Definition: BSTempEffect.h:13
constexpr REL::VariantID RTTI_ShaderReferenceEffect(686554, 394391, 0x1f01168)
constexpr std::array< REL::VariantID, 1 > VTABLE_ShaderReferenceEffect
Definition: Offsets_VTABLE.h:1935
constexpr REL::VariantID NiRTTI_ShaderReferenceEffect(516712, 402958, 0x2feacf8)
Definition: BSSoundHandle.h:10
Definition: ShaderReferenceEffect.h:43
NiPointer< BSParticleShaderObjectEmitter > particleEmitter
Definition: ShaderReferenceEffect.h:45
NiPointer< BSParticleShaderProperty > particleShaderProp
Definition: ShaderReferenceEffect.h:44
Definition: ShaderReferenceEffect.h:36
std::uint64_t unk00
Definition: ShaderReferenceEffect.h:37
NiPointer< NiSourceTexture > unk08
Definition: ShaderReferenceEffect.h:38