GamePads
Extends: EventHandler
Input handler for accessing GamePad input.
Summary
Properties
current | The list of current gamepads. |
gamepadsSupported | Whether gamepads are supported by this device. |
Methods
findById | Find a connected GamePad from its identifier. |
findByIndex | Find a connected GamePad from its device index. |
getAxis | Get the value of one of the analog axes of the pad. |
getMap | Retrieve the order for buttons and axes for given HTML5 Gamepad. |
isPressed | Returns true if the button on the pad requested is pressed. |
poll | Poll for the latest data from the gamepad API. |
pulse | Make the gamepad vibrate. |
pulseAll | Make all gamepads vibrate. |
wasPressed | Returns true if the button was pressed since the last frame. |
wasReleased | Returns true if the button was released since the last frame. |
Events
gamepadconnected | Fired when a gamepad is connected. |
gamepaddisconnected | Fired when a gamepad is disconnected. |
Inherited
Methods
fire | Fire an event, all additional arguments are passed on to the event listener. |
hasEvent | Test if there are any handlers bound to an event name. |
off | Detach an event handler from an event. |
on | Attach an event handler to an event. |
once | Attach an event handler to an event. |
Details
Constructor
GamePads()
Create a new GamePads instance.
Properties
Methods
findById(id)
Find a connected GamePad from its identifier.
Parameters
id | string | The identifier to search for. |
Returns
GamePad, nullThe GamePad with the matching identifier or null if no gamepad is found or the gamepad is not connected.
findByIndex(index)
Find a connected GamePad from its device index.
Parameters
index | number | The device index to search for. |
Returns
GamePad, nullThe GamePad with the matching device index or null if no gamepad is found or the gamepad is not connected.
getAxis(orderIndex, axis)
Get the value of one of the analog axes of the pad.
Parameters
orderIndex | number | The index of the pad to check, use constants PAD_1, PAD_2, etc. For gamepad index call the function from the pad. |
axis | number | The axis to get the value of, use constants PAD_L_STICK_X, etc. |
Returns
numberThe value of the axis between -1 and 1.
getMap(pad)
Retrieve the order for buttons and axes for given HTML5 Gamepad.
Parameters
pad | Gamepad | The HTML5 Gamepad object. |
Returns
objectObject defining the order of buttons and axes for given HTML5 Gamepad.
isPressed(orderIndex, button)
Returns true if the button on the pad requested is pressed.
Parameters
orderIndex | number | The order index of the pad to check, use constants PAD_1, PAD_2, etc. For gamepad index call the function from the pad. |
button | number | The button to test, use constants PAD_FACE_1, etc. |
Returns
booleanTrue if the button is pressed.
poll([pads])
Poll for the latest data from the gamepad API.
const gamepads = new pc.GamePads();
const pads = gamepads.poll();
Parameters
pads | GamePad[] | An optional array used to receive the gamepads mapping. This array will be returned by this function. |
Returns
GamePad[]An array of gamepads and mappings for the model of gamepad that is attached.
pulse(orderIndex, intensity, duration, [options])
Make the gamepad vibrate.
Parameters
orderIndex | number | The index of the pad to check, use constants PAD_1, PAD_2, etc. For gamepad index call the function from the pad. |
intensity | number | Intensity for the vibration in the range 0 to 1. |
duration | number | Duration for the vibration in milliseconds. |
options | object | Options for special vibration pattern. |
options.startDelay | number | Delay before the pattern starts, in milliseconds. Defaults to 0. |
options.strongMagnitude | number | Intensity for strong actuators in the range 0 to 1. Defaults to intensity. |
options.weakMagnitude | number | Intensity for weak actuators in the range 0 to 1. Defaults to intensity. |
Returns
Promise.Return a Promise resulting in true if the pulse was successfully completed.
pulseAll(intensity, duration, [options])
Make all gamepads vibrate.
Parameters
intensity | number | Intensity for the vibration in the range 0 to 1. |
duration | number | Duration for the vibration in milliseconds. |
options | object | Options for special vibration pattern. |
options.startDelay | number | Delay before the pattern starts, in milliseconds. Defaults to 0. |
options.strongMagnitude | number | Intensity for strong actuators in the range 0 to 1. Defaults to intensity. |
options.weakMagnitude | number | Intensity for weak actuators in the range 0 to 1. Defaults to intensity. |
Returns
Promise.Return a Promise resulting in an array of booleans defining if the pulse was successfully completed for every gamepads.
wasPressed(orderIndex, button)
Returns true if the button was pressed since the last frame.
Parameters
orderIndex | number | The index of the pad to check, use constants PAD_1, PAD_2, etc. For gamepad index call the function from the pad. |
button | number | The button to test, use constants PAD_FACE_1, etc. |
Returns
booleanTrue if the button was pressed since the last frame.
wasReleased(orderIndex, button)
Returns true if the button was released since the last frame.
Parameters
orderIndex | number | The index of the pad to check, use constants PAD_1, PAD_2, etc. For gamepad index call the function from the pad. |
button | number | The button to test, use constants PAD_FACE_1, etc. |
Returns
booleanTrue if the button was released since the last frame.
Events
gamepadconnected
Fired when a gamepad is connected.
const onPadConnected = function (pad) {
if (!pad.mapping) {
// Map the gamepad as the system could not find the proper map.
} else {
// Make the gamepad pulse.
}
};
app.keyboard.on("gamepadconnected", onPadConnected, this);
Parameters
gamepad | GamePad | The gamepad that was just connected. |
gamepaddisconnected
Fired when a gamepad is disconnected.
const onPadDisconnected = function (pad) {
// Pause the game.
};
app.keyboard.on("gamepaddisconnected", onPadDisconnected, this);
Parameters
gamepad | GamePad | The gamepad that was just disconnected. |
Inherited
Methods
fire(name, [arg1], [arg2], [arg3], [arg4], [arg5], [arg6], [arg7], [arg8])
Fire an event, all additional arguments are passed on to the event listener.
obj.fire('test', 'This is the message');
Parameters
name | string | Name of event to fire. |
arg1 | * | First argument that is passed to the event handler. |
arg2 | * | Second argument that is passed to the event handler. |
arg3 | * | Third argument that is passed to the event handler. |
arg4 | * | Fourth argument that is passed to the event handler. |
arg5 | * | Fifth argument that is passed to the event handler. |
arg6 | * | Sixth argument that is passed to the event handler. |
arg7 | * | Seventh argument that is passed to the event handler. |
arg8 | * | Eighth argument that is passed to the event handler. |
Returns
EventHandlerSelf for chaining.
hasEvent(name)
Test if there are any handlers bound to an event name.
obj.on('test', function () { }); // bind an event to 'test'
obj.hasEvent('test'); // returns true
obj.hasEvent('hello'); // returns false
Parameters
name | string | The name of the event to test. |
Returns
booleanTrue if the object has handlers bound to the specified event name.
off([name], [callback], [scope])
Detach an event handler from an event. If callback is not provided then all callbacks are unbound from the event, if scope is not provided then all events with the callback will be unbound.
const handler = function () {
};
obj.on('test', handler);
obj.off(); // Removes all events
obj.off('test'); // Removes all events called 'test'
obj.off('test', handler); // Removes all handler functions, called 'test'
obj.off('test', handler, this); // Removes all handler functions, called 'test' with scope this
Parameters
name | string | Name of the event to unbind. |
callback | HandleEventCallback | Function to be unbound. |
scope | object | Scope that was used as the this when the event is fired. |
Returns
EventHandlerSelf for chaining.
on(name, callback, [scope])
Attach an event handler to an event.
obj.on('test', function (a, b) {
console.log(a + b);
});
obj.fire('test', 1, 2); // prints 3 to the console
Parameters
name | string | Name of the event to bind the callback to. |
callback | HandleEventCallback | Function that is called when event is fired. Note the callback is limited to 8 arguments. |
scope | object | Object to use as 'this' when the event is fired, defaults to current this. |
Returns
EventHandlerSelf for chaining.
once(name, callback, [scope])
Attach an event handler to an event. This handler will be removed after being fired once.
obj.once('test', function (a, b) {
console.log(a + b);
});
obj.fire('test', 1, 2); // prints 3 to the console
obj.fire('test', 1, 2); // not going to get handled
Parameters
name | string | Name of the event to bind the callback to. |
callback | HandleEventCallback | Function that is called when event is fired. Note the callback is limited to 8 arguments. |
scope | object | Object to use as 'this' when the event is fired, defaults to current this. |
Returns
EventHandlerSelf for chaining.