Subversion Repositories Games.Carmageddon

Rev

Rev 18 | Show entire file | Ignore whitespace | Details | Blame | Last modification | View Log | RSS feed

Rev 18 Rev 20
Line 1... Line 1...
1
#ifndef MACROS_H
1
#ifndef MACROS_H
2
#define MACROS_H
2
#define MACROS_H
3
 
-
 
4
#define DR_JOIN2(A,B) A##B
-
 
5
#define DR_JOIN(A,B) DR_JOIN2(A, B)
-
 
6
#define DR_STATIC_ASSERT(V) typedef int DR_JOIN(dr_static_assert_, __COUNTER__)[(V)?1:-1]
-
 
7
 
3
 
8
#define VEHICLE_TYPE_FROM_ID(id) ((tVehicle_type)(id >> 8))
4
#define VEHICLE_TYPE_FROM_ID(id) ((tVehicle_type)(id >> 8))
9
#define VEHICLE_INDEX_FROM_ID(id) ((id)&0x00ff)
5
#define VEHICLE_INDEX_FROM_ID(id) ((id)&0x00ff)
10
 
6
 
11
// #define VEC3_TRANSLATE(mat) (*(br_vector3*)(&mat->m[3][0]))
7
//#define VEC3_TRANSLATE(mat) (*(br_vector3*)(&mat->m[3][0]))
12
 
8
 
13
#define SLOBYTE(x) (*((signed char*)&(x)))
9
#define SLOBYTE(x) (*((signed char*)&(x)))
14
 
10
 
15
#define STR_STARTS_WITH(haystack, needle) strncmp(haystack, needle, strlen(needle))
11
#define STR_STARTS_WITH(haystack, needle) strncmp(haystack, needle, strlen(needle))
16
#define STR_ENDS_WITH(haystack, needle) strcmp(haystack + strlen(haystack) - strlen(needle), needle)
12
#define STR_ENDS_WITH(haystack, needle) strcmp(haystack + strlen(haystack) - strlen(needle), needle)
Line 22... Line 18...
22
#define COUNT_OF(array) (sizeof((array)) / sizeof((array)[0]))
18
#define COUNT_OF(array) (sizeof((array)) / sizeof((array)[0]))
23
#define LEN(array) (sizeof((array)) / sizeof((array)[0]))
19
#define LEN(array) (sizeof((array)) / sizeof((array)[0]))
24
 
20
 
25
#define DEG_TO_RAD(degrees) ((degrees)*3.141592653589793 / 180.0)
21
#define DEG_TO_RAD(degrees) ((degrees)*3.141592653589793 / 180.0)
26
 
22
 
27
#define V11MODEL(model) (((struct v11model*)model->prepared))
23
#define V11MODEL(model) (((v11model*)model->prepared))
28
#define CAR(c) ((tCar_spec*)c)
24
#define CAR(c) ((tCar_spec*)c)
29
 
25
 
30
#define Vector3Div(v1, v2, v3)                \
26
#define Vector3Div(v1, v2, v3)                \
31
    do {                                      \
27
    do {                                      \
32
        (v1)->v[0] = (v2)->v[0] / (v3)->v[0]; \
28
        (v1)->v[0] = (v2)->v[0] / (v3)->v[0]; \
Line 42... Line 38...
42
    ((V1)->v[0] == (V2)->v[0] && (V1)->v[1] == (V2)->v[1] && (V1)->v[2] == (V2)->v[2])
38
    ((V1)->v[0] == (V2)->v[0] && (V1)->v[1] == (V2)->v[1] && (V1)->v[2] == (V2)->v[2])
43
#define Vector3EqualElements(V, A, B, C) \
39
#define Vector3EqualElements(V, A, B, C) \
44
    ((V)->v[0] == (A) && (V)->v[1] == (B) && (V)->v[2] == (C))
40
    ((V)->v[0] == (A) && (V)->v[1] == (B) && (V)->v[2] == (C))
45
#define Vector3IsZero(V) Vector3EqualElements((V), 0.f, 0.f, 0.f)
41
#define Vector3IsZero(V) Vector3EqualElements((V), 0.f, 0.f, 0.f)
46
#define Vector3AddFloats(V1, V2, X, Y, Z) \
42
#define Vector3AddFloats(V1, V2, X, Y, Z) \
47
    do {                                  \
-
 
48
        (V1)->v[0] = (V2)->v[0] + (X);    \
-
 
49
        (V1)->v[1] = (V2)->v[1] + (Y);    \
43
    do { (V1)->v[0] = (V2)->v[0] + (X); (V1)->v[1] = (V2)->v[1] + (Y);  (V1)->v[2] = (V2)->v[2] + (Z); } while (0)
50
        (V1)->v[2] = (V2)->v[2] + (Z);    \
-
 
51
    } while (0)
-
 
52
#define SwapValuesUsingTemporary(V1, V2, T) \
44
#define SwapValuesUsingTemporary(V1, V2, T) \
53
    do {                                    \
45
    do {                                    \
54
        (T) = (V1);                         \
46
        (T) = (V1);                         \
55
        (V1) = (V2);                        \
47
        (V1) = (V2);                        \
56
        (V2) = (T);                         \
48
        (V2) = (T);                         \