Skip to content

Commit 2590f6e

Browse files
committed
WebVR: Implemented Exit VR. See mrdoob#8565
1 parent 0d81c76 commit 2590f6e

File tree

2 files changed

+20
-10
lines changed

2 files changed

+20
-10
lines changed

examples/js/WebVR.js

100644100755
Lines changed: 10 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -72,8 +72,9 @@ var WEBVR = {
7272

7373
var button = document.createElement( 'button' );
7474
button.style.position = 'absolute';
75-
button.style.left = 'calc(50% - 30px)';
75+
button.style.left = 'calc(50% - 50px)';
7676
button.style.bottom = '20px';
77+
button.style.width = '100px';
7778
button.style.border = '0';
7879
button.style.padding = '8px';
7980
button.style.cursor = 'pointer';
@@ -82,14 +83,21 @@ var WEBVR = {
8283
button.style.fontFamily = 'sans-serif';
8384
button.style.fontSize = '13px';
8485
button.style.fontStyle = 'normal';
86+
button.style.textAlign = 'center';
8587
button.style.zIndex = '999';
8688
button.textContent = 'ENTER VR';
8789
button.onclick = function() {
8890

89-
effect.setFullScreen( true );
91+
effect.isPresenting ? effect.exitPresent() : effect.requestPresent();
9092

9193
};
9294

95+
window.addEventListener( 'vrdisplaypresentchange', function ( event ) {
96+
97+
button.textContent = effect.isPresenting ? 'EXIT VR' : 'ENTER VR';
98+
99+
}, false );
100+
93101
return button;
94102

95103
}

examples/js/effects/VREffect.js

Lines changed: 10 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -59,9 +59,10 @@ THREE.VREffect = function ( renderer, onError ) {
5959

6060
//
6161

62+
this.isPresenting = false;
6263
this.scale = 1;
6364

64-
var isPresenting = false;
65+
var scope = this;
6566

6667
var rendererSize = renderer.getSize();
6768
var rendererPixelRatio = renderer.getPixelRatio();
@@ -70,7 +71,7 @@ THREE.VREffect = function ( renderer, onError ) {
7071

7172
rendererSize = { width: width, height: height };
7273

73-
if ( isPresenting ) {
74+
if ( scope.isPresenting ) {
7475

7576
var eyeParamsL = vrHMD.getEyeParameters( 'left' );
7677
renderer.setPixelRatio( 1 );
@@ -104,16 +105,16 @@ THREE.VREffect = function ( renderer, onError ) {
104105

105106
function onFullscreenChange () {
106107

107-
var wasPresenting = isPresenting;
108-
isPresenting = vrHMD !== undefined && ( vrHMD.isPresenting || ( isDeprecatedAPI && document[ fullscreenElement ] instanceof window.HTMLElement ) );
108+
var wasPresenting = scope.isPresenting;
109+
scope.isPresenting = vrHMD !== undefined && ( vrHMD.isPresenting || ( isDeprecatedAPI && document[ fullscreenElement ] instanceof window.HTMLElement ) );
109110

110-
if ( wasPresenting === isPresenting ) {
111+
if ( wasPresenting === scope.isPresenting ) {
111112

112113
return;
113114

114115
}
115116

116-
if ( isPresenting ) {
117+
if ( scope.isPresenting ) {
117118

118119
rendererPixelRatio = renderer.getPixelRatio();
119120
rendererSize = renderer.getSize();
@@ -180,7 +181,8 @@ THREE.VREffect = function ( renderer, onError ) {
180181
return;
181182

182183
}
183-
if ( isPresenting === boolean ) {
184+
185+
if ( scope.isPresenting === boolean ) {
184186

185187
resolve();
186188
return;
@@ -241,7 +243,7 @@ THREE.VREffect = function ( renderer, onError ) {
241243

242244
this.render = function ( scene, camera ) {
243245

244-
if ( vrHMD && isPresenting ) {
246+
if ( vrHMD && scope.isPresenting ) {
245247

246248
var autoUpdate = scene.autoUpdate;
247249

0 commit comments

Comments
 (0)