- Backport r1253 through r1256 and r1259 of GZDoom.

* By pressing request, allow Linux users to build ZDoom with an FMOD version that doesn't give them 3D sound positioning. :p
	* Fixed severe copy-pasta portal copy bug.
	* 3D floors hidden by being moved above the ceiling or below the floor will no longer show in the automap.
	* Reject TEXTURES scale of 0. They'd do nothing but provoke a division by zero error.
	* Maybe fixed Linux compilation?

SVN r3297 (trunk)
This commit is contained in:
Braden Obrzut 2011-09-27 01:14:31 +00:00
commit 9c8bb236ec
5 changed files with 25 additions and 14 deletions

View file

@ -1670,6 +1670,7 @@ void AM_drawSubsectors()
// (Make the comparison in floating point to avoid overflows and improve performance.)
double secx;
double secy;
double seczb, seczt;
double cmpz = FIXED2DBL(viewz);
if (players[consoleplayer].camera && sec == players[consoleplayer].camera->Sector)
@ -1683,6 +1684,8 @@ void AM_drawSubsectors()
secx = FIXED2DBL(sec->soundorg[0]);
secy = FIXED2DBL(sec->soundorg[1]);
}
seczb = floorplane->ZatPoint(secx, secy);
seczt = sec->ceilingplane.ZatPoint(secx, secy);
for (unsigned int i = 0; i < sec->e->XFloor.ffloors.Size(); ++i)
{
@ -1690,7 +1693,13 @@ void AM_drawSubsectors()
if (!(rover->flags & FF_EXISTS)) continue;
if (rover->flags & FF_FOG) continue;
if (rover->alpha == 0) continue;
if (rover->top.plane->ZatPoint(secx, secy) < cmpz)
double roverz = rover->top.plane->ZatPoint(secx, secy);
// Ignore 3D floors that are above or below the sector itself:
// they are hidden. Since 3D floors are sorted top to bottom,
// if we get below the sector floor, we can stop.
if (roverz > seczt) continue;
if (roverz < seczb) break;
if (roverz < cmpz)
{
maptex = *(rover->top.texture);
floorplane = rover->top.plane;