From 89da80d25fcdd747d88d037afb1cb170ee2c1e2b Mon Sep 17 00:00:00 2001 From: Mario Zechner Date: Sun, 22 Dec 2019 18:09:02 +0100 Subject: [PATCH] [csharp] Fixed errors in IKConstraint.cs. --- spine-csharp/src/IkConstraint.cs | 35 +++++++++++++++++++++----------- 1 file changed, 23 insertions(+), 12 deletions(-) diff --git a/spine-csharp/src/IkConstraint.cs b/spine-csharp/src/IkConstraint.cs index b9a03c236..baaae712a 100644 --- a/spine-csharp/src/IkConstraint.cs +++ b/spine-csharp/src/IkConstraint.cs @@ -169,17 +169,24 @@ namespace Spine { tx = targetX - bone.worldX; ty = targetY - bone.worldY; break; - case TransformMode.NoRotationOrReflection: - rotationIK += Math.Atan2(pc, pa) * MathUtils.radDeg; - float ps = Math.Abs(pa * pd - pb * pc) / (pa * pa + pc * pc); - pb = -pc * ps; - pd = pa * ps; - // Fall through - default: - let x = targetX - p.worldX, y = targetY - p.worldY; - let d = pa * pd - pb * pc; - tx = (x * pd - y * pb) / d - bone.ax; - ty = (y * pa - x * pc) / d - bone.ay; + 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; + } + default: { + 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; + } } rotationIK += (float)Math.Atan2(ty, tx) * MathUtils.RadDeg; @@ -193,9 +200,13 @@ namespace Spine { if (compress || stretch) { switch (bone.data.transformMode) { case TransformMode.NoScale: - case TransformMode.NoScaleOrReflection: + tx = targetX - bone.worldX; + ty = targetY - bone.worldY; + break; + case TransformMode.NoScaleOrReflection: tx = targetX - bone.worldX; ty = targetY - bone.worldY; + break; } float b = bone.data.length * sx, dd = (float)Math.Sqrt(tx * tx + ty * ty); if ((compress && dd < b) || (stretch && dd > b) && b > 0.0001f) {