Skip to content

Commit

Permalink
Gracefully handles when Document's Permission Policy does not allow c…
Browse files Browse the repository at this point in the history
…alling getGamepads() from the context (such as an IFRAME).
  • Loading branch information
DougReeder committed Sep 28, 2024
1 parent 4449ed5 commit f7338f3
Showing 1 changed file with 20 additions and 16 deletions.
36 changes: 20 additions & 16 deletions src/systems/tracked-controls-webvr.js
Original file line number Diff line number Diff line change
Expand Up @@ -41,26 +41,30 @@ module.exports.System = registerSystem('tracked-controls-webvr', {
* Update controller list.
*/
updateControllerList: function () {
var controllers = this.controllers;
var gamepad;
var gamepads;
var i;
var prevCount;
try {
var controllers = this.controllers;
var gamepad;
var gamepads;
var i;
var prevCount;

gamepads = navigator.getGamepads && navigator.getGamepads();
if (!gamepads) { return; }
gamepads = navigator.getGamepads && navigator.getGamepads();
if (!gamepads) { return; }

prevCount = controllers.length;
controllers.length = 0;
for (i = 0; i < gamepads.length; ++i) {
gamepad = gamepads[i];
if (gamepad && gamepad.pose) {
controllers.push(gamepad);
prevCount = controllers.length;
controllers.length = 0;
for (i = 0; i < gamepads.length; ++i) {
gamepad = gamepads[i];
if (gamepad && gamepad.pose) {
controllers.push(gamepad);
}
}
}

if (controllers.length !== prevCount) {
this.el.emit('controllersupdated', undefined, false);
if (controllers.length !== prevCount) {
this.el.emit('controllersupdated', undefined, false);
}
} catch (e) {
console.warn('can\'t update controller list:', e);
}
}
});

0 comments on commit f7338f3

Please sign in to comment.