/*
Copyright (C) 1999-2006 Id Software, Inc. and contributors.
For a list of contributors, see the accompanying CONTRIBUTORS file.

This file is part of GtkRadiant.

GtkRadiant is free software; you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
the Free Software Foundation; either version 2 of the License, or
(at your option) any later version.

GtkRadiant is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
GNU General Public License for more details.

You should have received a copy of the GNU General Public License
along with GtkRadiant; if not, write to the Free Software
Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA  02110-1301  USA
*/

#if 0

/*
** ReindexTriangle
**
** Given a triangle_t, find which indices match into the associated
** surface's base triangles.
*/
static void ReindexTriangle( int surfno, triangle_t *pTri, int indices[3] )
{
	int t, i;
	md3SurfaceData_t *pSurfData = &g_data.surfData[surfno];
	int matches[3][3];
	int numMatches = 0;
		

	indices[0] = -1;
	indices[1] = -1;
	indices[2] = -1;

	for ( i = 0; i < 3; i++ )
	{
		numMatches = 0;

		matches[i][0] = -1;
		matches[i][1] = -1;
		matches[i][2] = -1;

		for ( t = 0; t < pSurfData->header.numVerts; t++ )
		{
			if ( !VectorCompare( pTri->verts[i], pSurfData->baseVertexes[t].xyz ) )
				continue;

/*				 
			if ( !VectorCompare( pTri->normals[i], pSurfData->baseVertexes[t].normal ) )
				continue;
			if ( pTri->texcoords[i][0] != pSurfData->baseVertexes[t].st[0] )
				continue;
			if ( pTri->texcoords[i][1] != pSurfData->baseVertexes[t].st[1] ) 
				continue;
*/

			matches[i][numMatches++] = t;
		}

		if ( indices[i] == -1 )
		{
//			Error( "Could not ReindexTriangle, vertex not found" );
		}
	}

#if 0
		for ( t = 0; t < psets[i].numtriangles; t++ )
		{
			int b;

			bTri = &g_data.surfData[i].baseTriangles[t];

			for (j=0 ; j<3 ; j++)
			{
				bVert = &bTri->v[j];

				// get the xyz index
				for ( k = 0; k < g_data.surfData[i].header.numVerts; k++ )
				{
					if ( ( g_data.surfData[i].baseVertexes[k].st[0] == bVert->st[0] ) &&
						 ( g_data.surfData[i].baseVertexes[k].st[1] == bVert->st[1] ) &&
						 ( VectorCompare (bVert->xyz, g_data.surfData[i].baseVertexes[k].xyz) ) &&
						 ( VectorCompare (bVert->normal, g_data.surfData[i].baseVertexes[k].normal) ) )
					{
						break;	// this vertex is already in the base vertex list
					}
				}

				if (k == g_data.surfData[i].header.numVerts)	{ // new index
					g_data.surfData[i].baseVertexes[g_data.surfData[i].header.numVerts] = *bVert;
					g_data.surfData[i].header.numVerts++;
				}

				bVert->index = k;
			}
		}
#endif
}

const char	*FindFrameFile (const char *frame)
{
	int			time1;
	char	file1[1024];
	static char	retname[1024];
	char	base[32];
	char	suffix[32];
	const char	*s;

	if (strstr (frame, "."))
		return frame;		// allready in dot format

	// split 'run1' into 'run' and '1'
	s = frame + strlen(frame)-1;

	while (s != frame && *s >= '0' && *s <= '9')
		s--;

	strcpy (suffix, s+1);
	strcpy (base, frame);
	base[s-frame+1] = 0;

	// check for 'run1.tri'
	sprintf (file1, "%s/%s%s.tri", g_cddir, base, suffix);
	time1 = FileTime (file1);
	if (time1 != -1)
	{
		sprintf (retname, "%s%s.tri", base, suffix);
		return retname;
	}

	// check for 'run.1'
	sprintf (file1, "%s/%s.%s",g_cddir, base, suffix);
	time1 = FileTime (file1);
	if (time1 != -1)
	{
		sprintf (retname, "%s.%s", base, suffix);
		return retname;
	}

	Error ("frame %s could not be found",frame);
	return NULL;
}

#endif
