CommonLibSSE NG
Loading...
Searching...
No Matches
FlameProjectile.h
Go to the documentation of this file.
1#pragma once
2
3#include "RE/F/FormTypes.h"
4#include "RE/P/Projectile.h"
5
6namespace RE
7{
9 {
10 public:
11 inline static constexpr auto RTTI = RTTI_FlameProjectile;
12 inline static constexpr auto VTABLE = VTABLE_FlameProjectile;
13 inline static constexpr auto FORMTYPE = FormType::ProjectileFlame;
14
16 {
17 enum RecordFlag : std::uint32_t
18 {
19 };
20 };
21
22 ~FlameProjectile() override; // 00
23
24 // override (Projectile)
25 void SaveGame(BGSSaveFormBuffer* a_buf) override; // 0E
26 void LoadGame(BGSLoadFormBuffer* a_buf) override; // 0F
27 void InitLoadGame(BGSLoadFormBuffer* a_buf) override; // 10
28 void FinishLoadGame(BGSLoadFormBuffer* a_buf) override; // 11
29 void Revert(BGSLoadFormBuffer* a_buf) override; // 12
30#ifndef SKYRIM_CROSS_VR
31 bool IsFlameProjectile() override; // A4 - { return 1; }
32 void Process3D() override; // A9
33 void UpdateImpl(float a_delta) override; // AB
34 bool RunTargetPick() override; // B7
35 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
36 void Handle3DLoaded() override; // C0 - { flags = flags & 0xFFFFFFCC | 8; }
37 bool ShouldUseDesiredTarget() override; // C1
38#endif
39
41 {
42#define FLAME_RUNTIME_DATA_CONTENT \
43 float expirationTimer; /* 1D8 */ \
44 float coneAngle; /* 1DC */
45
47 };
48
49 [[nodiscard]] inline FLAME_RUNTIME_DATA& GetFlameRuntimeData() noexcept
50 {
51 return REL::RelocateMemberIfNewer<FLAME_RUNTIME_DATA>(SKSE::RUNTIME_SSE_1_6_629, this, 0x1D8, 0x1E0);
52 }
53
54 [[nodiscard]] inline const FLAME_RUNTIME_DATA& GetFlameRuntimeData() const noexcept
55 {
56 return REL::RelocateMemberIfNewer<FLAME_RUNTIME_DATA>(SKSE::RUNTIME_SSE_1_6_629, this, 0x1D8, 0x1E0);
57 }
58
59 // members
60#ifndef ENABLE_SKYRIM_AE
62#endif
63 };
64#ifndef ENABLE_SKYRIM_AE
65 static_assert(sizeof(FlameProjectile) == 0x1E0);
66#endif
67}
68#undef FLAME_RUNTIME_DATA_CONTENT
#define FLAME_RUNTIME_DATA_CONTENT
Definition FlameProjectile.h:42
Definition BGSLoadFormBuffer.h:11
Definition FlameProjectile.h:9
FLAME_RUNTIME_DATA & GetFlameRuntimeData() noexcept
Definition FlameProjectile.h:49
static constexpr auto FORMTYPE
Definition FlameProjectile.h:13
~FlameProjectile() override
void Revert(BGSLoadFormBuffer *a_buf) override
void FinishLoadGame(BGSLoadFormBuffer *a_buf) override
bool IsFlameProjectile() override
static constexpr auto VTABLE
Definition FlameProjectile.h:12
bool ShouldUseDesiredTarget() override
static constexpr auto RTTI
Definition FlameProjectile.h:11
void Process3D() override
const FLAME_RUNTIME_DATA & GetFlameRuntimeData() const noexcept
Definition FlameProjectile.h:54
void UpdateImpl(float a_delta) 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
void Handle3DLoaded() override
void LoadGame(BGSLoadFormBuffer *a_buf) override
bool RunTargetPick() override
void InitLoadGame(BGSLoadFormBuffer *a_buf) override
void SaveGame(BGSSaveFormBuffer *a_buf) 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_FlameProjectile(687505, 395355, 0x1f1b378)
constexpr std::array< REL::VariantID, 4 > VTABLE_FlameProjectile
Definition Offsets_VTABLE.h:2781
constexpr REL::Version RUNTIME_SSE_1_6_629(1, 6, 629, 0)
Definition FlameProjectile.h:41
Definition FlameProjectile.h:16
RecordFlag
Definition FlameProjectile.h:18