#define M_PI 3.14159265358979323846 // matches value in gcc v2 math.h
#endif
+#ifndef NULL
+#define NULL ((void *)0)
+#endif
+
typedef float vec_t;
typedef vec_t vec2_t[2];
typedef vec_t vec3_t[3];
#define nanmask (255<<23)
#define IS_NAN(x) (((*(int *)&x)&nanmask)==nanmask)
-#define bound(min,num,max) (num >= min ? (num < max ? num : max) : min)
+#define bound(min,num,max) ((num) >= (min) ? ((num) < (max) ? (num) : (max)) : (min))
#ifndef min
-#define min(A,B) (A < B ? A : B)
-#define max(A,B) (A > B ? A : B)
+#define min(A,B) ((A) < (B) ? (A) : (B))
+#define max(A,B) ((A) > (B) ? (A) : (B))
#endif
#define lhrandom(MIN,MAX) ((rand() & 32767) * (((MAX)-(MIN)) * (1.0f / 32767.0f)) + (MIN))
#define VectorScale(in, scale, out) ((out)[0] = (in)[0] * (scale),(out)[1] = (in)[1] * (scale),(out)[2] = (in)[2] * (scale))
#define VectorCompare(a,b) (((a)[0]==(b)[0])&&((a)[1]==(b)[1])&&((a)[2]==(b)[2]))
#define VectorMA(a, scale, b, c) ((c)[0] = (a)[0] + (scale) * (b)[0],(c)[1] = (a)[1] + (scale) * (b)[1],(c)[2] = (a)[2] + (scale) * (b)[2])
-#define VectorNormalizeFast(_v)\
-{\
- float _y, _number;\
- _number = DotProduct(_v, _v);\
- if (_number != 0.0)\
- {\
- *((long *)&_y) = 0x5f3759df - ((* (long *) &_number) >> 1);\
- _y = _y * (1.5f - (_number * 0.5f * _y * _y));\
- VectorScale(_v, _y, _v);\
- }\
-}
#define VectorRandom(v) {do{(v)[0] = CGVM_RandomRange(-1, 1);(v)[1] = CGVM_RandomRange(-1, 1);(v)[2] = CGVM_RandomRange(-1, 1);}while(DotProduct(v, v) > 1);}
void AngleVectors (vec3_t angles, vec3_t forward, vec3_t right, vec3_t up);