From b17595db8a124f729bf02ccfdbf6c5fb977ca783 Mon Sep 17 00:00:00 2001 From: Harald Csaszar Date: Tue, 6 Aug 2024 18:22:54 +0200 Subject: [PATCH] [csharp] Port of commit 853b5ee. Fix NaN in IKConstraint due to fp precision. dd - r * r might result in a negative value, even if dd == r * r, depending on compiler optimizations and operation order. --- spine-csharp/src/IkConstraint.cs | 2 +- spine-csharp/src/package.json | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/spine-csharp/src/IkConstraint.cs b/spine-csharp/src/IkConstraint.cs index bc92980da..e8a72c8f9 100644 --- a/spine-csharp/src/IkConstraint.cs +++ b/spine-csharp/src/IkConstraint.cs @@ -328,7 +328,7 @@ namespace Spine { q = -(c1 + q) * 0.5f; float r0 = q / c2, r1 = c / q; float r = Math.Abs(r0) < Math.Abs(r1) ? r0 : r1; - if (r * r <= dd) { + if (dd - r * r >= 0) { y = (float)Math.Sqrt(dd - r * r) * bendDir; a1 = ta - (float)Math.Atan2(y, r); a2 = (float)Math.Atan2(y / psy, (r - l1) / psx); diff --git a/spine-csharp/src/package.json b/spine-csharp/src/package.json index 745676354..6a83e51bb 100644 --- a/spine-csharp/src/package.json +++ b/spine-csharp/src/package.json @@ -2,7 +2,7 @@ "name": "com.esotericsoftware.spine.spine-csharp", "displayName": "spine-csharp Runtime", "description": "This plugin provides the spine-csharp core runtime.", - "version": "4.2.28", + "version": "4.2.29", "unity": "2018.3", "author": { "name": "Esoteric Software",