Skip to content

Commit f1401f3

Browse files
Reuse existing controllerObj on reconnect. Remove event handlers on disconnect.
1 parent 3766653 commit f1401f3

File tree

1 file changed

+32
-0
lines changed

1 file changed

+32
-0
lines changed

‎index.js‎

Lines changed: 32 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -27,6 +27,18 @@ AFRAME.registerSystem('input-mapping', {
2727

2828
// Controllers
2929
this.sceneEl.addEventListener('controllerconnected', function (event) {
30+
var matchedController = self.findMatchingControllerForHand(
31+
self.loadedControllers,
32+
event.detail.component.data.hand
33+
);
34+
35+
if (matchedController){
36+
if (matchedController !== undefined){
37+
self.updateControllersListeners(matchedController);
38+
return;
39+
}
40+
}
41+
3042
var controllerObj = {
3143
name: event.detail.name,
3244
hand: event.detail.component.data.hand,
@@ -38,10 +50,30 @@ AFRAME.registerSystem('input-mapping', {
3850
self.updateControllersListeners(controllerObj);
3951
});
4052

53+
this.sceneEl.addEventListener('controllerdisconnected', function(event) {
54+
var controller = self.findMatchingControllerForHand(
55+
self.loadedControllers,
56+
event.detail.component.data.hand
57+
);
58+
self.removeControllerListeners(controller);
59+
});
60+
4161
// Keyboard
4262
this.addKeyboardListeners();
4363
},
4464

65+
findMatchingControllerForHand: function(controllers, filterHand) {
66+
var controller;
67+
var i;
68+
for (i = 0; i < controllers.length; i++) {
69+
controller = controllers[i];
70+
if (controller.hand === filterHand) {
71+
return controller;
72+
}
73+
}
74+
return undefined;
75+
},
76+
4577
addKeyboardListeners: function () {
4678
document.addEventListener('keyup', this.keyboardHandler);
4779
document.addEventListener('keydown', this.keyboardHandler);

0 commit comments

Comments
 (0)