mirror of
https://github.com/ZDoom/gzdoom.git
synced 2024-11-25 21:41:03 +00:00
- Fixed: Since UDMF allows for fractional vertex coordinates, it is no longer
safe for P_AlignPlane() to truncate coordinates when searching for the furthest vertex from the line. SVN r1676 (trunk)
This commit is contained in:
parent
0506606efc
commit
861a955cef
2 changed files with 11 additions and 10 deletions
|
@ -1,4 +1,9 @@
|
|||
June 19, 2009
|
||||
June 22, 2009
|
||||
- Fixed: Since UDMF allows for fractional vertex coordinates, it is no longer
|
||||
safe for P_AlignPlane() to truncate coordinates when searching for the
|
||||
furthest vertex from the line.
|
||||
|
||||
June 19, 2009
|
||||
- The reorganized DirectInput game controller code finally compiles. (Ugh! It
|
||||
took far too long to reach this point.) Manual axis configuration is
|
||||
currently disabled, since I need to rewrite that, too. The eventual point of
|
||||
|
|
|
@ -462,7 +462,7 @@ void P_SpawnSlopeMakers (FMapThing *firstmt, FMapThing *lastmt)
|
|||
static void P_AlignPlane (sector_t *sec, line_t *line, int which)
|
||||
{
|
||||
sector_t *refsec;
|
||||
int bestdist;
|
||||
double bestdist;
|
||||
vertex_t *refvert = (*sec->lines)->v1; // Shut up, GCC
|
||||
int i;
|
||||
line_t **probe;
|
||||
|
@ -471,23 +471,19 @@ static void P_AlignPlane (sector_t *sec, line_t *line, int which)
|
|||
return;
|
||||
|
||||
// Find furthest vertex from the reference line. It, along with the two ends
|
||||
// of the line will define the plane.
|
||||
// of the line, will define the plane.
|
||||
bestdist = 0;
|
||||
for (i = sec->linecount*2, probe = sec->lines; i > 0; i--)
|
||||
{
|
||||
int dist;
|
||||
double dist;
|
||||
vertex_t *vert;
|
||||
|
||||
// Do calculations with only the upper bits, because the lower ones
|
||||
// are all zero, and we would overflow for a lot of distances if we
|
||||
// kept them around.
|
||||
|
||||
if (i & 1)
|
||||
vert = (*probe++)->v2;
|
||||
else
|
||||
vert = (*probe)->v1;
|
||||
dist = abs (((line->v1->y - vert->y) >> FRACBITS) * (line->dx >> FRACBITS) -
|
||||
((line->v1->x - vert->x) >> FRACBITS) * (line->dy >> FRACBITS));
|
||||
dist = fabs((double(line->v1->y) - vert->y) * line->dx -
|
||||
(double(line->v1->x) - vert->x) * line->dy);
|
||||
|
||||
if (dist > bestdist)
|
||||
{
|
||||
|
|
Loading…
Reference in a new issue