| 35 | } |
| 36 | |
| 37 | private void fillNormal(int[] faceData) { |
| 38 | Vector3f v1 = new Vector3f(faceData[3 * 7 + 0], faceData[3 * 7 + 1], faceData[3 * 7 + 2]); |
| 39 | Vector3f t = new Vector3f(faceData[1 * 7 + 0], faceData[1 * 7 + 1], faceData[1 * 7 + 2]); |
| 40 | Vector3f v2 = new Vector3f(faceData[2 * 7 + 0], faceData[2 * 7 + 1], faceData[2 * 7 + 2]); |
| 41 | v1.sub(t); |
| 42 | t.set(faceData[0 * 7 + 0], faceData[0 * 7 + 1], faceData[0 * 7 + 2]); |
| 43 | v2.sub(t, v1); |
| 44 | v1.cross(v2, v1); |
| 45 | v1.normalize(); |
| 46 | |
| 47 | int x = ((byte) (v1.x * 127)) & 0xFF; |
| 48 | int y = ((byte) (v1.y * 127)) & 0xFF; |
| 49 | int z = ((byte) (v1.z * 127)) & 0xFF; |
| 50 | for (int i = 0; i < 4; i++) { |
| 51 | faceData[i * 7 + 6] = x | (y << 0x08) | (z << 0x10); |
| 52 | } |
| 53 | } |
| 54 | |
| 55 | private int[] a(clx blockPartFace, ej enumFacing, float[] vec, cxf modelRotation, clz blockPartRotation, boolean b1, boolean b2) { |
| 56 | int[] data = new int[28]; |