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).
This commit is contained in:
@@ -307,7 +307,7 @@ public:
|
||||
|
||||
Basis();
|
||||
|
||||
const Vector3 &operator[](int axis) const {
|
||||
const Vector3 operator[](int axis) const {
|
||||
return get_axis(axis);
|
||||
}
|
||||
|
||||
|
||||
@@ -58,6 +58,13 @@ public:
|
||||
void operator*=(const Transform &p_transform);
|
||||
Transform operator*(const Transform &p_transform) const;
|
||||
|
||||
inline Vector3 operator*(const Vector3 &p_vector) const {
|
||||
return Vector3(
|
||||
basis.elements[0].dot(p_vector) + origin.x,
|
||||
basis.elements[1].dot(p_vector) + origin.y,
|
||||
basis.elements[2].dot(p_vector) + origin.z);
|
||||
}
|
||||
|
||||
Transform interpolate_with(const Transform &p_transform, real_t p_c) const;
|
||||
|
||||
Transform inverse_xform(const Transform &t) const;
|
||||
|
||||
Reference in New Issue
Block a user