Как создавать компоненты только для XR

Многие компоненты необходимы только при входе в VR или AR сеанс.

Чтобы гарантировать, что компоненты не обновляются вне XR сеансов, вы можете использовать следующий код:

import {Component} from '@wonderlandengine/api';

export class ActiveOnlyInVr extends Component {
  static TypeName = 'active-only-in-vr';

  start() {
    this.engine.onXRSessionStart.add(this.onXRSessionStart);
    this.engine.onXRSessionEnd.add(this.onXRSessionEnd);

    /* Сеанс, возможно, уже активен */
    this.active = !!this.engine.xr;
  }

  onDestroy() {
    this.engine.onXRSessionStart.remove(this.onXRSessionStart);
    this.engine.onXRSessionEnd.remove(this.onXRSessionEnd);
  }

  update() {
    /* Вызывается только когда xrSession действителен */
  }

  onXRSessionStart = s => {
    this.active = true;
  };

  onXRSessionEnd = s => {
    this.active = false;
  };
});

(Де-)Активировать другие компоненты 

Если вы хотите отключать/включать другие компоненты в зависимости от состояния сеанса без изменения их кода, вы можете использовать компоненты vr-active-mode-switch, которые будут отключать/включать компоненты в зависимости от того, находится ли пользователь в XR сеансе или нет.