Fix crash, only translate cam space when its valid

This commit is contained in:
MysterD 2022-05-29 15:34:28 -07:00
parent b52fe0eaeb
commit 5310b0d496

View file

@ -279,8 +279,11 @@ void patch_mtx_interpolated(f32 delta) {
// calculate outside of for loop to reduce overhead // calculate outside of for loop to reduce overhead
// technically this is improper use of mtxf functions, but coop doesn't target N64 // technically this is improper use of mtxf functions, but coop doesn't target N64
mtxf_inverse(camTranfInv.m, *sCameraNode->matrixPtr); bool translateCamSpace = (sCameraNode->matrixPtr != NULL) && (sCameraNode->matrixPtrPrev != NULL);
mtxf_inverse(prevCamTranfInv.m, *sCameraNode->matrixPtrPrev); if (translateCamSpace) {
mtxf_inverse(camTranfInv.m, *sCameraNode->matrixPtr);
mtxf_inverse(prevCamTranfInv.m, *sCameraNode->matrixPtrPrev);
}
for (s32 i = 0; i < gMtxTblSize; i++) { for (s32 i = 0; i < gMtxTblSize; i++) {
Mtx bufMtx, bufMtxPrev; Mtx bufMtx, bufMtxPrev;
@ -290,7 +293,7 @@ void patch_mtx_interpolated(f32 delta) {
Gfx *pos = gMtxTbl[i].pos; Gfx *pos = gMtxTbl[i].pos;
if (gMtxTbl[i].usingCamSpace) { if (gMtxTbl[i].usingCamSpace && translateCamSpace) {
// transform out of camera space so the matrix can interp in world space // transform out of camera space so the matrix can interp in world space
mtxf_mul(bufMtx.m, bufMtx.m, camTranfInv.m); mtxf_mul(bufMtx.m, bufMtx.m, camTranfInv.m);
mtxf_mul(bufMtxPrev.m, bufMtxPrev.m, prevCamTranfInv.m); mtxf_mul(bufMtxPrev.m, bufMtxPrev.m, prevCamTranfInv.m);