- Removed the 64 seg limit for polyobjects defined with Polyobj_ExplicitLine.

- Polyobj_StartLine and Polyobj_ExplicitLine can now set a line's ID. This is
  the fourth parameter for Polyobj_StartLine and the fifth parameter for
  Polyobj_ExplicitLine.


SVN r310 (trunk)
This commit is contained in:
Randy Heit 2006-08-24 19:19:15 +00:00
parent a69d7f529e
commit cf3b1bfd6e
3 changed files with 27 additions and 21 deletions

View file

@ -1,4 +1,8 @@
August 24, 2006 August 24, 2006
- Removed the 64 seg limit for polyobjects defined with Polyobj_ExplicitLine.
- Polyobj_StartLine and Polyobj_ExplicitLine can now set a line's ID. This is
the fourth parameter for Polyobj_StartLine and the fifth parameter for
Polyobj_ExplicitLine.
- Added support for DDS textures compressed with DXT1, DXT3, or DXT5. - Added support for DDS textures compressed with DXT1, DXT3, or DXT5.
August 23, 2006 August 23, 2006

View file

@ -1649,21 +1649,30 @@ void P_AdjustLine (line_t *ld)
// the tag doesn't always go into the first arg. // the tag doesn't always go into the first arg.
if (level.flags & LEVEL_HEXENFORMAT) if (level.flags & LEVEL_HEXENFORMAT)
{ {
if (ld->special == Line_SetIdentification) switch (ld->special)
{ {
case Line_SetIdentification:
ld->id = ld->args[0]; ld->id = ld->args[0];
ld->flags |= ld->args[1]<<16; ld->flags |= ld->args[1]<<16;
} break;
else if (ld->special == TranslucentLine)
{ case TranslucentLine:
ld->id = ld->args[0]; ld->id = ld->args[0];
ld->flags |= ld->args[3]<<16; ld->flags |= ld->args[3]<<16;
} break;
else if (
ld->special == Teleport_Line || case Teleport_Line:
ld->special == Scroll_Texture_Model) case Scroll_Texture_Model:
{
ld->id = ld->args[0]; ld->id = ld->args[0];
break;
case Polyobj_StartLine:
ld->id = ld->args[3];
break;
case Polyobj_ExplicitLine:
ld->id = ld->args[4];
break;
} }
} }
} }

View file

@ -1260,9 +1260,6 @@ static void SpawnPolyobj (int index, int tag, int type)
unsigned int ii; unsigned int ii;
int i; int i;
int j; int j;
int psIndex;
int psIndexOld;
seg_t *polySegList[PO_MAXPOLYSEGS];
for (ii = 0; ii < KnownPolySegs.Size(); ++ii) for (ii = 0; ii < KnownPolySegs.Size(); ++ii)
{ {
@ -1302,11 +1299,12 @@ static void SpawnPolyobj (int index, int tag, int type)
} }
if (!polyobjs[index].segs) if (!polyobjs[index].segs)
{ // didn't find a polyobj through PO_LINE_START { // didn't find a polyobj through PO_LINE_START
psIndex = 0; TArray<seg_t *> polySegList;
unsigned int psIndexOld;
polyobjs[index].numsegs = 0; polyobjs[index].numsegs = 0;
for (j = 1; j < PO_MAXPOLYSEGS; j++) for (j = 1; j < PO_MAXPOLYSEGS; j++)
{ {
psIndexOld = psIndex; psIndexOld = polySegList.Size();
for (ii = 0; ii < KnownPolySegs.Size(); ++ii) for (ii = 0; ii < KnownPolySegs.Size(); ++ii)
{ {
i = KnownPolySegs[ii]; i = KnownPolySegs[ii];
@ -1322,13 +1320,8 @@ static void SpawnPolyobj (int index, int tag, int type)
} }
if (segs[i].linedef->args[1] == j) if (segs[i].linedef->args[1] == j)
{ {
polySegList[psIndex] = &segs[i]; polySegList.Push (&segs[i]);
polyobjs[index].numsegs++; polyobjs[index].numsegs++;
psIndex++;
if (psIndex > PO_MAXPOLYSEGS)
{
I_Error ("SpawnPolyobj: psIndex > PO_MAXPOLYSEGS\n");
}
} }
} }
} }
@ -1347,7 +1340,7 @@ static void SpawnPolyobj (int index, int tag, int type)
KnownPolySegs[ii] = -1; KnownPolySegs[ii] = -1;
} }
} }
if (psIndex == psIndexOld) if (polySegList.Size() == psIndexOld)
{ // Check if an explicit line order has been skipped. { // Check if an explicit line order has been skipped.
// A line has been skipped if there are any more explicit // A line has been skipped if there are any more explicit
// lines with the current tag value. [RH] Can this actually happen? // lines with the current tag value. [RH] Can this actually happen?