diff --git a/spine-libgdx/spine-libgdx/src/com/esotericsoftware/spine/SkeletonBinary.java b/spine-libgdx/spine-libgdx/src/com/esotericsoftware/spine/SkeletonBinary.java index ed16c99e9..ce033dba9 100644 --- a/spine-libgdx/spine-libgdx/src/com/esotericsoftware/spine/SkeletonBinary.java +++ b/spine-libgdx/spine-libgdx/src/com/esotericsoftware/spine/SkeletonBinary.java @@ -221,7 +221,15 @@ public class SkeletonBinary extends SkeletonLoader { // Slots. Object[] slots = skeletonData.slots.setSize(n = input.readInt(true)); for (int i = 0; i < n; i++) { - String slotName = input.readString(); + String slotName = input.readString(), path = null; + if (nonessential) { + int slash = slotName.lastIndexOf('/'); + if (slash != -1) { + path = slotName.substring(0, slash); + slotName = slotName.substring(slash + 1); + } + } + BoneData boneData = (BoneData)bones[input.readInt(true)]; SlotData data = new SlotData(i, slotName, boneData); Color.rgba8888ToColor(data.color, input.readInt()); @@ -231,7 +239,10 @@ public class SkeletonBinary extends SkeletonLoader { data.attachmentName = input.readStringRef(); data.blendMode = BlendMode.values[input.readInt(true)]; - if (nonessential) data.visible = input.readBoolean(); + if (nonessential) { + data.visible = input.readBoolean(); + data.path = path; + } slots[i] = data; } diff --git a/spine-libgdx/spine-libgdx/src/com/esotericsoftware/spine/SkeletonData.java b/spine-libgdx/spine-libgdx/src/com/esotericsoftware/spine/SkeletonData.java index 177440fda..9d99e6c1a 100644 --- a/spine-libgdx/spine-libgdx/src/com/esotericsoftware/spine/SkeletonData.java +++ b/spine-libgdx/spine-libgdx/src/com/esotericsoftware/spine/SkeletonData.java @@ -80,7 +80,7 @@ public class SkeletonData { // --- Slots. - /** The skeleton's slots. */ + /** The skeleton's slots in the setup pose draw order. */ public Array getSlots () { return slots; } 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 df02b05f1..5005cbc82 100644 --- a/spine-libgdx/spine-libgdx/src/com/esotericsoftware/spine/SkeletonJson.java +++ b/spine-libgdx/spine-libgdx/src/com/esotericsoftware/spine/SkeletonJson.java @@ -179,10 +179,17 @@ public class SkeletonJson extends SkeletonLoader { // Slots. for (JsonValue slotMap = root.getChild("slots"); slotMap != null; slotMap = slotMap.next) { - String slotName = slotMap.getString("name"); + String slotName = slotMap.getString("name"), path = null; + int slash = slotName.lastIndexOf('/'); + if (slash != -1) { + path = slotName.substring(0, slash); + slotName = slotName.substring(slash + 1); + } + String boneName = slotMap.getString("bone"); BoneData boneData = skeletonData.findBone(boneName); if (boneData == null) throw new SerializationException("Slot bone not found: " + boneName); + SlotData data = new SlotData(skeletonData.slots.size, slotName, boneData); String color = slotMap.getString("color", null); @@ -194,6 +201,7 @@ public class SkeletonJson extends SkeletonLoader { data.attachmentName = slotMap.getString("attachment", null); data.blendMode = BlendMode.valueOf(slotMap.getString("blend", BlendMode.normal.name())); data.visible = slotMap.getBoolean("visible", true); + data.path = path; skeletonData.slots.add(data); } diff --git a/spine-libgdx/spine-libgdx/src/com/esotericsoftware/spine/SlotData.java b/spine-libgdx/spine-libgdx/src/com/esotericsoftware/spine/SlotData.java index 2ee9ebba7..fe95b864c 100644 --- a/spine-libgdx/spine-libgdx/src/com/esotericsoftware/spine/SlotData.java +++ b/spine-libgdx/spine-libgdx/src/com/esotericsoftware/spine/SlotData.java @@ -44,6 +44,7 @@ public class SlotData { // Nonessential. boolean visible = true; + String path; public SlotData (int index, String name, BoneData boneData) { if (index < 0) throw new IllegalArgumentException("index must be >= 0."); @@ -113,6 +114,15 @@ public class SlotData { this.visible = visible; } + /** The folders for this slot in the draw order, delimited by /, or null if nonessential data was not exported. */ + public @Null String getPath () { + return path; + } + + public void setPath (String path) { + this.path = path; + } + public String toString () { return name; }