9 float m_fForwardBackward;
12 float m_fStrafeLeftRight;
15 float m_fHeadingAngle;
18 float m_fAimingLeftRight;
21 float m_fAimingDownUp;
42 string m_sWhatToEquip;
45 string m_sEntityToAim;
50 if (m_Character && m_Character_c)
51 m_Character_c.SetJump(1.0);
59 m_Character_c.ReloadWeapon();
68 m_Character_c.SetMuzzle(m_iMuzzle);
69 GetGame().GetCallqueue().CallLater(RefreshWeapon, 100);
78 m_Character_c.SetSafety(
false,
false);
79 m_Character_c.SetMuzzle(m_iMuzzle);
80 m_Character_c.SetFireMode(m_iFireMode);
81 m_Character_c.SetFireWeaponWanted(1);
83 GetGame().GetCallqueue().CallLater(RefreshWeapon, 100);
92 m_Character_c.SetSafety(
false,
false);
93 m_Character_c.SetMuzzle(m_iMuzzle);
94 m_Character_c.SetFireMode(m_iFireMode);
95 m_Character_c.SetFireWeaponWanted(1);
104 m_Character_c.SetSafety(
false,
false);
105 m_Character_c.SetMuzzle(m_iMuzzle);
106 m_Character_c.SetFireMode(m_iFireMode);
107 m_Character_c.SetFireWeaponWanted(0);
116 m_Character_c.ForceDeath();
123 CharacterGrenadeSlotComponent grenade = CharacterGrenadeSlotComponent.Cast(m_Character.FindComponent(CharacterGrenadeSlotComponent));
124 if (m_Character_c && grenade)
126 m_Character_c.SelectWeapon(grenade);
127 m_Character_c.SetThrow(
true,
false);
134 CharacterGrenadeSlotComponent grenade = CharacterGrenadeSlotComponent.Cast(m_Character.FindComponent(CharacterGrenadeSlotComponent));
135 if (m_Character_c && grenade)
137 m_Character_c.SelectWeapon(grenade);
138 m_Character_c.SetThrow(
false,
false);
143 void actionGetInPilot()
148 actualWorld.QueryEntitiesBySphere(m_Character.GetOrigin(), 3, PerformActionGetIn);
152 void actionGetOutPilot()
157 actualWorld.QueryEntitiesBySphere(m_Character.GetOrigin(), 3, PerformActionGetIn);
161 void actionGetInCargo()
166 actualWorld.QueryEntitiesBySphere(m_Character.GetOrigin(), 3, PerformActionGetIn);
170 void actionGetOutCargo()
175 actualWorld.QueryEntitiesBySphere(m_Character.GetOrigin(), 3, PerformActionGetIn);
179 void actionGetInTurret()
184 actualWorld.QueryEntitiesBySphere(m_Character.GetOrigin(), 3, PerformActionGetIn);
188 void actionGetOutTurret()
193 actualWorld.QueryEntitiesBySphere(m_Character.GetOrigin(), 3, PerformActionGetIn);
200 actualWorld.QueryEntitiesBySphere(m_Character.GetOrigin(), 3, PerformActionEquip);
204 void actionActivate()
207 actualWorld.QueryEntitiesBySphere(m_Character.GetOrigin(), 3, PerformActionActivate);
214 actualWorld.QueryEntitiesBySphere(m_Character.GetOrigin(), 3, PerformActionOpen);
217 private World actualWorld;
219 private CharacterControllerComponent m_Character_c;
220 private float previousMoveSpeed;
221 private vector originalYawPitchRoll;
222 private string m_sLastActionName;
230 findCharacter(world);
236 m_Character_c = CharacterControllerComponent.Cast(m_Character.FindComponent(CharacterControllerComponent));
241 originalYawPitchRoll = m_Character.GetYawPitchRoll();
246 void findCharacter(
World world)
250 GetTrackName().Split(
"_", strs,
true);
252 m_Character =
GenericEntity.Cast(world.FindEntityByName(strs.Get(0)));
259 m_Character_c.SetFireWeaponWanted(0);
263 override void OnApply(
float time)
266 if (m_Character && m_Character_c)
270 m_Character_c.SetDynamicStance(m_fStance);
274 if (m_fMoveSpeed > 0 && m_fMoveSpeed < 0.5)
276 else if (m_fMoveSpeed > 2)
277 m_bWeaponRised =
false;
280 if (previousMoveSpeed != m_fMoveSpeed)
282 vector move = {m_fStrafeLeftRight, 0, m_fForwardBackward};
283 m_Character_c.SetMovement(m_fMoveSpeed, move);
287 previousMoveSpeed = m_fMoveSpeed;
290 m_Character_c.SetHeadingAngle(
Math.DEG2RAD * originalYawPitchRoll[0] + m_fHeadingAngle,
false);
293 if (m_sEntityToAim ==
"")
295 float x_rad =
Math.DEG2RAD * originalYawPitchRoll[0] + m_fHeadingAngle + m_fAimingLeftRight;
296 float y_rad = m_fAimingDownUp;
297 vector aiming_vector = {x_rad, y_rad, 0};
298 m_Character_c.GetInputContext().SetAimingAngles( aiming_vector );
305 vector shooterTransform[4], aimingTransform[4], aimingRotation[3];
307 m_Character.GetWorldTransform(shooterTransform);
308 vector shooterUp = shooterTransform[1];
310 aimingRotation[0] = aimingTransform[0];
311 aimingRotation[1] = aimingTransform[1];
312 aimingRotation[2] = aimingTransform[2];
313 vector resultAngles =
Math3D.MatrixToAngles(aimingRotation);
315 finalRadAngles[0] = resultAngles[0] *
Math.DEG2RAD;
316 finalRadAngles[1] = resultAngles[1] *
Math.DEG2RAD;
317 finalRadAngles[2] = resultAngles[2] *
Math.DEG2RAD;
319 m_Character_c.GetInputContext().SetAimingAngles( finalRadAngles );
326 m_Character_c.SetRoll(1);
328 m_Character_c.SetRoll(0);
332 m_Character_c.SetRoll(2);
334 m_Character_c.SetRoll(0);
338 m_Character_c.SetWeaponRaised(
true);
340 m_Character_c.SetWeaponRaised(
false);
344 bool PerformActionGetIn(
IEntity entity)
347 SCR_BaseCompartmentManagerComponent compartmentManager = SCR_BaseCompartmentManagerComponent.Cast(entity.
FindComponent(SCR_BaseCompartmentManagerComponent));
348 if (!compartmentManager)
350 array<BaseCompartmentSlot> slots = {};
353 compartmentManager.GetFreeCompartmentsOfType(slots, compType);
355 compartmentManager.GetCompartmentsOfType(slots, compType);
357 if (!slots.IsEmpty())
363 getInAction = slot.GetGetInAction();
365 getInAction = slot.GetGetOutAction();
367 ActionsPerformerComponent actionsPerformer = ActionsPerformerComponent.Cast(m_Character.FindComponent(ActionsPerformerComponent));
368 actionsPerformer.PerformAction(getInAction);
376 bool PerformActionEquip(
IEntity entity)
382 array<BaseUserAction> outActions = {};
383 actionsManager.GetActionsList(outActions);
387 if (openAction.GetOwner().GetName() == m_sWhatToEquip && openAction.GetActionName().Contains(
"Equip"))
389 ActionsPerformerComponent actionsPerformer = ActionsPerformerComponent.Cast(m_Character.FindComponent(ActionsPerformerComponent));
390 actionsPerformer.PerformAction(openAction);
398 bool PerformActionActivate(
IEntity entity)
404 array<BaseUserAction> outActions = {};
405 actionsManager.GetActionsList(outActions);
409 if (openAction.GetOwner().GetName() == m_sWhatToEquip && openAction.GetActionName().Contains(
"Activate"))
411 ActionsPerformerComponent actionsPerformer = ActionsPerformerComponent.Cast(m_Character.FindComponent(ActionsPerformerComponent));
412 actionsPerformer.PerformAction(openAction);
420 bool PerformActionOpen(
IEntity entity)
427 array<BaseUserAction> outActions = {};
428 actionsManager.GetActionsList(outActions);
437 if (openAction.GetActionName().Contains(
"Open"))
439 ActionsPerformerComponent actionsPerformer = ActionsPerformerComponent.Cast(m_Character.FindComponent(ActionsPerformerComponent));
440 actionsPerformer.PerformAction(openAction);