Beispiel #1
0
static void joystick_poll( int32_t *mx, int32_t *my, int32_t *ix, int32_t *iy ) {
  //SDL_JoystickUpdate();
  *mx  = joystick_axis( 0, 500,  256 );
  *my  = joystick_axis( 1, 500,  256 );
  *ix += joystick_axis( 2, 500, 1000 );
  *iy += joystick_axis( 3, 500, 1000 );
}
double joystick_pov(int id, int axis1, int axis2) {
	double a1, a2;
	a1 = joystick_axis(id, axis1);
	a2 = joystick_axis(id, axis2);
	if (a1 == 0 && a2 == 0) {
		return -1.f;
	}
	// in C, atan2 is y,x not x,y
	return ma_angle_from_radians((atan2(-a1, a2) + M_PI));
}
int joystick_direction(int id, int axis1, int axis2)
{
  JOYINFOEX joyinfo; 
  joyGetPosEx(JOYSTICKID1 + id, &joyinfo);
  double a1, a2;
  a1 = joystick_axis(id, axis1);
  a2 = joystick_axis(id, axis2);
  const int x = a1 < -.5 ? 0 : a1 > .5 ? 2 : 1;
  const int y = a2 < -.5 ? 0 : a2 > .5 ? 6 : 3;
  return 97 + x + y;
}