From ff95b27bf6e621bb531183f6ba7295be8ad89dcd Mon Sep 17 00:00:00 2001 From: Nathan Sweet Date: Fri, 24 Sep 2021 21:08:53 -1000 Subject: [PATCH] Load sequence attachments from JSON. EsotericSoftware/spine-editor#9 --- .../esotericsoftware/spine/SkeletonJson.java | 19 ++++++++++++++++++- 1 file changed, 18 insertions(+), 1 deletion(-) 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 6e5d42b82..2664f4051 100644 --- a/spine-libgdx/spine-libgdx/src/com/esotericsoftware/spine/SkeletonJson.java +++ b/spine-libgdx/spine-libgdx/src/com/esotericsoftware/spine/SkeletonJson.java @@ -84,6 +84,9 @@ import com.esotericsoftware.spine.attachments.MeshAttachment; import com.esotericsoftware.spine.attachments.PathAttachment; import com.esotericsoftware.spine.attachments.PointAttachment; import com.esotericsoftware.spine.attachments.RegionAttachment; +import com.esotericsoftware.spine.attachments.SequenceAttachment; +import com.esotericsoftware.spine.attachments.SequenceAttachment.SequenceMode; +import com.esotericsoftware.spine.attachments.TextureRegionAttachment; import com.esotericsoftware.spine.attachments.VertexAttachment; /** Loads skeleton data in the Spine JSON format. @@ -452,7 +455,7 @@ public class SkeletonJson extends SkeletonLoader { if (color != null) Color.valueOf(color, point.getColor()); return point; } - case clipping: + case clipping: { ClippingAttachment clip = attachmentLoader.newClippingAttachment(skin, name); if (clip == null) return null; @@ -469,6 +472,20 @@ public class SkeletonJson extends SkeletonLoader { if (color != null) Color.valueOf(color, clip.getColor()); return clip; } + case sequence: + Attachment attachment = readAttachment(map.getChild("attachment"), skin, slotIndex, name, skeletonData); + if (attachment == null) return null; + String path = ((TextureRegionAttachment)attachment).getPath(); + int frameCount = map.getInt("count"); + SequenceAttachment sequence = attachmentLoader.newSequenceAttachment(skin, name, path, frameCount); + if (sequence == null) return null; + sequence.setAttachment(attachment); + sequence.setPath(path); + sequence.setFrameCount(frameCount); + sequence.setFrameTime(map.getInt("time")); + sequence.setMode(SequenceMode.valueOf(map.getString("mode", SequenceMode.forward.name()))); + return sequence; + } return null; }