diff --git a/source/core/coreactor.h b/source/core/coreactor.h index 5847d7083..b7ae2ab7d 100644 --- a/source/core/coreactor.h +++ b/source/core/coreactor.h @@ -122,6 +122,11 @@ public: spr.__int_angle += int16_t(a); } + void norm_ang() + { + spr.__int_angle &= 2047; + } + // Same as above but with invertex y and z axes to match the renderer's coordinate system. DVector3 render_pos() const { diff --git a/source/core/maptypes.h b/source/core/maptypes.h index 2092cbc6b..05fbab985 100644 --- a/source/core/maptypes.h +++ b/source/core/maptypes.h @@ -503,6 +503,11 @@ struct spritetypebase __int_angle = int16_t(a); } + void add_int_ang(int a) + { + __int_angle += int16_t(a); + } + void copy_ang(const spritetypebase* other) { __int_angle = other->int_ang(); diff --git a/source/games/blood/src/nnexts.cpp b/source/games/blood/src/nnexts.cpp index 42b89ae76..2d2ca4899 100644 --- a/source/games/blood/src/nnexts.cpp +++ b/source/games/blood/src/nnexts.cpp @@ -3463,7 +3463,7 @@ void useSectorWindGen(DBloodActor* sourceactor, sectortype* pSector) } } else if (sourceactor->spr.cstat & CSTAT_SPRITE_MOVE_FORWARD) sourceactor->add_int_ang(sourceactor->xspr.data4); - else if (sourceactor->spr.cstat & CSTAT_SPRITE_MOVE_REVERSE) sourceactor->spr.__int_angle -= sourceactor->xspr.data4; + else if (sourceactor->spr.cstat & CSTAT_SPRITE_MOVE_REVERSE) sourceactor->add_int_ang(-sourceactor->xspr.data4); else if (sourceactor->xspr.sysData1 == 0) { if ((ang += sourceactor->xspr.data4) >= kAng180) sourceactor->xspr.sysData1 = 1; @@ -8918,7 +8918,7 @@ void aiPatrolThink(DBloodActor* actor) if (!(markeractor->spr.flags & kModernTypeFlag4)) { actor->xspr.goalAng = ((!(markeractor->spr.flags & kModernTypeFlag8) && actor->xspr.unused2) ? markeractor->int_ang() + kAng180 : markeractor->int_ang()) & 2047; - if ((int)actor->spr.__int_angle != (int)actor->xspr.goalAng) // let the enemy play move animation while turning + if ((int)actor->int_ang() != (int)actor->xspr.goalAng) // let the enemy play move animation while turning return; } diff --git a/source/games/blood/src/sfx.cpp b/source/games/blood/src/sfx.cpp index c4dbed39d..525f989a9 100644 --- a/source/games/blood/src/sfx.cpp +++ b/source/games/blood/src/sfx.cpp @@ -118,7 +118,7 @@ void GameInterface::UpdateSounds() if (gMe->actor) { - listener.angle = -gMe->actor->spr.__int_angle * float(BAngRadian); // Build uses a period of 2048. + listener.angle = -gMe->actor->spr.int_ang() * float(BAngRadian); // Build uses a period of 2048. listener.velocity.Zero(); listener.position = GetSoundPos(gMe->actor->int_pos()); listener.valid = true; diff --git a/source/games/blood/src/view.cpp b/source/games/blood/src/view.cpp index ede8a2dc2..c927bb79a 100644 --- a/source/games/blood/src/view.cpp +++ b/source/games/blood/src/view.cpp @@ -854,7 +854,7 @@ FString GameInterface::GetCoordString() FString out; out.Format("pos= %d, %d, %d - angle = %2.3f", - gMe->actor->int_pos().X, gMe->actor->int_pos().Y, gMe->actor->int_pos().Z, gMe->actor->spr.__int_angle * BAngToDegree); + gMe->actor->int_pos().X, gMe->actor->int_pos().Y, gMe->actor->int_pos().Z, gMe->actor->spr.int_ang() * BAngToDegree); return out; } diff --git a/source/games/duke/src/actors.cpp b/source/games/duke/src/actors.cpp index 820bb8cc3..27c93937f 100644 --- a/source/games/duke/src/actors.cpp +++ b/source/games/duke/src/actors.cpp @@ -2709,7 +2709,7 @@ void handle_se00(DDukeActor* actor) } act2->add_int_ang((l * q)); - act2->spr.__int_angle &= 2047; + act2->norm_ang(); act2->add_int_z(zchange); @@ -3722,7 +3722,7 @@ void handle_se13(DDukeActor* actor) } - if (actor->temp_data[2] == 4 && actor->spr.__int_angle != 512) + if (actor->temp_data[2] == 4 && actor->int_ang() != 512) for (int x = 0; x < 7; x++) RANDOMSCRAP(actor); } @@ -4472,7 +4472,7 @@ void handle_se32(DDukeActor *actor) if (actor->temp_data[2] == 1) // Retract { - if (actor->spr.__int_angle != 1536) + if (actor->int_ang() != 1536) { if (abs(sc->int_ceilingz() - actor->int_pos().Z) < (actor->spr.yvel << 1)) { @@ -4660,7 +4660,7 @@ void handle_se31(DDukeActor* actor, bool choosedir) if (actor->temp_data[2] == 1) // Retract { - if (actor->spr.__int_angle != 1536) + if (actor->int_ang() != 1536) { if (abs(sec->int_floorz() - actor->int_pos().Z) < actor->spr.yvel) { @@ -4915,7 +4915,7 @@ int dodge(DDukeActor* actor) d = bxvect * by - byvect * bx; if (abs(d) < 65536 * 64) { - actor->spr.__int_angle -= 512 + (krand() & 1024); + actor->add_int_ang(-(512 + (krand() & 1024))); return 1; } } @@ -5041,7 +5041,7 @@ void alterang(int ang, DDukeActor* actor, int playernum) j = 128 - (krand() & 256); actor->add_int_ang(j); if (hits(actor) < 844) - actor->spr.__int_angle -= j; + actor->add_int_ang(-j); } } else if (ticselapsed > 18 && ticselapsed < 26) // choose diff --git a/source/games/duke/src/actors_d.cpp b/source/games/duke/src/actors_d.cpp index f7b7ef16a..cd2432f68 100644 --- a/source/games/duke/src/actors_d.cpp +++ b/source/games/duke/src/actors_d.cpp @@ -2382,8 +2382,8 @@ static void greenslime(DDukeActor *actor) if (actor->spr.xvel < 32) actor->spr.xvel += 4; actor->spr.xvel = 64 - bcos(actor->temp_data[1], -9); - actor->add_int_ang( - getincangle(actor->int_ang(), getangle(ps[p].pos.XY() - actor->spr.pos.XY())) >> 3); + actor->add_int_ang(getincangle(actor->int_ang(), + getangle(ps[p].pos.XY() - actor->spr.pos.XY())) >> 3); // TJR } diff --git a/source/games/duke/src/actors_r.cpp b/source/games/duke/src/actors_r.cpp index 2dac80c87..6e9ed6389 100644 --- a/source/games/duke/src/actors_r.cpp +++ b/source/games/duke/src/actors_r.cpp @@ -943,12 +943,12 @@ static void chickenarrow(DDukeActor* actor) if (ang3 > 1023) actor->add_int_ang(51); else - actor->spr.__int_angle -= 51; + actor->add_int_ang(-51); } else if (ang2 > 100) { if (ang3 > 1023) - actor->spr.__int_angle -= 51; + actor->add_int_ang(-51); else actor->add_int_ang(51); } diff --git a/source/games/duke/src/animatesprites_d.cpp b/source/games/duke/src/animatesprites_d.cpp index add4521e6..dae64df5c 100644 --- a/source/games/duke/src/animatesprites_d.cpp +++ b/source/games/duke/src/animatesprites_d.cpp @@ -219,7 +219,7 @@ void animatesprites_d(tspriteArray& tsprites, int x, int y, int a, int smoothrat t->xrepeat = 0; else { - t->__int_angle = getangle(x - t->int_pos().X, y - t->int_pos().Y); + t->set_int_ang(getangle(x - t->int_pos().X, y - t->int_pos().Y)); t->pos.X = OwnerAc->spr.pos.X + buildang(t->int_ang()).fcos(); t->pos.Y = OwnerAc->spr.pos.Y + buildang(t->int_ang()).fsin(); } @@ -705,7 +705,7 @@ void animatesprites_d(tspriteArray& tsprites, int x, int y, int a, int smoothrat t->picnum = OwnerAc->dispicnum; t->pal = OwnerAc->spr.pal; t->shade = OwnerAc->spr.shade; - t->__int_angle = OwnerAc->int_ang(); + t->set_int_ang(OwnerAc->int_ang()); t->cstat = CSTAT_SPRITE_TRANSLUCENT | OwnerAc->spr.cstat; } } diff --git a/source/games/duke/src/animatesprites_r.cpp b/source/games/duke/src/animatesprites_r.cpp index 62463b168..3ab4a27f9 100644 --- a/source/games/duke/src/animatesprites_r.cpp +++ b/source/games/duke/src/animatesprites_r.cpp @@ -213,7 +213,7 @@ void animatesprites_r(tspriteArray& tsprites, int x, int y, int a, int smoothrat t->xrepeat = 0; else { - t->__int_angle = getangle(x - t->int_pos().X, y - t->int_pos().Y); + t->set_int_ang(getangle(x - t->int_pos().X, y - t->int_pos().Y)); t->pos.X = OwnerAc->spr.pos.X + buildang(t->int_ang()).fcos(); t->pos.Y = OwnerAc->spr.pos.Y + buildang(t->int_ang()).fsin(); } @@ -938,7 +938,7 @@ void animatesprites_r(tspriteArray& tsprites, int x, int y, int a, int smoothrat t->picnum = OwnerAc->dispicnum; t->pal = OwnerAc->spr.pal; t->shade = OwnerAc->spr.shade; - t->__int_angle = OwnerAc->int_ang(); + t->set_int_ang(OwnerAc->int_ang()); t->cstat = CSTAT_SPRITE_TRANSLUCENT | OwnerAc->spr.cstat; } } diff --git a/source/games/duke/src/bowling.cpp b/source/games/duke/src/bowling.cpp index bf49d2141..55a3c3c03 100644 --- a/source/games/duke/src/bowling.cpp +++ b/source/games/duke/src/bowling.cpp @@ -190,7 +190,7 @@ void resetpins(sectortype* sect) { spawned->spr.clipdist = (1 + (krand() % 1)) * 16 + 32; } - spawned->spr.__int_angle -= ((krand() & 32) - (krand() & 64)) & 2047; + spawned->add_int_ang(-(((krand() & 32) - (krand() & 64)) & 2047)); } } if (a2->spr.picnum == 280) diff --git a/source/games/duke/src/game_misc.cpp b/source/games/duke/src/game_misc.cpp index fc44399f0..703a2edd2 100644 --- a/source/games/duke/src/game_misc.cpp +++ b/source/games/duke/src/game_misc.cpp @@ -567,7 +567,7 @@ bool GameInterface::DrawAutomapPlayer(int mx, int my, int cposx, int cposy, int int xx = twod->GetWidth() / 2. + x1 / 4096.; int yy = twod->GetHeight() / 2. + y1 / 4096.; - daang = ((!SyncInput() ? act->spr.__int_angle : act->interpolatedang(smoothratio)) - cang) & 2047; + daang = ((!SyncInput() ? act->int_ang() : act->interpolatedang(smoothratio)) - cang) & 2047; if (p == screenpeek || ud.coop == 1) { diff --git a/source/games/duke/src/gameexec.cpp b/source/games/duke/src/gameexec.cpp index f70e9912c..c1e883bcc 100644 --- a/source/games/duke/src/gameexec.cpp +++ b/source/games/duke/src/gameexec.cpp @@ -1416,14 +1416,14 @@ static int ifcanshoottarget(DDukeActor *actor, int g_p, int g_x) j = 0; else { - actor->add_int_ang(angdif); j = hitasprite(actor, &hit); actor->spr.__int_angle -= angdif; + actor->add_int_ang(angdif); j = hitasprite(actor, &hit); actor->add_int_ang(-angdif); if (j > sclip) { if (hit != nullptr && hit->spr.picnum == actor->spr.picnum) j = 0; else { - actor->spr.__int_angle -= angdif; j = hitasprite(actor, &hit); actor->add_int_ang(angdif); + actor->add_int_ang(-angdif); j = hitasprite(actor, &hit); actor->add_int_ang(angdif); if (j > 768) { if (hit != nullptr && hit->spr.picnum == actor->spr.picnum) diff --git a/source/games/duke/src/player_d.cpp b/source/games/duke/src/player_d.cpp index ec4bedb52..e69b7348b 100644 --- a/source/games/duke/src/player_d.cpp +++ b/source/games/duke/src/player_d.cpp @@ -789,7 +789,7 @@ static void shootrpg(DDukeActor *actor, int p, int sx, int sy, int sz, int sa, i } spawned->add_int_pos({ -xoffs, -yoffs, 0 }); - spawned->spr.__int_angle -= aoffs; + spawned->add_int_ang(-aoffs); spawned->spr.xrepeat = 24; spawned->spr.yrepeat = 24; @@ -2375,8 +2375,7 @@ static void operateweapon(int snum, ESyncBits actions) auto j = spawn(pact, SHELL); if (j) { - j->add_int_ang(1024); - j->spr.__int_angle &= 2047; + j->set_int_ang((j->int_ang() + 1024) & 2047); j->spr.xvel += 32; j->spr.pos.Z += 3; ssp(j, CLIPMASK0); diff --git a/source/games/duke/src/player_r.cpp b/source/games/duke/src/player_r.cpp index 0a5727f3b..92d1dbc39 100644 --- a/source/games/duke/src/player_r.cpp +++ b/source/games/duke/src/player_r.cpp @@ -2977,8 +2977,7 @@ static void operateweapon(int snum, ESyncBits actions, sectortype* psectp) if (j) { - j->add_int_ang(1024); - j->spr.__int_angle &= 2047; + j->set_int_ang((j->int_ang() + 1024) & 2047); j->spr.xvel += 32; j->spr.pos.Z += 3; ssp(j, CLIPMASK0); diff --git a/source/games/duke/src/player_w.cpp b/source/games/duke/src/player_w.cpp index 8d2fb02c8..d0ed9299a 100644 --- a/source/games/duke/src/player_w.cpp +++ b/source/games/duke/src/player_w.cpp @@ -125,8 +125,7 @@ void DoSpawn(player_struct *p, int snum) else if((aplWeaponFlags(p->curr_weapon, snum) & WEAPON_FLAG_SPAWNTYPE3 ) ) { // like chaingun shells - j->add_int_ang(1024); - j->spr.__int_angle &= 2047; + j->set_int_ang((j->int_ang() + 1024) & 2047); j->spr.xvel += 32; j->add_int_z(3<<8); ssp(j,CLIPMASK0); diff --git a/source/games/duke/src/sectors.cpp b/source/games/duke/src/sectors.cpp index b50cc9d2f..7f0ca37dd 100644 --- a/source/games/duke/src/sectors.cpp +++ b/source/games/duke/src/sectors.cpp @@ -927,7 +927,7 @@ static void handle_st25(sectortype* sptr, DDukeActor* actor) if (act3->spr.lotag == 15) { act3->sector()->lotag ^= 0x8000; // Toggle the open or close - act3->add_int_ang(1024; + act3->add_int_ang(1024); if (act3->temp_data[4]) callsound(act3->sector(), act3); callsound(act3->sector(), act3); if (act3->sector()->lotag & 0x8000) act3->temp_data[4] = 1; diff --git a/source/games/duke/src/sectors_d.cpp b/source/games/duke/src/sectors_d.cpp index fbbf16f02..0530135e4 100644 --- a/source/games/duke/src/sectors_d.cpp +++ b/source/games/duke/src/sectors_d.cpp @@ -1049,7 +1049,7 @@ void checkhitsprite_d(DDukeActor* targ, DDukeActor* proj) if (proj->spr.picnum == QUEBALL || proj->spr.picnum == STRIPEBALL) { proj->spr.xvel = (targ->spr.xvel >> 1) + (targ->spr.xvel >> 2); - proj->spr.__int_angle -= (targ->int_ang() << 1) + 1024; + proj->add_int_ang(-((targ->int_ang() << 1) + 1024)); targ->set_int_ang(getangle(targ->int_pos().X - proj->int_pos().X, targ->int_pos().Y - proj->int_pos().Y) - 512); if (S_CheckSoundPlaying(POOLBALLHIT) < 2) S_PlayActorSound(POOLBALLHIT, targ); diff --git a/source/games/duke/src/sectors_r.cpp b/source/games/duke/src/sectors_r.cpp index 23149475b..11d74c87c 100644 --- a/source/games/duke/src/sectors_r.cpp +++ b/source/games/duke/src/sectors_r.cpp @@ -2063,7 +2063,7 @@ void checkhitsprite_r(DDukeActor* targ, DDukeActor* proj) break; case BOWLINGBALL: proj->spr.xvel = (targ->spr.xvel >> 1) + (targ->spr.xvel >> 2); - proj->spr.__int_angle -= (krand() & 16); + proj->add_int_ang(-(krand() & 16)); S_PlayActorSound(355, targ); break; @@ -2076,7 +2076,7 @@ void checkhitsprite_r(DDukeActor* targ, DDukeActor* proj) if (proj->spr.picnum == QUEBALL || proj->spr.picnum == STRIPEBALL) { proj->spr.xvel = (targ->spr.xvel >> 1) + (targ->spr.xvel >> 2); - proj->spr.__int_angle -= (targ->int_ang() << 1) + 1024; + proj->add_int_ang(-((targ->int_ang() << 1) + 1024)); targ->set_int_ang(getangle(targ->int_pos().X - proj->int_pos().X, targ->int_pos().Y - proj->int_pos().Y) - 512); if (S_CheckSoundPlaying(POOLBALLHIT) < 2) S_PlayActorSound(POOLBALLHIT, targ); @@ -2084,14 +2084,14 @@ void checkhitsprite_r(DDukeActor* targ, DDukeActor* proj) else if (proj->spr.picnum == BOWLINGPIN || proj->spr.picnum == BOWLINGPIN + 1) { proj->spr.xvel = (targ->spr.xvel >> 1) + (targ->spr.xvel >> 2); - proj->spr.__int_angle -= ((targ->int_ang() << 1) + krand()) & 64; + proj->add_int_ang(-(((targ->int_ang() << 1) + krand()) & 64)); targ->set_int_ang((targ->int_ang() + krand()) & 16); S_PlayActorSound(355, targ); } else if (proj->spr.picnum == HENSTAND || proj->spr.picnum == HENSTAND + 1) { proj->spr.xvel = (targ->spr.xvel >> 1) + (targ->spr.xvel >> 2); - proj->spr.__int_angle -= ((targ->int_ang() << 1) + krand()) & 16; + proj->add_int_ang(-(((targ->int_ang() << 1) + krand()) & 16)); targ->set_int_ang((targ->int_ang() + krand()) & 16); S_PlayActorSound(355, targ); } diff --git a/source/games/duke/src/spawn.cpp b/source/games/duke/src/spawn.cpp index 0efcf698d..7be8e4890 100644 --- a/source/games/duke/src/spawn.cpp +++ b/source/games/duke/src/spawn.cpp @@ -833,7 +833,7 @@ void spawneffector(DDukeActor* actor, TArray* actors) case SE_31_FLOOR_RISE_FALL: actor->temp_data[1] = sectp->int_floorz(); // actor->temp_data[2] = actor->spr.hitag; - if (actor->spr.__int_angle != 1536) sectp->setfloorz(actor->spr.pos.Z); + if (actor->int_ang() != 1536) sectp->setfloorz(actor->spr.pos.Z); for (auto& wal : wallsofsector(sectp)) if (wal.hitag == 0) wal.hitag = 9999; @@ -844,7 +844,7 @@ void spawneffector(DDukeActor* actor, TArray* actors) case SE_32_CEILING_RISE_FALL: actor->temp_data[1] = sectp->int_ceilingz(); actor->temp_data[2] = actor->spr.hitag; - if (actor->spr.__int_angle != 1536) sectp->setceilingz(actor->spr.pos.Z); + if (actor->int_ang() != 1536) sectp->setceilingz(actor->spr.pos.Z); for (auto& wal : wallsofsector(sectp)) if (wal.hitag == 0) wal.hitag = 9999; diff --git a/source/games/exhumed/src/fish.cpp b/source/games/exhumed/src/fish.cpp index d5bd0e1a3..f78deff2a 100644 --- a/source/games/exhumed/src/fish.cpp +++ b/source/games/exhumed/src/fish.cpp @@ -188,7 +188,7 @@ void BuildFish(DExhumedActor* pActor, int x, int y, int z, sectortype* pSector, void IdleFish(DExhumedActor* pActor, int edx) { pActor->add_int_ang((256 - RandomSize(9)) + 1024); - pActor->spr.__int_angle &= kAngleMask; + pActor->norm_ang(); pActor->spr.xvel = bcos(pActor->int_ang(), -8); pActor->spr.yvel = bsin(pActor->int_ang(), -8); diff --git a/source/games/exhumed/src/init.cpp b/source/games/exhumed/src/init.cpp index 0060ea2c8..e0c2bbacb 100644 --- a/source/games/exhumed/src/init.cpp +++ b/source/games/exhumed/src/init.cpp @@ -628,7 +628,7 @@ void ProcessSpriteTag(DExhumedActor* pActor, int nLotag, int nHitag) { auto pSector = pActor->sector(); pSector->Speed = nSpeed; - pSector->Flag |= pActor->int_ang(); + pSector->Flag |= pActor->spr.__int_angle; DeleteActor(pActor); return; diff --git a/source/games/exhumed/src/player.cpp b/source/games/exhumed/src/player.cpp index 5319b1691..52814e0d9 100644 --- a/source/games/exhumed/src/player.cpp +++ b/source/games/exhumed/src/player.cpp @@ -265,7 +265,7 @@ void RestartPlayer(int nPlayer) pActor->set_int_pos(nNStartSprite->int_pos()); ChangeActorSect(pActor, nNStartSprite->sector()); - plr->angle.ang = buildang(nNStartSprite->spr.__int_angle&kAngleMask); + plr->angle.ang = buildang(nNStartSprite->int_ang() & kAngleMask); pActor->set_int_ang(plr->angle.ang.asbuild()); floorsprt = insertActor(pActor->sector(), 0); diff --git a/source/games/exhumed/src/queen.cpp b/source/games/exhumed/src/queen.cpp index f73e94fe8..c8fc8df70 100644 --- a/source/games/exhumed/src/queen.cpp +++ b/source/games/exhumed/src/queen.cpp @@ -624,8 +624,8 @@ void AIQueenEgg::Tick(RunListEvent* ev) } [[fallthrough]]; case kHitWall: - pActor->add_int_ang((RandomSize(9) + 768); - pActor->spr.__int_angle &= kAngleMask; + pActor->set_int_ang((RandomSize(9) + 768)); + pActor->norm_ang(); pActor->spr.xvel = bcos(pActor->int_ang(), -3); pActor->spr.yvel = bsin(pActor->int_ang(), -3); pActor->spr.zvel = -RandomSize(5); @@ -907,7 +907,7 @@ void AIQueenHead::Tick(RunListEvent* ev) D3PlayFX(StaticSound[kSoundQTail] | 0x2000, pActor); pActor->add_int_ang(RandomSize(9) + 768); - pActor->spr.__int_angle &= kAngleMask; + pActor->norm_ang(); pActor->spr.zvel = (-20) - RandomSize(6); @@ -1304,7 +1304,7 @@ void AIQueen::Tick(RunListEvent* ev) [[fallthrough]]; case 0x8000: pActor->add_int_ang(256); - pActor->spr.__int_angle &= kAngleMask; + pActor->norm_ang(); SetQueenSpeed(pActor, si); break; diff --git a/source/games/exhumed/src/scorp.cpp b/source/games/exhumed/src/scorp.cpp index 200fb8414..1729b7683 100644 --- a/source/games/exhumed/src/scorp.cpp +++ b/source/games/exhumed/src/scorp.cpp @@ -411,7 +411,7 @@ void AIScorp::Effect(RunListEvent* ev, DExhumedActor* pTarget, int mode) { PlotCourseToSprite(pActor, pTarget); pActor->add_int_ang(RandomSize(7) - 63); - pActor->spr.__int_angle &= kAngleMask; + pActor->norm_ang(); pActor->spr.xvel = bcos(pActor->int_ang()); pActor->spr.yvel = bsin(pActor->int_ang()); diff --git a/source/games/exhumed/src/sequence.cpp b/source/games/exhumed/src/sequence.cpp index 88a7b3057..7233e7df7 100644 --- a/source/games/exhumed/src/sequence.cpp +++ b/source/games/exhumed/src/sequence.cpp @@ -587,7 +587,7 @@ int seq_PlotSequence(int nSprite, int16_t edx, int16_t nFrame, int16_t ecx) tsp->pal = pTSprite->pal; tsp->xrepeat = pTSprite->xrepeat; tsp->yrepeat = pTSprite->yrepeat; - tsp->__int_angle = pTSprite->int_ang(); + tsp->copy_ang(pTSprite); tsp->ownerActor = pTSprite->ownerActor; tsp->sectp = pTSprite->sectp; tsp->cstat = pTSprite->cstat |= CSTAT_SPRITE_YCENTER; diff --git a/source/games/exhumed/src/view.cpp b/source/games/exhumed/src/view.cpp index 218b99a72..879a5a3e7 100644 --- a/source/games/exhumed/src/view.cpp +++ b/source/games/exhumed/src/view.cpp @@ -74,7 +74,7 @@ static void analyzesprites(tspriteArray& tsprites, int x, int y, int z, double c { // interpolate sprite position pTSprite->pos = pTSprite->ownerActor->interpolatedvec3(smoothratio); - pTSprite->__int_angle = pTSprite->ownerActor->interpolatedang(smoothratio); + pTSprite->set_int_ang(pTSprite->ownerActor->interpolatedang(smoothratio)); } } diff --git a/source/games/exhumed/src/wasp.cpp b/source/games/exhumed/src/wasp.cpp index 074c05f0e..52f0af036 100644 --- a/source/games/exhumed/src/wasp.cpp +++ b/source/games/exhumed/src/wasp.cpp @@ -157,7 +157,7 @@ void AIWasp::Damage(RunListEvent* ev) pActor->nAction = 1; pActor->add_int_ang(RandomSize(9) + 768); - pActor->spr.__int_angle &= kAngleMask; + pActor->norm_ang(); pActor->nVel = 3000; @@ -305,7 +305,7 @@ void AIWasp::Tick(RunListEvent* ev) if (bVal) { pActor->add_int_ang(RandomSize(9) + 768); - pActor->spr.__int_angle &= kAngleMask; + pActor->norm_ang(); pActor->spr.zvel = (-20) - RandomSize(6); pActor->nAction = 1; diff --git a/source/games/sw/src/bunny.cpp b/source/games/sw/src/bunny.cpp index f99543471..3bf77335b 100644 --- a/source/games/sw/src/bunny.cpp +++ b/source/games/sw/src/bunny.cpp @@ -1200,7 +1200,7 @@ DSWActor* BunnyHatch2(DSWActor* actor) actorNew->spr.xrepeat = actorNew->spr.yrepeat = 64; actorNew->spr.xvel = 150 + RandomRange(1000); actorNew->user.Health = 1; // Easy to pop. Like shootn' skeet. - actorNew->spr.__int_angle -= RandomRange(128); + actorNew->add_int_ang(-RandomRange(128)); actorNew->add_int_ang(RandomRange(128)); } else diff --git a/source/games/sw/src/draw.cpp b/source/games/sw/src/draw.cpp index 35bb2242b..ebd6234b2 100644 --- a/source/games/sw/src/draw.cpp +++ b/source/games/sw/src/draw.cpp @@ -669,7 +669,7 @@ void analyzesprites(tspriteArray& tsprites, int viewx, int viewy, int viewz, int { tsp->picnum = DART_PIC; - tsp->__int_angle = NORM_ANGLE(tsp->int_ang() - 512 - 24); + tsp->set_int_ang(NORM_ANGLE(tsp->int_ang() - 512 - 24)); tsp->xrepeat = tsp->yrepeat = DART_REPEAT; tsp->cstat |= (CSTAT_SPRITE_ALIGNMENT_WALL); } @@ -733,7 +733,7 @@ void analyzesprites(tspriteArray& tsprites, int viewx, int viewy, int viewz, int if (tsp->statnum == STAT_STAR_QUEUE) { tsp->picnum = DART_PIC; - tsp->__int_angle = NORM_ANGLE(tsp->int_ang() - 512); + tsp->set_int_ang(NORM_ANGLE(tsp->int_ang() - 512)); tsp->xrepeat = tsp->yrepeat = DART_REPEAT; tsp->cstat |= (CSTAT_SPRITE_ALIGNMENT_WALL); } @@ -775,7 +775,7 @@ void analyzesprites(tspriteArray& tsprites, int viewx, int viewy, int viewz, int pos.Z = tsp->int_pos().Z + pp->si.Z; tsp->set_int_pos(pos); - tsp->__int_angle = pp->siang; + tsp->set_int_ang(pp->siang); //continue; } else @@ -792,7 +792,7 @@ void analyzesprites(tspriteArray& tsprites, int viewx, int viewy, int viewz, int tsp->add_int_x(-MulScale(pp->pos.X - pp->opos.X, sr, 16)); tsp->add_int_y(-MulScale(pp->pos.Y - pp->opos.Y, sr, 16)); tsp->add_int_z(-MulScale(pp->pos.Z - pp->opos.Z, sr, 16)); - tsp->__int_angle -= MulScale(pp->angle.ang.asbuild() - pp->angle.oang.asbuild(), sr, 16); + tsp->add_int_ang(-MulScale(pp->angle.ang.asbuild() - pp->angle.oang.asbuild(), sr, 16)); } } @@ -1654,7 +1654,7 @@ bool GameInterface::DrawAutomapPlayer(int mx, int my, int cposx, int cposy, int if (czoom > 192) { - daang = ((!SyncInput() ? actor->spr.__int_angle : actor->interpolatedang(smoothratio)) - cang) & 2047; + daang = ((!SyncInput() ? actor->int_ang() : actor->interpolatedang(smoothratio)) - cang) & 2047; // Special case tiles if (actor->spr.picnum == 3123) break; diff --git a/source/games/sw/src/interpso.cpp b/source/games/sw/src/interpso.cpp index ab82cc516..8e55c5869 100644 --- a/source/games/sw/src/interpso.cpp +++ b/source/games/sw/src/interpso.cpp @@ -376,7 +376,7 @@ void so_dointerpolations(int32_t smoothratio) // Stick at b continue; // target went poof. interp->data[i].bakipos = (interp->data[i].curelement == soi_sprang) ? - (double)actorofang->spr.__int_angle : + (double)actorofang->int_ang() : getvalue(interp->data[i]); } if (interp->tic == 0) // Only if the SO has just moved diff --git a/source/games/sw/src/skull.cpp b/source/games/sw/src/skull.cpp index 52fe04a65..6666460eb 100644 --- a/source/games/sw/src/skull.cpp +++ b/source/games/sw/src/skull.cpp @@ -284,7 +284,7 @@ int DoSkullBeginDeath(DSWActor* actor) if (num_ord > 3) num_ord = 3; for (i=0; iset_int_ang(NORM_ANGLE(actor->spr.__int_angle+(i*1024))); + actor->set_int_ang(NORM_ANGLE(actor->int_ang() + (i*1024))); InitSpriteChemBomb(actor); } break; @@ -664,7 +664,7 @@ int DoBettyBeginDeath(DSWActor* actor) if (num_ord > 3) num_ord = 3; for (i=0; iset_int_ang(NORM_ANGLE(actor->spr.__int_angle+(i*1024))); + actor->set_int_ang(NORM_ANGLE(actor->int_ang() + (i*1024))); InitSpriteChemBomb(actor); } break; diff --git a/source/games/sw/src/weapon.cpp b/source/games/sw/src/weapon.cpp index 4f44ee9a5..eef8914e4 100644 --- a/source/games/sw/src/weapon.cpp +++ b/source/games/sw/src/weapon.cpp @@ -7678,7 +7678,7 @@ int MissileSeek(DSWActor* actor, int16_t delay_tics, int16_t aware_range/*, int1 delta_ang = -32; } - actor->spr.__int_angle -= delta_ang; + actor->add_int_ang(-delta_ang); zh = ActorZOfTop(actor) + (ActorSizeZ(actor) >> 2); @@ -7744,7 +7744,7 @@ int ComboMissileSeek(DSWActor* actor, int16_t delay_tics, int16_t aware_range/*, delta_ang = -32; } - actor->spr.__int_angle -= delta_ang; + actor->add_int_ang(-delta_ang); actor->user.change.X = MOVEx(actor->spr.xvel, actor->int_ang()); actor->user.change.Y = MOVEy(actor->spr.xvel, actor->int_ang()); @@ -9670,8 +9670,8 @@ int SpawnCoolieExp(DSWActor* actor) actor->user.Counter = RandomRange(120); // This is the wait til birth time! zh = actor->int_pos().Z - ActorSizeZ(actor) + (ActorSizeZ(actor) >> 2); - nx = actor->int_pos().X + MOVEx(64, actor->spr.__int_angle+1024); - ny = actor->int_pos().Y + MOVEy(64, actor->spr.__int_angle+1024); + nx = actor->int_pos().X + MOVEx(64, actor->int_ang() + 1024); + ny = actor->int_pos().Y + MOVEy(64, actor->int_ang() + 1024); PlaySound(DIGI_COOLIEEXPLODE, actor, v3df_none); @@ -15066,7 +15066,7 @@ int BulletHitSprite(DSWActor* actor, DSWActor* hitActor, int hit_x, int hit_y, i if ((RANDOM_P2(1024<<5)>>5) < 256) { if (!hitActor->user.PlayerP) - SpawnBlood(hitActor, nullptr, NORM_ANGLE(actor->spr.__int_angle+1024),hit_x, hit_y, hit_z); + SpawnBlood(hitActor, nullptr, NORM_ANGLE(actor->int_ang() + 1024),hit_x, hit_y, hit_z); if (hitActor->user.ID != TRASHCAN && hitActor->user.ID != ZILLA_RUN_R0) QueueWallBlood(hitActor, actor->int_ang()); //QueueWallBlood needs bullet angle. }