Explorar o código

Fix android-specific rotation issue. bone->arotation == NaN, in some specific cases during update bones, cause squared value can been very smoll but still negative anyway and create NaN value (#2459)

Dmitriy Sechin hai 1 ano
pai
achega
0ffc316793
Modificáronse 1 ficheiros con 3 adicións e 2 borrados
  1. 3 2
      spine-c/spine-c/src/spine/IkConstraint.c

+ 3 - 2
spine-c/spine-c/src/spine/IkConstraint.c

@@ -246,8 +246,9 @@ void spIkConstraint_apply2(spBone *parent, spBone *child, float targetX, float t
 			r0 = q / c2;
 			r1 = c0 / q;
 			r = ABS(r0) < ABS(r1) ? r0 : r1;
-			if (r * r <= dd) {
-				y = SQRT(dd - r * r) * bendDir;
+			y = dd - r * r;
+			if (y > 0) {
+				y = SQRT(y) * bendDir;
 				a1 = ta - ATAN2(y, r);
 				a2 = ATAN2(y / psy, (r - l1) / psx);
 				goto break_outer;