Dayz Build 1.29.163047, Scripts Rev. 123548
Dayz Code Explorer by Zeroy
Loading...
Searching...
No Matches
actionpushcar.c
Go to the documentation of this file.
1class ActionPushCarData : ActionPushObjectData
2{
6
7 // deprecated
9}
10
11class CAContinuousRepeatPushCar : CAContinuousRepeatPushObject
12{
13 override float GetProgressWidgetMultiplier()
14 {
15 return 2.5;
16 }
17}
18
19class ActionPushCarCB : ActionPushObjectCB
20{
21 protected float PUSH_FORCE_IMPULSE_INCREMENT = 200.0;
22
24
25 override void CreateActionComponent()
26 {
27 m_ActionData.m_ActionComponent = new CAContinuousRepeatPushCar(UATimeSpent.PUSH_CAR);
28 }
29
30 override protected void ApplyForce(ActionPushObjectData actionData)
31 {
32 m_ActionDataPushCar = ActionPushCarData.Cast(m_ActionData);
33 CarScript car = CarScript.Cast(actionData.m_Object);
34
35 m_ActionDataPushCar.m_HorizontalDirectionRandom = Math.RandomFloat(1.0, 3.5);
36 m_ActionDataPushCar.m_VerticalDirectionRandom = Math.RandomFloat(-0.5, 0.5);
37
38 float bodyMass = dBodyGetMass(car);
39 float invBodyMass = 1.0 / bodyMass;
41
42 float easedProgress = Easing.EaseInOutSine(actionData.m_ActionComponent.GetProgress());
43
44 vector impulse = car.GetDirection() * force * (float)m_ActionDataPushCar.m_PushDirection;
45 impulse = impulse * invBodyMass;
46 impulse[0] = impulse[0] * m_ActionDataPushCar.m_HorizontalDirectionRandom;
47 impulse[1] = impulse[1] * m_ActionDataPushCar.m_VerticalDirectionRandom;
48 impulse = impulse * easedProgress;
49
50 actionData.m_Player.DepleteStamina(EStaminaModifiers.PUSH_CAR);
51
52 dBodyApplyImpulseAt(car, impulse, car.ModelToWorld(car.GetEnginePos()));
53 }
54}
55
57{
58 void ActionPushCar()
59 {
60 m_CallbackClass = ActionPushCarCB;
61 m_CommandUID = DayZPlayerConstants.CMD_ACTIONFB_VEHICLE_PUSH;
62 m_FullBody = true;
64
65 m_Text = "#push_car";
66 }
67
68 override bool ActionCondition(PlayerBase player, ActionTarget target, ItemBase item)
69 {
70 if (!super.ActionCondition(player, target, item))
71 return false;
72
73 if (!IsInReach(player, target, UAMaxDistances.SMALL))
74 return false;
75
76 return true;
77 }
78
80 {
81 ActionPushObjectData data = new ActionPushCarData();
82 return data;
83 }
84
85 override void OnStartServer(ActionData action_data)
86 {
87 super.OnStartServer(action_data);
88
89 ActionPushCarData data = ActionPushCarData.Cast(action_data);
90 Car carObj = Car.Cast(data.m_Object);
91 if (carObj)
92 {
93 carObj.SetBrake(0.0);
94 carObj.SetHandbrake(0.0);
95 carObj.SetBrakesActivateWithoutDriver(false);
96 }
97
98 data.m_PushDirection = -1;
99 if (GetDirectionDot(data.m_Object, data.m_Player) > 0)
100 data.m_PushDirection = 1;
101
102 }
103
104 override void OnEndServer(ActionData action_data)
105 {
106 super.OnEndServer(action_data);
107
108 ActionPushObjectData data = ActionPushObjectData.Cast(action_data);
109 Car carObj = Car.Cast(data.m_Object);
110 if (carObj)
111 carObj.SetBrakesActivateWithoutDriver(true);
112 }
113
114 protected float GetDirectionDot(Object target, EntityAI player)
115 {
116 return vector.Dot(target.GetDirection(), player.GetDirection());
117 }
118
121 {
122 return CarScript.Cast(GetPushObject(target));
123 }
124}
125
126// deprecated
int m_CommandUID
Definition actionbase.c:31
int m_StanceMask
Definition actionbase.c:33
ActionBase ActionData
Definition actionbase.c:30
ActionPushCarCB ActionPushObjectCB ActionPushCar()
float GetDirectionDot(Object target, EntityAI player)
CarScript GetCar(ActionTarget target)
DEPRECATED.
class ActionTargets ActionTarget
bool IsInReach(PlayerBase player, ActionTarget target, float maxDistance=1.0)
ActionPushCarData m_ActionDataPushCar
void ApplyForce(ActionPushObjectData actionData)
float PUSH_FORCE_IMPULSE_INCREMENT
override void CreateActionComponent()
float m_VerticalDirectionRandom
float m_HorizontalDirectionRandom
Object GetPushObject(ActionTarget target)
override ActionData CreateActionData()
override bool ActionCondition(PlayerBase player, ActionTarget target, ItemBase item)
override void OnEndServer(ActionData action_data)
override void OnStartServer(ActionData action_data)
float GetProgressWidgetMultiplier()
Definition cabase.c:67
Base script class for cars.
Definition carscript.c:171
override float GetPushForceCoefficientMultiplier()
Input value between 0 and 1, returns value adjusted by easing, no automatic clamping of input(do your...
Definition easing.c:3
static float EaseInOutSine(float t)
Definition easing.c:14
Definition enmath.c:7
const float SMALL
const float PUSH_CAR
static float Dot(vector v1, vector v2)
Returns Dot product of vector v1 and vector v2.
Definition enconvert.c:284
DayZPlayerConstants
defined in C++
Definition dayzplayer.c:602
EStaminaModifiers
static proto float RandomFloat(float min, float max)
Returns a random float number between and min[inclusive] and max[exclusive].
proto void dBodyApplyImpulseAt(notnull IEntity body, vector impulse, vector pos)
Applies impuls on a pos position in world coordinates.
proto native float dBodyGetMass(notnull IEntity ent)