| 
				
				
					
						
					
				
				
				 | 
			
			 | 
			
			@ -127,6 +127,7 @@ | 
			
		
		
	
		
			
			 | 
			 | 
			
			 | 
			
			     | 
			
		
		
	
		
			
			 | 
			 | 
			
			 | 
			
			    #define MOUSE_SENSITIVITY         0.8f | 
			
		
		
	
		
			
			 | 
			 | 
			
			 | 
			
			    #define MAX_GAMEPAD_BUTTONS       11 | 
			
		
		
	
		
			
			 | 
			 | 
			
			 | 
			
			    #define MAX_GAMEPAD_AXIS          5 | 
			
		
		
	
		
			
			 | 
			 | 
			
			 | 
			
			#endif | 
			
		
		
	
		
			
			 | 
			 | 
			
			 | 
			
			
 | 
			
		
		
	
		
			
			 | 
			 | 
			
			 | 
			
			//---------------------------------------------------------------------------------- | 
			
		
		
	
	
		
			
				| 
				
					
						
					
				
				
					
						
					
				
				
				 | 
			
			 | 
			
			@ -168,8 +169,7 @@ static bool gamepadReady = false;               // Flag to know if gamepad is re | 
			
		
		
	
		
			
			 | 
			 | 
			
			 | 
			
			pthread_t gamepadThreadId;                      // Gamepad reading thread id | 
			
		
		
	
		
			
			 | 
			 | 
			
			 | 
			
			
 | 
			
		
		
	
		
			
			 | 
			 | 
			
			 | 
			
			int gamepadButtons[MAX_GAMEPAD_BUTTONS]; | 
			
		
		
	
		
			
			 | 
			 | 
			
			 | 
			
			int gamepadAxisX = 0; | 
			
		
		
	
		
			
			 | 
			 | 
			
			 | 
			
			int gamepadAxisY = 0; | 
			
		
		
	
		
			
			 | 
			 | 
			
			 | 
			
			float gamepadAxisValues[MAX_GAMEPAD_AXIS]; | 
			
		
		
	
		
			
			 | 
			 | 
			
			 | 
			
			#endif | 
			
		
		
	
		
			
			 | 
			 | 
			
			 | 
			
			
 | 
			
		
		
	
		
			
			 | 
			 | 
			
			 | 
			
			#if defined(PLATFORM_ANDROID) || defined(PLATFORM_RPI) | 
			
		
		
	
	
		
			
				| 
				
					
						
					
				
				
					
						
					
				
				
				 | 
			
			 | 
			
			@ -1177,30 +1177,22 @@ bool IsGamepadAvailable(int gamepad) | 
			
		
		
	
		
			
			 | 
			 | 
			
			 | 
			
			} | 
			
		
		
	
		
			
			 | 
			 | 
			
			 | 
			
			
 | 
			
		
		
	
		
			
			 | 
			 | 
			
			 | 
			
			// Return axis movement vector for a gamepad | 
			
		
		
	
		
			
			 | 
			 | 
			
			 | 
			
			n">Vector2 GetGamepadMovement(int gamepad) | 
			
		
		
	
		
			
			 | 
			 | 
			
			 | 
			
			kt">float GetGamepadAxisMovement(int gamepad, int axis) | 
			
		
		
	
		
			
			 | 
			 | 
			
			 | 
			
			{ | 
			
		
		
	
		
			
			 | 
			 | 
			
			 | 
			
			    Vector2 vec = { 0, 0 }; | 
			
		
		
	
		
			
			 | 
			 | 
			
			 | 
			
			
 | 
			
		
		
	
		
			
			 | 
			 | 
			
			 | 
			
			    const float *axes; | 
			
		
		
	
		
			
			 | 
			 | 
			
			 | 
			
			    int axisCount = 0; | 
			
		
		
	
		
			
			 | 
			 | 
			
			 | 
			
			    float value = 0; | 
			
		
		
	
		
			
			 | 
			 | 
			
			 | 
			
			     | 
			
		
		
	
		
			
			 | 
			 | 
			
			 | 
			
			#if defined(PLATFORM_RPI) | 
			
		
		
	
		
			
			 | 
			 | 
			
			 | 
			
			    // TODO: Get gamepad axis information | 
			
		
		
	
		
			
			 | 
			 | 
			
			 | 
			
			    // Use gamepadAxisX, gamepadAxisY | 
			
		
		
	
		
			
			 | 
			 | 
			
			 | 
			
			    if (axis < MAX_GAMEPAD_AXIS) value = gamepadAxisValues[axis]; | 
			
		
		
	
		
			
			 | 
			 | 
			
			 | 
			
			#else | 
			
		
		
	
		
			
			 | 
			 | 
			
			 | 
			
			    const float *axes; | 
			
		
		
	
		
			
			 | 
			 | 
			
			 | 
			
			    int axisCount = 0; | 
			
		
		
	
		
			
			 | 
			 | 
			
			 | 
			
			     | 
			
		
		
	
		
			
			 | 
			 | 
			
			 | 
			
			    axes = glfwGetJoystickAxes(gamepad, &axisCount); | 
			
		
		
	
		
			
			 | 
			 | 
			
			 | 
			
			#endif | 
			
		
		
	
		
			
			 | 
			 | 
			
			 | 
			
			     | 
			
		
		
	
		
			
			 | 
			 | 
			
			 | 
			
			    if (axisCount >= 2) | 
			
		
		
	
		
			
			 | 
			 | 
			
			 | 
			
			    { | 
			
		
		
	
		
			
			 | 
			 | 
			
			 | 
			
			        vec.x = axes[0];    // Left joystick X | 
			
		
		
	
		
			
			 | 
			 | 
			
			 | 
			
			        vec.y = axes[1];    // Left joystick Y | 
			
		
		
	
		
			
			 | 
			 | 
			
			 | 
			
			
 | 
			
		
		
	
		
			
			 | 
			 | 
			
			 | 
			
			        //vec.x = axes[2];    // Right joystick X | 
			
		
		
	
		
			
			 | 
			 | 
			
			 | 
			
			        //vec.x = axes[3];    // Right joystick Y | 
			
		
		
	
		
			
			 | 
			 | 
			
			 | 
			
			    } | 
			
		
		
	
		
			
			 | 
			 | 
			
			 | 
			
			    if (axis < axisCount) value = axes[axis]; | 
			
		
		
	
		
			
			 | 
			 | 
			
			 | 
			
			#endif | 
			
		
		
	
		
			
			 | 
			 | 
			
			 | 
			
			
 | 
			
		
		
	
		
			
			 | 
			 | 
			
			 | 
			
			    return vec; | 
			
		
		
	
		
			
			 | 
			 | 
			
			 | 
			
			    return value; | 
			
		
		
	
		
			
			 | 
			 | 
			
			 | 
			
			} | 
			
		
		
	
		
			
			 | 
			 | 
			
			 | 
			
			
 | 
			
		
		
	
		
			
			 | 
			 | 
			
			 | 
			
			// Detect if a gamepad button has been pressed once | 
			
		
		
	
	
		
			
				| 
				
					
						
					
				
				
					
						
					
				
				
				 | 
			
			 | 
			
			@ -2484,10 +2476,6 @@ static void *GamepadThread(void *arg) | 
			
		
		
	
		
			
			 | 
			 | 
			
			 | 
			
			        unsigned char number;   // event axis/button number | 
			
		
		
	
		
			
			 | 
			 | 
			
			 | 
			
			    }; | 
			
		
		
	
		
			
			 | 
			 | 
			
			 | 
			
			
 | 
			
		
		
	
		
			
			 | 
			 | 
			
			 | 
			
			    // These values are sensible on Logitech Dual Action Rumble and Xbox360 controller | 
			
		
		
	
		
			
			 | 
			 | 
			
			 | 
			
			    const int joystickAxisX = 0; | 
			
		
		
	
		
			
			 | 
			 | 
			
			 | 
			
			    const int joystickAxisY = 1; | 
			
		
		
	
		
			
			 | 
			 | 
			
			 | 
			
			
 | 
			
		
		
	
		
			
			 | 
			 | 
			
			 | 
			
			    // Read gamepad event | 
			
		
		
	
		
			
			 | 
			 | 
			
			 | 
			
				struct js_event gamepadEvent; | 
			
		
		
	
		
			
			 | 
			 | 
			
			 | 
			
			     | 
			
		
		
	
	
		
			
				| 
				
				
				
					
						
					
				
				 | 
			
			 | 
			
			@ -2512,17 +2500,11 @@ static void *GamepadThread(void *arg) | 
			
		
		
	
		
			
			 | 
			 | 
			
			 | 
			
			            { | 
			
		
		
	
		
			
			 | 
			 | 
			
			 | 
			
			                TraceLog(DEBUG, "Gamepad axis: %i, value: %i", gamepadEvent.number, gamepadEvent.value); | 
			
		
		
	
		
			
			 | 
			 | 
			
			 | 
			
			                 | 
			
		
		
	
		
			
			 | 
			 | 
			
			 | 
			
			                if (gamepadEvent.number == joystickAxisX) gamepadAxisX = (int)gamepadEvent.value; | 
			
		
		
	
		
			
			 | 
			 | 
			
			 | 
			
			                if (gamepadEvent.number == joystickAxisY) gamepadAxisY = (int)gamepadEvent.value; | 
			
		
		
	
		
			
			 | 
			 | 
			
			 | 
			
			                /* | 
			
		
		
	
		
			
			 | 
			 | 
			
			 | 
			
			                switch (gamepadEvent.number) | 
			
		
		
	
		
			
			 | 
			 | 
			
			 | 
			
			                if (gamepadEvent.number < MAX_GAMEPAD_AXIS) | 
			
		
		
	
		
			
			 | 
			 | 
			
			 | 
			
			                { | 
			
		
		
	
		
			
			 | 
			 | 
			
			 | 
			
			                    case 0: // 1st Axis X | 
			
		
		
	
		
			
			 | 
			 | 
			
			 | 
			
			                    case 1: // 1st Axis Y | 
			
		
		
	
		
			
			 | 
			 | 
			
			 | 
			
			                    case 2: // 2st Axis X | 
			
		
		
	
		
			
			 | 
			 | 
			
			 | 
			
			                    case 3: // 2st Axis Y | 
			
		
		
	
		
			
			 | 
			 | 
			
			 | 
			
			                    // NOTE: Scaling of gamepadEvent.value to get values between -1..1 | 
			
		
		
	
		
			
			 | 
			 | 
			
			 | 
			
			                    gamepadAxisValues[gamepadEvent.number] = (float)gamepadEvent.value/32768; | 
			
		
		
	
		
			
			 | 
			 | 
			
			 | 
			
			                } | 
			
		
		
	
		
			
			 | 
			 | 
			
			 | 
			
			                */ | 
			
		
		
	
		
			
			 | 
			 | 
			
			 | 
			
			            } | 
			
		
		
	
		
			
			 | 
			 | 
			
			 | 
			
			        } | 
			
		
		
	
		
			
			 | 
			 | 
			
			 | 
			
				} | 
			
		
		
	
	
		
			
				| 
				
					
						
					
				
				
				
				 | 
			
			 | 
			
			
 |