@@ -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