Ecosyste.ms: Awesome
An open API service indexing awesome lists of open source software.
https://github.com/basselin/impactjs-gamepad-dualshock
:video_game: Use Sony Playstation DualShock 3 and/or DualShock 4 Wireless Controller in your ImpactJS game on your web browser. The plugin binds the buttons of the DS3 or DS4 to an action.
https://github.com/basselin/impactjs-gamepad-dualshock
dualshock gamepad impactjs javascript playstation
Last synced: about 2 months ago
JSON representation
:video_game: Use Sony Playstation DualShock 3 and/or DualShock 4 Wireless Controller in your ImpactJS game on your web browser. The plugin binds the buttons of the DS3 or DS4 to an action.
- Host: GitHub
- URL: https://github.com/basselin/impactjs-gamepad-dualshock
- Owner: basselin
- License: mit
- Created: 2014-01-25T23:41:00.000Z (almost 11 years ago)
- Default Branch: master
- Last Pushed: 2014-09-17T15:50:45.000Z (over 10 years ago)
- Last Synced: 2023-08-12T06:41:27.448Z (over 1 year ago)
- Topics: dualshock, gamepad, impactjs, javascript, playstation
- Language: JavaScript
- Homepage:
- Size: 281 KB
- Stars: 7
- Watchers: 1
- Forks: 0
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
- License: LICENSE
Awesome Lists containing this project
README
# Using Playstation DualShock 3 or DualShock 4 in ImpactJS
Use Sony Playstation DualShock 3 or DualShock 4 Wireless Controller in your ImpactJS game on your web browser.
The plugin binds the buttons of the DS3 or DS4 to an action.
The plugin can also map the buttons of the Dualshock with the keyboard.*Tested on ImpactJS version 1.23+*
*Compatibilities: Mozilla Firefox 24+, Google Chrome 21+, Opera 15+*
## Usage
### First example
Copy **gamepad-dualshock.js** to your **lib/plugins/** directory.Edit **lib/game/main.js** :
```javascript
ig.module(
'game.main'
)
.requires(
// ... ,
'plugins.gamepad-dualshock',
// ...
)
.defines(function(){
MyGame = ig.Game.extend({
// ...
gamepad: new ig.GamepadDualshock(),
// ...
init: function() {
// Basic method ImpactJS
ig.input.bind( ig.KEY.LEFT_ARROW, 'left' );
ig.input.bind( ig.KEY.RIGHT_ARROW, 'right' );
ig.input.bind( ig.KEY.UP_ARROW, 'jump' );
// METHOD #1: Bind a Dualshock buttons to an action
this.gamepad
.bind( ig.DUALSHOCK_KEY.LEFT , 'left' )
.bind( ig.DUALSHOCK_KEY.LS_LEFT , 'left' )
.bind( ig.DUALSHOCK_KEY.RIGHT , 'right' )
.bind( ig.DUALSHOCK_KEY.LS_RIGHT , 'right' )
.bind( ig.DUALSHOCK_KEY.CROSS , 'jump' )
;
// OR
// METHOD #2: Mapping a Dualshock buttons to a keyboard
this.gamepad
.mapping( ig.DUALSHOCK_KEY.LEFT , ig.KEY.LEFT_ARROW )
.mapping( ig.DUALSHOCK_KEY.LS_LEFT , ig.KEY.LEFT_ARROW )
.mapping( ig.DUALSHOCK_KEY.RIGHT , ig.KEY.RIGHT_ARROW )
.mapping( ig.DUALSHOCK_KEY.LS_RIGHT , ig.KEY.RIGHT_ARROW )
.mapping( ig.DUALSHOCK_KEY.CROSS , ig.KEY.UP_ARROW )
;
// ...
},
// ...
});
});
```### Using axes when an ig.EntityWeapon spawns
```javascript
init: function( x, y, settings ) {
// ...
var padX = ig.game.gamepad.getAxeValue( ig.DUALSHOCK_AXE.RS_X ),
padY = ig.game.gamepad.getAxeValue( ig.DUALSHOCK_AXE.RS_Y );
if( false !== padX && false !== padY ) {
this.vel.x = this.maxVel.x * Number(padX);
this.vel.y = this.maxVel.y * Number(padY);
} else {
// ...
}
// ...
},
```### Multiplayer / Multi-gamepad
```javascript
player1gamepad: new ig.GamepadDualshock( 0 ),
player2gamepad: new ig.GamepadDualshock( 1 ),
player3gamepad: new ig.GamepadDualshock( 2 ),
// ...
```## Documentation
### Constantes
* **ig.DUALSHOCK_KEY.** *(eg: `ig.DUALSHOCK_KEY.CROSS`)*
* `UP`, `RIGHT`, `DOWN`, `LEFT`,
* `TRIANGLE`, `CIRCLE`, `CROSS`, `SQUARE`,
* `L1`, `L2`, `R1`, `R2`,
* `SELECT` or `SHARE`, `START` or `OPTIONS`, *DS3* or *DS4*
* `PS`,
* `TOUCHPAD`, *DS4 only*
* `L3`, `LS_LEFT`, `LS_RIGHT`, `LS_UP`, `LS_DOWN`, *Left stick*
* `R3`, `RS_LEFT`, `RS_RIGHT`, `RS_UP`, `RS_DOWN`. *Right stick*
* **ig.DUALSHOCK_AXE.** *(eg: `ig.DUALSHOCK_AXE.RS_X`)*
* `LS_X`, `LS_Y`,
* `RS_X`, `RS_Y`,
* `DPAD_X`, `DPAD_Y`, *DS4 only*
* `L2`, `R2`. *DS4 only*### Properties
* **axePrecision**: `Number` *(`4` by default)* The number of digits to appear after the decimal point.
* **axeLimit**: `Number` *(`0.5` by default)* Value of the axe when the button is pressed.
* **index**: `Number` *(`0` by default)* Gamepad index.
* **controller**: `Gamepad` *(`false` by default)* The plugin detects automatically this property.
* **version**: `Number` *(`0` by default)* Dualshock version `3` or `4`. The plugin detects automatically this property.### Methods
* **bind**: Bind the button of the Dualshock with an action.
* *padKey*: `Number` See: `ig.DUALSHOCK_KEY.`.
* *action*: `String` Action name. See: `ig.input.pressed( )`.
* **unbind**: Unbind the button of the Dualshock with an action.
* *padKey*: `Number` See: `ig.DUALSHOCK_KEY.`.
* **unbindAll**: Remove all bindings.
* **mapping**: Mapping the button of the Dualshock with the keyboard.
* *padKey*: `Number` See: `ig.DUALSHOCK_KEY.`.
* *key*: `Number` See: `ig.KEY.`
* **unmapping** Remove the mapping button of the Dualshock with the keyboard.
* *padKey*: `Number` See: `ig.DUALSHOCK_KEY.`.
* **unmappingAll** Remove all mappings.
* **getAxeValue**: `Number` Return the axe value.
* *axe*: `Number` See: `ig.DUALSHOCK_AXE.`
* **getName**: Return the gamepad name's `id`.## Changelog
**Version 2.2.1**
* `FIXED`: Optimization.**Version 2.2.0**
* `ADDED`: Method: `getAxeValue`.
* `ADDED`: `ig.Game` automatically `update` the gamepads.**Version 2.1.0**
* `ADDED`: Methods: `bind`, `unbind`, `unbindAll`.
* `ADDED`: Methods: `unmapping`, `unmappingAll`.**Version 2.0.0**
* `ADDED`: Multi-gamepad supported.
* `ADDED`: Playstation Dualshock 4 supported.
* `FIXED`: Opera supported.**Version 1.0.0**
* `ADDED`: Mozilla Firefox and Google Chrome supported.
* `ADDED`: Playstation Dualshock 3 supported.## Ressources
* https://developer.mozilla.org/en-US/docs/Web/Guide/API/Gamepad
* http://luser.github.io/gamepadtest/Note: As of Firefox 24, the Gamepad API is available behind a preference.
You can enable it by loading **about:config** and setting the **dom.gamepad.enabled** preference to **true**.