Эх сурвалжийг харах

[libgdx] SkeletonClipping#clipTriangles clean up.

Nathan Sweet 1 жил өмнө
parent
commit
485de74983

+ 1 - 1
spine-libgdx/spine-libgdx/src/com/esotericsoftware/spine/Skeleton.java

@@ -729,7 +729,7 @@ public class Skeleton {
 			}
 			if (vertices != null) {
 				if (clipper != null && clipper.isClipping()) {
-					clipper.clipTriangles(vertices, verticesLength, triangles, triangles.length);
+					clipper.clipTriangles(vertices, triangles, triangles.length);
 					vertices = clipper.getClippedVertices().items;
 					verticesLength = clipper.getClippedVertices().size;
 				}

+ 2 - 2
spine-libgdx/spine-libgdx/src/com/esotericsoftware/spine/SkeletonRenderer.java

@@ -204,7 +204,7 @@ public class SkeletonRenderer {
 					| (int)(r * slotColor.r * color.r * multiplier));
 
 				if (clipper.isClipping()) {
-					clipper.clipTriangles(vertices, verticesLength, triangles, triangles.length, uvs, c, 0, false);
+					clipper.clipTriangles(vertices, triangles, triangles.length, uvs, c, 0, false);
 					FloatArray clippedVertices = clipper.getClippedVertices();
 					ShortArray clippedTriangles = clipper.getClippedTriangles();
 					batch.draw(texture, clippedVertices.items, 0, clippedVertices.size, clippedTriangles.items, 0,
@@ -311,7 +311,7 @@ public class SkeletonRenderer {
 						| (int)(red * darkColor.r));
 
 				if (clipper.isClipping()) {
-					clipper.clipTriangles(vertices, verticesLength, triangles, triangles.length, uvs, light, dark, true);
+					clipper.clipTriangles(vertices, triangles, triangles.length, uvs, light, dark, true);
 					FloatArray clippedVertices = clipper.getClippedVertices();
 					ShortArray clippedTriangles = clipper.getClippedTriangles();
 					batch.drawTwoColor(texture, clippedVertices.items, 0, clippedVertices.size, clippedTriangles.items, 0,

+ 11 - 19
spine-libgdx/spine-libgdx/src/com/esotericsoftware/spine/utils/SkeletonClipping.java

@@ -82,18 +82,15 @@ public class SkeletonClipping {
 		return clipAttachment != null;
 	}
 
-	public void clipTriangles (float[] vertices, int verticesLength, short[] triangles, int trianglesLength) {
-
+	public void clipTriangles (float[] vertices, short[] triangles, int trianglesLength) {
 		FloatArray clipOutput = this.clipOutput, clippedVertices = this.clippedVertices;
 		ShortArray clippedTriangles = this.clippedTriangles;
 		Object[] polygons = clippingPolygons.items;
 		int polygonsCount = clippingPolygons.size;
-		int vertexSize = 2;
 
 		short index = 0;
 		clippedVertices.clear();
 		clippedTriangles.clear();
-		outer:
 		for (int i = 0; i < trianglesLength; i += 3) {
 			int vertexOffset = triangles[i] << 1;
 			float x1 = vertices[vertexOffset], y1 = vertices[vertexOffset + 1];
@@ -112,27 +109,25 @@ public class SkeletonClipping {
 
 					int clipOutputCount = clipOutputLength >> 1;
 					float[] clipOutputItems = clipOutput.items;
-					float[] clippedVerticesItems = clippedVertices.setSize(s + clipOutputCount * vertexSize);
-					for (int ii = 0; ii < clipOutputLength; ii += 2) {
+					float[] clippedVerticesItems = clippedVertices.setSize(s + clipOutputCount * 2);
+					for (int ii = 0; ii < clipOutputLength; ii += 2, s += 2) {
 						float x = clipOutputItems[ii], y = clipOutputItems[ii + 1];
 						clippedVerticesItems[s] = x;
 						clippedVerticesItems[s + 1] = y;
-						s += 2;
 					}
 
 					s = clippedTriangles.size;
 					short[] clippedTrianglesItems = clippedTriangles.setSize(s + 3 * (clipOutputCount - 2));
 					clipOutputCount--;
-					for (int ii = 1; ii < clipOutputCount; ii++) {
+					for (int ii = 1; ii < clipOutputCount; ii++, s += 3) {
 						clippedTrianglesItems[s] = index;
 						clippedTrianglesItems[s + 1] = (short)(index + ii);
 						clippedTrianglesItems[s + 2] = (short)(index + ii + 1);
-						s += 3;
 					}
 					index += clipOutputCount + 1;
 
 				} else {
-					float[] clippedVerticesItems = clippedVertices.setSize(s + 3 * vertexSize);
+					float[] clippedVerticesItems = clippedVertices.setSize(s + 3 * 2);
 					clippedVerticesItems[s] = x1;
 					clippedVerticesItems[s + 1] = y1;
 
@@ -148,14 +143,14 @@ public class SkeletonClipping {
 					clippedTrianglesItems[s + 1] = (short)(index + 1);
 					clippedTrianglesItems[s + 2] = (short)(index + 2);
 					index += 3;
-					continue outer;
+					break;
 				}
 			}
 		}
 	}
 
-	public void clipTriangles (float[] vertices, int verticesLength, short[] triangles, int trianglesLength, float[] uvs,
-		float light, float dark, boolean twoColor) {
+	public void clipTriangles (float[] vertices, short[] triangles, int trianglesLength, float[] uvs, float light, float dark,
+		boolean twoColor) {
 
 		FloatArray clipOutput = this.clipOutput, clippedVertices = this.clippedVertices;
 		ShortArray clippedTriangles = this.clippedTriangles;
@@ -166,7 +161,6 @@ public class SkeletonClipping {
 		short index = 0;
 		clippedVertices.clear();
 		clippedTriangles.clear();
-		outer:
 		for (int i = 0; i < trianglesLength; i += 3) {
 			int vertexOffset = triangles[i] << 1;
 			float x1 = vertices[vertexOffset], y1 = vertices[vertexOffset + 1];
@@ -191,7 +185,7 @@ public class SkeletonClipping {
 					int clipOutputCount = clipOutputLength >> 1;
 					float[] clipOutputItems = clipOutput.items;
 					float[] clippedVerticesItems = clippedVertices.setSize(s + clipOutputCount * vertexSize);
-					for (int ii = 0; ii < clipOutputLength; ii += 2) {
+					for (int ii = 0; ii < clipOutputLength; ii += 2, s += 2) {
 						float x = clipOutputItems[ii], y = clipOutputItems[ii + 1];
 						clippedVerticesItems[s] = x;
 						clippedVerticesItems[s + 1] = y;
@@ -207,17 +201,15 @@ public class SkeletonClipping {
 						float c = 1 - a - b;
 						clippedVerticesItems[s] = u1 * a + u2 * b + u3 * c;
 						clippedVerticesItems[s + 1] = v1 * a + v2 * b + v3 * c;
-						s += 2;
 					}
 
 					s = clippedTriangles.size;
 					short[] clippedTrianglesItems = clippedTriangles.setSize(s + 3 * (clipOutputCount - 2));
 					clipOutputCount--;
-					for (int ii = 1; ii < clipOutputCount; ii++) {
+					for (int ii = 1; ii < clipOutputCount; ii++, s += 3) {
 						clippedTrianglesItems[s] = index;
 						clippedTrianglesItems[s + 1] = (short)(index + ii);
 						clippedTrianglesItems[s + 2] = (short)(index + ii + 1);
-						s += 3;
 					}
 					index += clipOutputCount + 1;
 
@@ -267,7 +259,7 @@ public class SkeletonClipping {
 					clippedTrianglesItems[s + 1] = (short)(index + 1);
 					clippedTrianglesItems[s + 2] = (short)(index + 2);
 					index += 3;
-					continue outer;
+					break;
 				}
 			}
 		}