mirror of
https://github.com/KartKrewDev/RingRacers.git
synced 2026-04-27 04:21:47 +00:00
Move freecam state to camera_t, lets splitscreen players use freecam independently of each other
This commit is contained in:
parent
49898abfeb
commit
fa89576f34
15 changed files with 73 additions and 67 deletions
|
|
@ -1645,7 +1645,7 @@ static void Command_View_f(void)
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (demo.freecam)
|
if (camera[viewnum-1].freecam)
|
||||||
return;
|
return;
|
||||||
|
|
||||||
displayplayerp = &displayplayers[viewnum-1];
|
displayplayerp = &displayplayers[viewnum-1];
|
||||||
|
|
|
||||||
|
|
@ -86,6 +86,8 @@ class TiccmdBuilder
|
||||||
UINT8 forplayer() const { return ssplayer - 1; }
|
UINT8 forplayer() const { return ssplayer - 1; }
|
||||||
player_t* player() const { return &players[g_localplayers[forplayer()]]; }
|
player_t* player() const { return &players[g_localplayers[forplayer()]]; }
|
||||||
|
|
||||||
|
bool freecam() const { return camera[forplayer()].freecam; }
|
||||||
|
|
||||||
UINT8 swap_ssplayer() const
|
UINT8 swap_ssplayer() const
|
||||||
{
|
{
|
||||||
if (ssplayer == cv_1pswap.value)
|
if (ssplayer == cv_1pswap.value)
|
||||||
|
|
@ -239,13 +241,13 @@ class TiccmdBuilder
|
||||||
{
|
{
|
||||||
if (M_MenuButtonPressed(pid, MBT_C))
|
if (M_MenuButtonPressed(pid, MBT_C))
|
||||||
{
|
{
|
||||||
P_ToggleDemoCamera();
|
P_ToggleDemoCamera(forplayer());
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
bool director_input()
|
bool director_input()
|
||||||
{
|
{
|
||||||
if (demo.freecam || !K_DirectorIsAvailable(viewnum))
|
if (freecam() || !K_DirectorIsAvailable(viewnum))
|
||||||
{
|
{
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
@ -283,7 +285,7 @@ class TiccmdBuilder
|
||||||
|
|
||||||
bool spectator_analog_input()
|
bool spectator_analog_input()
|
||||||
{
|
{
|
||||||
if (!player()->spectator && !objectplacing && !demo.freecam)
|
if (!player()->spectator && !objectplacing && !freecam())
|
||||||
{
|
{
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
@ -406,7 +408,7 @@ public:
|
||||||
common_button_input();
|
common_button_input();
|
||||||
};
|
};
|
||||||
|
|
||||||
if (demo.playback || demo.freecam || player()->spectator)
|
if (demo.playback || freecam() || player()->spectator)
|
||||||
{
|
{
|
||||||
// freecam is controllable even while paused
|
// freecam is controllable even while paused
|
||||||
|
|
||||||
|
|
@ -416,7 +418,7 @@ public:
|
||||||
{
|
{
|
||||||
regular_input();
|
regular_input();
|
||||||
|
|
||||||
if (demo.freecam)
|
if (freecam())
|
||||||
{
|
{
|
||||||
toggle_freecam_input();
|
toggle_freecam_input();
|
||||||
}
|
}
|
||||||
|
|
|
||||||
11
src/g_demo.c
11
src/g_demo.c
|
|
@ -1653,9 +1653,6 @@ void G_ConfirmRewind(tic_t rewindtime)
|
||||||
|
|
||||||
COM_BufInsertText("renderview on\n");
|
COM_BufInsertText("renderview on\n");
|
||||||
|
|
||||||
if (demo.freecam)
|
|
||||||
return; // don't touch from there
|
|
||||||
|
|
||||||
splitscreen = oldss;
|
splitscreen = oldss;
|
||||||
displayplayers[0] = olddp1;
|
displayplayers[0] = olddp1;
|
||||||
displayplayers[1] = olddp2;
|
displayplayers[1] = olddp2;
|
||||||
|
|
@ -4126,7 +4123,13 @@ void G_StopDemo(void)
|
||||||
demo.timing = false;
|
demo.timing = false;
|
||||||
singletics = false;
|
singletics = false;
|
||||||
|
|
||||||
demo.freecam = false;
|
{
|
||||||
|
UINT8 i;
|
||||||
|
for (i = 0; i < MAXSPLITSCREENPLAYERS; ++i)
|
||||||
|
{
|
||||||
|
camera[i].freecam = false;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
Z_Free(demo.skinlist);
|
Z_Free(demo.skinlist);
|
||||||
demo.skinlist = NULL;
|
demo.skinlist = NULL;
|
||||||
|
|
|
||||||
|
|
@ -1364,7 +1364,7 @@ boolean G_Responder(event_t *ev)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
if (gamestate == GS_LEVEL && ev->type == ev_keydown && multiplayer && demo.playback && !demo.freecam)
|
if (gamestate == GS_LEVEL && ev->type == ev_keydown && multiplayer && demo.playback)
|
||||||
{
|
{
|
||||||
// Allow pausing
|
// Allow pausing
|
||||||
if (
|
if (
|
||||||
|
|
|
||||||
|
|
@ -3381,7 +3381,7 @@ static boolean K_ShowPlayerNametag(player_t *p)
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (demo.playback == true && demo.freecam == true)
|
if (demo.playback == true && camera[R_GetViewNumber()].freecam == true)
|
||||||
{
|
{
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
@ -3762,7 +3762,7 @@ static void K_drawKartNameTags(void)
|
||||||
|
|
||||||
if (result.onScreen == true)
|
if (result.onScreen == true)
|
||||||
{
|
{
|
||||||
if (!(demo.playback == true && demo.freecam == true) && P_IsDisplayPlayer(ntplayer) &&
|
if (!(demo.playback == true && camera[cnum].freecam == true) && P_IsDisplayPlayer(ntplayer) &&
|
||||||
ntplayer != &players[displayplayers[cnum]])
|
ntplayer != &players[displayplayers[cnum]])
|
||||||
{
|
{
|
||||||
localindicator = G_PartyPosition(ntplayer - players);
|
localindicator = G_PartyPosition(ntplayer - players);
|
||||||
|
|
@ -5455,8 +5455,8 @@ static void K_DrawGPRankDebugger(void)
|
||||||
void K_drawKartHUD(void)
|
void K_drawKartHUD(void)
|
||||||
{
|
{
|
||||||
boolean islonesome = false;
|
boolean islonesome = false;
|
||||||
boolean freecam = demo.freecam; //disable some hud elements w/ freecam
|
|
||||||
UINT8 viewnum = R_GetViewNumber();
|
UINT8 viewnum = R_GetViewNumber();
|
||||||
|
boolean freecam = camera[viewnum].freecam; //disable some hud elements w/ freecam
|
||||||
|
|
||||||
// Define the X and Y for each drawn object
|
// Define the X and Y for each drawn object
|
||||||
// This is handled by console/menu values
|
// This is handled by console/menu values
|
||||||
|
|
@ -5531,7 +5531,7 @@ void K_drawKartHUD(void)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
if (!stplyr->spectator && !demo.freecam) // Bottom of the screen elements, don't need in spectate mode
|
if (!stplyr->spectator && !freecam) // Bottom of the screen elements, don't need in spectate mode
|
||||||
{
|
{
|
||||||
if (demo.title) // Draw title logo instead in demo.titles
|
if (demo.title) // Draw title logo instead in demo.titles
|
||||||
{
|
{
|
||||||
|
|
|
||||||
|
|
@ -12279,7 +12279,7 @@ void K_EggmanTransfer(player_t *source, player_t *victim)
|
||||||
victim->eggmanexplode = 6*TICRATE;
|
victim->eggmanexplode = 6*TICRATE;
|
||||||
K_StopRoulette(&victim->itemRoulette);
|
K_StopRoulette(&victim->itemRoulette);
|
||||||
|
|
||||||
if (P_IsDisplayPlayer(victim) && !demo.freecam)
|
if (P_IsDisplayPlayer(victim))
|
||||||
S_StartSound(NULL, sfx_itrole);
|
S_StartSound(NULL, sfx_itrole);
|
||||||
|
|
||||||
K_AddHitLag(source->mo, 2, true);
|
K_AddHitLag(source->mo, 2, true);
|
||||||
|
|
|
||||||
|
|
@ -1633,7 +1633,7 @@ void K_KartItemRoulette(player_t *const player, ticcmd_t *const cmd)
|
||||||
//player->karthud[khud_itemblinkmode] = 1;
|
//player->karthud[khud_itemblinkmode] = 1;
|
||||||
//player->karthud[khud_rouletteoffset] = K_GetRouletteOffset(roulette, FRACUNIT);
|
//player->karthud[khud_rouletteoffset] = K_GetRouletteOffset(roulette, FRACUNIT);
|
||||||
|
|
||||||
if (P_IsDisplayPlayer(player) && !demo.freecam)
|
if (P_IsDisplayPlayer(player))
|
||||||
{
|
{
|
||||||
S_StartSound(NULL, sfx_itrole);
|
S_StartSound(NULL, sfx_itrole);
|
||||||
}
|
}
|
||||||
|
|
@ -1680,7 +1680,7 @@ void K_KartItemRoulette(player_t *const player, ticcmd_t *const cmd)
|
||||||
player->karthud[khud_itemblinkmode] = 0;
|
player->karthud[khud_itemblinkmode] = 0;
|
||||||
player->karthud[khud_rouletteoffset] = K_GetRouletteOffset(roulette, FRACUNIT);
|
player->karthud[khud_rouletteoffset] = K_GetRouletteOffset(roulette, FRACUNIT);
|
||||||
|
|
||||||
if (P_IsDisplayPlayer(player) && !demo.freecam)
|
if (P_IsDisplayPlayer(player))
|
||||||
{
|
{
|
||||||
if (roulette->ringbox)
|
if (roulette->ringbox)
|
||||||
{
|
{
|
||||||
|
|
@ -1714,7 +1714,7 @@ void K_KartItemRoulette(player_t *const player, ticcmd_t *const cmd)
|
||||||
// This makes the roulette produce the random noises.
|
// This makes the roulette produce the random noises.
|
||||||
roulette->sound = (roulette->sound + 1) % 8;
|
roulette->sound = (roulette->sound + 1) % 8;
|
||||||
|
|
||||||
if (P_IsDisplayPlayer(player) && !demo.freecam)
|
if (P_IsDisplayPlayer(player))
|
||||||
{
|
{
|
||||||
if (roulette->ringbox)
|
if (roulette->ringbox)
|
||||||
S_StartSound(NULL, sfx_s240);
|
S_StartSound(NULL, sfx_s240);
|
||||||
|
|
|
||||||
|
|
@ -236,7 +236,11 @@ void M_PlaybackToggleFreecam(INT32 choice)
|
||||||
splitscreen = 0;
|
splitscreen = 0;
|
||||||
R_ExecuteSetViewSize();
|
R_ExecuteSetViewSize();
|
||||||
|
|
||||||
P_ToggleDemoCamera();
|
UINT8 i;
|
||||||
|
for (i = 0; i <= r_splitscreen; ++i)
|
||||||
|
{
|
||||||
|
P_ToggleDemoCamera(i);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
void M_PlaybackQuit(INT32 choice)
|
void M_PlaybackQuit(INT32 choice)
|
||||||
|
|
|
||||||
|
|
@ -92,6 +92,8 @@ void P_UnlinkThinker(thinker_t *thinker);
|
||||||
struct camera_t
|
struct camera_t
|
||||||
{
|
{
|
||||||
boolean chase;
|
boolean chase;
|
||||||
|
boolean freecam;
|
||||||
|
|
||||||
angle_t aiming;
|
angle_t aiming;
|
||||||
|
|
||||||
// Things used by FS cameras.
|
// Things used by FS cameras.
|
||||||
|
|
@ -126,6 +128,9 @@ struct camera_t
|
||||||
// SRB2Kart: camera pitches on slopes
|
// SRB2Kart: camera pitches on slopes
|
||||||
angle_t pitch;
|
angle_t pitch;
|
||||||
|
|
||||||
|
// Freecam: A button was held since entering from menu, so don't move camera
|
||||||
|
UINT8 button_a_held;
|
||||||
|
|
||||||
// Freecam: aiming needs to be reset after switching from chasecam
|
// Freecam: aiming needs to be reset after switching from chasecam
|
||||||
boolean reset_aiming;
|
boolean reset_aiming;
|
||||||
|
|
||||||
|
|
@ -134,14 +139,6 @@ struct camera_t
|
||||||
angle_t old_angle, old_aiming;
|
angle_t old_angle, old_aiming;
|
||||||
};
|
};
|
||||||
|
|
||||||
// demo freecam or something before i commit die
|
|
||||||
struct demofreecam_s {
|
|
||||||
|
|
||||||
UINT8 button_a_held; // A button was held since entering from menu, so don't move camera
|
|
||||||
};
|
|
||||||
|
|
||||||
extern struct demofreecam_s democam;
|
|
||||||
|
|
||||||
extern camera_t camera[MAXSPLITSCREENPLAYERS];
|
extern camera_t camera[MAXSPLITSCREENPLAYERS];
|
||||||
extern consvar_t cv_cam_dist[MAXSPLITSCREENPLAYERS], cv_cam_still[MAXSPLITSCREENPLAYERS], cv_cam_height[MAXSPLITSCREENPLAYERS];
|
extern consvar_t cv_cam_dist[MAXSPLITSCREENPLAYERS], cv_cam_still[MAXSPLITSCREENPLAYERS], cv_cam_height[MAXSPLITSCREENPLAYERS];
|
||||||
extern consvar_t cv_cam_speed[MAXSPLITSCREENPLAYERS], cv_cam_rotate[MAXSPLITSCREENPLAYERS];
|
extern consvar_t cv_cam_speed[MAXSPLITSCREENPLAYERS], cv_cam_rotate[MAXSPLITSCREENPLAYERS];
|
||||||
|
|
@ -156,7 +153,7 @@ boolean P_TryCameraMove(fixed_t x, fixed_t y, camera_t *thiscam);
|
||||||
void P_SlideCameraMove(camera_t *thiscam);
|
void P_SlideCameraMove(camera_t *thiscam);
|
||||||
void P_DemoCameraMovement(camera_t *cam, UINT8 num);
|
void P_DemoCameraMovement(camera_t *cam, UINT8 num);
|
||||||
boolean P_MoveChaseCamera(player_t *player, camera_t *thiscam, boolean resetcalled);
|
boolean P_MoveChaseCamera(player_t *player, camera_t *thiscam, boolean resetcalled);
|
||||||
void P_ToggleDemoCamera(void);
|
void P_ToggleDemoCamera(UINT8 viewnum);
|
||||||
|
|
||||||
boolean P_PlayerInPain(player_t *player);
|
boolean P_PlayerInPain(player_t *player);
|
||||||
void P_ResetPlayer(player_t *player);
|
void P_ResetPlayer(player_t *player);
|
||||||
|
|
|
||||||
|
|
@ -12231,7 +12231,7 @@ void P_SpawnPlayer(INT32 playernum)
|
||||||
// changes.
|
// changes.
|
||||||
if (!demo.playback)
|
if (!demo.playback)
|
||||||
{
|
{
|
||||||
demo.freecam = false;
|
camera[G_PartyPosition(playernum)].freecam = false;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
else if (pcount == 1)
|
else if (pcount == 1)
|
||||||
|
|
|
||||||
48
src/p_user.c
48
src/p_user.c
|
|
@ -1077,17 +1077,17 @@ boolean P_IsDisplayPlayer(player_t *player)
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
// Freecam still techically has a player in
|
|
||||||
// displayplayers. But since the camera is detached, it
|
|
||||||
// would be weird if sounds were heard from that player's
|
|
||||||
// perspective.
|
|
||||||
if (demo.freecam)
|
|
||||||
{
|
|
||||||
return false;
|
|
||||||
}
|
|
||||||
|
|
||||||
for (i = 0; i <= r_splitscreen; i++) // DON'T skip P1
|
for (i = 0; i <= r_splitscreen; i++) // DON'T skip P1
|
||||||
{
|
{
|
||||||
|
if (camera[i].freecam)
|
||||||
|
{
|
||||||
|
// Freecam still techically has a player in
|
||||||
|
// displayplayers. But since the camera is
|
||||||
|
// detached, it would be weird if sounds were
|
||||||
|
// heard from that player's perspective.
|
||||||
|
continue;
|
||||||
|
}
|
||||||
|
|
||||||
if (player == &players[displayplayers[i]])
|
if (player == &players[displayplayers[i]])
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
@ -2884,8 +2884,6 @@ fixed_t t_cam_dist[MAXSPLITSCREENPLAYERS] = {-42,-42,-42,-42};
|
||||||
fixed_t t_cam_height[MAXSPLITSCREENPLAYERS] = {-42,-42,-42,-42};
|
fixed_t t_cam_height[MAXSPLITSCREENPLAYERS] = {-42,-42,-42,-42};
|
||||||
fixed_t t_cam_rotate[MAXSPLITSCREENPLAYERS] = {-42,-42,-42,-42};
|
fixed_t t_cam_rotate[MAXSPLITSCREENPLAYERS] = {-42,-42,-42,-42};
|
||||||
|
|
||||||
struct demofreecam_s democam;
|
|
||||||
|
|
||||||
void P_DemoCameraMovement(camera_t *cam, UINT8 num)
|
void P_DemoCameraMovement(camera_t *cam, UINT8 num)
|
||||||
{
|
{
|
||||||
ticcmd_t *cmd;
|
ticcmd_t *cmd;
|
||||||
|
|
@ -2913,7 +2911,7 @@ void P_DemoCameraMovement(camera_t *cam, UINT8 num)
|
||||||
cam->angle += turning;
|
cam->angle += turning;
|
||||||
|
|
||||||
// camera movement:
|
// camera movement:
|
||||||
if (!democam.button_a_held)
|
if (!cam->button_a_held)
|
||||||
{
|
{
|
||||||
if (cmd->buttons & BT_ACCELERATE)
|
if (cmd->buttons & BT_ACCELERATE)
|
||||||
{
|
{
|
||||||
|
|
@ -2927,13 +2925,13 @@ void P_DemoCameraMovement(camera_t *cam, UINT8 num)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
if (!(cmd->buttons & (BT_ACCELERATE | BT_DRIFT)) && democam.button_a_held)
|
if (!(cmd->buttons & (BT_ACCELERATE | BT_DRIFT)) && cam->button_a_held)
|
||||||
{
|
{
|
||||||
democam.button_a_held--;
|
cam->button_a_held--;
|
||||||
}
|
}
|
||||||
|
|
||||||
// if you hold item, you will lock on to displayplayer. (The last player you were ""f12-ing"")
|
// if you hold item, you will lock on to displayplayer. (The last player you were ""f12-ing"")
|
||||||
if (demo.freecam && cmd->buttons & BT_ATTACK)
|
if (cam->freecam && cmd->buttons & BT_ATTACK)
|
||||||
{
|
{
|
||||||
lastp = &players[displayplayers[0]]; // Fun fact, I was trying displayplayers[0]->mo as if it was Lua like an absolute idiot.
|
lastp = &players[displayplayers[0]]; // Fun fact, I was trying displayplayers[0]->mo as if it was Lua like an absolute idiot.
|
||||||
cam->angle = R_PointToAngle2(cam->x, cam->y, lastp->mo->x, lastp->mo->y);
|
cam->angle = R_PointToAngle2(cam->x, cam->y, lastp->mo->x, lastp->mo->y);
|
||||||
|
|
@ -2953,7 +2951,7 @@ void P_DemoCameraMovement(camera_t *cam, UINT8 num)
|
||||||
// forward/back will have a slope. So, as long as democam
|
// forward/back will have a slope. So, as long as democam
|
||||||
// controls haven't been used to alter the vertical angle,
|
// controls haven't been used to alter the vertical angle,
|
||||||
// slowly reset it to flat.
|
// slowly reset it to flat.
|
||||||
if ((cam->reset_aiming && moving) || ((cmd->buttons & BT_DRIFT) && !democam.button_a_held))
|
if ((cam->reset_aiming && moving) || ((cmd->buttons & BT_DRIFT) && !cam->button_a_held))
|
||||||
{
|
{
|
||||||
INT32 aiming = cam->aiming;
|
INT32 aiming = cam->aiming;
|
||||||
INT32 smooth = FixedMul(ANGLE_11hh / 4, FCOS(cam->aiming));
|
INT32 smooth = FixedMul(ANGLE_11hh / 4, FCOS(cam->aiming));
|
||||||
|
|
@ -2994,17 +2992,19 @@ void P_DemoCameraMovement(camera_t *cam, UINT8 num)
|
||||||
cam->subsector = R_PointInSubsector(cam->x, cam->y);
|
cam->subsector = R_PointInSubsector(cam->x, cam->y);
|
||||||
}
|
}
|
||||||
|
|
||||||
void P_ToggleDemoCamera(void)
|
void P_ToggleDemoCamera(UINT8 viewnum)
|
||||||
{
|
{
|
||||||
if (!demo.freecam) // toggle on
|
camera_t *cam = &camera[viewnum];
|
||||||
|
|
||||||
|
if (!cam->freecam) // toggle on
|
||||||
{
|
{
|
||||||
demo.freecam = true;
|
cam->freecam = true;
|
||||||
democam.button_a_held = 2;
|
cam->button_a_held = 2;
|
||||||
camera[0].reset_aiming = true;
|
cam->reset_aiming = true;
|
||||||
}
|
}
|
||||||
else // toggle off
|
else // toggle off
|
||||||
{
|
{
|
||||||
demo.freecam = false;
|
cam->freecam = false;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
@ -3013,7 +3013,7 @@ void P_ResetCamera(player_t *player, camera_t *thiscam)
|
||||||
tic_t tries = 0;
|
tic_t tries = 0;
|
||||||
fixed_t x, y, z;
|
fixed_t x, y, z;
|
||||||
|
|
||||||
if (demo.freecam)
|
if (thiscam->freecam)
|
||||||
return; // do not reset the camera there.
|
return; // do not reset the camera there.
|
||||||
|
|
||||||
if (!player->mo)
|
if (!player->mo)
|
||||||
|
|
@ -3099,7 +3099,7 @@ boolean P_MoveChaseCamera(player_t *player, camera_t *thiscam, boolean resetcall
|
||||||
num = 0;
|
num = 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (demo.freecam || player->spectator)
|
if (thiscam->freecam || player->spectator)
|
||||||
{
|
{
|
||||||
P_DemoCameraMovement(thiscam, num);
|
P_DemoCameraMovement(thiscam, num);
|
||||||
return true;
|
return true;
|
||||||
|
|
|
||||||
|
|
@ -906,7 +906,7 @@ void R_ApplyViewMorph(int s)
|
||||||
width*vid.bpp, height, width*vid.bpp, vid.width);
|
width*vid.bpp, height, width*vid.bpp, vid.width);
|
||||||
}
|
}
|
||||||
|
|
||||||
angle_t R_ViewRollAngle(const player_t *player)
|
angle_t R_ViewRollAngle(const player_t *player, UINT8 viewnum)
|
||||||
{
|
{
|
||||||
angle_t roll = 0;
|
angle_t roll = 0;
|
||||||
|
|
||||||
|
|
@ -927,7 +927,7 @@ angle_t R_ViewRollAngle(const player_t *player)
|
||||||
|
|
||||||
if (cv_tilting.value)
|
if (cv_tilting.value)
|
||||||
{
|
{
|
||||||
if (!player->spectator && !demo.freecam)
|
if (!player->spectator && !camera[viewnum].freecam)
|
||||||
{
|
{
|
||||||
roll += player->tilt;
|
roll += player->tilt;
|
||||||
}
|
}
|
||||||
|
|
@ -1169,7 +1169,7 @@ R_SetupCommonFrame
|
||||||
newview->y += offset.y;
|
newview->y += offset.y;
|
||||||
newview->z += offset.z;
|
newview->z += offset.z;
|
||||||
|
|
||||||
newview->roll = R_ViewRollAngle(player);
|
newview->roll = R_ViewRollAngle(player, viewnum);
|
||||||
|
|
||||||
if (subsector)
|
if (subsector)
|
||||||
newview->sector = subsector->sector;
|
newview->sector = subsector->sector;
|
||||||
|
|
|
||||||
|
|
@ -168,7 +168,7 @@ void R_Init(void);
|
||||||
|
|
||||||
void R_CheckViewMorph(int split);
|
void R_CheckViewMorph(int split);
|
||||||
void R_ApplyViewMorph(int split);
|
void R_ApplyViewMorph(int split);
|
||||||
angle_t R_ViewRollAngle(const player_t *player);
|
angle_t R_ViewRollAngle(const player_t *player, UINT8 viewnum);
|
||||||
|
|
||||||
// just sets setsizeneeded true
|
// just sets setsizeneeded true
|
||||||
extern boolean setsizeneeded;
|
extern boolean setsizeneeded;
|
||||||
|
|
|
||||||
|
|
@ -444,7 +444,7 @@ void S_StartSoundAtVolume(const void *origin_p, sfxenum_t sfx_id, INT32 volume)
|
||||||
listenmobj[i] = player->mo;
|
listenmobj[i] = player->mo;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (origin && origin == listenmobj[i] && !demo.freecam)
|
if (origin && origin == listenmobj[i] && !camera[i].freecam)
|
||||||
{
|
{
|
||||||
itsUs = true;
|
itsUs = true;
|
||||||
}
|
}
|
||||||
|
|
@ -755,15 +755,15 @@ void S_UpdateSounds(void)
|
||||||
{
|
{
|
||||||
boolean itsUs = false;
|
boolean itsUs = false;
|
||||||
|
|
||||||
if (!demo.freecam)
|
for (i = r_splitscreen; i >= 0; i--)
|
||||||
{
|
{
|
||||||
for (i = r_splitscreen; i >= 0; i--)
|
if (camera[i].freecam)
|
||||||
{
|
continue;
|
||||||
if (c->origin != listenmobj[i])
|
|
||||||
continue;
|
|
||||||
|
|
||||||
itsUs = true;
|
if (c->origin != listenmobj[i])
|
||||||
}
|
continue;
|
||||||
|
|
||||||
|
itsUs = true;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (itsUs == false)
|
if (itsUs == false)
|
||||||
|
|
|
||||||
|
|
@ -1192,7 +1192,7 @@ static void ST_overlayDrawer(void)
|
||||||
{
|
{
|
||||||
if (cv_showviewpointtext.value)
|
if (cv_showviewpointtext.value)
|
||||||
{
|
{
|
||||||
if (!demo.title && !P_IsLocalPlayer(stplyr) && !demo.freecam)
|
if (!demo.title && !P_IsLocalPlayer(stplyr) && !camera[viewnum].freecam)
|
||||||
{
|
{
|
||||||
if (!r_splitscreen)
|
if (!r_splitscreen)
|
||||||
{
|
{
|
||||||
|
|
|
||||||
Loading…
Add table
Reference in a new issue