From 9630e0161655ee044e34e17d215a0e1114c4b7c7 Mon Sep 17 00:00:00 2001 From: TehRealSalt Date: Sun, 28 Oct 2018 17:31:59 -0400 Subject: [PATCH] Camera crash fixes UNRELATED, but they made this branch a pain in the ass to test so I needed to fix this here :V --- src/g_game.c | 2 ++ src/p_mobj.c | 5 +++++ src/p_user.c | 4 ++++ 3 files changed, 11 insertions(+) diff --git a/src/g_game.c b/src/g_game.c index baf89d06..c795c1d6 100644 --- a/src/g_game.c +++ b/src/g_game.c @@ -4033,6 +4033,7 @@ static void M_ForceLoadGameResponse(INT32 ch) displayplayer = consoleplayer; multiplayer = false; splitscreen = 0; + SplitScreen_OnChange(); // not needed? if (setsizeneeded) R_ExecuteSetViewSize(); @@ -4122,6 +4123,7 @@ void G_LoadGame(UINT32 slot, INT16 mapoverride) displayplayer = consoleplayer; multiplayer = false; splitscreen = 0; + SplitScreen_OnChange(); // not needed? // G_DeferedInitNew(sk_medium, G_BuildMapName(1), 0, 0, 1); if (setsizeneeded) diff --git a/src/p_mobj.c b/src/p_mobj.c index 5de7e246..959aa741 100644 --- a/src/p_mobj.c +++ b/src/p_mobj.c @@ -3654,6 +3654,11 @@ boolean P_CameraThinker(player_t *player, camera_t *thiscam, boolean resetcalled { boolean itsatwodlevel = false; postimg_t postimg = postimg_none; + + // This can happen when joining + if (thiscam->subsector == NULL || thiscam->subsector->sector == NULL) + return true; + if (twodlevel || (thiscam == &camera && players[displayplayer].mo && (players[displayplayer].mo->flags2 & MF2_TWOD)) || (thiscam == &camera2 && players[secondarydisplayplayer].mo && (players[secondarydisplayplayer].mo->flags2 & MF2_TWOD)) diff --git a/src/p_user.c b/src/p_user.c index 0f89f826..0a933c94 100644 --- a/src/p_user.c +++ b/src/p_user.c @@ -8083,6 +8083,10 @@ boolean P_MoveChaseCamera(player_t *player, camera_t *thiscam, boolean resetcall if (!player || !player->mo) return true; + // This can happen when joining + if (thiscam->subsector == NULL || thiscam->subsector->sector == NULL) + return true; + mo = player->mo; #ifndef NOCLIPCAM