CommonLibSSE (powerof3)
MissileProjectile.h
Go to the documentation of this file.
1 #pragma once
2 
3 #include "RE/F/FormTypes.h"
4 #include "RE/I/ImpactResults.h"
5 #include "RE/P/Projectile.h"
6 
7 namespace RE
8 {
10  {
11  public:
12  inline static constexpr auto RTTI = RTTI_MissileProjectile;
13  inline static constexpr auto VTABLE = VTABLE_MissileProjectile;
14  inline static constexpr auto FORMTYPE = FormType::ProjectileMissile;
15 
16  struct RecordFlags
17  {
18  enum RecordFlag : std::uint32_t
19  {
20  };
21  };
22 
23  ~MissileProjectile() override; // 00
24 
25  // override (Projectile)
26  void SaveGame(BGSSaveFormBuffer* a_buf) override; // 0E
27  void LoadGame(BGSLoadFormBuffer* a_buf) override; // 0F
28  void InitLoadGame(BGSLoadFormBuffer* a_buf) override; // 10
29  void FinishLoadGame(BGSLoadFormBuffer* a_buf) override; // 11
30  void Revert(BGSLoadFormBuffer* a_buf) override; // 12
31  bool IsMissileProjectile() override; // A2 - { return 1; }
32  void Process3D() override; // A9
33  void UpdateImpl(float a_delta) override; // AB
34  bool ProcessImpacts() override; // AC
35  bool GetKillOnCollision() override; // B8 - { return impactResult == ImpactResult::kDestroy; }
36  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
37  void Handle3DLoaded() override; // C0
38 
39  // add
40  virtual void Unk_C2(void); // C2 - { return 0; }
41  virtual void Unk_C3(void); // C3 - { return 0; }
42 
43  // members
45  bool waitingToInitialize3D; // 1DC
46  std::uint8_t unk1DD; // 1DD
47  std::uint16_t unk1DE; // 1DE
48  };
49 #ifndef SKYRIM_SUPPORT_AE
50  static_assert(sizeof(MissileProjectile) == 0x1E0);
51 #else
52  static_assert(sizeof(MissileProjectile) == 0x1E8);
53 #endif
54 }
Definition: BGSLoadFormBuffer.h:11
Definition: BGSSaveFormBuffer.h:8
Definition: MissileProjectile.h:10
bool waitingToInitialize3D
Definition: MissileProjectile.h:45
void SaveGame(BGSSaveFormBuffer *a_buf) override
void FinishLoadGame(BGSLoadFormBuffer *a_buf) override
static constexpr auto VTABLE
Definition: MissileProjectile.h:13
void LoadGame(BGSLoadFormBuffer *a_buf) override
bool GetKillOnCollision() override
void InitLoadGame(BGSLoadFormBuffer *a_buf) override
virtual void Unk_C2(void)
bool ProcessImpacts() override
virtual void Unk_C3(void)
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
static constexpr auto RTTI
Definition: MissileProjectile.h:12
ImpactResult impactResult
Definition: MissileProjectile.h:44
void UpdateImpl(float a_delta) override
std::uint8_t unk1DD
Definition: MissileProjectile.h:46
std::uint16_t unk1DE
Definition: MissileProjectile.h:47
void Revert(BGSLoadFormBuffer *a_buf) override
static constexpr auto FORMTYPE
Definition: MissileProjectile.h:14
void Process3D() override
void Handle3DLoaded() override
bool IsMissileProjectile() override
~MissileProjectile() override
Definition: NiPoint3.h:6
Definition: Projectile.h:30
Definition: TESObjectREFR.h:114
Definition: hkpCollidable.h:13
Definition: AbsorbEffect.h:6
constexpr REL::ID RTTI_MissileProjectile(static_cast< std::uint64_t >(687495))
constexpr std::array< REL::ID, 4 > VTABLE_MissileProjectile
Definition: Offsets_VTABLE.h:12012
ImpactResult
Definition: ImpactResults.h:6
Definition: MissileProjectile.h:17
RecordFlag
Definition: MissileProjectile.h:19