Skip to content

Commit d044b82

Browse files
authored
fixed generic controller contention with other controllers (#4784)
* fixed generic controller contention with other controllers * reverted local changes * disabled -> controllerConnected * added init for controllerCOnntected
1 parent 438812c commit d044b82

File tree

1 file changed

+14
-1
lines changed

1 file changed

+14
-1
lines changed

src/components/generic-tracked-controller-controls.js

Lines changed: 14 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -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

Comments
 (0)