From ed6adc33c4581aa125b06ff05f773f6e710de5c3 Mon Sep 17 00:00:00 2001 From: Christoph Oelckers Date: Sat, 20 Aug 2022 10:26:39 +0200 Subject: [PATCH] - floatified SO rotations. --- source/games/sw/src/track.cpp | 20 +++++++++----------- 1 file changed, 9 insertions(+), 11 deletions(-) diff --git a/source/games/sw/src/track.cpp b/source/games/sw/src/track.cpp index 836a66c3a..a7e18cb46 100644 --- a/source/games/sw/src/track.cpp +++ b/source/games/sw/src/track.cpp @@ -1572,6 +1572,7 @@ void MovePlayer(PLAYER* pp, SECTOR_OBJECT* sop, int nx, int ny) void MovePoints(SECTOR_OBJECT* sop, short delta_ang, int nx, int ny) { + auto deltaangle = DAngle::fromBuild(delta_ang); int j; vec2_t rxy; int pnum; @@ -1726,29 +1727,26 @@ PlayerPart: if ((actor->sector()->firstWall()->extra & WALLFX_LOOP_DONT_SPIN)) continue; - auto pos = actor->int_pos(); if ((actor->sector()->firstWall()->extra & WALLFX_LOOP_REVERSE_SPIN)) { - rotatepoint(sop->int_pmid().vec2, actor->int_pos().vec2, -delta_ang, &pos.vec2); - actor->set_int_ang(NORM_ANGLE(actor->int_ang() - delta_ang)); + actor->spr.pos.XY() = rotatepoint(sop->pmid.XY(), actor->spr.pos.XY(), -deltaangle); + actor->spr.angle -= deltaangle; } else { - rotatepoint(sop->int_pmid().vec2, actor->int_pos().vec2, delta_ang, &pos.vec2); - actor->set_int_ang(NORM_ANGLE(actor->int_ang() + delta_ang)); + actor->spr.pos.XY() = rotatepoint(sop->pmid.XY(), actor->spr.pos.XY(), deltaangle); + actor->spr.angle += deltaangle; } - actor->set_int_pos(pos); - + actor->norm_ang(); } else { if (!(sop->flags & SOBJ_DONT_ROTATE)) { // NOT part of a sector - independant of any sector - auto pos = actor->int_pos(); - rotatepoint(sop->int_pmid().vec2, actor->int_pos().vec2, delta_ang, &pos.vec2); - actor->set_int_ang(NORM_ANGLE(actor->int_ang() + delta_ang)); - actor->set_int_pos(pos); + actor->spr.pos.XY() = rotatepoint(sop->pmid.XY(), actor->spr.pos.XY(), deltaangle); + actor->spr.angle += deltaangle; + actor->norm_ang(); } // Does not necessarily move with the sector so must accout for