DayZ 1.27
DayZ Explorer by KGB
 
Загрузка...
Поиск...
Не найдено
ActionPushCar.c
См. документацию.
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
Определения ActionBase.c:31
int m_StanceMask
Определения ActionBase.c:33
ActionBase ActionData
Определения ActionBase.c:30
ActionPushCarCB ActionPushObjectCB ActionPushCar()
Определения ActionPushCar.c:58
float GetDirectionDot(Object target, EntityAI player)
Определения ActionPushCar.c:114
CarScript GetCar(ActionTarget target)
DEPRECATED.
Определения ActionPushCar.c:120
class ActionTargets ActionTarget
EStaminaModifiers
Определения EStaminaModifiers.c:2
bool IsInReach(PlayerBase player, ActionTarget target, float maxDistance=1.0)
Определения ActionBase.c:1158
float PUSH_FORCE_IMPULSE_INCREMENT
Определения ActionPushCar.c:21
ActionPushCarData m_ActionDataPushCar
Определения ActionPushCar.c:23
override void CreateActionComponent()
Определения ActionPushCar.c:25
void ApplyForce(ActionPushObjectData actionData)
Определения ActionPushCar.c:30
Определения ActionPushCar.c:20
int m_PushDirection
Определения ActionPushCar.c:3
CarScript m_Car
Определения ActionPushCar.c:8
float m_VerticalDirectionRandom
Определения ActionPushCar.c:5
float m_HorizontalDirectionRandom
Определения ActionPushCar.c:4
Определения ActionPushCar.c:2
CarScript m_Car
Определения ActionPushCar.c:129
override ActionData CreateActionData()
Определения ActionPushObject.c:132
override bool ActionCondition(PlayerBase player, ActionTarget target, ItemBase item)
Определения ActionPushObject.c:138
Object GetPushObject(ActionTarget target)
Определения ActionPushObject.c:199
override void OnStartServer(ActionData action_data)
Определения AnimatedActionBase.c:489
override void OnEndServer(ActionData action_data)
Определения AnimatedActionBase.c:497
float GetProgressWidgetMultiplier()
Определения CABase.c:67
override float GetPushForceCoefficientMultiplier()
Определения CivilianSedan.c:421
Определения CivilianSedan.c:2
static float EaseInOutSine(float t)
Определения Easing.c:14
Input value between 0 and 1, returns value adjusted by easing, no automatic clamping of input(do your...
Определения Easing.c:3
Определения Building.c:6
Определения InventoryItem.c:731
Определения EnMath.c:7
Определения ObjectTyped.c:2
Определения PlayerBaseClient.c:2
const float SMALL
Определения ActionConstants.c:111
const float PUSH_CAR
Определения ActionConstants.c:72
Определения ActionConstants.c:28
Определения EnConvert.c:97
static float Dot(vector v1, vector v2)
Returns Dot product of vector v1 and vector v2.
Определения EnConvert.c:271
Определения EnConvert.c:106
DayZPlayerConstants
defined in C++
Определения dayzplayer.c:602
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)