From 414d6f3647ce905ff61ead9c7142b149f107f8cc Mon Sep 17 00:00:00 2001 From: James R Date: Thu, 17 Aug 2023 17:38:24 -0700 Subject: [PATCH] Don't reset camera position when spectating Fixes a software renderer crash due to hitlag VFX from the player's death (death from spectating) being too close to the camera. --- src/p_mobj.c | 11 +++++++---- src/p_setup.c | 2 ++ 2 files changed, 9 insertions(+), 4 deletions(-) diff --git a/src/p_mobj.c b/src/p_mobj.c index e3abdee26..ab0d25e5e 100644 --- a/src/p_mobj.c +++ b/src/p_mobj.c @@ -12014,12 +12014,15 @@ void P_AfterPlayerSpawn(INT32 playernum) p->drawangle = mobj->angle; - for (i = 0; i <= r_splitscreen; i++) + if (p->spectator == false) { - if (camera[i].chase) + for (i = 0; i <= r_splitscreen; i++) { - if (displayplayers[i] == playernum) - P_ResetCamera(p, &camera[i]); + if (camera[i].chase) + { + if (displayplayers[i] == playernum) + P_ResetCamera(p, &camera[i]); + } } } diff --git a/src/p_setup.c b/src/p_setup.c index 3f9bfcd2e..48caf293a 100644 --- a/src/p_setup.c +++ b/src/p_setup.c @@ -7735,6 +7735,8 @@ static void P_SetupCamera(UINT8 pnum, camera_t *cam) cam->subsector = R_PointInSubsector(cam->x, cam->y); // make sure camera has a subsector set -- Monster Iestyn (12/11/18) } } + + cam->chase = false; // tell camera to reset its position next tic } static void P_InitCamera(void)