From 379dbaa92c9694f73fc33a8d58fb07fdc3b32c12 Mon Sep 17 00:00:00 2001 From: toaster Date: Sun, 23 Sep 2018 19:55:46 +0100 Subject: [PATCH 1/2] Here's my progress on making demoplayback camera less shit. I know what probably needs to be done to make it thorough is to replace all the consoleplayer stuff with displayplayer stuff in demoplayback, but don't feel like doing that right now. --- src/p_user.c | 5 ++--- src/r_main.c | 4 ++-- 2 files changed, 4 insertions(+), 5 deletions(-) diff --git a/src/p_user.c b/src/p_user.c index d3407bd65..a59986e76 100644 --- a/src/p_user.c +++ b/src/p_user.c @@ -8349,6 +8349,8 @@ boolean P_MoveChaseCamera(player_t *player, camera_t *thiscam, boolean resetcall angle = thiscam->angle; else if (leveltime < starttime) angle = focusangle + FixedAngle(camrotate*FRACUNIT); + else if (demoplayback) + angle = players[consoleplayer].cmd.angleturn<<16; else { angle_t input = focusangle + FixedAngle(camrotate<angle; @@ -8361,9 +8363,6 @@ boolean P_MoveChaseCamera(player_t *player, camera_t *thiscam, boolean resetcall input = InvAngle(input); angle = thiscam->angle + input; - - if (demoplayback && player == &players[consoleplayer]) - localangle = angle; } if (!resetcalled && (leveltime > starttime) diff --git a/src/r_main.c b/src/r_main.c index 5990224c2..4cf2d8798 100644 --- a/src/r_main.c +++ b/src/r_main.c @@ -857,7 +857,7 @@ void R_SkyboxFrame(player_t *player) { aimingangle = player->aiming; viewangle = player->mo->angle; - if (!demoplayback && player->playerstate != PST_DEAD) + if (/*!demoplayback && */player->playerstate != PST_DEAD) { if (player == &players[consoleplayer]) { @@ -1136,7 +1136,7 @@ void R_SetupFrame(player_t *player, boolean skybox) aimingangle = player->aiming; viewangle = viewmobj->angle; - if (!demoplayback && player->playerstate != PST_DEAD) + if (/*!demoplayback && */player->playerstate != PST_DEAD) { if (player == &players[consoleplayer]) { From 2121bbae84ce22a2808e1883555c0ae196089953 Mon Sep 17 00:00:00 2001 From: TehRealSalt Date: Wed, 17 Oct 2018 19:10:23 -0400 Subject: [PATCH 2/2] No more vanilla democam, for real --- src/g_game.c | 7 +++++++ src/g_game.h | 1 - src/p_user.c | 4 +--- 3 files changed, 8 insertions(+), 4 deletions(-) diff --git a/src/g_game.c b/src/g_game.c index ee1ee053a..4cf7be6cd 100644 --- a/src/g_game.c +++ b/src/g_game.c @@ -4496,6 +4496,13 @@ void G_ReadDemoTiccmd(ticcmd_t *cmd, INT32 playernum) G_CopyTiccmd(cmd, &oldcmd, 1); + // SRB2kart: Copy-pasted from ticcmd building, removes that crappy demo cam + if (((players[displayplayer].mo && players[displayplayer].speed > 0) // Moving + || (leveltime > starttime && (cmd->buttons & BT_ACCELERATE && cmd->buttons & BT_BRAKE)) // Rubber-burn turn + || (players[displayplayer].spectator || objectplacing)) // Not a physical player + && !(players[displayplayer].kartstuff[k_spinouttimer] && players[displayplayer].kartstuff[k_sneakertimer])) // Spinning and boosting cancels out spinout + localangle += (cmd->angleturn<<16); + if (!(demoflags & DF_GHOST) && *demo_p == DEMOMARKER) { // end of demo data stream diff --git a/src/g_game.h b/src/g_game.h index e34a69860..4dab9a764 100644 --- a/src/g_game.h +++ b/src/g_game.h @@ -188,7 +188,6 @@ void G_StopMetalDemo(void); ATTRNORETURN void FUNCNORETURN G_StopMetalRecording(void); void G_StopDemo(void); boolean G_CheckDemoStatus(void); -char *G_DemoPlayerName(char *defdemoname); boolean G_IsSpecialStage(INT32 mapnum); boolean G_GametypeUsesLives(void); diff --git a/src/p_user.c b/src/p_user.c index a09d35e14..86f89d45a 100644 --- a/src/p_user.c +++ b/src/p_user.c @@ -8215,7 +8215,7 @@ boolean P_MoveChaseCamera(player_t *player, camera_t *thiscam, boolean resetcall // if (leveltime > 0 && timeinmap <= 0) // return true; - if (player->pflags & PF_NIGHTSMODE) + if (demoplayback) { focusangle = mo->angle; focusaiming = 0; @@ -8310,8 +8310,6 @@ boolean P_MoveChaseCamera(player_t *player, camera_t *thiscam, boolean resetcall angle = thiscam->angle; else if (leveltime < starttime) angle = focusangle + FixedAngle(camrotate*FRACUNIT); - else if (demoplayback) - angle = players[consoleplayer].cmd.angleturn<<16; else { angle_t input = focusangle + FixedAngle(camrotate<angle;