ソースを参照

[libgdx] Fixed a clipping bug when there are two clipping meshes and clipping-end-slot is a skin bone that is disabled (Clipping.endClipping not called when slot.bone.active==false). See #1694.

Harald Csaszar 5 年 前
コミット
54b8039f1a

+ 12 - 3
spine-libgdx/spine-libgdx/src/com/esotericsoftware/spine/SkeletonRenderer.java

@@ -91,7 +91,10 @@ public class SkeletonRenderer {
 		Array<Slot> drawOrder = skeleton.drawOrder;
 		for (int i = 0, n = drawOrder.size; i < n; i++) {
 			Slot slot = drawOrder.get(i);
-			if (!slot.bone.active) continue;
+			if (!slot.bone.active) {
+				clipper.clipEnd(slot);
+				continue;
+			}
 			Attachment attachment = slot.attachment;
 			if (attachment instanceof RegionAttachment) {
 				RegionAttachment region = (RegionAttachment)attachment;
@@ -170,7 +173,10 @@ public class SkeletonRenderer {
 		Array<Slot> drawOrder = skeleton.drawOrder;
 		for (int i = 0, n = drawOrder.size; i < n; i++) {
 			Slot slot = drawOrder.get(i);
-			if (!slot.bone.active) continue;
+			if (!slot.bone.active) {
+				clipper.clipEnd(slot);
+				continue;
+			}
 			Texture texture = null;
 			int vertexSize = clipper.isClipping() ? 2 : 5;
 			Attachment attachment = slot.attachment;
@@ -294,7 +300,10 @@ public class SkeletonRenderer {
 		Array<Slot> drawOrder = skeleton.drawOrder;
 		for (int i = 0, n = drawOrder.size; i < n; i++) {
 			Slot slot = drawOrder.get(i);
-			if (!slot.bone.active) continue;
+			if (!slot.bone.active) {
+				clipper.clipEnd(slot);
+				continue;
+			}
 			Texture texture = null;
 			int vertexSize = clipper.isClipping() ? 2 : 6;
 			Attachment attachment = slot.attachment;