CommonLibSSE (powerof3)
VATS.h
Go to the documentation of this file.
1 #pragma once
2 
3 #include "RE/A/ActorValues.h"
4 #include "RE/B/BSAtomic.h"
5 #include "RE/B/BSTArray.h"
6 #include "RE/B/BSTSingleton.h"
7 #include "RE/B/BSTSmartPointer.h"
8 #include "RE/H/HitData.h"
9 
10 namespace RE
11 {
12  class Actor;
13  class BGSCameraShot;
14  class BSLight;
15  class ExtraDataList;
16  class ImageSpaceModifierInstanceRB;
17  class TESBoundObject;
18 
20  {
21  public:
22  std::uint32_t actionPoints; // 00 - 12
23  std::uint8_t unk04; // 04
24  std::uint8_t unk05; // 05
25  std::uint8_t unk06; // 06
26  std::uint8_t unk07; // 07
27  std::uint8_t unk08; // 08
28  std::uint8_t unk09; // 09
29  std::uint16_t unk0A; // 0A
32  std::uint32_t pad14; // 14
34  std::uint64_t unkA8; // A8
35  std::uint32_t unkB0; // B0
36  };
37  static_assert(sizeof(VATSCommand) == 0xB8);
38 
39  class VATS : public BSTSingletonSDM<VATS>
40  {
41  public:
42  enum class VATS_MODE : std::uint32_t
43  {
44  kNone = 0,
45  kKillCam = 4
46  };
47 
48  [[nodiscard]] static VATS* GetSingleton()
49  {
50  static REL::Relocation<VATS**> singleton{ RELOCATION_ID(514725, 400883) };
51  return *singleton;
52  }
53 
54  void SetMagicTimeSlowdown(float a_magicTimeSlowdown, float a_playerMagicTimeSlowdown)
55  {
56  using func_t = decltype(&VATS::SetMagicTimeSlowdown);
57  static REL::Relocation<func_t> func{ RELOCATION_ID(43103, 44300) };
58  return func(this, a_magicTimeSlowdown, a_playerMagicTimeSlowdown);
59  }
60 
61  // members
62  std::uint32_t pad00; // 00
64  VATS_MODE mode; // 20
65  std::uint32_t pad24; // 24
66  std::uint64_t unk28; // 28
68  float safetyTime; // 38
69  float cameraTime; // 3C
70  float castingAfterKillDelay; // 40
71  std::uint32_t pad44; // 44
72  std::uint64_t unk48; // 48
73  std::uint64_t unk50; // 50
74  std::uint64_t unk58; // 58
75  ImageSpaceModifierInstanceRB* unk60; // 60
76  ImageSpaceModifierInstanceRB* unk68; // 68
78  bool unk78; // 78
79  bool unk79; // 79
80  std::uint16_t pad7A; // 7A
81  std::int32_t unk7C; // 7C
82  float magicTimeSlowdown; // 80
87  std::int32_t unkA0; // A0
88  std::uint32_t padA4; // A4
91  mutable BSSpinLock lock; // B8
92  };
93  static_assert(sizeof(VATS) == 0xC0);
94 }
#define RELOCATION_ID(SE, AE)
Definition: PCH.h:505
Definition: Relocation.h:210
Definition: BGSCameraShot.h:15
Definition: BSAtomic.h:92
Definition: BSTArray.h:378
Definition: ExtraDataList.h:49
Definition: HitData.h:17
Definition: NiSmartPointer.h:9
Definition: TESBoundObject.h:24
Definition: VATS.h:20
std::uint8_t unk07
Definition: VATS.h:26
std::uint32_t actionPoints
Definition: VATS.h:22
std::uint16_t unk0A
Definition: VATS.h:29
ActorValue bodyPartAV
Definition: VATS.h:31
std::uint8_t unk05
Definition: VATS.h:24
std::uint8_t unk08
Definition: VATS.h:27
std::uint8_t unk06
Definition: VATS.h:25
std::uint64_t unkA8
Definition: VATS.h:34
std::uint8_t unk04
Definition: VATS.h:23
HitData hitData
Definition: VATS.h:33
std::uint32_t unkB0
Definition: VATS.h:35
std::uint32_t pad14
Definition: VATS.h:32
std::uint8_t unk09
Definition: VATS.h:28
ObjectRefHandle targetHandle
Definition: VATS.h:30
Definition: VATS.h:40
float cameraTime
Definition: VATS.h:69
std::uint32_t pad44
Definition: VATS.h:71
NiPointer< Actor > attacker
Definition: VATS.h:89
std::uint64_t unk48
Definition: VATS.h:72
TESBoundObject * item
Definition: VATS.h:84
std::uint32_t pad24
Definition: VATS.h:65
NiPointer< Actor > target
Definition: VATS.h:86
std::uint64_t unk50
Definition: VATS.h:73
ImageSpaceModifierInstanceRB * unk68
Definition: VATS.h:76
BGSCameraShot * cameraShot
Definition: VATS.h:67
std::uint64_t unk28
Definition: VATS.h:66
ExtraDataList * extraList
Definition: VATS.h:85
bool unk78
Definition: VATS.h:78
ImageSpaceModifierInstanceRB * unk60
Definition: VATS.h:75
NiPointer< BSLight > VATSLight
Definition: VATS.h:77
std::int32_t unk7C
Definition: VATS.h:81
bool unk79
Definition: VATS.h:79
float castingAfterKillDelay
Definition: VATS.h:70
void SetMagicTimeSlowdown(float a_magicTimeSlowdown, float a_playerMagicTimeSlowdown)
Definition: VATS.h:54
std::uint32_t padA4
Definition: VATS.h:88
std::uint64_t unk58
Definition: VATS.h:74
std::uint32_t pad00
Definition: VATS.h:62
std::uint16_t pad7A
Definition: VATS.h:80
BSSpinLock lock
Definition: VATS.h:91
float magicTimeSlowdown
Definition: VATS.h:82
static VATS * GetSingleton()
Definition: VATS.h:48
float playerMagicTimeSlowdown
Definition: VATS.h:83
NiPointer< Actor > stranger
Definition: VATS.h:90
std::int32_t unkA0
Definition: VATS.h:87
VATS_MODE mode
Definition: VATS.h:64
float safetyTime
Definition: VATS.h:68
VATS_MODE
Definition: VATS.h:43
BSTArray< BSTSmartPointer< VATSCommand > > commandList
Definition: VATS.h:63
Definition: AbsorbEffect.h:6
ActorValue
Definition: ActorValues.h:6
Definition: BSTSingleton.h:50