fix hitmodel with hlmdl, to actually work properly with rotated entities.

git-svn-id: https://svn.code.sf.net/p/fteqw/code/trunk@5072 fc73d0e0-1445-4013-8a0c-d673dee63da5
This commit is contained in:
Spoike 2017-03-06 15:30:45 +00:00
parent dadec86338
commit cb010176a1
4 changed files with 71 additions and 61 deletions

View file

@ -582,32 +582,32 @@ void QDECL R_ConcatTransforms (float in1[3][4], float in2[3][4], float out[3][4]
in1[2][2] * in2[2][3] + in1[2][3];
}
//R_ConcatTransforms where there's no offset values
//R_ConcatTransforms where there's no offset values, and a transposed axis
void R_ConcatTransformsAxis (float in1[3][3], float in2[3][4], float out[3][4])
{
out[0][0] = in1[0][0] * in2[0][0] + in1[0][1] * in2[1][0] +
in1[0][2] * in2[2][0];
out[0][1] = in1[0][0] * in2[0][1] + in1[0][1] * in2[1][1] +
in1[0][2] * in2[2][1];
out[0][2] = in1[0][0] * in2[0][2] + in1[0][1] * in2[1][2] +
in1[0][2] * in2[2][2];
out[0][3] = in1[0][0] * in2[0][3] + in1[0][1] * in2[1][3] +
in1[0][2] * in2[2][3];
out[1][0] = in1[1][0] * in2[0][0] + in1[1][1] * in2[1][0] +
in1[1][2] * in2[2][0];
out[1][1] = in1[1][0] * in2[0][1] + in1[1][1] * in2[1][1] +
in1[1][2] * in2[2][1];
out[1][2] = in1[1][0] * in2[0][2] + in1[1][1] * in2[1][2] +
in1[1][2] * in2[2][2];
out[1][3] = in1[1][0] * in2[0][3] + in1[1][1] * in2[1][3] +
in1[1][2] * in2[2][3];
out[2][0] = in1[2][0] * in2[0][0] + in1[2][1] * in2[1][0] +
out[0][0] = in1[0][0] * in2[0][0] + in1[1][0] * in2[1][0] +
in1[2][0] * in2[2][0];
out[0][1] = in1[0][0] * in2[0][1] + in1[1][0] * in2[1][1] +
in1[2][0] * in2[2][1];
out[0][2] = in1[0][0] * in2[0][2] + in1[1][1] * in2[1][2] +
in1[2][0] * in2[2][2];
out[0][3] = in1[0][0] * in2[0][3] + in1[1][1] * in2[1][3] +
in1[2][0] * in2[2][3];
out[1][0] = in1[0][1] * in2[0][0] + in1[1][1] * in2[1][0] +
in1[2][1] * in2[2][0];
out[1][1] = in1[0][1] * in2[0][1] + in1[1][1] * in2[1][1] +
in1[2][1] * in2[2][1];
out[1][2] = in1[0][1] * in2[0][2] + in1[1][1] * in2[1][2] +
in1[2][1] * in2[2][2];
out[1][3] = in1[0][1] * in2[0][3] + in1[1][1] * in2[1][3] +
in1[2][1] * in2[2][3];
out[2][0] = in1[0][2] * in2[0][0] + in1[1][2] * in2[1][0] +
in1[2][2] * in2[2][0];
out[2][1] = in1[2][0] * in2[0][1] + in1[2][1] * in2[1][1] +
out[2][1] = in1[0][2] * in2[0][1] + in1[1][2] * in2[1][1] +
in1[2][2] * in2[2][1];
out[2][2] = in1[2][0] * in2[0][2] + in1[2][1] * in2[1][2] +
out[2][2] = in1[0][2] * in2[0][2] + in1[1][2] * in2[1][2] +
in1[2][2] * in2[2][2];
out[2][3] = in1[2][0] * in2[0][3] + in1[2][1] * in2[1][3] +
out[2][3] = in1[0][2] * in2[0][3] + in1[1][2] * in2[1][3] +
in1[2][2] * in2[2][3];
}