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