diff --git a/source/core/gameinput.h b/source/core/gameinput.h index e07f0248e..4acd0823b 100644 --- a/source/core/gameinput.h +++ b/source/core/gameinput.h @@ -88,33 +88,10 @@ struct PlayerAngles return offsets; } - // Yaw methods. - void setYaw(const DAngle value, const bool backup = false) { updateAngle(YAW, value, backup); } - - // Roll methods. - void addRoll(const DAngle value) { updateAngle(ROLL, pActor->spr.Angles.Roll + value); } - void setRoll(const DAngle value, const bool backup = false) { updateAngle(ROLL, value, backup); } - private: - // DRotator indices. - enum : unsigned - { - PITCH, - YAW, - ROLL, - MAXANGLES, - }; - // Private data which should never be accessed publically. DRotator PrevLerpAngles; DCoreActor* pActor; - - // Internal angle updater to reduce boilerplate from the public setters. - void updateAngle(const unsigned angIndex, const DAngle value, const bool backup = false) - { - pActor->spr.Angles[angIndex] = value; - if (backup) pActor->PrevAngles[angIndex] = pActor->spr.Angles[angIndex]; - } }; class FSerializer; diff --git a/source/games/blood/src/nnexts.cpp b/source/games/blood/src/nnexts.cpp index bb2428bf7..37765d22e 100644 --- a/source/games/blood/src/nnexts.cpp +++ b/source/games/blood/src/nnexts.cpp @@ -6051,12 +6051,12 @@ bool modernTypeOperateSprite(DBloodActor* actor, EVENT& event) else if (actor->spr.flags & kModernTypeFlag1) { setForcedSyncInput(); - pPlayer->Angles.setYaw(actor->spr.Angles.Yaw); + pPlayer->actor->spr.Angles.Yaw = actor->spr.Angles.Yaw; } else if (valueIsBetween(actor->xspr.data2, -kAng360, kAng360)) { setForcedSyncInput(); - pPlayer->Angles.setYaw(mapangle(actor->xspr.data2)); + pPlayer->actor->spr.Angles.Yaw = mapangle(actor->xspr.data2); } break; case 10: // 74 (de)activate powerup diff --git a/source/games/blood/src/triggers.cpp b/source/games/blood/src/triggers.cpp index e587aa777..d4c534e3c 100644 --- a/source/games/blood/src/triggers.cpp +++ b/source/games/blood/src/triggers.cpp @@ -1627,7 +1627,7 @@ void OperateTeleport(sectortype* pSector) { playerResetInertia(pPlayer); pPlayer->zViewVel = pPlayer->zWeaponVel = 0; - pPlayer->Angles.setYaw(actor->spr.Angles.Yaw, true); + pPlayer->actor->PrevAngles.Yaw = pPlayer->actor->spr.Angles.Yaw = actor->spr.Angles.Yaw; } } } diff --git a/source/games/duke/src/actors_d.cpp b/source/games/duke/src/actors_d.cpp index 7cf34f6dd..f09bc58f3 100644 --- a/source/games/duke/src/actors_d.cpp +++ b/source/games/duke/src/actors_d.cpp @@ -746,7 +746,7 @@ void movetransports_d(void) ps[k].GetActor()->spr.extra = 0; } - ps[p].Angles.setYaw(Owner->spr.Angles.Yaw, true); + ps[p].GetActor()->PrevAngles.Yaw = ps[p].GetActor()->spr.Angles.Yaw = Owner->spr.Angles.Yaw; if (Owner->GetOwner() != Owner) { diff --git a/source/games/duke/src/actors_r.cpp b/source/games/duke/src/actors_r.cpp index a203acd84..e62db349f 100644 --- a/source/games/duke/src/actors_r.cpp +++ b/source/games/duke/src/actors_r.cpp @@ -608,7 +608,7 @@ void movetransports_r(void) ps[k].GetActor()->spr.extra = 0; } - ps[p].Angles.setYaw(Owner->spr.Angles.Yaw, true); + ps[p].GetActor()->PrevAngles.Yaw = ps[p].GetActor()->spr.Angles.Yaw = Owner->spr.Angles.Yaw; if (Owner->GetOwner() != Owner) { diff --git a/source/games/duke/src/gameexec.cpp b/source/games/duke/src/gameexec.cpp index b7a0ce7c8..56bb136f3 100644 --- a/source/games/duke/src/gameexec.cpp +++ b/source/games/duke/src/gameexec.cpp @@ -472,7 +472,7 @@ void DoPlayer(bool bSet, int lVar1, int lLabelID, int lVar2, DDukeActor* sActor, break; case PLAYER_ANG: - if (bSet) ps[iPlayer].Angles.setYaw(mapangle(lValue)); + if (bSet) ps[iPlayer].GetActor()->spr.Angles.Yaw = mapangle(lValue); else SetGameVarID(lVar2, ps[iPlayer].GetActor()->spr.Angles.Yaw.Buildang(), sActor, sPlayer); break; diff --git a/source/games/duke/src/vmexports.cpp b/source/games/duke/src/vmexports.cpp index 045f8b8bd..f604f1c00 100644 --- a/source/games/duke/src/vmexports.cpp +++ b/source/games/duke/src/vmexports.cpp @@ -1016,7 +1016,8 @@ DEFINE_ACTION_FUNCTION_NATIVE(_DukePlayer, playerinput, DukePlayer_PlayerInput) void dukeplayer_settargetangle(player_struct* self, double a, int backup) { - self->Angles.setYaw(DAngle::fromDeg(a), backup); + self->GetActor()->spr.Angles.Yaw = DAngle::fromDeg(a); + if (backup) self->GetActor()->PrevAngles.Yaw = self->GetActor()->spr.Angles.Yaw; } DEFINE_ACTION_FUNCTION_NATIVE(_DukePlayer, settargetangle, dukeplayer_settargetangle) diff --git a/source/games/sw/src/player.cpp b/source/games/sw/src/player.cpp index 644f540ce..a58ae16c0 100644 --- a/source/games/sw/src/player.cpp +++ b/source/games/sw/src/player.cpp @@ -3435,7 +3435,7 @@ void DoPlayerClimb(PLAYER* pp) pp->LadderPosition = lActor->spr.pos.XY() + nvec; - pp->Angles.setYaw(lActor->spr.Angles.Yaw + DAngle180); + pp->actor->spr.Angles.Yaw = lActor->spr.Angles.Yaw + DAngle180; } } } @@ -3823,7 +3823,7 @@ bool PlayerOnLadder(PLAYER* pp) // the sprite pp->LadderPosition = lActor->spr.pos + npos; - pp->Angles.setYaw(lActor->spr.Angles.Yaw + DAngle180); + pp->actor->spr.Angles.Yaw = lActor->spr.Angles.Yaw + DAngle180; return true; } @@ -5343,7 +5343,7 @@ void DoPlayerStopOperate(PLAYER* pp) if (pp->sop_remote) { DSWActor* rsp = pp->remoteActor; - pp->Angles.setYaw(rsp && TEST_BOOL1(rsp) ? rsp->spr.Angles.Yaw : (pp->sop_remote->pmid.XY() - pp->actor->spr.pos.XY()).Angle(), true); + pp->actor->PrevAngles.Yaw = pp->actor->spr.Angles.Yaw = rsp && TEST_BOOL1(rsp) ? rsp->spr.Angles.Yaw : (pp->sop_remote->pmid.XY() - pp->actor->spr.pos.XY()).Angle(); } if (pp->sop_control) @@ -6985,7 +6985,7 @@ void domovethings(void) // auto tracking mode for single player multi-game if (numplayers <= 1 && PlayerTrackingMode && pnum == screenpeek && screenpeek != myconnectindex) { - Player[screenpeek].Angles.setYaw((Player[myconnectindex].actor->spr.pos.XY() - Player[screenpeek].actor->spr.pos.XY()).Angle()); + Player[screenpeek].actor->spr.Angles.Yaw = (Player[myconnectindex].actor->spr.pos.XY() - Player[screenpeek].actor->spr.pos.XY()).Angle(); } if (!(pp->Flags & PF_DEAD))