6 ** Given a triangle_t, find which indices match into the associated
\r
7 ** surface's base triangles.
\r
9 static void ReindexTriangle( int surfno, triangle_t *pTri, int indices[3] )
\r
12 md3SurfaceData_t *pSurfData = &g_data.surfData[surfno];
\r
21 for ( i = 0; i < 3; i++ )
\r
29 for ( t = 0; t < pSurfData->header.numVerts; t++ )
\r
31 if ( !VectorCompare( pTri->verts[i], pSurfData->baseVertexes[t].xyz ) )
\r
35 if ( !VectorCompare( pTri->normals[i], pSurfData->baseVertexes[t].normal ) )
\r
37 if ( pTri->texcoords[i][0] != pSurfData->baseVertexes[t].st[0] )
\r
39 if ( pTri->texcoords[i][1] != pSurfData->baseVertexes[t].st[1] )
\r
43 matches[i][numMatches++] = t;
\r
46 if ( indices[i] == -1 )
\r
48 // Error( "Could not ReindexTriangle, vertex not found" );
\r
53 for ( t = 0; t < psets[i].numtriangles; t++ )
\r
57 bTri = &g_data.surfData[i].baseTriangles[t];
\r
59 for (j=0 ; j<3 ; j++)
\r
61 bVert = &bTri->v[j];
\r
63 // get the xyz index
\r
64 for ( k = 0; k < g_data.surfData[i].header.numVerts; k++ )
\r
66 if ( ( g_data.surfData[i].baseVertexes[k].st[0] == bVert->st[0] ) &&
\r
67 ( g_data.surfData[i].baseVertexes[k].st[1] == bVert->st[1] ) &&
\r
68 ( VectorCompare (bVert->xyz, g_data.surfData[i].baseVertexes[k].xyz) ) &&
\r
69 ( VectorCompare (bVert->normal, g_data.surfData[i].baseVertexes[k].normal) ) )
\r
71 break; // this vertex is already in the base vertex list
\r
75 if (k == g_data.surfData[i].header.numVerts) { // new index
\r
76 g_data.surfData[i].baseVertexes[g_data.surfData[i].header.numVerts] = *bVert;
\r
77 g_data.surfData[i].header.numVerts++;
\r
86 const char *FindFrameFile (const char *frame)
\r
90 static char retname[1024];
\r
95 if (strstr (frame, "."))
\r
96 return frame; // allready in dot format
\r
98 // split 'run1' into 'run' and '1'
\r
99 s = frame + strlen(frame)-1;
\r
101 while (s != frame && *s >= '0' && *s <= '9')
\r
104 strcpy (suffix, s+1);
\r
105 strcpy (base, frame);
\r
106 base[s-frame+1] = 0;
\r
108 // check for 'run1.tri'
\r
109 sprintf (file1, "%s/%s%s.tri", g_cddir, base, suffix);
\r
110 time1 = FileTime (file1);
\r
113 sprintf (retname, "%s%s.tri", base, suffix);
\r
117 // check for 'run.1'
\r
118 sprintf (file1, "%s/%s.%s",g_cddir, base, suffix);
\r
119 time1 = FileTime (file1);
\r
122 sprintf (retname, "%s.%s", base, suffix);
\r
126 Error ("frame %s could not be found",frame);
\r