Dayz Explorer 1.28.160049
Loading...
Searching...
No Matches
dayzspectator.c
Go to the documentation of this file.
2{
3 private float m_SpeedMultiplier = 1.0;
4
5 private float m_SendUpdateAcc = 0.0;
6
7 void DayZSpectator()
8 {
9 SetEventMask(EntityEvent.FRAME);
10 }
11
12 override void EOnFrame(IEntity other, float timeSlice)
13 {
14 if (GetUApi().GetInputByID(UACarShiftGearUp).LocalPress())
15 m_SpeedMultiplier = m_SpeedMultiplier + 2;
16 if (GetUApi().GetInputByID(UACarShiftGearDown).LocalPress())
17 m_SpeedMultiplier = m_SpeedMultiplier - 2;
18
19 float speed = 5.0 * m_SpeedMultiplier;
20 if (GetUApi().GetInputByID(UATurbo).LocalValue())
21 speed *= 2;
22
23 float forward = GetUApi().GetInputByID(UAMoveForward).LocalValue() - GetUApi().GetInputByID(UAMoveBack).LocalValue();
24 float strafe = GetUApi().GetInputByID(UAMoveRight).LocalValue() - GetUApi().GetInputByID(UAMoveLeft).LocalValue();
25
26 vector direction = GetDirection();
27 vector directionAside = vector.Up * direction;
28
29 vector oldPos = GetPosition();
30 vector forwardChange = forward * timeSlice * direction * speed;
31 vector strafeChange = strafe * timeSlice * directionAside * speed;
32 vector newPos = oldPos + forwardChange + strafeChange;
33 float yMin = GetGame().SurfaceRoadY(newPos[0], newPos[2]);
34 if (newPos[1] < yMin)
35 newPos[1] = yMin;
36
37 SetPosition(newPos);
38
39 float yawDiff = GetUApi().GetInputByID(UAAimLeft).LocalValue() - GetUApi().GetInputByID(UAAimRight).LocalValue();
40 float pitchDiff = GetUApi().GetInputByID(UAAimDown).LocalValue() - GetUApi().GetInputByID(UAAimUp).LocalValue();
41 vector oldOrient = GetOrientation();
42 vector newOrient = oldOrient;
43 newOrient[0] = newOrient[0] - Math.RAD2DEG * yawDiff * timeSlice;
44 newOrient[1] = newOrient[1] - Math.RAD2DEG * pitchDiff * timeSlice;
45 if (newOrient[1] < -89)
46 newOrient[1] = -89;
47 if (newOrient[1] > 89)
48 newOrient[1] = 89;
49
50 SetOrientation(newOrient);
51
52 if (m_SendUpdateAcc > 0.5)
53 {
54 GetGame().UpdateSpectatorPosition(newPos);
55 m_SendUpdateAcc = 0;
56 }
57
58 m_SendUpdateAcc = m_SendUpdateAcc + timeSlice;
59 }
60};
vector GetOrientation()
proto native float SurfaceRoadY(float x, float z, RoadSurfaceDetection rsd=RoadSurfaceDetection.LEGACY)
Definition enmath.c:7
proto native CGame GetGame()
proto native void SetPosition(vector position)
Set the world position of the Effect.
Definition effect.c:463
EntityEvent
Entity events for event-mask, or throwing event from code.
Definition enentity.c:45
class JsonUndergroundAreaTriggerData GetPosition
proto native UAInputAPI GetUApi()