mirror of
https://github.com/coop-deluxe/sm64coopdx.git
synced 2024-11-22 03:55:11 +00:00
Fix crash, only translate cam space when its valid
This commit is contained in:
parent
b52fe0eaeb
commit
5310b0d496
1 changed files with 6 additions and 3 deletions
|
@ -279,8 +279,11 @@ void patch_mtx_interpolated(f32 delta) {
|
|||
|
||||
// calculate outside of for loop to reduce overhead
|
||||
// technically this is improper use of mtxf functions, but coop doesn't target N64
|
||||
mtxf_inverse(camTranfInv.m, *sCameraNode->matrixPtr);
|
||||
mtxf_inverse(prevCamTranfInv.m, *sCameraNode->matrixPtrPrev);
|
||||
bool translateCamSpace = (sCameraNode->matrixPtr != NULL) && (sCameraNode->matrixPtrPrev != NULL);
|
||||
if (translateCamSpace) {
|
||||
mtxf_inverse(camTranfInv.m, *sCameraNode->matrixPtr);
|
||||
mtxf_inverse(prevCamTranfInv.m, *sCameraNode->matrixPtrPrev);
|
||||
}
|
||||
|
||||
for (s32 i = 0; i < gMtxTblSize; i++) {
|
||||
Mtx bufMtx, bufMtxPrev;
|
||||
|
@ -290,7 +293,7 @@ void patch_mtx_interpolated(f32 delta) {
|
|||
|
||||
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
|
||||
mtxf_mul(bufMtx.m, bufMtx.m, camTranfInv.m);
|
||||
mtxf_mul(bufMtxPrev.m, bufMtxPrev.m, prevCamTranfInv.m);
|
||||
|
|
Loading…
Reference in a new issue