Ajouter la compatibilité avec la souris

Utilisez les fonctions suivantes pour ajouter la compatibilité avec la souris à votre jeu à l'aide de la bibliothèque Game Controller. Le terme "souris" désigne ici les souris traditionnelles, mais aussi les pavés tactiles et les trackballs.

Ajouter un rappel d'état de la souris

La bibliothèque Game Controller utilise un rappel d'état de la souris pour indiquer à un jeu quand une souris est connectée ou déconnectée. Elle n'accepte qu'un seul rappel d'état de la souris à la fois.

  • Pour enregistrer un rappel d'état de la souris ou remplacer un rappel précédemment enregistré par une nouvelle fonction de rappel, appelez la fonction Paddleboat_setMouseStatusCallback.
  • Pour supprimer un rappel actuellement enregistré, transmettez NULL ou nullptr dans le paramètre statusCallback.
  • Le paramètre userData est un pointeur facultatif vers des données définies par l'utilisateur. Le paramètre userData est transmis à la fonction de rappel. Ce pointeur est conservé en interne jusqu'à ce qu'il soit modifié par un appel ultérieur à Paddleboat_setMouseStatusCallback.
void Paddleboat_setMouseStatusCallback(Paddleboat_MouseStatusCallback
  statusCallback, void *userData)

La signature de la fonction de rappel d'état de la souris est la suivante :

typedef void (*Paddleboat_MouseStatusCallback)(const Paddleboat_MouseStatus
  mouseStatus, void *userData)

Le paramètre enum mouseStatus peut comporter trois valeurs :

  • PADDLEBOAT_MOUSE_NONE : aucune souris n'est actuellement connectée.
  • PADDLEBOAT_MOUSE_CONTROLLER_EMULATED : une manette connectée simule une souris.
  • PADDLEBOAT_MOUSE_PHYSICAL : au moins une souris physique est connectée (il peut s'agir d'une souris traditionnelle, d'un pavé tactile, d'un trackball ou autre).

Le paramètre userData contient le pointeur userData spécifié lors du dernier appel à Paddleboat_setMouseStatusCallback. userData peut être NULL ou nullptr.

Toutes les manettes ne simulent pas une souris. Les manettes peuvent simuler une souris à l'aide de l'un des sticks analogiques ou d'un pavé tactile intégré.

La bibliothèque Game Controller fournit uniquement les données d'une seule souris. Les souris physiques sont prioritaires sur les souris virtuelles. Si une souris physique est connectée, elle prévaut sur toute souris virtuelle précédemment active.

Lire les données de la souris

Appelez la fonction Paddleboat_getMouseStatus pour obtenir l'état de la souris.

Paddleboat_MouseStatus Paddleboat_getMouseStatus()

Utilisez la fonction Paddleboat_getMouseData pour obtenir les données actuelles de la souris. Cette fonction renvoie PADDLEBOAT_NO_ERROR si les données sont bien lues, sinon un code d'erreur approprié est renvoyé.

bool Paddleboat_getMouseData(Paddleboat_Mouse_Data *mouseData)

La structure Paddleboat_Mouse_Data contient des informations sur :

  • L'horodatage de l'événement d'entrée le plus récent de la souris
  • La position actuelle du pointeur
  • L'état des boutons de la souris
  • L'état des molettes de la souris
struct Paddleboat_Mouse_Data {
    uint64_t timestamp;
    uint32_t buttonsDown;
    int32_t mouseScrollDeltaH;
    int32_t mouseScrollDeltaV;
    float mouseX;
    float mouseY;
}
Membre de la structure Description
timestamp Horodatage de l'événement d'entrée le plus récent de la souris. La valeur de l'horodatage est exprimée en microsecondes depuis l'epoch de l'horloge.
buttonsDown Champ de bits, chaque bit à partir du bit 0 signifie un état de bouton enfoncé s'il est défini.
mouseX
mouseY
Position de la souris en coordonnées de pixels. Les coordonnées sont exprimées par une plage de type 0.0 indiquant la position par rapport à la largeur de l'écran et à sa hauteur.
mouseScrollDeltaH
mouseScrollDeltaV
Nombre d'événements de molette de la souris cumulés depuis l'appel précédent à Paddleboat_getMouseData. La précision de ces valeurs n'est pas garantie. Elles donnent seulement une indication de l'activité de la molette dans un sens particulier. La plupart des souris sont dotées d'une seule molette, qui est signalée dans mouseScrollDeltaV. Lorsqu'une souris est dotée d'une molette latérale, celle-ci est signalée dans mouseScrollDeltaH. Ces valeurs sont remises à 0 en interne après un appel à Paddleboat_getMouseData.

La bibliothèque Game Controller définit des constantes de masque de bits pour les boutons de la souris dans le fichier d'en-tête de l'interface paddleboat.h :

enum Paddleboat_Mouse_Buttons {
    PADDLEBOAT_MOUSE_BUTTON_LEFT = (1U << 0),
    PADDLEBOAT_MOUSE_BUTTON_RIGHT = (1U << 1),
    PADDLEBOAT_MOUSE_BUTTON_MIDDLE = (1U << 2),
    PADDLEBOAT_MOUSE_BUTTON_BACK = (1U << 3),
    PADDLEBOAT_MOUSE_BUTTON_FORWARD = (1U << 4),
    PADDLEBOAT_MOUSE_BUTTON_6 = (1U << 5),
    PADDLEBOAT_MOUSE_BUTTON_7 = (1U << 6),
    PADDLEBOAT_MOUSE_BUTTON_8 = (1U << 7)
};

Souris physiques ou virtuelles

Lorsque Paddleboat_MouseStatus est défini sur PADDLEBOAT_MOUSE_CONTROLLER_EMULATED, cela indique qu'aucune souris physique n'est présente et que la bibliothèque Game Controller simule une souris virtuelle à l'aide d'une manette connectée. L'index de manette connectée le plus bas avec l'indicateur PADDLEBOAT_CONTROLLER_FLAG_VIRTUAL_MOUSE défini est utilisé comme souris virtuelle. Avec les souris virtuelles, seul le signalement des coordonnées mouseX et mouseY est garanti. Les souris virtuelles peuvent signaler les pressions sur un seul bouton (le gauche), mais cela n'est pas garanti.