- converted AActor::height to double.

This commit is contained in:
Christoph Oelckers 2016-03-20 20:55:06 +01:00
parent 8362c6a856
commit cff8e51811
53 changed files with 253 additions and 259 deletions

View file

@ -769,7 +769,7 @@ public:
// Return starting health adjusted by skill level // Return starting health adjusted by skill level
int SpawnHealth() const; int SpawnHealth() const;
int GetGibHealth() const; int GetGibHealth() const;
fixed_t GetCameraHeight() const; double GetCameraHeight() const;
inline bool isMissile(bool precise=true) inline bool isMissile(bool precise=true)
{ {
@ -1124,15 +1124,18 @@ public:
int floorterrain; int floorterrain;
struct sector_t *ceilingsector; struct sector_t *ceilingsector;
FTextureID ceilingpic; // contacted sec ceilingpic FTextureID ceilingpic; // contacted sec ceilingpic
double radius; double radius, Height; // for movement checking
inline fixed_t _f_radius() const inline fixed_t _f_radius() const
{ {
return FLOAT2FIXED(radius); return FLOAT2FIXED(radius);
} }
inline fixed_t _f_height() const
{
return FLOAT2FIXED(Height);
}
fixed_t height; // for movement checking double projectilepassheight; // height for clipping projectile movement against this actor
fixed_t projectilepassheight; // height for clipping projectile movement against this actor
SDWORD tics; // state tic counter SDWORD tics; // state tic counter
FState *state; FState *state;
VMFunction *Damage; // For missiles and monster railgun VMFunction *Damage; // For missiles and monster railgun
@ -1406,7 +1409,7 @@ public:
} }
fixed_t _f_Top() const fixed_t _f_Top() const
{ {
return _f_Z() + height; return _f_Z() + FLOAT2FIXED(Height);
} }
void _f_SetZ(fixed_t newz, bool moving = true) void _f_SetZ(fixed_t newz, bool moving = true)
{ {
@ -1418,19 +1421,11 @@ public:
} }
double Top() const double Top() const
{ {
return Z() + FIXED2DBL(height); return Z() + Height;
} }
double Center() const double Center() const
{ {
return Z() + FIXED2DBL(height/2); return Z() + Height/2;
}
double _Height() const
{
return FIXED2DBL(height);
}
double _Radius() const
{
return FIXED2DBL(_f_radius());
} }
double _pushfactor() const double _pushfactor() const
{ {

View file

@ -36,7 +36,7 @@ bool DBot::Reachable (AActor *rtarget)
if ((rtarget->Sector->ceilingplane.ZatPoint (rtarget) - if ((rtarget->Sector->ceilingplane.ZatPoint (rtarget) -
rtarget->Sector->floorplane.ZatPoint (rtarget)) rtarget->Sector->floorplane.ZatPoint (rtarget))
< player->mo->height) //Where rtarget is, player->mo can't be. < player->mo->_f_height()) //Where rtarget is, player->mo can't be.
return false; return false;
sector_t *last_s = player->mo->Sector; sector_t *last_s = player->mo->Sector;
@ -79,7 +79,7 @@ bool DBot::Reachable (AActor *rtarget)
if (!bglobal.IsDangerous (s) && //Any nukage/lava? if (!bglobal.IsDangerous (s) && //Any nukage/lava?
(floorheight <= (last_z+MAXMOVEHEIGHT) (floorheight <= (last_z+MAXMOVEHEIGHT)
&& ((ceilingheight == floorheight && line->special) && ((ceilingheight == floorheight && line->special)
|| (ceilingheight - floorheight) >= player->mo->height))) //Does it fit? || (ceilingheight - floorheight) >= player->mo->_f_height()))) //Does it fit?
{ {
last_z = floorheight; last_z = floorheight;
last_s = s; last_s = s;
@ -492,7 +492,7 @@ angle_t DBot::FireRox (AActor *enemy, ticcmd_t *cmd)
bglobal.SetBodyAt (player->mo->_f_X() + FixedMul(player->mo->_f_velx(), 5*FRACUNIT), bglobal.SetBodyAt (player->mo->_f_X() + FixedMul(player->mo->_f_velx(), 5*FRACUNIT),
player->mo->_f_Y() + FixedMul(player->mo->_f_vely(), 5*FRACUNIT), player->mo->_f_Y() + FixedMul(player->mo->_f_vely(), 5*FRACUNIT),
player->mo->_f_Z() + (player->mo->height / 2), 2); player->mo->_f_Z() + (player->mo->_f_height() / 2), 2);
actor = bglobal.body2; actor = bglobal.body2;

View file

@ -270,7 +270,7 @@ bool FCajunMaster::CleanAhead (AActor *thing, fixed_t x, fixed_t y, ticcmd_t *cm
if (!(thing->flags & MF_NOCLIP) ) if (!(thing->flags & MF_NOCLIP) )
{ {
fixed_t maxstep = thing->MaxStepHeight; fixed_t maxstep = thing->MaxStepHeight;
if (tm.ceilingz - tm.floorz < thing->_Height()) if (tm.ceilingz - tm.floorz < thing->Height)
return false; // doesn't fit return false; // doesn't fit
if (!(thing->flags&MF_MISSILE)) if (!(thing->flags&MF_MISSILE))

View file

@ -903,7 +903,7 @@ static int PatchThing (int thingy)
} }
else if (linelen == 6 && stricmp (Line1, "Height") == 0) else if (linelen == 6 && stricmp (Line1, "Height") == 0)
{ {
info->height = val; info->Height = FIXED2DBL(val);
info->projectilepassheight = 0; // needs to be disabled info->projectilepassheight = 0; // needs to be disabled
hadHeight = true; hadHeight = true;
} }
@ -1257,7 +1257,7 @@ static int PatchThing (int thingy)
!hadHeight && !hadHeight &&
thingy <= (int)OrgHeights.Size() && thingy > 0) thingy <= (int)OrgHeights.Size() && thingy > 0)
{ {
info->height = OrgHeights[thingy - 1] * FRACUNIT; info->Height = OrgHeights[thingy - 1];
info->projectilepassheight = 0; info->projectilepassheight = 0;
} }
// If the thing's shadow changed, change its fuzziness if not already specified // If the thing's shadow changed, change its fuzziness if not already specified

View file

@ -2375,7 +2375,7 @@ void Net_DoCommand (int type, BYTE **stream, int player)
s = ReadString (stream); s = ReadString (stream);
if (Trace (players[player].mo->_f_X(), players[player].mo->_f_Y(), if (Trace (players[player].mo->_f_X(), players[player].mo->_f_Y(),
players[player].mo->_f_Top() - (players[player].mo->height>>2), players[player].mo->_f_Top() - (players[player].mo->_f_height()>>2),
players[player].mo->Sector, players[player].mo->Sector,
vx, vy, vz, 172*FRACUNIT, 0, ML_BLOCKEVERYTHING, players[player].mo, vx, vy, vz, 172*FRACUNIT, 0, ML_BLOCKEVERYTHING, players[player].mo,
trace, TRACE_NoSky)) trace, TRACE_NoSky))

View file

@ -3207,7 +3207,7 @@ void FParser::SF_MoveCamera(void)
} }
cam->radius = 1 / 8192.; cam->radius = 1 / 8192.;
cam->height=8; cam->Height = 1 / 8192.;
if ((x != cam->_f_X() || y != cam->_f_Y()) && !P_TryMove(cam, x, y, true)) if ((x != cam->_f_X() || y != cam->_f_Y()) && !P_TryMove(cam, x, y, true))
{ {
Printf("Illegal camera move to (%f, %f)\n", x/65536.f, y/65536.f); Printf("Illegal camera move to (%f, %f)\n", x/65536.f, y/65536.f);
@ -3740,7 +3740,7 @@ void FParser::SF_Resurrect()
return; return;
mo->SetState(state); mo->SetState(state);
mo->height = mo->GetDefault()->height; mo->Height = mo->GetDefault()->Height;
mo->radius = mo->GetDefault()->radius; mo->radius = mo->GetDefault()->radius;
mo->flags = mo->GetDefault()->flags; mo->flags = mo->GetDefault()->flags;
mo->flags2 = mo->GetDefault()->flags2; mo->flags2 = mo->GetDefault()->flags2;
@ -4123,11 +4123,9 @@ void FParser::SF_MobjHeight(void)
if(t_argc > 1) if(t_argc > 1)
{ {
if(mo) if(mo)
mo->height = fixedvalue(t_argv[1]); mo->Height = floatvalue(t_argv[1]);
} }
t_return.setDouble(mo ? mo->Height : 0.);
t_return.type = svt_fixed;
t_return.value.f = mo ? mo->height : 0;
} }
} }

View file

@ -47,7 +47,7 @@ DEFINE_ACTION_FUNCTION(AActor, A_BarrelDestroy)
if (dmflags2 & DF2_BARRELS_RESPAWN) if (dmflags2 & DF2_BARRELS_RESPAWN)
{ {
self->height = self->GetDefault()->height; self->Height = self->GetDefault()->Height;
self->renderflags |= RF_INVISIBLE; self->renderflags |= RF_INVISIBLE;
self->flags &= ~MF_SOLID; self->flags &= ~MF_SOLID;
} }

View file

@ -664,7 +664,7 @@ DEFINE_ACTION_FUNCTION_PARAMS(AActor, A_BFGSpray)
if (t.linetarget != NULL) if (t.linetarget != NULL)
{ {
AActor *spray = Spawn(spraytype, t.linetarget->PosPlusZ(t.linetarget->height >> 2), ALLOW_REPLACE); AActor *spray = Spawn(spraytype, t.linetarget->PosPlusZ(t.linetarget->Height / 4), ALLOW_REPLACE);
int dmgFlags = 0; int dmgFlags = 0;
FName dmgType = NAME_BFGSplash; FName dmgType = NAME_BFGSplash;

View file

@ -146,7 +146,7 @@ DEFINE_ACTION_FUNCTION_PARAMS(AActor, A_Mushroom)
// Now launch mushroom cloud // Now launch mushroom cloud
AActor *target = Spawn("Mapspot", self->Pos(), NO_REPLACE); // We need something to aim at. AActor *target = Spawn("Mapspot", self->Pos(), NO_REPLACE); // We need something to aim at.
AActor *master = (flags & MSF_DontHurt) ? (AActor*)(self->target) : self; AActor *master = (flags & MSF_DontHurt) ? (AActor*)(self->target) : self;
target->height = self->height; target->Height = self->Height;
for (i = -n; i <= n; i += 8) for (i = -n; i <= n; i += 8)
{ {
for (j = -n; j <= n; j += 8) for (j = -n; j <= n; j += 8)

View file

@ -103,13 +103,13 @@ DEFINE_ACTION_FUNCTION(AActor, A_Tracer)
// change slope // change slope
dist = self->DistanceBySpeed(dest, self->Speed); dist = self->DistanceBySpeed(dest, self->Speed);
if (dest->_Height() >= 56.) if (dest->Height >= 56.)
{ {
slope = (dest->Z() + 40. - self->Z()) / dist; slope = (dest->Z() + 40. - self->Z()) / dist;
} }
else else
{ {
slope = (dest->Z() + self->_Height()*(2./3) - self->Z()) / dist; slope = (dest->Z() + self->Height*(2./3) - self->Z()) / dist;
} }
if (slope < self->Vel.Z) if (slope < self->Vel.Z)

View file

@ -273,7 +273,7 @@ DEFINE_ACTION_FUNCTION(AActor, A_GenWizard)
mo = Spawn("Wizard", self->Pos(), ALLOW_REPLACE); mo = Spawn("Wizard", self->Pos(), ALLOW_REPLACE);
if (mo != NULL) if (mo != NULL)
{ {
mo->AddZ(-mo->GetDefault()->_Height() / 2, false); mo->AddZ(-mo->GetDefault()->Height / 2, false);
if (!P_TestMobjLocation (mo)) if (!P_TestMobjLocation (mo))
{ // Didn't fit { // Didn't fit
mo->ClearCounters(); mo->ClearCounters();

View file

@ -1071,7 +1071,7 @@ DEFINE_ACTION_FUNCTION(AActor, A_SkullRodStorm)
newz = self->Sector->ceilingplane.ZatPoint(mo); newz = self->Sector->ceilingplane.ZatPoint(mo);
int moceiling = P_Find3DFloor(NULL, pos.x, pos.y, newz, false, false, newz); int moceiling = P_Find3DFloor(NULL, pos.x, pos.y, newz, false, false, newz);
if (moceiling >= 0) if (moceiling >= 0)
mo->_f_SetZ(newz - mo->height, false); mo->_f_SetZ(newz - mo->_f_height(), false);
mo->Translation = multiplayer ? mo->Translation = multiplayer ?
TRANSLATION(TRANSLATION_RainPillar,self->special2) : 0; TRANSLATION(TRANSLATION_RainPillar,self->special2) : 0;
mo->target = self->target; mo->target = self->target;

View file

@ -43,7 +43,7 @@ void BlastActor (AActor *victim, fixed_t strength, double speed, AActor *Owner,
pos = victim->Vec3Offset( pos = victim->Vec3Offset(
fixed_t((victim->_f_radius() + FRACUNIT) * angle.Cos()), fixed_t((victim->_f_radius() + FRACUNIT) * angle.Cos()),
fixed_t((victim->_f_radius() + FRACUNIT) * angle.Sin()), fixed_t((victim->_f_radius() + FRACUNIT) * angle.Sin()),
-victim->floorclip + (victim->height>>1)); -victim->floorclip + (victim->_f_height()>>1));
mo = Spawn (blasteffect, pos, ALLOW_REPLACE); mo = Spawn (blasteffect, pos, ALLOW_REPLACE);
if (mo) if (mo)
{ {

View file

@ -423,7 +423,7 @@ static void CHolySeekerMissile (AActor *actor, DAngle thresh, DAngle turnMax)
|| actor->Z() > target->Top() || actor->Z() > target->Top()
|| actor->Top() < target->Z()) || actor->Top() < target->Z())
{ {
newZ = target->_f_Z()+((pr_holyseeker()*target->height)>>8); newZ = target->_f_Z()+((pr_holyseeker()*target->_f_height())>>8);
deltaZ = newZ - actor->_f_Z(); deltaZ = newZ - actor->_f_Z();
if (abs(deltaZ) > 15*FRACUNIT) if (abs(deltaZ) > 15*FRACUNIT)
{ {

View file

@ -242,7 +242,7 @@ DEFINE_ACTION_FUNCTION(AActor, A_SorcSpinBalls)
self->args[4] = SORCBALL_INITIAL_SPEED; // Initial orbit speed self->args[4] = SORCBALL_INITIAL_SPEED; // Initial orbit speed
self->special1 = ANGLE_1; self->special1 = ANGLE_1;
fixedvec3 pos = self->PosPlusZ(-self->floorclip + self->height); fixedvec3 pos = self->PosPlusZ(-self->floorclip + self->_f_height());
mo = Spawn("SorcBall1", pos, NO_REPLACE); mo = Spawn("SorcBall1", pos, NO_REPLACE);
if (mo) if (mo)
@ -378,7 +378,7 @@ DEFINE_ACTION_FUNCTION(AActor, A_SorcBallOrbit)
fixedvec3 pos = parent->Vec3Offset( fixedvec3 pos = parent->Vec3Offset(
FixedMul(dist, finecosine[angle]), FixedMul(dist, finecosine[angle]),
FixedMul(dist, finesine[angle]), FixedMul(dist, finesine[angle]),
-parent->floorclip + parent->height); -parent->floorclip + parent->_f_height());
actor->SetOrigin (pos, true); actor->SetOrigin (pos, true);
actor->floorz = parent->floorz; actor->floorz = parent->floorz;
actor->ceilingz = parent->ceilingz; actor->ceilingz = parent->ceilingz;
@ -714,7 +714,7 @@ DEFINE_ACTION_FUNCTION(AActor, A_SpawnFizzle)
AActor *mo; AActor *mo;
int ix; int ix;
fixedvec3 pos = self->_f_Vec3Angle(dist, self->_f_angle(), -self->floorclip + (self->height >> 1)); fixedvec3 pos = self->_f_Vec3Angle(dist, self->_f_angle(), -self->floorclip + (self->_f_height() >> 1));
for (ix=0; ix<5; ix++) for (ix=0; ix<5; ix++)
{ {
mo = Spawn("SorcSpark1", pos, ALLOW_REPLACE); mo = Spawn("SorcSpark1", pos, ALLOW_REPLACE);

View file

@ -156,7 +156,7 @@ DEFINE_ACTION_FUNCTION(AActor, A_CorpseBloodDrip)
if (pr_drip() <= 128) if (pr_drip() <= 128)
{ {
Spawn ("CorpseBloodDrip", self->PosPlusZ(self->height/2), ALLOW_REPLACE); Spawn ("CorpseBloodDrip", self->PosPlusZ(self->_f_height()/2), ALLOW_REPLACE);
} }
return 0; return 0;
} }
@ -310,7 +310,7 @@ DEFINE_ACTION_FUNCTION(AActor, A_SoAExplode)
{ {
fixed_t xo = ((pr_soaexplode() - 128) << 12); fixed_t xo = ((pr_soaexplode() - 128) << 12);
fixed_t yo = ((pr_soaexplode() - 128) << 12); fixed_t yo = ((pr_soaexplode() - 128) << 12);
fixed_t zo = (pr_soaexplode()*self->height / 256); fixed_t zo = (pr_soaexplode()*self->_f_height() / 256);
mo = Spawn ("ZArmorChunk", self->Vec3Offset(xo, yo, zo), ALLOW_REPLACE); mo = Spawn ("ZArmorChunk", self->Vec3Offset(xo, yo, zo), ALLOW_REPLACE);
if (mo) if (mo)
{ {
@ -365,7 +365,7 @@ DEFINE_ACTION_FUNCTION(AActor, A_BellReset1)
PARAM_ACTION_PROLOGUE; PARAM_ACTION_PROLOGUE;
self->flags |= MF_NOGRAVITY; self->flags |= MF_NOGRAVITY;
self->height <<= 2; self->Height *= 4;
if (self->special) if (self->special)
{ // Initiate death action { // Initiate death action
P_ExecuteSpecial(self->special, NULL, NULL, false, self->args[0], P_ExecuteSpecial(self->special, NULL, NULL, false, self->args[0],

View file

@ -109,7 +109,7 @@ DEFINE_ACTION_FUNCTION(AActor, A_IceGuyDie)
PARAM_ACTION_PROLOGUE; PARAM_ACTION_PROLOGUE;
self->Vel.Zero(); self->Vel.Zero();
self->height = self->GetDefault()->height; self->Height = self->GetDefault()->Height;
CALL_ACTION(A_FreezeDeathChunks, self); CALL_ACTION(A_FreezeDeathChunks, self);
return 0; return 0;
} }

View file

@ -388,10 +388,10 @@ static void A_KSpiritSeeker (AActor *actor, DAngle thresh, DAngle turnMax)
actor->VelFromAngle(); actor->VelFromAngle();
if (!(level.time&15) if (!(level.time&15)
|| actor->_f_Z() > target->_f_Z()+(target->GetDefault()->height) || actor->_f_Z() > target->_f_Z()+(target->GetDefault()->_f_height())
|| actor->_f_Top() < target->_f_Z()) || actor->_f_Top() < target->_f_Z())
{ {
newZ = target->_f_Z()+((pr_kspiritseek()*target->GetDefault()->height)>>8); newZ = target->_f_Z()+((pr_kspiritseek()*target->GetDefault()->_f_height())>>8);
deltaZ = newZ-actor->_f_Z(); deltaZ = newZ-actor->_f_Z();
if (abs(deltaZ) > 15*FRACUNIT) if (abs(deltaZ) > 15*FRACUNIT)
{ {

View file

@ -161,7 +161,7 @@ DEFINE_ACTION_FUNCTION(AActor, A_LightningClip)
} }
else if (self->flags3 & MF3_CEILINGHUGGER) else if (self->flags3 & MF3_CEILINGHUGGER)
{ {
self->SetZ(self->ceilingz - self->_Height()); self->SetZ(self->ceilingz - self->Height);
target = self->tracer; target = self->tracer;
} }
if (self->flags3 & MF3_FLOORHUGGER) if (self->flags3 & MF3_FLOORHUGGER)

View file

@ -95,7 +95,7 @@ DEFINE_ACTION_FUNCTION(AActor, A_ThrustInitDn)
self->special2 = 5; // Raise speed self->special2 = 5; // Raise speed
self->args[0] = 0; // Mark as down self->args[0] = 0; // Mark as down
self->floorclip = self->GetDefault()->height; self->floorclip = self->GetDefault()->_f_height();
self->flags = 0; self->flags = 0;
self->flags2 = MF2_NOTELEPORT|MF2_FLOORCLIP; self->flags2 = MF2_NOTELEPORT|MF2_FLOORCLIP;
self->renderflags = RF_INVISIBLE; self->renderflags = RF_INVISIBLE;
@ -121,7 +121,7 @@ DEFINE_ACTION_FUNCTION(AActor, A_ThrustRaise)
} }
// Lose the dirt clump // Lose the dirt clump
if ((actor->floorclip < actor->height) && actor->DirtClump) if ((actor->floorclip < actor->_f_height()) && actor->DirtClump)
{ {
actor->DirtClump->Destroy (); actor->DirtClump->Destroy ();
actor->DirtClump = NULL; actor->DirtClump = NULL;

View file

@ -36,7 +36,7 @@ DEFINE_ACTION_FUNCTION(AActor, A_WraithInit)
// [RH] Make sure the wraith didn't go into the ceiling // [RH] Make sure the wraith didn't go into the ceiling
if (self->Top() > self->ceilingz) if (self->Top() > self->ceilingz)
{ {
self->SetZ(self->ceilingz - self->_Height()); self->SetZ(self->ceilingz - self->Height);
} }
self->special1 = 0; // index into floatbob self->special1 = 0; // index into floatbob
@ -57,7 +57,7 @@ DEFINE_ACTION_FUNCTION(AActor, A_WraithRaiseInit)
self->flags2 &= ~MF2_NONSHOOTABLE; self->flags2 &= ~MF2_NONSHOOTABLE;
self->flags3 &= ~MF3_DONTBLAST; self->flags3 &= ~MF3_DONTBLAST;
self->flags |= MF_SHOOTABLE|MF_SOLID; self->flags |= MF_SHOOTABLE|MF_SOLID;
self->floorclip = self->height; self->floorclip = self->_f_height();
return 0; return 0;
} }

View file

@ -189,7 +189,7 @@ DEFINE_ACTION_FUNCTION(AActor, A_FreezeDeath)
self->flags |= MF_SOLID|MF_SHOOTABLE|MF_NOBLOOD|MF_ICECORPSE; self->flags |= MF_SOLID|MF_SHOOTABLE|MF_NOBLOOD|MF_ICECORPSE;
self->flags2 |= MF2_PUSHABLE|MF2_TELESTOMP|MF2_PASSMOBJ|MF2_SLIDE; self->flags2 |= MF2_PUSHABLE|MF2_TELESTOMP|MF2_PASSMOBJ|MF2_SLIDE;
self->flags3 |= MF3_CRASHED; self->flags3 |= MF3_CRASHED;
self->height = self->GetDefault()->height; self->Height = self->GetDefault()->Height;
// Remove fuzz effects from frozen actors. // Remove fuzz effects from frozen actors.
if (self->RenderStyle.BlendOp >= STYLEOP_Fuzz && self->RenderStyle.BlendOp <= STYLEOP_FuzzOrRevSub) if (self->RenderStyle.BlendOp >= STYLEOP_Fuzz && self->RenderStyle.BlendOp <= STYLEOP_FuzzOrRevSub)
{ {
@ -287,20 +287,20 @@ DEFINE_ACTION_FUNCTION(AActor, A_FreezeDeathChunks)
// base the number of shards on the size of the dead thing, so bigger // base the number of shards on the size of the dead thing, so bigger
// things break up into more shards than smaller things. // things break up into more shards than smaller things.
// An actor with _f_radius() 20 and height 64 creates ~40 chunks. // An actor with _f_radius() 20 and height 64 creates ~40 chunks.
numChunks = MAX<int> (4, (self->_f_radius()>>FRACBITS)*(self->height>>FRACBITS)/32); numChunks = MAX<int> (4, (self->_f_radius()>>FRACBITS)*(self->_f_height()>>FRACBITS)/32);
i = (pr_freeze.Random2()) % (numChunks/4); i = (pr_freeze.Random2()) % (numChunks/4);
for (i = MAX (24, numChunks + i); i >= 0; i--) for (i = MAX (24, numChunks + i); i >= 0; i--)
{ {
fixed_t xo = (((pr_freeze() - 128)*self->_f_radius()) >> 7); fixed_t xo = (((pr_freeze() - 128)*self->_f_radius()) >> 7);
fixed_t yo = (((pr_freeze() - 128)*self->_f_radius()) >> 7); fixed_t yo = (((pr_freeze() - 128)*self->_f_radius()) >> 7);
fixed_t zo = (pr_freeze()*self->height / 255); fixed_t zo = (pr_freeze()*self->_f_height() / 255);
mo = Spawn("IceChunk", self->Vec3Offset(xo, yo, zo), ALLOW_REPLACE); mo = Spawn("IceChunk", self->Vec3Offset(xo, yo, zo), ALLOW_REPLACE);
if (mo) if (mo)
{ {
mo->SetState (mo->SpawnState + (pr_freeze()%3)); mo->SetState (mo->SpawnState + (pr_freeze()%3));
mo->Vel.X = pr_freeze.Random2() / 128.; mo->Vel.X = pr_freeze.Random2() / 128.;
mo->Vel.Y = pr_freeze.Random2() / 128.; mo->Vel.Y = pr_freeze.Random2() / 128.;
mo->Vel.Z = (mo->Z() - self->Z()) / self->_Height() * 4; mo->Vel.Z = (mo->Z() - self->Z()) / self->Height * 4;
CALL_ACTION(A_IceSetTics, mo); // set a random tic wait CALL_ACTION(A_IceSetTics, mo); // set a random tic wait
mo->RenderStyle = self->RenderStyle; mo->RenderStyle = self->RenderStyle;
mo->alpha = self->alpha; mo->alpha = self->alpha;
@ -313,7 +313,7 @@ DEFINE_ACTION_FUNCTION(AActor, A_FreezeDeathChunks)
{ {
head->Vel.X = pr_freeze.Random2() / 128.; head->Vel.X = pr_freeze.Random2() / 128.;
head->Vel.Y = pr_freeze.Random2() / 128.; head->Vel.Y = pr_freeze.Random2() / 128.;
head->Vel.Z = (mo->Z() - self->Z()) / self->_Height() * 4; head->Vel.Z = (mo->Z() - self->Z()) / self->Height * 4;
head->health = self->health; head->health = self->health;
head->Angles.Yaw = self->Angles.Yaw; head->Angles.Yaw = self->Angles.Yaw;

View file

@ -49,12 +49,12 @@ void ACustomBridge::BeginPlay ()
{ {
SetState(SeeState); SetState(SeeState);
radius = args[0] ? args[0] : 32; radius = args[0] ? args[0] : 32;
height = args[1] ? args[1] << FRACBITS : 2 * FRACUNIT; Height = args[1] ? args[1] : 2;
} }
else // No balls? Then a Doom bridge. else // No balls? Then a Doom bridge.
{ {
radius = args[0] ? args[0] : 36; radius = args[0] ? args[0] : 36;
height = args[1] ? args[1] << FRACBITS : 4 * FRACUNIT; Height = args[1] ? args[1] : 4;
RenderStyle = STYLE_Normal; RenderStyle = STYLE_Normal;
} }
} }
@ -164,6 +164,6 @@ void AInvisibleBridge::BeginPlay ()
if (args[0]) if (args[0])
radius = args[0]; radius = args[0];
if (args[1]) if (args[1])
height = args[1] << FRACBITS; Height = args[1];
} }

View file

@ -175,7 +175,7 @@ void AAimingCamera::Tick ()
{ // Aim camera's pitch; use floats for precision { // Aim camera's pitch; use floats for precision
fixedvec2 fv3 = tracer->_f_Vec2To(this); fixedvec2 fv3 = tracer->_f_Vec2To(this);
DVector2 vect(fv3.x, fv3.y); DVector2 vect(fv3.x, fv3.y);
double dz = _f_Z() - tracer->_f_Z() - tracer->height/2; double dz = _f_Z() - tracer->_f_Z() - tracer->_f_height()/2;
double dist = vect.Length(); double dist = vect.Length();
DAngle desiredPitch = dist != 0.f ? VecToAngle(dist, dz) : 0.; DAngle desiredPitch = dist != 0.f ? VecToAngle(dist, dz) : 0.;
DAngle diff = deltaangle(Angles.Pitch, desiredPitch); DAngle diff = deltaangle(Angles.Pitch, desiredPitch);

View file

@ -126,7 +126,7 @@ void AFastProjectile::Tick ()
return; return;
} }
SetZ(ceilingz - _Height()); SetZ(ceilingz - Height);
P_ExplodeMissile (this, NULL, NULL); P_ExplodeMissile (this, NULL, NULL);
return; return;
} }

View file

@ -639,7 +639,7 @@ bool AMovingCamera::Interpolate ()
{ // Also aim camera's pitch; use floats for precision { // Also aim camera's pitch; use floats for precision
double dx = FIXED2DBL(_f_X() - tracer->_f_X()); double dx = FIXED2DBL(_f_X() - tracer->_f_X());
double dy = FIXED2DBL(_f_Y() - tracer->_f_Y()); double dy = FIXED2DBL(_f_Y() - tracer->_f_Y());
double dz = FIXED2DBL(_f_Z() - tracer->_f_Z() - tracer->height/2); double dz = FIXED2DBL(_f_Z() - tracer->_f_Z() - tracer->_f_height()/2);
double dist = g_sqrt (dx*dx + dy*dy); double dist = g_sqrt (dx*dx + dy*dy);
Angles.Pitch = dist != 0.f ? VecToAngle(dist, dz) : 0.; Angles.Pitch = dist != 0.f ? VecToAngle(dist, dz) : 0.;
} }

View file

@ -426,11 +426,11 @@ DEFINE_ACTION_FUNCTION(AActor, A_RestoreSpecialPosition)
if (self->flags & MF_SPAWNCEILING) if (self->flags & MF_SPAWNCEILING)
{ {
self->_f_SetZ(self->_f_ceilingz() - self->height - self->SpawnPoint[2]); self->_f_SetZ(self->_f_ceilingz() - self->_f_height() - self->SpawnPoint[2]);
} }
else if (self->flags2 & MF2_SPAWNFLOAT) else if (self->flags2 & MF2_SPAWNFLOAT)
{ {
double space = self->ceilingz - self->_Height() - self->floorz; double space = self->ceilingz - self->Height - self->floorz;
if (space > 48) if (space > 48)
{ {
space -= 40; space -= 40;
@ -454,7 +454,7 @@ DEFINE_ACTION_FUNCTION(AActor, A_RestoreSpecialPosition)
} }
if ((self->flags & MF_SOLID) && (self->Top() > self->ceilingz)) if ((self->flags & MF_SOLID) && (self->Top() > self->ceilingz))
{ // Do the same for the ceiling. { // Do the same for the ceiling.
self->SetZ(self->ceilingz - self->_Height()); self->SetZ(self->ceilingz - self->Height);
} }
// Do not interpolate from the position the actor was at when it was // Do not interpolate from the position the actor was at when it was
// picked up, in case that is different from where it is now. // picked up, in case that is different from where it is now.

View file

@ -188,11 +188,11 @@ class ARandomSpawner : public AActor
// Handle special altitude flags // Handle special altitude flags
if (newmobj->flags & MF_SPAWNCEILING) if (newmobj->flags & MF_SPAWNCEILING)
{ {
newmobj->_f_SetZ(newmobj->_f_ceilingz() - newmobj->height - SpawnPoint[2]); newmobj->_f_SetZ(newmobj->_f_ceilingz() - newmobj->_f_height() - SpawnPoint[2]);
} }
else if (newmobj->flags2 & MF2_SPAWNFLOAT) else if (newmobj->flags2 & MF2_SPAWNFLOAT)
{ {
double space = newmobj->ceilingz - newmobj->_Height() - newmobj->floorz; double space = newmobj->ceilingz - newmobj->Height - newmobj->floorz;
if (space > 48) if (space > 48)
{ {
space -= 40; space -= 40;

View file

@ -23,7 +23,7 @@ DEFINE_ACTION_FUNCTION(AActor, A_SentinelBob)
if (self->threshold != 0) if (self->threshold != 0)
return 0; return 0;
maxz = self->ceilingz - self->_Height() - 16; maxz = self->ceilingz - self->Height - 16;
minz = self->floorz + 96; minz = self->floorz + 96;
if (minz > maxz) if (minz > maxz)
{ {

View file

@ -129,13 +129,13 @@ DEFINE_ACTION_FUNCTION(AActor, A_Tracer2)
{ {
dist = 1; dist = 1;
} }
if (dest->height >= 56*FRACUNIT) if (dest->_f_height() >= 56*FRACUNIT)
{ {
slope = (dest->_f_Z()+40*FRACUNIT - self->_f_Z()) / dist; slope = (dest->_f_Z()+40*FRACUNIT - self->_f_Z()) / dist;
} }
else else
{ {
slope = (dest->_f_Z() + self->height*2/3 - self->_f_Z()) / dist; slope = (dest->_f_Z() + self->_f_height()*2/3 - self->_f_Z()) / dist;
} }
if (slope < self->_f_velz()) if (slope < self->_f_velz())
{ {

View file

@ -554,7 +554,7 @@ DEFINE_ACTION_FUNCTION(AActor, A_MaulerTorpedoWave)
savedz = self->_f_Z(); savedz = self->_f_Z();
if (wavedef && self->ceilingz < wavedef->Top()) if (wavedef && self->ceilingz < wavedef->Top())
{ {
self->SetZ(self->ceilingz - wavedef->_Height()); self->SetZ(self->ceilingz - wavedef->Height);
} }
for (int i = 0; i < 80; ++i) for (int i = 0; i < 80; ++i)

View file

@ -231,7 +231,7 @@ PClassActor::PClassActor()
PoisonDamage = 0; PoisonDamage = 0;
FastSpeed = -1.; FastSpeed = -1.;
RDFactor = FRACUNIT; RDFactor = FRACUNIT;
CameraHeight = FIXED_MIN; CameraHeight = INT_MIN;
DropItems = NULL; DropItems = NULL;

View file

@ -242,15 +242,15 @@ public:
FString Obituary; // Player was killed by this actor FString Obituary; // Player was killed by this actor
FString HitObituary; // Player was killed by this actor in melee FString HitObituary; // Player was killed by this actor in melee
fixed_t DeathHeight; // Height on normal death double DeathHeight; // Height on normal death
fixed_t BurnHeight; // Height on burning death double BurnHeight; // Height on burning death
PalEntry BloodColor; // Colorized blood PalEntry BloodColor; // Colorized blood
int GibHealth; // Negative health below which this monster dies an extreme death int GibHealth; // Negative health below which this monster dies an extreme death
int WoundHealth; // Health needed to enter wound state int WoundHealth; // Health needed to enter wound state
int PoisonDamage; // Amount of poison damage int PoisonDamage; // Amount of poison damage
double FastSpeed; // speed in fast mode double FastSpeed; // speed in fast mode
fixed_t RDFactor; // Radius damage factor fixed_t RDFactor; // Radius damage factor
fixed_t CameraHeight; // Height of camera when used as such double CameraHeight; // Height of camera when used as such
FSoundID HowlSound; // Sound being played when electrocuted or poisoned FSoundID HowlSound; // Sound being played when electrocuted or poisoned
FName BloodType; // Blood replacement type FName BloodType; // Blood replacement type
FName BloodType2; // Bloopsplatter replacement type FName BloodType2; // Bloopsplatter replacement type

View file

@ -333,7 +333,7 @@ void cht_DoCheat (player_t *player, int cheat)
player->mo->flags6 = player->mo->GetDefault()->flags6; player->mo->flags6 = player->mo->GetDefault()->flags6;
player->mo->flags7 = player->mo->GetDefault()->flags7; player->mo->flags7 = player->mo->GetDefault()->flags7;
player->mo->renderflags &= ~RF_INVISIBLE; player->mo->renderflags &= ~RF_INVISIBLE;
player->mo->height = player->mo->GetDefault()->height; player->mo->Height = player->mo->GetDefault()->Height;
player->mo->radius = player->mo->GetDefault()->radius; player->mo->radius = player->mo->GetDefault()->radius;
player->mo->special1 = 0; // required for the Hexen fighter's fist attack. player->mo->special1 = 0; // required for the Hexen fighter's fist attack.
// This gets set by AActor::Die as flag for the wimpy death and must be reset here. // This gets set by AActor::Die as flag for the wimpy death and must be reset here.

View file

@ -760,7 +760,7 @@ void P_LineOpening_XFloors (FLineOpening &open, AActor * thing, const line_t *li
fixed_t thingbot, thingtop; fixed_t thingbot, thingtop;
thingbot = thing->_f_Z(); thingbot = thing->_f_Z();
thingtop = thingbot + (thing->height==0? 1:thing->height); thingtop = thingbot + (thing->_f_height()==0? 1:thing->_f_height());
extsector_t::xfloor *xf[2] = {&linedef->frontsector->e->XFloor, &linedef->backsector->e->XFloor}; extsector_t::xfloor *xf[2] = {&linedef->frontsector->e->XFloor, &linedef->backsector->e->XFloor};

View file

@ -278,7 +278,7 @@ bool P_LineOpening_3dMidtex(AActor *thing, const line_t *linedef, FLineOpening &
open.abovemidtex = false; open.abovemidtex = false;
if (P_GetMidTexturePosition(linedef, 0, &tt, &tb)) if (P_GetMidTexturePosition(linedef, 0, &tt, &tb))
{ {
if (thing->_f_Z() + (thing->height/2) < (tt + tb)/2) if (thing->_f_Z() + (thing->_f_height()/2) < (tt + tb)/2)
{ {
if (tb < open.top) if (tb < open.top)
{ {

View file

@ -4087,7 +4087,7 @@ int DLevelScript::GetActorProperty (int tid, int property)
case APROP_Mass: return actor->Mass; case APROP_Mass: return actor->Mass;
case APROP_Accuracy: return actor->accuracy; case APROP_Accuracy: return actor->accuracy;
case APROP_Stamina: return actor->stamina; case APROP_Stamina: return actor->stamina;
case APROP_Height: return actor->height; case APROP_Height: return actor->_f_height();
case APROP_Radius: return actor->_f_radius(); case APROP_Radius: return actor->_f_radius();
case APROP_ReactionTime:return actor->reactiontime; case APROP_ReactionTime:return actor->reactiontime;
case APROP_MeleeRange: return actor->meleerange; case APROP_MeleeRange: return actor->meleerange;
@ -4769,7 +4769,7 @@ static bool DoSpawnDecal(AActor *actor, const FDecalTemplate *tpl, int flags, an
angle += actor->_f_angle(); angle += actor->_f_angle();
} }
return NULL != ShootDecal(tpl, actor, actor->Sector, actor->_f_X(), actor->_f_Y(), return NULL != ShootDecal(tpl, actor, actor->Sector, actor->_f_X(), actor->_f_Y(),
actor->_f_Z() + (actor->height>>1) - actor->floorclip + actor->GetBobOffset() + zofs, actor->_f_Z() + (actor->_f_height()>>1) - actor->floorclip + actor->GetBobOffset() + zofs,
angle, distance, !!(flags & SDF_PERMANENT)); angle, distance, !!(flags & SDF_PERMANENT));
} }
@ -4998,7 +4998,7 @@ int DLevelScript::CallFunction(int argCount, int funcIndex, SDWORD *args)
} }
else else
{ {
return actor->GetCameraHeight(); return DoubleToACS(actor->GetCameraHeight());
} }
} }
else return 0; else return 0;

View file

@ -410,7 +410,7 @@ static void MakeFountain (AActor *actor, int color1, int color2)
angle_t an = M_Random()<<(24-ANGLETOFINESHIFT); angle_t an = M_Random()<<(24-ANGLETOFINESHIFT);
fixed_t out = FixedMul (actor->_f_radius(), M_Random()<<8); fixed_t out = FixedMul (actor->_f_radius(), M_Random()<<8);
fixedvec3 pos = actor->Vec3Offset(FixedMul(out, finecosine[an]), FixedMul(out, finesine[an]), actor->height + FRACUNIT); fixedvec3 pos = actor->Vec3Offset(FixedMul(out, finecosine[an]), FixedMul(out, finesine[an]), actor->_f_height() + FRACUNIT);
particle->x = pos.x; particle->x = pos.x;
particle->y = pos.y; particle->y = pos.y;
particle->z = pos.z; particle->z = pos.z;
@ -439,9 +439,9 @@ void P_RunEffect (AActor *actor, int effects)
if ((effects & FX_ROCKET) && (cl_rockettrails & 1)) if ((effects & FX_ROCKET) && (cl_rockettrails & 1))
{ {
// Rocket trail // Rocket trail
double backx = -actor->_Radius() * 2 * moveangle.Cos(); double backx = -actor->radius * 2 * moveangle.Cos();
double backy = -actor->_Radius() * 2 * moveangle.Sin(); double backy = -actor->radius * 2 * moveangle.Sin();
double backz = actor->_Height() * ((2. / 3) - actor->Vel.Z / 8); double backz = actor->Height * ((2. / 3) - actor->Vel.Z / 8);
DAngle an = moveangle + 90.; DAngle an = moveangle + 90.;
int speed; int speed;
@ -494,7 +494,7 @@ void P_RunEffect (AActor *actor, int effects)
// Grenade trail // Grenade trail
fixedvec3 pos = actor->_f_Vec3Angle(-actor->_f_radius() * 2, moveangle.BAMs(), fixedvec3 pos = actor->_f_Vec3Angle(-actor->_f_radius() * 2, moveangle.BAMs(),
fixed_t(-(actor->height >> 3) * (actor->Vel.Z) + (2 * actor->height) / 3)); fixed_t(-(actor->_f_height() >> 3) * (actor->Vel.Z) + (2 * actor->_f_height()) / 3));
P_DrawSplash2 (6, pos.x, pos.y, pos.z, P_DrawSplash2 (6, pos.x, pos.y, pos.z,
moveangle.BAMs() + ANG180, 2, 2); moveangle.BAMs() + ANG180, 2, 2);
@ -538,7 +538,7 @@ void P_RunEffect (AActor *actor, int effects)
particle->size = 1; particle->size = 1;
if (M_Random () < 128) if (M_Random () < 128)
{ // make particle fall from top of actor { // make particle fall from top of actor
particle->z += actor->height; particle->z += actor->_f_height();
particle->vel.z = -particle->vel.z; particle->vel.z = -particle->vel.z;
particle->accz = -particle->accz; particle->accz = -particle->accz;
} }
@ -889,7 +889,7 @@ void P_DisconnectEffect (AActor *actor)
fixed_t xo = ((M_Random() - 128) << 9) * (actor->_f_radius() >> FRACBITS); fixed_t xo = ((M_Random() - 128) << 9) * (actor->_f_radius() >> FRACBITS);
fixed_t yo = ((M_Random() - 128) << 9) * (actor->_f_radius() >> FRACBITS); fixed_t yo = ((M_Random() - 128) << 9) * (actor->_f_radius() >> FRACBITS);
fixed_t zo = (M_Random() << 8) * (actor->height >> FRACBITS); fixed_t zo = (M_Random() << 8) * (actor->_f_height() >> FRACBITS);
fixedvec3 pos = actor->Vec3Offset(xo, yo, zo); fixedvec3 pos = actor->Vec3Offset(xo, yo, zo);
p->x = pos.x; p->x = pos.x;
p->y = pos.y; p->y = pos.y;

View file

@ -2642,7 +2642,7 @@ static bool P_CheckForResurrection(AActor *self, bool usevilestates)
!= P_Find3DFloor(testsec, self->_f_Pos(), false, true, zdist2)) != P_Find3DFloor(testsec, self->_f_Pos(), false, true, zdist2))
{ {
// Not on same floor // Not on same floor
if (vilesec == corpsec || abs(zdist1 - self->_f_Z()) > self->height) if (vilesec == corpsec || abs(zdist1 - self->_f_Z()) > self->_f_height())
continue; continue;
} }
} }
@ -2651,16 +2651,16 @@ static bool P_CheckForResurrection(AActor *self, bool usevilestates)
corpsehit->Vel.X = corpsehit->Vel.Y = 0; corpsehit->Vel.X = corpsehit->Vel.Y = 0;
// [RH] Check against real height and _f_radius() // [RH] Check against real height and _f_radius()
fixed_t oldheight = corpsehit->height; double oldheight = corpsehit->Height;
double oldradius = corpsehit->radius; double oldradius = corpsehit->radius;
ActorFlags oldflags = corpsehit->flags; ActorFlags oldflags = corpsehit->flags;
corpsehit->flags |= MF_SOLID; corpsehit->flags |= MF_SOLID;
corpsehit->height = corpsehit->GetDefault()->height; corpsehit->Height = corpsehit->GetDefault()->Height;
bool check = P_CheckPosition(corpsehit, corpsehit->Pos()); bool check = P_CheckPosition(corpsehit, corpsehit->Pos());
corpsehit->flags = oldflags; corpsehit->flags = oldflags;
corpsehit->radius = oldradius; corpsehit->radius = oldradius;
corpsehit->height = oldheight; corpsehit->Height = oldheight;
if (!check) continue; if (!check) continue;
// got one! // got one!
@ -2702,10 +2702,10 @@ static bool P_CheckForResurrection(AActor *self, bool usevilestates)
} }
if (ib_compatflags & BCOMPATF_VILEGHOSTS) if (ib_compatflags & BCOMPATF_VILEGHOSTS)
{ {
corpsehit->height <<= 2; corpsehit->Height *= 4;
// [GZ] This was a commented-out feature, so let's make use of it, // [GZ] This was a commented-out feature, so let's make use of it,
// but only for ghost monsters so that they are visibly different. // but only for ghost monsters so that they are visibly different.
if (corpsehit->height == 0) if (corpsehit->Height == 0)
{ {
// Make raised corpses look ghostly // Make raised corpses look ghostly
if (corpsehit->alpha > TRANSLUC50) if (corpsehit->alpha > TRANSLUC50)
@ -2721,7 +2721,7 @@ static bool P_CheckForResurrection(AActor *self, bool usevilestates)
} }
else else
{ {
corpsehit->height = info->height; // [RH] Use real mobj height corpsehit->Height = info->Height; // [RH] Use real mobj height
corpsehit->radius = info->radius; // [RH] Use real radius corpsehit->radius = info->radius; // [RH] Use real radius
} }
@ -2872,7 +2872,7 @@ void A_Face (AActor *self, AActor *other, angle_t _max_turn, angle_t _max_pitch,
// its body. // its body.
if (target_z >= other->_f_Top()) if (target_z >= other->_f_Top())
{ {
target_z = other->_f_Z() + (other->height / 2); target_z = other->_f_Z() + (other->_f_height() / 2);
} }
//Note there is no +32*FRACUNIT on purpose. This is for customization sake. //Note there is no +32*FRACUNIT on purpose. This is for customization sake.
@ -2880,9 +2880,9 @@ void A_Face (AActor *self, AActor *other, angle_t _max_turn, angle_t _max_pitch,
if (flags & FAF_BOTTOM) if (flags & FAF_BOTTOM)
target_z = other->_f_Z() + other->GetBobOffset(); target_z = other->_f_Z() + other->GetBobOffset();
if (flags & FAF_MIDDLE) if (flags & FAF_MIDDLE)
target_z = other->_f_Z() + (other->height / 2) + other->GetBobOffset(); target_z = other->_f_Z() + (other->_f_height() / 2) + other->GetBobOffset();
if (flags & FAF_TOP) if (flags & FAF_TOP)
target_z = other->_f_Z() + (other->height) + other->GetBobOffset(); target_z = other->_f_Z() + (other->_f_height()) + other->GetBobOffset();
target_z += z_add; target_z += z_add;
@ -3000,7 +3000,7 @@ DEFINE_ACTION_FUNCTION(AActor, A_MonsterRail)
// We probably won't hit the target, but aim at it anyway so we don't look stupid. // We probably won't hit the target, but aim at it anyway so we don't look stupid.
fixedvec2 pos = self->_f_Vec2To(self->target); fixedvec2 pos = self->_f_Vec2To(self->target);
DVector2 xydiff(pos.x, pos.y); DVector2 xydiff(pos.x, pos.y);
double zdiff = (self->target->_f_Z() + (self->target->height>>1)) - (self->_f_Z() + (self->height>>1) - self->floorclip); double zdiff = (self->target->_f_Z() + (self->target->_f_height()>>1)) - (self->_f_Z() + (self->_f_height()>>1) - self->floorclip);
self->Angles.Pitch = -VecToAngle(xydiff.Length(), zdiff); self->Angles.Pitch = -VecToAngle(xydiff.Length(), zdiff);
} }
@ -3178,7 +3178,7 @@ AInventory *P_DropItem (AActor *source, PClassActor *type, int dropamount, int c
} }
else else
{ {
spawnz += source->height / 2; spawnz += source->_f_height() / 2;
} }
} }
mo = Spawn(type, source->_f_X(), source->_f_Y(), spawnz, ALLOW_REPLACE); mo = Spawn(type, source->_f_X(), source->_f_Y(), spawnz, ALLOW_REPLACE);
@ -3483,7 +3483,7 @@ int P_Massacre ()
bool A_SinkMobj (AActor *actor, fixed_t speed) bool A_SinkMobj (AActor *actor, fixed_t speed)
{ {
if (actor->floorclip < actor->height) if (actor->floorclip < actor->_f_height())
{ {
actor->floorclip += speed; actor->floorclip += speed;
return false; return false;

View file

@ -89,7 +89,7 @@ void P_TouchSpecialThing (AActor *special, AActor *toucher)
// The pickup is at or above the toucher's feet OR // The pickup is at or above the toucher's feet OR
// The pickup is below the toucher. // The pickup is below the toucher.
if (delta > toucher->height || delta < MIN(-32*FRACUNIT, -special->height)) if (delta > toucher->_f_height() || delta < MIN(-32*FRACUNIT, -special->_f_height()))
{ // out of reach { // out of reach
return; return;
} }
@ -393,7 +393,7 @@ void AActor::Die (AActor *source, AActor *inflictor, int dmgflags)
flags6 |= MF6_KILLED; flags6 |= MF6_KILLED;
// [RH] Allow the death height to be overridden using metadata. // [RH] Allow the death height to be overridden using metadata.
fixed_t metaheight = -1; double metaheight = -1;
if (DamageType == NAME_Fire) if (DamageType == NAME_Fire)
{ {
metaheight = GetClass()->BurnHeight; metaheight = GetClass()->BurnHeight;
@ -404,11 +404,11 @@ void AActor::Die (AActor *source, AActor *inflictor, int dmgflags)
} }
if (metaheight < 0) if (metaheight < 0)
{ {
height >>= 2; Height *= 0.25;
} }
else else
{ {
height = MAX<fixed_t> (metaheight, 0); Height = MAX<double> (metaheight, 0);
} }
// [RH] If the thing has a special, execute and remove it // [RH] If the thing has a special, execute and remove it

View file

@ -291,7 +291,7 @@ void P_GetFloorCeilingZ(FCheckPosition &tmf, int flags)
sector_t *sec = (!(flags & FFCF_SAMESECTOR) || tmf.thing->Sector == NULL)? P_PointInSector(tmf.x, tmf.y) : tmf.sector; sector_t *sec = (!(flags & FFCF_SAMESECTOR) || tmf.thing->Sector == NULL)? P_PointInSector(tmf.x, tmf.y) : tmf.sector;
F3DFloor *ffc, *fff; F3DFloor *ffc, *fff;
tmf.ceilingz = FIXED2DBL(sec->NextHighestCeilingAt(tmf.x, tmf.y, tmf.z, tmf.z + tmf.thing->height, flags, &tmf.ceilingsector, &ffc)); tmf.ceilingz = FIXED2DBL(sec->NextHighestCeilingAt(tmf.x, tmf.y, tmf.z, tmf.z + tmf.thing->_f_height(), flags, &tmf.ceilingsector, &ffc));
tmf.dropoffz = sec->NextLowestFloorAt(tmf.x, tmf.y, tmf.z, flags, tmf.thing->MaxStepHeight, &tmf.floorsector, &fff); tmf.dropoffz = sec->NextLowestFloorAt(tmf.x, tmf.y, tmf.z, flags, tmf.thing->MaxStepHeight, &tmf.floorsector, &fff);
tmf.floorz = FIXED2DBL(tmf.dropoffz); tmf.floorz = FIXED2DBL(tmf.dropoffz);
@ -436,7 +436,7 @@ bool P_TeleportMove(AActor *thing, fixed_t x, fixed_t y, fixed_t z, bool telefra
sector_t *sector = P_PointInSector(x, y); sector_t *sector = P_PointInSector(x, y);
FPortalGroupArray grouplist; FPortalGroupArray grouplist;
FMultiBlockLinesIterator mit(grouplist, x, y, z, thing->height, thing->_f_radius(), sector); FMultiBlockLinesIterator mit(grouplist, x, y, z, thing->_f_height(), thing->_f_radius(), sector);
FMultiBlockLinesIterator::CheckResult cres; FMultiBlockLinesIterator::CheckResult cres;
while (mit.Next(&cres)) while (mit.Next(&cres))
@ -447,7 +447,7 @@ bool P_TeleportMove(AActor *thing, fixed_t x, fixed_t y, fixed_t z, bool telefra
if (tmf.touchmidtex) tmf.dropoffz = tmf._f_floorz(); if (tmf.touchmidtex) tmf.dropoffz = tmf._f_floorz();
FMultiBlockThingsIterator mit2(grouplist, x, y, z, thing->height, thing->_f_radius(), false, sector); FMultiBlockThingsIterator mit2(grouplist, x, y, z, thing->_f_height(), thing->_f_radius(), false, sector);
FMultiBlockThingsIterator::CheckResult cres2; FMultiBlockThingsIterator::CheckResult cres2;
while (mit2.Next(&cres2)) while (mit2.Next(&cres2))
@ -479,7 +479,7 @@ bool P_TeleportMove(AActor *thing, fixed_t x, fixed_t y, fixed_t z, bool telefra
if (!(th->flags3 & thing->flags3 & MF3_DONTOVERLAP)) if (!(th->flags3 & thing->flags3 & MF3_DONTOVERLAP))
{ {
if (z > th->_f_Top() || // overhead if (z > th->_f_Top() || // overhead
z + thing->height < th->_f_Z()) // underneath z + thing->_f_height() < th->_f_Z()) // underneath
continue; continue;
} }
} }
@ -1380,7 +1380,7 @@ bool PIT_CheckThing(FMultiBlockThingsIterator &it, FMultiBlockThingsIterator::Ch
return true; return true;
} }
int clipheight; double clipheight;
if (thing->projectilepassheight > 0) if (thing->projectilepassheight > 0)
{ {
@ -1392,11 +1392,11 @@ bool PIT_CheckThing(FMultiBlockThingsIterator &it, FMultiBlockThingsIterator::Ch
} }
else else
{ {
clipheight = thing->height; clipheight = thing->Height;
} }
// Check if it went over / under // Check if it went over / under
if (tm.thing->_f_Z() > thing->_f_Z() + clipheight) if (tm.thing->Z() > thing->Z() + clipheight)
{ // Over thing { // Over thing
return true; return true;
} }
@ -1605,7 +1605,7 @@ bool P_CheckPosition(AActor *thing, fixed_t x, fixed_t y, FCheckPosition &tm, bo
{ {
sector_t *newsec; sector_t *newsec;
AActor *thingblocker; AActor *thingblocker;
fixed_t realheight = thing->height; double realHeight = thing->Height;
tm.thing = thing; tm.thing = thing;
@ -1645,14 +1645,14 @@ bool P_CheckPosition(AActor *thing, fixed_t x, fixed_t y, FCheckPosition &tm, bo
thingblocker = NULL; thingblocker = NULL;
if (thing->player) if (thing->player)
{ // [RH] Fake taller height to catch stepping up into things. { // [RH] Fake taller height to catch stepping up into things.
thing->height = realheight + thing->MaxStepHeight; thing->Height = realHeight + FIXED2DBL(thing->MaxStepHeight);
} }
tm.stepthing = NULL; tm.stepthing = NULL;
FBoundingBox box(x, y, thing->_f_radius()); FBoundingBox box(x, y, thing->_f_radius());
FPortalGroupArray pcheck; FPortalGroupArray pcheck;
FMultiBlockThingsIterator it2(pcheck, x, y, thing->_f_Z(), thing->height, thing->_f_radius(), false, newsec); FMultiBlockThingsIterator it2(pcheck, x, y, thing->_f_Z(), thing->_f_height(), thing->_f_radius(), false, newsec);
FMultiBlockThingsIterator::CheckResult tcres; FMultiBlockThingsIterator::CheckResult tcres;
while ((it2.Next(&tcres))) while ((it2.Next(&tcres)))
@ -1667,7 +1667,7 @@ bool P_CheckPosition(AActor *thing, fixed_t x, fixed_t y, FCheckPosition &tm, bo
// If this blocks through a restricted line portal, it will always completely block. // If this blocks through a restricted line portal, it will always completely block.
if (BlockingMobj == NULL || (i_compatflags & COMPATF_NO_PASSMOBJ) || (tcres.portalflags & FFCF_RESTRICTEDPORTAL)) if (BlockingMobj == NULL || (i_compatflags & COMPATF_NO_PASSMOBJ) || (tcres.portalflags & FFCF_RESTRICTEDPORTAL))
{ // Thing slammed into something; don't let it move now. { // Thing slammed into something; don't let it move now.
thing->height = realheight; thing->Height = realHeight;
return false; return false;
} }
else if (!BlockingMobj->player && !(thing->flags & (MF_FLOAT | MF_MISSILE | MF_SKULLFLY)) && else if (!BlockingMobj->player && !(thing->flags & (MF_FLOAT | MF_MISSILE | MF_SKULLFLY)) &&
@ -1686,7 +1686,7 @@ bool P_CheckPosition(AActor *thing, fixed_t x, fixed_t y, FCheckPosition &tm, bo
if (thingblocker) if (thingblocker)
{ // There is something to step up on. Return this thing as { // There is something to step up on. Return this thing as
// the blocker so that we don't step up. // the blocker so that we don't step up.
thing->height = realheight; thing->Height = realHeight;
return false; return false;
} }
// Nothing is blocking us, but this actor potentially could // Nothing is blocking us, but this actor potentially could
@ -1695,7 +1695,7 @@ bool P_CheckPosition(AActor *thing, fixed_t x, fixed_t y, FCheckPosition &tm, bo
} }
else else
{ // Definitely blocking { // Definitely blocking
thing->height = realheight; thing->Height = realHeight;
return false; return false;
} }
} }
@ -1715,14 +1715,14 @@ bool P_CheckPosition(AActor *thing, fixed_t x, fixed_t y, FCheckPosition &tm, bo
validcount++; validcount++;
thing->BlockingMobj = NULL; thing->BlockingMobj = NULL;
thing->height = realheight; thing->Height = realHeight;
if (actorsonly || (thing->flags & MF_NOCLIP)) if (actorsonly || (thing->flags & MF_NOCLIP))
return (thing->BlockingMobj = thingblocker) == NULL; return (thing->BlockingMobj = thingblocker) == NULL;
spechit.Clear(); spechit.Clear();
portalhit.Clear(); portalhit.Clear();
FMultiBlockLinesIterator it(pcheck, x, y, thing->_f_Z(), thing->height, thing->_f_radius(), newsec); FMultiBlockLinesIterator it(pcheck, x, y, thing->_f_Z(), thing->_f_height(), thing->_f_radius(), newsec);
FMultiBlockLinesIterator::CheckResult lcres; FMultiBlockLinesIterator::CheckResult lcres;
fixed_t thingdropoffz = tm._f_floorz(); fixed_t thingdropoffz = tm._f_floorz();
@ -1754,7 +1754,7 @@ bool P_CheckPosition(AActor *thing, fixed_t x, fixed_t y, FCheckPosition &tm, bo
{ {
return false; return false;
} }
if (tm.ceilingz - tm.floorz < thing->_Height()) if (tm.ceilingz - tm.floorz < thing->Height)
{ {
return false; return false;
} }
@ -1925,7 +1925,7 @@ void P_FakeZMovement(AActor *mo)
if (!(mo->flags & MF_SKULLFLY) && !(mo->flags & MF_INFLOAT)) if (!(mo->flags & MF_SKULLFLY) && !(mo->flags & MF_INFLOAT))
{ {
fixed_t dist = mo->AproxDistance(mo->target); fixed_t dist = mo->AproxDistance(mo->target);
fixed_t delta = (mo->target->_f_Z() + (mo->height >> 1)) - mo->_f_Z(); fixed_t delta = (mo->target->_f_Z() + (mo->_f_height() >> 1)) - mo->_f_Z();
if (delta < 0 && dist < -(delta * 3)) if (delta < 0 && dist < -(delta * 3))
mo->_f_AddZ(-mo->_f_floatspeed()); mo->_f_AddZ(-mo->_f_floatspeed());
else if (delta > 0 && dist < (delta * 3)) else if (delta > 0 && dist < (delta * 3))
@ -1947,7 +1947,7 @@ void P_FakeZMovement(AActor *mo)
if (mo->Top() > mo->ceilingz) if (mo->Top() > mo->ceilingz)
{ // hit the ceiling { // hit the ceiling
mo->SetZ(mo->ceilingz - mo->_Height()); mo->SetZ(mo->ceilingz - mo->Height);
} }
} }
@ -2055,8 +2055,8 @@ bool P_TryMove(AActor *thing, fixed_t x, fixed_t y,
goto pushline; goto pushline;
} }
else if (BlockingMobj->_f_Top() - thing->_f_Z() > thing->MaxStepHeight else if (BlockingMobj->_f_Top() - thing->_f_Z() > thing->MaxStepHeight
|| (BlockingMobj->Sector->ceilingplane.ZatPoint(x, y) - (BlockingMobj->_f_Top()) < thing->height) || (BlockingMobj->Sector->ceilingplane.ZatPoint(x, y) - (BlockingMobj->_f_Top()) < thing->_f_height())
|| (tm.ceilingz - (BlockingMobj->Top()) < thing->_Height())) || (tm.ceilingz - (BlockingMobj->Top()) < thing->Height))
{ {
goto pushline; goto pushline;
} }
@ -2075,7 +2075,7 @@ bool P_TryMove(AActor *thing, fixed_t x, fixed_t y,
} }
else if (thing->flags3 & MF3_CEILINGHUGGER) else if (thing->flags3 & MF3_CEILINGHUGGER)
{ {
thing->SetZ(tm.ceilingz - thing->_Height()); thing->SetZ(tm.ceilingz - thing->Height);
} }
if (onfloor && tm.floorsector == thing->floorsector) if (onfloor && tm.floorsector == thing->floorsector)
@ -2084,7 +2084,7 @@ bool P_TryMove(AActor *thing, fixed_t x, fixed_t y,
} }
if (!(thing->flags & MF_NOCLIP)) if (!(thing->flags & MF_NOCLIP))
{ {
if (tm.ceilingz - tm.floorz < thing->_Height()) if (tm.ceilingz - tm.floorz < thing->Height)
{ {
goto pushline; // doesn't fit goto pushline; // doesn't fit
} }
@ -2238,7 +2238,7 @@ bool P_TryMove(AActor *thing, fixed_t x, fixed_t y,
bool oldAboveFakeFloor, oldAboveFakeCeiling; bool oldAboveFakeFloor, oldAboveFakeCeiling;
fixed_t viewheight; fixed_t viewheight;
viewheight = thing->player ? thing->player->viewheight : thing->height / 2; viewheight = thing->player ? thing->player->viewheight : thing->_f_height() / 2;
oldAboveFakeFloor = oldAboveFakeCeiling = false; // pacify GCC oldAboveFakeFloor = oldAboveFakeCeiling = false; // pacify GCC
if (oldsec->heightsec) if (oldsec->heightsec)
@ -2545,18 +2545,18 @@ bool P_CheckMove(AActor *thing, fixed_t x, fixed_t y)
} }
else if (thing->flags3 & MF3_CEILINGHUGGER) else if (thing->flags3 & MF3_CEILINGHUGGER)
{ {
newz = tm._f_ceilingz() - thing->height; newz = tm._f_ceilingz() - thing->_f_height();
} }
if (!(thing->flags & MF_NOCLIP)) if (!(thing->flags & MF_NOCLIP))
{ {
if (tm.ceilingz - tm.floorz < thing->_Height()) if (tm.ceilingz - tm.floorz < thing->Height)
{ {
return false; return false;
} }
if (!(thing->flags & MF_TELEPORT) if (!(thing->flags & MF_TELEPORT)
&& tm.ceilingz - newz < thing->_Height() && tm.ceilingz - newz < thing->Height
&& !(thing->flags3 & MF3_CEILINGHUGGER) && !(thing->flags3 & MF3_CEILINGHUGGER)
&& (!(thing->flags2 & MF2_FLY) || !(thing->flags & MF_NOGRAVITY))) && (!(thing->flags2 & MF2_FLY) || !(thing->flags & MF_NOGRAVITY)))
{ {
@ -2832,10 +2832,10 @@ void FSlide::SlideTraverse(fixed_t startx, fixed_t starty, fixed_t endx, fixed_t
// set openrange, opentop, openbottom // set openrange, opentop, openbottom
P_LineOpening(open, slidemo, li, it.InterceptPoint(in)); P_LineOpening(open, slidemo, li, it.InterceptPoint(in));
if (open.range < slidemo->height) if (open.range < slidemo->_f_height())
goto isblocking; // doesn't fit goto isblocking; // doesn't fit
if (open.top - slidemo->_f_Z() < slidemo->height) if (open.top - slidemo->_f_Z() < slidemo->_f_height())
goto isblocking; // mobj is too high goto isblocking; // mobj is too high
if (open.bottom - slidemo->_f_Z() > slidemo->MaxStepHeight) if (open.bottom - slidemo->_f_Z() > slidemo->MaxStepHeight)
@ -3187,10 +3187,10 @@ bool FSlide::BounceTraverse(fixed_t startx, fixed_t starty, fixed_t endx, fixed_
P_LineOpening(open, slidemo, li, it.InterceptPoint(in)); // set openrange, opentop, openbottom P_LineOpening(open, slidemo, li, it.InterceptPoint(in)); // set openrange, opentop, openbottom
if (open.range < slidemo->height) if (open.range < slidemo->_f_height())
goto bounceblocking; // doesn't fit goto bounceblocking; // doesn't fit
if (open.top - slidemo->_f_Z() < slidemo->height) if (open.top - slidemo->_f_Z() < slidemo->_f_height())
goto bounceblocking; // mobj is too high goto bounceblocking; // mobj is too high
if (open.bottom > slidemo->_f_Z()) if (open.bottom > slidemo->_f_Z())
@ -3749,7 +3749,7 @@ struct aim_t
fixed_t bottomz = rover->bottom.plane->ZatPoint(startpos); fixed_t bottomz = rover->bottom.plane->ZatPoint(startpos);
if (bottomz >= startpos.z + shootthing->height) if (bottomz >= startpos.z + shootthing->_f_height())
{ {
lastceilingplane = rover->bottom.plane; lastceilingplane = rover->bottom.plane;
// no ceiling portal if below a 3D floor // no ceiling portal if below a 3D floor
@ -3916,7 +3916,7 @@ struct aim_t
// check angles to see if the thing can be aimed at // check angles to see if the thing can be aimed at
thingtoppitch = -(int)R_PointToAngle2(0, shootz, dist, th->_f_Z() + th->height); thingtoppitch = -(int)R_PointToAngle2(0, shootz, dist, th->_f_Z() + th->_f_height());
if (thingtoppitch > bottompitch) if (thingtoppitch > bottompitch)
continue; // shot over the thing continue; // shot over the thing
@ -4027,7 +4027,7 @@ struct aim_t
DAngle P_AimLineAttack(AActor *t1, DAngle angle, double distance, FTranslatedLineTarget *pLineTarget, DAngle vrange, DAngle P_AimLineAttack(AActor *t1, DAngle angle, double distance, FTranslatedLineTarget *pLineTarget, DAngle vrange,
int flags, AActor *target, AActor *friender) int flags, AActor *target, AActor *friender)
{ {
fixed_t shootz = t1->_f_Z() + (t1->height >> 1) - t1->floorclip; fixed_t shootz = t1->_f_Z() + (t1->_f_height() >> 1) - t1->floorclip;
if (t1->player != NULL) if (t1->player != NULL)
{ {
shootz += fixed_t(t1->player->mo->AttackZOffset * t1->player->crouchfactor); shootz += fixed_t(t1->player->mo->AttackZOffset * t1->player->crouchfactor);
@ -4172,7 +4172,7 @@ AActor *P_LineAttack(AActor *t1, DAngle angle, double distance,
vy = FLOAT2FIXED(pc * angle.Sin()); vy = FLOAT2FIXED(pc * angle.Sin());
vz = FLOAT2FIXED(-pitch.Sin()); vz = FLOAT2FIXED(-pitch.Sin());
shootz = t1->_f_Z() - t1->floorclip + (t1->height >> 1); shootz = t1->_f_Z() - t1->floorclip + (t1->_f_height() >> 1);
if (t1->player != NULL) if (t1->player != NULL)
{ {
shootz += fixed_t(t1->player->mo->AttackZOffset * t1->player->crouchfactor); shootz += fixed_t(t1->player->mo->AttackZOffset * t1->player->crouchfactor);
@ -4434,7 +4434,7 @@ AActor *P_LinePickActor(AActor *t1, angle_t angle, fixed_t distance, int pitch,
vy = FixedMul(finecosine[pitch], finesine[angle]); vy = FixedMul(finecosine[pitch], finesine[angle]);
vz = -finesine[pitch]; vz = -finesine[pitch];
shootz = t1->_f_Z() - t1->floorclip + (t1->height >> 1); shootz = t1->_f_Z() - t1->floorclip + (t1->_f_height() >> 1);
if (t1->player != NULL) if (t1->player != NULL)
{ {
shootz += fixed_t(t1->player->mo->AttackZOffset * t1->player->crouchfactor); shootz += fixed_t(t1->player->mo->AttackZOffset * t1->player->crouchfactor);
@ -4551,7 +4551,7 @@ void P_TraceBleed(int damage, fixed_t x, fixed_t y, fixed_t z, AActor *actor, an
void P_TraceBleed(int damage, AActor *target, angle_t angle, int pitch) void P_TraceBleed(int damage, AActor *target, angle_t angle, int pitch)
{ {
P_TraceBleed(damage, target->_f_X(), target->_f_Y(), target->_f_Z() + target->height / 2, P_TraceBleed(damage, target->_f_X(), target->_f_Y(), target->_f_Z() + target->_f_height() / 2,
target, angle, pitch); target, angle, pitch);
} }
@ -4581,7 +4581,7 @@ void P_TraceBleed(int damage, AActor *target, AActor *missile)
{ {
pitch = 0; pitch = 0;
} }
P_TraceBleed(damage, target->_f_X(), target->_f_Y(), target->_f_Z() + target->height / 2, P_TraceBleed(damage, target->_f_X(), target->_f_Y(), target->_f_Z() + target->_f_height() / 2,
target, missile->__f_AngleTo(target), target, missile->__f_AngleTo(target),
pitch); pitch);
} }
@ -4600,7 +4600,7 @@ void P_TraceBleed(int damage, FTranslatedLineTarget *t, AActor *puff)
} }
fixed_t randpitch = (pr_tracebleed() - 128) << 16; fixed_t randpitch = (pr_tracebleed() - 128) << 16;
P_TraceBleed(damage, t->linetarget->_f_X(), t->linetarget->_f_Y(), t->linetarget->_f_Z() + t->linetarget->height / 2, P_TraceBleed(damage, t->linetarget->_f_X(), t->linetarget->_f_Y(), t->linetarget->_f_Z() + t->linetarget->_f_height() / 2,
t->linetarget, FLOAT2ANGLE(t->angleFromSource.Degrees), 0); t->linetarget, FLOAT2ANGLE(t->angleFromSource.Degrees), 0);
} }
@ -4617,7 +4617,7 @@ void P_TraceBleed(int damage, AActor *target)
fixed_t one = pr_tracebleed() << 24; fixed_t one = pr_tracebleed() << 24;
fixed_t two = (pr_tracebleed() - 128) << 16; fixed_t two = (pr_tracebleed() - 128) << 16;
P_TraceBleed(damage, target->_f_X(), target->_f_Y(), target->_f_Z() + target->height / 2, P_TraceBleed(damage, target->_f_X(), target->_f_Y(), target->_f_Z() + target->_f_height() / 2,
target, one, two); target, one, two);
} }
} }
@ -4705,7 +4705,7 @@ void P_RailAttack(AActor *source, int damage, int offset_xy, fixed_t offset_z, i
vy = FixedMul(finecosine[pitch], finesine[angle]); vy = FixedMul(finecosine[pitch], finesine[angle]);
vz = finesine[pitch]; vz = finesine[pitch];
shootz = source->_f_Z() - source->floorclip + (source->height >> 1) + offset_z; shootz = source->_f_Z() - source->floorclip + (source->_f_height() >> 1) + offset_z;
if (!(railflags & RAF_CENTERZ)) if (!(railflags & RAF_CENTERZ))
{ {
@ -4874,7 +4874,7 @@ void P_AimCamera(AActor *t1, fixed_t &CameraX, fixed_t &CameraY, fixed_t &Camera
vy = FixedMul(finecosine[pitch], finesine[angle]); vy = FixedMul(finecosine[pitch], finesine[angle]);
vz = finesine[pitch]; vz = finesine[pitch];
sz = t1->_f_Z() - t1->floorclip + t1->height + (fixed_t)(clamp<double>(chase_height, -1000, 1000) * FRACUNIT); sz = t1->_f_Z() - t1->floorclip + t1->_f_height() + (fixed_t)(clamp<double>(chase_height, -1000, 1000) * FRACUNIT);
if (Trace(t1->_f_X(), t1->_f_Y(), sz, t1->Sector, if (Trace(t1->_f_X(), t1->_f_Y(), sz, t1->Sector,
vx, vy, vz, distance, 0, 0, NULL, trace) && vx, vy, vz, distance, 0, 0, NULL, trace) &&
@ -5107,7 +5107,7 @@ void P_UseLines(player_t *player)
bool foundline = false; bool foundline = false;
// If the player is transitioning a portal, use the group that is at its vertical center. // If the player is transitioning a portal, use the group that is at its vertical center.
fixedvec2 start = player->mo->GetPortalTransition(player->mo->height / 2); fixedvec2 start = player->mo->GetPortalTransition(player->mo->_f_height() / 2);
// [NS] Now queries the Player's UseRange. // [NS] Now queries the Player's UseRange.
fixedvec2 end = start + Vec2Angle(userange > 0? fixed_t(userange<<FRACBITS) : player->mo->UseRange, player->mo->_f_angle()); fixedvec2 end = start + Vec2Angle(userange > 0? fixed_t(userange<<FRACBITS) : player->mo->UseRange, player->mo->_f_angle());
@ -5244,7 +5244,7 @@ void P_RadiusAttack(AActor *bombspot, AActor *bombsource, int bombdamage, int bo
double bombdamagefloat = (double)bombdamage; double bombdamagefloat = (double)bombdamage;
FPortalGroupArray grouplist(FPortalGroupArray::PGA_Full3d); FPortalGroupArray grouplist(FPortalGroupArray::PGA_Full3d);
FMultiBlockThingsIterator it(grouplist, bombspot->_f_X(), bombspot->_f_Y(), bombspot->_f_Z() - bombdistfix, bombspot->height + bombdistfix*2, bombdistfix, false, bombspot->Sector); FMultiBlockThingsIterator it(grouplist, bombspot->_f_X(), bombspot->_f_Y(), bombspot->_f_Z() - bombdistfix, bombspot->_f_height() + bombdistfix*2, bombdistfix, false, bombspot->Sector);
FMultiBlockThingsIterator::CheckResult cres; FMultiBlockThingsIterator::CheckResult cres;
if (flags & RADF_SOURCEISSPOT) if (flags & RADF_SOURCEISSPOT)
@ -5637,7 +5637,7 @@ void P_DoCrunch(AActor *thing, FChangePosition *cpos)
{ {
AActor *mo; AActor *mo;
mo = Spawn(bloodcls, thing->PosPlusZ(thing->height / 2), ALLOW_REPLACE); mo = Spawn(bloodcls, thing->PosPlusZ(thing->_f_height() / 2), ALLOW_REPLACE);
mo->Vel.X = pr_crunch.Random2() / 16.; mo->Vel.X = pr_crunch.Random2() / 16.;
mo->Vel.Y = pr_crunch.Random2() / 16.; mo->Vel.Y = pr_crunch.Random2() / 16.;
@ -5653,7 +5653,7 @@ void P_DoCrunch(AActor *thing, FChangePosition *cpos)
an = (M_Random() - 128) << 24; an = (M_Random() - 128) << 24;
if (cl_bloodtype >= 1) if (cl_bloodtype >= 1)
{ {
P_DrawSplash2(32, thing->_f_X(), thing->_f_Y(), thing->_f_Z() + thing->height / 2, an, 2, bloodcolor); P_DrawSplash2(32, thing->_f_X(), thing->_f_Y(), thing->_f_Z() + thing->_f_height() / 2, an, 2, bloodcolor);
} }
} }
if (thing->CrushPainSound != 0 && !S_GetSoundPlayingInfo(thing, thing->CrushPainSound)) if (thing->CrushPainSound != 0 && !S_GetSoundPlayingInfo(thing, thing->CrushPainSound))
@ -5757,9 +5757,9 @@ int P_PushDown(AActor *thing, FChangePosition *cpos)
} }
fixed_t oldz = intersect->_f_Z(); fixed_t oldz = intersect->_f_Z();
P_AdjustFloorCeil(intersect, cpos); P_AdjustFloorCeil(intersect, cpos);
if (oldz > thing->_f_Z() - intersect->height) if (oldz > thing->_f_Z() - intersect->_f_height())
{ // Only push things down, not up. { // Only push things down, not up.
intersect->_f_SetZ(thing->_f_Z() - intersect->height); intersect->_f_SetZ(thing->_f_Z() - intersect->_f_height());
if (P_PushDown(intersect, cpos)) if (P_PushDown(intersect, cpos))
{ // Move blocked { // Move blocked
P_DoCrunch(intersect, cpos); P_DoCrunch(intersect, cpos);
@ -5895,9 +5895,9 @@ void PIT_CeilingLower(AActor *thing, FChangePosition *cpos)
} }
intersectors.Clear(); intersectors.Clear();
fixed_t oldz = thing->_f_Z(); fixed_t oldz = thing->_f_Z();
if (thing->ceilingz - thing->_Height() >= thing->floorz) if (thing->ceilingz - thing->Height >= thing->floorz)
{ {
thing->SetZ(thing->ceilingz - thing->_Height()); thing->SetZ(thing->ceilingz - thing->Height);
} }
else else
{ {
@ -5948,7 +5948,7 @@ void PIT_CeilingRaise(AActor *thing, FChangePosition *cpos)
thing->SetZ(thing->floorz); thing->SetZ(thing->floorz);
if (thing->Top() > thing->ceilingz) if (thing->Top() > thing->ceilingz)
{ {
thing->SetZ(thing->ceilingz - thing->_Height()); thing->SetZ(thing->ceilingz - thing->Height);
} }
P_CheckFakeFloorTriggers(thing, oldz); P_CheckFakeFloorTriggers(thing, oldz);
} }
@ -5957,7 +5957,7 @@ void PIT_CeilingRaise(AActor *thing, FChangePosition *cpos)
AActor *onmobj; AActor *onmobj;
if (!P_TestMobjZ(thing, true, &onmobj) && onmobj->Z() <= thing->Z()) if (!P_TestMobjZ(thing, true, &onmobj) && onmobj->Z() <= thing->Z())
{ {
thing->SetZ(MIN(thing->ceilingz - thing->_Height(), onmobj->Top())); thing->SetZ(MIN(thing->ceilingz - thing->Height, onmobj->Top()));
} }
} }
if (thing->player && thing->player->mo == thing) if (thing->player && thing->player->mo == thing)

View file

@ -260,7 +260,7 @@ void AActor::Serialize(FArchive &arc)
<< floorsector << floorsector
<< ceilingsector << ceilingsector
<< radius << radius
<< height << Height
<< projectilepassheight << projectilepassheight
<< Vel << Vel
<< tics << tics
@ -1198,7 +1198,7 @@ bool AActor::Grind(bool items)
{ {
flags &= ~MF_SOLID; flags &= ~MF_SOLID;
flags3 |= MF3_DONTGIB; flags3 |= MF3_DONTGIB;
height = 0; Height = 0;
radius = 0; radius = 0;
return false; return false;
} }
@ -1225,7 +1225,7 @@ bool AActor::Grind(bool items)
} }
flags &= ~MF_SOLID; flags &= ~MF_SOLID;
flags3 |= MF3_DONTGIB; flags3 |= MF3_DONTGIB;
height = 0; Height = 0;
radius = 0; radius = 0;
SetState (state); SetState (state);
if (isgeneric) // Not a custom crush state, so colorize it appropriately. if (isgeneric) // Not a custom crush state, so colorize it appropriately.
@ -1261,7 +1261,7 @@ bool AActor::Grind(bool items)
// if there's no gib sprite don't crunch it. // if there's no gib sprite don't crunch it.
flags &= ~MF_SOLID; flags &= ~MF_SOLID;
flags3 |= MF3_DONTGIB; flags3 |= MF3_DONTGIB;
height = 0; Height = 0;
radius = 0; radius = 0;
return false; return false;
} }
@ -1271,7 +1271,7 @@ bool AActor::Grind(bool items)
{ {
gib->RenderStyle = RenderStyle; gib->RenderStyle = RenderStyle;
gib->alpha = alpha; gib->alpha = alpha;
gib->height = 0; gib->Height = 0;
gib->radius = 0; gib->radius = 0;
PalEntry bloodcolor = GetBloodColor(); PalEntry bloodcolor = GetBloodColor();
@ -1742,12 +1742,12 @@ bool P_SeekerMissile (AActor *actor, angle_t _thresh, angle_t _turnMax, bool pre
{ // Need to seek vertically { // Need to seek vertically
fixed_t dist = MAX(1, FLOAT2FIXED(actor->Distance2D(target))); fixed_t dist = MAX(1, FLOAT2FIXED(actor->Distance2D(target)));
// Aim at a player's eyes and at the middle of the actor for everything else. // Aim at a player's eyes and at the middle of the actor for everything else.
fixed_t aimheight = target->height/2; fixed_t aimheight = target->_f_height()/2;
if (target->IsKindOf(RUNTIME_CLASS(APlayerPawn))) if (target->IsKindOf(RUNTIME_CLASS(APlayerPawn)))
{ {
aimheight = static_cast<APlayerPawn *>(target)->ViewHeight; aimheight = static_cast<APlayerPawn *>(target)->ViewHeight;
} }
pitch = ANGLE2DBL(R_PointToAngle2(0, actor->_f_Z() + actor->height/2, dist, target->_f_Z() + aimheight)); pitch = ANGLE2DBL(R_PointToAngle2(0, actor->_f_Z() + actor->_f_height()/2, dist, target->_f_Z() + aimheight));
} }
actor->Vel3DFromAngle(pitch, speed); actor->Vel3DFromAngle(pitch, speed);
} }
@ -2079,7 +2079,7 @@ fixed_t P_XYMovement (AActor *mo, fixed_t scrollx, fixed_t scrolly)
//dest->x - source->x //dest->x - source->x
DVector3 vect = mo->Vec3To(origin); DVector3 vect = mo->Vec3To(origin);
vect.Z += origin->_Height() / 2; vect.Z += origin->Height / 2;
mo->Vel = vect.Resized(mo->Speed); mo->Vel = vect.Resized(mo->Speed);
} }
else else
@ -2439,7 +2439,7 @@ void P_ZMovement (AActor *mo, fixed_t oldfloorz)
if (!(mo->flags & (MF_SKULLFLY | MF_INFLOAT))) if (!(mo->flags & (MF_SKULLFLY | MF_INFLOAT)))
{ {
dist = mo->AproxDistance (mo->target); dist = mo->AproxDistance (mo->target);
delta = (mo->target->_f_Z() + (mo->height>>1)) - mo->_f_Z(); delta = (mo->target->_f_Z() + (mo->_f_height()>>1)) - mo->_f_Z();
if (delta < 0 && dist < -(delta*3)) if (delta < 0 && dist < -(delta*3))
mo->_f_AddZ(-mo->_f_floatspeed()); mo->_f_AddZ(-mo->_f_floatspeed());
else if (delta > 0 && dist < (delta*3)) else if (delta > 0 && dist < (delta*3))
@ -2465,7 +2465,7 @@ void P_ZMovement (AActor *mo, fixed_t oldfloorz)
if (!(rover->flags & FF_SWIMMABLE)) continue; if (!(rover->flags & FF_SWIMMABLE)) continue;
if (mo->_f_Z() >= rover->top.plane->ZatPoint(mo) || if (mo->_f_Z() >= rover->top.plane->ZatPoint(mo) ||
mo->_f_Z() + mo->height/2 < rover->bottom.plane->ZatPoint(mo)) mo->_f_Z() + mo->_f_height()/2 < rover->bottom.plane->ZatPoint(mo))
continue; continue;
friction = rover->model->GetFriction(rover->top.isceiling); friction = rover->model->GetFriction(rover->top.isceiling);
@ -2593,7 +2593,7 @@ void P_ZMovement (AActor *mo, fixed_t oldfloorz)
// teleported the actor so it is no longer above the ceiling. // teleported the actor so it is no longer above the ceiling.
if (mo->Top() > mo->ceilingz) if (mo->Top() > mo->ceilingz)
{ {
mo->SetZ(mo->ceilingz - mo->_Height()); mo->SetZ(mo->ceilingz - mo->Height);
if (mo->BounceFlags & BOUNCE_Ceilings) if (mo->BounceFlags & BOUNCE_Ceilings)
{ // ceiling bounce { // ceiling bounce
mo->FloorBounceMissile (mo->ceilingsector->ceilingplane); mo->FloorBounceMissile (mo->ceilingsector->ceilingplane);
@ -2649,7 +2649,7 @@ void P_CheckFakeFloorTriggers (AActor *mo, fixed_t oldz, bool oldz_has_viewheigh
} }
else else
{ {
viewheight = mo->height / 2; viewheight = mo->_f_height() / 2;
} }
if (oldz > waterz && mo->_f_Z() <= waterz) if (oldz > waterz && mo->_f_Z() <= waterz)
@ -2769,7 +2769,7 @@ void P_NightmareRespawn (AActor *mobj)
} }
if (mo->Top() > mo->ceilingz) if (mo->Top() > mo->ceilingz)
{ {
mo->SetZ(mo->ceilingz- mo->_Height()); mo->SetZ(mo->ceilingz- mo->Height);
} }
} }
else if (z == ONCEILINGZ) else if (z == ONCEILINGZ)
@ -2791,7 +2791,7 @@ void P_NightmareRespawn (AActor *mobj)
} }
if (mo->Top() > mo->ceilingz) if (mo->Top() > mo->ceilingz)
{ // Do the same for the ceiling. { // Do the same for the ceiling.
mo->SetZ(mo->ceilingz - mo->_Height()); mo->SetZ(mo->ceilingz - mo->Height);
} }
} }
@ -3458,10 +3458,11 @@ void AActor::Tick ()
if (++smokecounter == 8) if (++smokecounter == 8)
{ {
smokecounter = 0; smokecounter = 0;
angle_t moveangle = R_PointToAngle2(0,0,_f_velx(),_f_vely()); DAngle moveangle = Vel.Angle();
fixed_t xo = -FixedMul(finecosine[(moveangle) >> ANGLETOFINESHIFT], _f_radius() * 2) + (pr_rockettrail() << 10); double xo = -moveangle.Cos() * radius * 2 + pr_rockettrail() / 64.;
fixed_t yo = -FixedMul(finesine[(moveangle) >> ANGLETOFINESHIFT], _f_radius() * 2) + (pr_rockettrail() << 10); double yo = -moveangle.Sin() * radius * 2 + pr_rockettrail() / 64.;
AActor * th = Spawn("GrenadeSmokeTrail", Vec3Offset(xo, yo, - (height>>3) * (_f_velz()>>16) + (2*height)/3), ALLOW_REPLACE); double zo = -Height * Vel.Z / 8. + Height * (2 / 3.);
AActor * th = Spawn("GrenadeSmokeTrail", Vec3Offset(xo, yo, zo), ALLOW_REPLACE);
if (th) if (th)
{ {
th->tics -= pr_rockettrail()&3; th->tics -= pr_rockettrail()&3;
@ -3991,7 +3992,7 @@ void AActor::CheckSectorTransition(sector_t *oldsec)
{ {
act |= SECSPAC_HitFloor; act |= SECSPAC_HitFloor;
} }
if (_f_Z() + height >= Sector->ceilingplane.ZatPoint(this)) if (_f_Z() + _f_height() >= Sector->ceilingplane.ZatPoint(this))
{ {
act |= SECSPAC_HitCeiling; act |= SECSPAC_HitCeiling;
} }
@ -4048,11 +4049,11 @@ bool AActor::UpdateWaterLevel (fixed_t oldz, bool dosplash)
if (_f_Z() < fh) if (_f_Z() < fh)
{ {
waterlevel = 1; waterlevel = 1;
if (_f_Z() + height/2 < fh) if (_f_Z() + _f_height()/2 < fh)
{ {
waterlevel = 2; waterlevel = 2;
if ((player && _f_Z() + player->viewheight <= fh) || if ((player && _f_Z() + player->viewheight <= fh) ||
(_f_Z() + height <= fh)) (_f_Z() + _f_height() <= fh))
{ {
waterlevel = 3; waterlevel = 3;
} }
@ -4087,17 +4088,17 @@ bool AActor::UpdateWaterLevel (fixed_t oldz, bool dosplash)
fixed_t ff_bottom=rover->bottom.plane->ZatPoint(this); fixed_t ff_bottom=rover->bottom.plane->ZatPoint(this);
fixed_t ff_top=rover->top.plane->ZatPoint(this); fixed_t ff_top=rover->top.plane->ZatPoint(this);
if(ff_top <= _f_Z() || ff_bottom > (_f_Z() + (height >> 1))) continue; if(ff_top <= _f_Z() || ff_bottom > (_f_Z() + (_f_height() >> 1))) continue;
fh=ff_top; fh=ff_top;
if (_f_Z() < fh) if (_f_Z() < fh)
{ {
waterlevel = 1; waterlevel = 1;
if (_f_Z() + height/2 < fh) if (_f_Z() + _f_height()/2 < fh)
{ {
waterlevel = 2; waterlevel = 2;
if ((player && _f_Z() + player->viewheight <= fh) || if ((player && _f_Z() + player->viewheight <= fh) ||
(_f_Z() + height <= fh)) (_f_Z() + _f_height() <= fh))
{ {
waterlevel = 3; waterlevel = 3;
} }
@ -4207,7 +4208,7 @@ AActor *AActor::StaticSpawn (PClassActor *type, fixed_t ix, fixed_t iy, fixed_t
} }
else if (iz == ONCEILINGZ) else if (iz == ONCEILINGZ)
{ {
actor->SetZ(actor->ceilingz - actor->_Height()); actor->SetZ(actor->ceilingz - actor->Height);
} }
if (SpawningMapThing || !type->IsDescendantOf (RUNTIME_CLASS(APlayerPawn))) if (SpawningMapThing || !type->IsDescendantOf (RUNTIME_CLASS(APlayerPawn)))
@ -4250,11 +4251,11 @@ AActor *AActor::StaticSpawn (PClassActor *type, fixed_t ix, fixed_t iy, fixed_t
} }
else if (iz == ONCEILINGZ) else if (iz == ONCEILINGZ)
{ {
actor->SetZ(actor->ceilingz - actor->_Height()); actor->SetZ(actor->ceilingz - actor->Height);
} }
else if (iz == FLOATRANDZ) else if (iz == FLOATRANDZ)
{ {
double space = actor->ceilingz - actor->_Height() - actor->floorz; double space = actor->ceilingz - actor->Height - actor->floorz;
if (space > 48) if (space > 48)
{ {
space -= 40; space -= 40;
@ -4788,7 +4789,7 @@ APlayerPawn *P_SpawnPlayer (FPlayerStart *mthing, int playernum, int flags)
// drop down below it, even if that means sinking into the floor. // drop down below it, even if that means sinking into the floor.
if (mobj->Top() > mobj->ceilingz) if (mobj->Top() > mobj->ceilingz)
{ {
mobj->SetZ(mobj->ceilingz - mobj->_Height(), false); mobj->SetZ(mobj->ceilingz - mobj->Height, false);
} }
// [BC] Do script stuff // [BC] Do script stuff
@ -5556,7 +5557,7 @@ bool P_HitWater (AActor * thing, sector_t * sec, fixed_t x, fixed_t y, fixed_t z
// don't splash above the object // don't splash above the object
if (checkabove) if (checkabove)
{ {
fixed_t compare_z = thing->_f_Z() + (thing->height >> 1); fixed_t compare_z = thing->_f_Z() + (thing->_f_height() >> 1);
// Missiles are typically small and fast, so they might // Missiles are typically small and fast, so they might
// end up submerged by the move that calls P_HitWater. // end up submerged by the move that calls P_HitWater.
if (thing->flags & MF_MISSILE) if (thing->flags & MF_MISSILE)
@ -5953,9 +5954,9 @@ AActor *P_SpawnMissileXYZ (fixed_t x, fixed_t y, fixed_t z,
velocity.Z = 0; velocity.Z = 0;
} }
// [RH] Adjust the trajectory if the missile will go over the target's head. // [RH] Adjust the trajectory if the missile will go over the target's head.
else if (FIXED2FLOAT(z) - source->Z() >= dest->_Height()) else if (FIXED2FLOAT(z) - source->Z() >= dest->Height)
{ {
velocity.Z += (dest->_Height() - FIXED2FLOAT(z) + source->Z()); velocity.Z += (dest->Height - FIXED2FLOAT(z) + source->Z());
} }
th->Vel = velocity.Resized(speed); th->Vel = velocity.Resized(speed);
@ -6195,7 +6196,7 @@ AActor *P_SpawnPlayerMissile (AActor *source, fixed_t x, fixed_t y, fixed_t z,
if (z != ONFLOORZ && z != ONCEILINGZ) if (z != ONFLOORZ && z != ONCEILINGZ)
{ {
// Doom spawns missiles 4 units lower than hitscan attacks for players. // Doom spawns missiles 4 units lower than hitscan attacks for players.
z += source->_f_Z() + (source->height>>1) - source->floorclip; z += source->_f_Z() + (source->_f_height()>>1) - source->floorclip;
if (source->player != NULL) // Considering this is for player missiles, it better not be NULL. if (source->player != NULL) // Considering this is for player missiles, it better not be NULL.
{ {
z += fixed_t ((source->player->mo->AttackZOffset - 4*FRACUNIT) * source->player->crouchfactor); z += fixed_t ((source->player->mo->AttackZOffset - 4*FRACUNIT) * source->player->crouchfactor);
@ -6545,9 +6546,9 @@ int AActor::GetGibHealth() const
} }
} }
fixed_t AActor::GetCameraHeight() const double AActor::GetCameraHeight() const
{ {
return GetClass()->CameraHeight == FIXED_MIN ? height / 2 : GetClass()->CameraHeight; return GetClass()->CameraHeight == INT_MIN ? Height / 2 : GetClass()->CameraHeight;
} }
DDropItem *AActor::GetDropItems() const DDropItem *AActor::GetDropItems() const

View file

@ -114,7 +114,7 @@ public:
{ {
sightstart = t1->PosRelative(task->portalgroup); sightstart = t1->PosRelative(task->portalgroup);
sightend = t2->PosRelative(task->portalgroup); sightend = t2->PosRelative(task->portalgroup);
sightstart.z += t1->height - (t1->height >> 2); sightstart.z += t1->_f_height() - (t1->_f_height() >> 2);
startfrac = task->frac; startfrac = task->frac;
trace = { sightstart.x, sightstart.y, sightend.x - sightstart.x, sightend.y - sightstart.y }; trace = { sightstart.x, sightstart.y, sightend.x - sightstart.x, sightend.y - sightstart.y };
@ -863,16 +863,16 @@ sightcounts[0]++;
if (!(flags & SF_IGNOREWATERBOUNDARY)) if (!(flags & SF_IGNOREWATERBOUNDARY))
{ {
if ((s1->GetHeightSec() && if ((s1->GetHeightSec() &&
((t1->_f_Z() + t1->height <= s1->heightsec->floorplane.ZatPoint(t1) && ((t1->_f_Z() + t1->_f_height() <= s1->heightsec->floorplane.ZatPoint(t1) &&
t2->_f_Z() >= s1->heightsec->floorplane.ZatPoint(t2)) || t2->_f_Z() >= s1->heightsec->floorplane.ZatPoint(t2)) ||
(t1->_f_Z() >= s1->heightsec->ceilingplane.ZatPoint(t1) && (t1->_f_Z() >= s1->heightsec->ceilingplane.ZatPoint(t1) &&
t2->_f_Z() + t1->height <= s1->heightsec->ceilingplane.ZatPoint(t2)))) t2->_f_Z() + t1->_f_height() <= s1->heightsec->ceilingplane.ZatPoint(t2))))
|| ||
(s2->GetHeightSec() && (s2->GetHeightSec() &&
((t2->_f_Z() + t2->height <= s2->heightsec->floorplane.ZatPoint(t2) && ((t2->_f_Z() + t2->_f_height() <= s2->heightsec->floorplane.ZatPoint(t2) &&
t1->_f_Z() >= s2->heightsec->floorplane.ZatPoint(t1)) || t1->_f_Z() >= s2->heightsec->floorplane.ZatPoint(t1)) ||
(t2->_f_Z() >= s2->heightsec->ceilingplane.ZatPoint(t2) && (t2->_f_Z() >= s2->heightsec->ceilingplane.ZatPoint(t2) &&
t1->_f_Z() + t2->height <= s2->heightsec->ceilingplane.ZatPoint(t1))))) t1->_f_Z() + t2->_f_height() <= s2->heightsec->ceilingplane.ZatPoint(t1)))))
{ {
res = false; res = false;
goto done; goto done;
@ -886,11 +886,11 @@ sightcounts[0]++;
portals.Clear(); portals.Clear();
{ {
sector_t *sec; sector_t *sec;
fixed_t lookheight = t1->height - (t1->height >> 2); fixed_t lookheight = t1->_f_height() - (t1->_f_height() >> 2);
t1->GetPortalTransition(lookheight, &sec); t1->GetPortalTransition(lookheight, &sec);
fixed_t bottomslope = t2->_f_Z() - (t1->_f_Z() + lookheight); fixed_t bottomslope = t2->_f_Z() - (t1->_f_Z() + lookheight);
fixed_t topslope = bottomslope + t2->height; fixed_t topslope = bottomslope + t2->_f_height();
SightTask task = { 0, topslope, bottomslope, -1, sec->PortalGroup }; SightTask task = { 0, topslope, bottomslope, -1, sec->PortalGroup };

View file

@ -559,7 +559,7 @@ void P_SectorDamage(int tag, int amount, FName type, PClassActor *protectClass,
z1 = z2; z1 = z2;
z2 = zz; z2 = zz;
} }
if (actor->_f_Z() + actor->height > z1) if (actor->_f_Z() + actor->_f_height() > z1)
{ {
// If DAMAGE_IN_AIR is used, anything not beneath the 3D floor will be // If DAMAGE_IN_AIR is used, anything not beneath the 3D floor will be
// damaged (so, anything touching it or above it). Other 3D floors between // damaged (so, anything touching it or above it). Other 3D floors between

View file

@ -135,9 +135,9 @@ bool P_Teleport (AActor *thing, fixed_t x, fixed_t y, fixed_t z, DAngle angle, i
if (thing->flags & MF_NOGRAVITY && aboveFloor) if (thing->flags & MF_NOGRAVITY && aboveFloor)
{ {
z = floorheight + aboveFloor; z = floorheight + aboveFloor;
if (z + thing->height > ceilingheight) if (z + thing->_f_height() > ceilingheight)
{ {
z = ceilingheight - thing->height; z = ceilingheight - thing->_f_height();
} }
} }
else else
@ -152,9 +152,9 @@ bool P_Teleport (AActor *thing, fixed_t x, fixed_t y, fixed_t z, DAngle angle, i
else if (thing->flags & MF_MISSILE) else if (thing->flags & MF_MISSILE)
{ {
z = floorheight + aboveFloor; z = floorheight + aboveFloor;
if (z + thing->height > ceilingheight) if (z + thing->_f_height() > ceilingheight)
{ {
z = ceilingheight - thing->height; z = ceilingheight - thing->_f_height();
} }
} }
else else

View file

@ -258,7 +258,7 @@ bool P_Thing_Projectile (int tid, AActor *source, int type, const char *type_nam
if (targ != NULL) if (targ != NULL)
{ {
DVector3 aim = mobj->Vec3To(targ); DVector3 aim = mobj->Vec3To(targ);
aim.Z += targ->_Height() / 2; aim.Z += targ->Height / 2;
if (leadTarget && speed > 0 && !targ->Vel.isZero()) if (leadTarget && speed > 0 && !targ->Vel.isZero())
{ {
@ -424,18 +424,18 @@ bool P_Thing_Raise(AActor *thing, AActor *raiser)
thing->Vel.X = thing->Vel.Y = 0; thing->Vel.X = thing->Vel.Y = 0;
// [RH] Check against real height and radius // [RH] Check against real height and radius
fixed_t oldheight = thing->height; double oldheight = thing->Height;
double oldradius = thing->radius; double oldradius = thing->radius;
ActorFlags oldflags = thing->flags; ActorFlags oldflags = thing->flags;
thing->flags |= MF_SOLID; thing->flags |= MF_SOLID;
thing->height = info->height; // [RH] Use real height thing->Height = info->Height; // [RH] Use real height
thing->radius = info->radius; // [RH] Use real radius thing->radius = info->radius; // [RH] Use real radius
if (!P_CheckPosition (thing, thing->_f_Pos())) if (!P_CheckPosition (thing, thing->_f_Pos()))
{ {
thing->flags = oldflags; thing->flags = oldflags;
thing->radius = oldradius; thing->radius = oldradius;
thing->height = oldheight; thing->Height = oldheight;
return false; return false;
} }
@ -466,11 +466,11 @@ bool P_Thing_CanRaise(AActor *thing)
// Check against real height and radius // Check against real height and radius
ActorFlags oldflags = thing->flags; ActorFlags oldflags = thing->flags;
fixed_t oldheight = thing->height; double oldheight = thing->Height;
double oldradius = thing->radius; double oldradius = thing->radius;
thing->flags |= MF_SOLID; thing->flags |= MF_SOLID;
thing->height = info->height; thing->Height = info->Height;
thing->radius = info->radius; thing->radius = info->radius;
bool check = P_CheckPosition (thing, thing->Pos()); bool check = P_CheckPosition (thing, thing->Pos());
@ -478,7 +478,7 @@ bool P_Thing_CanRaise(AActor *thing)
// Restore checked properties // Restore checked properties
thing->flags = oldflags; thing->flags = oldflags;
thing->radius = oldradius; thing->radius = oldradius;
thing->height = oldheight; thing->Height = oldheight;
if (!check) if (!check)
{ {
@ -686,7 +686,7 @@ int P_Thing_Warp(AActor *caller, AActor *reference, fixed_t xofs, fixed_t yofs,
fixedvec3 old = caller->_f_Pos(); fixedvec3 old = caller->_f_Pos();
int oldpgroup = caller->Sector->PortalGroup; int oldpgroup = caller->Sector->PortalGroup;
zofs += FixedMul(reference->height, heightoffset); zofs += FixedMul(reference->_f_height(), heightoffset);
if (!(flags & WARPF_ABSOLUTEANGLE)) if (!(flags & WARPF_ABSOLUTEANGLE))

View file

@ -744,11 +744,11 @@ void APlayerPawn::Tick()
{ {
if (player != NULL && player->mo == this && player->CanCrouch() && player->playerstate != PST_DEAD) if (player != NULL && player->mo == this && player->CanCrouch() && player->playerstate != PST_DEAD)
{ {
height = fixed_t(GetDefault()->height * player->crouchfactor); Height = GetDefault()->Height * player->crouchfactor;
} }
else else
{ {
if (health > 0) height = GetDefault()->height; if (health > 0) Height = GetDefault()->Height;
} }
Super::Tick(); Super::Tick();
} }
@ -2241,8 +2241,8 @@ void P_DeathThink (player_t *player)
void P_CrouchMove(player_t * player, int direction) void P_CrouchMove(player_t * player, int direction)
{ {
fixed_t defaultheight = player->mo->GetDefault()->height; double defaultheight = player->mo->GetDefault()->Height;
fixed_t savedheight = player->mo->height; double savedheight = player->mo->Height;
double crouchspeed = direction * CROUCHSPEED; double crouchspeed = direction * CROUCHSPEED;
fixed_t oldheight = player->viewheight; fixed_t oldheight = player->viewheight;
@ -2250,10 +2250,10 @@ void P_CrouchMove(player_t * player, int direction)
player->crouchfactor += crouchspeed; player->crouchfactor += crouchspeed;
// check whether the move is ok // check whether the move is ok
player->mo->height = fixed_t(defaultheight * player->crouchfactor); player->mo->Height = defaultheight * player->crouchfactor;
if (!P_TryMove(player->mo, player->mo->_f_X(), player->mo->_f_Y(), false, NULL)) if (!P_TryMove(player->mo, player->mo->_f_X(), player->mo->_f_Y(), false, NULL))
{ {
player->mo->height = savedheight; player->mo->Height = savedheight;
if (direction > 0) if (direction > 0)
{ {
// doesn't fit // doesn't fit
@ -2261,7 +2261,7 @@ void P_CrouchMove(player_t * player, int direction)
return; return;
} }
} }
player->mo->height = savedheight; player->mo->Height = savedheight;
player->crouchfactor = clamp(player->crouchfactor, 0.5, 1.); player->crouchfactor = clamp(player->crouchfactor, 0.5, 1.);
player->viewheight = fixed_t(player->mo->ViewHeight * player->crouchfactor); player->viewheight = fixed_t(player->mo->ViewHeight * player->crouchfactor);

View file

@ -1072,7 +1072,7 @@ void R_DrawSpanP_C (void)
#ifdef RANGECHECK #ifdef RANGECHECK
if (ds_x2 < ds_x1 || ds_x1 < 0 if (ds_x2 < ds_x1 || ds_x1 < 0
|| ds_x2 >= screen->width || ds_y > screen->height) || ds_x2 >= screen->width || ds_y > screen->_f_height())
{ {
I_Error ("R_DrawSpan: %i to %i at %i", ds_x1, ds_x2, ds_y); I_Error ("R_DrawSpan: %i to %i at %i", ds_x1, ds_x2, ds_y);
} }

View file

@ -985,7 +985,7 @@ void R_SetupFrame (AActor *actor)
{ {
iview->nviewx = camera->_f_X(); iview->nviewx = camera->_f_X();
iview->nviewy = camera->_f_Y(); iview->nviewy = camera->_f_Y();
iview->nviewz = camera->player ? camera->player->viewz : camera->_f_Z() + camera->GetCameraHeight(); iview->nviewz = camera->player ? camera->player->viewz : FLOAT2FIXED(camera->Z() + camera->GetCameraHeight());
viewsector = camera->Sector; viewsector = camera->Sector;
r_showviewer = false; r_showviewer = false;
} }

View file

@ -63,7 +63,7 @@ struct FExtraInfo
bool bSolidOnDeath, bSolidOnBurn; bool bSolidOnDeath, bSolidOnBurn;
bool bBurnAway, bDiesAway, bGenericIceDeath; bool bBurnAway, bDiesAway, bGenericIceDeath;
bool bExplosive; bool bExplosive;
fixed_t DeathHeight, BurnHeight; double DeathHeight, BurnHeight;
}; };
class AFakeInventory : public AInventory class AFakeInventory : public AInventory
@ -256,7 +256,7 @@ void ParseOldDecoration(FScanner &sc, EDefinitionType def)
if (extra.DeathHeight == 0) if (extra.DeathHeight == 0)
{ {
extra.DeathHeight = ((AActor*)(type->Defaults))->height; extra.DeathHeight = ((AActor*)(type->Defaults))->Height;
} }
type->DeathHeight = extra.DeathHeight; type->DeathHeight = extra.DeathHeight;
} }
@ -296,7 +296,7 @@ void ParseOldDecoration(FScanner &sc, EDefinitionType def)
type->OwnedStates[extra.FireDeathStart].SetAction("A_ActiveAndUnblock"); type->OwnedStates[extra.FireDeathStart].SetAction("A_ActiveAndUnblock");
} }
if (extra.BurnHeight == 0) extra.BurnHeight = ((AActor*)(type->Defaults))->height; if (extra.BurnHeight == 0) extra.BurnHeight = ((AActor*)(type->Defaults))->Height;
type->BurnHeight = extra.BurnHeight; type->BurnHeight = extra.BurnHeight;
bag.statedef.SetStateLabel("Burn", &type->OwnedStates[extra.FireDeathStart]); bag.statedef.SetStateLabel("Burn", &type->OwnedStates[extra.FireDeathStart]);
@ -460,17 +460,17 @@ static void ParseInsideDecoration (Baggage &bag, AActor *defaults,
else if (sc.Compare ("Height")) else if (sc.Compare ("Height"))
{ {
sc.MustGetFloat (); sc.MustGetFloat ();
defaults->height = int(sc.Float * FRACUNIT); defaults->Height = sc.Float;
} }
else if (def == DEF_BreakableDecoration && sc.Compare ("DeathHeight")) else if (def == DEF_BreakableDecoration && sc.Compare ("DeathHeight"))
{ {
sc.MustGetFloat (); sc.MustGetFloat ();
extra.DeathHeight = int(sc.Float * FRACUNIT); extra.DeathHeight = sc.Float;
} }
else if (def == DEF_BreakableDecoration && sc.Compare ("BurnHeight")) else if (def == DEF_BreakableDecoration && sc.Compare ("BurnHeight"))
{ {
sc.MustGetFloat (); sc.MustGetFloat ();
extra.BurnHeight = int(sc.Float * FRACUNIT); extra.BurnHeight = sc.Float;
} }
else if (def == DEF_BreakableDecoration && sc.Compare ("Health")) else if (def == DEF_BreakableDecoration && sc.Compare ("Health"))
{ {

View file

@ -315,7 +315,7 @@ DEFINE_ACTION_FUNCTION_PARAMS(AActor, GetDistance)
{ {
fixedvec3 diff = self->_f_Vec3To(target); fixedvec3 diff = self->_f_Vec3To(target);
if (checkz) if (checkz)
diff.z += (target->height - self->height) / 2; diff.z += (target->_f_height() - self->_f_height()) / 2;
const double length = DVector3(FIXED2DBL(diff.x), FIXED2DBL(diff.y), (checkz) ? FIXED2DBL(diff.z) : 0).Length(); const double length = DVector3(FIXED2DBL(diff.x), FIXED2DBL(diff.y), (checkz) ? FIXED2DBL(diff.z) : 0).Length();
ret->SetFloat(length); ret->SetFloat(length);
@ -1919,8 +1919,8 @@ DEFINE_ACTION_FUNCTION_PARAMS(AActor, A_CustomRailgun)
// We probably won't hit the target, but aim at it anyway so we don't look stupid. // We probably won't hit the target, but aim at it anyway so we don't look stupid.
fixedvec2 pos = self->_f_Vec2To(self->target); fixedvec2 pos = self->_f_Vec2To(self->target);
DVector2 xydiff(pos.x, pos.y); DVector2 xydiff(pos.x, pos.y);
double zdiff = (self->target->_f_Z() + (self->target->height>>1)) - double zdiff = (self->target->_f_Z() + (self->target->_f_height()>>1)) -
(self->_f_Z() + (self->height>>1) - self->floorclip); (self->_f_Z() + (self->_f_height()>>1) - self->floorclip);
self->Angles.Pitch = VecToAngle(xydiff.Length(), zdiff); self->Angles.Pitch = VecToAngle(xydiff.Length(), zdiff);
} }
// Let the aim trail behind the player // Let the aim trail behind the player
@ -2942,7 +2942,7 @@ DEFINE_ACTION_FUNCTION_PARAMS(AActor, A_SpawnDebris)
{ {
fixed_t xo = ((pr_spawndebris() - 128) << 12); fixed_t xo = ((pr_spawndebris() - 128) << 12);
fixed_t yo = ((pr_spawndebris() - 128) << 12); fixed_t yo = ((pr_spawndebris() - 128) << 12);
fixed_t zo = (pr_spawndebris()*self->height / 256 + self->GetBobOffset()); fixed_t zo = (pr_spawndebris()*self->_f_height() / 256 + self->GetBobOffset());
mo = Spawn(debris, self->Vec3Offset(xo, yo, zo), ALLOW_REPLACE); mo = Spawn(debris, self->Vec3Offset(xo, yo, zo), ALLOW_REPLACE);
if (mo) if (mo)
{ {
@ -3079,7 +3079,7 @@ static bool DoCheckSightOrRange(AActor *self, AActor *camera, double range, bool
// Check distance first, since it's cheaper than checking sight. // Check distance first, since it's cheaper than checking sight.
fixedvec2 pos = camera->_f_Vec2To(self); fixedvec2 pos = camera->_f_Vec2To(self);
fixed_t dz; fixed_t dz;
fixed_t eyez = (camera->_f_Top() - (camera->height>>2)); // same eye height as P_CheckSight fixed_t eyez = (camera->_f_Top() - (camera->_f_height()>>2)); // same eye height as P_CheckSight
if (eyez > self->_f_Top()) if (eyez > self->_f_Top())
{ {
dz = self->_f_Top() - eyez; dz = self->_f_Top() - eyez;
@ -3149,7 +3149,7 @@ static bool DoCheckRange(AActor *self, AActor *camera, double range, bool twodi)
// Check distance first, since it's cheaper than checking sight. // Check distance first, since it's cheaper than checking sight.
fixedvec2 pos = camera->_f_Vec2To(self); fixedvec2 pos = camera->_f_Vec2To(self);
fixed_t dz; fixed_t dz;
fixed_t eyez = (camera->_f_Top() - (camera->height>>2)); // same eye height as P_CheckSight fixed_t eyez = (camera->_f_Top() - (camera->_f_height()>>2)); // same eye height as P_CheckSight
if (eyez > self->_f_Top()) if (eyez > self->_f_Top())
{ {
dz = self->_f_Top() - eyez; dz = self->_f_Top() - eyez;
@ -3314,25 +3314,25 @@ DEFINE_ACTION_FUNCTION_PARAMS(AActor, A_Burst)
} }
self->Vel.Zero(); self->Vel.Zero();
self->height = self->GetDefault()->height; self->Height = self->GetDefault()->Height;
// [RH] In Hexen, this creates a random number of shards (range [24,56]) // [RH] In Hexen, this creates a random number of shards (range [24,56])
// with no relation to the size of the self shattering. I think it should // with no relation to the size of the self shattering. I think it should
// base the number of shards on the size of the dead thing, so bigger // base the number of shards on the size of the dead thing, so bigger
// things break up into more shards than smaller things. // things break up into more shards than smaller things.
// An self with _f_radius() 20 and height 64 creates ~40 chunks. // An self with _f_radius() 20 and height 64 creates ~40 chunks.
numChunks = MAX<int> (4, (self->_f_radius()>>FRACBITS)*(self->height>>FRACBITS)/32); numChunks = MAX<int> (4, int(self->radius * self->Height));
i = (pr_burst.Random2()) % (numChunks/4); i = (pr_burst.Random2()) % (numChunks/4);
for (i = MAX (24, numChunks + i); i >= 0; i--) for (i = MAX (24, numChunks + i); i >= 0; i--)
{ {
fixed_t xo = (((pr_burst() - 128)*self->_f_radius()) >> 7); fixed_t xo = (((pr_burst() - 128)*self->_f_radius()) >> 7);
fixed_t yo = (((pr_burst() - 128)*self->_f_radius()) >> 7); fixed_t yo = (((pr_burst() - 128)*self->_f_radius()) >> 7);
fixed_t zo = (pr_burst()*self->height / 255 + self->GetBobOffset()); fixed_t zo = (pr_burst()*self->_f_height() / 255 + self->GetBobOffset());
mo = Spawn(chunk, self->Vec3Offset(xo, yo, zo), ALLOW_REPLACE); mo = Spawn(chunk, self->Vec3Offset(xo, yo, zo), ALLOW_REPLACE);
if (mo) if (mo)
{ {
mo->Vel.Z = 4 * (mo->Z() - self->Z()) * self->_Height(); mo->Vel.Z = 4 * (mo->Z() - self->Z()) * self->Height;
mo->Vel.X = pr_burst.Random2() / 128.; mo->Vel.X = pr_burst.Random2() / 128.;
mo->Vel.Y = pr_burst.Random2() / 128.; mo->Vel.Y = pr_burst.Random2() / 128.;
mo->RenderStyle = self->RenderStyle; mo->RenderStyle = self->RenderStyle;
@ -3442,7 +3442,7 @@ DEFINE_ACTION_FUNCTION_PARAMS(AActor, A_Respawn)
fixedvec3 pos = self->_f_Pos(); fixedvec3 pos = self->_f_Pos();
self->flags |= MF_SOLID; self->flags |= MF_SOLID;
self->height = self->GetDefault()->height; self->Height = self->GetDefault()->Height;
self->radius = self->GetDefault()->radius; self->radius = self->GetDefault()->radius;
CALL_ACTION(A_RestoreSpecialPosition, self); CALL_ACTION(A_RestoreSpecialPosition, self);
@ -3716,12 +3716,12 @@ DEFINE_ACTION_FUNCTION_PARAMS(AActor, A_CheckLOF)
{ {
if (self->player != NULL) if (self->player != NULL)
{ {
// Synced with hitscan: self->player->mo->height is strangely conscientious about getting the right actor for player // Synced with hitscan: self->player->mo->_f_height() is strangely conscientious about getting the right actor for player
offsetheight = FixedMul(offsetheight, fixed_t(self->player->mo->height * self->player->crouchfactor)); offsetheight = FixedMul(offsetheight, fixed_t(self->player->mo->_f_height() * self->player->crouchfactor));
} }
else else
{ {
offsetheight = FixedMul(offsetheight, self->height); offsetheight = FixedMul(offsetheight, self->_f_height());
} }
} }
if (flags & CLOFF_MUL_WIDTH) if (flags & CLOFF_MUL_WIDTH)
@ -3735,8 +3735,8 @@ DEFINE_ACTION_FUNCTION_PARAMS(AActor, A_CheckLOF)
if (!(flags & CLOFF_FROMBASE)) if (!(flags & CLOFF_FROMBASE))
{ // default to hitscan origin { // default to hitscan origin
// Synced with hitscan: self->height is strangely NON-conscientious about getting the right actor for player // Synced with hitscan: self->_f_height() is strangely NON-conscientious about getting the right actor for player
pos.z += (self->height >> 1); pos.z += (self->_f_height() >> 1);
if (self->player != NULL) if (self->player != NULL)
{ {
pos.z += fixed_t (self->player->mo->AttackZOffset * self->player->crouchfactor); pos.z += fixed_t (self->player->mo->AttackZOffset * self->player->crouchfactor);
@ -3785,11 +3785,11 @@ DEFINE_ACTION_FUNCTION_PARAMS(AActor, A_CheckLOF)
} }
else if (flags & CLOFF_AIM_VERT_NOOFFSET) else if (flags & CLOFF_AIM_VERT_NOOFFSET)
{ {
pitch -= VecToAngle(xydist, FIXED2FLOAT(target->_f_Z() - pos.z + offsetheight + target->height / 2)); pitch -= VecToAngle(xydist, FIXED2FLOAT(target->_f_Z() - pos.z + offsetheight + target->_f_height() / 2));
} }
else else
{ {
pitch -= VecToAngle(xydist, FIXED2FLOAT(target->_f_Z() - pos.z + target->height / 2)); pitch -= VecToAngle(xydist, FIXED2FLOAT(target->_f_Z() - pos.z + target->_f_height() / 2));
} }
} }
else if (flags & CLOFF_ALLOWNULL) else if (flags & CLOFF_ALLOWNULL)
@ -4783,7 +4783,7 @@ DEFINE_ACTION_FUNCTION_PARAMS(AActor, A_Teleport)
if (flags & TF_SENSITIVEZ) if (flags & TF_SENSITIVEZ)
{ {
double posz = (flags & TF_USESPOTZ) ? spot->Z() : spot->floorz; double posz = (flags & TF_USESPOTZ) ? spot->Z() : spot->floorz;
if ((posz + ref->_Height() > spot->ceilingz) || (posz < spot->floorz)) if ((posz + ref->Height > spot->ceilingz) || (posz < spot->floorz))
{ {
return numret; return numret;
} }
@ -4793,7 +4793,7 @@ DEFINE_ACTION_FUNCTION_PARAMS(AActor, A_Teleport)
double finalz = spot->floorz + aboveFloor; double finalz = spot->floorz + aboveFloor;
if (spot->Top() > spot->ceilingz) if (spot->Top() > spot->ceilingz)
finalz = spot->ceilingz - ref->_Height(); finalz = spot->ceilingz - ref->Height;
else if (spot->Z() < spot->floorz) else if (spot->Z() < spot->floorz)
finalz = spot->floorz; finalz = spot->floorz;
@ -5101,7 +5101,7 @@ DEFINE_ACTION_FUNCTION_PARAMS(AActor, A_WolfAttack)
// Compute position for spawning blood/puff // Compute position for spawning blood/puff
angle = self->target->__f_AngleTo(self); angle = self->target->__f_AngleTo(self);
fixedvec3 bloodpos = self->target->_f_Vec3Angle(self->target->_f_radius(), angle, self->target->height >> 1); fixedvec3 bloodpos = self->target->_f_Vec3Angle(self->target->_f_radius(), angle, self->target->_f_height() >> 1);
int damage = flags & WAF_NORANDOM ? maxdamage : (1 + (pr_cabullet() % maxdamage)); int damage = flags & WAF_NORANDOM ? maxdamage : (1 + (pr_cabullet() % maxdamage));
@ -5439,7 +5439,7 @@ static bool DoRadiusGive(AActor *self, AActor *thing, PClassActor *item, int amo
{ {
fixedvec3 diff = self->_f_Vec3To(thing); fixedvec3 diff = self->_f_Vec3To(thing);
diff.z += (thing->height - self->height) / 2; diff.z += (thing->_f_height() - self->_f_height()) / 2;
if (flags & RGF_CUBE) if (flags & RGF_CUBE)
{ // check if inside a cube { // check if inside a cube
double dx = fabs((double)(diff.x)); double dx = fabs((double)(diff.x));
@ -5524,7 +5524,7 @@ DEFINE_ACTION_FUNCTION_PARAMS(AActor, A_RadiusGive)
else else
{ {
FPortalGroupArray check(FPortalGroupArray::PGA_Full3d); FPortalGroupArray check(FPortalGroupArray::PGA_Full3d);
fixed_t mid = self->_f_Z() + self->height / 2; fixed_t mid = self->_f_Z() + self->_f_height() / 2;
FMultiBlockThingsIterator it(check, self->_f_X(), self->_f_Y(), mid-distance, mid+distance, distance, false, self->Sector); FMultiBlockThingsIterator it(check, self->_f_X(), self->_f_Y(), mid-distance, mid+distance, distance, false, self->Sector);
FMultiBlockThingsIterator::CheckResult cres; FMultiBlockThingsIterator::CheckResult cres;
@ -6356,11 +6356,11 @@ DEFINE_ACTION_FUNCTION_PARAMS(AActor, A_JumpIfHigherOrLower)
if (mobj != NULL && mobj != self) //AAPTR_DEFAULT is completely useless in this regard. if (mobj != NULL && mobj != self) //AAPTR_DEFAULT is completely useless in this regard.
{ {
if ((high) && (mobj->_f_Z() > ((includeHeight ? self->height : 0) + self->_f_Z() + offsethigh))) if ((high) && (mobj->_f_Z() > ((includeHeight ? self->_f_height() : 0) + self->_f_Z() + offsethigh)))
{ {
ACTION_RETURN_STATE(high); ACTION_RETURN_STATE(high);
} }
else if ((low) && (mobj->_f_Z() + (includeHeight ? mobj->height : 0)) < (self->_f_Z() + offsetlow)) else if ((low) && (mobj->_f_Z() + (includeHeight ? mobj->_f_height() : 0)) < (self->_f_Z() + offsetlow))
{ {
ACTION_RETURN_STATE(low); ACTION_RETURN_STATE(low);
} }

View file

@ -646,7 +646,7 @@ void InitThingdef()
symt.AddSymbol(new PField(NAME_Score, TypeSInt32, VARF_Native, myoffsetof(AActor,Score))); symt.AddSymbol(new PField(NAME_Score, TypeSInt32, VARF_Native, myoffsetof(AActor,Score)));
symt.AddSymbol(new PField(NAME_Accuracy, TypeSInt32, VARF_Native, myoffsetof(AActor,accuracy))); symt.AddSymbol(new PField(NAME_Accuracy, TypeSInt32, VARF_Native, myoffsetof(AActor,accuracy)));
symt.AddSymbol(new PField(NAME_Stamina, TypeSInt32, VARF_Native, myoffsetof(AActor,stamina))); symt.AddSymbol(new PField(NAME_Stamina, TypeSInt32, VARF_Native, myoffsetof(AActor,stamina)));
symt.AddSymbol(new PField(NAME_Height, TypeFixed, VARF_Native, myoffsetof(AActor,height))); symt.AddSymbol(new PField(NAME_Height, TypeFloat64, VARF_Native, myoffsetof(AActor,Height)));
symt.AddSymbol(new PField(NAME_Radius, TypeFloat64, VARF_Native, myoffsetof(AActor,radius))); symt.AddSymbol(new PField(NAME_Radius, TypeFloat64, VARF_Native, myoffsetof(AActor,radius)));
symt.AddSymbol(new PField(NAME_ReactionTime,TypeSInt32, VARF_Native, myoffsetof(AActor,reactiontime))); symt.AddSymbol(new PField(NAME_ReactionTime,TypeSInt32, VARF_Native, myoffsetof(AActor,reactiontime)));
symt.AddSymbol(new PField(NAME_MeleeRange, TypeFixed, VARF_Native, myoffsetof(AActor,meleerange))); symt.AddSymbol(new PField(NAME_MeleeRange, TypeFixed, VARF_Native, myoffsetof(AActor,meleerange)));

View file

@ -633,8 +633,8 @@ DEFINE_PROPERTY(radius, F, Actor)
//========================================================================== //==========================================================================
DEFINE_PROPERTY(height, F, Actor) DEFINE_PROPERTY(height, F, Actor)
{ {
PROP_FIXED_PARM(id, 0); PROP_DOUBLE_PARM(id, 0);
defaults->height=id; defaults->Height=id;
} }
//========================================================================== //==========================================================================
@ -642,7 +642,7 @@ DEFINE_PROPERTY(height, F, Actor)
//========================================================================== //==========================================================================
DEFINE_PROPERTY(projectilepassheight, F, Actor) DEFINE_PROPERTY(projectilepassheight, F, Actor)
{ {
PROP_FIXED_PARM(id, 0); PROP_DOUBLE_PARM(id, 0);
defaults->projectilepassheight=id; defaults->projectilepassheight=id;
} }
@ -916,9 +916,9 @@ DEFINE_PROPERTY(explosiondamage, I, Actor)
//========================================================================== //==========================================================================
DEFINE_PROPERTY(deathheight, F, Actor) DEFINE_PROPERTY(deathheight, F, Actor)
{ {
PROP_FIXED_PARM(h, 0); PROP_DOUBLE_PARM(h, 0);
assert(info->IsKindOf(RUNTIME_CLASS(PClassActor))); assert(info->IsKindOf(RUNTIME_CLASS(PClassActor)));
static_cast<PClassActor *>(info)->DeathHeight = MAX(0, h); static_cast<PClassActor *>(info)->DeathHeight = MAX(0., h);
} }
//========================================================================== //==========================================================================
@ -926,9 +926,9 @@ DEFINE_PROPERTY(deathheight, F, Actor)
//========================================================================== //==========================================================================
DEFINE_PROPERTY(burnheight, F, Actor) DEFINE_PROPERTY(burnheight, F, Actor)
{ {
PROP_FIXED_PARM(h, 0); PROP_DOUBLE_PARM(h, 0);
assert(info->IsKindOf(RUNTIME_CLASS(PClassActor))); assert(info->IsKindOf(RUNTIME_CLASS(PClassActor)));
static_cast<PClassActor *>(info)->BurnHeight = MAX(0, h); static_cast<PClassActor *>(info)->BurnHeight = MAX(0., h);
} }
//========================================================================== //==========================================================================
@ -1320,7 +1320,7 @@ DEFINE_PROPERTY(radiusdamagefactor, F, Actor)
//========================================================================== //==========================================================================
DEFINE_PROPERTY(cameraheight, F, Actor) DEFINE_PROPERTY(cameraheight, F, Actor)
{ {
PROP_FIXED_PARM(i, 0); PROP_DOUBLE_PARM(i, 0);
assert(info->IsKindOf(RUNTIME_CLASS(PClassActor))); assert(info->IsKindOf(RUNTIME_CLASS(PClassActor)));
static_cast<PClassActor *>(info)->CameraHeight = i; static_cast<PClassActor *>(info)->CameraHeight = i;
} }