diff --git a/spine-cpp/spine-cpp/src/spine/Triangulator.cpp b/spine-cpp/spine-cpp/src/spine/Triangulator.cpp index 3c5602531..04963b401 100644 --- a/spine-cpp/spine-cpp/src/spine/Triangulator.cpp +++ b/spine-cpp/spine-cpp/src/spine/Triangulator.cpp @@ -79,7 +79,7 @@ Vector &Triangulator::triangulate(Vector &vertices) { if (!isConcaveArray[ii]) continue; int v = indices[ii] << 1; - float &vx = vertices[v], vy = vertices[v + 1]; + float vx = vertices[v], vy = vertices[v + 1]; if (positiveArea(p3x, p3y, p1x, p1y, vx, vy)) { if (positiveArea(p1x, p1y, p2x, p2y, vx, vy)) { if (positiveArea(p2x, p2y, p3x, p3y, vx, vy)) { diff --git a/spine-sfml/c/src/spine/spine-sfml.cpp b/spine-sfml/c/src/spine/spine-sfml.cpp index 8d2eb4a97..9f67d0ea6 100644 --- a/spine-sfml/c/src/spine/spine-sfml.cpp +++ b/spine-sfml/c/src/spine/spine-sfml.cpp @@ -125,10 +125,13 @@ void SkeletonDrawable::draw (RenderTarget& target, RenderStates states) const { for (int i = 0; i < skeleton->slotsCount; ++i) { Slot* slot = skeleton->drawOrder[i]; Attachment* attachment = slot->attachment; - if (!attachment) continue; + if (!attachment) { + spSkeletonClipping_clipEnd(clipper, slot); + continue; + } // Early out if slot is invisible - if (slot->color.a == 0 || !slot->bone->active) { + if ((slot->color.a == 0 || !slot->bone->active) && attachment->type != SP_ATTACHMENT_CLIPPING) { spSkeletonClipping_clipEnd(clipper, slot); continue; } diff --git a/spine-sfml/cpp/src/spine/spine-sfml.cpp b/spine-sfml/cpp/src/spine/spine-sfml.cpp index badfa39d0..068e03ac5 100644 --- a/spine-sfml/cpp/src/spine/spine-sfml.cpp +++ b/spine-sfml/cpp/src/spine/spine-sfml.cpp @@ -100,10 +100,13 @@ void SkeletonDrawable::draw(RenderTarget &target, RenderStates states) const { for (unsigned i = 0; i < skeleton->getSlots().size(); ++i) { Slot &slot = *skeleton->getDrawOrder()[i]; Attachment *attachment = slot.getAttachment(); - if (!attachment) continue; + if (!attachment) { + clipper.clipEnd(slot); + continue; + } // Early out if the slot color is 0 or the bone is not active - if (slot.getColor().a == 0 || !slot.getBone().isActive()) { + if ((slot.getColor().a == 0 || !slot.getBone().isActive()) && !attachment->getRTTI().isExactly(ClippingAttachment::rtti)) { clipper.clipEnd(slot); continue; }