mirror of
https://github.com/ZDoom/gzdoom.git
synced 2024-11-14 16:40:56 +00:00
- fixed: P_LineOpening_XFloors set some floor-related info in the ceiling case so that it never reached the point where it is needed.
- fixed: FMultiBlockLinesIterator/FMultiBlockThingsIterator need to treat radius=-1 as 'use default from actor.'
This commit is contained in:
parent
31cf712db3
commit
ed2b107bc9
2 changed files with 9 additions and 10 deletions
|
@ -821,13 +821,6 @@ void P_LineOpening_XFloors (FLineOpening &open, AActor * thing, const line_t *li
|
||||||
open.floorpic = highestfloorpic;
|
open.floorpic = highestfloorpic;
|
||||||
open.floorterrain = highestfloorterrain;
|
open.floorterrain = highestfloorterrain;
|
||||||
open.bottomsec = highestfloorsec;
|
open.bottomsec = highestfloorsec;
|
||||||
}
|
|
||||||
|
|
||||||
if(lowestceiling < open.top)
|
|
||||||
{
|
|
||||||
open.top = lowestceiling;
|
|
||||||
open.ceilingpic = lowestceilingpic;
|
|
||||||
open.topsec = lowestceilingsec;
|
|
||||||
if (highestfloorplanes[0])
|
if (highestfloorplanes[0])
|
||||||
{
|
{
|
||||||
open.frontfloorplane = *highestfloorplanes[0];
|
open.frontfloorplane = *highestfloorplanes[0];
|
||||||
|
@ -840,6 +833,13 @@ void P_LineOpening_XFloors (FLineOpening &open, AActor * thing, const line_t *li
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if(lowestceiling < open.top)
|
||||||
|
{
|
||||||
|
open.top = lowestceiling;
|
||||||
|
open.ceilingpic = lowestceilingpic;
|
||||||
|
open.topsec = lowestceilingsec;
|
||||||
|
}
|
||||||
|
|
||||||
open.lowfloor = MIN(lowestfloor[0], lowestfloor[1]);
|
open.lowfloor = MIN(lowestfloor[0], lowestfloor[1]);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -726,7 +726,7 @@ FMultiBlockLinesIterator::FMultiBlockLinesIterator(FPortalGroupArray &check, AAc
|
||||||
{
|
{
|
||||||
checkpoint = origin->Pos();
|
checkpoint = origin->Pos();
|
||||||
if (!check.inited) P_CollectConnectedGroups(origin->Sector->PortalGroup, checkpoint, origin->Top(), checkradius, checklist);
|
if (!check.inited) P_CollectConnectedGroups(origin->Sector->PortalGroup, checkpoint, origin->Top(), checkradius, checklist);
|
||||||
checkpoint.z = checkradius;
|
checkpoint.z = checkradius == -1? origin->radius : checkradius;
|
||||||
basegroup = origin->Sector->PortalGroup;
|
basegroup = origin->Sector->PortalGroup;
|
||||||
Reset();
|
Reset();
|
||||||
}
|
}
|
||||||
|
@ -801,7 +801,6 @@ bool FMultiBlockLinesIterator::Next(FMultiBlockLinesIterator::CheckResult *item)
|
||||||
item->line = line;
|
item->line = line;
|
||||||
item->position.x = offset.x;
|
item->position.x = offset.x;
|
||||||
item->position.y = offset.y;
|
item->position.y = offset.y;
|
||||||
item->position.z = checkpoint.z;
|
|
||||||
item->portalflags = portalflags;
|
item->portalflags = portalflags;
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
@ -1059,7 +1058,7 @@ FMultiBlockThingsIterator::FMultiBlockThingsIterator(FPortalGroupArray &check, A
|
||||||
{
|
{
|
||||||
checkpoint = origin->Pos();
|
checkpoint = origin->Pos();
|
||||||
if (!check.inited) P_CollectConnectedGroups(origin->Sector->PortalGroup, checkpoint, origin->Top(), checkradius, checklist);
|
if (!check.inited) P_CollectConnectedGroups(origin->Sector->PortalGroup, checkpoint, origin->Top(), checkradius, checklist);
|
||||||
checkpoint.z = checkradius;
|
checkpoint.z = checkradius == -1? origin->radius : checkradius;
|
||||||
basegroup = origin->Sector->PortalGroup;
|
basegroup = origin->Sector->PortalGroup;
|
||||||
Reset();
|
Reset();
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in a new issue