Skip to content

Commit 156e9af

Browse files
authored
Merge pull request #20754 from Mugen87/dev51
WebXRManager: Use async/await in setSession().
2 parents 8091046 + f8338e5 commit 156e9af

File tree

3 files changed

+15
-23
lines changed

3 files changed

+15
-23
lines changed

examples/jsm/webxr/ARButton.js

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -40,13 +40,14 @@ class ARButton {
4040

4141
let currentSession = null;
4242

43-
function onSessionStarted( session ) {
43+
async function onSessionStarted( session ) {
4444

4545
session.addEventListener( 'end', onSessionEnded );
4646

4747
renderer.xr.setReferenceSpaceType( 'local' );
48-
renderer.xr.setSession( session );
4948

49+
await renderer.xr.setSession( session );
50+
5051
button.textContent = 'STOP AR';
5152
sessionInit.domOverlay.root.style.display = '';
5253

examples/jsm/webxr/VRButton.js

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -14,11 +14,11 @@ class VRButton {
1414

1515
let currentSession = null;
1616

17-
function onSessionStarted( session ) {
17+
async function onSessionStarted( session ) {
1818

1919
session.addEventListener( 'end', onSessionEnded );
2020

21-
renderer.xr.setSession( session );
21+
await renderer.xr.setSession( session );
2222
button.textContent = 'EXIT VR';
2323

2424
currentSession = session;

src/renderers/webxr/WebXRManager.js

Lines changed: 10 additions & 19 deletions
Original file line numberDiff line numberDiff line change
@@ -128,19 +128,6 @@ function WebXRManager( renderer, gl ) {
128128

129129
}
130130

131-
function onRequestReferenceSpace( value ) {
132-
133-
referenceSpace = value;
134-
135-
animation.setContext( session );
136-
animation.start();
137-
138-
scope.isPresenting = true;
139-
140-
scope.dispatchEvent( { type: 'sessionstart' } );
141-
142-
}
143-
144131
this.setFramebufferScaleFactor = function ( value ) {
145132

146133
framebufferScaleFactor = value;
@@ -177,7 +164,7 @@ function WebXRManager( renderer, gl ) {
177164

178165
};
179166

180-
this.setSession = function ( value ) {
167+
this.setSession = async function ( value ) {
181168

182169
session = value;
183170

@@ -190,12 +177,13 @@ function WebXRManager( renderer, gl ) {
190177
session.addEventListener( 'squeezestart', onSessionEvent );
191178
session.addEventListener( 'squeezeend', onSessionEvent );
192179
session.addEventListener( 'end', onSessionEnd );
180+
session.addEventListener( 'inputsourceschange', onInputSourcesChange );
193181

194182
const attributes = gl.getContextAttributes();
195183

196184
if ( attributes.xrCompatible !== true ) {
197185

198-
gl.makeXRCompatible();
186+
await gl.makeXRCompatible();
199187

200188
}
201189

@@ -212,17 +200,20 @@ function WebXRManager( renderer, gl ) {
212200

213201
session.updateRenderState( { baseLayer: baseLayer } );
214202

215-
session.requestReferenceSpace( referenceSpaceType ).then( onRequestReferenceSpace );
203+
referenceSpace = await session.requestReferenceSpace( referenceSpaceType );
204+
205+
animation.setContext( session );
206+
animation.start();
216207

217-
//
208+
scope.isPresenting = true;
218209

219-
session.addEventListener( 'inputsourceschange', updateInputSources );
210+
scope.dispatchEvent( { type: 'sessionstart' } );
220211

221212
}
222213

223214
};
224215

225-
function updateInputSources( event ) {
216+
function onInputSourcesChange( event ) {
226217

227218
const inputSources = session.inputSources;
228219

0 commit comments

Comments
 (0)