Bienvenue, Invité. Merci de vous connecter ou de vous inscrire.
Avez-vous perdu votre e-mail d'activation ?

Auteur Sujet: Bloquer la souris au centre de l'écran  (Lu 2079 fois)

0 Membres et 1 Invité sur ce sujet

gregleboss50

  • Newbie
  • *
  • Messages: 20
    • Voir le profil
Bloquer la souris au centre de l'écran
« le: Octobre 13, 2013, 11:13:51 am »
Bonjour,
je code une camera FreeFly avec OpenGL 3.3 (je suis le tuto sur le site du zéro mais dans celui-ci OpenGL s'utilise dans un contexte SDL) et évidement j'ai un problème (ba oui sinon je serais pas là ^^).

Le problème est que SFML n’implémente pas de fonction "curseur relatif" (avec le curseur toujours au centre de l'ecran) donc j'ai fais comme ceci :

while(m_theWindow.pollEvent(event))
{
        if (event.type == sf::Event::MouseMoved) {
            if(!m_ignorNextMove) {
                m_lastPos = sf::Vector2i(event.mouseMove.x, event.mouseMove.y);
                sf::Mouse::setPosition(m_cursorBase, m_theWindow);
                m_ignorNextMove = true;
            }
            else m_ignorNextMove = false;

            if(mouseHasMove()) {
                cam.orienter(getRelPosition().x, getRelPosition().y);
            }
        }
}
Ce code ce situe dans une fonction nommé update() dans la class Input (fonction appelé à chaque tours de boucle).

m_theWindow est une référence vers un sf::Window
m_cursorBase est le milieu de la fenêtre (il est réinitialisé à chaque event sf::Event::Resized)

la fonction mouseHasMove() :
bool Input::mouseHasMove() const {
    if(m_cursorBase.x == m_lastPos.x && m_cursorBase.y == m_lastPos.y) return false;
    else return true;
}

Tous cela marche mais si je déplace la souris très vite elle sort de l'ecran et c'est mal !
J'aimerais donc savoir comment interdit la souris de sortir de l'ecran (tout en puissant toujours la libérer par un ALT + Tab ou avec la touche WINDOWS.

Merci d'avance :)
« Modifié: Octobre 13, 2013, 11:23:37 am par gregleboss50 »

 

anything