@@ -117,11 +117,22 @@ module.exports.AScene = registerElement('a-scene', {
117117 this . onVRPresentChangeBound = bind ( this . onVRPresentChange , this ) ;
118118 window . addEventListener ( 'vrdisplaypresentchange' , this . onVRPresentChangeBound ) ;
119119
120+ // bind functions
121+ this . enterVRBound = function ( ) { self . enterVR ( ) ; } ;
122+ this . exitVRBound = function ( ) { self . exitVR ( ) ; } ;
123+ this . exitVRTrueBound = function ( ) { self . exitVR ( true ) ; } ;
124+
120125 // Enter VR on `vrdisplayactivate` (e.g. putting on Rift headset).
121- window . addEventListener ( 'vrdisplayactivate' , function ( ) { self . enterVR ( ) ; } ) ;
126+ window . addEventListener ( 'vrdisplayactivate' , this . enterVRBound ) ;
122127
123128 // Exit VR on `vrdisplaydeactivate` (e.g. taking off Rift headset).
124- window . addEventListener ( 'vrdisplaydeactivate' , function ( ) { self . exitVR ( ) ; } ) ;
129+ window . addEventListener ( 'vrdisplaydeactivate' , this . exitVRBound ) ;
130+
131+ // Enter VR on `vrdisplayconnect` (e.g. plugging on Rift headset).
132+ window . addEventListener ( 'vrdisplayconnect' , this . enterVRBound ) ;
133+
134+ // Exit VR on `vrdisplaydisconnect` (e.g. unplugging Rift headset).
135+ window . addEventListener ( 'vrdisplaydisconnect' , this . exitVRTrueBound ) ;
125136 } ,
126137 writable : window . debug
127138 } ,
@@ -165,6 +176,10 @@ module.exports.AScene = registerElement('a-scene', {
165176 scenes . splice ( sceneIndex , 1 ) ;
166177
167178 window . removeEventListener ( 'vrdisplaypresentchange' , this . onVRPresentChangeBound ) ;
179+ window . removeEventListener ( 'vrdisplayactivate' , this . enterVRBound ) ;
180+ window . removeEventListener ( 'vrdisplaydeactivate' , this . exitVRBound ) ;
181+ window . removeEventListener ( 'vrdisplayconnect' , this . enterVRBound ) ;
182+ window . removeEventListener ( 'vrdisplaydisconnect' , this . exitVRTrueBound ) ;
168183 }
169184 } ,
170185
@@ -249,7 +264,8 @@ module.exports.AScene = registerElement('a-scene', {
249264 throw new Error ( 'Failed to enter VR mode (`requestPresent`).' ) ;
250265 }
251266 }
252- }
267+ } ,
268+ writable : window . debug
253269 } ,
254270 /**
255271 * Call `exitPresent` if WebVR or WebVR polyfill.
@@ -298,7 +314,8 @@ module.exports.AScene = registerElement('a-scene', {
298314 throw new Error ( 'Failed to exit VR mode (`exitPresent`).' ) ;
299315 }
300316 }
301- }
317+ } ,
318+ writable : window . debug
302319 } ,
303320
304321 /**
0 commit comments