summaryrefslogtreecommitdiffstats
path: root/src/core/Transform.cpp
diff options
context:
space:
mode:
authorDaniel Rakos <daniel.rakos@rastergrid.com>2019-04-11 17:06:02 +0200
committerDaniel Rakos <daniel.rakos@rastergrid.com>2019-04-11 19:59:34 +0200
commit4be7fcdde50d04ff7c1f105662e2df620a3f7af0 (patch)
tree6c8b23e014455ed2a17e2a2736f9cf6d77064836 /src/core/Transform.cpp
parentf0fe88bd36603b5ccb0d1c865e1ad8432dbe3b5e (diff)
downloadredot-cpp-4be7fcdde50d04ff7c1f105662e2df620a3f7af0.tar.gz
Fix bug in Basis [] operator and add missing Transform-Vector3 * operator
The [] operator of Basis was returning a reference to a temporary, so fixed it. There was no * operator in Transform equivalent to the xform function, which is not in line with GDScript behavior. Also fixed remaining cases where Transform relied on the old behavior of the [] operator of Basis (i.e. that it returns the row, not the column).
Diffstat (limited to 'src/core/Transform.cpp')
-rw-r--r--src/core/Transform.cpp8
1 files changed, 4 insertions, 4 deletions
diff --git a/src/core/Transform.cpp b/src/core/Transform.cpp
index 9a1028a..d32de8d 100644
--- a/src/core/Transform.cpp
+++ b/src/core/Transform.cpp
@@ -35,9 +35,9 @@ void Transform::set(real_t xx, real_t xy, real_t xz, real_t yx, real_t yy, real_
Vector3 Transform::xform(const Vector3 &p_vector) const {
return Vector3(
- basis[0].dot(p_vector) + origin.x,
- basis[1].dot(p_vector) + origin.y,
- basis[2].dot(p_vector) + origin.z);
+ basis.elements[0].dot(p_vector) + origin.x,
+ basis.elements[1].dot(p_vector) + origin.y,
+ basis.elements[2].dot(p_vector) + origin.z);
}
Vector3 Transform::xform_inv(const Vector3 &p_vector) const {
@@ -241,7 +241,7 @@ void Transform::translate(real_t p_tx, real_t p_ty, real_t p_tz) {
void Transform::translate(const Vector3 &p_translation) {
for (int i = 0; i < 3; i++) {
- origin[i] += basis[i].dot(p_translation);
+ origin[i] += basis.elements[i].dot(p_translation);
}
}