X-Git-Url: http://de.git.xonotic.org/?a=blobdiff_plain;f=qcsrc%2Flib%2Fwarpzone%2Fanglestransform.qh;h=92362f982fee1590b31c6340b7d576d4bcd7f68e;hb=ef7b4920f481ef818e48f16ed5031fd92fa7bde3;hp=5c356ea7ffa889489e99fe93d4ee397736ddf5e1;hpb=18e2cd311a581f77ba8eb9c5421dd219ff5d760d;p=xonotic%2Fxonotic-data.pk3dir.git diff --git a/qcsrc/lib/warpzone/anglestransform.qh b/qcsrc/lib/warpzone/anglestransform.qh index 5c356ea7f..92362f982 100644 --- a/qcsrc/lib/warpzone/anglestransform.qh +++ b/qcsrc/lib/warpzone/anglestransform.qh @@ -1,16 +1,30 @@ -#ifndef LIB_WARPZONE_ANGLETRANSFORM_H -#define LIB_WARPZONE_ANGLETRANSFORM_H +#pragma once -#define POSITIVE_PITCH_IS_DOWN +#ifndef POSITIVE_PITCH_IS_DOWN +#define POSITIVE_PITCH_IS_DOWN 1 +#endif -#ifdef POSITIVE_PITCH_IS_DOWN -#define fixedmakevectors makevectors -vector fixedvectoangles(vector a); -vector fixedvectoangles2(vector a, vector b); +#if POSITIVE_PITCH_IS_DOWN + #define fixedmakevectors makevectors + #define FIXED_MAKE_VECTORS MAKE_VECTORS + noref vector _fixedvectoangles; + #define fixedvectoangles(a) (_fixedvectoangles = vectoangles(a), _fixedvectoangles.x *= -1, _fixedvectoangles) + noref vector _fixedvectoangles2; + #define fixedvectoangles2(a, b) (_fixedvectoangles2 = vectoangles2(a, b), _fixedvectoangles2.x *= -1, _fixedvectoangles2) #else -void fixedmakevectors(vector a); -#define fixedvectoangles2 vectoangles2 -#define fixedvectoangles vectoangles + void fixedmakevectors(vector a) + { + // a makevectors that actually inverts vectoangles + a.x = -a.x; + makevectors(a); + } + #define FIXED_MAKE_VECTORS(angles, forward, right, up) MACRO_BEGIN \ + fixedmakevectors(angles); \ + GET_V_GLOBALS(forward, right, up); \ + CLEAR_V_GLOBALS(); \ + MACRO_END + #define fixedvectoangles2 vectoangles2 + #define fixedvectoangles vectoangles #endif vector AnglesTransform_Apply(vector transform, vector v); @@ -33,4 +47,3 @@ vector AnglesTransform_ToVAngles(vector v); // transformed = original * transform + postshift vector AnglesTransform_Multiply_GetPostShift(vector sf0, vector st0, vector t1, vector st1); vector AnglesTransform_PrePostShift_GetPostShift(vector sf, vector t, vector st); -#endif