text: /*
   * Copyright 2015 Google Inc. All Rights Reserved.
   * Licensed under the Apache License, Version 2.0 (the "License");
   * you may not use this file except in compliance with the License.
   * You may obtain a copy of the License at
   *
   *     http://www.apache.org/licenses/LICENSE-2.0
   *
   * Unless required by applicable law or agreed to in writing, software
   * distributed under the License is distributed on an "AS IS" BASIS,
   * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
   * See the License for the specific language governing permissions and
   * limitations under the License.
   */
  var Util = require('./util.js');
  var WebVRPolyfill = require('./webvr-polyfill.js').WebVRPolyfill;
  
  // Initialize a WebVRConfig just in case.
  window.WebVRConfig = Util.extend({
    // Forces availability of VR mode, even for non-mobile devices.
    FORCE_ENABLE_VR: false,
  
    // Complementary filter coefficient. 0 for accelerometer, 1 for gyro.
    K_FILTER: 0.98,
  
    // How far into the future to predict during fast motion (in seconds).
    PREDICTION_TIME_S: 0.040,
  
    // Flag to enable touch panner. In case you have your own touch controls.
    TOUCH_PANNER_DISABLED: true,
  
    // Flag to disabled the UI in VR Mode.
    CARDBOARD_UI_DISABLED: false, // Default: false
  
    // Flag to disable the instructions to rotate your device.
    ROTATE_INSTRUCTIONS_DISABLED: false, // Default: false.
  
    // Enable yaw panning only, disabling roll and pitch. This can be useful
    // for panoramas with nothing interesting above or below.
    YAW_ONLY: false,
  
    // To disable keyboard and mouse controls, if you want to use your own
    // implementation.
    MOUSE_KEYBOARD_CONTROLS_DISABLED: false,
  
    // Prevent the polyfill from initializing immediately. Requires the app
    // to call InitializeWebVRPolyfill() before it can be used.
    DEFER_INITIALIZATION: false,
  
    // Enable the deprecated version of the API (navigator.getVRDevices).
    ENABLE_DEPRECATED_API: false,
  
    // Scales the recommended buffer size reported by WebVR, which can improve
    // performance.
    // UPDATE(2016-05-03): Setting this to 0.5 by default since 1.0 does not
    // perform well on many mobile devices.
    BUFFER_SCALE: 0.5,
  
    // Allow VRDisplay.submitFrame to change gl bindings, which is more
    // efficient if the application code will re-bind its resources on the
    // next frame anyway. This has been seen to cause rendering glitches with
    // THREE.js.
    // Dirty bindings include: gl.FRAMEBUFFER_BINDING, gl.CURRENT_PROGRAM,
    // gl.ARRAY_BUFFER_BINDING, gl.ELEMENT_ARRAY_BUFFER_BINDING,
    // and gl.TEXTURE_BINDING_2D for texture unit 0.
    DIRTY_SUBMIT_FRAME_BINDINGS: false,
  
    // When set to true, this will cause a polyfilled VRDisplay to always be
    // appended to the list returned by navigator.getVRDisplays(), even if that
    // list includes a native VRDisplay.
    ALWAYS_APPEND_POLYFILL_DISPLAY: false,
  
    // There are versions of Chrome (M58-M60?) where the native WebVR API exists,
    // and instead of returning 0 VR displays when none are detected,
    // `navigator.getVRDisplays()`'s promise never resolves. This results
    // in the polyfill hanging and not being able to provide fallback
    // displays, so set a timeout in milliseconds to stop waiting for a response
    // and just use polyfilled displays.
    // https://bugs.chromium.org/p/chromium/issues/detail?id=727969
    GET_VR_DISPLAYS_TIMEOUT: 1000,
  }, window.WebVRConfig);
  
  if (!window.WebVRConfig.DEFER_INITIALIZATION) {
    new WebVRPolyfill();
  } else {
    window.InitializeWebVRPolyfill = function() {
      new WebVRPolyfill();
    }
  }
  
  window.WebVRPolyfill = WebVRPolyfill;
  