CommonLibSSE (Parapets fork)
MiddleHighProcessData.h
Go to the documentation of this file.
1 #pragma once
2 
3 #include "RE/A/ActorPackage.h"
4 #include "RE/A/ActorValues.h"
5 #include "RE/B/BGSBodyPartDefs.h"
6 #include "RE/B/BGSPerkEntry.h"
7 #include "RE/B/BSAtomic.h"
8 #include "RE/B/BSPointerHandle.h"
9 #include "RE/B/BSResponse.h"
10 #include "RE/B/BSSimpleList.h"
11 #include "RE/B/BSTArray.h"
12 #include "RE/B/BSTEvent.h"
13 #include "RE/B/BSTSmartPointer.h"
14 #include "RE/F/FormTypes.h"
15 #include "RE/M/MagicSystem.h"
16 #include "RE/N/NiPoint3.h"
17 #include "RE/N/NiSmartPointer.h"
18 
19 namespace RE
20 {
21  class ActiveEffect;
22  class BGSAttackData;
23  class BGSPerkEntry;
24  class bhkCharacterController;
25  class bhkRagdollPenetrationUtil;
26  class BSAnimationGraphManager;
27  class BSFaceGenAnimationData;
28  class BSFaceGenNiNode;
29  class BSLightingShaderProperty;
30  class ExtraDataList;
31  class InventoryEntryData;
32  class MagicItem;
33  class NiAVObject;
34  class NiNode;
35  class QueuedFile;
36  class TESBoundObject;
37  class VATSCommand;
38  struct AnimationVariableData;
39  struct BSAnimationGraphVariableCache;
40 
41  enum class RESET_3D_FLAGS
42  {
43  kNone = 0,
44  kModel = 1 << 0,
45  kSkin = 1 << 1,
46  kHead = 1 << 2,
47  kFace = 1 << 3,
48  kScale = 1 << 4,
49  kSkeleton = 1 << 5,
50  kInitDefault = 1 << 6,
51  kSkyCellSkin = 1 << 7
52  };
53 
55  {
56  public:
57  // members
59  std::uint32_t pad04; // 04
61  };
62  static_assert(sizeof(CommandedActorData) == 0x10);
63 
65  {
66  public:
67  // members
69  std::int32_t count; // 08
70  std::uint32_t pad0C; // 0C
71  const BGSEquipSlot* equipSlot; // 10
72  void* unk18; // 18
73  bool playEquipSounds; // 20
74  bool forceEquip; // 21
75  bool showMessage; // 22
76  bool unk23; // 23
77  bool unk24; // 24
78  std::uint8_t pad25; // 25
79  std::uint16_t pad26; // 26
80  };
81  static_assert(sizeof(ObjectEquipParams) == 0x28);
82 
83  class QueuedItem
84  {
85  public:
86  // members
87  QueuedItem* next; // 00
91  bool equip; // 40
92  std::uint8_t pad41; // 41
93  std::uint16_t pad42; // 42
94  std::uint32_t pad44; // 44
95  };
96  static_assert(sizeof(QueuedItem) == 0x48);
97 
98  class HitData
99  {
100  public:
101  enum class Flag
102  {
103  kBlocked = 1 << 0,
104  kBlockWithWeapon = 1 << 1,
105  kBlockCandidate = 1 << 2,
106  kCritical = 1 << 3,
107  kCriticalOnDeath = 1 << 4,
108  kFatal = 1 << 5,
109  kDismemberLimb = 1 << 6,
110  kExplodeLimb = 1 << 7,
111  kCrippleLimb = 1 << 8,
112  kDisarm = 1 << 9,
113  kDisableWeapon = 1 << 10,
114  kSneakAttack = 1 << 11,
115  kIgnoreCritical = 1 << 12,
116  kPredictDamage = 1 << 13,
117  kBash = 1 << 14,
118  kTimedBash = 1 << 15,
119  kPowerAttack = 1 << 16,
120  kLeftHand = 1 << 17,
121  kMeleeAttack = 1 << 18,
122  kRicochet = 1 << 19,
123  kExplosion = 1 << 20
124  };
125 
126  void Populate(Actor* a_aggressor, Actor* a_target, InventoryEntryData* a_weapon);
127 
128  // members
134  std::uint32_t pad24; // 24
139  VATSCommand* vatsCommand; // 48
140  float totalDamage; // 50
141  float physicalDamage; // 54
142  float targetedLimbDamage; // 58
143  float percentBlocked; // 5C
144  float damageToArmor; // 60
145  float damageToWeapon; // 64
146  float stagger; // 68
147  float weaponCondition; // 6C
148  float sneakAttackBonus; // 70
149  float limbDamageMult; // 74
150  float knockbackDamage; // 78
151  float criticalDamageMult; // 7C
152  Flag flags; // 80
153  std::uint32_t equipIndex; // 84
156  };
157  static_assert(sizeof(HitData) == 0x90);
158 
160  {
161  public:
162  // members
163  float dismemberTimer; // 00
164  std::uint32_t limbIndex; // 04
168  bool explosion; // 20
169  std::uint8_t pad21; // 21
170  std::uint16_t pad22; // 22
171  std::uint32_t pad24; // 24
172  };
173  static_assert(sizeof(DeferredHideLimb) == 0x28);
174 
175  struct AIPerkData
176  {
177  public:
179  {
180  return operator[](a_pos);
181  }
182 
184  {
185  assert(a_pos < BGSEntryPoint::ENTRY_POINT::kTotal);
186  return perkEntryArrays[stl::to_underlying(a_pos)];
187  }
188 
189  // members
191  };
192  static_assert(sizeof(AIPerkData) == 0x8A0);
193 
195  {
196  public:
206  std::uint32_t bleedoutAttacker; // 0EC
208  std::uint32_t pad0F4; // 0F4
211  NiNode* damageRootNode[6]; // 118
212  std::uint64_t unk148; // 148
219  std::uint64_t unk180; // 180
228  mutable BSSpinLock unk1E8; // 1E8
229  void* unk1F0; // 1F0 - smart ptr
230  std::uint16_t unk1F8; // 1F8
231  std::uint16_t unk1FA; // 1FA
232  std::uint32_t unk1FC; // 1FC
233  std::uint32_t unk200; // 200
234  float headHeightOffset; // 204
236  std::uint32_t unk20C; // 20C
237  std::uint64_t unk210; // 210
239  std::uint32_t pad21C; // 21C
242  void* unk230; // 230 - smart ptr
243  std::uint64_t unk238; // 238
244  std::uint64_t unk240; // 240
245  std::uint64_t unk248; // 248
251  void* unk278; // 278
252  std::uint64_t unk280; // 280
254  std::uint32_t unk290; // 290
255  std::uint32_t currentFurnitureSubgraphID; // 294
256  float unk298; // 298
257  float unk29C; // 29C
258  float unk2A0; // 2A0
259  float unk2A4; // 2A4
260  float unk2A8; // 2A8
261  float unk2AC; // 2AC
262  float unk2B0; // 2B0
263  float unk2B4; // 2B4
264  float unk2B8; // 2B8
265  float unk2BC; // 2BC
266  float unk2C0; // 2C0
267  float unk2C4; // 2C4
268  float alphaMult; // 2C8
269  float scriptRefractPower; // 2CC
270  float unk2D0; // 2D0
271  float deferredKillTimer; // 2D4
272  float killMoveTimer; // 2D8
273  float unk2DC; // 2DC
274  std::uint32_t unk2E0; // 2E0
275  std::uint32_t unk2E4; // 2E4
276  std::uint32_t currentFurnitureMarkerID; // 2E8
277  std::uint32_t unk2EC; // 2EC
278  std::uint64_t unk2F0; // 2F0
279  std::uint32_t unk2F8; // 2F8
280  std::uint32_t unk2FC; // 2FC
281  std::uint32_t unk300; // 300
282  std::uint16_t unk304; // 304
283  std::uint16_t unk306; // 306
284  std::uint64_t unk308; // 308
285  std::uint8_t unk310; // 310
287  std::uint16_t unk312; // 312
288  std::uint16_t unk314; // 314
289  bool unk316; // 316
290  bool unk317; // 317
291  bool unk318; // 318
292  bool unk319; // 319
293  bool unk31A; // 31A
294  bool pickPocketed; // 31B
295  bool summonedCreature; // 31C
296  bool unk31D; // 31D
297  bool unk31E; // 31E
298  bool unk31F; // 31F
299  bool unk320; // 320
300  bool unk321; // 321
301  bool beenAttacked; // 322
302  bool unk323; // 323
303  bool unk324; // 324
304  bool unk325; // 325
305  bool unk326; // 326
306  bool unk327; // 327
307  bool unk328; // 328
308  bool unk329; // 329
309  bool unk32A; // 32A
310  bool unk32B; // 32B
311  bool unk32C; // 32C
312  bool unk32D; // 32D
313  bool unk32E; // 32E
314  bool unk32F; // 32F
315  bool unk330; // 330
316  bool unk331; // 331
317  bool unk332; // 332
318  bool pad333; // 333
319  std::uint32_t pad334; // 334
320  };
321  static_assert(sizeof(MiddleHighProcessData) == 0x338);
322 }
Definition: ActiveEffect.h:22
Definition: ActorPackage.h:12
Definition: Actor.h:134
Definition: BGSEquipSlot.h:10
Definition: BSFaceGenNiNode.h:14
Definition: BSSimpleList.h:10
Definition: BSAtomic.h:49
Definition: BSTArray.h:377
Definition: BSTSmartPointer.h:37
Definition: ExtraDataList.h:50
Definition: MiddleHighProcessData.h:99
Flag
Definition: MiddleHighProcessData.h:102
NiPoint3 direction
Definition: MiddleHighProcessData.h:130
float percentBlocked
Definition: MiddleHighProcessData.h:143
float criticalDamageMult
Definition: MiddleHighProcessData.h:151
float damageToArmor
Definition: MiddleHighProcessData.h:144
NiPoint3 position
Definition: MiddleHighProcessData.h:129
float stagger
Definition: MiddleHighProcessData.h:146
Flag flags
Definition: MiddleHighProcessData.h:152
ActorValue skill
Definition: MiddleHighProcessData.h:154
ActorHandle aggressor
Definition: MiddleHighProcessData.h:131
ObjectRefHandle sourceRef
Definition: MiddleHighProcessData.h:133
SpellItem * combatSpell
Definition: MiddleHighProcessData.h:138
void Populate(Actor *a_aggressor, Actor *a_target, InventoryEntryData *a_weapon)
VATSCommand * vatsCommand
Definition: MiddleHighProcessData.h:139
std::uint32_t equipIndex
Definition: MiddleHighProcessData.h:153
std::uint32_t pad24
Definition: MiddleHighProcessData.h:134
BGSBodyPartDefs::LIMB_ENUM damageLimb
Definition: MiddleHighProcessData.h:155
float damageToWeapon
Definition: MiddleHighProcessData.h:145
float sneakAttackBonus
Definition: MiddleHighProcessData.h:148
TESObjectWEAP * weapon
Definition: MiddleHighProcessData.h:136
float targetedLimbDamage
Definition: MiddleHighProcessData.h:142
NiPointer< BGSAttackData > attackData
Definition: MiddleHighProcessData.h:135
float knockbackDamage
Definition: MiddleHighProcessData.h:150
SpellItem * criticalEffect
Definition: MiddleHighProcessData.h:137
float totalDamage
Definition: MiddleHighProcessData.h:140
ActorHandle target
Definition: MiddleHighProcessData.h:132
float physicalDamage
Definition: MiddleHighProcessData.h:141
float weaponCondition
Definition: MiddleHighProcessData.h:147
float limbDamageMult
Definition: MiddleHighProcessData.h:149
Definition: InventoryEntryData.h:14
Definition: NiAVObject.h:45
Definition: NiNode.h:12
Definition: NiPoint3.h:6
Definition: MiddleHighProcessData.h:84
ObjectEquipParams equipParams
Definition: MiddleHighProcessData.h:89
std::uint8_t pad41
Definition: MiddleHighProcessData.h:92
TESBoundObject * object
Definition: MiddleHighProcessData.h:88
std::uint32_t pad44
Definition: MiddleHighProcessData.h:94
std::uint16_t pad42
Definition: MiddleHighProcessData.h:93
NiPointer< QueuedFile > queuedFiles
Definition: MiddleHighProcessData.h:90
QueuedItem * next
Definition: MiddleHighProcessData.h:87
bool equip
Definition: MiddleHighProcessData.h:91
Definition: SpellItem.h:16
Definition: TESBoundObject.h:24
Definition: TESIdleForm.h:35
Definition: TESObjectWEAP.h:73
WardState
Definition: MagicSystem.h:83
Definition: AbsorbEffect.h:6
RESET_3D_FLAGS
Definition: MiddleHighProcessData.h:42
ActorValue
Definition: ActorValues.h:6
constexpr auto to_underlying(Enum a_val) noexcept requires(std
Definition: PCH.h:676
Definition: MiddleHighProcessData.h:176
BSTArray< BGSPerkEntry * > perkEntryArrays[BGSEntryPoint::ENTRY_POINTS::kTotal]
Definition: MiddleHighProcessData.h:190
BSTArray< BGSPerkEntry * > & at(BGSEntryPoint::ENTRY_POINT a_pos)
Definition: MiddleHighProcessData.h:178
BSTArray< BGSPerkEntry * > & operator[](BGSEntryPoint::ENTRY_POINT a_pos)
Definition: MiddleHighProcessData.h:183
LIMB_ENUM
Definition: BGSBodyPartDefs.h:10
ENTRY_POINT
Definition: BGSEntryPoint.h:14
@ kTotal
Definition: BGSEntryPoint.h:108
Definition: BSAnimationGraphManager.h:34
Definition: MiddleHighProcessData.h:55
std::uint32_t pad04
Definition: MiddleHighProcessData.h:59
ActorHandle commandedActor
Definition: MiddleHighProcessData.h:58
ActiveEffect * activeEffect
Definition: MiddleHighProcessData.h:60
Definition: MiddleHighProcessData.h:160
std::uint8_t pad21
Definition: MiddleHighProcessData.h:169
NiPointer< NiNode > dismemberedLimbRoot
Definition: MiddleHighProcessData.h:165
std::uint16_t pad22
Definition: MiddleHighProcessData.h:170
NiPointer< NiNode > replacementLimb
Definition: MiddleHighProcessData.h:166
DeferredHideLimb * next
Definition: MiddleHighProcessData.h:167
std::uint32_t pad24
Definition: MiddleHighProcessData.h:171
bool explosion
Definition: MiddleHighProcessData.h:168
std::uint32_t limbIndex
Definition: MiddleHighProcessData.h:164
float dismemberTimer
Definition: MiddleHighProcessData.h:163
Definition: MiddleHighProcessData.h:195
float unk2B8
Definition: MiddleHighProcessData.h:264
float unk2A4
Definition: MiddleHighProcessData.h:259
BSTArray< ActorHandle > deadDetectList
Definition: MiddleHighProcessData.h:199
BSFaceGenNiNode * faceNodeSkinned
Definition: MiddleHighProcessData.h:217
bool unk332
Definition: MiddleHighProcessData.h:317
float unk2B4
Definition: MiddleHighProcessData.h:263
bool unk32B
Definition: MiddleHighProcessData.h:310
void * unk1F0
Definition: MiddleHighProcessData.h:229
NiPointer< bhkCharacterController > charController
Definition: MiddleHighProcessData.h:246
bool unk324
Definition: MiddleHighProcessData.h:303
std::uint32_t unk20C
Definition: MiddleHighProcessData.h:236
float unk2C0
Definition: MiddleHighProcessData.h:266
bool unk319
Definition: MiddleHighProcessData.h:292
bool unk321
Definition: MiddleHighProcessData.h:300
std::uint64_t unk148
Definition: MiddleHighProcessData.h:212
std::uint32_t unk1FC
Definition: MiddleHighProcessData.h:232
TESIdleForm * furnitureIdle
Definition: MiddleHighProcessData.h:241
BSSimpleList< ActiveEffect * > * activeEffects
Definition: MiddleHighProcessData.h:223
bool unk32F
Definition: MiddleHighProcessData.h:314
bool unk31E
Definition: MiddleHighProcessData.h:297
BSSimpleList< TESObjectREFR * > refListChairBed
Definition: MiddleHighProcessData.h:200
std::uint64_t unk210
Definition: MiddleHighProcessData.h:237
ActorHandle commandingActor
Definition: MiddleHighProcessData.h:238
std::uint32_t unk2E4
Definition: MiddleHighProcessData.h:275
bool pad333
Definition: MiddleHighProcessData.h:318
MagicSystem::WardState wardState
Definition: MiddleHighProcessData.h:207
bool unk318
Definition: MiddleHighProcessData.h:291
QueuedItem * itemstoEquipUnequip
Definition: MiddleHighProcessData.h:220
std::uint16_t unk1FA
Definition: MiddleHighProcessData.h:231
bool unk316
Definition: MiddleHighProcessData.h:289
std::uint64_t unk240
Definition: MiddleHighProcessData.h:244
float unk2AC
Definition: MiddleHighProcessData.h:261
float unk2C4
Definition: MiddleHighProcessData.h:267
std::uint16_t unk304
Definition: MiddleHighProcessData.h:282
std::uint64_t unk280
Definition: MiddleHighProcessData.h:252
float unk2B0
Definition: MiddleHighProcessData.h:262
NiAVObject * faceTargetSourceNode
Definition: MiddleHighProcessData.h:216
bool unk326
Definition: MiddleHighProcessData.h:305
float unk2D0
Definition: MiddleHighProcessData.h:270
bool pickPocketed
Definition: MiddleHighProcessData.h:294
NiPoint3 actorMountPosition
Definition: MiddleHighProcessData.h:203
bool unk31D
Definition: MiddleHighProcessData.h:296
std::uint8_t unk310
Definition: MiddleHighProcessData.h:285
std::uint32_t pad21C
Definition: MiddleHighProcessData.h:239
DeferredHideLimb * headDeferredHideLimb
Definition: MiddleHighProcessData.h:222
BSTEventSource< void * > unk000
Definition: MiddleHighProcessData.h:197
bool unk331
Definition: MiddleHighProcessData.h:316
ActorPackage runOncePackage
Definition: MiddleHighProcessData.h:198
float unk2A8
Definition: MiddleHighProcessData.h:260
InventoryEntryData * rightHand
Definition: MiddleHighProcessData.h:248
bool unk328
Definition: MiddleHighProcessData.h:307
std::uint32_t bleedoutAttacker
Definition: MiddleHighProcessData.h:206
ObjectRefHandle occupiedFurniture
Definition: MiddleHighProcessData.h:235
NiPoint3 furniturePathPoint
Definition: MiddleHighProcessData.h:204
bool unk323
Definition: MiddleHighProcessData.h:302
std::uint64_t unk248
Definition: MiddleHighProcessData.h:245
std::uint64_t unk308
Definition: MiddleHighProcessData.h:284
InventoryEntryData * leftHand
Definition: MiddleHighProcessData.h:240
NiNode * weaponBone
Definition: MiddleHighProcessData.h:213
std::uint32_t unk2EC
Definition: MiddleHighProcessData.h:277
float unk298
Definition: MiddleHighProcessData.h:256
BSTArray< void * > unk1B8
Definition: MiddleHighProcessData.h:226
float unk2DC
Definition: MiddleHighProcessData.h:273
BSTSmartPointer< BSAnimationGraphManager > animationGraphManager
Definition: MiddleHighProcessData.h:224
float unk2BC
Definition: MiddleHighProcessData.h:265
bool unk329
Definition: MiddleHighProcessData.h:308
bool unk330
Definition: MiddleHighProcessData.h:315
std::uint16_t unk314
Definition: MiddleHighProcessData.h:288
bool unk317
Definition: MiddleHighProcessData.h:290
float deferredKillTimer
Definition: MiddleHighProcessData.h:271
NiAVObject * headNode
Definition: MiddleHighProcessData.h:214
std::uint16_t unk306
Definition: MiddleHighProcessData.h:283
std::uint32_t unk2E0
Definition: MiddleHighProcessData.h:274
std::uint64_t unk180
Definition: MiddleHighProcessData.h:219
std::uint32_t pad334
Definition: MiddleHighProcessData.h:319
BSTSmartPointer< bhkRagdollPenetrationUtil > penetrationDetectUtil
Definition: MiddleHighProcessData.h:247
InventoryEntryData * bothHands
Definition: MiddleHighProcessData.h:249
bool unk32C
Definition: MiddleHighProcessData.h:311
BSTArray< void * > unk1D0
Definition: MiddleHighProcessData.h:227
NiAVObject * torsoNode
Definition: MiddleHighProcessData.h:215
std::uint32_t unk2FC
Definition: MiddleHighProcessData.h:280
AIPerkData * perkData
Definition: MiddleHighProcessData.h:253
std::uint32_t pad0F4
Definition: MiddleHighProcessData.h:208
BSAnimationGraphVariableCache * animationVariableCache
Definition: MiddleHighProcessData.h:225
std::uint32_t currentFurnitureSubgraphID
Definition: MiddleHighProcessData.h:255
void * unk278
Definition: MiddleHighProcessData.h:251
bool unk32D
Definition: MiddleHighProcessData.h:312
std::uint32_t unk290
Definition: MiddleHighProcessData.h:254
std::uint32_t unk300
Definition: MiddleHighProcessData.h:281
float killMoveTimer
Definition: MiddleHighProcessData.h:272
std::uint64_t unk2F0
Definition: MiddleHighProcessData.h:278
bool beenAttacked
Definition: MiddleHighProcessData.h:301
bool unk320
Definition: MiddleHighProcessData.h:299
float unk29C
Definition: MiddleHighProcessData.h:257
bool unk32A
Definition: MiddleHighProcessData.h:309
bool unk31F
Definition: MiddleHighProcessData.h:298
NiPoint3 rotation
Definition: MiddleHighProcessData.h:201
std::uint32_t unk2F8
Definition: MiddleHighProcessData.h:279
float alphaMult
Definition: MiddleHighProcessData.h:268
std::uint32_t currentFurnitureMarkerID
Definition: MiddleHighProcessData.h:276
std::uint32_t unk200
Definition: MiddleHighProcessData.h:233
float scriptRefractPower
Definition: MiddleHighProcessData.h:269
stl::enumeration< RESET_3D_FLAGS, std::uint8_t > update3DModel
Definition: MiddleHighProcessData.h:286
bool unk32E
Definition: MiddleHighProcessData.h:313
BSTSmartPointer< AnimResponse > animResponse
Definition: MiddleHighProcessData.h:209
bool unk31A
Definition: MiddleHighProcessData.h:293
NiPointer< BSLightingShaderProperty > lightingProperty
Definition: MiddleHighProcessData.h:218
NiPointer< QueuedFile > bodyPartPreload
Definition: MiddleHighProcessData.h:250
bool summonedCreature
Definition: MiddleHighProcessData.h:295
std::uint64_t unk238
Definition: MiddleHighProcessData.h:243
NiPoint3 lastSeenPosition
Definition: MiddleHighProcessData.h:205
void * unk230
Definition: MiddleHighProcessData.h:242
float headHeightOffset
Definition: MiddleHighProcessData.h:234
float unk2A0
Definition: MiddleHighProcessData.h:258
bool unk325
Definition: MiddleHighProcessData.h:304
std::uint16_t unk312
Definition: MiddleHighProcessData.h:287
NiNode * damageRootNode[6]
Definition: MiddleHighProcessData.h:211
BSSpinLock unk1E8
Definition: MiddleHighProcessData.h:228
std::uint16_t unk1F8
Definition: MiddleHighProcessData.h:230
HitData * lastHitData
Definition: MiddleHighProcessData.h:221
bool unk327
Definition: MiddleHighProcessData.h:306
BSTArray< CommandedActorData > commandedActors
Definition: MiddleHighProcessData.h:210
NiPoint3 rotationSpeed
Definition: MiddleHighProcessData.h:202
Definition: MiddleHighProcessData.h:65
void * unk18
Definition: MiddleHighProcessData.h:72
bool showMessage
Definition: MiddleHighProcessData.h:75
std::uint32_t pad0C
Definition: MiddleHighProcessData.h:70
bool playEquipSounds
Definition: MiddleHighProcessData.h:73
bool unk23
Definition: MiddleHighProcessData.h:76
ExtraDataList * extraDataList
Definition: MiddleHighProcessData.h:68
std::uint16_t pad26
Definition: MiddleHighProcessData.h:79
std::uint8_t pad25
Definition: MiddleHighProcessData.h:78
std::int32_t count
Definition: MiddleHighProcessData.h:69
bool unk24
Definition: MiddleHighProcessData.h:77
const BGSEquipSlot * equipSlot
Definition: MiddleHighProcessData.h:71
bool forceEquip
Definition: MiddleHighProcessData.h:74