瀏覽代碼

[c] Fixed bug in Triangulator/SkeletonClipping regarding labeled gotos. Closes 895

badlogic 8 年之前
父節點
當前提交
95f3a1fe17

+ 3 - 1
spine-c/spine-c/src/spine/SkeletonClipping.c

@@ -219,8 +219,9 @@ void spSkeletonClipping_clipTriangles(spSkeletonClipping* self, float* vertices,
 	spFloatArray_clear(clippedVertices);
 	spFloatArray_clear(clippedUVs);
 	spUnsignedShortArray_clear(clippedTriangles);
+	i = 0;
 	outer:
-	for (i = 0; i < trianglesLength; i += 3) {
+	for (; i < trianglesLength; i += 3) {
 		int p;
 		int vertexOffset = triangles[i] * stride;
 		float x2, y2, u2, v2, x3, y3, u3, v3;
@@ -304,6 +305,7 @@ void spSkeletonClipping_clipTriangles(spSkeletonClipping* self, float* vertices,
 				clippedTrianglesItems[s + 1] = (unsigned short)(index + 1);
 				clippedTrianglesItems[s + 2] = (unsigned short)(index + 2);
 				index += 3;
+				i += 3;
 				goto outer;
 			}
 		}

+ 1 - 1
spine-c/spine-c/src/spine/Triangulator.c

@@ -155,7 +155,6 @@ spShortArray* spTriangulator_triangulate(spTriangulator* self, spFloatArray* ver
 		int previous = vertexCount - 1, i = 0, next = 1;
 		int previousIndex, nextIndex;
 		while (1) {
-			outer:
 			if (!isConcave[i]) {
 				int p1 = indices[previous] << 1, p2 = indices[i] << 1, p3 = indices[next] << 1;
 				float p1x = vertices[p1], p1y = vertices[p1 + 1];
@@ -175,6 +174,7 @@ spShortArray* spTriangulator_triangulate(spTriangulator* self, spFloatArray* ver
 				}
 				break;
 			}
+			outer:
 
 			if (next == 0) {
 				do {

+ 1 - 0
spine-sfml/src/spine/spine-sfml.cpp

@@ -135,6 +135,7 @@ void SkeletonDrawable::draw (RenderTarget& target, RenderStates states) const {
 		} else if (attachment->type == SP_ATTACHMENT_CLIPPING) {
 			spClippingAttachment* clip = (spClippingAttachment*)slot->attachment;
 			spSkeletonClipping_clipStart(clipper, slot, clip);
+			continue;
 		} else continue;
 
 		Uint8 r = static_cast<Uint8>(skeleton->color.r * slot->color.r * attachmentColor->r * 255);

+ 2 - 2
spine-ts/webgl/example/test.html

@@ -43,7 +43,7 @@ function init() {
 
 	assetManager.loadTexture(FILE + ".png");
 	assetManager.loadText(FILE + ".atlas");
-	assetManager.loadText("raptor.json");
+	assetManager.loadText(FILE + ".json");
 
 	timeKeeper = new spine.TimeKeeper();
 	requestAnimationFrame(load);
@@ -58,7 +58,7 @@ function load() {
 		var atlasLoader = new spine.AtlasAttachmentLoader(atlas);
 		var skeletonJson = new spine.SkeletonJson(atlasLoader);
 		skeletonJson.scale = SCALE;
-		var skeletonData = skeletonJson.readSkeletonData(JSON.parse(assetManager.get("raptor.json")));
+		var skeletonData = skeletonJson.readSkeletonData(JSON.parse(assetManager.get(FILE + ".json")));
 
 		for (var i = 0; i < NUM_SKELETONS; i++) {
 			skeleton = new spine.Skeleton(skeletonData);