mirror of
https://github.com/EsotericSoftware/spine-runtimes.git
synced 2026-03-02 21:59:09 +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(clippedVertices);
|
||||||
spFloatArray_clear(clippedUVs);
|
spFloatArray_clear(clippedUVs);
|
||||||
spUnsignedShortArray_clear(clippedTriangles);
|
spUnsignedShortArray_clear(clippedTriangles);
|
||||||
|
i = 0;
|
||||||
outer:
|
outer:
|
||||||
for (i = 0; i < trianglesLength; i += 3) {
|
for (; i < trianglesLength; i += 3) {
|
||||||
int p;
|
int p;
|
||||||
int vertexOffset = triangles[i] * stride;
|
int vertexOffset = triangles[i] * stride;
|
||||||
float x2, y2, u2, v2, x3, y3, u3, v3;
|
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 + 1] = (unsigned short)(index + 1);
|
||||||
clippedTrianglesItems[s + 2] = (unsigned short)(index + 2);
|
clippedTrianglesItems[s + 2] = (unsigned short)(index + 2);
|
||||||
index += 3;
|
index += 3;
|
||||||
|
i += 3;
|
||||||
goto outer;
|
goto outer;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@ -155,7 +155,6 @@ spShortArray* spTriangulator_triangulate(spTriangulator* self, spFloatArray* ver
|
|||||||
int previous = vertexCount - 1, i = 0, next = 1;
|
int previous = vertexCount - 1, i = 0, next = 1;
|
||||||
int previousIndex, nextIndex;
|
int previousIndex, nextIndex;
|
||||||
while (1) {
|
while (1) {
|
||||||
outer:
|
|
||||||
if (!isConcave[i]) {
|
if (!isConcave[i]) {
|
||||||
int p1 = indices[previous] << 1, p2 = indices[i] << 1, p3 = indices[next] << 1;
|
int p1 = indices[previous] << 1, p2 = indices[i] << 1, p3 = indices[next] << 1;
|
||||||
float p1x = vertices[p1], p1y = vertices[p1 + 1];
|
float p1x = vertices[p1], p1y = vertices[p1 + 1];
|
||||||
@ -175,6 +174,7 @@ spShortArray* spTriangulator_triangulate(spTriangulator* self, spFloatArray* ver
|
|||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
outer:
|
||||||
|
|
||||||
if (next == 0) {
|
if (next == 0) {
|
||||||
do {
|
do {
|
||||||
|
|||||||
@ -135,6 +135,7 @@ void SkeletonDrawable::draw (RenderTarget& target, RenderStates states) const {
|
|||||||
} else if (attachment->type == SP_ATTACHMENT_CLIPPING) {
|
} else if (attachment->type == SP_ATTACHMENT_CLIPPING) {
|
||||||
spClippingAttachment* clip = (spClippingAttachment*)slot->attachment;
|
spClippingAttachment* clip = (spClippingAttachment*)slot->attachment;
|
||||||
spSkeletonClipping_clipStart(clipper, slot, clip);
|
spSkeletonClipping_clipStart(clipper, slot, clip);
|
||||||
|
continue;
|
||||||
} else continue;
|
} else continue;
|
||||||
|
|
||||||
Uint8 r = static_cast<Uint8>(skeleton->color.r * slot->color.r * attachmentColor->r * 255);
|
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.loadTexture(FILE + ".png");
|
||||||
assetManager.loadText(FILE + ".atlas");
|
assetManager.loadText(FILE + ".atlas");
|
||||||
assetManager.loadText("raptor.json");
|
assetManager.loadText(FILE + ".json");
|
||||||
|
|
||||||
timeKeeper = new spine.TimeKeeper();
|
timeKeeper = new spine.TimeKeeper();
|
||||||
requestAnimationFrame(load);
|
requestAnimationFrame(load);
|
||||||
@ -58,7 +58,7 @@ function load() {
|
|||||||
var atlasLoader = new spine.AtlasAttachmentLoader(atlas);
|
var atlasLoader = new spine.AtlasAttachmentLoader(atlas);
|
||||||
var skeletonJson = new spine.SkeletonJson(atlasLoader);
|
var skeletonJson = new spine.SkeletonJson(atlasLoader);
|
||||||
skeletonJson.scale = SCALE;
|
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++) {
|
for (var i = 0; i < NUM_SKELETONS; i++) {
|
||||||
skeleton = new spine.Skeleton(skeletonData);
|
skeleton = new spine.Skeleton(skeletonData);
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user