DayZ 1.28
DayZ Explorer by KGB
 
Загрузка...
Поиск...
Не найдено

◆ UpdateUDAngleUnlocked()

float UpdateUDAngleUnlocked ( out float pAngle,
out float pAngleAdd,
float pMin,
float pMax,
float pDt )
protected

См. определение в файле DayZPlayerCamera_Base.c строка 130

131 {
132 float target = m_CommandWeapons.GetBaseAimingAngleUD();
133
134 if (m_pInput.CameraIsTracking())
135 {
136 pAngleAdd = m_pInput.GetTracking()[1] * Math.RAD2DEG;
137 pAngle = target;
138
139 m_fUDAngleVel[0] = 0;
140 }
141 else
142 {
143 if (Math.AbsFloat(pAngleAdd) > 0.001)
144 {
145 pAngleAdd = pAngle + pAngleAdd - target;
146 pAngle = target;
147 }
148
149 if (m_pInput.CameraIsFreeLook())
150 {
151 pAngleAdd += m_pInput.GetAimDelta(pDt)[1] * Math.RAD2DEG;
152
153 m_fUDAngleVel[0] = 0;
154 }
155 else
156 {
157 PlayerBase player = PlayerBase.Cast(m_pPlayer);
158 if (player) // handle locking of camera U/D angle movement when performing an action and not in freelook
159 {
160 float pitch = pAngle + pAngleAdd;
161 float downLimit, upLimit, leftLimit, rightLimit;
162 player.GetLookLimits(downLimit, upLimit, leftLimit, rightLimit);
163
164 if (pitch < (upLimit + 1) && pitch > (downLimit - 1)) // stop smoothing once within sufficiently small difference
165 {
166 pMin = downLimit;
167 pMax = upLimit;
168 }
169 else // smooth camera to locked angle, avoiding snap from the angle we started the action to the limit
170 {
171 float vel[1] = m_fUDAngleVel;
172 pMin = Math.SmoothCD(pitch, downLimit, vel, 0.2, 1000, pDt);
173 pMax = Math.SmoothCD(pitch, upLimit, vel, 0.2, 1000, pDt);
174 }
175 }
176
177 pAngleAdd = Math.SmoothCD(pAngleAdd, 0.0, m_fUDAngleVel, 0.14, 1000, pDt);
178 }
179
180 if (!m_pInput.CameraIsFreeLook())
181 {
182 pAngle += m_pInput.GetAimDelta(pDt)[1] * Math.RAD2DEG;
183 }
184 }
185
186 pAngle = Limit(pAngle, pMin, pMax);
187 pAngleAdd = Limit(pAngle + pAngleAdd, pMin, pMax) - pAngle;
188 return pAngle + pAngleAdd;
189 }
float m_fUDAngleVel[1]
Определения DayZPlayerCamera_Base.c:555
HumanCommandWeapons m_CommandWeapons
Определения DayZPlayerCamera_Base.c:566
Определения EnMath.c:7
Определения PlayerBaseClient.c:2
DayZPlayer m_pPlayer
data
Определения dayzplayer.c:135
HumanInputController m_pInput
human input
Определения dayzplayer.c:136
static const float RAD2DEG
Определения EnMath.c:16
static proto float AbsFloat(float f)
Returns absolute value.
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.
Limit

Перекрестные ссылки Math::AbsFloat(), Limit, m_CommandWeapons, m_fUDAngleVel, m_pInput, m_pPlayer, Math::RAD2DEG и Math::SmoothCD().

Используется в DayZPlayerCameraBase::OnUpdate() и OnUpdate().