Bon, je veux updater l'orientation de ma caméra grâce à la souris, j'ai donc fais une fonction dans ma class CCamera qui s'occupe de prendre les coordonnées de la souris à chaque message WM_MOUSEMOVE et qui tourne en fonction de son déplacement. Le problème, c'est que quand je bouge la souris, desfois ça tourne, mais la plupart du temps ça ne fait rien du tout, donc je comprends pas trop.
Voilà les bouts de code:
long CALLBACK WndProc(HWND hwnd, UINT message, UINT wParam, long lParam)
{
switch (message)
{
[......]
case WM_MOUSEMOVE:
g_camera.SetMousePosition(LOWORD(lParam), HIWORD(lParam));
return 0;
break;
[......]
Ma class:
class CCamera
{
D3DXMATRIX m_mViewMatrix;
int m_nMouseX;
int m_nMouseY;
bool m_bFirst;
public:
CCamera() {D3DXMatrixIdentity(&m_mViewMatrix); m_bFirst = true;}
~CCamera() {}
void SetPosition(float x, float y, float z);
void Translate(double x, double y, double z);
void Rotate(double x, double y, double z);
void SetMousePosition(int x, int y);
};
///////////////////////////////////////////////////////////////////
void CCamera::SetMousePosition(int x, int y)
{
double nDeltaRotX = (x - m_nMouseX) / 100;
double nDeltaRotY = (y - m_nMouseY) / 100;
m_nMouseX = x;
m_nMouseY = y;
if (m_bFirst)
m_bFirst = false;
else
Rotate(nDeltaRotX, nDeltaRotY, 0);
}