Historique des modifications - Message

Message #7657

Sujet: Qt et Irrlicht, décidément ils ne s'aimes pas


Type Date Auteur Contenu
Dernière modification 02-01-2010 17:32:11 Ilovechocolat
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);
Création du message 02-01-2010 16:49:54 Ilovechocolat
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);

Retour

Options Liens officiels Caractéristiques Statistiques Communauté
Préférences cookies
Corrections
irrlicht
irrklang
irredit
irrxml
Propulsé par Django
xhtml 1.0
css 2.1
884 membres
1440 sujets
11337 messages
Dernier membre inscrit: Saidov17
157 invités en ligne
membre en ligne: -
RSS Feed