MCPcopy
hub / github.com/aframevr/aframe / checkControllerPresentAndSetup

Function checkControllerPresentAndSetup

src/utils/tracked-controls.js:13–44  ·  view source on GitHub ↗
(component, idPrefix, queryObject)

Source from the content-addressed store, hash-verified

11 * @param {object} queryObject - Map of values to match.
12 */
13export function checkControllerPresentAndSetup (component, idPrefix, queryObject) {
14 var el = component.el;
15 var controller;
16 var isControllerPresent = isControllerPresentWebXR;
17 var isPresent;
18
19 controller = isControllerPresent(component, idPrefix, queryObject);
20 isPresent = !!controller;
21
22 // Nothing changed, no need to do anything.
23 if (isPresent === component.controllerPresent) { return isPresent; }
24
25 component.controllerPresent = isPresent;
26
27 // Update controller presence.
28 if (isPresent) {
29 component.addEventListeners();
30 // On reconnect, injectTrackedControls calls setAttribute('tracked-controls', ...)
31 // with unchanged data so update/updateController is skipped.
32 // tracked-controls' own controllersupdated listener would call updateController,
33 // but it was registered after the specific controller component's listener
34 // (e.g. meta-touch-controls) so it fires too late.
35 // Explicitly call updateController before emitting controllerconnected.
36 var trackedControls = el.components['tracked-controls'];
37 component.injectTrackedControls(controller);
38 if (trackedControls) { trackedControls.updateController(); }
39 el.emit('controllerconnected', {name: component.name, component: component});
40 } else {
41 component.removeEventListeners();
42 el.emit('controllerdisconnected', {name: component.name, component: component});
43 }
44}
45
46/**
47 *

Calls 1

emitMethod · 0.80

Tested by

no test coverage detected