1#![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#[repr(C)]
22#[derive(Clone, Copy)]
23pub union ConsoleCommandSenderData1 {
24 pub player: *mut IPlayer,
26 pub handler: *mut std::ffi::c_void,
28}
29
30#[repr(C)]
32#[derive(Clone, Copy)]
33pub union ObjectMaterialData0 {
34 pub model: i32,
36 pub s1: ObjectMaterialData0_1,
38}
39
40#[repr(C)]
42#[derive(Clone, Copy)]
43pub struct ObjectMaterialData0_1 {
44 pub material_size: u8,
46 pub font_size: u8,
48 pub alignment: u8,
50 pub bold: bool,
52}
53
54#[repr(C)]
56#[derive(Clone, Copy)]
57pub union ObjectMaterialData1 {
58 pub material_colour: Colour,
60 pub font_colour: Colour,
62}
63
64#[repr(C)]
66#[derive(Clone, Copy)]
67pub union PeerAddress1 {
68 pub v4: u32,
70 pub v6: PeerAddress1_v6,
72}
73
74#[repr(C)]
76#[derive(Clone, Copy)]
77pub union PeerAddress1_v6 {
78 pub segments: [u16; 8],
80 pub bytes: [u8; 16],
82}
83
84#[repr(C)]
86#[derive(Clone, Copy)]
87pub union VehicleDriverSyncPacket14 {
88 pub additional_key_weapon: u8,
90}
91
92#[repr(C)]
94#[derive(Clone, Copy)]
95pub union VehicleDriverSyncPacket15 {
96 pub hydra_thrust_angle: u32,
98 pub train_speed: f32,
100}
101
102#[repr(C)]
104#[derive(Clone, Copy)]
105pub union VehiclePassengerSyncPacket2 {
106 pub drive_by_seat_additional_key_weapon: u16,
108}
109
110#[repr(C)]
112#[derive(Debug, Clone, Copy, PartialEq)]
113pub struct ActorSpawnData {
114 pub position: Vector3,
116 pub facing_angle: f32,
118 pub skin: i32,
120}
121
122impl Default for ActorSpawnData {
123 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#[repr(C)]
161pub struct AnimationData {
162 pub delta: f32,
164 pub r#loop: bool,
166 pub lock_x: bool,
168 pub lock_y: bool,
170 pub freeze: bool,
172 pub time: u32,
174 pub lib: HybridString<16>,
176 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#[repr(C)]
211pub struct BanEntry {
212 pub address: HybridString<46>,
214 pub time: WorldTimePoint,
216 pub name: HybridString<25>,
218 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#[repr(C)]
242#[derive(Clone, Copy)]
243pub struct ConsoleCommandSenderData {
244 pub sender: i32,
246 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#[repr(C)]
273#[derive(Debug, Clone, Copy, PartialEq)]
274pub struct LegacyDBResult {
275 pub rows: i32,
277 pub columns: i32,
279 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#[repr(C)]
308#[derive(Clone, Copy)]
309pub struct NetworkID {
310 pub address: PeerAddress,
312 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#[repr(C)]
339#[derive(Debug, Clone, Copy, PartialEq)]
340pub struct ObjectAttachmentData {
341 pub r#type: u8,
343 pub sync_rotation: bool,
345 pub id: i32,
347 pub offset: Vector3,
349 pub rotation: Vector3,
351}
352
353impl Default for ObjectAttachmentData {
354 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#[repr(C)]
395#[derive(Debug, Clone, Copy, PartialEq)]
396pub struct ObjectAttachmentSlotData {
397 pub model: i32,
399 pub bone: i32,
401 pub offset: Vector3,
403 pub rotation: Vector3,
405 pub scale: Vector3,
407 pub colour1: Colour,
409 pub colour2: Colour,
411}
412
413impl Default for ObjectAttachmentSlotData {
414 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#[repr(C)]
464pub struct ObjectMaterialData {
465 pub u0: ObjectMaterialData0,
467 pub u1: ObjectMaterialData1,
469 pub background_colour: Colour,
471 pub text_or_txd: HybridString<32>,
473 pub font_or_texture: HybridString<32>,
475 pub r#type: u8,
477 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#[repr(C)]
507#[derive(Debug, Clone, Copy, PartialEq)]
508pub struct ObjectMoveData {
509 pub target_pos: Vector3,
511 pub target_rot: Vector3,
513 pub speed: f32,
515}
516
517impl Default for ObjectMoveData {
518 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#[repr(C)]
553#[derive(Clone, Copy)]
554pub struct PeerAddress {
555 pub ipv6: bool,
557 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#[repr(C)]
584#[derive(Clone, Copy)]
585pub struct PeerNetworkData {
586 pub network: *mut std::ffi::c_void,
588 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#[repr(C)]
615#[derive(Clone, Copy)]
616pub struct PeerRequestParams {
617 pub version: u8,
619 pub version_name: StringView,
621 pub bot: bool,
623 pub name: StringView,
625 pub serial: StringView,
627 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#[repr(C)]
662#[derive(Debug, Clone, Copy, PartialEq)]
663pub struct PlayerAimData {
664 pub cam_front_vector: Vector3,
666 pub cam_pos: Vector3,
668 pub aim_z: f32,
670 pub cam_zoom: f32,
672 pub aspect_ratio: f32,
674 pub weapon_state: i8,
676 pub cam_mode: u8,
678}
679
680impl Default for PlayerAimData {
681 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#[repr(C)]
728#[derive(Debug, Clone, Copy, PartialEq)]
729pub struct PlayerAnimationData {
730 pub id: u16,
732 pub flags: u16,
734}
735
736impl Default for PlayerAnimationData {
737 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#[repr(C)]
766#[derive(Debug, Clone, Copy, PartialEq)]
767pub struct PlayerClass {
768 pub team: i32,
770 pub skin: i32,
772 pub spawn: Vector3,
774 pub angle: f32,
776 pub weapons: [WeaponSlotData; 13],
778}
779
780impl Default for PlayerClass {
781 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#[repr(C)]
822#[derive(Debug, Clone, Copy, PartialEq)]
823pub struct PlayerKeyData {
824 pub keys: u32,
826 pub up_down: i16,
828 pub left_right: i16,
830}
831
832impl Default for PlayerKeyData {
833 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#[repr(C)]
868#[derive(Debug, Clone, Copy, PartialEq)]
869pub struct PlayerSpectateData {
870 pub spectating: bool,
872 pub spectate_id: i32,
874 pub r#type: i32,
876}
877
878impl Default for PlayerSpectateData {
879 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#[repr(C)]
914#[derive(Debug, Clone, Copy, PartialEq)]
915pub struct PlayerSurfingData {
916 pub r#type: i32,
918 pub id: i32,
920 pub offset: Vector3,
922}
923
924impl Default for PlayerSurfingData {
925 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#[repr(C)]
960#[derive(Debug, Clone, Copy, PartialEq)]
961pub struct TextLabelAttachmentData {
962 pub player_id: i32,
964 pub vehicle_id: i32,
966}
967
968impl Default for TextLabelAttachmentData {
969 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#[repr(C)]
1001#[derive(Clone, Copy)]
1002pub struct VehicleDriverSyncPacket {
1003 pub player_id: i32,
1005 pub vehicle_id: u16,
1007 pub left_right: u16,
1009 pub up_down: u16,
1011 pub keys: u16,
1013 pub rotation: GTAQuat,
1015 pub position: Vector3,
1017 pub velocity: Vector3,
1019 pub health: f32,
1021 pub player_health_armour: Vector2,
1023 pub siren: u8,
1025 pub landing_gear: u8,
1027 pub trailer_id: u16,
1029 pub has_trailer: bool,
1031 pub u14: VehicleDriverSyncPacket14,
1033 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#[repr(C)]
1088#[derive(Debug, Clone, Copy, PartialEq)]
1089pub struct VehicleParams {
1090 pub engine: i8,
1092 pub lights: i8,
1094 pub alarm: i8,
1096 pub doors: i8,
1098 pub bonnet: i8,
1100 pub boot: i8,
1102 pub objective: i8,
1104 pub siren: i8,
1106 pub door_driver: i8,
1108 pub door_passenger: i8,
1110 pub door_back_left: i8,
1112 pub door_back_right: i8,
1114 pub window_driver: i8,
1116 pub window_passenger: i8,
1118 pub window_back_left: i8,
1120 pub window_back_right: i8,
1122}
1123
1124impl Default for VehicleParams {
1125 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#[repr(C)]
1199#[derive(Clone, Copy)]
1200pub struct VehiclePassengerSyncPacket {
1201 pub player_id: i32,
1203 pub vehicle_id: i32,
1205 pub u2: VehiclePassengerSyncPacket2,
1207 pub keys: u16,
1209 pub health_armour: Vector2,
1211 pub left_right: u16,
1213 pub up_down: u16,
1215 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#[repr(C)]
1254#[derive(Debug, Clone, Copy, PartialEq)]
1255pub struct VehicleSpawnData {
1256 pub respawn_delay: Seconds,
1258 pub model_id: i32,
1260 pub position: Vector3,
1262 pub z_rotation: f32,
1264 pub colour1: i32,
1266 pub colour2: i32,
1268 pub siren: bool,
1270 pub interior: i32,
1272}
1273
1274impl Default for VehicleSpawnData {
1275 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#[repr(C)]
1325#[derive(Debug, Clone, Copy, PartialEq)]
1326pub struct VehicleTrailerSyncPacket {
1327 pub vehicle_id: i32,
1329 pub player_id: i32,
1331 pub position: Vector3,
1333 pub quat: Vector4,
1335 pub velocity: Vector3,
1337 pub turn_velocity: Vector3,
1339}
1340
1341impl Default for VehicleTrailerSyncPacket {
1342 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#[repr(C)]
1386#[derive(Debug, Clone, Copy, PartialEq)]
1387pub struct VehicleUnoccupiedSyncPacket {
1388 pub vehicle_id: i32,
1390 pub player_id: i32,
1392 pub seat_id: u8,
1394 pub roll: Vector3,
1396 pub rotation: Vector3,
1398 pub position: Vector3,
1400 pub velocity: Vector3,
1402 pub angular_velocity: Vector3,
1404 pub health: f32,
1406}
1407
1408impl Default for VehicleUnoccupiedSyncPacket {
1409 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#[repr(C)]
1462#[derive(Debug, Clone, Copy, PartialEq)]
1463pub struct WeaponSlotData {
1464 pub id: u8,
1466 pub ammo: u32,
1468}
1469
1470impl Default for WeaponSlotData {
1471 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}