From d00926894ee09664dfd638cc43079f03add2051d Mon Sep 17 00:00:00 2001 From: Kelly Thomas Date: Sun, 20 May 2018 18:29:54 +0800 Subject: [PATCH] mono: add Slerp method to vector classes, expose Cross method for Vector2, and fix unnecessary casts in Basis (cherry picked from commit b335274bcd6df9ad7e4ba381574fd1607f2b3437) --- modules/mono/glue/cs_files/Basis.cs | 6 +++--- modules/mono/glue/cs_files/VERSION.txt | 2 +- modules/mono/glue/cs_files/Vector2.cs | 8 +++++++- modules/mono/glue/cs_files/Vector3.cs | 6 ++++++ 4 files changed, 17 insertions(+), 5 deletions(-) diff --git a/modules/mono/glue/cs_files/Basis.cs b/modules/mono/glue/cs_files/Basis.cs index 270f3b80a2b..aa49a5e04f4 100644 --- a/modules/mono/glue/cs_files/Basis.cs +++ b/modules/mono/glue/cs_files/Basis.cs @@ -453,15 +453,15 @@ namespace Godot c = Mathf.Cos(euler.x); s = Mathf.Sin(euler.x); - var xmat = new Basis((real_t)1.0, (real_t)0.0, (real_t)0.0, (real_t)0.0, c, -s, (real_t)0.0, s, c); + var xmat = new Basis(1, 0, 0, 0, c, -s, 0, s, c); c = Mathf.Cos(euler.y); s = Mathf.Sin(euler.y); - var ymat = new Basis(c, (real_t)0.0, s, (real_t)0.0, (real_t)1.0, (real_t)0.0, -s, (real_t)0.0, c); + var ymat = new Basis(c, 0, s, 0, 1, 0, -s, 0, c); c = Mathf.Cos(euler.z); s = Mathf.Sin(euler.z); - var zmat = new Basis(c, -s, (real_t)0.0, s, c, (real_t)0.0, (real_t)0.0, (real_t)0.0, (real_t)1.0); + var zmat = new Basis(c, -s, 0, s, c, 0, 0, 0, 1); this = ymat * xmat * zmat; } diff --git a/modules/mono/glue/cs_files/VERSION.txt b/modules/mono/glue/cs_files/VERSION.txt index 0cfbf08886f..00750edc07d 100755 --- a/modules/mono/glue/cs_files/VERSION.txt +++ b/modules/mono/glue/cs_files/VERSION.txt @@ -1 +1 @@ -2 +3 diff --git a/modules/mono/glue/cs_files/Vector2.cs b/modules/mono/glue/cs_files/Vector2.cs index cc2cda82fb6..2dfee5e513a 100644 --- a/modules/mono/glue/cs_files/Vector2.cs +++ b/modules/mono/glue/cs_files/Vector2.cs @@ -62,7 +62,7 @@ namespace Godot } } - private real_t Cross(Vector2 b) + public real_t Cross(Vector2 b) { return x * b.y - y * b.x; } @@ -200,6 +200,12 @@ namespace Godot x = v.x; y = v.y; } + + public Vector2 Slerp(Vector2 b, real_t t) + { + real_t theta = AngleTo(b); + return Rotated(theta * t); + } public Vector2 Slide(Vector2 n) { diff --git a/modules/mono/glue/cs_files/Vector3.cs b/modules/mono/glue/cs_files/Vector3.cs index 0a71f3fa4d6..259a8e063de 100644 --- a/modules/mono/glue/cs_files/Vector3.cs +++ b/modules/mono/glue/cs_files/Vector3.cs @@ -237,6 +237,12 @@ namespace Godot z = v.z; } + public Vector3 Slerp(Vector3 b, real_t t) + { + real_t theta = AngleTo(b); + return Rotated(Cross(b), theta * t); + } + public Vector3 Slide(Vector3 n) { return this - n * Dot(n);