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

◆ UpdateUDAngleUnlocked()

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

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

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