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 bee8523a3..1b32a7cd4 100644 --- a/spine-libgdx/spine-libgdx/src/com/esotericsoftware/spine/SkeletonBinary.java +++ b/spine-libgdx/spine-libgdx/src/com/esotericsoftware/spine/SkeletonBinary.java @@ -131,6 +131,8 @@ public class SkeletonBinary { boneData.scaleY = input.readFloat(); boneData.rotation = input.readFloat(); boneData.length = input.readFloat() * scale; + boneData.inheritScale = input.readBoolean(); + boneData.inheritRotation = input.readBoolean(); if (nonessential) Color.rgba8888ToColor(boneData.color, input.readInt()); skeletonData.bones.add(boneData); } @@ -214,7 +216,8 @@ public class SkeletonBinary { return skin; } - private Attachment readAttachment (DataInput input, Skin skin, String attachmentName, boolean nonessential) throws IOException { + private Attachment readAttachment (DataInput input, Skin skin, String attachmentName, boolean nonessential) + throws IOException { float scale = this.scale; String name = input.readString(); @@ -403,8 +406,8 @@ public class SkeletonBinary { } timeline.boneIndex = boneIndex; for (int frameIndex = 0; frameIndex < frameCount; frameIndex++) { - timeline.setFrame(frameIndex, input.readFloat(), input.readFloat() * timelineScale, input.readFloat() - * timelineScale); + timeline.setFrame(frameIndex, input.readFloat(), input.readFloat() * timelineScale, + input.readFloat() * timelineScale); if (frameIndex < frameCount - 1) readCurve(input, frameIndex, timeline); } timelines.add(timeline); @@ -522,11 +525,11 @@ public class SkeletonBinary { for (int i = 0; i < eventCount; i++) { float time = input.readFloat(); EventData eventData = skeletonData.events.get(input.readInt(true)); - Event event = new Event(eventData); + Event event = new Event(time, eventData); event.intValue = input.readInt(false); event.floatValue = input.readFloat(); event.stringValue = input.readBoolean() ? input.readString() : eventData.stringValue; - timeline.setFrame(i, time, event); + timeline.setFrame(i, event); } timelines.add(timeline); duration = Math.max(duration, timeline.getFrames()[eventCount - 1]); 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 bf4890efa..5390e0f39 100644 --- a/spine-libgdx/spine-libgdx/src/com/esotericsoftware/spine/SkeletonJson.java +++ b/spine-libgdx/spine-libgdx/src/com/esotericsoftware/spine/SkeletonJson.java @@ -116,6 +116,8 @@ public class SkeletonJson { boneData.rotation = boneMap.getFloat("rotation", 0); boneData.scaleX = boneMap.getFloat("scaleX", 1); boneData.scaleY = boneMap.getFloat("scaleY", 1); + boneData.inheritScale = boneMap.getBoolean("inheritScale", true); + boneData.inheritRotation = boneMap.getBoolean("inheritRotation", true); String color = boneMap.getString("color", null); if (color != null) boneData.getColor().set(Color.valueOf(color)); @@ -504,11 +506,11 @@ public class SkeletonJson { for (JsonValue eventMap = eventsMap.child; eventMap != null; eventMap = eventMap.next) { EventData eventData = skeletonData.findEvent(eventMap.getString("name")); if (eventData == null) throw new SerializationException("Event not found: " + eventMap.getString("name")); - Event event = new Event(eventData); + Event event = new Event(eventMap.getFloat("time"), eventData); event.intValue = eventMap.getInt("int", eventData.getInt()); event.floatValue = eventMap.getFloat("float", eventData.getFloat()); event.stringValue = eventMap.getString("string", eventData.getString()); - timeline.setFrame(frameIndex++, eventMap.getFloat("time"), event); + timeline.setFrame(frameIndex++, event); } timelines.add(timeline); duration = Math.max(duration, timeline.getFrames()[timeline.getFrameCount() - 1]);