J'ai essayé d'implémenter une fonction qui en prenant les coordonnées du curseur quand on clique sur la fenêtre, regardait si on cliquait sur un objet ou pas. Mais bon, ça marche pas et je pige pas pourquoi.
Donc, j'ai fais des bounding boxs dont je transforme les coordonnées avec la fonction D3DXVec3TransformCoord() en utilisant la matrice WORLD pour l'objet.
Le code de ma fonction:
bool CObject::ClickTouchOrNot(short x, short y) //x et y coords du curseur
{
D3DXMATRIX mProjection, mView;
g_lpD3DDevice->GetTransform(D3DTS_PROJECTION, &mProjection);
g_lpD3DDevice->GetTransform(D3DTS_VIEW, &mView);
D3DXMatrixInverse(&mProjection, NULL, &mProjection);
D3DXMatrixInverse(&mView, NULL, &mView);
D3DXVECTOR3 vPosition = D3DXVECTOR3(x, y, 0);
D3DXVECTOR3 vDirection = D3DXVECTOR3(0, 0, 1);
D3DXVec3TransformCoord(&vPosition, &vPosition, &mProjection);
D3DXVec3TransformCoord(&vDirection, &vDirection, &mProjection);
D3DXVec3TransformCoord(&vPosition, &vPosition, &mView);
D3DXVec3TransformCoord(&vDirection, &vDirection, &mView);
bool touch = D3DXBoxBoundProbe( &m_vBoundingBoxMin, &m_vBoundingBoxMax,
&vPosition, &vDirection);
return touch;
}