mirror of
https://github.com/ZDoom/qzdoom.git
synced 2024-11-28 06:53:58 +00:00
- 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:
parent
b73c6e847a
commit
6dfb4bdd41
2 changed files with 5 additions and 1 deletions
|
@ -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();
|
||||||
|
|
|
@ -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;
|
||||||
|
|
Loading…
Reference in a new issue