mirror of
https://github.com/EsotericSoftware/spine-runtimes.git
synced 2026-02-06 15:24:55 +08:00
[libgdx] Added constants for transform constraint offset indices.
This commit is contained in:
parent
27c6770708
commit
205b390195
@ -351,12 +351,12 @@ public class SkeletonBinary extends SkeletonLoader {
|
||||
froms[ii] = from;
|
||||
}
|
||||
flags = input.read();
|
||||
if ((flags & 1) != 0) data.offsets[0] = input.readFloat();
|
||||
if ((flags & 2) != 0) data.offsets[1] = input.readFloat() * scale;
|
||||
if ((flags & 4) != 0) data.offsets[2] = input.readFloat() * scale;
|
||||
if ((flags & 8) != 0) data.offsets[3] = input.readFloat();
|
||||
if ((flags & 16) != 0) data.offsets[4] = input.readFloat();
|
||||
if ((flags & 32) != 0) data.offsets[5] = input.readFloat();
|
||||
if ((flags & 1) != 0) data.offsets[TransformConstraintData.ROTATION] = input.readFloat();
|
||||
if ((flags & 2) != 0) data.offsets[TransformConstraintData.X] = input.readFloat() * scale;
|
||||
if ((flags & 4) != 0) data.offsets[TransformConstraintData.Y] = input.readFloat() * scale;
|
||||
if ((flags & 8) != 0) data.offsets[TransformConstraintData.SCALEX] = input.readFloat();
|
||||
if ((flags & 16) != 0) data.offsets[TransformConstraintData.SCALEY] = input.readFloat();
|
||||
if ((flags & 32) != 0) data.offsets[TransformConstraintData.SHEARY] = input.readFloat();
|
||||
flags = input.read();
|
||||
TransformConstraintPose setup = data.setup;
|
||||
if ((flags & 1) != 0) setup.mixRotate = input.readFloat();
|
||||
|
||||
@ -320,12 +320,12 @@ public class SkeletonJson extends SkeletonLoader {
|
||||
if (from.to.notEmpty()) data.properties.add(from);
|
||||
}
|
||||
|
||||
data.offsets[0] = constraintMap.getFloat("rotation", 0);
|
||||
data.offsets[1] = constraintMap.getFloat("x", 0) * scale;
|
||||
data.offsets[2] = constraintMap.getFloat("y", 0) * scale;
|
||||
data.offsets[3] = constraintMap.getFloat("scaleX", 0);
|
||||
data.offsets[4] = constraintMap.getFloat("scaleY", 0);
|
||||
data.offsets[5] = constraintMap.getFloat("shearY", 0);
|
||||
data.offsets[TransformConstraintData.ROTATION] = constraintMap.getFloat("rotation", 0);
|
||||
data.offsets[TransformConstraintData.X] = constraintMap.getFloat("x", 0) * scale;
|
||||
data.offsets[TransformConstraintData.Y] = constraintMap.getFloat("y", 0) * scale;
|
||||
data.offsets[TransformConstraintData.SCALEX] = constraintMap.getFloat("scaleX", 0);
|
||||
data.offsets[TransformConstraintData.SCALEY] = constraintMap.getFloat("scaleY", 0);
|
||||
data.offsets[TransformConstraintData.SHEARY] = constraintMap.getFloat("shearY", 0);
|
||||
|
||||
TransformConstraintPose setup = data.setup;
|
||||
if (rotate) setup.mixRotate = constraintMap.getFloat("mixRotate", 1);
|
||||
|
||||
@ -37,6 +37,8 @@ import com.badlogic.gdx.utils.Array;
|
||||
* <p>
|
||||
* See <a href="https://esotericsoftware.com/spine-transform-constraints">Transform constraints</a> in the Spine User Guide. */
|
||||
public class TransformConstraintData extends ConstraintData<TransformConstraint, TransformConstraintPose> {
|
||||
static public final int ROTATION = 0, X = 1, Y = 2, SCALEX = 3, SCALEY = 4, SHEARY = 5;
|
||||
|
||||
final Array<BoneData> bones = new Array(true, 0, BoneData[]::new);
|
||||
BoneData source;
|
||||
float[] offsets = new float[6];
|
||||
@ -68,56 +70,56 @@ public class TransformConstraintData extends ConstraintData<TransformConstraint,
|
||||
|
||||
/** An offset added to the constrained bone rotation. */
|
||||
public float getOffsetRotation () {
|
||||
return offsets[0];
|
||||
return offsets[ROTATION];
|
||||
}
|
||||
|
||||
public void setOffsetRotation (float offsetRotation) {
|
||||
offsets[0] = offsetRotation;
|
||||
offsets[ROTATION] = offsetRotation;
|
||||
}
|
||||
|
||||
/** An offset added to the constrained bone X translation. */
|
||||
public float getOffsetX () {
|
||||
return offsets[1];
|
||||
return offsets[X];
|
||||
}
|
||||
|
||||
public void setOffsetX (float offsetX) {
|
||||
offsets[1] = offsetX;
|
||||
offsets[X] = offsetX;
|
||||
}
|
||||
|
||||
/** An offset added to the constrained bone Y translation. */
|
||||
public float getOffsetY () {
|
||||
return offsets[2];
|
||||
return offsets[Y];
|
||||
}
|
||||
|
||||
public void setOffsetY (float offsetY) {
|
||||
offsets[2] = offsetY;
|
||||
offsets[Y] = offsetY;
|
||||
}
|
||||
|
||||
/** An offset added to the constrained bone scaleX. */
|
||||
public float getOffsetScaleX () {
|
||||
return offsets[3];
|
||||
return offsets[SCALEX];
|
||||
}
|
||||
|
||||
public void setOffsetScaleX (float offsetScaleX) {
|
||||
offsets[3] = offsetScaleX;
|
||||
offsets[SCALEX] = offsetScaleX;
|
||||
}
|
||||
|
||||
/** An offset added to the constrained bone scaleY. */
|
||||
public float getOffsetScaleY () {
|
||||
return offsets[4];
|
||||
return offsets[SCALEY];
|
||||
}
|
||||
|
||||
public void setOffsetScaleY (float offsetScaleY) {
|
||||
offsets[4] = offsetScaleY;
|
||||
offsets[SCALEY] = offsetScaleY;
|
||||
}
|
||||
|
||||
/** An offset added to the constrained bone shearY. */
|
||||
public float getOffsetShearY () {
|
||||
return offsets[5];
|
||||
return offsets[SHEARY];
|
||||
}
|
||||
|
||||
public void setOffsetShearY (float offsetShearY) {
|
||||
offsets[5] = offsetShearY;
|
||||
offsets[SHEARY] = offsetShearY;
|
||||
}
|
||||
|
||||
/** Reads the source bone's local transform instead of its world transform. */
|
||||
@ -193,9 +195,9 @@ public class TransformConstraintData extends ConstraintData<TransformConstraint,
|
||||
|
||||
static public class FromRotate extends FromProperty {
|
||||
public float value (BonePose source, boolean local, float[] offsets) {
|
||||
if (local) return source.rotation + offsets[0];
|
||||
if (local) return source.rotation + offsets[ROTATION];
|
||||
float value = atan2(source.c, source.a) * radDeg
|
||||
+ (source.a * source.d - source.b * source.c > 0 ? offsets[0] : -offsets[0]);
|
||||
+ (source.a * source.d - source.b * source.c > 0 ? offsets[ROTATION] : -offsets[ROTATION]);
|
||||
if (value < 0) value += 360;
|
||||
return value;
|
||||
}
|
||||
@ -230,7 +232,7 @@ public class TransformConstraintData extends ConstraintData<TransformConstraint,
|
||||
|
||||
static public class FromX extends FromProperty {
|
||||
public float value (BonePose source, boolean local, float[] offsets) {
|
||||
return local ? source.x + offsets[1] : offsets[1] * source.a + offsets[2] * source.b + source.worldX;
|
||||
return local ? source.x + offsets[X] : offsets[X] * source.a + offsets[Y] * source.b + source.worldX;
|
||||
}
|
||||
}
|
||||
|
||||
@ -252,7 +254,7 @@ public class TransformConstraintData extends ConstraintData<TransformConstraint,
|
||||
|
||||
static public class FromY extends FromProperty {
|
||||
public float value (BonePose source, boolean local, float[] offsets) {
|
||||
return local ? source.y + offsets[2] : offsets[1] * source.c + offsets[2] * source.d + source.worldY;
|
||||
return local ? source.y + offsets[Y] : offsets[X] * source.c + offsets[Y] * source.d + source.worldY;
|
||||
}
|
||||
}
|
||||
|
||||
@ -274,7 +276,7 @@ public class TransformConstraintData extends ConstraintData<TransformConstraint,
|
||||
|
||||
static public class FromScaleX extends FromProperty {
|
||||
public float value (BonePose source, boolean local, float[] offsets) {
|
||||
return (local ? source.scaleX : (float)Math.sqrt(source.a * source.a + source.c * source.c)) + offsets[3];
|
||||
return (local ? source.scaleX : (float)Math.sqrt(source.a * source.a + source.c * source.c)) + offsets[SCALEX];
|
||||
}
|
||||
}
|
||||
|
||||
@ -305,7 +307,7 @@ public class TransformConstraintData extends ConstraintData<TransformConstraint,
|
||||
|
||||
static public class FromScaleY extends FromProperty {
|
||||
public float value (BonePose source, boolean local, float[] offsets) {
|
||||
return (local ? source.scaleY : (float)Math.sqrt(source.b * source.b + source.d * source.d)) + offsets[4];
|
||||
return (local ? source.scaleY : (float)Math.sqrt(source.b * source.b + source.d * source.d)) + offsets[SCALEY];
|
||||
}
|
||||
}
|
||||
|
||||
@ -336,7 +338,7 @@ public class TransformConstraintData extends ConstraintData<TransformConstraint,
|
||||
|
||||
static public class FromShearY extends FromProperty {
|
||||
public float value (BonePose source, boolean local, float[] offsets) {
|
||||
return (local ? source.shearY : (atan2(source.d, source.b) - atan2(source.c, source.a)) * radDeg - 90) + offsets[5];
|
||||
return (local ? source.shearY : (atan2(source.d, source.b) - atan2(source.c, source.a)) * radDeg - 90) + offsets[SHEARY];
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user