Merge branch '3.8' into 3.9-beta

This commit is contained in:
badlogic 2020-06-03 17:44:21 +02:00
commit 691767ca1f
22 changed files with 92 additions and 68 deletions

View File

@ -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;

View File

@ -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;

View File

@ -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;

View File

@ -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;

View File

@ -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;

View File

@ -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

View File

@ -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

View File

@ -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

View File

@ -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

View File

@ -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

View File

@ -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

View File

@ -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

View File

@ -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;

View File

@ -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;
}