[left-hand coordsys]
Character facing forward along z axis + add 1 to gForward = character goes backward.
Character facing backwards along z axis + add 1 to gBackward = character goes forward.
character facing forward / between x and z axis + add 1 to gForward = character goes backwards \ between z and x axis.
etc
Works perfectly when character facing along x axis. <-->
Am I doing this right?
Code: Select all
btTransform characterWorldTrans;
wrapperclass->m_character->getRigidBody()->getMotionState()->getWorldTransform(characterWorldTrans);
D3DXMATRIX world = wrapperclass->XConvertBulletTransform(&characterWorldTrans);
object->SetObjectTranslation(world);
-----------
D3DXMATRIX wrapperclass::XConvertBulletTransform( btTransform *bulletTransformMatrix )
{
D3DXMATRIX world;
btVector3 R = bulletTransformMatrix->getBasis().getColumn(0);
btVector3 U = bulletTransformMatrix->getBasis().getColumn(1);
btVector3 L = bulletTransformMatrix->getBasis().getColumn(2);
btVector3 P = bulletTransformMatrix->getOrigin();
D3DXVECTOR3 vR, vU, vL, vP;
vR.x = R.x();vR.y = R.y();vR.z = R.z();
vU.x = U.x();vU.y = U.y();vU.z = U.z();
vL.x = L.x();vL.y = L.y();vL.z = L.z();
vP.x = P.x();vP.y = P.y();vP.z = P.z();
XPrepareMatrixFromRULP( world, &vR, &vU, &vL, &vP );
return world;
}
void wrapperclass::XPrepareMatrixFromRULP( D3DXMATRIX &matOutput, D3DXVECTOR3 *R, D3DXVECTOR3 *U, D3DXVECTOR3 *L, D3DXVECTOR3 *P )
{
matOutput._11 = R->x;matOutput._12 = R->y;matOutput._13 = R->z;matOutput._14 = 0.f;
matOutput._21 = U->x;matOutput._22 = U->y;matOutput._23 = U->z;matOutput._24 = 0.f;
matOutput._31 = L->x;matOutput._32 = L->y;matOutput._33 = L->z;matOutput._34 = 0.f;
matOutput._41 = P->x;matOutput._42 = P->y;matOutput._43 = P->z;matOutput._44 = 1.f;
}