Hm, the enviroment is so strict because of the -Wall option in the makefile, it enables all warnings. I could just disable it, but, decided to look at what they report first. And I'm scared of changing too much.
Rewrote that function with macros, not sure if it's better this way.
I wonder if version with functions will be prettier.
Rewrote that function with macros, not sure if it's better this way.
Code:
static void RotateBBox(const vec3_t mins, const vec3_t maxs, const vec3_t angles, vec3_t rotatedmins, vec3_t rotatedmaxs) { #define _vec3_min(rotatedmins, u) \ if(rotatedmins[0] > u[0]) rotatedmins[0] = u[0]; \ if(rotatedmins[1] > u[1]) rotatedmins[1] = u[1]; \ if(rotatedmins[2] > u[2]) rotatedmins[2] = u[2]; #define _vec3_max(rotatedmaxs, u) \ if(rotatedmaxs[0] > u[0]) rotatedmaxs[0] = u[0]; \ if(rotatedmaxs[1] > u[1]) rotatedmaxs[1] = u[1]; \ if(rotatedmaxs[2] > u[2]) rotatedmaxs[2] = u[2]; vec3_t v, u; matrix4x4_t m; Matrix4x4_CreateFromQuakeEntity(&m, 0, 0, 0, angles[PITCH], angles[YAW], angles[ROLL], 1.0); v[0] = mins[0]; v[1] = mins[1]; v[2] = mins[2]; Matrix4x4_Transform(&m, v, u); VectorCopy(u, rotatedmins); VectorCopy(u, rotatedmaxs); v[0] = maxs[0]; v[1] = mins[1]; v[2] = mins[2]; Matrix4x4_Transform(&m, v, u); _vec3_min(rotatedmins, u); _vec3_max(rotatedmaxs, u); v[0] = mins[0]; v[1] = maxs[1]; v[2] = mins[2]; Matrix4x4_Transform(&m, v, u); _vec3_min(rotatedmins, u); _vec3_max(rotatedmaxs, u); v[0] = maxs[0]; v[1] = maxs[1]; v[2] = mins[2]; Matrix4x4_Transform(&m, v, u); _vec3_min(rotatedmins, u); _vec3_max(rotatedmaxs, u); v[0] = mins[0]; v[1] = mins[1]; v[2] = maxs[2]; Matrix4x4_Transform(&m, v, u); _vec3_min(rotatedmins, u); _vec3_max(rotatedmaxs, u); v[0] = maxs[0]; v[1] = mins[1]; v[2] = maxs[2]; Matrix4x4_Transform(&m, v, u); _vec3_min(rotatedmins, u); _vec3_max(rotatedmaxs, u); v[0] = mins[0]; v[1] = maxs[1]; v[2] = maxs[2]; Matrix4x4_Transform(&m, v, u); _vec3_min(rotatedmins, u); _vec3_max(rotatedmaxs, u); v[0] = maxs[0]; v[1] = maxs[1]; v[2] = maxs[2]; Matrix4x4_Transform(&m, v, u); _vec3_min(rotatedmins, u); _vec3_max(rotatedmaxs, u); #undef _vec3_min #undef _vec3_max }
Comment