From 6c8eb951e2a1905cb807044c69c88147d8270e1b Mon Sep 17 00:00:00 2001 From: MelonSpeedruns Date: Sat, 14 May 2022 15:31:45 -0400 Subject: [PATCH] fixed epona camera height + added WW z-target free camera --- soh/src/code/z_camera.c | 17 ++++++++++++++--- 1 file changed, 14 insertions(+), 3 deletions(-) diff --git a/soh/src/code/z_camera.c b/soh/src/code/z_camera.c index c86d72654..db3e49e8c 100644 --- a/soh/src/code/z_camera.c +++ b/soh/src/code/z_camera.c @@ -1478,7 +1478,10 @@ s32 Camera_Free(Camera* camera) { camera->animState = 1; at.x = Camera_LERPCeilF(camera->player->actor.world.pos.x, camera->at.x, camSpeed, 1.0f); - at.y = Camera_LERPCeilF(camera->player->actor.world.pos.y + Player_GetHeight(camera->player), camera->at.y, + at.y = Camera_LERPCeilF(camera->player->actor.world.pos.y + (camera->player->rideActor != NULL + ? Player_GetHeight(camera->player) / 2 + : Player_GetHeight(camera->player)), + camera->at.y, camSpeed, 1.0f); at.z = Camera_LERPCeilF(camera->player->actor.world.pos.z, camera->at.z, camSpeed, 1.0f); @@ -2090,6 +2093,16 @@ s32 Camera_Normal0(Camera* camera) { } s32 Camera_Parallel1(Camera* camera) { + f32 newCamX = -D_8015BD7C->state.input[0].cur.cam_x; + f32 newCamY = D_8015BD7C->state.input[0].cur.cam_y; + + manualCamera = false; + + if (CVar_GetS32("gFreeCamera", 0) && SetCameraManual(camera) == 1) { + Camera_Free(camera); + return 1; + } + Vec3f* eye = &camera->eye; Vec3f* at = &camera->at; Vec3f* eyeNext = &camera->eyeNext; @@ -2134,8 +2147,6 @@ s32 Camera_Parallel1(Camera* camera) { OLib_Vec3fDiffToVecSphGeo(&atToEyeDir, at, eye); OLib_Vec3fDiffToVecSphGeo(&atToEyeNextDir, at, eyeNext); - manualCamera = false; - switch (camera->animState) { case 0: case 0xA: