@@ -39,7 +39,8 @@ module.exports.Component = registerComponent('generic-tracked-controller-control
3939 hand : { default : '' } , // This informs the degenerate arm model.
4040 defaultModel : { default : true } ,
4141 defaultModelColor : { default : 'gray' } ,
42- orientationOffset : { type : 'vec3' }
42+ orientationOffset : { type : 'vec3' } ,
43+ disabled : { default : false }
4344 } ,
4445
4546 /**
@@ -64,9 +65,19 @@ module.exports.Component = registerComponent('generic-tracked-controller-control
6465 this . onButtonTouchStart = function ( evt ) { onButtonEvent ( evt . detail . id , 'touchstart' , self ) ; } ;
6566 this . onButtonTouchEnd = function ( evt ) { onButtonEvent ( evt . detail . id , 'touchend' , self ) ; } ;
6667 this . controllerPresent = false ;
68+ this . wasControllerConnected = false ;
6769 this . lastControllerCheck = 0 ;
6870 this . rendererSystem = this . el . sceneEl . systems . renderer ;
6971 this . bindMethods ( ) ;
72+
73+ // generic-tracked-controller-controls has the lowest precedence.
74+ // We must diable this component if there are more specialized controls components.
75+ this . el . addEventListener ( 'controllerconnected' , function ( evt ) {
76+ if ( evt . detail . name === self . name ) { return ; }
77+ self . wasControllerConnected = true ;
78+ self . removeEventListeners ( ) ;
79+ self . removeControllersUpdateListener ( ) ;
80+ } ) ;
7081 } ,
7182
7283 addEventListeners : function ( ) {
@@ -100,6 +111,7 @@ module.exports.Component = registerComponent('generic-tracked-controller-control
100111 } ,
101112
102113 play : function ( ) {
114+ if ( this . wasControllerConnected ) { return ; }
103115 this . checkIfControllerPresent ( ) ;
104116 this . addControllersUpdateListener ( ) ;
105117 } ,
@@ -112,6 +124,7 @@ module.exports.Component = registerComponent('generic-tracked-controller-control
112124 injectTrackedControls : function ( ) {
113125 var el = this . el ;
114126 var data = this . data ;
127+
115128 // Do nothing if tracked-controls already set.
116129 // Generic controls have the lowest precedence.
117130 if ( this . el . components [ 'tracked-controls' ] ) {
0 commit comments