CommonLibSSE (Parapets fork)
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 FORMTYPE = FormType::Explosion;
57 
58  struct RecordFlags
59  {
60  enum RecordFlag : std::uint32_t
61  {
62  kDeleted = 1 << 5,
63  kIgnored = 1 << 12
64  };
65  };
66 
67  ~BGSExplosion() override; // 00
68 
69  // override (TESBoundObject)
70  void InitializeData() override; // 04
71  bool Load(TESFile* a_mod) override; // 06
72  void InitItemImpl() override; // 13
73  NiAVObject* Clone3D(TESObjectREFR* a_ref, bool a_arg3) override; // 40
74  void UnClone3D(TESObjectREFR* a_ref) override; // 41
75 
76  // members
77  BGSExplosionData data; // 98 - DATA
78  };
79  static_assert(sizeof(BGSExplosion) == 0xE8);
80 }
Definition: BGSExplosion.h:53
void InitializeData() override
~BGSExplosion() override
BGSExplosionData data
Definition: BGSExplosion.h:77
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:56
bool Load(TESFile *a_mod) override
Definition: BGSImpactDataSet.h:13
Definition: BGSPreloadable.h:8
Definition: BGSProjectile.h:79
Definition: BGSSoundDescriptorForm.h:14
Definition: NiAVObject.h:45
Definition: TESBoundObject.h:24
Definition: TESEnchantableForm.h:11
Definition: TESFile.h:14
Definition: TESFullName.h:9
Definition: TESImageSpaceModifiableForm.h:10
Definition: TESModel.h:16
Definition: TESObjectLIGH.h:64
Definition: TESObjectREFR.h:105
Definition: AbsorbEffect.h:6
constexpr REL::ID RTTI_BGSExplosion
Definition: Offsets_RTTI.h:1296
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:59
RecordFlag
Definition: BGSExplosion.h:61
@ kDeleted
Definition: BGSExplosion.h:62
@ kIgnored
Definition: BGSExplosion.h:63