mirror of
https://github.com/EsotericSoftware/spine-runtimes.git
synced 2026-03-26 22:49:01 +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;
|
ty = targetY - bone.worldY;
|
||||||
break;
|
break;
|
||||||
case TransformMode.noRotationOrReflection:
|
case TransformMode.noRotationOrReflection:
|
||||||
rotationIK += Math.atan2(pc, pa) * MathUtils.radDeg;
|
var s : Number = Math.abs(pa * pd - pb * pc) / (pa * pa + pc * pc);
|
||||||
var ps : Number = Math.abs(pa * pd - pb * pc) / (pa * pa + pc * pc);
|
var sa : Number = pa / bone.skeleton.scaleX;
|
||||||
pb = -pc * ps;
|
var sc : Number = pc / bone.skeleton.scaleY;
|
||||||
pd = pa * ps;
|
pb = -sc * s * bone.skeleton.scaleX;
|
||||||
|
pd = sa * s * bone.skeleton.scaleY;
|
||||||
|
rotationIK += Math.atan2(sc, sa) * MathUtils.radDeg;
|
||||||
|
// Fall through.
|
||||||
default:
|
default:
|
||||||
var x : Number = targetX - p.worldX, y : Number = targetY - p.worldY;
|
var x : Number = targetX - p.worldX, y : Number = targetY - p.worldY;
|
||||||
var d : Number = pa * pd - pb * pc;
|
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;
|
spBone* p = bone->parent;
|
||||||
float pa = p->a, pb = p->b, pc = p->c, pd = p->d;
|
float pa = p->a, pb = p->b, pc = p->c, pd = p->d;
|
||||||
float rotationIK = -bone->ashearX - bone->arotation;
|
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);
|
if (!bone->appliedValid) spBone_updateAppliedTransform(bone);
|
||||||
|
|
||||||
switch(bone->data->transformMode) {
|
switch(bone->data->transformMode) {
|
||||||
@ -81,11 +81,12 @@ void spIkConstraint_apply1 (spBone* bone, float targetX, float targetY, int /*bo
|
|||||||
ty = targetY - bone->worldY;
|
ty = targetY - bone->worldY;
|
||||||
break;
|
break;
|
||||||
case SP_TRANSFORMMODE_NOROTATIONORREFLECTION: {
|
case SP_TRANSFORMMODE_NOROTATIONORREFLECTION: {
|
||||||
float ps;
|
s = ABS(pa * pd - pb * pc) / (pa * pa + pc * pc);
|
||||||
rotationIK += ATAN2(pc, pa) * RAD_DEG;
|
sa = pa / bone->skeleton->scaleX;
|
||||||
ps = ABS(pa * pd - pb * pc) / (pa * pa + pc * pc);
|
sc = pc / bone->skeleton->scaleY;
|
||||||
pb = -pc * ps;
|
pb = -sc * s * bone->skeleton->scaleX;
|
||||||
pd = pa * ps;
|
pd = sa * s * bone->skeleton->scaleY;
|
||||||
|
rotationIK += ATAN2(sc, sa) * RAD_DEG;
|
||||||
}
|
}
|
||||||
default: {
|
default: {
|
||||||
float x = targetX - p->worldX, y = targetY - p->worldY;
|
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;
|
ty = targetY - bone._worldY;
|
||||||
break;
|
break;
|
||||||
case TransformMode_NoRotationOrReflection: {
|
case TransformMode_NoRotationOrReflection: {
|
||||||
rotationIK += MathUtil::atan2(pc, pa) * MathUtil::Rad_Deg;
|
float s = MathUtil::abs(pa * pd - pb * pc) / (pa * pa + pc * pc);
|
||||||
float ps = MathUtil::abs(pa * pd - pb * pc) / (pa * pa + pc * pc);
|
float sa = pa / bone._skeleton.getScaleX();
|
||||||
pb = -pc * ps;
|
float sc = pc / bone._skeleton.getScaleY();
|
||||||
pd = pa * ps;
|
pb = -sc * s * bone._skeleton.getScaleX();
|
||||||
|
pd = sa * s * bone._skeleton.getScaleY();
|
||||||
|
rotationIK += MathUtil::atan2(sc, sa) * MathUtil::Rad_Deg;
|
||||||
}
|
}
|
||||||
default:
|
default:
|
||||||
float x = targetX - p->_worldX, y = targetY - p->_worldY;
|
float x = targetX - p->_worldX, y = targetY - p->_worldY;
|
||||||
|
|||||||
@ -170,18 +170,16 @@ namespace Spine {
|
|||||||
ty = targetY - bone.worldY;
|
ty = targetY - bone.worldY;
|
||||||
break;
|
break;
|
||||||
case TransformMode.NoRotationOrReflection: {
|
case TransformMode.NoRotationOrReflection: {
|
||||||
rotationIK += (float)Math.Atan2(pc, pa) * MathUtils.RadDeg;
|
float s = Math.Abs(pa * pd - pb * pc) / (pa * pa + pc * pc);
|
||||||
float ps = Math.Abs(pa * pd - pb * pc) / (pa * pa + pc * pc);
|
float sa = pa / bone.skeleton.ScaleX;
|
||||||
pb = -pc * ps;
|
float sc = pc / bone.skeleton.ScaleY;
|
||||||
pd = pa * ps;
|
pb = -sc * s * bone.skeleton.ScaleX;
|
||||||
float x = targetX - p.worldX, y = targetY - p.worldY;
|
pd = sa * s * bone.skeleton.ScaleY;
|
||||||
float d = pa * pd - pb * pc;
|
rotationIK += (float)Math.Atan2(pc, pa) * MathUtils.RadDeg;
|
||||||
tx = (x * pd - y * pb) / d - bone.ax;
|
goto default; // Fall through.
|
||||||
ty = (y * pa - x * pc) / d - bone.ay;
|
}
|
||||||
break;
|
|
||||||
}
|
|
||||||
default: {
|
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;
|
float d = pa * pd - pb * pc;
|
||||||
tx = (x * pd - y * pb) / d - bone.ax;
|
tx = (x * pd - y * pb) / d - bone.ax;
|
||||||
ty = (y * pa - x * pc) / d - bone.ay;
|
ty = (y * pa - x * pc) / d - bone.ay;
|
||||||
|
|||||||
@ -185,10 +185,12 @@ public class IkConstraint implements Updatable {
|
|||||||
ty = targetY - bone.worldY;
|
ty = targetY - bone.worldY;
|
||||||
break;
|
break;
|
||||||
case noRotationOrReflection:
|
case noRotationOrReflection:
|
||||||
rotationIK += atan2(pc, pa) * radDeg;
|
float s = Math.abs(pa * pd - pb * pc) / (pa * pa + pc * pc);
|
||||||
float ps = Math.abs(pa * pd - pb * pc) / (pa * pa + pc * pc);
|
float sa = pa / bone.skeleton.scaleX;
|
||||||
pb = -pc * ps;
|
float sc = pc / bone.skeleton.scaleY;
|
||||||
pd = pa * ps;
|
pb = -sc * s * bone.skeleton.scaleX;
|
||||||
|
pd = sa * s * bone.skeleton.scaleY;
|
||||||
|
rotationIK += atan2(sc, sa) * radDeg;
|
||||||
// Fall through.
|
// Fall through.
|
||||||
default:
|
default:
|
||||||
float x = targetX - p.worldX, y = targetY - p.worldY;
|
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
|
tx = targetX - bone.worldX
|
||||||
ty = targetY - bone.worldY
|
ty = targetY - bone.worldY
|
||||||
elseif bone.data.transformMode == TransformMode.noRotationOrReflection then
|
elseif bone.data.transformMode == TransformMode.noRotationOrReflection then
|
||||||
rotationIK = rotationIK + Math.atan2(pc, pa) * MathUtils.radDeg
|
local s = math_abs(pa * pd - pb * pc) / (pa * pa + pc * pc);
|
||||||
local ps = Math.abs(pa * pd - pb * pc) / (pa * pa + pc * pc)
|
local sa = pa / bone.skeleton.scaleX;
|
||||||
pb = -pc * ps
|
local sc = pc / bone.skeleton.scaleY;
|
||||||
pd = pa * ps
|
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 x = targetX - p.worldX
|
||||||
local y = targetY - p.worldY
|
local y = targetY - p.worldY
|
||||||
local d = pa * pd - pb * pc
|
local d = pa * pd - pb * pc
|
||||||
|
|||||||
Binary file not shown.
@ -2844,10 +2844,12 @@ var spine;
|
|||||||
ty = targetY - bone.worldY;
|
ty = targetY - bone.worldY;
|
||||||
break;
|
break;
|
||||||
case spine.TransformMode.NoRotationOrReflection:
|
case spine.TransformMode.NoRotationOrReflection:
|
||||||
rotationIK += Math.atan2(pc, pa) * spine.MathUtils.radDeg;
|
var s = Math.abs(pa * pd - pb * pc) / (pa * pa + pc * pc);
|
||||||
var ps = Math.abs(pa * pd - pb * pc) / (pa * pa + pc * pc);
|
var sa = pa / bone.skeleton.scaleX;
|
||||||
pb = -pc * ps;
|
var sc = pc / bone.skeleton.scaleY;
|
||||||
pd = pa * ps;
|
pb = -sc * s * bone.skeleton.scaleX;
|
||||||
|
pd = sa * s * bone.skeleton.scaleY;
|
||||||
|
rotationIK += Math.atan2(sc, sa) * spine.MathUtils.radDeg;
|
||||||
default:
|
default:
|
||||||
var x = targetX - p.worldX, y = targetY - p.worldY;
|
var x = targetX - p.worldX, y = targetY - p.worldY;
|
||||||
var d = pa * pd - pb * pc;
|
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;
|
ty = targetY - bone.worldY;
|
||||||
break;
|
break;
|
||||||
case spine.TransformMode.NoRotationOrReflection:
|
case spine.TransformMode.NoRotationOrReflection:
|
||||||
rotationIK += Math.atan2(pc, pa) * spine.MathUtils.radDeg;
|
var s = Math.abs(pa * pd - pb * pc) / (pa * pa + pc * pc);
|
||||||
var ps = Math.abs(pa * pd - pb * pc) / (pa * pa + pc * pc);
|
var sa = pa / bone.skeleton.scaleX;
|
||||||
pb = -pc * ps;
|
var sc = pc / bone.skeleton.scaleY;
|
||||||
pd = pa * ps;
|
pb = -sc * s * bone.skeleton.scaleX;
|
||||||
|
pd = sa * s * bone.skeleton.scaleY;
|
||||||
|
rotationIK += Math.atan2(sc, sa) * spine.MathUtils.radDeg;
|
||||||
default:
|
default:
|
||||||
var x = targetX - p.worldX, y = targetY - p.worldY;
|
var x = targetX - p.worldX, y = targetY - p.worldY;
|
||||||
var d = pa * pd - pb * pc;
|
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;
|
ty = targetY - bone.worldY;
|
||||||
break;
|
break;
|
||||||
case spine.TransformMode.NoRotationOrReflection:
|
case spine.TransformMode.NoRotationOrReflection:
|
||||||
rotationIK += Math.atan2(pc, pa) * spine.MathUtils.radDeg;
|
var s = Math.abs(pa * pd - pb * pc) / (pa * pa + pc * pc);
|
||||||
var ps = Math.abs(pa * pd - pb * pc) / (pa * pa + pc * pc);
|
var sa = pa / bone.skeleton.scaleX;
|
||||||
pb = -pc * ps;
|
var sc = pc / bone.skeleton.scaleY;
|
||||||
pd = pa * ps;
|
pb = -sc * s * bone.skeleton.scaleX;
|
||||||
|
pd = sa * s * bone.skeleton.scaleY;
|
||||||
|
rotationIK += Math.atan2(sc, sa) * spine.MathUtils.radDeg;
|
||||||
default:
|
default:
|
||||||
var x = targetX - p.worldX, y = targetY - p.worldY;
|
var x = targetX - p.worldX, y = targetY - p.worldY;
|
||||||
var d = pa * pd - pb * pc;
|
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;
|
ty = targetY - bone.worldY;
|
||||||
break;
|
break;
|
||||||
case spine.TransformMode.NoRotationOrReflection:
|
case spine.TransformMode.NoRotationOrReflection:
|
||||||
rotationIK += Math.atan2(pc, pa) * spine.MathUtils.radDeg;
|
var s = Math.abs(pa * pd - pb * pc) / (pa * pa + pc * pc);
|
||||||
var ps = Math.abs(pa * pd - pb * pc) / (pa * pa + pc * pc);
|
var sa = pa / bone.skeleton.scaleX;
|
||||||
pb = -pc * ps;
|
var sc = pc / bone.skeleton.scaleY;
|
||||||
pd = pa * ps;
|
pb = -sc * s * bone.skeleton.scaleX;
|
||||||
|
pd = sa * s * bone.skeleton.scaleY;
|
||||||
|
rotationIK += Math.atan2(sc, sa) * spine.MathUtils.radDeg;
|
||||||
default:
|
default:
|
||||||
var x = targetX - p.worldX, y = targetY - p.worldY;
|
var x = targetX - p.worldX, y = targetY - p.worldY;
|
||||||
var d = pa * pd - pb * pc;
|
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;
|
ty = targetY - bone.worldY;
|
||||||
break;
|
break;
|
||||||
case spine.TransformMode.NoRotationOrReflection:
|
case spine.TransformMode.NoRotationOrReflection:
|
||||||
rotationIK += Math.atan2(pc, pa) * spine.MathUtils.radDeg;
|
var s = Math.abs(pa * pd - pb * pc) / (pa * pa + pc * pc);
|
||||||
var ps = Math.abs(pa * pd - pb * pc) / (pa * pa + pc * pc);
|
var sa = pa / bone.skeleton.scaleX;
|
||||||
pb = -pc * ps;
|
var sc = pc / bone.skeleton.scaleY;
|
||||||
pd = pa * ps;
|
pb = -sc * s * bone.skeleton.scaleX;
|
||||||
|
pd = sa * s * bone.skeleton.scaleY;
|
||||||
|
rotationIK += Math.atan2(sc, sa) * spine.MathUtils.radDeg;
|
||||||
default:
|
default:
|
||||||
var x = targetX - p.worldX, y = targetY - p.worldY;
|
var x = targetX - p.worldX, y = targetY - p.worldY;
|
||||||
var d = pa * pd - pb * pc;
|
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;
|
ty = targetY - bone.worldY;
|
||||||
break;
|
break;
|
||||||
case spine.TransformMode.NoRotationOrReflection:
|
case spine.TransformMode.NoRotationOrReflection:
|
||||||
rotationIK += Math.atan2(pc, pa) * spine.MathUtils.radDeg;
|
var s = Math.abs(pa * pd - pb * pc) / (pa * pa + pc * pc);
|
||||||
var ps = Math.abs(pa * pd - pb * pc) / (pa * pa + pc * pc);
|
var sa = pa / bone.skeleton.scaleX;
|
||||||
pb = -pc * ps;
|
var sc = pc / bone.skeleton.scaleY;
|
||||||
pd = pa * ps;
|
pb = -sc * s * bone.skeleton.scaleX;
|
||||||
|
pd = sa * s * bone.skeleton.scaleY;
|
||||||
|
rotationIK += Math.atan2(sc, sa) * spine.MathUtils.radDeg;
|
||||||
default:
|
default:
|
||||||
var x = targetX - p.worldX, y = targetY - p.worldY;
|
var x = targetX - p.worldX, y = targetY - p.worldY;
|
||||||
var d = pa * pd - pb * pc;
|
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;
|
ty = targetY - bone.worldY;
|
||||||
break;
|
break;
|
||||||
case TransformMode.NoRotationOrReflection:
|
case TransformMode.NoRotationOrReflection:
|
||||||
rotationIK += Math.atan2(pc, pa) * MathUtils.radDeg;
|
let s = Math.abs(pa * pd - pb * pc) / (pa * pa + pc * pc);
|
||||||
let ps = Math.abs(pa * pd - pb * pc) / (pa * pa + pc * pc);
|
let sa = pa / bone.skeleton.scaleX;
|
||||||
pb = -pc * ps;
|
let sc = pc / bone.skeleton.scaleY;
|
||||||
pd = pa * ps;
|
pb = -sc * s * bone.skeleton.scaleX;
|
||||||
|
pd = sa * s * bone.skeleton.scaleY;
|
||||||
|
rotationIK += Math.atan2(sc, sa) * MathUtils.radDeg;
|
||||||
// Fall through
|
// Fall through
|
||||||
default:
|
default:
|
||||||
let x = targetX - p.worldX, y = targetY - p.worldY;
|
let x = targetX - p.worldX, y = targetY - p.worldY;
|
||||||
|
|||||||
@ -355,7 +355,7 @@ namespace Spine.Unity {
|
|||||||
#if UNITY_EDITOR && NEW_PREFAB_SYSTEM
|
#if UNITY_EDITOR && NEW_PREFAB_SYSTEM
|
||||||
// Don't store mesh or material at the prefab, otherwise it will permanently reload
|
// Don't store mesh or material at the prefab, otherwise it will permanently reload
|
||||||
var prefabType = UnityEditor.PrefabUtility.GetPrefabAssetType(this);
|
var prefabType = UnityEditor.PrefabUtility.GetPrefabAssetType(this);
|
||||||
if (!UnityEditor.PrefabUtility.IsPartOfPrefabInstance(this) &&
|
if (UnityEditor.PrefabUtility.IsPartOfPrefabAsset(this) &&
|
||||||
(prefabType == UnityEditor.PrefabAssetType.Regular || prefabType == UnityEditor.PrefabAssetType.Variant)) {
|
(prefabType == UnityEditor.PrefabAssetType.Regular || prefabType == UnityEditor.PrefabAssetType.Variant)) {
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user