WebVR.js 3.1 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134
  1. /**
  2. * @author mrdoob / http://mrdoob.com
  3. * @author Mugen87 / https://github.com/Mugen87
  4. *
  5. * Based on @tojiro's vr-samples-utils.js
  6. */
  7. var WEBVR = {
  8. createButton: function ( renderer ) {
  9. function showEnterVR() {
  10. button.style.cursor = 'pointer';
  11. button.style.left = 'calc(50% - 50px)';
  12. button.style.width = '100px';
  13. button.textContent = 'ENTER VR';
  14. }
  15. function showVRNotFound() {
  16. button.style.cursor = 'auto';
  17. button.style.left = 'calc(50% - 75px)';
  18. button.style.width = '150px';
  19. button.textContent = 'VR NOT FOUND';
  20. }
  21. if ( 'getVRDisplays' in navigator ) {
  22. var button = document.createElement( 'button' );
  23. button.style.position = 'absolute';
  24. button.style.bottom = '20px';
  25. button.style.border = '1px solid #fff';
  26. button.style.padding = '12px 6px';
  27. button.style.backgroundColor = 'transparent';
  28. button.style.color = '#fff';
  29. button.style.fontFamily = 'sans-serif';
  30. button.style.fontSize = '13px';
  31. button.style.fontStyle = 'normal';
  32. button.style.textAlign = 'center';
  33. button.style.zIndex = '999';
  34. showVRNotFound();
  35. window.addEventListener( 'vrdisplayconnect', function ( event ) {
  36. console.log( event.display.isConnected );
  37. var display = event.display;
  38. showEnterVR();
  39. button.onclick = function () {
  40. display.isPresenting ? display.exitPresent() : display.requestPresent( [ { source: renderer.domElement } ] );
  41. };
  42. renderer.vr.setDevice( display );
  43. }, false );
  44. window.addEventListener( 'vrdisplaydisconnect', function ( event ) {
  45. console.log( event );
  46. console.log( event.display.isConnected );
  47. showVRNotFound();
  48. button.onclick = null;
  49. renderer.vr.setDevice( null );
  50. }, false );
  51. window.addEventListener( 'vrdisplaypresentchange', function ( event ) {
  52. var display = event.display;
  53. button.textContent = display.isPresenting ? 'EXIT VR' : 'ENTER VR';
  54. }, false );
  55. return button;
  56. } else {
  57. var message = document.createElement( 'div' );
  58. message.style.position = 'absolute';
  59. message.style.left = 'calc(50% - 90px)';
  60. message.style.bottom = '20px';
  61. message.style.width = '180px';
  62. message.style.fontFamily = 'sans-serif';
  63. message.style.fontSize = '13px';
  64. message.style.fontStyle = 'normal';
  65. message.style.backgroundColor = '#fff';
  66. message.style.color = '#000';
  67. message.style.padding = '12px 6px';
  68. message.style.textAlign = 'center';
  69. message.style.zIndex = '999';
  70. message.innerHTML = '<a href="https://webvr.info">WEBVR</a> NOT SUPPORTED';
  71. return message;
  72. }
  73. },
  74. // DEPRECATED
  75. checkAvailability: function () {
  76. console.warn( 'WEBVR.checkAvailability has been deprecated.' );
  77. return new Promise( function () {} );
  78. },
  79. getMessageContainer: function () {
  80. console.warn( 'WEBVR.getMessageContainer has been deprecated.' );
  81. return document.createElement( 'div' );
  82. },
  83. getButton: function () {
  84. console.warn( 'WEBVR.getButton has been deprecated.' );
  85. return document.createElement( 'div' );
  86. },
  87. getVRDisplay: function () {
  88. console.warn( 'WEBVR.getVRDisplay has been deprecated.' );
  89. }
  90. };