mirror of
https://github.com/ZDoom/gzdoom.git
synced 2024-11-23 20:43:15 +00:00
- fixed: CheckForPushSpecial's window check must also check 3D floors in the back sector.
SVN r3674 (trunk)
This commit is contained in:
parent
9c4a565366
commit
9e31ff0799
1 changed files with 18 additions and 0 deletions
|
@ -1649,9 +1649,27 @@ static void CheckForPushSpecial (line_t *line, int side, AActor *mobj, bool wind
|
|||
if (fzt >= mobj->z + mobj->height && bzt >= mobj->z + mobj->height &&
|
||||
fzb <= mobj->z && bzb <= mobj->z)
|
||||
{
|
||||
// we must also check if some 3D floor in the backsector may be blocking
|
||||
#ifdef _3DFLOORS
|
||||
for(unsigned int i=0;i<line->backsector->e->XFloor.ffloors.Size();i++)
|
||||
{
|
||||
F3DFloor* rover = line->backsector->e->XFloor.ffloors[i];
|
||||
|
||||
if (!(rover->flags & FF_SOLID) || !(rover->flags & FF_EXISTS)) continue;
|
||||
|
||||
fixed_t ff_bottom = rover->bottom.plane->ZatPoint(mobj->x, mobj->y);
|
||||
fixed_t ff_top = rover->top.plane->ZatPoint(mobj->x, mobj->y);
|
||||
|
||||
if (ff_bottom < mobj->z + mobj->height && ff_top > mobj->z)
|
||||
{
|
||||
goto isblocking;
|
||||
}
|
||||
}
|
||||
#endif
|
||||
return;
|
||||
}
|
||||
}
|
||||
isblocking:
|
||||
if (mobj->flags2 & MF2_PUSHWALL)
|
||||
{
|
||||
P_ActivateLine (line, mobj, side, SPAC_Push);
|
||||
|
|
Loading…
Reference in a new issue