mirror of
https://github.com/ZDoom/gzdoom.git
synced 2024-11-10 14:51:40 +00:00
- Fixed coordinate checks for objects on 3DMidtex lines.
SVN r978 (trunk)
This commit is contained in:
parent
9fcb85d3e9
commit
7949f6d35f
3 changed files with 22 additions and 3 deletions
|
@ -1,4 +1,5 @@
|
|||
May 17, 2008 (Changes by Graf Zahl)
|
||||
- Fixed coordinate checks for objects on 3DMidtex lines.
|
||||
- Fixed: All translucent blending operations for CopyColors must treat an
|
||||
alpha of 0 so that the pixel is not modified or texture composition as
|
||||
intended will not work.
|
||||
|
|
|
@ -150,6 +150,10 @@ static bool PIT_FindFloorCeiling (line_t *ld, const FBoundingBox &box, FCheckPos
|
|||
tmf.floorsector = open.bottomsec;
|
||||
tmf.touchmidtex = open.touchmidtex;
|
||||
}
|
||||
else if (open.bottom == tmf.floorz)
|
||||
{
|
||||
tmf.touchmidtex |= open.touchmidtex;
|
||||
}
|
||||
|
||||
if (open.lowfloor < tmf.dropoffz)
|
||||
tmf.dropoffz = open.lowfloor;
|
||||
|
@ -194,7 +198,7 @@ void P_FindFloorCeiling (AActor *actor, bool onlymidtex)
|
|||
|
||||
if (tmf.touchmidtex) tmf.dropoffz = tmf.floorz;
|
||||
|
||||
if (!onlymidtex || (tmf.touchmidtex && (tmf.floorz < actor->z)))
|
||||
if (!onlymidtex || (tmf.touchmidtex && (tmf.floorz <= actor->z)))
|
||||
{
|
||||
actor->floorz = tmf.floorz;
|
||||
actor->dropoffz = tmf.dropoffz;
|
||||
|
@ -629,6 +633,10 @@ bool PIT_CheckLine (line_t *ld, const FBoundingBox &box, FCheckPosition &tm)
|
|||
tm.touchmidtex = open.touchmidtex;
|
||||
tm.thing->BlockingLine = ld;
|
||||
}
|
||||
else if (open.bottom == tm.floorz)
|
||||
{
|
||||
tm.touchmidtex |= open.touchmidtex;
|
||||
}
|
||||
|
||||
if (open.lowfloor < tm.dropoffz)
|
||||
tm.dropoffz = open.lowfloor;
|
||||
|
@ -1133,7 +1141,11 @@ bool P_CheckPosition (AActor *thing, fixed_t x, fixed_t y, FCheckPosition &tm)
|
|||
if (tm.ceilingz - tm.floorz < thing->height)
|
||||
return false;
|
||||
|
||||
if (tm.stepthing != NULL || tm.touchmidtex)
|
||||
if (tm.touchmidtex)
|
||||
{
|
||||
tm.dropoffz = tm.floorz;
|
||||
}
|
||||
else if (tm.stepthing != NULL)
|
||||
{
|
||||
tm.dropoffz = thingdropoffz;
|
||||
}
|
||||
|
|
|
@ -1758,7 +1758,12 @@ explode:
|
|||
|| mo->momy > FRACUNIT/4 || mo->momy < -FRACUNIT/4)
|
||||
{
|
||||
if (mo->floorz > mo->Sector->floorplane.ZatPoint (mo->x, mo->y))
|
||||
return;
|
||||
{
|
||||
if (mo->dropoffz != mo->floorz) // 3DMidtex or other special cases that must be excluded
|
||||
{
|
||||
return;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -4029,6 +4034,7 @@ AActor *P_SpawnMapThing (FMapThing *mthing, int position)
|
|||
mobj->SpawnPoint[2] = mthing->z;
|
||||
mobj->SpawnAngle = mthing->angle;
|
||||
mobj->SpawnFlags = mthing->flags;
|
||||
P_FindFloorCeiling(mobj, true);
|
||||
|
||||
if (!(mobj->flags2 & MF2_ARGSDEFINED))
|
||||
{
|
||||
|
|
Loading…
Reference in a new issue