Преглед на файлове

Update IkConstraint.cpp (#2644)

negative sqrt protection
archilanfedorov преди 10 месеца
родител
ревизия
b03c682443
променени са 1 файла, в които са добавени 3 реда и са изтрити 2 реда
  1. 3 2
      spine-cpp/spine-cpp/src/spine/IkConstraint.cpp

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

@@ -208,8 +208,9 @@ void IkConstraint::apply(Bone &parent, Bone &child, float targetX, float targetY
 			r0 = q / c2;
 			r1 = c0 / q;
 			r = MathUtil::abs(r0) < MathUtil::abs(r1) ? r0 : r1;
-			if (r * r <= dd) {
-				y = MathUtil::sqrt(dd - r * r) * bendDir;
+			float ddrr = dd - r * r;
+			if (ddrr >= 0) {
+				y = MathUtil::sqrt(ddrr) * bendDir;
 				a1 = ta - MathUtil::atan2(y, r);
 				a2 = MathUtil::atan2(y / psy, (r - l1) / psx);
 				goto break_outer;