Add transform methods for PoolVector*Array
Similarly to `Vector2` and `Rect2` transforms in 2D and Vector3, Plane, and AABB in 3D. PoolVector2Array and PoolVector3Array were the only missing Variant types in both Transform2D and Transform respectively.
This commit is contained in:
parent
65d5003bce
commit
07cff56f48
5 changed files with 71 additions and 4 deletions
|
|
@ -32,6 +32,7 @@
|
|||
#define TRANSFORM_2D_H
|
||||
|
||||
#include "core/math/rect2.h" // also includes vector2, math_funcs, and ustring
|
||||
#include "core/pool_vector.h"
|
||||
|
||||
struct Transform2D {
|
||||
// Warning #1: basis of Transform2D is stored differently from Basis. In terms of elements array, the basis matrix looks like "on paper":
|
||||
|
|
@ -110,6 +111,8 @@ struct Transform2D {
|
|||
_FORCE_INLINE_ Vector2 xform_inv(const Vector2 &p_vec) const;
|
||||
_FORCE_INLINE_ Rect2 xform(const Rect2 &p_rect) const;
|
||||
_FORCE_INLINE_ Rect2 xform_inv(const Rect2 &p_rect) const;
|
||||
_FORCE_INLINE_ PoolVector<Vector2> xform(const PoolVector<Vector2> &p_array) const;
|
||||
_FORCE_INLINE_ PoolVector<Vector2> xform_inv(const PoolVector<Vector2> &p_array) const;
|
||||
|
||||
operator String() const;
|
||||
|
||||
|
|
@ -199,4 +202,32 @@ Rect2 Transform2D::xform_inv(const Rect2 &p_rect) const {
|
|||
return new_rect;
|
||||
}
|
||||
|
||||
PoolVector<Vector2> Transform2D::xform(const PoolVector<Vector2> &p_array) const {
|
||||
|
||||
PoolVector<Vector2> array;
|
||||
array.resize(p_array.size());
|
||||
|
||||
PoolVector<Vector2>::Read r = p_array.read();
|
||||
PoolVector<Vector2>::Write w = array.write();
|
||||
|
||||
for (int i = 0; i < p_array.size(); ++i) {
|
||||
w[i] = xform(r[i]);
|
||||
}
|
||||
return array;
|
||||
}
|
||||
|
||||
PoolVector<Vector2> Transform2D::xform_inv(const PoolVector<Vector2> &p_array) const {
|
||||
|
||||
PoolVector<Vector2> array;
|
||||
array.resize(p_array.size());
|
||||
|
||||
PoolVector<Vector2>::Read r = p_array.read();
|
||||
PoolVector<Vector2>::Write w = array.write();
|
||||
|
||||
for (int i = 0; i < p_array.size(); ++i) {
|
||||
w[i] = xform_inv(r[i]);
|
||||
}
|
||||
return array;
|
||||
}
|
||||
|
||||
#endif // TRANSFORM_2D_H
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue