MCPcopy Create free account
hub / github.com/ddnet/ddnet / OnRender

Method OnRender

src/game/client/components/camera.cpp:292–408  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

290}
291
292void CCamera::OnRender()
293{
294 if(m_CameraSmoothing)
295 {
296 if(!GameClient()->m_Snap.m_SpecInfo.m_Active)
297 {
298 m_Center = m_CameraSmoothingTarget;
299 m_CameraSmoothing = false;
300 }
301 else
302 {
303 float Time = Client()->LocalTime();
304 if(Time >= m_CameraSmoothingEnd)
305 {
306 m_Center = m_CameraSmoothingTarget;
307 m_CameraSmoothing = false;
308 }
309 else
310 {
311 m_CameraSmoothingCenter = vec2(m_CameraSmoothingBezierX.Evaluate(CameraSmoothingProgress(Time)), m_CameraSmoothingBezierY.Evaluate(CameraSmoothingProgress(Time)));
312 if(distance(m_CameraSmoothingCenter, m_CameraSmoothingTarget) <= 0.1f)
313 {
314 m_Center = m_CameraSmoothingTarget;
315 m_CameraSmoothing = false;
316 }
317 }
318 }
319 }
320
321 // update camera center
322 if(GameClient()->m_Snap.m_SpecInfo.m_Active && !GameClient()->m_Snap.m_SpecInfo.m_UsePosition)
323 {
324 if(m_CamType != CAMTYPE_SPEC)
325 {
326 m_aLastPos[g_Config.m_ClDummy] = GameClient()->m_Controls.m_aMousePos[g_Config.m_ClDummy];
327 GameClient()->m_Controls.m_aMousePos[g_Config.m_ClDummy] = m_PrevCenter;
328 GameClient()->m_Controls.m_aMouseInputType[g_Config.m_ClDummy] = CControls::EMouseInputType::AUTOMATED;
329 GameClient()->m_Controls.ClampMousePos();
330 m_CamType = CAMTYPE_SPEC;
331 }
332 m_Center = GameClient()->m_Controls.m_aMousePos[g_Config.m_ClDummy];
333 }
334 else
335 {
336 if(m_CamType != CAMTYPE_PLAYER)
337 {
338 GameClient()->m_Controls.m_aMousePos[g_Config.m_ClDummy] = m_aLastPos[g_Config.m_ClDummy];
339 GameClient()->m_Controls.m_aMouseInputType[g_Config.m_ClDummy] = CControls::EMouseInputType::AUTOMATED;
340 GameClient()->m_Controls.ClampMousePos();
341 m_CamType = CAMTYPE_PLAYER;
342 }
343
344 if(GameClient()->m_Snap.m_SpecInfo.m_Active)
345 m_Center = GameClient()->m_Snap.m_SpecInfo.m_Position + m_aDyncamCurrentCameraOffset[g_Config.m_ClDummy];
346 else
347 m_Center = GameClient()->m_LocalCharacterPos + m_aDyncamCurrentCameraOffset[g_Config.m_ClDummy];
348 }
349

Callers

nothing calls this directly

Calls 6

distanceFunction · 0.85
EvaluateMethod · 0.80
ClampMousePosMethod · 0.80
DerivativeMethod · 0.80
ClientFunction · 0.50
LocalTimeMethod · 0.45

Tested by

no test coverage detected