From ddd8573857ceb4f77ba516d5ebb7093dae5378e1 Mon Sep 17 00:00:00 2001 From: Relintai Date: Tue, 30 May 2023 01:34:55 +0200 Subject: [PATCH] Implemented the new apis for Transform2D. --- gdnative/transform2d.cpp | 202 ++++++++++++++++++++++++++++++++++++++ gdnative_api.json | 24 +---- include/gdn/transform2d.h | 77 +++++++-------- 3 files changed, 239 insertions(+), 64 deletions(-) diff --git a/gdnative/transform2d.cpp b/gdnative/transform2d.cpp index 60047f1..63e522f 100644 --- a/gdnative/transform2d.cpp +++ b/gdnative/transform2d.cpp @@ -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; diff --git a/gdnative_api.json b/gdnative_api.json index 76eff7e..d646a48 100644 --- a/gdnative_api.json +++ b/gdnative_api.json @@ -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", diff --git a/include/gdn/transform2d.h b/include/gdn/transform2d.h index 9b00000..2f54727 100644 --- a/include/gdn/transform2d.h +++ b/include/gdn/transform2d.h @@ -54,72 +54,66 @@ typedef struct { #include #include #include +#include #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 xform(const PoolVector &p_array) const; //_FORCE_INLINE_ PoolVector xform_inv(const PoolVector &p_array) const;