CommonLibVR
BeamProjectile.h
Go to the documentation of this file.
1 #pragma once
2 
3 #include "RE/B/BSTEvent.h"
4 #include "RE/F/FormTypes.h"
5 #include "RE/P/Projectile.h"
6 
7 namespace RE
8 {
9  class BSProceduralGeomEvent;
10  struct BeamProjectileImpactEvent;
11 
13  public Projectile, // 000
14  public BSTEventSource<BeamProjectileImpactEvent>, // 1E0
15  public BSTEventSink<BSProceduralGeomEvent> // 1D8
16  {
17  public:
18  inline static constexpr auto RTTI = RTTI_BeamProjectile;
19  inline static constexpr auto VTABLE = VTABLE_BeamProjectile;
20  inline static constexpr auto FORMTYPE = FormType::ProjectileBeam;
21 
22  struct RecordFlags
23  {
24  enum RecordFlag : std::uint32_t
25  {
26  };
27  };
28 
29  ~BeamProjectile() override; // 00
30 
31  // override (Projectile)
32  void SaveGame(BGSSaveFormBuffer* a_buf) override; // 0E
33  void LoadGame(BGSLoadFormBuffer* a_buf) override; // 0F
34  void InitLoadGame(BGSLoadFormBuffer* a_buf) override; // 10
35  void FinishLoadGame(BGSLoadFormBuffer* a_buf) override; // 11
36  void Revert(BGSLoadFormBuffer* a_buf) override; // 12
37  bool IsBeamProjectile() override; // A5
38  void Process3D() override; // A9
39  void UpdateImpl(float a_delta) override; // AB
40  bool GetKillOnCollision() override; // B8
41  void AddImpact(TESObjectREFR* a_ref, const NiPoint3& a_targetLoc, const NiPoint3& a_velocity, hkpCollidable* a_collidable, std::int32_t a_arg6, std::uint32_t a_arg7) override; // BD
42  void Handle3DLoaded() override; // C0
43  bool ShouldUseDesiredTarget() override; // C1
44 
45  // override (BSTEventSink<BSProceduralGeomEvent>)
46  BSEventNotifyControl ProcessEvent(const BSProceduralGeomEvent* a_event, BSTEventSource<BSProceduralGeomEvent>* a_eventSource) override; // 01
47 
48  // members
49  std::uint64_t unk238; // 238
50  private:
51  KEEP_FOR_RE()
52  };
53 #ifndef SKYRIM_SUPPORT_AE
54  static_assert(sizeof(BeamProjectile) == 0x240);
55 #else
56  static_assert(sizeof(BeamProjectile) == 0x248);
57 #endif
58 }
#define KEEP_FOR_RE()
Definition: PCH.h:713
Definition: BGSLoadFormBuffer.h:11
Definition: BGSSaveFormBuffer.h:8
Definition: BSTEvent.h:143
Definition: BSTEvent.h:19
Definition: BeamProjectile.h:16
std::uint64_t unk238
Definition: BeamProjectile.h:49
void LoadGame(BGSLoadFormBuffer *a_buf) override
void Handle3DLoaded() override
void SaveGame(BGSSaveFormBuffer *a_buf) override
void AddImpact(TESObjectREFR *a_ref, const NiPoint3 &a_targetLoc, const NiPoint3 &a_velocity, hkpCollidable *a_collidable, std::int32_t a_arg6, std::uint32_t a_arg7) override
bool ShouldUseDesiredTarget() override
BSEventNotifyControl ProcessEvent(const BSProceduralGeomEvent *a_event, BSTEventSource< BSProceduralGeomEvent > *a_eventSource) override
void UpdateImpl(float a_delta) override
void InitLoadGame(BGSLoadFormBuffer *a_buf) override
static constexpr auto RTTI
Definition: BeamProjectile.h:18
void FinishLoadGame(BGSLoadFormBuffer *a_buf) override
~BeamProjectile() override
void Process3D() override
static constexpr auto FORMTYPE
Definition: BeamProjectile.h:20
static constexpr auto VTABLE
Definition: BeamProjectile.h:19
void Revert(BGSLoadFormBuffer *a_buf) override
bool IsBeamProjectile() override
bool GetKillOnCollision() override
Definition: NiPoint3.h:6
Definition: Projectile.h:30
Definition: TESObjectREFR.h:113
Definition: hkpCollidable.h:13
Definition: AbsorbEffect.h:6
constexpr std::array< REL::ID, 5 > VTABLE_BeamProjectile
Definition: Offsets_VTABLE.h:10609
constexpr REL::ID RTTI_BeamProjectile(static_cast< std::uint64_t >(687499))
BSEventNotifyControl
Definition: BSTEvent.h:12
Definition: BeamProjectile.h:23
RecordFlag
Definition: BeamProjectile.h:25