From 419aa5a56b1c1e53a174bc66786711c8943184d0 Mon Sep 17 00:00:00 2001 From: Dennis Schridde Date: Wed, 18 Jun 2008 18:26:13 +0000 Subject: [PATCH] New vector functions: Vector2i_New, Vector2i_Compare and use bool instead of BOOL git-svn-id: svn+ssh://svn.gna.org/svn/warzone/trunk@5264 4a71c877-e1ca-e34f-864e-861f7616d084 --- lib/ivis_common/pievector.h | 43 ++++++++++++++++++++++++++++--------- 1 file changed, 33 insertions(+), 10 deletions(-) diff --git a/lib/ivis_common/pievector.h b/lib/ivis_common/pievector.h index 53b5deb8b..e4f1e78a7 100644 --- a/lib/ivis_common/pievector.h +++ b/lib/ivis_common/pievector.h @@ -31,6 +31,19 @@ typedef struct { float x, y, z; } Vector3f; typedef struct { uint16_t x, y, z; } Vector3uw; //Only used for basedef.h BASE_ELEMENTS1. +/*! + * Create a Vector from x and y + * Needed for MSVC which doesn't support C99 struct assignments. + * \param x,y Coordinates + * \return New Vector + */ +static inline WZ_DECL_CONST Vector2i Vector2i_New(const int x, const int y) +{ + Vector2i dest = { x, y }; + return dest; +} + + /*! * Convert an integer vector to float * \param v Vector to convert @@ -43,6 +56,15 @@ static inline WZ_DECL_CONST Vector2f Vector2i_To2f(const Vector2i v) } +/*! + * \return true if both vectors are equal + */ +static inline WZ_DECL_CONST bool Vector2i_Compare(const Vector2i a, const Vector2i b) +{ + return a.x == b.x && a.y == b.y; +} + + /*! * Add op2 to op1. * \param[in] op1,op2 Operands @@ -120,7 +142,7 @@ static inline WZ_DECL_CONST int Vector2i_Length(const Vector2i v) * \param r The radius of the circle * \return If v falls within the circle */ -static inline WZ_DECL_CONST BOOL Vector2i_InCircle(const Vector2i v, const Vector2i c, const unsigned int r) +static inline WZ_DECL_CONST bool Vector2i_InCircle(const Vector2i v, const Vector2i c, const unsigned int r) { Vector2i delta = Vector2i_Sub(v, c); // Explictily cast to "unsigned int" because this number never can be @@ -133,6 +155,7 @@ static inline WZ_DECL_CONST BOOL Vector2i_InCircle(const Vector2i v, const Vecto /*! * Create a Vector from x and y + * Needed for MSVC which doesn't support C99 struct assignments. * \param x,y Coordinates * \return New Vector */ @@ -245,7 +268,7 @@ static inline WZ_DECL_CONST Vector3i Vector3f_To3i(const Vector3f v) /*! * \return true if both vectors are equal */ -static inline WZ_DECL_CONST BOOL Vector3f_Compare(const Vector3f a, const Vector3f b) +static inline WZ_DECL_CONST bool Vector3f_Compare(const Vector3f a, const Vector3f b) { return a.x == b.x && a.y == b.y && a.z == b.z; } @@ -254,8 +277,8 @@ static inline WZ_DECL_CONST BOOL Vector3f_Compare(const Vector3f a, const Vector /*! * Set the vector field by field, same as v = (Vector3f){x, y, z}; * Needed for MSVC which doesn't support C99 struct assignments. - * \param[out] v Vector to set - * \param[in] x,y,z Values to set to + * \param x,y,z Values to set to + * \return New vector */ static inline WZ_DECL_CONST Vector3f Vector3f_New(const float x, const float y, const float z) { @@ -384,7 +407,7 @@ static inline WZ_DECL_CONST Vector3f Vector3i_To3f(const Vector3i v) /*! * \return true if both vectors are equal */ -static inline WZ_DECL_CONST BOOL Vector3i_Compare(const Vector3i a, const Vector3i b) +static inline WZ_DECL_CONST bool Vector3i_Compare(const Vector3i a, const Vector3i b) { return a.x == b.x && a.y == b.y && a.z == b.z; } @@ -503,7 +526,7 @@ static inline WZ_DECL_CONST Vector3i Vector3i_Normalise(const Vector3i v) * \param r The radius of the sphere * \return If v falls within the sphere */ -static inline WZ_DECL_CONST BOOL Vector3i_InSphere (const Vector3i v, const Vector3i c, const unsigned int r) +static inline WZ_DECL_CONST bool Vector3i_InSphere (const Vector3i v, const Vector3i c, const unsigned int r) { Vector3i delta = Vector3i_Sub(v, c); // Explictily cast to "unsigned int" because this number never can be @@ -517,8 +540,8 @@ static inline WZ_DECL_CONST BOOL Vector3i_InSphere (const Vector3i v, const Vect /*! * Set the vector field by field, same as v = (Vector3i){x, y, z}; * Needed for MSVC which doesn't support C99 struct assignments. - * \param[out] v Vector to set - * \param[in] x,y,z Values to set to + * \param x,y,z Coordinates + * \return New Vector */ static inline WZ_DECL_CONST Vector3i Vector3i_New(const int x, const int y, const int z) { @@ -530,8 +553,8 @@ static inline WZ_DECL_CONST Vector3i Vector3i_New(const int x, const int y, cons /*! * Set the vector field by field, same as v = (Vector3uw){x, y, z}; * Needed for MSVC which doesn't support C99 struct assignments. - * \param[out] v Vector to set - * \param[in] x,y,z Values to set to + * \param x,y,z Coordinates + * \return New Vector */ static inline WZ_DECL_CONST Vector3uw Vector3uw_New(const unsigned int x, const unsigned int y, const unsigned int z) {