-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathwebvrhelper.min.js
12 lines (12 loc) · 8.49 KB
/
webvrhelper.min.js
1
2
3
4
5
6
7
8
9
10
11
12
/*!
*
* webvr-helper v1.0.7
* https://github.com/axaq/webvr-helper
*
* Copyright (c) Hakan Karlidag (https://twitter.com/axaq) (https://github.com/axaq)
*
* This source code is licensed under the MIT license found in the
* LICENSE file in the root directory of this source tree.
*
*/
!function(e,t){"object"==typeof exports&&"object"==typeof module?module.exports=t():"function"==typeof define&&define.amd?define([],t):"object"==typeof exports?exports.WebVRHelper=t():e.WebVRHelper=t()}(window,(function(){return function(e){var t={};function n(s){if(t[s])return t[s].exports;var i=t[s]={i:s,l:!1,exports:{}};return e[s].call(i.exports,i,i.exports,n),i.l=!0,i.exports}return n.m=e,n.c=t,n.d=function(e,t,s){n.o(e,t)||Object.defineProperty(e,t,{enumerable:!0,get:s})},n.r=function(e){"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(e,"__esModule",{value:!0})},n.t=function(e,t){if(1&t&&(e=n(e)),8&t)return e;if(4&t&&"object"==typeof e&&e&&e.__esModule)return e;var s=Object.create(null);if(n.r(s),Object.defineProperty(s,"default",{enumerable:!0,value:e}),2&t&&"string"!=typeof e)for(var i in e)n.d(s,i,function(t){return e[t]}.bind(null,i));return s},n.n=function(e){var t=e&&e.__esModule?function(){return e.default}:function(){return e};return n.d(t,"a",t),t},n.o=function(e,t){return Object.prototype.hasOwnProperty.call(e,t)},n.p="",n(n.s=0)}([function(e,t,n){"use strict";n.r(t);var s={supportsXR:!1,supportsVR:!1,supportsStereoView:!1,renderer:null,sessionChangeCallback:null,onVRAvailabilityCallback:null,currentXRSession:null,currentVRDisplay:null,sessionActive:!1,stereoEffectActive:!1,fullscreenSupported:!1,checkAvailabilityLoose:function(){return"xr"in navigator&&"supportsSession"in navigator.xr||"getVRDisplays"in navigator||navigator.userAgent.match(/SamsungBrowser|OculusBrowser|Firefox/i)&&navigator.userAgent.match(/Mobile VR/i)||this.checkFullscreenSupport()},checkAvailabilityFull:function(e){this.onVRAvailabilityCallback=e,this.checkXRAvailability()},postAvailabilitySetup:function(e,t,n,s,i){return e?(this.renderer=e,this.StereoEffectClass=t||(window.THREE?window.THREE.StereoEffect:null),this.supportsStereoView&&!this.StereoEffectClass?(console.error("Supports Stereo View but StereoEffect class hasn't been passed. Aborting!"),void(this.supportsStereoView=!1)):(this.sessionChangeCallback=n,!!i&&"setReferenceSpaceType"in this.renderer.vr&&this.renderer.vr.setReferenceSpaceType(i),!!s&&"SamsungChangeSky"in window&&window.SamsungChangeSky(s),void(this.supportsXR?(this.onXRSessionStarted=function(e){e.addEventListener("end",this.onXRSessionEnded),this.renderer.vr.setSession(e),this.currentXRSession=e,this.sessionActive=!0,this.sessionChangeCallback&&this.sessionChangeCallback()}.bind(this),this.onXRSessionEnded=function(){this.currentXRSession.removeEventListener("end",this.onXRSessionEnded),this.renderer.vr.setSession(null),this.currentXRSession=null,this.sessionActive=!1,this.sessionChangeCallback&&this.sessionChangeCallback()}.bind(this),this.errorOnXRSessionRequest=function(e){console.log("Error while requesting XR session. Removing XR support flag.",e),this.supportsXR=!1}.bind(this)):this.supportsVR?(this.renderer.vr.enabled=!0,this.onVRDisplayConnectDisconnect=function(e){this.currentVRDisplay=e,this.renderer.vr.setDevice(this.currentVRDisplay),this.sessionChangeCallback&&this.sessionChangeCallback()},window.addEventListener("vrdisplayconnect",function(e){this.onVRDisplayConnectDisconnect(e.display)}.bind(this),!1),window.addEventListener("vrdisplaydisconnect",function(){this.onVRDisplayConnectDisconnect(null)}.bind(this),!1),window.addEventListener("vrdisplaypresentchange",function(e){this.sessionActive=e.display.isPresenting,this.sessionChangeCallback&&this.sessionChangeCallback()}.bind(this),!1),window.addEventListener("vrdisplayactivate",function(e){e.display.requestPresent([{source:this.renderer.domElement}])}.bind(this),!1)):this.supportsStereoView&&(this.isInFullScreen=function(){return document.fullscreenElement&&null!==document.fullscreenElement||document.webkitFullscreenElement&&null!==document.webkitFullscreenElement||document.mozFullScreenElement&&null!==document.mozFullScreenElement||document.msFullscreenElement&&null!==document.msFullscreenElement},this.enterExitFullscreen=function(e){e?document.documentElement.requestFullscreen?document.documentElement.requestFullscreen():document.documentElement.msRequestFullscreen?document.documentElement.msRequestFullscreen():document.documentElement.mozRequestFullScreen?document.documentElement.mozRequestFullScreen():document.documentElement.webkitRequestFullscreen&&document.documentElement.webkitRequestFullscreen():document.exitFullscreen?document.exitFullscreen():document.msExitFullscreen?document.msExitFullscreen():document.mozCancelFullScreen?document.mozCancelFullScreen():document.webkitExitFullscreen&&document.webkitExitFullscreen()},this.onFullscreenChange=function(){!this.isInFullScreen()&&this.stereoEffectActive&&this.startStopVRSession()}.bind(this),document.documentElement.requestFullscreen?document.documentElement.addEventListener("fullscreenchange",this.onFullscreenChange):document.documentElement.msRequestFullscreen?document.documentElement.addEventListener("msfullscreenchange",this.onFullscreenChange):document.documentElement.mozRequestFullScreen?document.documentElement.addEventListener("mozfullscreenchange",this.onFullscreenChange):document.documentElement.webkitRequestFullscreen&&document.documentElement.addEventListener("webkitfullscreenchange",this.onFullscreenChange))))):void console.error("three.js renderer is not found. Aborting!")},checkFullscreenSupport:function(){return this.fullscreenSupported=this.fullscreenSupported||!!(document.documentElement.requestFullscreen||document.documentElement.msRequestFullscreen||document.documentElement.mozRequestFullScreen||document.documentElement.webkitRequestFullscreen),this.fullscreenSupported},checkXRAvailability:function(){"xr"in navigator&&"supportsSession"in navigator.xr?navigator.xr.supportsSession("immersive-vr").then(function(){this.supportsXR=!0,this.endOfAvailabilityCheck()}.bind(this)).catch(function(e){console.log("Error while checking native XR support. Moving on to checking native legacy VR support.",e),this.checkLegacyVRAvailability()}.bind(this)):this.checkLegacyVRAvailability()},checkLegacyVRAvailability:function(){"getVRDisplays"in navigator?navigator.getVRDisplays().then(function(e){0<e.length?(this.currentVRDisplay=e[0],this.supportsVR=!0,this.endOfAvailabilityCheck()):this.checkStereoViewAvailability()}.bind(this)).catch(function(e){console.log("Error while checking native legacy VR support. Moving on to checking three.js stereo view support.",e),this.checkStereoViewAvailability()}.bind(this)):this.checkStereoViewAvailability()},checkStereoViewAvailability:function(){this.supportsStereoView=this.checkFullscreenSupport(),this.endOfAvailabilityCheck()},endOfAvailabilityCheck:function(){console.log("supportsXR: "+this.supportsXR),console.log("supportsVR: "+this.supportsVR),console.log("supportsStereoView: "+this.supportsStereoView),this.onVRAvailabilityCallback&&this.onVRAvailabilityCallback(this.isAnyVRSupported())},startStopVRSession:function(){this.supportsXR?null===this.currentXRSession?navigator.xr.requestSession("immersive-vr").then(this.onXRSessionStarted).catch(this.errorOnXRSessionRequest):this.currentXRSession.end():this.supportsVR&&this.currentVRDisplay?this.currentVRDisplay.isPresenting?this.currentVRDisplay.exitPresent():(this.renderer.vr.setDevice(this.currentVRDisplay),this.currentVRDisplay.requestPresent([{source:this.renderer.domElement}])):this.supportsStereoView&&(this.stereoEffectActive=!this.stereoEffectActive,this.stereoEffectActive?(!this.currentStereoEffect&&(this.currentStereoEffect=new this.StereoEffectClass(this.renderer)),this.currentStereoEffect.setSize(window.innerWidth,window.innerHeight),this.currentStereoEffect.setEyeSeparation(.03175),this.enterExitFullscreen(!0)):(this.currentStereoEffect=null,this.renderer.setSize(window.innerWidth,window.innerHeight,!1)),this.sessionChangeCallback&&this.sessionChangeCallback())},isAnyVRSupported:function(){return this.supportsXR||this.supportsVR||this.supportsStereoView},inVRView:function(){return this.stereoEffectActive||this.sessionActive},onResize:function(){this.stereoEffectActive&&this.currentStereoEffect&&this.currentStereoEffect.setSize(window.innerWidth,window.innerHeight)},render:function(e,t){this.stereoEffectActive&&this.currentStereoEffect?this.currentStereoEffect.render(e,t):this.renderer.render(e,t)}};t.default=s}])}));