///<summary> /// Fonction GetJoy, à appeler dans la boucle principale de votre programme, en lui passant /// en paramètres 4 valeurs: /// - Un tableau (d'une seule dimension) de booléens, qui vous dira si tel ou tel bouton est /// appuyé (true) ou relaché (false) /// - Trois entiers, les axes X, Y et Z du joystick. /// Si votre joystick est "au repos" (centré) sur un axe, la valeur sera 32767. /// Si le joy est poussé à fond dans une direction, vous aurez 0 ou 65535 (selon le sens). /// * Avec un controleur analogique (comme un joystick), /// toutes les valeurs intermédiaires sont possibles. /// * Avec un controleur digital (comme un joypad de base), /// les valeurs sont toujours 0, 32767 ou 65535 (il n'y a pas d'intermédiaire) /// /// La fonction retourne "true" si ça c'est bien passé, "false" s'il y a eu un problème /// (par exemple s'il n'y a pas de joystick répondant à cette ID). /// </summary> public bool GetJoy(out bool[] joybuttons, out int axis_x, out int axis_y, out int axis_z) { JOYINFO JoyInformation = new JOYINFO(); joybuttons = new bool[MAXJOYBUTTONS]; if (joyGetPos(joystick_id, ref JoyInformation) != 0) { axis_x = 0; axis_y = 0; axis_z = 0; return(false); } for (int i = 0; i < MAXJOYBUTTONS; i++) { joybuttons[i] = (((int)Math.Pow(2, i) & JoyInformation.wButtons) != 0); } axis_x = JoyInformation.wXpos; axis_y = JoyInformation.wYpos; axis_z = JoyInformation.wZpos; return(true); }
///<summary> /// Fonction GetJoy, à appeler dans la boucle principale de votre programme, en lui passant /// en paramètres 4 valeurs: /// - Un tableau (d'une seule dimension) de booléens, qui vous dira si tel ou tel bouton est /// appuyé (true) ou relaché (false) /// - Trois entiers, les axes X, Y et Z du joystick. /// Si votre joystick est "au repos" (centré) sur un axe, la valeur sera 32767. /// Si le joy est poussé à fond dans une direction, vous aurez 0 ou 65535 (selon le sens). /// * Avec un controleur analogique (comme un joystick), /// toutes les valeurs intermédiaires sont possibles. /// * Avec un controleur digital (comme un joypad de base), /// les valeurs sont toujours 0, 32767 ou 65535 (il n'y a pas d'intermédiaire) /// /// La fonction retourne "true" si ça c'est bien passé, "false" s'il y a eu un problème /// (par exemple s'il n'y a pas de joystick répondant à cette ID). /// </summary> public bool GetJoy(out bool[] joybuttons, out int axis_x, out int axis_y, out int axis_z) { JOYINFO JoyInformation = new JOYINFO(); joybuttons = new bool[MAXJOYBUTTONS]; if (joyGetPos(joystick_id, ref JoyInformation) != 0) { axis_x = 0; axis_y = 0; axis_z = 0; return false; } for (int i = 0; i < MAXJOYBUTTONS; i++) joybuttons[i] = (((int)Math.Pow(2, i) & JoyInformation.wButtons) != 0); axis_x = JoyInformation.wXpos; axis_y = JoyInformation.wYpos; axis_z = JoyInformation.wZpos; return true; }
public static extern int joyGetPos(int uJoyID, ref JOYINFO pji);
public static extern ResultCode joyGetPos(int uJoyID, JOYINFO pji);
public static extern MMRESULT joyGetPos(int uJoyID, out JOYINFO pji);
public static extern Int32 joyGetPos(Int32 uJoyID, ref JOYINFO pji);
private static extern int joyGetPos(int uJoyID, ref JOYINFO pji);
public static extern uint joyGetPos(uint uJoyID, ref JOYINFO pji);