Skip to content

Instantly share code, notes, and snippets.

@kg
Created September 6, 2012 02:57
Show Gist options
  • Select an option

  • Save kg/3650351 to your computer and use it in GitHub Desktop.

Select an option

Save kg/3650351 to your computer and use it in GitHub Desktop.
Fix gamepad.js in Chrome 22+
gamepad_uncompressed.js | 69 ++++++++++++++---------------------------------
1 file changed, 20 insertions(+), 49 deletions(-)
diff --git a/gamepad_uncompressed.js b/gamepad_uncompressed.js
index 5eb7a02..237a154 100644
--- a/gamepad_uncompressed.js
+++ b/gamepad_uncompressed.js
@@ -4,6 +4,10 @@
var getField = function() {
return navigator.webkitGamepads || navigator.mozGamepads || navigator.gamepads;
};
+
+ var getFunction = function () {
+ return navigator.webkitGetGamepads || navigator.mozGetGamepads || navigator.getGamepads;
+ };
var Item = function() {
this.leftStickX = 0.0;
@@ -125,8 +129,17 @@
Gamepad.getPreviousStates = function() {
return prevData;
};
+ Gamepad.getRawState = function () {
+ var getRawPads = getFunction();
+ var rawPads = getField();
+ if ((!rawPads) && (getRawPads)) {
+ rawPads = getRawPads.call(navigator)
+ }
+ return rawPads;
+ }
Gamepad.getStates = function() {
- var rawPads = getField()
+ var rawPads = Gamepad.getRawState();
+
var len = rawPads.length;
for (var i = 0; i < len; ++i) {
mapIndividualPad(rawPads, i);
@@ -141,11 +154,12 @@
return prevData[i];
};
Gamepad.getState = function(i) {
- var rawPads = getField();
+ var rawPads = Gamepad.getRawState();
+
mapIndividualPad(rawPads, i);
return curData[i];
};
- Gamepad.supported = getField() != undefined;
+ Gamepad.supported = (getField() != undefined) || (getFunction() != undefined);
// todo; These sort of seems like it could be data, but there's actually a
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment