diff --git a/spine-csharp/src/SkeletonBinary.cs b/spine-csharp/src/SkeletonBinary.cs index b1fe22e7c..d48b185e7 100644 --- a/spine-csharp/src/SkeletonBinary.cs +++ b/spine-csharp/src/SkeletonBinary.cs @@ -199,7 +199,15 @@ namespace Spine { // Slots. SlotData[] slots = skeletonData.slots.Resize(n = input.ReadInt(true)).Items; 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 = bones[input.ReadInt(true)]; SlotData slotData = new SlotData(i, slotName, boneData); int color = input.ReadInt(); @@ -218,7 +226,9 @@ namespace Spine { slotData.attachmentName = input.ReadStringRef(); slotData.blendMode = (BlendMode)input.ReadInt(true); - if (nonessential) input.ReadBoolean(); // if (nonessential) data.visible = input.readBoolean(); + if (nonessential) { + input.ReadBoolean(); // data.visible = input.readBoolean(); data.path = path; + } slots[i] = slotData; } diff --git a/spine-csharp/src/SkeletonData.cs b/spine-csharp/src/SkeletonData.cs index 774b9ae41..528005bd6 100644 --- a/spine-csharp/src/SkeletonData.cs +++ b/spine-csharp/src/SkeletonData.cs @@ -58,6 +58,7 @@ namespace Spine { /// The skeleton's bones, sorted parent first. The root bone is always the first bone. public ExposedList Bones { get { return bones; } } + /// The skeleton's slots in the setup pose draw order. public ExposedList Slots { get { return slots; } } /// All skins, including the default skin. diff --git a/spine-csharp/src/SkeletonJson.cs b/spine-csharp/src/SkeletonJson.cs index cca56af61..30578cd81 100644 --- a/spine-csharp/src/SkeletonJson.cs +++ b/spine-csharp/src/SkeletonJson.cs @@ -143,7 +143,13 @@ namespace Spine { // Slots. if (root.ContainsKey("slots")) { foreach (Dictionary slotMap in (List)root["slots"]) { - string slotName = (string)slotMap["name"]; + string slotName = (string)slotMap["name"]; //, path = null; + int slash = slotName.LastIndexOf('/'); + if (slash != -1) { + //path = slotName.Substring(0, slash); + slotName = slotName.Substring(slash + 1); + } + string boneName = (string)slotMap["bone"]; BoneData boneData = skeletonData.FindBone(boneName); if (boneData == null) throw new Exception("Slot bone not found: " + boneName); @@ -170,6 +176,8 @@ namespace Spine { data.blendMode = (BlendMode)Enum.Parse(typeof(BlendMode), (string)slotMap["blend"], true); else data.blendMode = BlendMode.Normal; + //data.visible = slotMap.getBoolean("visible", true); + //data.path = path; skeletonData.slots.Add(data); } } diff --git a/spine-csharp/src/SlotData.cs b/spine-csharp/src/SlotData.cs index 3cb56c507..58b932f8a 100644 --- a/spine-csharp/src/SlotData.cs +++ b/spine-csharp/src/SlotData.cs @@ -40,6 +40,10 @@ namespace Spine { internal string attachmentName; internal BlendMode blendMode; + // Nonessential. + // bool visible = true; + // string path; + /// The index of the slot in . public int Index { get { return index; } } /// The name of the slot, which is unique across all slots in the skeleton. diff --git a/spine-csharp/src/package.json b/spine-csharp/src/package.json index 4d6a2d968..d4cd47460 100644 --- a/spine-csharp/src/package.json +++ b/spine-csharp/src/package.json @@ -2,7 +2,7 @@ "name": "com.esotericsoftware.spine.spine-csharp", "displayName": "spine-csharp Runtime", "description": "This plugin provides the spine-csharp core runtime.", - "version": "4.2.11", + "version": "4.2.12", "unity": "2018.3", "author": { "name": "Esoteric Software",