CommonLibVR
BGSExplosion.h
Go to the documentation of this file.
1 #pragma once
2 
3 #include "RE/B/BGSPreloadable.h"
4 #include "RE/F/FormTypes.h"
5 #include "RE/S/SoundLevels.h"
6 #include "RE/T/TESBoundObject.h"
8 #include "RE/T/TESFullName.h"
10 #include "RE/T/TESModel.h"
11 
12 namespace RE
13 {
14  struct BGSExplosionData // DATA
15  {
16  enum class Flag
17  {
18  kNone = 0,
20  kKnockDown_Always = 1 << 2,
21  kKnockDown_ByFormula = 1 << 3,
22  kIgnoreLOSCheck = 1 << 4,
24  kIgnoreImageSpaceSwap = 1 << 6,
25  kChain = 1 << 7,
26  kNoControllerVibration = 1 << 8
27  };
28 
35  float force; // 30
36  float damage; // 34
37  float radius; // 38
38  float imageSpaceRadius; // 3C
39  float verticalOffsetMult; // 40
42  std::uint32_t pad4C; // 4C
43  };
44  static_assert(sizeof(BGSExplosionData) == 0x50);
45 
46  class BGSExplosion :
47  public TESBoundObject, // 00
48  public TESFullName, // 30
49  public TESModel, // 40
50  public TESEnchantableForm, // 68
51  public BGSPreloadable, // 80
52  public TESImageSpaceModifiableForm // 88
53  {
54  public:
55  inline static constexpr auto RTTI = RTTI_BGSExplosion;
56  inline static constexpr auto VTABLE = VTABLE_BGSExplosion;
57  inline static constexpr auto FORMTYPE = FormType::Explosion;
58 
59  struct RecordFlags
60  {
61  enum RecordFlag : std::uint32_t
62  {
63  kDeleted = 1 << 5,
64  kIgnored = 1 << 12
65  };
66  };
67 
68  ~BGSExplosion() override; // 00
69 
70  // override (TESBoundObject)
71  void InitializeData() override; // 04
72  bool Load(TESFile* a_mod) override; // 06
73  void InitItemImpl() override; // 13
74  NiAVObject* Clone3D(TESObjectREFR* a_ref, bool a_arg3) override; // 40
75  void UnClone3D(TESObjectREFR* a_ref) override; // 41
76 
77  // members
78  BGSExplosionData data; // 98 - DATA
79  private:
80  KEEP_FOR_RE()
81  };
82  static_assert(sizeof(BGSExplosion) == 0xE8);
83 }
#define KEEP_FOR_RE()
Definition: PCH.h:713
Definition: BGSExplosion.h:53
void InitializeData() override
~BGSExplosion() override
BGSExplosionData data
Definition: BGSExplosion.h:78
void UnClone3D(TESObjectREFR *a_ref) override
static constexpr auto RTTI
Definition: BGSExplosion.h:55
NiAVObject * Clone3D(TESObjectREFR *a_ref, bool a_arg3) override
void InitItemImpl() override
static constexpr auto FORMTYPE
Definition: BGSExplosion.h:57
bool Load(TESFile *a_mod) override
static constexpr auto VTABLE
Definition: BGSExplosion.h:56
Definition: BGSImpactDataSet.h:13
Definition: BGSPreloadable.h:8
Definition: BGSProjectile.h:79
Definition: BGSSoundDescriptorForm.h:14
Definition: NiAVObject.h:57
Definition: TESBoundObject.h:26
Definition: TESEnchantableForm.h:11
Definition: TESFile.h:17
Definition: TESFullName.h:9
Definition: TESImageSpaceModifiableForm.h:10
Definition: TESModel.h:16
Definition: TESObjectLIGH.h:68
Definition: TESObjectREFR.h:113
Definition: AbsorbEffect.h:6
constexpr std::array< REL::ID, 6 > VTABLE_BGSExplosion
Definition: Offsets_VTABLE.h:8619
constexpr REL::ID RTTI_BGSExplosion(static_cast< std::uint64_t >(513867))
Definition: BGSExplosion.h:15
stl::enumeration< Flag, std::uint32_t > flags
Definition: BGSExplosion.h:40
float radius
Definition: BGSExplosion.h:37
BGSProjectile * spawnProjectile
Definition: BGSExplosion.h:34
Flag
Definition: BGSExplosion.h:17
float damage
Definition: BGSExplosion.h:36
BGSSoundDescriptorForm * sound1
Definition: BGSExplosion.h:30
stl::enumeration< SOUND_LEVEL, std::uint32_t > eSoundLevel
Definition: BGSExplosion.h:41
BGSImpactDataSet * impactDataSet
Definition: BGSExplosion.h:32
std::uint32_t pad4C
Definition: BGSExplosion.h:42
TESObjectLIGH * light
Definition: BGSExplosion.h:29
float imageSpaceRadius
Definition: BGSExplosion.h:38
float verticalOffsetMult
Definition: BGSExplosion.h:39
float force
Definition: BGSExplosion.h:35
BGSSoundDescriptorForm * sound2
Definition: BGSExplosion.h:31
TESObjectREFR * impactPlacedObject
Definition: BGSExplosion.h:33
Definition: BGSExplosion.h:60
RecordFlag
Definition: BGSExplosion.h:62
@ kDeleted
Definition: BGSExplosion.h:63
@ kIgnored
Definition: BGSExplosion.h:64