From 3aad5823ca5a99827c7d5b69c04e130b20a0c1d2 Mon Sep 17 00:00:00 2001 From: tayoky Date: Sat, 15 Nov 2025 10:39:14 +0100 Subject: [PATCH] add glm_vecx_swap functions --- include/cglm/call/vec2.h | 4 ++++ include/cglm/call/vec3.h | 4 ++++ include/cglm/call/vec4.h | 4 ++++ include/cglm/vec2.h | 13 +++++++++++++ include/cglm/vec3.h | 13 +++++++++++++ include/cglm/vec4.h | 13 +++++++++++++ src/vec2.c | 6 ++++++ src/vec3.c | 6 ++++++ src/vec4.c | 6 ++++++ 9 files changed, 69 insertions(+) diff --git a/include/cglm/call/vec2.h b/include/cglm/call/vec2.h index 0284a8c..10f64cc 100644 --- a/include/cglm/call/vec2.h +++ b/include/cglm/call/vec2.h @@ -245,6 +245,10 @@ CGLM_EXPORT bool glmc_vec2_refract(vec2 v, vec2 n, float eta, vec2 dest); +CGLM_EXPORT +void +glmc_vec2_swap(vec2 a, vec2 b); + #ifdef __cplusplus } #endif diff --git a/include/cglm/call/vec3.h b/include/cglm/call/vec3.h index 640fac7..df2cad2 100644 --- a/include/cglm/call/vec3.h +++ b/include/cglm/call/vec3.h @@ -363,6 +363,10 @@ CGLM_EXPORT bool glmc_vec3_refract(vec3 v, vec3 n, float eta, vec3 dest); +CGLM_EXPORT +void +glmc_vec3_swap(vec3 a, vec3 b); + #ifdef __cplusplus } #endif diff --git a/include/cglm/call/vec4.h b/include/cglm/call/vec4.h index 22eee24..dbbfc36 100644 --- a/include/cglm/call/vec4.h +++ b/include/cglm/call/vec4.h @@ -336,6 +336,10 @@ CGLM_EXPORT bool glmc_vec4_refract(vec4 v, vec4 n, float eta, vec4 dest); +CGLM_EXPORT +void +glmc_vec4_swap(vec4 a, vec4 b); + #ifdef __cplusplus } #endif diff --git a/include/cglm/vec2.h b/include/cglm/vec2.h index 655fb4b..0f4d749 100644 --- a/include/cglm/vec2.h +++ b/include/cglm/vec2.h @@ -59,6 +59,7 @@ CGLM_INLINE void glm_vec2_make(float * restrict src, vec2 dest) CGLM_INLINE void glm_vec2_reflect(vec2 v, vec2 n, vec2 dest) CGLM_INLINE void glm_vec2_refract(vec2 v, vec2 n, float eta, vec2 dest) + CGLM_INLINE void glm_vec2_swap(vec2 a, vec2 b) */ #ifndef cglm_vec2_h @@ -795,4 +796,16 @@ glm_vec2_refract(vec2 v, vec2 n, float eta, vec2 dest) { return true; } +/*! + * @brief swap two vectors + * @param a the first vector to swap + * @param b the second vector to swap + */ +CGLM_INLINE void glm_vec2_swap(vec2 a, vec2 b) { + vec2 tmp; + glm_vec2_copy(a, tmp); + glm_vec2_copy(b, a); + glm_vec2_copy(tmp, b); +} + #endif /* cglm_vec2_h */ diff --git a/include/cglm/vec3.h b/include/cglm/vec3.h index 1350818..5667e3e 100644 --- a/include/cglm/vec3.h +++ b/include/cglm/vec3.h @@ -82,6 +82,7 @@ CGLM_INLINE void glm_vec3_faceforward(vec3 n, vec3 v, vec3 nref, vec3 dest); CGLM_INLINE void glm_vec3_reflect(vec3 v, vec3 n, vec3 dest); CGLM_INLINE void glm_vec3_refract(vec3 v, vec3 n, float eta, vec3 dest); + CGLM_INLINE void glm_vec3_swap(vec3 a, vec3 b) Convenient: CGLM_INLINE void glm_cross(vec3 a, vec3 b, vec3 d); @@ -1261,4 +1262,16 @@ glm_vec3_refract(vec3 v, vec3 n, float eta, vec3 dest) { return true; } +/*! + * @brief swap two vectors + * @param a the first vector to swap + * @param b the second vector to swap + */ +CGLM_INLINE void glm_vec3_swap(vec3 a, vec3 b) { + vec3 tmp; + glm_vec3_copy(a, tmp); + glm_vec3_copy(b, a); + glm_vec3_copy(tmp, b); +} + #endif /* cglm_vec3_h */ diff --git a/include/cglm/vec4.h b/include/cglm/vec4.h index ded09c9..f12fa04 100644 --- a/include/cglm/vec4.h +++ b/include/cglm/vec4.h @@ -66,6 +66,7 @@ CGLM_INLINE void glm_vec4_make(float * restrict src, vec4 dest); CGLM_INLINE void glm_vec4_reflect(vec4 v, vec4 n, vec4 dest); CGLM_INLINE void glm_vec4_refract(vec4 v, vec4 n, float eta, vec4 dest); + CGLM_INLINE void glm_vec4_swap(vec4 a, vec4 b) DEPRECATED: glm_vec4_dup @@ -1345,4 +1346,16 @@ glm_vec4_refract(vec4 v, vec4 n, float eta, vec4 dest) { return true; } +/*! + * @brief swap two vectors + * @param a the first vector to swap + * @param b the second vector to swap + */ +CGLM_INLINE void glm_vec4_swap(vec4 a, vec4 b) { + vec4 tmp; + glm_vec4_copy(a, tmp); + glm_vec4_copy(b, a); + glm_vec4_copy(tmp, b); +} + #endif /* cglm_vec4_h */ diff --git a/src/vec2.c b/src/vec2.c index 479c41e..9ff3264 100644 --- a/src/vec2.c +++ b/src/vec2.c @@ -356,3 +356,9 @@ bool glmc_vec2_refract(vec2 v, vec2 n, float eta, vec2 dest) { return glm_vec2_refract(v, n, eta, dest); } + +CGLM_EXPORT +void +glmc_vec2_swap(vec2 a, vec2 b) { + glm_vec2_swap(a, b); +} diff --git a/src/vec3.c b/src/vec3.c index a8c1083..65ed254 100644 --- a/src/vec3.c +++ b/src/vec3.c @@ -501,3 +501,9 @@ bool glmc_vec3_refract(vec3 v, vec3 n, float eta, vec3 dest) { return glm_vec3_refract(v, n, eta, dest); } + +CGLM_EXPORT +void +glmc_vec3_swap(vec3 a, vec3 b) { + glm_vec3_swap(a, b); +} diff --git a/src/vec4.c b/src/vec4.c index 4b08abf..cc8d15b 100644 --- a/src/vec4.c +++ b/src/vec4.c @@ -459,3 +459,9 @@ bool glmc_vec4_refract(vec4 v, vec4 n, float eta, vec4 dest) { return glm_vec4_refract(v, n, eta, dest); } + +CGLM_EXPORT +void +glmc_vec4_swap(vec4 a, vec4 b) { + glm_vec4_swap(a, b); +}