summaryrefslogtreecommitdiff
path: root/core
diff options
context:
space:
mode:
authorrafallus <rafaelmtzg@gmail.com>2021-03-29 13:57:29 -0600
committerrafallus <rafaelmtzg@gmail.com>2021-03-29 13:57:34 -0600
commit91967229355d381ee2b4d9d6ab126a3c5e8b2a84 (patch)
tree189096e3b47face165c5388b124d315734f21412 /core
parent76a2e764689b0cd333ff2a2139b5ea671ce9b321 (diff)
Fix Quat multiplication
x, y, z values were updated too early
Diffstat (limited to 'core')
-rw-r--r--core/math/quat.cpp9
1 files changed, 6 insertions, 3 deletions
diff --git a/core/math/quat.cpp b/core/math/quat.cpp
index a9a21a1ba3..6f13e04027 100644
--- a/core/math/quat.cpp
+++ b/core/math/quat.cpp
@@ -55,10 +55,13 @@ Vector3 Quat::get_euler_yxz() const {
}
void Quat::operator*=(const Quat &p_q) {
- x = w * p_q.x + x * p_q.w + y * p_q.z - z * p_q.y;
- y = w * p_q.y + y * p_q.w + z * p_q.x - x * p_q.z;
- z = w * p_q.z + z * p_q.w + x * p_q.y - y * p_q.x;
+ real_t xx = w * p_q.x + x * p_q.w + y * p_q.z - z * p_q.y;
+ real_t yy = w * p_q.y + y * p_q.w + z * p_q.x - x * p_q.z;
+ real_t zz = w * p_q.z + z * p_q.w + x * p_q.y - y * p_q.x;
w = w * p_q.w - x * p_q.x - y * p_q.y - z * p_q.z;
+ x = xx;
+ y = yy;
+ z = zz;
}
Quat Quat::operator*(const Quat &p_q) const {