|
@@ -256,14 +256,14 @@ public class SkeletonBinary extends SkeletonLoader {
|
|
|
for (int ii = 0; ii < nn; ii++)
|
|
|
constraintBones[ii] = bones[input.readInt(true)];
|
|
|
data.target = (BoneData)bones[input.readInt(true)];
|
|
|
- data.mix = input.readFloat();
|
|
|
- data.softness = input.readFloat() * scale;
|
|
|
int flags = input.read();
|
|
|
data.skinRequired = (flags & 1) != 0;
|
|
|
data.bendDirection = (flags & 2) != 0 ? 1 : -1;
|
|
|
data.compress = (flags & 4) != 0;
|
|
|
data.stretch = (flags & 8) != 0;
|
|
|
data.uniform = (flags & 16) != 0;
|
|
|
+ if ((flags & 32) != 0) data.mix = (flags & 64) != 0 ? input.readFloat() : 1;
|
|
|
+ if ((flags & 128) != 0) data.softness = input.readFloat() * scale;
|
|
|
o[i] = data;
|
|
|
}
|
|
|
|
|
@@ -280,18 +280,19 @@ public class SkeletonBinary extends SkeletonLoader {
|
|
|
data.skinRequired = (flags & 1) != 0;
|
|
|
data.local = (flags & 2) != 0;
|
|
|
data.relative = (flags & 4) != 0;
|
|
|
- data.offsetRotation = input.readFloat();
|
|
|
- data.offsetX = input.readFloat() * scale;
|
|
|
- data.offsetY = input.readFloat() * scale;
|
|
|
- data.offsetScaleX = input.readFloat();
|
|
|
- data.offsetScaleY = input.readFloat();
|
|
|
- data.offsetShearY = input.readFloat();
|
|
|
- data.mixRotate = input.readFloat();
|
|
|
- data.mixX = input.readFloat();
|
|
|
- data.mixY = input.readFloat();
|
|
|
- data.mixScaleX = input.readFloat();
|
|
|
- data.mixScaleY = input.readFloat();
|
|
|
- data.mixShearY = input.readFloat();
|
|
|
+ if ((flags & 8) != 0) data.offsetRotation = input.readFloat();
|
|
|
+ if ((flags & 16) != 0) data.offsetX = input.readFloat() * scale;
|
|
|
+ if ((flags & 32) != 0) data.offsetY = input.readFloat() * scale;
|
|
|
+ if ((flags & 64) != 0) data.offsetScaleX = input.readFloat();
|
|
|
+ if ((flags & 128) != 0) data.offsetScaleY = input.readFloat();
|
|
|
+ flags = input.read();
|
|
|
+ if ((flags & 1) != 0) data.offsetShearY = input.readFloat();
|
|
|
+ if ((flags & 2) != 0) data.mixRotate = input.readFloat();
|
|
|
+ if ((flags & 4) != 0) data.mixX = input.readFloat();
|
|
|
+ if ((flags & 8) != 0) data.mixY = input.readFloat();
|
|
|
+ if ((flags & 16) != 0) data.mixScaleX = input.readFloat();
|
|
|
+ if ((flags & 32) != 0) data.mixScaleY = input.readFloat();
|
|
|
+ if ((flags & 64) != 0) data.mixShearY = input.readFloat();
|
|
|
o[i] = data;
|
|
|
}
|
|
|
|
|
@@ -305,10 +306,11 @@ public class SkeletonBinary extends SkeletonLoader {
|
|
|
for (int ii = 0; ii < nn; ii++)
|
|
|
constraintBones[ii] = bones[input.readInt(true)];
|
|
|
data.target = (SlotData)slots[input.readInt(true)];
|
|
|
- data.positionMode = PositionMode.values[input.readInt(true)];
|
|
|
- data.spacingMode = SpacingMode.values[input.readInt(true)];
|
|
|
- data.rotateMode = RotateMode.values[input.readInt(true)];
|
|
|
- data.offsetRotation = input.readFloat();
|
|
|
+ int flags = input.read();
|
|
|
+ data.positionMode = PositionMode.values[flags & 1];
|
|
|
+ data.spacingMode = SpacingMode.values[(flags >> 1) & 2];
|
|
|
+ data.rotateMode = RotateMode.values[(flags >> 3) & 2];
|
|
|
+ if ((flags & 128) != 0) data.offsetRotation = input.readFloat();
|
|
|
data.position = input.readFloat();
|
|
|
if (data.positionMode == PositionMode.fixed) data.position *= scale;
|
|
|
data.spacing = input.readFloat();
|
|
@@ -332,14 +334,14 @@ public class SkeletonBinary extends SkeletonLoader {
|
|
|
if ((flags & 8) != 0) data.rotate = input.readFloat();
|
|
|
if ((flags & 16) != 0) data.scaleX = input.readFloat();
|
|
|
if ((flags & 32) != 0) data.shearX = input.readFloat();
|
|
|
+ data.limit = ((flags & 64) != 0 ? input.readFloat() : 500) * scale;
|
|
|
data.step = 1f / input.readByte();
|
|
|
data.inertia = input.readFloat();
|
|
|
data.strength = input.readFloat();
|
|
|
data.damping = input.readFloat();
|
|
|
- data.massInverse = input.readFloat();
|
|
|
+ data.massInverse = (flags & 128) != 0 ? input.readFloat() : 1;
|
|
|
data.wind = input.readFloat();
|
|
|
data.gravity = input.readFloat();
|
|
|
- data.mix = input.readFloat();
|
|
|
flags = input.read();
|
|
|
if ((flags & 1) != 0) data.inertiaGlobal = true;
|
|
|
if ((flags & 2) != 0) data.strengthGlobal = true;
|
|
@@ -348,6 +350,7 @@ public class SkeletonBinary extends SkeletonLoader {
|
|
|
if ((flags & 16) != 0) data.windGlobal = true;
|
|
|
if ((flags & 32) != 0) data.gravityGlobal = true;
|
|
|
if ((flags & 64) != 0) data.mixGlobal = true;
|
|
|
+ data.mix = (flags & 128) != 0 ? input.readFloat() : 1;
|
|
|
o[i] = data;
|
|
|
}
|
|
|
|
|
@@ -468,7 +471,7 @@ public class SkeletonBinary extends SkeletonLoader {
|
|
|
String path = (flags & 16) != 0 ? input.readStringRef() : null;
|
|
|
int color = (flags & 32) != 0 ? input.readInt() : 0xffffffff;
|
|
|
Sequence sequence = (flags & 64) != 0 ? readSequence(input) : null;
|
|
|
- float rotation = input.readFloat();
|
|
|
+ float rotation = (flags & 128) != 0 ? input.readFloat() : 0;
|
|
|
float x = input.readFloat();
|
|
|
float y = input.readFloat();
|
|
|
float scaleX = input.readFloat();
|
|
@@ -880,17 +883,18 @@ public class SkeletonBinary extends SkeletonLoader {
|
|
|
for (int i = 0, n = input.readInt(true); i < n; i++) {
|
|
|
int index = input.readInt(true), frameCount = input.readInt(true), frameLast = frameCount - 1;
|
|
|
IkConstraintTimeline timeline = new IkConstraintTimeline(frameCount, input.readInt(true), index);
|
|
|
- float time = input.readFloat(), mix = input.readFloat(), softness = input.readFloat() * scale;
|
|
|
+ int flags = input.read();
|
|
|
+ float time = input.readFloat(), mix = (flags & 1) != 0 ? ((flags & 2) != 0 ? input.readFloat() : 1) : 0;
|
|
|
+ float softness = (flags & 4) != 0 ? input.readFloat() * scale : 0;
|
|
|
for (int frame = 0, bezier = 0;; frame++) {
|
|
|
- int flags = input.read();
|
|
|
- timeline.setFrame(frame, time, mix, softness, input.readByte(), (flags & 1) != 0, (flags & 2) != 0);
|
|
|
+ timeline.setFrame(frame, time, mix, softness, (flags & 8) != 0 ? 1 : -1, (flags & 16) != 0, (flags & 32) != 0);
|
|
|
if (frame == frameLast) break;
|
|
|
- float time2 = input.readFloat(), mix2 = input.readFloat(), softness2 = input.readFloat() * scale;
|
|
|
- switch (input.readByte()) {
|
|
|
- case CURVE_STEPPED:
|
|
|
+ flags = input.read();
|
|
|
+ float time2 = input.readFloat(), mix2 = (flags & 1) != 0 ? ((flags & 2) != 0 ? input.readFloat() : 1) : 0;
|
|
|
+ float softness2 = (flags & 4) != 0 ? input.readFloat() * scale : 0;
|
|
|
+ if ((flags & 64) != 0)
|
|
|
timeline.setStepped(frame);
|
|
|
- break;
|
|
|
- case CURVE_BEZIER:
|
|
|
+ else if ((flags & 128) != 0) {
|
|
|
setBezier(input, timeline, bezier++, frame, 0, time, time2, mix, mix2, 1);
|
|
|
setBezier(input, timeline, bezier++, frame, 1, time, time2, softness, softness2, scale);
|
|
|
}
|