-#include "quakedef.h"
-
+#include "darkplaces.h"
#include <math.h>
-#include "matrixlib.h"
#ifdef _MSC_VER
-#pragma warning(disable : 4244) // LordHavoc: MSVC++ 4 x86, double/float
-#pragma warning(disable : 4305) // LordHavoc: MSVC++ 6 x86, double/float
+#pragma warning(disable : 4244) // LadyHavoc: MSVC++ 4 x86, double/float
+#pragma warning(disable : 4305) // LadyHavoc: MSVC++ 6 x86, double/float
#endif
const matrix4x4_t identitymatrix =
}
}
-void Matrix4x4_QuakeToDuke3D(const matrix4x4_t *in, matrix4x4_t *out)
+void Matrix4x4_QuakeToDuke3D(const matrix4x4_t *in, matrix4x4_t *out, double maxShearAngle)
{
// Sorry - this isn't direct at all. We can't just use an alternative to
// Matrix4x4_CreateFromQuakeEntity as in some cases the input for
scaleleft = VectorNormalizeLength(left);
scaleup = VectorNormalizeLength(up);
AnglesFromVectors(angles, forward, up, false);
- AngleVectorsDuke3DFLU(angles, forward, left, up);
+ AngleVectorsDuke3DFLU(angles, forward, left, up, maxShearAngle);
VectorScale(forward, scaleforward, forward);
VectorScale(left, scaleleft, left);
VectorScale(up, scaleup, up);
#endif
}
-void Matrix4x4_FromArrayDoubleD3D (matrix4x4_t *out, const double in[16])
+void Matrix4x4_FromArrayDoubleD3D (matrix4x4_t *out, const double in[4][4])
{
#ifdef MATRIX4x4_OPENGLORIENTATION
- out->m[0][0] = in[0];
- out->m[1][0] = in[1];
- out->m[2][0] = in[2];
- out->m[3][0] = in[3];
- out->m[0][1] = in[4];
- out->m[1][1] = in[5];
- out->m[2][1] = in[6];
- out->m[3][1] = in[7];
- out->m[0][2] = in[8];
- out->m[1][2] = in[9];
- out->m[2][2] = in[10];
- out->m[3][2] = in[11];
- out->m[0][3] = in[12];
- out->m[1][3] = in[13];
- out->m[2][3] = in[14];
- out->m[3][3] = in[15];
+ out->m[0][0] = in[0][0];
+ out->m[1][0] = in[0][1];
+ out->m[2][0] = in[0][2];
+ out->m[3][0] = in[0][3];
+ out->m[0][1] = in[1][0];
+ out->m[1][1] = in[1][1];
+ out->m[2][1] = in[1][2];
+ out->m[3][1] = in[1][3];
+ out->m[0][2] = in[2][0];
+ out->m[1][2] = in[2][1];
+ out->m[2][2] = in[2][2];
+ out->m[3][2] = in[2][3];
+ out->m[0][3] = in[3][0];
+ out->m[1][3] = in[3][1];
+ out->m[2][3] = in[3][2];
+ out->m[3][3] = in[3][3];
#else
- out->m[0][0] = in[0];
- out->m[0][1] = in[1];
- out->m[0][2] = in[2];
- out->m[0][3] = in[3];
- out->m[1][0] = in[4];
- out->m[1][1] = in[5];
- out->m[1][2] = in[6];
- out->m[1][3] = in[7];
- out->m[2][0] = in[8];
- out->m[2][1] = in[9];
- out->m[2][2] = in[10];
- out->m[2][3] = in[11];
- out->m[3][0] = in[12];
- out->m[3][1] = in[13];
- out->m[3][2] = in[14];
- out->m[3][3] = in[15];
+ out->m[0][0] = in[0][0];
+ out->m[0][1] = in[0][1];
+ out->m[0][2] = in[0][2];
+ out->m[0][3] = in[0][3];
+ out->m[1][0] = in[1][0];
+ out->m[1][1] = in[1][1];
+ out->m[1][2] = in[1][2];
+ out->m[1][3] = in[1][3];
+ out->m[2][0] = in[2][0];
+ out->m[2][1] = in[2][1];
+ out->m[2][2] = in[2][2];
+ out->m[2][3] = in[2][3];
+ out->m[3][0] = in[3][0];
+ out->m[3][1] = in[3][1];
+ out->m[3][2] = in[3][2];
+ out->m[3][3] = in[3][3];
#endif
}
#endif
}
-void Matrix4x4_ToArray12FloatGL(const matrix4x4_t *in, float out[12])
+void Matrix4x4_ToArray12FloatGL(const matrix4x4_t *in, float out[4][3])
{
#ifdef MATRIX4x4_OPENGLORIENTATION
- out[ 0] = in->m[0][0];
- out[ 1] = in->m[0][1];
- out[ 2] = in->m[0][2];
- out[ 3] = in->m[1][0];
- out[ 4] = in->m[1][1];
- out[ 5] = in->m[1][2];
- out[ 6] = in->m[2][0];
- out[ 7] = in->m[2][1];
- out[ 8] = in->m[2][2];
- out[ 9] = in->m[3][0];
- out[10] = in->m[3][1];
- out[11] = in->m[3][2];
+ out[0][0] = in->m[0][0];
+ out[0][1] = in->m[0][1];
+ out[0][2] = in->m[0][2];
+ out[1][0] = in->m[1][0];
+ out[1][1] = in->m[1][1];
+ out[1][2] = in->m[1][2];
+ out[2][0] = in->m[2][0];
+ out[2][1] = in->m[2][1];
+ out[2][2] = in->m[2][2];
+ out[3][0] = in->m[3][0];
+ out[3][1] = in->m[3][1];
+ out[3][2] = in->m[3][2];
#else
- out[ 0] = in->m[0][0];
- out[ 1] = in->m[1][0];
- out[ 2] = in->m[2][0];
- out[ 3] = in->m[0][1];
- out[ 4] = in->m[1][1];
- out[ 5] = in->m[2][1];
- out[ 6] = in->m[0][2];
- out[ 7] = in->m[1][2];
- out[ 8] = in->m[2][2];
- out[ 9] = in->m[0][3];
- out[10] = in->m[1][3];
- out[11] = in->m[2][3];
+ out[0][0] = in->m[0][0];
+ out[0][1] = in->m[1][0];
+ out[0][2] = in->m[2][0];
+ out[1][0] = in->m[0][1];
+ out[1][1] = in->m[1][1];
+ out[1][2] = in->m[2][1];
+ out[2][0] = in->m[0][2];
+ out[2][1] = in->m[1][2];
+ out[2][2] = in->m[2][2];
+ out[3][0] = in->m[0][3];
+ out[3][1] = in->m[1][3];
+ out[3][2] = in->m[2][3];
#endif
}
#endif
}
-// LordHavoc: I got this code from:
+// LadyHavoc: I got this code from:
//http://www.doom3world.org/phpbb2/viewtopic.php?t=2884
void Matrix4x4_FromDoom3Joint(matrix4x4_t *m, double ox, double oy, double oz, double x, double y, double z)
{