From 514bac00cc1b36f593c5099dfa6bd2fdf57dd571 Mon Sep 17 00:00:00 2001 From: Matteo Bruni Date: Fri, 18 Feb 2022 11:14:28 +0100 Subject: [PATCH] d3dx9: Build with nameless unions. Signed-off-by: Matteo Bruni Signed-off-by: Alexandre Julliard --- dlls/d3dx9_36/d3dx9_private.h | 1 - dlls/d3dx9_36/effect.c | 10 +- dlls/d3dx9_36/math.c | 754 +++++++++++++++++----------------- dlls/d3dx9_36/mesh.c | 38 +- 4 files changed, 403 insertions(+), 400 deletions(-) diff --git a/dlls/d3dx9_36/d3dx9_private.h b/dlls/d3dx9_36/d3dx9_private.h index 2d286b04694..6972c1d0ce0 100644 --- a/dlls/d3dx9_36/d3dx9_private.h +++ b/dlls/d3dx9_36/d3dx9_private.h @@ -23,7 +23,6 @@ #define __WINE_D3DX9_PRIVATE_H #include -#define NONAMELESSUNION #include "wine/debug.h" #include "wine/heap.h" #include "wine/rbtree.h" diff --git a/dlls/d3dx9_36/effect.c b/dlls/d3dx9_36/effect.c index bbfb73d64c3..db95e6b592b 100644 --- a/dlls/d3dx9_36/effect.c +++ b/dlls/d3dx9_36/effect.c @@ -826,7 +826,7 @@ static void get_matrix(struct d3dx_parameter *param, D3DXMATRIX *matrix, BOOL tr { for (k = 0; k < 4; ++k) { - FLOAT *tmp = transpose ? (FLOAT *)&matrix->u.m[k][i] : (FLOAT *)&matrix->u.m[i][k]; + FLOAT *tmp = transpose ? (FLOAT *)&matrix->m[k][i] : (FLOAT *)&matrix->m[i][k]; if ((i < param->rows) && (k < param->columns)) set_number(tmp, D3DXPT_FLOAT, (DWORD *)param->data + i * param->columns + k, param->type); @@ -844,12 +844,12 @@ static void set_matrix(struct d3dx_parameter *param, const D3DXMATRIX *matrix, v { if (param->columns == 4) { - memcpy(dst_data, matrix->u.m, param->rows * 4 * sizeof(float)); + memcpy(dst_data, matrix->m, param->rows * 4 * sizeof(float)); } else { for (i = 0; i < param->rows; ++i) - memcpy((float *)dst_data + i * param->columns, matrix->u.m + i, param->columns * sizeof(float)); + memcpy((float *)dst_data + i * param->columns, matrix->m + i, param->columns * sizeof(float)); } return; } @@ -858,7 +858,7 @@ static void set_matrix(struct d3dx_parameter *param, const D3DXMATRIX *matrix, v { for (k = 0; k < param->columns; ++k) set_number((FLOAT *)dst_data + i * param->columns + k, param->type, - &matrix->u.m[i][k], D3DXPT_FLOAT); + &matrix->m[i][k], D3DXPT_FLOAT); } } @@ -871,7 +871,7 @@ static void set_matrix_transpose(struct d3dx_parameter *param, const D3DXMATRIX for (k = 0; k < param->columns; ++k) { set_number((FLOAT *)dst_data + i * param->columns + k, param->type, - &matrix->u.m[k][i], D3DXPT_FLOAT); + &matrix->m[k][i], D3DXPT_FLOAT); } } } diff --git a/dlls/d3dx9_36/math.c b/dlls/d3dx9_36/math.c index 80f357e00e9..b6f0bed38ad 100644 --- a/dlls/d3dx9_36/math.c +++ b/dlls/d3dx9_36/math.c @@ -109,38 +109,38 @@ D3DXMATRIX * WINAPI D3DXMatrixAffineTransformation(D3DXMATRIX *out, FLOAT scalin temp21 = 2.0f * (rotation->y * rotation->z - rotation->x * rotation->w); temp22 = 1.0f - 2.0f * (rotation->x * rotation->x + rotation->y * rotation->y); - out->u.m[0][0] = scaling * temp00; - out->u.m[0][1] = scaling * temp01; - out->u.m[0][2] = scaling * temp02; - out->u.m[1][0] = scaling * temp10; - out->u.m[1][1] = scaling * temp11; - out->u.m[1][2] = scaling * temp12; - out->u.m[2][0] = scaling * temp20; - out->u.m[2][1] = scaling * temp21; - out->u.m[2][2] = scaling * temp22; + out->m[0][0] = scaling * temp00; + out->m[0][1] = scaling * temp01; + out->m[0][2] = scaling * temp02; + out->m[1][0] = scaling * temp10; + out->m[1][1] = scaling * temp11; + out->m[1][2] = scaling * temp12; + out->m[2][0] = scaling * temp20; + out->m[2][1] = scaling * temp21; + out->m[2][2] = scaling * temp22; if (rotationcenter) { - out->u.m[3][0] = rotationcenter->x * (1.0f - temp00) - rotationcenter->y * temp10 + out->m[3][0] = rotationcenter->x * (1.0f - temp00) - rotationcenter->y * temp10 - rotationcenter->z * temp20; - out->u.m[3][1] = rotationcenter->y * (1.0f - temp11) - rotationcenter->x * temp01 + out->m[3][1] = rotationcenter->y * (1.0f - temp11) - rotationcenter->x * temp01 - rotationcenter->z * temp21; - out->u.m[3][2] = rotationcenter->z * (1.0f - temp22) - rotationcenter->x * temp02 + out->m[3][2] = rotationcenter->z * (1.0f - temp22) - rotationcenter->x * temp02 - rotationcenter->y * temp12; } } else { - out->u.m[0][0] = scaling; - out->u.m[1][1] = scaling; - out->u.m[2][2] = scaling; + out->m[0][0] = scaling; + out->m[1][1] = scaling; + out->m[2][2] = scaling; } if (translation) { - out->u.m[3][0] += translation->x; - out->u.m[3][1] += translation->y; - out->u.m[3][2] += translation->z; + out->m[3][0] += translation->x; + out->m[3][1] += translation->y; + out->m[3][2] += translation->z; } return out; @@ -159,10 +159,10 @@ D3DXMATRIX * WINAPI D3DXMatrixAffineTransformation2D(D3DXMATRIX *out, FLOAT scal tmp2 = 2.0f * s * cosf(rotation / 2.0f); D3DXMatrixIdentity(out); - out->u.m[0][0] = scaling * tmp1; - out->u.m[0][1] = scaling * tmp2; - out->u.m[1][0] = -scaling * tmp2; - out->u.m[1][1] = scaling * tmp1; + out->m[0][0] = scaling * tmp1; + out->m[0][1] = scaling * tmp2; + out->m[1][0] = -scaling * tmp2; + out->m[1][1] = scaling * tmp1; if (rotationcenter) { @@ -171,14 +171,14 @@ D3DXMATRIX * WINAPI D3DXMatrixAffineTransformation2D(D3DXMATRIX *out, FLOAT scal x = rotationcenter->x; y = rotationcenter->y; - out->u.m[3][0] = y * tmp2 - x * tmp1 + x; - out->u.m[3][1] = -x * tmp2 - y * tmp1 + y; + out->m[3][0] = y * tmp2 - x * tmp1 + x; + out->m[3][1] = -x * tmp2 - y * tmp1 + y; } if (translation) { - out->u.m[3][0] += translation->x; - out->u.m[3][1] += translation->y; + out->m[3][0] += translation->x; + out->m[3][1] += translation->y; } return out; @@ -192,38 +192,38 @@ HRESULT WINAPI D3DXMatrixDecompose(D3DXVECTOR3 *poutscale, D3DXQUATERNION *poutr TRACE("poutscale %p, poutrotation %p, pouttranslation %p, pm %p\n", poutscale, poutrotation, pouttranslation, pm); /*Compute the scaling part.*/ - vec.x=pm->u.m[0][0]; - vec.y=pm->u.m[0][1]; - vec.z=pm->u.m[0][2]; - poutscale->x=D3DXVec3Length(&vec); + vec.x = pm->m[0][0]; + vec.y = pm->m[0][1]; + vec.z = pm->m[0][2]; + poutscale->x = D3DXVec3Length(&vec); - vec.x=pm->u.m[1][0]; - vec.y=pm->u.m[1][1]; - vec.z=pm->u.m[1][2]; - poutscale->y=D3DXVec3Length(&vec); + vec.x = pm->m[1][0]; + vec.y = pm->m[1][1]; + vec.z = pm->m[1][2]; + poutscale->y = D3DXVec3Length(&vec); - vec.x=pm->u.m[2][0]; - vec.y=pm->u.m[2][1]; - vec.z=pm->u.m[2][2]; - poutscale->z=D3DXVec3Length(&vec); + vec.x = pm->m[2][0]; + vec.y = pm->m[2][1]; + vec.z = pm->m[2][2]; + poutscale->z = D3DXVec3Length(&vec); /*Compute the translation part.*/ - pouttranslation->x=pm->u.m[3][0]; - pouttranslation->y=pm->u.m[3][1]; - pouttranslation->z=pm->u.m[3][2]; + pouttranslation->x = pm->m[3][0]; + pouttranslation->y = pm->m[3][1]; + pouttranslation->z = pm->m[3][2]; /*Let's calculate the rotation now*/ if ( (poutscale->x == 0.0f) || (poutscale->y == 0.0f) || (poutscale->z == 0.0f) ) return D3DERR_INVALIDCALL; - normalized.u.m[0][0]=pm->u.m[0][0]/poutscale->x; - normalized.u.m[0][1]=pm->u.m[0][1]/poutscale->x; - normalized.u.m[0][2]=pm->u.m[0][2]/poutscale->x; - normalized.u.m[1][0]=pm->u.m[1][0]/poutscale->y; - normalized.u.m[1][1]=pm->u.m[1][1]/poutscale->y; - normalized.u.m[1][2]=pm->u.m[1][2]/poutscale->y; - normalized.u.m[2][0]=pm->u.m[2][0]/poutscale->z; - normalized.u.m[2][1]=pm->u.m[2][1]/poutscale->z; - normalized.u.m[2][2]=pm->u.m[2][2]/poutscale->z; + normalized.m[0][0] = pm->m[0][0]/poutscale->x; + normalized.m[0][1] = pm->m[0][1]/poutscale->x; + normalized.m[0][2] = pm->m[0][2]/poutscale->x; + normalized.m[1][0] = pm->m[1][0]/poutscale->y; + normalized.m[1][1] = pm->m[1][1]/poutscale->y; + normalized.m[1][2] = pm->m[1][2]/poutscale->y; + normalized.m[2][0] = pm->m[2][0]/poutscale->z; + normalized.m[2][1] = pm->m[2][1]/poutscale->z; + normalized.m[2][2] = pm->m[2][2]/poutscale->z; D3DXQuaternionRotationMatrix(poutrotation,&normalized); return S_OK; @@ -235,20 +235,20 @@ FLOAT WINAPI D3DXMatrixDeterminant(const D3DXMATRIX *pm) TRACE("pm %p\n", pm); - t[0] = pm->u.m[2][2] * pm->u.m[3][3] - pm->u.m[2][3] * pm->u.m[3][2]; - t[1] = pm->u.m[1][2] * pm->u.m[3][3] - pm->u.m[1][3] * pm->u.m[3][2]; - t[2] = pm->u.m[1][2] * pm->u.m[2][3] - pm->u.m[1][3] * pm->u.m[2][2]; - v[0] = pm->u.m[1][1] * t[0] - pm->u.m[2][1] * t[1] + pm->u.m[3][1] * t[2]; - v[1] = -pm->u.m[1][0] * t[0] + pm->u.m[2][0] * t[1] - pm->u.m[3][0] * t[2]; + t[0] = pm->m[2][2] * pm->m[3][3] - pm->m[2][3] * pm->m[3][2]; + t[1] = pm->m[1][2] * pm->m[3][3] - pm->m[1][3] * pm->m[3][2]; + t[2] = pm->m[1][2] * pm->m[2][3] - pm->m[1][3] * pm->m[2][2]; + v[0] = pm->m[1][1] * t[0] - pm->m[2][1] * t[1] + pm->m[3][1] * t[2]; + v[1] = -pm->m[1][0] * t[0] + pm->m[2][0] * t[1] - pm->m[3][0] * t[2]; - t[0] = pm->u.m[1][0] * pm->u.m[2][1] - pm->u.m[2][0] * pm->u.m[1][1]; - t[1] = pm->u.m[1][0] * pm->u.m[3][1] - pm->u.m[3][0] * pm->u.m[1][1]; - t[2] = pm->u.m[2][0] * pm->u.m[3][1] - pm->u.m[3][0] * pm->u.m[2][1]; - v[2] = pm->u.m[3][3] * t[0] - pm->u.m[2][3] * t[1] + pm->u.m[1][3] * t[2]; - v[3] = -pm->u.m[3][2] * t[0] + pm->u.m[2][2] * t[1] - pm->u.m[1][2] * t[2]; + t[0] = pm->m[1][0] * pm->m[2][1] - pm->m[2][0] * pm->m[1][1]; + t[1] = pm->m[1][0] * pm->m[3][1] - pm->m[3][0] * pm->m[1][1]; + t[2] = pm->m[2][0] * pm->m[3][1] - pm->m[3][0] * pm->m[2][1]; + v[2] = pm->m[3][3] * t[0] - pm->m[2][3] * t[1] + pm->m[1][3] * t[2]; + v[3] = -pm->m[3][2] * t[0] + pm->m[2][2] * t[1] - pm->m[1][2] * t[2]; - return pm->u.m[0][0] * v[0] + pm->u.m[0][1] * v[1] + - pm->u.m[0][2] * v[2] + pm->u.m[0][3] * v[3]; + return pm->m[0][0] * v[0] + pm->m[0][1] * v[1] + + pm->m[0][2] * v[2] + pm->m[0][3] * v[3]; } D3DXMATRIX* WINAPI D3DXMatrixInverse(D3DXMATRIX *pout, FLOAT *pdeterminant, const D3DXMATRIX *pm) @@ -258,68 +258,68 @@ D3DXMATRIX* WINAPI D3DXMatrixInverse(D3DXMATRIX *pout, FLOAT *pdeterminant, cons TRACE("pout %p, pdeterminant %p, pm %p\n", pout, pdeterminant, pm); - t[0] = pm->u.m[2][2] * pm->u.m[3][3] - pm->u.m[2][3] * pm->u.m[3][2]; - t[1] = pm->u.m[1][2] * pm->u.m[3][3] - pm->u.m[1][3] * pm->u.m[3][2]; - t[2] = pm->u.m[1][2] * pm->u.m[2][3] - pm->u.m[1][3] * pm->u.m[2][2]; - v[0] = pm->u.m[1][1] * t[0] - pm->u.m[2][1] * t[1] + pm->u.m[3][1] * t[2]; - v[4] = -pm->u.m[1][0] * t[0] + pm->u.m[2][0] * t[1] - pm->u.m[3][0] * t[2]; + t[0] = pm->m[2][2] * pm->m[3][3] - pm->m[2][3] * pm->m[3][2]; + t[1] = pm->m[1][2] * pm->m[3][3] - pm->m[1][3] * pm->m[3][2]; + t[2] = pm->m[1][2] * pm->m[2][3] - pm->m[1][3] * pm->m[2][2]; + v[0] = pm->m[1][1] * t[0] - pm->m[2][1] * t[1] + pm->m[3][1] * t[2]; + v[4] = -pm->m[1][0] * t[0] + pm->m[2][0] * t[1] - pm->m[3][0] * t[2]; - t[0] = pm->u.m[1][0] * pm->u.m[2][1] - pm->u.m[2][0] * pm->u.m[1][1]; - t[1] = pm->u.m[1][0] * pm->u.m[3][1] - pm->u.m[3][0] * pm->u.m[1][1]; - t[2] = pm->u.m[2][0] * pm->u.m[3][1] - pm->u.m[3][0] * pm->u.m[2][1]; - v[8] = pm->u.m[3][3] * t[0] - pm->u.m[2][3] * t[1] + pm->u.m[1][3] * t[2]; - v[12] = -pm->u.m[3][2] * t[0] + pm->u.m[2][2] * t[1] - pm->u.m[1][2] * t[2]; + t[0] = pm->m[1][0] * pm->m[2][1] - pm->m[2][0] * pm->m[1][1]; + t[1] = pm->m[1][0] * pm->m[3][1] - pm->m[3][0] * pm->m[1][1]; + t[2] = pm->m[2][0] * pm->m[3][1] - pm->m[3][0] * pm->m[2][1]; + v[8] = pm->m[3][3] * t[0] - pm->m[2][3] * t[1] + pm->m[1][3] * t[2]; + v[12] = -pm->m[3][2] * t[0] + pm->m[2][2] * t[1] - pm->m[1][2] * t[2]; - det = pm->u.m[0][0] * v[0] + pm->u.m[0][1] * v[4] + - pm->u.m[0][2] * v[8] + pm->u.m[0][3] * v[12]; + det = pm->m[0][0] * v[0] + pm->m[0][1] * v[4] + + pm->m[0][2] * v[8] + pm->m[0][3] * v[12]; if (det == 0.0f) return NULL; if (pdeterminant) *pdeterminant = det; - t[0] = pm->u.m[2][2] * pm->u.m[3][3] - pm->u.m[2][3] * pm->u.m[3][2]; - t[1] = pm->u.m[0][2] * pm->u.m[3][3] - pm->u.m[0][3] * pm->u.m[3][2]; - t[2] = pm->u.m[0][2] * pm->u.m[2][3] - pm->u.m[0][3] * pm->u.m[2][2]; - v[1] = -pm->u.m[0][1] * t[0] + pm->u.m[2][1] * t[1] - pm->u.m[3][1] * t[2]; - v[5] = pm->u.m[0][0] * t[0] - pm->u.m[2][0] * t[1] + pm->u.m[3][0] * t[2]; + t[0] = pm->m[2][2] * pm->m[3][3] - pm->m[2][3] * pm->m[3][2]; + t[1] = pm->m[0][2] * pm->m[3][3] - pm->m[0][3] * pm->m[3][2]; + t[2] = pm->m[0][2] * pm->m[2][3] - pm->m[0][3] * pm->m[2][2]; + v[1] = -pm->m[0][1] * t[0] + pm->m[2][1] * t[1] - pm->m[3][1] * t[2]; + v[5] = pm->m[0][0] * t[0] - pm->m[2][0] * t[1] + pm->m[3][0] * t[2]; - t[0] = pm->u.m[0][0] * pm->u.m[2][1] - pm->u.m[2][0] * pm->u.m[0][1]; - t[1] = pm->u.m[3][0] * pm->u.m[0][1] - pm->u.m[0][0] * pm->u.m[3][1]; - t[2] = pm->u.m[2][0] * pm->u.m[3][1] - pm->u.m[3][0] * pm->u.m[2][1]; - v[9] = -pm->u.m[3][3] * t[0] - pm->u.m[2][3] * t[1]- pm->u.m[0][3] * t[2]; - v[13] = pm->u.m[3][2] * t[0] + pm->u.m[2][2] * t[1] + pm->u.m[0][2] * t[2]; + t[0] = pm->m[0][0] * pm->m[2][1] - pm->m[2][0] * pm->m[0][1]; + t[1] = pm->m[3][0] * pm->m[0][1] - pm->m[0][0] * pm->m[3][1]; + t[2] = pm->m[2][0] * pm->m[3][1] - pm->m[3][0] * pm->m[2][1]; + v[9] = -pm->m[3][3] * t[0] - pm->m[2][3] * t[1]- pm->m[0][3] * t[2]; + v[13] = pm->m[3][2] * t[0] + pm->m[2][2] * t[1] + pm->m[0][2] * t[2]; - t[0] = pm->u.m[1][2] * pm->u.m[3][3] - pm->u.m[1][3] * pm->u.m[3][2]; - t[1] = pm->u.m[0][2] * pm->u.m[3][3] - pm->u.m[0][3] * pm->u.m[3][2]; - t[2] = pm->u.m[0][2] * pm->u.m[1][3] - pm->u.m[0][3] * pm->u.m[1][2]; - v[2] = pm->u.m[0][1] * t[0] - pm->u.m[1][1] * t[1] + pm->u.m[3][1] * t[2]; - v[6] = -pm->u.m[0][0] * t[0] + pm->u.m[1][0] * t[1] - pm->u.m[3][0] * t[2]; + t[0] = pm->m[1][2] * pm->m[3][3] - pm->m[1][3] * pm->m[3][2]; + t[1] = pm->m[0][2] * pm->m[3][3] - pm->m[0][3] * pm->m[3][2]; + t[2] = pm->m[0][2] * pm->m[1][3] - pm->m[0][3] * pm->m[1][2]; + v[2] = pm->m[0][1] * t[0] - pm->m[1][1] * t[1] + pm->m[3][1] * t[2]; + v[6] = -pm->m[0][0] * t[0] + pm->m[1][0] * t[1] - pm->m[3][0] * t[2]; - t[0] = pm->u.m[0][0] * pm->u.m[1][1] - pm->u.m[1][0] * pm->u.m[0][1]; - t[1] = pm->u.m[3][0] * pm->u.m[0][1] - pm->u.m[0][0] * pm->u.m[3][1]; - t[2] = pm->u.m[1][0] * pm->u.m[3][1] - pm->u.m[3][0] * pm->u.m[1][1]; - v[10] = pm->u.m[3][3] * t[0] + pm->u.m[1][3] * t[1] + pm->u.m[0][3] * t[2]; - v[14] = -pm->u.m[3][2] * t[0] - pm->u.m[1][2] * t[1] - pm->u.m[0][2] * t[2]; + t[0] = pm->m[0][0] * pm->m[1][1] - pm->m[1][0] * pm->m[0][1]; + t[1] = pm->m[3][0] * pm->m[0][1] - pm->m[0][0] * pm->m[3][1]; + t[2] = pm->m[1][0] * pm->m[3][1] - pm->m[3][0] * pm->m[1][1]; + v[10] = pm->m[3][3] * t[0] + pm->m[1][3] * t[1] + pm->m[0][3] * t[2]; + v[14] = -pm->m[3][2] * t[0] - pm->m[1][2] * t[1] - pm->m[0][2] * t[2]; - t[0] = pm->u.m[1][2] * pm->u.m[2][3] - pm->u.m[1][3] * pm->u.m[2][2]; - t[1] = pm->u.m[0][2] * pm->u.m[2][3] - pm->u.m[0][3] * pm->u.m[2][2]; - t[2] = pm->u.m[0][2] * pm->u.m[1][3] - pm->u.m[0][3] * pm->u.m[1][2]; - v[3] = -pm->u.m[0][1] * t[0] + pm->u.m[1][1] * t[1] - pm->u.m[2][1] * t[2]; - v[7] = pm->u.m[0][0] * t[0] - pm->u.m[1][0] * t[1] + pm->u.m[2][0] * t[2]; + t[0] = pm->m[1][2] * pm->m[2][3] - pm->m[1][3] * pm->m[2][2]; + t[1] = pm->m[0][2] * pm->m[2][3] - pm->m[0][3] * pm->m[2][2]; + t[2] = pm->m[0][2] * pm->m[1][3] - pm->m[0][3] * pm->m[1][2]; + v[3] = -pm->m[0][1] * t[0] + pm->m[1][1] * t[1] - pm->m[2][1] * t[2]; + v[7] = pm->m[0][0] * t[0] - pm->m[1][0] * t[1] + pm->m[2][0] * t[2]; - v[11] = -pm->u.m[0][0] * (pm->u.m[1][1] * pm->u.m[2][3] - pm->u.m[1][3] * pm->u.m[2][1]) + - pm->u.m[1][0] * (pm->u.m[0][1] * pm->u.m[2][3] - pm->u.m[0][3] * pm->u.m[2][1]) - - pm->u.m[2][0] * (pm->u.m[0][1] * pm->u.m[1][3] - pm->u.m[0][3] * pm->u.m[1][1]); + v[11] = -pm->m[0][0] * (pm->m[1][1] * pm->m[2][3] - pm->m[1][3] * pm->m[2][1]) + + pm->m[1][0] * (pm->m[0][1] * pm->m[2][3] - pm->m[0][3] * pm->m[2][1]) - + pm->m[2][0] * (pm->m[0][1] * pm->m[1][3] - pm->m[0][3] * pm->m[1][1]); - v[15] = pm->u.m[0][0] * (pm->u.m[1][1] * pm->u.m[2][2] - pm->u.m[1][2] * pm->u.m[2][1]) - - pm->u.m[1][0] * (pm->u.m[0][1] * pm->u.m[2][2] - pm->u.m[0][2] * pm->u.m[2][1]) + - pm->u.m[2][0] * (pm->u.m[0][1] * pm->u.m[1][2] - pm->u.m[0][2] * pm->u.m[1][1]); + v[15] = pm->m[0][0] * (pm->m[1][1] * pm->m[2][2] - pm->m[1][2] * pm->m[2][1]) - + pm->m[1][0] * (pm->m[0][1] * pm->m[2][2] - pm->m[0][2] * pm->m[2][1]) + + pm->m[2][0] * (pm->m[0][1] * pm->m[1][2] - pm->m[0][2] * pm->m[1][1]); det = 1.0f / det; for (i = 0; i < 4; i++) for (j = 0; j < 4; j++) - pout->u.m[i][j] = v[4 * i + j] * det; + pout->m[i][j] = v[4 * i + j] * det; return pout; } @@ -337,22 +337,22 @@ D3DXMATRIX * WINAPI D3DXMatrixLookAtLH(D3DXMATRIX *out, const D3DXVECTOR3 *eye, D3DXVec3Cross(&upn, &vec, &right); D3DXVec3Normalize(&right, &right); D3DXVec3Normalize(&upn, &upn); - out->u.m[0][0] = right.x; - out->u.m[1][0] = right.y; - out->u.m[2][0] = right.z; - out->u.m[3][0] = -D3DXVec3Dot(&right, eye); - out->u.m[0][1] = upn.x; - out->u.m[1][1] = upn.y; - out->u.m[2][1] = upn.z; - out->u.m[3][1] = -D3DXVec3Dot(&upn, eye); - out->u.m[0][2] = vec.x; - out->u.m[1][2] = vec.y; - out->u.m[2][2] = vec.z; - out->u.m[3][2] = -D3DXVec3Dot(&vec, eye); - out->u.m[0][3] = 0.0f; - out->u.m[1][3] = 0.0f; - out->u.m[2][3] = 0.0f; - out->u.m[3][3] = 1.0f; + out->m[0][0] = right.x; + out->m[1][0] = right.y; + out->m[2][0] = right.z; + out->m[3][0] = -D3DXVec3Dot(&right, eye); + out->m[0][1] = upn.x; + out->m[1][1] = upn.y; + out->m[2][1] = upn.z; + out->m[3][1] = -D3DXVec3Dot(&upn, eye); + out->m[0][2] = vec.x; + out->m[1][2] = vec.y; + out->m[2][2] = vec.z; + out->m[3][2] = -D3DXVec3Dot(&vec, eye); + out->m[0][3] = 0.0f; + out->m[1][3] = 0.0f; + out->m[2][3] = 0.0f; + out->m[3][3] = 1.0f; return out; } @@ -370,22 +370,22 @@ D3DXMATRIX * WINAPI D3DXMatrixLookAtRH(D3DXMATRIX *out, const D3DXVECTOR3 *eye, D3DXVec3Cross(&upn, &vec, &right); D3DXVec3Normalize(&right, &right); D3DXVec3Normalize(&upn, &upn); - out->u.m[0][0] = -right.x; - out->u.m[1][0] = -right.y; - out->u.m[2][0] = -right.z; - out->u.m[3][0] = D3DXVec3Dot(&right, eye); - out->u.m[0][1] = upn.x; - out->u.m[1][1] = upn.y; - out->u.m[2][1] = upn.z; - out->u.m[3][1] = -D3DXVec3Dot(&upn, eye); - out->u.m[0][2] = -vec.x; - out->u.m[1][2] = -vec.y; - out->u.m[2][2] = -vec.z; - out->u.m[3][2] = D3DXVec3Dot(&vec, eye); - out->u.m[0][3] = 0.0f; - out->u.m[1][3] = 0.0f; - out->u.m[2][3] = 0.0f; - out->u.m[3][3] = 1.0f; + out->m[0][0] = -right.x; + out->m[1][0] = -right.y; + out->m[2][0] = -right.z; + out->m[3][0] = D3DXVec3Dot(&right, eye); + out->m[0][1] = upn.x; + out->m[1][1] = upn.y; + out->m[2][1] = upn.z; + out->m[3][1] = -D3DXVec3Dot(&upn, eye); + out->m[0][2] = -vec.x; + out->m[1][2] = -vec.y; + out->m[2][2] = -vec.z; + out->m[3][2] = D3DXVec3Dot(&vec, eye); + out->m[0][3] = 0.0f; + out->m[1][3] = 0.0f; + out->m[2][3] = 0.0f; + out->m[3][3] = 1.0f; return out; } @@ -401,7 +401,7 @@ D3DXMATRIX* WINAPI D3DXMatrixMultiply(D3DXMATRIX *pout, const D3DXMATRIX *pm1, c { for (j=0; j<4; j++) { - out.u.m[i][j] = pm1->u.m[i][0] * pm2->u.m[0][j] + pm1->u.m[i][1] * pm2->u.m[1][j] + pm1->u.m[i][2] * pm2->u.m[2][j] + pm1->u.m[i][3] * pm2->u.m[3][j]; + out.m[i][j] = pm1->m[i][0] * pm2->m[0][j] + pm1->m[i][1] * pm2->m[1][j] + pm1->m[i][2] * pm2->m[2][j] + pm1->m[i][3] * pm2->m[3][j]; } } @@ -418,7 +418,7 @@ D3DXMATRIX* WINAPI D3DXMatrixMultiplyTranspose(D3DXMATRIX *pout, const D3DXMATRI for (i = 0; i < 4; i++) for (j = 0; j < 4; j++) - temp.u.m[j][i] = pm1->u.m[i][0] * pm2->u.m[0][j] + pm1->u.m[i][1] * pm2->u.m[1][j] + pm1->u.m[i][2] * pm2->u.m[2][j] + pm1->u.m[i][3] * pm2->u.m[3][j]; + temp.m[j][i] = pm1->m[i][0] * pm2->m[0][j] + pm1->m[i][1] * pm2->m[1][j] + pm1->m[i][2] * pm2->m[2][j] + pm1->m[i][3] * pm2->m[3][j]; *pout = temp; return pout; @@ -429,10 +429,10 @@ D3DXMATRIX* WINAPI D3DXMatrixOrthoLH(D3DXMATRIX *pout, FLOAT w, FLOAT h, FLOAT z TRACE("pout %p, w %f, h %f, zn %f, zf %f\n", pout, w, h, zn, zf); D3DXMatrixIdentity(pout); - pout->u.m[0][0] = 2.0f / w; - pout->u.m[1][1] = 2.0f / h; - pout->u.m[2][2] = 1.0f / (zf - zn); - pout->u.m[3][2] = zn / (zn - zf); + pout->m[0][0] = 2.0f / w; + pout->m[1][1] = 2.0f / h; + pout->m[2][2] = 1.0f / (zf - zn); + pout->m[3][2] = zn / (zn - zf); return pout; } @@ -441,12 +441,12 @@ D3DXMATRIX* WINAPI D3DXMatrixOrthoOffCenterLH(D3DXMATRIX *pout, FLOAT l, FLOAT r TRACE("pout %p, l %f, r %f, b %f, t %f, zn %f, zf %f\n", pout, l, r, b, t, zn, zf); D3DXMatrixIdentity(pout); - pout->u.m[0][0] = 2.0f / (r - l); - pout->u.m[1][1] = 2.0f / (t - b); - pout->u.m[2][2] = 1.0f / (zf -zn); - pout->u.m[3][0] = -1.0f -2.0f *l / (r - l); - pout->u.m[3][1] = 1.0f + 2.0f * t / (b - t); - pout->u.m[3][2] = zn / (zn -zf); + pout->m[0][0] = 2.0f / (r - l); + pout->m[1][1] = 2.0f / (t - b); + pout->m[2][2] = 1.0f / (zf -zn); + pout->m[3][0] = -1.0f -2.0f *l / (r - l); + pout->m[3][1] = 1.0f + 2.0f * t / (b - t); + pout->m[3][2] = zn / (zn -zf); return pout; } @@ -455,12 +455,12 @@ D3DXMATRIX* WINAPI D3DXMatrixOrthoOffCenterRH(D3DXMATRIX *pout, FLOAT l, FLOAT r TRACE("pout %p, l %f, r %f, b %f, t %f, zn %f, zf %f\n", pout, l, r, b, t, zn, zf); D3DXMatrixIdentity(pout); - pout->u.m[0][0] = 2.0f / (r - l); - pout->u.m[1][1] = 2.0f / (t - b); - pout->u.m[2][2] = 1.0f / (zn -zf); - pout->u.m[3][0] = -1.0f -2.0f *l / (r - l); - pout->u.m[3][1] = 1.0f + 2.0f * t / (b - t); - pout->u.m[3][2] = zn / (zn -zf); + pout->m[0][0] = 2.0f / (r - l); + pout->m[1][1] = 2.0f / (t - b); + pout->m[2][2] = 1.0f / (zn -zf); + pout->m[3][0] = -1.0f -2.0f *l / (r - l); + pout->m[3][1] = 1.0f + 2.0f * t / (b - t); + pout->m[3][2] = zn / (zn -zf); return pout; } @@ -469,10 +469,10 @@ D3DXMATRIX* WINAPI D3DXMatrixOrthoRH(D3DXMATRIX *pout, FLOAT w, FLOAT h, FLOAT z TRACE("pout %p, w %f, h %f, zn %f, zf %f\n", pout, w, h, zn, zf); D3DXMatrixIdentity(pout); - pout->u.m[0][0] = 2.0f / w; - pout->u.m[1][1] = 2.0f / h; - pout->u.m[2][2] = 1.0f / (zn - zf); - pout->u.m[3][2] = zn / (zn - zf); + pout->m[0][0] = 2.0f / w; + pout->m[1][1] = 2.0f / h; + pout->m[2][2] = 1.0f / (zn - zf); + pout->m[3][2] = zn / (zn - zf); return pout; } @@ -481,12 +481,12 @@ D3DXMATRIX* WINAPI D3DXMatrixPerspectiveFovLH(D3DXMATRIX *pout, FLOAT fovy, FLOA TRACE("pout %p, fovy %f, aspect %f, zn %f, zf %f\n", pout, fovy, aspect, zn, zf); D3DXMatrixIdentity(pout); - pout->u.m[0][0] = 1.0f / (aspect * tanf(fovy/2.0f)); - pout->u.m[1][1] = 1.0f / tanf(fovy/2.0f); - pout->u.m[2][2] = zf / (zf - zn); - pout->u.m[2][3] = 1.0f; - pout->u.m[3][2] = (zf * zn) / (zn - zf); - pout->u.m[3][3] = 0.0f; + pout->m[0][0] = 1.0f / (aspect * tanf(fovy/2.0f)); + pout->m[1][1] = 1.0f / tanf(fovy/2.0f); + pout->m[2][2] = zf / (zf - zn); + pout->m[2][3] = 1.0f; + pout->m[3][2] = (zf * zn) / (zn - zf); + pout->m[3][3] = 0.0f; return pout; } @@ -495,12 +495,12 @@ D3DXMATRIX* WINAPI D3DXMatrixPerspectiveFovRH(D3DXMATRIX *pout, FLOAT fovy, FLOA TRACE("pout %p, fovy %f, aspect %f, zn %f, zf %f\n", pout, fovy, aspect, zn, zf); D3DXMatrixIdentity(pout); - pout->u.m[0][0] = 1.0f / (aspect * tanf(fovy/2.0f)); - pout->u.m[1][1] = 1.0f / tanf(fovy/2.0f); - pout->u.m[2][2] = zf / (zn - zf); - pout->u.m[2][3] = -1.0f; - pout->u.m[3][2] = (zf * zn) / (zn - zf); - pout->u.m[3][3] = 0.0f; + pout->m[0][0] = 1.0f / (aspect * tanf(fovy/2.0f)); + pout->m[1][1] = 1.0f / tanf(fovy/2.0f); + pout->m[2][2] = zf / (zn - zf); + pout->m[2][3] = -1.0f; + pout->m[3][2] = (zf * zn) / (zn - zf); + pout->m[3][3] = 0.0f; return pout; } @@ -509,12 +509,12 @@ D3DXMATRIX* WINAPI D3DXMatrixPerspectiveLH(D3DXMATRIX *pout, FLOAT w, FLOAT h, F TRACE("pout %p, w %f, h %f, zn %f, zf %f\n", pout, w, h, zn, zf); D3DXMatrixIdentity(pout); - pout->u.m[0][0] = 2.0f * zn / w; - pout->u.m[1][1] = 2.0f * zn / h; - pout->u.m[2][2] = zf / (zf - zn); - pout->u.m[3][2] = (zn * zf) / (zn - zf); - pout->u.m[2][3] = 1.0f; - pout->u.m[3][3] = 0.0f; + pout->m[0][0] = 2.0f * zn / w; + pout->m[1][1] = 2.0f * zn / h; + pout->m[2][2] = zf / (zf - zn); + pout->m[3][2] = (zn * zf) / (zn - zf); + pout->m[2][3] = 1.0f; + pout->m[3][3] = 0.0f; return pout; } @@ -523,14 +523,14 @@ D3DXMATRIX* WINAPI D3DXMatrixPerspectiveOffCenterLH(D3DXMATRIX *pout, FLOAT l, F TRACE("pout %p, l %f, r %f, b %f, t %f, zn %f, zf %f\n", pout, l, r, b, t, zn, zf); D3DXMatrixIdentity(pout); - pout->u.m[0][0] = 2.0f * zn / (r - l); - pout->u.m[1][1] = -2.0f * zn / (b - t); - pout->u.m[2][0] = -1.0f - 2.0f * l / (r - l); - pout->u.m[2][1] = 1.0f + 2.0f * t / (b - t); - pout->u.m[2][2] = - zf / (zn - zf); - pout->u.m[3][2] = (zn * zf) / (zn -zf); - pout->u.m[2][3] = 1.0f; - pout->u.m[3][3] = 0.0f; + pout->m[0][0] = 2.0f * zn / (r - l); + pout->m[1][1] = -2.0f * zn / (b - t); + pout->m[2][0] = -1.0f - 2.0f * l / (r - l); + pout->m[2][1] = 1.0f + 2.0f * t / (b - t); + pout->m[2][2] = - zf / (zn - zf); + pout->m[3][2] = (zn * zf) / (zn -zf); + pout->m[2][3] = 1.0f; + pout->m[3][3] = 0.0f; return pout; } @@ -539,14 +539,14 @@ D3DXMATRIX* WINAPI D3DXMatrixPerspectiveOffCenterRH(D3DXMATRIX *pout, FLOAT l, F TRACE("pout %p, l %f, r %f, b %f, t %f, zn %f, zf %f\n", pout, l, r, b, t, zn, zf); D3DXMatrixIdentity(pout); - pout->u.m[0][0] = 2.0f * zn / (r - l); - pout->u.m[1][1] = -2.0f * zn / (b - t); - pout->u.m[2][0] = 1.0f + 2.0f * l / (r - l); - pout->u.m[2][1] = -1.0f -2.0f * t / (b - t); - pout->u.m[2][2] = zf / (zn - zf); - pout->u.m[3][2] = (zn * zf) / (zn -zf); - pout->u.m[2][3] = -1.0f; - pout->u.m[3][3] = 0.0f; + pout->m[0][0] = 2.0f * zn / (r - l); + pout->m[1][1] = -2.0f * zn / (b - t); + pout->m[2][0] = 1.0f + 2.0f * l / (r - l); + pout->m[2][1] = -1.0f -2.0f * t / (b - t); + pout->m[2][2] = zf / (zn - zf); + pout->m[3][2] = (zn * zf) / (zn -zf); + pout->m[2][3] = -1.0f; + pout->m[3][3] = 0.0f; return pout; } @@ -555,12 +555,12 @@ D3DXMATRIX* WINAPI D3DXMatrixPerspectiveRH(D3DXMATRIX *pout, FLOAT w, FLOAT h, F TRACE("pout %p, w %f, h %f, zn %f, zf %f\n", pout, w, h, zn, zf); D3DXMatrixIdentity(pout); - pout->u.m[0][0] = 2.0f * zn / w; - pout->u.m[1][1] = 2.0f * zn / h; - pout->u.m[2][2] = zf / (zn - zf); - pout->u.m[3][2] = (zn * zf) / (zn - zf); - pout->u.m[2][3] = -1.0f; - pout->u.m[3][3] = 0.0f; + pout->m[0][0] = 2.0f * zn / w; + pout->m[1][1] = 2.0f * zn / h; + pout->m[2][2] = zf / (zn - zf); + pout->m[3][2] = (zn * zf) / (zn - zf); + pout->m[2][3] = -1.0f; + pout->m[3][3] = 0.0f; return pout; } @@ -572,18 +572,18 @@ D3DXMATRIX* WINAPI D3DXMatrixReflect(D3DXMATRIX *pout, const D3DXPLANE *pplane) D3DXPlaneNormalize(&Nplane, pplane); D3DXMatrixIdentity(pout); - pout->u.m[0][0] = 1.0f - 2.0f * Nplane.a * Nplane.a; - pout->u.m[0][1] = -2.0f * Nplane.a * Nplane.b; - pout->u.m[0][2] = -2.0f * Nplane.a * Nplane.c; - pout->u.m[1][0] = -2.0f * Nplane.a * Nplane.b; - pout->u.m[1][1] = 1.0f - 2.0f * Nplane.b * Nplane.b; - pout->u.m[1][2] = -2.0f * Nplane.b * Nplane.c; - pout->u.m[2][0] = -2.0f * Nplane.c * Nplane.a; - pout->u.m[2][1] = -2.0f * Nplane.c * Nplane.b; - pout->u.m[2][2] = 1.0f - 2.0f * Nplane.c * Nplane.c; - pout->u.m[3][0] = -2.0f * Nplane.d * Nplane.a; - pout->u.m[3][1] = -2.0f * Nplane.d * Nplane.b; - pout->u.m[3][2] = -2.0f * Nplane.d * Nplane.c; + pout->m[0][0] = 1.0f - 2.0f * Nplane.a * Nplane.a; + pout->m[0][1] = -2.0f * Nplane.a * Nplane.b; + pout->m[0][2] = -2.0f * Nplane.a * Nplane.c; + pout->m[1][0] = -2.0f * Nplane.a * Nplane.b; + pout->m[1][1] = 1.0f - 2.0f * Nplane.b * Nplane.b; + pout->m[1][2] = -2.0f * Nplane.b * Nplane.c; + pout->m[2][0] = -2.0f * Nplane.c * Nplane.a; + pout->m[2][1] = -2.0f * Nplane.c * Nplane.b; + pout->m[2][2] = 1.0f - 2.0f * Nplane.c * Nplane.c; + pout->m[3][0] = -2.0f * Nplane.d * Nplane.a; + pout->m[3][1] = -2.0f * Nplane.d * Nplane.b; + pout->m[3][2] = -2.0f * Nplane.d * Nplane.c; return pout; } @@ -599,22 +599,22 @@ D3DXMATRIX * WINAPI D3DXMatrixRotationAxis(D3DXMATRIX *out, const D3DXVECTOR3 *v cangle = cosf(angle); cdiff = 1.0f - cangle; - out->u.m[0][0] = cdiff * nv.x * nv.x + cangle; - out->u.m[1][0] = cdiff * nv.x * nv.y - sangle * nv.z; - out->u.m[2][0] = cdiff * nv.x * nv.z + sangle * nv.y; - out->u.m[3][0] = 0.0f; - out->u.m[0][1] = cdiff * nv.y * nv.x + sangle * nv.z; - out->u.m[1][1] = cdiff * nv.y * nv.y + cangle; - out->u.m[2][1] = cdiff * nv.y * nv.z - sangle * nv.x; - out->u.m[3][1] = 0.0f; - out->u.m[0][2] = cdiff * nv.z * nv.x - sangle * nv.y; - out->u.m[1][2] = cdiff * nv.z * nv.y + sangle * nv.x; - out->u.m[2][2] = cdiff * nv.z * nv.z + cangle; - out->u.m[3][2] = 0.0f; - out->u.m[0][3] = 0.0f; - out->u.m[1][3] = 0.0f; - out->u.m[2][3] = 0.0f; - out->u.m[3][3] = 1.0f; + out->m[0][0] = cdiff * nv.x * nv.x + cangle; + out->m[1][0] = cdiff * nv.x * nv.y - sangle * nv.z; + out->m[2][0] = cdiff * nv.x * nv.z + sangle * nv.y; + out->m[3][0] = 0.0f; + out->m[0][1] = cdiff * nv.y * nv.x + sangle * nv.z; + out->m[1][1] = cdiff * nv.y * nv.y + cangle; + out->m[2][1] = cdiff * nv.y * nv.z - sangle * nv.x; + out->m[3][1] = 0.0f; + out->m[0][2] = cdiff * nv.z * nv.x - sangle * nv.y; + out->m[1][2] = cdiff * nv.z * nv.y + sangle * nv.x; + out->m[2][2] = cdiff * nv.z * nv.z + cangle; + out->m[3][2] = 0.0f; + out->m[0][3] = 0.0f; + out->m[1][3] = 0.0f; + out->m[2][3] = 0.0f; + out->m[3][3] = 1.0f; return out; } @@ -624,15 +624,15 @@ D3DXMATRIX* WINAPI D3DXMatrixRotationQuaternion(D3DXMATRIX *pout, const D3DXQUAT TRACE("pout %p, pq %p\n", pout, pq); D3DXMatrixIdentity(pout); - pout->u.m[0][0] = 1.0f - 2.0f * (pq->y * pq->y + pq->z * pq->z); - pout->u.m[0][1] = 2.0f * (pq->x *pq->y + pq->z * pq->w); - pout->u.m[0][2] = 2.0f * (pq->x * pq->z - pq->y * pq->w); - pout->u.m[1][0] = 2.0f * (pq->x * pq->y - pq->z * pq->w); - pout->u.m[1][1] = 1.0f - 2.0f * (pq->x * pq->x + pq->z * pq->z); - pout->u.m[1][2] = 2.0f * (pq->y *pq->z + pq->x *pq->w); - pout->u.m[2][0] = 2.0f * (pq->x * pq->z + pq->y * pq->w); - pout->u.m[2][1] = 2.0f * (pq->y *pq->z - pq->x *pq->w); - pout->u.m[2][2] = 1.0f - 2.0f * (pq->x * pq->x + pq->y * pq->y); + pout->m[0][0] = 1.0f - 2.0f * (pq->y * pq->y + pq->z * pq->z); + pout->m[0][1] = 2.0f * (pq->x *pq->y + pq->z * pq->w); + pout->m[0][2] = 2.0f * (pq->x * pq->z - pq->y * pq->w); + pout->m[1][0] = 2.0f * (pq->x * pq->y - pq->z * pq->w); + pout->m[1][1] = 1.0f - 2.0f * (pq->x * pq->x + pq->z * pq->z); + pout->m[1][2] = 2.0f * (pq->y *pq->z + pq->x *pq->w); + pout->m[2][0] = 2.0f * (pq->x * pq->z + pq->y * pq->w); + pout->m[2][1] = 2.0f * (pq->y *pq->z - pq->x *pq->w); + pout->m[2][2] = 1.0f - 2.0f * (pq->x * pq->x + pq->y * pq->y); return pout; } @@ -641,10 +641,10 @@ D3DXMATRIX* WINAPI D3DXMatrixRotationX(D3DXMATRIX *pout, FLOAT angle) TRACE("pout %p, angle %f\n", pout, angle); D3DXMatrixIdentity(pout); - pout->u.m[1][1] = cosf(angle); - pout->u.m[2][2] = cosf(angle); - pout->u.m[1][2] = sinf(angle); - pout->u.m[2][1] = -sinf(angle); + pout->m[1][1] = cosf(angle); + pout->m[2][2] = cosf(angle); + pout->m[1][2] = sinf(angle); + pout->m[2][1] = -sinf(angle); return pout; } @@ -653,10 +653,10 @@ D3DXMATRIX* WINAPI D3DXMatrixRotationY(D3DXMATRIX *pout, FLOAT angle) TRACE("pout %p, angle %f\n", pout, angle); D3DXMatrixIdentity(pout); - pout->u.m[0][0] = cosf(angle); - pout->u.m[2][2] = cosf(angle); - pout->u.m[0][2] = -sinf(angle); - pout->u.m[2][0] = sinf(angle); + pout->m[0][0] = cosf(angle); + pout->m[2][2] = cosf(angle); + pout->m[0][2] = -sinf(angle); + pout->m[2][0] = sinf(angle); return pout; } @@ -673,22 +673,22 @@ D3DXMATRIX * WINAPI D3DXMatrixRotationYawPitchRoll(D3DXMATRIX *out, FLOAT yaw, F syaw = sinf(yaw); cyaw = cosf(yaw); - out->u.m[0][0] = sroll * spitch * syaw + croll * cyaw; - out->u.m[0][1] = sroll * cpitch; - out->u.m[0][2] = sroll * spitch * cyaw - croll * syaw; - out->u.m[0][3] = 0.0f; - out->u.m[1][0] = croll * spitch * syaw - sroll * cyaw; - out->u.m[1][1] = croll * cpitch; - out->u.m[1][2] = croll * spitch * cyaw + sroll * syaw; - out->u.m[1][3] = 0.0f; - out->u.m[2][0] = cpitch * syaw; - out->u.m[2][1] = -spitch; - out->u.m[2][2] = cpitch * cyaw; - out->u.m[2][3] = 0.0f; - out->u.m[3][0] = 0.0f; - out->u.m[3][1] = 0.0f; - out->u.m[3][2] = 0.0f; - out->u.m[3][3] = 1.0f; + out->m[0][0] = sroll * spitch * syaw + croll * cyaw; + out->m[0][1] = sroll * cpitch; + out->m[0][2] = sroll * spitch * cyaw - croll * syaw; + out->m[0][3] = 0.0f; + out->m[1][0] = croll * spitch * syaw - sroll * cyaw; + out->m[1][1] = croll * cpitch; + out->m[1][2] = croll * spitch * cyaw + sroll * syaw; + out->m[1][3] = 0.0f; + out->m[2][0] = cpitch * syaw; + out->m[2][1] = -spitch; + out->m[2][2] = cpitch * cyaw; + out->m[2][3] = 0.0f; + out->m[3][0] = 0.0f; + out->m[3][1] = 0.0f; + out->m[3][2] = 0.0f; + out->m[3][3] = 1.0f; return out; } @@ -698,10 +698,10 @@ D3DXMATRIX* WINAPI D3DXMatrixRotationZ(D3DXMATRIX *pout, FLOAT angle) TRACE("pout %p, angle %f\n", pout, angle); D3DXMatrixIdentity(pout); - pout->u.m[0][0] = cosf(angle); - pout->u.m[1][1] = cosf(angle); - pout->u.m[0][1] = sinf(angle); - pout->u.m[1][0] = -sinf(angle); + pout->m[0][0] = cosf(angle); + pout->m[1][1] = cosf(angle); + pout->m[0][1] = sinf(angle); + pout->m[1][0] = -sinf(angle); return pout; } @@ -710,9 +710,9 @@ D3DXMATRIX* WINAPI D3DXMatrixScaling(D3DXMATRIX *pout, FLOAT sx, FLOAT sy, FLOAT TRACE("pout %p, sx %f, sy %f, sz %f\n", pout, sx, sy, sz); D3DXMatrixIdentity(pout); - pout->u.m[0][0] = sx; - pout->u.m[1][1] = sy; - pout->u.m[2][2] = sz; + pout->m[0][0] = sx; + pout->m[1][1] = sy; + pout->m[2][2] = sz; return pout; } @@ -725,22 +725,22 @@ D3DXMATRIX* WINAPI D3DXMatrixShadow(D3DXMATRIX *pout, const D3DXVECTOR4 *plight, D3DXPlaneNormalize(&Nplane, pplane); dot = D3DXPlaneDot(&Nplane, plight); - pout->u.m[0][0] = dot - Nplane.a * plight->x; - pout->u.m[0][1] = -Nplane.a * plight->y; - pout->u.m[0][2] = -Nplane.a * plight->z; - pout->u.m[0][3] = -Nplane.a * plight->w; - pout->u.m[1][0] = -Nplane.b * plight->x; - pout->u.m[1][1] = dot - Nplane.b * plight->y; - pout->u.m[1][2] = -Nplane.b * plight->z; - pout->u.m[1][3] = -Nplane.b * plight->w; - pout->u.m[2][0] = -Nplane.c * plight->x; - pout->u.m[2][1] = -Nplane.c * plight->y; - pout->u.m[2][2] = dot - Nplane.c * plight->z; - pout->u.m[2][3] = -Nplane.c * plight->w; - pout->u.m[3][0] = -Nplane.d * plight->x; - pout->u.m[3][1] = -Nplane.d * plight->y; - pout->u.m[3][2] = -Nplane.d * plight->z; - pout->u.m[3][3] = dot - Nplane.d * plight->w; + pout->m[0][0] = dot - Nplane.a * plight->x; + pout->m[0][1] = -Nplane.a * plight->y; + pout->m[0][2] = -Nplane.a * plight->z; + pout->m[0][3] = -Nplane.a * plight->w; + pout->m[1][0] = -Nplane.b * plight->x; + pout->m[1][1] = dot - Nplane.b * plight->y; + pout->m[1][2] = -Nplane.b * plight->z; + pout->m[1][3] = -Nplane.b * plight->w; + pout->m[2][0] = -Nplane.c * plight->x; + pout->m[2][1] = -Nplane.c * plight->y; + pout->m[2][2] = dot - Nplane.c * plight->z; + pout->m[2][3] = -Nplane.c * plight->w; + pout->m[3][0] = -Nplane.d * plight->x; + pout->m[3][1] = -Nplane.d * plight->y; + pout->m[3][2] = -Nplane.d * plight->z; + pout->m[3][3] = dot - Nplane.d * plight->w; return pout; } @@ -864,23 +864,25 @@ D3DXMATRIX* WINAPI D3DXMatrixTranslation(D3DXMATRIX *pout, FLOAT x, FLOAT y, FLO TRACE("pout %p, x %f, y %f, z %f\n", pout, x, y, z); D3DXMatrixIdentity(pout); - pout->u.m[3][0] = x; - pout->u.m[3][1] = y; - pout->u.m[3][2] = z; + pout->m[3][0] = x; + pout->m[3][1] = y; + pout->m[3][2] = z; return pout; } -D3DXMATRIX* WINAPI D3DXMatrixTranspose(D3DXMATRIX *pout, const D3DXMATRIX *pm) +D3DXMATRIX* WINAPI D3DXMatrixTranspose(D3DXMATRIX *out, const D3DXMATRIX *in) { - const D3DXMATRIX m = *pm; - int i,j; + unsigned int i, j; + D3DXMATRIX m; - TRACE("pout %p, pm %p\n", pout, pm); + TRACE("out %p, in %p.\n", out, in); - for (i=0; i<4; i++) - for (j=0; j<4; j++) pout->u.m[i][j] = m.u.m[j][i]; + m = *in; - return pout; + for (i = 0; i < 4; ++i) + for (j = 0; j < 4; ++j) out->m[i][j] = m.m[j][i]; + + return out; } /*_________________D3DXMatrixStack____________________*/ @@ -1277,10 +1279,10 @@ D3DXPLANE* WINAPI D3DXPlaneTransform(D3DXPLANE *pout, const D3DXPLANE *pplane, c TRACE("pout %p, pplane %p, pm %p\n", pout, pplane, pm); - pout->a = pm->u.m[0][0] * plane.a + pm->u.m[1][0] * plane.b + pm->u.m[2][0] * plane.c + pm->u.m[3][0] * plane.d; - pout->b = pm->u.m[0][1] * plane.a + pm->u.m[1][1] * plane.b + pm->u.m[2][1] * plane.c + pm->u.m[3][1] * plane.d; - pout->c = pm->u.m[0][2] * plane.a + pm->u.m[1][2] * plane.b + pm->u.m[2][2] * plane.c + pm->u.m[3][2] * plane.d; - pout->d = pm->u.m[0][3] * plane.a + pm->u.m[1][3] * plane.b + pm->u.m[2][3] * plane.c + pm->u.m[3][3] * plane.d; + pout->a = pm->m[0][0] * plane.a + pm->m[1][0] * plane.b + pm->m[2][0] * plane.c + pm->m[3][0] * plane.d; + pout->b = pm->m[0][1] * plane.a + pm->m[1][1] * plane.b + pm->m[2][1] * plane.c + pm->m[3][1] * plane.d; + pout->c = pm->m[0][2] * plane.a + pm->m[1][2] * plane.b + pm->m[2][2] * plane.c + pm->m[3][2] * plane.d; + pout->d = pm->m[0][3] * plane.a + pm->m[1][3] * plane.b + pm->m[2][3] * plane.c + pm->m[3][3] * plane.d; return pout; } @@ -1422,13 +1424,13 @@ D3DXQUATERNION * WINAPI D3DXQuaternionRotationMatrix(D3DXQUATERNION *out, const TRACE("out %p, m %p\n", out, m); - trace = m->u.m[0][0] + m->u.m[1][1] + m->u.m[2][2] + 1.0f; + trace = m->m[0][0] + m->m[1][1] + m->m[2][2] + 1.0f; if (trace > 1.0f) { s = 2.0f * sqrtf(trace); - out->x = (m->u.m[1][2] - m->u.m[2][1]) / s; - out->y = (m->u.m[2][0] - m->u.m[0][2]) / s; - out->z = (m->u.m[0][1] - m->u.m[1][0]) / s; + out->x = (m->m[1][2] - m->m[2][1]) / s; + out->y = (m->m[2][0] - m->m[0][2]) / s; + out->z = (m->m[0][1] - m->m[1][0]) / s; out->w = 0.25f * s; } else @@ -1437,34 +1439,34 @@ D3DXQUATERNION * WINAPI D3DXQuaternionRotationMatrix(D3DXQUATERNION *out, const for (i = 1; i < 3; i++) { - if (m->u.m[i][i] > m->u.m[maxi][maxi]) + if (m->m[i][i] > m->m[maxi][maxi]) maxi = i; } switch (maxi) { case 0: - s = 2.0f * sqrtf(1.0f + m->u.m[0][0] - m->u.m[1][1] - m->u.m[2][2]); + s = 2.0f * sqrtf(1.0f + m->m[0][0] - m->m[1][1] - m->m[2][2]); out->x = 0.25f * s; - out->y = (m->u.m[0][1] + m->u.m[1][0]) / s; - out->z = (m->u.m[0][2] + m->u.m[2][0]) / s; - out->w = (m->u.m[1][2] - m->u.m[2][1]) / s; + out->y = (m->m[0][1] + m->m[1][0]) / s; + out->z = (m->m[0][2] + m->m[2][0]) / s; + out->w = (m->m[1][2] - m->m[2][1]) / s; break; case 1: - s = 2.0f * sqrtf(1.0f + m->u.m[1][1] - m->u.m[0][0] - m->u.m[2][2]); - out->x = (m->u.m[0][1] + m->u.m[1][0]) / s; + s = 2.0f * sqrtf(1.0f + m->m[1][1] - m->m[0][0] - m->m[2][2]); + out->x = (m->m[0][1] + m->m[1][0]) / s; out->y = 0.25f * s; - out->z = (m->u.m[1][2] + m->u.m[2][1]) / s; - out->w = (m->u.m[2][0] - m->u.m[0][2]) / s; + out->z = (m->m[1][2] + m->m[2][1]) / s; + out->w = (m->m[2][0] - m->m[0][2]) / s; break; case 2: - s = 2.0f * sqrtf(1.0f + m->u.m[2][2] - m->u.m[0][0] - m->u.m[1][1]); - out->x = (m->u.m[0][2] + m->u.m[2][0]) / s; - out->y = (m->u.m[1][2] + m->u.m[2][1]) / s; + s = 2.0f * sqrtf(1.0f + m->m[2][2] - m->m[0][0] - m->m[1][1]); + out->x = (m->m[0][2] + m->m[2][0]) / s; + out->y = (m->m[1][2] + m->m[2][1]) / s; out->z = 0.25f * s; - out->w = (m->u.m[0][1] - m->u.m[1][0]) / s; + out->w = (m->m[0][1] - m->m[1][0]) / s; break; } } @@ -1679,10 +1681,10 @@ D3DXVECTOR4* WINAPI D3DXVec2Transform(D3DXVECTOR4 *pout, const D3DXVECTOR2 *pv, TRACE("pout %p, pv %p, pm %p\n", pout, pv, pm); - out.x = pm->u.m[0][0] * pv->x + pm->u.m[1][0] * pv->y + pm->u.m[3][0]; - out.y = pm->u.m[0][1] * pv->x + pm->u.m[1][1] * pv->y + pm->u.m[3][1]; - out.z = pm->u.m[0][2] * pv->x + pm->u.m[1][2] * pv->y + pm->u.m[3][2]; - out.w = pm->u.m[0][3] * pv->x + pm->u.m[1][3] * pv->y + pm->u.m[3][3]; + out.x = pm->m[0][0] * pv->x + pm->m[1][0] * pv->y + pm->m[3][0]; + out.y = pm->m[0][1] * pv->x + pm->m[1][1] * pv->y + pm->m[3][1]; + out.z = pm->m[0][2] * pv->x + pm->m[1][2] * pv->y + pm->m[3][2]; + out.w = pm->m[0][3] * pv->x + pm->m[1][3] * pv->y + pm->m[3][3]; *pout = out; return pout; } @@ -1710,10 +1712,10 @@ D3DXVECTOR2* WINAPI D3DXVec2TransformCoord(D3DXVECTOR2 *pout, const D3DXVECTOR2 TRACE("pout %p, pv %p, pm %p\n", pout, pv, pm); v = *pv; - norm = pm->u.m[0][3] * pv->x + pm->u.m[1][3] * pv->y + pm->u.m[3][3]; + norm = pm->m[0][3] * pv->x + pm->m[1][3] * pv->y + pm->m[3][3]; - pout->x = (pm->u.m[0][0] * v.x + pm->u.m[1][0] * v.y + pm->u.m[3][0]) / norm; - pout->y = (pm->u.m[0][1] * v.x + pm->u.m[1][1] * v.y + pm->u.m[3][1]) / norm; + pout->x = (pm->m[0][0] * v.x + pm->m[1][0] * v.y + pm->m[3][0]) / norm; + pout->y = (pm->m[0][1] * v.x + pm->m[1][1] * v.y + pm->m[3][1]) / norm; return pout; } @@ -1739,8 +1741,8 @@ D3DXVECTOR2* WINAPI D3DXVec2TransformNormal(D3DXVECTOR2 *pout, const D3DXVECTOR2 TRACE("pout %p, pv %p, pm %p\n", pout, pv, pm); - pout->x = pm->u.m[0][0] * v.x + pm->u.m[1][0] * v.y; - pout->y = pm->u.m[0][1] * v.x + pm->u.m[1][1] * v.y; + pout->x = pm->m[0][0] * v.x + pm->m[1][0] * v.y; + pout->y = pm->m[0][1] * v.x + pm->m[1][1] * v.y; return pout; } @@ -1865,10 +1867,10 @@ D3DXVECTOR4* WINAPI D3DXVec3Transform(D3DXVECTOR4 *pout, const D3DXVECTOR3 *pv, TRACE("pout %p, pv %p, pm %p\n", pout, pv, pm); - out.x = pm->u.m[0][0] * pv->x + pm->u.m[1][0] * pv->y + pm->u.m[2][0] * pv->z + pm->u.m[3][0]; - out.y = pm->u.m[0][1] * pv->x + pm->u.m[1][1] * pv->y + pm->u.m[2][1] * pv->z + pm->u.m[3][1]; - out.z = pm->u.m[0][2] * pv->x + pm->u.m[1][2] * pv->y + pm->u.m[2][2] * pv->z + pm->u.m[3][2]; - out.w = pm->u.m[0][3] * pv->x + pm->u.m[1][3] * pv->y + pm->u.m[2][3] * pv->z + pm->u.m[3][3]; + out.x = pm->m[0][0] * pv->x + pm->m[1][0] * pv->y + pm->m[2][0] * pv->z + pm->m[3][0]; + out.y = pm->m[0][1] * pv->x + pm->m[1][1] * pv->y + pm->m[2][1] * pv->z + pm->m[3][1]; + out.z = pm->m[0][2] * pv->x + pm->m[1][2] * pv->y + pm->m[2][2] * pv->z + pm->m[3][2]; + out.w = pm->m[0][3] * pv->x + pm->m[1][3] * pv->y + pm->m[2][3] * pv->z + pm->m[3][3]; *pout = out; return pout; } @@ -1895,11 +1897,11 @@ D3DXVECTOR3* WINAPI D3DXVec3TransformCoord(D3DXVECTOR3 *pout, const D3DXVECTOR3 TRACE("pout %p, pv %p, pm %p\n", pout, pv, pm); - norm = pm->u.m[0][3] * pv->x + pm->u.m[1][3] * pv->y + pm->u.m[2][3] *pv->z + pm->u.m[3][3]; + norm = pm->m[0][3] * pv->x + pm->m[1][3] * pv->y + pm->m[2][3] *pv->z + pm->m[3][3]; - out.x = (pm->u.m[0][0] * pv->x + pm->u.m[1][0] * pv->y + pm->u.m[2][0] * pv->z + pm->u.m[3][0]) / norm; - out.y = (pm->u.m[0][1] * pv->x + pm->u.m[1][1] * pv->y + pm->u.m[2][1] * pv->z + pm->u.m[3][1]) / norm; - out.z = (pm->u.m[0][2] * pv->x + pm->u.m[1][2] * pv->y + pm->u.m[2][2] * pv->z + pm->u.m[3][2]) / norm; + out.x = (pm->m[0][0] * pv->x + pm->m[1][0] * pv->y + pm->m[2][0] * pv->z + pm->m[3][0]) / norm; + out.y = (pm->m[0][1] * pv->x + pm->m[1][1] * pv->y + pm->m[2][1] * pv->z + pm->m[3][1]) / norm; + out.z = (pm->m[0][2] * pv->x + pm->m[1][2] * pv->y + pm->m[2][2] * pv->z + pm->m[3][2]) / norm; *pout = out; @@ -1927,9 +1929,9 @@ D3DXVECTOR3* WINAPI D3DXVec3TransformNormal(D3DXVECTOR3 *pout, const D3DXVECTOR3 TRACE("pout %p, pv %p, pm %p\n", pout, pv, pm); - pout->x = pm->u.m[0][0] * v.x + pm->u.m[1][0] * v.y + pm->u.m[2][0] * v.z; - pout->y = pm->u.m[0][1] * v.x + pm->u.m[1][1] * v.y + pm->u.m[2][1] * v.z; - pout->z = pm->u.m[0][2] * v.x + pm->u.m[1][2] * v.y + pm->u.m[2][2] * v.z; + pout->x = pm->m[0][0] * v.x + pm->m[1][0] * v.y + pm->m[2][0] * v.z; + pout->y = pm->m[0][1] * v.x + pm->m[1][1] * v.y + pm->m[2][1] * v.z; + pout->z = pm->m[0][2] * v.x + pm->m[1][2] * v.y + pm->m[2][2] * v.z; return pout; } @@ -2072,10 +2074,10 @@ D3DXVECTOR4* WINAPI D3DXVec4Transform(D3DXVECTOR4 *pout, const D3DXVECTOR4 *pv, TRACE("pout %p, pv %p, pm %p\n", pout, pv, pm); - out.x = pm->u.m[0][0] * pv->x + pm->u.m[1][0] * pv->y + pm->u.m[2][0] * pv->z + pm->u.m[3][0] * pv->w; - out.y = pm->u.m[0][1] * pv->x + pm->u.m[1][1] * pv->y + pm->u.m[2][1] * pv->z + pm->u.m[3][1] * pv->w; - out.z = pm->u.m[0][2] * pv->x + pm->u.m[1][2] * pv->y + pm->u.m[2][2] * pv->z + pm->u.m[3][2] * pv->w; - out.w = pm->u.m[0][3] * pv->x + pm->u.m[1][3] * pv->y + pm->u.m[2][3] * pv->z + pm->u.m[3][3] * pv->w; + out.x = pm->m[0][0] * pv->x + pm->m[1][0] * pv->y + pm->m[2][0] * pv->z + pm->m[3][0] * pv->w; + out.y = pm->m[0][1] * pv->x + pm->m[1][1] * pv->y + pm->m[2][1] * pv->z + pm->m[3][1] * pv->w; + out.z = pm->m[0][2] * pv->x + pm->m[1][2] * pv->y + pm->m[2][2] * pv->z + pm->m[3][2] * pv->w; + out.w = pm->m[0][3] * pv->x + pm->m[1][3] * pv->y + pm->m[2][3] * pv->z + pm->m[3][3] * pv->w; *pout = out; return pout; } @@ -3129,44 +3131,46 @@ FLOAT* WINAPI D3DXSHRotate(FLOAT *out, UINT order, const D3DXMATRIX *matrix, con if (order <= 3) { - out[1] = matrix->u.m[1][1] * in[1] - matrix->u.m[2][1] * in[2] + matrix->u.m[0][1] * in[3]; - out[2] = -matrix->u.m[1][2] * in[1] + matrix->u.m[2][2] * in[2] - matrix->u.m[0][2] * in[3]; - out[3] = matrix->u.m[1][0] * in[1] - matrix->u.m[2][0] * in[2] + matrix->u.m[0][0] * in[3]; + out[1] = matrix->m[1][1] * in[1] - matrix->m[2][1] * in[2] + matrix->m[0][1] * in[3]; + out[2] = -matrix->m[1][2] * in[1] + matrix->m[2][2] * in[2] - matrix->m[0][2] * in[3]; + out[3] = matrix->m[1][0] * in[1] - matrix->m[2][0] * in[2] + matrix->m[0][0] * in[3]; if (order == 3) { - FLOAT coeff[]={ - matrix->u.m[1][0] * matrix->u.m[0][0], matrix->u.m[1][1] * matrix->u.m[0][1], - matrix->u.m[1][1] * matrix->u.m[2][1], matrix->u.m[1][0] * matrix->u.m[2][0], - matrix->u.m[2][0] * matrix->u.m[2][0], matrix->u.m[2][1] * matrix->u.m[2][1], - matrix->u.m[0][0] * matrix->u.m[2][0], matrix->u.m[0][1] * matrix->u.m[2][1], - matrix->u.m[0][1] * matrix->u.m[0][1], matrix->u.m[1][0] * matrix->u.m[1][0], - matrix->u.m[1][1] * matrix->u.m[1][1], matrix->u.m[0][0] * matrix->u.m[0][0], }; + float coeff[] = + { + matrix->m[1][0] * matrix->m[0][0], matrix->m[1][1] * matrix->m[0][1], + matrix->m[1][1] * matrix->m[2][1], matrix->m[1][0] * matrix->m[2][0], + matrix->m[2][0] * matrix->m[2][0], matrix->m[2][1] * matrix->m[2][1], + matrix->m[0][0] * matrix->m[2][0], matrix->m[0][1] * matrix->m[2][1], + matrix->m[0][1] * matrix->m[0][1], matrix->m[1][0] * matrix->m[1][0], + matrix->m[1][1] * matrix->m[1][1], matrix->m[0][0] * matrix->m[0][0], + }; - out[4] = (matrix->u.m[1][1] * matrix->u.m[0][0] + matrix->u.m[0][1] * matrix->u.m[1][0]) * in[4]; - out[4] -= (matrix->u.m[1][0] * matrix->u.m[2][1] + matrix->u.m[1][1] * matrix->u.m[2][0]) * in[5]; - out[4] += 1.7320508076f * matrix->u.m[2][0] * matrix->u.m[2][1] * in[6]; - out[4] -= (matrix->u.m[0][1] * matrix->u.m[2][0] + matrix->u.m[0][0] * matrix->u.m[2][1]) * in[7]; - out[4] += (matrix->u.m[0][0] * matrix->u.m[0][1] - matrix->u.m[1][0] * matrix->u.m[1][1]) * in[8]; + out[4] = (matrix->m[1][1] * matrix->m[0][0] + matrix->m[0][1] * matrix->m[1][0]) * in[4]; + out[4] -= (matrix->m[1][0] * matrix->m[2][1] + matrix->m[1][1] * matrix->m[2][0]) * in[5]; + out[4] += 1.7320508076f * matrix->m[2][0] * matrix->m[2][1] * in[6]; + out[4] -= (matrix->m[0][1] * matrix->m[2][0] + matrix->m[0][0] * matrix->m[2][1]) * in[7]; + out[4] += (matrix->m[0][0] * matrix->m[0][1] - matrix->m[1][0] * matrix->m[1][1]) * in[8]; - out[5] = (matrix->u.m[1][1] * matrix->u.m[2][2] + matrix->u.m[1][2] * matrix->u.m[2][1]) * in[5]; - out[5] -= (matrix->u.m[1][1] * matrix->u.m[0][2] + matrix->u.m[1][2] * matrix->u.m[0][1]) * in[4]; - out[5] -= 1.7320508076f * matrix->u.m[2][2] * matrix->u.m[2][1] * in[6]; - out[5] += (matrix->u.m[0][2] * matrix->u.m[2][1] + matrix->u.m[0][1] * matrix->u.m[2][2]) * in[7]; - out[5] -= (matrix->u.m[0][1] * matrix->u.m[0][2] - matrix->u.m[1][1] * matrix->u.m[1][2]) * in[8]; + out[5] = (matrix->m[1][1] * matrix->m[2][2] + matrix->m[1][2] * matrix->m[2][1]) * in[5]; + out[5] -= (matrix->m[1][1] * matrix->m[0][2] + matrix->m[1][2] * matrix->m[0][1]) * in[4]; + out[5] -= 1.7320508076f * matrix->m[2][2] * matrix->m[2][1] * in[6]; + out[5] += (matrix->m[0][2] * matrix->m[2][1] + matrix->m[0][1] * matrix->m[2][2]) * in[7]; + out[5] -= (matrix->m[0][1] * matrix->m[0][2] - matrix->m[1][1] * matrix->m[1][2]) * in[8]; - out[6] = (matrix->u.m[2][2] * matrix->u.m[2][2] - 0.5f * (coeff[4] + coeff[5])) * in[6]; - out[6] -= (0.5773502692f * (coeff[0] + coeff[1]) - 1.1547005384f * matrix->u.m[1][2] * matrix->u.m[0][2]) * in[4]; - out[6] += (0.5773502692f * (coeff[2] + coeff[3]) - 1.1547005384f * matrix->u.m[1][2] * matrix->u.m[2][2]) * in[5]; - out[6] += (0.5773502692f * (coeff[6] + coeff[7]) - 1.1547005384f * matrix->u.m[0][2] * matrix->u.m[2][2]) * in[7]; + out[6] = (matrix->m[2][2] * matrix->m[2][2] - 0.5f * (coeff[4] + coeff[5])) * in[6]; + out[6] -= (0.5773502692f * (coeff[0] + coeff[1]) - 1.1547005384f * matrix->m[1][2] * matrix->m[0][2]) * in[4]; + out[6] += (0.5773502692f * (coeff[2] + coeff[3]) - 1.1547005384f * matrix->m[1][2] * matrix->m[2][2]) * in[5]; + out[6] += (0.5773502692f * (coeff[6] + coeff[7]) - 1.1547005384f * matrix->m[0][2] * matrix->m[2][2]) * in[7]; out[6] += (0.2886751347f * (coeff[9] - coeff[8] + coeff[10] - coeff[11]) - 0.5773502692f * - (matrix->u.m[1][2] * matrix->u.m[1][2] - matrix->u.m[0][2] * matrix->u.m[0][2])) * in[8]; + (matrix->m[1][2] * matrix->m[1][2] - matrix->m[0][2] * matrix->m[0][2])) * in[8]; - out[7] = (matrix->u.m[0][0] * matrix->u.m[2][2] + matrix->u.m[0][2] * matrix->u.m[2][0]) * in[7]; - out[7] -= (matrix->u.m[1][0] * matrix->u.m[0][2] + matrix->u.m[1][2] * matrix->u.m[0][0]) * in[4]; - out[7] += (matrix->u.m[1][0] * matrix->u.m[2][2] + matrix->u.m[1][2] * matrix->u.m[2][0]) * in[5]; - out[7] -= 1.7320508076f * matrix->u.m[2][2] * matrix->u.m[2][0] * in[6]; - out[7] -= (matrix->u.m[0][0] * matrix->u.m[0][2] - matrix->u.m[1][0] * matrix->u.m[1][2]) * in[8]; + out[7] = (matrix->m[0][0] * matrix->m[2][2] + matrix->m[0][2] * matrix->m[2][0]) * in[7]; + out[7] -= (matrix->m[1][0] * matrix->m[0][2] + matrix->m[1][2] * matrix->m[0][0]) * in[4]; + out[7] += (matrix->m[1][0] * matrix->m[2][2] + matrix->m[1][2] * matrix->m[2][0]) * in[5]; + out[7] -= 1.7320508076f * matrix->m[2][2] * matrix->m[2][0] * in[6]; + out[7] -= (matrix->m[0][0] * matrix->m[0][2] - matrix->m[1][0] * matrix->m[1][2]) * in[8]; out[8] = 0.5f * (coeff[11] - coeff[8] - coeff[9] + coeff[10]) * in[8]; out[8] += (coeff[0] - coeff[1]) * in[4]; @@ -3178,16 +3182,16 @@ FLOAT* WINAPI D3DXSHRotate(FLOAT *out, UINT order, const D3DXMATRIX *matrix, con return out; } - if (fabsf(matrix->u.m[2][2]) != 1.0f) + if (fabsf(matrix->m[2][2]) != 1.0f) { - sinb = sqrtf(1.0f - matrix->u.m[2][2] * matrix->u.m[2][2]); - alpha = atan2f(matrix->u.m[2][1] / sinb, matrix->u.m[2][0] / sinb); - beta = atan2f(sinb, matrix->u.m[2][2]); - gamma = atan2f(matrix->u.m[1][2] / sinb, -matrix->u.m[0][2] / sinb); + sinb = sqrtf(1.0f - matrix->m[2][2] * matrix->m[2][2]); + alpha = atan2f(matrix->m[2][1] / sinb, matrix->m[2][0] / sinb); + beta = atan2f(sinb, matrix->m[2][2]); + gamma = atan2f(matrix->m[1][2] / sinb, -matrix->m[0][2] / sinb); } else { - alpha = atan2f(matrix->u.m[0][1], matrix->u.m[0][0]); + alpha = atan2f(matrix->m[0][1], matrix->m[0][0]); beta = 0.0f; gamma = 0.0f; } diff --git a/dlls/d3dx9_36/mesh.c b/dlls/d3dx9_36/mesh.c index 48abb7ede41..6cfe97492f3 100644 --- a/dlls/d3dx9_36/mesh.c +++ b/dlls/d3dx9_36/mesh.c @@ -2368,22 +2368,22 @@ BOOL WINAPI D3DXIntersectTri(const D3DXVECTOR3 *p0, const D3DXVECTOR3 *p1, const TRACE("p0 %p, p1 %p, p2 %p, praypos %p, praydir %p, pu %p, pv %p, pdist %p.\n", p0, p1, p2, praypos, praydir, pu, pv, pdist); - m.u.m[0][0] = p1->x - p0->x; - m.u.m[1][0] = p2->x - p0->x; - m.u.m[2][0] = -praydir->x; - m.u.m[3][0] = 0.0f; - m.u.m[0][1] = p1->y - p0->y; - m.u.m[1][1] = p2->y - p0->y; - m.u.m[2][1] = -praydir->y; - m.u.m[3][1] = 0.0f; - m.u.m[0][2] = p1->z - p0->z; - m.u.m[1][2] = p2->z - p0->z; - m.u.m[2][2] = -praydir->z; - m.u.m[3][2] = 0.0f; - m.u.m[0][3] = 0.0f; - m.u.m[1][3] = 0.0f; - m.u.m[2][3] = 0.0f; - m.u.m[3][3] = 1.0f; + m.m[0][0] = p1->x - p0->x; + m.m[1][0] = p2->x - p0->x; + m.m[2][0] = -praydir->x; + m.m[3][0] = 0.0f; + m.m[0][1] = p1->y - p0->y; + m.m[1][1] = p2->y - p0->y; + m.m[2][1] = -praydir->y; + m.m[3][1] = 0.0f; + m.m[0][2] = p1->z - p0->z; + m.m[1][2] = p2->z - p0->z; + m.m[2][2] = -praydir->z; + m.m[3][2] = 0.0f; + m.m[0][3] = 0.0f; + m.m[1][3] = 0.0f; + m.m[2][3] = 0.0f; + m.m[3][3] = 1.0f; vec.x = praypos->x - p0->x; vec.y = praypos->y - p0->y; @@ -3772,11 +3772,11 @@ static HRESULT load_mesh_container(struct ID3DXFileData *filedata, DWORD options char *name = NULL; mesh_data.Type = D3DXMESHTYPE_MESH; - mesh_data.u.pMesh = NULL; + mesh_data.pMesh = NULL; hr = D3DXLoadSkinMeshFromXof(filedata, options, device, &adjacency, &materials, &effects, &num_materials, - &skin_info, &mesh_data.u.pMesh); + &skin_info, &mesh_data.pMesh); if (FAILED(hr)) return hr; hr = filedata_get_name(filedata, &name); @@ -3794,7 +3794,7 @@ cleanup: if (effects) ID3DXBuffer_Release(effects); if (adjacency) ID3DXBuffer_Release(adjacency); if (skin_info) IUnknown_Release(skin_info); - if (mesh_data.u.pMesh) IUnknown_Release(mesh_data.u.pMesh); + if (mesh_data.pMesh) IUnknown_Release(mesh_data.pMesh); HeapFree(GetProcessHeap(), 0, name); return hr; }