diff --git a/include/z64camera.h b/include/z64camera.h index 54cf748ac..7232b3da2 100644 --- a/include/z64camera.h +++ b/include/z64camera.h @@ -2,6 +2,7 @@ #define Z64CAMERA_H #include "ultra64.h" +#include "z64math.h" #include "z64save.h" // these two angle conversion macros are slightly inaccurate @@ -1189,8 +1190,7 @@ typedef struct { /* 0x00 */ Vec3f unk_00; /* 0x0C */ Vec3f unk_0C; /* 0x18 */ f32 unk_18; - /* 0x1C */ Vec3f unk_1C; - /* 0x28 */ Vec3f unk_28; + /* 0x1C */ Linef unk_1C; /* 0x34 */ Vec3s unk_34; /* 0x3A */ s16 unk_3A; /* 0x3C */ s16 timer; diff --git a/src/code/z_camera.c b/src/code/z_camera.c index ea600b30e..c0bb26430 100644 --- a/src/code/z_camera.c +++ b/src/code/z_camera.c @@ -1255,7 +1255,7 @@ s32 func_800CD44C(Camera* camera, VecGeo* diffGeo, CameraCollision* camEyeCollis // different bgIds for at->eye[Next] and eye[Next]->at ret = 3; } else { - cosEyeAt = Math3D_Parallel(&camEyeCollision->norm, &camAtCollision->norm); + cosEyeAt = Math3D_Cos(&camEyeCollision->norm, &camAtCollision->norm); if (cosEyeAt < -0.5f) { ret = 6; } else if ((cosEyeAt > 0.5f) || (checkEye & 2)) { @@ -1860,7 +1860,7 @@ void Camera_CalcDefaultSwing(Camera* camera, VecGeo* arg1, VecGeo* arg2, f32 arg } else if (swing->atEyeColChk.norm.y > 0.50f) { swing->unk_64 = 0; } else { - Math3D_AngleBetweenVectors(&camera->unk_0F0, &swing->eyeAtColChk.norm, &sp88); + Math3D_CosOut(&camera->unk_0F0, &swing->eyeAtColChk.norm, &sp88); if (sp88 > 0.0f) { swing->unk_64 = 0; } @@ -5565,8 +5565,8 @@ s32 Camera_Unique0(Camera* camera) { switch (camera->animState) { case 0: bgCamFuncData = (BgCamFuncData*)Camera_GetBgCamOrActorCsCamFuncData(camera, camera->bgCamIndex); - Camera_Vec3sToVec3f(&rwData->unk_1C, &bgCamFuncData->pos); - camera->eye = camera->eyeNext = rwData->unk_1C; + Camera_Vec3sToVec3f(&rwData->unk_1C.a, &bgCamFuncData->pos); + camera->eye = camera->eyeNext = rwData->unk_1C.a; rwData->unk_34 = bgCamFuncData->rot; temp_v1 = bgCamFuncData->fov; @@ -5597,7 +5597,7 @@ s32 Camera_Unique0(Camera* camera) { } rwData->unk_3A = camera->focalActor->world.rot.y; rwData->unk_3E = 0; - camera->eye = camera->eyeNext = rwData->unk_1C; + camera->eye = camera->eyeNext = rwData->unk_1C.a; Camera_UnsetStateFlag(camera, CAM_STATE_2); camera->animState++; // fallthrough @@ -5605,8 +5605,8 @@ s32 Camera_Unique0(Camera* camera) { sp84.r = OLib_Vec3fDist(&sp8C, &camera->eye); sp84.yaw = rwData->unk_34.y; sp84.pitch = -rwData->unk_34.x; - OLib_VecGeoToVec3f(&rwData->unk_28, &sp84); - func_80179A44(&rwData->unk_1C, focalActorPosRot, &rwData->unk_0C); + OLib_VecGeoToVec3f(&rwData->unk_1C.b, &sp84); + Math3D_LineClosestToPoint(&rwData->unk_1C, &focalActorPosRot->pos, &rwData->unk_0C); camera->at = rwData->unk_0C; if (player->stateFlags1 & PLAYER_STATE1_20000000) {