Jelajahi Sumber

[ts] Fix 1-bone IK, see #1692.

badlogic 5 tahun lalu
induk
melakukan
c64e6adbde

+ 6 - 4
spine-ts/build/spine-all.js

@@ -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 ditekan karena terlalu besar
+ 0 - 0
spine-ts/build/spine-all.js.map


+ 6 - 4
spine-ts/build/spine-canvas.js

@@ -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 ditekan karena terlalu besar
+ 0 - 0
spine-ts/build/spine-canvas.js.map


+ 6 - 4
spine-ts/build/spine-core.js

@@ -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 ditekan karena terlalu besar
+ 0 - 0
spine-ts/build/spine-core.js.map


+ 6 - 4
spine-ts/build/spine-player.js

@@ -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 ditekan karena terlalu besar
+ 0 - 0
spine-ts/build/spine-player.js.map


+ 6 - 4
spine-ts/build/spine-threejs.js

@@ -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 ditekan karena terlalu besar
+ 0 - 0
spine-ts/build/spine-threejs.js.map


+ 6 - 4
spine-ts/build/spine-webgl.js

@@ -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 ditekan karena terlalu besar
+ 0 - 0
spine-ts/build/spine-webgl.js.map


+ 6 - 4
spine-ts/core/src/IkConstraint.ts

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

Beberapa file tidak ditampilkan karena terlalu banyak file yang berubah dalam diff ini