Subversion Repositories Games.Carmageddon

Rev

Details | Last modification | View Log | RSS feed

Rev Author Line No. Line
20 pmbaty 1
#ifndef BR_DEFS_H
2
#define BR_DEFS_H
3
 
4
// Inspired by BRender SDK includes  (https://rr2000.cwaboard.co.uk/R4/BRENDER/BRENDER.zip)
5
 
6
#include <math.h> // sqrtf
7
 
8
#define PI 3.14159265358979323846
9
#define TAU 6.283185307179586
10
 
11
#define BR_MAC3(a, b, c, d, e, f) ((a) * (b) + (c) * (d) + (e) * (f))
12
#define BR_SQR3(a, b, c) ((a) * (a) + (b) * (b) + (c) * (c))
13
 
14
#define BrAngleToRadian(a) ((br_scalar)((a) * (PI / 32768.0)))      // a * 0.00009587379924285257
15
#define BrRadianToAngle(r) ((br_angle)(long)((r) * (32768.0 / PI))) // r * 10430.378350470453
16
 
17
#define BR_VECTOR3(a, b, c) \
18
    { a, b, c }
19
 
20
#define BR_VECTOR4(a, b, c, d) \
21
    { a, b, c, d }
22
 
23
#define BR_COLOUR_RGB(r, g, b) \
24
    ((((unsigned int)(r)) << 16) | (((unsigned int)(g)) << 8) | ((unsigned int)(b)))
25
 
26
#define BR_ALPHA(c) (((c) >> 24) & 0xFF)
27
 
28
#define BR_ANGLE_DEG(deg) ((br_angle)((deg)*182))
29
#define BR_ANGLE_RAD(rad) ((br_angle)((rad)*10430))
30
 
31
#define BrDegreeToRadian(d) ((br_scalar)((d) * (PI / 180.0)))
32
#define BrRadianToDegree(r) ((br_scalar)((r) * (180.0 / PI)))
33
 
34
#define BrDegreeToAngle(d) ((br_angle)(long)((d) * (65536.0f / 360.0f)))  // "d * 182.044444444"
35
#define BrAngleToDegrees(a) ((br_angle)(long)((a) * (360.0f / 65536.0f))) // "d * 0.0054931640625"
36
 
37
#define BR_SCALAR(x) ((br_scalar)(x))
38
 
39
#define BR_COLOUR_RGBA(r, g, b, a) \
40
    ((((unsigned int)(a)) << 24) | (((unsigned int)(r)) << 16) | (((unsigned int)(g)) << 8) | ((unsigned int)(b)))
41
 
42
#define BR_LENGTH2(a, b) ((br_scalar)sqrtf((a) * (a) + (b) * (b)))
43
#define BR_LENGTH3(a, b, c) ((br_scalar)sqrtf((a) * (a) + (b) * (b) + (c) * (c)))
44
#define BR_SCALAR_EPSILON 1.192092896e-7f
45
#define BR_SCALAR_MAX 3.402823466e+38f
46
#define BR_SCALAR_MIN (-3.402823466e+38f)
47
 
48
#define BR_SIMPLEHEAD(l) (void*)(((br_simple_list*)(l))->head)
49
#define BR_SIMPLENEXT(n) (void*)(((br_simple_node*)(n))->next)
50
#define BR_FOR_SIMPLELIST(list, ptr) for ((ptr) = BR_SIMPLEHEAD(list); (ptr); (ptr) = BR_SIMPLENEXT(ptr))
51
#define BR_SIMPLEREMOVE(n) ((void*)BrSimpleRemove((br_simple_node*)(n)))
52
 
53
#define V_X 0
54
#define V_Y 1
55
#define V_Z 2
56
#define V_W 3
57
 
58
#define BR_FONTF_PROPORTIONAL 1
59
 
60
#define BR_SIN(a) ((br_scalar)sinf(BrAngleToRadian(a)))
61
#define BR_COS(a) ((br_scalar)cosf(BrAngleToRadian(a)))
62
#define BR_TAN(a) ((br_scalar)tanf(BrAngleToRadian(a)))
63
#define BR_ASIN(a) BrRadianToAngle(asin(a))
64
#define BR_ACOS(a) BrRadianToAngle(acos(a))
65
#define BR_ATAN2(a, b) BrRadianToAngle(atan2((a), (b)))
66
#define BR_ATAN2FAST(a, b) BrRadianToAngle(atan2((a), (b)))
67
 
68
#define BR_ASIZE(a) (sizeof(a) / sizeof((a)[0]))
69
 
70
#if BR_ENDIAN_BIG
71
 
72
#define BrHtoNL(x) (x)
73
#define BrHtoNS(x) (x)
74
#define BrHtoNF(x) (x)
75
 
76
#else
77
 
78
#define BrHtoNL(x) BrSwap32(x)
79
#define BrHtoNS(x) BrSwap16(x)
80
#define BrHtoNF(x) BrSwapFloat(x)
81
 
82
#endif
83
 
84
#endif /* BR_DEFS_H */