Skip to content

Commit 0d345dc

Browse files
authoredOct 20, 2021
Fix view bobbing not resetting when resting
partially fixes #11694, also fixes #11692
1 parent 86b44ec commit 0d345dc

File tree

1 file changed

+4
-30
lines changed

1 file changed

+4
-30
lines changed
 

Diff for: ‎src/client/camera.cpp

+4-30
Original file line numberDiff line numberDiff line change
@@ -186,9 +186,7 @@ void Camera::step(f32 dtime)
186186
m_view_bobbing_anim -= offset;
187187
} else if (m_view_bobbing_anim > 0.75) {
188188
m_view_bobbing_anim += offset;
189-
}
190-
191-
if (m_view_bobbing_anim < 0.5) {
189+
} else if (m_view_bobbing_anim < 0.5) {
192190
m_view_bobbing_anim += offset;
193191
if (m_view_bobbing_anim > 0.5)
194192
m_view_bobbing_anim = 0.5;
@@ -410,41 +408,17 @@ void Camera::update(LocalPlayer* player, f32 frametime, f32 busytime, f32 tool_r
410408
f32 bobfrac = my_modf(m_view_bobbing_anim * 2);
411409
f32 bobdir = (m_view_bobbing_anim < 0.5) ? 1.0 : -1.0;
412410

413-
#if 1
414411
f32 bobknob = 1.2;
415412
f32 bobtmp = sin(pow(bobfrac, bobknob) * M_PI);
416-
//f32 bobtmp2 = cos(pow(bobfrac, bobknob) * M_PI);
417413

418414
v3f bobvec = v3f(
419415
0.3 * bobdir * sin(bobfrac * M_PI),
420416
-0.28 * bobtmp * bobtmp,
421417
0.);
422418

423-
//rel_cam_pos += 0.2 * bobvec;
424-
//rel_cam_target += 0.03 * bobvec;
425-
//rel_cam_up.rotateXYBy(0.02 * bobdir * bobtmp * M_PI);
426-
float f = 1.0;
427-
f *= m_cache_view_bobbing_amount;
428-
rel_cam_pos += bobvec * f;
429-
//rel_cam_target += 0.995 * bobvec * f;
430-
rel_cam_target += bobvec * f;
431-
rel_cam_target.Z -= 0.005 * bobvec.Z * f;
432-
//rel_cam_target.X -= 0.005 * bobvec.X * f;
433-
//rel_cam_target.Y -= 0.005 * bobvec.Y * f;
434-
rel_cam_up.rotateXYBy(-0.03 * bobdir * bobtmp * M_PI * f);
435-
#else
436-
f32 angle_deg = 1 * bobdir * sin(bobfrac * M_PI);
437-
f32 angle_rad = angle_deg * M_PI / 180;
438-
f32 r = 0.05;
439-
v3f off = v3f(
440-
r * sin(angle_rad),
441-
r * (cos(angle_rad) - 1),
442-
0);
443-
rel_cam_pos += off;
444-
//rel_cam_target += off;
445-
rel_cam_up.rotateXYBy(angle_deg);
446-
#endif
447-
419+
rel_cam_pos += bobvec * m_cache_view_bobbing_amount;
420+
rel_cam_target += bobvec * m_cache_view_bobbing_amount;
421+
rel_cam_up.rotateXYBy(-0.03 * bobdir * bobtmp * M_PI * m_cache_view_bobbing_amount);
448422
}
449423

450424
// Compute absolute camera position and target

0 commit comments

Comments
 (0)
Please sign in to comment.