- added DavidPH's submission for specifying vertex heights directly in UDMF.

SVN r3037 (trunk)
This commit is contained in:
Christoph Oelckers 2010-12-14 00:56:44 +00:00
commit 79c5080dda
7 changed files with 72 additions and 3 deletions

View file

@ -390,6 +390,7 @@ class UDMFParser : public UDMFParserBase
TArray<mapsidedef_t> ParsedSideTextures;
TArray<sector_t> ParsedSectors;
TArray<vertex_t> ParsedVertices;
TArray<vertexdata_t> ParsedVertexDatas;
FDynamicColormap *fogMap, *normMap;
@ -1303,9 +1304,10 @@ public:
//
//===========================================================================
void ParseVertex(vertex_t *vt)
void ParseVertex(vertex_t *vt, vertexdata_t *vd)
{
vt->x = vt->y = 0;
vd->zCeiling = vd->zFloor = vd->flags = 0;
sc.MustGetStringName("{");
while (!sc.CheckString("}"))
{
@ -1320,9 +1322,21 @@ public:
case NAME_X:
vt->x = FLOAT2FIXED(strtod(value, NULL));
break;
case NAME_Y:
vt->y = FLOAT2FIXED(strtod(value, NULL));
break;
case NAME_ZCeiling:
vd->zCeiling = FLOAT2FIXED(strtod(value, NULL));
vd->flags |= VERTEXFLAG_ZCeilingEnabled;
break;
case NAME_ZFloor:
vd->zFloor = FLOAT2FIXED(strtod(value, NULL));
vd->flags |= VERTEXFLAG_ZFloorEnabled;
break;
default:
break;
}
@ -1520,8 +1534,10 @@ public:
else if (sc.Compare("vertex"))
{
vertex_t vt;
ParseVertex(&vt);
vertexdata_t vd;
ParseVertex(&vt, &vd);
ParsedVertices.Push(vt);
ParsedVertexDatas.Push(vd);
}
else
{
@ -1534,6 +1550,11 @@ public:
vertexes = new vertex_t[numvertexes];
memcpy(vertexes, &ParsedVertices[0], numvertexes * sizeof(*vertexes));
// Create the real vertex datas
numvertexdatas = ParsedVertexDatas.Size();
vertexdatas = new vertexdata_t[numvertexdatas];
memcpy(vertexdatas, &ParsedVertexDatas[0], numvertexdatas * sizeof(*vertexdatas));
// Create the real sectors
numsectors = ParsedSectors.Size();
sectors = new sector_t[numsectors];