- changed floor and ceiling movers so that portal planes do not block movement of the opposite plane, even if they are on the wrong side of it.

This fixes the cross-portal lift to the blue key in Vaporware.
This commit is contained in:
Christoph Oelckers 2016-04-15 20:42:40 +02:00
parent b73c6e847a
commit 6dfb4bdd41
2 changed files with 5 additions and 1 deletions

View file

@ -218,6 +218,7 @@ EMoveResult sector_t::MoveFloor(double speed, double dest, int crush, int direct
// [RH] not so easy with arbitrary planes // [RH] not so easy with arbitrary planes
//destheight = (dest < ceilingheight) ? dest : ceilingheight; //destheight = (dest < ceilingheight) ? dest : ceilingheight;
if (!ceilingplane.isSlope() && !floorplane.isSlope() && if (!ceilingplane.isSlope() && !floorplane.isSlope() &&
!PortalIsLinked(sector_t::ceiling) &&
(!(i_compatflags2 & COMPATF2_FLOORMOVE) && -dest > ceilingplane.fD())) (!(i_compatflags2 & COMPATF2_FLOORMOVE) && -dest > ceilingplane.fD()))
{ {
dest = -ceilingplane.fD(); dest = -ceilingplane.fD();
@ -294,6 +295,7 @@ EMoveResult sector_t::MoveCeiling(double speed, double dest, int crush, int dire
// [RH] not so easy with arbitrary planes // [RH] not so easy with arbitrary planes
//destheight = (dest > floorheight) ? dest : floorheight; //destheight = (dest > floorheight) ? dest : floorheight;
if (!ceilingplane.isSlope() && !floorplane.isSlope() && if (!ceilingplane.isSlope() && !floorplane.isSlope() &&
!PortalIsLinked(sector_t::floor) &&
(!(i_compatflags2 & COMPATF2_FLOORMOVE) && dest < -floorplane.fD())) (!(i_compatflags2 & COMPATF2_FLOORMOVE) && dest < -floorplane.fD()))
{ {
dest = -floorplane.fD(); dest = -floorplane.fD();

View file

@ -102,6 +102,7 @@ static bool MoveCeiling(sector_t *sector, int crush, double move)
// Don't let the ceiling go below the floor // Don't let the ceiling go below the floor
if (!sector->ceilingplane.isSlope() && !sector->floorplane.isSlope() && if (!sector->ceilingplane.isSlope() && !sector->floorplane.isSlope() &&
!sector->PortalIsLinked(sector_t::floor) &&
sector->GetPlaneTexZF(sector_t::floor) > sector->GetPlaneTexZF(sector_t::ceiling)) return false; sector->GetPlaneTexZF(sector_t::floor) > sector->GetPlaneTexZF(sector_t::ceiling)) return false;
return true; return true;
@ -116,6 +117,7 @@ static bool MoveFloor(sector_t *sector, int crush, double move)
// Don't let the floor go above the ceiling // Don't let the floor go above the ceiling
if (!sector->ceilingplane.isSlope() && !sector->floorplane.isSlope() && if (!sector->ceilingplane.isSlope() && !sector->floorplane.isSlope() &&
!sector->PortalIsLinked(sector_t::ceiling) &&
sector->GetPlaneTexZF(sector_t::floor) > sector->GetPlaneTexZF(sector_t::ceiling)) return false; sector->GetPlaneTexZF(sector_t::floor) > sector->GetPlaneTexZF(sector_t::ceiling)) return false;
return true; return true;