Refactor R_SetupFrame/R_SkyboxFrame to use splitscreen number directly

This commit is contained in:
James R 2022-01-17 18:53:01 -08:00
parent 025832aaa4
commit 8e0f02d65a
3 changed files with 18 additions and 50 deletions

View file

@ -6042,7 +6042,7 @@ void HWR_RenderSkyboxView(player_t *player)
} }
// note: sets viewangle, viewx, viewy, viewz // note: sets viewangle, viewx, viewy, viewz
R_SkyboxFrame(player); R_SkyboxFrame(viewssnum);
// copy view cam position for local use // copy view cam position for local use
dup_viewx = viewx; dup_viewx = viewx;
@ -6253,7 +6253,7 @@ void HWR_RenderPlayerView(void)
} }
// note: sets viewangle, viewx, viewy, viewz // note: sets viewangle, viewx, viewy, viewz
R_SetupFrame(player); R_SetupFrame(viewssnum);
framecount++; // timedemo framecount++; // timedemo
// copy view cam position for local use // copy view cam position for local use

View file

@ -1199,30 +1199,13 @@ subsector_t *R_PointInSubsectorOrNull(fixed_t x, fixed_t y)
// R_SetupFrame // R_SetupFrame
// //
void R_SetupFrame(player_t *player) void R_SetupFrame(int s)
{ {
camera_t *thiscam = &camera[0]; player_t *player = &players[displayplayers[s]];
boolean chasecam = (cv_chasecam[0].value != 0); camera_t *thiscam = &camera[s];
UINT8 i = 0; boolean chasecam = (cv_chasecam[s].value != 0);
for (i = 0; i <= r_splitscreen; i++) R_SetViewContext(VIEWCONTEXT_PLAYER1 + s);
{
if (player == &players[displayplayers[i]])
{
thiscam = &camera[i];
chasecam = (cv_chasecam[i].value != 0);
R_SetViewContext(VIEWCONTEXT_PLAYER1 + i);
break;
}
}
if (i > r_splitscreen)
{
i = 0; // Shouldn't be possible, but just in case.
thiscam = &camera[0];
chasecam = (cv_chasecam[0].value != 0);
R_SetViewContext(VIEWCONTEXT_PLAYER1);
}
if (player->spectator) // no spectator chasecam if (player->spectator) // no spectator chasecam
chasecam = false; // force chasecam off chasecam = false; // force chasecam off
@ -1267,8 +1250,8 @@ void R_SetupFrame(player_t *player)
if (!demo.playback && player->playerstate != PST_DEAD) if (!demo.playback && player->playerstate != PST_DEAD)
{ {
newview->angle = localangle[i]; // WARNING: camera uses this newview->angle = localangle[s]; // WARNING: camera uses this
newview->aim = localaiming[i]; newview->aim = localaiming[s];
} }
} }
newview->roll = R_ViewRollAngle(player); newview->roll = R_ViewRollAngle(player);
@ -1307,27 +1290,12 @@ void R_SetupFrame(player_t *player)
R_InterpolateView(rendertimefrac); R_InterpolateView(rendertimefrac);
} }
void R_SkyboxFrame(player_t *player) void R_SkyboxFrame(int s)
{ {
camera_t *thiscam = &camera[0]; player_t *player = &players[displayplayers[s]];
UINT8 i = 0; camera_t *thiscam = &camera[s];
for (i = 0; i <= r_splitscreen; i++) R_SetViewContext(VIEWCONTEXT_SKY1 + s);
{
if (player == &players[displayplayers[i]])
{
thiscam = &camera[i];
R_SetViewContext(VIEWCONTEXT_SKY1 + i);
break;
}
}
if (i > r_splitscreen)
{
i = 0; // Shouldn't be possible, but just in case.
thiscam = &camera[0];
R_SetViewContext(VIEWCONTEXT_SKY1);
}
// cut-away view stuff // cut-away view stuff
newview->sky = true; newview->sky = true;
@ -1355,8 +1323,8 @@ void R_SkyboxFrame(player_t *player)
newview->angle = player->mo->angle; newview->angle = player->mo->angle;
if (/*!demo.playback && */player->playerstate != PST_DEAD) if (/*!demo.playback && */player->playerstate != PST_DEAD)
{ {
newview->angle = localangle[i]; newview->angle = localangle[s];
newview->aim = localaiming[i]; newview->aim = localaiming[s];
} }
} }
newview->angle += r_viewmobj->angle; newview->angle += r_viewmobj->angle;
@ -1561,7 +1529,7 @@ void R_RenderPlayerView(void)
V_DrawFill(viewwidth, viewheight, viewwidth, viewheight, 31|V_NOSCALESTART); V_DrawFill(viewwidth, viewheight, viewwidth, viewheight, 31|V_NOSCALESTART);
} }
R_SetupFrame(player); R_SetupFrame(viewssnum);
framecount++; framecount++;
validcount++; validcount++;

View file

@ -134,8 +134,8 @@ void R_SetViewSize(void);
// do it (sometimes explicitly called) // do it (sometimes explicitly called)
void R_ExecuteSetViewSize(void); void R_ExecuteSetViewSize(void);
void R_SetupFrame(player_t *player); void R_SetupFrame(int split);
void R_SkyboxFrame(player_t *player); void R_SkyboxFrame(int split);
boolean R_ViewpointHasChasecam(player_t *player); boolean R_ViewpointHasChasecam(player_t *player);
boolean R_IsViewpointThirdPerson(player_t *player, boolean skybox); boolean R_IsViewpointThirdPerson(player_t *player, boolean skybox);