CommonLibSSE (powerof3)
Loading...
Searching...
No Matches
AIProcess.h
Go to the documentation of this file.
1#pragma once
2
3#include "RE/A/ActorPackage.h"
4#include "RE/B/BSTArray.h"
5#include "RE/B/BSTList.h"
6
7namespace RE
8{
9 enum class RESET_3D_FLAGS;
10 class Actor;
11 class bhkCharacterController;
12 class HighProcess;
13 class NiPoint3;
14 class TESForm;
15 struct HighProcessData;
16 struct MiddleHighProcessData;
17
18 enum class PROCESS_TYPE
19 {
20 kNone = static_cast<std::underlying_type_t<PROCESS_TYPE>>(-1),
21 kHigh = 0,
22 kMiddleHigh = 1,
23 kMiddleLow = 2,
24 kLow = 3
25 };
26
28 {
29 public:
30 // members
31 std::int32_t hourPackageEvaluated; // 0
32 };
33 static_assert(sizeof(MiddleLowProcessData) == 0x4);
34
36 {
37 public:
38 // members
39 bool dirty; // 0
40 std::uint8_t pad1; // 1
41 std::uint16_t pad2; // 2
42 float value; // 4
43 };
44 static_assert(sizeof(CachedValueData) == 0x8);
45
47 {
48 public:
49 enum class Flags
50 {
51 kNone = 0,
52 kRadius = 1 << 0,
53 kWidth = 1 << 1,
54 kLength = 1 << 2,
55 kDPS = 1 << 3,
57 kEyeLevel = 1 << 9,
58 kConditionPreventsRun = 1 << 10,
59 kForwardLength = 1 << 11,
60 kActorIsGhost = 1 << 20,
61 kHealthDamaged = 1 << 21,
62 kMagickaPointsDamaged = 1 << 22,
63 kStaminaDamaged = 1 << 23,
64 kOwnerIsNPC = 1 << 25,
65 kOwnerIsUndead = 1 << 26,
67 };
68
69 enum class BooleanValue
70 {
71 kNone = 0,
72 kConditionPreventsRun = 1 << 0,
73 kOwnerIsNPC = 1 << 1,
74 kOwnerIsUndead = 1 << 2,
76 };
77
78 float cachedRadius; // 00
79 float cachedWidth; // 04
80 float cachedLength; // 08
82 float cachedDPS; // 10
83 float cachedEyeLevel; // 14
84 float cachedWalkSpeed; // 18
85 float cachedRunSpeed; // 1C
86 float cachedJogSpeed; // 20
92 };
93 static_assert(sizeof(CachedValues) == 0x60);
94
96 {
97 public:
98 // members
99 std::uint64_t unk00; // 00
100 std::uint64_t unk08; // 08
101 std::uint64_t unk10; // 10
102 std::uint64_t unk18; // 18
103 std::uint64_t unk20; // 20
104 };
105 static_assert(sizeof(ObjectstoAcquire) == 0x28);
106
108 {
109 public:
110 enum class LowProcessFlags : std::uint8_t
111 {
112 kNone = 0,
113 kTargetActivated = 1 << 0,
114 kCurrentActionComplete = 1 << 1,
115 kAlert = 1 << 3,
116 kFollower = 1 << 4,
117 kPackageDoneOnce = 1 << 5,
118 kPackageIdleDone = 1 << 6
119 };
120
121 struct Hands
122 {
123 enum Hand : std::uint32_t
124 {
127 kTotal
128 };
129 };
131
132 struct Data0B8
133 {
134 public:
135 // members
136 void* unk00; // 00
138 void* unk10; // 10
139 void* unk18; // 18
140 std::uint64_t unk20; // 20
141 void* unk28; // 28
142 std::uint32_t unk30; // 30
143 std::uint32_t pad34; // 34
144 };
145 static_assert(sizeof(Data0B8) == 0x38);
146
147 void ClearActionHeadtrackTarget(bool a_defaultHold);
149 float GetCachedHeight() const;
155 [[nodiscard]] bool GetIsSummonedCreature() const noexcept;
159 float GetVoiceRecoveryTime() const;
160 bool InHighProcess() const;
162 bool InMiddleLowProcess() const;
163 bool InLowProcess() const;
164 bool IsArrested() const;
165 bool IsGhost() const;
166 void KnockExplosion(Actor* a_actor, const NiPoint3& a_location, float a_magnitude);
167 void SetActorsDetectionEvent(Actor* a_actor, const NiPoint3& a_location, std::int32_t a_soundLevel, TESObjectREFR* a_ref);
168 void SetArrested(bool a_arrested);
169 void SetCachedHeight(float a_height);
170 void SetHeadtrackTarget(Actor* a_owner, NiPoint3& a_targetPosition);
172 void Update3DModel(Actor* a_actor);
173
174 // members
179 float unk048; // 048
180 std::uint32_t unk04C; // 04C
182 std::int32_t numberItemsActivate; // 058
183 std::uint32_t pad05C; // 05C
188 float essentialDownTimer; // 090
189 float deathTime; // 094
190 float trackedDamage; // 098
191 std::uint32_t pad09C; // 09C
195 std::uint64_t unk100; // 100
196 std::uint64_t unk108; // 108
199 std::uint64_t unk118; // 118
200 std::uint64_t unk120; // 120
201 std::uint64_t unk128; // 128
202 std::uint32_t unk130; // 130
203 std::uint16_t unk134; // 134
204 stl::enumeration<LowProcessFlags, std::uint8_t> lowProcessFlags; // 136
205 stl::enumeration<PROCESS_TYPE, std::uint8_t> processLevel; // 137
207 bool ignoringCombat; // 139
208 bool endAlarmOnActor; // 13A
209 bool escortingPlayer; // 13B
210 std::uint32_t pad13C; // 13C
211
212 protected:
213 void Update3DModel_Impl(Actor* a_actor);
214 };
215 static_assert(sizeof(AIProcess) == 0x140);
216}
Definition: AIProcess.h:108
CachedValues * cachedValues
Definition: AIProcess.h:181
float deathTime
Definition: AIProcess.h:189
std::uint32_t pad09C
Definition: AIProcess.h:191
float GetCachedHeight() const
bool endAlarmOnActor
Definition: AIProcess.h:208
std::int32_t numberItemsActivate
Definition: AIProcess.h:182
void KnockExplosion(Actor *a_actor, const NiPoint3 &a_location, float a_magnitude)
void SetCachedHeight(float a_height)
std::uint32_t unk130
Definition: AIProcess.h:202
TESForm * equippedObjects[Hand::kTotal]
Definition: AIProcess.h:194
MiddleLowProcessData * middleLow
Definition: AIProcess.h:175
BSTArray< TESForm * > forms
Definition: AIProcess.h:192
stl::enumeration< PROCESS_TYPE, std::uint8_t > processLevel
Definition: AIProcess.h:205
bool ignoringCombat
Definition: AIProcess.h:207
bool GetIsSummonedCreature() const noexcept
RefHandle followTarget
Definition: AIProcess.h:197
float unk048
Definition: AIProcess.h:179
bool InMiddleHighProcess() const
ObjectRefHandle GetHeadtrackTarget() const
ObjectstoAcquire * savedAcquireObject
Definition: AIProcess.h:187
std::uint64_t unk118
Definition: AIProcess.h:199
Data0B8 unk0B8
Definition: AIProcess.h:193
bool skippedTimeStampForPathing
Definition: AIProcess.h:206
BSSimpleList< TESObjectREFR * > genericLocations
Definition: AIProcess.h:185
bool InLowProcess() const
bool escortingPlayer
Definition: AIProcess.h:209
ActorPackage currentPackage
Definition: AIProcess.h:178
bool InMiddleLowProcess() const
ObjectstoAcquire * acquireObject
Definition: AIProcess.h:186
void Update3DModel_Impl(Actor *a_actor)
Actor * GetUserData() const
bhkCharacterController * GetCharController()
float GetVoiceRecoveryTime() const
std::uint64_t unk128
Definition: AIProcess.h:201
BSSimpleList< ObjectstoAcquire * > objects
Definition: AIProcess.h:184
void ClearActionHeadtrackTarget(bool a_defaultHold)
TESForm * GetEquippedRightHand()
void ClearMuzzleFlashes()
void SetActorsDetectionEvent(Actor *a_actor, const NiPoint3 &a_location, std::int32_t a_soundLevel, TESObjectREFR *a_ref)
bool IsGhost() const
TESForm * GetEquippedLeftHand()
std::uint64_t unk108
Definition: AIProcess.h:196
ObjectRefHandle GetOccupiedFurniture() const
void SetHeadtrackTarget(Actor *a_owner, NiPoint3 &a_targetPosition)
RefHandle target
Definition: AIProcess.h:198
std::uint16_t unk134
Definition: AIProcess.h:203
TESPackage * GetRunningPackage() const
float trackedDamage
Definition: AIProcess.h:190
std::uint32_t unk04C
Definition: AIProcess.h:180
stl::enumeration< LowProcessFlags, std::uint8_t > lowProcessFlags
Definition: AIProcess.h:204
bool InHighProcess() const
std::uint64_t unk120
Definition: AIProcess.h:200
MiddleHighProcessData * middleHigh
Definition: AIProcess.h:176
std::uint32_t pad05C
Definition: AIProcess.h:183
std::uint32_t pad13C
Definition: AIProcess.h:210
LowProcessFlags
Definition: AIProcess.h:111
void Set3DUpdateFlag(RESET_3D_FLAGS a_flags)
float essentialDownTimer
Definition: AIProcess.h:188
std::uint64_t unk100
Definition: AIProcess.h:195
HighProcessData * high
Definition: AIProcess.h:177
void Update3DModel(Actor *a_actor)
ActorHandle GetCommandingActor() const
bool IsArrested() const
void SetArrested(bool a_arrested)
Definition: Actor.h:127
Definition: ActorPackage.h:12
Definition: BSTList.h:10
Definition: BSTArray.h:377
Definition: AIProcess.h:28
std::int32_t hourPackageEvaluated
Definition: AIProcess.h:31
Definition: NiPoint3.h:6
Definition: TESForm.h:35
Definition: TESObjectREFR.h:110
Definition: TESPackage.h:248
Definition: bhkCharacterController.h:66
Definition: PCH.h:217
Definition: AbsorbEffect.h:6
RESET_3D_FLAGS
Definition: MiddleHighProcessData.h:40
PROCESS_TYPE
Definition: AIProcess.h:19
std::uint32_t RefHandle
Definition: BSCoreTypes.h:6
Definition: PCH.h:74
Definition: EffectArchetypes.h:65
Definition: AIProcess.h:133
void * unk28
Definition: AIProcess.h:141
std::uint32_t unk30
Definition: AIProcess.h:142
std::uint64_t unk20
Definition: AIProcess.h:140
void * unk00
Definition: AIProcess.h:136
std::uint32_t pad34
Definition: AIProcess.h:143
void * unk18
Definition: AIProcess.h:139
Data0B8 * unk08
Definition: AIProcess.h:137
void * unk10
Definition: AIProcess.h:138
Definition: AIProcess.h:122
Hand
Definition: AIProcess.h:124
@ kRight
Definition: AIProcess.h:126
@ kLeft
Definition: AIProcess.h:125
@ kTotal
Definition: AIProcess.h:127
Definition: AIProcess.h:36
bool dirty
Definition: AIProcess.h:39
std::uint16_t pad2
Definition: AIProcess.h:41
std::uint8_t pad1
Definition: AIProcess.h:40
float value
Definition: AIProcess.h:42
Definition: AIProcess.h:47
float cachedDPS
Definition: AIProcess.h:82
stl::enumeration< Flags, std::uint32_t > flags
Definition: AIProcess.h:89
float cachedRunSpeed
Definition: AIProcess.h:85
BooleanValue
Definition: AIProcess.h:70
float cachedLength
Definition: AIProcess.h:80
stl::enumeration< BooleanValue, std::uint32_t > booleanValues
Definition: AIProcess.h:88
BSTArray< CachedValueData > actorValueCache
Definition: AIProcess.h:90
float cachedJogSpeed
Definition: AIProcess.h:86
Flags
Definition: AIProcess.h:50
BSTArray< CachedValueData > permanentActorValueCache
Definition: AIProcess.h:91
float cachedEyeLevel
Definition: AIProcess.h:83
float cachedFastWalkSpeed
Definition: AIProcess.h:87
float cachedForwardLength
Definition: AIProcess.h:81
float cachedWidth
Definition: AIProcess.h:79
float cachedRadius
Definition: AIProcess.h:78
float cachedWalkSpeed
Definition: AIProcess.h:84
Definition: HighProcessData.h:59
Definition: MiddleHighProcessData.h:132
Definition: AIProcess.h:96
std::uint64_t unk20
Definition: AIProcess.h:103
std::uint64_t unk00
Definition: AIProcess.h:99
std::uint64_t unk18
Definition: AIProcess.h:102
std::uint64_t unk10
Definition: AIProcess.h:101
std::uint64_t unk08
Definition: AIProcess.h:100