Как создавать компоненты только для 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 сеансе или нет.