summaryrefslogtreecommitdiff
path: root/soh/src/code
diff options
context:
space:
mode:
Diffstat (limited to 'soh/src/code')
-rw-r--r--soh/src/code/z_camera.c10
1 files changed, 7 insertions, 3 deletions
diff --git a/soh/src/code/z_camera.c b/soh/src/code/z_camera.c
index 13c1f3dab..c4db72565 100644
--- a/soh/src/code/z_camera.c
+++ b/soh/src/code/z_camera.c
@@ -1485,8 +1485,8 @@ s32 Camera_Free(Camera* camera) {
camera->animState = 0;
- f32 newCamX = -D_8015BD7C->state.input[0].cur.right_stick_x * 10.0f * (CVar_GetFloat("gCameraSensitivity", 1.0f));
- f32 newCamY = D_8015BD7C->state.input[0].cur.right_stick_y * 10.0f * (CVar_GetFloat("gCameraSensitivity", 1.0f));
+ f32 newCamX = -D_8015BD7C->state.input[0].cur.right_stick_x * 10.0f * (CVar_GetFloat("gThirdPersonCameraSensitivity", 1.0f));
+ f32 newCamY = D_8015BD7C->state.input[0].cur.right_stick_y * 10.0f * (CVar_GetFloat("gThirdPersonCameraSensitivity", 1.0f));
camera->play->camX += newCamX * (CVar_GetS32("gInvertXAxis", 0) ? -1 : 1);
camera->play->camY += newCamY * (CVar_GetS32("gInvertYAxis", 1) ? 1 : -1);
@@ -1498,7 +1498,11 @@ s32 Camera_Free(Camera* camera) {
camera->play->camY = -0x228C;
}
- camera->dist = Camera_LERPCeilF(para1->distTarget, camera->dist, 1.0f / camera->rUpdateRateInv, 0.0f);
+ f32 distTarget = CVar_GetS32("gFreeCameraDistMax", para1->distTarget);
+ f32 speedScaler = CVar_GetS32("gFreeCameraTransitionSpeed", 25);
+ f32 distDiff = ABS(distTarget - camera->dist);
+ if (distDiff > 0)
+ camera->dist = Camera_LERPCeilF(distTarget, camera->dist, speedScaler / (distDiff + speedScaler), 0.0f);
OLib_Vec3fDiffToVecSphGeo(&spA8, at, eyeNext);
spA8.r = camera->dist;