mirror of
https://github.com/DrBeef/Raze.git
synced 2025-02-21 11:11:16 +00:00
- Duke: Route all clipmove()
/pushmove()
calls through a new interface that accepts a separated Z coordinate.
This commit is contained in:
parent
a6a4cefa6c
commit
e9dcffc5ec
5 changed files with 26 additions and 9 deletions
|
@ -442,6 +442,15 @@ inline int clipmove(DVector3& pos, sectortype** const sect, const DVector2& mvec
|
||||||
return result.type;
|
return result.type;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
inline int clipmove(DVector2& pos, double z, sectortype** const sect, const DVector2& mvec,
|
||||||
|
double const walldist, double const ceildist, double const flordist, unsigned const cliptype, CollisionBase& result, int clipmoveboxtracenum = 3)
|
||||||
|
{
|
||||||
|
auto vect = DVector3(pos, z);
|
||||||
|
auto res = clipmove(vect, sect, mvec, walldist, ceildist, flordist, cliptype, result);
|
||||||
|
pos = vect.XY();
|
||||||
|
return res;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
inline PClassActor* PClass::FindActor(FName name)
|
inline PClassActor* PClass::FindActor(FName name)
|
||||||
{
|
{
|
||||||
|
|
|
@ -268,6 +268,14 @@ bool checkOpening(const DVector2& inpos, double z, const sectortype* sec, const
|
||||||
int pushmove(DVector3& pos, sectortype** pSect, double walldist, double ceildist, double flordist, unsigned cliptype);
|
int pushmove(DVector3& pos, sectortype** pSect, double walldist, double ceildist, double flordist, unsigned cliptype);
|
||||||
tspritetype* renderAddTsprite(tspriteArray& tsprites, DCoreActor* actor);
|
tspritetype* renderAddTsprite(tspriteArray& tsprites, DCoreActor* actor);
|
||||||
|
|
||||||
|
inline int pushmove(DVector2& pos, double z, sectortype** pSect, double walldist, double ceildist, double flordist, unsigned cliptype)
|
||||||
|
{
|
||||||
|
auto vect = DVector3(pos, z);
|
||||||
|
auto result = pushmove(vect, pSect, walldist, ceildist, flordist, cliptype);
|
||||||
|
pos = vect.XY();
|
||||||
|
return result;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
|
@ -618,7 +618,7 @@ void playerisdead(int snum, int psectlotag, double floorz, double ceilingz)
|
||||||
}
|
}
|
||||||
|
|
||||||
Collision coll;
|
Collision coll;
|
||||||
clipmove(p->PlayerNowPosition, &p->cursector, DVector2( 0, 0), 10.25, 4., 4., CLIPMASK0, coll);
|
clipmove(p->posXY(), p->posZget(), &p->cursector, DVector2( 0, 0), 10.25, 4., 4., CLIPMASK0, coll);
|
||||||
}
|
}
|
||||||
|
|
||||||
backupplayer(p);
|
backupplayer(p);
|
||||||
|
@ -627,7 +627,7 @@ void playerisdead(int snum, int psectlotag, double floorz, double ceilingz)
|
||||||
|
|
||||||
updatesector(p->PlayerNowPosition, &p->cursector);
|
updatesector(p->PlayerNowPosition, &p->cursector);
|
||||||
|
|
||||||
pushmove(p->PlayerNowPosition, &p->cursector, 8, 4, 20, CLIPMASK0);
|
pushmove(p->posXY(), p->posZget(), &p->cursector, 8, 4, 20, CLIPMASK0);
|
||||||
|
|
||||||
if (floorz > ceilingz + 16 && actor->spr.pal != 1)
|
if (floorz > ceilingz + 16 && actor->spr.pal != 1)
|
||||||
p->angle.rotscrnang = DAngle::fromBuild(p->dead_flag + ((floorz + p->posZget()) * 2));
|
p->angle.rotscrnang = DAngle::fromBuild(p->dead_flag + ((floorz + p->posZget()) * 2));
|
||||||
|
|
|
@ -3038,7 +3038,7 @@ HORIZONLY:
|
||||||
ChangeActorSect(pact, p->cursector);
|
ChangeActorSect(pact, p->cursector);
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
clipmove(p->PlayerNowPosition, &p->cursector, p->vel, 10.25, 4., iif, CLIPMASK0, clip);
|
clipmove(p->posXY(), p->posZget(), &p->cursector, p->vel, 10.25, 4., iif, CLIPMASK0, clip);
|
||||||
|
|
||||||
if (p->jetpack_on == 0 && psectlotag != 2 && psectlotag != 1 && shrunk)
|
if (p->jetpack_on == 0 && psectlotag != 2 && psectlotag != 1 && shrunk)
|
||||||
p->posZadd(32);
|
p->posZadd(32);
|
||||||
|
@ -3090,7 +3090,7 @@ HORIZONLY:
|
||||||
while (ud.clipping == 0)
|
while (ud.clipping == 0)
|
||||||
{
|
{
|
||||||
int blocked;
|
int blocked;
|
||||||
blocked = (pushmove(p->PlayerNowPosition, &p->cursector, 10.25, 4, 4, CLIPMASK0) < 0 && furthestangle(p->GetActor(), 8) < DAngle90);
|
blocked = (pushmove(p->posXY(), p->posZget(), &p->cursector, 10.25, 4, 4, CLIPMASK0) < 0 && furthestangle(p->GetActor(), 8) < DAngle90);
|
||||||
|
|
||||||
if (fabs(pact->floorz - pact->ceilingz) < 48 || blocked)
|
if (fabs(pact->floorz - pact->ceilingz) < 48 || blocked)
|
||||||
{
|
{
|
||||||
|
|
|
@ -3742,7 +3742,7 @@ HORIZONLY:
|
||||||
ChangeActorSect(pact, p->cursector);
|
ChangeActorSect(pact, p->cursector);
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
clipmove(p->PlayerNowPosition, &p->cursector, p->vel, 10.25, 4., iif, CLIPMASK0, clip);
|
clipmove(p->posXY(), p->posZget(), &p->cursector, p->vel, 10.25, 4., iif, CLIPMASK0, clip);
|
||||||
|
|
||||||
if (p->jetpack_on == 0 && psectlotag != 2 && psectlotag != 1 && shrunk)
|
if (p->jetpack_on == 0 && psectlotag != 2 && psectlotag != 1 && shrunk)
|
||||||
p->posZadd(32);
|
p->posZadd(32);
|
||||||
|
@ -3771,10 +3771,10 @@ HORIZONLY:
|
||||||
if (wal->lotag < 44)
|
if (wal->lotag < 44)
|
||||||
{
|
{
|
||||||
dofurniture(clip.hitWall, p->cursector, snum);
|
dofurniture(clip.hitWall, p->cursector, snum);
|
||||||
pushmove(p->PlayerNowPosition, &p->cursector, 10.75, 4, 4, CLIPMASK0);
|
pushmove(p->posXY(), p->posZget(), &p->cursector, 10.75, 4, 4, CLIPMASK0);
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
pushmove(p->PlayerNowPosition, &p->cursector, 10.75, 4, 4, CLIPMASK0);
|
pushmove(p->posXY(), p->posZget(), &p->cursector, 10.75, 4, 4, CLIPMASK0);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -3875,9 +3875,9 @@ HORIZONLY:
|
||||||
{
|
{
|
||||||
int blocked;
|
int blocked;
|
||||||
if (pact->clipdist == 16)
|
if (pact->clipdist == 16)
|
||||||
blocked = (pushmove(p->PlayerNowPosition, &p->cursector, 8, 4, 4, CLIPMASK0) < 0 && furthestangle(p->GetActor(), 8) < DAngle90);
|
blocked = (pushmove(p->posXY(), p->posZget(), &p->cursector, 8, 4, 4, CLIPMASK0) < 0 && furthestangle(p->GetActor(), 8) < DAngle90);
|
||||||
else
|
else
|
||||||
blocked = (pushmove(p->PlayerNowPosition, &p->cursector, 1, 4, 4, CLIPMASK0) < 0 && furthestangle(p->GetActor(), 8) < DAngle90);
|
blocked = (pushmove(p->posXY(), p->posZget(), &p->cursector, 1, 4, 4, CLIPMASK0) < 0 && furthestangle(p->GetActor(), 8) < DAngle90);
|
||||||
|
|
||||||
if (fabs(pact->floorz - pact->ceilingz) < 48 || blocked)
|
if (fabs(pact->floorz - pact->ceilingz) < 48 || blocked)
|
||||||
{
|
{
|
||||||
|
|
Loading…
Reference in a new issue