mirror of
https://github.com/EsotericSoftware/spine-runtimes.git
synced 2026-02-06 07:14:55 +08:00
[libgdx] Brought back transform constraint offset.
This commit is contained in:
parent
ead468332c
commit
52b7423b23
@ -334,14 +334,19 @@ public class SkeletonBinary extends SkeletonLoader {
|
||||
froms[ii] = from;
|
||||
}
|
||||
flags = input.read();
|
||||
if ((flags & 1) != 0) data.offsetX = input.readFloat();
|
||||
if ((flags & 2) != 0) data.offsetY = input.readFloat();
|
||||
if ((flags & 4) != 0) data.mixRotate = input.readFloat();
|
||||
if ((flags & 8) != 0) data.mixX = input.readFloat();
|
||||
if ((flags & 16) != 0) data.mixY = input.readFloat();
|
||||
if ((flags & 32) != 0) data.mixScaleX = input.readFloat();
|
||||
if ((flags & 64) != 0) data.mixScaleY = input.readFloat();
|
||||
if ((flags & 128) != 0) data.mixShearY = input.readFloat();
|
||||
if ((flags & 1) != 0) data.offsetRotation = input.readFloat();
|
||||
if ((flags & 2) != 0) data.offsetX = input.readFloat();
|
||||
if ((flags & 4) != 0) data.offsetY = input.readFloat();
|
||||
if ((flags & 8) != 0) data.offsetScaleX = input.readFloat();
|
||||
if ((flags & 16) != 0) data.offsetScaleY = input.readFloat();
|
||||
if ((flags & 32) != 0) data.offsetShearY = input.readFloat();
|
||||
flags = input.read();
|
||||
if ((flags & 1) != 0) data.mixRotate = input.readFloat();
|
||||
if ((flags & 2) != 0) data.mixX = input.readFloat();
|
||||
if ((flags & 4) != 0) data.mixY = input.readFloat();
|
||||
if ((flags & 8) != 0) data.mixScaleX = input.readFloat();
|
||||
if ((flags & 16) != 0) data.mixScaleY = input.readFloat();
|
||||
if ((flags & 32) != 0) data.mixShearY = input.readFloat();
|
||||
o[i] = data;
|
||||
}
|
||||
|
||||
|
||||
@ -321,8 +321,13 @@ public class SkeletonJson extends SkeletonLoader {
|
||||
if (from.to.notEmpty()) data.properties.add(from);
|
||||
}
|
||||
|
||||
data.offsetRotation = constraintMap.getFloat("rotation", 0);
|
||||
data.offsetX = constraintMap.getFloat("x", 0) * scale;
|
||||
data.offsetY = constraintMap.getFloat("y", 0) * scale;
|
||||
data.offsetScaleX = constraintMap.getFloat("scaleX", 0);
|
||||
data.offsetScaleY = constraintMap.getFloat("scaleY", 0);
|
||||
data.offsetShearY = constraintMap.getFloat("shearY", 0);
|
||||
|
||||
if (rotate) data.mixRotate = constraintMap.getFloat("mixRotate", 1);
|
||||
if (x) data.mixX = constraintMap.getFloat("mixX", 1);
|
||||
if (y) data.mixY = constraintMap.getFloat("mixY", data.mixX);
|
||||
|
||||
@ -39,7 +39,8 @@ import com.badlogic.gdx.utils.Array;
|
||||
public class TransformConstraintData extends ConstraintData {
|
||||
final Array<BoneData> bones = new Array();
|
||||
BoneData source;
|
||||
float offsetX, offsetY, mixRotate, mixX, mixY, mixScaleX, mixScaleY, mixShearY;
|
||||
float mixRotate, mixX, mixY, mixScaleX, mixScaleY, mixShearY;
|
||||
float offsetRotation, offsetX, offsetY, offsetScaleX, offsetScaleY, offsetShearY;
|
||||
boolean localSource, localTarget, additive, clamp;
|
||||
final Array<FromProperty> properties = new Array();
|
||||
|
||||
@ -121,6 +122,15 @@ public class TransformConstraintData extends ConstraintData {
|
||||
this.mixShearY = mixShearY;
|
||||
}
|
||||
|
||||
/** An offset added to the constrained bone rotation. */
|
||||
public float getOffsetRotation () {
|
||||
return offsetRotation;
|
||||
}
|
||||
|
||||
public void setOffsetRotation (float offsetRotation) {
|
||||
this.offsetRotation = offsetRotation;
|
||||
}
|
||||
|
||||
/** An offset added to the constrained bone X translation. */
|
||||
public float getOffsetX () {
|
||||
return offsetX;
|
||||
@ -139,6 +149,33 @@ public class TransformConstraintData extends ConstraintData {
|
||||
this.offsetY = offsetY;
|
||||
}
|
||||
|
||||
/** An offset added to the constrained bone scaleX. */
|
||||
public float getOffsetScaleX () {
|
||||
return offsetScaleX;
|
||||
}
|
||||
|
||||
public void setOffsetScaleX (float offsetScaleX) {
|
||||
this.offsetScaleX = offsetScaleX;
|
||||
}
|
||||
|
||||
/** An offset added to the constrained bone scaleY. */
|
||||
public float getOffsetScaleY () {
|
||||
return offsetScaleY;
|
||||
}
|
||||
|
||||
public void setOffsetScaleY (float offsetScaleY) {
|
||||
this.offsetScaleY = offsetScaleY;
|
||||
}
|
||||
|
||||
/** An offset added to the constrained bone shearY. */
|
||||
public float getOffsetShearY () {
|
||||
return offsetShearY;
|
||||
}
|
||||
|
||||
public void setOffsetShearY (float offsetShearY) {
|
||||
this.offsetShearY = offsetShearY;
|
||||
}
|
||||
|
||||
/** Reads the source bone's local transform instead of its world transform. */
|
||||
public boolean getLocalSource () {
|
||||
return localSource;
|
||||
@ -207,7 +244,11 @@ public class TransformConstraintData extends ConstraintData {
|
||||
|
||||
static public class FromRotate extends FromProperty {
|
||||
public float value (TransformConstraintData data, Bone source, boolean local) {
|
||||
return local ? source.arotation : atan2(source.c, source.a) * radDeg;
|
||||
if (local) return source.arotation + data.offsetRotation;
|
||||
float value = atan2(source.c, source.a) * radDeg
|
||||
+ (source.a * source.d - source.b * source.c > 0 ? data.offsetRotation : -data.offsetRotation);
|
||||
if (value < 0) value += 360;
|
||||
return value;
|
||||
}
|
||||
}
|
||||
|
||||
@ -284,7 +325,7 @@ public class TransformConstraintData extends ConstraintData {
|
||||
|
||||
static public class FromScaleX extends FromProperty {
|
||||
public float value (TransformConstraintData data, Bone source, boolean local) {
|
||||
return local ? source.ascaleX : (float)Math.sqrt(source.a * source.a + source.c * source.c);
|
||||
return (local ? source.ascaleX : (float)Math.sqrt(source.a * source.a + source.c * source.c)) + data.offsetScaleX;
|
||||
}
|
||||
}
|
||||
|
||||
@ -315,7 +356,7 @@ public class TransformConstraintData extends ConstraintData {
|
||||
|
||||
static public class FromScaleY extends FromProperty {
|
||||
public float value (TransformConstraintData data, Bone source, boolean local) {
|
||||
return local ? source.ascaleY : (float)Math.sqrt(source.b * source.b + source.d * source.d);
|
||||
return (local ? source.ascaleY : (float)Math.sqrt(source.b * source.b + source.d * source.d)) + data.offsetScaleY;
|
||||
}
|
||||
}
|
||||
|
||||
@ -346,7 +387,8 @@ public class TransformConstraintData extends ConstraintData {
|
||||
|
||||
static public class FromShearY extends FromProperty {
|
||||
public float value (TransformConstraintData data, Bone source, boolean local) {
|
||||
return local ? source.ashearY : (atan2(source.d, source.b) - atan2(source.c, source.a)) * radDeg - 90;
|
||||
return (local ? source.ashearY : (atan2(source.d, source.b) - atan2(source.c, source.a)) * radDeg - 90)
|
||||
+ data.offsetShearY;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user