mirror of
https://github.com/ZDoom/Raze.git
synced 2025-02-20 18:42:26 +00:00
- SW: Change limit_ang_center
and limit_ang_delta
to DAngle
objects.
This commit is contained in:
parent
303e7ddf76
commit
54ef648936
3 changed files with 21 additions and 21 deletions
|
@ -1517,11 +1517,11 @@ struct SECTOR_OBJECT
|
|||
morph_dist, // dist from CENTER
|
||||
morph_z_speed, // z speed for morph point
|
||||
morph_xoff, // save xoff from center
|
||||
morph_yoff, // save yoff from center
|
||||
morph_yoff; // save yoff from center
|
||||
|
||||
//scale_rand_reverse, // random at random interval
|
||||
//scale_rand_reverse; // random at random interval
|
||||
// limit rotation angle
|
||||
limit_ang_center, // for limiting the angle of turning - turrets etc
|
||||
DAngle limit_ang_center, // for limiting the angle of turning - turrets etc
|
||||
limit_ang_delta; //
|
||||
|
||||
};
|
||||
|
|
|
@ -1530,7 +1530,7 @@ void DoPlayerTurnVehicleRect(PLAYER* pp, int *x, int *y, int *ox, int *oy)
|
|||
|
||||
void DoPlayerTurnTurret(PLAYER* pp, float avel)
|
||||
{
|
||||
binangle new_ang, diff;
|
||||
DAngle new_ang, diff;
|
||||
SECTOR_OBJECT* sop = pp->sop;
|
||||
|
||||
if (sop->drive_angspeed)
|
||||
|
@ -1547,22 +1547,22 @@ void DoPlayerTurnTurret(PLAYER* pp, float avel)
|
|||
|
||||
if (fabs(avel) >= FLT_EPSILON)
|
||||
{
|
||||
new_ang = pp->angle.ang + degang(avel);
|
||||
new_ang = DAngle::fromBam(pp->angle.ang.asbam()) + DAngle::fromDeg(avel);
|
||||
|
||||
if (sop->limit_ang_center >= 0)
|
||||
if (sop->limit_ang_center >= nullAngle)
|
||||
{
|
||||
diff = getincanglebam(buildang(sop->limit_ang_center), new_ang);
|
||||
diff = (new_ang - sop->limit_ang_center).Normalized180();
|
||||
|
||||
if (labs(diff.signedbuild()) >= sop->limit_ang_delta)
|
||||
if (abs(diff) >= sop->limit_ang_delta)
|
||||
{
|
||||
if (diff.asbam() > INT32_MAX)
|
||||
new_ang = buildang(sop->limit_ang_center - sop->limit_ang_delta);
|
||||
if (diff < nullAngle)
|
||||
new_ang = sop->limit_ang_center - sop->limit_ang_delta;
|
||||
else
|
||||
new_ang = buildang(sop->limit_ang_center + sop->limit_ang_delta);
|
||||
new_ang = sop->limit_ang_center + sop->limit_ang_delta;
|
||||
}
|
||||
}
|
||||
|
||||
pp->angle.ang = new_ang;
|
||||
pp->angle.ang = bamang(new_ang.BAMs());
|
||||
pp->actor->set_int_ang(pp->angle.ang.asbuild());
|
||||
}
|
||||
|
||||
|
|
|
@ -1225,8 +1225,8 @@ void SetupSectorObject(sectortype* sectp, short tag)
|
|||
KillActor(actor);
|
||||
break;
|
||||
case SO_LIMIT_TURN:
|
||||
sop->limit_ang_center = actor->int_ang();
|
||||
sop->limit_ang_delta = actor->spr.lotag;
|
||||
sop->limit_ang_center = DAngle::fromBuild(actor->int_ang());
|
||||
sop->limit_ang_delta = DAngle::fromBuild(actor->spr.lotag);
|
||||
KillActor(actor);
|
||||
break;
|
||||
case SO_MATCH_EVENT:
|
||||
|
@ -2731,7 +2731,7 @@ void DoAutoTurretObject(SECTOR_OBJECT* sop)
|
|||
if (!actor) return;
|
||||
|
||||
short delta_ang;
|
||||
int diff;
|
||||
DAngle diff;
|
||||
short i;
|
||||
|
||||
if ((sop->max_damage != -9999 && sop->max_damage <= 0) || !actor->hasU())
|
||||
|
@ -2801,16 +2801,16 @@ void DoAutoTurretObject(SECTOR_OBJECT* sop)
|
|||
sop->ang = NORM_ANGLE(sop->ang + (delta_ang >> 3));
|
||||
//sop->ang += delta_ang >> 2;
|
||||
|
||||
if (sop->limit_ang_center >= 0)
|
||||
if (sop->limit_ang_center >= nullAngle)
|
||||
{
|
||||
diff = getincangle(sop->limit_ang_center, sop->ang);
|
||||
diff = (DAngle::fromBuild(sop->ang) - sop->limit_ang_center).Normalized180();
|
||||
|
||||
if (labs(diff) >= sop->limit_ang_delta)
|
||||
if (abs(diff) >= sop->limit_ang_delta)
|
||||
{
|
||||
if (diff < 0)
|
||||
sop->ang = sop->limit_ang_center - sop->limit_ang_delta;
|
||||
if (diff < nullAngle)
|
||||
sop->ang = (sop->limit_ang_center - sop->limit_ang_delta).Buildang();
|
||||
else
|
||||
sop->ang = sop->limit_ang_center + sop->limit_ang_delta;
|
||||
sop->ang = (sop->limit_ang_center + sop->limit_ang_delta).Buildang();
|
||||
|
||||
}
|
||||
}
|
||||
|
|
Loading…
Reference in a new issue