Fixed missing inherit scale/rotation.

This commit is contained in:
NathanSweet 2016-01-20 14:58:07 +01:00
parent 4d9c3d5ec4
commit 8e9595f496
2 changed files with 12 additions and 7 deletions

View File

@ -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]);

View File

@ -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]);