# HG changeset patch # User John Tsiombikas # Date 1380433579 -10800 # Node ID 9ba3e2fb8a337bd356d469fadcc523d3adaf214d # Parent 4deb0b12fe14de29b05220f321103c7d8db802d8 modified vmath to work with vs2012, still memory corruptions in 3dsmax... diff -r 4deb0b12fe14 -r 9ba3e2fb8a33 exporters/maxgoat/src/maxgoat.cc --- a/exporters/maxgoat/src/maxgoat.cc Sun Sep 29 08:20:19 2013 +0300 +++ b/exporters/maxgoat/src/maxgoat.cc Sun Sep 29 08:46:19 2013 +0300 @@ -36,8 +36,8 @@ class GoatExporter : public SceneExport { private: - //std::map mtlmap; - //std::map nodemap; + std::map mtlmap; + std::map nodemap; public: IGameScene *igame; @@ -118,8 +118,8 @@ int GoatExporter::DoExport(const MCHAR *name, ExpInterface *eiface, Interface *iface, BOOL non_interactive, DWORD opt) { - //mtlmap.clear(); - //nodemap.clear(); + mtlmap.clear(); + nodemap.clear(); char fname[512]; wcstombs(fname, name, sizeof fname - 1); @@ -243,7 +243,7 @@ } goat3d_add_mtl(goat, mtl); - //mtlmap[maxmtl] = mtl; + mtlmap[maxmtl] = mtl; } } } @@ -280,7 +280,7 @@ // get the node material and assign it to the mesh IGameMaterial *maxmtl = maxnode->GetNodeMaterial(); - goat3d_material *mtl = 0;//mtlmap[maxmtl]; + goat3d_material *mtl = mtlmap[maxmtl]; if(mtl) { goat3d_set_mesh_mtl(mesh, mtl); } @@ -328,11 +328,11 @@ maxobj->InitializeData(); int num_verts = maxmesh->GetNumberOfVerts(); - assert(maxmesh->GetNumberOfTexVerts() == num_verts); + //assert(maxmesh->GetNumberOfTexVerts() == num_verts); float *vertices = new float[num_verts * 3]; float *normals = new float[num_verts * 3]; - float *texcoords = new float[num_verts * 2]; + //float *texcoords = new float[num_verts * 2]; for(int i=0; iGetVertex(i, true); @@ -350,20 +350,20 @@ normals[vidx * 3 + 2] = norm.z; } - for(int i=0; iGetNumberOfTexVerts(); i++) { + /*for(int i=0; iGetNumberOfTexVerts(); i++) { Point3 tex = maxmesh->GetTexVertex(i); texcoords[i * 2] = tex.x; texcoords[i * 2 + 1] = tex.y; - } + }*/ goat3d_set_mesh_attribs(mesh, GOAT3D_MESH_ATTR_VERTEX, vertices, num_verts); goat3d_set_mesh_attribs(mesh, GOAT3D_MESH_ATTR_NORMAL, normals, num_verts); - goat3d_set_mesh_attribs(mesh, GOAT3D_MESH_ATTR_TEXCOORD, texcoords, num_verts); + //goat3d_set_mesh_attribs(mesh, GOAT3D_MESH_ATTR_TEXCOORD, texcoords, num_verts); delete [] vertices; delete [] normals; - delete [] texcoords; + //delete [] texcoords; } void GoatExporter::process_light(goat3d *goat, goat3d_light *light, IGameObject *maxobj) diff -r 4deb0b12fe14 -r 9ba3e2fb8a33 libs/vmath/matrix.h --- a/libs/vmath/matrix.h Sun Sep 29 08:20:19 2013 +0300 +++ b/libs/vmath/matrix.h Sun Sep 29 08:46:19 2013 +0300 @@ -27,27 +27,27 @@ #endif /* __cplusplus */ /* C matrix 3x3 functions */ -static inline void m3_identity(mat3_t m); -static inline void m3_cons(mat3_t m, +static VMATH_INLINE void m3_identity(mat3_t m); +static VMATH_INLINE void m3_cons(mat3_t m, scalar_t m11, scalar_t m12, scalar_t m13, scalar_t m21, scalar_t m22, scalar_t m23, scalar_t m31, scalar_t m32, scalar_t m33); -static inline void m3_copy(mat3_t dest, mat3_t src); +static VMATH_INLINE void m3_copy(mat3_t dest, mat3_t src); void m3_to_m4(mat4_t dest, mat3_t src); void m3_print(FILE *fp, mat3_t m); /* C matrix 4x4 functions */ -static inline void m4_identity(mat4_t m); -static inline void m4_cons(mat4_t m, +static VMATH_INLINE void m4_identity(mat4_t m); +static VMATH_INLINE void m4_cons(mat4_t m, scalar_t m11, scalar_t m12, scalar_t m13, scalar_t m14, scalar_t m21, scalar_t m22, scalar_t m23, scalar_t m24, scalar_t m31, scalar_t m32, scalar_t m33, scalar_t m34, scalar_t m41, scalar_t m42, scalar_t m43, scalar_t m44); -static inline void m4_copy(mat4_t dest, mat4_t src); +static VMATH_INLINE void m4_copy(mat4_t dest, mat4_t src); void m4_to_m3(mat3_t dest, mat4_t src); -static inline void m4_mult(mat4_t res, mat4_t m1, mat4_t m2); +static VMATH_INLINE void m4_mult(mat4_t res, mat4_t m1, mat4_t m2); void m4_set_translation(mat4_t m, scalar_t x, scalar_t y, scalar_t z); void m4_translate(mat4_t m, scalar_t x, scalar_t y, scalar_t z); @@ -69,8 +69,8 @@ void m4_set_scaling(mat4_t m, scalar_t x, scalar_t y, scalar_t z); void m4_scale(mat4_t m, scalar_t x, scalar_t y, scalar_t z); -static inline void m4_set_column(mat4_t m, vec4_t v, int idx); -static inline void m4_set_row(mat4_t m, vec4_t v, int idx); +static VMATH_INLINE void m4_set_column(mat4_t m, vec4_t v, int idx); +static VMATH_INLINE void m4_set_row(mat4_t m, vec4_t v, int idx); void m4_transpose(mat4_t res, mat4_t m); scalar_t m4_determinant(mat4_t m); @@ -116,10 +116,10 @@ friend void operator *=(Matrix3x3 &mat, scalar_t scalar); - inline scalar_t *operator [](int index); - inline const scalar_t *operator [](int index) const; + VMATH_INLINE scalar_t *operator [](int index); + VMATH_INLINE const scalar_t *operator [](int index) const; - inline void reset_identity(); + VMATH_INLINE void reset_identity(); void translate(const Vector2 &trans); void set_translation(const Vector2 &trans); @@ -190,7 +190,7 @@ friend void operator +=(Matrix4x4 &m1, const Matrix4x4 &m2); friend void operator -=(Matrix4x4 &m1, const Matrix4x4 &m2); - friend inline void operator *=(Matrix4x4 &m1, const Matrix4x4 &m2); + friend VMATH_INLINE void operator *=(Matrix4x4 &m1, const Matrix4x4 &m2); /* binary operations matrix (op) scalar and scalar (op) matrix */ friend Matrix4x4 operator *(const Matrix4x4 &mat, scalar_t scalar); @@ -198,10 +198,10 @@ friend void operator *=(Matrix4x4 &mat, scalar_t scalar); - inline scalar_t *operator [](int index); - inline const scalar_t *operator [](int index) const; + VMATH_INLINE scalar_t *operator [](int index); + VMATH_INLINE const scalar_t *operator [](int index) const; - inline void reset_identity(); + VMATH_INLINE void reset_identity(); void translate(const Vector3 &trans); void set_translation(const Vector3 &trans); @@ -239,11 +239,11 @@ /* binary operations matrix (op) matrix */ Matrix4x4 operator +(const Matrix4x4 &m1, const Matrix4x4 &m2); Matrix4x4 operator -(const Matrix4x4 &m1, const Matrix4x4 &m2); -inline Matrix4x4 operator *(const Matrix4x4 &m1, const Matrix4x4 &m2); +VMATH_INLINE Matrix4x4 operator *(const Matrix4x4 &m1, const Matrix4x4 &m2); void operator +=(Matrix4x4 &m1, const Matrix4x4 &m2); void operator -=(Matrix4x4 &m1, const Matrix4x4 &m2); -inline void operator *=(Matrix4x4 &m1, const Matrix4x4 &m2); +VMATH_INLINE void operator *=(Matrix4x4 &m1, const Matrix4x4 &m2); /* binary operations matrix (op) scalar and scalar (op) matrix */ Matrix4x4 operator *(const Matrix4x4 &mat, scalar_t scalar); diff -r 4deb0b12fe14 -r 9ba3e2fb8a33 libs/vmath/matrix.inl --- a/libs/vmath/matrix.inl Sun Sep 29 08:20:19 2013 +0300 +++ b/libs/vmath/matrix.inl Sun Sep 29 08:46:19 2013 +0300 @@ -23,13 +23,13 @@ #endif /* __cplusplus */ /* C matrix 3x3 functions */ -static inline void m3_identity(mat3_t m) +static VMATH_INLINE void m3_identity(mat3_t m) { static const mat3_t id = {{1, 0, 0}, {0, 1, 0}, {0, 0, 1}}; memcpy(m, id, sizeof id); } -static inline void m3_cons(mat3_t m, +static VMATH_INLINE void m3_cons(mat3_t m, scalar_t m11, scalar_t m12, scalar_t m13, scalar_t m21, scalar_t m22, scalar_t m23, scalar_t m31, scalar_t m32, scalar_t m33) @@ -39,20 +39,20 @@ m[2][0] = m31; m[2][1] = m32; m[2][2] = m33; } -static inline void m3_copy(mat3_t dest, mat3_t src) +static VMATH_INLINE void m3_copy(mat3_t dest, mat3_t src) { memcpy(dest, src, sizeof(mat3_t)); } /* C matrix 4x4 functions */ -static inline void m4_identity(mat4_t m) +static VMATH_INLINE void m4_identity(mat4_t m) { static const mat4_t id = {{1, 0, 0, 0}, {0, 1, 0, 0}, {0, 0, 1, 0}, {0, 0, 0, 1}}; memcpy(m, id, sizeof id); } -static inline void m4_cons(mat4_t m, +static VMATH_INLINE void m4_cons(mat4_t m, scalar_t m11, scalar_t m12, scalar_t m13, scalar_t m14, scalar_t m21, scalar_t m22, scalar_t m23, scalar_t m24, scalar_t m31, scalar_t m32, scalar_t m33, scalar_t m34, @@ -64,12 +64,12 @@ m[3][0] = m41; m[3][1] = m42; m[3][2] = m43; m[3][3] = m44; } -static inline void m4_copy(mat4_t dest, mat4_t src) +static VMATH_INLINE void m4_copy(mat4_t dest, mat4_t src) { memcpy(dest, src, sizeof(mat4_t)); } -static inline void m4_mult(mat4_t res, mat4_t m1, mat4_t m2) +static VMATH_INLINE void m4_mult(mat4_t res, mat4_t m1, mat4_t m2) { mat4_t tmp; @@ -105,7 +105,7 @@ m4_copy(res, tmp); } -static inline void m4_set_column(mat4_t m, vec4_t v, int idx) +static VMATH_INLINE void m4_set_column(mat4_t m, vec4_t v, int idx) { m[0][idx] = v.x; m[1][idx] = v.y; @@ -113,7 +113,7 @@ m[3][idx] = v.w; } -static inline void m4_set_row(mat4_t m, vec4_t v, int idx) +static VMATH_INLINE void m4_set_row(mat4_t m, vec4_t v, int idx) { m[idx][0] = v.x; m[idx][1] = v.y; @@ -125,8 +125,8 @@ } /* extern "C" */ -/* unrolled to hell and inline */ -inline Matrix4x4 operator *(const Matrix4x4 &m1, const Matrix4x4 &m2) +/* unrolled to hell and VMATH_INLINE */ +VMATH_INLINE Matrix4x4 operator *(const Matrix4x4 &m1, const Matrix4x4 &m2) { Matrix4x4 res; @@ -161,39 +161,39 @@ return res; } -inline void operator *=(Matrix4x4 &m1, const Matrix4x4 &m2) +VMATH_INLINE void operator *=(Matrix4x4 &m1, const Matrix4x4 &m2) { Matrix4x4 res = m1 * m2; m1 = res; } -inline scalar_t *Matrix3x3::operator [](int index) +VMATH_INLINE scalar_t *Matrix3x3::operator [](int index) { return m[index]; } -inline const scalar_t *Matrix3x3::operator [](int index) const +VMATH_INLINE const scalar_t *Matrix3x3::operator [](int index) const { return m[index]; } -inline void Matrix3x3::reset_identity() +VMATH_INLINE void Matrix3x3::reset_identity() { *this = identity; } -inline scalar_t *Matrix4x4::operator [](int index) +VMATH_INLINE scalar_t *Matrix4x4::operator [](int index) { return m[index]; } -inline const scalar_t *Matrix4x4::operator [](int index) const +VMATH_INLINE const scalar_t *Matrix4x4::operator [](int index) const { return m[index]; } -inline void Matrix4x4::reset_identity() +VMATH_INLINE void Matrix4x4::reset_identity() { *this = identity; } diff -r 4deb0b12fe14 -r 9ba3e2fb8a33 libs/vmath/quat.h --- a/libs/vmath/quat.h Sun Sep 29 08:20:19 2013 +0300 +++ b/libs/vmath/quat.h Sun Sep 29 08:46:19 2013 +0300 @@ -37,21 +37,21 @@ #define quat_sub v4_sub #define quat_neg v4_neg -static inline quat_t quat_mul(quat_t q1, quat_t q2); +static VMATH_INLINE quat_t quat_mul(quat_t q1, quat_t q2); -static inline quat_t quat_conjugate(quat_t q); +static VMATH_INLINE quat_t quat_conjugate(quat_t q); #define quat_length v4_length #define quat_length_sq v4_length_sq #define quat_normalize v4_normalize -static inline quat_t quat_inverse(quat_t q); +static VMATH_INLINE quat_t quat_inverse(quat_t q); quat_t quat_rotate(quat_t q, scalar_t angle, scalar_t x, scalar_t y, scalar_t z); quat_t quat_rotate_quat(quat_t q, quat_t rotq); -static inline void quat_to_mat3(mat3_t res, quat_t q); -static inline void quat_to_mat4(mat4_t res, quat_t q); +static VMATH_INLINE void quat_to_mat3(mat3_t res, quat_t q); +static VMATH_INLINE void quat_to_mat4(mat4_t res, quat_t q); #define quat_lerp quat_slerp quat_t quat_slerp(quat_t q1, quat_t q2, scalar_t t); @@ -107,7 +107,7 @@ }; Quaternion slerp(const Quaternion &q1, const Quaternion &q2, scalar_t t); -inline Quaternion lerp(const Quaternion &q1, const Quaternion &q2, scalar_t t); +VMATH_INLINE Quaternion lerp(const Quaternion &q1, const Quaternion &q2, scalar_t t); std::ostream &operator <<(std::ostream &out, const Quaternion &q); diff -r 4deb0b12fe14 -r 9ba3e2fb8a33 libs/vmath/quat.inl --- a/libs/vmath/quat.inl Sun Sep 29 08:20:19 2013 +0300 +++ b/libs/vmath/quat.inl Sun Sep 29 08:46:19 2013 +0300 @@ -23,7 +23,7 @@ extern "C" { #endif /* __cplusplus */ -static inline quat_t quat_mul(quat_t q1, quat_t q2) +static VMATH_INLINE quat_t quat_mul(quat_t q1, quat_t q2) { quat_t res; vec3_t v1 = quat_vec(q1); @@ -37,7 +37,7 @@ return res; } -static inline quat_t quat_conjugate(quat_t q) +static VMATH_INLINE quat_t quat_conjugate(quat_t q) { q.x = -q.x; q.y = -q.y; @@ -45,7 +45,7 @@ return q; } -static inline quat_t quat_inverse(quat_t q) +static VMATH_INLINE quat_t quat_inverse(quat_t q) { scalar_t lensq = quat_length_sq(q); q = quat_conjugate(q); @@ -56,14 +56,14 @@ return q; } -static inline void quat_to_mat3(mat3_t res, quat_t q) +static VMATH_INLINE void quat_to_mat3(mat3_t res, quat_t q) { m3_cons(res, 1.0 - 2.0 * q.y*q.y - 2.0 * q.z*q.z, 2.0 * q.x * q.y - 2.0 * q.w * q.z, 2.0 * q.z * q.x + 2.0 * q.w * q.y, 2.0 * q.x * q.y + 2.0 * q.w * q.z, 1.0 - 2.0 * q.x*q.x - 2.0 * q.z*q.z, 2.0 * q.y * q.z - 2.0 * q.w * q.x, 2.0 * q.z * q.x - 2.0 * q.w * q.y, 2.0 * q.y * q.z + 2.0 * q.w * q.x, 1.0 - 2.0 * q.x*q.x - 2.0 * q.y*q.y); } -static inline void quat_to_mat4(mat4_t res, quat_t q) +static VMATH_INLINE void quat_to_mat4(mat4_t res, quat_t q) { m4_cons(res, 1.0 - 2.0 * q.y*q.y - 2.0 * q.z*q.z, 2.0 * q.x * q.y - 2.0 * q.w * q.z, 2.0 * q.z * q.x + 2.0 * q.w * q.y, 0, 2.0 * q.x * q.y + 2.0 * q.w * q.z, 1.0 - 2.0 * q.x*q.x - 2.0 * q.z*q.z, 2.0 * q.y * q.z - 2.0 * q.w * q.x, 0, @@ -74,7 +74,7 @@ #ifdef __cplusplus } /* extern "C" */ -inline Quaternion lerp(const Quaternion &a, const Quaternion &b, scalar_t t) +VMATH_INLINE Quaternion lerp(const Quaternion &a, const Quaternion &b, scalar_t t) { return slerp(a, b, t); } diff -r 4deb0b12fe14 -r 9ba3e2fb8a33 libs/vmath/ray.h --- a/libs/vmath/ray.h Sun Sep 29 08:20:19 2013 +0300 +++ b/libs/vmath/ray.h Sun Sep 29 08:46:19 2013 +0300 @@ -30,7 +30,7 @@ extern "C" { #endif /* __cplusplus */ -static inline ray_t ray_cons(vec3_t origin, vec3_t dir); +static VMATH_INLINE ray_t ray_cons(vec3_t origin, vec3_t dir); ray_t ray_transform(ray_t r, mat4_t m); #ifdef __cplusplus @@ -55,8 +55,8 @@ Ray transformed(const Matrix4x4 &xform) const; }; -inline Ray reflect_ray(const Ray &inray, const Vector3 &norm); -inline Ray refract_ray(const Ray &inray, const Vector3 &norm, scalar_t from_ior, scalar_t to_ior); +VMATH_INLINE Ray reflect_ray(const Ray &inray, const Vector3 &norm); +VMATH_INLINE Ray refract_ray(const Ray &inray, const Vector3 &norm, scalar_t from_ior, scalar_t to_ior); #endif /* __cplusplus */ #include "ray.inl" diff -r 4deb0b12fe14 -r 9ba3e2fb8a33 libs/vmath/ray.inl --- a/libs/vmath/ray.inl Sun Sep 29 08:20:19 2013 +0300 +++ b/libs/vmath/ray.inl Sun Sep 29 08:46:19 2013 +0300 @@ -20,7 +20,7 @@ extern "C" { #endif /* __cplusplus */ -static inline ray_t ray_cons(vec3_t origin, vec3_t dir) +static VMATH_INLINE ray_t ray_cons(vec3_t origin, vec3_t dir) { ray_t r; r.origin = origin; @@ -31,14 +31,14 @@ #ifdef __cplusplus } -inline Ray reflect_ray(const Ray &inray, const Vector3 &norm) +VMATH_INLINE Ray reflect_ray(const Ray &inray, const Vector3 &norm) { Ray ray = inray; ray.dir = ray.dir.reflection(norm); return ray; } -inline Ray refract_ray(const Ray &inray, const Vector3 &norm, scalar_t from_ior, scalar_t to_ior) +VMATH_INLINE Ray refract_ray(const Ray &inray, const Vector3 &norm, scalar_t from_ior, scalar_t to_ior) { Ray ray = inray; ray.dir = ray.dir.refraction(norm, from_ior, to_ior); diff -r 4deb0b12fe14 -r 9ba3e2fb8a33 libs/vmath/vector.h --- a/libs/vmath/vector.h Sun Sep 29 08:20:19 2013 +0300 +++ b/libs/vmath/vector.h Sun Sep 29 08:46:19 2013 +0300 @@ -27,57 +27,57 @@ #endif /* __cplusplus */ /* C 2D vector functions */ -static inline vec2_t v2_cons(scalar_t x, scalar_t y); -static inline void v2_print(FILE *fp, vec2_t v); +static VMATH_INLINE vec2_t v2_cons(scalar_t x, scalar_t y); +static VMATH_INLINE void v2_print(FILE *fp, vec2_t v); -static inline vec2_t v2_add(vec2_t v1, vec2_t v2); -static inline vec2_t v2_sub(vec2_t v1, vec2_t v2); -static inline vec2_t v2_scale(vec2_t v, scalar_t s); -static inline scalar_t v2_dot(vec2_t v1, vec2_t v2); -static inline scalar_t v2_length(vec2_t v); -static inline scalar_t v2_length_sq(vec2_t v); -static inline vec2_t v2_normalize(vec2_t v); +static VMATH_INLINE vec2_t v2_add(vec2_t v1, vec2_t v2); +static VMATH_INLINE vec2_t v2_sub(vec2_t v1, vec2_t v2); +static VMATH_INLINE vec2_t v2_scale(vec2_t v, scalar_t s); +static VMATH_INLINE scalar_t v2_dot(vec2_t v1, vec2_t v2); +static VMATH_INLINE scalar_t v2_length(vec2_t v); +static VMATH_INLINE scalar_t v2_length_sq(vec2_t v); +static VMATH_INLINE vec2_t v2_normalize(vec2_t v); -static inline vec2_t v2_lerp(vec2_t v1, vec2_t v2, scalar_t t); +static VMATH_INLINE vec2_t v2_lerp(vec2_t v1, vec2_t v2, scalar_t t); /* C 3D vector functions */ -static inline vec3_t v3_cons(scalar_t x, scalar_t y, scalar_t z); -static inline void v3_print(FILE *fp, vec3_t v); +static VMATH_INLINE vec3_t v3_cons(scalar_t x, scalar_t y, scalar_t z); +static VMATH_INLINE void v3_print(FILE *fp, vec3_t v); -static inline vec3_t v3_add(vec3_t v1, vec3_t v2); -static inline vec3_t v3_sub(vec3_t v1, vec3_t v2); -static inline vec3_t v3_neg(vec3_t v); -static inline vec3_t v3_mul(vec3_t v1, vec3_t v2); -static inline vec3_t v3_scale(vec3_t v1, scalar_t s); -static inline scalar_t v3_dot(vec3_t v1, vec3_t v2); -static inline vec3_t v3_cross(vec3_t v1, vec3_t v2); -static inline scalar_t v3_length(vec3_t v); -static inline scalar_t v3_length_sq(vec3_t v); -static inline vec3_t v3_normalize(vec3_t v); -static inline vec3_t v3_transform(vec3_t v, mat4_t m); +static VMATH_INLINE vec3_t v3_add(vec3_t v1, vec3_t v2); +static VMATH_INLINE vec3_t v3_sub(vec3_t v1, vec3_t v2); +static VMATH_INLINE vec3_t v3_neg(vec3_t v); +static VMATH_INLINE vec3_t v3_mul(vec3_t v1, vec3_t v2); +static VMATH_INLINE vec3_t v3_scale(vec3_t v1, scalar_t s); +static VMATH_INLINE scalar_t v3_dot(vec3_t v1, vec3_t v2); +static VMATH_INLINE vec3_t v3_cross(vec3_t v1, vec3_t v2); +static VMATH_INLINE scalar_t v3_length(vec3_t v); +static VMATH_INLINE scalar_t v3_length_sq(vec3_t v); +static VMATH_INLINE vec3_t v3_normalize(vec3_t v); +static VMATH_INLINE vec3_t v3_transform(vec3_t v, mat4_t m); -static inline vec3_t v3_rotate(vec3_t v, scalar_t x, scalar_t y, scalar_t z); -static inline vec3_t v3_rotate_axis(vec3_t v, scalar_t angle, scalar_t x, scalar_t y, scalar_t z); -static inline vec3_t v3_rotate_quat(vec3_t v, quat_t q); +static VMATH_INLINE vec3_t v3_rotate(vec3_t v, scalar_t x, scalar_t y, scalar_t z); +static VMATH_INLINE vec3_t v3_rotate_axis(vec3_t v, scalar_t angle, scalar_t x, scalar_t y, scalar_t z); +static VMATH_INLINE vec3_t v3_rotate_quat(vec3_t v, quat_t q); -static inline vec3_t v3_reflect(vec3_t v, vec3_t n); +static VMATH_INLINE vec3_t v3_reflect(vec3_t v, vec3_t n); -static inline vec3_t v3_lerp(vec3_t v1, vec3_t v2, scalar_t t); +static VMATH_INLINE vec3_t v3_lerp(vec3_t v1, vec3_t v2, scalar_t t); /* C 4D vector functions */ -static inline vec4_t v4_cons(scalar_t x, scalar_t y, scalar_t z, scalar_t w); -static inline void v4_print(FILE *fp, vec4_t v); +static VMATH_INLINE vec4_t v4_cons(scalar_t x, scalar_t y, scalar_t z, scalar_t w); +static VMATH_INLINE void v4_print(FILE *fp, vec4_t v); -static inline vec4_t v4_add(vec4_t v1, vec4_t v2); -static inline vec4_t v4_sub(vec4_t v1, vec4_t v2); -static inline vec4_t v4_neg(vec4_t v); -static inline vec4_t v4_mul(vec4_t v1, vec4_t v2); -static inline vec4_t v4_scale(vec4_t v, scalar_t s); -static inline scalar_t v4_dot(vec4_t v1, vec4_t v2); -static inline scalar_t v4_length(vec4_t v); -static inline scalar_t v4_length_sq(vec4_t v); -static inline vec4_t v4_normalize(vec4_t v); -static inline vec4_t v4_transform(vec4_t v, mat4_t m); +static VMATH_INLINE vec4_t v4_add(vec4_t v1, vec4_t v2); +static VMATH_INLINE vec4_t v4_sub(vec4_t v1, vec4_t v2); +static VMATH_INLINE vec4_t v4_neg(vec4_t v); +static VMATH_INLINE vec4_t v4_mul(vec4_t v1, vec4_t v2); +static VMATH_INLINE vec4_t v4_scale(vec4_t v, scalar_t s); +static VMATH_INLINE scalar_t v4_dot(vec4_t v1, vec4_t v2); +static VMATH_INLINE scalar_t v4_length(vec4_t v); +static VMATH_INLINE scalar_t v4_length_sq(vec4_t v); +static VMATH_INLINE vec4_t v4_normalize(vec4_t v); +static VMATH_INLINE vec4_t v4_transform(vec4_t v, mat4_t m); #ifdef __cplusplus } /* extern "C" */ @@ -95,11 +95,11 @@ Vector2(const Vector3 &vec); Vector2(const Vector4 &vec); - inline scalar_t &operator [](int elem); - inline const scalar_t &operator [](int elem) const; + VMATH_INLINE scalar_t &operator [](int elem); + VMATH_INLINE const scalar_t &operator [](int elem) const; - inline scalar_t length() const; - inline scalar_t length_sq() const; + VMATH_INLINE scalar_t length() const; + VMATH_INLINE scalar_t length_sq() const; void normalize(); Vector2 normalized() const; @@ -114,39 +114,39 @@ }; /* unary operations */ -inline Vector2 operator -(const Vector2 &vec); +VMATH_INLINE Vector2 operator -(const Vector2 &vec); /* binary vector (op) vector operations */ -inline scalar_t dot_product(const Vector2 &v1, const Vector2 &v2); +VMATH_INLINE scalar_t dot_product(const Vector2 &v1, const Vector2 &v2); -inline Vector2 operator +(const Vector2 &v1, const Vector2 &v2); -inline Vector2 operator -(const Vector2 &v1, const Vector2 &v2); -inline Vector2 operator *(const Vector2 &v1, const Vector2 &v2); -inline Vector2 operator /(const Vector2 &v1, const Vector2 &v2); -inline bool operator ==(const Vector2 &v1, const Vector2 &v2); +VMATH_INLINE Vector2 operator +(const Vector2 &v1, const Vector2 &v2); +VMATH_INLINE Vector2 operator -(const Vector2 &v1, const Vector2 &v2); +VMATH_INLINE Vector2 operator *(const Vector2 &v1, const Vector2 &v2); +VMATH_INLINE Vector2 operator /(const Vector2 &v1, const Vector2 &v2); +VMATH_INLINE bool operator ==(const Vector2 &v1, const Vector2 &v2); -inline void operator +=(Vector2 &v1, const Vector2 &v2); -inline void operator -=(Vector2 &v1, const Vector2 &v2); -inline void operator *=(Vector2 &v1, const Vector2 &v2); -inline void operator /=(Vector2 &v1, const Vector2 &v2); +VMATH_INLINE void operator +=(Vector2 &v1, const Vector2 &v2); +VMATH_INLINE void operator -=(Vector2 &v1, const Vector2 &v2); +VMATH_INLINE void operator *=(Vector2 &v1, const Vector2 &v2); +VMATH_INLINE void operator /=(Vector2 &v1, const Vector2 &v2); /* binary vector (op) scalar and scalar (op) vector operations */ -inline Vector2 operator +(const Vector2 &vec, scalar_t scalar); -inline Vector2 operator +(scalar_t scalar, const Vector2 &vec); -inline Vector2 operator -(const Vector2 &vec, scalar_t scalar); -inline Vector2 operator *(const Vector2 &vec, scalar_t scalar); -inline Vector2 operator *(scalar_t scalar, const Vector2 &vec); -inline Vector2 operator /(const Vector2 &vec, scalar_t scalar); +VMATH_INLINE Vector2 operator +(const Vector2 &vec, scalar_t scalar); +VMATH_INLINE Vector2 operator +(scalar_t scalar, const Vector2 &vec); +VMATH_INLINE Vector2 operator -(const Vector2 &vec, scalar_t scalar); +VMATH_INLINE Vector2 operator *(const Vector2 &vec, scalar_t scalar); +VMATH_INLINE Vector2 operator *(scalar_t scalar, const Vector2 &vec); +VMATH_INLINE Vector2 operator /(const Vector2 &vec, scalar_t scalar); -inline void operator +=(Vector2 &vec, scalar_t scalar); -inline void operator -=(Vector2 &vec, scalar_t scalar); -inline void operator *=(Vector2 &vec, scalar_t scalar); -inline void operator /=(Vector2 &vec, scalar_t scalar); +VMATH_INLINE void operator +=(Vector2 &vec, scalar_t scalar); +VMATH_INLINE void operator -=(Vector2 &vec, scalar_t scalar); +VMATH_INLINE void operator *=(Vector2 &vec, scalar_t scalar); +VMATH_INLINE void operator /=(Vector2 &vec, scalar_t scalar); std::ostream &operator <<(std::ostream &out, const Vector2 &vec); -inline Vector2 lerp(const Vector2 &a, const Vector2 &b, scalar_t t); -inline Vector2 catmull_rom_spline(const Vector2 &v0, const Vector2 &v1, +VMATH_INLINE Vector2 lerp(const Vector2 &a, const Vector2 &b, scalar_t t); +VMATH_INLINE Vector2 catmull_rom_spline(const Vector2 &v0, const Vector2 &v1, const Vector2 &v2, const Vector2 &v3, scalar_t t); /* 3D Vector */ @@ -162,11 +162,11 @@ Vector3 &operator =(const SphVector &sph); - inline scalar_t &operator [](int elem); - inline const scalar_t &operator [](int elem) const; + VMATH_INLINE scalar_t &operator [](int elem); + VMATH_INLINE const scalar_t &operator [](int elem) const; - inline scalar_t length() const; - inline scalar_t length_sq() const; + VMATH_INLINE scalar_t length() const; + VMATH_INLINE scalar_t length_sq() const; void normalize(); Vector3 normalized() const; @@ -186,40 +186,40 @@ }; /* unary operations */ -inline Vector3 operator -(const Vector3 &vec); +VMATH_INLINE Vector3 operator -(const Vector3 &vec); /* binary vector (op) vector operations */ -inline scalar_t dot_product(const Vector3 &v1, const Vector3 &v2); -inline Vector3 cross_product(const Vector3 &v1, const Vector3 &v2); +VMATH_INLINE scalar_t dot_product(const Vector3 &v1, const Vector3 &v2); +VMATH_INLINE Vector3 cross_product(const Vector3 &v1, const Vector3 &v2); -inline Vector3 operator +(const Vector3 &v1, const Vector3 &v2); -inline Vector3 operator -(const Vector3 &v1, const Vector3 &v2); -inline Vector3 operator *(const Vector3 &v1, const Vector3 &v2); -inline Vector3 operator /(const Vector3 &v1, const Vector3 &v2); -inline bool operator ==(const Vector3 &v1, const Vector3 &v2); +VMATH_INLINE Vector3 operator +(const Vector3 &v1, const Vector3 &v2); +VMATH_INLINE Vector3 operator -(const Vector3 &v1, const Vector3 &v2); +VMATH_INLINE Vector3 operator *(const Vector3 &v1, const Vector3 &v2); +VMATH_INLINE Vector3 operator /(const Vector3 &v1, const Vector3 &v2); +VMATH_INLINE bool operator ==(const Vector3 &v1, const Vector3 &v2); -inline void operator +=(Vector3 &v1, const Vector3 &v2); -inline void operator -=(Vector3 &v1, const Vector3 &v2); -inline void operator *=(Vector3 &v1, const Vector3 &v2); -inline void operator /=(Vector3 &v1, const Vector3 &v2); +VMATH_INLINE void operator +=(Vector3 &v1, const Vector3 &v2); +VMATH_INLINE void operator -=(Vector3 &v1, const Vector3 &v2); +VMATH_INLINE void operator *=(Vector3 &v1, const Vector3 &v2); +VMATH_INLINE void operator /=(Vector3 &v1, const Vector3 &v2); /* binary vector (op) scalar and scalar (op) vector operations */ -inline Vector3 operator +(const Vector3 &vec, scalar_t scalar); -inline Vector3 operator +(scalar_t scalar, const Vector3 &vec); -inline Vector3 operator -(const Vector3 &vec, scalar_t scalar); -inline Vector3 operator *(const Vector3 &vec, scalar_t scalar); -inline Vector3 operator *(scalar_t scalar, const Vector3 &vec); -inline Vector3 operator /(const Vector3 &vec, scalar_t scalar); +VMATH_INLINE Vector3 operator +(const Vector3 &vec, scalar_t scalar); +VMATH_INLINE Vector3 operator +(scalar_t scalar, const Vector3 &vec); +VMATH_INLINE Vector3 operator -(const Vector3 &vec, scalar_t scalar); +VMATH_INLINE Vector3 operator *(const Vector3 &vec, scalar_t scalar); +VMATH_INLINE Vector3 operator *(scalar_t scalar, const Vector3 &vec); +VMATH_INLINE Vector3 operator /(const Vector3 &vec, scalar_t scalar); -inline void operator +=(Vector3 &vec, scalar_t scalar); -inline void operator -=(Vector3 &vec, scalar_t scalar); -inline void operator *=(Vector3 &vec, scalar_t scalar); -inline void operator /=(Vector3 &vec, scalar_t scalar); +VMATH_INLINE void operator +=(Vector3 &vec, scalar_t scalar); +VMATH_INLINE void operator -=(Vector3 &vec, scalar_t scalar); +VMATH_INLINE void operator *=(Vector3 &vec, scalar_t scalar); +VMATH_INLINE void operator /=(Vector3 &vec, scalar_t scalar); std::ostream &operator <<(std::ostream &out, const Vector3 &vec); -inline Vector3 lerp(const Vector3 &a, const Vector3 &b, scalar_t t); -inline Vector3 catmull_rom_spline(const Vector3 &v0, const Vector3 &v1, +VMATH_INLINE Vector3 lerp(const Vector3 &a, const Vector3 &b, scalar_t t); +VMATH_INLINE Vector3 catmull_rom_spline(const Vector3 &v0, const Vector3 &v1, const Vector3 &v2, const Vector3 &v3, scalar_t t); /* 4D Vector */ @@ -232,11 +232,11 @@ Vector4(const Vector2 &vec); Vector4(const Vector3 &vec); - inline scalar_t &operator [](int elem); - inline const scalar_t &operator [](int elem) const; + VMATH_INLINE scalar_t &operator [](int elem); + VMATH_INLINE const scalar_t &operator [](int elem) const; - inline scalar_t length() const; - inline scalar_t length_sq() const; + VMATH_INLINE scalar_t length() const; + VMATH_INLINE scalar_t length_sq() const; void normalize(); Vector4 normalized() const; @@ -249,40 +249,40 @@ /* unary operations */ -inline Vector4 operator -(const Vector4 &vec); +VMATH_INLINE Vector4 operator -(const Vector4 &vec); /* binary vector (op) vector operations */ -inline scalar_t dot_product(const Vector4 &v1, const Vector4 &v2); -inline Vector4 cross_product(const Vector4 &v1, const Vector4 &v2, const Vector4 &v3); +VMATH_INLINE scalar_t dot_product(const Vector4 &v1, const Vector4 &v2); +VMATH_INLINE Vector4 cross_product(const Vector4 &v1, const Vector4 &v2, const Vector4 &v3); -inline Vector4 operator +(const Vector4 &v1, const Vector4 &v2); -inline Vector4 operator -(const Vector4 &v1, const Vector4 &v2); -inline Vector4 operator *(const Vector4 &v1, const Vector4 &v2); -inline Vector4 operator /(const Vector4 &v1, const Vector4 &v2); -inline bool operator ==(const Vector4 &v1, const Vector4 &v2); +VMATH_INLINE Vector4 operator +(const Vector4 &v1, const Vector4 &v2); +VMATH_INLINE Vector4 operator -(const Vector4 &v1, const Vector4 &v2); +VMATH_INLINE Vector4 operator *(const Vector4 &v1, const Vector4 &v2); +VMATH_INLINE Vector4 operator /(const Vector4 &v1, const Vector4 &v2); +VMATH_INLINE bool operator ==(const Vector4 &v1, const Vector4 &v2); -inline void operator +=(Vector4 &v1, const Vector4 &v2); -inline void operator -=(Vector4 &v1, const Vector4 &v2); -inline void operator *=(Vector4 &v1, const Vector4 &v2); -inline void operator /=(Vector4 &v1, const Vector4 &v2); +VMATH_INLINE void operator +=(Vector4 &v1, const Vector4 &v2); +VMATH_INLINE void operator -=(Vector4 &v1, const Vector4 &v2); +VMATH_INLINE void operator *=(Vector4 &v1, const Vector4 &v2); +VMATH_INLINE void operator /=(Vector4 &v1, const Vector4 &v2); /* binary vector (op) scalar and scalar (op) vector operations */ -inline Vector4 operator +(const Vector4 &vec, scalar_t scalar); -inline Vector4 operator +(scalar_t scalar, const Vector4 &vec); -inline Vector4 operator -(const Vector4 &vec, scalar_t scalar); -inline Vector4 operator *(const Vector4 &vec, scalar_t scalar); -inline Vector4 operator *(scalar_t scalar, const Vector4 &vec); -inline Vector4 operator /(const Vector4 &vec, scalar_t scalar); +VMATH_INLINE Vector4 operator +(const Vector4 &vec, scalar_t scalar); +VMATH_INLINE Vector4 operator +(scalar_t scalar, const Vector4 &vec); +VMATH_INLINE Vector4 operator -(const Vector4 &vec, scalar_t scalar); +VMATH_INLINE Vector4 operator *(const Vector4 &vec, scalar_t scalar); +VMATH_INLINE Vector4 operator *(scalar_t scalar, const Vector4 &vec); +VMATH_INLINE Vector4 operator /(const Vector4 &vec, scalar_t scalar); -inline void operator +=(Vector4 &vec, scalar_t scalar); -inline void operator -=(Vector4 &vec, scalar_t scalar); -inline void operator *=(Vector4 &vec, scalar_t scalar); -inline void operator /=(Vector4 &vec, scalar_t scalar); +VMATH_INLINE void operator +=(Vector4 &vec, scalar_t scalar); +VMATH_INLINE void operator -=(Vector4 &vec, scalar_t scalar); +VMATH_INLINE void operator *=(Vector4 &vec, scalar_t scalar); +VMATH_INLINE void operator /=(Vector4 &vec, scalar_t scalar); std::ostream &operator <<(std::ostream &out, const Vector4 &vec); -inline Vector4 lerp(const Vector4 &v0, const Vector4 &v1, scalar_t t); -inline Vector4 catmull_rom_spline(const Vector4 &v0, const Vector4 &v1, +VMATH_INLINE Vector4 lerp(const Vector4 &v0, const Vector4 &v1, scalar_t t); +VMATH_INLINE Vector4 catmull_rom_spline(const Vector4 &v0, const Vector4 &v1, const Vector4 &v2, const Vector4 &v3, scalar_t t); #endif /* __cplusplus */ diff -r 4deb0b12fe14 -r 9ba3e2fb8a33 libs/vmath/vector.inl --- a/libs/vmath/vector.inl Sun Sep 29 08:20:19 2013 +0300 +++ b/libs/vmath/vector.inl Sun Sep 29 08:46:19 2013 +0300 @@ -23,7 +23,7 @@ #endif /* __cplusplus */ /* C 2D vector functions */ -static inline vec2_t v2_cons(scalar_t x, scalar_t y) +static VMATH_INLINE vec2_t v2_cons(scalar_t x, scalar_t y) { vec2_t v; v.x = x; @@ -31,12 +31,12 @@ return v; } -static inline void v2_print(FILE *fp, vec2_t v) +static VMATH_INLINE void v2_print(FILE *fp, vec2_t v) { fprintf(fp, "[ %.4f %.4f ]", v.x, v.y); } -static inline vec2_t v2_add(vec2_t v1, vec2_t v2) +static VMATH_INLINE vec2_t v2_add(vec2_t v1, vec2_t v2) { vec2_t res; res.x = v1.x + v2.x; @@ -44,7 +44,7 @@ return res; } -static inline vec2_t v2_sub(vec2_t v1, vec2_t v2) +static VMATH_INLINE vec2_t v2_sub(vec2_t v1, vec2_t v2) { vec2_t res; res.x = v1.x - v2.x; @@ -52,7 +52,7 @@ return res; } -static inline vec2_t v2_scale(vec2_t v, scalar_t s) +static VMATH_INLINE vec2_t v2_scale(vec2_t v, scalar_t s) { vec2_t res; res.x = v.x * s; @@ -60,22 +60,22 @@ return res; } -static inline scalar_t v2_dot(vec2_t v1, vec2_t v2) +static VMATH_INLINE scalar_t v2_dot(vec2_t v1, vec2_t v2) { return v1.x * v2.x + v1.y * v2.y; } -static inline scalar_t v2_length(vec2_t v) +static VMATH_INLINE scalar_t v2_length(vec2_t v) { return sqrt(v.x * v.x + v.y * v.y); } -static inline scalar_t v2_length_sq(vec2_t v) +static VMATH_INLINE scalar_t v2_length_sq(vec2_t v) { return v.x * v.x + v.y * v.y; } -static inline vec2_t v2_normalize(vec2_t v) +static VMATH_INLINE vec2_t v2_normalize(vec2_t v) { scalar_t len = (scalar_t)sqrt(v.x * v.x + v.y * v.y); v.x /= len; @@ -83,7 +83,7 @@ return v; } -static inline vec2_t v2_lerp(vec2_t v1, vec2_t v2, scalar_t t) +static VMATH_INLINE vec2_t v2_lerp(vec2_t v1, vec2_t v2, scalar_t t) { vec2_t res; res.x = v1.x + (v2.x - v1.x) * t; @@ -93,7 +93,7 @@ /* C 3D vector functions */ -static inline vec3_t v3_cons(scalar_t x, scalar_t y, scalar_t z) +static VMATH_INLINE vec3_t v3_cons(scalar_t x, scalar_t y, scalar_t z) { vec3_t v; v.x = x; @@ -102,12 +102,12 @@ return v; } -static inline void v3_print(FILE *fp, vec3_t v) +static VMATH_INLINE void v3_print(FILE *fp, vec3_t v) { fprintf(fp, "[ %.4f %.4f %.4f ]", v.x, v.y, v.z); } -static inline vec3_t v3_add(vec3_t v1, vec3_t v2) +static VMATH_INLINE vec3_t v3_add(vec3_t v1, vec3_t v2) { v1.x += v2.x; v1.y += v2.y; @@ -115,7 +115,7 @@ return v1; } -static inline vec3_t v3_sub(vec3_t v1, vec3_t v2) +static VMATH_INLINE vec3_t v3_sub(vec3_t v1, vec3_t v2) { v1.x -= v2.x; v1.y -= v2.y; @@ -123,7 +123,7 @@ return v1; } -static inline vec3_t v3_neg(vec3_t v) +static VMATH_INLINE vec3_t v3_neg(vec3_t v) { v.x = -v.x; v.y = -v.y; @@ -131,7 +131,7 @@ return v; } -static inline vec3_t v3_mul(vec3_t v1, vec3_t v2) +static VMATH_INLINE vec3_t v3_mul(vec3_t v1, vec3_t v2) { v1.x *= v2.x; v1.y *= v2.y; @@ -139,7 +139,7 @@ return v1; } -static inline vec3_t v3_scale(vec3_t v1, scalar_t s) +static VMATH_INLINE vec3_t v3_scale(vec3_t v1, scalar_t s) { v1.x *= s; v1.y *= s; @@ -147,12 +147,12 @@ return v1; } -static inline scalar_t v3_dot(vec3_t v1, vec3_t v2) +static VMATH_INLINE scalar_t v3_dot(vec3_t v1, vec3_t v2) { return v1.x * v2.x + v1.y * v2.y + v1.z * v2.z; } -static inline vec3_t v3_cross(vec3_t v1, vec3_t v2) +static VMATH_INLINE vec3_t v3_cross(vec3_t v1, vec3_t v2) { vec3_t v; v.x = v1.y * v2.z - v1.z * v2.y; @@ -161,17 +161,17 @@ return v; } -static inline scalar_t v3_length(vec3_t v) +static VMATH_INLINE scalar_t v3_length(vec3_t v) { return sqrt(v.x * v.x + v.y * v.y + v.z * v.z); } -static inline scalar_t v3_length_sq(vec3_t v) +static VMATH_INLINE scalar_t v3_length_sq(vec3_t v) { return v.x * v.x + v.y * v.y + v.z * v.z; } -static inline vec3_t v3_normalize(vec3_t v) +static VMATH_INLINE vec3_t v3_normalize(vec3_t v) { scalar_t len = sqrt(v.x * v.x + v.y * v.y + v.z * v.z); v.x /= len; @@ -180,7 +180,7 @@ return v; } -static inline vec3_t v3_transform(vec3_t v, mat4_t m) +static VMATH_INLINE vec3_t v3_transform(vec3_t v, mat4_t m) { vec3_t res; res.x = m[0][0] * v.x + m[0][1] * v.y + m[0][2] * v.z + m[0][3]; @@ -189,7 +189,7 @@ return res; } -static inline vec3_t v3_rotate(vec3_t v, scalar_t x, scalar_t y, scalar_t z) +static VMATH_INLINE vec3_t v3_rotate(vec3_t v, scalar_t x, scalar_t y, scalar_t z) { void m4_rotate(mat4_t, scalar_t, scalar_t, scalar_t); @@ -198,7 +198,7 @@ return v3_transform(v, m); } -static inline vec3_t v3_rotate_axis(vec3_t v, scalar_t angle, scalar_t x, scalar_t y, scalar_t z) +static VMATH_INLINE vec3_t v3_rotate_axis(vec3_t v, scalar_t angle, scalar_t x, scalar_t y, scalar_t z) { void m4_rotate_axis(mat4_t, scalar_t, scalar_t, scalar_t, scalar_t); @@ -207,7 +207,7 @@ return v3_transform(v, m); } -static inline vec3_t v3_rotate_quat(vec3_t v, quat_t q) +static VMATH_INLINE vec3_t v3_rotate_quat(vec3_t v, quat_t q) { quat_t quat_rotate_quat(quat_t, quat_t); @@ -216,13 +216,13 @@ return v3_cons(res.x, res.y, res.z); } -static inline vec3_t v3_reflect(vec3_t v, vec3_t n) +static VMATH_INLINE vec3_t v3_reflect(vec3_t v, vec3_t n) { scalar_t dot = v3_dot(v, n); return v3_sub(v3_scale(n, dot * 2.0), v); } -static inline vec3_t v3_lerp(vec3_t v1, vec3_t v2, scalar_t t) +static VMATH_INLINE vec3_t v3_lerp(vec3_t v1, vec3_t v2, scalar_t t) { v1.x += (v2.x - v1.x) * t; v1.y += (v2.y - v1.y) * t; @@ -231,7 +231,7 @@ } /* C 4D vector functions */ -static inline vec4_t v4_cons(scalar_t x, scalar_t y, scalar_t z, scalar_t w) +static VMATH_INLINE vec4_t v4_cons(scalar_t x, scalar_t y, scalar_t z, scalar_t w) { vec4_t v; v.x = x; @@ -241,12 +241,12 @@ return v; } -static inline void v4_print(FILE *fp, vec4_t v) +static VMATH_INLINE void v4_print(FILE *fp, vec4_t v) { fprintf(fp, "[ %.4f %.4f %.4f %.4f ]", v.x, v.y, v.z, v.w); } -static inline vec4_t v4_add(vec4_t v1, vec4_t v2) +static VMATH_INLINE vec4_t v4_add(vec4_t v1, vec4_t v2) { v1.x += v2.x; v1.y += v2.y; @@ -255,7 +255,7 @@ return v1; } -static inline vec4_t v4_sub(vec4_t v1, vec4_t v2) +static VMATH_INLINE vec4_t v4_sub(vec4_t v1, vec4_t v2) { v1.x -= v2.x; v1.y -= v2.y; @@ -264,7 +264,7 @@ return v1; } -static inline vec4_t v4_neg(vec4_t v) +static VMATH_INLINE vec4_t v4_neg(vec4_t v) { v.x = -v.x; v.y = -v.y; @@ -273,7 +273,7 @@ return v; } -static inline vec4_t v4_mul(vec4_t v1, vec4_t v2) +static VMATH_INLINE vec4_t v4_mul(vec4_t v1, vec4_t v2) { v1.x *= v2.x; v1.y *= v2.y; @@ -282,7 +282,7 @@ return v1; } -static inline vec4_t v4_scale(vec4_t v, scalar_t s) +static VMATH_INLINE vec4_t v4_scale(vec4_t v, scalar_t s) { v.x *= s; v.y *= s; @@ -291,22 +291,22 @@ return v; } -static inline scalar_t v4_dot(vec4_t v1, vec4_t v2) +static VMATH_INLINE scalar_t v4_dot(vec4_t v1, vec4_t v2) { return v1.x * v2.x + v1.y * v2.y + v1.z * v2.z + v1.w * v2.w; } -static inline scalar_t v4_length(vec4_t v) +static VMATH_INLINE scalar_t v4_length(vec4_t v) { return sqrt(v.x * v.x + v.y * v.y + v.z * v.z + v.w * v.w); } -static inline scalar_t v4_length_sq(vec4_t v) +static VMATH_INLINE scalar_t v4_length_sq(vec4_t v) { return v.x * v.x + v.y * v.y + v.z * v.z + v.w * v.w; } -static inline vec4_t v4_normalize(vec4_t v) +static VMATH_INLINE vec4_t v4_normalize(vec4_t v) { scalar_t len = sqrt(v.x * v.x + v.y * v.y + v.z * v.z + v.w * v.w); v.x /= len; @@ -316,7 +316,7 @@ return v; } -static inline vec4_t v4_transform(vec4_t v, mat4_t m) +static VMATH_INLINE vec4_t v4_transform(vec4_t v, mat4_t m) { vec4_t res; res.x = m[0][0] * v.x + m[0][1] * v.y + m[0][2] * v.z + m[0][3] * v.w; @@ -332,120 +332,120 @@ /* --------------- C++ part -------------- */ -inline scalar_t &Vector2::operator [](int elem) { +VMATH_INLINE scalar_t &Vector2::operator [](int elem) { return elem ? y : x; } -inline const scalar_t &Vector2::operator [](int elem) const { +VMATH_INLINE const scalar_t &Vector2::operator [](int elem) const { return elem ? y : x; } -inline Vector2 operator -(const Vector2 &vec) { +VMATH_INLINE Vector2 operator -(const Vector2 &vec) { return Vector2(-vec.x, -vec.y); } -inline scalar_t dot_product(const Vector2 &v1, const Vector2 &v2) { +VMATH_INLINE scalar_t dot_product(const Vector2 &v1, const Vector2 &v2) { return v1.x * v2.x + v1.y * v2.y; } -inline Vector2 operator +(const Vector2 &v1, const Vector2 &v2) { +VMATH_INLINE Vector2 operator +(const Vector2 &v1, const Vector2 &v2) { return Vector2(v1.x + v2.x, v1.y + v2.y); } -inline Vector2 operator -(const Vector2 &v1, const Vector2 &v2) { +VMATH_INLINE Vector2 operator -(const Vector2 &v1, const Vector2 &v2) { return Vector2(v1.x - v2.x, v1.y - v2.y); } -inline Vector2 operator *(const Vector2 &v1, const Vector2 &v2) { +VMATH_INLINE Vector2 operator *(const Vector2 &v1, const Vector2 &v2) { return Vector2(v1.x * v2.x, v1.y * v2.y); } -inline Vector2 operator /(const Vector2 &v1, const Vector2 &v2) { +VMATH_INLINE Vector2 operator /(const Vector2 &v1, const Vector2 &v2) { return Vector2(v1.x / v2.x, v1.y / v2.y); } -inline bool operator ==(const Vector2 &v1, const Vector2 &v2) { +VMATH_INLINE bool operator ==(const Vector2 &v1, const Vector2 &v2) { return (fabs(v1.x - v2.x) < XSMALL_NUMBER) && (fabs(v1.y - v2.x) < XSMALL_NUMBER); } -inline void operator +=(Vector2 &v1, const Vector2 &v2) { +VMATH_INLINE void operator +=(Vector2 &v1, const Vector2 &v2) { v1.x += v2.x; v1.y += v2.y; } -inline void operator -=(Vector2 &v1, const Vector2 &v2) { +VMATH_INLINE void operator -=(Vector2 &v1, const Vector2 &v2) { v1.x -= v2.x; v1.y -= v2.y; } -inline void operator *=(Vector2 &v1, const Vector2 &v2) { +VMATH_INLINE void operator *=(Vector2 &v1, const Vector2 &v2) { v1.x *= v2.x; v1.y *= v2.y; } -inline void operator /=(Vector2 &v1, const Vector2 &v2) { +VMATH_INLINE void operator /=(Vector2 &v1, const Vector2 &v2) { v1.x /= v2.x; v1.y /= v2.y; } -inline Vector2 operator +(const Vector2 &vec, scalar_t scalar) { +VMATH_INLINE Vector2 operator +(const Vector2 &vec, scalar_t scalar) { return Vector2(vec.x + scalar, vec.y + scalar); } -inline Vector2 operator +(scalar_t scalar, const Vector2 &vec) { +VMATH_INLINE Vector2 operator +(scalar_t scalar, const Vector2 &vec) { return Vector2(vec.x + scalar, vec.y + scalar); } -inline Vector2 operator -(scalar_t scalar, const Vector2 &vec) { +VMATH_INLINE Vector2 operator -(scalar_t scalar, const Vector2 &vec) { return Vector2(vec.x - scalar, vec.y - scalar); } -inline Vector2 operator *(const Vector2 &vec, scalar_t scalar) { +VMATH_INLINE Vector2 operator *(const Vector2 &vec, scalar_t scalar) { return Vector2(vec.x * scalar, vec.y * scalar); } -inline Vector2 operator *(scalar_t scalar, const Vector2 &vec) { +VMATH_INLINE Vector2 operator *(scalar_t scalar, const Vector2 &vec) { return Vector2(vec.x * scalar, vec.y * scalar); } -inline Vector2 operator /(const Vector2 &vec, scalar_t scalar) { +VMATH_INLINE Vector2 operator /(const Vector2 &vec, scalar_t scalar) { return Vector2(vec.x / scalar, vec.y / scalar); } -inline void operator +=(Vector2 &vec, scalar_t scalar) { +VMATH_INLINE void operator +=(Vector2 &vec, scalar_t scalar) { vec.x += scalar; vec.y += scalar; } -inline void operator -=(Vector2 &vec, scalar_t scalar) { +VMATH_INLINE void operator -=(Vector2 &vec, scalar_t scalar) { vec.x -= scalar; vec.y -= scalar; } -inline void operator *=(Vector2 &vec, scalar_t scalar) { +VMATH_INLINE void operator *=(Vector2 &vec, scalar_t scalar) { vec.x *= scalar; vec.y *= scalar; } -inline void operator /=(Vector2 &vec, scalar_t scalar) { +VMATH_INLINE void operator /=(Vector2 &vec, scalar_t scalar) { vec.x /= scalar; vec.y /= scalar; } -inline scalar_t Vector2::length() const { +VMATH_INLINE scalar_t Vector2::length() const { return sqrt(x*x + y*y); } -inline scalar_t Vector2::length_sq() const { +VMATH_INLINE scalar_t Vector2::length_sq() const { return x*x + y*y; } -inline Vector2 lerp(const Vector2 &a, const Vector2 &b, scalar_t t) +VMATH_INLINE Vector2 lerp(const Vector2 &a, const Vector2 &b, scalar_t t) { return a + (b - a) * t; } -inline Vector2 catmull_rom_spline(const Vector2 &v0, const Vector2 &v1, +VMATH_INLINE Vector2 catmull_rom_spline(const Vector2 &v0, const Vector2 &v1, const Vector2 &v2, const Vector2 &v3, scalar_t t) { scalar_t spline(scalar_t, scalar_t, scalar_t, scalar_t, scalar_t); @@ -457,133 +457,133 @@ /* ------------- Vector3 -------------- */ -inline scalar_t &Vector3::operator [](int elem) { +VMATH_INLINE scalar_t &Vector3::operator [](int elem) { return elem ? (elem == 1 ? y : z) : x; } -inline const scalar_t &Vector3::operator [](int elem) const { +VMATH_INLINE const scalar_t &Vector3::operator [](int elem) const { return elem ? (elem == 1 ? y : z) : x; } /* unary operations */ -inline Vector3 operator -(const Vector3 &vec) { +VMATH_INLINE Vector3 operator -(const Vector3 &vec) { return Vector3(-vec.x, -vec.y, -vec.z); } /* binary vector (op) vector operations */ -inline scalar_t dot_product(const Vector3 &v1, const Vector3 &v2) { +VMATH_INLINE scalar_t dot_product(const Vector3 &v1, const Vector3 &v2) { return v1.x * v2.x + v1.y * v2.y + v1.z * v2.z; } -inline Vector3 cross_product(const Vector3 &v1, const Vector3 &v2) { +VMATH_INLINE Vector3 cross_product(const Vector3 &v1, const Vector3 &v2) { return Vector3(v1.y * v2.z - v1.z * v2.y, v1.z * v2.x - v1.x * v2.z, v1.x * v2.y - v1.y * v2.x); } -inline Vector3 operator +(const Vector3 &v1, const Vector3 &v2) { +VMATH_INLINE Vector3 operator +(const Vector3 &v1, const Vector3 &v2) { return Vector3(v1.x + v2.x, v1.y + v2.y, v1.z + v2.z); } -inline Vector3 operator -(const Vector3 &v1, const Vector3 &v2) { +VMATH_INLINE Vector3 operator -(const Vector3 &v1, const Vector3 &v2) { return Vector3(v1.x - v2.x, v1.y - v2.y, v1.z - v2.z); } -inline Vector3 operator *(const Vector3 &v1, const Vector3 &v2) { +VMATH_INLINE Vector3 operator *(const Vector3 &v1, const Vector3 &v2) { return Vector3(v1.x * v2.x, v1.y * v2.y, v1.z * v2.z); } -inline Vector3 operator /(const Vector3 &v1, const Vector3 &v2) { +VMATH_INLINE Vector3 operator /(const Vector3 &v1, const Vector3 &v2) { return Vector3(v1.x / v2.x, v1.y / v2.y, v1.z / v2.z); } -inline bool operator ==(const Vector3 &v1, const Vector3 &v2) { +VMATH_INLINE bool operator ==(const Vector3 &v1, const Vector3 &v2) { return (fabs(v1.x - v2.x) < XSMALL_NUMBER) && (fabs(v1.y - v2.y) < XSMALL_NUMBER) && (fabs(v1.z - v2.z) < XSMALL_NUMBER); } -inline void operator +=(Vector3 &v1, const Vector3 &v2) { +VMATH_INLINE void operator +=(Vector3 &v1, const Vector3 &v2) { v1.x += v2.x; v1.y += v2.y; v1.z += v2.z; } -inline void operator -=(Vector3 &v1, const Vector3 &v2) { +VMATH_INLINE void operator -=(Vector3 &v1, const Vector3 &v2) { v1.x -= v2.x; v1.y -= v2.y; v1.z -= v2.z; } -inline void operator *=(Vector3 &v1, const Vector3 &v2) { +VMATH_INLINE void operator *=(Vector3 &v1, const Vector3 &v2) { v1.x *= v2.x; v1.y *= v2.y; v1.z *= v2.z; } -inline void operator /=(Vector3 &v1, const Vector3 &v2) { +VMATH_INLINE void operator /=(Vector3 &v1, const Vector3 &v2) { v1.x /= v2.x; v1.y /= v2.y; v1.z /= v2.z; } /* binary vector (op) scalar and scalar (op) vector operations */ -inline Vector3 operator +(const Vector3 &vec, scalar_t scalar) { +VMATH_INLINE Vector3 operator +(const Vector3 &vec, scalar_t scalar) { return Vector3(vec.x + scalar, vec.y + scalar, vec.z + scalar); } -inline Vector3 operator +(scalar_t scalar, const Vector3 &vec) { +VMATH_INLINE Vector3 operator +(scalar_t scalar, const Vector3 &vec) { return Vector3(vec.x + scalar, vec.y + scalar, vec.z + scalar); } -inline Vector3 operator -(const Vector3 &vec, scalar_t scalar) { +VMATH_INLINE Vector3 operator -(const Vector3 &vec, scalar_t scalar) { return Vector3(vec.x - scalar, vec.y - scalar, vec.z - scalar); } -inline Vector3 operator *(const Vector3 &vec, scalar_t scalar) { +VMATH_INLINE Vector3 operator *(const Vector3 &vec, scalar_t scalar) { return Vector3(vec.x * scalar, vec.y * scalar, vec.z * scalar); } -inline Vector3 operator *(scalar_t scalar, const Vector3 &vec) { +VMATH_INLINE Vector3 operator *(scalar_t scalar, const Vector3 &vec) { return Vector3(vec.x * scalar, vec.y * scalar, vec.z * scalar); } -inline Vector3 operator /(const Vector3 &vec, scalar_t scalar) { +VMATH_INLINE Vector3 operator /(const Vector3 &vec, scalar_t scalar) { return Vector3(vec.x / scalar, vec.y / scalar, vec.z / scalar); } -inline void operator +=(Vector3 &vec, scalar_t scalar) { +VMATH_INLINE void operator +=(Vector3 &vec, scalar_t scalar) { vec.x += scalar; vec.y += scalar; vec.z += scalar; } -inline void operator -=(Vector3 &vec, scalar_t scalar) { +VMATH_INLINE void operator -=(Vector3 &vec, scalar_t scalar) { vec.x -= scalar; vec.y -= scalar; vec.z -= scalar; } -inline void operator *=(Vector3 &vec, scalar_t scalar) { +VMATH_INLINE void operator *=(Vector3 &vec, scalar_t scalar) { vec.x *= scalar; vec.y *= scalar; vec.z *= scalar; } -inline void operator /=(Vector3 &vec, scalar_t scalar) { +VMATH_INLINE void operator /=(Vector3 &vec, scalar_t scalar) { vec.x /= scalar; vec.y /= scalar; vec.z /= scalar; } -inline scalar_t Vector3::length() const { +VMATH_INLINE scalar_t Vector3::length() const { return sqrt(x*x + y*y + z*z); } -inline scalar_t Vector3::length_sq() const { +VMATH_INLINE scalar_t Vector3::length_sq() const { return x*x + y*y + z*z; } -inline Vector3 lerp(const Vector3 &a, const Vector3 &b, scalar_t t) { +VMATH_INLINE Vector3 lerp(const Vector3 &a, const Vector3 &b, scalar_t t) { return a + (b - a) * t; } -inline Vector3 catmull_rom_spline(const Vector3 &v0, const Vector3 &v1, +VMATH_INLINE Vector3 catmull_rom_spline(const Vector3 &v0, const Vector3 &v1, const Vector3 &v2, const Vector3 &v3, scalar_t t) { scalar_t spline(scalar_t, scalar_t, scalar_t, scalar_t, scalar_t); @@ -595,23 +595,23 @@ /* ----------- Vector4 ----------------- */ -inline scalar_t &Vector4::operator [](int elem) { +VMATH_INLINE scalar_t &Vector4::operator [](int elem) { return elem ? (elem == 1 ? y : (elem == 2 ? z : w)) : x; } -inline const scalar_t &Vector4::operator [](int elem) const { +VMATH_INLINE const scalar_t &Vector4::operator [](int elem) const { return elem ? (elem == 1 ? y : (elem == 2 ? z : w)) : x; } -inline Vector4 operator -(const Vector4 &vec) { +VMATH_INLINE Vector4 operator -(const Vector4 &vec) { return Vector4(-vec.x, -vec.y, -vec.z, -vec.w); } -inline scalar_t dot_product(const Vector4 &v1, const Vector4 &v2) { +VMATH_INLINE scalar_t dot_product(const Vector4 &v1, const Vector4 &v2) { return v1.x * v2.x + v1.y * v2.y + v1.z * v2.z + v1.w * v2.w; } -inline Vector4 cross_product(const Vector4 &v1, const Vector4 &v2, const Vector4 &v3) { +VMATH_INLINE Vector4 cross_product(const Vector4 &v1, const Vector4 &v2, const Vector4 &v3) { scalar_t a, b, c, d, e, f; /* Intermediate Values */ Vector4 result; @@ -631,51 +631,51 @@ return result; } -inline Vector4 operator +(const Vector4 &v1, const Vector4 &v2) { +VMATH_INLINE Vector4 operator +(const Vector4 &v1, const Vector4 &v2) { return Vector4(v1.x + v2.x, v1.y + v2.y, v1.z + v2.z, v1.w + v2.w); } -inline Vector4 operator -(const Vector4 &v1, const Vector4 &v2) { +VMATH_INLINE Vector4 operator -(const Vector4 &v1, const Vector4 &v2) { return Vector4(v1.x - v2.x, v1.y - v2.y, v1.z - v2.z, v1.w - v2.w); } -inline Vector4 operator *(const Vector4 &v1, const Vector4 &v2) { +VMATH_INLINE Vector4 operator *(const Vector4 &v1, const Vector4 &v2) { return Vector4(v1.x * v2.x, v1.y * v2.y, v1.z * v2.z, v1.w * v2.w); } -inline Vector4 operator /(const Vector4 &v1, const Vector4 &v2) { +VMATH_INLINE Vector4 operator /(const Vector4 &v1, const Vector4 &v2) { return Vector4(v1.x / v2.x, v1.y / v2.y, v1.z / v2.z, v1.w / v2.w); } -inline bool operator ==(const Vector4 &v1, const Vector4 &v2) { +VMATH_INLINE bool operator ==(const Vector4 &v1, const Vector4 &v2) { return (fabs(v1.x - v2.x) < XSMALL_NUMBER) && (fabs(v1.y - v2.y) < XSMALL_NUMBER) && (fabs(v1.z - v2.z) < XSMALL_NUMBER) && (fabs(v1.w - v2.w) < XSMALL_NUMBER); } -inline void operator +=(Vector4 &v1, const Vector4 &v2) { +VMATH_INLINE void operator +=(Vector4 &v1, const Vector4 &v2) { v1.x += v2.x; v1.y += v2.y; v1.z += v2.z; v1.w += v2.w; } -inline void operator -=(Vector4 &v1, const Vector4 &v2) { +VMATH_INLINE void operator -=(Vector4 &v1, const Vector4 &v2) { v1.x -= v2.x; v1.y -= v2.y; v1.z -= v2.z; v1.w -= v2.w; } -inline void operator *=(Vector4 &v1, const Vector4 &v2) { +VMATH_INLINE void operator *=(Vector4 &v1, const Vector4 &v2) { v1.x *= v2.x; v1.y *= v2.y; v1.z *= v2.z; v1.w *= v2.w; } -inline void operator /=(Vector4 &v1, const Vector4 &v2) { +VMATH_INLINE void operator /=(Vector4 &v1, const Vector4 &v2) { v1.x /= v2.x; v1.y /= v2.y; v1.z /= v2.z; @@ -683,71 +683,71 @@ } /* binary vector (op) scalar and scalar (op) vector operations */ -inline Vector4 operator +(const Vector4 &vec, scalar_t scalar) { +VMATH_INLINE Vector4 operator +(const Vector4 &vec, scalar_t scalar) { return Vector4(vec.x + scalar, vec.y + scalar, vec.z + scalar, vec.w + scalar); } -inline Vector4 operator +(scalar_t scalar, const Vector4 &vec) { +VMATH_INLINE Vector4 operator +(scalar_t scalar, const Vector4 &vec) { return Vector4(vec.x + scalar, vec.y + scalar, vec.z + scalar, vec.w + scalar); } -inline Vector4 operator -(const Vector4 &vec, scalar_t scalar) { +VMATH_INLINE Vector4 operator -(const Vector4 &vec, scalar_t scalar) { return Vector4(vec.x - scalar, vec.y - scalar, vec.z - scalar, vec.w - scalar); } -inline Vector4 operator *(const Vector4 &vec, scalar_t scalar) { +VMATH_INLINE Vector4 operator *(const Vector4 &vec, scalar_t scalar) { return Vector4(vec.x * scalar, vec.y * scalar, vec.z * scalar, vec.w * scalar); } -inline Vector4 operator *(scalar_t scalar, const Vector4 &vec) { +VMATH_INLINE Vector4 operator *(scalar_t scalar, const Vector4 &vec) { return Vector4(vec.x * scalar, vec.y * scalar, vec.z * scalar, vec.w * scalar); } -inline Vector4 operator /(const Vector4 &vec, scalar_t scalar) { +VMATH_INLINE Vector4 operator /(const Vector4 &vec, scalar_t scalar) { return Vector4(vec.x / scalar, vec.y / scalar, vec.z / scalar, vec.w / scalar); } -inline void operator +=(Vector4 &vec, scalar_t scalar) { +VMATH_INLINE void operator +=(Vector4 &vec, scalar_t scalar) { vec.x += scalar; vec.y += scalar; vec.z += scalar; vec.w += scalar; } -inline void operator -=(Vector4 &vec, scalar_t scalar) { +VMATH_INLINE void operator -=(Vector4 &vec, scalar_t scalar) { vec.x -= scalar; vec.y -= scalar; vec.z -= scalar; vec.w -= scalar; } -inline void operator *=(Vector4 &vec, scalar_t scalar) { +VMATH_INLINE void operator *=(Vector4 &vec, scalar_t scalar) { vec.x *= scalar; vec.y *= scalar; vec.z *= scalar; vec.w *= scalar; } -inline void operator /=(Vector4 &vec, scalar_t scalar) { +VMATH_INLINE void operator /=(Vector4 &vec, scalar_t scalar) { vec.x /= scalar; vec.y /= scalar; vec.z /= scalar; vec.w /= scalar; } -inline scalar_t Vector4::length() const { +VMATH_INLINE scalar_t Vector4::length() const { return sqrt(x*x + y*y + z*z + w*w); } -inline scalar_t Vector4::length_sq() const { +VMATH_INLINE scalar_t Vector4::length_sq() const { return x*x + y*y + z*z + w*w; } -inline Vector4 lerp(const Vector4 &v0, const Vector4 &v1, scalar_t t) +VMATH_INLINE Vector4 lerp(const Vector4 &v0, const Vector4 &v1, scalar_t t) { return v0 + (v1 - v0) * t; } -inline Vector4 catmull_rom_spline(const Vector4 &v0, const Vector4 &v1, +VMATH_INLINE Vector4 catmull_rom_spline(const Vector4 &v0, const Vector4 &v1, const Vector4 &v2, const Vector4 &v3, scalar_t t) { scalar_t spline(scalar_t, scalar_t, scalar_t, scalar_t, scalar_t); diff -r 4deb0b12fe14 -r 9ba3e2fb8a33 libs/vmath/vmath.h --- a/libs/vmath/vmath.h Sun Sep 29 08:20:19 2013 +0300 +++ b/libs/vmath/vmath.h Sun Sep 29 08:46:19 2013 +0300 @@ -52,15 +52,15 @@ extern "C" { #endif /* __cplusplus */ -static inline scalar_t smoothstep(float a, float b, float x); +static VMATH_INLINE scalar_t smoothstep(float a, float b, float x); -static inline scalar_t frand(scalar_t range); -static inline vec3_t sphrand(scalar_t rad); +static VMATH_INLINE scalar_t frand(scalar_t range); +static VMATH_INLINE vec3_t sphrand(scalar_t rad); scalar_t integral(scalar_t (*f)(scalar_t), scalar_t low, scalar_t high, int samples); scalar_t gaussian(scalar_t x, scalar_t mean, scalar_t sdev); -static inline scalar_t lerp(scalar_t a, scalar_t b, scalar_t t); +static VMATH_INLINE scalar_t lerp(scalar_t a, scalar_t b, scalar_t t); scalar_t bspline(scalar_t a, scalar_t b, scalar_t c, scalar_t d, scalar_t t); scalar_t spline(scalar_t a, scalar_t b, scalar_t c, scalar_t d, scalar_t t); diff -r 4deb0b12fe14 -r 9ba3e2fb8a33 libs/vmath/vmath.inl --- a/libs/vmath/vmath.inl Sun Sep 29 08:20:19 2013 +0300 +++ b/libs/vmath/vmath.inl Sun Sep 29 08:46:19 2013 +0300 @@ -18,7 +18,7 @@ #include -static inline scalar_t smoothstep(float a, float b, float x) +static VMATH_INLINE scalar_t smoothstep(float a, float b, float x) { if(x < a) return 0.0; if(x >= b) return 1.0; @@ -28,13 +28,13 @@ } /** Generates a random number in [0, range) */ -static inline scalar_t frand(scalar_t range) +static VMATH_INLINE scalar_t frand(scalar_t range) { return range * (scalar_t)rand() / (scalar_t)RAND_MAX; } /** Generates a random vector on the surface of a sphere */ -static inline vec3_t sphrand(scalar_t rad) +static VMATH_INLINE vec3_t sphrand(scalar_t rad) { scalar_t u = (scalar_t)rand() / RAND_MAX; scalar_t v = (scalar_t)rand() / RAND_MAX; @@ -50,7 +50,7 @@ } /** linear interpolation */ -static inline scalar_t lerp(scalar_t a, scalar_t b, scalar_t t) +static VMATH_INLINE scalar_t lerp(scalar_t a, scalar_t b, scalar_t t) { return a + (b - a) * t; } diff -r 4deb0b12fe14 -r 9ba3e2fb8a33 libs/vmath/vmath_config.h --- a/libs/vmath/vmath_config.h Sun Sep 29 08:20:19 2013 +0300 +++ b/libs/vmath/vmath_config.h Sun Sep 29 08:46:19 2013 +0300 @@ -1,11 +1,13 @@ #ifndef VMATH_CONFIG_H_ #define VMATH_CONFIG_H_ -#if (__STDC_VERSION__ < 199999) +#ifdef __cplusplus +#define VMATH_INLINE inline +#elif (__STDC_VERSION__ < 199999) #if defined(__GNUC__) || defined(_MSC_VER) -#define inline __inline +#define VMATH_INLINE __inline #else -#define inline +#define VMATH_INLINE #ifdef VECTOR_H_ #warning "compiling vector operations without inline, performance might suffer"