Arma Reforger Explorer 1.7.0.54
Arma Reforger Code Explorer by Zeroy - Thanks to MisterOutofTime
Loading...
Searching...
No Matches
HelicopterCinematicTrack.c
Go to the documentation of this file.
1[CinematicTrackAttribute(name:"Helicopter Track", description:"Allows you to control helicopters")]
3{
4 [Attribute("false")]
5 bool m_bStartEngine;
6
7 [Attribute("1.0", params:"0 100000")]
8 float m_fThrottle;
9
10 [Attribute("2.0", params:"0 100000")]
11 float m_fMainRotorForce;
12
13 [Attribute("2.0", params:"0 100000")]
14 float m_fTailRotorForce;
15
16 [Attribute("40.0", params:"0 50")]
17 float m_fForwardIntensity;
18
19 [Attribute("false")]
20 bool m_bshootTurret;
21
22 [Attribute("")]
23 string m_sTurretInSlot;
24
25 private GenericEntity m_Helicopter;
26 private VehicleHelicopterSimulation m_Helicopter_s;
27 private BaseLightManagerComponent m_Helicopter_l;
28 private World actualWorld;
29 private SlotManagerComponent slotManager;
30 private EntitySlotInfo entityInSlot;
31 private IEntity m_SlotEntity;
32 private TurretControllerComponent turret;
33
34
36 void pushForward()
37 {
38 if (m_Helicopter && m_Helicopter_s)
39 {
40 vector velOrig = m_Helicopter.GetPhysics().GetVelocity();
41 vector rotVector = m_Helicopter.GetAngles();
42 vector vel = {velOrig[0] + Math.Sin(rotVector[1] * Math.DEG2RAD) * m_fForwardIntensity, velOrig[1], velOrig[2] + Math.Cos(rotVector[1] * Math.DEG2RAD) * m_fForwardIntensity };
43 m_Helicopter.GetPhysics().SetVelocity(vel);
44 }
45 }
46
47 override void OnInit(World world)
48 {
49
50 actualWorld = world;
51
52 // Find vehicle entity by using name of track
53 findEntity(world);
54
55 if (m_Helicopter) {
56
57 // Find vehicle control and simulation components
58 m_Helicopter_s = VehicleHelicopterSimulation.Cast(m_Helicopter.FindComponent(VehicleHelicopterSimulation));
59 }
60 }
61
62 void findEntity(World world)
63 {
64 // Find particle entity by using name of track
65 TStringArray strs = new TStringArray;
66 GetTrackName().Split("_", strs, true);
67
68 m_Helicopter = GenericEntity.Cast(world.FindEntityByName(strs.Get(0)));
69 }
70
71 override void OnApply(float time)
72 {
73
74 if (m_Helicopter && m_Helicopter_s)
75 {
76 m_Helicopter_s.EngineStart();
77 m_Helicopter_s.SetThrottle(m_fThrottle);
78 m_Helicopter_s.RotorSetForceScaleState(0, m_fMainRotorForce);
79 m_Helicopter_s.RotorSetForceScaleState(1, m_fTailRotorForce);
80 }
81
82 slotManager = SlotManagerComponent.Cast(m_Helicopter.FindComponent(SlotManagerComponent));
83
84 if (!slotManager)
85 return;
86
87 if (m_sTurretInSlot == "")
88 return;
89
90 entityInSlot = slotManager.GetSlotByName(m_sTurretInSlot); //M260CarrierVirtual
91
92 if(!entityInSlot)
93 return;
94
95 m_SlotEntity = entityInSlot.GetAttachedEntity();
96
97 if(!m_SlotEntity)
98 return;
99
100 turret = TurretControllerComponent.Cast(m_SlotEntity.FindComponent(TurretControllerComponent));
101
102 if (!turret)
103 return;
104
105 if (m_bshootTurret)
106 turret.SetFireWeaponWanted(true);
107 else
108 turret.SetFireWeaponWanted(false);
109 }
110}
void CinematicEventAttribute(string name="")
Definition attributes.c:18
Adds ability to attach an object to a slot.
Definition Math.c:13
Definition World.c:16
SCR_FieldOfViewSettings Attribute
array< string > TStringArray
Definition Types.c:385