public final void shade(int intensity, int fallOffset, int x_lightness, int y_lightness, int z_lightness) {
		for (int i = 0; i < triangleCount; i++) {
			int k1 = facePointA[i];
			int i2 = facePointB[i];
			int j2 = facePointC[i];
			if (faceTypes == null) {
				int i3 = triangleColors[i];
				VertexNormal vertexNormal = super.vertices[k1];
				int k2 = intensity + (x_lightness * vertexNormal.x + y_lightness * vertexNormal.y + z_lightness * vertexNormal.z) / (fallOffset * vertexNormal.magnitude);
				triangleColorsA[i] = Model.getShadedColor(i3, k2, 0);
				vertexNormal = super.vertices[i2];
				k2 = intensity + (x_lightness * vertexNormal.x + y_lightness * vertexNormal.y + z_lightness * vertexNormal.z) / (fallOffset * vertexNormal.magnitude);
				triangleColorsB[i] = Model.getShadedColor(i3, k2, 0);
				vertexNormal = super.vertices[j2];
				k2 = intensity + (x_lightness * vertexNormal.x + y_lightness * vertexNormal.y + z_lightness * vertexNormal.z) / (fallOffset * vertexNormal.magnitude);
				triangleColorsC[i] = Model.getShadedColor(i3, k2, 0);
			} else if ((faceTypes[i] & 1) == 0) {
				int j3 = triangleColors[i];
				int k3 = faceTypes[i];
				VertexNormal vertexNormal1 = super.vertices[k1];
				int l2 = intensity + (x_lightness * vertexNormal1.x + y_lightness * vertexNormal1.y + z_lightness * vertexNormal1.z) / (fallOffset * vertexNormal1.magnitude);
				triangleColorsA[i] = Model.getShadedColor(j3, l2, k3);
				vertexNormal1 = super.vertices[i2];
				l2 = intensity + (x_lightness * vertexNormal1.x + y_lightness * vertexNormal1.y + z_lightness * vertexNormal1.z) / (fallOffset * vertexNormal1.magnitude);
				triangleColorsB[i] = Model.getShadedColor(j3, l2, k3);
				vertexNormal1 = super.vertices[j2];
				l2 = intensity + (x_lightness * vertexNormal1.x + y_lightness * vertexNormal1.y + z_lightness * vertexNormal1.z) / (fallOffset * vertexNormal1.magnitude);
				triangleColorsC[i] = Model.getShadedColor(j3, l2, k3);
			}
		}
		super.vertices = null;
		vertices = null;
		vertexVSkins = null;
		tSkin = null;
		if (faceTypes != null) {
			for (int l1 = 0; l1 < triangleCount; l1++) {
				if ((faceTypes[l1] & 2) == 2) {
					return;
				}
			}
		}
		triangleColors = null;
	}