Subversion Repositories Games.Carmageddon

Rev

Blame | Last modification | View Log | Download | RSS feed

  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 */
  85.