From 21b8a03ccda97a0574620ae62c9e700a9d65cb62 Mon Sep 17 00:00:00 2001 From: John Date: Fri, 17 Jun 2016 18:17:57 +0800 Subject: [PATCH 01/10] [Unity] Update BoneFollower --- .../Assets/spine-unity/BoneFollower.cs | 32 ++++++------------- 1 file changed, 9 insertions(+), 23 deletions(-) diff --git a/spine-unity/Assets/spine-unity/BoneFollower.cs b/spine-unity/Assets/spine-unity/BoneFollower.cs index cb2defad0..a5a1af424 100644 --- a/spine-unity/Assets/spine-unity/BoneFollower.cs +++ b/spine-unity/Assets/spine-unity/BoneFollower.cs @@ -62,8 +62,7 @@ namespace Spine.Unity { Transform skeletonTransform; public void Awake () { - if (initializeOnAwake) - Initialize(); + if (initializeOnAwake) Initialize(); } public void HandleRebuildRenderer (SkeletonRenderer skeletonRenderer) { @@ -73,7 +72,6 @@ namespace Spine.Unity { public void Initialize () { bone = null; valid = skeletonRenderer != null && skeletonRenderer.valid; - if (!valid) return; skeletonTransform = skeletonRenderer.transform; @@ -98,8 +96,7 @@ namespace Spine.Unity { } if (bone == null) { - if (string.IsNullOrEmpty(boneName)) - return; + if (string.IsNullOrEmpty(boneName)) return; bone = skeletonRenderer.skeleton.FindBone(boneName); if (bone == null) { @@ -108,32 +105,21 @@ namespace Spine.Unity { } } - // Flip rotation - float boneRotation = bone.WorldRotationX; - { - Skeleton skeleton = skeletonRenderer.skeleton; - bool flipX = skeleton.flipX; - if (flipX ^ skeleton.flipY) boneRotation *= -1f; - if (flipX) boneRotation += 180f; - } - Transform thisTransform = this.transform; - // Recommended setup: Use local transform properties if Spine GameObject is parent if (thisTransform.parent == skeletonTransform) { + // Recommended setup: Use local transform properties if Spine GameObject is the immediate parent thisTransform.localPosition = new Vector3(bone.worldX, bone.worldY, followZPosition ? 0f : thisTransform.localPosition.z); - if (followBoneRotation) - thisTransform.localRotation = Quaternion.Euler(0f, 0f, boneRotation); - - // For special cases: Use transform world properties if transform relationship is complicated + if (followBoneRotation) thisTransform.localRotation = Quaternion.Euler(0f, 0f, bone.WorldRotationX); + } else { + // For special cases: Use transform world properties if transform relationship is complicated Vector3 targetWorldPosition = skeletonTransform.TransformPoint(new Vector3(bone.worldX, bone.worldY, 0f)); - if (!followZPosition) - targetWorldPosition.z = thisTransform.position.z; - + if (!followZPosition) targetWorldPosition.z = thisTransform.position.z; thisTransform.position = targetWorldPosition; + if (followBoneRotation) { Vector3 worldRotation = skeletonTransform.rotation.eulerAngles; - thisTransform.rotation = Quaternion.Euler(worldRotation.x, worldRotation.y, skeletonTransform.rotation.eulerAngles.z + boneRotation); + thisTransform.rotation = Quaternion.Euler(worldRotation.x, worldRotation.y, skeletonTransform.rotation.eulerAngles.z + bone.WorldRotationX); } } } From b41d85a6921c70bb19eb79d752cf551230824930 Mon Sep 17 00:00:00 2001 From: NathanSweet Date: Fri, 17 Jun 2016 12:21:32 +0200 Subject: [PATCH 02/10] Added context when exceptions are thrown during attachment and animation parsing. --- .../esotericsoftware/spine/SkeletonJson.java | 19 ++++++++++++++----- 1 file changed, 14 insertions(+), 5 deletions(-) diff --git a/spine-libgdx/spine-libgdx/src/com/esotericsoftware/spine/SkeletonJson.java b/spine-libgdx/spine-libgdx/src/com/esotericsoftware/spine/SkeletonJson.java index 5a49e17c3..9944a1cba 100644 --- a/spine-libgdx/spine-libgdx/src/com/esotericsoftware/spine/SkeletonJson.java +++ b/spine-libgdx/spine-libgdx/src/com/esotericsoftware/spine/SkeletonJson.java @@ -241,8 +241,12 @@ public class SkeletonJson { int slotIndex = skeletonData.findSlotIndex(slotEntry.name); if (slotIndex == -1) throw new SerializationException("Slot not found: " + slotEntry.name); for (JsonValue entry = slotEntry.child; entry != null; entry = entry.next) { - Attachment attachment = readAttachment(entry, skin, slotIndex, entry.name); - if (attachment != null) skin.addAttachment(slotIndex, entry.name, attachment); + try { + Attachment attachment = readAttachment(entry, skin, slotIndex, entry.name); + if (attachment != null) skin.addAttachment(slotIndex, entry.name, attachment); + } catch (Exception ex) { + throw new SerializationException("Error reading attachment: " + entry.name + ", skin: " + skin, ex); + } } } skeletonData.skins.add(skin); @@ -271,8 +275,13 @@ public class SkeletonJson { } // Animations. - for (JsonValue animationMap = root.getChild("animations"); animationMap != null; animationMap = animationMap.next) - readAnimation(animationMap, animationMap.name, skeletonData); + for (JsonValue animationMap = root.getChild("animations"); animationMap != null; animationMap = animationMap.next) { + try { + readAnimation(animationMap, animationMap.name, skeletonData); + } catch (Exception ex) { + throw new SerializationException("Error reading animation: " + animationMap.name, ex); + } + } skeletonData.bones.shrink(); skeletonData.slots.shrink(); @@ -497,7 +506,7 @@ public class SkeletonJson { int frameIndex = 0; for (JsonValue valueMap = constraintMap.child; valueMap != null; valueMap = valueMap.next) { timeline.setFrame(frameIndex, valueMap.getFloat("time"), valueMap.getFloat("mix", 1), - valueMap.getBoolean("bendPositive", false) ? 1 : -1); + valueMap.getBoolean("bendPositive", true) ? 1 : -1); readCurve(valueMap, timeline, frameIndex); frameIndex++; } From 2f846cfba5b9b5dfffc682bde0c5c73e1fd66d4a Mon Sep 17 00:00:00 2001 From: NathanSweet Date: Fri, 17 Jun 2016 12:24:38 +0200 Subject: [PATCH 03/10] Added JsonRollback, a tool for converting newer JSON so it can be loaded by an older Spine version. --- .../esotericsoftware/spine/JsonRollback.java | 104 ++++++++++++++++++ 1 file changed, 104 insertions(+) create mode 100644 spine-libgdx/spine-skeletonviewer/src/com/esotericsoftware/spine/JsonRollback.java diff --git a/spine-libgdx/spine-skeletonviewer/src/com/esotericsoftware/spine/JsonRollback.java b/spine-libgdx/spine-skeletonviewer/src/com/esotericsoftware/spine/JsonRollback.java new file mode 100644 index 000000000..a014bb9a9 --- /dev/null +++ b/spine-libgdx/spine-skeletonviewer/src/com/esotericsoftware/spine/JsonRollback.java @@ -0,0 +1,104 @@ + +package com.esotericsoftware.spine; + +import com.badlogic.gdx.files.FileHandle; +import com.badlogic.gdx.utils.Array; +import com.badlogic.gdx.utils.Json; +import com.badlogic.gdx.utils.JsonValue; +import com.badlogic.gdx.utils.JsonWriter.OutputType; + +/** Takes Spine JSON data and transforms it to work with an older version of Spine. It supports going from version 3.3.xx to + * 2.1.27. + *

+ * Data can be exported from a Spine project, processed with JsonRollback, then imported into an older version of Spine. However, + * JsonRollback may remove data for features not supported by the older Spine version. Because of this, JsonRollback is only + * intended for situations were work was accidentally done with a newer Spine version and now needs to be imported into an older + * Spine version (eg, if runtime support for the new version is not yet available). + *

+ * Animators should freeze their Spine editor version to match the Spine version supported by the runtime being used. Only when + * the runtime is updated to support a newer Spine version should animators update their Spine editor version to match. */ +public class JsonRollback { + static public void main (String[] args) throws Exception { + if (args.length == 0) { + System.out.println("Usage: [outputJSON]"); + System.exit(0); + } + + JsonValue root = new Json().fromJson(null, new FileHandle(args[0])); + + // In 3.2 skinnedmesh was renamed to weightedmesh. + setValue(root, "skins/*/*/*/type/weightedmesh", "skinnedmesh"); + + // In 3.2 shear was added. + delete(root, "animations/*/bones/*/shear"); + + // In 3.3 ffd was renamed to deform. + rename(root, "animations/*/deform", "ffd"); + + // In 3.3 mesh are now a single type, previously they were skinnedmesh if they had weights. + for (JsonValue value : find(root, "skins/*/*/*/type/mesh".split("/"), 0, new Array())) + if (value.parent.get("uvs").size != value.parent.get("vertices").size) value.set("skinnedmesh"); + + // In 3.3 bounding boxes can be weighted. + for (JsonValue value : find(root, "skins/*/*/*/type/boundingbox".split("/"), 0, new Array())) + if (value.parent.getInt("vertexCount") * 2 != value.parent.get("vertices").size) + value.parent.parent.remove(value.parent.name); + + // In 3.3 paths were added. + for (JsonValue value : find(root, "skins/*/*/*/type/path".split("/"), 0, new Array())) { + String attachment = value.parent.name; + value.parent.parent.remove(attachment); + String slot = value.parent.parent.name; + // Remove path deform timelines. + delete(root, "animations/*/ffd/*/" + slot + "/" + attachment); + } + + // In 3.3 IK constraints no longer require bendPositive. + for (JsonValue value : find(root, "animations/*/ik/*".split("/"), 0, new Array())) + for (JsonValue child = value.child; child != null; child = child.next) + if (!child.has("bendPositive")) child.addChild("bendPositive", new JsonValue(true)); + + // In 3.3 transform constraints can have more than 1 bone. + for (JsonValue child = root.getChild("transform"); child != null; child = child.next) { + JsonValue bones = child.remove("bones"); + if (bones != null) child.addChild("bone", new JsonValue(bones.child.asString())); + } + + if (args.length > 1) + new FileHandle(args[1]).writeString(root.prettyPrint(OutputType.json, 130), false, "UTF-8"); + else + System.out.println(root.prettyPrint(OutputType.json, 130)); + } + + static void setValue (JsonValue root, String path, String newValue) { + for (JsonValue value : find(root, path.split("/"), 0, new Array())) + value.set(newValue); + } + + static void rename (JsonValue root, String path, String newName) { + for (JsonValue value : find(root, path.split("/"), 0, new Array())) + value.name = newName; + } + + static void delete (JsonValue root, String path) { + for (JsonValue value : find(root, path.split("/"), 0, new Array())) + value.parent.remove(value.name); + } + + static Array find (JsonValue current, String[] path, int index, Array values) { + String name = path[index]; + if (current.name == null) { + if (name.equals("*") && index == path.length - 1) + values.add(current); + else if (current.has(name)) return find(current.get(name), path, index, values); + } else if (name.equals("*") || current.name.equals(name)) { + if (++index == path.length || (index == path.length - 1 && current.isString() && current.asString().equals(path[index]))) + values.add(current); + else { + for (JsonValue child = current.child; child != null; child = child.next) + find(child, path, index, values); + } + } + return values; + } +} From db2190e7db747b5f6edaa986172e0b15ac224148 Mon Sep 17 00:00:00 2001 From: Matthew Date: Fri, 17 Jun 2016 20:11:41 +0200 Subject: [PATCH 04/10] [LUA] AnimationState trackCount bugfixes (#466) * resolved conflict * made trackCount keep count, not maximum track index. --- spine-lua/AnimationState.lua | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/spine-lua/AnimationState.lua b/spine-lua/AnimationState.lua index aeb429aff..06258ba03 100644 --- a/spine-lua/AnimationState.lua +++ b/spine-lua/AnimationState.lua @@ -65,7 +65,7 @@ function AnimationState.new (data) end self.tracks[index] = entry - self.trackCount = math.max(self.trackCount, index) + self.trackCount = math.max(self.trackCount, index + 1) if entry.onStart then entry.onStart(index) end if self.onStart then self.onStart(index) end @@ -73,7 +73,7 @@ function AnimationState.new (data) function self:update (delta) delta = delta * self.timeScale - for i = 0, self.trackCount do + for i = 0, self.trackCount - 1 do local current = self.tracks[i] if current then current.time = current.time + delta * current.timeScale @@ -96,7 +96,7 @@ function AnimationState.new (data) end function self:apply(skeleton) - for i = 0, self.trackCount do + for i = 0, self.trackCount - 1 do local current = self.tracks[i] if current then local time = current.time @@ -211,7 +211,7 @@ function AnimationState.new (data) end last.next = entry else - self.tracks[trackIndex] = entry + setCurrent(trackIndex, entry) end delay = delay or 0 From f961c127f6197a0126a601f68748d34bd14535c3 Mon Sep 17 00:00:00 2001 From: NathanSweet Date: Sat, 18 Jun 2016 19:16:02 +0200 Subject: [PATCH 05/10] Added coverting linkedmesh to weightedlinkedmesh. --- .../com/esotericsoftware/spine/JsonRollback.java | 16 +++++++++++++--- 1 file changed, 13 insertions(+), 3 deletions(-) diff --git a/spine-libgdx/spine-skeletonviewer/src/com/esotericsoftware/spine/JsonRollback.java b/spine-libgdx/spine-skeletonviewer/src/com/esotericsoftware/spine/JsonRollback.java index a014bb9a9..8898b2030 100644 --- a/spine-libgdx/spine-skeletonviewer/src/com/esotericsoftware/spine/JsonRollback.java +++ b/spine-libgdx/spine-skeletonviewer/src/com/esotericsoftware/spine/JsonRollback.java @@ -19,8 +19,9 @@ import com.badlogic.gdx.utils.JsonWriter.OutputType; * the runtime is updated to support a newer Spine version should animators update their Spine editor version to match. */ public class JsonRollback { static public void main (String[] args) throws Exception { + args = new String[] {"C:/test/CoilGrapple.json", "C:/test/CoilGrapple-fixed.json"}; if (args.length == 0) { - System.out.println("Usage: [outputJSON]"); + System.out.println("Usage: [outputFile]"); System.exit(0); } @@ -35,10 +36,19 @@ public class JsonRollback { // In 3.3 ffd was renamed to deform. rename(root, "animations/*/deform", "ffd"); - // In 3.3 mesh are now a single type, previously they were skinnedmesh if they had weights. + // In 3.3 mesh is now a single type, previously they were skinnedmesh if they had weights. for (JsonValue value : find(root, "skins/*/*/*/type/mesh".split("/"), 0, new Array())) if (value.parent.get("uvs").size != value.parent.get("vertices").size) value.set("skinnedmesh"); + // In 3.3 linkedmesh is now a single type, previously they were linkedweightedmesh if they had weights. + for (JsonValue value : find(root, "skins/*/*/*/type/linkedmesh".split("/"), 0, new Array())) { + String slot = value.parent.parent.name.replaceAll("", ""); + String skinName = value.parent.getString("skin", "default"); + String parentName = value.parent.getString("parent"); + if (find(root, ("skins~~" + skinName + "~~" + slot + "~~" + parentName + "~~type~~skinnedmesh").split("~~"), 0, + new Array()).size > 0) value.set("weightedlinkedmesh"); + } + // In 3.3 bounding boxes can be weighted. for (JsonValue value : find(root, "skins/*/*/*/type/boundingbox".split("/"), 0, new Array())) if (value.parent.getInt("vertexCount") * 2 != value.parent.get("vertices").size) @@ -53,7 +63,7 @@ public class JsonRollback { delete(root, "animations/*/ffd/*/" + slot + "/" + attachment); } - // In 3.3 IK constraints no longer require bendPositive. + // In 3.3 IK constraint timelines no longer require bendPositive. for (JsonValue value : find(root, "animations/*/ik/*".split("/"), 0, new Array())) for (JsonValue child = value.child; child != null; child = child.next) if (!child.has("bendPositive")) child.addChild("bendPositive", new JsonValue(true)); From 9a469c0460c8efd9ce3943008dc91e9f45264b15 Mon Sep 17 00:00:00 2001 From: NathanSweet Date: Sat, 18 Jun 2016 21:57:26 +0200 Subject: [PATCH 06/10] Prettier with varargs. --- .../esotericsoftware/spine/JsonRollback.java | 43 ++++++++++--------- 1 file changed, 22 insertions(+), 21 deletions(-) diff --git a/spine-libgdx/spine-skeletonviewer/src/com/esotericsoftware/spine/JsonRollback.java b/spine-libgdx/spine-skeletonviewer/src/com/esotericsoftware/spine/JsonRollback.java index 8898b2030..efddf7510 100644 --- a/spine-libgdx/spine-skeletonviewer/src/com/esotericsoftware/spine/JsonRollback.java +++ b/spine-libgdx/spine-skeletonviewer/src/com/esotericsoftware/spine/JsonRollback.java @@ -28,43 +28,44 @@ public class JsonRollback { JsonValue root = new Json().fromJson(null, new FileHandle(args[0])); // In 3.2 skinnedmesh was renamed to weightedmesh. - setValue(root, "skins/*/*/*/type/weightedmesh", "skinnedmesh"); + setValue(root, "skinnedmesh", "skins", "*", "*", "*", "type", "weightedmesh"); // In 3.2 shear was added. - delete(root, "animations/*/bones/*/shear"); + delete(root, "animations", "*", "bones", "*", "shear"); // In 3.3 ffd was renamed to deform. - rename(root, "animations/*/deform", "ffd"); + rename(root, "ffd", "animations", "*", "deform"); // In 3.3 mesh is now a single type, previously they were skinnedmesh if they had weights. - for (JsonValue value : find(root, "skins/*/*/*/type/mesh".split("/"), 0, new Array())) + for (JsonValue value : find(root, new Array(), 0, "skins", "*", "*", "*", "type", "mesh")) if (value.parent.get("uvs").size != value.parent.get("vertices").size) value.set("skinnedmesh"); // In 3.3 linkedmesh is now a single type, previously they were linkedweightedmesh if they had weights. - for (JsonValue value : find(root, "skins/*/*/*/type/linkedmesh".split("/"), 0, new Array())) { + for (JsonValue value : find(root, new Array(), 0, "skins", "*", "*", "*", "type", "linkedmesh")) { String slot = value.parent.parent.name.replaceAll("", ""); String skinName = value.parent.getString("skin", "default"); String parentName = value.parent.getString("parent"); - if (find(root, ("skins~~" + skinName + "~~" + slot + "~~" + parentName + "~~type~~skinnedmesh").split("~~"), 0, - new Array()).size > 0) value.set("weightedlinkedmesh"); + if (find(root, new Array(), 0, + ("skins~~" + skinName + "~~" + slot + "~~" + parentName + "~~type~~skinnedmesh").split("~~")).size > 0) + value.set("weightedlinkedmesh"); } // In 3.3 bounding boxes can be weighted. - for (JsonValue value : find(root, "skins/*/*/*/type/boundingbox".split("/"), 0, new Array())) + for (JsonValue value : find(root, new Array(), 0, "skins", "*", "*", "*", "type", "boundingbox")) if (value.parent.getInt("vertexCount") * 2 != value.parent.get("vertices").size) value.parent.parent.remove(value.parent.name); // In 3.3 paths were added. - for (JsonValue value : find(root, "skins/*/*/*/type/path".split("/"), 0, new Array())) { + for (JsonValue value : find(root, new Array(), 0, "skins", "*", "*", "*", "type", "path")) { String attachment = value.parent.name; value.parent.parent.remove(attachment); String slot = value.parent.parent.name; - // Remove path deform timelines. - delete(root, "animations/*/ffd/*/" + slot + "/" + attachment); + // Also remove path deform timelines. + delete(root, "animations", "*", "ffd", "*", slot, attachment); } // In 3.3 IK constraint timelines no longer require bendPositive. - for (JsonValue value : find(root, "animations/*/ik/*".split("/"), 0, new Array())) + for (JsonValue value : find(root, new Array(), 0, "animations", "*", "ik", "*")) for (JsonValue child = value.child; child != null; child = child.next) if (!child.has("bendPositive")) child.addChild("bendPositive", new JsonValue(true)); @@ -80,33 +81,33 @@ public class JsonRollback { System.out.println(root.prettyPrint(OutputType.json, 130)); } - static void setValue (JsonValue root, String path, String newValue) { - for (JsonValue value : find(root, path.split("/"), 0, new Array())) + static void setValue (JsonValue root, String newValue, String... path) { + for (JsonValue value : find(root, new Array(), 0, path)) value.set(newValue); } - static void rename (JsonValue root, String path, String newName) { - for (JsonValue value : find(root, path.split("/"), 0, new Array())) + static void rename (JsonValue root, String newName, String... path) { + for (JsonValue value : find(root, new Array(), 0, path)) value.name = newName; } - static void delete (JsonValue root, String path) { - for (JsonValue value : find(root, path.split("/"), 0, new Array())) + static void delete (JsonValue root, String... path) { + for (JsonValue value : find(root, new Array(), 0, path)) value.parent.remove(value.name); } - static Array find (JsonValue current, String[] path, int index, Array values) { + static Array find (JsonValue current, Array values, int index, String... path) { String name = path[index]; if (current.name == null) { if (name.equals("*") && index == path.length - 1) values.add(current); - else if (current.has(name)) return find(current.get(name), path, index, values); + else if (current.has(name)) return find(current.get(name), values, index, path); } else if (name.equals("*") || current.name.equals(name)) { if (++index == path.length || (index == path.length - 1 && current.isString() && current.asString().equals(path[index]))) values.add(current); else { for (JsonValue child = current.child; child != null; child = child.next) - find(child, path, index, values); + find(child, values, index, path); } } return values; From eded12cd5281ddfcff26675c4948e467028b8311 Mon Sep 17 00:00:00 2001 From: NathanSweet Date: Mon, 20 Jun 2016 19:25:29 +0200 Subject: [PATCH 07/10] Removed hardcoded paths. Oops, sorry! --- .../src/com/esotericsoftware/spine/JsonRollback.java | 1 - 1 file changed, 1 deletion(-) diff --git a/spine-libgdx/spine-skeletonviewer/src/com/esotericsoftware/spine/JsonRollback.java b/spine-libgdx/spine-skeletonviewer/src/com/esotericsoftware/spine/JsonRollback.java index efddf7510..ead3b11f0 100644 --- a/spine-libgdx/spine-skeletonviewer/src/com/esotericsoftware/spine/JsonRollback.java +++ b/spine-libgdx/spine-skeletonviewer/src/com/esotericsoftware/spine/JsonRollback.java @@ -19,7 +19,6 @@ import com.badlogic.gdx.utils.JsonWriter.OutputType; * the runtime is updated to support a newer Spine version should animators update their Spine editor version to match. */ public class JsonRollback { static public void main (String[] args) throws Exception { - args = new String[] {"C:/test/CoilGrapple.json", "C:/test/CoilGrapple-fixed.json"}; if (args.length == 0) { System.out.println("Usage: [outputFile]"); System.exit(0); From d50647847910e66b7f2f66943f99a8ee1c3054c0 Mon Sep 17 00:00:00 2001 From: NathanSweet Date: Mon, 20 Jun 2016 19:25:46 +0200 Subject: [PATCH 08/10] Method is package private for editor access. --- .../src/com/esotericsoftware/spine/PathConstraint.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/spine-libgdx/spine-libgdx/src/com/esotericsoftware/spine/PathConstraint.java b/spine-libgdx/spine-libgdx/src/com/esotericsoftware/spine/PathConstraint.java index b9c4b1460..4e72c26c7 100644 --- a/spine-libgdx/spine-libgdx/src/com/esotericsoftware/spine/PathConstraint.java +++ b/spine-libgdx/spine-libgdx/src/com/esotericsoftware/spine/PathConstraint.java @@ -140,7 +140,7 @@ public class PathConstraint implements Updatable { } } - private float[] computeWorldPositions (PathAttachment path, int spacesCount, boolean tangents, boolean percentPosition, + float[] computeWorldPositions (PathAttachment path, int spacesCount, boolean tangents, boolean percentPosition, boolean percentSpacing) { Slot target = this.target; float position = this.position; From e834982b49bcd8a6740f246e455c22317569648c Mon Sep 17 00:00:00 2001 From: NathanSweet Date: Mon, 20 Jun 2016 19:26:05 +0200 Subject: [PATCH 09/10] Updated READMEs for v3.3 support. --- spine-as3/README.md | 2 +- spine-c/README.md | 2 +- spine-cocos2d-iphone/2/README.md | 2 +- spine-cocos2d-iphone/3/README.md | 2 +- spine-cocos2dx/2/README.md | 2 +- spine-cocos2dx/3/README.md | 2 +- spine-corona/README.md | 2 +- spine-csharp/README.md | 2 +- spine-js/README.md | 2 +- spine-love/README.md | 2 +- spine-lua/README.md | 2 +- spine-monogame/README.md | 2 +- spine-sfml/README.md | 2 +- spine-starling/README.md | 2 +- spine-threejs/README.md | 2 +- spine-turbulenz/README.md | 2 +- spine-unity/README.md | 2 +- spine-xna/README.md | 2 +- 18 files changed, 18 insertions(+), 18 deletions(-) diff --git a/spine-as3/README.md b/spine-as3/README.md index 56af9c374..33b21559b 100644 --- a/spine-as3/README.md +++ b/spine-as3/README.md @@ -10,7 +10,7 @@ The Spine Runtimes are developed with the intent to be used with data exported f ## Spine version -spine-as3 works with data exported from Spine 3.1.08. Updating spine-as3 to [v3.2](https://trello.com/c/k7KtGdPW/76-update-runtimes-to-support-v3-2-shearing) is in progress. +spine-as3 works with data exported from Spine 3.1.08. Updating spine-as3 to [v3.2](https://github.com/EsotericSoftware/spine-runtimes/issues/586) and [v3.3](https://github.com/EsotericSoftware/spine-runtimes/issues/613) is in progress. spine-as3 supports all Spine features, including meshes. If using the `spine.flash` classes for rendering, meshes are not supported. diff --git a/spine-c/README.md b/spine-c/README.md index e27415eee..eba1b131f 100644 --- a/spine-c/README.md +++ b/spine-c/README.md @@ -12,7 +12,7 @@ The Spine Runtimes are developed with the intent to be used with data exported f ## Spine version -spine-c works with data exported from Spine 3.1.08. Updating spine-c to [v3.2](https://trello.com/c/k7KtGdPW/76-update-runtimes-to-support-v3-2-shearing) is in progress. +spine-c works with data exported from Spine 3.1.08. Updating spine-c to [v3.2](https://github.com/EsotericSoftware/spine-runtimes/issues/586) and [v3.3](https://github.com/EsotericSoftware/spine-runtimes/issues/613) is in progress. spine-c supports all Spine features. diff --git a/spine-cocos2d-iphone/2/README.md b/spine-cocos2d-iphone/2/README.md index 22de93123..17d1c2c3d 100644 --- a/spine-cocos2d-iphone/2/README.md +++ b/spine-cocos2d-iphone/2/README.md @@ -10,7 +10,7 @@ The Spine Runtimes are developed with the intent to be used with data exported f ## Spine version -spine-cocos2d-iphone v2 works with data exported from Spine 3.1.08. Updating spine-cocos2d-iphone v2 to [v3.2](https://trello.com/c/k7KtGdPW/76-update-runtimes-to-support-v3-2-shearing) is in progress. +spine-cocos2d-iphone v2 works with data exported from Spine 3.1.08. Updating spine-cocos2d-iphone v2 to [v3.2](https://github.com/EsotericSoftware/spine-runtimes/issues/586) and [v3.3](https://github.com/EsotericSoftware/spine-runtimes/issues/613) is in progress. spine-cocos2d-iphone v2 supports all Spine features. diff --git a/spine-cocos2d-iphone/3/README.md b/spine-cocos2d-iphone/3/README.md index 6e759d221..764be283f 100644 --- a/spine-cocos2d-iphone/3/README.md +++ b/spine-cocos2d-iphone/3/README.md @@ -10,7 +10,7 @@ The Spine Runtimes are developed with the intent to be used with data exported f ## Spine version -spine-cocos2d-iphone v3 works with data exported from Spine 3.1.08. Updating spine-cocos2d-iphone v3 to [v3.2](https://trello.com/c/k7KtGdPW/76-update-runtimes-to-support-v3-2-shearing) is in progress. +spine-cocos2d-iphone v3 works with data exported from Spine 3.1.08. Updating spine-cocos2d-iphone v3 to [v3.2](https://github.com/EsotericSoftware/spine-runtimes/issues/586) and [v3.3](https://github.com/EsotericSoftware/spine-runtimes/issues/613) is in progress. spine-cocos2d-iphone v3 supports all Spine features. diff --git a/spine-cocos2dx/2/README.md b/spine-cocos2dx/2/README.md index b9fee7534..58c8dd4ff 100644 --- a/spine-cocos2dx/2/README.md +++ b/spine-cocos2dx/2/README.md @@ -10,7 +10,7 @@ The Spine Runtimes are developed with the intent to be used with data exported f ## Spine version -spine-cocos2dx v2 works with data exported from Spine 3.1.08. Updating spine-cocos2dx v2 to [v3.2](https://trello.com/c/k7KtGdPW/76-update-runtimes-to-support-v3-2-shearing) is in progress. +spine-cocos2dx v2 works with data exported from Spine 3.1.08. Updating spine-cocos2dx v2 to [v3.2](https://github.com/EsotericSoftware/spine-runtimes/issues/586) and [v3.3](https://github.com/EsotericSoftware/spine-runtimes/issues/613) is in progress. spine-cocos2dx v2 supports all Spine features. diff --git a/spine-cocos2dx/3/README.md b/spine-cocos2dx/3/README.md index 140087fcf..9041f8d8e 100644 --- a/spine-cocos2dx/3/README.md +++ b/spine-cocos2dx/3/README.md @@ -10,7 +10,7 @@ The Spine Runtimes are developed with the intent to be used with data exported f ## Spine version -spine-cocos2dx v3 works with data exported from Spine 3.1.08. Updating spine-cocos2dx v3 to [v3.2](https://trello.com/c/k7KtGdPW/76-update-runtimes-to-support-v3-2-shearing) is in progress. +spine-cocos2dx v3 works with data exported from Spine 3.1.08. Updating spine-cocos2dx v3 to [v3.2](https://github.com/EsotericSoftware/spine-runtimes/issues/586) and [v3.3](https://github.com/EsotericSoftware/spine-runtimes/issues/613) is in progress. spine-cocos2dx v3 supports all Spine features. diff --git a/spine-corona/README.md b/spine-corona/README.md index f1a0f46be..4c41f89dc 100644 --- a/spine-corona/README.md +++ b/spine-corona/README.md @@ -10,7 +10,7 @@ The Spine Runtimes are developed with the intent to be used with data exported f ## Spine version -spine-corona works with data exported from Spine 2.1.27. Updating spine-corona to [v3.0](https://trello.com/c/tF8UykBM/72-update-runtimes-to-support-v3-0-skewing-scale), [v3.1](https://trello.com/c/bERJAFEq/73-update-runtimes-to-support-v3-1-linked-meshes), and [v3.2](https://trello.com/c/k7KtGdPW/76-update-runtimes-to-support-v3-2-shearing) is in progress. +spine-corona works with data exported from Spine 2.1.27. Updating spine-corona to [v3.0](https://trello.com/c/tF8UykBM/72-update-runtimes-to-support-v3-0-skewing-scale), [v3.1](https://trello.com/c/bERJAFEq/73-update-runtimes-to-support-v3-1-linked-meshes), [v3.2](https://github.com/EsotericSoftware/spine-runtimes/issues/586), and [v3.3](https://github.com/EsotericSoftware/spine-runtimes/issues/613) is in progress. spine-corona supports all Spine features except for rendering meshes due to Corona having a limited graphics API. diff --git a/spine-csharp/README.md b/spine-csharp/README.md index 4f6e5acdc..5176e7000 100644 --- a/spine-csharp/README.md +++ b/spine-csharp/README.md @@ -10,7 +10,7 @@ The Spine Runtimes are developed with the intent to be used with data exported f ## Spine version -spine-csharp works with data exported from the latest version of Spine. +spine-csharp works with data exported from Spine 3.2.01. Updating spine-csharp to [v3.3](https://github.com/EsotericSoftware/spine-runtimes/issues/613) is in progress. spine-csharp supports all Spine features. diff --git a/spine-js/README.md b/spine-js/README.md index 33e711722..29fdc962a 100644 --- a/spine-js/README.md +++ b/spine-js/README.md @@ -14,7 +14,7 @@ The Spine Runtimes are developed with the intent to be used with data exported f ## Spine version -spine-js works with data exported from Spine 3.1.08. Updating spine-js to [v3.2](https://trello.com/c/k7KtGdPW/76-update-runtimes-to-support-v3-2-shearing) is in progress. +spine-js works with data exported from Spine 3.1.08. Updating spine-js to [v3.2](https://github.com/EsotericSoftware/spine-runtimes/issues/586) and [v3.3](https://github.com/EsotericSoftware/spine-runtimes/issues/613) is in progress. spine-js supports all Spine features. spine-canvas does not support color tinting, mesh attachments, or nonuniform scaling. diff --git a/spine-love/README.md b/spine-love/README.md index 052613780..16b6a2984 100644 --- a/spine-love/README.md +++ b/spine-love/README.md @@ -10,7 +10,7 @@ The Spine Runtimes are developed with the intent to be used with data exported f ## Spine version -spine-love works with data exported from Spine 2.1.27. Updating spine-love to [v3.0](https://trello.com/c/tF8UykBM/72-update-runtimes-to-support-v3-0-skewing-scale), [v3.1](https://trello.com/c/bERJAFEq/73-update-runtimes-to-support-v3-1-linked-meshes), and [v3.2](https://trello.com/c/k7KtGdPW/76-update-runtimes-to-support-v3-2-shearing) is in progress. +spine-love works with data exported from Spine 2.1.27. Updating spine-love to [v3.0](https://trello.com/c/tF8UykBM/72-update-runtimes-to-support-v3-0-skewing-scale), [v3.1](https://trello.com/c/bERJAFEq/73-update-runtimes-to-support-v3-1-linked-meshes), [v3.2](https://github.com/EsotericSoftware/spine-runtimes/issues/586), and [v3.3](https://github.com/EsotericSoftware/spine-runtimes/issues/613) is in progress. spine-love supports all Spine features except for rendering meshes. diff --git a/spine-lua/README.md b/spine-lua/README.md index 2cd62c597..c3d06f59d 100644 --- a/spine-lua/README.md +++ b/spine-lua/README.md @@ -10,7 +10,7 @@ The Spine Runtimes are developed with the intent to be used with data exported f ## Spine version -spine-lua works with data exported from Spine 2.1.27. Updating spine-lua to [v3.0](https://trello.com/c/tF8UykBM/72-update-runtimes-to-support-v3-0-skewing-scale), [v3.1](https://trello.com/c/bERJAFEq/73-update-runtimes-to-support-v3-1-linked-meshes), and [v3.2](https://trello.com/c/k7KtGdPW/76-update-runtimes-to-support-v3-2-shearing) is in progress. +spine-lua works with data exported from Spine 2.1.27. Updating spine-lua to [v3.0](https://trello.com/c/tF8UykBM/72-update-runtimes-to-support-v3-0-skewing-scale), [v3.1](https://trello.com/c/bERJAFEq/73-update-runtimes-to-support-v3-1-linked-meshes), [v3.2](https://github.com/EsotericSoftware/spine-runtimes/issues/586), and [v3.3](https://github.com/EsotericSoftware/spine-runtimes/issues/613) is in progress. spine-lua supports all Spine features. diff --git a/spine-monogame/README.md b/spine-monogame/README.md index debccbf07..ae93d235f 100644 --- a/spine-monogame/README.md +++ b/spine-monogame/README.md @@ -10,7 +10,7 @@ The Spine Runtimes are developed with the intent to be used with data exported f ## Spine version -spine-monogame works with data exported from the latest version of Spine. +spine-monogame works with data exported from Spine 3.2.01. Updating spine-monogame to [v3.3](https://github.com/EsotericSoftware/spine-runtimes/issues/613) is in progress. spine-monogame supports all Spine features. diff --git a/spine-sfml/README.md b/spine-sfml/README.md index 9c73517f7..21a91d651 100644 --- a/spine-sfml/README.md +++ b/spine-sfml/README.md @@ -10,7 +10,7 @@ The Spine Runtimes are developed with the intent to be used with data exported f ## Spine version -spine-sfml works with data exported from Spine 3.1.08. Updating spine-sfml to [v3.2](https://trello.com/c/k7KtGdPW/76-update-runtimes-to-support-v3-2-shearing) is in progress. +spine-sfml works with data exported from Spine 3.1.08. Updating spine-sfml to [v3.2](https://github.com/EsotericSoftware/spine-runtimes/issues/586) and [v3.3](https://github.com/EsotericSoftware/spine-runtimes/issues/613) is in progress. spine-sfml supports all Spine features. diff --git a/spine-starling/README.md b/spine-starling/README.md index d48df26f8..9b7500bc5 100644 --- a/spine-starling/README.md +++ b/spine-starling/README.md @@ -10,7 +10,7 @@ The Spine Runtimes are developed with the intent to be used with data exported f ## Spine version -spine-starling works with data exported from Spine 3.1.08. Updating spine-starling to [v3.2](https://trello.com/c/k7KtGdPW/76-update-runtimes-to-support-v3-2-shearing) is in progress. +spine-starling works with data exported from Spine 3.1.08. Updating spine-starling to [v3.2](https://github.com/EsotericSoftware/spine-runtimes/issues/586) and [v3.3](https://github.com/EsotericSoftware/spine-runtimes/issues/613) is in progress. spine-starling supports all Spine features. diff --git a/spine-threejs/README.md b/spine-threejs/README.md index 381c88a1d..9844b3160 100644 --- a/spine-threejs/README.md +++ b/spine-threejs/README.md @@ -10,7 +10,7 @@ The Spine Runtimes are developed with the intent to be used with data exported f ## Spine version -spine-threejs works with data exported from Spine 3.1.08. Updating spine-threejs to [v3.2](https://trello.com/c/k7KtGdPW/76-update-runtimes-to-support-v3-2-shearing) is in progress. +spine-threejs works with data exported from Spine 3.1.08. Updating spine-threejs to [v3.2](https://github.com/EsotericSoftware/spine-runtimes/issues/586) and [v3.3](https://github.com/EsotericSoftware/spine-runtimes/issues/613) is in progress. spine-threejs supports all Spine features except for rendering meshes. diff --git a/spine-turbulenz/README.md b/spine-turbulenz/README.md index 5fc79577f..789b945cd 100644 --- a/spine-turbulenz/README.md +++ b/spine-turbulenz/README.md @@ -10,7 +10,7 @@ The Spine Runtimes are developed with the intent to be used with data exported f ## Spine version -spine-turbulenz works with data exported from Spine 3.1.08. Updating spine-turbulenz to [v3.2](https://trello.com/c/k7KtGdPW/76-update-runtimes-to-support-v3-2-shearing) is in progress. +spine-turbulenz works with data exported from Spine 3.1.08. Updating spine-turbulenz to [v3.2](https://github.com/EsotericSoftware/spine-runtimes/issues/586) and [v3.3](https://github.com/EsotericSoftware/spine-runtimes/issues/613) is in progress. spine-turbulenz supports all Spine features except for rendering meshes. diff --git a/spine-unity/README.md b/spine-unity/README.md index 465178b58..9274b05d7 100644 --- a/spine-unity/README.md +++ b/spine-unity/README.md @@ -14,7 +14,7 @@ The Spine Runtimes are developed with the intent to be used with data exported f ## Spine version -spine-unity works with data exported from the latest version of Spine. +spine-unity works with data exported from Spine 3.2.01. Updating spine-unity to [v3.3](https://github.com/EsotericSoftware/spine-runtimes/issues/613) is in progress. spine-unity supports all Spine features. diff --git a/spine-xna/README.md b/spine-xna/README.md index ed55e4761..2afbd013f 100644 --- a/spine-xna/README.md +++ b/spine-xna/README.md @@ -10,7 +10,7 @@ The Spine Runtimes are developed with the intent to be used with data exported f ## Spine version -spine-xna works with data exported from the latest version of Spine. +spine-xna works with data exported from Spine 3.2.01. Updating spine-xna to [v3.3](https://github.com/EsotericSoftware/spine-runtimes/issues/613) is in progress. spine-xna supports all Spine features. From 71b3484062cb283d23a8b8c02e84d6fa4b2478d3 Mon Sep 17 00:00:00 2001 From: NathanSweet Date: Wed, 22 Jun 2016 12:55:36 +0200 Subject: [PATCH 10/10] Clean up. --- .../src/com/esotericsoftware/spine/Skeleton.java | 5 ++--- 1 file changed, 2 insertions(+), 3 deletions(-) diff --git a/spine-libgdx/spine-libgdx/src/com/esotericsoftware/spine/Skeleton.java b/spine-libgdx/spine-libgdx/src/com/esotericsoftware/spine/Skeleton.java index 1e614a608..063c4efce 100644 --- a/spine-libgdx/spine-libgdx/src/com/esotericsoftware/spine/Skeleton.java +++ b/spine-libgdx/spine-libgdx/src/com/esotericsoftware/spine/Skeleton.java @@ -531,11 +531,10 @@ public class Skeleton { Slot slot = drawOrder.get(i); float[] vertices = null; Attachment attachment = slot.attachment; - if (attachment instanceof RegionAttachment) { + if (attachment instanceof RegionAttachment) vertices = ((RegionAttachment)attachment).updateWorldVertices(slot, false); - } else if (attachment instanceof MeshAttachment) { + else if (attachment instanceof MeshAttachment) // vertices = ((MeshAttachment)attachment).updateWorldVertices(slot, true); - } if (vertices != null) { for (int ii = 0, nn = vertices.length; ii < nn; ii += 5) { float x = vertices[ii], y = vertices[ii + 1];