j'ai fini la gestion de ma caméra, cadeau du nouvel an :
.h
class FenPrincipale : public QMainWindow
{
Q_OBJECT
private slots :
void mousePressEvent(QMouseEvent *event);
void mouseReleaseEvent(QMouseEvent *event);
void mouseMoveEvent(QMouseEvent *event);
void deplacerCamera();
private :
irr::scene::ICameraSceneNode *m_camera;
bool m_cameraMustMoving;
long m_mousePosAtClicX;
long m_mousePosAtClicY;
long m_mousePosX;
long m_mousePosY;
}
.cpp
void FenPrincipale::mousePressEvent(QMouseEvent *event)
{
if(event->button() == Qt::RightButton)
{
if(espaceGraphique->getDevice() != 0)
{
m_cameraMustMoving = true;
m_mousePosAtClicX = event->x();
m_mousePosAtClicY = event->y();
}
}
}
void FenPrincipale::mouseMoveEvent(QMouseEvent *event)
{
m_mousePosX = event->x();
m_mousePosY = event->y();
}
void FenPrincipale::deplacerCamera()
{
if(m_cameraMustMoving)
{
long angleX = m_camera->getRotation().X - ((m_mousePosAtClicY-m_mousePosY)*0.02);
if(angleX < 90 && angleX > -90)
m_camera->setRotation(irr::core::vector3df(angleX, m_camera->getRotation().Y - ((m_mousePosAtClicX-m_mousePosX)*0.02),0));
}
}
void FenPrincipale::mouseReleaseEvent(QMouseEvent *event)
{
if(event->button() == Qt::RightButton)
{
m_cameraMustMoving = false;
}
}
et il faut rajouter ça dans le constructeur :
QTimer* timerDeplacementCamera = new QTimer(this);
connect(timerDeplacementCamera, SIGNAL(timeout()), this, SLOT(deplacerCamera()));
timerDeplacementCamera->start(40);