Dayz Explorer  1.24.157551 (v105080)
Dayz Code Explorer by Zeroy
kurushake.c
Go to the documentation of this file.
1 class KuruShake
2 {
3  const float RANDOM_RANGE_POINT = 1;
4  const float RANDOM_RANGE_DEVIATION = 0.50;
5  const float SHAKE_DURATION_PHASE1 = 0.01;
6  const float SHAKE_STRENGTH_MIN = 1;
7  const float SHAKE_STRENGTH_MAX = 5;
8 
9  PlayerBase m_Player;
10  float m_Time;
11  float m_Time2;
12  float m_RelativeTime;
13  float m_RelativeTime2;
14  float m_ShakeStrength;
15 
16 
17  ref array<vector> m_Curve = new array<vector>;
18 
19  void KuruShake(PlayerBase player, float amount)
20  {
21 
22  vector pos1;
23  int seed = Math.Randomize(player.GetRandomGeneratorSyncManager().GetRandomInRange(RandomGeneratorSyncUsage.RGSGeneric,0,10000));
24  Math.RandomFloat(-RANDOM_RANGE_POINT,RANDOM_RANGE_POINT);//throw away
25  m_ShakeStrength = Math.Lerp(SHAKE_STRENGTH_MIN, SHAKE_STRENGTH_MAX, amount);
26  pos1[0] = Math.RandomFloat(-RANDOM_RANGE_POINT,RANDOM_RANGE_POINT);
27  pos1[1] = Math.RandomFloat(-RANDOM_RANGE_POINT,RANDOM_RANGE_POINT);
28  pos1.Normalize();
29  pos1 = pos1 * m_ShakeStrength;
30 
31  vector pos2;
32  pos2[0] = pos1[0] + Math.RandomFloat(-RANDOM_RANGE_DEVIATION,RANDOM_RANGE_DEVIATION) + pos1[0];
33  pos2[1] = pos1[1] + Math.RandomFloat(-RANDOM_RANGE_DEVIATION,RANDOM_RANGE_DEVIATION) + pos1[1];
34  m_Curve.Insert("0 0 0");
35  m_Curve.Insert(pos1);
36  m_Curve.Insert(pos2);
37 
38  /*
39  Print("==========================");
40  for(int i = 0; i < m_Curve.Count(); i++)
41  {
42  Print(m_Curve[i]);
43  }
44  Print("==========================");
45  */
46  }
47 
48  void Update(float delta_time, out float pos_x, out float pos_y )
49  {
50  if(m_RelativeTime < 0.99)
51  {
52  m_Time += delta_time;
53  m_RelativeTime = Math.InverseLerp(0, SHAKE_DURATION_PHASE1, m_Time);
54  //m_RelativeTime = m_RelativeTime - 0.01;
55  m_RelativeTime = Easing.EaseInQuint(m_RelativeTime);
56  vector pos = Math3D.Curve(ECurveType.CatmullRom, m_RelativeTime, m_Curve);
57  pos_x = pos[0];
58  pos_y = pos[1];
59  }
60  else
61  {
62  m_Time2 += delta_time * 1;
63  m_RelativeTime2 = 1 - m_Time2;
64  m_RelativeTime2 = Easing.EaseInQuint(m_RelativeTime2);
65  vector pos2 = Math3D.Curve(ECurveType.CatmullRom, m_RelativeTime2, m_Curve);
66  pos_x = pos2[0];
67  pos_y = pos2[1];
68  }
69 
70  if(m_Time2 >= 0.99)
71  {
72  delete this;
73  }
74  }
75 
76 
77 
78 }
m_Time
protected float m_Time
Definition: carscript.c:146
ECurveType
ECurveType
Definition: enmath3d.c:20
Easing
Input value between 0 and 1, returns value adjusted by easing, no automatic clamping of input(do your...
Definition: easing.c:2
KuruShake
Definition: kurushake.c:1
RandomGeneratorSyncUsage
RandomGeneratorSyncUsage
Definition: randomgeneratorsyncmanager.c:1
PlayerBase
Definition: playerbaseclient.c:1
vector
Definition: enconvert.c:105
array< vector >
Math
Definition: enmath.c:6
Math3D
Definition: enmath3d.c:27