CommonLibSSE NG
Loading...
Searching...
No Matches
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
7namespace 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
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#ifndef SKYRIM_CROSS_VR
38 bool IsBeamProjectile() override; // A5
39 void Process3D() override; // A9
40 void UpdateImpl(float a_delta) override; // AB
41 bool GetKillOnCollision() override; // B8
42 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
43 void Handle3DLoaded() override; // C0
44 bool ShouldUseDesiredTarget() override; // C1
45#endif
46
47 // override (BSTEventSink<BSProceduralGeomEvent>)
48 BSEventNotifyControl ProcessEvent(const BSProceduralGeomEvent* a_event, BSTEventSource<BSProceduralGeomEvent>* a_eventSource) override; // 01
49
51 {
52#define BEAM_RUNTIME_DATA_CONTENT \
53 std::uint64_t unk238; // 238, 240
54 };
55
56 [[nodiscard]] inline BEAM_RUNTIME_DATA& GetBeamRuntimeData() noexcept
57 {
58 return REL::RelocateMemberIfNewer<BEAM_RUNTIME_DATA>(SKSE::RUNTIME_SSE_1_6_629, this, 0x98, 0xA0);
59 }
60
61 [[nodiscard]] inline const BEAM_RUNTIME_DATA& GetBeamRuntimeData() const noexcept
62 {
63 return REL::RelocateMemberIfNewer<BEAM_RUNTIME_DATA>(SKSE::RUNTIME_SSE_1_6_629, this, 0x98, 0xA0);
64 }
65
66 // members
67#ifndef ENABLE_SKYRIM_AE
69#endif
70 };
71#ifndef ENABLE_SKYRIM_AE
72 static_assert(sizeof(BeamProjectile) == 0x240);
73#endif
74}
75#undef BEAM_RUNTIME_DATA_CONTENT
#define BEAM_RUNTIME_DATA_CONTENT
Definition BeamProjectile.h:52
Definition BGSLoadFormBuffer.h:11
Definition BSTEvent.h:143
Definition BSTEvent.h:19
Definition BeamProjectile.h:16
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
const BEAM_RUNTIME_DATA & GetBeamRuntimeData() const noexcept
Definition BeamProjectile.h:61
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
BEAM_RUNTIME_DATA & GetBeamRuntimeData() noexcept
Definition BeamProjectile.h:56
bool GetKillOnCollision() override
Definition NiPoint3.h:6
Definition Projectile.h:30
Definition TESObjectREFR.h:112
Definition hkpCollidable.h:13
Definition AbsorbEffect.h:6
constexpr REL::VariantID RTTI_BeamProjectile(687499, 395349, 0x1f1b218)
constexpr std::array< REL::VariantID, 5 > VTABLE_BeamProjectile
Definition Offsets_VTABLE.h:2776
BSEventNotifyControl
Definition BSTEvent.h:12
constexpr REL::Version RUNTIME_SSE_1_6_629(1, 6, 629, 0)
Definition BeamProjectile.h:51
Definition BeamProjectile.h:23
RecordFlag
Definition BeamProjectile.h:25