DebugGrid::DebugGrid(int size, int padding)
	{
		const int HALF_SIZE = size / 2;

		std::vector<float> m_verts;

		for(int i = -HALF_SIZE; i <= HALF_SIZE; i += padding)
		{
			AddToVector(m_verts, -HALF_SIZE, 0.0f, (float)i);
			AddToVector(m_verts, HALF_SIZE, 0.0f, (float)i);

			AddToVector(m_verts, (float)i, 0.0f, -HALF_SIZE);
			AddToVector(m_verts, (float)i, 0.0f, HALF_SIZE);
		}

		m_vbo = new VertexBufferObject(m_verts, false, false, CL_LINES);
        SetColor(Color::Blue);
	}
void CLoad3DS::ComputeNormals(t3DModel *pModel)
{
	int i;
	CVector3 vVector1, vVector2, vNormal, vPoly[3];

	if(pModel->numOfObjects <= 0)
		return;

	for(int index = 0; index < pModel->numOfObjects; index++)
	{

		t3DObject *pObject = &(pModel->pObject[index]);

		pObject->pNormals = new CVector3 [pObject->numOfVerts];

		for(i=0; i < pObject->numOfFaces; i++)
		{								
			unsigned short* pIdx = pObject->pFaces[i].vertIndex;
			vPoly[0] = pObject->pVerts[pIdx[0]];
			vPoly[1] = pObject->pVerts[pIdx[1]];
			vPoly[2] = pObject->pVerts[pIdx[2]];

			vVector1 = SubVector(vPoly[0], vPoly[1]);		
			vVector2 = SubVector(vPoly[0], vPoly[2]);

			vNormal  = Cross(vVector1, vVector2);	
			Normalize(vNormal);	

			AddToVector(pObject->pNormals[pIdx[0]], vNormal);
			AddToVector(pObject->pNormals[pIdx[1]], vNormal);
			AddToVector(pObject->pNormals[pIdx[2]], vNormal);
		}

		for (i = 0; i < pObject->numOfVerts; i++)			
		{
			Normalize(pObject->pNormals[i]);											
		}

	}
}
	void DrawQuads()
	{
		if(g_DrawVertices->size() < 4 * 3)
			return;

		//Create verts to draw triangle
		std::vector<float> vertices;
		for(size_t i = 0; i < g_DrawVertices->size(); i += 12)
		{
			Vector3Df one((*g_DrawVertices)[i], (*g_DrawVertices)[i + 1], (*g_DrawVertices)[i + 2]);
			Vector3Df two((*g_DrawVertices)[i + 3], (*g_DrawVertices)[i + 4], (*g_DrawVertices)[i + 5]);
			Vector3Df three((*g_DrawVertices)[i + 6], (*g_DrawVertices)[i + 7], (*g_DrawVertices)[i + 8]);
			Vector3Df four((*g_DrawVertices)[i + 9], (*g_DrawVertices)[i + 10], (*g_DrawVertices)[i + 11]);

			AddToVector(vertices, one);
			AddToVector(vertices, two);
			AddToVector(vertices, three);
			AddToVector(vertices, one);
			AddToVector(vertices, three);
			AddToVector(vertices, four);
		}

		//Create verts to draw triangle
		std::vector<float> normals;
		for(size_t i = 0; i < g_DrawNormals->size(); i += 12)
		{
			Vector3Df one((*g_DrawNormals)[i], (*g_DrawNormals)[i + 1], (*g_DrawNormals)[i + 2]);
			Vector3Df two((*g_DrawNormals)[i + 3], (*g_DrawNormals)[i + 4], (*g_DrawNormals)[i + 5]);
			Vector3Df three((*g_DrawNormals)[i + 6], (*g_DrawNormals)[i + 7], (*g_DrawNormals)[i + 8]);
			Vector3Df four((*g_DrawNormals)[i + 9], (*g_DrawNormals)[i + 10], (*g_DrawNormals)[i + 11]);

			AddToVector(normals, one);
			AddToVector(normals, two);
			AddToVector(normals, three);
			AddToVector(normals, one);
			AddToVector(normals, three);
			AddToVector(normals, four);
		}

		std::vector<float> texCoord;
		//Create tex coords to draw triangle
		if(g_DrawTextureCoords->size() >= 4 * 2) //4 verts * 2 uv
		{
			for(size_t i = 0; i < g_DrawTextureCoords->size(); i += 8)
			{
				Vector2Df one((*g_DrawTextureCoords)[i], (*g_DrawTextureCoords)[i + 1]);
				Vector2Df two((*g_DrawTextureCoords)[i + 2], (*g_DrawTextureCoords)[i + 3]);
				Vector2Df three((*g_DrawTextureCoords)[i + 4], (*g_DrawTextureCoords)[i + 5]);
				Vector2Df four((*g_DrawTextureCoords)[i + 6], (*g_DrawTextureCoords)[i + 7]);

				AddToVector(texCoord, one);
				AddToVector(texCoord, two);
				AddToVector(texCoord, three);
				AddToVector(texCoord, one);
				AddToVector(texCoord, three);
				AddToVector(texCoord, four);
			}
		}

		DrawTriangles(vertices, texCoord, normals);
	}