mirror of
https://github.com/HarbourMasters/Shipwright
synced 2026-08-12 20:22:37 -04:00
Don't point free cam at sky coming out of crawlspace (#6920)
This commit is contained in:
@@ -1451,15 +1451,16 @@ s32 Camera_Free(Camera* camera) {
|
|||||||
Parallel1* para1 = (Parallel1*)camera->paramData;
|
Parallel1* para1 = (Parallel1*)camera->paramData;
|
||||||
f32 playerHeight;
|
f32 playerHeight;
|
||||||
|
|
||||||
// SOH [Enhancement] If free-look is resuming after a scene-forced/fixed camera drove the view
|
// SOH [Enhancement] If free-look resuming after another camera drove view (e.g. Spirit Temple alcove,
|
||||||
// (Camera_Free didn't run last frame while manualCamera stayed set, e.g. exiting a Spirit Temple
|
// or crawling), re-seed free-look angles so view continues from where it was left instead of snapping
|
||||||
// alcove), re-seed the free-look angles from the camera's current orientation so the view continues
|
// back to the pre-interruption angle. Seed from play->view (what was actually on screen last frame),
|
||||||
// from where it was left instead of snapping back to the pre-interruption angle.
|
// not camera->at/eye: for a subcamera-driven OnePoint cutscene like crawlspace exit, main camera's own
|
||||||
|
// eye is left stale and aims re-seed at sky, while play->view still holds cutscene's final framing of Link.
|
||||||
static s32 sFreeLastFrame = 0;
|
static s32 sFreeLastFrame = 0;
|
||||||
s32 curFrame = camera->play->state.frames;
|
s32 curFrame = camera->play->state.frames;
|
||||||
if (curFrame - sFreeLastFrame > 1) {
|
if (curFrame - sFreeLastFrame > 1) {
|
||||||
VecSph eyeAdjustment;
|
VecSph eyeAdjustment;
|
||||||
OLib_Vec3fDiffToVecSphGeo(&eyeAdjustment, &camera->at, &camera->eye);
|
OLib_Vec3fDiffToVecSphGeo(&eyeAdjustment, &camera->play->view.lookAt, &camera->play->view.eye);
|
||||||
camera->play->camX = eyeAdjustment.yaw;
|
camera->play->camX = eyeAdjustment.yaw;
|
||||||
camera->play->camY = eyeAdjustment.pitch;
|
camera->play->camY = eyeAdjustment.pitch;
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user