mirror of
https://github.com/EsotericSoftware/spine-runtimes.git
synced 2026-02-06 15:24:55 +08:00
Merge branch '3.8' into 3.9-beta
This commit is contained in:
commit
691767ca1f
Binary file not shown.
@ -96,10 +96,13 @@ package spine {
|
||||
ty = targetY - bone.worldY;
|
||||
break;
|
||||
case TransformMode.noRotationOrReflection:
|
||||
rotationIK += Math.atan2(pc, pa) * MathUtils.radDeg;
|
||||
var ps : Number = Math.abs(pa * pd - pb * pc) / (pa * pa + pc * pc);
|
||||
pb = -pc * ps;
|
||||
pd = pa * ps;
|
||||
var s : Number = Math.abs(pa * pd - pb * pc) / (pa * pa + pc * pc);
|
||||
var sa : Number = pa / bone.skeleton.scaleX;
|
||||
var sc : Number = pc / bone.skeleton.scaleY;
|
||||
pb = -sc * s * bone.skeleton.scaleX;
|
||||
pd = sa * s * bone.skeleton.scaleY;
|
||||
rotationIK += Math.atan2(sc, sa) * MathUtils.radDeg;
|
||||
// Fall through.
|
||||
default:
|
||||
var x : Number = targetX - p.worldX, y : Number = targetY - p.worldY;
|
||||
var d : Number = pa * pd - pb * pc;
|
||||
|
||||
@ -72,7 +72,7 @@ void spIkConstraint_apply1 (spBone* bone, float targetX, float targetY, int /*bo
|
||||
spBone* p = bone->parent;
|
||||
float pa = p->a, pb = p->b, pc = p->c, pd = p->d;
|
||||
float rotationIK = -bone->ashearX - bone->arotation;
|
||||
float tx = 0, ty = 0, sx = 0, sy = 0, s = 0;
|
||||
float tx = 0, ty = 0, sx = 0, sy = 0, s = 0, sa = 0, sc = 0;
|
||||
if (!bone->appliedValid) spBone_updateAppliedTransform(bone);
|
||||
|
||||
switch(bone->data->transformMode) {
|
||||
@ -81,11 +81,12 @@ void spIkConstraint_apply1 (spBone* bone, float targetX, float targetY, int /*bo
|
||||
ty = targetY - bone->worldY;
|
||||
break;
|
||||
case SP_TRANSFORMMODE_NOROTATIONORREFLECTION: {
|
||||
float ps;
|
||||
rotationIK += ATAN2(pc, pa) * RAD_DEG;
|
||||
ps = ABS(pa * pd - pb * pc) / (pa * pa + pc * pc);
|
||||
pb = -pc * ps;
|
||||
pd = pa * ps;
|
||||
s = ABS(pa * pd - pb * pc) / (pa * pa + pc * pc);
|
||||
sa = pa / bone->skeleton->scaleX;
|
||||
sc = pc / bone->skeleton->scaleY;
|
||||
pb = -sc * s * bone->skeleton->scaleX;
|
||||
pd = sa * s * bone->skeleton->scaleY;
|
||||
rotationIK += ATAN2(sc, sa) * RAD_DEG;
|
||||
}
|
||||
default: {
|
||||
float x = targetX - p->worldX, y = targetY - p->worldY;
|
||||
|
||||
@ -56,10 +56,12 @@ void IkConstraint::apply(Bone &bone, float targetX, float targetY, bool compress
|
||||
ty = targetY - bone._worldY;
|
||||
break;
|
||||
case TransformMode_NoRotationOrReflection: {
|
||||
rotationIK += MathUtil::atan2(pc, pa) * MathUtil::Rad_Deg;
|
||||
float ps = MathUtil::abs(pa * pd - pb * pc) / (pa * pa + pc * pc);
|
||||
pb = -pc * ps;
|
||||
pd = pa * ps;
|
||||
float s = MathUtil::abs(pa * pd - pb * pc) / (pa * pa + pc * pc);
|
||||
float sa = pa / bone._skeleton.getScaleX();
|
||||
float sc = pc / bone._skeleton.getScaleY();
|
||||
pb = -sc * s * bone._skeleton.getScaleX();
|
||||
pd = sa * s * bone._skeleton.getScaleY();
|
||||
rotationIK += MathUtil::atan2(sc, sa) * MathUtil::Rad_Deg;
|
||||
}
|
||||
default:
|
||||
float x = targetX - p->_worldX, y = targetY - p->_worldY;
|
||||
|
||||
@ -170,18 +170,16 @@ namespace Spine {
|
||||
ty = targetY - bone.worldY;
|
||||
break;
|
||||
case TransformMode.NoRotationOrReflection: {
|
||||
rotationIK += (float)Math.Atan2(pc, pa) * MathUtils.RadDeg;
|
||||
float ps = Math.Abs(pa * pd - pb * pc) / (pa * pa + pc * pc);
|
||||
pb = -pc * ps;
|
||||
pd = pa * ps;
|
||||
float x = targetX - p.worldX, y = targetY - p.worldY;
|
||||
float d = pa * pd - pb * pc;
|
||||
tx = (x * pd - y * pb) / d - bone.ax;
|
||||
ty = (y * pa - x * pc) / d - bone.ay;
|
||||
break;
|
||||
}
|
||||
float s = Math.Abs(pa * pd - pb * pc) / (pa * pa + pc * pc);
|
||||
float sa = pa / bone.skeleton.ScaleX;
|
||||
float sc = pc / bone.skeleton.ScaleY;
|
||||
pb = -sc * s * bone.skeleton.ScaleX;
|
||||
pd = sa * s * bone.skeleton.ScaleY;
|
||||
rotationIK += (float)Math.Atan2(pc, pa) * MathUtils.RadDeg;
|
||||
goto default; // Fall through.
|
||||
}
|
||||
default: {
|
||||
float x = targetX - p.worldX, y = targetY - p.worldY;
|
||||
float x = targetX - p.worldX, y = targetY - p.worldY;
|
||||
float d = pa * pd - pb * pc;
|
||||
tx = (x * pd - y * pb) / d - bone.ax;
|
||||
ty = (y * pa - x * pc) / d - bone.ay;
|
||||
|
||||
@ -185,10 +185,12 @@ public class IkConstraint implements Updatable {
|
||||
ty = targetY - bone.worldY;
|
||||
break;
|
||||
case noRotationOrReflection:
|
||||
rotationIK += atan2(pc, pa) * radDeg;
|
||||
float ps = Math.abs(pa * pd - pb * pc) / (pa * pa + pc * pc);
|
||||
pb = -pc * ps;
|
||||
pd = pa * ps;
|
||||
float s = Math.abs(pa * pd - pb * pc) / (pa * pa + pc * pc);
|
||||
float sa = pa / bone.skeleton.scaleX;
|
||||
float sc = pc / bone.skeleton.scaleY;
|
||||
pb = -sc * s * bone.skeleton.scaleX;
|
||||
pd = sa * s * bone.skeleton.scaleY;
|
||||
rotationIK += atan2(sc, sa) * radDeg;
|
||||
// Fall through.
|
||||
default:
|
||||
float x = targetX - p.worldX, y = targetY - p.worldY;
|
||||
|
||||
@ -102,10 +102,14 @@ function IkConstraint:apply1 (bone, targetX, targetY, compress, stretch, uniform
|
||||
tx = targetX - bone.worldX
|
||||
ty = targetY - bone.worldY
|
||||
elseif bone.data.transformMode == TransformMode.noRotationOrReflection then
|
||||
rotationIK = rotationIK + Math.atan2(pc, pa) * MathUtils.radDeg
|
||||
local ps = Math.abs(pa * pd - pb * pc) / (pa * pa + pc * pc)
|
||||
pb = -pc * ps
|
||||
pd = pa * ps
|
||||
local s = math_abs(pa * pd - pb * pc) / (pa * pa + pc * pc);
|
||||
local sa = pa / bone.skeleton.scaleX;
|
||||
local sc = pc / bone.skeleton.scaleY;
|
||||
pb = -sc * s * bone.skeleton.scaleX;
|
||||
pd = sa * s * bone.skeleton.scaleY;
|
||||
rotationIK = rotationIK + math_deg(math_atan2(sc, sa));
|
||||
|
||||
|
||||
local x = targetX - p.worldX
|
||||
local y = targetY - p.worldY
|
||||
local d = pa * pd - pb * pc
|
||||
|
||||
Binary file not shown.
@ -2844,10 +2844,12 @@ var spine;
|
||||
ty = targetY - bone.worldY;
|
||||
break;
|
||||
case spine.TransformMode.NoRotationOrReflection:
|
||||
rotationIK += Math.atan2(pc, pa) * spine.MathUtils.radDeg;
|
||||
var ps = Math.abs(pa * pd - pb * pc) / (pa * pa + pc * pc);
|
||||
pb = -pc * ps;
|
||||
pd = pa * ps;
|
||||
var s = Math.abs(pa * pd - pb * pc) / (pa * pa + pc * pc);
|
||||
var sa = pa / bone.skeleton.scaleX;
|
||||
var sc = pc / bone.skeleton.scaleY;
|
||||
pb = -sc * s * bone.skeleton.scaleX;
|
||||
pd = sa * s * bone.skeleton.scaleY;
|
||||
rotationIK += Math.atan2(sc, sa) * spine.MathUtils.radDeg;
|
||||
default:
|
||||
var x = targetX - p.worldX, y = targetY - p.worldY;
|
||||
var d = pa * pd - pb * pc;
|
||||
|
||||
File diff suppressed because one or more lines are too long
@ -2844,10 +2844,12 @@ var spine;
|
||||
ty = targetY - bone.worldY;
|
||||
break;
|
||||
case spine.TransformMode.NoRotationOrReflection:
|
||||
rotationIK += Math.atan2(pc, pa) * spine.MathUtils.radDeg;
|
||||
var ps = Math.abs(pa * pd - pb * pc) / (pa * pa + pc * pc);
|
||||
pb = -pc * ps;
|
||||
pd = pa * ps;
|
||||
var s = Math.abs(pa * pd - pb * pc) / (pa * pa + pc * pc);
|
||||
var sa = pa / bone.skeleton.scaleX;
|
||||
var sc = pc / bone.skeleton.scaleY;
|
||||
pb = -sc * s * bone.skeleton.scaleX;
|
||||
pd = sa * s * bone.skeleton.scaleY;
|
||||
rotationIK += Math.atan2(sc, sa) * spine.MathUtils.radDeg;
|
||||
default:
|
||||
var x = targetX - p.worldX, y = targetY - p.worldY;
|
||||
var d = pa * pd - pb * pc;
|
||||
|
||||
File diff suppressed because one or more lines are too long
@ -2844,10 +2844,12 @@ var spine;
|
||||
ty = targetY - bone.worldY;
|
||||
break;
|
||||
case spine.TransformMode.NoRotationOrReflection:
|
||||
rotationIK += Math.atan2(pc, pa) * spine.MathUtils.radDeg;
|
||||
var ps = Math.abs(pa * pd - pb * pc) / (pa * pa + pc * pc);
|
||||
pb = -pc * ps;
|
||||
pd = pa * ps;
|
||||
var s = Math.abs(pa * pd - pb * pc) / (pa * pa + pc * pc);
|
||||
var sa = pa / bone.skeleton.scaleX;
|
||||
var sc = pc / bone.skeleton.scaleY;
|
||||
pb = -sc * s * bone.skeleton.scaleX;
|
||||
pd = sa * s * bone.skeleton.scaleY;
|
||||
rotationIK += Math.atan2(sc, sa) * spine.MathUtils.radDeg;
|
||||
default:
|
||||
var x = targetX - p.worldX, y = targetY - p.worldY;
|
||||
var d = pa * pd - pb * pc;
|
||||
|
||||
File diff suppressed because one or more lines are too long
@ -2844,10 +2844,12 @@ var spine;
|
||||
ty = targetY - bone.worldY;
|
||||
break;
|
||||
case spine.TransformMode.NoRotationOrReflection:
|
||||
rotationIK += Math.atan2(pc, pa) * spine.MathUtils.radDeg;
|
||||
var ps = Math.abs(pa * pd - pb * pc) / (pa * pa + pc * pc);
|
||||
pb = -pc * ps;
|
||||
pd = pa * ps;
|
||||
var s = Math.abs(pa * pd - pb * pc) / (pa * pa + pc * pc);
|
||||
var sa = pa / bone.skeleton.scaleX;
|
||||
var sc = pc / bone.skeleton.scaleY;
|
||||
pb = -sc * s * bone.skeleton.scaleX;
|
||||
pd = sa * s * bone.skeleton.scaleY;
|
||||
rotationIK += Math.atan2(sc, sa) * spine.MathUtils.radDeg;
|
||||
default:
|
||||
var x = targetX - p.worldX, y = targetY - p.worldY;
|
||||
var d = pa * pd - pb * pc;
|
||||
|
||||
File diff suppressed because one or more lines are too long
@ -2844,10 +2844,12 @@ var spine;
|
||||
ty = targetY - bone.worldY;
|
||||
break;
|
||||
case spine.TransformMode.NoRotationOrReflection:
|
||||
rotationIK += Math.atan2(pc, pa) * spine.MathUtils.radDeg;
|
||||
var ps = Math.abs(pa * pd - pb * pc) / (pa * pa + pc * pc);
|
||||
pb = -pc * ps;
|
||||
pd = pa * ps;
|
||||
var s = Math.abs(pa * pd - pb * pc) / (pa * pa + pc * pc);
|
||||
var sa = pa / bone.skeleton.scaleX;
|
||||
var sc = pc / bone.skeleton.scaleY;
|
||||
pb = -sc * s * bone.skeleton.scaleX;
|
||||
pd = sa * s * bone.skeleton.scaleY;
|
||||
rotationIK += Math.atan2(sc, sa) * spine.MathUtils.radDeg;
|
||||
default:
|
||||
var x = targetX - p.worldX, y = targetY - p.worldY;
|
||||
var d = pa * pd - pb * pc;
|
||||
|
||||
File diff suppressed because one or more lines are too long
@ -2844,10 +2844,12 @@ var spine;
|
||||
ty = targetY - bone.worldY;
|
||||
break;
|
||||
case spine.TransformMode.NoRotationOrReflection:
|
||||
rotationIK += Math.atan2(pc, pa) * spine.MathUtils.radDeg;
|
||||
var ps = Math.abs(pa * pd - pb * pc) / (pa * pa + pc * pc);
|
||||
pb = -pc * ps;
|
||||
pd = pa * ps;
|
||||
var s = Math.abs(pa * pd - pb * pc) / (pa * pa + pc * pc);
|
||||
var sa = pa / bone.skeleton.scaleX;
|
||||
var sc = pc / bone.skeleton.scaleY;
|
||||
pb = -sc * s * bone.skeleton.scaleX;
|
||||
pd = sa * s * bone.skeleton.scaleY;
|
||||
rotationIK += Math.atan2(sc, sa) * spine.MathUtils.radDeg;
|
||||
default:
|
||||
var x = targetX - p.worldX, y = targetY - p.worldY;
|
||||
var d = pa * pd - pb * pc;
|
||||
|
||||
File diff suppressed because one or more lines are too long
@ -112,10 +112,12 @@ module spine {
|
||||
ty = targetY - bone.worldY;
|
||||
break;
|
||||
case TransformMode.NoRotationOrReflection:
|
||||
rotationIK += Math.atan2(pc, pa) * MathUtils.radDeg;
|
||||
let ps = Math.abs(pa * pd - pb * pc) / (pa * pa + pc * pc);
|
||||
pb = -pc * ps;
|
||||
pd = pa * ps;
|
||||
let s = Math.abs(pa * pd - pb * pc) / (pa * pa + pc * pc);
|
||||
let sa = pa / bone.skeleton.scaleX;
|
||||
let sc = pc / bone.skeleton.scaleY;
|
||||
pb = -sc * s * bone.skeleton.scaleX;
|
||||
pd = sa * s * bone.skeleton.scaleY;
|
||||
rotationIK += Math.atan2(sc, sa) * MathUtils.radDeg;
|
||||
// Fall through
|
||||
default:
|
||||
let x = targetX - p.worldX, y = targetY - p.worldY;
|
||||
|
||||
@ -355,7 +355,7 @@ namespace Spine.Unity {
|
||||
#if UNITY_EDITOR && NEW_PREFAB_SYSTEM
|
||||
// Don't store mesh or material at the prefab, otherwise it will permanently reload
|
||||
var prefabType = UnityEditor.PrefabUtility.GetPrefabAssetType(this);
|
||||
if (!UnityEditor.PrefabUtility.IsPartOfPrefabInstance(this) &&
|
||||
if (UnityEditor.PrefabUtility.IsPartOfPrefabAsset(this) &&
|
||||
(prefabType == UnityEditor.PrefabAssetType.Regular || prefabType == UnityEditor.PrefabAssetType.Variant)) {
|
||||
return;
|
||||
}
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user