mirror of
https://github.com/ZDoom/qzdoom-gpl.git
synced 2025-02-21 19:00:56 +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 &&
|
if (fzt >= mobj->z + mobj->height && bzt >= mobj->z + mobj->height &&
|
||||||
fzb <= mobj->z && bzb <= mobj->z)
|
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;
|
return;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
isblocking:
|
||||||
if (mobj->flags2 & MF2_PUSHWALL)
|
if (mobj->flags2 & MF2_PUSHWALL)
|
||||||
{
|
{
|
||||||
P_ActivateLine (line, mobj, side, SPAC_Push);
|
P_ActivateLine (line, mobj, side, SPAC_Push);
|
||||||
|
|
Loading…
Reference in a new issue