- no need to use int_delta when all we want is the angle.

This commit is contained in:
Christoph Oelckers 2022-08-30 23:05:54 +02:00
parent 05a7fe8f36
commit 785575604b
18 changed files with 37 additions and 48 deletions

View file

@ -380,7 +380,6 @@ struct walltype
vec2_t wall_int_pos() const { return vec2_t(pos.X * worldtoint, pos.Y * worldtoint); };
vec2_t int_delta() const { return point2Wall()->wall_int_pos() - wall_int_pos(); }
vec2_t int_center() const { return(point2Wall()->wall_int_pos() + wall_int_pos()) / 2; }
void setPosFromMap(int x, int y) { pos = { x * maptoworld, y * maptoworld }; }

View file

@ -236,8 +236,7 @@ bool CheckProximityWall(walltype* pWall, int x, int y, int nDist)
int GetWallAngle(walltype* pWall)
{
auto delta = pWall->int_delta();
return getangle(delta.X, delta.Y);
return getangle(pWall->delta());
}
void GetWallNormal(walltype* pWall, int* pX, int* pY)

View file

@ -1263,7 +1263,7 @@ void bounce(DDukeActor* actor)
auto sectp = actor->sector();
int daang = getangle(sectp->firstWall()->int_delta());
int daang = getangle(sectp->firstWall()->delta());
int k, l;
if (actor->spr.pos.Z < (actor->floorz + actor->ceilingz) * 0.5)
@ -1472,7 +1472,7 @@ bool queball(DDukeActor *actor, int pocket, int queball, int stripeball)
if (j == kHitWall)
{
int k = getangle(coll.hitWall->int_delta());
int k = getangle(coll.hitWall->delta());
actor->set_int_ang(((k << 1) - actor->int_ang()) & 2047);
}
else if (j == kHitSprite)

View file

@ -1418,7 +1418,7 @@ static bool weaponhitwall(DDukeActor *proj, walltype* wal, const DVector3 &oldpo
(!isWorldTour() || proj->spr.picnum != FIREBALL) &&
(wal->overpicnum == MIRROR || wal->picnum == MIRROR))
{
int k = getangle(wal->int_delta());
int k = getangle(wal->delta());
proj->set_int_ang(((k << 1) - proj->int_ang()) & 2047);
proj->SetOwner(proj);
spawn(proj, TRANSPORTERSTAR);
@ -1437,7 +1437,7 @@ static bool weaponhitwall(DDukeActor *proj, walltype* wal, const DVector3 &oldpo
proj->spr.yvel--;
}
int k = getangle(wal->int_delta());
int k = getangle(wal->delta());
proj->set_int_ang(((k << 1) - proj->int_ang()) & 2047);
return true;
}
@ -2641,7 +2641,7 @@ static void heavyhbomb(DDukeActor *actor)
auto wal = coll.hitWall;
fi.checkhitwall(actor, wal, actor->spr.pos, actor->spr.picnum);
int k = getangle(wal->int_delta());
int k = getangle(wal->delta());
actor->set_int_ang(((k << 1) - actor->int_ang()) & 2047);
actor->spr.xvel >>= 1;

View file

