diff --git a/source/games/sw/src/draw.cpp b/source/games/sw/src/draw.cpp index a0a8174d5..b015ebec2 100644 --- a/source/games/sw/src/draw.cpp +++ b/source/games/sw/src/draw.cpp @@ -811,7 +811,7 @@ static void analyzesprites(tspriteArray& tsprites, const DVector3& viewpos, doub else // Otherwise just interpolate the player sprite { pp = tActor->user.PlayerP; - tsp->pos = interpolatedvalue(pp->opos, pp->PlayerNowPosition, interpfrac); + tsp->pos = interpolatedvalue(pp->PlayerPrevPosition, pp->PlayerNowPosition, interpfrac); tsp->angle = pp->angle.interpolatedang(interpfrac); } } @@ -1240,7 +1240,7 @@ void drawscreen(PLAYER* pp, double interpfrac, bool sceneonly) } // Get initial player position, interpolating if required. - DVector3 tpos = interpolatedvalue(camerapp->opos, camerapp->PlayerNowPosition, interpfrac); + DVector3 tpos = interpolatedvalue(camerapp->PlayerPrevPosition, camerapp->PlayerNowPosition, interpfrac); if (SyncInput() || pp != Player+myconnectindex) { tang = camerapp->angle.interpolatedsum(interpfrac); diff --git a/source/games/sw/src/game.h b/source/games/sw/src/game.h index a092eda08..72afa70b1 100644 --- a/source/games/sw/src/game.h +++ b/source/games/sw/src/game.h @@ -538,7 +538,7 @@ struct PLAYER { // variable that fit in the sprite or user structure - DVector3 PlayerNowPosition, opos, oldpos; + DVector3 PlayerNowPosition, PlayerPrevPosition, oldpos; DSWActor* actor; // this may not be a TObjPtr! TObjPtr lowActor, highActor; diff --git a/source/games/sw/src/jsector.cpp b/source/games/sw/src/jsector.cpp index 7d8ce57cc..0e916f52a 100644 --- a/source/games/sw/src/jsector.cpp +++ b/source/games/sw/src/jsector.cpp @@ -598,7 +598,7 @@ void JS_DrawCameras(PLAYER* pp, const DVector3& campos, double smoothratio) // If player is dead still then update at MoveSkip4 // rate. - if (pp->PlayerNowPosition.X == pp->opos.X && pp->PlayerNowPosition.Y == pp->opos.Y && pp->PlayerNowPosition.Z == pp->opos.Z) + if (pp->PlayerNowPosition.X == pp->PlayerPrevPosition.X && pp->PlayerNowPosition.Y == pp->PlayerPrevPosition.Y && pp->PlayerNowPosition.Z == pp->PlayerPrevPosition.Z) DoCam = true; diff --git a/source/games/sw/src/osdcmds.cpp b/source/games/sw/src/osdcmds.cpp index 6a67800bd..9ef6effe9 100644 --- a/source/games/sw/src/osdcmds.cpp +++ b/source/games/sw/src/osdcmds.cpp @@ -58,7 +58,7 @@ void GameInterface::WarpToCoords(double x, double y, double z, DAngle ang) { Player->PlayerNowPosition = DVector3(x,y,z); - Player->opos = Player->PlayerNowPosition; + Player->PlayerPrevPosition = Player->PlayerNowPosition; if (ang != DAngle::fromDeg(INT_MIN)) { diff --git a/source/games/sw/src/player.cpp b/source/games/sw/src/player.cpp index 6ce1b12ab..9d3447f0e 100644 --- a/source/games/sw/src/player.cpp +++ b/source/games/sw/src/player.cpp @@ -1312,7 +1312,7 @@ void DoPlayerTeleportPause(PLAYER* pp) void DoPlayerTeleportToSprite(PLAYER* pp, DVector3& pos, DAngle ang) { pp->angle.ang = pp->angle.oang = ang; - pp->opos = pp->PlayerNowPosition= pos.plusZ(-PLAYER_HEIGHTF); + pp->PlayerPrevPosition = pp->PlayerNowPosition= pos.plusZ(-PLAYER_HEIGHTF); pp->oldpos.XY() = pp->PlayerNowPosition.XY(); updatesector(pp->PlayerNowPosition, &pp->cursector); @@ -1327,7 +1327,7 @@ void DoPlayerTeleportToSprite(PLAYER* pp, DVector3& pos, DAngle ang) void DoPlayerTeleportToOffset(PLAYER* pp) { - pp->oldpos.XY() = pp->opos.XY() = pp->PlayerNowPosition.XY(); + pp->oldpos.XY() = pp->PlayerPrevPosition.XY() = pp->PlayerNowPosition.XY(); updatesector(pp->PlayerNowPosition, &pp->cursector); pp->Flags2 |= (PF2_TELEPORTED); @@ -2163,7 +2163,7 @@ void DoPlayerMove(PLAYER* pp) auto sect = pp->cursector; if (interpolate_ride) { - pp->opos.XY() = pp->PlayerNowPosition.XY(); + pp->PlayerPrevPosition.XY() = pp->PlayerNowPosition.XY(); } pp->PlayerNowPosition += pp->vect; updatesector(pp->PlayerNowPosition, §); @@ -2188,7 +2188,7 @@ void DoPlayerMove(PLAYER* pp) if (interpolate_ride) { - pp->opos.XY() = pp->PlayerNowPosition.XY(); + pp->PlayerPrevPosition.XY() = pp->PlayerNowPosition.XY(); } auto save_cstat = actor->spr.cstat; @@ -2217,7 +2217,7 @@ void DoPlayerMove(PLAYER* pp) if (interpolate_ride) { - pp->opos.Z = pp->PlayerNowPosition.Z; + pp->PlayerPrevPosition.Z = pp->PlayerNowPosition.Z; pp->angle.backup(); } @@ -3753,7 +3753,7 @@ void PlayerWarpUpdatePos(PLAYER* pp) if (Prediction) return; - pp->opos = pp->PlayerNowPosition; + pp->PlayerPrevPosition = pp->PlayerNowPosition; DoPlayerZrange(pp); UpdatePlayerSprite(pp); } @@ -4283,7 +4283,7 @@ void DoPlayerWarpToUnderwater(PLAYER* pp) pp->PlayerNowPosition.Z = under_act->sector()->ceilingz + 6; - pp->opos = pp->PlayerNowPosition; + pp->PlayerPrevPosition = pp->PlayerNowPosition; DoPlayerZrange(pp); return; @@ -4359,7 +4359,7 @@ void DoPlayerWarpToSurface(PLAYER* pp) pp->PlayerNowPosition.Z -= pp->WadeDepth; - pp->opos = pp->PlayerNowPosition; + pp->PlayerPrevPosition = pp->PlayerNowPosition; return; } @@ -6818,7 +6818,7 @@ void MoveSkipSavePos(void) { pp = Player + pnum; - pp->opos = pp->PlayerNowPosition; + pp->PlayerPrevPosition = pp->PlayerNowPosition; pp->obob_z = pp->bob_z; pp->angle.backup(); pp->horizon.backup(); @@ -7174,7 +7174,7 @@ void InitAllPlayers(void) // Initialize all [MAX_SW_PLAYERS] arrays here! for (pp = Player; pp < &Player[MAX_SW_PLAYERS]; pp++) { - pp->PlayerNowPosition = pp->opos = pfirst->PlayerNowPosition; + pp->PlayerNowPosition = pp->PlayerPrevPosition = pfirst->PlayerNowPosition; pp->angle.ang = pp->angle.oang = pfirst->angle.ang; pp->horizon.horiz = pp->horizon.ohoriz = pfirst->horizon.horiz; pp->cursector = pfirst->cursector; @@ -7335,7 +7335,7 @@ void PlayerSpawnPosition(PLAYER* pp) ASSERT(spawn_sprite != nullptr); pp->PlayerNowPosition = spawn_sprite->spr.pos; - pp->opos = pp->PlayerNowPosition; + pp->PlayerPrevPosition = pp->PlayerNowPosition; pp->angle.ang = pp->angle.oang = spawn_sprite->spr.angle; pp->setcursector(spawn_sprite->sector()); @@ -7344,7 +7344,7 @@ void PlayerSpawnPosition(PLAYER* pp) if (pp->PlayerNowPosition.Z > fz - PLAYER_HEIGHTF) { pp->PlayerNowPosition.Z = fz - PLAYER_HEIGHTF; - pp->opos.Z = pp->PlayerNowPosition.Z; + pp->PlayerPrevPosition.Z = pp->PlayerNowPosition.Z; } } diff --git a/source/games/sw/src/save.cpp b/source/games/sw/src/save.cpp index 92dbce929..14b58fe96 100644 --- a/source/games/sw/src/save.cpp +++ b/source/games/sw/src/save.cpp @@ -574,7 +574,7 @@ FSerializer& Serialize(FSerializer& arc, const char* keyname, PLAYER& w, PLAYER* } if (arc.isReading()) { - w.opos = w.PlayerNowPosition; + w.PlayerPrevPosition = w.PlayerNowPosition; w.ovect = w.vect; w.obob_z = w.bob_z; w.input = {}; diff --git a/source/games/sw/src/sprite.cpp b/source/games/sw/src/sprite.cpp index 109265272..f397b58f7 100644 --- a/source/games/sw/src/sprite.cpp +++ b/source/games/sw/src/sprite.cpp @@ -1544,7 +1544,7 @@ void PreMapCombineFloors(void) if (itsect == dasect) { pp->PlayerNowPosition += dv; - pp->opos.XY() = pp->oldpos.XY() = pp->PlayerNowPosition.XY(); + pp->PlayerPrevPosition.XY() = pp->oldpos.XY() = pp->PlayerNowPosition.XY(); break; } }