From: Martin Taibr Date: Wed, 14 Nov 2018 22:12:30 +0000 (+0100) Subject: deglob wzl/anglestransform.qh X-Git-Tag: xonotic-v0.8.5~1258^2~30 X-Git-Url: https://git.rm.cloudns.org/?a=commitdiff_plain;h=19c50d05f73d32825ec0e3539e3991cde808362d;p=xonotic%2Fxonotic-data.pk3dir.git deglob wzl/anglestransform.qh --- diff --git a/qcsrc/lib/deglobalization.qh b/qcsrc/lib/deglobalization.qh index 73c92fc03..315ff6d6a 100644 --- a/qcsrc/lib/deglobalization.qh +++ b/qcsrc/lib/deglobalization.qh @@ -38,6 +38,11 @@ STATIC_INIT(globals) { //LOG_INFOF("%f\n", x == x); //LOG_INFOF("%f\n", x != x); + //float y = __builtin_nan(); + //LOG_INFOF("%f\n", y); + //LOG_INFOF("%f\n", y == y); + //LOG_INFOF("%f\n", __builtin_isnan(y)); + CLEAR_V_GLOBALS(); } #endif diff --git a/qcsrc/lib/warpzone/anglestransform.qc b/qcsrc/lib/warpzone/anglestransform.qc index 9e98199f3..f5ec6730a 100644 --- a/qcsrc/lib/warpzone/anglestransform.qc +++ b/qcsrc/lib/warpzone/anglestransform.qc @@ -4,34 +4,32 @@ // angles in fixedmakevectors/fixedvectoangles space vector AnglesTransform_Apply(vector transform, vector v) { - fixedmakevectors(transform); - return v_forward * v.x - + v_right * (-v.y) - + v_up * v.z; + FIXED_MAKE_VECTORS_NEW(transform, forward, right, up); + return forward * v.x + right * (-v.y) + up * v.z; } vector AnglesTransform_Multiply(vector t1, vector t2) { - vector m_forward, m_up; - fixedmakevectors(t2); m_forward = v_forward; m_up = v_up; - m_forward = AnglesTransform_Apply(t1, m_forward); m_up = AnglesTransform_Apply(t1, m_up); - return fixedvectoangles2(m_forward, m_up); + FIXED_MAKE_VECTORS_NEW(t2, forward, right, up); + forward = AnglesTransform_Apply(t1, forward); + up = AnglesTransform_Apply(t1, up); + return fixedvectoangles2(forward, up); } vector AnglesTransform_Invert(vector transform) { vector i_forward, i_up; - fixedmakevectors(transform); - // we want angles that turn v_forward into '1 0 0', v_right into '0 1 0' and v_up into '0 0 1' + FIXED_MAKE_VECTORS_NEW(transform, forward, right, up); + // we want angles that turn forward into '1 0 0', right into '0 1 0' and up into '0 0 1' // but these are orthogonal unit vectors! // so to invert, we can simply fixedvectoangles the TRANSPOSED matrix // TODO is this always -transform? - i_forward.x = v_forward.x; - i_forward.y = -v_right.x; - i_forward.z = v_up.x; - i_up.x = v_forward.z; - i_up.y = -v_right.z; - i_up.z = v_up.z; + i_forward.x = forward.x; + i_forward.y = -right.x; + i_forward.z = up.x; + i_up.x = forward.z; + i_up.y = -right.z; + i_up.z = up.z; return fixedvectoangles2(i_forward, i_up); }