From af557d93820ce1a650dfbb38c5897d33b4aab0e3 Mon Sep 17 00:00:00 2001 From: Brian Chirls Date: Thu, 21 May 2015 10:57:05 -0400 Subject: [PATCH] Some objects can share a single geometry instance --- build/vr.dev.js | 62 ++++++++++++++++++++--------------------- build/vr.js | 12 ++++---- build/vr.js.map | 2 +- src/objects/box.js | 7 ++--- src/objects/panorama.js | 15 +++++----- src/objects/text.js | 6 ++-- 6 files changed, 50 insertions(+), 54 deletions(-) diff --git a/build/vr.dev.js b/build/vr.dev.js index cac3c46..3c3b482 100644 --- a/build/vr.dev.js +++ b/build/vr.dev.js @@ -164,7 +164,7 @@ /* 20 */ /***/ function(module, exports, __webpack_require__) { - eval("var map = {\n\t\"./box\": 57,\n\t\"./box.js\": 57,\n\t\"./cylinder\": 58,\n\t\"./cylinder.js\": 58,\n\t\"./empty\": 12,\n\t\"./empty.js\": 12,\n\t\"./floor\": 59,\n\t\"./floor.js\": 59,\n\t\"./image\": 60,\n\t\"./image.js\": 60,\n\t\"./panorama\": 61,\n\t\"./panorama.js\": 61,\n\t\"./particles\": 62,\n\t\"./particles.js\": 62,\n\t\"./sky\": 63,\n\t\"./sky.js\": 63,\n\t\"./sound\": 64,\n\t\"./sound.js\": 64,\n\t\"./sphere\": 65,\n\t\"./sphere.js\": 65,\n\t\"./text\": 66,\n\t\"./text.js\": 66,\n\t\"./torus\": 67,\n\t\"./torus.js\": 67,\n\t\"./video\": 68,\n\t\"./video.js\": 68\n};\nfunction webpackContext(req) {\n\treturn __webpack_require__(webpackContextResolve(req));\n};\nfunction webpackContextResolve(req) {\n\treturn map[req] || (function() { throw new Error(\"Cannot find module '\" + req + \"'.\") }());\n};\nwebpackContext.keys = function webpackContextKeys() {\n\treturn Object.keys(map);\n};\nwebpackContext.resolve = webpackContextResolve;\nmodule.exports = webpackContext;\nwebpackContext.id = 20;\n\n\n/*****************\n ** WEBPACK FOOTER\n ** ./src/objects ^\\.\\/.*$\n ** module id = 20\n ** module chunks = 0\n **/\n//# sourceURL=webpack:///./src/objects_^\\.\\/.*$?"); + eval("var map = {\n\t\"./box\": 71,\n\t\"./box.js\": 71,\n\t\"./cylinder\": 72,\n\t\"./cylinder.js\": 72,\n\t\"./empty\": 12,\n\t\"./empty.js\": 12,\n\t\"./floor\": 73,\n\t\"./floor.js\": 73,\n\t\"./image\": 74,\n\t\"./image.js\": 74,\n\t\"./panorama\": 75,\n\t\"./panorama.js\": 75,\n\t\"./particles\": 76,\n\t\"./particles.js\": 76,\n\t\"./sky\": 77,\n\t\"./sky.js\": 77,\n\t\"./sound\": 78,\n\t\"./sound.js\": 78,\n\t\"./sphere\": 79,\n\t\"./sphere.js\": 79,\n\t\"./text\": 80,\n\t\"./text.js\": 80,\n\t\"./torus\": 81,\n\t\"./torus.js\": 81,\n\t\"./video\": 82,\n\t\"./video.js\": 82\n};\nfunction webpackContext(req) {\n\treturn __webpack_require__(webpackContextResolve(req));\n};\nfunction webpackContextResolve(req) {\n\treturn map[req] || (function() { throw new Error(\"Cannot find module '\" + req + \"'.\") }());\n};\nwebpackContext.keys = function webpackContextKeys() {\n\treturn Object.keys(map);\n};\nwebpackContext.resolve = webpackContextResolve;\nmodule.exports = webpackContext;\nwebpackContext.id = 20;\n\n\n/*****************\n ** WEBPACK FOOTER\n ** ./src/objects ^\\.\\/.*$\n ** module id = 20\n ** module chunks = 0\n **/\n//# sourceURL=webpack:///./src/objects_^\\.\\/.*$?"); /***/ }, /* 21 */ @@ -194,7 +194,7 @@ /* 25 */ /***/ function(module, exports, __webpack_require__) { - eval("var map = {\n\t\"./asphalt.jpg\": 72,\n\t\"./brick-tiles.jpg\": 73,\n\t\"./bricks-normal.jpg\": 74,\n\t\"./bricks-specular.jpg\": 75,\n\t\"./bricks.jpg\": 76,\n\t\"./checkerboard.png\": 77,\n\t\"./cloud10.png\": 78,\n\t\"./grass.jpg\": 79,\n\t\"./metal-floor.jpg\": 80,\n\t\"./metal.jpg\": 81,\n\t\"./stone.jpg\": 82,\n\t\"./tiles.jpg\": 83,\n\t\"./weathered-wood.jpg\": 84,\n\t\"./wood.jpg\": 85\n};\nfunction webpackContext(req) {\n\treturn __webpack_require__(webpackContextResolve(req));\n};\nfunction webpackContextResolve(req) {\n\treturn map[req] || (function() { throw new Error(\"Cannot find module '\" + req + \"'.\") }());\n};\nwebpackContext.keys = function webpackContextKeys() {\n\treturn Object.keys(map);\n};\nwebpackContext.resolve = webpackContextResolve;\nmodule.exports = webpackContext;\nwebpackContext.id = 25;\n\n\n/*****************\n ** WEBPACK FOOTER\n ** ./src/images ^\\.\\/.*$\n ** module id = 25\n ** module chunks = 0\n **/\n//# sourceURL=webpack:///./src/images_^\\.\\/.*$?"); + eval("var map = {\n\t\"./asphalt.jpg\": 57,\n\t\"./brick-tiles.jpg\": 58,\n\t\"./bricks-normal.jpg\": 59,\n\t\"./bricks-specular.jpg\": 60,\n\t\"./bricks.jpg\": 61,\n\t\"./checkerboard.png\": 62,\n\t\"./cloud10.png\": 63,\n\t\"./grass.jpg\": 64,\n\t\"./metal-floor.jpg\": 65,\n\t\"./metal.jpg\": 66,\n\t\"./stone.jpg\": 67,\n\t\"./tiles.jpg\": 68,\n\t\"./weathered-wood.jpg\": 69,\n\t\"./wood.jpg\": 70\n};\nfunction webpackContext(req) {\n\treturn __webpack_require__(webpackContextResolve(req));\n};\nfunction webpackContextResolve(req) {\n\treturn map[req] || (function() { throw new Error(\"Cannot find module '\" + req + \"'.\") }());\n};\nwebpackContext.keys = function webpackContextKeys() {\n\treturn Object.keys(map);\n};\nwebpackContext.resolve = webpackContextResolve;\nmodule.exports = webpackContext;\nwebpackContext.id = 25;\n\n\n/*****************\n ** WEBPACK FOOTER\n ** ./src/images ^\\.\\/.*$\n ** module id = 25\n ** module chunks = 0\n **/\n//# sourceURL=webpack:///./src/images_^\\.\\/.*$?"); /***/ }, /* 26 */ @@ -386,175 +386,175 @@ /* 57 */ /***/ function(module, exports, __webpack_require__) { - eval("module.exports = (function () {\n\t'use strict';\n\n\tvar materials = __webpack_require__(10),\n\t\tTHREE = __webpack_require__(13);\n\n\treturn function box(parent, options) {\n\t\tvar geometry,\n\t\t\tmesh;\n\n\t\tgeometry = new THREE.BoxGeometry( 1, 1, 1 );\n\t\tmesh = new THREE.Mesh(geometry, materials.standard());\n\t\tmesh.name = 'box';\n\n\t\tparent.add(mesh);\n\n\t\treturn mesh;\n\t};\n}());\n\n/*****************\n ** WEBPACK FOOTER\n ** ./src/objects/box.js\n ** module id = 57\n ** module chunks = 0\n **/\n//# sourceURL=webpack:///./src/objects/box.js?"); + eval("module.exports = __webpack_require__.p + \"image/asphalt.jpg\"\n\n/*****************\n ** WEBPACK FOOTER\n ** ./src/images/asphalt.jpg\n ** module id = 57\n ** module chunks = 0\n **/\n//# sourceURL=webpack:///./src/images/asphalt.jpg?"); /***/ }, /* 58 */ /***/ function(module, exports, __webpack_require__) { - eval("module.exports = (function () {\n\t'use strict';\n\n\tvar materials = __webpack_require__(10),\n\t\tTHREE = __webpack_require__(13);\n\n\tfunction cylinder(parent, options) {\n\t\tvar geometry,\n\t\t\tmesh;\n\n\t\tgeometry = new THREE.CylinderGeometry(\n\t\t\toptions.radiusTop === undefined ? 0.5 : options.radiusTop,\n\t\t\toptions.radiusBottom === undefined ? 0.5 : options.radiusBottom,\n\t\t\toptions.height === undefined ? 1 : options.height,\n\t\t\toptions.radiusSegments === undefined ? 16 : options.radiusSegments,\n\t\t\toptions.heightSegments,\n\t\t\toptions.openEnded\n\t\t);\n\t\tmesh = new THREE.Mesh(geometry, materials.standard());\n\t\tmesh.name = 'cylinder';\n\n\t\tparent.add(mesh);\n\n\t\treturn mesh;\n\t}\n\n\treturn cylinder;\n}());\n\n/*****************\n ** WEBPACK FOOTER\n ** ./src/objects/cylinder.js\n ** module id = 58\n ** module chunks = 0\n **/\n//# sourceURL=webpack:///./src/objects/cylinder.js?"); + eval("module.exports = __webpack_require__.p + \"image/brick-tiles.jpg\"\n\n/*****************\n ** WEBPACK FOOTER\n ** ./src/images/brick-tiles.jpg\n ** module id = 58\n ** module chunks = 0\n **/\n//# sourceURL=webpack:///./src/images/brick-tiles.jpg?"); /***/ }, /* 59 */ /***/ function(module, exports, __webpack_require__) { - eval("module.exports = (function () {\n\t'use strict';\n\n\tvar materials = __webpack_require__(10),\n\t\tTHREE = __webpack_require__(13);\n\n\tfunction floor(parent, options) {\n\t\tvar obj,\n\t\t\tgeometry;\n\n\t\tgeometry = new THREE.CircleGeometry( options.radius || 100, options.segments || 16 );\n\t\tgeometry.applyMatrix( new THREE.Matrix4().makeRotationX(-Math.PI / 2));\n\n\t\tobj = new THREE.Mesh(\n\t\t\tgeometry,\n\t\t\tmaterials.checkerboard({\n\t\t\t\trepeat: 100\n\t\t\t})\n\t\t);\n\t\tobj.name = 'floor';\n\n\t\tobj.receiveShadow = true;\n\n\t\tparent.add(obj);\n\n\t\treturn obj;\n\t}\n\n\treturn floor;\n}());\n\n/*****************\n ** WEBPACK FOOTER\n ** ./src/objects/floor.js\n ** module id = 59\n ** module chunks = 0\n **/\n//# sourceURL=webpack:///./src/objects/floor.js?"); + eval("module.exports = __webpack_require__.p + \"image/bricks-normal.jpg\"\n\n/*****************\n ** WEBPACK FOOTER\n ** ./src/images/bricks-normal.jpg\n ** module id = 59\n ** module chunks = 0\n **/\n//# sourceURL=webpack:///./src/images/bricks-normal.jpg?"); /***/ }, /* 60 */ /***/ function(module, exports, __webpack_require__) { - eval("module.exports = (function () {\n\t'use strict';\n\n\tvar materials = __webpack_require__(10),\n\t\tTHREE = __webpack_require__(13);\n\n\treturn function image(parent, options) {\n\t\tvar geometry,\n\t\t\tmaterial,\n\t\t\tmesh,\n\t\t\tsrc,\n\t\t\ttex;\n\n\t\tif (typeof options === 'string') {\n\t\t\tsrc = options;\n\t\t} else if (options) {\n\t\t\tsrc = options.src;\n\t\t}\n\n\t\tif (src) {\n\t\t\ttex = materials.imageTexture(src, THREE.UVMapping, function (t, image) {\n\t\t\t\t//todo: don't do any of this if object has been deleted\n\t\t\t\tgeometry.applyMatrix(new THREE.Matrix4().makeScale(1, image.naturalHeight / image.naturalWidth, 1));\n\t\t\t\tmaterial.map = tex;\n\t\t\t\tmaterial.visible = true;\n\t\t\t\tmesh.visible = true;\n\t\t\t\tparent.add(mesh);\n\t\t\t});\n\t\t}\n\n\t\tgeometry = new THREE.PlaneBufferGeometry(1, 1, 8);\n\n\t\tmaterial = new THREE.MeshBasicMaterial({\n\t\t\tside: THREE.DoubleSide,\n\t\t\ttransparent: true,\n\t\t\tmap: tex\n\t\t});\n\n\t\tmesh = new THREE.Mesh( geometry, material );\n\n\t\tmesh.visible = false;\n\n\t\tparent.add(mesh);\n\n\t\treturn mesh;\n\t};\n}());\n\n/*****************\n ** WEBPACK FOOTER\n ** ./src/objects/image.js\n ** module id = 60\n ** module chunks = 0\n **/\n//# sourceURL=webpack:///./src/objects/image.js?"); + eval("module.exports = __webpack_require__.p + \"image/bricks-specular.jpg\"\n\n/*****************\n ** WEBPACK FOOTER\n ** ./src/images/bricks-specular.jpg\n ** module id = 60\n ** module chunks = 0\n **/\n//# sourceURL=webpack:///./src/images/bricks-specular.jpg?"); /***/ }, /* 61 */ /***/ function(module, exports, __webpack_require__) { - eval("module.exports = (function () {\n\t'use strict';\n\n\tvar materials = __webpack_require__(10),\n\t\tTHREE = __webpack_require__(13);\n\n\treturn function panorama(parent, options) {\n\t\tvar geometry,\n\t\t\tmaterial,\n\t\t\tmesh,\n\t\t\tsrc,\n\t\t\ttex;\n\n\t\tif (typeof options === 'string') {\n\t\t\tsrc = options;\n\t\t} else if (options) {\n\t\t\tsrc = options.src;\n\t\t}\n\n\t\tif (src) {\n\t\t\ttex = materials.imageTexture(src, THREE.UVMapping);\n\t\t}\n\n\t\tgeometry = new THREE.SphereGeometry(1000, 60, 60);\n\t\tgeometry.applyMatrix(new THREE.Matrix4().makeScale(-1, 1, 1));\n\t\tgeometry.applyMatrix(new THREE.Matrix4().makeRotationY(- Math.PI / 2));\n\n\t\tmaterial = new THREE.MeshBasicMaterial({\n\t\t\ttransparent: true,\n\t\t\tmap: tex\n\t\t});\n\n\t\tmesh = new THREE.Mesh( geometry, material );\n\n\t\tif (options && options.stereo) {\n\t\t\tif (options.stereo === 'vertical') {\n\t\t\t\ttex.repeat.y = 0.5;\n\t\t\t} else {\n\t\t\t\ttex.repeat.x = 0.5;\n\t\t\t}\n\t\t\tmesh.userData.stereo = options.stereo;\n\t\t}\n\n\t\tmesh.name = 'panorama';\n\n\t\tparent.add(mesh);\n\n\t\treturn mesh;\n\t};\n}());\n\n/*****************\n ** WEBPACK FOOTER\n ** ./src/objects/panorama.js\n ** module id = 61\n ** module chunks = 0\n **/\n//# sourceURL=webpack:///./src/objects/panorama.js?"); + eval("module.exports = __webpack_require__.p + \"image/bricks.jpg\"\n\n/*****************\n ** WEBPACK FOOTER\n ** ./src/images/bricks.jpg\n ** module id = 61\n ** module chunks = 0\n **/\n//# sourceURL=webpack:///./src/images/bricks.jpg?"); /***/ }, /* 62 */ /***/ function(module, exports, __webpack_require__) { - eval("module.exports = (function () {\n\t'use strict';\n\n\tvar materials = __webpack_require__(10),\n\t\tTHREE = __webpack_require__(13),\n\t\tSPE = __webpack_require__(69),\n\t\tassign = __webpack_require__(23),\n\n\t\tgroupFields = [\n\t\t\t'maxAge',\n\t\t\t'hasPerspective',\n\t\t\t'colorize',\n\t\t\t'blending',\n\t\t\t'transparent',\n\t\t\t'alphaTest',\n\t\t\t'depthWrite',\n\t\t\t'depthTest',\n\t\t\t'fixedTimeStep'\n\t\t];\n\n\treturn function particles(parent, options) {\n\t\tvar obj = new THREE.Object3D(),\n\t\t\tkey,\n\t\t\tgroupOptions = {},\n\t\t\temitterOptions = {};\n\n\t\tobj.name = 'particles';\n\n\t\tif (options) {\n\t\t\tgroupFields.forEach(function (field) {\n\t\t\t\tif (options[field] !== undefined) {\n\t\t\t\t\tgroupOptions[field] = options[field];\n\t\t\t\t}\n\t\t\t});\n\t\t}\n\n\t\tvar particleGroup = new SPE.Group({\n\t\t\ttexture: materials.textures.cloud(),\n\t\t\t// texture: materials.imageTexture('http://squarefeet.github.io/ShaderParticleEngine/examples/img/cloudSml.png'),\n\t\t\tmaxAge: 20,\n\t\t\tblending: THREE.NormalBlending,\n\t\t\thasPerspective: 1\n\t\t});\n\n\t\tvar emitter = new SPE.Emitter({\n\t\t\tpositionSpread: new THREE.Vector3(4, 1, 24),\n\n\t\t\t//acceleration: new THREE.Vector3(0, 0, 0),\n\n\t\t\t// velocity: new THREE.Vector3(0, 0, 1),\n\n\t\t\tcolorStart: new THREE.Color('white'),\n\t\t\tsizeStart: 0.5,\n\t\t\tsizeStartSpread: 1.5 / 4,\n\t\t\t// opacityStart: 0,\n\t\t\t// opacityMiddle: 1,\n\t\t\t// opacityEnd: 0,\n\n\t\t\tparticleCount: 8000,\n\t\t\tisStatic: 0\n\t\t});\n\n\t\tparticleGroup.addEmitter(emitter);\n\t\tobj.add(particleGroup.mesh);\n\n\t\tparent.add(obj);\n\n\t\tvar lastTime = 0;\n\t\tthis.update = function (time) {\n\t\t\tvar delta = Math.min(500, time - lastTime);\n\t\t\tlastTime = time;\n\t\t\tparticleGroup.tick(delta);\n\t\t};\n\n\t\treturn obj;\n\t};\n}());\n\n/*****************\n ** WEBPACK FOOTER\n ** ./src/objects/particles.js\n ** module id = 62\n ** module chunks = 0\n **/\n//# sourceURL=webpack:///./src/objects/particles.js?"); + eval("module.exports = \"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAQAAAAEAAQMAAABmvDolAAAABlBMVEUsLCzp6enLhVdXAAAAAWJLR0QAiAUdSAAAAAlwSFlzAAALEwAACxMBAJqcGAAAAAd0SU1FB94KFBIOCP7R3TQAAAA4SURBVGje7dAhEgAACMOw/f/T4Gc5XKqjmlRTBQAAAAAAAAAAAAAA4AiMAQAAAAAAAAAAAADgGSyKafDiEFszywAAAABJRU5ErkJggg==\"\n\n/*****************\n ** WEBPACK FOOTER\n ** ./src/images/checkerboard.png\n ** module id = 62\n ** module chunks = 0\n **/\n//# sourceURL=webpack:///./src/images/checkerboard.png?"); /***/ }, /* 63 */ /***/ function(module, exports, __webpack_require__) { - eval("module.exports = (function () {\n\t'use strict';\n\n\tvar materials = __webpack_require__(10),\n\t\tTHREE = __webpack_require__(13),\n\t\tTAU = Math.PI * 2,\n\t\tHALF_PI = Math.PI / 2,\n\n\t\tdistance = 400000,\n\t\tscratchVector = new THREE.Vector3(),\n\n\t\tparams = [\n\t\t\t'luminance',\n\t\t\t'turbidity',\n\t\t\t'reileigh',\n\t\t\t'mieCoefficient',\n\t\t\t'mieDirectionalG'\n\t\t];\n\n\t__webpack_require__(70);\n\n\treturn function sky(parent, options) {\n\t\tvar obj = new THREE.Sky(),\n\t\t\tself = this,\n\t\t\tscene = parent,\n\t\t\tlight,\n\t\t\tsunPosition,\n\t\t\tazimuth = Math.PI / 6,\n\t\t\taltitude = Math.PI / 6;\n\n\t\tfunction mod(x, y) {\n\t\t\treturn x - y * Math.floor(x / y);\n\t\t}\n\n\t\tfunction update() {\n\t\t\tvar sinTheta,\n\t\t\t\tcosTheta,\n\t\t\t\tphi,\n\t\t\t\tsinPhi,\n\t\t\t\tcosPhi;\n\n\t\t\tsinTheta = Math.sin(altitude);\n\t\t\tcosTheta = Math.cos(altitude);\n\t\t\tphi = -HALF_PI - azimuth;\n\t\t\tsinPhi = Math.sin(phi);\n\t\t\tcosPhi = Math.cos(phi);\n\n\t\t\tsunPosition.set(\n\t\t\t\tdistance * cosPhi * cosTheta,\n\t\t\t\tdistance * sinTheta,\n\t\t\t\tdistance * sinPhi * cosTheta\n\t\t\t);\n\n\t\t\tif (light) {\n\t\t\t\tlight.intensity = 1.5 * Math.max(0.0, 1.0 - Math.exp(-((Math.PI / 1.95 - Math.abs(HALF_PI - altitude)) / 1.5)));\n\t\t\t\tlight.position.copy(sunPosition).normalize().multiplyScalar(100);\n\t\t\t}\n\t\t}\n\n\t\tobj.mesh.name = 'sky';\n\n\t\tparent.add(obj.mesh);\n\n\t\twhile (!(scene instanceof THREE.Scene) && scene.parent) {\n\t\t\tscene = scene.parent;\n\t\t}\n\t\tlight = scene.getObjectByName('directional-light');\n\n\t\tthis.setOptions = function (options) {\n\t\t\tvar needUpdate = false,\n\t\t\t\taltitude,\n\t\t\t\tazimuth;\n\n\t\t\tif (options) {\n\t\t\t\tparams.forEach(function (param) {\n\t\t\t\t\tvar val = options[param];\n\t\t\t\t\tif (val !== undefined) {\n\t\t\t\t\t\tval = parseFloat(val);\n\t\t\t\t\t\tif (!isNaN(val)) {\n\t\t\t\t\t\t\tobj.uniforms[param].value = val;\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t});\n\n\t\t\t\tif (options.sunPosition instanceof THREE.Vector3) {\n\t\t\t\t\tobj.uniforms.sunPosition.value.copy(options.sunPosition);\n\t\t\t\t} else if (Array.isArray(options.sunPosition)) {\n\t\t\t\t\tobj.uniforms.sunPosition.value.set(obj.uniforms.sunPosition.value, options.sunPosition);\n\t\t\t\t} else {\n\t\t\t\t\tself.altitude = options.altitude;\n\t\t\t\t\tself.azimuth = options.azimuth;\n\t\t\t\t}\n\t\t\t}\n\t\t};\n\n\t\tObject.defineProperty(this, 'azimuth', {\n\t\t\tset: function (val) {\n\t\t\t\tval = mod(parseFloat(val), TAU);\n\t\t\t\tif (!isNaN(val) && val !== azimuth) {\n\t\t\t\t\tazimuth = val;\n\t\t\t\t\tupdate();\n\t\t\t\t}\n\t\t\t},\n\t\t\tget: function () {\n\t\t\t\treturn azimuth;\n\t\t\t}\n\t\t});\n\n\t\tObject.defineProperty(this, 'altitude', {\n\t\t\tset: function (val) {\n\t\t\t\tval = mod(parseFloat(val), TAU);\n\t\t\t\tif (!isNaN(val) && val !== altitude) {\n\t\t\t\t\taltitude = val;\n\t\t\t\t\tupdate();\n\t\t\t\t}\n\t\t\t},\n\t\t\tget: function() {\n\t\t\t\treturn altitude;\n\t\t\t}\n\t\t});\n\n\t\tthis.setAltitude = function (val) {\n\t\t\tself.altitude = val;\n\t\t\treturn this;\n\t\t};\n\n\t\tthis.setAzimuth = function (val) {\n\t\t\tself.azimuth = val;\n\t\t\treturn this;\n\t\t};\n\n\t\tsunPosition = obj.uniforms.sunPosition.value;\n\t\tupdate();\n\n\t\tthis.setOptions(options);\n\n\t\treturn obj.mesh;\n\t};\n}());\n\n/*****************\n ** WEBPACK FOOTER\n ** ./src/objects/sky.js\n ** module id = 63\n ** module chunks = 0\n **/\n//# sourceURL=webpack:///./src/objects/sky.js?"); + eval("module.exports = \"data:image/png;base64,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\"\n\n/*****************\n ** WEBPACK FOOTER\n ** ./src/images/cloud10.png\n ** module id = 63\n ** module chunks = 0\n **/\n//# sourceURL=webpack:///./src/images/cloud10.png?"); /***/ }, /* 64 */ /***/ function(module, exports, __webpack_require__) { - eval("module.exports = (function () {\n\t'use strict';\n\n\tvar materials = __webpack_require__(10),\n\t\tTHREE = __webpack_require__(13);\n\n\t__webpack_require__(71);\n\n\treturn function sound(parent, options) {\n\t\tvar obj,\n\t\t\tsrc,\n\t\t\tlistener,\n\t\t\tscene = parent;\n\n\t\tif (typeof options === 'string' || Array.isArray(options)) {\n\t\t\tsrc = options;\n\t\t} else if (options) {\n\t\t\tsrc = options.src;\n\t\t}\n\n\t\twhile (!(scene instanceof THREE.Scene) && scene.parent) {\n\t\t\tscene = scene.parent;\n\t\t}\n\n\t\tlistener = scene.getObjectByName('audio-listener');\n\t\tobj = new THREE.Audio(listener);\n\t\t// obj.setLoop(true);\n\t\tobj.load(src);\n\n\t\tthis.start = obj.start.bind(obj);\n\t\tthis.volume = obj.volume.bind(obj);\n\n\t\tparent.add(obj);\n\n\t\treturn obj;\n\t};\n}());\n\n/*****************\n ** WEBPACK FOOTER\n ** ./src/objects/sound.js\n ** module id = 64\n ** module chunks = 0\n **/\n//# sourceURL=webpack:///./src/objects/sound.js?"); + eval("module.exports = __webpack_require__.p + \"image/grass.jpg\"\n\n/*****************\n ** WEBPACK FOOTER\n ** ./src/images/grass.jpg\n ** module id = 64\n ** module chunks = 0\n **/\n//# sourceURL=webpack:///./src/images/grass.jpg?"); /***/ }, /* 65 */ /***/ function(module, exports, __webpack_require__) { - eval("module.exports = (function () {\n\t'use strict';\n\n\tvar materials = __webpack_require__(10),\n\t\tTHREE = __webpack_require__(13);\n\n\treturn function box(parent, options) {\n\t\tvar geometry,\n\t\t\tmesh;\n\n\t\tgeometry = new THREE.SphereGeometry(\n\t\t\toptions.radius === undefined ? 0.5 : options.radius,\n\t\t\toptions.widthSegments === undefined ? 16 : options.widthSegments,\n\t\t\toptions.heightSegments === undefined ? 12 : options.heightSegments,\n\t\t\toptions.phiStart,\n\t\t\toptions.phiLength,\n\t\t\toptions.thetaStart,\n\t\t\toptions.thetaLength\n\t\t);\n\t\tmesh = new THREE.Mesh(geometry, materials.standard());\n\t\tmesh.name = 'sphere';\n\n\t\tparent.add(mesh);\n\n\t\treturn mesh;\n\t};\n}());\n\n/*****************\n ** WEBPACK FOOTER\n ** ./src/objects/sphere.js\n ** module id = 65\n ** module chunks = 0\n **/\n//# sourceURL=webpack:///./src/objects/sphere.js?"); + eval("module.exports = __webpack_require__.p + \"image/metal-floor.jpg\"\n\n/*****************\n ** WEBPACK FOOTER\n ** ./src/images/metal-floor.jpg\n ** module id = 65\n ** module chunks = 0\n **/\n//# sourceURL=webpack:///./src/images/metal-floor.jpg?"); /***/ }, /* 66 */ /***/ function(module, exports, __webpack_require__) { - eval("module.exports = (function () {\n\t'use strict';\n\n\tvar THREE = __webpack_require__(13),\n\t\tfontSizeRegex = /(\\d+)px/i,\n\t\tnewLineRegex = /[\\n\\r]/,\n\t\tspaceRegex = /[\\t ]/,\n\t\tlog2 = Math.log(2);\n\n\treturn function text(parent, options) {\n\t\tvar self = this,\n\t\t\tgeometry,\n\t\t\tmaterial,\n\t\t\tcanvas,\n\t\t\tctx,\n\t\t\tmesh,\n\t\t\tcontainer,\n\t\t\tsrc,\n\t\t\ttextWidth = 0,\n\t\t\ttextHeight = 0,\n\t\t\tprops = {\n\t\t\t\ttext: '',\n\t\t\t\tfont: '80px sans-serif',\n\t\t\t\ttextAlign: 'center',\n\t\t\t\ttextBaseline: '',\n\t\t\t\tdirection: '',\n\t\t\t\tfillStyle: 'white',\n\t\t\t\tresolution: 256, //pixels per meter\n\t\t\t\twrap: 5 //in meters\n\t\t\t},\n\t\t\ttex;\n\n\t\tfunction nextPowerOfTwo(n) {\n\t\t\treturn Math.pow(2, Math.ceil(Math.log(n) / log2));\n\t\t}\n\n\t\tfunction Line(word) {\n\t\t\tthis.spaceWidth = ctx.measureText(' ').width;\n\t\t\tthis.totalWidth = 0;\n\t\t\tthis.wordsWidth = 0;\n\t\t\tthis.words = [];\n\t\t\tthis.wrap = false;\n\t\t\tif (word) {\n\t\t\t\tthis.add(word);\n\t\t\t}\n\t\t}\n\n\t\tLine.prototype.text = function () {\n\t\t\treturn this.words.join(' ');\n\t\t};\n\n\t\tLine.prototype.add = function(word) {\n\t\t\tvar wordWidth;\n\t\t\tif (this.words.length) {\n\t\t\t\tthis.totalWidth += this.spaceWidth;\n\t\t\t}\n\t\t\tthis.words.push(word);\n\t\t\twordWidth = Line.measure(word);\n\t\t\tthis.totalWidth += wordWidth;\n\t\t\tthis.wordsWidth += wordWidth;\n\t\t};\n\n\t\tLine.prototype.measure = function(word) {\n\t\t\tvar width = this.totalWidth;\n\t\t\tif (word) {\n\t\t\t\twidth += Line.measure(word);\n\t\t\t\tif (this.words.length) {\n\t\t\t\t\twidth += this.spaceWidth;\n\t\t\t\t}\n\t\t\t}\n\t\t\treturn width;\n\t\t};\n\n\t\tLine.measure = function(word) {\n\t\t\treturn ctx.measureText(word).width;\n\t\t};\n\n\t\tfunction update() {\n\t\t\t//text stuffs\n\t\t\tvar text,\n\t\t\t\tword = '',\n\t\t\t\tletter,\n\t\t\t\tisSpace,\n\t\t\t\tline,\n\t\t\t\tlines = [],\n\t\t\t\tparse,\n\n\t\t\t\t//layout\n\t\t\t\tdirection = getComputedStyle(document.body).direction,\n\t\t\t\tinherit,\n\t\t\t\tresolution = parseFloat(props.resolution) || 256,\n\t\t\t\twrap,\n\t\t\t\twrapped = false,\n\t\t\t\tfontSize,\n\t\t\t\tpadding,\n\n\t\t\t\t//measurements\n\t\t\t\tlineHeight,\n\t\t\t\ti, start, y, measure,\n\t\t\t\twidth,\n\t\t\t\theight = 0;\n\n\t\t\twrap = parseFloat(props.wrap);\n\t\t\tif (isNaN(wrap) || wrap < 0) {\n\t\t\t\twrap = 5;\n\t\t\t}\n\t\t\twidth = resolution * wrap;\n\n\t\t\tctx.font = props.font;\n\t\t\tparse = fontSizeRegex.exec(ctx.font);\n\t\t\tfontSize = parseFloat(parse && parse[1]) || 50;\n\n\t\t\tlineHeight = fontSize * 1.5;\n\n\t\t\tline = new Line();\n\n\t\t\ttext = props.text === 0 ? '0' : String(props.text || '');\n\t\t\tif (wrap) {\n\t\t\t\ttext = text.trim() + ' ';\n\t\t\t\tfor (i = 0; i < text.length; i++) {\n\t\t\t\t\tletter = text.charAt(i);\n\t\t\t\t\tif (newLineRegex.test(letter)) {\n\t\t\t\t\t\tline.add(word);\n\t\t\t\t\t\tlines.push(line);\n\t\t\t\t\t\tword = '';\n\t\t\t\t\t\tline = new Line();\n\t\t\t\t\t} else if (spaceRegex.test(letter)) {\n\t\t\t\t\t\tmeasure = line.measure(word);\n\t\t\t\t\t\tif (measure < width) {\n\t\t\t\t\t\t\tif (line) {\n\t\t\t\t\t\t\t\tline.add(word);\n\t\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\tline = new Line(word);\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t} else if (!line && Line.measure(word) >= width) {\n\t\t\t\t\t\t\t//one very long word\n\t\t\t\t\t\t\tlines.push(new Line(word));\n\t\t\t\t\t\t\tword = '';\n\t\t\t\t\t\t\tline = new Line();\n\t\t\t\t\t\t\twrapped = true;\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\tline.wrap = true;\n\t\t\t\t\t\t\tlines.push(line);\n\t\t\t\t\t\t\tline = new Line(word);\n\t\t\t\t\t\t\twrapped = true;\n\t\t\t\t\t\t}\n\t\t\t\t\t\tword = '';\n\t\t\t\t\t} else {\n\t\t\t\t\t\tword += letter;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tif (line) {\n\t\t\t\t\tlines.push(line);\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\tlines.push(new Line(text));\n\t\t\t}\n\n\t\t\tif (!width || !wrapped) {\n\t\t\t\twidth = lines.reduce(function (previous, line) {\n\t\t\t\t\treturn Math.max(previous, line.totalWidth);\n\t\t\t\t}, 0);\n\t\t\t}\n\t\t\twidth = Math.min(width, 2048);\n\n\t\t\theight = lines.length * lineHeight;\n\n\t\t\tif (options && options.mipmap === false) {\n\t\t\t\tcanvas.width = width;\n\t\t\t\tcanvas.height = height;\n\t\t\t} else {\n\t\t\t\tcanvas.width = nextPowerOfTwo(width);\n\t\t\t\tcanvas.height = nextPowerOfTwo(height);\n\t\t\t}\n\n\t\t\tmesh.scale.set(canvas.width / resolution, canvas.height / resolution, 1);\n\n\t\t\t//debug\n\t\t\t// ctx.fillStyle = 'rgba(100, 100, 100, 0.5)';\n\t\t\t// ctx.fillRect(0, 0, canvas.width, canvas.height);\n\t\t\t// document.body.appendChild(canvas);\n\t\t\t// canvas.style.cssText = 'position: absolute; width: auto !important; height: auto !important; max-width: 80%';\n\n\t\t\t/*\n\t\t\tset all these properties again because they get reset\n\t\t\twhen you resize the canvas\n\t\t\t*/\n\t\t\tctx.font = props.font;\n\t\t\tctx.textAlign = props.textAlign;\n\t\t\tctx.textBaseline = props.textBaseline;\n\t\t\tctx.direction = props.direction;\n\t\t\tctx.fillStyle = props.fillStyle;\n\t\t\t//todo: add maxWidth?\n\n\t\t\tpadding = (canvas.width - width) / 2;\n\t\t\ty = (canvas.height - height) / 2 + lineHeight / 2;\n\n\t\t\tinherit = (ctx.direction === '' || ctx.direction === 'inherit');\n\t\t\tif (ctx.textAlign === 'center') {\n\t\t\t\tstart = canvas.width / 2;\n\t\t\t} else if (ctx.textAlign === 'right' ||\n\t\t\t\tctx.textAlign === 'end' && (ctx.direction === 'ltr' || inherit && direction === 'ltr') ||\n\t\t\t\tctx.textAlign === 'start' && (ctx.direction === 'rtl' || inherit && direction === 'rtl')) {\n\n\t\t\t\tstart = canvas.width - padding;\n\t\t\t} else {\n\t\t\t\tstart = padding;\n\t\t\t}\n\n\t\t\tlines.forEach(function (line) {\n\t\t\t\tvar x,\n\t\t\t\t\tspace;\n\t\t\t\tif (props.textAlign === 'justify' && line.wrap && line.words.length > 1) {\n\t\t\t\t\tx = start;\n\t\t\t\t\tspace = (width - line.wordsWidth) / (line.words.length - 1);\n\t\t\t\t\tline.words.forEach(function (word) {\n\t\t\t\t\t\tctx.fillText(word, x, y);\n\t\t\t\t\t\tx += space + Line.measure(word);\n\t\t\t\t\t});\n\t\t\t\t} else {\n\t\t\t\t\tctx.fillText(line.text(), start, y);\n\t\t\t\t}\n\t\t\t\ty += lineHeight;\n\t\t\t});\n\n\t\t\ttextWidth = width / resolution;\n\t\t\ttextHeight = lines.length * lineHeight / resolution;\n\n\t\t\ttex.needsUpdate = true;\n\n\t\t\tmesh.name = text.trim();\n\t\t}\n\n\t\tcanvas = document.createElement('canvas');\n\t\tctx = canvas.getContext('2d');\n\t\ttex = new THREE.Texture(canvas);\n\n\t\tif (canvas.width === nextPowerOfTwo(canvas.width) &&\n\t\t\tcanvas.height === nextPowerOfTwo(canvas.height)) {\n\n\t\t\ttex.minFilter = THREE.LinearMipMapLinearFilter;\n\t\t\ttex.generateMipmaps = true;\n\t\t}\n\n\t\tgeometry = new THREE.PlaneBufferGeometry(1, 1);\n\n\t\tmaterial = new THREE.MeshBasicMaterial({\n\t\t\tside: THREE.DoubleSide,\n\t\t\ttransparent: true,\n\t\t\tmap: tex\n\t\t});\n\n\t\tmesh = new THREE.Mesh(geometry, material);\n\n\t\tcontainer = new THREE.Object3D();\n\t\tcontainer.name = 'text';\n\t\tcontainer.add(mesh);\n\t\tparent.add(container);\n\n\t\tif (typeof options === 'string') {\n\t\t\tprops.text = options;\n\t\t} else if (options) {\n\t\t\tObject.keys(props).forEach(function (key) {\n\t\t\t\tprops[key] = options[key] || props[key];\n\t\t\t});\n\t\t}\n\t\tupdate();\n\n\t\tObject.keys(props).forEach(function (key) {\n\t\t\tObject.defineProperty(self, key, {\n\t\t\t\tget: function () {\n\t\t\t\t\treturn props[key];\n\t\t\t\t},\n\t\t\t\tset: function (val) {\n\t\t\t\t\tprops[key] = val;\n\t\t\t\t\tupdate();\n\t\t\t\t}\n\t\t\t});\n\t\t});\n\n\t\tObject.defineProperty(self, 'width', {\n\t\t\tget: function () {\n\t\t\t\treturn textWidth;\n\t\t\t}\n\t\t});\n\n\t\tObject.defineProperty(self, 'height', {\n\t\t\tget: function () {\n\t\t\t\treturn textHeight;\n\t\t\t}\n\t\t});\n\n\t\tthis.material = material;\n\n\t\treturn container;\n\t};\n}());\n\n/*****************\n ** WEBPACK FOOTER\n ** ./src/objects/text.js\n ** module id = 66\n ** module chunks = 0\n **/\n//# sourceURL=webpack:///./src/objects/text.js?"); + eval("module.exports = __webpack_require__.p + \"image/metal.jpg\"\n\n/*****************\n ** WEBPACK FOOTER\n ** ./src/images/metal.jpg\n ** module id = 66\n ** module chunks = 0\n **/\n//# sourceURL=webpack:///./src/images/metal.jpg?"); /***/ }, /* 67 */ /***/ function(module, exports, __webpack_require__) { - eval("module.exports = (function () {\n\t'use strict';\n\n\tvar materials = __webpack_require__(10),\n\t\tTHREE = __webpack_require__(13);\n\n\treturn function torus(parent, options) {\n\t\tvar geometry,\n\t\t\tmesh;\n\n\t\tgeometry = new THREE.TorusGeometry(\n\t\t\toptions.radius === undefined ? 0.5 : options.radius,\n\t\t\toptions.tube === undefined ? 0.125 : options.tube,\n\t\t\toptions.radialSegments === undefined ? 12 : options.radialSegments,\n\t\t\toptions.tubularSegments === undefined ? 16 : options.tubularSegments,\n\t\t\toptions.arc\n\t\t);\n\t\tmesh = new THREE.Mesh(geometry, materials.standard());\n\t\tmesh.name = 'torus';\n\n\t\tparent.add(mesh);\n\n\t\treturn mesh;\n\t};\n}());\n\n/*****************\n ** WEBPACK FOOTER\n ** ./src/objects/torus.js\n ** module id = 67\n ** module chunks = 0\n **/\n//# sourceURL=webpack:///./src/objects/torus.js?"); + eval("module.exports = __webpack_require__.p + \"image/stone.jpg\"\n\n/*****************\n ** WEBPACK FOOTER\n ** ./src/images/stone.jpg\n ** module id = 67\n ** module chunks = 0\n **/\n//# sourceURL=webpack:///./src/images/stone.jpg?"); /***/ }, /* 68 */ /***/ function(module, exports, __webpack_require__) { - eval("module.exports = (function () {\n\t'use strict';\n\n\tvar THREE = __webpack_require__(13),\n\t\turlRegex = __webpack_require__(24),\n\t\textRegex = /\\.(webm|ogg|ogv|m4v|mp4|mov)/i,\n\t\tvideo;\n\n\tvideo = function (parent, options) {\n\t\tvar geometry,\n\t\t\tmaterial,\n\t\t\tmesh,\n\t\t\tvid,\n\t\t\ttex,\n\t\t\taspectRatio = 1,\n\t\t\tplaying = false,\n\t\t\tself = this;\n\n\t\tfunction isPowerOfTwo(num) {\n\t\t\treturn num > 0 && (num & (num-1)) === 0; // jshint ignore:line\n\t\t}\n\n\t\tfunction loadedMetadata() {\n\t\t\t//todo: don't do any of this if object has been deleted\n\n\t\t\tvar newAspectRatio = vid.videoWidth / vid.videoHeight;\n\t\t\tif (!options || !options.sphere) {\n\t\t\t\tgeometry.applyMatrix(new THREE.Matrix4().makeScale(1, aspectRatio / newAspectRatio, 1));\n\t\t\t}\n\t\t\taspectRatio = newAspectRatio;\n\n\t\t\tif (vid.videoWidth === vid.videoHeight &&\n\t\t\t\t\tisPowerOfTwo(vid.videoWidth) && isPowerOfTwo(vid.videoHeight)) {\n\n\t\t\t\ttex.minFilter = THREE.LinearMipMapLinearFilter;\n\t\t\t\ttex.generateMipmaps = true;\n\t\t\t} else {\n\t\t\t\ttex.minFilter = THREE.LinearFilter;\n\t\t\t\ttex.generateMipmaps = false;\n\t\t\t}\n\n\t\t\tmaterial.map = tex;\n\t\t\tmaterial.visible = true;\n\n\t\t\tif (playing) {\n\t\t\t\tvid.play();\n\t\t\t}\n\t\t}\n\n\t\tfunction setSource(sources) {\n\t\t\tsources.forEach(function (src) {\n\t\t\t\tvar parse,\n\t\t\t\t\text,\n\t\t\t\t\tsource;\n\n\t\t\t\tif (!src) {\n\t\t\t\t\treturn;\n\t\t\t\t}\n\n\t\t\t\tparse = urlRegex.exec(src);\n\t\t\t\tif (parse &&\n\t\t\t\t\t\t(parse[1] && parse[1] !== window.location.hostΩ ||\n\t\t\t\t\t\t\tparse[2] && parse[2] !== window.location.port)) {\n\n\t\t\t\t\tif (vid.crossOrigin !== undefined) {\n\t\t\t\t\t\tvid.crossOrigin = 'anonymous';\n\t\t\t\t\t} else {\n\t\t\t\t\t\tconsole.warn('Browser does not support cross-origin video');\n\t\t\t\t\t\treturn;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tsource = document.createElement('source');\n\t\t\t\tsource.src = src;\n\n\t\t\t\text = extRegex.exec(src);\n\t\t\t\tif (!ext || vid.canPlayType('video/' + ext[1])) {\n\t\t\t\t\tvid.appendChild(source);\n\t\t\t\t}\n\t\t\t});\n\t\t}\n\n\t\t/*\n\t\tPause the video when this browser tab is in the background or minimized.\n\t\tResume when it comes back in focus, but only if the user didn't pause manually.\n\t\t*/\n\t\tfunction visibilityChange() {\n\t\t\tif (document.hidden || document.mozHidden || document.msHidden || document.webkitHidden) {\n\t\t\t\tvid.pause();\n\t\t\t} else if (playing) {\n\t\t\t\tvid.play();\n\t\t\t}\n\t\t}\n\n\t\tvid = document.createElement('video');\n\t\tvid.loop = true;\n\t\tvid.addEventListener('loadedmetadata', loadedMetadata, false);\n\n\t\tif (Array.isArray(options)) {\n\t\t\tsetSource(options);\n\t\t} if (typeof options === 'string') {\n\t\t\tsetSource([options]);\n\t\t} else if (typeof options.src === 'string') {\n\t\t\tsetSource([options.src]);\n\t\t} else if (Array.isArray(options.src)) {\n\t\t\tsetSource(options.src);\n\t\t}\n\n\t\tvid.load();\n\n\t\ttex = new THREE.VideoTexture(vid, THREE.UVMapping);\n\t\ttex.format = THREE.RGBFormat;\n\n\t\tif (options && options.sphere) {\n\t\t\tgeometry = new THREE.SphereGeometry(\n\t\t\t\t994, //radius\n\t\t\t\t60, //widthSegments\n\t\t\t\t60, //heightSegments\n\t\t\t\t(parseFloat(options.phiStart) || 0) * Math.PI * 2,\n\t\t\t\t(parseFloat(options.phiLength) || 1) * Math.PI * 2,\n\t\t\t\t(parseFloat(options.thetaStart) || 0) * Math.PI,\n\t\t\t\t(parseFloat(options.thetaLength) || 1) * Math.PI\n\t\t\t);\n\t\t\tgeometry.applyMatrix(new THREE.Matrix4().makeScale(-1, 1, 1));\n\t\t\tgeometry.applyMatrix(new THREE.Matrix4().makeRotationY(- Math.PI / 2));\n\t\t} else {\n\t\t\tgeometry = new THREE.PlaneBufferGeometry(1, 1, 8);\n\t\t}\n\n\t\tmaterial = new THREE.MeshBasicMaterial({\n\t\t\tside: THREE.DoubleSide,\n\t\t\tmap: tex,\n\t\t\tvisible: false\n\t\t});\n\n\t\tmesh = new THREE.Mesh(geometry, material);\n\n\t\tif (options && options.stereo) {\n\t\t\tif (options.stereo === 'vertical') {\n\t\t\t\ttex.repeat.y = 0.5;\n\t\t\t} else {\n\t\t\t\ttex.repeat.x = 0.5;\n\t\t\t}\n\t\t\tmesh.userData.stereo = options.stereo;\n\t\t}\n\n\t\tif (vid.readyState) {\n\t\t\tloadedMetadata();\n\t\t}\n\n\t\tthis.play = function play() {\n\t\t\tplaying = true;\n\t\t\tvid.play();\n\t\t\treturn this;\n\t\t};\n\n\t\tthis.pause = function pause() {\n\t\t\tplaying = false;\n\t\t\tvid.pause();\n\t\t\treturn this;\n\t\t};\n\n\t\tthis.canPlayType = video.canPlayType;\n\n\t\tObject.defineProperty(this, 'width', {\n\t\t\tget: function () {\n\t\t\t\treturn vid.videoWidth;\n\t\t\t}\n\t\t});\n\n\t\tObject.defineProperty(this, 'height', {\n\t\t\tget: function () {\n\t\t\t\treturn vid.videoHeight;\n\t\t\t}\n\t\t});\n\n\t\tObject.defineProperty(this, 'paused', {\n\t\t\tget: function () {\n\t\t\t\treturn !playing;\n\t\t\t}\n\t\t});\n\n\t\tObject.defineProperty(this, 'volume', {\n\t\t\tget: function () {\n\t\t\t\treturn vid.volume;\n\t\t\t},\n\t\t\tset: function (vol) {\n\t\t\t\tvid.volume = vol;\n\t\t\t}\n\t\t});\n\n\t\tObject.defineProperty(this, 'muted', {\n\t\t\tget: function () {\n\t\t\t\treturn vid.muted;\n\t\t\t},\n\t\t\tset: function (muted) {\n\t\t\t\tvid.muted = muted;\n\t\t\t}\n\t\t});\n\n\t\tObject.defineProperty(this, 'duration', {\n\t\t\tget: function () {\n\t\t\t\treturn vid.duration || 0;\n\t\t\t}\n\t\t});\n\n\t\tObject.defineProperty(this, 'currentTime', {\n\t\t\tget: function () {\n\t\t\t\treturn vid.currentTime;\n\t\t\t},\n\t\t\tset: function (currentTime) {\n\t\t\t\tif (vid.readyState && currentTime < vid.duration && currentTime >= 0) {\n\t\t\t\t\tvid.currentTime = currentTime;\n\t\t\t\t}\n\t\t\t}\n\t\t});\n\n\t\t[\n\t\t\t'loadedmetadata',\n\t\t\t'play',\n\t\t\t'pause',\n\t\t\t'playing',\n\t\t\t'progress'\n\t\t].forEach(function registerMediaEvent(event) {\n\t\t\tvid.addEventListener(event, self.emit.bind(self, event));\n\t\t});\n\n\t\t//sometimes video fails to play because it's too big. remove it and try again\n\t\tvid.addEventListener('error', function (evt) {\n\t\t\tif (vid.error.code === window.MediaError.MEDIA_ERR_DECODE && vid.childNodes.length > 1) {\n\t\t\t\tmaterial.visible = false;\n\t\t\t\tvid.removeChild(vid.firstChild);\n\t\t\t\tvid.load();\n\t\t\t}\n\n\t\t\tself.emit(event, evt);\n\t\t}, true);\n\n\t\tthis.element = vid;\n\n\t\twindow.addEventListener('touchstart', function touchStart() {\n\t\t\tif (playing) {\n\t\t\t\tvid.play();\n\t\t\t} else {\n\t\t\t\tvid.load();\n\t\t\t}\n\t\t\twindow.removeEventListener('touchstart', touchStart, true);\n\t\t}, true);\n\n\t\t//pause when window is hidden\n\t\tdocument.addEventListener('visibilitychange', visibilityChange);\n\t\tdocument.addEventListener('mozvisibilitychange', visibilityChange);\n\t\tdocument.addEventListener('msvisibilitychange', visibilityChange);\n\t\tdocument.addEventListener('webkitvisibilitychange', visibilityChange);\n\n\t\tmesh.name = 'video';\n\t\tparent.add(mesh);\n\n\t\treturn mesh;\n\t};\n\n\tvideo.canPlayType = function canPlayType(type) {\n\t\tvar element = document.createElement('video');\n\t\treturn element.canPlayType(type);\n\t};\n\n\treturn video;\n}());\n\n/*****************\n ** WEBPACK FOOTER\n ** ./src/objects/video.js\n ** module id = 68\n ** module chunks = 0\n **/\n//# sourceURL=webpack:///./src/objects/video.js?"); + eval("module.exports = __webpack_require__.p + \"image/tiles.jpg\"\n\n/*****************\n ** WEBPACK FOOTER\n ** ./src/images/tiles.jpg\n ** module id = 68\n ** module chunks = 0\n **/\n//# sourceURL=webpack:///./src/images/tiles.jpg?"); /***/ }, /* 69 */ /***/ function(module, exports, __webpack_require__) { - eval("/*** IMPORTS FROM imports-loader ***/\nvar THREE = __webpack_require__(13);\n\n// ShaderParticleUtils 0.7.9\n//\n// (c) 2014 Luke Moody (http://www.github.com/squarefeet)\n// & Lee Stemkoski (http://www.adelphi.edu/~stemkoski/)\n//\n// Based on Lee Stemkoski's original work:\n// (https://github.com/stemkoski/stemkoski.github.com/blob/master/Three.js/js/ParticleEngine.js).\n//\n// ShaderParticleGroup may be freely distributed under the MIT license (See LICENSE.txt)\n\nvar SPE = SPE || {};\n\nSPE.utils = {\n\n /**\n * Given a base vector and a spread range vector, create\n * a new THREE.Vector3 instance with randomised values.\n *\n * @private\n *\n * @param {THREE.Vector3} base\n * @param {THREE.Vector3} spread\n * @return {THREE.Vector3}\n */\n randomVector3: function( base, spread ) {\n var v = new THREE.Vector3();\n\n v.copy( base );\n\n v.x += Math.random() * spread.x - (spread.x/2);\n v.y += Math.random() * spread.y - (spread.y/2);\n v.z += Math.random() * spread.z - (spread.z/2);\n\n return v;\n },\n\n /**\n * Create a new THREE.Color instance and given a base vector and\n * spread range vector, assign random values.\n *\n * Note that THREE.Color RGB values are in the range of 0 - 1, not 0 - 255.\n *\n * @private\n *\n * @param {THREE.Vector3} base\n * @param {THREE.Vector3} spread\n * @return {THREE.Color}\n */\n randomColor: function( base, spread ) {\n var v = new THREE.Color();\n\n v.copy( base );\n\n v.r += (Math.random() * spread.x) - (spread.x/2);\n v.g += (Math.random() * spread.y) - (spread.y/2);\n v.b += (Math.random() * spread.z) - (spread.z/2);\n\n v.r = Math.max( 0, Math.min( v.r, 1 ) );\n v.g = Math.max( 0, Math.min( v.g, 1 ) );\n v.b = Math.max( 0, Math.min( v.b, 1 ) );\n\n return v;\n },\n\n /**\n * Create a random Number value based on an initial value and\n * a spread range\n *\n * @private\n *\n * @param {Number} base\n * @param {Number} spread\n * @return {Number}\n */\n randomFloat: function( base, spread ) {\n return base + spread * (Math.random() - 0.5);\n },\n\n /**\n * Create a new THREE.Vector3 instance and project it onto a random point\n * on a sphere with randomized radius.\n *\n * @param {THREE.Vector3} base\n * @param {Number} radius\n * @param {THREE.Vector3} radiusSpread\n * @param {THREE.Vector3} radiusScale\n *\n * @private\n *\n * @return {THREE.Vector3}\n */\n randomVector3OnSphere: function( base, radius, radiusSpread, radiusScale, radiusSpreadClamp ) {\n var z = 2 * Math.random() - 1;\n var t = 6.2832 * Math.random();\n var r = Math.sqrt( 1 - z*z );\n var vec = new THREE.Vector3( r * Math.cos(t), r * Math.sin(t), z );\n\n var rand = this._randomFloat( radius, radiusSpread );\n\n if( radiusSpreadClamp ) {\n rand = Math.round( rand / radiusSpreadClamp ) * radiusSpreadClamp;\n }\n\n vec.multiplyScalar( rand );\n\n if( radiusScale ) {\n vec.multiply( radiusScale );\n }\n\n vec.add( base );\n\n return vec;\n },\n\n /**\n * Create a new THREE.Vector3 instance and project it onto a random point\n * on a disk (in the XY-plane) centered at `base` and with randomized radius.\n *\n * @param {THREE.Vector3} base\n * @param {Number} radius\n * @param {THREE.Vector3} radiusSpread\n * @param {THREE.Vector3} radiusScale\n *\n * @private\n *\n * @return {THREE.Vector3}\n */\n randomVector3OnDisk: function( base, radius, radiusSpread, radiusScale, radiusSpreadClamp ) {\n var t = 6.2832 * Math.random();\n var rand = this._randomFloat( radius, radiusSpread );\n\n if( radiusSpreadClamp ) {\n rand = Math.round( rand / radiusSpreadClamp ) * radiusSpreadClamp;\n }\n\n var vec = new THREE.Vector3( Math.cos(t), Math.sin(t), 0 ).multiplyScalar( rand );\n\n if ( radiusScale ) {\n vec.multiply( radiusScale );\n }\n\n vec.add( base );\n\n return vec ;\n },\n\n\n /**\n * Create a new THREE.Vector3 instance, and given a sphere with center `base` and\n * point `position` on sphere, set direction away from sphere center with random magnitude.\n *\n * @param {THREE.Vector3} base\n * @param {THREE.Vector3} position\n * @param {Number} speed\n * @param {Number} speedSpread\n * @param {THREE.Vector3} scale\n *\n * @private\n *\n * @return {THREE.Vector3}\n */\n randomVelocityVector3OnSphere: function( base, position, speed, speedSpread, scale ) {\n var direction = new THREE.Vector3().subVectors( base, position );\n\n direction.normalize().multiplyScalar( Math.abs( this._randomFloat( speed, speedSpread ) ) );\n\n if( scale ) {\n direction.multiply( scale );\n }\n\n return direction;\n },\n\n\n\n /**\n * Given a base vector and a spread vector, randomise the given vector\n * accordingly.\n *\n * @param {THREE.Vector3} vector\n * @param {THREE.Vector3} base\n * @param {THREE.Vector3} spread\n *\n * @private\n *\n * @return {[type]}\n */\n randomizeExistingVector3: function( v, base, spread ) {\n v.copy( base );\n\n v.x += Math.random() * spread.x - (spread.x/2);\n v.y += Math.random() * spread.y - (spread.y/2);\n v.z += Math.random() * spread.z - (spread.z/2);\n },\n\n\n /**\n * Randomize a THREE.Color instance and given a base vector and\n * spread range vector, assign random values.\n *\n * Note that THREE.Color RGB values are in the range of 0 - 1, not 0 - 255.\n *\n * @private\n *\n * @param {THREE.Vector3} base\n * @param {THREE.Vector3} spread\n * @return {THREE.Color}\n */\n randomizeExistingColor: function( v, base, spread ) {\n v.copy( base );\n\n v.r += (Math.random() * spread.x) - (spread.x/2);\n v.g += (Math.random() * spread.y) - (spread.y/2);\n v.b += (Math.random() * spread.z) - (spread.z/2);\n\n v.r = Math.max( 0, Math.min( v.r, 1 ) );\n v.g = Math.max( 0, Math.min( v.g, 1 ) );\n v.b = Math.max( 0, Math.min( v.b, 1 ) );\n },\n\n /**\n * Given an existing particle vector, project it onto a random point on a\n * sphere with radius `radius` and position `base`.\n *\n * @private\n *\n * @param {THREE.Vector3} v\n * @param {THREE.Vector3} base\n * @param {Number} radius\n */\n randomizeExistingVector3OnSphere: function( v, base, radius, radiusSpread, radiusScale, radiusSpreadClamp ) {\n var z = 2 * Math.random() - 1,\n t = 6.2832 * Math.random(),\n r = Math.sqrt( 1 - z*z ),\n rand = this._randomFloat( radius, radiusSpread );\n\n if( radiusSpreadClamp ) {\n rand = Math.round( rand / radiusSpreadClamp ) * radiusSpreadClamp;\n }\n\n v.set(\n (r * Math.cos(t)) * rand,\n (r * Math.sin(t)) * rand,\n z * rand\n ).multiply( radiusScale );\n\n v.add( base );\n },\n\n\n /**\n * Given an existing particle vector, project it onto a random point\n * on a disk (in the XY-plane) centered at `base` and with radius `radius`.\n *\n * @private\n *\n * @param {THREE.Vector3} v\n * @param {THREE.Vector3} base\n * @param {Number} radius\n */\n randomizeExistingVector3OnDisk: function( v, base, radius, radiusSpread, radiusScale, radiusSpreadClamp ) {\n var t = 6.2832 * Math.random(),\n rand = Math.abs( this._randomFloat( radius, radiusSpread ) );\n\n if( radiusSpreadClamp ) {\n rand = Math.round( rand / radiusSpreadClamp ) * radiusSpreadClamp;\n }\n\n v.set(\n Math.cos( t ),\n Math.sin( t ),\n 0\n ).multiplyScalar( rand );\n\n if ( radiusScale ) {\n v.multiply( radiusScale );\n }\n\n v.add( base );\n },\n\n randomizeExistingVelocityVector3OnSphere: function( v, base, position, speed, speedSpread ) {\n v.copy(position)\n .sub(base)\n .normalize()\n .multiplyScalar( Math.abs( this._randomFloat( speed, speedSpread ) ) );\n },\n\n generateID: function() {\n var str = 'xxxxxxxx-xxxx-4xxx-yxxx-xxxxxxxxxxxx';\n\n str = str.replace(/[xy]/g, function(c) {\n var rand = Math.random();\n var r = rand*16|0%16, v = c === 'x' ? r : (r&0x3|0x8);\n\n return v.toString(16);\n });\n\n return str;\n }\n};;\n\n// ShaderParticleGroup 0.7.9\n//\n// (c) 2014 Luke Moody (http://www.github.com/squarefeet)\n// & Lee Stemkoski (http://www.adelphi.edu/~stemkoski/)\n//\n// Based on Lee Stemkoski's original work:\n// (https://github.com/stemkoski/stemkoski.github.com/blob/master/Three.js/js/ParticleEngine.js).\n//\n// ShaderParticleGroup may be freely distributed under the MIT license (See LICENSE.txt)\n\nvar SPE = SPE || {};\n\nSPE.Group = function( options ) {\n var that = this;\n\n that.fixedTimeStep = parseFloat( typeof options.fixedTimeStep === 'number' ? options.fixedTimeStep : 0.016 );\n\n // Uniform properties ( applied to all particles )\n that.maxAge = parseFloat( options.maxAge || 3 );\n that.texture = options.texture || null;\n that.hasPerspective = parseInt( typeof options.hasPerspective === 'number' ? options.hasPerspective : 1, 10 );\n that.colorize = parseInt( typeof options.colorize === 'number' ? options.colorize : 1, 10 );\n\n // Material properties\n that.blending = typeof options.blending === 'number' ? options.blending : THREE.AdditiveBlending;\n that.transparent = typeof options.transparent === 'boolean' ? options.transparent : true;\n that.alphaTest = typeof options.alphaTest === 'number' ? options.alphaTest : 0.5;\n that.depthWrite = typeof options.depthWrite === 'boolean' ? options.depthWrite : false;\n that.depthTest = typeof options.depthTest === 'boolean' ? options.depthTest : true;\n\n // Create uniforms\n that.uniforms = {\n duration: { type: 'f', value: that.maxAge },\n texture: { type: 't', value: that.texture },\n hasPerspective: { type: 'i', value: that.hasPerspective },\n colorize: { type: 'i', value: that.colorize }\n };\n\n // Create a map of attributes that will hold values for each particle in this group.\n that.attributes = {\n acceleration: { type: 'v3', value: [] },\n velocity: { type: 'v3', value: [] },\n\n alive: { type: 'f', value: [] },\n age: { type: 'f', value: [] },\n\n size: { type: 'v3', value: [] },\n angle: { type: 'v4', value: [] },\n\n colorStart: { type: 'c', value: [] },\n colorMiddle: { type: 'c', value: [] },\n colorEnd: { type: 'c', value: [] },\n\n opacity: { type: 'v3', value: [] }\n };\n\n // Emitters (that aren't static) will be added to this array for\n // processing during the `tick()` function.\n that.emitters = [];\n\n // Create properties for use by the emitter pooling functions.\n that._pool = [];\n that._poolCreationSettings = null;\n that._createNewWhenPoolEmpty = 0;\n that.maxAgeMilliseconds = that.maxAge * 1000;\n\n // Create an empty geometry to hold the particles.\n // Each particle is a vertex pushed into this geometry's\n // vertices array.\n that.geometry = new THREE.Geometry();\n\n // Create the shader material using the properties we set above.\n that.material = new THREE.ShaderMaterial({\n uniforms: that.uniforms,\n attributes: that.attributes,\n vertexShader: SPE.shaders.vertex,\n fragmentShader: SPE.shaders.fragment,\n blending: that.blending,\n transparent: that.transparent,\n alphaTest: that.alphaTest,\n depthWrite: that.depthWrite,\n depthTest: that.depthTest\n });\n\n // And finally create the ParticleSystem. It's got its `dynamic` property\n // set so that THREE.js knows to update it on each frame.\n that.mesh = new THREE.PointCloud( that.geometry, that.material );\n that.mesh.dynamic = true;\n};\n\nSPE.Group.prototype = {\n\n /**\n * Tells the age and alive attributes (and the geometry vertices)\n * that they need updating by THREE.js's internal tick functions.\n *\n * @private\n *\n * @return {this}\n */\n _flagUpdate: function() {\n var that = this;\n\n // Set flags to update (causes less garbage than\n // ```ParticleSystem.sortParticles = true``` in THREE.r58 at least)\n that.attributes.age.needsUpdate = true;\n that.attributes.alive.needsUpdate = true;\n that.attributes.angle.needsUpdate = true;\n // that.attributes.angleAlignVelocity.needsUpdate = true;\n that.attributes.velocity.needsUpdate = true;\n that.attributes.acceleration.needsUpdate = true;\n that.geometry.verticesNeedUpdate = true;\n\n return that;\n },\n\n /**\n * Add an emitter to this particle group. Once added, an emitter will be automatically\n * updated when SPE.Group#tick() is called.\n *\n * @param {SPE.Emitter} emitter\n * @return {this}\n */\n addEmitter: function( emitter ) {\n var that = this;\n\n if( emitter.duration ) {\n emitter.particlesPerSecond = emitter.particleCount / (that.maxAge < emitter.duration ? that.maxAge : emitter.duration) | 0;\n }\n else {\n emitter.particlesPerSecond = emitter.particleCount / that.maxAge | 0\n }\n\n var vertices = that.geometry.vertices,\n start = vertices.length,\n end = emitter.particleCount + start,\n a = that.attributes,\n acceleration = a.acceleration.value,\n velocity = a.velocity.value,\n alive = a.alive.value,\n age = a.age.value,\n size = a.size.value,\n angle = a.angle.value,\n colorStart = a.colorStart.value,\n colorMiddle = a.colorMiddle.value,\n colorEnd = a.colorEnd.value,\n opacity = a.opacity.value;\n\n emitter.particleIndex = parseFloat( start );\n\n // Create the values\n for( var i = start; i < end; ++i ) {\n\n if( emitter.type === 'sphere' ) {\n vertices[i] = that._randomVector3OnSphere( emitter.position, emitter.radius, emitter.radiusSpread, emitter.radiusScale, emitter.radiusSpreadClamp );\n velocity[i] = that._randomVelocityVector3OnSphere( vertices[i], emitter.position, emitter.speed, emitter.speedSpread );\n }\n else if( emitter.type === 'disk' ) {\n vertices[i] = that._randomVector3OnDisk( emitter.position, emitter.radius, emitter.radiusSpread, emitter.radiusScale, emitter.radiusSpreadClamp );\n velocity[i] = that._randomVelocityVector3OnSphere( vertices[i], emitter.position, emitter.speed, emitter.speedSpread );\n }\n else {\n vertices[i] = that._randomVector3( emitter.position, emitter.positionSpread );\n velocity[i] = that._randomVector3( emitter.velocity, emitter.velocitySpread );\n }\n\n acceleration[i] = that._randomVector3( emitter.acceleration, emitter.accelerationSpread );\n\n size[i] = new THREE.Vector3(\n Math.abs( that._randomFloat( emitter.sizeStart, emitter.sizeStartSpread ) ),\n Math.abs( that._randomFloat( emitter.sizeMiddle, emitter.sizeMiddleSpread ) ),\n Math.abs( that._randomFloat( emitter.sizeEnd, emitter.sizeEndSpread ) )\n );\n\n angle[i] = new THREE.Vector4(\n that._randomFloat( emitter.angleStart, emitter.angleStartSpread ),\n that._randomFloat( emitter.angleMiddle, emitter.angleMiddleSpread ),\n that._randomFloat( emitter.angleEnd, emitter.angleEndSpread ),\n emitter.angleAlignVelocity ? 1.0 : 0.0\n );\n\n age[i] = 0.0;\n alive[i] = emitter.isStatic ? 1.0 : 0.0;\n\n colorStart[i] = that._randomColor( emitter.colorStart, emitter.colorStartSpread );\n colorMiddle[i] = that._randomColor( emitter.colorMiddle, emitter.colorMiddleSpread );\n colorEnd[i] = that._randomColor( emitter.colorEnd, emitter.colorEndSpread );\n\n opacity[i] = new THREE.Vector3(\n Math.abs( that._randomFloat( emitter.opacityStart, emitter.opacityStartSpread ) ),\n Math.abs( that._randomFloat( emitter.opacityMiddle, emitter.opacityMiddleSpread ) ),\n Math.abs( that._randomFloat( emitter.opacityEnd, emitter.opacityEndSpread ) )\n );\n }\n\n // Cache properties on the emitter so we can access\n // them from its tick function.\n emitter.verticesIndex = parseFloat( start );\n emitter.attributes = a;\n emitter.vertices = that.geometry.vertices;\n emitter.maxAge = that.maxAge;\n\n // Assign a unique ID to this emitter\n emitter.__id = that._generateID();\n\n // Save this emitter in an array for processing during this.tick()\n if( !emitter.isStatic ) {\n that.emitters.push( emitter );\n }\n\n return that;\n },\n\n\n removeEmitter: function( emitter ) {\n var id,\n emitters = this.emitters;\n\n if( emitter instanceof SPE.Emitter ) {\n id = emitter.__id;\n }\n else if( typeof emitter === 'string' ) {\n id = emitter;\n }\n else {\n console.warn('Invalid emitter or emitter ID passed to SPE.Group#removeEmitter.' );\n return;\n }\n\n for( var i = 0, il = emitters.length; i < il; ++i ) {\n if( emitters[i].__id === id ) {\n emitters.splice(i, 1);\n break;\n }\n }\n },\n\n\n /**\n * The main particle group update function. Call this once per frame.\n *\n * @param {Number} dt\n * @return {this}\n */\n tick: function( dt ) {\n var that = this,\n emitters = that.emitters,\n numEmitters = emitters.length;\n\n dt = dt || that.fixedTimeStep;\n\n if( numEmitters === 0 ) {\n return;\n }\n\n for( var i = 0; i < numEmitters; ++i ) {\n emitters[i].tick( dt );\n }\n\n that._flagUpdate();\n return that;\n },\n\n\n /**\n * Fetch a single emitter instance from the pool.\n * If there are no objects in the pool, a new emitter will be\n * created if specified.\n *\n * @return {ShaderParticleEmitter | null}\n */\n getFromPool: function() {\n var that = this,\n pool = that._pool,\n createNew = that._createNewWhenPoolEmpty;\n\n if( pool.length ) {\n return pool.pop();\n }\n else if( createNew ) {\n return new SPE.Emitter( that._poolCreationSettings );\n }\n\n return null;\n },\n\n\n /**\n * Release an emitter into the pool.\n *\n * @param {ShaderParticleEmitter} emitter\n * @return {this}\n */\n releaseIntoPool: function( emitter ) {\n if( !(emitter instanceof SPE.Emitter) ) {\n console.error( 'Will not add non-emitter to particle group pool:', emitter );\n return;\n }\n\n emitter.reset();\n this._pool.unshift( emitter );\n\n return this;\n },\n\n\n /**\n * Get the pool array\n *\n * @return {Array}\n */\n getPool: function() {\n return this._pool;\n },\n\n\n /**\n * Add a pool of emitters to this particle group\n *\n * @param {Number} numEmitters The number of emitters to add to the pool.\n * @param {Object} emitterSettings An object describing the settings to pass to each emitter.\n * @param {Boolean} createNew Should a new emitter be created if the pool runs out?\n * @return {this}\n */\n addPool: function( numEmitters, emitterSettings, createNew ) {\n var that = this,\n emitter;\n\n // Save relevant settings and flags.\n that._poolCreationSettings = emitterSettings;\n that._createNewWhenPoolEmpty = !!createNew;\n\n // Create the emitters, add them to this group and the pool.\n for( var i = 0; i < numEmitters; ++i ) {\n emitter = new SPE.Emitter( emitterSettings );\n that.addEmitter( emitter );\n that.releaseIntoPool( emitter );\n }\n\n return that;\n },\n\n\n /**\n * Internal method. Sets a single emitter to be alive\n *\n * @private\n *\n * @param {THREE.Vector3} pos\n * @return {this}\n */\n _triggerSingleEmitter: function( pos ) {\n var that = this,\n emitter = that.getFromPool();\n\n if( emitter === null ) {\n console.log('SPE.Group pool ran out.');\n return;\n }\n\n // TODO: Should an instanceof check happen here? Or maybe at least a typeof?\n if( pos ) {\n emitter.position.copy( pos );\n }\n\n emitter.enable();\n\n setTimeout( function() {\n emitter.disable();\n that.releaseIntoPool( emitter );\n }, that.maxAgeMilliseconds );\n\n return that;\n },\n\n\n /**\n * Set a given number of emitters as alive, with an optional position\n * vector3 to move them to.\n *\n * @param {Number} numEmitters\n * @param {THREE.Vector3} position\n * @return {this}\n */\n triggerPoolEmitter: function( numEmitters, position ) {\n var that = this;\n\n if( typeof numEmitters === 'number' && numEmitters > 1) {\n for( var i = 0; i < numEmitters; ++i ) {\n that._triggerSingleEmitter( position );\n }\n }\n else {\n that._triggerSingleEmitter( position );\n }\n\n return that;\n }\n};\n\n\n// Extend ShaderParticleGroup's prototype with functions from utils object.\nfor( var i in SPE.utils ) {\n SPE.Group.prototype[ '_' + i ] = SPE.utils[i];\n}\n\n\n// The all-important shaders\nSPE.shaders = {\n vertex: [\n 'uniform float duration;',\n 'uniform int hasPerspective;',\n\n 'attribute vec3 colorStart;',\n 'attribute vec3 colorMiddle;',\n 'attribute vec3 colorEnd;',\n 'attribute vec3 opacity;',\n\n 'attribute vec3 acceleration;',\n 'attribute vec3 velocity;',\n 'attribute float alive;',\n 'attribute float age;',\n\n 'attribute vec3 size;',\n 'attribute vec4 angle;',\n\n // values to be passed to the fragment shader\n 'varying vec4 vColor;',\n 'varying float vAngle;',\n\n\n // Integrate acceleration into velocity and apply it to the particle's position\n 'vec4 GetPos() {',\n 'vec3 newPos = vec3( position );',\n\n // Move acceleration & velocity vectors to the value they\n // should be at the current age\n 'vec3 a = acceleration * age;',\n 'vec3 v = velocity * age;',\n\n // Move velocity vector to correct values at this age\n 'v = v + (a * age);',\n\n // Add velocity vector to the newPos vector\n 'newPos = newPos + v;',\n\n // Convert the newPos vector into world-space\n 'vec4 mvPosition = modelViewMatrix * vec4( newPos, 1.0 );',\n\n 'return mvPosition;',\n '}',\n\n\n 'void main() {',\n\n 'float positionInTime = (age / duration);',\n\n 'float lerpAmount1 = (age / (0.5 * duration));', // percentage during first half\n 'float lerpAmount2 = ((age - 0.5 * duration) / (0.5 * duration));', // percentage during second half\n 'float halfDuration = duration / 2.0;',\n 'float pointSize = 0.0;',\n\n 'vAngle = 0.0;',\n\n 'if( alive > 0.5 ) {',\n\n // lerp the color and opacity\n 'if( positionInTime < 0.5 ) {',\n 'vColor = vec4( mix(colorStart, colorMiddle, lerpAmount1), mix(opacity.x, opacity.y, lerpAmount1) );',\n '}',\n 'else {',\n 'vColor = vec4( mix(colorMiddle, colorEnd, lerpAmount2), mix(opacity.y, opacity.z, lerpAmount2) );',\n '}',\n\n\n // Get the position of this particle so we can use it\n // when we calculate any perspective that might be required.\n 'vec4 pos = GetPos();',\n\n\n // Determine the angle we should use for this particle.\n 'if( angle[3] == 1.0 ) {',\n 'vAngle = -atan(pos.y, pos.x);',\n '}',\n 'else if( positionInTime < 0.5 ) {',\n 'vAngle = mix( angle.x, angle.y, lerpAmount1 );',\n '}',\n 'else {',\n 'vAngle = mix( angle.y, angle.z, lerpAmount2 );',\n '}',\n\n // Determine point size.\n 'if( positionInTime < 0.5) {',\n 'pointSize = mix( size.x, size.y, lerpAmount1 );',\n '}',\n 'else {',\n 'pointSize = mix( size.y, size.z, lerpAmount2 );',\n '}',\n\n\n 'if( hasPerspective == 1 ) {',\n 'pointSize = pointSize * ( 300.0 / length( pos.xyz ) );',\n '}',\n\n // Set particle size and position\n 'gl_PointSize = pointSize;',\n 'gl_Position = projectionMatrix * pos;',\n '}',\n\n 'else {',\n // Hide particle and set its position to the (maybe) glsl\n // equivalent of Number.POSITIVE_INFINITY\n 'vColor = vec4( 0.0, 0.0, 0.0, 0.0 );',\n 'gl_Position = vec4(1000000000.0, 1000000000.0, 1000000000.0, 0.0);',\n '}',\n '}',\n ].join('\\n'),\n\n fragment: [\n 'uniform sampler2D texture;',\n 'uniform int colorize;',\n\n 'varying vec4 vColor;',\n 'varying float vAngle;',\n\n 'void main() {',\n 'float c = cos(vAngle);',\n 'float s = sin(vAngle);',\n\n 'vec2 rotatedUV = vec2(c * (gl_PointCoord.x - 0.5) + s * (gl_PointCoord.y - 0.5) + 0.5,',\n 'c * (gl_PointCoord.y - 0.5) - s * (gl_PointCoord.x - 0.5) + 0.5);',\n\n 'vec4 rotatedTexture = texture2D( texture, rotatedUV );',\n\n 'if( colorize == 1 ) {',\n 'gl_FragColor = vColor * rotatedTexture;',\n '}',\n 'else {',\n 'gl_FragColor = rotatedTexture;',\n '}',\n '}'\n ].join('\\n')\n};\n;\n\n// ShaderParticleEmitter 0.7.9\n//\n// (c) 2014 Luke Moody (http://www.github.com/squarefeet)\n// & Lee Stemkoski (http://www.adelphi.edu/~stemkoski/)\n//\n// Based on Lee Stemkoski's original work:\n// (https://github.com/stemkoski/stemkoski.github.com/blob/master/Three.js/js/ParticleEngine.js).\n//\n// ShaderParticleEmitter may be freely distributed under the MIT license (See LICENSE.txt)\n\nvar SPE = SPE || {};\n\nSPE.Emitter = function( options ) {\n // If no options are provided, fallback to an empty object.\n options = options || {};\n\n // Helps with minification. Not as easy to read the following code,\n // but should still be readable enough!\n var that = this;\n\n\n that.particleCount = typeof options.particleCount === 'number' ? options.particleCount : 100;\n that.type = (options.type === 'cube' || options.type === 'sphere' || options.type === 'disk') ? options.type : 'cube';\n\n that.position = options.position instanceof THREE.Vector3 ? options.position : new THREE.Vector3();\n that.positionSpread = options.positionSpread instanceof THREE.Vector3 ? options.positionSpread : new THREE.Vector3();\n\n // These two properties are only used when this.type === 'sphere' or 'disk'\n that.radius = typeof options.radius === 'number' ? options.radius : 10;\n that.radiusSpread = typeof options.radiusSpread === 'number' ? options.radiusSpread : 0;\n that.radiusScale = options.radiusScale instanceof THREE.Vector3 ? options.radiusScale : new THREE.Vector3(1, 1, 1);\n that.radiusSpreadClamp = typeof options.radiusSpreadClamp === 'number' ? options.radiusSpreadClamp : 0;\n\n that.acceleration = options.acceleration instanceof THREE.Vector3 ? options.acceleration : new THREE.Vector3();\n that.accelerationSpread = options.accelerationSpread instanceof THREE.Vector3 ? options.accelerationSpread : new THREE.Vector3();\n\n that.velocity = options.velocity instanceof THREE.Vector3 ? options.velocity : new THREE.Vector3();\n that.velocitySpread = options.velocitySpread instanceof THREE.Vector3 ? options.velocitySpread : new THREE.Vector3();\n\n\n // And again here; only used when this.type === 'sphere' or 'disk'\n that.speed = parseFloat( typeof options.speed === 'number' ? options.speed : 0.0 );\n that.speedSpread = parseFloat( typeof options.speedSpread === 'number' ? options.speedSpread : 0.0 );\n\n\n // Sizes\n that.sizeStart = parseFloat( typeof options.sizeStart === 'number' ? options.sizeStart : 1.0 );\n that.sizeStartSpread = parseFloat( typeof options.sizeStartSpread === 'number' ? options.sizeStartSpread : 0.0 );\n\n that.sizeEnd = parseFloat( typeof options.sizeEnd === 'number' ? options.sizeEnd : that.sizeStart );\n that.sizeEndSpread = parseFloat( typeof options.sizeEndSpread === 'number' ? options.sizeEndSpread : 0.0 );\n\n that.sizeMiddle = parseFloat(\n typeof options.sizeMiddle !== 'undefined' ?\n options.sizeMiddle :\n Math.abs(that.sizeEnd + that.sizeStart) / 2\n );\n that.sizeMiddleSpread = parseFloat( typeof options.sizeMiddleSpread === 'number' ? options.sizeMiddleSpread : 0 );\n\n\n // Angles\n that.angleStart = parseFloat( typeof options.angleStart === 'number' ? options.angleStart : 0 );\n that.angleStartSpread = parseFloat( typeof options.angleStartSpread === 'number' ? options.angleStartSpread : 0 );\n\n that.angleEnd = parseFloat( typeof options.angleEnd === 'number' ? options.angleEnd : 0 );\n that.angleEndSpread = parseFloat( typeof options.angleEndSpread === 'number' ? options.angleEndSpread : 0 );\n\n that.angleMiddle = parseFloat(\n typeof options.angleMiddle !== 'undefined' ?\n options.angleMiddle :\n Math.abs(that.angleEnd + that.angleStart) / 2\n );\n that.angleMiddleSpread = parseFloat( typeof options.angleMiddleSpread === 'number' ? options.angleMiddleSpread : 0 );\n\n that.angleAlignVelocity = options.angleAlignVelocity || false;\n\n\n // Colors\n that.colorStart = options.colorStart instanceof THREE.Color ? options.colorStart : new THREE.Color( 'white' );\n that.colorStartSpread = options.colorStartSpread instanceof THREE.Vector3 ? options.colorStartSpread : new THREE.Vector3();\n\n that.colorEnd = options.colorEnd instanceof THREE.Color ? options.colorEnd : that.colorStart.clone();\n that.colorEndSpread = options.colorEndSpread instanceof THREE.Vector3 ? options.colorEndSpread : new THREE.Vector3();\n\n that.colorMiddle =\n options.colorMiddle instanceof THREE.Color ?\n options.colorMiddle :\n new THREE.Color().addColors( that.colorStart, that.colorEnd ).multiplyScalar( 0.5 );\n that.colorMiddleSpread = options.colorMiddleSpread instanceof THREE.Vector3 ? options.colorMiddleSpread : new THREE.Vector3();\n\n\n\n // Opacities\n that.opacityStart = parseFloat( typeof options.opacityStart !== 'undefined' ? options.opacityStart : 1 );\n that.opacityStartSpread = parseFloat( typeof options.opacityStartSpread !== 'undefined' ? options.opacityStartSpread : 0 );\n\n that.opacityEnd = parseFloat( typeof options.opacityEnd === 'number' ? options.opacityEnd : 0 );\n that.opacityEndSpread = parseFloat( typeof options.opacityEndSpread !== 'undefined' ? options.opacityEndSpread : 0 );\n\n that.opacityMiddle = parseFloat(\n typeof options.opacityMiddle !== 'undefined' ?\n options.opacityMiddle :\n Math.abs(that.opacityEnd + that.opacityStart) / 2\n );\n that.opacityMiddleSpread = parseFloat( typeof options.opacityMiddleSpread === 'number' ? options.opacityMiddleSpread : 0 );\n\n\n // Generic\n that.duration = typeof options.duration === 'number' ? options.duration : null;\n that.alive = parseFloat( typeof options.alive === 'number' ? options.alive : 1.0 );\n that.isStatic = typeof options.isStatic === 'number' ? options.isStatic : 0;\n\n // Particle spawn callback function.\n that.onParticleSpawn = typeof options.onParticleSpawn === 'function' ? options.onParticleSpawn : null;\n\n\n // The following properties are used internally, and mostly set when this emitter\n // is added to a particle group.\n that.particlesPerSecond = 0;\n that.attributes = null;\n that.vertices = null;\n that.verticesIndex = 0;\n that.age = 0.0;\n that.maxAge = 0.0;\n\n that.particleIndex = 0.0;\n\n that.__id = null;\n\n that.userData = {};\n};\n\nSPE.Emitter.prototype = {\n\n /**\n * Reset a particle's position. Accounts for emitter type and spreads.\n *\n * @private\n *\n * @param {THREE.Vector3} p\n */\n _resetParticle: function( i ) {\n var that = this,\n type = that.type,\n spread = that.positionSpread,\n particlePosition = that.vertices[i],\n a = that.attributes,\n particleVelocity = a.velocity.value[i],\n\n vSpread = that.velocitySpread,\n aSpread = that.accelerationSpread;\n\n // Optimise for no position spread or radius\n if(\n ( type === 'cube' && spread.x === 0 && spread.y === 0 && spread.z === 0 ) ||\n ( type === 'sphere' && that.radius === 0 ) ||\n ( type === 'disk' && that.radius === 0 )\n ) {\n particlePosition.copy( that.position );\n that._randomizeExistingVector3( particleVelocity, that.velocity, vSpread );\n\n if( type === 'cube' ) {\n that._randomizeExistingVector3( that.attributes.acceleration.value[i], that.acceleration, aSpread );\n }\n }\n\n // If there is a position spread, then get a new position based on this spread.\n else if( type === 'cube' ) {\n that._randomizeExistingVector3( particlePosition, that.position, spread );\n that._randomizeExistingVector3( particleVelocity, that.velocity, vSpread );\n that._randomizeExistingVector3( that.attributes.acceleration.value[i], that.acceleration, aSpread );\n }\n\n else if( type === 'sphere') {\n that._randomizeExistingVector3OnSphere( particlePosition, that.position, that.radius, that.radiusSpread, that.radiusScale, that.radiusSpreadClamp );\n that._randomizeExistingVelocityVector3OnSphere( particleVelocity, that.position, particlePosition, that.speed, that.speedSpread );\n }\n\n else if( type === 'disk') {\n that._randomizeExistingVector3OnDisk( particlePosition, that.position, that.radius, that.radiusSpread, that.radiusScale, that.radiusSpreadClamp );\n that._randomizeExistingVelocityVector3OnSphere( particleVelocity, that.position, particlePosition, that.speed, that.speedSpread );\n }\n\n if( typeof that.onParticleSpawn === 'function' ) {\n that.onParticleSpawn( a, i );\n }\n },\n\n /**\n * Update this emitter's particle's positions. Called by the SPE.Group\n * that this emitter belongs to.\n *\n * @param {Number} dt\n */\n tick: function( dt ) {\n\n if( this.isStatic ) {\n return;\n }\n\n // Cache some values for quicker access in loops.\n var that = this,\n a = that.attributes,\n alive = a.alive.value,\n age = a.age.value,\n start = that.verticesIndex,\n particleCount = that.particleCount,\n end = start + particleCount,\n pps = that.particlesPerSecond * that.alive,\n ppsdt = pps * dt,\n m = that.maxAge,\n emitterAge = that.age,\n duration = that.duration,\n pIndex = that.particleIndex;\n\n // Loop through all the particles in this emitter and\n // determine whether they're still alive and need advancing\n // or if they should be dead and therefore marked as such.\n for( var i = start; i < end; ++i ) {\n if( alive[ i ] === 1.0 ) {\n age[ i ] += dt;\n }\n\n if( age[ i ] >= m ) {\n age[ i ] = 0.0;\n alive[ i ] = 0.0;\n }\n }\n\n // If the emitter is dead, reset any particles that are in\n // the recycled vertices array and reset the age of the\n // emitter to zero ready to go again if required, then\n // exit this function.\n if( that.alive === 0.0 ) {\n that.age = 0.0;\n return;\n }\n\n // If the emitter has a specified lifetime and we've exceeded it,\n // mark the emitter as dead and exit this function.\n if( typeof duration === 'number' && emitterAge > duration ) {\n that.alive = 0.0;\n that.age = 0.0;\n return;\n }\n\n\n\n var n = Math.max( Math.min( end, pIndex + ppsdt ), 0),\n count = 0,\n index = 0,\n pIndexFloor = pIndex | 0,\n dtInc;\n\n for( i = pIndexFloor; i < n; ++i ) {\n if( alive[ i ] !== 1.0 ) {\n ++count;\n }\n }\n\n if( count !== 0 ) {\n dtInc = dt / count;\n\n for( i = pIndexFloor; i < n; ++i, ++index ) {\n if( alive[ i ] !== 1.0 ) {\n alive[ i ] = 1.0;\n age[ i ] = dtInc * index;\n that._resetParticle( i );\n }\n }\n }\n\n that.particleIndex += ppsdt;\n\n if( that.particleIndex < 0.0 ) {\n that.particleIndex = 0.0;\n }\n\n if( pIndex >= start + particleCount ) {\n that.particleIndex = parseFloat( start );\n }\n\n // Add the delta time value to the age of the emitter.\n that.age += dt;\n\n if( that.age < 0.0 ) {\n that.age = 0.0;\n }\n },\n\n /**\n * Reset this emitter back to its starting position.\n * If `force` is truthy, then reset all particles in this\n * emitter as well, even if they're currently alive.\n *\n * @param {Boolean} force\n * @return {this}\n */\n reset: function( force ) {\n var that = this;\n\n that.age = 0.0;\n that.alive = 0;\n\n if( force ) {\n var start = that.verticesIndex,\n end = that.verticesIndex + that.particleCount,\n a = that.attributes,\n alive = a.alive.value,\n age = a.age.value;\n\n for( var i = start; i < end; ++i ) {\n alive[ i ] = 0.0;\n age[ i ] = 0.0;\n }\n }\n\n return that;\n },\n\n\n /**\n * Enable this emitter.\n */\n enable: function() {\n this.alive = 1;\n },\n\n /**\n * Disable this emitter.\n */\n disable: function() {\n this.alive = 0;\n }\n};\n\n// Extend SPE.Emitter's prototype with functions from utils object.\nfor( var i in SPE.utils ) {\n SPE.Emitter.prototype[ '_' + i ] = SPE.utils[i];\n}\n\n\n/*** EXPORTS FROM exports-loader ***/\nmodule.exports = SPE\n\n/*****************\n ** WEBPACK FOOTER\n ** ./~/imports-loader?THREE=three!./~/exports-loader?SPE!./bower_components/ShaderParticles/index.js\n ** module id = 69\n ** module chunks = 0\n **/\n//# sourceURL=webpack:///./bower_components/ShaderParticles/index.js?./~/imports-loader?THREE=three!./~/exports-loader?SPE"); + eval("module.exports = __webpack_require__.p + \"image/weathered-wood.jpg\"\n\n/*****************\n ** WEBPACK FOOTER\n ** ./src/images/weathered-wood.jpg\n ** module id = 69\n ** module chunks = 0\n **/\n//# sourceURL=webpack:///./src/images/weathered-wood.jpg?"); /***/ }, /* 70 */ /***/ function(module, exports, __webpack_require__) { - eval("/*** IMPORTS FROM imports-loader ***/\nvar THREE = __webpack_require__(13);\n\n/**\n * @author zz85 / https://github.com/zz85\n * \n * Based on \"A Practical Analytic Model for Daylight\" \n * aka The Preetham Model, the de facto standard analytic skydome model\n * http://www.cs.utah.edu/~shirley/papers/sunsky/sunsky.pdf\n * \n * First implemented by Simon Wallner\n * http://www.simonwallner.at/projects/atmospheric-scattering\n * \n * Improved by Martin Upitis\n * http://blenderartists.org/forum/showthread.php?245954-preethams-sky-impementation-HDR\n * \n * Three.js integration by zz85 http://twitter.com/blurspline\n*/\n\nTHREE.ShaderLib['sky'] = {\n\n\tuniforms: {\n\n\t\tluminance:\t { type: \"f\", value:1 },\n\t\tturbidity:\t { type: \"f\", value:2 },\n\t\treileigh:\t { type: \"f\", value:1 },\n\t\tmieCoefficient:\t { type: \"f\", value:0.005 },\n\t\tmieDirectionalG: { type: \"f\", value:0.8 },\n\t\tsunPosition: \t { type: \"v3\", value: new THREE.Vector3() }\n\n\t},\n\n\tvertexShader: [\n\n\t\t\"varying vec3 vWorldPosition;\",\n\t\t\"varying vec2 vUv;\",\n\n\t\t\"void main() {\",\n\n\t\t\t\"vec4 worldPosition = modelMatrix * vec4( position, 1.0 );\",\n\t\t\t\"vWorldPosition = worldPosition.xyz;\",\n\t\t\t\"vUv = uv;\",\n\n\t\t\t\"gl_Position = projectionMatrix * modelViewMatrix * vec4( position, 1.0 );\",\n\n\t\t\"}\",\n\n\t].join(\"\\n\"),\n\n\tfragmentShader: [\n\n\n\t\t\"uniform sampler2D skySampler;\",\n\t\t\"uniform vec3 sunPosition;\",\n\t\t\"varying vec3 vWorldPosition;\",\n\t\t\"varying vec2 vUv;\",\n\n\n\t\t\"vec3 cameraPos = vec3(0., 0., 0.);\",\n\t\t\"// uniform sampler2D sDiffuse;\",\n\t\t\"// const float turbidity = 10.0; //\",\n\t\t\"// const float reileigh = 2.; //\",\n\t\t\"// const float luminance = 1.0; //\",\n\t\t\"// const float mieCoefficient = 0.005;\",\n\t\t\"// const float mieDirectionalG = 0.8;\",\n\n\t\t\"uniform float luminance;\",\n\t\t\"uniform float turbidity;\",\n\t\t\"uniform float reileigh;\",\n\t\t\"uniform float mieCoefficient;\",\n\t\t\"uniform float mieDirectionalG;\",\n\n\n\t\t\"vec3 sunDirection = normalize(sunPosition);\",\n\t\t\"float reileighCoefficient = reileigh;\",\n\n\t\t\"// constants for atmospheric scattering\",\n\t\t\"const float e = 2.71828182845904523536028747135266249775724709369995957;\",\n\t\t\"const float pi = 3.141592653589793238462643383279502884197169;\",\n\n\t\t\"const float n = 1.0003; // refractive index of air\",\n\t\t\"const float N = 2.545E25; // number of molecules per unit volume for air at\",\n\t\t\t\t\t\t\t\t\"// 288.15K and 1013mb (sea level -45 celsius)\",\n\t\t\"const float pn = 0.035;\t// depolatization factor for standard air\",\n\n\t\t\"// wavelength of used primaries, according to preetham\",\n\t\t\"const vec3 lambda = vec3(680E-9, 550E-9, 450E-9);\",\n\n\t\t\"// mie stuff\",\n\t\t\"// K coefficient for the primaries\",\n\t\t\"const vec3 K = vec3(0.686, 0.678, 0.666);\",\n\t\t\"const float v = 4.0;\",\n\n\t\t\"// optical length at zenith for molecules\",\n\t\t\"const float rayleighZenithLength = 8.4E3;\",\n\t\t\"const float mieZenithLength = 1.25E3;\",\n\t\t\"const vec3 up = vec3(0.0, 1.0, 0.0);\",\n\n\t\t\"const float EE = 1000.0;\",\n\t\t\"const float sunAngularDiameterCos = 0.999956676946448443553574619906976478926848692873900859324;\",\n\t\t\"// 66 arc seconds -> degrees, and the cosine of that\",\n\n\t\t\"// earth shadow hack\",\n\t\t\"const float cutoffAngle = pi/1.95;\",\n\t\t\"const float steepness = 1.5;\",\n\n\n\t\t\"vec3 totalRayleigh(vec3 lambda)\",\n\t\t\"{\",\n\t\t\t\"return (8.0 * pow(pi, 3.0) * pow(pow(n, 2.0) - 1.0, 2.0) * (6.0 + 3.0 * pn)) / (3.0 * N * pow(lambda, vec3(4.0)) * (6.0 - 7.0 * pn));\",\n\t\t\"}\",\n\n\t\t// see http://blenderartists.org/forum/showthread.php?321110-Shaders-and-Skybox-madness\n\t\t\"// A simplied version of the total Reayleigh scattering to works on browsers that use ANGLE\",\n\t\t\"vec3 simplifiedRayleigh()\",\n\t\t\"{\",\n\t\t\t\"return 0.0005 / vec3(94, 40, 18);\",\n\t\t\t// return 0.00054532832366 / (3.0 * 2.545E25 * pow(vec3(680E-9, 550E-9, 450E-9), vec3(4.0)) * 6.245);\n\t\t\"}\",\n\n\t\t\"float rayleighPhase(float cosTheta)\",\n\t\t\"{\t \",\n\t\t\t\"return (3.0 / (16.0*pi)) * (1.0 + pow(cosTheta, 2.0));\",\n\t\t\"//\treturn (1.0 / (3.0*pi)) * (1.0 + pow(cosTheta, 2.0));\",\n\t\t\"//\treturn (3.0 / 4.0) * (1.0 + pow(cosTheta, 2.0));\",\n\t\t\"}\",\n\n\t\t\"vec3 totalMie(vec3 lambda, vec3 K, float T)\",\n\t\t\"{\",\n\t\t\t\"float c = (0.2 * T ) * 10E-18;\",\n\t\t\t\"return 0.434 * c * pi * pow((2.0 * pi) / lambda, vec3(v - 2.0)) * K;\",\n\t\t\"}\",\n\n\t\t\"float hgPhase(float cosTheta, float g)\",\n\t\t\"{\",\n\t\t\t\"return (1.0 / (4.0*pi)) * ((1.0 - pow(g, 2.0)) / pow(1.0 - 2.0*g*cosTheta + pow(g, 2.0), 1.5));\",\n\t\t\"}\",\n\n\t\t\"float sunIntensity(float zenithAngleCos)\",\n\t\t\"{\",\n\t\t\t\"return EE * max(0.0, 1.0 - exp(-((cutoffAngle - acos(zenithAngleCos))/steepness)));\",\n\t\t\"}\",\n\n\t\t\"// float logLuminance(vec3 c)\",\n\t\t\"// {\",\n\t\t\"// \treturn log(c.r * 0.2126 + c.g * 0.7152 + c.b * 0.0722);\",\n\t\t\"// }\",\n\n\t\t\"// Filmic ToneMapping http://filmicgames.com/archives/75\",\n\t\t\"float A = 0.15;\",\n\t\t\"float B = 0.50;\",\n\t\t\"float C = 0.10;\",\n\t\t\"float D = 0.20;\",\n\t\t\"float E = 0.02;\",\n\t\t\"float F = 0.30;\",\n\t\t\"float W = 1000.0;\",\n\n\t\t\"vec3 Uncharted2Tonemap(vec3 x)\",\n\t\t\"{\",\n\t\t \"return ((x*(A*x+C*B)+D*E)/(x*(A*x+B)+D*F))-E/F;\",\n\t\t\"}\",\n\n\n\t\t\"void main() \",\n\t\t\"{\",\n\t\t\t\"float sunfade = 1.0-clamp(1.0-exp((sunPosition.y/450000.0)),0.0,1.0);\",\n\n\t\t\t\"// luminance = 1.0 ;// vWorldPosition.y / 450000. + 0.5; //sunPosition.y / 450000. * 1. + 0.5;\",\n\n\t\t\t \"// gl_FragColor = vec4(sunfade, sunfade, sunfade, 1.0);\",\n\t\t\t\n\t\t\t\"reileighCoefficient = reileighCoefficient - (1.0* (1.0-sunfade));\",\n\t\t\t\n\t\t\t\"float sunE = sunIntensity(dot(sunDirection, up));\",\n\n\t\t\t\"// extinction (absorbtion + out scattering) \",\n\t\t\t\"// rayleigh coefficients\",\n\n\t\t\t// \"vec3 betaR = totalRayleigh(lambda) * reileighCoefficient;\",\n\t\t\t\"vec3 betaR = simplifiedRayleigh() * reileighCoefficient;\",\n\n\t\t\t\"// mie coefficients\",\n\t\t\t\"vec3 betaM = totalMie(lambda, K, turbidity) * mieCoefficient;\",\n\n\t\t\t\"// optical length\",\n\t\t\t\"// cutoff angle at 90 to avoid singularity in next formula.\",\n\t\t\t\"float zenithAngle = acos(max(0.0, dot(up, normalize(vWorldPosition - cameraPos))));\",\n\t\t\t\"float sR = rayleighZenithLength / (cos(zenithAngle) + 0.15 * pow(93.885 - ((zenithAngle * 180.0) / pi), -1.253));\",\n\t\t\t\"float sM = mieZenithLength / (cos(zenithAngle) + 0.15 * pow(93.885 - ((zenithAngle * 180.0) / pi), -1.253));\",\n\n\n\n\t\t\t\"// combined extinction factor\t\",\n\t\t\t\"vec3 Fex = exp(-(betaR * sR + betaM * sM));\",\n\n\t\t\t\"// in scattering\",\n\t\t\t\"float cosTheta = dot(normalize(vWorldPosition - cameraPos), sunDirection);\",\n\n\t\t\t\"float rPhase = rayleighPhase(cosTheta*0.5+0.5);\",\n\t\t\t\"vec3 betaRTheta = betaR * rPhase;\",\n\n\t\t\t\"float mPhase = hgPhase(cosTheta, mieDirectionalG);\",\n\t\t\t\"vec3 betaMTheta = betaM * mPhase;\",\n\n\n\t\t\t\"vec3 Lin = pow(sunE * ((betaRTheta + betaMTheta) / (betaR + betaM)) * (1.0 - Fex),vec3(1.5));\",\n\t\t\t\"Lin *= mix(vec3(1.0),pow(sunE * ((betaRTheta + betaMTheta) / (betaR + betaM)) * Fex,vec3(1.0/2.0)),clamp(pow(1.0-dot(up, sunDirection),5.0),0.0,1.0));\",\n\n\t\t\t\"//nightsky\",\n\t\t\t\"vec3 direction = normalize(vWorldPosition - cameraPos);\",\n\t\t\t\"float theta = acos(direction.y); // elevation --> y-axis, [-pi/2, pi/2]\",\n\t\t\t\"float phi = atan(direction.z, direction.x); // azimuth --> x-axis [-pi/2, pi/2]\",\n\t\t\t\"vec2 uv = vec2(phi, theta) / vec2(2.0*pi, pi) + vec2(0.5, 0.0);\",\n\t\t\t\"// vec3 L0 = texture2D(skySampler, uv).rgb+0.1 * Fex;\",\n\t\t\t\"vec3 L0 = vec3(0.1) * Fex;\",\n\t\t\t\n\t\t\t\"// composition + solar disc\",\n\t\t\t\"//if (cosTheta > sunAngularDiameterCos)\",\n\t\t\t\"float sundisk = smoothstep(sunAngularDiameterCos,sunAngularDiameterCos+0.00002,cosTheta);\",\n\t\t\t\"// if (normalize(vWorldPosition - cameraPos).y>0.0)\",\n\t\t\t\"L0 += (sunE * 19000.0 * Fex)*sundisk;\",\n\n\n\t\t\t\"vec3 whiteScale = 1.0/Uncharted2Tonemap(vec3(W));\",\n\t\t\t\n\t\t\t\"vec3 texColor = (Lin+L0); \",\n\t\t\t\"texColor *= 0.04 ;\",\n\t\t\t\"texColor += vec3(0.0,0.001,0.0025)*0.3;\",\n\t\t\t\n\t\t\t\"float g_fMaxLuminance = 1.0;\",\n\t\t\t\"float fLumScaled = 0.1 / luminance; \",\n\t\t\t\"float fLumCompressed = (fLumScaled * (1.0 + (fLumScaled / (g_fMaxLuminance * g_fMaxLuminance)))) / (1.0 + fLumScaled); \",\n\n\t\t\t\"float ExposureBias = fLumCompressed;\",\n\t\t \n\t\t\t\"vec3 curr = Uncharted2Tonemap((log2(2.0/pow(luminance,4.0)))*texColor);\",\n\t\t\t\"vec3 color = curr*whiteScale;\",\n\n\t\t\t\"vec3 retColor = pow(color,vec3(1.0/(1.2+(1.2*sunfade))));\",\n\n\t\t\t\n\t\t\t\"gl_FragColor.rgb = retColor;\",\n\t\t\t\t\n\t\t\t\"gl_FragColor.a = 1.0;\",\n\t\t\"}\",\n\n\t].join(\"\\n\")\n\n};\n\nTHREE.Sky = function () {\n\n\tvar skyShader = THREE.ShaderLib[ \"sky\" ];\n\tvar skyUniforms = THREE.UniformsUtils.clone( skyShader.uniforms );\n\n\tvar skyMat = new THREE.ShaderMaterial( { \n\t\tfragmentShader: skyShader.fragmentShader, \n\t\tvertexShader: skyShader.vertexShader, \n\t\tuniforms: skyUniforms,\n\t\tside: THREE.BackSide\n\t} );\n\n\tvar skyGeo = new THREE.SphereGeometry( 450000, 32, 15 );\n\tvar skyMesh = new THREE.Mesh( skyGeo, skyMat );\n\n\n\t// Expose variables\n\tthis.mesh = skyMesh;\n\tthis.uniforms = skyUniforms;\n\n\n};\n\n\n/*****************\n ** WEBPACK FOOTER\n ** ./~/imports-loader?THREE=three!./bower_components/SkyShader/index.js\n ** module id = 70\n ** module chunks = 0\n **/\n//# sourceURL=webpack:///./bower_components/SkyShader/index.js?./~/imports-loader?THREE=three"); + eval("module.exports = __webpack_require__.p + \"image/wood.jpg\"\n\n/*****************\n ** WEBPACK FOOTER\n ** ./src/images/wood.jpg\n ** module id = 70\n ** module chunks = 0\n **/\n//# sourceURL=webpack:///./src/images/wood.jpg?"); /***/ }, /* 71 */ /***/ function(module, exports, __webpack_require__) { - eval("/*** IMPORTS FROM imports-loader ***/\nvar THREE = __webpack_require__(13);\n\n/**\n * @author mrdoob / http://mrdoob.com/\n */\n\nTHREE.Audio = function ( listener ) {\n\n\tTHREE.Object3D.call( this );\n\n\tthis.type = 'Audio';\n\tthis.started = false;\n\n\tif (listener.context) {\n\n\t\tthis.context = listener.context;\n\t\t// this.source = this.context.createBufferSource();\n\n\t\tthis.gain = this.context.createGain();\n\t\tthis.gain.connect( listener.input );\n\n\t\tthis.panner = this.context.createPanner();\n\t\tthis.panner.connect( this.gain );\n\n\t} else {\n\n\t\tthis.source = new Audio();\n\n\t}\n};\n\nTHREE.Audio.prototype = Object.create( THREE.Object3D.prototype );\n\nTHREE.Audio.prototype.load = function ( sources ) {\n\t//todo: support multiple sources for different audio formats\n\n\tvar scope = this;\n\tvar file;\n\tvar i;\n\tvar match;\n\tvar element = this.source instanceof window.HTMLAudioElement ? this.source : new Audio();\n\n\tif (typeof sources === 'string') {\n\t\tsources = [sources];\n\t}\n\n\tfor (i = 0; i < sources.length; i++) {\n\t\tfile = sources[i];\n\t\tmatch = /\\.([a-z0-9]+)$/i.exec(file);\n\t\tif (match && element.canPlayType('audio/' + match[1])) {\n\t\t\tbreak;\n\t\t}\n\t}\n\n\tif (this.context) {\n\t\tvar request = new XMLHttpRequest();\n\t\trequest.open( 'GET', file, true );\n\t\trequest.responseType = 'arraybuffer';\n\t\trequest.onload = function ( e ) {\n\t\t\tconsole.log('audio buffer loaded. decoding...', e );\n\t\t\tscope.context.decodeAudioData( this.response, function ( buffer ) {\n\n\t\t\t\tscope.buffer = buffer;\n\t\t\t\tif (scope.started) {\n\t\t\t\t\tscope.start();\n\t\t\t\t}\n\n\t\t\t}, function onFailure(e) {\n\t\t\t\tconsole.log('Decoding the audio buffer failed', e);\n\t\t\t} );\n\n\t\t};\n\n\t\trequest.onerror = function ( e ) {\n\t\t\tconsole.log('error', e);\n\t\t};\n\n\t\trequest.send();\n\n\t} else {\n\n\t\tthis.source.src = file;\n\t\tthis.source.play();\n\n\t}\n\n\treturn this;\n};\n\nTHREE.Audio.prototype.stop = function ( value ) {\n\n\tif (this.context) {\n\t\tthis.source.stop();\n\t\tthis.source.disconnect( this.panner );\n\t\tthis.source = null;\n\t} else {\n\t\tthis.source.pause();\n\t\tthis.source.currentTime = 0;\n\t}\n\tthis.started = false;\n};\n\nTHREE.Audio.prototype.start = function ( value ) {\n\n\tthis.started = true;\n\tif (this.context) {\n\t\tif (this.source) {\n\t\t\tthis.source.disconnect( this.panner );\n\t\t}\n\n\t\tif (this.buffer) {\n\t\t\tthis.source = this.context.createBufferSource();\n\t\t\tthis.source.buffer = this.buffer;\n\t\t\tthis.source.connect( this.panner );\n\t\t\tthis.source.start( 0 );\n\t\t}\n\t} else {\n\t\tthis.source.currentTime = 0;\n\t\tthis.source.play();\n\t}\n\n};\n\nTHREE.Audio.prototype.setLoop = function ( value ) {\n\n\tthis.source.loop = value;\n\n};\n\nTHREE.Audio.prototype.setRefDistance = function ( value ) {\n\n\tif ( this.panner ) {\n\n\t\tthis.panner.refDistance = value;\n\n\t}\n\n};\n\nTHREE.Audio.prototype.setRolloffFactor = function ( value ) {\n\n\tif ( this.panner ) {\n\n\t\tthis.panner.rolloffFactor = value;\n\n\t}\n\n};\n\nTHREE.Audio.prototype.volume = function ( volume, time ) {\n\n\tif ( this.gain ) {\n\n\t\tif ( volume !== undefined ) {\n\t\t\tthis.gain.gain.linearRampToValueAtTime( volume, this.context.currentTime + (time || 0));\n\t\t}\n\n\t\treturn this.gain.gain.value;\n\t}\n\n\tif ( volume !== undefined ) {\n\t\tthis.source.volume = volume;\n\t}\n\n\treturn this.source.volume;\n};\n\nTHREE.Audio.prototype.updateMatrixWorld = ( function () {\n\n\tvar position = new THREE.Vector3();\n\n\treturn function ( force ) {\n\n\t\tTHREE.Object3D.prototype.updateMatrixWorld.call( this, force );\n\n\t\tposition.setFromMatrixPosition( this.matrixWorld );\n\n\t\tif (this.panner) {\n\n\t\t\tthis.panner.setPosition( position.x, position.y, position.z );\n\n\t\t}\n\n\t};\n\n} )();\n\n// File:src/extras/audio/AudioListener.js\n\n/**\n * @author mrdoob / http://mrdoob.com/\n */\n\nTHREE.AudioListener = function () {\n\tvar AudioContext = window.AudioContext || window.webkitAudioContext;\n\n\tTHREE.Object3D.call( this );\n\n\tthis.type = 'AudioListener';\n\n\tif (AudioContext) {\n\t\tthis.context = new AudioContext();\n\t\tthis.input = this.context.createGain();\n\n\t\tthis.input.connect( this.context.destination );\n\t}\n};\n\nTHREE.AudioListener.prototype = Object.create( THREE.Object3D.prototype );\n\nTHREE.AudioListener.prototype.volume = function (val) {\n\tif (this.input) {\n\t\tval = val !== undefined && parseFloat(val);\n\t\tif (!isNaN(val)) {\n\t\t\tthis.input.gain.value = val;\n\t\t}\n\n\t\treturn this.input.gain.value;\n\t}\n};\n\nTHREE.AudioListener.prototype.updateMatrixWorld = ( function () {\n\n\tvar position = new THREE.Vector3();\n\tvar quaternion = new THREE.Quaternion();\n\tvar scale = new THREE.Vector3();\n\n\tvar orientation = new THREE.Vector3();\n\n\treturn function ( force ) {\n\n\t\tTHREE.Object3D.prototype.updateMatrixWorld.call( this, force );\n\n\t\tvar listener;\n\n\t\tif (this.context) {\n\t\t\tlistener = this.context.listener;\n\n\t\t\tthis.matrixWorld.decompose( position, quaternion, scale );\n\n\t\t\torientation.set( 0, 0, -1 ).applyQuaternion( quaternion );\n\n\t\t\tlistener.setPosition( position.x, position.y, position.z );\n\t\t\tlistener.setOrientation( orientation.x, orientation.y, orientation.z, this.up.x, this.up.y, this.up.z );\n\n\t\t}\n\t};\n\n} ());\n\n\n\n/*****************\n ** WEBPACK FOOTER\n ** ./~/imports-loader?THREE=three!./src/lib/ThreeAudio.js\n ** module id = 71\n ** module chunks = 0\n **/\n//# sourceURL=webpack:///./src/lib/ThreeAudio.js?./~/imports-loader?THREE=three"); + eval("module.exports = (function () {\n\t'use strict';\n\n\tvar materials = __webpack_require__(10),\n\t\tTHREE = __webpack_require__(13),\n\t\tgeometry = new THREE.BoxGeometry( 1, 1, 1 );\n\n\treturn function box(parent, options) {\n\t\tvar mesh;\n\n\t\tmesh = new THREE.Mesh(geometry, materials.standard());\n\t\tmesh.name = 'box';\n\n\t\tparent.add(mesh);\n\n\t\treturn mesh;\n\t};\n}());\n\n/*****************\n ** WEBPACK FOOTER\n ** ./src/objects/box.js\n ** module id = 71\n ** module chunks = 0\n **/\n//# sourceURL=webpack:///./src/objects/box.js?"); /***/ }, /* 72 */ /***/ function(module, exports, __webpack_require__) { - eval("module.exports = __webpack_require__.p + \"image/asphalt.jpg\"\n\n/*****************\n ** WEBPACK FOOTER\n ** ./src/images/asphalt.jpg\n ** module id = 72\n ** module chunks = 0\n **/\n//# sourceURL=webpack:///./src/images/asphalt.jpg?"); + eval("module.exports = (function () {\n\t'use strict';\n\n\tvar materials = __webpack_require__(10),\n\t\tTHREE = __webpack_require__(13);\n\n\tfunction cylinder(parent, options) {\n\t\tvar geometry,\n\t\t\tmesh;\n\n\t\tgeometry = new THREE.CylinderGeometry(\n\t\t\toptions.radiusTop === undefined ? 0.5 : options.radiusTop,\n\t\t\toptions.radiusBottom === undefined ? 0.5 : options.radiusBottom,\n\t\t\toptions.height === undefined ? 1 : options.height,\n\t\t\toptions.radiusSegments === undefined ? 16 : options.radiusSegments,\n\t\t\toptions.heightSegments,\n\t\t\toptions.openEnded\n\t\t);\n\t\tmesh = new THREE.Mesh(geometry, materials.standard());\n\t\tmesh.name = 'cylinder';\n\n\t\tparent.add(mesh);\n\n\t\treturn mesh;\n\t}\n\n\treturn cylinder;\n}());\n\n/*****************\n ** WEBPACK FOOTER\n ** ./src/objects/cylinder.js\n ** module id = 72\n ** module chunks = 0\n **/\n//# sourceURL=webpack:///./src/objects/cylinder.js?"); /***/ }, /* 73 */ /***/ function(module, exports, __webpack_require__) { - eval("module.exports = __webpack_require__.p + \"image/brick-tiles.jpg\"\n\n/*****************\n ** WEBPACK FOOTER\n ** ./src/images/brick-tiles.jpg\n ** module id = 73\n ** module chunks = 0\n **/\n//# sourceURL=webpack:///./src/images/brick-tiles.jpg?"); + eval("module.exports = (function () {\n\t'use strict';\n\n\tvar materials = __webpack_require__(10),\n\t\tTHREE = __webpack_require__(13);\n\n\tfunction floor(parent, options) {\n\t\tvar obj,\n\t\t\tgeometry;\n\n\t\tgeometry = new THREE.CircleGeometry( options.radius || 100, options.segments || 16 );\n\t\tgeometry.applyMatrix( new THREE.Matrix4().makeRotationX(-Math.PI / 2));\n\n\t\tobj = new THREE.Mesh(\n\t\t\tgeometry,\n\t\t\tmaterials.checkerboard({\n\t\t\t\trepeat: 100\n\t\t\t})\n\t\t);\n\t\tobj.name = 'floor';\n\n\t\tobj.receiveShadow = true;\n\n\t\tparent.add(obj);\n\n\t\treturn obj;\n\t}\n\n\treturn floor;\n}());\n\n/*****************\n ** WEBPACK FOOTER\n ** ./src/objects/floor.js\n ** module id = 73\n ** module chunks = 0\n **/\n//# sourceURL=webpack:///./src/objects/floor.js?"); /***/ }, /* 74 */ /***/ function(module, exports, __webpack_require__) { - eval("module.exports = __webpack_require__.p + \"image/bricks-normal.jpg\"\n\n/*****************\n ** WEBPACK FOOTER\n ** ./src/images/bricks-normal.jpg\n ** module id = 74\n ** module chunks = 0\n **/\n//# sourceURL=webpack:///./src/images/bricks-normal.jpg?"); + eval("module.exports = (function () {\n\t'use strict';\n\n\tvar materials = __webpack_require__(10),\n\t\tTHREE = __webpack_require__(13);\n\n\treturn function image(parent, options) {\n\t\tvar geometry,\n\t\t\tmaterial,\n\t\t\tmesh,\n\t\t\tsrc,\n\t\t\ttex;\n\n\t\tif (typeof options === 'string') {\n\t\t\tsrc = options;\n\t\t} else if (options) {\n\t\t\tsrc = options.src;\n\t\t}\n\n\t\tif (src) {\n\t\t\ttex = materials.imageTexture(src, THREE.UVMapping, function (t, image) {\n\t\t\t\t//todo: don't do any of this if object has been deleted\n\t\t\t\tgeometry.applyMatrix(new THREE.Matrix4().makeScale(1, image.naturalHeight / image.naturalWidth, 1));\n\t\t\t\tmaterial.map = tex;\n\t\t\t\tmaterial.visible = true;\n\t\t\t\tmesh.visible = true;\n\t\t\t\tparent.add(mesh);\n\t\t\t});\n\t\t}\n\n\t\tgeometry = new THREE.PlaneBufferGeometry(1, 1, 8);\n\n\t\tmaterial = new THREE.MeshBasicMaterial({\n\t\t\tside: THREE.DoubleSide,\n\t\t\ttransparent: true,\n\t\t\tmap: tex\n\t\t});\n\n\t\tmesh = new THREE.Mesh( geometry, material );\n\n\t\tmesh.visible = false;\n\n\t\tparent.add(mesh);\n\n\t\treturn mesh;\n\t};\n}());\n\n/*****************\n ** WEBPACK FOOTER\n ** ./src/objects/image.js\n ** module id = 74\n ** module chunks = 0\n **/\n//# sourceURL=webpack:///./src/objects/image.js?"); /***/ }, /* 75 */ /***/ function(module, exports, __webpack_require__) { - eval("module.exports = __webpack_require__.p + \"image/bricks-specular.jpg\"\n\n/*****************\n ** WEBPACK FOOTER\n ** ./src/images/bricks-specular.jpg\n ** module id = 75\n ** module chunks = 0\n **/\n//# sourceURL=webpack:///./src/images/bricks-specular.jpg?"); + eval("module.exports = (function () {\n\t'use strict';\n\n\tvar materials = __webpack_require__(10),\n\t\tTHREE = __webpack_require__(13),\n\t\tgeometry = new THREE.SphereGeometry(1000, 60, 60);\n\n\tgeometry.applyMatrix(new THREE.Matrix4().makeScale(-1, 1, 1));\n\tgeometry.applyMatrix(new THREE.Matrix4().makeRotationY(- Math.PI / 2));\n\n\treturn function panorama(parent, options) {\n\t\tvar material,\n\t\t\tmesh,\n\t\t\tsrc,\n\t\t\ttex;\n\n\t\tif (typeof options === 'string') {\n\t\t\tsrc = options;\n\t\t} else if (options) {\n\t\t\tsrc = options.src;\n\t\t}\n\n\t\tif (src) {\n\t\t\ttex = materials.imageTexture(src, THREE.UVMapping);\n\t\t}\n\n\t\tmaterial = new THREE.MeshBasicMaterial({\n\t\t\ttransparent: true,\n\t\t\tmap: tex\n\t\t});\n\n\t\tmesh = new THREE.Mesh(geometry, material);\n\n\t\tif (options && options.stereo) {\n\t\t\tif (options.stereo === 'vertical') {\n\t\t\t\ttex.repeat.y = 0.5;\n\t\t\t} else {\n\t\t\t\ttex.repeat.x = 0.5;\n\t\t\t}\n\t\t\tmesh.userData.stereo = options.stereo;\n\t\t}\n\n\t\tmesh.name = 'panorama';\n\n\t\tparent.add(mesh);\n\n\t\treturn mesh;\n\t};\n}());\n\n/*****************\n ** WEBPACK FOOTER\n ** ./src/objects/panorama.js\n ** module id = 75\n ** module chunks = 0\n **/\n//# sourceURL=webpack:///./src/objects/panorama.js?"); /***/ }, /* 76 */ /***/ function(module, exports, __webpack_require__) { - eval("module.exports = __webpack_require__.p + \"image/bricks.jpg\"\n\n/*****************\n ** WEBPACK FOOTER\n ** ./src/images/bricks.jpg\n ** module id = 76\n ** module chunks = 0\n **/\n//# sourceURL=webpack:///./src/images/bricks.jpg?"); + eval("module.exports = (function () {\n\t'use strict';\n\n\tvar materials = __webpack_require__(10),\n\t\tTHREE = __webpack_require__(13),\n\t\tSPE = __webpack_require__(83),\n\t\tassign = __webpack_require__(23),\n\n\t\tgroupFields = [\n\t\t\t'maxAge',\n\t\t\t'hasPerspective',\n\t\t\t'colorize',\n\t\t\t'blending',\n\t\t\t'transparent',\n\t\t\t'alphaTest',\n\t\t\t'depthWrite',\n\t\t\t'depthTest',\n\t\t\t'fixedTimeStep'\n\t\t];\n\n\treturn function particles(parent, options) {\n\t\tvar obj = new THREE.Object3D(),\n\t\t\tkey,\n\t\t\tgroupOptions = {},\n\t\t\temitterOptions = {};\n\n\t\tobj.name = 'particles';\n\n\t\tif (options) {\n\t\t\tgroupFields.forEach(function (field) {\n\t\t\t\tif (options[field] !== undefined) {\n\t\t\t\t\tgroupOptions[field] = options[field];\n\t\t\t\t}\n\t\t\t});\n\t\t}\n\n\t\tvar particleGroup = new SPE.Group({\n\t\t\ttexture: materials.textures.cloud(),\n\t\t\t// texture: materials.imageTexture('http://squarefeet.github.io/ShaderParticleEngine/examples/img/cloudSml.png'),\n\t\t\tmaxAge: 20,\n\t\t\tblending: THREE.NormalBlending,\n\t\t\thasPerspective: 1\n\t\t});\n\n\t\tvar emitter = new SPE.Emitter({\n\t\t\tpositionSpread: new THREE.Vector3(4, 1, 24),\n\n\t\t\t//acceleration: new THREE.Vector3(0, 0, 0),\n\n\t\t\t// velocity: new THREE.Vector3(0, 0, 1),\n\n\t\t\tcolorStart: new THREE.Color('white'),\n\t\t\tsizeStart: 0.5,\n\t\t\tsizeStartSpread: 1.5 / 4,\n\t\t\t// opacityStart: 0,\n\t\t\t// opacityMiddle: 1,\n\t\t\t// opacityEnd: 0,\n\n\t\t\tparticleCount: 8000,\n\t\t\tisStatic: 0\n\t\t});\n\n\t\tparticleGroup.addEmitter(emitter);\n\t\tobj.add(particleGroup.mesh);\n\n\t\tparent.add(obj);\n\n\t\tvar lastTime = 0;\n\t\tthis.update = function (time) {\n\t\t\tvar delta = Math.min(500, time - lastTime);\n\t\t\tlastTime = time;\n\t\t\tparticleGroup.tick(delta);\n\t\t};\n\n\t\treturn obj;\n\t};\n}());\n\n/*****************\n ** WEBPACK FOOTER\n ** ./src/objects/particles.js\n ** module id = 76\n ** module chunks = 0\n **/\n//# sourceURL=webpack:///./src/objects/particles.js?"); /***/ }, /* 77 */ /***/ function(module, exports, __webpack_require__) { - eval("module.exports = \"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAQAAAAEAAQMAAABmvDolAAAABlBMVEUsLCzp6enLhVdXAAAAAWJLR0QAiAUdSAAAAAlwSFlzAAALEwAACxMBAJqcGAAAAAd0SU1FB94KFBIOCP7R3TQAAAA4SURBVGje7dAhEgAACMOw/f/T4Gc5XKqjmlRTBQAAAAAAAAAAAAAA4AiMAQAAAAAAAAAAAADgGSyKafDiEFszywAAAABJRU5ErkJggg==\"\n\n/*****************\n ** WEBPACK FOOTER\n ** ./src/images/checkerboard.png\n ** module id = 77\n ** module chunks = 0\n **/\n//# sourceURL=webpack:///./src/images/checkerboard.png?"); + eval("module.exports = (function () {\n\t'use strict';\n\n\tvar materials = __webpack_require__(10),\n\t\tTHREE = __webpack_require__(13),\n\t\tTAU = Math.PI * 2,\n\t\tHALF_PI = Math.PI / 2,\n\n\t\tdistance = 400000,\n\t\tscratchVector = new THREE.Vector3(),\n\n\t\tparams = [\n\t\t\t'luminance',\n\t\t\t'turbidity',\n\t\t\t'reileigh',\n\t\t\t'mieCoefficient',\n\t\t\t'mieDirectionalG'\n\t\t];\n\n\t__webpack_require__(84);\n\n\treturn function sky(parent, options) {\n\t\tvar obj = new THREE.Sky(),\n\t\t\tself = this,\n\t\t\tscene = parent,\n\t\t\tlight,\n\t\t\tsunPosition,\n\t\t\tazimuth = Math.PI / 6,\n\t\t\taltitude = Math.PI / 6;\n\n\t\tfunction mod(x, y) {\n\t\t\treturn x - y * Math.floor(x / y);\n\t\t}\n\n\t\tfunction update() {\n\t\t\tvar sinTheta,\n\t\t\t\tcosTheta,\n\t\t\t\tphi,\n\t\t\t\tsinPhi,\n\t\t\t\tcosPhi;\n\n\t\t\tsinTheta = Math.sin(altitude);\n\t\t\tcosTheta = Math.cos(altitude);\n\t\t\tphi = -HALF_PI - azimuth;\n\t\t\tsinPhi = Math.sin(phi);\n\t\t\tcosPhi = Math.cos(phi);\n\n\t\t\tsunPosition.set(\n\t\t\t\tdistance * cosPhi * cosTheta,\n\t\t\t\tdistance * sinTheta,\n\t\t\t\tdistance * sinPhi * cosTheta\n\t\t\t);\n\n\t\t\tif (light) {\n\t\t\t\tlight.intensity = 1.5 * Math.max(0.0, 1.0 - Math.exp(-((Math.PI / 1.95 - Math.abs(HALF_PI - altitude)) / 1.5)));\n\t\t\t\tlight.position.copy(sunPosition).normalize().multiplyScalar(100);\n\t\t\t}\n\t\t}\n\n\t\tobj.mesh.name = 'sky';\n\n\t\tparent.add(obj.mesh);\n\n\t\twhile (!(scene instanceof THREE.Scene) && scene.parent) {\n\t\t\tscene = scene.parent;\n\t\t}\n\t\tlight = scene.getObjectByName('directional-light');\n\n\t\tthis.setOptions = function (options) {\n\t\t\tvar needUpdate = false,\n\t\t\t\taltitude,\n\t\t\t\tazimuth;\n\n\t\t\tif (options) {\n\t\t\t\tparams.forEach(function (param) {\n\t\t\t\t\tvar val = options[param];\n\t\t\t\t\tif (val !== undefined) {\n\t\t\t\t\t\tval = parseFloat(val);\n\t\t\t\t\t\tif (!isNaN(val)) {\n\t\t\t\t\t\t\tobj.uniforms[param].value = val;\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t});\n\n\t\t\t\tif (options.sunPosition instanceof THREE.Vector3) {\n\t\t\t\t\tobj.uniforms.sunPosition.value.copy(options.sunPosition);\n\t\t\t\t} else if (Array.isArray(options.sunPosition)) {\n\t\t\t\t\tobj.uniforms.sunPosition.value.set(obj.uniforms.sunPosition.value, options.sunPosition);\n\t\t\t\t} else {\n\t\t\t\t\tself.altitude = options.altitude;\n\t\t\t\t\tself.azimuth = options.azimuth;\n\t\t\t\t}\n\t\t\t}\n\t\t};\n\n\t\tObject.defineProperty(this, 'azimuth', {\n\t\t\tset: function (val) {\n\t\t\t\tval = mod(parseFloat(val), TAU);\n\t\t\t\tif (!isNaN(val) && val !== azimuth) {\n\t\t\t\t\tazimuth = val;\n\t\t\t\t\tupdate();\n\t\t\t\t}\n\t\t\t},\n\t\t\tget: function () {\n\t\t\t\treturn azimuth;\n\t\t\t}\n\t\t});\n\n\t\tObject.defineProperty(this, 'altitude', {\n\t\t\tset: function (val) {\n\t\t\t\tval = mod(parseFloat(val), TAU);\n\t\t\t\tif (!isNaN(val) && val !== altitude) {\n\t\t\t\t\taltitude = val;\n\t\t\t\t\tupdate();\n\t\t\t\t}\n\t\t\t},\n\t\t\tget: function() {\n\t\t\t\treturn altitude;\n\t\t\t}\n\t\t});\n\n\t\tthis.setAltitude = function (val) {\n\t\t\tself.altitude = val;\n\t\t\treturn this;\n\t\t};\n\n\t\tthis.setAzimuth = function (val) {\n\t\t\tself.azimuth = val;\n\t\t\treturn this;\n\t\t};\n\n\t\tsunPosition = obj.uniforms.sunPosition.value;\n\t\tupdate();\n\n\t\tthis.setOptions(options);\n\n\t\treturn obj.mesh;\n\t};\n}());\n\n/*****************\n ** WEBPACK FOOTER\n ** ./src/objects/sky.js\n ** module id = 77\n ** module chunks = 0\n **/\n//# sourceURL=webpack:///./src/objects/sky.js?"); /***/ }, /* 78 */ /***/ function(module, exports, __webpack_require__) { - eval("module.exports = \"data:image/png;base64,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\"\n\n/*****************\n ** WEBPACK FOOTER\n ** ./src/images/cloud10.png\n ** module id = 78\n ** module chunks = 0\n **/\n//# sourceURL=webpack:///./src/images/cloud10.png?"); + eval("module.exports = (function () {\n\t'use strict';\n\n\tvar materials = __webpack_require__(10),\n\t\tTHREE = __webpack_require__(13);\n\n\t__webpack_require__(85);\n\n\treturn function sound(parent, options) {\n\t\tvar obj,\n\t\t\tsrc,\n\t\t\tlistener,\n\t\t\tscene = parent;\n\n\t\tif (typeof options === 'string' || Array.isArray(options)) {\n\t\t\tsrc = options;\n\t\t} else if (options) {\n\t\t\tsrc = options.src;\n\t\t}\n\n\t\twhile (!(scene instanceof THREE.Scene) && scene.parent) {\n\t\t\tscene = scene.parent;\n\t\t}\n\n\t\tlistener = scene.getObjectByName('audio-listener');\n\t\tobj = new THREE.Audio(listener);\n\t\t// obj.setLoop(true);\n\t\tobj.load(src);\n\n\t\tthis.start = obj.start.bind(obj);\n\t\tthis.volume = obj.volume.bind(obj);\n\n\t\tparent.add(obj);\n\n\t\treturn obj;\n\t};\n}());\n\n/*****************\n ** WEBPACK FOOTER\n ** ./src/objects/sound.js\n ** module id = 78\n ** module chunks = 0\n **/\n//# sourceURL=webpack:///./src/objects/sound.js?"); /***/ }, /* 79 */ /***/ function(module, exports, __webpack_require__) { - eval("module.exports = __webpack_require__.p + \"image/grass.jpg\"\n\n/*****************\n ** WEBPACK FOOTER\n ** ./src/images/grass.jpg\n ** module id = 79\n ** module chunks = 0\n **/\n//# sourceURL=webpack:///./src/images/grass.jpg?"); + eval("module.exports = (function () {\n\t'use strict';\n\n\tvar materials = __webpack_require__(10),\n\t\tTHREE = __webpack_require__(13);\n\n\treturn function box(parent, options) {\n\t\tvar geometry,\n\t\t\tmesh;\n\n\t\tgeometry = new THREE.SphereGeometry(\n\t\t\toptions.radius === undefined ? 0.5 : options.radius,\n\t\t\toptions.widthSegments === undefined ? 16 : options.widthSegments,\n\t\t\toptions.heightSegments === undefined ? 12 : options.heightSegments,\n\t\t\toptions.phiStart,\n\t\t\toptions.phiLength,\n\t\t\toptions.thetaStart,\n\t\t\toptions.thetaLength\n\t\t);\n\t\tmesh = new THREE.Mesh(geometry, materials.standard());\n\t\tmesh.name = 'sphere';\n\n\t\tparent.add(mesh);\n\n\t\treturn mesh;\n\t};\n}());\n\n/*****************\n ** WEBPACK FOOTER\n ** ./src/objects/sphere.js\n ** module id = 79\n ** module chunks = 0\n **/\n//# sourceURL=webpack:///./src/objects/sphere.js?"); /***/ }, /* 80 */ /***/ function(module, exports, __webpack_require__) { - eval("module.exports = __webpack_require__.p + \"image/metal-floor.jpg\"\n\n/*****************\n ** WEBPACK FOOTER\n ** ./src/images/metal-floor.jpg\n ** module id = 80\n ** module chunks = 0\n **/\n//# sourceURL=webpack:///./src/images/metal-floor.jpg?"); + eval("module.exports = (function () {\n\t'use strict';\n\n\tvar THREE = __webpack_require__(13),\n\t\tfontSizeRegex = /(\\d+)px/i,\n\t\tnewLineRegex = /[\\n\\r]/,\n\t\tspaceRegex = /[\\t ]/,\n\t\tlog2 = Math.log(2),\n\t\tgeometry = new THREE.PlaneBufferGeometry(1, 1);\n\n\treturn function text(parent, options) {\n\t\tvar self = this,\n\t\t\tmaterial,\n\t\t\tcanvas,\n\t\t\tctx,\n\t\t\tmesh,\n\t\t\tcontainer,\n\t\t\tsrc,\n\t\t\ttextWidth = 0,\n\t\t\ttextHeight = 0,\n\t\t\tprops = {\n\t\t\t\ttext: '',\n\t\t\t\tfont: '80px sans-serif',\n\t\t\t\ttextAlign: 'center',\n\t\t\t\ttextBaseline: '',\n\t\t\t\tdirection: '',\n\t\t\t\tfillStyle: 'white',\n\t\t\t\tresolution: 256, //pixels per meter\n\t\t\t\twrap: 5 //in meters\n\t\t\t},\n\t\t\ttex;\n\n\t\tfunction nextPowerOfTwo(n) {\n\t\t\treturn Math.pow(2, Math.ceil(Math.log(n) / log2));\n\t\t}\n\n\t\tfunction Line(word) {\n\t\t\tthis.spaceWidth = ctx.measureText(' ').width;\n\t\t\tthis.totalWidth = 0;\n\t\t\tthis.wordsWidth = 0;\n\t\t\tthis.words = [];\n\t\t\tthis.wrap = false;\n\t\t\tif (word) {\n\t\t\t\tthis.add(word);\n\t\t\t}\n\t\t}\n\n\t\tLine.prototype.text = function () {\n\t\t\treturn this.words.join(' ');\n\t\t};\n\n\t\tLine.prototype.add = function(word) {\n\t\t\tvar wordWidth;\n\t\t\tif (this.words.length) {\n\t\t\t\tthis.totalWidth += this.spaceWidth;\n\t\t\t}\n\t\t\tthis.words.push(word);\n\t\t\twordWidth = Line.measure(word);\n\t\t\tthis.totalWidth += wordWidth;\n\t\t\tthis.wordsWidth += wordWidth;\n\t\t};\n\n\t\tLine.prototype.measure = function(word) {\n\t\t\tvar width = this.totalWidth;\n\t\t\tif (word) {\n\t\t\t\twidth += Line.measure(word);\n\t\t\t\tif (this.words.length) {\n\t\t\t\t\twidth += this.spaceWidth;\n\t\t\t\t}\n\t\t\t}\n\t\t\treturn width;\n\t\t};\n\n\t\tLine.measure = function(word) {\n\t\t\treturn ctx.measureText(word).width;\n\t\t};\n\n\t\tfunction update() {\n\t\t\t//text stuffs\n\t\t\tvar text,\n\t\t\t\tword = '',\n\t\t\t\tletter,\n\t\t\t\tisSpace,\n\t\t\t\tline,\n\t\t\t\tlines = [],\n\t\t\t\tparse,\n\n\t\t\t\t//layout\n\t\t\t\tdirection = getComputedStyle(document.body).direction,\n\t\t\t\tinherit,\n\t\t\t\tresolution = parseFloat(props.resolution) || 256,\n\t\t\t\twrap,\n\t\t\t\twrapped = false,\n\t\t\t\tfontSize,\n\t\t\t\tpadding,\n\n\t\t\t\t//measurements\n\t\t\t\tlineHeight,\n\t\t\t\ti, start, y, measure,\n\t\t\t\twidth,\n\t\t\t\theight = 0;\n\n\t\t\twrap = parseFloat(props.wrap);\n\t\t\tif (isNaN(wrap) || wrap < 0) {\n\t\t\t\twrap = 5;\n\t\t\t}\n\t\t\twidth = resolution * wrap;\n\n\t\t\tctx.font = props.font;\n\t\t\tparse = fontSizeRegex.exec(ctx.font);\n\t\t\tfontSize = parseFloat(parse && parse[1]) || 50;\n\n\t\t\tlineHeight = fontSize * 1.5;\n\n\t\t\tline = new Line();\n\n\t\t\ttext = props.text === 0 ? '0' : String(props.text || '');\n\t\t\tif (wrap) {\n\t\t\t\ttext = text.trim() + ' ';\n\t\t\t\tfor (i = 0; i < text.length; i++) {\n\t\t\t\t\tletter = text.charAt(i);\n\t\t\t\t\tif (newLineRegex.test(letter)) {\n\t\t\t\t\t\tline.add(word);\n\t\t\t\t\t\tlines.push(line);\n\t\t\t\t\t\tword = '';\n\t\t\t\t\t\tline = new Line();\n\t\t\t\t\t} else if (spaceRegex.test(letter)) {\n\t\t\t\t\t\tmeasure = line.measure(word);\n\t\t\t\t\t\tif (measure < width) {\n\t\t\t\t\t\t\tif (line) {\n\t\t\t\t\t\t\t\tline.add(word);\n\t\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\tline = new Line(word);\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t} else if (!line && Line.measure(word) >= width) {\n\t\t\t\t\t\t\t//one very long word\n\t\t\t\t\t\t\tlines.push(new Line(word));\n\t\t\t\t\t\t\tword = '';\n\t\t\t\t\t\t\tline = new Line();\n\t\t\t\t\t\t\twrapped = true;\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\tline.wrap = true;\n\t\t\t\t\t\t\tlines.push(line);\n\t\t\t\t\t\t\tline = new Line(word);\n\t\t\t\t\t\t\twrapped = true;\n\t\t\t\t\t\t}\n\t\t\t\t\t\tword = '';\n\t\t\t\t\t} else {\n\t\t\t\t\t\tword += letter;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tif (line) {\n\t\t\t\t\tlines.push(line);\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\tlines.push(new Line(text));\n\t\t\t}\n\n\t\t\tif (!width || !wrapped) {\n\t\t\t\twidth = lines.reduce(function (previous, line) {\n\t\t\t\t\treturn Math.max(previous, line.totalWidth);\n\t\t\t\t}, 0);\n\t\t\t}\n\t\t\twidth = Math.min(width, 2048);\n\n\t\t\theight = lines.length * lineHeight;\n\n\t\t\tif (options && options.mipmap === false) {\n\t\t\t\tcanvas.width = width;\n\t\t\t\tcanvas.height = height;\n\t\t\t} else {\n\t\t\t\tcanvas.width = nextPowerOfTwo(width);\n\t\t\t\tcanvas.height = nextPowerOfTwo(height);\n\t\t\t}\n\n\t\t\tmesh.scale.set(canvas.width / resolution, canvas.height / resolution, 1);\n\n\t\t\t//debug\n\t\t\t// ctx.fillStyle = 'rgba(100, 100, 100, 0.5)';\n\t\t\t// ctx.fillRect(0, 0, canvas.width, canvas.height);\n\t\t\t// document.body.appendChild(canvas);\n\t\t\t// canvas.style.cssText = 'position: absolute; width: auto !important; height: auto !important; max-width: 80%';\n\n\t\t\t/*\n\t\t\tset all these properties again because they get reset\n\t\t\twhen you resize the canvas\n\t\t\t*/\n\t\t\tctx.font = props.font;\n\t\t\tctx.textAlign = props.textAlign;\n\t\t\tctx.textBaseline = props.textBaseline;\n\t\t\tctx.direction = props.direction;\n\t\t\tctx.fillStyle = props.fillStyle;\n\t\t\t//todo: add maxWidth?\n\n\t\t\tpadding = (canvas.width - width) / 2;\n\t\t\ty = (canvas.height - height) / 2 + lineHeight / 2;\n\n\t\t\tinherit = (ctx.direction === '' || ctx.direction === 'inherit');\n\t\t\tif (ctx.textAlign === 'center') {\n\t\t\t\tstart = canvas.width / 2;\n\t\t\t} else if (ctx.textAlign === 'right' ||\n\t\t\t\tctx.textAlign === 'end' && (ctx.direction === 'ltr' || inherit && direction === 'ltr') ||\n\t\t\t\tctx.textAlign === 'start' && (ctx.direction === 'rtl' || inherit && direction === 'rtl')) {\n\n\t\t\t\tstart = canvas.width - padding;\n\t\t\t} else {\n\t\t\t\tstart = padding;\n\t\t\t}\n\n\t\t\tlines.forEach(function (line) {\n\t\t\t\tvar x,\n\t\t\t\t\tspace;\n\t\t\t\tif (props.textAlign === 'justify' && line.wrap && line.words.length > 1) {\n\t\t\t\t\tx = start;\n\t\t\t\t\tspace = (width - line.wordsWidth) / (line.words.length - 1);\n\t\t\t\t\tline.words.forEach(function (word) {\n\t\t\t\t\t\tctx.fillText(word, x, y);\n\t\t\t\t\t\tx += space + Line.measure(word);\n\t\t\t\t\t});\n\t\t\t\t} else {\n\t\t\t\t\tctx.fillText(line.text(), start, y);\n\t\t\t\t}\n\t\t\t\ty += lineHeight;\n\t\t\t});\n\n\t\t\ttextWidth = width / resolution;\n\t\t\ttextHeight = lines.length * lineHeight / resolution;\n\n\t\t\ttex.needsUpdate = true;\n\n\t\t\tmesh.name = text.trim();\n\t\t}\n\n\t\tcanvas = document.createElement('canvas');\n\t\tctx = canvas.getContext('2d');\n\t\ttex = new THREE.Texture(canvas);\n\n\t\tif (canvas.width === nextPowerOfTwo(canvas.width) &&\n\t\t\tcanvas.height === nextPowerOfTwo(canvas.height)) {\n\n\t\t\ttex.minFilter = THREE.LinearMipMapLinearFilter;\n\t\t\ttex.generateMipmaps = true;\n\t\t}\n\n\t\tmaterial = new THREE.MeshBasicMaterial({\n\t\t\tside: THREE.DoubleSide,\n\t\t\ttransparent: true,\n\t\t\tmap: tex\n\t\t});\n\n\t\tmesh = new THREE.Mesh(geometry, material);\n\n\t\tcontainer = new THREE.Object3D();\n\t\tcontainer.name = 'text';\n\t\tcontainer.add(mesh);\n\t\tparent.add(container);\n\n\t\tif (typeof options === 'string') {\n\t\t\tprops.text = options;\n\t\t} else if (options) {\n\t\t\tObject.keys(props).forEach(function (key) {\n\t\t\t\tprops[key] = options[key] || props[key];\n\t\t\t});\n\t\t}\n\t\tupdate();\n\n\t\tObject.keys(props).forEach(function (key) {\n\t\t\tObject.defineProperty(self, key, {\n\t\t\t\tget: function () {\n\t\t\t\t\treturn props[key];\n\t\t\t\t},\n\t\t\t\tset: function (val) {\n\t\t\t\t\tprops[key] = val;\n\t\t\t\t\tupdate();\n\t\t\t\t}\n\t\t\t});\n\t\t});\n\n\t\tObject.defineProperty(self, 'width', {\n\t\t\tget: function () {\n\t\t\t\treturn textWidth;\n\t\t\t}\n\t\t});\n\n\t\tObject.defineProperty(self, 'height', {\n\t\t\tget: function () {\n\t\t\t\treturn textHeight;\n\t\t\t}\n\t\t});\n\n\t\tthis.material = material;\n\n\t\treturn container;\n\t};\n}());\n\n/*****************\n ** WEBPACK FOOTER\n ** ./src/objects/text.js\n ** module id = 80\n ** module chunks = 0\n **/\n//# sourceURL=webpack:///./src/objects/text.js?"); /***/ }, /* 81 */ /***/ function(module, exports, __webpack_require__) { - eval("module.exports = __webpack_require__.p + \"image/metal.jpg\"\n\n/*****************\n ** WEBPACK FOOTER\n ** ./src/images/metal.jpg\n ** module id = 81\n ** module chunks = 0\n **/\n//# sourceURL=webpack:///./src/images/metal.jpg?"); + eval("module.exports = (function () {\n\t'use strict';\n\n\tvar materials = __webpack_require__(10),\n\t\tTHREE = __webpack_require__(13);\n\n\treturn function torus(parent, options) {\n\t\tvar geometry,\n\t\t\tmesh;\n\n\t\tgeometry = new THREE.TorusGeometry(\n\t\t\toptions.radius === undefined ? 0.5 : options.radius,\n\t\t\toptions.tube === undefined ? 0.125 : options.tube,\n\t\t\toptions.radialSegments === undefined ? 12 : options.radialSegments,\n\t\t\toptions.tubularSegments === undefined ? 16 : options.tubularSegments,\n\t\t\toptions.arc\n\t\t);\n\t\tmesh = new THREE.Mesh(geometry, materials.standard());\n\t\tmesh.name = 'torus';\n\n\t\tparent.add(mesh);\n\n\t\treturn mesh;\n\t};\n}());\n\n/*****************\n ** WEBPACK FOOTER\n ** ./src/objects/torus.js\n ** module id = 81\n ** module chunks = 0\n **/\n//# sourceURL=webpack:///./src/objects/torus.js?"); /***/ }, /* 82 */ /***/ function(module, exports, __webpack_require__) { - eval("module.exports = __webpack_require__.p + \"image/stone.jpg\"\n\n/*****************\n ** WEBPACK FOOTER\n ** ./src/images/stone.jpg\n ** module id = 82\n ** module chunks = 0\n **/\n//# sourceURL=webpack:///./src/images/stone.jpg?"); + eval("module.exports = (function () {\n\t'use strict';\n\n\tvar THREE = __webpack_require__(13),\n\t\turlRegex = __webpack_require__(24),\n\t\textRegex = /\\.(webm|ogg|ogv|m4v|mp4|mov)/i,\n\t\tvideo;\n\n\tvideo = function (parent, options) {\n\t\tvar geometry,\n\t\t\tmaterial,\n\t\t\tmesh,\n\t\t\tvid,\n\t\t\ttex,\n\t\t\taspectRatio = 1,\n\t\t\tplaying = false,\n\t\t\tself = this;\n\n\t\tfunction isPowerOfTwo(num) {\n\t\t\treturn num > 0 && (num & (num-1)) === 0; // jshint ignore:line\n\t\t}\n\n\t\tfunction loadedMetadata() {\n\t\t\t//todo: don't do any of this if object has been deleted\n\n\t\t\tvar newAspectRatio = vid.videoWidth / vid.videoHeight;\n\t\t\tif (!options || !options.sphere) {\n\t\t\t\tgeometry.applyMatrix(new THREE.Matrix4().makeScale(1, aspectRatio / newAspectRatio, 1));\n\t\t\t}\n\t\t\taspectRatio = newAspectRatio;\n\n\t\t\tif (vid.videoWidth === vid.videoHeight &&\n\t\t\t\t\tisPowerOfTwo(vid.videoWidth) && isPowerOfTwo(vid.videoHeight)) {\n\n\t\t\t\ttex.minFilter = THREE.LinearMipMapLinearFilter;\n\t\t\t\ttex.generateMipmaps = true;\n\t\t\t} else {\n\t\t\t\ttex.minFilter = THREE.LinearFilter;\n\t\t\t\ttex.generateMipmaps = false;\n\t\t\t}\n\n\t\t\tmaterial.map = tex;\n\t\t\tmaterial.visible = true;\n\n\t\t\tif (playing) {\n\t\t\t\tvid.play();\n\t\t\t}\n\t\t}\n\n\t\tfunction setSource(sources) {\n\t\t\tsources.forEach(function (src) {\n\t\t\t\tvar parse,\n\t\t\t\t\text,\n\t\t\t\t\tsource;\n\n\t\t\t\tif (!src) {\n\t\t\t\t\treturn;\n\t\t\t\t}\n\n\t\t\t\tparse = urlRegex.exec(src);\n\t\t\t\tif (parse &&\n\t\t\t\t\t\t(parse[1] && parse[1] !== window.location.hostΩ ||\n\t\t\t\t\t\t\tparse[2] && parse[2] !== window.location.port)) {\n\n\t\t\t\t\tif (vid.crossOrigin !== undefined) {\n\t\t\t\t\t\tvid.crossOrigin = 'anonymous';\n\t\t\t\t\t} else {\n\t\t\t\t\t\tconsole.warn('Browser does not support cross-origin video');\n\t\t\t\t\t\treturn;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tsource = document.createElement('source');\n\t\t\t\tsource.src = src;\n\n\t\t\t\text = extRegex.exec(src);\n\t\t\t\tif (!ext || vid.canPlayType('video/' + ext[1])) {\n\t\t\t\t\tvid.appendChild(source);\n\t\t\t\t}\n\t\t\t});\n\t\t}\n\n\t\t/*\n\t\tPause the video when this browser tab is in the background or minimized.\n\t\tResume when it comes back in focus, but only if the user didn't pause manually.\n\t\t*/\n\t\tfunction visibilityChange() {\n\t\t\tif (document.hidden || document.mozHidden || document.msHidden || document.webkitHidden) {\n\t\t\t\tvid.pause();\n\t\t\t} else if (playing) {\n\t\t\t\tvid.play();\n\t\t\t}\n\t\t}\n\n\t\tvid = document.createElement('video');\n\t\tvid.loop = true;\n\t\tvid.addEventListener('loadedmetadata', loadedMetadata, false);\n\n\t\tif (Array.isArray(options)) {\n\t\t\tsetSource(options);\n\t\t} if (typeof options === 'string') {\n\t\t\tsetSource([options]);\n\t\t} else if (typeof options.src === 'string') {\n\t\t\tsetSource([options.src]);\n\t\t} else if (Array.isArray(options.src)) {\n\t\t\tsetSource(options.src);\n\t\t}\n\n\t\tvid.load();\n\n\t\ttex = new THREE.VideoTexture(vid, THREE.UVMapping);\n\t\ttex.format = THREE.RGBFormat;\n\n\t\tif (options && options.sphere) {\n\t\t\tgeometry = new THREE.SphereGeometry(\n\t\t\t\t994, //radius\n\t\t\t\t60, //widthSegments\n\t\t\t\t60, //heightSegments\n\t\t\t\t(parseFloat(options.phiStart) || 0) * Math.PI * 2,\n\t\t\t\t(parseFloat(options.phiLength) || 1) * Math.PI * 2,\n\t\t\t\t(parseFloat(options.thetaStart) || 0) * Math.PI,\n\t\t\t\t(parseFloat(options.thetaLength) || 1) * Math.PI\n\t\t\t);\n\t\t\tgeometry.applyMatrix(new THREE.Matrix4().makeScale(-1, 1, 1));\n\t\t\tgeometry.applyMatrix(new THREE.Matrix4().makeRotationY(- Math.PI / 2));\n\t\t} else {\n\t\t\tgeometry = new THREE.PlaneBufferGeometry(1, 1, 8);\n\t\t}\n\n\t\tmaterial = new THREE.MeshBasicMaterial({\n\t\t\tside: THREE.DoubleSide,\n\t\t\tmap: tex,\n\t\t\tvisible: false\n\t\t});\n\n\t\tmesh = new THREE.Mesh(geometry, material);\n\n\t\tif (options && options.stereo) {\n\t\t\tif (options.stereo === 'vertical') {\n\t\t\t\ttex.repeat.y = 0.5;\n\t\t\t} else {\n\t\t\t\ttex.repeat.x = 0.5;\n\t\t\t}\n\t\t\tmesh.userData.stereo = options.stereo;\n\t\t}\n\n\t\tif (vid.readyState) {\n\t\t\tloadedMetadata();\n\t\t}\n\n\t\tthis.play = function play() {\n\t\t\tplaying = true;\n\t\t\tvid.play();\n\t\t\treturn this;\n\t\t};\n\n\t\tthis.pause = function pause() {\n\t\t\tplaying = false;\n\t\t\tvid.pause();\n\t\t\treturn this;\n\t\t};\n\n\t\tthis.canPlayType = video.canPlayType;\n\n\t\tObject.defineProperty(this, 'width', {\n\t\t\tget: function () {\n\t\t\t\treturn vid.videoWidth;\n\t\t\t}\n\t\t});\n\n\t\tObject.defineProperty(this, 'height', {\n\t\t\tget: function () {\n\t\t\t\treturn vid.videoHeight;\n\t\t\t}\n\t\t});\n\n\t\tObject.defineProperty(this, 'paused', {\n\t\t\tget: function () {\n\t\t\t\treturn !playing;\n\t\t\t}\n\t\t});\n\n\t\tObject.defineProperty(this, 'volume', {\n\t\t\tget: function () {\n\t\t\t\treturn vid.volume;\n\t\t\t},\n\t\t\tset: function (vol) {\n\t\t\t\tvid.volume = vol;\n\t\t\t}\n\t\t});\n\n\t\tObject.defineProperty(this, 'muted', {\n\t\t\tget: function () {\n\t\t\t\treturn vid.muted;\n\t\t\t},\n\t\t\tset: function (muted) {\n\t\t\t\tvid.muted = muted;\n\t\t\t}\n\t\t});\n\n\t\tObject.defineProperty(this, 'duration', {\n\t\t\tget: function () {\n\t\t\t\treturn vid.duration || 0;\n\t\t\t}\n\t\t});\n\n\t\tObject.defineProperty(this, 'currentTime', {\n\t\t\tget: function () {\n\t\t\t\treturn vid.currentTime;\n\t\t\t},\n\t\t\tset: function (currentTime) {\n\t\t\t\tif (vid.readyState && currentTime < vid.duration && currentTime >= 0) {\n\t\t\t\t\tvid.currentTime = currentTime;\n\t\t\t\t}\n\t\t\t}\n\t\t});\n\n\t\t[\n\t\t\t'loadedmetadata',\n\t\t\t'play',\n\t\t\t'pause',\n\t\t\t'playing',\n\t\t\t'progress'\n\t\t].forEach(function registerMediaEvent(event) {\n\t\t\tvid.addEventListener(event, self.emit.bind(self, event));\n\t\t});\n\n\t\t//sometimes video fails to play because it's too big. remove it and try again\n\t\tvid.addEventListener('error', function (evt) {\n\t\t\tif (vid.error.code === window.MediaError.MEDIA_ERR_DECODE && vid.childNodes.length > 1) {\n\t\t\t\tmaterial.visible = false;\n\t\t\t\tvid.removeChild(vid.firstChild);\n\t\t\t\tvid.load();\n\t\t\t}\n\n\t\t\tself.emit(event, evt);\n\t\t}, true);\n\n\t\tthis.element = vid;\n\n\t\twindow.addEventListener('touchstart', function touchStart() {\n\t\t\tif (playing) {\n\t\t\t\tvid.play();\n\t\t\t} else {\n\t\t\t\tvid.load();\n\t\t\t}\n\t\t\twindow.removeEventListener('touchstart', touchStart, true);\n\t\t}, true);\n\n\t\t//pause when window is hidden\n\t\tdocument.addEventListener('visibilitychange', visibilityChange);\n\t\tdocument.addEventListener('mozvisibilitychange', visibilityChange);\n\t\tdocument.addEventListener('msvisibilitychange', visibilityChange);\n\t\tdocument.addEventListener('webkitvisibilitychange', visibilityChange);\n\n\t\tmesh.name = 'video';\n\t\tparent.add(mesh);\n\n\t\treturn mesh;\n\t};\n\n\tvideo.canPlayType = function canPlayType(type) {\n\t\tvar element = document.createElement('video');\n\t\treturn element.canPlayType(type);\n\t};\n\n\treturn video;\n}());\n\n/*****************\n ** WEBPACK FOOTER\n ** ./src/objects/video.js\n ** module id = 82\n ** module chunks = 0\n **/\n//# sourceURL=webpack:///./src/objects/video.js?"); /***/ }, /* 83 */ /***/ function(module, exports, __webpack_require__) { - eval("module.exports = __webpack_require__.p + \"image/tiles.jpg\"\n\n/*****************\n ** WEBPACK FOOTER\n ** ./src/images/tiles.jpg\n ** module id = 83\n ** module chunks = 0\n **/\n//# sourceURL=webpack:///./src/images/tiles.jpg?"); + eval("/*** IMPORTS FROM imports-loader ***/\nvar THREE = __webpack_require__(13);\n\n// ShaderParticleUtils 0.7.9\n//\n// (c) 2014 Luke Moody (http://www.github.com/squarefeet)\n// & Lee Stemkoski (http://www.adelphi.edu/~stemkoski/)\n//\n// Based on Lee Stemkoski's original work:\n// (https://github.com/stemkoski/stemkoski.github.com/blob/master/Three.js/js/ParticleEngine.js).\n//\n// ShaderParticleGroup may be freely distributed under the MIT license (See LICENSE.txt)\n\nvar SPE = SPE || {};\n\nSPE.utils = {\n\n /**\n * Given a base vector and a spread range vector, create\n * a new THREE.Vector3 instance with randomised values.\n *\n * @private\n *\n * @param {THREE.Vector3} base\n * @param {THREE.Vector3} spread\n * @return {THREE.Vector3}\n */\n randomVector3: function( base, spread ) {\n var v = new THREE.Vector3();\n\n v.copy( base );\n\n v.x += Math.random() * spread.x - (spread.x/2);\n v.y += Math.random() * spread.y - (spread.y/2);\n v.z += Math.random() * spread.z - (spread.z/2);\n\n return v;\n },\n\n /**\n * Create a new THREE.Color instance and given a base vector and\n * spread range vector, assign random values.\n *\n * Note that THREE.Color RGB values are in the range of 0 - 1, not 0 - 255.\n *\n * @private\n *\n * @param {THREE.Vector3} base\n * @param {THREE.Vector3} spread\n * @return {THREE.Color}\n */\n randomColor: function( base, spread ) {\n var v = new THREE.Color();\n\n v.copy( base );\n\n v.r += (Math.random() * spread.x) - (spread.x/2);\n v.g += (Math.random() * spread.y) - (spread.y/2);\n v.b += (Math.random() * spread.z) - (spread.z/2);\n\n v.r = Math.max( 0, Math.min( v.r, 1 ) );\n v.g = Math.max( 0, Math.min( v.g, 1 ) );\n v.b = Math.max( 0, Math.min( v.b, 1 ) );\n\n return v;\n },\n\n /**\n * Create a random Number value based on an initial value and\n * a spread range\n *\n * @private\n *\n * @param {Number} base\n * @param {Number} spread\n * @return {Number}\n */\n randomFloat: function( base, spread ) {\n return base + spread * (Math.random() - 0.5);\n },\n\n /**\n * Create a new THREE.Vector3 instance and project it onto a random point\n * on a sphere with randomized radius.\n *\n * @param {THREE.Vector3} base\n * @param {Number} radius\n * @param {THREE.Vector3} radiusSpread\n * @param {THREE.Vector3} radiusScale\n *\n * @private\n *\n * @return {THREE.Vector3}\n */\n randomVector3OnSphere: function( base, radius, radiusSpread, radiusScale, radiusSpreadClamp ) {\n var z = 2 * Math.random() - 1;\n var t = 6.2832 * Math.random();\n var r = Math.sqrt( 1 - z*z );\n var vec = new THREE.Vector3( r * Math.cos(t), r * Math.sin(t), z );\n\n var rand = this._randomFloat( radius, radiusSpread );\n\n if( radiusSpreadClamp ) {\n rand = Math.round( rand / radiusSpreadClamp ) * radiusSpreadClamp;\n }\n\n vec.multiplyScalar( rand );\n\n if( radiusScale ) {\n vec.multiply( radiusScale );\n }\n\n vec.add( base );\n\n return vec;\n },\n\n /**\n * Create a new THREE.Vector3 instance and project it onto a random point\n * on a disk (in the XY-plane) centered at `base` and with randomized radius.\n *\n * @param {THREE.Vector3} base\n * @param {Number} radius\n * @param {THREE.Vector3} radiusSpread\n * @param {THREE.Vector3} radiusScale\n *\n * @private\n *\n * @return {THREE.Vector3}\n */\n randomVector3OnDisk: function( base, radius, radiusSpread, radiusScale, radiusSpreadClamp ) {\n var t = 6.2832 * Math.random();\n var rand = this._randomFloat( radius, radiusSpread );\n\n if( radiusSpreadClamp ) {\n rand = Math.round( rand / radiusSpreadClamp ) * radiusSpreadClamp;\n }\n\n var vec = new THREE.Vector3( Math.cos(t), Math.sin(t), 0 ).multiplyScalar( rand );\n\n if ( radiusScale ) {\n vec.multiply( radiusScale );\n }\n\n vec.add( base );\n\n return vec ;\n },\n\n\n /**\n * Create a new THREE.Vector3 instance, and given a sphere with center `base` and\n * point `position` on sphere, set direction away from sphere center with random magnitude.\n *\n * @param {THREE.Vector3} base\n * @param {THREE.Vector3} position\n * @param {Number} speed\n * @param {Number} speedSpread\n * @param {THREE.Vector3} scale\n *\n * @private\n *\n * @return {THREE.Vector3}\n */\n randomVelocityVector3OnSphere: function( base, position, speed, speedSpread, scale ) {\n var direction = new THREE.Vector3().subVectors( base, position );\n\n direction.normalize().multiplyScalar( Math.abs( this._randomFloat( speed, speedSpread ) ) );\n\n if( scale ) {\n direction.multiply( scale );\n }\n\n return direction;\n },\n\n\n\n /**\n * Given a base vector and a spread vector, randomise the given vector\n * accordingly.\n *\n * @param {THREE.Vector3} vector\n * @param {THREE.Vector3} base\n * @param {THREE.Vector3} spread\n *\n * @private\n *\n * @return {[type]}\n */\n randomizeExistingVector3: function( v, base, spread ) {\n v.copy( base );\n\n v.x += Math.random() * spread.x - (spread.x/2);\n v.y += Math.random() * spread.y - (spread.y/2);\n v.z += Math.random() * spread.z - (spread.z/2);\n },\n\n\n /**\n * Randomize a THREE.Color instance and given a base vector and\n * spread range vector, assign random values.\n *\n * Note that THREE.Color RGB values are in the range of 0 - 1, not 0 - 255.\n *\n * @private\n *\n * @param {THREE.Vector3} base\n * @param {THREE.Vector3} spread\n * @return {THREE.Color}\n */\n randomizeExistingColor: function( v, base, spread ) {\n v.copy( base );\n\n v.r += (Math.random() * spread.x) - (spread.x/2);\n v.g += (Math.random() * spread.y) - (spread.y/2);\n v.b += (Math.random() * spread.z) - (spread.z/2);\n\n v.r = Math.max( 0, Math.min( v.r, 1 ) );\n v.g = Math.max( 0, Math.min( v.g, 1 ) );\n v.b = Math.max( 0, Math.min( v.b, 1 ) );\n },\n\n /**\n * Given an existing particle vector, project it onto a random point on a\n * sphere with radius `radius` and position `base`.\n *\n * @private\n *\n * @param {THREE.Vector3} v\n * @param {THREE.Vector3} base\n * @param {Number} radius\n */\n randomizeExistingVector3OnSphere: function( v, base, radius, radiusSpread, radiusScale, radiusSpreadClamp ) {\n var z = 2 * Math.random() - 1,\n t = 6.2832 * Math.random(),\n r = Math.sqrt( 1 - z*z ),\n rand = this._randomFloat( radius, radiusSpread );\n\n if( radiusSpreadClamp ) {\n rand = Math.round( rand / radiusSpreadClamp ) * radiusSpreadClamp;\n }\n\n v.set(\n (r * Math.cos(t)) * rand,\n (r * Math.sin(t)) * rand,\n z * rand\n ).multiply( radiusScale );\n\n v.add( base );\n },\n\n\n /**\n * Given an existing particle vector, project it onto a random point\n * on a disk (in the XY-plane) centered at `base` and with radius `radius`.\n *\n * @private\n *\n * @param {THREE.Vector3} v\n * @param {THREE.Vector3} base\n * @param {Number} radius\n */\n randomizeExistingVector3OnDisk: function( v, base, radius, radiusSpread, radiusScale, radiusSpreadClamp ) {\n var t = 6.2832 * Math.random(),\n rand = Math.abs( this._randomFloat( radius, radiusSpread ) );\n\n if( radiusSpreadClamp ) {\n rand = Math.round( rand / radiusSpreadClamp ) * radiusSpreadClamp;\n }\n\n v.set(\n Math.cos( t ),\n Math.sin( t ),\n 0\n ).multiplyScalar( rand );\n\n if ( radiusScale ) {\n v.multiply( radiusScale );\n }\n\n v.add( base );\n },\n\n randomizeExistingVelocityVector3OnSphere: function( v, base, position, speed, speedSpread ) {\n v.copy(position)\n .sub(base)\n .normalize()\n .multiplyScalar( Math.abs( this._randomFloat( speed, speedSpread ) ) );\n },\n\n generateID: function() {\n var str = 'xxxxxxxx-xxxx-4xxx-yxxx-xxxxxxxxxxxx';\n\n str = str.replace(/[xy]/g, function(c) {\n var rand = Math.random();\n var r = rand*16|0%16, v = c === 'x' ? r : (r&0x3|0x8);\n\n return v.toString(16);\n });\n\n return str;\n }\n};;\n\n// ShaderParticleGroup 0.7.9\n//\n// (c) 2014 Luke Moody (http://www.github.com/squarefeet)\n// & Lee Stemkoski (http://www.adelphi.edu/~stemkoski/)\n//\n// Based on Lee Stemkoski's original work:\n// (https://github.com/stemkoski/stemkoski.github.com/blob/master/Three.js/js/ParticleEngine.js).\n//\n// ShaderParticleGroup may be freely distributed under the MIT license (See LICENSE.txt)\n\nvar SPE = SPE || {};\n\nSPE.Group = function( options ) {\n var that = this;\n\n that.fixedTimeStep = parseFloat( typeof options.fixedTimeStep === 'number' ? options.fixedTimeStep : 0.016 );\n\n // Uniform properties ( applied to all particles )\n that.maxAge = parseFloat( options.maxAge || 3 );\n that.texture = options.texture || null;\n that.hasPerspective = parseInt( typeof options.hasPerspective === 'number' ? options.hasPerspective : 1, 10 );\n that.colorize = parseInt( typeof options.colorize === 'number' ? options.colorize : 1, 10 );\n\n // Material properties\n that.blending = typeof options.blending === 'number' ? options.blending : THREE.AdditiveBlending;\n that.transparent = typeof options.transparent === 'boolean' ? options.transparent : true;\n that.alphaTest = typeof options.alphaTest === 'number' ? options.alphaTest : 0.5;\n that.depthWrite = typeof options.depthWrite === 'boolean' ? options.depthWrite : false;\n that.depthTest = typeof options.depthTest === 'boolean' ? options.depthTest : true;\n\n // Create uniforms\n that.uniforms = {\n duration: { type: 'f', value: that.maxAge },\n texture: { type: 't', value: that.texture },\n hasPerspective: { type: 'i', value: that.hasPerspective },\n colorize: { type: 'i', value: that.colorize }\n };\n\n // Create a map of attributes that will hold values for each particle in this group.\n that.attributes = {\n acceleration: { type: 'v3', value: [] },\n velocity: { type: 'v3', value: [] },\n\n alive: { type: 'f', value: [] },\n age: { type: 'f', value: [] },\n\n size: { type: 'v3', value: [] },\n angle: { type: 'v4', value: [] },\n\n colorStart: { type: 'c', value: [] },\n colorMiddle: { type: 'c', value: [] },\n colorEnd: { type: 'c', value: [] },\n\n opacity: { type: 'v3', value: [] }\n };\n\n // Emitters (that aren't static) will be added to this array for\n // processing during the `tick()` function.\n that.emitters = [];\n\n // Create properties for use by the emitter pooling functions.\n that._pool = [];\n that._poolCreationSettings = null;\n that._createNewWhenPoolEmpty = 0;\n that.maxAgeMilliseconds = that.maxAge * 1000;\n\n // Create an empty geometry to hold the particles.\n // Each particle is a vertex pushed into this geometry's\n // vertices array.\n that.geometry = new THREE.Geometry();\n\n // Create the shader material using the properties we set above.\n that.material = new THREE.ShaderMaterial({\n uniforms: that.uniforms,\n attributes: that.attributes,\n vertexShader: SPE.shaders.vertex,\n fragmentShader: SPE.shaders.fragment,\n blending: that.blending,\n transparent: that.transparent,\n alphaTest: that.alphaTest,\n depthWrite: that.depthWrite,\n depthTest: that.depthTest\n });\n\n // And finally create the ParticleSystem. It's got its `dynamic` property\n // set so that THREE.js knows to update it on each frame.\n that.mesh = new THREE.PointCloud( that.geometry, that.material );\n that.mesh.dynamic = true;\n};\n\nSPE.Group.prototype = {\n\n /**\n * Tells the age and alive attributes (and the geometry vertices)\n * that they need updating by THREE.js's internal tick functions.\n *\n * @private\n *\n * @return {this}\n */\n _flagUpdate: function() {\n var that = this;\n\n // Set flags to update (causes less garbage than\n // ```ParticleSystem.sortParticles = true``` in THREE.r58 at least)\n that.attributes.age.needsUpdate = true;\n that.attributes.alive.needsUpdate = true;\n that.attributes.angle.needsUpdate = true;\n // that.attributes.angleAlignVelocity.needsUpdate = true;\n that.attributes.velocity.needsUpdate = true;\n that.attributes.acceleration.needsUpdate = true;\n that.geometry.verticesNeedUpdate = true;\n\n return that;\n },\n\n /**\n * Add an emitter to this particle group. Once added, an emitter will be automatically\n * updated when SPE.Group#tick() is called.\n *\n * @param {SPE.Emitter} emitter\n * @return {this}\n */\n addEmitter: function( emitter ) {\n var that = this;\n\n if( emitter.duration ) {\n emitter.particlesPerSecond = emitter.particleCount / (that.maxAge < emitter.duration ? that.maxAge : emitter.duration) | 0;\n }\n else {\n emitter.particlesPerSecond = emitter.particleCount / that.maxAge | 0\n }\n\n var vertices = that.geometry.vertices,\n start = vertices.length,\n end = emitter.particleCount + start,\n a = that.attributes,\n acceleration = a.acceleration.value,\n velocity = a.velocity.value,\n alive = a.alive.value,\n age = a.age.value,\n size = a.size.value,\n angle = a.angle.value,\n colorStart = a.colorStart.value,\n colorMiddle = a.colorMiddle.value,\n colorEnd = a.colorEnd.value,\n opacity = a.opacity.value;\n\n emitter.particleIndex = parseFloat( start );\n\n // Create the values\n for( var i = start; i < end; ++i ) {\n\n if( emitter.type === 'sphere' ) {\n vertices[i] = that._randomVector3OnSphere( emitter.position, emitter.radius, emitter.radiusSpread, emitter.radiusScale, emitter.radiusSpreadClamp );\n velocity[i] = that._randomVelocityVector3OnSphere( vertices[i], emitter.position, emitter.speed, emitter.speedSpread );\n }\n else if( emitter.type === 'disk' ) {\n vertices[i] = that._randomVector3OnDisk( emitter.position, emitter.radius, emitter.radiusSpread, emitter.radiusScale, emitter.radiusSpreadClamp );\n velocity[i] = that._randomVelocityVector3OnSphere( vertices[i], emitter.position, emitter.speed, emitter.speedSpread );\n }\n else {\n vertices[i] = that._randomVector3( emitter.position, emitter.positionSpread );\n velocity[i] = that._randomVector3( emitter.velocity, emitter.velocitySpread );\n }\n\n acceleration[i] = that._randomVector3( emitter.acceleration, emitter.accelerationSpread );\n\n size[i] = new THREE.Vector3(\n Math.abs( that._randomFloat( emitter.sizeStart, emitter.sizeStartSpread ) ),\n Math.abs( that._randomFloat( emitter.sizeMiddle, emitter.sizeMiddleSpread ) ),\n Math.abs( that._randomFloat( emitter.sizeEnd, emitter.sizeEndSpread ) )\n );\n\n angle[i] = new THREE.Vector4(\n that._randomFloat( emitter.angleStart, emitter.angleStartSpread ),\n that._randomFloat( emitter.angleMiddle, emitter.angleMiddleSpread ),\n that._randomFloat( emitter.angleEnd, emitter.angleEndSpread ),\n emitter.angleAlignVelocity ? 1.0 : 0.0\n );\n\n age[i] = 0.0;\n alive[i] = emitter.isStatic ? 1.0 : 0.0;\n\n colorStart[i] = that._randomColor( emitter.colorStart, emitter.colorStartSpread );\n colorMiddle[i] = that._randomColor( emitter.colorMiddle, emitter.colorMiddleSpread );\n colorEnd[i] = that._randomColor( emitter.colorEnd, emitter.colorEndSpread );\n\n opacity[i] = new THREE.Vector3(\n Math.abs( that._randomFloat( emitter.opacityStart, emitter.opacityStartSpread ) ),\n Math.abs( that._randomFloat( emitter.opacityMiddle, emitter.opacityMiddleSpread ) ),\n Math.abs( that._randomFloat( emitter.opacityEnd, emitter.opacityEndSpread ) )\n );\n }\n\n // Cache properties on the emitter so we can access\n // them from its tick function.\n emitter.verticesIndex = parseFloat( start );\n emitter.attributes = a;\n emitter.vertices = that.geometry.vertices;\n emitter.maxAge = that.maxAge;\n\n // Assign a unique ID to this emitter\n emitter.__id = that._generateID();\n\n // Save this emitter in an array for processing during this.tick()\n if( !emitter.isStatic ) {\n that.emitters.push( emitter );\n }\n\n return that;\n },\n\n\n removeEmitter: function( emitter ) {\n var id,\n emitters = this.emitters;\n\n if( emitter instanceof SPE.Emitter ) {\n id = emitter.__id;\n }\n else if( typeof emitter === 'string' ) {\n id = emitter;\n }\n else {\n console.warn('Invalid emitter or emitter ID passed to SPE.Group#removeEmitter.' );\n return;\n }\n\n for( var i = 0, il = emitters.length; i < il; ++i ) {\n if( emitters[i].__id === id ) {\n emitters.splice(i, 1);\n break;\n }\n }\n },\n\n\n /**\n * The main particle group update function. Call this once per frame.\n *\n * @param {Number} dt\n * @return {this}\n */\n tick: function( dt ) {\n var that = this,\n emitters = that.emitters,\n numEmitters = emitters.length;\n\n dt = dt || that.fixedTimeStep;\n\n if( numEmitters === 0 ) {\n return;\n }\n\n for( var i = 0; i < numEmitters; ++i ) {\n emitters[i].tick( dt );\n }\n\n that._flagUpdate();\n return that;\n },\n\n\n /**\n * Fetch a single emitter instance from the pool.\n * If there are no objects in the pool, a new emitter will be\n * created if specified.\n *\n * @return {ShaderParticleEmitter | null}\n */\n getFromPool: function() {\n var that = this,\n pool = that._pool,\n createNew = that._createNewWhenPoolEmpty;\n\n if( pool.length ) {\n return pool.pop();\n }\n else if( createNew ) {\n return new SPE.Emitter( that._poolCreationSettings );\n }\n\n return null;\n },\n\n\n /**\n * Release an emitter into the pool.\n *\n * @param {ShaderParticleEmitter} emitter\n * @return {this}\n */\n releaseIntoPool: function( emitter ) {\n if( !(emitter instanceof SPE.Emitter) ) {\n console.error( 'Will not add non-emitter to particle group pool:', emitter );\n return;\n }\n\n emitter.reset();\n this._pool.unshift( emitter );\n\n return this;\n },\n\n\n /**\n * Get the pool array\n *\n * @return {Array}\n */\n getPool: function() {\n return this._pool;\n },\n\n\n /**\n * Add a pool of emitters to this particle group\n *\n * @param {Number} numEmitters The number of emitters to add to the pool.\n * @param {Object} emitterSettings An object describing the settings to pass to each emitter.\n * @param {Boolean} createNew Should a new emitter be created if the pool runs out?\n * @return {this}\n */\n addPool: function( numEmitters, emitterSettings, createNew ) {\n var that = this,\n emitter;\n\n // Save relevant settings and flags.\n that._poolCreationSettings = emitterSettings;\n that._createNewWhenPoolEmpty = !!createNew;\n\n // Create the emitters, add them to this group and the pool.\n for( var i = 0; i < numEmitters; ++i ) {\n emitter = new SPE.Emitter( emitterSettings );\n that.addEmitter( emitter );\n that.releaseIntoPool( emitter );\n }\n\n return that;\n },\n\n\n /**\n * Internal method. Sets a single emitter to be alive\n *\n * @private\n *\n * @param {THREE.Vector3} pos\n * @return {this}\n */\n _triggerSingleEmitter: function( pos ) {\n var that = this,\n emitter = that.getFromPool();\n\n if( emitter === null ) {\n console.log('SPE.Group pool ran out.');\n return;\n }\n\n // TODO: Should an instanceof check happen here? Or maybe at least a typeof?\n if( pos ) {\n emitter.position.copy( pos );\n }\n\n emitter.enable();\n\n setTimeout( function() {\n emitter.disable();\n that.releaseIntoPool( emitter );\n }, that.maxAgeMilliseconds );\n\n return that;\n },\n\n\n /**\n * Set a given number of emitters as alive, with an optional position\n * vector3 to move them to.\n *\n * @param {Number} numEmitters\n * @param {THREE.Vector3} position\n * @return {this}\n */\n triggerPoolEmitter: function( numEmitters, position ) {\n var that = this;\n\n if( typeof numEmitters === 'number' && numEmitters > 1) {\n for( var i = 0; i < numEmitters; ++i ) {\n that._triggerSingleEmitter( position );\n }\n }\n else {\n that._triggerSingleEmitter( position );\n }\n\n return that;\n }\n};\n\n\n// Extend ShaderParticleGroup's prototype with functions from utils object.\nfor( var i in SPE.utils ) {\n SPE.Group.prototype[ '_' + i ] = SPE.utils[i];\n}\n\n\n// The all-important shaders\nSPE.shaders = {\n vertex: [\n 'uniform float duration;',\n 'uniform int hasPerspective;',\n\n 'attribute vec3 colorStart;',\n 'attribute vec3 colorMiddle;',\n 'attribute vec3 colorEnd;',\n 'attribute vec3 opacity;',\n\n 'attribute vec3 acceleration;',\n 'attribute vec3 velocity;',\n 'attribute float alive;',\n 'attribute float age;',\n\n 'attribute vec3 size;',\n 'attribute vec4 angle;',\n\n // values to be passed to the fragment shader\n 'varying vec4 vColor;',\n 'varying float vAngle;',\n\n\n // Integrate acceleration into velocity and apply it to the particle's position\n 'vec4 GetPos() {',\n 'vec3 newPos = vec3( position );',\n\n // Move acceleration & velocity vectors to the value they\n // should be at the current age\n 'vec3 a = acceleration * age;',\n 'vec3 v = velocity * age;',\n\n // Move velocity vector to correct values at this age\n 'v = v + (a * age);',\n\n // Add velocity vector to the newPos vector\n 'newPos = newPos + v;',\n\n // Convert the newPos vector into world-space\n 'vec4 mvPosition = modelViewMatrix * vec4( newPos, 1.0 );',\n\n 'return mvPosition;',\n '}',\n\n\n 'void main() {',\n\n 'float positionInTime = (age / duration);',\n\n 'float lerpAmount1 = (age / (0.5 * duration));', // percentage during first half\n 'float lerpAmount2 = ((age - 0.5 * duration) / (0.5 * duration));', // percentage during second half\n 'float halfDuration = duration / 2.0;',\n 'float pointSize = 0.0;',\n\n 'vAngle = 0.0;',\n\n 'if( alive > 0.5 ) {',\n\n // lerp the color and opacity\n 'if( positionInTime < 0.5 ) {',\n 'vColor = vec4( mix(colorStart, colorMiddle, lerpAmount1), mix(opacity.x, opacity.y, lerpAmount1) );',\n '}',\n 'else {',\n 'vColor = vec4( mix(colorMiddle, colorEnd, lerpAmount2), mix(opacity.y, opacity.z, lerpAmount2) );',\n '}',\n\n\n // Get the position of this particle so we can use it\n // when we calculate any perspective that might be required.\n 'vec4 pos = GetPos();',\n\n\n // Determine the angle we should use for this particle.\n 'if( angle[3] == 1.0 ) {',\n 'vAngle = -atan(pos.y, pos.x);',\n '}',\n 'else if( positionInTime < 0.5 ) {',\n 'vAngle = mix( angle.x, angle.y, lerpAmount1 );',\n '}',\n 'else {',\n 'vAngle = mix( angle.y, angle.z, lerpAmount2 );',\n '}',\n\n // Determine point size.\n 'if( positionInTime < 0.5) {',\n 'pointSize = mix( size.x, size.y, lerpAmount1 );',\n '}',\n 'else {',\n 'pointSize = mix( size.y, size.z, lerpAmount2 );',\n '}',\n\n\n 'if( hasPerspective == 1 ) {',\n 'pointSize = pointSize * ( 300.0 / length( pos.xyz ) );',\n '}',\n\n // Set particle size and position\n 'gl_PointSize = pointSize;',\n 'gl_Position = projectionMatrix * pos;',\n '}',\n\n 'else {',\n // Hide particle and set its position to the (maybe) glsl\n // equivalent of Number.POSITIVE_INFINITY\n 'vColor = vec4( 0.0, 0.0, 0.0, 0.0 );',\n 'gl_Position = vec4(1000000000.0, 1000000000.0, 1000000000.0, 0.0);',\n '}',\n '}',\n ].join('\\n'),\n\n fragment: [\n 'uniform sampler2D texture;',\n 'uniform int colorize;',\n\n 'varying vec4 vColor;',\n 'varying float vAngle;',\n\n 'void main() {',\n 'float c = cos(vAngle);',\n 'float s = sin(vAngle);',\n\n 'vec2 rotatedUV = vec2(c * (gl_PointCoord.x - 0.5) + s * (gl_PointCoord.y - 0.5) + 0.5,',\n 'c * (gl_PointCoord.y - 0.5) - s * (gl_PointCoord.x - 0.5) + 0.5);',\n\n 'vec4 rotatedTexture = texture2D( texture, rotatedUV );',\n\n 'if( colorize == 1 ) {',\n 'gl_FragColor = vColor * rotatedTexture;',\n '}',\n 'else {',\n 'gl_FragColor = rotatedTexture;',\n '}',\n '}'\n ].join('\\n')\n};\n;\n\n// ShaderParticleEmitter 0.7.9\n//\n// (c) 2014 Luke Moody (http://www.github.com/squarefeet)\n// & Lee Stemkoski (http://www.adelphi.edu/~stemkoski/)\n//\n// Based on Lee Stemkoski's original work:\n// (https://github.com/stemkoski/stemkoski.github.com/blob/master/Three.js/js/ParticleEngine.js).\n//\n// ShaderParticleEmitter may be freely distributed under the MIT license (See LICENSE.txt)\n\nvar SPE = SPE || {};\n\nSPE.Emitter = function( options ) {\n // If no options are provided, fallback to an empty object.\n options = options || {};\n\n // Helps with minification. Not as easy to read the following code,\n // but should still be readable enough!\n var that = this;\n\n\n that.particleCount = typeof options.particleCount === 'number' ? options.particleCount : 100;\n that.type = (options.type === 'cube' || options.type === 'sphere' || options.type === 'disk') ? options.type : 'cube';\n\n that.position = options.position instanceof THREE.Vector3 ? options.position : new THREE.Vector3();\n that.positionSpread = options.positionSpread instanceof THREE.Vector3 ? options.positionSpread : new THREE.Vector3();\n\n // These two properties are only used when this.type === 'sphere' or 'disk'\n that.radius = typeof options.radius === 'number' ? options.radius : 10;\n that.radiusSpread = typeof options.radiusSpread === 'number' ? options.radiusSpread : 0;\n that.radiusScale = options.radiusScale instanceof THREE.Vector3 ? options.radiusScale : new THREE.Vector3(1, 1, 1);\n that.radiusSpreadClamp = typeof options.radiusSpreadClamp === 'number' ? options.radiusSpreadClamp : 0;\n\n that.acceleration = options.acceleration instanceof THREE.Vector3 ? options.acceleration : new THREE.Vector3();\n that.accelerationSpread = options.accelerationSpread instanceof THREE.Vector3 ? options.accelerationSpread : new THREE.Vector3();\n\n that.velocity = options.velocity instanceof THREE.Vector3 ? options.velocity : new THREE.Vector3();\n that.velocitySpread = options.velocitySpread instanceof THREE.Vector3 ? options.velocitySpread : new THREE.Vector3();\n\n\n // And again here; only used when this.type === 'sphere' or 'disk'\n that.speed = parseFloat( typeof options.speed === 'number' ? options.speed : 0.0 );\n that.speedSpread = parseFloat( typeof options.speedSpread === 'number' ? options.speedSpread : 0.0 );\n\n\n // Sizes\n that.sizeStart = parseFloat( typeof options.sizeStart === 'number' ? options.sizeStart : 1.0 );\n that.sizeStartSpread = parseFloat( typeof options.sizeStartSpread === 'number' ? options.sizeStartSpread : 0.0 );\n\n that.sizeEnd = parseFloat( typeof options.sizeEnd === 'number' ? options.sizeEnd : that.sizeStart );\n that.sizeEndSpread = parseFloat( typeof options.sizeEndSpread === 'number' ? options.sizeEndSpread : 0.0 );\n\n that.sizeMiddle = parseFloat(\n typeof options.sizeMiddle !== 'undefined' ?\n options.sizeMiddle :\n Math.abs(that.sizeEnd + that.sizeStart) / 2\n );\n that.sizeMiddleSpread = parseFloat( typeof options.sizeMiddleSpread === 'number' ? options.sizeMiddleSpread : 0 );\n\n\n // Angles\n that.angleStart = parseFloat( typeof options.angleStart === 'number' ? options.angleStart : 0 );\n that.angleStartSpread = parseFloat( typeof options.angleStartSpread === 'number' ? options.angleStartSpread : 0 );\n\n that.angleEnd = parseFloat( typeof options.angleEnd === 'number' ? options.angleEnd : 0 );\n that.angleEndSpread = parseFloat( typeof options.angleEndSpread === 'number' ? options.angleEndSpread : 0 );\n\n that.angleMiddle = parseFloat(\n typeof options.angleMiddle !== 'undefined' ?\n options.angleMiddle :\n Math.abs(that.angleEnd + that.angleStart) / 2\n );\n that.angleMiddleSpread = parseFloat( typeof options.angleMiddleSpread === 'number' ? options.angleMiddleSpread : 0 );\n\n that.angleAlignVelocity = options.angleAlignVelocity || false;\n\n\n // Colors\n that.colorStart = options.colorStart instanceof THREE.Color ? options.colorStart : new THREE.Color( 'white' );\n that.colorStartSpread = options.colorStartSpread instanceof THREE.Vector3 ? options.colorStartSpread : new THREE.Vector3();\n\n that.colorEnd = options.colorEnd instanceof THREE.Color ? options.colorEnd : that.colorStart.clone();\n that.colorEndSpread = options.colorEndSpread instanceof THREE.Vector3 ? options.colorEndSpread : new THREE.Vector3();\n\n that.colorMiddle =\n options.colorMiddle instanceof THREE.Color ?\n options.colorMiddle :\n new THREE.Color().addColors( that.colorStart, that.colorEnd ).multiplyScalar( 0.5 );\n that.colorMiddleSpread = options.colorMiddleSpread instanceof THREE.Vector3 ? options.colorMiddleSpread : new THREE.Vector3();\n\n\n\n // Opacities\n that.opacityStart = parseFloat( typeof options.opacityStart !== 'undefined' ? options.opacityStart : 1 );\n that.opacityStartSpread = parseFloat( typeof options.opacityStartSpread !== 'undefined' ? options.opacityStartSpread : 0 );\n\n that.opacityEnd = parseFloat( typeof options.opacityEnd === 'number' ? options.opacityEnd : 0 );\n that.opacityEndSpread = parseFloat( typeof options.opacityEndSpread !== 'undefined' ? options.opacityEndSpread : 0 );\n\n that.opacityMiddle = parseFloat(\n typeof options.opacityMiddle !== 'undefined' ?\n options.opacityMiddle :\n Math.abs(that.opacityEnd + that.opacityStart) / 2\n );\n that.opacityMiddleSpread = parseFloat( typeof options.opacityMiddleSpread === 'number' ? options.opacityMiddleSpread : 0 );\n\n\n // Generic\n that.duration = typeof options.duration === 'number' ? options.duration : null;\n that.alive = parseFloat( typeof options.alive === 'number' ? options.alive : 1.0 );\n that.isStatic = typeof options.isStatic === 'number' ? options.isStatic : 0;\n\n // Particle spawn callback function.\n that.onParticleSpawn = typeof options.onParticleSpawn === 'function' ? options.onParticleSpawn : null;\n\n\n // The following properties are used internally, and mostly set when this emitter\n // is added to a particle group.\n that.particlesPerSecond = 0;\n that.attributes = null;\n that.vertices = null;\n that.verticesIndex = 0;\n that.age = 0.0;\n that.maxAge = 0.0;\n\n that.particleIndex = 0.0;\n\n that.__id = null;\n\n that.userData = {};\n};\n\nSPE.Emitter.prototype = {\n\n /**\n * Reset a particle's position. Accounts for emitter type and spreads.\n *\n * @private\n *\n * @param {THREE.Vector3} p\n */\n _resetParticle: function( i ) {\n var that = this,\n type = that.type,\n spread = that.positionSpread,\n particlePosition = that.vertices[i],\n a = that.attributes,\n particleVelocity = a.velocity.value[i],\n\n vSpread = that.velocitySpread,\n aSpread = that.accelerationSpread;\n\n // Optimise for no position spread or radius\n if(\n ( type === 'cube' && spread.x === 0 && spread.y === 0 && spread.z === 0 ) ||\n ( type === 'sphere' && that.radius === 0 ) ||\n ( type === 'disk' && that.radius === 0 )\n ) {\n particlePosition.copy( that.position );\n that._randomizeExistingVector3( particleVelocity, that.velocity, vSpread );\n\n if( type === 'cube' ) {\n that._randomizeExistingVector3( that.attributes.acceleration.value[i], that.acceleration, aSpread );\n }\n }\n\n // If there is a position spread, then get a new position based on this spread.\n else if( type === 'cube' ) {\n that._randomizeExistingVector3( particlePosition, that.position, spread );\n that._randomizeExistingVector3( particleVelocity, that.velocity, vSpread );\n that._randomizeExistingVector3( that.attributes.acceleration.value[i], that.acceleration, aSpread );\n }\n\n else if( type === 'sphere') {\n that._randomizeExistingVector3OnSphere( particlePosition, that.position, that.radius, that.radiusSpread, that.radiusScale, that.radiusSpreadClamp );\n that._randomizeExistingVelocityVector3OnSphere( particleVelocity, that.position, particlePosition, that.speed, that.speedSpread );\n }\n\n else if( type === 'disk') {\n that._randomizeExistingVector3OnDisk( particlePosition, that.position, that.radius, that.radiusSpread, that.radiusScale, that.radiusSpreadClamp );\n that._randomizeExistingVelocityVector3OnSphere( particleVelocity, that.position, particlePosition, that.speed, that.speedSpread );\n }\n\n if( typeof that.onParticleSpawn === 'function' ) {\n that.onParticleSpawn( a, i );\n }\n },\n\n /**\n * Update this emitter's particle's positions. Called by the SPE.Group\n * that this emitter belongs to.\n *\n * @param {Number} dt\n */\n tick: function( dt ) {\n\n if( this.isStatic ) {\n return;\n }\n\n // Cache some values for quicker access in loops.\n var that = this,\n a = that.attributes,\n alive = a.alive.value,\n age = a.age.value,\n start = that.verticesIndex,\n particleCount = that.particleCount,\n end = start + particleCount,\n pps = that.particlesPerSecond * that.alive,\n ppsdt = pps * dt,\n m = that.maxAge,\n emitterAge = that.age,\n duration = that.duration,\n pIndex = that.particleIndex;\n\n // Loop through all the particles in this emitter and\n // determine whether they're still alive and need advancing\n // or if they should be dead and therefore marked as such.\n for( var i = start; i < end; ++i ) {\n if( alive[ i ] === 1.0 ) {\n age[ i ] += dt;\n }\n\n if( age[ i ] >= m ) {\n age[ i ] = 0.0;\n alive[ i ] = 0.0;\n }\n }\n\n // If the emitter is dead, reset any particles that are in\n // the recycled vertices array and reset the age of the\n // emitter to zero ready to go again if required, then\n // exit this function.\n if( that.alive === 0.0 ) {\n that.age = 0.0;\n return;\n }\n\n // If the emitter has a specified lifetime and we've exceeded it,\n // mark the emitter as dead and exit this function.\n if( typeof duration === 'number' && emitterAge > duration ) {\n that.alive = 0.0;\n that.age = 0.0;\n return;\n }\n\n\n\n var n = Math.max( Math.min( end, pIndex + ppsdt ), 0),\n count = 0,\n index = 0,\n pIndexFloor = pIndex | 0,\n dtInc;\n\n for( i = pIndexFloor; i < n; ++i ) {\n if( alive[ i ] !== 1.0 ) {\n ++count;\n }\n }\n\n if( count !== 0 ) {\n dtInc = dt / count;\n\n for( i = pIndexFloor; i < n; ++i, ++index ) {\n if( alive[ i ] !== 1.0 ) {\n alive[ i ] = 1.0;\n age[ i ] = dtInc * index;\n that._resetParticle( i );\n }\n }\n }\n\n that.particleIndex += ppsdt;\n\n if( that.particleIndex < 0.0 ) {\n that.particleIndex = 0.0;\n }\n\n if( pIndex >= start + particleCount ) {\n that.particleIndex = parseFloat( start );\n }\n\n // Add the delta time value to the age of the emitter.\n that.age += dt;\n\n if( that.age < 0.0 ) {\n that.age = 0.0;\n }\n },\n\n /**\n * Reset this emitter back to its starting position.\n * If `force` is truthy, then reset all particles in this\n * emitter as well, even if they're currently alive.\n *\n * @param {Boolean} force\n * @return {this}\n */\n reset: function( force ) {\n var that = this;\n\n that.age = 0.0;\n that.alive = 0;\n\n if( force ) {\n var start = that.verticesIndex,\n end = that.verticesIndex + that.particleCount,\n a = that.attributes,\n alive = a.alive.value,\n age = a.age.value;\n\n for( var i = start; i < end; ++i ) {\n alive[ i ] = 0.0;\n age[ i ] = 0.0;\n }\n }\n\n return that;\n },\n\n\n /**\n * Enable this emitter.\n */\n enable: function() {\n this.alive = 1;\n },\n\n /**\n * Disable this emitter.\n */\n disable: function() {\n this.alive = 0;\n }\n};\n\n// Extend SPE.Emitter's prototype with functions from utils object.\nfor( var i in SPE.utils ) {\n SPE.Emitter.prototype[ '_' + i ] = SPE.utils[i];\n}\n\n\n/*** EXPORTS FROM exports-loader ***/\nmodule.exports = SPE\n\n/*****************\n ** WEBPACK FOOTER\n ** ./~/imports-loader?THREE=three!./~/exports-loader?SPE!./bower_components/ShaderParticles/index.js\n ** module id = 83\n ** module chunks = 0\n **/\n//# sourceURL=webpack:///./bower_components/ShaderParticles/index.js?./~/imports-loader?THREE=three!./~/exports-loader?SPE"); /***/ }, /* 84 */ /***/ function(module, exports, __webpack_require__) { - eval("module.exports = __webpack_require__.p + \"image/weathered-wood.jpg\"\n\n/*****************\n ** WEBPACK FOOTER\n ** ./src/images/weathered-wood.jpg\n ** module id = 84\n ** module chunks = 0\n **/\n//# sourceURL=webpack:///./src/images/weathered-wood.jpg?"); + eval("/*** IMPORTS FROM imports-loader ***/\nvar THREE = __webpack_require__(13);\n\n/**\n * @author zz85 / https://github.com/zz85\n * \n * Based on \"A Practical Analytic Model for Daylight\" \n * aka The Preetham Model, the de facto standard analytic skydome model\n * http://www.cs.utah.edu/~shirley/papers/sunsky/sunsky.pdf\n * \n * First implemented by Simon Wallner\n * http://www.simonwallner.at/projects/atmospheric-scattering\n * \n * Improved by Martin Upitis\n * http://blenderartists.org/forum/showthread.php?245954-preethams-sky-impementation-HDR\n * \n * Three.js integration by zz85 http://twitter.com/blurspline\n*/\n\nTHREE.ShaderLib['sky'] = {\n\n\tuniforms: {\n\n\t\tluminance:\t { type: \"f\", value:1 },\n\t\tturbidity:\t { type: \"f\", value:2 },\n\t\treileigh:\t { type: \"f\", value:1 },\n\t\tmieCoefficient:\t { type: \"f\", value:0.005 },\n\t\tmieDirectionalG: { type: \"f\", value:0.8 },\n\t\tsunPosition: \t { type: \"v3\", value: new THREE.Vector3() }\n\n\t},\n\n\tvertexShader: [\n\n\t\t\"varying vec3 vWorldPosition;\",\n\t\t\"varying vec2 vUv;\",\n\n\t\t\"void main() {\",\n\n\t\t\t\"vec4 worldPosition = modelMatrix * vec4( position, 1.0 );\",\n\t\t\t\"vWorldPosition = worldPosition.xyz;\",\n\t\t\t\"vUv = uv;\",\n\n\t\t\t\"gl_Position = projectionMatrix * modelViewMatrix * vec4( position, 1.0 );\",\n\n\t\t\"}\",\n\n\t].join(\"\\n\"),\n\n\tfragmentShader: [\n\n\n\t\t\"uniform sampler2D skySampler;\",\n\t\t\"uniform vec3 sunPosition;\",\n\t\t\"varying vec3 vWorldPosition;\",\n\t\t\"varying vec2 vUv;\",\n\n\n\t\t\"vec3 cameraPos = vec3(0., 0., 0.);\",\n\t\t\"// uniform sampler2D sDiffuse;\",\n\t\t\"// const float turbidity = 10.0; //\",\n\t\t\"// const float reileigh = 2.; //\",\n\t\t\"// const float luminance = 1.0; //\",\n\t\t\"// const float mieCoefficient = 0.005;\",\n\t\t\"// const float mieDirectionalG = 0.8;\",\n\n\t\t\"uniform float luminance;\",\n\t\t\"uniform float turbidity;\",\n\t\t\"uniform float reileigh;\",\n\t\t\"uniform float mieCoefficient;\",\n\t\t\"uniform float mieDirectionalG;\",\n\n\n\t\t\"vec3 sunDirection = normalize(sunPosition);\",\n\t\t\"float reileighCoefficient = reileigh;\",\n\n\t\t\"// constants for atmospheric scattering\",\n\t\t\"const float e = 2.71828182845904523536028747135266249775724709369995957;\",\n\t\t\"const float pi = 3.141592653589793238462643383279502884197169;\",\n\n\t\t\"const float n = 1.0003; // refractive index of air\",\n\t\t\"const float N = 2.545E25; // number of molecules per unit volume for air at\",\n\t\t\t\t\t\t\t\t\"// 288.15K and 1013mb (sea level -45 celsius)\",\n\t\t\"const float pn = 0.035;\t// depolatization factor for standard air\",\n\n\t\t\"// wavelength of used primaries, according to preetham\",\n\t\t\"const vec3 lambda = vec3(680E-9, 550E-9, 450E-9);\",\n\n\t\t\"// mie stuff\",\n\t\t\"// K coefficient for the primaries\",\n\t\t\"const vec3 K = vec3(0.686, 0.678, 0.666);\",\n\t\t\"const float v = 4.0;\",\n\n\t\t\"// optical length at zenith for molecules\",\n\t\t\"const float rayleighZenithLength = 8.4E3;\",\n\t\t\"const float mieZenithLength = 1.25E3;\",\n\t\t\"const vec3 up = vec3(0.0, 1.0, 0.0);\",\n\n\t\t\"const float EE = 1000.0;\",\n\t\t\"const float sunAngularDiameterCos = 0.999956676946448443553574619906976478926848692873900859324;\",\n\t\t\"// 66 arc seconds -> degrees, and the cosine of that\",\n\n\t\t\"// earth shadow hack\",\n\t\t\"const float cutoffAngle = pi/1.95;\",\n\t\t\"const float steepness = 1.5;\",\n\n\n\t\t\"vec3 totalRayleigh(vec3 lambda)\",\n\t\t\"{\",\n\t\t\t\"return (8.0 * pow(pi, 3.0) * pow(pow(n, 2.0) - 1.0, 2.0) * (6.0 + 3.0 * pn)) / (3.0 * N * pow(lambda, vec3(4.0)) * (6.0 - 7.0 * pn));\",\n\t\t\"}\",\n\n\t\t// see http://blenderartists.org/forum/showthread.php?321110-Shaders-and-Skybox-madness\n\t\t\"// A simplied version of the total Reayleigh scattering to works on browsers that use ANGLE\",\n\t\t\"vec3 simplifiedRayleigh()\",\n\t\t\"{\",\n\t\t\t\"return 0.0005 / vec3(94, 40, 18);\",\n\t\t\t// return 0.00054532832366 / (3.0 * 2.545E25 * pow(vec3(680E-9, 550E-9, 450E-9), vec3(4.0)) * 6.245);\n\t\t\"}\",\n\n\t\t\"float rayleighPhase(float cosTheta)\",\n\t\t\"{\t \",\n\t\t\t\"return (3.0 / (16.0*pi)) * (1.0 + pow(cosTheta, 2.0));\",\n\t\t\"//\treturn (1.0 / (3.0*pi)) * (1.0 + pow(cosTheta, 2.0));\",\n\t\t\"//\treturn (3.0 / 4.0) * (1.0 + pow(cosTheta, 2.0));\",\n\t\t\"}\",\n\n\t\t\"vec3 totalMie(vec3 lambda, vec3 K, float T)\",\n\t\t\"{\",\n\t\t\t\"float c = (0.2 * T ) * 10E-18;\",\n\t\t\t\"return 0.434 * c * pi * pow((2.0 * pi) / lambda, vec3(v - 2.0)) * K;\",\n\t\t\"}\",\n\n\t\t\"float hgPhase(float cosTheta, float g)\",\n\t\t\"{\",\n\t\t\t\"return (1.0 / (4.0*pi)) * ((1.0 - pow(g, 2.0)) / pow(1.0 - 2.0*g*cosTheta + pow(g, 2.0), 1.5));\",\n\t\t\"}\",\n\n\t\t\"float sunIntensity(float zenithAngleCos)\",\n\t\t\"{\",\n\t\t\t\"return EE * max(0.0, 1.0 - exp(-((cutoffAngle - acos(zenithAngleCos))/steepness)));\",\n\t\t\"}\",\n\n\t\t\"// float logLuminance(vec3 c)\",\n\t\t\"// {\",\n\t\t\"// \treturn log(c.r * 0.2126 + c.g * 0.7152 + c.b * 0.0722);\",\n\t\t\"// }\",\n\n\t\t\"// Filmic ToneMapping http://filmicgames.com/archives/75\",\n\t\t\"float A = 0.15;\",\n\t\t\"float B = 0.50;\",\n\t\t\"float C = 0.10;\",\n\t\t\"float D = 0.20;\",\n\t\t\"float E = 0.02;\",\n\t\t\"float F = 0.30;\",\n\t\t\"float W = 1000.0;\",\n\n\t\t\"vec3 Uncharted2Tonemap(vec3 x)\",\n\t\t\"{\",\n\t\t \"return ((x*(A*x+C*B)+D*E)/(x*(A*x+B)+D*F))-E/F;\",\n\t\t\"}\",\n\n\n\t\t\"void main() \",\n\t\t\"{\",\n\t\t\t\"float sunfade = 1.0-clamp(1.0-exp((sunPosition.y/450000.0)),0.0,1.0);\",\n\n\t\t\t\"// luminance = 1.0 ;// vWorldPosition.y / 450000. + 0.5; //sunPosition.y / 450000. * 1. + 0.5;\",\n\n\t\t\t \"// gl_FragColor = vec4(sunfade, sunfade, sunfade, 1.0);\",\n\t\t\t\n\t\t\t\"reileighCoefficient = reileighCoefficient - (1.0* (1.0-sunfade));\",\n\t\t\t\n\t\t\t\"float sunE = sunIntensity(dot(sunDirection, up));\",\n\n\t\t\t\"// extinction (absorbtion + out scattering) \",\n\t\t\t\"// rayleigh coefficients\",\n\n\t\t\t// \"vec3 betaR = totalRayleigh(lambda) * reileighCoefficient;\",\n\t\t\t\"vec3 betaR = simplifiedRayleigh() * reileighCoefficient;\",\n\n\t\t\t\"// mie coefficients\",\n\t\t\t\"vec3 betaM = totalMie(lambda, K, turbidity) * mieCoefficient;\",\n\n\t\t\t\"// optical length\",\n\t\t\t\"// cutoff angle at 90 to avoid singularity in next formula.\",\n\t\t\t\"float zenithAngle = acos(max(0.0, dot(up, normalize(vWorldPosition - cameraPos))));\",\n\t\t\t\"float sR = rayleighZenithLength / (cos(zenithAngle) + 0.15 * pow(93.885 - ((zenithAngle * 180.0) / pi), -1.253));\",\n\t\t\t\"float sM = mieZenithLength / (cos(zenithAngle) + 0.15 * pow(93.885 - ((zenithAngle * 180.0) / pi), -1.253));\",\n\n\n\n\t\t\t\"// combined extinction factor\t\",\n\t\t\t\"vec3 Fex = exp(-(betaR * sR + betaM * sM));\",\n\n\t\t\t\"// in scattering\",\n\t\t\t\"float cosTheta = dot(normalize(vWorldPosition - cameraPos), sunDirection);\",\n\n\t\t\t\"float rPhase = rayleighPhase(cosTheta*0.5+0.5);\",\n\t\t\t\"vec3 betaRTheta = betaR * rPhase;\",\n\n\t\t\t\"float mPhase = hgPhase(cosTheta, mieDirectionalG);\",\n\t\t\t\"vec3 betaMTheta = betaM * mPhase;\",\n\n\n\t\t\t\"vec3 Lin = pow(sunE * ((betaRTheta + betaMTheta) / (betaR + betaM)) * (1.0 - Fex),vec3(1.5));\",\n\t\t\t\"Lin *= mix(vec3(1.0),pow(sunE * ((betaRTheta + betaMTheta) / (betaR + betaM)) * Fex,vec3(1.0/2.0)),clamp(pow(1.0-dot(up, sunDirection),5.0),0.0,1.0));\",\n\n\t\t\t\"//nightsky\",\n\t\t\t\"vec3 direction = normalize(vWorldPosition - cameraPos);\",\n\t\t\t\"float theta = acos(direction.y); // elevation --> y-axis, [-pi/2, pi/2]\",\n\t\t\t\"float phi = atan(direction.z, direction.x); // azimuth --> x-axis [-pi/2, pi/2]\",\n\t\t\t\"vec2 uv = vec2(phi, theta) / vec2(2.0*pi, pi) + vec2(0.5, 0.0);\",\n\t\t\t\"// vec3 L0 = texture2D(skySampler, uv).rgb+0.1 * Fex;\",\n\t\t\t\"vec3 L0 = vec3(0.1) * Fex;\",\n\t\t\t\n\t\t\t\"// composition + solar disc\",\n\t\t\t\"//if (cosTheta > sunAngularDiameterCos)\",\n\t\t\t\"float sundisk = smoothstep(sunAngularDiameterCos,sunAngularDiameterCos+0.00002,cosTheta);\",\n\t\t\t\"// if (normalize(vWorldPosition - cameraPos).y>0.0)\",\n\t\t\t\"L0 += (sunE * 19000.0 * Fex)*sundisk;\",\n\n\n\t\t\t\"vec3 whiteScale = 1.0/Uncharted2Tonemap(vec3(W));\",\n\t\t\t\n\t\t\t\"vec3 texColor = (Lin+L0); \",\n\t\t\t\"texColor *= 0.04 ;\",\n\t\t\t\"texColor += vec3(0.0,0.001,0.0025)*0.3;\",\n\t\t\t\n\t\t\t\"float g_fMaxLuminance = 1.0;\",\n\t\t\t\"float fLumScaled = 0.1 / luminance; \",\n\t\t\t\"float fLumCompressed = (fLumScaled * (1.0 + (fLumScaled / (g_fMaxLuminance * g_fMaxLuminance)))) / (1.0 + fLumScaled); \",\n\n\t\t\t\"float ExposureBias = fLumCompressed;\",\n\t\t \n\t\t\t\"vec3 curr = Uncharted2Tonemap((log2(2.0/pow(luminance,4.0)))*texColor);\",\n\t\t\t\"vec3 color = curr*whiteScale;\",\n\n\t\t\t\"vec3 retColor = pow(color,vec3(1.0/(1.2+(1.2*sunfade))));\",\n\n\t\t\t\n\t\t\t\"gl_FragColor.rgb = retColor;\",\n\t\t\t\t\n\t\t\t\"gl_FragColor.a = 1.0;\",\n\t\t\"}\",\n\n\t].join(\"\\n\")\n\n};\n\nTHREE.Sky = function () {\n\n\tvar skyShader = THREE.ShaderLib[ \"sky\" ];\n\tvar skyUniforms = THREE.UniformsUtils.clone( skyShader.uniforms );\n\n\tvar skyMat = new THREE.ShaderMaterial( { \n\t\tfragmentShader: skyShader.fragmentShader, \n\t\tvertexShader: skyShader.vertexShader, \n\t\tuniforms: skyUniforms,\n\t\tside: THREE.BackSide\n\t} );\n\n\tvar skyGeo = new THREE.SphereGeometry( 450000, 32, 15 );\n\tvar skyMesh = new THREE.Mesh( skyGeo, skyMat );\n\n\n\t// Expose variables\n\tthis.mesh = skyMesh;\n\tthis.uniforms = skyUniforms;\n\n\n};\n\n\n/*****************\n ** WEBPACK FOOTER\n ** ./~/imports-loader?THREE=three!./bower_components/SkyShader/index.js\n ** module id = 84\n ** module chunks = 0\n **/\n//# sourceURL=webpack:///./bower_components/SkyShader/index.js?./~/imports-loader?THREE=three"); /***/ }, /* 85 */ /***/ function(module, exports, __webpack_require__) { - eval("module.exports = __webpack_require__.p + \"image/wood.jpg\"\n\n/*****************\n ** WEBPACK FOOTER\n ** ./src/images/wood.jpg\n ** module id = 85\n ** module chunks = 0\n **/\n//# sourceURL=webpack:///./src/images/wood.jpg?"); + eval("/*** IMPORTS FROM imports-loader ***/\nvar THREE = __webpack_require__(13);\n\n/**\n * @author mrdoob / http://mrdoob.com/\n */\n\nTHREE.Audio = function ( listener ) {\n\n\tTHREE.Object3D.call( this );\n\n\tthis.type = 'Audio';\n\tthis.started = false;\n\n\tif (listener.context) {\n\n\t\tthis.context = listener.context;\n\t\t// this.source = this.context.createBufferSource();\n\n\t\tthis.gain = this.context.createGain();\n\t\tthis.gain.connect( listener.input );\n\n\t\tthis.panner = this.context.createPanner();\n\t\tthis.panner.connect( this.gain );\n\n\t} else {\n\n\t\tthis.source = new Audio();\n\n\t}\n};\n\nTHREE.Audio.prototype = Object.create( THREE.Object3D.prototype );\n\nTHREE.Audio.prototype.load = function ( sources ) {\n\t//todo: support multiple sources for different audio formats\n\n\tvar scope = this;\n\tvar file;\n\tvar i;\n\tvar match;\n\tvar element = this.source instanceof window.HTMLAudioElement ? this.source : new Audio();\n\n\tif (typeof sources === 'string') {\n\t\tsources = [sources];\n\t}\n\n\tfor (i = 0; i < sources.length; i++) {\n\t\tfile = sources[i];\n\t\tmatch = /\\.([a-z0-9]+)$/i.exec(file);\n\t\tif (match && element.canPlayType('audio/' + match[1])) {\n\t\t\tbreak;\n\t\t}\n\t}\n\n\tif (this.context) {\n\t\tvar request = new XMLHttpRequest();\n\t\trequest.open( 'GET', file, true );\n\t\trequest.responseType = 'arraybuffer';\n\t\trequest.onload = function ( e ) {\n\t\t\tconsole.log('audio buffer loaded. decoding...', e );\n\t\t\tscope.context.decodeAudioData( this.response, function ( buffer ) {\n\n\t\t\t\tscope.buffer = buffer;\n\t\t\t\tif (scope.started) {\n\t\t\t\t\tscope.start();\n\t\t\t\t}\n\n\t\t\t}, function onFailure(e) {\n\t\t\t\tconsole.log('Decoding the audio buffer failed', e);\n\t\t\t} );\n\n\t\t};\n\n\t\trequest.onerror = function ( e ) {\n\t\t\tconsole.log('error', e);\n\t\t};\n\n\t\trequest.send();\n\n\t} else {\n\n\t\tthis.source.src = file;\n\t\tthis.source.play();\n\n\t}\n\n\treturn this;\n};\n\nTHREE.Audio.prototype.stop = function ( value ) {\n\n\tif (this.context) {\n\t\tthis.source.stop();\n\t\tthis.source.disconnect( this.panner );\n\t\tthis.source = null;\n\t} else {\n\t\tthis.source.pause();\n\t\tthis.source.currentTime = 0;\n\t}\n\tthis.started = false;\n};\n\nTHREE.Audio.prototype.start = function ( value ) {\n\n\tthis.started = true;\n\tif (this.context) {\n\t\tif (this.source) {\n\t\t\tthis.source.disconnect( this.panner );\n\t\t}\n\n\t\tif (this.buffer) {\n\t\t\tthis.source = this.context.createBufferSource();\n\t\t\tthis.source.buffer = this.buffer;\n\t\t\tthis.source.connect( this.panner );\n\t\t\tthis.source.start( 0 );\n\t\t}\n\t} else {\n\t\tthis.source.currentTime = 0;\n\t\tthis.source.play();\n\t}\n\n};\n\nTHREE.Audio.prototype.setLoop = function ( value ) {\n\n\tthis.source.loop = value;\n\n};\n\nTHREE.Audio.prototype.setRefDistance = function ( value ) {\n\n\tif ( this.panner ) {\n\n\t\tthis.panner.refDistance = value;\n\n\t}\n\n};\n\nTHREE.Audio.prototype.setRolloffFactor = function ( value ) {\n\n\tif ( this.panner ) {\n\n\t\tthis.panner.rolloffFactor = value;\n\n\t}\n\n};\n\nTHREE.Audio.prototype.volume = function ( volume, time ) {\n\n\tif ( this.gain ) {\n\n\t\tif ( volume !== undefined ) {\n\t\t\tthis.gain.gain.linearRampToValueAtTime( volume, this.context.currentTime + (time || 0));\n\t\t}\n\n\t\treturn this.gain.gain.value;\n\t}\n\n\tif ( volume !== undefined ) {\n\t\tthis.source.volume = volume;\n\t}\n\n\treturn this.source.volume;\n};\n\nTHREE.Audio.prototype.updateMatrixWorld = ( function () {\n\n\tvar position = new THREE.Vector3();\n\n\treturn function ( force ) {\n\n\t\tTHREE.Object3D.prototype.updateMatrixWorld.call( this, force );\n\n\t\tposition.setFromMatrixPosition( this.matrixWorld );\n\n\t\tif (this.panner) {\n\n\t\t\tthis.panner.setPosition( position.x, position.y, position.z );\n\n\t\t}\n\n\t};\n\n} )();\n\n// File:src/extras/audio/AudioListener.js\n\n/**\n * @author mrdoob / http://mrdoob.com/\n */\n\nTHREE.AudioListener = function () {\n\tvar AudioContext = window.AudioContext || window.webkitAudioContext;\n\n\tTHREE.Object3D.call( this );\n\n\tthis.type = 'AudioListener';\n\n\tif (AudioContext) {\n\t\tthis.context = new AudioContext();\n\t\tthis.input = this.context.createGain();\n\n\t\tthis.input.connect( this.context.destination );\n\t}\n};\n\nTHREE.AudioListener.prototype = Object.create( THREE.Object3D.prototype );\n\nTHREE.AudioListener.prototype.volume = function (val) {\n\tif (this.input) {\n\t\tval = val !== undefined && parseFloat(val);\n\t\tif (!isNaN(val)) {\n\t\t\tthis.input.gain.value = val;\n\t\t}\n\n\t\treturn this.input.gain.value;\n\t}\n};\n\nTHREE.AudioListener.prototype.updateMatrixWorld = ( function () {\n\n\tvar position = new THREE.Vector3();\n\tvar quaternion = new THREE.Quaternion();\n\tvar scale = new THREE.Vector3();\n\n\tvar orientation = new THREE.Vector3();\n\n\treturn function ( force ) {\n\n\t\tTHREE.Object3D.prototype.updateMatrixWorld.call( this, force );\n\n\t\tvar listener;\n\n\t\tif (this.context) {\n\t\t\tlistener = this.context.listener;\n\n\t\t\tthis.matrixWorld.decompose( position, quaternion, scale );\n\n\t\t\torientation.set( 0, 0, -1 ).applyQuaternion( quaternion );\n\n\t\t\tlistener.setPosition( position.x, position.y, position.z );\n\t\t\tlistener.setOrientation( orientation.x, orientation.y, orientation.z, this.up.x, this.up.y, this.up.z );\n\n\t\t}\n\t};\n\n} ());\n\n\n\n/*****************\n ** WEBPACK FOOTER\n ** ./~/imports-loader?THREE=three!./src/lib/ThreeAudio.js\n ** module id = 85\n ** module chunks = 0\n **/\n//# sourceURL=webpack:///./src/lib/ThreeAudio.js?./~/imports-loader?THREE=three"); /***/ } /******/ ]); \ No newline at end of file diff --git a/build/vr.js b/build/vr.js index 16ff85b..3fde241 100644 --- a/build/vr.js +++ b/build/vr.js @@ -4,9 +4,9 @@ * @link https://github.com/povdocs/webvr-starter-kit * @license MIT */ -!function(e){function t(i){if(r[i])return r[i].exports;var n=r[i]={exports:{},id:i,loaded:!1};return e[i].call(n.exports,n,n.exports,t),n.loaded=!0,n.exports}var r={};return t.m=e,t.c=r,t.p="",t(0)}(function(e){for(var t in e)if(Object.prototype.hasOwnProperty.call(e,t))switch(typeof e[t]){case"number":e[t]=e[e[t]];break;case"object":e[t]=function(t){var r=t.slice(1),i=e[t[0]];return function(e,t,n){i.apply(null,[e,t,n].concat(r))}}(e[t])}return e}([function(e,t,r){!function(){"use strict";function e(){r(2),n=r(1)}function t(){function e(e,t){var r,i=document.createElement("span");return i.innerHTML=e,i.id=t,r=i.firstChild,r.setAttribute("width",18),r.setAttribute("height",18),a.appendChild(i),i}function t(){n.orientationEnabled()?n.disableOrientation():n.enableOrientation()}function i(){n.controlMode()&&(c.classList.remove("unsupported"),l.classList.remove("unsupported"))}var a,s,h,c,l,u,d=new o,p=document.body,f=document.fullscreenEnabled||document.webkitFullscreenEnabled||document.mozFullScreenEnabled||document.msFullscreenEnabled,m=p.webkitRequestFullscreen||p.mozRequestFullScreen||p.msRequestFullscreen;u=document.createElement("meta"),u.setAttribute("name","viewport"),u.setAttribute("content","width=device-width, initial-scale=1, user-scalable=no"),document.head.appendChild(u),a=document.createElement("div"),a.id="buttons",document.body.appendChild(a),m&&f&&(s=e(r(4),"fs-enable"),s.setAttribute("title","Enable Full Screen"),s.addEventListener("click",m.bind(p),!1),h=e(r(5),"fs-disable"),h.setAttribute("title","Exit Full Screen"),h.addEventListener("click",n.exitFullscreen,!1)),n.on("fullscreenchange",function(){n.isFullscreen()?(h.style.display="inline-block",s.style.display="none"):(h.style.display="",s.style.display=""),n.vrMode()?d.enable():d.disable()}),c=e(r(6),"vr"),c.setAttribute("title","Toggle Virtual Reality"),c.className="unsupported",c.addEventListener("click",n.requestVR,!1),l=e(r(7),"orientation"),l.setAttribute("title","Toggle Orientation"),l.className="unsupported",l.addEventListener("click",t,!1),n.on("devicechange",i),i(),window.addEventListener("keydown",function(e){e.keyCode==="Z".charCodeAt(0)?n.zeroSensor():e.keyCode==="O".charCodeAt(0)?n.enableOrientation():13===e.keyCode&&n.requestVR()},!1),n.resize()}function i(){e(),n.init(),document.body?t():window.addEventListener("load",t,!1),window.addEventListener("resize",n.resize,!1),window.VR=n,window.THREE=n.THREE}var n,o=r(13).NoSleep;i(),n.start()}()},function(e,t,r){!function(){"use strict";function t(){return!!(document.fullscreenElement||document.mozFullScreenElement||document.webkitFullscreenElement||document.msFullscreenElement)}function i(){U=!1,M&&M.exit()}function n(){var e,t,r,i,n;for(E.ray.origin.copy(v.position),E.ray.direction.set(0,0,.5).unproject(v).sub(v.position).normalize(),i=E.intersectObjects(y.children),e=0;en&&(a=Date.now(),s=a-i,s>1e3&&(navigator.vibrate&&navigator.vibrate(100),i=Date.now(),_.emit("shake")))),e=c.x,t=c.y,r=c.z,k=!0},!1)}function d(){function e(){document.body.insertBefore(b.domElement,document.body.firstChild||null),l()}if(!b){b=new m.WebGLRenderer,b.domElement.addEventListener("webglcontextlost",function(e){console.log("lost context",e)}),y=new m.Scene,C=new N(y,r(12),null,{name:"body"}).moveTo(0,1.5,4),x=C.object,P=new N(x,function(e){return v=new m.PerspectiveCamera(60,window.innerWidth/window.innerHeight,R,B),e.add(v),v}).moveTo(0,1e-4,1e-4),w=new m.AudioListener,w.name="audio-listener",v.add(w),A=new m.VRControls(v),A.freeze=!L,M=new m.VRStereoEffect(b),M.near=R,M.far=B,M.addEventListener("fullscreenchange",function(e){var r;t()?U&&(S.enabled=!1,A.freeze=!1,A.reset(),r=window.screen,r.lockOrientation?r.lockOrientation("landscape-primary"):r.mozLockOrientation?r.mozLockOrientation("landscape-primary"):r.orientation&&r.orientation.lock&&r.orientation.lock("landscape-primary")):_.exitVR(),v.position.set(0,1e-4,1e-4),v.rotation.set(0,0,0),_.emit("fullscreenchange",e)}),A.addEventListener("devicechange",function(){k=!0,void 0===L&&(L="deviceorientation"===A.mode()),A.freeze=!L&&!U,_.emit("devicechange",A.mode(),M.hmd())}),S=new m.OrbitControls(v),S.target0.set(0,1e-4,0),S.target.copy(S.target0),S.update();var n=new m.DirectionalLight(16777215,.8);n.name="directional-light",n.position.set(20,100,100),n.castShadow=!0,n.shadowCameraVisible=!0,n.shadowMapWidth=2048,n.shadowMapHeight=2048,n.shadowCameraLeft=-10,n.shadowCameraRight=10,n.shadowCameraTop=10,n.shadowCameraBottom=-10,n.shadowCameraFar=150,n.shadowCameraNear=100,n.shadowDarkness=1,y.add(n),y.add(new m.AmbientLight(4473924)),_&&(_.camera=P,_.body=C,_.scene=y,_.canvas=b.domElement,_.zeroSensor=A.zeroSensor),E=new m.Raycaster,document.body?e():window.addEventListener("load",e,!1),_.canvas.addEventListener("mozfullscreenerror",i,!1),_.canvas.addEventListener("webkitfullscreenerror",i,!1),_.canvas.addEventListener("fullscreenerror",i,!1)}}function p(){m=r(33),r(14),r(15),r(16),m.ImageUtils.crossOrigin="",g=r(32),r(17),r(18)}function f(){d(),u(),l(),document.addEventListener("visibilitychange",c),document.addEventListener("mozvisibilitychange",c),document.addEventListener("msvisibilitychange",c),document.addEventListener("webkitvisibilitychange",c)}var m,g,v,y,x,b,w,A,M,S,E,T,C,P,L,_,R=.1,B=1e6,F=r(9),z=function(){},D=z,O=(document.exitFullscreen||document.mozCancelFullScreen||document.webkitExitFullscreen||document.msExitFullscreen||z).bind(document),V=!1,U=!1,k=!1,N=r(11),G=["box","cylinder","torus","sphere","empty","sound","floor","sky","panorama","image","video","text"],H=[],I=0,j=[];p(),e.exports=_={init:f,render:o,start:h,stop:s,resize:l,THREE:m,materials:F,animate:function(e){var t;"function"==typeof e&&(t=j.indexOf(e),0>t&&j.push(e))},end:function(e){var t;return e?void("function"==typeof e&&(t=j.indexOf(e),t>=0&&j.splice(t,1))):void(j.length=0)},requestVR:function(){!U&&M&&(U=!0,M.requestFullScreen())},exitVR:function(){return U=!1,t()?void O():(S.enabled=!0,A.freeze=!L,void v.rotation.set(0,0,0))},vrMode:function(){return U&&t()},orientationEnabled:function(){return!!L},enableOrientation:function(){L=!0,U||(A.freeze=!1)},disableOrientation:function(){L=!1,v.rotation.set(0,0,0),A.freeze=!U},isFullscreen:t,requestFullscreen:D,exitFullscreen:function(){t()&&O()},controlMode:function(){return A&&A.mode()},zeroSensor:z,vibrate:navigator.vibrate?navigator.vibrate.bind(navigator):z,times:function(e,t){var r;for(r=0;e>r;r++)t(r)},camera:P,body:C,scene:y,canvas:b&&b.domElement||null},G.forEach(function(e){var t,i=r(10)("./"+e);_[e]=function(e){var t=new N(y,i,x,e);return H.push(t),t},N.prototype[e]=function(e){var t=new N(this.object,i,x,e);return H.push(t),t};for(t in i)i.hasOwnProperty(t)&&"function"==typeof i[t]&&(_[e][t]=i[t],N.prototype[e][t]=i[t])}),g(_),Object.defineProperty(_,"target",{get:function(){return T}})}()},function(e,t,r){var i=r(3);"string"==typeof i&&(i=[[e.id,i,""]]);r(8)(i,{});i.locals&&(e.exports=i.locals)},function(e,t,r){t=e.exports=r(31)(),t.push([e.id,"body{font-family:'Helvetica Neue',Helvetica,Arial,sans-serif;color:#eee;overflow:hidden;background:#282828;height:100%;width:100%;margin:0;padding:0}canvas{width:100%!important;height:100%!important;top:0;left:0}#buttons{position:absolute;bottom:0;left:0;padding:12px;margin:8px;border-radius:8px;background-color:rgba(128,128,128,.6)}#buttons>*{margin:0 10px;display:inline-block;width:18px;height:18px;cursor:pointer}#buttons>:first-child{margin-left:0}#buttons>.unsupported,#fs-disable{display:none}",""])},function(e,t,r){e.exports='\n \n'},function(e,t,r){e.exports='\n \n'},function(e,t,r){e.exports='\n \n'},function(e,t,r){e.exports='\n \n'},function(e,t,r){function i(e,t){for(var r=0;r2048||o.naturalHeight>2048)&&(e=2048/Math.max(o.naturalWidth,o.naturalHeight),t=document.createElement("canvas"),t.width=Math.floor(o.naturalWidth*e),t.height=Math.floor(o.naturalHeight*e),i=t.getContext("2d"),i.drawImage(o,0,0,o.naturalWidth,o.naturalHeight,0,0,t.width,t.height),o=t),l.image=o,l.needsUpdate=!0,"function"==typeof r&&setTimeout(r.bind(null,l,o),1)}var o,a,l,d;return a=c.exec(e),d=!!a,a||(a=h.exec(e)),u[e]?o=u[e]:(o=document.createElement("img"),a&&(a[1]&&a[1]!==window.location.hostname||a[2]&&a[2]!==window.location.port)&&(o.crossOrigin="anonymous"),o.src=e,u[e]=o),l=new n.Texture(void 0,t),o.naturalWidth||d?setTimeout(i,1):o.addEventListener("load",i),l}function t(t){function r(r){if("string"==typeof r){if(h.test(r)||c.test(r))return e(r);r=f[r]}return"function"==typeof r?r(t):r}var i,s=d[t.type]||n.MeshLambertMaterial;return i=a({},t),o({ambient:t.ambient||t.color,emissive:t.emissive||t.color,map:r(t.map),specularMap:r(t.specularMap),normalMap:r(t.normalMap),alphaMap:r(t.alphaMap),envMap:r(t.envMap),lightMap:r(t.lightMap)},function(e,t){void 0!==e&&(i[t]=e)}),delete i.type,new s(i)}var i,n=r(33),o=r(36),a=r(37),s=navigator.userAgent.match(/(iPad|iPhone|iPod)/g),h=r(35),c=/^data:image\/(?:png|jpe?g|gif);/,l="http://pov-tc.pbs.org/pov/flv/2015/webvr-starter-kit/",u={},d={lambert:n.MeshLambertMaterial,basic:n.MeshBasicMaterial,phong:n.MeshPhongMaterial,normal:n.MeshNormalMaterial,depth:n.MeshDepthMaterial},p={asphalt:{repeat:12},"brick-tiles":{repeat:2},bricks:{type:"phong",repeat:4,normalMap:"bricks-normal.jpg",specularMap:"bricks-specular.jpg"},checkerboard:{repeat:10,map:"checkerboard.png"},grass:{repeat:12},"metal-floor":{type:"phong",shininess:100,repeat:2},metal:{type:"phong",shininess:100,shading:n.SmoothShading,repeat:2},stone:{repeat:8},tiles:{repeat:4},"weathered-wood":{repeat:8},wood:{repeat:4}},f={};return l=function(){var e,t;return document.currentScript?e=document.currentScript.getAttribute("src"):(t=document.getElementsByTagName("script"),e=t[t.length-1].getAttribute("src")),h.test(e)?"http://pov-tc.pbs.org/pov/flv/2015/webvr-starter-kit/":e.replace(/[a-z\-\.]+\.js$/i,"")}(),i={standard:function(){return new n.MeshLambertMaterial},textures:f,imageTexture:e,material:t,library:["standard"]},o(p,function(o,s){function h(t,i){function o(e){return/^[a-z0-9\/\-]+\.(png|jpg)$/i.test(e)?l+e:e}return i=i||{},function(s){var h=e(o(r(34)("./"+t)));return s=a({},i,s),s.repeat&&(s.repeat>0?h.repeat.set(s.repeat,s.repeat):s.repeat instanceof n.Vector2&&h.repeat.copy(s.repeat),h.wrapS=h.wrapT=n.RepeatWrapping),h}}var c,u=h(o.map||s+".jpg",o);c=a({},o,{map:u}),f[s]=u,o.normalMap&&(c.normalMap=f[s+"-normal"]=h(o.normalMap,o)),o.specularMap&&(c.specularMap=f[s+"-specular"]=h(o.specularMap,o)),i.library.push(s),i[s]=function(e){var r=a({},c,e);return t(r)}}),i}()},function(e,t,r){function i(e){return r(n(e))}function n(e){return o[e]||function(){throw new Error("Cannot find module '"+e+"'.")}()}var o={"./box":19,"./box.js":19,"./cylinder":20,"./cylinder.js":20,"./empty":12,"./empty.js":12,"./floor":21,"./floor.js":21,"./image":22,"./image.js":22,"./panorama":23,"./panorama.js":23,"./particles":24,"./particles.js":24,"./sky":25,"./sky.js":25,"./sound":26,"./sound.js":26,"./sphere":27,"./sphere.js":27,"./text":28,"./text.js":28,"./torus":29,"./torus.js":29,"./video":30,"./video.js":30};i.keys=function(){return Object.keys(o)},i.resolve=n,e.exports=i,i.id=10},function(e,t,r){e.exports=function(){"use strict";function e(e,t){var r;return r=e.geometry,l.setFromMatrixPosition(t.matrixWorld),r?(r.computeBoundingBox(),e.worldToLocal(l),e.geometry.boundingBox.distanceToPoint(l)):(u.setFromMatrixPosition(e.matrixWorld),u.distanceTo(l))}function t(t,r,n,s){var h,c,l=this,u=!1;s=s||{},a(this),n&&(this.update=function(){var e=u;u=l.distancer;r++);},t.findObject=function(e){return e instanceof t?e:e&&e instanceof o.Object3D?d.get?d.get(e):d[e.id]:void 0},t}()},function(e,t,r){e.exports=function(){"use strict";var e=(r(9),r(33));return function(t,r){var i=new e.Object3D;return i.name="empty",t.add(i),i}}()},function(e,t,r){!function(e){function t(e,t,r){var i=document.createElement("source");i.src=r,i.type="video/"+t,e.appendChild(i)}var r={Android:/Android/gi.test(navigator.userAgent),iOS:/AppleWebKit/.test(navigator.userAgent)&&/Mobile\/\w+/.test(navigator.userAgent)},i={WebM:"data:video/webm;base64,GkXfo0AgQoaBAUL3gQFC8oEEQvOBCEKCQAR3ZWJtQoeBAkKFgQIYU4BnQI0VSalmQCgq17FAAw9CQE2AQAZ3aGFtbXlXQUAGd2hhbW15RIlACECPQAAAAAAAFlSua0AxrkAu14EBY8WBAZyBACK1nEADdW5khkAFVl9WUDglhohAA1ZQOIOBAeBABrCBCLqBCB9DtnVAIueBAKNAHIEAAIAwAQCdASoIAAgAAUAmJaQAA3AA/vz0AAA=",MP4:"data:video/mp4;base64,AAAAHGZ0eXBpc29tAAACAGlzb21pc28ybXA0MQAAAAhmcmVlAAAAG21kYXQAAAGzABAHAAABthADAowdbb9/AAAC6W1vb3YAAABsbXZoZAAAAAB8JbCAfCWwgAAAA+gAAAAAAAEAAAEAAAAAAAAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAQAAAAAAAAAAAAAAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAIAAAIVdHJhawAAAFx0a2hkAAAAD3wlsIB8JbCAAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAQAAAAAAAAAAAAAAAAAAQAAAAAAIAAAACAAAAAABsW1kaWEAAAAgbWRoZAAAAAB8JbCAfCWwgAAAA+gAAAAAVcQAAAAAAC1oZGxyAAAAAAAAAAB2aWRlAAAAAAAAAAAAAAAAVmlkZW9IYW5kbGVyAAAAAVxtaW5mAAAAFHZtaGQAAAABAAAAAAAAAAAAAAAkZGluZgAAABxkcmVmAAAAAAAAAAEAAAAMdXJsIAAAAAEAAAEcc3RibAAAALhzdHNkAAAAAAAAAAEAAACobXA0dgAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAIAAgASAAAAEgAAAAAAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABj//wAAAFJlc2RzAAAAAANEAAEABDwgEQAAAAADDUAAAAAABS0AAAGwAQAAAbWJEwAAAQAAAAEgAMSNiB9FAEQBFGMAAAGyTGF2YzUyLjg3LjQGAQIAAAAYc3R0cwAAAAAAAAABAAAAAQAAAAAAAAAcc3RzYwAAAAAAAAABAAAAAQAAAAEAAAABAAAAFHN0c3oAAAAAAAAAEwAAAAEAAAAUc3RjbwAAAAAAAAABAAAALAAAAGB1ZHRhAAAAWG1ldGEAAAAAAAAAIWhkbHIAAAAAAAAAAG1kaXJhcHBsAAAAAAAAAAAAAAAAK2lsc3QAAAAjqXRvbwAAABtkYXRhAAAAAQAAAABMYXZmNTIuNzguMw=="},n=function(){return r.iOS?this.noSleepTimer=null:r.Android&&(this.noSleepVideo=document.createElement("video"),this.noSleepVideo.setAttribute("loop",""),t(this.noSleepVideo,"webm",i.WebM),t(this.noSleepVideo,"mp4",i.MP4)),this};n.prototype.enable=function(e){r.iOS?(this.disable(),this.noSleepTimer=window.setInterval(function(){window.location=window.location,window.setTimeout(window.stop,0)},e||15e3)):r.Android&&this.noSleepVideo.play()},n.prototype.disable=function(){r.iOS?this.noSleepTimer&&(window.clearInterval(this.noSleepTimer),this.noSleepTimer=null):r.Android&&this.noSleepVideo.pause()},e.NoSleep=n}(this)},function(e,t,r){var i=r(33);i.DeviceOrientationControls=function(e){var t=this;this.object=e,this.object.rotation.reorder("YXZ"),this.enabled=!0,this.deviceOrientation={},this.screenOrientation=0;var r=function(e){t.deviceOrientation=e},n=function(){t.screenOrientation=window.orientation||0},o=function(){var e=new i.Vector3(0,0,1),t=new i.Euler,r=new i.Quaternion,n=new i.Quaternion(-Math.sqrt(.5),0,0,Math.sqrt(.5));return function(i,o,a,s,h){t.set(a,o,-s,"YXZ"),i.setFromEuler(t),i.multiply(n),i.multiply(r.setFromAxisAngle(e,-h))}}();this.connect=function(){n(),window.addEventListener("orientationchange",n,!1),window.addEventListener("deviceorientation",r,!1),t.enabled=!0},this.disconnect=function(){window.removeEventListener("orientationchange",n,!1),window.removeEventListener("deviceorientation",r,!1),t.enabled=!1},this.update=function(){if(t.enabled!==!1){var e=t.deviceOrientation.alpha?i.Math.degToRad(t.deviceOrientation.alpha):0,r=t.deviceOrientation.beta?i.Math.degToRad(t.deviceOrientation.beta):0,n=t.deviceOrientation.gamma?i.Math.degToRad(t.deviceOrientation.gamma):0,a=t.screenOrientation?i.Math.degToRad(t.screenOrientation):0;o(t.object.quaternion,e,r,n,a)}},this.connect()}},function(e,t,r){var i=r(33);i.OrbitControls=function(e,t){function r(){return 2*Math.PI/60/60*m.autoRotateSpeed}function n(){return Math.pow(.95,m.zoomSpeed)}function o(e){if(e.button===i.MOUSE.LEFT&&m.enabled!==!1){if(e.preventDefault(),e.button===m.mouseButtons.ORBIT){if(m.noRotate===!0)return;D=z.ROTATE,v.set(e.clientX,e.clientY)}else if(e.button===m.mouseButtons.ZOOM){if(m.noZoom===!0)return;D=z.DOLLY,E.set(e.clientX,e.clientY)}else if(e.button===m.mouseButtons.PAN){if(m.noPan===!0)return;D=z.PAN,b.set(e.clientX,e.clientY)}D!==z.NONE&&(window.addEventListener("mousemove",a,!1),window.addEventListener("mouseup",s,!1),m.dispatchEvent(k))}}function a(e){if(m.enabled!==!1){e.preventDefault();var t=m.domElement===document?m.domElement.body:m.domElement;if(D===z.ROTATE){if(m.noRotate===!0)return;y.set(e.clientX,e.clientY),x.subVectors(y,v),m.rotateLeft(2*Math.PI*x.x/t.clientWidth*m.rotateSpeed),m.rotateUp(2*Math.PI*x.y/t.clientHeight*m.rotateSpeed),v.copy(y)}else if(D===z.DOLLY){if(m.noZoom===!0)return;T.set(e.clientX,e.clientY),C.subVectors(T,E),C.y>0?m.dollyIn():m.dollyOut(),E.copy(T)}else if(D===z.PAN){if(m.noPan===!0)return;w.set(e.clientX,e.clientY),A.subVectors(w,b),m.pan(A.x,A.y),b.copy(w)}D!==z.NONE&&m.update()}}function s(){m.enabled!==!1&&(window.removeEventListener("mouseup",s,!1),m.dispatchEvent(N),D=z.NONE)}function h(e){if(m.enabled!==!1&&m.noZoom!==!0&&D===z.NONE){e.preventDefault(),e.stopPropagation();var t=0;void 0!==e.wheelDelta?t=e.wheelDelta:void 0!==e.detail&&(t=-e.detail),t>0?m.dollyOut():m.dollyIn(),m.update(),m.dispatchEvent(k),m.dispatchEvent(N)}}function c(e){if(m.enabled!==!1&&m.noKeys!==!0&&m.noPan!==!0)switch(e.keyCode){case m.keys.UP:m.pan(0,m.keyPanSpeed),m.update();break;case m.keys.BOTTOM:m.pan(0,-m.keyPanSpeed),m.update();break;case m.keys.LEFT:m.pan(m.keyPanSpeed,0),m.update();break;case m.keys.RIGHT:m.pan(-m.keyPanSpeed,0),m.update()}}function l(e){if(m.enabled!==!1){switch(e.touches.length){case 1:if(m.noRotate===!0)return;D=z.TOUCH_ROTATE,v.set(e.touches[0].pageX,e.touches[0].pageY);break;case 2:if(m.noZoom===!0)return;D=z.TOUCH_DOLLY;var t=e.touches[0].pageX-e.touches[1].pageX,r=e.touches[0].pageY-e.touches[1].pageY,i=Math.sqrt(t*t+r*r);E.set(0,i);break;case 3:if(m.noPan===!0)return;D=z.TOUCH_PAN,b.set(e.touches[0].pageX,e.touches[0].pageY);break;default:D=z.NONE}D!==z.NONE&&m.dispatchEvent(k)}}function u(e){if(m.enabled!==!1){e.preventDefault(),e.stopPropagation();var t=m.domElement===document?m.domElement.body:m.domElement;switch(e.touches.length){case 1:if(m.noRotate===!0)return;if(D!==z.TOUCH_ROTATE)return;y.set(e.touches[0].pageX,e.touches[0].pageY),x.subVectors(y,v),m.rotateLeft(2*Math.PI*x.x/t.clientWidth*m.rotateSpeed),m.rotateUp(2*Math.PI*x.y/t.clientHeight*m.rotateSpeed),v.copy(y),m.update();break;case 2:if(m.noZoom===!0)return;if(D!==z.TOUCH_DOLLY)return;var r=e.touches[0].pageX-e.touches[1].pageX,i=e.touches[0].pageY-e.touches[1].pageY,n=Math.sqrt(r*r+i*i);T.set(0,n),C.subVectors(T,E),C.y>0?m.dollyOut():m.dollyIn(),E.copy(T),m.update();break;case 3:if(m.noPan===!0)return;if(D!==z.TOUCH_PAN)return;w.set(e.touches[0].pageX,e.touches[0].pageY),A.subVectors(w,b),m.pan(A.x,A.y),b.copy(w),m.update();break;default:D=z.NONE}}}function d(){m.enabled!==!1&&(m.dispatchEvent(N),D=z.NONE)}this.object=e,this.domElement=void 0!==t?t:document,this.enabled=!0,this.target=new i.Vector3,this.center=this.target,this.noZoom=!1,this.zoomSpeed=1,this.minDistance=0,this.maxDistance=1/0,this.noRotate=!1,this.rotateSpeed=1,this.noPan=!1,this.keyPanSpeed=7,this.autoRotate=!1,this.autoRotateSpeed=2,this.minPolarAngle=0,this.maxPolarAngle=Math.PI,this.minAzimuthAngle=-(1/0),this.maxAzimuthAngle=1/0,this.noKeys=!1,this.keys={LEFT:37,UP:38,RIGHT:39,BOTTOM:40},this.mouseButtons={ORBIT:i.MOUSE.LEFT,ZOOM:i.MOUSE.MIDDLE,PAN:i.MOUSE.RIGHT};var p,f,m=this,g=1e-6,v=new i.Vector2,y=new i.Vector2,x=new i.Vector2,b=new i.Vector2,w=new i.Vector2,A=new i.Vector2,M=new i.Vector3,S=new i.Vector3,E=new i.Vector2,T=new i.Vector2,C=new i.Vector2,P=0,L=0,_=1,R=new i.Vector3,B=new i.Vector3,F=new i.Quaternion,z={NONE:-1,ROTATE:0,DOLLY:1,PAN:2,TOUCH_ROTATE:3,TOUCH_DOLLY:4,TOUCH_PAN:5},D=z.NONE;this.target0=this.target.clone(),this.position0=this.object.position.clone();var O=(new i.Quaternion).setFromUnitVectors(e.up,new i.Vector3(0,1,0)),V=O.clone().inverse(),U={type:"change"},k={type:"start"},N={type:"end"};this.rotateLeft=function(e){void 0===e&&(e=r()),L-=e},this.rotateUp=function(e){void 0===e&&(e=r()),P-=e},this.panLeft=function(e){var t=this.object.matrix.elements;M.set(t[0],t[1],t[2]),M.multiplyScalar(-e),R.add(M)},this.panUp=function(e){var t=this.object.matrix.elements;M.set(t[4],t[5],t[6]),M.multiplyScalar(e),R.add(M)},this.pan=function(e,t){var r=m.domElement===document?m.domElement.body:m.domElement;if(void 0!==m.object.fov){var i=m.object.position,n=i.clone().sub(m.target),o=n.length();o*=Math.tan(m.object.fov/2*Math.PI/180),m.panLeft(2*e*o/r.clientHeight),m.panUp(2*t*o/r.clientHeight)}else void 0!==m.object.top?(m.panLeft(e*(m.object.right-m.object.left)/r.clientWidth),m.panUp(t*(m.object.top-m.object.bottom)/r.clientHeight)):console.warn("WARNING: OrbitControls.js encountered an unknown camera type - pan disabled.")},this.dollyIn=function(e){void 0===e&&(e=n()),_/=e},this.dollyOut=function(e){void 0===e&&(e=n()),_*=e},this.update=function(){var e=this.object.position;S.copy(e).sub(this.target),S.applyQuaternion(O),p=Math.atan2(S.x,S.z),f=Math.atan2(Math.sqrt(S.x*S.x+S.z*S.z),S.y),this.autoRotate&&D===z.NONE&&this.rotateLeft(r()),p+=L,f+=P,p=Math.max(this.minAzimuthAngle,Math.min(this.maxAzimuthAngle,p)),f=Math.max(this.minPolarAngle,Math.min(this.maxPolarAngle,f)),f=Math.max(g,Math.min(Math.PI-g,f));var t=S.length()*_;t=Math.max(this.minDistance,Math.min(this.maxDistance,t)),this.target.add(R),S.x=t*Math.sin(f)*Math.sin(p),S.y=t*Math.cos(f),S.z=t*Math.sin(f)*Math.cos(p),S.applyQuaternion(V),e.copy(this.target).add(S),this.object.lookAt(this.target),L=0,P=0,_=1,R.set(0,0,0),(B.distanceToSquared(this.object.position)>g||8*(1-F.dot(this.object.quaternion))>g)&&(this.dispatchEvent(U),B.copy(this.object.position),F.copy(this.object.quaternion))},this.reset=function(){D=z.NONE,this.target.copy(this.target0),this.object.position.copy(this.position0),this.update()},this.getPolarAngle=function(){return f},this.getAzimuthalAngle=function(){return p},this.domElement.addEventListener("mousedown",o,!1),this.domElement.addEventListener("mousewheel",h,!1),this.domElement.addEventListener("DOMMouseScroll",h,!1),this.domElement.addEventListener("touchstart",l,!1),this.domElement.addEventListener("touchend",d,!1),this.domElement.addEventListener("touchmove",u,!1),window.addEventListener("keydown",c,!1),this.update()},i.OrbitControls.prototype=Object.create(i.EventDispatcher.prototype),i.OrbitControls.prototype.constructor=i.OrbitControls},function(e,t,r){var i=r(33);!function(){function e(e,t){r.push({type:e,format:t})}var t=console.log,r=[];e(i.Matrix4,function(e){var t=e.elements;return[[t[0],t[1],t[2],t[3]],[t[4],t[5],t[6],t[7]],[t[8],t[9],t[10],t[11]],[t[12],t[13],t[14],t[15]]]}),e(i.Matrix3,function(e){var t=e.elements;return[[t[0],t[1],t[2]],[t[3],t[4],t[5]],[t[6],t[7],t[8]]]}),e(i.Vector2,function(e){return{Vector2:{x:e.x,y:e.y}}}),e(i.Vector3,function(e){return{Vector3:{x:e.x,y:e.y,z:e.z}}}),e(i.Vector4,function(e){return{Vector4:{x:e.x,y:e.y,z:e.z,w:e.w}}}),e(i.Euler,function(e){return{Vector4:{x:e.x,y:e.y,z:e.z,order:e.order}}}),e(i.Ray,function(e){return{"Ray origin":{x:e.origin.x,y:e.origin.y,z:e.origin.z},"Ray direction":{x:e.direction.x,y:e.direction.y,z:e.direction.z}}}),console.log=function(){var e=!1;[].forEach.call(arguments,function(t){r.forEach(function(r){t instanceof r.type&&(e=!0)})}),e?[].forEach.call(arguments,function(e){t.apply(console,[e]),r.forEach(function(t){e instanceof t.type&&console.table(t.format(e))})}):t.apply(console,arguments)}}()},function(e,t,r){var i=r(33);i.VRStereoEffect=function(e,t,r){function n(e,t,r){var n=new i.Matrix4,o=n.elements,a=Math.tan(e.upDegrees*R),s=Math.tan(e.downDegrees*R),h=Math.tan(e.leftDegrees*R),c=Math.tan(e.rightDegrees*R),l=2/(h+c),u=2/(a+s);return o[0]=l,o[4]=0,o[8]=-((h-c)*l*.5),o[12]=0,o[1]=0,o[5]=u,o[9]=(a-s)*u*.5,o[13]=0,o[2]=0,o[6]=0,o[10]=r/(t-r),o[14]=r*t/(t-r),o[3]=0,o[7]=0,o[11]=-1,o[15]=0,n}function o(){var t,r;u&&d?(t=c,r=l):(t=g||e.domElement.offsetWidth||window.innerWidth,r=v||e.domElement.offsetHeight||window.innerHeight),e.setSize(t,r)}function a(){var e,t,r,i,a,s,h,d;return u?(u.getEyeParameters?(r=u.getEyeParameters("left"),i=u.getEyeParameters("right"),a=r.renderRect,s=i.renderRect,c=s.x+s.width,l=Math.max(a.y+a.height,s.y+s.height),e=r.currentFieldOfView,t=i.currentFieldOfView,u.setFieldOfView(e,t,P,L),x.copy(r.eyeTranslation),b.copy(i.eyeTranslation),T=r.renderRect,C=i.renderRect):u.getRecommendedEyeRenderRect&&(h=u.getRecommendedEyeRenderRect("left"),d=u.getRecommendedEyeRenderRect("right"),c=h.width+d.width,l=Math.max(h.height,d.height),u.getCurrentEyeFieldOfView?(e=u.getCurrentEyeFieldOfView("left"),t=u.getCurrentEyeFieldOfView("right")):(e=u.getRecommendedEyeFieldOfView("left"),t=u.getRecommendedEyeFieldOfView("right")),x.copy(u.getEyeTranslation("left")),b.copy(u.getEyeTranslation("right")),T.x=h.left,T.y=h.top,T.width=h.width,T.height=h.height,C.x=d.left,C.y=d.top,C.width=d.width,C.height=d.height),o(),S.projectionMatrix=n(e,P,L),void(E.projectionMatrix=n(t,P,L))):(S.fov=80,void(E.fov=80))}function s(e){var t,r;for(t=0;tu)&&(u=5),T=_*u,p.font=b.font,c=t.exec(p.font),m=parseFloat(c&&c[1])||50,w=1.5*m,o=new h,e=0===b.text?"0":String(b.text||""),u){for(e=e.trim()+" ",A=0;AE?o?o.add(C):o=new h(C):!o&&h.measure(C)>=T?(P.push(new h(C)),C="",o=new h,R=!0):(o.wrap=!0,P.push(o),o=new h(C),R=!0),C=""):C+=r;o&&P.push(o)}else P.push(new h(e));T&&R||(T=P.reduce(function(e,t){return Math.max(e,t.totalWidth)},0)),T=Math.min(T,2048),B=P.length*w,a&&a.mipmap===!1?(d.width=T,d.height=B):(d.width=s(T),d.height=s(B)),f.scale.set(d.width/_,d.height/_,1),p.font=b.font,p.textAlign=b.textAlign,p.textBaseline=b.textBaseline,p.direction=b.direction,p.fillStyle=b.fillStyle,v=(d.width-T)/2,S=(d.height-B)/2+w/2,l=""===p.direction||"inherit"===p.direction,M="center"===p.textAlign?d.width/2:"right"===p.textAlign||"end"===p.textAlign&&("ltr"===p.direction||l&&"ltr"===L)||"start"===p.textAlign&&("rtl"===p.direction||l&&"rtl"===L)?d.width-v:v,P.forEach(function(e){var t,r;"justify"===b.textAlign&&e.wrap&&e.words.length>1?(t=M,r=(T-e.wordsWidth)/(e.words.length-1),e.words.forEach(function(e){p.fillText(e,t,S),t+=r+h.measure(e)})):p.fillText(e.text(),M,S),S+=w}),y=T/_,x=P.length*w/_,g.needsUpdate=!0,f.name=e.trim()}var l,u,d,p,f,m,g,v=this,y=0,x=0,b={text:"",font:"80px sans-serif",textAlign:"center",textBaseline:"",direction:"",fillStyle:"white",resolution:256,wrap:5};return h.prototype.text=function(){return this.words.join(" ")},h.prototype.add=function(e){var t;this.words.length&&(this.totalWidth+=this.spaceWidth),this.words.push(e),t=h.measure(e),this.totalWidth+=t,this.wordsWidth+=t},h.prototype.measure=function(e){var t=this.totalWidth;return e&&(t+=h.measure(e),this.words.length&&(t+=this.spaceWidth)),t},h.measure=function(e){return p.measureText(e).width},d=document.createElement("canvas"),p=d.getContext("2d"),g=new e.Texture(d),d.width===s(d.width)&&d.height===s(d.height)&&(g.minFilter=e.LinearMipMapLinearFilter,g.generateMipmaps=!0),l=new e.PlaneBufferGeometry(1,1),u=new e.MeshBasicMaterial({side:e.DoubleSide,transparent:!0,map:g}),f=new e.Mesh(l,u),m=new e.Object3D,m.name="text",m.add(f),r.add(m),"string"==typeof a?b.text=a:a&&Object.keys(b).forEach(function(e){b[e]=a[e]||b[e]}),c(),Object.keys(b).forEach(function(e){Object.defineProperty(v,e,{get:function(){return b[e]},set:function(t){b[e]=t,c()}})}),Object.defineProperty(v,"width",{get:function(){return y}}),Object.defineProperty(v,"height",{get:function(){return x}}),this.material=u,m}}()},function(e,t,r){e.exports=function(){"use strict";var e=r(9),t=r(33);return function(r,i){var n,o;return n=new t.TorusGeometry(void 0===i.radius?.5:i.radius,void 0===i.tube?.125:i.tube,void 0===i.radialSegments?12:i.radialSegments,void 0===i.tubularSegments?16:i.tubularSegments,i.arc),o=new t.Mesh(n,e.standard()),o.name="torus",r.add(o),o}}()},function(e,t,r){e.exports=function(){"use strict";var e,t=r(33),i=r(35),n=/\.(webm|ogg|ogv|m4v|mp4|mov)/i;return e=function(r,o){function a(e){return e>0&&0===(e&e-1)}function s(){var e=p.videoWidth/p.videoHeight;o&&o.sphere||l.applyMatrix((new t.Matrix4).makeScale(1,m/e,1)),m=e,p.videoWidth===p.videoHeight&&a(p.videoWidth)&&a(p.videoHeight)?(f.minFilter=t.LinearMipMapLinearFilter,f.generateMipmaps=!0):(f.minFilter=t.LinearFilter,f.generateMipmaps=!1),u.map=f,u.visible=!0,g&&p.play()}function h(e){e.forEach(function(e){var t,r,o;if(e){if(t=i.exec(e),t&&(t[1]&&t[1]!==window.location.hostΩ||t[2]&&t[2]!==window.location.port)){if(void 0===p.crossOrigin)return void console.warn("Browser does not support cross-origin video");p.crossOrigin="anonymous"}o=document.createElement("source"),o.src=e,r=n.exec(e),(!r||p.canPlayType("video/"+r[1]))&&p.appendChild(o)}})}function c(){document.hidden||document.mozHidden||document.msHidden||document.webkitHidden?p.pause():g&&p.play()}var l,u,d,p,f,m=1,g=!1,v=this;return p=document.createElement("video"),p.loop=!0,p.addEventListener("loadedmetadata",s,!1),Array.isArray(o)&&h(o),"string"==typeof o?h([o]):"string"==typeof o.src?h([o.src]):Array.isArray(o.src)&&h(o.src),p.load(),f=new t.VideoTexture(p,t.UVMapping),f.format=t.RGBFormat,o&&o.sphere?(l=new t.SphereGeometry(994,60,60,(parseFloat(o.phiStart)||0)*Math.PI*2,(parseFloat(o.phiLength)||1)*Math.PI*2,(parseFloat(o.thetaStart)||0)*Math.PI,(parseFloat(o.thetaLength)||1)*Math.PI),l.applyMatrix((new t.Matrix4).makeScale(-1,1,1)),l.applyMatrix((new t.Matrix4).makeRotationY(-Math.PI/2))):l=new t.PlaneBufferGeometry(1,1,8),u=new t.MeshBasicMaterial({side:t.DoubleSide,map:f,visible:!1}),d=new t.Mesh(l,u),o&&o.stereo&&("vertical"===o.stereo?f.repeat.y=.5:f.repeat.x=.5,d.userData.stereo=o.stereo),p.readyState&&s(),this.play=function(){return g=!0,p.play(),this},this.pause=function(){return g=!1,p.pause(),this},this.canPlayType=e.canPlayType,Object.defineProperty(this,"width",{get:function(){return p.videoWidth}}),Object.defineProperty(this,"height",{get:function(){return p.videoHeight}}),Object.defineProperty(this,"paused",{get:function(){return!g}}),Object.defineProperty(this,"volume",{get:function(){return p.volume},set:function(e){p.volume=e}}),Object.defineProperty(this,"muted",{get:function(){return p.muted},set:function(e){p.muted=e}}),Object.defineProperty(this,"duration",{get:function(){return p.duration||0}}),Object.defineProperty(this,"currentTime",{get:function(){return p.currentTime},set:function(e){p.readyState&&e=0&&(p.currentTime=e)}}),["loadedmetadata","play","pause","playing","progress"].forEach(function(e){p.addEventListener(e,v.emit.bind(v,e))}),p.addEventListener("error",function(e){p.error.code===window.MediaError.MEDIA_ERR_DECODE&&p.childNodes.length>1&&(u.visible=!1,p.removeChild(p.firstChild),p.load()),v.emit(event,e)},!0),this.element=p,window.addEventListener("touchstart",function y(){g?p.play():p.load(),window.removeEventListener("touchstart",y,!0)},!0),document.addEventListener("visibilitychange",c),document.addEventListener("mozvisibilitychange",c),document.addEventListener("msvisibilitychange",c),document.addEventListener("webkitvisibilitychange",c),d.name="video",r.add(d),d},e.canPlayType=function(e){var t=document.createElement("video");return t.canPlayType(e)},e}()},function(e,t,r){e.exports=function(){var e=[];return e.toString=function(){for(var e=[],t=0;tt;++t)o[t-1]=arguments[t];for(n=n.slice(),t=0;i=n[t];++t)d.call(i,this,o)}else switch(arguments.length){case 1:p.call(n,this);break;case 2:p.call(n,this,arguments[1]);break;case 3:p.call(n,this,arguments[1],arguments[2]);break;default:for(r=arguments.length,o=new Array(r-1),t=1;r>t;++t)o[t-1]=arguments[t];d.call(n,this,o)}},s={on:i,once:n,off:o,emit:a},h={on:l(i),once:l(n),off:l(o),emit:l(a)},c=g({},h),e.exports=t=function(e){return null==e?f(c):g(Object(e),h)},t.methods=s},function(e,t,r){var i=i||{},n={REVISION:"71"};e.exports=n,void 0===Math.sign&&(Math.sign=function(e){return 0>e?-1:e>0?1:+e}),n.log=function(){console.log.apply(console,arguments)},n.warn=function(){console.warn.apply(console,arguments)},n.error=function(){console.error.apply(console,arguments)},n.MOUSE={LEFT:0,MIDDLE:1,RIGHT:2},n.CullFaceNone=0,n.CullFaceBack=1,n.CullFaceFront=2,n.CullFaceFrontBack=3,n.FrontFaceDirectionCW=0,n.FrontFaceDirectionCCW=1,n.BasicShadowMap=0,n.PCFShadowMap=1,n.PCFSoftShadowMap=2,n.FrontSide=0,n.BackSide=1,n.DoubleSide=2,n.NoShading=0,n.FlatShading=1,n.SmoothShading=2,n.NoColors=0,n.FaceColors=1,n.VertexColors=2,n.NoBlending=0,n.NormalBlending=1,n.AdditiveBlending=2,n.SubtractiveBlending=3,n.MultiplyBlending=4,n.CustomBlending=5,n.AddEquation=100,n.SubtractEquation=101,n.ReverseSubtractEquation=102,n.MinEquation=103,n.MaxEquation=104,n.ZeroFactor=200,n.OneFactor=201,n.SrcColorFactor=202,n.OneMinusSrcColorFactor=203,n.SrcAlphaFactor=204,n.OneMinusSrcAlphaFactor=205,n.DstAlphaFactor=206,n.OneMinusDstAlphaFactor=207,n.DstColorFactor=208,n.OneMinusDstColorFactor=209,n.SrcAlphaSaturateFactor=210,n.MultiplyOperation=0,n.MixOperation=1,n.AddOperation=2,n.UVMapping=300,n.CubeReflectionMapping=301,n.CubeRefractionMapping=302,n.EquirectangularReflectionMapping=303,n.EquirectangularRefractionMapping=304,n.SphericalReflectionMapping=305,n.RepeatWrapping=1e3,n.ClampToEdgeWrapping=1001,n.MirroredRepeatWrapping=1002,n.NearestFilter=1003,n.NearestMipMapNearestFilter=1004,n.NearestMipMapLinearFilter=1005,n.LinearFilter=1006,n.LinearMipMapNearestFilter=1007,n.LinearMipMapLinearFilter=1008,n.UnsignedByteType=1009,n.ByteType=1010,n.ShortType=1011,n.UnsignedShortType=1012,n.IntType=1013,n.UnsignedIntType=1014,n.FloatType=1015,n.HalfFloatType=1025,n.UnsignedShort4444Type=1016,n.UnsignedShort5551Type=1017,n.UnsignedShort565Type=1018,n.AlphaFormat=1019,n.RGBFormat=1020,n.RGBAFormat=1021,n.LuminanceFormat=1022,n.LuminanceAlphaFormat=1023,n.RGBEFormat=n.RGBAFormat,n.RGB_S3TC_DXT1_Format=2001,n.RGBA_S3TC_DXT1_Format=2002,n.RGBA_S3TC_DXT3_Format=2003,n.RGBA_S3TC_DXT5_Format=2004,n.RGB_PVRTC_4BPPV1_Format=2100,n.RGB_PVRTC_2BPPV1_Format=2101,n.RGBA_PVRTC_4BPPV1_Format=2102,n.RGBA_PVRTC_2BPPV1_Format=2103,n.Projector=function(){n.error("THREE.Projector has been moved to /examples/js/renderers/Projector.js."),this.projectVector=function(e,t){n.warn("THREE.Projector: .projectVector() is now vector.project()."),e.project(t)},this.unprojectVector=function(e,t){n.warn("THREE.Projector: .unprojectVector() is now vector.unproject()."),e.unproject(t)},this.pickingRay=function(e,t){n.error("THREE.Projector: .pickingRay() is now raycaster.setFromCamera().")}},n.CanvasRenderer=function(){n.error("THREE.CanvasRenderer has been moved to /examples/js/renderers/CanvasRenderer.js"),this.domElement=document.createElement("canvas"),this.clear=function(){},this.render=function(){},this.setClearColor=function(){},this.setSize=function(){}},n.Color=function(e){return 3===arguments.length?this.setRGB(arguments[0],arguments[1],arguments[2]):this.set(e)},n.Color.prototype={constructor:n.Color,r:1,g:1,b:1,set:function(e){return e instanceof n.Color?this.copy(e):"number"==typeof e?this.setHex(e):"string"==typeof e&&this.setStyle(e),this},setHex:function(e){return e=Math.floor(e),this.r=(e>>16&255)/255,this.g=(e>>8&255)/255,this.b=(255&e)/255,this},setRGB:function(e,t,r){return this.r=e,this.g=t,this.b=r,this},setHSL:function(e,t,r){if(0===t)this.r=this.g=this.b=r;else{var i=function(e,t,r){return 0>r&&(r+=1),r>1&&(r-=1),1/6>r?e+6*(t-e)*r:.5>r?t:2/3>r?e+6*(t-e)*(2/3-r):e},n=.5>=r?r*(1+t):r+t-r*t,o=2*r-n;this.r=i(o,n,e+1/3),this.g=i(o,n,e),this.b=i(o,n,e-1/3)}return this},setStyle:function(e){if(/^rgb\((\d+), ?(\d+), ?(\d+)\)$/i.test(e)){var t=/^rgb\((\d+), ?(\d+), ?(\d+)\)$/i.exec(e);return this.r=Math.min(255,parseInt(t[1],10))/255,this.g=Math.min(255,parseInt(t[2],10))/255,this.b=Math.min(255,parseInt(t[3],10))/255,this}if(/^rgb\((\d+)\%, ?(\d+)\%, ?(\d+)\%\)$/i.test(e)){var t=/^rgb\((\d+)\%, ?(\d+)\%, ?(\d+)\%\)$/i.exec(e);return this.r=Math.min(100,parseInt(t[1],10))/100,this.g=Math.min(100,parseInt(t[2],10))/100,this.b=Math.min(100,parseInt(t[3],10))/100,this}if(/^\#([0-9a-f]{6})$/i.test(e)){var t=/^\#([0-9a-f]{6})$/i.exec(e);return this.setHex(parseInt(t[1],16)),this}if(/^\#([0-9a-f])([0-9a-f])([0-9a-f])$/i.test(e)){var t=/^\#([0-9a-f])([0-9a-f])([0-9a-f])$/i.exec(e);return this.setHex(parseInt(t[1]+t[1]+t[2]+t[2]+t[3]+t[3],16)),this}return/^(\w+)$/i.test(e)?(this.setHex(n.ColorKeywords[e]),this):void 0},copy:function(e){return this.r=e.r,this.g=e.g,this.b=e.b,this},copyGammaToLinear:function(e,t){return void 0===t&&(t=2),this.r=Math.pow(e.r,t),this.g=Math.pow(e.g,t),this.b=Math.pow(e.b,t),this},copyLinearToGamma:function(e,t){void 0===t&&(t=2);var r=t>0?1/t:1;return this.r=Math.pow(e.r,r),this.g=Math.pow(e.g,r),this.b=Math.pow(e.b,r),this},convertGammaToLinear:function(){var e=this.r,t=this.g,r=this.b;return this.r=e*e,this.g=t*t,this.b=r*r,this},convertLinearToGamma:function(){return this.r=Math.sqrt(this.r),this.g=Math.sqrt(this.g),this.b=Math.sqrt(this.b),this},getHex:function(){return 255*this.r<<16^255*this.g<<8^255*this.b<<0},getHexString:function(){return("000000"+this.getHex().toString(16)).slice(-6)},getHSL:function(e){var t,r,i=e||{h:0,s:0,l:0},n=this.r,o=this.g,a=this.b,s=Math.max(n,o,a),h=Math.min(n,o,a),c=(h+s)/2;if(h===s)t=0,r=0;else{var l=s-h;switch(r=.5>=c?l/(s+h):l/(2-s-h),s){case n:t=(o-a)/l+(a>o?6:0);break;case o:t=(a-n)/l+2;break;case a:t=(n-o)/l+4}t/=6}return i.h=t,i.s=r,i.l=c,i},getStyle:function(){return"rgb("+(255*this.r|0)+","+(255*this.g|0)+","+(255*this.b|0)+")"},offsetHSL:function(e,t,r){var i=this.getHSL();return i.h+=e,i.s+=t,i.l+=r,this.setHSL(i.h,i.s,i.l),this},add:function(e){return this.r+=e.r,this.g+=e.g,this.b+=e.b,this},addColors:function(e,t){return this.r=e.r+t.r,this.g=e.g+t.g,this.b=e.b+t.b,this},addScalar:function(e){return this.r+=e,this.g+=e,this.b+=e,this},multiply:function(e){return this.r*=e.r,this.g*=e.g,this.b*=e.b,this},multiplyScalar:function(e){return this.r*=e,this.g*=e,this.b*=e,this},lerp:function(e,t){return this.r+=(e.r-this.r)*t,this.g+=(e.g-this.g)*t,this.b+=(e.b-this.b)*t,this},equals:function(e){return e.r===this.r&&e.g===this.g&&e.b===this.b},fromArray:function(e){return this.r=e[0],this.g=e[1],this.b=e[2],this},toArray:function(e,t){return void 0===e&&(e=[]),void 0===t&&(t=0),e[t]=this.r,e[t+1]=this.g,e[t+2]=this.b,e},clone:function(){return(new n.Color).setRGB(this.r,this.g,this.b)}},n.ColorKeywords={aliceblue:15792383,antiquewhite:16444375,aqua:65535,aquamarine:8388564,azure:15794175,beige:16119260,bisque:16770244,black:0,blanchedalmond:16772045,blue:255,blueviolet:9055202,brown:10824234,burlywood:14596231,cadetblue:6266528,chartreuse:8388352,chocolate:13789470,coral:16744272,cornflowerblue:6591981,cornsilk:16775388,crimson:14423100,cyan:65535,darkblue:139,darkcyan:35723,darkgoldenrod:12092939,darkgray:11119017,darkgreen:25600,darkgrey:11119017,darkkhaki:12433259,darkmagenta:9109643,darkolivegreen:5597999,darkorange:16747520,darkorchid:10040012,darkred:9109504,darksalmon:15308410,darkseagreen:9419919,darkslateblue:4734347,darkslategray:3100495,darkslategrey:3100495,darkturquoise:52945,darkviolet:9699539,deeppink:16716947,deepskyblue:49151,dimgray:6908265,dimgrey:6908265,dodgerblue:2003199,firebrick:11674146,floralwhite:16775920,forestgreen:2263842,fuchsia:16711935,gainsboro:14474460,ghostwhite:16316671,gold:16766720,goldenrod:14329120,gray:8421504,green:32768,greenyellow:11403055,grey:8421504,honeydew:15794160,hotpink:16738740,indianred:13458524,indigo:4915330,ivory:16777200,khaki:15787660,lavender:15132410,lavenderblush:16773365,lawngreen:8190976,lemonchiffon:16775885,lightblue:11393254,lightcoral:15761536,lightcyan:14745599,lightgoldenrodyellow:16448210,lightgray:13882323,lightgreen:9498256,lightgrey:13882323,lightpink:16758465,lightsalmon:16752762,lightseagreen:2142890,lightskyblue:8900346,lightslategray:7833753,lightslategrey:7833753,lightsteelblue:11584734,lightyellow:16777184,lime:65280,limegreen:3329330,linen:16445670,magenta:16711935,maroon:8388608,mediumaquamarine:6737322,mediumblue:205,mediumorchid:12211667,mediumpurple:9662683,mediumseagreen:3978097,mediumslateblue:8087790,mediumspringgreen:64154,mediumturquoise:4772300,mediumvioletred:13047173,midnightblue:1644912,mintcream:16121850,mistyrose:16770273,moccasin:16770229,navajowhite:16768685,navy:128,oldlace:16643558,olive:8421376,olivedrab:7048739,orange:16753920,orangered:16729344,orchid:14315734,palegoldenrod:15657130,palegreen:10025880,paleturquoise:11529966,palevioletred:14381203,papayawhip:16773077,peachpuff:16767673,peru:13468991,pink:16761035,plum:14524637,powderblue:11591910,purple:8388736,red:16711680,rosybrown:12357519,royalblue:4286945,saddlebrown:9127187,salmon:16416882,sandybrown:16032864,seagreen:3050327,seashell:16774638,sienna:10506797,silver:12632256,skyblue:8900331,slateblue:6970061,slategray:7372944,slategrey:7372944,snow:16775930,springgreen:65407,steelblue:4620980,tan:13808780,teal:32896,thistle:14204888,tomato:16737095,turquoise:4251856,violet:15631086,wheat:16113331,white:16777215,whitesmoke:16119285,yellow:16776960,yellowgreen:10145074},n.Quaternion=function(e,t,r,i){this._x=e||0,this._y=t||0,this._z=r||0,this._w=void 0!==i?i:1},n.Quaternion.prototype={constructor:n.Quaternion,_x:0,_y:0,_z:0,_w:0,get x(){return this._x},set x(e){this._x=e,this.onChangeCallback()},get y(){return this._y},set y(e){this._y=e,this.onChangeCallback()},get z(){return this._z},set z(e){this._z=e,this.onChangeCallback()},get w(){return this._w},set w(e){this._w=e,this.onChangeCallback()},set:function(e,t,r,i){return this._x=e,this._y=t,this._z=r,this._w=i,this.onChangeCallback(),this},copy:function(e){return this._x=e.x,this._y=e.y,this._z=e.z,this._w=e.w,this.onChangeCallback(),this},setFromEuler:function(e,t){if(e instanceof n.Euler==!1)throw new Error("THREE.Quaternion: .setFromEuler() now expects a Euler rotation rather than a Vector3 and order.");var r=Math.cos(e._x/2),i=Math.cos(e._y/2),o=Math.cos(e._z/2),a=Math.sin(e._x/2),s=Math.sin(e._y/2),h=Math.sin(e._z/2);return"XYZ"===e.order?(this._x=a*i*o+r*s*h,this._y=r*s*o-a*i*h,this._z=r*i*h+a*s*o,this._w=r*i*o-a*s*h):"YXZ"===e.order?(this._x=a*i*o+r*s*h,this._y=r*s*o-a*i*h,this._z=r*i*h-a*s*o,this._w=r*i*o+a*s*h):"ZXY"===e.order?(this._x=a*i*o-r*s*h,this._y=r*s*o+a*i*h,this._z=r*i*h+a*s*o,this._w=r*i*o-a*s*h):"ZYX"===e.order?(this._x=a*i*o-r*s*h,this._y=r*s*o+a*i*h,this._z=r*i*h-a*s*o,this._w=r*i*o+a*s*h):"YZX"===e.order?(this._x=a*i*o+r*s*h,this._y=r*s*o+a*i*h,this._z=r*i*h-a*s*o,this._w=r*i*o-a*s*h):"XZY"===e.order&&(this._x=a*i*o-r*s*h,this._y=r*s*o-a*i*h,this._z=r*i*h+a*s*o,this._w=r*i*o+a*s*h),t!==!1&&this.onChangeCallback(),this},setFromAxisAngle:function(e,t){var r=t/2,i=Math.sin(r);return this._x=e.x*i,this._y=e.y*i,this._z=e.z*i,this._w=Math.cos(r),this.onChangeCallback(),this},setFromRotationMatrix:function(e){var t,r=e.elements,i=r[0],n=r[4],o=r[8],a=r[1],s=r[5],h=r[9],c=r[2],l=r[6],u=r[10],d=i+s+u;return d>0?(t=.5/Math.sqrt(d+1),this._w=.25/t,this._x=(l-h)*t,this._y=(o-c)*t,this._z=(a-n)*t):i>s&&i>u?(t=2*Math.sqrt(1+i-s-u),this._w=(l-h)/t,this._x=.25*t,this._y=(n+a)/t,this._z=(o+c)/t):s>u?(t=2*Math.sqrt(1+s-i-u),this._w=(o-c)/t,this._x=(n+a)/t,this._y=.25*t,this._z=(h+l)/t):(t=2*Math.sqrt(1+u-i-s),this._w=(a-n)/t,this._x=(o+c)/t,this._y=(h+l)/t,this._z=.25*t),this.onChangeCallback(),this},setFromUnitVectors:function(){var e,t,r=1e-6;return function(i,o){return void 0===e&&(e=new n.Vector3),t=i.dot(o)+1,r>t?(t=0,Math.abs(i.x)>Math.abs(i.z)?e.set(-i.y,i.x,0):e.set(0,-i.z,i.y)):e.crossVectors(i,o),this._x=e.x,this._y=e.y,this._z=e.z,this._w=t,this.normalize(),this}}(),inverse:function(){return this.conjugate().normalize(),this},conjugate:function(){return this._x*=-1,this._y*=-1,this._z*=-1,this.onChangeCallback(),this},dot:function(e){return this._x*e._x+this._y*e._y+this._z*e._z+this._w*e._w},lengthSq:function(){return this._x*this._x+this._y*this._y+this._z*this._z+this._w*this._w},length:function(){return Math.sqrt(this._x*this._x+this._y*this._y+this._z*this._z+this._w*this._w)},normalize:function(){var e=this.length();return 0===e?(this._x=0,this._y=0,this._z=0,this._w=1):(e=1/e,this._x=this._x*e,this._y=this._y*e,this._z=this._z*e,this._w=this._w*e),this.onChangeCallback(),this},multiply:function(e,t){return void 0!==t?(n.warn("THREE.Quaternion: .multiply() now only accepts one argument. Use .multiplyQuaternions( a, b ) instead."),this.multiplyQuaternions(e,t)):this.multiplyQuaternions(this,e)},multiplyQuaternions:function(e,t){var r=e._x,i=e._y,n=e._z,o=e._w,a=t._x,s=t._y,h=t._z,c=t._w;return this._x=r*c+o*a+i*h-n*s,this._y=i*c+o*s+n*a-r*h,this._z=n*c+o*h+r*s-i*a,this._w=o*c-r*a-i*s-n*h,this.onChangeCallback(),this},multiplyVector3:function(e){return n.warn("THREE.Quaternion: .multiplyVector3() has been removed. Use is now vector.applyQuaternion( quaternion ) instead."),e.applyQuaternion(this)},slerp:function(e,t){if(0===t)return this;if(1===t)return this.copy(e);var r=this._x,i=this._y,n=this._z,o=this._w,a=o*e._w+r*e._x+i*e._y+n*e._z;if(0>a?(this._w=-e._w,this._x=-e._x,this._y=-e._y,this._z=-e._z,a=-a):this.copy(e),a>=1)return this._w=o,this._x=r,this._y=i,this._z=n,this;var s=Math.acos(a),h=Math.sqrt(1-a*a);if(Math.abs(h)<.001)return this._w=.5*(o+this._w),this._x=.5*(r+this._x),this._y=.5*(i+this._y),this._z=.5*(n+this._z),this;var c=Math.sin((1-t)*s)/h,l=Math.sin(t*s)/h;return this._w=o*c+this._w*l,this._x=r*c+this._x*l,this._y=i*c+this._y*l,this._z=n*c+this._z*l,this.onChangeCallback(),this},equals:function(e){return e._x===this._x&&e._y===this._y&&e._z===this._z&&e._w===this._w},fromArray:function(e,t){return void 0===t&&(t=0),this._x=e[t],this._y=e[t+1],this._z=e[t+2],this._w=e[t+3],this.onChangeCallback(),this},toArray:function(e,t){return void 0===e&&(e=[]),void 0===t&&(t=0), -e[t]=this._x,e[t+1]=this._y,e[t+2]=this._z,e[t+3]=this._w,e},onChange:function(e){return this.onChangeCallback=e,this},onChangeCallback:function(){},clone:function(){return new n.Quaternion(this._x,this._y,this._z,this._w)}},n.Quaternion.slerp=function(e,t,r,i){return r.copy(e).slerp(t,i)},n.Vector2=function(e,t){this.x=e||0,this.y=t||0},n.Vector2.prototype={constructor:n.Vector2,set:function(e,t){return this.x=e,this.y=t,this},setX:function(e){return this.x=e,this},setY:function(e){return this.y=e,this},setComponent:function(e,t){switch(e){case 0:this.x=t;break;case 1:this.y=t;break;default:throw new Error("index is out of range: "+e)}},getComponent:function(e){switch(e){case 0:return this.x;case 1:return this.y;default:throw new Error("index is out of range: "+e)}},copy:function(e){return this.x=e.x,this.y=e.y,this},add:function(e,t){return void 0!==t?(n.warn("THREE.Vector2: .add() now only accepts one argument. Use .addVectors( a, b ) instead."),this.addVectors(e,t)):(this.x+=e.x,this.y+=e.y,this)},addScalar:function(e){return this.x+=e,this.y+=e,this},addVectors:function(e,t){return this.x=e.x+t.x,this.y=e.y+t.y,this},sub:function(e,t){return void 0!==t?(n.warn("THREE.Vector2: .sub() now only accepts one argument. Use .subVectors( a, b ) instead."),this.subVectors(e,t)):(this.x-=e.x,this.y-=e.y,this)},subScalar:function(e){return this.x-=e,this.y-=e,this},subVectors:function(e,t){return this.x=e.x-t.x,this.y=e.y-t.y,this},multiply:function(e){return this.x*=e.x,this.y*=e.y,this},multiplyScalar:function(e){return this.x*=e,this.y*=e,this},divide:function(e){return this.x/=e.x,this.y/=e.y,this},divideScalar:function(e){if(0!==e){var t=1/e;this.x*=t,this.y*=t}else this.x=0,this.y=0;return this},min:function(e){return this.x>e.x&&(this.x=e.x),this.y>e.y&&(this.y=e.y),this},max:function(e){return this.xt.x&&(this.x=t.x),this.yt.y&&(this.y=t.y),this},clampScalar:function(){var e,t;return function(r,i){return void 0===e&&(e=new n.Vector2,t=new n.Vector2),e.set(r,r),t.set(i,i),this.clamp(e,t)}}(),floor:function(){return this.x=Math.floor(this.x),this.y=Math.floor(this.y),this},ceil:function(){return this.x=Math.ceil(this.x),this.y=Math.ceil(this.y),this},round:function(){return this.x=Math.round(this.x),this.y=Math.round(this.y),this},roundToZero:function(){return this.x=this.x<0?Math.ceil(this.x):Math.floor(this.x),this.y=this.y<0?Math.ceil(this.y):Math.floor(this.y),this},negate:function(){return this.x=-this.x,this.y=-this.y,this},dot:function(e){return this.x*e.x+this.y*e.y},lengthSq:function(){return this.x*this.x+this.y*this.y},length:function(){return Math.sqrt(this.x*this.x+this.y*this.y)},normalize:function(){return this.divideScalar(this.length())},distanceTo:function(e){return Math.sqrt(this.distanceToSquared(e))},distanceToSquared:function(e){var t=this.x-e.x,r=this.y-e.y;return t*t+r*r},setLength:function(e){var t=this.length();return 0!==t&&e!==t&&this.multiplyScalar(e/t),this},lerp:function(e,t){return this.x+=(e.x-this.x)*t,this.y+=(e.y-this.y)*t,this},lerpVectors:function(e,t,r){return this.subVectors(t,e).multiplyScalar(r).add(e),this},equals:function(e){return e.x===this.x&&e.y===this.y},fromArray:function(e,t){return void 0===t&&(t=0),this.x=e[t],this.y=e[t+1],this},toArray:function(e,t){return void 0===e&&(e=[]),void 0===t&&(t=0),e[t]=this.x,e[t+1]=this.y,e},fromAttribute:function(e,t,r){return void 0===r&&(r=0),t=t*e.itemSize+r,this.x=e.array[t],this.y=e.array[t+1],this},clone:function(){return new n.Vector2(this.x,this.y)}},n.Vector3=function(e,t,r){this.x=e||0,this.y=t||0,this.z=r||0},n.Vector3.prototype={constructor:n.Vector3,set:function(e,t,r){return this.x=e,this.y=t,this.z=r,this},setX:function(e){return this.x=e,this},setY:function(e){return this.y=e,this},setZ:function(e){return this.z=e,this},setComponent:function(e,t){switch(e){case 0:this.x=t;break;case 1:this.y=t;break;case 2:this.z=t;break;default:throw new Error("index is out of range: "+e)}},getComponent:function(e){switch(e){case 0:return this.x;case 1:return this.y;case 2:return this.z;default:throw new Error("index is out of range: "+e)}},copy:function(e){return this.x=e.x,this.y=e.y,this.z=e.z,this},add:function(e,t){return void 0!==t?(n.warn("THREE.Vector3: .add() now only accepts one argument. Use .addVectors( a, b ) instead."),this.addVectors(e,t)):(this.x+=e.x,this.y+=e.y,this.z+=e.z,this)},addScalar:function(e){return this.x+=e,this.y+=e,this.z+=e,this},addVectors:function(e,t){return this.x=e.x+t.x,this.y=e.y+t.y,this.z=e.z+t.z,this},sub:function(e,t){return void 0!==t?(n.warn("THREE.Vector3: .sub() now only accepts one argument. Use .subVectors( a, b ) instead."),this.subVectors(e,t)):(this.x-=e.x,this.y-=e.y,this.z-=e.z,this)},subScalar:function(e){return this.x-=e,this.y-=e,this.z-=e,this},subVectors:function(e,t){return this.x=e.x-t.x,this.y=e.y-t.y,this.z=e.z-t.z,this},multiply:function(e,t){return void 0!==t?(n.warn("THREE.Vector3: .multiply() now only accepts one argument. Use .multiplyVectors( a, b ) instead."),this.multiplyVectors(e,t)):(this.x*=e.x,this.y*=e.y,this.z*=e.z,this)},multiplyScalar:function(e){return this.x*=e,this.y*=e,this.z*=e,this},multiplyVectors:function(e,t){return this.x=e.x*t.x,this.y=e.y*t.y,this.z=e.z*t.z,this},applyEuler:function(){var e;return function(t){return t instanceof n.Euler==!1&&n.error("THREE.Vector3: .applyEuler() now expects a Euler rotation rather than a Vector3 and order."),void 0===e&&(e=new n.Quaternion),this.applyQuaternion(e.setFromEuler(t)),this}}(),applyAxisAngle:function(){var e;return function(t,r){return void 0===e&&(e=new n.Quaternion),this.applyQuaternion(e.setFromAxisAngle(t,r)),this}}(),applyMatrix3:function(e){var t=this.x,r=this.y,i=this.z,n=e.elements;return this.x=n[0]*t+n[3]*r+n[6]*i,this.y=n[1]*t+n[4]*r+n[7]*i,this.z=n[2]*t+n[5]*r+n[8]*i,this},applyMatrix4:function(e){var t=this.x,r=this.y,i=this.z,n=e.elements;return this.x=n[0]*t+n[4]*r+n[8]*i+n[12],this.y=n[1]*t+n[5]*r+n[9]*i+n[13],this.z=n[2]*t+n[6]*r+n[10]*i+n[14],this},applyProjection:function(e){var t=this.x,r=this.y,i=this.z,n=e.elements,o=1/(n[3]*t+n[7]*r+n[11]*i+n[15]);return this.x=(n[0]*t+n[4]*r+n[8]*i+n[12])*o,this.y=(n[1]*t+n[5]*r+n[9]*i+n[13])*o,this.z=(n[2]*t+n[6]*r+n[10]*i+n[14])*o,this},applyQuaternion:function(e){var t=this.x,r=this.y,i=this.z,n=e.x,o=e.y,a=e.z,s=e.w,h=s*t+o*i-a*r,c=s*r+a*t-n*i,l=s*i+n*r-o*t,u=-n*t-o*r-a*i;return this.x=h*s+u*-n+c*-a-l*-o,this.y=c*s+u*-o+l*-n-h*-a,this.z=l*s+u*-a+h*-o-c*-n,this},project:function(){var e;return function(t){return void 0===e&&(e=new n.Matrix4),e.multiplyMatrices(t.projectionMatrix,e.getInverse(t.matrixWorld)),this.applyProjection(e)}}(),unproject:function(){var e;return function(t){return void 0===e&&(e=new n.Matrix4),e.multiplyMatrices(t.matrixWorld,e.getInverse(t.projectionMatrix)),this.applyProjection(e)}}(),transformDirection:function(e){var t=this.x,r=this.y,i=this.z,n=e.elements;return this.x=n[0]*t+n[4]*r+n[8]*i,this.y=n[1]*t+n[5]*r+n[9]*i,this.z=n[2]*t+n[6]*r+n[10]*i,this.normalize(),this},divide:function(e){return this.x/=e.x,this.y/=e.y,this.z/=e.z,this},divideScalar:function(e){if(0!==e){var t=1/e;this.x*=t,this.y*=t,this.z*=t}else this.x=0,this.y=0,this.z=0;return this},min:function(e){return this.x>e.x&&(this.x=e.x),this.y>e.y&&(this.y=e.y),this.z>e.z&&(this.z=e.z),this},max:function(e){return this.xt.x&&(this.x=t.x),this.yt.y&&(this.y=t.y),this.zt.z&&(this.z=t.z),this},clampScalar:function(){var e,t;return function(r,i){return void 0===e&&(e=new n.Vector3,t=new n.Vector3),e.set(r,r,r),t.set(i,i,i),this.clamp(e,t)}}(),floor:function(){return this.x=Math.floor(this.x),this.y=Math.floor(this.y),this.z=Math.floor(this.z),this},ceil:function(){return this.x=Math.ceil(this.x),this.y=Math.ceil(this.y),this.z=Math.ceil(this.z),this},round:function(){return this.x=Math.round(this.x),this.y=Math.round(this.y),this.z=Math.round(this.z),this},roundToZero:function(){return this.x=this.x<0?Math.ceil(this.x):Math.floor(this.x),this.y=this.y<0?Math.ceil(this.y):Math.floor(this.y),this.z=this.z<0?Math.ceil(this.z):Math.floor(this.z),this},negate:function(){return this.x=-this.x,this.y=-this.y,this.z=-this.z,this},dot:function(e){return this.x*e.x+this.y*e.y+this.z*e.z},lengthSq:function(){return this.x*this.x+this.y*this.y+this.z*this.z},length:function(){return Math.sqrt(this.x*this.x+this.y*this.y+this.z*this.z)},lengthManhattan:function(){return Math.abs(this.x)+Math.abs(this.y)+Math.abs(this.z)},normalize:function(){return this.divideScalar(this.length())},setLength:function(e){var t=this.length();return 0!==t&&e!==t&&this.multiplyScalar(e/t),this},lerp:function(e,t){return this.x+=(e.x-this.x)*t,this.y+=(e.y-this.y)*t,this.z+=(e.z-this.z)*t,this},lerpVectors:function(e,t,r){return this.subVectors(t,e).multiplyScalar(r).add(e),this},cross:function(e,t){if(void 0!==t)return n.warn("THREE.Vector3: .cross() now only accepts one argument. Use .crossVectors( a, b ) instead."),this.crossVectors(e,t);var r=this.x,i=this.y,o=this.z;return this.x=i*e.z-o*e.y,this.y=o*e.x-r*e.z,this.z=r*e.y-i*e.x,this},crossVectors:function(e,t){var r=e.x,i=e.y,n=e.z,o=t.x,a=t.y,s=t.z;return this.x=i*s-n*a,this.y=n*o-r*s,this.z=r*a-i*o,this},projectOnVector:function(){var e,t;return function(r){return void 0===e&&(e=new n.Vector3),e.copy(r).normalize(),t=this.dot(e),this.copy(e).multiplyScalar(t)}}(),projectOnPlane:function(){var e;return function(t){return void 0===e&&(e=new n.Vector3),e.copy(this).projectOnVector(t),this.sub(e)}}(),reflect:function(){var e;return function(t){return void 0===e&&(e=new n.Vector3),this.sub(e.copy(t).multiplyScalar(2*this.dot(t)))}}(),angleTo:function(e){var t=this.dot(e)/(this.length()*e.length());return Math.acos(n.Math.clamp(t,-1,1))},distanceTo:function(e){return Math.sqrt(this.distanceToSquared(e))},distanceToSquared:function(e){var t=this.x-e.x,r=this.y-e.y,i=this.z-e.z;return t*t+r*r+i*i},setEulerFromRotationMatrix:function(e,t){n.error("THREE.Vector3: .setEulerFromRotationMatrix() has been removed. Use Euler.setFromRotationMatrix() instead.")},setEulerFromQuaternion:function(e,t){n.error("THREE.Vector3: .setEulerFromQuaternion() has been removed. Use Euler.setFromQuaternion() instead.")},getPositionFromMatrix:function(e){return n.warn("THREE.Vector3: .getPositionFromMatrix() has been renamed to .setFromMatrixPosition()."),this.setFromMatrixPosition(e)},getScaleFromMatrix:function(e){return n.warn("THREE.Vector3: .getScaleFromMatrix() has been renamed to .setFromMatrixScale()."),this.setFromMatrixScale(e)},getColumnFromMatrix:function(e,t){return n.warn("THREE.Vector3: .getColumnFromMatrix() has been renamed to .setFromMatrixColumn()."),this.setFromMatrixColumn(e,t)},setFromMatrixPosition:function(e){return this.x=e.elements[12],this.y=e.elements[13],this.z=e.elements[14],this},setFromMatrixScale:function(e){var t=this.set(e.elements[0],e.elements[1],e.elements[2]).length(),r=this.set(e.elements[4],e.elements[5],e.elements[6]).length(),i=this.set(e.elements[8],e.elements[9],e.elements[10]).length();return this.x=t,this.y=r,this.z=i,this},setFromMatrixColumn:function(e,t){var r=4*e,i=t.elements;return this.x=i[r],this.y=i[r+1],this.z=i[r+2],this},equals:function(e){return e.x===this.x&&e.y===this.y&&e.z===this.z},fromArray:function(e,t){return void 0===t&&(t=0),this.x=e[t],this.y=e[t+1],this.z=e[t+2],this},toArray:function(e,t){return void 0===e&&(e=[]),void 0===t&&(t=0),e[t]=this.x,e[t+1]=this.y,e[t+2]=this.z,e},fromAttribute:function(e,t,r){return void 0===r&&(r=0),t=t*e.itemSize+r,this.x=e.array[t],this.y=e.array[t+1],this.z=e.array[t+2],this},clone:function(){return new n.Vector3(this.x,this.y,this.z)}},n.Vector4=function(e,t,r,i){this.x=e||0,this.y=t||0,this.z=r||0,this.w=void 0!==i?i:1},n.Vector4.prototype={constructor:n.Vector4,set:function(e,t,r,i){return this.x=e,this.y=t,this.z=r,this.w=i,this},setX:function(e){return this.x=e,this},setY:function(e){return this.y=e,this},setZ:function(e){return this.z=e,this},setW:function(e){return this.w=e,this},setComponent:function(e,t){switch(e){case 0:this.x=t;break;case 1:this.y=t;break;case 2:this.z=t;break;case 3:this.w=t;break;default:throw new Error("index is out of range: "+e)}},getComponent:function(e){switch(e){case 0:return this.x;case 1:return this.y;case 2:return this.z;case 3:return this.w;default:throw new Error("index is out of range: "+e)}},copy:function(e){return this.x=e.x,this.y=e.y,this.z=e.z,this.w=void 0!==e.w?e.w:1,this},add:function(e,t){return void 0!==t?(n.warn("THREE.Vector4: .add() now only accepts one argument. Use .addVectors( a, b ) instead."),this.addVectors(e,t)):(this.x+=e.x,this.y+=e.y,this.z+=e.z,this.w+=e.w,this)},addScalar:function(e){return this.x+=e,this.y+=e,this.z+=e,this.w+=e,this},addVectors:function(e,t){return this.x=e.x+t.x,this.y=e.y+t.y,this.z=e.z+t.z,this.w=e.w+t.w,this},sub:function(e,t){return void 0!==t?(n.warn("THREE.Vector4: .sub() now only accepts one argument. Use .subVectors( a, b ) instead."),this.subVectors(e,t)):(this.x-=e.x,this.y-=e.y,this.z-=e.z,this.w-=e.w,this)},subScalar:function(e){return this.x-=e,this.y-=e,this.z-=e,this.w-=e,this},subVectors:function(e,t){return this.x=e.x-t.x,this.y=e.y-t.y,this.z=e.z-t.z,this.w=e.w-t.w,this},multiplyScalar:function(e){return this.x*=e,this.y*=e,this.z*=e,this.w*=e,this},applyMatrix4:function(e){var t=this.x,r=this.y,i=this.z,n=this.w,o=e.elements;return this.x=o[0]*t+o[4]*r+o[8]*i+o[12]*n,this.y=o[1]*t+o[5]*r+o[9]*i+o[13]*n,this.z=o[2]*t+o[6]*r+o[10]*i+o[14]*n,this.w=o[3]*t+o[7]*r+o[11]*i+o[15]*n,this},divideScalar:function(e){if(0!==e){var t=1/e;this.x*=t,this.y*=t,this.z*=t,this.w*=t}else this.x=0,this.y=0,this.z=0,this.w=1;return this},setAxisAngleFromQuaternion:function(e){this.w=2*Math.acos(e.w);var t=Math.sqrt(1-e.w*e.w);return 1e-4>t?(this.x=1,this.y=0,this.z=0):(this.x=e.x/t,this.y=e.y/t,this.z=e.z/t),this},setAxisAngleFromRotationMatrix:function(e){var t,r,i,n,o=.01,a=.1,s=e.elements,h=s[0],c=s[4],l=s[8],u=s[1],d=s[5],p=s[9],f=s[2],m=s[6],g=s[10];if(Math.abs(c-u)y&&v>x?o>v?(r=0,i=.707106781,n=.707106781):(r=Math.sqrt(v),i=b/r,n=w/r):y>x?o>y?(r=.707106781,i=0,n=.707106781):(i=Math.sqrt(y),r=b/i,n=A/i):o>x?(r=.707106781,i=.707106781,n=0):(n=Math.sqrt(x),r=w/n,i=A/n),this.set(r,i,n,t),this}var M=Math.sqrt((m-p)*(m-p)+(l-f)*(l-f)+(u-c)*(u-c));return Math.abs(M)<.001&&(M=1),this.x=(m-p)/M,this.y=(l-f)/M,this.z=(u-c)/M,this.w=Math.acos((h+d+g-1)/2),this},min:function(e){return this.x>e.x&&(this.x=e.x),this.y>e.y&&(this.y=e.y),this.z>e.z&&(this.z=e.z),this.w>e.w&&(this.w=e.w),this},max:function(e){return this.xt.x&&(this.x=t.x),this.yt.y&&(this.y=t.y),this.zt.z&&(this.z=t.z),this.wt.w&&(this.w=t.w),this},clampScalar:function(){var e,t;return function(r,i){return void 0===e&&(e=new n.Vector4,t=new n.Vector4),e.set(r,r,r,r),t.set(i,i,i,i),this.clamp(e,t)}}(),floor:function(){return this.x=Math.floor(this.x),this.y=Math.floor(this.y),this.z=Math.floor(this.z),this.w=Math.floor(this.w),this},ceil:function(){return this.x=Math.ceil(this.x),this.y=Math.ceil(this.y),this.z=Math.ceil(this.z),this.w=Math.ceil(this.w),this},round:function(){return this.x=Math.round(this.x),this.y=Math.round(this.y),this.z=Math.round(this.z),this.w=Math.round(this.w),this},roundToZero:function(){return this.x=this.x<0?Math.ceil(this.x):Math.floor(this.x),this.y=this.y<0?Math.ceil(this.y):Math.floor(this.y),this.z=this.z<0?Math.ceil(this.z):Math.floor(this.z),this.w=this.w<0?Math.ceil(this.w):Math.floor(this.w),this},negate:function(){return this.x=-this.x,this.y=-this.y,this.z=-this.z,this.w=-this.w,this},dot:function(e){return this.x*e.x+this.y*e.y+this.z*e.z+this.w*e.w},lengthSq:function(){return this.x*this.x+this.y*this.y+this.z*this.z+this.w*this.w},length:function(){return Math.sqrt(this.x*this.x+this.y*this.y+this.z*this.z+this.w*this.w)},lengthManhattan:function(){return Math.abs(this.x)+Math.abs(this.y)+Math.abs(this.z)+Math.abs(this.w)},normalize:function(){return this.divideScalar(this.length())},setLength:function(e){var t=this.length();return 0!==t&&e!==t&&this.multiplyScalar(e/t),this},lerp:function(e,t){return this.x+=(e.x-this.x)*t,this.y+=(e.y-this.y)*t,this.z+=(e.z-this.z)*t,this.w+=(e.w-this.w)*t,this},lerpVectors:function(e,t,r){return this.subVectors(t,e).multiplyScalar(r).add(e),this},equals:function(e){return e.x===this.x&&e.y===this.y&&e.z===this.z&&e.w===this.w},fromArray:function(e,t){return void 0===t&&(t=0),this.x=e[t],this.y=e[t+1],this.z=e[t+2],this.w=e[t+3],this},toArray:function(e,t){return void 0===e&&(e=[]),void 0===t&&(t=0),e[t]=this.x,e[t+1]=this.y,e[t+2]=this.z,e[t+3]=this.w,e},fromAttribute:function(e,t,r){return void 0===r&&(r=0),t=t*e.itemSize+r,this.x=e.array[t],this.y=e.array[t+1],this.z=e.array[t+2],this.w=e.array[t+3],this},clone:function(){return new n.Vector4(this.x,this.y,this.z,this.w)}},n.Euler=function(e,t,r,i){this._x=e||0,this._y=t||0,this._z=r||0,this._order=i||n.Euler.DefaultOrder},n.Euler.RotationOrders=["XYZ","YZX","ZXY","XZY","YXZ","ZYX"],n.Euler.DefaultOrder="XYZ",n.Euler.prototype={constructor:n.Euler,_x:0,_y:0,_z:0,_order:n.Euler.DefaultOrder,get x(){return this._x},set x(e){this._x=e,this.onChangeCallback()},get y(){return this._y},set y(e){this._y=e,this.onChangeCallback()},get z(){return this._z},set z(e){this._z=e,this.onChangeCallback()},get order(){return this._order},set order(e){this._order=e,this.onChangeCallback()},set:function(e,t,r,i){return this._x=e,this._y=t,this._z=r,this._order=i||this._order,this.onChangeCallback(),this},copy:function(e){return this._x=e._x,this._y=e._y,this._z=e._z,this._order=e._order,this.onChangeCallback(),this},setFromRotationMatrix:function(e,t,r){var i=n.Math.clamp,o=e.elements,a=o[0],s=o[4],h=o[8],c=o[1],l=o[5],u=o[9],d=o[2],p=o[6],f=o[10];return t=t||this._order,"XYZ"===t?(this._y=Math.asin(i(h,-1,1)),Math.abs(h)<.99999?(this._x=Math.atan2(-u,f),this._z=Math.atan2(-s,a)):(this._x=Math.atan2(p,l),this._z=0)):"YXZ"===t?(this._x=Math.asin(-i(u,-1,1)),Math.abs(u)<.99999?(this._y=Math.atan2(h,f),this._z=Math.atan2(c,l)):(this._y=Math.atan2(-d,a),this._z=0)):"ZXY"===t?(this._x=Math.asin(i(p,-1,1)),Math.abs(p)<.99999?(this._y=Math.atan2(-d,f),this._z=Math.atan2(-s,l)):(this._y=0,this._z=Math.atan2(c,a))):"ZYX"===t?(this._y=Math.asin(-i(d,-1,1)),Math.abs(d)<.99999?(this._x=Math.atan2(p,f),this._z=Math.atan2(c,a)):(this._x=0,this._z=Math.atan2(-s,l))):"YZX"===t?(this._z=Math.asin(i(c,-1,1)),Math.abs(c)<.99999?(this._x=Math.atan2(-u,l),this._y=Math.atan2(-d,a)):(this._x=0,this._y=Math.atan2(h,f))):"XZY"===t?(this._z=Math.asin(-i(s,-1,1)),Math.abs(s)<.99999?(this._x=Math.atan2(p,l),this._y=Math.atan2(h,a)):(this._x=Math.atan2(-u,f),this._y=0)):n.warn("THREE.Euler: .setFromRotationMatrix() given unsupported order: "+t),this._order=t,r!==!1&&this.onChangeCallback(),this},setFromQuaternion:function(){var e;return function(t,r,i){return void 0===e&&(e=new n.Matrix4),e.makeRotationFromQuaternion(t),this.setFromRotationMatrix(e,r,i),this}}(),setFromVector3:function(e,t){return this.set(e.x,e.y,e.z,t||this._order)},reorder:function(){var e=new n.Quaternion;return function(t){e.setFromEuler(this),this.setFromQuaternion(e,t)}}(),equals:function(e){return e._x===this._x&&e._y===this._y&&e._z===this._z&&e._order===this._order},fromArray:function(e){return this._x=e[0],this._y=e[1],this._z=e[2],void 0!==e[3]&&(this._order=e[3]),this.onChangeCallback(),this},toArray:function(e,t){return void 0===e&&(e=[]),void 0===t&&(t=0),e[t]=this._x,e[t+1]=this._y,e[t+2]=this._z,e[t+3]=this._order,e},toVector3:function(e){return e?e.set(this._x,this._y,this._z):new n.Vector3(this._x,this._y,this._z)},onChange:function(e){return this.onChangeCallback=e,this},onChangeCallback:function(){},clone:function(){return new n.Euler(this._x,this._y,this._z,this._order)}},n.Line3=function(e,t){this.start=void 0!==e?e:new n.Vector3,this.end=void 0!==t?t:new n.Vector3},n.Line3.prototype={constructor:n.Line3,set:function(e,t){return this.start.copy(e),this.end.copy(t),this},copy:function(e){return this.start.copy(e.start),this.end.copy(e.end),this},center:function(e){var t=e||new n.Vector3;return t.addVectors(this.start,this.end).multiplyScalar(.5)},delta:function(e){var t=e||new n.Vector3;return t.subVectors(this.end,this.start)},distanceSq:function(){return this.start.distanceToSquared(this.end)},distance:function(){return this.start.distanceTo(this.end)},at:function(e,t){var r=t||new n.Vector3;return this.delta(r).multiplyScalar(e).add(this.start)},closestPointToPointParameter:function(){var e=new n.Vector3,t=new n.Vector3;return function(r,i){e.subVectors(r,this.start),t.subVectors(this.end,this.start);var o=t.dot(t),a=t.dot(e),s=a/o;return i&&(s=n.Math.clamp(s,0,1)),s}}(),closestPointToPoint:function(e,t,r){var i=this.closestPointToPointParameter(e,t),o=r||new n.Vector3;return this.delta(o).multiplyScalar(i).add(this.start)},applyMatrix4:function(e){return this.start.applyMatrix4(e),this.end.applyMatrix4(e),this},equals:function(e){return e.start.equals(this.start)&&e.end.equals(this.end)},clone:function(){return(new n.Line3).copy(this)}},n.Box2=function(e,t){this.min=void 0!==e?e:new n.Vector2(1/0,1/0),this.max=void 0!==t?t:new n.Vector2(-(1/0),-(1/0))},n.Box2.prototype={constructor:n.Box2,set:function(e,t){return this.min.copy(e),this.max.copy(t),this},setFromPoints:function(e){this.makeEmpty();for(var t=0,r=e.length;r>t;t++)this.expandByPoint(e[t]);return this},setFromCenterAndSize:function(){var e=new n.Vector2;return function(t,r){var i=e.copy(r).multiplyScalar(.5);return this.min.copy(t).sub(i),this.max.copy(t).add(i),this}}(),copy:function(e){return this.min.copy(e.min),this.max.copy(e.max),this},makeEmpty:function(){return this.min.x=this.min.y=1/0,this.max.x=this.max.y=-(1/0),this},empty:function(){return this.max.xthis.max.x||e.ythis.max.y?!1:!0},containsBox:function(e){return this.min.x<=e.min.x&&e.max.x<=this.max.x&&this.min.y<=e.min.y&&e.max.y<=this.max.y?!0:!1},getParameter:function(e,t){var r=t||new n.Vector2;return r.set((e.x-this.min.x)/(this.max.x-this.min.x),(e.y-this.min.y)/(this.max.y-this.min.y))},isIntersectionBox:function(e){return e.max.xthis.max.x||e.max.ythis.max.y?!1:!0},clampPoint:function(e,t){var r=t||new n.Vector2;return r.copy(e).clamp(this.min,this.max)},distanceToPoint:function(){var e=new n.Vector2;return function(t){var r=e.copy(t).clamp(this.min,this.max);return r.sub(t).length()}}(),intersect:function(e){return this.min.max(e.min),this.max.min(e.max),this},union:function(e){return this.min.min(e.min),this.max.max(e.max),this},translate:function(e){return this.min.add(e),this.max.add(e),this},equals:function(e){return e.min.equals(this.min)&&e.max.equals(this.max)},clone:function(){return(new n.Box2).copy(this)}},n.Box3=function(e,t){this.min=void 0!==e?e:new n.Vector3(1/0,1/0,1/0),this.max=void 0!==t?t:new n.Vector3(-(1/0),-(1/0),-(1/0))},n.Box3.prototype={constructor:n.Box3,set:function(e,t){return this.min.copy(e),this.max.copy(t),this},setFromPoints:function(e){this.makeEmpty();for(var t=0,r=e.length;r>t;t++)this.expandByPoint(e[t]);return this},setFromCenterAndSize:function(){var e=new n.Vector3;return function(t,r){var i=e.copy(r).multiplyScalar(.5);return this.min.copy(t).sub(i),this.max.copy(t).add(i),this}}(),setFromObject:function(){var e=new n.Vector3;return function(t){var r=this;return t.updateMatrixWorld(!0),this.makeEmpty(),t.traverse(function(t){var i=t.geometry;if(void 0!==i)if(i instanceof n.Geometry)for(var o=i.vertices,a=0,s=o.length;s>a;a++)e.copy(o[a]),e.applyMatrix4(t.matrixWorld),r.expandByPoint(e);else if(i instanceof n.BufferGeometry&&void 0!==i.attributes.position)for(var h=i.attributes.position.array,a=0,s=h.length;s>a;a+=3)e.set(h[a],h[a+1],h[a+2]),e.applyMatrix4(t.matrixWorld),r.expandByPoint(e)}),this}}(),copy:function(e){return this.min.copy(e.min),this.max.copy(e.max),this},makeEmpty:function(){return this.min.x=this.min.y=this.min.z=1/0,this.max.x=this.max.y=this.max.z=-(1/0),this},empty:function(){return this.max.xthis.max.x||e.ythis.max.y||e.zthis.max.z?!1:!0},containsBox:function(e){return this.min.x<=e.min.x&&e.max.x<=this.max.x&&this.min.y<=e.min.y&&e.max.y<=this.max.y&&this.min.z<=e.min.z&&e.max.z<=this.max.z?!0:!1},getParameter:function(e,t){var r=t||new n.Vector3;return r.set((e.x-this.min.x)/(this.max.x-this.min.x),(e.y-this.min.y)/(this.max.y-this.min.y),(e.z-this.min.z)/(this.max.z-this.min.z))},isIntersectionBox:function(e){return e.max.xthis.max.x||e.max.ythis.max.y||e.max.zthis.max.z?!1:!0},clampPoint:function(e,t){var r=t||new n.Vector3;return r.copy(e).clamp(this.min,this.max)},distanceToPoint:function(){var e=new n.Vector3;return function(t){var r=e.copy(t).clamp(this.min,this.max);return r.sub(t).length()}}(),getBoundingSphere:function(){var e=new n.Vector3;return function(t){var r=t||new n.Sphere;return r.center=this.center(),r.radius=.5*this.size(e).length(),r}}(),intersect:function(e){return this.min.max(e.min),this.max.min(e.max),this},union:function(e){return this.min.min(e.min),this.max.max(e.max),this},applyMatrix4:function(){var e=[new n.Vector3,new n.Vector3,new n.Vector3,new n.Vector3,new n.Vector3,new n.Vector3,new n.Vector3,new n.Vector3];return function(t){return e[0].set(this.min.x,this.min.y,this.min.z).applyMatrix4(t),e[1].set(this.min.x,this.min.y,this.max.z).applyMatrix4(t),e[2].set(this.min.x,this.max.y,this.min.z).applyMatrix4(t),e[3].set(this.min.x,this.max.y,this.max.z).applyMatrix4(t),e[4].set(this.max.x,this.min.y,this.min.z).applyMatrix4(t),e[5].set(this.max.x,this.min.y,this.max.z).applyMatrix4(t),e[6].set(this.max.x,this.max.y,this.min.z).applyMatrix4(t),e[7].set(this.max.x,this.max.y,this.max.z).applyMatrix4(t),this.makeEmpty(),this.setFromPoints(e),this}}(),translate:function(e){return this.min.add(e),this.max.add(e),this},equals:function(e){return e.min.equals(this.min)&&e.max.equals(this.max)},clone:function(){return(new n.Box3).copy(this)}},n.Matrix3=function(){this.elements=new Float32Array([1,0,0,0,1,0,0,0,1]),arguments.length>0&&n.error("THREE.Matrix3: the constructor no longer reads arguments. use .set() instead.")},n.Matrix3.prototype={constructor:n.Matrix3,set:function(e,t,r,i,n,o,a,s,h){var c=this.elements;return c[0]=e,c[3]=t,c[6]=r,c[1]=i,c[4]=n,c[7]=o,c[2]=a,c[5]=s,c[8]=h,this},identity:function(){return this.set(1,0,0,0,1,0,0,0,1),this},copy:function(e){var t=e.elements;return this.set(t[0],t[3],t[6],t[1],t[4],t[7],t[2],t[5],t[8]),this},multiplyVector3:function(e){return n.warn("THREE.Matrix3: .multiplyVector3() has been removed. Use vector.applyMatrix3( matrix ) instead."),e.applyMatrix3(this)},multiplyVector3Array:function(e){return n.warn("THREE.Matrix3: .multiplyVector3Array() has been renamed. Use matrix.applyToVector3Array( array ) instead."),this.applyToVector3Array(e)},applyToVector3Array:function(){var e=new n.Vector3;return function(t,r,i){void 0===r&&(r=0),void 0===i&&(i=t.length);for(var n=0,o=r;i>n;n+=3,o+=3)e.x=t[o],e.y=t[o+1],e.z=t[o+2],e.applyMatrix3(this),t[o]=e.x,t[o+1]=e.y,t[o+2]=e.z;return t}}(),multiplyScalar:function(e){var t=this.elements;return t[0]*=e,t[3]*=e,t[6]*=e,t[1]*=e,t[4]*=e,t[7]*=e,t[2]*=e,t[5]*=e,t[8]*=e,this},determinant:function(){var e=this.elements,t=e[0],r=e[1],i=e[2],n=e[3],o=e[4],a=e[5],s=e[6],h=e[7],c=e[8];return t*o*c-t*a*h-r*n*c+r*a*s+i*n*h-i*o*s},getInverse:function(e,t){var r=e.elements,i=this.elements;i[0]=r[10]*r[5]-r[6]*r[9],i[1]=-r[10]*r[1]+r[2]*r[9],i[2]=r[6]*r[1]-r[2]*r[5],i[3]=-r[10]*r[4]+r[6]*r[8],i[4]=r[10]*r[0]-r[2]*r[8],i[5]=-r[6]*r[0]+r[2]*r[4],i[6]=r[9]*r[4]-r[5]*r[8],i[7]=-r[9]*r[0]+r[1]*r[8],i[8]=r[5]*r[0]-r[1]*r[4];var o=r[0]*i[0]+r[1]*i[3]+r[2]*i[6];if(0===o){var a="Matrix3.getInverse(): can't invert matrix, determinant is 0";if(t)throw new Error(a);return n.warn(a),this.identity(),this}return this.multiplyScalar(1/o),this},transpose:function(){var e,t=this.elements;return e=t[1],t[1]=t[3],t[3]=e,e=t[2],t[2]=t[6],t[6]=e,e=t[5],t[5]=t[7],t[7]=e,this},flattenToArrayOffset:function(e,t){var r=this.elements;return e[t]=r[0],e[t+1]=r[1],e[t+2]=r[2],e[t+3]=r[3],e[t+4]=r[4],e[t+5]=r[5],e[t+6]=r[6],e[t+7]=r[7],e[t+8]=r[8],e},getNormalMatrix:function(e){return this.getInverse(e).transpose(),this},transposeIntoArray:function(e){var t=this.elements;return e[0]=t[0],e[1]=t[3],e[2]=t[6],e[3]=t[1],e[4]=t[4],e[5]=t[7],e[6]=t[2],e[7]=t[5],e[8]=t[8],this},fromArray:function(e){return this.elements.set(e),this},toArray:function(){var e=this.elements;return[e[0],e[1],e[2],e[3],e[4],e[5],e[6],e[7],e[8]]},clone:function(){return(new n.Matrix3).fromArray(this.elements)}},n.Matrix4=function(){this.elements=new Float32Array([1,0,0,0,0,1,0,0,0,0,1,0,0,0,0,1]),arguments.length>0&&n.error("THREE.Matrix4: the constructor no longer reads arguments. use .set() instead.")},n.Matrix4.prototype={constructor:n.Matrix4,set:function(e,t,r,i,n,o,a,s,h,c,l,u,d,p,f,m){var g=this.elements;return g[0]=e,g[4]=t,g[8]=r,g[12]=i,g[1]=n,g[5]=o,g[9]=a,g[13]=s,g[2]=h,g[6]=c,g[10]=l,g[14]=u,g[3]=d,g[7]=p,g[11]=f,g[15]=m,this},identity:function(){return this.set(1,0,0,0,0,1,0,0,0,0,1,0,0,0,0,1),this},copy:function(e){return this.elements.set(e.elements),this},extractPosition:function(e){return n.warn("THREE.Matrix4: .extractPosition() has been renamed to .copyPosition()."),this.copyPosition(e)},copyPosition:function(e){var t=this.elements,r=e.elements;return t[12]=r[12],t[13]=r[13],t[14]=r[14],this},extractBasis:function(e,t,r){var i=this.elements;return e.set(i[0],i[1],i[2]),t.set(i[4],i[5],i[6]),r.set(i[8],i[9],i[10]),this},makeBasis:function(e,t,r){return this.set(e.x,t.x,r.x,0,e.y,t.y,r.y,0,e.z,t.z,r.z,0,0,0,0,1),this},extractRotation:function(){var e=new n.Vector3;return function(t){var r=this.elements,i=t.elements,n=1/e.set(i[0],i[1],i[2]).length(),o=1/e.set(i[4],i[5],i[6]).length(),a=1/e.set(i[8],i[9],i[10]).length();return r[0]=i[0]*n,r[1]=i[1]*n,r[2]=i[2]*n,r[4]=i[4]*o,r[5]=i[5]*o,r[6]=i[6]*o,r[8]=i[8]*a,r[9]=i[9]*a,r[10]=i[10]*a,this}}(),makeRotationFromEuler:function(e){e instanceof n.Euler==!1&&n.error("THREE.Matrix: .makeRotationFromEuler() now expects a Euler rotation rather than a Vector3 and order.");var t=this.elements,r=e.x,i=e.y,o=e.z,a=Math.cos(r),s=Math.sin(r),h=Math.cos(i),c=Math.sin(i),l=Math.cos(o),u=Math.sin(o); +!function(e){function t(i){if(r[i])return r[i].exports;var n=r[i]={exports:{},id:i,loaded:!1};return e[i].call(n.exports,n,n.exports,t),n.loaded=!0,n.exports}var r={};return t.m=e,t.c=r,t.p="",t(0)}(function(e){for(var t in e)if(Object.prototype.hasOwnProperty.call(e,t))switch(typeof e[t]){case"number":e[t]=e[e[t]];break;case"object":e[t]=function(t){var r=t.slice(1),i=e[t[0]];return function(e,t,n){i.apply(null,[e,t,n].concat(r))}}(e[t])}return e}([function(e,t,r){!function(){"use strict";function e(){r(2),n=r(1)}function t(){function e(e,t){var r,i=document.createElement("span");return i.innerHTML=e,i.id=t,r=i.firstChild,r.setAttribute("width",18),r.setAttribute("height",18),a.appendChild(i),i}function t(){n.orientationEnabled()?n.disableOrientation():n.enableOrientation()}function i(){n.controlMode()&&(c.classList.remove("unsupported"),l.classList.remove("unsupported"))}var a,s,h,c,l,u,d=new o,p=document.body,f=document.fullscreenEnabled||document.webkitFullscreenEnabled||document.mozFullScreenEnabled||document.msFullscreenEnabled,m=p.webkitRequestFullscreen||p.mozRequestFullScreen||p.msRequestFullscreen;u=document.createElement("meta"),u.setAttribute("name","viewport"),u.setAttribute("content","width=device-width, initial-scale=1, user-scalable=no"),document.head.appendChild(u),a=document.createElement("div"),a.id="buttons",document.body.appendChild(a),m&&f&&(s=e(r(5),"fs-enable"),s.setAttribute("title","Enable Full Screen"),s.addEventListener("click",m.bind(p),!1),h=e(r(6),"fs-disable"),h.setAttribute("title","Exit Full Screen"),h.addEventListener("click",n.exitFullscreen,!1)),n.on("fullscreenchange",function(){n.isFullscreen()?(h.style.display="inline-block",s.style.display="none"):(h.style.display="",s.style.display=""),n.vrMode()?d.enable():d.disable()}),c=e(r(7),"vr"),c.setAttribute("title","Toggle Virtual Reality"),c.className="unsupported",c.addEventListener("click",n.requestVR,!1),l=e(r(8),"orientation"),l.setAttribute("title","Toggle Orientation"),l.className="unsupported",l.addEventListener("click",t,!1),n.on("devicechange",i),i(),window.addEventListener("keydown",function(e){e.keyCode==="Z".charCodeAt(0)?n.zeroSensor():e.keyCode==="O".charCodeAt(0)?n.enableOrientation():13===e.keyCode&&n.requestVR()},!1),n.resize()}function i(){e(),n.init(),document.body?t():window.addEventListener("load",t,!1),window.addEventListener("resize",n.resize,!1),window.VR=n,window.THREE=n.THREE}var n,o=r(9).NoSleep;i(),n.start()}()},function(e,t,r){!function(){"use strict";function t(){return!!(document.fullscreenElement||document.mozFullScreenElement||document.webkitFullscreenElement||document.msFullscreenElement)}function i(){U=!1,M&&M.exit()}function n(){var e,t,r,i,n;for(E.ray.origin.copy(v.position),E.ray.direction.set(0,0,.5).unproject(v).sub(v.position).normalize(),i=E.intersectObjects(y.children),e=0;en&&(a=Date.now(),s=a-i,s>1e3&&(navigator.vibrate&&navigator.vibrate(100),i=Date.now(),_.emit("shake")))),e=c.x,t=c.y,r=c.z,k=!0},!1)}function d(){function e(){document.body.insertBefore(b.domElement,document.body.firstChild||null),l()}if(!b){b=new m.WebGLRenderer,b.domElement.addEventListener("webglcontextlost",function(e){console.log("lost context",e)}),y=new m.Scene,C=new N(y,r(13),null,{name:"body"}).moveTo(0,1.5,4),x=C.object,P=new N(x,function(e){return v=new m.PerspectiveCamera(60,window.innerWidth/window.innerHeight,R,B),e.add(v),v}).moveTo(0,1e-4,1e-4),w=new m.AudioListener,w.name="audio-listener",v.add(w),A=new m.VRControls(v),A.freeze=!L,M=new m.VRStereoEffect(b),M.near=R,M.far=B,M.addEventListener("fullscreenchange",function(e){var r;t()?U&&(S.enabled=!1,A.freeze=!1,A.reset(),r=window.screen,r.lockOrientation?r.lockOrientation("landscape-primary"):r.mozLockOrientation?r.mozLockOrientation("landscape-primary"):r.orientation&&r.orientation.lock&&r.orientation.lock("landscape-primary")):_.exitVR(),v.position.set(0,1e-4,1e-4),v.rotation.set(0,0,0),_.emit("fullscreenchange",e)}),A.addEventListener("devicechange",function(){k=!0,void 0===L&&(L="deviceorientation"===A.mode()),A.freeze=!L&&!U,_.emit("devicechange",A.mode(),M.hmd())}),S=new m.OrbitControls(v),S.target0.set(0,1e-4,0),S.target.copy(S.target0),S.update();var n=new m.DirectionalLight(16777215,.8);n.name="directional-light",n.position.set(20,100,100),n.castShadow=!0,n.shadowCameraVisible=!0,n.shadowMapWidth=2048,n.shadowMapHeight=2048,n.shadowCameraLeft=-10,n.shadowCameraRight=10,n.shadowCameraTop=10,n.shadowCameraBottom=-10,n.shadowCameraFar=150,n.shadowCameraNear=100,n.shadowDarkness=1,y.add(n),y.add(new m.AmbientLight(4473924)),_&&(_.camera=P,_.body=C,_.scene=y,_.canvas=b.domElement,_.zeroSensor=A.zeroSensor),E=new m.Raycaster,document.body?e():window.addEventListener("load",e,!1),_.canvas.addEventListener("mozfullscreenerror",i,!1),_.canvas.addEventListener("webkitfullscreenerror",i,!1),_.canvas.addEventListener("fullscreenerror",i,!1)}}function p(){m=r(33),r(15),r(16),r(17),m.ImageUtils.crossOrigin="",g=r(20),r(18),r(19)}function f(){d(),u(),l(),document.addEventListener("visibilitychange",c),document.addEventListener("mozvisibilitychange",c),document.addEventListener("msvisibilitychange",c),document.addEventListener("webkitvisibilitychange",c)}var m,g,v,y,x,b,w,A,M,S,E,T,C,P,L,_,R=.1,B=1e6,F=r(10),z=function(){},D=z,O=(document.exitFullscreen||document.mozCancelFullScreen||document.webkitExitFullscreen||document.msExitFullscreen||z).bind(document),V=!1,U=!1,k=!1,N=r(11),G=["box","cylinder","torus","sphere","empty","sound","floor","sky","panorama","image","video","text"],H=[],I=0,j=[];p(),e.exports=_={init:f,render:o,start:h,stop:s,resize:l,THREE:m,materials:F,animate:function(e){var t;"function"==typeof e&&(t=j.indexOf(e),0>t&&j.push(e))},end:function(e){var t;return e?void("function"==typeof e&&(t=j.indexOf(e),t>=0&&j.splice(t,1))):void(j.length=0)},requestVR:function(){!U&&M&&(U=!0,M.requestFullScreen())},exitVR:function(){return U=!1,t()?void O():(S.enabled=!0,A.freeze=!L,void v.rotation.set(0,0,0))},vrMode:function(){return U&&t()},orientationEnabled:function(){return!!L},enableOrientation:function(){L=!0,U||(A.freeze=!1)},disableOrientation:function(){L=!1,v.rotation.set(0,0,0),A.freeze=!U},isFullscreen:t,requestFullscreen:D,exitFullscreen:function(){t()&&O()},controlMode:function(){return A&&A.mode()},zeroSensor:z,vibrate:navigator.vibrate?navigator.vibrate.bind(navigator):z,times:function(e,t){var r;for(r=0;e>r;r++)t(r)},camera:P,body:C,scene:y,canvas:b&&b.domElement||null},G.forEach(function(e){var t,i=r(12)("./"+e);_[e]=function(e){var t=new N(y,i,x,e);return H.push(t),t},N.prototype[e]=function(e){var t=new N(this.object,i,x,e);return H.push(t),t};for(t in i)i.hasOwnProperty(t)&&"function"==typeof i[t]&&(_[e][t]=i[t],N.prototype[e][t]=i[t])}),g(_),Object.defineProperty(_,"target",{get:function(){return T}})}()},function(e,t,r){var i=r(3);"string"==typeof i&&(i=[[e.id,i,""]]);r(4)(i,{});i.locals&&(e.exports=i.locals)},function(e,t,r){t=e.exports=r(14)(),t.push([e.id,"body{font-family:'Helvetica Neue',Helvetica,Arial,sans-serif;color:#eee;overflow:hidden;background:#282828;height:100%;width:100%;margin:0;padding:0}canvas{width:100%!important;height:100%!important;top:0;left:0}#buttons{position:absolute;bottom:0;left:0;padding:12px;margin:8px;border-radius:8px;background-color:rgba(128,128,128,.6)}#buttons>*{margin:0 10px;display:inline-block;width:18px;height:18px;cursor:pointer}#buttons>:first-child{margin-left:0}#buttons>.unsupported,#fs-disable{display:none}",""])},function(e,t,r){function i(e,t){for(var r=0;r\n \n'},function(e,t,r){e.exports='\n \n'},function(e,t,r){e.exports='\n \n'},function(e,t,r){e.exports='\n \n'},function(e,t,r){!function(e){function t(e,t,r){var i=document.createElement("source");i.src=r,i.type="video/"+t,e.appendChild(i)}var r={Android:/Android/gi.test(navigator.userAgent),iOS:/AppleWebKit/.test(navigator.userAgent)&&/Mobile\/\w+/.test(navigator.userAgent)},i={WebM:"data:video/webm;base64,GkXfo0AgQoaBAUL3gQFC8oEEQvOBCEKCQAR3ZWJtQoeBAkKFgQIYU4BnQI0VSalmQCgq17FAAw9CQE2AQAZ3aGFtbXlXQUAGd2hhbW15RIlACECPQAAAAAAAFlSua0AxrkAu14EBY8WBAZyBACK1nEADdW5khkAFVl9WUDglhohAA1ZQOIOBAeBABrCBCLqBCB9DtnVAIueBAKNAHIEAAIAwAQCdASoIAAgAAUAmJaQAA3AA/vz0AAA=",MP4:"data:video/mp4;base64,AAAAHGZ0eXBpc29tAAACAGlzb21pc28ybXA0MQAAAAhmcmVlAAAAG21kYXQAAAGzABAHAAABthADAowdbb9/AAAC6W1vb3YAAABsbXZoZAAAAAB8JbCAfCWwgAAAA+gAAAAAAAEAAAEAAAAAAAAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAQAAAAAAAAAAAAAAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAIAAAIVdHJhawAAAFx0a2hkAAAAD3wlsIB8JbCAAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAQAAAAAAAAAAAAAAAAAAQAAAAAAIAAAACAAAAAABsW1kaWEAAAAgbWRoZAAAAAB8JbCAfCWwgAAAA+gAAAAAVcQAAAAAAC1oZGxyAAAAAAAAAAB2aWRlAAAAAAAAAAAAAAAAVmlkZW9IYW5kbGVyAAAAAVxtaW5mAAAAFHZtaGQAAAABAAAAAAAAAAAAAAAkZGluZgAAABxkcmVmAAAAAAAAAAEAAAAMdXJsIAAAAAEAAAEcc3RibAAAALhzdHNkAAAAAAAAAAEAAACobXA0dgAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAIAAgASAAAAEgAAAAAAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABj//wAAAFJlc2RzAAAAAANEAAEABDwgEQAAAAADDUAAAAAABS0AAAGwAQAAAbWJEwAAAQAAAAEgAMSNiB9FAEQBFGMAAAGyTGF2YzUyLjg3LjQGAQIAAAAYc3R0cwAAAAAAAAABAAAAAQAAAAAAAAAcc3RzYwAAAAAAAAABAAAAAQAAAAEAAAABAAAAFHN0c3oAAAAAAAAAEwAAAAEAAAAUc3RjbwAAAAAAAAABAAAALAAAAGB1ZHRhAAAAWG1ldGEAAAAAAAAAIWhkbHIAAAAAAAAAAG1kaXJhcHBsAAAAAAAAAAAAAAAAK2lsc3QAAAAjqXRvbwAAABtkYXRhAAAAAQAAAABMYXZmNTIuNzguMw=="},n=function(){return r.iOS?this.noSleepTimer=null:r.Android&&(this.noSleepVideo=document.createElement("video"),this.noSleepVideo.setAttribute("loop",""),t(this.noSleepVideo,"webm",i.WebM),t(this.noSleepVideo,"mp4",i.MP4)),this};n.prototype.enable=function(e){r.iOS?(this.disable(),this.noSleepTimer=window.setInterval(function(){window.location=window.location,window.setTimeout(window.stop,0)},e||15e3)):r.Android&&this.noSleepVideo.play()},n.prototype.disable=function(){r.iOS?this.noSleepTimer&&(window.clearInterval(this.noSleepTimer),this.noSleepTimer=null):r.Android&&this.noSleepVideo.pause()},e.NoSleep=n}(this)},function(e,t,r){e.exports=function(){"use strict";function e(e,t,r){function i(){var e,t,i;s&&(o.naturalWidth>2048||o.naturalHeight>2048)&&(e=2048/Math.max(o.naturalWidth,o.naturalHeight),t=document.createElement("canvas"),t.width=Math.floor(o.naturalWidth*e),t.height=Math.floor(o.naturalHeight*e),i=t.getContext("2d"),i.drawImage(o,0,0,o.naturalWidth,o.naturalHeight,0,0,t.width,t.height),o=t),l.image=o,l.needsUpdate=!0,"function"==typeof r&&setTimeout(r.bind(null,l,o),1)}var o,a,l,d;return a=c.exec(e),d=!!a,a||(a=h.exec(e)),u[e]?o=u[e]:(o=document.createElement("img"),a&&(a[1]&&a[1]!==window.location.hostname||a[2]&&a[2]!==window.location.port)&&(o.crossOrigin="anonymous"),o.src=e,u[e]=o),l=new n.Texture(void 0,t),o.naturalWidth||d?setTimeout(i,1):o.addEventListener("load",i),l}function t(t){function r(r){if("string"==typeof r){if(h.test(r)||c.test(r))return e(r);r=f[r]}return"function"==typeof r?r(t):r}var i,s=d[t.type]||n.MeshLambertMaterial;return i=a({},t),o({ambient:t.ambient||t.color,emissive:t.emissive||t.color,map:r(t.map),specularMap:r(t.specularMap),normalMap:r(t.normalMap),alphaMap:r(t.alphaMap),envMap:r(t.envMap),lightMap:r(t.lightMap)},function(e,t){void 0!==e&&(i[t]=e)}),delete i.type,new s(i)}var i,n=r(33),o=r(36),a=r(37),s=navigator.userAgent.match(/(iPad|iPhone|iPod)/g),h=r(35),c=/^data:image\/(?:png|jpe?g|gif);/,l="http://pov-tc.pbs.org/pov/flv/2015/webvr-starter-kit/",u={},d={lambert:n.MeshLambertMaterial,basic:n.MeshBasicMaterial,phong:n.MeshPhongMaterial,normal:n.MeshNormalMaterial,depth:n.MeshDepthMaterial},p={asphalt:{repeat:12},"brick-tiles":{repeat:2},bricks:{type:"phong",repeat:4,normalMap:"bricks-normal.jpg",specularMap:"bricks-specular.jpg"},checkerboard:{repeat:10,map:"checkerboard.png"},grass:{repeat:12},"metal-floor":{type:"phong",shininess:100,repeat:2},metal:{type:"phong",shininess:100,shading:n.SmoothShading,repeat:2},stone:{repeat:8},tiles:{repeat:4},"weathered-wood":{repeat:8},wood:{repeat:4}},f={};return l=function(){var e,t;return document.currentScript?e=document.currentScript.getAttribute("src"):(t=document.getElementsByTagName("script"),e=t[t.length-1].getAttribute("src")),h.test(e)?"http://pov-tc.pbs.org/pov/flv/2015/webvr-starter-kit/":e.replace(/[a-z\-\.]+\.js$/i,"")}(),i={standard:function(){return new n.MeshLambertMaterial},textures:f,imageTexture:e,material:t,library:["standard"]},o(p,function(o,s){function h(t,i){function o(e){return/^[a-z0-9\/\-]+\.(png|jpg)$/i.test(e)?l+e:e}return i=i||{},function(s){var h=e(o(r(34)("./"+t)));return s=a({},i,s),s.repeat&&(s.repeat>0?h.repeat.set(s.repeat,s.repeat):s.repeat instanceof n.Vector2&&h.repeat.copy(s.repeat),h.wrapS=h.wrapT=n.RepeatWrapping),h}}var c,u=h(o.map||s+".jpg",o);c=a({},o,{map:u}),f[s]=u,o.normalMap&&(c.normalMap=f[s+"-normal"]=h(o.normalMap,o)),o.specularMap&&(c.specularMap=f[s+"-specular"]=h(o.specularMap,o)),i.library.push(s),i[s]=function(e){var r=a({},c,e);return t(r)}}),i}()},function(e,t,r){e.exports=function(){"use strict";function e(e,t){var r;return r=e.geometry,l.setFromMatrixPosition(t.matrixWorld),r?(r.computeBoundingBox(),e.worldToLocal(l),e.geometry.boundingBox.distanceToPoint(l)):(u.setFromMatrixPosition(e.matrixWorld),u.distanceTo(l))}function t(t,r,n,s){var h,c,l=this,u=!1;s=s||{},a(this),n&&(this.update=function(){var e=u;u=l.distancer;r++);},t.findObject=function(e){return e instanceof t?e:e&&e instanceof o.Object3D?d.get?d.get(e):d[e.id]:void 0},t}()},function(e,t,r){function i(e){return r(n(e))}function n(e){return o[e]||function(){throw new Error("Cannot find module '"+e+"'.")}()}var o={"./box":21,"./box.js":21,"./cylinder":22,"./cylinder.js":22,"./empty":13,"./empty.js":13,"./floor":23,"./floor.js":23,"./image":24,"./image.js":24,"./panorama":25,"./panorama.js":25,"./particles":26,"./particles.js":26,"./sky":27,"./sky.js":27,"./sound":28,"./sound.js":28,"./sphere":29,"./sphere.js":29,"./text":30,"./text.js":30,"./torus":31,"./torus.js":31,"./video":32,"./video.js":32};i.keys=function(){return Object.keys(o)},i.resolve=n,e.exports=i,i.id=12},function(e,t,r){e.exports=function(){"use strict";var e=(r(10),r(33));return function(t,r){var i=new e.Object3D;return i.name="empty",t.add(i),i}}()},function(e,t,r){e.exports=function(){var e=[];return e.toString=function(){for(var e=[],t=0;t0?m.dollyIn():m.dollyOut(),E.copy(T)}else if(D===z.PAN){if(m.noPan===!0)return;w.set(e.clientX,e.clientY),A.subVectors(w,b),m.pan(A.x,A.y),b.copy(w)}D!==z.NONE&&m.update()}}function s(){m.enabled!==!1&&(window.removeEventListener("mouseup",s,!1),m.dispatchEvent(N),D=z.NONE)}function h(e){if(m.enabled!==!1&&m.noZoom!==!0&&D===z.NONE){e.preventDefault(),e.stopPropagation();var t=0;void 0!==e.wheelDelta?t=e.wheelDelta:void 0!==e.detail&&(t=-e.detail),t>0?m.dollyOut():m.dollyIn(),m.update(),m.dispatchEvent(k),m.dispatchEvent(N)}}function c(e){if(m.enabled!==!1&&m.noKeys!==!0&&m.noPan!==!0)switch(e.keyCode){case m.keys.UP:m.pan(0,m.keyPanSpeed),m.update();break;case m.keys.BOTTOM:m.pan(0,-m.keyPanSpeed),m.update();break;case m.keys.LEFT:m.pan(m.keyPanSpeed,0),m.update();break;case m.keys.RIGHT:m.pan(-m.keyPanSpeed,0),m.update()}}function l(e){if(m.enabled!==!1){switch(e.touches.length){case 1:if(m.noRotate===!0)return;D=z.TOUCH_ROTATE,v.set(e.touches[0].pageX,e.touches[0].pageY);break;case 2:if(m.noZoom===!0)return;D=z.TOUCH_DOLLY;var t=e.touches[0].pageX-e.touches[1].pageX,r=e.touches[0].pageY-e.touches[1].pageY,i=Math.sqrt(t*t+r*r);E.set(0,i);break;case 3:if(m.noPan===!0)return;D=z.TOUCH_PAN,b.set(e.touches[0].pageX,e.touches[0].pageY);break;default:D=z.NONE}D!==z.NONE&&m.dispatchEvent(k)}}function u(e){if(m.enabled!==!1){e.preventDefault(),e.stopPropagation();var t=m.domElement===document?m.domElement.body:m.domElement;switch(e.touches.length){case 1:if(m.noRotate===!0)return;if(D!==z.TOUCH_ROTATE)return;y.set(e.touches[0].pageX,e.touches[0].pageY),x.subVectors(y,v),m.rotateLeft(2*Math.PI*x.x/t.clientWidth*m.rotateSpeed),m.rotateUp(2*Math.PI*x.y/t.clientHeight*m.rotateSpeed),v.copy(y),m.update();break;case 2:if(m.noZoom===!0)return;if(D!==z.TOUCH_DOLLY)return;var r=e.touches[0].pageX-e.touches[1].pageX,i=e.touches[0].pageY-e.touches[1].pageY,n=Math.sqrt(r*r+i*i);T.set(0,n),C.subVectors(T,E),C.y>0?m.dollyOut():m.dollyIn(),E.copy(T),m.update();break;case 3:if(m.noPan===!0)return;if(D!==z.TOUCH_PAN)return;w.set(e.touches[0].pageX,e.touches[0].pageY),A.subVectors(w,b),m.pan(A.x,A.y),b.copy(w),m.update();break;default:D=z.NONE}}}function d(){m.enabled!==!1&&(m.dispatchEvent(N),D=z.NONE)}this.object=e,this.domElement=void 0!==t?t:document,this.enabled=!0,this.target=new i.Vector3,this.center=this.target,this.noZoom=!1,this.zoomSpeed=1,this.minDistance=0,this.maxDistance=1/0,this.noRotate=!1,this.rotateSpeed=1,this.noPan=!1,this.keyPanSpeed=7,this.autoRotate=!1,this.autoRotateSpeed=2,this.minPolarAngle=0,this.maxPolarAngle=Math.PI,this.minAzimuthAngle=-(1/0),this.maxAzimuthAngle=1/0,this.noKeys=!1,this.keys={LEFT:37,UP:38,RIGHT:39,BOTTOM:40},this.mouseButtons={ORBIT:i.MOUSE.LEFT,ZOOM:i.MOUSE.MIDDLE,PAN:i.MOUSE.RIGHT};var p,f,m=this,g=1e-6,v=new i.Vector2,y=new i.Vector2,x=new i.Vector2,b=new i.Vector2,w=new i.Vector2,A=new i.Vector2,M=new i.Vector3,S=new i.Vector3,E=new i.Vector2,T=new i.Vector2,C=new i.Vector2,P=0,L=0,_=1,R=new i.Vector3,B=new i.Vector3,F=new i.Quaternion,z={NONE:-1,ROTATE:0,DOLLY:1,PAN:2,TOUCH_ROTATE:3,TOUCH_DOLLY:4,TOUCH_PAN:5},D=z.NONE;this.target0=this.target.clone(),this.position0=this.object.position.clone();var O=(new i.Quaternion).setFromUnitVectors(e.up,new i.Vector3(0,1,0)),V=O.clone().inverse(),U={type:"change"},k={type:"start"},N={type:"end"};this.rotateLeft=function(e){void 0===e&&(e=r()),L-=e},this.rotateUp=function(e){void 0===e&&(e=r()),P-=e},this.panLeft=function(e){var t=this.object.matrix.elements;M.set(t[0],t[1],t[2]),M.multiplyScalar(-e),R.add(M)},this.panUp=function(e){var t=this.object.matrix.elements;M.set(t[4],t[5],t[6]),M.multiplyScalar(e),R.add(M)},this.pan=function(e,t){var r=m.domElement===document?m.domElement.body:m.domElement;if(void 0!==m.object.fov){var i=m.object.position,n=i.clone().sub(m.target),o=n.length();o*=Math.tan(m.object.fov/2*Math.PI/180),m.panLeft(2*e*o/r.clientHeight),m.panUp(2*t*o/r.clientHeight)}else void 0!==m.object.top?(m.panLeft(e*(m.object.right-m.object.left)/r.clientWidth),m.panUp(t*(m.object.top-m.object.bottom)/r.clientHeight)):console.warn("WARNING: OrbitControls.js encountered an unknown camera type - pan disabled.")},this.dollyIn=function(e){void 0===e&&(e=n()),_/=e},this.dollyOut=function(e){void 0===e&&(e=n()),_*=e},this.update=function(){var e=this.object.position;S.copy(e).sub(this.target),S.applyQuaternion(O),p=Math.atan2(S.x,S.z),f=Math.atan2(Math.sqrt(S.x*S.x+S.z*S.z),S.y),this.autoRotate&&D===z.NONE&&this.rotateLeft(r()),p+=L,f+=P,p=Math.max(this.minAzimuthAngle,Math.min(this.maxAzimuthAngle,p)),f=Math.max(this.minPolarAngle,Math.min(this.maxPolarAngle,f)),f=Math.max(g,Math.min(Math.PI-g,f));var t=S.length()*_;t=Math.max(this.minDistance,Math.min(this.maxDistance,t)),this.target.add(R),S.x=t*Math.sin(f)*Math.sin(p),S.y=t*Math.cos(f),S.z=t*Math.sin(f)*Math.cos(p),S.applyQuaternion(V),e.copy(this.target).add(S),this.object.lookAt(this.target),L=0,P=0,_=1,R.set(0,0,0),(B.distanceToSquared(this.object.position)>g||8*(1-F.dot(this.object.quaternion))>g)&&(this.dispatchEvent(U),B.copy(this.object.position),F.copy(this.object.quaternion))},this.reset=function(){D=z.NONE,this.target.copy(this.target0),this.object.position.copy(this.position0),this.update()},this.getPolarAngle=function(){return f},this.getAzimuthalAngle=function(){return p},this.domElement.addEventListener("mousedown",o,!1),this.domElement.addEventListener("mousewheel",h,!1),this.domElement.addEventListener("DOMMouseScroll",h,!1),this.domElement.addEventListener("touchstart",l,!1),this.domElement.addEventListener("touchend",d,!1),this.domElement.addEventListener("touchmove",u,!1),window.addEventListener("keydown",c,!1),this.update()},i.OrbitControls.prototype=Object.create(i.EventDispatcher.prototype),i.OrbitControls.prototype.constructor=i.OrbitControls},function(e,t,r){var i=r(33);!function(){function e(e,t){r.push({type:e,format:t})}var t=console.log,r=[];e(i.Matrix4,function(e){var t=e.elements;return[[t[0],t[1],t[2],t[3]],[t[4],t[5],t[6],t[7]],[t[8],t[9],t[10],t[11]],[t[12],t[13],t[14],t[15]]]}),e(i.Matrix3,function(e){var t=e.elements;return[[t[0],t[1],t[2]],[t[3],t[4],t[5]],[t[6],t[7],t[8]]]}),e(i.Vector2,function(e){return{Vector2:{x:e.x,y:e.y}}}),e(i.Vector3,function(e){return{Vector3:{x:e.x,y:e.y,z:e.z}}}),e(i.Vector4,function(e){return{Vector4:{x:e.x,y:e.y,z:e.z,w:e.w}}}),e(i.Euler,function(e){return{Vector4:{x:e.x,y:e.y,z:e.z,order:e.order}}}),e(i.Ray,function(e){return{"Ray origin":{x:e.origin.x,y:e.origin.y,z:e.origin.z},"Ray direction":{x:e.direction.x,y:e.direction.y,z:e.direction.z}}}),console.log=function(){var e=!1;[].forEach.call(arguments,function(t){r.forEach(function(r){t instanceof r.type&&(e=!0)})}),e?[].forEach.call(arguments,function(e){t.apply(console,[e]),r.forEach(function(t){e instanceof t.type&&console.table(t.format(e))})}):t.apply(console,arguments)}}()},function(e,t,r){var i=r(33);i.VRStereoEffect=function(e,t,r){function n(e,t,r){var n=new i.Matrix4,o=n.elements,a=Math.tan(e.upDegrees*R),s=Math.tan(e.downDegrees*R),h=Math.tan(e.leftDegrees*R),c=Math.tan(e.rightDegrees*R),l=2/(h+c),u=2/(a+s);return o[0]=l,o[4]=0,o[8]=-((h-c)*l*.5),o[12]=0,o[1]=0,o[5]=u,o[9]=(a-s)*u*.5,o[13]=0,o[2]=0,o[6]=0,o[10]=r/(t-r),o[14]=r*t/(t-r),o[3]=0,o[7]=0,o[11]=-1,o[15]=0,n}function o(){var t,r;u&&d?(t=c,r=l):(t=g||e.domElement.offsetWidth||window.innerWidth,r=v||e.domElement.offsetHeight||window.innerHeight),e.setSize(t,r)}function a(){var e,t,r,i,a,s,h,d;return u?(u.getEyeParameters?(r=u.getEyeParameters("left"),i=u.getEyeParameters("right"),a=r.renderRect,s=i.renderRect,c=s.x+s.width,l=Math.max(a.y+a.height,s.y+s.height),e=r.currentFieldOfView,t=i.currentFieldOfView,u.setFieldOfView(e,t,P,L),x.copy(r.eyeTranslation),b.copy(i.eyeTranslation),T=r.renderRect,C=i.renderRect):u.getRecommendedEyeRenderRect&&(h=u.getRecommendedEyeRenderRect("left"),d=u.getRecommendedEyeRenderRect("right"),c=h.width+d.width,l=Math.max(h.height,d.height),u.getCurrentEyeFieldOfView?(e=u.getCurrentEyeFieldOfView("left"),t=u.getCurrentEyeFieldOfView("right")):(e=u.getRecommendedEyeFieldOfView("left"), +t=u.getRecommendedEyeFieldOfView("right")),x.copy(u.getEyeTranslation("left")),b.copy(u.getEyeTranslation("right")),T.x=h.left,T.y=h.top,T.width=h.width,T.height=h.height,C.x=d.left,C.y=d.top,C.width=d.width,C.height=d.height),o(),S.projectionMatrix=n(e,P,L),void(E.projectionMatrix=n(t,P,L))):(S.fov=80,void(E.fov=80))}function s(e){var t,r;for(t=0;tt;++t)o[t-1]=arguments[t];for(n=n.slice(),t=0;i=n[t];++t)d.call(i,this,o)}else switch(arguments.length){case 1:p.call(n,this);break;case 2:p.call(n,this,arguments[1]);break;case 3:p.call(n,this,arguments[1],arguments[2]);break;default:for(r=arguments.length,o=new Array(r-1),t=1;r>t;++t)o[t-1]=arguments[t];d.call(n,this,o)}},s={on:i,once:n,off:o,emit:a},h={on:l(i),once:l(n),off:l(o),emit:l(a)},c=g({},h),e.exports=t=function(e){return null==e?f(c):g(Object(e),h)},t.methods=s},function(e,t,r){e.exports=function(){"use strict";var e=r(10),t=r(33),i=new t.BoxGeometry(1,1,1);return function(r,n){var o;return o=new t.Mesh(i,e.standard()),o.name="box",r.add(o),o}}()},function(e,t,r){e.exports=function(){"use strict";function e(e,r){var n,o;return n=new i.CylinderGeometry(void 0===r.radiusTop?.5:r.radiusTop,void 0===r.radiusBottom?.5:r.radiusBottom,void 0===r.height?1:r.height,void 0===r.radiusSegments?16:r.radiusSegments,r.heightSegments,r.openEnded),o=new i.Mesh(n,t.standard()),o.name="cylinder",e.add(o),o}var t=r(10),i=r(33);return e}()},function(e,t,r){e.exports=function(){"use strict";function e(e,r){var n,o;return o=new i.CircleGeometry(r.radius||100,r.segments||16),o.applyMatrix((new i.Matrix4).makeRotationX(-Math.PI/2)),n=new i.Mesh(o,t.checkerboard({repeat:100})),n.name="floor",n.receiveShadow=!0,e.add(n),n}var t=r(10),i=r(33);return e}()},function(e,t,r){e.exports=function(){"use strict";var e=r(10),t=r(33);return function(r,i){var n,o,a,s,h;return"string"==typeof i?s=i:i&&(s=i.src),s&&(h=e.imageTexture(s,t.UVMapping,function(e,i){n.applyMatrix((new t.Matrix4).makeScale(1,i.naturalHeight/i.naturalWidth,1)),o.map=h,o.visible=!0,a.visible=!0,r.add(a)})),n=new t.PlaneBufferGeometry(1,1,8),o=new t.MeshBasicMaterial({side:t.DoubleSide,transparent:!0,map:h}),a=new t.Mesh(n,o),a.visible=!1,r.add(a),a}}()},function(e,t,r){e.exports=function(){"use strict";var e=r(10),t=r(33),i=new t.SphereGeometry(1e3,60,60);return i.applyMatrix((new t.Matrix4).makeScale(-1,1,1)),i.applyMatrix((new t.Matrix4).makeRotationY(-Math.PI/2)),function(r,n){var o,a,s,h;return"string"==typeof n?s=n:n&&(s=n.src),s&&(h=e.imageTexture(s,t.UVMapping)),o=new t.MeshBasicMaterial({transparent:!0,map:h}),a=new t.Mesh(i,o),n&&n.stereo&&("vertical"===n.stereo?h.repeat.y=.5:h.repeat.x=.5,a.userData.stereo=n.stereo),a.name="panorama",r.add(a),a}}()},function(e,t,r){e.exports=function(){"use strict";var e=r(10),t=r(33),i=r(40),n=(r(37),["maxAge","hasPerspective","colorize","blending","transparent","alphaTest","depthWrite","depthTest","fixedTimeStep"]);return function(r,o){var a=new t.Object3D,s={};a.name="particles",o&&n.forEach(function(e){void 0!==o[e]&&(s[e]=o[e])});var h=new i.Group({texture:e.textures.cloud(),maxAge:20,blending:t.NormalBlending,hasPerspective:1}),c=new i.Emitter({positionSpread:new t.Vector3(4,1,24),colorStart:new t.Color("white"),sizeStart:.5,sizeStartSpread:.375,particleCount:8e3,isStatic:0});h.addEmitter(c),a.add(h.mesh),r.add(a);var l=0;return this.update=function(e){var t=Math.min(500,e-l);l=e,h.tick(t)},a}}()},function(e,t,r){e.exports=function(){"use strict";var e=(r(10),r(33)),t=2*Math.PI,i=Math.PI/2,n=4e5,o=(new e.Vector3,["luminance","turbidity","reileigh","mieCoefficient","mieDirectionalG"]);return r(39),function(r,a){function s(e,t){return e-t*Math.floor(e/t)}function h(){var e,t,r,o,a;e=Math.sin(m),t=Math.cos(m),r=-i-f,o=Math.sin(r),a=Math.cos(r),l.set(n*a*t,n*e,n*o*t),c&&(c.intensity=1.5*Math.max(0,1-Math.exp(-((Math.PI/1.95-Math.abs(i-m))/1.5))),c.position.copy(l).normalize().multiplyScalar(100))}var c,l,u=new e.Sky,d=this,p=r,f=Math.PI/6,m=Math.PI/6;for(u.mesh.name="sky",r.add(u.mesh);!(p instanceof e.Scene)&&p.parent;)p=p.parent;return c=p.getObjectByName("directional-light"),this.setOptions=function(t){t&&(o.forEach(function(e){var r=t[e];void 0!==r&&(r=parseFloat(r),isNaN(r)||(u.uniforms[e].value=r))}),t.sunPosition instanceof e.Vector3?u.uniforms.sunPosition.value.copy(t.sunPosition):Array.isArray(t.sunPosition)?u.uniforms.sunPosition.value.set(u.uniforms.sunPosition.value,t.sunPosition):(d.altitude=t.altitude,d.azimuth=t.azimuth))},Object.defineProperty(this,"azimuth",{set:function(e){e=s(parseFloat(e),t),isNaN(e)||e===f||(f=e,h())},get:function(){return f}}),Object.defineProperty(this,"altitude",{set:function(e){e=s(parseFloat(e),t),isNaN(e)||e===m||(m=e,h())},get:function(){return m}}),this.setAltitude=function(e){return d.altitude=e,this},this.setAzimuth=function(e){return d.azimuth=e,this},l=u.uniforms.sunPosition.value,h(),this.setOptions(a),u.mesh}}()},function(e,t,r){e.exports=function(){"use strict";var e=(r(10),r(33));return r(38),function(t,r){var i,n,o,a=t;for("string"==typeof r||Array.isArray(r)?n=r:r&&(n=r.src);!(a instanceof e.Scene)&&a.parent;)a=a.parent;return o=a.getObjectByName("audio-listener"),i=new e.Audio(o),i.load(n),this.start=i.start.bind(i),this.volume=i.volume.bind(i),t.add(i),i}}()},function(e,t,r){e.exports=function(){"use strict";var e=r(10),t=r(33);return function(r,i){var n,o;return n=new t.SphereGeometry(void 0===i.radius?.5:i.radius,void 0===i.widthSegments?16:i.widthSegments,void 0===i.heightSegments?12:i.heightSegments,i.phiStart,i.phiLength,i.thetaStart,i.thetaLength),o=new t.Mesh(n,e.standard()),o.name="sphere",r.add(o),o}}()},function(e,t,r){e.exports=function(){"use strict";var e=r(33),t=/(\d+)px/i,i=/[\n\r]/,n=/[\t ]/,o=Math.log(2),a=new e.PlaneBufferGeometry(1,1);return function(r,s){function h(e){return Math.pow(2,Math.ceil(Math.log(e)/o))}function c(e){this.spaceWidth=p.measureText(" ").width,this.totalWidth=0,this.wordsWidth=0,this.words=[],this.wrap=!1,e&&this.add(e)}function l(){var e,r,o,a,l,u,m,v,w,A,M,S,E,T,C="",P=[],L=getComputedStyle(document.body).direction,_=parseFloat(b.resolution)||256,R=!1,B=0;if(u=parseFloat(b.wrap),(isNaN(u)||0>u)&&(u=5),T=_*u,p.font=b.font,a=t.exec(p.font),m=parseFloat(a&&a[1])||50,w=1.5*m,o=new c,e=0===b.text?"0":String(b.text||""),u){for(e=e.trim()+" ",A=0;AE?o?o.add(C):o=new c(C):!o&&c.measure(C)>=T?(P.push(new c(C)),C="",o=new c,R=!0):(o.wrap=!0,P.push(o),o=new c(C),R=!0),C=""):C+=r;o&&P.push(o)}else P.push(new c(e));T&&R||(T=P.reduce(function(e,t){return Math.max(e,t.totalWidth)},0)),T=Math.min(T,2048),B=P.length*w,s&&s.mipmap===!1?(d.width=T,d.height=B):(d.width=h(T),d.height=h(B)),f.scale.set(d.width/_,d.height/_,1),p.font=b.font,p.textAlign=b.textAlign,p.textBaseline=b.textBaseline,p.direction=b.direction,p.fillStyle=b.fillStyle,v=(d.width-T)/2,S=(d.height-B)/2+w/2,l=""===p.direction||"inherit"===p.direction,M="center"===p.textAlign?d.width/2:"right"===p.textAlign||"end"===p.textAlign&&("ltr"===p.direction||l&&"ltr"===L)||"start"===p.textAlign&&("rtl"===p.direction||l&&"rtl"===L)?d.width-v:v,P.forEach(function(e){var t,r;"justify"===b.textAlign&&e.wrap&&e.words.length>1?(t=M,r=(T-e.wordsWidth)/(e.words.length-1),e.words.forEach(function(e){p.fillText(e,t,S),t+=r+c.measure(e)})):p.fillText(e.text(),M,S),S+=w}),y=T/_,x=P.length*w/_,g.needsUpdate=!0,f.name=e.trim()}var u,d,p,f,m,g,v=this,y=0,x=0,b={text:"",font:"80px sans-serif",textAlign:"center",textBaseline:"",direction:"",fillStyle:"white",resolution:256,wrap:5};return c.prototype.text=function(){return this.words.join(" ")},c.prototype.add=function(e){var t;this.words.length&&(this.totalWidth+=this.spaceWidth),this.words.push(e),t=c.measure(e),this.totalWidth+=t,this.wordsWidth+=t},c.prototype.measure=function(e){var t=this.totalWidth;return e&&(t+=c.measure(e),this.words.length&&(t+=this.spaceWidth)),t},c.measure=function(e){return p.measureText(e).width},d=document.createElement("canvas"),p=d.getContext("2d"),g=new e.Texture(d),d.width===h(d.width)&&d.height===h(d.height)&&(g.minFilter=e.LinearMipMapLinearFilter,g.generateMipmaps=!0),u=new e.MeshBasicMaterial({side:e.DoubleSide,transparent:!0,map:g}),f=new e.Mesh(a,u),m=new e.Object3D,m.name="text",m.add(f),r.add(m),"string"==typeof s?b.text=s:s&&Object.keys(b).forEach(function(e){b[e]=s[e]||b[e]}),l(),Object.keys(b).forEach(function(e){Object.defineProperty(v,e,{get:function(){return b[e]},set:function(t){b[e]=t,l()}})}),Object.defineProperty(v,"width",{get:function(){return y}}),Object.defineProperty(v,"height",{get:function(){return x}}),this.material=u,m}}()},function(e,t,r){e.exports=function(){"use strict";var e=r(10),t=r(33);return function(r,i){var n,o;return n=new t.TorusGeometry(void 0===i.radius?.5:i.radius,void 0===i.tube?.125:i.tube,void 0===i.radialSegments?12:i.radialSegments,void 0===i.tubularSegments?16:i.tubularSegments,i.arc),o=new t.Mesh(n,e.standard()),o.name="torus",r.add(o),o}}()},function(e,t,r){e.exports=function(){"use strict";var e,t=r(33),i=r(35),n=/\.(webm|ogg|ogv|m4v|mp4|mov)/i;return e=function(r,o){function a(e){return e>0&&0===(e&e-1)}function s(){var e=p.videoWidth/p.videoHeight;o&&o.sphere||l.applyMatrix((new t.Matrix4).makeScale(1,m/e,1)),m=e,p.videoWidth===p.videoHeight&&a(p.videoWidth)&&a(p.videoHeight)?(f.minFilter=t.LinearMipMapLinearFilter,f.generateMipmaps=!0):(f.minFilter=t.LinearFilter,f.generateMipmaps=!1),u.map=f,u.visible=!0,g&&p.play()}function h(e){e.forEach(function(e){var t,r,o;if(e){if(t=i.exec(e),t&&(t[1]&&t[1]!==window.location.hostΩ||t[2]&&t[2]!==window.location.port)){if(void 0===p.crossOrigin)return void console.warn("Browser does not support cross-origin video");p.crossOrigin="anonymous"}o=document.createElement("source"),o.src=e,r=n.exec(e),(!r||p.canPlayType("video/"+r[1]))&&p.appendChild(o)}})}function c(){document.hidden||document.mozHidden||document.msHidden||document.webkitHidden?p.pause():g&&p.play()}var l,u,d,p,f,m=1,g=!1,v=this;return p=document.createElement("video"),p.loop=!0,p.addEventListener("loadedmetadata",s,!1),Array.isArray(o)&&h(o),"string"==typeof o?h([o]):"string"==typeof o.src?h([o.src]):Array.isArray(o.src)&&h(o.src),p.load(),f=new t.VideoTexture(p,t.UVMapping),f.format=t.RGBFormat,o&&o.sphere?(l=new t.SphereGeometry(994,60,60,(parseFloat(o.phiStart)||0)*Math.PI*2,(parseFloat(o.phiLength)||1)*Math.PI*2,(parseFloat(o.thetaStart)||0)*Math.PI,(parseFloat(o.thetaLength)||1)*Math.PI),l.applyMatrix((new t.Matrix4).makeScale(-1,1,1)),l.applyMatrix((new t.Matrix4).makeRotationY(-Math.PI/2))):l=new t.PlaneBufferGeometry(1,1,8),u=new t.MeshBasicMaterial({side:t.DoubleSide,map:f,visible:!1}),d=new t.Mesh(l,u),o&&o.stereo&&("vertical"===o.stereo?f.repeat.y=.5:f.repeat.x=.5,d.userData.stereo=o.stereo),p.readyState&&s(),this.play=function(){return g=!0,p.play(),this},this.pause=function(){return g=!1,p.pause(),this},this.canPlayType=e.canPlayType,Object.defineProperty(this,"width",{get:function(){return p.videoWidth}}),Object.defineProperty(this,"height",{get:function(){return p.videoHeight}}),Object.defineProperty(this,"paused",{get:function(){return!g}}),Object.defineProperty(this,"volume",{get:function(){return p.volume},set:function(e){p.volume=e}}),Object.defineProperty(this,"muted",{get:function(){return p.muted},set:function(e){p.muted=e}}),Object.defineProperty(this,"duration",{get:function(){return p.duration||0}}),Object.defineProperty(this,"currentTime",{get:function(){return p.currentTime},set:function(e){p.readyState&&e=0&&(p.currentTime=e)}}),["loadedmetadata","play","pause","playing","progress"].forEach(function(e){p.addEventListener(e,v.emit.bind(v,e))}),p.addEventListener("error",function(e){p.error.code===window.MediaError.MEDIA_ERR_DECODE&&p.childNodes.length>1&&(u.visible=!1,p.removeChild(p.firstChild),p.load()),v.emit(event,e)},!0),this.element=p,window.addEventListener("touchstart",function y(){g?p.play():p.load(),window.removeEventListener("touchstart",y,!0)},!0),document.addEventListener("visibilitychange",c),document.addEventListener("mozvisibilitychange",c),document.addEventListener("msvisibilitychange",c),document.addEventListener("webkitvisibilitychange",c),d.name="video",r.add(d),d},e.canPlayType=function(e){var t=document.createElement("video");return t.canPlayType(e)},e}()},function(e,t,r){var i=i||{},n={REVISION:"71"};e.exports=n,void 0===Math.sign&&(Math.sign=function(e){return 0>e?-1:e>0?1:+e}),n.log=function(){console.log.apply(console,arguments)},n.warn=function(){console.warn.apply(console,arguments)},n.error=function(){console.error.apply(console,arguments)},n.MOUSE={LEFT:0,MIDDLE:1,RIGHT:2},n.CullFaceNone=0,n.CullFaceBack=1,n.CullFaceFront=2,n.CullFaceFrontBack=3,n.FrontFaceDirectionCW=0,n.FrontFaceDirectionCCW=1,n.BasicShadowMap=0,n.PCFShadowMap=1,n.PCFSoftShadowMap=2,n.FrontSide=0,n.BackSide=1,n.DoubleSide=2,n.NoShading=0,n.FlatShading=1,n.SmoothShading=2,n.NoColors=0,n.FaceColors=1,n.VertexColors=2,n.NoBlending=0,n.NormalBlending=1,n.AdditiveBlending=2,n.SubtractiveBlending=3,n.MultiplyBlending=4,n.CustomBlending=5,n.AddEquation=100,n.SubtractEquation=101,n.ReverseSubtractEquation=102,n.MinEquation=103,n.MaxEquation=104,n.ZeroFactor=200,n.OneFactor=201,n.SrcColorFactor=202,n.OneMinusSrcColorFactor=203,n.SrcAlphaFactor=204,n.OneMinusSrcAlphaFactor=205,n.DstAlphaFactor=206,n.OneMinusDstAlphaFactor=207,n.DstColorFactor=208,n.OneMinusDstColorFactor=209,n.SrcAlphaSaturateFactor=210,n.MultiplyOperation=0,n.MixOperation=1,n.AddOperation=2,n.UVMapping=300,n.CubeReflectionMapping=301,n.CubeRefractionMapping=302,n.EquirectangularReflectionMapping=303,n.EquirectangularRefractionMapping=304,n.SphericalReflectionMapping=305,n.RepeatWrapping=1e3,n.ClampToEdgeWrapping=1001,n.MirroredRepeatWrapping=1002,n.NearestFilter=1003,n.NearestMipMapNearestFilter=1004,n.NearestMipMapLinearFilter=1005,n.LinearFilter=1006,n.LinearMipMapNearestFilter=1007,n.LinearMipMapLinearFilter=1008,n.UnsignedByteType=1009,n.ByteType=1010,n.ShortType=1011,n.UnsignedShortType=1012,n.IntType=1013,n.UnsignedIntType=1014,n.FloatType=1015,n.HalfFloatType=1025,n.UnsignedShort4444Type=1016,n.UnsignedShort5551Type=1017,n.UnsignedShort565Type=1018,n.AlphaFormat=1019,n.RGBFormat=1020,n.RGBAFormat=1021,n.LuminanceFormat=1022,n.LuminanceAlphaFormat=1023,n.RGBEFormat=n.RGBAFormat,n.RGB_S3TC_DXT1_Format=2001,n.RGBA_S3TC_DXT1_Format=2002,n.RGBA_S3TC_DXT3_Format=2003,n.RGBA_S3TC_DXT5_Format=2004,n.RGB_PVRTC_4BPPV1_Format=2100,n.RGB_PVRTC_2BPPV1_Format=2101,n.RGBA_PVRTC_4BPPV1_Format=2102,n.RGBA_PVRTC_2BPPV1_Format=2103,n.Projector=function(){n.error("THREE.Projector has been moved to /examples/js/renderers/Projector.js."),this.projectVector=function(e,t){n.warn("THREE.Projector: .projectVector() is now vector.project()."),e.project(t)},this.unprojectVector=function(e,t){n.warn("THREE.Projector: .unprojectVector() is now vector.unproject()."),e.unproject(t)},this.pickingRay=function(e,t){n.error("THREE.Projector: .pickingRay() is now raycaster.setFromCamera().")}},n.CanvasRenderer=function(){n.error("THREE.CanvasRenderer has been moved to /examples/js/renderers/CanvasRenderer.js"),this.domElement=document.createElement("canvas"),this.clear=function(){},this.render=function(){},this.setClearColor=function(){},this.setSize=function(){}},n.Color=function(e){return 3===arguments.length?this.setRGB(arguments[0],arguments[1],arguments[2]):this.set(e)},n.Color.prototype={constructor:n.Color,r:1,g:1,b:1,set:function(e){return e instanceof n.Color?this.copy(e):"number"==typeof e?this.setHex(e):"string"==typeof e&&this.setStyle(e),this},setHex:function(e){return e=Math.floor(e),this.r=(e>>16&255)/255,this.g=(e>>8&255)/255,this.b=(255&e)/255,this},setRGB:function(e,t,r){return this.r=e,this.g=t,this.b=r,this},setHSL:function(e,t,r){if(0===t)this.r=this.g=this.b=r;else{var i=function(e,t,r){return 0>r&&(r+=1),r>1&&(r-=1),1/6>r?e+6*(t-e)*r:.5>r?t:2/3>r?e+6*(t-e)*(2/3-r):e},n=.5>=r?r*(1+t):r+t-r*t,o=2*r-n;this.r=i(o,n,e+1/3),this.g=i(o,n,e),this.b=i(o,n,e-1/3)}return this},setStyle:function(e){if(/^rgb\((\d+), ?(\d+), ?(\d+)\)$/i.test(e)){var t=/^rgb\((\d+), ?(\d+), ?(\d+)\)$/i.exec(e);return this.r=Math.min(255,parseInt(t[1],10))/255,this.g=Math.min(255,parseInt(t[2],10))/255,this.b=Math.min(255,parseInt(t[3],10))/255,this}if(/^rgb\((\d+)\%, ?(\d+)\%, ?(\d+)\%\)$/i.test(e)){var t=/^rgb\((\d+)\%, ?(\d+)\%, ?(\d+)\%\)$/i.exec(e);return this.r=Math.min(100,parseInt(t[1],10))/100,this.g=Math.min(100,parseInt(t[2],10))/100,this.b=Math.min(100,parseInt(t[3],10))/100,this}if(/^\#([0-9a-f]{6})$/i.test(e)){var t=/^\#([0-9a-f]{6})$/i.exec(e);return this.setHex(parseInt(t[1],16)),this}if(/^\#([0-9a-f])([0-9a-f])([0-9a-f])$/i.test(e)){var t=/^\#([0-9a-f])([0-9a-f])([0-9a-f])$/i.exec(e);return this.setHex(parseInt(t[1]+t[1]+t[2]+t[2]+t[3]+t[3],16)),this}return/^(\w+)$/i.test(e)?(this.setHex(n.ColorKeywords[e]),this):void 0},copy:function(e){return this.r=e.r,this.g=e.g,this.b=e.b,this},copyGammaToLinear:function(e,t){return void 0===t&&(t=2),this.r=Math.pow(e.r,t),this.g=Math.pow(e.g,t),this.b=Math.pow(e.b,t),this},copyLinearToGamma:function(e,t){void 0===t&&(t=2);var r=t>0?1/t:1;return this.r=Math.pow(e.r,r),this.g=Math.pow(e.g,r),this.b=Math.pow(e.b,r),this},convertGammaToLinear:function(){var e=this.r,t=this.g,r=this.b;return this.r=e*e,this.g=t*t,this.b=r*r,this},convertLinearToGamma:function(){return this.r=Math.sqrt(this.r),this.g=Math.sqrt(this.g),this.b=Math.sqrt(this.b),this},getHex:function(){return 255*this.r<<16^255*this.g<<8^255*this.b<<0},getHexString:function(){return("000000"+this.getHex().toString(16)).slice(-6)},getHSL:function(e){var t,r,i=e||{h:0,s:0,l:0},n=this.r,o=this.g,a=this.b,s=Math.max(n,o,a),h=Math.min(n,o,a),c=(h+s)/2;if(h===s)t=0,r=0;else{var l=s-h;switch(r=.5>=c?l/(s+h):l/(2-s-h),s){case n:t=(o-a)/l+(a>o?6:0);break;case o:t=(a-n)/l+2;break;case a:t=(n-o)/l+4}t/=6}return i.h=t,i.s=r,i.l=c,i},getStyle:function(){return"rgb("+(255*this.r|0)+","+(255*this.g|0)+","+(255*this.b|0)+")"},offsetHSL:function(e,t,r){var i=this.getHSL();return i.h+=e,i.s+=t,i.l+=r,this.setHSL(i.h,i.s,i.l),this},add:function(e){return this.r+=e.r,this.g+=e.g,this.b+=e.b,this},addColors:function(e,t){return this.r=e.r+t.r,this.g=e.g+t.g,this.b=e.b+t.b,this},addScalar:function(e){return this.r+=e,this.g+=e,this.b+=e,this},multiply:function(e){return this.r*=e.r,this.g*=e.g,this.b*=e.b,this},multiplyScalar:function(e){return this.r*=e,this.g*=e,this.b*=e,this},lerp:function(e,t){return this.r+=(e.r-this.r)*t,this.g+=(e.g-this.g)*t,this.b+=(e.b-this.b)*t,this},equals:function(e){return e.r===this.r&&e.g===this.g&&e.b===this.b},fromArray:function(e){return this.r=e[0],this.g=e[1],this.b=e[2],this},toArray:function(e,t){return void 0===e&&(e=[]),void 0===t&&(t=0),e[t]=this.r,e[t+1]=this.g,e[t+2]=this.b,e},clone:function(){return(new n.Color).setRGB(this.r,this.g,this.b)}},n.ColorKeywords={aliceblue:15792383,antiquewhite:16444375,aqua:65535,aquamarine:8388564,azure:15794175,beige:16119260,bisque:16770244,black:0,blanchedalmond:16772045,blue:255,blueviolet:9055202,brown:10824234,burlywood:14596231,cadetblue:6266528,chartreuse:8388352,chocolate:13789470,coral:16744272,cornflowerblue:6591981,cornsilk:16775388,crimson:14423100,cyan:65535,darkblue:139,darkcyan:35723,darkgoldenrod:12092939,darkgray:11119017,darkgreen:25600,darkgrey:11119017,darkkhaki:12433259,darkmagenta:9109643,darkolivegreen:5597999,darkorange:16747520,darkorchid:10040012,darkred:9109504,darksalmon:15308410,darkseagreen:9419919,darkslateblue:4734347,darkslategray:3100495,darkslategrey:3100495,darkturquoise:52945,darkviolet:9699539,deeppink:16716947,deepskyblue:49151,dimgray:6908265,dimgrey:6908265,dodgerblue:2003199,firebrick:11674146,floralwhite:16775920,forestgreen:2263842,fuchsia:16711935,gainsboro:14474460,ghostwhite:16316671,gold:16766720,goldenrod:14329120,gray:8421504,green:32768,greenyellow:11403055,grey:8421504,honeydew:15794160,hotpink:16738740,indianred:13458524,indigo:4915330,ivory:16777200,khaki:15787660,lavender:15132410,lavenderblush:16773365,lawngreen:8190976,lemonchiffon:16775885,lightblue:11393254,lightcoral:15761536,lightcyan:14745599,lightgoldenrodyellow:16448210,lightgray:13882323,lightgreen:9498256,lightgrey:13882323,lightpink:16758465,lightsalmon:16752762,lightseagreen:2142890,lightskyblue:8900346,lightslategray:7833753,lightslategrey:7833753,lightsteelblue:11584734,lightyellow:16777184,lime:65280,limegreen:3329330,linen:16445670,magenta:16711935,maroon:8388608,mediumaquamarine:6737322,mediumblue:205,mediumorchid:12211667,mediumpurple:9662683,mediumseagreen:3978097,mediumslateblue:8087790,mediumspringgreen:64154,mediumturquoise:4772300,mediumvioletred:13047173,midnightblue:1644912,mintcream:16121850,mistyrose:16770273,moccasin:16770229,navajowhite:16768685,navy:128,oldlace:16643558,olive:8421376,olivedrab:7048739,orange:16753920,orangered:16729344,orchid:14315734,palegoldenrod:15657130,palegreen:10025880,paleturquoise:11529966,palevioletred:14381203,papayawhip:16773077,peachpuff:16767673,peru:13468991,pink:16761035,plum:14524637,powderblue:11591910,purple:8388736,red:16711680,rosybrown:12357519,royalblue:4286945,saddlebrown:9127187,salmon:16416882,sandybrown:16032864,seagreen:3050327,seashell:16774638,sienna:10506797,silver:12632256,skyblue:8900331,slateblue:6970061,slategray:7372944,slategrey:7372944,snow:16775930,springgreen:65407,steelblue:4620980,tan:13808780,teal:32896,thistle:14204888,tomato:16737095,turquoise:4251856,violet:15631086,wheat:16113331,white:16777215,whitesmoke:16119285,yellow:16776960,yellowgreen:10145074},n.Quaternion=function(e,t,r,i){this._x=e||0,this._y=t||0,this._z=r||0,this._w=void 0!==i?i:1},n.Quaternion.prototype={constructor:n.Quaternion,_x:0,_y:0,_z:0,_w:0,get x(){return this._x},set x(e){this._x=e,this.onChangeCallback()},get y(){return this._y},set y(e){this._y=e,this.onChangeCallback()},get z(){return this._z},set z(e){this._z=e,this.onChangeCallback()},get w(){return this._w},set w(e){this._w=e,this.onChangeCallback()},set:function(e,t,r,i){return this._x=e,this._y=t,this._z=r,this._w=i,this.onChangeCallback(),this},copy:function(e){return this._x=e.x,this._y=e.y,this._z=e.z,this._w=e.w,this.onChangeCallback(),this},setFromEuler:function(e,t){if(e instanceof n.Euler==!1)throw new Error("THREE.Quaternion: .setFromEuler() now expects a Euler rotation rather than a Vector3 and order.");var r=Math.cos(e._x/2),i=Math.cos(e._y/2),o=Math.cos(e._z/2),a=Math.sin(e._x/2),s=Math.sin(e._y/2),h=Math.sin(e._z/2);return"XYZ"===e.order?(this._x=a*i*o+r*s*h,this._y=r*s*o-a*i*h,this._z=r*i*h+a*s*o,this._w=r*i*o-a*s*h):"YXZ"===e.order?(this._x=a*i*o+r*s*h,this._y=r*s*o-a*i*h,this._z=r*i*h-a*s*o,this._w=r*i*o+a*s*h):"ZXY"===e.order?(this._x=a*i*o-r*s*h,this._y=r*s*o+a*i*h,this._z=r*i*h+a*s*o,this._w=r*i*o-a*s*h):"ZYX"===e.order?(this._x=a*i*o-r*s*h,this._y=r*s*o+a*i*h,this._z=r*i*h-a*s*o,this._w=r*i*o+a*s*h):"YZX"===e.order?(this._x=a*i*o+r*s*h,this._y=r*s*o+a*i*h,this._z=r*i*h-a*s*o,this._w=r*i*o-a*s*h):"XZY"===e.order&&(this._x=a*i*o-r*s*h,this._y=r*s*o-a*i*h,this._z=r*i*h+a*s*o,this._w=r*i*o+a*s*h),t!==!1&&this.onChangeCallback(),this},setFromAxisAngle:function(e,t){var r=t/2,i=Math.sin(r);return this._x=e.x*i,this._y=e.y*i,this._z=e.z*i,this._w=Math.cos(r),this.onChangeCallback(),this},setFromRotationMatrix:function(e){var t,r=e.elements,i=r[0],n=r[4],o=r[8],a=r[1],s=r[5],h=r[9],c=r[2],l=r[6],u=r[10],d=i+s+u;return d>0?(t=.5/Math.sqrt(d+1),this._w=.25/t,this._x=(l-h)*t,this._y=(o-c)*t,this._z=(a-n)*t):i>s&&i>u?(t=2*Math.sqrt(1+i-s-u),this._w=(l-h)/t,this._x=.25*t,this._y=(n+a)/t,this._z=(o+c)/t):s>u?(t=2*Math.sqrt(1+s-i-u),this._w=(o-c)/t,this._x=(n+a)/t,this._y=.25*t,this._z=(h+l)/t):(t=2*Math.sqrt(1+u-i-s),this._w=(a-n)/t,this._x=(o+c)/t,this._y=(h+l)/t,this._z=.25*t),this.onChangeCallback(),this},setFromUnitVectors:function(){var e,t,r=1e-6;return function(i,o){return void 0===e&&(e=new n.Vector3),t=i.dot(o)+1,r>t?(t=0,Math.abs(i.x)>Math.abs(i.z)?e.set(-i.y,i.x,0):e.set(0,-i.z,i.y)):e.crossVectors(i,o),this._x=e.x,this._y=e.y,this._z=e.z,this._w=t,this.normalize(),this}}(),inverse:function(){return this.conjugate().normalize(),this},conjugate:function(){return this._x*=-1,this._y*=-1,this._z*=-1,this.onChangeCallback(),this},dot:function(e){return this._x*e._x+this._y*e._y+this._z*e._z+this._w*e._w},lengthSq:function(){return this._x*this._x+this._y*this._y+this._z*this._z+this._w*this._w},length:function(){return Math.sqrt(this._x*this._x+this._y*this._y+this._z*this._z+this._w*this._w)},normalize:function(){var e=this.length();return 0===e?(this._x=0,this._y=0,this._z=0,this._w=1):(e=1/e,this._x=this._x*e,this._y=this._y*e,this._z=this._z*e,this._w=this._w*e),this.onChangeCallback(),this},multiply:function(e,t){return void 0!==t?(n.warn("THREE.Quaternion: .multiply() now only accepts one argument. Use .multiplyQuaternions( a, b ) instead."),this.multiplyQuaternions(e,t)):this.multiplyQuaternions(this,e)},multiplyQuaternions:function(e,t){var r=e._x,i=e._y,n=e._z,o=e._w,a=t._x,s=t._y,h=t._z,c=t._w;return this._x=r*c+o*a+i*h-n*s,this._y=i*c+o*s+n*a-r*h,this._z=n*c+o*h+r*s-i*a,this._w=o*c-r*a-i*s-n*h,this.onChangeCallback(),this},multiplyVector3:function(e){return n.warn("THREE.Quaternion: .multiplyVector3() has been removed. Use is now vector.applyQuaternion( quaternion ) instead."),e.applyQuaternion(this)},slerp:function(e,t){if(0===t)return this;if(1===t)return this.copy(e);var r=this._x,i=this._y,n=this._z,o=this._w,a=o*e._w+r*e._x+i*e._y+n*e._z;if(0>a?(this._w=-e._w,this._x=-e._x,this._y=-e._y,this._z=-e._z,a=-a):this.copy(e),a>=1)return this._w=o,this._x=r,this._y=i,this._z=n,this;var s=Math.acos(a),h=Math.sqrt(1-a*a);if(Math.abs(h)<.001)return this._w=.5*(o+this._w),this._x=.5*(r+this._x),this._y=.5*(i+this._y),this._z=.5*(n+this._z),this;var c=Math.sin((1-t)*s)/h,l=Math.sin(t*s)/h;return this._w=o*c+this._w*l,this._x=r*c+this._x*l,this._y=i*c+this._y*l,this._z=n*c+this._z*l,this.onChangeCallback(),this},equals:function(e){return e._x===this._x&&e._y===this._y&&e._z===this._z&&e._w===this._w},fromArray:function(e,t){return void 0===t&&(t=0),this._x=e[t],this._y=e[t+1],this._z=e[t+2],this._w=e[t+3],this.onChangeCallback(),this},toArray:function(e,t){return void 0===e&&(e=[]), +void 0===t&&(t=0),e[t]=this._x,e[t+1]=this._y,e[t+2]=this._z,e[t+3]=this._w,e},onChange:function(e){return this.onChangeCallback=e,this},onChangeCallback:function(){},clone:function(){return new n.Quaternion(this._x,this._y,this._z,this._w)}},n.Quaternion.slerp=function(e,t,r,i){return r.copy(e).slerp(t,i)},n.Vector2=function(e,t){this.x=e||0,this.y=t||0},n.Vector2.prototype={constructor:n.Vector2,set:function(e,t){return this.x=e,this.y=t,this},setX:function(e){return this.x=e,this},setY:function(e){return this.y=e,this},setComponent:function(e,t){switch(e){case 0:this.x=t;break;case 1:this.y=t;break;default:throw new Error("index is out of range: "+e)}},getComponent:function(e){switch(e){case 0:return this.x;case 1:return this.y;default:throw new Error("index is out of range: "+e)}},copy:function(e){return this.x=e.x,this.y=e.y,this},add:function(e,t){return void 0!==t?(n.warn("THREE.Vector2: .add() now only accepts one argument. Use .addVectors( a, b ) instead."),this.addVectors(e,t)):(this.x+=e.x,this.y+=e.y,this)},addScalar:function(e){return this.x+=e,this.y+=e,this},addVectors:function(e,t){return this.x=e.x+t.x,this.y=e.y+t.y,this},sub:function(e,t){return void 0!==t?(n.warn("THREE.Vector2: .sub() now only accepts one argument. Use .subVectors( a, b ) instead."),this.subVectors(e,t)):(this.x-=e.x,this.y-=e.y,this)},subScalar:function(e){return this.x-=e,this.y-=e,this},subVectors:function(e,t){return this.x=e.x-t.x,this.y=e.y-t.y,this},multiply:function(e){return this.x*=e.x,this.y*=e.y,this},multiplyScalar:function(e){return this.x*=e,this.y*=e,this},divide:function(e){return this.x/=e.x,this.y/=e.y,this},divideScalar:function(e){if(0!==e){var t=1/e;this.x*=t,this.y*=t}else this.x=0,this.y=0;return this},min:function(e){return this.x>e.x&&(this.x=e.x),this.y>e.y&&(this.y=e.y),this},max:function(e){return this.xt.x&&(this.x=t.x),this.yt.y&&(this.y=t.y),this},clampScalar:function(){var e,t;return function(r,i){return void 0===e&&(e=new n.Vector2,t=new n.Vector2),e.set(r,r),t.set(i,i),this.clamp(e,t)}}(),floor:function(){return this.x=Math.floor(this.x),this.y=Math.floor(this.y),this},ceil:function(){return this.x=Math.ceil(this.x),this.y=Math.ceil(this.y),this},round:function(){return this.x=Math.round(this.x),this.y=Math.round(this.y),this},roundToZero:function(){return this.x=this.x<0?Math.ceil(this.x):Math.floor(this.x),this.y=this.y<0?Math.ceil(this.y):Math.floor(this.y),this},negate:function(){return this.x=-this.x,this.y=-this.y,this},dot:function(e){return this.x*e.x+this.y*e.y},lengthSq:function(){return this.x*this.x+this.y*this.y},length:function(){return Math.sqrt(this.x*this.x+this.y*this.y)},normalize:function(){return this.divideScalar(this.length())},distanceTo:function(e){return Math.sqrt(this.distanceToSquared(e))},distanceToSquared:function(e){var t=this.x-e.x,r=this.y-e.y;return t*t+r*r},setLength:function(e){var t=this.length();return 0!==t&&e!==t&&this.multiplyScalar(e/t),this},lerp:function(e,t){return this.x+=(e.x-this.x)*t,this.y+=(e.y-this.y)*t,this},lerpVectors:function(e,t,r){return this.subVectors(t,e).multiplyScalar(r).add(e),this},equals:function(e){return e.x===this.x&&e.y===this.y},fromArray:function(e,t){return void 0===t&&(t=0),this.x=e[t],this.y=e[t+1],this},toArray:function(e,t){return void 0===e&&(e=[]),void 0===t&&(t=0),e[t]=this.x,e[t+1]=this.y,e},fromAttribute:function(e,t,r){return void 0===r&&(r=0),t=t*e.itemSize+r,this.x=e.array[t],this.y=e.array[t+1],this},clone:function(){return new n.Vector2(this.x,this.y)}},n.Vector3=function(e,t,r){this.x=e||0,this.y=t||0,this.z=r||0},n.Vector3.prototype={constructor:n.Vector3,set:function(e,t,r){return this.x=e,this.y=t,this.z=r,this},setX:function(e){return this.x=e,this},setY:function(e){return this.y=e,this},setZ:function(e){return this.z=e,this},setComponent:function(e,t){switch(e){case 0:this.x=t;break;case 1:this.y=t;break;case 2:this.z=t;break;default:throw new Error("index is out of range: "+e)}},getComponent:function(e){switch(e){case 0:return this.x;case 1:return this.y;case 2:return this.z;default:throw new Error("index is out of range: "+e)}},copy:function(e){return this.x=e.x,this.y=e.y,this.z=e.z,this},add:function(e,t){return void 0!==t?(n.warn("THREE.Vector3: .add() now only accepts one argument. Use .addVectors( a, b ) instead."),this.addVectors(e,t)):(this.x+=e.x,this.y+=e.y,this.z+=e.z,this)},addScalar:function(e){return this.x+=e,this.y+=e,this.z+=e,this},addVectors:function(e,t){return this.x=e.x+t.x,this.y=e.y+t.y,this.z=e.z+t.z,this},sub:function(e,t){return void 0!==t?(n.warn("THREE.Vector3: .sub() now only accepts one argument. Use .subVectors( a, b ) instead."),this.subVectors(e,t)):(this.x-=e.x,this.y-=e.y,this.z-=e.z,this)},subScalar:function(e){return this.x-=e,this.y-=e,this.z-=e,this},subVectors:function(e,t){return this.x=e.x-t.x,this.y=e.y-t.y,this.z=e.z-t.z,this},multiply:function(e,t){return void 0!==t?(n.warn("THREE.Vector3: .multiply() now only accepts one argument. Use .multiplyVectors( a, b ) instead."),this.multiplyVectors(e,t)):(this.x*=e.x,this.y*=e.y,this.z*=e.z,this)},multiplyScalar:function(e){return this.x*=e,this.y*=e,this.z*=e,this},multiplyVectors:function(e,t){return this.x=e.x*t.x,this.y=e.y*t.y,this.z=e.z*t.z,this},applyEuler:function(){var e;return function(t){return t instanceof n.Euler==!1&&n.error("THREE.Vector3: .applyEuler() now expects a Euler rotation rather than a Vector3 and order."),void 0===e&&(e=new n.Quaternion),this.applyQuaternion(e.setFromEuler(t)),this}}(),applyAxisAngle:function(){var e;return function(t,r){return void 0===e&&(e=new n.Quaternion),this.applyQuaternion(e.setFromAxisAngle(t,r)),this}}(),applyMatrix3:function(e){var t=this.x,r=this.y,i=this.z,n=e.elements;return this.x=n[0]*t+n[3]*r+n[6]*i,this.y=n[1]*t+n[4]*r+n[7]*i,this.z=n[2]*t+n[5]*r+n[8]*i,this},applyMatrix4:function(e){var t=this.x,r=this.y,i=this.z,n=e.elements;return this.x=n[0]*t+n[4]*r+n[8]*i+n[12],this.y=n[1]*t+n[5]*r+n[9]*i+n[13],this.z=n[2]*t+n[6]*r+n[10]*i+n[14],this},applyProjection:function(e){var t=this.x,r=this.y,i=this.z,n=e.elements,o=1/(n[3]*t+n[7]*r+n[11]*i+n[15]);return this.x=(n[0]*t+n[4]*r+n[8]*i+n[12])*o,this.y=(n[1]*t+n[5]*r+n[9]*i+n[13])*o,this.z=(n[2]*t+n[6]*r+n[10]*i+n[14])*o,this},applyQuaternion:function(e){var t=this.x,r=this.y,i=this.z,n=e.x,o=e.y,a=e.z,s=e.w,h=s*t+o*i-a*r,c=s*r+a*t-n*i,l=s*i+n*r-o*t,u=-n*t-o*r-a*i;return this.x=h*s+u*-n+c*-a-l*-o,this.y=c*s+u*-o+l*-n-h*-a,this.z=l*s+u*-a+h*-o-c*-n,this},project:function(){var e;return function(t){return void 0===e&&(e=new n.Matrix4),e.multiplyMatrices(t.projectionMatrix,e.getInverse(t.matrixWorld)),this.applyProjection(e)}}(),unproject:function(){var e;return function(t){return void 0===e&&(e=new n.Matrix4),e.multiplyMatrices(t.matrixWorld,e.getInverse(t.projectionMatrix)),this.applyProjection(e)}}(),transformDirection:function(e){var t=this.x,r=this.y,i=this.z,n=e.elements;return this.x=n[0]*t+n[4]*r+n[8]*i,this.y=n[1]*t+n[5]*r+n[9]*i,this.z=n[2]*t+n[6]*r+n[10]*i,this.normalize(),this},divide:function(e){return this.x/=e.x,this.y/=e.y,this.z/=e.z,this},divideScalar:function(e){if(0!==e){var t=1/e;this.x*=t,this.y*=t,this.z*=t}else this.x=0,this.y=0,this.z=0;return this},min:function(e){return this.x>e.x&&(this.x=e.x),this.y>e.y&&(this.y=e.y),this.z>e.z&&(this.z=e.z),this},max:function(e){return this.xt.x&&(this.x=t.x),this.yt.y&&(this.y=t.y),this.zt.z&&(this.z=t.z),this},clampScalar:function(){var e,t;return function(r,i){return void 0===e&&(e=new n.Vector3,t=new n.Vector3),e.set(r,r,r),t.set(i,i,i),this.clamp(e,t)}}(),floor:function(){return this.x=Math.floor(this.x),this.y=Math.floor(this.y),this.z=Math.floor(this.z),this},ceil:function(){return this.x=Math.ceil(this.x),this.y=Math.ceil(this.y),this.z=Math.ceil(this.z),this},round:function(){return this.x=Math.round(this.x),this.y=Math.round(this.y),this.z=Math.round(this.z),this},roundToZero:function(){return this.x=this.x<0?Math.ceil(this.x):Math.floor(this.x),this.y=this.y<0?Math.ceil(this.y):Math.floor(this.y),this.z=this.z<0?Math.ceil(this.z):Math.floor(this.z),this},negate:function(){return this.x=-this.x,this.y=-this.y,this.z=-this.z,this},dot:function(e){return this.x*e.x+this.y*e.y+this.z*e.z},lengthSq:function(){return this.x*this.x+this.y*this.y+this.z*this.z},length:function(){return Math.sqrt(this.x*this.x+this.y*this.y+this.z*this.z)},lengthManhattan:function(){return Math.abs(this.x)+Math.abs(this.y)+Math.abs(this.z)},normalize:function(){return this.divideScalar(this.length())},setLength:function(e){var t=this.length();return 0!==t&&e!==t&&this.multiplyScalar(e/t),this},lerp:function(e,t){return this.x+=(e.x-this.x)*t,this.y+=(e.y-this.y)*t,this.z+=(e.z-this.z)*t,this},lerpVectors:function(e,t,r){return this.subVectors(t,e).multiplyScalar(r).add(e),this},cross:function(e,t){if(void 0!==t)return n.warn("THREE.Vector3: .cross() now only accepts one argument. Use .crossVectors( a, b ) instead."),this.crossVectors(e,t);var r=this.x,i=this.y,o=this.z;return this.x=i*e.z-o*e.y,this.y=o*e.x-r*e.z,this.z=r*e.y-i*e.x,this},crossVectors:function(e,t){var r=e.x,i=e.y,n=e.z,o=t.x,a=t.y,s=t.z;return this.x=i*s-n*a,this.y=n*o-r*s,this.z=r*a-i*o,this},projectOnVector:function(){var e,t;return function(r){return void 0===e&&(e=new n.Vector3),e.copy(r).normalize(),t=this.dot(e),this.copy(e).multiplyScalar(t)}}(),projectOnPlane:function(){var e;return function(t){return void 0===e&&(e=new n.Vector3),e.copy(this).projectOnVector(t),this.sub(e)}}(),reflect:function(){var e;return function(t){return void 0===e&&(e=new n.Vector3),this.sub(e.copy(t).multiplyScalar(2*this.dot(t)))}}(),angleTo:function(e){var t=this.dot(e)/(this.length()*e.length());return Math.acos(n.Math.clamp(t,-1,1))},distanceTo:function(e){return Math.sqrt(this.distanceToSquared(e))},distanceToSquared:function(e){var t=this.x-e.x,r=this.y-e.y,i=this.z-e.z;return t*t+r*r+i*i},setEulerFromRotationMatrix:function(e,t){n.error("THREE.Vector3: .setEulerFromRotationMatrix() has been removed. Use Euler.setFromRotationMatrix() instead.")},setEulerFromQuaternion:function(e,t){n.error("THREE.Vector3: .setEulerFromQuaternion() has been removed. Use Euler.setFromQuaternion() instead.")},getPositionFromMatrix:function(e){return n.warn("THREE.Vector3: .getPositionFromMatrix() has been renamed to .setFromMatrixPosition()."),this.setFromMatrixPosition(e)},getScaleFromMatrix:function(e){return n.warn("THREE.Vector3: .getScaleFromMatrix() has been renamed to .setFromMatrixScale()."),this.setFromMatrixScale(e)},getColumnFromMatrix:function(e,t){return n.warn("THREE.Vector3: .getColumnFromMatrix() has been renamed to .setFromMatrixColumn()."),this.setFromMatrixColumn(e,t)},setFromMatrixPosition:function(e){return this.x=e.elements[12],this.y=e.elements[13],this.z=e.elements[14],this},setFromMatrixScale:function(e){var t=this.set(e.elements[0],e.elements[1],e.elements[2]).length(),r=this.set(e.elements[4],e.elements[5],e.elements[6]).length(),i=this.set(e.elements[8],e.elements[9],e.elements[10]).length();return this.x=t,this.y=r,this.z=i,this},setFromMatrixColumn:function(e,t){var r=4*e,i=t.elements;return this.x=i[r],this.y=i[r+1],this.z=i[r+2],this},equals:function(e){return e.x===this.x&&e.y===this.y&&e.z===this.z},fromArray:function(e,t){return void 0===t&&(t=0),this.x=e[t],this.y=e[t+1],this.z=e[t+2],this},toArray:function(e,t){return void 0===e&&(e=[]),void 0===t&&(t=0),e[t]=this.x,e[t+1]=this.y,e[t+2]=this.z,e},fromAttribute:function(e,t,r){return void 0===r&&(r=0),t=t*e.itemSize+r,this.x=e.array[t],this.y=e.array[t+1],this.z=e.array[t+2],this},clone:function(){return new n.Vector3(this.x,this.y,this.z)}},n.Vector4=function(e,t,r,i){this.x=e||0,this.y=t||0,this.z=r||0,this.w=void 0!==i?i:1},n.Vector4.prototype={constructor:n.Vector4,set:function(e,t,r,i){return this.x=e,this.y=t,this.z=r,this.w=i,this},setX:function(e){return this.x=e,this},setY:function(e){return this.y=e,this},setZ:function(e){return this.z=e,this},setW:function(e){return this.w=e,this},setComponent:function(e,t){switch(e){case 0:this.x=t;break;case 1:this.y=t;break;case 2:this.z=t;break;case 3:this.w=t;break;default:throw new Error("index is out of range: "+e)}},getComponent:function(e){switch(e){case 0:return this.x;case 1:return this.y;case 2:return this.z;case 3:return this.w;default:throw new Error("index is out of range: "+e)}},copy:function(e){return this.x=e.x,this.y=e.y,this.z=e.z,this.w=void 0!==e.w?e.w:1,this},add:function(e,t){return void 0!==t?(n.warn("THREE.Vector4: .add() now only accepts one argument. Use .addVectors( a, b ) instead."),this.addVectors(e,t)):(this.x+=e.x,this.y+=e.y,this.z+=e.z,this.w+=e.w,this)},addScalar:function(e){return this.x+=e,this.y+=e,this.z+=e,this.w+=e,this},addVectors:function(e,t){return this.x=e.x+t.x,this.y=e.y+t.y,this.z=e.z+t.z,this.w=e.w+t.w,this},sub:function(e,t){return void 0!==t?(n.warn("THREE.Vector4: .sub() now only accepts one argument. Use .subVectors( a, b ) instead."),this.subVectors(e,t)):(this.x-=e.x,this.y-=e.y,this.z-=e.z,this.w-=e.w,this)},subScalar:function(e){return this.x-=e,this.y-=e,this.z-=e,this.w-=e,this},subVectors:function(e,t){return this.x=e.x-t.x,this.y=e.y-t.y,this.z=e.z-t.z,this.w=e.w-t.w,this},multiplyScalar:function(e){return this.x*=e,this.y*=e,this.z*=e,this.w*=e,this},applyMatrix4:function(e){var t=this.x,r=this.y,i=this.z,n=this.w,o=e.elements;return this.x=o[0]*t+o[4]*r+o[8]*i+o[12]*n,this.y=o[1]*t+o[5]*r+o[9]*i+o[13]*n,this.z=o[2]*t+o[6]*r+o[10]*i+o[14]*n,this.w=o[3]*t+o[7]*r+o[11]*i+o[15]*n,this},divideScalar:function(e){if(0!==e){var t=1/e;this.x*=t,this.y*=t,this.z*=t,this.w*=t}else this.x=0,this.y=0,this.z=0,this.w=1;return this},setAxisAngleFromQuaternion:function(e){this.w=2*Math.acos(e.w);var t=Math.sqrt(1-e.w*e.w);return 1e-4>t?(this.x=1,this.y=0,this.z=0):(this.x=e.x/t,this.y=e.y/t,this.z=e.z/t),this},setAxisAngleFromRotationMatrix:function(e){var t,r,i,n,o=.01,a=.1,s=e.elements,h=s[0],c=s[4],l=s[8],u=s[1],d=s[5],p=s[9],f=s[2],m=s[6],g=s[10];if(Math.abs(c-u)y&&v>x?o>v?(r=0,i=.707106781,n=.707106781):(r=Math.sqrt(v),i=b/r,n=w/r):y>x?o>y?(r=.707106781,i=0,n=.707106781):(i=Math.sqrt(y),r=b/i,n=A/i):o>x?(r=.707106781,i=.707106781,n=0):(n=Math.sqrt(x),r=w/n,i=A/n),this.set(r,i,n,t),this}var M=Math.sqrt((m-p)*(m-p)+(l-f)*(l-f)+(u-c)*(u-c));return Math.abs(M)<.001&&(M=1),this.x=(m-p)/M,this.y=(l-f)/M,this.z=(u-c)/M,this.w=Math.acos((h+d+g-1)/2),this},min:function(e){return this.x>e.x&&(this.x=e.x),this.y>e.y&&(this.y=e.y),this.z>e.z&&(this.z=e.z),this.w>e.w&&(this.w=e.w),this},max:function(e){return this.xt.x&&(this.x=t.x),this.yt.y&&(this.y=t.y),this.zt.z&&(this.z=t.z),this.wt.w&&(this.w=t.w),this},clampScalar:function(){var e,t;return function(r,i){return void 0===e&&(e=new n.Vector4,t=new n.Vector4),e.set(r,r,r,r),t.set(i,i,i,i),this.clamp(e,t)}}(),floor:function(){return this.x=Math.floor(this.x),this.y=Math.floor(this.y),this.z=Math.floor(this.z),this.w=Math.floor(this.w),this},ceil:function(){return this.x=Math.ceil(this.x),this.y=Math.ceil(this.y),this.z=Math.ceil(this.z),this.w=Math.ceil(this.w),this},round:function(){return this.x=Math.round(this.x),this.y=Math.round(this.y),this.z=Math.round(this.z),this.w=Math.round(this.w),this},roundToZero:function(){return this.x=this.x<0?Math.ceil(this.x):Math.floor(this.x),this.y=this.y<0?Math.ceil(this.y):Math.floor(this.y),this.z=this.z<0?Math.ceil(this.z):Math.floor(this.z),this.w=this.w<0?Math.ceil(this.w):Math.floor(this.w),this},negate:function(){return this.x=-this.x,this.y=-this.y,this.z=-this.z,this.w=-this.w,this},dot:function(e){return this.x*e.x+this.y*e.y+this.z*e.z+this.w*e.w},lengthSq:function(){return this.x*this.x+this.y*this.y+this.z*this.z+this.w*this.w},length:function(){return Math.sqrt(this.x*this.x+this.y*this.y+this.z*this.z+this.w*this.w)},lengthManhattan:function(){return Math.abs(this.x)+Math.abs(this.y)+Math.abs(this.z)+Math.abs(this.w)},normalize:function(){return this.divideScalar(this.length())},setLength:function(e){var t=this.length();return 0!==t&&e!==t&&this.multiplyScalar(e/t),this},lerp:function(e,t){return this.x+=(e.x-this.x)*t,this.y+=(e.y-this.y)*t,this.z+=(e.z-this.z)*t,this.w+=(e.w-this.w)*t,this},lerpVectors:function(e,t,r){return this.subVectors(t,e).multiplyScalar(r).add(e),this},equals:function(e){return e.x===this.x&&e.y===this.y&&e.z===this.z&&e.w===this.w},fromArray:function(e,t){return void 0===t&&(t=0),this.x=e[t],this.y=e[t+1],this.z=e[t+2],this.w=e[t+3],this},toArray:function(e,t){return void 0===e&&(e=[]),void 0===t&&(t=0),e[t]=this.x,e[t+1]=this.y,e[t+2]=this.z,e[t+3]=this.w,e},fromAttribute:function(e,t,r){return void 0===r&&(r=0),t=t*e.itemSize+r,this.x=e.array[t],this.y=e.array[t+1],this.z=e.array[t+2],this.w=e.array[t+3],this},clone:function(){return new n.Vector4(this.x,this.y,this.z,this.w)}},n.Euler=function(e,t,r,i){this._x=e||0,this._y=t||0,this._z=r||0,this._order=i||n.Euler.DefaultOrder},n.Euler.RotationOrders=["XYZ","YZX","ZXY","XZY","YXZ","ZYX"],n.Euler.DefaultOrder="XYZ",n.Euler.prototype={constructor:n.Euler,_x:0,_y:0,_z:0,_order:n.Euler.DefaultOrder,get x(){return this._x},set x(e){this._x=e,this.onChangeCallback()},get y(){return this._y},set y(e){this._y=e,this.onChangeCallback()},get z(){return this._z},set z(e){this._z=e,this.onChangeCallback()},get order(){return this._order},set order(e){this._order=e,this.onChangeCallback()},set:function(e,t,r,i){return this._x=e,this._y=t,this._z=r,this._order=i||this._order,this.onChangeCallback(),this},copy:function(e){return this._x=e._x,this._y=e._y,this._z=e._z,this._order=e._order,this.onChangeCallback(),this},setFromRotationMatrix:function(e,t,r){var i=n.Math.clamp,o=e.elements,a=o[0],s=o[4],h=o[8],c=o[1],l=o[5],u=o[9],d=o[2],p=o[6],f=o[10];return t=t||this._order,"XYZ"===t?(this._y=Math.asin(i(h,-1,1)),Math.abs(h)<.99999?(this._x=Math.atan2(-u,f),this._z=Math.atan2(-s,a)):(this._x=Math.atan2(p,l),this._z=0)):"YXZ"===t?(this._x=Math.asin(-i(u,-1,1)),Math.abs(u)<.99999?(this._y=Math.atan2(h,f),this._z=Math.atan2(c,l)):(this._y=Math.atan2(-d,a),this._z=0)):"ZXY"===t?(this._x=Math.asin(i(p,-1,1)),Math.abs(p)<.99999?(this._y=Math.atan2(-d,f),this._z=Math.atan2(-s,l)):(this._y=0,this._z=Math.atan2(c,a))):"ZYX"===t?(this._y=Math.asin(-i(d,-1,1)),Math.abs(d)<.99999?(this._x=Math.atan2(p,f),this._z=Math.atan2(c,a)):(this._x=0,this._z=Math.atan2(-s,l))):"YZX"===t?(this._z=Math.asin(i(c,-1,1)),Math.abs(c)<.99999?(this._x=Math.atan2(-u,l),this._y=Math.atan2(-d,a)):(this._x=0,this._y=Math.atan2(h,f))):"XZY"===t?(this._z=Math.asin(-i(s,-1,1)),Math.abs(s)<.99999?(this._x=Math.atan2(p,l),this._y=Math.atan2(h,a)):(this._x=Math.atan2(-u,f),this._y=0)):n.warn("THREE.Euler: .setFromRotationMatrix() given unsupported order: "+t),this._order=t,r!==!1&&this.onChangeCallback(),this},setFromQuaternion:function(){var e;return function(t,r,i){return void 0===e&&(e=new n.Matrix4),e.makeRotationFromQuaternion(t),this.setFromRotationMatrix(e,r,i),this}}(),setFromVector3:function(e,t){return this.set(e.x,e.y,e.z,t||this._order)},reorder:function(){var e=new n.Quaternion;return function(t){e.setFromEuler(this),this.setFromQuaternion(e,t)}}(),equals:function(e){return e._x===this._x&&e._y===this._y&&e._z===this._z&&e._order===this._order},fromArray:function(e){return this._x=e[0],this._y=e[1],this._z=e[2],void 0!==e[3]&&(this._order=e[3]),this.onChangeCallback(),this},toArray:function(e,t){return void 0===e&&(e=[]),void 0===t&&(t=0),e[t]=this._x,e[t+1]=this._y,e[t+2]=this._z,e[t+3]=this._order,e},toVector3:function(e){return e?e.set(this._x,this._y,this._z):new n.Vector3(this._x,this._y,this._z)},onChange:function(e){return this.onChangeCallback=e,this},onChangeCallback:function(){},clone:function(){return new n.Euler(this._x,this._y,this._z,this._order)}},n.Line3=function(e,t){this.start=void 0!==e?e:new n.Vector3,this.end=void 0!==t?t:new n.Vector3},n.Line3.prototype={constructor:n.Line3,set:function(e,t){return this.start.copy(e),this.end.copy(t),this},copy:function(e){return this.start.copy(e.start),this.end.copy(e.end),this},center:function(e){var t=e||new n.Vector3;return t.addVectors(this.start,this.end).multiplyScalar(.5)},delta:function(e){var t=e||new n.Vector3;return t.subVectors(this.end,this.start)},distanceSq:function(){return this.start.distanceToSquared(this.end)},distance:function(){return this.start.distanceTo(this.end)},at:function(e,t){var r=t||new n.Vector3;return this.delta(r).multiplyScalar(e).add(this.start)},closestPointToPointParameter:function(){var e=new n.Vector3,t=new n.Vector3;return function(r,i){e.subVectors(r,this.start),t.subVectors(this.end,this.start);var o=t.dot(t),a=t.dot(e),s=a/o;return i&&(s=n.Math.clamp(s,0,1)),s}}(),closestPointToPoint:function(e,t,r){var i=this.closestPointToPointParameter(e,t),o=r||new n.Vector3;return this.delta(o).multiplyScalar(i).add(this.start)},applyMatrix4:function(e){return this.start.applyMatrix4(e),this.end.applyMatrix4(e),this},equals:function(e){return e.start.equals(this.start)&&e.end.equals(this.end)},clone:function(){return(new n.Line3).copy(this)}},n.Box2=function(e,t){this.min=void 0!==e?e:new n.Vector2(1/0,1/0),this.max=void 0!==t?t:new n.Vector2(-(1/0),-(1/0))},n.Box2.prototype={constructor:n.Box2,set:function(e,t){return this.min.copy(e),this.max.copy(t),this},setFromPoints:function(e){this.makeEmpty();for(var t=0,r=e.length;r>t;t++)this.expandByPoint(e[t]);return this},setFromCenterAndSize:function(){var e=new n.Vector2;return function(t,r){var i=e.copy(r).multiplyScalar(.5);return this.min.copy(t).sub(i),this.max.copy(t).add(i),this}}(),copy:function(e){return this.min.copy(e.min),this.max.copy(e.max),this},makeEmpty:function(){return this.min.x=this.min.y=1/0,this.max.x=this.max.y=-(1/0),this},empty:function(){return this.max.xthis.max.x||e.ythis.max.y?!1:!0},containsBox:function(e){return this.min.x<=e.min.x&&e.max.x<=this.max.x&&this.min.y<=e.min.y&&e.max.y<=this.max.y?!0:!1},getParameter:function(e,t){var r=t||new n.Vector2;return r.set((e.x-this.min.x)/(this.max.x-this.min.x),(e.y-this.min.y)/(this.max.y-this.min.y))},isIntersectionBox:function(e){return e.max.xthis.max.x||e.max.ythis.max.y?!1:!0},clampPoint:function(e,t){var r=t||new n.Vector2;return r.copy(e).clamp(this.min,this.max)},distanceToPoint:function(){var e=new n.Vector2;return function(t){var r=e.copy(t).clamp(this.min,this.max);return r.sub(t).length()}}(),intersect:function(e){return this.min.max(e.min),this.max.min(e.max),this},union:function(e){return this.min.min(e.min),this.max.max(e.max),this},translate:function(e){return this.min.add(e),this.max.add(e),this},equals:function(e){return e.min.equals(this.min)&&e.max.equals(this.max)},clone:function(){return(new n.Box2).copy(this)}},n.Box3=function(e,t){this.min=void 0!==e?e:new n.Vector3(1/0,1/0,1/0),this.max=void 0!==t?t:new n.Vector3(-(1/0),-(1/0),-(1/0))},n.Box3.prototype={constructor:n.Box3,set:function(e,t){return this.min.copy(e),this.max.copy(t),this},setFromPoints:function(e){this.makeEmpty();for(var t=0,r=e.length;r>t;t++)this.expandByPoint(e[t]);return this},setFromCenterAndSize:function(){var e=new n.Vector3;return function(t,r){var i=e.copy(r).multiplyScalar(.5);return this.min.copy(t).sub(i),this.max.copy(t).add(i),this}}(),setFromObject:function(){var e=new n.Vector3;return function(t){var r=this;return t.updateMatrixWorld(!0),this.makeEmpty(),t.traverse(function(t){var i=t.geometry;if(void 0!==i)if(i instanceof n.Geometry)for(var o=i.vertices,a=0,s=o.length;s>a;a++)e.copy(o[a]),e.applyMatrix4(t.matrixWorld),r.expandByPoint(e);else if(i instanceof n.BufferGeometry&&void 0!==i.attributes.position)for(var h=i.attributes.position.array,a=0,s=h.length;s>a;a+=3)e.set(h[a],h[a+1],h[a+2]),e.applyMatrix4(t.matrixWorld),r.expandByPoint(e)}),this}}(),copy:function(e){return this.min.copy(e.min),this.max.copy(e.max),this},makeEmpty:function(){return this.min.x=this.min.y=this.min.z=1/0,this.max.x=this.max.y=this.max.z=-(1/0),this},empty:function(){return this.max.xthis.max.x||e.ythis.max.y||e.zthis.max.z?!1:!0},containsBox:function(e){return this.min.x<=e.min.x&&e.max.x<=this.max.x&&this.min.y<=e.min.y&&e.max.y<=this.max.y&&this.min.z<=e.min.z&&e.max.z<=this.max.z?!0:!1},getParameter:function(e,t){var r=t||new n.Vector3;return r.set((e.x-this.min.x)/(this.max.x-this.min.x),(e.y-this.min.y)/(this.max.y-this.min.y),(e.z-this.min.z)/(this.max.z-this.min.z))},isIntersectionBox:function(e){return e.max.xthis.max.x||e.max.ythis.max.y||e.max.zthis.max.z?!1:!0},clampPoint:function(e,t){var r=t||new n.Vector3;return r.copy(e).clamp(this.min,this.max)},distanceToPoint:function(){var e=new n.Vector3;return function(t){var r=e.copy(t).clamp(this.min,this.max);return r.sub(t).length()}}(),getBoundingSphere:function(){var e=new n.Vector3;return function(t){var r=t||new n.Sphere;return r.center=this.center(),r.radius=.5*this.size(e).length(),r}}(),intersect:function(e){return this.min.max(e.min),this.max.min(e.max),this},union:function(e){return this.min.min(e.min),this.max.max(e.max),this},applyMatrix4:function(){var e=[new n.Vector3,new n.Vector3,new n.Vector3,new n.Vector3,new n.Vector3,new n.Vector3,new n.Vector3,new n.Vector3];return function(t){return e[0].set(this.min.x,this.min.y,this.min.z).applyMatrix4(t),e[1].set(this.min.x,this.min.y,this.max.z).applyMatrix4(t),e[2].set(this.min.x,this.max.y,this.min.z).applyMatrix4(t),e[3].set(this.min.x,this.max.y,this.max.z).applyMatrix4(t),e[4].set(this.max.x,this.min.y,this.min.z).applyMatrix4(t),e[5].set(this.max.x,this.min.y,this.max.z).applyMatrix4(t),e[6].set(this.max.x,this.max.y,this.min.z).applyMatrix4(t),e[7].set(this.max.x,this.max.y,this.max.z).applyMatrix4(t),this.makeEmpty(),this.setFromPoints(e),this}}(),translate:function(e){return this.min.add(e),this.max.add(e),this},equals:function(e){return e.min.equals(this.min)&&e.max.equals(this.max)},clone:function(){return(new n.Box3).copy(this)}},n.Matrix3=function(){this.elements=new Float32Array([1,0,0,0,1,0,0,0,1]),arguments.length>0&&n.error("THREE.Matrix3: the constructor no longer reads arguments. use .set() instead.")},n.Matrix3.prototype={constructor:n.Matrix3,set:function(e,t,r,i,n,o,a,s,h){var c=this.elements;return c[0]=e,c[3]=t,c[6]=r,c[1]=i,c[4]=n,c[7]=o,c[2]=a,c[5]=s,c[8]=h,this},identity:function(){return this.set(1,0,0,0,1,0,0,0,1),this},copy:function(e){var t=e.elements;return this.set(t[0],t[3],t[6],t[1],t[4],t[7],t[2],t[5],t[8]),this},multiplyVector3:function(e){return n.warn("THREE.Matrix3: .multiplyVector3() has been removed. Use vector.applyMatrix3( matrix ) instead."),e.applyMatrix3(this)},multiplyVector3Array:function(e){return n.warn("THREE.Matrix3: .multiplyVector3Array() has been renamed. Use matrix.applyToVector3Array( array ) instead."),this.applyToVector3Array(e)},applyToVector3Array:function(){var e=new n.Vector3;return function(t,r,i){void 0===r&&(r=0),void 0===i&&(i=t.length);for(var n=0,o=r;i>n;n+=3,o+=3)e.x=t[o],e.y=t[o+1],e.z=t[o+2],e.applyMatrix3(this),t[o]=e.x,t[o+1]=e.y,t[o+2]=e.z;return t}}(),multiplyScalar:function(e){var t=this.elements;return t[0]*=e,t[3]*=e,t[6]*=e,t[1]*=e,t[4]*=e,t[7]*=e,t[2]*=e,t[5]*=e,t[8]*=e,this},determinant:function(){var e=this.elements,t=e[0],r=e[1],i=e[2],n=e[3],o=e[4],a=e[5],s=e[6],h=e[7],c=e[8];return t*o*c-t*a*h-r*n*c+r*a*s+i*n*h-i*o*s},getInverse:function(e,t){var r=e.elements,i=this.elements;i[0]=r[10]*r[5]-r[6]*r[9],i[1]=-r[10]*r[1]+r[2]*r[9],i[2]=r[6]*r[1]-r[2]*r[5],i[3]=-r[10]*r[4]+r[6]*r[8],i[4]=r[10]*r[0]-r[2]*r[8],i[5]=-r[6]*r[0]+r[2]*r[4],i[6]=r[9]*r[4]-r[5]*r[8],i[7]=-r[9]*r[0]+r[1]*r[8],i[8]=r[5]*r[0]-r[1]*r[4];var o=r[0]*i[0]+r[1]*i[3]+r[2]*i[6];if(0===o){var a="Matrix3.getInverse(): can't invert matrix, determinant is 0";if(t)throw new Error(a);return n.warn(a),this.identity(),this}return this.multiplyScalar(1/o),this},transpose:function(){var e,t=this.elements;return e=t[1],t[1]=t[3],t[3]=e,e=t[2],t[2]=t[6],t[6]=e,e=t[5],t[5]=t[7],t[7]=e,this},flattenToArrayOffset:function(e,t){var r=this.elements;return e[t]=r[0],e[t+1]=r[1],e[t+2]=r[2],e[t+3]=r[3],e[t+4]=r[4],e[t+5]=r[5],e[t+6]=r[6],e[t+7]=r[7],e[t+8]=r[8],e},getNormalMatrix:function(e){return this.getInverse(e).transpose(),this},transposeIntoArray:function(e){var t=this.elements;return e[0]=t[0],e[1]=t[3],e[2]=t[6],e[3]=t[1],e[4]=t[4],e[5]=t[7],e[6]=t[2],e[7]=t[5],e[8]=t[8],this},fromArray:function(e){return this.elements.set(e),this},toArray:function(){var e=this.elements;return[e[0],e[1],e[2],e[3],e[4],e[5],e[6],e[7],e[8]]},clone:function(){return(new n.Matrix3).fromArray(this.elements)}},n.Matrix4=function(){this.elements=new Float32Array([1,0,0,0,0,1,0,0,0,0,1,0,0,0,0,1]),arguments.length>0&&n.error("THREE.Matrix4: the constructor no longer reads arguments. use .set() instead.")},n.Matrix4.prototype={constructor:n.Matrix4,set:function(e,t,r,i,n,o,a,s,h,c,l,u,d,p,f,m){var g=this.elements;return g[0]=e,g[4]=t,g[8]=r,g[12]=i,g[1]=n,g[5]=o,g[9]=a,g[13]=s,g[2]=h,g[6]=c,g[10]=l,g[14]=u,g[3]=d,g[7]=p,g[11]=f,g[15]=m,this},identity:function(){return this.set(1,0,0,0,0,1,0,0,0,0,1,0,0,0,0,1),this},copy:function(e){return this.elements.set(e.elements),this},extractPosition:function(e){return n.warn("THREE.Matrix4: .extractPosition() has been renamed to .copyPosition()."),this.copyPosition(e)},copyPosition:function(e){var t=this.elements,r=e.elements;return t[12]=r[12],t[13]=r[13],t[14]=r[14],this},extractBasis:function(e,t,r){var i=this.elements;return e.set(i[0],i[1],i[2]),t.set(i[4],i[5],i[6]),r.set(i[8],i[9],i[10]),this},makeBasis:function(e,t,r){return this.set(e.x,t.x,r.x,0,e.y,t.y,r.y,0,e.z,t.z,r.z,0,0,0,0,1),this},extractRotation:function(){var e=new n.Vector3;return function(t){var r=this.elements,i=t.elements,n=1/e.set(i[0],i[1],i[2]).length(),o=1/e.set(i[4],i[5],i[6]).length(),a=1/e.set(i[8],i[9],i[10]).length();return r[0]=i[0]*n,r[1]=i[1]*n,r[2]=i[2]*n,r[4]=i[4]*o,r[5]=i[5]*o,r[6]=i[6]*o,r[8]=i[8]*a,r[9]=i[9]*a,r[10]=i[10]*a,this}}(),makeRotationFromEuler:function(e){e instanceof n.Euler==!1&&n.error("THREE.Matrix: .makeRotationFromEuler() now expects a Euler rotation rather than a Vector3 and order.");var t=this.elements,r=e.x,i=e.y,o=e.z,a=Math.cos(r),s=Math.sin(r),h=Math.cos(i),c=Math.sin(i),l=Math.cos(o),u=Math.sin(o); if("XYZ"===e.order){var d=a*l,p=a*u,f=s*l,m=s*u;t[0]=h*l,t[4]=-h*u,t[8]=c,t[1]=p+f*c,t[5]=d-m*c,t[9]=-s*h,t[2]=m-d*c,t[6]=f+p*c,t[10]=a*h}else if("YXZ"===e.order){var g=h*l,v=h*u,y=c*l,x=c*u;t[0]=g+x*s,t[4]=y*s-v,t[8]=a*c,t[1]=a*u,t[5]=a*l,t[9]=-s,t[2]=v*s-y,t[6]=x+g*s,t[10]=a*h}else if("ZXY"===e.order){var g=h*l,v=h*u,y=c*l,x=c*u;t[0]=g-x*s,t[4]=-a*u,t[8]=y+v*s,t[1]=v+y*s,t[5]=a*l,t[9]=x-g*s,t[2]=-a*c,t[6]=s,t[10]=a*h}else if("ZYX"===e.order){var d=a*l,p=a*u,f=s*l,m=s*u;t[0]=h*l,t[4]=f*c-p,t[8]=d*c+m,t[1]=h*u,t[5]=m*c+d,t[9]=p*c-f,t[2]=-c,t[6]=s*h,t[10]=a*h}else if("YZX"===e.order){var b=a*h,w=a*c,A=s*h,M=s*c;t[0]=h*l,t[4]=M-b*u,t[8]=A*u+w,t[1]=u,t[5]=a*l,t[9]=-s*l,t[2]=-c*l,t[6]=w*u+A,t[10]=b-M*u}else if("XZY"===e.order){var b=a*h,w=a*c,A=s*h,M=s*c;t[0]=h*l,t[4]=-u,t[8]=c*l,t[1]=b*u+M,t[5]=a*l,t[9]=w*u-A,t[2]=A*u-w,t[6]=s*l,t[10]=M*u+b}return t[3]=0,t[7]=0,t[11]=0,t[12]=0,t[13]=0,t[14]=0,t[15]=1,this},setRotationFromQuaternion:function(e){return n.warn("THREE.Matrix4: .setRotationFromQuaternion() has been renamed to .makeRotationFromQuaternion()."),this.makeRotationFromQuaternion(e)},makeRotationFromQuaternion:function(e){var t=this.elements,r=e.x,i=e.y,n=e.z,o=e.w,a=r+r,s=i+i,h=n+n,c=r*a,l=r*s,u=r*h,d=i*s,p=i*h,f=n*h,m=o*a,g=o*s,v=o*h;return t[0]=1-(d+f),t[4]=l-v,t[8]=u+g,t[1]=l+v,t[5]=1-(c+f),t[9]=p-m,t[2]=u-g,t[6]=p+m,t[10]=1-(c+d),t[3]=0,t[7]=0,t[11]=0,t[12]=0,t[13]=0,t[14]=0,t[15]=1,this},lookAt:function(){var e=new n.Vector3,t=new n.Vector3,r=new n.Vector3;return function(i,n,o){var a=this.elements;return r.subVectors(i,n).normalize(),0===r.length()&&(r.z=1),e.crossVectors(o,r).normalize(),0===e.length()&&(r.x+=1e-4,e.crossVectors(o,r).normalize()),t.crossVectors(r,e),a[0]=e.x,a[4]=t.x,a[8]=r.x,a[1]=e.y,a[5]=t.y,a[9]=r.y,a[2]=e.z,a[6]=t.z,a[10]=r.z,this}}(),multiply:function(e,t){return void 0!==t?(n.warn("THREE.Matrix4: .multiply() now only accepts one argument. Use .multiplyMatrices( a, b ) instead."),this.multiplyMatrices(e,t)):this.multiplyMatrices(this,e)},multiplyMatrices:function(e,t){var r=e.elements,i=t.elements,n=this.elements,o=r[0],a=r[4],s=r[8],h=r[12],c=r[1],l=r[5],u=r[9],d=r[13],p=r[2],f=r[6],m=r[10],g=r[14],v=r[3],y=r[7],x=r[11],b=r[15],w=i[0],A=i[4],M=i[8],S=i[12],E=i[1],T=i[5],C=i[9],P=i[13],L=i[2],_=i[6],R=i[10],B=i[14],F=i[3],z=i[7],D=i[11],O=i[15];return n[0]=o*w+a*E+s*L+h*F,n[4]=o*A+a*T+s*_+h*z,n[8]=o*M+a*C+s*R+h*D,n[12]=o*S+a*P+s*B+h*O,n[1]=c*w+l*E+u*L+d*F,n[5]=c*A+l*T+u*_+d*z,n[9]=c*M+l*C+u*R+d*D,n[13]=c*S+l*P+u*B+d*O,n[2]=p*w+f*E+m*L+g*F,n[6]=p*A+f*T+m*_+g*z,n[10]=p*M+f*C+m*R+g*D,n[14]=p*S+f*P+m*B+g*O,n[3]=v*w+y*E+x*L+b*F,n[7]=v*A+y*T+x*_+b*z,n[11]=v*M+y*C+x*R+b*D,n[15]=v*S+y*P+x*B+b*O,this},multiplyToArray:function(e,t,r){var i=this.elements;return this.multiplyMatrices(e,t),r[0]=i[0],r[1]=i[1],r[2]=i[2],r[3]=i[3],r[4]=i[4],r[5]=i[5],r[6]=i[6],r[7]=i[7],r[8]=i[8],r[9]=i[9],r[10]=i[10],r[11]=i[11],r[12]=i[12],r[13]=i[13],r[14]=i[14],r[15]=i[15],this},multiplyScalar:function(e){var t=this.elements;return t[0]*=e,t[4]*=e,t[8]*=e,t[12]*=e,t[1]*=e,t[5]*=e,t[9]*=e,t[13]*=e,t[2]*=e,t[6]*=e,t[10]*=e,t[14]*=e,t[3]*=e,t[7]*=e,t[11]*=e,t[15]*=e,this},multiplyVector3:function(e){return n.warn("THREE.Matrix4: .multiplyVector3() has been removed. Use vector.applyMatrix4( matrix ) or vector.applyProjection( matrix ) instead."),e.applyProjection(this)},multiplyVector4:function(e){return n.warn("THREE.Matrix4: .multiplyVector4() has been removed. Use vector.applyMatrix4( matrix ) instead."),e.applyMatrix4(this)},multiplyVector3Array:function(e){return n.warn("THREE.Matrix4: .multiplyVector3Array() has been renamed. Use matrix.applyToVector3Array( array ) instead."),this.applyToVector3Array(e)},applyToVector3Array:function(){var e=new n.Vector3;return function(t,r,i){void 0===r&&(r=0),void 0===i&&(i=t.length);for(var n=0,o=r;i>n;n+=3,o+=3)e.x=t[o],e.y=t[o+1],e.z=t[o+2],e.applyMatrix4(this),t[o]=e.x,t[o+1]=e.y,t[o+2]=e.z;return t}}(),rotateAxis:function(e){n.warn("THREE.Matrix4: .rotateAxis() has been removed. Use Vector3.transformDirection( matrix ) instead."),e.transformDirection(this)},crossVector:function(e){return n.warn("THREE.Matrix4: .crossVector() has been removed. Use vector.applyMatrix4( matrix ) instead."),e.applyMatrix4(this)},determinant:function(){var e=this.elements,t=e[0],r=e[4],i=e[8],n=e[12],o=e[1],a=e[5],s=e[9],h=e[13],c=e[2],l=e[6],u=e[10],d=e[14],p=e[3],f=e[7],m=e[11],g=e[15];return p*(+n*s*l-i*h*l-n*a*u+r*h*u+i*a*d-r*s*d)+f*(+t*s*d-t*h*u+n*o*u-i*o*d+i*h*c-n*s*c)+m*(+t*h*l-t*a*d-n*o*l+r*o*d+n*a*c-r*h*c)+g*(-i*a*c-t*s*l+t*a*u+i*o*l-r*o*u+r*s*c)},transpose:function(){var e,t=this.elements;return e=t[1],t[1]=t[4],t[4]=e,e=t[2],t[2]=t[8],t[8]=e,e=t[6],t[6]=t[9],t[9]=e,e=t[3],t[3]=t[12],t[12]=e,e=t[7],t[7]=t[13],t[13]=e,e=t[11],t[11]=t[14],t[14]=e,this},flattenToArrayOffset:function(e,t){var r=this.elements;return e[t]=r[0],e[t+1]=r[1],e[t+2]=r[2],e[t+3]=r[3],e[t+4]=r[4],e[t+5]=r[5],e[t+6]=r[6],e[t+7]=r[7],e[t+8]=r[8],e[t+9]=r[9],e[t+10]=r[10],e[t+11]=r[11],e[t+12]=r[12],e[t+13]=r[13],e[t+14]=r[14],e[t+15]=r[15],e},getPosition:function(){var e=new n.Vector3;return function(){n.warn("THREE.Matrix4: .getPosition() has been removed. Use Vector3.setFromMatrixPosition( matrix ) instead.");var t=this.elements;return e.set(t[12],t[13],t[14])}}(),setPosition:function(e){var t=this.elements;return t[12]=e.x,t[13]=e.y,t[14]=e.z,this},getInverse:function(e,t){var r=this.elements,i=e.elements,o=i[0],a=i[4],s=i[8],h=i[12],c=i[1],l=i[5],u=i[9],d=i[13],p=i[2],f=i[6],m=i[10],g=i[14],v=i[3],y=i[7],x=i[11],b=i[15];r[0]=u*g*y-d*m*y+d*f*x-l*g*x-u*f*b+l*m*b,r[4]=h*m*y-s*g*y-h*f*x+a*g*x+s*f*b-a*m*b,r[8]=s*d*y-h*u*y+h*l*x-a*d*x-s*l*b+a*u*b,r[12]=h*u*f-s*d*f-h*l*m+a*d*m+s*l*g-a*u*g,r[1]=d*m*v-u*g*v-d*p*x+c*g*x+u*p*b-c*m*b,r[5]=s*g*v-h*m*v+h*p*x-o*g*x-s*p*b+o*m*b,r[9]=h*u*v-s*d*v-h*c*x+o*d*x+s*c*b-o*u*b,r[13]=s*d*p-h*u*p+h*c*m-o*d*m-s*c*g+o*u*g,r[2]=l*g*v-d*f*v+d*p*y-c*g*y-l*p*b+c*f*b,r[6]=h*f*v-a*g*v-h*p*y+o*g*y+a*p*b-o*f*b,r[10]=a*d*v-h*l*v+h*c*y-o*d*y-a*c*b+o*l*b,r[14]=h*l*p-a*d*p-h*c*f+o*d*f+a*c*g-o*l*g,r[3]=u*f*v-l*m*v-u*p*y+c*m*y+l*p*x-c*f*x,r[7]=a*m*v-s*f*v+s*p*y-o*m*y-a*p*x+o*f*x,r[11]=s*l*v-a*u*v-s*c*y+o*u*y+a*c*x-o*l*x,r[15]=a*u*p-s*l*p+s*c*f-o*u*f-a*c*m+o*l*m;var w=o*r[0]+c*r[4]+p*r[8]+v*r[12];if(0==w){var A="THREE.Matrix4.getInverse(): can't invert matrix, determinant is 0";if(t)throw new Error(A);return n.warn(A),this.identity(),this}return this.multiplyScalar(1/w),this},translate:function(e){n.error("THREE.Matrix4: .translate() has been removed.")},rotateX:function(e){n.error("THREE.Matrix4: .rotateX() has been removed.")},rotateY:function(e){n.error("THREE.Matrix4: .rotateY() has been removed.")},rotateZ:function(e){n.error("THREE.Matrix4: .rotateZ() has been removed.")},rotateByAxis:function(e,t){n.error("THREE.Matrix4: .rotateByAxis() has been removed.")},scale:function(e){var t=this.elements,r=e.x,i=e.y,n=e.z;return t[0]*=r,t[4]*=i,t[8]*=n,t[1]*=r,t[5]*=i,t[9]*=n,t[2]*=r,t[6]*=i,t[10]*=n,t[3]*=r,t[7]*=i,t[11]*=n,this},getMaxScaleOnAxis:function(){var e=this.elements,t=e[0]*e[0]+e[1]*e[1]+e[2]*e[2],r=e[4]*e[4]+e[5]*e[5]+e[6]*e[6],i=e[8]*e[8]+e[9]*e[9]+e[10]*e[10];return Math.sqrt(Math.max(t,Math.max(r,i)))},makeTranslation:function(e,t,r){return this.set(1,0,0,e,0,1,0,t,0,0,1,r,0,0,0,1),this},makeRotationX:function(e){var t=Math.cos(e),r=Math.sin(e);return this.set(1,0,0,0,0,t,-r,0,0,r,t,0,0,0,0,1),this},makeRotationY:function(e){var t=Math.cos(e),r=Math.sin(e);return this.set(t,0,r,0,0,1,0,0,-r,0,t,0,0,0,0,1),this},makeRotationZ:function(e){var t=Math.cos(e),r=Math.sin(e);return this.set(t,-r,0,0,r,t,0,0,0,0,1,0,0,0,0,1),this},makeRotationAxis:function(e,t){var r=Math.cos(t),i=Math.sin(t),n=1-r,o=e.x,a=e.y,s=e.z,h=n*o,c=n*a;return this.set(h*o+r,h*a-i*s,h*s+i*a,0,h*a+i*s,c*a+r,c*s-i*o,0,h*s-i*a,c*s+i*o,n*s*s+r,0,0,0,0,1),this},makeScale:function(e,t,r){return this.set(e,0,0,0,0,t,0,0,0,0,r,0,0,0,0,1),this},compose:function(e,t,r){return this.makeRotationFromQuaternion(t),this.scale(r),this.setPosition(e),this},decompose:function(){var e=new n.Vector3,t=new n.Matrix4;return function(r,i,n){var o=this.elements,a=e.set(o[0],o[1],o[2]).length(),s=e.set(o[4],o[5],o[6]).length(),h=e.set(o[8],o[9],o[10]).length(),c=this.determinant();0>c&&(a=-a),r.x=o[12],r.y=o[13],r.z=o[14],t.elements.set(this.elements);var l=1/a,u=1/s,d=1/h;return t.elements[0]*=l,t.elements[1]*=l,t.elements[2]*=l,t.elements[4]*=u,t.elements[5]*=u,t.elements[6]*=u,t.elements[8]*=d,t.elements[9]*=d,t.elements[10]*=d,i.setFromRotationMatrix(t),n.x=a,n.y=s,n.z=h,this}}(),makeFrustum:function(e,t,r,i,n,o){var a=this.elements,s=2*n/(t-e),h=2*n/(i-r),c=(t+e)/(t-e),l=(i+r)/(i-r),u=-(o+n)/(o-n),d=-2*o*n/(o-n);return a[0]=s,a[4]=0,a[8]=c,a[12]=0,a[1]=0,a[5]=h,a[9]=l,a[13]=0,a[2]=0,a[6]=0,a[10]=u,a[14]=d,a[3]=0,a[7]=0,a[11]=-1,a[15]=0,this},makePerspective:function(e,t,r,i){var o=r*Math.tan(n.Math.degToRad(.5*e)),a=-o,s=a*t,h=o*t;return this.makeFrustum(s,h,a,o,r,i)},makeOrthographic:function(e,t,r,i,n,o){var a=this.elements,s=t-e,h=r-i,c=o-n,l=(t+e)/s,u=(r+i)/h,d=(o+n)/c;return a[0]=2/s,a[4]=0,a[8]=0,a[12]=-l,a[1]=0,a[5]=2/h,a[9]=0,a[13]=-u,a[2]=0,a[6]=0,a[10]=-2/c,a[14]=-d,a[3]=0,a[7]=0,a[11]=0,a[15]=1,this},fromArray:function(e){return this.elements.set(e),this},toArray:function(){var e=this.elements;return[e[0],e[1],e[2],e[3],e[4],e[5],e[6],e[7],e[8],e[9],e[10],e[11],e[12],e[13],e[14],e[15]]},clone:function(){return(new n.Matrix4).fromArray(this.elements)}},n.Ray=function(e,t){this.origin=void 0!==e?e:new n.Vector3,this.direction=void 0!==t?t:new n.Vector3},n.Ray.prototype={constructor:n.Ray,set:function(e,t){return this.origin.copy(e),this.direction.copy(t),this},copy:function(e){return this.origin.copy(e.origin),this.direction.copy(e.direction),this},at:function(e,t){var r=t||new n.Vector3;return r.copy(this.direction).multiplyScalar(e).add(this.origin)},recast:function(){var e=new n.Vector3;return function(t){return this.origin.copy(this.at(t,e)),this}}(),closestPointToPoint:function(e,t){var r=t||new n.Vector3;r.subVectors(e,this.origin);var i=r.dot(this.direction);return 0>i?r.copy(this.origin):r.copy(this.direction).multiplyScalar(i).add(this.origin)},distanceToPoint:function(){var e=new n.Vector3;return function(t){var r=e.subVectors(t,this.origin).dot(this.direction);return 0>r?this.origin.distanceTo(t):(e.copy(this.direction).multiplyScalar(r).add(this.origin),e.distanceTo(t))}}(),distanceSqToSegment:function(){var e=new n.Vector3,t=new n.Vector3,r=new n.Vector3;return function(i,n,o,a){e.copy(i).add(n).multiplyScalar(.5),t.copy(n).sub(i).normalize(),r.copy(this.origin).sub(e);var s,h,c,l,u=.5*i.distanceTo(n),d=-this.direction.dot(t),p=r.dot(this.direction),f=-r.dot(t),m=r.lengthSq(),g=Math.abs(1-d*d);if(g>0)if(s=d*f-p,h=d*p-f,l=u*g,s>=0)if(h>=-l)if(l>=h){var v=1/g;s*=v,h*=v,c=s*(s+d*h+2*p)+h*(d*s+h+2*f)+m}else h=u,s=Math.max(0,-(d*h+p)),c=-s*s+h*(h+2*f)+m;else h=-u,s=Math.max(0,-(d*h+p)),c=-s*s+h*(h+2*f)+m;else-l>=h?(s=Math.max(0,-(-d*u+p)),h=s>0?-u:Math.min(Math.max(-u,-f),u),c=-s*s+h*(h+2*f)+m):l>=h?(s=0,h=Math.min(Math.max(-u,-f),u),c=h*(h+2*f)+m):(s=Math.max(0,-(d*u+p)),h=s>0?u:Math.min(Math.max(-u,-f),u),c=-s*s+h*(h+2*f)+m);else h=d>0?-u:u,s=Math.max(0,-(d*h+p)),c=-s*s+h*(h+2*f)+m;return o&&o.copy(this.direction).multiplyScalar(s).add(this.origin),a&&a.copy(t).multiplyScalar(h).add(e),c}}(),isIntersectionSphere:function(e){return this.distanceToPoint(e.center)<=e.radius},intersectSphere:function(){var e=new n.Vector3;return function(t,r){e.subVectors(t.center,this.origin);var i=e.dot(this.direction),n=e.dot(e)-i*i,o=t.radius*t.radius;if(n>o)return null;var a=Math.sqrt(o-n),s=i-a,h=i+a;return 0>s&&0>h?null:0>s?this.at(h,r):this.at(s,r)}}(),isIntersectionPlane:function(e){var t=e.distanceToPoint(this.origin);if(0===t)return!0;var r=e.normal.dot(this.direction);return 0>r*t?!0:!1},distanceToPlane:function(e){var t=e.normal.dot(this.direction);if(0==t)return 0==e.distanceToPoint(this.origin)?0:null;var r=-(this.origin.dot(e.normal)+e.constant)/t;return r>=0?r:null},intersectPlane:function(e,t){var r=this.distanceToPlane(e);return null===r?null:this.at(r,t)},isIntersectionBox:function(){var e=new n.Vector3;return function(t){return null!==this.intersectBox(t,e)}}(),intersectBox:function(e,t){var r,i,n,o,a,s,h=1/this.direction.x,c=1/this.direction.y,l=1/this.direction.z,u=this.origin;return h>=0?(r=(e.min.x-u.x)*h,i=(e.max.x-u.x)*h):(r=(e.max.x-u.x)*h,i=(e.min.x-u.x)*h),c>=0?(n=(e.min.y-u.y)*c,o=(e.max.y-u.y)*c):(n=(e.max.y-u.y)*c,o=(e.min.y-u.y)*c),r>o||n>i?null:((n>r||r!==r)&&(r=n),(i>o||i!==i)&&(i=o),l>=0?(a=(e.min.z-u.z)*l,s=(e.max.z-u.z)*l):(a=(e.max.z-u.z)*l,s=(e.min.z-u.z)*l),r>s||a>i?null:((a>r||r!==r)&&(r=a),(i>s||i!==i)&&(i=s),0>i?null:this.at(r>=0?r:i,t)))},intersectTriangle:function(){var e=new n.Vector3,t=new n.Vector3,r=new n.Vector3,i=new n.Vector3;return function(n,o,a,s,h){t.subVectors(o,n),r.subVectors(a,n),i.crossVectors(t,r);var c,l=this.direction.dot(i);if(l>0){if(s)return null;c=1}else{if(!(0>l))return null;c=-1,l=-l}e.subVectors(this.origin,n);var u=c*this.direction.dot(r.crossVectors(e,r));if(0>u)return null;var d=c*this.direction.dot(t.cross(e));if(0>d)return null;if(u+d>l)return null;var p=-c*e.dot(i);return 0>p?null:this.at(p/l,h)}}(),applyMatrix4:function(e){return this.direction.add(this.origin).applyMatrix4(e),this.origin.applyMatrix4(e),this.direction.sub(this.origin),this.direction.normalize(),this},equals:function(e){return e.origin.equals(this.origin)&&e.direction.equals(this.direction)},clone:function(){return(new n.Ray).copy(this)}},n.Sphere=function(e,t){this.center=void 0!==e?e:new n.Vector3,this.radius=void 0!==t?t:0},n.Sphere.prototype={constructor:n.Sphere,set:function(e,t){return this.center.copy(e),this.radius=t,this},setFromPoints:function(){var e=new n.Box3;return function(t,r){var i=this.center;void 0!==r?i.copy(r):e.setFromPoints(t).center(i);for(var n=0,o=0,a=t.length;a>o;o++)n=Math.max(n,i.distanceToSquared(t[o]));return this.radius=Math.sqrt(n),this}}(),copy:function(e){return this.center.copy(e.center),this.radius=e.radius,this},empty:function(){return this.radius<=0},containsPoint:function(e){return e.distanceToSquared(this.center)<=this.radius*this.radius},distanceToPoint:function(e){return e.distanceTo(this.center)-this.radius},intersectsSphere:function(e){var t=this.radius+e.radius;return e.center.distanceToSquared(this.center)<=t*t},clampPoint:function(e,t){var r=this.center.distanceToSquared(e),i=t||new n.Vector3;return i.copy(e),r>this.radius*this.radius&&(i.sub(this.center).normalize(),i.multiplyScalar(this.radius).add(this.center)),i},getBoundingBox:function(e){var t=e||new n.Box3;return t.set(this.center,this.center),t.expandByScalar(this.radius),t},applyMatrix4:function(e){return this.center.applyMatrix4(e),this.radius=this.radius*e.getMaxScaleOnAxis(),this},translate:function(e){return this.center.add(e),this},equals:function(e){return e.center.equals(this.center)&&e.radius===this.radius},clone:function(){return(new n.Sphere).copy(this)}},n.Frustum=function(e,t,r,i,o,a){this.planes=[void 0!==e?e:new n.Plane,void 0!==t?t:new n.Plane,void 0!==r?r:new n.Plane,void 0!==i?i:new n.Plane,void 0!==o?o:new n.Plane,void 0!==a?a:new n.Plane]},n.Frustum.prototype={constructor:n.Frustum,set:function(e,t,r,i,n,o){var a=this.planes;return a[0].copy(e),a[1].copy(t),a[2].copy(r),a[3].copy(i),a[4].copy(n),a[5].copy(o),this},copy:function(e){for(var t=this.planes,r=0;6>r;r++)t[r].copy(e.planes[r]);return this},setFromMatrix:function(e){var t=this.planes,r=e.elements,i=r[0],n=r[1],o=r[2],a=r[3],s=r[4],h=r[5],c=r[6],l=r[7],u=r[8],d=r[9],p=r[10],f=r[11],m=r[12],g=r[13],v=r[14],y=r[15];return t[0].setComponents(a-i,l-s,f-u,y-m).normalize(),t[1].setComponents(a+i,l+s,f+u,y+m).normalize(),t[2].setComponents(a+n,l+h,f+d,y+g).normalize(),t[3].setComponents(a-n,l-h,f-d,y-g).normalize(),t[4].setComponents(a-o,l-c,f-p,y-v).normalize(),t[5].setComponents(a+o,l+c,f+p,y+v).normalize(),this},intersectsObject:function(){var e=new n.Sphere;return function(t){var r=t.geometry;return null===r.boundingSphere&&r.computeBoundingSphere(),e.copy(r.boundingSphere),e.applyMatrix4(t.matrixWorld),this.intersectsSphere(e)}}(),intersectsSphere:function(e){for(var t=this.planes,r=e.center,i=-e.radius,n=0;6>n;n++){var o=t[n].distanceToPoint(r);if(i>o)return!1}return!0},intersectsBox:function(){var e=new n.Vector3,t=new n.Vector3;return function(r){for(var i=this.planes,n=0;6>n;n++){var o=i[n];e.x=o.normal.x>0?r.min.x:r.max.x,t.x=o.normal.x>0?r.max.x:r.min.x,e.y=o.normal.y>0?r.min.y:r.max.y,t.y=o.normal.y>0?r.max.y:r.min.y,e.z=o.normal.z>0?r.min.z:r.max.z,t.z=o.normal.z>0?r.max.z:r.min.z;var a=o.distanceToPoint(e),s=o.distanceToPoint(t);if(0>a&&0>s)return!1}return!0}}(),containsPoint:function(e){for(var t=this.planes,r=0;6>r;r++)if(t[r].distanceToPoint(e)<0)return!1;return!0},clone:function(){return(new n.Frustum).copy(this)}},n.Plane=function(e,t){this.normal=void 0!==e?e:new n.Vector3(1,0,0),this.constant=void 0!==t?t:0},n.Plane.prototype={constructor:n.Plane,set:function(e,t){return this.normal.copy(e),this.constant=t,this},setComponents:function(e,t,r,i){return this.normal.set(e,t,r),this.constant=i,this},setFromNormalAndCoplanarPoint:function(e,t){return this.normal.copy(e),this.constant=-t.dot(this.normal),this},setFromCoplanarPoints:function(){var e=new n.Vector3,t=new n.Vector3;return function(r,i,n){var o=e.subVectors(n,i).cross(t.subVectors(r,i)).normalize();return this.setFromNormalAndCoplanarPoint(o,r),this}}(),copy:function(e){return this.normal.copy(e.normal),this.constant=e.constant,this},normalize:function(){var e=1/this.normal.length();return this.normal.multiplyScalar(e),this.constant*=e,this},negate:function(){return this.constant*=-1,this.normal.negate(),this},distanceToPoint:function(e){return this.normal.dot(e)+this.constant},distanceToSphere:function(e){return this.distanceToPoint(e.center)-e.radius},projectPoint:function(e,t){return this.orthoPoint(e,t).sub(e).negate()},orthoPoint:function(e,t){var r=this.distanceToPoint(e),i=t||new n.Vector3;return i.copy(this.normal).multiplyScalar(r)},isIntersectionLine:function(e){var t=this.distanceToPoint(e.start),r=this.distanceToPoint(e.end);return 0>t&&r>0||0>r&&t>0},intersectLine:function(){var e=new n.Vector3;return function(t,r){var i=r||new n.Vector3,o=t.delta(e),a=this.normal.dot(o);if(0==a)return 0==this.distanceToPoint(t.start)?i.copy(t.start):void 0;var s=-(t.start.dot(this.normal)+this.constant)/a;return 0>s||s>1?void 0:i.copy(o).multiplyScalar(s).add(t.start)}}(),coplanarPoint:function(e){var t=e||new n.Vector3;return t.copy(this.normal).multiplyScalar(-this.constant)},applyMatrix4:function(){var e=new n.Vector3,t=new n.Vector3,r=new n.Matrix3;return function(i,n){var o=n||r.getNormalMatrix(i),a=e.copy(this.normal).applyMatrix3(o),s=this.coplanarPoint(t);return s.applyMatrix4(i),this.setFromNormalAndCoplanarPoint(a,s),this}}(),translate:function(e){return this.constant=this.constant-e.dot(this.normal),this},equals:function(e){return e.normal.equals(this.normal)&&e.constant==this.constant},clone:function(){return(new n.Plane).copy(this)}},n.Math={generateUUID:function(){var e,t="0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz".split(""),r=new Array(36),i=0;return function(){for(var n=0;36>n;n++)8==n||13==n||18==n||23==n?r[n]="-":14==n?r[n]="4":(2>=i&&(i=33554432+16777216*Math.random()|0),e=15&i,i>>=4,r[n]=t[19==n?3&e|8:e]);return r.join("")}}(),clamp:function(e,t,r){return t>e?t:e>r?r:e},clampBottom:function(e,t){return t>e?t:e},mapLinear:function(e,t,r,i,n){return i+(e-t)*(n-i)/(r-t)},smoothstep:function(e,t,r){return t>=e?0:e>=r?1:(e=(e-t)/(r-t),e*e*(3-2*e))},smootherstep:function(e,t,r){return t>=e?0:e>=r?1:(e=(e-t)/(r-t),e*e*e*(e*(6*e-15)+10))},random16:function(){return(65280*Math.random()+255*Math.random())/65535},randInt:function(e,t){return Math.floor(this.randFloat(e,t))},randFloat:function(e,t){return e+Math.random()*(t-e)},randFloatSpread:function(e){return e*(.5-Math.random())},degToRad:function(){var e=Math.PI/180;return function(t){return t*e}}(),radToDeg:function(){var e=180/Math.PI;return function(t){return t*e}}(),isPowerOfTwo:function(e){return 0===(e&e-1)&&0!==e},nextPowerOfTwo:function(e){return e--,e|=e>>1,e|=e>>2,e|=e>>4,e|=e>>8,e|=e>>16,e++,e}},n.Spline=function(e){function t(e,t,r,i,n,o,a){var s=.5*(r-e),h=.5*(i-t);return(2*(t-r)+s+h)*a+(-3*(t-r)-2*s-h)*o+s*n+t}this.points=e;var r,i,o,a,s,h,c,l,u,d=[],p={x:0,y:0,z:0};this.initFromArray=function(e){this.points=[];for(var t=0;tthis.points.length-2?this.points.length-1:i+1,d[3]=i>this.points.length-3?this.points.length-1:i+2,h=this.points[d[0]],c=this.points[d[1]],l=this.points[d[2]],u=this.points[d[3]],a=o*o,s=o*a,p.x=t(h.x,c.x,l.x,u.x,o,a,s),p.y=t(h.y,c.y,l.y,u.y,o,a,s),p.z=t(h.z,c.z,l.z,u.z,o,a,s),p},this.getControlPointsArray=function(){var e,t,r=this.points.length,i=[];for(e=0;r>e;e++)t=this.points[e],i[e]=[t.x,t.y,t.z];return i},this.getLength=function(e){var t,r,i,o,a=0,s=0,h=0,c=new n.Vector3,l=new n.Vector3,u=[],d=0;for(u[0]=0,e||(e=100),i=this.points.length*e,c.copy(this.points[0]),t=1;i>t;t++)r=t/i,o=this.getPoint(r),l.copy(o),d+=l.distanceTo(c),c.copy(o),a=(this.points.length-1)*r,s=Math.floor(a),s!=h&&(u[s]=d,h=s);return u[u.length]=d,{chunks:u,total:d}},this.reparametrizeByArcLength=function(e){var t,r,i,o,a,s,h,c,l=[],u=new n.Vector3,d=this.getLength();for(l.push(u.copy(this.points[0]).clone()),t=1;tr;r++)i=o+r*(1/h)*(a-o),c=this.getPoint(i),l.push(u.copy(c).clone());l.push(u.copy(this.points[t]).clone())}this.points=l}},n.Triangle=function(e,t,r){this.a=void 0!==e?e:new n.Vector3,this.b=void 0!==t?t:new n.Vector3,this.c=void 0!==r?r:new n.Vector3},n.Triangle.normal=function(){var e=new n.Vector3;return function(t,r,i,o){var a=o||new n.Vector3;a.subVectors(i,r),e.subVectors(t,r),a.cross(e);var s=a.lengthSq();return s>0?a.multiplyScalar(1/Math.sqrt(s)):a.set(0,0,0)}}(),n.Triangle.barycoordFromPoint=function(){var e=new n.Vector3,t=new n.Vector3,r=new n.Vector3;return function(i,o,a,s,h){e.subVectors(s,o),t.subVectors(a,o),r.subVectors(i,o);var c=e.dot(e),l=e.dot(t),u=e.dot(r),d=t.dot(t),p=t.dot(r),f=c*d-l*l,m=h||new n.Vector3;if(0==f)return m.set(-2,-1,-1);var g=1/f,v=(d*u-l*p)*g,y=(c*p-l*u)*g;return m.set(1-v-y,y,v)}}(),n.Triangle.containsPoint=function(){var e=new n.Vector3;return function(t,r,i,o){var a=n.Triangle.barycoordFromPoint(t,r,i,o,e);return a.x>=0&&a.y>=0&&a.x+a.y<=1}}(),n.Triangle.prototype={constructor:n.Triangle,set:function(e,t,r){return this.a.copy(e),this.b.copy(t),this.c.copy(r),this},setFromPointsAndIndices:function(e,t,r,i){return this.a.copy(e[t]),this.b.copy(e[r]),this.c.copy(e[i]),this},copy:function(e){return this.a.copy(e.a),this.b.copy(e.b),this.c.copy(e.c),this},area:function(){var e=new n.Vector3,t=new n.Vector3;return function(){return e.subVectors(this.c,this.b),t.subVectors(this.a,this.b),.5*e.cross(t).length()}}(),midpoint:function(e){var t=e||new n.Vector3;return t.addVectors(this.a,this.b).add(this.c).multiplyScalar(1/3)},normal:function(e){return n.Triangle.normal(this.a,this.b,this.c,e)},plane:function(e){var t=e||new n.Plane;return t.setFromCoplanarPoints(this.a,this.b,this.c)},barycoordFromPoint:function(e,t){return n.Triangle.barycoordFromPoint(e,this.a,this.b,this.c,t)},containsPoint:function(e){return n.Triangle.containsPoint(e,this.a,this.b,this.c)},equals:function(e){return e.a.equals(this.a)&&e.b.equals(this.b)&&e.c.equals(this.c)},clone:function(){return(new n.Triangle).copy(this)}},n.Clock=function(e){this.autoStart=void 0!==e?e:!0,this.startTime=0,this.oldTime=0,this.elapsedTime=0,this.running=!1},n.Clock.prototype={constructor:n.Clock,start:function(){this.startTime=void 0!==i.performance&&void 0!==i.performance.now?i.performance.now():Date.now(),this.oldTime=this.startTime,this.running=!0},stop:function(){this.getElapsedTime(),this.running=!1},getElapsedTime:function(){return this.getDelta(),this.elapsedTime},getDelta:function(){var e=0;if(this.autoStart&&!this.running&&this.start(),this.running){var t=void 0!==i.performance&&void 0!==i.performance.now?i.performance.now():Date.now();e=.001*(t-this.oldTime),this.oldTime=t,this.elapsedTime+=e}return e}},n.EventDispatcher=function(){},n.EventDispatcher.prototype={constructor:n.EventDispatcher,apply:function(e){e.addEventListener=n.EventDispatcher.prototype.addEventListener,e.hasEventListener=n.EventDispatcher.prototype.hasEventListener,e.removeEventListener=n.EventDispatcher.prototype.removeEventListener,e.dispatchEvent=n.EventDispatcher.prototype.dispatchEvent},addEventListener:function(e,t){void 0===this._listeners&&(this._listeners={});var r=this._listeners;void 0===r[e]&&(r[e]=[]),-1===r[e].indexOf(t)&&r[e].push(t)},hasEventListener:function(e,t){if(void 0===this._listeners)return!1;var r=this._listeners;return void 0!==r[e]&&-1!==r[e].indexOf(t)?!0:!1},removeEventListener:function(e,t){if(void 0!==this._listeners){var r=this._listeners,i=r[e];if(void 0!==i){var n=i.indexOf(t);-1!==n&&i.splice(n,1)}}},dispatchEvent:function(e){if(void 0!==this._listeners){var t=this._listeners,r=t[e.type];if(void 0!==r){e.target=this;for(var i=[],n=r.length,o=0;n>o;o++)i[o]=r[o];for(var o=0;n>o;o++)i[o].call(this,e)}}}},function(e){e.Raycaster=function(t,r,i,n){this.ray=new e.Ray(t,r),this.near=i||0,this.far=n||1/0,this.params={Sprite:{},Mesh:{},PointCloud:{threshold:1},LOD:{},Line:{}}};var t=function(e,t){return e.distance-t.distance},r=function(e,t,i,n){if(e.raycast(t,i),n===!0)for(var o=e.children,a=0,s=o.length;s>a;a++)r(o[a],t,i,!0)};e.Raycaster.prototype={constructor:e.Raycaster,precision:1e-4,linePrecision:1,set:function(e,t){this.ray.set(e,t)},setFromCamera:function(t,r){r instanceof e.PerspectiveCamera?(this.ray.origin.copy(r.position),this.ray.direction.set(t.x,t.y,.5).unproject(r).sub(r.position).normalize()):r instanceof e.OrthographicCamera?(this.ray.origin.set(t.x,t.y,-1).unproject(r),this.ray.direction.set(0,0,-1).transformDirection(r.matrixWorld)):e.error("THREE.Raycaster: Unsupported camera type.")},intersectObject:function(e,i){var n=[];return r(e,this,n,i),n.sort(t),n},intersectObjects:function(i,n){var o=[];if(i instanceof Array==!1)return e.warn("THREE.Raycaster.intersectObjects: objects is not an Array."),o;for(var a=0,s=i.length;s>a;a++)r(i[a],this,o,n);return o.sort(t),o}}}(n),n.Object3D=function(){Object.defineProperty(this,"id",{value:n.Object3DIdCount++}),this.uuid=n.Math.generateUUID(),this.name="",this.type="Object3D",this.parent=void 0,this.children=[],this.up=n.Object3D.DefaultUp.clone();var e=new n.Vector3,t=new n.Euler,r=new n.Quaternion,i=new n.Vector3(1,1,1),o=function(){r.setFromEuler(t,!1)},a=function(){t.setFromQuaternion(r,void 0,!1)};t.onChange(o),r.onChange(a),Object.defineProperties(this,{position:{enumerable:!0,value:e},rotation:{enumerable:!0,value:t},quaternion:{enumerable:!0,value:r},scale:{enumerable:!0,value:i}}),this.rotationAutoUpdate=!0,this.matrix=new n.Matrix4,this.matrixWorld=new n.Matrix4,this.matrixAutoUpdate=!0,this.matrixWorldNeedsUpdate=!1,this.visible=!0,this.castShadow=!1,this.receiveShadow=!1,this.frustumCulled=!0,this.renderOrder=0,this.userData={}},n.Object3D.DefaultUp=new n.Vector3(0,1,0),n.Object3D.prototype={constructor:n.Object3D,get eulerOrder(){return n.warn("THREE.Object3D: .eulerOrder has been moved to .rotation.order."),this.rotation.order},set eulerOrder(e){n.warn("THREE.Object3D: .eulerOrder has been moved to .rotation.order."),this.rotation.order=e},get useQuaternion(){n.warn("THREE.Object3D: .useQuaternion has been removed. The library now uses quaternions by default.")},set useQuaternion(e){n.warn("THREE.Object3D: .useQuaternion has been removed. The library now uses quaternions by default.")},applyMatrix:function(e){this.matrix.multiplyMatrices(e,this.matrix),this.matrix.decompose(this.position,this.quaternion,this.scale)},setRotationFromAxisAngle:function(e,t){this.quaternion.setFromAxisAngle(e,t)},setRotationFromEuler:function(e){this.quaternion.setFromEuler(e,!0)},setRotationFromMatrix:function(e){this.quaternion.setFromRotationMatrix(e)},setRotationFromQuaternion:function(e){this.quaternion.copy(e)},rotateOnAxis:function(){var e=new n.Quaternion;return function(t,r){return e.setFromAxisAngle(t,r),this.quaternion.multiply(e),this}}(),rotateX:function(){var e=new n.Vector3(1,0,0);return function(t){return this.rotateOnAxis(e,t)}}(),rotateY:function(){var e=new n.Vector3(0,1,0);return function(t){return this.rotateOnAxis(e,t)}}(),rotateZ:function(){var e=new n.Vector3(0,0,1);return function(t){return this.rotateOnAxis(e,t)}}(),translateOnAxis:function(){var e=new n.Vector3;return function(t,r){return e.copy(t).applyQuaternion(this.quaternion),this.position.add(e.multiplyScalar(r)),this}}(),translate:function(e,t){return n.warn("THREE.Object3D: .translate() has been removed. Use .translateOnAxis( axis, distance ) instead."),this.translateOnAxis(t,e)},translateX:function(){var e=new n.Vector3(1,0,0);return function(t){return this.translateOnAxis(e,t)}}(),translateY:function(){var e=new n.Vector3(0,1,0);return function(t){return this.translateOnAxis(e,t)}}(),translateZ:function(){var e=new n.Vector3(0,0,1);return function(t){return this.translateOnAxis(e,t)}}(),localToWorld:function(e){return e.applyMatrix4(this.matrixWorld)},worldToLocal:function(){var e=new n.Matrix4;return function(t){return t.applyMatrix4(e.getInverse(this.matrixWorld))}}(),lookAt:function(){var e=new n.Matrix4;return function(t){e.lookAt(t,this.position,this.up),this.quaternion.setFromRotationMatrix(e)}}(),add:function(e){if(arguments.length>1){for(var t=0;t1)for(var t=0;tr;r++){var n=this.children[r],o=n.getObjectByProperty(e,t);if(void 0!==o)return o}return void 0},getWorldPosition:function(e){var t=e||new n.Vector3;return this.updateMatrixWorld(!0),t.setFromMatrixPosition(this.matrixWorld)},getWorldQuaternion:function(){var e=new n.Vector3,t=new n.Vector3;return function(r){var i=r||new n.Quaternion;return this.updateMatrixWorld(!0),this.matrixWorld.decompose(e,i,t),i}}(),getWorldRotation:function(){var e=new n.Quaternion;return function(t){var r=t||new n.Euler;return this.getWorldQuaternion(e),r.setFromQuaternion(e,this.rotation.order,!1)}}(),getWorldScale:function(){var e=new n.Vector3,t=new n.Quaternion;return function(r){var i=r||new n.Vector3;return this.updateMatrixWorld(!0),this.matrixWorld.decompose(e,t,i),i}}(),getWorldDirection:function(){var e=new n.Quaternion;return function(t){var r=t||new n.Vector3;return this.getWorldQuaternion(e),r.set(0,0,1).applyQuaternion(e)}}(),raycast:function(){},traverse:function(e){e(this);for(var t=0,r=this.children.length;r>t;t++)this.children[t].traverse(e)},traverseVisible:function(e){if(this.visible!==!1){e(this);for(var t=0,r=this.children.length;r>t;t++)this.children[t].traverseVisible(e); @@ -22,8 +22,8 @@ e.blendFunc(e.ZERO,e.SRC_COLOR)):r===n.CustomBlending?e.enable(e.BLEND):(e.enabl return t},n.CurvePath.prototype.addWrapPath=function(e){this.bends.push(e)},n.CurvePath.prototype.getTransformedPoints=function(e,t){var r,i,n=this.getPoints(e);for(t||(t=this.bends),r=0,i=t.length;i>r;r++)n=this.getWrapPoints(n,t[r]);return n},n.CurvePath.prototype.getTransformedSpacedPoints=function(e,t){var r,i,n=this.getSpacedPoints(e);for(t||(t=this.bends),r=0,i=t.length;i>r;r++)n=this.getWrapPoints(n,t[r]);return n},n.CurvePath.prototype.getWrapPoints=function(e,t){var r,i,n,o,a,s,h=this.getBoundingBox();for(r=0,i=e.length;i>r;r++){n=e[r],o=n.x,a=n.y,s=o/h.maxX,s=t.getUtoTmapping(s,o);var c=t.getPoint(s),l=t.getTangent(s);l.set(-l.y,l.x).multiplyScalar(a),n.x=c.x+l.x,n.y=c.y+l.y}return e},n.Gyroscope=function(){n.Object3D.call(this)},n.Gyroscope.prototype=Object.create(n.Object3D.prototype),n.Gyroscope.prototype.constructor=n.Gyroscope,n.Gyroscope.prototype.updateMatrixWorld=function(){var e=new n.Vector3,t=new n.Quaternion,r=new n.Vector3,i=new n.Vector3,o=new n.Quaternion,a=new n.Vector3;return function(n){this.matrixAutoUpdate&&this.updateMatrix(),(this.matrixWorldNeedsUpdate||n)&&(this.parent?(this.matrixWorld.multiplyMatrices(this.parent.matrixWorld,this.matrix),this.matrixWorld.decompose(i,o,a),this.matrix.decompose(e,t,r),this.matrixWorld.compose(i,t,a)):this.matrixWorld.copy(this.matrix),this.matrixWorldNeedsUpdate=!1,n=!0);for(var s=0,h=this.children.length;h>s;s++)this.children[s].updateMatrixWorld(n)}}(),n.Path=function(e){n.CurvePath.call(this),this.actions=[],e&&this.fromPoints(e)},n.Path.prototype=Object.create(n.CurvePath.prototype),n.Path.prototype.constructor=n.Path,n.PathActions={MOVE_TO:"moveTo",LINE_TO:"lineTo",QUADRATIC_CURVE_TO:"quadraticCurveTo",BEZIER_CURVE_TO:"bezierCurveTo",CSPLINE_THRU:"splineThru",ARC:"arc",ELLIPSE:"ellipse"},n.Path.prototype.fromPoints=function(e){this.moveTo(e[0].x,e[0].y);for(var t=1,r=e.length;r>t;t++)this.lineTo(e[t].x,e[t].y)},n.Path.prototype.moveTo=function(e,t){var r=Array.prototype.slice.call(arguments);this.actions.push({action:n.PathActions.MOVE_TO,args:r})},n.Path.prototype.lineTo=function(e,t){var r=Array.prototype.slice.call(arguments),i=this.actions[this.actions.length-1].args,o=i[i.length-2],a=i[i.length-1],s=new n.LineCurve(new n.Vector2(o,a),new n.Vector2(e,t));this.curves.push(s),this.actions.push({action:n.PathActions.LINE_TO,args:r})},n.Path.prototype.quadraticCurveTo=function(e,t,r,i){var o=Array.prototype.slice.call(arguments),a=this.actions[this.actions.length-1].args,s=a[a.length-2],h=a[a.length-1],c=new n.QuadraticBezierCurve(new n.Vector2(s,h),new n.Vector2(e,t),new n.Vector2(r,i));this.curves.push(c),this.actions.push({action:n.PathActions.QUADRATIC_CURVE_TO,args:o})},n.Path.prototype.bezierCurveTo=function(e,t,r,i,o,a){var s=Array.prototype.slice.call(arguments),h=this.actions[this.actions.length-1].args,c=h[h.length-2],l=h[h.length-1],u=new n.CubicBezierCurve(new n.Vector2(c,l),new n.Vector2(e,t),new n.Vector2(r,i),new n.Vector2(o,a));this.curves.push(u),this.actions.push({action:n.PathActions.BEZIER_CURVE_TO,args:s})},n.Path.prototype.splineThru=function(e){var t=Array.prototype.slice.call(arguments),r=this.actions[this.actions.length-1].args,i=r[r.length-2],o=r[r.length-1],a=[new n.Vector2(i,o)];Array.prototype.push.apply(a,e);var s=new n.SplineCurve(a);this.curves.push(s),this.actions.push({action:n.PathActions.CSPLINE_THRU,args:t})},n.Path.prototype.arc=function(e,t,r,i,n,o){var a=this.actions[this.actions.length-1].args,s=a[a.length-2],h=a[a.length-1];this.absarc(e+s,t+h,r,i,n,o)},n.Path.prototype.absarc=function(e,t,r,i,n,o){this.absellipse(e,t,r,r,i,n,o)},n.Path.prototype.ellipse=function(e,t,r,i,n,o,a){var s=this.actions[this.actions.length-1].args,h=s[s.length-2],c=s[s.length-1];this.absellipse(e+h,t+c,r,i,n,o,a)},n.Path.prototype.absellipse=function(e,t,r,i,o,a,s){var h=Array.prototype.slice.call(arguments),c=new n.EllipseCurve(e,t,r,i,o,a,s);this.curves.push(c);var l=c.getPoint(1);h.push(l.x),h.push(l.y),this.actions.push({action:n.PathActions.ELLIPSE,args:h})},n.Path.prototype.getSpacedPoints=function(e,t){e||(e=40);for(var r=[],i=0;e>i;i++)r.push(this.getPoint(i/e));return r},n.Path.prototype.getPoints=function(e,t){if(this.useSpacedPoints)return console.log("tata"),this.getSpacedPoints(e,t);e=e||12;var r,i,o,a,s,h,c,l,u,d,p,f,m,g,v,y,x,b,w=[];for(r=0,i=this.actions.length;i>r;r++)switch(o=this.actions[r],a=o.action,s=o.args,a){case n.PathActions.MOVE_TO:w.push(new n.Vector2(s[0],s[1]));break;case n.PathActions.LINE_TO:w.push(new n.Vector2(s[0],s[1]));break;case n.PathActions.QUADRATIC_CURVE_TO:for(h=s[2],c=s[3],d=s[0],p=s[1],w.length>0?(g=w[w.length-1],f=g.x,m=g.y):(g=this.actions[r-1].args,f=g[g.length-2],m=g[g.length-1]),v=1;e>=v;v++)y=v/e,x=n.Shape.Utils.b2(y,f,d,h),b=n.Shape.Utils.b2(y,m,p,c),w.push(new n.Vector2(x,b));break;case n.PathActions.BEZIER_CURVE_TO:for(h=s[4],c=s[5],d=s[0],p=s[1],l=s[2],u=s[3],w.length>0?(g=w[w.length-1],f=g.x,m=g.y):(g=this.actions[r-1].args,f=g[g.length-2],m=g[g.length-1]),v=1;e>=v;v++)y=v/e,x=n.Shape.Utils.b3(y,f,d,l,h),b=n.Shape.Utils.b3(y,m,p,u,c),w.push(new n.Vector2(x,b));break;case n.PathActions.CSPLINE_THRU:g=this.actions[r-1].args;var A=new n.Vector2(g[g.length-2],g[g.length-1]),M=[A],S=e*s[0].length;M=M.concat(s[0]);var E=new n.SplineCurve(M);for(v=1;S>=v;v++)w.push(E.getPointAt(v/S));break;case n.PathActions.ARC:var T,C=s[0],P=s[1],L=s[2],_=s[3],R=s[4],B=!!s[5],F=R-_,z=2*e;for(v=1;z>=v;v++)y=v/z,B||(y=1-y),T=_+y*F,x=C+L*Math.cos(T),b=P+L*Math.sin(T),w.push(new n.Vector2(x,b));break;case n.PathActions.ELLIPSE:var T,C=s[0],P=s[1],D=s[2],O=s[3],_=s[4],R=s[5],B=!!s[6],F=R-_,z=2*e;for(v=1;z>=v;v++)y=v/z,B||(y=1-y),T=_+y*F,x=C+D*Math.cos(T),b=P+O*Math.sin(T),w.push(new n.Vector2(x,b))}var V=w[w.length-1],U=1e-10;return Math.abs(V.x-w[0].x)t;t++)i=e[t],a=i.args,o=i.action,o==n.PathActions.MOVE_TO&&0!=h.actions.length&&(s.push(h),h=new n.Path),h[o].apply(h,a);return 0!=h.actions.length&&s.push(h),s}function i(e){for(var t=[],r=0,i=e.length;i>r;r++){var o=e[r],a=new n.Shape;a.actions=o.actions,a.curves=o.curves,t.push(a)}return t}function o(e,t){for(var r=1e-10,i=t.length,n=!1,o=i-1,a=0;i>a;o=a++){var s=t[o],h=t[a],c=h.x-s.x,l=h.y-s.y;if(Math.abs(l)>r){if(0>l&&(s=t[a],c=-c,h=t[o],l=-l),e.yh.y)continue;if(e.y==s.y){if(e.x==s.x)return!0}else{var u=l*(e.x-s.x)-c*(e.y-s.y);if(0==u)return!0;if(0>u)continue;n=!n}}else{if(e.y!=s.y)continue;if(h.x<=e.x&&e.x<=s.x||s.x<=e.x&&e.x<=h.x)return!0}}return n}var a=r(this.actions);if(0==a.length)return[];if(t===!0)return i(a);var s,h,c,l=[];if(1==a.length)return h=a[0],c=new n.Shape,c.actions=h.actions,c.curves=h.curves,l.push(c),l;var u=!n.Shape.Utils.isClockWise(a[0].getPoints());u=e?!u:u;var d,p=[],f=[],m=[],g=0;f[g]=void 0,m[g]=[];var v,y;for(v=0,y=a.length;y>v;v++)h=a[v],d=h.getPoints(),s=n.Shape.Utils.isClockWise(d),s=e?!s:s,s?(!u&&f[g]&&g++,f[g]={s:new n.Shape,p:d},f[g].s.actions=h.actions,f[g].s.curves=h.curves,u&&g++,m[g]=[]):m[g].push({h:h,p:d[0]});if(!f[0])return i(a);if(f.length>1){for(var x=!1,b=[],w=0,A=f.length;A>w;w++)p[w]=[];for(var w=0,A=f.length;A>w;w++)for(var M=m[w],S=0;S0&&(x||(m=p))}var P,L,_;for(v=0,y=f.length;y>v;v++)for(c=f[v].s,l.push(c),P=m[v],L=0,_=P.length;_>L;L++)c.holes.push(P[L].h);return l},n.Shape=function(){n.Path.apply(this,arguments),this.holes=[]},n.Shape.prototype=Object.create(n.Path.prototype),n.Shape.prototype.constructor=n.Shape,n.Shape.prototype.extrude=function(e){var t=new n.ExtrudeGeometry(this,e);return t},n.Shape.prototype.makeGeometry=function(e){var t=new n.ShapeGeometry(this,e);return t},n.Shape.prototype.getPointsHoles=function(e){var t,r=this.holes.length,i=[];for(t=0;r>t;t++)i[t]=this.holes[t].getTransformedPoints(e,this.bends);return i},n.Shape.prototype.getSpacedPointsHoles=function(e){var t,r=this.holes.length,i=[];for(t=0;r>t;t++)i[t]=this.holes[t].getTransformedSpacedPoints(e,this.bends);return i},n.Shape.prototype.extractAllPoints=function(e){return{shape:this.getTransformedPoints(e),holes:this.getPointsHoles(e)}},n.Shape.prototype.extractPoints=function(e){return this.useSpacedPoints?this.extractAllSpacedPoints(e):this.extractAllPoints(e)},n.Shape.prototype.extractAllSpacedPoints=function(e){return{shape:this.getTransformedSpacedPoints(e),holes:this.getSpacedPointsHoles(e)}},n.Shape.Utils={triangulateShape:function(e,t){function r(e,t,r){return e.x!=t.x?e.xa){var m;if(p>0){if(0>f||f>p)return[];if(m=l*u-c*d,0>m||m>p)return[]}else{if(f>0||p>f)return[];if(m=l*u-c*d,m>0||p>m)return[]}if(0==m)return!o||0!=f&&f!=p?[e]:[];if(m==p)return!o||0!=f&&f!=p?[t]:[];if(0==f)return[i];if(f==p)return[n];var g=m/p;return[{x:e.x+g*s,y:e.y+g*h}]}if(0!=f||l*u!=c*d)return[];var v=0==s&&0==h,y=0==c&&0==l;if(v&&y)return e.x!=i.x||e.y!=i.y?[]:[e];if(v)return r(i,n,e)?[e]:[];if(y)return r(e,t,i)?[i]:[];var x,b,w,A,M,S,E,T;return 0!=s?(e.x=w?E>A?[]:A==E?o?[]:[M]:T>=A?[M,b]:[M,S]:w>T?[]:w==T?o?[]:[x]:T>=A?[x,b]:[x,S]}function o(e,t,r,i){var n=1e-10,o=t.x-e.x,a=t.y-e.y,s=r.x-e.x,h=r.y-e.y,c=i.x-e.x,l=i.y-e.y,u=o*h-a*s,d=o*l-a*c;if(Math.abs(u)>n){var p=c*h-l*s;return u>0?d>=0&&p>=0:d>=0||p>=0}return d>0}function a(e,t){function r(e,t){var r=y.length-1,i=e-1;0>i&&(i=r);var n=e+1;n>r&&(n=0);var a=o(y[e],y[i],y[n],s[t]);if(!a)return!1;var h=s.length-1,c=t-1;0>c&&(c=h);var l=t+1;return l>h&&(l=0),a=o(s[t],s[c],s[l],y[e]),a?!0:!1}function n(e,t){var r,n,o;for(r=0;r0)return!0;return!1}function a(e,r){var n,o,a,s,h;for(n=0;n0)return!0;return!1}for(var s,h,c,l,u,d,p,f,m,g,v,y=e.concat(),x=[],b=[],w=0,A=t.length;A>w;w++)x.push(w);for(var M=0,S=2*x.length;x.length>0;){if(S--,0>S){console.log("Infinite Loop! Holes left:"+x.length+", Probably Hole outside Shape!");break}for(c=M;c=0)break;b[p]=!0}if(h>=0)break}}return y}for(var s,h,c,l,u,d,p={},f=e.concat(),m=0,g=t.length;g>m;m++)Array.prototype.push.apply(f,t[m]);for(s=0,h=f.length;h>s;s++)u=f[s].x+":"+f[s].y,void 0!==p[u]&&n.warn("THREE.Shape: Duplicate point",u),p[u]=s;var v=a(e,t),y=n.FontUtils.Triangulate(v,!1);for(s=0,h=y.length;h>s;s++)for(l=y[s],c=0;3>c;c++)u=l[c].x+":"+l[c].y,d=p[u],void 0!==d&&(l[c]=d);return y.concat()},isClockWise:function(e){return n.FontUtils.Triangulate.area(e)<0},b2p0:function(e,t){var r=1-e;return r*r*t},b2p1:function(e,t){return 2*(1-e)*e*t},b2p2:function(e,t){return e*e*t},b2:function(e,t,r,i){return this.b2p0(e,t)+this.b2p1(e,r)+this.b2p2(e,i)},b3p0:function(e,t){var r=1-e;return r*r*r*t},b3p1:function(e,t){var r=1-e;return 3*r*r*e*t},b3p2:function(e,t){var r=1-e;return 3*r*e*e*t},b3p3:function(e,t){return e*e*e*t},b3:function(e,t,r,i,n){return this.b3p0(e,t)+this.b3p1(e,r)+this.b3p2(e,i)+this.b3p3(e,n)}},n.LineCurve=function(e,t){this.v1=e,this.v2=t},n.LineCurve.prototype=Object.create(n.Curve.prototype),n.LineCurve.prototype.constructor=n.LineCurve,n.LineCurve.prototype.getPoint=function(e){var t=this.v2.clone().sub(this.v1);return t.multiplyScalar(e).add(this.v1),t},n.LineCurve.prototype.getPointAt=function(e){return this.getPoint(e)},n.LineCurve.prototype.getTangent=function(e){var t=this.v2.clone().sub(this.v1);return t.normalize()},n.QuadraticBezierCurve=function(e,t,r){this.v0=e,this.v1=t,this.v2=r},n.QuadraticBezierCurve.prototype=Object.create(n.Curve.prototype),n.QuadraticBezierCurve.prototype.constructor=n.QuadraticBezierCurve,n.QuadraticBezierCurve.prototype.getPoint=function(e){var t=new n.Vector2;return t.x=n.Shape.Utils.b2(e,this.v0.x,this.v1.x,this.v2.x),t.y=n.Shape.Utils.b2(e,this.v0.y,this.v1.y,this.v2.y),t},n.QuadraticBezierCurve.prototype.getTangent=function(e){var t=new n.Vector2;return t.x=n.Curve.Utils.tangentQuadraticBezier(e,this.v0.x,this.v1.x,this.v2.x),t.y=n.Curve.Utils.tangentQuadraticBezier(e,this.v0.y,this.v1.y,this.v2.y),t.normalize()},n.CubicBezierCurve=function(e,t,r,i){this.v0=e,this.v1=t,this.v2=r,this.v3=i},n.CubicBezierCurve.prototype=Object.create(n.Curve.prototype),n.CubicBezierCurve.prototype.constructor=n.CubicBezierCurve,n.CubicBezierCurve.prototype.getPoint=function(e){var t,r;return t=n.Shape.Utils.b3(e,this.v0.x,this.v1.x,this.v2.x,this.v3.x),r=n.Shape.Utils.b3(e,this.v0.y,this.v1.y,this.v2.y,this.v3.y),new n.Vector2(t,r)},n.CubicBezierCurve.prototype.getTangent=function(e){var t,r;t=n.Curve.Utils.tangentCubicBezier(e,this.v0.x,this.v1.x,this.v2.x,this.v3.x),r=n.Curve.Utils.tangentCubicBezier(e,this.v0.y,this.v1.y,this.v2.y,this.v3.y);var i=new n.Vector2(t,r);return i.normalize(),i},n.SplineCurve=function(e){this.points=void 0==e?[]:e},n.SplineCurve.prototype=Object.create(n.Curve.prototype),n.SplineCurve.prototype.constructor=n.SplineCurve,n.SplineCurve.prototype.getPoint=function(e){var t=this.points,r=(t.length-1)*e,i=Math.floor(r),o=r-i,a=t[0==i?i:i-1],s=t[i],h=t[i>t.length-2?t.length-1:i+1],c=t[i>t.length-3?t.length-1:i+2],l=new n.Vector2;return l.x=n.Curve.Utils.interpolate(a.x,s.x,h.x,c.x,o),l.y=n.Curve.Utils.interpolate(a.y,s.y,h.y,c.y,o),l},n.EllipseCurve=function(e,t,r,i,n,o,a){this.aX=e,this.aY=t,this.xRadius=r,this.yRadius=i,this.aStartAngle=n,this.aEndAngle=o,this.aClockwise=a},n.EllipseCurve.prototype=Object.create(n.Curve.prototype),n.EllipseCurve.prototype.constructor=n.EllipseCurve,n.EllipseCurve.prototype.getPoint=function(e){var t=this.aEndAngle-this.aStartAngle;0>t&&(t+=2*Math.PI),t>2*Math.PI&&(t-=2*Math.PI);var r;r=this.aClockwise===!0?this.aEndAngle+(1-e)*(2*Math.PI-t):this.aStartAngle+e*t;var i=new n.Vector2;return i.x=this.aX+this.xRadius*Math.cos(r),i.y=this.aY+this.yRadius*Math.sin(r),i},n.ArcCurve=function(e,t,r,i,o,a){n.EllipseCurve.call(this,e,t,r,r,i,o,a)},n.ArcCurve.prototype=Object.create(n.EllipseCurve.prototype),n.ArcCurve.prototype.constructor=n.ArcCurve,n.LineCurve3=n.Curve.create(function(e,t){this.v1=e,this.v2=t},function(e){var t=new n.Vector3;return t.subVectors(this.v2,this.v1),t.multiplyScalar(e),t.add(this.v1),t}),n.QuadraticBezierCurve3=n.Curve.create(function(e,t,r){this.v0=e,this.v1=t,this.v2=r},function(e){var t=new n.Vector3;return t.x=n.Shape.Utils.b2(e,this.v0.x,this.v1.x,this.v2.x),t.y=n.Shape.Utils.b2(e,this.v0.y,this.v1.y,this.v2.y),t.z=n.Shape.Utils.b2(e,this.v0.z,this.v1.z,this.v2.z),t}),n.CubicBezierCurve3=n.Curve.create(function(e,t,r,i){this.v0=e,this.v1=t,this.v2=r,this.v3=i},function(e){var t=new n.Vector3;return t.x=n.Shape.Utils.b3(e,this.v0.x,this.v1.x,this.v2.x,this.v3.x),t.y=n.Shape.Utils.b3(e,this.v0.y,this.v1.y,this.v2.y,this.v3.y),t.z=n.Shape.Utils.b3(e,this.v0.z,this.v1.z,this.v2.z,this.v3.z),t}),n.SplineCurve3=n.Curve.create(function(e){this.points=void 0==e?[]:e},function(e){var t=this.points,r=(t.length-1)*e,i=Math.floor(r),o=r-i,a=t[0==i?i:i-1],s=t[i],h=t[i>t.length-2?t.length-1:i+1],c=t[i>t.length-3?t.length-1:i+2],l=new n.Vector3;return l.x=n.Curve.Utils.interpolate(a.x,s.x,h.x,c.x,o),l.y=n.Curve.Utils.interpolate(a.y,s.y,h.y,c.y,o),l.z=n.Curve.Utils.interpolate(a.z,s.z,h.z,c.z,o),l}),n.ClosedSplineCurve3=n.Curve.create(function(e){this.points=void 0==e?[]:e},function(e){var t=this.points,r=(t.length-0)*e,i=Math.floor(r),o=r-i;i+=i>0?0:(Math.floor(Math.abs(i)/t.length)+1)*t.length;var a=t[(i-1)%t.length],s=t[i%t.length],h=t[(i+1)%t.length],c=t[(i+2)%t.length],l=new n.Vector3;return l.x=n.Curve.Utils.interpolate(a.x,s.x,h.x,c.x,o),l.y=n.Curve.Utils.interpolate(a.y,s.y,h.y,c.y,o),l.z=n.Curve.Utils.interpolate(a.z,s.z,h.z,c.z,o),l}),n.AnimationHandler={LINEAR:0,CATMULLROM:1,CATMULLROM_FORWARD:2,add:function(){n.warn("THREE.AnimationHandler.add() has been deprecated.")},get:function(){n.warn("THREE.AnimationHandler.get() has been deprecated.")},remove:function(){n.warn("THREE.AnimationHandler.remove() has been deprecated.")},animations:[],init:function(e){if(e.initialized===!0)return e;for(var t=0;te;e++){var r=this.hierarchy[e];void 0===r.animationCache&&(r.animationCache={animations:{},blending:{positionWeight:0,quaternionWeight:0,scaleWeight:0}});var i=this.data.name,n=r.animationCache.animations,o=n[i];void 0===o&&(o={prevKey:{pos:0,rot:0,scl:0},nextKey:{pos:0,rot:0,scl:0},originalMatrix:r.matrix},n[i]=o);for(var a=0;3>a;a++){for(var s=this.keyTypes[a],h=this.data.hierarchy[e].keys[0],c=this.getNextKeyWith(s,e,1);c.timeh.index;)h=c,c=this.getNextKeyWith(s,e,c.index+1);o.prevKey[s]=h,o.nextKey[s]=c}}},resetBlendWeights:function(){for(var e=0,t=this.hierarchy.length;t>e;e++){var r=this.hierarchy[e],i=r.animationCache;if(void 0!==i){var n=i.blending;n.positionWeight=0,n.quaternionWeight=0,n.scaleWeight=0}}},update:function(){var e=[],t=new n.Vector3,r=new n.Vector3,i=new n.Quaternion,o=function(e,t){var r,i,n,o,s,h,c,l,u,d=[],p=[];return r=(e.length-1)*t,i=Math.floor(r),n=r-i,d[0]=0===i?i:i-1,d[1]=i,d[2]=i>e.length-2?i:i+1,d[3]=i>e.length-3?i:i+2,h=e[d[0]],c=e[d[1]],l=e[d[2]],u=e[d[3]],o=n*n,s=n*o,p[0]=a(h[0],c[0],l[0],u[0],n,o,s),p[1]=a(h[1],c[1],l[1],u[1],n,o,s),p[2]=a(h[2],c[2],l[2],u[2],n,o,s),p},a=function(e,t,r,i,n,o,a){var s=.5*(r-e),h=.5*(i-t);return(2*(t-r)+s+h)*a+(-3*(t-r)-2*s-h)*o+s*n+t};return function(a){if(this.isPlaying!==!1&&(this.currentTime+=a*this.timeScale,0!==this.weight)){var s=this.data.length;(this.currentTime>s||this.currentTime<0)&&(this.loop?(this.currentTime%=s,this.currentTime<0&&(this.currentTime+=s),this.reset()):this.stop());for(var h=0,c=this.hierarchy.length;c>h;h++)for(var l=this.hierarchy[h],u=l.animationCache.animations[this.data.name],d=l.animationCache.blending,p=0;3>p;p++){var f=this.keyTypes[p],m=u.prevKey[f],g=u.nextKey[f];if(this.timeScale>0&&g.time<=this.currentTime||this.timeScale<0&&m.time>=this.currentTime){for(m=this.data.hierarchy[h].keys[0],g=this.getNextKeyWith(f,h,1);g.timem.index;)m=g,g=this.getNextKeyWith(f,h,g.index+1);u.prevKey[f]=m,u.nextKey[f]=g}var v=(this.currentTime-m.time)/(g.time-m.time),y=m[f],x=g[f];if(0>v&&(v=0),v>1&&(v=1),"pos"===f){if(this.interpolationType===n.AnimationHandler.LINEAR){r.x=y[0]+(x[0]-y[0])*v,r.y=y[1]+(x[1]-y[1])*v,r.z=y[2]+(x[2]-y[2])*v;var b=this.weight/(this.weight+d.positionWeight);l.position.lerp(r,b),d.positionWeight+=this.weight}else if(this.interpolationType===n.AnimationHandler.CATMULLROM||this.interpolationType===n.AnimationHandler.CATMULLROM_FORWARD){e[0]=this.getPrevKeyWith("pos",h,m.index-1).pos,e[1]=y,e[2]=x,e[3]=this.getNextKeyWith("pos",h,g.index+1).pos,v=.33*v+.33;var w=o(e,v),b=this.weight/(this.weight+d.positionWeight);d.positionWeight+=this.weight;var A=l.position;if(A.x=A.x+(w[0]-A.x)*b,A.y=A.y+(w[1]-A.y)*b,A.z=A.z+(w[2]-A.z)*b,this.interpolationType===n.AnimationHandler.CATMULLROM_FORWARD){var M=o(e,1.01*v);t.set(M[0],M[1],M[2]),t.sub(A),t.y=0,t.normalize();var S=Math.atan2(t.x,t.z);l.rotation.set(0,S,0)}}}else if("rot"===f)if(n.Quaternion.slerp(y,x,i,v),0===d.quaternionWeight)l.quaternion.copy(i),d.quaternionWeight=this.weight;else{var b=this.weight/(this.weight+d.quaternionWeight);n.Quaternion.slerp(l.quaternion,i,l.quaternion,b),d.quaternionWeight+=this.weight}else if("scl"===f){r.x=y[0]+(x[0]-y[0])*v,r.y=y[1]+(x[1]-y[1])*v,r.z=y[2]+(x[2]-y[2])*v;var b=this.weight/(this.weight+d.scaleWeight);l.scale.lerp(r,b),d.scaleWeight+=this.weight}}return!0}}}(),getNextKeyWith:function(e,t,r){var i=this.data.hierarchy[t].keys;for(this.interpolationType===n.AnimationHandler.CATMULLROM||this.interpolationType===n.AnimationHandler.CATMULLROM_FORWARD?r=r0?r:0:r>=0?r:r+i.length;r>=0;r--)if(void 0!==i[r][e])return i[r];return this.data.hierarchy[t].keys[i.length-1]}},n.KeyFrameAnimation=function(e){this.root=e.node,this.data=n.AnimationHandler.init(e),this.hierarchy=n.AnimationHandler.parse(this.root),this.currentTime=0,this.timeScale=.001,this.isPlaying=!1,this.isPaused=!0,this.loop=!0;for(var t=0,r=this.hierarchy.length;r>t;t++){var i=this.data.hierarchy[t].keys,o=this.data.hierarchy[t].sids,a=this.hierarchy[t];if(i.length&&o){for(var s=0;st;t++){r=this.hierarchy[t],i=this.data.hierarchy[t],void 0===i.animationCache&&(i.animationCache={},i.animationCache.prevKey=null,i.animationCache.nextKey=null,i.animationCache.originalMatrix=r.matrix);var a=this.data.hierarchy[t].keys;a.length&&(i.animationCache.prevKey=a[0],i.animationCache.nextKey=a[1],this.startTime=Math.min(a[0].time,this.startTime),this.endTime=Math.max(a[a.length-1].time,this.endTime))}this.update(0)}this.isPaused=!1,n.AnimationHandler.play(this)},stop:function(){this.isPlaying=!1,this.isPaused=!1,n.AnimationHandler.stop(this);for(var e=0;et&&(this.currentTime%=t),this.currentTime=Math.min(this.currentTime,t);for(var r=0,i=this.hierarchy.length;i>r;r++){var n=this.hierarchy[r],o=this.data.hierarchy[r],a=o.keys,s=o.animationCache;if(a.length){var h=s.prevKey,c=s.nextKey;if(c.time<=this.currentTime){for(;c.timeh.index;)h=c,c=a[h.index+1];s.prevKey=h,s.nextKey=c}c.time>=this.currentTime?h.interpolate(c,this.currentTime):h.interpolate(c,c.time),this.data.hierarchy[r].node.updateMatrix(),n.matrixWorldNeedsUpdate=!0}}}},getNextKeyWith:function(e,t,r){var i=this.data.hierarchy[t].keys;for(r%=i.length;r=0?r:r+i.length;r>=0;r--)if(i[r].hasTarget(e))return i[r];return i[i.length-1]}},n.MorphAnimation=function(e){this.mesh=e,this.frames=e.morphTargetInfluences.length,this.currentTime=0,this.duration=1e3,this.loop=!0,this.lastFrame=0,this.currentFrame=0,this.isPlaying=!1},n.MorphAnimation.prototype={constructor:n.MorphAnimation,play:function(){this.isPlaying=!0},pause:function(){this.isPlaying=!1},update:function(e){if(this.isPlaying!==!1){this.currentTime+=e,this.loop===!0&&this.currentTime>this.duration&&(this.currentTime%=this.duration),this.currentTime=Math.min(this.currentTime,this.duration);var t=this.duration/this.frames,r=Math.floor(this.currentTime/t),i=this.mesh.morphTargetInfluences;r!=this.currentFrame&&(i[this.lastFrame]=0,i[this.currentFrame]=1,i[r]=0,this.lastFrame=this.currentFrame,this.currentFrame=r),i[r]=this.currentTime%t/t,i[this.lastFrame]=1-i[r]}}},n.BoxGeometry=function(e,t,r,i,o,a){function s(e,t,r,i,o,a,s,c){var l,u,d,p=h.widthSegments,f=h.heightSegments,m=o/2,g=a/2,v=h.vertices.length;"x"===e&&"y"===t||"y"===e&&"x"===t?l="z":"x"===e&&"z"===t||"z"===e&&"x"===t?(l="y",f=h.depthSegments):("z"===e&&"y"===t||"y"===e&&"z"===t)&&(l="x",p=h.depthSegments);var y=p+1,x=f+1,b=o/p,w=a/f,A=new n.Vector3;for(A[l]=s>0?1:-1,d=0;x>d;d++)for(u=0;y>u;u++){var M=new n.Vector3;M[e]=(u*b-m)*r,M[t]=(d*w-g)*i,M[l]=s,h.vertices.push(M)}for(d=0;f>d;d++)for(u=0;p>u;u++){var S=u+y*d,E=u+y*(d+1),T=u+1+y*(d+1),C=u+1+y*d,P=new n.Vector2(u/p,1-d/f),L=new n.Vector2(u/p,1-(d+1)/f),_=new n.Vector2((u+1)/p,1-(d+1)/f),R=new n.Vector2((u+1)/p,1-d/f),B=new n.Face3(S+v,E+v,C+v);B.normal.copy(A),B.vertexNormals.push(A.clone(),A.clone(),A.clone()),B.materialIndex=c,h.faces.push(B),h.faceVertexUvs[0].push([P,L,R]),B=new n.Face3(E+v,T+v,C+v),B.normal.copy(A),B.vertexNormals.push(A.clone(),A.clone(),A.clone()),B.materialIndex=c,h.faces.push(B),h.faceVertexUvs[0].push([L.clone(),_,R.clone()])}}n.Geometry.call(this),this.type="BoxGeometry",this.parameters={width:e,height:t,depth:r,widthSegments:i,heightSegments:o,depthSegments:a},this.widthSegments=i||1,this.heightSegments=o||1,this.depthSegments=a||1;var h=this,c=e/2,l=t/2,u=r/2;s("z","y",-1,-1,r,t,c,0),s("z","y",1,-1,r,t,-c,1),s("x","z",1,1,e,r,l,2),s("x","z",1,-1,e,r,-l,3),s("x","y",1,-1,e,t,u,4),s("x","y",-1,-1,e,t,-u,5),this.mergeVertices()},n.BoxGeometry.prototype=Object.create(n.Geometry.prototype),n.BoxGeometry.prototype.constructor=n.BoxGeometry,n.CircleGeometry=function(e,t,r,i){n.Geometry.call(this),this.type="CircleGeometry",this.parameters={radius:e,segments:t,thetaStart:r,thetaLength:i},e=e||50,t=void 0!==t?Math.max(3,t):8,r=void 0!==r?r:0,i=void 0!==i?i:2*Math.PI;var o,a=[],s=new n.Vector3,h=new n.Vector2(.5,.5);for(this.vertices.push(s),a.push(h),o=0;t>=o;o++){var c=new n.Vector3,l=r+o/t*i;c.x=e*Math.cos(l),c.y=e*Math.sin(l),this.vertices.push(c),a.push(new n.Vector2((c.x/e+1)/2,(c.y/e+1)/2))}var u=new n.Vector3(0,0,1);for(o=1;t>=o;o++)this.faces.push(new n.Face3(o,o+1,0,[u.clone(),u.clone(),u.clone()])),this.faceVertexUvs[0].push([a[o].clone(),a[o+1].clone(),h.clone()]);this.computeFaceNormals(),this.boundingSphere=new n.Sphere(new n.Vector3,e)},n.CircleGeometry.prototype=Object.create(n.Geometry.prototype),n.CircleGeometry.prototype.constructor=n.CircleGeometry,n.CubeGeometry=function(e,t,r,i,o,a){return n.warn("THREE.CubeGeometry has been renamed to THREE.BoxGeometry."),new n.BoxGeometry(e,t,r,i,o,a)},n.CylinderGeometry=function(e,t,r,i,o,a,s,h){n.Geometry.call(this),this.type="CylinderGeometry",this.parameters={radiusTop:e,radiusBottom:t,height:r,radialSegments:i,heightSegments:o,openEnded:a,thetaStart:s,thetaLength:h},e=void 0!==e?e:20,t=void 0!==t?t:20,r=void 0!==r?r:100,i=i||8,o=o||1,a=void 0!==a?a:!1,s=void 0!==s?s:0,h=void 0!==h?h:2*Math.PI;var c,l,u=r/2,d=[],p=[];for(l=0;o>=l;l++){var f=[],m=[],g=l/o,v=g*(t-e)+e;for(c=0;i>=c;c++){var y=c/i,x=new n.Vector3;x.x=v*Math.sin(y*h+s),x.y=-g*r+u,x.z=v*Math.cos(y*h+s),this.vertices.push(x),f.push(this.vertices.length-1),m.push(new n.Vector2(y,1-g))}d.push(f),p.push(m)}var b,w,A=(t-e)/r;for(c=0;i>c;c++)for(0!==e?(b=this.vertices[d[0][c]].clone(),w=this.vertices[d[0][c+1]].clone()):(b=this.vertices[d[1][c]].clone(),w=this.vertices[d[1][c+1]].clone()),b.setY(Math.sqrt(b.x*b.x+b.z*b.z)*A).normalize(),w.setY(Math.sqrt(w.x*w.x+w.z*w.z)*A).normalize(),l=0;o>l;l++){var M=d[l][c],S=d[l+1][c],E=d[l+1][c+1],T=d[l][c+1],C=b.clone(),P=b.clone(),L=w.clone(),_=w.clone(),R=p[l][c].clone(),B=p[l+1][c].clone(),F=p[l+1][c+1].clone(),z=p[l][c+1].clone();this.faces.push(new n.Face3(M,S,T,[C,P,_])),this.faceVertexUvs[0].push([R,B,z]),this.faces.push(new n.Face3(S,E,T,[P.clone(),L,_.clone()])),this.faceVertexUvs[0].push([B.clone(),F,z.clone()])}if(a===!1&&e>0)for(this.vertices.push(new n.Vector3(0,u,0)),c=0;i>c;c++){var M=d[0][c],S=d[0][c+1],E=this.vertices.length-1,C=new n.Vector3(0,1,0),P=new n.Vector3(0,1,0),L=new n.Vector3(0,1,0),R=p[0][c].clone(),B=p[0][c+1].clone(),F=new n.Vector2(B.x,0);this.faces.push(new n.Face3(M,S,E,[C,P,L])),this.faceVertexUvs[0].push([R,B,F])}if(a===!1&&t>0)for(this.vertices.push(new n.Vector3(0,-u,0)),c=0;i>c;c++){var M=d[o][c+1],S=d[o][c],E=this.vertices.length-1,C=new n.Vector3(0,-1,0),P=new n.Vector3(0,-1,0),L=new n.Vector3(0,-1,0),R=p[o][c+1].clone(),B=p[o][c].clone(),F=new n.Vector2(B.x,1);this.faces.push(new n.Face3(M,S,E,[C,P,L])),this.faceVertexUvs[0].push([R,B,F])}this.computeFaceNormals()},n.CylinderGeometry.prototype=Object.create(n.Geometry.prototype),n.CylinderGeometry.prototype.constructor=n.CylinderGeometry,n.ExtrudeGeometry=function(e,t){return"undefined"==typeof e?void(e=[]):(n.Geometry.call(this),this.type="ExtrudeGeometry",e=e instanceof Array?e:[e],this.addShapeList(e,t),void this.computeFaceNormals())},n.ExtrudeGeometry.prototype=Object.create(n.Geometry.prototype),n.ExtrudeGeometry.prototype.constructor=n.ExtrudeGeometry,n.ExtrudeGeometry.prototype.addShapeList=function(e,t){for(var r=e.length,i=0;r>i;i++){var n=e[i];this.addShape(n,t)}},n.ExtrudeGeometry.prototype.addShape=function(e,t){function r(e,t,r){return t||n.error("THREE.ExtrudeGeometry: vec does not exist"),t.clone().multiplyScalar(r).add(e)}function i(e,t,r){var i,o,a=1e-10,s=1,h=e.x-t.x,c=e.y-t.y,l=r.x-e.x,u=r.y-e.y,d=h*h+c*c,p=h*u-c*l;if(Math.abs(p)>a){var f=Math.sqrt(d),m=Math.sqrt(l*l+u*u),g=t.x-c/f,v=t.y+h/f,y=r.x-u/m,x=r.y+l/m,b=((y-g)*u-(x-v)*l)/(h*u-c*l);i=g+h*b-e.x,o=v+c*b-e.y;var w=i*i+o*o;if(2>=w)return new n.Vector2(i,o);s=Math.sqrt(w/2)}else{var A=!1; h>a?l>a&&(A=!0):-a>h?-a>l&&(A=!0):Math.sign(c)==Math.sign(u)&&(A=!0),A?(i=-c,o=h,s=Math.sqrt(d)):(i=h,o=c,s=Math.sqrt(d/2))}return new n.Vector2(i/s,o/s)}function o(){if(b){var e=0,t=W*e;for(Q=0;X>Q;Q++)j=V[Q],c(j[2]+t,j[1]+t,j[0]+t);for(e=A+2*x,t=W*e,Q=0;X>Q;Q++)j=V[Q],c(j[0]+t,j[1]+t,j[2]+t)}else{for(Q=0;X>Q;Q++)j=V[Q],c(j[2],j[1],j[0]);for(Q=0;X>Q;Q++)j=V[Q],c(j[0]+W*A,j[1]+W*A,j[2]+W*A)}}function a(){var e=0;for(s(U,e),e+=U.length,L=0,_=D.length;_>L;L++)P=D[L],s(P,e),e+=P.length}function s(e,t){var r,i;for(Q=e.length;--Q>=0;){r=Q,i=Q-1,0>i&&(i=e.length-1);var n=0,o=A+2*x;for(n=0;o>n;n++){var a=W*n,s=W*(n+1),h=t+r+a,c=t+i+a,u=t+i+s,d=t+r+s;l(h,c,u,d,e,n,o,r,i)}}}function h(e,t,r){R.vertices.push(new n.Vector3(e,t,r))}function c(e,t,r){e+=B,t+=B,r+=B,R.faces.push(new n.Face3(e,t,r,null,null,E));var i=C.generateTopUV(R,e,t,r);R.faceVertexUvs[0].push(i)}function l(e,t,r,i,o,a,s,h,c){e+=B,t+=B,r+=B,i+=B,R.faces.push(new n.Face3(e,t,i,null,null,T)),R.faces.push(new n.Face3(t,r,i,null,null,T));var l=C.generateSideWallUV(R,e,t,r,i);R.faceVertexUvs[0].push([l[0],l[1],l[3]]),R.faceVertexUvs[0].push([l[1],l[2],l[3]])}var u,d,p,f,m,g=void 0!==t.amount?t.amount:100,v=void 0!==t.bevelThickness?t.bevelThickness:6,y=void 0!==t.bevelSize?t.bevelSize:v-2,x=void 0!==t.bevelSegments?t.bevelSegments:3,b=void 0!==t.bevelEnabled?t.bevelEnabled:!0,w=void 0!==t.curveSegments?t.curveSegments:12,A=void 0!==t.steps?t.steps:1,M=t.extrudePath,S=!1,E=t.material,T=t.extrudeMaterial,C=void 0!==t.UVGenerator?t.UVGenerator:n.ExtrudeGeometry.WorldUVGenerator;M&&(u=M.getSpacedPoints(A),S=!0,b=!1,d=void 0!==t.frames?t.frames:new n.TubeGeometry.FrenetFrames(M,A,!1),p=new n.Vector3,f=new n.Vector3,m=new n.Vector3),b||(x=0,v=0,y=0);var P,L,_,R=this,B=this.vertices.length,F=e.extractPoints(w),z=F.shape,D=F.holes,O=!n.Shape.Utils.isClockWise(z);if(O){for(z=z.reverse(),L=0,_=D.length;_>L;L++)P=D[L],n.Shape.Utils.isClockWise(P)&&(D[L]=P.reverse());O=!1}var V=n.Shape.Utils.triangulateShape(z,D),U=z;for(L=0,_=D.length;_>L;L++)P=D[L],z=z.concat(P);for(var k,N,G,H,I,j,W=z.length,X=V.length,Y=[],Q=0,q=U.length,K=q-1,Z=Q+1;q>Q;Q++,K++,Z++)K===q&&(K=0),Z===q&&(Z=0),Y[Q]=i(U[Q],U[K],U[Z]);var J,$=[],ee=Y.concat();for(L=0,_=D.length;_>L;L++){for(P=D[L],J=[],Q=0,q=P.length,K=q-1,Z=Q+1;q>Q;Q++,K++,Z++)K===q&&(K=0),Z===q&&(Z=0),J[Q]=i(P[Q],P[K],P[Z]);$.push(J),ee=ee.concat(J)}for(k=0;x>k;k++){for(G=k/x,H=v*(1-G),N=y*Math.sin(G*Math.PI/2),Q=0,q=U.length;q>Q;Q++)I=r(U[Q],Y[Q],N),h(I.x,I.y,-H);for(L=0,_=D.length;_>L;L++)for(P=D[L],J=$[L],Q=0,q=P.length;q>Q;Q++)I=r(P[Q],J[Q],N),h(I.x,I.y,-H)}for(N=y,Q=0;W>Q;Q++)I=b?r(z[Q],ee[Q],N):z[Q],S?(f.copy(d.normals[0]).multiplyScalar(I.x),p.copy(d.binormals[0]).multiplyScalar(I.y),m.copy(u[0]).add(f).add(p),h(m.x,m.y,m.z)):h(I.x,I.y,0);var te;for(te=1;A>=te;te++)for(Q=0;W>Q;Q++)I=b?r(z[Q],ee[Q],N):z[Q],S?(f.copy(d.normals[te]).multiplyScalar(I.x),p.copy(d.binormals[te]).multiplyScalar(I.y),m.copy(u[te]).add(f).add(p),h(m.x,m.y,m.z)):h(I.x,I.y,g/A*te);for(k=x-1;k>=0;k--){for(G=k/x,H=v*(1-G),N=y*Math.sin(G*Math.PI/2),Q=0,q=U.length;q>Q;Q++)I=r(U[Q],Y[Q],N),h(I.x,I.y,g+H);for(L=0,_=D.length;_>L;L++)for(P=D[L],J=$[L],Q=0,q=P.length;q>Q;Q++)I=r(P[Q],J[Q],N),S?h(I.x,I.y+u[A-1].y,u[A-1].x+H):h(I.x,I.y,g+H)}o(),a()},n.ExtrudeGeometry.WorldUVGenerator={generateTopUV:function(e,t,r,i){var o=e.vertices,a=o[t],s=o[r],h=o[i];return[new n.Vector2(a.x,a.y),new n.Vector2(s.x,s.y),new n.Vector2(h.x,h.y)]},generateSideWallUV:function(e,t,r,i,o){var a=e.vertices,s=a[t],h=a[r],c=a[i],l=a[o];return Math.abs(s.y-h.y)<.01?[new n.Vector2(s.x,1-s.z),new n.Vector2(h.x,1-h.z),new n.Vector2(c.x,1-c.z),new n.Vector2(l.x,1-l.z)]:[new n.Vector2(s.y,1-s.z),new n.Vector2(h.y,1-h.z),new n.Vector2(c.y,1-c.z),new n.Vector2(l.y,1-l.z)]}},n.ShapeGeometry=function(e,t){n.Geometry.call(this),this.type="ShapeGeometry",e instanceof Array==!1&&(e=[e]),this.addShapeList(e,t),this.computeFaceNormals()},n.ShapeGeometry.prototype=Object.create(n.Geometry.prototype),n.ShapeGeometry.prototype.constructor=n.ShapeGeometry,n.ShapeGeometry.prototype.addShapeList=function(e,t){for(var r=0,i=e.length;i>r;r++)this.addShape(e[r],t);return this},n.ShapeGeometry.prototype.addShape=function(e,t){void 0===t&&(t={});var r,i,o,a=void 0!==t.curveSegments?t.curveSegments:12,s=t.material,h=void 0===t.UVGenerator?n.ExtrudeGeometry.WorldUVGenerator:t.UVGenerator,c=this.vertices.length,l=e.extractPoints(a),u=l.shape,d=l.holes,p=!n.Shape.Utils.isClockWise(u);if(p){for(u=u.reverse(),r=0,i=d.length;i>r;r++)o=d[r],n.Shape.Utils.isClockWise(o)&&(d[r]=o.reverse());p=!1}var f=n.Shape.Utils.triangulateShape(u,d);for(r=0,i=d.length;i>r;r++)o=d[r],u=u.concat(o);var m,g,v=u.length,y=f.length;for(r=0;v>r;r++)m=u[r],this.vertices.push(new n.Vector3(m.x,m.y,0));for(r=0;y>r;r++){g=f[r];var x=g[0]+c,b=g[1]+c,w=g[2]+c;this.faces.push(new n.Face3(x,b,w,null,null,s)),this.faceVertexUvs[0].push(h.generateTopUV(this,x,b,w))}},n.LatheGeometry=function(e,t,r,i){n.Geometry.call(this),this.type="LatheGeometry",this.parameters={points:e,segments:t,phiStart:r,phiLength:i},t=t||12,r=r||0,i=i||2*Math.PI;for(var o=1/(e.length-1),a=1/t,s=0,h=t;h>=s;s++)for(var c=r+s*a*i,l=Math.cos(c),u=Math.sin(c),d=0,p=e.length;p>d;d++){var f=e[d],m=new n.Vector3;m.x=l*f.x-u*f.y,m.y=u*f.x+l*f.y,m.z=f.z,this.vertices.push(m)}for(var g=e.length,s=0,h=t;h>s;s++)for(var d=0,p=e.length-1;p>d;d++){var v=d+g*s,y=v,x=v+g,l=v+1+g,b=v+1,w=s*a,A=d*o,M=w+a,S=A+o;this.faces.push(new n.Face3(y,x,b)),this.faceVertexUvs[0].push([new n.Vector2(w,A),new n.Vector2(M,A),new n.Vector2(w,S)]),this.faces.push(new n.Face3(x,l,b)),this.faceVertexUvs[0].push([new n.Vector2(M,A),new n.Vector2(M,S),new n.Vector2(w,S)])}this.mergeVertices(),this.computeFaceNormals(),this.computeVertexNormals()},n.LatheGeometry.prototype=Object.create(n.Geometry.prototype),n.LatheGeometry.prototype.constructor=n.LatheGeometry,n.PlaneGeometry=function(e,t,r,i){console.info("THREE.PlaneGeometry: Consider using THREE.PlaneBufferGeometry for lower memory footprint."),n.Geometry.call(this),this.type="PlaneGeometry",this.parameters={width:e,height:t,widthSegments:r,heightSegments:i},this.fromBufferGeometry(new n.PlaneBufferGeometry(e,t,r,i))},n.PlaneGeometry.prototype=Object.create(n.Geometry.prototype),n.PlaneGeometry.prototype.constructor=n.PlaneGeometry,n.PlaneBufferGeometry=function(e,t,r,i){n.BufferGeometry.call(this),this.type="PlaneBufferGeometry",this.parameters={width:e,height:t,widthSegments:r,heightSegments:i};for(var o=e/2,a=t/2,s=r||1,h=i||1,c=s+1,l=h+1,u=e/s,d=t/h,p=new Float32Array(c*l*3),f=new Float32Array(c*l*3),m=new Float32Array(c*l*2),g=0,v=0,y=0;l>y;y++)for(var x=y*d-a,b=0;c>b;b++){var w=b*u-o;p[g]=w,p[g+1]=-x,f[g+2]=1,m[v]=b/s,m[v+1]=1-y/h,g+=3,v+=2}g=0;for(var A=new(p.length/3>65535?Uint32Array:Uint16Array)(s*h*6),y=0;h>y;y++)for(var b=0;s>b;b++){var M=b+c*y,S=b+c*(y+1),E=b+1+c*(y+1),T=b+1+c*y;A[g]=M,A[g+1]=S,A[g+2]=T,A[g+3]=S,A[g+4]=E,A[g+5]=T,g+=6}this.addAttribute("index",new n.BufferAttribute(A,1)),this.addAttribute("position",new n.BufferAttribute(p,3)),this.addAttribute("normal",new n.BufferAttribute(f,3)),this.addAttribute("uv",new n.BufferAttribute(m,2))},n.PlaneBufferGeometry.prototype=Object.create(n.BufferGeometry.prototype),n.PlaneBufferGeometry.prototype.constructor=n.PlaneBufferGeometry,n.RingGeometry=function(e,t,r,i,o,a){n.Geometry.call(this),this.type="RingGeometry",this.parameters={innerRadius:e,outerRadius:t,thetaSegments:r,phiSegments:i,thetaStart:o,thetaLength:a},e=e||0,t=t||50,o=void 0!==o?o:0,a=void 0!==a?a:2*Math.PI,r=void 0!==r?Math.max(3,r):8,i=void 0!==i?Math.max(1,i):8;var s,h,c=[],l=e,u=(t-e)/i;for(s=0;i+1>s;s++){for(h=0;r+1>h;h++){var d=new n.Vector3,p=o+h/r*a;d.x=l*Math.cos(p),d.y=l*Math.sin(p),this.vertices.push(d),c.push(new n.Vector2((d.x/t+1)/2,(d.y/t+1)/2))}l+=u}var f=new n.Vector3(0,0,1);for(s=0;i>s;s++){var m=s*(r+1);for(h=0;r>h;h++){var p=h+m,g=p,v=p+r+1,y=p+r+2;this.faces.push(new n.Face3(g,v,y,[f.clone(),f.clone(),f.clone()])),this.faceVertexUvs[0].push([c[g].clone(),c[v].clone(),c[y].clone()]),g=p,v=p+r+2,y=p+1,this.faces.push(new n.Face3(g,v,y,[f.clone(),f.clone(),f.clone()])),this.faceVertexUvs[0].push([c[g].clone(),c[v].clone(),c[y].clone()])}}this.computeFaceNormals(),this.boundingSphere=new n.Sphere(new n.Vector3,l)},n.RingGeometry.prototype=Object.create(n.Geometry.prototype),n.RingGeometry.prototype.constructor=n.RingGeometry,n.SphereGeometry=function(e,t,r,i,o,a,s){n.Geometry.call(this),this.type="SphereGeometry",this.parameters={radius:e,widthSegments:t,heightSegments:r,phiStart:i,phiLength:o,thetaStart:a,thetaLength:s},e=e||50,t=Math.max(3,Math.floor(t)||8),r=Math.max(2,Math.floor(r)||6),i=void 0!==i?i:0,o=void 0!==o?o:2*Math.PI,a=void 0!==a?a:0,s=void 0!==s?s:Math.PI;var h,c,l=[],u=[];for(c=0;r>=c;c++){var d=[],p=[];for(h=0;t>=h;h++){var f=h/t,m=c/r,g=new n.Vector3;g.x=-e*Math.cos(i+f*o)*Math.sin(a+m*s),g.y=e*Math.cos(a+m*s),g.z=e*Math.sin(i+f*o)*Math.sin(a+m*s),this.vertices.push(g),d.push(this.vertices.length-1),p.push(new n.Vector2(f,1-m))}l.push(d),u.push(p)}for(c=0;r>c;c++)for(h=0;t>h;h++){var v=l[c][h+1],y=l[c][h],x=l[c+1][h],b=l[c+1][h+1],w=this.vertices[v].clone().normalize(),A=this.vertices[y].clone().normalize(),M=this.vertices[x].clone().normalize(),S=this.vertices[b].clone().normalize(),E=u[c][h+1].clone(),T=u[c][h].clone(),C=u[c+1][h].clone(),P=u[c+1][h+1].clone();Math.abs(this.vertices[v].y)===e?(E.x=(E.x+T.x)/2,this.faces.push(new n.Face3(v,x,b,[w,M,S])),this.faceVertexUvs[0].push([E,C,P])):Math.abs(this.vertices[x].y)===e?(C.x=(C.x+P.x)/2,this.faces.push(new n.Face3(v,y,x,[w,A,M])),this.faceVertexUvs[0].push([E,T,C])):(this.faces.push(new n.Face3(v,y,b,[w,A,S])),this.faceVertexUvs[0].push([E,T,P]),this.faces.push(new n.Face3(y,x,b,[A.clone(),M,S.clone()])),this.faceVertexUvs[0].push([T.clone(),C,P.clone()]))}this.computeFaceNormals(),this.boundingSphere=new n.Sphere(new n.Vector3,e)},n.SphereGeometry.prototype=Object.create(n.Geometry.prototype),n.SphereGeometry.prototype.constructor=n.SphereGeometry,n.TextGeometry=function(e,t){t=t||{};var r=n.FontUtils.generateShapes(e,t);t.amount=void 0!==t.height?t.height:50,void 0===t.bevelThickness&&(t.bevelThickness=10),void 0===t.bevelSize&&(t.bevelSize=8),void 0===t.bevelEnabled&&(t.bevelEnabled=!1),n.ExtrudeGeometry.call(this,r,t),this.type="TextGeometry"},n.TextGeometry.prototype=Object.create(n.ExtrudeGeometry.prototype),n.TextGeometry.prototype.constructor=n.TextGeometry,n.TorusGeometry=function(e,t,r,i,o){n.Geometry.call(this),this.type="TorusGeometry",this.parameters={radius:e,tube:t,radialSegments:r,tubularSegments:i,arc:o},e=e||100,t=t||40,r=r||8,i=i||6,o=o||2*Math.PI;for(var a=new n.Vector3,s=[],h=[],c=0;r>=c;c++)for(var l=0;i>=l;l++){var u=l/i*o,d=c/r*Math.PI*2;a.x=e*Math.cos(u),a.y=e*Math.sin(u);var p=new n.Vector3;p.x=(e+t*Math.cos(d))*Math.cos(u),p.y=(e+t*Math.cos(d))*Math.sin(u),p.z=t*Math.sin(d),this.vertices.push(p),s.push(new n.Vector2(l/i,c/r)),h.push(p.clone().sub(a).normalize())}for(var c=1;r>=c;c++)for(var l=1;i>=l;l++){var f=(i+1)*c+l-1,m=(i+1)*(c-1)+l-1,g=(i+1)*(c-1)+l,v=(i+1)*c+l,y=new n.Face3(f,m,v,[h[f].clone(),h[m].clone(),h[v].clone()]);this.faces.push(y),this.faceVertexUvs[0].push([s[f].clone(),s[m].clone(),s[v].clone()]),y=new n.Face3(m,g,v,[h[m].clone(),h[g].clone(),h[v].clone()]),this.faces.push(y),this.faceVertexUvs[0].push([s[m].clone(),s[g].clone(),s[v].clone()])}this.computeFaceNormals()},n.TorusGeometry.prototype=Object.create(n.Geometry.prototype),n.TorusGeometry.prototype.constructor=n.TorusGeometry,n.TorusKnotGeometry=function(e,t,r,i,o,a,s){function h(e,t,r,i,o){var a=Math.cos(e),s=Math.sin(e),h=t/r*e,c=Math.cos(h),l=i*(2+c)*.5*a,u=i*(2+c)*s*.5,d=o*i*Math.sin(h)*.5;return new n.Vector3(l,u,d)}n.Geometry.call(this),this.type="TorusKnotGeometry",this.parameters={radius:e,tube:t,radialSegments:r,tubularSegments:i,p:o,q:a,heightScale:s},e=e||100,t=t||40,r=r||64,i=i||8,o=o||2,a=a||3,s=s||1;for(var c=new Array(r),l=new n.Vector3,u=new n.Vector3,d=new n.Vector3,p=0;r>p;++p){c[p]=new Array(i);var f=p/r*2*o*Math.PI,m=h(f,a,o,e,s),g=h(f+.01,a,o,e,s);l.subVectors(g,m),u.addVectors(g,m),d.crossVectors(l,u),u.crossVectors(d,l),d.normalize(),u.normalize();for(var v=0;i>v;++v){var y=v/i*2*Math.PI,x=-t*Math.cos(y),b=t*Math.sin(y),w=new n.Vector3;w.x=m.x+x*u.x+b*d.x,w.y=m.y+x*u.y+b*d.y,w.z=m.z+x*u.z+b*d.z,c[p][v]=this.vertices.push(w)-1}}for(var p=0;r>p;++p)for(var v=0;i>v;++v){var A=(p+1)%r,M=(v+1)%i,S=c[p][v],E=c[A][v],T=c[A][M],C=c[p][M],P=new n.Vector2(p/r,v/i),L=new n.Vector2((p+1)/r,v/i),_=new n.Vector2((p+1)/r,(v+1)/i),R=new n.Vector2(p/r,(v+1)/i);this.faces.push(new n.Face3(S,E,C)),this.faceVertexUvs[0].push([P,L,R]),this.faces.push(new n.Face3(E,T,C)),this.faceVertexUvs[0].push([L.clone(),_,R.clone()])}this.computeFaceNormals(),this.computeVertexNormals()},n.TorusKnotGeometry.prototype=Object.create(n.Geometry.prototype),n.TorusKnotGeometry.prototype.constructor=n.TorusKnotGeometry,n.TubeGeometry=function(e,t,r,i,o,a){function s(e,t,r){return _.vertices.push(new n.Vector3(e,t,r))-1}n.Geometry.call(this),this.type="TubeGeometry",this.parameters={path:e,segments:t,radius:r,radialSegments:i,closed:o},t=t||64,r=r||1,i=i||8,o=o||!1,a=a||n.TubeGeometry.NoTaper;var h,c,l,u,d,p,f,m,g,v,y,x,b,w,A,M,S,E,T,C,P,L=[],_=this,R=t+1,B=new n.Vector3,F=new n.TubeGeometry.FrenetFrames(e,t,o),z=F.tangents,D=F.normals,O=F.binormals;for(this.tangents=z,this.normals=D,this.binormals=O,v=0;R>v;v++)for(L[v]=[],u=v/(R-1),g=e.getPointAt(u),h=z[v],c=D[v],l=O[v],p=r*a(u),y=0;i>y;y++)d=y/i*2*Math.PI,f=-p*Math.cos(d),m=p*Math.sin(d),B.copy(g),B.x+=f*c.x+m*l.x,B.y+=f*c.y+m*l.y,B.z+=f*c.z+m*l.z,L[v][y]=s(B.x,B.y,B.z);for(v=0;t>v;v++)for(y=0;i>y;y++)x=o?(v+1)%t:v+1,b=(y+1)%i,w=L[v][y],A=L[x][y],M=L[x][b],S=L[v][b],E=new n.Vector2(v/t,y/i),T=new n.Vector2((v+1)/t,y/i),C=new n.Vector2((v+1)/t,(y+1)/i),P=new n.Vector2(v/t,(y+1)/i),this.faces.push(new n.Face3(w,A,S)),this.faceVertexUvs[0].push([E,T,P]),this.faces.push(new n.Face3(A,M,S)),this.faceVertexUvs[0].push([T.clone(),C,P.clone()]);this.computeFaceNormals(),this.computeVertexNormals()},n.TubeGeometry.prototype=Object.create(n.Geometry.prototype),n.TubeGeometry.prototype.constructor=n.TubeGeometry,n.TubeGeometry.NoTaper=function(e){return 1},n.TubeGeometry.SinusoidalTaper=function(e){return Math.sin(Math.PI*e)},n.TubeGeometry.FrenetFrames=function(e,t,r){function i(){f[0]=new n.Vector3,m[0]=new n.Vector3,a=Number.MAX_VALUE,s=Math.abs(p[0].x),h=Math.abs(p[0].y),c=Math.abs(p[0].z),a>=s&&(a=s,d.set(1,0,0)),a>=h&&(a=h,d.set(0,1,0)),a>=c&&d.set(0,0,1),g.crossVectors(p[0],d).normalize(),f[0].crossVectors(p[0],g),m[0].crossVectors(p[0],f[0])}var o,a,s,h,c,l,u,d=new n.Vector3,p=[],f=[],m=[],g=new n.Vector3,v=new n.Matrix4,y=t+1,x=1e-4;for(this.tangents=p,this.normals=f,this.binormals=m,l=0;y>l;l++)u=l/(y-1),p[l]=e.getTangentAt(u),p[l].normalize();for(i(),l=1;y>l;l++)f[l]=f[l-1].clone(),m[l]=m[l-1].clone(),g.crossVectors(p[l-1],p[l]),g.length()>x&&(g.normalize(),o=Math.acos(n.Math.clamp(p[l-1].dot(p[l]),-1,1)),f[l].applyMatrix4(v.makeRotationAxis(g,o))),m[l].crossVectors(p[l],f[l]);if(r)for(o=Math.acos(n.Math.clamp(f[0].dot(f[y-1]),-1,1)),o/=y-1,p[0].dot(g.crossVectors(f[0],f[y-1]))>0&&(o=-o),l=1;y>l;l++)f[l].applyMatrix4(v.makeRotationAxis(p[l],o*l)),m[l].crossVectors(p[l],f[l])},n.PolyhedronGeometry=function(e,t,r,i){function o(e){var t=e.normalize().clone();t.index=u.vertices.push(t)-1;var r=h(e)/2/Math.PI+.5,i=c(e)/Math.PI+.5;return t.uv=new n.Vector2(r,1-i),t}function a(e,t,r){var i=new n.Face3(e.index,t.index,r.index,[e.clone(),t.clone(),r.clone()]);u.faces.push(i),b.copy(e).add(t).add(r).divideScalar(3);var o=h(b);u.faceVertexUvs[0].push([l(e.uv,e,o),l(t.uv,t,o),l(r.uv,r,o)])}function s(e,t){for(var r=Math.pow(2,t),i=o(u.vertices[e.a]),n=o(u.vertices[e.b]),s=o(u.vertices[e.c]),h=[],c=0;r>=c;c++){h[c]=[];for(var l=o(i.clone().lerp(s,c/r)),d=o(n.clone().lerp(s,c/r)),p=r-c,f=0;p>=f;f++)0==f&&c==r?h[c][f]=l:h[c][f]=o(l.clone().lerp(d,f/p))}for(var c=0;r>c;c++)for(var f=0;2*(r-c)-1>f;f++){var m=Math.floor(f/2);f%2==0?a(h[c][m+1],h[c+1][m],h[c][m]):a(h[c][m+1],h[c+1][m+1],h[c+1][m])}}function h(e){return Math.atan2(e.z,-e.x)}function c(e){return Math.atan2(-e.y,Math.sqrt(e.x*e.x+e.z*e.z))}function l(e,t,r){return 0>r&&1===e.x&&(e=new n.Vector2(e.x-1,e.y)),0===t.x&&0===t.z&&(e=new n.Vector2(r/2/Math.PI+.5,e.y)),e.clone()}n.Geometry.call(this),this.type="PolyhedronGeometry",this.parameters={vertices:e,indices:t,radius:r,detail:i},r=r||1,i=i||0;for(var u=this,d=0,p=e.length;p>d;d+=3)o(new n.Vector3(e[d],e[d+1],e[d+2]));for(var f=this.vertices,m=[],d=0,g=0,p=t.length;p>d;d+=3,g++){var v=f[t[d]],y=f[t[d+1]],x=f[t[d+2]];m[g]=new n.Face3(v.index,y.index,x.index,[v.clone(),y.clone(),x.clone()])}for(var b=new n.Vector3,d=0,p=m.length;p>d;d++)s(m[d],i);for(var d=0,p=this.faceVertexUvs[0].length;p>d;d++){var w=this.faceVertexUvs[0][d],A=w[0].x,M=w[1].x,S=w[2].x,E=Math.max(A,Math.max(M,S)),T=Math.min(A,Math.min(M,S));E>.9&&.1>T&&(.2>A&&(w[0].x+=1),.2>M&&(w[1].x+=1),.2>S&&(w[2].x+=1))}for(var d=0,p=this.vertices.length;p>d;d++)this.vertices[d].multiplyScalar(r);this.mergeVertices(),this.computeFaceNormals(),this.boundingSphere=new n.Sphere(new n.Vector3,r)},n.PolyhedronGeometry.prototype=Object.create(n.Geometry.prototype),n.PolyhedronGeometry.prototype.constructor=n.PolyhedronGeometry,n.DodecahedronGeometry=function(e,t){this.parameters={radius:e,detail:t};var r=(1+Math.sqrt(5))/2,i=1/r,o=[-1,-1,-1,-1,-1,1,-1,1,-1,-1,1,1,1,-1,-1,1,-1,1,1,1,-1,1,1,1,0,-i,-r,0,-i,r,0,i,-r,0,i,r,-i,-r,0,-i,r,0,i,-r,0,i,r,0,-r,0,-i,r,0,-i,-r,0,i,r,0,i],a=[3,11,7,3,7,15,3,15,13,7,19,17,7,17,6,7,6,15,17,4,8,17,8,10,17,10,6,8,0,16,8,16,2,8,2,10,0,12,1,0,1,18,0,18,16,6,10,2,6,2,13,6,13,15,2,16,18,2,18,3,2,3,13,18,1,9,18,9,11,18,11,3,4,14,12,4,12,0,4,0,8,11,9,5,11,5,19,11,19,7,19,5,14,19,14,4,19,4,17,1,12,14,1,14,5,1,5,9];n.PolyhedronGeometry.call(this,o,a,e,t)},n.DodecahedronGeometry.prototype=Object.create(n.Geometry.prototype),n.DodecahedronGeometry.prototype.constructor=n.DodecahedronGeometry,n.IcosahedronGeometry=function(e,t){var r=(1+Math.sqrt(5))/2,i=[-1,r,0,1,r,0,-1,-r,0,1,-r,0,0,-1,r,0,1,r,0,-1,-r,0,1,-r,r,0,-1,r,0,1,-r,0,-1,-r,0,1],o=[0,11,5,0,5,1,0,1,7,0,7,10,0,10,11,1,5,9,5,11,4,11,10,2,10,7,6,7,1,8,3,9,4,3,4,2,3,2,6,3,6,8,3,8,9,4,9,5,2,4,11,6,2,10,8,6,7,9,8,1];n.PolyhedronGeometry.call(this,i,o,e,t),this.type="IcosahedronGeometry",this.parameters={radius:e,detail:t}},n.IcosahedronGeometry.prototype=Object.create(n.Geometry.prototype),n.IcosahedronGeometry.prototype.constructor=n.IcosahedronGeometry,n.OctahedronGeometry=function(e,t){this.parameters={radius:e,detail:t};var r=[1,0,0,-1,0,0,0,1,0,0,-1,0,0,0,1,0,0,-1],i=[0,2,4,0,4,3,0,3,5,0,5,2,1,2,5,1,5,3,1,3,4,1,4,2];n.PolyhedronGeometry.call(this,r,i,e,t),this.type="OctahedronGeometry",this.parameters={radius:e,detail:t}},n.OctahedronGeometry.prototype=Object.create(n.Geometry.prototype),n.OctahedronGeometry.prototype.constructor=n.OctahedronGeometry,n.TetrahedronGeometry=function(e,t){var r=[1,1,1,-1,-1,1,-1,1,-1,1,-1,-1],i=[2,1,0,0,3,2,1,3,0,2,3,1];n.PolyhedronGeometry.call(this,r,i,e,t),this.type="TetrahedronGeometry",this.parameters={radius:e,detail:t}},n.TetrahedronGeometry.prototype=Object.create(n.Geometry.prototype),n.TetrahedronGeometry.prototype.constructor=n.TetrahedronGeometry,n.ParametricGeometry=function(e,t,r){n.Geometry.call(this),this.type="ParametricGeometry",this.parameters={func:e,slices:t,stacks:r};var i,o,a,s,h,c=this.vertices,l=this.faces,u=this.faceVertexUvs[0],d=t+1;for(i=0;r>=i;i++)for(h=i/r,o=0;t>=o;o++)s=o/t,a=e(s,h),c.push(a);var p,f,m,g,v,y,x,b;for(i=0;r>i;i++)for(o=0;t>o;o++)p=i*d+o,f=i*d+o+1,m=(i+1)*d+o+1,g=(i+1)*d+o,v=new n.Vector2(o/t,i/r),y=new n.Vector2((o+1)/t,i/r),x=new n.Vector2((o+1)/t,(i+1)/r),b=new n.Vector2(o/t,(i+1)/r),l.push(new n.Face3(p,f,g)),u.push([v,y,b]),l.push(new n.Face3(f,m,g)),u.push([y.clone(),x,b.clone()]);this.computeFaceNormals(),this.computeVertexNormals()},n.ParametricGeometry.prototype=Object.create(n.Geometry.prototype),n.ParametricGeometry.prototype.constructor=n.ParametricGeometry,n.AxisHelper=function(e){e=e||1;var t=new Float32Array([0,0,0,e,0,0,0,0,0,0,e,0,0,0,0,0,0,e]),r=new Float32Array([1,0,0,1,.6,0,0,1,0,.6,1,0,0,0,1,0,.6,1]),i=new n.BufferGeometry;i.addAttribute("position",new n.BufferAttribute(t,3)),i.addAttribute("color",new n.BufferAttribute(r,3));var o=new n.LineBasicMaterial({vertexColors:n.VertexColors});n.Line.call(this,i,o,n.LinePieces)},n.AxisHelper.prototype=Object.create(n.Line.prototype),n.AxisHelper.prototype.constructor=n.AxisHelper,n.ArrowHelper=function(){var e=new n.Geometry;e.vertices.push(new n.Vector3(0,0,0),new n.Vector3(0,1,0));var t=new n.CylinderGeometry(0,.5,1,5,1);return t.applyMatrix((new n.Matrix4).makeTranslation(0,-.5,0)),function(r,i,o,a,s,h){n.Object3D.call(this),void 0===a&&(a=16776960),void 0===o&&(o=1),void 0===s&&(s=.2*o),void 0===h&&(h=.2*s),this.position.copy(i),this.line=new n.Line(e,new n.LineBasicMaterial({color:a})),this.line.matrixAutoUpdate=!1,this.add(this.line),this.cone=new n.Mesh(t,new n.MeshBasicMaterial({color:a})),this.cone.matrixAutoUpdate=!1,this.add(this.cone),this.setDirection(r),this.setLength(o,s,h)}}(),n.ArrowHelper.prototype=Object.create(n.Object3D.prototype),n.ArrowHelper.prototype.constructor=n.ArrowHelper,n.ArrowHelper.prototype.setDirection=function(){var e,t=new n.Vector3;return function(r){r.y>.99999?this.quaternion.set(0,0,0,1):r.y<-.99999?this.quaternion.set(1,0,0,0):(t.set(r.z,0,-r.x).normalize(),e=Math.acos(r.y),this.quaternion.setFromAxisAngle(t,e))}}(),n.ArrowHelper.prototype.setLength=function(e,t,r){void 0===t&&(t=.2*e),void 0===r&&(r=.2*t),this.line.scale.set(1,e-t,1),this.line.updateMatrix(),this.cone.scale.set(r,t,r),this.cone.position.y=e,this.cone.updateMatrix()},n.ArrowHelper.prototype.setColor=function(e){this.line.material.color.set(e),this.cone.material.color.set(e)},n.BoxHelper=function(e){var t=new n.BufferGeometry;t.addAttribute("position",new n.BufferAttribute(new Float32Array(72),3)),n.Line.call(this,t,new n.LineBasicMaterial({color:16776960}),n.LinePieces),void 0!==e&&this.update(e)},n.BoxHelper.prototype=Object.create(n.Line.prototype),n.BoxHelper.prototype.constructor=n.BoxHelper,n.BoxHelper.prototype.update=function(e){var t=e.geometry;null===t.boundingBox&&t.computeBoundingBox();var r=t.boundingBox.min,i=t.boundingBox.max,n=this.geometry.attributes.position.array;n[0]=i.x,n[1]=i.y,n[2]=i.z,n[3]=r.x,n[4]=i.y,n[5]=i.z,n[6]=r.x,n[7]=i.y,n[8]=i.z,n[9]=r.x,n[10]=r.y,n[11]=i.z,n[12]=r.x,n[13]=r.y,n[14]=i.z,n[15]=i.x,n[16]=r.y,n[17]=i.z,n[18]=i.x,n[19]=r.y,n[20]=i.z,n[21]=i.x,n[22]=i.y,n[23]=i.z,n[24]=i.x,n[25]=i.y,n[26]=r.z,n[27]=r.x,n[28]=i.y,n[29]=r.z,n[30]=r.x,n[31]=i.y,n[32]=r.z,n[33]=r.x,n[34]=r.y,n[35]=r.z,n[36]=r.x,n[37]=r.y,n[38]=r.z,n[39]=i.x,n[40]=r.y,n[41]=r.z,n[42]=i.x,n[43]=r.y,n[44]=r.z,n[45]=i.x,n[46]=i.y,n[47]=r.z,n[48]=i.x,n[49]=i.y,n[50]=i.z,n[51]=i.x,n[52]=i.y,n[53]=r.z,n[54]=r.x,n[55]=i.y,n[56]=i.z,n[57]=r.x,n[58]=i.y,n[59]=r.z,n[60]=r.x,n[61]=r.y,n[62]=i.z,n[63]=r.x,n[64]=r.y,n[65]=r.z,n[66]=i.x,n[67]=r.y,n[68]=i.z,n[69]=i.x,n[70]=r.y,n[71]=r.z,this.geometry.attributes.position.needsUpdate=!0,this.geometry.computeBoundingSphere(),this.matrix=e.matrixWorld,this.matrixAutoUpdate=!1},n.BoundingBoxHelper=function(e,t){var r=void 0!==t?t:8947848;this.object=e,this.box=new n.Box3,n.Mesh.call(this,new n.BoxGeometry(1,1,1),new n.MeshBasicMaterial({color:r,wireframe:!0}))},n.BoundingBoxHelper.prototype=Object.create(n.Mesh.prototype),n.BoundingBoxHelper.prototype.constructor=n.BoundingBoxHelper,n.BoundingBoxHelper.prototype.update=function(){this.box.setFromObject(this.object),this.box.size(this.scale),this.box.center(this.position)},n.CameraHelper=function(e){function t(e,t,i){r(e,i),r(t,i)}function r(e,t){i.vertices.push(new n.Vector3),i.colors.push(new n.Color(t)),void 0===a[e]&&(a[e]=[]),a[e].push(i.vertices.length-1)}var i=new n.Geometry,o=new n.LineBasicMaterial({color:16777215,vertexColors:n.FaceColors}),a={},s=16755200,h=16711680,c=43775,l=16777215,u=3355443;t("n1","n2",s),t("n2","n4",s),t("n4","n3",s),t("n3","n1",s),t("f1","f2",s),t("f2","f4",s),t("f4","f3",s),t("f3","f1",s),t("n1","f1",s),t("n2","f2",s),t("n3","f3",s),t("n4","f4",s),t("p","n1",h),t("p","n2",h),t("p","n3",h),t("p","n4",h),t("u1","u2",c),t("u2","u3",c),t("u3","u1",c),t("c","t",l),t("p","c",u),t("cn1","cn2",u),t("cn3","cn4",u),t("cf1","cf2",u),t("cf3","cf4",u),n.Line.call(this,i,o,n.LinePieces),this.camera=e,this.matrix=e.matrixWorld,this.matrixAutoUpdate=!1,this.pointMap=a,this.update()},n.CameraHelper.prototype=Object.create(n.Line.prototype),n.CameraHelper.prototype.constructor=n.CameraHelper,n.CameraHelper.prototype.update=function(){var e,t,r=new n.Vector3,i=new n.Camera,o=function(n,o,a,s){r.set(o,a,s).unproject(i);var h=t[n];if(void 0!==h)for(var c=0,l=h.length;l>c;c++)e.vertices[h[c]].copy(r)};return function(){e=this.geometry,t=this.pointMap;var r=1,n=1;i.projectionMatrix.copy(this.camera.projectionMatrix),o("c",0,0,-1),o("t",0,0,1),o("n1",-r,-n,-1),o("n2",r,-n,-1),o("n3",-r,n,-1),o("n4",r,n,-1),o("f1",-r,-n,1),o("f2",r,-n,1),o("f3",-r,n,1),o("f4",r,n,1),o("u1",.7*r,1.1*n,-1),o("u2",.7*-r,1.1*n,-1),o("u3",0,2*n,-1),o("cf1",-r,0,1),o("cf2",r,0,1),o("cf3",0,-n,1),o("cf4",0,n,1),o("cn1",-r,0,-1),o("cn2",r,0,-1),o("cn3",0,-n,-1),o("cn4",0,n,-1),e.verticesNeedUpdate=!0}}(),n.DirectionalLightHelper=function(e,t){n.Object3D.call(this),this.light=e,this.light.updateMatrixWorld(),this.matrix=e.matrixWorld,this.matrixAutoUpdate=!1,t=t||1;var r=new n.Geometry;r.vertices.push(new n.Vector3(-t,t,0),new n.Vector3(t,t,0),new n.Vector3(t,-t,0),new n.Vector3(-t,-t,0),new n.Vector3(-t,t,0));var i=new n.LineBasicMaterial({fog:!1});i.color.copy(this.light.color).multiplyScalar(this.light.intensity),this.lightPlane=new n.Line(r,i),this.add(this.lightPlane),r=new n.Geometry,r.vertices.push(new n.Vector3,new n.Vector3),i=new n.LineBasicMaterial({fog:!1}),i.color.copy(this.light.color).multiplyScalar(this.light.intensity),this.targetLine=new n.Line(r,i),this.add(this.targetLine),this.update()},n.DirectionalLightHelper.prototype=Object.create(n.Object3D.prototype),n.DirectionalLightHelper.prototype.constructor=n.DirectionalLightHelper,n.DirectionalLightHelper.prototype.dispose=function(){this.lightPlane.geometry.dispose(),this.lightPlane.material.dispose(),this.targetLine.geometry.dispose(),this.targetLine.material.dispose()},n.DirectionalLightHelper.prototype.update=function(){var e=new n.Vector3,t=new n.Vector3,r=new n.Vector3;return function(){e.setFromMatrixPosition(this.light.matrixWorld),t.setFromMatrixPosition(this.light.target.matrixWorld),r.subVectors(t,e),this.lightPlane.lookAt(r),this.lightPlane.material.color.copy(this.light.color).multiplyScalar(this.light.intensity),this.targetLine.geometry.vertices[1].copy(r),this.targetLine.geometry.verticesNeedUpdate=!0,this.targetLine.material.color.copy(this.lightPlane.material.color)}}(),n.EdgesHelper=function(e,t,r){var i=void 0!==t?t:16777215;r=void 0!==r?r:1;var o,a=Math.cos(n.Math.degToRad(r)),s=[0,0],h={},c=function(e,t){return e-t},l=["a","b","c"],u=new n.BufferGeometry;e.geometry instanceof n.BufferGeometry?(o=new n.Geometry,o.fromBufferGeometry(e.geometry)):o=e.geometry.clone(),o.mergeVertices(),o.computeFaceNormals();for(var d=o.vertices,p=o.faces,f=0,m=0,g=p.length;g>m;m++)for(var v=p[m],y=0;3>y;y++){s[0]=v[l[y]],s[1]=v[l[(y+1)%3]],s.sort(c);var x=s.toString();void 0===h[x]?(h[x]={vert1:s[0],vert2:s[1],face1:m,face2:void 0},f++):h[x].face2=m}var b=new Float32Array(2*f*3),w=0;for(var x in h){var A=h[x];if(void 0===A.face2||p[A.face1].normal.dot(p[A.face2].normal)<=a){var M=d[A.vert1];b[w++]=M.x,b[w++]=M.y,b[w++]=M.z,M=d[A.vert2],b[w++]=M.x,b[w++]=M.y,b[w++]=M.z}}u.addAttribute("position",new n.BufferAttribute(b,3)),n.Line.call(this,u,new n.LineBasicMaterial({color:i}),n.LinePieces),this.matrix=e.matrixWorld,this.matrixAutoUpdate=!1},n.EdgesHelper.prototype=Object.create(n.Line.prototype),n.EdgesHelper.prototype.constructor=n.EdgesHelper,n.FaceNormalsHelper=function(e,t,r,i){this.object=e,this.size=void 0!==t?t:1;for(var o=void 0!==r?r:16776960,a=void 0!==i?i:1,s=new n.Geometry,h=this.object.geometry.faces,c=0,l=h.length;l>c;c++)s.vertices.push(new n.Vector3,new n.Vector3);n.Line.call(this,s,new n.LineBasicMaterial({color:o,linewidth:a}),n.LinePieces),this.matrixAutoUpdate=!1,this.normalMatrix=new n.Matrix3,this.update()},n.FaceNormalsHelper.prototype=Object.create(n.Line.prototype),n.FaceNormalsHelper.prototype.constructor=n.FaceNormalsHelper,n.FaceNormalsHelper.prototype.update=function(){var e=this.geometry.vertices,t=this.object,r=t.geometry.vertices,i=t.geometry.faces,n=t.matrixWorld;t.updateMatrixWorld(!0),this.normalMatrix.getNormalMatrix(n);for(var o=0,a=0,s=i.length;s>o;o++,a+=2){var h=i[o];e[a].copy(r[h.a]).add(r[h.b]).add(r[h.c]).divideScalar(3).applyMatrix4(n),e[a+1].copy(h.normal).applyMatrix3(this.normalMatrix).normalize().multiplyScalar(this.size).add(e[a])}return this.geometry.verticesNeedUpdate=!0,this},n.GridHelper=function(e,t){var r=new n.Geometry,i=new n.LineBasicMaterial({vertexColors:n.VertexColors});this.color1=new n.Color(4473924),this.color2=new n.Color(8947848);for(var o=-e;e>=o;o+=t){r.vertices.push(new n.Vector3(-e,0,o),new n.Vector3(e,0,o),new n.Vector3(o,0,-e),new n.Vector3(o,0,e));var a=0===o?this.color1:this.color2;r.colors.push(a,a,a,a)}n.Line.call(this,r,i,n.LinePieces)},n.GridHelper.prototype=Object.create(n.Line.prototype),n.GridHelper.prototype.constructor=n.GridHelper,n.GridHelper.prototype.setColors=function(e,t){this.color1.set(e),this.color2.set(t),this.geometry.colorsNeedUpdate=!0},n.HemisphereLightHelper=function(e,t){n.Object3D.call(this),this.light=e,this.light.updateMatrixWorld(),this.matrix=e.matrixWorld,this.matrixAutoUpdate=!1,this.colors=[new n.Color,new n.Color];var r=new n.SphereGeometry(t,4,2);r.applyMatrix((new n.Matrix4).makeRotationX(-Math.PI/2));for(var i=0,o=8;o>i;i++)r.faces[i].color=this.colors[4>i?0:1];var a=new n.MeshBasicMaterial({vertexColors:n.FaceColors,wireframe:!0});this.lightSphere=new n.Mesh(r,a),this.add(this.lightSphere),this.update()},n.HemisphereLightHelper.prototype=Object.create(n.Object3D.prototype),n.HemisphereLightHelper.prototype.constructor=n.HemisphereLightHelper,n.HemisphereLightHelper.prototype.dispose=function(){this.lightSphere.geometry.dispose(),this.lightSphere.material.dispose()},n.HemisphereLightHelper.prototype.update=function(){var e=new n.Vector3;return function(){this.colors[0].copy(this.light.color).multiplyScalar(this.light.intensity),this.colors[1].copy(this.light.groundColor).multiplyScalar(this.light.intensity),this.lightSphere.lookAt(e.setFromMatrixPosition(this.light.matrixWorld).negate()),this.lightSphere.geometry.colorsNeedUpdate=!0}}(),n.PointLightHelper=function(e,t){this.light=e,this.light.updateMatrixWorld();var r=new n.SphereGeometry(t,4,2),i=new n.MeshBasicMaterial({wireframe:!0,fog:!1});i.color.copy(this.light.color).multiplyScalar(this.light.intensity),n.Mesh.call(this,r,i),this.matrix=this.light.matrixWorld,this.matrixAutoUpdate=!1},n.PointLightHelper.prototype=Object.create(n.Mesh.prototype),n.PointLightHelper.prototype.constructor=n.PointLightHelper,n.PointLightHelper.prototype.dispose=function(){this.geometry.dispose(),this.material.dispose()},n.PointLightHelper.prototype.update=function(){this.material.color.copy(this.light.color).multiplyScalar(this.light.intensity)},n.SkeletonHelper=function(e){this.bones=this.getBoneList(e);for(var t=new n.Geometry,r=0;rc;c++)for(var u=h[c],d=0,p=u.vertexNormals.length;p>d;d++)s.vertices.push(new n.Vector3,new n.Vector3);n.Line.call(this,s,new n.LineBasicMaterial({color:o,linewidth:a}),n.LinePieces),this.matrixAutoUpdate=!1,this.normalMatrix=new n.Matrix3,this.update()},n.VertexNormalsHelper.prototype=Object.create(n.Line.prototype),n.VertexNormalsHelper.prototype.constructor=n.VertexNormalsHelper,n.VertexNormalsHelper.prototype.update=function(e){var t=new n.Vector3;return function(e){var r=["a","b","c","d"];this.object.updateMatrixWorld(!0),this.normalMatrix.getNormalMatrix(this.object.matrixWorld);for(var i=this.geometry.vertices,n=this.object.geometry.vertices,o=this.object.geometry.faces,a=this.object.matrixWorld,s=0,h=0,c=o.length;c>h;h++)for(var l=o[h],u=0,d=l.vertexNormals.length;d>u;u++){var p=l[r[u]],f=n[p],m=l.vertexNormals[u];i[s].copy(f).applyMatrix4(a),t.copy(m).applyMatrix3(this.normalMatrix).normalize().multiplyScalar(this.size),t.add(i[s]),s+=1,i[s].copy(t),s+=1}return this.geometry.verticesNeedUpdate=!0,this}}(),n.VertexTangentsHelper=function(e,t,r,i){this.object=e,this.size=void 0!==t?t:1;for(var o=void 0!==r?r:255,a=void 0!==i?i:1,s=new n.Geometry,h=e.geometry.faces,c=0,l=h.length;l>c;c++)for(var u=h[c],d=0,p=u.vertexTangents.length;p>d;d++)s.vertices.push(new n.Vector3),s.vertices.push(new n.Vector3);n.Line.call(this,s,new n.LineBasicMaterial({color:o,linewidth:a}),n.LinePieces),this.matrixAutoUpdate=!1,this.update()},n.VertexTangentsHelper.prototype=Object.create(n.Line.prototype),n.VertexTangentsHelper.prototype.constructor=n.VertexTangentsHelper,n.VertexTangentsHelper.prototype.update=function(e){var t=new n.Vector3;return function(e){var r=["a","b","c","d"];this.object.updateMatrixWorld(!0);for(var i=this.geometry.vertices,n=this.object.geometry.vertices,o=this.object.geometry.faces,a=this.object.matrixWorld,s=0,h=0,c=o.length;c>h;h++)for(var l=o[h],u=0,d=l.vertexTangents.length;d>u;u++){var p=l[r[u]],f=n[p],m=l.vertexTangents[u];i[s].copy(f).applyMatrix4(a),t.copy(m).transformDirection(a).multiplyScalar(this.size),t.add(i[s]),s+=1,i[s].copy(t),s+=1}return this.geometry.verticesNeedUpdate=!0,this}}(),n.WireframeHelper=function(e,t){var r=void 0!==t?t:16777215,i=[0,0],o={},a=function(e,t){return e-t},s=["a","b","c"],h=new n.BufferGeometry;if(e.geometry instanceof n.Geometry){for(var c=e.geometry.vertices,l=e.geometry.faces,u=0,d=new Uint32Array(6*l.length),p=0,f=l.length;f>p;p++)for(var m=l[p],g=0;3>g;g++){i[0]=m[s[g]],i[1]=m[s[(g+1)%3]],i.sort(a);var v=i.toString();void 0===o[v]&&(d[2*u]=i[0],d[2*u+1]=i[1],o[v]=!0,u++)}for(var y=new Float32Array(2*u*3),p=0,f=u;f>p;p++)for(var g=0;2>g;g++){var x=c[d[2*p+g]],b=6*p+3*g;y[b+0]=x.x,y[b+1]=x.y,y[b+2]=x.z}h.addAttribute("position",new n.BufferAttribute(y,3))}else if(e.geometry instanceof n.BufferGeometry)if(void 0!==e.geometry.attributes.index){var c=e.geometry.attributes.position.array,w=e.geometry.attributes.index.array,A=e.geometry.drawcalls,u=0;0===A.length&&(A=[{count:w.length,index:0,start:0}]);for(var d=new Uint32Array(2*w.length),M=0,S=A.length;S>M;++M)for(var E=A[M].start,T=A[M].count,b=A[M].index,p=E,C=E+T;C>p;p+=3)for(var g=0;3>g;g++){i[0]=b+w[p+g],i[1]=b+w[p+(g+1)%3],i.sort(a);var v=i.toString();void 0===o[v]&&(d[2*u]=i[0],d[2*u+1]=i[1],o[v]=!0,u++)}for(var y=new Float32Array(2*u*3),p=0,f=u;f>p;p++)for(var g=0;2>g;g++){var b=6*p+3*g,P=3*d[2*p+g];y[b+0]=c[P],y[b+1]=c[P+1],y[b+2]=c[P+2]}h.addAttribute("position",new n.BufferAttribute(y,3))}else{for(var c=e.geometry.attributes.position.array,u=c.length/3,L=u/3,y=new Float32Array(2*u*3),p=0,f=L;f>p;p++)for(var g=0;3>g;g++){var b=18*p+6*g,_=9*p+3*g;y[b+0]=c[_],y[b+1]=c[_+1],y[b+2]=c[_+2];var P=9*p+3*((g+1)%3);y[b+3]=c[P],y[b+4]=c[P+1],y[b+5]=c[P+2]}h.addAttribute("position",new n.BufferAttribute(y,3))}n.Line.call(this,h,new n.LineBasicMaterial({color:r}),n.LinePieces),this.matrix=e.matrixWorld,this.matrixAutoUpdate=!1},n.WireframeHelper.prototype=Object.create(n.Line.prototype),n.WireframeHelper.prototype.constructor=n.WireframeHelper,n.ImmediateRenderObject=function(){n.Object3D.call(this),this.render=function(e){}},n.ImmediateRenderObject.prototype=Object.create(n.Object3D.prototype),n.ImmediateRenderObject.prototype.constructor=n.ImmediateRenderObject,n.MorphBlendMesh=function(e,t){n.Mesh.call(this,e,t),this.animationsMap={},this.animationsList=[];var r=this.geometry.morphTargets.length,i="__default",o=0,a=r-1,s=r/1;this.createAnimation(i,o,a,s),this.setAnimationWeight(i,1)},n.MorphBlendMesh.prototype=Object.create(n.Mesh.prototype),n.MorphBlendMesh.prototype.constructor=n.MorphBlendMesh,n.MorphBlendMesh.prototype.createAnimation=function(e,t,r,i){var n={startFrame:t,endFrame:r,length:r-t+1,fps:i,duration:(r-t)/i,lastFrame:0,currentFrame:0,active:!1,time:0,direction:1,weight:1,directionBackwards:!1,mirroredLoop:!1};this.animationsMap[e]=n,this.animationsList.push(n)},n.MorphBlendMesh.prototype.autoCreateAnimations=function(e){for(var t,r=/([a-z]+)_?(\d+)/,i={},n=this.geometry,o=0,a=n.morphTargets.length;a>o;o++){var s=n.morphTargets[o],h=s.name.match(r);if(h&&h.length>1){var c=h[1];i[c]||(i[c]={start:1/0,end:-(1/0)});var l=i[c];ol.end&&(l.end=o),t||(t=c)}}for(var c in i){var l=i[c];this.createAnimation(c,l.start,l.end,e)}this.firstAnimation=t},n.MorphBlendMesh.prototype.setAnimationDirectionForward=function(e){var t=this.animationsMap[e];t&&(t.direction=1,t.directionBackwards=!1)},n.MorphBlendMesh.prototype.setAnimationDirectionBackward=function(e){var t=this.animationsMap[e];t&&(t.direction=-1,t.directionBackwards=!0)},n.MorphBlendMesh.prototype.setAnimationFPS=function(e,t){var r=this.animationsMap[e];r&&(r.fps=t,r.duration=(r.end-r.start)/r.fps)},n.MorphBlendMesh.prototype.setAnimationDuration=function(e,t){var r=this.animationsMap[e];r&&(r.duration=t,r.fps=(r.end-r.start)/r.duration)},n.MorphBlendMesh.prototype.setAnimationWeight=function(e,t){var r=this.animationsMap[e];r&&(r.weight=t)},n.MorphBlendMesh.prototype.setAnimationTime=function(e,t){var r=this.animationsMap[e];r&&(r.time=t)},n.MorphBlendMesh.prototype.getAnimationTime=function(e){var t=0,r=this.animationsMap[e];return r&&(t=r.time),t},n.MorphBlendMesh.prototype.getAnimationDuration=function(e){var t=-1,r=this.animationsMap[e];return r&&(t=r.duration),t},n.MorphBlendMesh.prototype.playAnimation=function(e){var t=this.animationsMap[e];t?(t.time=0,t.active=!0):n.warn("THREE.MorphBlendMesh: animation["+e+"] undefined in .playAnimation()")},n.MorphBlendMesh.prototype.stopAnimation=function(e){var t=this.animationsMap[e];t&&(t.active=!1)},n.MorphBlendMesh.prototype.update=function(e){for(var t=0,r=this.animationsList.length;r>t;t++){var i=this.animationsList[t];if(i.active){var o=i.duration/i.length;i.time+=i.direction*e,i.mirroredLoop?(i.time>i.duration||i.time<0)&&(i.direction*=-1,i.time>i.duration&&(i.time=i.duration,i.directionBackwards=!0),i.time<0&&(i.time=0,i.directionBackwards=!1)):(i.time=i.time%i.duration,i.time<0&&(i.time+=i.duration));var a=i.startFrame+n.Math.clamp(Math.floor(i.time/o),0,i.length-1),s=i.weight;a!==i.currentFrame&&(this.morphTargetInfluences[i.lastFrame]=0,this.morphTargetInfluences[i.currentFrame]=1*s,this.morphTargetInfluences[a]=0,i.lastFrame=i.currentFrame,i.currentFrame=a);var h=i.time%o/o;i.directionBackwards&&(h=1-h),this.morphTargetInfluences[i.currentFrame]=h*s,this.morphTargetInfluences[i.lastFrame]=(1-h)*s}}},"undefined"!=typeof e&&e.exports&&(t=e.exports=n),t.THREE=n},function(e,t,r){function i(e){return r(n(e))}function n(e){return o[e]||function(){throw new Error("Cannot find module '"+e+"'.")}()}var o={"./asphalt.jpg":41,"./brick-tiles.jpg":42,"./bricks-normal.jpg":43,"./bricks-specular.jpg":44,"./bricks.jpg":45,"./checkerboard.png":46,"./cloud10.png":47,"./grass.jpg":48,"./metal-floor.jpg":49,"./metal.jpg":50,"./stone.jpg":51,"./tiles.jpg":52,"./weathered-wood.jpg":53,"./wood.jpg":54};i.keys=function(){return Object.keys(o)},i.resolve=n,e.exports=i,i.id=34},function(e,t,r){e.exports=new RegExp("^(?:(?:(?:https?):)?//)(?:\\S+(?::\\S*)?@)?(?:((?!(?:10|127)(?:\\.\\d{1,3}){3})(?!(?:169\\.254|192\\.168)(?:\\.\\d{1,3}){2})(?!172\\.(?:1[6-9]|2\\d|3[0-1])(?:\\.\\d{1,3}){2})(?:[1-9]\\d?|1\\d\\d|2[01]\\d|22[0-3])(?:\\.(?:1?\\d{1,2}|2[0-4]\\d|25[0-5])){2}(?:\\.(?:[1-9]\\d?|1\\d\\d|2[0-4]\\d|25[0-4]))|(?:(?:[a-z\\u00a1-\\uffff0-9]-*)*[a-z\\u00a1-\\uffff0-9]+)(?:\\.(?:[a-z\\u00a1-\\uffff0-9]-*)*[a-z\\u00a1-\\uffff0-9]+)*(?:\\.(?:[a-z\\u00a1-\\uffff]{2,}))?))(?::(\\d{2,5}))?(?:/\\S*)?$","i")},function(e,t,r){function i(e,t){return function(r,i,n){return"function"==typeof i&&void 0===n&&s(r)?e(r,i):t(r,a(i,n,3))}}var n=r(57),o=r(58),a=r(59),s=r(61),h=i(n,o);e.exports=h},function(e,t,r){function i(e,t,r){var i=l(t);p.apply(i,f(t));for(var n=-1,o=i.length;++n degrees, and the cosine of that","// earth shadow hack","const float cutoffAngle = pi/1.95;","const float steepness = 1.5;","vec3 totalRayleigh(vec3 lambda)","{","return (8.0 * pow(pi, 3.0) * pow(pow(n, 2.0) - 1.0, 2.0) * (6.0 + 3.0 * pn)) / (3.0 * N * pow(lambda, vec3(4.0)) * (6.0 - 7.0 * pn));","}","// A simplied version of the total Reayleigh scattering to works on browsers that use ANGLE","vec3 simplifiedRayleigh()","{","return 0.0005 / vec3(94, 40, 18);","}","float rayleighPhase(float cosTheta)","{ ","return (3.0 / (16.0*pi)) * (1.0 + pow(cosTheta, 2.0));","// return (1.0 / (3.0*pi)) * (1.0 + pow(cosTheta, 2.0));","// return (3.0 / 4.0) * (1.0 + pow(cosTheta, 2.0));","}","vec3 totalMie(vec3 lambda, vec3 K, float T)","{","float c = (0.2 * T ) * 10E-18;","return 0.434 * c * pi * pow((2.0 * pi) / lambda, vec3(v - 2.0)) * K;","}","float hgPhase(float cosTheta, float g)","{","return (1.0 / (4.0*pi)) * ((1.0 - pow(g, 2.0)) / pow(1.0 - 2.0*g*cosTheta + pow(g, 2.0), 1.5));","}","float sunIntensity(float zenithAngleCos)","{","return EE * max(0.0, 1.0 - exp(-((cutoffAngle - acos(zenithAngleCos))/steepness)));","}","// float logLuminance(vec3 c)","// {","// return log(c.r * 0.2126 + c.g * 0.7152 + c.b * 0.0722);","// }","// Filmic ToneMapping http://filmicgames.com/archives/75","float A = 0.15;","float B = 0.50;","float C = 0.10;","float D = 0.20;","float E = 0.02;","float F = 0.30;","float W = 1000.0;","vec3 Uncharted2Tonemap(vec3 x)","{","return ((x*(A*x+C*B)+D*E)/(x*(A*x+B)+D*F))-E/F;","}","void main() ","{","float sunfade = 1.0-clamp(1.0-exp((sunPosition.y/450000.0)),0.0,1.0);","// luminance = 1.0 ;// vWorldPosition.y / 450000. + 0.5; //sunPosition.y / 450000. * 1. + 0.5;","// gl_FragColor = vec4(sunfade, sunfade, sunfade, 1.0);","reileighCoefficient = reileighCoefficient - (1.0* (1.0-sunfade));","float sunE = sunIntensity(dot(sunDirection, up));","// extinction (absorbtion + out scattering) ","// rayleigh coefficients","vec3 betaR = simplifiedRayleigh() * reileighCoefficient;","// mie coefficients","vec3 betaM = totalMie(lambda, K, turbidity) * mieCoefficient;","// optical length","// cutoff angle at 90 to avoid singularity in next formula.","float zenithAngle = acos(max(0.0, dot(up, normalize(vWorldPosition - cameraPos))));","float sR = rayleighZenithLength / (cos(zenithAngle) + 0.15 * pow(93.885 - ((zenithAngle * 180.0) / pi), -1.253));","float sM = mieZenithLength / (cos(zenithAngle) + 0.15 * pow(93.885 - ((zenithAngle * 180.0) / pi), -1.253));","// combined extinction factor ","vec3 Fex = exp(-(betaR * sR + betaM * sM));","// in scattering","float cosTheta = dot(normalize(vWorldPosition - cameraPos), sunDirection);","float rPhase = rayleighPhase(cosTheta*0.5+0.5);","vec3 betaRTheta = betaR * rPhase;","float mPhase = hgPhase(cosTheta, mieDirectionalG);","vec3 betaMTheta = betaM * mPhase;","vec3 Lin = pow(sunE * ((betaRTheta + betaMTheta) / (betaR + betaM)) * (1.0 - Fex),vec3(1.5));","Lin *= mix(vec3(1.0),pow(sunE * ((betaRTheta + betaMTheta) / (betaR + betaM)) * Fex,vec3(1.0/2.0)),clamp(pow(1.0-dot(up, sunDirection),5.0),0.0,1.0));","//nightsky","vec3 direction = normalize(vWorldPosition - cameraPos);","float theta = acos(direction.y); // elevation --> y-axis, [-pi/2, pi/2]","float phi = atan(direction.z, direction.x); // azimuth --> x-axis [-pi/2, pi/2]","vec2 uv = vec2(phi, theta) / vec2(2.0*pi, pi) + vec2(0.5, 0.0);","// vec3 L0 = texture2D(skySampler, uv).rgb+0.1 * Fex;","vec3 L0 = vec3(0.1) * Fex;","// composition + solar disc","//if (cosTheta > sunAngularDiameterCos)","float sundisk = smoothstep(sunAngularDiameterCos,sunAngularDiameterCos+0.00002,cosTheta);","// if (normalize(vWorldPosition - cameraPos).y>0.0)","L0 += (sunE * 19000.0 * Fex)*sundisk;","vec3 whiteScale = 1.0/Uncharted2Tonemap(vec3(W));","vec3 texColor = (Lin+L0); ","texColor *= 0.04 ;","texColor += vec3(0.0,0.001,0.0025)*0.3;","float g_fMaxLuminance = 1.0;","float fLumScaled = 0.1 / luminance; ","float fLumCompressed = (fLumScaled * (1.0 + (fLumScaled / (g_fMaxLuminance * g_fMaxLuminance)))) / (1.0 + fLumScaled); ","float ExposureBias = fLumCompressed;","vec3 curr = Uncharted2Tonemap((log2(2.0/pow(luminance,4.0)))*texColor);","vec3 color = curr*whiteScale;","vec3 retColor = pow(color,vec3(1.0/(1.2+(1.2*sunfade))));","gl_FragColor.rgb = retColor;","gl_FragColor.a = 1.0;","}"].join("\n")},i.Sky=function(){var e=i.ShaderLib.sky,t=i.UniformsUtils.clone(e.uniforms),r=new i.ShaderMaterial({fragmentShader:e.fragmentShader,vertexShader:e.vertexShader,uniforms:t,side:i.BackSide}),n=new i.SphereGeometry(45e4,32,15),o=new i.Mesh(n,r);this.mesh=o,this.uniforms=t}},function(e,t,r){var i=r(33),n=n||{};n.utils={randomVector3:function(e,t){var r=new i.Vector3;return r.copy(e),r.x+=Math.random()*t.x-t.x/2,r.y+=Math.random()*t.y-t.y/2,r.z+=Math.random()*t.z-t.z/2,r},randomColor:function(e,t){var r=new i.Color;return r.copy(e),r.r+=Math.random()*t.x-t.x/2,r.g+=Math.random()*t.y-t.y/2,r.b+=Math.random()*t.z-t.z/2,r.r=Math.max(0,Math.min(r.r,1)),r.g=Math.max(0,Math.min(r.g,1)),r.b=Math.max(0,Math.min(r.b,1)),r},randomFloat:function(e,t){return e+t*(Math.random()-.5)},randomVector3OnSphere:function(e,t,r,n,o){var a=2*Math.random()-1,s=6.2832*Math.random(),h=Math.sqrt(1-a*a),c=new i.Vector3(h*Math.cos(s),h*Math.sin(s),a),l=this._randomFloat(t,r);return o&&(l=Math.round(l/o)*o),c.multiplyScalar(l),n&&c.multiply(n),c.add(e),c},randomVector3OnDisk:function(e,t,r,n,o){var a=6.2832*Math.random(),s=this._randomFloat(t,r);o&&(s=Math.round(s/o)*o);var h=new i.Vector3(Math.cos(a),Math.sin(a),0).multiplyScalar(s);return n&&h.multiply(n),h.add(e),h},randomVelocityVector3OnSphere:function(e,t,r,n,o){var a=(new i.Vector3).subVectors(e,t);return a.normalize().multiplyScalar(Math.abs(this._randomFloat(r,n))),o&&a.multiply(o),a},randomizeExistingVector3:function(e,t,r){e.copy(t),e.x+=Math.random()*r.x-r.x/2,e.y+=Math.random()*r.y-r.y/2,e.z+=Math.random()*r.z-r.z/2},randomizeExistingColor:function(e,t,r){e.copy(t),e.r+=Math.random()*r.x-r.x/2,e.g+=Math.random()*r.y-r.y/2,e.b+=Math.random()*r.z-r.z/2,e.r=Math.max(0,Math.min(e.r,1)),e.g=Math.max(0,Math.min(e.g,1)),e.b=Math.max(0,Math.min(e.b,1))},randomizeExistingVector3OnSphere:function(e,t,r,i,n,o){var a=2*Math.random()-1,s=6.2832*Math.random(),h=Math.sqrt(1-a*a),c=this._randomFloat(r,i);o&&(c=Math.round(c/o)*o),e.set(h*Math.cos(s)*c,h*Math.sin(s)*c,a*c).multiply(n),e.add(t)},randomizeExistingVector3OnDisk:function(e,t,r,i,n,o){var a=6.2832*Math.random(),s=Math.abs(this._randomFloat(r,i));o&&(s=Math.round(s/o)*o),e.set(Math.cos(a),Math.sin(a),0).multiplyScalar(s),n&&e.multiply(n),e.add(t)},randomizeExistingVelocityVector3OnSphere:function(e,t,r,i,n){e.copy(r).sub(t).normalize().multiplyScalar(Math.abs(this._randomFloat(i,n)))},generateID:function(){var e="xxxxxxxx-xxxx-4xxx-yxxx-xxxxxxxxxxxx";return e=e.replace(/[xy]/g,function(e){var t=Math.random(),r=16*t|0,i="x"===e?r:3&r|8;return i.toString(16)})}};var n=n||{};n.Group=function(e){var t=this;t.fixedTimeStep=parseFloat("number"==typeof e.fixedTimeStep?e.fixedTimeStep:.016),t.maxAge=parseFloat(e.maxAge||3),t.texture=e.texture||null,t.hasPerspective=parseInt("number"==typeof e.hasPerspective?e.hasPerspective:1,10),t.colorize=parseInt("number"==typeof e.colorize?e.colorize:1,10),t.blending="number"==typeof e.blending?e.blending:i.AdditiveBlending,t.transparent="boolean"==typeof e.transparent?e.transparent:!0,t.alphaTest="number"==typeof e.alphaTest?e.alphaTest:.5,t.depthWrite="boolean"==typeof e.depthWrite?e.depthWrite:!1,t.depthTest="boolean"==typeof e.depthTest?e.depthTest:!0,t.uniforms={duration:{type:"f",value:t.maxAge},texture:{type:"t",value:t.texture},hasPerspective:{type:"i",value:t.hasPerspective},colorize:{type:"i",value:t.colorize}},t.attributes={acceleration:{type:"v3",value:[]},velocity:{type:"v3",value:[]},alive:{type:"f",value:[]},age:{type:"f",value:[]},size:{type:"v3",value:[]},angle:{type:"v4",value:[]},colorStart:{type:"c",value:[]},colorMiddle:{type:"c",value:[]},colorEnd:{type:"c",value:[]},opacity:{type:"v3",value:[]}},t.emitters=[],t._pool=[],t._poolCreationSettings=null,t._createNewWhenPoolEmpty=0,t.maxAgeMilliseconds=1e3*t.maxAge,t.geometry=new i.Geometry,t.material=new i.ShaderMaterial({uniforms:t.uniforms,attributes:t.attributes,vertexShader:n.shaders.vertex,fragmentShader:n.shaders.fragment,blending:t.blending,transparent:t.transparent,alphaTest:t.alphaTest,depthWrite:t.depthWrite,depthTest:t.depthTest}),t.mesh=new i.PointCloud(t.geometry,t.material),t.mesh.dynamic=!0},n.Group.prototype={_flagUpdate:function(){var e=this;return e.attributes.age.needsUpdate=!0,e.attributes.alive.needsUpdate=!0,e.attributes.angle.needsUpdate=!0,e.attributes.velocity.needsUpdate=!0,e.attributes.acceleration.needsUpdate=!0,e.geometry.verticesNeedUpdate=!0,e},addEmitter:function(e){var t=this;e.duration?e.particlesPerSecond=e.particleCount/(t.maxAgev;++v)"sphere"===e.type?(r[v]=t._randomVector3OnSphere(e.position,e.radius,e.radiusSpread,e.radiusScale,e.radiusSpreadClamp),h[v]=t._randomVelocityVector3OnSphere(r[v],e.position,e.speed,e.speedSpread)):"disk"===e.type?(r[v]=t._randomVector3OnDisk(e.position,e.radius,e.radiusSpread,e.radiusScale,e.radiusSpreadClamp),h[v]=t._randomVelocityVector3OnSphere(r[v],e.position,e.speed,e.speedSpread)):(r[v]=t._randomVector3(e.position,e.positionSpread),h[v]=t._randomVector3(e.velocity,e.velocitySpread)),s[v]=t._randomVector3(e.acceleration,e.accelerationSpread),u[v]=new i.Vector3(Math.abs(t._randomFloat(e.sizeStart,e.sizeStartSpread)),Math.abs(t._randomFloat(e.sizeMiddle,e.sizeMiddleSpread)),Math.abs(t._randomFloat(e.sizeEnd,e.sizeEndSpread))),d[v]=new i.Vector4(t._randomFloat(e.angleStart,e.angleStartSpread),t._randomFloat(e.angleMiddle,e.angleMiddleSpread),t._randomFloat(e.angleEnd,e.angleEndSpread),e.angleAlignVelocity?1:0),l[v]=0,c[v]=e.isStatic?1:0,p[v]=t._randomColor(e.colorStart,e.colorStartSpread),f[v]=t._randomColor(e.colorMiddle,e.colorMiddleSpread),m[v]=t._randomColor(e.colorEnd,e.colorEndSpread),g[v]=new i.Vector3(Math.abs(t._randomFloat(e.opacityStart,e.opacityStartSpread)),Math.abs(t._randomFloat(e.opacityMiddle,e.opacityMiddleSpread)),Math.abs(t._randomFloat(e.opacityEnd,e.opacityEndSpread)));return e.verticesIndex=parseFloat(n),e.attributes=a,e.vertices=t.geometry.vertices,e.maxAge=t.maxAge,e.__id=t._generateID(),e.isStatic||t.emitters.push(e),t},removeEmitter:function(e){var t,r=this.emitters;if(e instanceof n.Emitter)t=e.__id;else{if("string"!=typeof e)return void console.warn("Invalid emitter or emitter ID passed to SPE.Group#removeEmitter.");t=e}for(var i=0,o=r.length;o>i;++i)if(r[i].__id===t){r.splice(i,1);break}},tick:function(e){var t=this,r=t.emitters,i=r.length;if(e=e||t.fixedTimeStep,0!==i){for(var n=0;i>n;++n)r[n].tick(e);return t._flagUpdate(),t}},getFromPool:function(){var e=this,t=e._pool,r=e._createNewWhenPoolEmpty;return t.length?t.pop():r?new n.Emitter(e._poolCreationSettings):null},releaseIntoPool:function(e){return e instanceof n.Emitter?(e.reset(),this._pool.unshift(e),this):void console.error("Will not add non-emitter to particle group pool:",e)},getPool:function(){return this._pool},addPool:function(e,t,r){var i,o=this;o._poolCreationSettings=t,o._createNewWhenPoolEmpty=!!r;for(var a=0;e>a;++a)i=new n.Emitter(t),o.addEmitter(i),o.releaseIntoPool(i);return o},_triggerSingleEmitter:function(e){var t=this,r=t.getFromPool();return null===r?void console.log("SPE.Group pool ran out."):(e&&r.position.copy(e),r.enable(),setTimeout(function(){r.disable(),t.releaseIntoPool(r)},t.maxAgeMilliseconds),t)},triggerPoolEmitter:function(e,t){var r=this;if("number"==typeof e&&e>1)for(var i=0;e>i;++i)r._triggerSingleEmitter(t);else r._triggerSingleEmitter(t);return r}};for(var o in n.utils)n.Group.prototype["_"+o]=n.utils[o];n.shaders={vertex:["uniform float duration;","uniform int hasPerspective;","attribute vec3 colorStart;","attribute vec3 colorMiddle;","attribute vec3 colorEnd;","attribute vec3 opacity;","attribute vec3 acceleration;","attribute vec3 velocity;","attribute float alive;","attribute float age;","attribute vec3 size;","attribute vec4 angle;","varying vec4 vColor;","varying float vAngle;","vec4 GetPos() {","vec3 newPos = vec3( position );","vec3 a = acceleration * age;","vec3 v = velocity * age;","v = v + (a * age);","newPos = newPos + v;","vec4 mvPosition = modelViewMatrix * vec4( newPos, 1.0 );","return mvPosition;","}","void main() {","float positionInTime = (age / duration);","float lerpAmount1 = (age / (0.5 * duration));","float lerpAmount2 = ((age - 0.5 * duration) / (0.5 * duration));","float halfDuration = duration / 2.0;","float pointSize = 0.0;","vAngle = 0.0;","if( alive > 0.5 ) {","if( positionInTime < 0.5 ) {","vColor = vec4( mix(colorStart, colorMiddle, lerpAmount1), mix(opacity.x, opacity.y, lerpAmount1) );","}","else {","vColor = vec4( mix(colorMiddle, colorEnd, lerpAmount2), mix(opacity.y, opacity.z, lerpAmount2) );","}","vec4 pos = GetPos();","if( angle[3] == 1.0 ) {","vAngle = -atan(pos.y, pos.x);","}","else if( positionInTime < 0.5 ) {","vAngle = mix( angle.x, angle.y, lerpAmount1 );","}","else {","vAngle = mix( angle.y, angle.z, lerpAmount2 );","}","if( positionInTime < 0.5) {","pointSize = mix( size.x, size.y, lerpAmount1 );","}","else {","pointSize = mix( size.y, size.z, lerpAmount2 );","}","if( hasPerspective == 1 ) {","pointSize = pointSize * ( 300.0 / length( pos.xyz ) );","}","gl_PointSize = pointSize;","gl_Position = projectionMatrix * pos;","}","else {","vColor = vec4( 0.0, 0.0, 0.0, 0.0 );","gl_Position = vec4(1000000000.0, 1000000000.0, 1000000000.0, 0.0);","}","}"].join("\n"),fragment:["uniform sampler2D texture;","uniform int colorize;","varying vec4 vColor;","varying float vAngle;","void main() {","float c = cos(vAngle);","float s = sin(vAngle);","vec2 rotatedUV = vec2(c * (gl_PointCoord.x - 0.5) + s * (gl_PointCoord.y - 0.5) + 0.5,","c * (gl_PointCoord.y - 0.5) - s * (gl_PointCoord.x - 0.5) + 0.5);","vec4 rotatedTexture = texture2D( texture, rotatedUV );","if( colorize == 1 ) {","gl_FragColor = vColor * rotatedTexture;","}","else {","gl_FragColor = rotatedTexture;","}","}"].join("\n")};var n=n||{};n.Emitter=function(e){e=e||{};var t=this;t.particleCount="number"==typeof e.particleCount?e.particleCount:100,t.type="cube"===e.type||"sphere"===e.type||"disk"===e.type?e.type:"cube",t.position=e.position instanceof i.Vector3?e.position:new i.Vector3,t.positionSpread=e.positionSpread instanceof i.Vector3?e.positionSpread:new i.Vector3,t.radius="number"==typeof e.radius?e.radius:10,t.radiusSpread="number"==typeof e.radiusSpread?e.radiusSpread:0,t.radiusScale=e.radiusScale instanceof i.Vector3?e.radiusScale:new i.Vector3(1,1,1),t.radiusSpreadClamp="number"==typeof e.radiusSpreadClamp?e.radiusSpreadClamp:0,t.acceleration=e.acceleration instanceof i.Vector3?e.acceleration:new i.Vector3,t.accelerationSpread=e.accelerationSpread instanceof i.Vector3?e.accelerationSpread:new i.Vector3,t.velocity=e.velocity instanceof i.Vector3?e.velocity:new i.Vector3,t.velocitySpread=e.velocitySpread instanceof i.Vector3?e.velocitySpread:new i.Vector3,t.speed=parseFloat("number"==typeof e.speed?e.speed:0),t.speedSpread=parseFloat("number"==typeof e.speedSpread?e.speedSpread:0),t.sizeStart=parseFloat("number"==typeof e.sizeStart?e.sizeStart:1),t.sizeStartSpread=parseFloat("number"==typeof e.sizeStartSpread?e.sizeStartSpread:0),t.sizeEnd=parseFloat("number"==typeof e.sizeEnd?e.sizeEnd:t.sizeStart), -t.sizeEndSpread=parseFloat("number"==typeof e.sizeEndSpread?e.sizeEndSpread:0),t.sizeMiddle=parseFloat("undefined"!=typeof e.sizeMiddle?e.sizeMiddle:Math.abs(t.sizeEnd+t.sizeStart)/2),t.sizeMiddleSpread=parseFloat("number"==typeof e.sizeMiddleSpread?e.sizeMiddleSpread:0),t.angleStart=parseFloat("number"==typeof e.angleStart?e.angleStart:0),t.angleStartSpread=parseFloat("number"==typeof e.angleStartSpread?e.angleStartSpread:0),t.angleEnd=parseFloat("number"==typeof e.angleEnd?e.angleEnd:0),t.angleEndSpread=parseFloat("number"==typeof e.angleEndSpread?e.angleEndSpread:0),t.angleMiddle=parseFloat("undefined"!=typeof e.angleMiddle?e.angleMiddle:Math.abs(t.angleEnd+t.angleStart)/2),t.angleMiddleSpread=parseFloat("number"==typeof e.angleMiddleSpread?e.angleMiddleSpread:0),t.angleAlignVelocity=e.angleAlignVelocity||!1,t.colorStart=e.colorStart instanceof i.Color?e.colorStart:new i.Color("white"),t.colorStartSpread=e.colorStartSpread instanceof i.Vector3?e.colorStartSpread:new i.Vector3,t.colorEnd=e.colorEnd instanceof i.Color?e.colorEnd:t.colorStart.clone(),t.colorEndSpread=e.colorEndSpread instanceof i.Vector3?e.colorEndSpread:new i.Vector3,t.colorMiddle=e.colorMiddle instanceof i.Color?e.colorMiddle:(new i.Color).addColors(t.colorStart,t.colorEnd).multiplyScalar(.5),t.colorMiddleSpread=e.colorMiddleSpread instanceof i.Vector3?e.colorMiddleSpread:new i.Vector3,t.opacityStart=parseFloat("undefined"!=typeof e.opacityStart?e.opacityStart:1),t.opacityStartSpread=parseFloat("undefined"!=typeof e.opacityStartSpread?e.opacityStartSpread:0),t.opacityEnd=parseFloat("number"==typeof e.opacityEnd?e.opacityEnd:0),t.opacityEndSpread=parseFloat("undefined"!=typeof e.opacityEndSpread?e.opacityEndSpread:0),t.opacityMiddle=parseFloat("undefined"!=typeof e.opacityMiddle?e.opacityMiddle:Math.abs(t.opacityEnd+t.opacityStart)/2),t.opacityMiddleSpread=parseFloat("number"==typeof e.opacityMiddleSpread?e.opacityMiddleSpread:0),t.duration="number"==typeof e.duration?e.duration:null,t.alive=parseFloat("number"==typeof e.alive?e.alive:1),t.isStatic="number"==typeof e.isStatic?e.isStatic:0,t.onParticleSpawn="function"==typeof e.onParticleSpawn?e.onParticleSpawn:null,t.particlesPerSecond=0,t.attributes=null,t.vertices=null,t.verticesIndex=0,t.age=0,t.maxAge=0,t.particleIndex=0,t.__id=null,t.userData={}},n.Emitter.prototype={_resetParticle:function(e){var t=this,r=t.type,i=t.positionSpread,n=t.vertices[e],o=t.attributes,a=o.velocity.value[e],s=t.velocitySpread,h=t.accelerationSpread;"cube"===r&&0===i.x&&0===i.y&&0===i.z||"sphere"===r&&0===t.radius||"disk"===r&&0===t.radius?(n.copy(t.position),t._randomizeExistingVector3(a,t.velocity,s),"cube"===r&&t._randomizeExistingVector3(t.attributes.acceleration.value[e],t.acceleration,h)):"cube"===r?(t._randomizeExistingVector3(n,t.position,i),t._randomizeExistingVector3(a,t.velocity,s),t._randomizeExistingVector3(t.attributes.acceleration.value[e],t.acceleration,h)):"sphere"===r?(t._randomizeExistingVector3OnSphere(n,t.position,t.radius,t.radiusSpread,t.radiusScale,t.radiusSpreadClamp),t._randomizeExistingVelocityVector3OnSphere(a,t.position,n,t.speed,t.speedSpread)):"disk"===r&&(t._randomizeExistingVector3OnDisk(n,t.position,t.radius,t.radiusSpread,t.radiusScale,t.radiusSpreadClamp),t._randomizeExistingVelocityVector3OnSphere(a,t.position,n,t.speed,t.speedSpread)),"function"==typeof t.onParticleSpawn&&t.onParticleSpawn(o,e)},tick:function(e){if(!this.isStatic){for(var t=this,r=t.attributes,i=r.alive.value,n=r.age.value,o=t.verticesIndex,a=t.particleCount,s=o+a,h=t.particlesPerSecond*t.alive,c=h*e,l=t.maxAge,u=t.age,d=t.duration,p=t.particleIndex,f=o;s>f;++f)1===i[f]&&(n[f]+=e),n[f]>=l&&(n[f]=0,i[f]=0);if(0===t.alive)return void(t.age=0);if("number"==typeof d&&u>d)return t.alive=0,void(t.age=0);var m,g=Math.max(Math.min(s,p+c),0),v=0,y=0,x=0|p;for(f=x;g>f;++f)1!==i[f]&&++v;if(0!==v)for(m=e/v,f=x;g>f;++f,++y)1!==i[f]&&(i[f]=1,n[f]=m*y,t._resetParticle(f));t.particleIndex+=c,t.particleIndex<0&&(t.particleIndex=0),p>=o+a&&(t.particleIndex=parseFloat(o)),t.age+=e,t.age<0&&(t.age=0)}},reset:function(e){var t=this;if(t.age=0,t.alive=0,e)for(var r=t.verticesIndex,i=t.verticesIndex+t.particleCount,n=t.attributes,o=n.alive.value,a=n.age.value,s=r;i>s;++s)o[s]=0,a[s]=0;return t},enable:function(){this.alive=1},disable:function(){this.alive=0}};for(var o in n.utils)n.Emitter.prototype["_"+o]=n.utils[o];e.exports=n},function(e,t,r){e.exports=r.p+"image/asphalt.jpg"},function(e,t,r){e.exports=r.p+"image/brick-tiles.jpg"},function(e,t,r){e.exports=r.p+"image/bricks-normal.jpg"},function(e,t,r){e.exports=r.p+"image/bricks-specular.jpg"},function(e,t,r){e.exports=r.p+"image/bricks.jpg"},function(e,t,r){e.exports="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAQAAAAEAAQMAAABmvDolAAAABlBMVEUsLCzp6enLhVdXAAAAAWJLR0QAiAUdSAAAAAlwSFlzAAALEwAACxMBAJqcGAAAAAd0SU1FB94KFBIOCP7R3TQAAAA4SURBVGje7dAhEgAACMOw/f/T4Gc5XKqjmlRTBQAAAAAAAAAAAAAA4AiMAQAAAAAAAAAAAADgGSyKafDiEFszywAAAABJRU5ErkJggg=="},function(e,t,r){e.exports="data:image/png;base64,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"; +n.SkeletonHelper.prototype.getBoneList=function(e){var t=[];e instanceof n.Bone&&t.push(e);for(var r=0;rc;c++)for(var u=h[c],d=0,p=u.vertexNormals.length;p>d;d++)s.vertices.push(new n.Vector3,new n.Vector3);n.Line.call(this,s,new n.LineBasicMaterial({color:o,linewidth:a}),n.LinePieces),this.matrixAutoUpdate=!1,this.normalMatrix=new n.Matrix3,this.update()},n.VertexNormalsHelper.prototype=Object.create(n.Line.prototype),n.VertexNormalsHelper.prototype.constructor=n.VertexNormalsHelper,n.VertexNormalsHelper.prototype.update=function(e){var t=new n.Vector3;return function(e){var r=["a","b","c","d"];this.object.updateMatrixWorld(!0),this.normalMatrix.getNormalMatrix(this.object.matrixWorld);for(var i=this.geometry.vertices,n=this.object.geometry.vertices,o=this.object.geometry.faces,a=this.object.matrixWorld,s=0,h=0,c=o.length;c>h;h++)for(var l=o[h],u=0,d=l.vertexNormals.length;d>u;u++){var p=l[r[u]],f=n[p],m=l.vertexNormals[u];i[s].copy(f).applyMatrix4(a),t.copy(m).applyMatrix3(this.normalMatrix).normalize().multiplyScalar(this.size),t.add(i[s]),s+=1,i[s].copy(t),s+=1}return this.geometry.verticesNeedUpdate=!0,this}}(),n.VertexTangentsHelper=function(e,t,r,i){this.object=e,this.size=void 0!==t?t:1;for(var o=void 0!==r?r:255,a=void 0!==i?i:1,s=new n.Geometry,h=e.geometry.faces,c=0,l=h.length;l>c;c++)for(var u=h[c],d=0,p=u.vertexTangents.length;p>d;d++)s.vertices.push(new n.Vector3),s.vertices.push(new n.Vector3);n.Line.call(this,s,new n.LineBasicMaterial({color:o,linewidth:a}),n.LinePieces),this.matrixAutoUpdate=!1,this.update()},n.VertexTangentsHelper.prototype=Object.create(n.Line.prototype),n.VertexTangentsHelper.prototype.constructor=n.VertexTangentsHelper,n.VertexTangentsHelper.prototype.update=function(e){var t=new n.Vector3;return function(e){var r=["a","b","c","d"];this.object.updateMatrixWorld(!0);for(var i=this.geometry.vertices,n=this.object.geometry.vertices,o=this.object.geometry.faces,a=this.object.matrixWorld,s=0,h=0,c=o.length;c>h;h++)for(var l=o[h],u=0,d=l.vertexTangents.length;d>u;u++){var p=l[r[u]],f=n[p],m=l.vertexTangents[u];i[s].copy(f).applyMatrix4(a),t.copy(m).transformDirection(a).multiplyScalar(this.size),t.add(i[s]),s+=1,i[s].copy(t),s+=1}return this.geometry.verticesNeedUpdate=!0,this}}(),n.WireframeHelper=function(e,t){var r=void 0!==t?t:16777215,i=[0,0],o={},a=function(e,t){return e-t},s=["a","b","c"],h=new n.BufferGeometry;if(e.geometry instanceof n.Geometry){for(var c=e.geometry.vertices,l=e.geometry.faces,u=0,d=new Uint32Array(6*l.length),p=0,f=l.length;f>p;p++)for(var m=l[p],g=0;3>g;g++){i[0]=m[s[g]],i[1]=m[s[(g+1)%3]],i.sort(a);var v=i.toString();void 0===o[v]&&(d[2*u]=i[0],d[2*u+1]=i[1],o[v]=!0,u++)}for(var y=new Float32Array(2*u*3),p=0,f=u;f>p;p++)for(var g=0;2>g;g++){var x=c[d[2*p+g]],b=6*p+3*g;y[b+0]=x.x,y[b+1]=x.y,y[b+2]=x.z}h.addAttribute("position",new n.BufferAttribute(y,3))}else if(e.geometry instanceof n.BufferGeometry)if(void 0!==e.geometry.attributes.index){var c=e.geometry.attributes.position.array,w=e.geometry.attributes.index.array,A=e.geometry.drawcalls,u=0;0===A.length&&(A=[{count:w.length,index:0,start:0}]);for(var d=new Uint32Array(2*w.length),M=0,S=A.length;S>M;++M)for(var E=A[M].start,T=A[M].count,b=A[M].index,p=E,C=E+T;C>p;p+=3)for(var g=0;3>g;g++){i[0]=b+w[p+g],i[1]=b+w[p+(g+1)%3],i.sort(a);var v=i.toString();void 0===o[v]&&(d[2*u]=i[0],d[2*u+1]=i[1],o[v]=!0,u++)}for(var y=new Float32Array(2*u*3),p=0,f=u;f>p;p++)for(var g=0;2>g;g++){var b=6*p+3*g,P=3*d[2*p+g];y[b+0]=c[P],y[b+1]=c[P+1],y[b+2]=c[P+2]}h.addAttribute("position",new n.BufferAttribute(y,3))}else{for(var c=e.geometry.attributes.position.array,u=c.length/3,L=u/3,y=new Float32Array(2*u*3),p=0,f=L;f>p;p++)for(var g=0;3>g;g++){var b=18*p+6*g,_=9*p+3*g;y[b+0]=c[_],y[b+1]=c[_+1],y[b+2]=c[_+2];var P=9*p+3*((g+1)%3);y[b+3]=c[P],y[b+4]=c[P+1],y[b+5]=c[P+2]}h.addAttribute("position",new n.BufferAttribute(y,3))}n.Line.call(this,h,new n.LineBasicMaterial({color:r}),n.LinePieces),this.matrix=e.matrixWorld,this.matrixAutoUpdate=!1},n.WireframeHelper.prototype=Object.create(n.Line.prototype),n.WireframeHelper.prototype.constructor=n.WireframeHelper,n.ImmediateRenderObject=function(){n.Object3D.call(this),this.render=function(e){}},n.ImmediateRenderObject.prototype=Object.create(n.Object3D.prototype),n.ImmediateRenderObject.prototype.constructor=n.ImmediateRenderObject,n.MorphBlendMesh=function(e,t){n.Mesh.call(this,e,t),this.animationsMap={},this.animationsList=[];var r=this.geometry.morphTargets.length,i="__default",o=0,a=r-1,s=r/1;this.createAnimation(i,o,a,s),this.setAnimationWeight(i,1)},n.MorphBlendMesh.prototype=Object.create(n.Mesh.prototype),n.MorphBlendMesh.prototype.constructor=n.MorphBlendMesh,n.MorphBlendMesh.prototype.createAnimation=function(e,t,r,i){var n={startFrame:t,endFrame:r,length:r-t+1,fps:i,duration:(r-t)/i,lastFrame:0,currentFrame:0,active:!1,time:0,direction:1,weight:1,directionBackwards:!1,mirroredLoop:!1};this.animationsMap[e]=n,this.animationsList.push(n)},n.MorphBlendMesh.prototype.autoCreateAnimations=function(e){for(var t,r=/([a-z]+)_?(\d+)/,i={},n=this.geometry,o=0,a=n.morphTargets.length;a>o;o++){var s=n.morphTargets[o],h=s.name.match(r);if(h&&h.length>1){var c=h[1];i[c]||(i[c]={start:1/0,end:-(1/0)});var l=i[c];ol.end&&(l.end=o),t||(t=c)}}for(var c in i){var l=i[c];this.createAnimation(c,l.start,l.end,e)}this.firstAnimation=t},n.MorphBlendMesh.prototype.setAnimationDirectionForward=function(e){var t=this.animationsMap[e];t&&(t.direction=1,t.directionBackwards=!1)},n.MorphBlendMesh.prototype.setAnimationDirectionBackward=function(e){var t=this.animationsMap[e];t&&(t.direction=-1,t.directionBackwards=!0)},n.MorphBlendMesh.prototype.setAnimationFPS=function(e,t){var r=this.animationsMap[e];r&&(r.fps=t,r.duration=(r.end-r.start)/r.fps)},n.MorphBlendMesh.prototype.setAnimationDuration=function(e,t){var r=this.animationsMap[e];r&&(r.duration=t,r.fps=(r.end-r.start)/r.duration)},n.MorphBlendMesh.prototype.setAnimationWeight=function(e,t){var r=this.animationsMap[e];r&&(r.weight=t)},n.MorphBlendMesh.prototype.setAnimationTime=function(e,t){var r=this.animationsMap[e];r&&(r.time=t)},n.MorphBlendMesh.prototype.getAnimationTime=function(e){var t=0,r=this.animationsMap[e];return r&&(t=r.time),t},n.MorphBlendMesh.prototype.getAnimationDuration=function(e){var t=-1,r=this.animationsMap[e];return r&&(t=r.duration),t},n.MorphBlendMesh.prototype.playAnimation=function(e){var t=this.animationsMap[e];t?(t.time=0,t.active=!0):n.warn("THREE.MorphBlendMesh: animation["+e+"] undefined in .playAnimation()")},n.MorphBlendMesh.prototype.stopAnimation=function(e){var t=this.animationsMap[e];t&&(t.active=!1)},n.MorphBlendMesh.prototype.update=function(e){for(var t=0,r=this.animationsList.length;r>t;t++){var i=this.animationsList[t];if(i.active){var o=i.duration/i.length;i.time+=i.direction*e,i.mirroredLoop?(i.time>i.duration||i.time<0)&&(i.direction*=-1,i.time>i.duration&&(i.time=i.duration,i.directionBackwards=!0),i.time<0&&(i.time=0,i.directionBackwards=!1)):(i.time=i.time%i.duration,i.time<0&&(i.time+=i.duration));var a=i.startFrame+n.Math.clamp(Math.floor(i.time/o),0,i.length-1),s=i.weight;a!==i.currentFrame&&(this.morphTargetInfluences[i.lastFrame]=0,this.morphTargetInfluences[i.currentFrame]=1*s,this.morphTargetInfluences[a]=0,i.lastFrame=i.currentFrame,i.currentFrame=a);var h=i.time%o/o;i.directionBackwards&&(h=1-h),this.morphTargetInfluences[i.currentFrame]=h*s,this.morphTargetInfluences[i.lastFrame]=(1-h)*s}}},"undefined"!=typeof e&&e.exports&&(t=e.exports=n),t.THREE=n},function(e,t,r){function i(e){return r(n(e))}function n(e){return o[e]||function(){throw new Error("Cannot find module '"+e+"'.")}()}var o={"./asphalt.jpg":42,"./brick-tiles.jpg":43,"./bricks-normal.jpg":44,"./bricks-specular.jpg":45,"./bricks.jpg":46,"./checkerboard.png":47,"./cloud10.png":48,"./grass.jpg":49,"./metal-floor.jpg":50,"./metal.jpg":51,"./stone.jpg":52,"./tiles.jpg":53,"./weathered-wood.jpg":54,"./wood.jpg":55};i.keys=function(){return Object.keys(o)},i.resolve=n,e.exports=i,i.id=34},function(e,t,r){e.exports=new RegExp("^(?:(?:(?:https?):)?//)(?:\\S+(?::\\S*)?@)?(?:((?!(?:10|127)(?:\\.\\d{1,3}){3})(?!(?:169\\.254|192\\.168)(?:\\.\\d{1,3}){2})(?!172\\.(?:1[6-9]|2\\d|3[0-1])(?:\\.\\d{1,3}){2})(?:[1-9]\\d?|1\\d\\d|2[01]\\d|22[0-3])(?:\\.(?:1?\\d{1,2}|2[0-4]\\d|25[0-5])){2}(?:\\.(?:[1-9]\\d?|1\\d\\d|2[0-4]\\d|25[0-4]))|(?:(?:[a-z\\u00a1-\\uffff0-9]-*)*[a-z\\u00a1-\\uffff0-9]+)(?:\\.(?:[a-z\\u00a1-\\uffff0-9]-*)*[a-z\\u00a1-\\uffff0-9]+)*(?:\\.(?:[a-z\\u00a1-\\uffff]{2,}))?))(?::(\\d{2,5}))?(?:/\\S*)?$","i")},function(e,t,r){function i(e,t){return function(r,i,n){return"function"==typeof i&&void 0===n&&s(r)?e(r,i):t(r,a(i,n,3))}}var n=r(62),o=r(61),a=r(63),s=r(64),h=i(n,o);e.exports=h},function(e,t,r){function i(e,t,r){var i=l(t);p.apply(i,f(t));for(var n=-1,o=i.length;++n degrees, and the cosine of that","// earth shadow hack","const float cutoffAngle = pi/1.95;","const float steepness = 1.5;","vec3 totalRayleigh(vec3 lambda)","{","return (8.0 * pow(pi, 3.0) * pow(pow(n, 2.0) - 1.0, 2.0) * (6.0 + 3.0 * pn)) / (3.0 * N * pow(lambda, vec3(4.0)) * (6.0 - 7.0 * pn));","}","// A simplied version of the total Reayleigh scattering to works on browsers that use ANGLE","vec3 simplifiedRayleigh()","{","return 0.0005 / vec3(94, 40, 18);","}","float rayleighPhase(float cosTheta)","{ ","return (3.0 / (16.0*pi)) * (1.0 + pow(cosTheta, 2.0));","// return (1.0 / (3.0*pi)) * (1.0 + pow(cosTheta, 2.0));","// return (3.0 / 4.0) * (1.0 + pow(cosTheta, 2.0));","}","vec3 totalMie(vec3 lambda, vec3 K, float T)","{","float c = (0.2 * T ) * 10E-18;","return 0.434 * c * pi * pow((2.0 * pi) / lambda, vec3(v - 2.0)) * K;","}","float hgPhase(float cosTheta, float g)","{","return (1.0 / (4.0*pi)) * ((1.0 - pow(g, 2.0)) / pow(1.0 - 2.0*g*cosTheta + pow(g, 2.0), 1.5));","}","float sunIntensity(float zenithAngleCos)","{","return EE * max(0.0, 1.0 - exp(-((cutoffAngle - acos(zenithAngleCos))/steepness)));","}","// float logLuminance(vec3 c)","// {","// return log(c.r * 0.2126 + c.g * 0.7152 + c.b * 0.0722);","// }","// Filmic ToneMapping http://filmicgames.com/archives/75","float A = 0.15;","float B = 0.50;","float C = 0.10;","float D = 0.20;","float E = 0.02;","float F = 0.30;","float W = 1000.0;","vec3 Uncharted2Tonemap(vec3 x)","{","return ((x*(A*x+C*B)+D*E)/(x*(A*x+B)+D*F))-E/F;","}","void main() ","{","float sunfade = 1.0-clamp(1.0-exp((sunPosition.y/450000.0)),0.0,1.0);","// luminance = 1.0 ;// vWorldPosition.y / 450000. + 0.5; //sunPosition.y / 450000. * 1. + 0.5;","// gl_FragColor = vec4(sunfade, sunfade, sunfade, 1.0);","reileighCoefficient = reileighCoefficient - (1.0* (1.0-sunfade));","float sunE = sunIntensity(dot(sunDirection, up));","// extinction (absorbtion + out scattering) ","// rayleigh coefficients","vec3 betaR = simplifiedRayleigh() * reileighCoefficient;","// mie coefficients","vec3 betaM = totalMie(lambda, K, turbidity) * mieCoefficient;","// optical length","// cutoff angle at 90 to avoid singularity in next formula.","float zenithAngle = acos(max(0.0, dot(up, normalize(vWorldPosition - cameraPos))));","float sR = rayleighZenithLength / (cos(zenithAngle) + 0.15 * pow(93.885 - ((zenithAngle * 180.0) / pi), -1.253));","float sM = mieZenithLength / (cos(zenithAngle) + 0.15 * pow(93.885 - ((zenithAngle * 180.0) / pi), -1.253));","// combined extinction factor ","vec3 Fex = exp(-(betaR * sR + betaM * sM));","// in scattering","float cosTheta = dot(normalize(vWorldPosition - cameraPos), sunDirection);","float rPhase = rayleighPhase(cosTheta*0.5+0.5);","vec3 betaRTheta = betaR * rPhase;","float mPhase = hgPhase(cosTheta, mieDirectionalG);","vec3 betaMTheta = betaM * mPhase;","vec3 Lin = pow(sunE * ((betaRTheta + betaMTheta) / (betaR + betaM)) * (1.0 - Fex),vec3(1.5));","Lin *= mix(vec3(1.0),pow(sunE * ((betaRTheta + betaMTheta) / (betaR + betaM)) * Fex,vec3(1.0/2.0)),clamp(pow(1.0-dot(up, sunDirection),5.0),0.0,1.0));","//nightsky","vec3 direction = normalize(vWorldPosition - cameraPos);","float theta = acos(direction.y); // elevation --> y-axis, [-pi/2, pi/2]","float phi = atan(direction.z, direction.x); // azimuth --> x-axis [-pi/2, pi/2]","vec2 uv = vec2(phi, theta) / vec2(2.0*pi, pi) + vec2(0.5, 0.0);","// vec3 L0 = texture2D(skySampler, uv).rgb+0.1 * Fex;","vec3 L0 = vec3(0.1) * Fex;","// composition + solar disc","//if (cosTheta > sunAngularDiameterCos)","float sundisk = smoothstep(sunAngularDiameterCos,sunAngularDiameterCos+0.00002,cosTheta);","// if (normalize(vWorldPosition - cameraPos).y>0.0)","L0 += (sunE * 19000.0 * Fex)*sundisk;","vec3 whiteScale = 1.0/Uncharted2Tonemap(vec3(W));","vec3 texColor = (Lin+L0); ","texColor *= 0.04 ;","texColor += vec3(0.0,0.001,0.0025)*0.3;","float g_fMaxLuminance = 1.0;","float fLumScaled = 0.1 / luminance; ","float fLumCompressed = (fLumScaled * (1.0 + (fLumScaled / (g_fMaxLuminance * g_fMaxLuminance)))) / (1.0 + fLumScaled); ","float ExposureBias = fLumCompressed;","vec3 curr = Uncharted2Tonemap((log2(2.0/pow(luminance,4.0)))*texColor);","vec3 color = curr*whiteScale;","vec3 retColor = pow(color,vec3(1.0/(1.2+(1.2*sunfade))));","gl_FragColor.rgb = retColor;","gl_FragColor.a = 1.0;","}"].join("\n")},i.Sky=function(){var e=i.ShaderLib.sky,t=i.UniformsUtils.clone(e.uniforms),r=new i.ShaderMaterial({fragmentShader:e.fragmentShader,vertexShader:e.vertexShader,uniforms:t,side:i.BackSide}),n=new i.SphereGeometry(45e4,32,15),o=new i.Mesh(n,r);this.mesh=o,this.uniforms=t}},function(e,t,r){var i=r(33),n=n||{};n.utils={randomVector3:function(e,t){var r=new i.Vector3;return r.copy(e),r.x+=Math.random()*t.x-t.x/2,r.y+=Math.random()*t.y-t.y/2,r.z+=Math.random()*t.z-t.z/2,r},randomColor:function(e,t){var r=new i.Color;return r.copy(e),r.r+=Math.random()*t.x-t.x/2,r.g+=Math.random()*t.y-t.y/2,r.b+=Math.random()*t.z-t.z/2,r.r=Math.max(0,Math.min(r.r,1)),r.g=Math.max(0,Math.min(r.g,1)),r.b=Math.max(0,Math.min(r.b,1)),r},randomFloat:function(e,t){return e+t*(Math.random()-.5)},randomVector3OnSphere:function(e,t,r,n,o){var a=2*Math.random()-1,s=6.2832*Math.random(),h=Math.sqrt(1-a*a),c=new i.Vector3(h*Math.cos(s),h*Math.sin(s),a),l=this._randomFloat(t,r);return o&&(l=Math.round(l/o)*o),c.multiplyScalar(l),n&&c.multiply(n),c.add(e),c},randomVector3OnDisk:function(e,t,r,n,o){var a=6.2832*Math.random(),s=this._randomFloat(t,r);o&&(s=Math.round(s/o)*o);var h=new i.Vector3(Math.cos(a),Math.sin(a),0).multiplyScalar(s);return n&&h.multiply(n),h.add(e),h},randomVelocityVector3OnSphere:function(e,t,r,n,o){var a=(new i.Vector3).subVectors(e,t);return a.normalize().multiplyScalar(Math.abs(this._randomFloat(r,n))),o&&a.multiply(o),a},randomizeExistingVector3:function(e,t,r){e.copy(t),e.x+=Math.random()*r.x-r.x/2,e.y+=Math.random()*r.y-r.y/2,e.z+=Math.random()*r.z-r.z/2},randomizeExistingColor:function(e,t,r){e.copy(t),e.r+=Math.random()*r.x-r.x/2,e.g+=Math.random()*r.y-r.y/2,e.b+=Math.random()*r.z-r.z/2,e.r=Math.max(0,Math.min(e.r,1)),e.g=Math.max(0,Math.min(e.g,1)),e.b=Math.max(0,Math.min(e.b,1))},randomizeExistingVector3OnSphere:function(e,t,r,i,n,o){var a=2*Math.random()-1,s=6.2832*Math.random(),h=Math.sqrt(1-a*a),c=this._randomFloat(r,i);o&&(c=Math.round(c/o)*o),e.set(h*Math.cos(s)*c,h*Math.sin(s)*c,a*c).multiply(n),e.add(t)},randomizeExistingVector3OnDisk:function(e,t,r,i,n,o){var a=6.2832*Math.random(),s=Math.abs(this._randomFloat(r,i));o&&(s=Math.round(s/o)*o),e.set(Math.cos(a),Math.sin(a),0).multiplyScalar(s),n&&e.multiply(n),e.add(t)},randomizeExistingVelocityVector3OnSphere:function(e,t,r,i,n){e.copy(r).sub(t).normalize().multiplyScalar(Math.abs(this._randomFloat(i,n)))},generateID:function(){var e="xxxxxxxx-xxxx-4xxx-yxxx-xxxxxxxxxxxx";return e=e.replace(/[xy]/g,function(e){var t=Math.random(),r=16*t|0,i="x"===e?r:3&r|8;return i.toString(16)})}};var n=n||{};n.Group=function(e){var t=this;t.fixedTimeStep=parseFloat("number"==typeof e.fixedTimeStep?e.fixedTimeStep:.016),t.maxAge=parseFloat(e.maxAge||3),t.texture=e.texture||null,t.hasPerspective=parseInt("number"==typeof e.hasPerspective?e.hasPerspective:1,10),t.colorize=parseInt("number"==typeof e.colorize?e.colorize:1,10),t.blending="number"==typeof e.blending?e.blending:i.AdditiveBlending,t.transparent="boolean"==typeof e.transparent?e.transparent:!0,t.alphaTest="number"==typeof e.alphaTest?e.alphaTest:.5,t.depthWrite="boolean"==typeof e.depthWrite?e.depthWrite:!1,t.depthTest="boolean"==typeof e.depthTest?e.depthTest:!0,t.uniforms={duration:{type:"f",value:t.maxAge},texture:{type:"t",value:t.texture},hasPerspective:{type:"i",value:t.hasPerspective},colorize:{type:"i",value:t.colorize}},t.attributes={acceleration:{type:"v3",value:[]},velocity:{type:"v3",value:[]},alive:{type:"f",value:[]},age:{type:"f",value:[]},size:{type:"v3",value:[]},angle:{type:"v4",value:[]},colorStart:{type:"c",value:[]},colorMiddle:{type:"c",value:[]},colorEnd:{type:"c",value:[]},opacity:{type:"v3",value:[]}},t.emitters=[],t._pool=[],t._poolCreationSettings=null,t._createNewWhenPoolEmpty=0,t.maxAgeMilliseconds=1e3*t.maxAge,t.geometry=new i.Geometry,t.material=new i.ShaderMaterial({uniforms:t.uniforms,attributes:t.attributes,vertexShader:n.shaders.vertex,fragmentShader:n.shaders.fragment,blending:t.blending,transparent:t.transparent,alphaTest:t.alphaTest,depthWrite:t.depthWrite,depthTest:t.depthTest}),t.mesh=new i.PointCloud(t.geometry,t.material),t.mesh.dynamic=!0},n.Group.prototype={_flagUpdate:function(){var e=this;return e.attributes.age.needsUpdate=!0,e.attributes.alive.needsUpdate=!0,e.attributes.angle.needsUpdate=!0,e.attributes.velocity.needsUpdate=!0,e.attributes.acceleration.needsUpdate=!0,e.geometry.verticesNeedUpdate=!0,e},addEmitter:function(e){var t=this;e.duration?e.particlesPerSecond=e.particleCount/(t.maxAgev;++v)"sphere"===e.type?(r[v]=t._randomVector3OnSphere(e.position,e.radius,e.radiusSpread,e.radiusScale,e.radiusSpreadClamp),h[v]=t._randomVelocityVector3OnSphere(r[v],e.position,e.speed,e.speedSpread)):"disk"===e.type?(r[v]=t._randomVector3OnDisk(e.position,e.radius,e.radiusSpread,e.radiusScale,e.radiusSpreadClamp),h[v]=t._randomVelocityVector3OnSphere(r[v],e.position,e.speed,e.speedSpread)):(r[v]=t._randomVector3(e.position,e.positionSpread),h[v]=t._randomVector3(e.velocity,e.velocitySpread)),s[v]=t._randomVector3(e.acceleration,e.accelerationSpread),u[v]=new i.Vector3(Math.abs(t._randomFloat(e.sizeStart,e.sizeStartSpread)),Math.abs(t._randomFloat(e.sizeMiddle,e.sizeMiddleSpread)),Math.abs(t._randomFloat(e.sizeEnd,e.sizeEndSpread))),d[v]=new i.Vector4(t._randomFloat(e.angleStart,e.angleStartSpread),t._randomFloat(e.angleMiddle,e.angleMiddleSpread),t._randomFloat(e.angleEnd,e.angleEndSpread),e.angleAlignVelocity?1:0),l[v]=0,c[v]=e.isStatic?1:0,p[v]=t._randomColor(e.colorStart,e.colorStartSpread),f[v]=t._randomColor(e.colorMiddle,e.colorMiddleSpread),m[v]=t._randomColor(e.colorEnd,e.colorEndSpread),g[v]=new i.Vector3(Math.abs(t._randomFloat(e.opacityStart,e.opacityStartSpread)),Math.abs(t._randomFloat(e.opacityMiddle,e.opacityMiddleSpread)),Math.abs(t._randomFloat(e.opacityEnd,e.opacityEndSpread)));return e.verticesIndex=parseFloat(n),e.attributes=a,e.vertices=t.geometry.vertices,e.maxAge=t.maxAge,e.__id=t._generateID(),e.isStatic||t.emitters.push(e),t},removeEmitter:function(e){var t,r=this.emitters;if(e instanceof n.Emitter)t=e.__id;else{if("string"!=typeof e)return void console.warn("Invalid emitter or emitter ID passed to SPE.Group#removeEmitter.");t=e}for(var i=0,o=r.length;o>i;++i)if(r[i].__id===t){r.splice(i,1);break}},tick:function(e){var t=this,r=t.emitters,i=r.length;if(e=e||t.fixedTimeStep,0!==i){for(var n=0;i>n;++n)r[n].tick(e);return t._flagUpdate(),t}},getFromPool:function(){var e=this,t=e._pool,r=e._createNewWhenPoolEmpty;return t.length?t.pop():r?new n.Emitter(e._poolCreationSettings):null},releaseIntoPool:function(e){return e instanceof n.Emitter?(e.reset(),this._pool.unshift(e),this):void console.error("Will not add non-emitter to particle group pool:",e)},getPool:function(){return this._pool},addPool:function(e,t,r){var i,o=this;o._poolCreationSettings=t,o._createNewWhenPoolEmpty=!!r;for(var a=0;e>a;++a)i=new n.Emitter(t),o.addEmitter(i),o.releaseIntoPool(i);return o},_triggerSingleEmitter:function(e){var t=this,r=t.getFromPool();return null===r?void console.log("SPE.Group pool ran out."):(e&&r.position.copy(e),r.enable(),setTimeout(function(){r.disable(),t.releaseIntoPool(r)},t.maxAgeMilliseconds),t)},triggerPoolEmitter:function(e,t){var r=this;if("number"==typeof e&&e>1)for(var i=0;e>i;++i)r._triggerSingleEmitter(t);else r._triggerSingleEmitter(t);return r}};for(var o in n.utils)n.Group.prototype["_"+o]=n.utils[o];n.shaders={vertex:["uniform float duration;","uniform int hasPerspective;","attribute vec3 colorStart;","attribute vec3 colorMiddle;","attribute vec3 colorEnd;","attribute vec3 opacity;","attribute vec3 acceleration;","attribute vec3 velocity;","attribute float alive;","attribute float age;","attribute vec3 size;","attribute vec4 angle;","varying vec4 vColor;","varying float vAngle;","vec4 GetPos() {","vec3 newPos = vec3( position );","vec3 a = acceleration * age;","vec3 v = velocity * age;","v = v + (a * age);","newPos = newPos + v;","vec4 mvPosition = modelViewMatrix * vec4( newPos, 1.0 );","return mvPosition;","}","void main() {","float positionInTime = (age / duration);","float lerpAmount1 = (age / (0.5 * duration));","float lerpAmount2 = ((age - 0.5 * duration) / (0.5 * duration));","float halfDuration = duration / 2.0;","float pointSize = 0.0;","vAngle = 0.0;","if( alive > 0.5 ) {","if( positionInTime < 0.5 ) {","vColor = vec4( mix(colorStart, colorMiddle, lerpAmount1), mix(opacity.x, opacity.y, lerpAmount1) );","}","else {","vColor = vec4( mix(colorMiddle, colorEnd, lerpAmount2), mix(opacity.y, opacity.z, lerpAmount2) );","}","vec4 pos = GetPos();","if( angle[3] == 1.0 ) {","vAngle = -atan(pos.y, pos.x);","}","else if( positionInTime < 0.5 ) {","vAngle = mix( angle.x, angle.y, lerpAmount1 );","}","else {","vAngle = mix( angle.y, angle.z, lerpAmount2 );","}","if( positionInTime < 0.5) {","pointSize = mix( size.x, size.y, lerpAmount1 );","}","else {","pointSize = mix( size.y, size.z, lerpAmount2 );","}","if( hasPerspective == 1 ) {","pointSize = pointSize * ( 300.0 / length( pos.xyz ) );","}","gl_PointSize = pointSize;","gl_Position = projectionMatrix * pos;","}","else {","vColor = vec4( 0.0, 0.0, 0.0, 0.0 );","gl_Position = vec4(1000000000.0, 1000000000.0, 1000000000.0, 0.0);","}","}"].join("\n"),fragment:["uniform sampler2D texture;","uniform int colorize;","varying vec4 vColor;","varying float vAngle;","void main() {","float c = cos(vAngle);","float s = sin(vAngle);","vec2 rotatedUV = vec2(c * (gl_PointCoord.x - 0.5) + s * (gl_PointCoord.y - 0.5) + 0.5,","c * (gl_PointCoord.y - 0.5) - s * (gl_PointCoord.x - 0.5) + 0.5);","vec4 rotatedTexture = texture2D( texture, rotatedUV );","if( colorize == 1 ) {","gl_FragColor = vColor * rotatedTexture;","}","else {","gl_FragColor = rotatedTexture;","}","}"].join("\n")};var n=n||{};n.Emitter=function(e){e=e||{};var t=this;t.particleCount="number"==typeof e.particleCount?e.particleCount:100,t.type="cube"===e.type||"sphere"===e.type||"disk"===e.type?e.type:"cube",t.position=e.position instanceof i.Vector3?e.position:new i.Vector3,t.positionSpread=e.positionSpread instanceof i.Vector3?e.positionSpread:new i.Vector3,t.radius="number"==typeof e.radius?e.radius:10,t.radiusSpread="number"==typeof e.radiusSpread?e.radiusSpread:0,t.radiusScale=e.radiusScale instanceof i.Vector3?e.radiusScale:new i.Vector3(1,1,1),t.radiusSpreadClamp="number"==typeof e.radiusSpreadClamp?e.radiusSpreadClamp:0,t.acceleration=e.acceleration instanceof i.Vector3?e.acceleration:new i.Vector3,t.accelerationSpread=e.accelerationSpread instanceof i.Vector3?e.accelerationSpread:new i.Vector3,t.velocity=e.velocity instanceof i.Vector3?e.velocity:new i.Vector3,t.velocitySpread=e.velocitySpread instanceof i.Vector3?e.velocitySpread:new i.Vector3,t.speed=parseFloat("number"==typeof e.speed?e.speed:0),t.speedSpread=parseFloat("number"==typeof e.speedSpread?e.speedSpread:0),t.sizeStart=parseFloat("number"==typeof e.sizeStart?e.sizeStart:1),t.sizeStartSpread=parseFloat("number"==typeof e.sizeStartSpread?e.sizeStartSpread:0),t.sizeEnd=parseFloat("number"==typeof e.sizeEnd?e.sizeEnd:t.sizeStart), +t.sizeEndSpread=parseFloat("number"==typeof e.sizeEndSpread?e.sizeEndSpread:0),t.sizeMiddle=parseFloat("undefined"!=typeof e.sizeMiddle?e.sizeMiddle:Math.abs(t.sizeEnd+t.sizeStart)/2),t.sizeMiddleSpread=parseFloat("number"==typeof e.sizeMiddleSpread?e.sizeMiddleSpread:0),t.angleStart=parseFloat("number"==typeof e.angleStart?e.angleStart:0),t.angleStartSpread=parseFloat("number"==typeof e.angleStartSpread?e.angleStartSpread:0),t.angleEnd=parseFloat("number"==typeof e.angleEnd?e.angleEnd:0),t.angleEndSpread=parseFloat("number"==typeof e.angleEndSpread?e.angleEndSpread:0),t.angleMiddle=parseFloat("undefined"!=typeof e.angleMiddle?e.angleMiddle:Math.abs(t.angleEnd+t.angleStart)/2),t.angleMiddleSpread=parseFloat("number"==typeof e.angleMiddleSpread?e.angleMiddleSpread:0),t.angleAlignVelocity=e.angleAlignVelocity||!1,t.colorStart=e.colorStart instanceof i.Color?e.colorStart:new i.Color("white"),t.colorStartSpread=e.colorStartSpread instanceof i.Vector3?e.colorStartSpread:new i.Vector3,t.colorEnd=e.colorEnd instanceof i.Color?e.colorEnd:t.colorStart.clone(),t.colorEndSpread=e.colorEndSpread instanceof i.Vector3?e.colorEndSpread:new i.Vector3,t.colorMiddle=e.colorMiddle instanceof i.Color?e.colorMiddle:(new i.Color).addColors(t.colorStart,t.colorEnd).multiplyScalar(.5),t.colorMiddleSpread=e.colorMiddleSpread instanceof i.Vector3?e.colorMiddleSpread:new i.Vector3,t.opacityStart=parseFloat("undefined"!=typeof e.opacityStart?e.opacityStart:1),t.opacityStartSpread=parseFloat("undefined"!=typeof e.opacityStartSpread?e.opacityStartSpread:0),t.opacityEnd=parseFloat("number"==typeof e.opacityEnd?e.opacityEnd:0),t.opacityEndSpread=parseFloat("undefined"!=typeof e.opacityEndSpread?e.opacityEndSpread:0),t.opacityMiddle=parseFloat("undefined"!=typeof e.opacityMiddle?e.opacityMiddle:Math.abs(t.opacityEnd+t.opacityStart)/2),t.opacityMiddleSpread=parseFloat("number"==typeof e.opacityMiddleSpread?e.opacityMiddleSpread:0),t.duration="number"==typeof e.duration?e.duration:null,t.alive=parseFloat("number"==typeof e.alive?e.alive:1),t.isStatic="number"==typeof e.isStatic?e.isStatic:0,t.onParticleSpawn="function"==typeof e.onParticleSpawn?e.onParticleSpawn:null,t.particlesPerSecond=0,t.attributes=null,t.vertices=null,t.verticesIndex=0,t.age=0,t.maxAge=0,t.particleIndex=0,t.__id=null,t.userData={}},n.Emitter.prototype={_resetParticle:function(e){var t=this,r=t.type,i=t.positionSpread,n=t.vertices[e],o=t.attributes,a=o.velocity.value[e],s=t.velocitySpread,h=t.accelerationSpread;"cube"===r&&0===i.x&&0===i.y&&0===i.z||"sphere"===r&&0===t.radius||"disk"===r&&0===t.radius?(n.copy(t.position),t._randomizeExistingVector3(a,t.velocity,s),"cube"===r&&t._randomizeExistingVector3(t.attributes.acceleration.value[e],t.acceleration,h)):"cube"===r?(t._randomizeExistingVector3(n,t.position,i),t._randomizeExistingVector3(a,t.velocity,s),t._randomizeExistingVector3(t.attributes.acceleration.value[e],t.acceleration,h)):"sphere"===r?(t._randomizeExistingVector3OnSphere(n,t.position,t.radius,t.radiusSpread,t.radiusScale,t.radiusSpreadClamp),t._randomizeExistingVelocityVector3OnSphere(a,t.position,n,t.speed,t.speedSpread)):"disk"===r&&(t._randomizeExistingVector3OnDisk(n,t.position,t.radius,t.radiusSpread,t.radiusScale,t.radiusSpreadClamp),t._randomizeExistingVelocityVector3OnSphere(a,t.position,n,t.speed,t.speedSpread)),"function"==typeof t.onParticleSpawn&&t.onParticleSpawn(o,e)},tick:function(e){if(!this.isStatic){for(var t=this,r=t.attributes,i=r.alive.value,n=r.age.value,o=t.verticesIndex,a=t.particleCount,s=o+a,h=t.particlesPerSecond*t.alive,c=h*e,l=t.maxAge,u=t.age,d=t.duration,p=t.particleIndex,f=o;s>f;++f)1===i[f]&&(n[f]+=e),n[f]>=l&&(n[f]=0,i[f]=0);if(0===t.alive)return void(t.age=0);if("number"==typeof d&&u>d)return t.alive=0,void(t.age=0);var m,g=Math.max(Math.min(s,p+c),0),v=0,y=0,x=0|p;for(f=x;g>f;++f)1!==i[f]&&++v;if(0!==v)for(m=e/v,f=x;g>f;++f,++y)1!==i[f]&&(i[f]=1,n[f]=m*y,t._resetParticle(f));t.particleIndex+=c,t.particleIndex<0&&(t.particleIndex=0),p>=o+a&&(t.particleIndex=parseFloat(o)),t.age+=e,t.age<0&&(t.age=0)}},reset:function(e){var t=this;if(t.age=0,t.alive=0,e)for(var r=t.verticesIndex,i=t.verticesIndex+t.particleCount,n=t.attributes,o=n.alive.value,a=n.age.value,s=r;i>s;++s)o[s]=0,a[s]=0;return t},enable:function(){this.alive=1},disable:function(){this.alive=0}};for(var o in n.utils)n.Emitter.prototype["_"+o]=n.utils[o];e.exports=n},function(e,t,r){"use strict";var i,n=r(67),o=r(65),a=r(66),s=r(68);i=e.exports=function(e,t){var r,i,a,h,c;return arguments.length<2||"string"!=typeof e?(h=t,t=e,e=null):h=arguments[2],null==e?(r=a=!0,i=!1):(r=s.call(e,"c"),i=s.call(e,"e"),a=s.call(e,"w")),c={value:t,configurable:r,enumerable:i,writable:a},h?n(o(h),c):c},i.gs=function(e,t,r){var i,h,c,l;return"string"!=typeof e?(c=r,r=t,t=e,e=null):c=arguments[3],null==t?t=void 0:a(t)?null==r?r=void 0:a(r)||(c=r,r=void 0):(c=t,t=r=void 0),null==e?(i=!0,h=!1):(i=s.call(e,"c"),h=s.call(e,"e")),l={get:t,set:r,configurable:i,enumerable:h},c?n(o(c),l):l}},function(e,t,r){e.exports=r.p+"image/asphalt.jpg"},function(e,t,r){e.exports=r.p+"image/brick-tiles.jpg"},function(e,t,r){e.exports=r.p+"image/bricks-normal.jpg"},function(e,t,r){e.exports=r.p+"image/bricks-specular.jpg"},function(e,t,r){e.exports=r.p+"image/bricks.jpg"},function(e,t,r){e.exports="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAQAAAAEAAQMAAABmvDolAAAABlBMVEUsLCzp6enLhVdXAAAAAWJLR0QAiAUdSAAAAAlwSFlzAAALEwAACxMBAJqcGAAAAAd0SU1FB94KFBIOCP7R3TQAAAA4SURBVGje7dAhEgAACMOw/f/T4Gc5XKqjmlRTBQAAAAAAAAAAAAAA4AiMAQAAAAAAAAAAAADgGSyKafDiEFszywAAAABJRU5ErkJggg=="},function(e,t,r){e.exports="data:image/png;base64,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"; -},function(e,t,r){e.exports=r.p+"image/grass.jpg"},function(e,t,r){e.exports=r.p+"image/metal-floor.jpg"},function(e,t,r){e.exports=r.p+"image/metal.jpg"},function(e,t,r){e.exports=r.p+"image/stone.jpg"},function(e,t,r){e.exports=r.p+"image/tiles.jpg"},function(e,t,r){e.exports=r.p+"image/weathered-wood.jpg"},function(e,t,r){e.exports=r.p+"image/wood.jpg"},function(e,t,r){"use strict";var i,n=r(67),o=r(65),a=r(66),s=r(68);i=e.exports=function(e,t){var r,i,a,h,c;return arguments.length<2||"string"!=typeof e?(h=t,t=e,e=null):h=arguments[2],null==e?(r=a=!0,i=!1):(r=s.call(e,"c"),i=s.call(e,"e"),a=s.call(e,"w")),c={value:t,configurable:r,enumerable:i,writable:a},h?n(o(h),c):c},i.gs=function(e,t,r){var i,h,c,l;return"string"!=typeof e?(c=r,r=t,t=e,e=null):c=arguments[3],null==t?t=void 0:a(t)?null==r?r=void 0:a(r)||(c=r,r=void 0):(c=t,t=r=void 0),null==e?(i=!0,h=!1):(i=s.call(e,"c"),h=s.call(e,"e")),l={get:t,set:r,configurable:i,enumerable:h},c?n(o(c),l):l}},function(e,t,r){"use strict";e.exports=function(e){if("function"!=typeof e)throw new TypeError(e+" is not a function");return e}},function(e,t,r){function i(e,t){for(var r=-1,i=e.length;++r-1&&e%1==0&&u>=e}function h(e){return c(e)?e:Object(e)}function c(e){var t=typeof e;return"function"==t||!!e&&"object"==t}var l=r(71),u=Math.pow(2,53)-1,d=o(i),p=a(),f=n("length");e.exports=d},function(e,t,r){function i(e,t,r){if("function"!=typeof e)return n;if(void 0===t)return e;switch(r){case 1:return function(r){return e.call(t,r)};case 3:return function(r,i,n){return e.call(t,r,i,n)};case 4:return function(r,i,n,o){return e.call(t,r,i,n,o)};case 5:return function(r,i,n,o,a){return e.call(t,r,i,n,o,a)}}return function(){return e.apply(t,arguments)}}function n(e){return e}e.exports=i},function(e,t,r){function i(e){return n(e)?e:Object(e)}function n(e){var t=typeof e;return"function"==t||!!e&&"object"==t}function o(e){return function(){return e}}var a=r(74),s=r(62),h=r(64),c=s(c=Object.getOwnPropertySymbols)&&c,l=s(Object.preventExtensions=Object.preventExtensions)&&l,u=function(){var e={1:0},t=l&&s(t=Object.assign)&&t;try{t(l(e),"xo")}catch(r){}return!e[1]&&t}(),d=u||function(e,t){return null==t?e:a(t,p(t),a(t,h(t),e))},p=c?function(e){return c(i(e))}:o([]);e.exports=d},function(e,t,r){function i(e){return"string"==typeof e?e:null==e?"":e+""}function n(e){return!!e&&"object"==typeof e}function o(e){return"number"==typeof e&&e>-1&&e%1==0&&y>=e}function a(e){return null==e?!1:m.call(e)==c?g.test(f.call(e)):n(e)&&d.test(e)}function s(e){return e=i(e),e&&u.test(e)?e.replace(l,"\\$&"):e}var h="[object Array]",c="[object Function]",l=/[.*+?^${}()|[\]\/\\]/g,u=RegExp(l.source),d=/^\[object .+?Constructor\]$/,p=Object.prototype,f=Function.prototype.toString,m=p.toString,g=RegExp("^"+s(m).replace(/toString|(function).*?(?=\\\()| for .+?(?=\\\])/g,"$1.*?")+"$"),v=a(v=Array.isArray)&&v,y=Math.pow(2,53)-1,x=v||function(e){return n(e)&&o(e.length)&&m.call(e)==h};e.exports=x},function(e,t,r){function i(e){return"string"==typeof e?e:null==e?"":e+""}function n(e){return!!e&&"object"==typeof e}function o(e){return null==e?!1:p.call(e)==s?f.test(d.call(e)):n(e)&&l.test(e)}function a(e){return e=i(e),e&&c.test(e)?e.replace(h,"\\$&"):e}var s="[object Function]",h=/[.*+?^${}()|[\]\/\\]/g,c=RegExp(h.source),l=/^\[object .+?Constructor\]$/,u=Object.prototype,d=Function.prototype.toString,p=u.toString,f=RegExp("^"+a(p).replace(/toString|(function).*?(?=\\\()| for .+?(?=\\\])/g,"$1.*?")+"$");e.exports=o},function(e,t,r){function i(e){return a(function(t,r){var i=-1,a=null==t?0:r.length,s=a>2&&r[a-2],h=a>2&&r[2],c=a>1&&r[a-1];for("function"==typeof s?(s=n(s,c,5),a-=2):(s="function"==typeof c?c:null,a-=s?1:0),h&&o(r[0],r[1],h)&&(s=3>a?null:s,a=1);++ia;++a)t=arguments[a],i(t).forEach(s);if(void 0!==r)throw r;return e}},[86,82,61,84],function(e,t,r){function i(e){return function(t){return null==t?void 0:t[e]}}function n(e,t){return e=+e,t=null==t?h:t,e>-1&&e%1==0&&t>e}function o(e,t,r){if(!s(r))return!1;var i=typeof t;if("number"==i)var o=c(r),h=a(o)&&n(t,o);else h="string"==i&&t in r;if(h){var l=r[t];return e===e?e===l:l!==l}return!1}function a(e){return"number"==typeof e&&e>-1&&e%1==0&&h>=e}function s(e){var t=typeof e;return"function"==t||!!e&&"object"==t}var h=Math.pow(2,53)-1,c=i("length");e.exports=o},function(e,t,r){function i(e,t){if("function"!=typeof e)throw new TypeError(n);return t=o(void 0===t?e.length-1:+t||0,0),function(){for(var r=arguments,i=-1,n=o(r.length-t,0),a=Array(n);++i-1&&e%1==0&&c>=e}function o(e){var t=i(e)?e.length:void 0;return n(t)&&h.call(e)==a}var a="[object Arguments]",s=Object.prototype,h=s.toString,c=Math.pow(2,53)-1;e.exports=o},function(e,t,r){"use strict";var i="razdwatrzy";e.exports=function(){return"function"!=typeof i.contains?!1:i.contains("dwa")===!0&&i.contains("foo")===!1}},function(e,t,r){"use strict";var i=String.prototype.indexOf;e.exports=function(e){return i.call(this,e,arguments[1])>-1}},function(e,t,r){"use strict";e.exports=function(e){if(null==e)throw new TypeError("Cannot use null or undefined");return e}},function(e,t,r){"use strict";e.exports=r(83)()?Object.keys:r(85)},77,function(e,t,r){"use strict";e.exports=function(){try{return Object.keys("primitive"),!0}catch(e){return!1}}},62,function(e,t,r){"use strict";var i=Object.keys;e.exports=function(e){return i(null==e?e:Object(e))}},function(e,t,r,i,n,o){function a(e,t){return e=+e,t=null==t?y:t,e>-1&&e%1==0&&t>e}function s(e){return"number"==typeof e&&e>-1&&e%1==0&&y>=e}function h(e){for(var t=l(e),r=t.length,i=r&&e.length,n=i&&s(i)&&(d(e)||x.nonEnumArgs&&u(e)),o=-1,h=[];++o0;++i2&&r[a-2],h=a>2&&r[2],c=a>1&&r[a-1];for("function"==typeof s?(s=n(s,c,5),a-=2):(s="function"==typeof c?c:null,a-=s?1:0),h&&o(r[0],r[1],h)&&(s=3>a?null:s,a=1);++i-1&&e%1==0&&u>=e}function h(e){return c(e)?e:Object(e)}function c(e){var t=typeof e;return"function"==t||!!e&&"object"==t}var l=r(79),u=Math.pow(2,53)-1,d=o(i),p=a(),f=n("length");e.exports=d},function(e,t,r){function i(e,t){for(var r=-1,i=e.length;++r-1&&e%1==0&&y>=e}function a(e){return null==e?!1:m.call(e)==c?g.test(f.call(e)):n(e)&&d.test(e)}function s(e){return e=i(e),e&&u.test(e)?e.replace(l,"\\$&"):e}var h="[object Array]",c="[object Function]",l=/[.*+?^${}()|[\]\/\\]/g,u=RegExp(l.source),d=/^\[object .+?Constructor\]$/,p=Object.prototype,f=Function.prototype.toString,m=p.toString,g=RegExp("^"+s(m).replace(/toString|(function).*?(?=\\\()| for .+?(?=\\\])/g,"$1.*?")+"$"),v=a(v=Array.isArray)&&v,y=Math.pow(2,53)-1,x=v||function(e){return n(e)&&o(e.length)&&m.call(e)==h};e.exports=x},function(e,t,r){"use strict";var i=Array.prototype.forEach,n=Object.create,o=function(e,t){var r;for(r in e)t[r]=e[r]};e.exports=function(e){var t=n(null);return i.call(arguments,function(e){null!=e&&o(Object(e),t)}),t}},function(e,t,r){"use strict";e.exports=function(e){return"function"==typeof e}},function(e,t,r){"use strict";e.exports=r(69)()?Object.assign:r(70)},function(e,t,r){"use strict";e.exports=r(71)()?String.prototype.contains:r(72)},function(e,t,r){"use strict";e.exports=function(){var e,t=Object.assign;return"function"!=typeof t?!1:(e={foo:"raz"},t(e,{bar:"dwa"},{trzy:"trzy"}),e.foo+e.bar+e.trzy==="razdwatrzy")}},function(e,t,r){"use strict";var i=r(81),n=r(80),o=Math.max;e.exports=function(e,t){var r,a,s,h=o(arguments.length,2);for(e=Object(n(e)),s=function(i){try{e[i]=t[i]}catch(n){r||(r=n)}},a=1;h>a;++a)t=arguments[a],i(t).forEach(s);if(void 0!==r)throw r;return e}},function(e,t,r){"use strict";var i="razdwatrzy";e.exports=function(){return"function"!=typeof i.contains?!1:i.contains("dwa")===!0&&i.contains("foo")===!1}},function(e,t,r){"use strict";var i=String.prototype.indexOf;e.exports=function(e){return i.call(this,e,arguments[1])>-1}},63,function(e,t,r){function i(e,t){if("function"!=typeof e)throw new TypeError(n);return t=o(void 0===t?e.length-1:+t||0,0),function(){for(var r=arguments,i=-1,n=o(r.length-t,0),a=Array(n);++i-1&&e%1==0&&t>e}function o(e,t,r){if(!s(r))return!1;var i=typeof t;if("number"==i)var o=c(r),h=a(o)&&n(t,o);else h="string"==i&&t in r;if(h){var l=r[t];return e===e?e===l:l!==l}return!1}function a(e){return"number"==typeof e&&e>-1&&e%1==0&&h>=e}function s(e){var t=typeof e;return"function"==t||!!e&&"object"==t}var h=Math.pow(2,53)-1,c=i("length");e.exports=o},function(e,t,r){function i(e){return!!e&&"object"==typeof e}function n(e){return"number"==typeof e&&e>-1&&e%1==0&&c>=e}function o(e){var t=i(e)?e.length:void 0;return n(t)&&h.call(e)==a}var a="[object Arguments]",s=Object.prototype,h=s.toString,c=Math.pow(2,53)-1;e.exports=o},function(e,t,r){function i(e,t,r){r||(r={});for(var i=-1,n=t.length;++i-1&&e%1==0&&t>e}function s(e){return"number"==typeof e&&e>-1&&e%1==0&&y>=e}function h(e){for(var t=l(e),r=t.length,i=r&&e.length,n=i&&s(i)&&(d(e)||x.nonEnumArgs&&u(e)),o=-1,h=[];++o0;++i threshold &&\n\t\t\t\t\t// \t\t(deltaY > threshold || deltaZ > threshold)\n\t\t\t\t\t// \t) {\n\t\t\t\t\tdist = Math.sqrt(deltaX * deltaX + deltaY * deltaY + deltaZ * deltaZ);\n\t\t\t\t\tif (dist > threshold) {\n\t\n\t\t\t\t\t\ttime = Date.now();\n\t\t\t\t\t\tdiff = time - lastTime;\n\t\t\t\t\t\tif (diff > 1000) {\n\t\t\t\t\t\t\tif (navigator.vibrate) {\n\t\t\t\t\t\t\t\tnavigator.vibrate(100);\n\t\t\t\t\t\t\t}\n\t\n\t\t\t\t\t\t\tlastTime = Date.now();\n\t\n\t\t\t\t\t\t\tVR.emit('shake');\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\t\n\t\t\t\tlastX = current.x;\n\t\t\t\tlastY = current.y;\n\t\t\t\tlastZ = current.z;\n\t\n\t\t\t\torientationPossible = true;\n\t\t\t}, false);\n\t\t}\n\t\n\t\tfunction initScene() {\n\t\t\tfunction attachCanvas() {\n\t\t\t\tdocument.body.insertBefore(renderer.domElement, document.body.firstChild || null);\n\t\t\t\tresize();\n\t\t\t}\n\t\n\t\t\tif (renderer) {\n\t\t\t\treturn;\n\t\t\t}\n\t\n\t\t\t//create renderer and place in document\n\t\t\trenderer = new THREE.WebGLRenderer();\n\t\t\trenderer.domElement.addEventListener('webglcontextlost', function contextLost(event) {\n\t\t\t\tconsole.log('lost context', event);\n\t\t\t});\n\t\t\t// renderer.shadowMapEnabled = true;\n\t\t\t// renderer.shadowMapSoft = true;\n\t\n\t\t\t//need a scene to put all our objects in\n\t\t\tscene = new THREE.Scene();\n\t\n\t\t\tbodyWrapper = new VRObject(scene, __webpack_require__(12), null, {\n\t\t\t\tname: 'body'\n\t\t\t}).moveTo(0, 1.5, 4);\n\t\t\tbody = bodyWrapper.object;\n\t\n\t\t\tcameraWrapper = new VRObject(body, function (parent) {\n\t\t\t\t//need a camera with which to look at stuff\n\t\t\t\tcamera = new THREE.PerspectiveCamera(60, window.innerWidth / window.innerHeight, NEAR, FAR);\n\t\t\t\tparent.add(camera);\n\t\n\t\t\t\treturn camera;\n\t\t\t})\n\t\t\t// set camera position so that OrbitControls works properly.\n\t\t\t\t.moveTo(0, 0.0001, 0.0001);\n\t\n\t\t\taudioListener = new THREE.AudioListener();\n\t\t\taudioListener.name = 'audio-listener';\n\t\t\tcamera.add(audioListener);\n\t\n\t\t\t//VRControls point the camera wherever we're looking\n\t\t\tvrControls = new THREE.VRControls(camera);\n\t\t\tvrControls.freeze = !orientationEnabled;\n\t\n\t\t\t//render left and right eye\n\t\t\tvrEffect = new THREE.VRStereoEffect(renderer);\n\t\t\tvrEffect.near = NEAR;\n\t\t\tvrEffect.far = FAR;\n\t\t\tvrEffect.addEventListener('fullscreenchange', function (evt) {\n\t\t\t\tvar screen;\n\t\t\t\tif (isFullscreen()) {\n\t\t\t\t\tif (vrMode) {\n\t\t\t\t\t\t//no mouse control\n\t\t\t\t\t\tmouseControls.enabled = false;\n\t\n\t\t\t\t\t\tvrControls.freeze = false;\n\t\t\t\t\t\tvrControls.reset();\n\t\n\t\t\t\t\t\tscreen = window.screen;\n\t\t\t\t\t\tif (screen.lockOrientation) {\n\t\t\t\t\t\t\tscreen.lockOrientation('landscape-primary');\n\t\t\t\t\t\t} else if (screen.mozLockOrientation) {\n\t\t\t\t\t\t\tscreen.mozLockOrientation('landscape-primary');\n\t\t\t\t\t\t} else if (screen.orientation && screen.orientation.lock) {\n\t\t\t\t\t\t\tscreen.orientation.lock('landscape-primary');\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t} else {\n\t\t\t\t\tVR.exitVR();\n\t\t\t\t}\n\t\n\t\t\t\tcamera.position.set(0, 0.0001, 0.0001);\n\t\t\t\tcamera.rotation.set(0, 0, 0);\n\t\n\t\t\t\tVR.emit('fullscreenchange', evt);\n\t\t\t});\n\t\n\t\t\t//report on HMD\n\t\t\tvrControls.addEventListener('devicechange', function () {\n\t\t\t\torientationPossible = true;\n\t\t\t\tif (orientationEnabled === undefined) {\n\t\t\t\t\torientationEnabled = vrControls.mode() === 'deviceorientation';\n\t\t\t\t}\n\t\n\t\t\t\tvrControls.freeze = !orientationEnabled && !vrMode;\n\t\n\t\t\t\tVR.emit('devicechange', vrControls.mode(), vrEffect.hmd());\n\t\t\t});\n\t\n\t\t\t//mouse control in case got no orientation device\n\t\t\tmouseControls = new THREE.OrbitControls(camera);\n\t\t\tmouseControls.target0.set(0, 0.0001, 0.000);\n\t\t\tmouseControls.target.copy(mouseControls.target0);\n\t\t\tmouseControls.update();\n\t\n\t\t\t//todo: remove any default lights once other lights are added\n\t\t\tvar dLight = new THREE.DirectionalLight(0xffffff, 0.8);\n\t\t\tdLight.name = 'directional-light';\n\t\t\tdLight.position.set(20, 100, 100);\n\t\n\t\t\tdLight.castShadow = true;\n\t\t\tdLight.shadowCameraVisible = true;\n\t\n\t\t\tdLight.shadowMapWidth = 2048;\n\t\t\tdLight.shadowMapHeight = 2048;\n\t\n\t\t\tdLight.shadowCameraLeft = -10;\n\t\t\tdLight.shadowCameraRight = 10;\n\t\t\tdLight.shadowCameraTop = 10;\n\t\t\tdLight.shadowCameraBottom = -10;\n\t\n\t\t\tdLight.shadowCameraFar = 150;\n\t\t\tdLight.shadowCameraNear = 100;\n\t\t\tdLight.shadowDarkness = 1;\n\t\n\t\t\tscene.add(dLight);\n\t\n\t\t\tscene.add(new THREE.AmbientLight(0x444444));\n\t\n\t\t\tif (VR) {\n\t\t\t\tVR.camera = cameraWrapper;\n\t\t\t\tVR.body = bodyWrapper;\n\t\t\t\tVR.scene = scene;\n\t\t\t\tVR.canvas = renderer.domElement;\n\t\t\t\tVR.zeroSensor = vrControls.zeroSensor;\n\t\t\t}\n\t\n\t\t\traycaster = new THREE.Raycaster();\n\t\n\t\t\tif (document.body) {\n\t\t\t\tattachCanvas();\n\t\t\t} else {\n\t\t\t\twindow.addEventListener('load', attachCanvas, false);\n\t\t\t}\n\t\n\t\t\tVR.canvas.addEventListener('mozfullscreenerror', fullScreenError, false);\n\t\t\tVR.canvas.addEventListener('webkitfullscreenerror', fullScreenError, false);\n\t\t\tVR.canvas.addEventListener('fullscreenerror', fullScreenError, false);\n\t\t}\n\t\n\t\tfunction initRequirements() {\n\t\t\t//load external requirements\n\t\t\tTHREE = __webpack_require__(33);\n\t\t\t__webpack_require__(14);\n\t\t\t__webpack_require__(15);\n\t\n\t\t\t//if (typeof __DEV__ !== 'undefined' && __DEV__) {\n\t\t\t\t__webpack_require__(16);\n\t\t\t//}\n\t\n\t\t\tTHREE.ImageUtils.crossOrigin = '';\n\t\n\t\t\teventEmitter = __webpack_require__(32);\n\t\n\t\t\t//my VR stuff. todo: move these to a separate repo or two for easy packaging\n\t\t\t__webpack_require__(17);\n\t\t\t__webpack_require__(18);\n\t\t}\n\t\n\t\tfunction initialize() {\n\t\t\t//todo: set up button/info elements\n\t\n\t\t\tinitScene();\n\t\n\t\t\tinitShake();\n\t\n\t\t\tresize();\n\t\n\t\t\tdocument.addEventListener('visibilitychange', visibilityChange);\n\t\t\tdocument.addEventListener('mozvisibilitychange', visibilityChange);\n\t\t\tdocument.addEventListener('msvisibilitychange', visibilityChange);\n\t\t\tdocument.addEventListener('webkitvisibilitychange', visibilityChange);\n\t\t}\n\t\n\t\tinitRequirements();\n\t\n\t\tmodule.exports = VR = {\n\t\t\tinit: initialize,\n\t\t\trender: render,\n\t\t\tstart: start,\n\t\t\tstop: stop,\n\t\t\tresize: resize,\n\t\n\t\t\tTHREE: THREE,\n\t\n\t\t\tmaterials: materials,\n\t\n\t\t\tanimate: function (callback) {\n\t\t\t\tvar i;\n\t\t\t\tif (typeof callback === 'function') {\n\t\t\t\t\ti = animationCallbacks.indexOf(callback);\n\t\t\t\t\tif (i < 0) {\n\t\t\t\t\t\tanimationCallbacks.push(callback);\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t},\n\t\n\t\t\tend: function (callback) {\n\t\t\t\tvar i;\n\t\n\t\t\t\tif (!callback) {\n\t\t\t\t\tanimationCallbacks.length = 0;\n\t\t\t\t\treturn;\n\t\t\t\t}\n\t\n\t\t\t\tif (typeof callback === 'function') {\n\t\t\t\t\ti = animationCallbacks.indexOf(callback);\n\t\t\t\t\tif (i >= 0) {\n\t\t\t\t\t\tanimationCallbacks.splice(i, 1);\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t},\n\t\n\t\t\trequestVR: function () {\n\t\t\t\t//todo: check if it's possible\n\t\t\t\tif (vrMode || !vrEffect) {\n\t\t\t\t\treturn;\n\t\t\t\t}\n\t\n\t\t\t\tvrMode = true;\n\t\n\t\t\t\t//full screen and render two eyes\n\t\t\t\t//always full screen\n\t\t\t\tvrEffect.requestFullScreen();\n\t\t\t},\n\t\n\t\t\texitVR: function () {\n\t\t\t\tvrMode = false;\n\t\t\t\tif (isFullscreen()) {\n\t\t\t\t\texitFullscreen();\n\t\t\t\t\treturn;\n\t\t\t\t}\n\t\n\t\t\t\tmouseControls.enabled = true;\n\t\t\t\tvrControls.freeze = !orientationEnabled;\n\t\t\t\tcamera.rotation.set(0, 0, 0);\n\t\t\t},\n\t\n\t\t\tvrMode: function () {\n\t\t\t\treturn vrMode && isFullscreen();\n\t\t\t},\n\t\n\t\t\torientationEnabled: function () {\n\t\t\t\treturn !!orientationEnabled;\n\t\t\t},\n\t\t\tenableOrientation: function () {\n\t\t\t\torientationEnabled = true;\n\t\t\t\tif (!vrMode) {\n\t\t\t\t\tvrControls.freeze = false;\n\t\t\t\t}\n\t\t\t},\n\t\t\tdisableOrientation: function () {\n\t\t\t\torientationEnabled = false;\n\t\t\t\tcamera.rotation.set(0, 0, 0);\n\t\t\t\tvrControls.freeze = !vrMode;\n\t\t\t},\n\t\n\t\t\tisFullscreen: isFullscreen,\n\t\t\trequestFullscreen: requestFullscreen,\n\t\t\texitFullscreen: function () {\n\t\t\t\tif (isFullscreen()) {\n\t\t\t\t\texitFullscreen();\n\t\t\t\t}\n\t\t\t},\n\t\n\t\t\tcontrolMode: function () {\n\t\t\t\treturn vrControls && vrControls.mode();\n\t\t\t},\n\t\n\t\t\tzeroSensor: nop,\n\t\n\t\t\tvibrate: navigator.vibrate ? navigator.vibrate.bind(navigator) : nop,\n\t\n\t\t\t// Utility\n\t\t\ttimes: function (n, callback) {\n\t\t\t\tvar i;\n\t\n\t\t\t\tfor (i = 0; i < n; i++) {\n\t\t\t\t\tcallback(i);\n\t\t\t\t}\n\t\t\t},\n\t\n\t\t\tcamera: cameraWrapper,\n\t\t\tbody: bodyWrapper,\n\t\t\tscene: scene,\n\t\t\tcanvas: renderer && renderer.domElement || null\n\t\t};\n\t\n\t\tobjectMethods.forEach(function (method) {\n\t\t\tvar creator = __webpack_require__(10)(\"./\" + method),\n\t\t\t\tkey;\n\t\n\t\t\tVR[method] = function (options) {\n\t\t\t\tvar obj = new VRObject(scene, creator, body, options);\n\t\t\t\tvrObjects.push(obj);\n\t\t\t\treturn obj;\n\t\t\t};\n\t\n\t\t\tVRObject.prototype[method] = function (options) {\n\t\t\t\tvar obj = new VRObject(this.object, creator, body, options);\n\t\t\t\tvrObjects.push(obj);\n\t\t\t\treturn obj;\n\t\t\t};\n\t\n\t\t\tfor (key in creator) {\n\t\t\t\tif (creator.hasOwnProperty(key) && typeof creator[key] === 'function') {\n\t\t\t\t\tVR[method][key] = creator[key];\n\t\t\t\t\tVRObject.prototype[method][key] = creator[key];\n\t\t\t\t}\n\t\t\t}\n\t\t});\n\t\n\t\teventEmitter(VR);\n\t\n\t\tObject.defineProperty(VR, 'target', {\n\t\t\tget: function () {\n\t\t\t\treturn target;\n\t\t\t}\n\t\t});\n\t}());\n\n\n/***/ },\n/* 2 */\n/***/ function(module, exports, __webpack_require__) {\n\n\t// style-loader: Adds some css to the DOM by adding a