Fix camera not updating when F12ing, fixed camera not taking aiming into account, and minor cleanup

This commit is contained in:
Sally Coolatta 2020-09-25 09:28:19 -04:00
parent 58d9ac899d
commit 953afddd03
4 changed files with 39 additions and 36 deletions

View file

@ -461,15 +461,16 @@ static int player_set(lua_State *L)
else if (fastcmp(field,"viewrollangle")) else if (fastcmp(field,"viewrollangle"))
plr->viewrollangle = luaL_checkangle(L, 3); plr->viewrollangle = luaL_checkangle(L, 3);
else if (fastcmp(field,"aiming")) { else if (fastcmp(field,"aiming")) {
UINT8 i;
plr->aiming = luaL_checkangle(L, 3); plr->aiming = luaL_checkangle(L, 3);
if (plr == &players[consoleplayer]) for (i = 0; i <= r_splitscreen; i++)
localaiming[0] = plr->aiming; {
else if (plr == &players[displayplayers[1]]) if (plr == &players[displayplayers[i]])
localaiming[1] = plr->aiming; {
else if (plr == &players[displayplayers[2]]) localaiming[i] = plr->aiming;
localaiming[2] = plr->aiming; break;
else if (plr == &players[displayplayers[3]]) }
localaiming[3] = plr->aiming; }
} }
else if (fastcmp(field,"drawangle")) else if (fastcmp(field,"drawangle"))
plr->drawangle = luaL_checkangle(L, 3); plr->drawangle = luaL_checkangle(L, 3);

View file

@ -1161,6 +1161,8 @@ void P_KillMobj(mobj_t *target, mobj_t *inflictor, mobj_t *source, UINT8 damaget
// if a player avatar dies... // if a player avatar dies...
if (target->player) if (target->player)
{ {
UINT8 i;
target->flags &= ~(MF_SOLID|MF_SHOOTABLE); // does not block target->flags &= ~(MF_SOLID|MF_SHOOTABLE); // does not block
P_UnsetThingPosition(target); P_UnsetThingPosition(target);
target->flags |= MF_NOBLOCKMAP|MF_NOCLIP|MF_NOCLIPHEIGHT|MF_NOGRAVITY; target->flags |= MF_NOBLOCKMAP|MF_NOCLIP|MF_NOCLIPHEIGHT|MF_NOGRAVITY;
@ -1176,14 +1178,17 @@ void P_KillMobj(mobj_t *target, mobj_t *inflictor, mobj_t *source, UINT8 damaget
// switch view prior to dying // switch view prior to dying
if (automapactive) if (automapactive)
AM_Stop(); AM_Stop();
//added : 22-02-98: recenter view for next life...
localaiming[0] = 0;
} }
if (target->player == &players[displayplayers[1]]) localaiming[1] = 0; //added : 22-02-98: recenter view for next life...
if (target->player == &players[displayplayers[2]]) localaiming[2] = 0; for (i = 0; i <= r_splitscreen; i++)
if (target->player == &players[displayplayers[3]]) localaiming[3] = 0; {
if (target->player == &players[displayplayers[i]])
{
localaiming[i] = 0;
break;
}
}
if ((gametyperules & GTR_BUMPERS)) if ((gametyperules & GTR_BUMPERS))
K_CheckBumpers(); K_CheckBumpers();

View file

@ -151,7 +151,6 @@ boolean P_IsDisplayPlayer(player_t *player);
void P_SetPlayerAngle(player_t *player, angle_t angle); void P_SetPlayerAngle(player_t *player, angle_t angle);
angle_t P_GetLocalAngle(player_t *player); angle_t P_GetLocalAngle(player_t *player);
void P_SetLocalAngle(player_t *player, angle_t angle);
void P_ForceLocalAngle(player_t *player, angle_t angle); void P_ForceLocalAngle(player_t *player, angle_t angle);
boolean P_PlayerFullbright(player_t *player); boolean P_PlayerFullbright(player_t *player);

View file

@ -2037,11 +2037,11 @@ static void P_3dMovement(player_t *player)
// //
static void P_UpdatePlayerAngle(player_t *player) static void P_UpdatePlayerAngle(player_t *player)
{ {
ticcmd_t *cmd = &player->cmd; angle_t angleChange = K_GetKartTurnValue(player, player->cmd.turning) << TICCMD_REDUCE;
angle_t angleChange = K_GetKartTurnValue(player, cmd->turning) << TICCMD_REDUCE; UINT8 i;
player->angleturn += angleChange; P_SetPlayerAngle(player, player->angleturn + angleChange);
P_SetLocalAngle(player, P_GetLocalAngle(player) + angleChange); player->mo->angle = player->angleturn;
if (!cv_allowmlook.value || player->spectator == false) if (!cv_allowmlook.value || player->spectator == false)
{ {
@ -2049,11 +2049,18 @@ static void P_UpdatePlayerAngle(player_t *player)
} }
else else
{ {
player->aiming += (cmd->aiming << TICCMD_REDUCE); player->aiming += (player->cmd.aiming << TICCMD_REDUCE);
player->aiming = G_ClipAimingPitch((INT32 *)&player->aiming); player->aiming = G_ClipAimingPitch((INT32 *)&player->aiming);
} }
player->mo->angle = player->angleturn; for (i = 0; i <= r_splitscreen; i++)
{
if (player == &players[displayplayers[i]])
{
localaiming[i] = player->aiming;
break;
}
}
} }
// //
@ -4653,17 +4660,8 @@ void P_PlayerAfterThink(player_t *player)
void P_SetPlayerAngle(player_t *player, angle_t angle) void P_SetPlayerAngle(player_t *player, angle_t angle)
{ {
angle_t delta = angle - player->angleturn; P_ForceLocalAngle(player, angle);
player->angleturn = angle;
P_ForceLocalAngle(player, P_GetLocalAngle(player) + delta);
player->angleturn += delta;
}
void P_SetLocalAngle(player_t *player, angle_t angle)
{
angle_t delta = (angle - P_GetLocalAngle(player));
P_ForceLocalAngle(player, P_GetLocalAngle(player) + delta);
} }
angle_t P_GetLocalAngle(player_t *player) angle_t P_GetLocalAngle(player_t *player)
@ -4672,9 +4670,9 @@ angle_t P_GetLocalAngle(player_t *player)
// (hint: they have separate variables for all of this shit instead of arrays) // (hint: they have separate variables for all of this shit instead of arrays)
UINT8 i; UINT8 i;
for (i = 0; i <= splitscreen; i++) for (i = 0; i <= r_splitscreen; i++)
{ {
if (player == &players[g_localplayers[i]]) if (player == &players[displayplayers[i]])
return localangle[i]; return localangle[i];
} }
@ -4687,9 +4685,9 @@ void P_ForceLocalAngle(player_t *player, angle_t angle)
angle = angle & ~UINT16_MAX; angle = angle & ~UINT16_MAX;
for (i = 0; i <= splitscreen; i++) for (i = 0; i <= r_splitscreen; i++)
{ {
if (player == &players[g_localplayers[i]]) if (player == &players[displayplayers[i]])
{ {
localangle[i] = angle; localangle[i] = angle;
break; break;