{"version":3,"sources":["jsdelivr-header.js","/npm/hexr-setup@4.0.0/world.js"],"names":[],"mappings":"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","file":"/npm/hexr-setup@4.0.0/world.js","sourceRoot":"","sourcesContent":["/**\n * Minified by jsDelivr using Terser v5.39.0.\n * Original file: /npm/hexr-setup@4.0.0/world.js\n *\n * Do NOT use SRI with dynamically generated files! More information: https://www.jsdelivr.com/using-sri-with-dynamic-files\n */\n","var THREE = require('hexr-three');\r\nvar Detector = THREE.Detector;\r\nvar Pipeline = require('./pipeline.js');\r\nvar keycode = require('keycode');\r\nvar audioContext = require('./audio_context.js');\r\nvar Stats = THREE.Stats;\r\nvar RenderStats   = THREE.RenderStats;\r\nvar showStats = false;\r\n\r\n\r\nfunction requestFullscreen (elem){\r\n\r\n    if (elem.requestFullscreen) {\r\n      elem.requestFullscreen();\r\n    } else if (elem.msRequestFullscreen) {\r\n      elem.msRequestFullscreen();\r\n    } else if (elem.mozRequestFullScreen) {\r\n      elem.mozRequestFullScreen();\r\n    } else if (elem.webkitRequestFullscreen) {\r\n      elem.webkitRequestFullscreen();\r\n    }\r\n\r\n}\r\n\r\nmodule.exports = function worldInitialiser(element, aspectratio, isMobileMode, ipc, audioData){\r\n\r\n  isMobileMode = false;\r\n\r\n  if (showStats){\r\n    var stats = new Stats();\r\n    stats.setMode( 0 ); // 0: fps, 1: ms, 2: mb\r\n\r\n    // align top-left\r\n    stats.domElement.style.position = 'absolute';\r\n    stats.domElement.style.left = '0px';\r\n    stats.domElement.style.top = '0px';\r\n\r\n    document.body.appendChild( stats.domElement );\r\n\r\n  }\r\n\r\n  if (!aspectratio){\r\n    aspectratio = 720 / 1280;\r\n  }\r\n\r\n  var qualitySettings = [\"high\", \"medium\",\"low\", \"ultra\"];\r\n  var qualityIndex = window['hexr-default-quality'] || 0;\r\n\r\n  if (window['hexr-screen-size']){\r\n    var width = window['hexr-screen-size'].w;\r\n    var height = window['hexr-screen-size'].h;\r\n\r\n  } else {\r\n    var width = window.innerWidth ;\r\n    var height = width * aspectratio;\r\n  }\r\n\r\n\r\n\r\n  if (height > window.innerHeight){\r\n    height = window.innerHeight;\r\n    width = height / aspectratio;\r\n  }\r\n\r\n  var tick = require('animation-loops');\r\n  var worldTime = {\r\n    now : .001 * tick.now(),\r\n    start : .001 * tick.now(),\r\n    delta : 0\r\n  };\r\n\r\n  element.style.width = Math.floor(width) + \"px\";\r\n\r\n  var renderer = new THREE.WebGLRenderer({ antialias : false, drawBuffers : true});\r\n  //renderer.setPixelRatio((isMobileMode ? devicePixelRatio * .5 : devicePixelRatio));\r\n  renderer.setPixelRatio((isMobileMode ? devicePixelRatio * .5 : devicePixelRatio));\r\n\r\n  element.appendChild(renderer.domElement);\r\n    // camera...\r\n\r\n  //var camera = new THREE.PerspectiveCamera(25, width/height, 1, 300);\r\n  var camera = new THREE.OrthographicCamera(width / -2, width / 2, height / 2, height / -2, 1, 300);\r\n  camera.aspect = width / height;\r\n  //var camerawoman = hexrCamera(25, width/height, 1, 3000);\r\n  //camerawoman.setPosition(new THREE.Vector3(0,0,50));\r\n\r\n  var diffuseScene = new THREE.Scene();\r\n  var lightScene = new THREE.Scene();\r\n  var maskScene = new THREE.Scene();\r\n\r\n  // create rendering pipeline..\r\n  var pipeline = new Pipeline(renderer, diffuseScene, camera, lightScene, maskScene, width, height, isMobileMode);\r\n  pipeline.resize(width, height);\r\n\r\n  // disable right click..\r\n  renderer.domElement.oncontextmenu = function (event) {\r\n    event.preventDefault();\r\n    event.stopPropagation();\r\n    return false;\r\n  };\r\n\r\n  if (ipc) { // only listen for window resize..\r\n\r\n    var fullScreen = false;\r\n\r\n\r\n    window.addEventListener('keyup', function (e){\r\n\r\n      if (keycode(e) === \"f\"){\r\n        if (fullScreen === false){\r\n        ipc.send('go-full-screen');\r\n        fullScreen = true;\r\n        } else {\r\n        ipc.send('exit-full-screen');\r\n        fullScreen = false;\r\n        }\r\n        //requestFullscreen(renderer.domElement);\r\n      }\r\n\r\n      if (keycode(e) === \"p\"){\r\n        qualityIndex++;\r\n        if (qualityIndex === qualitySettings.length){\r\n          qualityIndex = 0;\r\n        }\r\n      }\r\n\r\n\r\n    }, false)\r\n\r\n    window.onresize = function (event){\r\n\r\n      var width = window.innerWidth ;\r\n      var height = width * aspectratio;\r\n\r\n      if (height > window.innerHeight){\r\n        height = window.innerHeight;\r\n        width = height / aspectratio;\r\n      }\r\n      element.style.width = Math.floor(width) + \"px\";\r\n      pipeline.resize(width, height)\r\n    }\r\n\r\n  } else {\r\n    \r\n      window.addEventListener('keyup', function (e){\r\n\r\n        if (keycode(e) === \"f\"){\r\n          requestFullscreen(renderer.domElement);\r\n        }\r\n\r\n        if (keycode(e) === \"p\"){\r\n          qualityIndex++;\r\n          if (qualityIndex === qualitySettings.length){\r\n            qualityIndex = 0;\r\n          }\r\n        }\r\n\r\n\r\n      }, false)\r\n\r\n      window.onresize = function (event){\r\n\r\n        if ((document.fullscreenElement || document.mozFullScreenElement || document.webkitFullscreenElement) || !window['hexr-screen-size']){\r\n\r\n          var width = window.innerWidth ;\r\n          var height = width * aspectratio;\r\n\r\n        } else {\r\n\r\n          var width = window['hexr-screen-size'].w;\r\n          var height = window['hexr-screen-size'].h;\r\n        }\r\n\r\n        if (height > window.innerHeight){\r\n          height = window.innerHeight;\r\n          width = height / aspectratio;\r\n        }\r\n        element.style.width = Math.floor(width) + \"px\";\r\n        pipeline.resize(width, height)\r\n      }\r\n  }\r\n\r\n  var fns = {\r\n    tick : []\r\n  };\r\n\r\n  var lastSecond = -1;\r\n\r\n  tick.add(function (elapsed){\r\n\r\n      var now = .001 * (tick.now() - worldTime.start);\r\n      worldTime.delta = (elapsed - (worldTime.elapsed || 0)) / 1000;\r\n      worldTime.elapsed = elapsed;\r\n      //worldTime.delta = now - worldTime.now;\r\n      worldTime.now = now;\r\n      if (showStats){\r\n        stats.begin();\r\n      }\r\n      pipeline.render(qualitySettings[qualityIndex], worldTime.now);\r\n      if (showStats){\r\n        stats.end();\r\n      }\r\n      \r\n      for (var i = 0; i < fns.tick.length; i++ ){\r\n        fns.tick[i](worldTime, elapsed);\r\n      }\r\n\r\n  });\r\n\r\n  var bundle = {\r\n    on : function (event, callback){\r\n      if (fns[event]){\r\n        fns[event].push(callback);\r\n      }\r\n    },\r\n    off : function (event, callback){\r\n      if (fns[event]){\r\n        fns[event].splice(fns[event].indexOf(callback), 1);\r\n      }\r\n    },\r\n    pipeline : pipeline,\r\n    renderer : renderer,\r\n    camera : camera,\r\n    diffuseScene : diffuseScene,\r\n    lightScene : lightScene,\r\n    maskScene : maskScene,\r\n    element : element,\r\n    audioContext : audioContext,\r\n    audioData : audioData\r\n  };\r\n\r\n  return bundle;\r\n\r\n};\r\n"]}