diff options
| author | Adam Bird <Archez@users.noreply.github.com> | 2023-10-30 11:55:26 -0400 |
|---|---|---|
| committer | GitHub <noreply@github.com> | 2023-10-30 10:55:26 -0500 |
| commit | 671ce062d0eebeae7d02c126a82dd07dd7092c2a (patch) | |
| tree | 5870e3d2a33b59fc460a5a326bd3d291a6a984e0 /soh/src/code | |
| parent | dab070a8a138e3fb0b04dbd3ff81a7f4b7794d9b (diff) | |
improve free camera reset (#3225)
Diffstat (limited to 'soh/src/code')
| -rw-r--r-- | soh/src/code/z_camera.c | 11 |
1 files changed, 9 insertions, 2 deletions
diff --git a/soh/src/code/z_camera.c b/soh/src/code/z_camera.c index 783731506..a177e29e7 100644 --- a/soh/src/code/z_camera.c +++ b/soh/src/code/z_camera.c @@ -2138,8 +2138,6 @@ s32 Camera_Parallel1(Camera* camera) { OLib_Vec3fDiffToVecSphGeo(&atToEyeDir, at, eye); OLib_Vec3fDiffToVecSphGeo(&atToEyeNextDir, at, eyeNext); - camera->play->manualCamera = false; - switch (camera->animState) { case 0: case 0xA: @@ -7888,6 +7886,15 @@ s32 Camera_ChangeModeFlags(Camera* camera, s16 mode, u8 flags) { break; } } + + // Clear free camera if an action is performed that would move the camera (targeting, first person, talking) + if (CVarGetInteger("gFreeCamera", 0) && SetCameraManual(camera) == 1 && + ((mode >= CAM_MODE_TARGET && mode <= CAM_MODE_BATTLE) || + (mode >= CAM_MODE_FIRSTPERSON && mode <= CAM_MODE_CLIMBZ) || mode == CAM_MODE_HANGZ || + mode == CAM_MODE_FOLLOWBOOMERANG)) { + camera->play->manualCamera = false; + } + func_8005A02C(camera); camera->mode = mode; return 0x80000000 | mode; |
