diff --git a/spine-starling/spine-starling-example/.settings/com.powerflasher.fdt.classpath b/spine-starling/spine-starling-example/.settings/com.powerflasher.fdt.classpath index 7501244af..aa6713edf 100644 --- a/spine-starling/spine-starling-example/.settings/com.powerflasher.fdt.classpath +++ b/spine-starling/spine-starling-example/.settings/com.powerflasher.fdt.classpath @@ -5,5 +5,5 @@ src lib/spine-starling.swc lib/spine-as3.swc - lib/starling-2.1.swc + lib/starling-2.4.swc diff --git a/spine-starling/spine-starling-example/lib/spine-starling.swc b/spine-starling/spine-starling-example/lib/spine-starling.swc index 28a21e72f..9ecbcba17 100644 Binary files a/spine-starling/spine-starling-example/lib/spine-starling.swc and b/spine-starling/spine-starling-example/lib/spine-starling.swc differ diff --git a/spine-starling/spine-starling-example/lib/starling-2.1.swc b/spine-starling/spine-starling-example/lib/starling-2.1.swc deleted file mode 100644 index 3b7d7cfc4..000000000 Binary files a/spine-starling/spine-starling-example/lib/starling-2.1.swc and /dev/null differ diff --git a/spine-starling/spine-starling-example/lib/starling-2.4.swc b/spine-starling/spine-starling-example/lib/starling-2.4.swc new file mode 100644 index 000000000..92d52da0b Binary files /dev/null and b/spine-starling/spine-starling-example/lib/starling-2.4.swc differ diff --git a/spine-starling/spine-starling/.settings/com.powerflasher.fdt.classpath b/spine-starling/spine-starling/.settings/com.powerflasher.fdt.classpath index 06308957f..d07363708 100644 --- a/spine-starling/spine-starling/.settings/com.powerflasher.fdt.classpath +++ b/spine-starling/spine-starling/.settings/com.powerflasher.fdt.classpath @@ -4,5 +4,5 @@ src lib/spine-as3.swc frameworks/libs/air/airglobal.swc - lib/starling-2.1.swc + lib/starling-2.4.swc diff --git a/spine-starling/spine-starling/lib/starling-2.1.swc b/spine-starling/spine-starling/lib/starling-2.1.swc deleted file mode 100644 index 3b7d7cfc4..000000000 Binary files a/spine-starling/spine-starling/lib/starling-2.1.swc and /dev/null differ diff --git a/spine-starling/spine-starling/lib/starling-2.4.swc b/spine-starling/spine-starling/lib/starling-2.4.swc new file mode 100644 index 000000000..92d52da0b Binary files /dev/null and b/spine-starling/spine-starling/lib/starling-2.4.swc differ diff --git a/spine-starling/spine-starling/src/spine/starling/SkeletonSprite.as b/spine-starling/spine-starling/src/spine/starling/SkeletonSprite.as index 8d71d041d..b45dba039 100644 --- a/spine-starling/spine-starling/src/spine/starling/SkeletonSprite.as +++ b/spine-starling/spine-starling/src/spine/starling/SkeletonSprite.as @@ -98,6 +98,7 @@ package spine.starling { for (var i : int = 0, n : int = drawOrder.length; i < n; ++i) { var worldVertices : Vector. = _tempVertices; var slot : Slot = drawOrder[i]; + if (slot.attachment is RegionAttachment) { var region : RegionAttachment = slot.attachment as RegionAttachment; verticesLength = 4 * 2; @@ -146,7 +147,7 @@ package spine.starling { indexData.numIndices = indicesLength; indexData.trim(); } - indexData = mesh.getIndexData(); + indexData = mesh.getIndexData(); attachmentColor = meshAttachment.color; uvs = meshAttachment.uvs; } else if (slot.attachment is ClippingAttachment) { @@ -169,17 +170,22 @@ package spine.starling { if (clipper.isClipping()) { clipper.clipTriangles(worldVertices, indices, indices.length, uvs); + // Need to create a new mesh here, see https://github.com/EsotericSoftware/spine-runtimes/issues/1125 + mesh = new SkeletonMesh(mesh.texture); + if (_twoColorTint) mesh.setStyle(mesh.style); + indexData = mesh.getIndexData(); + verticesCount = clipper.clippedVertices.length >> 1; worldVertices = clipper.clippedVertices; uvs = clipper.clippedUvs; indices = clipper.clippedTriangles; indicesLength = indices.length; + indexData.numIndices = indicesLength; + indexData.trim(); for (ii = 0; ii < indicesLength; ii++) { indexData.setIndex(ii, indices[ii]); } - indexData.numIndices = indicesLength; - indexData.trim(); } vertexData = mesh.getVertexData(); @@ -214,8 +220,11 @@ package spine.starling { mesh.setTexCoords(ii, uvs[iii], uvs[iii + 1]); } } - painter.state.blendMode = blendModes[slot.data.blendMode.ordinal]; - painter.batchMesh(mesh); + if (indexData.numIndices > 0 && vertexData.numVertices > 0) { + painter.state.blendMode = blendModes[slot.data.blendMode.ordinal]; + painter.batchMesh(mesh); + painter.finishMeshBatch(); + } clipper.clipEndWithSlot(slot); }