- fixed two refactoring errors:

* A_BridgeOrbit had its radius as an int, not a fixed_t.
* PIT_CheckThing used the wrong coordinate for checking actor distance.
This commit is contained in:
Christoph Oelckers 2016-01-20 11:39:41 +01:00
parent e9b23cf833
commit 500bc2b852
2 changed files with 4 additions and 4 deletions

View file

@ -100,14 +100,14 @@ DEFINE_ACTION_FUNCTION(AActor, A_BridgeOrbit)
// Set default values // Set default values
// Every five tics, Hexen moved the ball 3/256th of a revolution. // Every five tics, Hexen moved the ball 3/256th of a revolution.
int rotationspeed = ANGLE_45/32*3/5; int rotationspeed = ANGLE_45/32*3/5;
int rotationradius = ORBIT_RADIUS; int rotationradius = ORBIT_RADIUS * FRACUNIT;
// If the bridge is custom, set non-default values if any. // If the bridge is custom, set non-default values if any.
// Set angular speed; 1--128: counterclockwise rotation ~=1--180°; 129--255: clockwise rotation ~= 180--1° // Set angular speed; 1--128: counterclockwise rotation ~=1--180°; 129--255: clockwise rotation ~= 180--1°
if (self->target->args[3] > 128) rotationspeed = ANGLE_45/32 * (self->target->args[3]-256) / TICRATE; if (self->target->args[3] > 128) rotationspeed = ANGLE_45/32 * (self->target->args[3]-256) / TICRATE;
else if (self->target->args[3] > 0) rotationspeed = ANGLE_45/32 * (self->target->args[3]) / TICRATE; else if (self->target->args[3] > 0) rotationspeed = ANGLE_45/32 * (self->target->args[3]) / TICRATE;
// Set rotation radius // Set rotation radius
if (self->target->args[4]) rotationradius = ((self->target->args[4] * self->target->radius) / (100 * FRACUNIT)); if (self->target->args[4]) rotationradius = ((self->target->args[4] * self->target->radius) / 100);
self->angle += rotationspeed; self->angle += rotationspeed;
self->SetOrigin(self->target->Vec3Angle(rotationradius, self->angle, 0), true); self->SetOrigin(self->target->Vec3Angle(rotationradius, self->angle, 0), true);

View file

@ -1034,7 +1034,7 @@ bool PIT_CheckThing(AActor *thing, FCheckPosition &tm)
fixedvec3 thingpos = thing->PosRelative(tm.thing); fixedvec3 thingpos = thing->PosRelative(tm.thing);
fixed_t blockdist = thing->radius + tm.thing->radius; fixed_t blockdist = thing->radius + tm.thing->radius;
if (abs(thingpos.x - tm.thing->X()) >= blockdist || abs(thingpos.y - tm.thing->Y()) >= blockdist) if (abs(thingpos.x - tm.x) >= blockdist || abs(thingpos.y - tm.y) >= blockdist)
return true; return true;
if ((thing->flags2 | tm.thing->flags2) & MF2_THRUACTORS) if ((thing->flags2 | tm.thing->flags2) & MF2_THRUACTORS)
@ -1087,7 +1087,7 @@ bool PIT_CheckThing(AActor *thing, FCheckPosition &tm)
if (newdist > olddist) if (newdist > olddist)
{ {
// ... but not if they did not overlap in z-direction before but would after the move. // ... but not if they did not overlap in z-direction before but would after the move.
unblocking = !((tm.thing->Z() >= thingpos.z + thing->height && tm.z < thingpos.z + thing->height) || unblocking = !((tm.thing->Z() >= topz && tm.z < topz) ||
(tm.thing->Top() <= thingpos.z && tm.thing->Top() > thingpos.z)); (tm.thing->Top() <= thingpos.z && tm.thing->Top() > thingpos.z));
} }
} }