mirror of
https://github.com/EsotericSoftware/spine-runtimes.git
synced 2026-02-06 23:34:53 +08:00
[c] Fixed bug in Triangulator/SkeletonClipping regarding labeled gotos. Closes 895
This commit is contained in:
parent
4ee17864a2
commit
95f3a1fe17
@ -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;
|
||||
}
|
||||
}
|
||||
|
||||
@ -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 {
|
||||
|
||||
@ -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);
|
||||
|
||||
@ -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);
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user