瀏覽代碼

[haxe] Port of commit d769c1a: Fixed noRotationOrReflection with skeleton scale.

Davide Tantillo 1 年之前
父節點
當前提交
44c7b9120a
共有 1 個文件被更改,包括 7 次插入5 次删除
  1. 7 5
      spine-haxe/spine-haxe/spine/Bone.hx

+ 7 - 5
spine-haxe/spine-haxe/spine/Bone.hx

@@ -173,10 +173,14 @@ class Bone implements Updatable {
 				c = Math.sin(rx) * scaleX;
 				c = Math.sin(rx) * scaleX;
 				d = Math.sin(ry) * scaleY;
 				d = Math.sin(ry) * scaleY;
 			case Inherit.noRotationOrReflection:
 			case Inherit.noRotationOrReflection:
+				var sx:Float = 1 / skeleton.scaleX;
+				var sy:Float = 1 / skeleton.scaleY;
+				pa *= sx;
+				pc *= sy;
 				s = pa * pa + pc * pc;
 				s = pa * pa + pc * pc;
 				var prx:Float = 0;
 				var prx:Float = 0;
 				if (s > 0.0001) {
 				if (s > 0.0001) {
-					s = Math.abs(pa * pd - pb * pc) / s;
+					s = Math.abs(pa * pd * sy - pb * sx * pc) / s;
 					pb = pc * s;
 					pb = pc * s;
 					pd = pa * s;
 					pd = pa * s;
 					prx = Math.atan2(pc, pa) * MathUtils.radDeg;
 					prx = Math.atan2(pc, pa) * MathUtils.radDeg;
@@ -280,10 +284,8 @@ class Bone implements Updatable {
 			switch (inherit) {
 			switch (inherit) {
 				case Inherit.noRotationOrReflection:
 				case Inherit.noRotationOrReflection:
 					var s:Float = Math.abs(pa * pd - pb * pc) / (pa * pa + pc * pc);
 					var s:Float = Math.abs(pa * pd - pb * pc) / (pa * pa + pc * pc);
-					var sa:Float = pa / skeleton.scaleX;
-					var sc:Float = pc / skeleton.scaleY;
-					pb = -sc * s * skeleton.scaleX;
-					pd = sa * s * skeleton.scaleY;
+					pb = -pc * skeleton.scaleX * s / skeleton.scaleY;
+					pd = pa * skeleton.scaleY * s / skeleton.scaleX;
 					pid = 1 / (pa * pd - pb * pc);
 					pid = 1 / (pa * pd - pb * pc);
 					ia = pd * pid;
 					ia = pd * pid;
 					ib = pb * pid;
 					ib = pb * pid;