commonlibsse_ng\re\p\PlayerCharacter/
vr_node_data.rs

1use crate::re::NiSmartPointer::NiPointer;
2use crate::re::{BSFadeNode, BSTriShape, NiBillboardNode, NiNode};
3use core::ffi::c_void;
4
5#[commonlibsse_ng_derive_internal::ffi_enum]
6#[repr(u32)]
7#[derive(Debug, Default, Clone, Copy, PartialEq, Eq, PartialOrd, Ord, Hash)]
8pub enum VR_Bow_State {
9    #[default]
10    None,
11    NoAmmo,
12    Idle,
13    ArrowKnocked,
14}
15
16#[derive(Debug)]
17pub struct VR_NODE_DATA {
18    pub PlayerWorldNode: NiPointer<NiNode>,               // 0x3F0
19    pub FollowNode: NiPointer<NiNode>,                    // 0x3F8
20    pub FollowOffset: NiPointer<NiNode>,                  // 0x400
21    pub HeightOffsetNode: NiPointer<NiNode>,              // 0x408
22    pub SnapWalkOffsetNode: NiPointer<NiNode>,            // 0x410
23    pub RoomNode: NiPointer<NiNode>,                      // 0x418
24    pub BlackSphere: NiPointer<NiNode>,                   // 0x420
25    pub uiNode: NiPointer<NiNode>,                        // 0x428
26    pub InWorldUIQuadGeo: NiPointer<BSTriShape>,          // 0x430
27    pub UIPointerNode: NiPointer<NiNode>,                 // 0x438
28    pub UIPointerGeo: NiPointer<BSTriShape>,              // 0x440
29    pub DialogueUINode: NiPointer<NiNode>,                // 0x448
30    pub TeleportDestinationPreview: NiPointer<NiNode>,    // 0x450
31    pub TeleportDestinationFail: NiPointer<NiNode>,       // 0x458
32    pub TeleportSprintPreview: NiPointer<NiNode>,         // 0x460
33    pub SpellOrigin: NiPointer<NiNode>,                   // 0x468
34    pub SpellDestination: NiPointer<NiNode>,              // 0x470
35    pub ArrowOrigin: NiPointer<NiNode>,                   // 0x478
36    pub ArrowDestination: NiPointer<NiNode>,              // 0x480
37    pub QuestMarker: NiPointer<NiNode>,                   // 0x488
38    pub LeftWandNode: NiPointer<NiNode>,                  // 0x490
39    pub LeftWandShakeNode: NiPointer<NiNode>,             // 0x498
40    pub LeftValveIndexControllerNode: NiPointer<NiNode>,  // 0x4A0
41    pub unkNode4A8: NiPointer<NiNode>,                    // 0x4A8
42    pub LeftWeaponOffsetNode: NiPointer<NiNode>,          // 0x4B0
43    pub LeftCrossbowOffsetNode: NiPointer<NiNode>,        // 0x4B8
44    pub LeftMeleeWeaponOffsetNode: NiPointer<NiNode>,     // 0x4C0
45    pub LeftStaffWeaponOffsetNode: NiPointer<NiNode>,     // 0x4C8
46    pub LeftShieldOffsetNode: NiPointer<NiNode>,          // 0x4D0
47    pub RightShieldOffsetNode: NiPointer<NiNode>,         // 0x4D8
48    pub SecondaryMagicOffsetNode: NiPointer<NiNode>,      // 0x4E0
49    pub SecondaryMagicAimNode: NiPointer<NiNode>,         // 0x4E8
50    pub SecondaryStaffMagicOffsetNode: NiPointer<NiNode>, // 0x4F0
51    pub RightWandNode: NiPointer<NiNode>,                 // 0x4F8
52    pub RightWandShakeNode: NiPointer<NiNode>,            // 0x500
53    pub RightValveIndexControllerNode: NiPointer<NiNode>, // 0x508
54    pub unkNode510: NiPointer<NiNode>,                    // 0x510
55    pub RightWeaponOffsetNode: NiPointer<NiNode>,         // 0x518
56    pub RightCrossbowOffsetNode: NiPointer<NiNode>,       // 0x520
57    pub RightMeleeWeaponOffsetNode: NiPointer<NiNode>,    // 0x528
58    pub RightStaffWeaponOffsetNode: NiPointer<NiNode>,    // 0x530
59    pub PrimaryMagicOffsetNode: NiPointer<NiNode>,        // 0x538
60    pub PrimaryMagicAimNode: NiPointer<NiNode>,           // 0x540
61    pub PrimaryStaffMagicOffsetNode: NiPointer<NiNode>,   // 0x548
62    pub unk550: u64,                                      // 0x550
63    pub CrosshairParent: NiPointer<NiBillboardNode>,      // 0x558
64    pub CrosshairSecondaryParent: NiPointer<NiBillboardNode>, // 0x560
65    pub TargetLockParent: NiPointer<NiBillboardNode>,     // 0x568
66    pub GamepadNode: NiPointer<NiNode>,                   // 0x570
67    pub LastSyncPos: NiPointer<NiNode>,                   // 0x578
68    pub UprightHmdNode: NiPointer<NiNode>,                // 0x580
69    pub MapMarkers3D: NiPointer<NiNode>,                  // 0x588
70    pub NPCLHnd: NiPointer<NiNode>,                       // 0x590
71    pub NPCRHnd: NiPointer<NiNode>,                       // 0x598
72    pub NPCLClv: NiPointer<NiNode>,                       // 0x5A0
73    pub NPCRClv: NiPointer<NiNode>,                       // 0x5A8
74    pub unk5B0: u32,                                      // 0x5B0
75    pub unk5B4: u32,                                      // 0x5B4
76    pub unk5B8: u64,                                      // 0x5B8
77    pub bowState: VR_Bow_State,                           // 0x5C0
78    pub unk5C4: u32,                                      // 0x5C4
79    pub BowAimNode: NiPointer<NiNode>,                    // 0x5C8
80    pub BowRotationNode: NiPointer<NiNode>,               // 0x5D0
81    pub ArrowSnapNode: NiPointer<NiNode>,                 // 0x5D8
82    pub ArrowNode: NiPointer<BSFadeNode>,                 // 0x5E0
83    pub ArrowFireNode: NiPointer<BSFadeNode>,             // 0x5E8
84    pub unk5F0: u64,                                      // 0x5F0
85    pub ArrowHoldOffsetNode: NiPointer<NiNode>,           // 0x5F8
86    pub ArrowHoldNode: NiPointer<NiNode>,                 // 0x600
87    pub unk608: u64,                                      // 0x608
88    pub currentArrowSnapDistance: f32,                    // 0x610
89    pub unk614: u32,                                      // 0x614
90    pub currentBowDrawAmount: f32,                        // 0x618 - 0 to 1
91    pub lastRumbleBowDrawAmount: f32,                     // 0x61C - 0 to 1
92    pub unk620: u64,                                      // 0x620
93    pub unk628: u64,                                      // 0x628
94    pub unk630: u64,                                      // 0x630
95    pub QuestMarkerBillBoardsNodeArray: *mut c_void, // 0x638    TODO - Make into proper data structure
96    pub TeleportNodeArray: *mut c_void, // 0x640    TODO - Make into proper data structure
97    pub QuestMarkerBillBoardsNodeArray2: *mut c_void, // 0x648    TODO - Make into proper data structure -> points to same place as QuestMarkerBillBoardsNodeArray
98    pub unk650: u64,                                  // 0x650
99    pub TeleportNodeArray2: *mut c_void, // 0x658    TODO - Make into proper data structure -> points to same place as TeleportNodeArray
100    pub QuestMarkerBillBoardsNodeArray3: *mut c_void, // 0x660    TODO - Make into proper data structure -> points to same place as QuestMarkerBillBoardsNodeArray
101    pub unk668: u64,                                  // 0x668
102    pub unkf32670: f32,                               // 0x670
103    pub unk674: u32,                                  // 0x674
104    pub TeleportNodeArray3: *mut c_void, // 0x678    TODO - Make into proper data structure
105}
106const _: () = assert!(core::mem::size_of::<VR_NODE_DATA>() == 0x290);