- did some cleanup on FPathTraverse::PortalRelocate.

This commit is contained in:
Christoph Oelckers 2016-03-01 02:06:31 +01:00
parent 5e7ecb3c44
commit 15b6c11748
2 changed files with 3 additions and 8 deletions

View file

@ -4755,16 +4755,9 @@ bool P_UseTraverse(AActor *usething, fixed_t startx, fixed_t starty, fixed_t end
}
continue;
}
if (in->d.line->isLinePortal())
if (it.PortalRelocate(in, PT_ADDLINES | PT_ADDTHINGS, &xpos))
{
if (P_PointOnLineSide(xpos.x, xpos.y, in->d.line) == 0)
{
FLinePortal *port = in->d.line->getPortal();
// Also translate the player origin, so that we can use that for checks further below and in P_CheckSwitchRange
it.PortalRelocate(in, PT_ADDLINES | PT_ADDTHINGS, &xpos);
}
continue;
}
FLineOpening open;

View file

@ -1618,6 +1618,8 @@ void FPathTraverse::init (fixed_t x1, fixed_t y1, fixed_t x2, fixed_t y2, int fl
bool FPathTraverse::PortalRelocate(intercept_t *in, int flags, fixedvec3 *optpos)
{
if (!in->isaline || !in->d.line->isLinePortal()) return false;
if (P_PointOnLineSidePrecise(trace.x, trace.y, in->d.line) == 1) return false;
fixed_t hitx = trace.x;
fixed_t hity = trace.y;
fixed_t endx = trace.x + trace.dx;