diff options
author | Ignacio Etcheverry <neikeq@users.noreply.github.com> | 2019-03-07 21:34:03 +0100 |
---|---|---|
committer | GitHub <noreply@github.com> | 2019-03-07 21:34:03 +0100 |
commit | 47407ba2dfc38a65354729b39afafeb388b77fd8 (patch) | |
tree | 93e7f35de577e9d36def0b0f47fa6cda60478c32 /modules/mono | |
parent | 4c0b0a6bdd3c87220ab0d79ba647d5bdd843ce6c (diff) | |
parent | 752055ccbaf0387af3925afb2765ef76677daf3b (diff) |
Merge pull request #26761 from Chaosus/fix_mono_wrap
Fix division by zero at wrap functions in mono
Diffstat (limited to 'modules/mono')
-rw-r--r-- | modules/mono/glue/Managed/Files/Mathf.cs | 4 | ||||
-rw-r--r-- | modules/mono/glue/Managed/Files/MathfEx.cs | 5 |
2 files changed, 7 insertions, 2 deletions
diff --git a/modules/mono/glue/Managed/Files/Mathf.cs b/modules/mono/glue/Managed/Files/Mathf.cs index dcab3c1ffc..5f5de12959 100644 --- a/modules/mono/glue/Managed/Files/Mathf.cs +++ b/modules/mono/glue/Managed/Files/Mathf.cs @@ -289,13 +289,13 @@ namespace Godot public static int Wrap(int value, int min, int max) { int rng = max - min; - return min + ((value - min) % rng + rng) % rng; + return rng != 0 ? min + ((value - min) % rng + rng) % rng : min; } public static real_t Wrap(real_t value, real_t min, real_t max) { real_t rng = max - min; - return min + ((value - min) % rng + rng) % rng; + return !IsEqualApprox(rng, default(real_t)) ? min + ((value - min) % rng + rng) % rng : min; } } } diff --git a/modules/mono/glue/Managed/Files/MathfEx.cs b/modules/mono/glue/Managed/Files/MathfEx.cs index 2ef02cc288..414762f7b1 100644 --- a/modules/mono/glue/Managed/Files/MathfEx.cs +++ b/modules/mono/glue/Managed/Files/MathfEx.cs @@ -35,5 +35,10 @@ namespace Godot { return (int)Math.Round(s); } + + public static bool IsEqualApprox(real_t a, real_t b, real_t ratio = Mathf.Epsilon) + { + return Abs(a - b) < ratio; + } } }
\ No newline at end of file |