private ExtendedPolygon[] convertWorldToScreen2(GameObject that,
			int width, int height) {
		ExtendedPolygon[] poly = new ExtendedPolygon[3];
		double[][][] faces = that.getBounds().getFaces();
		double[][] faceX;
		double[][] faceY;
		double[][] faceZ;
		Color xFaceColor;
		Color yFaceColor;
		Color zFaceColor;

		// System.out.println("Chosing faces :: ");

		// if(camera.distanceToXY(faces[3][4][0], faces[3][4][1]) <
		// camera.distanceToXY(faces[4][4][0], faces[4][4][1]))
		if (camera.distanceToXYZ(faces[3][4]) < camera
				.distanceToXYZ(faces[4][4])) {
			// System.out.println("Face 3");
			faceX = faces[3];
			xFaceColor = that.texture.get(3);
		} else {
			// System.out.println("Face 4");
			faceX = faces[4];
			xFaceColor = that.texture.get(4);
		}

		// if(camera.distanceToXY(faces[1][4][0], faces[1][4][1]) <
		// camera.distanceToXY(faces[2][4][0], faces[2][4][1])) {
		if (camera.distanceToXYZ(faces[1][4]) < camera
				.distanceToXYZ(faces[2][4])) {
			// System.out.println("Face 1");
			faceY = faces[1];
			yFaceColor = that.texture.get(1);
		} else {
			// System.out.println("Face 2");
			faceY = faces[2];
			yFaceColor = that.texture.get(2);
		}
		// System.out.println(camera.getDeltaZ(faces[0][4][2]) + " " +
		// camera.getDeltaZ(faces[5][4][2]) );

		// if(camera.getDeltaZ(faces[0][4][2]) < 0) {
		// System.out.println(camera.distanceToXYZ(faces[0][4]));

		if (camera.distanceToXYZ(faces[0][4]) < camera
				.distanceToXYZ(faces[5][4])) {
			// System.out.println("Face 0");
			faceZ = faces[0];
			zFaceColor = that.texture.get(0);
		} else {
			// System.out.println("Face 5");
			faceZ = faces[5];
			zFaceColor = that.texture.get(5);
		}

		for (int i = 0; i < faceX.length; i++) {
			// System.out.printf("FaceX point %d ");
			// double[] tempPoint = pointToScreenNew(faceX[i], width, height);
			double[] tempPoint = pointToScreen2(faceX[i], width, height);
			faceX[i] = tempPoint;

		}

		for (int i = 0; i < faceY.length; i++) {
			// System.out.printf("FaceX point %d ");
			// double[] tempPoint = pointToScreenNew(faceY[i], width, height);
			double[] tempPoint = pointToScreen2(faceY[i], width, height);
			faceY[i] = tempPoint;

		}
		for (int i = 0; i < faceZ.length; i++) {
			// System.out.printf("FaceX point %d ");
			double[] tempPoint = pointToScreen2(faceZ[i], width, height);
			faceZ[i] = tempPoint;

		}
		// Xface polygon creation
		int[] tempX = new int[4];
		int[] tempY = new int[4];

		// System.out.println(faceX.length);
		// -1 is to get rid of the midpoint...
		for (int i = 0; i < faceX.length - 1; i++) {
			// System.out.println(i);
			tempX[i] = (int) faceX[i][0];
			tempY[i] = (int) faceX[i][1];
		}
		poly[2] = new ExtendedPolygon(tempX, tempY, 4, xFaceColor);

		// Yface polygon creation
		tempX = new int[4];
		tempY = new int[4];
		for (int i = 0; i < faceY.length - 1; i++) {
			tempX[i] = (int) faceY[i][0];
			tempY[i] = (int) faceY[i][1];
		}
		poly[1] = new ExtendedPolygon(tempX, tempY, 4, yFaceColor);

		// Zface polygon creation
		tempX = new int[4];
		tempY = new int[4];
		for (int i = 0; i < faceZ.length - 1; i++) {

			tempX[i] = (int) faceZ[i][0];
			tempY[i] = (int) faceZ[i][1];
		}
		poly[0] = new ExtendedPolygon(tempX, tempY, 4, zFaceColor);

		return poly;
	}