mirror of
https://github.com/ZDoom/gzdoom.git
synced 2024-11-29 15:22:08 +00:00
- fixed: When stepping through a sector portal and touching a two sided line on the opposite side, its opening must be used, regardless of the FFCF_NOFLOOR flag.
This commit is contained in:
parent
e424ef63f2
commit
485c4c71b5
3 changed files with 8 additions and 1 deletions
|
@ -36,6 +36,7 @@ struct FCheckPosition
|
|||
TMap<AActor*, bool> LastRipped;
|
||||
bool DoRipping;
|
||||
bool portalstep;
|
||||
int portalgroup;
|
||||
|
||||
int PushTime;
|
||||
|
||||
|
|
|
@ -161,6 +161,7 @@ DEFINE_FIELD_X(FCheckPosition, FCheckPosition, ceilingline);
|
|||
DEFINE_FIELD_X(FCheckPosition, FCheckPosition, stepthing);
|
||||
DEFINE_FIELD_X(FCheckPosition, FCheckPosition, DoRipping);
|
||||
DEFINE_FIELD_X(FCheckPosition, FCheckPosition, portalstep);
|
||||
DEFINE_FIELD_X(FCheckPosition, FCheckPosition, portalgroup);
|
||||
DEFINE_FIELD_X(FCheckPosition, FCheckPosition, PushTime);
|
||||
|
||||
//==========================================================================
|
||||
|
@ -288,6 +289,7 @@ static bool PIT_FindFloorCeiling(FMultiBlockLinesIterator &mit, FMultiBlockLines
|
|||
}
|
||||
}
|
||||
|
||||
// If we are stepping through a portal the line's opening must be checked, regardless of the NOFLOOR flag
|
||||
if (!(flags & FFCF_NOFLOOR))
|
||||
{
|
||||
if (open.bottom > tmf.floorz)
|
||||
|
@ -905,6 +907,7 @@ bool PIT_CheckLine(FMultiBlockLinesIterator &mit, FMultiBlockLinesIterator::Chec
|
|||
tm.floorpic = cres.line->sidedef[0]->GetTexture(side_t::mid);
|
||||
tm.floorterrain = 0;
|
||||
tm.portalstep = true;
|
||||
tm.portalgroup = cres.line->frontsector->GetOppositePortalGroup(sector_t::ceiling);
|
||||
return true;
|
||||
}
|
||||
}
|
||||
|
@ -999,6 +1002,7 @@ bool PIT_CheckLine(FMultiBlockLinesIterator &mit, FMultiBlockLinesIterator::Chec
|
|||
{
|
||||
// Actor is stepping through a portal.
|
||||
tm.portalstep = true;
|
||||
tm.portalgroup = tm.thing->Sector->GetOppositePortalGroup(sector_t::ceiling);
|
||||
return true;
|
||||
}
|
||||
}
|
||||
|
@ -1051,7 +1055,8 @@ bool PIT_CheckLine(FMultiBlockLinesIterator &mit, FMultiBlockLinesIterator::Chec
|
|||
}
|
||||
}
|
||||
|
||||
if (!(cres.portalflags & FFCF_NOFLOOR))
|
||||
// If we are stepping through a portal the line's opening must be checked, regardless of the NOFLOOR flag
|
||||
if (!(cres.portalflags & FFCF_NOFLOOR) || (tm.portalstep && open.bottomsec->PortalGroup == tm.portalgroup))
|
||||
{
|
||||
if (open.bottom > tm.floorz)
|
||||
{
|
||||
|
|
|
@ -22,6 +22,7 @@ struct FCheckPosition
|
|||
native Actor stepthing;
|
||||
native bool DoRipping;
|
||||
native bool portalstep;
|
||||
native int portalgroup;
|
||||
|
||||
native int PushTime;
|
||||
|
||||
|
|
Loading…
Reference in a new issue