Implemented the new apis for Transform2D.

This commit is contained in:
Relintai 2023-05-30 01:34:55 +02:00
parent 1c90cb43bd
commit ddd8573857
3 changed files with 239 additions and 64 deletions

View File

@ -39,6 +39,46 @@ extern "C" {
static_assert(sizeof(pandemonium_transform2d) == sizeof(Transform2D), "Transform2D size mismatch");
pandemonium_real GDAPI pandemonium_transform2d_tdotx(const pandemonium_transform2d *p_self, const pandemonium_vector2 *p_v) {
const Transform2D *self = (const Transform2D *)p_self;
const Vector2 *v = (const Vector2 *)p_v;
return self->tdotx(*v);
}
pandemonium_real GDAPI pandemonium_transform2d_tdoty(const pandemonium_transform2d *p_self, const pandemonium_vector2 *p_v) {
const Transform2D *self = (const Transform2D *)p_self;
const Vector2 *v = (const Vector2 *)p_v;
return self->tdoty(*v);
}
pandemonium_vector2 GDAPI pandemonium_transform2d_get_axis(const pandemonium_transform2d *p_self, pandemonium_int p_axis) {
pandemonium_vector2 dest;
const Transform2D *self = (const Transform2D *)p_self;
*((Vector2 *)&dest) = self->get_axis(p_axis);
return dest;
}
void GDAPI pandemonium_transform2d_set_axis(pandemonium_transform2d *p_self, pandemonium_int p_axis, const pandemonium_vector2 *p_vec) {
Transform2D *self = (Transform2D *)p_self;
const Vector2 *vec = (const Vector2 *)p_vec;
self->set_axis(p_axis, *vec);
}
pandemonium_vector2 GDAPI pandemonium_transform2d_get_column(const pandemonium_transform2d *p_self, pandemonium_int p_colum) {
pandemonium_vector2 dest;
const Transform2D *self = (const Transform2D *)p_self;
*((Vector2 *)&dest) = self->get_column(p_colum);
return dest;
}
void GDAPI pandemonium_transform2d_set_column(pandemonium_transform2d *p_self, pandemonium_int p_colum, const pandemonium_vector2 *p_vec) {
Transform2D *self = (Transform2D *)p_self;
const Vector2 *vec = (const Vector2 *)p_vec;
self->set_column(p_colum, *vec);
}
void GDAPI pandemonium_transform2d_invert(pandemonium_transform2d *p_self) {
Transform2D *self = (Transform2D *)p_self;
self->invert();
}
pandemonium_transform2d GDAPI pandemonium_transform2d_inverse(const pandemonium_transform2d *p_self) {
pandemonium_transform2d dest;
const Transform2D *self = (const Transform2D *)p_self;
@ -46,6 +86,11 @@ pandemonium_transform2d GDAPI pandemonium_transform2d_inverse(const pandemonium_
return dest;
}
void GDAPI pandemonium_transform2d_affine_invert(pandemonium_transform2d *p_self) {
Transform2D *self = (Transform2D *)p_self;
self->affine_invert();
}
pandemonium_transform2d GDAPI pandemonium_transform2d_affine_inverse(const pandemonium_transform2d *p_self) {
pandemonium_transform2d dest;
const Transform2D *self = (const Transform2D *)p_self;
@ -53,11 +98,69 @@ pandemonium_transform2d GDAPI pandemonium_transform2d_affine_inverse(const pande
return dest;
}
void GDAPI pandemonium_transform2d_set_rotation(pandemonium_transform2d *p_self, pandemonium_real p_rot) {
Transform2D *self = (Transform2D *)p_self;
self->set_rotation(p_rot);
}
pandemonium_real GDAPI pandemonium_transform2d_get_rotation(const pandemonium_transform2d *p_self) {
const Transform2D *self = (const Transform2D *)p_self;
return self->get_rotation();
}
pandemonium_real GDAPI pandemonium_transform2d_get_skew(const pandemonium_transform2d *p_self) {
const Transform2D *self = (const Transform2D *)p_self;
return self->get_skew();
}
void GDAPI pandemonium_transform2d_set_skew(pandemonium_transform2d *p_self, const pandemonium_real p_angle) {
Transform2D *self = (Transform2D *)p_self;
self->set_skew(p_angle);
}
void GDAPI pandemonium_transform2d_set_rotation_and_scale(pandemonium_transform2d *p_self, pandemonium_real p_rot, const pandemonium_vector2 *p_scale) {
Transform2D *self = (Transform2D *)p_self;
const Vector2 *scale = (const Vector2 *)p_scale;
self->set_rotation_and_scale(p_rot, *scale);
}
void GDAPI pandemonium_transform2d_set_rotation_scale_and_skew(pandemonium_transform2d *p_self, const pandemonium_real p_rot, const pandemonium_vector2 *p_scale, const pandemonium_real p_skew) {
Transform2D *self = (Transform2D *)p_self;
const Vector2 *scale = (const Vector2 *)p_scale;
self->set_rotation_scale_and_skew(p_rot, *scale, p_skew);
}
void GDAPI pandemonium_transform2d_rotate(pandemonium_transform2d *p_self, pandemonium_real p_phi) {
Transform2D *self = (Transform2D *)p_self;
self->rotate(p_phi);
}
void GDAPI pandemonium_transform2d_scale(pandemonium_transform2d *p_self, const pandemonium_vector2 *p_scale) {
Transform2D *self = (Transform2D *)p_self;
const Vector2 *scale = (const Vector2 *)p_scale;
self->scale(*scale);
}
void GDAPI pandemonium_transform2d_scale_basis(pandemonium_transform2d *p_self, const pandemonium_vector2 *p_scale) {
Transform2D *self = (Transform2D *)p_self;
const Vector2 *scale = (const Vector2 *)p_scale;
self->scale_basis(*scale);
}
void GDAPI pandemonium_transform2d_translater(pandemonium_transform2d *p_self, pandemonium_real p_tx, pandemonium_real p_ty) {
Transform2D *self = (Transform2D *)p_self;
self->translater(p_tx, p_ty);
}
void GDAPI pandemonium_transform2d_translatev(pandemonium_transform2d *p_self, const pandemonium_vector2 *p_offset) {
Transform2D *self = (Transform2D *)p_self;
const Vector2 *offset = (const Vector2 *)p_offset;
self->translatev(*offset);
}
void GDAPI pandemonium_transform2d_translate_localr(pandemonium_transform2d *p_self, pandemonium_real p_tx, pandemonium_real p_ty) {
Transform2D *self = (Transform2D *)p_self;
self->translate_localr(p_tx, p_ty);
}
void GDAPI pandemonium_transform2d_translate_localv(pandemonium_transform2d *p_self, const pandemonium_vector2 *p_translation) {
Transform2D *self = (Transform2D *)p_self;
const Vector2 *translation = (const Vector2 *)p_translation;
self->translate_localv(*translation);
}
pandemonium_real GDAPI pandemonium_transform2d_basis_determinant(const pandemonium_transform2d *p_self) {
const Transform2D *self = (const Transform2D *)p_self;
return self->basis_determinant();
@ -70,6 +173,12 @@ pandemonium_vector2 GDAPI pandemonium_transform2d_get_scale(const pandemonium_tr
return dest;
}
void GDAPI pandemonium_transform2d_set_scale(pandemonium_transform2d *p_self, const pandemonium_vector2 *p_scale) {
Transform2D *self = (Transform2D *)p_self;
const Vector2 *scale = (const Vector2 *)p_scale;
self->set_scale(*scale);
}
pandemonium_vector2 GDAPI pandemonium_transform2d_get_origin(const pandemonium_transform2d *p_self) {
pandemonium_vector2 dest;
const Transform2D *self = (const Transform2D *)p_self;
@ -77,6 +186,20 @@ pandemonium_vector2 GDAPI pandemonium_transform2d_get_origin(const pandemonium_t
return dest;
}
void GDAPI pandemonium_transform2d_set_origin(pandemonium_transform2d *p_self, const pandemonium_vector2 *p_origin) {
Transform2D *self = (Transform2D *)p_self;
const Vector2 *origin = (const Vector2 *)p_origin;
self->set_origin(*origin);
}
pandemonium_transform2d GDAPI pandemonium_transform2d_basis_scaled(const pandemonium_transform2d *p_self, const pandemonium_vector2 *p_scale) {
pandemonium_transform2d dest;
const Transform2D *self = (const Transform2D *)p_self;
const Vector2 *scale = (const Vector2 *)p_scale;
*((Transform2D *)&dest) = self->basis_scaled(*scale);
return dest;
}
pandemonium_transform2d GDAPI pandemonium_transform2d_scaled(const pandemonium_transform2d *p_self, const pandemonium_vector2 *p_scale) {
pandemonium_transform2d dest;
const Transform2D *self = (const Transform2D *)p_self;
@ -84,6 +207,15 @@ pandemonium_transform2d GDAPI pandemonium_transform2d_scaled(const pandemonium_t
*((Transform2D *)&dest) = self->scaled(*scale);
return dest;
}
pandemonium_transform2d GDAPI pandemonium_transform2d_scaled_local(const pandemonium_transform2d *p_self, const pandemonium_vector2 *p_scale) {
pandemonium_transform2d dest;
const Transform2D *self = (const Transform2D *)p_self;
const Vector2 *scale = (const Vector2 *)p_scale;
*((Transform2D *)&dest) = self->scaled_local(*scale);
return dest;
}
pandemonium_transform2d GDAPI pandemonium_transform2d_translated(const pandemonium_transform2d *p_self, const pandemonium_vector2 *p_offset) {
pandemonium_transform2d dest;
const Transform2D *self = (const Transform2D *)p_self;
@ -91,6 +223,14 @@ pandemonium_transform2d GDAPI pandemonium_transform2d_translated(const pandemoni
*((Transform2D *)&dest) = self->translated(*offset);
return dest;
}
pandemonium_transform2d GDAPI pandemonium_transform2d_translated_local(const pandemonium_transform2d *p_self, const pandemonium_vector2 *p_offset) {
pandemonium_transform2d dest;
const Transform2D *self = (const Transform2D *)p_self;
const Vector2 *offset = (const Vector2 *)p_offset;
*((Transform2D *)&dest) = self->translated_local(*offset);
return dest;
}
pandemonium_transform2d GDAPI pandemonium_transform2d_rotated(const pandemonium_transform2d *p_self, const pandemonium_real p_phi) {
pandemonium_transform2d dest;
const Transform2D *self = (const Transform2D *)p_self;
@ -99,6 +239,25 @@ pandemonium_transform2d GDAPI pandemonium_transform2d_rotated(const pandemonium_
return dest;
}
pandemonium_transform2d GDAPI pandemonium_transform2d_rotated_local(const pandemonium_transform2d *p_self, const pandemonium_real p_angle) {
pandemonium_transform2d dest;
const Transform2D *self = (const Transform2D *)p_self;
*((Transform2D *)&dest) = self->rotated_local(p_angle);
return dest;
}
pandemonium_transform2d GDAPI pandemonium_transform2d_untranslated(const pandemonium_transform2d *p_self) {
pandemonium_transform2d dest;
const Transform2D *self = (const Transform2D *)p_self;
*((Transform2D *)&dest) = self->untranslated();
return dest;
}
void GDAPI pandemonium_transform2d_orthonormalize(pandemonium_transform2d *p_self) {
Transform2D *self = (Transform2D *)p_self;
self->orthonormalize();
}
pandemonium_transform2d GDAPI pandemonium_transform2d_orthonormalized(const pandemonium_transform2d *p_self) {
pandemonium_transform2d dest;
const Transform2D *self = (const Transform2D *)p_self;
@ -106,6 +265,20 @@ pandemonium_transform2d GDAPI pandemonium_transform2d_orthonormalized(const pand
return dest;
}
pandemonium_bool GDAPI pandemonium_transform2d_is_equal_approx(const pandemonium_transform2d *p_self, const pandemonium_transform2d *p_transform) {
const Transform2D *self = (const Transform2D *)p_self;
const Transform2D *transform = (const Transform2D *)p_transform;
return self->is_equal_approx(*transform);
}
pandemonium_transform2d GDAPI pandemonium_transform2d_looking_at(const pandemonium_transform2d *p_self, const pandemonium_vector2 *p_target) {
pandemonium_transform2d dest;
const Transform2D *self = (const Transform2D *)p_self;
const Vector2 *target = (const Vector2 *)p_target;
*((Transform2D *)&dest) = self->looking_at(*target);
return dest;
}
pandemonium_bool GDAPI pandemonium_transform2d_operator_equal(const pandemonium_transform2d *p_self, const pandemonium_transform2d *p_b) {
const Transform2D *self = (const Transform2D *)p_self;
const Transform2D *b = (const Transform2D *)p_b;
@ -182,6 +355,35 @@ pandemonium_rect2 GDAPI pandemonium_transform2d_xform_inv_rect2(const pandemoniu
return raw_dest;
}
pandemonium_vector2i GDAPI pandemonium_transform2d_basis_xform(const pandemonium_transform2d *p_self, const pandemonium_vector2i *p_vec) {
pandemonium_vector2i dest;
const Transform2D *self = (const Transform2D *)p_self;
const Vector2i *vec = (const Vector2i *)p_vec;
*((Vector2i *)&dest) = self->basis_xform(*vec);
return dest;
}
pandemonium_vector2i GDAPI pandemonium_transform2d_basis_xform_inv(const pandemonium_transform2d *p_self, const pandemonium_vector2i *p_vec) {
pandemonium_vector2i dest;
const Transform2D *self = (const Transform2D *)p_self;
const Vector2i *vec = (const Vector2i *)p_vec;
*((Vector2i *)&dest) = self->basis_xform_inv(*vec);
return dest;
}
pandemonium_vector2i GDAPI pandemonium_transform2d_xform_vector2i(const pandemonium_transform2d *p_self, const pandemonium_vector2i *p_vec) {
pandemonium_vector2i dest;
const Transform2D *self = (const Transform2D *)p_self;
const Vector2i *vec = (const Vector2i *)p_vec;
*((Vector2i *)&dest) = self->xform(*vec);
return dest;
}
pandemonium_vector2i GDAPI pandemonium_transform2d_xform_inv_vector2i(const pandemonium_transform2d *p_self, const pandemonium_vector2i *p_vec) {
pandemonium_vector2i dest;
const Transform2D *self = (const Transform2D *)p_self;
const Vector2i *vec = (const Vector2i *)p_vec;
*((Vector2i *)&dest) = self->xform_inv(*vec);
return dest;
}
pandemonium_string GDAPI pandemonium_transform2d_as_string(const pandemonium_transform2d *p_self) {
pandemonium_string ret;
const Transform2D *self = (const Transform2D *)p_self;

View File

@ -4743,7 +4743,7 @@
]
},
{
"name": "pandemonium_string_wide_str",
"name": "pandemonium_string_get_data",
"return_type": "const char32_t *",
"arguments": [
["const pandemonium_string *", "p_self"]
@ -5409,20 +5409,6 @@
["const pandemonium_string *", "p_self"]
]
},
{
"name": "pandemonium_string_char_lowercase",
"return_type": "wchar_t",
"arguments": [
["wchar_t", "p_char"]
]
},
{
"name": "pandemonium_string_char_uppercase",
"return_type": "wchar_t",
"arguments": [
["wchar_t", "p_char"]
]
},
{
"name": "pandemonium_string_to_lower",
"return_type": "pandemonium_string",
@ -5459,14 +5445,6 @@
["pandemonium_int", "p_pos"]
]
},
{
"name": "pandemonium_string_ord_at",
"return_type": "wchar_t",
"arguments": [
["const pandemonium_string *", "p_self"],
["pandemonium_int", "p_idx"]
]
},
{
"name": "pandemonium_string_plus_file",
"return_type": "pandemonium_string",

View File

@ -54,72 +54,66 @@ typedef struct {
#include <gdn/gdnative.h>
#include <gdn/variant.h>
#include <gdn/vector2.h>
#include <gdn/vector2i.h>
#ifdef __cplusplus
extern "C" {
#endif
/*
_FORCE_INLINE_ real_t tdotx(const Vector2 &v) const { return columns[0][0] * v.x + columns[1][0] * v.y; }
_FORCE_INLINE_ real_t tdoty(const Vector2 &v) const { return columns[0][1] * v.x + columns[1][1] * v.y; }
pandemonium_real GDAPI pandemonium_transform2d_tdotx(const pandemonium_transform2d *p_self, const pandemonium_vector2 *p_v);
pandemonium_real GDAPI pandemonium_transform2d_tdoty(const pandemonium_transform2d *p_self, const pandemonium_vector2 *p_v);
_FORCE_INLINE_ Vector2 get_axis(int p_axis) const {
_FORCE_INLINE_ void set_axis(int p_axis, const Vector2 &p_vec) {
pandemonium_vector2 GDAPI pandemonium_transform2d_get_axis(const pandemonium_transform2d *p_self, pandemonium_int p_axis);
void GDAPI pandemonium_transform2d_set_axis(pandemonium_transform2d *p_self, pandemonium_int p_axis, const pandemonium_vector2 *p_vec);
_FORCE_INLINE_ Vector2 get_column(int p_colum) const {
_FORCE_INLINE_ void set_column(int p_colum, const Vector2 &p_vec) {
pandemonium_vector2 GDAPI pandemonium_transform2d_get_column(const pandemonium_transform2d *p_self, pandemonium_int p_colum);
void GDAPI pandemonium_transform2d_set_column(pandemonium_transform2d *p_self, pandemonium_int p_colum, const pandemonium_vector2 *p_vec);
*/
//void invert();
void GDAPI pandemonium_transform2d_invert(pandemonium_transform2d *p_self);
pandemonium_transform2d GDAPI pandemonium_transform2d_inverse(const pandemonium_transform2d *p_self);
//void affine_invert();
void GDAPI pandemonium_transform2d_affine_invert(pandemonium_transform2d *p_self);
pandemonium_transform2d GDAPI pandemonium_transform2d_affine_inverse(const pandemonium_transform2d *p_self);
//void set_rotation(real_t p_rot);
void GDAPI pandemonium_transform2d_set_rotation(pandemonium_transform2d *p_self, pandemonium_real p_rot);
pandemonium_real GDAPI pandemonium_transform2d_get_rotation(const pandemonium_transform2d *p_self);
//real_t get_skew() const;
//void set_skew(const real_t p_angle);
//_FORCE_INLINE_ void set_rotation_and_scale(real_t p_rot, const Size2 &p_scale);
//_FORCE_INLINE_ void set_rotation_scale_and_skew(const real_t p_rot, const Size2 &p_scale, const real_t p_skew);
//void rotate(real_t p_phi);
pandemonium_real GDAPI pandemonium_transform2d_get_skew(const pandemonium_transform2d *p_self);
void GDAPI pandemonium_transform2d_set_skew(pandemonium_transform2d *p_self, const pandemonium_real p_angle);
void GDAPI pandemonium_transform2d_set_rotation_and_scale(pandemonium_transform2d *p_self, pandemonium_real p_rot, const pandemonium_vector2 *p_scale);
void GDAPI pandemonium_transform2d_set_rotation_scale_and_skew(pandemonium_transform2d *p_self, const pandemonium_real p_rot, const pandemonium_vector2 *p_scale, const pandemonium_real p_skew);
void GDAPI pandemonium_transform2d_rotate(pandemonium_transform2d *p_self, pandemonium_real p_phi);
//void scale(const Size2 &p_scale);
//void scale_basis(const Size2 &p_scale);
//void translate(real_t p_tx, real_t p_ty);
//void translate(const Vector2 &p_offset);
//void translate_local(real_t p_tx, real_t p_ty);
//void translate_local(const Vector2 &p_translation);
void GDAPI pandemonium_transform2d_scale(pandemonium_transform2d *p_self, const pandemonium_vector2 *p_scale);
void GDAPI pandemonium_transform2d_scale_basis(pandemonium_transform2d *p_self, const pandemonium_vector2 *p_scale);
//void translater(real_t p_tx, real_t p_ty);
//void translatev(const Vector2 &p_offset);
//void translate_localr(real_t p_tx, real_t p_ty);
//void translate_localv(const Vector2 &p_translation);
void GDAPI pandemonium_transform2d_translater(pandemonium_transform2d *p_self, pandemonium_real p_tx, pandemonium_real p_ty);
void GDAPI pandemonium_transform2d_translatev(pandemonium_transform2d *p_self, const pandemonium_vector2 *p_offset);
void GDAPI pandemonium_transform2d_translate_localr(pandemonium_transform2d *p_self, pandemonium_real p_tx, pandemonium_real p_ty);
void GDAPI pandemonium_transform2d_translate_localv(pandemonium_transform2d *p_self, const pandemonium_vector2 *p_translation);
pandemonium_real GDAPI pandemonium_transform2d_basis_determinant(const pandemonium_transform2d *p_self);
pandemonium_vector2 GDAPI pandemonium_transform2d_get_scale(const pandemonium_transform2d *p_self);
//void set_scale(const Size2 &p_scale);
void GDAPI pandemonium_transform2d_set_scale(pandemonium_transform2d *p_self, const pandemonium_vector2 *p_scale);
pandemonium_vector2 GDAPI pandemonium_transform2d_get_origin(const pandemonium_transform2d *p_self);
//_FORCE_INLINE_ void set_origin(const Vector2 &p_origin) { columns[2] = p_origin; }
void GDAPI pandemonium_transform2d_set_origin(pandemonium_transform2d *p_self, const pandemonium_vector2 *p_origin);
//Transform2D basis_scaled(const Size2 &p_scale) const;
pandemonium_transform2d GDAPI pandemonium_transform2d_basis_scaled(const pandemonium_transform2d *p_self, const pandemonium_vector2 *p_scale);
pandemonium_transform2d GDAPI pandemonium_transform2d_scaled(const pandemonium_transform2d *p_self, const pandemonium_vector2 *p_scale);
//Transform2D scaled_local(const Size2 &p_scale) const;
pandemonium_transform2d GDAPI pandemonium_transform2d_scaled_local(const pandemonium_transform2d *p_self, const pandemonium_vector2 *p_scale);
pandemonium_transform2d GDAPI pandemonium_transform2d_translated(const pandemonium_transform2d *p_self, const pandemonium_vector2 *p_offset);
//Transform2D translated_local(const Vector2 &p_offset) const;
pandemonium_transform2d GDAPI pandemonium_transform2d_translated_local(const pandemonium_transform2d *p_self, const pandemonium_vector2 *p_offset);
pandemonium_transform2d GDAPI pandemonium_transform2d_rotated(const pandemonium_transform2d *p_self, const pandemonium_real p_phi);
//Transform2D rotated_local(const real_t p_angle) const;
pandemonium_transform2d GDAPI pandemonium_transform2d_rotated_local(const pandemonium_transform2d *p_self, const pandemonium_real p_angle);
//Transform2D untranslated() const;
pandemonium_transform2d GDAPI pandemonium_transform2d_untranslated(const pandemonium_transform2d *p_self);
//void orthonormalize();
void GDAPI pandemonium_transform2d_orthonormalize(pandemonium_transform2d *p_self);
pandemonium_transform2d GDAPI pandemonium_transform2d_orthonormalized(const pandemonium_transform2d *p_self);
//bool is_equal_approx(const Transform2D &p_transform) const;
pandemonium_bool GDAPI pandemonium_transform2d_is_equal_approx(const pandemonium_transform2d *p_self, const pandemonium_transform2d *p_transform);
//Transform2D looking_at(const Vector2 &p_target) const;
pandemonium_transform2d GDAPI pandemonium_transform2d_looking_at(const pandemonium_transform2d *p_self, const pandemonium_vector2 *p_target);
pandemonium_bool GDAPI pandemonium_transform2d_operator_equal(const pandemonium_transform2d *p_self, const pandemonium_transform2d *p_b);
pandemonium_transform2d GDAPI pandemonium_transform2d_operator_multiply(const pandemonium_transform2d *p_self, const pandemonium_transform2d *p_b);
@ -135,10 +129,11 @@ pandemonium_vector2 GDAPI pandemonium_transform2d_xform_inv_vector2(const pandem
pandemonium_rect2 GDAPI pandemonium_transform2d_xform_rect2(const pandemonium_transform2d *p_self, const pandemonium_rect2 *p_v);
pandemonium_rect2 GDAPI pandemonium_transform2d_xform_inv_rect2(const pandemonium_transform2d *p_self, const pandemonium_rect2 *p_v);
//_FORCE_INLINE_ Vector2i basis_xform(const Vector2i &p_vec) const;
//_FORCE_INLINE_ Vector2i basis_xform_inv(const Vector2i &p_vec) const;
//_FORCE_INLINE_ Vector2i xform(const Vector2i &p_vec) const;
//_FORCE_INLINE_ Vector2i xform_inv(const Vector2i &p_vec) const;
pandemonium_vector2i GDAPI pandemonium_transform2d_basis_xform(const pandemonium_transform2d *p_self, const pandemonium_vector2i *p_vec);
pandemonium_vector2i GDAPI pandemonium_transform2d_basis_xform_inv(const pandemonium_transform2d *p_self, const pandemonium_vector2i *p_vec);
pandemonium_vector2i GDAPI pandemonium_transform2d_xform_vector2i(const pandemonium_transform2d *p_self, const pandemonium_vector2i *p_vec);
pandemonium_vector2i GDAPI pandemonium_transform2d_xform_inv_vector2i(const pandemonium_transform2d *p_self, const pandemonium_vector2i *p_vec);
//_FORCE_INLINE_ PoolVector<Vector2> xform(const PoolVector<Vector2> &p_array) const;
//_FORCE_INLINE_ PoolVector<Vector2> xform_inv(const PoolVector<Vector2> &p_array) const;