mirror of
https://github.com/ZDoom/Raze.git
synced 2024-11-15 17:01:28 +00:00
- floatified several Distance calls
This commit is contained in:
parent
79100eeb08
commit
7b05beeb75
8 changed files with 35 additions and 43 deletions
|
@ -598,7 +598,7 @@ int DoCoolieMove(DSWActor* actor)
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (DistanceI(actor->spr.pos, actor->user.targetActor->spr.pos) < 1200)
|
if ((actor->spr.pos.XY() - actor->user.targetActor->spr.pos.XY()).Length() < 75)
|
||||||
{
|
{
|
||||||
UpdateSinglePlayKills(actor);
|
UpdateSinglePlayKills(actor);
|
||||||
DoActorDie(actor, actor, 0);
|
DoActorDie(actor, actor, 0);
|
||||||
|
|
|
@ -1697,33 +1697,27 @@ void DoPlayerHorizon(PLAYER* pp, float const horz, double const scaleAdjust)
|
||||||
|
|
||||||
void DoPlayerBob(PLAYER* pp)
|
void DoPlayerBob(PLAYER* pp)
|
||||||
{
|
{
|
||||||
int dist;
|
double amt;
|
||||||
int amt;
|
|
||||||
|
|
||||||
dist = 0;
|
double dist = (pp->pos.XY() - pp->oldpos.XY()).Length();
|
||||||
|
|
||||||
dist = DistanceI(pp->pos, pp->oldpos);
|
if (dist > 32)
|
||||||
|
|
||||||
if (dist > 512)
|
|
||||||
dist = 0;
|
dist = 0;
|
||||||
|
|
||||||
// if running make a longer stride
|
// if running make a longer stride
|
||||||
if (pp->input.actions & SB_RUN)
|
if (pp->input.actions & SB_RUN)
|
||||||
{
|
{
|
||||||
//amt = 10;
|
amt = dist * (12. / 16.);
|
||||||
amt = 12;
|
dist *= FixedToFloat(26000);
|
||||||
amt = MulScale(amt, dist<<8, 16);
|
|
||||||
dist = MulScale(dist, 26000, 16);
|
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
amt = 5;
|
amt = dist * (5. / 8.);
|
||||||
amt = MulScale(amt, dist<<9, 16);
|
dist *= FixedToFloat(32000);
|
||||||
dist = MulScale(dist, 32000, 16);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
// controls how fast you move through the sin table
|
// controls how fast you move through the sin table
|
||||||
pp->bcnt += dist;
|
pp->bcnt += int(dist * 16);
|
||||||
|
|
||||||
// wrap bcnt
|
// wrap bcnt
|
||||||
pp->bcnt &= 2047;
|
pp->bcnt &= 2047;
|
||||||
|
@ -1748,6 +1742,12 @@ void DoPlayerBeginRecoil(PLAYER* pp, short pix_amt)
|
||||||
pp->recoil_ohorizoff = pp->recoil_horizoff = 0;
|
pp->recoil_ohorizoff = pp->recoil_horizoff = 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
//---------------------------------------------------------------------------
|
||||||
|
//
|
||||||
|
//
|
||||||
|
//
|
||||||
|
//---------------------------------------------------------------------------
|
||||||
|
|
||||||
void DoPlayerRecoil(PLAYER* pp)
|
void DoPlayerRecoil(PLAYER* pp)
|
||||||
{
|
{
|
||||||
// controls how fast you move through the sin table
|
// controls how fast you move through the sin table
|
||||||
|
@ -3481,7 +3481,9 @@ int DoPlayerWadeSuperJump(PLAYER* pp)
|
||||||
|
|
||||||
if (hit.hitSector != nullptr && abs(hit.hitSector->int_floorz() - pp->int_ppos().Z) < Z(50))
|
if (hit.hitSector != nullptr && abs(hit.hitSector->int_floorz() - pp->int_ppos().Z) < Z(50))
|
||||||
{
|
{
|
||||||
if (Distance(pp->int_ppos().X, pp->int_ppos().Y, hit.int_hitpos().X, hit.int_hitpos().Y) < ((((int)pp->actor->spr.clipdist)<<2) + 256))
|
double dist = (pp->pos.XY() - hit.hitpos.XY()).Length();
|
||||||
|
double comp = ((((int)pp->actor->spr.clipdist)<<2) + 256) * inttoworld;
|
||||||
|
if (dist < comp)
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -3714,14 +3716,14 @@ void DoPlayerFly(PLAYER* pp)
|
||||||
DSWActor* FindNearSprite(DSWActor* actor, short stat)
|
DSWActor* FindNearSprite(DSWActor* actor, short stat)
|
||||||
{
|
{
|
||||||
int fs;
|
int fs;
|
||||||
int dist, near_dist = 15000;
|
double dist, near_dist = 937.5;
|
||||||
DSWActor* near_fp = nullptr;
|
DSWActor* near_fp = nullptr;
|
||||||
|
|
||||||
|
|
||||||
SWStatIterator it(stat);
|
SWStatIterator it(stat);
|
||||||
while (auto itActor = it.Next())
|
while (auto itActor = it.Next())
|
||||||
{
|
{
|
||||||
dist = DistanceI(actor->spr.pos, itActor->spr.pos);
|
dist = (actor->spr.pos.XY() - itActor->spr.pos.XY()).Length();
|
||||||
|
|
||||||
if (dist < near_dist)
|
if (dist < near_dist)
|
||||||
{
|
{
|
||||||
|
|
|
@ -928,9 +928,9 @@ int InitRipperHang(DSWActor* actor)
|
||||||
if (hit.hitSector == nullptr)
|
if (hit.hitSector == nullptr)
|
||||||
continue;
|
continue;
|
||||||
|
|
||||||
int dist = DistanceI(actor->spr.pos, hit.hitpos);
|
double dist = (actor->spr.pos.XY() - hit.hitpos.XY()).Length();
|
||||||
|
|
||||||
if (hit.hitWall == nullptr || dist < 2000 || dist > 7000)
|
if (hit.hitWall == nullptr || dist < 125 || dist > 437.5)
|
||||||
{
|
{
|
||||||
continue;
|
continue;
|
||||||
}
|
}
|
||||||
|
|
|
@ -941,9 +941,9 @@ int InitRipper2Hang(DSWActor* actor)
|
||||||
if (hit.hitSector == nullptr)
|
if (hit.hitSector == nullptr)
|
||||||
continue;
|
continue;
|
||||||
|
|
||||||
int dist = DistanceI(actor->spr.pos, hit.hitpos);
|
double dist = (actor->spr.pos.XY() - hit.hitpos.XY()).Length();
|
||||||
|
|
||||||
if (hit.hitWall == nullptr || dist < 2000 || dist > 7000)
|
if (hit.hitWall == nullptr || dist < 125 || dist > 437.5)
|
||||||
{
|
{
|
||||||
continue;
|
continue;
|
||||||
}
|
}
|
||||||
|
|
|
@ -245,7 +245,6 @@ int DoRotator(DSWActor* actor)
|
||||||
short ndx,w,startwall,endwall;
|
short ndx,w,startwall,endwall;
|
||||||
DSWActor* pivot = nullptr;
|
DSWActor* pivot = nullptr;
|
||||||
vec2_t nxy;
|
vec2_t nxy;
|
||||||
int dist,closest;
|
|
||||||
bool kill = false;
|
bool kill = false;
|
||||||
|
|
||||||
r = actor->user.rotator.Data();
|
r = actor->user.rotator.Data();
|
||||||
|
@ -320,13 +319,13 @@ int DoRotator(DSWActor* actor)
|
||||||
kill = true;
|
kill = true;
|
||||||
}
|
}
|
||||||
|
|
||||||
closest = 99999;
|
double closest = 99999;
|
||||||
SWStatIterator it(STAT_ROTATOR_PIVOT);
|
SWStatIterator it(STAT_ROTATOR_PIVOT);
|
||||||
while (auto itActor = it.Next())
|
while (auto itActor = it.Next())
|
||||||
{
|
{
|
||||||
if (itActor->spr.lotag == actor->spr.lotag)
|
if (itActor->spr.lotag == actor->spr.lotag)
|
||||||
{
|
{
|
||||||
dist = DistanceI(actor->spr.pos, itActor->spr.pos);
|
double dist = (actor->spr.pos.XY() - itActor->spr.pos.XY()).Length();
|
||||||
if (dist < closest)
|
if (dist < closest)
|
||||||
{
|
{
|
||||||
closest = dist;
|
closest = dist;
|
||||||
|
|
|
@ -1832,17 +1832,14 @@ void OperateTripTrigger(PLAYER* pp)
|
||||||
|
|
||||||
case TAG_TRIGGER_ACTORS:
|
case TAG_TRIGGER_ACTORS:
|
||||||
{
|
{
|
||||||
int dist;
|
double dist = sectp->hitag * maptoworld;
|
||||||
int i;
|
|
||||||
|
|
||||||
dist = sectp->hitag;
|
|
||||||
|
|
||||||
SWStatIterator it(STAT_ENEMY);
|
SWStatIterator it(STAT_ENEMY);
|
||||||
while (auto actor = it.Next())
|
while (auto actor = it.Next())
|
||||||
{
|
{
|
||||||
if (actor->user.Flags & (SPR_WAIT_FOR_TRIGGER))
|
if (actor->user.Flags & (SPR_WAIT_FOR_TRIGGER))
|
||||||
{
|
{
|
||||||
if (Distance(actor->int_pos().X, actor->int_pos().Y, pp->int_ppos().X, pp->int_ppos().Y) < dist)
|
if ((actor->spr.pos.XY() - pp->pos.XY()).Length() < dist)
|
||||||
{
|
{
|
||||||
actor->user.targetActor = pp->actor;
|
actor->user.targetActor = pp->actor;
|
||||||
actor->user.Flags &= ~(SPR_WAIT_FOR_TRIGGER);
|
actor->user.Flags &= ~(SPR_WAIT_FOR_TRIGGER);
|
||||||
|
@ -1982,7 +1979,7 @@ bool NearThings(PLAYER* pp)
|
||||||
if (hit.hitSector == nullptr)
|
if (hit.hitSector == nullptr)
|
||||||
return false;
|
return false;
|
||||||
|
|
||||||
if (Distance(hit.int_hitpos().X, hit.int_hitpos().Y, pp->int_ppos().X, pp->int_ppos().Y) > 1500)
|
if ((hit.hitpos.XY() - pp->pos.XY()).Length() > 93.75)
|
||||||
return false;
|
return false;
|
||||||
|
|
||||||
// hit a sprite?
|
// hit a sprite?
|
||||||
|
|
|
@ -4239,7 +4239,8 @@ int NewStateGroup(DSWActor* actor, STATE* StateGroup[])
|
||||||
bool SpriteOverlap(DSWActor* actor_a, DSWActor* actor_b)
|
bool SpriteOverlap(DSWActor* actor_a, DSWActor* actor_b)
|
||||||
{
|
{
|
||||||
if (!actor_a->hasU() || !actor_b->hasU()) return false;
|
if (!actor_a->hasU() || !actor_b->hasU()) return false;
|
||||||
if ((unsigned)DistanceI(actor_a->spr.pos, actor_b->spr.pos) > actor_a->user.Radius + actor_b->user.Radius)
|
double dist = (actor_a->spr.pos.XY() - actor_b->spr.pos.XY()).Length();
|
||||||
|
if (dist > (actor_a->user.Radius + actor_b->user.Radius) * inttoworld)
|
||||||
{
|
{
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
|
@ -11621,7 +11621,7 @@ int InitSwordAttack(PLAYER* pp)
|
||||||
if (!(itActor->spr.extra & SPRX_PLAYER_OR_ENEMY))
|
if (!(itActor->spr.extra & SPRX_PLAYER_OR_ENEMY))
|
||||||
continue;
|
continue;
|
||||||
|
|
||||||
dist = Distance(pp->int_ppos().X, pp->int_ppos().Y, itActor->int_pos().X, itActor->int_pos().Y);
|
dist = DistanceI(pp->pos, itActor->spr.pos);
|
||||||
|
|
||||||
reach = 1000; // !JIM! was 800
|
reach = 1000; // !JIM! was 800
|
||||||
face = 200;
|
face = 200;
|
||||||
|
@ -11786,7 +11786,7 @@ int InitFistAttack(PLAYER* pp)
|
||||||
if (!(itActor->spr.extra & SPRX_PLAYER_OR_ENEMY))
|
if (!(itActor->spr.extra & SPRX_PLAYER_OR_ENEMY))
|
||||||
continue;
|
continue;
|
||||||
|
|
||||||
dist = Distance(pp->int_ppos().X, pp->int_ppos().Y, itActor->int_pos().X, itActor->int_pos().Y);
|
dist = DistanceI(pp->pos, itActor->spr.pos);
|
||||||
|
|
||||||
if (pp->InventoryActive[2]) // Shadow Bombs give you demon fist
|
if (pp->InventoryActive[2]) // Shadow Bombs give you demon fist
|
||||||
{
|
{
|
||||||
|
@ -12171,13 +12171,6 @@ int WeaponAutoAimZvel(DSWActor* actor, DSWActor* missileActor, int *zvel, short
|
||||||
{
|
{
|
||||||
int dist;
|
int dist;
|
||||||
|
|
||||||
#if 0
|
|
||||||
//formula for leading a player
|
|
||||||
dist = Distance(actor->int_pos().X, actor->int_pos().Y, hp->pos.X, hp->pos.Y);
|
|
||||||
time_to_target = dist/missileActor->int_xvel();
|
|
||||||
lead_dist = time_to_target*hp->vel;
|
|
||||||
#endif
|
|
||||||
|
|
||||||
if (actor->hasU() && actor->user.PlayerP)
|
if (actor->hasU() && actor->user.PlayerP)
|
||||||
{
|
{
|
||||||
if (!Autoaim(actor->user.PlayerP->pnum))
|
if (!Autoaim(actor->user.PlayerP->pnum))
|
||||||
|
@ -17124,8 +17117,8 @@ DSWActor* QueueWallBlood(DSWActor* actor, DAngle bang)
|
||||||
if (hit.hitSector == nullptr)
|
if (hit.hitSector == nullptr)
|
||||||
return nullptr;
|
return nullptr;
|
||||||
|
|
||||||
const int WALLBLOOD_DIST_MAX = 2500;
|
const double WALLBLOOD_DIST_MAX = 156.25;
|
||||||
if (DistanceI(hit.hitpos, actor->spr.pos) > WALLBLOOD_DIST_MAX)
|
if ((hit.hitpos.XY(), actor->spr.pos.XY()).Length() > WALLBLOOD_DIST_MAX)
|
||||||
return nullptr;
|
return nullptr;
|
||||||
|
|
||||||
// hit a sprite?
|
// hit a sprite?
|
||||||
|
|
Loading…
Reference in a new issue