commonlibsse_ng\re\m/
MiddleHighProcessData.rs

1use core::ffi::c_void;
2
3use crate::re::ActorPackage::ActorPackage;
4use crate::re::BGSEquipSlot::BGSEquipSlot;
5use crate::re::BGSPerkEntry::BGSPerkEntry;
6use crate::re::BSAnimationGraphManager::{BSAnimationGraphManager, BSAnimationGraphVariableCache};
7use crate::re::BSAtomic::BSSpinLock;
8use crate::re::BSPointerHandle::{ActorHandle, ObjectRefHandle};
9use crate::re::BSTArray::BSTArray;
10use crate::re::BSTEvent::BSTEventSource;
11use crate::re::BSTList::BSSimpleList;
12use crate::re::BSTSmartPointer::BSTSmartPointer;
13use crate::re::ExtraDataList::ExtraDataList;
14use crate::re::InventoryEntryData::InventoryEntryData;
15use crate::re::MagicItem::MagicItem;
16use crate::re::MagicSystem;
17use crate::re::NiAVObject::NiAVObject;
18use crate::re::NiPoint3::NiPoint3;
19use crate::re::NiSmartPointer::NiPointer;
20use crate::re::TESBoundObject::TESBoundObject;
21use crate::re::TESObjectREFR::TESObjectREFR;
22use crate::re::{
23    ActiveEffect, AnimResponse, BGSEntryPoint, BSCloneReserver, BSFaceGenAnimationData,
24    BSFaceGenNiNode, BSLightingShaderProperty, HitData, NiNode, QueuedFile, TESIdleForm,
25    bhkCharacterController, bhkRagdollPenetrationUtil,
26};
27
28#[commonlibsse_ng_derive_internal::to_bitflags]
29#[derive(Debug, Clone, Copy, PartialEq, Eq, PartialOrd, Ord, Hash)]
30#[repr(u8)]
31pub enum RESET_3D_FLAGS {
32    None = 0,
33    Model = 1 << 0,
34    Skin = 1 << 1,
35    Head = 1 << 2,
36    Face = 1 << 3,
37    Scale = 1 << 4,
38    Skeleton = 1 << 5,
39    InitDefault = 1 << 6,
40    SkyCellSkin = 1 << 7,
41}
42
43#[repr(C)]
44#[derive(Debug)]
45pub struct CommandedActorData {
46    commandedActor: ActorHandle,     // 0x00
47    pad04: u32,                      // 0x04
48    activeEffect: *mut ActiveEffect, // 0x10
49}
50
51#[repr(C)]
52#[derive(Debug)]
53pub struct ObjectEquipParams {
54    extraDataList: *mut ExtraDataList, // 0x00
55    count: i32,                        // 0x08
56    pad0C: u32,                        // 0x0C
57    equipSlot: *const BGSEquipSlot,    // 0x10
58    unk18: *mut c_void,                // 0x18
59    playEquipSounds: bool,             // 0x20
60    forceEquip: bool,                  // 0x21
61    showMessage: bool,                 // 0x22
62    unk23: bool,                       // 0x23
63    unk24: bool,                       // 0x24
64    pad25: u8,                         // 0x25
65    pad26: u16,                        // 0x26
66}
67
68#[repr(C)]
69#[derive(Debug)]
70pub struct QueuedItem {
71    next: *mut QueuedItem,              // 0x00
72    object: *mut TESBoundObject,        // 0x08
73    equipParams: ObjectEquipParams,     // 0x10
74    queuedFiles: NiPointer<QueuedFile>, // 0x38
75    equip: bool,                        // 0x40
76    pad41: u8,                          // 0x41
77    pad42: u16,                         // 0x42
78    pad44: u32,                         // 0x44
79}
80
81#[repr(C)]
82#[derive(Debug)]
83pub struct DeferredHideLimb {
84    dismemberTimer: f32,                    // 0x00
85    limbIndex: u32,                         // 0x04
86    dismemberedLimbRoot: NiPointer<NiNode>, // 0x08
87    replacementLimb: NiPointer<NiNode>,     // 0x10
88    next: *mut DeferredHideLimb,            // 0x18
89    explosion: bool,                        // 0x20
90    pad21: u8,                              // 0x21
91    pad22: u16,                             // 0x22
92    pad24: u32,                             // 0x24
93}
94const _: () = assert!(core::mem::size_of::<DeferredHideLimb>() == 0x28);
95
96#[repr(C)]
97#[derive(Debug)]
98pub struct AIPerkData {
99    pub perkEntryArrays: [BSTArray<*mut BGSPerkEntry>; BGSEntryPoint::ENTRY_POINT_CEnum::count()],
100}
101const _: () = assert!(core::mem::size_of::<AIPerkData>() == 0x8A0);
102
103#[repr(C)]
104#[derive(Debug)]
105pub struct MiddleHighProcessData {
106    pub unk000: BSTEventSource<*mut c_void>,   // 0x000
107    pub runOncePackage: ActorPackage,          // 0x058
108    pub deadDetectList: BSTArray<ActorHandle>, // 0x088
109    pub refListChairBed: BSSimpleList<*mut TESObjectREFR>, // 0x0A0
110    pub rotation: NiPoint3,                    // 0x0B0
111    pub rotationSpeed: NiPoint3,               // 0x0BC
112    pub actorMountPosition: NiPoint3,          // 0x0C8
113    pub furniturePathPoint: NiPoint3,          // 0x0D4
114    pub lastSeenPosition: NiPoint3,            // 0x0E0
115    pub bleedoutAttacker: u32,                 // 0x0EC
116    pub wardState: MagicSystem::WardState,     // 0x0F0
117    pub pad0F4: u32,                           // 0x0F4
118    pub animResponse: BSTSmartPointer<AnimResponse>, // 0x0F8
119    pub commandedActors: BSTArray<CommandedActorData>, // 0x100
120    pub damageRootNode: [*mut NiNode; 6],      // 0x118
121    pub unk148: *mut NiAVObject,               // 0x148
122    pub weaponBone: *mut NiNode,               // 0x150
123    pub headNode: *mut NiAVObject,             // 0x158
124    pub torsoNode: *mut NiAVObject,            // 0x160
125    pub faceTargetSourceNode: *mut NiAVObject, // 0x168
126    pub faceNodeSkinned: *mut BSFaceGenNiNode, // 0x170
127    pub lightingProperty: NiPointer<BSLightingShaderProperty>, // 0x178
128    pub unk180: u64,                           // 0x180
129    pub itemstoEquipUnequip: *mut QueuedItem,  // 0x188
130    pub lastHitData: *mut HitData,             // 0x190
131    pub headDeferredHideLimb: *mut DeferredHideLimb, // 0x198
132    pub activeEffects: *mut BSSimpleList<*mut ActiveEffect>, // 0x1A0
133    pub animationGraphManager: BSTSmartPointer<BSAnimationGraphManager>, // 0x1A8
134    pub animationVariableCache: *mut BSAnimationGraphVariableCache, // 0x1B0
135    pub unk1B8: BSTArray<*mut c_void>,         // 0x1B8
136    pub unk1D0: BSTArray<*mut c_void>,         // 0x1D0
137    pub unk1E8: BSSpinLock,                    // 0x1E8
138    pub unk1F0: *mut c_void,                   // 0x1F0 - smart ptr
139    pub unk1F8: u16,                           // 0x1F8
140    pub unk1FA: u16,                           // 0x1FA
141    pub unk1FC: u32,                           // 0x1FC
142    pub unk200: u32,                           // 0x200
143    pub headHeightOffset: f32,                 // 0x204
144    pub occupiedFurniture: ObjectRefHandle,    // 0x208
145    pub unk20C: u32,                           // 0x20C
146    pub unk210: *mut TESIdleForm,              // 0x210
147    pub commandingActor: ActorHandle,          // 0x218
148    pub pad21C: u32,                           // 0x21C
149    pub leftHand: *mut InventoryEntryData,     // 0x220
150    pub furnitureIdle: *mut TESIdleForm,       // 0x228
151    pub unk230: *mut c_void,                   // 0x230 - smart ptr
152    pub faceAnimationData: *mut BSFaceGenAnimationData, // 0x238
153    pub currentPackageSpell: *mut MagicItem,   // 0x240
154    pub unk248: u64,                           // 0x248
155    pub charController: NiPointer<bhkCharacterController>, // 0x250
156    pub penetrationDetectUtil: BSTSmartPointer<bhkRagdollPenetrationUtil>, // 0x258
157    pub rightHand: *mut InventoryEntryData,    // 0x260
158    pub bothHands: *mut InventoryEntryData,    // 0x268
159    pub bodyPartPreload: NiPointer<QueuedFile>, // 0x270
160    pub unk278: NiPointer<BSCloneReserver>,    // 0x278
161    pub lastIdlePlayed: *mut TESIdleForm,      // 0x280
162    pub perkData: *mut AIPerkData,             // 0x288
163    pub unk290: u32,                           // 0x290
164    pub currentFurnitureSubgraphID: u32,       // 0x294
165    pub unk298: f32,                           // 0x298
166    pub unk29C: f32,                           // 0x29C
167    pub unk2A0: f32,                           // 0x2A0
168    pub unk2A4: f32,                           // 0x2A4
169    pub currentMovementSpeed: f32,             // 0x2A8
170    pub unk2AC: f32,                           // 0x2AC
171    pub unk2B0: f32,                           // 0x2B0
172    pub bleedoutRate: f32,                     // 0x2B4
173    pub unk2B8: f32,                           // 0x2B8
174    pub maximumWardPower: f32,                 // 0x2BC
175    pub unk2C0: f32,                           // 0x2C0
176    pub torchEvaluationTimer: f32,             // 0x2C4
177    pub alphaMult: f32,                        // 0x2C8
178    pub scriptRefractPower: f32,               // 0x2CC
179    pub unk2D0: f32,                           // 0x2D0
180    pub deferredKillTimer: f32,                // 0x2D4
181    pub killMoveTimer: f32,                    // 0x2D8
182    pub unk2DC: f32,                           // 0x2DC
183    pub unk2E0: u32,                           // 0x2E0
184    pub unk2E4: u32,                           // 0x2E4
185    pub currentFurnitureMarkerID: u32,         // 0x2E8
186    pub unk2EC: u32,                           // 0x2EC
187    pub unk2F0: u64,                           // 0x2F0
188    pub unk2F8: u32,                           // 0x2F8
189    pub unk2FC: u32,                           // 0x2FC
190    pub unk300: u32,                           // 0x300
191    pub unk304: u16,                           // 0x304
192    pub unk306: u16,                           // 0x306
193    pub unk308: u64,                           // 0x308
194    pub unk310: u8,                            // 0x310
195    pub update3DModel: RESET_3D_FLAGS,         // 0x311
196    pub unk312: u16,                           // 0x312
197    pub unk314: u16,                           // 0x314
198    pub unk316: bool,                          // 0x316
199    pub unk317: bool,                          // 0x317
200    pub unk318: bool,                          // 0x318
201    pub unk319: bool,                          // 0x319
202    pub unk31A: bool,                          // 0x31A
203    pub pickPocketed: bool,                    // 0x31B
204    pub summonedCreature: bool,                // 0x31C
205    pub forceNextUpdate: bool,                 // 0x31D
206    pub unk31E: bool,                          // 0x31E
207    pub unk31F: bool,                          // 0x31F
208    pub unk320: bool,                          // 0x320
209    pub unk321: bool,                          // 0x321
210    pub beenAttacked: bool,                    // 0x322
211    pub alwaysHit: bool,                       // 0x323
212    pub doNoDamage: bool,                      // 0x324
213    pub soulTrapped: bool,                     // 0x325
214    pub unk326: bool,                          // 0x326
215    pub unk327: bool,                          // 0x327
216    pub unk328: bool,                          // 0x328
217    pub preventCombat: bool,                   // 0x329
218    pub unk32A: bool,                          // 0x32A
219    pub isFleeing: bool,                       // 0x32B
220    pub unk32C: bool,                          // 0x32C
221    pub hostileGuard: bool,                    // 0x32D
222    pub unk32E: bool,                          // 0x32E
223    pub unk32F: bool,                          // 0x32F
224    pub unk330: bool,                          // 0x330
225    pub killQueued: bool,                      // 0x331
226    pub inDeferredKill: bool,                  // 0x332
227    pub pad333: bool,                          // 0x333
228    pub pad334: u32,                           // 0x334
229}
230const _: () = assert!(core::mem::size_of::<MiddleHighProcessData>() == 0x338);