CommonLibVR
ReferenceEffectController.h
Go to the documentation of this file.
1 #pragma once
2 
3 #include "RE/B/BSFixedString.h"
4 #include "RE/M/MemoryManager.h"
5 
6 namespace RE
7 {
8  class BGSArtObject;
9  class BGSLoadGameBuffer;
10  class BGSSaveGameBuffer;
11  class NiAVObject;
12  class NiNode;
13  class NiPoint3;
14  class ReferenceEffect;
15  class TESEffectShader;
16  class TESObjectREFR;
17 
19  {
20  public:
21  inline static constexpr auto RTTI = RTTI_ReferenceEffectController;
22  inline static constexpr auto VTABLE = VTABLE_ReferenceEffectController;
23 
24  virtual ~ReferenceEffectController() = default; // 00
25 
26  // add
27  virtual void HandleEvent(const BSFixedString& a_event); // 01 - { return; }
28  virtual float GetElapsedTime(); // 02 - { return 0.0; }
29  virtual float GetScale(); // 03 - { return 1.0; }
30  virtual void SwitchAttachedRoot(NiNode* a_root, NiNode* a_attachRoot); // 04 - { return; }
31  virtual const NiPoint3& GetSourcePosition(); // 05 - { return NiPoint3(); }
32  virtual bool GetUseSourcePosition(); // 06 - { return true; }
33  virtual bool GetNoInitialFlare(); // 07 - { return false; }
34  virtual bool GetEffectPersists(); // 08 - { return true; }
35  virtual bool GetGoryVisuals(); // 09 - { return false; }
36  virtual void RemoveHitEffect(ReferenceEffect* a_refEffect); // 0A - { return; }
37  virtual TESObjectREFR* GetTargetReference() = 0; // 0B
38  virtual BGSArtObject* GetHitEffectArt() = 0; // 0C
39  virtual TESEffectShader* GetHitEffectShader() = 0; // 0D
40  virtual bool GetManagerHandlesSaveLoad() = 0; // 0E
41  virtual NiAVObject* GetAttachRoot(); // 0F - { auto ref = GetTargetReference(); return ref ? ref->Get3D() : 0; }
42  virtual float GetParticleAttachExtent(); // 10 - { return 0.0; }
43  virtual bool GetUseParticleAttachExtent(); // 11 - { return false; }
44  virtual bool GetDoParticles(); // 12 - { return true; }
45  virtual bool GetParticlesUseLocalSpace(); // 13 - { return false; }
46  virtual bool GetUseRootWorldRotate(); // 14 - { return false; }
47  virtual bool GetIsRootActor(); // 15 - { auto ref = GetTargetReference(); return ref ? ref->formType = FormType::ActorCharacter : false; }
48  virtual bool GetClearWhenCellIsUnloaded(); // 16 - { return false; }
49  virtual bool EffectShouldFaceTarget(); // 17 - { return false; }
50  virtual TESObjectREFR* GetFacingTarget(); // 18 - { return 0; }
51  virtual bool GetShaderUseParentCell(); // 19 - { return true; }
52  virtual bool EffectAttachesToCamera(); // 1A - { return false; }
53  virtual bool EffectRotatesWithCamera(); // 1B - { return false; }
54  virtual bool GetAllowTargetRoot(); // 1C - { return true; }
55  virtual bool IsReadyForAttach(); // 1D - { return true; }
56  virtual void SetWindPoint(const NiPoint3& a_point); // 1E - { return; }
57  virtual const NiPoint3& GetWindPoint(); // 1F - { return NiPoint3(); }
58  virtual bool GetAllowNo3D(); // 20 - { return false; }
59  virtual void SaveGame(BGSSaveGameBuffer* a_buf); // 21 - { return; }
60  virtual void LoadGame(BGSLoadGameBuffer* a_buf); // 22 - { return; }
61 
62  void Start(ReferenceEffect** a_effectOut = nullptr);
63  void Stop();
64 
66 
67  private:
68  KEEP_FOR_RE()
69  };
70  static_assert(sizeof(ReferenceEffectController) == 0x8);
71 }
#define KEEP_FOR_RE()
Definition: PCH.h:713
Definition: BGSArtObject.h:12
Definition: BGSLoadGameBuffer.h:6
Definition: BGSSaveGameBuffer.h:10
Definition: NiAVObject.h:57
Definition: NiNode.h:12
Definition: NiPoint3.h:6
Definition: ReferenceEffectController.h:19
virtual bool GetUseRootWorldRotate()
virtual bool EffectShouldFaceTarget()
virtual void SwitchAttachedRoot(NiNode *a_root, NiNode *a_attachRoot)
virtual bool GetParticlesUseLocalSpace()
virtual const NiPoint3 & GetWindPoint()
virtual BGSArtObject * GetHitEffectArt()=0
virtual bool GetAllowTargetRoot()
virtual void RemoveHitEffect(ReferenceEffect *a_refEffect)
virtual TESObjectREFR * GetTargetReference()=0
virtual bool EffectAttachesToCamera()
virtual bool GetNoInitialFlare()
virtual ~ReferenceEffectController()=default
void Start(ReferenceEffect **a_effectOut=nullptr)
virtual void SaveGame(BGSSaveGameBuffer *a_buf)
virtual TESObjectREFR * GetFacingTarget()
virtual bool GetShaderUseParentCell()
virtual bool GetUseParticleAttachExtent()
virtual bool GetUseSourcePosition()
virtual bool GetEffectPersists()
virtual bool EffectRotatesWithCamera()
virtual bool GetClearWhenCellIsUnloaded()
virtual void LoadGame(BGSLoadGameBuffer *a_buf)
virtual TESEffectShader * GetHitEffectShader()=0
virtual float GetElapsedTime()
virtual void HandleEvent(const BSFixedString &a_event)
static constexpr auto VTABLE
Definition: ReferenceEffectController.h:22
virtual void SetWindPoint(const NiPoint3 &a_point)
virtual NiAVObject * GetAttachRoot()
static constexpr auto RTTI
Definition: ReferenceEffectController.h:21
virtual const NiPoint3 & GetSourcePosition()
virtual float GetParticleAttachExtent()
virtual bool GetManagerHandlesSaveLoad()=0
Definition: ReferenceEffect.h:12
Definition: TESEffectShader.h:182
Definition: TESObjectREFR.h:113
Definition: AbsorbEffect.h:6
constexpr std::array< REL::ID, 1 > VTABLE_ReferenceEffectController
Definition: Offsets_VTABLE.h:12605
constexpr REL::ID RTTI_ReferenceEffectController(static_cast< std::uint64_t >(685185))