MCPcopy Create free account
hub / github.com/OGSR/OGSR-Engine / camUpdateLadder

Method camUpdateLadder

ogsr_engine/xrGame/ActorCameras.cpp:55–89  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

53 }
54}
55void CActor::camUpdateLadder(float dt)
56{
57 if (!character_physics_support()->movement()->ElevatorState())
58 return;
59 if (cameras[eacFirstEye]->bClampYaw)
60 return;
61 float yaw = (-XFORM().k.getH());
62
63 float& cam_yaw = cameras[eacFirstEye]->yaw;
64 float delta = angle_difference_signed(yaw, cam_yaw);
65
66 if (-0.05f < delta && 0.05f > delta)
67 {
68 yaw = cam_yaw + delta;
69 float lo = (yaw - f_Ladder_cam_limit);
70 float hi = (yaw + f_Ladder_cam_limit);
71 cameras[eacFirstEye]->lim_yaw[0] = lo;
72 cameras[eacFirstEye]->lim_yaw[1] = hi;
73 cameras[eacFirstEye]->bClampYaw = true;
74 }
75 else
76 {
77 cam_yaw += delta * _min(dt * 10.f, 1.f);
78 }
79
80 CElevatorState* es = character_physics_support()->movement()->ElevatorState();
81 if (es && es->State() == CElevatorState::clbClimbingDown)
82 {
83 float& cam_pitch = cameras[eacFirstEye]->pitch;
84 const float ldown_pitch = cameras[eacFirstEye]->lim_pitch.y;
85 float delta = angle_difference_signed(ldown_pitch, cam_pitch);
86 if (delta > 0.f)
87 cam_pitch += delta * _min(dt * 10.f, 1.f);
88 }
89}
90
91void CActor::cam_UnsetLadder()
92{

Callers

nothing calls this directly

Calls 8

XFORMFunction · 0.85
angle_difference_signedFunction · 0.85
movementMethod · 0.80
_minFunction · 0.50
ElevatorStateMethod · 0.45
getHMethod · 0.45
StateMethod · 0.45

Tested by

no test coverage detected