From 50b4d8cc993ee82282533a48a6f29b0a432b0f27 Mon Sep 17 00:00:00 2001 From: Mitchell Richters Date: Sun, 15 Nov 2020 08:32:00 +1100 Subject: [PATCH] - buildutils: Replace `sintable[]` use within Duke's player.cpp with `bsin()`/`bcos()`. --- source/games/duke/src/player.cpp | 32 ++++++++++++++++---------------- 1 file changed, 16 insertions(+), 16 deletions(-) diff --git a/source/games/duke/src/player.cpp b/source/games/duke/src/player.cpp index a391ea62b..744024f36 100644 --- a/source/games/duke/src/player.cpp +++ b/source/games/duke/src/player.cpp @@ -95,8 +95,8 @@ void calcviewpitch(player_struct *p, double factor) int psectlotag = sector[psect].lotag; if (p->aim_mode == 0 && p->on_ground && psectlotag != ST_2_UNDERWATER && (sector[psect].floorstat & 2)) { - int x = p->posx + (sintable[(p->angle.ang.asbuild() + 512) & 2047] >> 5); - int y = p->posy + (sintable[p->angle.ang.asbuild() & 2047] >> 5); + int x = p->posx + p->angle.ang.bcos(-5); + int y = p->posy + p->angle.ang.bsin(-5); short tempsect = psect; updatesector(x, y, &tempsect); @@ -225,7 +225,7 @@ int hits(DDukeActor* actor) if (sp->picnum == TILE_APLAYER) zoff = (40 << 8); else zoff = 0; - hitscan(sp->x, sp->y, sp->z - zoff, sp->sectnum, sintable[(sp->ang + 512) & 2047], sintable[sp->ang & 2047], 0, §, &hw, &d, &sx, &sy, &sz, CLIPMASK1); + hitscan(sp->x, sp->y, sp->z - zoff, sp->sectnum, bcos(sp->ang), bsin(sp->ang), 0, §, &hw, &d, &sx, &sy, &sz, CLIPMASK1); return (FindDistance2D(sx - sp->x, sy - sp->y)); } @@ -247,7 +247,7 @@ int hitasprite(DDukeActor* actor, DDukeActor** hitsp) else if (sp->picnum == TILE_APLAYER) zoff = (39 << 8); else zoff = 0; - hitscan(sp->x, sp->y, sp->z - zoff, sp->sectnum, sintable[(sp->ang + 512) & 2047], sintable[sp->ang & 2047], 0, §, &hw, hitsp, &sx, &sy, &sz, CLIPMASK1); + hitscan(sp->x, sp->y, sp->z - zoff, sp->sectnum, bcos(sp->ang), bsin(sp->ang), 0, §, &hw, hitsp, &sx, &sy, &sz, CLIPMASK1); if (hw >= 0 && (wall[hw].cstat & 16) && badguy(actor)) return((1 << 30)); @@ -268,7 +268,7 @@ int hitawall(struct player_struct* p, int* hitw) DDukeActor* d; hitscan(p->posx, p->posy, p->posz, p->cursectnum, - sintable[(p->angle.ang.asbuild() + 512) & 2047], sintable[p->angle.ang.asbuild() & 2047], 0, §, &hitw1, &d, &sx, &sy, &sz, CLIPMASK0); + p->angle.ang.bcos(), p->angle.ang.bsin(), 0, §, &hitw1, &d, &sx, &sy, &sz, CLIPMASK0); *hitw = hitw1; return (FindDistance2D(sx - p->posx, sy - p->posy)); @@ -340,13 +340,13 @@ DDukeActor* aim(DDukeActor* actor, int aang) smax = 0x7fffffff; - dx1 = sintable[(a + 512 - aang) & 2047]; - dy1 = sintable[(a - aang) & 2047]; - dx2 = sintable[(a + 512 + aang) & 2047]; - dy2 = sintable[(a + aang) & 2047]; + dx1 = bcos(a - aang); + dy1 = bsin(a - aang); + dx2 = bcos(a + aang); + dy2 = bsin(a + aang); - dx3 = sintable[(a + 512) & 2047]; - dy3 = sintable[a & 2047]; + dx3 = bcos(a); + dy3 = bsin(a); for (k = 0; k < 4; k++) { @@ -1085,8 +1085,8 @@ void shootbloodsplat(DDukeActor* actor, int p, int sx, int sy, int sz, int sa, i hitscan(sx, sy, sz, sect, - sintable[(sa + 512) & 2047], - sintable[sa & 2047], zvel << 6, + bcos(sa), + bsin(sa), zvel << 6, &hitsect, &hitwall, &d, &hitx, &hity, &hitz, CLIPMASK1); // oh my... @@ -1147,8 +1147,8 @@ bool view(struct player_struct* pp, int* vx, int* vy, int* vz, short* vsectnum, short bakcstat, hitsect, hitwall, daang; DDukeActor* hitsprt; - nx = (sintable[(ang + 1536) & 2047] >> 4); - ny = (sintable[(ang + 1024) & 2047] >> 4); + nx = -bcos(ang, -4); + ny = -bsin(ang, -4); nz = q16horiz >> 9; sp = &pp->GetActor()->s; @@ -1174,7 +1174,7 @@ bool view(struct player_struct* pp, int* vx, int* vy, int* vz, short* vsectnum, daang = getangle(wall[wall[hitwall].point2].x - wall[hitwall].x, wall[wall[hitwall].point2].y - wall[hitwall].y); - i = nx * sintable[daang] + ny * sintable[(daang + 1536) & 2047]; + i = nx * bsin(daang) + ny * -bcos(daang); if (abs(nx) > abs(ny)) hx -= mulscale28(nx, i); else hy -= mulscale28(ny, i); }