Skip to content

Commit 6ff1d1b

Browse files
committed
WebXRManager: Use async/await in setSession().
1 parent 5f66b71 commit 6ff1d1b

File tree

3 files changed

+14
-23
lines changed

3 files changed

+14
-23
lines changed

examples/jsm/webxr/ARButton.js

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -8,12 +8,12 @@ class ARButton {
88

99
let currentSession = null;
1010

11-
function onSessionStarted( session ) {
11+
async function onSessionStarted( session ) {
1212

1313
session.addEventListener( 'end', onSessionEnded );
1414

1515
renderer.xr.setReferenceSpaceType( 'local' );
16-
renderer.xr.setSession( session );
16+
await renderer.xr.setSession( session );
1717
button.textContent = 'STOP AR';
1818

1919
currentSession = session;

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)