CommonLibSSE (Parapets fork)
Loading...
Searching...
No Matches
Projectile.h
Go to the documentation of this file.
1#pragma once
2
3#include "RE/B/BSAtomic.h"
6#include "RE/B/BSTList.h"
7#include "RE/F/FormTypes.h"
8#include "RE/M/MagicSystem.h"
10#include "RE/T/TESObjectREFR.h"
11
12namespace RE
13{
14 class bhkCollisionObject;
15 class bhkSimpleShapePhantom;
16 class QueuedFile;
17
19 {
20 public:
21 inline static constexpr auto RTTI = RTTI_Projectile;
22
24 {
25 public:
26 // add
27 virtual ~LaunchData();
28
29 // members
34 void* unk30; // 30
37 float unk48; // 48
38 float unk4C; // 4C
39 std::uint64_t unk50; // 50
40 std::uint64_t unk58; // 58
41 std::uint64_t unk60; // 60
43 std::uint64_t unk70; // 70
44 std::uint64_t unk78; // 78
47 std::uint32_t unk90; // 90
48 float unk94; // 94
49 float unk98; // 98
50 std::uint8_t unk9C; // 9C
51 std::uint8_t unk9D; // 9D
52 std::uint8_t unk9E; // 9E
53 std::uint8_t unk9F; // 9F
54 std::uint16_t unkA0; // A0
55 std::uint16_t unkA2; // A2
56 std::uint32_t padA4; // A4
57 };
58 static_assert(sizeof(LaunchData) == 0xA8);
59
61 {
62 public:
63 // members
64 std::uint64_t unk00; // 00
65 std::uint64_t unk08; // 08
66 std::uint64_t unk10; // 10
69 std::uint64_t unk28; // 28
70 std::uint64_t unk30; // 30
71 std::uint64_t unk38; // 38
72 std::uint64_t unk40; // 40
73 std::uint64_t unk48; // 48
74 };
75 static_assert(sizeof(ImpactData) == 0x50);
76
77 ~Projectile() override; // 00
78
79 // override (TESObjectREFR)
80 bool Load(TESFile* a_mod) override; // 06 - { return TESObjectREFR::Load(a_mod); }
81 void SaveGame(BGSSaveFormBuffer* a_buf) override; // 0E
82 void LoadGame(BGSLoadFormBuffer* a_buf) override; // 0F
83 void InitLoadGame(BGSLoadFormBuffer* a_buf) override; // 10
84 void FinishLoadGame(BGSLoadFormBuffer* a_buf) override; // 11
85 void Revert(BGSLoadFormBuffer* a_buf) override; // 12
86 bool GetAllowPromoteToPersistent() const override; // 47 - { return false; }
87 bool HasKeywordHelper(const BGSKeyword* a_keyword) const override; // 48
88 void SetActorCause(ActorCause* a_cause) override; // 50 - { actorCause = a_cause; }
89 ActorCause* GetActorCause() const override; // 51 - { return actorCause; }
91 bool DetachHavok(NiAVObject* a_obj3D) override; // 65
92 void InitHavok() override; // 66
93 NiAVObject* Load3D(bool a_backgroundLoading) override; // 6A
94 void Set3D(NiAVObject* a_object, bool a_queue3DTasks = true) override; // 6C
95 void MoveHavok(bool a_forceRec) override; // 85 - { return; }
96 void GetLinearVelocity(NiPoint3& a_velocity) const override; // 86
97 void Unk_8B(void) override; // 8B
98 Projectile* AsProjectile() override; // 8F - { return this; }
99 bool OnAddCellPerformQueueReference(TESObjectCELL& a_cell) const override; // 90 - { return false; }
100
101 // add
102 virtual void Unk_A2(void); // A2 - { return 0; }
103 virtual void Unk_A3(void); // A3 - { return 0; }
104 virtual void Unk_A4(void); // A4 - { return 0; }
105 virtual void Unk_A5(void); // A5 - { return 0; }
106 virtual void Unk_A6(void); // A6 - { return 0; }
107 virtual void Unk_A7(void); // A7 - { return 0; }
108 virtual void Unk_A8(void); // A8 - { return; }
109 virtual void Unk_A9(void); // A9 - { return; }
110 virtual void Unk_AA(void); // AA
111 virtual void UpdateImpl(float a_delta) = 0; // AB
112 virtual void Unk_AC(void); // AC
113 virtual void Unk_AD(void); // AD
114 virtual void Unk_AE(void); // AE - { return 0; }
115 virtual void Unk_AF(void); // AF - { if (unk158) return 1.0; else return unk188; } - "float GetSpeed()"?
116 virtual void Unk_B0(void); // B0 - { return 1.0; }
117 virtual void Unk_B1(void); // B1 - { return 0; }
118 virtual void Unk_B2(void); // B2 - { return; }
119 virtual void Unk_B3(void); // B3
120 virtual bool IsNotGeneratedForm() const; // B4 - { return TESDataHandler::GetSingleton()->IsGeneratedFormID(formID) == 0; }
121 virtual void Unk_B5(void); // B5 - { void* var = unk40; if ((var->unk80 >> 17) & 1) return 1.0; else return var->unk84; }
122 virtual void Unk_B6(void); // B6
123 virtual void Unk_B7(void); // B7
124 virtual void Unk_B8(void); // B8 - { return 1; }
125 virtual void Unk_B9(void); // B9 - { return 0; }
126 virtual void Unk_BA(void); // BA - { return 0; }
127 virtual void Unk_BB(void); // BB
128 virtual void Unk_BC(void); // BC
129 virtual void Unk_BD(void); // BD
130 virtual void Unk_BE(void); // BE
131 virtual void Unk_BF(void); // BF - { return; }
132 virtual void Handle3DLoaded(); // C0 - { return; }
133 virtual void Unk_C1(void); // C1 - { return 0; }
134
135 // members
137 float unk0A8; // 0A8
138 float unk0AC; // 0AC
139 std::uint64_t unk0B0; // 0B0
140 float unk0B8; // 0B8
141 float unk0BC; // 0BC
142 std::uint64_t unk0C0; // 0C0
143 float unk0C8; // 0C8
144 float unk0CC; // 0CC
145 std::uint64_t unk0D0; // 0D0
146 float unk0D8; // 0D8
147 float unk0DC; // 0DC
148 bhkSimpleShapePhantom* unk0E0; // 0E0 - smart ptr
149 mutable BSSpinLock unk0E8; // 0E8
151 float unk0FC; // 0FC
152 float unk100; // 100
153 float unk104; // 104
154 void* unk108; // 108 - smart ptr
155 void* unk110; // 110 - smart ptr
161 std::uint32_t* unk140; // 140
166 std::uint32_t pad164; // 164
169 std::uint64_t unk178; // 178
170 std::uint64_t unk180; // 180
171 float unk188; // 188
172 float unk18C; // 18C
173 float range; // 190
174 std::uint32_t unk194; // 194
175 float unk198; // 198
176 float unk19C; // 19C
177 std::uint64_t unk1A0; // 1A0
178 std::uint64_t unk1A8; // 1A8
181 float distanceMoved; // 1C0
182 std::uint32_t unk1C4; // 1C4
183 std::uint32_t unk1C8; // 1C8
184 std::uint32_t flags; // 1CC
185 std::uint64_t unk1D0; // 1D0
186 };
187#if !defined(SKYRIMVR) && !defined(SKYRIMSE_PRE_1_6_629)
188 static_assert(sizeof(Projectile) == 0x1E0);
189#else
190 static_assert(sizeof(Projectile) == 0x1D8);
191#endif
192}
Definition: ActorCause.h:9
Definition: AlchemyItem.h:24
Definition: BGSExplosion.h:53
Definition: BGSKeyword.h:10
Definition: BGSProjectile.h:79
Definition: BSTList.h:10
Definition: BSAtomic.h:49
Definition: EffectSetting.h:24
Definition: EnchantmentItem.h:10
Definition: InventoryEntryData.h:14
Definition: MagicCaster.h:11
Definition: MagicItem.h:27
Definition: NiAVObject.h:45
Definition: NiPoint3.h:6
Definition: NiSmartPointer.h:9
Definition: Projectile.h:24
NiPoint3 unk14
Definition: Projectile.h:31
TESObjectREFR * source
Definition: Projectile.h:33
TESObjectWEAP * sourceWeapon
Definition: Projectile.h:35
std::uint32_t unk90
Definition: Projectile.h:47
TESAmmo * sourceAmmo
Definition: Projectile.h:36
float unk94
Definition: Projectile.h:48
EnchantmentItem * enchantment
Definition: Projectile.h:45
TESObjectCELL * unk68
Definition: Projectile.h:42
std::uint64_t unk58
Definition: Projectile.h:40
std::uint64_t unk50
Definition: Projectile.h:39
std::uint16_t unkA0
Definition: Projectile.h:54
float unk4C
Definition: Projectile.h:38
std::uint16_t unkA2
Definition: Projectile.h:55
float unk48
Definition: Projectile.h:37
std::uint32_t padA4
Definition: Projectile.h:56
NiPoint3 unk08
Definition: Projectile.h:30
std::uint64_t unk78
Definition: Projectile.h:44
std::uint64_t unk70
Definition: Projectile.h:43
void * unk30
Definition: Projectile.h:34
std::uint8_t unk9F
Definition: Projectile.h:53
std::uint8_t unk9C
Definition: Projectile.h:50
BGSProjectile * projectile
Definition: Projectile.h:32
std::uint8_t unk9D
Definition: Projectile.h:51
float unk98
Definition: Projectile.h:49
std::uint64_t unk60
Definition: Projectile.h:41
std::uint8_t unk9E
Definition: Projectile.h:52
AlchemyItem * poison
Definition: Projectile.h:46
Definition: Projectile.h:19
NiPointer< ActorCause > actorCause
Definition: Projectile.h:156
BGSExplosion * explosion
Definition: Projectile.h:163
virtual void Unk_BF(void)
float unk19C
Definition: Projectile.h:176
~Projectile() override
virtual void Handle3DLoaded()
virtual void Unk_A9(void)
ObjectRefHandle shooter
Definition: Projectile.h:157
void InitLoadGame(BGSLoadFormBuffer *a_buf) override
float unk198
Definition: Projectile.h:175
bool GetAllowPromoteToPersistent() const override
void * unk108
Definition: Projectile.h:154
std::uint64_t unk0B0
Definition: Projectile.h:139
NiPointer< QueuedFile > projectileDBFiles
Definition: Projectile.h:168
void * unk110
Definition: Projectile.h:155
std::uint64_t unk1D0
Definition: Projectile.h:185
std::uint32_t flags
Definition: Projectile.h:184
ObjectRefHandle desiredTarget
Definition: Projectile.h:158
virtual void Unk_BD(void)
virtual void Unk_A4(void)
virtual void Unk_B2(void)
std::uint64_t unk1A8
Definition: Projectile.h:178
std::uint64_t unk1A0
Definition: Projectile.h:177
EffectSetting * avEffect
Definition: Projectile.h:167
void MoveHavok(bool a_forceRec) override
std::uint32_t * unk140
Definition: Projectile.h:161
float range
Definition: Projectile.h:173
void LoadGame(BGSLoadFormBuffer *a_buf) override
virtual void Unk_A7(void)
float unk0A8
Definition: Projectile.h:137
virtual void Unk_B5(void)
virtual bool IsNotGeneratedForm() const
virtual void Unk_B3(void)
virtual void Unk_B9(void)
float distanceMoved
Definition: Projectile.h:181
std::uint64_t unk0C0
Definition: Projectile.h:142
std::uint64_t unk180
Definition: Projectile.h:170
void FinishLoadGame(BGSLoadFormBuffer *a_buf) override
float unk0FC
Definition: Projectile.h:151
float unk0BC
Definition: Projectile.h:141
float unk0B8
Definition: Projectile.h:140
bool Load(TESFile *a_mod) override
float unk18C
Definition: Projectile.h:172
void Set3D(NiAVObject *a_object, bool a_queue3DTasks=true) override
virtual void Unk_AC(void)
NiAVObject * Load3D(bool a_backgroundLoading) override
virtual void Unk_BB(void)
void Unk_8B(void) override
float unk104
Definition: Projectile.h:153
virtual void Unk_BE(void)
std::uint32_t pad164
Definition: Projectile.h:166
float unk0D8
Definition: Projectile.h:146
std::uint32_t unk194
Definition: Projectile.h:174
static constexpr auto RTTI
Definition: Projectile.h:21
BSSoundHandle sndCountdown
Definition: Projectile.h:160
std::uint64_t unk178
Definition: Projectile.h:169
BSSimpleList< ImpactData * > impacts
Definition: Projectile.h:136
float unk0C8
Definition: Projectile.h:143
virtual void Unk_AD(void)
void SaveGame(BGSSaveFormBuffer *a_buf) override
NiPoint3 unk0F0
Definition: Projectile.h:150
float unk100
Definition: Projectile.h:152
BSSpinLock unk0E8
Definition: Projectile.h:149
virtual void Unk_AF(void)
virtual void Unk_AA(void)
bool OnAddCellPerformQueueReference(TESObjectCELL &a_cell) const override
bhkSimpleShapePhantom * unk0E0
Definition: Projectile.h:148
virtual void Unk_A6(void)
virtual void Unk_AE(void)
virtual void Unk_BC(void)
InventoryEntryData * unk148
Definition: Projectile.h:162
float unk188
Definition: Projectile.h:171
MagicSystem::CastingSource castingSource
Definition: Projectile.h:165
void SetActorCause(ActorCause *a_cause) override
float unk0CC
Definition: Projectile.h:144
void InitHavok() override
bool DetachHavok(NiAVObject *a_obj3D) override
BSSoundHandle sndHandle
Definition: Projectile.h:159
virtual void Unk_B7(void)
bool HasKeywordHelper(const BGSKeyword *a_keyword) const override
TESAmmo * ammoSource
Definition: Projectile.h:180
std::uint32_t unk1C8
Definition: Projectile.h:183
void GetLinearVelocity(NiPoint3 &a_velocity) const override
virtual void Unk_A2(void)
virtual void Unk_C1(void)
std::uint64_t unk0D0
Definition: Projectile.h:145
MagicCaster * GetMagicCaster(MagicSystem::CastingSource a_source) override
virtual void Unk_B1(void)
virtual void Unk_A8(void)
Projectile * AsProjectile() override
float unk0DC
Definition: Projectile.h:147
virtual void Unk_B8(void)
void Revert(BGSLoadFormBuffer *a_buf) override
virtual void Unk_A3(void)
std::uint32_t unk1C4
Definition: Projectile.h:182
virtual void Unk_B0(void)
ActorCause * GetActorCause() const override
virtual void UpdateImpl(float a_delta)=0
TESObjectWEAP * weaponSource
Definition: Projectile.h:179
virtual void Unk_A5(void)
virtual void Unk_B6(void)
MagicItem * spell
Definition: Projectile.h:164
virtual void Unk_BA(void)
float unk0AC
Definition: Projectile.h:138
Definition: TESAmmo.h:50
Definition: TESFile.h:14
Definition: TESObjectCELL.h:102
Definition: TESObjectREFR.h:105
Definition: TESObjectWEAP.h:73
CastingSource
Definition: MagicSystem.h:21
Definition: AbsorbEffect.h:6
constexpr REL::ID RTTI_Projectile
Definition: Offsets_RTTI.h:5733
Definition: BSSoundHandle.h:10
Definition: Projectile.h:61
std::uint64_t unk08
Definition: Projectile.h:65
std::uint64_t unk28
Definition: Projectile.h:69
std::uint64_t unk00
Definition: Projectile.h:64
std::uint64_t unk10
Definition: Projectile.h:66
NiPointer< bhkCollisionObject > colObj
Definition: Projectile.h:68
std::uint64_t unk40
Definition: Projectile.h:72
ObjectRefHandle collidee
Definition: Projectile.h:67
std::uint64_t unk38
Definition: Projectile.h:71
std::uint64_t unk48
Definition: Projectile.h:73
std::uint64_t unk30
Definition: Projectile.h:70