diff options
Diffstat (limited to 'modules/mono/glue/cs_files/Mathf.cs')
| -rw-r--r-- | modules/mono/glue/cs_files/Mathf.cs | 100 | 
1 files changed, 56 insertions, 44 deletions
diff --git a/modules/mono/glue/cs_files/Mathf.cs b/modules/mono/glue/cs_files/Mathf.cs index adbcc855ef..0d20a12563 100644 --- a/modules/mono/glue/cs_files/Mathf.cs +++ b/modules/mono/glue/cs_files/Mathf.cs @@ -1,5 +1,4 @@  using System; -  #if REAL_T_IS_DOUBLE  using real_t = System.Double;  #else @@ -8,16 +7,14 @@ using real_t = System.Single;  namespace Godot  { -    public static class Mathf +    public static partial class Mathf      { -        // Define constants with Decimal precision and cast down to double or float.  -        public const real_t PI = (real_t) 3.1415926535897932384626433833M; // 3.1415927f and 3.14159265358979 +        // Define constants with Decimal precision and cast down to double or float. -        #if REAL_T_IS_DOUBLE -        public const real_t Epsilon = 1e-14; // Epsilon size should depend on the precision used. -        #else -        public const real_t Epsilon = 1e-06f; -        #endif +        public const real_t Tau = (real_t) 6.2831853071795864769252867666M; // 6.2831855f and 6.28318530717959 +        public const real_t Pi = (real_t) 3.1415926535897932384626433833M; // 3.1415927f and 3.14159265358979 +        public const real_t Inf = real_t.PositiveInfinity; +        public const real_t NaN = real_t.NaN;          private const real_t Deg2RadConst = (real_t) 0.0174532925199432957692369077M; // 0.0174532924f and 0.0174532925199433          private const real_t Rad2DegConst = (real_t) 57.295779513082320876798154814M; // 57.29578f and 57.2957795130823 @@ -27,6 +24,11 @@ namespace Godot              return Math.Abs(s);          } +        public static int Abs(int s) +        { +            return Math.Abs(s); +        } +          public static real_t Acos(real_t s)          {              return (real_t)Math.Acos(s); @@ -57,18 +59,14 @@ namespace Godot              return (real_t)Math.Ceiling(s);          } -        public static real_t Clamp(real_t val, real_t min, real_t max) +        public static int Clamp(int value, int min, int max)          { -            if (val < min) -            { -                return min; -            } -            else if (val > max) -            { -                return max; -            } +            return value < min ? min : value > max ? max : value; +        } -            return val; +        public static real_t Clamp(real_t value, real_t min, real_t max) +        { +            return value < min ? min : value > max ? max : value;          }          public static real_t Cos(real_t s) @@ -116,7 +114,8 @@ namespace Godot                  return Pow(s, curve);              } -            else if (curve < 0f) + +            if (curve < 0f)              {                  if (s < 0.5f)                  { @@ -145,10 +144,23 @@ namespace Godot              {                  return x % y;              } -            else -            { -                return y - (-x % y); -            } + +            return y - -x % y; +        } + +        public static real_t InverseLerp(real_t from, real_t to, real_t weight) +        { +           return (Clamp(weight, 0f, 1f) - from) / (to - from); +        } + +        public static bool IsInf(real_t s) +        { +           return real_t.IsInfinity(s); +        } + +        public static bool IsNaN(real_t s) +        { +           return real_t.IsNaN(s);          }          public static real_t Lerp(real_t from, real_t to, real_t weight) @@ -163,34 +175,34 @@ namespace Godot          public static int Max(int a, int b)          { -            return (a > b) ? a : b; +            return a > b ? a : b;          }          public static real_t Max(real_t a, real_t b)          { -            return (a > b) ? a : b; +            return a > b ? a : b;          }          public static int Min(int a, int b)          { -            return (a < b) ? a : b; +            return a < b ? a : b;          }          public static real_t Min(real_t a, real_t b)          { -            return (a < b) ? a : b; +            return a < b ? a : b;          } -        public static int NearestPo2(int val) +        public static int NearestPo2(int value)          { -            val--; -            val |= val >> 1; -            val |= val >> 2; -            val |= val >> 4; -            val |= val >> 8; -            val |= val >> 16; -            val++; -            return val; +            value--; +            value |= value >> 1; +            value |= value >> 2; +            value |= value >> 4; +            value |= value >> 8; +            value |= value >> 16; +            value++; +            return value;          }          public static Vector2 Polar2Cartesian(real_t r, real_t th) @@ -213,14 +225,14 @@ namespace Godot              return (real_t)Math.Round(s);          } -        public static int RoundToInt(real_t s) +        public static int Sign(int s)          { -            return (int)Math.Round(s); +            return s < 0 ? -1 : 1;          }          public static real_t Sign(real_t s)          { -            return (s < 0f) ? -1f : 1f; +            return s < 0f ? -1f : 1f;          }          public static real_t Sin(real_t s) @@ -258,16 +270,16 @@ namespace Godot              return (real_t)Math.Tanh(s);          } -        public static int Wrap(int val, int min, int max) +        public static int Wrap(int value, int min, int max)          {              int rng = max - min; -            return min + ((((val - min) % rng) + rng) % rng); +            return min + ((value - min) % rng + rng) % rng;          } -        public static real_t Wrap(real_t val, real_t min, real_t max) +        public static real_t Wrap(real_t value, real_t min, real_t max)          {              real_t rng = max - min; -            return min + (val - min) - (rng * Floor((val - min) / rng)); +            return min + ((value - min) % rng + rng) % rng;          }      }  }  |