diff options
author | RĂ©mi Verschelde <rverschelde@gmail.com> | 2019-09-03 12:00:56 +0200 |
---|---|---|
committer | GitHub <noreply@github.com> | 2019-09-03 12:00:56 +0200 |
commit | 40a9cc66a983611dbfac4c3b00964c730f9f3d15 (patch) | |
tree | 34b2d219a64ce0e7d3931278405d2889a0aeb644 /modules | |
parent | 4c169352a61fc97eff65867017910c94a6dbfde3 (diff) | |
parent | f8b4cf0fc41b40601d90a44bd6d348a6c1e11fe5 (diff) |
Merge pull request #31871 from aaronfranke/equal-approx-inf
Check for exact equality before approximate equality
Diffstat (limited to 'modules')
-rw-r--r-- | modules/mono/glue/Managed/Files/Mathf.cs | 5 | ||||
-rw-r--r-- | modules/mono/glue/Managed/Files/MathfEx.cs | 7 |
2 files changed, 11 insertions, 1 deletions
diff --git a/modules/mono/glue/Managed/Files/Mathf.cs b/modules/mono/glue/Managed/Files/Mathf.cs index 15adf0a13b..ce34cd6a99 100644 --- a/modules/mono/glue/Managed/Files/Mathf.cs +++ b/modules/mono/glue/Managed/Files/Mathf.cs @@ -158,6 +158,11 @@ namespace Godot public static bool IsEqualApprox(real_t a, real_t b) { + // Check for exact equality first, required to handle "infinity" values. + if (a == b) { + return true; + } + // Then check for approximate equality. real_t tolerance = Epsilon * Abs(a); if (tolerance < Epsilon) { tolerance = Epsilon; diff --git a/modules/mono/glue/Managed/Files/MathfEx.cs b/modules/mono/glue/Managed/Files/MathfEx.cs index b96f01bc2e..6cffc7f01d 100644 --- a/modules/mono/glue/Managed/Files/MathfEx.cs +++ b/modules/mono/glue/Managed/Files/MathfEx.cs @@ -48,7 +48,12 @@ namespace Godot public static bool IsEqualApprox(real_t a, real_t b, real_t tolerance) { + // Check for exact equality first, required to handle "infinity" values. + if (a == b) { + return true; + } + // Then check for approximate equality. return Abs(a - b) < tolerance; } } -}
\ No newline at end of file +} |