DayZ 1.27
DayZ Explorer by KGB
 
Загрузка...
Поиск...
Не найдено
DayZPlayerCameraVehicles.c
См. документацию.
1// *************************************************************************************
2// ! DayZPlayerCamera1stPersonVehicle - first person in vehicle
3// *************************************************************************************
4class DayZPlayerCamera1stPersonVehicle extends DayZPlayerCamera1stPerson
5{
6 override void OnUpdate(float pDt, out DayZPlayerCameraResult pOutResult)
7 {
8 super.OnUpdate(pDt, pOutResult);
9
10 pOutResult.m_fUseHeading = 0.0;
11 pOutResult.m_bUpdateEveryFrame = GetGame().IsPhysicsExtrapolationEnabled();
12 }
13}
14
15// *************************************************************************************
16// ! DayZPlayerCamera3rdPersonVehicle - 3rd person in vehicle (generic)
17// *************************************************************************************
19{
20 static const float CONST_UD_MIN = -85.0;
21 static const float CONST_UD_MAX = 85.0;
22 const float UP_ANGLE_CAP = 10; // max up angle, doesnt require gamecode sync
23
24 static const float CONST_LR_MIN = -160.0;
25 static const float CONST_LR_MAX = 160.0;
26
27 const float CONST_LINEAR_VELOCITY_STRENGTH = 0.025;
29
33
35 {
36 //Print("new camera: DayZPlayerCamera3rdPersonVehicle");
37
38 m_fDistance = 4.0;
39 m_CameraOffsetMS = "0.0 1.3 0.0";
40
41 HumanCommandVehicle vehicleCommand = pPlayer.GetCommand_Vehicle();
42 if ( vehicleCommand )
43 {
44 Transport transport = vehicleCommand.GetTransport();
45 if ( transport )
46 {
47 m_Transport = transport;
48 m_fDistance = transport.GetTransportCameraDistance();
49 m_CameraOffsetMS = transport.GetTransportCameraOffset();
50 }
51 }
52 }
53
54 override void OnActivate( DayZPlayerCamera pPrevCamera, DayZPlayerCameraResult pPrevCameraResult )
55 {
56 if (pPrevCamera)
57 {
58 vector baseAngles = pPrevCamera.GetBaseAngles();
59 m_fUpDownAngle = baseAngles[0];
60 m_fLeftRightAngle = baseAngles[1];
61
62 vector addAngles = pPrevCamera.GetAdditiveAngles();
63 m_fUpDownAngleAdd = addAngles[0];
64 m_fLeftRightAngleAdd = addAngles[1];
65 }
66
71 }
72
73 override void OnUpdate( float pDt, out DayZPlayerCameraResult pOutResult )
74 {
76 vector playerTransformWS[4];
77 m_pPlayer.GetTransform(playerTransformWS);
78
80 IEntity vehicle = m_Transport;
81 pOutResult.m_CollisionIgnoreEntity = vehicle;
82
84 vector cameraPosition = vector.Zero;
85 if ( vehicle )
86 {
87 vector vehiclePositionWS = vehicle.GetOrigin();
88 vector vehiclePositionMS = vehiclePositionWS.InvMultiply4(playerTransformWS);
89 cameraPosition = vehiclePositionMS + m_CameraOffsetMS;
90 }
91
96
98 vector posDiffLS = vector.Zero;
99 vector rotDiffLS = vector.Zero;
100 vector orientVeh = vector.Zero;
101
102 if (vehicle)
103 {
105 posDiffLS = posDiffWS.InvMultiply3(playerTransformWS);
106
108 rotDiffLS = rotDiffWS.InvMultiply3(playerTransformWS);
109
110 orientVeh = m_Transport.GetOrientation() * Math.DEG2RAD;
111 }
112
114 m_LagOffsetPosition[0] = Math.SmoothCD(m_LagOffsetPosition[0], posDiffLS[0], m_fLagOffsetVelocityX, 0.3, 1000, pDt);
115 m_LagOffsetPosition[1] = Math.SmoothCD(m_LagOffsetPosition[1], posDiffLS[1], m_fLagOffsetVelocityY, 0.3, 1000, pDt);
116 m_LagOffsetPosition[2] = Math.SmoothCD(m_LagOffsetPosition[2], posDiffLS[2], m_fLagOffsetVelocityZ, 0.3, 1000, pDt);
117
121
123 vector rot;
127
128 float distance = m_fDistance;
129
130 if (m_CurrentCameraPitch > UP_ANGLE_CAP) // restrict moving camera below surface level
131 {
132 vector clamped = GetCurrentOrientation() + rot;
133 clamped[1] = UP_ANGLE_CAP;
134 Math3D.YawPitchRollMatrix(clamped, pOutResult.m_CameraTM);
135
137
138 }
139 else
140 Math3D.YawPitchRollMatrix(GetCurrentOrientation() + rot, pOutResult.m_CameraTM);
141
143 pOutResult.m_CameraTM[3] = cameraPosition - m_LagOffsetPosition;
144
146 pOutResult.m_fDistance = distance;
147 pOutResult.m_fUseHeading = 0.0;
148 pOutResult.m_fInsideCamera = 0.0;
149 pOutResult.m_fIgnoreParentRoll = 1.0;
150 pOutResult.m_fIgnoreParentPitch = 1.0;
151 pOutResult.m_bUpdateEveryFrame = GetGame().IsPhysicsExtrapolationEnabled();
152
153 StdFovUpdate(pDt, pOutResult);
154
155 super.OnUpdate(pDt, pOutResult);
156 }
157
159 {
160 vector a;
161 a[0] = m_fUpDownAngle;
162 a[1] = m_fLeftRightAngle;
163 a[2] = 0;
164 return a;
165 }
166
168 {
169 vector a;
170 a[0] = m_fUpDownAngleAdd;
172 a[2] = 0;
173 return a;
174 }
175
178 protected float m_fDistance;
179
181 protected float m_fUpDownAngle;
182 protected float m_fUpDownAngleAdd;
183 protected float m_fLeftRightAngle;
184 protected float m_fLeftRightAngleAdd;
185
189 protected float m_fLagOffsetVelocityX[1];
190 protected float m_fLagOffsetVelocityY[1];
191 protected float m_fLagOffsetVelocityZ[1];
192 protected float m_fLagOffsetVelocityYaw[1];
193 protected float m_fLagOffsetVelocityPitch[1];
194 protected float m_fLagOffsetVelocityRoll[1];
195
198}
float m_fLeftRightAngle
left right angle in rad (in freelook only)
Определения DayZPlayerCamera1stPerson.c:194
float m_fUpDownAngle
up down angle in rad
Определения DayZPlayerCamera1stPerson.c:192
static const float CONST_UD_MAX
up limit
Определения DayZPlayerCamera1stPerson.c:106
float m_fLeftRightAngleAdd
left right angle in rad (in freelook only)
Определения DayZPlayerCamera1stPerson.c:195
float m_fUpDownAngleAdd
up down angle in rad
Определения DayZPlayerCamera1stPerson.c:193
static const float CONST_LR_MIN
down limit
Определения DayZPlayerCamera1stPerson.c:108
static const float CONST_LR_MAX
up limit
Определения DayZPlayerCamera1stPerson.c:109
static const float CONST_UD_MIN
down limit
Определения DayZPlayerCamera1stPerson.c:105
vector m_CameraOffsetMS
model space offset
Определения DayZPlayerCamera3rdPerson.c:301
float UpdateLRAngleUnlocked(out float pAngle, out float pAngleAdd, float pMin, float pMax, float pDt)
Определения DayZPlayerCamera_Base.c:190
float m_CurrentCameraYaw
Определения DayZPlayerCamera_Base.c:578
float m_CurrentCameraPitch
Определения DayZPlayerCamera_Base.c:579
float UpdateUDAngleUnlocked(out float pAngle, out float pAngleAdd, float pMin, float pMax, float pDt)
Определения DayZPlayerCamera_Base.c:129
void StdFovUpdate(float pDt, out DayZPlayerCameraResult pOutResult)
Определения DayZPlayerCamera_Base.c:315
float m_CurrentCameraRoll
Определения DayZPlayerCamera_Base.c:580
vector m_LagOffsetOrientation
Определения DayZPlayerCameraVehicles.c:188
void DayZPlayerCamera3rdPersonVehicle(DayZPlayer pPlayer, HumanInputController pInput)
Определения DayZPlayerCameraVehicles.c:34
const float CONST_ANGULAR_LAG_ROLL_STRENGTH
Определения DayZPlayerCameraVehicles.c:32
const float CONST_ANGULAR_VELOCITY_STRENGTH
Определения DayZPlayerCameraVehicles.c:28
float m_fLagOffsetVelocityYaw[1]
Определения DayZPlayerCameraVehicles.c:192
const float UP_ANGLE_CAP
Определения DayZPlayerCameraVehicles.c:22
const float CONST_ANGULAR_LAG_PITCH_STRENGTH
Определения DayZPlayerCameraVehicles.c:31
vector m_LagOffsetPosition
lag offsets
Определения DayZPlayerCameraVehicles.c:187
float m_fLagOffsetVelocityPitch[1]
Определения DayZPlayerCameraVehicles.c:193
float m_fLagOffsetVelocityY[1]
Определения DayZPlayerCameraVehicles.c:190
float m_fLagOffsetVelocityRoll[1]
Определения DayZPlayerCameraVehicles.c:194
float m_fLagOffsetVelocityX[1]
Определения DayZPlayerCameraVehicles.c:189
const float CONST_ANGULAR_LAG_YAW_STRENGTH
Определения DayZPlayerCameraVehicles.c:30
Transport m_Transport
cache
Определения DayZPlayerCameraVehicles.c:197
float m_fLagOffsetVelocityZ[1]
Определения DayZPlayerCameraVehicles.c:191
const float CONST_LINEAR_VELOCITY_STRENGTH
Определения DayZPlayerCameraVehicles.c:27
void OnActivate()
Определения Trap_LandMine.c:67
proto native bool IsPhysicsExtrapolationEnabled()
If physics extrapolation is enabled, always true on retail release builds.
override void OnUpdate(float pDt, out DayZPlayerCameraResult pOutResult)
Определения DayZPlayerCameraVehicles.c:6
override vector GetAdditiveAngles()
Определения DayZPlayerCamera1stPerson.c:76
override vector GetBaseAngles()
Определения DayZPlayerCamera1stPerson.c:67
this is main camera class
Определения DayZPlayerCamera1stPerson.c:5
proto native Transport GetTransport()
Определения human.c:690
Определения human.c:18
Определения EnEntity.c:165
Определения EnMath3D.c:28
Определения EnMath.c:7
Base native class for all motorized wheeled vehicles.
Определения Boat.c:28
proto vector InvMultiply4(vector mat[4])
Invert-transforms position.
static const vector Zero
Определения EnConvert.c:110
proto vector InvMultiply3(vector mat[3])
Invert-transforms vector.
Определения EnConvert.c:106
float m_fDistance
camera distance (external cameras only)
Определения dayzplayer.c:63
DayZPlayer m_pPlayer
data
Определения dayzplayer.c:135
class DayZPlayerCameraResult DayZPlayerCamera(DayZPlayer pPlayer, HumanInputController pInput)
Определения dayzplayer.c:56
vector GetCurrentOrientation()
Определения dayzplayer.c:112
proto native CGame GetGame()
proto native external vector GetOrigin()
Returns origin of Entity.
static proto void YawPitchRollMatrix(vector ang, out vector mat[3])
Creates rotation matrix from angles.
static float SmoothCDPI2PI(float val, float target, inout float velocity[], float smoothTime, float maxVelocity, float dt)
Определения EnMath.c:680
static proto float InverseLerp(float a, float b, float value)
Calculates the linear value that produces the interpolant value within the range [a,...
static const float RAD2DEG
Определения EnMath.c:16
static const float DEG2RAD
Определения EnMath.c:17
static proto float SmoothCD(float val, float target, inout float velocity[], float smoothTime, float maxVelocity, float dt)
Does the CD smoothing function - easy in | easy out / S shaped smoothing.
proto native vector GetVelocity(notnull IEntity ent)
Returns linear velocity.
proto vector dBodyGetAngularVelocity(notnull IEntity body)
Gets angular velocity for a rigidbody.
proto native void OnUpdate()
Определения tools.c:349