-
Notifications
You must be signed in to change notification settings - Fork 68
/
IVehicle.cs
877 lines (727 loc) · 27.9 KB
/
IVehicle.cs
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
403
404
405
406
407
408
409
410
411
412
413
414
415
416
417
418
419
420
421
422
423
424
425
426
427
428
429
430
431
432
433
434
435
436
437
438
439
440
441
442
443
444
445
446
447
448
449
450
451
452
453
454
455
456
457
458
459
460
461
462
463
464
465
466
467
468
469
470
471
472
473
474
475
476
477
478
479
480
481
482
483
484
485
486
487
488
489
490
491
492
493
494
495
496
497
498
499
500
501
502
503
504
505
506
507
508
509
510
511
512
513
514
515
516
517
518
519
520
521
522
523
524
525
526
527
528
529
530
531
532
533
534
535
536
537
538
539
540
541
542
543
544
545
546
547
548
549
550
551
552
553
554
555
556
557
558
559
560
561
562
563
564
565
566
567
568
569
570
571
572
573
574
575
576
577
578
579
580
581
582
583
584
585
586
587
588
589
590
591
592
593
594
595
596
597
598
599
600
601
602
603
604
605
606
607
608
609
610
611
612
613
614
615
616
617
618
619
620
621
622
623
624
625
626
627
628
629
630
631
632
633
634
635
636
637
638
639
640
641
642
643
644
645
646
647
648
649
650
651
652
653
654
655
656
657
658
659
660
661
662
663
664
665
666
667
668
669
670
671
672
673
674
675
676
677
678
679
680
681
682
683
684
685
686
687
688
689
690
691
692
693
694
695
696
697
698
699
700
701
702
703
704
705
706
707
708
709
710
711
712
713
714
715
716
717
718
719
720
721
722
723
724
725
726
727
728
729
730
731
732
733
734
735
736
737
738
739
740
741
742
743
744
745
746
747
748
749
750
751
752
753
754
755
756
757
758
759
760
761
762
763
764
765
766
767
768
769
770
771
772
773
774
775
776
777
778
779
780
781
782
783
784
785
786
787
788
789
790
791
792
793
794
795
796
797
798
799
800
801
802
803
804
805
806
807
808
809
810
811
812
813
814
815
816
817
818
819
820
821
822
823
824
825
826
827
828
829
830
831
832
833
834
835
836
837
838
839
840
841
842
843
844
845
846
847
848
849
850
851
852
853
854
855
856
857
858
859
860
861
862
863
864
865
866
867
868
869
870
871
872
873
874
875
876
877
using System;
using System.Collections.Generic;
using System.Numerics;
using AltV.Net.CApi.Data;
using AltV.Net.Data;
using AltV.Net.Enums;
using AltV.Net.Shared.Elements.Entities;
namespace AltV.Net.Elements.Entities
{
public interface IVehicle : ISharedVehicle, IEntity
{
/// <summary>
/// Get the current driver of the
/// </summary>
/// <exception cref="EntityRemovedException">This entity was removed</exception>
IPlayer Driver { get; }
/// <summary>
/// Gets if the vehicle is destroyed.
/// </summary>
bool IsDestroyed { get; }
/// <summary>
/// Get or set mod kit of the
/// </summary>
/// <exception cref="EntityRemovedException">This entity was removed</exception>
byte ModKit { get; set; }
/// <summary>
/// The amount of Modkits
/// </summary>
byte ModKitsCount { get; }
/// <summary>
/// If the primary color is RGBA
/// </summary>
bool IsPrimaryColorRgb { get; }
/// <summary>
/// Get or set primary color of the
/// </summary>
/// <exception cref="EntityRemovedException">This entity was removed</exception>
byte PrimaryColor { get; set; }
/// <summary>
/// The primary color in RGBA
/// </summary>
Rgba PrimaryColorRgb { get; set; }
/// <summary>
/// If the secondary color is RGBA
/// </summary>
bool IsSecondaryColorRgb { get; }
/// <summary>
/// The secondary color
/// </summary>
byte SecondaryColor { get; set; }
/// <summary>
/// The secondary color in RGBA
/// </summary>
Rgba SecondaryColorRgb { get; set; }
/// <summary>
/// Pearl Color
/// </summary>
byte PearlColor { get; set; }
/// <summary>
/// Wheel Color
/// </summary>
byte WheelColor { get; set; }
/// <summary>
/// Interior Color
/// </summary>
byte InteriorColor { get; set; }
/// <summary>
/// Dashboard Color
/// </summary>
byte DashboardColor { get; set; }
/// <summary>
/// If the tyre smoke is RGBA
/// </summary>
bool IsTireSmokeColorCustom { get; }
/// <summary>
/// The RGBA of the tyre smoke
/// </summary>
Rgba TireSmokeColor { get; set; }
/// <summary>
/// The wheel type
/// </summary>
byte WheelType { get; }
/// <summary>
/// The wheel variation, for e.g. bikes only this getter works, RearWheel won't.
/// For most other vehicles this is the FrontWheel variation getter.
/// </summary>
byte WheelVariation { get; }
/// <summary>
/// Rear wheel variation.
/// </summary>
byte RearWheel { get; set; }
/// <summary>
/// Sets custom tires on the vehicle
/// </summary>
bool CustomTires { get; set; }
byte SpecialDarkness { get; set; }
/// <summary>
/// Get or set number plate index of the vehicle
/// </summary>
/// <exception cref="EntityRemovedException">This entity was removed</exception>
uint NumberplateIndex { get; set; }
/// <summary>
/// Get or set number plate text of the vehicle
/// </summary>
/// <exception cref="EntityRemovedException">This entity was removed</exception>
string NumberplateText { get; set; }
/// <summary>
/// The window tint level
/// </summary>
byte WindowTint { get; set; }
/// <summary>
/// The dirt level
/// </summary>
byte DirtLevel { get; set; }
/// <summary>
/// Neon Color in RGBA
/// </summary>
Rgba NeonColor { get; set; }
/// <summary>
/// The livery
/// </summary>
byte Livery { get; set; }
byte LightState { get; set; }
/// <summary>
/// The roof livery
/// </summary>
byte RoofLivery { get; set; }
string AppearanceData { get; set; }
/// <summary>
/// Gets the vehicle that is attached on this vehicle
/// </summary>
IVehicle Attached { get; }
/// <summary>
/// Gets the vehicle that this vehicle is attached to
/// </summary>
IVehicle AttachedTo { get; }
/// <summary>
/// Current mod in category
/// </summary>
/// <param name="category">Mod Category</param>
/// <returns>Current mod</returns>
byte GetMod(byte category);
/// <summary>
/// Mod count in Category
/// </summary>
/// <param name="category">Mod Category</param>
/// <returns>Mod count</returns>
byte GetModsCount(byte category);
/// <summary>
/// Set Mod
/// </summary>
/// <param name="category">The mod category (slot)</param>
/// <param name="id">The mod id</param>
/// <returns>True - Mod was set</returns>
bool SetMod(byte category, byte id);
/// <summary>
/// Sets the wheels type and variation
/// </summary>
/// <param name="type">Wheel Type</param>
/// <param name="variation">Wheel variation</param>
void SetWheels(byte type, byte variation);
/// <summary>
/// If the vehicle extra is on
/// </summary>
/// <param name="extraId"></param>
/// <returns></returns>
bool IsExtraOn(byte extraId);
/// <summary>
/// Toggles the vehicle extra
/// </summary>
/// <param name="extraId">Extra Id</param>
/// <param name="state">True - Enabled</param>
void ToggleExtra(byte extraId, bool state);
/// <summary>
/// Is the neon active - True = Active
/// </summary>
bool IsNeonActive { get; }
/// <summary>
/// Gets the neon active for each area
/// </summary>
/// <param name="left">Left Side</param>
/// <param name="right">Right Side</param>
/// <param name="top">Front Side</param>
/// <param name="back">Rear Side</param>
void GetNeonActive(ref bool left, ref bool right, ref bool top, ref bool back);
/// <summary>
/// Sets neon active by side
/// </summary>
/// <param name="left">Left side</param>
/// <param name="right">Right Side</param>
/// <param name="top">Top Side</param>
/// <param name="back">Back Side</param>
void SetNeonActive(bool left, bool right, bool top, bool back);
/// <summary>
/// Sets or Returns the status of the Engine
/// </summary>
bool EngineOn { get; set; }
/// <summary>
/// Returns the status of the handbrake
/// </summary>
bool IsHandbrakeActive { get; }
/// <summary>
/// The current headlight color
/// </summary>
byte HeadlightColor { get; set; }
/// <summary>
/// Sets or Gets the current radio station
/// </summary>
uint RadioStation { get; set; }
IPlayer TimedExplosionCulprit { get; }
uint TimedExplosionTime { get; }
/// <summary>
/// Sets or Gets if the siren is active. True = active
/// </summary>
bool SirenActive { get; set; }
/// <summary>
/// Returns or Sets the LockState of the vehicle
/// </summary>
VehicleLockState LockState { get; set; }
/// <summary>
/// Returns the state of the door
/// </summary>
/// <param name="doorId">Door Id</param>
/// <returns>Door State</returns>
byte GetDoorState(byte doorId);
/// <summary>
/// Sets the door state
/// </summary>
/// <param name="doorId">The Door</param>
/// <param name="state">The state</param>
void SetDoorState(byte doorId, byte state);
/// <summary>
/// Returns if the window is opened
/// </summary>
/// <param name="windowId">Window Id</param>
/// <returns>True = Open</returns>
bool IsWindowOpened(byte windowId);
/// <summary>
/// Sets the window status
/// </summary>
/// <param name="windowId">Window Id</param>
/// <param name="state">True = Open</param>
void SetWindowOpened(byte windowId, bool state);
/// <summary>
/// Is the day lights on
/// </summary>
bool IsDaylightOn { get; }
/// <summary>
/// Is the night light on
/// </summary>
bool IsNightlightOn { get; }
/// <summary>
/// Sets the Roof closed
/// </summary>
bool IsRoofClosed { get; set; }
/// <summary>
/// If the flamethrower is active
/// </summary>
bool IsFlamethrowerActive { get; }
/// <summary>
/// Multiplier for the lights
/// </summary>
float LightsMultiplier { get; set; }
/// <summary>
/// Vehicle state
/// </summary>
string State { get; set; }
/// <summary>
/// Engine Health
/// </summary>
int EngineHealth { get; set; }
/// <summary>
/// Fuel Tank Health
/// </summary>
int PetrolTankHealth { get; set; }
/// <summary>
/// Is the type burst
/// </summary>
/// <param name="wheelId">Wheel Id</param>
/// <returns>True = Burst</returns>
bool IsWheelBurst(byte wheelId);
/// <summary>
/// Sets a wheels burst state
/// </summary>
/// <param name="wheelId">Wheel Id</param>
/// <param name="state">True = Burst</param>
void SetWheelBurst(byte wheelId, bool state);
/// <summary>
/// Returns if the wheel has a tyre
/// </summary>
/// <param name="wheelId">Wheel Id</param>
/// <returns>True = Has tyre</returns>
bool DoesWheelHasTire(byte wheelId);
/// <summary>
/// Sets if the wheel has a tyre
/// </summary>
/// <param name="wheelId">Wheel Id</param>
/// <param name="state">True = Has tyre</param>
void SetWheelHasTire(byte wheelId, bool state);
/// <summary>
/// Returns if the wheel is detached
/// </summary>
/// <param name="wheelId">Wheel Id</param>
/// <returns>True if the wheel is detached</returns>
bool IsWheelDetached(byte wheelId);
/// <summary>
/// Sets the detached state of the given wheel
/// </summary>
/// <param name="wheelId">Wheel Id</param>
/// <param name="state">True when it should be detached, False when it should be attached</param>
void SetWheelDetached(byte wheelId, bool state);
/// <summary>
/// Returns if the wheel is on fire
/// </summary>
/// <param name="wheelId">Wheel Id</param>
/// <returns>True if the wheel is on fire</returns>
bool IsWheelOnFire(byte wheelId);
/// <summary>
/// Sets the fire state of the given wheel
/// </summary>
/// <param name="wheelId">Wheel Id</param>
/// <param name="state">True when it should be on fire, False when it should not be on fire</param>
void SetWheelOnFire(byte wheelId, bool state);
/// <summary>
/// Gets the wheels health
/// </summary>
/// <param name="wheelId">Wheel Id</param>
/// <returns>Wheel health</returns>
float GetWheelHealth(byte wheelId);
/// <summary>
/// Sets the wheels healthy
/// </summary>
/// <param name="wheelId">Wheel Id</param>
/// <param name="health">Health</param>
void SetWheelHealth(byte wheelId, float health);
/// <summary>
/// Fix the wheel
/// </summary>
/// <param name="wheelId">Wheel Id</param>
void SetWheelFixed(byte wheelId);
/// <summary>
/// The amount of repairs
/// </summary>
byte RepairsCount { get; }
/// <summary>
/// The body health
/// </summary>
uint BodyHealth { get; set; }
/// <summary>
/// The additional body health
/// </summary>
uint BodyAdditionalHealth { get; set; }
/// <summary>
/// Health Data
/// </summary>
string HealthData { get; set; }
/// <summary>
/// Damage level by part
/// </summary>
/// <param name="partId">Part Id</param>
/// <returns>Damage Level</returns>
byte GetPartDamageLevel(byte partId);
/// <summary>
/// Sets the damage level of a part
/// </summary>
/// <param name="partId">Part Id</param>
/// <param name="damage">Damage Level</param>
void SetPartDamageLevel(byte partId, byte damage);
/// <summary>
/// Get the amount of bullet holes for the current part id
/// </summary>
/// <param name="partId">The current part od between 0 and 5</param>
/// <returns>The bullet holes count between 0 and 15</returns>
byte GetPartBulletHoles(byte partId);
/// <summary>
/// Set the amount of bullet holes for the current part id
/// </summary>
/// <param name="partId">The current part id between 0 and 5</param>
/// <param name="shootsCount">The bullet holes count between 0 and 15</param>
void SetPartBulletHoles(byte partId, byte shootsCount);
/// <summary>
/// Is the light damaged
/// </summary>
/// <param name="lightId">Light Id</param>
/// <returns>True = Damaged</returns>
bool IsLightDamaged(byte lightId);
/// <summary>
/// Sets the light damage state
/// </summary>
/// <param name="lightId">Light Id</param>
/// <param name="isDamaged">True = Damaged</param>
void SetLightDamaged(byte lightId, bool isDamaged);
/// <summary>
/// Returns if the window is damaged
/// </summary>
/// <param name="windowId">Window Id</param>
/// <returns>True = Damaged</returns>
bool IsWindowDamaged(byte windowId);
/// <summary>
/// Sets the window damage state
/// </summary>
/// <param name="windowId">Window Id</param>
/// <param name="isDamaged">True = Damaged</param>
void SetWindowDamaged(byte windowId, bool isDamaged);
/// <summary>
/// Returns if the special light is damaged
/// </summary>
/// <param name="specialLightId">Special light Id</param>
/// <returns>True = Damaged</returns>
bool IsSpecialLightDamaged(byte specialLightId);
/// <summary>
/// Sets the state of the special light damage
/// </summary>
/// <param name="specialLightId">Special Light</param>
/// <param name="isDamaged">Damage</param>
void SetSpecialLightDamaged(byte specialLightId, bool isDamaged);
/// <summary>
/// Returns true if has armored windows
/// </summary>
bool HasArmoredWindows { get; }
bool TimedExplosion { get; }
/// <summary>
/// Returns health of an armored window
/// </summary>
/// <param name="windowId">Window Id</param>
/// <returns>Health level</returns>
float GetArmoredWindowHealth(byte windowId);
/// <summary>
/// Sets the armored window health state
/// </summary>
/// <param name="windowId">Window Id</param>
/// <param name="health">State</param>
void SetArmoredWindowHealth(byte windowId, float health);
/// <summary>
/// Gets the amount of bullets that has hit the window
/// </summary>
/// <param name="windowId">Window Id</param>
/// <returns>Bullet Count</returns>
byte GetArmoredWindowShootCount(byte windowId);
/// <summary>
/// Sets the amount of bullets that has hit the window
/// </summary>
/// <param name="windowId">Window Id</param>
/// <param name="count">Amount of bullets</param>
void SetArmoredWindowShootCount(byte windowId, byte count);
/// <summary>
/// Gets the damage level for a bumper
/// </summary>
/// <param name="bumperId">0 - Front, 1 - Rear</param>
/// <returns>0 - Not Damaged / 1 - Damaged / 2 - None</returns>
byte GetBumperDamageLevel(byte bumperId);
/// <summary>
/// Sets the damage level of a bumper
/// </summary>
/// <param name="bumperId">0 - Front, 1 - Rear</param>
/// <param name="damageLevel">0 - Not Damaged / 1 - Damaged / 2 - None</param>
void SetBumperDamageLevel(byte bumperId, byte damageLevel);
/// <summary>
/// Returns the damage data
/// </summary>
string DamageData { get; set; }
/// <summary>
/// Enables or Disables automatic engine start when a player enters the drivers seat
/// </summary>
bool ManualEngineControl { get; set; }
/// <summary>
/// Script Data
/// </summary>
string ScriptData { get; set; }
/// <summary>
/// Repairs the vehicle
/// </summary>
void Repair();
void SetTimedExplosion(bool state, IPlayer culprit, uint time);
/// <summary>
/// Returns the current mod of the vehicle in the category
/// </summary>
/// <param name="category">Mod category</param>
/// <returns></returns>
byte GetModExt(VehicleModType category) => GetMod((byte) category);
/// <summary>
/// Returns the amount of mods available in a category
/// </summary>
/// <param name="category">The mod type</param>
/// <returns></returns>
byte GetModsCountExt(VehicleModType category) =>
GetModsCount((byte) category);
/// <summary>
/// Sets a vehicles mod into a category
/// </summary>
/// <param name="category">The mod category</param>
/// <param name="id">The mod id</param>
/// <returns></returns>
bool SetModExt(VehicleModType category, byte id) =>
SetMod((byte) category, id);
/// <summary>
/// Sets a vehicles part damage
/// </summary>
/// <param name="part">The vehicle part</param>
/// <param name="damage">The damage</param>
void SetPartDamageLevelExt(VehiclePart part, byte damage) =>
SetPartDamageLevel((byte) part, damage);
/// <summary>
/// Gets the damage level of a vehicle part
/// </summary>
/// <param name="part">The part</param>
/// <returns>The VehiclePart damage level</returns>
VehiclePartDamage GetPartDamageLevelExt(VehiclePart part) =>
(VehiclePartDamage) GetPartDamageLevel((byte) part);
/// <summary>
/// Get the amount of bullet holes in a part
/// </summary>
/// <param name="part">The vehicle part</param>
/// <returns>Amount of bullet holes</returns>
byte GetPartBulletHolesExt(VehiclePart part) =>
GetPartBulletHoles((byte) part);
/// <summary>
/// Sets the amount of bullet holes in a vehicles part
/// </summary>
/// <param name="part">The part</param>
/// <param name="shootsCount">The amount of bullets</param>
void SetPartBulletHolesExt(VehiclePart part, byte shootsCount) =>
SetPartBulletHoles((byte) part, shootsCount);
/// <summary>
/// Gets the vehicles bumper damage level
/// </summary>
/// <param name="bumper">The bumper</param>
/// <returns>Enum of VehicleBumperDamage</returns>
VehicleBumperDamage GetBumperDamageLevelExt(VehicleBumper bumper) =>
(VehicleBumperDamage) GetBumperDamageLevel((byte) bumper);
/// <summary>
/// Sets the vehicles bumper damage level
/// </summary>
/// <param name="bumper">The bumper (Front/Rear)</param>
/// <param name="damageLevel">The Bumper damage level</param>
void SetBumperDamageLevelExt(VehicleBumper bumper,
VehicleBumperDamage damageLevel) => SetBumperDamageLevel((byte) bumper, (byte) damageLevel);
/// <summary>
/// Sets the damage level of a vehicle part
/// </summary>
/// <param name="part">The vehicle part</param>
/// <param name="damage">The damage level</param>
void SetPartDamageLevelExt(VehiclePart part, VehiclePartDamage damage) =>
SetPartDamageLevel((byte) part, (byte) damage);
/// <summary>
/// Returns the current door state of a vehicles door
/// </summary>
/// <param name="door">The door</param>
/// <returns>The door state</returns>
VehicleDoorState GetDoorStateExt(VehicleDoor door) =>
(VehicleDoorState) GetDoorState((byte) door);
/// <summary>
/// Sets a vehicles door to a state
/// </summary>
/// <param name="door">The door</param>
/// <param name="state">The state</param>
void SetDoorStateExt(VehicleDoor door, VehicleDoorState state) =>
SetDoorState((byte) door, (byte) state);
/// <summary>
/// Sets the current radio station
/// </summary>
/// <param name="radioStation">The radio station</param>
void SetRadioStationExt(RadioStation radioStation) =>
RadioStation = (uint) radioStation;
/// <summary>
/// Gets the current radio station
/// </summary>
/// <returns>The radio station</returns>
RadioStation GetRadioStationExt() => (RadioStation) RadioStation;
/// <summary>
/// Sets the current window tint
/// </summary>
/// <param name="windowTint">The window tint</param>
void SetWindowTintExt(WindowTint windowTint) =>
WindowTint = (byte) windowTint;
/// <summary>
/// Gets the current window tint
/// </summary>
/// <returns>The window tint</returns>
WindowTint GetWindowTintExt() => (WindowTint) WindowTint;
/// <summary>
/// Sets the current number plate style
/// </summary>
/// <param name="numberPlateStyle">The number plate style</param>
void SetNumberPlateStyleExt(NumberPlateStyle numberPlateStyle) =>
NumberplateIndex = (uint) numberPlateStyle;
/// <summary>
/// Gets the current number plate style
/// </summary>
/// <returns>The number plate style</returns>
NumberPlateStyle GetNumberPlateStyleExt() =>
(NumberPlateStyle) NumberplateIndex;
/// <summary>
/// Gets the vehicles velocity
/// </summary>
Position Velocity { get; }
/// <summary>
/// Get or set drift mode of the vehicle
/// </summary>
bool DriftMode { get; set; }
/// <summary>
/// Get or set boat anchor of the vehicle
/// </summary>
bool BoatAnchor { get; set; }
/// <summary>
/// Sets the searchlight to given entity
/// </summary>
bool SetSearchLight(bool state, IEntity spottedEntity);
/// <summary>
/// Gets or sets if the vehicle is a train
/// </summary>
bool IsMissionTrain { get; set; }
/// <summary>
/// Gets or sets the trains track id
/// </summary>
sbyte TrainTrackId { get; set; }
/// <summary>
/// Gets or sets the trains engine
/// </summary>
IVehicle TrainEngine { get; set; }
/// <summary>
/// Gets or sets the trains config index
/// </summary>
sbyte TrainConfigIndex { get; set; }
/// <summary>
/// Gets or sets the trains distance from the engine
/// </summary>
float TrainDistanceFromEngine { get; set; }
/// <summary>
/// Gets or sets if the vehicle is the trains engine
/// </summary>
bool IsTrainEngine { get; set; }
/// <summary>
/// Gets or sets if the vehicle is caboose
/// </summary>
bool IsTrainCaboose { get; set; }
/// <summary>
/// Gets or sets the trains direction
/// </summary>
bool TrainDirection { get; set; }
/// <summary>
/// Gets or sets if the train has passenger carriages
/// </summary>
bool TrainPassengerCarriages { get; set; }
/// <summary>
/// Gets or sets if the train should be rendered derailed
/// </summary>
bool TrainRenderDerailed { get; set; }
/// <summary>
/// Gets or sets if the trains doors should be forced open
/// </summary>
bool TrainForceDoorsOpen { get; set; }
/// <summary>
/// Gets or sets the trains cruise speed
/// </summary>
float TrainCruiseSpeed { get; set; }
/// <summary>
/// Gets or sets the trains carriage config index
/// </summary>
sbyte TrainCarriageConfigIndex { get; set; }
/// <summary>
/// Gets or sets the trains vehicle linked backward vehicle
/// </summary>
IVehicle TrainLinkedToBackward { get; set; }
/// <summary>
/// Gets or sets the trains vehicle linked forward vehicle
/// </summary>
IVehicle TrainLinkedToForward { get; set; }
/// <summary>
/// Gets or sets the vehicle counter measure count
/// </summary>
uint CounterMeasureCount { get; set; }
/// <summary>
/// Gets or sets the hybrid extra
/// </summary>
bool HybridExtraActive { get; set; }
/// <summary>
/// Gets or sets the hybrid extra state
/// </summary>
byte HybridExtraState { get; set; }
/// <summary>
/// Gets or sets the rocket refuel speed
/// </summary>
float RocketRefuelSpeed { get; set; }
/// <summary>
/// Gets or sets the script max speed
/// </summary>
float ScriptMaxSpeed { get; set; }
/// <summary>
/// Gets or sets to disable the towing
/// </summary>
bool IsTowingDisabled { get; set; }
/// <summary>
/// Sets the weapon capacity
/// </summary>
/// <param name="index">Index of weapon</param>
/// <param name="capacity">Capacity to set</param>
void SetWeaponCapacity(byte index, int capacity);
/// <summary>
/// Gets the weapon capacity
/// </summary>
/// <param name="index">Index of weapon</param>
/// <returns></returns>
int GetWeaponCapacity(byte index);
Quaternion Quaternion { get; set; }
bool IsHornActive { get; }
float AccelerationLevel { get; }
float BrakeLevel { get; }
List<PlayerSeat> Passengers { get; }
/// <summary>
/// Set badges to vehicle
/// </summary>
/// <param name="textureDictionary">The hash of textureDictionary</param>
/// <param name="texture">The hash of texture</param>
/// <param name="vehicleBadgePosition">The array of badge position. Maximum is 4</param>
/// <exception cref="ArgumentOutOfRangeException">When badge postion is more the 4</exception>
void SetBadge(string textureDictionary, string texture, VehicleBadgePosition[] vehicleBadgePosition);
/// <summary>
/// Set badges to vehicle
/// </summary>
/// <param name="textureDictionary">The hash of textureDictionary</param>
/// <param name="texture">The hash of texture</param>
/// <param name="vehicleBadgePosition">The array of badge position. Maximum is 4</param>
/// <exception cref="ArgumentOutOfRangeException">When badge postion is more the 4</exception>
void SetBadge(uint textureDictionary, uint texture, VehicleBadgePosition[] vehicleBadgePosition);
}
}