@ -1051,7 +1051,7 @@ static bool weaponhitwall(DDukeActor *proj, walltype* wal, const DVector3& oldpo
if (proj->spr.picnum != RPG && (!isRRRA() || proj->spr.picnum != RPG2) && proj->spr.picnum != FREEZEBLAST && proj->spr.picnum != SPIT && proj->spr.picnum != SHRINKSPARK && (wal->overpicnum == MIRROR || wal->picnum == MIRROR))
{
int k = getangle(wal->int_delta());
int k = getangle(wal->delta());
proj->set_int_ang(((k << 1) - proj->int_ang()) & 2047);
proj->SetOwner(proj);
spawn(proj, TRANSPORTERSTAR);
@ -1074,7 +1074,7 @@ static bool weaponhitwall(DDukeActor *proj, walltype* wal, const DVector3& oldpo
proj->spr.yvel--;
}
int k = getangle(wal->int_delta());
int k = getangle(wal->delta());
proj->set_int_ang(((k << 1) - proj->int_ang()) & 2047);
return true;
}
@ -1109,7 +1109,7 @@ static bool weaponhitwall(DDukeActor *proj, walltype* wal, const DVector3& oldpo
proj->spr.yvel--;
}
int k = getangle(wal->int_delta());
int k = getangle(wal->delta());
proj->set_int_ang(((k << 1) - proj->int_ang()) & 2047);
return true;
}
@ -2430,7 +2430,7 @@ static void heavyhbomb(DDukeActor *actor)
auto wal = coll.hitWall;
fi.checkhitwall(actor, wal, actor->spr.pos, actor->spr.picnum);
int k = getangle(wal->int_delta());
int k = getangle(wal->delta());
if (actor->spr.picnum == CHEERBOMB)
{
@ -2570,7 +2570,7 @@ static int henstand(DDukeActor *actor)
{
if (coll.type == kHitWall)
{
int k = getangle(coll.hitWall->int_delta());
int k = getangle(coll.hitWall->delta());
actor->set_int_ang(((k << 1) - actor->int_ang()) & 2047);
}
else if (coll.type == kHitSprite)

View file

@ -1057,8 +1057,7 @@ void shootbloodsplat(DDukeActor* actor, int p, int sx, int sy, int sz, int sa, i
if (spawned)
{
spawned->spr.xvel = -12;
auto delta = hit.hitWall->int_delta();
spawned->set_int_ang(getangle(-delta.X, -delta.Y) + 512); // note the '-' sign here!
spawned->set_int_ang(getangle(-hit.hitWall->delta()) + 512); // note the '-' sign here!
spawned->spr.pos = hit.hitpos;
spawned->spr.cstat |= randomXFlip();
ssp(spawned, CLIPMASK0);

View file

@ -513,8 +513,7 @@ static void shootweapon(DDukeActor *actor, int p, int sx, int sy, int sz, int sa
if (hole)
{
hole->spr.xvel = -1;
auto delta = hit.hitWall->int_delta();
hole->set_int_ang(getangle(-delta.X, -delta.Y) + 512);
hole->set_int_ang(getangle(-hit.hitWall->delta()) + 512);
ssp(hole, CLIPMASK0);
hole->spr.cstat2 |= CSTAT2_SPRITE_DECAL;
}

View file

@ -410,8 +410,7 @@ static void shootweapon(DDukeActor* actor, int p, int sx, int sy, int sz, int sa
if (hole)
{
hole->spr.xvel = -1;
auto delta = hit.hitWall->int_delta();
hole->set_int_ang(getangle(-delta.X, -delta.Y) + 512);
hole->set_int_ang(getangle(-hit.hitWall->delta()) + 512);
ssp(hole, CLIPMASK0);
hole->spr.cstat2 |= CSTAT2_SPRITE_DECAL;
}
@ -2368,7 +2367,7 @@ void onMotorcycleMove(int snum, walltype* wal)
{
auto p = &ps[snum];
auto pact = p->GetActor();
int angleDelta = abs(p->angle.ang.Buildang() - getangle(wal->int_delta()));
int angleDelta = abs(p->angle.ang.Buildang() - getangle(wal->delta()));
double damageAmount = p->MotoSpeed * p->MotoSpeed;
p->angle.addadjustment(DAngle::fromBuildf(p->MotoSpeed / (krand() & 1 ? -2 : 2)));
@ -2422,8 +2421,7 @@ void onBoatMove(int snum, int psectlotag, walltype* wal)
{
auto p = &ps[snum];
auto pact = p->GetActor();
auto delta = wal->int_delta();
int angleDelta = abs(p->angle.ang.Buildang() - getangle(wal->int_delta()));
int angleDelta = abs(p->angle.ang.Buildang() - getangle(wal->delta()));
p->angle.addadjustment(DAngle::fromBuildf(p->MotoSpeed / (krand() & 1 ? -4 : 4)));

View file

@ -681,8 +681,7 @@ void checkhitwall_d(DDukeActor* spr, walltype* wal, const DVector3& pos, int atw
if (spawned)
{
spawned->spr.cstat |= CSTAT_SPRITE_TRANSLUCENT | CSTAT_SPRITE_ALIGNMENT_WALL | CSTAT_SPRITE_YCENTER;
auto delta = wal->int_delta();
spawned->set_int_ang(getangle(-delta.X, -delta.Y) - 512);
spawned->set_int_ang(getangle(-wal->delta()) - 512);
S_PlayActorSound(SOMETHINGHITFORCE, spawned);
}

View file

@ -244,8 +244,6 @@ void AddFlash(sectortype* pSector, const DVector3& pos, int val)
for (auto& wal : wallsofsector(pSector))
{
auto average = wal.int_center();
sectortype *pNextSector = NULL;
if (wal.twoSided())
pNextSector = wal.nextSector();

View file

@ -1180,9 +1180,7 @@ Collision AngleChase(DExhumedActor* pActor, DExhumedActor* pActor2, int ebx, int
int GetWallNormal(walltype* pWall)
{
auto delta = pWall->int_delta();
int nAngle = getangle(delta.X, delta.Y);
int nAngle = getangle(pWall->delta());
return (nAngle + 512) & kAngleMask;
}

View file

@ -729,7 +729,7 @@ int WallBreakPosition(walltype* wp, sectortype** sectp, int *x, int *y, int *z,
int nx,ny;
int wall_ang;
wall_ang = NORM_ANGLE(getangle(wp->int_delta())+512);
wall_ang = NORM_ANGLE(getangle(wp->delta())+512);
*sectp = wp->sectorp();
ASSERT(*sectp);

View file

@ -959,7 +959,7 @@ void CircleCamera(int *nx, int *ny, int *nz, sectortype** vsect, DAngle *nang, f
{
*vsect = hit.hitSector;
daang = getangle(hit.hitWall->int_delta());
daang = getangle(hit.hitWall->delta());
i = vx * bsin(daang) + vy * -bcos(daang);
if (abs(vx) > abs(vy))

View file

@ -424,7 +424,7 @@ int DoBloodSpray(DSWActor* actor)
break;
}
wall_ang = NORM_ANGLE(getangle(wph->int_delta()) + 512);
wall_ang = NORM_ANGLE(getangle(wph->delta()) + 512);
SpawnMidSplash(actor);
auto bldActor = QueueWallBlood(actor, NORM_ANGLE(wall_ang+1024));
@ -618,7 +618,7 @@ int DoPhosphorus(DSWActor* actor)
break;
}
wall_ang = NORM_ANGLE(getangle(wph->int_delta()) + 512);
wall_ang = NORM_ANGLE(getangle(wph->delta()) + 512);
WallBounce(actor, wall_ang);
ScaleSpriteVector(actor, 32000);
@ -823,7 +823,7 @@ int DoChemBomb(DSWActor* actor)
if (!(actor->spr.cstat & CSTAT_SPRITE_INVISIBLE))
PlaySound(DIGI_CHEMBOUNCE, actor, v3df_dontpan);
int wall_ang = NORM_ANGLE(getangle(wph->int_delta()) + 512);
int wall_ang = NORM_ANGLE(getangle(wph->delta()) + 512);
WallBounce(actor, wall_ang);
ScaleSpriteVector(actor, 32000);
@ -1037,7 +1037,7 @@ int DoCaltrops(DSWActor* actor)
PlaySound(DIGI_CALTROPS, actor, v3df_dontpan);
int wall_ang = NORM_ANGLE(getangle(wph->int_delta()) + 512);
int wall_ang = NORM_ANGLE(getangle(wph->delta()) + 512);
WallBounce(actor, wall_ang);
ScaleSpriteVector(actor, 1000);

View file

@ -1567,7 +1567,7 @@ void SlipSlope(PLAYER* pp)
if (!(sectu->flags & SECTFU_SLIDE_SECTOR) || !(pp->cursector->floorstat & CSTAT_SECTOR_SLOPE))
return;
ang = getangle(pp->cursector->firstWall()->int_delta());
ang = getangle(pp->cursector->firstWall()->delta());
ang = NORM_ANGLE(ang + 512);
@ -5835,7 +5835,7 @@ void DoPlayerDeathMoveHead(PLAYER* pp)
}
case kHitWall:
{
int wall_ang = NORM_ANGLE(getangle(plActor->user.coll.hitWall->int_delta())-512);
int wall_ang = NORM_ANGLE(getangle(plActor->user.coll.hitWall->delta())-512);
int dang = getincangle(wall_ang, plActor->user.slide_ang);
plActor->user.slide_ang = NORM_ANGLE(wall_ang + 1024 - dang);

View file

@ -1001,7 +1001,7 @@ int DoRipperMoveHang(DSWActor* actor)
actor->user.WaitTics = 2 + ((RANDOM_P2(4 << 8) >> 8) * 120);
// hang flush with the wall
actor->set_int_ang(NORM_ANGLE(getangle(actor->user.coll.hitWall->int_delta()) - 512));
actor->set_int_ang(NORM_ANGLE(getangle(actor->user.coll.hitWall->delta()) - 512));
return 0;
}

View file

@ -1021,7 +1021,7 @@ int DoRipper2MoveHang(DSWActor* actor)
actor->user.WaitTics = 0; // Double jump
// hang flush with the wall
actor->set_int_ang(NORM_ANGLE(getangle(actor->user.coll.hitWall->int_delta()) - 512));
actor->set_int_ang(NORM_ANGLE(getangle(actor->user.coll.hitWall->delta()) - 512));
return 0;
}

View file

@ -7472,7 +7472,7 @@ int DoStar(DSWActor* actor)
if (RANDOM_P2(1024) < STAR_BOUNCE_RNUM)
break;
wall_ang = NORM_ANGLE(getangle(wph->int_delta())+512);
wall_ang = NORM_ANGLE(getangle(wph->delta())+512);
WallBounce(actor, wall_ang);
ScaleSpriteVector(actor, 36000);
@ -8168,7 +8168,7 @@ bool SlopeBounce(DSWActor* actor, bool *hit_wall)
// get angle of the first wall of the sector
auto wallp = hit_sector->firstWall();
daang = getangle(wallp->int_delta());
daang = getangle(wallp->delta());
// k is now the slope of the ceiling or floor
@ -8285,7 +8285,7 @@ int DoGrenade(DSWActor* actor)
PlaySound(DIGI_40MMBNCE, actor, v3df_dontpan);
wall_ang = NORM_ANGLE(getangle(wph->int_delta())+512);
wall_ang = NORM_ANGLE(getangle(wph->delta())+512);
//actor->spr.angle = NORM_ANGLE(actor->spr.angle + 1);
WallBounce(actor, wall_ang);
@ -8483,7 +8483,7 @@ int DoVulcanBoulder(DSWActor* actor)
break;
}
wall_ang = NORM_ANGLE(getangle(wph->int_delta())+512);
wall_ang = NORM_ANGLE(getangle(wph->delta())+512);
WallBounce(actor, wall_ang);
ScaleSpriteVector(actor, 40000);
@ -14970,7 +14970,7 @@ bool HitscanSpriteAdjust(DSWActor* actor, walltype* hit_wall)
if (hit_wall)
{
int16_t const wall_ang = NORM_ANGLE(getangle(hit_wall->int_delta()));
int16_t const wall_ang = NORM_ANGLE(getangle(hit_wall->delta()));
actor->set_int_ang(NORM_ANGLE(wall_ang + 512));
}
ang = actor->int_ang();
@ -17259,7 +17259,7 @@ void QueueHole(sectortype* hit_sect, walltype* hit_wall, const DVector3& pos)
spawnedActor->spr.cstat |= (CSTAT_SPRITE_ONE_SIDE);
spawnedActor->spr.cstat &= ~(CSTAT_SPRITE_BLOCK|CSTAT_SPRITE_BLOCK_HITSCAN);
wall_ang = NORM_ANGLE(getangle(hit_wall->int_delta())+512);
wall_ang = NORM_ANGLE(getangle(hit_wall->delta())+512);
spawnedActor->set_int_ang(wall_ang);
// move it back some
@ -17570,7 +17570,7 @@ DSWActor* QueueWallBlood(DSWActor* actor, short ang)
spawnedActor->spr.cstat |= (CSTAT_SPRITE_YCENTER);
spawnedActor->spr.cstat &= ~(CSTAT_SPRITE_BLOCK|CSTAT_SPRITE_BLOCK_HITSCAN);
wall_ang = NORM_ANGLE(getangle(hit.hitWall->int_delta()) + 512);
wall_ang = NORM_ANGLE(getangle(hit.hitWall->delta()) + 512);
spawnedActor->set_int_ang(wall_ang);
// move it back some
@ -17802,7 +17802,7 @@ int DoShrapVelocity(DSWActor* actor)
case kHitWall:
{
int wall_ang = NORM_ANGLE(getangle(actor->user.coll.hitWall->int_delta())+512);
int wall_ang = NORM_ANGLE(getangle(actor->user.coll.hitWall->delta())+512);
WallBounce(actor, wall_ang);
ScaleSpriteVector(actor, 32000);
@ -18118,7 +18118,7 @@ int DoItemFly(DSWActor* actor)
case kHitWall:
{
int wall_ang = NORM_ANGLE(getangle(actor->user.coll.hitWall->int_delta())+512);
int wall_ang = NORM_ANGLE(getangle(actor->user.coll.hitWall->delta())+512);
WallBounce(actor, wall_ang);
ScaleSpriteVector(actor, 32000);
break;