//---------------------------------------------------------------------------
//
MLRPrimitive *
	MLRIndexedPolyMesh::LightMapLighting(MLRLight *light)
{
	int i, j, k, stride, len = lengths.GetLength();
	LinearMatrix4D matrix = LinearMatrix4D::Identity;
	Point3D lightPos, hitPoint;

	UnitVector3D up, right;
	Scalar f, u, v;

	light->GetInShapePosition(lightPos);

	for(i=0,j=0,k=0;i<len;i++)
	{
		stride = lengths[i];

		if(testList[i] == 0)
		{
			j += stride;
			continue;
		}

		f = facePlanes[i].DistanceTo(lightPos);
		if(f>0.0f)
		{
			hitPoint.Multiply(facePlanes[i].normal, -f);
			hitPoint+=lightPos;

			matrix.AlignAxis(facePlanes[i].normal, Z_Axis, X_Axis, Y_Axis);
			matrix.GetWorldRightInLocal(&right);
			matrix.GetWorldUpInLocal(&up);

			for(k=j;k<stride+j;k++)
			{
				Vector3D vec(coords[index[k]]);
				vec-=hitPoint;

				u = (right*vec)/f;
				v = (up*vec)/f;
			}
			testList[i] = 0;
		}

		j += stride;
	}

	return NULL;
}