コード例 #1
0
void GamepadComponent::Update()
{
	//If the gamepad index is 0 and the amount of controllers connected is greater than 0
	//set the controller index to that number
	if (m_gamepadIndex == 0 && System::InputManager.ConnectedGamepads() > System::InputManager.m_usedGamepads)
	{
		System::InputManager.m_usedGamepads++;
		m_gamepadIndex = System::InputManager.m_usedGamepads;

		System::InputManager.m_gamepadStatus[m_gamepadIndex] = true;
	}

	//If a gamepad has been disconnected and its id matches the internal id, disenable it to fetch information
	if (System::InputManager.m_gamepadStatus[m_gamepadIndex] && m_gamepadIndex > 0)
	{
		System::InputManager.m_usedGamepads--;
		m_gamepadIndex = 0;
	}

	//Check commands

	//buttons
	auto buttonIterator = m_command.begin();
	while (buttonIterator != m_command.end())
	{
		ExecuteButtonCommand(buttonIterator->second.first, buttonIterator->second.second);

		buttonIterator++;
	}

	//axis
	auto joystickIterator = m_joystickCommand.begin();
	while (joystickIterator != m_joystickCommand.end())
	{

		joystickIterator++;
	}
}
コード例 #2
0
ファイル: joystick.c プロジェクト: AmmarkoV/RoboVision
int HandleJoystickEvent(struct js_event *jse)
{
        if ( jse->type == JS_EVENT_INIT) { return 0; }

		if (jse->type == JS_EVENT_AXIS)
		{

			switch (jse->number)
			{
			case 0: RAW_Stick1_AxisX = jse->value;
				break;
			case 1: RAW_Stick1_AxisY = jse->value;
				break;
			case 2: RAW_Stick2_AxisX = jse->value;
				break;
			case 3: RAW_Stick2_AxisY = jse->value;
				break;
			case 4: RAW_Stick3_AxisX = jse->value;
				break;
			case 5: RAW_Stick3_AxisY = jse->value;
				break;
			default:
				break;
			}

           Calibrated_Stick1_AxisX=RAW_Stick1_AxisX;
		   Calibrated_Stick1_AxisY=RAW_Stick1_AxisY;
		   CalibrateJoystickPos(&Calibrated_Stick1_AxisX,&Calibrated_Stick1_AxisY,255);
           printf("Joystick Stick 1 %d,%d\n",Calibrated_Stick1_AxisX,Calibrated_Stick1_AxisY);


           Calibrated_Stick2_AxisX=RAW_Stick2_AxisX;
		   Calibrated_Stick2_AxisY=RAW_Stick2_AxisY;
		   CalibrateJoystickPos(&Calibrated_Stick2_AxisX,&Calibrated_Stick2_AxisY,255);
           printf("Joystick Stick 2 %d,%d\n",Calibrated_Stick2_AxisX,Calibrated_Stick2_AxisY);

           Calibrated_Stick3_AxisX=RAW_Stick3_AxisX;
		   Calibrated_Stick3_AxisY=RAW_Stick3_AxisY;
		   CalibrateJoystickPos(&Calibrated_Stick3_AxisX,&Calibrated_Stick3_AxisY,255);
           printf("Joystick Stick 3 %d,%d\n",Calibrated_Stick3_AxisX,Calibrated_Stick3_AxisY);


          char inptstr[512]={0};
          if ( (Calibrated_Stick1_AxisX!=0 ) || ( Calibrated_Stick1_AxisY!=0 ) )
           {
            sprintf(inptstr , (char *) "JOYSTICK INPUT(%u,%u)",Calibrated_Stick1_AxisX,Calibrated_Stick1_AxisY);
            IssueCommand(inptstr,0,0,(char *)"GUI");
           }
          if ( (Calibrated_Stick2_AxisX!=0 ) || ( Calibrated_Stick2_AxisY!=0 ) )
           {
            //Stick 2 not used yet :)
            //sprintf(inptstr , (char *) "JOYSTICK INPUT(%u,%u)",Calibrated_Stick1_AxisX,Calibrated_Stick1_AxisY);
            //IssueCommand(inptstr,0,0,(char *)"GUI");
           }
		}

		 else

		if (jse->type == JS_EVENT_BUTTON)
		{
			if (jse->number < 10)
			{
				switch (jse->value)
				{
				  case 0:
				 // case 1: wjse->button[jse.number] = jse.value; break;
				  default: break;
				}
			}

		    if(jse->value) { ExecuteButtonCommand(jse->number); }


        }
 return 1;
}