mirror of
https://github.com/KartKrewDev/RingRacers.git
synced 2025-10-30 08:01:28 +00:00
Merge branch 'light-setup-frame-refactor' into 'master'
A lightweight refactor to R_SetupFrame and R_SkyboxFrame See merge request KartKrew/Kart!532
This commit is contained in:
commit
2fdcd9bc2d
3 changed files with 75 additions and 119 deletions
|
|
@ -6048,7 +6048,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;
|
||||||
|
|
@ -6259,7 +6259,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
|
||||||
|
|
|
||||||
186
src/r_main.c
186
src/r_main.c
|
|
@ -1199,30 +1199,61 @@ subsector_t *R_PointInSubsectorOrNull(fixed_t x, fixed_t y)
|
||||||
// R_SetupFrame
|
// R_SetupFrame
|
||||||
//
|
//
|
||||||
|
|
||||||
void R_SetupFrame(player_t *player)
|
static void
|
||||||
|
R_SetupCommonFrame
|
||||||
|
( player_t * player,
|
||||||
|
subsector_t * subsector)
|
||||||
{
|
{
|
||||||
camera_t *thiscam = &camera[0];
|
newview->player = player;
|
||||||
boolean chasecam = (cv_chasecam[0].value != 0);
|
|
||||||
UINT8 i = 0;
|
|
||||||
|
|
||||||
for (i = 0; i <= r_splitscreen; i++)
|
newview->x += quake.x;
|
||||||
{
|
newview->y += quake.y;
|
||||||
if (player == &players[displayplayers[i]])
|
newview->z += quake.z;
|
||||||
{
|
|
||||||
thiscam = &camera[i];
|
|
||||||
chasecam = (cv_chasecam[i].value != 0);
|
|
||||||
R_SetViewContext(VIEWCONTEXT_PLAYER1 + i);
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
if (i > r_splitscreen)
|
newview->roll = R_ViewRollAngle(player);
|
||||||
|
|
||||||
|
if (subsector)
|
||||||
|
newview->sector = subsector->sector;
|
||||||
|
else
|
||||||
|
newview->sector = R_PointInSubsector(newview->x, newview->y)->sector;
|
||||||
|
|
||||||
|
R_InterpolateView(rendertimefrac);
|
||||||
|
}
|
||||||
|
|
||||||
|
static void R_SetupAimingFrame(int s)
|
||||||
|
{
|
||||||
|
player_t *player = &players[displayplayers[s]];
|
||||||
|
camera_t *thiscam = &camera[s];
|
||||||
|
|
||||||
|
if (player->awayviewtics)
|
||||||
{
|
{
|
||||||
i = 0; // Shouldn't be possible, but just in case.
|
newview->aim = player->awayviewaiming;
|
||||||
thiscam = &camera[0];
|
newview->angle = player->awayviewmobj->angle;
|
||||||
chasecam = (cv_chasecam[0].value != 0);
|
|
||||||
R_SetViewContext(VIEWCONTEXT_PLAYER1);
|
|
||||||
}
|
}
|
||||||
|
else if (thiscam && thiscam->chase)
|
||||||
|
{
|
||||||
|
newview->aim = thiscam->aiming;
|
||||||
|
newview->angle = thiscam->angle;
|
||||||
|
}
|
||||||
|
else if (!demo.playback && player->playerstate != PST_DEAD)
|
||||||
|
{
|
||||||
|
newview->aim = localaiming[s];
|
||||||
|
newview->angle = localangle[s];
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
newview->aim = player->aiming;
|
||||||
|
newview->angle = player->mo->angle;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
void R_SetupFrame(int s)
|
||||||
|
{
|
||||||
|
player_t *player = &players[displayplayers[s]];
|
||||||
|
camera_t *thiscam = &camera[s];
|
||||||
|
boolean chasecam = (cv_chasecam[s].value != 0);
|
||||||
|
|
||||||
|
R_SetViewContext(VIEWCONTEXT_PLAYER1 + s);
|
||||||
|
|
||||||
if (player->spectator) // no spectator chasecam
|
if (player->spectator) // no spectator chasecam
|
||||||
chasecam = false; // force chasecam off
|
chasecam = false; // force chasecam off
|
||||||
|
|
@ -1237,97 +1268,51 @@ void R_SetupFrame(player_t *player)
|
||||||
|
|
||||||
newview->sky = false;
|
newview->sky = false;
|
||||||
|
|
||||||
|
R_SetupAimingFrame(s);
|
||||||
|
|
||||||
if (player->awayviewtics)
|
if (player->awayviewtics)
|
||||||
{
|
{
|
||||||
// cut-away view stuff
|
// cut-away view stuff
|
||||||
r_viewmobj = player->awayviewmobj; // should be a MT_ALTVIEWMAN
|
r_viewmobj = player->awayviewmobj; // should be a MT_ALTVIEWMAN
|
||||||
I_Assert(r_viewmobj != NULL);
|
I_Assert(r_viewmobj != NULL);
|
||||||
|
|
||||||
|
newview->x = r_viewmobj->x;
|
||||||
|
newview->y = r_viewmobj->y;
|
||||||
newview->z = r_viewmobj->z + 20*FRACUNIT;
|
newview->z = r_viewmobj->z + 20*FRACUNIT;
|
||||||
newview->aim = player->awayviewaiming;
|
|
||||||
newview->angle = r_viewmobj->angle;
|
R_SetupCommonFrame(player, r_viewmobj->subsector);
|
||||||
}
|
}
|
||||||
else if (!player->spectator && chasecam)
|
else if (!player->spectator && chasecam)
|
||||||
// use outside cam view
|
// use outside cam view
|
||||||
{
|
{
|
||||||
r_viewmobj = NULL;
|
r_viewmobj = NULL;
|
||||||
|
|
||||||
|
newview->x = thiscam->x;
|
||||||
|
newview->y = thiscam->y;
|
||||||
newview->z = thiscam->z + (thiscam->height>>1);
|
newview->z = thiscam->z + (thiscam->height>>1);
|
||||||
newview->aim = thiscam->aiming;
|
|
||||||
newview->angle = thiscam->angle;
|
R_SetupCommonFrame(player, thiscam->subsector);
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
// use the player's eyes view
|
// use the player's eyes view
|
||||||
{
|
{
|
||||||
newview->z = player->viewz;
|
|
||||||
|
|
||||||
r_viewmobj = player->mo;
|
r_viewmobj = player->mo;
|
||||||
I_Assert(r_viewmobj != NULL);
|
I_Assert(r_viewmobj != NULL);
|
||||||
|
|
||||||
newview->aim = player->aiming;
|
|
||||||
newview->angle = r_viewmobj->angle;
|
|
||||||
|
|
||||||
if (!demo.playback && player->playerstate != PST_DEAD)
|
|
||||||
{
|
|
||||||
newview->angle = localangle[i]; // WARNING: camera uses this
|
|
||||||
newview->aim = localaiming[i];
|
|
||||||
}
|
|
||||||
}
|
|
||||||
newview->roll = R_ViewRollAngle(player);
|
|
||||||
newview->z += quake.z;
|
|
||||||
|
|
||||||
newview->player = player;
|
|
||||||
|
|
||||||
if (chasecam && !player->awayviewtics && !player->spectator)
|
|
||||||
{
|
|
||||||
newview->x = thiscam->x;
|
|
||||||
newview->y = thiscam->y;
|
|
||||||
newview->x += quake.x;
|
|
||||||
newview->y += quake.y;
|
|
||||||
|
|
||||||
if (thiscam->subsector)
|
|
||||||
newview->sector = thiscam->subsector->sector;
|
|
||||||
else
|
|
||||||
newview->sector = R_PointInSubsector(newview->x, newview->y)->sector;
|
|
||||||
}
|
|
||||||
else
|
|
||||||
{
|
|
||||||
newview->x = r_viewmobj->x;
|
newview->x = r_viewmobj->x;
|
||||||
newview->y = r_viewmobj->y;
|
newview->y = r_viewmobj->y;
|
||||||
newview->x += quake.x;
|
newview->z = player->viewz;
|
||||||
newview->y += quake.y;
|
|
||||||
|
|
||||||
if (r_viewmobj->subsector)
|
R_SetupCommonFrame(player, r_viewmobj->subsector);
|
||||||
newview->sector = r_viewmobj->subsector->sector;
|
|
||||||
else
|
|
||||||
newview->sector = R_PointInSubsector(newview->x, newview->y)->sector;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
// newview->sin = FINESINE(viewangle>>ANGLETOFINESHIFT);
|
|
||||||
// newview->cos = FINECOSINE(viewangle>>ANGLETOFINESHIFT);
|
|
||||||
|
|
||||||
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;
|
||||||
|
|
@ -1339,30 +1324,8 @@ void R_SkyboxFrame(player_t *player)
|
||||||
I_Error("R_SkyboxFrame: r_viewmobj null (player %s)", sizeu1(playeri));
|
I_Error("R_SkyboxFrame: r_viewmobj null (player %s)", sizeu1(playeri));
|
||||||
}
|
}
|
||||||
#endif
|
#endif
|
||||||
if (player->awayviewtics)
|
|
||||||
{
|
|
||||||
newview->aim = player->awayviewaiming;
|
|
||||||
newview->angle = player->awayviewmobj->angle;
|
|
||||||
}
|
|
||||||
else if (thiscam && thiscam->chase)
|
|
||||||
{
|
|
||||||
newview->aim = thiscam->aiming;
|
|
||||||
newview->angle = thiscam->angle;
|
|
||||||
}
|
|
||||||
else
|
|
||||||
{
|
|
||||||
newview->aim = player->aiming;
|
|
||||||
newview->angle = player->mo->angle;
|
|
||||||
if (/*!demo.playback && */player->playerstate != PST_DEAD)
|
|
||||||
{
|
|
||||||
newview->angle = localangle[i];
|
|
||||||
newview->aim = localaiming[i];
|
|
||||||
}
|
|
||||||
}
|
|
||||||
newview->angle += r_viewmobj->angle;
|
|
||||||
newview->roll = R_ViewRollAngle(player);
|
|
||||||
|
|
||||||
newview->player = player;
|
R_SetupAimingFrame(s);
|
||||||
|
|
||||||
newview->x = r_viewmobj->x;
|
newview->x = r_viewmobj->x;
|
||||||
newview->y = r_viewmobj->y;
|
newview->y = r_viewmobj->y;
|
||||||
|
|
@ -1440,15 +1403,8 @@ void R_SkyboxFrame(player_t *player)
|
||||||
newview->z += campos.z * -mh->skybox_scalez;
|
newview->z += campos.z * -mh->skybox_scalez;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (r_viewmobj->subsector)
|
|
||||||
newview->sector = r_viewmobj->subsector->sector;
|
|
||||||
else
|
|
||||||
newview->sector = R_PointInSubsector(newview->x, newview->y)->sector;
|
|
||||||
|
|
||||||
// newview->sin = FINESINE(viewangle>>ANGLETOFINESHIFT);
|
R_SetupCommonFrame(player, r_viewmobj->subsector);
|
||||||
// newview->cos = FINECOSINE(viewangle>>ANGLETOFINESHIFT);
|
|
||||||
|
|
||||||
R_InterpolateView(rendertimefrac);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
boolean R_ViewpointHasChasecam(player_t *player)
|
boolean R_ViewpointHasChasecam(player_t *player)
|
||||||
|
|
@ -1562,7 +1518,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++;
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -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);
|
||||||
|
|
|
||||||
Loading…
Add table
Reference in a new issue