From 824dedb0e86b8b83558f257437ed23ed2e176955 Mon Sep 17 00:00:00 2001 From: Riku Salminen Date: Mon, 9 Nov 2020 18:55:00 -0500 Subject: [PATCH 1/9] Make the replay camera follow the player --- src/p_tick.c | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/src/p_tick.c b/src/p_tick.c index f84ae96c0..4fd08f987 100644 --- a/src/p_tick.c +++ b/src/p_tick.c @@ -639,7 +639,12 @@ void P_Ticker(boolean run) if (demorecording) G_WriteDemoTiccmd(&players[consoleplayer].cmd, 0); if (demoplayback) + { G_ReadDemoTiccmd(&players[consoleplayer].cmd, 0); + P_SetPlayerAngle(&players[consoleplayer], players[consoleplayer].mo->angle); + P_ForceLocalAngle(&players[consoleplayer], players[consoleplayer].mo->angle); + localaiming = players[consoleplayer].aiming; + } LUAh_PreThinkFrame(); From 7c79f702340662c6d8f370b9ef709181c690f49b Mon Sep 17 00:00:00 2001 From: Riku Salminen Date: Tue, 10 Nov 2020 04:17:25 -0500 Subject: [PATCH 2/9] Update p_tick.c, got rid of an useless angle change function --- src/p_tick.c | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/src/p_tick.c b/src/p_tick.c index 4fd08f987..b49b27cc8 100644 --- a/src/p_tick.c +++ b/src/p_tick.c @@ -640,10 +640,10 @@ void P_Ticker(boolean run) G_WriteDemoTiccmd(&players[consoleplayer].cmd, 0); if (demoplayback) { - G_ReadDemoTiccmd(&players[consoleplayer].cmd, 0); - P_SetPlayerAngle(&players[consoleplayer], players[consoleplayer].mo->angle); - P_ForceLocalAngle(&players[consoleplayer], players[consoleplayer].mo->angle); - localaiming = players[consoleplayer].aiming; + player_t* p = &players[consoleplayer]; + G_ReadDemoTiccmd(&p->cmd, 0); + P_ForceLocalAngle(p, p->mo->angle); + localaiming = p->aiming; } LUAh_PreThinkFrame(); From 241453056b41837c4918a81f06a9f35894f670ce Mon Sep 17 00:00:00 2001 From: Riku Salminen Date: Tue, 10 Nov 2020 04:31:26 -0500 Subject: [PATCH 3/9] Update p_tick.c, Replacing mobj angle with cmd angleturn --- src/p_tick.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/p_tick.c b/src/p_tick.c index b49b27cc8..15ec57054 100644 --- a/src/p_tick.c +++ b/src/p_tick.c @@ -642,7 +642,7 @@ void P_Ticker(boolean run) { player_t* p = &players[consoleplayer]; G_ReadDemoTiccmd(&p->cmd, 0); - P_ForceLocalAngle(p, p->mo->angle); + P_ForceLocalAngle(p, p->cmd.angleturn << 16); localaiming = p->aiming; } From 7eeb75260be9d3a5b068ec377e186d22498f4de9 Mon Sep 17 00:00:00 2001 From: Riku Salminen <38985578+Riku-S@users.noreply.github.com> Date: Tue, 10 Nov 2020 13:06:47 +0200 Subject: [PATCH 4/9] Try to add cvars for old camera --- src/d_netcmd.c | 2 ++ src/p_tick.c | 8 ++++++-- src/p_tick.h | 1 + 3 files changed, 9 insertions(+), 2 deletions(-) diff --git a/src/d_netcmd.c b/src/d_netcmd.c index 68b8ecfc1..ac1c0da1e 100644 --- a/src/d_netcmd.c +++ b/src/d_netcmd.c @@ -884,6 +884,8 @@ void D_RegisterClientCommands(void) // CV_RegisterVar(&cv_grid); // CV_RegisterVar(&cv_snapto); + CV_RegisterVar(&cv_freedemocamera); + // add cheat commands COM_AddCommand("noclip", Command_CheatNoClip_f); COM_AddCommand("god", Command_CheatGod_f); diff --git a/src/p_tick.c b/src/p_tick.c index 15ec57054..05ffefa7a 100644 --- a/src/p_tick.c +++ b/src/p_tick.c @@ -37,6 +37,7 @@ tic_t leveltime; // The entries will behave like both the head and tail of the lists. thinker_t thlist[NUM_THINKERLISTS]; +consvar_t cv_freedemocamera = {"freedemocamera", "Off", CV_SAVE, CV_OnOff, NULL, 0, NULL, NULL, 0, 0, NULL}; void Command_Numthinkers_f(void) { @@ -642,8 +643,11 @@ void P_Ticker(boolean run) { player_t* p = &players[consoleplayer]; G_ReadDemoTiccmd(&p->cmd, 0); - P_ForceLocalAngle(p, p->cmd.angleturn << 16); - localaiming = p->aiming; + if (!cv_freedemocamera.value) + { + P_ForceLocalAngle(p, p->cmd.angleturn << 16); + localaiming = p->aiming; + } } LUAh_PreThinkFrame(); diff --git a/src/p_tick.h b/src/p_tick.h index 1fb88f3f2..3b04a427a 100644 --- a/src/p_tick.h +++ b/src/p_tick.h @@ -19,6 +19,7 @@ #endif extern tic_t leveltime; +extern consvar_t cv_freedemocamera; // Called by G_Ticker. Carries out all thinking of enemies and players. void Command_Numthinkers_f(void); From 2832586274b0d285200faa4cb0c752c7b0232380 Mon Sep 17 00:00:00 2001 From: Riku Salminen Date: Mon, 9 Nov 2020 18:55:00 -0500 Subject: [PATCH 5/9] Make the replay camera follow the player --- src/p_tick.c | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/src/p_tick.c b/src/p_tick.c index 451e5e626..a2ea2ff0f 100644 --- a/src/p_tick.c +++ b/src/p_tick.c @@ -643,7 +643,12 @@ void P_Ticker(boolean run) if (demorecording) G_WriteDemoTiccmd(&players[consoleplayer].cmd, 0); if (demoplayback) + { G_ReadDemoTiccmd(&players[consoleplayer].cmd, 0); + P_SetPlayerAngle(&players[consoleplayer], players[consoleplayer].mo->angle); + P_ForceLocalAngle(&players[consoleplayer], players[consoleplayer].mo->angle); + localaiming = players[consoleplayer].aiming; + } ps_lua_mobjhooks = 0; ps_checkposition_calls = 0; From aea35171c2bf00b31190e299d68fe034c7f77d6c Mon Sep 17 00:00:00 2001 From: Riku Salminen Date: Tue, 10 Nov 2020 04:17:25 -0500 Subject: [PATCH 6/9] Update p_tick.c, got rid of an useless angle change function --- src/p_tick.c | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/src/p_tick.c b/src/p_tick.c index a2ea2ff0f..c03884eeb 100644 --- a/src/p_tick.c +++ b/src/p_tick.c @@ -644,10 +644,10 @@ void P_Ticker(boolean run) G_WriteDemoTiccmd(&players[consoleplayer].cmd, 0); if (demoplayback) { - G_ReadDemoTiccmd(&players[consoleplayer].cmd, 0); - P_SetPlayerAngle(&players[consoleplayer], players[consoleplayer].mo->angle); - P_ForceLocalAngle(&players[consoleplayer], players[consoleplayer].mo->angle); - localaiming = players[consoleplayer].aiming; + player_t* p = &players[consoleplayer]; + G_ReadDemoTiccmd(&p->cmd, 0); + P_ForceLocalAngle(p, p->mo->angle); + localaiming = p->aiming; } ps_lua_mobjhooks = 0; From 33725a58b43add93068d8bd3e9fe22897c6eaac2 Mon Sep 17 00:00:00 2001 From: Riku Salminen Date: Tue, 10 Nov 2020 04:31:26 -0500 Subject: [PATCH 7/9] Update p_tick.c, Replacing mobj angle with cmd angleturn --- src/p_tick.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/p_tick.c b/src/p_tick.c index c03884eeb..90f410f9d 100644 --- a/src/p_tick.c +++ b/src/p_tick.c @@ -646,7 +646,7 @@ void P_Ticker(boolean run) { player_t* p = &players[consoleplayer]; G_ReadDemoTiccmd(&p->cmd, 0); - P_ForceLocalAngle(p, p->mo->angle); + P_ForceLocalAngle(p, p->cmd.angleturn << 16); localaiming = p->aiming; } From 3dff612f3c2901bb0e5c4bc833cff3fb8851e919 Mon Sep 17 00:00:00 2001 From: Riku Salminen <38985578+Riku-S@users.noreply.github.com> Date: Tue, 10 Nov 2020 13:06:47 +0200 Subject: [PATCH 8/9] Try to add cvars for old camera --- src/d_netcmd.c | 2 ++ src/p_tick.c | 8 ++++++-- src/p_tick.h | 1 + 3 files changed, 9 insertions(+), 2 deletions(-) diff --git a/src/d_netcmd.c b/src/d_netcmd.c index 87abd596a..a113460f5 100644 --- a/src/d_netcmd.c +++ b/src/d_netcmd.c @@ -880,6 +880,8 @@ void D_RegisterClientCommands(void) // CV_RegisterVar(&cv_grid); // CV_RegisterVar(&cv_snapto); + CV_RegisterVar(&cv_freedemocamera); + // add cheat commands COM_AddCommand("noclip", Command_CheatNoClip_f); COM_AddCommand("god", Command_CheatGod_f); diff --git a/src/p_tick.c b/src/p_tick.c index 90f410f9d..24d5005e1 100644 --- a/src/p_tick.c +++ b/src/p_tick.c @@ -39,6 +39,7 @@ tic_t leveltime; // The entries will behave like both the head and tail of the lists. thinker_t thlist[NUM_THINKERLISTS]; +consvar_t cv_freedemocamera = {"freedemocamera", "Off", CV_SAVE, CV_OnOff, NULL, 0, NULL, NULL, 0, 0, NULL}; void Command_Numthinkers_f(void) { @@ -646,8 +647,11 @@ void P_Ticker(boolean run) { player_t* p = &players[consoleplayer]; G_ReadDemoTiccmd(&p->cmd, 0); - P_ForceLocalAngle(p, p->cmd.angleturn << 16); - localaiming = p->aiming; + if (!cv_freedemocamera.value) + { + P_ForceLocalAngle(p, p->cmd.angleturn << 16); + localaiming = p->aiming; + } } ps_lua_mobjhooks = 0; diff --git a/src/p_tick.h b/src/p_tick.h index 1fb88f3f2..3b04a427a 100644 --- a/src/p_tick.h +++ b/src/p_tick.h @@ -19,6 +19,7 @@ #endif extern tic_t leveltime; +extern consvar_t cv_freedemocamera; // Called by G_Ticker. Carries out all thinking of enemies and players. void Command_Numthinkers_f(void); From 91a34575a7df1a3e5ee02dd87ca758483e009591 Mon Sep 17 00:00:00 2001 From: Riku Salminen <38985578+Riku-S@users.noreply.github.com> Date: Tue, 10 Nov 2020 13:53:31 +0200 Subject: [PATCH 9/9] Declared the cvar in netcmd to get rid of warnings --- src/d_netcmd.c | 1 + src/d_netcmd.h | 2 ++ src/p_tick.c | 1 - src/p_tick.h | 1 - 4 files changed, 3 insertions(+), 2 deletions(-) diff --git a/src/d_netcmd.c b/src/d_netcmd.c index a113460f5..6f4675e4a 100644 --- a/src/d_netcmd.c +++ b/src/d_netcmd.c @@ -374,6 +374,7 @@ consvar_t cv_sleep = CVAR_INIT ("cpusleep", "1", CV_SAVE, sleeping_cons_t, NULL) static CV_PossibleValue_t perfstats_cons_t[] = { {0, "Off"}, {1, "Rendering"}, {2, "Logic"}, {3, "ThinkFrame"}, {0, NULL}}; consvar_t cv_perfstats = CVAR_INIT ("perfstats", "Off", 0, perfstats_cons_t, NULL); +consvar_t cv_freedemocamera = CVAR_INIT("freedemocamera", "Off", CV_SAVE, CV_OnOff, NULL); char timedemo_name[256]; boolean timedemo_csv; diff --git a/src/d_netcmd.h b/src/d_netcmd.h index 841f71acd..7ecdd4e12 100644 --- a/src/d_netcmd.h +++ b/src/d_netcmd.h @@ -121,6 +121,8 @@ extern boolean timedemo_csv; extern char timedemo_csv_id[256]; extern boolean timedemo_quit; +extern consvar_t cv_freedemocamera; + typedef enum { XD_NAMEANDCOLOR = 1, diff --git a/src/p_tick.c b/src/p_tick.c index 24d5005e1..da2a980c4 100644 --- a/src/p_tick.c +++ b/src/p_tick.c @@ -39,7 +39,6 @@ tic_t leveltime; // The entries will behave like both the head and tail of the lists. thinker_t thlist[NUM_THINKERLISTS]; -consvar_t cv_freedemocamera = {"freedemocamera", "Off", CV_SAVE, CV_OnOff, NULL, 0, NULL, NULL, 0, 0, NULL}; void Command_Numthinkers_f(void) { diff --git a/src/p_tick.h b/src/p_tick.h index 3b04a427a..1fb88f3f2 100644 --- a/src/p_tick.h +++ b/src/p_tick.h @@ -19,7 +19,6 @@ #endif extern tic_t leveltime; -extern consvar_t cv_freedemocamera; // Called by G_Ticker. Carries out all thinking of enemies and players. void Command_Numthinkers_f(void);