summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorSilver1063 <brickbrickerson1063@gmail.com>2020-10-11 17:31:23 -0700
committerSilver1063 <brickbrickerson1063@gmail.com>2020-10-11 17:31:23 -0700
commit96ae052e06efc24c02f184e07f21c1213c02e4db (patch)
tree2892eccc9a40c9a484e0e924529e9405fff7d930
parenta733457285f26dae629e9625fcb13475a28577b7 (diff)
downloadredot-cpp-96ae052e06efc24c02f184e07f21c1213c02e4db.tar.gz
Added missing Vector3 slerp and Vector3 project
Vector3 slerp and Vector3 project were missing from godot cpp so I added them.
-rw-r--r--include/core/Vector3.hpp9
1 files changed, 9 insertions, 0 deletions
diff --git a/include/core/Vector3.hpp b/include/core/Vector3.hpp
index 16c2a10..5971787 100644
--- a/include/core/Vector3.hpp
+++ b/include/core/Vector3.hpp
@@ -165,6 +165,11 @@ struct Vector3 {
z + (p_t * (p_b.z - z)));
}
+ inline Vector3 slerp(const Vector3 &p_b, real_t p_t) const {
+ real_t theta = angle_to(p_b);
+ return rotated(cross(p_b).normalized(), theta * p_t);
+ }
+
Vector3 cubic_interpolate(const Vector3 &b, const Vector3 &pre_a, const Vector3 &post_b, const real_t t) const;
Vector3 move_toward(const Vector3 &p_to, const real_t p_delta) const {
@@ -206,6 +211,10 @@ struct Vector3 {
return x * b.x + y * b.y + z * b.z;
}
+ inline Vector3 project(const Vector3 &p_b) const {
+ return p_b * (dot(p_b) / p_b.length_squared());
+ }
+
inline real_t angle_to(const Vector3 &b) const {
return std::atan2(cross(b).length(), dot(b));
}