Skip to main content

samp_sdk/omp/generated/
structs.rs

1//! Structs the open.mp headers pass by value or by reference — generated
2//! by `cargo xtask gen-omp`. Do not edit.
3//!
4//! Each mirrors its C++ struct field for field. The layout is clang's for
5//! both ABIs, and the assertions below each struct fail the build if the
6//! Rust one differs from it. An anonymous union becomes a named Rust
7//! union field (`u0`, ...); a run of bit-fields becomes one integer
8//! (`bits_*`), first declared in the lowest bits.
9
10#![allow(unused_imports, clippy::struct_field_names)]
11
12use crate::omp::containers::{FlatSet, HybridString, Pair, Span};
13use crate::omp::types::{
14    Colour, GTAQuat, Hours, Microseconds, Milliseconds, Minutes, Seconds, TimePoint, Vector2,
15    Vector3, Vector4, WorldTimePoint,
16};
17use crate::omp::vtable::VirtualReturn;
18use crate::omp::*;
19
20/// An anonymous union inside a mirrored struct.
21#[repr(C)]
22#[derive(Clone, Copy)]
23pub union ConsoleCommandSenderData1 {
24    /// `player`.
25    pub player: *mut IPlayer,
26    /// `handler`.
27    pub handler: *mut std::ffi::c_void,
28}
29
30/// An anonymous union inside a mirrored struct.
31#[repr(C)]
32#[derive(Clone, Copy)]
33pub union ObjectMaterialData0 {
34    /// `model`.
35    pub model: i32,
36    /// `(anonymous)`.
37    pub s1: ObjectMaterialData0_1,
38}
39
40/// An anonymous struct inside a mirrored struct.
41#[repr(C)]
42#[derive(Clone, Copy)]
43pub struct ObjectMaterialData0_1 {
44    /// `materialSize`.
45    pub material_size: u8,
46    /// `fontSize`.
47    pub font_size: u8,
48    /// `alignment`.
49    pub alignment: u8,
50    /// `bold`.
51    pub bold: bool,
52}
53
54/// An anonymous union inside a mirrored struct.
55#[repr(C)]
56#[derive(Clone, Copy)]
57pub union ObjectMaterialData1 {
58    /// `materialColour`.
59    pub material_colour: Colour,
60    /// `fontColour`.
61    pub font_colour: Colour,
62}
63
64/// An anonymous union inside a mirrored struct.
65#[repr(C)]
66#[derive(Clone, Copy)]
67pub union PeerAddress1 {
68    /// `v4`.
69    pub v4: u32,
70    /// `v6`.
71    pub v6: PeerAddress1_v6,
72}
73
74/// An anonymous union inside a mirrored struct.
75#[repr(C)]
76#[derive(Clone, Copy)]
77pub union PeerAddress1_v6 {
78    /// `segments`.
79    pub segments: [u16; 8],
80    /// `bytes`.
81    pub bytes: [u8; 16],
82}
83
84/// An anonymous union inside a mirrored struct.
85#[repr(C)]
86#[derive(Clone, Copy)]
87pub union VehicleDriverSyncPacket14 {
88    /// `AdditionalKeyWeapon`.
89    pub additional_key_weapon: u8,
90}
91
92/// An anonymous union inside a mirrored struct.
93#[repr(C)]
94#[derive(Clone, Copy)]
95pub union VehicleDriverSyncPacket15 {
96    /// `HydraThrustAngle`.
97    pub hydra_thrust_angle: u32,
98    /// `TrainSpeed`.
99    pub train_speed: f32,
100}
101
102/// An anonymous union inside a mirrored struct.
103#[repr(C)]
104#[derive(Clone, Copy)]
105pub union VehiclePassengerSyncPacket2 {
106    /// `DriveBySeatAdditionalKeyWeapon`.
107    pub drive_by_seat_additional_key_weapon: u16,
108}
109
110/// `ActorSpawnData` in `Server/Components/Actors/actors.hpp`.
111#[repr(C)]
112#[derive(Debug, Clone, Copy, PartialEq)]
113pub struct ActorSpawnData {
114    /// `position`.
115    pub position: Vector3,
116    /// `facingAngle`.
117    pub facing_angle: f32,
118    /// `skin`.
119    pub skin: i32,
120}
121
122impl Default for ActorSpawnData {
123    /// The C++ struct's own defaults.
124    fn default() -> Self {
125        Self {
126            position: Vector3::ZERO,
127            facing_angle: 0.0,
128            skin: 0,
129        }
130    }
131}
132
133#[cfg(all(target_arch = "x86", target_os = "linux"))]
134const _: () = {
135    assert!(std::mem::size_of::<ActorSpawnData>() == 20);
136    assert!(std::mem::offset_of!(ActorSpawnData, position) == 0);
137    assert!(std::mem::offset_of!(ActorSpawnData, facing_angle) == 12);
138    assert!(std::mem::offset_of!(ActorSpawnData, skin) == 16);
139};
140
141#[cfg(all(target_arch = "x86", target_env = "msvc"))]
142const _: () = {
143    assert!(std::mem::size_of::<ActorSpawnData>() == 20);
144    assert!(std::mem::offset_of!(ActorSpawnData, position) == 0);
145    assert!(std::mem::offset_of!(ActorSpawnData, facing_angle) == 12);
146    assert!(std::mem::offset_of!(ActorSpawnData, skin) == 16);
147};
148
149impl VirtualReturn for ActorSpawnData {
150    type Raw = Self;
151    fn from_raw(raw: Self) -> Self {
152        raw
153    }
154}
155
156/// `AnimationData` in `anim.hpp`.
157///
158/// The C++ side copies it with a constructor, so it travels by
159/// reference only: build one here and pass `&`, or read the server's.
160#[repr(C)]
161pub struct AnimationData {
162    /// `delta`.
163    pub delta: f32,
164    /// `loop`.
165    pub r#loop: bool,
166    /// `lockX`.
167    pub lock_x: bool,
168    /// `lockY`.
169    pub lock_y: bool,
170    /// `freeze`.
171    pub freeze: bool,
172    /// `time`.
173    pub time: u32,
174    /// `lib`.
175    pub lib: HybridString<16>,
176    /// `name`.
177    pub name: HybridString<24>,
178}
179
180#[cfg(all(target_arch = "x86", target_os = "linux"))]
181const _: () = {
182    assert!(std::mem::size_of::<AnimationData>() == 60);
183    assert!(std::mem::offset_of!(AnimationData, delta) == 0);
184    assert!(std::mem::offset_of!(AnimationData, r#loop) == 4);
185    assert!(std::mem::offset_of!(AnimationData, lock_x) == 5);
186    assert!(std::mem::offset_of!(AnimationData, lock_y) == 6);
187    assert!(std::mem::offset_of!(AnimationData, freeze) == 7);
188    assert!(std::mem::offset_of!(AnimationData, time) == 8);
189    assert!(std::mem::offset_of!(AnimationData, lib) == 12);
190    assert!(std::mem::offset_of!(AnimationData, name) == 32);
191};
192
193#[cfg(all(target_arch = "x86", target_env = "msvc"))]
194const _: () = {
195    assert!(std::mem::size_of::<AnimationData>() == 60);
196    assert!(std::mem::offset_of!(AnimationData, delta) == 0);
197    assert!(std::mem::offset_of!(AnimationData, r#loop) == 4);
198    assert!(std::mem::offset_of!(AnimationData, lock_x) == 5);
199    assert!(std::mem::offset_of!(AnimationData, lock_y) == 6);
200    assert!(std::mem::offset_of!(AnimationData, freeze) == 7);
201    assert!(std::mem::offset_of!(AnimationData, time) == 8);
202    assert!(std::mem::offset_of!(AnimationData, lib) == 12);
203    assert!(std::mem::offset_of!(AnimationData, name) == 32);
204};
205
206/// `BanEntry` in `network.hpp`.
207///
208/// The C++ side copies it with a constructor, so it travels by
209/// reference only: build one here and pass `&`, or read the server's.
210#[repr(C)]
211pub struct BanEntry {
212    /// `address`.
213    pub address: HybridString<46>,
214    /// `time`.
215    pub time: WorldTimePoint,
216    /// `name`.
217    pub name: HybridString<25>,
218    /// `reason`.
219    pub reason: HybridString<32>,
220}
221
222#[cfg(all(target_arch = "x86", target_os = "linux"))]
223const _: () = {
224    assert!(std::mem::size_of::<BanEntry>() == 128);
225    assert!(std::mem::offset_of!(BanEntry, address) == 0);
226    assert!(std::mem::offset_of!(BanEntry, time) == 52);
227    assert!(std::mem::offset_of!(BanEntry, name) == 60);
228    assert!(std::mem::offset_of!(BanEntry, reason) == 92);
229};
230
231#[cfg(all(target_arch = "x86", target_env = "msvc"))]
232const _: () = {
233    assert!(std::mem::size_of::<BanEntry>() == 136);
234    assert!(std::mem::offset_of!(BanEntry, address) == 0);
235    assert!(std::mem::offset_of!(BanEntry, time) == 56);
236    assert!(std::mem::offset_of!(BanEntry, name) == 64);
237    assert!(std::mem::offset_of!(BanEntry, reason) == 96);
238};
239
240/// `ConsoleCommandSenderData` in `Server/Components/Console/console.hpp`.
241#[repr(C)]
242#[derive(Clone, Copy)]
243pub struct ConsoleCommandSenderData {
244    /// `sender`.
245    pub sender: i32,
246    /// `(anonymous union)`.
247    pub u1: ConsoleCommandSenderData1,
248}
249
250#[cfg(all(target_arch = "x86", target_os = "linux"))]
251const _: () = {
252    assert!(std::mem::size_of::<ConsoleCommandSenderData>() == 8);
253    assert!(std::mem::offset_of!(ConsoleCommandSenderData, sender) == 0);
254    assert!(std::mem::offset_of!(ConsoleCommandSenderData, u1) == 4);
255};
256
257#[cfg(all(target_arch = "x86", target_env = "msvc"))]
258const _: () = {
259    assert!(std::mem::size_of::<ConsoleCommandSenderData>() == 8);
260    assert!(std::mem::offset_of!(ConsoleCommandSenderData, sender) == 0);
261    assert!(std::mem::offset_of!(ConsoleCommandSenderData, u1) == 4);
262};
263
264impl VirtualReturn for ConsoleCommandSenderData {
265    type Raw = Self;
266    fn from_raw(raw: Self) -> Self {
267        raw
268    }
269}
270
271/// `LegacyDBResult` in `Server/Components/Databases/databases.hpp`.
272#[repr(C)]
273#[derive(Debug, Clone, Copy, PartialEq)]
274pub struct LegacyDBResult {
275    /// `rows`.
276    pub rows: i32,
277    /// `columns`.
278    pub columns: i32,
279    /// `results`.
280    pub results: *mut *mut i8,
281}
282
283#[cfg(all(target_arch = "x86", target_os = "linux"))]
284const _: () = {
285    assert!(std::mem::size_of::<LegacyDBResult>() == 12);
286    assert!(std::mem::offset_of!(LegacyDBResult, rows) == 0);
287    assert!(std::mem::offset_of!(LegacyDBResult, columns) == 4);
288    assert!(std::mem::offset_of!(LegacyDBResult, results) == 8);
289};
290
291#[cfg(all(target_arch = "x86", target_env = "msvc"))]
292const _: () = {
293    assert!(std::mem::size_of::<LegacyDBResult>() == 12);
294    assert!(std::mem::offset_of!(LegacyDBResult, rows) == 0);
295    assert!(std::mem::offset_of!(LegacyDBResult, columns) == 4);
296    assert!(std::mem::offset_of!(LegacyDBResult, results) == 8);
297};
298
299impl VirtualReturn for LegacyDBResult {
300    type Raw = Self;
301    fn from_raw(raw: Self) -> Self {
302        raw
303    }
304}
305
306/// `NetworkID` in `network.hpp`.
307#[repr(C)]
308#[derive(Clone, Copy)]
309pub struct NetworkID {
310    /// `address`.
311    pub address: PeerAddress,
312    /// `port`.
313    pub port: u16,
314}
315
316#[cfg(all(target_arch = "x86", target_os = "linux"))]
317const _: () = {
318    assert!(std::mem::size_of::<NetworkID>() == 24);
319    assert!(std::mem::offset_of!(NetworkID, address) == 0);
320    assert!(std::mem::offset_of!(NetworkID, port) == 20);
321};
322
323#[cfg(all(target_arch = "x86", target_env = "msvc"))]
324const _: () = {
325    assert!(std::mem::size_of::<NetworkID>() == 24);
326    assert!(std::mem::offset_of!(NetworkID, address) == 0);
327    assert!(std::mem::offset_of!(NetworkID, port) == 20);
328};
329
330impl VirtualReturn for NetworkID {
331    type Raw = Self;
332    fn from_raw(raw: Self) -> Self {
333        raw
334    }
335}
336
337/// `ObjectAttachmentData` in `Server/Components/Objects/objects.hpp`.
338#[repr(C)]
339#[derive(Debug, Clone, Copy, PartialEq)]
340pub struct ObjectAttachmentData {
341    /// `type`.
342    pub r#type: u8,
343    /// `syncRotation`.
344    pub sync_rotation: bool,
345    /// `ID`.
346    pub id: i32,
347    /// `offset`.
348    pub offset: Vector3,
349    /// `rotation`.
350    pub rotation: Vector3,
351}
352
353impl Default for ObjectAttachmentData {
354    /// The C++ struct's own defaults.
355    fn default() -> Self {
356        Self {
357            r#type: 0,
358            sync_rotation: false,
359            id: 0,
360            offset: Vector3::ZERO,
361            rotation: Vector3::ZERO,
362        }
363    }
364}
365
366#[cfg(all(target_arch = "x86", target_os = "linux"))]
367const _: () = {
368    assert!(std::mem::size_of::<ObjectAttachmentData>() == 32);
369    assert!(std::mem::offset_of!(ObjectAttachmentData, r#type) == 0);
370    assert!(std::mem::offset_of!(ObjectAttachmentData, sync_rotation) == 1);
371    assert!(std::mem::offset_of!(ObjectAttachmentData, id) == 4);
372    assert!(std::mem::offset_of!(ObjectAttachmentData, offset) == 8);
373    assert!(std::mem::offset_of!(ObjectAttachmentData, rotation) == 20);
374};
375
376#[cfg(all(target_arch = "x86", target_env = "msvc"))]
377const _: () = {
378    assert!(std::mem::size_of::<ObjectAttachmentData>() == 32);
379    assert!(std::mem::offset_of!(ObjectAttachmentData, r#type) == 0);
380    assert!(std::mem::offset_of!(ObjectAttachmentData, sync_rotation) == 1);
381    assert!(std::mem::offset_of!(ObjectAttachmentData, id) == 4);
382    assert!(std::mem::offset_of!(ObjectAttachmentData, offset) == 8);
383    assert!(std::mem::offset_of!(ObjectAttachmentData, rotation) == 20);
384};
385
386impl VirtualReturn for ObjectAttachmentData {
387    type Raw = Self;
388    fn from_raw(raw: Self) -> Self {
389        raw
390    }
391}
392
393/// `ObjectAttachmentSlotData` in `Server/Components/Objects/objects.hpp`.
394#[repr(C)]
395#[derive(Debug, Clone, Copy, PartialEq)]
396pub struct ObjectAttachmentSlotData {
397    /// `model`.
398    pub model: i32,
399    /// `bone`.
400    pub bone: i32,
401    /// `offset`.
402    pub offset: Vector3,
403    /// `rotation`.
404    pub rotation: Vector3,
405    /// `scale`.
406    pub scale: Vector3,
407    /// `colour1`.
408    pub colour1: Colour,
409    /// `colour2`.
410    pub colour2: Colour,
411}
412
413impl Default for ObjectAttachmentSlotData {
414    /// The C++ struct's own defaults.
415    fn default() -> Self {
416        Self {
417            model: 0,
418            bone: 0,
419            offset: Vector3::ZERO,
420            rotation: Vector3::ZERO,
421            scale: Vector3::ZERO,
422            colour1: Colour::default(),
423            colour2: Colour::default(),
424        }
425    }
426}
427
428#[cfg(all(target_arch = "x86", target_os = "linux"))]
429const _: () = {
430    assert!(std::mem::size_of::<ObjectAttachmentSlotData>() == 52);
431    assert!(std::mem::offset_of!(ObjectAttachmentSlotData, model) == 0);
432    assert!(std::mem::offset_of!(ObjectAttachmentSlotData, bone) == 4);
433    assert!(std::mem::offset_of!(ObjectAttachmentSlotData, offset) == 8);
434    assert!(std::mem::offset_of!(ObjectAttachmentSlotData, rotation) == 20);
435    assert!(std::mem::offset_of!(ObjectAttachmentSlotData, scale) == 32);
436    assert!(std::mem::offset_of!(ObjectAttachmentSlotData, colour1) == 44);
437    assert!(std::mem::offset_of!(ObjectAttachmentSlotData, colour2) == 48);
438};
439
440#[cfg(all(target_arch = "x86", target_env = "msvc"))]
441const _: () = {
442    assert!(std::mem::size_of::<ObjectAttachmentSlotData>() == 52);
443    assert!(std::mem::offset_of!(ObjectAttachmentSlotData, model) == 0);
444    assert!(std::mem::offset_of!(ObjectAttachmentSlotData, bone) == 4);
445    assert!(std::mem::offset_of!(ObjectAttachmentSlotData, offset) == 8);
446    assert!(std::mem::offset_of!(ObjectAttachmentSlotData, rotation) == 20);
447    assert!(std::mem::offset_of!(ObjectAttachmentSlotData, scale) == 32);
448    assert!(std::mem::offset_of!(ObjectAttachmentSlotData, colour1) == 44);
449    assert!(std::mem::offset_of!(ObjectAttachmentSlotData, colour2) == 48);
450};
451
452impl VirtualReturn for ObjectAttachmentSlotData {
453    type Raw = Self;
454    fn from_raw(raw: Self) -> Self {
455        raw
456    }
457}
458
459/// `ObjectMaterialData` in `Server/Components/Objects/objects.hpp`.
460///
461/// The C++ side copies it with a constructor, so it travels by
462/// reference only: build one here and pass `&`, or read the server's.
463#[repr(C)]
464pub struct ObjectMaterialData {
465    /// `(anonymous union)`.
466    pub u0: ObjectMaterialData0,
467    /// `(anonymous union)`.
468    pub u1: ObjectMaterialData1,
469    /// `backgroundColour`.
470    pub background_colour: Colour,
471    /// `textOrTXD`.
472    pub text_or_txd: HybridString<32>,
473    /// `fontOrTexture`.
474    pub font_or_texture: HybridString<32>,
475    /// `type`.
476    pub r#type: u8,
477    /// `used`.
478    pub used: bool,
479}
480
481#[cfg(all(target_arch = "x86", target_os = "linux"))]
482const _: () = {
483    assert!(std::mem::size_of::<ObjectMaterialData>() == 88);
484    assert!(std::mem::offset_of!(ObjectMaterialData, u0) == 0);
485    assert!(std::mem::offset_of!(ObjectMaterialData, u1) == 4);
486    assert!(std::mem::offset_of!(ObjectMaterialData, background_colour) == 8);
487    assert!(std::mem::offset_of!(ObjectMaterialData, text_or_txd) == 12);
488    assert!(std::mem::offset_of!(ObjectMaterialData, font_or_texture) == 48);
489    assert!(std::mem::offset_of!(ObjectMaterialData, r#type) == 84);
490    assert!(std::mem::offset_of!(ObjectMaterialData, used) == 85);
491};
492
493#[cfg(all(target_arch = "x86", target_env = "msvc"))]
494const _: () = {
495    assert!(std::mem::size_of::<ObjectMaterialData>() == 88);
496    assert!(std::mem::offset_of!(ObjectMaterialData, u0) == 0);
497    assert!(std::mem::offset_of!(ObjectMaterialData, u1) == 4);
498    assert!(std::mem::offset_of!(ObjectMaterialData, background_colour) == 8);
499    assert!(std::mem::offset_of!(ObjectMaterialData, text_or_txd) == 12);
500    assert!(std::mem::offset_of!(ObjectMaterialData, font_or_texture) == 48);
501    assert!(std::mem::offset_of!(ObjectMaterialData, r#type) == 84);
502    assert!(std::mem::offset_of!(ObjectMaterialData, used) == 85);
503};
504
505/// `ObjectMoveData` in `Server/Components/Objects/objects.hpp`.
506#[repr(C)]
507#[derive(Debug, Clone, Copy, PartialEq)]
508pub struct ObjectMoveData {
509    /// `targetPos`.
510    pub target_pos: Vector3,
511    /// `targetRot`.
512    pub target_rot: Vector3,
513    /// `speed`.
514    pub speed: f32,
515}
516
517impl Default for ObjectMoveData {
518    /// The C++ struct's own defaults.
519    fn default() -> Self {
520        Self {
521            target_pos: Vector3::ZERO,
522            target_rot: Vector3::ZERO,
523            speed: 0.0,
524        }
525    }
526}
527
528#[cfg(all(target_arch = "x86", target_os = "linux"))]
529const _: () = {
530    assert!(std::mem::size_of::<ObjectMoveData>() == 28);
531    assert!(std::mem::offset_of!(ObjectMoveData, target_pos) == 0);
532    assert!(std::mem::offset_of!(ObjectMoveData, target_rot) == 12);
533    assert!(std::mem::offset_of!(ObjectMoveData, speed) == 24);
534};
535
536#[cfg(all(target_arch = "x86", target_env = "msvc"))]
537const _: () = {
538    assert!(std::mem::size_of::<ObjectMoveData>() == 28);
539    assert!(std::mem::offset_of!(ObjectMoveData, target_pos) == 0);
540    assert!(std::mem::offset_of!(ObjectMoveData, target_rot) == 12);
541    assert!(std::mem::offset_of!(ObjectMoveData, speed) == 24);
542};
543
544impl VirtualReturn for ObjectMoveData {
545    type Raw = Self;
546    fn from_raw(raw: Self) -> Self {
547        raw
548    }
549}
550
551/// `PeerAddress` in `network.hpp`.
552#[repr(C)]
553#[derive(Clone, Copy)]
554pub struct PeerAddress {
555    /// `ipv6`.
556    pub ipv6: bool,
557    /// `(anonymous union)`.
558    pub u1: PeerAddress1,
559}
560
561#[cfg(all(target_arch = "x86", target_os = "linux"))]
562const _: () = {
563    assert!(std::mem::size_of::<PeerAddress>() == 20);
564    assert!(std::mem::offset_of!(PeerAddress, ipv6) == 0);
565    assert!(std::mem::offset_of!(PeerAddress, u1) == 4);
566};
567
568#[cfg(all(target_arch = "x86", target_env = "msvc"))]
569const _: () = {
570    assert!(std::mem::size_of::<PeerAddress>() == 20);
571    assert!(std::mem::offset_of!(PeerAddress, ipv6) == 0);
572    assert!(std::mem::offset_of!(PeerAddress, u1) == 4);
573};
574
575impl VirtualReturn for PeerAddress {
576    type Raw = Self;
577    fn from_raw(raw: Self) -> Self {
578        raw
579    }
580}
581
582/// `PeerNetworkData` in `network.hpp`.
583#[repr(C)]
584#[derive(Clone, Copy)]
585pub struct PeerNetworkData {
586    /// `network`.
587    pub network: *mut std::ffi::c_void,
588    /// `networkID`.
589    pub network_id: NetworkID,
590}
591
592#[cfg(all(target_arch = "x86", target_os = "linux"))]
593const _: () = {
594    assert!(std::mem::size_of::<PeerNetworkData>() == 28);
595    assert!(std::mem::offset_of!(PeerNetworkData, network) == 0);
596    assert!(std::mem::offset_of!(PeerNetworkData, network_id) == 4);
597};
598
599#[cfg(all(target_arch = "x86", target_env = "msvc"))]
600const _: () = {
601    assert!(std::mem::size_of::<PeerNetworkData>() == 28);
602    assert!(std::mem::offset_of!(PeerNetworkData, network) == 0);
603    assert!(std::mem::offset_of!(PeerNetworkData, network_id) == 4);
604};
605
606impl VirtualReturn for PeerNetworkData {
607    type Raw = Self;
608    fn from_raw(raw: Self) -> Self {
609        raw
610    }
611}
612
613/// `PeerRequestParams` in `network.hpp`.
614#[repr(C)]
615#[derive(Clone, Copy)]
616pub struct PeerRequestParams {
617    /// `version`.
618    pub version: u8,
619    /// `versionName`.
620    pub version_name: StringView,
621    /// `bot`.
622    pub bot: bool,
623    /// `name`.
624    pub name: StringView,
625    /// `serial`.
626    pub serial: StringView,
627    /// Bit-fields, from bit 0: `isUsingOfficialClient`: 1, `isUsingOmp`: 1.
628    pub bits_is_using_official_client: u8,
629}
630
631#[cfg(all(target_arch = "x86", target_os = "linux"))]
632const _: () = {
633    assert!(std::mem::size_of::<PeerRequestParams>() == 36);
634    assert!(std::mem::offset_of!(PeerRequestParams, version) == 0);
635    assert!(std::mem::offset_of!(PeerRequestParams, version_name) == 4);
636    assert!(std::mem::offset_of!(PeerRequestParams, bot) == 12);
637    assert!(std::mem::offset_of!(PeerRequestParams, name) == 16);
638    assert!(std::mem::offset_of!(PeerRequestParams, serial) == 24);
639    assert!(std::mem::offset_of!(PeerRequestParams, bits_is_using_official_client) == 32);
640};
641
642#[cfg(all(target_arch = "x86", target_env = "msvc"))]
643const _: () = {
644    assert!(std::mem::size_of::<PeerRequestParams>() == 36);
645    assert!(std::mem::offset_of!(PeerRequestParams, version) == 0);
646    assert!(std::mem::offset_of!(PeerRequestParams, version_name) == 4);
647    assert!(std::mem::offset_of!(PeerRequestParams, bot) == 12);
648    assert!(std::mem::offset_of!(PeerRequestParams, name) == 16);
649    assert!(std::mem::offset_of!(PeerRequestParams, serial) == 24);
650    assert!(std::mem::offset_of!(PeerRequestParams, bits_is_using_official_client) == 32);
651};
652
653impl VirtualReturn for PeerRequestParams {
654    type Raw = Self;
655    fn from_raw(raw: Self) -> Self {
656        raw
657    }
658}
659
660/// `PlayerAimData` in `player.hpp`.
661#[repr(C)]
662#[derive(Debug, Clone, Copy, PartialEq)]
663pub struct PlayerAimData {
664    /// `camFrontVector`.
665    pub cam_front_vector: Vector3,
666    /// `camPos`.
667    pub cam_pos: Vector3,
668    /// `aimZ`.
669    pub aim_z: f32,
670    /// `camZoom`.
671    pub cam_zoom: f32,
672    /// `aspectRatio`.
673    pub aspect_ratio: f32,
674    /// `weaponState`.
675    pub weapon_state: i8,
676    /// `camMode`.
677    pub cam_mode: u8,
678}
679
680impl Default for PlayerAimData {
681    /// The C++ struct's own defaults.
682    fn default() -> Self {
683        Self {
684            cam_front_vector: Vector3::ZERO,
685            cam_pos: Vector3::ZERO,
686            aim_z: 0.0,
687            cam_zoom: 0.0,
688            aspect_ratio: 0.0,
689            weapon_state: 0,
690            cam_mode: 0,
691        }
692    }
693}
694
695#[cfg(all(target_arch = "x86", target_os = "linux"))]
696const _: () = {
697    assert!(std::mem::size_of::<PlayerAimData>() == 40);
698    assert!(std::mem::offset_of!(PlayerAimData, cam_front_vector) == 0);
699    assert!(std::mem::offset_of!(PlayerAimData, cam_pos) == 12);
700    assert!(std::mem::offset_of!(PlayerAimData, aim_z) == 24);
701    assert!(std::mem::offset_of!(PlayerAimData, cam_zoom) == 28);
702    assert!(std::mem::offset_of!(PlayerAimData, aspect_ratio) == 32);
703    assert!(std::mem::offset_of!(PlayerAimData, weapon_state) == 36);
704    assert!(std::mem::offset_of!(PlayerAimData, cam_mode) == 37);
705};
706
707#[cfg(all(target_arch = "x86", target_env = "msvc"))]
708const _: () = {
709    assert!(std::mem::size_of::<PlayerAimData>() == 40);
710    assert!(std::mem::offset_of!(PlayerAimData, cam_front_vector) == 0);
711    assert!(std::mem::offset_of!(PlayerAimData, cam_pos) == 12);
712    assert!(std::mem::offset_of!(PlayerAimData, aim_z) == 24);
713    assert!(std::mem::offset_of!(PlayerAimData, cam_zoom) == 28);
714    assert!(std::mem::offset_of!(PlayerAimData, aspect_ratio) == 32);
715    assert!(std::mem::offset_of!(PlayerAimData, weapon_state) == 36);
716    assert!(std::mem::offset_of!(PlayerAimData, cam_mode) == 37);
717};
718
719impl VirtualReturn for PlayerAimData {
720    type Raw = Self;
721    fn from_raw(raw: Self) -> Self {
722        raw
723    }
724}
725
726/// `PlayerAnimationData` in `player.hpp`.
727#[repr(C)]
728#[derive(Debug, Clone, Copy, PartialEq)]
729pub struct PlayerAnimationData {
730    /// `ID`.
731    pub id: u16,
732    /// `flags`.
733    pub flags: u16,
734}
735
736impl Default for PlayerAnimationData {
737    /// The C++ struct's own defaults.
738    fn default() -> Self {
739        Self { id: 0, flags: 0 }
740    }
741}
742
743#[cfg(all(target_arch = "x86", target_os = "linux"))]
744const _: () = {
745    assert!(std::mem::size_of::<PlayerAnimationData>() == 4);
746    assert!(std::mem::offset_of!(PlayerAnimationData, id) == 0);
747    assert!(std::mem::offset_of!(PlayerAnimationData, flags) == 2);
748};
749
750#[cfg(all(target_arch = "x86", target_env = "msvc"))]
751const _: () = {
752    assert!(std::mem::size_of::<PlayerAnimationData>() == 4);
753    assert!(std::mem::offset_of!(PlayerAnimationData, id) == 0);
754    assert!(std::mem::offset_of!(PlayerAnimationData, flags) == 2);
755};
756
757impl VirtualReturn for PlayerAnimationData {
758    type Raw = Self;
759    fn from_raw(raw: Self) -> Self {
760        raw
761    }
762}
763
764/// `PlayerClass` in `Server/Components/Classes/classes.hpp`.
765#[repr(C)]
766#[derive(Debug, Clone, Copy, PartialEq)]
767pub struct PlayerClass {
768    /// `team`.
769    pub team: i32,
770    /// `skin`.
771    pub skin: i32,
772    /// `spawn`.
773    pub spawn: Vector3,
774    /// `angle`.
775    pub angle: f32,
776    /// `weapons`.
777    pub weapons: [WeaponSlotData; 13],
778}
779
780impl Default for PlayerClass {
781    /// The C++ struct's own defaults.
782    fn default() -> Self {
783        Self {
784            team: 0,
785            skin: 0,
786            spawn: Vector3::ZERO,
787            angle: 0.0,
788            weapons: [WeaponSlotData::default(); 13],
789        }
790    }
791}
792
793#[cfg(all(target_arch = "x86", target_os = "linux"))]
794const _: () = {
795    assert!(std::mem::size_of::<PlayerClass>() == 128);
796    assert!(std::mem::offset_of!(PlayerClass, team) == 0);
797    assert!(std::mem::offset_of!(PlayerClass, skin) == 4);
798    assert!(std::mem::offset_of!(PlayerClass, spawn) == 8);
799    assert!(std::mem::offset_of!(PlayerClass, angle) == 20);
800    assert!(std::mem::offset_of!(PlayerClass, weapons) == 24);
801};
802
803#[cfg(all(target_arch = "x86", target_env = "msvc"))]
804const _: () = {
805    assert!(std::mem::size_of::<PlayerClass>() == 128);
806    assert!(std::mem::offset_of!(PlayerClass, team) == 0);
807    assert!(std::mem::offset_of!(PlayerClass, skin) == 4);
808    assert!(std::mem::offset_of!(PlayerClass, spawn) == 8);
809    assert!(std::mem::offset_of!(PlayerClass, angle) == 20);
810    assert!(std::mem::offset_of!(PlayerClass, weapons) == 24);
811};
812
813impl VirtualReturn for PlayerClass {
814    type Raw = Self;
815    fn from_raw(raw: Self) -> Self {
816        raw
817    }
818}
819
820/// `PlayerKeyData` in `player.hpp`.
821#[repr(C)]
822#[derive(Debug, Clone, Copy, PartialEq)]
823pub struct PlayerKeyData {
824    /// `keys`.
825    pub keys: u32,
826    /// `upDown`.
827    pub up_down: i16,
828    /// `leftRight`.
829    pub left_right: i16,
830}
831
832impl Default for PlayerKeyData {
833    /// The C++ struct's own defaults.
834    fn default() -> Self {
835        Self {
836            keys: 0,
837            up_down: 0,
838            left_right: 0,
839        }
840    }
841}
842
843#[cfg(all(target_arch = "x86", target_os = "linux"))]
844const _: () = {
845    assert!(std::mem::size_of::<PlayerKeyData>() == 8);
846    assert!(std::mem::offset_of!(PlayerKeyData, keys) == 0);
847    assert!(std::mem::offset_of!(PlayerKeyData, up_down) == 4);
848    assert!(std::mem::offset_of!(PlayerKeyData, left_right) == 6);
849};
850
851#[cfg(all(target_arch = "x86", target_env = "msvc"))]
852const _: () = {
853    assert!(std::mem::size_of::<PlayerKeyData>() == 8);
854    assert!(std::mem::offset_of!(PlayerKeyData, keys) == 0);
855    assert!(std::mem::offset_of!(PlayerKeyData, up_down) == 4);
856    assert!(std::mem::offset_of!(PlayerKeyData, left_right) == 6);
857};
858
859impl VirtualReturn for PlayerKeyData {
860    type Raw = Self;
861    fn from_raw(raw: Self) -> Self {
862        raw
863    }
864}
865
866/// `PlayerSpectateData` in `player.hpp`.
867#[repr(C)]
868#[derive(Debug, Clone, Copy, PartialEq)]
869pub struct PlayerSpectateData {
870    /// `spectating`.
871    pub spectating: bool,
872    /// `spectateID`.
873    pub spectate_id: i32,
874    /// `type`.
875    pub r#type: i32,
876}
877
878impl Default for PlayerSpectateData {
879    /// The C++ struct's own defaults.
880    fn default() -> Self {
881        Self {
882            spectating: false,
883            spectate_id: 0,
884            r#type: 0,
885        }
886    }
887}
888
889#[cfg(all(target_arch = "x86", target_os = "linux"))]
890const _: () = {
891    assert!(std::mem::size_of::<PlayerSpectateData>() == 12);
892    assert!(std::mem::offset_of!(PlayerSpectateData, spectating) == 0);
893    assert!(std::mem::offset_of!(PlayerSpectateData, spectate_id) == 4);
894    assert!(std::mem::offset_of!(PlayerSpectateData, r#type) == 8);
895};
896
897#[cfg(all(target_arch = "x86", target_env = "msvc"))]
898const _: () = {
899    assert!(std::mem::size_of::<PlayerSpectateData>() == 12);
900    assert!(std::mem::offset_of!(PlayerSpectateData, spectating) == 0);
901    assert!(std::mem::offset_of!(PlayerSpectateData, spectate_id) == 4);
902    assert!(std::mem::offset_of!(PlayerSpectateData, r#type) == 8);
903};
904
905impl VirtualReturn for PlayerSpectateData {
906    type Raw = Self;
907    fn from_raw(raw: Self) -> Self {
908        raw
909    }
910}
911
912/// `PlayerSurfingData` in `player.hpp`.
913#[repr(C)]
914#[derive(Debug, Clone, Copy, PartialEq)]
915pub struct PlayerSurfingData {
916    /// `type`.
917    pub r#type: i32,
918    /// `ID`.
919    pub id: i32,
920    /// `offset`.
921    pub offset: Vector3,
922}
923
924impl Default for PlayerSurfingData {
925    /// The C++ struct's own defaults.
926    fn default() -> Self {
927        Self {
928            r#type: 0,
929            id: 0,
930            offset: Vector3::ZERO,
931        }
932    }
933}
934
935#[cfg(all(target_arch = "x86", target_os = "linux"))]
936const _: () = {
937    assert!(std::mem::size_of::<PlayerSurfingData>() == 20);
938    assert!(std::mem::offset_of!(PlayerSurfingData, r#type) == 0);
939    assert!(std::mem::offset_of!(PlayerSurfingData, id) == 4);
940    assert!(std::mem::offset_of!(PlayerSurfingData, offset) == 8);
941};
942
943#[cfg(all(target_arch = "x86", target_env = "msvc"))]
944const _: () = {
945    assert!(std::mem::size_of::<PlayerSurfingData>() == 20);
946    assert!(std::mem::offset_of!(PlayerSurfingData, r#type) == 0);
947    assert!(std::mem::offset_of!(PlayerSurfingData, id) == 4);
948    assert!(std::mem::offset_of!(PlayerSurfingData, offset) == 8);
949};
950
951impl VirtualReturn for PlayerSurfingData {
952    type Raw = Self;
953    fn from_raw(raw: Self) -> Self {
954        raw
955    }
956}
957
958/// `TextLabelAttachmentData` in `Server/Components/TextLabels/textlabels.hpp`.
959#[repr(C)]
960#[derive(Debug, Clone, Copy, PartialEq)]
961pub struct TextLabelAttachmentData {
962    /// `playerID`.
963    pub player_id: i32,
964    /// `vehicleID`.
965    pub vehicle_id: i32,
966}
967
968impl Default for TextLabelAttachmentData {
969    /// The C++ struct's own defaults.
970    fn default() -> Self {
971        Self {
972            player_id: 65535,
973            vehicle_id: 65535,
974        }
975    }
976}
977
978#[cfg(all(target_arch = "x86", target_os = "linux"))]
979const _: () = {
980    assert!(std::mem::size_of::<TextLabelAttachmentData>() == 8);
981    assert!(std::mem::offset_of!(TextLabelAttachmentData, player_id) == 0);
982    assert!(std::mem::offset_of!(TextLabelAttachmentData, vehicle_id) == 4);
983};
984
985#[cfg(all(target_arch = "x86", target_env = "msvc"))]
986const _: () = {
987    assert!(std::mem::size_of::<TextLabelAttachmentData>() == 8);
988    assert!(std::mem::offset_of!(TextLabelAttachmentData, player_id) == 0);
989    assert!(std::mem::offset_of!(TextLabelAttachmentData, vehicle_id) == 4);
990};
991
992impl VirtualReturn for TextLabelAttachmentData {
993    type Raw = Self;
994    fn from_raw(raw: Self) -> Self {
995        raw
996    }
997}
998
999/// `VehicleDriverSyncPacket` in `Server/Components/Vehicles/vehicles.hpp`.
1000#[repr(C)]
1001#[derive(Clone, Copy)]
1002pub struct VehicleDriverSyncPacket {
1003    /// `PlayerID`.
1004    pub player_id: i32,
1005    /// `VehicleID`.
1006    pub vehicle_id: u16,
1007    /// `LeftRight`.
1008    pub left_right: u16,
1009    /// `UpDown`.
1010    pub up_down: u16,
1011    /// `Keys`.
1012    pub keys: u16,
1013    /// `Rotation`.
1014    pub rotation: GTAQuat,
1015    /// `Position`.
1016    pub position: Vector3,
1017    /// `Velocity`.
1018    pub velocity: Vector3,
1019    /// `Health`.
1020    pub health: f32,
1021    /// `PlayerHealthArmour`.
1022    pub player_health_armour: Vector2,
1023    /// `Siren`.
1024    pub siren: u8,
1025    /// `LandingGear`.
1026    pub landing_gear: u8,
1027    /// `TrailerID`.
1028    pub trailer_id: u16,
1029    /// `HasTrailer`.
1030    pub has_trailer: bool,
1031    /// `(anonymous union)`.
1032    pub u14: VehicleDriverSyncPacket14,
1033    /// `(anonymous union)`.
1034    pub u15: VehicleDriverSyncPacket15,
1035}
1036
1037#[cfg(all(target_arch = "x86", target_os = "linux"))]
1038const _: () = {
1039    assert!(std::mem::size_of::<VehicleDriverSyncPacket>() == 76);
1040    assert!(std::mem::offset_of!(VehicleDriverSyncPacket, player_id) == 0);
1041    assert!(std::mem::offset_of!(VehicleDriverSyncPacket, vehicle_id) == 4);
1042    assert!(std::mem::offset_of!(VehicleDriverSyncPacket, left_right) == 6);
1043    assert!(std::mem::offset_of!(VehicleDriverSyncPacket, up_down) == 8);
1044    assert!(std::mem::offset_of!(VehicleDriverSyncPacket, keys) == 10);
1045    assert!(std::mem::offset_of!(VehicleDriverSyncPacket, rotation) == 12);
1046    assert!(std::mem::offset_of!(VehicleDriverSyncPacket, position) == 28);
1047    assert!(std::mem::offset_of!(VehicleDriverSyncPacket, velocity) == 40);
1048    assert!(std::mem::offset_of!(VehicleDriverSyncPacket, health) == 52);
1049    assert!(std::mem::offset_of!(VehicleDriverSyncPacket, player_health_armour) == 56);
1050    assert!(std::mem::offset_of!(VehicleDriverSyncPacket, siren) == 64);
1051    assert!(std::mem::offset_of!(VehicleDriverSyncPacket, landing_gear) == 65);
1052    assert!(std::mem::offset_of!(VehicleDriverSyncPacket, trailer_id) == 66);
1053    assert!(std::mem::offset_of!(VehicleDriverSyncPacket, has_trailer) == 68);
1054    assert!(std::mem::offset_of!(VehicleDriverSyncPacket, u14) == 69);
1055    assert!(std::mem::offset_of!(VehicleDriverSyncPacket, u15) == 72);
1056};
1057
1058#[cfg(all(target_arch = "x86", target_env = "msvc"))]
1059const _: () = {
1060    assert!(std::mem::size_of::<VehicleDriverSyncPacket>() == 76);
1061    assert!(std::mem::offset_of!(VehicleDriverSyncPacket, player_id) == 0);
1062    assert!(std::mem::offset_of!(VehicleDriverSyncPacket, vehicle_id) == 4);
1063    assert!(std::mem::offset_of!(VehicleDriverSyncPacket, left_right) == 6);
1064    assert!(std::mem::offset_of!(VehicleDriverSyncPacket, up_down) == 8);
1065    assert!(std::mem::offset_of!(VehicleDriverSyncPacket, keys) == 10);
1066    assert!(std::mem::offset_of!(VehicleDriverSyncPacket, rotation) == 12);
1067    assert!(std::mem::offset_of!(VehicleDriverSyncPacket, position) == 28);
1068    assert!(std::mem::offset_of!(VehicleDriverSyncPacket, velocity) == 40);
1069    assert!(std::mem::offset_of!(VehicleDriverSyncPacket, health) == 52);
1070    assert!(std::mem::offset_of!(VehicleDriverSyncPacket, player_health_armour) == 56);
1071    assert!(std::mem::offset_of!(VehicleDriverSyncPacket, siren) == 64);
1072    assert!(std::mem::offset_of!(VehicleDriverSyncPacket, landing_gear) == 65);
1073    assert!(std::mem::offset_of!(VehicleDriverSyncPacket, trailer_id) == 66);
1074    assert!(std::mem::offset_of!(VehicleDriverSyncPacket, has_trailer) == 68);
1075    assert!(std::mem::offset_of!(VehicleDriverSyncPacket, u14) == 69);
1076    assert!(std::mem::offset_of!(VehicleDriverSyncPacket, u15) == 72);
1077};
1078
1079impl VirtualReturn for VehicleDriverSyncPacket {
1080    type Raw = Self;
1081    fn from_raw(raw: Self) -> Self {
1082        raw
1083    }
1084}
1085
1086/// `VehicleParams` in `Server/Components/Vehicles/vehicles.hpp`.
1087#[repr(C)]
1088#[derive(Debug, Clone, Copy, PartialEq)]
1089pub struct VehicleParams {
1090    /// `engine`.
1091    pub engine: i8,
1092    /// `lights`.
1093    pub lights: i8,
1094    /// `alarm`.
1095    pub alarm: i8,
1096    /// `doors`.
1097    pub doors: i8,
1098    /// `bonnet`.
1099    pub bonnet: i8,
1100    /// `boot`.
1101    pub boot: i8,
1102    /// `objective`.
1103    pub objective: i8,
1104    /// `siren`.
1105    pub siren: i8,
1106    /// `doorDriver`.
1107    pub door_driver: i8,
1108    /// `doorPassenger`.
1109    pub door_passenger: i8,
1110    /// `doorBackLeft`.
1111    pub door_back_left: i8,
1112    /// `doorBackRight`.
1113    pub door_back_right: i8,
1114    /// `windowDriver`.
1115    pub window_driver: i8,
1116    /// `windowPassenger`.
1117    pub window_passenger: i8,
1118    /// `windowBackLeft`.
1119    pub window_back_left: i8,
1120    /// `windowBackRight`.
1121    pub window_back_right: i8,
1122}
1123
1124impl Default for VehicleParams {
1125    /// The C++ struct's own defaults.
1126    fn default() -> Self {
1127        Self {
1128            engine: -1,
1129            lights: -1,
1130            alarm: -1,
1131            doors: -1,
1132            bonnet: -1,
1133            boot: -1,
1134            objective: -1,
1135            siren: -1,
1136            door_driver: -1,
1137            door_passenger: -1,
1138            door_back_left: -1,
1139            door_back_right: -1,
1140            window_driver: -1,
1141            window_passenger: -1,
1142            window_back_left: -1,
1143            window_back_right: -1,
1144        }
1145    }
1146}
1147
1148#[cfg(all(target_arch = "x86", target_os = "linux"))]
1149const _: () = {
1150    assert!(std::mem::size_of::<VehicleParams>() == 16);
1151    assert!(std::mem::offset_of!(VehicleParams, engine) == 0);
1152    assert!(std::mem::offset_of!(VehicleParams, lights) == 1);
1153    assert!(std::mem::offset_of!(VehicleParams, alarm) == 2);
1154    assert!(std::mem::offset_of!(VehicleParams, doors) == 3);
1155    assert!(std::mem::offset_of!(VehicleParams, bonnet) == 4);
1156    assert!(std::mem::offset_of!(VehicleParams, boot) == 5);
1157    assert!(std::mem::offset_of!(VehicleParams, objective) == 6);
1158    assert!(std::mem::offset_of!(VehicleParams, siren) == 7);
1159    assert!(std::mem::offset_of!(VehicleParams, door_driver) == 8);
1160    assert!(std::mem::offset_of!(VehicleParams, door_passenger) == 9);
1161    assert!(std::mem::offset_of!(VehicleParams, door_back_left) == 10);
1162    assert!(std::mem::offset_of!(VehicleParams, door_back_right) == 11);
1163    assert!(std::mem::offset_of!(VehicleParams, window_driver) == 12);
1164    assert!(std::mem::offset_of!(VehicleParams, window_passenger) == 13);
1165    assert!(std::mem::offset_of!(VehicleParams, window_back_left) == 14);
1166    assert!(std::mem::offset_of!(VehicleParams, window_back_right) == 15);
1167};
1168
1169#[cfg(all(target_arch = "x86", target_env = "msvc"))]
1170const _: () = {
1171    assert!(std::mem::size_of::<VehicleParams>() == 16);
1172    assert!(std::mem::offset_of!(VehicleParams, engine) == 0);
1173    assert!(std::mem::offset_of!(VehicleParams, lights) == 1);
1174    assert!(std::mem::offset_of!(VehicleParams, alarm) == 2);
1175    assert!(std::mem::offset_of!(VehicleParams, doors) == 3);
1176    assert!(std::mem::offset_of!(VehicleParams, bonnet) == 4);
1177    assert!(std::mem::offset_of!(VehicleParams, boot) == 5);
1178    assert!(std::mem::offset_of!(VehicleParams, objective) == 6);
1179    assert!(std::mem::offset_of!(VehicleParams, siren) == 7);
1180    assert!(std::mem::offset_of!(VehicleParams, door_driver) == 8);
1181    assert!(std::mem::offset_of!(VehicleParams, door_passenger) == 9);
1182    assert!(std::mem::offset_of!(VehicleParams, door_back_left) == 10);
1183    assert!(std::mem::offset_of!(VehicleParams, door_back_right) == 11);
1184    assert!(std::mem::offset_of!(VehicleParams, window_driver) == 12);
1185    assert!(std::mem::offset_of!(VehicleParams, window_passenger) == 13);
1186    assert!(std::mem::offset_of!(VehicleParams, window_back_left) == 14);
1187    assert!(std::mem::offset_of!(VehicleParams, window_back_right) == 15);
1188};
1189
1190impl VirtualReturn for VehicleParams {
1191    type Raw = Self;
1192    fn from_raw(raw: Self) -> Self {
1193        raw
1194    }
1195}
1196
1197/// `VehiclePassengerSyncPacket` in `Server/Components/Vehicles/vehicles.hpp`.
1198#[repr(C)]
1199#[derive(Clone, Copy)]
1200pub struct VehiclePassengerSyncPacket {
1201    /// `PlayerID`.
1202    pub player_id: i32,
1203    /// `VehicleID`.
1204    pub vehicle_id: i32,
1205    /// `(anonymous union)`.
1206    pub u2: VehiclePassengerSyncPacket2,
1207    /// `Keys`.
1208    pub keys: u16,
1209    /// `HealthArmour`.
1210    pub health_armour: Vector2,
1211    /// `LeftRight`.
1212    pub left_right: u16,
1213    /// `UpDown`.
1214    pub up_down: u16,
1215    /// `Position`.
1216    pub position: Vector3,
1217}
1218
1219#[cfg(all(target_arch = "x86", target_os = "linux"))]
1220const _: () = {
1221    assert!(std::mem::size_of::<VehiclePassengerSyncPacket>() == 36);
1222    assert!(std::mem::offset_of!(VehiclePassengerSyncPacket, player_id) == 0);
1223    assert!(std::mem::offset_of!(VehiclePassengerSyncPacket, vehicle_id) == 4);
1224    assert!(std::mem::offset_of!(VehiclePassengerSyncPacket, u2) == 8);
1225    assert!(std::mem::offset_of!(VehiclePassengerSyncPacket, keys) == 10);
1226    assert!(std::mem::offset_of!(VehiclePassengerSyncPacket, health_armour) == 12);
1227    assert!(std::mem::offset_of!(VehiclePassengerSyncPacket, left_right) == 20);
1228    assert!(std::mem::offset_of!(VehiclePassengerSyncPacket, up_down) == 22);
1229    assert!(std::mem::offset_of!(VehiclePassengerSyncPacket, position) == 24);
1230};
1231
1232#[cfg(all(target_arch = "x86", target_env = "msvc"))]
1233const _: () = {
1234    assert!(std::mem::size_of::<VehiclePassengerSyncPacket>() == 36);
1235    assert!(std::mem::offset_of!(VehiclePassengerSyncPacket, player_id) == 0);
1236    assert!(std::mem::offset_of!(VehiclePassengerSyncPacket, vehicle_id) == 4);
1237    assert!(std::mem::offset_of!(VehiclePassengerSyncPacket, u2) == 8);
1238    assert!(std::mem::offset_of!(VehiclePassengerSyncPacket, keys) == 10);
1239    assert!(std::mem::offset_of!(VehiclePassengerSyncPacket, health_armour) == 12);
1240    assert!(std::mem::offset_of!(VehiclePassengerSyncPacket, left_right) == 20);
1241    assert!(std::mem::offset_of!(VehiclePassengerSyncPacket, up_down) == 22);
1242    assert!(std::mem::offset_of!(VehiclePassengerSyncPacket, position) == 24);
1243};
1244
1245impl VirtualReturn for VehiclePassengerSyncPacket {
1246    type Raw = Self;
1247    fn from_raw(raw: Self) -> Self {
1248        raw
1249    }
1250}
1251
1252/// `VehicleSpawnData` in `Server/Components/Vehicles/vehicles.hpp`.
1253#[repr(C)]
1254#[derive(Debug, Clone, Copy, PartialEq)]
1255pub struct VehicleSpawnData {
1256    /// `respawnDelay`.
1257    pub respawn_delay: Seconds,
1258    /// `modelID`.
1259    pub model_id: i32,
1260    /// `position`.
1261    pub position: Vector3,
1262    /// `zRotation`.
1263    pub z_rotation: f32,
1264    /// `colour1`.
1265    pub colour1: i32,
1266    /// `colour2`.
1267    pub colour2: i32,
1268    /// `siren`.
1269    pub siren: bool,
1270    /// `interior`.
1271    pub interior: i32,
1272}
1273
1274impl Default for VehicleSpawnData {
1275    /// The C++ struct's own defaults.
1276    fn default() -> Self {
1277        Self {
1278            respawn_delay: Seconds(0),
1279            model_id: 0,
1280            position: Vector3::ZERO,
1281            z_rotation: 0.0,
1282            colour1: 0,
1283            colour2: 0,
1284            siren: false,
1285            interior: 0,
1286        }
1287    }
1288}
1289
1290#[cfg(all(target_arch = "x86", target_os = "linux"))]
1291const _: () = {
1292    assert!(std::mem::size_of::<VehicleSpawnData>() == 44);
1293    assert!(std::mem::offset_of!(VehicleSpawnData, respawn_delay) == 0);
1294    assert!(std::mem::offset_of!(VehicleSpawnData, model_id) == 8);
1295    assert!(std::mem::offset_of!(VehicleSpawnData, position) == 12);
1296    assert!(std::mem::offset_of!(VehicleSpawnData, z_rotation) == 24);
1297    assert!(std::mem::offset_of!(VehicleSpawnData, colour1) == 28);
1298    assert!(std::mem::offset_of!(VehicleSpawnData, colour2) == 32);
1299    assert!(std::mem::offset_of!(VehicleSpawnData, siren) == 36);
1300    assert!(std::mem::offset_of!(VehicleSpawnData, interior) == 40);
1301};
1302
1303#[cfg(all(target_arch = "x86", target_env = "msvc"))]
1304const _: () = {
1305    assert!(std::mem::size_of::<VehicleSpawnData>() == 48);
1306    assert!(std::mem::offset_of!(VehicleSpawnData, respawn_delay) == 0);
1307    assert!(std::mem::offset_of!(VehicleSpawnData, model_id) == 8);
1308    assert!(std::mem::offset_of!(VehicleSpawnData, position) == 12);
1309    assert!(std::mem::offset_of!(VehicleSpawnData, z_rotation) == 24);
1310    assert!(std::mem::offset_of!(VehicleSpawnData, colour1) == 28);
1311    assert!(std::mem::offset_of!(VehicleSpawnData, colour2) == 32);
1312    assert!(std::mem::offset_of!(VehicleSpawnData, siren) == 36);
1313    assert!(std::mem::offset_of!(VehicleSpawnData, interior) == 40);
1314};
1315
1316impl VirtualReturn for VehicleSpawnData {
1317    type Raw = Self;
1318    fn from_raw(raw: Self) -> Self {
1319        raw
1320    }
1321}
1322
1323/// `VehicleTrailerSyncPacket` in `Server/Components/Vehicles/vehicles.hpp`.
1324#[repr(C)]
1325#[derive(Debug, Clone, Copy, PartialEq)]
1326pub struct VehicleTrailerSyncPacket {
1327    /// `VehicleID`.
1328    pub vehicle_id: i32,
1329    /// `PlayerID`.
1330    pub player_id: i32,
1331    /// `Position`.
1332    pub position: Vector3,
1333    /// `Quat`.
1334    pub quat: Vector4,
1335    /// `Velocity`.
1336    pub velocity: Vector3,
1337    /// `TurnVelocity`.
1338    pub turn_velocity: Vector3,
1339}
1340
1341impl Default for VehicleTrailerSyncPacket {
1342    /// The C++ struct's own defaults.
1343    fn default() -> Self {
1344        Self {
1345            vehicle_id: 0,
1346            player_id: 0,
1347            position: Vector3::ZERO,
1348            quat: Vector4::ZERO,
1349            velocity: Vector3::ZERO,
1350            turn_velocity: Vector3::ZERO,
1351        }
1352    }
1353}
1354
1355#[cfg(all(target_arch = "x86", target_os = "linux"))]
1356const _: () = {
1357    assert!(std::mem::size_of::<VehicleTrailerSyncPacket>() == 60);
1358    assert!(std::mem::offset_of!(VehicleTrailerSyncPacket, vehicle_id) == 0);
1359    assert!(std::mem::offset_of!(VehicleTrailerSyncPacket, player_id) == 4);
1360    assert!(std::mem::offset_of!(VehicleTrailerSyncPacket, position) == 8);
1361    assert!(std::mem::offset_of!(VehicleTrailerSyncPacket, quat) == 20);
1362    assert!(std::mem::offset_of!(VehicleTrailerSyncPacket, velocity) == 36);
1363    assert!(std::mem::offset_of!(VehicleTrailerSyncPacket, turn_velocity) == 48);
1364};
1365
1366#[cfg(all(target_arch = "x86", target_env = "msvc"))]
1367const _: () = {
1368    assert!(std::mem::size_of::<VehicleTrailerSyncPacket>() == 60);
1369    assert!(std::mem::offset_of!(VehicleTrailerSyncPacket, vehicle_id) == 0);
1370    assert!(std::mem::offset_of!(VehicleTrailerSyncPacket, player_id) == 4);
1371    assert!(std::mem::offset_of!(VehicleTrailerSyncPacket, position) == 8);
1372    assert!(std::mem::offset_of!(VehicleTrailerSyncPacket, quat) == 20);
1373    assert!(std::mem::offset_of!(VehicleTrailerSyncPacket, velocity) == 36);
1374    assert!(std::mem::offset_of!(VehicleTrailerSyncPacket, turn_velocity) == 48);
1375};
1376
1377impl VirtualReturn for VehicleTrailerSyncPacket {
1378    type Raw = Self;
1379    fn from_raw(raw: Self) -> Self {
1380        raw
1381    }
1382}
1383
1384/// `VehicleUnoccupiedSyncPacket` in `Server/Components/Vehicles/vehicles.hpp`.
1385#[repr(C)]
1386#[derive(Debug, Clone, Copy, PartialEq)]
1387pub struct VehicleUnoccupiedSyncPacket {
1388    /// `VehicleID`.
1389    pub vehicle_id: i32,
1390    /// `PlayerID`.
1391    pub player_id: i32,
1392    /// `SeatID`.
1393    pub seat_id: u8,
1394    /// `Roll`.
1395    pub roll: Vector3,
1396    /// `Rotation`.
1397    pub rotation: Vector3,
1398    /// `Position`.
1399    pub position: Vector3,
1400    /// `Velocity`.
1401    pub velocity: Vector3,
1402    /// `AngularVelocity`.
1403    pub angular_velocity: Vector3,
1404    /// `Health`.
1405    pub health: f32,
1406}
1407
1408impl Default for VehicleUnoccupiedSyncPacket {
1409    /// The C++ struct's own defaults.
1410    fn default() -> Self {
1411        Self {
1412            vehicle_id: 0,
1413            player_id: 0,
1414            seat_id: 0,
1415            roll: Vector3::ZERO,
1416            rotation: Vector3::ZERO,
1417            position: Vector3::ZERO,
1418            velocity: Vector3::ZERO,
1419            angular_velocity: Vector3::ZERO,
1420            health: 0.0,
1421        }
1422    }
1423}
1424
1425#[cfg(all(target_arch = "x86", target_os = "linux"))]
1426const _: () = {
1427    assert!(std::mem::size_of::<VehicleUnoccupiedSyncPacket>() == 76);
1428    assert!(std::mem::offset_of!(VehicleUnoccupiedSyncPacket, vehicle_id) == 0);
1429    assert!(std::mem::offset_of!(VehicleUnoccupiedSyncPacket, player_id) == 4);
1430    assert!(std::mem::offset_of!(VehicleUnoccupiedSyncPacket, seat_id) == 8);
1431    assert!(std::mem::offset_of!(VehicleUnoccupiedSyncPacket, roll) == 12);
1432    assert!(std::mem::offset_of!(VehicleUnoccupiedSyncPacket, rotation) == 24);
1433    assert!(std::mem::offset_of!(VehicleUnoccupiedSyncPacket, position) == 36);
1434    assert!(std::mem::offset_of!(VehicleUnoccupiedSyncPacket, velocity) == 48);
1435    assert!(std::mem::offset_of!(VehicleUnoccupiedSyncPacket, angular_velocity) == 60);
1436    assert!(std::mem::offset_of!(VehicleUnoccupiedSyncPacket, health) == 72);
1437};
1438
1439#[cfg(all(target_arch = "x86", target_env = "msvc"))]
1440const _: () = {
1441    assert!(std::mem::size_of::<VehicleUnoccupiedSyncPacket>() == 76);
1442    assert!(std::mem::offset_of!(VehicleUnoccupiedSyncPacket, vehicle_id) == 0);
1443    assert!(std::mem::offset_of!(VehicleUnoccupiedSyncPacket, player_id) == 4);
1444    assert!(std::mem::offset_of!(VehicleUnoccupiedSyncPacket, seat_id) == 8);
1445    assert!(std::mem::offset_of!(VehicleUnoccupiedSyncPacket, roll) == 12);
1446    assert!(std::mem::offset_of!(VehicleUnoccupiedSyncPacket, rotation) == 24);
1447    assert!(std::mem::offset_of!(VehicleUnoccupiedSyncPacket, position) == 36);
1448    assert!(std::mem::offset_of!(VehicleUnoccupiedSyncPacket, velocity) == 48);
1449    assert!(std::mem::offset_of!(VehicleUnoccupiedSyncPacket, angular_velocity) == 60);
1450    assert!(std::mem::offset_of!(VehicleUnoccupiedSyncPacket, health) == 72);
1451};
1452
1453impl VirtualReturn for VehicleUnoccupiedSyncPacket {
1454    type Raw = Self;
1455    fn from_raw(raw: Self) -> Self {
1456        raw
1457    }
1458}
1459
1460/// `WeaponSlotData` in `player.hpp`.
1461#[repr(C)]
1462#[derive(Debug, Clone, Copy, PartialEq)]
1463pub struct WeaponSlotData {
1464    /// `id`.
1465    pub id: u8,
1466    /// `ammo`.
1467    pub ammo: u32,
1468}
1469
1470impl Default for WeaponSlotData {
1471    /// The C++ struct's own defaults.
1472    fn default() -> Self {
1473        Self { id: 0, ammo: 0 }
1474    }
1475}
1476
1477#[cfg(all(target_arch = "x86", target_os = "linux"))]
1478const _: () = {
1479    assert!(std::mem::size_of::<WeaponSlotData>() == 8);
1480    assert!(std::mem::offset_of!(WeaponSlotData, id) == 0);
1481    assert!(std::mem::offset_of!(WeaponSlotData, ammo) == 4);
1482};
1483
1484#[cfg(all(target_arch = "x86", target_env = "msvc"))]
1485const _: () = {
1486    assert!(std::mem::size_of::<WeaponSlotData>() == 8);
1487    assert!(std::mem::offset_of!(WeaponSlotData, id) == 0);
1488    assert!(std::mem::offset_of!(WeaponSlotData, ammo) == 4);
1489};
1490
1491impl VirtualReturn for WeaponSlotData {
1492    type Raw = Self;
1493    fn from_raw(raw: Self) -> Self {
1494        raw
1495    }
1496}