Added loading of transform constraints from JSON and binary.

This commit is contained in:
NathanSweet 2016-02-14 19:45:54 +01:00
parent 88207a609c
commit 5835337bed
3 changed files with 31 additions and 1 deletions

View File

@ -148,6 +148,17 @@ public class SkeletonBinary {
skeletonData.ikConstraints.add(ikConstraintData);
}
// Transform constraints.
for (int i = 0, n = input.readInt(true); i < n; i++) {
TransformConstraintData transformConstraintData = new TransformConstraintData(input.readString());
transformConstraintData.bone = skeletonData.bones.get(input.readInt(true));
transformConstraintData.target = skeletonData.bones.get(input.readInt(true));
transformConstraintData.translateMix = input.readFloat();
transformConstraintData.x = input.readFloat();
transformConstraintData.y = input.readFloat();
skeletonData.transformConstraints.add(transformConstraintData);
}
// Slots.
for (int i = 0, n = input.readInt(true); i < n; i++) {
String slotName = input.readString();

View File

@ -146,6 +146,25 @@ public class SkeletonJson {
skeletonData.ikConstraints.add(ikConstraintData);
}
// Transform constraints.
for (JsonValue transformMap = root.getChild("transform"); transformMap != null; transformMap = transformMap.next) {
TransformConstraintData transformConstraintData = new TransformConstraintData(transformMap.getString("name"));
String boneName = transformMap.getString("bone");
transformConstraintData.bone = skeletonData.findBone(boneName);
if (transformConstraintData.bone == null) throw new SerializationException("Bone not found: " + boneName);
String targetName = transformMap.getString("target");
transformConstraintData.target = skeletonData.findBone(targetName);
if (transformConstraintData.target == null) throw new SerializationException("Target bone not found: " + targetName);
transformConstraintData.translateMix = transformMap.getFloat("translateMix", 1);
transformConstraintData.x = transformMap.getFloat("x", 0);
transformConstraintData.y = transformMap.getFloat("y", 0);
skeletonData.transformConstraints.add(transformConstraintData);
}
// Slots.
for (JsonValue slotMap = root.getChild("slots"); slotMap != null; slotMap = slotMap.next) {
String slotName = slotMap.getString("name");

View File

@ -23,7 +23,7 @@ public class TransformConstraint implements Updatable {
public TransformConstraint (TransformConstraint constraint, Skeleton skeleton) {
data = constraint.data;
translateMix = data.translateMix;
bone = skeleton.bones.get(constraint.bone.skeleton.bones.indexOf(constraint.target, true));
bone = skeleton.bones.get(constraint.bone.skeleton.bones.indexOf(constraint.bone, true));
target = skeleton.bones.get(constraint.target.skeleton.bones.indexOf(constraint.target, true));
}