mirror of
https://github.com/ZDoom/Raze.git
synced 2025-02-22 03:21:07 +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_dist, // dist from CENTER
|
||||||
morph_z_speed, // z speed for morph point
|
morph_z_speed, // z speed for morph point
|
||||||
morph_xoff, // save xoff from center
|
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 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; //
|
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)
|
void DoPlayerTurnTurret(PLAYER* pp, float avel)
|
||||||
{
|
{
|
||||||
binangle new_ang, diff;
|
DAngle new_ang, diff;
|
||||||
SECTOR_OBJECT* sop = pp->sop;
|
SECTOR_OBJECT* sop = pp->sop;
|
||||||
|
|
||||||
if (sop->drive_angspeed)
|
if (sop->drive_angspeed)
|
||||||
|
@ -1547,22 +1547,22 @@ void DoPlayerTurnTurret(PLAYER* pp, float avel)
|
||||||
|
|
||||||
if (fabs(avel) >= FLT_EPSILON)
|
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)
|
if (diff < nullAngle)
|
||||||
new_ang = buildang(sop->limit_ang_center - sop->limit_ang_delta);
|
new_ang = sop->limit_ang_center - sop->limit_ang_delta;
|
||||||
else
|
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());
|
pp->actor->set_int_ang(pp->angle.ang.asbuild());
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -1225,8 +1225,8 @@ void SetupSectorObject(sectortype* sectp, short tag)
|
||||||
KillActor(actor);
|
KillActor(actor);
|
||||||
break;
|
break;
|
||||||
case SO_LIMIT_TURN:
|
case SO_LIMIT_TURN:
|
||||||
sop->limit_ang_center = actor->int_ang();
|
sop->limit_ang_center = DAngle::fromBuild(actor->int_ang());
|
||||||
sop->limit_ang_delta = actor->spr.lotag;
|
sop->limit_ang_delta = DAngle::fromBuild(actor->spr.lotag);
|
||||||
KillActor(actor);
|
KillActor(actor);
|
||||||
break;
|
break;
|
||||||
case SO_MATCH_EVENT:
|
case SO_MATCH_EVENT:
|
||||||
|
@ -2731,7 +2731,7 @@ void DoAutoTurretObject(SECTOR_OBJECT* sop)
|
||||||
if (!actor) return;
|
if (!actor) return;
|
||||||
|
|
||||||
short delta_ang;
|
short delta_ang;
|
||||||
int diff;
|
DAngle diff;
|
||||||
short i;
|
short i;
|
||||||
|
|
||||||
if ((sop->max_damage != -9999 && sop->max_damage <= 0) || !actor->hasU())
|
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 = NORM_ANGLE(sop->ang + (delta_ang >> 3));
|
||||||
//sop->ang += delta_ang >> 2;
|
//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)
|
if (diff < nullAngle)
|
||||||
sop->ang = sop->limit_ang_center - sop->limit_ang_delta;
|
sop->ang = (sop->limit_ang_center - sop->limit_ang_delta).Buildang();
|
||||||
else
|
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