bool CFXTransExplodingCubes::DrawCube(const SCube& cube, float fT)
{
	float fAngle = cube.fRotation * fT;
	
	CVector3 v3Axis(1.0f, 0.0f, 0.0f);
	CVector3 v3Center = cube.v3Center + (cube.v3Speed * fT) + (cube.v3Accel * fT * fT * 0.5f);

	CMatrix mtxRot;
	mtxRot.BuildRotationZ(fAngle);
	mtxRot.Transform(&v3Axis, true);

	CVector2 mapping[4] = { CVector2(cube.fU,  cube.fV),
							CVector2(cube.fU,  cube.fV2),
							CVector2(cube.fU2, cube.fV2),
							CVector2(cube.fU2, cube.fV) };

	CMatrix worldMtx;
	worldMtx.BuildRotation(fAngle, 1.0f, 0.0f, 0.0f);
	worldMtx.Translate    (v3Center.X(), v3Center.Y(), v3Center.Z());

	UtilGL::Transforming::SetMatrix(UtilGL::Transforming::MATRIX_WORLD, worldMtx);

	// front  back
	// 1   4  5  8
	// 2   3  6  7

	m_textureRTT.SetActive();

	UtilGL::States::Set(UtilGL::States::TEXTURE2D, UtilGL::States::ENABLED);
	UtilGL::States::SetColor(CVector4(1.0f, 1.0f, 1.0f, 1.0f));

	glBegin(GL_QUADS);

	glTexCoord2fv(mapping[0].Data()); glVertex3fv(cube.v1.Data());
	glTexCoord2fv(mapping[1].Data()); glVertex3fv(cube.v2.Data());
	glTexCoord2fv(mapping[2].Data()); glVertex3fv(cube.v3.Data());
	glTexCoord2fv(mapping[3].Data()); glVertex3fv(cube.v4.Data());

	glTexCoord2fv(mapping[0].Data()); glVertex3fv(cube.v8.Data());
	glTexCoord2fv(mapping[1].Data()); glVertex3fv(cube.v7.Data());
	glTexCoord2fv(mapping[2].Data()); glVertex3fv(cube.v6.Data());
	glTexCoord2fv(mapping[3].Data()); glVertex3fv(cube.v5.Data());

	glEnd();

	UtilGL::States::Set(UtilGL::States::TEXTURE2D, UtilGL::States::DISABLED);
	UtilGL::States::SetColor(m_v4FlatColor);

	glBegin(GL_QUADS);

	// left
	glVertex3fv(cube.v5.Data());
	glVertex3fv(cube.v6.Data());
	glVertex3fv(cube.v2.Data());
	glVertex3fv(cube.v1.Data());

	//right
	glVertex3fv(cube.v4.Data());
	glVertex3fv(cube.v3.Data());
	glVertex3fv(cube.v7.Data());
	glVertex3fv(cube.v8.Data());

	//bottom
	glVertex3fv(cube.v7.Data());
	glVertex3fv(cube.v3.Data());
	glVertex3fv(cube.v2.Data());
	glVertex3fv(cube.v6.Data());

	//top
	glVertex3fv(cube.v5.Data());
	glVertex3fv(cube.v1.Data());
	glVertex3fv(cube.v4.Data());
	glVertex3fv(cube.v8.Data());

	glEnd();
/*
	glLineWidth(1.0f);
	UtilGL::States::SetColor(CVector4(0.0f, 0.0f, 0.0f, 0.0f));
	UtilGL::States::Set(UtilGL::States::POLYGONMODE, UtilGL::States::POLYGONMODE_LINE);

	glBegin(GL_QUADS);

	// left
	glVertex3fv(cube.v5.Data());
	glVertex3fv(cube.v6.Data());
	glVertex3fv(cube.v2.Data());
	glVertex3fv(cube.v1.Data());

	//right
	glVertex3fv(cube.v4.Data());
	glVertex3fv(cube.v3.Data());
	glVertex3fv(cube.v7.Data());
	glVertex3fv(cube.v8.Data());

	//bottom
	glVertex3fv(cube.v7.Data());
	glVertex3fv(cube.v3.Data());
	glVertex3fv(cube.v2.Data());
	glVertex3fv(cube.v6.Data());

	//top
	glVertex3fv(cube.v5.Data());
	glVertex3fv(cube.v1.Data());
	glVertex3fv(cube.v4.Data());
	glVertex3fv(cube.v8.Data());

	glEnd();

	UtilGL::States::Set(UtilGL::States::POLYGONMODE, UtilGL::States::POLYGONMODE_FILL);
*/
	return true;
}