diff options
| author | frizzle101101 <aaronfritz96@gmail.com> | 2022-12-12 16:10:28 -0500 |
|---|---|---|
| committer | GitHub <noreply@github.com> | 2022-12-12 16:10:28 -0500 |
| commit | cabcfb009c438b8de1af88d904e9068f8a650e1e (patch) | |
| tree | 0fd4d89f5effb2d65c1d5c7c30bab26caa299bf3 /soh/src/code/z_camera.c | |
| parent | cb4a0aa21b31a6f00451ccff1b78c5ea673d7abc (diff) | |
improving free cam settings configurability (#1987)
* Initial camera distance slider
* works with freecam
* improving the settings configurability, adding distance slider and transition speed for the free camera
adding seperate sensitivity and invert settings for aiming/first person camera
* spelling
* tooltip msg on camera invvert
* typos
* removing the original free camera checkbox in experimental menu
* adding name change to new presets file
Co-authored-by: RaelCappra <rael.cappra@gmail.com>
Diffstat (limited to 'soh/src/code/z_camera.c')
| -rw-r--r-- | soh/src/code/z_camera.c | 10 |
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; |
