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

This commit is contained in:
badlogic 2017-05-09 15:00:34 +02:00
parent 4ee17864a2
commit 95f3a1fe17
4 changed files with 7 additions and 4 deletions

View File

@ -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;
}
}

View File

@ -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 {

View File

@ -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);

View File

@ -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);