IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

SDL Discussion :

[souris] Comment gérer la sensibilité ?


Sujet :

SDL

  1. #1
    Rédacteur
    Avatar de MrDuChnok
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Juin 2002
    Messages
    2 112
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Produits et services télécom et Internet

    Informations forums :
    Inscription : Juin 2002
    Messages : 2 112
    Points : 4 240
    Points
    4 240
    Par défaut [souris] Comment gérer la sensibilité ?
    Bonjour,


    Dans le cadre d'un petit jeu, j'aimerai gérer les déplacements à la souris. Je programme en C++ avec SDL pour la fenêtre et les évènements et OpenGL pour l'affichage.
    Mes déplacements sont gérés mais restent dépendant de la sensibilités configurée sur l'OS.

    J'aurai pourtant aimé pouvoir configurer ceci dans les options du jeux.
    Je pensais faire comme suit :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    Quand deplacement souris détécté
        Appliquer un coefficient sur la différence entre nouvelle position et ancienne position
        replacer la souris sur ce nouveau point
    Mais je crois que si je replace la souris (WrapMouse ?) cela va redeclencher mon évènement qui gère le déplacement de la souris. Et donc je tournerai un peu en rond. J'ai pas testé encore

    Je vois pas trop de manière plus simple. Mais y'a peut être une astuce que je ne connais pas.

    Merci d'avance pour vos réponses ou conseils.

  2. #2
    Membre éprouvé
    Avatar de Sivrît
    Profil pro
    Inscrit en
    Février 2006
    Messages
    953
    Détails du profil
    Informations personnelles :
    Âge : 43
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Février 2006
    Messages : 953
    Points : 1 249
    Points
    1 249
    Par défaut
    Si la souris sert à se déplacer (et non pas à pointer) ce sont les déplacements relatifs qui servent et SDL les donne aussi.

    Donc inutile de les calculer à partir des coordonnées donc pas besoin de WarpMouse (qui effectivement poserait des problèmes d'évènements).

  3. #3
    Expert éminent sénior

    Avatar de fearyourself
    Homme Profil pro
    Ingénieur Informaticien Senior
    Inscrit en
    Décembre 2005
    Messages
    5 121
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : Etats-Unis

    Informations professionnelles :
    Activité : Ingénieur Informaticien Senior
    Secteur : Industrie

    Informations forums :
    Inscription : Décembre 2005
    Messages : 5 121
    Points : 11 877
    Points
    11 877
    Par défaut
    Citation Envoyé par MrDuChnok
    Bonjour,


    Dans le cadre d'un petit jeu, j'aimerai gérer les déplacements à la souris. Je programme en C++ avec SDL pour la fenêtre et les évènements et OpenGL pour l'affichage.
    Mes déplacements sont gérés mais restent dépendant de la sensibilités configurée sur l'OS.

    J'aurai pourtant aimé pouvoir configurer ceci dans les options du jeux.
    Je pensais faire comme suit :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    Quand deplacement souris détécté
        Appliquer un coefficient sur la différence entre nouvelle position et ancienne position
        replacer la souris sur ce nouveau point
    Mais je crois que si je replace la souris (WrapMouse ?) cela va redeclencher mon évènement qui gère le déplacement de la souris. Et donc je tournerai un peu en rond. J'ai pas testé encore

    Je vois pas trop de manière plus simple. Mais y'a peut être une astuce que je ne connais pas.

    Merci d'avance pour vos réponses ou conseils.
    Tu pourrais faire une fonction SetMousePosition qui permet de mettre la distance à jour sans lancer d'événement.

    Ensuite, si le Warp génére un événement (j'ai un doute), la distance sera nulle donc ignorée (si bien programmé).

    Jc

  4. #4
    Rédacteur
    Avatar de MrDuChnok
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Juin 2002
    Messages
    2 112
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Produits et services télécom et Internet

    Informations forums :
    Inscription : Juin 2002
    Messages : 2 112
    Points : 4 240
    Points
    4 240
    Par défaut
    Donc en faite, j'ai bien regardé ce que j'avais fait, et en faite ma question provenait du faite que je trouvai bizarre mes déplacements (trop rapide). Et donc j'avais mis sa sur le coup de la sensibilité.
    Mais en faite ça venai d'une erreur dans un des calculs pour le déplacements.
    Donc pas besoin de m'embrouiller avec cette sensibilité.


    Citation Envoyé par fearyourself
    si le Warp génére un événement (j'ai un doute)
    D'après la doc, oui ça génère bien un évenement :

    void SDL_WarpMouse (Uint16 x, Uint16 y);
    Description
    Set the position of the mouse cursor (generates a mouse motion event).

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Réponses: 0
    Dernier message: 21/10/2013, 20h42
  2. comment gérer la position du curseur de la souris
    Par colorid dans le forum Langage
    Réponses: 3
    Dernier message: 16/05/2011, 08h54
  3. Comment gérer la molette de souris ?
    Par Laskar dans le forum Composants VCL
    Réponses: 11
    Dernier message: 09/10/2010, 19h06
  4. Réponses: 13
    Dernier message: 25/05/2010, 07h44
  5. Réponses: 2
    Dernier message: 23/06/2009, 14h51

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo