diff --git a/build/three.js b/build/three.js index ce2b60888bcfcf..be6e10ac6d4a83 100644 --- a/build/three.js +++ b/build/three.js @@ -29222,7 +29222,7 @@ if ( this.responseType !== undefined ) request.responseType = this.responseType; if ( this.withCredentials !== undefined ) request.withCredentials = this.withCredentials; - if ( request.overrideMimeType ) request.overrideMimeType( 'text/plain' ); + if ( request.overrideMimeType ) request.overrideMimeType( this.mimeType !== undefined ? this.mimeType : 'text/plain' ); request.send( null ); @@ -29253,6 +29253,13 @@ this.withCredentials = value; return this; + }, + + setMimeType: function ( value ) { + + this.mimeType = value; + return this; + } } ); diff --git a/build/three.js.map b/build/three.js.map index 537f7723d0eb26..67d1a4ff011219 100644 --- a/build/three.js.map +++ b/build/three.js.map @@ -1 +1 @@ -{"version":3,"file":null,"sources":["../src/polyfills.js","../src/core/EventDispatcher.js","../src/constants.js","../src/math/Math.js","../src/math/Vector2.js","../src/textures/Texture.js","../src/math/Vector4.js","../src/renderers/WebGLRenderTarget.js","../src/renderers/WebGLRenderTargetCube.js","../src/math/Quaternion.js","../src/math/Vector3.js","../src/math/Matrix4.js","../src/textures/CubeTexture.js","../src/renderers/webgl/WebGLUniforms.js","../src/renderers/shaders/UniformsUtils.js","../src/renderers/shaders/ShaderChunk.js","../src/math/Color.js","../src/renderers/shaders/UniformsLib.js","../src/renderers/shaders/ShaderLib.js","../src/math/Box2.js","../src/renderers/webgl/plugins/LensFlarePlugin.js","../src/renderers/webgl/plugins/SpritePlugin.js","../src/materials/Material.js","../src/materials/ShaderMaterial.js","../src/materials/MeshDepthMaterial.js","../src/math/Box3.js","../src/math/Sphere.js","../src/math/Matrix3.js","../src/math/Plane.js","../src/math/Frustum.js","../src/renderers/webgl/WebGLShadowMap.js","../src/math/Ray.js","../src/math/Euler.js","../src/core/Layers.js","../src/core/Object3D.js","../src/math/Line3.js","../src/math/Triangle.js","../src/core/Face3.js","../src/materials/MeshBasicMaterial.js","../src/core/BufferAttribute.js","../src/core/Geometry.js","../src/core/DirectGeometry.js","../src/core/BufferGeometry.js","../src/objects/Mesh.js","../src/geometries/BoxBufferGeometry.js","../src/geometries/PlaneBufferGeometry.js","../src/cameras/Camera.js","../src/cameras/PerspectiveCamera.js","../src/cameras/OrthographicCamera.js","../src/renderers/webgl/WebGLIndexedBufferRenderer.js","../src/renderers/webgl/WebGLBufferRenderer.js","../src/renderers/webgl/WebGLLights.js","../src/renderers/webgl/WebGLShader.js","../src/renderers/webgl/WebGLProgram.js","../src/renderers/webgl/WebGLPrograms.js","../src/renderers/webgl/WebGLGeometries.js","../src/renderers/webgl/WebGLObjects.js","../src/renderers/webgl/WebGLTextures.js","../src/renderers/webgl/WebGLProperties.js","../src/renderers/webgl/WebGLState.js","../src/renderers/webgl/WebGLCapabilities.js","../src/renderers/webgl/WebGLExtensions.js","../src/renderers/webgl/WebGLClipping.js","../src/renderers/WebGLRenderer.js","../src/renderers/WebGL2Renderer.js","../src/scenes/FogExp2.js","../src/scenes/Fog.js","../src/scenes/Scene.js","../src/objects/LensFlare.js","../src/materials/SpriteMaterial.js","../src/objects/Sprite.js","../src/objects/LOD.js","../src/textures/DataTexture.js","../src/objects/Skeleton.js","../src/objects/Bone.js","../src/objects/SkinnedMesh.js","../src/materials/LineBasicMaterial.js","../src/objects/Line.js","../src/objects/LineSegments.js","../src/materials/PointsMaterial.js","../src/objects/Points.js","../src/objects/Group.js","../src/textures/VideoTexture.js","../src/textures/CompressedTexture.js","../src/textures/CanvasTexture.js","../src/textures/DepthTexture.js","../src/geometries/WireframeGeometry.js","../src/geometries/ParametricBufferGeometry.js","../src/geometries/ParametricGeometry.js","../src/geometries/PolyhedronBufferGeometry.js","../src/geometries/TetrahedronBufferGeometry.js","../src/geometries/TetrahedronGeometry.js","../src/geometries/OctahedronBufferGeometry.js","../src/geometries/OctahedronGeometry.js","../src/geometries/IcosahedronBufferGeometry.js","../src/geometries/IcosahedronGeometry.js","../src/geometries/DodecahedronBufferGeometry.js","../src/geometries/DodecahedronGeometry.js","../src/geometries/PolyhedronGeometry.js","../src/geometries/TubeBufferGeometry.js","../src/geometries/TubeGeometry.js","../src/geometries/TorusKnotBufferGeometry.js","../src/geometries/TorusKnotGeometry.js","../src/geometries/TorusBufferGeometry.js","../src/geometries/TorusGeometry.js","../src/extras/ShapeUtils.js","../src/geometries/ExtrudeGeometry.js","../src/geometries/TextGeometry.js","../src/geometries/SphereBufferGeometry.js","../src/geometries/SphereGeometry.js","../src/geometries/RingBufferGeometry.js","../src/geometries/RingGeometry.js","../src/geometries/PlaneGeometry.js","../src/geometries/LatheBufferGeometry.js","../src/geometries/LatheGeometry.js","../src/geometries/ShapeBufferGeometry.js","../src/geometries/ShapeGeometry.js","../src/geometries/EdgesGeometry.js","../src/geometries/CylinderBufferGeometry.js","../src/geometries/CylinderGeometry.js","../src/geometries/ConeGeometry.js","../src/geometries/ConeBufferGeometry.js","../src/geometries/CircleBufferGeometry.js","../src/geometries/CircleGeometry.js","../src/geometries/BoxGeometry.js","../src/materials/ShadowMaterial.js","../src/materials/RawShaderMaterial.js","../src/materials/MultiMaterial.js","../src/materials/MeshStandardMaterial.js","../src/materials/MeshPhysicalMaterial.js","../src/materials/MeshPhongMaterial.js","../src/materials/MeshNormalMaterial.js","../src/materials/MeshLambertMaterial.js","../src/materials/LineDashedMaterial.js","../src/loaders/Cache.js","../src/loaders/LoadingManager.js","../src/loaders/FileLoader.js","../src/loaders/CompressedTextureLoader.js","../src/loaders/BinaryTextureLoader.js","../src/loaders/ImageLoader.js","../src/loaders/CubeTextureLoader.js","../src/loaders/TextureLoader.js","../src/lights/Light.js","../src/lights/HemisphereLight.js","../src/lights/LightShadow.js","../src/lights/SpotLightShadow.js","../src/lights/SpotLight.js","../src/lights/PointLight.js","../src/lights/DirectionalLightShadow.js","../src/lights/DirectionalLight.js","../src/lights/AmbientLight.js","../src/animation/AnimationUtils.js","../src/math/Interpolant.js","../src/math/interpolants/CubicInterpolant.js","../src/math/interpolants/LinearInterpolant.js","../src/math/interpolants/DiscreteInterpolant.js","../src/animation/KeyframeTrackPrototype.js","../src/animation/KeyframeTrackConstructor.js","../src/animation/tracks/VectorKeyframeTrack.js","../src/math/interpolants/QuaternionLinearInterpolant.js","../src/animation/tracks/QuaternionKeyframeTrack.js","../src/animation/tracks/NumberKeyframeTrack.js","../src/animation/tracks/StringKeyframeTrack.js","../src/animation/tracks/BooleanKeyframeTrack.js","../src/animation/tracks/ColorKeyframeTrack.js","../src/animation/KeyframeTrack.js","../src/animation/AnimationClip.js","../src/loaders/MaterialLoader.js","../src/loaders/BufferGeometryLoader.js","../src/loaders/Loader.js","../src/loaders/JSONLoader.js","../src/loaders/ObjectLoader.js","../src/extras/core/Curve.js","../src/extras/curves/LineCurve.js","../src/extras/core/CurvePath.js","../src/extras/curves/EllipseCurve.js","../src/extras/CurveUtils.js","../src/extras/curves/SplineCurve.js","../src/extras/curves/CubicBezierCurve.js","../src/extras/curves/QuadraticBezierCurve.js","../src/extras/core/PathPrototype.js","../src/extras/core/Shape.js","../src/extras/core/Path.js","../src/extras/core/Font.js","../src/loaders/FontLoader.js","../src/audio/AudioContext.js","../src/loaders/AudioLoader.js","../src/cameras/StereoCamera.js","../src/cameras/CubeCamera.js","../src/audio/AudioListener.js","../src/audio/Audio.js","../src/audio/PositionalAudio.js","../src/audio/AudioAnalyser.js","../src/animation/PropertyMixer.js","../src/animation/PropertyBinding.js","../src/animation/AnimationObjectGroup.js","../src/animation/AnimationAction.js","../src/animation/AnimationMixer.js","../src/core/Uniform.js","../src/core/InstancedBufferGeometry.js","../src/core/InterleavedBufferAttribute.js","../src/core/InterleavedBuffer.js","../src/core/InstancedInterleavedBuffer.js","../src/core/InstancedBufferAttribute.js","../src/core/Raycaster.js","../src/core/Clock.js","../src/math/Spline.js","../src/math/Spherical.js","../src/extras/objects/MorphBlendMesh.js","../src/extras/objects/ImmediateRenderObject.js","../src/extras/helpers/VertexNormalsHelper.js","../src/extras/helpers/SpotLightHelper.js","../src/extras/helpers/SkeletonHelper.js","../src/extras/helpers/PointLightHelper.js","../src/extras/helpers/HemisphereLightHelper.js","../src/extras/helpers/GridHelper.js","../src/extras/helpers/FaceNormalsHelper.js","../src/extras/helpers/DirectionalLightHelper.js","../src/extras/helpers/CameraHelper.js","../src/extras/helpers/BoundingBoxHelper.js","../src/extras/helpers/BoxHelper.js","../src/extras/helpers/ArrowHelper.js","../src/extras/helpers/AxisHelper.js","../src/extras/curves/CatmullRomCurve3.js","../src/extras/curves/ClosedSplineCurve3.js","../src/extras/curves/SplineCurve3.js","../src/extras/curves/CubicBezierCurve3.js","../src/extras/curves/QuadraticBezierCurve3.js","../src/extras/curves/LineCurve3.js","../src/extras/curves/ArcCurve.js","../src/extras/SceneUtils.js","../src/Three.Legacy.js"],"sourcesContent":["// Polyfills\n\nif ( Number.EPSILON === undefined ) {\n\n\tNumber.EPSILON = Math.pow( 2, - 52 );\n\n}\n\n//\n\nif ( Math.sign === undefined ) {\n\n\t// https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Math/sign\n\n\tMath.sign = function ( x ) {\n\n\t\treturn ( x < 0 ) ? - 1 : ( x > 0 ) ? 1 : + x;\n\n\t};\n\n}\n\nif ( Function.prototype.name === undefined ) {\n\n\t// Missing in IE9-11.\n\t// https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Function/name\n\n\tObject.defineProperty( Function.prototype, 'name', {\n\n\t\tget: function () {\n\n\t\t\treturn this.toString().match( /^\\s*function\\s*(\\S*)\\s*\\(/ )[ 1 ];\n\n\t\t}\n\n\t} );\n\n}\n\nif ( Object.assign === undefined ) {\n\n\t// Missing in IE.\n\t// https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Object/assign\n\n\t( function () {\n\n\t\tObject.assign = function ( target ) {\n\n\t\t\t'use strict';\n\n\t\t\tif ( target === undefined || target === null ) {\n\n\t\t\t\tthrow new TypeError( 'Cannot convert undefined or null to object' );\n\n\t\t\t}\n\n\t\t\tvar output = Object( target );\n\n\t\t\tfor ( var index = 1; index < arguments.length; index ++ ) {\n\n\t\t\t\tvar source = arguments[ index ];\n\n\t\t\t\tif ( source !== undefined && source !== null ) {\n\n\t\t\t\t\tfor ( var nextKey in source ) {\n\n\t\t\t\t\t\tif ( Object.prototype.hasOwnProperty.call( source, nextKey ) ) {\n\n\t\t\t\t\t\t\toutput[ nextKey ] = source[ nextKey ];\n\n\t\t\t\t\t\t}\n\n\t\t\t\t\t}\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t\treturn output;\n\n\t\t};\n\n\t} )();\n\n}\n","/**\n * https://github.com/mrdoob/eventdispatcher.js/\n */\n\nfunction EventDispatcher() {}\n\nObject.assign( EventDispatcher.prototype, {\n\n\taddEventListener: function ( type, listener ) {\n\n\t\tif ( this._listeners === undefined ) this._listeners = {};\n\n\t\tvar listeners = this._listeners;\n\n\t\tif ( listeners[ type ] === undefined ) {\n\n\t\t\tlisteners[ type ] = [];\n\n\t\t}\n\n\t\tif ( listeners[ type ].indexOf( listener ) === - 1 ) {\n\n\t\t\tlisteners[ type ].push( listener );\n\n\t\t}\n\n\t},\n\n\thasEventListener: function ( type, listener ) {\n\n\t\tif ( this._listeners === undefined ) return false;\n\n\t\tvar listeners = this._listeners;\n\n\t\tif ( listeners[ type ] !== undefined && listeners[ type ].indexOf( listener ) !== - 1 ) {\n\n\t\t\treturn true;\n\n\t\t}\n\n\t\treturn false;\n\n\t},\n\n\tremoveEventListener: function ( type, listener ) {\n\n\t\tif ( this._listeners === undefined ) return;\n\n\t\tvar listeners = this._listeners;\n\t\tvar listenerArray = listeners[ type ];\n\n\t\tif ( listenerArray !== undefined ) {\n\n\t\t\tvar index = listenerArray.indexOf( listener );\n\n\t\t\tif ( index !== - 1 ) {\n\n\t\t\t\tlistenerArray.splice( index, 1 );\n\n\t\t\t}\n\n\t\t}\n\n\t},\n\n\tdispatchEvent: function ( event ) {\n\n\t\tif ( this._listeners === undefined ) return;\n\n\t\tvar listeners = this._listeners;\n\t\tvar listenerArray = listeners[ event.type ];\n\n\t\tif ( listenerArray !== undefined ) {\n\n\t\t\tevent.target = this;\n\n\t\t\tvar array = [], i = 0;\n\t\t\tvar length = listenerArray.length;\n\n\t\t\tfor ( i = 0; i < length; i ++ ) {\n\n\t\t\t\tarray[ i ] = listenerArray[ i ];\n\n\t\t\t}\n\n\t\t\tfor ( i = 0; i < length; i ++ ) {\n\n\t\t\t\tarray[ i ].call( this, event );\n\n\t\t\t}\n\n\t\t}\n\n\t}\n\n} );\n\n\nexport { EventDispatcher };\n","export var REVISION = '83dev';\nexport var MOUSE = { LEFT: 0, MIDDLE: 1, RIGHT: 2 };\nexport var CullFaceNone = 0;\nexport var CullFaceBack = 1;\nexport var CullFaceFront = 2;\nexport var CullFaceFrontBack = 3;\nexport var FrontFaceDirectionCW = 0;\nexport var FrontFaceDirectionCCW = 1;\nexport var BasicShadowMap = 0;\nexport var PCFShadowMap = 1;\nexport var PCFSoftShadowMap = 2;\nexport var FrontSide = 0;\nexport var BackSide = 1;\nexport var DoubleSide = 2;\nexport var FlatShading = 1;\nexport var SmoothShading = 2;\nexport var NoColors = 0;\nexport var FaceColors = 1;\nexport var VertexColors = 2;\nexport var NoBlending = 0;\nexport var NormalBlending = 1;\nexport var AdditiveBlending = 2;\nexport var SubtractiveBlending = 3;\nexport var MultiplyBlending = 4;\nexport var CustomBlending = 5;\nexport var BlendingMode = {\n\tNoBlending: NoBlending,\n\tNormalBlending: NormalBlending,\n\tAdditiveBlending: AdditiveBlending,\n\tSubtractiveBlending: SubtractiveBlending,\n\tMultiplyBlending: MultiplyBlending,\n\tCustomBlending: CustomBlending\n};\nexport var AddEquation = 100;\nexport var SubtractEquation = 101;\nexport var ReverseSubtractEquation = 102;\nexport var MinEquation = 103;\nexport var MaxEquation = 104;\nexport var ZeroFactor = 200;\nexport var OneFactor = 201;\nexport var SrcColorFactor = 202;\nexport var OneMinusSrcColorFactor = 203;\nexport var SrcAlphaFactor = 204;\nexport var OneMinusSrcAlphaFactor = 205;\nexport var DstAlphaFactor = 206;\nexport var OneMinusDstAlphaFactor = 207;\nexport var DstColorFactor = 208;\nexport var OneMinusDstColorFactor = 209;\nexport var SrcAlphaSaturateFactor = 210;\nexport var NeverDepth = 0;\nexport var AlwaysDepth = 1;\nexport var LessDepth = 2;\nexport var LessEqualDepth = 3;\nexport var EqualDepth = 4;\nexport var GreaterEqualDepth = 5;\nexport var GreaterDepth = 6;\nexport var NotEqualDepth = 7;\nexport var MultiplyOperation = 0;\nexport var MixOperation = 1;\nexport var AddOperation = 2;\nexport var NoToneMapping = 0;\nexport var LinearToneMapping = 1;\nexport var ReinhardToneMapping = 2;\nexport var Uncharted2ToneMapping = 3;\nexport var CineonToneMapping = 4;\nexport var UVMapping = 300;\nexport var CubeReflectionMapping = 301;\nexport var CubeRefractionMapping = 302;\nexport var EquirectangularReflectionMapping = 303;\nexport var EquirectangularRefractionMapping = 304;\nexport var SphericalReflectionMapping = 305;\nexport var CubeUVReflectionMapping = 306;\nexport var CubeUVRefractionMapping = 307;\nexport var TextureMapping = {\n\tUVMapping: UVMapping,\n\tCubeReflectionMapping: CubeReflectionMapping,\n\tCubeRefractionMapping: CubeRefractionMapping,\n\tEquirectangularReflectionMapping: EquirectangularReflectionMapping,\n\tEquirectangularRefractionMapping: EquirectangularRefractionMapping,\n\tSphericalReflectionMapping: SphericalReflectionMapping,\n\tCubeUVReflectionMapping: CubeUVReflectionMapping,\n\tCubeUVRefractionMapping: CubeUVRefractionMapping\n};\nexport var RepeatWrapping = 1000;\nexport var ClampToEdgeWrapping = 1001;\nexport var MirroredRepeatWrapping = 1002;\nexport var TextureWrapping = {\n\tRepeatWrapping: RepeatWrapping,\n\tClampToEdgeWrapping: ClampToEdgeWrapping,\n\tMirroredRepeatWrapping: MirroredRepeatWrapping\n};\nexport var NearestFilter = 1003;\nexport var NearestMipMapNearestFilter = 1004;\nexport var NearestMipMapLinearFilter = 1005;\nexport var LinearFilter = 1006;\nexport var LinearMipMapNearestFilter = 1007;\nexport var LinearMipMapLinearFilter = 1008;\nexport var TextureFilter = {\n\tNearestFilter: NearestFilter,\n\tNearestMipMapNearestFilter: NearestMipMapNearestFilter,\n\tNearestMipMapLinearFilter: NearestMipMapLinearFilter,\n\tLinearFilter: LinearFilter,\n\tLinearMipMapNearestFilter: LinearMipMapNearestFilter,\n\tLinearMipMapLinearFilter: LinearMipMapLinearFilter\n};\nexport var UnsignedByteType = 1009;\nexport var ByteType = 1010;\nexport var ShortType = 1011;\nexport var UnsignedShortType = 1012;\nexport var IntType = 1013;\nexport var UnsignedIntType = 1014;\nexport var FloatType = 1015;\nexport var HalfFloatType = 1016;\nexport var UnsignedShort4444Type = 1017;\nexport var UnsignedShort5551Type = 1018;\nexport var UnsignedShort565Type = 1019;\nexport var UnsignedInt248Type = 1020;\nexport var AlphaFormat = 1021;\nexport var RGBFormat = 1022;\nexport var RGBAFormat = 1023;\nexport var LuminanceFormat = 1024;\nexport var LuminanceAlphaFormat = 1025;\nexport var RGBEFormat = RGBAFormat;\nexport var DepthFormat = 1026;\nexport var DepthStencilFormat = 1027;\nexport var RGB_S3TC_DXT1_Format = 2001;\nexport var RGBA_S3TC_DXT1_Format = 2002;\nexport var RGBA_S3TC_DXT3_Format = 2003;\nexport var RGBA_S3TC_DXT5_Format = 2004;\nexport var RGB_PVRTC_4BPPV1_Format = 2100;\nexport var RGB_PVRTC_2BPPV1_Format = 2101;\nexport var RGBA_PVRTC_4BPPV1_Format = 2102;\nexport var RGBA_PVRTC_2BPPV1_Format = 2103;\nexport var RGB_ETC1_Format = 2151;\nexport var LoopOnce = 2200;\nexport var LoopRepeat = 2201;\nexport var LoopPingPong = 2202;\nexport var InterpolateDiscrete = 2300;\nexport var InterpolateLinear = 2301;\nexport var InterpolateSmooth = 2302;\nexport var ZeroCurvatureEnding = 2400;\nexport var ZeroSlopeEnding = 2401;\nexport var WrapAroundEnding = 2402;\nexport var TrianglesDrawMode = 0;\nexport var TriangleStripDrawMode = 1;\nexport var TriangleFanDrawMode = 2;\nexport var LinearEncoding = 3000;\nexport var sRGBEncoding = 3001;\nexport var GammaEncoding = 3007;\nexport var RGBEEncoding = 3002;\nexport var LogLuvEncoding = 3003;\nexport var RGBM7Encoding = 3004;\nexport var RGBM16Encoding = 3005;\nexport var RGBDEncoding = 3006;\nexport var BasicDepthPacking = 3200;\nexport var RGBADepthPacking = 3201;\n","/**\n * @author alteredq / http://alteredqualia.com/\n * @author mrdoob / http://mrdoob.com/\n */\n\nvar _Math = {\n\n\tDEG2RAD: Math.PI / 180,\n\tRAD2DEG: 180 / Math.PI,\n\n\tgenerateUUID: function () {\n\n\t\t// http://www.broofa.com/Tools/Math.uuid.htm\n\n\t\tvar chars = '0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz'.split( '' );\n\t\tvar uuid = new Array( 36 );\n\t\tvar rnd = 0, r;\n\n\t\treturn function generateUUID() {\n\n\t\t\tfor ( var i = 0; i < 36; i ++ ) {\n\n\t\t\t\tif ( i === 8 || i === 13 || i === 18 || i === 23 ) {\n\n\t\t\t\t\tuuid[ i ] = '-';\n\n\t\t\t\t} else if ( i === 14 ) {\n\n\t\t\t\t\tuuid[ i ] = '4';\n\n\t\t\t\t} else {\n\n\t\t\t\t\tif ( rnd <= 0x02 ) rnd = 0x2000000 + ( Math.random() * 0x1000000 ) | 0;\n\t\t\t\t\tr = rnd & 0xf;\n\t\t\t\t\trnd = rnd >> 4;\n\t\t\t\t\tuuid[ i ] = chars[ ( i === 19 ) ? ( r & 0x3 ) | 0x8 : r ];\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t\treturn uuid.join( '' );\n\n\t\t};\n\n\t}(),\n\n\tclamp: function ( value, min, max ) {\n\n\t\treturn Math.max( min, Math.min( max, value ) );\n\n\t},\n\n\t// compute euclidian modulo of m % n\n\t// https://en.wikipedia.org/wiki/Modulo_operation\n\n\teuclideanModulo: function ( n, m ) {\n\n\t\treturn ( ( n % m ) + m ) % m;\n\n\t},\n\n\t// Linear mapping from range to range \n\n\tmapLinear: function ( x, a1, a2, b1, b2 ) {\n\n\t\treturn b1 + ( x - a1 ) * ( b2 - b1 ) / ( a2 - a1 );\n\n\t},\n\n\t// https://en.wikipedia.org/wiki/Linear_interpolation\n\n\tlerp: function ( x, y, t ) {\n\n\t\treturn ( 1 - t ) * x + t * y;\n\n\t},\n\n\t// http://en.wikipedia.org/wiki/Smoothstep\n\n\tsmoothstep: function ( x, min, max ) {\n\n\t\tif ( x <= min ) return 0;\n\t\tif ( x >= max ) return 1;\n\n\t\tx = ( x - min ) / ( max - min );\n\n\t\treturn x * x * ( 3 - 2 * x );\n\n\t},\n\n\tsmootherstep: function ( x, min, max ) {\n\n\t\tif ( x <= min ) return 0;\n\t\tif ( x >= max ) return 1;\n\n\t\tx = ( x - min ) / ( max - min );\n\n\t\treturn x * x * x * ( x * ( x * 6 - 15 ) + 10 );\n\n\t},\n\n\trandom16: function () {\n\n\t\tconsole.warn( 'THREE.Math.random16() has been deprecated. Use Math.random() instead.' );\n\t\treturn Math.random();\n\n\t},\n\n\t// Random integer from interval\n\n\trandInt: function ( low, high ) {\n\n\t\treturn low + Math.floor( Math.random() * ( high - low + 1 ) );\n\n\t},\n\n\t// Random float from interval\n\n\trandFloat: function ( low, high ) {\n\n\t\treturn low + Math.random() * ( high - low );\n\n\t},\n\n\t// Random float from <-range/2, range/2> interval\n\n\trandFloatSpread: function ( range ) {\n\n\t\treturn range * ( 0.5 - Math.random() );\n\n\t},\n\n\tdegToRad: function ( degrees ) {\n\n\t\treturn degrees * _Math.DEG2RAD;\n\n\t},\n\n\tradToDeg: function ( radians ) {\n\n\t\treturn radians * _Math.RAD2DEG;\n\n\t},\n\n\tisPowerOfTwo: function ( value ) {\n\n\t\treturn ( value & ( value - 1 ) ) === 0 && value !== 0;\n\n\t},\n\n\tnearestPowerOfTwo: function ( value ) {\n\n\t\treturn Math.pow( 2, Math.round( Math.log( value ) / Math.LN2 ) );\n\n\t},\n\n\tnextPowerOfTwo: function ( value ) {\n\n\t\tvalue --;\n\t\tvalue |= value >> 1;\n\t\tvalue |= value >> 2;\n\t\tvalue |= value >> 4;\n\t\tvalue |= value >> 8;\n\t\tvalue |= value >> 16;\n\t\tvalue ++;\n\n\t\treturn value;\n\n\t}\n\n};\n\n\nexport { _Math };\n","/**\n * @author mrdoob / http://mrdoob.com/\n * @author philogb / http://blog.thejit.org/\n * @author egraether / http://egraether.com/\n * @author zz85 / http://www.lab4games.net/zz85/blog\n */\n\nfunction Vector2( x, y ) {\n\n\tthis.x = x || 0;\n\tthis.y = y || 0;\n\n}\n\nVector2.prototype = {\n\n\tconstructor: Vector2,\n\n\tisVector2: true,\n\n\tget width() {\n\n\t\treturn this.x;\n\n\t},\n\n\tset width( value ) {\n\n\t\tthis.x = value;\n\n\t},\n\n\tget height() {\n\n\t\treturn this.y;\n\n\t},\n\n\tset height( value ) {\n\n\t\tthis.y = value;\n\n\t},\n\n\t//\n\n\tset: function ( x, y ) {\n\n\t\tthis.x = x;\n\t\tthis.y = y;\n\n\t\treturn this;\n\n\t},\n\n\tsetScalar: function ( scalar ) {\n\n\t\tthis.x = scalar;\n\t\tthis.y = scalar;\n\n\t\treturn this;\n\n\t},\n\n\tsetX: function ( x ) {\n\n\t\tthis.x = x;\n\n\t\treturn this;\n\n\t},\n\n\tsetY: function ( y ) {\n\n\t\tthis.y = y;\n\n\t\treturn this;\n\n\t},\n\n\tsetComponent: function ( index, value ) {\n\n\t\tswitch ( index ) {\n\n\t\t\tcase 0: this.x = value; break;\n\t\t\tcase 1: this.y = value; break;\n\t\t\tdefault: throw new Error( 'index is out of range: ' + index );\n\n\t\t}\n\t\t\n\t\treturn this;\n\n\t},\n\n\tgetComponent: function ( index ) {\n\n\t\tswitch ( index ) {\n\n\t\t\tcase 0: return this.x;\n\t\t\tcase 1: return this.y;\n\t\t\tdefault: throw new Error( 'index is out of range: ' + index );\n\n\t\t}\n\n\t},\n\n\tclone: function () {\n\n\t\treturn new this.constructor( this.x, this.y );\n\n\t},\n\n\tcopy: function ( v ) {\n\n\t\tthis.x = v.x;\n\t\tthis.y = v.y;\n\n\t\treturn this;\n\n\t},\n\n\tadd: function ( v, w ) {\n\n\t\tif ( w !== undefined ) {\n\n\t\t\tconsole.warn( 'THREE.Vector2: .add() now only accepts one argument. Use .addVectors( a, b ) instead.' );\n\t\t\treturn this.addVectors( v, w );\n\n\t\t}\n\n\t\tthis.x += v.x;\n\t\tthis.y += v.y;\n\n\t\treturn this;\n\n\t},\n\n\taddScalar: function ( s ) {\n\n\t\tthis.x += s;\n\t\tthis.y += s;\n\n\t\treturn this;\n\n\t},\n\n\taddVectors: function ( a, b ) {\n\n\t\tthis.x = a.x + b.x;\n\t\tthis.y = a.y + b.y;\n\n\t\treturn this;\n\n\t},\n\n\taddScaledVector: function ( v, s ) {\n\n\t\tthis.x += v.x * s;\n\t\tthis.y += v.y * s;\n\n\t\treturn this;\n\n\t},\n\n\tsub: function ( v, w ) {\n\n\t\tif ( w !== undefined ) {\n\n\t\t\tconsole.warn( 'THREE.Vector2: .sub() now only accepts one argument. Use .subVectors( a, b ) instead.' );\n\t\t\treturn this.subVectors( v, w );\n\n\t\t}\n\n\t\tthis.x -= v.x;\n\t\tthis.y -= v.y;\n\n\t\treturn this;\n\n\t},\n\n\tsubScalar: function ( s ) {\n\n\t\tthis.x -= s;\n\t\tthis.y -= s;\n\n\t\treturn this;\n\n\t},\n\n\tsubVectors: function ( a, b ) {\n\n\t\tthis.x = a.x - b.x;\n\t\tthis.y = a.y - b.y;\n\n\t\treturn this;\n\n\t},\n\n\tmultiply: function ( v ) {\n\n\t\tthis.x *= v.x;\n\t\tthis.y *= v.y;\n\n\t\treturn this;\n\n\t},\n\n\tmultiplyScalar: function ( scalar ) {\n\n\t\tif ( isFinite( scalar ) ) {\n\n\t\t\tthis.x *= scalar;\n\t\t\tthis.y *= scalar;\n\n\t\t} else {\n\n\t\t\tthis.x = 0;\n\t\t\tthis.y = 0;\n\n\t\t}\n\n\t\treturn this;\n\n\t},\n\n\tdivide: function ( v ) {\n\n\t\tthis.x /= v.x;\n\t\tthis.y /= v.y;\n\n\t\treturn this;\n\n\t},\n\n\tdivideScalar: function ( scalar ) {\n\n\t\treturn this.multiplyScalar( 1 / scalar );\n\n\t},\n\n\tmin: function ( v ) {\n\n\t\tthis.x = Math.min( this.x, v.x );\n\t\tthis.y = Math.min( this.y, v.y );\n\n\t\treturn this;\n\n\t},\n\n\tmax: function ( v ) {\n\n\t\tthis.x = Math.max( this.x, v.x );\n\t\tthis.y = Math.max( this.y, v.y );\n\n\t\treturn this;\n\n\t},\n\n\tclamp: function ( min, max ) {\n\n\t\t// This function assumes min < max, if this assumption isn't true it will not operate correctly\n\n\t\tthis.x = Math.max( min.x, Math.min( max.x, this.x ) );\n\t\tthis.y = Math.max( min.y, Math.min( max.y, this.y ) );\n\n\t\treturn this;\n\n\t},\n\n\tclampScalar: function () {\n\n\t\tvar min, max;\n\n\t\treturn function clampScalar( minVal, maxVal ) {\n\n\t\t\tif ( min === undefined ) {\n\n\t\t\t\tmin = new Vector2();\n\t\t\t\tmax = new Vector2();\n\n\t\t\t}\n\n\t\t\tmin.set( minVal, minVal );\n\t\t\tmax.set( maxVal, maxVal );\n\n\t\t\treturn this.clamp( min, max );\n\n\t\t};\n\n\t}(),\n\n\tclampLength: function ( min, max ) {\n\n\t\tvar length = this.length();\n\n\t\treturn this.multiplyScalar( Math.max( min, Math.min( max, length ) ) / length );\n\n\t},\n\n\tfloor: function () {\n\n\t\tthis.x = Math.floor( this.x );\n\t\tthis.y = Math.floor( this.y );\n\n\t\treturn this;\n\n\t},\n\n\tceil: function () {\n\n\t\tthis.x = Math.ceil( this.x );\n\t\tthis.y = Math.ceil( this.y );\n\n\t\treturn this;\n\n\t},\n\n\tround: function () {\n\n\t\tthis.x = Math.round( this.x );\n\t\tthis.y = Math.round( this.y );\n\n\t\treturn this;\n\n\t},\n\n\troundToZero: function () {\n\n\t\tthis.x = ( this.x < 0 ) ? Math.ceil( this.x ) : Math.floor( this.x );\n\t\tthis.y = ( this.y < 0 ) ? Math.ceil( this.y ) : Math.floor( this.y );\n\n\t\treturn this;\n\n\t},\n\n\tnegate: function () {\n\n\t\tthis.x = - this.x;\n\t\tthis.y = - this.y;\n\n\t\treturn this;\n\n\t},\n\n\tdot: function ( v ) {\n\n\t\treturn this.x * v.x + this.y * v.y;\n\n\t},\n\n\tlengthSq: function () {\n\n\t\treturn this.x * this.x + this.y * this.y;\n\n\t},\n\n\tlength: function () {\n\n\t\treturn Math.sqrt( this.x * this.x + this.y * this.y );\n\n\t},\n\n\tlengthManhattan: function() {\n\n\t\treturn Math.abs( this.x ) + Math.abs( this.y );\n\n\t},\n\n\tnormalize: function () {\n\n\t\treturn this.divideScalar( this.length() );\n\n\t},\n\n\tangle: function () {\n\n\t\t// computes the angle in radians with respect to the positive x-axis\n\n\t\tvar angle = Math.atan2( this.y, this.x );\n\n\t\tif ( angle < 0 ) angle += 2 * Math.PI;\n\n\t\treturn angle;\n\n\t},\n\n\tdistanceTo: function ( v ) {\n\n\t\treturn Math.sqrt( this.distanceToSquared( v ) );\n\n\t},\n\n\tdistanceToSquared: function ( v ) {\n\n\t\tvar dx = this.x - v.x, dy = this.y - v.y;\n\t\treturn dx * dx + dy * dy;\n\n\t},\n\n\tdistanceToManhattan: function ( v ) {\n\n\t\treturn Math.abs( this.x - v.x ) + Math.abs( this.y - v.y );\n\n\t},\n\n\tsetLength: function ( length ) {\n\n\t\treturn this.multiplyScalar( length / this.length() );\n\n\t},\n\n\tlerp: function ( v, alpha ) {\n\n\t\tthis.x += ( v.x - this.x ) * alpha;\n\t\tthis.y += ( v.y - this.y ) * alpha;\n\n\t\treturn this;\n\n\t},\n\n\tlerpVectors: function ( v1, v2, alpha ) {\n\n\t\treturn this.subVectors( v2, v1 ).multiplyScalar( alpha ).add( v1 );\n\n\t},\n\n\tequals: function ( v ) {\n\n\t\treturn ( ( v.x === this.x ) && ( v.y === this.y ) );\n\n\t},\n\n\tfromArray: function ( array, offset ) {\n\n\t\tif ( offset === undefined ) offset = 0;\n\n\t\tthis.x = array[ offset ];\n\t\tthis.y = array[ offset + 1 ];\n\n\t\treturn this;\n\n\t},\n\n\ttoArray: function ( array, offset ) {\n\n\t\tif ( array === undefined ) array = [];\n\t\tif ( offset === undefined ) offset = 0;\n\n\t\tarray[ offset ] = this.x;\n\t\tarray[ offset + 1 ] = this.y;\n\n\t\treturn array;\n\n\t},\n\n\tfromAttribute: function ( attribute, index, offset ) {\n\n\t\tif ( offset === undefined ) offset = 0;\n\n\t\tindex = index * attribute.itemSize + offset;\n\n\t\tthis.x = attribute.array[ index ];\n\t\tthis.y = attribute.array[ index + 1 ];\n\n\t\treturn this;\n\n\t},\n\n\trotateAround: function ( center, angle ) {\n\n\t\tvar c = Math.cos( angle ), s = Math.sin( angle );\n\n\t\tvar x = this.x - center.x;\n\t\tvar y = this.y - center.y;\n\n\t\tthis.x = x * c - y * s + center.x;\n\t\tthis.y = x * s + y * c + center.y;\n\n\t\treturn this;\n\n\t}\n\n};\n\n\nexport { Vector2 };\n","import { EventDispatcher } from '../core/EventDispatcher';\nimport { UVMapping } from '../constants';\nimport { MirroredRepeatWrapping, ClampToEdgeWrapping, RepeatWrapping, LinearEncoding, UnsignedByteType, RGBAFormat, LinearMipMapLinearFilter, LinearFilter } from '../constants';\nimport { _Math } from '../math/Math';\nimport { Vector2 } from '../math/Vector2';\n\n/**\n * @author mrdoob / http://mrdoob.com/\n * @author alteredq / http://alteredqualia.com/\n * @author szimek / https://github.com/szimek/\n */\n\nfunction Texture( image, mapping, wrapS, wrapT, magFilter, minFilter, format, type, anisotropy, encoding ) {\n\n\tObject.defineProperty( this, 'id', { value: TextureIdCount() } );\n\n\tthis.uuid = _Math.generateUUID();\n\n\tthis.name = '';\n\tthis.sourceFile = '';\n\n\tthis.image = image !== undefined ? image : Texture.DEFAULT_IMAGE;\n\tthis.mipmaps = [];\n\n\tthis.mapping = mapping !== undefined ? mapping : Texture.DEFAULT_MAPPING;\n\n\tthis.wrapS = wrapS !== undefined ? wrapS : ClampToEdgeWrapping;\n\tthis.wrapT = wrapT !== undefined ? wrapT : ClampToEdgeWrapping;\n\n\tthis.magFilter = magFilter !== undefined ? magFilter : LinearFilter;\n\tthis.minFilter = minFilter !== undefined ? minFilter : LinearMipMapLinearFilter;\n\n\tthis.anisotropy = anisotropy !== undefined ? anisotropy : 1;\n\n\tthis.format = format !== undefined ? format : RGBAFormat;\n\tthis.type = type !== undefined ? type : UnsignedByteType;\n\n\tthis.offset = new Vector2( 0, 0 );\n\tthis.repeat = new Vector2( 1, 1 );\n\n\tthis.generateMipmaps = true;\n\tthis.premultiplyAlpha = false;\n\tthis.flipY = true;\n\tthis.unpackAlignment = 4;\t// valid values: 1, 2, 4, 8 (see http://www.khronos.org/opengles/sdk/docs/man/xhtml/glPixelStorei.xml)\n\n\n\t// Values of encoding !== THREE.LinearEncoding only supported on map, envMap and emissiveMap.\n\t//\n\t// Also changing the encoding after already used by a Material will not automatically make the Material\n\t// update. You need to explicitly call Material.needsUpdate to trigger it to recompile.\n\tthis.encoding = encoding !== undefined ? encoding : LinearEncoding;\n\n\tthis.version = 0;\n\tthis.onUpdate = null;\n\n}\n\nTexture.DEFAULT_IMAGE = undefined;\nTexture.DEFAULT_MAPPING = UVMapping;\n\nTexture.prototype = {\n\n\tconstructor: Texture,\n\n\tisTexture: true,\n\n\tset needsUpdate( value ) {\n\n\t\tif ( value === true ) this.version ++;\n\n\t},\n\n\tclone: function () {\n\n\t\treturn new this.constructor().copy( this );\n\n\t},\n\n\tcopy: function ( source ) {\n\n\t\tthis.image = source.image;\n\t\tthis.mipmaps = source.mipmaps.slice( 0 );\n\n\t\tthis.mapping = source.mapping;\n\n\t\tthis.wrapS = source.wrapS;\n\t\tthis.wrapT = source.wrapT;\n\n\t\tthis.magFilter = source.magFilter;\n\t\tthis.minFilter = source.minFilter;\n\n\t\tthis.anisotropy = source.anisotropy;\n\n\t\tthis.format = source.format;\n\t\tthis.type = source.type;\n\n\t\tthis.offset.copy( source.offset );\n\t\tthis.repeat.copy( source.repeat );\n\n\t\tthis.generateMipmaps = source.generateMipmaps;\n\t\tthis.premultiplyAlpha = source.premultiplyAlpha;\n\t\tthis.flipY = source.flipY;\n\t\tthis.unpackAlignment = source.unpackAlignment;\n\t\tthis.encoding = source.encoding;\n\n\t\treturn this;\n\n\t},\n\n\ttoJSON: function ( meta ) {\n\n\t\tif ( meta.textures[ this.uuid ] !== undefined ) {\n\n\t\t\treturn meta.textures[ this.uuid ];\n\n\t\t}\n\n\t\tfunction getDataURL( image ) {\n\n\t\t\tvar canvas;\n\n\t\t\tif ( image.toDataURL !== undefined ) {\n\n\t\t\t\tcanvas = image;\n\n\t\t\t} else {\n\n\t\t\t\tcanvas = document.createElementNS( 'http://www.w3.org/1999/xhtml', 'canvas' );\n\t\t\t\tcanvas.width = image.width;\n\t\t\t\tcanvas.height = image.height;\n\n\t\t\t\tcanvas.getContext( '2d' ).drawImage( image, 0, 0, image.width, image.height );\n\n\t\t\t}\n\n\t\t\tif ( canvas.width > 2048 || canvas.height > 2048 ) {\n\n\t\t\t\treturn canvas.toDataURL( 'image/jpeg', 0.6 );\n\n\t\t\t} else {\n\n\t\t\t\treturn canvas.toDataURL( 'image/png' );\n\n\t\t\t}\n\n\t\t}\n\n\t\tvar output = {\n\t\t\tmetadata: {\n\t\t\t\tversion: 4.4,\n\t\t\t\ttype: 'Texture',\n\t\t\t\tgenerator: 'Texture.toJSON'\n\t\t\t},\n\n\t\t\tuuid: this.uuid,\n\t\t\tname: this.name,\n\n\t\t\tmapping: this.mapping,\n\n\t\t\trepeat: [ this.repeat.x, this.repeat.y ],\n\t\t\toffset: [ this.offset.x, this.offset.y ],\n\t\t\twrap: [ this.wrapS, this.wrapT ],\n\n\t\t\tminFilter: this.minFilter,\n\t\t\tmagFilter: this.magFilter,\n\t\t\tanisotropy: this.anisotropy,\n\n\t\t\tflipY: this.flipY\n\t\t};\n\n\t\tif ( this.image !== undefined ) {\n\n\t\t\t// TODO: Move to THREE.Image\n\n\t\t\tvar image = this.image;\n\n\t\t\tif ( image.uuid === undefined ) {\n\n\t\t\t\timage.uuid = _Math.generateUUID(); // UGH\n\n\t\t\t}\n\n\t\t\tif ( meta.images[ image.uuid ] === undefined ) {\n\n\t\t\t\tmeta.images[ image.uuid ] = {\n\t\t\t\t\tuuid: image.uuid,\n\t\t\t\t\turl: getDataURL( image )\n\t\t\t\t};\n\n\t\t\t}\n\n\t\t\toutput.image = image.uuid;\n\n\t\t}\n\n\t\tmeta.textures[ this.uuid ] = output;\n\n\t\treturn output;\n\n\t},\n\n\tdispose: function () {\n\n\t\tthis.dispatchEvent( { type: 'dispose' } );\n\n\t},\n\n\ttransformUv: function ( uv ) {\n\n\t\tif ( this.mapping !== UVMapping ) return;\n\n\t\tuv.multiply( this.repeat );\n\t\tuv.add( this.offset );\n\n\t\tif ( uv.x < 0 || uv.x > 1 ) {\n\n\t\t\tswitch ( this.wrapS ) {\n\n\t\t\t\tcase RepeatWrapping:\n\n\t\t\t\t\tuv.x = uv.x - Math.floor( uv.x );\n\t\t\t\t\tbreak;\n\n\t\t\t\tcase ClampToEdgeWrapping:\n\n\t\t\t\t\tuv.x = uv.x < 0 ? 0 : 1;\n\t\t\t\t\tbreak;\n\n\t\t\t\tcase MirroredRepeatWrapping:\n\n\t\t\t\t\tif ( Math.abs( Math.floor( uv.x ) % 2 ) === 1 ) {\n\n\t\t\t\t\t\tuv.x = Math.ceil( uv.x ) - uv.x;\n\n\t\t\t\t\t} else {\n\n\t\t\t\t\t\tuv.x = uv.x - Math.floor( uv.x );\n\n\t\t\t\t\t}\n\t\t\t\t\tbreak;\n\n\t\t\t}\n\n\t\t}\n\n\t\tif ( uv.y < 0 || uv.y > 1 ) {\n\n\t\t\tswitch ( this.wrapT ) {\n\n\t\t\t\tcase RepeatWrapping:\n\n\t\t\t\t\tuv.y = uv.y - Math.floor( uv.y );\n\t\t\t\t\tbreak;\n\n\t\t\t\tcase ClampToEdgeWrapping:\n\n\t\t\t\t\tuv.y = uv.y < 0 ? 0 : 1;\n\t\t\t\t\tbreak;\n\n\t\t\t\tcase MirroredRepeatWrapping:\n\n\t\t\t\t\tif ( Math.abs( Math.floor( uv.y ) % 2 ) === 1 ) {\n\n\t\t\t\t\t\tuv.y = Math.ceil( uv.y ) - uv.y;\n\n\t\t\t\t\t} else {\n\n\t\t\t\t\t\tuv.y = uv.y - Math.floor( uv.y );\n\n\t\t\t\t\t}\n\t\t\t\t\tbreak;\n\n\t\t\t}\n\n\t\t}\n\n\t\tif ( this.flipY ) {\n\n\t\t\tuv.y = 1 - uv.y;\n\n\t\t}\n\n\t}\n\n};\n\nObject.assign( Texture.prototype, EventDispatcher.prototype );\n\nvar count = 0;\nfunction TextureIdCount() { return count++; };\n\n\nexport { TextureIdCount, Texture };\n","/**\n * @author supereggbert / http://www.paulbrunt.co.uk/\n * @author philogb / http://blog.thejit.org/\n * @author mikael emtinger / http://gomo.se/\n * @author egraether / http://egraether.com/\n * @author WestLangley / http://github.com/WestLangley\n */\n\nfunction Vector4( x, y, z, w ) {\n\n\tthis.x = x || 0;\n\tthis.y = y || 0;\n\tthis.z = z || 0;\n\tthis.w = ( w !== undefined ) ? w : 1;\n\n}\n\nVector4.prototype = {\n\n\tconstructor: Vector4,\n\n\tisVector4: true,\n\n\tset: function ( x, y, z, w ) {\n\n\t\tthis.x = x;\n\t\tthis.y = y;\n\t\tthis.z = z;\n\t\tthis.w = w;\n\n\t\treturn this;\n\n\t},\n\n\tsetScalar: function ( scalar ) {\n\n\t\tthis.x = scalar;\n\t\tthis.y = scalar;\n\t\tthis.z = scalar;\n\t\tthis.w = scalar;\n\n\t\treturn this;\n\n\t},\n\n\tsetX: function ( x ) {\n\n\t\tthis.x = x;\n\n\t\treturn this;\n\n\t},\n\n\tsetY: function ( y ) {\n\n\t\tthis.y = y;\n\n\t\treturn this;\n\n\t},\n\n\tsetZ: function ( z ) {\n\n\t\tthis.z = z;\n\n\t\treturn this;\n\n\t},\n\n\tsetW: function ( w ) {\n\n\t\tthis.w = w;\n\n\t\treturn this;\n\n\t},\n\n\tsetComponent: function ( index, value ) {\n\n\t\tswitch ( index ) {\n\n\t\t\tcase 0: this.x = value; break;\n\t\t\tcase 1: this.y = value; break;\n\t\t\tcase 2: this.z = value; break;\n\t\t\tcase 3: this.w = value; break;\n\t\t\tdefault: throw new Error( 'index is out of range: ' + index );\n\n\t\t}\n\t\t\n\t\treturn this;\n\n\t},\n\n\tgetComponent: function ( index ) {\n\n\t\tswitch ( index ) {\n\n\t\t\tcase 0: return this.x;\n\t\t\tcase 1: return this.y;\n\t\t\tcase 2: return this.z;\n\t\t\tcase 3: return this.w;\n\t\t\tdefault: throw new Error( 'index is out of range: ' + index );\n\n\t\t}\n\n\t},\n\n\tclone: function () {\n\n\t\treturn new this.constructor( this.x, this.y, this.z, this.w );\n\n\t},\n\n\tcopy: function ( v ) {\n\n\t\tthis.x = v.x;\n\t\tthis.y = v.y;\n\t\tthis.z = v.z;\n\t\tthis.w = ( v.w !== undefined ) ? v.w : 1;\n\n\t\treturn this;\n\n\t},\n\n\tadd: function ( v, w ) {\n\n\t\tif ( w !== undefined ) {\n\n\t\t\tconsole.warn( 'THREE.Vector4: .add() now only accepts one argument. Use .addVectors( a, b ) instead.' );\n\t\t\treturn this.addVectors( v, w );\n\n\t\t}\n\n\t\tthis.x += v.x;\n\t\tthis.y += v.y;\n\t\tthis.z += v.z;\n\t\tthis.w += v.w;\n\n\t\treturn this;\n\n\t},\n\n\taddScalar: function ( s ) {\n\n\t\tthis.x += s;\n\t\tthis.y += s;\n\t\tthis.z += s;\n\t\tthis.w += s;\n\n\t\treturn this;\n\n\t},\n\n\taddVectors: function ( a, b ) {\n\n\t\tthis.x = a.x + b.x;\n\t\tthis.y = a.y + b.y;\n\t\tthis.z = a.z + b.z;\n\t\tthis.w = a.w + b.w;\n\n\t\treturn this;\n\n\t},\n\n\taddScaledVector: function ( v, s ) {\n\n\t\tthis.x += v.x * s;\n\t\tthis.y += v.y * s;\n\t\tthis.z += v.z * s;\n\t\tthis.w += v.w * s;\n\n\t\treturn this;\n\n\t},\n\n\tsub: function ( v, w ) {\n\n\t\tif ( w !== undefined ) {\n\n\t\t\tconsole.warn( 'THREE.Vector4: .sub() now only accepts one argument. Use .subVectors( a, b ) instead.' );\n\t\t\treturn this.subVectors( v, w );\n\n\t\t}\n\n\t\tthis.x -= v.x;\n\t\tthis.y -= v.y;\n\t\tthis.z -= v.z;\n\t\tthis.w -= v.w;\n\n\t\treturn this;\n\n\t},\n\n\tsubScalar: function ( s ) {\n\n\t\tthis.x -= s;\n\t\tthis.y -= s;\n\t\tthis.z -= s;\n\t\tthis.w -= s;\n\n\t\treturn this;\n\n\t},\n\n\tsubVectors: function ( a, b ) {\n\n\t\tthis.x = a.x - b.x;\n\t\tthis.y = a.y - b.y;\n\t\tthis.z = a.z - b.z;\n\t\tthis.w = a.w - b.w;\n\n\t\treturn this;\n\n\t},\n\n\tmultiplyScalar: function ( scalar ) {\n\n\t\tif ( isFinite( scalar ) ) {\n\n\t\t\tthis.x *= scalar;\n\t\t\tthis.y *= scalar;\n\t\t\tthis.z *= scalar;\n\t\t\tthis.w *= scalar;\n\n\t\t} else {\n\n\t\t\tthis.x = 0;\n\t\t\tthis.y = 0;\n\t\t\tthis.z = 0;\n\t\t\tthis.w = 0;\n\n\t\t}\n\n\t\treturn this;\n\n\t},\n\n\tapplyMatrix4: function ( m ) {\n\n\t\tvar x = this.x, y = this.y, z = this.z, w = this.w;\n\t\tvar e = m.elements;\n\n\t\tthis.x = e[ 0 ] * x + e[ 4 ] * y + e[ 8 ] * z + e[ 12 ] * w;\n\t\tthis.y = e[ 1 ] * x + e[ 5 ] * y + e[ 9 ] * z + e[ 13 ] * w;\n\t\tthis.z = e[ 2 ] * x + e[ 6 ] * y + e[ 10 ] * z + e[ 14 ] * w;\n\t\tthis.w = e[ 3 ] * x + e[ 7 ] * y + e[ 11 ] * z + e[ 15 ] * w;\n\n\t\treturn this;\n\n\t},\n\n\tdivideScalar: function ( scalar ) {\n\n\t\treturn this.multiplyScalar( 1 / scalar );\n\n\t},\n\n\tsetAxisAngleFromQuaternion: function ( q ) {\n\n\t\t// http://www.euclideanspace.com/maths/geometry/rotations/conversions/quaternionToAngle/index.htm\n\n\t\t// q is assumed to be normalized\n\n\t\tthis.w = 2 * Math.acos( q.w );\n\n\t\tvar s = Math.sqrt( 1 - q.w * q.w );\n\n\t\tif ( s < 0.0001 ) {\n\n\t\t\t this.x = 1;\n\t\t\t this.y = 0;\n\t\t\t this.z = 0;\n\n\t\t} else {\n\n\t\t\t this.x = q.x / s;\n\t\t\t this.y = q.y / s;\n\t\t\t this.z = q.z / s;\n\n\t\t}\n\n\t\treturn this;\n\n\t},\n\n\tsetAxisAngleFromRotationMatrix: function ( m ) {\n\n\t\t// http://www.euclideanspace.com/maths/geometry/rotations/conversions/matrixToAngle/index.htm\n\n\t\t// assumes the upper 3x3 of m is a pure rotation matrix (i.e, unscaled)\n\n\t\tvar angle, x, y, z,\t\t// variables for result\n\t\t\tepsilon = 0.01,\t\t// margin to allow for rounding errors\n\t\t\tepsilon2 = 0.1,\t\t// margin to distinguish between 0 and 180 degrees\n\n\t\t\tte = m.elements,\n\n\t\t\tm11 = te[ 0 ], m12 = te[ 4 ], m13 = te[ 8 ],\n\t\t\tm21 = te[ 1 ], m22 = te[ 5 ], m23 = te[ 9 ],\n\t\t\tm31 = te[ 2 ], m32 = te[ 6 ], m33 = te[ 10 ];\n\n\t\tif ( ( Math.abs( m12 - m21 ) < epsilon ) &&\n\t\t ( Math.abs( m13 - m31 ) < epsilon ) &&\n\t\t ( Math.abs( m23 - m32 ) < epsilon ) ) {\n\n\t\t\t// singularity found\n\t\t\t// first check for identity matrix which must have +1 for all terms\n\t\t\t// in leading diagonal and zero in other terms\n\n\t\t\tif ( ( Math.abs( m12 + m21 ) < epsilon2 ) &&\n\t\t\t ( Math.abs( m13 + m31 ) < epsilon2 ) &&\n\t\t\t ( Math.abs( m23 + m32 ) < epsilon2 ) &&\n\t\t\t ( Math.abs( m11 + m22 + m33 - 3 ) < epsilon2 ) ) {\n\n\t\t\t\t// this singularity is identity matrix so angle = 0\n\n\t\t\t\tthis.set( 1, 0, 0, 0 );\n\n\t\t\t\treturn this; // zero angle, arbitrary axis\n\n\t\t\t}\n\n\t\t\t// otherwise this singularity is angle = 180\n\n\t\t\tangle = Math.PI;\n\n\t\t\tvar xx = ( m11 + 1 ) / 2;\n\t\t\tvar yy = ( m22 + 1 ) / 2;\n\t\t\tvar zz = ( m33 + 1 ) / 2;\n\t\t\tvar xy = ( m12 + m21 ) / 4;\n\t\t\tvar xz = ( m13 + m31 ) / 4;\n\t\t\tvar yz = ( m23 + m32 ) / 4;\n\n\t\t\tif ( ( xx > yy ) && ( xx > zz ) ) {\n\n\t\t\t\t// m11 is the largest diagonal term\n\n\t\t\t\tif ( xx < epsilon ) {\n\n\t\t\t\t\tx = 0;\n\t\t\t\t\ty = 0.707106781;\n\t\t\t\t\tz = 0.707106781;\n\n\t\t\t\t} else {\n\n\t\t\t\t\tx = Math.sqrt( xx );\n\t\t\t\t\ty = xy / x;\n\t\t\t\t\tz = xz / x;\n\n\t\t\t\t}\n\n\t\t\t} else if ( yy > zz ) {\n\n\t\t\t\t// m22 is the largest diagonal term\n\n\t\t\t\tif ( yy < epsilon ) {\n\n\t\t\t\t\tx = 0.707106781;\n\t\t\t\t\ty = 0;\n\t\t\t\t\tz = 0.707106781;\n\n\t\t\t\t} else {\n\n\t\t\t\t\ty = Math.sqrt( yy );\n\t\t\t\t\tx = xy / y;\n\t\t\t\t\tz = yz / y;\n\n\t\t\t\t}\n\n\t\t\t} else {\n\n\t\t\t\t// m33 is the largest diagonal term so base result on this\n\n\t\t\t\tif ( zz < epsilon ) {\n\n\t\t\t\t\tx = 0.707106781;\n\t\t\t\t\ty = 0.707106781;\n\t\t\t\t\tz = 0;\n\n\t\t\t\t} else {\n\n\t\t\t\t\tz = Math.sqrt( zz );\n\t\t\t\t\tx = xz / z;\n\t\t\t\t\ty = yz / z;\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t\tthis.set( x, y, z, angle );\n\n\t\t\treturn this; // return 180 deg rotation\n\n\t\t}\n\n\t\t// as we have reached here there are no singularities so we can handle normally\n\n\t\tvar s = Math.sqrt( ( m32 - m23 ) * ( m32 - m23 ) +\n\t\t ( m13 - m31 ) * ( m13 - m31 ) +\n\t\t ( m21 - m12 ) * ( m21 - m12 ) ); // used to normalize\n\n\t\tif ( Math.abs( s ) < 0.001 ) s = 1;\n\n\t\t// prevent divide by zero, should not happen if matrix is orthogonal and should be\n\t\t// caught by singularity test above, but I've left it in just in case\n\n\t\tthis.x = ( m32 - m23 ) / s;\n\t\tthis.y = ( m13 - m31 ) / s;\n\t\tthis.z = ( m21 - m12 ) / s;\n\t\tthis.w = Math.acos( ( m11 + m22 + m33 - 1 ) / 2 );\n\n\t\treturn this;\n\n\t},\n\n\tmin: function ( v ) {\n\n\t\tthis.x = Math.min( this.x, v.x );\n\t\tthis.y = Math.min( this.y, v.y );\n\t\tthis.z = Math.min( this.z, v.z );\n\t\tthis.w = Math.min( this.w, v.w );\n\n\t\treturn this;\n\n\t},\n\n\tmax: function ( v ) {\n\n\t\tthis.x = Math.max( this.x, v.x );\n\t\tthis.y = Math.max( this.y, v.y );\n\t\tthis.z = Math.max( this.z, v.z );\n\t\tthis.w = Math.max( this.w, v.w );\n\n\t\treturn this;\n\n\t},\n\n\tclamp: function ( min, max ) {\n\n\t\t// This function assumes min < max, if this assumption isn't true it will not operate correctly\n\n\t\tthis.x = Math.max( min.x, Math.min( max.x, this.x ) );\n\t\tthis.y = Math.max( min.y, Math.min( max.y, this.y ) );\n\t\tthis.z = Math.max( min.z, Math.min( max.z, this.z ) );\n\t\tthis.w = Math.max( min.w, Math.min( max.w, this.w ) );\n\n\t\treturn this;\n\n\t},\n\n\tclampScalar: function () {\n\n\t\tvar min, max;\n\n\t\treturn function clampScalar( minVal, maxVal ) {\n\n\t\t\tif ( min === undefined ) {\n\n\t\t\t\tmin = new Vector4();\n\t\t\t\tmax = new Vector4();\n\n\t\t\t}\n\n\t\t\tmin.set( minVal, minVal, minVal, minVal );\n\t\t\tmax.set( maxVal, maxVal, maxVal, maxVal );\n\n\t\t\treturn this.clamp( min, max );\n\n\t\t};\n\n\t}(),\n\n\tfloor: function () {\n\n\t\tthis.x = Math.floor( this.x );\n\t\tthis.y = Math.floor( this.y );\n\t\tthis.z = Math.floor( this.z );\n\t\tthis.w = Math.floor( this.w );\n\n\t\treturn this;\n\n\t},\n\n\tceil: function () {\n\n\t\tthis.x = Math.ceil( this.x );\n\t\tthis.y = Math.ceil( this.y );\n\t\tthis.z = Math.ceil( this.z );\n\t\tthis.w = Math.ceil( this.w );\n\n\t\treturn this;\n\n\t},\n\n\tround: function () {\n\n\t\tthis.x = Math.round( this.x );\n\t\tthis.y = Math.round( this.y );\n\t\tthis.z = Math.round( this.z );\n\t\tthis.w = Math.round( this.w );\n\n\t\treturn this;\n\n\t},\n\n\troundToZero: function () {\n\n\t\tthis.x = ( this.x < 0 ) ? Math.ceil( this.x ) : Math.floor( this.x );\n\t\tthis.y = ( this.y < 0 ) ? Math.ceil( this.y ) : Math.floor( this.y );\n\t\tthis.z = ( this.z < 0 ) ? Math.ceil( this.z ) : Math.floor( this.z );\n\t\tthis.w = ( this.w < 0 ) ? Math.ceil( this.w ) : Math.floor( this.w );\n\n\t\treturn this;\n\n\t},\n\n\tnegate: function () {\n\n\t\tthis.x = - this.x;\n\t\tthis.y = - this.y;\n\t\tthis.z = - this.z;\n\t\tthis.w = - this.w;\n\n\t\treturn this;\n\n\t},\n\n\tdot: function ( v ) {\n\n\t\treturn this.x * v.x + this.y * v.y + this.z * v.z + this.w * v.w;\n\n\t},\n\n\tlengthSq: function () {\n\n\t\treturn this.x * this.x + this.y * this.y + this.z * this.z + this.w * this.w;\n\n\t},\n\n\tlength: function () {\n\n\t\treturn Math.sqrt( this.x * this.x + this.y * this.y + this.z * this.z + this.w * this.w );\n\n\t},\n\n\tlengthManhattan: function () {\n\n\t\treturn Math.abs( this.x ) + Math.abs( this.y ) + Math.abs( this.z ) + Math.abs( this.w );\n\n\t},\n\n\tnormalize: function () {\n\n\t\treturn this.divideScalar( this.length() );\n\n\t},\n\n\tsetLength: function ( length ) {\n\n\t\treturn this.multiplyScalar( length / this.length() );\n\n\t},\n\n\tlerp: function ( v, alpha ) {\n\n\t\tthis.x += ( v.x - this.x ) * alpha;\n\t\tthis.y += ( v.y - this.y ) * alpha;\n\t\tthis.z += ( v.z - this.z ) * alpha;\n\t\tthis.w += ( v.w - this.w ) * alpha;\n\n\t\treturn this;\n\n\t},\n\n\tlerpVectors: function ( v1, v2, alpha ) {\n\n\t\treturn this.subVectors( v2, v1 ).multiplyScalar( alpha ).add( v1 );\n\n\t},\n\n\tequals: function ( v ) {\n\n\t\treturn ( ( v.x === this.x ) && ( v.y === this.y ) && ( v.z === this.z ) && ( v.w === this.w ) );\n\n\t},\n\n\tfromArray: function ( array, offset ) {\n\n\t\tif ( offset === undefined ) offset = 0;\n\n\t\tthis.x = array[ offset ];\n\t\tthis.y = array[ offset + 1 ];\n\t\tthis.z = array[ offset + 2 ];\n\t\tthis.w = array[ offset + 3 ];\n\n\t\treturn this;\n\n\t},\n\n\ttoArray: function ( array, offset ) {\n\n\t\tif ( array === undefined ) array = [];\n\t\tif ( offset === undefined ) offset = 0;\n\n\t\tarray[ offset ] = this.x;\n\t\tarray[ offset + 1 ] = this.y;\n\t\tarray[ offset + 2 ] = this.z;\n\t\tarray[ offset + 3 ] = this.w;\n\n\t\treturn array;\n\n\t},\n\n\tfromAttribute: function ( attribute, index, offset ) {\n\n\t\tif ( offset === undefined ) offset = 0;\n\n\t\tindex = index * attribute.itemSize + offset;\n\n\t\tthis.x = attribute.array[ index ];\n\t\tthis.y = attribute.array[ index + 1 ];\n\t\tthis.z = attribute.array[ index + 2 ];\n\t\tthis.w = attribute.array[ index + 3 ];\n\n\t\treturn this;\n\n\t}\n\n};\n\n\nexport { Vector4 };\n","import { EventDispatcher } from '../core/EventDispatcher';\nimport { Texture } from '../textures/Texture';\nimport { LinearFilter } from '../constants';\nimport { Vector4 } from '../math/Vector4';\nimport { _Math } from '../math/Math';\n\n/**\n * @author szimek / https://github.com/szimek/\n * @author alteredq / http://alteredqualia.com/\n * @author Marius Kintel / https://github.com/kintel\n */\n\n/*\n In options, we can specify:\n * Texture parameters for an auto-generated target texture\n * depthBuffer/stencilBuffer: Booleans to indicate if we should generate these buffers\n*/\nfunction WebGLRenderTarget( width, height, options ) {\n\n\tthis.uuid = _Math.generateUUID();\n\n\tthis.width = width;\n\tthis.height = height;\n\n\tthis.scissor = new Vector4( 0, 0, width, height );\n\tthis.scissorTest = false;\n\n\tthis.viewport = new Vector4( 0, 0, width, height );\n\n\toptions = options || {};\n\n\tif ( options.minFilter === undefined ) options.minFilter = LinearFilter;\n\n\tthis.texture = new Texture( undefined, undefined, options.wrapS, options.wrapT, options.magFilter, options.minFilter, options.format, options.type, options.anisotropy, options.encoding );\n\n\tthis.depthBuffer = options.depthBuffer !== undefined ? options.depthBuffer : true;\n\tthis.stencilBuffer = options.stencilBuffer !== undefined ? options.stencilBuffer : true;\n\tthis.depthTexture = options.depthTexture !== undefined ? options.depthTexture : null;\n\n}\n\nObject.assign( WebGLRenderTarget.prototype, EventDispatcher.prototype, {\n\n\tisWebGLRenderTarget: true,\n\n\tsetSize: function ( width, height ) {\n\n\t\tif ( this.width !== width || this.height !== height ) {\n\n\t\t\tthis.width = width;\n\t\t\tthis.height = height;\n\n\t\t\tthis.dispose();\n\n\t\t}\n\n\t\tthis.viewport.set( 0, 0, width, height );\n\t\tthis.scissor.set( 0, 0, width, height );\n\n\t},\n\n\tclone: function () {\n\n\t\treturn new this.constructor().copy( this );\n\n\t},\n\n\tcopy: function ( source ) {\n\n\t\tthis.width = source.width;\n\t\tthis.height = source.height;\n\n\t\tthis.viewport.copy( source.viewport );\n\n\t\tthis.texture = source.texture.clone();\n\n\t\tthis.depthBuffer = source.depthBuffer;\n\t\tthis.stencilBuffer = source.stencilBuffer;\n\t\tthis.depthTexture = source.depthTexture;\n\n\t\treturn this;\n\n\t},\n\n\tdispose: function () {\n\n\t\tthis.dispatchEvent( { type: 'dispose' } );\n\n\t}\n\n} );\n\n\nexport { WebGLRenderTarget };\n","import { WebGLRenderTarget } from './WebGLRenderTarget';\n\n/**\n * @author alteredq / http://alteredqualia.com\n */\n\nfunction WebGLRenderTargetCube( width, height, options ) {\n\n\tWebGLRenderTarget.call( this, width, height, options );\n\n\tthis.activeCubeFace = 0; // PX 0, NX 1, PY 2, NY 3, PZ 4, NZ 5\n\tthis.activeMipMapLevel = 0;\n\n}\n\nWebGLRenderTargetCube.prototype = Object.create( WebGLRenderTarget.prototype );\nWebGLRenderTargetCube.prototype.constructor = WebGLRenderTargetCube;\n\nWebGLRenderTargetCube.prototype.isWebGLRenderTargetCube = true;\n\n\nexport { WebGLRenderTargetCube };\n","import { Vector3 } from './Vector3';\n\n/**\n * @author mikael emtinger / http://gomo.se/\n * @author alteredq / http://alteredqualia.com/\n * @author WestLangley / http://github.com/WestLangley\n * @author bhouston / http://clara.io\n */\n\nfunction Quaternion( x, y, z, w ) {\n\n\tthis._x = x || 0;\n\tthis._y = y || 0;\n\tthis._z = z || 0;\n\tthis._w = ( w !== undefined ) ? w : 1;\n\n}\n\nQuaternion.prototype = {\n\n\tconstructor: Quaternion,\n\n\tget x () {\n\n\t\treturn this._x;\n\n\t},\n\n\tset x ( value ) {\n\n\t\tthis._x = value;\n\t\tthis.onChangeCallback();\n\n\t},\n\n\tget y () {\n\n\t\treturn this._y;\n\n\t},\n\n\tset y ( value ) {\n\n\t\tthis._y = value;\n\t\tthis.onChangeCallback();\n\n\t},\n\n\tget z () {\n\n\t\treturn this._z;\n\n\t},\n\n\tset z ( value ) {\n\n\t\tthis._z = value;\n\t\tthis.onChangeCallback();\n\n\t},\n\n\tget w () {\n\n\t\treturn this._w;\n\n\t},\n\n\tset w ( value ) {\n\n\t\tthis._w = value;\n\t\tthis.onChangeCallback();\n\n\t},\n\n\tset: function ( x, y, z, w ) {\n\n\t\tthis._x = x;\n\t\tthis._y = y;\n\t\tthis._z = z;\n\t\tthis._w = w;\n\n\t\tthis.onChangeCallback();\n\n\t\treturn this;\n\n\t},\n\n\tclone: function () {\n\n\t\treturn new this.constructor( this._x, this._y, this._z, this._w );\n\n\t},\n\n\tcopy: function ( quaternion ) {\n\n\t\tthis._x = quaternion.x;\n\t\tthis._y = quaternion.y;\n\t\tthis._z = quaternion.z;\n\t\tthis._w = quaternion.w;\n\n\t\tthis.onChangeCallback();\n\n\t\treturn this;\n\n\t},\n\n\tsetFromEuler: function ( euler, update ) {\n\n\t\tif ( (euler && euler.isEuler) === false ) {\n\n\t\t\tthrow new Error( 'THREE.Quaternion: .setFromEuler() now expects an Euler rotation rather than a Vector3 and order.' );\n\n\t\t}\n\n\t\t// http://www.mathworks.com/matlabcentral/fileexchange/\n\t\t// \t20696-function-to-convert-between-dcm-euler-angles-quaternions-and-euler-vectors/\n\t\t//\tcontent/SpinCalc.m\n\n\t\tvar c1 = Math.cos( euler._x / 2 );\n\t\tvar c2 = Math.cos( euler._y / 2 );\n\t\tvar c3 = Math.cos( euler._z / 2 );\n\t\tvar s1 = Math.sin( euler._x / 2 );\n\t\tvar s2 = Math.sin( euler._y / 2 );\n\t\tvar s3 = Math.sin( euler._z / 2 );\n\n\t\tvar order = euler.order;\n\n\t\tif ( order === 'XYZ' ) {\n\n\t\t\tthis._x = s1 * c2 * c3 + c1 * s2 * s3;\n\t\t\tthis._y = c1 * s2 * c3 - s1 * c2 * s3;\n\t\t\tthis._z = c1 * c2 * s3 + s1 * s2 * c3;\n\t\t\tthis._w = c1 * c2 * c3 - s1 * s2 * s3;\n\n\t\t} else if ( order === 'YXZ' ) {\n\n\t\t\tthis._x = s1 * c2 * c3 + c1 * s2 * s3;\n\t\t\tthis._y = c1 * s2 * c3 - s1 * c2 * s3;\n\t\t\tthis._z = c1 * c2 * s3 - s1 * s2 * c3;\n\t\t\tthis._w = c1 * c2 * c3 + s1 * s2 * s3;\n\n\t\t} else if ( order === 'ZXY' ) {\n\n\t\t\tthis._x = s1 * c2 * c3 - c1 * s2 * s3;\n\t\t\tthis._y = c1 * s2 * c3 + s1 * c2 * s3;\n\t\t\tthis._z = c1 * c2 * s3 + s1 * s2 * c3;\n\t\t\tthis._w = c1 * c2 * c3 - s1 * s2 * s3;\n\n\t\t} else if ( order === 'ZYX' ) {\n\n\t\t\tthis._x = s1 * c2 * c3 - c1 * s2 * s3;\n\t\t\tthis._y = c1 * s2 * c3 + s1 * c2 * s3;\n\t\t\tthis._z = c1 * c2 * s3 - s1 * s2 * c3;\n\t\t\tthis._w = c1 * c2 * c3 + s1 * s2 * s3;\n\n\t\t} else if ( order === 'YZX' ) {\n\n\t\t\tthis._x = s1 * c2 * c3 + c1 * s2 * s3;\n\t\t\tthis._y = c1 * s2 * c3 + s1 * c2 * s3;\n\t\t\tthis._z = c1 * c2 * s3 - s1 * s2 * c3;\n\t\t\tthis._w = c1 * c2 * c3 - s1 * s2 * s3;\n\n\t\t} else if ( order === 'XZY' ) {\n\n\t\t\tthis._x = s1 * c2 * c3 - c1 * s2 * s3;\n\t\t\tthis._y = c1 * s2 * c3 - s1 * c2 * s3;\n\t\t\tthis._z = c1 * c2 * s3 + s1 * s2 * c3;\n\t\t\tthis._w = c1 * c2 * c3 + s1 * s2 * s3;\n\n\t\t}\n\n\t\tif ( update !== false ) this.onChangeCallback();\n\n\t\treturn this;\n\n\t},\n\n\tsetFromAxisAngle: function ( axis, angle ) {\n\n\t\t// http://www.euclideanspace.com/maths/geometry/rotations/conversions/angleToQuaternion/index.htm\n\n\t\t// assumes axis is normalized\n\n\t\tvar halfAngle = angle / 2, s = Math.sin( halfAngle );\n\n\t\tthis._x = axis.x * s;\n\t\tthis._y = axis.y * s;\n\t\tthis._z = axis.z * s;\n\t\tthis._w = Math.cos( halfAngle );\n\n\t\tthis.onChangeCallback();\n\n\t\treturn this;\n\n\t},\n\n\tsetFromRotationMatrix: function ( m ) {\n\n\t\t// http://www.euclideanspace.com/maths/geometry/rotations/conversions/matrixToQuaternion/index.htm\n\n\t\t// assumes the upper 3x3 of m is a pure rotation matrix (i.e, unscaled)\n\n\t\tvar te = m.elements,\n\n\t\t\tm11 = te[ 0 ], m12 = te[ 4 ], m13 = te[ 8 ],\n\t\t\tm21 = te[ 1 ], m22 = te[ 5 ], m23 = te[ 9 ],\n\t\t\tm31 = te[ 2 ], m32 = te[ 6 ], m33 = te[ 10 ],\n\n\t\t\ttrace = m11 + m22 + m33,\n\t\t\ts;\n\n\t\tif ( trace > 0 ) {\n\n\t\t\ts = 0.5 / Math.sqrt( trace + 1.0 );\n\n\t\t\tthis._w = 0.25 / s;\n\t\t\tthis._x = ( m32 - m23 ) * s;\n\t\t\tthis._y = ( m13 - m31 ) * s;\n\t\t\tthis._z = ( m21 - m12 ) * s;\n\n\t\t} else if ( m11 > m22 && m11 > m33 ) {\n\n\t\t\ts = 2.0 * Math.sqrt( 1.0 + m11 - m22 - m33 );\n\n\t\t\tthis._w = ( m32 - m23 ) / s;\n\t\t\tthis._x = 0.25 * s;\n\t\t\tthis._y = ( m12 + m21 ) / s;\n\t\t\tthis._z = ( m13 + m31 ) / s;\n\n\t\t} else if ( m22 > m33 ) {\n\n\t\t\ts = 2.0 * Math.sqrt( 1.0 + m22 - m11 - m33 );\n\n\t\t\tthis._w = ( m13 - m31 ) / s;\n\t\t\tthis._x = ( m12 + m21 ) / s;\n\t\t\tthis._y = 0.25 * s;\n\t\t\tthis._z = ( m23 + m32 ) / s;\n\n\t\t} else {\n\n\t\t\ts = 2.0 * Math.sqrt( 1.0 + m33 - m11 - m22 );\n\n\t\t\tthis._w = ( m21 - m12 ) / s;\n\t\t\tthis._x = ( m13 + m31 ) / s;\n\t\t\tthis._y = ( m23 + m32 ) / s;\n\t\t\tthis._z = 0.25 * s;\n\n\t\t}\n\n\t\tthis.onChangeCallback();\n\n\t\treturn this;\n\n\t},\n\n\tsetFromUnitVectors: function () {\n\n\t\t// http://lolengine.net/blog/2014/02/24/quaternion-from-two-vectors-final\n\n\t\t// assumes direction vectors vFrom and vTo are normalized\n\n\t\tvar v1, r;\n\n\t\tvar EPS = 0.000001;\n\n\t\treturn function setFromUnitVectors( vFrom, vTo ) {\n\n\t\t\tif ( v1 === undefined ) v1 = new Vector3();\n\n\t\t\tr = vFrom.dot( vTo ) + 1;\n\n\t\t\tif ( r < EPS ) {\n\n\t\t\t\tr = 0;\n\n\t\t\t\tif ( Math.abs( vFrom.x ) > Math.abs( vFrom.z ) ) {\n\n\t\t\t\t\tv1.set( - vFrom.y, vFrom.x, 0 );\n\n\t\t\t\t} else {\n\n\t\t\t\t\tv1.set( 0, - vFrom.z, vFrom.y );\n\n\t\t\t\t}\n\n\t\t\t} else {\n\n\t\t\t\tv1.crossVectors( vFrom, vTo );\n\n\t\t\t}\n\n\t\t\tthis._x = v1.x;\n\t\t\tthis._y = v1.y;\n\t\t\tthis._z = v1.z;\n\t\t\tthis._w = r;\n\n\t\t\treturn this.normalize();\n\n\t\t};\n\n\t}(),\n\n\tinverse: function () {\n\n\t\treturn this.conjugate().normalize();\n\n\t},\n\n\tconjugate: function () {\n\n\t\tthis._x *= - 1;\n\t\tthis._y *= - 1;\n\t\tthis._z *= - 1;\n\n\t\tthis.onChangeCallback();\n\n\t\treturn this;\n\n\t},\n\n\tdot: function ( v ) {\n\n\t\treturn this._x * v._x + this._y * v._y + this._z * v._z + this._w * v._w;\n\n\t},\n\n\tlengthSq: function () {\n\n\t\treturn this._x * this._x + this._y * this._y + this._z * this._z + this._w * this._w;\n\n\t},\n\n\tlength: function () {\n\n\t\treturn Math.sqrt( this._x * this._x + this._y * this._y + this._z * this._z + this._w * this._w );\n\n\t},\n\n\tnormalize: function () {\n\n\t\tvar l = this.length();\n\n\t\tif ( l === 0 ) {\n\n\t\t\tthis._x = 0;\n\t\t\tthis._y = 0;\n\t\t\tthis._z = 0;\n\t\t\tthis._w = 1;\n\n\t\t} else {\n\n\t\t\tl = 1 / l;\n\n\t\t\tthis._x = this._x * l;\n\t\t\tthis._y = this._y * l;\n\t\t\tthis._z = this._z * l;\n\t\t\tthis._w = this._w * l;\n\n\t\t}\n\n\t\tthis.onChangeCallback();\n\n\t\treturn this;\n\n\t},\n\n\tmultiply: function ( q, p ) {\n\n\t\tif ( p !== undefined ) {\n\n\t\t\tconsole.warn( 'THREE.Quaternion: .multiply() now only accepts one argument. Use .multiplyQuaternions( a, b ) instead.' );\n\t\t\treturn this.multiplyQuaternions( q, p );\n\n\t\t}\n\n\t\treturn this.multiplyQuaternions( this, q );\n\n\t},\n\n\tpremultiply: function ( q ) {\n\n\t\treturn this.multiplyQuaternions( q, this );\n\n\t},\n\n\tmultiplyQuaternions: function ( a, b ) {\n\n\t\t// from http://www.euclideanspace.com/maths/algebra/realNormedAlgebra/quaternions/code/index.htm\n\n\t\tvar qax = a._x, qay = a._y, qaz = a._z, qaw = a._w;\n\t\tvar qbx = b._x, qby = b._y, qbz = b._z, qbw = b._w;\n\n\t\tthis._x = qax * qbw + qaw * qbx + qay * qbz - qaz * qby;\n\t\tthis._y = qay * qbw + qaw * qby + qaz * qbx - qax * qbz;\n\t\tthis._z = qaz * qbw + qaw * qbz + qax * qby - qay * qbx;\n\t\tthis._w = qaw * qbw - qax * qbx - qay * qby - qaz * qbz;\n\n\t\tthis.onChangeCallback();\n\n\t\treturn this;\n\n\t},\n\n\tslerp: function ( qb, t ) {\n\n\t\tif ( t === 0 ) return this;\n\t\tif ( t === 1 ) return this.copy( qb );\n\n\t\tvar x = this._x, y = this._y, z = this._z, w = this._w;\n\n\t\t// http://www.euclideanspace.com/maths/algebra/realNormedAlgebra/quaternions/slerp/\n\n\t\tvar cosHalfTheta = w * qb._w + x * qb._x + y * qb._y + z * qb._z;\n\n\t\tif ( cosHalfTheta < 0 ) {\n\n\t\t\tthis._w = - qb._w;\n\t\t\tthis._x = - qb._x;\n\t\t\tthis._y = - qb._y;\n\t\t\tthis._z = - qb._z;\n\n\t\t\tcosHalfTheta = - cosHalfTheta;\n\n\t\t} else {\n\n\t\t\tthis.copy( qb );\n\n\t\t}\n\n\t\tif ( cosHalfTheta >= 1.0 ) {\n\n\t\t\tthis._w = w;\n\t\t\tthis._x = x;\n\t\t\tthis._y = y;\n\t\t\tthis._z = z;\n\n\t\t\treturn this;\n\n\t\t}\n\n\t\tvar sinHalfTheta = Math.sqrt( 1.0 - cosHalfTheta * cosHalfTheta );\n\n\t\tif ( Math.abs( sinHalfTheta ) < 0.001 ) {\n\n\t\t\tthis._w = 0.5 * ( w + this._w );\n\t\t\tthis._x = 0.5 * ( x + this._x );\n\t\t\tthis._y = 0.5 * ( y + this._y );\n\t\t\tthis._z = 0.5 * ( z + this._z );\n\n\t\t\treturn this;\n\n\t\t}\n\n\t\tvar halfTheta = Math.atan2( sinHalfTheta, cosHalfTheta );\n\t\tvar ratioA = Math.sin( ( 1 - t ) * halfTheta ) / sinHalfTheta,\n\t\tratioB = Math.sin( t * halfTheta ) / sinHalfTheta;\n\n\t\tthis._w = ( w * ratioA + this._w * ratioB );\n\t\tthis._x = ( x * ratioA + this._x * ratioB );\n\t\tthis._y = ( y * ratioA + this._y * ratioB );\n\t\tthis._z = ( z * ratioA + this._z * ratioB );\n\n\t\tthis.onChangeCallback();\n\n\t\treturn this;\n\n\t},\n\n\tequals: function ( quaternion ) {\n\n\t\treturn ( quaternion._x === this._x ) && ( quaternion._y === this._y ) && ( quaternion._z === this._z ) && ( quaternion._w === this._w );\n\n\t},\n\n\tfromArray: function ( array, offset ) {\n\n\t\tif ( offset === undefined ) offset = 0;\n\n\t\tthis._x = array[ offset ];\n\t\tthis._y = array[ offset + 1 ];\n\t\tthis._z = array[ offset + 2 ];\n\t\tthis._w = array[ offset + 3 ];\n\n\t\tthis.onChangeCallback();\n\n\t\treturn this;\n\n\t},\n\n\ttoArray: function ( array, offset ) {\n\n\t\tif ( array === undefined ) array = [];\n\t\tif ( offset === undefined ) offset = 0;\n\n\t\tarray[ offset ] = this._x;\n\t\tarray[ offset + 1 ] = this._y;\n\t\tarray[ offset + 2 ] = this._z;\n\t\tarray[ offset + 3 ] = this._w;\n\n\t\treturn array;\n\n\t},\n\n\tonChange: function ( callback ) {\n\n\t\tthis.onChangeCallback = callback;\n\n\t\treturn this;\n\n\t},\n\n\tonChangeCallback: function () {}\n\n};\n\nObject.assign( Quaternion, {\n\n\tslerp: function( qa, qb, qm, t ) {\n\n\t\treturn qm.copy( qa ).slerp( qb, t );\n\n\t},\n\n\tslerpFlat: function(\n\t\t\tdst, dstOffset, src0, srcOffset0, src1, srcOffset1, t ) {\n\n\t\t// fuzz-free, array-based Quaternion SLERP operation\n\n\t\tvar x0 = src0[ srcOffset0 + 0 ],\n\t\t\ty0 = src0[ srcOffset0 + 1 ],\n\t\t\tz0 = src0[ srcOffset0 + 2 ],\n\t\t\tw0 = src0[ srcOffset0 + 3 ],\n\n\t\t\tx1 = src1[ srcOffset1 + 0 ],\n\t\t\ty1 = src1[ srcOffset1 + 1 ],\n\t\t\tz1 = src1[ srcOffset1 + 2 ],\n\t\t\tw1 = src1[ srcOffset1 + 3 ];\n\n\t\tif ( w0 !== w1 || x0 !== x1 || y0 !== y1 || z0 !== z1 ) {\n\n\t\t\tvar s = 1 - t,\n\n\t\t\t\tcos = x0 * x1 + y0 * y1 + z0 * z1 + w0 * w1,\n\n\t\t\t\tdir = ( cos >= 0 ? 1 : - 1 ),\n\t\t\t\tsqrSin = 1 - cos * cos;\n\n\t\t\t// Skip the Slerp for tiny steps to avoid numeric problems:\n\t\t\tif ( sqrSin > Number.EPSILON ) {\n\n\t\t\t\tvar sin = Math.sqrt( sqrSin ),\n\t\t\t\t\tlen = Math.atan2( sin, cos * dir );\n\n\t\t\t\ts = Math.sin( s * len ) / sin;\n\t\t\t\tt = Math.sin( t * len ) / sin;\n\n\t\t\t}\n\n\t\t\tvar tDir = t * dir;\n\n\t\t\tx0 = x0 * s + x1 * tDir;\n\t\t\ty0 = y0 * s + y1 * tDir;\n\t\t\tz0 = z0 * s + z1 * tDir;\n\t\t\tw0 = w0 * s + w1 * tDir;\n\n\t\t\t// Normalize in case we just did a lerp:\n\t\t\tif ( s === 1 - t ) {\n\n\t\t\t\tvar f = 1 / Math.sqrt( x0 * x0 + y0 * y0 + z0 * z0 + w0 * w0 );\n\n\t\t\t\tx0 *= f;\n\t\t\t\ty0 *= f;\n\t\t\t\tz0 *= f;\n\t\t\t\tw0 *= f;\n\n\t\t\t}\n\n\t\t}\n\n\t\tdst[ dstOffset ] = x0;\n\t\tdst[ dstOffset + 1 ] = y0;\n\t\tdst[ dstOffset + 2 ] = z0;\n\t\tdst[ dstOffset + 3 ] = w0;\n\n\t}\n\n} );\n\n\nexport { Quaternion };\n","import { _Math } from './Math';\nimport { Matrix4 } from './Matrix4';\nimport { Quaternion } from './Quaternion';\n\n/**\n * @author mrdoob / http://mrdoob.com/\n * @author *kile / http://kile.stravaganza.org/\n * @author philogb / http://blog.thejit.org/\n * @author mikael emtinger / http://gomo.se/\n * @author egraether / http://egraether.com/\n * @author WestLangley / http://github.com/WestLangley\n */\n\nfunction Vector3( x, y, z ) {\n\n\tthis.x = x || 0;\n\tthis.y = y || 0;\n\tthis.z = z || 0;\n\n}\n\nVector3.prototype = {\n\n\tconstructor: Vector3,\n\n\tisVector3: true,\n\n\tset: function ( x, y, z ) {\n\n\t\tthis.x = x;\n\t\tthis.y = y;\n\t\tthis.z = z;\n\n\t\treturn this;\n\n\t},\n\n\tsetScalar: function ( scalar ) {\n\n\t\tthis.x = scalar;\n\t\tthis.y = scalar;\n\t\tthis.z = scalar;\n\n\t\treturn this;\n\n\t},\n\n\tsetX: function ( x ) {\n\n\t\tthis.x = x;\n\n\t\treturn this;\n\n\t},\n\n\tsetY: function ( y ) {\n\n\t\tthis.y = y;\n\n\t\treturn this;\n\n\t},\n\n\tsetZ: function ( z ) {\n\n\t\tthis.z = z;\n\n\t\treturn this;\n\n\t},\n\n\tsetComponent: function ( index, value ) {\n\n\t\tswitch ( index ) {\n\n\t\t\tcase 0: this.x = value; break;\n\t\t\tcase 1: this.y = value; break;\n\t\t\tcase 2: this.z = value; break;\n\t\t\tdefault: throw new Error( 'index is out of range: ' + index );\n\n\t\t}\n\t\t\n\t\treturn this;\n\n\t},\n\n\tgetComponent: function ( index ) {\n\n\t\tswitch ( index ) {\n\n\t\t\tcase 0: return this.x;\n\t\t\tcase 1: return this.y;\n\t\t\tcase 2: return this.z;\n\t\t\tdefault: throw new Error( 'index is out of range: ' + index );\n\n\t\t}\n\n\t},\n\n\tclone: function () {\n\n\t\treturn new this.constructor( this.x, this.y, this.z );\n\n\t},\n\n\tcopy: function ( v ) {\n\n\t\tthis.x = v.x;\n\t\tthis.y = v.y;\n\t\tthis.z = v.z;\n\n\t\treturn this;\n\n\t},\n\n\tadd: function ( v, w ) {\n\n\t\tif ( w !== undefined ) {\n\n\t\t\tconsole.warn( 'THREE.Vector3: .add() now only accepts one argument. Use .addVectors( a, b ) instead.' );\n\t\t\treturn this.addVectors( v, w );\n\n\t\t}\n\n\t\tthis.x += v.x;\n\t\tthis.y += v.y;\n\t\tthis.z += v.z;\n\n\t\treturn this;\n\n\t},\n\n\taddScalar: function ( s ) {\n\n\t\tthis.x += s;\n\t\tthis.y += s;\n\t\tthis.z += s;\n\n\t\treturn this;\n\n\t},\n\n\taddVectors: function ( a, b ) {\n\n\t\tthis.x = a.x + b.x;\n\t\tthis.y = a.y + b.y;\n\t\tthis.z = a.z + b.z;\n\n\t\treturn this;\n\n\t},\n\n\taddScaledVector: function ( v, s ) {\n\n\t\tthis.x += v.x * s;\n\t\tthis.y += v.y * s;\n\t\tthis.z += v.z * s;\n\n\t\treturn this;\n\n\t},\n\n\tsub: function ( v, w ) {\n\n\t\tif ( w !== undefined ) {\n\n\t\t\tconsole.warn( 'THREE.Vector3: .sub() now only accepts one argument. Use .subVectors( a, b ) instead.' );\n\t\t\treturn this.subVectors( v, w );\n\n\t\t}\n\n\t\tthis.x -= v.x;\n\t\tthis.y -= v.y;\n\t\tthis.z -= v.z;\n\n\t\treturn this;\n\n\t},\n\n\tsubScalar: function ( s ) {\n\n\t\tthis.x -= s;\n\t\tthis.y -= s;\n\t\tthis.z -= s;\n\n\t\treturn this;\n\n\t},\n\n\tsubVectors: function ( a, b ) {\n\n\t\tthis.x = a.x - b.x;\n\t\tthis.y = a.y - b.y;\n\t\tthis.z = a.z - b.z;\n\n\t\treturn this;\n\n\t},\n\n\tmultiply: function ( v, w ) {\n\n\t\tif ( w !== undefined ) {\n\n\t\t\tconsole.warn( 'THREE.Vector3: .multiply() now only accepts one argument. Use .multiplyVectors( a, b ) instead.' );\n\t\t\treturn this.multiplyVectors( v, w );\n\n\t\t}\n\n\t\tthis.x *= v.x;\n\t\tthis.y *= v.y;\n\t\tthis.z *= v.z;\n\n\t\treturn this;\n\n\t},\n\n\tmultiplyScalar: function ( scalar ) {\n\n\t\tif ( isFinite( scalar ) ) {\n\n\t\t\tthis.x *= scalar;\n\t\t\tthis.y *= scalar;\n\t\t\tthis.z *= scalar;\n\n\t\t} else {\n\n\t\t\tthis.x = 0;\n\t\t\tthis.y = 0;\n\t\t\tthis.z = 0;\n\n\t\t}\n\n\t\treturn this;\n\n\t},\n\n\tmultiplyVectors: function ( a, b ) {\n\n\t\tthis.x = a.x * b.x;\n\t\tthis.y = a.y * b.y;\n\t\tthis.z = a.z * b.z;\n\n\t\treturn this;\n\n\t},\n\n\tapplyEuler: function () {\n\n\t\tvar quaternion;\n\n\t\treturn function applyEuler( euler ) {\n\n\t\t\tif ( (euler && euler.isEuler) === false ) {\n\n\t\t\t\tconsole.error( 'THREE.Vector3: .applyEuler() now expects an Euler rotation rather than a Vector3 and order.' );\n\n\t\t\t}\n\n\t\t\tif ( quaternion === undefined ) quaternion = new Quaternion();\n\n\t\t\treturn this.applyQuaternion( quaternion.setFromEuler( euler ) );\n\n\t\t};\n\n\t}(),\n\n\tapplyAxisAngle: function () {\n\n\t\tvar quaternion;\n\n\t\treturn function applyAxisAngle( axis, angle ) {\n\n\t\t\tif ( quaternion === undefined ) quaternion = new Quaternion();\n\n\t\t\treturn this.applyQuaternion( quaternion.setFromAxisAngle( axis, angle ) );\n\n\t\t};\n\n\t}(),\n\n\tapplyMatrix3: function ( m ) {\n\n\t\tvar x = this.x, y = this.y, z = this.z;\n\t\tvar e = m.elements;\n\n\t\tthis.x = e[ 0 ] * x + e[ 3 ] * y + e[ 6 ] * z;\n\t\tthis.y = e[ 1 ] * x + e[ 4 ] * y + e[ 7 ] * z;\n\t\tthis.z = e[ 2 ] * x + e[ 5 ] * y + e[ 8 ] * z;\n\n\t\treturn this;\n\n\t},\n\n\tapplyMatrix4: function ( m ) {\n\n\t\t// input: THREE.Matrix4 affine matrix\n\n\t\tvar x = this.x, y = this.y, z = this.z;\n\t\tvar e = m.elements;\n\n\t\tthis.x = e[ 0 ] * x + e[ 4 ] * y + e[ 8 ] * z + e[ 12 ];\n\t\tthis.y = e[ 1 ] * x + e[ 5 ] * y + e[ 9 ] * z + e[ 13 ];\n\t\tthis.z = e[ 2 ] * x + e[ 6 ] * y + e[ 10 ] * z + e[ 14 ];\n\n\t\treturn this;\n\n\t},\n\n\tapplyProjection: function ( m ) {\n\n\t\t// input: THREE.Matrix4 projection matrix\n\n\t\tvar x = this.x, y = this.y, z = this.z;\n\t\tvar e = m.elements;\n\t\tvar d = 1 / ( e[ 3 ] * x + e[ 7 ] * y + e[ 11 ] * z + e[ 15 ] ); // perspective divide\n\n\t\tthis.x = ( e[ 0 ] * x + e[ 4 ] * y + e[ 8 ] * z + e[ 12 ] ) * d;\n\t\tthis.y = ( e[ 1 ] * x + e[ 5 ] * y + e[ 9 ] * z + e[ 13 ] ) * d;\n\t\tthis.z = ( e[ 2 ] * x + e[ 6 ] * y + e[ 10 ] * z + e[ 14 ] ) * d;\n\n\t\treturn this;\n\n\t},\n\n\tapplyQuaternion: function ( q ) {\n\n\t\tvar x = this.x, y = this.y, z = this.z;\n\t\tvar qx = q.x, qy = q.y, qz = q.z, qw = q.w;\n\n\t\t// calculate quat * vector\n\n\t\tvar ix = qw * x + qy * z - qz * y;\n\t\tvar iy = qw * y + qz * x - qx * z;\n\t\tvar iz = qw * z + qx * y - qy * x;\n\t\tvar iw = - qx * x - qy * y - qz * z;\n\n\t\t// calculate result * inverse quat\n\n\t\tthis.x = ix * qw + iw * - qx + iy * - qz - iz * - qy;\n\t\tthis.y = iy * qw + iw * - qy + iz * - qx - ix * - qz;\n\t\tthis.z = iz * qw + iw * - qz + ix * - qy - iy * - qx;\n\n\t\treturn this;\n\n\t},\n\n\tproject: function () {\n\n\t\tvar matrix;\n\n\t\treturn function project( camera ) {\n\n\t\t\tif ( matrix === undefined ) matrix = new Matrix4();\n\n\t\t\tmatrix.multiplyMatrices( camera.projectionMatrix, matrix.getInverse( camera.matrixWorld ) );\n\t\t\treturn this.applyProjection( matrix );\n\n\t\t};\n\n\t}(),\n\n\tunproject: function () {\n\n\t\tvar matrix;\n\n\t\treturn function unproject( camera ) {\n\n\t\t\tif ( matrix === undefined ) matrix = new Matrix4();\n\n\t\t\tmatrix.multiplyMatrices( camera.matrixWorld, matrix.getInverse( camera.projectionMatrix ) );\n\t\t\treturn this.applyProjection( matrix );\n\n\t\t};\n\n\t}(),\n\n\ttransformDirection: function ( m ) {\n\n\t\t// input: THREE.Matrix4 affine matrix\n\t\t// vector interpreted as a direction\n\n\t\tvar x = this.x, y = this.y, z = this.z;\n\t\tvar e = m.elements;\n\n\t\tthis.x = e[ 0 ] * x + e[ 4 ] * y + e[ 8 ] * z;\n\t\tthis.y = e[ 1 ] * x + e[ 5 ] * y + e[ 9 ] * z;\n\t\tthis.z = e[ 2 ] * x + e[ 6 ] * y + e[ 10 ] * z;\n\n\t\treturn this.normalize();\n\n\t},\n\n\tdivide: function ( v ) {\n\n\t\tthis.x /= v.x;\n\t\tthis.y /= v.y;\n\t\tthis.z /= v.z;\n\n\t\treturn this;\n\n\t},\n\n\tdivideScalar: function ( scalar ) {\n\n\t\treturn this.multiplyScalar( 1 / scalar );\n\n\t},\n\n\tmin: function ( v ) {\n\n\t\tthis.x = Math.min( this.x, v.x );\n\t\tthis.y = Math.min( this.y, v.y );\n\t\tthis.z = Math.min( this.z, v.z );\n\n\t\treturn this;\n\n\t},\n\n\tmax: function ( v ) {\n\n\t\tthis.x = Math.max( this.x, v.x );\n\t\tthis.y = Math.max( this.y, v.y );\n\t\tthis.z = Math.max( this.z, v.z );\n\n\t\treturn this;\n\n\t},\n\n\tclamp: function ( min, max ) {\n\n\t\t// This function assumes min < max, if this assumption isn't true it will not operate correctly\n\n\t\tthis.x = Math.max( min.x, Math.min( max.x, this.x ) );\n\t\tthis.y = Math.max( min.y, Math.min( max.y, this.y ) );\n\t\tthis.z = Math.max( min.z, Math.min( max.z, this.z ) );\n\n\t\treturn this;\n\n\t},\n\n\tclampScalar: function () {\n\n\t\tvar min, max;\n\n\t\treturn function clampScalar( minVal, maxVal ) {\n\n\t\t\tif ( min === undefined ) {\n\n\t\t\t\tmin = new Vector3();\n\t\t\t\tmax = new Vector3();\n\n\t\t\t}\n\n\t\t\tmin.set( minVal, minVal, minVal );\n\t\t\tmax.set( maxVal, maxVal, maxVal );\n\n\t\t\treturn this.clamp( min, max );\n\n\t\t};\n\n\t}(),\n\n\tclampLength: function ( min, max ) {\n\n\t\tvar length = this.length();\n\n\t\treturn this.multiplyScalar( Math.max( min, Math.min( max, length ) ) / length );\n\n\t},\n\n\tfloor: function () {\n\n\t\tthis.x = Math.floor( this.x );\n\t\tthis.y = Math.floor( this.y );\n\t\tthis.z = Math.floor( this.z );\n\n\t\treturn this;\n\n\t},\n\n\tceil: function () {\n\n\t\tthis.x = Math.ceil( this.x );\n\t\tthis.y = Math.ceil( this.y );\n\t\tthis.z = Math.ceil( this.z );\n\n\t\treturn this;\n\n\t},\n\n\tround: function () {\n\n\t\tthis.x = Math.round( this.x );\n\t\tthis.y = Math.round( this.y );\n\t\tthis.z = Math.round( this.z );\n\n\t\treturn this;\n\n\t},\n\n\troundToZero: function () {\n\n\t\tthis.x = ( this.x < 0 ) ? Math.ceil( this.x ) : Math.floor( this.x );\n\t\tthis.y = ( this.y < 0 ) ? Math.ceil( this.y ) : Math.floor( this.y );\n\t\tthis.z = ( this.z < 0 ) ? Math.ceil( this.z ) : Math.floor( this.z );\n\n\t\treturn this;\n\n\t},\n\n\tnegate: function () {\n\n\t\tthis.x = - this.x;\n\t\tthis.y = - this.y;\n\t\tthis.z = - this.z;\n\n\t\treturn this;\n\n\t},\n\n\tdot: function ( v ) {\n\n\t\treturn this.x * v.x + this.y * v.y + this.z * v.z;\n\n\t},\n\n\tlengthSq: function () {\n\n\t\treturn this.x * this.x + this.y * this.y + this.z * this.z;\n\n\t},\n\n\tlength: function () {\n\n\t\treturn Math.sqrt( this.x * this.x + this.y * this.y + this.z * this.z );\n\n\t},\n\n\tlengthManhattan: function () {\n\n\t\treturn Math.abs( this.x ) + Math.abs( this.y ) + Math.abs( this.z );\n\n\t},\n\n\tnormalize: function () {\n\n\t\treturn this.divideScalar( this.length() );\n\n\t},\n\n\tsetLength: function ( length ) {\n\n\t\treturn this.multiplyScalar( length / this.length() );\n\n\t},\n\n\tlerp: function ( v, alpha ) {\n\n\t\tthis.x += ( v.x - this.x ) * alpha;\n\t\tthis.y += ( v.y - this.y ) * alpha;\n\t\tthis.z += ( v.z - this.z ) * alpha;\n\n\t\treturn this;\n\n\t},\n\n\tlerpVectors: function ( v1, v2, alpha ) {\n\n\t\treturn this.subVectors( v2, v1 ).multiplyScalar( alpha ).add( v1 );\n\n\t},\n\n\tcross: function ( v, w ) {\n\n\t\tif ( w !== undefined ) {\n\n\t\t\tconsole.warn( 'THREE.Vector3: .cross() now only accepts one argument. Use .crossVectors( a, b ) instead.' );\n\t\t\treturn this.crossVectors( v, w );\n\n\t\t}\n\n\t\tvar x = this.x, y = this.y, z = this.z;\n\n\t\tthis.x = y * v.z - z * v.y;\n\t\tthis.y = z * v.x - x * v.z;\n\t\tthis.z = x * v.y - y * v.x;\n\n\t\treturn this;\n\n\t},\n\n\tcrossVectors: function ( a, b ) {\n\n\t\tvar ax = a.x, ay = a.y, az = a.z;\n\t\tvar bx = b.x, by = b.y, bz = b.z;\n\n\t\tthis.x = ay * bz - az * by;\n\t\tthis.y = az * bx - ax * bz;\n\t\tthis.z = ax * by - ay * bx;\n\n\t\treturn this;\n\n\t},\n\n\tprojectOnVector: function ( vector ) {\n\n\t\tvar scalar = vector.dot( this ) / vector.lengthSq();\n\n\t\treturn this.copy( vector ).multiplyScalar( scalar );\n\n\t},\n\n\tprojectOnPlane: function () {\n\n\t\tvar v1;\n\n\t\treturn function projectOnPlane( planeNormal ) {\n\n\t\t\tif ( v1 === undefined ) v1 = new Vector3();\n\n\t\t\tv1.copy( this ).projectOnVector( planeNormal );\n\n\t\t\treturn this.sub( v1 );\n\n\t\t};\n\n\t}(),\n\n\treflect: function () {\n\n\t\t// reflect incident vector off plane orthogonal to normal\n\t\t// normal is assumed to have unit length\n\n\t\tvar v1;\n\n\t\treturn function reflect( normal ) {\n\n\t\t\tif ( v1 === undefined ) v1 = new Vector3();\n\n\t\t\treturn this.sub( v1.copy( normal ).multiplyScalar( 2 * this.dot( normal ) ) );\n\n\t\t};\n\n\t}(),\n\n\tangleTo: function ( v ) {\n\n\t\tvar theta = this.dot( v ) / ( Math.sqrt( this.lengthSq() * v.lengthSq() ) );\n\n\t\t// clamp, to handle numerical problems\n\n\t\treturn Math.acos( _Math.clamp( theta, - 1, 1 ) );\n\n\t},\n\n\tdistanceTo: function ( v ) {\n\n\t\treturn Math.sqrt( this.distanceToSquared( v ) );\n\n\t},\n\n\tdistanceToSquared: function ( v ) {\n\n\t\tvar dx = this.x - v.x, dy = this.y - v.y, dz = this.z - v.z;\n\n\t\treturn dx * dx + dy * dy + dz * dz;\n\n\t},\n\n\tdistanceToManhattan: function ( v ) {\n\n\t\treturn Math.abs( this.x - v.x ) + Math.abs( this.y - v.y ) + Math.abs( this.z - v.z );\n\n\t},\n\n\tsetFromSpherical: function( s ) {\n\n\t\tvar sinPhiRadius = Math.sin( s.phi ) * s.radius;\n\n\t\tthis.x = sinPhiRadius * Math.sin( s.theta );\n\t\tthis.y = Math.cos( s.phi ) * s.radius;\n\t\tthis.z = sinPhiRadius * Math.cos( s.theta );\n\n\t\treturn this;\n\n\t},\n\n\tsetFromMatrixPosition: function ( m ) {\n\n\t\treturn this.setFromMatrixColumn( m, 3 );\n\n\t},\n\n\tsetFromMatrixScale: function ( m ) {\n\n\t\tvar sx = this.setFromMatrixColumn( m, 0 ).length();\n\t\tvar sy = this.setFromMatrixColumn( m, 1 ).length();\n\t\tvar sz = this.setFromMatrixColumn( m, 2 ).length();\n\n\t\tthis.x = sx;\n\t\tthis.y = sy;\n\t\tthis.z = sz;\n\n\t\treturn this;\n\n\t},\n\n\tsetFromMatrixColumn: function ( m, index ) {\n\n\t\tif ( typeof m === 'number' ) {\n\n\t\t\tconsole.warn( 'THREE.Vector3: setFromMatrixColumn now expects ( matrix, index ).' );\n\t\t\tvar temp = m\n\t\t\tm = index;\n\t\t\tindex = temp;\n\n\t\t}\n\n\t\treturn this.fromArray( m.elements, index * 4 );\n\n\t},\n\n\tequals: function ( v ) {\n\n\t\treturn ( ( v.x === this.x ) && ( v.y === this.y ) && ( v.z === this.z ) );\n\n\t},\n\n\tfromArray: function ( array, offset ) {\n\n\t\tif ( offset === undefined ) offset = 0;\n\n\t\tthis.x = array[ offset ];\n\t\tthis.y = array[ offset + 1 ];\n\t\tthis.z = array[ offset + 2 ];\n\n\t\treturn this;\n\n\t},\n\n\ttoArray: function ( array, offset ) {\n\n\t\tif ( array === undefined ) array = [];\n\t\tif ( offset === undefined ) offset = 0;\n\n\t\tarray[ offset ] = this.x;\n\t\tarray[ offset + 1 ] = this.y;\n\t\tarray[ offset + 2 ] = this.z;\n\n\t\treturn array;\n\n\t},\n\n\tfromAttribute: function ( attribute, index, offset ) {\n\n\t\tif ( offset === undefined ) offset = 0;\n\n\t\tindex = index * attribute.itemSize + offset;\n\n\t\tthis.x = attribute.array[ index ];\n\t\tthis.y = attribute.array[ index + 1 ];\n\t\tthis.z = attribute.array[ index + 2 ];\n\n\t\treturn this;\n\n\t}\n\n};\n\n\nexport { Vector3 };\n","import { _Math } from './Math';\nimport { Vector3 } from './Vector3';\n\n/**\n * @author mrdoob / http://mrdoob.com/\n * @author supereggbert / http://www.paulbrunt.co.uk/\n * @author philogb / http://blog.thejit.org/\n * @author jordi_ros / http://plattsoft.com\n * @author D1plo1d / http://github.com/D1plo1d\n * @author alteredq / http://alteredqualia.com/\n * @author mikael emtinger / http://gomo.se/\n * @author timknip / http://www.floorplanner.com/\n * @author bhouston / http://clara.io\n * @author WestLangley / http://github.com/WestLangley\n */\n\nfunction Matrix4() {\n\n\tthis.elements = new Float32Array( [\n\n\t\t1, 0, 0, 0,\n\t\t0, 1, 0, 0,\n\t\t0, 0, 1, 0,\n\t\t0, 0, 0, 1\n\n\t] );\n\n\tif ( arguments.length > 0 ) {\n\n\t\tconsole.error( 'THREE.Matrix4: the constructor no longer reads arguments. use .set() instead.' );\n\n\t}\n\n}\n\nMatrix4.prototype = {\n\n\tconstructor: Matrix4,\n\n\tisMatrix4: true,\n\n\tset: function ( n11, n12, n13, n14, n21, n22, n23, n24, n31, n32, n33, n34, n41, n42, n43, n44 ) {\n\n\t\tvar te = this.elements;\n\n\t\tte[ 0 ] = n11; te[ 4 ] = n12; te[ 8 ] = n13; te[ 12 ] = n14;\n\t\tte[ 1 ] = n21; te[ 5 ] = n22; te[ 9 ] = n23; te[ 13 ] = n24;\n\t\tte[ 2 ] = n31; te[ 6 ] = n32; te[ 10 ] = n33; te[ 14 ] = n34;\n\t\tte[ 3 ] = n41; te[ 7 ] = n42; te[ 11 ] = n43; te[ 15 ] = n44;\n\n\t\treturn this;\n\n\t},\n\n\tidentity: function () {\n\n\t\tthis.set(\n\n\t\t\t1, 0, 0, 0,\n\t\t\t0, 1, 0, 0,\n\t\t\t0, 0, 1, 0,\n\t\t\t0, 0, 0, 1\n\n\t\t);\n\n\t\treturn this;\n\n\t},\n\n\tclone: function () {\n\n\t\treturn new Matrix4().fromArray( this.elements );\n\n\t},\n\n\tcopy: function ( m ) {\n\n\t\tthis.elements.set( m.elements );\n\n\t\treturn this;\n\n\t},\n\n\tcopyPosition: function ( m ) {\n\n\t\tvar te = this.elements;\n\t\tvar me = m.elements;\n\n\t\tte[ 12 ] = me[ 12 ];\n\t\tte[ 13 ] = me[ 13 ];\n\t\tte[ 14 ] = me[ 14 ];\n\n\t\treturn this;\n\n\t},\n\n\textractBasis: function ( xAxis, yAxis, zAxis ) {\n\n\t\txAxis.setFromMatrixColumn( this, 0 );\n\t\tyAxis.setFromMatrixColumn( this, 1 );\n\t\tzAxis.setFromMatrixColumn( this, 2 );\n\n\t\treturn this;\n\n\t},\n\n\tmakeBasis: function ( xAxis, yAxis, zAxis ) {\n\n\t\tthis.set(\n\t\t\txAxis.x, yAxis.x, zAxis.x, 0,\n\t\t\txAxis.y, yAxis.y, zAxis.y, 0,\n\t\t\txAxis.z, yAxis.z, zAxis.z, 0,\n\t\t\t0, 0, 0, 1\n\t\t);\n\n\t\treturn this;\n\n\t},\n\n\textractRotation: function () {\n\n\t\tvar v1;\n\n\t\treturn function extractRotation( m ) {\n\n\t\t\tif ( v1 === undefined ) v1 = new Vector3();\n\n\t\t\tvar te = this.elements;\n\t\t\tvar me = m.elements;\n\n\t\t\tvar scaleX = 1 / v1.setFromMatrixColumn( m, 0 ).length();\n\t\t\tvar scaleY = 1 / v1.setFromMatrixColumn( m, 1 ).length();\n\t\t\tvar scaleZ = 1 / v1.setFromMatrixColumn( m, 2 ).length();\n\n\t\t\tte[ 0 ] = me[ 0 ] * scaleX;\n\t\t\tte[ 1 ] = me[ 1 ] * scaleX;\n\t\t\tte[ 2 ] = me[ 2 ] * scaleX;\n\n\t\t\tte[ 4 ] = me[ 4 ] * scaleY;\n\t\t\tte[ 5 ] = me[ 5 ] * scaleY;\n\t\t\tte[ 6 ] = me[ 6 ] * scaleY;\n\n\t\t\tte[ 8 ] = me[ 8 ] * scaleZ;\n\t\t\tte[ 9 ] = me[ 9 ] * scaleZ;\n\t\t\tte[ 10 ] = me[ 10 ] * scaleZ;\n\n\t\t\treturn this;\n\n\t\t};\n\n\t}(),\n\n\tmakeRotationFromEuler: function ( euler ) {\n\n\t\tif ( (euler && euler.isEuler) === false ) {\n\n\t\t\tconsole.error( 'THREE.Matrix: .makeRotationFromEuler() now expects a Euler rotation rather than a Vector3 and order.' );\n\n\t\t}\n\n\t\tvar te = this.elements;\n\n\t\tvar x = euler.x, y = euler.y, z = euler.z;\n\t\tvar a = Math.cos( x ), b = Math.sin( x );\n\t\tvar c = Math.cos( y ), d = Math.sin( y );\n\t\tvar e = Math.cos( z ), f = Math.sin( z );\n\n\t\tif ( euler.order === 'XYZ' ) {\n\n\t\t\tvar ae = a * e, af = a * f, be = b * e, bf = b * f;\n\n\t\t\tte[ 0 ] = c * e;\n\t\t\tte[ 4 ] = - c * f;\n\t\t\tte[ 8 ] = d;\n\n\t\t\tte[ 1 ] = af + be * d;\n\t\t\tte[ 5 ] = ae - bf * d;\n\t\t\tte[ 9 ] = - b * c;\n\n\t\t\tte[ 2 ] = bf - ae * d;\n\t\t\tte[ 6 ] = be + af * d;\n\t\t\tte[ 10 ] = a * c;\n\n\t\t} else if ( euler.order === 'YXZ' ) {\n\n\t\t\tvar ce = c * e, cf = c * f, de = d * e, df = d * f;\n\n\t\t\tte[ 0 ] = ce + df * b;\n\t\t\tte[ 4 ] = de * b - cf;\n\t\t\tte[ 8 ] = a * d;\n\n\t\t\tte[ 1 ] = a * f;\n\t\t\tte[ 5 ] = a * e;\n\t\t\tte[ 9 ] = - b;\n\n\t\t\tte[ 2 ] = cf * b - de;\n\t\t\tte[ 6 ] = df + ce * b;\n\t\t\tte[ 10 ] = a * c;\n\n\t\t} else if ( euler.order === 'ZXY' ) {\n\n\t\t\tvar ce = c * e, cf = c * f, de = d * e, df = d * f;\n\n\t\t\tte[ 0 ] = ce - df * b;\n\t\t\tte[ 4 ] = - a * f;\n\t\t\tte[ 8 ] = de + cf * b;\n\n\t\t\tte[ 1 ] = cf + de * b;\n\t\t\tte[ 5 ] = a * e;\n\t\t\tte[ 9 ] = df - ce * b;\n\n\t\t\tte[ 2 ] = - a * d;\n\t\t\tte[ 6 ] = b;\n\t\t\tte[ 10 ] = a * c;\n\n\t\t} else if ( euler.order === 'ZYX' ) {\n\n\t\t\tvar ae = a * e, af = a * f, be = b * e, bf = b * f;\n\n\t\t\tte[ 0 ] = c * e;\n\t\t\tte[ 4 ] = be * d - af;\n\t\t\tte[ 8 ] = ae * d + bf;\n\n\t\t\tte[ 1 ] = c * f;\n\t\t\tte[ 5 ] = bf * d + ae;\n\t\t\tte[ 9 ] = af * d - be;\n\n\t\t\tte[ 2 ] = - d;\n\t\t\tte[ 6 ] = b * c;\n\t\t\tte[ 10 ] = a * c;\n\n\t\t} else if ( euler.order === 'YZX' ) {\n\n\t\t\tvar ac = a * c, ad = a * d, bc = b * c, bd = b * d;\n\n\t\t\tte[ 0 ] = c * e;\n\t\t\tte[ 4 ] = bd - ac * f;\n\t\t\tte[ 8 ] = bc * f + ad;\n\n\t\t\tte[ 1 ] = f;\n\t\t\tte[ 5 ] = a * e;\n\t\t\tte[ 9 ] = - b * e;\n\n\t\t\tte[ 2 ] = - d * e;\n\t\t\tte[ 6 ] = ad * f + bc;\n\t\t\tte[ 10 ] = ac - bd * f;\n\n\t\t} else if ( euler.order === 'XZY' ) {\n\n\t\t\tvar ac = a * c, ad = a * d, bc = b * c, bd = b * d;\n\n\t\t\tte[ 0 ] = c * e;\n\t\t\tte[ 4 ] = - f;\n\t\t\tte[ 8 ] = d * e;\n\n\t\t\tte[ 1 ] = ac * f + bd;\n\t\t\tte[ 5 ] = a * e;\n\t\t\tte[ 9 ] = ad * f - bc;\n\n\t\t\tte[ 2 ] = bc * f - ad;\n\t\t\tte[ 6 ] = b * e;\n\t\t\tte[ 10 ] = bd * f + ac;\n\n\t\t}\n\n\t\t// last column\n\t\tte[ 3 ] = 0;\n\t\tte[ 7 ] = 0;\n\t\tte[ 11 ] = 0;\n\n\t\t// bottom row\n\t\tte[ 12 ] = 0;\n\t\tte[ 13 ] = 0;\n\t\tte[ 14 ] = 0;\n\t\tte[ 15 ] = 1;\n\n\t\treturn this;\n\n\t},\n\n\tmakeRotationFromQuaternion: function ( q ) {\n\n\t\tvar te = this.elements;\n\n\t\tvar x = q.x, y = q.y, z = q.z, w = q.w;\n\t\tvar x2 = x + x, y2 = y + y, z2 = z + z;\n\t\tvar xx = x * x2, xy = x * y2, xz = x * z2;\n\t\tvar yy = y * y2, yz = y * z2, zz = z * z2;\n\t\tvar wx = w * x2, wy = w * y2, wz = w * z2;\n\n\t\tte[ 0 ] = 1 - ( yy + zz );\n\t\tte[ 4 ] = xy - wz;\n\t\tte[ 8 ] = xz + wy;\n\n\t\tte[ 1 ] = xy + wz;\n\t\tte[ 5 ] = 1 - ( xx + zz );\n\t\tte[ 9 ] = yz - wx;\n\n\t\tte[ 2 ] = xz - wy;\n\t\tte[ 6 ] = yz + wx;\n\t\tte[ 10 ] = 1 - ( xx + yy );\n\n\t\t// last column\n\t\tte[ 3 ] = 0;\n\t\tte[ 7 ] = 0;\n\t\tte[ 11 ] = 0;\n\n\t\t// bottom row\n\t\tte[ 12 ] = 0;\n\t\tte[ 13 ] = 0;\n\t\tte[ 14 ] = 0;\n\t\tte[ 15 ] = 1;\n\n\t\treturn this;\n\n\t},\n\n\tlookAt: function () {\n\n\t\tvar x, y, z;\n\n\t\treturn function lookAt( eye, target, up ) {\n\n\t\t\tif ( x === undefined ) {\n\n\t\t\t\tx = new Vector3();\n\t\t\t\ty = new Vector3();\n\t\t\t\tz = new Vector3();\n\n\t\t\t}\n\n\t\t\tvar te = this.elements;\n\n\t\t\tz.subVectors( eye, target ).normalize();\n\n\t\t\tif ( z.lengthSq() === 0 ) {\n\n\t\t\t\tz.z = 1;\n\n\t\t\t}\n\n\t\t\tx.crossVectors( up, z ).normalize();\n\n\t\t\tif ( x.lengthSq() === 0 ) {\n\n\t\t\t\tz.z += 0.0001;\n\t\t\t\tx.crossVectors( up, z ).normalize();\n\n\t\t\t}\n\n\t\t\ty.crossVectors( z, x );\n\n\n\t\t\tte[ 0 ] = x.x; te[ 4 ] = y.x; te[ 8 ] = z.x;\n\t\t\tte[ 1 ] = x.y; te[ 5 ] = y.y; te[ 9 ] = z.y;\n\t\t\tte[ 2 ] = x.z; te[ 6 ] = y.z; te[ 10 ] = z.z;\n\n\t\t\treturn this;\n\n\t\t};\n\n\t}(),\n\n\tmultiply: function ( m, n ) {\n\n\t\tif ( n !== undefined ) {\n\n\t\t\tconsole.warn( 'THREE.Matrix4: .multiply() now only accepts one argument. Use .multiplyMatrices( a, b ) instead.' );\n\t\t\treturn this.multiplyMatrices( m, n );\n\n\t\t}\n\n\t\treturn this.multiplyMatrices( this, m );\n\n\t},\n\n\tpremultiply: function ( m ) {\n\n\t\treturn this.multiplyMatrices( m, this );\n\n\t},\n\n\tmultiplyMatrices: function ( a, b ) {\n\n\t\tvar ae = a.elements;\n\t\tvar be = b.elements;\n\t\tvar te = this.elements;\n\n\t\tvar a11 = ae[ 0 ], a12 = ae[ 4 ], a13 = ae[ 8 ], a14 = ae[ 12 ];\n\t\tvar a21 = ae[ 1 ], a22 = ae[ 5 ], a23 = ae[ 9 ], a24 = ae[ 13 ];\n\t\tvar a31 = ae[ 2 ], a32 = ae[ 6 ], a33 = ae[ 10 ], a34 = ae[ 14 ];\n\t\tvar a41 = ae[ 3 ], a42 = ae[ 7 ], a43 = ae[ 11 ], a44 = ae[ 15 ];\n\n\t\tvar b11 = be[ 0 ], b12 = be[ 4 ], b13 = be[ 8 ], b14 = be[ 12 ];\n\t\tvar b21 = be[ 1 ], b22 = be[ 5 ], b23 = be[ 9 ], b24 = be[ 13 ];\n\t\tvar b31 = be[ 2 ], b32 = be[ 6 ], b33 = be[ 10 ], b34 = be[ 14 ];\n\t\tvar b41 = be[ 3 ], b42 = be[ 7 ], b43 = be[ 11 ], b44 = be[ 15 ];\n\n\t\tte[ 0 ] = a11 * b11 + a12 * b21 + a13 * b31 + a14 * b41;\n\t\tte[ 4 ] = a11 * b12 + a12 * b22 + a13 * b32 + a14 * b42;\n\t\tte[ 8 ] = a11 * b13 + a12 * b23 + a13 * b33 + a14 * b43;\n\t\tte[ 12 ] = a11 * b14 + a12 * b24 + a13 * b34 + a14 * b44;\n\n\t\tte[ 1 ] = a21 * b11 + a22 * b21 + a23 * b31 + a24 * b41;\n\t\tte[ 5 ] = a21 * b12 + a22 * b22 + a23 * b32 + a24 * b42;\n\t\tte[ 9 ] = a21 * b13 + a22 * b23 + a23 * b33 + a24 * b43;\n\t\tte[ 13 ] = a21 * b14 + a22 * b24 + a23 * b34 + a24 * b44;\n\n\t\tte[ 2 ] = a31 * b11 + a32 * b21 + a33 * b31 + a34 * b41;\n\t\tte[ 6 ] = a31 * b12 + a32 * b22 + a33 * b32 + a34 * b42;\n\t\tte[ 10 ] = a31 * b13 + a32 * b23 + a33 * b33 + a34 * b43;\n\t\tte[ 14 ] = a31 * b14 + a32 * b24 + a33 * b34 + a34 * b44;\n\n\t\tte[ 3 ] = a41 * b11 + a42 * b21 + a43 * b31 + a44 * b41;\n\t\tte[ 7 ] = a41 * b12 + a42 * b22 + a43 * b32 + a44 * b42;\n\t\tte[ 11 ] = a41 * b13 + a42 * b23 + a43 * b33 + a44 * b43;\n\t\tte[ 15 ] = a41 * b14 + a42 * b24 + a43 * b34 + a44 * b44;\n\n\t\treturn this;\n\n\t},\n\n\tmultiplyToArray: function ( a, b, r ) {\n\n\t\tvar te = this.elements;\n\n\t\tthis.multiplyMatrices( a, b );\n\n\t\tr[ 0 ] = te[ 0 ]; r[ 1 ] = te[ 1 ]; r[ 2 ] = te[ 2 ]; r[ 3 ] = te[ 3 ];\n\t\tr[ 4 ] = te[ 4 ]; r[ 5 ] = te[ 5 ]; r[ 6 ] = te[ 6 ]; r[ 7 ] = te[ 7 ];\n\t\tr[ 8 ] = te[ 8 ]; r[ 9 ] = te[ 9 ]; r[ 10 ] = te[ 10 ]; r[ 11 ] = te[ 11 ];\n\t\tr[ 12 ] = te[ 12 ]; r[ 13 ] = te[ 13 ]; r[ 14 ] = te[ 14 ]; r[ 15 ] = te[ 15 ];\n\n\t\treturn this;\n\n\t},\n\n\tmultiplyScalar: function ( s ) {\n\n\t\tvar te = this.elements;\n\n\t\tte[ 0 ] *= s; te[ 4 ] *= s; te[ 8 ] *= s; te[ 12 ] *= s;\n\t\tte[ 1 ] *= s; te[ 5 ] *= s; te[ 9 ] *= s; te[ 13 ] *= s;\n\t\tte[ 2 ] *= s; te[ 6 ] *= s; te[ 10 ] *= s; te[ 14 ] *= s;\n\t\tte[ 3 ] *= s; te[ 7 ] *= s; te[ 11 ] *= s; te[ 15 ] *= s;\n\n\t\treturn this;\n\n\t},\n\n\tapplyToVector3Array: function () {\n\n\t\tvar v1;\n\n\t\treturn function applyToVector3Array( array, offset, length ) {\n\n\t\t\tif ( v1 === undefined ) v1 = new Vector3();\n\t\t\tif ( offset === undefined ) offset = 0;\n\t\t\tif ( length === undefined ) length = array.length;\n\n\t\t\tfor ( var i = 0, j = offset; i < length; i += 3, j += 3 ) {\n\n\t\t\t\tv1.fromArray( array, j );\n\t\t\t\tv1.applyMatrix4( this );\n\t\t\t\tv1.toArray( array, j );\n\n\t\t\t}\n\n\t\t\treturn array;\n\n\t\t};\n\n\t}(),\n\n\tapplyToBuffer: function () {\n\n\t\tvar v1;\n\n\t\treturn function applyToBuffer( buffer, offset, length ) {\n\n\t\t\tif ( v1 === undefined ) v1 = new Vector3();\n\t\t\tif ( offset === undefined ) offset = 0;\n\t\t\tif ( length === undefined ) length = buffer.length / buffer.itemSize;\n\n\t\t\tfor ( var i = 0, j = offset; i < length; i ++, j ++ ) {\n\n\t\t\t\tv1.x = buffer.getX( j );\n\t\t\t\tv1.y = buffer.getY( j );\n\t\t\t\tv1.z = buffer.getZ( j );\n\n\t\t\t\tv1.applyMatrix4( this );\n\n\t\t\t\tbuffer.setXYZ( j, v1.x, v1.y, v1.z );\n\n\t\t\t}\n\n\t\t\treturn buffer;\n\n\t\t};\n\n\t}(),\n\n\tdeterminant: function () {\n\n\t\tvar te = this.elements;\n\n\t\tvar n11 = te[ 0 ], n12 = te[ 4 ], n13 = te[ 8 ], n14 = te[ 12 ];\n\t\tvar n21 = te[ 1 ], n22 = te[ 5 ], n23 = te[ 9 ], n24 = te[ 13 ];\n\t\tvar n31 = te[ 2 ], n32 = te[ 6 ], n33 = te[ 10 ], n34 = te[ 14 ];\n\t\tvar n41 = te[ 3 ], n42 = te[ 7 ], n43 = te[ 11 ], n44 = te[ 15 ];\n\n\t\t//TODO: make this more efficient\n\t\t//( based on http://www.euclideanspace.com/maths/algebra/matrix/functions/inverse/fourD/index.htm )\n\n\t\treturn (\n\t\t\tn41 * (\n\t\t\t\t+ n14 * n23 * n32\n\t\t\t\t - n13 * n24 * n32\n\t\t\t\t - n14 * n22 * n33\n\t\t\t\t + n12 * n24 * n33\n\t\t\t\t + n13 * n22 * n34\n\t\t\t\t - n12 * n23 * n34\n\t\t\t) +\n\t\t\tn42 * (\n\t\t\t\t+ n11 * n23 * n34\n\t\t\t\t - n11 * n24 * n33\n\t\t\t\t + n14 * n21 * n33\n\t\t\t\t - n13 * n21 * n34\n\t\t\t\t + n13 * n24 * n31\n\t\t\t\t - n14 * n23 * n31\n\t\t\t) +\n\t\t\tn43 * (\n\t\t\t\t+ n11 * n24 * n32\n\t\t\t\t - n11 * n22 * n34\n\t\t\t\t - n14 * n21 * n32\n\t\t\t\t + n12 * n21 * n34\n\t\t\t\t + n14 * n22 * n31\n\t\t\t\t - n12 * n24 * n31\n\t\t\t) +\n\t\t\tn44 * (\n\t\t\t\t- n13 * n22 * n31\n\t\t\t\t - n11 * n23 * n32\n\t\t\t\t + n11 * n22 * n33\n\t\t\t\t + n13 * n21 * n32\n\t\t\t\t - n12 * n21 * n33\n\t\t\t\t + n12 * n23 * n31\n\t\t\t)\n\n\t\t);\n\n\t},\n\n\ttranspose: function () {\n\n\t\tvar te = this.elements;\n\t\tvar tmp;\n\n\t\ttmp = te[ 1 ]; te[ 1 ] = te[ 4 ]; te[ 4 ] = tmp;\n\t\ttmp = te[ 2 ]; te[ 2 ] = te[ 8 ]; te[ 8 ] = tmp;\n\t\ttmp = te[ 6 ]; te[ 6 ] = te[ 9 ]; te[ 9 ] = tmp;\n\n\t\ttmp = te[ 3 ]; te[ 3 ] = te[ 12 ]; te[ 12 ] = tmp;\n\t\ttmp = te[ 7 ]; te[ 7 ] = te[ 13 ]; te[ 13 ] = tmp;\n\t\ttmp = te[ 11 ]; te[ 11 ] = te[ 14 ]; te[ 14 ] = tmp;\n\n\t\treturn this;\n\n\t},\n\n\tflattenToArrayOffset: function ( array, offset ) {\n\n\t\tconsole.warn( \"THREE.Matrix3: .flattenToArrayOffset is deprecated \" +\n\t\t\t\t\"- just use .toArray instead.\" );\n\n\t\treturn this.toArray( array, offset );\n\n\t},\n\n\tgetPosition: function () {\n\n\t\tvar v1;\n\n\t\treturn function getPosition() {\n\n\t\t\tif ( v1 === undefined ) v1 = new Vector3();\n\t\t\tconsole.warn( 'THREE.Matrix4: .getPosition() has been removed. Use Vector3.setFromMatrixPosition( matrix ) instead.' );\n\n\t\t\treturn v1.setFromMatrixColumn( this, 3 );\n\n\t\t};\n\n\t}(),\n\n\tsetPosition: function ( v ) {\n\n\t\tvar te = this.elements;\n\n\t\tte[ 12 ] = v.x;\n\t\tte[ 13 ] = v.y;\n\t\tte[ 14 ] = v.z;\n\n\t\treturn this;\n\n\t},\n\n\tgetInverse: function ( m, throwOnDegenerate ) {\n\n\t\t// based on http://www.euclideanspace.com/maths/algebra/matrix/functions/inverse/fourD/index.htm\n\t\tvar te = this.elements,\n\t\t\tme = m.elements,\n\n\t\t\tn11 = me[ 0 ], n21 = me[ 1 ], n31 = me[ 2 ], n41 = me[ 3 ],\n\t\t\tn12 = me[ 4 ], n22 = me[ 5 ], n32 = me[ 6 ], n42 = me[ 7 ],\n\t\t\tn13 = me[ 8 ], n23 = me[ 9 ], n33 = me[ 10 ], n43 = me[ 11 ],\n\t\t\tn14 = me[ 12 ], n24 = me[ 13 ], n34 = me[ 14 ], n44 = me[ 15 ],\n\n\t\t\tt11 = n23 * n34 * n42 - n24 * n33 * n42 + n24 * n32 * n43 - n22 * n34 * n43 - n23 * n32 * n44 + n22 * n33 * n44,\n\t\t\tt12 = n14 * n33 * n42 - n13 * n34 * n42 - n14 * n32 * n43 + n12 * n34 * n43 + n13 * n32 * n44 - n12 * n33 * n44,\n\t\t\tt13 = n13 * n24 * n42 - n14 * n23 * n42 + n14 * n22 * n43 - n12 * n24 * n43 - n13 * n22 * n44 + n12 * n23 * n44,\n\t\t\tt14 = n14 * n23 * n32 - n13 * n24 * n32 - n14 * n22 * n33 + n12 * n24 * n33 + n13 * n22 * n34 - n12 * n23 * n34;\n\n\t\tvar det = n11 * t11 + n21 * t12 + n31 * t13 + n41 * t14;\n\n\t\tif ( det === 0 ) {\n\n\t\t\tvar msg = \"THREE.Matrix4.getInverse(): can't invert matrix, determinant is 0\";\n\n\t\t\tif ( throwOnDegenerate === true ) {\n\n\t\t\t\tthrow new Error( msg );\n\n\t\t\t} else {\n\n\t\t\t\tconsole.warn( msg );\n\n\t\t\t}\n\n\t\t\treturn this.identity();\n\n\t\t}\n\n\t\tvar detInv = 1 / det;\n\n\t\tte[ 0 ] = t11 * detInv;\n\t\tte[ 1 ] = ( n24 * n33 * n41 - n23 * n34 * n41 - n24 * n31 * n43 + n21 * n34 * n43 + n23 * n31 * n44 - n21 * n33 * n44 ) * detInv;\n\t\tte[ 2 ] = ( n22 * n34 * n41 - n24 * n32 * n41 + n24 * n31 * n42 - n21 * n34 * n42 - n22 * n31 * n44 + n21 * n32 * n44 ) * detInv;\n\t\tte[ 3 ] = ( n23 * n32 * n41 - n22 * n33 * n41 - n23 * n31 * n42 + n21 * n33 * n42 + n22 * n31 * n43 - n21 * n32 * n43 ) * detInv;\n\n\t\tte[ 4 ] = t12 * detInv;\n\t\tte[ 5 ] = ( n13 * n34 * n41 - n14 * n33 * n41 + n14 * n31 * n43 - n11 * n34 * n43 - n13 * n31 * n44 + n11 * n33 * n44 ) * detInv;\n\t\tte[ 6 ] = ( n14 * n32 * n41 - n12 * n34 * n41 - n14 * n31 * n42 + n11 * n34 * n42 + n12 * n31 * n44 - n11 * n32 * n44 ) * detInv;\n\t\tte[ 7 ] = ( n12 * n33 * n41 - n13 * n32 * n41 + n13 * n31 * n42 - n11 * n33 * n42 - n12 * n31 * n43 + n11 * n32 * n43 ) * detInv;\n\n\t\tte[ 8 ] = t13 * detInv;\n\t\tte[ 9 ] = ( n14 * n23 * n41 - n13 * n24 * n41 - n14 * n21 * n43 + n11 * n24 * n43 + n13 * n21 * n44 - n11 * n23 * n44 ) * detInv;\n\t\tte[ 10 ] = ( n12 * n24 * n41 - n14 * n22 * n41 + n14 * n21 * n42 - n11 * n24 * n42 - n12 * n21 * n44 + n11 * n22 * n44 ) * detInv;\n\t\tte[ 11 ] = ( n13 * n22 * n41 - n12 * n23 * n41 - n13 * n21 * n42 + n11 * n23 * n42 + n12 * n21 * n43 - n11 * n22 * n43 ) * detInv;\n\n\t\tte[ 12 ] = t14 * detInv;\n\t\tte[ 13 ] = ( n13 * n24 * n31 - n14 * n23 * n31 + n14 * n21 * n33 - n11 * n24 * n33 - n13 * n21 * n34 + n11 * n23 * n34 ) * detInv;\n\t\tte[ 14 ] = ( n14 * n22 * n31 - n12 * n24 * n31 - n14 * n21 * n32 + n11 * n24 * n32 + n12 * n21 * n34 - n11 * n22 * n34 ) * detInv;\n\t\tte[ 15 ] = ( n12 * n23 * n31 - n13 * n22 * n31 + n13 * n21 * n32 - n11 * n23 * n32 - n12 * n21 * n33 + n11 * n22 * n33 ) * detInv;\n\n\t\treturn this;\n\n\t},\n\n\tscale: function ( v ) {\n\n\t\tvar te = this.elements;\n\t\tvar x = v.x, y = v.y, z = v.z;\n\n\t\tte[ 0 ] *= x; te[ 4 ] *= y; te[ 8 ] *= z;\n\t\tte[ 1 ] *= x; te[ 5 ] *= y; te[ 9 ] *= z;\n\t\tte[ 2 ] *= x; te[ 6 ] *= y; te[ 10 ] *= z;\n\t\tte[ 3 ] *= x; te[ 7 ] *= y; te[ 11 ] *= z;\n\n\t\treturn this;\n\n\t},\n\n\tgetMaxScaleOnAxis: function () {\n\n\t\tvar te = this.elements;\n\n\t\tvar scaleXSq = te[ 0 ] * te[ 0 ] + te[ 1 ] * te[ 1 ] + te[ 2 ] * te[ 2 ];\n\t\tvar scaleYSq = te[ 4 ] * te[ 4 ] + te[ 5 ] * te[ 5 ] + te[ 6 ] * te[ 6 ];\n\t\tvar scaleZSq = te[ 8 ] * te[ 8 ] + te[ 9 ] * te[ 9 ] + te[ 10 ] * te[ 10 ];\n\n\t\treturn Math.sqrt( Math.max( scaleXSq, scaleYSq, scaleZSq ) );\n\n\t},\n\n\tmakeTranslation: function ( x, y, z ) {\n\n\t\tthis.set(\n\n\t\t\t1, 0, 0, x,\n\t\t\t0, 1, 0, y,\n\t\t\t0, 0, 1, z,\n\t\t\t0, 0, 0, 1\n\n\t\t);\n\n\t\treturn this;\n\n\t},\n\n\tmakeRotationX: function ( theta ) {\n\n\t\tvar c = Math.cos( theta ), s = Math.sin( theta );\n\n\t\tthis.set(\n\n\t\t\t1, 0, 0, 0,\n\t\t\t0, c, - s, 0,\n\t\t\t0, s, c, 0,\n\t\t\t0, 0, 0, 1\n\n\t\t);\n\n\t\treturn this;\n\n\t},\n\n\tmakeRotationY: function ( theta ) {\n\n\t\tvar c = Math.cos( theta ), s = Math.sin( theta );\n\n\t\tthis.set(\n\n\t\t\t c, 0, s, 0,\n\t\t\t 0, 1, 0, 0,\n\t\t\t- s, 0, c, 0,\n\t\t\t 0, 0, 0, 1\n\n\t\t);\n\n\t\treturn this;\n\n\t},\n\n\tmakeRotationZ: function ( theta ) {\n\n\t\tvar c = Math.cos( theta ), s = Math.sin( theta );\n\n\t\tthis.set(\n\n\t\t\tc, - s, 0, 0,\n\t\t\ts, c, 0, 0,\n\t\t\t0, 0, 1, 0,\n\t\t\t0, 0, 0, 1\n\n\t\t);\n\n\t\treturn this;\n\n\t},\n\n\tmakeRotationAxis: function ( axis, angle ) {\n\n\t\t// Based on http://www.gamedev.net/reference/articles/article1199.asp\n\n\t\tvar c = Math.cos( angle );\n\t\tvar s = Math.sin( angle );\n\t\tvar t = 1 - c;\n\t\tvar x = axis.x, y = axis.y, z = axis.z;\n\t\tvar tx = t * x, ty = t * y;\n\n\t\tthis.set(\n\n\t\t\ttx * x + c, tx * y - s * z, tx * z + s * y, 0,\n\t\t\ttx * y + s * z, ty * y + c, ty * z - s * x, 0,\n\t\t\ttx * z - s * y, ty * z + s * x, t * z * z + c, 0,\n\t\t\t0, 0, 0, 1\n\n\t\t);\n\n\t\t return this;\n\n\t},\n\n\tmakeScale: function ( x, y, z ) {\n\n\t\tthis.set(\n\n\t\t\tx, 0, 0, 0,\n\t\t\t0, y, 0, 0,\n\t\t\t0, 0, z, 0,\n\t\t\t0, 0, 0, 1\n\n\t\t);\n\n\t\treturn this;\n\n\t},\n\n\tcompose: function ( position, quaternion, scale ) {\n\n\t\tthis.makeRotationFromQuaternion( quaternion );\n\t\tthis.scale( scale );\n\t\tthis.setPosition( position );\n\n\t\treturn this;\n\n\t},\n\n\tdecompose: function () {\n\n\t\tvar vector, matrix;\n\n\t\treturn function decompose( position, quaternion, scale ) {\n\n\t\t\tif ( vector === undefined ) {\n\n\t\t\t\tvector = new Vector3();\n\t\t\t\tmatrix = new Matrix4();\n\n\t\t\t}\n\n\t\t\tvar te = this.elements;\n\n\t\t\tvar sx = vector.set( te[ 0 ], te[ 1 ], te[ 2 ] ).length();\n\t\t\tvar sy = vector.set( te[ 4 ], te[ 5 ], te[ 6 ] ).length();\n\t\t\tvar sz = vector.set( te[ 8 ], te[ 9 ], te[ 10 ] ).length();\n\n\t\t\t// if determine is negative, we need to invert one scale\n\t\t\tvar det = this.determinant();\n\t\t\tif ( det < 0 ) {\n\n\t\t\t\tsx = - sx;\n\n\t\t\t}\n\n\t\t\tposition.x = te[ 12 ];\n\t\t\tposition.y = te[ 13 ];\n\t\t\tposition.z = te[ 14 ];\n\n\t\t\t// scale the rotation part\n\n\t\t\tmatrix.elements.set( this.elements ); // at this point matrix is incomplete so we can't use .copy()\n\n\t\t\tvar invSX = 1 / sx;\n\t\t\tvar invSY = 1 / sy;\n\t\t\tvar invSZ = 1 / sz;\n\n\t\t\tmatrix.elements[ 0 ] *= invSX;\n\t\t\tmatrix.elements[ 1 ] *= invSX;\n\t\t\tmatrix.elements[ 2 ] *= invSX;\n\n\t\t\tmatrix.elements[ 4 ] *= invSY;\n\t\t\tmatrix.elements[ 5 ] *= invSY;\n\t\t\tmatrix.elements[ 6 ] *= invSY;\n\n\t\t\tmatrix.elements[ 8 ] *= invSZ;\n\t\t\tmatrix.elements[ 9 ] *= invSZ;\n\t\t\tmatrix.elements[ 10 ] *= invSZ;\n\n\t\t\tquaternion.setFromRotationMatrix( matrix );\n\n\t\t\tscale.x = sx;\n\t\t\tscale.y = sy;\n\t\t\tscale.z = sz;\n\n\t\t\treturn this;\n\n\t\t};\n\n\t}(),\n\n\tmakeFrustum: function ( left, right, bottom, top, near, far ) {\n\n\t\tvar te = this.elements;\n\t\tvar x = 2 * near / ( right - left );\n\t\tvar y = 2 * near / ( top - bottom );\n\n\t\tvar a = ( right + left ) / ( right - left );\n\t\tvar b = ( top + bottom ) / ( top - bottom );\n\t\tvar c = - ( far + near ) / ( far - near );\n\t\tvar d = - 2 * far * near / ( far - near );\n\n\t\tte[ 0 ] = x;\tte[ 4 ] = 0;\tte[ 8 ] = a;\tte[ 12 ] = 0;\n\t\tte[ 1 ] = 0;\tte[ 5 ] = y;\tte[ 9 ] = b;\tte[ 13 ] = 0;\n\t\tte[ 2 ] = 0;\tte[ 6 ] = 0;\tte[ 10 ] = c;\tte[ 14 ] = d;\n\t\tte[ 3 ] = 0;\tte[ 7 ] = 0;\tte[ 11 ] = - 1;\tte[ 15 ] = 0;\n\n\t\treturn this;\n\n\t},\n\n\tmakePerspective: function ( fov, aspect, near, far ) {\n\n\t\tvar ymax = near * Math.tan( _Math.DEG2RAD * fov * 0.5 );\n\t\tvar ymin = - ymax;\n\t\tvar xmin = ymin * aspect;\n\t\tvar xmax = ymax * aspect;\n\n\t\treturn this.makeFrustum( xmin, xmax, ymin, ymax, near, far );\n\n\t},\n\n\tmakeOrthographic: function ( left, right, top, bottom, near, far ) {\n\n\t\tvar te = this.elements;\n\t\tvar w = 1.0 / ( right - left );\n\t\tvar h = 1.0 / ( top - bottom );\n\t\tvar p = 1.0 / ( far - near );\n\n\t\tvar x = ( right + left ) * w;\n\t\tvar y = ( top + bottom ) * h;\n\t\tvar z = ( far + near ) * p;\n\n\t\tte[ 0 ] = 2 * w;\tte[ 4 ] = 0;\tte[ 8 ] = 0;\tte[ 12 ] = - x;\n\t\tte[ 1 ] = 0;\tte[ 5 ] = 2 * h;\tte[ 9 ] = 0;\tte[ 13 ] = - y;\n\t\tte[ 2 ] = 0;\tte[ 6 ] = 0;\tte[ 10 ] = - 2 * p;\tte[ 14 ] = - z;\n\t\tte[ 3 ] = 0;\tte[ 7 ] = 0;\tte[ 11 ] = 0;\tte[ 15 ] = 1;\n\n\t\treturn this;\n\n\t},\n\n\tequals: function ( matrix ) {\n\n\t\tvar te = this.elements;\n\t\tvar me = matrix.elements;\n\n\t\tfor ( var i = 0; i < 16; i ++ ) {\n\n\t\t\tif ( te[ i ] !== me[ i ] ) return false;\n\n\t\t}\n\n\t\treturn true;\n\n\t},\n\n\tfromArray: function ( array, offset ) {\n\n\t\tif ( offset === undefined ) offset = 0;\n\n\t\tfor( var i = 0; i < 16; i ++ ) {\n\n\t\t\tthis.elements[ i ] = array[ i + offset ];\n\n\t\t}\n\n\t\treturn this;\n\n\t},\n\n\ttoArray: function ( array, offset ) {\n\n\t\tif ( array === undefined ) array = [];\n\t\tif ( offset === undefined ) offset = 0;\n\n\t\tvar te = this.elements;\n\n\t\tarray[ offset ] = te[ 0 ];\n\t\tarray[ offset + 1 ] = te[ 1 ];\n\t\tarray[ offset + 2 ] = te[ 2 ];\n\t\tarray[ offset + 3 ] = te[ 3 ];\n\n\t\tarray[ offset + 4 ] = te[ 4 ];\n\t\tarray[ offset + 5 ] = te[ 5 ];\n\t\tarray[ offset + 6 ] = te[ 6 ];\n\t\tarray[ offset + 7 ] = te[ 7 ];\n\n\t\tarray[ offset + 8 ] = te[ 8 ];\n\t\tarray[ offset + 9 ] = te[ 9 ];\n\t\tarray[ offset + 10 ] = te[ 10 ];\n\t\tarray[ offset + 11 ] = te[ 11 ];\n\n\t\tarray[ offset + 12 ] = te[ 12 ];\n\t\tarray[ offset + 13 ] = te[ 13 ];\n\t\tarray[ offset + 14 ] = te[ 14 ];\n\t\tarray[ offset + 15 ] = te[ 15 ];\n\n\t\treturn array;\n\n\t}\n\n};\n\n\nexport { Matrix4 };\n","import { Texture } from './Texture';\nimport { CubeReflectionMapping } from '../constants';\n\n/**\n * @author mrdoob / http://mrdoob.com/\n */\n\nfunction CubeTexture( images, mapping, wrapS, wrapT, magFilter, minFilter, format, type, anisotropy, encoding ) {\n\n\timages = images !== undefined ? images : [];\n\tmapping = mapping !== undefined ? mapping : CubeReflectionMapping;\n\n\tTexture.call( this, images, mapping, wrapS, wrapT, magFilter, minFilter, format, type, anisotropy, encoding );\n\n\tthis.flipY = false;\n\n}\n\nCubeTexture.prototype = Object.create( Texture.prototype );\nCubeTexture.prototype.constructor = CubeTexture;\n\nCubeTexture.prototype.isCubeTexture = true;\n\nObject.defineProperty( CubeTexture.prototype, 'images', {\n\n\tget: function () {\n\n\t\treturn this.image;\n\n\t},\n\n\tset: function ( value ) {\n\n\t\tthis.image = value;\n\n\t}\n\n} );\n\n\nexport { CubeTexture };\n","/**\n * @author tschw\n *\n * Uniforms of a program.\n * Those form a tree structure with a special top-level container for the root,\n * which you get by calling 'new WebGLUniforms( gl, program, renderer )'.\n *\n *\n * Properties of inner nodes including the top-level container:\n *\n * .seq - array of nested uniforms\n * .map - nested uniforms by name\n *\n *\n * Methods of all nodes except the top-level container:\n *\n * .setValue( gl, value, [renderer] )\n *\n * \t\tuploads a uniform value(s)\n * \tthe 'renderer' parameter is needed for sampler uniforms\n *\n *\n * Static methods of the top-level container (renderer factorizations):\n *\n * .upload( gl, seq, values, renderer )\n *\n * \t\tsets uniforms in 'seq' to 'values[id].value'\n *\n * .seqWithValue( seq, values ) : filteredSeq\n *\n * \t\tfilters 'seq' entries with corresponding entry in values\n *\n *\n * Methods of the top-level container (renderer factorizations):\n *\n * .setValue( gl, name, value )\n *\n * \t\tsets uniform with name 'name' to 'value'\n *\n * .set( gl, obj, prop )\n *\n * \t\tsets uniform from object and property with same name than uniform\n *\n * .setOptional( gl, obj, prop )\n *\n * \t\tlike .set for an optional property of the object\n *\n */\n\nimport { CubeTexture } from '../../textures/CubeTexture';\nimport { Texture } from '../../textures/Texture';\n\nvar emptyTexture = new Texture();\nvar emptyCubeTexture = new CubeTexture();\n\n// --- Base for inner nodes (including the root) ---\n\nfunction UniformContainer() {\n\n\tthis.seq = [];\n\tthis.map = {};\n\n}\n\n// --- Utilities ---\n\n// Array Caches (provide typed arrays for temporary by size)\n\nvar arrayCacheF32 = [];\nvar arrayCacheI32 = [];\n\n// Flattening for arrays of vectors and matrices\n\nfunction flatten( array, nBlocks, blockSize ) {\n\n\tvar firstElem = array[ 0 ];\n\n\tif ( firstElem <= 0 || firstElem > 0 ) return array;\n\t// unoptimized: ! isNaN( firstElem )\n\t// see http://jacksondunstan.com/articles/983\n\n\tvar n = nBlocks * blockSize,\n\t\tr = arrayCacheF32[ n ];\n\n\tif ( r === undefined ) {\n\n\t\tr = new Float32Array( n );\n\t\tarrayCacheF32[ n ] = r;\n\n\t}\n\n\tif ( nBlocks !== 0 ) {\n\n\t\tfirstElem.toArray( r, 0 );\n\n\t\tfor ( var i = 1, offset = 0; i !== nBlocks; ++ i ) {\n\n\t\t\toffset += blockSize;\n\t\t\tarray[ i ].toArray( r, offset );\n\n\t\t}\n\n\t}\n\n\treturn r;\n\n}\n\n// Texture unit allocation\n\nfunction allocTexUnits( renderer, n ) {\n\n\tvar r = arrayCacheI32[ n ];\n\n\tif ( r === undefined ) {\n\n\t\tr = new Int32Array( n );\n\t\tarrayCacheI32[ n ] = r;\n\n\t}\n\n\tfor ( var i = 0; i !== n; ++ i )\n\t\tr[ i ] = renderer.allocTextureUnit();\n\n\treturn r;\n\n}\n\n// --- Setters ---\n\n// Note: Defining these methods externally, because they come in a bunch\n// and this way their names minify.\n\n// Single scalar\n\nfunction setValue1f( gl, v ) { gl.uniform1f( this.addr, v ); }\nfunction setValue1i( gl, v ) { gl.uniform1i( this.addr, v ); }\n\n// Single float vector (from flat array or THREE.VectorN)\n\nfunction setValue2fv( gl, v ) {\n\n\tif ( v.x === undefined ) gl.uniform2fv( this.addr, v );\n\telse gl.uniform2f( this.addr, v.x, v.y );\n\n}\n\nfunction setValue3fv( gl, v ) {\n\n\tif ( v.x !== undefined )\n\t\tgl.uniform3f( this.addr, v.x, v.y, v.z );\n\telse if ( v.r !== undefined )\n\t\tgl.uniform3f( this.addr, v.r, v.g, v.b );\n\telse\n\t\tgl.uniform3fv( this.addr, v );\n\n}\n\nfunction setValue4fv( gl, v ) {\n\n\tif ( v.x === undefined ) gl.uniform4fv( this.addr, v );\n\telse gl.uniform4f( this.addr, v.x, v.y, v.z, v.w );\n\n}\n\n// Single matrix (from flat array or MatrixN)\n\nfunction setValue2fm( gl, v ) {\n\n\tgl.uniformMatrix2fv( this.addr, false, v.elements || v );\n\n}\n\nfunction setValue3fm( gl, v ) {\n\n\tgl.uniformMatrix3fv( this.addr, false, v.elements || v );\n\n}\n\nfunction setValue4fm( gl, v ) {\n\n\tgl.uniformMatrix4fv( this.addr, false, v.elements || v );\n\n}\n\n// Single texture (2D / Cube)\n\nfunction setValueT1( gl, v, renderer ) {\n\n\tvar unit = renderer.allocTextureUnit();\n\tgl.uniform1i( this.addr, unit );\n\trenderer.setTexture2D( v || emptyTexture, unit );\n\n}\n\nfunction setValueT6( gl, v, renderer ) {\n\n\tvar unit = renderer.allocTextureUnit();\n\tgl.uniform1i( this.addr, unit );\n\trenderer.setTextureCube( v || emptyCubeTexture, unit );\n\n}\n\n// Integer / Boolean vectors or arrays thereof (always flat arrays)\n\nfunction setValue2iv( gl, v ) { gl.uniform2iv( this.addr, v ); }\nfunction setValue3iv( gl, v ) { gl.uniform3iv( this.addr, v ); }\nfunction setValue4iv( gl, v ) { gl.uniform4iv( this.addr, v ); }\n\n// Helper to pick the right setter for the singular case\n\nfunction getSingularSetter( type ) {\n\n\tswitch ( type ) {\n\n\t\tcase 0x1406: return setValue1f; // FLOAT\n\t\tcase 0x8b50: return setValue2fv; // _VEC2\n\t\tcase 0x8b51: return setValue3fv; // _VEC3\n\t\tcase 0x8b52: return setValue4fv; // _VEC4\n\n\t\tcase 0x8b5a: return setValue2fm; // _MAT2\n\t\tcase 0x8b5b: return setValue3fm; // _MAT3\n\t\tcase 0x8b5c: return setValue4fm; // _MAT4\n\n\t\tcase 0x8b5e: return setValueT1; // SAMPLER_2D\n\t\tcase 0x8b60: return setValueT6; // SAMPLER_CUBE\n\n\t\tcase 0x1404: case 0x8b56: return setValue1i; // INT, BOOL\n\t\tcase 0x8b53: case 0x8b57: return setValue2iv; // _VEC2\n\t\tcase 0x8b54: case 0x8b58: return setValue3iv; // _VEC3\n\t\tcase 0x8b55: case 0x8b59: return setValue4iv; // _VEC4\n\n\t}\n\n}\n\n// Array of scalars\n\nfunction setValue1fv( gl, v ) { gl.uniform1fv( this.addr, v ); }\nfunction setValue1iv( gl, v ) { gl.uniform1iv( this.addr, v ); }\n\n// Array of vectors (flat or from THREE classes)\n\nfunction setValueV2a( gl, v ) {\n\n\tgl.uniform2fv( this.addr, flatten( v, this.size, 2 ) );\n\n}\n\nfunction setValueV3a( gl, v ) {\n\n\tgl.uniform3fv( this.addr, flatten( v, this.size, 3 ) );\n\n}\n\nfunction setValueV4a( gl, v ) {\n\n\tgl.uniform4fv( this.addr, flatten( v, this.size, 4 ) );\n\n}\n\n// Array of matrices (flat or from THREE clases)\n\nfunction setValueM2a( gl, v ) {\n\n\tgl.uniformMatrix2fv( this.addr, false, flatten( v, this.size, 4 ) );\n\n}\n\nfunction setValueM3a( gl, v ) {\n\n\tgl.uniformMatrix3fv( this.addr, false, flatten( v, this.size, 9 ) );\n\n}\n\nfunction setValueM4a( gl, v ) {\n\n\tgl.uniformMatrix4fv( this.addr, false, flatten( v, this.size, 16 ) );\n\n}\n\n// Array of textures (2D / Cube)\n\nfunction setValueT1a( gl, v, renderer ) {\n\n\tvar n = v.length,\n\t\tunits = allocTexUnits( renderer, n );\n\n\tgl.uniform1iv( this.addr, units );\n\n\tfor ( var i = 0; i !== n; ++ i ) {\n\n\t\trenderer.setTexture2D( v[ i ] || emptyTexture, units[ i ] );\n\n\t}\n\n}\n\nfunction setValueT6a( gl, v, renderer ) {\n\n\tvar n = v.length,\n\t\tunits = allocTexUnits( renderer, n );\n\n\tgl.uniform1iv( this.addr, units );\n\n\tfor ( var i = 0; i !== n; ++ i ) {\n\n\t\trenderer.setTextureCube( v[ i ] || emptyCubeTexture, units[ i ] );\n\n\t}\n\n}\n\n// Helper to pick the right setter for a pure (bottom-level) array\n\nfunction getPureArraySetter( type ) {\n\n\tswitch ( type ) {\n\n\t\tcase 0x1406: return setValue1fv; // FLOAT\n\t\tcase 0x8b50: return setValueV2a; // _VEC2\n\t\tcase 0x8b51: return setValueV3a; // _VEC3\n\t\tcase 0x8b52: return setValueV4a; // _VEC4\n\n\t\tcase 0x8b5a: return setValueM2a; // _MAT2\n\t\tcase 0x8b5b: return setValueM3a; // _MAT3\n\t\tcase 0x8b5c: return setValueM4a; // _MAT4\n\n\t\tcase 0x8b5e: return setValueT1a; // SAMPLER_2D\n\t\tcase 0x8b60: return setValueT6a; // SAMPLER_CUBE\n\n\t\tcase 0x1404: case 0x8b56: return setValue1iv; // INT, BOOL\n\t\tcase 0x8b53: case 0x8b57: return setValue2iv; // _VEC2\n\t\tcase 0x8b54: case 0x8b58: return setValue3iv; // _VEC3\n\t\tcase 0x8b55: case 0x8b59: return setValue4iv; // _VEC4\n\n\t}\n\n}\n\n// --- Uniform Classes ---\n\nfunction SingleUniform( id, activeInfo, addr ) {\n\n\tthis.id = id;\n\tthis.addr = addr;\n\tthis.setValue = getSingularSetter( activeInfo.type );\n\n\t// this.path = activeInfo.name; // DEBUG\n\n}\n\nfunction PureArrayUniform( id, activeInfo, addr ) {\n\n\tthis.id = id;\n\tthis.addr = addr;\n\tthis.size = activeInfo.size;\n\tthis.setValue = getPureArraySetter( activeInfo.type );\n\n\t// this.path = activeInfo.name; // DEBUG\n\n}\n\nfunction StructuredUniform( id ) {\n\n\tthis.id = id;\n\n\tUniformContainer.call( this ); // mix-in\n\n}\n\nStructuredUniform.prototype.setValue = function( gl, value ) {\n\n\t// Note: Don't need an extra 'renderer' parameter, since samplers\n\t// are not allowed in structured uniforms.\n\n\tvar seq = this.seq;\n\n\tfor ( var i = 0, n = seq.length; i !== n; ++ i ) {\n\n\t\tvar u = seq[ i ];\n\t\tu.setValue( gl, value[ u.id ] );\n\n\t}\n\n};\n\n// --- Top-level ---\n\n// Parser - builds up the property tree from the path strings\n\nvar RePathPart = /([\\w\\d_]+)(\\])?(\\[|\\.)?/g;\n\n// extracts\n// \t- the identifier (member name or array index)\n// - followed by an optional right bracket (found when array index)\n// - followed by an optional left bracket or dot (type of subscript)\n//\n// Note: These portions can be read in a non-overlapping fashion and\n// allow straightforward parsing of the hierarchy that WebGL encodes\n// in the uniform names.\n\nfunction addUniform( container, uniformObject ) {\n\n\tcontainer.seq.push( uniformObject );\n\tcontainer.map[ uniformObject.id ] = uniformObject;\n\n}\n\nfunction parseUniform( activeInfo, addr, container ) {\n\n\tvar path = activeInfo.name,\n\t\tpathLength = path.length;\n\n\t// reset RegExp object, because of the early exit of a previous run\n\tRePathPart.lastIndex = 0;\n\n\tfor (; ;) {\n\n\t\tvar match = RePathPart.exec( path ),\n\t\t\tmatchEnd = RePathPart.lastIndex,\n\n\t\t\tid = match[ 1 ],\n\t\t\tidIsIndex = match[ 2 ] === ']',\n\t\t\tsubscript = match[ 3 ];\n\n\t\tif ( idIsIndex ) id = id | 0; // convert to integer\n\n\t\tif ( subscript === undefined ||\n\t\t\t\tsubscript === '[' && matchEnd + 2 === pathLength ) {\n\t\t\t// bare name or \"pure\" bottom-level array \"[0]\" suffix\n\n\t\t\taddUniform( container, subscript === undefined ?\n\t\t\t\t\tnew SingleUniform( id, activeInfo, addr ) :\n\t\t\t\t\tnew PureArrayUniform( id, activeInfo, addr ) );\n\n\t\t\tbreak;\n\n\t\t} else {\n\t\t\t// step into inner node / create it in case it doesn't exist\n\n\t\t\tvar map = container.map,\n\t\t\t\tnext = map[ id ];\n\n\t\t\tif ( next === undefined ) {\n\n\t\t\t\tnext = new StructuredUniform( id );\n\t\t\t\taddUniform( container, next );\n\n\t\t\t}\n\n\t\t\tcontainer = next;\n\n\t\t}\n\n\t}\n\n}\n\n// Root Container\n\nfunction WebGLUniforms( gl, program, renderer ) {\n\n\tUniformContainer.call( this );\n\n\tthis.renderer = renderer;\n\n\tvar n = gl.getProgramParameter( program, gl.ACTIVE_UNIFORMS );\n\n\tfor ( var i = 0; i !== n; ++ i ) {\n\n\t\tvar info = gl.getActiveUniform( program, i ),\n\t\t\tpath = info.name,\n\t\t\taddr = gl.getUniformLocation( program, path );\n\n\t\tparseUniform( info, addr, this );\n\n\t}\n\n}\n\nWebGLUniforms.prototype.setValue = function( gl, name, value ) {\n\n\tvar u = this.map[ name ];\n\n\tif ( u !== undefined ) u.setValue( gl, value, this.renderer );\n\n};\n\nWebGLUniforms.prototype.set = function( gl, object, name ) {\n\n\tvar u = this.map[ name ];\n\n\tif ( u !== undefined ) u.setValue( gl, object[ name ], this.renderer );\n\n};\n\nWebGLUniforms.prototype.setOptional = function( gl, object, name ) {\n\n\tvar v = object[ name ];\n\n\tif ( v !== undefined ) this.setValue( gl, name, v );\n\n};\n\n\n// Static interface\n\nWebGLUniforms.upload = function( gl, seq, values, renderer ) {\n\n\tfor ( var i = 0, n = seq.length; i !== n; ++ i ) {\n\n\t\tvar u = seq[ i ],\n\t\t\tv = values[ u.id ];\n\n\t\tif ( v.needsUpdate !== false ) {\n\t\t\t// note: always updating when .needsUpdate is undefined\n\n\t\t\tu.setValue( gl, v.value, renderer );\n\n\t\t}\n\n\t}\n\n};\n\nWebGLUniforms.seqWithValue = function( seq, values ) {\n\n\tvar r = [];\n\n\tfor ( var i = 0, n = seq.length; i !== n; ++ i ) {\n\n\t\tvar u = seq[ i ];\n\t\tif ( u.id in values ) r.push( u );\n\n\t}\n\n\treturn r;\n\n};\n\nexport { WebGLUniforms };\n","/**\n * Uniform Utilities\n */\n\nvar UniformsUtils = {\n\n\tmerge: function ( uniforms ) {\n\n\t\tvar merged = {};\n\n\t\tfor ( var u = 0; u < uniforms.length; u ++ ) {\n\n\t\t\tvar tmp = this.clone( uniforms[ u ] );\n\n\t\t\tfor ( var p in tmp ) {\n\n\t\t\t\tmerged[ p ] = tmp[ p ];\n\n\t\t\t}\n\n\t\t}\n\n\t\treturn merged;\n\n\t},\n\n\tclone: function ( uniforms_src ) {\n\n\t\tvar uniforms_dst = {};\n\n\t\tfor ( var u in uniforms_src ) {\n\n\t\t\tuniforms_dst[ u ] = {};\n\n\t\t\tfor ( var p in uniforms_src[ u ] ) {\n\n\t\t\t\tvar parameter_src = uniforms_src[ u ][ p ];\n\n\t\t\t\tif ( parameter_src && ( parameter_src.isColor ||\n\t\t\t\t\tparameter_src.isMatrix3 || parameter_src.isMatrix4 ||\n\t\t\t\t\tparameter_src.isVector2 || parameter_src.isVector3 || parameter_src.isVector4 ||\n\t\t\t\t\tparameter_src.isTexture ) ) {\n\n\t\t\t\t\tuniforms_dst[ u ][ p ] = parameter_src.clone();\n\n\t\t\t\t} else if ( Array.isArray( parameter_src ) ) {\n\n\t\t\t\t\tuniforms_dst[ u ][ p ] = parameter_src.slice();\n\n\t\t\t\t} else {\n\n\t\t\t\t\tuniforms_dst[ u ][ p ] = parameter_src;\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t}\n\n\t\treturn uniforms_dst;\n\n\t}\n\n};\n\n\nexport { UniformsUtils };\n","import alphamap_fragment from './ShaderChunk/alphamap_fragment.glsl';\nimport alphamap_pars_fragment from './ShaderChunk/alphamap_pars_fragment.glsl';\nimport alphatest_fragment from './ShaderChunk/alphatest_fragment.glsl';\nimport aomap_fragment from './ShaderChunk/aomap_fragment.glsl';\nimport aomap_pars_fragment from './ShaderChunk/aomap_pars_fragment.glsl';\nimport begin_vertex from './ShaderChunk/begin_vertex.glsl';\nimport beginnormal_vertex from './ShaderChunk/beginnormal_vertex.glsl';\nimport bsdfs from './ShaderChunk/bsdfs.glsl';\nimport bumpmap_pars_fragment from './ShaderChunk/bumpmap_pars_fragment.glsl';\nimport clipping_planes_fragment from './ShaderChunk/clipping_planes_fragment.glsl';\nimport clipping_planes_pars_fragment from './ShaderChunk/clipping_planes_pars_fragment.glsl';\nimport clipping_planes_pars_vertex from './ShaderChunk/clipping_planes_pars_vertex.glsl';\nimport clipping_planes_vertex from './ShaderChunk/clipping_planes_vertex.glsl';\nimport color_fragment from './ShaderChunk/color_fragment.glsl';\nimport color_pars_fragment from './ShaderChunk/color_pars_fragment.glsl';\nimport color_pars_vertex from './ShaderChunk/color_pars_vertex.glsl';\nimport color_vertex from './ShaderChunk/color_vertex.glsl';\nimport common from './ShaderChunk/common.glsl';\nimport cube_uv_reflection_fragment from './ShaderChunk/cube_uv_reflection_fragment.glsl';\nimport defaultnormal_vertex from './ShaderChunk/defaultnormal_vertex.glsl';\nimport displacementmap_pars_vertex from './ShaderChunk/displacementmap_pars_vertex.glsl';\nimport displacementmap_vertex from './ShaderChunk/displacementmap_vertex.glsl';\nimport emissivemap_fragment from './ShaderChunk/emissivemap_fragment.glsl';\nimport emissivemap_pars_fragment from './ShaderChunk/emissivemap_pars_fragment.glsl';\nimport encodings_fragment from './ShaderChunk/encodings_fragment.glsl';\nimport encodings_pars_fragment from './ShaderChunk/encodings_pars_fragment.glsl';\nimport envmap_fragment from './ShaderChunk/envmap_fragment.glsl';\nimport envmap_pars_fragment from './ShaderChunk/envmap_pars_fragment.glsl';\nimport envmap_pars_vertex from './ShaderChunk/envmap_pars_vertex.glsl';\nimport envmap_vertex from './ShaderChunk/envmap_vertex.glsl';\nimport fog_fragment from './ShaderChunk/fog_fragment.glsl';\nimport fog_pars_fragment from './ShaderChunk/fog_pars_fragment.glsl';\nimport lightmap_fragment from './ShaderChunk/lightmap_fragment.glsl';\nimport lightmap_pars_fragment from './ShaderChunk/lightmap_pars_fragment.glsl';\nimport lights_lambert_vertex from './ShaderChunk/lights_lambert_vertex.glsl';\nimport lights_pars from './ShaderChunk/lights_pars.glsl';\nimport lights_phong_fragment from './ShaderChunk/lights_phong_fragment.glsl';\nimport lights_phong_pars_fragment from './ShaderChunk/lights_phong_pars_fragment.glsl';\nimport lights_physical_fragment from './ShaderChunk/lights_physical_fragment.glsl';\nimport lights_physical_pars_fragment from './ShaderChunk/lights_physical_pars_fragment.glsl';\nimport lights_template from './ShaderChunk/lights_template.glsl';\nimport logdepthbuf_fragment from './ShaderChunk/logdepthbuf_fragment.glsl';\nimport logdepthbuf_pars_fragment from './ShaderChunk/logdepthbuf_pars_fragment.glsl';\nimport logdepthbuf_pars_vertex from './ShaderChunk/logdepthbuf_pars_vertex.glsl';\nimport logdepthbuf_vertex from './ShaderChunk/logdepthbuf_vertex.glsl';\nimport map_fragment from './ShaderChunk/map_fragment.glsl';\nimport map_pars_fragment from './ShaderChunk/map_pars_fragment.glsl';\nimport map_particle_fragment from './ShaderChunk/map_particle_fragment.glsl';\nimport map_particle_pars_fragment from './ShaderChunk/map_particle_pars_fragment.glsl';\nimport metalnessmap_fragment from './ShaderChunk/metalnessmap_fragment.glsl';\nimport metalnessmap_pars_fragment from './ShaderChunk/metalnessmap_pars_fragment.glsl';\nimport morphnormal_vertex from './ShaderChunk/morphnormal_vertex.glsl';\nimport morphtarget_pars_vertex from './ShaderChunk/morphtarget_pars_vertex.glsl';\nimport morphtarget_vertex from './ShaderChunk/morphtarget_vertex.glsl';\nimport normal_flip from './ShaderChunk/normal_flip.glsl';\nimport normal_fragment from './ShaderChunk/normal_fragment.glsl';\nimport normalmap_pars_fragment from './ShaderChunk/normalmap_pars_fragment.glsl';\nimport packing from './ShaderChunk/packing.glsl';\nimport premultiplied_alpha_fragment from './ShaderChunk/premultiplied_alpha_fragment.glsl';\nimport project_vertex from './ShaderChunk/project_vertex.glsl';\nimport roughnessmap_fragment from './ShaderChunk/roughnessmap_fragment.glsl';\nimport roughnessmap_pars_fragment from './ShaderChunk/roughnessmap_pars_fragment.glsl';\nimport shadowmap_pars_fragment from './ShaderChunk/shadowmap_pars_fragment.glsl';\nimport shadowmap_pars_vertex from './ShaderChunk/shadowmap_pars_vertex.glsl';\nimport shadowmap_vertex from './ShaderChunk/shadowmap_vertex.glsl';\nimport shadowmask_pars_fragment from './ShaderChunk/shadowmask_pars_fragment.glsl';\nimport skinbase_vertex from './ShaderChunk/skinbase_vertex.glsl';\nimport skinning_pars_vertex from './ShaderChunk/skinning_pars_vertex.glsl';\nimport skinning_vertex from './ShaderChunk/skinning_vertex.glsl';\nimport skinnormal_vertex from './ShaderChunk/skinnormal_vertex.glsl';\nimport specularmap_fragment from './ShaderChunk/specularmap_fragment.glsl';\nimport specularmap_pars_fragment from './ShaderChunk/specularmap_pars_fragment.glsl';\nimport tonemapping_fragment from './ShaderChunk/tonemapping_fragment.glsl';\nimport tonemapping_pars_fragment from './ShaderChunk/tonemapping_pars_fragment.glsl';\nimport uv_pars_fragment from './ShaderChunk/uv_pars_fragment.glsl';\nimport uv_pars_vertex from './ShaderChunk/uv_pars_vertex.glsl';\nimport uv_vertex from './ShaderChunk/uv_vertex.glsl';\nimport uv2_pars_fragment from './ShaderChunk/uv2_pars_fragment.glsl';\nimport uv2_pars_vertex from './ShaderChunk/uv2_pars_vertex.glsl';\nimport uv2_vertex from './ShaderChunk/uv2_vertex.glsl';\nimport worldpos_vertex from './ShaderChunk/worldpos_vertex.glsl';\n\nimport cube_frag from './ShaderLib/cube_frag.glsl';\nimport cube_vert from './ShaderLib/cube_vert.glsl';\nimport depth_frag from './ShaderLib/depth_frag.glsl';\nimport depth_vert from './ShaderLib/depth_vert.glsl';\nimport distanceRGBA_frag from './ShaderLib/distanceRGBA_frag.glsl';\nimport distanceRGBA_vert from './ShaderLib/distanceRGBA_vert.glsl';\nimport equirect_frag from './ShaderLib/equirect_frag.glsl';\nimport equirect_vert from './ShaderLib/equirect_vert.glsl';\nimport linedashed_frag from './ShaderLib/linedashed_frag.glsl';\nimport linedashed_vert from './ShaderLib/linedashed_vert.glsl';\nimport meshbasic_frag from './ShaderLib/meshbasic_frag.glsl';\nimport meshbasic_vert from './ShaderLib/meshbasic_vert.glsl';\nimport meshlambert_frag from './ShaderLib/meshlambert_frag.glsl';\nimport meshlambert_vert from './ShaderLib/meshlambert_vert.glsl';\nimport meshphong_frag from './ShaderLib/meshphong_frag.glsl';\nimport meshphong_vert from './ShaderLib/meshphong_vert.glsl';\nimport meshphysical_frag from './ShaderLib/meshphysical_frag.glsl';\nimport meshphysical_vert from './ShaderLib/meshphysical_vert.glsl';\nimport normal_frag from './ShaderLib/normal_frag.glsl';\nimport normal_vert from './ShaderLib/normal_vert.glsl';\nimport points_frag from './ShaderLib/points_frag.glsl';\nimport points_vert from './ShaderLib/points_vert.glsl';\nimport shadow_frag from './ShaderLib/shadow_frag.glsl';\nimport shadow_vert from './ShaderLib/shadow_vert.glsl';\n\nexport var ShaderChunk = {\n\talphamap_fragment: alphamap_fragment,\n\talphamap_pars_fragment: alphamap_pars_fragment,\n\talphatest_fragment: alphatest_fragment,\n\taomap_fragment: aomap_fragment,\n\taomap_pars_fragment: aomap_pars_fragment,\n\tbegin_vertex: begin_vertex,\n\tbeginnormal_vertex: beginnormal_vertex,\n\tbsdfs: bsdfs,\n\tbumpmap_pars_fragment: bumpmap_pars_fragment,\n\tclipping_planes_fragment: clipping_planes_fragment,\n\tclipping_planes_pars_fragment: clipping_planes_pars_fragment,\n\tclipping_planes_pars_vertex: clipping_planes_pars_vertex,\n\tclipping_planes_vertex: clipping_planes_vertex,\n\tcolor_fragment: color_fragment,\n\tcolor_pars_fragment: color_pars_fragment,\n\tcolor_pars_vertex: color_pars_vertex,\n\tcolor_vertex: color_vertex,\n\tcommon: common,\n\tcube_uv_reflection_fragment: cube_uv_reflection_fragment,\n\tdefaultnormal_vertex: defaultnormal_vertex,\n\tdisplacementmap_pars_vertex: displacementmap_pars_vertex,\n\tdisplacementmap_vertex: displacementmap_vertex,\n\temissivemap_fragment: emissivemap_fragment,\n\temissivemap_pars_fragment: emissivemap_pars_fragment,\n\tencodings_fragment: encodings_fragment,\n\tencodings_pars_fragment: encodings_pars_fragment,\n\tenvmap_fragment: envmap_fragment,\n\tenvmap_pars_fragment: envmap_pars_fragment,\n\tenvmap_pars_vertex: envmap_pars_vertex,\n\tenvmap_vertex: envmap_vertex,\n\tfog_fragment: fog_fragment,\n\tfog_pars_fragment: fog_pars_fragment,\n\tlightmap_fragment: lightmap_fragment,\n\tlightmap_pars_fragment: lightmap_pars_fragment,\n\tlights_lambert_vertex: lights_lambert_vertex,\n\tlights_pars: lights_pars,\n\tlights_phong_fragment: lights_phong_fragment,\n\tlights_phong_pars_fragment: lights_phong_pars_fragment,\n\tlights_physical_fragment: lights_physical_fragment,\n\tlights_physical_pars_fragment: lights_physical_pars_fragment,\n\tlights_template: lights_template,\n\tlogdepthbuf_fragment: logdepthbuf_fragment,\n\tlogdepthbuf_pars_fragment: logdepthbuf_pars_fragment,\n\tlogdepthbuf_pars_vertex: logdepthbuf_pars_vertex,\n\tlogdepthbuf_vertex: logdepthbuf_vertex,\n\tmap_fragment: map_fragment,\n\tmap_pars_fragment: map_pars_fragment,\n\tmap_particle_fragment: map_particle_fragment,\n\tmap_particle_pars_fragment: map_particle_pars_fragment,\n\tmetalnessmap_fragment: metalnessmap_fragment,\n\tmetalnessmap_pars_fragment: metalnessmap_pars_fragment,\n\tmorphnormal_vertex: morphnormal_vertex,\n\tmorphtarget_pars_vertex: morphtarget_pars_vertex,\n\tmorphtarget_vertex: morphtarget_vertex,\n\tnormal_flip: normal_flip,\n\tnormal_fragment: normal_fragment,\n\tnormalmap_pars_fragment: normalmap_pars_fragment,\n\tpacking: packing,\n\tpremultiplied_alpha_fragment: premultiplied_alpha_fragment,\n\tproject_vertex: project_vertex,\n\troughnessmap_fragment: roughnessmap_fragment,\n\troughnessmap_pars_fragment: roughnessmap_pars_fragment,\n\tshadowmap_pars_fragment: shadowmap_pars_fragment,\n\tshadowmap_pars_vertex: shadowmap_pars_vertex,\n\tshadowmap_vertex: shadowmap_vertex,\n\tshadowmask_pars_fragment: shadowmask_pars_fragment,\n\tskinbase_vertex: skinbase_vertex,\n\tskinning_pars_vertex: skinning_pars_vertex,\n\tskinning_vertex: skinning_vertex,\n\tskinnormal_vertex: skinnormal_vertex,\n\tspecularmap_fragment: specularmap_fragment,\n\tspecularmap_pars_fragment: specularmap_pars_fragment,\n\ttonemapping_fragment: tonemapping_fragment,\n\ttonemapping_pars_fragment: tonemapping_pars_fragment,\n\tuv_pars_fragment: uv_pars_fragment,\n\tuv_pars_vertex: uv_pars_vertex,\n\tuv_vertex: uv_vertex,\n\tuv2_pars_fragment: uv2_pars_fragment,\n\tuv2_pars_vertex: uv2_pars_vertex,\n\tuv2_vertex: uv2_vertex,\n\tworldpos_vertex: worldpos_vertex,\n\n\tcube_frag: cube_frag,\n\tcube_vert: cube_vert,\n\tdepth_frag: depth_frag,\n\tdepth_vert: depth_vert,\n\tdistanceRGBA_frag: distanceRGBA_frag,\n\tdistanceRGBA_vert: distanceRGBA_vert,\n\tequirect_frag: equirect_frag,\n\tequirect_vert: equirect_vert,\n\tlinedashed_frag: linedashed_frag,\n\tlinedashed_vert: linedashed_vert,\n\tmeshbasic_frag: meshbasic_frag,\n\tmeshbasic_vert: meshbasic_vert,\n\tmeshlambert_frag: meshlambert_frag,\n\tmeshlambert_vert: meshlambert_vert,\n\tmeshphong_frag: meshphong_frag,\n\tmeshphong_vert: meshphong_vert,\n\tmeshphysical_frag: meshphysical_frag,\n\tmeshphysical_vert: meshphysical_vert,\n\tnormal_frag: normal_frag,\n\tnormal_vert: normal_vert,\n\tpoints_frag: points_frag,\n\tpoints_vert: points_vert,\n\tshadow_frag: shadow_frag,\n\tshadow_vert: shadow_vert\n};\n","import { _Math } from './Math';\n\n/**\n * @author mrdoob / http://mrdoob.com/\n */\n\nfunction Color( r, g, b ) {\n\n\tif ( g === undefined && b === undefined ) {\n\n\t\t// r is THREE.Color, hex or string\n\t\treturn this.set( r );\n\n\t}\n\n\treturn this.setRGB( r, g, b );\n\n}\n\nColor.prototype = {\n\n\tconstructor: Color,\n\n\tisColor: true,\n\n\tr: 1, g: 1, b: 1,\n\n\tset: function ( value ) {\n\n\t\tif ( (value && value.isColor) ) {\n\n\t\t\tthis.copy( value );\n\n\t\t} else if ( typeof value === 'number' ) {\n\n\t\t\tthis.setHex( value );\n\n\t\t} else if ( typeof value === 'string' ) {\n\n\t\t\tthis.setStyle( value );\n\n\t\t}\n\n\t\treturn this;\n\n\t},\n\n\tsetScalar: function ( scalar ) {\n\n\t\tthis.r = scalar;\n\t\tthis.g = scalar;\n\t\tthis.b = scalar;\n\n\t\treturn this;\n\n\t},\n\n\tsetHex: function ( hex ) {\n\n\t\thex = Math.floor( hex );\n\n\t\tthis.r = ( hex >> 16 & 255 ) / 255;\n\t\tthis.g = ( hex >> 8 & 255 ) / 255;\n\t\tthis.b = ( hex & 255 ) / 255;\n\n\t\treturn this;\n\n\t},\n\n\tsetRGB: function ( r, g, b ) {\n\n\t\tthis.r = r;\n\t\tthis.g = g;\n\t\tthis.b = b;\n\n\t\treturn this;\n\n\t},\n\n\tsetHSL: function () {\n\n\t\tfunction hue2rgb( p, q, t ) {\n\n\t\t\tif ( t < 0 ) t += 1;\n\t\t\tif ( t > 1 ) t -= 1;\n\t\t\tif ( t < 1 / 6 ) return p + ( q - p ) * 6 * t;\n\t\t\tif ( t < 1 / 2 ) return q;\n\t\t\tif ( t < 2 / 3 ) return p + ( q - p ) * 6 * ( 2 / 3 - t );\n\t\t\treturn p;\n\n\t\t}\n\n\t\treturn function setHSL( h, s, l ) {\n\n\t\t\t// h,s,l ranges are in 0.0 - 1.0\n\t\t\th = _Math.euclideanModulo( h, 1 );\n\t\t\ts = _Math.clamp( s, 0, 1 );\n\t\t\tl = _Math.clamp( l, 0, 1 );\n\n\t\t\tif ( s === 0 ) {\n\n\t\t\t\tthis.r = this.g = this.b = l;\n\n\t\t\t} else {\n\n\t\t\t\tvar p = l <= 0.5 ? l * ( 1 + s ) : l + s - ( l * s );\n\t\t\t\tvar q = ( 2 * l ) - p;\n\n\t\t\t\tthis.r = hue2rgb( q, p, h + 1 / 3 );\n\t\t\t\tthis.g = hue2rgb( q, p, h );\n\t\t\t\tthis.b = hue2rgb( q, p, h - 1 / 3 );\n\n\t\t\t}\n\n\t\t\treturn this;\n\n\t\t};\n\n\t}(),\n\n\tsetStyle: function ( style ) {\n\n\t\tfunction handleAlpha( string ) {\n\n\t\t\tif ( string === undefined ) return;\n\n\t\t\tif ( parseFloat( string ) < 1 ) {\n\n\t\t\t\tconsole.warn( 'THREE.Color: Alpha component of ' + style + ' will be ignored.' );\n\n\t\t\t}\n\n\t\t}\n\n\n\t\tvar m;\n\n\t\tif ( m = /^((?:rgb|hsl)a?)\\(\\s*([^\\)]*)\\)/.exec( style ) ) {\n\n\t\t\t// rgb / hsl\n\n\t\t\tvar color;\n\t\t\tvar name = m[ 1 ];\n\t\t\tvar components = m[ 2 ];\n\n\t\t\tswitch ( name ) {\n\n\t\t\t\tcase 'rgb':\n\t\t\t\tcase 'rgba':\n\n\t\t\t\t\tif ( color = /^(\\d+)\\s*,\\s*(\\d+)\\s*,\\s*(\\d+)\\s*(,\\s*([0-9]*\\.?[0-9]+)\\s*)?$/.exec( components ) ) {\n\n\t\t\t\t\t\t// rgb(255,0,0) rgba(255,0,0,0.5)\n\t\t\t\t\t\tthis.r = Math.min( 255, parseInt( color[ 1 ], 10 ) ) / 255;\n\t\t\t\t\t\tthis.g = Math.min( 255, parseInt( color[ 2 ], 10 ) ) / 255;\n\t\t\t\t\t\tthis.b = Math.min( 255, parseInt( color[ 3 ], 10 ) ) / 255;\n\n\t\t\t\t\t\thandleAlpha( color[ 5 ] );\n\n\t\t\t\t\t\treturn this;\n\n\t\t\t\t\t}\n\n\t\t\t\t\tif ( color = /^(\\d+)\\%\\s*,\\s*(\\d+)\\%\\s*,\\s*(\\d+)\\%\\s*(,\\s*([0-9]*\\.?[0-9]+)\\s*)?$/.exec( components ) ) {\n\n\t\t\t\t\t\t// rgb(100%,0%,0%) rgba(100%,0%,0%,0.5)\n\t\t\t\t\t\tthis.r = Math.min( 100, parseInt( color[ 1 ], 10 ) ) / 100;\n\t\t\t\t\t\tthis.g = Math.min( 100, parseInt( color[ 2 ], 10 ) ) / 100;\n\t\t\t\t\t\tthis.b = Math.min( 100, parseInt( color[ 3 ], 10 ) ) / 100;\n\n\t\t\t\t\t\thandleAlpha( color[ 5 ] );\n\n\t\t\t\t\t\treturn this;\n\n\t\t\t\t\t}\n\n\t\t\t\t\tbreak;\n\n\t\t\t\tcase 'hsl':\n\t\t\t\tcase 'hsla':\n\n\t\t\t\t\tif ( color = /^([0-9]*\\.?[0-9]+)\\s*,\\s*(\\d+)\\%\\s*,\\s*(\\d+)\\%\\s*(,\\s*([0-9]*\\.?[0-9]+)\\s*)?$/.exec( components ) ) {\n\n\t\t\t\t\t\t// hsl(120,50%,50%) hsla(120,50%,50%,0.5)\n\t\t\t\t\t\tvar h = parseFloat( color[ 1 ] ) / 360;\n\t\t\t\t\t\tvar s = parseInt( color[ 2 ], 10 ) / 100;\n\t\t\t\t\t\tvar l = parseInt( color[ 3 ], 10 ) / 100;\n\n\t\t\t\t\t\thandleAlpha( color[ 5 ] );\n\n\t\t\t\t\t\treturn this.setHSL( h, s, l );\n\n\t\t\t\t\t}\n\n\t\t\t\t\tbreak;\n\n\t\t\t}\n\n\t\t} else if ( m = /^\\#([A-Fa-f0-9]+)$/.exec( style ) ) {\n\n\t\t\t// hex color\n\n\t\t\tvar hex = m[ 1 ];\n\t\t\tvar size = hex.length;\n\n\t\t\tif ( size === 3 ) {\n\n\t\t\t\t// #ff0\n\t\t\t\tthis.r = parseInt( hex.charAt( 0 ) + hex.charAt( 0 ), 16 ) / 255;\n\t\t\t\tthis.g = parseInt( hex.charAt( 1 ) + hex.charAt( 1 ), 16 ) / 255;\n\t\t\t\tthis.b = parseInt( hex.charAt( 2 ) + hex.charAt( 2 ), 16 ) / 255;\n\n\t\t\t\treturn this;\n\n\t\t\t} else if ( size === 6 ) {\n\n\t\t\t\t// #ff0000\n\t\t\t\tthis.r = parseInt( hex.charAt( 0 ) + hex.charAt( 1 ), 16 ) / 255;\n\t\t\t\tthis.g = parseInt( hex.charAt( 2 ) + hex.charAt( 3 ), 16 ) / 255;\n\t\t\t\tthis.b = parseInt( hex.charAt( 4 ) + hex.charAt( 5 ), 16 ) / 255;\n\n\t\t\t\treturn this;\n\n\t\t\t}\n\n\t\t}\n\n\t\tif ( style && style.length > 0 ) {\n\n\t\t\t// color keywords\n\t\t\tvar hex = ColorKeywords[ style ];\n\n\t\t\tif ( hex !== undefined ) {\n\n\t\t\t\t// red\n\t\t\t\tthis.setHex( hex );\n\n\t\t\t} else {\n\n\t\t\t\t// unknown color\n\t\t\t\tconsole.warn( 'THREE.Color: Unknown color ' + style );\n\n\t\t\t}\n\n\t\t}\n\n\t\treturn this;\n\n\t},\n\n\tclone: function () {\n\n\t\treturn new this.constructor( this.r, this.g, this.b );\n\n\t},\n\n\tcopy: function ( color ) {\n\n\t\tthis.r = color.r;\n\t\tthis.g = color.g;\n\t\tthis.b = color.b;\n\n\t\treturn this;\n\n\t},\n\n\tcopyGammaToLinear: function ( color, gammaFactor ) {\n\n\t\tif ( gammaFactor === undefined ) gammaFactor = 2.0;\n\n\t\tthis.r = Math.pow( color.r, gammaFactor );\n\t\tthis.g = Math.pow( color.g, gammaFactor );\n\t\tthis.b = Math.pow( color.b, gammaFactor );\n\n\t\treturn this;\n\n\t},\n\n\tcopyLinearToGamma: function ( color, gammaFactor ) {\n\n\t\tif ( gammaFactor === undefined ) gammaFactor = 2.0;\n\n\t\tvar safeInverse = ( gammaFactor > 0 ) ? ( 1.0 / gammaFactor ) : 1.0;\n\n\t\tthis.r = Math.pow( color.r, safeInverse );\n\t\tthis.g = Math.pow( color.g, safeInverse );\n\t\tthis.b = Math.pow( color.b, safeInverse );\n\n\t\treturn this;\n\n\t},\n\n\tconvertGammaToLinear: function () {\n\n\t\tvar r = this.r, g = this.g, b = this.b;\n\n\t\tthis.r = r * r;\n\t\tthis.g = g * g;\n\t\tthis.b = b * b;\n\n\t\treturn this;\n\n\t},\n\n\tconvertLinearToGamma: function () {\n\n\t\tthis.r = Math.sqrt( this.r );\n\t\tthis.g = Math.sqrt( this.g );\n\t\tthis.b = Math.sqrt( this.b );\n\n\t\treturn this;\n\n\t},\n\n\tgetHex: function () {\n\n\t\treturn ( this.r * 255 ) << 16 ^ ( this.g * 255 ) << 8 ^ ( this.b * 255 ) << 0;\n\n\t},\n\n\tgetHexString: function () {\n\n\t\treturn ( '000000' + this.getHex().toString( 16 ) ).slice( - 6 );\n\n\t},\n\n\tgetHSL: function ( optionalTarget ) {\n\n\t\t// h,s,l ranges are in 0.0 - 1.0\n\n\t\tvar hsl = optionalTarget || { h: 0, s: 0, l: 0 };\n\n\t\tvar r = this.r, g = this.g, b = this.b;\n\n\t\tvar max = Math.max( r, g, b );\n\t\tvar min = Math.min( r, g, b );\n\n\t\tvar hue, saturation;\n\t\tvar lightness = ( min + max ) / 2.0;\n\n\t\tif ( min === max ) {\n\n\t\t\thue = 0;\n\t\t\tsaturation = 0;\n\n\t\t} else {\n\n\t\t\tvar delta = max - min;\n\n\t\t\tsaturation = lightness <= 0.5 ? delta / ( max + min ) : delta / ( 2 - max - min );\n\n\t\t\tswitch ( max ) {\n\n\t\t\t\tcase r: hue = ( g - b ) / delta + ( g < b ? 6 : 0 ); break;\n\t\t\t\tcase g: hue = ( b - r ) / delta + 2; break;\n\t\t\t\tcase b: hue = ( r - g ) / delta + 4; break;\n\n\t\t\t}\n\n\t\t\thue /= 6;\n\n\t\t}\n\n\t\thsl.h = hue;\n\t\thsl.s = saturation;\n\t\thsl.l = lightness;\n\n\t\treturn hsl;\n\n\t},\n\n\tgetStyle: function () {\n\n\t\treturn 'rgb(' + ( ( this.r * 255 ) | 0 ) + ',' + ( ( this.g * 255 ) | 0 ) + ',' + ( ( this.b * 255 ) | 0 ) + ')';\n\n\t},\n\n\toffsetHSL: function ( h, s, l ) {\n\n\t\tvar hsl = this.getHSL();\n\n\t\thsl.h += h; hsl.s += s; hsl.l += l;\n\n\t\tthis.setHSL( hsl.h, hsl.s, hsl.l );\n\n\t\treturn this;\n\n\t},\n\n\tadd: function ( color ) {\n\n\t\tthis.r += color.r;\n\t\tthis.g += color.g;\n\t\tthis.b += color.b;\n\n\t\treturn this;\n\n\t},\n\n\taddColors: function ( color1, color2 ) {\n\n\t\tthis.r = color1.r + color2.r;\n\t\tthis.g = color1.g + color2.g;\n\t\tthis.b = color1.b + color2.b;\n\n\t\treturn this;\n\n\t},\n\n\taddScalar: function ( s ) {\n\n\t\tthis.r += s;\n\t\tthis.g += s;\n\t\tthis.b += s;\n\n\t\treturn this;\n\n\t},\n\n\tsub: function( color ) {\n\n\t\tthis.r = Math.max( 0, this.r - color.r );\n\t\tthis.g = Math.max( 0, this.g - color.g );\n\t\tthis.b = Math.max( 0, this.b - color.b );\n\n\t\treturn this;\n\n\t},\n\n\tmultiply: function ( color ) {\n\n\t\tthis.r *= color.r;\n\t\tthis.g *= color.g;\n\t\tthis.b *= color.b;\n\n\t\treturn this;\n\n\t},\n\n\tmultiplyScalar: function ( s ) {\n\n\t\tthis.r *= s;\n\t\tthis.g *= s;\n\t\tthis.b *= s;\n\n\t\treturn this;\n\n\t},\n\n\tlerp: function ( color, alpha ) {\n\n\t\tthis.r += ( color.r - this.r ) * alpha;\n\t\tthis.g += ( color.g - this.g ) * alpha;\n\t\tthis.b += ( color.b - this.b ) * alpha;\n\n\t\treturn this;\n\n\t},\n\n\tequals: function ( c ) {\n\n\t\treturn ( c.r === this.r ) && ( c.g === this.g ) && ( c.b === this.b );\n\n\t},\n\n\tfromArray: function ( array, offset ) {\n\n\t\tif ( offset === undefined ) offset = 0;\n\n\t\tthis.r = array[ offset ];\n\t\tthis.g = array[ offset + 1 ];\n\t\tthis.b = array[ offset + 2 ];\n\n\t\treturn this;\n\n\t},\n\n\ttoArray: function ( array, offset ) {\n\n\t\tif ( array === undefined ) array = [];\n\t\tif ( offset === undefined ) offset = 0;\n\n\t\tarray[ offset ] = this.r;\n\t\tarray[ offset + 1 ] = this.g;\n\t\tarray[ offset + 2 ] = this.b;\n\n\t\treturn array;\n\n\t},\n\n\ttoJSON: function () {\n\n\t\treturn this.getHex();\n\n\t}\n\n};\n\nvar ColorKeywords = { 'aliceblue': 0xF0F8FF, 'antiquewhite': 0xFAEBD7, 'aqua': 0x00FFFF, 'aquamarine': 0x7FFFD4, 'azure': 0xF0FFFF,\n'beige': 0xF5F5DC, 'bisque': 0xFFE4C4, 'black': 0x000000, 'blanchedalmond': 0xFFEBCD, 'blue': 0x0000FF, 'blueviolet': 0x8A2BE2,\n'brown': 0xA52A2A, 'burlywood': 0xDEB887, 'cadetblue': 0x5F9EA0, 'chartreuse': 0x7FFF00, 'chocolate': 0xD2691E, 'coral': 0xFF7F50,\n'cornflowerblue': 0x6495ED, 'cornsilk': 0xFFF8DC, 'crimson': 0xDC143C, 'cyan': 0x00FFFF, 'darkblue': 0x00008B, 'darkcyan': 0x008B8B,\n'darkgoldenrod': 0xB8860B, 'darkgray': 0xA9A9A9, 'darkgreen': 0x006400, 'darkgrey': 0xA9A9A9, 'darkkhaki': 0xBDB76B, 'darkmagenta': 0x8B008B,\n'darkolivegreen': 0x556B2F, 'darkorange': 0xFF8C00, 'darkorchid': 0x9932CC, 'darkred': 0x8B0000, 'darksalmon': 0xE9967A, 'darkseagreen': 0x8FBC8F,\n'darkslateblue': 0x483D8B, 'darkslategray': 0x2F4F4F, 'darkslategrey': 0x2F4F4F, 'darkturquoise': 0x00CED1, 'darkviolet': 0x9400D3,\n'deeppink': 0xFF1493, 'deepskyblue': 0x00BFFF, 'dimgray': 0x696969, 'dimgrey': 0x696969, 'dodgerblue': 0x1E90FF, 'firebrick': 0xB22222,\n'floralwhite': 0xFFFAF0, 'forestgreen': 0x228B22, 'fuchsia': 0xFF00FF, 'gainsboro': 0xDCDCDC, 'ghostwhite': 0xF8F8FF, 'gold': 0xFFD700,\n'goldenrod': 0xDAA520, 'gray': 0x808080, 'green': 0x008000, 'greenyellow': 0xADFF2F, 'grey': 0x808080, 'honeydew': 0xF0FFF0, 'hotpink': 0xFF69B4,\n'indianred': 0xCD5C5C, 'indigo': 0x4B0082, 'ivory': 0xFFFFF0, 'khaki': 0xF0E68C, 'lavender': 0xE6E6FA, 'lavenderblush': 0xFFF0F5, 'lawngreen': 0x7CFC00,\n'lemonchiffon': 0xFFFACD, 'lightblue': 0xADD8E6, 'lightcoral': 0xF08080, 'lightcyan': 0xE0FFFF, 'lightgoldenrodyellow': 0xFAFAD2, 'lightgray': 0xD3D3D3,\n'lightgreen': 0x90EE90, 'lightgrey': 0xD3D3D3, 'lightpink': 0xFFB6C1, 'lightsalmon': 0xFFA07A, 'lightseagreen': 0x20B2AA, 'lightskyblue': 0x87CEFA,\n'lightslategray': 0x778899, 'lightslategrey': 0x778899, 'lightsteelblue': 0xB0C4DE, 'lightyellow': 0xFFFFE0, 'lime': 0x00FF00, 'limegreen': 0x32CD32,\n'linen': 0xFAF0E6, 'magenta': 0xFF00FF, 'maroon': 0x800000, 'mediumaquamarine': 0x66CDAA, 'mediumblue': 0x0000CD, 'mediumorchid': 0xBA55D3,\n'mediumpurple': 0x9370DB, 'mediumseagreen': 0x3CB371, 'mediumslateblue': 0x7B68EE, 'mediumspringgreen': 0x00FA9A, 'mediumturquoise': 0x48D1CC,\n'mediumvioletred': 0xC71585, 'midnightblue': 0x191970, 'mintcream': 0xF5FFFA, 'mistyrose': 0xFFE4E1, 'moccasin': 0xFFE4B5, 'navajowhite': 0xFFDEAD,\n'navy': 0x000080, 'oldlace': 0xFDF5E6, 'olive': 0x808000, 'olivedrab': 0x6B8E23, 'orange': 0xFFA500, 'orangered': 0xFF4500, 'orchid': 0xDA70D6,\n'palegoldenrod': 0xEEE8AA, 'palegreen': 0x98FB98, 'paleturquoise': 0xAFEEEE, 'palevioletred': 0xDB7093, 'papayawhip': 0xFFEFD5, 'peachpuff': 0xFFDAB9,\n'peru': 0xCD853F, 'pink': 0xFFC0CB, 'plum': 0xDDA0DD, 'powderblue': 0xB0E0E6, 'purple': 0x800080, 'red': 0xFF0000, 'rosybrown': 0xBC8F8F,\n'royalblue': 0x4169E1, 'saddlebrown': 0x8B4513, 'salmon': 0xFA8072, 'sandybrown': 0xF4A460, 'seagreen': 0x2E8B57, 'seashell': 0xFFF5EE,\n'sienna': 0xA0522D, 'silver': 0xC0C0C0, 'skyblue': 0x87CEEB, 'slateblue': 0x6A5ACD, 'slategray': 0x708090, 'slategrey': 0x708090, 'snow': 0xFFFAFA,\n'springgreen': 0x00FF7F, 'steelblue': 0x4682B4, 'tan': 0xD2B48C, 'teal': 0x008080, 'thistle': 0xD8BFD8, 'tomato': 0xFF6347, 'turquoise': 0x40E0D0,\n'violet': 0xEE82EE, 'wheat': 0xF5DEB3, 'white': 0xFFFFFF, 'whitesmoke': 0xF5F5F5, 'yellow': 0xFFFF00, 'yellowgreen': 0x9ACD32 };\n\n\nexport { ColorKeywords, Color };\n","import { Vector4 } from '../../math/Vector4';\nimport { Color } from '../../math/Color';\nimport { Vector2 } from '../../math/Vector2';\n\n/**\n * Uniforms library for shared webgl shaders\n */\n\nvar UniformsLib = {\n\n\tcommon: {\n\n\t\tdiffuse: { value: new Color( 0xeeeeee ) },\n\t\topacity: { value: 1.0 },\n\n\t\tmap: { value: null },\n\t\toffsetRepeat: { value: new Vector4( 0, 0, 1, 1 ) },\n\n\t\tspecularMap: { value: null },\n\t\talphaMap: { value: null },\n\n\t\tenvMap: { value: null },\n\t\tflipEnvMap: { value: - 1 },\n\t\treflectivity: { value: 1.0 },\n\t\trefractionRatio: { value: 0.98 }\n\n\t},\n\n\taomap: {\n\n\t\taoMap: { value: null },\n\t\taoMapIntensity: { value: 1 }\n\n\t},\n\n\tlightmap: {\n\n\t\tlightMap: { value: null },\n\t\tlightMapIntensity: { value: 1 }\n\n\t},\n\n\temissivemap: {\n\n\t\temissiveMap: { value: null }\n\n\t},\n\n\tbumpmap: {\n\n\t\tbumpMap: { value: null },\n\t\tbumpScale: { value: 1 }\n\n\t},\n\n\tnormalmap: {\n\n\t\tnormalMap: { value: null },\n\t\tnormalScale: { value: new Vector2( 1, 1 ) }\n\n\t},\n\n\tdisplacementmap: {\n\n\t\tdisplacementMap: { value: null },\n\t\tdisplacementScale: { value: 1 },\n\t\tdisplacementBias: { value: 0 }\n\n\t},\n\n\troughnessmap: {\n\n\t\troughnessMap: { value: null }\n\n\t},\n\n\tmetalnessmap: {\n\n\t\tmetalnessMap: { value: null }\n\n\t},\n\n\tfog: {\n\n\t\tfogDensity: { value: 0.00025 },\n\t\tfogNear: { value: 1 },\n\t\tfogFar: { value: 2000 },\n\t\tfogColor: { value: new Color( 0xffffff ) }\n\n\t},\n\n\tlights: {\n\n\t\tambientLightColor: { value: [] },\n\n\t\tdirectionalLights: { value: [], properties: {\n\t\t\tdirection: {},\n\t\t\tcolor: {},\n\n\t\t\tshadow: {},\n\t\t\tshadowBias: {},\n\t\t\tshadowRadius: {},\n\t\t\tshadowMapSize: {}\n\t\t} },\n\n\t\tdirectionalShadowMap: { value: [] },\n\t\tdirectionalShadowMatrix: { value: [] },\n\n\t\tspotLights: { value: [], properties: {\n\t\t\tcolor: {},\n\t\t\tposition: {},\n\t\t\tdirection: {},\n\t\t\tdistance: {},\n\t\t\tconeCos: {},\n\t\t\tpenumbraCos: {},\n\t\t\tdecay: {},\n\n\t\t\tshadow: {},\n\t\t\tshadowBias: {},\n\t\t\tshadowRadius: {},\n\t\t\tshadowMapSize: {}\n\t\t} },\n\n\t\tspotShadowMap: { value: [] },\n\t\tspotShadowMatrix: { value: [] },\n\n\t\tpointLights: { value: [], properties: {\n\t\t\tcolor: {},\n\t\t\tposition: {},\n\t\t\tdecay: {},\n\t\t\tdistance: {},\n\n\t\t\tshadow: {},\n\t\t\tshadowBias: {},\n\t\t\tshadowRadius: {},\n\t\t\tshadowMapSize: {}\n\t\t} },\n\n\t\tpointShadowMap: { value: [] },\n\t\tpointShadowMatrix: { value: [] },\n\n\t\themisphereLights: { value: [], properties: {\n\t\t\tdirection: {},\n\t\t\tskyColor: {},\n\t\t\tgroundColor: {}\n\t\t} }\n\n\t},\n\n\tpoints: {\n\n\t\tdiffuse: { value: new Color( 0xeeeeee ) },\n\t\topacity: { value: 1.0 },\n\t\tsize: { value: 1.0 },\n\t\tscale: { value: 1.0 },\n\t\tmap: { value: null },\n\t\toffsetRepeat: { value: new Vector4( 0, 0, 1, 1 ) }\n\n\t}\n\n};\n\n\nexport { UniformsLib };\n","import { ShaderChunk } from './ShaderChunk';\nimport { UniformsUtils } from './UniformsUtils';\nimport { Vector3 } from '../../math/Vector3';\nimport { UniformsLib } from './UniformsLib';\nimport { Color } from '../../math/Color';\n\n/**\n * @author alteredq / http://alteredqualia.com/\n * @author mrdoob / http://mrdoob.com/\n * @author mikael emtinger / http://gomo.se/\n */\n\nvar ShaderLib = {\n\n\tbasic: {\n\n\t\tuniforms: UniformsUtils.merge( [\n\n\t\t\tUniformsLib.common,\n\t\t\tUniformsLib.aomap,\n\t\t\tUniformsLib.fog\n\n\t\t] ),\n\n\t\tvertexShader: ShaderChunk.meshbasic_vert,\n\t\tfragmentShader: ShaderChunk.meshbasic_frag\n\n\t},\n\n\tlambert: {\n\n\t\tuniforms: UniformsUtils.merge( [\n\n\t\t\tUniformsLib.common,\n\t\t\tUniformsLib.aomap,\n\t\t\tUniformsLib.lightmap,\n\t\t\tUniformsLib.emissivemap,\n\t\t\tUniformsLib.fog,\n\t\t\tUniformsLib.lights,\n\n\t\t\t{\n\t\t\t\temissive : { value: new Color( 0x000000 ) }\n\t\t\t}\n\n\t\t] ),\n\n\t\tvertexShader: ShaderChunk.meshlambert_vert,\n\t\tfragmentShader: ShaderChunk.meshlambert_frag\n\n\t},\n\n\tphong: {\n\n\t\tuniforms: UniformsUtils.merge( [\n\n\t\t\tUniformsLib.common,\n\t\t\tUniformsLib.aomap,\n\t\t\tUniformsLib.lightmap,\n\t\t\tUniformsLib.emissivemap,\n\t\t\tUniformsLib.bumpmap,\n\t\t\tUniformsLib.normalmap,\n\t\t\tUniformsLib.displacementmap,\n\t\t\tUniformsLib.fog,\n\t\t\tUniformsLib.lights,\n\n\t\t\t{\n\t\t\t\temissive : { value: new Color( 0x000000 ) },\n\t\t\t\tspecular : { value: new Color( 0x111111 ) },\n\t\t\t\tshininess: { value: 30 }\n\t\t\t}\n\n\t\t] ),\n\n\t\tvertexShader: ShaderChunk.meshphong_vert,\n\t\tfragmentShader: ShaderChunk.meshphong_frag\n\n\t},\n\n\tstandard: {\n\n\t\tuniforms: UniformsUtils.merge( [\n\n\t\t\tUniformsLib.common,\n\t\t\tUniformsLib.aomap,\n\t\t\tUniformsLib.lightmap,\n\t\t\tUniformsLib.emissivemap,\n\t\t\tUniformsLib.bumpmap,\n\t\t\tUniformsLib.normalmap,\n\t\t\tUniformsLib.displacementmap,\n\t\t\tUniformsLib.roughnessmap,\n\t\t\tUniformsLib.metalnessmap,\n\t\t\tUniformsLib.fog,\n\t\t\tUniformsLib.lights,\n\n\t\t\t{\n\t\t\t\temissive : { value: new Color( 0x000000 ) },\n\t\t\t\troughness: { value: 0.5 },\n\t\t\t\tmetalness: { value: 0 },\n\t\t\t\tenvMapIntensity : { value: 1 }, // temporary\n\t\t\t}\n\n\t\t] ),\n\n\t\tvertexShader: ShaderChunk.meshphysical_vert,\n\t\tfragmentShader: ShaderChunk.meshphysical_frag\n\n\t},\n\n\tpoints: {\n\n\t\tuniforms: UniformsUtils.merge( [\n\n\t\t\tUniformsLib.points,\n\t\t\tUniformsLib.fog\n\n\t\t] ),\n\n\t\tvertexShader: ShaderChunk.points_vert,\n\t\tfragmentShader: ShaderChunk.points_frag\n\n\t},\n\n\tdashed: {\n\n\t\tuniforms: UniformsUtils.merge( [\n\n\t\t\tUniformsLib.common,\n\t\t\tUniformsLib.fog,\n\n\t\t\t{\n\t\t\t\tscale : { value: 1 },\n\t\t\t\tdashSize : { value: 1 },\n\t\t\t\ttotalSize: { value: 2 }\n\t\t\t}\n\n\t\t] ),\n\n\t\tvertexShader: ShaderChunk.linedashed_vert,\n\t\tfragmentShader: ShaderChunk.linedashed_frag\n\n\t},\n\n\tdepth: {\n\n\t\tuniforms: UniformsUtils.merge( [\n\n\t\t\tUniformsLib.common,\n\t\t\tUniformsLib.displacementmap\n\n\t\t] ),\n\n\t\tvertexShader: ShaderChunk.depth_vert,\n\t\tfragmentShader: ShaderChunk.depth_frag\n\n\t},\n\n\tnormal: {\n\n\t\tuniforms: {\n\n\t\t\topacity : { value: 1.0 }\n\n\t\t},\n\n\t\tvertexShader: ShaderChunk.normal_vert,\n\t\tfragmentShader: ShaderChunk.normal_frag\n\n\t},\n\n\t/* -------------------------------------------------------------------------\n\t//\tCube map shader\n\t ------------------------------------------------------------------------- */\n\n\tcube: {\n\n\t\tuniforms: {\n\t\t\ttCube: { value: null },\n\t\t\ttFlip: { value: - 1 },\n\t\t\topacity: { value: 1.0 }\n\t\t},\n\n\t\tvertexShader: ShaderChunk.cube_vert,\n\t\tfragmentShader: ShaderChunk.cube_frag\n\n\t},\n\n\t/* -------------------------------------------------------------------------\n\t//\tCube map shader\n\t ------------------------------------------------------------------------- */\n\n\tequirect: {\n\n\t\tuniforms: {\n\t\t\ttEquirect: { value: null },\n\t\t\ttFlip: { value: - 1 }\n\t\t},\n\n\t\tvertexShader: ShaderChunk.equirect_vert,\n\t\tfragmentShader: ShaderChunk.equirect_frag\n\n\t},\n\n\tdistanceRGBA: {\n\n\t\tuniforms: {\n\n\t\t\tlightPos: { value: new Vector3() }\n\n\t\t},\n\n\t\tvertexShader: ShaderChunk.distanceRGBA_vert,\n\t\tfragmentShader: ShaderChunk.distanceRGBA_frag\n\n\t}\n\n};\n\nShaderLib.physical = {\n\n\tuniforms: UniformsUtils.merge( [\n\n\t\tShaderLib.standard.uniforms,\n\n\t\t{\n\t\t\tclearCoat: { value: 0 },\n\t\t\tclearCoatRoughness: { value: 0 }\n\t\t}\n\n\t] ),\n\n\tvertexShader: ShaderChunk.meshphysical_vert,\n\tfragmentShader: ShaderChunk.meshphysical_frag\n\n};\n\n\nexport { ShaderLib };\n","import { Vector2 } from './Vector2';\n\n/**\n * @author bhouston / http://clara.io\n */\n\nfunction Box2( min, max ) {\n\n\tthis.min = ( min !== undefined ) ? min : new Vector2( + Infinity, + Infinity );\n\tthis.max = ( max !== undefined ) ? max : new Vector2( - Infinity, - Infinity );\n\n}\n\nBox2.prototype = {\n\n\tconstructor: Box2,\n\n\tset: function ( min, max ) {\n\n\t\tthis.min.copy( min );\n\t\tthis.max.copy( max );\n\n\t\treturn this;\n\n\t},\n\n\tsetFromPoints: function ( points ) {\n\n\t\tthis.makeEmpty();\n\n\t\tfor ( var i = 0, il = points.length; i < il; i ++ ) {\n\n\t\t\tthis.expandByPoint( points[ i ] );\n\n\t\t}\n\n\t\treturn this;\n\n\t},\n\n\tsetFromCenterAndSize: function () {\n\n\t\tvar v1 = new Vector2();\n\n\t\treturn function setFromCenterAndSize( center, size ) {\n\n\t\t\tvar halfSize = v1.copy( size ).multiplyScalar( 0.5 );\n\t\t\tthis.min.copy( center ).sub( halfSize );\n\t\t\tthis.max.copy( center ).add( halfSize );\n\n\t\t\treturn this;\n\n\t\t};\n\n\t}(),\n\n\tclone: function () {\n\n\t\treturn new this.constructor().copy( this );\n\n\t},\n\n\tcopy: function ( box ) {\n\n\t\tthis.min.copy( box.min );\n\t\tthis.max.copy( box.max );\n\n\t\treturn this;\n\n\t},\n\n\tmakeEmpty: function () {\n\n\t\tthis.min.x = this.min.y = + Infinity;\n\t\tthis.max.x = this.max.y = - Infinity;\n\n\t\treturn this;\n\n\t},\n\n\tisEmpty: function () {\n\n\t\t// this is a more robust check for empty than ( volume <= 0 ) because volume can get positive with two negative axes\n\n\t\treturn ( this.max.x < this.min.x ) || ( this.max.y < this.min.y );\n\n\t},\n\n\tgetCenter: function ( optionalTarget ) {\n\n\t\tvar result = optionalTarget || new Vector2();\n\t\treturn this.isEmpty() ? result.set( 0, 0 ) : result.addVectors( this.min, this.max ).multiplyScalar( 0.5 );\n\n\t},\n\n\tgetSize: function ( optionalTarget ) {\n\n\t\tvar result = optionalTarget || new Vector2();\n\t\treturn this.isEmpty() ? result.set( 0, 0 ) : result.subVectors( this.max, this.min );\n\n\t},\n\n\texpandByPoint: function ( point ) {\n\n\t\tthis.min.min( point );\n\t\tthis.max.max( point );\n\n\t\treturn this;\n\n\t},\n\n\texpandByVector: function ( vector ) {\n\n\t\tthis.min.sub( vector );\n\t\tthis.max.add( vector );\n\n\t\treturn this;\n\n\t},\n\n\texpandByScalar: function ( scalar ) {\n\n\t\tthis.min.addScalar( - scalar );\n\t\tthis.max.addScalar( scalar );\n\n\t\treturn this;\n\n\t},\n\n\tcontainsPoint: function ( point ) {\n\n\t\tif ( point.x < this.min.x || point.x > this.max.x ||\n\t\t point.y < this.min.y || point.y > this.max.y ) {\n\n\t\t\treturn false;\n\n\t\t}\n\n\t\treturn true;\n\n\t},\n\n\tcontainsBox: function ( box ) {\n\n\t\tif ( ( this.min.x <= box.min.x ) && ( box.max.x <= this.max.x ) &&\n\t\t ( this.min.y <= box.min.y ) && ( box.max.y <= this.max.y ) ) {\n\n\t\t\treturn true;\n\n\t\t}\n\n\t\treturn false;\n\n\t},\n\n\tgetParameter: function ( point, optionalTarget ) {\n\n\t\t// This can potentially have a divide by zero if the box\n\t\t// has a size dimension of 0.\n\n\t\tvar result = optionalTarget || new Vector2();\n\n\t\treturn result.set(\n\t\t\t( point.x - this.min.x ) / ( this.max.x - this.min.x ),\n\t\t\t( point.y - this.min.y ) / ( this.max.y - this.min.y )\n\t\t);\n\n\t},\n\n\tintersectsBox: function ( box ) {\n\n\t\t// using 6 splitting planes to rule out intersections.\n\n\t\tif ( box.max.x < this.min.x || box.min.x > this.max.x ||\n\t\t box.max.y < this.min.y || box.min.y > this.max.y ) {\n\n\t\t\treturn false;\n\n\t\t}\n\n\t\treturn true;\n\n\t},\n\n\tclampPoint: function ( point, optionalTarget ) {\n\n\t\tvar result = optionalTarget || new Vector2();\n\t\treturn result.copy( point ).clamp( this.min, this.max );\n\n\t},\n\n\tdistanceToPoint: function () {\n\n\t\tvar v1 = new Vector2();\n\n\t\treturn function distanceToPoint( point ) {\n\n\t\t\tvar clampedPoint = v1.copy( point ).clamp( this.min, this.max );\n\t\t\treturn clampedPoint.sub( point ).length();\n\n\t\t};\n\n\t}(),\n\n\tintersect: function ( box ) {\n\n\t\tthis.min.max( box.min );\n\t\tthis.max.min( box.max );\n\n\t\treturn this;\n\n\t},\n\n\tunion: function ( box ) {\n\n\t\tthis.min.min( box.min );\n\t\tthis.max.max( box.max );\n\n\t\treturn this;\n\n\t},\n\n\ttranslate: function ( offset ) {\n\n\t\tthis.min.add( offset );\n\t\tthis.max.add( offset );\n\n\t\treturn this;\n\n\t},\n\n\tequals: function ( box ) {\n\n\t\treturn box.min.equals( this.min ) && box.max.equals( this.max );\n\n\t}\n\n};\n\n\nexport { Box2 };\n","import { Box2 } from '../../../math/Box2';\nimport { Vector2 } from '../../../math/Vector2';\nimport { Vector3 } from '../../../math/Vector3';\n\n/**\n * @author mikael emtinger / http://gomo.se/\n * @author alteredq / http://alteredqualia.com/\n */\n\nfunction LensFlarePlugin( renderer, flares ) {\n\n\tvar gl = renderer.context;\n\tvar state = renderer.state;\n\n\tvar vertexBuffer, elementBuffer;\n\tvar shader, program, attributes, uniforms;\n\n\tvar tempTexture, occlusionTexture;\n\n\tfunction init() {\n\n\t\tvar vertices = new Float32Array( [\n\t\t\t- 1, - 1, 0, 0,\n\t\t\t 1, - 1, 1, 0,\n\t\t\t 1, 1, 1, 1,\n\t\t\t- 1, 1, 0, 1\n\t\t] );\n\n\t\tvar faces = new Uint16Array( [\n\t\t\t0, 1, 2,\n\t\t\t0, 2, 3\n\t\t] );\n\n\t\t// buffers\n\n\t\tvertexBuffer = gl.createBuffer();\n\t\telementBuffer = gl.createBuffer();\n\n\t\tgl.bindBuffer( gl.ARRAY_BUFFER, vertexBuffer );\n\t\tgl.bufferData( gl.ARRAY_BUFFER, vertices, gl.STATIC_DRAW );\n\n\t\tgl.bindBuffer( gl.ELEMENT_ARRAY_BUFFER, elementBuffer );\n\t\tgl.bufferData( gl.ELEMENT_ARRAY_BUFFER, faces, gl.STATIC_DRAW );\n\n\t\t// textures\n\n\t\ttempTexture = gl.createTexture();\n\t\tocclusionTexture = gl.createTexture();\n\n\t\tstate.bindTexture( gl.TEXTURE_2D, tempTexture );\n\t\tgl.texImage2D( gl.TEXTURE_2D, 0, gl.RGB, 16, 16, 0, gl.RGB, gl.UNSIGNED_BYTE, null );\n\t\tgl.texParameteri( gl.TEXTURE_2D, gl.TEXTURE_WRAP_S, gl.CLAMP_TO_EDGE );\n\t\tgl.texParameteri( gl.TEXTURE_2D, gl.TEXTURE_WRAP_T, gl.CLAMP_TO_EDGE );\n\t\tgl.texParameteri( gl.TEXTURE_2D, gl.TEXTURE_MAG_FILTER, gl.NEAREST );\n\t\tgl.texParameteri( gl.TEXTURE_2D, gl.TEXTURE_MIN_FILTER, gl.NEAREST );\n\n\t\tstate.bindTexture( gl.TEXTURE_2D, occlusionTexture );\n\t\tgl.texImage2D( gl.TEXTURE_2D, 0, gl.RGBA, 16, 16, 0, gl.RGBA, gl.UNSIGNED_BYTE, null );\n\t\tgl.texParameteri( gl.TEXTURE_2D, gl.TEXTURE_WRAP_S, gl.CLAMP_TO_EDGE );\n\t\tgl.texParameteri( gl.TEXTURE_2D, gl.TEXTURE_WRAP_T, gl.CLAMP_TO_EDGE );\n\t\tgl.texParameteri( gl.TEXTURE_2D, gl.TEXTURE_MAG_FILTER, gl.NEAREST );\n\t\tgl.texParameteri( gl.TEXTURE_2D, gl.TEXTURE_MIN_FILTER, gl.NEAREST );\n\n\t\tshader = {\n\n\t\t\tvertexShader: [\n\n\t\t\t\t\"uniform lowp int renderType;\",\n\n\t\t\t\t\"uniform vec3 screenPosition;\",\n\t\t\t\t\"uniform vec2 scale;\",\n\t\t\t\t\"uniform float rotation;\",\n\n\t\t\t\t\"uniform sampler2D occlusionMap;\",\n\n\t\t\t\t\"attribute vec2 position;\",\n\t\t\t\t\"attribute vec2 uv;\",\n\n\t\t\t\t\"varying vec2 vUV;\",\n\t\t\t\t\"varying float vVisibility;\",\n\n\t\t\t\t\"void main() {\",\n\n\t\t\t\t\t\"vUV = uv;\",\n\n\t\t\t\t\t\"vec2 pos = position;\",\n\n\t\t\t\t\t\"if ( renderType == 2 ) {\",\n\n\t\t\t\t\t\t\"vec4 visibility = texture2D( occlusionMap, vec2( 0.1, 0.1 ) );\",\n\t\t\t\t\t\t\"visibility += texture2D( occlusionMap, vec2( 0.5, 0.1 ) );\",\n\t\t\t\t\t\t\"visibility += texture2D( occlusionMap, vec2( 0.9, 0.1 ) );\",\n\t\t\t\t\t\t\"visibility += texture2D( occlusionMap, vec2( 0.9, 0.5 ) );\",\n\t\t\t\t\t\t\"visibility += texture2D( occlusionMap, vec2( 0.9, 0.9 ) );\",\n\t\t\t\t\t\t\"visibility += texture2D( occlusionMap, vec2( 0.5, 0.9 ) );\",\n\t\t\t\t\t\t\"visibility += texture2D( occlusionMap, vec2( 0.1, 0.9 ) );\",\n\t\t\t\t\t\t\"visibility += texture2D( occlusionMap, vec2( 0.1, 0.5 ) );\",\n\t\t\t\t\t\t\"visibility += texture2D( occlusionMap, vec2( 0.5, 0.5 ) );\",\n\n\t\t\t\t\t\t\"vVisibility = visibility.r / 9.0;\",\n\t\t\t\t\t\t\"vVisibility *= 1.0 - visibility.g / 9.0;\",\n\t\t\t\t\t\t\"vVisibility *= visibility.b / 9.0;\",\n\t\t\t\t\t\t\"vVisibility *= 1.0 - visibility.a / 9.0;\",\n\n\t\t\t\t\t\t\"pos.x = cos( rotation ) * position.x - sin( rotation ) * position.y;\",\n\t\t\t\t\t\t\"pos.y = sin( rotation ) * position.x + cos( rotation ) * position.y;\",\n\n\t\t\t\t\t\"}\",\n\n\t\t\t\t\t\"gl_Position = vec4( ( pos * scale + screenPosition.xy ).xy, screenPosition.z, 1.0 );\",\n\n\t\t\t\t\"}\"\n\n\t\t\t].join( \"\\n\" ),\n\n\t\t\tfragmentShader: [\n\n\t\t\t\t\"uniform lowp int renderType;\",\n\n\t\t\t\t\"uniform sampler2D map;\",\n\t\t\t\t\"uniform float opacity;\",\n\t\t\t\t\"uniform vec3 color;\",\n\n\t\t\t\t\"varying vec2 vUV;\",\n\t\t\t\t\"varying float vVisibility;\",\n\n\t\t\t\t\"void main() {\",\n\n\t\t\t\t\t// pink square\n\n\t\t\t\t\t\"if ( renderType == 0 ) {\",\n\n\t\t\t\t\t\t\"gl_FragColor = vec4( 1.0, 0.0, 1.0, 0.0 );\",\n\n\t\t\t\t\t// restore\n\n\t\t\t\t\t\"} else if ( renderType == 1 ) {\",\n\n\t\t\t\t\t\t\"gl_FragColor = texture2D( map, vUV );\",\n\n\t\t\t\t\t// flare\n\n\t\t\t\t\t\"} else {\",\n\n\t\t\t\t\t\t\"vec4 texture = texture2D( map, vUV );\",\n\t\t\t\t\t\t\"texture.a *= opacity * vVisibility;\",\n\t\t\t\t\t\t\"gl_FragColor = texture;\",\n\t\t\t\t\t\t\"gl_FragColor.rgb *= color;\",\n\n\t\t\t\t\t\"}\",\n\n\t\t\t\t\"}\"\n\n\t\t\t].join( \"\\n\" )\n\n\t\t};\n\n\t\tprogram = createProgram( shader );\n\n\t\tattributes = {\n\t\t\tvertex: gl.getAttribLocation ( program, \"position\" ),\n\t\t\tuv: gl.getAttribLocation ( program, \"uv\" )\n\t\t};\n\n\t\tuniforms = {\n\t\t\trenderType: gl.getUniformLocation( program, \"renderType\" ),\n\t\t\tmap: gl.getUniformLocation( program, \"map\" ),\n\t\t\tocclusionMap: gl.getUniformLocation( program, \"occlusionMap\" ),\n\t\t\topacity: gl.getUniformLocation( program, \"opacity\" ),\n\t\t\tcolor: gl.getUniformLocation( program, \"color\" ),\n\t\t\tscale: gl.getUniformLocation( program, \"scale\" ),\n\t\t\trotation: gl.getUniformLocation( program, \"rotation\" ),\n\t\t\tscreenPosition: gl.getUniformLocation( program, \"screenPosition\" )\n\t\t};\n\n\t}\n\n\t/*\n\t * Render lens flares\n\t * Method: renders 16x16 0xff00ff-colored points scattered over the light source area,\n\t * reads these back and calculates occlusion.\n\t */\n\n\tthis.render = function ( scene, camera, viewport ) {\n\n\t\tif ( flares.length === 0 ) return;\n\n\t\tvar tempPosition = new Vector3();\n\n\t\tvar invAspect = viewport.w / viewport.z,\n\t\t\thalfViewportWidth = viewport.z * 0.5,\n\t\t\thalfViewportHeight = viewport.w * 0.5;\n\n\t\tvar size = 16 / viewport.w,\n\t\t\tscale = new Vector2( size * invAspect, size );\n\n\t\tvar screenPosition = new Vector3( 1, 1, 0 ),\n\t\t\tscreenPositionPixels = new Vector2( 1, 1 );\n\n\t\tvar validArea = new Box2();\n\n\t\tvalidArea.min.set( viewport.x, viewport.y );\n\t\tvalidArea.max.set( viewport.x + ( viewport.z - 16 ), viewport.y + ( viewport.w - 16 ) );\n\n\t\tif ( program === undefined ) {\n\n\t\t\tinit();\n\n\t\t}\n\n\t\tgl.useProgram( program );\n\n\t\tstate.initAttributes();\n\t\tstate.enableAttribute( attributes.vertex );\n\t\tstate.enableAttribute( attributes.uv );\n\t\tstate.disableUnusedAttributes();\n\n\t\t// loop through all lens flares to update their occlusion and positions\n\t\t// setup gl and common used attribs/uniforms\n\n\t\tgl.uniform1i( uniforms.occlusionMap, 0 );\n\t\tgl.uniform1i( uniforms.map, 1 );\n\n\t\tgl.bindBuffer( gl.ARRAY_BUFFER, vertexBuffer );\n\t\tgl.vertexAttribPointer( attributes.vertex, 2, gl.FLOAT, false, 2 * 8, 0 );\n\t\tgl.vertexAttribPointer( attributes.uv, 2, gl.FLOAT, false, 2 * 8, 8 );\n\n\t\tgl.bindBuffer( gl.ELEMENT_ARRAY_BUFFER, elementBuffer );\n\n\t\tstate.disable( gl.CULL_FACE );\n\t\tstate.setDepthWrite( false );\n\n\t\tfor ( var i = 0, l = flares.length; i < l; i ++ ) {\n\n\t\t\tsize = 16 / viewport.w;\n\t\t\tscale.set( size * invAspect, size );\n\n\t\t\t// calc object screen position\n\n\t\t\tvar flare = flares[ i ];\n\n\t\t\ttempPosition.set( flare.matrixWorld.elements[ 12 ], flare.matrixWorld.elements[ 13 ], flare.matrixWorld.elements[ 14 ] );\n\n\t\t\ttempPosition.applyMatrix4( camera.matrixWorldInverse );\n\t\t\ttempPosition.applyProjection( camera.projectionMatrix );\n\n\t\t\t// setup arrays for gl programs\n\n\t\t\tscreenPosition.copy( tempPosition );\n\n\t\t\t// horizontal and vertical coordinate of the lower left corner of the pixels to copy\n\n\t\t\tscreenPositionPixels.x = viewport.x + ( screenPosition.x * halfViewportWidth ) + halfViewportWidth - 8;\n\t\t\tscreenPositionPixels.y = viewport.y + ( screenPosition.y * halfViewportHeight ) + halfViewportHeight - 8;\n\n\t\t\t// screen cull\n\n\t\t\tif ( validArea.containsPoint( screenPositionPixels ) === true ) {\n\n\t\t\t\t// save current RGB to temp texture\n\n\t\t\t\tstate.activeTexture( gl.TEXTURE0 );\n\t\t\t\tstate.bindTexture( gl.TEXTURE_2D, null );\n\t\t\t\tstate.activeTexture( gl.TEXTURE1 );\n\t\t\t\tstate.bindTexture( gl.TEXTURE_2D, tempTexture );\n\t\t\t\tgl.copyTexImage2D( gl.TEXTURE_2D, 0, gl.RGB, screenPositionPixels.x, screenPositionPixels.y, 16, 16, 0 );\n\n\n\t\t\t\t// render pink quad\n\n\t\t\t\tgl.uniform1i( uniforms.renderType, 0 );\n\t\t\t\tgl.uniform2f( uniforms.scale, scale.x, scale.y );\n\t\t\t\tgl.uniform3f( uniforms.screenPosition, screenPosition.x, screenPosition.y, screenPosition.z );\n\n\t\t\t\tstate.disable( gl.BLEND );\n\t\t\t\tstate.enable( gl.DEPTH_TEST );\n\n\t\t\t\tgl.drawElements( gl.TRIANGLES, 6, gl.UNSIGNED_SHORT, 0 );\n\n\n\t\t\t\t// copy result to occlusionMap\n\n\t\t\t\tstate.activeTexture( gl.TEXTURE0 );\n\t\t\t\tstate.bindTexture( gl.TEXTURE_2D, occlusionTexture );\n\t\t\t\tgl.copyTexImage2D( gl.TEXTURE_2D, 0, gl.RGBA, screenPositionPixels.x, screenPositionPixels.y, 16, 16, 0 );\n\n\n\t\t\t\t// restore graphics\n\n\t\t\t\tgl.uniform1i( uniforms.renderType, 1 );\n\t\t\t\tstate.disable( gl.DEPTH_TEST );\n\n\t\t\t\tstate.activeTexture( gl.TEXTURE1 );\n\t\t\t\tstate.bindTexture( gl.TEXTURE_2D, tempTexture );\n\t\t\t\tgl.drawElements( gl.TRIANGLES, 6, gl.UNSIGNED_SHORT, 0 );\n\n\n\t\t\t\t// update object positions\n\n\t\t\t\tflare.positionScreen.copy( screenPosition );\n\n\t\t\t\tif ( flare.customUpdateCallback ) {\n\n\t\t\t\t\tflare.customUpdateCallback( flare );\n\n\t\t\t\t} else {\n\n\t\t\t\t\tflare.updateLensFlares();\n\n\t\t\t\t}\n\n\t\t\t\t// render flares\n\n\t\t\t\tgl.uniform1i( uniforms.renderType, 2 );\n\t\t\t\tstate.enable( gl.BLEND );\n\n\t\t\t\tfor ( var j = 0, jl = flare.lensFlares.length; j < jl; j ++ ) {\n\n\t\t\t\t\tvar sprite = flare.lensFlares[ j ];\n\n\t\t\t\t\tif ( sprite.opacity > 0.001 && sprite.scale > 0.001 ) {\n\n\t\t\t\t\t\tscreenPosition.x = sprite.x;\n\t\t\t\t\t\tscreenPosition.y = sprite.y;\n\t\t\t\t\t\tscreenPosition.z = sprite.z;\n\n\t\t\t\t\t\tsize = sprite.size * sprite.scale / viewport.w;\n\n\t\t\t\t\t\tscale.x = size * invAspect;\n\t\t\t\t\t\tscale.y = size;\n\n\t\t\t\t\t\tgl.uniform3f( uniforms.screenPosition, screenPosition.x, screenPosition.y, screenPosition.z );\n\t\t\t\t\t\tgl.uniform2f( uniforms.scale, scale.x, scale.y );\n\t\t\t\t\t\tgl.uniform1f( uniforms.rotation, sprite.rotation );\n\n\t\t\t\t\t\tgl.uniform1f( uniforms.opacity, sprite.opacity );\n\t\t\t\t\t\tgl.uniform3f( uniforms.color, sprite.color.r, sprite.color.g, sprite.color.b );\n\n\t\t\t\t\t\tstate.setBlending( sprite.blending, sprite.blendEquation, sprite.blendSrc, sprite.blendDst );\n\t\t\t\t\t\trenderer.setTexture2D( sprite.texture, 1 );\n\n\t\t\t\t\t\tgl.drawElements( gl.TRIANGLES, 6, gl.UNSIGNED_SHORT, 0 );\n\n\t\t\t\t\t}\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t}\n\n\t\t// restore gl\n\n\t\tstate.enable( gl.CULL_FACE );\n\t\tstate.enable( gl.DEPTH_TEST );\n\t\tstate.setDepthWrite( true );\n\n\t\trenderer.resetGLState();\n\n\t};\n\n\tfunction createProgram( shader ) {\n\n\t\tvar program = gl.createProgram();\n\n\t\tvar fragmentShader = gl.createShader( gl.FRAGMENT_SHADER );\n\t\tvar vertexShader = gl.createShader( gl.VERTEX_SHADER );\n\n\t\tvar prefix = \"precision \" + renderer.getPrecision() + \" float;\\n\";\n\n\t\tgl.shaderSource( fragmentShader, prefix + shader.fragmentShader );\n\t\tgl.shaderSource( vertexShader, prefix + shader.vertexShader );\n\n\t\tgl.compileShader( fragmentShader );\n\t\tgl.compileShader( vertexShader );\n\n\t\tgl.attachShader( program, fragmentShader );\n\t\tgl.attachShader( program, vertexShader );\n\n\t\tgl.linkProgram( program );\n\n\t\treturn program;\n\n\t}\n\n}\n\n\nexport { LensFlarePlugin };\n","import { Texture } from '../../../textures/Texture';\nimport { Vector3 } from '../../../math/Vector3';\nimport { Quaternion } from '../../../math/Quaternion';\n\n/**\n * @author mikael emtinger / http://gomo.se/\n * @author alteredq / http://alteredqualia.com/\n */\n\nfunction SpritePlugin( renderer, sprites ) {\n\n\tvar gl = renderer.context;\n\tvar state = renderer.state;\n\n\tvar vertexBuffer, elementBuffer;\n\tvar program, attributes, uniforms;\n\n\tvar texture;\n\n\t// decompose matrixWorld\n\n\tvar spritePosition = new Vector3();\n\tvar spriteRotation = new Quaternion();\n\tvar spriteScale = new Vector3();\n\n\tfunction init() {\n\n\t\tvar vertices = new Float32Array( [\n\t\t\t- 0.5, - 0.5, 0, 0,\n\t\t\t 0.5, - 0.5, 1, 0,\n\t\t\t 0.5, 0.5, 1, 1,\n\t\t\t- 0.5, 0.5, 0, 1\n\t\t] );\n\n\t\tvar faces = new Uint16Array( [\n\t\t\t0, 1, 2,\n\t\t\t0, 2, 3\n\t\t] );\n\n\t\tvertexBuffer = gl.createBuffer();\n\t\telementBuffer = gl.createBuffer();\n\n\t\tgl.bindBuffer( gl.ARRAY_BUFFER, vertexBuffer );\n\t\tgl.bufferData( gl.ARRAY_BUFFER, vertices, gl.STATIC_DRAW );\n\n\t\tgl.bindBuffer( gl.ELEMENT_ARRAY_BUFFER, elementBuffer );\n\t\tgl.bufferData( gl.ELEMENT_ARRAY_BUFFER, faces, gl.STATIC_DRAW );\n\n\t\tprogram = createProgram();\n\n\t\tattributes = {\n\t\t\tposition:\t\t\tgl.getAttribLocation ( program, 'position' ),\n\t\t\tuv:\t\t\t\t\tgl.getAttribLocation ( program, 'uv' )\n\t\t};\n\n\t\tuniforms = {\n\t\t\tuvOffset:\t\t\tgl.getUniformLocation( program, 'uvOffset' ),\n\t\t\tuvScale:\t\t\tgl.getUniformLocation( program, 'uvScale' ),\n\n\t\t\trotation:\t\t\tgl.getUniformLocation( program, 'rotation' ),\n\t\t\tscale:\t\t\t\tgl.getUniformLocation( program, 'scale' ),\n\n\t\t\tcolor:\t\t\t\tgl.getUniformLocation( program, 'color' ),\n\t\t\tmap:\t\t\t\tgl.getUniformLocation( program, 'map' ),\n\t\t\topacity:\t\t\tgl.getUniformLocation( program, 'opacity' ),\n\n\t\t\tmodelViewMatrix: \tgl.getUniformLocation( program, 'modelViewMatrix' ),\n\t\t\tprojectionMatrix:\tgl.getUniformLocation( program, 'projectionMatrix' ),\n\n\t\t\tfogType:\t\t\tgl.getUniformLocation( program, 'fogType' ),\n\t\t\tfogDensity:\t\t\tgl.getUniformLocation( program, 'fogDensity' ),\n\t\t\tfogNear:\t\t\tgl.getUniformLocation( program, 'fogNear' ),\n\t\t\tfogFar:\t\t\t\tgl.getUniformLocation( program, 'fogFar' ),\n\t\t\tfogColor:\t\t\tgl.getUniformLocation( program, 'fogColor' ),\n\n\t\t\talphaTest:\t\t\tgl.getUniformLocation( program, 'alphaTest' )\n\t\t};\n\n\t\tvar canvas = document.createElementNS( 'http://www.w3.org/1999/xhtml', 'canvas' );\n\t\tcanvas.width = 8;\n\t\tcanvas.height = 8;\n\n\t\tvar context = canvas.getContext( '2d' );\n\t\tcontext.fillStyle = 'white';\n\t\tcontext.fillRect( 0, 0, 8, 8 );\n\n\t\ttexture = new Texture( canvas );\n\t\ttexture.needsUpdate = true;\n\n\t}\n\n\tthis.render = function ( scene, camera ) {\n\n\t\tif ( sprites.length === 0 ) return;\n\n\t\t// setup gl\n\n\t\tif ( program === undefined ) {\n\n\t\t\tinit();\n\n\t\t}\n\n\t\tgl.useProgram( program );\n\n\t\tstate.initAttributes();\n\t\tstate.enableAttribute( attributes.position );\n\t\tstate.enableAttribute( attributes.uv );\n\t\tstate.disableUnusedAttributes();\n\n\t\tstate.disable( gl.CULL_FACE );\n\t\tstate.enable( gl.BLEND );\n\n\t\tgl.bindBuffer( gl.ARRAY_BUFFER, vertexBuffer );\n\t\tgl.vertexAttribPointer( attributes.position, 2, gl.FLOAT, false, 2 * 8, 0 );\n\t\tgl.vertexAttribPointer( attributes.uv, 2, gl.FLOAT, false, 2 * 8, 8 );\n\n\t\tgl.bindBuffer( gl.ELEMENT_ARRAY_BUFFER, elementBuffer );\n\n\t\tgl.uniformMatrix4fv( uniforms.projectionMatrix, false, camera.projectionMatrix.elements );\n\n\t\tstate.activeTexture( gl.TEXTURE0 );\n\t\tgl.uniform1i( uniforms.map, 0 );\n\n\t\tvar oldFogType = 0;\n\t\tvar sceneFogType = 0;\n\t\tvar fog = scene.fog;\n\n\t\tif ( fog ) {\n\n\t\t\tgl.uniform3f( uniforms.fogColor, fog.color.r, fog.color.g, fog.color.b );\n\n\t\t\tif ( (fog && fog.isFog) ) {\n\n\t\t\t\tgl.uniform1f( uniforms.fogNear, fog.near );\n\t\t\t\tgl.uniform1f( uniforms.fogFar, fog.far );\n\n\t\t\t\tgl.uniform1i( uniforms.fogType, 1 );\n\t\t\t\toldFogType = 1;\n\t\t\t\tsceneFogType = 1;\n\n\t\t\t} else if ( (fog && fog.isFogExp2) ) {\n\n\t\t\t\tgl.uniform1f( uniforms.fogDensity, fog.density );\n\n\t\t\t\tgl.uniform1i( uniforms.fogType, 2 );\n\t\t\t\toldFogType = 2;\n\t\t\t\tsceneFogType = 2;\n\n\t\t\t}\n\n\t\t} else {\n\n\t\t\tgl.uniform1i( uniforms.fogType, 0 );\n\t\t\toldFogType = 0;\n\t\t\tsceneFogType = 0;\n\n\t\t}\n\n\n\t\t// update positions and sort\n\n\t\tfor ( var i = 0, l = sprites.length; i < l; i ++ ) {\n\n\t\t\tvar sprite = sprites[ i ];\n\n\t\t\tsprite.modelViewMatrix.multiplyMatrices( camera.matrixWorldInverse, sprite.matrixWorld );\n\t\t\tsprite.z = - sprite.modelViewMatrix.elements[ 14 ];\n\n\t\t}\n\n\t\tsprites.sort( painterSortStable );\n\n\t\t// render all sprites\n\n\t\tvar scale = [];\n\n\t\tfor ( var i = 0, l = sprites.length; i < l; i ++ ) {\n\n\t\t\tvar sprite = sprites[ i ];\n\t\t\tvar material = sprite.material;\n\n\t\t\tif ( material.visible === false ) continue;\n\n\t\t\tgl.uniform1f( uniforms.alphaTest, material.alphaTest );\n\t\t\tgl.uniformMatrix4fv( uniforms.modelViewMatrix, false, sprite.modelViewMatrix.elements );\n\n\t\t\tsprite.matrixWorld.decompose( spritePosition, spriteRotation, spriteScale );\n\n\t\t\tscale[ 0 ] = spriteScale.x;\n\t\t\tscale[ 1 ] = spriteScale.y;\n\n\t\t\tvar fogType = 0;\n\n\t\t\tif ( scene.fog && material.fog ) {\n\n\t\t\t\tfogType = sceneFogType;\n\n\t\t\t}\n\n\t\t\tif ( oldFogType !== fogType ) {\n\n\t\t\t\tgl.uniform1i( uniforms.fogType, fogType );\n\t\t\t\toldFogType = fogType;\n\n\t\t\t}\n\n\t\t\tif ( material.map !== null ) {\n\n\t\t\t\tgl.uniform2f( uniforms.uvOffset, material.map.offset.x, material.map.offset.y );\n\t\t\t\tgl.uniform2f( uniforms.uvScale, material.map.repeat.x, material.map.repeat.y );\n\n\t\t\t} else {\n\n\t\t\t\tgl.uniform2f( uniforms.uvOffset, 0, 0 );\n\t\t\t\tgl.uniform2f( uniforms.uvScale, 1, 1 );\n\n\t\t\t}\n\n\t\t\tgl.uniform1f( uniforms.opacity, material.opacity );\n\t\t\tgl.uniform3f( uniforms.color, material.color.r, material.color.g, material.color.b );\n\n\t\t\tgl.uniform1f( uniforms.rotation, material.rotation );\n\t\t\tgl.uniform2fv( uniforms.scale, scale );\n\n\t\t\tstate.setBlending( material.blending, material.blendEquation, material.blendSrc, material.blendDst );\n\t\t\tstate.setDepthTest( material.depthTest );\n\t\t\tstate.setDepthWrite( material.depthWrite );\n\n\t\t\tif ( material.map ) {\n\n\t\t\t\trenderer.setTexture2D( material.map, 0 );\n\n\t\t\t} else {\n\n\t\t\t\trenderer.setTexture2D( texture, 0 );\n\n\t\t\t}\n\n\t\t\tgl.drawElements( gl.TRIANGLES, 6, gl.UNSIGNED_SHORT, 0 );\n\n\t\t}\n\n\t\t// restore gl\n\n\t\tstate.enable( gl.CULL_FACE );\n\n\t\trenderer.resetGLState();\n\n\t};\n\n\tfunction createProgram() {\n\n\t\tvar program = gl.createProgram();\n\n\t\tvar vertexShader = gl.createShader( gl.VERTEX_SHADER );\n\t\tvar fragmentShader = gl.createShader( gl.FRAGMENT_SHADER );\n\n\t\tgl.shaderSource( vertexShader, [\n\n\t\t\t'precision ' + renderer.getPrecision() + ' float;',\n\n\t\t\t'uniform mat4 modelViewMatrix;',\n\t\t\t'uniform mat4 projectionMatrix;',\n\t\t\t'uniform float rotation;',\n\t\t\t'uniform vec2 scale;',\n\t\t\t'uniform vec2 uvOffset;',\n\t\t\t'uniform vec2 uvScale;',\n\n\t\t\t'attribute vec2 position;',\n\t\t\t'attribute vec2 uv;',\n\n\t\t\t'varying vec2 vUV;',\n\n\t\t\t'void main() {',\n\n\t\t\t\t'vUV = uvOffset + uv * uvScale;',\n\n\t\t\t\t'vec2 alignedPosition = position * scale;',\n\n\t\t\t\t'vec2 rotatedPosition;',\n\t\t\t\t'rotatedPosition.x = cos( rotation ) * alignedPosition.x - sin( rotation ) * alignedPosition.y;',\n\t\t\t\t'rotatedPosition.y = sin( rotation ) * alignedPosition.x + cos( rotation ) * alignedPosition.y;',\n\n\t\t\t\t'vec4 finalPosition;',\n\n\t\t\t\t'finalPosition = modelViewMatrix * vec4( 0.0, 0.0, 0.0, 1.0 );',\n\t\t\t\t'finalPosition.xy += rotatedPosition;',\n\t\t\t\t'finalPosition = projectionMatrix * finalPosition;',\n\n\t\t\t\t'gl_Position = finalPosition;',\n\n\t\t\t'}'\n\n\t\t].join( '\\n' ) );\n\n\t\tgl.shaderSource( fragmentShader, [\n\n\t\t\t'precision ' + renderer.getPrecision() + ' float;',\n\n\t\t\t'uniform vec3 color;',\n\t\t\t'uniform sampler2D map;',\n\t\t\t'uniform float opacity;',\n\n\t\t\t'uniform int fogType;',\n\t\t\t'uniform vec3 fogColor;',\n\t\t\t'uniform float fogDensity;',\n\t\t\t'uniform float fogNear;',\n\t\t\t'uniform float fogFar;',\n\t\t\t'uniform float alphaTest;',\n\n\t\t\t'varying vec2 vUV;',\n\n\t\t\t'void main() {',\n\n\t\t\t\t'vec4 texture = texture2D( map, vUV );',\n\n\t\t\t\t'if ( texture.a < alphaTest ) discard;',\n\n\t\t\t\t'gl_FragColor = vec4( color * texture.xyz, texture.a * opacity );',\n\n\t\t\t\t'if ( fogType > 0 ) {',\n\n\t\t\t\t\t'float depth = gl_FragCoord.z / gl_FragCoord.w;',\n\t\t\t\t\t'float fogFactor = 0.0;',\n\n\t\t\t\t\t'if ( fogType == 1 ) {',\n\n\t\t\t\t\t\t'fogFactor = smoothstep( fogNear, fogFar, depth );',\n\n\t\t\t\t\t'} else {',\n\n\t\t\t\t\t\t'const float LOG2 = 1.442695;',\n\t\t\t\t\t\t'fogFactor = exp2( - fogDensity * fogDensity * depth * depth * LOG2 );',\n\t\t\t\t\t\t'fogFactor = 1.0 - clamp( fogFactor, 0.0, 1.0 );',\n\n\t\t\t\t\t'}',\n\n\t\t\t\t\t'gl_FragColor = mix( gl_FragColor, vec4( fogColor, gl_FragColor.w ), fogFactor );',\n\n\t\t\t\t'}',\n\n\t\t\t'}'\n\n\t\t].join( '\\n' ) );\n\n\t\tgl.compileShader( vertexShader );\n\t\tgl.compileShader( fragmentShader );\n\n\t\tgl.attachShader( program, vertexShader );\n\t\tgl.attachShader( program, fragmentShader );\n\n\t\tgl.linkProgram( program );\n\n\t\treturn program;\n\n\t}\n\n\tfunction painterSortStable( a, b ) {\n\n\t\tif ( a.renderOrder !== b.renderOrder ) {\n\n\t\t\treturn a.renderOrder - b.renderOrder;\n\n\t\t} else if ( a.z !== b.z ) {\n\n\t\t\treturn b.z - a.z;\n\n\t\t} else {\n\n\t\t\treturn b.id - a.id;\n\n\t\t}\n\n\t}\n\n}\n\n\nexport { SpritePlugin };\n","import { EventDispatcher } from '../core/EventDispatcher';\nimport { NoColors, FrontSide, SmoothShading, NormalBlending, LessEqualDepth, AddEquation, OneMinusSrcAlphaFactor, SrcAlphaFactor } from '../constants';\nimport { _Math } from '../math/Math';\n\n/**\n * @author mrdoob / http://mrdoob.com/\n * @author alteredq / http://alteredqualia.com/\n */\n\nfunction Material() {\n\n\tObject.defineProperty( this, 'id', { value: MaterialIdCount() } );\n\n\tthis.uuid = _Math.generateUUID();\n\n\tthis.name = '';\n\tthis.type = 'Material';\n\n\tthis.fog = true;\n\tthis.lights = true;\n\n\tthis.blending = NormalBlending;\n\tthis.side = FrontSide;\n\tthis.shading = SmoothShading; // THREE.FlatShading, THREE.SmoothShading\n\tthis.vertexColors = NoColors; // THREE.NoColors, THREE.VertexColors, THREE.FaceColors\n\n\tthis.opacity = 1;\n\tthis.transparent = false;\n\n\tthis.blendSrc = SrcAlphaFactor;\n\tthis.blendDst = OneMinusSrcAlphaFactor;\n\tthis.blendEquation = AddEquation;\n\tthis.blendSrcAlpha = null;\n\tthis.blendDstAlpha = null;\n\tthis.blendEquationAlpha = null;\n\n\tthis.depthFunc = LessEqualDepth;\n\tthis.depthTest = true;\n\tthis.depthWrite = true;\n\n\tthis.clippingPlanes = null;\n\tthis.clipIntersection = false;\n\tthis.clipShadows = false;\n\n\tthis.colorWrite = true;\n\n\tthis.precision = null; // override the renderer's default precision for this material\n\n\tthis.polygonOffset = false;\n\tthis.polygonOffsetFactor = 0;\n\tthis.polygonOffsetUnits = 0;\n\n\tthis.alphaTest = 0;\n\tthis.premultipliedAlpha = false;\n\n\tthis.overdraw = 0; // Overdrawn pixels (typically between 0 and 1) for fixing antialiasing gaps in CanvasRenderer\n\n\tthis.visible = true;\n\n\tthis._needsUpdate = true;\n\n}\n\nMaterial.prototype = {\n\n\tconstructor: Material,\n\n\tisMaterial: true,\n\n\tget needsUpdate() {\n\n\t\treturn this._needsUpdate;\n\n\t},\n\n\tset needsUpdate( value ) {\n\n\t\tif ( value === true ) this.update();\n\t\tthis._needsUpdate = value;\n\n\t},\n\n\tsetValues: function ( values ) {\n\n\t\tif ( values === undefined ) return;\n\n\t\tfor ( var key in values ) {\n\n\t\t\tvar newValue = values[ key ];\n\n\t\t\tif ( newValue === undefined ) {\n\n\t\t\t\tconsole.warn( \"THREE.Material: '\" + key + \"' parameter is undefined.\" );\n\t\t\t\tcontinue;\n\n\t\t\t}\n\n\t\t\tvar currentValue = this[ key ];\n\n\t\t\tif ( currentValue === undefined ) {\n\n\t\t\t\tconsole.warn( \"THREE.\" + this.type + \": '\" + key + \"' is not a property of this material.\" );\n\t\t\t\tcontinue;\n\n\t\t\t}\n\n\t\t\tif ( (currentValue && currentValue.isColor) ) {\n\n\t\t\t\tcurrentValue.set( newValue );\n\n\t\t\t} else if ( (currentValue && currentValue.isVector3) && (newValue && newValue.isVector3) ) {\n\n\t\t\t\tcurrentValue.copy( newValue );\n\n\t\t\t} else if ( key === 'overdraw' ) {\n\n\t\t\t\t// ensure overdraw is backwards-compatible with legacy boolean type\n\t\t\t\tthis[ key ] = Number( newValue );\n\n\t\t\t} else {\n\n\t\t\t\tthis[ key ] = newValue;\n\n\t\t\t}\n\n\t\t}\n\n\t},\n\n\ttoJSON: function ( meta ) {\n\n\t\tvar isRoot = meta === undefined;\n\n\t\tif ( isRoot ) {\n\n\t\t\tmeta = {\n\t\t\t\ttextures: {},\n\t\t\t\timages: {}\n\t\t\t};\n\n\t\t}\n\n\t\tvar data = {\n\t\t\tmetadata: {\n\t\t\t\tversion: 4.4,\n\t\t\t\ttype: 'Material',\n\t\t\t\tgenerator: 'Material.toJSON'\n\t\t\t}\n\t\t};\n\n\t\t// standard Material serialization\n\t\tdata.uuid = this.uuid;\n\t\tdata.type = this.type;\n\n\t\tif ( this.name !== '' ) data.name = this.name;\n\n\t\tif ( (this.color && this.color.isColor) ) data.color = this.color.getHex();\n\n\t\tif ( this.roughness !== undefined ) data.roughness = this.roughness;\n\t\tif ( this.metalness !== undefined ) data.metalness = this.metalness;\n\n\t\tif ( (this.emissive && this.emissive.isColor) ) data.emissive = this.emissive.getHex();\n\t\tif ( (this.specular && this.specular.isColor) ) data.specular = this.specular.getHex();\n\t\tif ( this.shininess !== undefined ) data.shininess = this.shininess;\n\n\t\tif ( (this.map && this.map.isTexture) ) data.map = this.map.toJSON( meta ).uuid;\n\t\tif ( (this.alphaMap && this.alphaMap.isTexture) ) data.alphaMap = this.alphaMap.toJSON( meta ).uuid;\n\t\tif ( (this.lightMap && this.lightMap.isTexture) ) data.lightMap = this.lightMap.toJSON( meta ).uuid;\n\t\tif ( (this.bumpMap && this.bumpMap.isTexture) ) {\n\n\t\t\tdata.bumpMap = this.bumpMap.toJSON( meta ).uuid;\n\t\t\tdata.bumpScale = this.bumpScale;\n\n\t\t}\n\t\tif ( (this.normalMap && this.normalMap.isTexture) ) {\n\n\t\t\tdata.normalMap = this.normalMap.toJSON( meta ).uuid;\n\t\t\tdata.normalScale = this.normalScale.toArray();\n\n\t\t}\n\t\tif ( (this.displacementMap && this.displacementMap.isTexture) ) {\n\n\t\t\tdata.displacementMap = this.displacementMap.toJSON( meta ).uuid;\n\t\t\tdata.displacementScale = this.displacementScale;\n\t\t\tdata.displacementBias = this.displacementBias;\n\n\t\t}\n\t\tif ( (this.roughnessMap && this.roughnessMap.isTexture) ) data.roughnessMap = this.roughnessMap.toJSON( meta ).uuid;\n\t\tif ( (this.metalnessMap && this.metalnessMap.isTexture) ) data.metalnessMap = this.metalnessMap.toJSON( meta ).uuid;\n\n\t\tif ( (this.emissiveMap && this.emissiveMap.isTexture) ) data.emissiveMap = this.emissiveMap.toJSON( meta ).uuid;\n\t\tif ( (this.specularMap && this.specularMap.isTexture) ) data.specularMap = this.specularMap.toJSON( meta ).uuid;\n\n\t\tif ( (this.envMap && this.envMap.isTexture) ) {\n\n\t\t\tdata.envMap = this.envMap.toJSON( meta ).uuid;\n\t\t\tdata.reflectivity = this.reflectivity; // Scale behind envMap\n\n\t\t}\n\n\t\tif ( this.size !== undefined ) data.size = this.size;\n\t\tif ( this.sizeAttenuation !== undefined ) data.sizeAttenuation = this.sizeAttenuation;\n\n\t\tif ( this.blending !== NormalBlending ) data.blending = this.blending;\n\t\tif ( this.shading !== SmoothShading ) data.shading = this.shading;\n\t\tif ( this.side !== FrontSide ) data.side = this.side;\n\t\tif ( this.vertexColors !== NoColors ) data.vertexColors = this.vertexColors;\n\n\t\tif ( this.opacity < 1 ) data.opacity = this.opacity;\n\t\tif ( this.transparent === true ) data.transparent = this.transparent;\n\n\t\tdata.depthFunc = this.depthFunc;\n\t\tdata.depthTest = this.depthTest;\n\t\tdata.depthWrite = this.depthWrite;\n\n\t\tif ( this.alphaTest > 0 ) data.alphaTest = this.alphaTest;\n\t\tif ( this.premultipliedAlpha === true ) data.premultipliedAlpha = this.premultipliedAlpha;\n\t\tif ( this.wireframe === true ) data.wireframe = this.wireframe;\n\t\tif ( this.wireframeLinewidth > 1 ) data.wireframeLinewidth = this.wireframeLinewidth;\n\t\tif ( this.wireframeLinecap !== 'round' ) data.wireframeLinecap = this.wireframeLinecap;\n\t\tif ( this.wireframeLinejoin !== 'round' ) data.wireframeLinejoin = this.wireframeLinejoin;\n\n\t\tdata.skinning = this.skinning;\n\t\tdata.morphTargets = this.morphTargets;\n\n\t\t// TODO: Copied from Object3D.toJSON\n\n\t\tfunction extractFromCache( cache ) {\n\n\t\t\tvar values = [];\n\n\t\t\tfor ( var key in cache ) {\n\n\t\t\t\tvar data = cache[ key ];\n\t\t\t\tdelete data.metadata;\n\t\t\t\tvalues.push( data );\n\n\t\t\t}\n\n\t\t\treturn values;\n\n\t\t}\n\n\t\tif ( isRoot ) {\n\n\t\t\tvar textures = extractFromCache( meta.textures );\n\t\t\tvar images = extractFromCache( meta.images );\n\n\t\t\tif ( textures.length > 0 ) data.textures = textures;\n\t\t\tif ( images.length > 0 ) data.images = images;\n\n\t\t}\n\n\t\treturn data;\n\n\t},\n\n\tclone: function () {\n\n\t\treturn new this.constructor().copy( this );\n\n\t},\n\n\tcopy: function ( source ) {\n\n\t\tthis.name = source.name;\n\n\t\tthis.fog = source.fog;\n\t\tthis.lights = source.lights;\n\n\t\tthis.blending = source.blending;\n\t\tthis.side = source.side;\n\t\tthis.shading = source.shading;\n\t\tthis.vertexColors = source.vertexColors;\n\n\t\tthis.opacity = source.opacity;\n\t\tthis.transparent = source.transparent;\n\n\t\tthis.blendSrc = source.blendSrc;\n\t\tthis.blendDst = source.blendDst;\n\t\tthis.blendEquation = source.blendEquation;\n\t\tthis.blendSrcAlpha = source.blendSrcAlpha;\n\t\tthis.blendDstAlpha = source.blendDstAlpha;\n\t\tthis.blendEquationAlpha = source.blendEquationAlpha;\n\n\t\tthis.depthFunc = source.depthFunc;\n\t\tthis.depthTest = source.depthTest;\n\t\tthis.depthWrite = source.depthWrite;\n\n\t\tthis.colorWrite = source.colorWrite;\n\n\t\tthis.precision = source.precision;\n\n\t\tthis.polygonOffset = source.polygonOffset;\n\t\tthis.polygonOffsetFactor = source.polygonOffsetFactor;\n\t\tthis.polygonOffsetUnits = source.polygonOffsetUnits;\n\n\t\tthis.alphaTest = source.alphaTest;\n\n\t\tthis.premultipliedAlpha = source.premultipliedAlpha;\n\n\t\tthis.overdraw = source.overdraw;\n\n\t\tthis.visible = source.visible;\n\t\tthis.clipShadows = source.clipShadows;\n\t\tthis.clipIntersection = source.clipIntersection;\n\n\t\tvar srcPlanes = source.clippingPlanes,\n\t\t\tdstPlanes = null;\n\n\t\tif ( srcPlanes !== null ) {\n\n\t\t\tvar n = srcPlanes.length;\n\t\t\tdstPlanes = new Array( n );\n\n\t\t\tfor ( var i = 0; i !== n; ++ i )\n\t\t\t\tdstPlanes[ i ] = srcPlanes[ i ].clone();\n\n\t\t}\n\n\t\tthis.clippingPlanes = dstPlanes;\n\n\t\treturn this;\n\n\t},\n\n\tupdate: function () {\n\n\t\tthis.dispatchEvent( { type: 'update' } );\n\n\t},\n\n\tdispose: function () {\n\n\t\tthis.dispatchEvent( { type: 'dispose' } );\n\n\t}\n\n};\n\nObject.assign( Material.prototype, EventDispatcher.prototype );\n\nvar count = 0;\nfunction MaterialIdCount() { return count++; };\n\n\nexport { MaterialIdCount, Material };\n","import { Material } from './Material';\nimport { UniformsUtils } from '../renderers/shaders/UniformsUtils';\n\n/**\n * @author alteredq / http://alteredqualia.com/\n *\n * parameters = {\n * defines: { \"label\" : \"value\" },\n * uniforms: { \"parameter1\": { value: 1.0 }, \"parameter2\": { value2: 2 } },\n *\n * fragmentShader: ,\n * vertexShader: ,\n *\n * wireframe: ,\n * wireframeLinewidth: ,\n *\n * lights: ,\n *\n * skinning: ,\n * morphTargets: ,\n * morphNormals: \n * }\n */\n\nfunction ShaderMaterial( parameters ) {\n\n\tMaterial.call( this );\n\n\tthis.type = 'ShaderMaterial';\n\n\tthis.defines = {};\n\tthis.uniforms = {};\n\n\tthis.vertexShader = 'void main() {\\n\\tgl_Position = projectionMatrix * modelViewMatrix * vec4( position, 1.0 );\\n}';\n\tthis.fragmentShader = 'void main() {\\n\\tgl_FragColor = vec4( 1.0, 0.0, 0.0, 1.0 );\\n}';\n\n\tthis.linewidth = 1;\n\n\tthis.wireframe = false;\n\tthis.wireframeLinewidth = 1;\n\n\tthis.fog = false; // set to use scene fog\n\tthis.lights = false; // set to use scene lights\n\tthis.clipping = false; // set to use user-defined clipping planes\n\n\tthis.skinning = false; // set to use skinning attribute streams\n\tthis.morphTargets = false; // set to use morph targets\n\tthis.morphNormals = false; // set to use morph normals\n\n\tthis.extensions = {\n\t\tderivatives: false, // set to use derivatives\n\t\tfragDepth: false, // set to use fragment depth values\n\t\tdrawBuffers: false, // set to use draw buffers\n\t\tshaderTextureLOD: false // set to use shader texture LOD\n\t};\n\n\t// When rendered geometry doesn't include these attributes but the material does,\n\t// use these default values in WebGL. This avoids errors when buffer data is missing.\n\tthis.defaultAttributeValues = {\n\t\t'color': [ 1, 1, 1 ],\n\t\t'uv': [ 0, 0 ],\n\t\t'uv2': [ 0, 0 ]\n\t};\n\n\tthis.index0AttributeName = undefined;\n\n\tif ( parameters !== undefined ) {\n\n\t\tif ( parameters.attributes !== undefined ) {\n\n\t\t\tconsole.error( 'THREE.ShaderMaterial: attributes should now be defined in THREE.BufferGeometry instead.' );\n\n\t\t}\n\n\t\tthis.setValues( parameters );\n\n\t}\n\n}\n\nShaderMaterial.prototype = Object.create( Material.prototype );\nShaderMaterial.prototype.constructor = ShaderMaterial;\n\nShaderMaterial.prototype.isShaderMaterial = true;\n\nShaderMaterial.prototype.copy = function ( source ) {\n\n\tMaterial.prototype.copy.call( this, source );\n\n\tthis.fragmentShader = source.fragmentShader;\n\tthis.vertexShader = source.vertexShader;\n\n\tthis.uniforms = UniformsUtils.clone( source.uniforms );\n\n\tthis.defines = source.defines;\n\n\tthis.wireframe = source.wireframe;\n\tthis.wireframeLinewidth = source.wireframeLinewidth;\n\n\tthis.lights = source.lights;\n\tthis.clipping = source.clipping;\n\n\tthis.skinning = source.skinning;\n\n\tthis.morphTargets = source.morphTargets;\n\tthis.morphNormals = source.morphNormals;\n\n\tthis.extensions = source.extensions;\n\n\treturn this;\n\n};\n\nShaderMaterial.prototype.toJSON = function ( meta ) {\n\n\tvar data = Material.prototype.toJSON.call( this, meta );\n\n\tdata.uniforms = this.uniforms;\n\tdata.vertexShader = this.vertexShader;\n\tdata.fragmentShader = this.fragmentShader;\n\n\treturn data;\n\n};\n\n\nexport { ShaderMaterial };\n","import { Material } from './Material';\nimport { BasicDepthPacking } from '../constants';\n\n/**\n * @author mrdoob / http://mrdoob.com/\n * @author alteredq / http://alteredqualia.com/\n * @author bhouston / https://clara.io\n * @author WestLangley / http://github.com/WestLangley\n *\n * parameters = {\n *\n * opacity: ,\n *\n * map: new THREE.Texture( ),\n *\n * alphaMap: new THREE.Texture( ),\n *\n * displacementMap: new THREE.Texture( ),\n * displacementScale: ,\n * displacementBias: ,\n *\n * wireframe: ,\n * wireframeLinewidth: \n * }\n */\n\nfunction MeshDepthMaterial( parameters ) {\n\n\tMaterial.call( this );\n\n\tthis.type = 'MeshDepthMaterial';\n\n\tthis.depthPacking = BasicDepthPacking;\n\n\tthis.skinning = false;\n\tthis.morphTargets = false;\n\n\tthis.map = null;\n\n\tthis.alphaMap = null;\n\n\tthis.displacementMap = null;\n\tthis.displacementScale = 1;\n\tthis.displacementBias = 0;\n\n\tthis.wireframe = false;\n\tthis.wireframeLinewidth = 1;\n\n\tthis.fog = false;\n\tthis.lights = false;\n\n\tthis.setValues( parameters );\n\n}\n\nMeshDepthMaterial.prototype = Object.create( Material.prototype );\nMeshDepthMaterial.prototype.constructor = MeshDepthMaterial;\n\nMeshDepthMaterial.prototype.isMeshDepthMaterial = true;\n\nMeshDepthMaterial.prototype.copy = function ( source ) {\n\n\tMaterial.prototype.copy.call( this, source );\n\n\tthis.depthPacking = source.depthPacking;\n\n\tthis.skinning = source.skinning;\n\tthis.morphTargets = source.morphTargets;\n\n\tthis.map = source.map;\n\n\tthis.alphaMap = source.alphaMap;\n\n\tthis.displacementMap = source.displacementMap;\n\tthis.displacementScale = source.displacementScale;\n\tthis.displacementBias = source.displacementBias;\n\n\tthis.wireframe = source.wireframe;\n\tthis.wireframeLinewidth = source.wireframeLinewidth;\n\n\treturn this;\n\n};\n\n\nexport { MeshDepthMaterial };\n","import { Vector3 } from './Vector3';\nimport { Sphere } from './Sphere';\n\n/**\n * @author bhouston / http://clara.io\n * @author WestLangley / http://github.com/WestLangley\n */\n\nfunction Box3( min, max ) {\n\n\tthis.min = ( min !== undefined ) ? min : new Vector3( + Infinity, + Infinity, + Infinity );\n\tthis.max = ( max !== undefined ) ? max : new Vector3( - Infinity, - Infinity, - Infinity );\n\n}\n\nBox3.prototype = {\n\n\tconstructor: Box3,\n\n\tisBox3: true,\n\n\tset: function ( min, max ) {\n\n\t\tthis.min.copy( min );\n\t\tthis.max.copy( max );\n\n\t\treturn this;\n\n\t},\n\n\tsetFromArray: function ( array ) {\n\n\t\tvar minX = + Infinity;\n\t\tvar minY = + Infinity;\n\t\tvar minZ = + Infinity;\n\n\t\tvar maxX = - Infinity;\n\t\tvar maxY = - Infinity;\n\t\tvar maxZ = - Infinity;\n\n\t\tfor ( var i = 0, l = array.length; i < l; i += 3 ) {\n\n\t\t\tvar x = array[ i ];\n\t\t\tvar y = array[ i + 1 ];\n\t\t\tvar z = array[ i + 2 ];\n\n\t\t\tif ( x < minX ) minX = x;\n\t\t\tif ( y < minY ) minY = y;\n\t\t\tif ( z < minZ ) minZ = z;\n\n\t\t\tif ( x > maxX ) maxX = x;\n\t\t\tif ( y > maxY ) maxY = y;\n\t\t\tif ( z > maxZ ) maxZ = z;\n\n\t\t}\n\n\t\tthis.min.set( minX, minY, minZ );\n\t\tthis.max.set( maxX, maxY, maxZ );\n\n\t},\n\n\tsetFromPoints: function ( points ) {\n\n\t\tthis.makeEmpty();\n\n\t\tfor ( var i = 0, il = points.length; i < il; i ++ ) {\n\n\t\t\tthis.expandByPoint( points[ i ] );\n\n\t\t}\n\n\t\treturn this;\n\n\t},\n\n\tsetFromCenterAndSize: function () {\n\n\t\tvar v1 = new Vector3();\n\n\t\treturn function setFromCenterAndSize( center, size ) {\n\n\t\t\tvar halfSize = v1.copy( size ).multiplyScalar( 0.5 );\n\n\t\t\tthis.min.copy( center ).sub( halfSize );\n\t\t\tthis.max.copy( center ).add( halfSize );\n\n\t\t\treturn this;\n\n\t\t};\n\n\t}(),\n\n\tsetFromObject: function () {\n\n\t\t// Computes the world-axis-aligned bounding box of an object (including its children),\n\t\t// accounting for both the object's, and children's, world transforms\n\n\t\tvar v1 = new Vector3();\n\n\t\treturn function setFromObject( object ) {\n\n\t\t\tvar scope = this;\n\n\t\t\tobject.updateMatrixWorld( true );\n\n\t\t\tthis.makeEmpty();\n\n\t\t\tobject.traverse( function ( node ) {\n\n\t\t\t\tvar geometry = node.geometry;\n\n\t\t\t\tif ( geometry !== undefined ) {\n\n\t\t\t\t\tif ( (geometry && geometry.isGeometry) ) {\n\n\t\t\t\t\t\tvar vertices = geometry.vertices;\n\n\t\t\t\t\t\tfor ( var i = 0, il = vertices.length; i < il; i ++ ) {\n\n\t\t\t\t\t\t\tv1.copy( vertices[ i ] );\n\t\t\t\t\t\t\tv1.applyMatrix4( node.matrixWorld );\n\n\t\t\t\t\t\t\tscope.expandByPoint( v1 );\n\n\t\t\t\t\t\t}\n\n\t\t\t\t\t} else if ( (geometry && geometry.isBufferGeometry) ) {\n\n\t\t\t\t\t\tvar attribute = geometry.attributes.position;\n\n\t\t\t\t\t\tif ( attribute !== undefined ) {\n\n\t\t\t\t\t\t\tvar array, offset, stride;\n\n\t\t\t\t\t\t\tif ( (attribute && attribute.isInterleavedBufferAttribute) ) {\n\n\t\t\t\t\t\t\t\tarray = attribute.data.array;\n\t\t\t\t\t\t\t\toffset = attribute.offset;\n\t\t\t\t\t\t\t\tstride = attribute.data.stride;\n\n\t\t\t\t\t\t\t} else {\n\n\t\t\t\t\t\t\t\tarray = attribute.array;\n\t\t\t\t\t\t\t\toffset = 0;\n\t\t\t\t\t\t\t\tstride = 3;\n\n\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\tfor ( var i = offset, il = array.length; i < il; i += stride ) {\n\n\t\t\t\t\t\t\t\tv1.fromArray( array, i );\n\t\t\t\t\t\t\t\tv1.applyMatrix4( node.matrixWorld );\n\n\t\t\t\t\t\t\t\tscope.expandByPoint( v1 );\n\n\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t}\n\n\t\t\t\t\t}\n\n\t\t\t\t}\n\n\t\t\t} );\n\n\t\t\treturn this;\n\n\t\t};\n\n\t}(),\n\n\tclone: function () {\n\n\t\treturn new this.constructor().copy( this );\n\n\t},\n\n\tcopy: function ( box ) {\n\n\t\tthis.min.copy( box.min );\n\t\tthis.max.copy( box.max );\n\n\t\treturn this;\n\n\t},\n\n\tmakeEmpty: function () {\n\n\t\tthis.min.x = this.min.y = this.min.z = + Infinity;\n\t\tthis.max.x = this.max.y = this.max.z = - Infinity;\n\n\t\treturn this;\n\n\t},\n\n\tisEmpty: function () {\n\n\t\t// this is a more robust check for empty than ( volume <= 0 ) because volume can get positive with two negative axes\n\n\t\treturn ( this.max.x < this.min.x ) || ( this.max.y < this.min.y ) || ( this.max.z < this.min.z );\n\n\t},\n\n\tgetCenter: function ( optionalTarget ) {\n\n\t\tvar result = optionalTarget || new Vector3();\n\t\treturn this.isEmpty() ? result.set( 0, 0, 0 ) : result.addVectors( this.min, this.max ).multiplyScalar( 0.5 );\n\n\t},\n\n\tgetSize: function ( optionalTarget ) {\n\n\t\tvar result = optionalTarget || new Vector3();\n\t\treturn this.isEmpty() ? result.set( 0, 0, 0 ) : result.subVectors( this.max, this.min );\n\n\t},\n\n\texpandByPoint: function ( point ) {\n\n\t\tthis.min.min( point );\n\t\tthis.max.max( point );\n\n\t\treturn this;\n\n\t},\n\n\texpandByVector: function ( vector ) {\n\n\t\tthis.min.sub( vector );\n\t\tthis.max.add( vector );\n\n\t\treturn this;\n\n\t},\n\n\texpandByScalar: function ( scalar ) {\n\n\t\tthis.min.addScalar( - scalar );\n\t\tthis.max.addScalar( scalar );\n\n\t\treturn this;\n\n\t},\n\n\tcontainsPoint: function ( point ) {\n\n\t\tif ( point.x < this.min.x || point.x > this.max.x ||\n\t\t\t\t point.y < this.min.y || point.y > this.max.y ||\n\t\t\t\t point.z < this.min.z || point.z > this.max.z ) {\n\n\t\t\treturn false;\n\n\t\t}\n\n\t\treturn true;\n\n\t},\n\n\tcontainsBox: function ( box ) {\n\n\t\tif ( ( this.min.x <= box.min.x ) && ( box.max.x <= this.max.x ) &&\n\t\t\t ( this.min.y <= box.min.y ) && ( box.max.y <= this.max.y ) &&\n\t\t\t ( this.min.z <= box.min.z ) && ( box.max.z <= this.max.z ) ) {\n\n\t\t\treturn true;\n\n\t\t}\n\n\t\treturn false;\n\n\t},\n\n\tgetParameter: function ( point, optionalTarget ) {\n\n\t\t// This can potentially have a divide by zero if the box\n\t\t// has a size dimension of 0.\n\n\t\tvar result = optionalTarget || new Vector3();\n\n\t\treturn result.set(\n\t\t\t( point.x - this.min.x ) / ( this.max.x - this.min.x ),\n\t\t\t( point.y - this.min.y ) / ( this.max.y - this.min.y ),\n\t\t\t( point.z - this.min.z ) / ( this.max.z - this.min.z )\n\t\t);\n\n\t},\n\n\tintersectsBox: function ( box ) {\n\n\t\t// using 6 splitting planes to rule out intersections.\n\n\t\tif ( box.max.x < this.min.x || box.min.x > this.max.x ||\n\t\t\t\t box.max.y < this.min.y || box.min.y > this.max.y ||\n\t\t\t\t box.max.z < this.min.z || box.min.z > this.max.z ) {\n\n\t\t\treturn false;\n\n\t\t}\n\n\t\treturn true;\n\n\t},\n\n\tintersectsSphere: ( function () {\n\n\t\tvar closestPoint;\n\n\t\treturn function intersectsSphere( sphere ) {\n\n\t\t\tif ( closestPoint === undefined ) closestPoint = new Vector3();\n\n\t\t\t// Find the point on the AABB closest to the sphere center.\n\t\t\tthis.clampPoint( sphere.center, closestPoint );\n\n\t\t\t// If that point is inside the sphere, the AABB and sphere intersect.\n\t\t\treturn closestPoint.distanceToSquared( sphere.center ) <= ( sphere.radius * sphere.radius );\n\n\t\t};\n\n\t} )(),\n\n\tintersectsPlane: function ( plane ) {\n\n\t\t// We compute the minimum and maximum dot product values. If those values\n\t\t// are on the same side (back or front) of the plane, then there is no intersection.\n\n\t\tvar min, max;\n\n\t\tif ( plane.normal.x > 0 ) {\n\n\t\t\tmin = plane.normal.x * this.min.x;\n\t\t\tmax = plane.normal.x * this.max.x;\n\n\t\t} else {\n\n\t\t\tmin = plane.normal.x * this.max.x;\n\t\t\tmax = plane.normal.x * this.min.x;\n\n\t\t}\n\n\t\tif ( plane.normal.y > 0 ) {\n\n\t\t\tmin += plane.normal.y * this.min.y;\n\t\t\tmax += plane.normal.y * this.max.y;\n\n\t\t} else {\n\n\t\t\tmin += plane.normal.y * this.max.y;\n\t\t\tmax += plane.normal.y * this.min.y;\n\n\t\t}\n\n\t\tif ( plane.normal.z > 0 ) {\n\n\t\t\tmin += plane.normal.z * this.min.z;\n\t\t\tmax += plane.normal.z * this.max.z;\n\n\t\t} else {\n\n\t\t\tmin += plane.normal.z * this.max.z;\n\t\t\tmax += plane.normal.z * this.min.z;\n\n\t\t}\n\n\t\treturn ( min <= plane.constant && max >= plane.constant );\n\n\t},\n\n\tclampPoint: function ( point, optionalTarget ) {\n\n\t\tvar result = optionalTarget || new Vector3();\n\t\treturn result.copy( point ).clamp( this.min, this.max );\n\n\t},\n\n\tdistanceToPoint: function () {\n\n\t\tvar v1 = new Vector3();\n\n\t\treturn function distanceToPoint( point ) {\n\n\t\t\tvar clampedPoint = v1.copy( point ).clamp( this.min, this.max );\n\t\t\treturn clampedPoint.sub( point ).length();\n\n\t\t};\n\n\t}(),\n\n\tgetBoundingSphere: function () {\n\n\t\tvar v1 = new Vector3();\n\n\t\treturn function getBoundingSphere( optionalTarget ) {\n\n\t\t\tvar result = optionalTarget || new Sphere();\n\n\t\t\tthis.getCenter( result.center );\n\n\t\t\tresult.radius = this.getSize( v1 ).length() * 0.5;\n\n\t\t\treturn result;\n\n\t\t};\n\n\t}(),\n\n\tintersect: function ( box ) {\n\n\t\tthis.min.max( box.min );\n\t\tthis.max.min( box.max );\n\n\t\t// ensure that if there is no overlap, the result is fully empty, not slightly empty with non-inf/+inf values that will cause subsequence intersects to erroneously return valid values.\n\t\tif( this.isEmpty() ) this.makeEmpty();\n\n\t\treturn this;\n\n\t},\n\n\tunion: function ( box ) {\n\n\t\tthis.min.min( box.min );\n\t\tthis.max.max( box.max );\n\n\t\treturn this;\n\n\t},\n\n\tapplyMatrix4: function () {\n\n\t\tvar points = [\n\t\t\tnew Vector3(),\n\t\t\tnew Vector3(),\n\t\t\tnew Vector3(),\n\t\t\tnew Vector3(),\n\t\t\tnew Vector3(),\n\t\t\tnew Vector3(),\n\t\t\tnew Vector3(),\n\t\t\tnew Vector3()\n\t\t];\n\n\t\treturn function applyMatrix4( matrix ) {\n\n\t\t\t// transform of empty box is an empty box.\n\t\t\tif( this.isEmpty() ) return this;\n\n\t\t\t// NOTE: I am using a binary pattern to specify all 2^3 combinations below\n\t\t\tpoints[ 0 ].set( this.min.x, this.min.y, this.min.z ).applyMatrix4( matrix ); // 000\n\t\t\tpoints[ 1 ].set( this.min.x, this.min.y, this.max.z ).applyMatrix4( matrix ); // 001\n\t\t\tpoints[ 2 ].set( this.min.x, this.max.y, this.min.z ).applyMatrix4( matrix ); // 010\n\t\t\tpoints[ 3 ].set( this.min.x, this.max.y, this.max.z ).applyMatrix4( matrix ); // 011\n\t\t\tpoints[ 4 ].set( this.max.x, this.min.y, this.min.z ).applyMatrix4( matrix ); // 100\n\t\t\tpoints[ 5 ].set( this.max.x, this.min.y, this.max.z ).applyMatrix4( matrix ); // 101\n\t\t\tpoints[ 6 ].set( this.max.x, this.max.y, this.min.z ).applyMatrix4( matrix ); // 110\n\t\t\tpoints[ 7 ].set( this.max.x, this.max.y, this.max.z ).applyMatrix4( matrix );\t// 111\n\n\t\t\tthis.setFromPoints( points );\n\n\t\t\treturn this;\n\n\t\t};\n\n\t}(),\n\n\ttranslate: function ( offset ) {\n\n\t\tthis.min.add( offset );\n\t\tthis.max.add( offset );\n\n\t\treturn this;\n\n\t},\n\n\tequals: function ( box ) {\n\n\t\treturn box.min.equals( this.min ) && box.max.equals( this.max );\n\n\t}\n\n};\n\n\nexport { Box3 };\n","import { Box3 } from './Box3';\nimport { Vector3 } from './Vector3';\n\n/**\n * @author bhouston / http://clara.io\n * @author mrdoob / http://mrdoob.com/\n */\n\nfunction Sphere( center, radius ) {\n\n\tthis.center = ( center !== undefined ) ? center : new Vector3();\n\tthis.radius = ( radius !== undefined ) ? radius : 0;\n\n}\n\nSphere.prototype = {\n\n\tconstructor: Sphere,\n\n\tset: function ( center, radius ) {\n\n\t\tthis.center.copy( center );\n\t\tthis.radius = radius;\n\n\t\treturn this;\n\n\t},\n\n\tsetFromPoints: function () {\n\n\t\tvar box = new Box3();\n\n\t\treturn function setFromPoints( points, optionalCenter ) {\n\n\t\t\tvar center = this.center;\n\n\t\t\tif ( optionalCenter !== undefined ) {\n\n\t\t\t\tcenter.copy( optionalCenter );\n\n\t\t\t} else {\n\n\t\t\t\tbox.setFromPoints( points ).getCenter( center );\n\n\t\t\t}\n\n\t\t\tvar maxRadiusSq = 0;\n\n\t\t\tfor ( var i = 0, il = points.length; i < il; i ++ ) {\n\n\t\t\t\tmaxRadiusSq = Math.max( maxRadiusSq, center.distanceToSquared( points[ i ] ) );\n\n\t\t\t}\n\n\t\t\tthis.radius = Math.sqrt( maxRadiusSq );\n\n\t\t\treturn this;\n\n\t\t};\n\n\t}(),\n\n\tclone: function () {\n\n\t\treturn new this.constructor().copy( this );\n\n\t},\n\n\tcopy: function ( sphere ) {\n\n\t\tthis.center.copy( sphere.center );\n\t\tthis.radius = sphere.radius;\n\n\t\treturn this;\n\n\t},\n\n\tempty: function () {\n\n\t\treturn ( this.radius <= 0 );\n\n\t},\n\n\tcontainsPoint: function ( point ) {\n\n\t\treturn ( point.distanceToSquared( this.center ) <= ( this.radius * this.radius ) );\n\n\t},\n\n\tdistanceToPoint: function ( point ) {\n\n\t\treturn ( point.distanceTo( this.center ) - this.radius );\n\n\t},\n\n\tintersectsSphere: function ( sphere ) {\n\n\t\tvar radiusSum = this.radius + sphere.radius;\n\n\t\treturn sphere.center.distanceToSquared( this.center ) <= ( radiusSum * radiusSum );\n\n\t},\n\n\tintersectsBox: function ( box ) {\n\n\t\treturn box.intersectsSphere( this );\n\n\t},\n\n\tintersectsPlane: function ( plane ) {\n\n\t\t// We use the following equation to compute the signed distance from\n\t\t// the center of the sphere to the plane.\n\t\t//\n\t\t// distance = q * n - d\n\t\t//\n\t\t// If this distance is greater than the radius of the sphere,\n\t\t// then there is no intersection.\n\n\t\treturn Math.abs( this.center.dot( plane.normal ) - plane.constant ) <= this.radius;\n\n\t},\n\n\tclampPoint: function ( point, optionalTarget ) {\n\n\t\tvar deltaLengthSq = this.center.distanceToSquared( point );\n\n\t\tvar result = optionalTarget || new Vector3();\n\n\t\tresult.copy( point );\n\n\t\tif ( deltaLengthSq > ( this.radius * this.radius ) ) {\n\n\t\t\tresult.sub( this.center ).normalize();\n\t\t\tresult.multiplyScalar( this.radius ).add( this.center );\n\n\t\t}\n\n\t\treturn result;\n\n\t},\n\n\tgetBoundingBox: function ( optionalTarget ) {\n\n\t\tvar box = optionalTarget || new Box3();\n\n\t\tbox.set( this.center, this.center );\n\t\tbox.expandByScalar( this.radius );\n\n\t\treturn box;\n\n\t},\n\n\tapplyMatrix4: function ( matrix ) {\n\n\t\tthis.center.applyMatrix4( matrix );\n\t\tthis.radius = this.radius * matrix.getMaxScaleOnAxis();\n\n\t\treturn this;\n\n\t},\n\n\ttranslate: function ( offset ) {\n\n\t\tthis.center.add( offset );\n\n\t\treturn this;\n\n\t},\n\n\tequals: function ( sphere ) {\n\n\t\treturn sphere.center.equals( this.center ) && ( sphere.radius === this.radius );\n\n\t}\n\n};\n\n\nexport { Sphere };\n","import { Vector3 } from './Vector3';\n\n/**\n * @author alteredq / http://alteredqualia.com/\n * @author WestLangley / http://github.com/WestLangley\n * @author bhouston / http://clara.io\n * @author tschw\n */\n\nfunction Matrix3() {\n\n\tthis.elements = new Float32Array( [\n\n\t\t1, 0, 0,\n\t\t0, 1, 0,\n\t\t0, 0, 1\n\n\t] );\n\n\tif ( arguments.length > 0 ) {\n\n\t\tconsole.error( 'THREE.Matrix3: the constructor no longer reads arguments. use .set() instead.' );\n\n\t}\n\n}\n\nMatrix3.prototype = {\n\n\tconstructor: Matrix3,\n\n\tisMatrix3: true,\n\n\tset: function ( n11, n12, n13, n21, n22, n23, n31, n32, n33 ) {\n\n\t\tvar te = this.elements;\n\n\t\tte[ 0 ] = n11; te[ 1 ] = n21; te[ 2 ] = n31;\n\t\tte[ 3 ] = n12; te[ 4 ] = n22; te[ 5 ] = n32;\n\t\tte[ 6 ] = n13; te[ 7 ] = n23; te[ 8 ] = n33;\n\n\t\treturn this;\n\n\t},\n\n\tidentity: function () {\n\n\t\tthis.set(\n\n\t\t\t1, 0, 0,\n\t\t\t0, 1, 0,\n\t\t\t0, 0, 1\n\n\t\t);\n\n\t\treturn this;\n\n\t},\n\n\tclone: function () {\n\n\t\treturn new this.constructor().fromArray( this.elements );\n\n\t},\n\n\tcopy: function ( m ) {\n\n\t\tvar me = m.elements;\n\n\t\tthis.set(\n\n\t\t\tme[ 0 ], me[ 3 ], me[ 6 ],\n\t\t\tme[ 1 ], me[ 4 ], me[ 7 ],\n\t\t\tme[ 2 ], me[ 5 ], me[ 8 ]\n\n\t\t);\n\n\t\treturn this;\n\n\t},\n\n\tsetFromMatrix4: function( m ) {\n\n\t\tvar me = m.elements;\n\n\t\tthis.set(\n\n\t\t\tme[ 0 ], me[ 4 ], me[ 8 ],\n\t\t\tme[ 1 ], me[ 5 ], me[ 9 ],\n\t\t\tme[ 2 ], me[ 6 ], me[ 10 ]\n\n\t\t);\n\n\t\treturn this;\n\n\t},\n\n\tapplyToVector3Array: function () {\n\n\t\tvar v1;\n\n\t\treturn function applyToVector3Array( array, offset, length ) {\n\n\t\t\tif ( v1 === undefined ) v1 = new Vector3();\n\t\t\tif ( offset === undefined ) offset = 0;\n\t\t\tif ( length === undefined ) length = array.length;\n\n\t\t\tfor ( var i = 0, j = offset; i < length; i += 3, j += 3 ) {\n\n\t\t\t\tv1.fromArray( array, j );\n\t\t\t\tv1.applyMatrix3( this );\n\t\t\t\tv1.toArray( array, j );\n\n\t\t\t}\n\n\t\t\treturn array;\n\n\t\t};\n\n\t}(),\n\n\tapplyToBuffer: function () {\n\n\t\tvar v1;\n\n\t\treturn function applyToBuffer( buffer, offset, length ) {\n\n\t\t\tif ( v1 === undefined ) v1 = new Vector3();\n\t\t\tif ( offset === undefined ) offset = 0;\n\t\t\tif ( length === undefined ) length = buffer.length / buffer.itemSize;\n\n\t\t\tfor ( var i = 0, j = offset; i < length; i ++, j ++ ) {\n\n\t\t\t\tv1.x = buffer.getX( j );\n\t\t\t\tv1.y = buffer.getY( j );\n\t\t\t\tv1.z = buffer.getZ( j );\n\n\t\t\t\tv1.applyMatrix3( this );\n\n\t\t\t\tbuffer.setXYZ( j, v1.x, v1.y, v1.z );\n\n\t\t\t}\n\n\t\t\treturn buffer;\n\n\t\t};\n\n\t}(),\n\n\tmultiplyScalar: function ( s ) {\n\n\t\tvar te = this.elements;\n\n\t\tte[ 0 ] *= s; te[ 3 ] *= s; te[ 6 ] *= s;\n\t\tte[ 1 ] *= s; te[ 4 ] *= s; te[ 7 ] *= s;\n\t\tte[ 2 ] *= s; te[ 5 ] *= s; te[ 8 ] *= s;\n\n\t\treturn this;\n\n\t},\n\n\tdeterminant: function () {\n\n\t\tvar te = this.elements;\n\n\t\tvar a = te[ 0 ], b = te[ 1 ], c = te[ 2 ],\n\t\t\td = te[ 3 ], e = te[ 4 ], f = te[ 5 ],\n\t\t\tg = te[ 6 ], h = te[ 7 ], i = te[ 8 ];\n\n\t\treturn a * e * i - a * f * h - b * d * i + b * f * g + c * d * h - c * e * g;\n\n\t},\n\n\tgetInverse: function ( matrix, throwOnDegenerate ) {\n\n\t\tif ( (matrix && matrix.isMatrix4) ) {\n\n\t\t\tconsole.error( \"THREE.Matrix3.getInverse no longer takes a Matrix4 argument.\" );\n\n\t\t}\n\n\t\tvar me = matrix.elements,\n\t\t\tte = this.elements,\n\n\t\t\tn11 = me[ 0 ], n21 = me[ 1 ], n31 = me[ 2 ],\n\t\t\tn12 = me[ 3 ], n22 = me[ 4 ], n32 = me[ 5 ],\n\t\t\tn13 = me[ 6 ], n23 = me[ 7 ], n33 = me[ 8 ],\n\n\t\t\tt11 = n33 * n22 - n32 * n23,\n\t\t\tt12 = n32 * n13 - n33 * n12,\n\t\t\tt13 = n23 * n12 - n22 * n13,\n\n\t\t\tdet = n11 * t11 + n21 * t12 + n31 * t13;\n\n\t\tif ( det === 0 ) {\n\n\t\t\tvar msg = \"THREE.Matrix3.getInverse(): can't invert matrix, determinant is 0\";\n\n\t\t\tif ( throwOnDegenerate === true ) {\n\n\t\t\t\tthrow new Error( msg );\n\n\t\t\t} else {\n\n\t\t\t\tconsole.warn( msg );\n\n\t\t\t}\n\n\t\t\treturn this.identity();\n\t\t}\n\n\t\tvar detInv = 1 / det;\n\n\t\tte[ 0 ] = t11 * detInv;\n\t\tte[ 1 ] = ( n31 * n23 - n33 * n21 ) * detInv;\n\t\tte[ 2 ] = ( n32 * n21 - n31 * n22 ) * detInv;\n\n\t\tte[ 3 ] = t12 * detInv;\n\t\tte[ 4 ] = ( n33 * n11 - n31 * n13 ) * detInv;\n\t\tte[ 5 ] = ( n31 * n12 - n32 * n11 ) * detInv;\n\n\t\tte[ 6 ] = t13 * detInv;\n\t\tte[ 7 ] = ( n21 * n13 - n23 * n11 ) * detInv;\n\t\tte[ 8 ] = ( n22 * n11 - n21 * n12 ) * detInv;\n\n\t\treturn this;\n\n\t},\n\n\ttranspose: function () {\n\n\t\tvar tmp, m = this.elements;\n\n\t\ttmp = m[ 1 ]; m[ 1 ] = m[ 3 ]; m[ 3 ] = tmp;\n\t\ttmp = m[ 2 ]; m[ 2 ] = m[ 6 ]; m[ 6 ] = tmp;\n\t\ttmp = m[ 5 ]; m[ 5 ] = m[ 7 ]; m[ 7 ] = tmp;\n\n\t\treturn this;\n\n\t},\n\n\tflattenToArrayOffset: function ( array, offset ) {\n\n\t\tconsole.warn( \"THREE.Matrix3: .flattenToArrayOffset is deprecated \" +\n\t\t\t\t\"- just use .toArray instead.\" );\n\n\t\treturn this.toArray( array, offset );\n\n\t},\n\n\tgetNormalMatrix: function ( matrix4 ) {\n\n\t\treturn this.setFromMatrix4( matrix4 ).getInverse( this ).transpose();\n\n\t},\n\n\ttransposeIntoArray: function ( r ) {\n\n\t\tvar m = this.elements;\n\n\t\tr[ 0 ] = m[ 0 ];\n\t\tr[ 1 ] = m[ 3 ];\n\t\tr[ 2 ] = m[ 6 ];\n\t\tr[ 3 ] = m[ 1 ];\n\t\tr[ 4 ] = m[ 4 ];\n\t\tr[ 5 ] = m[ 7 ];\n\t\tr[ 6 ] = m[ 2 ];\n\t\tr[ 7 ] = m[ 5 ];\n\t\tr[ 8 ] = m[ 8 ];\n\n\t\treturn this;\n\n\t},\n\n\tfromArray: function ( array, offset ) {\n\n\t\tif ( offset === undefined ) offset = 0;\n\n\t\tfor( var i = 0; i < 9; i ++ ) {\n\n\t\t\tthis.elements[ i ] = array[ i + offset ];\n\n\t\t}\n\n\t\treturn this;\n\n\t},\n\n\ttoArray: function ( array, offset ) {\n\n\t\tif ( array === undefined ) array = [];\n\t\tif ( offset === undefined ) offset = 0;\n\n\t\tvar te = this.elements;\n\n\t\tarray[ offset ] = te[ 0 ];\n\t\tarray[ offset + 1 ] = te[ 1 ];\n\t\tarray[ offset + 2 ] = te[ 2 ];\n\n\t\tarray[ offset + 3 ] = te[ 3 ];\n\t\tarray[ offset + 4 ] = te[ 4 ];\n\t\tarray[ offset + 5 ] = te[ 5 ];\n\n\t\tarray[ offset + 6 ] = te[ 6 ];\n\t\tarray[ offset + 7 ] = te[ 7 ];\n\t\tarray[ offset + 8 ] = te[ 8 ];\n\n\t\treturn array;\n\n\t}\n\n};\n\n\nexport { Matrix3 };\n","import { Matrix3 } from './Matrix3';\nimport { Vector3 } from './Vector3';\n\n/**\n * @author bhouston / http://clara.io\n */\n\nfunction Plane( normal, constant ) {\n\n\tthis.normal = ( normal !== undefined ) ? normal : new Vector3( 1, 0, 0 );\n\tthis.constant = ( constant !== undefined ) ? constant : 0;\n\n}\n\nPlane.prototype = {\n\n\tconstructor: Plane,\n\n\tset: function ( normal, constant ) {\n\n\t\tthis.normal.copy( normal );\n\t\tthis.constant = constant;\n\n\t\treturn this;\n\n\t},\n\n\tsetComponents: function ( x, y, z, w ) {\n\n\t\tthis.normal.set( x, y, z );\n\t\tthis.constant = w;\n\n\t\treturn this;\n\n\t},\n\n\tsetFromNormalAndCoplanarPoint: function ( normal, point ) {\n\n\t\tthis.normal.copy( normal );\n\t\tthis.constant = - point.dot( this.normal );\t// must be this.normal, not normal, as this.normal is normalized\n\n\t\treturn this;\n\n\t},\n\n\tsetFromCoplanarPoints: function () {\n\n\t\tvar v1 = new Vector3();\n\t\tvar v2 = new Vector3();\n\n\t\treturn function setFromCoplanarPoints( a, b, c ) {\n\n\t\t\tvar normal = v1.subVectors( c, b ).cross( v2.subVectors( a, b ) ).normalize();\n\n\t\t\t// Q: should an error be thrown if normal is zero (e.g. degenerate plane)?\n\n\t\t\tthis.setFromNormalAndCoplanarPoint( normal, a );\n\n\t\t\treturn this;\n\n\t\t};\n\n\t}(),\n\n\tclone: function () {\n\n\t\treturn new this.constructor().copy( this );\n\n\t},\n\n\tcopy: function ( plane ) {\n\n\t\tthis.normal.copy( plane.normal );\n\t\tthis.constant = plane.constant;\n\n\t\treturn this;\n\n\t},\n\n\tnormalize: function () {\n\n\t\t// Note: will lead to a divide by zero if the plane is invalid.\n\n\t\tvar inverseNormalLength = 1.0 / this.normal.length();\n\t\tthis.normal.multiplyScalar( inverseNormalLength );\n\t\tthis.constant *= inverseNormalLength;\n\n\t\treturn this;\n\n\t},\n\n\tnegate: function () {\n\n\t\tthis.constant *= - 1;\n\t\tthis.normal.negate();\n\n\t\treturn this;\n\n\t},\n\n\tdistanceToPoint: function ( point ) {\n\n\t\treturn this.normal.dot( point ) + this.constant;\n\n\t},\n\n\tdistanceToSphere: function ( sphere ) {\n\n\t\treturn this.distanceToPoint( sphere.center ) - sphere.radius;\n\n\t},\n\n\tprojectPoint: function ( point, optionalTarget ) {\n\n\t\treturn this.orthoPoint( point, optionalTarget ).sub( point ).negate();\n\n\t},\n\n\torthoPoint: function ( point, optionalTarget ) {\n\n\t\tvar perpendicularMagnitude = this.distanceToPoint( point );\n\n\t\tvar result = optionalTarget || new Vector3();\n\t\treturn result.copy( this.normal ).multiplyScalar( perpendicularMagnitude );\n\n\t},\n\n\tintersectLine: function () {\n\n\t\tvar v1 = new Vector3();\n\n\t\treturn function intersectLine( line, optionalTarget ) {\n\n\t\t\tvar result = optionalTarget || new Vector3();\n\n\t\t\tvar direction = line.delta( v1 );\n\n\t\t\tvar denominator = this.normal.dot( direction );\n\n\t\t\tif ( denominator === 0 ) {\n\n\t\t\t\t// line is coplanar, return origin\n\t\t\t\tif ( this.distanceToPoint( line.start ) === 0 ) {\n\n\t\t\t\t\treturn result.copy( line.start );\n\n\t\t\t\t}\n\n\t\t\t\t// Unsure if this is the correct method to handle this case.\n\t\t\t\treturn undefined;\n\n\t\t\t}\n\n\t\t\tvar t = - ( line.start.dot( this.normal ) + this.constant ) / denominator;\n\n\t\t\tif ( t < 0 || t > 1 ) {\n\n\t\t\t\treturn undefined;\n\n\t\t\t}\n\n\t\t\treturn result.copy( direction ).multiplyScalar( t ).add( line.start );\n\n\t\t};\n\n\t}(),\n\n\tintersectsLine: function ( line ) {\n\n\t\t// Note: this tests if a line intersects the plane, not whether it (or its end-points) are coplanar with it.\n\n\t\tvar startSign = this.distanceToPoint( line.start );\n\t\tvar endSign = this.distanceToPoint( line.end );\n\n\t\treturn ( startSign < 0 && endSign > 0 ) || ( endSign < 0 && startSign > 0 );\n\n\t},\n\n\tintersectsBox: function ( box ) {\n\n\t\treturn box.intersectsPlane( this );\n\n\t},\n\n\tintersectsSphere: function ( sphere ) {\n\n\t\treturn sphere.intersectsPlane( this );\n\n\t},\n\n\tcoplanarPoint: function ( optionalTarget ) {\n\n\t\tvar result = optionalTarget || new Vector3();\n\t\treturn result.copy( this.normal ).multiplyScalar( - this.constant );\n\n\t},\n\n\tapplyMatrix4: function () {\n\n\t\tvar v1 = new Vector3();\n\t\tvar m1 = new Matrix3();\n\n\t\treturn function applyMatrix4( matrix, optionalNormalMatrix ) {\n\n\t\t\tvar referencePoint = this.coplanarPoint( v1 ).applyMatrix4( matrix );\n\n\t\t\t// transform normal based on theory here:\n\t\t\t// http://www.songho.ca/opengl/gl_normaltransform.html\n\t\t\tvar normalMatrix = optionalNormalMatrix || m1.getNormalMatrix( matrix );\n\t\t\tvar normal = this.normal.applyMatrix3( normalMatrix ).normalize();\n\n\t\t\t// recalculate constant (like in setFromNormalAndCoplanarPoint)\n\t\t\tthis.constant = - referencePoint.dot( normal );\n\n\t\t\treturn this;\n\n\t\t};\n\n\t}(),\n\n\ttranslate: function ( offset ) {\n\n\t\tthis.constant = this.constant - offset.dot( this.normal );\n\n\t\treturn this;\n\n\t},\n\n\tequals: function ( plane ) {\n\n\t\treturn plane.normal.equals( this.normal ) && ( plane.constant === this.constant );\n\n\t}\n\n};\n\n\nexport { Plane };\n","import { Vector3 } from './Vector3';\nimport { Sphere } from './Sphere';\nimport { Plane } from './Plane';\n\n/**\n * @author mrdoob / http://mrdoob.com/\n * @author alteredq / http://alteredqualia.com/\n * @author bhouston / http://clara.io\n */\n\nfunction Frustum( p0, p1, p2, p3, p4, p5 ) {\n\n\tthis.planes = [\n\n\t\t( p0 !== undefined ) ? p0 : new Plane(),\n\t\t( p1 !== undefined ) ? p1 : new Plane(),\n\t\t( p2 !== undefined ) ? p2 : new Plane(),\n\t\t( p3 !== undefined ) ? p3 : new Plane(),\n\t\t( p4 !== undefined ) ? p4 : new Plane(),\n\t\t( p5 !== undefined ) ? p5 : new Plane()\n\n\t];\n\n}\n\nFrustum.prototype = {\n\n\tconstructor: Frustum,\n\n\tset: function ( p0, p1, p2, p3, p4, p5 ) {\n\n\t\tvar planes = this.planes;\n\n\t\tplanes[ 0 ].copy( p0 );\n\t\tplanes[ 1 ].copy( p1 );\n\t\tplanes[ 2 ].copy( p2 );\n\t\tplanes[ 3 ].copy( p3 );\n\t\tplanes[ 4 ].copy( p4 );\n\t\tplanes[ 5 ].copy( p5 );\n\n\t\treturn this;\n\n\t},\n\n\tclone: function () {\n\n\t\treturn new this.constructor().copy( this );\n\n\t},\n\n\tcopy: function ( frustum ) {\n\n\t\tvar planes = this.planes;\n\n\t\tfor ( var i = 0; i < 6; i ++ ) {\n\n\t\t\tplanes[ i ].copy( frustum.planes[ i ] );\n\n\t\t}\n\n\t\treturn this;\n\n\t},\n\n\tsetFromMatrix: function ( m ) {\n\n\t\tvar planes = this.planes;\n\t\tvar me = m.elements;\n\t\tvar me0 = me[ 0 ], me1 = me[ 1 ], me2 = me[ 2 ], me3 = me[ 3 ];\n\t\tvar me4 = me[ 4 ], me5 = me[ 5 ], me6 = me[ 6 ], me7 = me[ 7 ];\n\t\tvar me8 = me[ 8 ], me9 = me[ 9 ], me10 = me[ 10 ], me11 = me[ 11 ];\n\t\tvar me12 = me[ 12 ], me13 = me[ 13 ], me14 = me[ 14 ], me15 = me[ 15 ];\n\n\t\tplanes[ 0 ].setComponents( me3 - me0, me7 - me4, me11 - me8, me15 - me12 ).normalize();\n\t\tplanes[ 1 ].setComponents( me3 + me0, me7 + me4, me11 + me8, me15 + me12 ).normalize();\n\t\tplanes[ 2 ].setComponents( me3 + me1, me7 + me5, me11 + me9, me15 + me13 ).normalize();\n\t\tplanes[ 3 ].setComponents( me3 - me1, me7 - me5, me11 - me9, me15 - me13 ).normalize();\n\t\tplanes[ 4 ].setComponents( me3 - me2, me7 - me6, me11 - me10, me15 - me14 ).normalize();\n\t\tplanes[ 5 ].setComponents( me3 + me2, me7 + me6, me11 + me10, me15 + me14 ).normalize();\n\n\t\treturn this;\n\n\t},\n\n\tintersectsObject: function () {\n\n\t\tvar sphere = new Sphere();\n\n\t\treturn function intersectsObject( object ) {\n\n\t\t\tvar geometry = object.geometry;\n\n\t\t\tif ( geometry.boundingSphere === null )\n\t\t\t\tgeometry.computeBoundingSphere();\n\n\t\t\tsphere.copy( geometry.boundingSphere )\n\t\t\t\t.applyMatrix4( object.matrixWorld );\n\n\t\t\treturn this.intersectsSphere( sphere );\n\n\t\t};\n\n\t}(),\n\n\tintersectsSprite: function () {\n\n\t\tvar sphere = new Sphere();\n\n\t\treturn function intersectsSprite( sprite ) {\n\n\t\t\tsphere.center.set( 0, 0, 0 );\n\t\t\tsphere.radius = 0.7071067811865476;\n\t\t\tsphere.applyMatrix4( sprite.matrixWorld );\n\n\t\t\treturn this.intersectsSphere( sphere );\n\n\t\t};\n\n\t}(),\n\n\tintersectsSphere: function ( sphere ) {\n\n\t\tvar planes = this.planes;\n\t\tvar center = sphere.center;\n\t\tvar negRadius = - sphere.radius;\n\n\t\tfor ( var i = 0; i < 6; i ++ ) {\n\n\t\t\tvar distance = planes[ i ].distanceToPoint( center );\n\n\t\t\tif ( distance < negRadius ) {\n\n\t\t\t\treturn false;\n\n\t\t\t}\n\n\t\t}\n\n\t\treturn true;\n\n\t},\n\n\tintersectsBox: function () {\n\n\t\tvar p1 = new Vector3(),\n\t\t\tp2 = new Vector3();\n\n\t\treturn function intersectsBox( box ) {\n\n\t\t\tvar planes = this.planes;\n\n\t\t\tfor ( var i = 0; i < 6 ; i ++ ) {\n\n\t\t\t\tvar plane = planes[ i ];\n\n\t\t\t\tp1.x = plane.normal.x > 0 ? box.min.x : box.max.x;\n\t\t\t\tp2.x = plane.normal.x > 0 ? box.max.x : box.min.x;\n\t\t\t\tp1.y = plane.normal.y > 0 ? box.min.y : box.max.y;\n\t\t\t\tp2.y = plane.normal.y > 0 ? box.max.y : box.min.y;\n\t\t\t\tp1.z = plane.normal.z > 0 ? box.min.z : box.max.z;\n\t\t\t\tp2.z = plane.normal.z > 0 ? box.max.z : box.min.z;\n\n\t\t\t\tvar d1 = plane.distanceToPoint( p1 );\n\t\t\t\tvar d2 = plane.distanceToPoint( p2 );\n\n\t\t\t\t// if both outside plane, no intersection\n\n\t\t\t\tif ( d1 < 0 && d2 < 0 ) {\n\n\t\t\t\t\treturn false;\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t\treturn true;\n\n\t\t};\n\n\t}(),\n\n\n\tcontainsPoint: function ( point ) {\n\n\t\tvar planes = this.planes;\n\n\t\tfor ( var i = 0; i < 6; i ++ ) {\n\n\t\t\tif ( planes[ i ].distanceToPoint( point ) < 0 ) {\n\n\t\t\t\treturn false;\n\n\t\t\t}\n\n\t\t}\n\n\t\treturn true;\n\n\t}\n\n};\n\n\nexport { Frustum };\n","/**\n * @author alteredq / http://alteredqualia.com/\n * @author mrdoob / http://mrdoob.com/\n */\n\nimport { FrontSide, BackSide, DoubleSide, RGBAFormat, NearestFilter, PCFShadowMap, RGBADepthPacking } from '../../constants';\nimport { WebGLRenderTarget } from '../WebGLRenderTarget';\nimport { ShaderMaterial } from '../../materials/ShaderMaterial';\nimport { UniformsUtils } from '../shaders/UniformsUtils';\nimport { ShaderLib } from '../shaders/ShaderLib';\nimport { MeshDepthMaterial } from '../../materials/MeshDepthMaterial';\nimport { Vector4 } from '../../math/Vector4';\nimport { Vector3 } from '../../math/Vector3';\nimport { Vector2 } from '../../math/Vector2';\nimport { Matrix4 } from '../../math/Matrix4';\nimport { Frustum } from '../../math/Frustum';\n\nfunction WebGLShadowMap( _renderer, _lights, _objects, capabilities ) {\n\n\tvar _gl = _renderer.context,\n\t_state = _renderer.state,\n\t_frustum = new Frustum(),\n\t_projScreenMatrix = new Matrix4(),\n\n\t_lightShadows = _lights.shadows,\n\n\t_shadowMapSize = new Vector2(),\n\t_maxShadowMapSize = new Vector2( capabilities.maxTextureSize, capabilities.maxTextureSize ),\n\n\t_lookTarget = new Vector3(),\n\t_lightPositionWorld = new Vector3(),\n\n\t_renderList = [],\n\n\t_MorphingFlag = 1,\n\t_SkinningFlag = 2,\n\n\t_NumberOfMaterialVariants = ( _MorphingFlag | _SkinningFlag ) + 1,\n\n\t_depthMaterials = new Array( _NumberOfMaterialVariants ),\n\t_distanceMaterials = new Array( _NumberOfMaterialVariants ),\n\n\t_materialCache = {};\n\n\tvar cubeDirections = [\n\t\tnew Vector3( 1, 0, 0 ), new Vector3( - 1, 0, 0 ), new Vector3( 0, 0, 1 ),\n\t\tnew Vector3( 0, 0, - 1 ), new Vector3( 0, 1, 0 ), new Vector3( 0, - 1, 0 )\n\t];\n\n\tvar cubeUps = [\n\t\tnew Vector3( 0, 1, 0 ), new Vector3( 0, 1, 0 ), new Vector3( 0, 1, 0 ),\n\t\tnew Vector3( 0, 1, 0 ), new Vector3( 0, 0, 1 ),\tnew Vector3( 0, 0, - 1 )\n\t];\n\n\tvar cube2DViewPorts = [\n\t\tnew Vector4(), new Vector4(), new Vector4(),\n\t\tnew Vector4(), new Vector4(), new Vector4()\n\t];\n\n\t// init\n\n\tvar depthMaterialTemplate = new MeshDepthMaterial();\n\tdepthMaterialTemplate.depthPacking = RGBADepthPacking;\n\tdepthMaterialTemplate.clipping = true;\n\n\tvar distanceShader = ShaderLib[ \"distanceRGBA\" ];\n\tvar distanceUniforms = UniformsUtils.clone( distanceShader.uniforms );\n\n\tfor ( var i = 0; i !== _NumberOfMaterialVariants; ++ i ) {\n\n\t\tvar useMorphing = ( i & _MorphingFlag ) !== 0;\n\t\tvar useSkinning = ( i & _SkinningFlag ) !== 0;\n\n\t\tvar depthMaterial = depthMaterialTemplate.clone();\n\t\tdepthMaterial.morphTargets = useMorphing;\n\t\tdepthMaterial.skinning = useSkinning;\n\n\t\t_depthMaterials[ i ] = depthMaterial;\n\n\t\tvar distanceMaterial = new ShaderMaterial( {\n\t\t\tdefines: {\n\t\t\t\t'USE_SHADOWMAP': ''\n\t\t\t},\n\t\t\tuniforms: distanceUniforms,\n\t\t\tvertexShader: distanceShader.vertexShader,\n\t\t\tfragmentShader: distanceShader.fragmentShader,\n\t\t\tmorphTargets: useMorphing,\n\t\t\tskinning: useSkinning,\n\t\t\tclipping: true\n\t\t} );\n\n\t\t_distanceMaterials[ i ] = distanceMaterial;\n\n\t}\n\n\t//\n\n\tvar scope = this;\n\n\tthis.enabled = false;\n\n\tthis.autoUpdate = true;\n\tthis.needsUpdate = false;\n\n\tthis.type = PCFShadowMap;\n\n\tthis.renderReverseSided = true;\n\tthis.renderSingleSided = true;\n\n\tthis.render = function ( scene, camera ) {\n\n\t\tif ( scope.enabled === false ) return;\n\t\tif ( scope.autoUpdate === false && scope.needsUpdate === false ) return;\n\n\t\tif ( _lightShadows.length === 0 ) return;\n\n\t\t// Set GL state for depth map.\n\t\t_state.buffers.color.setClear( 1, 1, 1, 1 );\n\t\t_state.disable( _gl.BLEND );\n\t\t_state.setDepthTest( true );\n\t\t_state.setScissorTest( false );\n\n\t\t// render depth map\n\n\t\tvar faceCount, isPointLight;\n\n\t\tfor ( var i = 0, il = _lightShadows.length; i < il; i ++ ) {\n\n\t\t\tvar light = _lightShadows[ i ];\n\t\t\tvar shadow = light.shadow;\n\n\t\t\tif ( shadow === undefined ) {\n\n\t\t\t\tconsole.warn( 'THREE.WebGLShadowMap:', light, 'has no shadow.' );\n\t\t\t\tcontinue;\n\n\t\t\t}\n\n\t\t\tvar shadowCamera = shadow.camera;\n\n\t\t\t_shadowMapSize.copy( shadow.mapSize );\n\t\t\t_shadowMapSize.min( _maxShadowMapSize );\n\n\t\t\tif ( (light && light.isPointLight) ) {\n\n\t\t\t\tfaceCount = 6;\n\t\t\t\tisPointLight = true;\n\n\t\t\t\tvar vpWidth = _shadowMapSize.x;\n\t\t\t\tvar vpHeight = _shadowMapSize.y;\n\n\t\t\t\t// These viewports map a cube-map onto a 2D texture with the\n\t\t\t\t// following orientation:\n\t\t\t\t//\n\t\t\t\t// xzXZ\n\t\t\t\t// y Y\n\t\t\t\t//\n\t\t\t\t// X - Positive x direction\n\t\t\t\t// x - Negative x direction\n\t\t\t\t// Y - Positive y direction\n\t\t\t\t// y - Negative y direction\n\t\t\t\t// Z - Positive z direction\n\t\t\t\t// z - Negative z direction\n\n\t\t\t\t// positive X\n\t\t\t\tcube2DViewPorts[ 0 ].set( vpWidth * 2, vpHeight, vpWidth, vpHeight );\n\t\t\t\t// negative X\n\t\t\t\tcube2DViewPorts[ 1 ].set( 0, vpHeight, vpWidth, vpHeight );\n\t\t\t\t// positive Z\n\t\t\t\tcube2DViewPorts[ 2 ].set( vpWidth * 3, vpHeight, vpWidth, vpHeight );\n\t\t\t\t// negative Z\n\t\t\t\tcube2DViewPorts[ 3 ].set( vpWidth, vpHeight, vpWidth, vpHeight );\n\t\t\t\t// positive Y\n\t\t\t\tcube2DViewPorts[ 4 ].set( vpWidth * 3, 0, vpWidth, vpHeight );\n\t\t\t\t// negative Y\n\t\t\t\tcube2DViewPorts[ 5 ].set( vpWidth, 0, vpWidth, vpHeight );\n\n\t\t\t\t_shadowMapSize.x *= 4.0;\n\t\t\t\t_shadowMapSize.y *= 2.0;\n\n\t\t\t} else {\n\n\t\t\t\tfaceCount = 1;\n\t\t\t\tisPointLight = false;\n\n\t\t\t}\n\n\t\t\tif ( shadow.map === null ) {\n\n\t\t\t\tvar pars = { minFilter: NearestFilter, magFilter: NearestFilter, format: RGBAFormat };\n\n\t\t\t\tshadow.map = new WebGLRenderTarget( _shadowMapSize.x, _shadowMapSize.y, pars );\n\n\t\t\t\tshadowCamera.updateProjectionMatrix();\n\n\t\t\t}\n\n\t\t\tif ( (shadow && shadow.isSpotLightShadow) ) {\n\n\t\t\t\tshadow.update( light );\n\n\t\t\t}\n\n\t\t\tvar shadowMap = shadow.map;\n\t\t\tvar shadowMatrix = shadow.matrix;\n\n\t\t\t_lightPositionWorld.setFromMatrixPosition( light.matrixWorld );\n\t\t\tshadowCamera.position.copy( _lightPositionWorld );\n\n\t\t\t_renderer.setRenderTarget( shadowMap );\n\t\t\t_renderer.clear();\n\n\t\t\t// render shadow map for each cube face (if omni-directional) or\n\t\t\t// run a single pass if not\n\n\t\t\tfor ( var face = 0; face < faceCount; face ++ ) {\n\n\t\t\t\tif ( isPointLight ) {\n\n\t\t\t\t\t_lookTarget.copy( shadowCamera.position );\n\t\t\t\t\t_lookTarget.add( cubeDirections[ face ] );\n\t\t\t\t\tshadowCamera.up.copy( cubeUps[ face ] );\n\t\t\t\t\tshadowCamera.lookAt( _lookTarget );\n\n\t\t\t\t\tvar vpDimensions = cube2DViewPorts[ face ];\n\t\t\t\t\t_state.viewport( vpDimensions );\n\n\t\t\t\t} else {\n\n\t\t\t\t\t_lookTarget.setFromMatrixPosition( light.target.matrixWorld );\n\t\t\t\t\tshadowCamera.lookAt( _lookTarget );\n\n\t\t\t\t}\n\n\t\t\t\tshadowCamera.updateMatrixWorld();\n\t\t\t\tshadowCamera.matrixWorldInverse.getInverse( shadowCamera.matrixWorld );\n\n\t\t\t\t// compute shadow matrix\n\n\t\t\t\tshadowMatrix.set(\n\t\t\t\t\t0.5, 0.0, 0.0, 0.5,\n\t\t\t\t\t0.0, 0.5, 0.0, 0.5,\n\t\t\t\t\t0.0, 0.0, 0.5, 0.5,\n\t\t\t\t\t0.0, 0.0, 0.0, 1.0\n\t\t\t\t);\n\n\t\t\t\tshadowMatrix.multiply( shadowCamera.projectionMatrix );\n\t\t\t\tshadowMatrix.multiply( shadowCamera.matrixWorldInverse );\n\n\t\t\t\t// update camera matrices and frustum\n\n\t\t\t\t_projScreenMatrix.multiplyMatrices( shadowCamera.projectionMatrix, shadowCamera.matrixWorldInverse );\n\t\t\t\t_frustum.setFromMatrix( _projScreenMatrix );\n\n\t\t\t\t// set object matrices & frustum culling\n\n\t\t\t\t_renderList.length = 0;\n\n\t\t\t\tprojectObject( scene, camera, shadowCamera );\n\n\t\t\t\t// render shadow map\n\t\t\t\t// render regular objects\n\n\t\t\t\tfor ( var j = 0, jl = _renderList.length; j < jl; j ++ ) {\n\n\t\t\t\t\tvar object = _renderList[ j ];\n\t\t\t\t\tvar geometry = _objects.update( object );\n\t\t\t\t\tvar material = object.material;\n\n\t\t\t\t\tif ( (material && material.isMultiMaterial) ) {\n\n\t\t\t\t\t\tvar groups = geometry.groups;\n\t\t\t\t\t\tvar materials = material.materials;\n\n\t\t\t\t\t\tfor ( var k = 0, kl = groups.length; k < kl; k ++ ) {\n\n\t\t\t\t\t\t\tvar group = groups[ k ];\n\t\t\t\t\t\t\tvar groupMaterial = materials[ group.materialIndex ];\n\n\t\t\t\t\t\t\tif ( groupMaterial.visible === true ) {\n\n\t\t\t\t\t\t\t\tvar depthMaterial = getDepthMaterial( object, groupMaterial, isPointLight, _lightPositionWorld );\n\t\t\t\t\t\t\t\t_renderer.renderBufferDirect( shadowCamera, null, geometry, depthMaterial, object, group );\n\n\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t}\n\n\t\t\t\t\t} else {\n\n\t\t\t\t\t\tvar depthMaterial = getDepthMaterial( object, material, isPointLight, _lightPositionWorld );\n\t\t\t\t\t\t_renderer.renderBufferDirect( shadowCamera, null, geometry, depthMaterial, object, null );\n\n\t\t\t\t\t}\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t}\n\n\t\t// Restore GL state.\n\t\tvar clearColor = _renderer.getClearColor(),\n\t\tclearAlpha = _renderer.getClearAlpha();\n\t\t_renderer.setClearColor( clearColor, clearAlpha );\n\n\t\tscope.needsUpdate = false;\n\n\t};\n\n\tfunction getDepthMaterial( object, material, isPointLight, lightPositionWorld ) {\n\n\t\tvar geometry = object.geometry;\n\n\t\tvar result = null;\n\n\t\tvar materialVariants = _depthMaterials;\n\t\tvar customMaterial = object.customDepthMaterial;\n\n\t\tif ( isPointLight ) {\n\n\t\t\tmaterialVariants = _distanceMaterials;\n\t\t\tcustomMaterial = object.customDistanceMaterial;\n\n\t\t}\n\n\t\tif ( ! customMaterial ) {\n\n\t\t\tvar useMorphing = false;\n\n\t\t\tif ( material.morphTargets ) {\n\n\t\t\t\tif ( (geometry && geometry.isBufferGeometry) ) {\n\n\t\t\t\t\tuseMorphing = geometry.morphAttributes && geometry.morphAttributes.position && geometry.morphAttributes.position.length > 0;\n\n\t\t\t\t} else if ( (geometry && geometry.isGeometry) ) {\n\n\t\t\t\t\tuseMorphing = geometry.morphTargets && geometry.morphTargets.length > 0;\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t\tvar useSkinning = object.isSkinnedMesh && material.skinning;\n\n\t\t\tvar variantIndex = 0;\n\n\t\t\tif ( useMorphing ) variantIndex |= _MorphingFlag;\n\t\t\tif ( useSkinning ) variantIndex |= _SkinningFlag;\n\n\t\t\tresult = materialVariants[ variantIndex ];\n\n\t\t} else {\n\n\t\t\tresult = customMaterial;\n\n\t\t}\n\n\t\tif ( _renderer.localClippingEnabled &&\n\t\t\t material.clipShadows === true &&\n\t\t\t\tmaterial.clippingPlanes.length !== 0 ) {\n\n\t\t\t// in this case we need a unique material instance reflecting the\n\t\t\t// appropriate state\n\n\t\t\tvar keyA = result.uuid, keyB = material.uuid;\n\n\t\t\tvar materialsForVariant = _materialCache[ keyA ];\n\n\t\t\tif ( materialsForVariant === undefined ) {\n\n\t\t\t\tmaterialsForVariant = {};\n\t\t\t\t_materialCache[ keyA ] = materialsForVariant;\n\n\t\t\t}\n\n\t\t\tvar cachedMaterial = materialsForVariant[ keyB ];\n\n\t\t\tif ( cachedMaterial === undefined ) {\n\n\t\t\t\tcachedMaterial = result.clone();\n\t\t\t\tmaterialsForVariant[ keyB ] = cachedMaterial;\n\n\t\t\t}\n\n\t\t\tresult = cachedMaterial;\n\n\t\t}\n\n\t\tresult.visible = material.visible;\n\t\tresult.wireframe = material.wireframe;\n\n\t\tvar side = material.side;\n\n\t\tif ( scope.renderSingleSided && side == DoubleSide ) {\n\n\t\t\tside = FrontSide;\n\n\t\t}\n\n\t\tif ( scope.renderReverseSided ) {\n\n\t\t\tif ( side === FrontSide ) side = BackSide;\n\t\t\telse if ( side === BackSide ) side = FrontSide;\n\n\t\t}\n\n\t\tresult.side = side;\n\n\t\tresult.clipShadows = material.clipShadows;\n\t\tresult.clippingPlanes = material.clippingPlanes;\n\n\t\tresult.wireframeLinewidth = material.wireframeLinewidth;\n\t\tresult.linewidth = material.linewidth;\n\n\t\tif ( isPointLight && result.uniforms.lightPos !== undefined ) {\n\n\t\t\tresult.uniforms.lightPos.value.copy( lightPositionWorld );\n\n\t\t}\n\n\t\treturn result;\n\n\t}\n\n\tfunction projectObject( object, camera, shadowCamera ) {\n\n\t\tif ( object.visible === false ) return;\n\n\t\tvar visible = ( object.layers.mask & camera.layers.mask ) !== 0;\n\n\t\tif ( visible && ( object.isMesh || object.isLine || object.isPoints ) ) {\n\n\t\t\tif ( object.castShadow && ( object.frustumCulled === false || _frustum.intersectsObject( object ) === true ) ) {\n\n\t\t\t\tvar material = object.material;\n\n\t\t\t\tif ( material.visible === true ) {\n\n\t\t\t\t\tobject.modelViewMatrix.multiplyMatrices( shadowCamera.matrixWorldInverse, object.matrixWorld );\n\t\t\t\t\t_renderList.push( object );\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t}\n\n\t\tvar children = object.children;\n\n\t\tfor ( var i = 0, l = children.length; i < l; i ++ ) {\n\n\t\t\tprojectObject( children[ i ], camera, shadowCamera );\n\n\t\t}\n\n\t}\n\n}\n\n\nexport { WebGLShadowMap };\n","import { Vector3 } from './Vector3';\n\n/**\n * @author bhouston / http://clara.io\n */\n\nfunction Ray( origin, direction ) {\n\n\tthis.origin = ( origin !== undefined ) ? origin : new Vector3();\n\tthis.direction = ( direction !== undefined ) ? direction : new Vector3();\n\n}\n\nRay.prototype = {\n\n\tconstructor: Ray,\n\n\tset: function ( origin, direction ) {\n\n\t\tthis.origin.copy( origin );\n\t\tthis.direction.copy( direction );\n\n\t\treturn this;\n\n\t},\n\n\tclone: function () {\n\n\t\treturn new this.constructor().copy( this );\n\n\t},\n\n\tcopy: function ( ray ) {\n\n\t\tthis.origin.copy( ray.origin );\n\t\tthis.direction.copy( ray.direction );\n\n\t\treturn this;\n\n\t},\n\n\tat: function ( t, optionalTarget ) {\n\n\t\tvar result = optionalTarget || new Vector3();\n\n\t\treturn result.copy( this.direction ).multiplyScalar( t ).add( this.origin );\n\n\t},\n\n\tlookAt: function ( v ) {\n\n\t\tthis.direction.copy( v ).sub( this.origin ).normalize();\n\n\t\treturn this;\n\n\t},\n\n\trecast: function () {\n\n\t\tvar v1 = new Vector3();\n\n\t\treturn function recast( t ) {\n\n\t\t\tthis.origin.copy( this.at( t, v1 ) );\n\n\t\t\treturn this;\n\n\t\t};\n\n\t}(),\n\n\tclosestPointToPoint: function ( point, optionalTarget ) {\n\n\t\tvar result = optionalTarget || new Vector3();\n\t\tresult.subVectors( point, this.origin );\n\t\tvar directionDistance = result.dot( this.direction );\n\n\t\tif ( directionDistance < 0 ) {\n\n\t\t\treturn result.copy( this.origin );\n\n\t\t}\n\n\t\treturn result.copy( this.direction ).multiplyScalar( directionDistance ).add( this.origin );\n\n\t},\n\n\tdistanceToPoint: function ( point ) {\n\n\t\treturn Math.sqrt( this.distanceSqToPoint( point ) );\n\n\t},\n\n\tdistanceSqToPoint: function () {\n\n\t\tvar v1 = new Vector3();\n\n\t\treturn function distanceSqToPoint( point ) {\n\n\t\t\tvar directionDistance = v1.subVectors( point, this.origin ).dot( this.direction );\n\n\t\t\t// point behind the ray\n\n\t\t\tif ( directionDistance < 0 ) {\n\n\t\t\t\treturn this.origin.distanceToSquared( point );\n\n\t\t\t}\n\n\t\t\tv1.copy( this.direction ).multiplyScalar( directionDistance ).add( this.origin );\n\n\t\t\treturn v1.distanceToSquared( point );\n\n\t\t};\n\n\t}(),\n\n\tdistanceSqToSegment: function () {\n\n\t\tvar segCenter = new Vector3();\n\t\tvar segDir = new Vector3();\n\t\tvar diff = new Vector3();\n\n\t\treturn function distanceSqToSegment( v0, v1, optionalPointOnRay, optionalPointOnSegment ) {\n\n\t\t\t// from http://www.geometrictools.com/GTEngine/Include/Mathematics/GteDistRaySegment.h\n\t\t\t// It returns the min distance between the ray and the segment\n\t\t\t// defined by v0 and v1\n\t\t\t// It can also set two optional targets :\n\t\t\t// - The closest point on the ray\n\t\t\t// - The closest point on the segment\n\n\t\t\tsegCenter.copy( v0 ).add( v1 ).multiplyScalar( 0.5 );\n\t\t\tsegDir.copy( v1 ).sub( v0 ).normalize();\n\t\t\tdiff.copy( this.origin ).sub( segCenter );\n\n\t\t\tvar segExtent = v0.distanceTo( v1 ) * 0.5;\n\t\t\tvar a01 = - this.direction.dot( segDir );\n\t\t\tvar b0 = diff.dot( this.direction );\n\t\t\tvar b1 = - diff.dot( segDir );\n\t\t\tvar c = diff.lengthSq();\n\t\t\tvar det = Math.abs( 1 - a01 * a01 );\n\t\t\tvar s0, s1, sqrDist, extDet;\n\n\t\t\tif ( det > 0 ) {\n\n\t\t\t\t// The ray and segment are not parallel.\n\n\t\t\t\ts0 = a01 * b1 - b0;\n\t\t\t\ts1 = a01 * b0 - b1;\n\t\t\t\textDet = segExtent * det;\n\n\t\t\t\tif ( s0 >= 0 ) {\n\n\t\t\t\t\tif ( s1 >= - extDet ) {\n\n\t\t\t\t\t\tif ( s1 <= extDet ) {\n\n\t\t\t\t\t\t\t// region 0\n\t\t\t\t\t\t\t// Minimum at interior points of ray and segment.\n\n\t\t\t\t\t\t\tvar invDet = 1 / det;\n\t\t\t\t\t\t\ts0 *= invDet;\n\t\t\t\t\t\t\ts1 *= invDet;\n\t\t\t\t\t\t\tsqrDist = s0 * ( s0 + a01 * s1 + 2 * b0 ) + s1 * ( a01 * s0 + s1 + 2 * b1 ) + c;\n\n\t\t\t\t\t\t} else {\n\n\t\t\t\t\t\t\t// region 1\n\n\t\t\t\t\t\t\ts1 = segExtent;\n\t\t\t\t\t\t\ts0 = Math.max( 0, - ( a01 * s1 + b0 ) );\n\t\t\t\t\t\t\tsqrDist = - s0 * s0 + s1 * ( s1 + 2 * b1 ) + c;\n\n\t\t\t\t\t\t}\n\n\t\t\t\t\t} else {\n\n\t\t\t\t\t\t// region 5\n\n\t\t\t\t\t\ts1 = - segExtent;\n\t\t\t\t\t\ts0 = Math.max( 0, - ( a01 * s1 + b0 ) );\n\t\t\t\t\t\tsqrDist = - s0 * s0 + s1 * ( s1 + 2 * b1 ) + c;\n\n\t\t\t\t\t}\n\n\t\t\t\t} else {\n\n\t\t\t\t\tif ( s1 <= - extDet ) {\n\n\t\t\t\t\t\t// region 4\n\n\t\t\t\t\t\ts0 = Math.max( 0, - ( - a01 * segExtent + b0 ) );\n\t\t\t\t\t\ts1 = ( s0 > 0 ) ? - segExtent : Math.min( Math.max( - segExtent, - b1 ), segExtent );\n\t\t\t\t\t\tsqrDist = - s0 * s0 + s1 * ( s1 + 2 * b1 ) + c;\n\n\t\t\t\t\t} else if ( s1 <= extDet ) {\n\n\t\t\t\t\t\t// region 3\n\n\t\t\t\t\t\ts0 = 0;\n\t\t\t\t\t\ts1 = Math.min( Math.max( - segExtent, - b1 ), segExtent );\n\t\t\t\t\t\tsqrDist = s1 * ( s1 + 2 * b1 ) + c;\n\n\t\t\t\t\t} else {\n\n\t\t\t\t\t\t// region 2\n\n\t\t\t\t\t\ts0 = Math.max( 0, - ( a01 * segExtent + b0 ) );\n\t\t\t\t\t\ts1 = ( s0 > 0 ) ? segExtent : Math.min( Math.max( - segExtent, - b1 ), segExtent );\n\t\t\t\t\t\tsqrDist = - s0 * s0 + s1 * ( s1 + 2 * b1 ) + c;\n\n\t\t\t\t\t}\n\n\t\t\t\t}\n\n\t\t\t} else {\n\n\t\t\t\t// Ray and segment are parallel.\n\n\t\t\t\ts1 = ( a01 > 0 ) ? - segExtent : segExtent;\n\t\t\t\ts0 = Math.max( 0, - ( a01 * s1 + b0 ) );\n\t\t\t\tsqrDist = - s0 * s0 + s1 * ( s1 + 2 * b1 ) + c;\n\n\t\t\t}\n\n\t\t\tif ( optionalPointOnRay ) {\n\n\t\t\t\toptionalPointOnRay.copy( this.direction ).multiplyScalar( s0 ).add( this.origin );\n\n\t\t\t}\n\n\t\t\tif ( optionalPointOnSegment ) {\n\n\t\t\t\toptionalPointOnSegment.copy( segDir ).multiplyScalar( s1 ).add( segCenter );\n\n\t\t\t}\n\n\t\t\treturn sqrDist;\n\n\t\t};\n\n\t}(),\n\n\tintersectSphere: function () {\n\n\t\tvar v1 = new Vector3();\n\n\t\treturn function intersectSphere( sphere, optionalTarget ) {\n\n\t\t\tv1.subVectors( sphere.center, this.origin );\n\t\t\tvar tca = v1.dot( this.direction );\n\t\t\tvar d2 = v1.dot( v1 ) - tca * tca;\n\t\t\tvar radius2 = sphere.radius * sphere.radius;\n\n\t\t\tif ( d2 > radius2 ) return null;\n\n\t\t\tvar thc = Math.sqrt( radius2 - d2 );\n\n\t\t\t// t0 = first intersect point - entrance on front of sphere\n\t\t\tvar t0 = tca - thc;\n\n\t\t\t// t1 = second intersect point - exit point on back of sphere\n\t\t\tvar t1 = tca + thc;\n\n\t\t\t// test to see if both t0 and t1 are behind the ray - if so, return null\n\t\t\tif ( t0 < 0 && t1 < 0 ) return null;\n\n\t\t\t// test to see if t0 is behind the ray:\n\t\t\t// if it is, the ray is inside the sphere, so return the second exit point scaled by t1,\n\t\t\t// in order to always return an intersect point that is in front of the ray.\n\t\t\tif ( t0 < 0 ) return this.at( t1, optionalTarget );\n\n\t\t\t// else t0 is in front of the ray, so return the first collision point scaled by t0\n\t\t\treturn this.at( t0, optionalTarget );\n\n\t\t};\n\n\t}(),\n\n\tintersectsSphere: function ( sphere ) {\n\n\t\treturn this.distanceToPoint( sphere.center ) <= sphere.radius;\n\n\t},\n\n\tdistanceToPlane: function ( plane ) {\n\n\t\tvar denominator = plane.normal.dot( this.direction );\n\n\t\tif ( denominator === 0 ) {\n\n\t\t\t// line is coplanar, return origin\n\t\t\tif ( plane.distanceToPoint( this.origin ) === 0 ) {\n\n\t\t\t\treturn 0;\n\n\t\t\t}\n\n\t\t\t// Null is preferable to undefined since undefined means.... it is undefined\n\n\t\t\treturn null;\n\n\t\t}\n\n\t\tvar t = - ( this.origin.dot( plane.normal ) + plane.constant ) / denominator;\n\n\t\t// Return if the ray never intersects the plane\n\n\t\treturn t >= 0 ? t : null;\n\n\t},\n\n\tintersectPlane: function ( plane, optionalTarget ) {\n\n\t\tvar t = this.distanceToPlane( plane );\n\n\t\tif ( t === null ) {\n\n\t\t\treturn null;\n\n\t\t}\n\n\t\treturn this.at( t, optionalTarget );\n\n\t},\n\n\n\n\tintersectsPlane: function ( plane ) {\n\n\t\t// check if the ray lies on the plane first\n\n\t\tvar distToPoint = plane.distanceToPoint( this.origin );\n\n\t\tif ( distToPoint === 0 ) {\n\n\t\t\treturn true;\n\n\t\t}\n\n\t\tvar denominator = plane.normal.dot( this.direction );\n\n\t\tif ( denominator * distToPoint < 0 ) {\n\n\t\t\treturn true;\n\n\t\t}\n\n\t\t// ray origin is behind the plane (and is pointing behind it)\n\n\t\treturn false;\n\n\t},\n\n\tintersectBox: function ( box, optionalTarget ) {\n\n\t\tvar tmin, tmax, tymin, tymax, tzmin, tzmax;\n\n\t\tvar invdirx = 1 / this.direction.x,\n\t\t\tinvdiry = 1 / this.direction.y,\n\t\t\tinvdirz = 1 / this.direction.z;\n\n\t\tvar origin = this.origin;\n\n\t\tif ( invdirx >= 0 ) {\n\n\t\t\ttmin = ( box.min.x - origin.x ) * invdirx;\n\t\t\ttmax = ( box.max.x - origin.x ) * invdirx;\n\n\t\t} else {\n\n\t\t\ttmin = ( box.max.x - origin.x ) * invdirx;\n\t\t\ttmax = ( box.min.x - origin.x ) * invdirx;\n\n\t\t}\n\n\t\tif ( invdiry >= 0 ) {\n\n\t\t\ttymin = ( box.min.y - origin.y ) * invdiry;\n\t\t\ttymax = ( box.max.y - origin.y ) * invdiry;\n\n\t\t} else {\n\n\t\t\ttymin = ( box.max.y - origin.y ) * invdiry;\n\t\t\ttymax = ( box.min.y - origin.y ) * invdiry;\n\n\t\t}\n\n\t\tif ( ( tmin > tymax ) || ( tymin > tmax ) ) return null;\n\n\t\t// These lines also handle the case where tmin or tmax is NaN\n\t\t// (result of 0 * Infinity). x !== x returns true if x is NaN\n\n\t\tif ( tymin > tmin || tmin !== tmin ) tmin = tymin;\n\n\t\tif ( tymax < tmax || tmax !== tmax ) tmax = tymax;\n\n\t\tif ( invdirz >= 0 ) {\n\n\t\t\ttzmin = ( box.min.z - origin.z ) * invdirz;\n\t\t\ttzmax = ( box.max.z - origin.z ) * invdirz;\n\n\t\t} else {\n\n\t\t\ttzmin = ( box.max.z - origin.z ) * invdirz;\n\t\t\ttzmax = ( box.min.z - origin.z ) * invdirz;\n\n\t\t}\n\n\t\tif ( ( tmin > tzmax ) || ( tzmin > tmax ) ) return null;\n\n\t\tif ( tzmin > tmin || tmin !== tmin ) tmin = tzmin;\n\n\t\tif ( tzmax < tmax || tmax !== tmax ) tmax = tzmax;\n\n\t\t//return point closest to the ray (positive side)\n\n\t\tif ( tmax < 0 ) return null;\n\n\t\treturn this.at( tmin >= 0 ? tmin : tmax, optionalTarget );\n\n\t},\n\n\tintersectsBox: ( function () {\n\n\t\tvar v = new Vector3();\n\n\t\treturn function intersectsBox( box ) {\n\n\t\t\treturn this.intersectBox( box, v ) !== null;\n\n\t\t};\n\n\t} )(),\n\n\tintersectTriangle: function () {\n\n\t\t// Compute the offset origin, edges, and normal.\n\t\tvar diff = new Vector3();\n\t\tvar edge1 = new Vector3();\n\t\tvar edge2 = new Vector3();\n\t\tvar normal = new Vector3();\n\n\t\treturn function intersectTriangle( a, b, c, backfaceCulling, optionalTarget ) {\n\n\t\t\t// from http://www.geometrictools.com/GTEngine/Include/Mathematics/GteIntrRay3Triangle3.h\n\n\t\t\tedge1.subVectors( b, a );\n\t\t\tedge2.subVectors( c, a );\n\t\t\tnormal.crossVectors( edge1, edge2 );\n\n\t\t\t// Solve Q + t*D = b1*E1 + b2*E2 (Q = kDiff, D = ray direction,\n\t\t\t// E1 = kEdge1, E2 = kEdge2, N = Cross(E1,E2)) by\n\t\t\t// |Dot(D,N)|*b1 = sign(Dot(D,N))*Dot(D,Cross(Q,E2))\n\t\t\t// |Dot(D,N)|*b2 = sign(Dot(D,N))*Dot(D,Cross(E1,Q))\n\t\t\t// |Dot(D,N)|*t = -sign(Dot(D,N))*Dot(Q,N)\n\t\t\tvar DdN = this.direction.dot( normal );\n\t\t\tvar sign;\n\n\t\t\tif ( DdN > 0 ) {\n\n\t\t\t\tif ( backfaceCulling ) return null;\n\t\t\t\tsign = 1;\n\n\t\t\t} else if ( DdN < 0 ) {\n\n\t\t\t\tsign = - 1;\n\t\t\t\tDdN = - DdN;\n\n\t\t\t} else {\n\n\t\t\t\treturn null;\n\n\t\t\t}\n\n\t\t\tdiff.subVectors( this.origin, a );\n\t\t\tvar DdQxE2 = sign * this.direction.dot( edge2.crossVectors( diff, edge2 ) );\n\n\t\t\t// b1 < 0, no intersection\n\t\t\tif ( DdQxE2 < 0 ) {\n\n\t\t\t\treturn null;\n\n\t\t\t}\n\n\t\t\tvar DdE1xQ = sign * this.direction.dot( edge1.cross( diff ) );\n\n\t\t\t// b2 < 0, no intersection\n\t\t\tif ( DdE1xQ < 0 ) {\n\n\t\t\t\treturn null;\n\n\t\t\t}\n\n\t\t\t// b1+b2 > 1, no intersection\n\t\t\tif ( DdQxE2 + DdE1xQ > DdN ) {\n\n\t\t\t\treturn null;\n\n\t\t\t}\n\n\t\t\t// Line intersects triangle, check if ray does.\n\t\t\tvar QdN = - sign * diff.dot( normal );\n\n\t\t\t// t < 0, no intersection\n\t\t\tif ( QdN < 0 ) {\n\n\t\t\t\treturn null;\n\n\t\t\t}\n\n\t\t\t// Ray intersects triangle.\n\t\t\treturn this.at( QdN / DdN, optionalTarget );\n\n\t\t};\n\n\t}(),\n\n\tapplyMatrix4: function ( matrix4 ) {\n\n\t\tthis.direction.add( this.origin ).applyMatrix4( matrix4 );\n\t\tthis.origin.applyMatrix4( matrix4 );\n\t\tthis.direction.sub( this.origin );\n\t\tthis.direction.normalize();\n\n\t\treturn this;\n\n\t},\n\n\tequals: function ( ray ) {\n\n\t\treturn ray.origin.equals( this.origin ) && ray.direction.equals( this.direction );\n\n\t}\n\n};\n\n\nexport { Ray };\n","import { Quaternion } from './Quaternion';\nimport { Vector3 } from './Vector3';\nimport { Matrix4 } from './Matrix4';\nimport { _Math } from './Math';\n\n/**\n * @author mrdoob / http://mrdoob.com/\n * @author WestLangley / http://github.com/WestLangley\n * @author bhouston / http://clara.io\n */\n\nfunction Euler( x, y, z, order ) {\n\n\tthis._x = x || 0;\n\tthis._y = y || 0;\n\tthis._z = z || 0;\n\tthis._order = order || Euler.DefaultOrder;\n\n}\n\nEuler.RotationOrders = [ 'XYZ', 'YZX', 'ZXY', 'XZY', 'YXZ', 'ZYX' ];\n\nEuler.DefaultOrder = 'XYZ';\n\nEuler.prototype = {\n\n\tconstructor: Euler,\n\n\tisEuler: true,\n\n\tget x () {\n\n\t\treturn this._x;\n\n\t},\n\n\tset x ( value ) {\n\n\t\tthis._x = value;\n\t\tthis.onChangeCallback();\n\n\t},\n\n\tget y () {\n\n\t\treturn this._y;\n\n\t},\n\n\tset y ( value ) {\n\n\t\tthis._y = value;\n\t\tthis.onChangeCallback();\n\n\t},\n\n\tget z () {\n\n\t\treturn this._z;\n\n\t},\n\n\tset z ( value ) {\n\n\t\tthis._z = value;\n\t\tthis.onChangeCallback();\n\n\t},\n\n\tget order () {\n\n\t\treturn this._order;\n\n\t},\n\n\tset order ( value ) {\n\n\t\tthis._order = value;\n\t\tthis.onChangeCallback();\n\n\t},\n\n\tset: function ( x, y, z, order ) {\n\n\t\tthis._x = x;\n\t\tthis._y = y;\n\t\tthis._z = z;\n\t\tthis._order = order || this._order;\n\n\t\tthis.onChangeCallback();\n\n\t\treturn this;\n\n\t},\n\n\tclone: function () {\n\n\t\treturn new this.constructor( this._x, this._y, this._z, this._order );\n\n\t},\n\n\tcopy: function ( euler ) {\n\n\t\tthis._x = euler._x;\n\t\tthis._y = euler._y;\n\t\tthis._z = euler._z;\n\t\tthis._order = euler._order;\n\n\t\tthis.onChangeCallback();\n\n\t\treturn this;\n\n\t},\n\n\tsetFromRotationMatrix: function ( m, order, update ) {\n\n\t\tvar clamp = _Math.clamp;\n\n\t\t// assumes the upper 3x3 of m is a pure rotation matrix (i.e, unscaled)\n\n\t\tvar te = m.elements;\n\t\tvar m11 = te[ 0 ], m12 = te[ 4 ], m13 = te[ 8 ];\n\t\tvar m21 = te[ 1 ], m22 = te[ 5 ], m23 = te[ 9 ];\n\t\tvar m31 = te[ 2 ], m32 = te[ 6 ], m33 = te[ 10 ];\n\n\t\torder = order || this._order;\n\n\t\tif ( order === 'XYZ' ) {\n\n\t\t\tthis._y = Math.asin( clamp( m13, - 1, 1 ) );\n\n\t\t\tif ( Math.abs( m13 ) < 0.99999 ) {\n\n\t\t\t\tthis._x = Math.atan2( - m23, m33 );\n\t\t\t\tthis._z = Math.atan2( - m12, m11 );\n\n\t\t\t} else {\n\n\t\t\t\tthis._x = Math.atan2( m32, m22 );\n\t\t\t\tthis._z = 0;\n\n\t\t\t}\n\n\t\t} else if ( order === 'YXZ' ) {\n\n\t\t\tthis._x = Math.asin( - clamp( m23, - 1, 1 ) );\n\n\t\t\tif ( Math.abs( m23 ) < 0.99999 ) {\n\n\t\t\t\tthis._y = Math.atan2( m13, m33 );\n\t\t\t\tthis._z = Math.atan2( m21, m22 );\n\n\t\t\t} else {\n\n\t\t\t\tthis._y = Math.atan2( - m31, m11 );\n\t\t\t\tthis._z = 0;\n\n\t\t\t}\n\n\t\t} else if ( order === 'ZXY' ) {\n\n\t\t\tthis._x = Math.asin( clamp( m32, - 1, 1 ) );\n\n\t\t\tif ( Math.abs( m32 ) < 0.99999 ) {\n\n\t\t\t\tthis._y = Math.atan2( - m31, m33 );\n\t\t\t\tthis._z = Math.atan2( - m12, m22 );\n\n\t\t\t} else {\n\n\t\t\t\tthis._y = 0;\n\t\t\t\tthis._z = Math.atan2( m21, m11 );\n\n\t\t\t}\n\n\t\t} else if ( order === 'ZYX' ) {\n\n\t\t\tthis._y = Math.asin( - clamp( m31, - 1, 1 ) );\n\n\t\t\tif ( Math.abs( m31 ) < 0.99999 ) {\n\n\t\t\t\tthis._x = Math.atan2( m32, m33 );\n\t\t\t\tthis._z = Math.atan2( m21, m11 );\n\n\t\t\t} else {\n\n\t\t\t\tthis._x = 0;\n\t\t\t\tthis._z = Math.atan2( - m12, m22 );\n\n\t\t\t}\n\n\t\t} else if ( order === 'YZX' ) {\n\n\t\t\tthis._z = Math.asin( clamp( m21, - 1, 1 ) );\n\n\t\t\tif ( Math.abs( m21 ) < 0.99999 ) {\n\n\t\t\t\tthis._x = Math.atan2( - m23, m22 );\n\t\t\t\tthis._y = Math.atan2( - m31, m11 );\n\n\t\t\t} else {\n\n\t\t\t\tthis._x = 0;\n\t\t\t\tthis._y = Math.atan2( m13, m33 );\n\n\t\t\t}\n\n\t\t} else if ( order === 'XZY' ) {\n\n\t\t\tthis._z = Math.asin( - clamp( m12, - 1, 1 ) );\n\n\t\t\tif ( Math.abs( m12 ) < 0.99999 ) {\n\n\t\t\t\tthis._x = Math.atan2( m32, m22 );\n\t\t\t\tthis._y = Math.atan2( m13, m11 );\n\n\t\t\t} else {\n\n\t\t\t\tthis._x = Math.atan2( - m23, m33 );\n\t\t\t\tthis._y = 0;\n\n\t\t\t}\n\n\t\t} else {\n\n\t\t\tconsole.warn( 'THREE.Euler: .setFromRotationMatrix() given unsupported order: ' + order );\n\n\t\t}\n\n\t\tthis._order = order;\n\n\t\tif ( update !== false ) this.onChangeCallback();\n\n\t\treturn this;\n\n\t},\n\n\tsetFromQuaternion: function () {\n\n\t\tvar matrix;\n\n\t\treturn function setFromQuaternion( q, order, update ) {\n\n\t\t\tif ( matrix === undefined ) matrix = new Matrix4();\n\n\t\t\tmatrix.makeRotationFromQuaternion( q );\n\n\t\t\treturn this.setFromRotationMatrix( matrix, order, update );\n\n\t\t};\n\n\t}(),\n\n\tsetFromVector3: function ( v, order ) {\n\n\t\treturn this.set( v.x, v.y, v.z, order || this._order );\n\n\t},\n\n\treorder: function () {\n\n\t\t// WARNING: this discards revolution information -bhouston\n\n\t\tvar q = new Quaternion();\n\n\t\treturn function reorder( newOrder ) {\n\n\t\t\tq.setFromEuler( this );\n\n\t\t\treturn this.setFromQuaternion( q, newOrder );\n\n\t\t};\n\n\t}(),\n\n\tequals: function ( euler ) {\n\n\t\treturn ( euler._x === this._x ) && ( euler._y === this._y ) && ( euler._z === this._z ) && ( euler._order === this._order );\n\n\t},\n\n\tfromArray: function ( array ) {\n\n\t\tthis._x = array[ 0 ];\n\t\tthis._y = array[ 1 ];\n\t\tthis._z = array[ 2 ];\n\t\tif ( array[ 3 ] !== undefined ) this._order = array[ 3 ];\n\n\t\tthis.onChangeCallback();\n\n\t\treturn this;\n\n\t},\n\n\ttoArray: function ( array, offset ) {\n\n\t\tif ( array === undefined ) array = [];\n\t\tif ( offset === undefined ) offset = 0;\n\n\t\tarray[ offset ] = this._x;\n\t\tarray[ offset + 1 ] = this._y;\n\t\tarray[ offset + 2 ] = this._z;\n\t\tarray[ offset + 3 ] = this._order;\n\n\t\treturn array;\n\n\t},\n\n\ttoVector3: function ( optionalResult ) {\n\n\t\tif ( optionalResult ) {\n\n\t\t\treturn optionalResult.set( this._x, this._y, this._z );\n\n\t\t} else {\n\n\t\t\treturn new Vector3( this._x, this._y, this._z );\n\n\t\t}\n\n\t},\n\n\tonChange: function ( callback ) {\n\n\t\tthis.onChangeCallback = callback;\n\n\t\treturn this;\n\n\t},\n\n\tonChangeCallback: function () {}\n\n};\n\n\nexport { Euler };\n","/**\n * @author mrdoob / http://mrdoob.com/\n */\n\nfunction Layers() {\n\n\tthis.mask = 1;\n\n}\n\nLayers.prototype = {\n\n\tconstructor: Layers,\n\n\tset: function ( channel ) {\n\n\t\tthis.mask = 1 << channel;\n\n\t},\n\n\tenable: function ( channel ) {\n\n\t\tthis.mask |= 1 << channel;\n\n\t},\n\n\ttoggle: function ( channel ) {\n\n\t\tthis.mask ^= 1 << channel;\n\n\t},\n\n\tdisable: function ( channel ) {\n\n\t\tthis.mask &= ~ ( 1 << channel );\n\n\t},\n\n\ttest: function ( layers ) {\n\n\t\treturn ( this.mask & layers.mask ) !== 0;\n\n\t}\n\n};\n\n\nexport { Layers };\n","import { Quaternion } from '../math/Quaternion';\nimport { Vector3 } from '../math/Vector3';\nimport { Matrix4 } from '../math/Matrix4';\nimport { EventDispatcher } from './EventDispatcher';\nimport { Euler } from '../math/Euler';\nimport { Layers } from './Layers';\nimport { Matrix3 } from '../math/Matrix3';\nimport { _Math } from '../math/Math';\n\n/**\n * @author mrdoob / http://mrdoob.com/\n * @author mikael emtinger / http://gomo.se/\n * @author alteredq / http://alteredqualia.com/\n * @author WestLangley / http://github.com/WestLangley\n * @author elephantatwork / www.elephantatwork.ch\n */\n\nfunction Object3D() {\n\n\tObject.defineProperty( this, 'id', { value: Object3DIdCount() } );\n\n\tthis.uuid = _Math.generateUUID();\n\n\tthis.name = '';\n\tthis.type = 'Object3D';\n\n\tthis.parent = null;\n\tthis.children = [];\n\n\tthis.up = Object3D.DefaultUp.clone();\n\n\tvar position = new Vector3();\n\tvar rotation = new Euler();\n\tvar quaternion = new Quaternion();\n\tvar scale = new Vector3( 1, 1, 1 );\n\n\tfunction onRotationChange() {\n\n\t\tquaternion.setFromEuler( rotation, false );\n\n\t}\n\n\tfunction onQuaternionChange() {\n\n\t\trotation.setFromQuaternion( quaternion, undefined, false );\n\n\t}\n\n\trotation.onChange( onRotationChange );\n\tquaternion.onChange( onQuaternionChange );\n\n\tObject.defineProperties( this, {\n\t\tposition: {\n\t\t\tenumerable: true,\n\t\t\tvalue: position\n\t\t},\n\t\trotation: {\n\t\t\tenumerable: true,\n\t\t\tvalue: rotation\n\t\t},\n\t\tquaternion: {\n\t\t\tenumerable: true,\n\t\t\tvalue: quaternion\n\t\t},\n\t\tscale: {\n\t\t\tenumerable: true,\n\t\t\tvalue: scale\n\t\t},\n\t\tmodelViewMatrix: {\n\t\t\tvalue: new Matrix4()\n\t\t},\n\t\tnormalMatrix: {\n\t\t\tvalue: new Matrix3()\n\t\t}\n\t} );\n\n\tthis.matrix = new Matrix4();\n\tthis.matrixWorld = new Matrix4();\n\n\tthis.matrixAutoUpdate = Object3D.DefaultMatrixAutoUpdate;\n\tthis.matrixWorldNeedsUpdate = false;\n\n\tthis.layers = new Layers();\n\tthis.visible = true;\n\n\tthis.castShadow = false;\n\tthis.receiveShadow = false;\n\n\tthis.frustumCulled = true;\n\tthis.renderOrder = 0;\n\n\tthis.userData = {};\n\n\tthis.onBeforeRender = function(){}; \n\tthis.onAfterRender = function(){};\n\n}\n\nObject3D.DefaultUp = new Vector3( 0, 1, 0 );\nObject3D.DefaultMatrixAutoUpdate = true;\n\nObject.assign( Object3D.prototype, EventDispatcher.prototype, {\n\n\tisObject3D: true,\n\n\tapplyMatrix: function ( matrix ) {\n\n\t\tthis.matrix.multiplyMatrices( matrix, this.matrix );\n\n\t\tthis.matrix.decompose( this.position, this.quaternion, this.scale );\n\n\t},\n\n\tsetRotationFromAxisAngle: function ( axis, angle ) {\n\n\t\t// assumes axis is normalized\n\n\t\tthis.quaternion.setFromAxisAngle( axis, angle );\n\n\t},\n\n\tsetRotationFromEuler: function ( euler ) {\n\n\t\tthis.quaternion.setFromEuler( euler, true );\n\n\t},\n\n\tsetRotationFromMatrix: function ( m ) {\n\n\t\t// assumes the upper 3x3 of m is a pure rotation matrix (i.e, unscaled)\n\n\t\tthis.quaternion.setFromRotationMatrix( m );\n\n\t},\n\n\tsetRotationFromQuaternion: function ( q ) {\n\n\t\t// assumes q is normalized\n\n\t\tthis.quaternion.copy( q );\n\n\t},\n\n\trotateOnAxis: function () {\n\n\t\t// rotate object on axis in object space\n\t\t// axis is assumed to be normalized\n\n\t\tvar q1 = new Quaternion();\n\n\t\treturn function rotateOnAxis( axis, angle ) {\n\n\t\t\tq1.setFromAxisAngle( axis, angle );\n\n\t\t\tthis.quaternion.multiply( q1 );\n\n\t\t\treturn this;\n\n\t\t};\n\n\t}(),\n\n\trotateX: function () {\n\n\t\tvar v1 = new Vector3( 1, 0, 0 );\n\n\t\treturn function rotateX( angle ) {\n\n\t\t\treturn this.rotateOnAxis( v1, angle );\n\n\t\t};\n\n\t}(),\n\n\trotateY: function () {\n\n\t\tvar v1 = new Vector3( 0, 1, 0 );\n\n\t\treturn function rotateY( angle ) {\n\n\t\t\treturn this.rotateOnAxis( v1, angle );\n\n\t\t};\n\n\t}(),\n\n\trotateZ: function () {\n\n\t\tvar v1 = new Vector3( 0, 0, 1 );\n\n\t\treturn function rotateZ( angle ) {\n\n\t\t\treturn this.rotateOnAxis( v1, angle );\n\n\t\t};\n\n\t}(),\n\n\ttranslateOnAxis: function () {\n\n\t\t// translate object by distance along axis in object space\n\t\t// axis is assumed to be normalized\n\n\t\tvar v1 = new Vector3();\n\n\t\treturn function translateOnAxis( axis, distance ) {\n\n\t\t\tv1.copy( axis ).applyQuaternion( this.quaternion );\n\n\t\t\tthis.position.add( v1.multiplyScalar( distance ) );\n\n\t\t\treturn this;\n\n\t\t};\n\n\t}(),\n\n\ttranslateX: function () {\n\n\t\tvar v1 = new Vector3( 1, 0, 0 );\n\n\t\treturn function translateX( distance ) {\n\n\t\t\treturn this.translateOnAxis( v1, distance );\n\n\t\t};\n\n\t}(),\n\n\ttranslateY: function () {\n\n\t\tvar v1 = new Vector3( 0, 1, 0 );\n\n\t\treturn function translateY( distance ) {\n\n\t\t\treturn this.translateOnAxis( v1, distance );\n\n\t\t};\n\n\t}(),\n\n\ttranslateZ: function () {\n\n\t\tvar v1 = new Vector3( 0, 0, 1 );\n\n\t\treturn function translateZ( distance ) {\n\n\t\t\treturn this.translateOnAxis( v1, distance );\n\n\t\t};\n\n\t}(),\n\n\tlocalToWorld: function ( vector ) {\n\n\t\treturn vector.applyMatrix4( this.matrixWorld );\n\n\t},\n\n\tworldToLocal: function () {\n\n\t\tvar m1 = new Matrix4();\n\n\t\treturn function worldToLocal( vector ) {\n\n\t\t\treturn vector.applyMatrix4( m1.getInverse( this.matrixWorld ) );\n\n\t\t};\n\n\t}(),\n\n\tlookAt: function () {\n\n\t\t// This routine does not support objects with rotated and/or translated parent(s)\n\n\t\tvar m1 = new Matrix4();\n\n\t\treturn function lookAt( vector ) {\n\n\t\t\tm1.lookAt( vector, this.position, this.up );\n\n\t\t\tthis.quaternion.setFromRotationMatrix( m1 );\n\n\t\t};\n\n\t}(),\n\n\tadd: function ( object ) {\n\n\t\tif ( arguments.length > 1 ) {\n\n\t\t\tfor ( var i = 0; i < arguments.length; i ++ ) {\n\n\t\t\t\tthis.add( arguments[ i ] );\n\n\t\t\t}\n\n\t\t\treturn this;\n\n\t\t}\n\n\t\tif ( object === this ) {\n\n\t\t\tconsole.error( \"THREE.Object3D.add: object can't be added as a child of itself.\", object );\n\t\t\treturn this;\n\n\t\t}\n\n\t\tif ( (object && object.isObject3D) ) {\n\n\t\t\tif ( object.parent !== null ) {\n\n\t\t\t\tobject.parent.remove( object );\n\n\t\t\t}\n\n\t\t\tobject.parent = this;\n\t\t\tobject.dispatchEvent( { type: 'added' } );\n\n\t\t\tthis.children.push( object );\n\n\t\t} else {\n\n\t\t\tconsole.error( \"THREE.Object3D.add: object not an instance of THREE.Object3D.\", object );\n\n\t\t}\n\n\t\treturn this;\n\n\t},\n\n\tremove: function ( object ) {\n\n\t\tif ( arguments.length > 1 ) {\n\n\t\t\tfor ( var i = 0; i < arguments.length; i ++ ) {\n\n\t\t\t\tthis.remove( arguments[ i ] );\n\n\t\t\t}\n\n\t\t}\n\n\t\tvar index = this.children.indexOf( object );\n\n\t\tif ( index !== - 1 ) {\n\n\t\t\tobject.parent = null;\n\n\t\t\tobject.dispatchEvent( { type: 'removed' } );\n\n\t\t\tthis.children.splice( index, 1 );\n\n\t\t}\n\n\t},\n\n\tgetObjectById: function ( id ) {\n\n\t\treturn this.getObjectByProperty( 'id', id );\n\n\t},\n\n\tgetObjectByName: function ( name ) {\n\n\t\treturn this.getObjectByProperty( 'name', name );\n\n\t},\n\n\tgetObjectByProperty: function ( name, value ) {\n\n\t\tif ( this[ name ] === value ) return this;\n\n\t\tfor ( var i = 0, l = this.children.length; i < l; i ++ ) {\n\n\t\t\tvar child = this.children[ i ];\n\t\t\tvar object = child.getObjectByProperty( name, value );\n\n\t\t\tif ( object !== undefined ) {\n\n\t\t\t\treturn object;\n\n\t\t\t}\n\n\t\t}\n\n\t\treturn undefined;\n\n\t},\n\n\tgetWorldPosition: function ( optionalTarget ) {\n\n\t\tvar result = optionalTarget || new Vector3();\n\n\t\tthis.updateMatrixWorld( true );\n\n\t\treturn result.setFromMatrixPosition( this.matrixWorld );\n\n\t},\n\n\tgetWorldQuaternion: function () {\n\n\t\tvar position = new Vector3();\n\t\tvar scale = new Vector3();\n\n\t\treturn function getWorldQuaternion( optionalTarget ) {\n\n\t\t\tvar result = optionalTarget || new Quaternion();\n\n\t\t\tthis.updateMatrixWorld( true );\n\n\t\t\tthis.matrixWorld.decompose( position, result, scale );\n\n\t\t\treturn result;\n\n\t\t};\n\n\t}(),\n\n\tgetWorldRotation: function () {\n\n\t\tvar quaternion = new Quaternion();\n\n\t\treturn function getWorldRotation( optionalTarget ) {\n\n\t\t\tvar result = optionalTarget || new Euler();\n\n\t\t\tthis.getWorldQuaternion( quaternion );\n\n\t\t\treturn result.setFromQuaternion( quaternion, this.rotation.order, false );\n\n\t\t};\n\n\t}(),\n\n\tgetWorldScale: function () {\n\n\t\tvar position = new Vector3();\n\t\tvar quaternion = new Quaternion();\n\n\t\treturn function getWorldScale( optionalTarget ) {\n\n\t\t\tvar result = optionalTarget || new Vector3();\n\n\t\t\tthis.updateMatrixWorld( true );\n\n\t\t\tthis.matrixWorld.decompose( position, quaternion, result );\n\n\t\t\treturn result;\n\n\t\t};\n\n\t}(),\n\n\tgetWorldDirection: function () {\n\n\t\tvar quaternion = new Quaternion();\n\n\t\treturn function getWorldDirection( optionalTarget ) {\n\n\t\t\tvar result = optionalTarget || new Vector3();\n\n\t\t\tthis.getWorldQuaternion( quaternion );\n\n\t\t\treturn result.set( 0, 0, 1 ).applyQuaternion( quaternion );\n\n\t\t};\n\n\t}(),\n\n\traycast: function () {},\n\n\ttraverse: function ( callback ) {\n\n\t\tcallback( this );\n\n\t\tvar children = this.children;\n\n\t\tfor ( var i = 0, l = children.length; i < l; i ++ ) {\n\n\t\t\tchildren[ i ].traverse( callback );\n\n\t\t}\n\n\t},\n\n\ttraverseVisible: function ( callback ) {\n\n\t\tif ( this.visible === false ) return;\n\n\t\tcallback( this );\n\n\t\tvar children = this.children;\n\n\t\tfor ( var i = 0, l = children.length; i < l; i ++ ) {\n\n\t\t\tchildren[ i ].traverseVisible( callback );\n\n\t\t}\n\n\t},\n\n\ttraverseAncestors: function ( callback ) {\n\n\t\tvar parent = this.parent;\n\n\t\tif ( parent !== null ) {\n\n\t\t\tcallback( parent );\n\n\t\t\tparent.traverseAncestors( callback );\n\n\t\t}\n\n\t},\n\n\tupdateMatrix: function () {\n\n\t\tthis.matrix.compose( this.position, this.quaternion, this.scale );\n\n\t\tthis.matrixWorldNeedsUpdate = true;\n\n\t},\n\n\tupdateMatrixWorld: function ( force ) {\n\n\t\tif ( this.matrixAutoUpdate === true ) this.updateMatrix();\n\n\t\tif ( this.matrixWorldNeedsUpdate === true || force === true ) {\n\n\t\t\tif ( this.parent === null ) {\n\n\t\t\t\tthis.matrixWorld.copy( this.matrix );\n\n\t\t\t} else {\n\n\t\t\t\tthis.matrixWorld.multiplyMatrices( this.parent.matrixWorld, this.matrix );\n\n\t\t\t}\n\n\t\t\tthis.matrixWorldNeedsUpdate = false;\n\n\t\t\tforce = true;\n\n\t\t}\n\n\t\t// update children\n\n\t\tvar children = this.children;\n\n\t\tfor ( var i = 0, l = children.length; i < l; i ++ ) {\n\n\t\t\tchildren[ i ].updateMatrixWorld( force );\n\n\t\t}\n\n\t},\n\n\ttoJSON: function ( meta ) {\n\n\t\t// meta is '' when called from JSON.stringify\n\t\tvar isRootObject = ( meta === undefined || meta === '' );\n\n\t\tvar output = {};\n\n\t\t// meta is a hash used to collect geometries, materials.\n\t\t// not providing it implies that this is the root object\n\t\t// being serialized.\n\t\tif ( isRootObject ) {\n\n\t\t\t// initialize meta obj\n\t\t\tmeta = {\n\t\t\t\tgeometries: {},\n\t\t\t\tmaterials: {},\n\t\t\t\ttextures: {},\n\t\t\t\timages: {}\n\t\t\t};\n\n\t\t\toutput.metadata = {\n\t\t\t\tversion: 4.4,\n\t\t\t\ttype: 'Object',\n\t\t\t\tgenerator: 'Object3D.toJSON'\n\t\t\t};\n\n\t\t}\n\n\t\t// standard Object3D serialization\n\n\t\tvar object = {};\n\n\t\tobject.uuid = this.uuid;\n\t\tobject.type = this.type;\n\n\t\tif ( this.name !== '' ) object.name = this.name;\n\t\tif ( JSON.stringify( this.userData ) !== '{}' ) object.userData = this.userData;\n\t\tif ( this.castShadow === true ) object.castShadow = true;\n\t\tif ( this.receiveShadow === true ) object.receiveShadow = true;\n\t\tif ( this.visible === false ) object.visible = false;\n\n\t\tobject.matrix = this.matrix.toArray();\n\n\t\t//\n\n\t\tif ( this.geometry !== undefined ) {\n\n\t\t\tif ( meta.geometries[ this.geometry.uuid ] === undefined ) {\n\n\t\t\t\tmeta.geometries[ this.geometry.uuid ] = this.geometry.toJSON( meta );\n\n\t\t\t}\n\n\t\t\tobject.geometry = this.geometry.uuid;\n\n\t\t}\n\n\t\tif ( this.material !== undefined ) {\n\n\t\t\tif ( meta.materials[ this.material.uuid ] === undefined ) {\n\n\t\t\t\tmeta.materials[ this.material.uuid ] = this.material.toJSON( meta );\n\n\t\t\t}\n\n\t\t\tobject.material = this.material.uuid;\n\n\t\t}\n\n\t\t//\n\n\t\tif ( this.children.length > 0 ) {\n\n\t\t\tobject.children = [];\n\n\t\t\tfor ( var i = 0; i < this.children.length; i ++ ) {\n\n\t\t\t\tobject.children.push( this.children[ i ].toJSON( meta ).object );\n\n\t\t\t}\n\n\t\t}\n\n\t\tif ( isRootObject ) {\n\n\t\t\tvar geometries = extractFromCache( meta.geometries );\n\t\t\tvar materials = extractFromCache( meta.materials );\n\t\t\tvar textures = extractFromCache( meta.textures );\n\t\t\tvar images = extractFromCache( meta.images );\n\n\t\t\tif ( geometries.length > 0 ) output.geometries = geometries;\n\t\t\tif ( materials.length > 0 ) output.materials = materials;\n\t\t\tif ( textures.length > 0 ) output.textures = textures;\n\t\t\tif ( images.length > 0 ) output.images = images;\n\n\t\t}\n\n\t\toutput.object = object;\n\n\t\treturn output;\n\n\t\t// extract data from the cache hash\n\t\t// remove metadata on each item\n\t\t// and return as array\n\t\tfunction extractFromCache( cache ) {\n\n\t\t\tvar values = [];\n\t\t\tfor ( var key in cache ) {\n\n\t\t\t\tvar data = cache[ key ];\n\t\t\t\tdelete data.metadata;\n\t\t\t\tvalues.push( data );\n\n\t\t\t}\n\t\t\treturn values;\n\n\t\t}\n\n\t},\n\n\tclone: function ( recursive ) {\n\n\t\treturn new this.constructor().copy( this, recursive );\n\n\t},\n\n\tcopy: function ( source, recursive ) {\n\n\t\tif ( recursive === undefined ) recursive = true;\n\n\t\tthis.name = source.name;\n\n\t\tthis.up.copy( source.up );\n\n\t\tthis.position.copy( source.position );\n\t\tthis.quaternion.copy( source.quaternion );\n\t\tthis.scale.copy( source.scale );\n\n\t\tthis.matrix.copy( source.matrix );\n\t\tthis.matrixWorld.copy( source.matrixWorld );\n\n\t\tthis.matrixAutoUpdate = source.matrixAutoUpdate;\n\t\tthis.matrixWorldNeedsUpdate = source.matrixWorldNeedsUpdate;\n\n\t\tthis.visible = source.visible;\n\n\t\tthis.castShadow = source.castShadow;\n\t\tthis.receiveShadow = source.receiveShadow;\n\n\t\tthis.frustumCulled = source.frustumCulled;\n\t\tthis.renderOrder = source.renderOrder;\n\n\t\tthis.userData = JSON.parse( JSON.stringify( source.userData ) );\n\n\t\tif ( recursive === true ) {\n\n\t\t\tfor ( var i = 0; i < source.children.length; i ++ ) {\n\n\t\t\t\tvar child = source.children[ i ];\n\t\t\t\tthis.add( child.clone() );\n\n\t\t\t}\n\n\t\t}\n\n\t\treturn this;\n\n\t}\n\n} );\n\nvar count = 0;\nfunction Object3DIdCount() { return count++; };\n\n\nexport { Object3DIdCount, Object3D };\n","import { Vector3 } from './Vector3';\nimport { _Math } from './Math';\n\n/**\n * @author bhouston / http://clara.io\n */\n\nfunction Line3( start, end ) {\n\n\tthis.start = ( start !== undefined ) ? start : new Vector3();\n\tthis.end = ( end !== undefined ) ? end : new Vector3();\n\n}\n\nLine3.prototype = {\n\n\tconstructor: Line3,\n\n\tset: function ( start, end ) {\n\n\t\tthis.start.copy( start );\n\t\tthis.end.copy( end );\n\n\t\treturn this;\n\n\t},\n\n\tclone: function () {\n\n\t\treturn new this.constructor().copy( this );\n\n\t},\n\n\tcopy: function ( line ) {\n\n\t\tthis.start.copy( line.start );\n\t\tthis.end.copy( line.end );\n\n\t\treturn this;\n\n\t},\n\n\tgetCenter: function ( optionalTarget ) {\n\n\t\tvar result = optionalTarget || new Vector3();\n\t\treturn result.addVectors( this.start, this.end ).multiplyScalar( 0.5 );\n\n\t},\n\n\tdelta: function ( optionalTarget ) {\n\n\t\tvar result = optionalTarget || new Vector3();\n\t\treturn result.subVectors( this.end, this.start );\n\n\t},\n\n\tdistanceSq: function () {\n\n\t\treturn this.start.distanceToSquared( this.end );\n\n\t},\n\n\tdistance: function () {\n\n\t\treturn this.start.distanceTo( this.end );\n\n\t},\n\n\tat: function ( t, optionalTarget ) {\n\n\t\tvar result = optionalTarget || new Vector3();\n\n\t\treturn this.delta( result ).multiplyScalar( t ).add( this.start );\n\n\t},\n\n\tclosestPointToPointParameter: function () {\n\n\t\tvar startP = new Vector3();\n\t\tvar startEnd = new Vector3();\n\n\t\treturn function closestPointToPointParameter( point, clampToLine ) {\n\n\t\t\tstartP.subVectors( point, this.start );\n\t\t\tstartEnd.subVectors( this.end, this.start );\n\n\t\t\tvar startEnd2 = startEnd.dot( startEnd );\n\t\t\tvar startEnd_startP = startEnd.dot( startP );\n\n\t\t\tvar t = startEnd_startP / startEnd2;\n\n\t\t\tif ( clampToLine ) {\n\n\t\t\t\tt = _Math.clamp( t, 0, 1 );\n\n\t\t\t}\n\n\t\t\treturn t;\n\n\t\t};\n\n\t}(),\n\n\tclosestPointToPoint: function ( point, clampToLine, optionalTarget ) {\n\n\t\tvar t = this.closestPointToPointParameter( point, clampToLine );\n\n\t\tvar result = optionalTarget || new Vector3();\n\n\t\treturn this.delta( result ).multiplyScalar( t ).add( this.start );\n\n\t},\n\n\tapplyMatrix4: function ( matrix ) {\n\n\t\tthis.start.applyMatrix4( matrix );\n\t\tthis.end.applyMatrix4( matrix );\n\n\t\treturn this;\n\n\t},\n\n\tequals: function ( line ) {\n\n\t\treturn line.start.equals( this.start ) && line.end.equals( this.end );\n\n\t}\n\n};\n\n\nexport { Line3 };\n","import { Vector3 } from './Vector3';\nimport { Line3 } from './Line3';\nimport { Plane } from './Plane';\n\n/**\n * @author bhouston / http://clara.io\n * @author mrdoob / http://mrdoob.com/\n */\n\nfunction Triangle( a, b, c ) {\n\n\tthis.a = ( a !== undefined ) ? a : new Vector3();\n\tthis.b = ( b !== undefined ) ? b : new Vector3();\n\tthis.c = ( c !== undefined ) ? c : new Vector3();\n\n}\n\nTriangle.normal = function () {\n\n\tvar v0 = new Vector3();\n\n\treturn function normal( a, b, c, optionalTarget ) {\n\n\t\tvar result = optionalTarget || new Vector3();\n\n\t\tresult.subVectors( c, b );\n\t\tv0.subVectors( a, b );\n\t\tresult.cross( v0 );\n\n\t\tvar resultLengthSq = result.lengthSq();\n\t\tif ( resultLengthSq > 0 ) {\n\n\t\t\treturn result.multiplyScalar( 1 / Math.sqrt( resultLengthSq ) );\n\n\t\t}\n\n\t\treturn result.set( 0, 0, 0 );\n\n\t};\n\n}();\n\n// static/instance method to calculate barycentric coordinates\n// based on: http://www.blackpawn.com/texts/pointinpoly/default.html\nTriangle.barycoordFromPoint = function () {\n\n\tvar v0 = new Vector3();\n\tvar v1 = new Vector3();\n\tvar v2 = new Vector3();\n\n\treturn function barycoordFromPoint( point, a, b, c, optionalTarget ) {\n\n\t\tv0.subVectors( c, a );\n\t\tv1.subVectors( b, a );\n\t\tv2.subVectors( point, a );\n\n\t\tvar dot00 = v0.dot( v0 );\n\t\tvar dot01 = v0.dot( v1 );\n\t\tvar dot02 = v0.dot( v2 );\n\t\tvar dot11 = v1.dot( v1 );\n\t\tvar dot12 = v1.dot( v2 );\n\n\t\tvar denom = ( dot00 * dot11 - dot01 * dot01 );\n\n\t\tvar result = optionalTarget || new Vector3();\n\n\t\t// collinear or singular triangle\n\t\tif ( denom === 0 ) {\n\n\t\t\t// arbitrary location outside of triangle?\n\t\t\t// not sure if this is the best idea, maybe should be returning undefined\n\t\t\treturn result.set( - 2, - 1, - 1 );\n\n\t\t}\n\n\t\tvar invDenom = 1 / denom;\n\t\tvar u = ( dot11 * dot02 - dot01 * dot12 ) * invDenom;\n\t\tvar v = ( dot00 * dot12 - dot01 * dot02 ) * invDenom;\n\n\t\t// barycentric coordinates must always sum to 1\n\t\treturn result.set( 1 - u - v, v, u );\n\n\t};\n\n}();\n\nTriangle.containsPoint = function () {\n\n\tvar v1 = new Vector3();\n\n\treturn function containsPoint( point, a, b, c ) {\n\n\t\tvar result = Triangle.barycoordFromPoint( point, a, b, c, v1 );\n\n\t\treturn ( result.x >= 0 ) && ( result.y >= 0 ) && ( ( result.x + result.y ) <= 1 );\n\n\t};\n\n}();\n\nTriangle.prototype = {\n\n\tconstructor: Triangle,\n\n\tset: function ( a, b, c ) {\n\n\t\tthis.a.copy( a );\n\t\tthis.b.copy( b );\n\t\tthis.c.copy( c );\n\n\t\treturn this;\n\n\t},\n\n\tsetFromPointsAndIndices: function ( points, i0, i1, i2 ) {\n\n\t\tthis.a.copy( points[ i0 ] );\n\t\tthis.b.copy( points[ i1 ] );\n\t\tthis.c.copy( points[ i2 ] );\n\n\t\treturn this;\n\n\t},\n\n\tclone: function () {\n\n\t\treturn new this.constructor().copy( this );\n\n\t},\n\n\tcopy: function ( triangle ) {\n\n\t\tthis.a.copy( triangle.a );\n\t\tthis.b.copy( triangle.b );\n\t\tthis.c.copy( triangle.c );\n\n\t\treturn this;\n\n\t},\n\n\tarea: function () {\n\n\t\tvar v0 = new Vector3();\n\t\tvar v1 = new Vector3();\n\n\t\treturn function area() {\n\n\t\t\tv0.subVectors( this.c, this.b );\n\t\t\tv1.subVectors( this.a, this.b );\n\n\t\t\treturn v0.cross( v1 ).length() * 0.5;\n\n\t\t};\n\n\t}(),\n\n\tmidpoint: function ( optionalTarget ) {\n\n\t\tvar result = optionalTarget || new Vector3();\n\t\treturn result.addVectors( this.a, this.b ).add( this.c ).multiplyScalar( 1 / 3 );\n\n\t},\n\n\tnormal: function ( optionalTarget ) {\n\n\t\treturn Triangle.normal( this.a, this.b, this.c, optionalTarget );\n\n\t},\n\n\tplane: function ( optionalTarget ) {\n\n\t\tvar result = optionalTarget || new Plane();\n\n\t\treturn result.setFromCoplanarPoints( this.a, this.b, this.c );\n\n\t},\n\n\tbarycoordFromPoint: function ( point, optionalTarget ) {\n\n\t\treturn Triangle.barycoordFromPoint( point, this.a, this.b, this.c, optionalTarget );\n\n\t},\n\n\tcontainsPoint: function ( point ) {\n\n\t\treturn Triangle.containsPoint( point, this.a, this.b, this.c );\n\n\t},\n\n\tclosestPointToPoint: function () {\n\n\t\tvar plane, edgeList, projectedPoint, closestPoint;\n\n\t\treturn function closestPointToPoint( point, optionalTarget ) {\n\n\t\t\tif ( plane === undefined ) {\n\n\t\t\t\tplane = new Plane();\n\t\t\t\tedgeList = [ new Line3(), new Line3(), new Line3() ];\n\t\t\t\tprojectedPoint = new Vector3();\n\t\t\t\tclosestPoint = new Vector3();\n\n\t\t\t}\n\n\t\t\tvar result = optionalTarget || new Vector3();\n\t\t\tvar minDistance = Infinity;\n\n\t\t\t// project the point onto the plane of the triangle\n\n\t\t\tplane.setFromCoplanarPoints( this.a, this.b, this.c );\n\t\t\tplane.projectPoint( point, projectedPoint );\n\n\t\t\t// check if the projection lies within the triangle\n\n\t\t\tif( this.containsPoint( projectedPoint ) === true ) {\n\n\t\t\t\t// if so, this is the closest point\n\n\t\t\t\tresult.copy( projectedPoint );\n\n\t\t\t} else {\n\n\t\t\t\t// if not, the point falls outside the triangle. the result is the closest point to the triangle's edges or vertices\n\n\t\t\t\tedgeList[ 0 ].set( this.a, this.b );\n\t\t\t\tedgeList[ 1 ].set( this.b, this.c );\n\t\t\t\tedgeList[ 2 ].set( this.c, this.a );\n\n\t\t\t\tfor( var i = 0; i < edgeList.length; i ++ ) {\n\n\t\t\t\t\tedgeList[ i ].closestPointToPoint( projectedPoint, true, closestPoint );\n\n\t\t\t\t\tvar distance = projectedPoint.distanceToSquared( closestPoint );\n\n\t\t\t\t\tif( distance < minDistance ) {\n\n\t\t\t\t\t\tminDistance = distance;\n\n\t\t\t\t\t\tresult.copy( closestPoint );\n\n\t\t\t\t\t}\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t\treturn result;\n\n\t\t};\n\n\t}(),\n\n\tequals: function ( triangle ) {\n\n\t\treturn triangle.a.equals( this.a ) && triangle.b.equals( this.b ) && triangle.c.equals( this.c );\n\n\t}\n\n};\n\n\nexport { Triangle };\n","import { Color } from '../math/Color';\nimport { Vector3 } from '../math/Vector3';\n\n/**\n * @author mrdoob / http://mrdoob.com/\n * @author alteredq / http://alteredqualia.com/\n */\n\nfunction Face3( a, b, c, normal, color, materialIndex ) {\n\n\tthis.a = a;\n\tthis.b = b;\n\tthis.c = c;\n\n\tthis.normal = (normal && normal.isVector3) ? normal : new Vector3();\n\tthis.vertexNormals = Array.isArray( normal ) ? normal : [];\n\n\tthis.color = (color && color.isColor) ? color : new Color();\n\tthis.vertexColors = Array.isArray( color ) ? color : [];\n\n\tthis.materialIndex = materialIndex !== undefined ? materialIndex : 0;\n\n}\n\nFace3.prototype = {\n\n\tconstructor: Face3,\n\n\tclone: function () {\n\n\t\treturn new this.constructor().copy( this );\n\n\t},\n\n\tcopy: function ( source ) {\n\n\t\tthis.a = source.a;\n\t\tthis.b = source.b;\n\t\tthis.c = source.c;\n\n\t\tthis.normal.copy( source.normal );\n\t\tthis.color.copy( source.color );\n\n\t\tthis.materialIndex = source.materialIndex;\n\n\t\tfor ( var i = 0, il = source.vertexNormals.length; i < il; i ++ ) {\n\n\t\t\tthis.vertexNormals[ i ] = source.vertexNormals[ i ].clone();\n\n\t\t}\n\n\t\tfor ( var i = 0, il = source.vertexColors.length; i < il; i ++ ) {\n\n\t\t\tthis.vertexColors[ i ] = source.vertexColors[ i ].clone();\n\n\t\t}\n\n\t\treturn this;\n\n\t}\n\n};\n\n\nexport { Face3 };\n","import { Material } from './Material';\nimport { MultiplyOperation } from '../constants';\nimport { Color } from '../math/Color';\n\n/**\n * @author mrdoob / http://mrdoob.com/\n * @author alteredq / http://alteredqualia.com/\n *\n * parameters = {\n * color: ,\n * opacity: ,\n * map: new THREE.Texture( ),\n *\n * aoMap: new THREE.Texture( ),\n * aoMapIntensity: \n *\n * specularMap: new THREE.Texture( ),\n *\n * alphaMap: new THREE.Texture( ),\n *\n * envMap: new THREE.TextureCube( [posx, negx, posy, negy, posz, negz] ),\n * combine: THREE.Multiply,\n * reflectivity: ,\n * refractionRatio: ,\n *\n * shading: THREE.SmoothShading,\n * depthTest: ,\n * depthWrite: ,\n *\n * wireframe: ,\n * wireframeLinewidth: ,\n *\n * skinning: ,\n * morphTargets: \n * }\n */\n\nfunction MeshBasicMaterial( parameters ) {\n\n\tMaterial.call( this );\n\n\tthis.type = 'MeshBasicMaterial';\n\n\tthis.color = new Color( 0xffffff ); // emissive\n\n\tthis.map = null;\n\n\tthis.aoMap = null;\n\tthis.aoMapIntensity = 1.0;\n\n\tthis.specularMap = null;\n\n\tthis.alphaMap = null;\n\n\tthis.envMap = null;\n\tthis.combine = MultiplyOperation;\n\tthis.reflectivity = 1;\n\tthis.refractionRatio = 0.98;\n\n\tthis.wireframe = false;\n\tthis.wireframeLinewidth = 1;\n\tthis.wireframeLinecap = 'round';\n\tthis.wireframeLinejoin = 'round';\n\n\tthis.skinning = false;\n\tthis.morphTargets = false;\n\n\tthis.lights = false;\n\n\tthis.setValues( parameters );\n\n}\n\nMeshBasicMaterial.prototype = Object.create( Material.prototype );\nMeshBasicMaterial.prototype.constructor = MeshBasicMaterial;\n\nMeshBasicMaterial.prototype.isMeshBasicMaterial = true;\n\nMeshBasicMaterial.prototype.copy = function ( source ) {\n\n\tMaterial.prototype.copy.call( this, source );\n\n\tthis.color.copy( source.color );\n\n\tthis.map = source.map;\n\n\tthis.aoMap = source.aoMap;\n\tthis.aoMapIntensity = source.aoMapIntensity;\n\n\tthis.specularMap = source.specularMap;\n\n\tthis.alphaMap = source.alphaMap;\n\n\tthis.envMap = source.envMap;\n\tthis.combine = source.combine;\n\tthis.reflectivity = source.reflectivity;\n\tthis.refractionRatio = source.refractionRatio;\n\n\tthis.wireframe = source.wireframe;\n\tthis.wireframeLinewidth = source.wireframeLinewidth;\n\tthis.wireframeLinecap = source.wireframeLinecap;\n\tthis.wireframeLinejoin = source.wireframeLinejoin;\n\n\tthis.skinning = source.skinning;\n\tthis.morphTargets = source.morphTargets;\n\n\treturn this;\n\n};\n\n\nexport { MeshBasicMaterial };\n","import { Vector4 } from '../math/Vector4';\nimport { Vector3 } from '../math/Vector3';\nimport { Vector2 } from '../math/Vector2';\nimport { Color } from '../math/Color';\nimport { _Math } from '../math/Math';\n\n/**\n * @author mrdoob / http://mrdoob.com/\n */\n\nfunction BufferAttribute( array, itemSize, normalized ) {\n\n\tif ( Array.isArray( array ) ) {\n\n\t\tthrow new TypeError( 'THREE.BufferAttribute: array should be a Typed Array.' );\n\n\t}\n\n\tthis.uuid = _Math.generateUUID();\n\n\tthis.array = array;\n\tthis.itemSize = itemSize;\n\tthis.count = array !== undefined ? array.length / itemSize : 0;\n\tthis.normalized = normalized === true;\n\n\tthis.dynamic = false;\n\tthis.updateRange = { offset: 0, count: - 1 };\n\n\tthis.version = 0;\n\n}\n\nBufferAttribute.prototype = {\n\n\tconstructor: BufferAttribute,\n\n\tisBufferAttribute: true,\n\n\tset needsUpdate( value ) {\n\n\t\tif ( value === true ) this.version ++;\n\n\t},\n\n\tsetArray: function ( array ) {\n\n\t\tif ( Array.isArray( array ) ) {\n\n\t\t\tthrow new TypeError( 'THREE.BufferAttribute: array should be a Typed Array.' );\n\n\t\t}\n\n\t\tthis.count = array !== undefined ? array.length / this.itemSize : 0;\n\t\tthis.array = array;\n\n\t},\n\n\tsetDynamic: function ( value ) {\n\n\t\tthis.dynamic = value;\n\n\t\treturn this;\n\n\t},\n\n\tcopy: function ( source ) {\n\n\t\tthis.array = new source.array.constructor( source.array );\n\t\tthis.itemSize = source.itemSize;\n\t\tthis.count = source.count;\n\t\tthis.normalized = source.normalized;\n\n\t\tthis.dynamic = source.dynamic;\n\n\t\treturn this;\n\n\t},\n\n\tcopyAt: function ( index1, attribute, index2 ) {\n\n\t\tindex1 *= this.itemSize;\n\t\tindex2 *= attribute.itemSize;\n\n\t\tfor ( var i = 0, l = this.itemSize; i < l; i ++ ) {\n\n\t\t\tthis.array[ index1 + i ] = attribute.array[ index2 + i ];\n\n\t\t}\n\n\t\treturn this;\n\n\t},\n\n\tcopyArray: function ( array ) {\n\n\t\tthis.array.set( array );\n\n\t\treturn this;\n\n\t},\n\n\tcopyColorsArray: function ( colors ) {\n\n\t\tvar array = this.array, offset = 0;\n\n\t\tfor ( var i = 0, l = colors.length; i < l; i ++ ) {\n\n\t\t\tvar color = colors[ i ];\n\n\t\t\tif ( color === undefined ) {\n\n\t\t\t\tconsole.warn( 'THREE.BufferAttribute.copyColorsArray(): color is undefined', i );\n\t\t\t\tcolor = new Color();\n\n\t\t\t}\n\n\t\t\tarray[ offset ++ ] = color.r;\n\t\t\tarray[ offset ++ ] = color.g;\n\t\t\tarray[ offset ++ ] = color.b;\n\n\t\t}\n\n\t\treturn this;\n\n\t},\n\n\tcopyIndicesArray: function ( indices ) {\n\n\t\tvar array = this.array, offset = 0;\n\n\t\tfor ( var i = 0, l = indices.length; i < l; i ++ ) {\n\n\t\t\tvar index = indices[ i ];\n\n\t\t\tarray[ offset ++ ] = index.a;\n\t\t\tarray[ offset ++ ] = index.b;\n\t\t\tarray[ offset ++ ] = index.c;\n\n\t\t}\n\n\t\treturn this;\n\n\t},\n\n\tcopyVector2sArray: function ( vectors ) {\n\n\t\tvar array = this.array, offset = 0;\n\n\t\tfor ( var i = 0, l = vectors.length; i < l; i ++ ) {\n\n\t\t\tvar vector = vectors[ i ];\n\n\t\t\tif ( vector === undefined ) {\n\n\t\t\t\tconsole.warn( 'THREE.BufferAttribute.copyVector2sArray(): vector is undefined', i );\n\t\t\t\tvector = new Vector2();\n\n\t\t\t}\n\n\t\t\tarray[ offset ++ ] = vector.x;\n\t\t\tarray[ offset ++ ] = vector.y;\n\n\t\t}\n\n\t\treturn this;\n\n\t},\n\n\tcopyVector3sArray: function ( vectors ) {\n\n\t\tvar array = this.array, offset = 0;\n\n\t\tfor ( var i = 0, l = vectors.length; i < l; i ++ ) {\n\n\t\t\tvar vector = vectors[ i ];\n\n\t\t\tif ( vector === undefined ) {\n\n\t\t\t\tconsole.warn( 'THREE.BufferAttribute.copyVector3sArray(): vector is undefined', i );\n\t\t\t\tvector = new Vector3();\n\n\t\t\t}\n\n\t\t\tarray[ offset ++ ] = vector.x;\n\t\t\tarray[ offset ++ ] = vector.y;\n\t\t\tarray[ offset ++ ] = vector.z;\n\n\t\t}\n\n\t\treturn this;\n\n\t},\n\n\tcopyVector4sArray: function ( vectors ) {\n\n\t\tvar array = this.array, offset = 0;\n\n\t\tfor ( var i = 0, l = vectors.length; i < l; i ++ ) {\n\n\t\t\tvar vector = vectors[ i ];\n\n\t\t\tif ( vector === undefined ) {\n\n\t\t\t\tconsole.warn( 'THREE.BufferAttribute.copyVector4sArray(): vector is undefined', i );\n\t\t\t\tvector = new Vector4();\n\n\t\t\t}\n\n\t\t\tarray[ offset ++ ] = vector.x;\n\t\t\tarray[ offset ++ ] = vector.y;\n\t\t\tarray[ offset ++ ] = vector.z;\n\t\t\tarray[ offset ++ ] = vector.w;\n\n\t\t}\n\n\t\treturn this;\n\n\t},\n\n\tset: function ( value, offset ) {\n\n\t\tif ( offset === undefined ) offset = 0;\n\n\t\tthis.array.set( value, offset );\n\n\t\treturn this;\n\n\t},\n\n\tgetX: function ( index ) {\n\n\t\treturn this.array[ index * this.itemSize ];\n\n\t},\n\n\tsetX: function ( index, x ) {\n\n\t\tthis.array[ index * this.itemSize ] = x;\n\n\t\treturn this;\n\n\t},\n\n\tgetY: function ( index ) {\n\n\t\treturn this.array[ index * this.itemSize + 1 ];\n\n\t},\n\n\tsetY: function ( index, y ) {\n\n\t\tthis.array[ index * this.itemSize + 1 ] = y;\n\n\t\treturn this;\n\n\t},\n\n\tgetZ: function ( index ) {\n\n\t\treturn this.array[ index * this.itemSize + 2 ];\n\n\t},\n\n\tsetZ: function ( index, z ) {\n\n\t\tthis.array[ index * this.itemSize + 2 ] = z;\n\n\t\treturn this;\n\n\t},\n\n\tgetW: function ( index ) {\n\n\t\treturn this.array[ index * this.itemSize + 3 ];\n\n\t},\n\n\tsetW: function ( index, w ) {\n\n\t\tthis.array[ index * this.itemSize + 3 ] = w;\n\n\t\treturn this;\n\n\t},\n\n\tsetXY: function ( index, x, y ) {\n\n\t\tindex *= this.itemSize;\n\n\t\tthis.array[ index + 0 ] = x;\n\t\tthis.array[ index + 1 ] = y;\n\n\t\treturn this;\n\n\t},\n\n\tsetXYZ: function ( index, x, y, z ) {\n\n\t\tindex *= this.itemSize;\n\n\t\tthis.array[ index + 0 ] = x;\n\t\tthis.array[ index + 1 ] = y;\n\t\tthis.array[ index + 2 ] = z;\n\n\t\treturn this;\n\n\t},\n\n\tsetXYZW: function ( index, x, y, z, w ) {\n\n\t\tindex *= this.itemSize;\n\n\t\tthis.array[ index + 0 ] = x;\n\t\tthis.array[ index + 1 ] = y;\n\t\tthis.array[ index + 2 ] = z;\n\t\tthis.array[ index + 3 ] = w;\n\n\t\treturn this;\n\n\t},\n\n\tclone: function () {\n\n\t\treturn new this.constructor().copy( this );\n\n\t}\n\n};\n\n//\n\nfunction Int8Attribute( array, itemSize ) {\n\n\treturn new BufferAttribute( new Int8Array( array ), itemSize );\n\n}\n\nfunction Uint8Attribute( array, itemSize ) {\n\n\treturn new BufferAttribute( new Uint8Array( array ), itemSize );\n\n}\n\nfunction Uint8ClampedAttribute( array, itemSize ) {\n\n\treturn new BufferAttribute( new Uint8ClampedArray( array ), itemSize );\n\n}\n\nfunction Int16Attribute( array, itemSize ) {\n\n\treturn new BufferAttribute( new Int16Array( array ), itemSize );\n\n}\n\nfunction Uint16Attribute( array, itemSize ) {\n\n\treturn new BufferAttribute( new Uint16Array( array ), itemSize );\n\n}\n\nfunction Int32Attribute( array, itemSize ) {\n\n\treturn new BufferAttribute( new Int32Array( array ), itemSize );\n\n}\n\nfunction Uint32Attribute( array, itemSize ) {\n\n\treturn new BufferAttribute( new Uint32Array( array ), itemSize );\n\n}\n\nfunction Float32Attribute( array, itemSize ) {\n\n\treturn new BufferAttribute( new Float32Array( array ), itemSize );\n\n}\n\nfunction Float64Attribute( array, itemSize ) {\n\n\treturn new BufferAttribute( new Float64Array( array ), itemSize );\n\n}\n\n// Deprecated\n\nfunction DynamicBufferAttribute( array, itemSize ) {\n\n\tconsole.warn( 'THREE.DynamicBufferAttribute has been removed. Use new THREE.BufferAttribute().setDynamic( true ) instead.' );\n\treturn new BufferAttribute( array, itemSize ).setDynamic( true );\n\n}\n\n\nexport {\n DynamicBufferAttribute,\n Float64Attribute,\n Float32Attribute,\n Uint32Attribute,\n Int32Attribute,\n Uint16Attribute,\n Int16Attribute,\n Uint8ClampedAttribute,\n Uint8Attribute,\n Int8Attribute,\n BufferAttribute\n};\n","import { EventDispatcher } from './EventDispatcher';\nimport { Face3 } from './Face3';\nimport { Matrix3 } from '../math/Matrix3';\nimport { Sphere } from '../math/Sphere';\nimport { Box3 } from '../math/Box3';\nimport { Vector3 } from '../math/Vector3';\nimport { Matrix4 } from '../math/Matrix4';\nimport { Vector2 } from '../math/Vector2';\nimport { Color } from '../math/Color';\nimport { Object3D } from './Object3D';\nimport { _Math } from '../math/Math';\n\n/**\n * @author mrdoob / http://mrdoob.com/\n * @author kile / http://kile.stravaganza.org/\n * @author alteredq / http://alteredqualia.com/\n * @author mikael emtinger / http://gomo.se/\n * @author zz85 / http://www.lab4games.net/zz85/blog\n * @author bhouston / http://clara.io\n */\n\nfunction Geometry() {\n\n\tObject.defineProperty( this, 'id', { value: GeometryIdCount() } );\n\n\tthis.uuid = _Math.generateUUID();\n\n\tthis.name = '';\n\tthis.type = 'Geometry';\n\n\tthis.vertices = [];\n\tthis.colors = [];\n\tthis.faces = [];\n\tthis.faceVertexUvs = [ [] ];\n\n\tthis.morphTargets = [];\n\tthis.morphNormals = [];\n\n\tthis.skinWeights = [];\n\tthis.skinIndices = [];\n\n\tthis.lineDistances = [];\n\n\tthis.boundingBox = null;\n\tthis.boundingSphere = null;\n\n\t// update flags\n\n\tthis.elementsNeedUpdate = false;\n\tthis.verticesNeedUpdate = false;\n\tthis.uvsNeedUpdate = false;\n\tthis.normalsNeedUpdate = false;\n\tthis.colorsNeedUpdate = false;\n\tthis.lineDistancesNeedUpdate = false;\n\tthis.groupsNeedUpdate = false;\n\n}\n\nObject.assign( Geometry.prototype, EventDispatcher.prototype, {\n\n\tisGeometry: true,\n\n\tapplyMatrix: function ( matrix ) {\n\n\t\tvar normalMatrix = new Matrix3().getNormalMatrix( matrix );\n\n\t\tfor ( var i = 0, il = this.vertices.length; i < il; i ++ ) {\n\n\t\t\tvar vertex = this.vertices[ i ];\n\t\t\tvertex.applyMatrix4( matrix );\n\n\t\t}\n\n\t\tfor ( var i = 0, il = this.faces.length; i < il; i ++ ) {\n\n\t\t\tvar face = this.faces[ i ];\n\t\t\tface.normal.applyMatrix3( normalMatrix ).normalize();\n\n\t\t\tfor ( var j = 0, jl = face.vertexNormals.length; j < jl; j ++ ) {\n\n\t\t\t\tface.vertexNormals[ j ].applyMatrix3( normalMatrix ).normalize();\n\n\t\t\t}\n\n\t\t}\n\n\t\tif ( this.boundingBox !== null ) {\n\n\t\t\tthis.computeBoundingBox();\n\n\t\t}\n\n\t\tif ( this.boundingSphere !== null ) {\n\n\t\t\tthis.computeBoundingSphere();\n\n\t\t}\n\n\t\tthis.verticesNeedUpdate = true;\n\t\tthis.normalsNeedUpdate = true;\n\n\t\treturn this;\n\n\t},\n\n\trotateX: function () {\n\n\t\t// rotate geometry around world x-axis\n\n\t\tvar m1;\n\n\t\treturn function rotateX( angle ) {\n\n\t\t\tif ( m1 === undefined ) m1 = new Matrix4();\n\n\t\t\tm1.makeRotationX( angle );\n\n\t\t\tthis.applyMatrix( m1 );\n\n\t\t\treturn this;\n\n\t\t};\n\n\t}(),\n\n\trotateY: function () {\n\n\t\t// rotate geometry around world y-axis\n\n\t\tvar m1;\n\n\t\treturn function rotateY( angle ) {\n\n\t\t\tif ( m1 === undefined ) m1 = new Matrix4();\n\n\t\t\tm1.makeRotationY( angle );\n\n\t\t\tthis.applyMatrix( m1 );\n\n\t\t\treturn this;\n\n\t\t};\n\n\t}(),\n\n\trotateZ: function () {\n\n\t\t// rotate geometry around world z-axis\n\n\t\tvar m1;\n\n\t\treturn function rotateZ( angle ) {\n\n\t\t\tif ( m1 === undefined ) m1 = new Matrix4();\n\n\t\t\tm1.makeRotationZ( angle );\n\n\t\t\tthis.applyMatrix( m1 );\n\n\t\t\treturn this;\n\n\t\t};\n\n\t}(),\n\n\ttranslate: function () {\n\n\t\t// translate geometry\n\n\t\tvar m1;\n\n\t\treturn function translate( x, y, z ) {\n\n\t\t\tif ( m1 === undefined ) m1 = new Matrix4();\n\n\t\t\tm1.makeTranslation( x, y, z );\n\n\t\t\tthis.applyMatrix( m1 );\n\n\t\t\treturn this;\n\n\t\t};\n\n\t}(),\n\n\tscale: function () {\n\n\t\t// scale geometry\n\n\t\tvar m1;\n\n\t\treturn function scale( x, y, z ) {\n\n\t\t\tif ( m1 === undefined ) m1 = new Matrix4();\n\n\t\t\tm1.makeScale( x, y, z );\n\n\t\t\tthis.applyMatrix( m1 );\n\n\t\t\treturn this;\n\n\t\t};\n\n\t}(),\n\n\tlookAt: function () {\n\n\t\tvar obj;\n\n\t\treturn function lookAt( vector ) {\n\n\t\t\tif ( obj === undefined ) obj = new Object3D();\n\n\t\t\tobj.lookAt( vector );\n\n\t\t\tobj.updateMatrix();\n\n\t\t\tthis.applyMatrix( obj.matrix );\n\n\t\t};\n\n\t}(),\n\n\tfromBufferGeometry: function ( geometry ) {\n\n\t\tvar scope = this;\n\n\t\tvar indices = geometry.index !== null ? geometry.index.array : undefined;\n\t\tvar attributes = geometry.attributes;\n\n\t\tvar positions = attributes.position.array;\n\t\tvar normals = attributes.normal !== undefined ? attributes.normal.array : undefined;\n\t\tvar colors = attributes.color !== undefined ? attributes.color.array : undefined;\n\t\tvar uvs = attributes.uv !== undefined ? attributes.uv.array : undefined;\n\t\tvar uvs2 = attributes.uv2 !== undefined ? attributes.uv2.array : undefined;\n\n\t\tif ( uvs2 !== undefined ) this.faceVertexUvs[ 1 ] = [];\n\n\t\tvar tempNormals = [];\n\t\tvar tempUVs = [];\n\t\tvar tempUVs2 = [];\n\n\t\tfor ( var i = 0, j = 0; i < positions.length; i += 3, j += 2 ) {\n\n\t\t\tscope.vertices.push( new Vector3( positions[ i ], positions[ i + 1 ], positions[ i + 2 ] ) );\n\n\t\t\tif ( normals !== undefined ) {\n\n\t\t\t\ttempNormals.push( new Vector3( normals[ i ], normals[ i + 1 ], normals[ i + 2 ] ) );\n\n\t\t\t}\n\n\t\t\tif ( colors !== undefined ) {\n\n\t\t\t\tscope.colors.push( new Color( colors[ i ], colors[ i + 1 ], colors[ i + 2 ] ) );\n\n\t\t\t}\n\n\t\t\tif ( uvs !== undefined ) {\n\n\t\t\t\ttempUVs.push( new Vector2( uvs[ j ], uvs[ j + 1 ] ) );\n\n\t\t\t}\n\n\t\t\tif ( uvs2 !== undefined ) {\n\n\t\t\t\ttempUVs2.push( new Vector2( uvs2[ j ], uvs2[ j + 1 ] ) );\n\n\t\t\t}\n\n\t\t}\n\n\t\tfunction addFace( a, b, c, materialIndex ) {\n\n\t\t\tvar vertexNormals = normals !== undefined ? [ tempNormals[ a ].clone(), tempNormals[ b ].clone(), tempNormals[ c ].clone() ] : [];\n\t\t\tvar vertexColors = colors !== undefined ? [ scope.colors[ a ].clone(), scope.colors[ b ].clone(), scope.colors[ c ].clone() ] : [];\n\n\t\t\tvar face = new Face3( a, b, c, vertexNormals, vertexColors, materialIndex );\n\n\t\t\tscope.faces.push( face );\n\n\t\t\tif ( uvs !== undefined ) {\n\n\t\t\t\tscope.faceVertexUvs[ 0 ].push( [ tempUVs[ a ].clone(), tempUVs[ b ].clone(), tempUVs[ c ].clone() ] );\n\n\t\t\t}\n\n\t\t\tif ( uvs2 !== undefined ) {\n\n\t\t\t\tscope.faceVertexUvs[ 1 ].push( [ tempUVs2[ a ].clone(), tempUVs2[ b ].clone(), tempUVs2[ c ].clone() ] );\n\n\t\t\t}\n\n\t\t}\n\n\t\tif ( indices !== undefined ) {\n\n\t\t\tvar groups = geometry.groups;\n\n\t\t\tif ( groups.length > 0 ) {\n\n\t\t\t\tfor ( var i = 0; i < groups.length; i ++ ) {\n\n\t\t\t\t\tvar group = groups[ i ];\n\n\t\t\t\t\tvar start = group.start;\n\t\t\t\t\tvar count = group.count;\n\n\t\t\t\t\tfor ( var j = start, jl = start + count; j < jl; j += 3 ) {\n\n\t\t\t\t\t\taddFace( indices[ j ], indices[ j + 1 ], indices[ j + 2 ], group.materialIndex );\n\n\t\t\t\t\t}\n\n\t\t\t\t}\n\n\t\t\t} else {\n\n\t\t\t\tfor ( var i = 0; i < indices.length; i += 3 ) {\n\n\t\t\t\t\taddFace( indices[ i ], indices[ i + 1 ], indices[ i + 2 ] );\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t} else {\n\n\t\t\tfor ( var i = 0; i < positions.length / 3; i += 3 ) {\n\n\t\t\t\taddFace( i, i + 1, i + 2 );\n\n\t\t\t}\n\n\t\t}\n\n\t\tthis.computeFaceNormals();\n\n\t\tif ( geometry.boundingBox !== null ) {\n\n\t\t\tthis.boundingBox = geometry.boundingBox.clone();\n\n\t\t}\n\n\t\tif ( geometry.boundingSphere !== null ) {\n\n\t\t\tthis.boundingSphere = geometry.boundingSphere.clone();\n\n\t\t}\n\n\t\treturn this;\n\n\t},\n\n\tcenter: function () {\n\n\t\tthis.computeBoundingBox();\n\n\t\tvar offset = this.boundingBox.getCenter().negate();\n\n\t\tthis.translate( offset.x, offset.y, offset.z );\n\n\t\treturn offset;\n\n\t},\n\n\tnormalize: function () {\n\n\t\tthis.computeBoundingSphere();\n\n\t\tvar center = this.boundingSphere.center;\n\t\tvar radius = this.boundingSphere.radius;\n\n\t\tvar s = radius === 0 ? 1 : 1.0 / radius;\n\n\t\tvar matrix = new Matrix4();\n\t\tmatrix.set(\n\t\t\ts, 0, 0, - s * center.x,\n\t\t\t0, s, 0, - s * center.y,\n\t\t\t0, 0, s, - s * center.z,\n\t\t\t0, 0, 0, 1\n\t\t);\n\n\t\tthis.applyMatrix( matrix );\n\n\t\treturn this;\n\n\t},\n\n\tcomputeFaceNormals: function () {\n\n\t\tvar cb = new Vector3(), ab = new Vector3();\n\n\t\tfor ( var f = 0, fl = this.faces.length; f < fl; f ++ ) {\n\n\t\t\tvar face = this.faces[ f ];\n\n\t\t\tvar vA = this.vertices[ face.a ];\n\t\t\tvar vB = this.vertices[ face.b ];\n\t\t\tvar vC = this.vertices[ face.c ];\n\n\t\t\tcb.subVectors( vC, vB );\n\t\t\tab.subVectors( vA, vB );\n\t\t\tcb.cross( ab );\n\n\t\t\tcb.normalize();\n\n\t\t\tface.normal.copy( cb );\n\n\t\t}\n\n\t},\n\n\tcomputeVertexNormals: function ( areaWeighted ) {\n\n\t\tif ( areaWeighted === undefined ) areaWeighted = true;\n\n\t\tvar v, vl, f, fl, face, vertices;\n\n\t\tvertices = new Array( this.vertices.length );\n\n\t\tfor ( v = 0, vl = this.vertices.length; v < vl; v ++ ) {\n\n\t\t\tvertices[ v ] = new Vector3();\n\n\t\t}\n\n\t\tif ( areaWeighted ) {\n\n\t\t\t// vertex normals weighted by triangle areas\n\t\t\t// http://www.iquilezles.org/www/articles/normals/normals.htm\n\n\t\t\tvar vA, vB, vC;\n\t\t\tvar cb = new Vector3(), ab = new Vector3();\n\n\t\t\tfor ( f = 0, fl = this.faces.length; f < fl; f ++ ) {\n\n\t\t\t\tface = this.faces[ f ];\n\n\t\t\t\tvA = this.vertices[ face.a ];\n\t\t\t\tvB = this.vertices[ face.b ];\n\t\t\t\tvC = this.vertices[ face.c ];\n\n\t\t\t\tcb.subVectors( vC, vB );\n\t\t\t\tab.subVectors( vA, vB );\n\t\t\t\tcb.cross( ab );\n\n\t\t\t\tvertices[ face.a ].add( cb );\n\t\t\t\tvertices[ face.b ].add( cb );\n\t\t\t\tvertices[ face.c ].add( cb );\n\n\t\t\t}\n\n\t\t} else {\n\n\t\t\tthis.computeFaceNormals();\n\n\t\t\tfor ( f = 0, fl = this.faces.length; f < fl; f ++ ) {\n\n\t\t\t\tface = this.faces[ f ];\n\n\t\t\t\tvertices[ face.a ].add( face.normal );\n\t\t\t\tvertices[ face.b ].add( face.normal );\n\t\t\t\tvertices[ face.c ].add( face.normal );\n\n\t\t\t}\n\n\t\t}\n\n\t\tfor ( v = 0, vl = this.vertices.length; v < vl; v ++ ) {\n\n\t\t\tvertices[ v ].normalize();\n\n\t\t}\n\n\t\tfor ( f = 0, fl = this.faces.length; f < fl; f ++ ) {\n\n\t\t\tface = this.faces[ f ];\n\n\t\t\tvar vertexNormals = face.vertexNormals;\n\n\t\t\tif ( vertexNormals.length === 3 ) {\n\n\t\t\t\tvertexNormals[ 0 ].copy( vertices[ face.a ] );\n\t\t\t\tvertexNormals[ 1 ].copy( vertices[ face.b ] );\n\t\t\t\tvertexNormals[ 2 ].copy( vertices[ face.c ] );\n\n\t\t\t} else {\n\n\t\t\t\tvertexNormals[ 0 ] = vertices[ face.a ].clone();\n\t\t\t\tvertexNormals[ 1 ] = vertices[ face.b ].clone();\n\t\t\t\tvertexNormals[ 2 ] = vertices[ face.c ].clone();\n\n\t\t\t}\n\n\t\t}\n\n\t\tif ( this.faces.length > 0 ) {\n\n\t\t\tthis.normalsNeedUpdate = true;\n\n\t\t}\n\n\t},\n\n\tcomputeFlatVertexNormals: function () {\n\n\t\tvar f, fl, face;\n\n\t\tthis.computeFaceNormals();\n\n\t\tfor ( f = 0, fl = this.faces.length; f < fl; f ++ ) {\n\n\t\t\tface = this.faces[ f ];\n\n\t\t\tvar vertexNormals = face.vertexNormals;\n\n\t\t\tif ( vertexNormals.length === 3 ) {\n\n\t\t\t\tvertexNormals[ 0 ].copy( face.normal );\n\t\t\t\tvertexNormals[ 1 ].copy( face.normal );\n\t\t\t\tvertexNormals[ 2 ].copy( face.normal );\n\n\t\t\t} else {\n\n\t\t\t\tvertexNormals[ 0 ] = face.normal.clone();\n\t\t\t\tvertexNormals[ 1 ] = face.normal.clone();\n\t\t\t\tvertexNormals[ 2 ] = face.normal.clone();\n\n\t\t\t}\n\n\t\t}\n\n\t\tif ( this.faces.length > 0 ) {\n\n\t\t\tthis.normalsNeedUpdate = true;\n\n\t\t}\n\n\t},\n\n\tcomputeMorphNormals: function () {\n\n\t\tvar i, il, f, fl, face;\n\n\t\t// save original normals\n\t\t// - create temp variables on first access\n\t\t// otherwise just copy (for faster repeated calls)\n\n\t\tfor ( f = 0, fl = this.faces.length; f < fl; f ++ ) {\n\n\t\t\tface = this.faces[ f ];\n\n\t\t\tif ( ! face.__originalFaceNormal ) {\n\n\t\t\t\tface.__originalFaceNormal = face.normal.clone();\n\n\t\t\t} else {\n\n\t\t\t\tface.__originalFaceNormal.copy( face.normal );\n\n\t\t\t}\n\n\t\t\tif ( ! face.__originalVertexNormals ) face.__originalVertexNormals = [];\n\n\t\t\tfor ( i = 0, il = face.vertexNormals.length; i < il; i ++ ) {\n\n\t\t\t\tif ( ! face.__originalVertexNormals[ i ] ) {\n\n\t\t\t\t\tface.__originalVertexNormals[ i ] = face.vertexNormals[ i ].clone();\n\n\t\t\t\t} else {\n\n\t\t\t\t\tface.__originalVertexNormals[ i ].copy( face.vertexNormals[ i ] );\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t}\n\n\t\t// use temp geometry to compute face and vertex normals for each morph\n\n\t\tvar tmpGeo = new Geometry();\n\t\ttmpGeo.faces = this.faces;\n\n\t\tfor ( i = 0, il = this.morphTargets.length; i < il; i ++ ) {\n\n\t\t\t// create on first access\n\n\t\t\tif ( ! this.morphNormals[ i ] ) {\n\n\t\t\t\tthis.morphNormals[ i ] = {};\n\t\t\t\tthis.morphNormals[ i ].faceNormals = [];\n\t\t\t\tthis.morphNormals[ i ].vertexNormals = [];\n\n\t\t\t\tvar dstNormalsFace = this.morphNormals[ i ].faceNormals;\n\t\t\t\tvar dstNormalsVertex = this.morphNormals[ i ].vertexNormals;\n\n\t\t\t\tvar faceNormal, vertexNormals;\n\n\t\t\t\tfor ( f = 0, fl = this.faces.length; f < fl; f ++ ) {\n\n\t\t\t\t\tfaceNormal = new Vector3();\n\t\t\t\t\tvertexNormals = { a: new Vector3(), b: new Vector3(), c: new Vector3() };\n\n\t\t\t\t\tdstNormalsFace.push( faceNormal );\n\t\t\t\t\tdstNormalsVertex.push( vertexNormals );\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t\tvar morphNormals = this.morphNormals[ i ];\n\n\t\t\t// set vertices to morph target\n\n\t\t\ttmpGeo.vertices = this.morphTargets[ i ].vertices;\n\n\t\t\t// compute morph normals\n\n\t\t\ttmpGeo.computeFaceNormals();\n\t\t\ttmpGeo.computeVertexNormals();\n\n\t\t\t// store morph normals\n\n\t\t\tvar faceNormal, vertexNormals;\n\n\t\t\tfor ( f = 0, fl = this.faces.length; f < fl; f ++ ) {\n\n\t\t\t\tface = this.faces[ f ];\n\n\t\t\t\tfaceNormal = morphNormals.faceNormals[ f ];\n\t\t\t\tvertexNormals = morphNormals.vertexNormals[ f ];\n\n\t\t\t\tfaceNormal.copy( face.normal );\n\n\t\t\t\tvertexNormals.a.copy( face.vertexNormals[ 0 ] );\n\t\t\t\tvertexNormals.b.copy( face.vertexNormals[ 1 ] );\n\t\t\t\tvertexNormals.c.copy( face.vertexNormals[ 2 ] );\n\n\t\t\t}\n\n\t\t}\n\n\t\t// restore original normals\n\n\t\tfor ( f = 0, fl = this.faces.length; f < fl; f ++ ) {\n\n\t\t\tface = this.faces[ f ];\n\n\t\t\tface.normal = face.__originalFaceNormal;\n\t\t\tface.vertexNormals = face.__originalVertexNormals;\n\n\t\t}\n\n\t},\n\n\tcomputeTangents: function () {\n\n\t\tconsole.warn( 'THREE.Geometry: .computeTangents() has been removed.' );\n\n\t},\n\n\tcomputeLineDistances: function () {\n\n\t\tvar d = 0;\n\t\tvar vertices = this.vertices;\n\n\t\tfor ( var i = 0, il = vertices.length; i < il; i ++ ) {\n\n\t\t\tif ( i > 0 ) {\n\n\t\t\t\td += vertices[ i ].distanceTo( vertices[ i - 1 ] );\n\n\t\t\t}\n\n\t\t\tthis.lineDistances[ i ] = d;\n\n\t\t}\n\n\t},\n\n\tcomputeBoundingBox: function () {\n\n\t\tif ( this.boundingBox === null ) {\n\n\t\t\tthis.boundingBox = new Box3();\n\n\t\t}\n\n\t\tthis.boundingBox.setFromPoints( this.vertices );\n\n\t},\n\n\tcomputeBoundingSphere: function () {\n\n\t\tif ( this.boundingSphere === null ) {\n\n\t\t\tthis.boundingSphere = new Sphere();\n\n\t\t}\n\n\t\tthis.boundingSphere.setFromPoints( this.vertices );\n\n\t},\n\n\tmerge: function ( geometry, matrix, materialIndexOffset ) {\n\n\t\tif ( (geometry && geometry.isGeometry) === false ) {\n\n\t\t\tconsole.error( 'THREE.Geometry.merge(): geometry not an instance of THREE.Geometry.', geometry );\n\t\t\treturn;\n\n\t\t}\n\n\t\tvar normalMatrix,\n\t\tvertexOffset = this.vertices.length,\n\t\tvertices1 = this.vertices,\n\t\tvertices2 = geometry.vertices,\n\t\tfaces1 = this.faces,\n\t\tfaces2 = geometry.faces,\n\t\tuvs1 = this.faceVertexUvs[ 0 ],\n\t\tuvs2 = geometry.faceVertexUvs[ 0 ],\n\t\tcolors1 = this.colors,\n\t\tcolors2 = geometry.colors;\n\n\t\tif ( materialIndexOffset === undefined ) materialIndexOffset = 0;\n\n\t\tif ( matrix !== undefined ) {\n\n\t\t\tnormalMatrix = new Matrix3().getNormalMatrix( matrix );\n\n\t\t}\n\n\t\t// vertices\n\n\t\tfor ( var i = 0, il = vertices2.length; i < il; i ++ ) {\n\n\t\t\tvar vertex = vertices2[ i ];\n\n\t\t\tvar vertexCopy = vertex.clone();\n\n\t\t\tif ( matrix !== undefined ) vertexCopy.applyMatrix4( matrix );\n\n\t\t\tvertices1.push( vertexCopy );\n\n\t\t}\n\n\t\t// colors\n\n\t\tfor ( var i = 0, il = colors2.length; i < il; i ++ ) {\n\n\t\t\tcolors1.push( colors2[ i ].clone() );\n\n\t\t}\n\n\t\t// faces\n\n\t\tfor ( i = 0, il = faces2.length; i < il; i ++ ) {\n\n\t\t\tvar face = faces2[ i ], faceCopy, normal, color,\n\t\t\tfaceVertexNormals = face.vertexNormals,\n\t\t\tfaceVertexColors = face.vertexColors;\n\n\t\t\tfaceCopy = new Face3( face.a + vertexOffset, face.b + vertexOffset, face.c + vertexOffset );\n\t\t\tfaceCopy.normal.copy( face.normal );\n\n\t\t\tif ( normalMatrix !== undefined ) {\n\n\t\t\t\tfaceCopy.normal.applyMatrix3( normalMatrix ).normalize();\n\n\t\t\t}\n\n\t\t\tfor ( var j = 0, jl = faceVertexNormals.length; j < jl; j ++ ) {\n\n\t\t\t\tnormal = faceVertexNormals[ j ].clone();\n\n\t\t\t\tif ( normalMatrix !== undefined ) {\n\n\t\t\t\t\tnormal.applyMatrix3( normalMatrix ).normalize();\n\n\t\t\t\t}\n\n\t\t\t\tfaceCopy.vertexNormals.push( normal );\n\n\t\t\t}\n\n\t\t\tfaceCopy.color.copy( face.color );\n\n\t\t\tfor ( var j = 0, jl = faceVertexColors.length; j < jl; j ++ ) {\n\n\t\t\t\tcolor = faceVertexColors[ j ];\n\t\t\t\tfaceCopy.vertexColors.push( color.clone() );\n\n\t\t\t}\n\n\t\t\tfaceCopy.materialIndex = face.materialIndex + materialIndexOffset;\n\n\t\t\tfaces1.push( faceCopy );\n\n\t\t}\n\n\t\t// uvs\n\n\t\tfor ( i = 0, il = uvs2.length; i < il; i ++ ) {\n\n\t\t\tvar uv = uvs2[ i ], uvCopy = [];\n\n\t\t\tif ( uv === undefined ) {\n\n\t\t\t\tcontinue;\n\n\t\t\t}\n\n\t\t\tfor ( var j = 0, jl = uv.length; j < jl; j ++ ) {\n\n\t\t\t\tuvCopy.push( uv[ j ].clone() );\n\n\t\t\t}\n\n\t\t\tuvs1.push( uvCopy );\n\n\t\t}\n\n\t},\n\n\tmergeMesh: function ( mesh ) {\n\n\t\tif ( (mesh && mesh.isMesh) === false ) {\n\n\t\t\tconsole.error( 'THREE.Geometry.mergeMesh(): mesh not an instance of THREE.Mesh.', mesh );\n\t\t\treturn;\n\n\t\t}\n\n\t\tmesh.matrixAutoUpdate && mesh.updateMatrix();\n\n\t\tthis.merge( mesh.geometry, mesh.matrix );\n\n\t},\n\n\t/*\n\t * Checks for duplicate vertices with hashmap.\n\t * Duplicated vertices are removed\n\t * and faces' vertices are updated.\n\t */\n\n\tmergeVertices: function () {\n\n\t\tvar verticesMap = {}; // Hashmap for looking up vertices by position coordinates (and making sure they are unique)\n\t\tvar unique = [], changes = [];\n\n\t\tvar v, key;\n\t\tvar precisionPoints = 4; // number of decimal points, e.g. 4 for epsilon of 0.0001\n\t\tvar precision = Math.pow( 10, precisionPoints );\n\t\tvar i, il, face;\n\t\tvar indices, j, jl;\n\n\t\tfor ( i = 0, il = this.vertices.length; i < il; i ++ ) {\n\n\t\t\tv = this.vertices[ i ];\n\t\t\tkey = Math.round( v.x * precision ) + '_' + Math.round( v.y * precision ) + '_' + Math.round( v.z * precision );\n\n\t\t\tif ( verticesMap[ key ] === undefined ) {\n\n\t\t\t\tverticesMap[ key ] = i;\n\t\t\t\tunique.push( this.vertices[ i ] );\n\t\t\t\tchanges[ i ] = unique.length - 1;\n\n\t\t\t} else {\n\n\t\t\t\t//console.log('Duplicate vertex found. ', i, ' could be using ', verticesMap[key]);\n\t\t\t\tchanges[ i ] = changes[ verticesMap[ key ] ];\n\n\t\t\t}\n\n\t\t}\n\n\n\t\t// if faces are completely degenerate after merging vertices, we\n\t\t// have to remove them from the geometry.\n\t\tvar faceIndicesToRemove = [];\n\n\t\tfor ( i = 0, il = this.faces.length; i < il; i ++ ) {\n\n\t\t\tface = this.faces[ i ];\n\n\t\t\tface.a = changes[ face.a ];\n\t\t\tface.b = changes[ face.b ];\n\t\t\tface.c = changes[ face.c ];\n\n\t\t\tindices = [ face.a, face.b, face.c ];\n\n\t\t\tvar dupIndex = - 1;\n\n\t\t\t// if any duplicate vertices are found in a Face3\n\t\t\t// we have to remove the face as nothing can be saved\n\t\t\tfor ( var n = 0; n < 3; n ++ ) {\n\n\t\t\t\tif ( indices[ n ] === indices[ ( n + 1 ) % 3 ] ) {\n\n\t\t\t\t\tdupIndex = n;\n\t\t\t\t\tfaceIndicesToRemove.push( i );\n\t\t\t\t\tbreak;\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t}\n\n\t\tfor ( i = faceIndicesToRemove.length - 1; i >= 0; i -- ) {\n\n\t\t\tvar idx = faceIndicesToRemove[ i ];\n\n\t\t\tthis.faces.splice( idx, 1 );\n\n\t\t\tfor ( j = 0, jl = this.faceVertexUvs.length; j < jl; j ++ ) {\n\n\t\t\t\tthis.faceVertexUvs[ j ].splice( idx, 1 );\n\n\t\t\t}\n\n\t\t}\n\n\t\t// Use unique set of vertices\n\n\t\tvar diff = this.vertices.length - unique.length;\n\t\tthis.vertices = unique;\n\t\treturn diff;\n\n\t},\n\n\tsortFacesByMaterialIndex: function () {\n\n\t\tvar faces = this.faces;\n\t\tvar length = faces.length;\n\n\t\t// tag faces\n\n\t\tfor ( var i = 0; i < length; i ++ ) {\n\n\t\t\tfaces[ i ]._id = i;\n\n\t\t}\n\n\t\t// sort faces\n\n\t\tfunction materialIndexSort( a, b ) {\n\n\t\t\treturn a.materialIndex - b.materialIndex;\n\n\t\t}\n\n\t\tfaces.sort( materialIndexSort );\n\n\t\t// sort uvs\n\n\t\tvar uvs1 = this.faceVertexUvs[ 0 ];\n\t\tvar uvs2 = this.faceVertexUvs[ 1 ];\n\n\t\tvar newUvs1, newUvs2;\n\n\t\tif ( uvs1 && uvs1.length === length ) newUvs1 = [];\n\t\tif ( uvs2 && uvs2.length === length ) newUvs2 = [];\n\n\t\tfor ( var i = 0; i < length; i ++ ) {\n\n\t\t\tvar id = faces[ i ]._id;\n\n\t\t\tif ( newUvs1 ) newUvs1.push( uvs1[ id ] );\n\t\t\tif ( newUvs2 ) newUvs2.push( uvs2[ id ] );\n\n\t\t}\n\n\t\tif ( newUvs1 ) this.faceVertexUvs[ 0 ] = newUvs1;\n\t\tif ( newUvs2 ) this.faceVertexUvs[ 1 ] = newUvs2;\n\n\t},\n\n\ttoJSON: function () {\n\n\t\tvar data = {\n\t\t\tmetadata: {\n\t\t\t\tversion: 4.4,\n\t\t\t\ttype: 'Geometry',\n\t\t\t\tgenerator: 'Geometry.toJSON'\n\t\t\t}\n\t\t};\n\n\t\t// standard Geometry serialization\n\n\t\tdata.uuid = this.uuid;\n\t\tdata.type = this.type;\n\t\tif ( this.name !== '' ) data.name = this.name;\n\n\t\tif ( this.parameters !== undefined ) {\n\n\t\t\tvar parameters = this.parameters;\n\n\t\t\tfor ( var key in parameters ) {\n\n\t\t\t\tif ( parameters[ key ] !== undefined ) data[ key ] = parameters[ key ];\n\n\t\t\t}\n\n\t\t\treturn data;\n\n\t\t}\n\n\t\tvar vertices = [];\n\n\t\tfor ( var i = 0; i < this.vertices.length; i ++ ) {\n\n\t\t\tvar vertex = this.vertices[ i ];\n\t\t\tvertices.push( vertex.x, vertex.y, vertex.z );\n\n\t\t}\n\n\t\tvar faces = [];\n\t\tvar normals = [];\n\t\tvar normalsHash = {};\n\t\tvar colors = [];\n\t\tvar colorsHash = {};\n\t\tvar uvs = [];\n\t\tvar uvsHash = {};\n\n\t\tfor ( var i = 0; i < this.faces.length; i ++ ) {\n\n\t\t\tvar face = this.faces[ i ];\n\n\t\t\tvar hasMaterial = true;\n\t\t\tvar hasFaceUv = false; // deprecated\n\t\t\tvar hasFaceVertexUv = this.faceVertexUvs[ 0 ][ i ] !== undefined;\n\t\t\tvar hasFaceNormal = face.normal.length() > 0;\n\t\t\tvar hasFaceVertexNormal = face.vertexNormals.length > 0;\n\t\t\tvar hasFaceColor = face.color.r !== 1 || face.color.g !== 1 || face.color.b !== 1;\n\t\t\tvar hasFaceVertexColor = face.vertexColors.length > 0;\n\n\t\t\tvar faceType = 0;\n\n\t\t\tfaceType = setBit( faceType, 0, 0 ); // isQuad\n\t\t\tfaceType = setBit( faceType, 1, hasMaterial );\n\t\t\tfaceType = setBit( faceType, 2, hasFaceUv );\n\t\t\tfaceType = setBit( faceType, 3, hasFaceVertexUv );\n\t\t\tfaceType = setBit( faceType, 4, hasFaceNormal );\n\t\t\tfaceType = setBit( faceType, 5, hasFaceVertexNormal );\n\t\t\tfaceType = setBit( faceType, 6, hasFaceColor );\n\t\t\tfaceType = setBit( faceType, 7, hasFaceVertexColor );\n\n\t\t\tfaces.push( faceType );\n\t\t\tfaces.push( face.a, face.b, face.c );\n\t\t\tfaces.push( face.materialIndex );\n\n\t\t\tif ( hasFaceVertexUv ) {\n\n\t\t\t\tvar faceVertexUvs = this.faceVertexUvs[ 0 ][ i ];\n\n\t\t\t\tfaces.push(\n\t\t\t\t\tgetUvIndex( faceVertexUvs[ 0 ] ),\n\t\t\t\t\tgetUvIndex( faceVertexUvs[ 1 ] ),\n\t\t\t\t\tgetUvIndex( faceVertexUvs[ 2 ] )\n\t\t\t\t);\n\n\t\t\t}\n\n\t\t\tif ( hasFaceNormal ) {\n\n\t\t\t\tfaces.push( getNormalIndex( face.normal ) );\n\n\t\t\t}\n\n\t\t\tif ( hasFaceVertexNormal ) {\n\n\t\t\t\tvar vertexNormals = face.vertexNormals;\n\n\t\t\t\tfaces.push(\n\t\t\t\t\tgetNormalIndex( vertexNormals[ 0 ] ),\n\t\t\t\t\tgetNormalIndex( vertexNormals[ 1 ] ),\n\t\t\t\t\tgetNormalIndex( vertexNormals[ 2 ] )\n\t\t\t\t);\n\n\t\t\t}\n\n\t\t\tif ( hasFaceColor ) {\n\n\t\t\t\tfaces.push( getColorIndex( face.color ) );\n\n\t\t\t}\n\n\t\t\tif ( hasFaceVertexColor ) {\n\n\t\t\t\tvar vertexColors = face.vertexColors;\n\n\t\t\t\tfaces.push(\n\t\t\t\t\tgetColorIndex( vertexColors[ 0 ] ),\n\t\t\t\t\tgetColorIndex( vertexColors[ 1 ] ),\n\t\t\t\t\tgetColorIndex( vertexColors[ 2 ] )\n\t\t\t\t);\n\n\t\t\t}\n\n\t\t}\n\n\t\tfunction setBit( value, position, enabled ) {\n\n\t\t\treturn enabled ? value | ( 1 << position ) : value & ( ~ ( 1 << position ) );\n\n\t\t}\n\n\t\tfunction getNormalIndex( normal ) {\n\n\t\t\tvar hash = normal.x.toString() + normal.y.toString() + normal.z.toString();\n\n\t\t\tif ( normalsHash[ hash ] !== undefined ) {\n\n\t\t\t\treturn normalsHash[ hash ];\n\n\t\t\t}\n\n\t\t\tnormalsHash[ hash ] = normals.length / 3;\n\t\t\tnormals.push( normal.x, normal.y, normal.z );\n\n\t\t\treturn normalsHash[ hash ];\n\n\t\t}\n\n\t\tfunction getColorIndex( color ) {\n\n\t\t\tvar hash = color.r.toString() + color.g.toString() + color.b.toString();\n\n\t\t\tif ( colorsHash[ hash ] !== undefined ) {\n\n\t\t\t\treturn colorsHash[ hash ];\n\n\t\t\t}\n\n\t\t\tcolorsHash[ hash ] = colors.length;\n\t\t\tcolors.push( color.getHex() );\n\n\t\t\treturn colorsHash[ hash ];\n\n\t\t}\n\n\t\tfunction getUvIndex( uv ) {\n\n\t\t\tvar hash = uv.x.toString() + uv.y.toString();\n\n\t\t\tif ( uvsHash[ hash ] !== undefined ) {\n\n\t\t\t\treturn uvsHash[ hash ];\n\n\t\t\t}\n\n\t\t\tuvsHash[ hash ] = uvs.length / 2;\n\t\t\tuvs.push( uv.x, uv.y );\n\n\t\t\treturn uvsHash[ hash ];\n\n\t\t}\n\n\t\tdata.data = {};\n\n\t\tdata.data.vertices = vertices;\n\t\tdata.data.normals = normals;\n\t\tif ( colors.length > 0 ) data.data.colors = colors;\n\t\tif ( uvs.length > 0 ) data.data.uvs = [ uvs ]; // temporal backward compatibility\n\t\tdata.data.faces = faces;\n\n\t\treturn data;\n\n\t},\n\n\tclone: function () {\n\n\t\t/*\n\t\t// Handle primitives\n\n\t\tvar parameters = this.parameters;\n\n\t\tif ( parameters !== undefined ) {\n\n\t\t\tvar values = [];\n\n\t\t\tfor ( var key in parameters ) {\n\n\t\t\t\tvalues.push( parameters[ key ] );\n\n\t\t\t}\n\n\t\t\tvar geometry = Object.create( this.constructor.prototype );\n\t\t\tthis.constructor.apply( geometry, values );\n\t\t\treturn geometry;\n\n\t\t}\n\n\t\treturn new this.constructor().copy( this );\n\t\t*/\n\n\t\treturn new Geometry().copy( this );\n\n\t},\n\n\tcopy: function ( source ) {\n\n\t\tthis.vertices = [];\n\t\tthis.faces = [];\n\t\tthis.faceVertexUvs = [ [] ];\n\t\tthis.colors = [];\n\n\t\tvar vertices = source.vertices;\n\n\t\tfor ( var i = 0, il = vertices.length; i < il; i ++ ) {\n\n\t\t\tthis.vertices.push( vertices[ i ].clone() );\n\n\t\t}\n\n\t\tvar colors = source.colors;\n\n\t\tfor ( var i = 0, il = colors.length; i < il; i ++ ) {\n\n\t\t\tthis.colors.push( colors[ i ].clone() );\n\n\t\t}\n\n\t\tvar faces = source.faces;\n\n\t\tfor ( var i = 0, il = faces.length; i < il; i ++ ) {\n\n\t\t\tthis.faces.push( faces[ i ].clone() );\n\n\t\t}\n\n\t\tfor ( var i = 0, il = source.faceVertexUvs.length; i < il; i ++ ) {\n\n\t\t\tvar faceVertexUvs = source.faceVertexUvs[ i ];\n\n\t\t\tif ( this.faceVertexUvs[ i ] === undefined ) {\n\n\t\t\t\tthis.faceVertexUvs[ i ] = [];\n\n\t\t\t}\n\n\t\t\tfor ( var j = 0, jl = faceVertexUvs.length; j < jl; j ++ ) {\n\n\t\t\t\tvar uvs = faceVertexUvs[ j ], uvsCopy = [];\n\n\t\t\t\tfor ( var k = 0, kl = uvs.length; k < kl; k ++ ) {\n\n\t\t\t\t\tvar uv = uvs[ k ];\n\n\t\t\t\t\tuvsCopy.push( uv.clone() );\n\n\t\t\t\t}\n\n\t\t\t\tthis.faceVertexUvs[ i ].push( uvsCopy );\n\n\t\t\t}\n\n\t\t}\n\n\t\treturn this;\n\n\t},\n\n\tdispose: function () {\n\n\t\tthis.dispatchEvent( { type: 'dispose' } );\n\n\t}\n\n} );\n\nvar count = 0;\nfunction GeometryIdCount() { return count++; };\n\n\nexport { GeometryIdCount, Geometry };\n","import { Geometry } from './Geometry';\nimport { EventDispatcher } from './EventDispatcher';\nimport { Vector2 } from '../math/Vector2';\nimport { _Math } from '../math/Math';\nimport { GeometryIdCount } from './Geometry';\n\n/**\n * @author mrdoob / http://mrdoob.com/\n */\n\nfunction DirectGeometry() {\n\n\tObject.defineProperty( this, 'id', { value: GeometryIdCount() } );\n\n\tthis.uuid = _Math.generateUUID();\n\n\tthis.name = '';\n\tthis.type = 'DirectGeometry';\n\n\tthis.indices = [];\n\tthis.vertices = [];\n\tthis.normals = [];\n\tthis.colors = [];\n\tthis.uvs = [];\n\tthis.uvs2 = [];\n\n\tthis.groups = [];\n\n\tthis.morphTargets = {};\n\n\tthis.skinWeights = [];\n\tthis.skinIndices = [];\n\n\t// this.lineDistances = [];\n\n\tthis.boundingBox = null;\n\tthis.boundingSphere = null;\n\n\t// update flags\n\n\tthis.verticesNeedUpdate = false;\n\tthis.normalsNeedUpdate = false;\n\tthis.colorsNeedUpdate = false;\n\tthis.uvsNeedUpdate = false;\n\tthis.groupsNeedUpdate = false;\n\n}\n\nObject.assign( DirectGeometry.prototype, EventDispatcher.prototype, {\n\n\tcomputeBoundingBox: Geometry.prototype.computeBoundingBox,\n\tcomputeBoundingSphere: Geometry.prototype.computeBoundingSphere,\n\n\tcomputeFaceNormals: function () {\n\n\t\tconsole.warn( 'THREE.DirectGeometry: computeFaceNormals() is not a method of this type of geometry.' );\n\n\t},\n\n\tcomputeVertexNormals: function () {\n\n\t\tconsole.warn( 'THREE.DirectGeometry: computeVertexNormals() is not a method of this type of geometry.' );\n\n\t},\n\n\tcomputeGroups: function ( geometry ) {\n\n\t\tvar group;\n\t\tvar groups = [];\n\t\tvar materialIndex;\n\n\t\tvar faces = geometry.faces;\n\n\t\tfor ( var i = 0; i < faces.length; i ++ ) {\n\n\t\t\tvar face = faces[ i ];\n\n\t\t\t// materials\n\n\t\t\tif ( face.materialIndex !== materialIndex ) {\n\n\t\t\t\tmaterialIndex = face.materialIndex;\n\n\t\t\t\tif ( group !== undefined ) {\n\n\t\t\t\t\tgroup.count = ( i * 3 ) - group.start;\n\t\t\t\t\tgroups.push( group );\n\n\t\t\t\t}\n\n\t\t\t\tgroup = {\n\t\t\t\t\tstart: i * 3,\n\t\t\t\t\tmaterialIndex: materialIndex\n\t\t\t\t};\n\n\t\t\t}\n\n\t\t}\n\n\t\tif ( group !== undefined ) {\n\n\t\t\tgroup.count = ( i * 3 ) - group.start;\n\t\t\tgroups.push( group );\n\n\t\t}\n\n\t\tthis.groups = groups;\n\n\t},\n\n\tfromGeometry: function ( geometry ) {\n\n\t\tvar faces = geometry.faces;\n\t\tvar vertices = geometry.vertices;\n\t\tvar faceVertexUvs = geometry.faceVertexUvs;\n\n\t\tvar hasFaceVertexUv = faceVertexUvs[ 0 ] && faceVertexUvs[ 0 ].length > 0;\n\t\tvar hasFaceVertexUv2 = faceVertexUvs[ 1 ] && faceVertexUvs[ 1 ].length > 0;\n\n\t\t// morphs\n\n\t\tvar morphTargets = geometry.morphTargets;\n\t\tvar morphTargetsLength = morphTargets.length;\n\n\t\tvar morphTargetsPosition;\n\n\t\tif ( morphTargetsLength > 0 ) {\n\n\t\t\tmorphTargetsPosition = [];\n\n\t\t\tfor ( var i = 0; i < morphTargetsLength; i ++ ) {\n\n\t\t\t\tmorphTargetsPosition[ i ] = [];\n\n\t\t\t}\n\n\t\t\tthis.morphTargets.position = morphTargetsPosition;\n\n\t\t}\n\n\t\tvar morphNormals = geometry.morphNormals;\n\t\tvar morphNormalsLength = morphNormals.length;\n\n\t\tvar morphTargetsNormal;\n\n\t\tif ( morphNormalsLength > 0 ) {\n\n\t\t\tmorphTargetsNormal = [];\n\n\t\t\tfor ( var i = 0; i < morphNormalsLength; i ++ ) {\n\n\t\t\t\tmorphTargetsNormal[ i ] = [];\n\n\t\t\t}\n\n\t\t\tthis.morphTargets.normal = morphTargetsNormal;\n\n\t\t}\n\n\t\t// skins\n\n\t\tvar skinIndices = geometry.skinIndices;\n\t\tvar skinWeights = geometry.skinWeights;\n\n\t\tvar hasSkinIndices = skinIndices.length === vertices.length;\n\t\tvar hasSkinWeights = skinWeights.length === vertices.length;\n\n\t\t//\n\n\t\tfor ( var i = 0; i < faces.length; i ++ ) {\n\n\t\t\tvar face = faces[ i ];\n\n\t\t\tthis.vertices.push( vertices[ face.a ], vertices[ face.b ], vertices[ face.c ] );\n\n\t\t\tvar vertexNormals = face.vertexNormals;\n\n\t\t\tif ( vertexNormals.length === 3 ) {\n\n\t\t\t\tthis.normals.push( vertexNormals[ 0 ], vertexNormals[ 1 ], vertexNormals[ 2 ] );\n\n\t\t\t} else {\n\n\t\t\t\tvar normal = face.normal;\n\n\t\t\t\tthis.normals.push( normal, normal, normal );\n\n\t\t\t}\n\n\t\t\tvar vertexColors = face.vertexColors;\n\n\t\t\tif ( vertexColors.length === 3 ) {\n\n\t\t\t\tthis.colors.push( vertexColors[ 0 ], vertexColors[ 1 ], vertexColors[ 2 ] );\n\n\t\t\t} else {\n\n\t\t\t\tvar color = face.color;\n\n\t\t\t\tthis.colors.push( color, color, color );\n\n\t\t\t}\n\n\t\t\tif ( hasFaceVertexUv === true ) {\n\n\t\t\t\tvar vertexUvs = faceVertexUvs[ 0 ][ i ];\n\n\t\t\t\tif ( vertexUvs !== undefined ) {\n\n\t\t\t\t\tthis.uvs.push( vertexUvs[ 0 ], vertexUvs[ 1 ], vertexUvs[ 2 ] );\n\n\t\t\t\t} else {\n\n\t\t\t\t\tconsole.warn( 'THREE.DirectGeometry.fromGeometry(): Undefined vertexUv ', i );\n\n\t\t\t\t\tthis.uvs.push( new Vector2(), new Vector2(), new Vector2() );\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t\tif ( hasFaceVertexUv2 === true ) {\n\n\t\t\t\tvar vertexUvs = faceVertexUvs[ 1 ][ i ];\n\n\t\t\t\tif ( vertexUvs !== undefined ) {\n\n\t\t\t\t\tthis.uvs2.push( vertexUvs[ 0 ], vertexUvs[ 1 ], vertexUvs[ 2 ] );\n\n\t\t\t\t} else {\n\n\t\t\t\t\tconsole.warn( 'THREE.DirectGeometry.fromGeometry(): Undefined vertexUv2 ', i );\n\n\t\t\t\t\tthis.uvs2.push( new Vector2(), new Vector2(), new Vector2() );\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t\t// morphs\n\n\t\t\tfor ( var j = 0; j < morphTargetsLength; j ++ ) {\n\n\t\t\t\tvar morphTarget = morphTargets[ j ].vertices;\n\n\t\t\t\tmorphTargetsPosition[ j ].push( morphTarget[ face.a ], morphTarget[ face.b ], morphTarget[ face.c ] );\n\n\t\t\t}\n\n\t\t\tfor ( var j = 0; j < morphNormalsLength; j ++ ) {\n\n\t\t\t\tvar morphNormal = morphNormals[ j ].vertexNormals[ i ];\n\n\t\t\t\tmorphTargetsNormal[ j ].push( morphNormal.a, morphNormal.b, morphNormal.c );\n\n\t\t\t}\n\n\t\t\t// skins\n\n\t\t\tif ( hasSkinIndices ) {\n\n\t\t\t\tthis.skinIndices.push( skinIndices[ face.a ], skinIndices[ face.b ], skinIndices[ face.c ] );\n\n\t\t\t}\n\n\t\t\tif ( hasSkinWeights ) {\n\n\t\t\t\tthis.skinWeights.push( skinWeights[ face.a ], skinWeights[ face.b ], skinWeights[ face.c ] );\n\n\t\t\t}\n\n\t\t}\n\n\t\tthis.computeGroups( geometry );\n\n\t\tthis.verticesNeedUpdate = geometry.verticesNeedUpdate;\n\t\tthis.normalsNeedUpdate = geometry.normalsNeedUpdate;\n\t\tthis.colorsNeedUpdate = geometry.colorsNeedUpdate;\n\t\tthis.uvsNeedUpdate = geometry.uvsNeedUpdate;\n\t\tthis.groupsNeedUpdate = geometry.groupsNeedUpdate;\n\n\t\treturn this;\n\n\t},\n\n\tdispose: function () {\n\n\t\tthis.dispatchEvent( { type: 'dispose' } );\n\n\t}\n\n} );\n\n\nexport { DirectGeometry };\n","import { Vector3 } from '../math/Vector3';\nimport { Box3 } from '../math/Box3';\nimport { EventDispatcher } from './EventDispatcher';\nimport { BufferAttribute, Float32Attribute } from './BufferAttribute';\nimport { Sphere } from '../math/Sphere';\nimport { DirectGeometry } from './DirectGeometry';\nimport { Object3D } from './Object3D';\nimport { Matrix4 } from '../math/Matrix4';\nimport { Matrix3 } from '../math/Matrix3';\nimport { _Math } from '../math/Math';\nimport { GeometryIdCount } from './Geometry';\n\n/**\n * @author alteredq / http://alteredqualia.com/\n * @author mrdoob / http://mrdoob.com/\n */\n\nfunction BufferGeometry() {\n\n\tObject.defineProperty( this, 'id', { value: GeometryIdCount() } );\n\n\tthis.uuid = _Math.generateUUID();\n\n\tthis.name = '';\n\tthis.type = 'BufferGeometry';\n\n\tthis.index = null;\n\tthis.attributes = {};\n\n\tthis.morphAttributes = {};\n\n\tthis.groups = [];\n\n\tthis.boundingBox = null;\n\tthis.boundingSphere = null;\n\n\tthis.drawRange = { start: 0, count: Infinity };\n\n}\n\nObject.assign( BufferGeometry.prototype, EventDispatcher.prototype, {\n\n\tisBufferGeometry: true,\n\n\tgetIndex: function () {\n\n\t\treturn this.index;\n\n\t},\n\n\tsetIndex: function ( index ) {\n\n\t\tthis.index = index;\n\n\t},\n\n\taddAttribute: function ( name, attribute ) {\n\n\t\tif ( (attribute && attribute.isBufferAttribute) === false && (attribute && attribute.isInterleavedBufferAttribute) === false ) {\n\n\t\t\tconsole.warn( 'THREE.BufferGeometry: .addAttribute() now expects ( name, attribute ).' );\n\n\t\t\tthis.addAttribute( name, new BufferAttribute( arguments[ 1 ], arguments[ 2 ] ) );\n\n\t\t\treturn;\n\n\t\t}\n\n\t\tif ( name === 'index' ) {\n\n\t\t\tconsole.warn( 'THREE.BufferGeometry.addAttribute: Use .setIndex() for index attribute.' );\n\t\t\tthis.setIndex( attribute );\n\n\t\t\treturn;\n\n\t\t}\n\n\t\tthis.attributes[ name ] = attribute;\n\n\t\treturn this;\n\n\t},\n\n\tgetAttribute: function ( name ) {\n\n\t\treturn this.attributes[ name ];\n\n\t},\n\n\tremoveAttribute: function ( name ) {\n\n\t\tdelete this.attributes[ name ];\n\n\t\treturn this;\n\n\t},\n\n\taddGroup: function ( start, count, materialIndex ) {\n\n\t\tthis.groups.push( {\n\n\t\t\tstart: start,\n\t\t\tcount: count,\n\t\t\tmaterialIndex: materialIndex !== undefined ? materialIndex : 0\n\n\t\t} );\n\n\t},\n\n\tclearGroups: function () {\n\n\t\tthis.groups = [];\n\n\t},\n\n\tsetDrawRange: function ( start, count ) {\n\n\t\tthis.drawRange.start = start;\n\t\tthis.drawRange.count = count;\n\n\t},\n\n\tapplyMatrix: function ( matrix ) {\n\n\t\tvar position = this.attributes.position;\n\n\t\tif ( position !== undefined ) {\n\n\t\t\tmatrix.applyToVector3Array( position.array );\n\t\t\tposition.needsUpdate = true;\n\n\t\t}\n\n\t\tvar normal = this.attributes.normal;\n\n\t\tif ( normal !== undefined ) {\n\n\t\t\tvar normalMatrix = new Matrix3().getNormalMatrix( matrix );\n\n\t\t\tnormalMatrix.applyToVector3Array( normal.array );\n\t\t\tnormal.needsUpdate = true;\n\n\t\t}\n\n\t\tif ( this.boundingBox !== null ) {\n\n\t\t\tthis.computeBoundingBox();\n\n\t\t}\n\n\t\tif ( this.boundingSphere !== null ) {\n\n\t\t\tthis.computeBoundingSphere();\n\n\t\t}\n\n\t\treturn this;\n\n\t},\n\n\trotateX: function () {\n\n\t\t// rotate geometry around world x-axis\n\n\t\tvar m1;\n\n\t\treturn function rotateX( angle ) {\n\n\t\t\tif ( m1 === undefined ) m1 = new Matrix4();\n\n\t\t\tm1.makeRotationX( angle );\n\n\t\t\tthis.applyMatrix( m1 );\n\n\t\t\treturn this;\n\n\t\t};\n\n\t}(),\n\n\trotateY: function () {\n\n\t\t// rotate geometry around world y-axis\n\n\t\tvar m1;\n\n\t\treturn function rotateY( angle ) {\n\n\t\t\tif ( m1 === undefined ) m1 = new Matrix4();\n\n\t\t\tm1.makeRotationY( angle );\n\n\t\t\tthis.applyMatrix( m1 );\n\n\t\t\treturn this;\n\n\t\t};\n\n\t}(),\n\n\trotateZ: function () {\n\n\t\t// rotate geometry around world z-axis\n\n\t\tvar m1;\n\n\t\treturn function rotateZ( angle ) {\n\n\t\t\tif ( m1 === undefined ) m1 = new Matrix4();\n\n\t\t\tm1.makeRotationZ( angle );\n\n\t\t\tthis.applyMatrix( m1 );\n\n\t\t\treturn this;\n\n\t\t};\n\n\t}(),\n\n\ttranslate: function () {\n\n\t\t// translate geometry\n\n\t\tvar m1;\n\n\t\treturn function translate( x, y, z ) {\n\n\t\t\tif ( m1 === undefined ) m1 = new Matrix4();\n\n\t\t\tm1.makeTranslation( x, y, z );\n\n\t\t\tthis.applyMatrix( m1 );\n\n\t\t\treturn this;\n\n\t\t};\n\n\t}(),\n\n\tscale: function () {\n\n\t\t// scale geometry\n\n\t\tvar m1;\n\n\t\treturn function scale( x, y, z ) {\n\n\t\t\tif ( m1 === undefined ) m1 = new Matrix4();\n\n\t\t\tm1.makeScale( x, y, z );\n\n\t\t\tthis.applyMatrix( m1 );\n\n\t\t\treturn this;\n\n\t\t};\n\n\t}(),\n\n\tlookAt: function () {\n\n\t\tvar obj;\n\n\t\treturn function lookAt( vector ) {\n\n\t\t\tif ( obj === undefined ) obj = new Object3D();\n\n\t\t\tobj.lookAt( vector );\n\n\t\t\tobj.updateMatrix();\n\n\t\t\tthis.applyMatrix( obj.matrix );\n\n\t\t};\n\n\t}(),\n\n\tcenter: function () {\n\n\t\tthis.computeBoundingBox();\n\n\t\tvar offset = this.boundingBox.getCenter().negate();\n\n\t\tthis.translate( offset.x, offset.y, offset.z );\n\n\t\treturn offset;\n\n\t},\n\n\tsetFromObject: function ( object ) {\n\n\t\t// console.log( 'THREE.BufferGeometry.setFromObject(). Converting', object, this );\n\n\t\tvar geometry = object.geometry;\n\n\t\tif ( (object && object.isPoints) || (object && object.isLine) ) {\n\n\t\t\tvar positions = new Float32Attribute( geometry.vertices.length * 3, 3 );\n\t\t\tvar colors = new Float32Attribute( geometry.colors.length * 3, 3 );\n\n\t\t\tthis.addAttribute( 'position', positions.copyVector3sArray( geometry.vertices ) );\n\t\t\tthis.addAttribute( 'color', colors.copyColorsArray( geometry.colors ) );\n\n\t\t\tif ( geometry.lineDistances && geometry.lineDistances.length === geometry.vertices.length ) {\n\n\t\t\t\tvar lineDistances = new Float32Attribute( geometry.lineDistances.length, 1 );\n\n\t\t\t\tthis.addAttribute( 'lineDistance', lineDistances.copyArray( geometry.lineDistances ) );\n\n\t\t\t}\n\n\t\t\tif ( geometry.boundingSphere !== null ) {\n\n\t\t\t\tthis.boundingSphere = geometry.boundingSphere.clone();\n\n\t\t\t}\n\n\t\t\tif ( geometry.boundingBox !== null ) {\n\n\t\t\t\tthis.boundingBox = geometry.boundingBox.clone();\n\n\t\t\t}\n\n\t\t} else if ( (object && object.isMesh) ) {\n\n\t\t\tif ( (geometry && geometry.isGeometry) ) {\n\n\t\t\t\tthis.fromGeometry( geometry );\n\n\t\t\t}\n\n\t\t}\n\n\t\treturn this;\n\n\t},\n\n\tupdateFromObject: function ( object ) {\n\n\t\tvar geometry = object.geometry;\n\n\t\tif ( (object && object.isMesh) ) {\n\n\t\t\tvar direct = geometry.__directGeometry;\n\n\t\t\tif ( geometry.elementsNeedUpdate === true ) {\n\n\t\t\t\tdirect = undefined;\n\t\t\t\tgeometry.elementsNeedUpdate = false;\n\n\t\t\t}\n\n\t\t\tif ( direct === undefined ) {\n\n\t\t\t\treturn this.fromGeometry( geometry );\n\n\t\t\t}\n\n\t\t\tdirect.verticesNeedUpdate = geometry.verticesNeedUpdate;\n\t\t\tdirect.normalsNeedUpdate = geometry.normalsNeedUpdate;\n\t\t\tdirect.colorsNeedUpdate = geometry.colorsNeedUpdate;\n\t\t\tdirect.uvsNeedUpdate = geometry.uvsNeedUpdate;\n\t\t\tdirect.groupsNeedUpdate = geometry.groupsNeedUpdate;\n\n\t\t\tgeometry.verticesNeedUpdate = false;\n\t\t\tgeometry.normalsNeedUpdate = false;\n\t\t\tgeometry.colorsNeedUpdate = false;\n\t\t\tgeometry.uvsNeedUpdate = false;\n\t\t\tgeometry.groupsNeedUpdate = false;\n\n\t\t\tgeometry = direct;\n\n\t\t}\n\n\t\tvar attribute;\n\n\t\tif ( geometry.verticesNeedUpdate === true ) {\n\n\t\t\tattribute = this.attributes.position;\n\n\t\t\tif ( attribute !== undefined ) {\n\n\t\t\t\tattribute.copyVector3sArray( geometry.vertices );\n\t\t\t\tattribute.needsUpdate = true;\n\n\t\t\t}\n\n\t\t\tgeometry.verticesNeedUpdate = false;\n\n\t\t}\n\n\t\tif ( geometry.normalsNeedUpdate === true ) {\n\n\t\t\tattribute = this.attributes.normal;\n\n\t\t\tif ( attribute !== undefined ) {\n\n\t\t\t\tattribute.copyVector3sArray( geometry.normals );\n\t\t\t\tattribute.needsUpdate = true;\n\n\t\t\t}\n\n\t\t\tgeometry.normalsNeedUpdate = false;\n\n\t\t}\n\n\t\tif ( geometry.colorsNeedUpdate === true ) {\n\n\t\t\tattribute = this.attributes.color;\n\n\t\t\tif ( attribute !== undefined ) {\n\n\t\t\t\tattribute.copyColorsArray( geometry.colors );\n\t\t\t\tattribute.needsUpdate = true;\n\n\t\t\t}\n\n\t\t\tgeometry.colorsNeedUpdate = false;\n\n\t\t}\n\n\t\tif ( geometry.uvsNeedUpdate ) {\n\n\t\t\tattribute = this.attributes.uv;\n\n\t\t\tif ( attribute !== undefined ) {\n\n\t\t\t\tattribute.copyVector2sArray( geometry.uvs );\n\t\t\t\tattribute.needsUpdate = true;\n\n\t\t\t}\n\n\t\t\tgeometry.uvsNeedUpdate = false;\n\n\t\t}\n\n\t\tif ( geometry.lineDistancesNeedUpdate ) {\n\n\t\t\tattribute = this.attributes.lineDistance;\n\n\t\t\tif ( attribute !== undefined ) {\n\n\t\t\t\tattribute.copyArray( geometry.lineDistances );\n\t\t\t\tattribute.needsUpdate = true;\n\n\t\t\t}\n\n\t\t\tgeometry.lineDistancesNeedUpdate = false;\n\n\t\t}\n\n\t\tif ( geometry.groupsNeedUpdate ) {\n\n\t\t\tgeometry.computeGroups( object.geometry );\n\t\t\tthis.groups = geometry.groups;\n\n\t\t\tgeometry.groupsNeedUpdate = false;\n\n\t\t}\n\n\t\treturn this;\n\n\t},\n\n\tfromGeometry: function ( geometry ) {\n\n\t\tgeometry.__directGeometry = new DirectGeometry().fromGeometry( geometry );\n\n\t\treturn this.fromDirectGeometry( geometry.__directGeometry );\n\n\t},\n\n\tfromDirectGeometry: function ( geometry ) {\n\n\t\tvar positions = new Float32Array( geometry.vertices.length * 3 );\n\t\tthis.addAttribute( 'position', new BufferAttribute( positions, 3 ).copyVector3sArray( geometry.vertices ) );\n\n\t\tif ( geometry.normals.length > 0 ) {\n\n\t\t\tvar normals = new Float32Array( geometry.normals.length * 3 );\n\t\t\tthis.addAttribute( 'normal', new BufferAttribute( normals, 3 ).copyVector3sArray( geometry.normals ) );\n\n\t\t}\n\n\t\tif ( geometry.colors.length > 0 ) {\n\n\t\t\tvar colors = new Float32Array( geometry.colors.length * 3 );\n\t\t\tthis.addAttribute( 'color', new BufferAttribute( colors, 3 ).copyColorsArray( geometry.colors ) );\n\n\t\t}\n\n\t\tif ( geometry.uvs.length > 0 ) {\n\n\t\t\tvar uvs = new Float32Array( geometry.uvs.length * 2 );\n\t\t\tthis.addAttribute( 'uv', new BufferAttribute( uvs, 2 ).copyVector2sArray( geometry.uvs ) );\n\n\t\t}\n\n\t\tif ( geometry.uvs2.length > 0 ) {\n\n\t\t\tvar uvs2 = new Float32Array( geometry.uvs2.length * 2 );\n\t\t\tthis.addAttribute( 'uv2', new BufferAttribute( uvs2, 2 ).copyVector2sArray( geometry.uvs2 ) );\n\n\t\t}\n\n\t\tif ( geometry.indices.length > 0 ) {\n\n\t\t\tvar TypeArray = geometry.vertices.length > 65535 ? Uint32Array : Uint16Array;\n\t\t\tvar indices = new TypeArray( geometry.indices.length * 3 );\n\t\t\tthis.setIndex( new BufferAttribute( indices, 1 ).copyIndicesArray( geometry.indices ) );\n\n\t\t}\n\n\t\t// groups\n\n\t\tthis.groups = geometry.groups;\n\n\t\t// morphs\n\n\t\tfor ( var name in geometry.morphTargets ) {\n\n\t\t\tvar array = [];\n\t\t\tvar morphTargets = geometry.morphTargets[ name ];\n\n\t\t\tfor ( var i = 0, l = morphTargets.length; i < l; i ++ ) {\n\n\t\t\t\tvar morphTarget = morphTargets[ i ];\n\n\t\t\t\tvar attribute = new Float32Attribute( morphTarget.length * 3, 3 );\n\n\t\t\t\tarray.push( attribute.copyVector3sArray( morphTarget ) );\n\n\t\t\t}\n\n\t\t\tthis.morphAttributes[ name ] = array;\n\n\t\t}\n\n\t\t// skinning\n\n\t\tif ( geometry.skinIndices.length > 0 ) {\n\n\t\t\tvar skinIndices = new Float32Attribute( geometry.skinIndices.length * 4, 4 );\n\t\t\tthis.addAttribute( 'skinIndex', skinIndices.copyVector4sArray( geometry.skinIndices ) );\n\n\t\t}\n\n\t\tif ( geometry.skinWeights.length > 0 ) {\n\n\t\t\tvar skinWeights = new Float32Attribute( geometry.skinWeights.length * 4, 4 );\n\t\t\tthis.addAttribute( 'skinWeight', skinWeights.copyVector4sArray( geometry.skinWeights ) );\n\n\t\t}\n\n\t\t//\n\n\t\tif ( geometry.boundingSphere !== null ) {\n\n\t\t\tthis.boundingSphere = geometry.boundingSphere.clone();\n\n\t\t}\n\n\t\tif ( geometry.boundingBox !== null ) {\n\n\t\t\tthis.boundingBox = geometry.boundingBox.clone();\n\n\t\t}\n\n\t\treturn this;\n\n\t},\n\n\tcomputeBoundingBox: function () {\n\n\t\tif ( this.boundingBox === null ) {\n\n\t\t\tthis.boundingBox = new Box3();\n\n\t\t}\n\n\t\tvar positions = this.attributes.position.array;\n\n\t\tif ( positions !== undefined ) {\n\n\t\t\tthis.boundingBox.setFromArray( positions );\n\n\t\t} else {\n\n\t\t\tthis.boundingBox.makeEmpty();\n\n\t\t}\n\n\t\tif ( isNaN( this.boundingBox.min.x ) || isNaN( this.boundingBox.min.y ) || isNaN( this.boundingBox.min.z ) ) {\n\n\t\t\tconsole.error( 'THREE.BufferGeometry.computeBoundingBox: Computed min/max have NaN values. The \"position\" attribute is likely to have NaN values.', this );\n\n\t\t}\n\n\t},\n\n\tcomputeBoundingSphere: function () {\n\n\t\tvar box = new Box3();\n\t\tvar vector = new Vector3();\n\n\t\treturn function computeBoundingSphere() {\n\n\t\t\tif ( this.boundingSphere === null ) {\n\n\t\t\t\tthis.boundingSphere = new Sphere();\n\n\t\t\t}\n\n\t\t\tvar positions = this.attributes.position;\n\n\t\t\tif ( positions ) {\n\n\t\t\t\tvar array = positions.array;\n\t\t\t\tvar center = this.boundingSphere.center;\n\n\t\t\t\tbox.setFromArray( array );\n\t\t\t\tbox.getCenter( center );\n\n\t\t\t\t// hoping to find a boundingSphere with a radius smaller than the\n\t\t\t\t// boundingSphere of the boundingBox: sqrt(3) smaller in the best case\n\n\t\t\t\tvar maxRadiusSq = 0;\n\n\t\t\t\tfor ( var i = 0, il = array.length; i < il; i += 3 ) {\n\n\t\t\t\t\tvector.fromArray( array, i );\n\t\t\t\t\tmaxRadiusSq = Math.max( maxRadiusSq, center.distanceToSquared( vector ) );\n\n\t\t\t\t}\n\n\t\t\t\tthis.boundingSphere.radius = Math.sqrt( maxRadiusSq );\n\n\t\t\t\tif ( isNaN( this.boundingSphere.radius ) ) {\n\n\t\t\t\t\tconsole.error( 'THREE.BufferGeometry.computeBoundingSphere(): Computed radius is NaN. The \"position\" attribute is likely to have NaN values.', this );\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t};\n\n\t}(),\n\n\tcomputeFaceNormals: function () {\n\n\t\t// backwards compatibility\n\n\t},\n\n\tcomputeVertexNormals: function () {\n\n\t\tvar index = this.index;\n\t\tvar attributes = this.attributes;\n\t\tvar groups = this.groups;\n\n\t\tif ( attributes.position ) {\n\n\t\t\tvar positions = attributes.position.array;\n\n\t\t\tif ( attributes.normal === undefined ) {\n\n\t\t\t\tthis.addAttribute( 'normal', new BufferAttribute( new Float32Array( positions.length ), 3 ) );\n\n\t\t\t} else {\n\n\t\t\t\t// reset existing normals to zero\n\n\t\t\t\tvar array = attributes.normal.array;\n\n\t\t\t\tfor ( var i = 0, il = array.length; i < il; i ++ ) {\n\n\t\t\t\t\tarray[ i ] = 0;\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t\tvar normals = attributes.normal.array;\n\n\t\t\tvar vA, vB, vC,\n\n\t\t\tpA = new Vector3(),\n\t\t\tpB = new Vector3(),\n\t\t\tpC = new Vector3(),\n\n\t\t\tcb = new Vector3(),\n\t\t\tab = new Vector3();\n\n\t\t\t// indexed elements\n\n\t\t\tif ( index ) {\n\n\t\t\t\tvar indices = index.array;\n\n\t\t\t\tif ( groups.length === 0 ) {\n\n\t\t\t\t\tthis.addGroup( 0, indices.length );\n\n\t\t\t\t}\n\n\t\t\t\tfor ( var j = 0, jl = groups.length; j < jl; ++ j ) {\n\n\t\t\t\t\tvar group = groups[ j ];\n\n\t\t\t\t\tvar start = group.start;\n\t\t\t\t\tvar count = group.count;\n\n\t\t\t\t\tfor ( var i = start, il = start + count; i < il; i += 3 ) {\n\n\t\t\t\t\t\tvA = indices[ i + 0 ] * 3;\n\t\t\t\t\t\tvB = indices[ i + 1 ] * 3;\n\t\t\t\t\t\tvC = indices[ i + 2 ] * 3;\n\n\t\t\t\t\t\tpA.fromArray( positions, vA );\n\t\t\t\t\t\tpB.fromArray( positions, vB );\n\t\t\t\t\t\tpC.fromArray( positions, vC );\n\n\t\t\t\t\t\tcb.subVectors( pC, pB );\n\t\t\t\t\t\tab.subVectors( pA, pB );\n\t\t\t\t\t\tcb.cross( ab );\n\n\t\t\t\t\t\tnormals[ vA ] += cb.x;\n\t\t\t\t\t\tnormals[ vA + 1 ] += cb.y;\n\t\t\t\t\t\tnormals[ vA + 2 ] += cb.z;\n\n\t\t\t\t\t\tnormals[ vB ] += cb.x;\n\t\t\t\t\t\tnormals[ vB + 1 ] += cb.y;\n\t\t\t\t\t\tnormals[ vB + 2 ] += cb.z;\n\n\t\t\t\t\t\tnormals[ vC ] += cb.x;\n\t\t\t\t\t\tnormals[ vC + 1 ] += cb.y;\n\t\t\t\t\t\tnormals[ vC + 2 ] += cb.z;\n\n\t\t\t\t\t}\n\n\t\t\t\t}\n\n\t\t\t} else {\n\n\t\t\t\t// non-indexed elements (unconnected triangle soup)\n\n\t\t\t\tfor ( var i = 0, il = positions.length; i < il; i += 9 ) {\n\n\t\t\t\t\tpA.fromArray( positions, i );\n\t\t\t\t\tpB.fromArray( positions, i + 3 );\n\t\t\t\t\tpC.fromArray( positions, i + 6 );\n\n\t\t\t\t\tcb.subVectors( pC, pB );\n\t\t\t\t\tab.subVectors( pA, pB );\n\t\t\t\t\tcb.cross( ab );\n\n\t\t\t\t\tnormals[ i ] = cb.x;\n\t\t\t\t\tnormals[ i + 1 ] = cb.y;\n\t\t\t\t\tnormals[ i + 2 ] = cb.z;\n\n\t\t\t\t\tnormals[ i + 3 ] = cb.x;\n\t\t\t\t\tnormals[ i + 4 ] = cb.y;\n\t\t\t\t\tnormals[ i + 5 ] = cb.z;\n\n\t\t\t\t\tnormals[ i + 6 ] = cb.x;\n\t\t\t\t\tnormals[ i + 7 ] = cb.y;\n\t\t\t\t\tnormals[ i + 8 ] = cb.z;\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t\tthis.normalizeNormals();\n\n\t\t\tattributes.normal.needsUpdate = true;\n\n\t\t}\n\n\t},\n\n\tmerge: function ( geometry, offset ) {\n\n\t\tif ( (geometry && geometry.isBufferGeometry) === false ) {\n\n\t\t\tconsole.error( 'THREE.BufferGeometry.merge(): geometry not an instance of THREE.BufferGeometry.', geometry );\n\t\t\treturn;\n\n\t\t}\n\n\t\tif ( offset === undefined ) offset = 0;\n\n\t\tvar attributes = this.attributes;\n\n\t\tfor ( var key in attributes ) {\n\n\t\t\tif ( geometry.attributes[ key ] === undefined ) continue;\n\n\t\t\tvar attribute1 = attributes[ key ];\n\t\t\tvar attributeArray1 = attribute1.array;\n\n\t\t\tvar attribute2 = geometry.attributes[ key ];\n\t\t\tvar attributeArray2 = attribute2.array;\n\n\t\t\tvar attributeSize = attribute2.itemSize;\n\n\t\t\tfor ( var i = 0, j = attributeSize * offset; i < attributeArray2.length; i ++, j ++ ) {\n\n\t\t\t\tattributeArray1[ j ] = attributeArray2[ i ];\n\n\t\t\t}\n\n\t\t}\n\n\t\treturn this;\n\n\t},\n\n\tnormalizeNormals: function () {\n\n\t\tvar normals = this.attributes.normal.array;\n\n\t\tvar x, y, z, n;\n\n\t\tfor ( var i = 0, il = normals.length; i < il; i += 3 ) {\n\n\t\t\tx = normals[ i ];\n\t\t\ty = normals[ i + 1 ];\n\t\t\tz = normals[ i + 2 ];\n\n\t\t\tn = 1.0 / Math.sqrt( x * x + y * y + z * z );\n\n\t\t\tnormals[ i ] *= n;\n\t\t\tnormals[ i + 1 ] *= n;\n\t\t\tnormals[ i + 2 ] *= n;\n\n\t\t}\n\n\t},\n\n\ttoNonIndexed: function () {\n\n\t\tif ( this.index === null ) {\n\n\t\t\tconsole.warn( 'THREE.BufferGeometry.toNonIndexed(): Geometry is already non-indexed.' );\n\t\t\treturn this;\n\n\t\t}\n\n\t\tvar geometry2 = new BufferGeometry();\n\n\t\tvar indices = this.index.array;\n\t\tvar attributes = this.attributes;\n\n\t\tfor ( var name in attributes ) {\n\n\t\t\tvar attribute = attributes[ name ];\n\n\t\t\tvar array = attribute.array;\n\t\t\tvar itemSize = attribute.itemSize;\n\n\t\t\tvar array2 = new array.constructor( indices.length * itemSize );\n\n\t\t\tvar index = 0, index2 = 0;\n\n\t\t\tfor ( var i = 0, l = indices.length; i < l; i ++ ) {\n\n\t\t\t\tindex = indices[ i ] * itemSize;\n\n\t\t\t\tfor ( var j = 0; j < itemSize; j ++ ) {\n\n\t\t\t\t\tarray2[ index2 ++ ] = array[ index ++ ];\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t\tgeometry2.addAttribute( name, new BufferAttribute( array2, itemSize ) );\n\n\t\t}\n\n\t\treturn geometry2;\n\n\t},\n\n\ttoJSON: function () {\n\n\t\tvar data = {\n\t\t\tmetadata: {\n\t\t\t\tversion: 4.4,\n\t\t\t\ttype: 'BufferGeometry',\n\t\t\t\tgenerator: 'BufferGeometry.toJSON'\n\t\t\t}\n\t\t};\n\n\t\t// standard BufferGeometry serialization\n\n\t\tdata.uuid = this.uuid;\n\t\tdata.type = this.type;\n\t\tif ( this.name !== '' ) data.name = this.name;\n\n\t\tif ( this.parameters !== undefined ) {\n\n\t\t\tvar parameters = this.parameters;\n\n\t\t\tfor ( var key in parameters ) {\n\n\t\t\t\tif ( parameters[ key ] !== undefined ) data[ key ] = parameters[ key ];\n\n\t\t\t}\n\n\t\t\treturn data;\n\n\t\t}\n\n\t\tdata.data = { attributes: {} };\n\n\t\tvar index = this.index;\n\n\t\tif ( index !== null ) {\n\n\t\t\tvar array = Array.prototype.slice.call( index.array );\n\n\t\t\tdata.data.index = {\n\t\t\t\ttype: index.array.constructor.name,\n\t\t\t\tarray: array\n\t\t\t};\n\n\t\t}\n\n\t\tvar attributes = this.attributes;\n\n\t\tfor ( var key in attributes ) {\n\n\t\t\tvar attribute = attributes[ key ];\n\n\t\t\tvar array = Array.prototype.slice.call( attribute.array );\n\n\t\t\tdata.data.attributes[ key ] = {\n\t\t\t\titemSize: attribute.itemSize,\n\t\t\t\ttype: attribute.array.constructor.name,\n\t\t\t\tarray: array,\n\t\t\t\tnormalized: attribute.normalized\n\t\t\t};\n\n\t\t}\n\n\t\tvar groups = this.groups;\n\n\t\tif ( groups.length > 0 ) {\n\n\t\t\tdata.data.groups = JSON.parse( JSON.stringify( groups ) );\n\n\t\t}\n\n\t\tvar boundingSphere = this.boundingSphere;\n\n\t\tif ( boundingSphere !== null ) {\n\n\t\t\tdata.data.boundingSphere = {\n\t\t\t\tcenter: boundingSphere.center.toArray(),\n\t\t\t\tradius: boundingSphere.radius\n\t\t\t};\n\n\t\t}\n\n\t\treturn data;\n\n\t},\n\n\tclone: function () {\n\n\t\t/*\n\t\t// Handle primitives\n\n\t\tvar parameters = this.parameters;\n\n\t\tif ( parameters !== undefined ) {\n\n\t\t\tvar values = [];\n\n\t\t\tfor ( var key in parameters ) {\n\n\t\t\t\tvalues.push( parameters[ key ] );\n\n\t\t\t}\n\n\t\t\tvar geometry = Object.create( this.constructor.prototype );\n\t\t\tthis.constructor.apply( geometry, values );\n\t\t\treturn geometry;\n\n\t\t}\n\n\t\treturn new this.constructor().copy( this );\n\t\t*/\n\n\t\treturn new BufferGeometry().copy( this );\n\n\t},\n\n\tcopy: function ( source ) {\n\n\t\tvar index = source.index;\n\n\t\tif ( index !== null ) {\n\n\t\t\tthis.setIndex( index.clone() );\n\n\t\t}\n\n\t\tvar attributes = source.attributes;\n\n\t\tfor ( var name in attributes ) {\n\n\t\t\tvar attribute = attributes[ name ];\n\t\t\tthis.addAttribute( name, attribute.clone() );\n\n\t\t}\n\n\t\tvar groups = source.groups;\n\n\t\tfor ( var i = 0, l = groups.length; i < l; i ++ ) {\n\n\t\t\tvar group = groups[ i ];\n\t\t\tthis.addGroup( group.start, group.count, group.materialIndex );\n\n\t\t}\n\n\t\treturn this;\n\n\t},\n\n\tdispose: function () {\n\n\t\tthis.dispatchEvent( { type: 'dispose' } );\n\n\t}\n\n} );\n\nBufferGeometry.MaxIndex = 65535;\n\n\nexport { BufferGeometry };\n","import { Vector3 } from '../math/Vector3';\nimport { Vector2 } from '../math/Vector2';\nimport { Sphere } from '../math/Sphere';\nimport { Ray } from '../math/Ray';\nimport { Matrix4 } from '../math/Matrix4';\nimport { Object3D } from '../core/Object3D';\nimport { Triangle } from '../math/Triangle';\nimport { Face3 } from '../core/Face3';\nimport { DoubleSide, BackSide, TrianglesDrawMode } from '../constants';\nimport { MeshBasicMaterial } from '../materials/MeshBasicMaterial';\nimport { BufferGeometry } from '../core/BufferGeometry';\n\n/**\n * @author mrdoob / http://mrdoob.com/\n * @author alteredq / http://alteredqualia.com/\n * @author mikael emtinger / http://gomo.se/\n * @author jonobr1 / http://jonobr1.com/\n */\n\nfunction Mesh( geometry, material ) {\n\n\tObject3D.call( this );\n\n\tthis.type = 'Mesh';\n\n\tthis.geometry = geometry !== undefined ? geometry : new BufferGeometry();\n\tthis.material = material !== undefined ? material : new MeshBasicMaterial( { color: Math.random() * 0xffffff } );\n\n\tthis.drawMode = TrianglesDrawMode;\n\n\tthis.updateMorphTargets();\n\n}\n\nMesh.prototype = Object.assign( Object.create( Object3D.prototype ), {\n\n\tconstructor: Mesh,\n\n\tisMesh: true,\n\n\tsetDrawMode: function ( value ) {\n\n\t\tthis.drawMode = value;\n\n\t},\n\n\tcopy: function ( source ) {\n\n\t\tObject3D.prototype.copy.call( this, source );\n\n\t\tthis.drawMode = source.drawMode;\n\n\t\treturn this;\n\n\t},\n\n\tupdateMorphTargets: function () {\n\n\t\tvar morphTargets = this.geometry.morphTargets;\n\n\t\tif ( morphTargets !== undefined && morphTargets.length > 0 ) {\n\n\t\t\tthis.morphTargetInfluences = [];\n\t\t\tthis.morphTargetDictionary = {};\n\n\t\t\tfor ( var m = 0, ml = morphTargets.length; m < ml; m ++ ) {\n\n\t\t\t\tthis.morphTargetInfluences.push( 0 );\n\t\t\t\tthis.morphTargetDictionary[ morphTargets[ m ].name ] = m;\n\n\t\t\t}\n\n\t\t}\n\n\t},\n\n\traycast: ( function () {\n\n\t\tvar inverseMatrix = new Matrix4();\n\t\tvar ray = new Ray();\n\t\tvar sphere = new Sphere();\n\n\t\tvar vA = new Vector3();\n\t\tvar vB = new Vector3();\n\t\tvar vC = new Vector3();\n\n\t\tvar tempA = new Vector3();\n\t\tvar tempB = new Vector3();\n\t\tvar tempC = new Vector3();\n\n\t\tvar uvA = new Vector2();\n\t\tvar uvB = new Vector2();\n\t\tvar uvC = new Vector2();\n\n\t\tvar barycoord = new Vector3();\n\n\t\tvar intersectionPoint = new Vector3();\n\t\tvar intersectionPointWorld = new Vector3();\n\n\t\tfunction uvIntersection( point, p1, p2, p3, uv1, uv2, uv3 ) {\n\n\t\t\tTriangle.barycoordFromPoint( point, p1, p2, p3, barycoord );\n\n\t\t\tuv1.multiplyScalar( barycoord.x );\n\t\t\tuv2.multiplyScalar( barycoord.y );\n\t\t\tuv3.multiplyScalar( barycoord.z );\n\n\t\t\tuv1.add( uv2 ).add( uv3 );\n\n\t\t\treturn uv1.clone();\n\n\t\t}\n\n\t\tfunction checkIntersection( object, raycaster, ray, pA, pB, pC, point ) {\n\n\t\t\tvar intersect;\n\t\t\tvar material = object.material;\n\n\t\t\tif ( material.side === BackSide ) {\n\n\t\t\t\tintersect = ray.intersectTriangle( pC, pB, pA, true, point );\n\n\t\t\t} else {\n\n\t\t\t\tintersect = ray.intersectTriangle( pA, pB, pC, material.side !== DoubleSide, point );\n\n\t\t\t}\n\n\t\t\tif ( intersect === null ) return null;\n\n\t\t\tintersectionPointWorld.copy( point );\n\t\t\tintersectionPointWorld.applyMatrix4( object.matrixWorld );\n\n\t\t\tvar distance = raycaster.ray.origin.distanceTo( intersectionPointWorld );\n\n\t\t\tif ( distance < raycaster.near || distance > raycaster.far ) return null;\n\n\t\t\treturn {\n\t\t\t\tdistance: distance,\n\t\t\t\tpoint: intersectionPointWorld.clone(),\n\t\t\t\tobject: object\n\t\t\t};\n\n\t\t}\n\n\t\tfunction checkBufferGeometryIntersection( object, raycaster, ray, positions, uvs, a, b, c ) {\n\n\t\t\tvA.fromArray( positions, a * 3 );\n\t\t\tvB.fromArray( positions, b * 3 );\n\t\t\tvC.fromArray( positions, c * 3 );\n\n\t\t\tvar intersection = checkIntersection( object, raycaster, ray, vA, vB, vC, intersectionPoint );\n\n\t\t\tif ( intersection ) {\n\n\t\t\t\tif ( uvs ) {\n\n\t\t\t\t\tuvA.fromArray( uvs, a * 2 );\n\t\t\t\t\tuvB.fromArray( uvs, b * 2 );\n\t\t\t\t\tuvC.fromArray( uvs, c * 2 );\n\n\t\t\t\t\tintersection.uv = uvIntersection( intersectionPoint, vA, vB, vC, uvA, uvB, uvC );\n\n\t\t\t\t}\n\n\t\t\t\tintersection.face = new Face3( a, b, c, Triangle.normal( vA, vB, vC ) );\n\t\t\t\tintersection.faceIndex = a;\n\n\t\t\t}\n\n\t\t\treturn intersection;\n\n\t\t}\n\n\t\treturn function raycast( raycaster, intersects ) {\n\n\t\t\tvar geometry = this.geometry;\n\t\t\tvar material = this.material;\n\t\t\tvar matrixWorld = this.matrixWorld;\n\n\t\t\tif ( material === undefined ) return;\n\n\t\t\t// Checking boundingSphere distance to ray\n\n\t\t\tif ( geometry.boundingSphere === null ) geometry.computeBoundingSphere();\n\n\t\t\tsphere.copy( geometry.boundingSphere );\n\t\t\tsphere.applyMatrix4( matrixWorld );\n\n\t\t\tif ( raycaster.ray.intersectsSphere( sphere ) === false ) return;\n\n\t\t\t//\n\n\t\t\tinverseMatrix.getInverse( matrixWorld );\n\t\t\tray.copy( raycaster.ray ).applyMatrix4( inverseMatrix );\n\n\t\t\t// Check boundingBox before continuing\n\n\t\t\tif ( geometry.boundingBox !== null ) {\n\n\t\t\t\tif ( ray.intersectsBox( geometry.boundingBox ) === false ) return;\n\n\t\t\t}\n\n\t\t\tvar uvs, intersection;\n\n\t\t\tif ( (geometry && geometry.isBufferGeometry) ) {\n\n\t\t\t\tvar a, b, c;\n\t\t\t\tvar index = geometry.index;\n\t\t\t\tvar attributes = geometry.attributes;\n\t\t\t\tvar positions = attributes.position.array;\n\n\t\t\t\tif ( attributes.uv !== undefined ) {\n\n\t\t\t\t\tuvs = attributes.uv.array;\n\n\t\t\t\t}\n\n\t\t\t\tif ( index !== null ) {\n\n\t\t\t\t\tvar indices = index.array;\n\n\t\t\t\t\tfor ( var i = 0, l = indices.length; i < l; i += 3 ) {\n\n\t\t\t\t\t\ta = indices[ i ];\n\t\t\t\t\t\tb = indices[ i + 1 ];\n\t\t\t\t\t\tc = indices[ i + 2 ];\n\n\t\t\t\t\t\tintersection = checkBufferGeometryIntersection( this, raycaster, ray, positions, uvs, a, b, c );\n\n\t\t\t\t\t\tif ( intersection ) {\n\n\t\t\t\t\t\t\tintersection.faceIndex = Math.floor( i / 3 ); // triangle number in indices buffer semantics\n\t\t\t\t\t\t\tintersects.push( intersection );\n\n\t\t\t\t\t\t}\n\n\t\t\t\t\t}\n\n\t\t\t\t} else {\n\n\n\t\t\t\t\tfor ( var i = 0, l = positions.length; i < l; i += 9 ) {\n\n\t\t\t\t\t\ta = i / 3;\n\t\t\t\t\t\tb = a + 1;\n\t\t\t\t\t\tc = a + 2;\n\n\t\t\t\t\t\tintersection = checkBufferGeometryIntersection( this, raycaster, ray, positions, uvs, a, b, c );\n\n\t\t\t\t\t\tif ( intersection ) {\n\n\t\t\t\t\t\t\tintersection.index = a; // triangle number in positions buffer semantics\n\t\t\t\t\t\t\tintersects.push( intersection );\n\n\t\t\t\t\t\t}\n\n\t\t\t\t\t}\n\n\t\t\t\t}\n\n\t\t\t} else if ( (geometry && geometry.isGeometry) ) {\n\n\t\t\t\tvar fvA, fvB, fvC;\n\t\t\t\tvar isFaceMaterial = (material && material.isMultiMaterial);\n\t\t\t\tvar materials = isFaceMaterial === true ? material.materials : null;\n\n\t\t\t\tvar vertices = geometry.vertices;\n\t\t\t\tvar faces = geometry.faces;\n\t\t\t\tvar faceVertexUvs = geometry.faceVertexUvs[ 0 ];\n\t\t\t\tif ( faceVertexUvs.length > 0 ) uvs = faceVertexUvs;\n\n\t\t\t\tfor ( var f = 0, fl = faces.length; f < fl; f ++ ) {\n\n\t\t\t\t\tvar face = faces[ f ];\n\t\t\t\t\tvar faceMaterial = isFaceMaterial === true ? materials[ face.materialIndex ] : material;\n\n\t\t\t\t\tif ( faceMaterial === undefined ) continue;\n\n\t\t\t\t\tfvA = vertices[ face.a ];\n\t\t\t\t\tfvB = vertices[ face.b ];\n\t\t\t\t\tfvC = vertices[ face.c ];\n\n\t\t\t\t\tif ( faceMaterial.morphTargets === true ) {\n\n\t\t\t\t\t\tvar morphTargets = geometry.morphTargets;\n\t\t\t\t\t\tvar morphInfluences = this.morphTargetInfluences;\n\n\t\t\t\t\t\tvA.set( 0, 0, 0 );\n\t\t\t\t\t\tvB.set( 0, 0, 0 );\n\t\t\t\t\t\tvC.set( 0, 0, 0 );\n\n\t\t\t\t\t\tfor ( var t = 0, tl = morphTargets.length; t < tl; t ++ ) {\n\n\t\t\t\t\t\t\tvar influence = morphInfluences[ t ];\n\n\t\t\t\t\t\t\tif ( influence === 0 ) continue;\n\n\t\t\t\t\t\t\tvar targets = morphTargets[ t ].vertices;\n\n\t\t\t\t\t\t\tvA.addScaledVector( tempA.subVectors( targets[ face.a ], fvA ), influence );\n\t\t\t\t\t\t\tvB.addScaledVector( tempB.subVectors( targets[ face.b ], fvB ), influence );\n\t\t\t\t\t\t\tvC.addScaledVector( tempC.subVectors( targets[ face.c ], fvC ), influence );\n\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\tvA.add( fvA );\n\t\t\t\t\t\tvB.add( fvB );\n\t\t\t\t\t\tvC.add( fvC );\n\n\t\t\t\t\t\tfvA = vA;\n\t\t\t\t\t\tfvB = vB;\n\t\t\t\t\t\tfvC = vC;\n\n\t\t\t\t\t}\n\n\t\t\t\t\tintersection = checkIntersection( this, raycaster, ray, fvA, fvB, fvC, intersectionPoint );\n\n\t\t\t\t\tif ( intersection ) {\n\n\t\t\t\t\t\tif ( uvs ) {\n\n\t\t\t\t\t\t\tvar uvs_f = uvs[ f ];\n\t\t\t\t\t\t\tuvA.copy( uvs_f[ 0 ] );\n\t\t\t\t\t\t\tuvB.copy( uvs_f[ 1 ] );\n\t\t\t\t\t\t\tuvC.copy( uvs_f[ 2 ] );\n\n\t\t\t\t\t\t\tintersection.uv = uvIntersection( intersectionPoint, fvA, fvB, fvC, uvA, uvB, uvC );\n\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\tintersection.face = face;\n\t\t\t\t\t\tintersection.faceIndex = f;\n\t\t\t\t\t\tintersects.push( intersection );\n\n\t\t\t\t\t}\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t};\n\n\t}() ),\n\n\tclone: function () {\n\n\t\treturn new this.constructor( this.geometry, this.material ).copy( this );\n\n\t}\n\n} );\n\n\nexport { Mesh };\n","import { BufferGeometry } from '../core/BufferGeometry';\nimport { Vector3 } from '../math/Vector3';\nimport { BufferAttribute } from '../core/BufferAttribute';\n\n/**\n * @author Mugen87 / https://github.com/Mugen87\n */\n\nfunction BoxBufferGeometry( width, height, depth, widthSegments, heightSegments, depthSegments ) {\n\n\tBufferGeometry.call( this );\n\n\tthis.type = 'BoxBufferGeometry';\n\n\tthis.parameters = {\n\t\twidth: width,\n\t\theight: height,\n\t\tdepth: depth,\n\t\twidthSegments: widthSegments,\n\t\theightSegments: heightSegments,\n\t\tdepthSegments: depthSegments\n\t};\n\n\tvar scope = this;\n\n\t// segments\n\twidthSegments = Math.floor( widthSegments ) || 1;\n\theightSegments = Math.floor( heightSegments ) || 1;\n\tdepthSegments = Math.floor( depthSegments ) || 1;\n\n\t// these are used to calculate buffer length\n\tvar vertexCount = calculateVertexCount( widthSegments, heightSegments, depthSegments );\n\tvar indexCount = calculateIndexCount( widthSegments, heightSegments, depthSegments );\n\n\t// buffers\n\tvar indices = new ( indexCount > 65535 ? Uint32Array : Uint16Array )( indexCount );\n\tvar vertices = new Float32Array( vertexCount * 3 );\n\tvar normals = new Float32Array( vertexCount * 3 );\n\tvar uvs = new Float32Array( vertexCount * 2 );\n\n\t// offset variables\n\tvar vertexBufferOffset = 0;\n\tvar uvBufferOffset = 0;\n\tvar indexBufferOffset = 0;\n\tvar numberOfVertices = 0;\n\n\t// group variables\n\tvar groupStart = 0;\n\n\t// build each side of the box geometry\n\tbuildPlane( 'z', 'y', 'x', - 1, - 1, depth, height, width, depthSegments, heightSegments, 0 ); // px\n\tbuildPlane( 'z', 'y', 'x', 1, - 1, depth, height, - width, depthSegments, heightSegments, 1 ); // nx\n\tbuildPlane( 'x', 'z', 'y', 1, 1, width, depth, height, widthSegments, depthSegments, 2 ); // py\n\tbuildPlane( 'x', 'z', 'y', 1, - 1, width, depth, - height, widthSegments, depthSegments, 3 ); // ny\n\tbuildPlane( 'x', 'y', 'z', 1, - 1, width, height, depth, widthSegments, heightSegments, 4 ); // pz\n\tbuildPlane( 'x', 'y', 'z', - 1, - 1, width, height, - depth, widthSegments, heightSegments, 5 ); // nz\n\n\t// build geometry\n\tthis.setIndex( new BufferAttribute( indices, 1 ) );\n\tthis.addAttribute( 'position', new BufferAttribute( vertices, 3 ) );\n\tthis.addAttribute( 'normal', new BufferAttribute( normals, 3 ) );\n\tthis.addAttribute( 'uv', new BufferAttribute( uvs, 2 ) );\n\n\t// helper functions\n\n\tfunction calculateVertexCount( w, h, d ) {\n\n\t\tvar vertices = 0;\n\n\t\t// calculate the amount of vertices for each side (plane)\n\t\tvertices += (w + 1) * (h + 1) * 2; // xy\n\t\tvertices += (w + 1) * (d + 1) * 2; // xz\n\t\tvertices += (d + 1) * (h + 1) * 2; // zy\n\n\t\treturn vertices;\n\n\t}\n\n\tfunction calculateIndexCount( w, h, d ) {\n\n\t\tvar index = 0;\n\n\t\t// calculate the amount of squares for each side\n\t\tindex += w * h * 2; // xy\n\t\tindex += w * d * 2; // xz\n\t\tindex += d * h * 2; // zy\n\n\t\treturn index * 6; // two triangles per square => six vertices per square\n\n\t}\n\n\tfunction buildPlane( u, v, w, udir, vdir, width, height, depth, gridX, gridY, materialIndex ) {\n\n\t\tvar segmentWidth\t= width / gridX;\n\t\tvar segmentHeight = height / gridY;\n\n\t\tvar widthHalf = width / 2;\n\t\tvar heightHalf = height / 2;\n\t\tvar depthHalf = depth / 2;\n\n\t\tvar gridX1 = gridX + 1;\n\t\tvar gridY1 = gridY + 1;\n\n\t\tvar vertexCounter = 0;\n\t\tvar groupCount = 0;\n\n\t\tvar vector = new Vector3();\n\n\t\t// generate vertices, normals and uvs\n\n\t\tfor ( var iy = 0; iy < gridY1; iy ++ ) {\n\n\t\t\tvar y = iy * segmentHeight - heightHalf;\n\n\t\t\tfor ( var ix = 0; ix < gridX1; ix ++ ) {\n\n\t\t\t\tvar x = ix * segmentWidth - widthHalf;\n\n\t\t\t\t// set values to correct vector component\n\t\t\t\tvector[ u ] = x * udir;\n\t\t\t\tvector[ v ] = y * vdir;\n\t\t\t\tvector[ w ] = depthHalf;\n\n\t\t\t\t// now apply vector to vertex buffer\n\t\t\t\tvertices[ vertexBufferOffset ] = vector.x;\n\t\t\t\tvertices[ vertexBufferOffset + 1 ] = vector.y;\n\t\t\t\tvertices[ vertexBufferOffset + 2 ] = vector.z;\n\n\t\t\t\t// set values to correct vector component\n\t\t\t\tvector[ u ] = 0;\n\t\t\t\tvector[ v ] = 0;\n\t\t\t\tvector[ w ] = depth > 0 ? 1 : - 1;\n\n\t\t\t\t// now apply vector to normal buffer\n\t\t\t\tnormals[ vertexBufferOffset ] = vector.x;\n\t\t\t\tnormals[ vertexBufferOffset + 1 ] = vector.y;\n\t\t\t\tnormals[ vertexBufferOffset + 2 ] = vector.z;\n\n\t\t\t\t// uvs\n\t\t\t\tuvs[ uvBufferOffset ] = ix / gridX;\n\t\t\t\tuvs[ uvBufferOffset + 1 ] = 1 - ( iy / gridY );\n\n\t\t\t\t// update offsets and counters\n\t\t\t\tvertexBufferOffset += 3;\n\t\t\t\tuvBufferOffset += 2;\n\t\t\t\tvertexCounter += 1;\n\n\t\t\t}\n\n\t\t}\n\n\t\t// 1. you need three indices to draw a single face\n\t\t// 2. a single segment consists of two faces\n\t\t// 3. so we need to generate six (2*3) indices per segment\n\n\t\tfor ( iy = 0; iy < gridY; iy ++ ) {\n\n\t\t\tfor ( ix = 0; ix < gridX; ix ++ ) {\n\n\t\t\t\t// indices\n\t\t\t\tvar a = numberOfVertices + ix + gridX1 * iy;\n\t\t\t\tvar b = numberOfVertices + ix + gridX1 * ( iy + 1 );\n\t\t\t\tvar c = numberOfVertices + ( ix + 1 ) + gridX1 * ( iy + 1 );\n\t\t\t\tvar d = numberOfVertices + ( ix + 1 ) + gridX1 * iy;\n\n\t\t\t\t// face one\n\t\t\t\tindices[ indexBufferOffset ] = a;\n\t\t\t\tindices[ indexBufferOffset + 1 ] = b;\n\t\t\t\tindices[ indexBufferOffset + 2 ] = d;\n\n\t\t\t\t// face two\n\t\t\t\tindices[ indexBufferOffset + 3 ] = b;\n\t\t\t\tindices[ indexBufferOffset + 4 ] = c;\n\t\t\t\tindices[ indexBufferOffset + 5 ] = d;\n\n\t\t\t\t// update offsets and counters\n\t\t\t\tindexBufferOffset += 6;\n\t\t\t\tgroupCount += 6;\n\n\t\t\t}\n\n\t\t}\n\n\t\t// add a group to the geometry. this will ensure multi material support\n\t\tscope.addGroup( groupStart, groupCount, materialIndex );\n\n\t\t// calculate new start value for groups\n\t\tgroupStart += groupCount;\n\n\t\t// update total number of vertices\n\t\tnumberOfVertices += vertexCounter;\n\n\t}\n\n}\n\nBoxBufferGeometry.prototype = Object.create( BufferGeometry.prototype );\nBoxBufferGeometry.prototype.constructor = BoxBufferGeometry;\n\n\nexport { BoxBufferGeometry };\n","import { BufferGeometry } from '../core/BufferGeometry';\nimport { BufferAttribute } from '../core/BufferAttribute';\n\n/**\n * @author mrdoob / http://mrdoob.com/\n * based on http://papervision3d.googlecode.com/svn/trunk/as3/trunk/src/org/papervision3d/objects/primitives/Plane.as\n */\n\nfunction PlaneBufferGeometry( width, height, widthSegments, heightSegments ) {\n\n\tBufferGeometry.call( this );\n\n\tthis.type = 'PlaneBufferGeometry';\n\n\tthis.parameters = {\n\t\twidth: width,\n\t\theight: height,\n\t\twidthSegments: widthSegments,\n\t\theightSegments: heightSegments\n\t};\n\n\tvar width_half = width / 2;\n\tvar height_half = height / 2;\n\n\tvar gridX = Math.floor( widthSegments ) || 1;\n\tvar gridY = Math.floor( heightSegments ) || 1;\n\n\tvar gridX1 = gridX + 1;\n\tvar gridY1 = gridY + 1;\n\n\tvar segment_width = width / gridX;\n\tvar segment_height = height / gridY;\n\n\tvar vertices = new Float32Array( gridX1 * gridY1 * 3 );\n\tvar normals = new Float32Array( gridX1 * gridY1 * 3 );\n\tvar uvs = new Float32Array( gridX1 * gridY1 * 2 );\n\n\tvar offset = 0;\n\tvar offset2 = 0;\n\n\tfor ( var iy = 0; iy < gridY1; iy ++ ) {\n\n\t\tvar y = iy * segment_height - height_half;\n\n\t\tfor ( var ix = 0; ix < gridX1; ix ++ ) {\n\n\t\t\tvar x = ix * segment_width - width_half;\n\n\t\t\tvertices[ offset ] = x;\n\t\t\tvertices[ offset + 1 ] = - y;\n\n\t\t\tnormals[ offset + 2 ] = 1;\n\n\t\t\tuvs[ offset2 ] = ix / gridX;\n\t\t\tuvs[ offset2 + 1 ] = 1 - ( iy / gridY );\n\n\t\t\toffset += 3;\n\t\t\toffset2 += 2;\n\n\t\t}\n\n\t}\n\n\toffset = 0;\n\n\tvar indices = new ( ( vertices.length / 3 ) > 65535 ? Uint32Array : Uint16Array )( gridX * gridY * 6 );\n\n\tfor ( var iy = 0; iy < gridY; iy ++ ) {\n\n\t\tfor ( var ix = 0; ix < gridX; ix ++ ) {\n\n\t\t\tvar a = ix + gridX1 * iy;\n\t\t\tvar b = ix + gridX1 * ( iy + 1 );\n\t\t\tvar c = ( ix + 1 ) + gridX1 * ( iy + 1 );\n\t\t\tvar d = ( ix + 1 ) + gridX1 * iy;\n\n\t\t\tindices[ offset ] = a;\n\t\t\tindices[ offset + 1 ] = b;\n\t\t\tindices[ offset + 2 ] = d;\n\n\t\t\tindices[ offset + 3 ] = b;\n\t\t\tindices[ offset + 4 ] = c;\n\t\t\tindices[ offset + 5 ] = d;\n\n\t\t\toffset += 6;\n\n\t\t}\n\n\t}\n\n\tthis.setIndex( new BufferAttribute( indices, 1 ) );\n\tthis.addAttribute( 'position', new BufferAttribute( vertices, 3 ) );\n\tthis.addAttribute( 'normal', new BufferAttribute( normals, 3 ) );\n\tthis.addAttribute( 'uv', new BufferAttribute( uvs, 2 ) );\n\n}\n\nPlaneBufferGeometry.prototype = Object.create( BufferGeometry.prototype );\nPlaneBufferGeometry.prototype.constructor = PlaneBufferGeometry;\n\n\nexport { PlaneBufferGeometry };\n","import { Matrix4 } from '../math/Matrix4';\nimport { Quaternion } from '../math/Quaternion';\nimport { Object3D } from '../core/Object3D';\nimport { Vector3 } from '../math/Vector3';\n\n/**\n * @author mrdoob / http://mrdoob.com/\n * @author mikael emtinger / http://gomo.se/\n * @author WestLangley / http://github.com/WestLangley\n*/\n\nfunction Camera() {\n\n\tObject3D.call( this );\n\n\tthis.type = 'Camera';\n\n\tthis.matrixWorldInverse = new Matrix4();\n\tthis.projectionMatrix = new Matrix4();\n\n}\n\nCamera.prototype = Object.create( Object3D.prototype );\nCamera.prototype.constructor = Camera;\n\nCamera.prototype.isCamera = true;\n\nCamera.prototype.getWorldDirection = function () {\n\n\tvar quaternion = new Quaternion();\n\n\treturn function getWorldDirection( optionalTarget ) {\n\n\t\tvar result = optionalTarget || new Vector3();\n\n\t\tthis.getWorldQuaternion( quaternion );\n\n\t\treturn result.set( 0, 0, - 1 ).applyQuaternion( quaternion );\n\n\t};\n\n}();\n\nCamera.prototype.lookAt = function () {\n\n\t// This routine does not support cameras with rotated and/or translated parent(s)\n\n\tvar m1 = new Matrix4();\n\n\treturn function lookAt( vector ) {\n\n\t\tm1.lookAt( this.position, vector, this.up );\n\n\t\tthis.quaternion.setFromRotationMatrix( m1 );\n\n\t};\n\n}();\n\nCamera.prototype.clone = function () {\n\n\treturn new this.constructor().copy( this );\n\n};\n\nCamera.prototype.copy = function ( source ) {\n\n\tObject3D.prototype.copy.call( this, source );\n\n\tthis.matrixWorldInverse.copy( source.matrixWorldInverse );\n\tthis.projectionMatrix.copy( source.projectionMatrix );\n\n\treturn this;\n\n};\n\n\nexport { Camera };\n","import { Camera } from './Camera';\nimport { Object3D } from '../core/Object3D';\nimport { _Math } from '../math/Math';\n\n/**\n * @author mrdoob / http://mrdoob.com/\n * @author greggman / http://games.greggman.com/\n * @author zz85 / http://www.lab4games.net/zz85/blog\n * @author tschw\n */\n\nfunction PerspectiveCamera( fov, aspect, near, far ) {\n\n\tCamera.call( this );\n\n\tthis.type = 'PerspectiveCamera';\n\n\tthis.fov = fov !== undefined ? fov : 50;\n\tthis.zoom = 1;\n\n\tthis.near = near !== undefined ? near : 0.1;\n\tthis.far = far !== undefined ? far : 2000;\n\tthis.focus = 10;\n\n\tthis.aspect = aspect !== undefined ? aspect : 1;\n\tthis.view = null;\n\n\tthis.filmGauge = 35;\t// width of the film (default in millimeters)\n\tthis.filmOffset = 0;\t// horizontal film offset (same unit as gauge)\n\n\tthis.updateProjectionMatrix();\n\n}\n\nPerspectiveCamera.prototype = Object.assign( Object.create( Camera.prototype ), {\n\n\tconstructor: PerspectiveCamera,\n\n\tisPerspectiveCamera: true,\n\n\tcopy: function ( source ) {\n\n\t\tCamera.prototype.copy.call( this, source );\n\n\t\tthis.fov = source.fov;\n\t\tthis.zoom = source.zoom;\n\n\t\tthis.near = source.near;\n\t\tthis.far = source.far;\n\t\tthis.focus = source.focus;\n\n\t\tthis.aspect = source.aspect;\n\t\tthis.view = source.view === null ? null : Object.assign( {}, source.view );\n\n\t\tthis.filmGauge = source.filmGauge;\n\t\tthis.filmOffset = source.filmOffset;\n\n\t\treturn this;\n\n\t},\n\n\t/**\n\t * Sets the FOV by focal length in respect to the current .filmGauge.\n\t *\n\t * The default film gauge is 35, so that the focal length can be specified for\n\t * a 35mm (full frame) camera.\n\t *\n\t * Values for focal length and film gauge must have the same unit.\n\t */\n\tsetFocalLength: function ( focalLength ) {\n\n\t\t// see http://www.bobatkins.com/photography/technical/field_of_view.html\n\t\tvar vExtentSlope = 0.5 * this.getFilmHeight() / focalLength;\n\n\t\tthis.fov = _Math.RAD2DEG * 2 * Math.atan( vExtentSlope );\n\t\tthis.updateProjectionMatrix();\n\n\t},\n\n\t/**\n\t * Calculates the focal length from the current .fov and .filmGauge.\n\t */\n\tgetFocalLength: function () {\n\n\t\tvar vExtentSlope = Math.tan( _Math.DEG2RAD * 0.5 * this.fov );\n\n\t\treturn 0.5 * this.getFilmHeight() / vExtentSlope;\n\n\t},\n\n\tgetEffectiveFOV: function () {\n\n\t\treturn _Math.RAD2DEG * 2 * Math.atan(\n\t\t\t\tMath.tan( _Math.DEG2RAD * 0.5 * this.fov ) / this.zoom );\n\n\t},\n\n\tgetFilmWidth: function () {\n\n\t\t// film not completely covered in portrait format (aspect < 1)\n\t\treturn this.filmGauge * Math.min( this.aspect, 1 );\n\n\t},\n\n\tgetFilmHeight: function () {\n\n\t\t// film not completely covered in landscape format (aspect > 1)\n\t\treturn this.filmGauge / Math.max( this.aspect, 1 );\n\n\t},\n\n\t/**\n\t * Sets an offset in a larger frustum. This is useful for multi-window or\n\t * multi-monitor/multi-machine setups.\n\t *\n\t * For example, if you have 3x2 monitors and each monitor is 1920x1080 and\n\t * the monitors are in grid like this\n\t *\n\t * +---+---+---+\n\t * | A | B | C |\n\t * +---+---+---+\n\t * | D | E | F |\n\t * +---+---+---+\n\t *\n\t * then for each monitor you would call it like this\n\t *\n\t * var w = 1920;\n\t * var h = 1080;\n\t * var fullWidth = w * 3;\n\t * var fullHeight = h * 2;\n\t *\n\t * --A--\n\t * camera.setOffset( fullWidth, fullHeight, w * 0, h * 0, w, h );\n\t * --B--\n\t * camera.setOffset( fullWidth, fullHeight, w * 1, h * 0, w, h );\n\t * --C--\n\t * camera.setOffset( fullWidth, fullHeight, w * 2, h * 0, w, h );\n\t * --D--\n\t * camera.setOffset( fullWidth, fullHeight, w * 0, h * 1, w, h );\n\t * --E--\n\t * camera.setOffset( fullWidth, fullHeight, w * 1, h * 1, w, h );\n\t * --F--\n\t * camera.setOffset( fullWidth, fullHeight, w * 2, h * 1, w, h );\n\t *\n\t * Note there is no reason monitors have to be the same size or in a grid.\n\t */\n\tsetViewOffset: function ( fullWidth, fullHeight, x, y, width, height ) {\n\n\t\tthis.aspect = fullWidth / fullHeight;\n\n\t\tthis.view = {\n\t\t\tfullWidth: fullWidth,\n\t\t\tfullHeight: fullHeight,\n\t\t\toffsetX: x,\n\t\t\toffsetY: y,\n\t\t\twidth: width,\n\t\t\theight: height\n\t\t};\n\n\t\tthis.updateProjectionMatrix();\n\n\t},\n\n\tclearViewOffset: function() {\n\n\t\tthis.view = null;\n\t\tthis.updateProjectionMatrix();\n\n\t},\n\n\tupdateProjectionMatrix: function () {\n\n\t\tvar near = this.near,\n\t\t\ttop = near * Math.tan(\n\t\t\t\t\t_Math.DEG2RAD * 0.5 * this.fov ) / this.zoom,\n\t\t\theight = 2 * top,\n\t\t\twidth = this.aspect * height,\n\t\t\tleft = - 0.5 * width,\n\t\t\tview = this.view;\n\n\t\tif ( view !== null ) {\n\n\t\t\tvar fullWidth = view.fullWidth,\n\t\t\t\tfullHeight = view.fullHeight;\n\n\t\t\tleft += view.offsetX * width / fullWidth;\n\t\t\ttop -= view.offsetY * height / fullHeight;\n\t\t\twidth *= view.width / fullWidth;\n\t\t\theight *= view.height / fullHeight;\n\n\t\t}\n\n\t\tvar skew = this.filmOffset;\n\t\tif ( skew !== 0 ) left += near * skew / this.getFilmWidth();\n\n\t\tthis.projectionMatrix.makeFrustum(\n\t\t\t\tleft, left + width, top - height, top, near, this.far );\n\n\t},\n\n\ttoJSON: function ( meta ) {\n\n\t\tvar data = Object3D.prototype.toJSON.call( this, meta );\n\n\t\tdata.object.fov = this.fov;\n\t\tdata.object.zoom = this.zoom;\n\n\t\tdata.object.near = this.near;\n\t\tdata.object.far = this.far;\n\t\tdata.object.focus = this.focus;\n\n\t\tdata.object.aspect = this.aspect;\n\n\t\tif ( this.view !== null ) data.object.view = Object.assign( {}, this.view );\n\n\t\tdata.object.filmGauge = this.filmGauge;\n\t\tdata.object.filmOffset = this.filmOffset;\n\n\t\treturn data;\n\n\t}\n\n} );\n\n\nexport { PerspectiveCamera };\n","import { Camera } from './Camera';\nimport { Object3D } from '../core/Object3D';\n\n/**\n * @author alteredq / http://alteredqualia.com/\n * @author arose / http://github.com/arose\n */\n\nfunction OrthographicCamera( left, right, top, bottom, near, far ) {\n\n\tCamera.call( this );\n\n\tthis.type = 'OrthographicCamera';\n\n\tthis.zoom = 1;\n\tthis.view = null;\n\n\tthis.left = left;\n\tthis.right = right;\n\tthis.top = top;\n\tthis.bottom = bottom;\n\n\tthis.near = ( near !== undefined ) ? near : 0.1;\n\tthis.far = ( far !== undefined ) ? far : 2000;\n\n\tthis.updateProjectionMatrix();\n\n}\n\nOrthographicCamera.prototype = Object.assign( Object.create( Camera.prototype ), {\n\n\tconstructor: OrthographicCamera,\n\n\tisOrthographicCamera: true,\n\n\tcopy: function ( source ) {\n\n\t\tCamera.prototype.copy.call( this, source );\n\n\t\tthis.left = source.left;\n\t\tthis.right = source.right;\n\t\tthis.top = source.top;\n\t\tthis.bottom = source.bottom;\n\t\tthis.near = source.near;\n\t\tthis.far = source.far;\n\n\t\tthis.zoom = source.zoom;\n\t\tthis.view = source.view === null ? null : Object.assign( {}, source.view );\n\n\t\treturn this;\n\n\t},\n\n\tsetViewOffset: function( fullWidth, fullHeight, x, y, width, height ) {\n\n\t\tthis.view = {\n\t\t\tfullWidth: fullWidth,\n\t\t\tfullHeight: fullHeight,\n\t\t\toffsetX: x,\n\t\t\toffsetY: y,\n\t\t\twidth: width,\n\t\t\theight: height\n\t\t};\n\n\t\tthis.updateProjectionMatrix();\n\n\t},\n\n\tclearViewOffset: function() {\n\n\t\tthis.view = null;\n\t\tthis.updateProjectionMatrix();\n\n\t},\n\n\tupdateProjectionMatrix: function () {\n\n\t\tvar dx = ( this.right - this.left ) / ( 2 * this.zoom );\n\t\tvar dy = ( this.top - this.bottom ) / ( 2 * this.zoom );\n\t\tvar cx = ( this.right + this.left ) / 2;\n\t\tvar cy = ( this.top + this.bottom ) / 2;\n\n\t\tvar left = cx - dx;\n\t\tvar right = cx + dx;\n\t\tvar top = cy + dy;\n\t\tvar bottom = cy - dy;\n\n\t\tif ( this.view !== null ) {\n\n\t\t\tvar zoomW = this.zoom / ( this.view.width / this.view.fullWidth );\n\t\t\tvar zoomH = this.zoom / ( this.view.height / this.view.fullHeight );\n\t\t\tvar scaleW = ( this.right - this.left ) / this.view.width;\n\t\t\tvar scaleH = ( this.top - this.bottom ) / this.view.height;\n\n\t\t\tleft += scaleW * ( this.view.offsetX / zoomW );\n\t\t\tright = left + scaleW * ( this.view.width / zoomW );\n\t\t\ttop -= scaleH * ( this.view.offsetY / zoomH );\n\t\t\tbottom = top - scaleH * ( this.view.height / zoomH );\n\n\t\t}\n\n\t\tthis.projectionMatrix.makeOrthographic( left, right, top, bottom, this.near, this.far );\n\n\t},\n\n\ttoJSON: function ( meta ) {\n\n\t\tvar data = Object3D.prototype.toJSON.call( this, meta );\n\n\t\tdata.object.zoom = this.zoom;\n\t\tdata.object.left = this.left;\n\t\tdata.object.right = this.right;\n\t\tdata.object.top = this.top;\n\t\tdata.object.bottom = this.bottom;\n\t\tdata.object.near = this.near;\n\t\tdata.object.far = this.far;\n\n\t\tif ( this.view !== null ) data.object.view = Object.assign( {}, this.view );\n\n\t\treturn data;\n\n\t}\n\n} );\n\n\nexport { OrthographicCamera };\n","/**\n * @author mrdoob / http://mrdoob.com/\n */\n\nfunction WebGLIndexedBufferRenderer( gl, extensions, infoRender ) {\n\n\tvar mode;\n\n\tfunction setMode( value ) {\n\n\t\tmode = value;\n\n\t}\n\n\tvar type, size;\n\n\tfunction setIndex( index ) {\n\n\t\tif ( index.array instanceof Uint32Array && extensions.get( 'OES_element_index_uint' ) ) {\n\n\t\t\ttype = gl.UNSIGNED_INT;\n\t\t\tsize = 4;\n\n\t\t} else {\n\n\t\t\ttype = gl.UNSIGNED_SHORT;\n\t\t\tsize = 2;\n\n\t\t}\n\n\t}\n\n\tfunction render( start, count ) {\n\n\t\tgl.drawElements( mode, count, type, start * size );\n\n\t\tinfoRender.calls ++;\n\t\tinfoRender.vertices += count;\n\n\t\tif ( mode === gl.TRIANGLES ) infoRender.faces += count / 3;\n\n\t}\n\n\tfunction renderInstances( geometry, start, count ) {\n\n\t\tvar extension = extensions.get( 'ANGLE_instanced_arrays' );\n\n\t\tif ( extension === null ) {\n\n\t\t\tconsole.error( 'THREE.WebGLBufferRenderer: using THREE.InstancedBufferGeometry but hardware does not support extension ANGLE_instanced_arrays.' );\n\t\t\treturn;\n\n\t\t}\n\n\t\textension.drawElementsInstancedANGLE( mode, count, type, start * size, geometry.maxInstancedCount );\n\n\t\tinfoRender.calls ++;\n\t\tinfoRender.vertices += count * geometry.maxInstancedCount;\n\n\t\tif ( mode === gl.TRIANGLES ) infoRender.faces += geometry.maxInstancedCount * count / 3;\n\n\t}\n\n\treturn {\n\n\t\tsetMode: setMode,\n\t\tsetIndex: setIndex,\n\t\trender: render,\n\t\trenderInstances: renderInstances\n\n\t};\n\n}\n\n\nexport { WebGLIndexedBufferRenderer };\n","/**\n * @author mrdoob / http://mrdoob.com/\n */\n\nfunction WebGLBufferRenderer( gl, extensions, infoRender ) {\n\n\tvar mode;\n\n\tfunction setMode( value ) {\n\n\t\tmode = value;\n\n\t}\n\n\tfunction render( start, count ) {\n\n\t\tgl.drawArrays( mode, start, count );\n\n\t\tinfoRender.calls ++;\n\t\tinfoRender.vertices += count;\n\n\t\tif ( mode === gl.TRIANGLES ) infoRender.faces += count / 3;\n\n\t}\n\n\tfunction renderInstances( geometry ) {\n\n\t\tvar extension = extensions.get( 'ANGLE_instanced_arrays' );\n\n\t\tif ( extension === null ) {\n\n\t\t\tconsole.error( 'THREE.WebGLBufferRenderer: using THREE.InstancedBufferGeometry but hardware does not support extension ANGLE_instanced_arrays.' );\n\t\t\treturn;\n\n\t\t}\n\n\t\tvar position = geometry.attributes.position;\n\n\t\tvar count = 0;\n\n\t\tif ( (position && position.isInterleavedBufferAttribute) ) {\n\n\t\t\tcount = position.data.count;\n\n\t\t\textension.drawArraysInstancedANGLE( mode, 0, count, geometry.maxInstancedCount );\n\n\t\t} else {\n\n\t\t\tcount = position.count;\n\n\t\t\textension.drawArraysInstancedANGLE( mode, 0, count, geometry.maxInstancedCount );\n\n\t\t}\n\n\t\tinfoRender.calls ++;\n\t\tinfoRender.vertices += count * geometry.maxInstancedCount;\n\n\t\tif ( mode === gl.TRIANGLES ) infoRender.faces += geometry.maxInstancedCount * count / 3;\n\n\t}\n\n\treturn {\n\t\tsetMode: setMode,\n\t\trender: render,\n\t\trenderInstances: renderInstances\n\t};\n\n}\n\n\nexport { WebGLBufferRenderer };\n","/**\n * @author mrdoob / http://mrdoob.com/\n */\n\nimport { Color } from '../../math/Color';\nimport { Vector3 } from '../../math/Vector3';\nimport { Vector2 } from '../../math/Vector2';\n\nfunction WebGLLights() {\n\n\tvar lights = {};\n\n\treturn {\n\n\t\tget: function ( light ) {\n\n\t\t\tif ( lights[ light.id ] !== undefined ) {\n\n\t\t\t\treturn lights[ light.id ];\n\n\t\t\t}\n\n\t\t\tvar uniforms;\n\n\t\t\tswitch ( light.type ) {\n\n\t\t\t\tcase 'DirectionalLight':\n\t\t\t\t\tuniforms = {\n\t\t\t\t\t\tdirection: new Vector3(),\n\t\t\t\t\t\tcolor: new Color(),\n\n\t\t\t\t\t\tshadow: false,\n\t\t\t\t\t\tshadowBias: 0,\n\t\t\t\t\t\tshadowRadius: 1,\n\t\t\t\t\t\tshadowMapSize: new Vector2()\n\t\t\t\t\t};\n\t\t\t\t\tbreak;\n\n\t\t\t\tcase 'SpotLight':\n\t\t\t\t\tuniforms = {\n\t\t\t\t\t\tposition: new Vector3(),\n\t\t\t\t\t\tdirection: new Vector3(),\n\t\t\t\t\t\tcolor: new Color(),\n\t\t\t\t\t\tdistance: 0,\n\t\t\t\t\t\tconeCos: 0,\n\t\t\t\t\t\tpenumbraCos: 0,\n\t\t\t\t\t\tdecay: 0,\n\n\t\t\t\t\t\tshadow: false,\n\t\t\t\t\t\tshadowBias: 0,\n\t\t\t\t\t\tshadowRadius: 1,\n\t\t\t\t\t\tshadowMapSize: new Vector2()\n\t\t\t\t\t};\n\t\t\t\t\tbreak;\n\n\t\t\t\tcase 'PointLight':\n\t\t\t\t\tuniforms = {\n\t\t\t\t\t\tposition: new Vector3(),\n\t\t\t\t\t\tcolor: new Color(),\n\t\t\t\t\t\tdistance: 0,\n\t\t\t\t\t\tdecay: 0,\n\n\t\t\t\t\t\tshadow: false,\n\t\t\t\t\t\tshadowBias: 0,\n\t\t\t\t\t\tshadowRadius: 1,\n\t\t\t\t\t\tshadowMapSize: new Vector2()\n\t\t\t\t\t};\n\t\t\t\t\tbreak;\n\n\t\t\t\tcase 'HemisphereLight':\n\t\t\t\t\tuniforms = {\n\t\t\t\t\t\tdirection: new Vector3(),\n\t\t\t\t\t\tskyColor: new Color(),\n\t\t\t\t\t\tgroundColor: new Color()\n\t\t\t\t\t};\n\t\t\t\t\tbreak;\n\n\t\t\t}\n\n\t\t\tlights[ light.id ] = uniforms;\n\n\t\t\treturn uniforms;\n\n\t\t}\n\n\t};\n\n}\n\n\nexport { WebGLLights };\n","/**\n * @author mrdoob / http://mrdoob.com/\n */\n\nfunction addLineNumbers( string ) {\n\n\tvar lines = string.split( '\\n' );\n\n\tfor ( var i = 0; i < lines.length; i ++ ) {\n\n\t\tlines[ i ] = ( i + 1 ) + ': ' + lines[ i ];\n\n\t}\n\n\treturn lines.join( '\\n' );\n\n}\n\nfunction WebGLShader( gl, type, string ) {\n\n\tvar shader = gl.createShader( type );\n\n\tgl.shaderSource( shader, string );\n\tgl.compileShader( shader );\n\n\tif ( gl.getShaderParameter( shader, gl.COMPILE_STATUS ) === false ) {\n\n\t\tconsole.error( 'THREE.WebGLShader: Shader couldn\\'t compile.' );\n\n\t}\n\n\tif ( gl.getShaderInfoLog( shader ) !== '' ) {\n\n\t\tconsole.warn( 'THREE.WebGLShader: gl.getShaderInfoLog()', type === gl.VERTEX_SHADER ? 'vertex' : 'fragment', gl.getShaderInfoLog( shader ), addLineNumbers( string ) );\n\n\t}\n\n\t// --enable-privileged-webgl-extension\n\t// console.log( type, gl.getExtension( 'WEBGL_debug_shaders' ).getTranslatedShaderSource( shader ) );\n\n\treturn shader;\n\n}\n\nexport { WebGLShader };\n","/**\n * @author mrdoob / http://mrdoob.com/\n */\n\nimport { WebGLUniforms } from './WebGLUniforms';\nimport { WebGLShader } from './WebGLShader';\nimport { ShaderChunk } from '../shaders/ShaderChunk';\nimport { NoToneMapping, AddOperation, MixOperation, MultiplyOperation, EquirectangularRefractionMapping, CubeRefractionMapping, SphericalReflectionMapping, EquirectangularReflectionMapping, CubeUVRefractionMapping, CubeUVReflectionMapping, CubeReflectionMapping, PCFSoftShadowMap, PCFShadowMap, CineonToneMapping, Uncharted2ToneMapping, ReinhardToneMapping, LinearToneMapping, GammaEncoding, RGBDEncoding, RGBM16Encoding, RGBM7Encoding, RGBEEncoding, sRGBEncoding, LinearEncoding } from '../../constants';\n\nvar programIdCount = 0;\n\nfunction getEncodingComponents( encoding ) {\n\n\tswitch ( encoding ) {\n\n\t\tcase LinearEncoding:\n\t\t\treturn [ 'Linear','( value )' ];\n\t\tcase sRGBEncoding:\n\t\t\treturn [ 'sRGB','( value )' ];\n\t\tcase RGBEEncoding:\n\t\t\treturn [ 'RGBE','( value )' ];\n\t\tcase RGBM7Encoding:\n\t\t\treturn [ 'RGBM','( value, 7.0 )' ];\n\t\tcase RGBM16Encoding:\n\t\t\treturn [ 'RGBM','( value, 16.0 )' ];\n\t\tcase RGBDEncoding:\n\t\t\treturn [ 'RGBD','( value, 256.0 )' ];\n\t\tcase GammaEncoding:\n\t\t\treturn [ 'Gamma','( value, float( GAMMA_FACTOR ) )' ];\n\t\tdefault:\n\t\t\tthrow new Error( 'unsupported encoding: ' + encoding );\n\n\t}\n\n}\n\nfunction getTexelDecodingFunction( functionName, encoding ) {\n\n\tvar components = getEncodingComponents( encoding );\n\treturn \"vec4 \" + functionName + \"( vec4 value ) { return \" + components[ 0 ] + \"ToLinear\" + components[ 1 ] + \"; }\";\n\n}\n\nfunction getTexelEncodingFunction( functionName, encoding ) {\n\n\tvar components = getEncodingComponents( encoding );\n\treturn \"vec4 \" + functionName + \"( vec4 value ) { return LinearTo\" + components[ 0 ] + components[ 1 ] + \"; }\";\n\n}\n\nfunction getToneMappingFunction( functionName, toneMapping ) {\n\n\tvar toneMappingName;\n\n\tswitch ( toneMapping ) {\n\n\t\tcase LinearToneMapping:\n\t\t\ttoneMappingName = \"Linear\";\n\t\t\tbreak;\n\n\t\tcase ReinhardToneMapping:\n\t\t\ttoneMappingName = \"Reinhard\";\n\t\t\tbreak;\n\n\t\tcase Uncharted2ToneMapping:\n\t\t\ttoneMappingName = \"Uncharted2\";\n\t\t\tbreak;\n\n\t\tcase CineonToneMapping:\n\t\t\ttoneMappingName = \"OptimizedCineon\";\n\t\t\tbreak;\n\n\t\tdefault:\n\t\t\tthrow new Error( 'unsupported toneMapping: ' + toneMapping );\n\n\t}\n\n\treturn \"vec3 \" + functionName + \"( vec3 color ) { return \" + toneMappingName + \"ToneMapping( color ); }\";\n\n}\n\nfunction generateExtensions( extensions, parameters, rendererExtensions ) {\n\n\textensions = extensions || {};\n\n\tvar chunks = [\n\t\t( extensions.derivatives || parameters.envMapCubeUV || parameters.bumpMap || parameters.normalMap || parameters.flatShading ) ? '#extension GL_OES_standard_derivatives : enable' : '',\n\t\t( extensions.fragDepth || parameters.logarithmicDepthBuffer ) && rendererExtensions.get( 'EXT_frag_depth' ) ? '#extension GL_EXT_frag_depth : enable' : '',\n\t\t( extensions.drawBuffers ) && rendererExtensions.get( 'WEBGL_draw_buffers' ) ? '#extension GL_EXT_draw_buffers : require' : '',\n\t\t( extensions.shaderTextureLOD || parameters.envMap ) && rendererExtensions.get( 'EXT_shader_texture_lod' ) ? '#extension GL_EXT_shader_texture_lod : enable' : '',\n\t];\n\n\treturn chunks.filter( filterEmptyLine ).join( '\\n' );\n\n}\n\nfunction generateDefines( defines ) {\n\n\tvar chunks = [];\n\n\tfor ( var name in defines ) {\n\n\t\tvar value = defines[ name ];\n\n\t\tif ( value === false ) continue;\n\n\t\tchunks.push( '#define ' + name + ' ' + value );\n\n\t}\n\n\treturn chunks.join( '\\n' );\n\n}\n\nfunction fetchAttributeLocations( gl, program, identifiers ) {\n\n\tvar attributes = {};\n\n\tvar n = gl.getProgramParameter( program, gl.ACTIVE_ATTRIBUTES );\n\n\tfor ( var i = 0; i < n; i ++ ) {\n\n\t\tvar info = gl.getActiveAttrib( program, i );\n\t\tvar name = info.name;\n\n\t\t// console.log(\"THREE.WebGLProgram: ACTIVE VERTEX ATTRIBUTE:\", name, i );\n\n\t\tattributes[ name ] = gl.getAttribLocation( program, name );\n\n\t}\n\n\treturn attributes;\n\n}\n\nfunction filterEmptyLine( string ) {\n\n\treturn string !== '';\n\n}\n\nfunction replaceLightNums( string, parameters ) {\n\n\treturn string\n\t\t.replace( /NUM_DIR_LIGHTS/g, parameters.numDirLights )\n\t\t.replace( /NUM_SPOT_LIGHTS/g, parameters.numSpotLights )\n\t\t.replace( /NUM_POINT_LIGHTS/g, parameters.numPointLights )\n\t\t.replace( /NUM_HEMI_LIGHTS/g, parameters.numHemiLights );\n\n}\n\nfunction parseIncludes( string ) {\n\n\tvar pattern = /#include +<([\\w\\d.]+)>/g;\n\n\tfunction replace( match, include ) {\n\n\t\tvar replace = ShaderChunk[ include ];\n\n\t\tif ( replace === undefined ) {\n\n\t\t\tthrow new Error( 'Can not resolve #include <' + include + '>' );\n\n\t\t}\n\n\t\treturn parseIncludes( replace );\n\n\t}\n\n\treturn string.replace( pattern, replace );\n\n}\n\nfunction unrollLoops( string ) {\n\n\tvar pattern = /for \\( int i \\= (\\d+)\\; i < (\\d+)\\; i \\+\\+ \\) \\{([\\s\\S]+?)(?=\\})\\}/g;\n\n\tfunction replace( match, start, end, snippet ) {\n\n\t\tvar unroll = '';\n\n\t\tfor ( var i = parseInt( start ); i < parseInt( end ); i ++ ) {\n\n\t\t\tunroll += snippet.replace( /\\[ i \\]/g, '[ ' + i + ' ]' );\n\n\t\t}\n\n\t\treturn unroll;\n\n\t}\n\n\treturn string.replace( pattern, replace );\n\n}\n\nfunction WebGLProgram( renderer, code, material, parameters ) {\n\n\tvar gl = renderer.context;\n\n\tvar extensions = material.extensions;\n\tvar defines = material.defines;\n\n\tvar vertexShader = material.__webglShader.vertexShader;\n\tvar fragmentShader = material.__webglShader.fragmentShader;\n\n\tvar shadowMapTypeDefine = 'SHADOWMAP_TYPE_BASIC';\n\n\tif ( parameters.shadowMapType === PCFShadowMap ) {\n\n\t\tshadowMapTypeDefine = 'SHADOWMAP_TYPE_PCF';\n\n\t} else if ( parameters.shadowMapType === PCFSoftShadowMap ) {\n\n\t\tshadowMapTypeDefine = 'SHADOWMAP_TYPE_PCF_SOFT';\n\n\t}\n\n\tvar envMapTypeDefine = 'ENVMAP_TYPE_CUBE';\n\tvar envMapModeDefine = 'ENVMAP_MODE_REFLECTION';\n\tvar envMapBlendingDefine = 'ENVMAP_BLENDING_MULTIPLY';\n\n\tif ( parameters.envMap ) {\n\n\t\tswitch ( material.envMap.mapping ) {\n\n\t\t\tcase CubeReflectionMapping:\n\t\t\tcase CubeRefractionMapping:\n\t\t\t\tenvMapTypeDefine = 'ENVMAP_TYPE_CUBE';\n\t\t\t\tbreak;\n\n\t\t\tcase CubeUVReflectionMapping:\n\t\t\tcase CubeUVRefractionMapping:\n\t\t\t\tenvMapTypeDefine = 'ENVMAP_TYPE_CUBE_UV';\n\t\t\t\tbreak;\n\n\t\t\tcase EquirectangularReflectionMapping:\n\t\t\tcase EquirectangularRefractionMapping:\n\t\t\t\tenvMapTypeDefine = 'ENVMAP_TYPE_EQUIREC';\n\t\t\t\tbreak;\n\n\t\t\tcase SphericalReflectionMapping:\n\t\t\t\tenvMapTypeDefine = 'ENVMAP_TYPE_SPHERE';\n\t\t\t\tbreak;\n\n\t\t}\n\n\t\tswitch ( material.envMap.mapping ) {\n\n\t\t\tcase CubeRefractionMapping:\n\t\t\tcase EquirectangularRefractionMapping:\n\t\t\t\tenvMapModeDefine = 'ENVMAP_MODE_REFRACTION';\n\t\t\t\tbreak;\n\n\t\t}\n\n\t\tswitch ( material.combine ) {\n\n\t\t\tcase MultiplyOperation:\n\t\t\t\tenvMapBlendingDefine = 'ENVMAP_BLENDING_MULTIPLY';\n\t\t\t\tbreak;\n\n\t\t\tcase MixOperation:\n\t\t\t\tenvMapBlendingDefine = 'ENVMAP_BLENDING_MIX';\n\t\t\t\tbreak;\n\n\t\t\tcase AddOperation:\n\t\t\t\tenvMapBlendingDefine = 'ENVMAP_BLENDING_ADD';\n\t\t\t\tbreak;\n\n\t\t}\n\n\t}\n\n\tvar gammaFactorDefine = ( renderer.gammaFactor > 0 ) ? renderer.gammaFactor : 1.0;\n\n\t// console.log( 'building new program ' );\n\n\t//\n\n\tvar customExtensions = generateExtensions( extensions, parameters, renderer.extensions );\n\n\tvar customDefines = generateDefines( defines );\n\n\t//\n\n\tvar program = gl.createProgram();\n\n\tvar prefixVertex, prefixFragment;\n\n\tif ( material.isRawShaderMaterial ) {\n\n\t\tprefixVertex = [\n\n\t\t\tcustomDefines,\n\n\t\t\t'\\n'\n\n\t\t].filter( filterEmptyLine ).join( '\\n' );\n\n\t\tprefixFragment = [\n\n\t\t\tcustomExtensions,\n\t\t\tcustomDefines,\n\n\t\t\t'\\n'\n\n\t\t].filter( filterEmptyLine ).join( '\\n' );\n\n\t} else {\n\n\t\tprefixVertex = [\n\n\t\t\t'precision ' + parameters.precision + ' float;',\n\t\t\t'precision ' + parameters.precision + ' int;',\n\n\t\t\t'#define SHADER_NAME ' + material.__webglShader.name,\n\n\t\t\tcustomDefines,\n\n\t\t\tparameters.supportsVertexTextures ? '#define VERTEX_TEXTURES' : '',\n\n\t\t\t'#define GAMMA_FACTOR ' + gammaFactorDefine,\n\n\t\t\t'#define MAX_BONES ' + parameters.maxBones,\n\n\t\t\tparameters.map ? '#define USE_MAP' : '',\n\t\t\tparameters.envMap ? '#define USE_ENVMAP' : '',\n\t\t\tparameters.envMap ? '#define ' + envMapModeDefine : '',\n\t\t\tparameters.lightMap ? '#define USE_LIGHTMAP' : '',\n\t\t\tparameters.aoMap ? '#define USE_AOMAP' : '',\n\t\t\tparameters.emissiveMap ? '#define USE_EMISSIVEMAP' : '',\n\t\t\tparameters.bumpMap ? '#define USE_BUMPMAP' : '',\n\t\t\tparameters.normalMap ? '#define USE_NORMALMAP' : '',\n\t\t\tparameters.displacementMap && parameters.supportsVertexTextures ? '#define USE_DISPLACEMENTMAP' : '',\n\t\t\tparameters.specularMap ? '#define USE_SPECULARMAP' : '',\n\t\t\tparameters.roughnessMap ? '#define USE_ROUGHNESSMAP' : '',\n\t\t\tparameters.metalnessMap ? '#define USE_METALNESSMAP' : '',\n\t\t\tparameters.alphaMap ? '#define USE_ALPHAMAP' : '',\n\t\t\tparameters.vertexColors ? '#define USE_COLOR' : '',\n\n\t\t\tparameters.flatShading ? '#define FLAT_SHADED' : '',\n\n\t\t\tparameters.skinning ? '#define USE_SKINNING' : '',\n\t\t\tparameters.useVertexTexture ? '#define BONE_TEXTURE' : '',\n\n\t\t\tparameters.morphTargets ? '#define USE_MORPHTARGETS' : '',\n\t\t\tparameters.morphNormals && parameters.flatShading === false ? '#define USE_MORPHNORMALS' : '',\n\t\t\tparameters.doubleSided ? '#define DOUBLE_SIDED' : '',\n\t\t\tparameters.flipSided ? '#define FLIP_SIDED' : '',\n\n\t\t\t'#define NUM_CLIPPING_PLANES ' + parameters.numClippingPlanes,\n\n\t\t\tparameters.shadowMapEnabled ? '#define USE_SHADOWMAP' : '',\n\t\t\tparameters.shadowMapEnabled ? '#define ' + shadowMapTypeDefine : '',\n\n\t\t\tparameters.sizeAttenuation ? '#define USE_SIZEATTENUATION' : '',\n\n\t\t\tparameters.logarithmicDepthBuffer ? '#define USE_LOGDEPTHBUF' : '',\n\t\t\tparameters.logarithmicDepthBuffer && renderer.extensions.get( 'EXT_frag_depth' ) ? '#define USE_LOGDEPTHBUF_EXT' : '',\n\n\t\t\t'uniform mat4 modelMatrix;',\n\t\t\t'uniform mat4 modelViewMatrix;',\n\t\t\t'uniform mat4 projectionMatrix;',\n\t\t\t'uniform mat4 viewMatrix;',\n\t\t\t'uniform mat3 normalMatrix;',\n\t\t\t'uniform vec3 cameraPosition;',\n\n\t\t\t'attribute vec3 position;',\n\t\t\t'attribute vec3 normal;',\n\t\t\t'attribute vec2 uv;',\n\n\t\t\t'#ifdef USE_COLOR',\n\n\t\t\t'\tattribute vec3 color;',\n\n\t\t\t'#endif',\n\n\t\t\t'#ifdef USE_MORPHTARGETS',\n\n\t\t\t'\tattribute vec3 morphTarget0;',\n\t\t\t'\tattribute vec3 morphTarget1;',\n\t\t\t'\tattribute vec3 morphTarget2;',\n\t\t\t'\tattribute vec3 morphTarget3;',\n\n\t\t\t'\t#ifdef USE_MORPHNORMALS',\n\n\t\t\t'\t\tattribute vec3 morphNormal0;',\n\t\t\t'\t\tattribute vec3 morphNormal1;',\n\t\t\t'\t\tattribute vec3 morphNormal2;',\n\t\t\t'\t\tattribute vec3 morphNormal3;',\n\n\t\t\t'\t#else',\n\n\t\t\t'\t\tattribute vec3 morphTarget4;',\n\t\t\t'\t\tattribute vec3 morphTarget5;',\n\t\t\t'\t\tattribute vec3 morphTarget6;',\n\t\t\t'\t\tattribute vec3 morphTarget7;',\n\n\t\t\t'\t#endif',\n\n\t\t\t'#endif',\n\n\t\t\t'#ifdef USE_SKINNING',\n\n\t\t\t'\tattribute vec4 skinIndex;',\n\t\t\t'\tattribute vec4 skinWeight;',\n\n\t\t\t'#endif',\n\n\t\t\t'\\n'\n\n\t\t].filter( filterEmptyLine ).join( '\\n' );\n\n\t\tprefixFragment = [\n\n\t\t\tcustomExtensions,\n\n\t\t\t'precision ' + parameters.precision + ' float;',\n\t\t\t'precision ' + parameters.precision + ' int;',\n\n\t\t\t'#define SHADER_NAME ' + material.__webglShader.name,\n\n\t\t\tcustomDefines,\n\n\t\t\tparameters.alphaTest ? '#define ALPHATEST ' + parameters.alphaTest : '',\n\n\t\t\t'#define GAMMA_FACTOR ' + gammaFactorDefine,\n\n\t\t\t( parameters.useFog && parameters.fog ) ? '#define USE_FOG' : '',\n\t\t\t( parameters.useFog && parameters.fogExp ) ? '#define FOG_EXP2' : '',\n\n\t\t\tparameters.map ? '#define USE_MAP' : '',\n\t\t\tparameters.envMap ? '#define USE_ENVMAP' : '',\n\t\t\tparameters.envMap ? '#define ' + envMapTypeDefine : '',\n\t\t\tparameters.envMap ? '#define ' + envMapModeDefine : '',\n\t\t\tparameters.envMap ? '#define ' + envMapBlendingDefine : '',\n\t\t\tparameters.lightMap ? '#define USE_LIGHTMAP' : '',\n\t\t\tparameters.aoMap ? '#define USE_AOMAP' : '',\n\t\t\tparameters.emissiveMap ? '#define USE_EMISSIVEMAP' : '',\n\t\t\tparameters.bumpMap ? '#define USE_BUMPMAP' : '',\n\t\t\tparameters.normalMap ? '#define USE_NORMALMAP' : '',\n\t\t\tparameters.specularMap ? '#define USE_SPECULARMAP' : '',\n\t\t\tparameters.roughnessMap ? '#define USE_ROUGHNESSMAP' : '',\n\t\t\tparameters.metalnessMap ? '#define USE_METALNESSMAP' : '',\n\t\t\tparameters.alphaMap ? '#define USE_ALPHAMAP' : '',\n\t\t\tparameters.vertexColors ? '#define USE_COLOR' : '',\n\n\t\t\tparameters.flatShading ? '#define FLAT_SHADED' : '',\n\n\t\t\tparameters.doubleSided ? '#define DOUBLE_SIDED' : '',\n\t\t\tparameters.flipSided ? '#define FLIP_SIDED' : '',\n\n\t\t\t'#define NUM_CLIPPING_PLANES ' + parameters.numClippingPlanes,\n\t\t\t'#define UNION_CLIPPING_PLANES ' + (parameters.numClippingPlanes - parameters.numClipIntersection),\n\n\t\t\tparameters.shadowMapEnabled ? '#define USE_SHADOWMAP' : '',\n\t\t\tparameters.shadowMapEnabled ? '#define ' + shadowMapTypeDefine : '',\n\n\t\t\tparameters.premultipliedAlpha ? \"#define PREMULTIPLIED_ALPHA\" : '',\n\n\t\t\tparameters.physicallyCorrectLights ? \"#define PHYSICALLY_CORRECT_LIGHTS\" : '',\n\n\t\t\tparameters.logarithmicDepthBuffer ? '#define USE_LOGDEPTHBUF' : '',\n\t\t\tparameters.logarithmicDepthBuffer && renderer.extensions.get( 'EXT_frag_depth' ) ? '#define USE_LOGDEPTHBUF_EXT' : '',\n\n\t\t\tparameters.envMap && renderer.extensions.get( 'EXT_shader_texture_lod' ) ? '#define TEXTURE_LOD_EXT' : '',\n\n\t\t\t'uniform mat4 viewMatrix;',\n\t\t\t'uniform vec3 cameraPosition;',\n\n\t\t\t( parameters.toneMapping !== NoToneMapping ) ? \"#define TONE_MAPPING\" : '',\n\t\t\t( parameters.toneMapping !== NoToneMapping ) ? ShaderChunk[ 'tonemapping_pars_fragment' ] : '', // this code is required here because it is used by the toneMapping() function defined below\n\t\t\t( parameters.toneMapping !== NoToneMapping ) ? getToneMappingFunction( \"toneMapping\", parameters.toneMapping ) : '',\n\n\t\t\t( parameters.outputEncoding || parameters.mapEncoding || parameters.envMapEncoding || parameters.emissiveMapEncoding ) ? ShaderChunk[ 'encodings_pars_fragment' ] : '', // this code is required here because it is used by the various encoding/decoding function defined below\n\t\t\tparameters.mapEncoding ? getTexelDecodingFunction( 'mapTexelToLinear', parameters.mapEncoding ) : '',\n\t\t\tparameters.envMapEncoding ? getTexelDecodingFunction( 'envMapTexelToLinear', parameters.envMapEncoding ) : '',\n\t\t\tparameters.emissiveMapEncoding ? getTexelDecodingFunction( 'emissiveMapTexelToLinear', parameters.emissiveMapEncoding ) : '',\n\t\t\tparameters.outputEncoding ? getTexelEncodingFunction( \"linearToOutputTexel\", parameters.outputEncoding ) : '',\n\n\t\t\tparameters.depthPacking ? \"#define DEPTH_PACKING \" + material.depthPacking : '',\n\n\t\t\t'\\n'\n\n\t\t].filter( filterEmptyLine ).join( '\\n' );\n\n\t}\n\n\tvertexShader = parseIncludes( vertexShader, parameters );\n\tvertexShader = replaceLightNums( vertexShader, parameters );\n\n\tfragmentShader = parseIncludes( fragmentShader, parameters );\n\tfragmentShader = replaceLightNums( fragmentShader, parameters );\n\n\tif ( ! material.isShaderMaterial ) {\n\n\t\tvertexShader = unrollLoops( vertexShader );\n\t\tfragmentShader = unrollLoops( fragmentShader );\n\n\t}\n\n\tvar vertexGlsl = prefixVertex + vertexShader;\n\tvar fragmentGlsl = prefixFragment + fragmentShader;\n\n\t// console.log( '*VERTEX*', vertexGlsl );\n\t// console.log( '*FRAGMENT*', fragmentGlsl );\n\n\tvar glVertexShader = WebGLShader( gl, gl.VERTEX_SHADER, vertexGlsl );\n\tvar glFragmentShader = WebGLShader( gl, gl.FRAGMENT_SHADER, fragmentGlsl );\n\n\tgl.attachShader( program, glVertexShader );\n\tgl.attachShader( program, glFragmentShader );\n\n\t// Force a particular attribute to index 0.\n\n\tif ( material.index0AttributeName !== undefined ) {\n\n\t\tgl.bindAttribLocation( program, 0, material.index0AttributeName );\n\n\t} else if ( parameters.morphTargets === true ) {\n\n\t\t// programs with morphTargets displace position out of attribute 0\n\t\tgl.bindAttribLocation( program, 0, 'position' );\n\n\t}\n\n\tgl.linkProgram( program );\n\n\tvar programLog = gl.getProgramInfoLog( program );\n\tvar vertexLog = gl.getShaderInfoLog( glVertexShader );\n\tvar fragmentLog = gl.getShaderInfoLog( glFragmentShader );\n\n\tvar runnable = true;\n\tvar haveDiagnostics = true;\n\n\t// console.log( '**VERTEX**', gl.getExtension( 'WEBGL_debug_shaders' ).getTranslatedShaderSource( glVertexShader ) );\n\t// console.log( '**FRAGMENT**', gl.getExtension( 'WEBGL_debug_shaders' ).getTranslatedShaderSource( glFragmentShader ) );\n\n\tif ( gl.getProgramParameter( program, gl.LINK_STATUS ) === false ) {\n\n\t\trunnable = false;\n\n\t\tconsole.error( 'THREE.WebGLProgram: shader error: ', gl.getError(), 'gl.VALIDATE_STATUS', gl.getProgramParameter( program, gl.VALIDATE_STATUS ), 'gl.getProgramInfoLog', programLog, vertexLog, fragmentLog );\n\n\t} else if ( programLog !== '' ) {\n\n\t\tconsole.warn( 'THREE.WebGLProgram: gl.getProgramInfoLog()', programLog );\n\n\t} else if ( vertexLog === '' || fragmentLog === '' ) {\n\n\t\thaveDiagnostics = false;\n\n\t}\n\n\tif ( haveDiagnostics ) {\n\n\t\tthis.diagnostics = {\n\n\t\t\trunnable: runnable,\n\t\t\tmaterial: material,\n\n\t\t\tprogramLog: programLog,\n\n\t\t\tvertexShader: {\n\n\t\t\t\tlog: vertexLog,\n\t\t\t\tprefix: prefixVertex\n\n\t\t\t},\n\n\t\t\tfragmentShader: {\n\n\t\t\t\tlog: fragmentLog,\n\t\t\t\tprefix: prefixFragment\n\n\t\t\t}\n\n\t\t};\n\n\t}\n\n\t// clean up\n\n\tgl.deleteShader( glVertexShader );\n\tgl.deleteShader( glFragmentShader );\n\n\t// set up caching for uniform locations\n\n\tvar cachedUniforms;\n\n\tthis.getUniforms = function() {\n\n\t\tif ( cachedUniforms === undefined ) {\n\n\t\t\tcachedUniforms =\n\t\t\t\t\tnew WebGLUniforms( gl, program, renderer );\n\n\t\t}\n\n\t\treturn cachedUniforms;\n\n\t};\n\n\t// set up caching for attribute locations\n\n\tvar cachedAttributes;\n\n\tthis.getAttributes = function() {\n\n\t\tif ( cachedAttributes === undefined ) {\n\n\t\t\tcachedAttributes = fetchAttributeLocations( gl, program );\n\n\t\t}\n\n\t\treturn cachedAttributes;\n\n\t};\n\n\t// free resource\n\n\tthis.destroy = function() {\n\n\t\tgl.deleteProgram( program );\n\t\tthis.program = undefined;\n\n\t};\n\n\t// DEPRECATED\n\n\tObject.defineProperties( this, {\n\n\t\tuniforms: {\n\t\t\tget: function() {\n\n\t\t\t\tconsole.warn( 'THREE.WebGLProgram: .uniforms is now .getUniforms().' );\n\t\t\t\treturn this.getUniforms();\n\n\t\t\t}\n\t\t},\n\n\t\tattributes: {\n\t\t\tget: function() {\n\n\t\t\t\tconsole.warn( 'THREE.WebGLProgram: .attributes is now .getAttributes().' );\n\t\t\t\treturn this.getAttributes();\n\n\t\t\t}\n\t\t}\n\n\t} );\n\n\n\t//\n\n\tthis.id = programIdCount ++;\n\tthis.code = code;\n\tthis.usedTimes = 1;\n\tthis.program = program;\n\tthis.vertexShader = glVertexShader;\n\tthis.fragmentShader = glFragmentShader;\n\n\treturn this;\n\n}\n\nexport { WebGLProgram };\n","/**\n * @author mrdoob / http://mrdoob.com/\n */\n\nimport { WebGLProgram } from './WebGLProgram';\nimport { BackSide, DoubleSide, FlatShading, CubeUVRefractionMapping, CubeUVReflectionMapping, GammaEncoding, LinearEncoding } from '../../constants';\n\nfunction WebGLPrograms( renderer, capabilities ) {\n\n\tvar programs = [];\n\n\tvar shaderIDs = {\n\t\tMeshDepthMaterial: 'depth',\n\t\tMeshNormalMaterial: 'normal',\n\t\tMeshBasicMaterial: 'basic',\n\t\tMeshLambertMaterial: 'lambert',\n\t\tMeshPhongMaterial: 'phong',\n\t\tMeshStandardMaterial: 'physical',\n\t\tMeshPhysicalMaterial: 'physical',\n\t\tLineBasicMaterial: 'basic',\n\t\tLineDashedMaterial: 'dashed',\n\t\tPointsMaterial: 'points'\n\t};\n\n\tvar parameterNames = [\n\t\t\"precision\", \"supportsVertexTextures\", \"map\", \"mapEncoding\", \"envMap\", \"envMapMode\", \"envMapEncoding\",\n\t\t\"lightMap\", \"aoMap\", \"emissiveMap\", \"emissiveMapEncoding\", \"bumpMap\", \"normalMap\", \"displacementMap\", \"specularMap\",\n\t\t\"roughnessMap\", \"metalnessMap\",\n\t\t\"alphaMap\", \"combine\", \"vertexColors\", \"fog\", \"useFog\", \"fogExp\",\n\t\t\"flatShading\", \"sizeAttenuation\", \"logarithmicDepthBuffer\", \"skinning\",\n\t\t\"maxBones\", \"useVertexTexture\", \"morphTargets\", \"morphNormals\",\n\t\t\"maxMorphTargets\", \"maxMorphNormals\", \"premultipliedAlpha\",\n\t\t\"numDirLights\", \"numPointLights\", \"numSpotLights\", \"numHemiLights\",\n\t\t\"shadowMapEnabled\", \"shadowMapType\", \"toneMapping\", 'physicallyCorrectLights',\n\t\t\"alphaTest\", \"doubleSided\", \"flipSided\", \"numClippingPlanes\", \"numClipIntersection\", \"depthPacking\"\n\t];\n\n\n\tfunction allocateBones( object ) {\n\n\t\tif ( capabilities.floatVertexTextures && object && object.skeleton && object.skeleton.useVertexTexture ) {\n\n\t\t\treturn 1024;\n\n\t\t} else {\n\n\t\t\t// default for when object is not specified\n\t\t\t// ( for example when prebuilding shader to be used with multiple objects )\n\t\t\t//\n\t\t\t// - leave some extra space for other uniforms\n\t\t\t// - limit here is ANGLE's 254 max uniform vectors\n\t\t\t// (up to 54 should be safe)\n\n\t\t\tvar nVertexUniforms = capabilities.maxVertexUniforms;\n\t\t\tvar nVertexMatrices = Math.floor( ( nVertexUniforms - 20 ) / 4 );\n\n\t\t\tvar maxBones = nVertexMatrices;\n\n\t\t\tif ( object !== undefined && (object && object.isSkinnedMesh) ) {\n\n\t\t\t\tmaxBones = Math.min( object.skeleton.bones.length, maxBones );\n\n\t\t\t\tif ( maxBones < object.skeleton.bones.length ) {\n\n\t\t\t\t\tconsole.warn( 'WebGLRenderer: too many bones - ' + object.skeleton.bones.length + ', this GPU supports just ' + maxBones + ' (try OpenGL instead of ANGLE)' );\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t\treturn maxBones;\n\n\t\t}\n\n\t}\n\n\tfunction getTextureEncodingFromMap( map, gammaOverrideLinear ) {\n\n\t\tvar encoding;\n\n\t\tif ( ! map ) {\n\n\t\t\tencoding = LinearEncoding;\n\n\t\t} else if ( (map && map.isTexture) ) {\n\n\t\t\tencoding = map.encoding;\n\n\t\t} else if ( (map && map.isWebGLRenderTarget) ) {\n\n\t\t\tconsole.warn( \"THREE.WebGLPrograms.getTextureEncodingFromMap: don't use render targets as textures. Use their .texture property instead.\" );\n\t\t\tencoding = map.texture.encoding;\n\n\t\t}\n\n\t\t// add backwards compatibility for WebGLRenderer.gammaInput/gammaOutput parameter, should probably be removed at some point.\n\t\tif ( encoding === LinearEncoding && gammaOverrideLinear ) {\n\n\t\t\tencoding = GammaEncoding;\n\n\t\t}\n\n\t\treturn encoding;\n\n\t}\n\n\tthis.getParameters = function ( material, lights, fog, nClipPlanes, nClipIntersection, object ) {\n\n\t\tvar shaderID = shaderIDs[ material.type ];\n\n\t\t// heuristics to create shader parameters according to lights in the scene\n\t\t// (not to blow over maxLights budget)\n\n\t\tvar maxBones = allocateBones( object );\n\t\tvar precision = renderer.getPrecision();\n\n\t\tif ( material.precision !== null ) {\n\n\t\t\tprecision = capabilities.getMaxPrecision( material.precision );\n\n\t\t\tif ( precision !== material.precision ) {\n\n\t\t\t\tconsole.warn( 'THREE.WebGLProgram.getParameters:', material.precision, 'not supported, using', precision, 'instead.' );\n\n\t\t\t}\n\n\t\t}\n\n\t\tvar currentRenderTarget = renderer.getCurrentRenderTarget();\n\n\t\tvar parameters = {\n\n\t\t\tshaderID: shaderID,\n\n\t\t\tprecision: precision,\n\t\t\tsupportsVertexTextures: capabilities.vertexTextures,\n\t\t\toutputEncoding: getTextureEncodingFromMap( ( ! currentRenderTarget ) ? null : currentRenderTarget.texture, renderer.gammaOutput ),\n\t\t\tmap: !! material.map,\n\t\t\tmapEncoding: getTextureEncodingFromMap( material.map, renderer.gammaInput ),\n\t\t\tenvMap: !! material.envMap,\n\t\t\tenvMapMode: material.envMap && material.envMap.mapping,\n\t\t\tenvMapEncoding: getTextureEncodingFromMap( material.envMap, renderer.gammaInput ),\n\t\t\tenvMapCubeUV: ( !! material.envMap ) && ( ( material.envMap.mapping === CubeUVReflectionMapping ) || ( material.envMap.mapping === CubeUVRefractionMapping ) ),\n\t\t\tlightMap: !! material.lightMap,\n\t\t\taoMap: !! material.aoMap,\n\t\t\temissiveMap: !! material.emissiveMap,\n\t\t\temissiveMapEncoding: getTextureEncodingFromMap( material.emissiveMap, renderer.gammaInput ),\n\t\t\tbumpMap: !! material.bumpMap,\n\t\t\tnormalMap: !! material.normalMap,\n\t\t\tdisplacementMap: !! material.displacementMap,\n\t\t\troughnessMap: !! material.roughnessMap,\n\t\t\tmetalnessMap: !! material.metalnessMap,\n\t\t\tspecularMap: !! material.specularMap,\n\t\t\talphaMap: !! material.alphaMap,\n\n\t\t\tcombine: material.combine,\n\n\t\t\tvertexColors: material.vertexColors,\n\n\t\t\tfog: !! fog,\n\t\t\tuseFog: material.fog,\n\t\t\tfogExp: (fog && fog.isFogExp2),\n\n\t\t\tflatShading: material.shading === FlatShading,\n\n\t\t\tsizeAttenuation: material.sizeAttenuation,\n\t\t\tlogarithmicDepthBuffer: capabilities.logarithmicDepthBuffer,\n\n\t\t\tskinning: material.skinning,\n\t\t\tmaxBones: maxBones,\n\t\t\tuseVertexTexture: capabilities.floatVertexTextures && object && object.skeleton && object.skeleton.useVertexTexture,\n\n\t\t\tmorphTargets: material.morphTargets,\n\t\t\tmorphNormals: material.morphNormals,\n\t\t\tmaxMorphTargets: renderer.maxMorphTargets,\n\t\t\tmaxMorphNormals: renderer.maxMorphNormals,\n\n\t\t\tnumDirLights: lights.directional.length,\n\t\t\tnumPointLights: lights.point.length,\n\t\t\tnumSpotLights: lights.spot.length,\n\t\t\tnumHemiLights: lights.hemi.length,\n\n\t\t\tnumClippingPlanes: nClipPlanes,\n\t\t\tnumClipIntersection: nClipIntersection,\n\n\t\t\tshadowMapEnabled: renderer.shadowMap.enabled && object.receiveShadow && lights.shadows.length > 0,\n\t\t\tshadowMapType: renderer.shadowMap.type,\n\n\t\t\ttoneMapping: renderer.toneMapping,\n\t\t\tphysicallyCorrectLights: renderer.physicallyCorrectLights,\n\n\t\t\tpremultipliedAlpha: material.premultipliedAlpha,\n\n\t\t\talphaTest: material.alphaTest,\n\t\t\tdoubleSided: material.side === DoubleSide,\n\t\t\tflipSided: material.side === BackSide,\n\n\t\t\tdepthPacking: ( material.depthPacking !== undefined ) ? material.depthPacking : false\n\n\t\t};\n\n\t\treturn parameters;\n\n\t};\n\n\tthis.getProgramCode = function ( material, parameters ) {\n\n\t\tvar array = [];\n\n\t\tif ( parameters.shaderID ) {\n\n\t\t\tarray.push( parameters.shaderID );\n\n\t\t} else {\n\n\t\t\tarray.push( material.fragmentShader );\n\t\t\tarray.push( material.vertexShader );\n\n\t\t}\n\n\t\tif ( material.defines !== undefined ) {\n\n\t\t\tfor ( var name in material.defines ) {\n\n\t\t\t\tarray.push( name );\n\t\t\t\tarray.push( material.defines[ name ] );\n\n\t\t\t}\n\n\t\t}\n\n\t\tfor ( var i = 0; i < parameterNames.length; i ++ ) {\n\n\t\t\tarray.push( parameters[ parameterNames[ i ] ] );\n\n\t\t}\n\n\t\treturn array.join();\n\n\t};\n\n\tthis.acquireProgram = function ( material, parameters, code ) {\n\n\t\tvar program;\n\n\t\t// Check if code has been already compiled\n\t\tfor ( var p = 0, pl = programs.length; p < pl; p ++ ) {\n\n\t\t\tvar programInfo = programs[ p ];\n\n\t\t\tif ( programInfo.code === code ) {\n\n\t\t\t\tprogram = programInfo;\n\t\t\t\t++ program.usedTimes;\n\n\t\t\t\tbreak;\n\n\t\t\t}\n\n\t\t}\n\n\t\tif ( program === undefined ) {\n\n\t\t\tprogram = new WebGLProgram( renderer, code, material, parameters );\n\t\t\tprograms.push( program );\n\n\t\t}\n\n\t\treturn program;\n\n\t};\n\n\tthis.releaseProgram = function( program ) {\n\n\t\tif ( -- program.usedTimes === 0 ) {\n\n\t\t\t// Remove from unordered set\n\t\t\tvar i = programs.indexOf( program );\n\t\t\tprograms[ i ] = programs[ programs.length - 1 ];\n\t\t\tprograms.pop();\n\n\t\t\t// Free WebGL resources\n\t\t\tprogram.destroy();\n\n\t\t}\n\n\t};\n\n\t// Exposed for resource monitoring & error feedback via renderer.info:\n\tthis.programs = programs;\n\n}\n\n\nexport { WebGLPrograms };\n","/**\n * @author mrdoob / http://mrdoob.com/\n */\n\nimport { BufferGeometry } from '../../core/BufferGeometry';\n\nfunction WebGLGeometries( gl, properties, info ) {\n\n\tvar geometries = {};\n\n\tfunction onGeometryDispose( event ) {\n\n\t\tvar geometry = event.target;\n\t\tvar buffergeometry = geometries[ geometry.id ];\n\n\t\tif ( buffergeometry.index !== null ) {\n\n\t\t\tdeleteAttribute( buffergeometry.index );\n\n\t\t}\n\n\t\tdeleteAttributes( buffergeometry.attributes );\n\n\t\tgeometry.removeEventListener( 'dispose', onGeometryDispose );\n\n\t\tdelete geometries[ geometry.id ];\n\n\t\t// TODO\n\n\t\tvar property = properties.get( geometry );\n\n\t\tif ( property.wireframe ) {\n\n\t\t\tdeleteAttribute( property.wireframe );\n\n\t\t}\n\n\t\tproperties.delete( geometry );\n\n\t\tvar bufferproperty = properties.get( buffergeometry );\n\n\t\tif ( bufferproperty.wireframe ) {\n\n\t\t\tdeleteAttribute( bufferproperty.wireframe );\n\n\t\t}\n\n\t\tproperties.delete( buffergeometry );\n\n\t\t//\n\n\t\tinfo.memory.geometries --;\n\n\t}\n\n\tfunction getAttributeBuffer( attribute ) {\n\n\t\tif ( attribute.isInterleavedBufferAttribute ) {\n\n\t\t\treturn properties.get( attribute.data ).__webglBuffer;\n\n\t\t}\n\n\t\treturn properties.get( attribute ).__webglBuffer;\n\n\t}\n\n\tfunction deleteAttribute( attribute ) {\n\n\t\tvar buffer = getAttributeBuffer( attribute );\n\n\t\tif ( buffer !== undefined ) {\n\n\t\t\tgl.deleteBuffer( buffer );\n\t\t\tremoveAttributeBuffer( attribute );\n\n\t\t}\n\n\t}\n\n\tfunction deleteAttributes( attributes ) {\n\n\t\tfor ( var name in attributes ) {\n\n\t\t\tdeleteAttribute( attributes[ name ] );\n\n\t\t}\n\n\t}\n\n\tfunction removeAttributeBuffer( attribute ) {\n\n\t\tif ( attribute.isInterleavedBufferAttribute ) {\n\n\t\t\tproperties.delete( attribute.data );\n\n\t\t} else {\n\n\t\t\tproperties.delete( attribute );\n\n\t\t}\n\n\t}\n\n\treturn {\n\n\t\tget: function ( object ) {\n\n\t\t\tvar geometry = object.geometry;\n\n\t\t\tif ( geometries[ geometry.id ] !== undefined ) {\n\n\t\t\t\treturn geometries[ geometry.id ];\n\n\t\t\t}\n\n\t\t\tgeometry.addEventListener( 'dispose', onGeometryDispose );\n\n\t\t\tvar buffergeometry;\n\n\t\t\tif ( geometry.isBufferGeometry ) {\n\n\t\t\t\tbuffergeometry = geometry;\n\n\t\t\t} else if ( geometry.isGeometry ) {\n\n\t\t\t\tif ( geometry._bufferGeometry === undefined ) {\n\n\t\t\t\t\tgeometry._bufferGeometry = new BufferGeometry().setFromObject( object );\n\n\t\t\t\t}\n\n\t\t\t\tbuffergeometry = geometry._bufferGeometry;\n\n\t\t\t}\n\n\t\t\tgeometries[ geometry.id ] = buffergeometry;\n\n\t\t\tinfo.memory.geometries ++;\n\n\t\t\treturn buffergeometry;\n\n\t\t}\n\n\t};\n\n}\n\n\nexport { WebGLGeometries };\n","/**\n * @author mrdoob / http://mrdoob.com/\n */\n\nimport { BufferAttribute } from '../../core/BufferAttribute';\nimport { WebGLGeometries } from './WebGLGeometries';\n\nfunction WebGLObjects( gl, properties, info ) {\n\n\tvar geometries = new WebGLGeometries( gl, properties, info );\n\n\t//\n\n\tfunction update( object ) {\n\n\t\t// TODO: Avoid updating twice (when using shadowMap). Maybe add frame counter.\n\n\t\tvar geometry = geometries.get( object );\n\n\t\tif ( object.geometry.isGeometry ) {\n\n\t\t\tgeometry.updateFromObject( object );\n\n\t\t}\n\n\t\tvar index = geometry.index;\n\t\tvar attributes = geometry.attributes;\n\n\t\tif ( index !== null ) {\n\n\t\t\tupdateAttribute( index, gl.ELEMENT_ARRAY_BUFFER );\n\n\t\t}\n\n\t\tfor ( var name in attributes ) {\n\n\t\t\tupdateAttribute( attributes[ name ], gl.ARRAY_BUFFER );\n\n\t\t}\n\n\t\t// morph targets\n\n\t\tvar morphAttributes = geometry.morphAttributes;\n\n\t\tfor ( var name in morphAttributes ) {\n\n\t\t\tvar array = morphAttributes[ name ];\n\n\t\t\tfor ( var i = 0, l = array.length; i < l; i ++ ) {\n\n\t\t\t\tupdateAttribute( array[ i ], gl.ARRAY_BUFFER );\n\n\t\t\t}\n\n\t\t}\n\n\t\treturn geometry;\n\n\t}\n\n\tfunction updateAttribute( attribute, bufferType ) {\n\n\t\tvar data = ( attribute.isInterleavedBufferAttribute ) ? attribute.data : attribute;\n\n\t\tvar attributeProperties = properties.get( data );\n\n\t\tif ( attributeProperties.__webglBuffer === undefined ) {\n\n\t\t\tcreateBuffer( attributeProperties, data, bufferType );\n\n\t\t} else if ( attributeProperties.version !== data.version ) {\n\n\t\t\tupdateBuffer( attributeProperties, data, bufferType );\n\n\t\t}\n\n\t}\n\n\tfunction createBuffer( attributeProperties, data, bufferType ) {\n\n\t\tattributeProperties.__webglBuffer = gl.createBuffer();\n\t\tgl.bindBuffer( bufferType, attributeProperties.__webglBuffer );\n\n\t\tvar usage = data.dynamic ? gl.DYNAMIC_DRAW : gl.STATIC_DRAW;\n\n\t\tgl.bufferData( bufferType, data.array, usage );\n\n\t\tattributeProperties.version = data.version;\n\n\t}\n\n\tfunction updateBuffer( attributeProperties, data, bufferType ) {\n\n\t\tgl.bindBuffer( bufferType, attributeProperties.__webglBuffer );\n\n\t\tif ( data.dynamic === false ) {\n\n\t\t\tgl.bufferData( bufferType, data.array, gl.STATIC_DRAW );\n\n\t\t} else if ( data.updateRange.count === - 1 ) {\n\n\t\t\t// Not using update ranges\n\n\t\t\tgl.bufferSubData( bufferType, 0, data.array );\n\n\t\t} else if ( data.updateRange.count === 0 ) {\n\n\t\t\tconsole.error( 'THREE.WebGLObjects.updateBuffer: dynamic THREE.BufferAttribute marked as needsUpdate but updateRange.count is 0, ensure you are using set methods or updating manually.' );\n\n\t\t} else {\n\n\t\t\tgl.bufferSubData( bufferType, data.updateRange.offset * data.array.BYTES_PER_ELEMENT,\n\t\t\t\t\t\t\t data.array.subarray( data.updateRange.offset, data.updateRange.offset + data.updateRange.count ) );\n\n\t\t\tdata.updateRange.count = 0; // reset range\n\n\t\t}\n\n\t\tattributeProperties.version = data.version;\n\n\t}\n\n\tfunction getAttributeBuffer( attribute ) {\n\n\t\tif ( attribute.isInterleavedBufferAttribute ) {\n\n\t\t\treturn properties.get( attribute.data ).__webglBuffer;\n\n\t\t}\n\n\t\treturn properties.get( attribute ).__webglBuffer;\n\n\t}\n\n\tfunction getWireframeAttribute( geometry ) {\n\n\t\tvar property = properties.get( geometry );\n\n\t\tif ( property.wireframe !== undefined ) {\n\n\t\t\treturn property.wireframe;\n\n\t\t}\n\n\t\tvar indices = [];\n\n\t\tvar index = geometry.index;\n\t\tvar attributes = geometry.attributes;\n\t\tvar position = attributes.position;\n\n\t\t// console.time( 'wireframe' );\n\n\t\tif ( index !== null ) {\n\n\t\t\tvar edges = {};\n\t\t\tvar array = index.array;\n\n\t\t\tfor ( var i = 0, l = array.length; i < l; i += 3 ) {\n\n\t\t\t\tvar a = array[ i + 0 ];\n\t\t\t\tvar b = array[ i + 1 ];\n\t\t\t\tvar c = array[ i + 2 ];\n\n\t\t\t\tindices.push( a, b, b, c, c, a );\n\n\t\t\t}\n\n\t\t} else {\n\n\t\t\tvar array = attributes.position.array;\n\n\t\t\tfor ( var i = 0, l = ( array.length / 3 ) - 1; i < l; i += 3 ) {\n\n\t\t\t\tvar a = i + 0;\n\t\t\t\tvar b = i + 1;\n\t\t\t\tvar c = i + 2;\n\n\t\t\t\tindices.push( a, b, b, c, c, a );\n\n\t\t\t}\n\n\t\t}\n\n\t\t// console.timeEnd( 'wireframe' );\n\n\t\tvar TypeArray = position.count > 65535 ? Uint32Array : Uint16Array;\n\t\tvar attribute = new BufferAttribute( new TypeArray( indices ), 1 );\n\n\t\tupdateAttribute( attribute, gl.ELEMENT_ARRAY_BUFFER );\n\n\t\tproperty.wireframe = attribute;\n\n\t\treturn attribute;\n\n\t}\n\n\treturn {\n\n\t\tgetAttributeBuffer: getAttributeBuffer,\n\t\tgetWireframeAttribute: getWireframeAttribute,\n\n\t\tupdate: update\n\n\t};\n\n}\n\n\nexport { WebGLObjects };\n","/**\n * @author mrdoob / http://mrdoob.com/\n */\n\nimport { LinearFilter, NearestFilter, RGBFormat, RGBAFormat, DepthFormat, DepthStencilFormat, FloatType, HalfFloatType, ClampToEdgeWrapping, NearestMipMapLinearFilter, NearestMipMapNearestFilter } from '../../constants';\nimport { _Math } from '../../math/Math';\n\nfunction WebGLTextures( _gl, extensions, state, properties, capabilities, paramThreeToGL, info ) {\n\n\tvar _infoMemory = info.memory;\n\tvar _isWebGL2 = ( typeof WebGL2RenderingContext !== 'undefined' && _gl instanceof WebGL2RenderingContext );\n\n\t//\n\n\tfunction clampToMaxSize( image, maxSize ) {\n\n\t\tif ( image.width > maxSize || image.height > maxSize ) {\n\n\t\t\t// Warning: Scaling through the canvas will only work with images that use\n\t\t\t// premultiplied alpha.\n\n\t\t\tvar scale = maxSize / Math.max( image.width, image.height );\n\n\t\t\tvar canvas = document.createElementNS( 'http://www.w3.org/1999/xhtml', 'canvas' );\n\t\t\tcanvas.width = Math.floor( image.width * scale );\n\t\t\tcanvas.height = Math.floor( image.height * scale );\n\n\t\t\tvar context = canvas.getContext( '2d' );\n\t\t\tcontext.drawImage( image, 0, 0, image.width, image.height, 0, 0, canvas.width, canvas.height );\n\n\t\t\tconsole.warn( 'THREE.WebGLRenderer: image is too big (' + image.width + 'x' + image.height + '). Resized to ' + canvas.width + 'x' + canvas.height, image );\n\n\t\t\treturn canvas;\n\n\t\t}\n\n\t\treturn image;\n\n\t}\n\n\tfunction isPowerOfTwo( image ) {\n\n\t\treturn _Math.isPowerOfTwo( image.width ) && _Math.isPowerOfTwo( image.height );\n\n\t}\n\n\tfunction makePowerOfTwo( image ) {\n\n\t\tif ( image instanceof HTMLImageElement || image instanceof HTMLCanvasElement ) {\n\n\t\t\tvar canvas = document.createElementNS( 'http://www.w3.org/1999/xhtml', 'canvas' );\n\t\t\tcanvas.width = _Math.nearestPowerOfTwo( image.width );\n\t\t\tcanvas.height = _Math.nearestPowerOfTwo( image.height );\n\n\t\t\tvar context = canvas.getContext( '2d' );\n\t\t\tcontext.drawImage( image, 0, 0, canvas.width, canvas.height );\n\n\t\t\tconsole.warn( 'THREE.WebGLRenderer: image is not power of two (' + image.width + 'x' + image.height + '). Resized to ' + canvas.width + 'x' + canvas.height, image );\n\n\t\t\treturn canvas;\n\n\t\t}\n\n\t\treturn image;\n\n\t}\n\n\tfunction textureNeedsPowerOfTwo( texture ) {\n\n\t\tif ( texture.wrapS !== ClampToEdgeWrapping || texture.wrapT !== ClampToEdgeWrapping ) return true;\n\t\tif ( texture.minFilter !== NearestFilter && texture.minFilter !== LinearFilter ) return true;\n\n\t\treturn false;\n\n\t}\n\n\t// Fallback filters for non-power-of-2 textures\n\n\tfunction filterFallback( f ) {\n\n\t\tif ( f === NearestFilter || f === NearestMipMapNearestFilter || f === NearestMipMapLinearFilter ) {\n\n\t\t\treturn _gl.NEAREST;\n\n\t\t}\n\n\t\treturn _gl.LINEAR;\n\n\t}\n\n\t//\n\n\tfunction onTextureDispose( event ) {\n\n\t\tvar texture = event.target;\n\n\t\ttexture.removeEventListener( 'dispose', onTextureDispose );\n\n\t\tdeallocateTexture( texture );\n\n\t\t_infoMemory.textures --;\n\n\n\t}\n\n\tfunction onRenderTargetDispose( event ) {\n\n\t\tvar renderTarget = event.target;\n\n\t\trenderTarget.removeEventListener( 'dispose', onRenderTargetDispose );\n\n\t\tdeallocateRenderTarget( renderTarget );\n\n\t\t_infoMemory.textures --;\n\n\t}\n\n\t//\n\n\tfunction deallocateTexture( texture ) {\n\n\t\tvar textureProperties = properties.get( texture );\n\n\t\tif ( texture.image && textureProperties.__image__webglTextureCube ) {\n\n\t\t\t// cube texture\n\n\t\t\t_gl.deleteTexture( textureProperties.__image__webglTextureCube );\n\n\t\t} else {\n\n\t\t\t// 2D texture\n\n\t\t\tif ( textureProperties.__webglInit === undefined ) return;\n\n\t\t\t_gl.deleteTexture( textureProperties.__webglTexture );\n\n\t\t}\n\n\t\t// remove all webgl properties\n\t\tproperties.delete( texture );\n\n\t}\n\n\tfunction deallocateRenderTarget( renderTarget ) {\n\n\t\tvar renderTargetProperties = properties.get( renderTarget );\n\t\tvar textureProperties = properties.get( renderTarget.texture );\n\n\t\tif ( ! renderTarget ) return;\n\n\t\tif ( textureProperties.__webglTexture !== undefined ) {\n\n\t\t\t_gl.deleteTexture( textureProperties.__webglTexture );\n\n\t\t}\n\n\t\tif ( renderTarget.depthTexture ) {\n\n\t\t\trenderTarget.depthTexture.dispose();\n\n\t\t}\n\n\t\tif ( (renderTarget && renderTarget.isWebGLRenderTargetCube) ) {\n\n\t\t\tfor ( var i = 0; i < 6; i ++ ) {\n\n\t\t\t\t_gl.deleteFramebuffer( renderTargetProperties.__webglFramebuffer[ i ] );\n\t\t\t\tif ( renderTargetProperties.__webglDepthbuffer ) _gl.deleteRenderbuffer( renderTargetProperties.__webglDepthbuffer[ i ] );\n\n\t\t\t}\n\n\t\t} else {\n\n\t\t\t_gl.deleteFramebuffer( renderTargetProperties.__webglFramebuffer );\n\t\t\tif ( renderTargetProperties.__webglDepthbuffer ) _gl.deleteRenderbuffer( renderTargetProperties.__webglDepthbuffer );\n\n\t\t}\n\n\t\tproperties.delete( renderTarget.texture );\n\t\tproperties.delete( renderTarget );\n\n\t}\n\n\t//\n\n\n\n\tfunction setTexture2D( texture, slot ) {\n\n\t\tvar textureProperties = properties.get( texture );\n\n\t\tif ( texture.version > 0 && textureProperties.__version !== texture.version ) {\n\n\t\t\tvar image = texture.image;\n\n\t\t\tif ( image === undefined ) {\n\n\t\t\t\tconsole.warn( 'THREE.WebGLRenderer: Texture marked for update but image is undefined', texture );\n\n\t\t\t} else if ( image.complete === false ) {\n\n\t\t\t\tconsole.warn( 'THREE.WebGLRenderer: Texture marked for update but image is incomplete', texture );\n\n\t\t\t} else {\n\n\t\t\t\tuploadTexture( textureProperties, texture, slot );\n\t\t\t\treturn;\n\n\t\t\t}\n\n\t\t}\n\n\t\tstate.activeTexture( _gl.TEXTURE0 + slot );\n\t\tstate.bindTexture( _gl.TEXTURE_2D, textureProperties.__webglTexture );\n\n\t}\n\n\tfunction setTextureCube( texture, slot ) {\n\n\t\tvar textureProperties = properties.get( texture );\n\n\t\tif ( texture.image.length === 6 ) {\n\n\t\t\tif ( texture.version > 0 && textureProperties.__version !== texture.version ) {\n\n\t\t\t\tif ( ! textureProperties.__image__webglTextureCube ) {\n\n\t\t\t\t\ttexture.addEventListener( 'dispose', onTextureDispose );\n\n\t\t\t\t\ttextureProperties.__image__webglTextureCube = _gl.createTexture();\n\n\t\t\t\t\t_infoMemory.textures ++;\n\n\t\t\t\t}\n\n\t\t\t\tstate.activeTexture( _gl.TEXTURE0 + slot );\n\t\t\t\tstate.bindTexture( _gl.TEXTURE_CUBE_MAP, textureProperties.__image__webglTextureCube );\n\n\t\t\t\t_gl.pixelStorei( _gl.UNPACK_FLIP_Y_WEBGL, texture.flipY );\n\n\t\t\t\tvar isCompressed = (texture && texture.isCompressedTexture);\n\t\t\t\tvar isDataTexture = (texture.image[ 0 ] && texture.image[ 0 ].isDataTexture);\n\n\t\t\t\tvar cubeImage = [];\n\n\t\t\t\tfor ( var i = 0; i < 6; i ++ ) {\n\n\t\t\t\t\tif ( ! isCompressed && ! isDataTexture ) {\n\n\t\t\t\t\t\tcubeImage[ i ] = clampToMaxSize( texture.image[ i ], capabilities.maxCubemapSize );\n\n\t\t\t\t\t} else {\n\n\t\t\t\t\t\tcubeImage[ i ] = isDataTexture ? texture.image[ i ].image : texture.image[ i ];\n\n\t\t\t\t\t}\n\n\t\t\t\t}\n\n\t\t\t\tvar image = cubeImage[ 0 ],\n\t\t\t\tisPowerOfTwoImage = isPowerOfTwo( image ),\n\t\t\t\tglFormat = paramThreeToGL( texture.format ),\n\t\t\t\tglType = paramThreeToGL( texture.type );\n\n\t\t\t\tsetTextureParameters( _gl.TEXTURE_CUBE_MAP, texture, isPowerOfTwoImage );\n\n\t\t\t\tfor ( var i = 0; i < 6; i ++ ) {\n\n\t\t\t\t\tif ( ! isCompressed ) {\n\n\t\t\t\t\t\tif ( isDataTexture ) {\n\n\t\t\t\t\t\t\tstate.texImage2D( _gl.TEXTURE_CUBE_MAP_POSITIVE_X + i, 0, glFormat, cubeImage[ i ].width, cubeImage[ i ].height, 0, glFormat, glType, cubeImage[ i ].data );\n\n\t\t\t\t\t\t} else {\n\n\t\t\t\t\t\t\tstate.texImage2D( _gl.TEXTURE_CUBE_MAP_POSITIVE_X + i, 0, glFormat, glFormat, glType, cubeImage[ i ] );\n\n\t\t\t\t\t\t}\n\n\t\t\t\t\t} else {\n\n\t\t\t\t\t\tvar mipmap, mipmaps = cubeImage[ i ].mipmaps;\n\n\t\t\t\t\t\tfor ( var j = 0, jl = mipmaps.length; j < jl; j ++ ) {\n\n\t\t\t\t\t\t\tmipmap = mipmaps[ j ];\n\n\t\t\t\t\t\t\tif ( texture.format !== RGBAFormat && texture.format !== RGBFormat ) {\n\n\t\t\t\t\t\t\t\tif ( state.getCompressedTextureFormats().indexOf( glFormat ) > - 1 ) {\n\n\t\t\t\t\t\t\t\t\tstate.compressedTexImage2D( _gl.TEXTURE_CUBE_MAP_POSITIVE_X + i, j, glFormat, mipmap.width, mipmap.height, 0, mipmap.data );\n\n\t\t\t\t\t\t\t\t} else {\n\n\t\t\t\t\t\t\t\t\tconsole.warn( \"THREE.WebGLRenderer: Attempt to load unsupported compressed texture format in .setTextureCube()\" );\n\n\t\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\t} else {\n\n\t\t\t\t\t\t\t\tstate.texImage2D( _gl.TEXTURE_CUBE_MAP_POSITIVE_X + i, j, glFormat, mipmap.width, mipmap.height, 0, glFormat, glType, mipmap.data );\n\n\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t}\n\n\t\t\t\t\t}\n\n\t\t\t\t}\n\n\t\t\t\tif ( texture.generateMipmaps && isPowerOfTwoImage ) {\n\n\t\t\t\t\t_gl.generateMipmap( _gl.TEXTURE_CUBE_MAP );\n\n\t\t\t\t}\n\n\t\t\t\ttextureProperties.__version = texture.version;\n\n\t\t\t\tif ( texture.onUpdate ) texture.onUpdate( texture );\n\n\t\t\t} else {\n\n\t\t\t\tstate.activeTexture( _gl.TEXTURE0 + slot );\n\t\t\t\tstate.bindTexture( _gl.TEXTURE_CUBE_MAP, textureProperties.__image__webglTextureCube );\n\n\t\t\t}\n\n\t\t}\n\n\t}\n\n\tfunction setTextureCubeDynamic( texture, slot ) {\n\n\t\tstate.activeTexture( _gl.TEXTURE0 + slot );\n\t\tstate.bindTexture( _gl.TEXTURE_CUBE_MAP, properties.get( texture ).__webglTexture );\n\n\t}\n\n\tfunction setTextureParameters( textureType, texture, isPowerOfTwoImage ) {\n\n\t\tvar extension;\n\n\t\tif ( isPowerOfTwoImage ) {\n\n\t\t\t_gl.texParameteri( textureType, _gl.TEXTURE_WRAP_S, paramThreeToGL( texture.wrapS ) );\n\t\t\t_gl.texParameteri( textureType, _gl.TEXTURE_WRAP_T, paramThreeToGL( texture.wrapT ) );\n\n\t\t\t_gl.texParameteri( textureType, _gl.TEXTURE_MAG_FILTER, paramThreeToGL( texture.magFilter ) );\n\t\t\t_gl.texParameteri( textureType, _gl.TEXTURE_MIN_FILTER, paramThreeToGL( texture.minFilter ) );\n\n\t\t} else {\n\n\t\t\t_gl.texParameteri( textureType, _gl.TEXTURE_WRAP_S, _gl.CLAMP_TO_EDGE );\n\t\t\t_gl.texParameteri( textureType, _gl.TEXTURE_WRAP_T, _gl.CLAMP_TO_EDGE );\n\n\t\t\tif ( texture.wrapS !== ClampToEdgeWrapping || texture.wrapT !== ClampToEdgeWrapping ) {\n\n\t\t\t\tconsole.warn( 'THREE.WebGLRenderer: Texture is not power of two. Texture.wrapS and Texture.wrapT should be set to THREE.ClampToEdgeWrapping.', texture );\n\n\t\t\t}\n\n\t\t\t_gl.texParameteri( textureType, _gl.TEXTURE_MAG_FILTER, filterFallback( texture.magFilter ) );\n\t\t\t_gl.texParameteri( textureType, _gl.TEXTURE_MIN_FILTER, filterFallback( texture.minFilter ) );\n\n\t\t\tif ( texture.minFilter !== NearestFilter && texture.minFilter !== LinearFilter ) {\n\n\t\t\t\tconsole.warn( 'THREE.WebGLRenderer: Texture is not power of two. Texture.minFilter should be set to THREE.NearestFilter or THREE.LinearFilter.', texture );\n\n\t\t\t}\n\n\t\t}\n\n\t\textension = extensions.get( 'EXT_texture_filter_anisotropic' );\n\n\t\tif ( extension ) {\n\n\t\t\tif ( texture.type === FloatType && extensions.get( 'OES_texture_float_linear' ) === null ) return;\n\t\t\tif ( texture.type === HalfFloatType && extensions.get( 'OES_texture_half_float_linear' ) === null ) return;\n\n\t\t\tif ( texture.anisotropy > 1 || properties.get( texture ).__currentAnisotropy ) {\n\n\t\t\t\t_gl.texParameterf( textureType, extension.TEXTURE_MAX_ANISOTROPY_EXT, Math.min( texture.anisotropy, capabilities.getMaxAnisotropy() ) );\n\t\t\t\tproperties.get( texture ).__currentAnisotropy = texture.anisotropy;\n\n\t\t\t}\n\n\t\t}\n\n\t}\n\n\tfunction uploadTexture( textureProperties, texture, slot ) {\n\n\t\tif ( textureProperties.__webglInit === undefined ) {\n\n\t\t\ttextureProperties.__webglInit = true;\n\n\t\t\ttexture.addEventListener( 'dispose', onTextureDispose );\n\n\t\t\ttextureProperties.__webglTexture = _gl.createTexture();\n\n\t\t\t_infoMemory.textures ++;\n\n\t\t}\n\n\t\tstate.activeTexture( _gl.TEXTURE0 + slot );\n\t\tstate.bindTexture( _gl.TEXTURE_2D, textureProperties.__webglTexture );\n\n\t\t_gl.pixelStorei( _gl.UNPACK_FLIP_Y_WEBGL, texture.flipY );\n\t\t_gl.pixelStorei( _gl.UNPACK_PREMULTIPLY_ALPHA_WEBGL, texture.premultiplyAlpha );\n\t\t_gl.pixelStorei( _gl.UNPACK_ALIGNMENT, texture.unpackAlignment );\n\n\t\tvar image = clampToMaxSize( texture.image, capabilities.maxTextureSize );\n\n\t\tif ( textureNeedsPowerOfTwo( texture ) && isPowerOfTwo( image ) === false ) {\n\n\t\t\timage = makePowerOfTwo( image );\n\n\t\t}\n\n\t\tvar isPowerOfTwoImage = isPowerOfTwo( image ),\n\t\tglFormat = paramThreeToGL( texture.format ),\n\t\tglType = paramThreeToGL( texture.type );\n\n\t\tsetTextureParameters( _gl.TEXTURE_2D, texture, isPowerOfTwoImage );\n\n\t\tvar mipmap, mipmaps = texture.mipmaps;\n\n\t\tif ( (texture && texture.isDepthTexture) ) {\n\n\t\t\t// populate depth texture with dummy data\n\n\t\t\tvar internalFormat = _gl.DEPTH_COMPONENT;\n\n\t\t\tif ( texture.type === FloatType ) {\n\n\t\t\t\tif ( !_isWebGL2 ) throw new Error('Float Depth Texture only supported in WebGL2.0');\n\t\t\t\tinternalFormat = _gl.DEPTH_COMPONENT32F;\n\n\t\t\t} else if ( _isWebGL2 ) {\n\n\t\t\t\t// WebGL 2.0 requires signed internalformat for glTexImage2D\n\t\t\t\tinternalFormat = _gl.DEPTH_COMPONENT16;\n\n\t\t\t}\n\n\t\t\t// Depth stencil textures need the DEPTH_STENCIL internal format\n\t\t\t// (https://www.khronos.org/registry/webgl/extensions/WEBGL_depth_texture/)\n\t\t\tif ( texture.format === DepthStencilFormat ) {\n\n\t\t\t\tinternalFormat = _gl.DEPTH_STENCIL;\n\n\t\t\t}\n\n\t\t\tstate.texImage2D( _gl.TEXTURE_2D, 0, internalFormat, image.width, image.height, 0, glFormat, glType, null );\n\n\t\t} else if ( (texture && texture.isDataTexture) ) {\n\n\t\t\t// use manually created mipmaps if available\n\t\t\t// if there are no manual mipmaps\n\t\t\t// set 0 level mipmap and then use GL to generate other mipmap levels\n\n\t\t\tif ( mipmaps.length > 0 && isPowerOfTwoImage ) {\n\n\t\t\t\tfor ( var i = 0, il = mipmaps.length; i < il; i ++ ) {\n\n\t\t\t\t\tmipmap = mipmaps[ i ];\n\t\t\t\t\tstate.texImage2D( _gl.TEXTURE_2D, i, glFormat, mipmap.width, mipmap.height, 0, glFormat, glType, mipmap.data );\n\n\t\t\t\t}\n\n\t\t\t\ttexture.generateMipmaps = false;\n\n\t\t\t} else {\n\n\t\t\t\tstate.texImage2D( _gl.TEXTURE_2D, 0, glFormat, image.width, image.height, 0, glFormat, glType, image.data );\n\n\t\t\t}\n\n\t\t} else if ( (texture && texture.isCompressedTexture) ) {\n\n\t\t\tfor ( var i = 0, il = mipmaps.length; i < il; i ++ ) {\n\n\t\t\t\tmipmap = mipmaps[ i ];\n\n\t\t\t\tif ( texture.format !== RGBAFormat && texture.format !== RGBFormat ) {\n\n\t\t\t\t\tif ( state.getCompressedTextureFormats().indexOf( glFormat ) > - 1 ) {\n\n\t\t\t\t\t\tstate.compressedTexImage2D( _gl.TEXTURE_2D, i, glFormat, mipmap.width, mipmap.height, 0, mipmap.data );\n\n\t\t\t\t\t} else {\n\n\t\t\t\t\t\tconsole.warn( \"THREE.WebGLRenderer: Attempt to load unsupported compressed texture format in .uploadTexture()\" );\n\n\t\t\t\t\t}\n\n\t\t\t\t} else {\n\n\t\t\t\t\tstate.texImage2D( _gl.TEXTURE_2D, i, glFormat, mipmap.width, mipmap.height, 0, glFormat, glType, mipmap.data );\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t} else {\n\n\t\t\t// regular Texture (image, video, canvas)\n\n\t\t\t// use manually created mipmaps if available\n\t\t\t// if there are no manual mipmaps\n\t\t\t// set 0 level mipmap and then use GL to generate other mipmap levels\n\n\t\t\tif ( mipmaps.length > 0 && isPowerOfTwoImage ) {\n\n\t\t\t\tfor ( var i = 0, il = mipmaps.length; i < il; i ++ ) {\n\n\t\t\t\t\tmipmap = mipmaps[ i ];\n\t\t\t\t\tstate.texImage2D( _gl.TEXTURE_2D, i, glFormat, glFormat, glType, mipmap );\n\n\t\t\t\t}\n\n\t\t\t\ttexture.generateMipmaps = false;\n\n\t\t\t} else {\n\n\t\t\t\tstate.texImage2D( _gl.TEXTURE_2D, 0, glFormat, glFormat, glType, image );\n\n\t\t\t}\n\n\t\t}\n\n\t\tif ( texture.generateMipmaps && isPowerOfTwoImage ) _gl.generateMipmap( _gl.TEXTURE_2D );\n\n\t\ttextureProperties.__version = texture.version;\n\n\t\tif ( texture.onUpdate ) texture.onUpdate( texture );\n\n\t}\n\n\t// Render targets\n\n\t// Setup storage for target texture and bind it to correct framebuffer\n\tfunction setupFrameBufferTexture( framebuffer, renderTarget, attachment, textureTarget ) {\n\n\t\tvar glFormat = paramThreeToGL( renderTarget.texture.format );\n\t\tvar glType = paramThreeToGL( renderTarget.texture.type );\n\t\tstate.texImage2D( textureTarget, 0, glFormat, renderTarget.width, renderTarget.height, 0, glFormat, glType, null );\n\t\t_gl.bindFramebuffer( _gl.FRAMEBUFFER, framebuffer );\n\t\t_gl.framebufferTexture2D( _gl.FRAMEBUFFER, attachment, textureTarget, properties.get( renderTarget.texture ).__webglTexture, 0 );\n\t\t_gl.bindFramebuffer( _gl.FRAMEBUFFER, null );\n\n\t}\n\n\t// Setup storage for internal depth/stencil buffers and bind to correct framebuffer\n\tfunction setupRenderBufferStorage( renderbuffer, renderTarget ) {\n\n\t\t_gl.bindRenderbuffer( _gl.RENDERBUFFER, renderbuffer );\n\n\t\tif ( renderTarget.depthBuffer && ! renderTarget.stencilBuffer ) {\n\n\t\t\t_gl.renderbufferStorage( _gl.RENDERBUFFER, _gl.DEPTH_COMPONENT16, renderTarget.width, renderTarget.height );\n\t\t\t_gl.framebufferRenderbuffer( _gl.FRAMEBUFFER, _gl.DEPTH_ATTACHMENT, _gl.RENDERBUFFER, renderbuffer );\n\n\t\t} else if ( renderTarget.depthBuffer && renderTarget.stencilBuffer ) {\n\n\t\t\t_gl.renderbufferStorage( _gl.RENDERBUFFER, _gl.DEPTH_STENCIL, renderTarget.width, renderTarget.height );\n\t\t\t_gl.framebufferRenderbuffer( _gl.FRAMEBUFFER, _gl.DEPTH_STENCIL_ATTACHMENT, _gl.RENDERBUFFER, renderbuffer );\n\n\t\t} else {\n\n\t\t\t// FIXME: We don't support !depth !stencil\n\t\t\t_gl.renderbufferStorage( _gl.RENDERBUFFER, _gl.RGBA4, renderTarget.width, renderTarget.height );\n\n\t\t}\n\n\t\t_gl.bindRenderbuffer( _gl.RENDERBUFFER, null );\n\n\t}\n\n\t// Setup resources for a Depth Texture for a FBO (needs an extension)\n\tfunction setupDepthTexture( framebuffer, renderTarget ) {\n\n\t\tvar isCube = ( (renderTarget && renderTarget.isWebGLRenderTargetCube) );\n\t\tif ( isCube ) throw new Error('Depth Texture with cube render targets is not supported!');\n\n\t\t_gl.bindFramebuffer( _gl.FRAMEBUFFER, framebuffer );\n\n\t\tif ( !( (renderTarget.depthTexture && renderTarget.depthTexture.isDepthTexture) ) ) {\n\n\t\t\tthrow new Error('renderTarget.depthTexture must be an instance of THREE.DepthTexture');\n\n\t\t}\n\n\t\t// upload an empty depth texture with framebuffer size\n\t\tif ( !properties.get( renderTarget.depthTexture ).__webglTexture ||\n\t\t\t\trenderTarget.depthTexture.image.width !== renderTarget.width ||\n\t\t\t\trenderTarget.depthTexture.image.height !== renderTarget.height ) {\n\t\t\trenderTarget.depthTexture.image.width = renderTarget.width;\n\t\t\trenderTarget.depthTexture.image.height = renderTarget.height;\n\t\t\trenderTarget.depthTexture.needsUpdate = true;\n\t\t}\n\n\t\tsetTexture2D( renderTarget.depthTexture, 0 );\n\n\t\tvar webglDepthTexture = properties.get( renderTarget.depthTexture ).__webglTexture;\n\n\t\tif ( renderTarget.depthTexture.format === DepthFormat ) {\n\n\t\t\t_gl.framebufferTexture2D( _gl.FRAMEBUFFER, _gl.DEPTH_ATTACHMENT, _gl.TEXTURE_2D, webglDepthTexture, 0 );\n\n\t\t} else if ( renderTarget.depthTexture.format === DepthStencilFormat ) {\n\n\t\t\t_gl.framebufferTexture2D( _gl.FRAMEBUFFER, _gl.DEPTH_STENCIL_ATTACHMENT, _gl.TEXTURE_2D, webglDepthTexture, 0 );\n\n\t\t} else {\n\n\t\t\tthrow new Error('Unknown depthTexture format')\n\n\t\t}\n\n\t}\n\n\t// Setup GL resources for a non-texture depth buffer\n\tfunction setupDepthRenderbuffer( renderTarget ) {\n\n\t\tvar renderTargetProperties = properties.get( renderTarget );\n\n\t\tvar isCube = ( (renderTarget && renderTarget.isWebGLRenderTargetCube) );\n\n\t\tif ( renderTarget.depthTexture ) {\n\n\t\t\tif ( isCube ) throw new Error('target.depthTexture not supported in Cube render targets');\n\n\t\t\tsetupDepthTexture( renderTargetProperties.__webglFramebuffer, renderTarget );\n\n\t\t} else {\n\n\t\t\tif ( isCube ) {\n\n\t\t\t\trenderTargetProperties.__webglDepthbuffer = [];\n\n\t\t\t\tfor ( var i = 0; i < 6; i ++ ) {\n\n\t\t\t\t\t_gl.bindFramebuffer( _gl.FRAMEBUFFER, renderTargetProperties.__webglFramebuffer[ i ] );\n\t\t\t\t\trenderTargetProperties.__webglDepthbuffer[ i ] = _gl.createRenderbuffer();\n\t\t\t\t\tsetupRenderBufferStorage( renderTargetProperties.__webglDepthbuffer[ i ], renderTarget );\n\n\t\t\t\t}\n\n\t\t\t} else {\n\n\t\t\t\t_gl.bindFramebuffer( _gl.FRAMEBUFFER, renderTargetProperties.__webglFramebuffer );\n\t\t\t\trenderTargetProperties.__webglDepthbuffer = _gl.createRenderbuffer();\n\t\t\t\tsetupRenderBufferStorage( renderTargetProperties.__webglDepthbuffer, renderTarget );\n\n\t\t\t}\n\n\t\t}\n\n\t\t_gl.bindFramebuffer( _gl.FRAMEBUFFER, null );\n\n\t}\n\n\t// Set up GL resources for the render target\n\tfunction setupRenderTarget( renderTarget ) {\n\n\t\tvar renderTargetProperties = properties.get( renderTarget );\n\t\tvar textureProperties = properties.get( renderTarget.texture );\n\n\t\trenderTarget.addEventListener( 'dispose', onRenderTargetDispose );\n\n\t\ttextureProperties.__webglTexture = _gl.createTexture();\n\n\t\t_infoMemory.textures ++;\n\n\t\tvar isCube = ( (renderTarget && renderTarget.isWebGLRenderTargetCube) );\n\t\tvar isTargetPowerOfTwo = isPowerOfTwo( renderTarget );\n\n\t\t// Setup framebuffer\n\n\t\tif ( isCube ) {\n\n\t\t\trenderTargetProperties.__webglFramebuffer = [];\n\n\t\t\tfor ( var i = 0; i < 6; i ++ ) {\n\n\t\t\t\trenderTargetProperties.__webglFramebuffer[ i ] = _gl.createFramebuffer();\n\n\t\t\t}\n\n\t\t} else {\n\n\t\t\trenderTargetProperties.__webglFramebuffer = _gl.createFramebuffer();\n\n\t\t}\n\n\t\t// Setup color buffer\n\n\t\tif ( isCube ) {\n\n\t\t\tstate.bindTexture( _gl.TEXTURE_CUBE_MAP, textureProperties.__webglTexture );\n\t\t\tsetTextureParameters( _gl.TEXTURE_CUBE_MAP, renderTarget.texture, isTargetPowerOfTwo );\n\n\t\t\tfor ( var i = 0; i < 6; i ++ ) {\n\n\t\t\t\tsetupFrameBufferTexture( renderTargetProperties.__webglFramebuffer[ i ], renderTarget, _gl.COLOR_ATTACHMENT0, _gl.TEXTURE_CUBE_MAP_POSITIVE_X + i );\n\n\t\t\t}\n\n\t\t\tif ( renderTarget.texture.generateMipmaps && isTargetPowerOfTwo ) _gl.generateMipmap( _gl.TEXTURE_CUBE_MAP );\n\t\t\tstate.bindTexture( _gl.TEXTURE_CUBE_MAP, null );\n\n\t\t} else {\n\n\t\t\tstate.bindTexture( _gl.TEXTURE_2D, textureProperties.__webglTexture );\n\t\t\tsetTextureParameters( _gl.TEXTURE_2D, renderTarget.texture, isTargetPowerOfTwo );\n\t\t\tsetupFrameBufferTexture( renderTargetProperties.__webglFramebuffer, renderTarget, _gl.COLOR_ATTACHMENT0, _gl.TEXTURE_2D );\n\n\t\t\tif ( renderTarget.texture.generateMipmaps && isTargetPowerOfTwo ) _gl.generateMipmap( _gl.TEXTURE_2D );\n\t\t\tstate.bindTexture( _gl.TEXTURE_2D, null );\n\n\t\t}\n\n\t\t// Setup depth and stencil buffers\n\n\t\tif ( renderTarget.depthBuffer ) {\n\n\t\t\tsetupDepthRenderbuffer( renderTarget );\n\n\t\t}\n\n\t}\n\n\tfunction updateRenderTargetMipmap( renderTarget ) {\n\n\t\tvar texture = renderTarget.texture;\n\n\t\tif ( texture.generateMipmaps && isPowerOfTwo( renderTarget ) &&\n\t\t\t\ttexture.minFilter !== NearestFilter &&\n\t\t\t\ttexture.minFilter !== LinearFilter ) {\n\n\t\t\tvar target = (renderTarget && renderTarget.isWebGLRenderTargetCube) ? _gl.TEXTURE_CUBE_MAP : _gl.TEXTURE_2D;\n\t\t\tvar webglTexture = properties.get( texture ).__webglTexture;\n\n\t\t\tstate.bindTexture( target, webglTexture );\n\t\t\t_gl.generateMipmap( target );\n\t\t\tstate.bindTexture( target, null );\n\n\t\t}\n\n\t}\n\n\tthis.setTexture2D = setTexture2D;\n\tthis.setTextureCube = setTextureCube;\n\tthis.setTextureCubeDynamic = setTextureCubeDynamic;\n\tthis.setupRenderTarget = setupRenderTarget;\n\tthis.updateRenderTargetMipmap = updateRenderTargetMipmap;\n\n}\n\n\nexport { WebGLTextures };\n","/**\n * @author fordacious / fordacious.github.io\n */\n\nfunction WebGLProperties() {\n\n\tvar properties = {};\n\n\treturn {\n\n\t\tget: function ( object ) {\n\n\t\t\tvar uuid = object.uuid;\n\t\t\tvar map = properties[ uuid ];\n\n\t\t\tif ( map === undefined ) {\n\n\t\t\t\tmap = {};\n\t\t\t\tproperties[ uuid ] = map;\n\n\t\t\t}\n\n\t\t\treturn map;\n\n\t\t},\n\n\t\tdelete: function ( object ) {\n\n\t\t\tdelete properties[ object.uuid ];\n\n\t\t},\n\n\t\tclear: function () {\n\n\t\t\tproperties = {};\n\n\t\t}\n\n\t};\n\n}\n\nexport { WebGLProperties };\n","/**\n * @author mrdoob / http://mrdoob.com/\n */\n\nimport { NotEqualDepth, GreaterDepth, GreaterEqualDepth, EqualDepth, LessEqualDepth, LessDepth, AlwaysDepth, NeverDepth, CullFaceFront, CullFaceBack, CullFaceNone, CustomBlending, MultiplyBlending, SubtractiveBlending, AdditiveBlending, NoBlending, NormalBlending } from '../../constants';\nimport { Vector4 } from '../../math/Vector4';\n\nfunction WebGLState( gl, extensions, paramThreeToGL ) {\n\n\tfunction ColorBuffer() {\n\n\t\tvar locked = false;\n\n\t\tvar color = new Vector4();\n\t\tvar currentColorMask = null;\n\t\tvar currentColorClear = new Vector4();\n\n\t\treturn {\n\n\t\t\tsetMask: function ( colorMask ) {\n\n\t\t\t\tif ( currentColorMask !== colorMask && ! locked ) {\n\n\t\t\t\t\tgl.colorMask( colorMask, colorMask, colorMask, colorMask );\n\t\t\t\t\tcurrentColorMask = colorMask;\n\n\t\t\t\t}\n\n\t\t\t},\n\n\t\t\tsetLocked: function ( lock ) {\n\n\t\t\t\tlocked = lock;\n\n\t\t\t},\n\n\t\t\tsetClear: function ( r, g, b, a, premultipliedAlpha ) {\n\n\t\t\t\tif ( premultipliedAlpha === true ) {\n\n\t\t\t\t\tr *= a; g *= a; b *= a;\n\n\t\t\t\t}\n\n\t\t\t\tcolor.set( r, g, b, a );\n\n\t\t\t\tif ( currentColorClear.equals( color ) === false ) {\n\n\t\t\t\t\tgl.clearColor( r, g, b, a );\n\t\t\t\t\tcurrentColorClear.copy( color );\n\n\t\t\t\t}\n\n\t\t\t},\n\n\t\t\treset: function () {\n\n\t\t\t\tlocked = false;\n\n\t\t\t\tcurrentColorMask = null;\n\t\t\t\tcurrentColorClear.set( 0, 0, 0, 1 );\n\n\t\t\t}\n\n\t\t};\n\n\t}\n\n\tfunction DepthBuffer() {\n\n\t\tvar locked = false;\n\n\t\tvar currentDepthMask = null;\n\t\tvar currentDepthFunc = null;\n\t\tvar currentDepthClear = null;\n\n\t\treturn {\n\n\t\t\tsetTest: function ( depthTest ) {\n\n\t\t\t\tif ( depthTest ) {\n\n\t\t\t\t\tenable( gl.DEPTH_TEST );\n\n\t\t\t\t} else {\n\n\t\t\t\t\tdisable( gl.DEPTH_TEST );\n\n\t\t\t\t}\n\n\t\t\t},\n\n\t\t\tsetMask: function ( depthMask ) {\n\n\t\t\t\tif ( currentDepthMask !== depthMask && ! locked ) {\n\n\t\t\t\t\tgl.depthMask( depthMask );\n\t\t\t\t\tcurrentDepthMask = depthMask;\n\n\t\t\t\t}\n\n\t\t\t},\n\n\t\t\tsetFunc: function ( depthFunc ) {\n\n\t\t\t\tif ( currentDepthFunc !== depthFunc ) {\n\n\t\t\t\t\tif ( depthFunc ) {\n\n\t\t\t\t\t\tswitch ( depthFunc ) {\n\n\t\t\t\t\t\t\tcase NeverDepth:\n\n\t\t\t\t\t\t\t\tgl.depthFunc( gl.NEVER );\n\t\t\t\t\t\t\t\tbreak;\n\n\t\t\t\t\t\t\tcase AlwaysDepth:\n\n\t\t\t\t\t\t\t\tgl.depthFunc( gl.ALWAYS );\n\t\t\t\t\t\t\t\tbreak;\n\n\t\t\t\t\t\t\tcase LessDepth:\n\n\t\t\t\t\t\t\t\tgl.depthFunc( gl.LESS );\n\t\t\t\t\t\t\t\tbreak;\n\n\t\t\t\t\t\t\tcase LessEqualDepth:\n\n\t\t\t\t\t\t\t\tgl.depthFunc( gl.LEQUAL );\n\t\t\t\t\t\t\t\tbreak;\n\n\t\t\t\t\t\t\tcase EqualDepth:\n\n\t\t\t\t\t\t\t\tgl.depthFunc( gl.EQUAL );\n\t\t\t\t\t\t\t\tbreak;\n\n\t\t\t\t\t\t\tcase GreaterEqualDepth:\n\n\t\t\t\t\t\t\t\tgl.depthFunc( gl.GEQUAL );\n\t\t\t\t\t\t\t\tbreak;\n\n\t\t\t\t\t\t\tcase GreaterDepth:\n\n\t\t\t\t\t\t\t\tgl.depthFunc( gl.GREATER );\n\t\t\t\t\t\t\t\tbreak;\n\n\t\t\t\t\t\t\tcase NotEqualDepth:\n\n\t\t\t\t\t\t\t\tgl.depthFunc( gl.NOTEQUAL );\n\t\t\t\t\t\t\t\tbreak;\n\n\t\t\t\t\t\t\tdefault:\n\n\t\t\t\t\t\t\t\tgl.depthFunc( gl.LEQUAL );\n\n\t\t\t\t\t\t}\n\n\t\t\t\t\t} else {\n\n\t\t\t\t\t\tgl.depthFunc( gl.LEQUAL );\n\n\t\t\t\t\t}\n\n\t\t\t\t\tcurrentDepthFunc = depthFunc;\n\n\t\t\t\t}\n\n\t\t\t},\n\n\t\t\tsetLocked: function ( lock ) {\n\n\t\t\t\tlocked = lock;\n\n\t\t\t},\n\n\t\t\tsetClear: function ( depth ) {\n\n\t\t\t\tif ( currentDepthClear !== depth ) {\n\n\t\t\t\t\tgl.clearDepth( depth );\n\t\t\t\t\tcurrentDepthClear = depth;\n\n\t\t\t\t}\n\n\t\t\t},\n\n\t\t\treset: function () {\n\n\t\t\t\tlocked = false;\n\n\t\t\t\tcurrentDepthMask = null;\n\t\t\t\tcurrentDepthFunc = null;\n\t\t\t\tcurrentDepthClear = null;\n\n\t\t\t}\n\n\t\t};\n\n\t}\n\n\tfunction StencilBuffer() {\n\n\t\tvar locked = false;\n\n\t\tvar currentStencilMask = null;\n\t\tvar currentStencilFunc = null;\n\t\tvar currentStencilRef = null;\n\t\tvar currentStencilFuncMask = null;\n\t\tvar currentStencilFail = null;\n\t\tvar currentStencilZFail = null;\n\t\tvar currentStencilZPass = null;\n\t\tvar currentStencilClear = null;\n\n\t\treturn {\n\n\t\t\tsetTest: function ( stencilTest ) {\n\n\t\t\t\tif ( stencilTest ) {\n\n\t\t\t\t\tenable( gl.STENCIL_TEST );\n\n\t\t\t\t} else {\n\n\t\t\t\t\tdisable( gl.STENCIL_TEST );\n\n\t\t\t\t}\n\n\t\t\t},\n\n\t\t\tsetMask: function ( stencilMask ) {\n\n\t\t\t\tif ( currentStencilMask !== stencilMask && ! locked ) {\n\n\t\t\t\t\tgl.stencilMask( stencilMask );\n\t\t\t\t\tcurrentStencilMask = stencilMask;\n\n\t\t\t\t}\n\n\t\t\t},\n\n\t\t\tsetFunc: function ( stencilFunc, stencilRef, stencilMask ) {\n\n\t\t\t\tif ( currentStencilFunc !== stencilFunc ||\n\t\t\t\t currentStencilRef \t!== stencilRef \t||\n\t\t\t\t currentStencilFuncMask !== stencilMask ) {\n\n\t\t\t\t\tgl.stencilFunc( stencilFunc, stencilRef, stencilMask );\n\n\t\t\t\t\tcurrentStencilFunc = stencilFunc;\n\t\t\t\t\tcurrentStencilRef = stencilRef;\n\t\t\t\t\tcurrentStencilFuncMask = stencilMask;\n\n\t\t\t\t}\n\n\t\t\t},\n\n\t\t\tsetOp: function ( stencilFail, stencilZFail, stencilZPass ) {\n\n\t\t\t\tif ( currentStencilFail\t !== stencilFail \t||\n\t\t\t\t currentStencilZFail !== stencilZFail ||\n\t\t\t\t currentStencilZPass !== stencilZPass ) {\n\n\t\t\t\t\tgl.stencilOp( stencilFail, stencilZFail, stencilZPass );\n\n\t\t\t\t\tcurrentStencilFail = stencilFail;\n\t\t\t\t\tcurrentStencilZFail = stencilZFail;\n\t\t\t\t\tcurrentStencilZPass = stencilZPass;\n\n\t\t\t\t}\n\n\t\t\t},\n\n\t\t\tsetLocked: function ( lock ) {\n\n\t\t\t\tlocked = lock;\n\n\t\t\t},\n\n\t\t\tsetClear: function ( stencil ) {\n\n\t\t\t\tif ( currentStencilClear !== stencil ) {\n\n\t\t\t\t\tgl.clearStencil( stencil );\n\t\t\t\t\tcurrentStencilClear = stencil;\n\n\t\t\t\t}\n\n\t\t\t},\n\n\t\t\treset: function () {\n\n\t\t\t\tlocked = false;\n\n\t\t\t\tcurrentStencilMask = null;\n\t\t\t\tcurrentStencilFunc = null;\n\t\t\t\tcurrentStencilRef = null;\n\t\t\t\tcurrentStencilFuncMask = null;\n\t\t\t\tcurrentStencilFail = null;\n\t\t\t\tcurrentStencilZFail = null;\n\t\t\t\tcurrentStencilZPass = null;\n\t\t\t\tcurrentStencilClear = null;\n\n\t\t\t}\n\n\t\t};\n\n\t}\n\n\t//\n\n\tvar colorBuffer = new ColorBuffer();\n\tvar depthBuffer = new DepthBuffer();\n\tvar stencilBuffer = new StencilBuffer();\n\n\tvar maxVertexAttributes = gl.getParameter( gl.MAX_VERTEX_ATTRIBS );\n\tvar newAttributes = new Uint8Array( maxVertexAttributes );\n\tvar enabledAttributes = new Uint8Array( maxVertexAttributes );\n\tvar attributeDivisors = new Uint8Array( maxVertexAttributes );\n\n\tvar capabilities = {};\n\n\tvar compressedTextureFormats = null;\n\n\tvar currentBlending = null;\n\tvar currentBlendEquation = null;\n\tvar currentBlendSrc = null;\n\tvar currentBlendDst = null;\n\tvar currentBlendEquationAlpha = null;\n\tvar currentBlendSrcAlpha = null;\n\tvar currentBlendDstAlpha = null;\n\tvar currentPremultipledAlpha = false;\n\n\tvar currentFlipSided = null;\n\tvar currentCullFace = null;\n\n\tvar currentLineWidth = null;\n\n\tvar currentPolygonOffsetFactor = null;\n\tvar currentPolygonOffsetUnits = null;\n\n\tvar currentScissorTest = null;\n\n\tvar maxTextures = gl.getParameter( gl.MAX_TEXTURE_IMAGE_UNITS );\n\n\tvar currentTextureSlot = null;\n\tvar currentBoundTextures = {};\n\n\tvar currentScissor = new Vector4();\n\tvar currentViewport = new Vector4();\n\n\tfunction createTexture( type, target, count ) {\n\n\t\tvar data = new Uint8Array( 4 ); // 4 is required to match default unpack alignment of 4.\n\t\tvar texture = gl.createTexture();\n\n\t\tgl.bindTexture( type, texture );\n\t\tgl.texParameteri( type, gl.TEXTURE_MIN_FILTER, gl.NEAREST );\n\t\tgl.texParameteri( type, gl.TEXTURE_MAG_FILTER, gl.NEAREST );\n\n\t\tfor ( var i = 0; i < count; i ++ ) {\n\n\t\t\tgl.texImage2D( target + i, 0, gl.RGBA, 1, 1, 0, gl.RGBA, gl.UNSIGNED_BYTE, data );\n\n\t\t}\n\n\t\treturn texture;\n\n\t}\n\n\tvar emptyTextures = {};\n\temptyTextures[ gl.TEXTURE_2D ] = createTexture( gl.TEXTURE_2D, gl.TEXTURE_2D, 1 );\n\temptyTextures[ gl.TEXTURE_CUBE_MAP ] = createTexture( gl.TEXTURE_CUBE_MAP, gl.TEXTURE_CUBE_MAP_POSITIVE_X, 6 );\n\n\t//\n\n\tfunction init() {\n\n\t\tcolorBuffer.setClear( 0, 0, 0, 1 );\n\t\tdepthBuffer.setClear( 1 );\n\t\tstencilBuffer.setClear( 0 );\n\n\t\tenable( gl.DEPTH_TEST );\n\t\tsetDepthFunc( LessEqualDepth );\n\n\t\tsetFlipSided( false );\n\t\tsetCullFace( CullFaceBack );\n\t\tenable( gl.CULL_FACE );\n\n\t\tenable( gl.BLEND );\n\t\tsetBlending( NormalBlending );\n\n\t}\n\n\tfunction initAttributes() {\n\n\t\tfor ( var i = 0, l = newAttributes.length; i < l; i ++ ) {\n\n\t\t\tnewAttributes[ i ] = 0;\n\n\t\t}\n\n\t}\n\n\tfunction enableAttribute( attribute ) {\n\n\t\tnewAttributes[ attribute ] = 1;\n\n\t\tif ( enabledAttributes[ attribute ] === 0 ) {\n\n\t\t\tgl.enableVertexAttribArray( attribute );\n\t\t\tenabledAttributes[ attribute ] = 1;\n\n\t\t}\n\n\t\tif ( attributeDivisors[ attribute ] !== 0 ) {\n\n\t\t\tvar extension = extensions.get( 'ANGLE_instanced_arrays' );\n\n\t\t\textension.vertexAttribDivisorANGLE( attribute, 0 );\n\t\t\tattributeDivisors[ attribute ] = 0;\n\n\t\t}\n\n\t}\n\n\tfunction enableAttributeAndDivisor( attribute, meshPerAttribute, extension ) {\n\n\t\tnewAttributes[ attribute ] = 1;\n\n\t\tif ( enabledAttributes[ attribute ] === 0 ) {\n\n\t\t\tgl.enableVertexAttribArray( attribute );\n\t\t\tenabledAttributes[ attribute ] = 1;\n\n\t\t}\n\n\t\tif ( attributeDivisors[ attribute ] !== meshPerAttribute ) {\n\n\t\t\textension.vertexAttribDivisorANGLE( attribute, meshPerAttribute );\n\t\t\tattributeDivisors[ attribute ] = meshPerAttribute;\n\n\t\t}\n\n\t}\n\n\tfunction disableUnusedAttributes() {\n\n\t\tfor ( var i = 0, l = enabledAttributes.length; i !== l; ++ i ) {\n\n\t\t\tif ( enabledAttributes[ i ] !== newAttributes[ i ] ) {\n\n\t\t\t\tgl.disableVertexAttribArray( i );\n\t\t\t\tenabledAttributes[ i ] = 0;\n\n\t\t\t}\n\n\t\t}\n\n\t}\n\n\tfunction enable( id ) {\n\n\t\tif ( capabilities[ id ] !== true ) {\n\n\t\t\tgl.enable( id );\n\t\t\tcapabilities[ id ] = true;\n\n\t\t}\n\n\t}\n\n\tfunction disable( id ) {\n\n\t\tif ( capabilities[ id ] !== false ) {\n\n\t\t\tgl.disable( id );\n\t\t\tcapabilities[ id ] = false;\n\n\t\t}\n\n\t}\n\n\tfunction getCompressedTextureFormats() {\n\n\t\tif ( compressedTextureFormats === null ) {\n\n\t\t\tcompressedTextureFormats = [];\n\n\t\t\tif ( extensions.get( 'WEBGL_compressed_texture_pvrtc' ) ||\n\t\t\t extensions.get( 'WEBGL_compressed_texture_s3tc' ) ||\n\t\t\t extensions.get( 'WEBGL_compressed_texture_etc1' ) ) {\n\n\t\t\t\tvar formats = gl.getParameter( gl.COMPRESSED_TEXTURE_FORMATS );\n\n\t\t\t\tfor ( var i = 0; i < formats.length; i ++ ) {\n\n\t\t\t\t\tcompressedTextureFormats.push( formats[ i ] );\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t}\n\n\t\treturn compressedTextureFormats;\n\n\t}\n\n\tfunction setBlending( blending, blendEquation, blendSrc, blendDst, blendEquationAlpha, blendSrcAlpha, blendDstAlpha, premultipliedAlpha ) {\n\n\t\tif ( blending !== NoBlending ) {\n\n\t\t\tenable( gl.BLEND );\n\n\t\t} else {\n\n\t\t\tdisable( gl.BLEND );\n\n\t\t}\n\n\t\tif ( blending !== currentBlending || premultipliedAlpha !== currentPremultipledAlpha ) {\n\n\t\t\tif ( blending === AdditiveBlending ) {\n\n\t\t\t\tif ( premultipliedAlpha ) {\n\n\t\t\t\t\tgl.blendEquationSeparate( gl.FUNC_ADD, gl.FUNC_ADD );\n\t\t\t\t\tgl.blendFuncSeparate( gl.ONE, gl.ONE, gl.ONE, gl.ONE );\n\n\t\t\t\t} else {\n\n\t\t\t\t\tgl.blendEquation( gl.FUNC_ADD );\n\t\t\t\t\tgl.blendFunc( gl.SRC_ALPHA, gl.ONE );\n\n\t\t\t\t}\n\n\t\t\t} else if ( blending === SubtractiveBlending ) {\n\n\t\t\t\tif ( premultipliedAlpha ) {\n\n\t\t\t\t\tgl.blendEquationSeparate( gl.FUNC_ADD, gl.FUNC_ADD );\n\t\t\t\t\tgl.blendFuncSeparate( gl.ZERO, gl.ZERO, gl.ONE_MINUS_SRC_COLOR, gl.ONE_MINUS_SRC_ALPHA );\n\n\t\t\t\t} else {\n\n\t\t\t\t\tgl.blendEquation( gl.FUNC_ADD );\n\t\t\t\t\tgl.blendFunc( gl.ZERO, gl.ONE_MINUS_SRC_COLOR );\n\n\t\t\t\t}\n\n\t\t\t} else if ( blending === MultiplyBlending ) {\n\n\t\t\t\tif ( premultipliedAlpha ) {\n\n\t\t\t\t\tgl.blendEquationSeparate( gl.FUNC_ADD, gl.FUNC_ADD );\n\t\t\t\t\tgl.blendFuncSeparate( gl.ZERO, gl.SRC_COLOR, gl.ZERO, gl.SRC_ALPHA );\n\n\t\t\t\t} else {\n\n\t\t\t\t\tgl.blendEquation( gl.FUNC_ADD );\n\t\t\t\t\tgl.blendFunc( gl.ZERO, gl.SRC_COLOR );\n\n\t\t\t\t}\n\n\t\t\t} else {\n\n\t\t\t\tif ( premultipliedAlpha ) {\n\n\t\t\t\t\tgl.blendEquationSeparate( gl.FUNC_ADD, gl.FUNC_ADD );\n\t\t\t\t\tgl.blendFuncSeparate( gl.ONE, gl.ONE_MINUS_SRC_ALPHA, gl.ONE, gl.ONE_MINUS_SRC_ALPHA );\n\n\t\t\t\t} else {\n\n\t\t\t\t\tgl.blendEquationSeparate( gl.FUNC_ADD, gl.FUNC_ADD );\n\t\t\t\t\tgl.blendFuncSeparate( gl.SRC_ALPHA, gl.ONE_MINUS_SRC_ALPHA, gl.ONE, gl.ONE_MINUS_SRC_ALPHA );\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t\tcurrentBlending = blending;\n\t\t\tcurrentPremultipledAlpha = premultipliedAlpha;\n\n\t\t}\n\n\t\tif ( blending === CustomBlending ) {\n\n\t\t\tblendEquationAlpha = blendEquationAlpha || blendEquation;\n\t\t\tblendSrcAlpha = blendSrcAlpha || blendSrc;\n\t\t\tblendDstAlpha = blendDstAlpha || blendDst;\n\n\t\t\tif ( blendEquation !== currentBlendEquation || blendEquationAlpha !== currentBlendEquationAlpha ) {\n\n\t\t\t\tgl.blendEquationSeparate( paramThreeToGL( blendEquation ), paramThreeToGL( blendEquationAlpha ) );\n\n\t\t\t\tcurrentBlendEquation = blendEquation;\n\t\t\t\tcurrentBlendEquationAlpha = blendEquationAlpha;\n\n\t\t\t}\n\n\t\t\tif ( blendSrc !== currentBlendSrc || blendDst !== currentBlendDst || blendSrcAlpha !== currentBlendSrcAlpha || blendDstAlpha !== currentBlendDstAlpha ) {\n\n\t\t\t\tgl.blendFuncSeparate( paramThreeToGL( blendSrc ), paramThreeToGL( blendDst ), paramThreeToGL( blendSrcAlpha ), paramThreeToGL( blendDstAlpha ) );\n\n\t\t\t\tcurrentBlendSrc = blendSrc;\n\t\t\t\tcurrentBlendDst = blendDst;\n\t\t\t\tcurrentBlendSrcAlpha = blendSrcAlpha;\n\t\t\t\tcurrentBlendDstAlpha = blendDstAlpha;\n\n\t\t\t}\n\n\t\t} else {\n\n\t\t\tcurrentBlendEquation = null;\n\t\t\tcurrentBlendSrc = null;\n\t\t\tcurrentBlendDst = null;\n\t\t\tcurrentBlendEquationAlpha = null;\n\t\t\tcurrentBlendSrcAlpha = null;\n\t\t\tcurrentBlendDstAlpha = null;\n\n\t\t}\n\n\t}\n\n\t// TODO Deprecate\n\n\tfunction setColorWrite( colorWrite ) {\n\n\t\tcolorBuffer.setMask( colorWrite );\n\n\t}\n\n\tfunction setDepthTest( depthTest ) {\n\n\t\tdepthBuffer.setTest( depthTest );\n\n\t}\n\n\tfunction setDepthWrite( depthWrite ) {\n\n\t\tdepthBuffer.setMask( depthWrite );\n\n\t}\n\n\tfunction setDepthFunc( depthFunc ) {\n\n\t\tdepthBuffer.setFunc( depthFunc );\n\n\t}\n\n\tfunction setStencilTest( stencilTest ) {\n\n\t\tstencilBuffer.setTest( stencilTest );\n\n\t}\n\n\tfunction setStencilWrite( stencilWrite ) {\n\n\t\tstencilBuffer.setMask( stencilWrite );\n\n\t}\n\n\tfunction setStencilFunc( stencilFunc, stencilRef, stencilMask ) {\n\n\t\tstencilBuffer.setFunc( stencilFunc, stencilRef, stencilMask );\n\n\t}\n\n\tfunction setStencilOp( stencilFail, stencilZFail, stencilZPass ) {\n\n\t\tstencilBuffer.setOp( stencilFail, stencilZFail, stencilZPass );\n\n\t}\n\n\t//\n\n\tfunction setFlipSided( flipSided ) {\n\n\t\tif ( currentFlipSided !== flipSided ) {\n\n\t\t\tif ( flipSided ) {\n\n\t\t\t\tgl.frontFace( gl.CW );\n\n\t\t\t} else {\n\n\t\t\t\tgl.frontFace( gl.CCW );\n\n\t\t\t}\n\n\t\t\tcurrentFlipSided = flipSided;\n\n\t\t}\n\n\t}\n\n\tfunction setCullFace( cullFace ) {\n\n\t\tif ( cullFace !== CullFaceNone ) {\n\n\t\t\tenable( gl.CULL_FACE );\n\n\t\t\tif ( cullFace !== currentCullFace ) {\n\n\t\t\t\tif ( cullFace === CullFaceBack ) {\n\n\t\t\t\t\tgl.cullFace( gl.BACK );\n\n\t\t\t\t} else if ( cullFace === CullFaceFront ) {\n\n\t\t\t\t\tgl.cullFace( gl.FRONT );\n\n\t\t\t\t} else {\n\n\t\t\t\t\tgl.cullFace( gl.FRONT_AND_BACK );\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t} else {\n\n\t\t\tdisable( gl.CULL_FACE );\n\n\t\t}\n\n\t\tcurrentCullFace = cullFace;\n\n\t}\n\n\tfunction setLineWidth( width ) {\n\n\t\tif ( width !== currentLineWidth ) {\n\n\t\t\tgl.lineWidth( width );\n\n\t\t\tcurrentLineWidth = width;\n\n\t\t}\n\n\t}\n\n\tfunction setPolygonOffset( polygonOffset, factor, units ) {\n\n\t\tif ( polygonOffset ) {\n\n\t\t\tenable( gl.POLYGON_OFFSET_FILL );\n\n\t\t\tif ( currentPolygonOffsetFactor !== factor || currentPolygonOffsetUnits !== units ) {\n\n\t\t\t\tgl.polygonOffset( factor, units );\n\n\t\t\t\tcurrentPolygonOffsetFactor = factor;\n\t\t\t\tcurrentPolygonOffsetUnits = units;\n\n\t\t\t}\n\n\t\t} else {\n\n\t\t\tdisable( gl.POLYGON_OFFSET_FILL );\n\n\t\t}\n\n\t}\n\n\tfunction getScissorTest() {\n\n\t\treturn currentScissorTest;\n\n\t}\n\n\tfunction setScissorTest( scissorTest ) {\n\n\t\tcurrentScissorTest = scissorTest;\n\n\t\tif ( scissorTest ) {\n\n\t\t\tenable( gl.SCISSOR_TEST );\n\n\t\t} else {\n\n\t\t\tdisable( gl.SCISSOR_TEST );\n\n\t\t}\n\n\t}\n\n\t// texture\n\n\tfunction activeTexture( webglSlot ) {\n\n\t\tif ( webglSlot === undefined ) webglSlot = gl.TEXTURE0 + maxTextures - 1;\n\n\t\tif ( currentTextureSlot !== webglSlot ) {\n\n\t\t\tgl.activeTexture( webglSlot );\n\t\t\tcurrentTextureSlot = webglSlot;\n\n\t\t}\n\n\t}\n\n\tfunction bindTexture( webglType, webglTexture ) {\n\n\t\tif ( currentTextureSlot === null ) {\n\n\t\t\tactiveTexture();\n\n\t\t}\n\n\t\tvar boundTexture = currentBoundTextures[ currentTextureSlot ];\n\n\t\tif ( boundTexture === undefined ) {\n\n\t\t\tboundTexture = { type: undefined, texture: undefined };\n\t\t\tcurrentBoundTextures[ currentTextureSlot ] = boundTexture;\n\n\t\t}\n\n\t\tif ( boundTexture.type !== webglType || boundTexture.texture !== webglTexture ) {\n\n\t\t\tgl.bindTexture( webglType, webglTexture || emptyTextures[ webglType ] );\n\n\t\t\tboundTexture.type = webglType;\n\t\t\tboundTexture.texture = webglTexture;\n\n\t\t}\n\n\t}\n\n\tfunction compressedTexImage2D() {\n\n\t\ttry {\n\n\t\t\tgl.compressedTexImage2D.apply( gl, arguments );\n\n\t\t} catch ( error ) {\n\n\t\t\tconsole.error( error );\n\n\t\t}\n\n\t}\n\n\tfunction texImage2D() {\n\n\t\ttry {\n\n\t\t\tgl.texImage2D.apply( gl, arguments );\n\n\t\t} catch ( error ) {\n\n\t\t\tconsole.error( error );\n\n\t\t}\n\n\t}\n\n\t//\n\n\tfunction scissor( scissor ) {\n\n\t\tif ( currentScissor.equals( scissor ) === false ) {\n\n\t\t\tgl.scissor( scissor.x, scissor.y, scissor.z, scissor.w );\n\t\t\tcurrentScissor.copy( scissor );\n\n\t\t}\n\n\t}\n\n\tfunction viewport( viewport ) {\n\n\t\tif ( currentViewport.equals( viewport ) === false ) {\n\n\t\t\tgl.viewport( viewport.x, viewport.y, viewport.z, viewport.w );\n\t\t\tcurrentViewport.copy( viewport );\n\n\t\t}\n\n\t}\n\n\t//\n\n\tfunction reset() {\n\n\t\tfor ( var i = 0; i < enabledAttributes.length; i ++ ) {\n\n\t\t\tif ( enabledAttributes[ i ] === 1 ) {\n\n\t\t\t\tgl.disableVertexAttribArray( i );\n\t\t\t\tenabledAttributes[ i ] = 0;\n\n\t\t\t}\n\n\t\t}\n\n\t\tcapabilities = {};\n\n\t\tcompressedTextureFormats = null;\n\n\t\tcurrentTextureSlot = null;\n\t\tcurrentBoundTextures = {};\n\n\t\tcurrentBlending = null;\n\n\t\tcurrentFlipSided = null;\n\t\tcurrentCullFace = null;\n\n\t\tcolorBuffer.reset();\n\t\tdepthBuffer.reset();\n\t\tstencilBuffer.reset();\n\n\t}\n\n\treturn {\n\n\t\tbuffers: {\n\t\t\tcolor: colorBuffer,\n\t\t\tdepth: depthBuffer,\n\t\t\tstencil: stencilBuffer\n\t\t},\n\n\t\tinit: init,\n\t\tinitAttributes: initAttributes,\n\t\tenableAttribute: enableAttribute,\n\t\tenableAttributeAndDivisor: enableAttributeAndDivisor,\n\t\tdisableUnusedAttributes: disableUnusedAttributes,\n\t\tenable: enable,\n\t\tdisable: disable,\n\t\tgetCompressedTextureFormats: getCompressedTextureFormats,\n\n\t\tsetBlending: setBlending,\n\n\t\tsetColorWrite: setColorWrite,\n\t\tsetDepthTest: setDepthTest,\n\t\tsetDepthWrite: setDepthWrite,\n\t\tsetDepthFunc: setDepthFunc,\n\t\tsetStencilTest: setStencilTest,\n\t\tsetStencilWrite: setStencilWrite,\n\t\tsetStencilFunc: setStencilFunc,\n\t\tsetStencilOp: setStencilOp,\n\n\t\tsetFlipSided: setFlipSided,\n\t\tsetCullFace: setCullFace,\n\n\t\tsetLineWidth: setLineWidth,\n\t\tsetPolygonOffset: setPolygonOffset,\n\n\t\tgetScissorTest: getScissorTest,\n\t\tsetScissorTest: setScissorTest,\n\n\t\tactiveTexture: activeTexture,\n\t\tbindTexture: bindTexture,\n\t\tcompressedTexImage2D: compressedTexImage2D,\n\t\ttexImage2D: texImage2D,\n\n\t\tscissor: scissor,\n\t\tviewport: viewport,\n\n\t\treset: reset\n\n\t};\n\n}\n\n\nexport { WebGLState };\n","/**\n * @author mrdoob / http://mrdoob.com/\n */\n\nfunction WebGLCapabilities( gl, extensions, parameters ) {\n\n\tvar maxAnisotropy;\n\n\tfunction getMaxAnisotropy() {\n\n\t\tif ( maxAnisotropy !== undefined ) return maxAnisotropy;\n\n\t\tvar extension = extensions.get( 'EXT_texture_filter_anisotropic' );\n\n\t\tif ( extension !== null ) {\n\n\t\t\tmaxAnisotropy = gl.getParameter( extension.MAX_TEXTURE_MAX_ANISOTROPY_EXT );\n\n\t\t} else {\n\n\t\t\tmaxAnisotropy = 0;\n\n\t\t}\n\n\t\treturn maxAnisotropy;\n\n\t}\n\n\tfunction getMaxPrecision( precision ) {\n\n\t\tif ( precision === 'highp' ) {\n\n\t\t\tif ( gl.getShaderPrecisionFormat( gl.VERTEX_SHADER, gl.HIGH_FLOAT ).precision > 0 &&\n\t\t\t gl.getShaderPrecisionFormat( gl.FRAGMENT_SHADER, gl.HIGH_FLOAT ).precision > 0 ) {\n\n\t\t\t\treturn 'highp';\n\n\t\t\t}\n\n\t\t\tprecision = 'mediump';\n\n\t\t}\n\n\t\tif ( precision === 'mediump' ) {\n\n\t\t\tif ( gl.getShaderPrecisionFormat( gl.VERTEX_SHADER, gl.MEDIUM_FLOAT ).precision > 0 &&\n\t\t\t gl.getShaderPrecisionFormat( gl.FRAGMENT_SHADER, gl.MEDIUM_FLOAT ).precision > 0 ) {\n\n\t\t\t\treturn 'mediump';\n\n\t\t\t}\n\n\t\t}\n\n\t\treturn 'lowp';\n\n\t}\n\n\tvar precision = parameters.precision !== undefined ? parameters.precision : 'highp';\n\tvar maxPrecision = getMaxPrecision( precision );\n\n\tif ( maxPrecision !== precision ) {\n\n\t\tconsole.warn( 'THREE.WebGLRenderer:', precision, 'not supported, using', maxPrecision, 'instead.' );\n\t\tprecision = maxPrecision;\n\n\t}\n\n\tvar logarithmicDepthBuffer = parameters.logarithmicDepthBuffer === true && !! extensions.get( 'EXT_frag_depth' );\n\n\tvar maxTextures = gl.getParameter( gl.MAX_TEXTURE_IMAGE_UNITS );\n\tvar maxVertexTextures = gl.getParameter( gl.MAX_VERTEX_TEXTURE_IMAGE_UNITS );\n\tvar maxTextureSize = gl.getParameter( gl.MAX_TEXTURE_SIZE );\n\tvar maxCubemapSize = gl.getParameter( gl.MAX_CUBE_MAP_TEXTURE_SIZE );\n\n\tvar maxAttributes = gl.getParameter( gl.MAX_VERTEX_ATTRIBS );\n\tvar maxVertexUniforms = gl.getParameter( gl.MAX_VERTEX_UNIFORM_VECTORS );\n\tvar maxVaryings = gl.getParameter( gl.MAX_VARYING_VECTORS );\n\tvar maxFragmentUniforms = gl.getParameter( gl.MAX_FRAGMENT_UNIFORM_VECTORS );\n\n\tvar vertexTextures = maxVertexTextures > 0;\n\tvar floatFragmentTextures = !! extensions.get( 'OES_texture_float' );\n\tvar floatVertexTextures = vertexTextures && floatFragmentTextures;\n\n\treturn {\n\n\t\tgetMaxAnisotropy: getMaxAnisotropy,\n\t\tgetMaxPrecision: getMaxPrecision,\n\n\t\tprecision: precision,\n\t\tlogarithmicDepthBuffer: logarithmicDepthBuffer,\n\n\t\tmaxTextures: maxTextures,\n\t\tmaxVertexTextures: maxVertexTextures,\n\t\tmaxTextureSize: maxTextureSize,\n\t\tmaxCubemapSize: maxCubemapSize,\n\n\t\tmaxAttributes: maxAttributes,\n\t\tmaxVertexUniforms: maxVertexUniforms,\n\t\tmaxVaryings: maxVaryings,\n\t\tmaxFragmentUniforms: maxFragmentUniforms,\n\n\t\tvertexTextures: vertexTextures,\n\t\tfloatFragmentTextures: floatFragmentTextures,\n\t\tfloatVertexTextures: floatVertexTextures\n\n\t};\n\n}\n\n\nexport { WebGLCapabilities };\n","/**\n * @author mrdoob / http://mrdoob.com/\n */\n\nfunction WebGLExtensions( gl ) {\n\n\tvar extensions = {};\n\n\treturn {\n\n\t\tget: function ( name ) {\n\n\t\t\tif ( extensions[ name ] !== undefined ) {\n\n\t\t\t\treturn extensions[ name ];\n\n\t\t\t}\n\n\t\t\tvar extension;\n\n\t\t\tswitch ( name ) {\n\n\t\t\t\tcase 'WEBGL_depth_texture':\n\t\t\t\t\textension = gl.getExtension( 'WEBGL_depth_texture' ) || gl.getExtension( 'MOZ_WEBGL_depth_texture' ) || gl.getExtension( 'WEBKIT_WEBGL_depth_texture' );\n\t\t\t\t\tbreak;\n\n\t\t\t\tcase 'EXT_texture_filter_anisotropic':\n\t\t\t\t\textension = gl.getExtension( 'EXT_texture_filter_anisotropic' ) || gl.getExtension( 'MOZ_EXT_texture_filter_anisotropic' ) || gl.getExtension( 'WEBKIT_EXT_texture_filter_anisotropic' );\n\t\t\t\t\tbreak;\n\n\t\t\t\tcase 'WEBGL_compressed_texture_s3tc':\n\t\t\t\t\textension = gl.getExtension( 'WEBGL_compressed_texture_s3tc' ) || gl.getExtension( 'MOZ_WEBGL_compressed_texture_s3tc' ) || gl.getExtension( 'WEBKIT_WEBGL_compressed_texture_s3tc' );\n\t\t\t\t\tbreak;\n\n\t\t\t\tcase 'WEBGL_compressed_texture_pvrtc':\n\t\t\t\t\textension = gl.getExtension( 'WEBGL_compressed_texture_pvrtc' ) || gl.getExtension( 'WEBKIT_WEBGL_compressed_texture_pvrtc' );\n\t\t\t\t\tbreak;\n\n\t\t\t\tcase 'WEBGL_compressed_texture_etc1':\n\t\t\t\t\textension = gl.getExtension( 'WEBGL_compressed_texture_etc1' );\n\t\t\t\t\tbreak;\n\n\t\t\t\tdefault:\n\t\t\t\t\textension = gl.getExtension( name );\n\n\t\t\t}\n\n\t\t\tif ( extension === null ) {\n\n\t\t\t\tconsole.warn( 'THREE.WebGLRenderer: ' + name + ' extension not supported.' );\n\n\t\t\t}\n\n\t\t\textensions[ name ] = extension;\n\n\t\t\treturn extension;\n\n\t\t}\n\n\t};\n\n}\n\n\nexport { WebGLExtensions };\n","/**\n * @author tschw\n */\n\nimport { Matrix3 } from '../../math/Matrix3';\nimport { Plane } from '../../math/Plane';\n\nfunction WebGLClipping() {\n\n\tvar scope = this,\n\n\t\tglobalState = null,\n\t\tnumGlobalPlanes = 0,\n\t\tlocalClippingEnabled = false,\n\t\trenderingShadows = false,\n\n\t\tplane = new Plane(),\n\t\tviewNormalMatrix = new Matrix3(),\n\n\t\tuniform = { value: null, needsUpdate: false };\n\n\tthis.uniform = uniform;\n\tthis.numPlanes = 0;\n\tthis.numIntersection = 0;\n\n\tthis.init = function( planes, enableLocalClipping, camera ) {\n\n\t\tvar enabled =\n\t\t\tplanes.length !== 0 ||\n\t\t\tenableLocalClipping ||\n\t\t\t// enable state of previous frame - the clipping code has to\n\t\t\t// run another frame in order to reset the state:\n\t\t\tnumGlobalPlanes !== 0 ||\n\t\t\tlocalClippingEnabled;\n\n\t\tlocalClippingEnabled = enableLocalClipping;\n\n\t\tglobalState = projectPlanes( planes, camera, 0 );\n\t\tnumGlobalPlanes = planes.length;\n\n\t\treturn enabled;\n\n\t};\n\n\tthis.beginShadows = function() {\n\n\t\trenderingShadows = true;\n\t\tprojectPlanes( null );\n\n\t};\n\n\tthis.endShadows = function() {\n\n\t\trenderingShadows = false;\n\t\tresetGlobalState();\n\n\t};\n\n\tthis.setState = function( planes, clipIntersection, clipShadows, camera, cache, fromCache ) {\n\n\t\tif ( ! localClippingEnabled ||\n\t\t\t\tplanes === null || planes.length === 0 ||\n\t\t\t\trenderingShadows && ! clipShadows ) {\n\t\t\t// there's no local clipping\n\n\t\t\tif ( renderingShadows ) {\n\t\t\t\t// there's no global clipping\n\n\t\t\t\tprojectPlanes( null );\n\n\t\t\t} else {\n\n\t\t\t\tresetGlobalState();\n\t\t\t}\n\n\t\t} else {\n\n\t\t\tvar nGlobal = renderingShadows ? 0 : numGlobalPlanes,\n\t\t\t\tlGlobal = nGlobal * 4,\n\n\t\t\t\tdstArray = cache.clippingState || null;\n\n\t\t\tuniform.value = dstArray; // ensure unique state\n\n\t\t\tdstArray = projectPlanes( planes, camera, lGlobal, fromCache );\n\n\t\t\tfor ( var i = 0; i !== lGlobal; ++ i ) {\n\n\t\t\t\tdstArray[ i ] = globalState[ i ];\n\n\t\t\t}\n\n\t\t\tcache.clippingState = dstArray;\n\t\t\tthis.numIntersection = clipIntersection ? this.numPlanes : 0;\n\t\t\tthis.numPlanes += nGlobal;\n\n\t\t}\n\n\n\t};\n\n\tfunction resetGlobalState() {\n\n\t\tif ( uniform.value !== globalState ) {\n\n\t\t\tuniform.value = globalState;\n\t\t\tuniform.needsUpdate = numGlobalPlanes > 0;\n\n\t\t}\n\n\t\tscope.numPlanes = numGlobalPlanes;\n\t\tscope.numIntersection = 0;\n\n\t}\n\n\tfunction projectPlanes( planes, camera, dstOffset, skipTransform ) {\n\n\t\tvar nPlanes = planes !== null ? planes.length : 0,\n\t\t\tdstArray = null;\n\n\t\tif ( nPlanes !== 0 ) {\n\n\t\t\tdstArray = uniform.value;\n\n\t\t\tif ( skipTransform !== true || dstArray === null ) {\n\n\t\t\t\tvar flatSize = dstOffset + nPlanes * 4,\n\t\t\t\t\tviewMatrix = camera.matrixWorldInverse;\n\n\t\t\t\tviewNormalMatrix.getNormalMatrix( viewMatrix );\n\n\t\t\t\tif ( dstArray === null || dstArray.length < flatSize ) {\n\n\t\t\t\t\tdstArray = new Float32Array( flatSize );\n\n\t\t\t\t}\n\n\t\t\t\tfor ( var i = 0, i4 = dstOffset;\n\t\t\t\t\t\t\t\t\ti !== nPlanes; ++ i, i4 += 4 ) {\n\n\t\t\t\t\tplane.copy( planes[ i ] ).\n\t\t\t\t\t\t\tapplyMatrix4( viewMatrix, viewNormalMatrix );\n\n\t\t\t\t\tplane.normal.toArray( dstArray, i4 );\n\t\t\t\t\tdstArray[ i4 + 3 ] = plane.constant;\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t\tuniform.value = dstArray;\n\t\t\tuniform.needsUpdate = true;\n\n\t\t}\n\n\t\tscope.numPlanes = nPlanes;\n\t\t\n\t\treturn dstArray;\n\n\t}\n\n}\n\nexport { WebGLClipping };\n","import { REVISION, MaxEquation, MinEquation, RGB_ETC1_Format, RGBA_PVRTC_2BPPV1_Format, RGBA_PVRTC_4BPPV1_Format, RGB_PVRTC_2BPPV1_Format, RGB_PVRTC_4BPPV1_Format, RGBA_S3TC_DXT5_Format, RGBA_S3TC_DXT3_Format, RGBA_S3TC_DXT1_Format, RGB_S3TC_DXT1_Format, SrcAlphaSaturateFactor, OneMinusDstColorFactor, DstColorFactor, OneMinusDstAlphaFactor, DstAlphaFactor, OneMinusSrcAlphaFactor, SrcAlphaFactor, OneMinusSrcColorFactor, SrcColorFactor, OneFactor, ZeroFactor, ReverseSubtractEquation, SubtractEquation, AddEquation, DepthFormat, DepthStencilFormat, LuminanceAlphaFormat, LuminanceFormat, RGBAFormat, RGBFormat, AlphaFormat, HalfFloatType, FloatType, UnsignedIntType, IntType, UnsignedShortType, ShortType, ByteType, UnsignedInt248Type, UnsignedShort565Type, UnsignedShort5551Type, UnsignedShort4444Type, UnsignedByteType, LinearMipMapLinearFilter, LinearMipMapNearestFilter, LinearFilter, NearestMipMapLinearFilter, NearestMipMapNearestFilter, NearestFilter, MirroredRepeatWrapping, ClampToEdgeWrapping, RepeatWrapping, FrontFaceDirectionCW, NoBlending, BackSide, DoubleSide, TriangleFanDrawMode, TriangleStripDrawMode, TrianglesDrawMode, NoColors, FlatShading, LinearToneMapping } from '../constants';\nimport { Matrix4 } from '../math/Matrix4';\nimport { WebGLUniforms } from './webgl/WebGLUniforms';\nimport { UniformsUtils } from './shaders/UniformsUtils';\nimport { ShaderLib } from './shaders/ShaderLib';\nimport { LensFlarePlugin } from './webgl/plugins/LensFlarePlugin';\nimport { SpritePlugin } from './webgl/plugins/SpritePlugin';\nimport { WebGLShadowMap } from './webgl/WebGLShadowMap';\nimport { ShaderMaterial } from '../materials/ShaderMaterial';\nimport { Mesh } from '../objects/Mesh';\nimport { BoxBufferGeometry } from '../geometries/BoxBufferGeometry';\nimport { PlaneBufferGeometry } from '../geometries/PlaneBufferGeometry';\nimport { MeshBasicMaterial } from '../materials/MeshBasicMaterial';\nimport { PerspectiveCamera } from '../cameras/PerspectiveCamera';\nimport { OrthographicCamera } from '../cameras/OrthographicCamera';\nimport { WebGLIndexedBufferRenderer } from './webgl/WebGLIndexedBufferRenderer';\nimport { WebGLBufferRenderer } from './webgl/WebGLBufferRenderer';\nimport { WebGLLights } from './webgl/WebGLLights';\nimport { WebGLPrograms } from './webgl/WebGLPrograms';\nimport { WebGLObjects } from './webgl/WebGLObjects';\nimport { WebGLTextures } from './webgl/WebGLTextures';\nimport { WebGLProperties } from './webgl/WebGLProperties';\nimport { WebGLState } from './webgl/WebGLState';\nimport { WebGLCapabilities } from './webgl/WebGLCapabilities';\nimport { BufferGeometry } from '../core/BufferGeometry';\nimport { WebGLExtensions } from './webgl/WebGLExtensions';\nimport { Vector3 } from '../math/Vector3';\nimport { Sphere } from '../math/Sphere';\nimport { WebGLClipping } from './webgl/WebGLClipping';\nimport { Frustum } from '../math/Frustum';\nimport { Vector4 } from '../math/Vector4';\nimport { Color } from '../math/Color';\n\n/**\n * @author supereggbert / http://www.paulbrunt.co.uk/\n * @author mrdoob / http://mrdoob.com/\n * @author alteredq / http://alteredqualia.com/\n * @author szimek / https://github.com/szimek/\n * @author tschw\n */\n\nfunction WebGLRenderer( parameters ) {\n\n\tconsole.log( 'THREE.WebGLRenderer', REVISION );\n\n\tparameters = parameters || {};\n\n\tvar _canvas = parameters.canvas !== undefined ? parameters.canvas : document.createElementNS( 'http://www.w3.org/1999/xhtml', 'canvas' ),\n\t_context = parameters.context !== undefined ? parameters.context : null,\n\n\t_alpha = parameters.alpha !== undefined ? parameters.alpha : false,\n\t_depth = parameters.depth !== undefined ? parameters.depth : true,\n\t_stencil = parameters.stencil !== undefined ? parameters.stencil : true,\n\t_antialias = parameters.antialias !== undefined ? parameters.antialias : false,\n\t_premultipliedAlpha = parameters.premultipliedAlpha !== undefined ? parameters.premultipliedAlpha : true,\n\t_preserveDrawingBuffer = parameters.preserveDrawingBuffer !== undefined ? parameters.preserveDrawingBuffer : false;\n\n\tvar lights = [];\n\n\tvar opaqueObjects = [];\n\tvar opaqueObjectsLastIndex = - 1;\n\tvar transparentObjects = [];\n\tvar transparentObjectsLastIndex = - 1;\n\n\tvar morphInfluences = new Float32Array( 8 );\n\n\tvar sprites = [];\n\tvar lensFlares = [];\n\n\t// public properties\n\n\tthis.domElement = _canvas;\n\tthis.context = null;\n\n\t// clearing\n\n\tthis.autoClear = true;\n\tthis.autoClearColor = true;\n\tthis.autoClearDepth = true;\n\tthis.autoClearStencil = true;\n\n\t// scene graph\n\n\tthis.sortObjects = true;\n\n\t// user-defined clipping\n\n\tthis.clippingPlanes = [];\n\tthis.localClippingEnabled = false;\n\n\t// physically based shading\n\n\tthis.gammaFactor = 2.0;\t// for backwards compatibility\n\tthis.gammaInput = false;\n\tthis.gammaOutput = false;\n\n\t// physical lights\n\n\tthis.physicallyCorrectLights = false;\n\n\t// tone mapping\n\n\tthis.toneMapping = LinearToneMapping;\n\tthis.toneMappingExposure = 1.0;\n\tthis.toneMappingWhitePoint = 1.0;\n\n\t// morphs\n\n\tthis.maxMorphTargets = 8;\n\tthis.maxMorphNormals = 4;\n\n\t// internal properties\n\n\tvar _this = this,\n\n\t// internal state cache\n\n\t_currentProgram = null,\n\t_currentRenderTarget = null,\n\t_currentFramebuffer = null,\n\t_currentMaterialId = - 1,\n\t_currentGeometryProgram = '',\n\t_currentCamera = null,\n\n\t_currentScissor = new Vector4(),\n\t_currentScissorTest = null,\n\n\t_currentViewport = new Vector4(),\n\n\t//\n\n\t_usedTextureUnits = 0,\n\n\t//\n\n\t_clearColor = new Color( 0x000000 ),\n\t_clearAlpha = 0,\n\n\t_width = _canvas.width,\n\t_height = _canvas.height,\n\n\t_pixelRatio = 1,\n\n\t_scissor = new Vector4( 0, 0, _width, _height ),\n\t_scissorTest = false,\n\n\t_viewport = new Vector4( 0, 0, _width, _height ),\n\n\t// frustum\n\n\t_frustum = new Frustum(),\n\n\t// clipping\n\n\t_clipping = new WebGLClipping(),\n\t_clippingEnabled = false,\n\t_localClippingEnabled = false,\n\n\t_sphere = new Sphere(),\n\n\t// camera matrices cache\n\n\t_projScreenMatrix = new Matrix4(),\n\n\t_vector3 = new Vector3(),\n\n\t// light arrays cache\n\n\t_lights = {\n\n\t\thash: '',\n\n\t\tambient: [ 0, 0, 0 ],\n\t\tdirectional: [],\n\t\tdirectionalShadowMap: [],\n\t\tdirectionalShadowMatrix: [],\n\t\tspot: [],\n\t\tspotShadowMap: [],\n\t\tspotShadowMatrix: [],\n\t\tpoint: [],\n\t\tpointShadowMap: [],\n\t\tpointShadowMatrix: [],\n\t\themi: [],\n\n\t\tshadows: []\n\n\t},\n\n\t// info\n\n\t_infoRender = {\n\n\t\tcalls: 0,\n\t\tvertices: 0,\n\t\tfaces: 0,\n\t\tpoints: 0\n\n\t};\n\n\tthis.info = {\n\n\t\trender: _infoRender,\n\t\tmemory: {\n\n\t\t\tgeometries: 0,\n\t\t\ttextures: 0\n\n\t\t},\n\t\tprograms: null\n\n\t};\n\n\n\t// initialize\n\n\tvar _gl;\n\n\ttry {\n\n\t\tvar attributes = {\n\t\t\talpha: _alpha,\n\t\t\tdepth: _depth,\n\t\t\tstencil: _stencil,\n\t\t\tantialias: _antialias,\n\t\t\tpremultipliedAlpha: _premultipliedAlpha,\n\t\t\tpreserveDrawingBuffer: _preserveDrawingBuffer\n\t\t};\n\n\t\t_gl = _context || _canvas.getContext( 'webgl', attributes ) || _canvas.getContext( 'experimental-webgl', attributes );\n\n\t\tif ( _gl === null ) {\n\n\t\t\tif ( _canvas.getContext( 'webgl' ) !== null ) {\n\n\t\t\t\tthrow 'Error creating WebGL context with your selected attributes.';\n\n\t\t\t} else {\n\n\t\t\t\tthrow 'Error creating WebGL context.';\n\n\t\t\t}\n\n\t\t}\n\n\t\t// Some experimental-webgl implementations do not have getShaderPrecisionFormat\n\n\t\tif ( _gl.getShaderPrecisionFormat === undefined ) {\n\n\t\t\t_gl.getShaderPrecisionFormat = function () {\n\n\t\t\t\treturn { 'rangeMin': 1, 'rangeMax': 1, 'precision': 1 };\n\n\t\t\t};\n\n\t\t}\n\n\t\t_canvas.addEventListener( 'webglcontextlost', onContextLost, false );\n\n\t} catch ( error ) {\n\n\t\tconsole.error( 'THREE.WebGLRenderer: ' + error );\n\n\t}\n\n\tvar extensions = new WebGLExtensions( _gl );\n\n\textensions.get( 'WEBGL_depth_texture' );\n\textensions.get( 'OES_texture_float' );\n\textensions.get( 'OES_texture_float_linear' );\n\textensions.get( 'OES_texture_half_float' );\n\textensions.get( 'OES_texture_half_float_linear' );\n\textensions.get( 'OES_standard_derivatives' );\n\textensions.get( 'ANGLE_instanced_arrays' );\n\n\tif ( extensions.get( 'OES_element_index_uint' ) ) {\n\n\t\tBufferGeometry.MaxIndex = 4294967296;\n\n\t}\n\n\tvar capabilities = new WebGLCapabilities( _gl, extensions, parameters );\n\n\tvar state = new WebGLState( _gl, extensions, paramThreeToGL );\n\tvar properties = new WebGLProperties();\n\tvar textures = new WebGLTextures( _gl, extensions, state, properties, capabilities, paramThreeToGL, this.info );\n\tvar objects = new WebGLObjects( _gl, properties, this.info );\n\tvar programCache = new WebGLPrograms( this, capabilities );\n\tvar lightCache = new WebGLLights();\n\n\tthis.info.programs = programCache.programs;\n\n\tvar bufferRenderer = new WebGLBufferRenderer( _gl, extensions, _infoRender );\n\tvar indexedBufferRenderer = new WebGLIndexedBufferRenderer( _gl, extensions, _infoRender );\n\n\t//\n\n\tvar backgroundCamera = new OrthographicCamera( - 1, 1, 1, - 1, 0, 1 );\n\tvar backgroundCamera2 = new PerspectiveCamera();\n\tvar backgroundPlaneMesh = new Mesh(\n\t\tnew PlaneBufferGeometry( 2, 2 ),\n\t\tnew MeshBasicMaterial( { depthTest: false, depthWrite: false, fog: false } )\n\t);\n\tvar backgroundBoxShader = ShaderLib[ 'cube' ];\n\tvar backgroundBoxMesh = new Mesh(\n\t\tnew BoxBufferGeometry( 5, 5, 5 ),\n\t\tnew ShaderMaterial( {\n\t\t\tuniforms: backgroundBoxShader.uniforms,\n\t\t\tvertexShader: backgroundBoxShader.vertexShader,\n\t\t\tfragmentShader: backgroundBoxShader.fragmentShader,\n\t\t\tside: BackSide,\n\t\t\tdepthTest: false,\n\t\t\tdepthWrite: false,\n\t\t\tfog: false\n\t\t} )\n\t);\n\n\t//\n\n\tfunction getTargetPixelRatio() {\n\n\t\treturn _currentRenderTarget === null ? _pixelRatio : 1;\n\n\t}\n\n\tfunction setDefaultGLState() {\n\n\t\tstate.init();\n\n\t\tstate.scissor( _currentScissor.copy( _scissor ).multiplyScalar( _pixelRatio ) );\n\t\tstate.viewport( _currentViewport.copy( _viewport ).multiplyScalar( _pixelRatio ) );\n\n\t\tstate.buffers.color.setClear( _clearColor.r, _clearColor.g, _clearColor.b, _clearAlpha, _premultipliedAlpha );\n\n\t}\n\n\tfunction resetGLState() {\n\n\t\t_currentProgram = null;\n\t\t_currentCamera = null;\n\n\t\t_currentGeometryProgram = '';\n\t\t_currentMaterialId = - 1;\n\n\t\tstate.reset();\n\n\t}\n\n\tsetDefaultGLState();\n\n\tthis.context = _gl;\n\tthis.capabilities = capabilities;\n\tthis.extensions = extensions;\n\tthis.properties = properties;\n\tthis.state = state;\n\n\t// shadow map\n\n\tvar shadowMap = new WebGLShadowMap( this, _lights, objects, capabilities );\n\n\tthis.shadowMap = shadowMap;\n\n\n\t// Plugins\n\n\tvar spritePlugin = new SpritePlugin( this, sprites );\n\tvar lensFlarePlugin = new LensFlarePlugin( this, lensFlares );\n\n\t// API\n\n\tthis.getContext = function () {\n\n\t\treturn _gl;\n\n\t};\n\n\tthis.getContextAttributes = function () {\n\n\t\treturn _gl.getContextAttributes();\n\n\t};\n\n\tthis.forceContextLoss = function () {\n\n\t\textensions.get( 'WEBGL_lose_context' ).loseContext();\n\n\t};\n\n\tthis.getMaxAnisotropy = function () {\n\n\t\treturn capabilities.getMaxAnisotropy();\n\n\t};\n\n\tthis.getPrecision = function () {\n\n\t\treturn capabilities.precision;\n\n\t};\n\n\tthis.getPixelRatio = function () {\n\n\t\treturn _pixelRatio;\n\n\t};\n\n\tthis.setPixelRatio = function ( value ) {\n\n\t\tif ( value === undefined ) return;\n\n\t\t_pixelRatio = value;\n\n\t\tthis.setSize( _viewport.z, _viewport.w, false );\n\n\t};\n\n\tthis.getSize = function () {\n\n\t\treturn {\n\t\t\twidth: _width,\n\t\t\theight: _height\n\t\t};\n\n\t};\n\n\tthis.setSize = function ( width, height, updateStyle ) {\n\n\t\t_width = width;\n\t\t_height = height;\n\n\t\t_canvas.width = width * _pixelRatio;\n\t\t_canvas.height = height * _pixelRatio;\n\n\t\tif ( updateStyle !== false ) {\n\n\t\t\t_canvas.style.width = width + 'px';\n\t\t\t_canvas.style.height = height + 'px';\n\n\t\t}\n\n\t\tthis.setViewport( 0, 0, width, height );\n\n\t};\n\n\tthis.setViewport = function ( x, y, width, height ) {\n\n\t\tstate.viewport( _viewport.set( x, y, width, height ) );\n\n\t};\n\n\tthis.setScissor = function ( x, y, width, height ) {\n\n\t\tstate.scissor( _scissor.set( x, y, width, height ) );\n\n\t};\n\n\tthis.setScissorTest = function ( boolean ) {\n\n\t\tstate.setScissorTest( _scissorTest = boolean );\n\n\t};\n\n\t// Clearing\n\n\tthis.getClearColor = function () {\n\n\t\treturn _clearColor;\n\n\t};\n\n\tthis.setClearColor = function ( color, alpha ) {\n\n\t\t_clearColor.set( color );\n\n\t\t_clearAlpha = alpha !== undefined ? alpha : 1;\n\n\t\tstate.buffers.color.setClear( _clearColor.r, _clearColor.g, _clearColor.b, _clearAlpha, _premultipliedAlpha );\n\n\t};\n\n\tthis.getClearAlpha = function () {\n\n\t\treturn _clearAlpha;\n\n\t};\n\n\tthis.setClearAlpha = function ( alpha ) {\n\n\t\t_clearAlpha = alpha;\n\n\t\tstate.buffers.color.setClear( _clearColor.r, _clearColor.g, _clearColor.b, _clearAlpha, _premultipliedAlpha );\n\n\t};\n\n\tthis.clear = function ( color, depth, stencil ) {\n\n\t\tvar bits = 0;\n\n\t\tif ( color === undefined || color ) bits |= _gl.COLOR_BUFFER_BIT;\n\t\tif ( depth === undefined || depth ) bits |= _gl.DEPTH_BUFFER_BIT;\n\t\tif ( stencil === undefined || stencil ) bits |= _gl.STENCIL_BUFFER_BIT;\n\n\t\t_gl.clear( bits );\n\n\t};\n\n\tthis.clearColor = function () {\n\n\t\tthis.clear( true, false, false );\n\n\t};\n\n\tthis.clearDepth = function () {\n\n\t\tthis.clear( false, true, false );\n\n\t};\n\n\tthis.clearStencil = function () {\n\n\t\tthis.clear( false, false, true );\n\n\t};\n\n\tthis.clearTarget = function ( renderTarget, color, depth, stencil ) {\n\n\t\tthis.setRenderTarget( renderTarget );\n\t\tthis.clear( color, depth, stencil );\n\n\t};\n\n\t// Reset\n\n\tthis.resetGLState = resetGLState;\n\n\tthis.dispose = function() {\n\n\t\ttransparentObjects = [];\n\t\ttransparentObjectsLastIndex = -1;\n\t\topaqueObjects = [];\n\t\topaqueObjectsLastIndex = -1;\n\n\t\t_canvas.removeEventListener( 'webglcontextlost', onContextLost, false );\n\n\t};\n\n\t// Events\n\n\tfunction onContextLost( event ) {\n\n\t\tevent.preventDefault();\n\n\t\tresetGLState();\n\t\tsetDefaultGLState();\n\n\t\tproperties.clear();\n\n\t}\n\n\tfunction onMaterialDispose( event ) {\n\n\t\tvar material = event.target;\n\n\t\tmaterial.removeEventListener( 'dispose', onMaterialDispose );\n\n\t\tdeallocateMaterial( material );\n\n\t}\n\n\t// Buffer deallocation\n\n\tfunction deallocateMaterial( material ) {\n\n\t\treleaseMaterialProgramReference( material );\n\n\t\tproperties.delete( material );\n\n\t}\n\n\n\tfunction releaseMaterialProgramReference( material ) {\n\n\t\tvar programInfo = properties.get( material ).program;\n\n\t\tmaterial.program = undefined;\n\n\t\tif ( programInfo !== undefined ) {\n\n\t\t\tprogramCache.releaseProgram( programInfo );\n\n\t\t}\n\n\t}\n\n\t// Buffer rendering\n\n\tthis.renderBufferImmediate = function ( object, program, material ) {\n\n\t\tstate.initAttributes();\n\n\t\tvar buffers = properties.get( object );\n\n\t\tif ( object.hasPositions && ! buffers.position ) buffers.position = _gl.createBuffer();\n\t\tif ( object.hasNormals && ! buffers.normal ) buffers.normal = _gl.createBuffer();\n\t\tif ( object.hasUvs && ! buffers.uv ) buffers.uv = _gl.createBuffer();\n\t\tif ( object.hasColors && ! buffers.color ) buffers.color = _gl.createBuffer();\n\n\t\tvar attributes = program.getAttributes();\n\n\t\tif ( object.hasPositions ) {\n\n\t\t\t_gl.bindBuffer( _gl.ARRAY_BUFFER, buffers.position );\n\t\t\t_gl.bufferData( _gl.ARRAY_BUFFER, object.positionArray, _gl.DYNAMIC_DRAW );\n\n\t\t\tstate.enableAttribute( attributes.position );\n\t\t\t_gl.vertexAttribPointer( attributes.position, 3, _gl.FLOAT, false, 0, 0 );\n\n\t\t}\n\n\t\tif ( object.hasNormals ) {\n\n\t\t\t_gl.bindBuffer( _gl.ARRAY_BUFFER, buffers.normal );\n\n\t\t\tif ( ! material.isMeshPhongMaterial &&\n\t\t\t ! material.isMeshStandardMaterial &&\n\t\t\t material.shading === FlatShading ) {\n\n\t\t\t\tfor ( var i = 0, l = object.count * 3; i < l; i += 9 ) {\n\n\t\t\t\t\tvar array = object.normalArray;\n\n\t\t\t\t\tvar nx = ( array[ i + 0 ] + array[ i + 3 ] + array[ i + 6 ] ) / 3;\n\t\t\t\t\tvar ny = ( array[ i + 1 ] + array[ i + 4 ] + array[ i + 7 ] ) / 3;\n\t\t\t\t\tvar nz = ( array[ i + 2 ] + array[ i + 5 ] + array[ i + 8 ] ) / 3;\n\n\t\t\t\t\tarray[ i + 0 ] = nx;\n\t\t\t\t\tarray[ i + 1 ] = ny;\n\t\t\t\t\tarray[ i + 2 ] = nz;\n\n\t\t\t\t\tarray[ i + 3 ] = nx;\n\t\t\t\t\tarray[ i + 4 ] = ny;\n\t\t\t\t\tarray[ i + 5 ] = nz;\n\n\t\t\t\t\tarray[ i + 6 ] = nx;\n\t\t\t\t\tarray[ i + 7 ] = ny;\n\t\t\t\t\tarray[ i + 8 ] = nz;\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t\t_gl.bufferData( _gl.ARRAY_BUFFER, object.normalArray, _gl.DYNAMIC_DRAW );\n\n\t\t\tstate.enableAttribute( attributes.normal );\n\n\t\t\t_gl.vertexAttribPointer( attributes.normal, 3, _gl.FLOAT, false, 0, 0 );\n\n\t\t}\n\n\t\tif ( object.hasUvs && material.map ) {\n\n\t\t\t_gl.bindBuffer( _gl.ARRAY_BUFFER, buffers.uv );\n\t\t\t_gl.bufferData( _gl.ARRAY_BUFFER, object.uvArray, _gl.DYNAMIC_DRAW );\n\n\t\t\tstate.enableAttribute( attributes.uv );\n\n\t\t\t_gl.vertexAttribPointer( attributes.uv, 2, _gl.FLOAT, false, 0, 0 );\n\n\t\t}\n\n\t\tif ( object.hasColors && material.vertexColors !== NoColors ) {\n\n\t\t\t_gl.bindBuffer( _gl.ARRAY_BUFFER, buffers.color );\n\t\t\t_gl.bufferData( _gl.ARRAY_BUFFER, object.colorArray, _gl.DYNAMIC_DRAW );\n\n\t\t\tstate.enableAttribute( attributes.color );\n\n\t\t\t_gl.vertexAttribPointer( attributes.color, 3, _gl.FLOAT, false, 0, 0 );\n\n\t\t}\n\n\t\tstate.disableUnusedAttributes();\n\n\t\t_gl.drawArrays( _gl.TRIANGLES, 0, object.count );\n\n\t\tobject.count = 0;\n\n\t};\n\n\tthis.renderBufferDirect = function ( camera, fog, geometry, material, object, group ) {\n\n\t\tsetMaterial( material );\n\n\t\tvar program = setProgram( camera, fog, material, object );\n\n\t\tvar updateBuffers = false;\n\t\tvar geometryProgram = geometry.id + '_' + program.id + '_' + material.wireframe;\n\n\t\tif ( geometryProgram !== _currentGeometryProgram ) {\n\n\t\t\t_currentGeometryProgram = geometryProgram;\n\t\t\tupdateBuffers = true;\n\n\t\t}\n\n\t\t// morph targets\n\n\t\tvar morphTargetInfluences = object.morphTargetInfluences;\n\n\t\tif ( morphTargetInfluences !== undefined ) {\n\n\t\t\tvar activeInfluences = [];\n\n\t\t\tfor ( var i = 0, l = morphTargetInfluences.length; i < l; i ++ ) {\n\n\t\t\t\tvar influence = morphTargetInfluences[ i ];\n\t\t\t\tactiveInfluences.push( [ influence, i ] );\n\n\t\t\t}\n\n\t\t\tactiveInfluences.sort( absNumericalSort );\n\n\t\t\tif ( activeInfluences.length > 8 ) {\n\n\t\t\t\tactiveInfluences.length = 8;\n\n\t\t\t}\n\n\t\t\tvar morphAttributes = geometry.morphAttributes;\n\n\t\t\tfor ( var i = 0, l = activeInfluences.length; i < l; i ++ ) {\n\n\t\t\t\tvar influence = activeInfluences[ i ];\n\t\t\t\tmorphInfluences[ i ] = influence[ 0 ];\n\n\t\t\t\tif ( influence[ 0 ] !== 0 ) {\n\n\t\t\t\t\tvar index = influence[ 1 ];\n\n\t\t\t\t\tif ( material.morphTargets === true && morphAttributes.position ) geometry.addAttribute( 'morphTarget' + i, morphAttributes.position[ index ] );\n\t\t\t\t\tif ( material.morphNormals === true && morphAttributes.normal ) geometry.addAttribute( 'morphNormal' + i, morphAttributes.normal[ index ] );\n\n\t\t\t\t} else {\n\n\t\t\t\t\tif ( material.morphTargets === true ) geometry.removeAttribute( 'morphTarget' + i );\n\t\t\t\t\tif ( material.morphNormals === true ) geometry.removeAttribute( 'morphNormal' + i );\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t\tfor ( var i = activeInfluences.length, il = morphInfluences.length; i < il; i ++ ) {\n\n\t\t\t\tmorphInfluences[ i ] = 0.0;\n\n\t\t\t}\n\n\t\t\tprogram.getUniforms().setValue(\n\t\t\t\t\t_gl, 'morphTargetInfluences', morphInfluences );\n\n\t\t\tupdateBuffers = true;\n\n\t\t}\n\n\t\t//\n\n\t\tvar index = geometry.index;\n\t\tvar position = geometry.attributes.position;\n\t\tvar rangeFactor = 1;\n\n\t\tif ( material.wireframe === true ) {\n\n\t\t\tindex = objects.getWireframeAttribute( geometry );\n\t\t\trangeFactor = 2;\n\n\t\t}\n\n\t\tvar renderer;\n\n\t\tif ( index !== null ) {\n\n\t\t\trenderer = indexedBufferRenderer;\n\t\t\trenderer.setIndex( index );\n\n\t\t} else {\n\n\t\t\trenderer = bufferRenderer;\n\n\t\t}\n\n\t\tif ( updateBuffers ) {\n\n\t\t\tsetupVertexAttributes( material, program, geometry );\n\n\t\t\tif ( index !== null ) {\n\n\t\t\t\t_gl.bindBuffer( _gl.ELEMENT_ARRAY_BUFFER, objects.getAttributeBuffer( index ) );\n\n\t\t\t}\n\n\t\t}\n\n\t\t//\n\n\t\tvar dataCount = 0;\n\n\t\tif ( index !== null ) {\n\n\t\t\tdataCount = index.count;\n\n\t\t} else if ( position !== undefined ) {\n\n\t\t\tdataCount = position.count;\n\n\t\t}\n\n\t\tvar rangeStart = geometry.drawRange.start * rangeFactor;\n\t\tvar rangeCount = geometry.drawRange.count * rangeFactor;\n\n\t\tvar groupStart = group !== null ? group.start * rangeFactor : 0;\n\t\tvar groupCount = group !== null ? group.count * rangeFactor : Infinity;\n\n\t\tvar drawStart = Math.max( rangeStart, groupStart );\n\t\tvar drawEnd = Math.min( dataCount, rangeStart + rangeCount, groupStart + groupCount ) - 1;\n\n\t\tvar drawCount = Math.max( 0, drawEnd - drawStart + 1 );\n\n\t\tif ( drawCount === 0 ) return;\n\n\t\t//\n\n\t\tif ( object.isMesh ) {\n\n\t\t\tif ( material.wireframe === true ) {\n\n\t\t\t\tstate.setLineWidth( material.wireframeLinewidth * getTargetPixelRatio() );\n\t\t\t\trenderer.setMode( _gl.LINES );\n\n\t\t\t} else {\n\n\t\t\t\tswitch ( object.drawMode ) {\n\n\t\t\t\t\tcase TrianglesDrawMode:\n\t\t\t\t\t\trenderer.setMode( _gl.TRIANGLES );\n\t\t\t\t\t\tbreak;\n\n\t\t\t\t\tcase TriangleStripDrawMode:\n\t\t\t\t\t\trenderer.setMode( _gl.TRIANGLE_STRIP );\n\t\t\t\t\t\tbreak;\n\n\t\t\t\t\tcase TriangleFanDrawMode:\n\t\t\t\t\t\trenderer.setMode( _gl.TRIANGLE_FAN );\n\t\t\t\t\t\tbreak;\n\n\t\t\t\t}\n\n\t\t\t}\n\n\n\t\t} else if ( object.isLine ) {\n\n\t\t\tvar lineWidth = material.linewidth;\n\n\t\t\tif ( lineWidth === undefined ) lineWidth = 1; // Not using Line*Material\n\n\t\t\tstate.setLineWidth( lineWidth * getTargetPixelRatio() );\n\n\t\t\tif ( object.isLineSegments ) {\n\n\t\t\t\trenderer.setMode( _gl.LINES );\n\n\t\t\t} else {\n\n\t\t\t\trenderer.setMode( _gl.LINE_STRIP );\n\n\t\t\t}\n\n\t\t} else if ( object.isPoints ) {\n\n\t\t\trenderer.setMode( _gl.POINTS );\n\n\t\t}\n\n\t\tif ( geometry && geometry.isInstancedBufferGeometry ) {\n\n\t\t\tif ( geometry.maxInstancedCount > 0 ) {\n\n\t\t\t\trenderer.renderInstances( geometry, drawStart, drawCount );\n\n\t\t\t}\n\n\t\t} else {\n\n\t\t\trenderer.render( drawStart, drawCount );\n\n\t\t}\n\n\t};\n\n\tfunction setupVertexAttributes( material, program, geometry, startIndex ) {\n\n\t\tvar extension;\n\n\t\tif ( geometry && geometry.isInstancedBufferGeometry ) {\n\n\t\t\textension = extensions.get( 'ANGLE_instanced_arrays' );\n\n\t\t\tif ( extension === null ) {\n\n\t\t\t\tconsole.error( 'THREE.WebGLRenderer.setupVertexAttributes: using THREE.InstancedBufferGeometry but hardware does not support extension ANGLE_instanced_arrays.' );\n\t\t\t\treturn;\n\n\t\t\t}\n\n\t\t}\n\n\t\tif ( startIndex === undefined ) startIndex = 0;\n\n\t\tstate.initAttributes();\n\n\t\tvar geometryAttributes = geometry.attributes;\n\n\t\tvar programAttributes = program.getAttributes();\n\n\t\tvar materialDefaultAttributeValues = material.defaultAttributeValues;\n\n\t\tfor ( var name in programAttributes ) {\n\n\t\t\tvar programAttribute = programAttributes[ name ];\n\n\t\t\tif ( programAttribute >= 0 ) {\n\n\t\t\t\tvar geometryAttribute = geometryAttributes[ name ];\n\n\t\t\t\tif ( geometryAttribute !== undefined ) {\n\n\t\t\t\t\tvar type = _gl.FLOAT;\n\t\t\t\t\tvar array = geometryAttribute.array;\n\t\t\t\t\tvar normalized = geometryAttribute.normalized;\n\n\t\t\t\t\tif ( array instanceof Float32Array ) {\n\n\t\t\t\t\t\ttype = _gl.FLOAT;\n\n\t\t\t\t\t} else if ( array instanceof Float64Array ) {\n\n\t\t\t\t\t\tconsole.warn( \"Unsupported data buffer format: Float64Array\" );\n\n\t\t\t\t\t} else if ( array instanceof Uint16Array ) {\n\n\t\t\t\t\t\ttype = _gl.UNSIGNED_SHORT;\n\n\t\t\t\t\t} else if ( array instanceof Int16Array ) {\n\n\t\t\t\t\t\ttype = _gl.SHORT;\n\n\t\t\t\t\t} else if ( array instanceof Uint32Array ) {\n\n\t\t\t\t\t\ttype = _gl.UNSIGNED_INT;\n\n\t\t\t\t\t} else if ( array instanceof Int32Array ) {\n\n\t\t\t\t\t\ttype = _gl.INT;\n\n\t\t\t\t\t} else if ( array instanceof Int8Array ) {\n\n\t\t\t\t\t\ttype = _gl.BYTE;\n\n\t\t\t\t\t} else if ( array instanceof Uint8Array ) {\n\n\t\t\t\t\t\ttype = _gl.UNSIGNED_BYTE;\n\n\t\t\t\t\t}\n\n\t\t\t\t\tvar size = geometryAttribute.itemSize;\n\t\t\t\t\tvar buffer = objects.getAttributeBuffer( geometryAttribute );\n\n\t\t\t\t\tif ( geometryAttribute.isInterleavedBufferAttribute ) {\n\n\t\t\t\t\t\tvar data = geometryAttribute.data;\n\t\t\t\t\t\tvar stride = data.stride;\n\t\t\t\t\t\tvar offset = geometryAttribute.offset;\n\n\t\t\t\t\t\tif ( data && data.isInstancedInterleavedBuffer ) {\n\n\t\t\t\t\t\t\tstate.enableAttributeAndDivisor( programAttribute, data.meshPerAttribute, extension );\n\n\t\t\t\t\t\t\tif ( geometry.maxInstancedCount === undefined ) {\n\n\t\t\t\t\t\t\t\tgeometry.maxInstancedCount = data.meshPerAttribute * data.count;\n\n\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t} else {\n\n\t\t\t\t\t\t\tstate.enableAttribute( programAttribute );\n\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\t_gl.bindBuffer( _gl.ARRAY_BUFFER, buffer );\n\t\t\t\t\t\t_gl.vertexAttribPointer( programAttribute, size, type, normalized, stride * data.array.BYTES_PER_ELEMENT, ( startIndex * stride + offset ) * data.array.BYTES_PER_ELEMENT );\n\n\t\t\t\t\t} else {\n\n\t\t\t\t\t\tif ( geometryAttribute.isInstancedBufferAttribute ) {\n\n\t\t\t\t\t\t\tstate.enableAttributeAndDivisor( programAttribute, geometryAttribute.meshPerAttribute, extension );\n\n\t\t\t\t\t\t\tif ( geometry.maxInstancedCount === undefined ) {\n\n\t\t\t\t\t\t\t\tgeometry.maxInstancedCount = geometryAttribute.meshPerAttribute * geometryAttribute.count;\n\n\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t} else {\n\n\t\t\t\t\t\t\tstate.enableAttribute( programAttribute );\n\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\t_gl.bindBuffer( _gl.ARRAY_BUFFER, buffer );\n\t\t\t\t\t\t_gl.vertexAttribPointer( programAttribute, size, type, normalized, 0, startIndex * size * geometryAttribute.array.BYTES_PER_ELEMENT );\n\n\t\t\t\t\t}\n\n\t\t\t\t} else if ( materialDefaultAttributeValues !== undefined ) {\n\n\t\t\t\t\tvar value = materialDefaultAttributeValues[ name ];\n\n\t\t\t\t\tif ( value !== undefined ) {\n\n\t\t\t\t\t\tswitch ( value.length ) {\n\n\t\t\t\t\t\t\tcase 2:\n\t\t\t\t\t\t\t\t_gl.vertexAttrib2fv( programAttribute, value );\n\t\t\t\t\t\t\t\tbreak;\n\n\t\t\t\t\t\t\tcase 3:\n\t\t\t\t\t\t\t\t_gl.vertexAttrib3fv( programAttribute, value );\n\t\t\t\t\t\t\t\tbreak;\n\n\t\t\t\t\t\t\tcase 4:\n\t\t\t\t\t\t\t\t_gl.vertexAttrib4fv( programAttribute, value );\n\t\t\t\t\t\t\t\tbreak;\n\n\t\t\t\t\t\t\tdefault:\n\t\t\t\t\t\t\t\t_gl.vertexAttrib1fv( programAttribute, value );\n\n\t\t\t\t\t\t}\n\n\t\t\t\t\t}\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t}\n\n\t\tstate.disableUnusedAttributes();\n\n\t}\n\n\t// Sorting\n\n\tfunction absNumericalSort( a, b ) {\n\n\t\treturn Math.abs( b[ 0 ] ) - Math.abs( a[ 0 ] );\n\n\t}\n\n\tfunction painterSortStable( a, b ) {\n\n\t\tif ( a.object.renderOrder !== b.object.renderOrder ) {\n\n\t\t\treturn a.object.renderOrder - b.object.renderOrder;\n\n\t\t} else if ( a.material.program && b.material.program && a.material.program !== b.material.program ) {\n\n\t\t\treturn a.material.program.id - b.material.program.id;\n\n\t\t} else if ( a.material.id !== b.material.id ) {\n\n\t\t\treturn a.material.id - b.material.id;\n\n\t\t} else if ( a.z !== b.z ) {\n\n\t\t\treturn a.z - b.z;\n\n\t\t} else {\n\n\t\t\treturn a.id - b.id;\n\n\t\t}\n\n\t}\n\n\tfunction reversePainterSortStable( a, b ) {\n\n\t\tif ( a.object.renderOrder !== b.object.renderOrder ) {\n\n\t\t\treturn a.object.renderOrder - b.object.renderOrder;\n\n\t\t} if ( a.z !== b.z ) {\n\n\t\t\treturn b.z - a.z;\n\n\t\t} else {\n\n\t\t\treturn a.id - b.id;\n\n\t\t}\n\n\t}\n\n\t// Rendering\n\n\tthis.render = function ( scene, camera, renderTarget, forceClear ) {\n\n\t\tif ( camera !== undefined && camera.isCamera !== true ) {\n\n\t\t\tconsole.error( 'THREE.WebGLRenderer.render: camera is not an instance of THREE.Camera.' );\n\t\t\treturn;\n\n\t\t}\n\n\t\t// reset caching for this frame\n\n\t\t_currentGeometryProgram = '';\n\t\t_currentMaterialId = - 1;\n\t\t_currentCamera = null;\n\n\t\t// update scene graph\n\n\t\tif ( scene.autoUpdate === true ) scene.updateMatrixWorld();\n\n\t\t// update camera matrices and frustum\n\n\t\tif ( camera.parent === null ) camera.updateMatrixWorld();\n\n\t\tcamera.matrixWorldInverse.getInverse( camera.matrixWorld );\n\n\t\t_projScreenMatrix.multiplyMatrices( camera.projectionMatrix, camera.matrixWorldInverse );\n\t\t_frustum.setFromMatrix( _projScreenMatrix );\n\n\t\tlights.length = 0;\n\n\t\topaqueObjectsLastIndex = - 1;\n\t\ttransparentObjectsLastIndex = - 1;\n\n\t\tsprites.length = 0;\n\t\tlensFlares.length = 0;\n\n\t\t_localClippingEnabled = this.localClippingEnabled;\n\t\t_clippingEnabled = _clipping.init( this.clippingPlanes, _localClippingEnabled, camera );\n\n\t\tprojectObject( scene, camera );\n\n\t\topaqueObjects.length = opaqueObjectsLastIndex + 1;\n\t\ttransparentObjects.length = transparentObjectsLastIndex + 1;\n\n\t\tif ( _this.sortObjects === true ) {\n\n\t\t\topaqueObjects.sort( painterSortStable );\n\t\t\ttransparentObjects.sort( reversePainterSortStable );\n\n\t\t}\n\n\t\t//\n\n\t\tif ( _clippingEnabled ) _clipping.beginShadows();\n\n\t\tsetupShadows( lights );\n\n\t\tshadowMap.render( scene, camera );\n\n\t\tsetupLights( lights, camera );\n\n\t\tif ( _clippingEnabled ) _clipping.endShadows();\n\n\t\t//\n\n\t\t_infoRender.calls = 0;\n\t\t_infoRender.vertices = 0;\n\t\t_infoRender.faces = 0;\n\t\t_infoRender.points = 0;\n\n\t\tif ( renderTarget === undefined ) {\n\n\t\t\trenderTarget = null;\n\n\t\t}\n\n\t\tthis.setRenderTarget( renderTarget );\n\n\t\t//\n\n\t\tvar background = scene.background;\n\n\t\tif ( background === null ) {\n\n\t\t\tstate.buffers.color.setClear( _clearColor.r, _clearColor.g, _clearColor.b, _clearAlpha, _premultipliedAlpha );\n\n\t\t} else if ( background && background.isColor ) {\n\n\t\t\tstate.buffers.color.setClear( background.r, background.g, background.b, 1, _premultipliedAlpha );\n\t\t\tforceClear = true;\n\n\t\t}\n\n\t\tif ( this.autoClear || forceClear ) {\n\n\t\t\tthis.clear( this.autoClearColor, this.autoClearDepth, this.autoClearStencil );\n\n\t\t}\n\n\t\tif ( background && background.isCubeTexture ) {\n\n\t\t\tbackgroundCamera2.projectionMatrix.copy( camera.projectionMatrix );\n\n\t\t\tbackgroundCamera2.matrixWorld.extractRotation( camera.matrixWorld );\n\t\t\tbackgroundCamera2.matrixWorldInverse.getInverse( backgroundCamera2.matrixWorld );\n\n\t\t\tbackgroundBoxMesh.material.uniforms[ \"tCube\" ].value = background;\n\t\t\tbackgroundBoxMesh.modelViewMatrix.multiplyMatrices( backgroundCamera2.matrixWorldInverse, backgroundBoxMesh.matrixWorld );\n\n\t\t\tobjects.update( backgroundBoxMesh );\n\n\t\t\t_this.renderBufferDirect( backgroundCamera2, null, backgroundBoxMesh.geometry, backgroundBoxMesh.material, backgroundBoxMesh, null );\n\n\t\t} else if ( background && background.isTexture ) {\n\n\t\t\tbackgroundPlaneMesh.material.map = background;\n\n\t\t\tobjects.update( backgroundPlaneMesh );\n\n\t\t\t_this.renderBufferDirect( backgroundCamera, null, backgroundPlaneMesh.geometry, backgroundPlaneMesh.material, backgroundPlaneMesh, null );\n\n\t\t}\n\n\t\t//\n\n\t\tif ( scene.overrideMaterial ) {\n\n\t\t\tvar overrideMaterial = scene.overrideMaterial;\n\n\t\t\trenderObjects( opaqueObjects, scene, camera, overrideMaterial );\n\t\t\trenderObjects( transparentObjects, scene, camera, overrideMaterial );\n\n\t\t} else {\n\n\t\t\t// opaque pass (front-to-back order)\n\n\t\t\tstate.setBlending( NoBlending );\n\t\t\trenderObjects( opaqueObjects, scene, camera );\n\n\t\t\t// transparent pass (back-to-front order)\n\n\t\t\trenderObjects( transparentObjects, scene, camera );\n\n\t\t}\n\n\t\t// custom render plugins (post pass)\n\n\t\tspritePlugin.render( scene, camera );\n\t\tlensFlarePlugin.render( scene, camera, _currentViewport );\n\n\t\t// Generate mipmap if we're using any kind of mipmap filtering\n\n\t\tif ( renderTarget ) {\n\n\t\t\ttextures.updateRenderTargetMipmap( renderTarget );\n\n\t\t}\n\n\t\t// Ensure depth buffer writing is enabled so it can be cleared on next render\n\n\t\tstate.setDepthTest( true );\n\t\tstate.setDepthWrite( true );\n\t\tstate.setColorWrite( true );\n\n\t\t// _gl.finish();\n\n\t};\n\n\tfunction pushRenderItem( object, geometry, material, z, group ) {\n\n\t\tvar array, index;\n\n\t\t// allocate the next position in the appropriate array\n\n\t\tif ( material.transparent ) {\n\n\t\t\tarray = transparentObjects;\n\t\t\tindex = ++ transparentObjectsLastIndex;\n\n\t\t} else {\n\n\t\t\tarray = opaqueObjects;\n\t\t\tindex = ++ opaqueObjectsLastIndex;\n\n\t\t}\n\n\t\t// recycle existing render item or grow the array\n\n\t\tvar renderItem = array[ index ];\n\n\t\tif ( renderItem !== undefined ) {\n\n\t\t\trenderItem.id = object.id;\n\t\t\trenderItem.object = object;\n\t\t\trenderItem.geometry = geometry;\n\t\t\trenderItem.material = material;\n\t\t\trenderItem.z = _vector3.z;\n\t\t\trenderItem.group = group;\n\n\t\t} else {\n\n\t\t\trenderItem = {\n\t\t\t\tid: object.id,\n\t\t\t\tobject: object,\n\t\t\t\tgeometry: geometry,\n\t\t\t\tmaterial: material,\n\t\t\t\tz: _vector3.z,\n\t\t\t\tgroup: group\n\t\t\t};\n\n\t\t\t// assert( index === array.length );\n\t\t\tarray.push( renderItem );\n\n\t\t}\n\n\t}\n\n\t// TODO Duplicated code (Frustum)\n\n\tfunction isObjectViewable( object ) {\n\n\t\tvar geometry = object.geometry;\n\n\t\tif ( geometry.boundingSphere === null )\n\t\t\tgeometry.computeBoundingSphere();\n\n\t\t_sphere.copy( geometry.boundingSphere ).\n\t\t\tapplyMatrix4( object.matrixWorld );\n\n\t\treturn isSphereViewable( _sphere );\n\n\t}\n\n\tfunction isSpriteViewable( sprite ) {\n\n\t\t_sphere.center.set( 0, 0, 0 );\n\t\t_sphere.radius = 0.7071067811865476;\n\t\t_sphere.applyMatrix4( sprite.matrixWorld );\n\n\t\treturn isSphereViewable( _sphere );\n\n\t}\n\n\tfunction isSphereViewable( sphere ) {\n\n\t\tif ( ! _frustum.intersectsSphere( sphere ) ) return false;\n\n\t\tvar numPlanes = _clipping.numPlanes;\n\n\t\tif ( numPlanes === 0 ) return true;\n\n\t\tvar planes = _this.clippingPlanes,\n\n\t\t\tcenter = sphere.center,\n\t\t\tnegRad = - sphere.radius,\n\t\t\ti = 0;\n\n\t\tdo {\n\n\t\t\t// out when deeper than radius in the negative halfspace\n\t\t\tif ( planes[ i ].distanceToPoint( center ) < negRad ) return false;\n\n\t\t} while ( ++ i !== numPlanes );\n\n\t\treturn true;\n\n\t}\n\n\tfunction projectObject( object, camera ) {\n\n\t\tif ( object.visible === false ) return;\n\n\t\tvar visible = ( object.layers.mask & camera.layers.mask ) !== 0;\n\n\t\tif ( visible ) {\n\n\t\t\tif ( object.isLight ) {\n\n\t\t\t\tlights.push( object );\n\n\t\t\t} else if ( object.isSprite ) {\n\n\t\t\t\tif ( object.frustumCulled === false || isSpriteViewable( object ) === true ) {\n\n\t\t\t\t\tsprites.push( object );\n\n\t\t\t\t}\n\n\t\t\t} else if ( object.isLensFlare ) {\n\n\t\t\t\tlensFlares.push( object );\n\n\t\t\t} else if ( object.isImmediateRenderObject ) {\n\n\t\t\t\tif ( _this.sortObjects === true ) {\n\n\t\t\t\t\t_vector3.setFromMatrixPosition( object.matrixWorld );\n\t\t\t\t\t_vector3.applyProjection( _projScreenMatrix );\n\n\t\t\t\t}\n\n\t\t\t\tpushRenderItem( object, null, object.material, _vector3.z, null );\n\n\t\t\t} else if ( object.isMesh || object.isLine || object.isPoints ) {\n\n\t\t\t\tif ( object.isSkinnedMesh ) {\n\n\t\t\t\t\tobject.skeleton.update();\n\n\t\t\t\t}\n\n\t\t\t\tif ( object.frustumCulled === false || isObjectViewable( object ) === true ) {\n\n\t\t\t\t\tvar material = object.material;\n\n\t\t\t\t\tif ( material.visible === true ) {\n\n\t\t\t\t\t\tif ( _this.sortObjects === true ) {\n\n\t\t\t\t\t\t\t_vector3.setFromMatrixPosition( object.matrixWorld );\n\t\t\t\t\t\t\t_vector3.applyProjection( _projScreenMatrix );\n\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\tvar geometry = objects.update( object );\n\n\t\t\t\t\t\tif ( material.isMultiMaterial ) {\n\n\t\t\t\t\t\t\tvar groups = geometry.groups;\n\t\t\t\t\t\t\tvar materials = material.materials;\n\n\t\t\t\t\t\t\tfor ( var i = 0, l = groups.length; i < l; i ++ ) {\n\n\t\t\t\t\t\t\t\tvar group = groups[ i ];\n\t\t\t\t\t\t\t\tvar groupMaterial = materials[ group.materialIndex ];\n\n\t\t\t\t\t\t\t\tif ( groupMaterial.visible === true ) {\n\n\t\t\t\t\t\t\t\t\tpushRenderItem( object, geometry, groupMaterial, _vector3.z, group );\n\n\t\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t} else {\n\n\t\t\t\t\t\t\tpushRenderItem( object, geometry, material, _vector3.z, null );\n\n\t\t\t\t\t\t}\n\n\t\t\t\t\t}\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t}\n\n\t\tvar children = object.children;\n\n\t\tfor ( var i = 0, l = children.length; i < l; i ++ ) {\n\n\t\t\tprojectObject( children[ i ], camera );\n\n\t\t}\n\n\t}\n\n\tfunction renderObjects( renderList, scene, camera, overrideMaterial ) {\n\n\t\tfor ( var i = 0, l = renderList.length; i < l; i ++ ) {\n\n\t\t\tvar renderItem = renderList[ i ];\n\n\t\t\tvar object = renderItem.object;\n\t\t\tvar geometry = renderItem.geometry;\n\t\t\tvar material = overrideMaterial === undefined ? renderItem.material : overrideMaterial;\n\t\t\tvar group = renderItem.group;\n\n\t\t\tobject.modelViewMatrix.multiplyMatrices( camera.matrixWorldInverse, object.matrixWorld );\n\t\t\tobject.normalMatrix.getNormalMatrix( object.modelViewMatrix );\n\n\t\t\tobject.onBeforeRender( _this, scene, camera, geometry, material, group );\n\n\t\t\tif ( object.isImmediateRenderObject ) {\n\n\t\t\t\tsetMaterial( material );\n\n\t\t\t\tvar program = setProgram( camera, scene.fog, material, object );\n\n\t\t\t\t_currentGeometryProgram = '';\n\n\t\t\t\tobject.render( function ( object ) {\n\n\t\t\t\t\t_this.renderBufferImmediate( object, program, material );\n\n\t\t\t\t} );\n\n\t\t\t} else {\n\n\t\t\t\t_this.renderBufferDirect( camera, scene.fog, geometry, material, object, group );\n\n\t\t\t}\n\n\t\t\tobject.onAfterRender( _this, scene, camera, geometry, material, group );\n\n\n\t\t}\n\n\t}\n\n\tfunction initMaterial( material, fog, object ) {\n\n\t\tvar materialProperties = properties.get( material );\n\n\t\tvar parameters = programCache.getParameters(\n\t\t\t\tmaterial, _lights, fog, _clipping.numPlanes, _clipping.numIntersection, object );\n\n\t\tvar code = programCache.getProgramCode( material, parameters );\n\n\t\tvar program = materialProperties.program;\n\t\tvar programChange = true;\n\n\t\tif ( program === undefined ) {\n\n\t\t\t// new material\n\t\t\tmaterial.addEventListener( 'dispose', onMaterialDispose );\n\n\t\t} else if ( program.code !== code ) {\n\n\t\t\t// changed glsl or parameters\n\t\t\treleaseMaterialProgramReference( material );\n\n\t\t} else if ( parameters.shaderID !== undefined ) {\n\n\t\t\t// same glsl and uniform list\n\t\t\treturn;\n\n\t\t} else {\n\n\t\t\t// only rebuild uniform list\n\t\t\tprogramChange = false;\n\n\t\t}\n\n\t\tif ( programChange ) {\n\n\t\t\tif ( parameters.shaderID ) {\n\n\t\t\t\tvar shader = ShaderLib[ parameters.shaderID ];\n\n\t\t\t\tmaterialProperties.__webglShader = {\n\t\t\t\t\tname: material.type,\n\t\t\t\t\tuniforms: UniformsUtils.clone( shader.uniforms ),\n\t\t\t\t\tvertexShader: shader.vertexShader,\n\t\t\t\t\tfragmentShader: shader.fragmentShader\n\t\t\t\t};\n\n\t\t\t} else {\n\n\t\t\t\tmaterialProperties.__webglShader = {\n\t\t\t\t\tname: material.type,\n\t\t\t\t\tuniforms: material.uniforms,\n\t\t\t\t\tvertexShader: material.vertexShader,\n\t\t\t\t\tfragmentShader: material.fragmentShader\n\t\t\t\t};\n\n\t\t\t}\n\n\t\t\tmaterial.__webglShader = materialProperties.__webglShader;\n\n\t\t\tprogram = programCache.acquireProgram( material, parameters, code );\n\n\t\t\tmaterialProperties.program = program;\n\t\t\tmaterial.program = program;\n\n\t\t}\n\n\t\tvar attributes = program.getAttributes();\n\n\t\tif ( material.morphTargets ) {\n\n\t\t\tmaterial.numSupportedMorphTargets = 0;\n\n\t\t\tfor ( var i = 0; i < _this.maxMorphTargets; i ++ ) {\n\n\t\t\t\tif ( attributes[ 'morphTarget' + i ] >= 0 ) {\n\n\t\t\t\t\tmaterial.numSupportedMorphTargets ++;\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t}\n\n\t\tif ( material.morphNormals ) {\n\n\t\t\tmaterial.numSupportedMorphNormals = 0;\n\n\t\t\tfor ( var i = 0; i < _this.maxMorphNormals; i ++ ) {\n\n\t\t\t\tif ( attributes[ 'morphNormal' + i ] >= 0 ) {\n\n\t\t\t\t\tmaterial.numSupportedMorphNormals ++;\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t}\n\n\t\tvar uniforms = materialProperties.__webglShader.uniforms;\n\n\t\tif ( ! material.isShaderMaterial &&\n\t\t ! material.isRawShaderMaterial ||\n\t\t material.clipping === true ) {\n\n\t\t\tmaterialProperties.numClippingPlanes = _clipping.numPlanes;\n\t\t\tmaterialProperties.numIntersection = _clipping.numIntersection;\n\t\t\tuniforms.clippingPlanes = _clipping.uniform;\n\n\t\t}\n\n\t\tmaterialProperties.fog = fog;\n\n\t\t// store the light setup it was created for\n\n\t\tmaterialProperties.lightsHash = _lights.hash;\n\n\t\tif ( material.lights ) {\n\n\t\t\t// wire up the material to this renderer's lighting state\n\n\t\t\tuniforms.ambientLightColor.value = _lights.ambient;\n\t\t\tuniforms.directionalLights.value = _lights.directional;\n\t\t\tuniforms.spotLights.value = _lights.spot;\n\t\t\tuniforms.pointLights.value = _lights.point;\n\t\t\tuniforms.hemisphereLights.value = _lights.hemi;\n\n\t\t\tuniforms.directionalShadowMap.value = _lights.directionalShadowMap;\n\t\t\tuniforms.directionalShadowMatrix.value = _lights.directionalShadowMatrix;\n\t\t\tuniforms.spotShadowMap.value = _lights.spotShadowMap;\n\t\t\tuniforms.spotShadowMatrix.value = _lights.spotShadowMatrix;\n\t\t\tuniforms.pointShadowMap.value = _lights.pointShadowMap;\n\t\t\tuniforms.pointShadowMatrix.value = _lights.pointShadowMatrix;\n\n\t\t}\n\n\t\tvar progUniforms = materialProperties.program.getUniforms(),\n\t\t\tuniformsList =\n\t\t\t\t\tWebGLUniforms.seqWithValue( progUniforms.seq, uniforms );\n\n\t\tmaterialProperties.uniformsList = uniformsList;\n\n\t}\n\n\tfunction setMaterial( material ) {\n\n\t\tmaterial.side === DoubleSide\n\t\t\t? state.disable( _gl.CULL_FACE )\n\t\t\t: state.enable( _gl.CULL_FACE );\n\n\t\tstate.setFlipSided( material.side === BackSide );\n\n\t\tmaterial.transparent === true\n\t\t\t? state.setBlending( material.blending, material.blendEquation, material.blendSrc, material.blendDst, material.blendEquationAlpha, material.blendSrcAlpha, material.blendDstAlpha, material.premultipliedAlpha )\n\t\t\t: state.setBlending( NoBlending );\n\n\t\tstate.setDepthFunc( material.depthFunc );\n\t\tstate.setDepthTest( material.depthTest );\n\t\tstate.setDepthWrite( material.depthWrite );\n\t\tstate.setColorWrite( material.colorWrite );\n\t\tstate.setPolygonOffset( material.polygonOffset, material.polygonOffsetFactor, material.polygonOffsetUnits );\n\n\t}\n\n\tfunction setProgram( camera, fog, material, object ) {\n\n\t\t_usedTextureUnits = 0;\n\n\t\tvar materialProperties = properties.get( material );\n\n\t\tif ( _clippingEnabled ) {\n\n\t\t\tif ( _localClippingEnabled || camera !== _currentCamera ) {\n\n\t\t\t\tvar useCache =\n\t\t\t\t\t\tcamera === _currentCamera &&\n\t\t\t\t\t\tmaterial.id === _currentMaterialId;\n\n\t\t\t\t// we might want to call this function with some ClippingGroup\n\t\t\t\t// object instead of the material, once it becomes feasible\n\t\t\t\t// (#8465, #8379)\n\t\t\t\t_clipping.setState(\n\t\t\t\t\t\tmaterial.clippingPlanes, material.clipIntersection, material.clipShadows,\n\t\t\t\t\t\tcamera, materialProperties, useCache );\n\n\t\t\t}\n\n\t\t}\n\n\t\tif ( material.needsUpdate === false ) {\n\n\t\t\tif ( materialProperties.program === undefined ) {\n\n\t\t\t\tmaterial.needsUpdate = true;\n\n\t\t\t} else if ( material.fog && materialProperties.fog !== fog ) {\n\n\t\t\t\tmaterial.needsUpdate = true;\n\n\t\t\t} else if ( material.lights && materialProperties.lightsHash !== _lights.hash ) {\n\n\t\t\t\tmaterial.needsUpdate = true;\n\n\t\t\t} else if ( materialProperties.numClippingPlanes !== undefined &&\n\t\t\t\t( materialProperties.numClippingPlanes !== _clipping.numPlanes ||\n \t\t\t\t materialProperties.numIntersection !== _clipping.numIntersection ) ) {\n\n\t\t\t\tmaterial.needsUpdate = true;\n\n\t\t\t}\n\n\t\t}\n\n\t\tif ( material.needsUpdate ) {\n\n\t\t\tinitMaterial( material, fog, object );\n\t\t\tmaterial.needsUpdate = false;\n\n\t\t}\n\n\t\tvar refreshProgram = false;\n\t\tvar refreshMaterial = false;\n\t\tvar refreshLights = false;\n\n\t\tvar program = materialProperties.program,\n\t\t\tp_uniforms = program.getUniforms(),\n\t\t\tm_uniforms = materialProperties.__webglShader.uniforms;\n\n\t\tif ( program.id !== _currentProgram ) {\n\n\t\t\t_gl.useProgram( program.program );\n\t\t\t_currentProgram = program.id;\n\n\t\t\trefreshProgram = true;\n\t\t\trefreshMaterial = true;\n\t\t\trefreshLights = true;\n\n\t\t}\n\n\t\tif ( material.id !== _currentMaterialId ) {\n\n\t\t\t_currentMaterialId = material.id;\n\n\t\t\trefreshMaterial = true;\n\n\t\t}\n\n\t\tif ( refreshProgram || camera !== _currentCamera ) {\n\n\t\t\tp_uniforms.set( _gl, camera, 'projectionMatrix' );\n\n\t\t\tif ( capabilities.logarithmicDepthBuffer ) {\n\n\t\t\t\tp_uniforms.setValue( _gl, 'logDepthBufFC',\n\t\t\t\t\t\t2.0 / ( Math.log( camera.far + 1.0 ) / Math.LN2 ) );\n\n\t\t\t}\n\n\n\t\t\tif ( camera !== _currentCamera ) {\n\n\t\t\t\t_currentCamera = camera;\n\n\t\t\t\t// lighting uniforms depend on the camera so enforce an update\n\t\t\t\t// now, in case this material supports lights - or later, when\n\t\t\t\t// the next material that does gets activated:\n\n\t\t\t\trefreshMaterial = true;\t\t// set to true on material change\n\t\t\t\trefreshLights = true;\t\t// remains set until update done\n\n\t\t\t}\n\n\t\t\t// load material specific uniforms\n\t\t\t// (shader material also gets them for the sake of genericity)\n\n\t\t\tif ( material.isShaderMaterial ||\n\t\t\t material.isMeshPhongMaterial ||\n\t\t\t material.isMeshStandardMaterial ||\n\t\t\t material.envMap ) {\n\n\t\t\t\tvar uCamPos = p_uniforms.map.cameraPosition;\n\n\t\t\t\tif ( uCamPos !== undefined ) {\n\n\t\t\t\t\tuCamPos.setValue( _gl,\n\t\t\t\t\t\t\t_vector3.setFromMatrixPosition( camera.matrixWorld ) );\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t\tif ( material.isMeshPhongMaterial ||\n\t\t\t material.isMeshLambertMaterial ||\n\t\t\t material.isMeshBasicMaterial ||\n\t\t\t material.isMeshStandardMaterial ||\n\t\t\t material.isShaderMaterial ||\n\t\t\t material.skinning ) {\n\n\t\t\t\tp_uniforms.setValue( _gl, 'viewMatrix', camera.matrixWorldInverse );\n\n\t\t\t}\n\n\t\t\tp_uniforms.set( _gl, _this, 'toneMappingExposure' );\n\t\t\tp_uniforms.set( _gl, _this, 'toneMappingWhitePoint' );\n\n\t\t}\n\n\t\t// skinning uniforms must be set even if material didn't change\n\t\t// auto-setting of texture unit for bone texture must go before other textures\n\t\t// not sure why, but otherwise weird things happen\n\n\t\tif ( material.skinning ) {\n\n\t\t\tp_uniforms.setOptional( _gl, object, 'bindMatrix' );\n\t\t\tp_uniforms.setOptional( _gl, object, 'bindMatrixInverse' );\n\n\t\t\tvar skeleton = object.skeleton;\n\n\t\t\tif ( skeleton ) {\n\n\t\t\t\tif ( capabilities.floatVertexTextures && skeleton.useVertexTexture ) {\n\n\t\t\t\t\tp_uniforms.set( _gl, skeleton, 'boneTexture' );\n\t\t\t\t\tp_uniforms.set( _gl, skeleton, 'boneTextureWidth' );\n\t\t\t\t\tp_uniforms.set( _gl, skeleton, 'boneTextureHeight' );\n\n\t\t\t\t} else {\n\n\t\t\t\t\tp_uniforms.setOptional( _gl, skeleton, 'boneMatrices' );\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t}\n\n\t\tif ( refreshMaterial ) {\n\n\t\t\tif ( material.lights ) {\n\n\t\t\t\t// the current material requires lighting info\n\n\t\t\t\t// note: all lighting uniforms are always set correctly\n\t\t\t\t// they simply reference the renderer's state for their\n\t\t\t\t// values\n\t\t\t\t//\n\t\t\t\t// use the current material's .needsUpdate flags to set\n\t\t\t\t// the GL state when required\n\n\t\t\t\tmarkUniformsLightsNeedsUpdate( m_uniforms, refreshLights );\n\n\t\t\t}\n\n\t\t\t// refresh uniforms common to several materials\n\n\t\t\tif ( fog && material.fog ) {\n\n\t\t\t\trefreshUniformsFog( m_uniforms, fog );\n\n\t\t\t}\n\n\t\t\tif ( material.isMeshBasicMaterial ||\n\t\t\t material.isMeshLambertMaterial ||\n\t\t\t material.isMeshPhongMaterial ||\n\t\t\t material.isMeshStandardMaterial ||\n\t\t\t material.isMeshDepthMaterial ) {\n\n\t\t\t\trefreshUniformsCommon( m_uniforms, material );\n\n\t\t\t}\n\n\t\t\t// refresh single material specific uniforms\n\n\t\t\tif ( material.isLineBasicMaterial ) {\n\n\t\t\t\trefreshUniformsLine( m_uniforms, material );\n\n\t\t\t} else if ( material.isLineDashedMaterial ) {\n\n\t\t\t\trefreshUniformsLine( m_uniforms, material );\n\t\t\t\trefreshUniformsDash( m_uniforms, material );\n\n\t\t\t} else if ( material.isPointsMaterial ) {\n\n\t\t\t\trefreshUniformsPoints( m_uniforms, material );\n\n\t\t\t} else if ( material.isMeshLambertMaterial ) {\n\n\t\t\t\trefreshUniformsLambert( m_uniforms, material );\n\n\t\t\t} else if ( material.isMeshPhongMaterial ) {\n\n\t\t\t\trefreshUniformsPhong( m_uniforms, material );\n\n\t\t\t} else if ( material.isMeshPhysicalMaterial ) {\n\n\t\t\t\trefreshUniformsPhysical( m_uniforms, material );\n\n\t\t\t} else if ( material.isMeshStandardMaterial ) {\n\n\t\t\t\trefreshUniformsStandard( m_uniforms, material );\n\n\t\t\t} else if ( material.isMeshDepthMaterial ) {\n\n\t\t\t\tif ( material.displacementMap ) {\n\n\t\t\t\t\tm_uniforms.displacementMap.value = material.displacementMap;\n\t\t\t\t\tm_uniforms.displacementScale.value = material.displacementScale;\n\t\t\t\t\tm_uniforms.displacementBias.value = material.displacementBias;\n\n\t\t\t\t}\n\n\t\t\t} else if ( material.isMeshNormalMaterial ) {\n\n\t\t\t\tm_uniforms.opacity.value = material.opacity;\n\n\t\t\t}\n\n\t\t\tWebGLUniforms.upload(\n\t\t\t\t\t_gl, materialProperties.uniformsList, m_uniforms, _this );\n\n\t\t}\n\n\n\t\t// common matrices\n\n\t\tp_uniforms.set( _gl, object, 'modelViewMatrix' );\n\t\tp_uniforms.set( _gl, object, 'normalMatrix' );\n\t\tp_uniforms.setValue( _gl, 'modelMatrix', object.matrixWorld );\n\n\t\treturn program;\n\n\t}\n\n\t// Uniforms (refresh uniforms objects)\n\n\tfunction refreshUniformsCommon( uniforms, material ) {\n\n\t\tuniforms.opacity.value = material.opacity;\n\n\t\tuniforms.diffuse.value = material.color;\n\n\t\tif ( material.emissive ) {\n\n\t\t\tuniforms.emissive.value.copy( material.emissive ).multiplyScalar( material.emissiveIntensity );\n\n\t\t}\n\n\t\tuniforms.map.value = material.map;\n\t\tuniforms.specularMap.value = material.specularMap;\n\t\tuniforms.alphaMap.value = material.alphaMap;\n\n\t\tif ( material.aoMap ) {\n\n\t\t\tuniforms.aoMap.value = material.aoMap;\n\t\t\tuniforms.aoMapIntensity.value = material.aoMapIntensity;\n\n\t\t}\n\n\t\t// uv repeat and offset setting priorities\n\t\t// 1. color map\n\t\t// 2. specular map\n\t\t// 3. normal map\n\t\t// 4. bump map\n\t\t// 5. alpha map\n\t\t// 6. emissive map\n\n\t\tvar uvScaleMap;\n\n\t\tif ( material.map ) {\n\n\t\t\tuvScaleMap = material.map;\n\n\t\t} else if ( material.specularMap ) {\n\n\t\t\tuvScaleMap = material.specularMap;\n\n\t\t} else if ( material.displacementMap ) {\n\n\t\t\tuvScaleMap = material.displacementMap;\n\n\t\t} else if ( material.normalMap ) {\n\n\t\t\tuvScaleMap = material.normalMap;\n\n\t\t} else if ( material.bumpMap ) {\n\n\t\t\tuvScaleMap = material.bumpMap;\n\n\t\t} else if ( material.roughnessMap ) {\n\n\t\t\tuvScaleMap = material.roughnessMap;\n\n\t\t} else if ( material.metalnessMap ) {\n\n\t\t\tuvScaleMap = material.metalnessMap;\n\n\t\t} else if ( material.alphaMap ) {\n\n\t\t\tuvScaleMap = material.alphaMap;\n\n\t\t} else if ( material.emissiveMap ) {\n\n\t\t\tuvScaleMap = material.emissiveMap;\n\n\t\t}\n\n\t\tif ( uvScaleMap !== undefined ) {\n\n\t\t\t// backwards compatibility\n\t\t\tif ( uvScaleMap.isWebGLRenderTarget ) {\n\n\t\t\t\tuvScaleMap = uvScaleMap.texture;\n\n\t\t\t}\n\n\t\t\tvar offset = uvScaleMap.offset;\n\t\t\tvar repeat = uvScaleMap.repeat;\n\n\t\t\tuniforms.offsetRepeat.value.set( offset.x, offset.y, repeat.x, repeat.y );\n\n\t\t}\n\n\t\tuniforms.envMap.value = material.envMap;\n\n\t\t// don't flip CubeTexture envMaps, flip everything else:\n\t\t// WebGLRenderTargetCube will be flipped for backwards compatibility\n\t\t// WebGLRenderTargetCube.texture will be flipped because it's a Texture and NOT a CubeTexture\n\t\t// this check must be handled differently, or removed entirely, if WebGLRenderTargetCube uses a CubeTexture in the future\n\t\tuniforms.flipEnvMap.value = ( ! ( material.envMap && material.envMap.isCubeTexture ) ) ? 1 : - 1;\n\n\t\tuniforms.reflectivity.value = material.reflectivity;\n\t\tuniforms.refractionRatio.value = material.refractionRatio;\n\n\t}\n\n\tfunction refreshUniformsLine( uniforms, material ) {\n\n\t\tuniforms.diffuse.value = material.color;\n\t\tuniforms.opacity.value = material.opacity;\n\n\t}\n\n\tfunction refreshUniformsDash( uniforms, material ) {\n\n\t\tuniforms.dashSize.value = material.dashSize;\n\t\tuniforms.totalSize.value = material.dashSize + material.gapSize;\n\t\tuniforms.scale.value = material.scale;\n\n\t}\n\n\tfunction refreshUniformsPoints( uniforms, material ) {\n\n\t\tuniforms.diffuse.value = material.color;\n\t\tuniforms.opacity.value = material.opacity;\n\t\tuniforms.size.value = material.size * _pixelRatio;\n\t\tuniforms.scale.value = _height * 0.5;\n\n\t\tuniforms.map.value = material.map;\n\n\t\tif ( material.map !== null ) {\n\n\t\t\tvar offset = material.map.offset;\n\t\t\tvar repeat = material.map.repeat;\n\n\t\t\tuniforms.offsetRepeat.value.set( offset.x, offset.y, repeat.x, repeat.y );\n\n\t\t}\n\n\t}\n\n\tfunction refreshUniformsFog( uniforms, fog ) {\n\n\t\tuniforms.fogColor.value = fog.color;\n\n\t\tif ( fog.isFog ) {\n\n\t\t\tuniforms.fogNear.value = fog.near;\n\t\t\tuniforms.fogFar.value = fog.far;\n\n\t\t} else if ( fog.isFogExp2 ) {\n\n\t\t\tuniforms.fogDensity.value = fog.density;\n\n\t\t}\n\n\t}\n\n\tfunction refreshUniformsLambert( uniforms, material ) {\n\n\t\tif ( material.lightMap ) {\n\n\t\t\tuniforms.lightMap.value = material.lightMap;\n\t\t\tuniforms.lightMapIntensity.value = material.lightMapIntensity;\n\n\t\t}\n\n\t\tif ( material.emissiveMap ) {\n\n\t\t\tuniforms.emissiveMap.value = material.emissiveMap;\n\n\t\t}\n\n\t}\n\n\tfunction refreshUniformsPhong( uniforms, material ) {\n\n\t\tuniforms.specular.value = material.specular;\n\t\tuniforms.shininess.value = Math.max( material.shininess, 1e-4 ); // to prevent pow( 0.0, 0.0 )\n\n\t\tif ( material.lightMap ) {\n\n\t\t\tuniforms.lightMap.value = material.lightMap;\n\t\t\tuniforms.lightMapIntensity.value = material.lightMapIntensity;\n\n\t\t}\n\n\t\tif ( material.emissiveMap ) {\n\n\t\t\tuniforms.emissiveMap.value = material.emissiveMap;\n\n\t\t}\n\n\t\tif ( material.bumpMap ) {\n\n\t\t\tuniforms.bumpMap.value = material.bumpMap;\n\t\t\tuniforms.bumpScale.value = material.bumpScale;\n\n\t\t}\n\n\t\tif ( material.normalMap ) {\n\n\t\t\tuniforms.normalMap.value = material.normalMap;\n\t\t\tuniforms.normalScale.value.copy( material.normalScale );\n\n\t\t}\n\n\t\tif ( material.displacementMap ) {\n\n\t\t\tuniforms.displacementMap.value = material.displacementMap;\n\t\t\tuniforms.displacementScale.value = material.displacementScale;\n\t\t\tuniforms.displacementBias.value = material.displacementBias;\n\n\t\t}\n\n\t}\n\n\tfunction refreshUniformsStandard( uniforms, material ) {\n\n\t\tuniforms.roughness.value = material.roughness;\n\t\tuniforms.metalness.value = material.metalness;\n\n\t\tif ( material.roughnessMap ) {\n\n\t\t\tuniforms.roughnessMap.value = material.roughnessMap;\n\n\t\t}\n\n\t\tif ( material.metalnessMap ) {\n\n\t\t\tuniforms.metalnessMap.value = material.metalnessMap;\n\n\t\t}\n\n\t\tif ( material.lightMap ) {\n\n\t\t\tuniforms.lightMap.value = material.lightMap;\n\t\t\tuniforms.lightMapIntensity.value = material.lightMapIntensity;\n\n\t\t}\n\n\t\tif ( material.emissiveMap ) {\n\n\t\t\tuniforms.emissiveMap.value = material.emissiveMap;\n\n\t\t}\n\n\t\tif ( material.bumpMap ) {\n\n\t\t\tuniforms.bumpMap.value = material.bumpMap;\n\t\t\tuniforms.bumpScale.value = material.bumpScale;\n\n\t\t}\n\n\t\tif ( material.normalMap ) {\n\n\t\t\tuniforms.normalMap.value = material.normalMap;\n\t\t\tuniforms.normalScale.value.copy( material.normalScale );\n\n\t\t}\n\n\t\tif ( material.displacementMap ) {\n\n\t\t\tuniforms.displacementMap.value = material.displacementMap;\n\t\t\tuniforms.displacementScale.value = material.displacementScale;\n\t\t\tuniforms.displacementBias.value = material.displacementBias;\n\n\t\t}\n\n\t\tif ( material.envMap ) {\n\n\t\t\t//uniforms.envMap.value = material.envMap; // part of uniforms common\n\t\t\tuniforms.envMapIntensity.value = material.envMapIntensity;\n\n\t\t}\n\n\t}\n\n\tfunction refreshUniformsPhysical( uniforms, material ) {\n\n\t\tuniforms.clearCoat.value = material.clearCoat;\n\t\tuniforms.clearCoatRoughness.value = material.clearCoatRoughness;\n\n\t\trefreshUniformsStandard( uniforms, material );\n\n\t}\n\n\t// If uniforms are marked as clean, they don't need to be loaded to the GPU.\n\n\tfunction markUniformsLightsNeedsUpdate( uniforms, value ) {\n\n\t\tuniforms.ambientLightColor.needsUpdate = value;\n\n\t\tuniforms.directionalLights.needsUpdate = value;\n\t\tuniforms.pointLights.needsUpdate = value;\n\t\tuniforms.spotLights.needsUpdate = value;\n\t\tuniforms.hemisphereLights.needsUpdate = value;\n\n\t}\n\n\t// Lighting\n\n\tfunction setupShadows( lights ) {\n\n\t\tvar lightShadowsLength = 0;\n\n\t\tfor ( var i = 0, l = lights.length; i < l; i ++ ) {\n\n\t\t\tvar light = lights[ i ];\n\n\t\t\tif ( light.castShadow ) {\n\n\t\t\t\t_lights.shadows[ lightShadowsLength ++ ] = light;\n\n\t\t\t}\n\n\t\t}\n\n\t\t_lights.shadows.length = lightShadowsLength;\n\n\t}\n\n\tfunction setupLights( lights, camera ) {\n\n\t\tvar l, ll, light,\n\t\tr = 0, g = 0, b = 0,\n\t\tcolor,\n\t\tintensity,\n\t\tdistance,\n\t\tshadowMap,\n\n\t\tviewMatrix = camera.matrixWorldInverse,\n\n\t\tdirectionalLength = 0,\n\t\tpointLength = 0,\n\t\tspotLength = 0,\n\t\themiLength = 0;\n\n\t\tfor ( l = 0, ll = lights.length; l < ll; l ++ ) {\n\n\t\t\tlight = lights[ l ];\n\n\t\t\tcolor = light.color;\n\t\t\tintensity = light.intensity;\n\t\t\tdistance = light.distance;\n\n\t\t\tshadowMap = ( light.shadow && light.shadow.map ) ? light.shadow.map.texture : null;\n\n\t\t\tif ( light.isAmbientLight ) {\n\n\t\t\t\tr += color.r * intensity;\n\t\t\t\tg += color.g * intensity;\n\t\t\t\tb += color.b * intensity;\n\n\t\t\t} else if ( light.isDirectionalLight ) {\n\n\t\t\t\tvar uniforms = lightCache.get( light );\n\n\t\t\t\tuniforms.color.copy( light.color ).multiplyScalar( light.intensity );\n\t\t\t\tuniforms.direction.setFromMatrixPosition( light.matrixWorld );\n\t\t\t\t_vector3.setFromMatrixPosition( light.target.matrixWorld );\n\t\t\t\tuniforms.direction.sub( _vector3 );\n\t\t\t\tuniforms.direction.transformDirection( viewMatrix );\n\n\t\t\t\tuniforms.shadow = light.castShadow;\n\n\t\t\t\tif ( light.castShadow ) {\n\n\t\t\t\t\tuniforms.shadowBias = light.shadow.bias;\n\t\t\t\t\tuniforms.shadowRadius = light.shadow.radius;\n\t\t\t\t\tuniforms.shadowMapSize = light.shadow.mapSize;\n\n\t\t\t\t}\n\n\t\t\t\t_lights.directionalShadowMap[ directionalLength ] = shadowMap;\n\t\t\t\t_lights.directionalShadowMatrix[ directionalLength ] = light.shadow.matrix;\n\t\t\t\t_lights.directional[ directionalLength ++ ] = uniforms;\n\n\t\t\t} else if ( light.isSpotLight ) {\n\n\t\t\t\tvar uniforms = lightCache.get( light );\n\n\t\t\t\tuniforms.position.setFromMatrixPosition( light.matrixWorld );\n\t\t\t\tuniforms.position.applyMatrix4( viewMatrix );\n\n\t\t\t\tuniforms.color.copy( color ).multiplyScalar( intensity );\n\t\t\t\tuniforms.distance = distance;\n\n\t\t\t\tuniforms.direction.setFromMatrixPosition( light.matrixWorld );\n\t\t\t\t_vector3.setFromMatrixPosition( light.target.matrixWorld );\n\t\t\t\tuniforms.direction.sub( _vector3 );\n\t\t\t\tuniforms.direction.transformDirection( viewMatrix );\n\n\t\t\t\tuniforms.coneCos = Math.cos( light.angle );\n\t\t\t\tuniforms.penumbraCos = Math.cos( light.angle * ( 1 - light.penumbra ) );\n\t\t\t\tuniforms.decay = ( light.distance === 0 ) ? 0.0 : light.decay;\n\n\t\t\t\tuniforms.shadow = light.castShadow;\n\n\t\t\t\tif ( light.castShadow ) {\n\n\t\t\t\t\tuniforms.shadowBias = light.shadow.bias;\n\t\t\t\t\tuniforms.shadowRadius = light.shadow.radius;\n\t\t\t\t\tuniforms.shadowMapSize = light.shadow.mapSize;\n\n\t\t\t\t}\n\n\t\t\t\t_lights.spotShadowMap[ spotLength ] = shadowMap;\n\t\t\t\t_lights.spotShadowMatrix[ spotLength ] = light.shadow.matrix;\n\t\t\t\t_lights.spot[ spotLength ++ ] = uniforms;\n\n\t\t\t} else if ( light.isPointLight ) {\n\n\t\t\t\tvar uniforms = lightCache.get( light );\n\n\t\t\t\tuniforms.position.setFromMatrixPosition( light.matrixWorld );\n\t\t\t\tuniforms.position.applyMatrix4( viewMatrix );\n\n\t\t\t\tuniforms.color.copy( light.color ).multiplyScalar( light.intensity );\n\t\t\t\tuniforms.distance = light.distance;\n\t\t\t\tuniforms.decay = ( light.distance === 0 ) ? 0.0 : light.decay;\n\n\t\t\t\tuniforms.shadow = light.castShadow;\n\n\t\t\t\tif ( light.castShadow ) {\n\n\t\t\t\t\tuniforms.shadowBias = light.shadow.bias;\n\t\t\t\t\tuniforms.shadowRadius = light.shadow.radius;\n\t\t\t\t\tuniforms.shadowMapSize = light.shadow.mapSize;\n\n\t\t\t\t}\n\n\t\t\t\t_lights.pointShadowMap[ pointLength ] = shadowMap;\n\n\t\t\t\tif ( _lights.pointShadowMatrix[ pointLength ] === undefined ) {\n\n\t\t\t\t\t_lights.pointShadowMatrix[ pointLength ] = new Matrix4();\n\n\t\t\t\t}\n\n\t\t\t\t// for point lights we set the shadow matrix to be a translation-only matrix\n\t\t\t\t// equal to inverse of the light's position\n\t\t\t\t_vector3.setFromMatrixPosition( light.matrixWorld ).negate();\n\t\t\t\t_lights.pointShadowMatrix[ pointLength ].identity().setPosition( _vector3 );\n\n\t\t\t\t_lights.point[ pointLength ++ ] = uniforms;\n\n\t\t\t} else if ( light.isHemisphereLight ) {\n\n\t\t\t\tvar uniforms = lightCache.get( light );\n\n\t\t\t\tuniforms.direction.setFromMatrixPosition( light.matrixWorld );\n\t\t\t\tuniforms.direction.transformDirection( viewMatrix );\n\t\t\t\tuniforms.direction.normalize();\n\n\t\t\t\tuniforms.skyColor.copy( light.color ).multiplyScalar( intensity );\n\t\t\t\tuniforms.groundColor.copy( light.groundColor ).multiplyScalar( intensity );\n\n\t\t\t\t_lights.hemi[ hemiLength ++ ] = uniforms;\n\n\t\t\t}\n\n\t\t}\n\n\t\t_lights.ambient[ 0 ] = r;\n\t\t_lights.ambient[ 1 ] = g;\n\t\t_lights.ambient[ 2 ] = b;\n\n\t\t_lights.directional.length = directionalLength;\n\t\t_lights.spot.length = spotLength;\n\t\t_lights.point.length = pointLength;\n\t\t_lights.hemi.length = hemiLength;\n\n\t\t_lights.hash = directionalLength + ',' + pointLength + ',' + spotLength + ',' + hemiLength + ',' + _lights.shadows.length;\n\n\t}\n\n\t// GL state setting\n\n\tthis.setFaceCulling = function ( cullFace, frontFaceDirection ) {\n\n\t\tstate.setCullFace( cullFace );\n\t\tstate.setFlipSided( frontFaceDirection === FrontFaceDirectionCW );\n\n\t};\n\n\t// Textures\n\n\tfunction allocTextureUnit() {\n\n\t\tvar textureUnit = _usedTextureUnits;\n\n\t\tif ( textureUnit >= capabilities.maxTextures ) {\n\n\t\t\tconsole.warn( 'WebGLRenderer: trying to use ' + textureUnit + ' texture units while this GPU supports only ' + capabilities.maxTextures );\n\n\t\t}\n\n\t\t_usedTextureUnits += 1;\n\n\t\treturn textureUnit;\n\n\t}\n\n\tthis.allocTextureUnit = allocTextureUnit;\n\n\t// this.setTexture2D = setTexture2D;\n\tthis.setTexture2D = ( function() {\n\n\t\tvar warned = false;\n\n\t\t// backwards compatibility: peel texture.texture\n\t\treturn function setTexture2D( texture, slot ) {\n\n\t\t\tif ( texture && texture.isWebGLRenderTarget ) {\n\n\t\t\t\tif ( ! warned ) {\n\n\t\t\t\t\tconsole.warn( \"THREE.WebGLRenderer.setTexture2D: don't use render targets as textures. Use their .texture property instead.\" );\n\t\t\t\t\twarned = true;\n\n\t\t\t\t}\n\n\t\t\t\ttexture = texture.texture;\n\n\t\t\t}\n\n\t\t\ttextures.setTexture2D( texture, slot );\n\n\t\t};\n\n\t}() );\n\n\tthis.setTexture = ( function() {\n\n\t\tvar warned = false;\n\n\t\treturn function setTexture( texture, slot ) {\n\n\t\t\tif ( ! warned ) {\n\n\t\t\t\tconsole.warn( \"THREE.WebGLRenderer: .setTexture is deprecated, use setTexture2D instead.\" );\n\t\t\t\twarned = true;\n\n\t\t\t}\n\n\t\t\ttextures.setTexture2D( texture, slot );\n\n\t\t};\n\n\t}() );\n\n\tthis.setTextureCube = ( function() {\n\n\t\tvar warned = false;\n\n\t\treturn function setTextureCube( texture, slot ) {\n\n\t\t\t// backwards compatibility: peel texture.texture\n\t\t\tif ( texture && texture.isWebGLRenderTargetCube ) {\n\n\t\t\t\tif ( ! warned ) {\n\n\t\t\t\t\tconsole.warn( \"THREE.WebGLRenderer.setTextureCube: don't use cube render targets as textures. Use their .texture property instead.\" );\n\t\t\t\t\twarned = true;\n\n\t\t\t\t}\n\n\t\t\t\ttexture = texture.texture;\n\n\t\t\t}\n\n\t\t\t// currently relying on the fact that WebGLRenderTargetCube.texture is a Texture and NOT a CubeTexture\n\t\t\t// TODO: unify these code paths\n\t\t\tif ( ( texture && texture.isCubeTexture ) ||\n\t\t\t\t ( Array.isArray( texture.image ) && texture.image.length === 6 ) ) {\n\n\t\t\t\t// CompressedTexture can have Array in image :/\n\n\t\t\t\t// this function alone should take care of cube textures\n\t\t\t\ttextures.setTextureCube( texture, slot );\n\n\t\t\t} else {\n\n\t\t\t\t// assumed: texture property of THREE.WebGLRenderTargetCube\n\n\t\t\t\ttextures.setTextureCubeDynamic( texture, slot );\n\n\t\t\t}\n\n\t\t};\n\n\t}() );\n\n\tthis.getCurrentRenderTarget = function() {\n\n\t\treturn _currentRenderTarget;\n\n\t};\n\n\tthis.setRenderTarget = function ( renderTarget ) {\n\n\t\t_currentRenderTarget = renderTarget;\n\n\t\tif ( renderTarget && properties.get( renderTarget ).__webglFramebuffer === undefined ) {\n\n\t\t\ttextures.setupRenderTarget( renderTarget );\n\n\t\t}\n\n\t\tvar isCube = ( renderTarget && renderTarget.isWebGLRenderTargetCube );\n\t\tvar framebuffer;\n\n\t\tif ( renderTarget ) {\n\n\t\t\tvar renderTargetProperties = properties.get( renderTarget );\n\n\t\t\tif ( isCube ) {\n\n\t\t\t\tframebuffer = renderTargetProperties.__webglFramebuffer[ renderTarget.activeCubeFace ];\n\n\t\t\t} else {\n\n\t\t\t\tframebuffer = renderTargetProperties.__webglFramebuffer;\n\n\t\t\t}\n\n\t\t\t_currentScissor.copy( renderTarget.scissor );\n\t\t\t_currentScissorTest = renderTarget.scissorTest;\n\n\t\t\t_currentViewport.copy( renderTarget.viewport );\n\n\t\t} else {\n\n\t\t\tframebuffer = null;\n\n\t\t\t_currentScissor.copy( _scissor ).multiplyScalar( _pixelRatio );\n\t\t\t_currentScissorTest = _scissorTest;\n\n\t\t\t_currentViewport.copy( _viewport ).multiplyScalar( _pixelRatio );\n\n\t\t}\n\n\t\tif ( _currentFramebuffer !== framebuffer ) {\n\n\t\t\t_gl.bindFramebuffer( _gl.FRAMEBUFFER, framebuffer );\n\t\t\t_currentFramebuffer = framebuffer;\n\n\t\t}\n\n\t\tstate.scissor( _currentScissor );\n\t\tstate.setScissorTest( _currentScissorTest );\n\n\t\tstate.viewport( _currentViewport );\n\n\t\tif ( isCube ) {\n\n\t\t\tvar textureProperties = properties.get( renderTarget.texture );\n\t\t\t_gl.framebufferTexture2D( _gl.FRAMEBUFFER, _gl.COLOR_ATTACHMENT0, _gl.TEXTURE_CUBE_MAP_POSITIVE_X + renderTarget.activeCubeFace, textureProperties.__webglTexture, renderTarget.activeMipMapLevel );\n\n\t\t}\n\n\t};\n\n\tthis.readRenderTargetPixels = function ( renderTarget, x, y, width, height, buffer ) {\n\n\t\tif ( ( renderTarget && renderTarget.isWebGLRenderTarget ) === false ) {\n\n\t\t\tconsole.error( 'THREE.WebGLRenderer.readRenderTargetPixels: renderTarget is not THREE.WebGLRenderTarget.' );\n\t\t\treturn;\n\n\t\t}\n\n\t\tvar framebuffer = properties.get( renderTarget ).__webglFramebuffer;\n\n\t\tif ( framebuffer ) {\n\n\t\t\tvar restore = false;\n\n\t\t\tif ( framebuffer !== _currentFramebuffer ) {\n\n\t\t\t\t_gl.bindFramebuffer( _gl.FRAMEBUFFER, framebuffer );\n\n\t\t\t\trestore = true;\n\n\t\t\t}\n\n\t\t\ttry {\n\n\t\t\t\tvar texture = renderTarget.texture;\n\t\t\t\tvar textureFormat = texture.format;\n\t\t\t\tvar textureType = texture.type;\n\n\t\t\t\tif ( textureFormat !== RGBAFormat && paramThreeToGL( textureFormat ) !== _gl.getParameter( _gl.IMPLEMENTATION_COLOR_READ_FORMAT ) ) {\n\n\t\t\t\t\tconsole.error( 'THREE.WebGLRenderer.readRenderTargetPixels: renderTarget is not in RGBA or implementation defined format.' );\n\t\t\t\t\treturn;\n\n\t\t\t\t}\n\n\t\t\t\tif ( textureType !== UnsignedByteType && paramThreeToGL( textureType ) !== _gl.getParameter( _gl.IMPLEMENTATION_COLOR_READ_TYPE ) && // IE11, Edge and Chrome Mac < 52 (#9513)\n\t\t\t\t ! ( textureType === FloatType && ( extensions.get( 'OES_texture_float' ) || extensions.get( 'WEBGL_color_buffer_float' ) ) ) && // Chrome Mac >= 52 and Firefox\n\t\t\t\t ! ( textureType === HalfFloatType && extensions.get( 'EXT_color_buffer_half_float' ) ) ) {\n\n\t\t\t\t\tconsole.error( 'THREE.WebGLRenderer.readRenderTargetPixels: renderTarget is not in UnsignedByteType or implementation defined type.' );\n\t\t\t\t\treturn;\n\n\t\t\t\t}\n\n\t\t\t\tif ( _gl.checkFramebufferStatus( _gl.FRAMEBUFFER ) === _gl.FRAMEBUFFER_COMPLETE ) {\n\n\t\t\t\t\t// the following if statement ensures valid read requests (no out-of-bounds pixels, see #8604)\n\n\t\t\t\t\tif ( ( x >= 0 && x <= ( renderTarget.width - width ) ) && ( y >= 0 && y <= ( renderTarget.height - height ) ) ) {\n\n\t\t\t\t\t\t_gl.readPixels( x, y, width, height, paramThreeToGL( textureFormat ), paramThreeToGL( textureType ), buffer );\n\n\t\t\t\t\t}\n\n\t\t\t\t} else {\n\n\t\t\t\t\tconsole.error( 'THREE.WebGLRenderer.readRenderTargetPixels: readPixels from renderTarget failed. Framebuffer not complete.' );\n\n\t\t\t\t}\n\n\t\t\t} finally {\n\n\t\t\t\tif ( restore ) {\n\n\t\t\t\t\t_gl.bindFramebuffer( _gl.FRAMEBUFFER, _currentFramebuffer );\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t}\n\n\t};\n\n\t// Map three.js constants to WebGL constants\n\n\tfunction paramThreeToGL( p ) {\n\n\t\tvar extension;\n\n\t\tif ( p === RepeatWrapping ) return _gl.REPEAT;\n\t\tif ( p === ClampToEdgeWrapping ) return _gl.CLAMP_TO_EDGE;\n\t\tif ( p === MirroredRepeatWrapping ) return _gl.MIRRORED_REPEAT;\n\n\t\tif ( p === NearestFilter ) return _gl.NEAREST;\n\t\tif ( p === NearestMipMapNearestFilter ) return _gl.NEAREST_MIPMAP_NEAREST;\n\t\tif ( p === NearestMipMapLinearFilter ) return _gl.NEAREST_MIPMAP_LINEAR;\n\n\t\tif ( p === LinearFilter ) return _gl.LINEAR;\n\t\tif ( p === LinearMipMapNearestFilter ) return _gl.LINEAR_MIPMAP_NEAREST;\n\t\tif ( p === LinearMipMapLinearFilter ) return _gl.LINEAR_MIPMAP_LINEAR;\n\n\t\tif ( p === UnsignedByteType ) return _gl.UNSIGNED_BYTE;\n\t\tif ( p === UnsignedShort4444Type ) return _gl.UNSIGNED_SHORT_4_4_4_4;\n\t\tif ( p === UnsignedShort5551Type ) return _gl.UNSIGNED_SHORT_5_5_5_1;\n\t\tif ( p === UnsignedShort565Type ) return _gl.UNSIGNED_SHORT_5_6_5;\n\n\t\tif ( p === ByteType ) return _gl.BYTE;\n\t\tif ( p === ShortType ) return _gl.SHORT;\n\t\tif ( p === UnsignedShortType ) return _gl.UNSIGNED_SHORT;\n\t\tif ( p === IntType ) return _gl.INT;\n\t\tif ( p === UnsignedIntType ) return _gl.UNSIGNED_INT;\n\t\tif ( p === FloatType ) return _gl.FLOAT;\n\n\t\tif ( p === HalfFloatType ) {\n\n\t\t\textension = extensions.get( 'OES_texture_half_float' );\n\n\t\t\tif ( extension !== null ) return extension.HALF_FLOAT_OES;\n\n\t\t}\n\n\t\tif ( p === AlphaFormat ) return _gl.ALPHA;\n\t\tif ( p === RGBFormat ) return _gl.RGB;\n\t\tif ( p === RGBAFormat ) return _gl.RGBA;\n\t\tif ( p === LuminanceFormat ) return _gl.LUMINANCE;\n\t\tif ( p === LuminanceAlphaFormat ) return _gl.LUMINANCE_ALPHA;\n\t\tif ( p === DepthFormat ) return _gl.DEPTH_COMPONENT;\n\t\tif ( p === DepthStencilFormat ) return _gl.DEPTH_STENCIL;\n\n\t\tif ( p === AddEquation ) return _gl.FUNC_ADD;\n\t\tif ( p === SubtractEquation ) return _gl.FUNC_SUBTRACT;\n\t\tif ( p === ReverseSubtractEquation ) return _gl.FUNC_REVERSE_SUBTRACT;\n\n\t\tif ( p === ZeroFactor ) return _gl.ZERO;\n\t\tif ( p === OneFactor ) return _gl.ONE;\n\t\tif ( p === SrcColorFactor ) return _gl.SRC_COLOR;\n\t\tif ( p === OneMinusSrcColorFactor ) return _gl.ONE_MINUS_SRC_COLOR;\n\t\tif ( p === SrcAlphaFactor ) return _gl.SRC_ALPHA;\n\t\tif ( p === OneMinusSrcAlphaFactor ) return _gl.ONE_MINUS_SRC_ALPHA;\n\t\tif ( p === DstAlphaFactor ) return _gl.DST_ALPHA;\n\t\tif ( p === OneMinusDstAlphaFactor ) return _gl.ONE_MINUS_DST_ALPHA;\n\n\t\tif ( p === DstColorFactor ) return _gl.DST_COLOR;\n\t\tif ( p === OneMinusDstColorFactor ) return _gl.ONE_MINUS_DST_COLOR;\n\t\tif ( p === SrcAlphaSaturateFactor ) return _gl.SRC_ALPHA_SATURATE;\n\n\t\tif ( p === RGB_S3TC_DXT1_Format || p === RGBA_S3TC_DXT1_Format ||\n\t\t\tp === RGBA_S3TC_DXT3_Format || p === RGBA_S3TC_DXT5_Format ) {\n\n\t\t\textension = extensions.get( 'WEBGL_compressed_texture_s3tc' );\n\n\t\t\tif ( extension !== null ) {\n\n\t\t\t\tif ( p === RGB_S3TC_DXT1_Format ) return extension.COMPRESSED_RGB_S3TC_DXT1_EXT;\n\t\t\t\tif ( p === RGBA_S3TC_DXT1_Format ) return extension.COMPRESSED_RGBA_S3TC_DXT1_EXT;\n\t\t\t\tif ( p === RGBA_S3TC_DXT3_Format ) return extension.COMPRESSED_RGBA_S3TC_DXT3_EXT;\n\t\t\t\tif ( p === RGBA_S3TC_DXT5_Format ) return extension.COMPRESSED_RGBA_S3TC_DXT5_EXT;\n\n\t\t\t}\n\n\t\t}\n\n\t\tif ( p === RGB_PVRTC_4BPPV1_Format || p === RGB_PVRTC_2BPPV1_Format ||\n\t\t\t p === RGBA_PVRTC_4BPPV1_Format || p === RGBA_PVRTC_2BPPV1_Format ) {\n\n\t\t\textension = extensions.get( 'WEBGL_compressed_texture_pvrtc' );\n\n\t\t\tif ( extension !== null ) {\n\n\t\t\t\tif ( p === RGB_PVRTC_4BPPV1_Format ) return extension.COMPRESSED_RGB_PVRTC_4BPPV1_IMG;\n\t\t\t\tif ( p === RGB_PVRTC_2BPPV1_Format ) return extension.COMPRESSED_RGB_PVRTC_2BPPV1_IMG;\n\t\t\t\tif ( p === RGBA_PVRTC_4BPPV1_Format ) return extension.COMPRESSED_RGBA_PVRTC_4BPPV1_IMG;\n\t\t\t\tif ( p === RGBA_PVRTC_2BPPV1_Format ) return extension.COMPRESSED_RGBA_PVRTC_2BPPV1_IMG;\n\n\t\t\t}\n\n\t\t}\n\n\t\tif ( p === RGB_ETC1_Format ) {\n\n\t\t\textension = extensions.get( 'WEBGL_compressed_texture_etc1' );\n\n\t\t\tif ( extension !== null ) return extension.COMPRESSED_RGB_ETC1_WEBGL;\n\n\t\t}\n\n\t\tif ( p === MinEquation || p === MaxEquation ) {\n\n\t\t\textension = extensions.get( 'EXT_blend_minmax' );\n\n\t\t\tif ( extension !== null ) {\n\n\t\t\t\tif ( p === MinEquation ) return extension.MIN_EXT;\n\t\t\t\tif ( p === MaxEquation ) return extension.MAX_EXT;\n\n\t\t\t}\n\n\t\t}\n\n\t\tif ( p === UnsignedInt248Type ) {\n\n\t\t\textension = extensions.get( 'WEBGL_depth_texture' );\n\n\t\t\tif ( extension !== null ) return extension.UNSIGNED_INT_24_8_WEBGL;\n\n\t\t}\n\n\t\treturn 0;\n\n\t}\n\n}\n\nexport { WebGLRenderer };\n","/**\n * @author mrdoob / http://mrdoob.com/\n */\n\nimport { REVISION } from '../constants';\nimport { WebGLExtensions } from './webgl/WebGLExtensions';\nimport { WebGLState } from './webgl/WebGLState';\nimport { Color } from '../math/Color';\nimport { Vector4 } from '../math/Vector4';\n\nfunction WebGL2Renderer( parameters ) {\n\n\tconsole.log( 'THREE.WebGL2Renderer', REVISION );\n\n\tparameters = parameters || {};\n\n\tvar _canvas = parameters.canvas !== undefined ? parameters.canvas : document.createElementNS( 'http://www.w3.org/1999/xhtml', 'canvas' ),\n\t_context = parameters.context !== undefined ? parameters.context : null,\n\n\t_alpha = parameters.alpha !== undefined ? parameters.alpha : false,\n\t_depth = parameters.depth !== undefined ? parameters.depth : true,\n\t_stencil = parameters.stencil !== undefined ? parameters.stencil : true,\n\t_antialias = parameters.antialias !== undefined ? parameters.antialias : false,\n\t_premultipliedAlpha = parameters.premultipliedAlpha !== undefined ? parameters.premultipliedAlpha : true,\n\t_preserveDrawingBuffer = parameters.preserveDrawingBuffer !== undefined ? parameters.preserveDrawingBuffer : false;\n\n\t// initialize\n\n\tvar gl;\n\n\ttry {\n\n\t\tvar attributes = {\n\t\t\talpha: _alpha,\n\t\t\tdepth: _depth,\n\t\t\tstencil: _stencil,\n\t\t\tantialias: _antialias,\n\t\t\tpremultipliedAlpha: _premultipliedAlpha,\n\t\t\tpreserveDrawingBuffer: _preserveDrawingBuffer\n\t\t};\n\n\t\tgl = _context || _canvas.getContext( 'webgl2', attributes );\n\n\t\tif ( gl === null ) {\n\n\t\t\tif ( _canvas.getContext( 'webgl2' ) !== null ) {\n\n\t\t\t\tthrow 'Error creating WebGL2 context with your selected attributes.';\n\n\t\t\t} else {\n\n\t\t\t\tthrow 'Error creating WebGL2 context.';\n\n\t\t\t}\n\n\t\t}\n\n\t\t_canvas.addEventListener( 'webglcontextlost', onContextLost, false );\n\n\t} catch ( error ) {\n\n\t\tconsole.error( 'THREE.WebGL2Renderer: ' + error );\n\n\t}\n\n\t//\n\n\tvar _this = this,\n\n\t\t_autoClear = true,\n\t\t_autoClearColor = true,\n\t\t_autoClearDepth = true,\n\t\t_autoClearStencil = true,\n\n\t\t_clearColor = new Color( 0x000000 ),\n\t\t_clearAlpha = 0,\n\n\t\t_width = _canvas.width,\n\t\t_height = _canvas.height,\n\n\t\t_pixelRatio = 1,\n\n\t\t_viewport = new Vector4( 0, 0, _width, _height );\n\n\tvar extensions = new WebGLExtensions( gl );\n\tvar state = new WebGLState( gl, extensions, function () {} );\n\n\t//\n\n\tfunction clear( color, depth, stencil ) {\n\n\t\tvar bits = 0;\n\n\t\tif ( color === undefined || color ) bits |= gl.COLOR_BUFFER_BIT;\n\t\tif ( depth === undefined || depth ) bits |= gl.DEPTH_BUFFER_BIT;\n\t\tif ( stencil === undefined || stencil ) bits |= gl.STENCIL_BUFFER_BIT;\n\n\t\tgl.clear( bits );\n\n\t}\n\n\tfunction setPixelRatio( value ) {\n\n\t\tif ( value === undefined ) return;\n\n\t\t_pixelRatio = value;\n\n\t\tsetSize( _viewport.z, _viewport.w, false );\n\n\t}\n\n\tfunction setSize( width, height, updateStyle ) {\n\n\t\t_width = width;\n\t\t_height = height;\n\n\t\t_canvas.width = width * _pixelRatio;\n\t\t_canvas.height = height * _pixelRatio;\n\n\t\tif ( updateStyle !== false ) {\n\n\t\t\t_canvas.style.width = width + 'px';\n\t\t\t_canvas.style.height = height + 'px';\n\n\t\t}\n\n\t\tsetViewport( 0, 0, width, height );\n\n\t}\n\n\tfunction setViewport( x, y, width, height ) {\n\n\t\tstate.viewport( _viewport.set( x, y, width, height ) );\n\n\t}\n\n\tfunction render( scene, camera ) {\n\n\t\tif ( camera !== undefined && camera.isCamera !== true ) {\n\n\t\t\tconsole.error( 'THREE.WebGL2Renderer.render: camera is not an instance of THREE.Camera.' );\n\t\t\treturn;\n\n\t\t}\n\n\t\tvar background = scene.background;\n\t\tvar forceClear = false;\n\n\t\tif ( background === null ) {\n\n\t\t\tstate.buffers.color.setClear( _clearColor.r, _clearColor.g, _clearColor.b, _clearAlpha, _premultipliedAlpha );\n\n\t\t} else if ( background && background.isColor ) {\n\n\t\t\tstate.buffers.color.setClear( background.r, background.g, background.b, 1, _premultipliedAlpha );\n\t\t\tforceClear = true;\n\n\t\t}\n\n\t\tif ( _autoClear || forceClear ) {\n\n\t\t\tthis.clear( _autoClearColor, _autoClearDepth, _autoClearStencil );\n\n\t\t}\n\n\t}\n\n\tfunction onContextLost( event ) {\n\n\t\tevent.preventDefault();\n\n\t}\n\n\treturn {\n\t\tdomElement: _canvas,\n\n\t\tclear: clear,\n\t\tsetPixelRatio: setPixelRatio,\n\t\tsetSize: setSize,\n\t\trender: render\n\t}\n\n}\n\nexport { WebGL2Renderer };\n","import { Color } from '../math/Color';\n\n/**\n * @author mrdoob / http://mrdoob.com/\n * @author alteredq / http://alteredqualia.com/\n */\n\nfunction FogExp2 ( color, density ) {\n\n\tthis.name = '';\n\n\tthis.color = new Color( color );\n\tthis.density = ( density !== undefined ) ? density : 0.00025;\n\n}\n\nFogExp2.prototype.isFogExp2 = true;\n\nFogExp2.prototype.clone = function () {\n\n\treturn new FogExp2( this.color.getHex(), this.density );\n\n};\n\nFogExp2.prototype.toJSON = function ( meta ) {\n\n\treturn {\n\t\ttype: 'FogExp2',\n\t\tcolor: this.color.getHex(),\n\t\tdensity: this.density\n\t};\n\n};\n\nexport { FogExp2 };\n","import { Color } from '../math/Color';\n\n/**\n * @author mrdoob / http://mrdoob.com/\n * @author alteredq / http://alteredqualia.com/\n */\n\nfunction Fog ( color, near, far ) {\n\n\tthis.name = '';\n\n\tthis.color = new Color( color );\n\n\tthis.near = ( near !== undefined ) ? near : 1;\n\tthis.far = ( far !== undefined ) ? far : 1000;\n\n}\n\nFog.prototype.isFog = true;\n\nFog.prototype.clone = function () {\n\n\treturn new Fog( this.color.getHex(), this.near, this.far );\n\n};\n\nFog.prototype.toJSON = function ( meta ) {\n\n\treturn {\n\t\ttype: 'Fog',\n\t\tcolor: this.color.getHex(),\n\t\tnear: this.near,\n\t\tfar: this.far\n\t};\n\n};\n\nexport { Fog };\n","import { Object3D } from '../core/Object3D';\n\n/**\n * @author mrdoob / http://mrdoob.com/\n */\n\nfunction Scene () {\n\n\tObject3D.call( this );\n\n\tthis.type = 'Scene';\n\n\tthis.background = null;\n\tthis.fog = null;\n\tthis.overrideMaterial = null;\n\n\tthis.autoUpdate = true; // checked by the renderer\n\n}\n\nScene.prototype = Object.create( Object3D.prototype );\n\nScene.prototype.constructor = Scene;\n\nScene.prototype.copy = function ( source, recursive ) {\n\n\tObject3D.prototype.copy.call( this, source, recursive );\n\n\tif ( source.background !== null ) this.background = source.background.clone();\n\tif ( source.fog !== null ) this.fog = source.fog.clone();\n\tif ( source.overrideMaterial !== null ) this.overrideMaterial = source.overrideMaterial.clone();\n\n\tthis.autoUpdate = source.autoUpdate;\n\tthis.matrixAutoUpdate = source.matrixAutoUpdate;\n\n\treturn this;\n\n};\n\nScene.prototype.toJSON = function ( meta ) {\n\n\tvar data = Object3D.prototype.toJSON.call( this, meta );\n\n\tif ( this.background !== null ) data.object.background = this.background.toJSON( meta );\n\tif ( this.fog !== null ) data.object.fog = this.fog.toJSON();\n\n\treturn data;\n\n};\n\nexport { Scene };\n","import { Object3D } from '../core/Object3D';\nimport { NormalBlending } from '../constants';\nimport { Color } from '../math/Color';\nimport { Vector3 } from '../math/Vector3';\n\n/**\n * @author mikael emtinger / http://gomo.se/\n * @author alteredq / http://alteredqualia.com/\n */\n\nfunction LensFlare( texture, size, distance, blending, color ) {\n\n\tObject3D.call( this );\n\n\tthis.lensFlares = [];\n\n\tthis.positionScreen = new Vector3();\n\tthis.customUpdateCallback = undefined;\n\n\tif ( texture !== undefined ) {\n\n\t\tthis.add( texture, size, distance, blending, color );\n\n\t}\n\n}\n\nLensFlare.prototype = Object.assign( Object.create( Object3D.prototype ), {\n\n\tconstructor: LensFlare,\n\n\tisLensFlare: true,\n\n\tcopy: function ( source ) {\n\n\t\tObject3D.prototype.copy.call( this, source );\n\n\t\tthis.positionScreen.copy( source.positionScreen );\n\t\tthis.customUpdateCallback = source.customUpdateCallback;\n\n\t\tfor ( var i = 0, l = source.lensFlares.length; i < l; i ++ ) {\n\n\t\t\tthis.lensFlares.push( source.lensFlares[ i ] );\n\n\t\t}\n\n\t\treturn this;\n\n\t},\n\n\tadd: function ( texture, size, distance, blending, color, opacity ) {\n\n\t\tif ( size === undefined ) size = - 1;\n\t\tif ( distance === undefined ) distance = 0;\n\t\tif ( opacity === undefined ) opacity = 1;\n\t\tif ( color === undefined ) color = new Color( 0xffffff );\n\t\tif ( blending === undefined ) blending = NormalBlending;\n\n\t\tdistance = Math.min( distance, Math.max( 0, distance ) );\n\n\t\tthis.lensFlares.push( {\n\t\t\ttexture: texture,\t// THREE.Texture\n\t\t\tsize: size, \t\t// size in pixels (-1 = use texture.width)\n\t\t\tdistance: distance, \t// distance (0-1) from light source (0=at light source)\n\t\t\tx: 0, y: 0, z: 0,\t// screen position (-1 => 1) z = 0 is in front z = 1 is back\n\t\t\tscale: 1, \t\t// scale\n\t\t\trotation: 0, \t\t// rotation\n\t\t\topacity: opacity,\t// opacity\n\t\t\tcolor: color,\t\t// color\n\t\t\tblending: blending\t// blending\n\t\t} );\n\n\t},\n\n\t/*\n\t * Update lens flares update positions on all flares based on the screen position\n\t * Set myLensFlare.customUpdateCallback to alter the flares in your project specific way.\n\t */\n\n\tupdateLensFlares: function () {\n\n\t\tvar f, fl = this.lensFlares.length;\n\t\tvar flare;\n\t\tvar vecX = - this.positionScreen.x * 2;\n\t\tvar vecY = - this.positionScreen.y * 2;\n\n\t\tfor ( f = 0; f < fl; f ++ ) {\n\n\t\t\tflare = this.lensFlares[ f ];\n\n\t\t\tflare.x = this.positionScreen.x + vecX * flare.distance;\n\t\t\tflare.y = this.positionScreen.y + vecY * flare.distance;\n\n\t\t\tflare.wantedRotation = flare.x * Math.PI * 0.25;\n\t\t\tflare.rotation += ( flare.wantedRotation - flare.rotation ) * 0.25;\n\n\t\t}\n\n\t}\n\n} );\n\n\nexport { LensFlare };\n","import { Material } from './Material';\nimport { Color } from '../math/Color';\n\n/**\n * @author alteredq / http://alteredqualia.com/\n *\n * parameters = {\n * color: ,\n * opacity: ,\n * map: new THREE.Texture( ),\n *\n *\tuvOffset: new THREE.Vector2(),\n *\tuvScale: new THREE.Vector2()\n * }\n */\n\nfunction SpriteMaterial( parameters ) {\n\n\tMaterial.call( this );\n\n\tthis.type = 'SpriteMaterial';\n\n\tthis.color = new Color( 0xffffff );\n\tthis.map = null;\n\n\tthis.rotation = 0;\n\n\tthis.fog = false;\n\tthis.lights = false;\n\n\tthis.setValues( parameters );\n\n}\n\nSpriteMaterial.prototype = Object.create( Material.prototype );\nSpriteMaterial.prototype.constructor = SpriteMaterial;\n\nSpriteMaterial.prototype.copy = function ( source ) {\n\n\tMaterial.prototype.copy.call( this, source );\n\n\tthis.color.copy( source.color );\n\tthis.map = source.map;\n\n\tthis.rotation = source.rotation;\n\n\treturn this;\n\n};\n\n\nexport { SpriteMaterial };\n","import { Vector3 } from '../math/Vector3';\nimport { Object3D } from '../core/Object3D';\nimport { SpriteMaterial } from '../materials/SpriteMaterial';\n\n/**\n * @author mikael emtinger / http://gomo.se/\n * @author alteredq / http://alteredqualia.com/\n */\n\nfunction Sprite( material ) {\n\n\tObject3D.call( this );\n\n\tthis.type = 'Sprite';\n\n\tthis.material = ( material !== undefined ) ? material : new SpriteMaterial();\n\n}\n\nSprite.prototype = Object.assign( Object.create( Object3D.prototype ), {\n\n\tconstructor: Sprite,\n\n\tisSprite: true,\n\n\traycast: ( function () {\n\n\t\tvar matrixPosition = new Vector3();\n\n\t\treturn function raycast( raycaster, intersects ) {\n\n\t\t\tmatrixPosition.setFromMatrixPosition( this.matrixWorld );\n\n\t\t\tvar distanceSq = raycaster.ray.distanceSqToPoint( matrixPosition );\n\t\t\tvar guessSizeSq = this.scale.x * this.scale.y / 4;\n\n\t\t\tif ( distanceSq > guessSizeSq ) {\n\n\t\t\t\treturn;\n\n\t\t\t}\n\n\t\t\tintersects.push( {\n\n\t\t\t\tdistance: Math.sqrt( distanceSq ),\n\t\t\t\tpoint: this.position,\n\t\t\t\tface: null,\n\t\t\t\tobject: this\n\n\t\t\t} );\n\n\t\t};\n\n\t}() ),\n\n\tclone: function () {\n\n\t\treturn new this.constructor( this.material ).copy( this );\n\n\t}\n\n} );\n\n\nexport { Sprite };\n","import { Vector3 } from '../math/Vector3';\nimport { Object3D } from '../core/Object3D';\n\n/**\n * @author mikael emtinger / http://gomo.se/\n * @author alteredq / http://alteredqualia.com/\n * @author mrdoob / http://mrdoob.com/\n */\n\nfunction LOD() {\n\n\tObject3D.call( this );\n\n\tthis.type = 'LOD';\n\n\tObject.defineProperties( this, {\n\t\tlevels: {\n\t\t\tenumerable: true,\n\t\t\tvalue: []\n\t\t}\n\t} );\n\n}\n\n\nLOD.prototype = Object.assign( Object.create( Object3D.prototype ), {\n\n\tconstructor: LOD,\n\n\tcopy: function ( source ) {\n\n\t\tObject3D.prototype.copy.call( this, source, false );\n\n\t\tvar levels = source.levels;\n\n\t\tfor ( var i = 0, l = levels.length; i < l; i ++ ) {\n\n\t\t\tvar level = levels[ i ];\n\n\t\t\tthis.addLevel( level.object.clone(), level.distance );\n\n\t\t}\n\n\t\treturn this;\n\n\t},\n\n\taddLevel: function ( object, distance ) {\n\n\t\tif ( distance === undefined ) distance = 0;\n\n\t\tdistance = Math.abs( distance );\n\n\t\tvar levels = this.levels;\n\n\t\tfor ( var l = 0; l < levels.length; l ++ ) {\n\n\t\t\tif ( distance < levels[ l ].distance ) {\n\n\t\t\t\tbreak;\n\n\t\t\t}\n\n\t\t}\n\n\t\tlevels.splice( l, 0, { distance: distance, object: object } );\n\n\t\tthis.add( object );\n\n\t},\n\n\tgetObjectForDistance: function ( distance ) {\n\n\t\tvar levels = this.levels;\n\n\t\tfor ( var i = 1, l = levels.length; i < l; i ++ ) {\n\n\t\t\tif ( distance < levels[ i ].distance ) {\n\n\t\t\t\tbreak;\n\n\t\t\t}\n\n\t\t}\n\n\t\treturn levels[ i - 1 ].object;\n\n\t},\n\n\traycast: ( function () {\n\n\t\tvar matrixPosition = new Vector3();\n\n\t\treturn function raycast( raycaster, intersects ) {\n\n\t\t\tmatrixPosition.setFromMatrixPosition( this.matrixWorld );\n\n\t\t\tvar distance = raycaster.ray.origin.distanceTo( matrixPosition );\n\n\t\t\tthis.getObjectForDistance( distance ).raycast( raycaster, intersects );\n\n\t\t};\n\n\t}() ),\n\n\tupdate: function () {\n\n\t\tvar v1 = new Vector3();\n\t\tvar v2 = new Vector3();\n\n\t\treturn function update( camera ) {\n\n\t\t\tvar levels = this.levels;\n\n\t\t\tif ( levels.length > 1 ) {\n\n\t\t\t\tv1.setFromMatrixPosition( camera.matrixWorld );\n\t\t\t\tv2.setFromMatrixPosition( this.matrixWorld );\n\n\t\t\t\tvar distance = v1.distanceTo( v2 );\n\n\t\t\t\tlevels[ 0 ].object.visible = true;\n\n\t\t\t\tfor ( var i = 1, l = levels.length; i < l; i ++ ) {\n\n\t\t\t\t\tif ( distance >= levels[ i ].distance ) {\n\n\t\t\t\t\t\tlevels[ i - 1 ].object.visible = false;\n\t\t\t\t\t\tlevels[ i ].object.visible = true;\n\n\t\t\t\t\t} else {\n\n\t\t\t\t\t\tbreak;\n\n\t\t\t\t\t}\n\n\t\t\t\t}\n\n\t\t\t\tfor ( ; i < l; i ++ ) {\n\n\t\t\t\t\tlevels[ i ].object.visible = false;\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t};\n\n\t}(),\n\n\ttoJSON: function ( meta ) {\n\n\t\tvar data = Object3D.prototype.toJSON.call( this, meta );\n\n\t\tdata.object.levels = [];\n\n\t\tvar levels = this.levels;\n\n\t\tfor ( var i = 0, l = levels.length; i < l; i ++ ) {\n\n\t\t\tvar level = levels[ i ];\n\n\t\t\tdata.object.levels.push( {\n\t\t\t\tobject: level.object.uuid,\n\t\t\t\tdistance: level.distance\n\t\t\t} );\n\n\t\t}\n\n\t\treturn data;\n\n\t}\n\n} );\n\n\nexport { LOD };\n","import { Texture } from './Texture';\nimport { NearestFilter } from '../constants';\n\n/**\n * @author alteredq / http://alteredqualia.com/\n */\n\nfunction DataTexture( data, width, height, format, type, mapping, wrapS, wrapT, magFilter, minFilter, anisotropy, encoding ) {\n\n\tTexture.call( this, null, mapping, wrapS, wrapT, magFilter, minFilter, format, type, anisotropy, encoding );\n\n\tthis.image = { data: data, width: width, height: height };\n\n\tthis.magFilter = magFilter !== undefined ? magFilter : NearestFilter;\n\tthis.minFilter = minFilter !== undefined ? minFilter : NearestFilter;\n\n\tthis.generateMipmaps = false;\n\tthis.flipY = false;\n\tthis.unpackAlignment = 1;\n\n}\n\nDataTexture.prototype = Object.create( Texture.prototype );\nDataTexture.prototype.constructor = DataTexture;\n\nDataTexture.prototype.isDataTexture = true;\n\n\nexport { DataTexture };\n","import { Matrix4 } from '../math/Matrix4';\nimport { FloatType, RGBAFormat } from '../constants';\nimport { DataTexture } from '../textures/DataTexture';\nimport { _Math } from '../math/Math';\n\n/**\n * @author mikael emtinger / http://gomo.se/\n * @author alteredq / http://alteredqualia.com/\n * @author michael guerrero / http://realitymeltdown.com\n * @author ikerr / http://verold.com\n */\n\nfunction Skeleton( bones, boneInverses, useVertexTexture ) {\n\n\tthis.useVertexTexture = useVertexTexture !== undefined ? useVertexTexture : true;\n\n\tthis.identityMatrix = new Matrix4();\n\n\t// copy the bone array\n\n\tbones = bones || [];\n\n\tthis.bones = bones.slice( 0 );\n\n\t// create a bone texture or an array of floats\n\n\tif ( this.useVertexTexture ) {\n\n\t\t// layout (1 matrix = 4 pixels)\n\t\t// RGBA RGBA RGBA RGBA (=> column1, column2, column3, column4)\n\t\t// with 8x8 pixel texture max 16 bones * 4 pixels = (8 * 8)\n\t\t// 16x16 pixel texture max 64 bones * 4 pixels = (16 * 16)\n\t\t// 32x32 pixel texture max 256 bones * 4 pixels = (32 * 32)\n\t\t// 64x64 pixel texture max 1024 bones * 4 pixels = (64 * 64)\n\n\n\t\tvar size = Math.sqrt( this.bones.length * 4 ); // 4 pixels needed for 1 matrix\n\t\tsize = _Math.nextPowerOfTwo( Math.ceil( size ) );\n\t\tsize = Math.max( size, 4 );\n\n\t\tthis.boneTextureWidth = size;\n\t\tthis.boneTextureHeight = size;\n\n\t\tthis.boneMatrices = new Float32Array( this.boneTextureWidth * this.boneTextureHeight * 4 ); // 4 floats per RGBA pixel\n\t\tthis.boneTexture = new DataTexture( this.boneMatrices, this.boneTextureWidth, this.boneTextureHeight, RGBAFormat, FloatType );\n\n\t} else {\n\n\t\tthis.boneMatrices = new Float32Array( 16 * this.bones.length );\n\n\t}\n\n\t// use the supplied bone inverses or calculate the inverses\n\n\tif ( boneInverses === undefined ) {\n\n\t\tthis.calculateInverses();\n\n\t} else {\n\n\t\tif ( this.bones.length === boneInverses.length ) {\n\n\t\t\tthis.boneInverses = boneInverses.slice( 0 );\n\n\t\t} else {\n\n\t\t\tconsole.warn( 'THREE.Skeleton bonInverses is the wrong length.' );\n\n\t\t\tthis.boneInverses = [];\n\n\t\t\tfor ( var b = 0, bl = this.bones.length; b < bl; b ++ ) {\n\n\t\t\t\tthis.boneInverses.push( new Matrix4() );\n\n\t\t\t}\n\n\t\t}\n\n\t}\n\n}\n\nObject.assign( Skeleton.prototype, {\n\n\tcalculateInverses: function () {\n\n\t\tthis.boneInverses = [];\n\n\t\tfor ( var b = 0, bl = this.bones.length; b < bl; b ++ ) {\n\n\t\t\tvar inverse = new Matrix4();\n\n\t\t\tif ( this.bones[ b ] ) {\n\n\t\t\t\tinverse.getInverse( this.bones[ b ].matrixWorld );\n\n\t\t\t}\n\n\t\t\tthis.boneInverses.push( inverse );\n\n\t\t}\n\n\t},\n\n\tpose: function () {\n\n\t\tvar bone;\n\n\t\t// recover the bind-time world matrices\n\n\t\tfor ( var b = 0, bl = this.bones.length; b < bl; b ++ ) {\n\n\t\t\tbone = this.bones[ b ];\n\n\t\t\tif ( bone ) {\n\n\t\t\t\tbone.matrixWorld.getInverse( this.boneInverses[ b ] );\n\n\t\t\t}\n\n\t\t}\n\n\t\t// compute the local matrices, positions, rotations and scales\n\n\t\tfor ( var b = 0, bl = this.bones.length; b < bl; b ++ ) {\n\n\t\t\tbone = this.bones[ b ];\n\n\t\t\tif ( bone ) {\n\n\t\t\t\tif ( (bone.parent && bone.parent.isBone) ) {\n\n\t\t\t\t\tbone.matrix.getInverse( bone.parent.matrixWorld );\n\t\t\t\t\tbone.matrix.multiply( bone.matrixWorld );\n\n\t\t\t\t} else {\n\n\t\t\t\t\tbone.matrix.copy( bone.matrixWorld );\n\n\t\t\t\t}\n\n\t\t\t\tbone.matrix.decompose( bone.position, bone.quaternion, bone.scale );\n\n\t\t\t}\n\n\t\t}\n\n\t},\n\n\tupdate: ( function () {\n\n\t\tvar offsetMatrix = new Matrix4();\n\n\t\treturn function update() {\n\n\t\t\t// flatten bone matrices to array\n\n\t\t\tfor ( var b = 0, bl = this.bones.length; b < bl; b ++ ) {\n\n\t\t\t\t// compute the offset between the current and the original transform\n\n\t\t\t\tvar matrix = this.bones[ b ] ? this.bones[ b ].matrixWorld : this.identityMatrix;\n\n\t\t\t\toffsetMatrix.multiplyMatrices( matrix, this.boneInverses[ b ] );\n\t\t\t\toffsetMatrix.toArray( this.boneMatrices, b * 16 );\n\n\t\t\t}\n\n\t\t\tif ( this.useVertexTexture ) {\n\n\t\t\t\tthis.boneTexture.needsUpdate = true;\n\n\t\t\t}\n\n\t\t};\n\n\t} )(),\n\n\tclone: function () {\n\n\t\treturn new Skeleton( this.bones, this.boneInverses, this.useVertexTexture );\n\n\t}\n\n} );\n\n\nexport { Skeleton };\n","import { Object3D } from '../core/Object3D';\n\n/**\n * @author mikael emtinger / http://gomo.se/\n * @author alteredq / http://alteredqualia.com/\n * @author ikerr / http://verold.com\n */\n\nfunction Bone() {\n\n\tObject3D.call( this );\n\n\tthis.type = 'Bone';\n\n}\n\nBone.prototype = Object.assign( Object.create( Object3D.prototype ), {\n\n\tconstructor: Bone,\n\n\tisBone: true\n\n} );\n\n\nexport { Bone };\n","import { Mesh } from './Mesh';\nimport { Vector4 } from '../math/Vector4';\nimport { Skeleton } from './Skeleton';\nimport { Bone } from './Bone';\nimport { Matrix4 } from '../math/Matrix4';\n\n/**\n * @author mikael emtinger / http://gomo.se/\n * @author alteredq / http://alteredqualia.com/\n * @author ikerr / http://verold.com\n */\n\nfunction SkinnedMesh( geometry, material, useVertexTexture ) {\n\n\tMesh.call( this, geometry, material );\n\n\tthis.type = 'SkinnedMesh';\n\n\tthis.bindMode = \"attached\";\n\tthis.bindMatrix = new Matrix4();\n\tthis.bindMatrixInverse = new Matrix4();\n\n\t// init bones\n\n\t// TODO: remove bone creation as there is no reason (other than\n\t// convenience) for THREE.SkinnedMesh to do this.\n\n\tvar bones = [];\n\n\tif ( this.geometry && this.geometry.bones !== undefined ) {\n\n\t\tvar bone, gbone;\n\n\t\tfor ( var b = 0, bl = this.geometry.bones.length; b < bl; ++ b ) {\n\n\t\t\tgbone = this.geometry.bones[ b ];\n\n\t\t\tbone = new Bone();\n\t\t\tbones.push( bone );\n\n\t\t\tbone.name = gbone.name;\n\t\t\tbone.position.fromArray( gbone.pos );\n\t\t\tbone.quaternion.fromArray( gbone.rotq );\n\t\t\tif ( gbone.scl !== undefined ) bone.scale.fromArray( gbone.scl );\n\n\t\t}\n\n\t\tfor ( var b = 0, bl = this.geometry.bones.length; b < bl; ++ b ) {\n\n\t\t\tgbone = this.geometry.bones[ b ];\n\n\t\t\tif ( gbone.parent !== - 1 && gbone.parent !== null &&\n\t\t\t\t\tbones[ gbone.parent ] !== undefined ) {\n\n\t\t\t\tbones[ gbone.parent ].add( bones[ b ] );\n\n\t\t\t} else {\n\n\t\t\t\tthis.add( bones[ b ] );\n\n\t\t\t}\n\n\t\t}\n\n\t}\n\n\tthis.normalizeSkinWeights();\n\n\tthis.updateMatrixWorld( true );\n\tthis.bind( new Skeleton( bones, undefined, useVertexTexture ), this.matrixWorld );\n\n}\n\n\nSkinnedMesh.prototype = Object.assign( Object.create( Mesh.prototype ), {\n\n\tconstructor: SkinnedMesh,\n\n\tisSkinnedMesh: true,\n\n\tbind: function( skeleton, bindMatrix ) {\n\n\t\tthis.skeleton = skeleton;\n\n\t\tif ( bindMatrix === undefined ) {\n\n\t\t\tthis.updateMatrixWorld( true );\n\n\t\t\tthis.skeleton.calculateInverses();\n\n\t\t\tbindMatrix = this.matrixWorld;\n\n\t\t}\n\n\t\tthis.bindMatrix.copy( bindMatrix );\n\t\tthis.bindMatrixInverse.getInverse( bindMatrix );\n\n\t},\n\n\tpose: function () {\n\n\t\tthis.skeleton.pose();\n\n\t},\n\n\tnormalizeSkinWeights: function () {\n\n\t\tif ( (this.geometry && this.geometry.isGeometry) ) {\n\n\t\t\tfor ( var i = 0; i < this.geometry.skinWeights.length; i ++ ) {\n\n\t\t\t\tvar sw = this.geometry.skinWeights[ i ];\n\n\t\t\t\tvar scale = 1.0 / sw.lengthManhattan();\n\n\t\t\t\tif ( scale !== Infinity ) {\n\n\t\t\t\t\tsw.multiplyScalar( scale );\n\n\t\t\t\t} else {\n\n\t\t\t\t\tsw.set( 1, 0, 0, 0 ); // do something reasonable\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t} else if ( (this.geometry && this.geometry.isBufferGeometry) ) {\n\n\t\t\tvar vec = new Vector4();\n\n\t\t\tvar skinWeight = this.geometry.attributes.skinWeight;\n\n\t\t\tfor ( var i = 0; i < skinWeight.count; i ++ ) {\n\n\t\t\t\tvec.x = skinWeight.getX( i );\n\t\t\t\tvec.y = skinWeight.getY( i );\n\t\t\t\tvec.z = skinWeight.getZ( i );\n\t\t\t\tvec.w = skinWeight.getW( i );\n\n\t\t\t\tvar scale = 1.0 / vec.lengthManhattan();\n\n\t\t\t\tif ( scale !== Infinity ) {\n\n\t\t\t\t\tvec.multiplyScalar( scale );\n\n\t\t\t\t} else {\n\n\t\t\t\t\tvec.set( 1, 0, 0, 0 ); // do something reasonable\n\n\t\t\t\t}\n\n\t\t\t\tskinWeight.setXYZW( i, vec.x, vec.y, vec.z, vec.w );\n\n\t\t\t}\n\n\t\t}\n\n\t},\n\n\tupdateMatrixWorld: function( force ) {\n\n\t\tMesh.prototype.updateMatrixWorld.call( this, true );\n\n\t\tif ( this.bindMode === \"attached\" ) {\n\n\t\t\tthis.bindMatrixInverse.getInverse( this.matrixWorld );\n\n\t\t} else if ( this.bindMode === \"detached\" ) {\n\n\t\t\tthis.bindMatrixInverse.getInverse( this.bindMatrix );\n\n\t\t} else {\n\n\t\t\tconsole.warn( 'THREE.SkinnedMesh unrecognized bindMode: ' + this.bindMode );\n\n\t\t}\n\n\t},\n\n\tclone: function() {\n\n\t\treturn new this.constructor( this.geometry, this.material, this.skeleton.useVertexTexture ).copy( this );\n\n\t}\n\n} );\n\n\nexport { SkinnedMesh };\n","import { Material } from './Material';\nimport { Color } from '../math/Color';\n\n/**\n * @author mrdoob / http://mrdoob.com/\n * @author alteredq / http://alteredqualia.com/\n *\n * parameters = {\n * color: ,\n * opacity: ,\n *\n * linewidth: ,\n * linecap: \"round\",\n * linejoin: \"round\"\n * }\n */\n\nfunction LineBasicMaterial( parameters ) {\n\n\tMaterial.call( this );\n\n\tthis.type = 'LineBasicMaterial';\n\n\tthis.color = new Color( 0xffffff );\n\n\tthis.linewidth = 1;\n\tthis.linecap = 'round';\n\tthis.linejoin = 'round';\n\n\tthis.lights = false;\n\n\tthis.setValues( parameters );\n\n}\n\nLineBasicMaterial.prototype = Object.create( Material.prototype );\nLineBasicMaterial.prototype.constructor = LineBasicMaterial;\n\nLineBasicMaterial.prototype.isLineBasicMaterial = true;\n\nLineBasicMaterial.prototype.copy = function ( source ) {\n\n\tMaterial.prototype.copy.call( this, source );\n\n\tthis.color.copy( source.color );\n\n\tthis.linewidth = source.linewidth;\n\tthis.linecap = source.linecap;\n\tthis.linejoin = source.linejoin;\n\n\treturn this;\n\n};\n\n\nexport { LineBasicMaterial };\n","import { Sphere } from '../math/Sphere';\nimport { Ray } from '../math/Ray';\nimport { Matrix4 } from '../math/Matrix4';\nimport { Object3D } from '../core/Object3D';\nimport { Vector3 } from '../math/Vector3';\nimport { LineBasicMaterial } from '../materials/LineBasicMaterial';\nimport { BufferGeometry } from '../core/BufferGeometry';\nimport { LineSegments } from './LineSegments';\n\n/**\n * @author mrdoob / http://mrdoob.com/\n */\n\nfunction Line( geometry, material, mode ) {\n\n\tif ( mode === 1 ) {\n\n\t\tconsole.warn( 'THREE.Line: parameter THREE.LinePieces no longer supported. Created THREE.LineSegments instead.' );\n\t\treturn new LineSegments( geometry, material );\n\n\t}\n\n\tObject3D.call( this );\n\n\tthis.type = 'Line';\n\n\tthis.geometry = geometry !== undefined ? geometry : new BufferGeometry();\n\tthis.material = material !== undefined ? material : new LineBasicMaterial( { color: Math.random() * 0xffffff } );\n\n}\n\nLine.prototype = Object.assign( Object.create( Object3D.prototype ), {\n\n\tconstructor: Line,\n\n\tisLine: true,\n\n\traycast: ( function () {\n\n\t\tvar inverseMatrix = new Matrix4();\n\t\tvar ray = new Ray();\n\t\tvar sphere = new Sphere();\n\n\t\treturn function raycast( raycaster, intersects ) {\n\n\t\t\tvar precision = raycaster.linePrecision;\n\t\t\tvar precisionSq = precision * precision;\n\n\t\t\tvar geometry = this.geometry;\n\t\t\tvar matrixWorld = this.matrixWorld;\n\n\t\t\t// Checking boundingSphere distance to ray\n\n\t\t\tif ( geometry.boundingSphere === null ) geometry.computeBoundingSphere();\n\n\t\t\tsphere.copy( geometry.boundingSphere );\n\t\t\tsphere.applyMatrix4( matrixWorld );\n\n\t\t\tif ( raycaster.ray.intersectsSphere( sphere ) === false ) return;\n\n\t\t\t//\n\n\t\t\tinverseMatrix.getInverse( matrixWorld );\n\t\t\tray.copy( raycaster.ray ).applyMatrix4( inverseMatrix );\n\n\t\t\tvar vStart = new Vector3();\n\t\t\tvar vEnd = new Vector3();\n\t\t\tvar interSegment = new Vector3();\n\t\t\tvar interRay = new Vector3();\n\t\t\tvar step = (this && this.isLineSegments) ? 2 : 1;\n\n\t\t\tif ( (geometry && geometry.isBufferGeometry) ) {\n\n\t\t\t\tvar index = geometry.index;\n\t\t\t\tvar attributes = geometry.attributes;\n\t\t\t\tvar positions = attributes.position.array;\n\n\t\t\t\tif ( index !== null ) {\n\n\t\t\t\t\tvar indices = index.array;\n\n\t\t\t\t\tfor ( var i = 0, l = indices.length - 1; i < l; i += step ) {\n\n\t\t\t\t\t\tvar a = indices[ i ];\n\t\t\t\t\t\tvar b = indices[ i + 1 ];\n\n\t\t\t\t\t\tvStart.fromArray( positions, a * 3 );\n\t\t\t\t\t\tvEnd.fromArray( positions, b * 3 );\n\n\t\t\t\t\t\tvar distSq = ray.distanceSqToSegment( vStart, vEnd, interRay, interSegment );\n\n\t\t\t\t\t\tif ( distSq > precisionSq ) continue;\n\n\t\t\t\t\t\tinterRay.applyMatrix4( this.matrixWorld ); //Move back to world space for distance calculation\n\n\t\t\t\t\t\tvar distance = raycaster.ray.origin.distanceTo( interRay );\n\n\t\t\t\t\t\tif ( distance < raycaster.near || distance > raycaster.far ) continue;\n\n\t\t\t\t\t\tintersects.push( {\n\n\t\t\t\t\t\t\tdistance: distance,\n\t\t\t\t\t\t\t// What do we want? intersection point on the ray or on the segment??\n\t\t\t\t\t\t\t// point: raycaster.ray.at( distance ),\n\t\t\t\t\t\t\tpoint: interSegment.clone().applyMatrix4( this.matrixWorld ),\n\t\t\t\t\t\t\tindex: i,\n\t\t\t\t\t\t\tface: null,\n\t\t\t\t\t\t\tfaceIndex: null,\n\t\t\t\t\t\t\tobject: this\n\n\t\t\t\t\t\t} );\n\n\t\t\t\t\t}\n\n\t\t\t\t} else {\n\n\t\t\t\t\tfor ( var i = 0, l = positions.length / 3 - 1; i < l; i += step ) {\n\n\t\t\t\t\t\tvStart.fromArray( positions, 3 * i );\n\t\t\t\t\t\tvEnd.fromArray( positions, 3 * i + 3 );\n\n\t\t\t\t\t\tvar distSq = ray.distanceSqToSegment( vStart, vEnd, interRay, interSegment );\n\n\t\t\t\t\t\tif ( distSq > precisionSq ) continue;\n\n\t\t\t\t\t\tinterRay.applyMatrix4( this.matrixWorld ); //Move back to world space for distance calculation\n\n\t\t\t\t\t\tvar distance = raycaster.ray.origin.distanceTo( interRay );\n\n\t\t\t\t\t\tif ( distance < raycaster.near || distance > raycaster.far ) continue;\n\n\t\t\t\t\t\tintersects.push( {\n\n\t\t\t\t\t\t\tdistance: distance,\n\t\t\t\t\t\t\t// What do we want? intersection point on the ray or on the segment??\n\t\t\t\t\t\t\t// point: raycaster.ray.at( distance ),\n\t\t\t\t\t\t\tpoint: interSegment.clone().applyMatrix4( this.matrixWorld ),\n\t\t\t\t\t\t\tindex: i,\n\t\t\t\t\t\t\tface: null,\n\t\t\t\t\t\t\tfaceIndex: null,\n\t\t\t\t\t\t\tobject: this\n\n\t\t\t\t\t\t} );\n\n\t\t\t\t\t}\n\n\t\t\t\t}\n\n\t\t\t} else if ( (geometry && geometry.isGeometry) ) {\n\n\t\t\t\tvar vertices = geometry.vertices;\n\t\t\t\tvar nbVertices = vertices.length;\n\n\t\t\t\tfor ( var i = 0; i < nbVertices - 1; i += step ) {\n\n\t\t\t\t\tvar distSq = ray.distanceSqToSegment( vertices[ i ], vertices[ i + 1 ], interRay, interSegment );\n\n\t\t\t\t\tif ( distSq > precisionSq ) continue;\n\n\t\t\t\t\tinterRay.applyMatrix4( this.matrixWorld ); //Move back to world space for distance calculation\n\n\t\t\t\t\tvar distance = raycaster.ray.origin.distanceTo( interRay );\n\n\t\t\t\t\tif ( distance < raycaster.near || distance > raycaster.far ) continue;\n\n\t\t\t\t\tintersects.push( {\n\n\t\t\t\t\t\tdistance: distance,\n\t\t\t\t\t\t// What do we want? intersection point on the ray or on the segment??\n\t\t\t\t\t\t// point: raycaster.ray.at( distance ),\n\t\t\t\t\t\tpoint: interSegment.clone().applyMatrix4( this.matrixWorld ),\n\t\t\t\t\t\tindex: i,\n\t\t\t\t\t\tface: null,\n\t\t\t\t\t\tfaceIndex: null,\n\t\t\t\t\t\tobject: this\n\n\t\t\t\t\t} );\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t};\n\n\t}() ),\n\n\tclone: function () {\n\n\t\treturn new this.constructor( this.geometry, this.material ).copy( this );\n\n\t}\n\n} );\n\n\nexport { Line };\n","import { Line } from './Line';\n\n/**\n * @author mrdoob / http://mrdoob.com/\n */\n\nfunction LineSegments( geometry, material ) {\n\n\tLine.call( this, geometry, material );\n\n\tthis.type = 'LineSegments';\n\n}\n\nLineSegments.prototype = Object.assign( Object.create( Line.prototype ), {\n\n\tconstructor: LineSegments,\n\n\tisLineSegments: true\n\n} );\n\n\nexport { LineSegments };\n","import { Material } from './Material';\nimport { Color } from '../math/Color';\n\n/**\n * @author mrdoob / http://mrdoob.com/\n * @author alteredq / http://alteredqualia.com/\n *\n * parameters = {\n * color: ,\n * opacity: ,\n * map: new THREE.Texture( ),\n *\n * size: ,\n * sizeAttenuation: \n * }\n */\n\nfunction PointsMaterial( parameters ) {\n\n\tMaterial.call( this );\n\n\tthis.type = 'PointsMaterial';\n\n\tthis.color = new Color( 0xffffff );\n\n\tthis.map = null;\n\n\tthis.size = 1;\n\tthis.sizeAttenuation = true;\n\n\tthis.lights = false;\n\n\tthis.setValues( parameters );\n\n}\n\nPointsMaterial.prototype = Object.create( Material.prototype );\nPointsMaterial.prototype.constructor = PointsMaterial;\n\nPointsMaterial.prototype.isPointsMaterial = true;\n\nPointsMaterial.prototype.copy = function ( source ) {\n\n\tMaterial.prototype.copy.call( this, source );\n\n\tthis.color.copy( source.color );\n\n\tthis.map = source.map;\n\n\tthis.size = source.size;\n\tthis.sizeAttenuation = source.sizeAttenuation;\n\n\treturn this;\n\n};\n\n\nexport { PointsMaterial };\n","import { Sphere } from '../math/Sphere';\nimport { Ray } from '../math/Ray';\nimport { Matrix4 } from '../math/Matrix4';\nimport { Object3D } from '../core/Object3D';\nimport { Vector3 } from '../math/Vector3';\nimport { PointsMaterial } from '../materials/PointsMaterial';\nimport { BufferGeometry } from '../core/BufferGeometry';\n\n/**\n * @author alteredq / http://alteredqualia.com/\n */\n\nfunction Points( geometry, material ) {\n\n\tObject3D.call( this );\n\n\tthis.type = 'Points';\n\n\tthis.geometry = geometry !== undefined ? geometry : new BufferGeometry();\n\tthis.material = material !== undefined ? material : new PointsMaterial( { color: Math.random() * 0xffffff } );\n\n}\n\nPoints.prototype = Object.assign( Object.create( Object3D.prototype ), {\n\n\tconstructor: Points,\n\n\tisPoints: true,\n\n\traycast: ( function () {\n\n\t\tvar inverseMatrix = new Matrix4();\n\t\tvar ray = new Ray();\n\t\tvar sphere = new Sphere();\n\n\t\treturn function raycast( raycaster, intersects ) {\n\n\t\t\tvar object = this;\n\t\t\tvar geometry = this.geometry;\n\t\t\tvar matrixWorld = this.matrixWorld;\n\t\t\tvar threshold = raycaster.params.Points.threshold;\n\n\t\t\t// Checking boundingSphere distance to ray\n\n\t\t\tif ( geometry.boundingSphere === null ) geometry.computeBoundingSphere();\n\n\t\t\tsphere.copy( geometry.boundingSphere );\n\t\t\tsphere.applyMatrix4( matrixWorld );\n\n\t\t\tif ( raycaster.ray.intersectsSphere( sphere ) === false ) return;\n\n\t\t\t//\n\n\t\t\tinverseMatrix.getInverse( matrixWorld );\n\t\t\tray.copy( raycaster.ray ).applyMatrix4( inverseMatrix );\n\n\t\t\tvar localThreshold = threshold / ( ( this.scale.x + this.scale.y + this.scale.z ) / 3 );\n\t\t\tvar localThresholdSq = localThreshold * localThreshold;\n\t\t\tvar position = new Vector3();\n\n\t\t\tfunction testPoint( point, index ) {\n\n\t\t\t\tvar rayPointDistanceSq = ray.distanceSqToPoint( point );\n\n\t\t\t\tif ( rayPointDistanceSq < localThresholdSq ) {\n\n\t\t\t\t\tvar intersectPoint = ray.closestPointToPoint( point );\n\t\t\t\t\tintersectPoint.applyMatrix4( matrixWorld );\n\n\t\t\t\t\tvar distance = raycaster.ray.origin.distanceTo( intersectPoint );\n\n\t\t\t\t\tif ( distance < raycaster.near || distance > raycaster.far ) return;\n\n\t\t\t\t\tintersects.push( {\n\n\t\t\t\t\t\tdistance: distance,\n\t\t\t\t\t\tdistanceToRay: Math.sqrt( rayPointDistanceSq ),\n\t\t\t\t\t\tpoint: intersectPoint.clone(),\n\t\t\t\t\t\tindex: index,\n\t\t\t\t\t\tface: null,\n\t\t\t\t\t\tobject: object\n\n\t\t\t\t\t} );\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t\tif ( (geometry && geometry.isBufferGeometry) ) {\n\n\t\t\t\tvar index = geometry.index;\n\t\t\t\tvar attributes = geometry.attributes;\n\t\t\t\tvar positions = attributes.position.array;\n\n\t\t\t\tif ( index !== null ) {\n\n\t\t\t\t\tvar indices = index.array;\n\n\t\t\t\t\tfor ( var i = 0, il = indices.length; i < il; i ++ ) {\n\n\t\t\t\t\t\tvar a = indices[ i ];\n\n\t\t\t\t\t\tposition.fromArray( positions, a * 3 );\n\n\t\t\t\t\t\ttestPoint( position, a );\n\n\t\t\t\t\t}\n\n\t\t\t\t} else {\n\n\t\t\t\t\tfor ( var i = 0, l = positions.length / 3; i < l; i ++ ) {\n\n\t\t\t\t\t\tposition.fromArray( positions, i * 3 );\n\n\t\t\t\t\t\ttestPoint( position, i );\n\n\t\t\t\t\t}\n\n\t\t\t\t}\n\n\t\t\t} else {\n\n\t\t\t\tvar vertices = geometry.vertices;\n\n\t\t\t\tfor ( var i = 0, l = vertices.length; i < l; i ++ ) {\n\n\t\t\t\t\ttestPoint( vertices[ i ], i );\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t};\n\n\t}() ),\n\n\tclone: function () {\n\n\t\treturn new this.constructor( this.geometry, this.material ).copy( this );\n\n\t}\n\n} );\n\n\nexport { Points };\n","import { Object3D } from '../core/Object3D';\n\n/**\n * @author mrdoob / http://mrdoob.com/\n */\n\nfunction Group() {\n\n\tObject3D.call( this );\n\n\tthis.type = 'Group';\n\n}\n\nGroup.prototype = Object.assign( Object.create( Object3D.prototype ), {\n\n\tconstructor: Group\n\n} );\n\n\nexport { Group };\n","import { Texture } from './Texture';\n\n/**\n * @author mrdoob / http://mrdoob.com/\n */\n\nfunction VideoTexture( video, mapping, wrapS, wrapT, magFilter, minFilter, format, type, anisotropy ) {\n\n\tTexture.call( this, video, mapping, wrapS, wrapT, magFilter, minFilter, format, type, anisotropy );\n\n\tthis.generateMipmaps = false;\n\n\tvar scope = this;\n\n\tfunction update() {\n\n\t\trequestAnimationFrame( update );\n\n\t\tif ( video.readyState >= video.HAVE_CURRENT_DATA ) {\n\n\t\t\tscope.needsUpdate = true;\n\n\t\t}\n\n\t}\n\n\tupdate();\n\n}\n\nVideoTexture.prototype = Object.create( Texture.prototype );\nVideoTexture.prototype.constructor = VideoTexture;\n\n\nexport { VideoTexture };\n","import { Texture } from './Texture';\n\n/**\n * @author alteredq / http://alteredqualia.com/\n */\n\nfunction CompressedTexture( mipmaps, width, height, format, type, mapping, wrapS, wrapT, magFilter, minFilter, anisotropy, encoding ) {\n\n\tTexture.call( this, null, mapping, wrapS, wrapT, magFilter, minFilter, format, type, anisotropy, encoding );\n\n\tthis.image = { width: width, height: height };\n\tthis.mipmaps = mipmaps;\n\n\t// no flipping for cube textures\n\t// (also flipping doesn't work for compressed textures )\n\n\tthis.flipY = false;\n\n\t// can't generate mipmaps for compressed textures\n\t// mips must be embedded in DDS files\n\n\tthis.generateMipmaps = false;\n\n}\n\nCompressedTexture.prototype = Object.create( Texture.prototype );\nCompressedTexture.prototype.constructor = CompressedTexture;\n\nCompressedTexture.prototype.isCompressedTexture = true;\n\n\nexport { CompressedTexture };\n","import { Texture } from './Texture';\n\n/**\n * @author mrdoob / http://mrdoob.com/\n */\n\nfunction CanvasTexture( canvas, mapping, wrapS, wrapT, magFilter, minFilter, format, type, anisotropy ) {\n\n\tTexture.call( this, canvas, mapping, wrapS, wrapT, magFilter, minFilter, format, type, anisotropy );\n\n\tthis.needsUpdate = true;\n\n}\n\nCanvasTexture.prototype = Object.create( Texture.prototype );\nCanvasTexture.prototype.constructor = CanvasTexture;\n\n\nexport { CanvasTexture };\n","import { Texture } from './Texture';\nimport { NearestFilter, UnsignedShortType, DepthFormat, DepthStencilFormat } from '../constants';\n\n/**\n * @author Matt DesLauriers / @mattdesl\n * @author atix / arthursilber.de\n */\n\nfunction DepthTexture( width, height, type, mapping, wrapS, wrapT, magFilter, minFilter, anisotropy, format ) {\n\n\tformat = format !== undefined ? format : DepthFormat;\n\n\tif ( format !== DepthFormat && format !== DepthStencilFormat ) {\n\n\t\tthrow new Error( 'DepthTexture format must be either THREE.DepthFormat or THREE.DepthStencilFormat' )\n\n\t}\n\n\tTexture.call( this, null, mapping, wrapS, wrapT, magFilter, minFilter, format, type, anisotropy );\n\n\tthis.image = { width: width, height: height };\n\n\tthis.type = type !== undefined ? type : UnsignedShortType;\n\n\tthis.magFilter = magFilter !== undefined ? magFilter : NearestFilter;\n\tthis.minFilter = minFilter !== undefined ? minFilter : NearestFilter;\n\n\tthis.flipY = false;\n\tthis.generateMipmaps\t= false;\n\n}\n\nDepthTexture.prototype = Object.create( Texture.prototype );\nDepthTexture.prototype.constructor = DepthTexture;\nDepthTexture.prototype.isDepthTexture = true;\n\nexport { DepthTexture };\n","import { BufferGeometry } from '../core/BufferGeometry';\nimport { BufferAttribute } from '../core/BufferAttribute';\n\n/**\n * @author mrdoob / http://mrdoob.com/\n */\n\nfunction WireframeGeometry( geometry ) {\n\n\tBufferGeometry.call( this );\n\n\tvar edge = [ 0, 0 ], hash = {};\n\n\tfunction sortFunction( a, b ) {\n\n\t\treturn a - b;\n\n\t}\n\n\tvar keys = [ 'a', 'b', 'c' ];\n\n\tif ( (geometry && geometry.isGeometry) ) {\n\n\t\tvar vertices = geometry.vertices;\n\t\tvar faces = geometry.faces;\n\t\tvar numEdges = 0;\n\n\t\t// allocate maximal size\n\t\tvar edges = new Uint32Array( 6 * faces.length );\n\n\t\tfor ( var i = 0, l = faces.length; i < l; i ++ ) {\n\n\t\t\tvar face = faces[ i ];\n\n\t\t\tfor ( var j = 0; j < 3; j ++ ) {\n\n\t\t\t\tedge[ 0 ] = face[ keys[ j ] ];\n\t\t\t\tedge[ 1 ] = face[ keys[ ( j + 1 ) % 3 ] ];\n\t\t\t\tedge.sort( sortFunction );\n\n\t\t\t\tvar key = edge.toString();\n\n\t\t\t\tif ( hash[ key ] === undefined ) {\n\n\t\t\t\t\tedges[ 2 * numEdges ] = edge[ 0 ];\n\t\t\t\t\tedges[ 2 * numEdges + 1 ] = edge[ 1 ];\n\t\t\t\t\thash[ key ] = true;\n\t\t\t\t\tnumEdges ++;\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t}\n\n\t\tvar coords = new Float32Array( numEdges * 2 * 3 );\n\n\t\tfor ( var i = 0, l = numEdges; i < l; i ++ ) {\n\n\t\t\tfor ( var j = 0; j < 2; j ++ ) {\n\n\t\t\t\tvar vertex = vertices[ edges [ 2 * i + j ] ];\n\n\t\t\t\tvar index = 6 * i + 3 * j;\n\t\t\t\tcoords[ index + 0 ] = vertex.x;\n\t\t\t\tcoords[ index + 1 ] = vertex.y;\n\t\t\t\tcoords[ index + 2 ] = vertex.z;\n\n\t\t\t}\n\n\t\t}\n\n\t\tthis.addAttribute( 'position', new BufferAttribute( coords, 3 ) );\n\n\t} else if ( (geometry && geometry.isBufferGeometry) ) {\n\n\t\tif ( geometry.index !== null ) {\n\n\t\t\t// Indexed BufferGeometry\n\n\t\t\tvar indices = geometry.index.array;\n\t\t\tvar vertices = geometry.attributes.position;\n\t\t\tvar groups = geometry.groups;\n\t\t\tvar numEdges = 0;\n\n\t\t\tif ( groups.length === 0 ) {\n\n\t\t\t\tgeometry.addGroup( 0, indices.length );\n\n\t\t\t}\n\n\t\t\t// allocate maximal size\n\t\t\tvar edges = new Uint32Array( 2 * indices.length );\n\n\t\t\tfor ( var o = 0, ol = groups.length; o < ol; ++ o ) {\n\n\t\t\t\tvar group = groups[ o ];\n\n\t\t\t\tvar start = group.start;\n\t\t\t\tvar count = group.count;\n\n\t\t\t\tfor ( var i = start, il = start + count; i < il; i += 3 ) {\n\n\t\t\t\t\tfor ( var j = 0; j < 3; j ++ ) {\n\n\t\t\t\t\t\tedge[ 0 ] = indices[ i + j ];\n\t\t\t\t\t\tedge[ 1 ] = indices[ i + ( j + 1 ) % 3 ];\n\t\t\t\t\t\tedge.sort( sortFunction );\n\n\t\t\t\t\t\tvar key = edge.toString();\n\n\t\t\t\t\t\tif ( hash[ key ] === undefined ) {\n\n\t\t\t\t\t\t\tedges[ 2 * numEdges ] = edge[ 0 ];\n\t\t\t\t\t\t\tedges[ 2 * numEdges + 1 ] = edge[ 1 ];\n\t\t\t\t\t\t\thash[ key ] = true;\n\t\t\t\t\t\t\tnumEdges ++;\n\n\t\t\t\t\t\t}\n\n\t\t\t\t\t}\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t\tvar coords = new Float32Array( numEdges * 2 * 3 );\n\n\t\t\tfor ( var i = 0, l = numEdges; i < l; i ++ ) {\n\n\t\t\t\tfor ( var j = 0; j < 2; j ++ ) {\n\n\t\t\t\t\tvar index = 6 * i + 3 * j;\n\t\t\t\t\tvar index2 = edges[ 2 * i + j ];\n\n\t\t\t\t\tcoords[ index + 0 ] = vertices.getX( index2 );\n\t\t\t\t\tcoords[ index + 1 ] = vertices.getY( index2 );\n\t\t\t\t\tcoords[ index + 2 ] = vertices.getZ( index2 );\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t\tthis.addAttribute( 'position', new BufferAttribute( coords, 3 ) );\n\n\t\t} else {\n\n\t\t\t// non-indexed BufferGeometry\n\n\t\t\tvar vertices = geometry.attributes.position.array;\n\t\t\tvar numEdges = vertices.length / 3;\n\t\t\tvar numTris = numEdges / 3;\n\n\t\t\tvar coords = new Float32Array( numEdges * 2 * 3 );\n\n\t\t\tfor ( var i = 0, l = numTris; i < l; i ++ ) {\n\n\t\t\t\tfor ( var j = 0; j < 3; j ++ ) {\n\n\t\t\t\t\tvar index = 18 * i + 6 * j;\n\n\t\t\t\t\tvar index1 = 9 * i + 3 * j;\n\t\t\t\t\tcoords[ index + 0 ] = vertices[ index1 ];\n\t\t\t\t\tcoords[ index + 1 ] = vertices[ index1 + 1 ];\n\t\t\t\t\tcoords[ index + 2 ] = vertices[ index1 + 2 ];\n\n\t\t\t\t\tvar index2 = 9 * i + 3 * ( ( j + 1 ) % 3 );\n\t\t\t\t\tcoords[ index + 3 ] = vertices[ index2 ];\n\t\t\t\t\tcoords[ index + 4 ] = vertices[ index2 + 1 ];\n\t\t\t\t\tcoords[ index + 5 ] = vertices[ index2 + 2 ];\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t\tthis.addAttribute( 'position', new BufferAttribute( coords, 3 ) );\n\n\t\t}\n\n\t}\n\n}\n\nWireframeGeometry.prototype = Object.create( BufferGeometry.prototype );\nWireframeGeometry.prototype.constructor = WireframeGeometry;\n\n\nexport { WireframeGeometry };\n","import { BufferGeometry } from '../core/BufferGeometry';\nimport { Float32Attribute, Uint16Attribute, Uint32Attribute } from '../core/BufferAttribute';\n\n/**\n * @author Mugen87 / https://github.com/Mugen87\n *\n * Parametric Surfaces Geometry\n * based on the brilliant article by @prideout http://prideout.net/blog/?p=44\n */\n\nfunction ParametricBufferGeometry( func, slices, stacks ) {\n\n\tBufferGeometry.call( this );\n\n\tthis.type = 'ParametricBufferGeometry';\n\n\tthis.parameters = {\n\t\tfunc: func,\n\t\tslices: slices,\n\t\tstacks: stacks\n\t};\n\n\t// generate vertices and uvs\n\n\tvar vertices = [];\n\tvar uvs = [];\n\n\tvar i, j, p;\n\tvar u, v;\n\n\tvar sliceCount = slices + 1;\n\n\tfor ( i = 0; i <= stacks; i ++ ) {\n\n\t\tv = i / stacks;\n\n\t\tfor ( j = 0; j <= slices; j ++ ) {\n\n\t\t\tu = j / slices;\n\n\t\t\tp = func( u, v );\n\t\t\tvertices.push( p.x, p.y, p.z );\n\n\t\t\tuvs.push( u, v );\n\n\t\t}\n\n\t}\n\n\t// generate indices\n\n\tvar indices = [];\n\tvar a, b, c, d;\n\n\tfor ( i = 0; i < stacks; i ++ ) {\n\n\t\tfor ( j = 0; j < slices; j ++ ) {\n\n\t\t\ta = i * sliceCount + j;\n\t\t\tb = i * sliceCount + j + 1;\n\t\t\tc = ( i + 1 ) * sliceCount + j + 1;\n\t\t\td = ( i + 1 ) * sliceCount + j;\n\n\t\t\t// faces one and two\n\n\t\t\tindices.push( a, b, d );\n\t\t\tindices.push( b, c, d );\n\n\t\t}\n\n\t}\n\n\t// build geometry\n\n\tthis.setIndex( ( indices.length > 65535 ? Uint32Attribute : Uint16Attribute )( indices, 1 ) );\n\tthis.addAttribute( 'position', Float32Attribute( vertices, 3 ) );\n\tthis.addAttribute( 'uv', Float32Attribute( uvs, 2 ) );\n\n\t// generate normals\n\n\tthis.computeVertexNormals();\n\n}\n\nParametricBufferGeometry.prototype = Object.create( BufferGeometry.prototype );\nParametricBufferGeometry.prototype.constructor = ParametricBufferGeometry;\n\n\nexport { ParametricBufferGeometry };\n","import { Geometry } from '../core/Geometry';\nimport { ParametricBufferGeometry } from './ParametricBufferGeometry';\n\n/**\n * @author zz85 / https://github.com/zz85\n *\n * Parametric Surfaces Geometry\n * based on the brilliant article by @prideout http://prideout.net/blog/?p=44\n */\n\nfunction ParametricGeometry( func, slices, stacks ) {\n\n\tGeometry.call( this );\n\n\tthis.type = 'ParametricGeometry';\n\n\tthis.parameters = {\n\t\tfunc: func,\n\t\tslices: slices,\n\t\tstacks: stacks\n\t};\n\n\tthis.fromBufferGeometry( new ParametricBufferGeometry( func, slices, stacks ) );\n\tthis.mergeVertices();\n\n}\n\nParametricGeometry.prototype = Object.create( Geometry.prototype );\nParametricGeometry.prototype.constructor = ParametricGeometry;\n\n\nexport { ParametricGeometry };\n","import { BufferGeometry } from '../core/BufferGeometry';\nimport { Float32Attribute } from '../core/BufferAttribute';\nimport { Vector3 } from '../math/Vector3';\nimport { Vector2 } from '../math/Vector2';\nimport { Sphere } from '../math/Sphere';\n\n/**\n * @author Mugen87 / https://github.com/Mugen87\n */\n\nfunction PolyhedronBufferGeometry( vertices, indices, radius, detail ) {\n\n\tBufferGeometry.call( this );\n\n\tthis.type = 'PolyhedronBufferGeometry';\n\n\tthis.parameters = {\n\t\tvertices: vertices,\n\t\tindices: indices,\n\t\tradius: radius,\n\t\tdetail: detail\n\t};\n\n\tradius = radius || 1;\n\tdetail = detail || 0;\n\n\t// default buffer data\n\n\tvar vertexBuffer = [];\n\tvar uvBuffer = [];\n\n\t// the subdivision creates the vertex buffer data\n\n\tsubdivide( detail );\n\n\t// all vertices should lie on a conceptual sphere with a given radius\n\n\tappplyRadius( radius );\n\n\t// finally, create the uv data\n\n\tgenerateUVs();\n\n\t// build non-indexed geometry\n\n\tthis.addAttribute( 'position', Float32Attribute( vertexBuffer, 3 ) );\n\tthis.addAttribute( 'normal', Float32Attribute( vertexBuffer.slice(), 3 ) );\n\tthis.addAttribute( 'uv', Float32Attribute( uvBuffer, 2 ) );\n\tthis.normalizeNormals();\n\n\tthis.boundingSphere = new Sphere( new Vector3(), radius );\n\n\t// helper functions\n\n\tfunction subdivide( detail ) {\n\n\t\tvar a = new Vector3();\n\t\tvar b = new Vector3();\n\t\tvar c = new Vector3();\n\n\t\t// iterate over all faces and apply a subdivison with the given detail value\n\n\t\tfor ( var i = 0; i < indices.length; i += 3 ) {\n\n\t\t\t// get the vertices of the face\n\n\t\t\tgetVertexByIndex( indices[ i + 0 ], a );\n\t\t\tgetVertexByIndex( indices[ i + 1 ], b );\n\t\t\tgetVertexByIndex( indices[ i + 2 ], c );\n\n\t\t\t// perform subdivision\n\n\t\t\tsubdivideFace( a, b, c, detail );\n\n\t\t}\n\n\t}\n\n\tfunction subdivideFace( a, b, c, detail ) {\n\n\t\tvar cols = Math.pow( 2, detail );\n\n\t\t// we use this multidimensional array as a data structure for creating the subdivision\n\n\t\tvar v = [];\n\n\t\tvar i, j;\n\n\t\t// construct all of the vertices for this subdivision\n\n\t\tfor ( i = 0 ; i <= cols; i ++ ) {\n\n\t\t\tv[ i ] = [];\n\n\t\t\tvar aj = a.clone().lerp( c, i / cols );\n\t\t\tvar bj = b.clone().lerp( c, i / cols );\n\n\t\t\tvar rows = cols - i;\n\n\t\t\tfor ( j = 0; j <= rows; j ++ ) {\n\n\t\t\t\tif ( j === 0 && i === cols ) {\n\n\t\t\t\t\tv[ i ][ j ] = aj;\n\n\t\t\t\t} else {\n\n\t\t\t\t\tv[ i ][ j ] = aj.clone().lerp( bj, j / rows );\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t}\n\n\t\t// construct all of the faces\n\n\t\tfor ( i = 0; i < cols ; i ++ ) {\n\n\t\t\tfor ( j = 0; j < 2 * ( cols - i ) - 1; j ++ ) {\n\n\t\t\t\tvar k = Math.floor( j / 2 );\n\n\t\t\t\tif ( j % 2 === 0 ) {\n\n\t\t\t\t\tpushVertex( v[ i ][ k + 1 ] );\n\t\t\t\t\tpushVertex( v[ i + 1 ][ k ] );\n\t\t\t\t\tpushVertex( v[ i ][ k ] );\n\n\t\t\t\t} else {\n\n\t\t\t\t\tpushVertex( v[ i ][ k + 1 ] );\n\t\t\t\t\tpushVertex( v[ i + 1 ][ k + 1 ] );\n\t\t\t\t\tpushVertex( v[ i + 1 ][ k ] );\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t}\n\n\t}\n\n\tfunction appplyRadius( radius ) {\n\n\t\tvar vertex = new Vector3();\n\n\t\t// iterate over the entire buffer and apply the radius to each vertex\n\n\t\tfor ( var i = 0; i < vertexBuffer.length; i += 3 ) {\n\n\t\t\tvertex.x = vertexBuffer[ i + 0 ];\n\t\t\tvertex.y = vertexBuffer[ i + 1 ];\n\t\t\tvertex.z = vertexBuffer[ i + 2 ];\n\n\t\t\tvertex.normalize().multiplyScalar( radius );\n\n\t\t\tvertexBuffer[ i + 0 ] = vertex.x;\n\t\t\tvertexBuffer[ i + 1 ] = vertex.y;\n\t\t\tvertexBuffer[ i + 2 ] = vertex.z;\n\n\t\t}\n\n\t}\n\n\tfunction generateUVs() {\n\n\t\tvar vertex = new Vector3();\n\n\t\tfor ( var i = 0; i < vertexBuffer.length; i += 3 ) {\n\n\t\t\tvertex.x = vertexBuffer[ i + 0 ];\n\t\t\tvertex.y = vertexBuffer[ i + 1 ];\n\t\t\tvertex.z = vertexBuffer[ i + 2 ];\n\n\t\t\tvar u = azimuth( vertex ) / 2 / Math.PI + 0.5;\n\t\t\tvar v = inclination( vertex ) / Math.PI + 0.5;\n\t\t\tuvBuffer.push( u, 1 - v );\n\n\t\t}\n\n\t\tcorrectUVs();\n\n\t\tcorrectSeam();\n\n\t}\n\n\tfunction correctSeam() {\n\n\t\t// handle case when face straddles the seam, see #3269\n\n\t\tfor ( var i = 0; i < uvBuffer.length; i += 6 ) {\n\n\t\t\t// uv data of a single face\n\n\t\t\tvar x0 = uvBuffer[ i + 0 ];\n\t\t\tvar x1 = uvBuffer[ i + 2 ];\n\t\t\tvar x2 = uvBuffer[ i + 4 ];\n\n\t\t\tvar max = Math.max( x0, x1, x2 );\n\t\t\tvar min = Math.min( x0, x1, x2 );\n\n\t\t\t// 0.9 is somewhat arbitrary\n\n\t\t\tif ( max > 0.9 && min < 0.1 ) {\n\n\t\t\t\tif ( x0 < 0.2 ) uvBuffer[ i + 0 ] += 1;\n\t\t\t\tif ( x1 < 0.2 ) uvBuffer[ i + 2 ] += 1;\n\t\t\t\tif ( x2 < 0.2 ) uvBuffer[ i + 4 ] += 1;\n\n\t\t\t}\n\n\t\t}\n\n\t}\n\n\tfunction pushVertex( vertex ) {\n\n\t\tvertexBuffer.push( vertex.x, vertex.y, vertex.z );\n\n\t}\n\n\tfunction getVertexByIndex( index, vertex ) {\n\n\t\tvar stride = index * 3;\n\n\t\tvertex.x = vertices[ stride + 0 ];\n\t\tvertex.y = vertices[ stride + 1 ];\n\t\tvertex.z = vertices[ stride + 2 ];\n\n\t}\n\n\tfunction correctUVs() {\n\n\t\tvar a = new Vector3();\n\t\tvar b = new Vector3();\n\t\tvar c = new Vector3();\n\n\t\tvar centroid = new Vector3();\n\n\t\tvar uvA = new Vector2();\n\t\tvar uvB = new Vector2();\n\t\tvar uvC = new Vector2();\n\n\t\tfor ( var i = 0, j = 0; i < vertexBuffer.length; i += 9, j += 6 ) {\n\n\t\t\ta.set( vertexBuffer[ i + 0 ], vertexBuffer[ i + 1 ], vertexBuffer[ i + 2 ] );\n\t\t\tb.set( vertexBuffer[ i + 3 ], vertexBuffer[ i + 4 ], vertexBuffer[ i + 5 ] );\n\t\t\tc.set( vertexBuffer[ i + 6 ], vertexBuffer[ i + 7 ], vertexBuffer[ i + 8 ] );\n\n\t\t\tuvA.set( uvBuffer[ j + 0 ], uvBuffer[ j + 1 ] );\n\t\t\tuvB.set( uvBuffer[ j + 2 ], uvBuffer[ j + 3 ] );\n\t\t\tuvC.set( uvBuffer[ j + 4 ], uvBuffer[ j + 5 ] );\n\n\t\t\tcentroid.copy( a ).add( b ).add( c ).divideScalar( 3 );\n\n\t\t\tvar azi = azimuth( centroid );\n\n\t\t\tcorrectUV( uvA, j + 0, a, azi );\n\t\t\tcorrectUV( uvB, j + 2, b, azi );\n\t\t\tcorrectUV( uvC, j + 4, c, azi );\n\n\t\t}\n\n\t}\n\n\tfunction correctUV( uv, stride, vector, azimuth ) {\n\n\t\tif ( ( azimuth < 0 ) && ( uv.x === 1 ) ) {\n\n\t\t\tuvBuffer[ stride ] = uv.x - 1;\n\n\t\t}\n\n\t\tif ( ( vector.x === 0 ) && ( vector.z === 0 ) ) {\n\n\t\t\tuvBuffer[ stride ] = azimuth / 2 / Math.PI + 0.5;\n\n\t\t}\n\n\t}\n\n\t// Angle around the Y axis, counter-clockwise when looking from above.\n\n\tfunction azimuth( vector ) {\n\n\t\treturn Math.atan2( vector.z, - vector.x );\n\n\t}\n\n\n\t// Angle above the XZ plane.\n\n\tfunction inclination( vector ) {\n\n\t\treturn Math.atan2( - vector.y, Math.sqrt( ( vector.x * vector.x ) + ( vector.z * vector.z ) ) );\n\n\t}\n\n}\n\nPolyhedronBufferGeometry.prototype = Object.create( BufferGeometry.prototype );\nPolyhedronBufferGeometry.prototype.constructor = PolyhedronBufferGeometry;\n\n\nexport { PolyhedronBufferGeometry };\n","import { PolyhedronBufferGeometry } from './PolyhedronBufferGeometry';\n\n/**\n * @author Mugen87 / https://github.com/Mugen87\n */\n\nfunction TetrahedronBufferGeometry( radius, detail ) {\n\n\tvar vertices = [\n\t\t1, 1, 1, - 1, - 1, 1, - 1, 1, - 1, 1, - 1, - 1\n\t];\n\n\tvar indices = [\n\t\t2, 1, 0, 0, 3, 2, 1, 3, 0, 2, 3, 1\n\t];\n\n\tPolyhedronBufferGeometry.call( this, vertices, indices, radius, detail );\n\n\tthis.type = 'TetrahedronBufferGeometry';\n\n\tthis.parameters = {\n\t\tradius: radius,\n\t\tdetail: detail\n\t};\n\n}\n\nTetrahedronBufferGeometry.prototype = Object.create( PolyhedronBufferGeometry.prototype );\nTetrahedronBufferGeometry.prototype.constructor = TetrahedronBufferGeometry;\n\n\nexport { TetrahedronBufferGeometry };\n","import { Geometry } from '../core/Geometry';\nimport { TetrahedronBufferGeometry } from './TetrahedronBufferGeometry';\n\n/**\n * @author timothypratley / https://github.com/timothypratley\n */\n\nfunction TetrahedronGeometry( radius, detail ) {\n\n\tGeometry.call( this );\n\n\tthis.type = 'TetrahedronGeometry';\n\n\tthis.parameters = {\n\t\tradius: radius,\n\t\tdetail: detail\n\t};\n\n\tthis.fromBufferGeometry( new TetrahedronBufferGeometry( radius, detail ) );\n\tthis.mergeVertices();\n\n}\n\nTetrahedronGeometry.prototype = Object.create( Geometry.prototype );\nTetrahedronGeometry.prototype.constructor = TetrahedronGeometry;\n\n\nexport { TetrahedronGeometry };\n","import { PolyhedronBufferGeometry } from './PolyhedronBufferGeometry';\n\n/**\n * @author Mugen87 / https://github.com/Mugen87\n */\n\nfunction OctahedronBufferGeometry( radius,detail ) {\n\n\tvar vertices = [\n\t\t1, 0, 0, - 1, 0, 0, 0, 1, 0, 0, - 1, 0, 0, 0, 1, 0, 0, - 1\n\t];\n\n\tvar indices = [\n\t\t0, 2, 4, 0, 4, 3, 0, 3, 5, 0, 5, 2, 1, 2, 5, 1, 5, 3, 1, 3, 4, 1, 4, 2\n\t];\n\n\tPolyhedronBufferGeometry.call( this, vertices, indices, radius, detail );\n\n\tthis.type = 'OctahedronBufferGeometry';\n\n\tthis.parameters = {\n\t\tradius: radius,\n\t\tdetail: detail\n\t};\n\n}\n\nOctahedronBufferGeometry.prototype = Object.create( PolyhedronBufferGeometry.prototype );\nOctahedronBufferGeometry.prototype.constructor = OctahedronBufferGeometry;\n\n\nexport { OctahedronBufferGeometry };\n","import { Geometry } from '../core/Geometry';\nimport { OctahedronBufferGeometry } from './OctahedronBufferGeometry';\n\n/**\n * @author timothypratley / https://github.com/timothypratley\n */\n\nfunction OctahedronGeometry( radius, detail ) {\n\n\tGeometry.call( this );\n\n\tthis.type = 'OctahedronGeometry';\n\n\tthis.parameters = {\n\t\tradius: radius,\n\t\tdetail: detail\n\t};\n\n\tthis.fromBufferGeometry( new OctahedronBufferGeometry( radius, detail ) );\n\tthis.mergeVertices();\n\n}\n\nOctahedronGeometry.prototype = Object.create( Geometry.prototype );\nOctahedronGeometry.prototype.constructor = OctahedronGeometry;\n\n\nexport { OctahedronGeometry };\n","import { PolyhedronBufferGeometry } from './PolyhedronBufferGeometry';\n\n/**\n * @author Mugen87 / https://github.com/Mugen87\n */\n\nfunction IcosahedronBufferGeometry( radius, detail ) {\n\n\tvar t = ( 1 + Math.sqrt( 5 ) ) / 2;\n\n\tvar vertices = [\n\t\t- 1, t, 0, 1, t, 0, - 1, - t, 0, 1, - t, 0,\n\t\t 0, - 1, t, 0, 1, t, 0, - 1, - t, 0, 1, - t,\n\t\t t, 0, - 1, t, 0, 1, - t, 0, - 1, - t, 0, 1\n\t];\n\n\tvar indices = [\n\t\t 0, 11, 5, 0, 5, 1, 0, 1, 7, 0, 7, 10, 0, 10, 11,\n\t\t 1, 5, 9, 5, 11, 4, 11, 10, 2, 10, 7, 6, 7, 1, 8,\n\t\t 3, 9, 4, 3, 4, 2, 3, 2, 6, 3, 6, 8, 3, 8, 9,\n\t\t 4, 9, 5, 2, 4, 11, 6, 2, 10, 8, 6, 7, 9, 8, 1\n\t];\n\n\tPolyhedronBufferGeometry.call( this, vertices, indices, radius, detail );\n\n\tthis.type = 'IcosahedronBufferGeometry';\n\n\tthis.parameters = {\n\t\tradius: radius,\n\t\tdetail: detail\n\t};\n\n}\n\nIcosahedronBufferGeometry.prototype = Object.create( PolyhedronBufferGeometry.prototype );\nIcosahedronBufferGeometry.prototype.constructor = IcosahedronBufferGeometry;\n\n\nexport { IcosahedronBufferGeometry };\n","import { Geometry } from '../core/Geometry';\nimport { IcosahedronBufferGeometry } from './IcosahedronBufferGeometry';\n\n/**\n * @author timothypratley / https://github.com/timothypratley\n */\n\nfunction IcosahedronGeometry( radius, detail ) {\n\n \tGeometry.call( this );\n\n\tthis.type = 'IcosahedronGeometry';\n\n\tthis.parameters = {\n\t\tradius: radius,\n\t\tdetail: detail\n\t};\n\n\tthis.fromBufferGeometry( new IcosahedronBufferGeometry( radius, detail ) );\n\tthis.mergeVertices();\n\n}\n\nIcosahedronGeometry.prototype = Object.create( Geometry.prototype );\nIcosahedronGeometry.prototype.constructor = IcosahedronGeometry;\n\n\nexport { IcosahedronGeometry };\n","import { PolyhedronBufferGeometry } from './PolyhedronBufferGeometry';\n\n/**\n * @author Mugen87 / https://github.com/Mugen87\n */\n\nfunction DodecahedronBufferGeometry( radius, detail ) {\n\n\tvar t = ( 1 + Math.sqrt( 5 ) ) / 2;\n\tvar r = 1 / t;\n\n\tvar vertices = [\n\n\t\t// (±1, ±1, ±1)\n\t\t- 1, - 1, - 1, - 1, - 1, 1,\n\t\t- 1, 1, - 1, - 1, 1, 1,\n\t\t 1, - 1, - 1, 1, - 1, 1,\n\t\t 1, 1, - 1, 1, 1, 1,\n\n\t\t// (0, ±1/φ, ±φ)\n\t\t 0, - r, - t, 0, - r, t,\n\t\t 0, r, - t, 0, r, t,\n\n\t\t// (±1/φ, ±φ, 0)\n\t\t- r, - t, 0, - r, t, 0,\n\t\t r, - t, 0, r, t, 0,\n\n\t\t// (±φ, 0, ±1/φ)\n\t\t- t, 0, - r, t, 0, - r,\n\t\t- t, 0, r, t, 0, r\n\t];\n\n\tvar indices = [\n\t\t 3, 11, 7, 3, 7, 15, 3, 15, 13,\n\t\t 7, 19, 17, 7, 17, 6, 7, 6, 15,\n\t\t17, 4, 8, 17, 8, 10, 17, 10, 6,\n\t\t 8, 0, 16, 8, 16, 2, 8, 2, 10,\n\t\t 0, 12, 1, 0, 1, 18, 0, 18, 16,\n\t\t 6, 10, 2, 6, 2, 13, 6, 13, 15,\n\t\t 2, 16, 18, 2, 18, 3, 2, 3, 13,\n\t\t18, 1, 9, 18, 9, 11, 18, 11, 3,\n\t\t 4, 14, 12, 4, 12, 0, 4, 0, 8,\n\t\t11, 9, 5, 11, 5, 19, 11, 19, 7,\n\t\t19, 5, 14, 19, 14, 4, 19, 4, 17,\n\t\t 1, 12, 14, 1, 14, 5, 1, 5, 9\n\t];\n\n\tPolyhedronBufferGeometry.call( this, vertices, indices, radius, detail );\n\n\tthis.type = 'DodecahedronBufferGeometry';\n\n\tthis.parameters = {\n\t\tradius: radius,\n\t\tdetail: detail\n\t};\n\n}\n\nDodecahedronBufferGeometry.prototype = Object.create( PolyhedronBufferGeometry.prototype );\nDodecahedronBufferGeometry.prototype.constructor = DodecahedronBufferGeometry;\n\n\nexport { DodecahedronBufferGeometry };\n","import { Geometry } from '../core/Geometry';\nimport { DodecahedronBufferGeometry } from './DodecahedronBufferGeometry';\n\n/**\n * @author Abe Pazos / https://hamoid.com\n */\n\nfunction DodecahedronGeometry( radius, detail ) {\n\n\tGeometry.call( this );\n\n\tthis.type = 'DodecahedronGeometry';\n\n\tthis.parameters = {\n\t\tradius: radius,\n\t\tdetail: detail\n\t};\n\n\tthis.fromBufferGeometry( new DodecahedronBufferGeometry( radius, detail ) );\n\tthis.mergeVertices();\n\n}\n\nDodecahedronGeometry.prototype = Object.create( Geometry.prototype );\nDodecahedronGeometry.prototype.constructor = DodecahedronGeometry;\n\n\nexport { DodecahedronGeometry };\n","import { Geometry } from '../core/Geometry';\nimport { PolyhedronBufferGeometry } from './PolyhedronBufferGeometry';\n\n/**\n * @author clockworkgeek / https://github.com/clockworkgeek\n * @author timothypratley / https://github.com/timothypratley\n * @author WestLangley / http://github.com/WestLangley\n*/\n\nfunction PolyhedronGeometry( vertices, indices, radius, detail ) {\n\n\tGeometry.call( this );\n\n\tthis.type = 'PolyhedronGeometry';\n\n\tthis.parameters = {\n\t\tvertices: vertices,\n\t\tindices: indices,\n\t\tradius: radius,\n\t\tdetail: detail\n\t};\n\n\tthis.fromBufferGeometry( new PolyhedronBufferGeometry( vertices, indices, radius, detail ) );\n\tthis.mergeVertices();\n\n}\n\nPolyhedronGeometry.prototype = Object.create( Geometry.prototype );\nPolyhedronGeometry.prototype.constructor = PolyhedronGeometry;\n\n\nexport { PolyhedronGeometry };\n","import { BufferGeometry } from '../core/BufferGeometry';\nimport { Float32Attribute, Uint16Attribute, Uint32Attribute } from '../core/BufferAttribute';\nimport { Vector2 } from '../math/Vector2';\nimport { Vector3 } from '../math/Vector3';\n\n/**\n * @author Mugen87 / https://github.com/Mugen87\n *\n * Creates a tube which extrudes along a 3d spline.\n *\n */\n\nfunction TubeBufferGeometry( path, tubularSegments, radius, radialSegments, closed ) {\n\n\tBufferGeometry.call( this );\n\n\tthis.type = 'TubeBufferGeometry';\n\n\tthis.parameters = {\n\t\tpath: path,\n\t\ttubularSegments: tubularSegments,\n\t\tradius: radius,\n\t\tradialSegments: radialSegments,\n\t\tclosed: closed\n\t};\n\n\ttubularSegments = tubularSegments || 64;\n\tradius = radius || 1;\n\tradialSegments = radialSegments || 8;\n\tclosed = closed || false;\n\n\tvar frames = path.computeFrenetFrames( tubularSegments, closed );\n\n\t// expose internals\n\n\tthis.tangents = frames.tangents;\n\tthis.normals = frames.normals;\n\tthis.binormals = frames.binormals;\n\n\t// helper variables\n\n\tvar vertex = new Vector3();\n\tvar normal = new Vector3();\n\tvar uv = new Vector2();\n\n\tvar i, j;\n\n\t// buffer\n\n\tvar vertices = [];\n\tvar normals = [];\n\tvar uvs = [];\n\tvar indices = [];\n\n\t// create buffer data\n\n\tgenerateBufferData();\n\n\t// build geometry\n\n\tthis.setIndex( ( indices.length > 65535 ? Uint32Attribute : Uint16Attribute )( indices, 1 ) );\n\tthis.addAttribute( 'position', Float32Attribute( vertices, 3 ) );\n\tthis.addAttribute( 'normal', Float32Attribute( normals, 3 ) );\n\tthis.addAttribute( 'uv', Float32Attribute( uvs, 2 ) );\n\n\t// functions\n\n\tfunction generateBufferData() {\n\n\t\tfor ( i = 0; i < tubularSegments; i ++ ) {\n\n\t\t\tgenerateSegment( i );\n\n\t\t}\n\n\t\t// if the geometry is not closed, generate the last row of vertices and normals\n\t\t// at the regular position on the given path\n\t\t//\n\t\t// if the geometry is closed, duplicate the first row of vertices and normals (uvs will differ)\n\n\t\tgenerateSegment( ( closed === false ) ? tubularSegments : 0 );\n\n\t\t// uvs are generated in a separate function.\n\t\t// this makes it easy compute correct values for closed geometries\n\n\t\tgenerateUVs();\n\n\t\t// finally create faces\n\n\t\tgenerateIndices();\n\n\t}\n\n\tfunction generateSegment( i ) {\n\n\t\t// we use getPointAt to sample evenly distributed points from the given path\n\n\t\tvar P = path.getPointAt( i / tubularSegments );\n\n\t\t// retrieve corresponding normal and binormal\n\n\t\tvar N = frames.normals[ i ];\n\t\tvar B = frames.binormals[ i ];\n\n\t\t// generate normals and vertices for the current segment\n\n\t\tfor ( j = 0; j <= radialSegments; j ++ ) {\n\n\t\t\tvar v = j / radialSegments * Math.PI * 2;\n\n\t\t\tvar sin = Math.sin( v );\n\t\t\tvar cos = - Math.cos( v );\n\n\t\t\t// normal\n\n\t\t\tnormal.x = ( cos * N.x + sin * B.x );\n\t\t\tnormal.y = ( cos * N.y + sin * B.y );\n\t\t\tnormal.z = ( cos * N.z + sin * B.z );\n\t\t\tnormal.normalize();\n\n\t\t\tnormals.push( normal.x, normal.y, normal.z );\n\n\t\t\t// vertex\n\n\t\t\tvertex.x = P.x + radius * normal.x;\n\t\t\tvertex.y = P.y + radius * normal.y;\n\t\t\tvertex.z = P.z + radius * normal.z;\n\n\t\t\tvertices.push( vertex.x, vertex.y, vertex.z );\n\n\t\t}\n\n\t}\n\n\tfunction generateIndices() {\n\n\t\tfor ( j = 1; j <= tubularSegments; j ++ ) {\n\n\t\t\tfor ( i = 1; i <= radialSegments; i ++ ) {\n\n\t\t\t\tvar a = ( radialSegments + 1 ) * ( j - 1 ) + ( i - 1 );\n\t\t\t\tvar b = ( radialSegments + 1 ) * j + ( i - 1 );\n\t\t\t\tvar c = ( radialSegments + 1 ) * j + i;\n\t\t\t\tvar d = ( radialSegments + 1 ) * ( j - 1 ) + i;\n\n\t\t\t\t// faces\n\n\t\t\t\tindices.push( a, b, d );\n\t\t\t\tindices.push( b, c, d );\n\n\t\t\t}\n\n\t\t}\n\n\t}\n\n\tfunction generateUVs() {\n\n\t\tfor ( i = 0; i <= tubularSegments; i ++ ) {\n\n\t\t\tfor ( j = 0; j <= radialSegments; j ++ ) {\n\n\t\t\t\tuv.x = i / tubularSegments;\n\t\t\t\tuv.y = j / radialSegments;\n\n\t\t\t\tuvs.push( uv.x, uv.y );\n\n\t\t\t}\n\n\t\t}\n\n\t}\n\n}\n\nTubeBufferGeometry.prototype = Object.create( BufferGeometry.prototype );\nTubeBufferGeometry.prototype.constructor = TubeBufferGeometry;\n\n\nexport { TubeBufferGeometry };\n","import { Geometry } from '../core/Geometry';\nimport { TubeBufferGeometry } from './TubeBufferGeometry';\n\n/**\n * @author oosmoxiecode / https://github.com/oosmoxiecode\n * @author WestLangley / https://github.com/WestLangley\n * @author zz85 / https://github.com/zz85\n * @author miningold / https://github.com/miningold\n * @author jonobr1 / https://github.com/jonobr1\n *\n * Creates a tube which extrudes along a 3d spline.\n */\n\nfunction TubeGeometry( path, tubularSegments, radius, radialSegments, closed, taper ) {\n\n\tGeometry.call( this );\n\n\tthis.type = 'TubeGeometry';\n\n\tthis.parameters = {\n\t\tpath: path,\n\t\ttubularSegments: tubularSegments,\n\t\tradius: radius,\n\t\tradialSegments: radialSegments,\n\t\tclosed: closed\n\t};\n\n\tif ( taper !== undefined ) console.warn( 'THREE.TubeGeometry: taper has been removed.' );\n\n\tvar bufferGeometry = new TubeBufferGeometry( path, tubularSegments, radius, radialSegments, closed );\n\n\t// expose internals\n\n\tthis.tangents = bufferGeometry.tangents;\n\tthis.normals = bufferGeometry.normals;\n\tthis.binormals = bufferGeometry.binormals;\n\n\t// create geometry\n\n\tthis.fromBufferGeometry( bufferGeometry );\n\tthis.mergeVertices();\n\n}\n\nTubeGeometry.prototype = Object.create( Geometry.prototype );\nTubeGeometry.prototype.constructor = TubeGeometry;\n\n\nexport { TubeGeometry };\n","import { BufferGeometry } from '../core/BufferGeometry';\nimport { Vector3 } from '../math/Vector3';\nimport { Vector2 } from '../math/Vector2';\nimport { BufferAttribute } from '../core/BufferAttribute';\n\n/**\n * @author Mugen87 / https://github.com/Mugen87\n *\n * see: http://www.blackpawn.com/texts/pqtorus/\n */\nfunction TorusKnotBufferGeometry( radius, tube, tubularSegments, radialSegments, p, q ) {\n\n\tBufferGeometry.call( this );\n\n\tthis.type = 'TorusKnotBufferGeometry';\n\n\tthis.parameters = {\n\t\tradius: radius,\n\t\ttube: tube,\n\t\ttubularSegments: tubularSegments,\n\t\tradialSegments: radialSegments,\n\t\tp: p,\n\t\tq: q\n\t};\n\n\tradius = radius || 100;\n\ttube = tube || 40;\n\ttubularSegments = Math.floor( tubularSegments ) || 64;\n\tradialSegments = Math.floor( radialSegments ) || 8;\n\tp = p || 2;\n\tq = q || 3;\n\n\t// used to calculate buffer length\n\tvar vertexCount = ( ( radialSegments + 1 ) * ( tubularSegments + 1 ) );\n\tvar indexCount = radialSegments * tubularSegments * 2 * 3;\n\n\t// buffers\n\tvar indices = new BufferAttribute( new ( indexCount > 65535 ? Uint32Array : Uint16Array )( indexCount ) , 1 );\n\tvar vertices = new BufferAttribute( new Float32Array( vertexCount * 3 ), 3 );\n\tvar normals = new BufferAttribute( new Float32Array( vertexCount * 3 ), 3 );\n\tvar uvs = new BufferAttribute( new Float32Array( vertexCount * 2 ), 2 );\n\n\t// helper variables\n\tvar i, j, index = 0, indexOffset = 0;\n\n\tvar vertex = new Vector3();\n\tvar normal = new Vector3();\n\tvar uv = new Vector2();\n\n\tvar P1 = new Vector3();\n\tvar P2 = new Vector3();\n\n\tvar B = new Vector3();\n\tvar T = new Vector3();\n\tvar N = new Vector3();\n\n\t// generate vertices, normals and uvs\n\n\tfor ( i = 0; i <= tubularSegments; ++ i ) {\n\n\t\t// the radian \"u\" is used to calculate the position on the torus curve of the current tubular segement\n\n\t\tvar u = i / tubularSegments * p * Math.PI * 2;\n\n\t\t// now we calculate two points. P1 is our current position on the curve, P2 is a little farther ahead.\n\t\t// these points are used to create a special \"coordinate space\", which is necessary to calculate the correct vertex positions\n\n\t\tcalculatePositionOnCurve( u, p, q, radius, P1 );\n\t\tcalculatePositionOnCurve( u + 0.01, p, q, radius, P2 );\n\n\t\t// calculate orthonormal basis\n\n\t\tT.subVectors( P2, P1 );\n\t\tN.addVectors( P2, P1 );\n\t\tB.crossVectors( T, N );\n\t\tN.crossVectors( B, T );\n\n\t\t// normalize B, N. T can be ignored, we don't use it\n\n\t\tB.normalize();\n\t\tN.normalize();\n\n\t\tfor ( j = 0; j <= radialSegments; ++ j ) {\n\n\t\t\t// now calculate the vertices. they are nothing more than an extrusion of the torus curve.\n\t\t\t// because we extrude a shape in the xy-plane, there is no need to calculate a z-value.\n\n\t\t\tvar v = j / radialSegments * Math.PI * 2;\n\t\t\tvar cx = - tube * Math.cos( v );\n\t\t\tvar cy = tube * Math.sin( v );\n\n\t\t\t// now calculate the final vertex position.\n\t\t\t// first we orient the extrusion with our basis vectos, then we add it to the current position on the curve\n\n\t\t\tvertex.x = P1.x + ( cx * N.x + cy * B.x );\n\t\t\tvertex.y = P1.y + ( cx * N.y + cy * B.y );\n\t\t\tvertex.z = P1.z + ( cx * N.z + cy * B.z );\n\n\t\t\t// vertex\n\t\t\tvertices.setXYZ( index, vertex.x, vertex.y, vertex.z );\n\n\t\t\t// normal (P1 is always the center/origin of the extrusion, thus we can use it to calculate the normal)\n\t\t\tnormal.subVectors( vertex, P1 ).normalize();\n\t\t\tnormals.setXYZ( index, normal.x, normal.y, normal.z );\n\n\t\t\t// uv\n\t\t\tuv.x = i / tubularSegments;\n\t\t\tuv.y = j / radialSegments;\n\t\t\tuvs.setXY( index, uv.x, uv.y );\n\n\t\t\t// increase index\n\t\t\tindex ++;\n\n\t\t}\n\n\t}\n\n\t// generate indices\n\n\tfor ( j = 1; j <= tubularSegments; j ++ ) {\n\n\t\tfor ( i = 1; i <= radialSegments; i ++ ) {\n\n\t\t\t// indices\n\t\t\tvar a = ( radialSegments + 1 ) * ( j - 1 ) + ( i - 1 );\n\t\t\tvar b = ( radialSegments + 1 ) * j + ( i - 1 );\n\t\t\tvar c = ( radialSegments + 1 ) * j + i;\n\t\t\tvar d = ( radialSegments + 1 ) * ( j - 1 ) + i;\n\n\t\t\t// face one\n\t\t\tindices.setX( indexOffset, a ); indexOffset++;\n\t\t\tindices.setX( indexOffset, b ); indexOffset++;\n\t\t\tindices.setX( indexOffset, d ); indexOffset++;\n\n\t\t\t// face two\n\t\t\tindices.setX( indexOffset, b ); indexOffset++;\n\t\t\tindices.setX( indexOffset, c ); indexOffset++;\n\t\t\tindices.setX( indexOffset, d ); indexOffset++;\n\n\t\t}\n\n\t}\n\n\t// build geometry\n\n\tthis.setIndex( indices );\n\tthis.addAttribute( 'position', vertices );\n\tthis.addAttribute( 'normal', normals );\n\tthis.addAttribute( 'uv', uvs );\n\n\t// this function calculates the current position on the torus curve\n\n\tfunction calculatePositionOnCurve( u, p, q, radius, position ) {\n\n\t\tvar cu = Math.cos( u );\n\t\tvar su = Math.sin( u );\n\t\tvar quOverP = q / p * u;\n\t\tvar cs = Math.cos( quOverP );\n\n\t\tposition.x = radius * ( 2 + cs ) * 0.5 * cu;\n\t\tposition.y = radius * ( 2 + cs ) * su * 0.5;\n\t\tposition.z = radius * Math.sin( quOverP ) * 0.5;\n\n\t}\n\n}\n\nTorusKnotBufferGeometry.prototype = Object.create( BufferGeometry.prototype );\nTorusKnotBufferGeometry.prototype.constructor = TorusKnotBufferGeometry;\n\n\nexport { TorusKnotBufferGeometry };\n","import { Geometry } from '../core/Geometry';\nimport { TorusKnotBufferGeometry } from './TorusKnotBufferGeometry';\n\n/**\n * @author oosmoxiecode\n */\n\nfunction TorusKnotGeometry( radius, tube, tubularSegments, radialSegments, p, q, heightScale ) {\n\n\tGeometry.call( this );\n\n\tthis.type = 'TorusKnotGeometry';\n\n\tthis.parameters = {\n\t\tradius: radius,\n\t\ttube: tube,\n\t\ttubularSegments: tubularSegments,\n\t\tradialSegments: radialSegments,\n\t\tp: p,\n\t\tq: q\n\t};\n\n\tif( heightScale !== undefined ) console.warn( 'THREE.TorusKnotGeometry: heightScale has been deprecated. Use .scale( x, y, z ) instead.' );\n\n\tthis.fromBufferGeometry( new TorusKnotBufferGeometry( radius, tube, tubularSegments, radialSegments, p, q ) );\n\tthis.mergeVertices();\n\n}\n\nTorusKnotGeometry.prototype = Object.create( Geometry.prototype );\nTorusKnotGeometry.prototype.constructor = TorusKnotGeometry;\n\n\nexport { TorusKnotGeometry };\n","import { BufferGeometry } from '../core/BufferGeometry';\nimport { BufferAttribute } from '../core/BufferAttribute';\nimport { Vector3 } from '../math/Vector3';\n\n/**\n * @author Mugen87 / https://github.com/Mugen87\n */\n\nfunction TorusBufferGeometry( radius, tube, radialSegments, tubularSegments, arc ) {\n\n\tBufferGeometry.call( this );\n\n\tthis.type = 'TorusBufferGeometry';\n\n\tthis.parameters = {\n\t\tradius: radius,\n\t\ttube: tube,\n\t\tradialSegments: radialSegments,\n\t\ttubularSegments: tubularSegments,\n\t\tarc: arc\n\t};\n\n\tradius = radius || 100;\n\ttube = tube || 40;\n\tradialSegments = Math.floor( radialSegments ) || 8;\n\ttubularSegments = Math.floor( tubularSegments ) || 6;\n\tarc = arc || Math.PI * 2;\n\n\t// used to calculate buffer length\n\tvar vertexCount = ( ( radialSegments + 1 ) * ( tubularSegments + 1 ) );\n\tvar indexCount = radialSegments * tubularSegments * 2 * 3;\n\n\t// buffers\n\tvar indices = new ( indexCount > 65535 ? Uint32Array : Uint16Array )( indexCount );\n\tvar vertices = new Float32Array( vertexCount * 3 );\n\tvar normals = new Float32Array( vertexCount * 3 );\n\tvar uvs = new Float32Array( vertexCount * 2 );\n\n\t// offset variables\n\tvar vertexBufferOffset = 0;\n\tvar uvBufferOffset = 0;\n\tvar indexBufferOffset = 0;\n\n\t// helper variables\n\tvar center = new Vector3();\n\tvar vertex = new Vector3();\n\tvar normal = new Vector3();\n\n\tvar j, i;\n\n\t// generate vertices, normals and uvs\n\n\tfor ( j = 0; j <= radialSegments; j ++ ) {\n\n\t\tfor ( i = 0; i <= tubularSegments; i ++ ) {\n\n\t\t\tvar u = i / tubularSegments * arc;\n\t\t\tvar v = j / radialSegments * Math.PI * 2;\n\n\t\t\t// vertex\n\t\t\tvertex.x = ( radius + tube * Math.cos( v ) ) * Math.cos( u );\n\t\t\tvertex.y = ( radius + tube * Math.cos( v ) ) * Math.sin( u );\n\t\t\tvertex.z = tube * Math.sin( v );\n\n\t\t\tvertices[ vertexBufferOffset ] = vertex.x;\n\t\t\tvertices[ vertexBufferOffset + 1 ] = vertex.y;\n\t\t\tvertices[ vertexBufferOffset + 2 ] = vertex.z;\n\n\t\t\t// this vector is used to calculate the normal\n\t\t\tcenter.x = radius * Math.cos( u );\n\t\t\tcenter.y = radius * Math.sin( u );\n\n\t\t\t// normal\n\t\t\tnormal.subVectors( vertex, center ).normalize();\n\n\t\t\tnormals[ vertexBufferOffset ] = normal.x;\n\t\t\tnormals[ vertexBufferOffset + 1 ] = normal.y;\n\t\t\tnormals[ vertexBufferOffset + 2 ] = normal.z;\n\n\t\t\t// uv\n\t\t\tuvs[ uvBufferOffset ] = i / tubularSegments;\n\t\t\tuvs[ uvBufferOffset + 1 ] = j / radialSegments;\n\n\t\t\t// update offsets\n\t\t\tvertexBufferOffset += 3;\n\t\t\tuvBufferOffset += 2;\n\n\t\t}\n\n\t}\n\n\t// generate indices\n\n\tfor ( j = 1; j <= radialSegments; j ++ ) {\n\n\t\tfor ( i = 1; i <= tubularSegments; i ++ ) {\n\n\t\t\t// indices\n\t\t\tvar a = ( tubularSegments + 1 ) * j + i - 1;\n\t\t\tvar b = ( tubularSegments + 1 ) * ( j - 1 ) + i - 1;\n\t\t\tvar c = ( tubularSegments + 1 ) * ( j - 1 ) + i;\n\t\t\tvar d = ( tubularSegments + 1 ) * j + i;\n\n\t\t\t// face one\n\t\t\tindices[ indexBufferOffset ] = a;\n\t\t\tindices[ indexBufferOffset + 1 ] = b;\n\t\t\tindices[ indexBufferOffset + 2 ] = d;\n\n\t\t\t// face two\n\t\t\tindices[ indexBufferOffset + 3 ] = b;\n\t\t\tindices[ indexBufferOffset + 4 ] = c;\n\t\t\tindices[ indexBufferOffset + 5 ] = d;\n\n\t\t\t// update offset\n\t\t\tindexBufferOffset += 6;\n\n\t\t}\n\n\t}\n\n\t// build geometry\n\tthis.setIndex( new BufferAttribute( indices, 1 ) );\n\tthis.addAttribute( 'position', new BufferAttribute( vertices, 3 ) );\n\tthis.addAttribute( 'normal', new BufferAttribute( normals, 3 ) );\n\tthis.addAttribute( 'uv', new BufferAttribute( uvs, 2 ) );\n\n}\n\nTorusBufferGeometry.prototype = Object.create( BufferGeometry.prototype );\nTorusBufferGeometry.prototype.constructor = TorusBufferGeometry;\n\n\nexport { TorusBufferGeometry };\n","import { Geometry } from '../core/Geometry';\nimport { TorusBufferGeometry } from './TorusBufferGeometry';\n\n/**\n * @author oosmoxiecode\n * @author mrdoob / http://mrdoob.com/\n * based on http://code.google.com/p/away3d/source/browse/trunk/fp10/Away3DLite/src/away3dlite/primitives/Torus.as?r=2888\n */\n\nfunction TorusGeometry( radius, tube, radialSegments, tubularSegments, arc ) {\n\n\tGeometry.call( this );\n\n\tthis.type = 'TorusGeometry';\n\n\tthis.parameters = {\n\t\tradius: radius,\n\t\ttube: tube,\n\t\tradialSegments: radialSegments,\n\t\ttubularSegments: tubularSegments,\n\t\tarc: arc\n\t};\n\n\tthis.fromBufferGeometry( new TorusBufferGeometry( radius, tube, radialSegments, tubularSegments, arc ) );\n\n}\n\nTorusGeometry.prototype = Object.create( Geometry.prototype );\nTorusGeometry.prototype.constructor = TorusGeometry;\n\n\nexport { TorusGeometry };\n","/**\n * @author zz85 / http://www.lab4games.net/zz85/blog\n */\n\nvar ShapeUtils = {\n\n\t// calculate area of the contour polygon\n\n\tarea: function ( contour ) {\n\n\t\tvar n = contour.length;\n\t\tvar a = 0.0;\n\n\t\tfor ( var p = n - 1, q = 0; q < n; p = q ++ ) {\n\n\t\t\ta += contour[ p ].x * contour[ q ].y - contour[ q ].x * contour[ p ].y;\n\n\t\t}\n\n\t\treturn a * 0.5;\n\n\t},\n\n\ttriangulate: ( function () {\n\n\t\t/**\n\t\t * This code is a quick port of code written in C++ which was submitted to\n\t\t * flipcode.com by John W. Ratcliff // July 22, 2000\n\t\t * See original code and more information here:\n\t\t * http://www.flipcode.com/archives/Efficient_Polygon_Triangulation.shtml\n\t\t *\n\t\t * ported to actionscript by Zevan Rosser\n\t\t * www.actionsnippet.com\n\t\t *\n\t\t * ported to javascript by Joshua Koo\n\t\t * http://www.lab4games.net/zz85/blog\n\t\t *\n\t\t */\n\n\t\tfunction snip( contour, u, v, w, n, verts ) {\n\n\t\t\tvar p;\n\t\t\tvar ax, ay, bx, by;\n\t\t\tvar cx, cy, px, py;\n\n\t\t\tax = contour[ verts[ u ] ].x;\n\t\t\tay = contour[ verts[ u ] ].y;\n\n\t\t\tbx = contour[ verts[ v ] ].x;\n\t\t\tby = contour[ verts[ v ] ].y;\n\n\t\t\tcx = contour[ verts[ w ] ].x;\n\t\t\tcy = contour[ verts[ w ] ].y;\n\n\t\t\tif ( ( bx - ax ) * ( cy - ay ) - ( by - ay ) * ( cx - ax ) <= 0 ) return false;\n\n\t\t\tvar aX, aY, bX, bY, cX, cY;\n\t\t\tvar apx, apy, bpx, bpy, cpx, cpy;\n\t\t\tvar cCROSSap, bCROSScp, aCROSSbp;\n\n\t\t\taX = cx - bx; aY = cy - by;\n\t\t\tbX = ax - cx; bY = ay - cy;\n\t\t\tcX = bx - ax; cY = by - ay;\n\n\t\t\tfor ( p = 0; p < n; p ++ ) {\n\n\t\t\t\tpx = contour[ verts[ p ] ].x;\n\t\t\t\tpy = contour[ verts[ p ] ].y;\n\n\t\t\t\tif ( ( ( px === ax ) && ( py === ay ) ) ||\n\t\t\t\t\t ( ( px === bx ) && ( py === by ) ) ||\n\t\t\t\t\t ( ( px === cx ) && ( py === cy ) ) )\tcontinue;\n\n\t\t\t\tapx = px - ax; apy = py - ay;\n\t\t\t\tbpx = px - bx; bpy = py - by;\n\t\t\t\tcpx = px - cx; cpy = py - cy;\n\n\t\t\t\t// see if p is inside triangle abc\n\n\t\t\t\taCROSSbp = aX * bpy - aY * bpx;\n\t\t\t\tcCROSSap = cX * apy - cY * apx;\n\t\t\t\tbCROSScp = bX * cpy - bY * cpx;\n\n\t\t\t\tif ( ( aCROSSbp >= - Number.EPSILON ) && ( bCROSScp >= - Number.EPSILON ) && ( cCROSSap >= - Number.EPSILON ) ) return false;\n\n\t\t\t}\n\n\t\t\treturn true;\n\n\t\t}\n\n\t\t// takes in an contour array and returns\n\n\t\treturn function triangulate( contour, indices ) {\n\n\t\t\tvar n = contour.length;\n\n\t\t\tif ( n < 3 ) return null;\n\n\t\t\tvar result = [],\n\t\t\t\tverts = [],\n\t\t\t\tvertIndices = [];\n\n\t\t\t/* we want a counter-clockwise polygon in verts */\n\n\t\t\tvar u, v, w;\n\n\t\t\tif ( ShapeUtils.area( contour ) > 0.0 ) {\n\n\t\t\t\tfor ( v = 0; v < n; v ++ ) verts[ v ] = v;\n\n\t\t\t} else {\n\n\t\t\t\tfor ( v = 0; v < n; v ++ ) verts[ v ] = ( n - 1 ) - v;\n\n\t\t\t}\n\n\t\t\tvar nv = n;\n\n\t\t\t/* remove nv - 2 vertices, creating 1 triangle every time */\n\n\t\t\tvar count = 2 * nv; /* error detection */\n\n\t\t\tfor ( v = nv - 1; nv > 2; ) {\n\n\t\t\t\t/* if we loop, it is probably a non-simple polygon */\n\n\t\t\t\tif ( ( count -- ) <= 0 ) {\n\n\t\t\t\t\t//** Triangulate: ERROR - probable bad polygon!\n\n\t\t\t\t\t//throw ( \"Warning, unable to triangulate polygon!\" );\n\t\t\t\t\t//return null;\n\t\t\t\t\t// Sometimes warning is fine, especially polygons are triangulated in reverse.\n\t\t\t\t\tconsole.warn( 'THREE.ShapeUtils: Unable to triangulate polygon! in triangulate()' );\n\n\t\t\t\t\tif ( indices ) return vertIndices;\n\t\t\t\t\treturn result;\n\n\t\t\t\t}\n\n\t\t\t\t/* three consecutive vertices in current polygon, */\n\n\t\t\t\tu = v; \t \tif ( nv <= u ) u = 0; /* previous */\n\t\t\t\tv = u + 1; if ( nv <= v ) v = 0; /* new v */\n\t\t\t\tw = v + 1; if ( nv <= w ) w = 0; /* next */\n\n\t\t\t\tif ( snip( contour, u, v, w, nv, verts ) ) {\n\n\t\t\t\t\tvar a, b, c, s, t;\n\n\t\t\t\t\t/* true names of the vertices */\n\n\t\t\t\t\ta = verts[ u ];\n\t\t\t\t\tb = verts[ v ];\n\t\t\t\t\tc = verts[ w ];\n\n\t\t\t\t\t/* output Triangle */\n\n\t\t\t\t\tresult.push( [ contour[ a ],\n\t\t\t\t\t\tcontour[ b ],\n\t\t\t\t\t\tcontour[ c ] ] );\n\n\n\t\t\t\t\tvertIndices.push( [ verts[ u ], verts[ v ], verts[ w ] ] );\n\n\t\t\t\t\t/* remove v from the remaining polygon */\n\n\t\t\t\t\tfor ( s = v, t = v + 1; t < nv; s ++, t ++ ) {\n\n\t\t\t\t\t\tverts[ s ] = verts[ t ];\n\n\t\t\t\t\t}\n\n\t\t\t\t\tnv --;\n\n\t\t\t\t\t/* reset error detection counter */\n\n\t\t\t\t\tcount = 2 * nv;\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t\tif ( indices ) return vertIndices;\n\t\t\treturn result;\n\n\t\t}\n\n\t} )(),\n\n\ttriangulateShape: function ( contour, holes ) {\n\n\t\tfunction removeDupEndPts(points) {\n\n\t\t\tvar l = points.length;\n\n\t\t\tif ( l > 2 && points[ l - 1 ].equals( points[ 0 ] ) ) {\n\n\t\t\t\tpoints.pop();\n\n\t\t\t}\n\n\t\t}\n\n\t\tremoveDupEndPts( contour );\n\t\tholes.forEach( removeDupEndPts );\n\n\t\tfunction point_in_segment_2D_colin( inSegPt1, inSegPt2, inOtherPt ) {\n\n\t\t\t// inOtherPt needs to be collinear to the inSegment\n\t\t\tif ( inSegPt1.x !== inSegPt2.x ) {\n\n\t\t\t\tif ( inSegPt1.x < inSegPt2.x ) {\n\n\t\t\t\t\treturn\t( ( inSegPt1.x <= inOtherPt.x ) && ( inOtherPt.x <= inSegPt2.x ) );\n\n\t\t\t\t} else {\n\n\t\t\t\t\treturn\t( ( inSegPt2.x <= inOtherPt.x ) && ( inOtherPt.x <= inSegPt1.x ) );\n\n\t\t\t\t}\n\n\t\t\t} else {\n\n\t\t\t\tif ( inSegPt1.y < inSegPt2.y ) {\n\n\t\t\t\t\treturn\t( ( inSegPt1.y <= inOtherPt.y ) && ( inOtherPt.y <= inSegPt2.y ) );\n\n\t\t\t\t} else {\n\n\t\t\t\t\treturn\t( ( inSegPt2.y <= inOtherPt.y ) && ( inOtherPt.y <= inSegPt1.y ) );\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t}\n\n\t\tfunction intersect_segments_2D( inSeg1Pt1, inSeg1Pt2, inSeg2Pt1, inSeg2Pt2, inExcludeAdjacentSegs ) {\n\n\t\t\tvar seg1dx = inSeg1Pt2.x - inSeg1Pt1.x, seg1dy = inSeg1Pt2.y - inSeg1Pt1.y;\n\t\t\tvar seg2dx = inSeg2Pt2.x - inSeg2Pt1.x, seg2dy = inSeg2Pt2.y - inSeg2Pt1.y;\n\n\t\t\tvar seg1seg2dx = inSeg1Pt1.x - inSeg2Pt1.x;\n\t\t\tvar seg1seg2dy = inSeg1Pt1.y - inSeg2Pt1.y;\n\n\t\t\tvar limit\t\t= seg1dy * seg2dx - seg1dx * seg2dy;\n\t\t\tvar perpSeg1\t= seg1dy * seg1seg2dx - seg1dx * seg1seg2dy;\n\n\t\t\tif ( Math.abs( limit ) > Number.EPSILON ) {\n\n\t\t\t\t// not parallel\n\n\t\t\t\tvar perpSeg2;\n\t\t\t\tif ( limit > 0 ) {\n\n\t\t\t\t\tif ( ( perpSeg1 < 0 ) || ( perpSeg1 > limit ) ) \t\treturn [];\n\t\t\t\t\tperpSeg2 = seg2dy * seg1seg2dx - seg2dx * seg1seg2dy;\n\t\t\t\t\tif ( ( perpSeg2 < 0 ) || ( perpSeg2 > limit ) ) \t\treturn [];\n\n\t\t\t\t} else {\n\n\t\t\t\t\tif ( ( perpSeg1 > 0 ) || ( perpSeg1 < limit ) ) \t\treturn [];\n\t\t\t\t\tperpSeg2 = seg2dy * seg1seg2dx - seg2dx * seg1seg2dy;\n\t\t\t\t\tif ( ( perpSeg2 > 0 ) || ( perpSeg2 < limit ) ) \t\treturn [];\n\n\t\t\t\t}\n\n\t\t\t\t// i.e. to reduce rounding errors\n\t\t\t\t// intersection at endpoint of segment#1?\n\t\t\t\tif ( perpSeg2 === 0 ) {\n\n\t\t\t\t\tif ( ( inExcludeAdjacentSegs ) &&\n\t\t\t\t\t\t ( ( perpSeg1 === 0 ) || ( perpSeg1 === limit ) ) )\t\treturn [];\n\t\t\t\t\treturn [ inSeg1Pt1 ];\n\n\t\t\t\t}\n\t\t\t\tif ( perpSeg2 === limit ) {\n\n\t\t\t\t\tif ( ( inExcludeAdjacentSegs ) &&\n\t\t\t\t\t\t ( ( perpSeg1 === 0 ) || ( perpSeg1 === limit ) ) )\t\treturn [];\n\t\t\t\t\treturn [ inSeg1Pt2 ];\n\n\t\t\t\t}\n\t\t\t\t// intersection at endpoint of segment#2?\n\t\t\t\tif ( perpSeg1 === 0 )\t\treturn [ inSeg2Pt1 ];\n\t\t\t\tif ( perpSeg1 === limit )\treturn [ inSeg2Pt2 ];\n\n\t\t\t\t// return real intersection point\n\t\t\t\tvar factorSeg1 = perpSeg2 / limit;\n\t\t\t\treturn\t[ { x: inSeg1Pt1.x + factorSeg1 * seg1dx,\n\t\t\t\t\t\t\ty: inSeg1Pt1.y + factorSeg1 * seg1dy } ];\n\n\t\t\t} else {\n\n\t\t\t\t// parallel or collinear\n\t\t\t\tif ( ( perpSeg1 !== 0 ) ||\n\t\t\t\t\t ( seg2dy * seg1seg2dx !== seg2dx * seg1seg2dy ) ) \t\t\treturn [];\n\n\t\t\t\t// they are collinear or degenerate\n\t\t\t\tvar seg1Pt = ( ( seg1dx === 0 ) && ( seg1dy === 0 ) );\t// segment1 is just a point?\n\t\t\t\tvar seg2Pt = ( ( seg2dx === 0 ) && ( seg2dy === 0 ) );\t// segment2 is just a point?\n\t\t\t\t// both segments are points\n\t\t\t\tif ( seg1Pt && seg2Pt ) {\n\n\t\t\t\t\tif ( ( inSeg1Pt1.x !== inSeg2Pt1.x ) ||\n\t\t\t\t\t\t ( inSeg1Pt1.y !== inSeg2Pt1.y ) )\t\treturn [];\t// they are distinct points\n\t\t\t\t\treturn [ inSeg1Pt1 ]; \t\t\t\t\t\t// they are the same point\n\n\t\t\t\t}\n\t\t\t\t// segment#1 is a single point\n\t\t\t\tif ( seg1Pt ) {\n\n\t\t\t\t\tif ( ! point_in_segment_2D_colin( inSeg2Pt1, inSeg2Pt2, inSeg1Pt1 ) )\t\treturn [];\t\t// but not in segment#2\n\t\t\t\t\treturn [ inSeg1Pt1 ];\n\n\t\t\t\t}\n\t\t\t\t// segment#2 is a single point\n\t\t\t\tif ( seg2Pt ) {\n\n\t\t\t\t\tif ( ! point_in_segment_2D_colin( inSeg1Pt1, inSeg1Pt2, inSeg2Pt1 ) )\t\treturn [];\t\t// but not in segment#1\n\t\t\t\t\treturn [ inSeg2Pt1 ];\n\n\t\t\t\t}\n\n\t\t\t\t// they are collinear segments, which might overlap\n\t\t\t\tvar seg1min, seg1max, seg1minVal, seg1maxVal;\n\t\t\t\tvar seg2min, seg2max, seg2minVal, seg2maxVal;\n\t\t\t\tif ( seg1dx !== 0 ) {\n\n\t\t\t\t\t// the segments are NOT on a vertical line\n\t\t\t\t\tif ( inSeg1Pt1.x < inSeg1Pt2.x ) {\n\n\t\t\t\t\t\tseg1min = inSeg1Pt1; seg1minVal = inSeg1Pt1.x;\n\t\t\t\t\t\tseg1max = inSeg1Pt2; seg1maxVal = inSeg1Pt2.x;\n\n\t\t\t\t\t} else {\n\n\t\t\t\t\t\tseg1min = inSeg1Pt2; seg1minVal = inSeg1Pt2.x;\n\t\t\t\t\t\tseg1max = inSeg1Pt1; seg1maxVal = inSeg1Pt1.x;\n\n\t\t\t\t\t}\n\t\t\t\t\tif ( inSeg2Pt1.x < inSeg2Pt2.x ) {\n\n\t\t\t\t\t\tseg2min = inSeg2Pt1; seg2minVal = inSeg2Pt1.x;\n\t\t\t\t\t\tseg2max = inSeg2Pt2; seg2maxVal = inSeg2Pt2.x;\n\n\t\t\t\t\t} else {\n\n\t\t\t\t\t\tseg2min = inSeg2Pt2; seg2minVal = inSeg2Pt2.x;\n\t\t\t\t\t\tseg2max = inSeg2Pt1; seg2maxVal = inSeg2Pt1.x;\n\n\t\t\t\t\t}\n\n\t\t\t\t} else {\n\n\t\t\t\t\t// the segments are on a vertical line\n\t\t\t\t\tif ( inSeg1Pt1.y < inSeg1Pt2.y ) {\n\n\t\t\t\t\t\tseg1min = inSeg1Pt1; seg1minVal = inSeg1Pt1.y;\n\t\t\t\t\t\tseg1max = inSeg1Pt2; seg1maxVal = inSeg1Pt2.y;\n\n\t\t\t\t\t} else {\n\n\t\t\t\t\t\tseg1min = inSeg1Pt2; seg1minVal = inSeg1Pt2.y;\n\t\t\t\t\t\tseg1max = inSeg1Pt1; seg1maxVal = inSeg1Pt1.y;\n\n\t\t\t\t\t}\n\t\t\t\t\tif ( inSeg2Pt1.y < inSeg2Pt2.y ) {\n\n\t\t\t\t\t\tseg2min = inSeg2Pt1; seg2minVal = inSeg2Pt1.y;\n\t\t\t\t\t\tseg2max = inSeg2Pt2; seg2maxVal = inSeg2Pt2.y;\n\n\t\t\t\t\t} else {\n\n\t\t\t\t\t\tseg2min = inSeg2Pt2; seg2minVal = inSeg2Pt2.y;\n\t\t\t\t\t\tseg2max = inSeg2Pt1; seg2maxVal = inSeg2Pt1.y;\n\n\t\t\t\t\t}\n\n\t\t\t\t}\n\t\t\t\tif ( seg1minVal <= seg2minVal ) {\n\n\t\t\t\t\tif ( seg1maxVal < seg2minVal )\treturn [];\n\t\t\t\t\tif ( seg1maxVal === seg2minVal )\t{\n\n\t\t\t\t\t\tif ( inExcludeAdjacentSegs )\t\treturn [];\n\t\t\t\t\t\treturn [ seg2min ];\n\n\t\t\t\t\t}\n\t\t\t\t\tif ( seg1maxVal <= seg2maxVal )\treturn [ seg2min, seg1max ];\n\t\t\t\t\treturn\t[ seg2min, seg2max ];\n\n\t\t\t\t} else {\n\n\t\t\t\t\tif ( seg1minVal > seg2maxVal )\treturn [];\n\t\t\t\t\tif ( seg1minVal === seg2maxVal )\t{\n\n\t\t\t\t\t\tif ( inExcludeAdjacentSegs )\t\treturn [];\n\t\t\t\t\t\treturn [ seg1min ];\n\n\t\t\t\t\t}\n\t\t\t\t\tif ( seg1maxVal <= seg2maxVal )\treturn [ seg1min, seg1max ];\n\t\t\t\t\treturn\t[ seg1min, seg2max ];\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t}\n\n\t\tfunction isPointInsideAngle( inVertex, inLegFromPt, inLegToPt, inOtherPt ) {\n\n\t\t\t// The order of legs is important\n\n\t\t\t// translation of all points, so that Vertex is at (0,0)\n\t\t\tvar legFromPtX\t= inLegFromPt.x - inVertex.x, legFromPtY\t= inLegFromPt.y - inVertex.y;\n\t\t\tvar legToPtX\t= inLegToPt.x\t- inVertex.x, legToPtY\t\t= inLegToPt.y\t- inVertex.y;\n\t\t\tvar otherPtX\t= inOtherPt.x\t- inVertex.x, otherPtY\t\t= inOtherPt.y\t- inVertex.y;\n\n\t\t\t// main angle >0: < 180 deg.; 0: 180 deg.; <0: > 180 deg.\n\t\t\tvar from2toAngle\t= legFromPtX * legToPtY - legFromPtY * legToPtX;\n\t\t\tvar from2otherAngle\t= legFromPtX * otherPtY - legFromPtY * otherPtX;\n\n\t\t\tif ( Math.abs( from2toAngle ) > Number.EPSILON ) {\n\n\t\t\t\t// angle != 180 deg.\n\n\t\t\t\tvar other2toAngle\t\t= otherPtX * legToPtY - otherPtY * legToPtX;\n\t\t\t\t// console.log( \"from2to: \" + from2toAngle + \", from2other: \" + from2otherAngle + \", other2to: \" + other2toAngle );\n\n\t\t\t\tif ( from2toAngle > 0 ) {\n\n\t\t\t\t\t// main angle < 180 deg.\n\t\t\t\t\treturn\t( ( from2otherAngle >= 0 ) && ( other2toAngle >= 0 ) );\n\n\t\t\t\t} else {\n\n\t\t\t\t\t// main angle > 180 deg.\n\t\t\t\t\treturn\t( ( from2otherAngle >= 0 ) || ( other2toAngle >= 0 ) );\n\n\t\t\t\t}\n\n\t\t\t} else {\n\n\t\t\t\t// angle == 180 deg.\n\t\t\t\t// console.log( \"from2to: 180 deg., from2other: \" + from2otherAngle );\n\t\t\t\treturn\t( from2otherAngle > 0 );\n\n\t\t\t}\n\n\t\t}\n\n\n\t\tfunction removeHoles( contour, holes ) {\n\n\t\t\tvar shape = contour.concat(); // work on this shape\n\t\t\tvar hole;\n\n\t\t\tfunction isCutLineInsideAngles( inShapeIdx, inHoleIdx ) {\n\n\t\t\t\t// Check if hole point lies within angle around shape point\n\t\t\t\tvar lastShapeIdx = shape.length - 1;\n\n\t\t\t\tvar prevShapeIdx = inShapeIdx - 1;\n\t\t\t\tif ( prevShapeIdx < 0 )\t\t\tprevShapeIdx = lastShapeIdx;\n\n\t\t\t\tvar nextShapeIdx = inShapeIdx + 1;\n\t\t\t\tif ( nextShapeIdx > lastShapeIdx )\tnextShapeIdx = 0;\n\n\t\t\t\tvar insideAngle = isPointInsideAngle( shape[ inShapeIdx ], shape[ prevShapeIdx ], shape[ nextShapeIdx ], hole[ inHoleIdx ] );\n\t\t\t\tif ( ! insideAngle ) {\n\n\t\t\t\t\t// console.log( \"Vertex (Shape): \" + inShapeIdx + \", Point: \" + hole[inHoleIdx].x + \"/\" + hole[inHoleIdx].y );\n\t\t\t\t\treturn\tfalse;\n\n\t\t\t\t}\n\n\t\t\t\t// Check if shape point lies within angle around hole point\n\t\t\t\tvar lastHoleIdx = hole.length - 1;\n\n\t\t\t\tvar prevHoleIdx = inHoleIdx - 1;\n\t\t\t\tif ( prevHoleIdx < 0 )\t\t\tprevHoleIdx = lastHoleIdx;\n\n\t\t\t\tvar nextHoleIdx = inHoleIdx + 1;\n\t\t\t\tif ( nextHoleIdx > lastHoleIdx )\tnextHoleIdx = 0;\n\n\t\t\t\tinsideAngle = isPointInsideAngle( hole[ inHoleIdx ], hole[ prevHoleIdx ], hole[ nextHoleIdx ], shape[ inShapeIdx ] );\n\t\t\t\tif ( ! insideAngle ) {\n\n\t\t\t\t\t// console.log( \"Vertex (Hole): \" + inHoleIdx + \", Point: \" + shape[inShapeIdx].x + \"/\" + shape[inShapeIdx].y );\n\t\t\t\t\treturn\tfalse;\n\n\t\t\t\t}\n\n\t\t\t\treturn\ttrue;\n\n\t\t\t}\n\n\t\t\tfunction intersectsShapeEdge( inShapePt, inHolePt ) {\n\n\t\t\t\t// checks for intersections with shape edges\n\t\t\t\tvar sIdx, nextIdx, intersection;\n\t\t\t\tfor ( sIdx = 0; sIdx < shape.length; sIdx ++ ) {\n\n\t\t\t\t\tnextIdx = sIdx + 1; nextIdx %= shape.length;\n\t\t\t\t\tintersection = intersect_segments_2D( inShapePt, inHolePt, shape[ sIdx ], shape[ nextIdx ], true );\n\t\t\t\t\tif ( intersection.length > 0 )\t\treturn\ttrue;\n\n\t\t\t\t}\n\n\t\t\t\treturn\tfalse;\n\n\t\t\t}\n\n\t\t\tvar indepHoles = [];\n\n\t\t\tfunction intersectsHoleEdge( inShapePt, inHolePt ) {\n\n\t\t\t\t// checks for intersections with hole edges\n\t\t\t\tvar ihIdx, chkHole,\n\t\t\t\t\thIdx, nextIdx, intersection;\n\t\t\t\tfor ( ihIdx = 0; ihIdx < indepHoles.length; ihIdx ++ ) {\n\n\t\t\t\t\tchkHole = holes[ indepHoles[ ihIdx ]];\n\t\t\t\t\tfor ( hIdx = 0; hIdx < chkHole.length; hIdx ++ ) {\n\n\t\t\t\t\t\tnextIdx = hIdx + 1; nextIdx %= chkHole.length;\n\t\t\t\t\t\tintersection = intersect_segments_2D( inShapePt, inHolePt, chkHole[ hIdx ], chkHole[ nextIdx ], true );\n\t\t\t\t\t\tif ( intersection.length > 0 )\t\treturn\ttrue;\n\n\t\t\t\t\t}\n\n\t\t\t\t}\n\t\t\t\treturn\tfalse;\n\n\t\t\t}\n\n\t\t\tvar holeIndex, shapeIndex,\n\t\t\t\tshapePt, holePt,\n\t\t\t\tholeIdx, cutKey, failedCuts = [],\n\t\t\t\ttmpShape1, tmpShape2,\n\t\t\t\ttmpHole1, tmpHole2;\n\n\t\t\tfor ( var h = 0, hl = holes.length; h < hl; h ++ ) {\n\n\t\t\t\tindepHoles.push( h );\n\n\t\t\t}\n\n\t\t\tvar minShapeIndex = 0;\n\t\t\tvar counter = indepHoles.length * 2;\n\t\t\twhile ( indepHoles.length > 0 ) {\n\n\t\t\t\tcounter --;\n\t\t\t\tif ( counter < 0 ) {\n\n\t\t\t\t\tconsole.log( \"Infinite Loop! Holes left:\" + indepHoles.length + \", Probably Hole outside Shape!\" );\n\t\t\t\t\tbreak;\n\n\t\t\t\t}\n\n\t\t\t\t// search for shape-vertex and hole-vertex,\n\t\t\t\t// which can be connected without intersections\n\t\t\t\tfor ( shapeIndex = minShapeIndex; shapeIndex < shape.length; shapeIndex ++ ) {\n\n\t\t\t\t\tshapePt = shape[ shapeIndex ];\n\t\t\t\t\tholeIndex\t= - 1;\n\n\t\t\t\t\t// search for hole which can be reached without intersections\n\t\t\t\t\tfor ( var h = 0; h < indepHoles.length; h ++ ) {\n\n\t\t\t\t\t\tholeIdx = indepHoles[ h ];\n\n\t\t\t\t\t\t// prevent multiple checks\n\t\t\t\t\t\tcutKey = shapePt.x + \":\" + shapePt.y + \":\" + holeIdx;\n\t\t\t\t\t\tif ( failedCuts[ cutKey ] !== undefined )\t\t\tcontinue;\n\n\t\t\t\t\t\thole = holes[ holeIdx ];\n\t\t\t\t\t\tfor ( var h2 = 0; h2 < hole.length; h2 ++ ) {\n\n\t\t\t\t\t\t\tholePt = hole[ h2 ];\n\t\t\t\t\t\t\tif ( ! isCutLineInsideAngles( shapeIndex, h2 ) )\t\tcontinue;\n\t\t\t\t\t\t\tif ( intersectsShapeEdge( shapePt, holePt ) )\t\tcontinue;\n\t\t\t\t\t\t\tif ( intersectsHoleEdge( shapePt, holePt ) )\t\tcontinue;\n\n\t\t\t\t\t\t\tholeIndex = h2;\n\t\t\t\t\t\t\tindepHoles.splice( h, 1 );\n\n\t\t\t\t\t\t\ttmpShape1 = shape.slice( 0, shapeIndex + 1 );\n\t\t\t\t\t\t\ttmpShape2 = shape.slice( shapeIndex );\n\t\t\t\t\t\t\ttmpHole1 = hole.slice( holeIndex );\n\t\t\t\t\t\t\ttmpHole2 = hole.slice( 0, holeIndex + 1 );\n\n\t\t\t\t\t\t\tshape = tmpShape1.concat( tmpHole1 ).concat( tmpHole2 ).concat( tmpShape2 );\n\n\t\t\t\t\t\t\tminShapeIndex = shapeIndex;\n\n\t\t\t\t\t\t\t// Debug only, to show the selected cuts\n\t\t\t\t\t\t\t// glob_CutLines.push( [ shapePt, holePt ] );\n\n\t\t\t\t\t\t\tbreak;\n\n\t\t\t\t\t\t}\n\t\t\t\t\t\tif ( holeIndex >= 0 )\tbreak;\t\t// hole-vertex found\n\n\t\t\t\t\t\tfailedCuts[ cutKey ] = true;\t\t\t// remember failure\n\n\t\t\t\t\t}\n\t\t\t\t\tif ( holeIndex >= 0 )\tbreak;\t\t// hole-vertex found\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t\treturn shape; \t\t\t/* shape with no holes */\n\n\t\t}\n\n\n\t\tvar i, il, f, face,\n\t\t\tkey, index,\n\t\t\tallPointsMap = {};\n\n\t\t// To maintain reference to old shape, one must match coordinates, or offset the indices from original arrays. It's probably easier to do the first.\n\n\t\tvar allpoints = contour.concat();\n\n\t\tfor ( var h = 0, hl = holes.length; h < hl; h ++ ) {\n\n\t\t\tArray.prototype.push.apply( allpoints, holes[ h ] );\n\n\t\t}\n\n\t\t//console.log( \"allpoints\",allpoints, allpoints.length );\n\n\t\t// prepare all points map\n\n\t\tfor ( i = 0, il = allpoints.length; i < il; i ++ ) {\n\n\t\t\tkey = allpoints[ i ].x + \":\" + allpoints[ i ].y;\n\n\t\t\tif ( allPointsMap[ key ] !== undefined ) {\n\n\t\t\t\tconsole.warn( \"THREE.ShapeUtils: Duplicate point\", key, i );\n\n\t\t\t}\n\n\t\t\tallPointsMap[ key ] = i;\n\n\t\t}\n\n\t\t// remove holes by cutting paths to holes and adding them to the shape\n\t\tvar shapeWithoutHoles = removeHoles( contour, holes );\n\n\t\tvar triangles = ShapeUtils.triangulate( shapeWithoutHoles, false ); // True returns indices for points of spooled shape\n\t\t//console.log( \"triangles\",triangles, triangles.length );\n\n\t\t// check all face vertices against all points map\n\n\t\tfor ( i = 0, il = triangles.length; i < il; i ++ ) {\n\n\t\t\tface = triangles[ i ];\n\n\t\t\tfor ( f = 0; f < 3; f ++ ) {\n\n\t\t\t\tkey = face[ f ].x + \":\" + face[ f ].y;\n\n\t\t\t\tindex = allPointsMap[ key ];\n\n\t\t\t\tif ( index !== undefined ) {\n\n\t\t\t\t\tface[ f ] = index;\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t}\n\n\t\treturn triangles.concat();\n\n\t},\n\n\tisClockWise: function ( pts ) {\n\n\t\treturn ShapeUtils.area( pts ) < 0;\n\n\t},\n\n\t// Bezier Curves formulas obtained from\n\t// http://en.wikipedia.org/wiki/B%C3%A9zier_curve\n\n\t// Quad Bezier Functions\n\n\tb2: ( function () {\n\n\t\tfunction b2p0( t, p ) {\n\n\t\t\tvar k = 1 - t;\n\t\t\treturn k * k * p;\n\n\t\t}\n\n\t\tfunction b2p1( t, p ) {\n\n\t\t\treturn 2 * ( 1 - t ) * t * p;\n\n\t\t}\n\n\t\tfunction b2p2( t, p ) {\n\n\t\t\treturn t * t * p;\n\n\t\t}\n\n\t\treturn function b2( t, p0, p1, p2 ) {\n\n\t\t\treturn b2p0( t, p0 ) + b2p1( t, p1 ) + b2p2( t, p2 );\n\n\t\t};\n\n\t} )(),\n\n\t// Cubic Bezier Functions\n\n\tb3: ( function () {\n\n\t\tfunction b3p0( t, p ) {\n\n\t\t\tvar k = 1 - t;\n\t\t\treturn k * k * k * p;\n\n\t\t}\n\n\t\tfunction b3p1( t, p ) {\n\n\t\t\tvar k = 1 - t;\n\t\t\treturn 3 * k * k * t * p;\n\n\t\t}\n\n\t\tfunction b3p2( t, p ) {\n\n\t\t\tvar k = 1 - t;\n\t\t\treturn 3 * k * t * t * p;\n\n\t\t}\n\n\t\tfunction b3p3( t, p ) {\n\n\t\t\treturn t * t * t * p;\n\n\t\t}\n\n\t\treturn function b3( t, p0, p1, p2, p3 ) {\n\n\t\t\treturn b3p0( t, p0 ) + b3p1( t, p1 ) + b3p2( t, p2 ) + b3p3( t, p3 );\n\n\t\t};\n\n\t} )()\n\n};\n\n\nexport { ShapeUtils };\n","import { Geometry } from '../core/Geometry';\nimport { Vector2 } from '../math/Vector2';\nimport { Face3 } from '../core/Face3';\nimport { Vector3 } from '../math/Vector3';\nimport { ShapeUtils } from '../extras/ShapeUtils';\n\n/**\n * @author zz85 / http://www.lab4games.net/zz85/blog\n *\n * Creates extruded geometry from a path shape.\n *\n * parameters = {\n *\n * curveSegments: , // number of points on the curves\n * steps: , // number of points for z-side extrusions / used for subdividing segments of extrude spline too\n * amount: , // Depth to extrude the shape\n *\n * bevelEnabled: , // turn on bevel\n * bevelThickness: , // how deep into the original shape bevel goes\n * bevelSize: , // how far from shape outline is bevel\n * bevelSegments: , // number of bevel layers\n *\n * extrudePath: // 3d spline path to extrude shape along. (creates Frames if .frames aren't defined)\n * frames: // containing arrays of tangents, normals, binormals\n *\n * uvGenerator: // object that provides UV generator functions\n *\n * }\n **/\n\nfunction ExtrudeGeometry( shapes, options ) {\n\n\tif ( typeof( shapes ) === \"undefined\" ) {\n\n\t\tshapes = [];\n\t\treturn;\n\n\t}\n\n\tGeometry.call( this );\n\n\tthis.type = 'ExtrudeGeometry';\n\n\tshapes = Array.isArray( shapes ) ? shapes : [ shapes ];\n\n\tthis.addShapeList( shapes, options );\n\n\tthis.computeFaceNormals();\n\n\t// can't really use automatic vertex normals\n\t// as then front and back sides get smoothed too\n\t// should do separate smoothing just for sides\n\n\t//this.computeVertexNormals();\n\n\t//console.log( \"took\", ( Date.now() - startTime ) );\n\n}\n\nExtrudeGeometry.prototype = Object.create( Geometry.prototype );\nExtrudeGeometry.prototype.constructor = ExtrudeGeometry;\n\nExtrudeGeometry.prototype.addShapeList = function ( shapes, options ) {\n\n\tvar sl = shapes.length;\n\n\tfor ( var s = 0; s < sl; s ++ ) {\n\n\t\tvar shape = shapes[ s ];\n\t\tthis.addShape( shape, options );\n\n\t}\n\n};\n\nExtrudeGeometry.prototype.addShape = function ( shape, options ) {\n\n\tvar amount = options.amount !== undefined ? options.amount : 100;\n\n\tvar bevelThickness = options.bevelThickness !== undefined ? options.bevelThickness : 6; // 10\n\tvar bevelSize = options.bevelSize !== undefined ? options.bevelSize : bevelThickness - 2; // 8\n\tvar bevelSegments = options.bevelSegments !== undefined ? options.bevelSegments : 3;\n\n\tvar bevelEnabled = options.bevelEnabled !== undefined ? options.bevelEnabled : true; // false\n\n\tvar curveSegments = options.curveSegments !== undefined ? options.curveSegments : 12;\n\n\tvar steps = options.steps !== undefined ? options.steps : 1;\n\n\tvar extrudePath = options.extrudePath;\n\tvar extrudePts, extrudeByPath = false;\n\n\t// Use default WorldUVGenerator if no UV generators are specified.\n\tvar uvgen = options.UVGenerator !== undefined ? options.UVGenerator : ExtrudeGeometry.WorldUVGenerator;\n\n\tvar splineTube, binormal, normal, position2;\n\tif ( extrudePath ) {\n\n\t\textrudePts = extrudePath.getSpacedPoints( steps );\n\n\t\textrudeByPath = true;\n\t\tbevelEnabled = false; // bevels not supported for path extrusion\n\n\t\t// SETUP TNB variables\n\n\t\t// TODO1 - have a .isClosed in spline?\n\n\t\tsplineTube = options.frames !== undefined ? options.frames : extrudePath.computeFrenetFrames( steps, false );\n\n\t\t// console.log(splineTube, 'splineTube', splineTube.normals.length, 'steps', steps, 'extrudePts', extrudePts.length);\n\n\t\tbinormal = new Vector3();\n\t\tnormal = new Vector3();\n\t\tposition2 = new Vector3();\n\n\t}\n\n\t// Safeguards if bevels are not enabled\n\n\tif ( ! bevelEnabled ) {\n\n\t\tbevelSegments = 0;\n\t\tbevelThickness = 0;\n\t\tbevelSize = 0;\n\n\t}\n\n\t// Variables initialization\n\n\tvar ahole, h, hl; // looping of holes\n\tvar scope = this;\n\n\tvar shapesOffset = this.vertices.length;\n\n\tvar shapePoints = shape.extractPoints( curveSegments );\n\n\tvar vertices = shapePoints.shape;\n\tvar holes = shapePoints.holes;\n\n\tvar reverse = ! ShapeUtils.isClockWise( vertices );\n\n\tif ( reverse ) {\n\n\t\tvertices = vertices.reverse();\n\n\t\t// Maybe we should also check if holes are in the opposite direction, just to be safe ...\n\n\t\tfor ( h = 0, hl = holes.length; h < hl; h ++ ) {\n\n\t\t\tahole = holes[ h ];\n\n\t\t\tif ( ShapeUtils.isClockWise( ahole ) ) {\n\n\t\t\t\tholes[ h ] = ahole.reverse();\n\n\t\t\t}\n\n\t\t}\n\n\t\treverse = false; // If vertices are in order now, we shouldn't need to worry about them again (hopefully)!\n\n\t}\n\n\n\tvar faces = ShapeUtils.triangulateShape( vertices, holes );\n\n\t/* Vertices */\n\n\tvar contour = vertices; // vertices has all points but contour has only points of circumference\n\n\tfor ( h = 0, hl = holes.length; h < hl; h ++ ) {\n\n\t\tahole = holes[ h ];\n\n\t\tvertices = vertices.concat( ahole );\n\n\t}\n\n\n\tfunction scalePt2( pt, vec, size ) {\n\n\t\tif ( ! vec ) console.error( \"THREE.ExtrudeGeometry: vec does not exist\" );\n\n\t\treturn vec.clone().multiplyScalar( size ).add( pt );\n\n\t}\n\n\tvar b, bs, t, z,\n\t\tvert, vlen = vertices.length,\n\t\tface, flen = faces.length;\n\n\n\t// Find directions for point movement\n\n\n\tfunction getBevelVec( inPt, inPrev, inNext ) {\n\n\t\t// computes for inPt the corresponding point inPt' on a new contour\n\t\t// shifted by 1 unit (length of normalized vector) to the left\n\t\t// if we walk along contour clockwise, this new contour is outside the old one\n\t\t//\n\t\t// inPt' is the intersection of the two lines parallel to the two\n\t\t// adjacent edges of inPt at a distance of 1 unit on the left side.\n\n\t\tvar v_trans_x, v_trans_y, shrink_by = 1;\t\t// resulting translation vector for inPt\n\n\t\t// good reading for geometry algorithms (here: line-line intersection)\n\t\t// http://geomalgorithms.com/a05-_intersect-1.html\n\n\t\tvar v_prev_x = inPt.x - inPrev.x, v_prev_y = inPt.y - inPrev.y;\n\t\tvar v_next_x = inNext.x - inPt.x, v_next_y = inNext.y - inPt.y;\n\n\t\tvar v_prev_lensq = ( v_prev_x * v_prev_x + v_prev_y * v_prev_y );\n\n\t\t// check for collinear edges\n\t\tvar collinear0 = ( v_prev_x * v_next_y - v_prev_y * v_next_x );\n\n\t\tif ( Math.abs( collinear0 ) > Number.EPSILON ) {\n\n\t\t\t// not collinear\n\n\t\t\t// length of vectors for normalizing\n\n\t\t\tvar v_prev_len = Math.sqrt( v_prev_lensq );\n\t\t\tvar v_next_len = Math.sqrt( v_next_x * v_next_x + v_next_y * v_next_y );\n\n\t\t\t// shift adjacent points by unit vectors to the left\n\n\t\t\tvar ptPrevShift_x = ( inPrev.x - v_prev_y / v_prev_len );\n\t\t\tvar ptPrevShift_y = ( inPrev.y + v_prev_x / v_prev_len );\n\n\t\t\tvar ptNextShift_x = ( inNext.x - v_next_y / v_next_len );\n\t\t\tvar ptNextShift_y = ( inNext.y + v_next_x / v_next_len );\n\n\t\t\t// scaling factor for v_prev to intersection point\n\n\t\t\tvar sf = ( ( ptNextShift_x - ptPrevShift_x ) * v_next_y -\n\t\t\t\t\t\t( ptNextShift_y - ptPrevShift_y ) * v_next_x ) /\n\t\t\t\t\t ( v_prev_x * v_next_y - v_prev_y * v_next_x );\n\n\t\t\t// vector from inPt to intersection point\n\n\t\t\tv_trans_x = ( ptPrevShift_x + v_prev_x * sf - inPt.x );\n\t\t\tv_trans_y = ( ptPrevShift_y + v_prev_y * sf - inPt.y );\n\n\t\t\t// Don't normalize!, otherwise sharp corners become ugly\n\t\t\t// but prevent crazy spikes\n\t\t\tvar v_trans_lensq = ( v_trans_x * v_trans_x + v_trans_y * v_trans_y );\n\t\t\tif ( v_trans_lensq <= 2 ) {\n\n\t\t\t\treturn\tnew Vector2( v_trans_x, v_trans_y );\n\n\t\t\t} else {\n\n\t\t\t\tshrink_by = Math.sqrt( v_trans_lensq / 2 );\n\n\t\t\t}\n\n\t\t} else {\n\n\t\t\t// handle special case of collinear edges\n\n\t\t\tvar direction_eq = false;\t\t// assumes: opposite\n\t\t\tif ( v_prev_x > Number.EPSILON ) {\n\n\t\t\t\tif ( v_next_x > Number.EPSILON ) {\n\n\t\t\t\t\tdirection_eq = true;\n\n\t\t\t\t}\n\n\t\t\t} else {\n\n\t\t\t\tif ( v_prev_x < - Number.EPSILON ) {\n\n\t\t\t\t\tif ( v_next_x < - Number.EPSILON ) {\n\n\t\t\t\t\t\tdirection_eq = true;\n\n\t\t\t\t\t}\n\n\t\t\t\t} else {\n\n\t\t\t\t\tif ( Math.sign( v_prev_y ) === Math.sign( v_next_y ) ) {\n\n\t\t\t\t\t\tdirection_eq = true;\n\n\t\t\t\t\t}\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t\tif ( direction_eq ) {\n\n\t\t\t\t// console.log(\"Warning: lines are a straight sequence\");\n\t\t\t\tv_trans_x = - v_prev_y;\n\t\t\t\tv_trans_y = v_prev_x;\n\t\t\t\tshrink_by = Math.sqrt( v_prev_lensq );\n\n\t\t\t} else {\n\n\t\t\t\t// console.log(\"Warning: lines are a straight spike\");\n\t\t\t\tv_trans_x = v_prev_x;\n\t\t\t\tv_trans_y = v_prev_y;\n\t\t\t\tshrink_by = Math.sqrt( v_prev_lensq / 2 );\n\n\t\t\t}\n\n\t\t}\n\n\t\treturn\tnew Vector2( v_trans_x / shrink_by, v_trans_y / shrink_by );\n\n\t}\n\n\n\tvar contourMovements = [];\n\n\tfor ( var i = 0, il = contour.length, j = il - 1, k = i + 1; i < il; i ++, j ++, k ++ ) {\n\n\t\tif ( j === il ) j = 0;\n\t\tif ( k === il ) k = 0;\n\n\t\t// (j)---(i)---(k)\n\t\t// console.log('i,j,k', i, j , k)\n\n\t\tcontourMovements[ i ] = getBevelVec( contour[ i ], contour[ j ], contour[ k ] );\n\n\t}\n\n\tvar holesMovements = [], oneHoleMovements, verticesMovements = contourMovements.concat();\n\n\tfor ( h = 0, hl = holes.length; h < hl; h ++ ) {\n\n\t\tahole = holes[ h ];\n\n\t\toneHoleMovements = [];\n\n\t\tfor ( i = 0, il = ahole.length, j = il - 1, k = i + 1; i < il; i ++, j ++, k ++ ) {\n\n\t\t\tif ( j === il ) j = 0;\n\t\t\tif ( k === il ) k = 0;\n\n\t\t\t// (j)---(i)---(k)\n\t\t\toneHoleMovements[ i ] = getBevelVec( ahole[ i ], ahole[ j ], ahole[ k ] );\n\n\t\t}\n\n\t\tholesMovements.push( oneHoleMovements );\n\t\tverticesMovements = verticesMovements.concat( oneHoleMovements );\n\n\t}\n\n\n\t// Loop bevelSegments, 1 for the front, 1 for the back\n\n\tfor ( b = 0; b < bevelSegments; b ++ ) {\n\n\t\t//for ( b = bevelSegments; b > 0; b -- ) {\n\n\t\tt = b / bevelSegments;\n\t\tz = bevelThickness * Math.cos( t * Math.PI / 2 );\n\t\tbs = bevelSize * Math.sin( t * Math.PI / 2 );\n\n\t\t// contract shape\n\n\t\tfor ( i = 0, il = contour.length; i < il; i ++ ) {\n\n\t\t\tvert = scalePt2( contour[ i ], contourMovements[ i ], bs );\n\n\t\t\tv( vert.x, vert.y, - z );\n\n\t\t}\n\n\t\t// expand holes\n\n\t\tfor ( h = 0, hl = holes.length; h < hl; h ++ ) {\n\n\t\t\tahole = holes[ h ];\n\t\t\toneHoleMovements = holesMovements[ h ];\n\n\t\t\tfor ( i = 0, il = ahole.length; i < il; i ++ ) {\n\n\t\t\t\tvert = scalePt2( ahole[ i ], oneHoleMovements[ i ], bs );\n\n\t\t\t\tv( vert.x, vert.y, - z );\n\n\t\t\t}\n\n\t\t}\n\n\t}\n\n\tbs = bevelSize;\n\n\t// Back facing vertices\n\n\tfor ( i = 0; i < vlen; i ++ ) {\n\n\t\tvert = bevelEnabled ? scalePt2( vertices[ i ], verticesMovements[ i ], bs ) : vertices[ i ];\n\n\t\tif ( ! extrudeByPath ) {\n\n\t\t\tv( vert.x, vert.y, 0 );\n\n\t\t} else {\n\n\t\t\t// v( vert.x, vert.y + extrudePts[ 0 ].y, extrudePts[ 0 ].x );\n\n\t\t\tnormal.copy( splineTube.normals[ 0 ] ).multiplyScalar( vert.x );\n\t\t\tbinormal.copy( splineTube.binormals[ 0 ] ).multiplyScalar( vert.y );\n\n\t\t\tposition2.copy( extrudePts[ 0 ] ).add( normal ).add( binormal );\n\n\t\t\tv( position2.x, position2.y, position2.z );\n\n\t\t}\n\n\t}\n\n\t// Add stepped vertices...\n\t// Including front facing vertices\n\n\tvar s;\n\n\tfor ( s = 1; s <= steps; s ++ ) {\n\n\t\tfor ( i = 0; i < vlen; i ++ ) {\n\n\t\t\tvert = bevelEnabled ? scalePt2( vertices[ i ], verticesMovements[ i ], bs ) : vertices[ i ];\n\n\t\t\tif ( ! extrudeByPath ) {\n\n\t\t\t\tv( vert.x, vert.y, amount / steps * s );\n\n\t\t\t} else {\n\n\t\t\t\t// v( vert.x, vert.y + extrudePts[ s - 1 ].y, extrudePts[ s - 1 ].x );\n\n\t\t\t\tnormal.copy( splineTube.normals[ s ] ).multiplyScalar( vert.x );\n\t\t\t\tbinormal.copy( splineTube.binormals[ s ] ).multiplyScalar( vert.y );\n\n\t\t\t\tposition2.copy( extrudePts[ s ] ).add( normal ).add( binormal );\n\n\t\t\t\tv( position2.x, position2.y, position2.z );\n\n\t\t\t}\n\n\t\t}\n\n\t}\n\n\n\t// Add bevel segments planes\n\n\t//for ( b = 1; b <= bevelSegments; b ++ ) {\n\tfor ( b = bevelSegments - 1; b >= 0; b -- ) {\n\n\t\tt = b / bevelSegments;\n\t\tz = bevelThickness * Math.cos ( t * Math.PI / 2 );\n\t\tbs = bevelSize * Math.sin( t * Math.PI / 2 );\n\n\t\t// contract shape\n\n\t\tfor ( i = 0, il = contour.length; i < il; i ++ ) {\n\n\t\t\tvert = scalePt2( contour[ i ], contourMovements[ i ], bs );\n\t\t\tv( vert.x, vert.y, amount + z );\n\n\t\t}\n\n\t\t// expand holes\n\n\t\tfor ( h = 0, hl = holes.length; h < hl; h ++ ) {\n\n\t\t\tahole = holes[ h ];\n\t\t\toneHoleMovements = holesMovements[ h ];\n\n\t\t\tfor ( i = 0, il = ahole.length; i < il; i ++ ) {\n\n\t\t\t\tvert = scalePt2( ahole[ i ], oneHoleMovements[ i ], bs );\n\n\t\t\t\tif ( ! extrudeByPath ) {\n\n\t\t\t\t\tv( vert.x, vert.y, amount + z );\n\n\t\t\t\t} else {\n\n\t\t\t\t\tv( vert.x, vert.y + extrudePts[ steps - 1 ].y, extrudePts[ steps - 1 ].x + z );\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t}\n\n\t}\n\n\t/* Faces */\n\n\t// Top and bottom faces\n\n\tbuildLidFaces();\n\n\t// Sides faces\n\n\tbuildSideFaces();\n\n\n\t///// Internal functions\n\n\tfunction buildLidFaces() {\n\n\t\tif ( bevelEnabled ) {\n\n\t\t\tvar layer = 0; // steps + 1\n\t\t\tvar offset = vlen * layer;\n\n\t\t\t// Bottom faces\n\n\t\t\tfor ( i = 0; i < flen; i ++ ) {\n\n\t\t\t\tface = faces[ i ];\n\t\t\t\tf3( face[ 2 ] + offset, face[ 1 ] + offset, face[ 0 ] + offset );\n\n\t\t\t}\n\n\t\t\tlayer = steps + bevelSegments * 2;\n\t\t\toffset = vlen * layer;\n\n\t\t\t// Top faces\n\n\t\t\tfor ( i = 0; i < flen; i ++ ) {\n\n\t\t\t\tface = faces[ i ];\n\t\t\t\tf3( face[ 0 ] + offset, face[ 1 ] + offset, face[ 2 ] + offset );\n\n\t\t\t}\n\n\t\t} else {\n\n\t\t\t// Bottom faces\n\n\t\t\tfor ( i = 0; i < flen; i ++ ) {\n\n\t\t\t\tface = faces[ i ];\n\t\t\t\tf3( face[ 2 ], face[ 1 ], face[ 0 ] );\n\n\t\t\t}\n\n\t\t\t// Top faces\n\n\t\t\tfor ( i = 0; i < flen; i ++ ) {\n\n\t\t\t\tface = faces[ i ];\n\t\t\t\tf3( face[ 0 ] + vlen * steps, face[ 1 ] + vlen * steps, face[ 2 ] + vlen * steps );\n\n\t\t\t}\n\n\t\t}\n\n\t}\n\n\t// Create faces for the z-sides of the shape\n\n\tfunction buildSideFaces() {\n\n\t\tvar layeroffset = 0;\n\t\tsidewalls( contour, layeroffset );\n\t\tlayeroffset += contour.length;\n\n\t\tfor ( h = 0, hl = holes.length; h < hl; h ++ ) {\n\n\t\t\tahole = holes[ h ];\n\t\t\tsidewalls( ahole, layeroffset );\n\n\t\t\t//, true\n\t\t\tlayeroffset += ahole.length;\n\n\t\t}\n\n\t}\n\n\tfunction sidewalls( contour, layeroffset ) {\n\n\t\tvar j, k;\n\t\ti = contour.length;\n\n\t\twhile ( -- i >= 0 ) {\n\n\t\t\tj = i;\n\t\t\tk = i - 1;\n\t\t\tif ( k < 0 ) k = contour.length - 1;\n\n\t\t\t//console.log('b', i,j, i-1, k,vertices.length);\n\n\t\t\tvar s = 0, sl = steps + bevelSegments * 2;\n\n\t\t\tfor ( s = 0; s < sl; s ++ ) {\n\n\t\t\t\tvar slen1 = vlen * s;\n\t\t\t\tvar slen2 = vlen * ( s + 1 );\n\n\t\t\t\tvar a = layeroffset + j + slen1,\n\t\t\t\t\tb = layeroffset + k + slen1,\n\t\t\t\t\tc = layeroffset + k + slen2,\n\t\t\t\t\td = layeroffset + j + slen2;\n\n\t\t\t\tf4( a, b, c, d, contour, s, sl, j, k );\n\n\t\t\t}\n\n\t\t}\n\n\t}\n\n\n\tfunction v( x, y, z ) {\n\n\t\tscope.vertices.push( new Vector3( x, y, z ) );\n\n\t}\n\n\tfunction f3( a, b, c ) {\n\n\t\ta += shapesOffset;\n\t\tb += shapesOffset;\n\t\tc += shapesOffset;\n\n\t\tscope.faces.push( new Face3( a, b, c, null, null, 0 ) );\n\n\t\tvar uvs = uvgen.generateTopUV( scope, a, b, c );\n\n\t\tscope.faceVertexUvs[ 0 ].push( uvs );\n\n\t}\n\n\tfunction f4( a, b, c, d, wallContour, stepIndex, stepsLength, contourIndex1, contourIndex2 ) {\n\n\t\ta += shapesOffset;\n\t\tb += shapesOffset;\n\t\tc += shapesOffset;\n\t\td += shapesOffset;\n\n\t\tscope.faces.push( new Face3( a, b, d, null, null, 1 ) );\n\t\tscope.faces.push( new Face3( b, c, d, null, null, 1 ) );\n\n\t\tvar uvs = uvgen.generateSideWallUV( scope, a, b, c, d );\n\n\t\tscope.faceVertexUvs[ 0 ].push( [ uvs[ 0 ], uvs[ 1 ], uvs[ 3 ] ] );\n\t\tscope.faceVertexUvs[ 0 ].push( [ uvs[ 1 ], uvs[ 2 ], uvs[ 3 ] ] );\n\n\t}\n\n};\n\nExtrudeGeometry.WorldUVGenerator = {\n\n\tgenerateTopUV: function ( geometry, indexA, indexB, indexC ) {\n\n\t\tvar vertices = geometry.vertices;\n\n\t\tvar a = vertices[ indexA ];\n\t\tvar b = vertices[ indexB ];\n\t\tvar c = vertices[ indexC ];\n\n\t\treturn [\n\t\t\tnew Vector2( a.x, a.y ),\n\t\t\tnew Vector2( b.x, b.y ),\n\t\t\tnew Vector2( c.x, c.y )\n\t\t];\n\n\t},\n\n\tgenerateSideWallUV: function ( geometry, indexA, indexB, indexC, indexD ) {\n\n\t\tvar vertices = geometry.vertices;\n\n\t\tvar a = vertices[ indexA ];\n\t\tvar b = vertices[ indexB ];\n\t\tvar c = vertices[ indexC ];\n\t\tvar d = vertices[ indexD ];\n\n\t\tif ( Math.abs( a.y - b.y ) < 0.01 ) {\n\n\t\t\treturn [\n\t\t\t\tnew Vector2( a.x, 1 - a.z ),\n\t\t\t\tnew Vector2( b.x, 1 - b.z ),\n\t\t\t\tnew Vector2( c.x, 1 - c.z ),\n\t\t\t\tnew Vector2( d.x, 1 - d.z )\n\t\t\t];\n\n\t\t} else {\n\n\t\t\treturn [\n\t\t\t\tnew Vector2( a.y, 1 - a.z ),\n\t\t\t\tnew Vector2( b.y, 1 - b.z ),\n\t\t\t\tnew Vector2( c.y, 1 - c.z ),\n\t\t\t\tnew Vector2( d.y, 1 - d.z )\n\t\t\t];\n\n\t\t}\n\n\t}\n};\n\n\nexport { ExtrudeGeometry };\n","import { ExtrudeGeometry } from './ExtrudeGeometry';\nimport { Geometry } from '../core/Geometry';\n\n/**\n * @author zz85 / http://www.lab4games.net/zz85/blog\n * @author alteredq / http://alteredqualia.com/\n *\n * Text = 3D Text\n *\n * parameters = {\n * font: , // font\n *\n * size: , // size of the text\n * height: , // thickness to extrude text\n * curveSegments: , // number of points on the curves\n *\n * bevelEnabled: , // turn on bevel\n * bevelThickness: , // how deep into text bevel goes\n * bevelSize: // how far from text outline is bevel\n * }\n */\n\nfunction TextGeometry( text, parameters ) {\n\n\tparameters = parameters || {};\n\n\tvar font = parameters.font;\n\n\tif ( (font && font.isFont) === false ) {\n\n\t\tconsole.error( 'THREE.TextGeometry: font parameter is not an instance of THREE.Font.' );\n\t\treturn new Geometry();\n\n\t}\n\n\tvar shapes = font.generateShapes( text, parameters.size, parameters.curveSegments );\n\n\t// translate parameters to ExtrudeGeometry API\n\n\tparameters.amount = parameters.height !== undefined ? parameters.height : 50;\n\n\t// defaults\n\n\tif ( parameters.bevelThickness === undefined ) parameters.bevelThickness = 10;\n\tif ( parameters.bevelSize === undefined ) parameters.bevelSize = 8;\n\tif ( parameters.bevelEnabled === undefined ) parameters.bevelEnabled = false;\n\n\tExtrudeGeometry.call( this, shapes, parameters );\n\n\tthis.type = 'TextGeometry';\n\n}\n\nTextGeometry.prototype = Object.create( ExtrudeGeometry.prototype );\nTextGeometry.prototype.constructor = TextGeometry;\n\n\nexport { TextGeometry };\n","import { BufferGeometry } from '../core/BufferGeometry';\nimport { Vector3 } from '../math/Vector3';\nimport { Sphere } from '../math/Sphere';\nimport { Uint16Attribute, Uint32Attribute, BufferAttribute } from '../core/BufferAttribute';\n\n/**\n * @author benaadams / https://twitter.com/ben_a_adams\n * based on THREE.SphereGeometry\n */\n\nfunction SphereBufferGeometry( radius, widthSegments, heightSegments, phiStart, phiLength, thetaStart, thetaLength ) {\n\n\tBufferGeometry.call( this );\n\n\tthis.type = 'SphereBufferGeometry';\n\n\tthis.parameters = {\n\t\tradius: radius,\n\t\twidthSegments: widthSegments,\n\t\theightSegments: heightSegments,\n\t\tphiStart: phiStart,\n\t\tphiLength: phiLength,\n\t\tthetaStart: thetaStart,\n\t\tthetaLength: thetaLength\n\t};\n\n\tradius = radius || 50;\n\n\twidthSegments = Math.max( 3, Math.floor( widthSegments ) || 8 );\n\theightSegments = Math.max( 2, Math.floor( heightSegments ) || 6 );\n\n\tphiStart = phiStart !== undefined ? phiStart : 0;\n\tphiLength = phiLength !== undefined ? phiLength : Math.PI * 2;\n\n\tthetaStart = thetaStart !== undefined ? thetaStart : 0;\n\tthetaLength = thetaLength !== undefined ? thetaLength : Math.PI;\n\n\tvar thetaEnd = thetaStart + thetaLength;\n\n\tvar vertexCount = ( ( widthSegments + 1 ) * ( heightSegments + 1 ) );\n\n\tvar positions = new BufferAttribute( new Float32Array( vertexCount * 3 ), 3 );\n\tvar normals = new BufferAttribute( new Float32Array( vertexCount * 3 ), 3 );\n\tvar uvs = new BufferAttribute( new Float32Array( vertexCount * 2 ), 2 );\n\n\tvar index = 0, vertices = [], normal = new Vector3();\n\n\tfor ( var y = 0; y <= heightSegments; y ++ ) {\n\n\t\tvar verticesRow = [];\n\n\t\tvar v = y / heightSegments;\n\n\t\tfor ( var x = 0; x <= widthSegments; x ++ ) {\n\n\t\t\tvar u = x / widthSegments;\n\n\t\t\tvar px = - radius * Math.cos( phiStart + u * phiLength ) * Math.sin( thetaStart + v * thetaLength );\n\t\t\tvar py = radius * Math.cos( thetaStart + v * thetaLength );\n\t\t\tvar pz = radius * Math.sin( phiStart + u * phiLength ) * Math.sin( thetaStart + v * thetaLength );\n\n\t\t\tnormal.set( px, py, pz ).normalize();\n\n\t\t\tpositions.setXYZ( index, px, py, pz );\n\t\t\tnormals.setXYZ( index, normal.x, normal.y, normal.z );\n\t\t\tuvs.setXY( index, u, 1 - v );\n\n\t\t\tverticesRow.push( index );\n\n\t\t\tindex ++;\n\n\t\t}\n\n\t\tvertices.push( verticesRow );\n\n\t}\n\n\tvar indices = [];\n\n\tfor ( var y = 0; y < heightSegments; y ++ ) {\n\n\t\tfor ( var x = 0; x < widthSegments; x ++ ) {\n\n\t\t\tvar v1 = vertices[ y ][ x + 1 ];\n\t\t\tvar v2 = vertices[ y ][ x ];\n\t\t\tvar v3 = vertices[ y + 1 ][ x ];\n\t\t\tvar v4 = vertices[ y + 1 ][ x + 1 ];\n\n\t\t\tif ( y !== 0 || thetaStart > 0 ) indices.push( v1, v2, v4 );\n\t\t\tif ( y !== heightSegments - 1 || thetaEnd < Math.PI ) indices.push( v2, v3, v4 );\n\n\t\t}\n\n\t}\n\n\tthis.setIndex( new ( positions.count > 65535 ? Uint32Attribute : Uint16Attribute )( indices, 1 ) );\n\tthis.addAttribute( 'position', positions );\n\tthis.addAttribute( 'normal', normals );\n\tthis.addAttribute( 'uv', uvs );\n\n\tthis.boundingSphere = new Sphere( new Vector3(), radius );\n\n}\n\nSphereBufferGeometry.prototype = Object.create( BufferGeometry.prototype );\nSphereBufferGeometry.prototype.constructor = SphereBufferGeometry;\n\n\nexport { SphereBufferGeometry };\n","import { Geometry } from '../core/Geometry';\nimport { SphereBufferGeometry } from './SphereBufferGeometry';\n\n/**\n * @author mrdoob / http://mrdoob.com/\n */\n\nfunction SphereGeometry( radius, widthSegments, heightSegments, phiStart, phiLength, thetaStart, thetaLength ) {\n\n\tGeometry.call( this );\n\n\tthis.type = 'SphereGeometry';\n\n\tthis.parameters = {\n\t\tradius: radius,\n\t\twidthSegments: widthSegments,\n\t\theightSegments: heightSegments,\n\t\tphiStart: phiStart,\n\t\tphiLength: phiLength,\n\t\tthetaStart: thetaStart,\n\t\tthetaLength: thetaLength\n\t};\n\n\tthis.fromBufferGeometry( new SphereBufferGeometry( radius, widthSegments, heightSegments, phiStart, phiLength, thetaStart, thetaLength ) );\n\n}\n\nSphereGeometry.prototype = Object.create( Geometry.prototype );\nSphereGeometry.prototype.constructor = SphereGeometry;\n\n\nexport { SphereGeometry };\n","import { BufferGeometry } from '../core/BufferGeometry';\nimport { Vector2 } from '../math/Vector2';\nimport { Vector3 } from '../math/Vector3';\nimport { BufferAttribute } from '../core/BufferAttribute';\n\n/**\n * @author Mugen87 / https://github.com/Mugen87\n */\n\nfunction RingBufferGeometry( innerRadius, outerRadius, thetaSegments, phiSegments, thetaStart, thetaLength ) {\n\n\tBufferGeometry.call( this );\n\n\tthis.type = 'RingBufferGeometry';\n\n\tthis.parameters = {\n\t\tinnerRadius: innerRadius,\n\t\touterRadius: outerRadius,\n\t\tthetaSegments: thetaSegments,\n\t\tphiSegments: phiSegments,\n\t\tthetaStart: thetaStart,\n\t\tthetaLength: thetaLength\n\t};\n\n\tinnerRadius = innerRadius || 20;\n\touterRadius = outerRadius || 50;\n\n\tthetaStart = thetaStart !== undefined ? thetaStart : 0;\n\tthetaLength = thetaLength !== undefined ? thetaLength : Math.PI * 2;\n\n\tthetaSegments = thetaSegments !== undefined ? Math.max( 3, thetaSegments ) : 8;\n\tphiSegments = phiSegments !== undefined ? Math.max( 1, phiSegments ) : 1;\n\n\t// these are used to calculate buffer length\n\tvar vertexCount = ( thetaSegments + 1 ) * ( phiSegments + 1 );\n\tvar indexCount = thetaSegments * phiSegments * 2 * 3;\n\n\t// buffers\n\tvar indices = new BufferAttribute( new ( indexCount > 65535 ? Uint32Array : Uint16Array )( indexCount ) , 1 );\n\tvar vertices = new BufferAttribute( new Float32Array( vertexCount * 3 ), 3 );\n\tvar normals = new BufferAttribute( new Float32Array( vertexCount * 3 ), 3 );\n\tvar uvs = new BufferAttribute( new Float32Array( vertexCount * 2 ), 2 );\n\n\t// some helper variables\n\tvar index = 0, indexOffset = 0, segment;\n\tvar radius = innerRadius;\n\tvar radiusStep = ( ( outerRadius - innerRadius ) / phiSegments );\n\tvar vertex = new Vector3();\n\tvar uv = new Vector2();\n\tvar j, i;\n\n\t// generate vertices, normals and uvs\n\n\t// values are generate from the inside of the ring to the outside\n\n\tfor ( j = 0; j <= phiSegments; j ++ ) {\n\n\t\tfor ( i = 0; i <= thetaSegments; i ++ ) {\n\n\t\t\tsegment = thetaStart + i / thetaSegments * thetaLength;\n\n\t\t\t// vertex\n\t\t\tvertex.x = radius * Math.cos( segment );\n\t\t\tvertex.y = radius * Math.sin( segment );\n\t\t\tvertices.setXYZ( index, vertex.x, vertex.y, vertex.z );\n\n\t\t\t// normal\n\t\t\tnormals.setXYZ( index, 0, 0, 1 );\n\n\t\t\t// uv\n\t\t\tuv.x = ( vertex.x / outerRadius + 1 ) / 2;\n\t\t\tuv.y = ( vertex.y / outerRadius + 1 ) / 2;\n\t\t\tuvs.setXY( index, uv.x, uv.y );\n\n\t\t\t// increase index\n\t\t\tindex++;\n\n\t\t}\n\n\t\t// increase the radius for next row of vertices\n\t\tradius += radiusStep;\n\n\t}\n\n\t// generate indices\n\n\tfor ( j = 0; j < phiSegments; j ++ ) {\n\n\t\tvar thetaSegmentLevel = j * ( thetaSegments + 1 );\n\n\t\tfor ( i = 0; i < thetaSegments; i ++ ) {\n\n\t\t\tsegment = i + thetaSegmentLevel;\n\n\t\t\t// indices\n\t\t\tvar a = segment;\n\t\t\tvar b = segment + thetaSegments + 1;\n\t\t\tvar c = segment + thetaSegments + 2;\n\t\t\tvar d = segment + 1;\n\n\t\t\t// face one\n\t\t\tindices.setX( indexOffset, a ); indexOffset++;\n\t\t\tindices.setX( indexOffset, b ); indexOffset++;\n\t\t\tindices.setX( indexOffset, c ); indexOffset++;\n\n\t\t\t// face two\n\t\t\tindices.setX( indexOffset, a ); indexOffset++;\n\t\t\tindices.setX( indexOffset, c ); indexOffset++;\n\t\t\tindices.setX( indexOffset, d ); indexOffset++;\n\n\t\t}\n\n\t}\n\n\t// build geometry\n\n\tthis.setIndex( indices );\n\tthis.addAttribute( 'position', vertices );\n\tthis.addAttribute( 'normal', normals );\n\tthis.addAttribute( 'uv', uvs );\n\n}\n\nRingBufferGeometry.prototype = Object.create( BufferGeometry.prototype );\nRingBufferGeometry.prototype.constructor = RingBufferGeometry;\n\n\nexport { RingBufferGeometry };\n","import { Geometry } from '../core/Geometry';\nimport { RingBufferGeometry } from './RingBufferGeometry';\n\n/**\n * @author Kaleb Murphy\n */\n\nfunction RingGeometry( innerRadius, outerRadius, thetaSegments, phiSegments, thetaStart, thetaLength ) {\n\n\tGeometry.call( this );\n\n\tthis.type = 'RingGeometry';\n\n\tthis.parameters = {\n\t\tinnerRadius: innerRadius,\n\t\touterRadius: outerRadius,\n\t\tthetaSegments: thetaSegments,\n\t\tphiSegments: phiSegments,\n\t\tthetaStart: thetaStart,\n\t\tthetaLength: thetaLength\n\t};\n\n\tthis.fromBufferGeometry( new RingBufferGeometry( innerRadius, outerRadius, thetaSegments, phiSegments, thetaStart, thetaLength ) );\n\n}\n\nRingGeometry.prototype = Object.create( Geometry.prototype );\nRingGeometry.prototype.constructor = RingGeometry;\n\n\nexport { RingGeometry };\n","import { Geometry } from '../core/Geometry';\nimport { PlaneBufferGeometry } from './PlaneBufferGeometry';\n\n/**\n * @author mrdoob / http://mrdoob.com/\n * based on http://papervision3d.googlecode.com/svn/trunk/as3/trunk/src/org/papervision3d/objects/primitives/Plane.as\n */\n\nfunction PlaneGeometry( width, height, widthSegments, heightSegments ) {\n\n\tGeometry.call( this );\n\n\tthis.type = 'PlaneGeometry';\n\n\tthis.parameters = {\n\t\twidth: width,\n\t\theight: height,\n\t\twidthSegments: widthSegments,\n\t\theightSegments: heightSegments\n\t};\n\n\tthis.fromBufferGeometry( new PlaneBufferGeometry( width, height, widthSegments, heightSegments ) );\n\n}\n\nPlaneGeometry.prototype = Object.create( Geometry.prototype );\nPlaneGeometry.prototype.constructor = PlaneGeometry;\n\n\nexport { PlaneGeometry };\n","import { BufferGeometry } from '../core/BufferGeometry';\nimport { Vector3 } from '../math/Vector3';\nimport { Vector2 } from '../math/Vector2';\nimport { BufferAttribute } from '../core/BufferAttribute';\nimport { _Math } from '../math/Math';\n\n/**\n * @author Mugen87 / https://github.com/Mugen87\n */\n\n // points - to create a closed torus, one must use a set of points\n // like so: [ a, b, c, d, a ], see first is the same as last.\n // segments - the number of circumference segments to create\n // phiStart - the starting radian\n // phiLength - the radian (0 to 2PI) range of the lathed section\n // 2PI is a closed lathe, less than 2PI is a portion.\n\nfunction LatheBufferGeometry( points, segments, phiStart, phiLength ) {\n\n\tBufferGeometry.call( this );\n\n\tthis.type = 'LatheBufferGeometry';\n\n\tthis.parameters = {\n\t\tpoints: points,\n\t\tsegments: segments,\n\t\tphiStart: phiStart,\n\t\tphiLength: phiLength\n\t};\n\n\tsegments = Math.floor( segments ) || 12;\n\tphiStart = phiStart || 0;\n\tphiLength = phiLength || Math.PI * 2;\n\n\t// clamp phiLength so it's in range of [ 0, 2PI ]\n\tphiLength = _Math.clamp( phiLength, 0, Math.PI * 2 );\n\n\t// these are used to calculate buffer length\n\tvar vertexCount = ( segments + 1 ) * points.length;\n\tvar indexCount = segments * points.length * 2 * 3;\n\n\t// buffers\n\tvar indices = new BufferAttribute( new ( indexCount > 65535 ? Uint32Array : Uint16Array )( indexCount ) , 1 );\n\tvar vertices = new BufferAttribute( new Float32Array( vertexCount * 3 ), 3 );\n\tvar uvs = new BufferAttribute( new Float32Array( vertexCount * 2 ), 2 );\n\n\t// helper variables\n\tvar index = 0, indexOffset = 0, base;\n\tvar inverseSegments = 1.0 / segments;\n\tvar vertex = new Vector3();\n\tvar uv = new Vector2();\n\tvar i, j;\n\n\t// generate vertices and uvs\n\n\tfor ( i = 0; i <= segments; i ++ ) {\n\n\t\tvar phi = phiStart + i * inverseSegments * phiLength;\n\n\t\tvar sin = Math.sin( phi );\n\t\tvar cos = Math.cos( phi );\n\n\t\tfor ( j = 0; j <= ( points.length - 1 ); j ++ ) {\n\n\t\t\t// vertex\n\t\t\tvertex.x = points[ j ].x * sin;\n\t\t\tvertex.y = points[ j ].y;\n\t\t\tvertex.z = points[ j ].x * cos;\n\t\t\tvertices.setXYZ( index, vertex.x, vertex.y, vertex.z );\n\n\t\t\t// uv\n\t\t\tuv.x = i / segments;\n\t\t\tuv.y = j / ( points.length - 1 );\n\t\t\tuvs.setXY( index, uv.x, uv.y );\n\n\t\t\t// increase index\n\t\t\tindex ++;\n\n\t\t}\n\n\t}\n\n\t// generate indices\n\n\tfor ( i = 0; i < segments; i ++ ) {\n\n\t\tfor ( j = 0; j < ( points.length - 1 ); j ++ ) {\n\n\t\t\tbase = j + i * points.length;\n\n\t\t\t// indices\n\t\t\tvar a = base;\n\t\t\tvar b = base + points.length;\n\t\t\tvar c = base + points.length + 1;\n\t\t\tvar d = base + 1;\n\n\t\t\t// face one\n\t\t\tindices.setX( indexOffset, a ); indexOffset++;\n\t\t\tindices.setX( indexOffset, b ); indexOffset++;\n\t\t\tindices.setX( indexOffset, d ); indexOffset++;\n\n\t\t\t// face two\n\t\t\tindices.setX( indexOffset, b ); indexOffset++;\n\t\t\tindices.setX( indexOffset, c ); indexOffset++;\n\t\t\tindices.setX( indexOffset, d ); indexOffset++;\n\n\t\t}\n\n\t}\n\n\t// build geometry\n\n\tthis.setIndex( indices );\n\tthis.addAttribute( 'position', vertices );\n\tthis.addAttribute( 'uv', uvs );\n\n\t// generate normals\n\n\tthis.computeVertexNormals();\n\n\t// if the geometry is closed, we need to average the normals along the seam.\n\t// because the corresponding vertices are identical (but still have different UVs).\n\n\tif( phiLength === Math.PI * 2 ) {\n\n\t\tvar normals = this.attributes.normal.array;\n\t\tvar n1 = new Vector3();\n\t\tvar n2 = new Vector3();\n\t\tvar n = new Vector3();\n\n\t\t// this is the buffer offset for the last line of vertices\n\t\tbase = segments * points.length * 3;\n\n\t\tfor( i = 0, j = 0; i < points.length; i ++, j += 3 ) {\n\n\t\t\t// select the normal of the vertex in the first line\n\t\t\tn1.x = normals[ j + 0 ];\n\t\t\tn1.y = normals[ j + 1 ];\n\t\t\tn1.z = normals[ j + 2 ];\n\n\t\t\t// select the normal of the vertex in the last line\n\t\t\tn2.x = normals[ base + j + 0 ];\n\t\t\tn2.y = normals[ base + j + 1 ];\n\t\t\tn2.z = normals[ base + j + 2 ];\n\n\t\t\t// average normals\n\t\t\tn.addVectors( n1, n2 ).normalize();\n\n\t\t\t// assign the new values to both normals\n\t\t\tnormals[ j + 0 ] = normals[ base + j + 0 ] = n.x;\n\t\t\tnormals[ j + 1 ] = normals[ base + j + 1 ] = n.y;\n\t\t\tnormals[ j + 2 ] = normals[ base + j + 2 ] = n.z;\n\n\t\t} // next row\n\n\t}\n\n}\n\nLatheBufferGeometry.prototype = Object.create( BufferGeometry.prototype );\nLatheBufferGeometry.prototype.constructor = LatheBufferGeometry;\n\n\nexport { LatheBufferGeometry };\n","import { Geometry } from '../core/Geometry';\nimport { LatheBufferGeometry } from './LatheBufferGeometry';\n\n/**\n * @author astrodud / http://astrodud.isgreat.org/\n * @author zz85 / https://github.com/zz85\n * @author bhouston / http://clara.io\n */\n\n// points - to create a closed torus, one must use a set of points\n// like so: [ a, b, c, d, a ], see first is the same as last.\n// segments - the number of circumference segments to create\n// phiStart - the starting radian\n// phiLength - the radian (0 to 2PI) range of the lathed section\n// 2PI is a closed lathe, less than 2PI is a portion.\n\nfunction LatheGeometry( points, segments, phiStart, phiLength ) {\n\n\tGeometry.call( this );\n\n\tthis.type = 'LatheGeometry';\n\n\tthis.parameters = {\n\t\tpoints: points,\n\t\tsegments: segments,\n\t\tphiStart: phiStart,\n\t\tphiLength: phiLength\n\t};\n\n\tthis.fromBufferGeometry( new LatheBufferGeometry( points, segments, phiStart, phiLength ) );\n\tthis.mergeVertices();\n\n}\n\nLatheGeometry.prototype = Object.create( Geometry.prototype );\nLatheGeometry.prototype.constructor = LatheGeometry;\n\n\nexport { LatheGeometry };\n","import { BufferGeometry } from '../core/BufferGeometry';\nimport { Float32Attribute, Uint16Attribute, Uint32Attribute } from '../core/BufferAttribute';\nimport { ShapeUtils } from '../extras/ShapeUtils';\n\n/**\n * @author Mugen87 / https://github.com/Mugen87\n *\n * Creates a one-sided polygonal geometry from one or more shapes.\n *\n **/\n\nfunction ShapeBufferGeometry( shapes, curveSegments ) {\n\n\tBufferGeometry.call( this );\n\n\tthis.type = 'ShapeBufferGeometry';\n\n\tthis.parameters = {\n\t\tshapes: shapes,\n\t\tcurveSegments: curveSegments\n\t};\n\n\tcurveSegments = curveSegments || 12;\n\n\tvar vertices = [];\n\tvar normals = [];\n\tvar uvs = [];\n\tvar indices = [];\n\n\tvar groupStart = 0;\n\tvar groupCount = 0;\n\n\t// allow single and array values for \"shapes\" parameter\n\n\tif ( Array.isArray( shapes ) === false ) {\n\n\t\taddShape( shapes );\n\n\t} else {\n\n\t\tfor ( var i = 0; i < shapes.length; i++ ) {\n\n\t\t\taddShape( shapes[ i ] );\n\n\t\t\tthis.addGroup( groupStart, groupCount, i ); // enables MultiMaterial support\n\n\t\t\tgroupStart += groupCount;\n\t\t\tgroupCount = 0;\n\n\t\t}\n\n\t}\n\n\t// build geometry\n\n\tthis.setIndex( ( indices.length > 65535 ? Uint32Attribute : Uint16Attribute )( indices, 1 ) );\n\tthis.addAttribute( 'position', Float32Attribute( vertices, 3 ) );\n\tthis.addAttribute( 'normal', Float32Attribute( normals, 3 ) );\n\tthis.addAttribute( 'uv', Float32Attribute( uvs, 2 ) );\n\n\n\t// helper functions\n\n\tfunction addShape( shape ) {\n\n\t\tvar i, l, shapeHole;\n\n\t\tvar indexOffset = vertices.length / 3;\n\t\tvar points = shape.extractPoints( curveSegments );\n\n\t\tvar shapeVertices = points.shape;\n\t\tvar shapeHoles = points.holes;\n\n\t\t// check direction of vertices\n\n\t\tif ( ShapeUtils.isClockWise( shapeVertices ) === false ) {\n\n\t\t\tshapeVertices = shapeVertices.reverse();\n\n\t\t\t// also check if holes are in the opposite direction\n\n\t\t\tfor ( i = 0, l = shapeHoles.length; i < l; i ++ ) {\n\n\t\t\t\tshapeHole = shapeHoles[ i ];\n\n\t\t\t\tif ( ShapeUtils.isClockWise( shapeHole ) === true ) {\n\n\t\t\t\t\tshapeHoles[ i ] = shapeHole.reverse();\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t}\n\n\t\tvar faces = ShapeUtils.triangulateShape( shapeVertices, shapeHoles );\n\n\t\t// join vertices of inner and outer paths to a single array\n\n\t\tfor ( i = 0, l = shapeHoles.length; i < l; i ++ ) {\n\n\t\t\tshapeHole = shapeHoles[ i ];\n\t\t\tshapeVertices = shapeVertices.concat( shapeHole );\n\n\t\t}\n\n\t\t// vertices, normals, uvs\n\n\t\tfor ( i = 0, l = shapeVertices.length; i < l; i ++ ) {\n\n\t\t\tvar vertex = shapeVertices[ i ];\n\n\t\t\tvertices.push( vertex.x, vertex.y, 0 );\n\t\t\tnormals.push( 0, 0, 1 );\n\t\t\tuvs.push( vertex.x, vertex.y ); // world uvs\n\n\t\t}\n\n\t\t// incides\n\n\t\tfor ( i = 0, l = faces.length; i < l; i ++ ) {\n\n\t\t\tvar face = faces[ i ];\n\n\t\t\tvar a = face[ 0 ] + indexOffset;\n\t\t\tvar b = face[ 1 ] + indexOffset;\n\t\t\tvar c = face[ 2 ] + indexOffset;\n\n\t\t\tindices.push( a, b, c );\n\t\t\tgroupCount += 3;\n\n\t\t}\n\n\t}\n\n}\n\nShapeBufferGeometry.prototype = Object.create( BufferGeometry.prototype );\nShapeBufferGeometry.prototype.constructor = ShapeBufferGeometry;\n\n\nexport { ShapeBufferGeometry };\n","import { Geometry } from '../core/Geometry';\nimport { ShapeBufferGeometry } from './ShapeBufferGeometry';\n\n/**\n * @author jonobr1 / http://jonobr1.com\n *\n * Creates a one-sided polygonal geometry from a path shape.\n *\n **/\n\nfunction ShapeGeometry( shapes, curveSegments ) {\n\n\tGeometry.call( this );\n\n\tthis.type = 'ShapeGeometry';\n\n\tif ( typeof curveSegments === 'object' ) {\n\n\t\tconsole.warn( 'THREE.ShapeGeometry: Options parameter has been removed.' );\n\n\t\tcurveSegments = curveSegments.curveSegments;\n\n\t}\n\n\tthis.parameters = {\n\t\tshapes: shapes,\n\t\tcurveSegments: curveSegments\n\t};\n\n\tthis.fromBufferGeometry( new ShapeBufferGeometry( shapes, curveSegments ) );\n\tthis.mergeVertices();\n\n}\n\nShapeGeometry.prototype = Object.create( Geometry.prototype );\nShapeGeometry.prototype.constructor = ShapeGeometry;\n\n\nexport { ShapeGeometry };\n","import { BufferGeometry } from '../core/BufferGeometry';\nimport { BufferAttribute } from '../core/BufferAttribute';\nimport { Geometry } from '../core/Geometry';\nimport { _Math } from '../math/Math';\n\n/**\n * @author WestLangley / http://github.com/WestLangley\n */\n\nfunction EdgesGeometry( geometry, thresholdAngle ) {\n\n\tBufferGeometry.call( this );\n\n\tthresholdAngle = ( thresholdAngle !== undefined ) ? thresholdAngle : 1;\n\n\tvar thresholdDot = Math.cos( _Math.DEG2RAD * thresholdAngle );\n\n\tvar edge = [ 0, 0 ], hash = {};\n\n\tfunction sortFunction( a, b ) {\n\n\t\treturn a - b;\n\n\t}\n\n\tvar keys = [ 'a', 'b', 'c' ];\n\n\tvar geometry2;\n\n\tif ( (geometry && geometry.isBufferGeometry) ) {\n\n\t\tgeometry2 = new Geometry();\n\t\tgeometry2.fromBufferGeometry( geometry );\n\n\t} else {\n\n\t\tgeometry2 = geometry.clone();\n\n\t}\n\n\tgeometry2.mergeVertices();\n\tgeometry2.computeFaceNormals();\n\n\tvar vertices = geometry2.vertices;\n\tvar faces = geometry2.faces;\n\n\tfor ( var i = 0, l = faces.length; i < l; i ++ ) {\n\n\t\tvar face = faces[ i ];\n\n\t\tfor ( var j = 0; j < 3; j ++ ) {\n\n\t\t\tedge[ 0 ] = face[ keys[ j ] ];\n\t\t\tedge[ 1 ] = face[ keys[ ( j + 1 ) % 3 ] ];\n\t\t\tedge.sort( sortFunction );\n\n\t\t\tvar key = edge.toString();\n\n\t\t\tif ( hash[ key ] === undefined ) {\n\n\t\t\t\thash[ key ] = { vert1: edge[ 0 ], vert2: edge[ 1 ], face1: i, face2: undefined };\n\n\t\t\t} else {\n\n\t\t\t\thash[ key ].face2 = i;\n\n\t\t\t}\n\n\t\t}\n\n\t}\n\n\tvar coords = [];\n\n\tfor ( var key in hash ) {\n\n\t\tvar h = hash[ key ];\n\n\t\tif ( h.face2 === undefined || faces[ h.face1 ].normal.dot( faces[ h.face2 ].normal ) <= thresholdDot ) {\n\n\t\t\tvar vertex = vertices[ h.vert1 ];\n\t\t\tcoords.push( vertex.x );\n\t\t\tcoords.push( vertex.y );\n\t\t\tcoords.push( vertex.z );\n\n\t\t\tvertex = vertices[ h.vert2 ];\n\t\t\tcoords.push( vertex.x );\n\t\t\tcoords.push( vertex.y );\n\t\t\tcoords.push( vertex.z );\n\n\t\t}\n\n\t}\n\n\tthis.addAttribute( 'position', new BufferAttribute( new Float32Array( coords ), 3 ) );\n\n}\n\nEdgesGeometry.prototype = Object.create( BufferGeometry.prototype );\nEdgesGeometry.prototype.constructor = EdgesGeometry;\n\n\nexport { EdgesGeometry };\n","import { BufferGeometry } from '../core/BufferGeometry';\nimport { Vector3 } from '../math/Vector3';\nimport { Vector2 } from '../math/Vector2';\nimport { BufferAttribute } from '../core/BufferAttribute';\n\n/**\n * @author Mugen87 / https://github.com/Mugen87\n */\n\nfunction CylinderBufferGeometry( radiusTop, radiusBottom, height, radialSegments, heightSegments, openEnded, thetaStart, thetaLength ) {\n\n\tBufferGeometry.call( this );\n\n\tthis.type = 'CylinderBufferGeometry';\n\n\tthis.parameters = {\n\t\tradiusTop: radiusTop,\n\t\tradiusBottom: radiusBottom,\n\t\theight: height,\n\t\tradialSegments: radialSegments,\n\t\theightSegments: heightSegments,\n\t\topenEnded: openEnded,\n\t\tthetaStart: thetaStart,\n\t\tthetaLength: thetaLength\n\t};\n\n\tvar scope = this;\n\n\tradiusTop = radiusTop !== undefined ? radiusTop : 20;\n\tradiusBottom = radiusBottom !== undefined ? radiusBottom : 20;\n\theight = height !== undefined ? height : 100;\n\n\tradialSegments = Math.floor( radialSegments ) || 8;\n\theightSegments = Math.floor( heightSegments ) || 1;\n\n\topenEnded = openEnded !== undefined ? openEnded : false;\n\tthetaStart = thetaStart !== undefined ? thetaStart : 0.0;\n\tthetaLength = thetaLength !== undefined ? thetaLength : 2.0 * Math.PI;\n\n\t// used to calculate buffer length\n\n\tvar nbCap = 0;\n\n\tif ( openEnded === false ) {\n\n\t\tif ( radiusTop > 0 ) nbCap ++;\n\t\tif ( radiusBottom > 0 ) nbCap ++;\n\n\t}\n\n\tvar vertexCount = calculateVertexCount();\n\tvar indexCount = calculateIndexCount();\n\n\t// buffers\n\n\tvar indices = new BufferAttribute( new ( indexCount > 65535 ? Uint32Array : Uint16Array )( indexCount ), 1 );\n\tvar vertices = new BufferAttribute( new Float32Array( vertexCount * 3 ), 3 );\n\tvar normals = new BufferAttribute( new Float32Array( vertexCount * 3 ), 3 );\n\tvar uvs = new BufferAttribute( new Float32Array( vertexCount * 2 ), 2 );\n\n\t// helper variables\n\n\tvar index = 0,\n\t indexOffset = 0,\n\t indexArray = [],\n\t halfHeight = height / 2;\n\n\t// group variables\n\tvar groupStart = 0;\n\n\t// generate geometry\n\n\tgenerateTorso();\n\n\tif ( openEnded === false ) {\n\n\t\tif ( radiusTop > 0 ) generateCap( true );\n\t\tif ( radiusBottom > 0 ) generateCap( false );\n\n\t}\n\n\t// build geometry\n\n\tthis.setIndex( indices );\n\tthis.addAttribute( 'position', vertices );\n\tthis.addAttribute( 'normal', normals );\n\tthis.addAttribute( 'uv', uvs );\n\n\t// helper functions\n\n\tfunction calculateVertexCount() {\n\n\t\tvar count = ( radialSegments + 1 ) * ( heightSegments + 1 );\n\n\t\tif ( openEnded === false ) {\n\n\t\t\tcount += ( ( radialSegments + 1 ) * nbCap ) + ( radialSegments * nbCap );\n\n\t\t}\n\n\t\treturn count;\n\n\t}\n\n\tfunction calculateIndexCount() {\n\n\t\tvar count = radialSegments * heightSegments * 2 * 3;\n\n\t\tif ( openEnded === false ) {\n\n\t\t\tcount += radialSegments * nbCap * 3;\n\n\t\t}\n\n\t\treturn count;\n\n\t}\n\n\tfunction generateTorso() {\n\n\t\tvar x, y;\n\t\tvar normal = new Vector3();\n\t\tvar vertex = new Vector3();\n\n\t\tvar groupCount = 0;\n\n\t\t// this will be used to calculate the normal\n\t\tvar slope = ( radiusBottom - radiusTop ) / height;\n\n\t\t// generate vertices, normals and uvs\n\n\t\tfor ( y = 0; y <= heightSegments; y ++ ) {\n\n\t\t\tvar indexRow = [];\n\n\t\t\tvar v = y / heightSegments;\n\n\t\t\t// calculate the radius of the current row\n\t\t\tvar radius = v * ( radiusBottom - radiusTop ) + radiusTop;\n\n\t\t\tfor ( x = 0; x <= radialSegments; x ++ ) {\n\n\t\t\t\tvar u = x / radialSegments;\n\n\t\t\t\tvar theta = u * thetaLength + thetaStart;\n\n\t\t\t\tvar sinTheta = Math.sin( theta );\n\t\t\t\tvar cosTheta = Math.cos( theta );\n\n\t\t\t\t// vertex\n\t\t\t\tvertex.x = radius * sinTheta;\n\t\t\t\tvertex.y = - v * height + halfHeight;\n\t\t\t\tvertex.z = radius * cosTheta;\n\t\t\t\tvertices.setXYZ( index, vertex.x, vertex.y, vertex.z );\n\n\t\t\t\t// normal\n\t\t\t\tnormal.set( sinTheta, slope, cosTheta ).normalize();\n\t\t\t\tnormals.setXYZ( index, normal.x, normal.y, normal.z );\n\n\t\t\t\t// uv\n\t\t\t\tuvs.setXY( index, u, 1 - v );\n\n\t\t\t\t// save index of vertex in respective row\n\t\t\t\tindexRow.push( index );\n\n\t\t\t\t// increase index\n\t\t\t\tindex ++;\n\n\t\t\t}\n\n\t\t\t// now save vertices of the row in our index array\n\t\t\tindexArray.push( indexRow );\n\n\t\t}\n\n\t\t// generate indices\n\n\t\tfor ( x = 0; x < radialSegments; x ++ ) {\n\n\t\t\tfor ( y = 0; y < heightSegments; y ++ ) {\n\n\t\t\t\t// we use the index array to access the correct indices\n\t\t\t\tvar i1 = indexArray[ y ][ x ];\n\t\t\t\tvar i2 = indexArray[ y + 1 ][ x ];\n\t\t\t\tvar i3 = indexArray[ y + 1 ][ x + 1 ];\n\t\t\t\tvar i4 = indexArray[ y ][ x + 1 ];\n\n\t\t\t\t// face one\n\t\t\t\tindices.setX( indexOffset, i1 ); indexOffset ++;\n\t\t\t\tindices.setX( indexOffset, i2 ); indexOffset ++;\n\t\t\t\tindices.setX( indexOffset, i4 ); indexOffset ++;\n\n\t\t\t\t// face two\n\t\t\t\tindices.setX( indexOffset, i2 ); indexOffset ++;\n\t\t\t\tindices.setX( indexOffset, i3 ); indexOffset ++;\n\t\t\t\tindices.setX( indexOffset, i4 ); indexOffset ++;\n\n\t\t\t\t// update counters\n\t\t\t\tgroupCount += 6;\n\n\t\t\t}\n\n\t\t}\n\n\t\t// add a group to the geometry. this will ensure multi material support\n\t\tscope.addGroup( groupStart, groupCount, 0 );\n\n\t\t// calculate new start value for groups\n\t\tgroupStart += groupCount;\n\n\t}\n\n\tfunction generateCap( top ) {\n\n\t\tvar x, centerIndexStart, centerIndexEnd;\n\n\t\tvar uv = new Vector2();\n\t\tvar vertex = new Vector3();\n\n\t\tvar groupCount = 0;\n\n\t\tvar radius = ( top === true ) ? radiusTop : radiusBottom;\n\t\tvar sign = ( top === true ) ? 1 : - 1;\n\n\t\t// save the index of the first center vertex\n\t\tcenterIndexStart = index;\n\n\t\t// first we generate the center vertex data of the cap.\n\t\t// because the geometry needs one set of uvs per face,\n\t\t// we must generate a center vertex per face/segment\n\n\t\tfor ( x = 1; x <= radialSegments; x ++ ) {\n\n\t\t\t// vertex\n\t\t\tvertices.setXYZ( index, 0, halfHeight * sign, 0 );\n\n\t\t\t// normal\n\t\t\tnormals.setXYZ( index, 0, sign, 0 );\n\n\t\t\t// uv\n\t\t\tuv.x = 0.5;\n\t\t\tuv.y = 0.5;\n\n\t\t\tuvs.setXY( index, uv.x, uv.y );\n\n\t\t\t// increase index\n\t\t\tindex ++;\n\n\t\t}\n\n\t\t// save the index of the last center vertex\n\t\tcenterIndexEnd = index;\n\n\t\t// now we generate the surrounding vertices, normals and uvs\n\n\t\tfor ( x = 0; x <= radialSegments; x ++ ) {\n\n\t\t\tvar u = x / radialSegments;\n\t\t\tvar theta = u * thetaLength + thetaStart;\n\n\t\t\tvar cosTheta = Math.cos( theta );\n\t\t\tvar sinTheta = Math.sin( theta );\n\n\t\t\t// vertex\n\t\t\tvertex.x = radius * sinTheta;\n\t\t\tvertex.y = halfHeight * sign;\n\t\t\tvertex.z = radius * cosTheta;\n\t\t\tvertices.setXYZ( index, vertex.x, vertex.y, vertex.z );\n\n\t\t\t// normal\n\t\t\tnormals.setXYZ( index, 0, sign, 0 );\n\n\t\t\t// uv\n\t\t\tuv.x = ( cosTheta * 0.5 ) + 0.5;\n\t\t\tuv.y = ( sinTheta * 0.5 * sign ) + 0.5;\n\t\t\tuvs.setXY( index, uv.x, uv.y );\n\n\t\t\t// increase index\n\t\t\tindex ++;\n\n\t\t}\n\n\t\t// generate indices\n\n\t\tfor ( x = 0; x < radialSegments; x ++ ) {\n\n\t\t\tvar c = centerIndexStart + x;\n\t\t\tvar i = centerIndexEnd + x;\n\n\t\t\tif ( top === true ) {\n\n\t\t\t\t// face top\n\t\t\t\tindices.setX( indexOffset, i ); indexOffset ++;\n\t\t\t\tindices.setX( indexOffset, i + 1 ); indexOffset ++;\n\t\t\t\tindices.setX( indexOffset, c ); indexOffset ++;\n\n\t\t\t} else {\n\n\t\t\t\t// face bottom\n\t\t\t\tindices.setX( indexOffset, i + 1 ); indexOffset ++;\n\t\t\t\tindices.setX( indexOffset, i ); indexOffset ++;\n\t\t\t\tindices.setX( indexOffset, c ); indexOffset ++;\n\n\t\t\t}\n\n\t\t\t// update counters\n\t\t\tgroupCount += 3;\n\n\t\t}\n\n\t\t// add a group to the geometry. this will ensure multi material support\n\t\tscope.addGroup( groupStart, groupCount, top === true ? 1 : 2 );\n\n\t\t// calculate new start value for groups\n\t\tgroupStart += groupCount;\n\n\t}\n\n}\n\nCylinderBufferGeometry.prototype = Object.create( BufferGeometry.prototype );\nCylinderBufferGeometry.prototype.constructor = CylinderBufferGeometry;\n\n\nexport { CylinderBufferGeometry };\n","import { Geometry } from '../core/Geometry';\nimport { CylinderBufferGeometry } from './CylinderBufferGeometry';\n\n/**\n * @author mrdoob / http://mrdoob.com/\n */\n\nfunction CylinderGeometry( radiusTop, radiusBottom, height, radialSegments, heightSegments, openEnded, thetaStart, thetaLength ) {\n\n\tGeometry.call( this );\n\n\tthis.type = 'CylinderGeometry';\n\n\tthis.parameters = {\n\t\tradiusTop: radiusTop,\n\t\tradiusBottom: radiusBottom,\n\t\theight: height,\n\t\tradialSegments: radialSegments,\n\t\theightSegments: heightSegments,\n\t\topenEnded: openEnded,\n\t\tthetaStart: thetaStart,\n\t\tthetaLength: thetaLength\n\t};\n\n\tthis.fromBufferGeometry( new CylinderBufferGeometry( radiusTop, radiusBottom, height, radialSegments, heightSegments, openEnded, thetaStart, thetaLength ) );\n\tthis.mergeVertices();\n\n}\n\nCylinderGeometry.prototype = Object.create( Geometry.prototype );\nCylinderGeometry.prototype.constructor = CylinderGeometry;\n\n\nexport { CylinderGeometry };\n","import { CylinderGeometry } from './CylinderGeometry';\n\n/**\n * @author abelnation / http://github.com/abelnation\n */\n\nfunction ConeGeometry( radius, height, radialSegments, heightSegments, openEnded, thetaStart, thetaLength ) {\n\n\tCylinderGeometry.call( this, 0, radius, height, radialSegments, heightSegments, openEnded, thetaStart, thetaLength );\n\n\tthis.type = 'ConeGeometry';\n\n\tthis.parameters = {\n\t\tradius: radius,\n\t\theight: height,\n\t\tradialSegments: radialSegments,\n\t\theightSegments: heightSegments,\n\t\topenEnded: openEnded,\n\t\tthetaStart: thetaStart,\n\t\tthetaLength: thetaLength\n\t};\n\n}\n\nConeGeometry.prototype = Object.create( CylinderGeometry.prototype );\nConeGeometry.prototype.constructor = ConeGeometry;\n\n\nexport { ConeGeometry };\n","import { CylinderBufferGeometry } from './CylinderBufferGeometry';\n\n/**\n * @author: abelnation / http://github.com/abelnation\n */\n\nfunction ConeBufferGeometry( radius, height, radialSegments, heightSegments, openEnded, thetaStart, thetaLength ) {\n\n\tCylinderBufferGeometry.call( this, 0, radius, height, radialSegments, heightSegments, openEnded, thetaStart, thetaLength );\n\n\tthis.type = 'ConeBufferGeometry';\n\n\tthis.parameters = {\n\t\tradius: radius,\n\t\theight: height,\n\t\tradialSegments: radialSegments,\n\t\theightSegments: heightSegments,\n\t\topenEnded: openEnded,\n\t\tthetaStart: thetaStart,\n\t\tthetaLength: thetaLength\n\t};\n\n}\n\nConeBufferGeometry.prototype = Object.create( CylinderBufferGeometry.prototype );\nConeBufferGeometry.prototype.constructor = ConeBufferGeometry;\n\n\nexport { ConeBufferGeometry };\n","import { BufferGeometry } from '../core/BufferGeometry';\nimport { Vector3 } from '../math/Vector3';\nimport { Sphere } from '../math/Sphere';\nimport { BufferAttribute } from '../core/BufferAttribute';\n\n/**\n * @author benaadams / https://twitter.com/ben_a_adams\n */\n\nfunction CircleBufferGeometry( radius, segments, thetaStart, thetaLength ) {\n\n\tBufferGeometry.call( this );\n\n\tthis.type = 'CircleBufferGeometry';\n\n\tthis.parameters = {\n\t\tradius: radius,\n\t\tsegments: segments,\n\t\tthetaStart: thetaStart,\n\t\tthetaLength: thetaLength\n\t};\n\n\tradius = radius || 50;\n\tsegments = segments !== undefined ? Math.max( 3, segments ) : 8;\n\n\tthetaStart = thetaStart !== undefined ? thetaStart : 0;\n\tthetaLength = thetaLength !== undefined ? thetaLength : Math.PI * 2;\n\n\tvar vertices = segments + 2;\n\n\tvar positions = new Float32Array( vertices * 3 );\n\tvar normals = new Float32Array( vertices * 3 );\n\tvar uvs = new Float32Array( vertices * 2 );\n\n\t// center data is already zero, but need to set a few extras\n\tnormals[ 2 ] = 1.0;\n\tuvs[ 0 ] = 0.5;\n\tuvs[ 1 ] = 0.5;\n\n\tfor ( var s = 0, i = 3, ii = 2 ; s <= segments; s ++, i += 3, ii += 2 ) {\n\n\t\tvar segment = thetaStart + s / segments * thetaLength;\n\n\t\tpositions[ i ] = radius * Math.cos( segment );\n\t\tpositions[ i + 1 ] = radius * Math.sin( segment );\n\n\t\tnormals[ i + 2 ] = 1; // normal z\n\n\t\tuvs[ ii ] = ( positions[ i ] / radius + 1 ) / 2;\n\t\tuvs[ ii + 1 ] = ( positions[ i + 1 ] / radius + 1 ) / 2;\n\n\t}\n\n\tvar indices = [];\n\n\tfor ( var i = 1; i <= segments; i ++ ) {\n\n\t\tindices.push( i, i + 1, 0 );\n\n\t}\n\n\tthis.setIndex( new BufferAttribute( new Uint16Array( indices ), 1 ) );\n\tthis.addAttribute( 'position', new BufferAttribute( positions, 3 ) );\n\tthis.addAttribute( 'normal', new BufferAttribute( normals, 3 ) );\n\tthis.addAttribute( 'uv', new BufferAttribute( uvs, 2 ) );\n\n\tthis.boundingSphere = new Sphere( new Vector3(), radius );\n\n}\n\nCircleBufferGeometry.prototype = Object.create( BufferGeometry.prototype );\nCircleBufferGeometry.prototype.constructor = CircleBufferGeometry;\n\n\nexport { CircleBufferGeometry };\n","import { Geometry } from '../core/Geometry';\nimport { CircleBufferGeometry } from './CircleBufferGeometry';\n\n/**\n * @author hughes\n */\n\nfunction CircleGeometry( radius, segments, thetaStart, thetaLength ) {\n\n\tGeometry.call( this );\n\n\tthis.type = 'CircleGeometry';\n\n\tthis.parameters = {\n\t\tradius: radius,\n\t\tsegments: segments,\n\t\tthetaStart: thetaStart,\n\t\tthetaLength: thetaLength\n\t};\n\n\tthis.fromBufferGeometry( new CircleBufferGeometry( radius, segments, thetaStart, thetaLength ) );\n\n}\n\nCircleGeometry.prototype = Object.create( Geometry.prototype );\nCircleGeometry.prototype.constructor = CircleGeometry;\n\n\nexport { CircleGeometry };\n","import { Geometry } from '../core/Geometry';\nimport { BoxBufferGeometry } from './BoxBufferGeometry';\n\n/**\n * @author mrdoob / http://mrdoob.com/\n * based on http://papervision3d.googlecode.com/svn/trunk/as3/trunk/src/org/papervision3d/objects/primitives/Cube.as\n */\n\nfunction BoxGeometry( width, height, depth, widthSegments, heightSegments, depthSegments ) {\n\n\tGeometry.call( this );\n\n\tthis.type = 'BoxGeometry';\n\n\tthis.parameters = {\n\t\twidth: width,\n\t\theight: height,\n\t\tdepth: depth,\n\t\twidthSegments: widthSegments,\n\t\theightSegments: heightSegments,\n\t\tdepthSegments: depthSegments\n\t};\n\n\tthis.fromBufferGeometry( new BoxBufferGeometry( width, height, depth, widthSegments, heightSegments, depthSegments ) );\n\tthis.mergeVertices();\n\n}\n\nBoxGeometry.prototype = Object.create( Geometry.prototype );\nBoxGeometry.prototype.constructor = BoxGeometry;\n\n\nexport { BoxGeometry };\n","import { ShaderMaterial } from './ShaderMaterial';\nimport { ShaderChunk } from '../renderers/shaders/ShaderChunk';\nimport { UniformsLib } from '../renderers/shaders/UniformsLib';\nimport { UniformsUtils } from '../renderers/shaders/UniformsUtils';\n\n/**\n * @author mrdoob / http://mrdoob.com/\n */\n\nfunction ShadowMaterial() {\n\n\tShaderMaterial.call( this, {\n\t\tuniforms: UniformsUtils.merge( [\n\t\t\tUniformsLib[ \"lights\" ],\n\t\t\t{\n\t\t\t\topacity: { value: 1.0 }\n\t\t\t}\n\t\t] ),\n\t\tvertexShader: ShaderChunk[ 'shadow_vert' ],\n\t\tfragmentShader: ShaderChunk[ 'shadow_frag' ]\n\t} );\n\n\tthis.lights = true;\n\tthis.transparent = true;\n\n\tObject.defineProperties( this, {\n\t\topacity: {\n\t\t\tenumerable: true,\n\t\t\tget: function () {\n\t\t\t\treturn this.uniforms.opacity.value;\n\t\t\t},\n\t\t\tset: function ( value ) {\n\t\t\t\tthis.uniforms.opacity.value = value;\n\t\t\t}\n\t\t}\n\t} );\n\n}\n\nShadowMaterial.prototype = Object.create( ShaderMaterial.prototype );\nShadowMaterial.prototype.constructor = ShadowMaterial;\n\nShadowMaterial.prototype.isShadowMaterial = true;\n\n\nexport { ShadowMaterial };\n","import { ShaderMaterial } from './ShaderMaterial';\n\n/**\n * @author mrdoob / http://mrdoob.com/\n */\n\nfunction RawShaderMaterial( parameters ) {\n\n\tShaderMaterial.call( this, parameters );\n\n\tthis.type = 'RawShaderMaterial';\n\n}\n\nRawShaderMaterial.prototype = Object.create( ShaderMaterial.prototype );\nRawShaderMaterial.prototype.constructor = RawShaderMaterial;\n\nRawShaderMaterial.prototype.isRawShaderMaterial = true;\n\n\nexport { RawShaderMaterial };\n","import { _Math } from '../math/Math';\n\n/**\n * @author mrdoob / http://mrdoob.com/\n */\n\nfunction MultiMaterial( materials ) {\n\n\tthis.uuid = _Math.generateUUID();\n\n\tthis.type = 'MultiMaterial';\n\n\tthis.materials = materials instanceof Array ? materials : [];\n\n\tthis.visible = true;\n\n}\n\nMultiMaterial.prototype = {\n\n\tconstructor: MultiMaterial,\n\n\tisMultiMaterial: true,\n\n\ttoJSON: function ( meta ) {\n\n\t\tvar output = {\n\t\t\tmetadata: {\n\t\t\t\tversion: 4.2,\n\t\t\t\ttype: 'material',\n\t\t\t\tgenerator: 'MaterialExporter'\n\t\t\t},\n\t\t\tuuid: this.uuid,\n\t\t\ttype: this.type,\n\t\t\tmaterials: []\n\t\t};\n\n\t\tvar materials = this.materials;\n\n\t\tfor ( var i = 0, l = materials.length; i < l; i ++ ) {\n\n\t\t\tvar material = materials[ i ].toJSON( meta );\n\t\t\tdelete material.metadata;\n\n\t\t\toutput.materials.push( material );\n\n\t\t}\n\n\t\toutput.visible = this.visible;\n\n\t\treturn output;\n\n\t},\n\n\tclone: function () {\n\n\t\tvar material = new this.constructor();\n\n\t\tfor ( var i = 0; i < this.materials.length; i ++ ) {\n\n\t\t\tmaterial.materials.push( this.materials[ i ].clone() );\n\n\t\t}\n\n\t\tmaterial.visible = this.visible;\n\n\t\treturn material;\n\n\t}\n\n};\n\n\nexport { MultiMaterial };\n","import { Material } from './Material';\nimport { Vector2 } from '../math/Vector2';\nimport { Color } from '../math/Color';\n\n/**\n * @author WestLangley / http://github.com/WestLangley\n *\n * parameters = {\n * color: ,\n * roughness: ,\n * metalness: ,\n * opacity: ,\n *\n * map: new THREE.Texture( ),\n *\n * lightMap: new THREE.Texture( ),\n * lightMapIntensity: \n *\n * aoMap: new THREE.Texture( ),\n * aoMapIntensity: \n *\n * emissive: ,\n * emissiveIntensity: \n * emissiveMap: new THREE.Texture( ),\n *\n * bumpMap: new THREE.Texture( ),\n * bumpScale: ,\n *\n * normalMap: new THREE.Texture( ),\n * normalScale: ,\n *\n * displacementMap: new THREE.Texture( ),\n * displacementScale: ,\n * displacementBias: ,\n *\n * roughnessMap: new THREE.Texture( ),\n *\n * metalnessMap: new THREE.Texture( ),\n *\n * alphaMap: new THREE.Texture( ),\n *\n * envMap: new THREE.CubeTexture( [posx, negx, posy, negy, posz, negz] ),\n * envMapIntensity: \n *\n * refractionRatio: ,\n *\n * wireframe: ,\n * wireframeLinewidth: ,\n *\n * skinning: ,\n * morphTargets: ,\n * morphNormals: \n * }\n */\n\nfunction MeshStandardMaterial( parameters ) {\n\n\tMaterial.call( this );\n\n\tthis.defines = { 'STANDARD': '' };\n\n\tthis.type = 'MeshStandardMaterial';\n\n\tthis.color = new Color( 0xffffff ); // diffuse\n\tthis.roughness = 0.5;\n\tthis.metalness = 0.5;\n\n\tthis.map = null;\n\n\tthis.lightMap = null;\n\tthis.lightMapIntensity = 1.0;\n\n\tthis.aoMap = null;\n\tthis.aoMapIntensity = 1.0;\n\n\tthis.emissive = new Color( 0x000000 );\n\tthis.emissiveIntensity = 1.0;\n\tthis.emissiveMap = null;\n\n\tthis.bumpMap = null;\n\tthis.bumpScale = 1;\n\n\tthis.normalMap = null;\n\tthis.normalScale = new Vector2( 1, 1 );\n\n\tthis.displacementMap = null;\n\tthis.displacementScale = 1;\n\tthis.displacementBias = 0;\n\n\tthis.roughnessMap = null;\n\n\tthis.metalnessMap = null;\n\n\tthis.alphaMap = null;\n\n\tthis.envMap = null;\n\tthis.envMapIntensity = 1.0;\n\n\tthis.refractionRatio = 0.98;\n\n\tthis.wireframe = false;\n\tthis.wireframeLinewidth = 1;\n\tthis.wireframeLinecap = 'round';\n\tthis.wireframeLinejoin = 'round';\n\n\tthis.skinning = false;\n\tthis.morphTargets = false;\n\tthis.morphNormals = false;\n\n\tthis.setValues( parameters );\n\n}\n\nMeshStandardMaterial.prototype = Object.create( Material.prototype );\nMeshStandardMaterial.prototype.constructor = MeshStandardMaterial;\n\nMeshStandardMaterial.prototype.isMeshStandardMaterial = true;\n\nMeshStandardMaterial.prototype.copy = function ( source ) {\n\n\tMaterial.prototype.copy.call( this, source );\n\n\tthis.defines = { 'STANDARD': '' };\n\n\tthis.color.copy( source.color );\n\tthis.roughness = source.roughness;\n\tthis.metalness = source.metalness;\n\n\tthis.map = source.map;\n\n\tthis.lightMap = source.lightMap;\n\tthis.lightMapIntensity = source.lightMapIntensity;\n\n\tthis.aoMap = source.aoMap;\n\tthis.aoMapIntensity = source.aoMapIntensity;\n\n\tthis.emissive.copy( source.emissive );\n\tthis.emissiveMap = source.emissiveMap;\n\tthis.emissiveIntensity = source.emissiveIntensity;\n\n\tthis.bumpMap = source.bumpMap;\n\tthis.bumpScale = source.bumpScale;\n\n\tthis.normalMap = source.normalMap;\n\tthis.normalScale.copy( source.normalScale );\n\n\tthis.displacementMap = source.displacementMap;\n\tthis.displacementScale = source.displacementScale;\n\tthis.displacementBias = source.displacementBias;\n\n\tthis.roughnessMap = source.roughnessMap;\n\n\tthis.metalnessMap = source.metalnessMap;\n\n\tthis.alphaMap = source.alphaMap;\n\n\tthis.envMap = source.envMap;\n\tthis.envMapIntensity = source.envMapIntensity;\n\n\tthis.refractionRatio = source.refractionRatio;\n\n\tthis.wireframe = source.wireframe;\n\tthis.wireframeLinewidth = source.wireframeLinewidth;\n\tthis.wireframeLinecap = source.wireframeLinecap;\n\tthis.wireframeLinejoin = source.wireframeLinejoin;\n\n\tthis.skinning = source.skinning;\n\tthis.morphTargets = source.morphTargets;\n\tthis.morphNormals = source.morphNormals;\n\n\treturn this;\n\n};\n\n\nexport { MeshStandardMaterial };\n","import { MeshStandardMaterial } from './MeshStandardMaterial';\n\n/**\n * @author WestLangley / http://github.com/WestLangley\n *\n * parameters = {\n * reflectivity: \n * }\n */\n\nfunction MeshPhysicalMaterial( parameters ) {\n\n\tMeshStandardMaterial.call( this );\n\n\tthis.defines = { 'PHYSICAL': '' };\n\n\tthis.type = 'MeshPhysicalMaterial';\n\n\tthis.reflectivity = 0.5; // maps to F0 = 0.04\n\n\tthis.clearCoat = 0.0;\n\tthis.clearCoatRoughness = 0.0;\n\n\tthis.setValues( parameters );\n\n}\n\nMeshPhysicalMaterial.prototype = Object.create( MeshStandardMaterial.prototype );\nMeshPhysicalMaterial.prototype.constructor = MeshPhysicalMaterial;\n\nMeshPhysicalMaterial.prototype.isMeshPhysicalMaterial = true;\n\nMeshPhysicalMaterial.prototype.copy = function ( source ) {\n\n\tMeshStandardMaterial.prototype.copy.call( this, source );\n\n\tthis.defines = { 'PHYSICAL': '' };\n\n\tthis.reflectivity = source.reflectivity;\n\n\tthis.clearCoat = source.clearCoat;\n\tthis.clearCoatRoughness = source.clearCoatRoughness;\n\n\treturn this;\n\n};\n\n\nexport { MeshPhysicalMaterial };\n","import { Material } from './Material';\nimport { MultiplyOperation } from '../constants';\nimport { Vector2 } from '../math/Vector2';\nimport { Color } from '../math/Color';\n\n/**\n * @author mrdoob / http://mrdoob.com/\n * @author alteredq / http://alteredqualia.com/\n *\n * parameters = {\n * color: ,\n * specular: ,\n * shininess: ,\n * opacity: ,\n *\n * map: new THREE.Texture( ),\n *\n * lightMap: new THREE.Texture( ),\n * lightMapIntensity: \n *\n * aoMap: new THREE.Texture( ),\n * aoMapIntensity: \n *\n * emissive: ,\n * emissiveIntensity: \n * emissiveMap: new THREE.Texture( ),\n *\n * bumpMap: new THREE.Texture( ),\n * bumpScale: ,\n *\n * normalMap: new THREE.Texture( ),\n * normalScale: ,\n *\n * displacementMap: new THREE.Texture( ),\n * displacementScale: ,\n * displacementBias: ,\n *\n * specularMap: new THREE.Texture( ),\n *\n * alphaMap: new THREE.Texture( ),\n *\n * envMap: new THREE.TextureCube( [posx, negx, posy, negy, posz, negz] ),\n * combine: THREE.Multiply,\n * reflectivity: ,\n * refractionRatio: ,\n *\n * wireframe: ,\n * wireframeLinewidth: ,\n *\n * skinning: ,\n * morphTargets: ,\n * morphNormals: \n * }\n */\n\nfunction MeshPhongMaterial( parameters ) {\n\n\tMaterial.call( this );\n\n\tthis.type = 'MeshPhongMaterial';\n\n\tthis.color = new Color( 0xffffff ); // diffuse\n\tthis.specular = new Color( 0x111111 );\n\tthis.shininess = 30;\n\n\tthis.map = null;\n\n\tthis.lightMap = null;\n\tthis.lightMapIntensity = 1.0;\n\n\tthis.aoMap = null;\n\tthis.aoMapIntensity = 1.0;\n\n\tthis.emissive = new Color( 0x000000 );\n\tthis.emissiveIntensity = 1.0;\n\tthis.emissiveMap = null;\n\n\tthis.bumpMap = null;\n\tthis.bumpScale = 1;\n\n\tthis.normalMap = null;\n\tthis.normalScale = new Vector2( 1, 1 );\n\n\tthis.displacementMap = null;\n\tthis.displacementScale = 1;\n\tthis.displacementBias = 0;\n\n\tthis.specularMap = null;\n\n\tthis.alphaMap = null;\n\n\tthis.envMap = null;\n\tthis.combine = MultiplyOperation;\n\tthis.reflectivity = 1;\n\tthis.refractionRatio = 0.98;\n\n\tthis.wireframe = false;\n\tthis.wireframeLinewidth = 1;\n\tthis.wireframeLinecap = 'round';\n\tthis.wireframeLinejoin = 'round';\n\n\tthis.skinning = false;\n\tthis.morphTargets = false;\n\tthis.morphNormals = false;\n\n\tthis.setValues( parameters );\n\n}\n\nMeshPhongMaterial.prototype = Object.create( Material.prototype );\nMeshPhongMaterial.prototype.constructor = MeshPhongMaterial;\n\nMeshPhongMaterial.prototype.isMeshPhongMaterial = true;\n\nMeshPhongMaterial.prototype.copy = function ( source ) {\n\n\tMaterial.prototype.copy.call( this, source );\n\n\tthis.color.copy( source.color );\n\tthis.specular.copy( source.specular );\n\tthis.shininess = source.shininess;\n\n\tthis.map = source.map;\n\n\tthis.lightMap = source.lightMap;\n\tthis.lightMapIntensity = source.lightMapIntensity;\n\n\tthis.aoMap = source.aoMap;\n\tthis.aoMapIntensity = source.aoMapIntensity;\n\n\tthis.emissive.copy( source.emissive );\n\tthis.emissiveMap = source.emissiveMap;\n\tthis.emissiveIntensity = source.emissiveIntensity;\n\n\tthis.bumpMap = source.bumpMap;\n\tthis.bumpScale = source.bumpScale;\n\n\tthis.normalMap = source.normalMap;\n\tthis.normalScale.copy( source.normalScale );\n\n\tthis.displacementMap = source.displacementMap;\n\tthis.displacementScale = source.displacementScale;\n\tthis.displacementBias = source.displacementBias;\n\n\tthis.specularMap = source.specularMap;\n\n\tthis.alphaMap = source.alphaMap;\n\n\tthis.envMap = source.envMap;\n\tthis.combine = source.combine;\n\tthis.reflectivity = source.reflectivity;\n\tthis.refractionRatio = source.refractionRatio;\n\n\tthis.wireframe = source.wireframe;\n\tthis.wireframeLinewidth = source.wireframeLinewidth;\n\tthis.wireframeLinecap = source.wireframeLinecap;\n\tthis.wireframeLinejoin = source.wireframeLinejoin;\n\n\tthis.skinning = source.skinning;\n\tthis.morphTargets = source.morphTargets;\n\tthis.morphNormals = source.morphNormals;\n\n\treturn this;\n\n};\n\n\nexport { MeshPhongMaterial };\n","import { Material } from './Material';\n\n/**\n * @author mrdoob / http://mrdoob.com/\n *\n * parameters = {\n * opacity: ,\n *\n * wireframe: ,\n * wireframeLinewidth: \n * }\n */\n\nfunction MeshNormalMaterial( parameters ) {\n\n\tMaterial.call( this, parameters );\n\n\tthis.type = 'MeshNormalMaterial';\n\n\tthis.wireframe = false;\n\tthis.wireframeLinewidth = 1;\n\n\tthis.fog = false;\n\tthis.lights = false;\n\tthis.morphTargets = false;\n\n\tthis.setValues( parameters );\n\n}\n\nMeshNormalMaterial.prototype = Object.create( Material.prototype );\nMeshNormalMaterial.prototype.constructor = MeshNormalMaterial;\n\nMeshNormalMaterial.prototype.isMeshNormalMaterial = true;\n\nMeshNormalMaterial.prototype.copy = function ( source ) {\n\n\tMaterial.prototype.copy.call( this, source );\n\n\tthis.wireframe = source.wireframe;\n\tthis.wireframeLinewidth = source.wireframeLinewidth;\n\n\treturn this;\n\n};\n\n\nexport { MeshNormalMaterial };\n","import { Material } from './Material';\nimport { MultiplyOperation } from '../constants';\nimport { Color } from '../math/Color';\n\n/**\n * @author mrdoob / http://mrdoob.com/\n * @author alteredq / http://alteredqualia.com/\n *\n * parameters = {\n * color: ,\n * opacity: ,\n *\n * map: new THREE.Texture( ),\n *\n * lightMap: new THREE.Texture( ),\n * lightMapIntensity: \n *\n * aoMap: new THREE.Texture( ),\n * aoMapIntensity: \n *\n * emissive: ,\n * emissiveIntensity: \n * emissiveMap: new THREE.Texture( ),\n *\n * specularMap: new THREE.Texture( ),\n *\n * alphaMap: new THREE.Texture( ),\n *\n * envMap: new THREE.TextureCube( [posx, negx, posy, negy, posz, negz] ),\n * combine: THREE.Multiply,\n * reflectivity: ,\n * refractionRatio: ,\n *\n * wireframe: ,\n * wireframeLinewidth: ,\n *\n * skinning: ,\n * morphTargets: ,\n * morphNormals: \n * }\n */\n\nfunction MeshLambertMaterial( parameters ) {\n\n\tMaterial.call( this );\n\n\tthis.type = 'MeshLambertMaterial';\n\n\tthis.color = new Color( 0xffffff ); // diffuse\n\n\tthis.map = null;\n\n\tthis.lightMap = null;\n\tthis.lightMapIntensity = 1.0;\n\n\tthis.aoMap = null;\n\tthis.aoMapIntensity = 1.0;\n\n\tthis.emissive = new Color( 0x000000 );\n\tthis.emissiveIntensity = 1.0;\n\tthis.emissiveMap = null;\n\n\tthis.specularMap = null;\n\n\tthis.alphaMap = null;\n\n\tthis.envMap = null;\n\tthis.combine = MultiplyOperation;\n\tthis.reflectivity = 1;\n\tthis.refractionRatio = 0.98;\n\n\tthis.wireframe = false;\n\tthis.wireframeLinewidth = 1;\n\tthis.wireframeLinecap = 'round';\n\tthis.wireframeLinejoin = 'round';\n\n\tthis.skinning = false;\n\tthis.morphTargets = false;\n\tthis.morphNormals = false;\n\n\tthis.setValues( parameters );\n\n}\n\nMeshLambertMaterial.prototype = Object.create( Material.prototype );\nMeshLambertMaterial.prototype.constructor = MeshLambertMaterial;\n\nMeshLambertMaterial.prototype.isMeshLambertMaterial = true;\n\nMeshLambertMaterial.prototype.copy = function ( source ) {\n\n\tMaterial.prototype.copy.call( this, source );\n\n\tthis.color.copy( source.color );\n\n\tthis.map = source.map;\n\n\tthis.lightMap = source.lightMap;\n\tthis.lightMapIntensity = source.lightMapIntensity;\n\n\tthis.aoMap = source.aoMap;\n\tthis.aoMapIntensity = source.aoMapIntensity;\n\n\tthis.emissive.copy( source.emissive );\n\tthis.emissiveMap = source.emissiveMap;\n\tthis.emissiveIntensity = source.emissiveIntensity;\n\n\tthis.specularMap = source.specularMap;\n\n\tthis.alphaMap = source.alphaMap;\n\n\tthis.envMap = source.envMap;\n\tthis.combine = source.combine;\n\tthis.reflectivity = source.reflectivity;\n\tthis.refractionRatio = source.refractionRatio;\n\n\tthis.wireframe = source.wireframe;\n\tthis.wireframeLinewidth = source.wireframeLinewidth;\n\tthis.wireframeLinecap = source.wireframeLinecap;\n\tthis.wireframeLinejoin = source.wireframeLinejoin;\n\n\tthis.skinning = source.skinning;\n\tthis.morphTargets = source.morphTargets;\n\tthis.morphNormals = source.morphNormals;\n\n\treturn this;\n\n};\n\n\nexport { MeshLambertMaterial };\n","import { Material } from './Material';\nimport { Color } from '../math/Color';\n\n/**\n * @author alteredq / http://alteredqualia.com/\n *\n * parameters = {\n * color: ,\n * opacity: ,\n *\n * linewidth: ,\n *\n * scale: ,\n * dashSize: ,\n * gapSize: \n * }\n */\n\nfunction LineDashedMaterial( parameters ) {\n\n\tMaterial.call( this );\n\n\tthis.type = 'LineDashedMaterial';\n\n\tthis.color = new Color( 0xffffff );\n\n\tthis.linewidth = 1;\n\n\tthis.scale = 1;\n\tthis.dashSize = 3;\n\tthis.gapSize = 1;\n\n\tthis.lights = false;\n\n\tthis.setValues( parameters );\n\n}\n\nLineDashedMaterial.prototype = Object.create( Material.prototype );\nLineDashedMaterial.prototype.constructor = LineDashedMaterial;\n\nLineDashedMaterial.prototype.isLineDashedMaterial = true;\n\nLineDashedMaterial.prototype.copy = function ( source ) {\n\n\tMaterial.prototype.copy.call( this, source );\n\n\tthis.color.copy( source.color );\n\n\tthis.linewidth = source.linewidth;\n\n\tthis.scale = source.scale;\n\tthis.dashSize = source.dashSize;\n\tthis.gapSize = source.gapSize;\n\n\treturn this;\n\n};\n\n\nexport { LineDashedMaterial };\n","/**\n * @author mrdoob / http://mrdoob.com/\n */\n\nvar Cache = {\n\n\tenabled: false,\n\n\tfiles: {},\n\n\tadd: function ( key, file ) {\n\n\t\tif ( this.enabled === false ) return;\n\n\t\t// console.log( 'THREE.Cache', 'Adding key:', key );\n\n\t\tthis.files[ key ] = file;\n\n\t},\n\n\tget: function ( key ) {\n\n\t\tif ( this.enabled === false ) return;\n\n\t\t// console.log( 'THREE.Cache', 'Checking key:', key );\n\n\t\treturn this.files[ key ];\n\n\t},\n\n\tremove: function ( key ) {\n\n\t\tdelete this.files[ key ];\n\n\t},\n\n\tclear: function () {\n\n\t\tthis.files = {};\n\n\t}\n\n};\n\n\nexport { Cache };\n","/**\n * @author mrdoob / http://mrdoob.com/\n */\n\nfunction LoadingManager( onLoad, onProgress, onError ) {\n\n\tvar scope = this;\n\n\tvar isLoading = false, itemsLoaded = 0, itemsTotal = 0;\n\n\tthis.onStart = undefined;\n\tthis.onLoad = onLoad;\n\tthis.onProgress = onProgress;\n\tthis.onError = onError;\n\n\tthis.itemStart = function ( url ) {\n\n\t\titemsTotal ++;\n\n\t\tif ( isLoading === false ) {\n\n\t\t\tif ( scope.onStart !== undefined ) {\n\n\t\t\t\tscope.onStart( url, itemsLoaded, itemsTotal );\n\n\t\t\t}\n\n\t\t}\n\n\t\tisLoading = true;\n\n\t};\n\n\tthis.itemEnd = function ( url ) {\n\n\t\titemsLoaded ++;\n\n\t\tif ( scope.onProgress !== undefined ) {\n\n\t\t\tscope.onProgress( url, itemsLoaded, itemsTotal );\n\n\t\t}\n\n\t\tif ( itemsLoaded === itemsTotal ) {\n\n\t\t\tisLoading = false;\n\n\t\t\tif ( scope.onLoad !== undefined ) {\n\n\t\t\t\tscope.onLoad();\n\n\t\t\t}\n\n\t\t}\n\n\t};\n\n\tthis.itemError = function ( url ) {\n\n\t\tif ( scope.onError !== undefined ) {\n\n\t\t\tscope.onError( url );\n\n\t\t}\n\n\t};\n\n}\n\nvar DefaultLoadingManager = new LoadingManager();\n\n\nexport { DefaultLoadingManager, LoadingManager };\n","/**\n * @author mrdoob / http://mrdoob.com/\n */\n\nimport { Cache } from './Cache';\nimport { DefaultLoadingManager } from './LoadingManager';\n\nfunction FileLoader( manager ) {\n\n\tthis.manager = ( manager !== undefined ) ? manager : DefaultLoadingManager;\n\n}\n\nObject.assign( FileLoader.prototype, {\n\n\tload: function ( url, onLoad, onProgress, onError ) {\n\n\t\tif ( url === undefined ) url = '';\n\n\t\tif ( this.path !== undefined ) url = this.path + url;\n\n\t\tvar scope = this;\n\n\t\tvar cached = Cache.get( url );\n\n\t\tif ( cached !== undefined ) {\n\n\t\t\tscope.manager.itemStart( url );\n\n\t\t\tsetTimeout( function () {\n\n\t\t\t\tif ( onLoad ) onLoad( cached );\n\n\t\t\t\tscope.manager.itemEnd( url );\n\n\t\t\t}, 0 );\n\n\t\t\treturn cached;\n\n\t\t}\n\n\t\t// Check for data: URI\n\t\tvar dataUriRegex = /^data:(.*?)(;base64)?,(.*)$/;\n\t\tvar dataUriRegexResult = url.match( dataUriRegex );\n\n\t\t// Safari can not handle Data URIs through XMLHttpRequest so process manually\n\t\tif ( dataUriRegexResult ) {\n\n\t\t\tvar mimeType = dataUriRegexResult[1];\n\t\t\tvar isBase64 = !!dataUriRegexResult[2];\n\t\t\tvar data = dataUriRegexResult[3];\n\n\t\t\tdata = window.decodeURIComponent(data);\n\n\t\t\tif( isBase64 ) {\n\t\t\t\tdata = window.atob(data);\n\t\t\t}\n\n\t\t\ttry {\n\n\t\t\t\tvar response;\n\t\t\t\tvar responseType = ( this.responseType || '' ).toLowerCase();\n\n\t\t\t\tswitch ( responseType ) {\n\n\t\t\t\t\tcase 'arraybuffer':\n\t\t\t\t\tcase 'blob':\n\n\t\t\t\t\t \tresponse = new ArrayBuffer( data.length );\n\t\t\t\t\t\tvar view = new Uint8Array( response );\n\t\t\t\t\t\tfor ( var i = 0; i < data.length; i ++ ) {\n\n\t\t\t\t\t\t\t\tview[ i ] = data.charCodeAt( i );\n\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\tif ( responseType === 'blob' ) {\n\n\t\t\t\t\t\t\tresponse = new Blob( [ response ], { \"type\" : mimeType } );\n\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\tbreak;\n\n\t\t\t\t\tcase 'document':\n\n\t\t\t\t\t\tvar parser = new DOMParser();\n\t\t\t\t\t\tresponse = parser.parseFromString( data, mimeType );\n\n\t\t\t\t\t\tbreak;\n\n\t\t\t\t\tcase 'json':\n\n\t\t\t\t\t\tresponse = JSON.parse( data );\n\n\t\t\t\t\t\tbreak;\n\n\t\t\t\t\tdefault: // 'text' or other\n\n\t\t\t\t\t\tresponse = data;\n\n\t\t\t\t\t\tbreak;\n\n\t\t\t\t}\n\n\t\t\t\t// Wait for next browser tick\n\t\t\t\twindow.setTimeout( function() {\n\n\t\t\t\t\tif ( onLoad ) onLoad( response );\n\n\t\t\t\t\tscope.manager.itemEnd( url );\n\n\t\t\t\t}, 0);\n\n\t\t\t} catch ( error ) {\n\n\t\t\t\t// Wait for next browser tick\n\t\t\t\twindow.setTimeout( function() {\n\n\t\t\t\t\tif ( onError ) onError( error );\n\n\t\t\t\t\tscope.manager.itemError( url );\n\n\t\t\t\t}, 0);\n\n\t\t\t}\n\n\t\t} else {\n\n\t\t\tvar request = new XMLHttpRequest();\n\t\t\trequest.open( 'GET', url, true );\n\n\t\t\trequest.addEventListener( 'load', function ( event ) {\n\n\t\t\t\tvar response = event.target.response;\n\n\t\t\t\tCache.add( url, response );\n\n\t\t\t\tif ( this.status === 200 ) {\n\n\t\t\t\t\tif ( onLoad ) onLoad( response );\n\n\t\t\t\t\tscope.manager.itemEnd( url );\n\n\t\t\t\t} else if ( this.status === 0 ) {\n\n\t\t\t\t\t// Some browsers return HTTP Status 0 when using non-http protocol\n\t\t\t\t\t// e.g. 'file://' or 'data://'. Handle as success.\n\n\t\t\t\t\tconsole.warn( 'THREE.FileLoader: HTTP Status 0 received.' );\n\n\t\t\t\t\tif ( onLoad ) onLoad( response );\n\n\t\t\t\t\tscope.manager.itemEnd( url );\n\n\t\t\t\t} else {\n\n\t\t\t\t\tif ( onError ) onError( event );\n\n\t\t\t\t\tscope.manager.itemError( url );\n\n\t\t\t\t}\n\n\t\t\t}, false );\n\n\t\t\tif ( onProgress !== undefined ) {\n\n\t\t\t\trequest.addEventListener( 'progress', function ( event ) {\n\n\t\t\t\t\tonProgress( event );\n\n\t\t\t\t}, false );\n\n\t\t\t}\n\n\t\t\trequest.addEventListener( 'error', function ( event ) {\n\n\t\t\t\tif ( onError ) onError( event );\n\n\t\t\t\tscope.manager.itemError( url );\n\n\t\t\t}, false );\n\n\t\t\tif ( this.responseType !== undefined ) request.responseType = this.responseType;\n\t\t\tif ( this.withCredentials !== undefined ) request.withCredentials = this.withCredentials;\n\n\t\t\tif ( request.overrideMimeType ) request.overrideMimeType( 'text/plain' );\n\n\t\t\trequest.send( null );\n\n\t\t}\n\n\t\tscope.manager.itemStart( url );\n\n\t\treturn request;\n\n\t},\n\n\tsetPath: function ( value ) {\n\n\t\tthis.path = value;\n\t\treturn this;\n\n\t},\n\n\tsetResponseType: function ( value ) {\n\n\t\tthis.responseType = value;\n\t\treturn this;\n\n\t},\n\n\tsetWithCredentials: function ( value ) {\n\n\t\tthis.withCredentials = value;\n\t\treturn this;\n\n\t}\n\n} );\n\n\nexport { FileLoader };\n","import { LinearFilter } from '../constants';\nimport { FileLoader } from './FileLoader';\nimport { CompressedTexture } from '../textures/CompressedTexture';\nimport { DefaultLoadingManager } from './LoadingManager';\n\n/**\n * @author mrdoob / http://mrdoob.com/\n *\n * Abstract Base class to block based textures loader (dds, pvr, ...)\n */\n\nfunction CompressedTextureLoader( manager ) {\n\n\tthis.manager = ( manager !== undefined ) ? manager : DefaultLoadingManager;\n\n\t// override in sub classes\n\tthis._parser = null;\n\n}\n\nObject.assign( CompressedTextureLoader.prototype, {\n\n\tload: function ( url, onLoad, onProgress, onError ) {\n\n\t\tvar scope = this;\n\n\t\tvar images = [];\n\n\t\tvar texture = new CompressedTexture();\n\t\ttexture.image = images;\n\n\t\tvar loader = new FileLoader( this.manager );\n\t\tloader.setPath( this.path );\n\t\tloader.setResponseType( 'arraybuffer' );\n\n\t\tfunction loadTexture( i ) {\n\n\t\t\tloader.load( url[ i ], function ( buffer ) {\n\n\t\t\t\tvar texDatas = scope._parser( buffer, true );\n\n\t\t\t\timages[ i ] = {\n\t\t\t\t\twidth: texDatas.width,\n\t\t\t\t\theight: texDatas.height,\n\t\t\t\t\tformat: texDatas.format,\n\t\t\t\t\tmipmaps: texDatas.mipmaps\n\t\t\t\t};\n\n\t\t\t\tloaded += 1;\n\n\t\t\t\tif ( loaded === 6 ) {\n\n\t\t\t\t\tif ( texDatas.mipmapCount === 1 )\n\t\t\t\t\t\ttexture.minFilter = LinearFilter;\n\n\t\t\t\t\ttexture.format = texDatas.format;\n\t\t\t\t\ttexture.needsUpdate = true;\n\n\t\t\t\t\tif ( onLoad ) onLoad( texture );\n\n\t\t\t\t}\n\n\t\t\t}, onProgress, onError );\n\n\t\t}\n\n\t\tif ( Array.isArray( url ) ) {\n\n\t\t\tvar loaded = 0;\n\n\t\t\tfor ( var i = 0, il = url.length; i < il; ++ i ) {\n\n\t\t\t\tloadTexture( i );\n\n\t\t\t}\n\n\t\t} else {\n\n\t\t\t// compressed cubemap texture stored in a single DDS file\n\n\t\t\tloader.load( url, function ( buffer ) {\n\n\t\t\t\tvar texDatas = scope._parser( buffer, true );\n\n\t\t\t\tif ( texDatas.isCubemap ) {\n\n\t\t\t\t\tvar faces = texDatas.mipmaps.length / texDatas.mipmapCount;\n\n\t\t\t\t\tfor ( var f = 0; f < faces; f ++ ) {\n\n\t\t\t\t\t\timages[ f ] = { mipmaps : [] };\n\n\t\t\t\t\t\tfor ( var i = 0; i < texDatas.mipmapCount; i ++ ) {\n\n\t\t\t\t\t\t\timages[ f ].mipmaps.push( texDatas.mipmaps[ f * texDatas.mipmapCount + i ] );\n\t\t\t\t\t\t\timages[ f ].format = texDatas.format;\n\t\t\t\t\t\t\timages[ f ].width = texDatas.width;\n\t\t\t\t\t\t\timages[ f ].height = texDatas.height;\n\n\t\t\t\t\t\t}\n\n\t\t\t\t\t}\n\n\t\t\t\t} else {\n\n\t\t\t\t\ttexture.image.width = texDatas.width;\n\t\t\t\t\ttexture.image.height = texDatas.height;\n\t\t\t\t\ttexture.mipmaps = texDatas.mipmaps;\n\n\t\t\t\t}\n\n\t\t\t\tif ( texDatas.mipmapCount === 1 ) {\n\n\t\t\t\t\ttexture.minFilter = LinearFilter;\n\n\t\t\t\t}\n\n\t\t\t\ttexture.format = texDatas.format;\n\t\t\t\ttexture.needsUpdate = true;\n\n\t\t\t\tif ( onLoad ) onLoad( texture );\n\n\t\t\t}, onProgress, onError );\n\n\t\t}\n\n\t\treturn texture;\n\n\t},\n\n\tsetPath: function ( value ) {\n\n\t\tthis.path = value;\n\t\treturn this;\n\n\t}\n\n} );\n\n\nexport { CompressedTextureLoader };\n","import { LinearFilter, LinearMipMapLinearFilter, ClampToEdgeWrapping } from '../constants';\nimport { FileLoader } from './FileLoader';\nimport { DataTexture } from '../textures/DataTexture';\nimport { DefaultLoadingManager } from './LoadingManager';\n\n/**\n * @author Nikos M. / https://github.com/foo123/\n *\n * Abstract Base class to load generic binary textures formats (rgbe, hdr, ...)\n */\n\nvar DataTextureLoader = BinaryTextureLoader;\nfunction BinaryTextureLoader( manager ) {\n\n\tthis.manager = ( manager !== undefined ) ? manager : DefaultLoadingManager;\n\n\t// override in sub classes\n\tthis._parser = null;\n\n}\n\nObject.assign( BinaryTextureLoader.prototype, {\n\n\tload: function ( url, onLoad, onProgress, onError ) {\n\n\t\tvar scope = this;\n\n\t\tvar texture = new DataTexture();\n\n\t\tvar loader = new FileLoader( this.manager );\n\t\tloader.setResponseType( 'arraybuffer' );\n\n\t\tloader.load( url, function ( buffer ) {\n\n\t\t\tvar texData = scope._parser( buffer );\n\n\t\t\tif ( ! texData ) return;\n\n\t\t\tif ( undefined !== texData.image ) {\n\n\t\t\t\ttexture.image = texData.image;\n\n\t\t\t} else if ( undefined !== texData.data ) {\n\n\t\t\t\ttexture.image.width = texData.width;\n\t\t\t\ttexture.image.height = texData.height;\n\t\t\t\ttexture.image.data = texData.data;\n\n\t\t\t}\n\n\t\t\ttexture.wrapS = undefined !== texData.wrapS ? texData.wrapS : ClampToEdgeWrapping;\n\t\t\ttexture.wrapT = undefined !== texData.wrapT ? texData.wrapT : ClampToEdgeWrapping;\n\n\t\t\ttexture.magFilter = undefined !== texData.magFilter ? texData.magFilter : LinearFilter;\n\t\t\ttexture.minFilter = undefined !== texData.minFilter ? texData.minFilter : LinearMipMapLinearFilter;\n\n\t\t\ttexture.anisotropy = undefined !== texData.anisotropy ? texData.anisotropy : 1;\n\n\t\t\tif ( undefined !== texData.format ) {\n\n\t\t\t\ttexture.format = texData.format;\n\n\t\t\t}\n\t\t\tif ( undefined !== texData.type ) {\n\n\t\t\t\ttexture.type = texData.type;\n\n\t\t\t}\n\n\t\t\tif ( undefined !== texData.mipmaps ) {\n\n\t\t\t\ttexture.mipmaps = texData.mipmaps;\n\n\t\t\t}\n\n\t\t\tif ( 1 === texData.mipmapCount ) {\n\n\t\t\t\ttexture.minFilter = LinearFilter;\n\n\t\t\t}\n\n\t\t\ttexture.needsUpdate = true;\n\n\t\t\tif ( onLoad ) onLoad( texture, texData );\n\n\t\t}, onProgress, onError );\n\n\n\t\treturn texture;\n\n\t}\n\n} );\n\n\nexport { BinaryTextureLoader, DataTextureLoader };\n","import { FileLoader } from './FileLoader';\nimport { DefaultLoadingManager } from './LoadingManager';\n\n/**\n * @author mrdoob / http://mrdoob.com/\n */\n\nfunction ImageLoader( manager ) {\n\n\tthis.manager = ( manager !== undefined ) ? manager : DefaultLoadingManager;\n\n}\n\nObject.assign( ImageLoader.prototype, {\n\n\tload: function ( url, onLoad, onProgress, onError ) {\n\n\t\tvar scope = this;\n\n\t\tvar image = document.createElementNS( 'http://www.w3.org/1999/xhtml', 'img' );\n\t\timage.onload = function () {\n\n\t\t\timage.onload = null;\n\n\t\t\tURL.revokeObjectURL( image.src );\n\n\t\t\tif ( onLoad ) onLoad( image );\n\n\t\t\tscope.manager.itemEnd( url );\n\n\t\t};\n\t\timage.onerror = onError;\n\n\t\tif ( url.indexOf( 'data:' ) === 0 ) {\n\n\t\t\timage.src = url;\n\n\t\t} else {\n\n\t\t\tvar loader = new FileLoader();\n\t\t\tloader.setPath( this.path );\n\t\t\tloader.setResponseType( 'blob' );\n\t\t\tloader.setWithCredentials( this.withCredentials );\n\t\t\tloader.load( url, function ( blob ) {\n\n\t\t\t\timage.src = URL.createObjectURL( blob );\n\n\t\t\t}, onProgress, onError );\n\n\t\t}\n\n\t\tscope.manager.itemStart( url );\n\n\t\treturn image;\n\n\t},\n\n\tsetCrossOrigin: function ( value ) {\n\n\t\tthis.crossOrigin = value;\n\t\treturn this;\n\n\t},\n\n\tsetWithCredentials: function ( value ) {\n\n\t\tthis.withCredentials = value;\n\t\treturn this;\n\n\t},\n\n\tsetPath: function ( value ) {\n\n\t\tthis.path = value;\n\t\treturn this;\n\n\t}\n\n} );\n\n\nexport { ImageLoader };\n","import { ImageLoader } from './ImageLoader';\nimport { CubeTexture } from '../textures/CubeTexture';\nimport { DefaultLoadingManager } from './LoadingManager';\n\n/**\n * @author mrdoob / http://mrdoob.com/\n */\n\nfunction CubeTextureLoader( manager ) {\n\n\tthis.manager = ( manager !== undefined ) ? manager : DefaultLoadingManager;\n\n}\n\nObject.assign( CubeTextureLoader.prototype, {\n\n\tload: function ( urls, onLoad, onProgress, onError ) {\n\n\t\tvar texture = new CubeTexture();\n\n\t\tvar loader = new ImageLoader( this.manager );\n\t\tloader.setCrossOrigin( this.crossOrigin );\n\t\tloader.setPath( this.path );\n\n\t\tvar loaded = 0;\n\n\t\tfunction loadTexture( i ) {\n\n\t\t\tloader.load( urls[ i ], function ( image ) {\n\n\t\t\t\ttexture.images[ i ] = image;\n\n\t\t\t\tloaded ++;\n\n\t\t\t\tif ( loaded === 6 ) {\n\n\t\t\t\t\ttexture.needsUpdate = true;\n\n\t\t\t\t\tif ( onLoad ) onLoad( texture );\n\n\t\t\t\t}\n\n\t\t\t}, undefined, onError );\n\n\t\t}\n\n\t\tfor ( var i = 0; i < urls.length; ++ i ) {\n\n\t\t\tloadTexture( i );\n\n\t\t}\n\n\t\treturn texture;\n\n\t},\n\n\tsetCrossOrigin: function ( value ) {\n\n\t\tthis.crossOrigin = value;\n\t\treturn this;\n\n\t},\n\n\tsetPath: function ( value ) {\n\n\t\tthis.path = value;\n\t\treturn this;\n\n\t}\n\n} );\n\n\nexport { CubeTextureLoader };\n","import { RGBAFormat, RGBFormat } from '../constants';\nimport { ImageLoader } from './ImageLoader';\nimport { Texture } from '../textures/Texture';\nimport { DefaultLoadingManager } from './LoadingManager';\n\n/**\n * @author mrdoob / http://mrdoob.com/\n */\n\nfunction TextureLoader( manager ) {\n\n\tthis.manager = ( manager !== undefined ) ? manager : DefaultLoadingManager;\n\n}\n\nObject.assign( TextureLoader.prototype, {\n\n\tload: function ( url, onLoad, onProgress, onError ) {\n\n\t\tvar texture = new Texture();\n\n\t\tvar loader = new ImageLoader( this.manager );\n\t\tloader.setCrossOrigin( this.crossOrigin );\n\t\tloader.setWithCredentials( this.withCredentials );\n\t\tloader.setPath( this.path );\n\t\tloader.load( url, function ( image ) {\n\n\t\t\t// JPEGs can't have an alpha channel, so memory can be saved by storing them as RGB.\n\t\t\tvar isJPEG = url.search( /\\.(jpg|jpeg)$/ ) > 0 || url.search( /^data\\:image\\/jpeg/ ) === 0;\n\n\t\t\ttexture.format = isJPEG ? RGBFormat : RGBAFormat;\n\t\t\ttexture.image = image;\n\t\t\ttexture.needsUpdate = true;\n\n\t\t\tif ( onLoad !== undefined ) {\n\n\t\t\t\tonLoad( texture );\n\n\t\t\t}\n\n\t\t}, onProgress, onError );\n\n\t\treturn texture;\n\n\t},\n\n\tsetCrossOrigin: function ( value ) {\n\n\t\tthis.crossOrigin = value;\n\t\treturn this;\n\n\t},\n\n\tsetWithCredentials: function ( value ) {\n\n\t\tthis.withCredentials = value;\n\t\treturn this;\n\n\t},\n\n\tsetPath: function ( value ) {\n\n\t\tthis.path = value;\n\t\treturn this;\n\n\t}\n\n\n\n} );\n\n\nexport { TextureLoader };\n","import { Object3D } from '../core/Object3D';\nimport { Color } from '../math/Color';\n\n/**\n * @author mrdoob / http://mrdoob.com/\n * @author alteredq / http://alteredqualia.com/\n */\n\nfunction Light( color, intensity ) {\n\n\tObject3D.call( this );\n\n\tthis.type = 'Light';\n\n\tthis.color = new Color( color );\n\tthis.intensity = intensity !== undefined ? intensity : 1;\n\n\tthis.receiveShadow = undefined;\n\n}\n\nLight.prototype = Object.assign( Object.create( Object3D.prototype ), {\n\n\tconstructor: Light,\n\n\tisLight: true,\n\n\tcopy: function ( source ) {\n\n\t\tObject3D.prototype.copy.call( this, source );\n\n\t\tthis.color.copy( source.color );\n\t\tthis.intensity = source.intensity;\n\n\t\treturn this;\n\n\t},\n\n\ttoJSON: function ( meta ) {\n\n\t\tvar data = Object3D.prototype.toJSON.call( this, meta );\n\n\t\tdata.object.color = this.color.getHex();\n\t\tdata.object.intensity = this.intensity;\n\n\t\tif ( this.groundColor !== undefined ) data.object.groundColor = this.groundColor.getHex();\n\n\t\tif ( this.distance !== undefined ) data.object.distance = this.distance;\n\t\tif ( this.angle !== undefined ) data.object.angle = this.angle;\n\t\tif ( this.decay !== undefined ) data.object.decay = this.decay;\n\t\tif ( this.penumbra !== undefined ) data.object.penumbra = this.penumbra;\n\n\t\tif ( this.shadow !== undefined ) data.object.shadow = this.shadow.toJSON();\n\n\t\treturn data;\n\n\t}\n\n} );\n\n\nexport { Light };\n","import { Light } from './Light';\nimport { Color } from '../math/Color';\nimport { Object3D } from '../core/Object3D';\n\n/**\n * @author alteredq / http://alteredqualia.com/\n */\n\nfunction HemisphereLight( skyColor, groundColor, intensity ) {\n\n\tLight.call( this, skyColor, intensity );\n\n\tthis.type = 'HemisphereLight';\n\n\tthis.castShadow = undefined;\n\n\tthis.position.copy( Object3D.DefaultUp );\n\tthis.updateMatrix();\n\n\tthis.groundColor = new Color( groundColor );\n\n}\n\nHemisphereLight.prototype = Object.assign( Object.create( Light.prototype ), {\n\n\tconstructor: HemisphereLight,\n\n\tisHemisphereLight: true,\n\n\tcopy: function ( source ) {\n\n\t\tLight.prototype.copy.call( this, source );\n\n\t\tthis.groundColor.copy( source.groundColor );\n\n\t\treturn this;\n\n\t}\n\n} );\n\n\nexport { HemisphereLight };\n","import { Matrix4 } from '../math/Matrix4';\nimport { Vector2 } from '../math/Vector2';\n\n/**\n * @author mrdoob / http://mrdoob.com/\n */\n\nfunction LightShadow( camera ) {\n\n\tthis.camera = camera;\n\n\tthis.bias = 0;\n\tthis.radius = 1;\n\n\tthis.mapSize = new Vector2( 512, 512 );\n\n\tthis.map = null;\n\tthis.matrix = new Matrix4();\n\n}\n\nObject.assign( LightShadow.prototype, {\n\n\tcopy: function ( source ) {\n\n\t\tthis.camera = source.camera.clone();\n\n\t\tthis.bias = source.bias;\n\t\tthis.radius = source.radius;\n\n\t\tthis.mapSize.copy( source.mapSize );\n\n\t\treturn this;\n\n\t},\n\n\tclone: function () {\n\n\t\treturn new this.constructor().copy( this );\n\n\t},\n\n\ttoJSON: function () {\n\n\t\tvar object = {};\n\n\t\tif ( this.bias !== 0 ) object.bias = this.bias;\n\t\tif ( this.radius !== 1 ) object.radius = this.radius;\n\t\tif ( this.mapSize.x !== 512 || this.mapSize.y !== 512 ) object.mapSize = this.mapSize.toArray();\n\n\t\tobject.camera = this.camera.toJSON( false ).object;\n\t\tdelete object.camera.matrix;\n\n\t\treturn object;\n\n\t}\n\n} );\n\n\nexport { LightShadow };\n","import { LightShadow } from './LightShadow';\nimport { _Math } from '../math/Math';\nimport { PerspectiveCamera } from '../cameras/PerspectiveCamera';\n\n/**\n * @author mrdoob / http://mrdoob.com/\n */\n\nfunction SpotLightShadow() {\n\n\tLightShadow.call( this, new PerspectiveCamera( 50, 1, 0.5, 500 ) );\n\n}\n\nSpotLightShadow.prototype = Object.assign( Object.create( LightShadow.prototype ), {\n\n\tconstructor: SpotLightShadow,\n\n\tisSpotLightShadow: true,\n\n\tupdate: function ( light ) {\n\n\t\tvar fov = _Math.RAD2DEG * 2 * light.angle;\n\t\tvar aspect = this.mapSize.width / this.mapSize.height;\n\t\tvar far = light.distance || 500;\n\n\t\tvar camera = this.camera;\n\n\t\tif ( fov !== camera.fov || aspect !== camera.aspect || far !== camera.far ) {\n\n\t\t\tcamera.fov = fov;\n\t\t\tcamera.aspect = aspect;\n\t\t\tcamera.far = far;\n\t\t\tcamera.updateProjectionMatrix();\n\n\t\t}\n\n\t}\n\n} );\n\n\nexport { SpotLightShadow };\n","import { Light } from './Light';\nimport { SpotLightShadow } from './SpotLightShadow';\nimport { Object3D } from '../core/Object3D';\n\n/**\n * @author alteredq / http://alteredqualia.com/\n */\n\nfunction SpotLight( color, intensity, distance, angle, penumbra, decay ) {\n\n\tLight.call( this, color, intensity );\n\n\tthis.type = 'SpotLight';\n\n\tthis.position.copy( Object3D.DefaultUp );\n\tthis.updateMatrix();\n\n\tthis.target = new Object3D();\n\n\tObject.defineProperty( this, 'power', {\n\t\tget: function () {\n\t\t\t// intensity = power per solid angle.\n\t\t\t// ref: equation (17) from http://www.frostbite.com/wp-content/uploads/2014/11/course_notes_moving_frostbite_to_pbr.pdf\n\t\t\treturn this.intensity * Math.PI;\n\t\t},\n\t\tset: function ( power ) {\n\t\t\t// intensity = power per solid angle.\n\t\t\t// ref: equation (17) from http://www.frostbite.com/wp-content/uploads/2014/11/course_notes_moving_frostbite_to_pbr.pdf\n\t\t\tthis.intensity = power / Math.PI;\n\t\t}\n\t} );\n\n\tthis.distance = ( distance !== undefined ) ? distance : 0;\n\tthis.angle = ( angle !== undefined ) ? angle : Math.PI / 3;\n\tthis.penumbra = ( penumbra !== undefined ) ? penumbra : 0;\n\tthis.decay = ( decay !== undefined ) ? decay : 1;\t// for physically correct lights, should be 2.\n\n\tthis.shadow = new SpotLightShadow();\n\n}\n\nSpotLight.prototype = Object.assign( Object.create( Light.prototype ), {\n\n\tconstructor: SpotLight,\n\n\tisSpotLight: true,\n\n\tcopy: function ( source ) {\n\n\t\tLight.prototype.copy.call( this, source );\n\n\t\tthis.distance = source.distance;\n\t\tthis.angle = source.angle;\n\t\tthis.penumbra = source.penumbra;\n\t\tthis.decay = source.decay;\n\n\t\tthis.target = source.target.clone();\n\n\t\tthis.shadow = source.shadow.clone();\n\n\t\treturn this;\n\n\t}\n\n} );\n\n\nexport { SpotLight };\n","import { Light } from './Light';\nimport { PerspectiveCamera } from '../cameras/PerspectiveCamera';\nimport { LightShadow } from './LightShadow';\n\n/**\n * @author mrdoob / http://mrdoob.com/\n */\n\n\nfunction PointLight( color, intensity, distance, decay ) {\n\n\tLight.call( this, color, intensity );\n\n\tthis.type = 'PointLight';\n\n\tObject.defineProperty( this, 'power', {\n\t\tget: function () {\n\t\t\t// intensity = power per solid angle.\n\t\t\t// ref: equation (15) from http://www.frostbite.com/wp-content/uploads/2014/11/course_notes_moving_frostbite_to_pbr.pdf\n\t\t\treturn this.intensity * 4 * Math.PI;\n\n\t\t},\n\t\tset: function ( power ) {\n\t\t\t// intensity = power per solid angle.\n\t\t\t// ref: equation (15) from http://www.frostbite.com/wp-content/uploads/2014/11/course_notes_moving_frostbite_to_pbr.pdf\n\t\t\tthis.intensity = power / ( 4 * Math.PI );\n\t\t}\n\t} );\n\n\tthis.distance = ( distance !== undefined ) ? distance : 0;\n\tthis.decay = ( decay !== undefined ) ? decay : 1;\t// for physically correct lights, should be 2.\n\n\tthis.shadow = new LightShadow( new PerspectiveCamera( 90, 1, 0.5, 500 ) );\n\n}\n\nPointLight.prototype = Object.assign( Object.create( Light.prototype ), {\n\n\tconstructor: PointLight,\n\n\tisPointLight: true,\n\n\tcopy: function ( source ) {\n\n\t\tLight.prototype.copy.call( this, source );\n\n\t\tthis.distance = source.distance;\n\t\tthis.decay = source.decay;\n\n\t\tthis.shadow = source.shadow.clone();\n\n\t\treturn this;\n\n\t}\n\n} );\n\n\nexport { PointLight };\n","import { LightShadow } from './LightShadow';\nimport { OrthographicCamera } from '../cameras/OrthographicCamera';\n\n/**\n * @author mrdoob / http://mrdoob.com/\n */\n\nfunction DirectionalLightShadow( light ) {\n\n\tLightShadow.call( this, new OrthographicCamera( - 5, 5, 5, - 5, 0.5, 500 ) );\n\n}\n\nDirectionalLightShadow.prototype = Object.assign( Object.create( LightShadow.prototype ), {\n\n\tconstructor: DirectionalLightShadow\n\n} );\n\n\nexport { DirectionalLightShadow };\n","import { Light } from './Light';\nimport { DirectionalLightShadow } from './DirectionalLightShadow';\nimport { Object3D } from '../core/Object3D';\n\n/**\n * @author mrdoob / http://mrdoob.com/\n * @author alteredq / http://alteredqualia.com/\n */\n\nfunction DirectionalLight( color, intensity ) {\n\n\tLight.call( this, color, intensity );\n\n\tthis.type = 'DirectionalLight';\n\n\tthis.position.copy( Object3D.DefaultUp );\n\tthis.updateMatrix();\n\n\tthis.target = new Object3D();\n\n\tthis.shadow = new DirectionalLightShadow();\n\n}\n\nDirectionalLight.prototype = Object.assign( Object.create( Light.prototype ), {\n\n\tconstructor: DirectionalLight,\n\n\tisDirectionalLight: true,\n\n\tcopy: function ( source ) {\n\n\t\tLight.prototype.copy.call( this, source );\n\n\t\tthis.target = source.target.clone();\n\n\t\tthis.shadow = source.shadow.clone();\n\n\t\treturn this;\n\n\t}\n\n} );\n\n\nexport { DirectionalLight };\n","import { Light } from './Light';\n\n/**\n * @author mrdoob / http://mrdoob.com/\n */\n\nfunction AmbientLight( color, intensity ) {\n\n\tLight.call( this, color, intensity );\n\n\tthis.type = 'AmbientLight';\n\n\tthis.castShadow = undefined;\n\n}\n\nAmbientLight.prototype = Object.assign( Object.create( Light.prototype ), {\n\n\tconstructor: AmbientLight,\n\n\tisAmbientLight: true,\n\n} );\n\n\nexport { AmbientLight };\n","/**\n * @author tschw\n * @author Ben Houston / http://clara.io/\n * @author David Sarno / http://lighthaus.us/\n */\n\nvar AnimationUtils = {\n\n\t// same as Array.prototype.slice, but also works on typed arrays\n\tarraySlice: function( array, from, to ) {\n\n\t\tif ( AnimationUtils.isTypedArray( array ) ) {\n\n\t\t\treturn new array.constructor( array.subarray( from, to ) );\n\n\t\t}\n\n\t\treturn array.slice( from, to );\n\n\t},\n\n\t// converts an array to a specific type\n\tconvertArray: function( array, type, forceClone ) {\n\n\t\tif ( ! array || // let 'undefined' and 'null' pass\n\t\t\t\t! forceClone && array.constructor === type ) return array;\n\n\t\tif ( typeof type.BYTES_PER_ELEMENT === 'number' ) {\n\n\t\t\treturn new type( array ); // create typed array\n\n\t\t}\n\n\t\treturn Array.prototype.slice.call( array ); // create Array\n\n\t},\n\n\tisTypedArray: function( object ) {\n\n\t\treturn ArrayBuffer.isView( object ) &&\n\t\t\t\t! ( object instanceof DataView );\n\n\t},\n\n\t// returns an array by which times and values can be sorted\n\tgetKeyframeOrder: function( times ) {\n\n\t\tfunction compareTime( i, j ) {\n\n\t\t\treturn times[ i ] - times[ j ];\n\n\t\t}\n\n\t\tvar n = times.length;\n\t\tvar result = new Array( n );\n\t\tfor ( var i = 0; i !== n; ++ i ) result[ i ] = i;\n\n\t\tresult.sort( compareTime );\n\n\t\treturn result;\n\n\t},\n\n\t// uses the array previously returned by 'getKeyframeOrder' to sort data\n\tsortedArray: function( values, stride, order ) {\n\n\t\tvar nValues = values.length;\n\t\tvar result = new values.constructor( nValues );\n\n\t\tfor ( var i = 0, dstOffset = 0; dstOffset !== nValues; ++ i ) {\n\n\t\t\tvar srcOffset = order[ i ] * stride;\n\n\t\t\tfor ( var j = 0; j !== stride; ++ j ) {\n\n\t\t\t\tresult[ dstOffset ++ ] = values[ srcOffset + j ];\n\n\t\t\t}\n\n\t\t}\n\n\t\treturn result;\n\n\t},\n\n\t// function for parsing AOS keyframe formats\n\tflattenJSON: function( jsonKeys, times, values, valuePropertyName ) {\n\n\t\tvar i = 1, key = jsonKeys[ 0 ];\n\n\t\twhile ( key !== undefined && key[ valuePropertyName ] === undefined ) {\n\n\t\t\tkey = jsonKeys[ i ++ ];\n\n\t\t}\n\n\t\tif ( key === undefined ) return; // no data\n\n\t\tvar value = key[ valuePropertyName ];\n\t\tif ( value === undefined ) return; // no data\n\n\t\tif ( Array.isArray( value ) ) {\n\n\t\t\tdo {\n\n\t\t\t\tvalue = key[ valuePropertyName ];\n\n\t\t\t\tif ( value !== undefined ) {\n\n\t\t\t\t\ttimes.push( key.time );\n\t\t\t\t\tvalues.push.apply( values, value ); // push all elements\n\n\t\t\t\t}\n\n\t\t\t\tkey = jsonKeys[ i ++ ];\n\n\t\t\t} while ( key !== undefined );\n\n\t\t} else if ( value.toArray !== undefined ) {\n\t\t\t// ...assume THREE.Math-ish\n\n\t\t\tdo {\n\n\t\t\t\tvalue = key[ valuePropertyName ];\n\n\t\t\t\tif ( value !== undefined ) {\n\n\t\t\t\t\ttimes.push( key.time );\n\t\t\t\t\tvalue.toArray( values, values.length );\n\n\t\t\t\t}\n\n\t\t\t\tkey = jsonKeys[ i ++ ];\n\n\t\t\t} while ( key !== undefined );\n\n\t\t} else {\n\t\t\t// otherwise push as-is\n\n\t\t\tdo {\n\n\t\t\t\tvalue = key[ valuePropertyName ];\n\n\t\t\t\tif ( value !== undefined ) {\n\n\t\t\t\t\ttimes.push( key.time );\n\t\t\t\t\tvalues.push( value );\n\n\t\t\t\t}\n\n\t\t\t\tkey = jsonKeys[ i ++ ];\n\n\t\t\t} while ( key !== undefined );\n\n\t\t}\n\n\t}\n\n};\n\n\nexport { AnimationUtils };\n","/**\n * Abstract base class of interpolants over parametric samples.\n *\n * The parameter domain is one dimensional, typically the time or a path\n * along a curve defined by the data.\n *\n * The sample values can have any dimensionality and derived classes may\n * apply special interpretations to the data.\n *\n * This class provides the interval seek in a Template Method, deferring\n * the actual interpolation to derived classes.\n *\n * Time complexity is O(1) for linear access crossing at most two points\n * and O(log N) for random access, where N is the number of positions.\n *\n * References:\n *\n * \t\thttp://www.oodesign.com/template-method-pattern.html\n *\n * @author tschw\n */\n\nfunction Interpolant(\n\t\tparameterPositions, sampleValues, sampleSize, resultBuffer ) {\n\n\tthis.parameterPositions = parameterPositions;\n\tthis._cachedIndex = 0;\n\n\tthis.resultBuffer = resultBuffer !== undefined ?\n\t\t\tresultBuffer : new sampleValues.constructor( sampleSize );\n\tthis.sampleValues = sampleValues;\n\tthis.valueSize = sampleSize;\n\n}\n\nInterpolant.prototype = {\n\n\tconstructor: Interpolant,\n\n\tevaluate: function( t ) {\n\n\t\tvar pp = this.parameterPositions,\n\t\t\ti1 = this._cachedIndex,\n\n\t\t\tt1 = pp[ i1 ],\n\t\t\tt0 = pp[ i1 - 1 ];\n\n\t\tvalidate_interval: {\n\n\t\t\tseek: {\n\n\t\t\t\tvar right;\n\n\t\t\t\tlinear_scan: {\n//- See http://jsperf.com/comparison-to-undefined/3\n//- slower code:\n//-\n//- \t\t\t\tif ( t >= t1 || t1 === undefined ) {\n\t\t\t\t\tforward_scan: if ( ! ( t < t1 ) ) {\n\n\t\t\t\t\t\tfor ( var giveUpAt = i1 + 2; ;) {\n\n\t\t\t\t\t\t\tif ( t1 === undefined ) {\n\n\t\t\t\t\t\t\t\tif ( t < t0 ) break forward_scan;\n\n\t\t\t\t\t\t\t\t// after end\n\n\t\t\t\t\t\t\t\ti1 = pp.length;\n\t\t\t\t\t\t\t\tthis._cachedIndex = i1;\n\t\t\t\t\t\t\t\treturn this.afterEnd_( i1 - 1, t, t0 );\n\n\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\tif ( i1 === giveUpAt ) break; // this loop\n\n\t\t\t\t\t\t\tt0 = t1;\n\t\t\t\t\t\t\tt1 = pp[ ++ i1 ];\n\n\t\t\t\t\t\t\tif ( t < t1 ) {\n\n\t\t\t\t\t\t\t\t// we have arrived at the sought interval\n\t\t\t\t\t\t\t\tbreak seek;\n\n\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\t// prepare binary search on the right side of the index\n\t\t\t\t\t\tright = pp.length;\n\t\t\t\t\t\tbreak linear_scan;\n\n\t\t\t\t\t}\n\n//- slower code:\n//-\t\t\t\t\tif ( t < t0 || t0 === undefined ) {\n\t\t\t\t\tif ( ! ( t >= t0 ) ) {\n\n\t\t\t\t\t\t// looping?\n\n\t\t\t\t\t\tvar t1global = pp[ 1 ];\n\n\t\t\t\t\t\tif ( t < t1global ) {\n\n\t\t\t\t\t\t\ti1 = 2; // + 1, using the scan for the details\n\t\t\t\t\t\t\tt0 = t1global;\n\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\t// linear reverse scan\n\n\t\t\t\t\t\tfor ( var giveUpAt = i1 - 2; ;) {\n\n\t\t\t\t\t\t\tif ( t0 === undefined ) {\n\n\t\t\t\t\t\t\t\t// before start\n\n\t\t\t\t\t\t\t\tthis._cachedIndex = 0;\n\t\t\t\t\t\t\t\treturn this.beforeStart_( 0, t, t1 );\n\n\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\tif ( i1 === giveUpAt ) break; // this loop\n\n\t\t\t\t\t\t\tt1 = t0;\n\t\t\t\t\t\t\tt0 = pp[ -- i1 - 1 ];\n\n\t\t\t\t\t\t\tif ( t >= t0 ) {\n\n\t\t\t\t\t\t\t\t// we have arrived at the sought interval\n\t\t\t\t\t\t\t\tbreak seek;\n\n\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\t// prepare binary search on the left side of the index\n\t\t\t\t\t\tright = i1;\n\t\t\t\t\t\ti1 = 0;\n\t\t\t\t\t\tbreak linear_scan;\n\n\t\t\t\t\t}\n\n\t\t\t\t\t// the interval is valid\n\n\t\t\t\t\tbreak validate_interval;\n\n\t\t\t\t} // linear scan\n\n\t\t\t\t// binary search\n\n\t\t\t\twhile ( i1 < right ) {\n\n\t\t\t\t\tvar mid = ( i1 + right ) >>> 1;\n\n\t\t\t\t\tif ( t < pp[ mid ] ) {\n\n\t\t\t\t\t\tright = mid;\n\n\t\t\t\t\t} else {\n\n\t\t\t\t\t\ti1 = mid + 1;\n\n\t\t\t\t\t}\n\n\t\t\t\t}\n\n\t\t\t\tt1 = pp[ i1 ];\n\t\t\t\tt0 = pp[ i1 - 1 ];\n\n\t\t\t\t// check boundary cases, again\n\n\t\t\t\tif ( t0 === undefined ) {\n\n\t\t\t\t\tthis._cachedIndex = 0;\n\t\t\t\t\treturn this.beforeStart_( 0, t, t1 );\n\n\t\t\t\t}\n\n\t\t\t\tif ( t1 === undefined ) {\n\n\t\t\t\t\ti1 = pp.length;\n\t\t\t\t\tthis._cachedIndex = i1;\n\t\t\t\t\treturn this.afterEnd_( i1 - 1, t0, t );\n\n\t\t\t\t}\n\n\t\t\t} // seek\n\n\t\t\tthis._cachedIndex = i1;\n\n\t\t\tthis.intervalChanged_( i1, t0, t1 );\n\n\t\t} // validate_interval\n\n\t\treturn this.interpolate_( i1, t0, t, t1 );\n\n\t},\n\n\tsettings: null, // optional, subclass-specific settings structure\n\t// Note: The indirection allows central control of many interpolants.\n\n\t// --- Protected interface\n\n\tDefaultSettings_: {},\n\n\tgetSettings_: function() {\n\n\t\treturn this.settings || this.DefaultSettings_;\n\n\t},\n\n\tcopySampleValue_: function( index ) {\n\n\t\t// copies a sample value to the result buffer\n\n\t\tvar result = this.resultBuffer,\n\t\t\tvalues = this.sampleValues,\n\t\t\tstride = this.valueSize,\n\t\t\toffset = index * stride;\n\n\t\tfor ( var i = 0; i !== stride; ++ i ) {\n\n\t\t\tresult[ i ] = values[ offset + i ];\n\n\t\t}\n\n\t\treturn result;\n\n\t},\n\n\t// Template methods for derived classes:\n\n\tinterpolate_: function( i1, t0, t, t1 ) {\n\n\t\tthrow new Error( \"call to abstract method\" );\n\t\t// implementations shall return this.resultBuffer\n\n\t},\n\n\tintervalChanged_: function( i1, t0, t1 ) {\n\n\t\t// empty\n\n\t}\n\n};\n\nObject.assign( Interpolant.prototype, {\n\n\tbeforeStart_: //( 0, t, t0 ), returns this.resultBuffer\n\t\tInterpolant.prototype.copySampleValue_,\n\n\tafterEnd_: //( N-1, tN-1, t ), returns this.resultBuffer\n\t\tInterpolant.prototype.copySampleValue_\n\n} );\n\n\nexport { Interpolant };\n","import { ZeroCurvatureEnding } from '../../constants';\nimport { Interpolant } from '../Interpolant';\nimport { WrapAroundEnding, ZeroSlopeEnding } from '../../constants';\n\n/**\n * Fast and simple cubic spline interpolant.\n *\n * It was derived from a Hermitian construction setting the first derivative\n * at each sample position to the linear slope between neighboring positions\n * over their parameter interval.\n *\n * @author tschw\n */\n\nfunction CubicInterpolant(\n\t\tparameterPositions, sampleValues, sampleSize, resultBuffer ) {\n\n\tInterpolant.call(\n\t\t\tthis, parameterPositions, sampleValues, sampleSize, resultBuffer );\n\n\tthis._weightPrev = -0;\n\tthis._offsetPrev = -0;\n\tthis._weightNext = -0;\n\tthis._offsetNext = -0;\n\n}\n\nCubicInterpolant.prototype =\n\t\tObject.assign( Object.create( Interpolant.prototype ), {\n\n\tconstructor: CubicInterpolant,\n\n\tDefaultSettings_: {\n\n\t\tendingStart: \tZeroCurvatureEnding,\n\t\tendingEnd:\t\tZeroCurvatureEnding\n\n\t},\n\n\tintervalChanged_: function( i1, t0, t1 ) {\n\n\t\tvar pp = this.parameterPositions,\n\t\t\tiPrev = i1 - 2,\n\t\t\tiNext = i1 + 1,\n\n\t\t\ttPrev = pp[ iPrev ],\n\t\t\ttNext = pp[ iNext ];\n\n\t\tif ( tPrev === undefined ) {\n\n\t\t\tswitch ( this.getSettings_().endingStart ) {\n\n\t\t\t\tcase ZeroSlopeEnding:\n\n\t\t\t\t\t// f'(t0) = 0\n\t\t\t\t\tiPrev = i1;\n\t\t\t\t\ttPrev = 2 * t0 - t1;\n\n\t\t\t\t\tbreak;\n\n\t\t\t\tcase WrapAroundEnding:\n\n\t\t\t\t\t// use the other end of the curve\n\t\t\t\t\tiPrev = pp.length - 2;\n\t\t\t\t\ttPrev = t0 + pp[ iPrev ] - pp[ iPrev + 1 ];\n\n\t\t\t\t\tbreak;\n\n\t\t\t\tdefault: // ZeroCurvatureEnding\n\n\t\t\t\t\t// f''(t0) = 0 a.k.a. Natural Spline\n\t\t\t\t\tiPrev = i1;\n\t\t\t\t\ttPrev = t1;\n\n\t\t\t}\n\n\t\t}\n\n\t\tif ( tNext === undefined ) {\n\n\t\t\tswitch ( this.getSettings_().endingEnd ) {\n\n\t\t\t\tcase ZeroSlopeEnding:\n\n\t\t\t\t\t// f'(tN) = 0\n\t\t\t\t\tiNext = i1;\n\t\t\t\t\ttNext = 2 * t1 - t0;\n\n\t\t\t\t\tbreak;\n\n\t\t\t\tcase WrapAroundEnding:\n\n\t\t\t\t\t// use the other end of the curve\n\t\t\t\t\tiNext = 1;\n\t\t\t\t\ttNext = t1 + pp[ 1 ] - pp[ 0 ];\n\n\t\t\t\t\tbreak;\n\n\t\t\t\tdefault: // ZeroCurvatureEnding\n\n\t\t\t\t\t// f''(tN) = 0, a.k.a. Natural Spline\n\t\t\t\t\tiNext = i1 - 1;\n\t\t\t\t\ttNext = t0;\n\n\t\t\t}\n\n\t\t}\n\n\t\tvar halfDt = ( t1 - t0 ) * 0.5,\n\t\t\tstride = this.valueSize;\n\n\t\tthis._weightPrev = halfDt / ( t0 - tPrev );\n\t\tthis._weightNext = halfDt / ( tNext - t1 );\n\t\tthis._offsetPrev = iPrev * stride;\n\t\tthis._offsetNext = iNext * stride;\n\n\t},\n\n\tinterpolate_: function( i1, t0, t, t1 ) {\n\n\t\tvar result = this.resultBuffer,\n\t\t\tvalues = this.sampleValues,\n\t\t\tstride = this.valueSize,\n\n\t\t\to1 = i1 * stride,\t\to0 = o1 - stride,\n\t\t\toP = this._offsetPrev, \toN = this._offsetNext,\n\t\t\twP = this._weightPrev,\twN = this._weightNext,\n\n\t\t\tp = ( t - t0 ) / ( t1 - t0 ),\n\t\t\tpp = p * p,\n\t\t\tppp = pp * p;\n\n\t\t// evaluate polynomials\n\n\t\tvar sP = - wP * ppp + 2 * wP * pp - wP * p;\n\t\tvar s0 = ( 1 + wP ) * ppp + (-1.5 - 2 * wP ) * pp + ( -0.5 + wP ) * p + 1;\n\t\tvar s1 = (-1 - wN ) * ppp + ( 1.5 + wN ) * pp + 0.5 * p;\n\t\tvar sN = wN * ppp - wN * pp;\n\n\t\t// combine data linearly\n\n\t\tfor ( var i = 0; i !== stride; ++ i ) {\n\n\t\t\tresult[ i ] =\n\t\t\t\t\tsP * values[ oP + i ] +\n\t\t\t\t\ts0 * values[ o0 + i ] +\n\t\t\t\t\ts1 * values[ o1 + i ] +\n\t\t\t\t\tsN * values[ oN + i ];\n\n\t\t}\n\n\t\treturn result;\n\n\t}\n\n} );\n\n\nexport { CubicInterpolant };\n","import { Interpolant } from '../Interpolant';\n\n/**\n * @author tschw\n */\n\nfunction LinearInterpolant(\n\t\tparameterPositions, sampleValues, sampleSize, resultBuffer ) {\n\n\tInterpolant.call(\n\t\t\tthis, parameterPositions, sampleValues, sampleSize, resultBuffer );\n\n}\n\nLinearInterpolant.prototype =\n\t\tObject.assign( Object.create( Interpolant.prototype ), {\n\n\tconstructor: LinearInterpolant,\n\n\tinterpolate_: function( i1, t0, t, t1 ) {\n\n\t\tvar result = this.resultBuffer,\n\t\t\tvalues = this.sampleValues,\n\t\t\tstride = this.valueSize,\n\n\t\t\toffset1 = i1 * stride,\n\t\t\toffset0 = offset1 - stride,\n\n\t\t\tweight1 = ( t - t0 ) / ( t1 - t0 ),\n\t\t\tweight0 = 1 - weight1;\n\n\t\tfor ( var i = 0; i !== stride; ++ i ) {\n\n\t\t\tresult[ i ] =\n\t\t\t\t\tvalues[ offset0 + i ] * weight0 +\n\t\t\t\t\tvalues[ offset1 + i ] * weight1;\n\n\t\t}\n\n\t\treturn result;\n\n\t}\n\n} );\n\n\nexport { LinearInterpolant };\n","import { Interpolant } from '../Interpolant';\n\n/**\n *\n * Interpolant that evaluates to the sample value at the position preceeding\n * the parameter.\n *\n * @author tschw\n */\n\nfunction DiscreteInterpolant(\n\t\tparameterPositions, sampleValues, sampleSize, resultBuffer ) {\n\n\tInterpolant.call(\n\t\t\tthis, parameterPositions, sampleValues, sampleSize, resultBuffer );\n\n}\n\nDiscreteInterpolant.prototype =\n\t\tObject.assign( Object.create( Interpolant.prototype ), {\n\n\tconstructor: DiscreteInterpolant,\n\n\tinterpolate_: function( i1, t0, t, t1 ) {\n\n\t\treturn this.copySampleValue_( i1 - 1 );\n\n\t}\n\n} );\n\n\nexport { DiscreteInterpolant };\n","import { InterpolateLinear } from '../constants';\nimport { AnimationUtils } from './AnimationUtils';\nimport { InterpolateSmooth, InterpolateDiscrete } from '../constants';\nimport { CubicInterpolant } from '../math/interpolants/CubicInterpolant';\nimport { LinearInterpolant } from '../math/interpolants/LinearInterpolant';\nimport { DiscreteInterpolant } from '../math/interpolants/DiscreteInterpolant';\n\nvar KeyframeTrackPrototype;\n\nKeyframeTrackPrototype = {\n\n\tTimeBufferType: Float32Array,\n\tValueBufferType: Float32Array,\n\n\tDefaultInterpolation: InterpolateLinear,\n\n\tInterpolantFactoryMethodDiscrete: function( result ) {\n\n\t\treturn new DiscreteInterpolant(\n\t\t\t\tthis.times, this.values, this.getValueSize(), result );\n\n\t},\n\n\tInterpolantFactoryMethodLinear: function( result ) {\n\n\t\treturn new LinearInterpolant(\n\t\t\t\tthis.times, this.values, this.getValueSize(), result );\n\n\t},\n\n\tInterpolantFactoryMethodSmooth: function( result ) {\n\n\t\treturn new CubicInterpolant(\n\t\t\t\tthis.times, this.values, this.getValueSize(), result );\n\n\t},\n\n\tsetInterpolation: function( interpolation ) {\n\n\t\tvar factoryMethod;\n\n\t\tswitch ( interpolation ) {\n\n\t\t\tcase InterpolateDiscrete:\n\n\t\t\t\tfactoryMethod = this.InterpolantFactoryMethodDiscrete;\n\n\t\t\t\tbreak;\n\n\t\t\tcase InterpolateLinear:\n\n\t\t\t\tfactoryMethod = this.InterpolantFactoryMethodLinear;\n\n\t\t\t\tbreak;\n\n\t\t\tcase InterpolateSmooth:\n\n\t\t\t\tfactoryMethod = this.InterpolantFactoryMethodSmooth;\n\n\t\t\t\tbreak;\n\n\t\t}\n\n\t\tif ( factoryMethod === undefined ) {\n\n\t\t\tvar message = \"unsupported interpolation for \" +\n\t\t\t\t\tthis.ValueTypeName + \" keyframe track named \" + this.name;\n\n\t\t\tif ( this.createInterpolant === undefined ) {\n\n\t\t\t\t// fall back to default, unless the default itself is messed up\n\t\t\t\tif ( interpolation !== this.DefaultInterpolation ) {\n\n\t\t\t\t\tthis.setInterpolation( this.DefaultInterpolation );\n\n\t\t\t\t} else {\n\n\t\t\t\t\tthrow new Error( message ); // fatal, in this case\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t\tconsole.warn( message );\n\t\t\treturn;\n\n\t\t}\n\n\t\tthis.createInterpolant = factoryMethod;\n\n\t},\n\n\tgetInterpolation: function() {\n\n\t\tswitch ( this.createInterpolant ) {\n\n\t\t\tcase this.InterpolantFactoryMethodDiscrete:\n\n\t\t\t\treturn InterpolateDiscrete;\n\n\t\t\tcase this.InterpolantFactoryMethodLinear:\n\n\t\t\t\treturn InterpolateLinear;\n\n\t\t\tcase this.InterpolantFactoryMethodSmooth:\n\n\t\t\t\treturn InterpolateSmooth;\n\n\t\t}\n\n\t},\n\n\tgetValueSize: function() {\n\n\t\treturn this.values.length / this.times.length;\n\n\t},\n\n\t// move all keyframes either forwards or backwards in time\n\tshift: function( timeOffset ) {\n\n\t\tif( timeOffset !== 0.0 ) {\n\n\t\t\tvar times = this.times;\n\n\t\t\tfor( var i = 0, n = times.length; i !== n; ++ i ) {\n\n\t\t\t\ttimes[ i ] += timeOffset;\n\n\t\t\t}\n\n\t\t}\n\n\t\treturn this;\n\n\t},\n\n\t// scale all keyframe times by a factor (useful for frame <-> seconds conversions)\n\tscale: function( timeScale ) {\n\n\t\tif( timeScale !== 1.0 ) {\n\n\t\t\tvar times = this.times;\n\n\t\t\tfor( var i = 0, n = times.length; i !== n; ++ i ) {\n\n\t\t\t\ttimes[ i ] *= timeScale;\n\n\t\t\t}\n\n\t\t}\n\n\t\treturn this;\n\n\t},\n\n\t// removes keyframes before and after animation without changing any values within the range [startTime, endTime].\n\t// IMPORTANT: We do not shift around keys to the start of the track time, because for interpolated keys this will change their values\n\ttrim: function( startTime, endTime ) {\n\n\t\tvar times = this.times,\n\t\t\tnKeys = times.length,\n\t\t\tfrom = 0,\n\t\t\tto = nKeys - 1;\n\n\t\twhile ( from !== nKeys && times[ from ] < startTime ) ++ from;\n\t\twhile ( to !== -1 && times[ to ] > endTime ) -- to;\n\n\t\t++ to; // inclusive -> exclusive bound\n\n\t\tif( from !== 0 || to !== nKeys ) {\n\n\t\t\t// empty tracks are forbidden, so keep at least one keyframe\n\t\t\tif ( from >= to ) to = Math.max( to , 1 ), from = to - 1;\n\n\t\t\tvar stride = this.getValueSize();\n\t\t\tthis.times = AnimationUtils.arraySlice( times, from, to );\n\t\t\tthis.values = AnimationUtils.\n\t\t\t\t\tarraySlice( this.values, from * stride, to * stride );\n\n\t\t}\n\n\t\treturn this;\n\n\t},\n\n\t// ensure we do not get a GarbageInGarbageOut situation, make sure tracks are at least minimally viable\n\tvalidate: function() {\n\n\t\tvar valid = true;\n\n\t\tvar valueSize = this.getValueSize();\n\t\tif ( valueSize - Math.floor( valueSize ) !== 0 ) {\n\n\t\t\tconsole.error( \"invalid value size in track\", this );\n\t\t\tvalid = false;\n\n\t\t}\n\n\t\tvar times = this.times,\n\t\t\tvalues = this.values,\n\n\t\t\tnKeys = times.length;\n\n\t\tif( nKeys === 0 ) {\n\n\t\t\tconsole.error( \"track is empty\", this );\n\t\t\tvalid = false;\n\n\t\t}\n\n\t\tvar prevTime = null;\n\n\t\tfor( var i = 0; i !== nKeys; i ++ ) {\n\n\t\t\tvar currTime = times[ i ];\n\n\t\t\tif ( typeof currTime === 'number' && isNaN( currTime ) ) {\n\n\t\t\t\tconsole.error( \"time is not a valid number\", this, i, currTime );\n\t\t\t\tvalid = false;\n\t\t\t\tbreak;\n\n\t\t\t}\n\n\t\t\tif( prevTime !== null && prevTime > currTime ) {\n\n\t\t\t\tconsole.error( \"out of order keys\", this, i, currTime, prevTime );\n\t\t\t\tvalid = false;\n\t\t\t\tbreak;\n\n\t\t\t}\n\n\t\t\tprevTime = currTime;\n\n\t\t}\n\n\t\tif ( values !== undefined ) {\n\n\t\t\tif ( AnimationUtils.isTypedArray( values ) ) {\n\n\t\t\t\tfor ( var i = 0, n = values.length; i !== n; ++ i ) {\n\n\t\t\t\t\tvar value = values[ i ];\n\n\t\t\t\t\tif ( isNaN( value ) ) {\n\n\t\t\t\t\t\tconsole.error( \"value is not a valid number\", this, i, value );\n\t\t\t\t\t\tvalid = false;\n\t\t\t\t\t\tbreak;\n\n\t\t\t\t\t}\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t}\n\n\t\treturn valid;\n\n\t},\n\n\t// removes equivalent sequential keys as common in morph target sequences\n\t// (0,0,0,0,1,1,1,0,0,0,0,0,0,0) --> (0,0,1,1,0,0)\n\toptimize: function() {\n\n\t\tvar times = this.times,\n\t\t\tvalues = this.values,\n\t\t\tstride = this.getValueSize(),\n\n\t\t\tsmoothInterpolation = this.getInterpolation() === InterpolateSmooth,\n\n\t\t\twriteIndex = 1,\n\t\t\tlastIndex = times.length - 1;\n\n\t\tfor( var i = 1; i < lastIndex; ++ i ) {\n\n\t\t\tvar keep = false;\n\n\t\t\tvar time = times[ i ];\n\t\t\tvar timeNext = times[ i + 1 ];\n\n\t\t\t// remove adjacent keyframes scheduled at the same time\n\n\t\t\tif ( time !== timeNext && ( i !== 1 || time !== time[ 0 ] ) ) {\n\n\t\t\t\tif ( ! smoothInterpolation ) {\n\n\t\t\t\t\t// remove unnecessary keyframes same as their neighbors\n\n\t\t\t\t\tvar offset = i * stride,\n\t\t\t\t\t\toffsetP = offset - stride,\n\t\t\t\t\t\toffsetN = offset + stride;\n\n\t\t\t\t\tfor ( var j = 0; j !== stride; ++ j ) {\n\n\t\t\t\t\t\tvar value = values[ offset + j ];\n\n\t\t\t\t\t\tif ( value !== values[ offsetP + j ] ||\n\t\t\t\t\t\t\t\tvalue !== values[ offsetN + j ] ) {\n\n\t\t\t\t\t\t\tkeep = true;\n\t\t\t\t\t\t\tbreak;\n\n\t\t\t\t\t\t}\n\n\t\t\t\t\t}\n\n\t\t\t\t} else keep = true;\n\n\t\t\t}\n\n\t\t\t// in-place compaction\n\n\t\t\tif ( keep ) {\n\n\t\t\t\tif ( i !== writeIndex ) {\n\n\t\t\t\t\ttimes[ writeIndex ] = times[ i ];\n\n\t\t\t\t\tvar readOffset = i * stride,\n\t\t\t\t\t\twriteOffset = writeIndex * stride;\n\n\t\t\t\t\tfor ( var j = 0; j !== stride; ++ j )\n\n\t\t\t\t\t\tvalues[ writeOffset + j ] = values[ readOffset + j ];\n\n\t\t\t\t}\n\n\t\t\t\t++ writeIndex;\n\n\t\t\t}\n\n\t\t}\n\n\t\t// flush last keyframe (compaction looks ahead)\n\n\t\tif ( lastIndex > 0 ) {\n\n\t\t\ttimes[ writeIndex ] = times[ lastIndex ];\n\n\t\t\tfor ( var readOffset = lastIndex * stride, writeOffset = writeIndex * stride, j = 0; j !== stride; ++ j )\n\n\t\t\t\tvalues[ writeOffset + j ] = values[ readOffset + j ];\n\n\t\t\t++ writeIndex;\n\n\t\t}\n\n\t\tif ( writeIndex !== times.length ) {\n\n\t\t\tthis.times = AnimationUtils.arraySlice( times, 0, writeIndex );\n\t\t\tthis.values = AnimationUtils.arraySlice( values, 0, writeIndex * stride );\n\n\t\t}\n\n\t\treturn this;\n\n\t}\n\n}\n\nexport { KeyframeTrackPrototype };\n","import { AnimationUtils } from './AnimationUtils';\n\nfunction KeyframeTrackConstructor( name, times, values, interpolation ) {\n\n\tif( name === undefined ) throw new Error( \"track name is undefined\" );\n\n\tif( times === undefined || times.length === 0 ) {\n\n\t\tthrow new Error( \"no keyframes in track named \" + name );\n\n\t}\n\n\tthis.name = name;\n\n\tthis.times = AnimationUtils.convertArray( times, this.TimeBufferType );\n\tthis.values = AnimationUtils.convertArray( values, this.ValueBufferType );\n\n\tthis.setInterpolation( interpolation || this.DefaultInterpolation );\n\n\tthis.validate();\n\tthis.optimize();\n\n}\n\nexport { KeyframeTrackConstructor };\n","import { KeyframeTrackPrototype } from '../KeyframeTrackPrototype';\nimport { KeyframeTrackConstructor } from '../KeyframeTrackConstructor';\n\n/**\n *\n * A Track of vectored keyframe values.\n *\n *\n * @author Ben Houston / http://clara.io/\n * @author David Sarno / http://lighthaus.us/\n * @author tschw\n */\n\nfunction VectorKeyframeTrack( name, times, values, interpolation ) {\n\n\tKeyframeTrackConstructor.call( this, name, times, values, interpolation );\n\n}\n\nVectorKeyframeTrack.prototype =\n\t\tObject.assign( Object.create( KeyframeTrackPrototype ), {\n\n\tconstructor: VectorKeyframeTrack,\n\n\tValueTypeName: 'vector'\n\n\t// ValueBufferType is inherited\n\n\t// DefaultInterpolation is inherited\n\n} );\n\n\nexport { VectorKeyframeTrack };\n","import { Interpolant } from '../Interpolant';\nimport { Quaternion } from '../Quaternion';\n\n/**\n * Spherical linear unit quaternion interpolant.\n *\n * @author tschw\n */\n\nfunction QuaternionLinearInterpolant(\n\t\tparameterPositions, sampleValues, sampleSize, resultBuffer ) {\n\n\tInterpolant.call(\n\t\t\tthis, parameterPositions, sampleValues, sampleSize, resultBuffer );\n\n}\n\nQuaternionLinearInterpolant.prototype =\n\t\tObject.assign( Object.create( Interpolant.prototype ), {\n\n\tconstructor: QuaternionLinearInterpolant,\n\n\tinterpolate_: function( i1, t0, t, t1 ) {\n\n\t\tvar result = this.resultBuffer,\n\t\t\tvalues = this.sampleValues,\n\t\t\tstride = this.valueSize,\n\n\t\t\toffset = i1 * stride,\n\n\t\t\talpha = ( t - t0 ) / ( t1 - t0 );\n\n\t\tfor ( var end = offset + stride; offset !== end; offset += 4 ) {\n\n\t\t\tQuaternion.slerpFlat( result, 0,\n\t\t\t\t\tvalues, offset - stride, values, offset, alpha );\n\n\t\t}\n\n\t\treturn result;\n\n\t}\n\n} );\n\n\nexport { QuaternionLinearInterpolant };\n","import { InterpolateLinear } from '../../constants';\nimport { KeyframeTrackPrototype } from '../KeyframeTrackPrototype';\nimport { QuaternionLinearInterpolant } from '../../math/interpolants/QuaternionLinearInterpolant';\nimport { KeyframeTrackConstructor } from '../KeyframeTrackConstructor';\n\n/**\n *\n * A Track of quaternion keyframe values.\n *\n * @author Ben Houston / http://clara.io/\n * @author David Sarno / http://lighthaus.us/\n * @author tschw\n */\n\nfunction QuaternionKeyframeTrack( name, times, values, interpolation ) {\n\n\tKeyframeTrackConstructor.call( this, name, times, values, interpolation );\n\n}\n\nQuaternionKeyframeTrack.prototype =\n\t\tObject.assign( Object.create( KeyframeTrackPrototype ), {\n\n\tconstructor: QuaternionKeyframeTrack,\n\n\tValueTypeName: 'quaternion',\n\n\t// ValueBufferType is inherited\n\n\tDefaultInterpolation: InterpolateLinear,\n\n\tInterpolantFactoryMethodLinear: function( result ) {\n\n\t\treturn new QuaternionLinearInterpolant(\n\t\t\t\tthis.times, this.values, this.getValueSize(), result );\n\n\t},\n\n\tInterpolantFactoryMethodSmooth: undefined // not yet implemented\n\n} );\n\n\nexport { QuaternionKeyframeTrack };\n","import { KeyframeTrackPrototype } from '../KeyframeTrackPrototype';\nimport { KeyframeTrackConstructor } from '../KeyframeTrackConstructor';\n\n/**\n *\n * A Track of numeric keyframe values.\n *\n * @author Ben Houston / http://clara.io/\n * @author David Sarno / http://lighthaus.us/\n * @author tschw\n */\n\nfunction NumberKeyframeTrack( name, times, values, interpolation ) {\n\n\tKeyframeTrackConstructor.call( this, name, times, values, interpolation );\n\n}\n\nNumberKeyframeTrack.prototype =\n\t\tObject.assign( Object.create( KeyframeTrackPrototype ), {\n\n\tconstructor: NumberKeyframeTrack,\n\n\tValueTypeName: 'number',\n\n\t// ValueBufferType is inherited\n\n\t// DefaultInterpolation is inherited\n\n} );\n\n\nexport { NumberKeyframeTrack };\n","import { InterpolateDiscrete } from '../../constants';\nimport { KeyframeTrackPrototype } from '../KeyframeTrackPrototype';\nimport { KeyframeTrackConstructor } from '../KeyframeTrackConstructor';\n\n/**\n *\n * A Track that interpolates Strings\n *\n *\n * @author Ben Houston / http://clara.io/\n * @author David Sarno / http://lighthaus.us/\n * @author tschw\n */\n\nfunction StringKeyframeTrack( name, times, values, interpolation ) {\n\n\tKeyframeTrackConstructor.call( this, name, times, values, interpolation );\n\n}\n\nStringKeyframeTrack.prototype =\n\t\tObject.assign( Object.create( KeyframeTrackPrototype ), {\n\n\tconstructor: StringKeyframeTrack,\n\n\tValueTypeName: 'string',\n\tValueBufferType: Array,\n\n\tDefaultInterpolation: InterpolateDiscrete,\n\n\tInterpolantFactoryMethodLinear: undefined,\n\n\tInterpolantFactoryMethodSmooth: undefined\n\n} );\n\n\nexport { StringKeyframeTrack };\n","import { InterpolateDiscrete } from '../../constants';\nimport { KeyframeTrackPrototype } from '../KeyframeTrackPrototype';\nimport { KeyframeTrackConstructor } from '../KeyframeTrackConstructor';\n\n/**\n *\n * A Track of Boolean keyframe values.\n *\n *\n * @author Ben Houston / http://clara.io/\n * @author David Sarno / http://lighthaus.us/\n * @author tschw\n */\n\nfunction BooleanKeyframeTrack( name, times, values ) {\n\n\tKeyframeTrackConstructor.call( this, name, times, values );\n\n}\n\nBooleanKeyframeTrack.prototype =\n\t\tObject.assign( Object.create( KeyframeTrackPrototype ), {\n\n\tconstructor: BooleanKeyframeTrack,\n\n\tValueTypeName: 'bool',\n\tValueBufferType: Array,\n\n\tDefaultInterpolation: InterpolateDiscrete,\n\n\tInterpolantFactoryMethodLinear: undefined,\n\tInterpolantFactoryMethodSmooth: undefined\n\n\t// Note: Actually this track could have a optimized / compressed\n\t// representation of a single value and a custom interpolant that\n\t// computes \"firstValue ^ isOdd( index )\".\n\n} );\n\n\nexport { BooleanKeyframeTrack };\n","import { KeyframeTrackPrototype } from '../KeyframeTrackPrototype';\nimport { KeyframeTrackConstructor } from '../KeyframeTrackConstructor';\n\n/**\n *\n * A Track of keyframe values that represent color.\n *\n *\n * @author Ben Houston / http://clara.io/\n * @author David Sarno / http://lighthaus.us/\n * @author tschw\n */\n\nfunction ColorKeyframeTrack( name, times, values, interpolation ) {\n\n\tKeyframeTrackConstructor.call( this, name, times, values, interpolation );\n\n}\n\nColorKeyframeTrack.prototype =\n\t\tObject.assign( Object.create( KeyframeTrackPrototype ), {\n\n\tconstructor: ColorKeyframeTrack,\n\n\tValueTypeName: 'color'\n\n\t// ValueBufferType is inherited\n\n\t// DefaultInterpolation is inherited\n\n\n\t// Note: Very basic implementation and nothing special yet.\n\t// However, this is the place for color space parameterization.\n\n} );\n\n\nexport { ColorKeyframeTrack };\n","import { KeyframeTrackPrototype } from './KeyframeTrackPrototype';\nimport { StringKeyframeTrack } from './tracks/StringKeyframeTrack';\nimport { BooleanKeyframeTrack } from './tracks/BooleanKeyframeTrack';\nimport { QuaternionKeyframeTrack } from './tracks/QuaternionKeyframeTrack';\nimport { ColorKeyframeTrack } from './tracks/ColorKeyframeTrack';\nimport { VectorKeyframeTrack } from './tracks/VectorKeyframeTrack';\nimport { NumberKeyframeTrack } from './tracks/NumberKeyframeTrack';\nimport { AnimationUtils } from './AnimationUtils';\nimport { KeyframeTrackConstructor } from './KeyframeTrackConstructor';\n\n/**\n *\n * A timed sequence of keyframes for a specific property.\n *\n *\n * @author Ben Houston / http://clara.io/\n * @author David Sarno / http://lighthaus.us/\n * @author tschw\n */\n\nfunction KeyframeTrack( name, times, values, interpolation ) {\n\n\tKeyframeTrackConstructor.apply( this, arguments );\n\n}\n\nKeyframeTrack.prototype = KeyframeTrackPrototype;\nKeyframeTrackPrototype.constructor = KeyframeTrack;\n\n// Static methods:\n\nObject.assign( KeyframeTrack, {\n\n\t// Serialization (in static context, because of constructor invocation\n\t// and automatic invocation of .toJSON):\n\n\tparse: function( json ) {\n\n\t\tif( json.type === undefined ) {\n\n\t\t\tthrow new Error( \"track type undefined, can not parse\" );\n\n\t\t}\n\n\t\tvar trackType = KeyframeTrack._getTrackTypeForValueTypeName( json.type );\n\n\t\tif ( json.times === undefined ) {\n\n\t\t\tvar times = [], values = [];\n\n\t\t\tAnimationUtils.flattenJSON( json.keys, times, values, 'value' );\n\n\t\t\tjson.times = times;\n\t\t\tjson.values = values;\n\n\t\t}\n\n\t\t// derived classes can define a static parse method\n\t\tif ( trackType.parse !== undefined ) {\n\n\t\t\treturn trackType.parse( json );\n\n\t\t} else {\n\n\t\t\t// by default, we asssume a constructor compatible with the base\n\t\t\treturn new trackType(\n\t\t\t\t\tjson.name, json.times, json.values, json.interpolation );\n\n\t\t}\n\n\t},\n\n\ttoJSON: function( track ) {\n\n\t\tvar trackType = track.constructor;\n\n\t\tvar json;\n\n\t\t// derived classes can define a static toJSON method\n\t\tif ( trackType.toJSON !== undefined ) {\n\n\t\t\tjson = trackType.toJSON( track );\n\n\t\t} else {\n\n\t\t\t// by default, we assume the data can be serialized as-is\n\t\t\tjson = {\n\n\t\t\t\t'name': track.name,\n\t\t\t\t'times': AnimationUtils.convertArray( track.times, Array ),\n\t\t\t\t'values': AnimationUtils.convertArray( track.values, Array )\n\n\t\t\t};\n\n\t\t\tvar interpolation = track.getInterpolation();\n\n\t\t\tif ( interpolation !== track.DefaultInterpolation ) {\n\n\t\t\t\tjson.interpolation = interpolation;\n\n\t\t\t}\n\n\t\t}\n\n\t\tjson.type = track.ValueTypeName; // mandatory\n\n\t\treturn json;\n\n\t},\n\n\t_getTrackTypeForValueTypeName: function( typeName ) {\n\n\t\tswitch( typeName.toLowerCase() ) {\n\n\t\t\tcase \"scalar\":\n\t\t\tcase \"double\":\n\t\t\tcase \"float\":\n\t\t\tcase \"number\":\n\t\t\tcase \"integer\":\n\n\t\t\t\treturn NumberKeyframeTrack;\n\n\t\t\tcase \"vector\":\n\t\t\tcase \"vector2\":\n\t\t\tcase \"vector3\":\n\t\t\tcase \"vector4\":\n\n\t\t\t\treturn VectorKeyframeTrack;\n\n\t\t\tcase \"color\":\n\n\t\t\t\treturn ColorKeyframeTrack;\n\n\t\t\tcase \"quaternion\":\n\n\t\t\t\treturn QuaternionKeyframeTrack;\n\n\t\t\tcase \"bool\":\n\t\t\tcase \"boolean\":\n\n\t\t\t\treturn BooleanKeyframeTrack;\n\n\t\t\tcase \"string\":\n\n\t\t\t\treturn StringKeyframeTrack;\n\n\t\t}\n\n\t\tthrow new Error( \"Unsupported typeName: \" + typeName );\n\n\t}\n\n} );\n\n\nexport { KeyframeTrack };\n","import { VectorKeyframeTrack } from './tracks/VectorKeyframeTrack';\nimport { QuaternionKeyframeTrack } from './tracks/QuaternionKeyframeTrack';\nimport { NumberKeyframeTrack } from './tracks/NumberKeyframeTrack';\nimport { AnimationUtils } from './AnimationUtils';\nimport { KeyframeTrack } from './KeyframeTrack';\nimport { _Math } from '../math/Math';\n\n/**\n *\n * Reusable set of Tracks that represent an animation.\n *\n * @author Ben Houston / http://clara.io/\n * @author David Sarno / http://lighthaus.us/\n */\n\nfunction AnimationClip( name, duration, tracks ) {\n\n\tthis.name = name;\n\tthis.tracks = tracks;\n\tthis.duration = ( duration !== undefined ) ? duration : -1;\n\n\tthis.uuid = _Math.generateUUID();\n\n\t// this means it should figure out its duration by scanning the tracks\n\tif ( this.duration < 0 ) {\n\n\t\tthis.resetDuration();\n\n\t}\n\n\tthis.optimize();\n\n}\n\nAnimationClip.prototype = {\n\n\tconstructor: AnimationClip,\n\n\tresetDuration: function() {\n\n\t\tvar tracks = this.tracks,\n\t\t\tduration = 0;\n\n\t\tfor ( var i = 0, n = tracks.length; i !== n; ++ i ) {\n\n\t\t\tvar track = this.tracks[ i ];\n\n\t\t\tduration = Math.max(\n\t\t\t\t\tduration, track.times[ track.times.length - 1 ] );\n\n\t\t}\n\n\t\tthis.duration = duration;\n\n\t},\n\n\ttrim: function() {\n\n\t\tfor ( var i = 0; i < this.tracks.length; i ++ ) {\n\n\t\t\tthis.tracks[ i ].trim( 0, this.duration );\n\n\t\t}\n\n\t\treturn this;\n\n\t},\n\n\toptimize: function() {\n\n\t\tfor ( var i = 0; i < this.tracks.length; i ++ ) {\n\n\t\t\tthis.tracks[ i ].optimize();\n\n\t\t}\n\n\t\treturn this;\n\n\t}\n\n};\n\n// Static methods:\n\nObject.assign( AnimationClip, {\n\n\tparse: function( json ) {\n\n\t\tvar tracks = [],\n\t\t\tjsonTracks = json.tracks,\n\t\t\tframeTime = 1.0 / ( json.fps || 1.0 );\n\n\t\tfor ( var i = 0, n = jsonTracks.length; i !== n; ++ i ) {\n\n\t\t\ttracks.push( KeyframeTrack.parse( jsonTracks[ i ] ).scale( frameTime ) );\n\n\t\t}\n\n\t\treturn new AnimationClip( json.name, json.duration, tracks );\n\n\t},\n\n\n\ttoJSON: function( clip ) {\n\n\t\tvar tracks = [],\n\t\t\tclipTracks = clip.tracks;\n\n\t\tvar json = {\n\n\t\t\t'name': clip.name,\n\t\t\t'duration': clip.duration,\n\t\t\t'tracks': tracks\n\n\t\t};\n\n\t\tfor ( var i = 0, n = clipTracks.length; i !== n; ++ i ) {\n\n\t\t\ttracks.push( KeyframeTrack.toJSON( clipTracks[ i ] ) );\n\n\t\t}\n\n\t\treturn json;\n\n\t},\n\n\n\tCreateFromMorphTargetSequence: function( name, morphTargetSequence, fps, noLoop ) {\n\n\t\tvar numMorphTargets = morphTargetSequence.length;\n\t\tvar tracks = [];\n\n\t\tfor ( var i = 0; i < numMorphTargets; i ++ ) {\n\n\t\t\tvar times = [];\n\t\t\tvar values = [];\n\n\t\t\ttimes.push(\n\t\t\t\t\t( i + numMorphTargets - 1 ) % numMorphTargets,\n\t\t\t\t\ti,\n\t\t\t\t\t( i + 1 ) % numMorphTargets );\n\n\t\t\tvalues.push( 0, 1, 0 );\n\n\t\t\tvar order = AnimationUtils.getKeyframeOrder( times );\n\t\t\ttimes = AnimationUtils.sortedArray( times, 1, order );\n\t\t\tvalues = AnimationUtils.sortedArray( values, 1, order );\n\n\t\t\t// if there is a key at the first frame, duplicate it as the\n\t\t\t// last frame as well for perfect loop.\n\t\t\tif ( ! noLoop && times[ 0 ] === 0 ) {\n\n\t\t\t\ttimes.push( numMorphTargets );\n\t\t\t\tvalues.push( values[ 0 ] );\n\n\t\t\t}\n\n\t\t\ttracks.push(\n\t\t\t\t\tnew NumberKeyframeTrack(\n\t\t\t\t\t\t'.morphTargetInfluences[' + morphTargetSequence[ i ].name + ']',\n\t\t\t\t\t\ttimes, values\n\t\t\t\t\t).scale( 1.0 / fps ) );\n\t\t}\n\n\t\treturn new AnimationClip( name, -1, tracks );\n\n\t},\n\n\tfindByName: function( objectOrClipArray, name ) {\n\n\t\tvar clipArray = objectOrClipArray;\n\n\t\tif ( ! Array.isArray( objectOrClipArray ) ) {\n\n\t\t\tvar o = objectOrClipArray;\n\t\t\tclipArray = o.geometry && o.geometry.animations || o.animations;\n\n\t\t}\n\n\t\tfor ( var i = 0; i < clipArray.length; i ++ ) {\n\n\t\t\tif ( clipArray[ i ].name === name ) {\n\n\t\t\t\treturn clipArray[ i ];\n\n\t\t\t}\n\t\t}\n\n\t\treturn null;\n\n\t},\n\n\tCreateClipsFromMorphTargetSequences: function( morphTargets, fps, noLoop ) {\n\n\t\tvar animationToMorphTargets = {};\n\n\t\t// tested with https://regex101.com/ on trick sequences\n\t\t// such flamingo_flyA_003, flamingo_run1_003, crdeath0059\n\t\tvar pattern = /^([\\w-]*?)([\\d]+)$/;\n\n\t\t// sort morph target names into animation groups based\n\t\t// patterns like Walk_001, Walk_002, Run_001, Run_002\n\t\tfor ( var i = 0, il = morphTargets.length; i < il; i ++ ) {\n\n\t\t\tvar morphTarget = morphTargets[ i ];\n\t\t\tvar parts = morphTarget.name.match( pattern );\n\n\t\t\tif ( parts && parts.length > 1 ) {\n\n\t\t\t\tvar name = parts[ 1 ];\n\n\t\t\t\tvar animationMorphTargets = animationToMorphTargets[ name ];\n\t\t\t\tif ( ! animationMorphTargets ) {\n\n\t\t\t\t\tanimationToMorphTargets[ name ] = animationMorphTargets = [];\n\n\t\t\t\t}\n\n\t\t\t\tanimationMorphTargets.push( morphTarget );\n\n\t\t\t}\n\n\t\t}\n\n\t\tvar clips = [];\n\n\t\tfor ( var name in animationToMorphTargets ) {\n\n\t\t\tclips.push( AnimationClip.CreateFromMorphTargetSequence( name, animationToMorphTargets[ name ], fps, noLoop ) );\n\n\t\t}\n\n\t\treturn clips;\n\n\t},\n\n\t// parse the animation.hierarchy format\n\tparseAnimation: function( animation, bones ) {\n\n\t\tif ( ! animation ) {\n\n\t\t\tconsole.error( \" no animation in JSONLoader data\" );\n\t\t\treturn null;\n\n\t\t}\n\n\t\tvar addNonemptyTrack = function(\n\t\t\t\ttrackType, trackName, animationKeys, propertyName, destTracks ) {\n\n\t\t\t// only return track if there are actually keys.\n\t\t\tif ( animationKeys.length !== 0 ) {\n\n\t\t\t\tvar times = [];\n\t\t\t\tvar values = [];\n\n\t\t\t\tAnimationUtils.flattenJSON(\n\t\t\t\t\t\tanimationKeys, times, values, propertyName );\n\n\t\t\t\t// empty keys are filtered out, so check again\n\t\t\t\tif ( times.length !== 0 ) {\n\n\t\t\t\t\tdestTracks.push( new trackType( trackName, times, values ) );\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t};\n\n\t\tvar tracks = [];\n\n\t\tvar clipName = animation.name || 'default';\n\t\t// automatic length determination in AnimationClip.\n\t\tvar duration = animation.length || -1;\n\t\tvar fps = animation.fps || 30;\n\n\t\tvar hierarchyTracks = animation.hierarchy || [];\n\n\t\tfor ( var h = 0; h < hierarchyTracks.length; h ++ ) {\n\n\t\t\tvar animationKeys = hierarchyTracks[ h ].keys;\n\n\t\t\t// skip empty tracks\n\t\t\tif ( ! animationKeys || animationKeys.length === 0 ) continue;\n\n\t\t\t// process morph targets in a way exactly compatible\n\t\t\t// with AnimationHandler.init( animation )\n\t\t\tif ( animationKeys[0].morphTargets ) {\n\n\t\t\t\t// figure out all morph targets used in this track\n\t\t\t\tvar morphTargetNames = {};\n\t\t\t\tfor ( var k = 0; k < animationKeys.length; k ++ ) {\n\n\t\t\t\t\tif ( animationKeys[k].morphTargets ) {\n\n\t\t\t\t\t\tfor ( var m = 0; m < animationKeys[k].morphTargets.length; m ++ ) {\n\n\t\t\t\t\t\t\tmorphTargetNames[ animationKeys[k].morphTargets[m] ] = -1;\n\t\t\t\t\t\t}\n\n\t\t\t\t\t}\n\n\t\t\t\t}\n\n\t\t\t\t// create a track for each morph target with all zero\n\t\t\t\t// morphTargetInfluences except for the keys in which\n\t\t\t\t// the morphTarget is named.\n\t\t\t\tfor ( var morphTargetName in morphTargetNames ) {\n\n\t\t\t\t\tvar times = [];\n\t\t\t\t\tvar values = [];\n\n\t\t\t\t\tfor ( var m = 0;\n\t\t\t\t\t\t\tm !== animationKeys[k].morphTargets.length; ++ m ) {\n\n\t\t\t\t\t\tvar animationKey = animationKeys[k];\n\n\t\t\t\t\t\ttimes.push( animationKey.time );\n\t\t\t\t\t\tvalues.push( ( animationKey.morphTarget === morphTargetName ) ? 1 : 0 );\n\n\t\t\t\t\t}\n\n\t\t\t\t\ttracks.push( new NumberKeyframeTrack(\n\t\t\t\t\t\t\t'.morphTargetInfluence[' + morphTargetName + ']', times, values ) );\n\n\t\t\t\t}\n\n\t\t\t\tduration = morphTargetNames.length * ( fps || 1.0 );\n\n\t\t\t} else {\n\t\t\t\t// ...assume skeletal animation\n\n\t\t\t\tvar boneName = '.bones[' + bones[ h ].name + ']';\n\n\t\t\t\taddNonemptyTrack(\n\t\t\t\t\t\tVectorKeyframeTrack, boneName + '.position',\n\t\t\t\t\t\tanimationKeys, 'pos', tracks );\n\n\t\t\t\taddNonemptyTrack(\n\t\t\t\t\t\tQuaternionKeyframeTrack, boneName + '.quaternion',\n\t\t\t\t\t\tanimationKeys, 'rot', tracks );\n\n\t\t\t\taddNonemptyTrack(\n\t\t\t\t\t\tVectorKeyframeTrack, boneName + '.scale',\n\t\t\t\t\t\tanimationKeys, 'scl', tracks );\n\n\t\t\t}\n\n\t\t}\n\n\t\tif ( tracks.length === 0 ) {\n\n\t\t\treturn null;\n\n\t\t}\n\n\t\tvar clip = new AnimationClip( clipName, duration, tracks );\n\n\t\treturn clip;\n\n\t}\n\n} );\n\n\nexport { AnimationClip };\n","import { Vector2 } from '../math/Vector2';\nimport { FileLoader } from './FileLoader';\nimport { DefaultLoadingManager } from './LoadingManager';\nimport * as Materials from '../materials/Materials';\n\n/**\n * @author mrdoob / http://mrdoob.com/\n */\n\nfunction MaterialLoader( manager ) {\n\n\tthis.manager = ( manager !== undefined ) ? manager : DefaultLoadingManager;\n\tthis.textures = {};\n\n}\n\nObject.assign( MaterialLoader.prototype, {\n\n\tload: function ( url, onLoad, onProgress, onError ) {\n\n\t\tvar scope = this;\n\n\t\tvar loader = new FileLoader( scope.manager );\n\t\tloader.load( url, function ( text ) {\n\n\t\t\tonLoad( scope.parse( JSON.parse( text ) ) );\n\n\t\t}, onProgress, onError );\n\n\t},\n\n\tsetTextures: function ( value ) {\n\n\t\tthis.textures = value;\n\n\t},\n\n\tparse: function ( json ) {\n\n\t\tvar textures = this.textures;\n\n\t\tfunction getTexture( name ) {\n\n\t\t\tif ( textures[ name ] === undefined ) {\n\n\t\t\t\tconsole.warn( 'THREE.MaterialLoader: Undefined texture', name );\n\n\t\t\t}\n\n\t\t\treturn textures[ name ];\n\n\t\t}\n\n\t\tvar material = new Materials[ json.type ]();\n\n\t\tif ( json.uuid !== undefined ) material.uuid = json.uuid;\n\t\tif ( json.name !== undefined ) material.name = json.name;\n\t\tif ( json.color !== undefined ) material.color.setHex( json.color );\n\t\tif ( json.roughness !== undefined ) material.roughness = json.roughness;\n\t\tif ( json.metalness !== undefined ) material.metalness = json.metalness;\n\t\tif ( json.emissive !== undefined ) material.emissive.setHex( json.emissive );\n\t\tif ( json.specular !== undefined ) material.specular.setHex( json.specular );\n\t\tif ( json.shininess !== undefined ) material.shininess = json.shininess;\n\t\tif ( json.uniforms !== undefined ) material.uniforms = json.uniforms;\n\t\tif ( json.vertexShader !== undefined ) material.vertexShader = json.vertexShader;\n\t\tif ( json.fragmentShader !== undefined ) material.fragmentShader = json.fragmentShader;\n\t\tif ( json.vertexColors !== undefined ) material.vertexColors = json.vertexColors;\n\t\tif ( json.fog !== undefined ) material.fog = json.fog;\n\t\tif ( json.shading !== undefined ) material.shading = json.shading;\n\t\tif ( json.blending !== undefined ) material.blending = json.blending;\n\t\tif ( json.side !== undefined ) material.side = json.side;\n\t\tif ( json.opacity !== undefined ) material.opacity = json.opacity;\n\t\tif ( json.transparent !== undefined ) material.transparent = json.transparent;\n\t\tif ( json.alphaTest !== undefined ) material.alphaTest = json.alphaTest;\n\t\tif ( json.depthTest !== undefined ) material.depthTest = json.depthTest;\n\t\tif ( json.depthWrite !== undefined ) material.depthWrite = json.depthWrite;\n\t\tif ( json.colorWrite !== undefined ) material.colorWrite = json.colorWrite;\n\t\tif ( json.wireframe !== undefined ) material.wireframe = json.wireframe;\n\t\tif ( json.wireframeLinewidth !== undefined ) material.wireframeLinewidth = json.wireframeLinewidth;\n\t\tif ( json.wireframeLinecap !== undefined ) material.wireframeLinecap = json.wireframeLinecap;\n\t\tif ( json.wireframeLinejoin !== undefined ) material.wireframeLinejoin = json.wireframeLinejoin;\n\t\tif ( json.skinning !== undefined ) material.skinning = json.skinning;\n\t\tif ( json.morphTargets !== undefined ) material.morphTargets = json.morphTargets;\n\n\t\t// for PointsMaterial\n\n\t\tif ( json.size !== undefined ) material.size = json.size;\n\t\tif ( json.sizeAttenuation !== undefined ) material.sizeAttenuation = json.sizeAttenuation;\n\n\t\t// maps\n\n\t\tif ( json.map !== undefined ) material.map = getTexture( json.map );\n\n\t\tif ( json.alphaMap !== undefined ) {\n\n\t\t\tmaterial.alphaMap = getTexture( json.alphaMap );\n\t\t\tmaterial.transparent = true;\n\n\t\t}\n\n\t\tif ( json.bumpMap !== undefined ) material.bumpMap = getTexture( json.bumpMap );\n\t\tif ( json.bumpScale !== undefined ) material.bumpScale = json.bumpScale;\n\n\t\tif ( json.normalMap !== undefined ) material.normalMap = getTexture( json.normalMap );\n\t\tif ( json.normalScale !== undefined ) {\n\n\t\t\tvar normalScale = json.normalScale;\n\n\t\t\tif ( Array.isArray( normalScale ) === false ) {\n\n\t\t\t\t// Blender exporter used to export a scalar. See #7459\n\n\t\t\t\tnormalScale = [ normalScale, normalScale ];\n\n\t\t\t}\n\n\t\t\tmaterial.normalScale = new Vector2().fromArray( normalScale );\n\n\t\t}\n\n\t\tif ( json.displacementMap !== undefined ) material.displacementMap = getTexture( json.displacementMap );\n\t\tif ( json.displacementScale !== undefined ) material.displacementScale = json.displacementScale;\n\t\tif ( json.displacementBias !== undefined ) material.displacementBias = json.displacementBias;\n\n\t\tif ( json.roughnessMap !== undefined ) material.roughnessMap = getTexture( json.roughnessMap );\n\t\tif ( json.metalnessMap !== undefined ) material.metalnessMap = getTexture( json.metalnessMap );\n\n\t\tif ( json.emissiveMap !== undefined ) material.emissiveMap = getTexture( json.emissiveMap );\n\t\tif ( json.emissiveIntensity !== undefined ) material.emissiveIntensity = json.emissiveIntensity;\n\n\t\tif ( json.specularMap !== undefined ) material.specularMap = getTexture( json.specularMap );\n\n\t\tif ( json.envMap !== undefined ) material.envMap = getTexture( json.envMap );\n\n\t\tif ( json.reflectivity !== undefined ) material.reflectivity = json.reflectivity;\n\n\t\tif ( json.lightMap !== undefined ) material.lightMap = getTexture( json.lightMap );\n\t\tif ( json.lightMapIntensity !== undefined ) material.lightMapIntensity = json.lightMapIntensity;\n\n\t\tif ( json.aoMap !== undefined ) material.aoMap = getTexture( json.aoMap );\n\t\tif ( json.aoMapIntensity !== undefined ) material.aoMapIntensity = json.aoMapIntensity;\n\n\t\t// MultiMaterial\n\n\t\tif ( json.materials !== undefined ) {\n\n\t\t\tfor ( var i = 0, l = json.materials.length; i < l; i ++ ) {\n\n\t\t\t\tmaterial.materials.push( this.parse( json.materials[ i ] ) );\n\n\t\t\t}\n\n\t\t}\n\n\t\treturn material;\n\n\t}\n\n} );\n\n\nexport { MaterialLoader };\n","import { Sphere } from '../math/Sphere';\nimport { Vector3 } from '../math/Vector3';\nimport { BufferAttribute } from '../core/BufferAttribute';\nimport { BufferGeometry } from '../core/BufferGeometry';\nimport { FileLoader } from './FileLoader';\nimport { DefaultLoadingManager } from './LoadingManager';\n\n/**\n * @author mrdoob / http://mrdoob.com/\n */\n\nfunction BufferGeometryLoader( manager ) {\n\n\tthis.manager = ( manager !== undefined ) ? manager : DefaultLoadingManager;\n\n}\n\nObject.assign( BufferGeometryLoader.prototype, {\n\n\tload: function ( url, onLoad, onProgress, onError ) {\n\n\t\tvar scope = this;\n\n\t\tvar loader = new FileLoader( scope.manager );\n\t\tloader.load( url, function ( text ) {\n\n\t\t\tonLoad( scope.parse( JSON.parse( text ) ) );\n\n\t\t}, onProgress, onError );\n\n\t},\n\n\tparse: function ( json ) {\n\n\t\tvar geometry = new BufferGeometry();\n\n\t\tvar index = json.data.index;\n\n\t\tvar TYPED_ARRAYS = {\n\t\t\t'Int8Array': Int8Array,\n\t\t\t'Uint8Array': Uint8Array,\n\t\t\t'Uint8ClampedArray': Uint8ClampedArray,\n\t\t\t'Int16Array': Int16Array,\n\t\t\t'Uint16Array': Uint16Array,\n\t\t\t'Int32Array': Int32Array,\n\t\t\t'Uint32Array': Uint32Array,\n\t\t\t'Float32Array': Float32Array,\n\t\t\t'Float64Array': Float64Array\n\t\t};\n\n\t\tif ( index !== undefined ) {\n\n\t\t\tvar typedArray = new TYPED_ARRAYS[ index.type ]( index.array );\n\t\t\tgeometry.setIndex( new BufferAttribute( typedArray, 1 ) );\n\n\t\t}\n\n\t\tvar attributes = json.data.attributes;\n\n\t\tfor ( var key in attributes ) {\n\n\t\t\tvar attribute = attributes[ key ];\n\t\t\tvar typedArray = new TYPED_ARRAYS[ attribute.type ]( attribute.array );\n\n\t\t\tgeometry.addAttribute( key, new BufferAttribute( typedArray, attribute.itemSize, attribute.normalized ) );\n\n\t\t}\n\n\t\tvar groups = json.data.groups || json.data.drawcalls || json.data.offsets;\n\n\t\tif ( groups !== undefined ) {\n\n\t\t\tfor ( var i = 0, n = groups.length; i !== n; ++ i ) {\n\n\t\t\t\tvar group = groups[ i ];\n\n\t\t\t\tgeometry.addGroup( group.start, group.count, group.materialIndex );\n\n\t\t\t}\n\n\t\t}\n\n\t\tvar boundingSphere = json.data.boundingSphere;\n\n\t\tif ( boundingSphere !== undefined ) {\n\n\t\t\tvar center = new Vector3();\n\n\t\t\tif ( boundingSphere.center !== undefined ) {\n\n\t\t\t\tcenter.fromArray( boundingSphere.center );\n\n\t\t\t}\n\n\t\t\tgeometry.boundingSphere = new Sphere( center, boundingSphere.radius );\n\n\t\t}\n\n\t\treturn geometry;\n\n\t}\n\n} );\n\n\nexport { BufferGeometryLoader };\n","import { FaceColors, VertexColors, DoubleSide, BackSide, MirroredRepeatWrapping, RepeatWrapping, BlendingMode } from '../constants';\nimport { _Math } from '../math/Math';\nimport { MaterialLoader } from './MaterialLoader';\nimport { TextureLoader } from './TextureLoader';\nimport { Color } from '../math/Color';\n\n/**\n * @author alteredq / http://alteredqualia.com/\n */\n\nfunction Loader() {\n\n\tthis.onLoadStart = function () {};\n\tthis.onLoadProgress = function () {};\n\tthis.onLoadComplete = function () {};\n\n}\n\nLoader.prototype = {\n\n\tconstructor: Loader,\n\n\tcrossOrigin: undefined,\n\n\textractUrlBase: function ( url ) {\n\n\t\tvar parts = url.split( '/' );\n\n\t\tif ( parts.length === 1 ) return './';\n\n\t\tparts.pop();\n\n\t\treturn parts.join( '/' ) + '/';\n\n\t},\n\n\tinitMaterials: function ( materials, texturePath, crossOrigin ) {\n\n\t\tvar array = [];\n\n\t\tfor ( var i = 0; i < materials.length; ++ i ) {\n\n\t\t\tarray[ i ] = this.createMaterial( materials[ i ], texturePath, crossOrigin );\n\n\t\t}\n\n\t\treturn array;\n\n\t},\n\n\tcreateMaterial: ( function () {\n\n\t\tvar color, textureLoader, materialLoader;\n\n\t\treturn function createMaterial( m, texturePath, crossOrigin ) {\n\n\t\t\tif ( color === undefined ) color = new Color();\n\t\t\tif ( textureLoader === undefined ) textureLoader = new TextureLoader();\n\t\t\tif ( materialLoader === undefined ) materialLoader = new MaterialLoader();\n\n\t\t\t// convert from old material format\n\n\t\t\tvar textures = {};\n\n\t\t\tfunction loadTexture( path, repeat, offset, wrap, anisotropy ) {\n\n\t\t\t\tvar fullPath = texturePath + path;\n\t\t\t\tvar loader = Loader.Handlers.get( fullPath );\n\n\t\t\t\tvar texture;\n\n\t\t\t\tif ( loader !== null ) {\n\n\t\t\t\t\ttexture = loader.load( fullPath );\n\n\t\t\t\t} else {\n\n\t\t\t\t\ttextureLoader.setCrossOrigin( crossOrigin );\n\t\t\t\t\ttexture = textureLoader.load( fullPath );\n\n\t\t\t\t}\n\n\t\t\t\tif ( repeat !== undefined ) {\n\n\t\t\t\t\ttexture.repeat.fromArray( repeat );\n\n\t\t\t\t\tif ( repeat[ 0 ] !== 1 ) texture.wrapS = RepeatWrapping;\n\t\t\t\t\tif ( repeat[ 1 ] !== 1 ) texture.wrapT = RepeatWrapping;\n\n\t\t\t\t}\n\n\t\t\t\tif ( offset !== undefined ) {\n\n\t\t\t\t\ttexture.offset.fromArray( offset );\n\n\t\t\t\t}\n\n\t\t\t\tif ( wrap !== undefined ) {\n\n\t\t\t\t\tif ( wrap[ 0 ] === 'repeat' ) texture.wrapS = RepeatWrapping;\n\t\t\t\t\tif ( wrap[ 0 ] === 'mirror' ) texture.wrapS = MirroredRepeatWrapping;\n\n\t\t\t\t\tif ( wrap[ 1 ] === 'repeat' ) texture.wrapT = RepeatWrapping;\n\t\t\t\t\tif ( wrap[ 1 ] === 'mirror' ) texture.wrapT = MirroredRepeatWrapping;\n\n\t\t\t\t}\n\n\t\t\t\tif ( anisotropy !== undefined ) {\n\n\t\t\t\t\ttexture.anisotropy = anisotropy;\n\n\t\t\t\t}\n\n\t\t\t\tvar uuid = _Math.generateUUID();\n\n\t\t\t\ttextures[ uuid ] = texture;\n\n\t\t\t\treturn uuid;\n\n\t\t\t}\n\n\t\t\t//\n\n\t\t\tvar json = {\n\t\t\t\tuuid: _Math.generateUUID(),\n\t\t\t\ttype: 'MeshLambertMaterial'\n\t\t\t};\n\n\t\t\tfor ( var name in m ) {\n\n\t\t\t\tvar value = m[ name ];\n\n\t\t\t\tswitch ( name ) {\n\t\t\t\t\tcase 'DbgColor':\n\t\t\t\t\tcase 'DbgIndex':\n\t\t\t\t\tcase 'opticalDensity':\n\t\t\t\t\tcase 'illumination':\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tcase 'DbgName':\n\t\t\t\t\t\tjson.name = value;\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tcase 'blending':\n\t\t\t\t\t\tjson.blending = BlendingMode[ value ];\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tcase 'colorAmbient':\n\t\t\t\t\tcase 'mapAmbient':\n\t\t\t\t\t\tconsole.warn( 'THREE.Loader.createMaterial:', name, 'is no longer supported.' );\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tcase 'colorDiffuse':\n\t\t\t\t\t\tjson.color = color.fromArray( value ).getHex();\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tcase 'colorSpecular':\n\t\t\t\t\t\tjson.specular = color.fromArray( value ).getHex();\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tcase 'colorEmissive':\n\t\t\t\t\t\tjson.emissive = color.fromArray( value ).getHex();\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tcase 'specularCoef':\n\t\t\t\t\t\tjson.shininess = value;\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tcase 'shading':\n\t\t\t\t\t\tif ( value.toLowerCase() === 'basic' ) json.type = 'MeshBasicMaterial';\n\t\t\t\t\t\tif ( value.toLowerCase() === 'phong' ) json.type = 'MeshPhongMaterial';\n\t\t\t\t\t\tif ( value.toLowerCase() === 'standard' ) json.type = 'MeshStandardMaterial';\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tcase 'mapDiffuse':\n\t\t\t\t\t\tjson.map = loadTexture( value, m.mapDiffuseRepeat, m.mapDiffuseOffset, m.mapDiffuseWrap, m.mapDiffuseAnisotropy );\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tcase 'mapDiffuseRepeat':\n\t\t\t\t\tcase 'mapDiffuseOffset':\n\t\t\t\t\tcase 'mapDiffuseWrap':\n\t\t\t\t\tcase 'mapDiffuseAnisotropy':\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tcase 'mapEmissive':\n\t\t\t\t\t\tjson.emissiveMap = loadTexture( value, m.mapEmissiveRepeat, m.mapEmissiveOffset, m.mapEmissiveWrap, m.mapEmissiveAnisotropy );\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tcase 'mapEmissiveRepeat':\n\t\t\t\t\tcase 'mapEmissiveOffset':\n\t\t\t\t\tcase 'mapEmissiveWrap':\n\t\t\t\t\tcase 'mapEmissiveAnisotropy':\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tcase 'mapLight':\n\t\t\t\t\t\tjson.lightMap = loadTexture( value, m.mapLightRepeat, m.mapLightOffset, m.mapLightWrap, m.mapLightAnisotropy );\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tcase 'mapLightRepeat':\n\t\t\t\t\tcase 'mapLightOffset':\n\t\t\t\t\tcase 'mapLightWrap':\n\t\t\t\t\tcase 'mapLightAnisotropy':\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tcase 'mapAO':\n\t\t\t\t\t\tjson.aoMap = loadTexture( value, m.mapAORepeat, m.mapAOOffset, m.mapAOWrap, m.mapAOAnisotropy );\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tcase 'mapAORepeat':\n\t\t\t\t\tcase 'mapAOOffset':\n\t\t\t\t\tcase 'mapAOWrap':\n\t\t\t\t\tcase 'mapAOAnisotropy':\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tcase 'mapBump':\n\t\t\t\t\t\tjson.bumpMap = loadTexture( value, m.mapBumpRepeat, m.mapBumpOffset, m.mapBumpWrap, m.mapBumpAnisotropy );\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tcase 'mapBumpScale':\n\t\t\t\t\t\tjson.bumpScale = value;\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tcase 'mapBumpRepeat':\n\t\t\t\t\tcase 'mapBumpOffset':\n\t\t\t\t\tcase 'mapBumpWrap':\n\t\t\t\t\tcase 'mapBumpAnisotropy':\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tcase 'mapNormal':\n\t\t\t\t\t\tjson.normalMap = loadTexture( value, m.mapNormalRepeat, m.mapNormalOffset, m.mapNormalWrap, m.mapNormalAnisotropy );\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tcase 'mapNormalFactor':\n\t\t\t\t\t\tjson.normalScale = [ value, value ];\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tcase 'mapNormalRepeat':\n\t\t\t\t\tcase 'mapNormalOffset':\n\t\t\t\t\tcase 'mapNormalWrap':\n\t\t\t\t\tcase 'mapNormalAnisotropy':\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tcase 'mapSpecular':\n\t\t\t\t\t\tjson.specularMap = loadTexture( value, m.mapSpecularRepeat, m.mapSpecularOffset, m.mapSpecularWrap, m.mapSpecularAnisotropy );\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tcase 'mapSpecularRepeat':\n\t\t\t\t\tcase 'mapSpecularOffset':\n\t\t\t\t\tcase 'mapSpecularWrap':\n\t\t\t\t\tcase 'mapSpecularAnisotropy':\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tcase 'mapMetalness':\n\t\t\t\t\t\tjson.metalnessMap = loadTexture( value, m.mapMetalnessRepeat, m.mapMetalnessOffset, m.mapMetalnessWrap, m.mapMetalnessAnisotropy );\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tcase 'mapMetalnessRepeat':\n\t\t\t\t\tcase 'mapMetalnessOffset':\n\t\t\t\t\tcase 'mapMetalnessWrap':\n\t\t\t\t\tcase 'mapMetalnessAnisotropy':\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tcase 'mapRoughness':\n\t\t\t\t\t\tjson.roughnessMap = loadTexture( value, m.mapRoughnessRepeat, m.mapRoughnessOffset, m.mapRoughnessWrap, m.mapRoughnessAnisotropy );\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tcase 'mapRoughnessRepeat':\n\t\t\t\t\tcase 'mapRoughnessOffset':\n\t\t\t\t\tcase 'mapRoughnessWrap':\n\t\t\t\t\tcase 'mapRoughnessAnisotropy':\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tcase 'mapAlpha':\n\t\t\t\t\t\tjson.alphaMap = loadTexture( value, m.mapAlphaRepeat, m.mapAlphaOffset, m.mapAlphaWrap, m.mapAlphaAnisotropy );\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tcase 'mapAlphaRepeat':\n\t\t\t\t\tcase 'mapAlphaOffset':\n\t\t\t\t\tcase 'mapAlphaWrap':\n\t\t\t\t\tcase 'mapAlphaAnisotropy':\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tcase 'flipSided':\n\t\t\t\t\t\tjson.side = BackSide;\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tcase 'doubleSided':\n\t\t\t\t\t\tjson.side = DoubleSide;\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tcase 'transparency':\n\t\t\t\t\t\tconsole.warn( 'THREE.Loader.createMaterial: transparency has been renamed to opacity' );\n\t\t\t\t\t\tjson.opacity = value;\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tcase 'depthTest':\n\t\t\t\t\tcase 'depthWrite':\n\t\t\t\t\tcase 'colorWrite':\n\t\t\t\t\tcase 'opacity':\n\t\t\t\t\tcase 'reflectivity':\n\t\t\t\t\tcase 'transparent':\n\t\t\t\t\tcase 'visible':\n\t\t\t\t\tcase 'wireframe':\n\t\t\t\t\t\tjson[ name ] = value;\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tcase 'vertexColors':\n\t\t\t\t\t\tif ( value === true ) json.vertexColors = VertexColors;\n\t\t\t\t\t\tif ( value === 'face' ) json.vertexColors = FaceColors;\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tdefault:\n\t\t\t\t\t\tconsole.error( 'THREE.Loader.createMaterial: Unsupported', name, value );\n\t\t\t\t\t\tbreak;\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t\tif ( json.type === 'MeshBasicMaterial' ) delete json.emissive;\n\t\t\tif ( json.type !== 'MeshPhongMaterial' ) delete json.specular;\n\n\t\t\tif ( json.opacity < 1 ) json.transparent = true;\n\n\t\t\tmaterialLoader.setTextures( textures );\n\n\t\t\treturn materialLoader.parse( json );\n\n\t\t};\n\n\t} )()\n\n};\n\nLoader.Handlers = {\n\n\thandlers: [],\n\n\tadd: function ( regex, loader ) {\n\n\t\tthis.handlers.push( regex, loader );\n\n\t},\n\n\tget: function ( file ) {\n\n\t\tvar handlers = this.handlers;\n\n\t\tfor ( var i = 0, l = handlers.length; i < l; i += 2 ) {\n\n\t\t\tvar regex = handlers[ i ];\n\t\t\tvar loader = handlers[ i + 1 ];\n\n\t\t\tif ( regex.test( file ) ) {\n\n\t\t\t\treturn loader;\n\n\t\t\t}\n\n\t\t}\n\n\t\treturn null;\n\n\t}\n\n};\n\n\nexport { Loader };\n","import { Loader } from './Loader';\nimport { AnimationClip } from '../animation/AnimationClip';\nimport { Vector3 } from '../math/Vector3';\nimport { Vector4 } from '../math/Vector4';\nimport { Color } from '../math/Color';\nimport { Vector2 } from '../math/Vector2';\nimport { Face3 } from '../core/Face3';\nimport { Geometry } from '../core/Geometry';\nimport { FileLoader } from './FileLoader';\nimport { DefaultLoadingManager } from './LoadingManager';\n\n/**\n * @author mrdoob / http://mrdoob.com/\n * @author alteredq / http://alteredqualia.com/\n */\n\nfunction JSONLoader( manager ) {\n\n\tif ( typeof manager === 'boolean' ) {\n\n\t\tconsole.warn( 'THREE.JSONLoader: showStatus parameter has been removed from constructor.' );\n\t\tmanager = undefined;\n\n\t}\n\n\tthis.manager = ( manager !== undefined ) ? manager : DefaultLoadingManager;\n\n\tthis.withCredentials = false;\n\n}\n\nObject.assign( JSONLoader.prototype, {\n\n\tload: function( url, onLoad, onProgress, onError ) {\n\n\t\tvar scope = this;\n\n\t\tvar texturePath = this.texturePath && ( typeof this.texturePath === \"string\" ) ? this.texturePath : Loader.prototype.extractUrlBase( url );\n\n\t\tvar loader = new FileLoader( this.manager );\n\t\tloader.setWithCredentials( this.withCredentials );\n\t\tloader.load( url, function ( text ) {\n\n\t\t\tvar json = JSON.parse( text );\n\t\t\tvar metadata = json.metadata;\n\n\t\t\tif ( metadata !== undefined ) {\n\n\t\t\t\tvar type = metadata.type;\n\n\t\t\t\tif ( type !== undefined ) {\n\n\t\t\t\t\tif ( type.toLowerCase() === 'object' ) {\n\n\t\t\t\t\t\tconsole.error( 'THREE.JSONLoader: ' + url + ' should be loaded with THREE.ObjectLoader instead.' );\n\t\t\t\t\t\treturn;\n\n\t\t\t\t\t}\n\n\t\t\t\t\tif ( type.toLowerCase() === 'scene' ) {\n\n\t\t\t\t\t\tconsole.error( 'THREE.JSONLoader: ' + url + ' should be loaded with THREE.SceneLoader instead.' );\n\t\t\t\t\t\treturn;\n\n\t\t\t\t\t}\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t\tvar object = scope.parse( json, texturePath );\n\t\t\tonLoad( object.geometry, object.materials );\n\n\t\t}, onProgress, onError );\n\n\t},\n\n\tsetTexturePath: function ( value ) {\n\n\t\tthis.texturePath = value;\n\n\t},\n\n\tparse: function ( json, texturePath ) {\n\n\t\tvar geometry = new Geometry(),\n\t\tscale = ( json.scale !== undefined ) ? 1.0 / json.scale : 1.0;\n\n\t\tparseModel( scale );\n\n\t\tparseSkin();\n\t\tparseMorphing( scale );\n\t\tparseAnimations();\n\n\t\tgeometry.computeFaceNormals();\n\t\tgeometry.computeBoundingSphere();\n\n\t\tfunction parseModel( scale ) {\n\n\t\t\tfunction isBitSet( value, position ) {\n\n\t\t\t\treturn value & ( 1 << position );\n\n\t\t\t}\n\n\t\t\tvar i, j, fi,\n\n\t\t\toffset, zLength,\n\n\t\tcolorIndex, normalIndex, uvIndex, materialIndex,\n\n\t\t\ttype,\n\t\t\tisQuad,\n\t\t\thasMaterial,\n\t\t\thasFaceVertexUv,\n\t\t\thasFaceNormal, hasFaceVertexNormal,\n\t\t\thasFaceColor, hasFaceVertexColor,\n\n\t\tvertex, face, faceA, faceB, hex, normal,\n\n\t\t\tuvLayer, uv, u, v,\n\n\t\t\tfaces = json.faces,\n\t\t\tvertices = json.vertices,\n\t\t\tnormals = json.normals,\n\t\t\tcolors = json.colors,\n\n\t\t\tnUvLayers = 0;\n\n\t\t\tif ( json.uvs !== undefined ) {\n\n\t\t\t\t// disregard empty arrays\n\n\t\t\t\tfor ( i = 0; i < json.uvs.length; i ++ ) {\n\n\t\t\t\t\tif ( json.uvs[ i ].length ) nUvLayers ++;\n\n\t\t\t\t}\n\n\t\t\t\tfor ( i = 0; i < nUvLayers; i ++ ) {\n\n\t\t\t\t\tgeometry.faceVertexUvs[ i ] = [];\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t\toffset = 0;\n\t\t\tzLength = vertices.length;\n\n\t\t\twhile ( offset < zLength ) {\n\n\t\t\t\tvertex = new Vector3();\n\n\t\t\t\tvertex.x = vertices[ offset ++ ] * scale;\n\t\t\t\tvertex.y = vertices[ offset ++ ] * scale;\n\t\t\t\tvertex.z = vertices[ offset ++ ] * scale;\n\n\t\t\t\tgeometry.vertices.push( vertex );\n\n\t\t\t}\n\n\t\t\toffset = 0;\n\t\t\tzLength = faces.length;\n\n\t\t\twhile ( offset < zLength ) {\n\n\t\t\t\ttype = faces[ offset ++ ];\n\n\n\t\t\t\tisQuad = isBitSet( type, 0 );\n\t\t\t\thasMaterial = isBitSet( type, 1 );\n\t\t\t\thasFaceVertexUv = isBitSet( type, 3 );\n\t\t\t\thasFaceNormal = isBitSet( type, 4 );\n\t\t\t\thasFaceVertexNormal = isBitSet( type, 5 );\n\t\t\t\thasFaceColor\t = isBitSet( type, 6 );\n\t\t\t\thasFaceVertexColor = isBitSet( type, 7 );\n\n\t\t\t\t// console.log(\"type\", type, \"bits\", isQuad, hasMaterial, hasFaceVertexUv, hasFaceNormal, hasFaceVertexNormal, hasFaceColor, hasFaceVertexColor);\n\n\t\t\t\tif ( isQuad ) {\n\n\t\t\t\t\tfaceA = new Face3();\n\t\t\t\t\tfaceA.a = faces[ offset ];\n\t\t\t\t\tfaceA.b = faces[ offset + 1 ];\n\t\t\t\t\tfaceA.c = faces[ offset + 3 ];\n\n\t\t\t\t\tfaceB = new Face3();\n\t\t\t\t\tfaceB.a = faces[ offset + 1 ];\n\t\t\t\t\tfaceB.b = faces[ offset + 2 ];\n\t\t\t\t\tfaceB.c = faces[ offset + 3 ];\n\n\t\t\t\t\toffset += 4;\n\n\t\t\t\t\tif ( hasMaterial ) {\n\n\t\t\t\t\t\tmaterialIndex = faces[ offset ++ ];\n\t\t\t\t\t\tfaceA.materialIndex = materialIndex;\n\t\t\t\t\t\tfaceB.materialIndex = materialIndex;\n\n\t\t\t\t\t}\n\n\t\t\t\t\t// to get face <=> uv index correspondence\n\n\t\t\t\t\tfi = geometry.faces.length;\n\n\t\t\t\t\tif ( hasFaceVertexUv ) {\n\n\t\t\t\t\t\tfor ( i = 0; i < nUvLayers; i ++ ) {\n\n\t\t\t\t\t\t\tuvLayer = json.uvs[ i ];\n\n\t\t\t\t\t\t\tgeometry.faceVertexUvs[ i ][ fi ] = [];\n\t\t\t\t\t\t\tgeometry.faceVertexUvs[ i ][ fi + 1 ] = [];\n\n\t\t\t\t\t\t\tfor ( j = 0; j < 4; j ++ ) {\n\n\t\t\t\t\t\t\t\tuvIndex = faces[ offset ++ ];\n\n\t\t\t\t\t\t\t\tu = uvLayer[ uvIndex * 2 ];\n\t\t\t\t\t\t\t\tv = uvLayer[ uvIndex * 2 + 1 ];\n\n\t\t\t\t\t\t\t\tuv = new Vector2( u, v );\n\n\t\t\t\t\t\t\t\tif ( j !== 2 ) geometry.faceVertexUvs[ i ][ fi ].push( uv );\n\t\t\t\t\t\t\t\tif ( j !== 0 ) geometry.faceVertexUvs[ i ][ fi + 1 ].push( uv );\n\n\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t}\n\n\t\t\t\t\t}\n\n\t\t\t\t\tif ( hasFaceNormal ) {\n\n\t\t\t\t\t\tnormalIndex = faces[ offset ++ ] * 3;\n\n\t\t\t\t\t\tfaceA.normal.set(\n\t\t\t\t\t\t\tnormals[ normalIndex ++ ],\n\t\t\t\t\t\t\tnormals[ normalIndex ++ ],\n\t\t\t\t\t\t\tnormals[ normalIndex ]\n\t\t\t\t\t\t);\n\n\t\t\t\t\t\tfaceB.normal.copy( faceA.normal );\n\n\t\t\t\t\t}\n\n\t\t\t\t\tif ( hasFaceVertexNormal ) {\n\n\t\t\t\t\t\tfor ( i = 0; i < 4; i ++ ) {\n\n\t\t\t\t\t\t\tnormalIndex = faces[ offset ++ ] * 3;\n\n\t\t\t\t\t\t\tnormal = new Vector3(\n\t\t\t\t\t\t\t\tnormals[ normalIndex ++ ],\n\t\t\t\t\t\t\t\tnormals[ normalIndex ++ ],\n\t\t\t\t\t\t\t\tnormals[ normalIndex ]\n\t\t\t\t\t\t\t);\n\n\n\t\t\t\t\t\t\tif ( i !== 2 ) faceA.vertexNormals.push( normal );\n\t\t\t\t\t\t\tif ( i !== 0 ) faceB.vertexNormals.push( normal );\n\n\t\t\t\t\t\t}\n\n\t\t\t\t\t}\n\n\n\t\t\t\t\tif ( hasFaceColor ) {\n\n\t\t\t\t\t\tcolorIndex = faces[ offset ++ ];\n\t\t\t\t\t\thex = colors[ colorIndex ];\n\n\t\t\t\t\t\tfaceA.color.setHex( hex );\n\t\t\t\t\t\tfaceB.color.setHex( hex );\n\n\t\t\t\t\t}\n\n\n\t\t\t\t\tif ( hasFaceVertexColor ) {\n\n\t\t\t\t\t\tfor ( i = 0; i < 4; i ++ ) {\n\n\t\t\t\t\t\t\tcolorIndex = faces[ offset ++ ];\n\t\t\t\t\t\t\thex = colors[ colorIndex ];\n\n\t\t\t\t\t\t\tif ( i !== 2 ) faceA.vertexColors.push( new Color( hex ) );\n\t\t\t\t\t\t\tif ( i !== 0 ) faceB.vertexColors.push( new Color( hex ) );\n\n\t\t\t\t\t\t}\n\n\t\t\t\t\t}\n\n\t\t\t\t\tgeometry.faces.push( faceA );\n\t\t\t\t\tgeometry.faces.push( faceB );\n\n\t\t\t\t} else {\n\n\t\t\t\t\tface = new Face3();\n\t\t\t\t\tface.a = faces[ offset ++ ];\n\t\t\t\t\tface.b = faces[ offset ++ ];\n\t\t\t\t\tface.c = faces[ offset ++ ];\n\n\t\t\t\t\tif ( hasMaterial ) {\n\n\t\t\t\t\t\tmaterialIndex = faces[ offset ++ ];\n\t\t\t\t\t\tface.materialIndex = materialIndex;\n\n\t\t\t\t\t}\n\n\t\t\t\t\t// to get face <=> uv index correspondence\n\n\t\t\t\t\tfi = geometry.faces.length;\n\n\t\t\t\t\tif ( hasFaceVertexUv ) {\n\n\t\t\t\t\t\tfor ( i = 0; i < nUvLayers; i ++ ) {\n\n\t\t\t\t\t\t\tuvLayer = json.uvs[ i ];\n\n\t\t\t\t\t\t\tgeometry.faceVertexUvs[ i ][ fi ] = [];\n\n\t\t\t\t\t\t\tfor ( j = 0; j < 3; j ++ ) {\n\n\t\t\t\t\t\t\t\tuvIndex = faces[ offset ++ ];\n\n\t\t\t\t\t\t\t\tu = uvLayer[ uvIndex * 2 ];\n\t\t\t\t\t\t\t\tv = uvLayer[ uvIndex * 2 + 1 ];\n\n\t\t\t\t\t\t\t\tuv = new Vector2( u, v );\n\n\t\t\t\t\t\t\t\tgeometry.faceVertexUvs[ i ][ fi ].push( uv );\n\n\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t}\n\n\t\t\t\t\t}\n\n\t\t\t\t\tif ( hasFaceNormal ) {\n\n\t\t\t\t\t\tnormalIndex = faces[ offset ++ ] * 3;\n\n\t\t\t\t\t\tface.normal.set(\n\t\t\t\t\t\t\tnormals[ normalIndex ++ ],\n\t\t\t\t\t\t\tnormals[ normalIndex ++ ],\n\t\t\t\t\t\t\tnormals[ normalIndex ]\n\t\t\t\t\t\t);\n\n\t\t\t\t\t}\n\n\t\t\t\t\tif ( hasFaceVertexNormal ) {\n\n\t\t\t\t\t\tfor ( i = 0; i < 3; i ++ ) {\n\n\t\t\t\t\t\t\tnormalIndex = faces[ offset ++ ] * 3;\n\n\t\t\t\t\t\t\tnormal = new Vector3(\n\t\t\t\t\t\t\t\tnormals[ normalIndex ++ ],\n\t\t\t\t\t\t\t\tnormals[ normalIndex ++ ],\n\t\t\t\t\t\t\t\tnormals[ normalIndex ]\n\t\t\t\t\t\t\t);\n\n\t\t\t\t\t\t\tface.vertexNormals.push( normal );\n\n\t\t\t\t\t\t}\n\n\t\t\t\t\t}\n\n\n\t\t\t\t\tif ( hasFaceColor ) {\n\n\t\t\t\t\t\tcolorIndex = faces[ offset ++ ];\n\t\t\t\t\t\tface.color.setHex( colors[ colorIndex ] );\n\n\t\t\t\t\t}\n\n\n\t\t\t\t\tif ( hasFaceVertexColor ) {\n\n\t\t\t\t\t\tfor ( i = 0; i < 3; i ++ ) {\n\n\t\t\t\t\t\t\tcolorIndex = faces[ offset ++ ];\n\t\t\t\t\t\t\tface.vertexColors.push( new Color( colors[ colorIndex ] ) );\n\n\t\t\t\t\t\t}\n\n\t\t\t\t\t}\n\n\t\t\t\t\tgeometry.faces.push( face );\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t}\n\n\t\tfunction parseSkin() {\n\n\t\t\tvar influencesPerVertex = ( json.influencesPerVertex !== undefined ) ? json.influencesPerVertex : 2;\n\n\t\t\tif ( json.skinWeights ) {\n\n\t\t\t\tfor ( var i = 0, l = json.skinWeights.length; i < l; i += influencesPerVertex ) {\n\n\t\t\t\t\tvar x = json.skinWeights[ i ];\n\t\t\t\t\tvar y = ( influencesPerVertex > 1 ) ? json.skinWeights[ i + 1 ] : 0;\n\t\t\t\t\tvar z = ( influencesPerVertex > 2 ) ? json.skinWeights[ i + 2 ] : 0;\n\t\t\t\t\tvar w = ( influencesPerVertex > 3 ) ? json.skinWeights[ i + 3 ] : 0;\n\n\t\t\t\t\tgeometry.skinWeights.push( new Vector4( x, y, z, w ) );\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t\tif ( json.skinIndices ) {\n\n\t\t\t\tfor ( var i = 0, l = json.skinIndices.length; i < l; i += influencesPerVertex ) {\n\n\t\t\t\t\tvar a = json.skinIndices[ i ];\n\t\t\t\t\tvar b = ( influencesPerVertex > 1 ) ? json.skinIndices[ i + 1 ] : 0;\n\t\t\t\t\tvar c = ( influencesPerVertex > 2 ) ? json.skinIndices[ i + 2 ] : 0;\n\t\t\t\t\tvar d = ( influencesPerVertex > 3 ) ? json.skinIndices[ i + 3 ] : 0;\n\n\t\t\t\t\tgeometry.skinIndices.push( new Vector4( a, b, c, d ) );\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t\tgeometry.bones = json.bones;\n\n\t\t\tif ( geometry.bones && geometry.bones.length > 0 && ( geometry.skinWeights.length !== geometry.skinIndices.length || geometry.skinIndices.length !== geometry.vertices.length ) ) {\n\n\t\t\t\tconsole.warn( 'When skinning, number of vertices (' + geometry.vertices.length + '), skinIndices (' +\n\t\t\t\t\tgeometry.skinIndices.length + '), and skinWeights (' + geometry.skinWeights.length + ') should match.' );\n\n\t\t\t}\n\n\t\t}\n\n\t\tfunction parseMorphing( scale ) {\n\n\t\t\tif ( json.morphTargets !== undefined ) {\n\n\t\t\t\tfor ( var i = 0, l = json.morphTargets.length; i < l; i ++ ) {\n\n\t\t\t\t\tgeometry.morphTargets[ i ] = {};\n\t\t\t\t\tgeometry.morphTargets[ i ].name = json.morphTargets[ i ].name;\n\t\t\t\t\tgeometry.morphTargets[ i ].vertices = [];\n\n\t\t\t\t\tvar dstVertices = geometry.morphTargets[ i ].vertices;\n\t\t\t\t\tvar srcVertices = json.morphTargets[ i ].vertices;\n\n\t\t\t\t\tfor ( var v = 0, vl = srcVertices.length; v < vl; v += 3 ) {\n\n\t\t\t\t\t\tvar vertex = new Vector3();\n\t\t\t\t\t\tvertex.x = srcVertices[ v ] * scale;\n\t\t\t\t\t\tvertex.y = srcVertices[ v + 1 ] * scale;\n\t\t\t\t\t\tvertex.z = srcVertices[ v + 2 ] * scale;\n\n\t\t\t\t\t\tdstVertices.push( vertex );\n\n\t\t\t\t\t}\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t\tif ( json.morphColors !== undefined && json.morphColors.length > 0 ) {\n\n\t\t\t\tconsole.warn( 'THREE.JSONLoader: \"morphColors\" no longer supported. Using them as face colors.' );\n\n\t\t\t\tvar faces = geometry.faces;\n\t\t\t\tvar morphColors = json.morphColors[ 0 ].colors;\n\n\t\t\t\tfor ( var i = 0, l = faces.length; i < l; i ++ ) {\n\n\t\t\t\t\tfaces[ i ].color.fromArray( morphColors, i * 3 );\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t}\n\n\t\tfunction parseAnimations() {\n\n\t\t\tvar outputAnimations = [];\n\n\t\t\t// parse old style Bone/Hierarchy animations\n\t\t\tvar animations = [];\n\n\t\t\tif ( json.animation !== undefined ) {\n\n\t\t\t\tanimations.push( json.animation );\n\n\t\t\t}\n\n\t\t\tif ( json.animations !== undefined ) {\n\n\t\t\t\tif ( json.animations.length ) {\n\n\t\t\t\t\tanimations = animations.concat( json.animations );\n\n\t\t\t\t} else {\n\n\t\t\t\t\tanimations.push( json.animations );\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t\tfor ( var i = 0; i < animations.length; i ++ ) {\n\n\t\t\t\tvar clip = AnimationClip.parseAnimation( animations[ i ], geometry.bones );\n\t\t\t\tif ( clip ) outputAnimations.push( clip );\n\n\t\t\t}\n\n\t\t\t// parse implicit morph animations\n\t\t\tif ( geometry.morphTargets ) {\n\n\t\t\t\t// TODO: Figure out what an appropraite FPS is for morph target animations -- defaulting to 10, but really it is completely arbitrary.\n\t\t\t\tvar morphAnimationClips = AnimationClip.CreateClipsFromMorphTargetSequences( geometry.morphTargets, 10 );\n\t\t\t\toutputAnimations = outputAnimations.concat( morphAnimationClips );\n\n\t\t\t}\n\n\t\t\tif ( outputAnimations.length > 0 ) geometry.animations = outputAnimations;\n\n\t\t}\n\n\t\tif ( json.materials === undefined || json.materials.length === 0 ) {\n\n\t\t\treturn { geometry: geometry };\n\n\t\t} else {\n\n\t\t\tvar materials = Loader.prototype.initMaterials( json.materials, texturePath, this.crossOrigin );\n\n\t\t\treturn { geometry: geometry, materials: materials };\n\n\t\t}\n\n\t}\n\n} );\n\n\nexport { JSONLoader };\n","import { TextureMapping, TextureWrapping, TextureFilter } from '../constants';\nimport { Color } from '../math/Color';\nimport { Matrix4 } from '../math/Matrix4';\nimport { Object3D } from '../core/Object3D';\nimport { Group } from '../objects/Group';\nimport { Sprite } from '../objects/Sprite';\nimport { Points } from '../objects/Points';\nimport { Line } from '../objects/Line';\nimport { LineSegments } from '../objects/LineSegments';\nimport { LOD } from '../objects/LOD';\nimport { Mesh } from '../objects/Mesh';\nimport { SkinnedMesh } from '../objects/SkinnedMesh';\nimport { Fog } from '../scenes/Fog';\nimport { FogExp2 } from '../scenes/FogExp2';\nimport { HemisphereLight } from '../lights/HemisphereLight';\nimport { SpotLight } from '../lights/SpotLight';\nimport { PointLight } from '../lights/PointLight';\nimport { DirectionalLight } from '../lights/DirectionalLight';\nimport { AmbientLight } from '../lights/AmbientLight';\nimport { OrthographicCamera } from '../cameras/OrthographicCamera';\nimport { PerspectiveCamera } from '../cameras/PerspectiveCamera';\nimport { Scene } from '../scenes/Scene';\nimport { Texture } from '../textures/Texture';\nimport { ImageLoader } from './ImageLoader';\nimport { LoadingManager, DefaultLoadingManager } from './LoadingManager';\nimport { AnimationClip } from '../animation/AnimationClip';\nimport { MaterialLoader } from './MaterialLoader';\nimport { BufferGeometryLoader } from './BufferGeometryLoader';\nimport { JSONLoader } from './JSONLoader';\nimport { FileLoader } from './FileLoader';\nimport * as Geometries from '../geometries/Geometries';\n\n/**\n * @author mrdoob / http://mrdoob.com/\n */\n\nfunction ObjectLoader ( manager ) {\n\n\tthis.manager = ( manager !== undefined ) ? manager : DefaultLoadingManager;\n\tthis.texturePath = '';\n\n}\n\nObject.assign( ObjectLoader.prototype, {\n\n\tload: function ( url, onLoad, onProgress, onError ) {\n\n\t\tif ( this.texturePath === '' ) {\n\n\t\t\tthis.texturePath = url.substring( 0, url.lastIndexOf( '/' ) + 1 );\n\n\t\t}\n\n\t\tvar scope = this;\n\n\t\tvar loader = new FileLoader( scope.manager );\n\t\tloader.load( url, function ( text ) {\n\n\t\t\tvar json = null;\n\n\t\t\ttry {\n\n\t\t\t\tjson = JSON.parse( text );\n\n\t\t\t} catch ( error ) {\n\n\t\t\t\tconsole.error( 'THREE:ObjectLoader: Can\\'t parse ' + url + '.', error.message );\n\t\t\t\treturn;\n\n\t\t\t}\n\n\t\t\tvar metadata = json.metadata;\n\n\t\t\tif ( metadata === undefined || metadata.type === undefined || metadata.type.toLowerCase() === 'geometry' ) {\n\n\t\t\t\tconsole.error( 'THREE.ObjectLoader: Can\\'t load ' + url + '. Use THREE.JSONLoader instead.' );\n\t\t\t\treturn;\n\n\t\t\t}\n\n\t\t\tscope.parse( json, onLoad );\n\n\t\t}, onProgress, onError );\n\n\t},\n\n\tsetTexturePath: function ( value ) {\n\n\t\tthis.texturePath = value;\n\n\t},\n\n\tsetCrossOrigin: function ( value ) {\n\n\t\tthis.crossOrigin = value;\n\n\t},\n\n\tparse: function ( json, onLoad ) {\n\n\t\tvar geometries = this.parseGeometries( json.geometries );\n\n\t\tvar images = this.parseImages( json.images, function () {\n\n\t\t\tif ( onLoad !== undefined ) onLoad( object );\n\n\t\t} );\n\n\t\tvar textures = this.parseTextures( json.textures, images );\n\t\tvar materials = this.parseMaterials( json.materials, textures );\n\n\t\tvar object = this.parseObject( json.object, geometries, materials );\n\n\t\tif ( json.animations ) {\n\n\t\t\tobject.animations = this.parseAnimations( json.animations );\n\n\t\t}\n\n\t\tif ( json.images === undefined || json.images.length === 0 ) {\n\n\t\t\tif ( onLoad !== undefined ) onLoad( object );\n\n\t\t}\n\n\t\treturn object;\n\n\t},\n\n\tparseGeometries: function ( json ) {\n\n\t\tvar geometries = {};\n\n\t\tif ( json !== undefined ) {\n\n\t\t\tvar geometryLoader = new JSONLoader();\n\t\t\tvar bufferGeometryLoader = new BufferGeometryLoader();\n\n\t\t\tfor ( var i = 0, l = json.length; i < l; i ++ ) {\n\n\t\t\t\tvar geometry;\n\t\t\t\tvar data = json[ i ];\n\n\t\t\t\tswitch ( data.type ) {\n\n\t\t\t\t\tcase 'PlaneGeometry':\n\t\t\t\t\tcase 'PlaneBufferGeometry':\n\n\t\t\t\t\t\tgeometry = new Geometries[ data.type ](\n\t\t\t\t\t\t\tdata.width,\n\t\t\t\t\t\t\tdata.height,\n\t\t\t\t\t\t\tdata.widthSegments,\n\t\t\t\t\t\t\tdata.heightSegments\n\t\t\t\t\t\t);\n\n\t\t\t\t\t\tbreak;\n\n\t\t\t\t\tcase 'BoxGeometry':\n\t\t\t\t\tcase 'BoxBufferGeometry':\n\t\t\t\t\tcase 'CubeGeometry': // backwards compatible\n\n\t\t\t\t\t\tgeometry = new Geometries[ data.type ](\n\t\t\t\t\t\t\tdata.width,\n\t\t\t\t\t\t\tdata.height,\n\t\t\t\t\t\t\tdata.depth,\n\t\t\t\t\t\t\tdata.widthSegments,\n\t\t\t\t\t\t\tdata.heightSegments,\n\t\t\t\t\t\t\tdata.depthSegments\n\t\t\t\t\t\t);\n\n\t\t\t\t\t\tbreak;\n\n\t\t\t\t\tcase 'CircleGeometry':\n\t\t\t\t\tcase 'CircleBufferGeometry':\n\n\t\t\t\t\t\tgeometry = new Geometries[ data.type ](\n\t\t\t\t\t\t\tdata.radius,\n\t\t\t\t\t\t\tdata.segments,\n\t\t\t\t\t\t\tdata.thetaStart,\n\t\t\t\t\t\t\tdata.thetaLength\n\t\t\t\t\t\t);\n\n\t\t\t\t\t\tbreak;\n\n\t\t\t\t\tcase 'CylinderGeometry':\n\t\t\t\t\tcase 'CylinderBufferGeometry':\n\n\t\t\t\t\t\tgeometry = new Geometries[ data.type ](\n\t\t\t\t\t\t\tdata.radiusTop,\n\t\t\t\t\t\t\tdata.radiusBottom,\n\t\t\t\t\t\t\tdata.height,\n\t\t\t\t\t\t\tdata.radialSegments,\n\t\t\t\t\t\t\tdata.heightSegments,\n\t\t\t\t\t\t\tdata.openEnded,\n\t\t\t\t\t\t\tdata.thetaStart,\n\t\t\t\t\t\t\tdata.thetaLength\n\t\t\t\t\t\t);\n\n\t\t\t\t\t\tbreak;\n\n\t\t\t\t\tcase 'ConeGeometry':\n\t\t\t\t\tcase 'ConeBufferGeometry':\n\n\t\t\t\t\t\tgeometry = new Geometries[ data.type ](\n\t\t\t\t\t\t\tdata.radius,\n\t\t\t\t\t\t\tdata.height,\n\t\t\t\t\t\t\tdata.radialSegments,\n\t\t\t\t\t\t\tdata.heightSegments,\n\t\t\t\t\t\t\tdata.openEnded,\n\t\t\t\t\t\t\tdata.thetaStart,\n\t\t\t\t\t\t\tdata.thetaLength\n\t\t\t\t\t\t);\n\n\t\t\t\t\t\tbreak;\n\n\t\t\t\t\tcase 'SphereGeometry':\n\t\t\t\t\tcase 'SphereBufferGeometry':\n\n\t\t\t\t\t\tgeometry = new Geometries[ data.type ](\n\t\t\t\t\t\t\tdata.radius,\n\t\t\t\t\t\t\tdata.widthSegments,\n\t\t\t\t\t\t\tdata.heightSegments,\n\t\t\t\t\t\t\tdata.phiStart,\n\t\t\t\t\t\t\tdata.phiLength,\n\t\t\t\t\t\t\tdata.thetaStart,\n\t\t\t\t\t\t\tdata.thetaLength\n\t\t\t\t\t\t);\n\n\t\t\t\t\t\tbreak;\n\n\t\t\t\t\tcase 'DodecahedronGeometry':\n\t\t\t\t\tcase 'IcosahedronGeometry':\n\t\t\t\t\tcase 'OctahedronGeometry':\n\t\t\t\t\tcase 'TetrahedronGeometry':\n\n\t\t\t\t\t\tgeometry = new Geometries[ data.type ](\n\t\t\t\t\t\t\tdata.radius,\n\t\t\t\t\t\t\tdata.detail\n\t\t\t\t\t\t);\n\n\t\t\t\t\t\tbreak;\n\n\t\t\t\t\tcase 'RingGeometry':\n\t\t\t\t\tcase 'RingBufferGeometry':\n\n\t\t\t\t\t\tgeometry = new Geometries[ data.type ](\n\t\t\t\t\t\t\tdata.innerRadius,\n\t\t\t\t\t\t\tdata.outerRadius,\n\t\t\t\t\t\t\tdata.thetaSegments,\n\t\t\t\t\t\t\tdata.phiSegments,\n\t\t\t\t\t\t\tdata.thetaStart,\n\t\t\t\t\t\t\tdata.thetaLength\n\t\t\t\t\t\t);\n\n\t\t\t\t\t\tbreak;\n\n\t\t\t\t\tcase 'TorusGeometry':\n\t\t\t\t\tcase 'TorusBufferGeometry':\n\n\t\t\t\t\t\tgeometry = new Geometries[ data.type ](\n\t\t\t\t\t\t\tdata.radius,\n\t\t\t\t\t\t\tdata.tube,\n\t\t\t\t\t\t\tdata.radialSegments,\n\t\t\t\t\t\t\tdata.tubularSegments,\n\t\t\t\t\t\t\tdata.arc\n\t\t\t\t\t\t);\n\n\t\t\t\t\t\tbreak;\n\n\t\t\t\t\tcase 'TorusKnotGeometry':\n\t\t\t\t\tcase 'TorusKnotBufferGeometry':\n\n\t\t\t\t\t\tgeometry = new Geometries[ data.type ](\n\t\t\t\t\t\t\tdata.radius,\n\t\t\t\t\t\t\tdata.tube,\n\t\t\t\t\t\t\tdata.tubularSegments,\n\t\t\t\t\t\t\tdata.radialSegments,\n\t\t\t\t\t\t\tdata.p,\n\t\t\t\t\t\t\tdata.q\n\t\t\t\t\t\t);\n\n\t\t\t\t\t\tbreak;\n\n\t\t\t\t\tcase 'LatheGeometry':\n\t\t\t\t\tcase 'LatheBufferGeometry':\n\n\t\t\t\t\t\tgeometry = new Geometries[ data.type ](\n\t\t\t\t\t\t\tdata.points,\n\t\t\t\t\t\t\tdata.segments,\n\t\t\t\t\t\t\tdata.phiStart,\n\t\t\t\t\t\t\tdata.phiLength\n\t\t\t\t\t\t);\n\n\t\t\t\t\t\tbreak;\n\n\t\t\t\t\tcase 'BufferGeometry':\n\n\t\t\t\t\t\tgeometry = bufferGeometryLoader.parse( data );\n\n\t\t\t\t\t\tbreak;\n\n\t\t\t\t\tcase 'Geometry':\n\n\t\t\t\t\t\tgeometry = geometryLoader.parse( data.data, this.texturePath ).geometry;\n\n\t\t\t\t\t\tbreak;\n\n\t\t\t\t\tdefault:\n\n\t\t\t\t\t\tconsole.warn( 'THREE.ObjectLoader: Unsupported geometry type \"' + data.type + '\"' );\n\n\t\t\t\t\t\tcontinue;\n\n\t\t\t\t}\n\n\t\t\t\tgeometry.uuid = data.uuid;\n\n\t\t\t\tif ( data.name !== undefined ) geometry.name = data.name;\n\n\t\t\t\tgeometries[ data.uuid ] = geometry;\n\n\t\t\t}\n\n\t\t}\n\n\t\treturn geometries;\n\n\t},\n\n\tparseMaterials: function ( json, textures ) {\n\n\t\tvar materials = {};\n\n\t\tif ( json !== undefined ) {\n\n\t\t\tvar loader = new MaterialLoader();\n\t\t\tloader.setTextures( textures );\n\n\t\t\tfor ( var i = 0, l = json.length; i < l; i ++ ) {\n\n\t\t\t\tvar material = loader.parse( json[ i ] );\n\t\t\t\tmaterials[ material.uuid ] = material;\n\n\t\t\t}\n\n\t\t}\n\n\t\treturn materials;\n\n\t},\n\n\tparseAnimations: function ( json ) {\n\n\t\tvar animations = [];\n\n\t\tfor ( var i = 0; i < json.length; i ++ ) {\n\n\t\t\tvar clip = AnimationClip.parse( json[ i ] );\n\n\t\t\tanimations.push( clip );\n\n\t\t}\n\n\t\treturn animations;\n\n\t},\n\n\tparseImages: function ( json, onLoad ) {\n\n\t\tvar scope = this;\n\t\tvar images = {};\n\n\t\tfunction loadImage( url ) {\n\n\t\t\tscope.manager.itemStart( url );\n\n\t\t\treturn loader.load( url, function () {\n\n\t\t\t\tscope.manager.itemEnd( url );\n\n\t\t\t}, undefined, function () {\n\n\t\t\t\tscope.manager.itemError( url );\n\n\t\t\t} );\n\n\t\t}\n\n\t\tif ( json !== undefined && json.length > 0 ) {\n\n\t\t\tvar manager = new LoadingManager( onLoad );\n\n\t\t\tvar loader = new ImageLoader( manager );\n\t\t\tloader.setCrossOrigin( this.crossOrigin );\n\n\t\t\tfor ( var i = 0, l = json.length; i < l; i ++ ) {\n\n\t\t\t\tvar image = json[ i ];\n\t\t\t\tvar path = /^(\\/\\/)|([a-z]+:(\\/\\/)?)/i.test( image.url ) ? image.url : scope.texturePath + image.url;\n\n\t\t\t\timages[ image.uuid ] = loadImage( path );\n\n\t\t\t}\n\n\t\t}\n\n\t\treturn images;\n\n\t},\n\n\tparseTextures: function ( json, images ) {\n\n\t\tfunction parseConstant( value, type ) {\n\n\t\t\tif ( typeof( value ) === 'number' ) return value;\n\n\t\t\tconsole.warn( 'THREE.ObjectLoader.parseTexture: Constant should be in numeric form.', value );\n\n\t\t\treturn type[ value ];\n\n\t\t}\n\n\t\tvar textures = {};\n\n\t\tif ( json !== undefined ) {\n\n\t\t\tfor ( var i = 0, l = json.length; i < l; i ++ ) {\n\n\t\t\t\tvar data = json[ i ];\n\n\t\t\t\tif ( data.image === undefined ) {\n\n\t\t\t\t\tconsole.warn( 'THREE.ObjectLoader: No \"image\" specified for', data.uuid );\n\n\t\t\t\t}\n\n\t\t\t\tif ( images[ data.image ] === undefined ) {\n\n\t\t\t\t\tconsole.warn( 'THREE.ObjectLoader: Undefined image', data.image );\n\n\t\t\t\t}\n\n\t\t\t\tvar texture = new Texture( images[ data.image ] );\n\t\t\t\ttexture.needsUpdate = true;\n\n\t\t\t\ttexture.uuid = data.uuid;\n\n\t\t\t\tif ( data.name !== undefined ) texture.name = data.name;\n\n\t\t\t\tif ( data.mapping !== undefined ) texture.mapping = parseConstant( data.mapping, TextureMapping );\n\n\t\t\t\tif ( data.offset !== undefined ) texture.offset.fromArray( data.offset );\n\t\t\t\tif ( data.repeat !== undefined ) texture.repeat.fromArray( data.repeat );\n\t\t\t\tif ( data.wrap !== undefined ) {\n\n\t\t\t\t\ttexture.wrapS = parseConstant( data.wrap[ 0 ], TextureWrapping );\n\t\t\t\t\ttexture.wrapT = parseConstant( data.wrap[ 1 ], TextureWrapping );\n\n\t\t\t\t}\n\n\t\t\t\tif ( data.minFilter !== undefined ) texture.minFilter = parseConstant( data.minFilter, TextureFilter );\n\t\t\t\tif ( data.magFilter !== undefined ) texture.magFilter = parseConstant( data.magFilter, TextureFilter );\n\t\t\t\tif ( data.anisotropy !== undefined ) texture.anisotropy = data.anisotropy;\n\n\t\t\t\tif ( data.flipY !== undefined ) texture.flipY = data.flipY;\n\n\t\t\t\ttextures[ data.uuid ] = texture;\n\n\t\t\t}\n\n\t\t}\n\n\t\treturn textures;\n\n\t},\n\n\tparseObject: function () {\n\n\t\tvar matrix = new Matrix4();\n\n\t\treturn function parseObject( data, geometries, materials ) {\n\n\t\t\tvar object;\n\n\t\t\tfunction getGeometry( name ) {\n\n\t\t\t\tif ( geometries[ name ] === undefined ) {\n\n\t\t\t\t\tconsole.warn( 'THREE.ObjectLoader: Undefined geometry', name );\n\n\t\t\t\t}\n\n\t\t\t\treturn geometries[ name ];\n\n\t\t\t}\n\n\t\t\tfunction getMaterial( name ) {\n\n\t\t\t\tif ( name === undefined ) return undefined;\n\n\t\t\t\tif ( materials[ name ] === undefined ) {\n\n\t\t\t\t\tconsole.warn( 'THREE.ObjectLoader: Undefined material', name );\n\n\t\t\t\t}\n\n\t\t\t\treturn materials[ name ];\n\n\t\t\t}\n\n\t\t\tswitch ( data.type ) {\n\n\t\t\t\tcase 'Scene':\n\n\t\t\t\t\tobject = new Scene();\n\n\t\t\t\t\tif ( data.background !== undefined ) {\n\n\t\t\t\t\t\tif ( Number.isInteger( data.background ) ) {\n\n\t\t\t\t\t\t\tobject.background = new Color( data.background );\n\n\t\t\t\t\t\t}\n\n\t\t\t\t\t}\n\n\t\t\t\t\tif ( data.fog !== undefined ) {\n\n\t\t\t\t\t\tif ( data.fog.type === 'Fog' ) {\n\n\t\t\t\t\t\t\tobject.fog = new Fog( data.fog.color, data.fog.near, data.fog.far );\n\n\t\t\t\t\t\t} else if ( data.fog.type === 'FogExp2' ) {\n\n\t\t\t\t\t\t\tobject.fog = new FogExp2( data.fog.color, data.fog.density );\n\n\t\t\t\t\t\t}\n\n\t\t\t\t\t}\n\n\t\t\t\t\tbreak;\n\n\t\t\t\tcase 'PerspectiveCamera':\n\n\t\t\t\t\tobject = new PerspectiveCamera( data.fov, data.aspect, data.near, data.far );\n\n\t\t\t\t\tif ( data.focus !== undefined ) object.focus = data.focus;\n\t\t\t\t\tif ( data.zoom !== undefined ) object.zoom = data.zoom;\n\t\t\t\t\tif ( data.filmGauge !== undefined ) object.filmGauge = data.filmGauge;\n\t\t\t\t\tif ( data.filmOffset !== undefined ) object.filmOffset = data.filmOffset;\n\t\t\t\t\tif ( data.view !== undefined ) object.view = Object.assign( {}, data.view );\n\n\t\t\t\t\tbreak;\n\n\t\t\t\tcase 'OrthographicCamera':\n\n\t\t\t\t\tobject = new OrthographicCamera( data.left, data.right, data.top, data.bottom, data.near, data.far );\n\n\t\t\t\t\tbreak;\n\n\t\t\t\tcase 'AmbientLight':\n\n\t\t\t\t\tobject = new AmbientLight( data.color, data.intensity );\n\n\t\t\t\t\tbreak;\n\n\t\t\t\tcase 'DirectionalLight':\n\n\t\t\t\t\tobject = new DirectionalLight( data.color, data.intensity );\n\n\t\t\t\t\tbreak;\n\n\t\t\t\tcase 'PointLight':\n\n\t\t\t\t\tobject = new PointLight( data.color, data.intensity, data.distance, data.decay );\n\n\t\t\t\t\tbreak;\n\n\t\t\t\tcase 'SpotLight':\n\n\t\t\t\t\tobject = new SpotLight( data.color, data.intensity, data.distance, data.angle, data.penumbra, data.decay );\n\n\t\t\t\t\tbreak;\n\n\t\t\t\tcase 'HemisphereLight':\n\n\t\t\t\t\tobject = new HemisphereLight( data.color, data.groundColor, data.intensity );\n\n\t\t\t\t\tbreak;\n\n\t\t\t\tcase 'Mesh':\n\n\t\t\t\t\tvar geometry = getGeometry( data.geometry );\n\t\t\t\t\tvar material = getMaterial( data.material );\n\n\t\t\t\t\tif ( geometry.bones && geometry.bones.length > 0 ) {\n\n\t\t\t\t\t\tobject = new SkinnedMesh( geometry, material );\n\n\t\t\t\t\t} else {\n\n\t\t\t\t\t\tobject = new Mesh( geometry, material );\n\n\t\t\t\t\t}\n\n\t\t\t\t\tbreak;\n\n\t\t\t\tcase 'LOD':\n\n\t\t\t\t\tobject = new LOD();\n\n\t\t\t\t\tbreak;\n\n\t\t\t\tcase 'Line':\n\n\t\t\t\t\tobject = new Line( getGeometry( data.geometry ), getMaterial( data.material ), data.mode );\n\n\t\t\t\t\tbreak;\n\n\t\t\t\tcase 'LineSegments':\n\n\t\t\t\t\tobject = new LineSegments( getGeometry( data.geometry ), getMaterial( data.material ) );\n\n\t\t\t\t\tbreak;\n\n\t\t\t\tcase 'PointCloud':\n\t\t\t\tcase 'Points':\n\n\t\t\t\t\tobject = new Points( getGeometry( data.geometry ), getMaterial( data.material ) );\n\n\t\t\t\t\tbreak;\n\n\t\t\t\tcase 'Sprite':\n\n\t\t\t\t\tobject = new Sprite( getMaterial( data.material ) );\n\n\t\t\t\t\tbreak;\n\n\t\t\t\tcase 'Group':\n\n\t\t\t\t\tobject = new Group();\n\n\t\t\t\t\tbreak;\n\n\t\t\t\tdefault:\n\n\t\t\t\t\tobject = new Object3D();\n\n\t\t\t}\n\n\t\t\tobject.uuid = data.uuid;\n\n\t\t\tif ( data.name !== undefined ) object.name = data.name;\n\t\t\tif ( data.matrix !== undefined ) {\n\n\t\t\t\tmatrix.fromArray( data.matrix );\n\t\t\t\tmatrix.decompose( object.position, object.quaternion, object.scale );\n\n\t\t\t} else {\n\n\t\t\t\tif ( data.position !== undefined ) object.position.fromArray( data.position );\n\t\t\t\tif ( data.rotation !== undefined ) object.rotation.fromArray( data.rotation );\n\t\t\t\tif ( data.quaternion !== undefined ) object.quaternion.fromArray( data.quaternion );\n\t\t\t\tif ( data.scale !== undefined ) object.scale.fromArray( data.scale );\n\n\t\t\t}\n\n\t\t\tif ( data.castShadow !== undefined ) object.castShadow = data.castShadow;\n\t\t\tif ( data.receiveShadow !== undefined ) object.receiveShadow = data.receiveShadow;\n\n\t\t\tif ( data.shadow ) {\n\n\t\t\t\tif ( data.shadow.bias !== undefined ) object.shadow.bias = data.shadow.bias;\n\t\t\t\tif ( data.shadow.radius !== undefined ) object.shadow.radius = data.shadow.radius;\n\t\t\t\tif ( data.shadow.mapSize !== undefined ) object.shadow.mapSize.fromArray( data.shadow.mapSize );\n\t\t\t\tif ( data.shadow.camera !== undefined ) object.shadow.camera = this.parseObject( data.shadow.camera );\n\n\t\t\t}\n\n\t\t\tif ( data.visible !== undefined ) object.visible = data.visible;\n\t\t\tif ( data.userData !== undefined ) object.userData = data.userData;\n\n\t\t\tif ( data.children !== undefined ) {\n\n\t\t\t\tfor ( var child in data.children ) {\n\n\t\t\t\t\tobject.add( this.parseObject( data.children[ child ], geometries, materials ) );\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t\tif ( data.type === 'LOD' ) {\n\n\t\t\t\tvar levels = data.levels;\n\n\t\t\t\tfor ( var l = 0; l < levels.length; l ++ ) {\n\n\t\t\t\t\tvar level = levels[ l ];\n\t\t\t\t\tvar child = object.getObjectByProperty( 'uuid', level.object );\n\n\t\t\t\t\tif ( child !== undefined ) {\n\n\t\t\t\t\t\tobject.addLevel( child, level.distance );\n\n\t\t\t\t\t}\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t\treturn object;\n\n\t\t};\n\n\t}()\n\n} );\n\n\nexport { ObjectLoader };\n","import { _Math } from '../../math/Math';\nimport { Vector3 } from '../../math/Vector3';\nimport { Matrix4 } from '../../math/Matrix4';\n\n/**\n * @author zz85 / http://www.lab4games.net/zz85/blog\n * Extensible curve object\n *\n * Some common of Curve methods\n * .getPoint(t), getTangent(t)\n * .getPointAt(u), getTangentAt(u)\n * .getPoints(), .getSpacedPoints()\n * .getLength()\n * .updateArcLengths()\n *\n * This following classes subclasses THREE.Curve:\n *\n * -- 2d classes --\n * THREE.LineCurve\n * THREE.QuadraticBezierCurve\n * THREE.CubicBezierCurve\n * THREE.SplineCurve\n * THREE.ArcCurve\n * THREE.EllipseCurve\n *\n * -- 3d classes --\n * THREE.LineCurve3\n * THREE.QuadraticBezierCurve3\n * THREE.CubicBezierCurve3\n * THREE.SplineCurve3\n *\n * A series of curves can be represented as a THREE.CurvePath\n *\n **/\n\n/**************************************************************\n *\tAbstract Curve base class\n **************************************************************/\n\nfunction Curve() {}\n\nCurve.prototype = {\n\n\tconstructor: Curve,\n\n\t// Virtual base class method to overwrite and implement in subclasses\n\t//\t- t [0 .. 1]\n\n\tgetPoint: function ( t ) {\n\n\t\tconsole.warn( \"THREE.Curve: Warning, getPoint() not implemented!\" );\n\t\treturn null;\n\n\t},\n\n\t// Get point at relative position in curve according to arc length\n\t// - u [0 .. 1]\n\n\tgetPointAt: function ( u ) {\n\n\t\tvar t = this.getUtoTmapping( u );\n\t\treturn this.getPoint( t );\n\n\t},\n\n\t// Get sequence of points using getPoint( t )\n\n\tgetPoints: function ( divisions ) {\n\n\t\tif ( ! divisions ) divisions = 5;\n\n\t\tvar points = [];\n\n\t\tfor ( var d = 0; d <= divisions; d ++ ) {\n\n\t\t\tpoints.push( this.getPoint( d / divisions ) );\n\n\t\t}\n\n\t\treturn points;\n\n\t},\n\n\t// Get sequence of points using getPointAt( u )\n\n\tgetSpacedPoints: function ( divisions ) {\n\n\t\tif ( ! divisions ) divisions = 5;\n\n\t\tvar points = [];\n\n\t\tfor ( var d = 0; d <= divisions; d ++ ) {\n\n\t\t\tpoints.push( this.getPointAt( d / divisions ) );\n\n\t\t}\n\n\t\treturn points;\n\n\t},\n\n\t// Get total curve arc length\n\n\tgetLength: function () {\n\n\t\tvar lengths = this.getLengths();\n\t\treturn lengths[ lengths.length - 1 ];\n\n\t},\n\n\t// Get list of cumulative segment lengths\n\n\tgetLengths: function ( divisions ) {\n\n\t\tif ( ! divisions ) divisions = ( this.__arcLengthDivisions ) ? ( this.__arcLengthDivisions ) : 200;\n\n\t\tif ( this.cacheArcLengths\n\t\t\t&& ( this.cacheArcLengths.length === divisions + 1 )\n\t\t\t&& ! this.needsUpdate ) {\n\n\t\t\t//console.log( \"cached\", this.cacheArcLengths );\n\t\t\treturn this.cacheArcLengths;\n\n\t\t}\n\n\t\tthis.needsUpdate = false;\n\n\t\tvar cache = [];\n\t\tvar current, last = this.getPoint( 0 );\n\t\tvar p, sum = 0;\n\n\t\tcache.push( 0 );\n\n\t\tfor ( p = 1; p <= divisions; p ++ ) {\n\n\t\t\tcurrent = this.getPoint ( p / divisions );\n\t\t\tsum += current.distanceTo( last );\n\t\t\tcache.push( sum );\n\t\t\tlast = current;\n\n\t\t}\n\n\t\tthis.cacheArcLengths = cache;\n\n\t\treturn cache; // { sums: cache, sum:sum }; Sum is in the last element.\n\n\t},\n\n\tupdateArcLengths: function() {\n\n\t\tthis.needsUpdate = true;\n\t\tthis.getLengths();\n\n\t},\n\n\t// Given u ( 0 .. 1 ), get a t to find p. This gives you points which are equidistant\n\n\tgetUtoTmapping: function ( u, distance ) {\n\n\t\tvar arcLengths = this.getLengths();\n\n\t\tvar i = 0, il = arcLengths.length;\n\n\t\tvar targetArcLength; // The targeted u distance value to get\n\n\t\tif ( distance ) {\n\n\t\t\ttargetArcLength = distance;\n\n\t\t} else {\n\n\t\t\ttargetArcLength = u * arcLengths[ il - 1 ];\n\n\t\t}\n\n\t\t//var time = Date.now();\n\n\t\t// binary search for the index with largest value smaller than target u distance\n\n\t\tvar low = 0, high = il - 1, comparison;\n\n\t\twhile ( low <= high ) {\n\n\t\t\ti = Math.floor( low + ( high - low ) / 2 ); // less likely to overflow, though probably not issue here, JS doesn't really have integers, all numbers are floats\n\n\t\t\tcomparison = arcLengths[ i ] - targetArcLength;\n\n\t\t\tif ( comparison < 0 ) {\n\n\t\t\t\tlow = i + 1;\n\n\t\t\t} else if ( comparison > 0 ) {\n\n\t\t\t\thigh = i - 1;\n\n\t\t\t} else {\n\n\t\t\t\thigh = i;\n\t\t\t\tbreak;\n\n\t\t\t\t// DONE\n\n\t\t\t}\n\n\t\t}\n\n\t\ti = high;\n\n\t\t//console.log('b' , i, low, high, Date.now()- time);\n\n\t\tif ( arcLengths[ i ] === targetArcLength ) {\n\n\t\t\tvar t = i / ( il - 1 );\n\t\t\treturn t;\n\n\t\t}\n\n\t\t// we could get finer grain at lengths, or use simple interpolation between two points\n\n\t\tvar lengthBefore = arcLengths[ i ];\n\t\tvar lengthAfter = arcLengths[ i + 1 ];\n\n\t\tvar segmentLength = lengthAfter - lengthBefore;\n\n\t\t// determine where we are between the 'before' and 'after' points\n\n\t\tvar segmentFraction = ( targetArcLength - lengthBefore ) / segmentLength;\n\n\t\t// add that fractional amount to t\n\n\t\tvar t = ( i + segmentFraction ) / ( il - 1 );\n\n\t\treturn t;\n\n\t},\n\n\t// Returns a unit vector tangent at t\n\t// In case any sub curve does not implement its tangent derivation,\n\t// 2 points a small delta apart will be used to find its gradient\n\t// which seems to give a reasonable approximation\n\n\tgetTangent: function( t ) {\n\n\t\tvar delta = 0.0001;\n\t\tvar t1 = t - delta;\n\t\tvar t2 = t + delta;\n\n\t\t// Capping in case of danger\n\n\t\tif ( t1 < 0 ) t1 = 0;\n\t\tif ( t2 > 1 ) t2 = 1;\n\n\t\tvar pt1 = this.getPoint( t1 );\n\t\tvar pt2 = this.getPoint( t2 );\n\n\t\tvar vec = pt2.clone().sub( pt1 );\n\t\treturn vec.normalize();\n\n\t},\n\n\tgetTangentAt: function ( u ) {\n\n\t\tvar t = this.getUtoTmapping( u );\n\t\treturn this.getTangent( t );\n\n\t},\n\n\tcomputeFrenetFrames: function ( segments, closed ) {\n\n\t\t// see http://www.cs.indiana.edu/pub/techreports/TR425.pdf\n\n\t\tvar normal = new Vector3();\n\n\t\tvar tangents = [];\n\t\tvar normals = [];\n\t\tvar binormals = [];\n\n\t\tvar vec = new Vector3();\n\t\tvar mat = new Matrix4();\n\n\t\tvar i, u, theta;\n\n\t\t// compute the tangent vectors for each segment on the curve\n\n\t\tfor ( i = 0; i <= segments; i ++ ) {\n\n\t\t\tu = i / segments;\n\n\t\t\ttangents[ i ] = this.getTangentAt( u );\n\t\t\ttangents[ i ].normalize();\n\n\t\t}\n\n\t\t// select an initial normal vector perpendicular to the first tangent vector,\n\t\t// and in the direction of the minimum tangent xyz component\n\n\t\tnormals[ 0 ] = new Vector3();\n\t\tbinormals[ 0 ] = new Vector3();\n\t\tvar min = Number.MAX_VALUE;\n\t\tvar tx = Math.abs( tangents[ 0 ].x );\n\t\tvar ty = Math.abs( tangents[ 0 ].y );\n\t\tvar tz = Math.abs( tangents[ 0 ].z );\n\n\t\tif ( tx <= min ) {\n\n\t\t\tmin = tx;\n\t\t\tnormal.set( 1, 0, 0 );\n\n\t\t}\n\n\t\tif ( ty <= min ) {\n\n\t\t\tmin = ty;\n\t\t\tnormal.set( 0, 1, 0 );\n\n\t\t}\n\n\t\tif ( tz <= min ) {\n\n\t\t\tnormal.set( 0, 0, 1 );\n\n\t\t}\n\n\t\tvec.crossVectors( tangents[ 0 ], normal ).normalize();\n\n\t\tnormals[ 0 ].crossVectors( tangents[ 0 ], vec );\n\t\tbinormals[ 0 ].crossVectors( tangents[ 0 ], normals[ 0 ] );\n\n\n\t\t// compute the slowly-varying normal and binormal vectors for each segment on the curve\n\n\t\tfor ( i = 1; i <= segments; i ++ ) {\n\n\t\t\tnormals[ i ] = normals[ i - 1 ].clone();\n\n\t\t\tbinormals[ i ] = binormals[ i - 1 ].clone();\n\n\t\t\tvec.crossVectors( tangents[ i - 1 ], tangents[ i ] );\n\n\t\t\tif ( vec.length() > Number.EPSILON ) {\n\n\t\t\t\tvec.normalize();\n\n\t\t\t\ttheta = Math.acos( _Math.clamp( tangents[ i - 1 ].dot( tangents[ i ] ), - 1, 1 ) ); // clamp for floating pt errors\n\n\t\t\t\tnormals[ i ].applyMatrix4( mat.makeRotationAxis( vec, theta ) );\n\n\t\t\t}\n\n\t\t\tbinormals[ i ].crossVectors( tangents[ i ], normals[ i ] );\n\n\t\t}\n\n\t\t// if the curve is closed, postprocess the vectors so the first and last normal vectors are the same\n\n\t\tif ( closed === true ) {\n\n\t\t\ttheta = Math.acos( _Math.clamp( normals[ 0 ].dot( normals[ segments ] ), - 1, 1 ) );\n\t\t\ttheta /= segments;\n\n\t\t\tif ( tangents[ 0 ].dot( vec.crossVectors( normals[ 0 ], normals[ segments ] ) ) > 0 ) {\n\n\t\t\t\ttheta = - theta;\n\n\t\t\t}\n\n\t\t\tfor ( i = 1; i <= segments; i ++ ) {\n\n\t\t\t\t// twist a little...\n\t\t\t\tnormals[ i ].applyMatrix4( mat.makeRotationAxis( tangents[ i ], theta * i ) );\n\t\t\t\tbinormals[ i ].crossVectors( tangents[ i ], normals[ i ] );\n\n\t\t\t}\n\n\t\t}\n\n\t\treturn {\n\t\t\ttangents: tangents,\n\t\t\tnormals: normals,\n\t\t\tbinormals: binormals\n\t\t};\n\n\t}\n\n};\n\n// TODO: Transformation for Curves?\n\n/**************************************************************\n *\t3D Curves\n **************************************************************/\n\n// A Factory method for creating new curve subclasses\n\nCurve.create = function ( constructor, getPointFunc ) {\n\n\tconstructor.prototype = Object.create( Curve.prototype );\n\tconstructor.prototype.constructor = constructor;\n\tconstructor.prototype.getPoint = getPointFunc;\n\n\treturn constructor;\n\n};\n\n\nexport { Curve };\n","import { Curve } from '../core/Curve';\n\n/**************************************************************\n *\tLine\n **************************************************************/\n\nfunction LineCurve( v1, v2 ) {\n\n\tthis.v1 = v1;\n\tthis.v2 = v2;\n\n}\n\nLineCurve.prototype = Object.create( Curve.prototype );\nLineCurve.prototype.constructor = LineCurve;\n\nLineCurve.prototype.isLineCurve = true;\n\nLineCurve.prototype.getPoint = function ( t ) {\n\n\tif ( t === 1 ) {\n\n\t\treturn this.v2.clone();\n\n\t}\n\n\tvar point = this.v2.clone().sub( this.v1 );\n\tpoint.multiplyScalar( t ).add( this.v1 );\n\n\treturn point;\n\n};\n\n// Line curve is linear, so we can overwrite default getPointAt\n\nLineCurve.prototype.getPointAt = function ( u ) {\n\n\treturn this.getPoint( u );\n\n};\n\nLineCurve.prototype.getTangent = function( t ) {\n\n\tvar tangent = this.v2.clone().sub( this.v1 );\n\n\treturn tangent.normalize();\n\n};\n\n\nexport { LineCurve };\n","import { Curve } from './Curve';\nimport { Vector3 } from '../../math/Vector3';\nimport { Geometry } from '../../core/Geometry';\nimport { LineCurve } from '../curves/LineCurve';\n\n/**\n * @author zz85 / http://www.lab4games.net/zz85/blog\n *\n **/\n\n/**************************************************************\n *\tCurved Path - a curve path is simply a array of connected\n * curves, but retains the api of a curve\n **************************************************************/\n\nfunction CurvePath() {\n\n\tthis.curves = [];\n\n\tthis.autoClose = false; // Automatically closes the path\n\n}\n\nCurvePath.prototype = Object.assign( Object.create( Curve.prototype ), {\n\n\tconstructor: CurvePath,\n\n\tadd: function ( curve ) {\n\n\t\tthis.curves.push( curve );\n\n\t},\n\n\tclosePath: function () {\n\n\t\t// Add a line curve if start and end of lines are not connected\n\t\tvar startPoint = this.curves[ 0 ].getPoint( 0 );\n\t\tvar endPoint = this.curves[ this.curves.length - 1 ].getPoint( 1 );\n\n\t\tif ( ! startPoint.equals( endPoint ) ) {\n\n\t\t\tthis.curves.push( new LineCurve( endPoint, startPoint ) );\n\n\t\t}\n\n\t},\n\n\t// To get accurate point with reference to\n\t// entire path distance at time t,\n\t// following has to be done:\n\n\t// 1. Length of each sub path have to be known\n\t// 2. Locate and identify type of curve\n\t// 3. Get t for the curve\n\t// 4. Return curve.getPointAt(t')\n\n\tgetPoint: function ( t ) {\n\n\t\tvar d = t * this.getLength();\n\t\tvar curveLengths = this.getCurveLengths();\n\t\tvar i = 0;\n\n\t\t// To think about boundaries points.\n\n\t\twhile ( i < curveLengths.length ) {\n\n\t\t\tif ( curveLengths[ i ] >= d ) {\n\n\t\t\t\tvar diff = curveLengths[ i ] - d;\n\t\t\t\tvar curve = this.curves[ i ];\n\n\t\t\t\tvar segmentLength = curve.getLength();\n\t\t\t\tvar u = segmentLength === 0 ? 0 : 1 - diff / segmentLength;\n\n\t\t\t\treturn curve.getPointAt( u );\n\n\t\t\t}\n\n\t\t\ti ++;\n\n\t\t}\n\n\t\treturn null;\n\n\t\t// loop where sum != 0, sum > d , sum+1 1 && !points[ points.length - 1 ].equals( points[ 0 ] ) ) {\n\n\t\t\tpoints.push( points[ 0 ] );\n\n\t\t}\n\n\t\treturn points;\n\n\t},\n\n\t/**************************************************************\n\t *\tCreate Geometries Helpers\n\t **************************************************************/\n\n\t/// Generate geometry from path points (for Line or Points objects)\n\n\tcreatePointsGeometry: function ( divisions ) {\n\n\t\tvar pts = this.getPoints( divisions );\n\t\treturn this.createGeometry( pts );\n\n\t},\n\n\t// Generate geometry from equidistant sampling along the path\n\n\tcreateSpacedPointsGeometry: function ( divisions ) {\n\n\t\tvar pts = this.getSpacedPoints( divisions );\n\t\treturn this.createGeometry( pts );\n\n\t},\n\n\tcreateGeometry: function ( points ) {\n\n\t\tvar geometry = new Geometry();\n\n\t\tfor ( var i = 0, l = points.length; i < l; i ++ ) {\n\n\t\t\tvar point = points[ i ];\n\t\t\tgeometry.vertices.push( new Vector3( point.x, point.y, point.z || 0 ) );\n\n\t\t}\n\n\t\treturn geometry;\n\n\t}\n\n} );\n\n\nexport { CurvePath };\n","import { Curve } from '../core/Curve';\nimport { Vector2 } from '../../math/Vector2';\n\n/**************************************************************\n *\tEllipse curve\n **************************************************************/\n\nfunction EllipseCurve( aX, aY, xRadius, yRadius, aStartAngle, aEndAngle, aClockwise, aRotation ) {\n\n\tthis.aX = aX;\n\tthis.aY = aY;\n\n\tthis.xRadius = xRadius;\n\tthis.yRadius = yRadius;\n\n\tthis.aStartAngle = aStartAngle;\n\tthis.aEndAngle = aEndAngle;\n\n\tthis.aClockwise = aClockwise;\n\n\tthis.aRotation = aRotation || 0;\n\n}\n\nEllipseCurve.prototype = Object.create( Curve.prototype );\nEllipseCurve.prototype.constructor = EllipseCurve;\n\nEllipseCurve.prototype.isEllipseCurve = true;\n\nEllipseCurve.prototype.getPoint = function( t ) {\n\n\tvar twoPi = Math.PI * 2;\n\tvar deltaAngle = this.aEndAngle - this.aStartAngle;\n\tvar samePoints = Math.abs( deltaAngle ) < Number.EPSILON;\n\n\t// ensures that deltaAngle is 0 .. 2 PI\n\twhile ( deltaAngle < 0 ) deltaAngle += twoPi;\n\twhile ( deltaAngle > twoPi ) deltaAngle -= twoPi;\n\n\tif ( deltaAngle < Number.EPSILON ) {\n\n\t\tif ( samePoints ) {\n\n\t\t\tdeltaAngle = 0;\n\n\t\t} else {\n\n\t\t\tdeltaAngle = twoPi;\n\n\t\t}\n\n\t}\n\n\tif ( this.aClockwise === true && ! samePoints ) {\n\n\t\tif ( deltaAngle === twoPi ) {\n\n\t\t\tdeltaAngle = - twoPi;\n\n\t\t} else {\n\n\t\t\tdeltaAngle = deltaAngle - twoPi;\n\n\t\t}\n\n\t}\n\n\tvar angle = this.aStartAngle + t * deltaAngle;\n\tvar x = this.aX + this.xRadius * Math.cos( angle );\n\tvar y = this.aY + this.yRadius * Math.sin( angle );\n\n\tif ( this.aRotation !== 0 ) {\n\n\t\tvar cos = Math.cos( this.aRotation );\n\t\tvar sin = Math.sin( this.aRotation );\n\n\t\tvar tx = x - this.aX;\n\t\tvar ty = y - this.aY;\n\n\t\t// Rotate the point about the center of the ellipse.\n\t\tx = tx * cos - ty * sin + this.aX;\n\t\ty = tx * sin + ty * cos + this.aY;\n\n\t}\n\n\treturn new Vector2( x, y );\n\n};\n\n\nexport { EllipseCurve };\n","/**\n * @author zz85 / http://www.lab4games.net/zz85/blog\n */\n\nvar CurveUtils = {\n\n\ttangentQuadraticBezier: function ( t, p0, p1, p2 ) {\n\n\t\treturn 2 * ( 1 - t ) * ( p1 - p0 ) + 2 * t * ( p2 - p1 );\n\n\t},\n\n\t// Puay Bing, thanks for helping with this derivative!\n\n\ttangentCubicBezier: function ( t, p0, p1, p2, p3 ) {\n\n\t\treturn - 3 * p0 * ( 1 - t ) * ( 1 - t ) +\n\t\t\t3 * p1 * ( 1 - t ) * ( 1 - t ) - 6 * t * p1 * ( 1 - t ) +\n\t\t\t6 * t * p2 * ( 1 - t ) - 3 * t * t * p2 +\n\t\t\t3 * t * t * p3;\n\n\t},\n\n\ttangentSpline: function ( t, p0, p1, p2, p3 ) {\n\n\t\t// To check if my formulas are correct\n\n\t\tvar h00 = 6 * t * t - 6 * t; \t// derived from 2t^3 − 3t^2 + 1\n\t\tvar h10 = 3 * t * t - 4 * t + 1; // t^3 − 2t^2 + t\n\t\tvar h01 = - 6 * t * t + 6 * t; \t// − 2t3 + 3t2\n\t\tvar h11 = 3 * t * t - 2 * t;\t// t3 − t2\n\n\t\treturn h00 + h10 + h01 + h11;\n\n\t},\n\n\t// Catmull-Rom\n\n\tinterpolate: function( p0, p1, p2, p3, t ) {\n\n\t\tvar v0 = ( p2 - p0 ) * 0.5;\n\t\tvar v1 = ( p3 - p1 ) * 0.5;\n\t\tvar t2 = t * t;\n\t\tvar t3 = t * t2;\n\t\treturn ( 2 * p1 - 2 * p2 + v0 + v1 ) * t3 + ( - 3 * p1 + 3 * p2 - 2 * v0 - v1 ) * t2 + v0 * t + p1;\n\n\t}\n\n};\n\n\nexport { CurveUtils };\n","import { Curve } from '../core/Curve';\nimport { Vector2 } from '../../math/Vector2';\nimport { CurveUtils } from '../CurveUtils';\n\n/**************************************************************\n *\tSpline curve\n **************************************************************/\n\nfunction SplineCurve( points /* array of Vector2 */ ) {\n\n\tthis.points = ( points === undefined ) ? [] : points;\n\n}\n\nSplineCurve.prototype = Object.create( Curve.prototype );\nSplineCurve.prototype.constructor = SplineCurve;\n\nSplineCurve.prototype.isSplineCurve = true;\n\nSplineCurve.prototype.getPoint = function ( t ) {\n\n\tvar points = this.points;\n\tvar point = ( points.length - 1 ) * t;\n\n\tvar intPoint = Math.floor( point );\n\tvar weight = point - intPoint;\n\n\tvar point0 = points[ intPoint === 0 ? intPoint : intPoint - 1 ];\n\tvar point1 = points[ intPoint ];\n\tvar point2 = points[ intPoint > points.length - 2 ? points.length - 1 : intPoint + 1 ];\n\tvar point3 = points[ intPoint > points.length - 3 ? points.length - 1 : intPoint + 2 ];\n\n\tvar interpolate = CurveUtils.interpolate;\n\n\treturn new Vector2(\n\t\tinterpolate( point0.x, point1.x, point2.x, point3.x, weight ),\n\t\tinterpolate( point0.y, point1.y, point2.y, point3.y, weight )\n\t);\n\n};\n\n\nexport { SplineCurve };\n","import { Curve } from '../core/Curve';\nimport { Vector2 } from '../../math/Vector2';\nimport { CurveUtils } from '../CurveUtils';\nimport { ShapeUtils } from '../ShapeUtils';\n\n/**************************************************************\n *\tCubic Bezier curve\n **************************************************************/\n\nfunction CubicBezierCurve( v0, v1, v2, v3 ) {\n\n\tthis.v0 = v0;\n\tthis.v1 = v1;\n\tthis.v2 = v2;\n\tthis.v3 = v3;\n\n}\n\nCubicBezierCurve.prototype = Object.create( Curve.prototype );\nCubicBezierCurve.prototype.constructor = CubicBezierCurve;\n\nCubicBezierCurve.prototype.getPoint = function ( t ) {\n\n\tvar b3 = ShapeUtils.b3;\n\n\treturn new Vector2(\n\t\tb3( t, this.v0.x, this.v1.x, this.v2.x, this.v3.x ),\n\t\tb3( t, this.v0.y, this.v1.y, this.v2.y, this.v3.y )\n\t);\n\n};\n\nCubicBezierCurve.prototype.getTangent = function( t ) {\n\n\tvar tangentCubicBezier = CurveUtils.tangentCubicBezier;\n\n\treturn new Vector2(\n\t\ttangentCubicBezier( t, this.v0.x, this.v1.x, this.v2.x, this.v3.x ),\n\t\ttangentCubicBezier( t, this.v0.y, this.v1.y, this.v2.y, this.v3.y )\n\t).normalize();\n\n};\n\n\nexport { CubicBezierCurve };\n","import { Curve } from '../core/Curve';\nimport { Vector2 } from '../../math/Vector2';\nimport { CurveUtils } from '../CurveUtils';\nimport { ShapeUtils } from '../ShapeUtils';\n\n/**************************************************************\n *\tQuadratic Bezier curve\n **************************************************************/\n\n\nfunction QuadraticBezierCurve( v0, v1, v2 ) {\n\n\tthis.v0 = v0;\n\tthis.v1 = v1;\n\tthis.v2 = v2;\n\n}\n\nQuadraticBezierCurve.prototype = Object.create( Curve.prototype );\nQuadraticBezierCurve.prototype.constructor = QuadraticBezierCurve;\n\n\nQuadraticBezierCurve.prototype.getPoint = function ( t ) {\n\n\tvar b2 = ShapeUtils.b2;\n\n\treturn new Vector2(\n\t\tb2( t, this.v0.x, this.v1.x, this.v2.x ),\n\t\tb2( t, this.v0.y, this.v1.y, this.v2.y )\n\t);\n\n};\n\n\nQuadraticBezierCurve.prototype.getTangent = function( t ) {\n\n\tvar tangentQuadraticBezier = CurveUtils.tangentQuadraticBezier;\n\n\treturn new Vector2(\n\t\ttangentQuadraticBezier( t, this.v0.x, this.v1.x, this.v2.x ),\n\t\ttangentQuadraticBezier( t, this.v0.y, this.v1.y, this.v2.y )\n\t).normalize();\n\n};\n\n\nexport { QuadraticBezierCurve };\n","import { CurvePath } from './CurvePath';\nimport { EllipseCurve } from '../curves/EllipseCurve';\nimport { SplineCurve } from '../curves/SplineCurve';\nimport { Vector2 } from '../../math/Vector2';\nimport { CubicBezierCurve } from '../curves/CubicBezierCurve';\nimport { QuadraticBezierCurve } from '../curves/QuadraticBezierCurve';\nimport { LineCurve } from '../curves/LineCurve';\n\nvar PathPrototype = Object.assign( Object.create( CurvePath.prototype ), {\n\n\tfromPoints: function ( vectors ) {\n\n\t\tthis.moveTo( vectors[ 0 ].x, vectors[ 0 ].y );\n\n\t\tfor ( var i = 1, l = vectors.length; i < l; i ++ ) {\n\n\t\t\tthis.lineTo( vectors[ i ].x, vectors[ i ].y );\n\n\t\t}\n\n\t},\n\n\tmoveTo: function ( x, y ) {\n\n\t\tthis.currentPoint.set( x, y ); // TODO consider referencing vectors instead of copying?\n\n\t},\n\n\tlineTo: function ( x, y ) {\n\n\t\tvar curve = new LineCurve( this.currentPoint.clone(), new Vector2( x, y ) );\n\t\tthis.curves.push( curve );\n\n\t\tthis.currentPoint.set( x, y );\n\n\t},\n\n\tquadraticCurveTo: function ( aCPx, aCPy, aX, aY ) {\n\n\t\tvar curve = new QuadraticBezierCurve(\n\t\t\tthis.currentPoint.clone(),\n\t\t\tnew Vector2( aCPx, aCPy ),\n\t\t\tnew Vector2( aX, aY )\n\t\t);\n\n\t\tthis.curves.push( curve );\n\n\t\tthis.currentPoint.set( aX, aY );\n\n\t},\n\n\tbezierCurveTo: function ( aCP1x, aCP1y, aCP2x, aCP2y, aX, aY ) {\n\n\t\tvar curve = new CubicBezierCurve(\n\t\t\tthis.currentPoint.clone(),\n\t\t\tnew Vector2( aCP1x, aCP1y ),\n\t\t\tnew Vector2( aCP2x, aCP2y ),\n\t\t\tnew Vector2( aX, aY )\n\t\t);\n\n\t\tthis.curves.push( curve );\n\n\t\tthis.currentPoint.set( aX, aY );\n\n\t},\n\n\tsplineThru: function ( pts /*Array of Vector*/ ) {\n\n\t\tvar npts = [ this.currentPoint.clone() ].concat( pts );\n\n\t\tvar curve = new SplineCurve( npts );\n\t\tthis.curves.push( curve );\n\n\t\tthis.currentPoint.copy( pts[ pts.length - 1 ] );\n\n\t},\n\n\tarc: function ( aX, aY, aRadius, aStartAngle, aEndAngle, aClockwise ) {\n\n\t\tvar x0 = this.currentPoint.x;\n\t\tvar y0 = this.currentPoint.y;\n\n\t\tthis.absarc( aX + x0, aY + y0, aRadius,\n\t\t\taStartAngle, aEndAngle, aClockwise );\n\n\t},\n\n\tabsarc: function ( aX, aY, aRadius, aStartAngle, aEndAngle, aClockwise ) {\n\n\t\tthis.absellipse( aX, aY, aRadius, aRadius, aStartAngle, aEndAngle, aClockwise );\n\n\t},\n\n\tellipse: function ( aX, aY, xRadius, yRadius, aStartAngle, aEndAngle, aClockwise, aRotation ) {\n\n\t\tvar x0 = this.currentPoint.x;\n\t\tvar y0 = this.currentPoint.y;\n\n\t\tthis.absellipse( aX + x0, aY + y0, xRadius, yRadius, aStartAngle, aEndAngle, aClockwise, aRotation );\n\n\t},\n\n\tabsellipse: function ( aX, aY, xRadius, yRadius, aStartAngle, aEndAngle, aClockwise, aRotation ) {\n\n\t\tvar curve = new EllipseCurve( aX, aY, xRadius, yRadius, aStartAngle, aEndAngle, aClockwise, aRotation );\n\n\t\tif ( this.curves.length > 0 ) {\n\n\t\t\t// if a previous curve is present, attempt to join\n\t\t\tvar firstPoint = curve.getPoint( 0 );\n\n\t\t\tif ( ! firstPoint.equals( this.currentPoint ) ) {\n\n\t\t\t\tthis.lineTo( firstPoint.x, firstPoint.y );\n\n\t\t\t}\n\n\t\t}\n\n\t\tthis.curves.push( curve );\n\n\t\tvar lastPoint = curve.getPoint( 1 );\n\t\tthis.currentPoint.copy( lastPoint );\n\n\t}\n\n} );\n\nexport { PathPrototype };\n","import { PathPrototype } from './PathPrototype';\nimport { Path } from './Path';\n\n/**\n * @author zz85 / http://www.lab4games.net/zz85/blog\n * Defines a 2d shape plane using paths.\n **/\n\n// STEP 1 Create a path.\n// STEP 2 Turn path into shape.\n// STEP 3 ExtrudeGeometry takes in Shape/Shapes\n// STEP 3a - Extract points from each shape, turn to vertices\n// STEP 3b - Triangulate each shape, add faces.\n\nfunction Shape() {\n\n\tPath.apply( this, arguments );\n\n\tthis.holes = [];\n\n}\n\nShape.prototype = Object.assign( Object.create( PathPrototype ), {\n\n\tconstructor: Shape,\n\n\tgetPointsHoles: function ( divisions ) {\n\n\t\tvar holesPts = [];\n\n\t\tfor ( var i = 0, l = this.holes.length; i < l; i ++ ) {\n\n\t\t\tholesPts[ i ] = this.holes[ i ].getPoints( divisions );\n\n\t\t}\n\n\t\treturn holesPts;\n\n\t},\n\n\t// Get points of shape and holes (keypoints based on segments parameter)\n\n\textractAllPoints: function ( divisions ) {\n\n\t\treturn {\n\n\t\t\tshape: this.getPoints( divisions ),\n\t\t\tholes: this.getPointsHoles( divisions )\n\n\t\t};\n\n\t},\n\n\textractPoints: function ( divisions ) {\n\n\t\treturn this.extractAllPoints( divisions );\n\n\t}\n\n} );\n\n\nexport { Shape };\n","import { PathPrototype } from './PathPrototype';\nimport { Shape } from './Shape';\nimport { ShapeUtils } from '../ShapeUtils';\nimport { Vector2 } from '../../math/Vector2';\nimport { CurvePath } from './CurvePath';\n\n/**\n * @author zz85 / http://www.lab4games.net/zz85/blog\n * Creates free form 2d path using series of points, lines or curves.\n *\n **/\n\nfunction Path( points ) {\n\n\tCurvePath.call( this );\n\tthis.currentPoint = new Vector2();\n\n\tif ( points ) {\n\n\t\tthis.fromPoints( points );\n\n\t}\n\n}\n\nPath.prototype = PathPrototype;\nPathPrototype.constructor = Path;\n\n\n// minimal class for proxing functions to Path. Replaces old \"extractSubpaths()\"\nfunction ShapePath() {\n\tthis.subPaths = [];\n\tthis.currentPath = null;\n}\n\nShapePath.prototype = {\n\tmoveTo: function ( x, y ) {\n\t\tthis.currentPath = new Path();\n\t\tthis.subPaths.push(this.currentPath);\n\t\tthis.currentPath.moveTo( x, y );\n\t},\n\tlineTo: function ( x, y ) {\n\t\tthis.currentPath.lineTo( x, y );\n\t},\n\tquadraticCurveTo: function ( aCPx, aCPy, aX, aY ) {\n\t\tthis.currentPath.quadraticCurveTo( aCPx, aCPy, aX, aY );\n\t},\n\tbezierCurveTo: function ( aCP1x, aCP1y, aCP2x, aCP2y, aX, aY ) {\n\t\tthis.currentPath.bezierCurveTo( aCP1x, aCP1y, aCP2x, aCP2y, aX, aY );\n\t},\n\tsplineThru: function ( pts ) {\n\t\tthis.currentPath.splineThru( pts );\n\t},\n\n\ttoShapes: function ( isCCW, noHoles ) {\n\n\t\tfunction toShapesNoHoles( inSubpaths ) {\n\n\t\t\tvar shapes = [];\n\n\t\t\tfor ( var i = 0, l = inSubpaths.length; i < l; i ++ ) {\n\n\t\t\t\tvar tmpPath = inSubpaths[ i ];\n\n\t\t\t\tvar tmpShape = new Shape();\n\t\t\t\ttmpShape.curves = tmpPath.curves;\n\n\t\t\t\tshapes.push( tmpShape );\n\n\t\t\t}\n\n\t\t\treturn shapes;\n\n\t\t}\n\n\t\tfunction isPointInsidePolygon( inPt, inPolygon ) {\n\n\t\t\tvar polyLen = inPolygon.length;\n\n\t\t\t// inPt on polygon contour => immediate success or\n\t\t\t// toggling of inside/outside at every single! intersection point of an edge\n\t\t\t// with the horizontal line through inPt, left of inPt\n\t\t\t// not counting lowerY endpoints of edges and whole edges on that line\n\t\t\tvar inside = false;\n\t\t\tfor ( var p = polyLen - 1, q = 0; q < polyLen; p = q ++ ) {\n\n\t\t\t\tvar edgeLowPt = inPolygon[ p ];\n\t\t\t\tvar edgeHighPt = inPolygon[ q ];\n\n\t\t\t\tvar edgeDx = edgeHighPt.x - edgeLowPt.x;\n\t\t\t\tvar edgeDy = edgeHighPt.y - edgeLowPt.y;\n\n\t\t\t\tif ( Math.abs( edgeDy ) > Number.EPSILON ) {\n\n\t\t\t\t\t// not parallel\n\t\t\t\t\tif ( edgeDy < 0 ) {\n\n\t\t\t\t\t\tedgeLowPt = inPolygon[ q ]; edgeDx = - edgeDx;\n\t\t\t\t\t\tedgeHighPt = inPolygon[ p ]; edgeDy = - edgeDy;\n\n\t\t\t\t\t}\n\t\t\t\t\tif ( ( inPt.y < edgeLowPt.y ) || ( inPt.y > edgeHighPt.y ) ) \t\tcontinue;\n\n\t\t\t\t\tif ( inPt.y === edgeLowPt.y ) {\n\n\t\t\t\t\t\tif ( inPt.x === edgeLowPt.x )\t\treturn\ttrue;\t\t// inPt is on contour ?\n\t\t\t\t\t\t// continue;\t\t\t\t// no intersection or edgeLowPt => doesn't count !!!\n\n\t\t\t\t\t} else {\n\n\t\t\t\t\t\tvar perpEdge = edgeDy * ( inPt.x - edgeLowPt.x ) - edgeDx * ( inPt.y - edgeLowPt.y );\n\t\t\t\t\t\tif ( perpEdge === 0 )\t\t\t\treturn\ttrue;\t\t// inPt is on contour ?\n\t\t\t\t\t\tif ( perpEdge < 0 ) \t\t\t\tcontinue;\n\t\t\t\t\t\tinside = ! inside;\t\t// true intersection left of inPt\n\n\t\t\t\t\t}\n\n\t\t\t\t} else {\n\n\t\t\t\t\t// parallel or collinear\n\t\t\t\t\tif ( inPt.y !== edgeLowPt.y ) \t\tcontinue;\t\t\t// parallel\n\t\t\t\t\t// edge lies on the same horizontal line as inPt\n\t\t\t\t\tif ( ( ( edgeHighPt.x <= inPt.x ) && ( inPt.x <= edgeLowPt.x ) ) ||\n\t\t\t\t\t\t ( ( edgeLowPt.x <= inPt.x ) && ( inPt.x <= edgeHighPt.x ) ) )\t\treturn\ttrue;\t// inPt: Point on contour !\n\t\t\t\t\t// continue;\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t\treturn\tinside;\n\n\t\t}\n\n\t\tvar isClockWise = ShapeUtils.isClockWise;\n\n\t\tvar subPaths = this.subPaths;\n\t\tif ( subPaths.length === 0 ) return [];\n\n\t\tif ( noHoles === true )\treturn\ttoShapesNoHoles( subPaths );\n\n\n\t\tvar solid, tmpPath, tmpShape, shapes = [];\n\n\t\tif ( subPaths.length === 1 ) {\n\n\t\t\ttmpPath = subPaths[ 0 ];\n\t\t\ttmpShape = new Shape();\n\t\t\ttmpShape.curves = tmpPath.curves;\n\t\t\tshapes.push( tmpShape );\n\t\t\treturn shapes;\n\n\t\t}\n\n\t\tvar holesFirst = ! isClockWise( subPaths[ 0 ].getPoints() );\n\t\tholesFirst = isCCW ? ! holesFirst : holesFirst;\n\n\t\t// console.log(\"Holes first\", holesFirst);\n\n\t\tvar betterShapeHoles = [];\n\t\tvar newShapes = [];\n\t\tvar newShapeHoles = [];\n\t\tvar mainIdx = 0;\n\t\tvar tmpPoints;\n\n\t\tnewShapes[ mainIdx ] = undefined;\n\t\tnewShapeHoles[ mainIdx ] = [];\n\n\t\tfor ( var i = 0, l = subPaths.length; i < l; i ++ ) {\n\n\t\t\ttmpPath = subPaths[ i ];\n\t\t\ttmpPoints = tmpPath.getPoints();\n\t\t\tsolid = isClockWise( tmpPoints );\n\t\t\tsolid = isCCW ? ! solid : solid;\n\n\t\t\tif ( solid ) {\n\n\t\t\t\tif ( ( ! holesFirst ) && ( newShapes[ mainIdx ] ) )\tmainIdx ++;\n\n\t\t\t\tnewShapes[ mainIdx ] = { s: new Shape(), p: tmpPoints };\n\t\t\t\tnewShapes[ mainIdx ].s.curves = tmpPath.curves;\n\n\t\t\t\tif ( holesFirst )\tmainIdx ++;\n\t\t\t\tnewShapeHoles[ mainIdx ] = [];\n\n\t\t\t\t//console.log('cw', i);\n\n\t\t\t} else {\n\n\t\t\t\tnewShapeHoles[ mainIdx ].push( { h: tmpPath, p: tmpPoints[ 0 ] } );\n\n\t\t\t\t//console.log('ccw', i);\n\n\t\t\t}\n\n\t\t}\n\n\t\t// only Holes? -> probably all Shapes with wrong orientation\n\t\tif ( ! newShapes[ 0 ] )\treturn\ttoShapesNoHoles( subPaths );\n\n\n\t\tif ( newShapes.length > 1 ) {\n\n\t\t\tvar ambiguous = false;\n\t\t\tvar toChange = [];\n\n\t\t\tfor ( var sIdx = 0, sLen = newShapes.length; sIdx < sLen; sIdx ++ ) {\n\n\t\t\t\tbetterShapeHoles[ sIdx ] = [];\n\n\t\t\t}\n\n\t\t\tfor ( var sIdx = 0, sLen = newShapes.length; sIdx < sLen; sIdx ++ ) {\n\n\t\t\t\tvar sho = newShapeHoles[ sIdx ];\n\n\t\t\t\tfor ( var hIdx = 0; hIdx < sho.length; hIdx ++ ) {\n\n\t\t\t\t\tvar ho = sho[ hIdx ];\n\t\t\t\t\tvar hole_unassigned = true;\n\n\t\t\t\t\tfor ( var s2Idx = 0; s2Idx < newShapes.length; s2Idx ++ ) {\n\n\t\t\t\t\t\tif ( isPointInsidePolygon( ho.p, newShapes[ s2Idx ].p ) ) {\n\n\t\t\t\t\t\t\tif ( sIdx !== s2Idx )\ttoChange.push( { froms: sIdx, tos: s2Idx, hole: hIdx } );\n\t\t\t\t\t\t\tif ( hole_unassigned ) {\n\n\t\t\t\t\t\t\t\thole_unassigned = false;\n\t\t\t\t\t\t\t\tbetterShapeHoles[ s2Idx ].push( ho );\n\n\t\t\t\t\t\t\t} else {\n\n\t\t\t\t\t\t\t\tambiguous = true;\n\n\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t}\n\n\t\t\t\t\t}\n\t\t\t\t\tif ( hole_unassigned ) {\n\n\t\t\t\t\t\tbetterShapeHoles[ sIdx ].push( ho );\n\n\t\t\t\t\t}\n\n\t\t\t\t}\n\n\t\t\t}\n\t\t\t// console.log(\"ambiguous: \", ambiguous);\n\t\t\tif ( toChange.length > 0 ) {\n\n\t\t\t\t// console.log(\"to change: \", toChange);\n\t\t\t\tif ( ! ambiguous )\tnewShapeHoles = betterShapeHoles;\n\n\t\t\t}\n\n\t\t}\n\n\t\tvar tmpHoles;\n\n\t\tfor ( var i = 0, il = newShapes.length; i < il; i ++ ) {\n\n\t\t\ttmpShape = newShapes[ i ].s;\n\t\t\tshapes.push( tmpShape );\n\t\t\ttmpHoles = newShapeHoles[ i ];\n\n\t\t\tfor ( var j = 0, jl = tmpHoles.length; j < jl; j ++ ) {\n\n\t\t\t\ttmpShape.holes.push( tmpHoles[ j ].h );\n\n\t\t\t}\n\n\t\t}\n\n\t\t//console.log(\"shape\", shapes);\n\n\t\treturn shapes;\n\n\t}\n}\n\n\nexport { ShapePath, Path };\n","import { ShapeUtils } from '../ShapeUtils';\nimport { ShapePath } from './Path';\n\n/**\n * @author zz85 / http://www.lab4games.net/zz85/blog\n * @author mrdoob / http://mrdoob.com/\n */\n\nfunction Font( data ) {\n\n\tthis.data = data;\n\n}\n\nObject.assign( Font.prototype, {\n\n\tisFont: true,\n\n\tgenerateShapes: function ( text, size, divisions ) {\n\n\t\tfunction createPaths( text ) {\n\n\t\t\tvar chars = String( text ).split( '' );\n\t\t\tvar scale = size / data.resolution;\n\t\t\tvar offset = 0;\n\n\t\t\tvar paths = [];\n\n\t\t\tfor ( var i = 0; i < chars.length; i ++ ) {\n\n\t\t\t\tvar ret = createPath( chars[ i ], scale, offset );\n\t\t\t\toffset += ret.offset;\n\n\t\t\t\tpaths.push( ret.path );\n\n\t\t\t}\n\n\t\t\treturn paths;\n\n\t\t}\n\n\t\tfunction createPath( c, scale, offset ) {\n\n\t\t\tvar glyph = data.glyphs[ c ] || data.glyphs[ '?' ];\n\n\t\t\tif ( ! glyph ) return;\n\n\t\t\tvar path = new ShapePath();\n\n\t\t\tvar pts = [], b2 = ShapeUtils.b2, b3 = ShapeUtils.b3;\n\t\t\tvar x, y, cpx, cpy, cpx0, cpy0, cpx1, cpy1, cpx2, cpy2, laste;\n\n\t\t\tif ( glyph.o ) {\n\n\t\t\t\tvar outline = glyph._cachedOutline || ( glyph._cachedOutline = glyph.o.split( ' ' ) );\n\n\t\t\t\tfor ( var i = 0, l = outline.length; i < l; ) {\n\n\t\t\t\t\tvar action = outline[ i ++ ];\n\n\t\t\t\t\tswitch ( action ) {\n\n\t\t\t\t\t\tcase 'm': // moveTo\n\n\t\t\t\t\t\t\tx = outline[ i ++ ] * scale + offset;\n\t\t\t\t\t\t\ty = outline[ i ++ ] * scale;\n\n\t\t\t\t\t\t\tpath.moveTo( x, y );\n\n\t\t\t\t\t\t\tbreak;\n\n\t\t\t\t\t\tcase 'l': // lineTo\n\n\t\t\t\t\t\t\tx = outline[ i ++ ] * scale + offset;\n\t\t\t\t\t\t\ty = outline[ i ++ ] * scale;\n\n\t\t\t\t\t\t\tpath.lineTo( x, y );\n\n\t\t\t\t\t\t\tbreak;\n\n\t\t\t\t\t\tcase 'q': // quadraticCurveTo\n\n\t\t\t\t\t\t\tcpx = outline[ i ++ ] * scale + offset;\n\t\t\t\t\t\t\tcpy = outline[ i ++ ] * scale;\n\t\t\t\t\t\t\tcpx1 = outline[ i ++ ] * scale + offset;\n\t\t\t\t\t\t\tcpy1 = outline[ i ++ ] * scale;\n\n\t\t\t\t\t\t\tpath.quadraticCurveTo( cpx1, cpy1, cpx, cpy );\n\n\t\t\t\t\t\t\tlaste = pts[ pts.length - 1 ];\n\n\t\t\t\t\t\t\tif ( laste ) {\n\n\t\t\t\t\t\t\t\tcpx0 = laste.x;\n\t\t\t\t\t\t\t\tcpy0 = laste.y;\n\n\t\t\t\t\t\t\t\tfor ( var i2 = 1; i2 <= divisions; i2 ++ ) {\n\n\t\t\t\t\t\t\t\t\tvar t = i2 / divisions;\n\t\t\t\t\t\t\t\t\tb2( t, cpx0, cpx1, cpx );\n\t\t\t\t\t\t\t\t\tb2( t, cpy0, cpy1, cpy );\n\n\t\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\tbreak;\n\n\t\t\t\t\t\tcase 'b': // bezierCurveTo\n\n\t\t\t\t\t\t\tcpx = outline[ i ++ ] * scale + offset;\n\t\t\t\t\t\t\tcpy = outline[ i ++ ] * scale;\n\t\t\t\t\t\t\tcpx1 = outline[ i ++ ] * scale + offset;\n\t\t\t\t\t\t\tcpy1 = outline[ i ++ ] * scale;\n\t\t\t\t\t\t\tcpx2 = outline[ i ++ ] * scale + offset;\n\t\t\t\t\t\t\tcpy2 = outline[ i ++ ] * scale;\n\n\t\t\t\t\t\t\tpath.bezierCurveTo( cpx1, cpy1, cpx2, cpy2, cpx, cpy );\n\n\t\t\t\t\t\t\tlaste = pts[ pts.length - 1 ];\n\n\t\t\t\t\t\t\tif ( laste ) {\n\n\t\t\t\t\t\t\t\tcpx0 = laste.x;\n\t\t\t\t\t\t\t\tcpy0 = laste.y;\n\n\t\t\t\t\t\t\t\tfor ( var i2 = 1; i2 <= divisions; i2 ++ ) {\n\n\t\t\t\t\t\t\t\t\tvar t = i2 / divisions;\n\t\t\t\t\t\t\t\t\tb3( t, cpx0, cpx1, cpx2, cpx );\n\t\t\t\t\t\t\t\t\tb3( t, cpy0, cpy1, cpy2, cpy );\n\n\t\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\tbreak;\n\n\t\t\t\t\t}\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t\treturn { offset: glyph.ha * scale, path: path };\n\n\t\t}\n\n\t\t//\n\n\t\tif ( size === undefined ) size = 100;\n\t\tif ( divisions === undefined ) divisions = 4;\n\n\t\tvar data = this.data;\n\n\t\tvar paths = createPaths( text );\n\t\tvar shapes = [];\n\n\t\tfor ( var p = 0, pl = paths.length; p < pl; p ++ ) {\n\n\t\t\tArray.prototype.push.apply( shapes, paths[ p ].toShapes() );\n\n\t\t}\n\n\t\treturn shapes;\n\n\t}\n\n} );\n\n\nexport { Font };\n","import { Font } from '../extras/core/Font';\nimport { FileLoader } from './FileLoader';\nimport { DefaultLoadingManager } from './LoadingManager';\n\n/**\n * @author mrdoob / http://mrdoob.com/\n */\n\nfunction FontLoader( manager ) {\n\n\tthis.manager = ( manager !== undefined ) ? manager : DefaultLoadingManager;\n\n}\n\nObject.assign( FontLoader.prototype, {\n\n\tload: function ( url, onLoad, onProgress, onError ) {\n\n\t\tvar scope = this;\n\n\t\tvar loader = new FileLoader( this.manager );\n\t\tloader.load( url, function ( text ) {\n\n\t\t\tvar json;\n\n\t\t\ttry {\n\n\t\t\t\tjson = JSON.parse( text );\n\n\t\t\t} catch ( e ) {\n\n\t\t\t\tconsole.warn( 'THREE.FontLoader: typeface.js support is being deprecated. Use typeface.json instead.' );\n\t\t\t\tjson = JSON.parse( text.substring( 65, text.length - 2 ) );\n\n\t\t\t}\n\n\t\t\tvar font = scope.parse( json );\n\n\t\t\tif ( onLoad ) onLoad( font );\n\n\t\t}, onProgress, onError );\n\n\t},\n\n\tparse: function ( json ) {\n\n\t\treturn new Font( json );\n\n\t}\n\n} );\n\n\nexport { FontLoader };\n","var context;\n\nexport function getAudioContext() {\n\n\tif ( context === undefined ) {\n\n\t\tcontext = new ( window.AudioContext || window.webkitAudioContext )();\n\n\t}\n\n\treturn context;\n\n}\n","import { getAudioContext } from '../audio/AudioContext';\nimport { FileLoader } from './FileLoader';\nimport { DefaultLoadingManager } from './LoadingManager';\n\n/**\n * @author Reece Aaron Lecrivain / http://reecenotes.com/\n */\n\nfunction AudioLoader( manager ) {\n\n\tthis.manager = ( manager !== undefined ) ? manager : DefaultLoadingManager;\n\n}\n\nObject.assign( AudioLoader.prototype, {\n\n\tload: function ( url, onLoad, onProgress, onError ) {\n\n\t\tvar loader = new FileLoader( this.manager );\n\t\tloader.setResponseType( 'arraybuffer' );\n\t\tloader.load( url, function ( buffer ) {\n\n\t\t\tvar context = getAudioContext();\n\n\t\t\tcontext.decodeAudioData( buffer, function ( audioBuffer ) {\n\n\t\t\t\tonLoad( audioBuffer );\n\n\t\t\t} );\n\n\t\t}, onProgress, onError );\n\n\t}\n\n} );\n\n\nexport { AudioLoader };\n","import { Matrix4 } from '../math/Matrix4';\nimport { _Math } from '../math/Math';\nimport { PerspectiveCamera } from './PerspectiveCamera';\n\n/**\n * @author mrdoob / http://mrdoob.com/\n */\n\nfunction StereoCamera() {\n\n\tthis.type = 'StereoCamera';\n\n\tthis.aspect = 1;\n\n\tthis.eyeSep = 0.064;\n\n\tthis.cameraL = new PerspectiveCamera();\n\tthis.cameraL.layers.enable( 1 );\n\tthis.cameraL.matrixAutoUpdate = false;\n\n\tthis.cameraR = new PerspectiveCamera();\n\tthis.cameraR.layers.enable( 2 );\n\tthis.cameraR.matrixAutoUpdate = false;\n\n}\n\nObject.assign( StereoCamera.prototype, {\n\n\tupdate: ( function () {\n\n\t\tvar instance, focus, fov, aspect, near, far, zoom;\n\n\t\tvar eyeRight = new Matrix4();\n\t\tvar eyeLeft = new Matrix4();\n\n\t\treturn function update( camera ) {\n\n\t\t\tvar needsUpdate = instance !== this || focus !== camera.focus || fov !== camera.fov ||\n\t\t\t\t\t\t\t\t\t\t\t\taspect !== camera.aspect * this.aspect || near !== camera.near ||\n\t\t\t\t\t\t\t\t\t\t\t\tfar !== camera.far || zoom !== camera.zoom;\n\n\t\t\tif ( needsUpdate ) {\n\n\t\t\t\tinstance = this;\n\t\t\t\tfocus = camera.focus;\n\t\t\t\tfov = camera.fov;\n\t\t\t\taspect = camera.aspect * this.aspect;\n\t\t\t\tnear = camera.near;\n\t\t\t\tfar = camera.far;\n\t\t\t\tzoom = camera.zoom;\n\n\t\t\t\t// Off-axis stereoscopic effect based on\n\t\t\t\t// http://paulbourke.net/stereographics/stereorender/\n\n\t\t\t\tvar projectionMatrix = camera.projectionMatrix.clone();\n\t\t\t\tvar eyeSep = this.eyeSep / 2;\n\t\t\t\tvar eyeSepOnProjection = eyeSep * near / focus;\n\t\t\t\tvar ymax = ( near * Math.tan( _Math.DEG2RAD * fov * 0.5 ) ) / zoom;\n\t\t\t\tvar xmin, xmax;\n\n\t\t\t\t// translate xOffset\n\n\t\t\t\teyeLeft.elements[ 12 ] = - eyeSep;\n\t\t\t\teyeRight.elements[ 12 ] = eyeSep;\n\n\t\t\t\t// for left eye\n\n\t\t\t\txmin = - ymax * aspect + eyeSepOnProjection;\n\t\t\t\txmax = ymax * aspect + eyeSepOnProjection;\n\n\t\t\t\tprojectionMatrix.elements[ 0 ] = 2 * near / ( xmax - xmin );\n\t\t\t\tprojectionMatrix.elements[ 8 ] = ( xmax + xmin ) / ( xmax - xmin );\n\n\t\t\t\tthis.cameraL.projectionMatrix.copy( projectionMatrix );\n\n\t\t\t\t// for right eye\n\n\t\t\t\txmin = - ymax * aspect - eyeSepOnProjection;\n\t\t\t\txmax = ymax * aspect - eyeSepOnProjection;\n\n\t\t\t\tprojectionMatrix.elements[ 0 ] = 2 * near / ( xmax - xmin );\n\t\t\t\tprojectionMatrix.elements[ 8 ] = ( xmax + xmin ) / ( xmax - xmin );\n\n\t\t\t\tthis.cameraR.projectionMatrix.copy( projectionMatrix );\n\n\t\t\t}\n\n\t\t\tthis.cameraL.matrixWorld.copy( camera.matrixWorld ).multiply( eyeLeft );\n\t\t\tthis.cameraR.matrixWorld.copy( camera.matrixWorld ).multiply( eyeRight );\n\n\t\t};\n\n\t} )()\n\n} );\n\n\nexport { StereoCamera };\n","import { Object3D } from '../core/Object3D';\nimport { WebGLRenderTargetCube } from '../renderers/WebGLRenderTargetCube';\nimport { LinearFilter, RGBFormat } from '../constants';\nimport { Vector3 } from '../math/Vector3';\nimport { PerspectiveCamera } from './PerspectiveCamera';\n\n/**\n * Camera for rendering cube maps\n *\t- renders scene into axis-aligned cube\n *\n * @author alteredq / http://alteredqualia.com/\n */\n\nfunction CubeCamera( near, far, cubeResolution ) {\n\n\tObject3D.call( this );\n\n\tthis.type = 'CubeCamera';\n\n\tvar fov = 90, aspect = 1;\n\n\tvar cameraPX = new PerspectiveCamera( fov, aspect, near, far );\n\tcameraPX.up.set( 0, - 1, 0 );\n\tcameraPX.lookAt( new Vector3( 1, 0, 0 ) );\n\tthis.add( cameraPX );\n\n\tvar cameraNX = new PerspectiveCamera( fov, aspect, near, far );\n\tcameraNX.up.set( 0, - 1, 0 );\n\tcameraNX.lookAt( new Vector3( - 1, 0, 0 ) );\n\tthis.add( cameraNX );\n\n\tvar cameraPY = new PerspectiveCamera( fov, aspect, near, far );\n\tcameraPY.up.set( 0, 0, 1 );\n\tcameraPY.lookAt( new Vector3( 0, 1, 0 ) );\n\tthis.add( cameraPY );\n\n\tvar cameraNY = new PerspectiveCamera( fov, aspect, near, far );\n\tcameraNY.up.set( 0, 0, - 1 );\n\tcameraNY.lookAt( new Vector3( 0, - 1, 0 ) );\n\tthis.add( cameraNY );\n\n\tvar cameraPZ = new PerspectiveCamera( fov, aspect, near, far );\n\tcameraPZ.up.set( 0, - 1, 0 );\n\tcameraPZ.lookAt( new Vector3( 0, 0, 1 ) );\n\tthis.add( cameraPZ );\n\n\tvar cameraNZ = new PerspectiveCamera( fov, aspect, near, far );\n\tcameraNZ.up.set( 0, - 1, 0 );\n\tcameraNZ.lookAt( new Vector3( 0, 0, - 1 ) );\n\tthis.add( cameraNZ );\n\n\tvar options = { format: RGBFormat, magFilter: LinearFilter, minFilter: LinearFilter };\n\n\tthis.renderTarget = new WebGLRenderTargetCube( cubeResolution, cubeResolution, options );\n\n\tthis.updateCubeMap = function ( renderer, scene ) {\n\n\t\tif ( this.parent === null ) this.updateMatrixWorld();\n\n\t\tvar renderTarget = this.renderTarget;\n\t\tvar generateMipmaps = renderTarget.texture.generateMipmaps;\n\n\t\trenderTarget.texture.generateMipmaps = false;\n\n\t\trenderTarget.activeCubeFace = 0;\n\t\trenderer.render( scene, cameraPX, renderTarget );\n\n\t\trenderTarget.activeCubeFace = 1;\n\t\trenderer.render( scene, cameraNX, renderTarget );\n\n\t\trenderTarget.activeCubeFace = 2;\n\t\trenderer.render( scene, cameraPY, renderTarget );\n\n\t\trenderTarget.activeCubeFace = 3;\n\t\trenderer.render( scene, cameraNY, renderTarget );\n\n\t\trenderTarget.activeCubeFace = 4;\n\t\trenderer.render( scene, cameraPZ, renderTarget );\n\n\t\trenderTarget.texture.generateMipmaps = generateMipmaps;\n\n\t\trenderTarget.activeCubeFace = 5;\n\t\trenderer.render( scene, cameraNZ, renderTarget );\n\n\t\trenderer.setRenderTarget( null );\n\n\t};\n\n}\n\nCubeCamera.prototype = Object.create( Object3D.prototype );\nCubeCamera.prototype.constructor = CubeCamera;\n\n\nexport { CubeCamera };\n","/**\n * @author mrdoob / http://mrdoob.com/\n */\n\nimport { Vector3 } from '../math/Vector3';\nimport { Quaternion } from '../math/Quaternion';\nimport { Object3D } from '../core/Object3D';\nimport { getAudioContext } from './AudioContext';\n\nfunction AudioListener() {\n\n\tObject3D.call( this );\n\n\tthis.type = 'AudioListener';\n\n\tthis.context = getAudioContext();\n\n\tthis.gain = this.context.createGain();\n\tthis.gain.connect( this.context.destination );\n\n\tthis.filter = null;\n\n}\n\nAudioListener.prototype = Object.assign( Object.create( Object3D.prototype ), {\n\n\tconstructor: AudioListener,\n\n\tgetInput: function () {\n\n\t\treturn this.gain;\n\n\t},\n\n\tremoveFilter: function ( ) {\n\n\t\tif ( this.filter !== null ) {\n\n\t\t\tthis.gain.disconnect( this.filter );\n\t\t\tthis.filter.disconnect( this.context.destination );\n\t\t\tthis.gain.connect( this.context.destination );\n\t\t\tthis.filter = null;\n\n\t\t}\n\n\t},\n\n\tgetFilter: function () {\n\n\t\treturn this.filter;\n\n\t},\n\n\tsetFilter: function ( value ) {\n\n\t\tif ( this.filter !== null ) {\n\n\t\t\tthis.gain.disconnect( this.filter );\n\t\t\tthis.filter.disconnect( this.context.destination );\n\n\t\t} else {\n\n\t\t\tthis.gain.disconnect( this.context.destination );\n\n\t\t}\n\n\t\tthis.filter = value;\n\t\tthis.gain.connect( this.filter );\n\t\tthis.filter.connect( this.context.destination );\n\n\t},\n\n\tgetMasterVolume: function () {\n\n\t\treturn this.gain.gain.value;\n\n\t},\n\n\tsetMasterVolume: function ( value ) {\n\n\t\tthis.gain.gain.value = value;\n\n\t},\n\n\tupdateMatrixWorld: ( function () {\n\n\t\tvar position = new Vector3();\n\t\tvar quaternion = new Quaternion();\n\t\tvar scale = new Vector3();\n\n\t\tvar orientation = new Vector3();\n\n\t\treturn function updateMatrixWorld( force ) {\n\n\t\t\tObject3D.prototype.updateMatrixWorld.call( this, force );\n\n\t\t\tvar listener = this.context.listener;\n\t\t\tvar up = this.up;\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, up.x, up.y, up.z );\n\n\t\t};\n\n\t} )()\n\n} );\n\nexport { AudioListener };\n","/**\n * @author mrdoob / http://mrdoob.com/\n * @author Reece Aaron Lecrivain / http://reecenotes.com/\n */\n\nimport { Object3D } from '../core/Object3D';\n\nfunction Audio( listener ) {\n\n\tObject3D.call( this );\n\n\tthis.type = 'Audio';\n\n\tthis.context = listener.context;\n\tthis.source = this.context.createBufferSource();\n\tthis.source.onended = this.onEnded.bind( this );\n\n\tthis.gain = this.context.createGain();\n\tthis.gain.connect( listener.getInput() );\n\n\tthis.autoplay = false;\n\n\tthis.startTime = 0;\n\tthis.playbackRate = 1;\n\tthis.isPlaying = false;\n\tthis.hasPlaybackControl = true;\n\tthis.sourceType = 'empty';\n\n\tthis.filters = [];\n\n}\n\nAudio.prototype = Object.assign( Object.create( Object3D.prototype ), {\n\n\tconstructor: Audio,\n\n\tgetOutput: function () {\n\n\t\treturn this.gain;\n\n\t},\n\n\tsetNodeSource: function ( audioNode ) {\n\n\t\tthis.hasPlaybackControl = false;\n\t\tthis.sourceType = 'audioNode';\n\t\tthis.source = audioNode;\n\t\tthis.connect();\n\n\t\treturn this;\n\n\t},\n\n\tsetBuffer: function ( audioBuffer ) {\n\n\t\tthis.source.buffer = audioBuffer;\n\t\tthis.sourceType = 'buffer';\n\n\t\tif ( this.autoplay ) this.play();\n\n\t\treturn this;\n\n\t},\n\n\tplay: function () {\n\n\t\tif ( this.isPlaying === true ) {\n\n\t\t\tconsole.warn( 'THREE.Audio: Audio is already playing.' );\n\t\t\treturn;\n\n\t\t}\n\n\t\tif ( this.hasPlaybackControl === false ) {\n\n\t\t\tconsole.warn( 'THREE.Audio: this Audio has no playback control.' );\n\t\t\treturn;\n\n\t\t}\n\n\t\tvar source = this.context.createBufferSource();\n\n\t\tsource.buffer = this.source.buffer;\n\t\tsource.loop = this.source.loop;\n\t\tsource.onended = this.source.onended;\n\t\tsource.start( 0, this.startTime );\n\t\tsource.playbackRate.value = this.playbackRate;\n\n\t\tthis.isPlaying = true;\n\n\t\tthis.source = source;\n\n\t\treturn this.connect();\n\n\t},\n\n\tpause: function () {\n\n\t\tif ( this.hasPlaybackControl === false ) {\n\n\t\t\tconsole.warn( 'THREE.Audio: this Audio has no playback control.' );\n\t\t\treturn;\n\n\t\t}\n\n\t\tthis.source.stop();\n\t\tthis.startTime = this.context.currentTime;\n\t\tthis.isPlaying = false;\n\n\t\treturn this;\n\n\t},\n\n\tstop: function () {\n\n\t\tif ( this.hasPlaybackControl === false ) {\n\n\t\t\tconsole.warn( 'THREE.Audio: this Audio has no playback control.' );\n\t\t\treturn;\n\n\t\t}\n\n\t\tthis.source.stop();\n\t\tthis.startTime = 0;\n\t\tthis.isPlaying = false;\n\n\t\treturn this;\n\n\t},\n\n\tconnect: function () {\n\n\t\tif ( this.filters.length > 0 ) {\n\n\t\t\tthis.source.connect( this.filters[ 0 ] );\n\n\t\t\tfor ( var i = 1, l = this.filters.length; i < l; i ++ ) {\n\n\t\t\t\tthis.filters[ i - 1 ].connect( this.filters[ i ] );\n\n\t\t\t}\n\n\t\t\tthis.filters[ this.filters.length - 1 ].connect( this.getOutput() );\n\n\t\t} else {\n\n\t\t\tthis.source.connect( this.getOutput() );\n\n\t\t}\n\n\t\treturn this;\n\n\t},\n\n\tdisconnect: function () {\n\n\t\tif ( this.filters.length > 0 ) {\n\n\t\t\tthis.source.disconnect( this.filters[ 0 ] );\n\n\t\t\tfor ( var i = 1, l = this.filters.length; i < l; i ++ ) {\n\n\t\t\t\tthis.filters[ i - 1 ].disconnect( this.filters[ i ] );\n\n\t\t\t}\n\n\t\t\tthis.filters[ this.filters.length - 1 ].disconnect( this.getOutput() );\n\n\t\t} else {\n\n\t\t\tthis.source.disconnect( this.getOutput() );\n\n\t\t}\n\n\t\treturn this;\n\n\t},\n\n\tgetFilters: function () {\n\n\t\treturn this.filters;\n\n\t},\n\n\tsetFilters: function ( value ) {\n\n\t\tif ( ! value ) value = [];\n\n\t\tif ( this.isPlaying === true ) {\n\n\t\t\tthis.disconnect();\n\t\t\tthis.filters = value;\n\t\t\tthis.connect();\n\n\t\t} else {\n\n\t\t\tthis.filters = value;\n\n\t\t}\n\n\t\treturn this;\n\n\t},\n\n\tgetFilter: function () {\n\n\t\treturn this.getFilters()[ 0 ];\n\n\t},\n\n\tsetFilter: function ( filter ) {\n\n\t\treturn this.setFilters( filter ? [ filter ] : [] );\n\n\t},\n\n\tsetPlaybackRate: function ( value ) {\n\n\t\tif ( this.hasPlaybackControl === false ) {\n\n\t\t\tconsole.warn( 'THREE.Audio: this Audio has no playback control.' );\n\t\t\treturn;\n\n\t\t}\n\n\t\tthis.playbackRate = value;\n\n\t\tif ( this.isPlaying === true ) {\n\n\t\t\tthis.source.playbackRate.value = this.playbackRate;\n\n\t\t}\n\n\t\treturn this;\n\n\t},\n\n\tgetPlaybackRate: function () {\n\n\t\treturn this.playbackRate;\n\n\t},\n\n\tonEnded: function () {\n\n\t\tthis.isPlaying = false;\n\n\t},\n\n\tgetLoop: function () {\n\n\t\tif ( this.hasPlaybackControl === false ) {\n\n\t\t\tconsole.warn( 'THREE.Audio: this Audio has no playback control.' );\n\t\t\treturn false;\n\n\t\t}\n\n\t\treturn this.source.loop;\n\n\t},\n\n\tsetLoop: function ( value ) {\n\n\t\tif ( this.hasPlaybackControl === false ) {\n\n\t\t\tconsole.warn( 'THREE.Audio: this Audio has no playback control.' );\n\t\t\treturn;\n\n\t\t}\n\n\t\tthis.source.loop = value;\n\n\t},\n\n\tgetVolume: function () {\n\n\t\treturn this.gain.gain.value;\n\n\t},\n\n\n\tsetVolume: function ( value ) {\n\n\t\tthis.gain.gain.value = value;\n\n\t\treturn this;\n\n\t}\n\n} );\n\nexport { Audio };\n","/**\n * @author mrdoob / http://mrdoob.com/\n */\n\nimport { Vector3 } from '../math/Vector3';\nimport { Audio } from './Audio';\nimport { Object3D } from '../core/Object3D';\n\nfunction PositionalAudio( listener ) {\n\n\tAudio.call( this, listener );\n\n\tthis.panner = this.context.createPanner();\n\tthis.panner.connect( this.gain );\n\n}\n\nPositionalAudio.prototype = Object.assign( Object.create( Audio.prototype ), {\n\n\tconstructor: PositionalAudio,\n\n\tgetOutput: function () {\n\n\t\treturn this.panner;\n\n\t},\n\n\tgetRefDistance: function () {\n\n\t\treturn this.panner.refDistance;\n\n\t},\n\n\tsetRefDistance: function ( value ) {\n\n\t\tthis.panner.refDistance = value;\n\n\t},\n\n\tgetRolloffFactor: function () {\n\n\t\treturn this.panner.rolloffFactor;\n\n\t},\n\n\tsetRolloffFactor: function ( value ) {\n\n\t\tthis.panner.rolloffFactor = value;\n\n\t},\n\n\tgetDistanceModel: function () {\n\n\t\treturn this.panner.distanceModel;\n\n\t},\n\n\tsetDistanceModel: function ( value ) {\n\n\t\tthis.panner.distanceModel = value;\n\n\t},\n\n\tgetMaxDistance: function () {\n\n\t\treturn this.panner.maxDistance;\n\n\t},\n\n\tsetMaxDistance: function ( value ) {\n\n\t\tthis.panner.maxDistance = value;\n\n\t},\n\n\tupdateMatrixWorld: ( function () {\n\n\t\tvar position = new Vector3();\n\n\t\treturn function updateMatrixWorld( force ) {\n\n\t\t\tObject3D.prototype.updateMatrixWorld.call( this, force );\n\n\t\t\tposition.setFromMatrixPosition( this.matrixWorld );\n\n\t\t\tthis.panner.setPosition( position.x, position.y, position.z );\n\n\t\t};\n\n\t} )()\n\n\n} );\n\nexport { PositionalAudio };\n","/**\n * @author mrdoob / http://mrdoob.com/\n */\n\nfunction AudioAnalyser( audio, fftSize ) {\n\n\tthis.analyser = audio.context.createAnalyser();\n\tthis.analyser.fftSize = fftSize !== undefined ? fftSize : 2048;\n\n\tthis.data = new Uint8Array( this.analyser.frequencyBinCount );\n\n\taudio.getOutput().connect( this.analyser );\n\n}\n\nObject.assign( AudioAnalyser.prototype, {\n\n\tgetFrequencyData: function () {\n\n\t\tthis.analyser.getByteFrequencyData( this.data );\n\n\t\treturn this.data;\n\n\t},\n\n\tgetAverageFrequency: function () {\n\n\t\tvar value = 0, data = this.getFrequencyData();\n\n\t\tfor ( var i = 0; i < data.length; i ++ ) {\n\n\t\t\tvalue += data[ i ];\n\n\t\t}\n\n\t\treturn value / data.length;\n\n\t}\n\n} );\n\nexport { AudioAnalyser };\n","import { Quaternion } from '../math/Quaternion';\n\n/**\n *\n * Buffered scene graph property that allows weighted accumulation.\n *\n *\n * @author Ben Houston / http://clara.io/\n * @author David Sarno / http://lighthaus.us/\n * @author tschw\n */\n\nfunction PropertyMixer( binding, typeName, valueSize ) {\n\n\tthis.binding = binding;\n\tthis.valueSize = valueSize;\n\n\tvar bufferType = Float64Array,\n\t\tmixFunction;\n\n\tswitch ( typeName ) {\n\n\t\tcase 'quaternion':\t\t\tmixFunction = this._slerp;\t\tbreak;\n\n\t\tcase 'string':\n\t\tcase 'bool':\n\n\t\t\tbufferType = Array,\t\tmixFunction = this._select;\t\tbreak;\n\n\t\tdefault:\t\t\t\t\tmixFunction = this._lerp;\n\n\t}\n\n\tthis.buffer = new bufferType( valueSize * 4 );\n\t// layout: [ incoming | accu0 | accu1 | orig ]\n\t//\n\t// interpolators can use .buffer as their .result\n\t// the data then goes to 'incoming'\n\t//\n\t// 'accu0' and 'accu1' are used frame-interleaved for\n\t// the cumulative result and are compared to detect\n\t// changes\n\t//\n\t// 'orig' stores the original state of the property\n\n\tthis._mixBufferRegion = mixFunction;\n\n\tthis.cumulativeWeight = 0;\n\n\tthis.useCount = 0;\n\tthis.referenceCount = 0;\n\n}\n\nPropertyMixer.prototype = {\n\n\tconstructor: PropertyMixer,\n\n\t// accumulate data in the 'incoming' region into 'accu'\n\taccumulate: function( accuIndex, weight ) {\n\n\t\t// note: happily accumulating nothing when weight = 0, the caller knows\n\t\t// the weight and shouldn't have made the call in the first place\n\n\t\tvar buffer = this.buffer,\n\t\t\tstride = this.valueSize,\n\t\t\toffset = accuIndex * stride + stride,\n\n\t\t\tcurrentWeight = this.cumulativeWeight;\n\n\t\tif ( currentWeight === 0 ) {\n\n\t\t\t// accuN := incoming * weight\n\n\t\t\tfor ( var i = 0; i !== stride; ++ i ) {\n\n\t\t\t\tbuffer[ offset + i ] = buffer[ i ];\n\n\t\t\t}\n\n\t\t\tcurrentWeight = weight;\n\n\t\t} else {\n\n\t\t\t// accuN := accuN + incoming * weight\n\n\t\t\tcurrentWeight += weight;\n\t\t\tvar mix = weight / currentWeight;\n\t\t\tthis._mixBufferRegion( buffer, offset, 0, mix, stride );\n\n\t\t}\n\n\t\tthis.cumulativeWeight = currentWeight;\n\n\t},\n\n\t// apply the state of 'accu' to the binding when accus differ\n\tapply: function( accuIndex ) {\n\n\t\tvar stride = this.valueSize,\n\t\t\tbuffer = this.buffer,\n\t\t\toffset = accuIndex * stride + stride,\n\n\t\t\tweight = this.cumulativeWeight,\n\n\t\t\tbinding = this.binding;\n\n\t\tthis.cumulativeWeight = 0;\n\n\t\tif ( weight < 1 ) {\n\n\t\t\t// accuN := accuN + original * ( 1 - cumulativeWeight )\n\n\t\t\tvar originalValueOffset = stride * 3;\n\n\t\t\tthis._mixBufferRegion(\n\t\t\t\t\tbuffer, offset, originalValueOffset, 1 - weight, stride );\n\n\t\t}\n\n\t\tfor ( var i = stride, e = stride + stride; i !== e; ++ i ) {\n\n\t\t\tif ( buffer[ i ] !== buffer[ i + stride ] ) {\n\n\t\t\t\t// value has changed -> update scene graph\n\n\t\t\t\tbinding.setValue( buffer, offset );\n\t\t\t\tbreak;\n\n\t\t\t}\n\n\t\t}\n\n\t},\n\n\t// remember the state of the bound property and copy it to both accus\n\tsaveOriginalState: function() {\n\n\t\tvar binding = this.binding;\n\n\t\tvar buffer = this.buffer,\n\t\t\tstride = this.valueSize,\n\n\t\t\toriginalValueOffset = stride * 3;\n\n\t\tbinding.getValue( buffer, originalValueOffset );\n\n\t\t// accu[0..1] := orig -- initially detect changes against the original\n\t\tfor ( var i = stride, e = originalValueOffset; i !== e; ++ i ) {\n\n\t\t\tbuffer[ i ] = buffer[ originalValueOffset + ( i % stride ) ];\n\n\t\t}\n\n\t\tthis.cumulativeWeight = 0;\n\n\t},\n\n\t// apply the state previously taken via 'saveOriginalState' to the binding\n\trestoreOriginalState: function() {\n\n\t\tvar originalValueOffset = this.valueSize * 3;\n\t\tthis.binding.setValue( this.buffer, originalValueOffset );\n\n\t},\n\n\n\t// mix functions\n\n\t_select: function( buffer, dstOffset, srcOffset, t, stride ) {\n\n\t\tif ( t >= 0.5 ) {\n\n\t\t\tfor ( var i = 0; i !== stride; ++ i ) {\n\n\t\t\t\tbuffer[ dstOffset + i ] = buffer[ srcOffset + i ];\n\n\t\t\t}\n\n\t\t}\n\n\t},\n\n\t_slerp: function( buffer, dstOffset, srcOffset, t, stride ) {\n\n\t\tQuaternion.slerpFlat( buffer, dstOffset,\n\t\t\t\tbuffer, dstOffset, buffer, srcOffset, t );\n\n\t},\n\n\t_lerp: function( buffer, dstOffset, srcOffset, t, stride ) {\n\n\t\tvar s = 1 - t;\n\n\t\tfor ( var i = 0; i !== stride; ++ i ) {\n\n\t\t\tvar j = dstOffset + i;\n\n\t\t\tbuffer[ j ] = buffer[ j ] * s + buffer[ srcOffset + i ] * t;\n\n\t\t}\n\n\t}\n\n};\n\n\nexport { PropertyMixer };\n","/**\n *\n * A reference to a real property in the scene graph.\n *\n *\n * @author Ben Houston / http://clara.io/\n * @author David Sarno / http://lighthaus.us/\n * @author tschw\n */\n\nfunction PropertyBinding( rootNode, path, parsedPath ) {\n\n\tthis.path = path;\n\tthis.parsedPath = parsedPath ||\n\t\t\tPropertyBinding.parseTrackName( path );\n\n\tthis.node = PropertyBinding.findNode(\n\t\t\trootNode, this.parsedPath.nodeName ) || rootNode;\n\n\tthis.rootNode = rootNode;\n\n}\n\nPropertyBinding.prototype = {\n\n\tconstructor: PropertyBinding,\n\n\tgetValue: function getValue_unbound( targetArray, offset ) {\n\n\t\tthis.bind();\n\t\tthis.getValue( targetArray, offset );\n\n\t\t// Note: This class uses a State pattern on a per-method basis:\n\t\t// 'bind' sets 'this.getValue' / 'setValue' and shadows the\n\t\t// prototype version of these methods with one that represents\n\t\t// the bound state. When the property is not found, the methods\n\t\t// become no-ops.\n\n\t},\n\n\tsetValue: function getValue_unbound( sourceArray, offset ) {\n\n\t\tthis.bind();\n\t\tthis.setValue( sourceArray, offset );\n\n\t},\n\n\t// create getter / setter pair for a property in the scene graph\n\tbind: function() {\n\n\t\tvar targetObject = this.node,\n\t\t\tparsedPath = this.parsedPath,\n\n\t\t\tobjectName = parsedPath.objectName,\n\t\t\tpropertyName = parsedPath.propertyName,\n\t\t\tpropertyIndex = parsedPath.propertyIndex;\n\n\t\tif ( ! targetObject ) {\n\n\t\t\ttargetObject = PropertyBinding.findNode(\n\t\t\t\t\tthis.rootNode, parsedPath.nodeName ) || this.rootNode;\n\n\t\t\tthis.node = targetObject;\n\n\t\t}\n\n\t\t// set fail state so we can just 'return' on error\n\t\tthis.getValue = this._getValue_unavailable;\n\t\tthis.setValue = this._setValue_unavailable;\n\n \t\t// ensure there is a value node\n\t\tif ( ! targetObject ) {\n\n\t\t\tconsole.error( \" trying to update node for track: \" + this.path + \" but it wasn't found.\" );\n\t\t\treturn;\n\n\t\t}\n\n\t\tif ( objectName ) {\n\n\t\t\tvar objectIndex = parsedPath.objectIndex;\n\n\t\t\t// special cases were we need to reach deeper into the hierarchy to get the face materials....\n\t\t\tswitch ( objectName ) {\n\n\t\t\t\tcase 'materials':\n\n\t\t\t\t\tif ( ! targetObject.material ) {\n\n\t\t\t\t\t\tconsole.error( ' can not bind to material as node does not have a material', this );\n\t\t\t\t\t\treturn;\n\n\t\t\t\t\t}\n\n\t\t\t\t\tif ( ! targetObject.material.materials ) {\n\n\t\t\t\t\t\tconsole.error( ' can not bind to material.materials as node.material does not have a materials array', this );\n\t\t\t\t\t\treturn;\n\n\t\t\t\t\t}\n\n\t\t\t\t\ttargetObject = targetObject.material.materials;\n\n\t\t\t\t\tbreak;\n\n\t\t\t\tcase 'bones':\n\n\t\t\t\t\tif ( ! targetObject.skeleton ) {\n\n\t\t\t\t\t\tconsole.error( ' can not bind to bones as node does not have a skeleton', this );\n\t\t\t\t\t\treturn;\n\n\t\t\t\t\t}\n\n\t\t\t\t\t// potential future optimization: skip this if propertyIndex is already an integer\n\t\t\t\t\t// and convert the integer string to a true integer.\n\n\t\t\t\t\ttargetObject = targetObject.skeleton.bones;\n\n\t\t\t\t\t// support resolving morphTarget names into indices.\n\t\t\t\t\tfor ( var i = 0; i < targetObject.length; i ++ ) {\n\n\t\t\t\t\t\tif ( targetObject[ i ].name === objectIndex ) {\n\n\t\t\t\t\t\t\tobjectIndex = i;\n\t\t\t\t\t\t\tbreak;\n\n\t\t\t\t\t\t}\n\n\t\t\t\t\t}\n\n\t\t\t\t\tbreak;\n\n\t\t\t\tdefault:\n\n\t\t\t\t\tif ( targetObject[ objectName ] === undefined ) {\n\n\t\t\t\t\t\tconsole.error( ' can not bind to objectName of node, undefined', this );\n\t\t\t\t\t\treturn;\n\n\t\t\t\t\t}\n\n\t\t\t\t\ttargetObject = targetObject[ objectName ];\n\n\t\t\t}\n\n\n\t\t\tif ( objectIndex !== undefined ) {\n\n\t\t\t\tif ( targetObject[ objectIndex ] === undefined ) {\n\n\t\t\t\t\tconsole.error( \" trying to bind to objectIndex of objectName, but is undefined:\", this, targetObject );\n\t\t\t\t\treturn;\n\n\t\t\t\t}\n\n\t\t\t\ttargetObject = targetObject[ objectIndex ];\n\n\t\t\t}\n\n\t\t}\n\n\t\t// resolve property\n\t\tvar nodeProperty = targetObject[ propertyName ];\n\n\t\tif ( nodeProperty === undefined ) {\n\n\t\t\tvar nodeName = parsedPath.nodeName;\n\n\t\t\tconsole.error( \" trying to update property for track: \" + nodeName +\n\t\t\t\t\t'.' + propertyName + \" but it wasn't found.\", targetObject );\n\t\t\treturn;\n\n\t\t}\n\n\t\t// determine versioning scheme\n\t\tvar versioning = this.Versioning.None;\n\n\t\tif ( targetObject.needsUpdate !== undefined ) { // material\n\n\t\t\tversioning = this.Versioning.NeedsUpdate;\n\t\t\tthis.targetObject = targetObject;\n\n\t\t} else if ( targetObject.matrixWorldNeedsUpdate !== undefined ) { // node transform\n\n\t\t\tversioning = this.Versioning.MatrixWorldNeedsUpdate;\n\t\t\tthis.targetObject = targetObject;\n\n\t\t}\n\n\t\t// determine how the property gets bound\n\t\tvar bindingType = this.BindingType.Direct;\n\n\t\tif ( propertyIndex !== undefined ) {\n\t\t\t// access a sub element of the property array (only primitives are supported right now)\n\n\t\t\tif ( propertyName === \"morphTargetInfluences\" ) {\n\t\t\t\t// potential optimization, skip this if propertyIndex is already an integer, and convert the integer string to a true integer.\n\n\t\t\t\t// support resolving morphTarget names into indices.\n\t\t\t\tif ( ! targetObject.geometry ) {\n\n\t\t\t\t\tconsole.error( ' can not bind to morphTargetInfluences becasuse node does not have a geometry', this );\n\t\t\t\t\treturn;\n\n\t\t\t\t}\n\n\t\t\t\tif ( ! targetObject.geometry.morphTargets ) {\n\n\t\t\t\t\tconsole.error( ' can not bind to morphTargetInfluences becasuse node does not have a geometry.morphTargets', this );\n\t\t\t\t\treturn;\n\n\t\t\t\t}\n\n\t\t\t\tfor ( var i = 0; i < this.node.geometry.morphTargets.length; i ++ ) {\n\n\t\t\t\t\tif ( targetObject.geometry.morphTargets[ i ].name === propertyIndex ) {\n\n\t\t\t\t\t\tpropertyIndex = i;\n\t\t\t\t\t\tbreak;\n\n\t\t\t\t\t}\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t\tbindingType = this.BindingType.ArrayElement;\n\n\t\t\tthis.resolvedProperty = nodeProperty;\n\t\t\tthis.propertyIndex = propertyIndex;\n\n\t\t} else if ( nodeProperty.fromArray !== undefined && nodeProperty.toArray !== undefined ) {\n\t\t\t// must use copy for Object3D.Euler/Quaternion\n\n\t\t\tbindingType = this.BindingType.HasFromToArray;\n\n\t\t\tthis.resolvedProperty = nodeProperty;\n\n\t\t} else if ( nodeProperty.length !== undefined ) {\n\n\t\t\tbindingType = this.BindingType.EntireArray;\n\n\t\t\tthis.resolvedProperty = nodeProperty;\n\n\t\t} else {\n\n\t\t\tthis.propertyName = propertyName;\n\n\t\t}\n\n\t\t// select getter / setter\n\t\tthis.getValue = this.GetterByBindingType[ bindingType ];\n\t\tthis.setValue = this.SetterByBindingTypeAndVersioning[ bindingType ][ versioning ];\n\n\t},\n\n\tunbind: function() {\n\n\t\tthis.node = null;\n\n\t\t// back to the prototype version of getValue / setValue\n\t\t// note: avoiding to mutate the shape of 'this' via 'delete'\n\t\tthis.getValue = this._getValue_unbound;\n\t\tthis.setValue = this._setValue_unbound;\n\n\t}\n\n};\n\nObject.assign( PropertyBinding.prototype, { // prototype, continued\n\n\t// these are used to \"bind\" a nonexistent property\n\t_getValue_unavailable: function() {},\n\t_setValue_unavailable: function() {},\n\n\t// initial state of these methods that calls 'bind'\n\t_getValue_unbound: PropertyBinding.prototype.getValue,\n\t_setValue_unbound: PropertyBinding.prototype.setValue,\n\n\tBindingType: {\n\t\tDirect: 0,\n\t\tEntireArray: 1,\n\t\tArrayElement: 2,\n\t\tHasFromToArray: 3\n\t},\n\n\tVersioning: {\n\t\tNone: 0,\n\t\tNeedsUpdate: 1,\n\t\tMatrixWorldNeedsUpdate: 2\n\t},\n\n\tGetterByBindingType: [\n\n\t\tfunction getValue_direct( buffer, offset ) {\n\n\t\t\tbuffer[ offset ] = this.node[ this.propertyName ];\n\n\t\t},\n\n\t\tfunction getValue_array( buffer, offset ) {\n\n\t\t\tvar source = this.resolvedProperty;\n\n\t\t\tfor ( var i = 0, n = source.length; i !== n; ++ i ) {\n\n\t\t\t\tbuffer[ offset ++ ] = source[ i ];\n\n\t\t\t}\n\n\t\t},\n\n\t\tfunction getValue_arrayElement( buffer, offset ) {\n\n\t\t\tbuffer[ offset ] = this.resolvedProperty[ this.propertyIndex ];\n\n\t\t},\n\n\t\tfunction getValue_toArray( buffer, offset ) {\n\n\t\t\tthis.resolvedProperty.toArray( buffer, offset );\n\n\t\t}\n\n\t],\n\n\tSetterByBindingTypeAndVersioning: [\n\n\t\t[\n\t\t\t// Direct\n\n\t\t\tfunction setValue_direct( buffer, offset ) {\n\n\t\t\t\tthis.node[ this.propertyName ] = buffer[ offset ];\n\n\t\t\t},\n\n\t\t\tfunction setValue_direct_setNeedsUpdate( buffer, offset ) {\n\n\t\t\t\tthis.node[ this.propertyName ] = buffer[ offset ];\n\t\t\t\tthis.targetObject.needsUpdate = true;\n\n\t\t\t},\n\n\t\t\tfunction setValue_direct_setMatrixWorldNeedsUpdate( buffer, offset ) {\n\n\t\t\t\tthis.node[ this.propertyName ] = buffer[ offset ];\n\t\t\t\tthis.targetObject.matrixWorldNeedsUpdate = true;\n\n\t\t\t}\n\n\t\t], [\n\n\t\t\t// EntireArray\n\n\t\t\tfunction setValue_array( buffer, offset ) {\n\n\t\t\t\tvar dest = this.resolvedProperty;\n\n\t\t\t\tfor ( var i = 0, n = dest.length; i !== n; ++ i ) {\n\n\t\t\t\t\tdest[ i ] = buffer[ offset ++ ];\n\n\t\t\t\t}\n\n\t\t\t},\n\n\t\t\tfunction setValue_array_setNeedsUpdate( buffer, offset ) {\n\n\t\t\t\tvar dest = this.resolvedProperty;\n\n\t\t\t\tfor ( var i = 0, n = dest.length; i !== n; ++ i ) {\n\n\t\t\t\t\tdest[ i ] = buffer[ offset ++ ];\n\n\t\t\t\t}\n\n\t\t\t\tthis.targetObject.needsUpdate = true;\n\n\t\t\t},\n\n\t\t\tfunction setValue_array_setMatrixWorldNeedsUpdate( buffer, offset ) {\n\n\t\t\t\tvar dest = this.resolvedProperty;\n\n\t\t\t\tfor ( var i = 0, n = dest.length; i !== n; ++ i ) {\n\n\t\t\t\t\tdest[ i ] = buffer[ offset ++ ];\n\n\t\t\t\t}\n\n\t\t\t\tthis.targetObject.matrixWorldNeedsUpdate = true;\n\n\t\t\t}\n\n\t\t], [\n\n\t\t\t// ArrayElement\n\n\t\t\tfunction setValue_arrayElement( buffer, offset ) {\n\n\t\t\t\tthis.resolvedProperty[ this.propertyIndex ] = buffer[ offset ];\n\n\t\t\t},\n\n\t\t\tfunction setValue_arrayElement_setNeedsUpdate( buffer, offset ) {\n\n\t\t\t\tthis.resolvedProperty[ this.propertyIndex ] = buffer[ offset ];\n\t\t\t\tthis.targetObject.needsUpdate = true;\n\n\t\t\t},\n\n\t\t\tfunction setValue_arrayElement_setMatrixWorldNeedsUpdate( buffer, offset ) {\n\n\t\t\t\tthis.resolvedProperty[ this.propertyIndex ] = buffer[ offset ];\n\t\t\t\tthis.targetObject.matrixWorldNeedsUpdate = true;\n\n\t\t\t}\n\n\t\t], [\n\n\t\t\t// HasToFromArray\n\n\t\t\tfunction setValue_fromArray( buffer, offset ) {\n\n\t\t\t\tthis.resolvedProperty.fromArray( buffer, offset );\n\n\t\t\t},\n\n\t\t\tfunction setValue_fromArray_setNeedsUpdate( buffer, offset ) {\n\n\t\t\t\tthis.resolvedProperty.fromArray( buffer, offset );\n\t\t\t\tthis.targetObject.needsUpdate = true;\n\n\t\t\t},\n\n\t\t\tfunction setValue_fromArray_setMatrixWorldNeedsUpdate( buffer, offset ) {\n\n\t\t\t\tthis.resolvedProperty.fromArray( buffer, offset );\n\t\t\t\tthis.targetObject.matrixWorldNeedsUpdate = true;\n\n\t\t\t}\n\n\t\t]\n\n\t]\n\n} );\n\nPropertyBinding.Composite =\n\t\tfunction( targetGroup, path, optionalParsedPath ) {\n\n\tvar parsedPath = optionalParsedPath ||\n\t\t\tPropertyBinding.parseTrackName( path );\n\n\tthis._targetGroup = targetGroup;\n\tthis._bindings = targetGroup.subscribe_( path, parsedPath );\n\n};\n\nPropertyBinding.Composite.prototype = {\n\n\tconstructor: PropertyBinding.Composite,\n\n\tgetValue: function( array, offset ) {\n\n\t\tthis.bind(); // bind all binding\n\n\t\tvar firstValidIndex = this._targetGroup.nCachedObjects_,\n\t\t\tbinding = this._bindings[ firstValidIndex ];\n\n\t\t// and only call .getValue on the first\n\t\tif ( binding !== undefined ) binding.getValue( array, offset );\n\n\t},\n\n\tsetValue: function( array, offset ) {\n\n\t\tvar bindings = this._bindings;\n\n\t\tfor ( var i = this._targetGroup.nCachedObjects_,\n\t\t\t\tn = bindings.length; i !== n; ++ i ) {\n\n\t\t\tbindings[ i ].setValue( array, offset );\n\n\t\t}\n\n\t},\n\n\tbind: function() {\n\n\t\tvar bindings = this._bindings;\n\n\t\tfor ( var i = this._targetGroup.nCachedObjects_,\n\t\t\t\tn = bindings.length; i !== n; ++ i ) {\n\n\t\t\tbindings[ i ].bind();\n\n\t\t}\n\n\t},\n\n\tunbind: function() {\n\n\t\tvar bindings = this._bindings;\n\n\t\tfor ( var i = this._targetGroup.nCachedObjects_,\n\t\t\t\tn = bindings.length; i !== n; ++ i ) {\n\n\t\t\tbindings[ i ].unbind();\n\n\t\t}\n\n\t}\n\n};\n\nPropertyBinding.create = function( root, path, parsedPath ) {\n\n\tif ( ! ( (root && root.isAnimationObjectGroup) ) ) {\n\n\t\treturn new PropertyBinding( root, path, parsedPath );\n\n\t} else {\n\n\t\treturn new PropertyBinding.Composite( root, path, parsedPath );\n\n\t}\n\n};\n\nPropertyBinding.parseTrackName = function( trackName ) {\n\n\t// matches strings in the form of:\n\t// nodeName.property\n\t// nodeName.property[accessor]\n\t// nodeName.material.property[accessor]\n\t// uuid.property[accessor]\n\t// uuid.objectName[objectIndex].propertyName[propertyIndex]\n\t// parentName/nodeName.property\n\t// parentName/parentName/nodeName.property[index]\n\t// .bone[Armature.DEF_cog].position\n\t// scene:helium_balloon_model:helium_balloon_model.position\n\t// created and tested via https://regex101.com/#javascript\n\n\tvar re = /^((?:\\w+[\\/:])*)(\\w+)?(?:\\.(\\w+)(?:\\[(.+)\\])?)?\\.(\\w+)(?:\\[(.+)\\])?$/;\n\tvar matches = re.exec( trackName );\n\n\tif ( ! matches ) {\n\n\t\tthrow new Error( \"cannot parse trackName at all: \" + trackName );\n\n\t}\n\n\tvar results = {\n\t\t// directoryName: matches[ 1 ], // (tschw) currently unused\n\t\tnodeName: matches[ 2 ], \t// allowed to be null, specified root node.\n\t\tobjectName: matches[ 3 ],\n\t\tobjectIndex: matches[ 4 ],\n\t\tpropertyName: matches[ 5 ],\n\t\tpropertyIndex: matches[ 6 ]\t// allowed to be null, specifies that the whole property is set.\n\t};\n\n\tif ( results.propertyName === null || results.propertyName.length === 0 ) {\n\n\t\tthrow new Error( \"can not parse propertyName from trackName: \" + trackName );\n\n\t}\n\n\treturn results;\n\n};\n\nPropertyBinding.findNode = function( root, nodeName ) {\n\n\tif ( ! nodeName || nodeName === \"\" || nodeName === \"root\" || nodeName === \".\" || nodeName === -1 || nodeName === root.name || nodeName === root.uuid ) {\n\n\t\treturn root;\n\n\t}\n\n\t// search into skeleton bones.\n\tif ( root.skeleton ) {\n\n\t\tvar searchSkeleton = function( skeleton ) {\n\n\t\t\tfor( var i = 0; i < skeleton.bones.length; i ++ ) {\n\n\t\t\t\tvar bone = skeleton.bones[ i ];\n\n\t\t\t\tif ( bone.name === nodeName ) {\n\n\t\t\t\t\treturn bone;\n\n\t\t\t\t}\n\t\t\t}\n\n\t\t\treturn null;\n\n\t\t};\n\n\t\tvar bone = searchSkeleton( root.skeleton );\n\n\t\tif ( bone ) {\n\n\t\t\treturn bone;\n\n\t\t}\n\t}\n\n\t// search into node subtree.\n\tif ( root.children ) {\n\n\t\tvar searchNodeSubtree = function( children ) {\n\n\t\t\tfor( var i = 0; i < children.length; i ++ ) {\n\n\t\t\t\tvar childNode = children[ i ];\n\n\t\t\t\tif ( childNode.name === nodeName || childNode.uuid === nodeName ) {\n\n\t\t\t\t\treturn childNode;\n\n\t\t\t\t}\n\n\t\t\t\tvar result = searchNodeSubtree( childNode.children );\n\n\t\t\t\tif ( result ) return result;\n\n\t\t\t}\n\n\t\t\treturn null;\n\n\t\t};\n\n\t\tvar subTreeNode = searchNodeSubtree( root.children );\n\n\t\tif ( subTreeNode ) {\n\n\t\t\treturn subTreeNode;\n\n\t\t}\n\n\t}\n\n\treturn null;\n\n};\n\n\nexport { PropertyBinding };\n","import { PropertyBinding } from './PropertyBinding';\nimport { _Math } from '../math/Math';\n\n/**\n *\n * A group of objects that receives a shared animation state.\n *\n * Usage:\n *\n * \t-\tAdd objects you would otherwise pass as 'root' to the\n * \t\tconstructor or the .clipAction method of AnimationMixer.\n *\n * \t-\tInstead pass this object as 'root'.\n *\n * \t-\tYou can also add and remove objects later when the mixer\n * \t\tis running.\n *\n * Note:\n *\n * \tObjects of this class appear as one object to the mixer,\n * \tso cache control of the individual objects must be done\n * \ton the group.\n *\n * Limitation:\n *\n * \t- \tThe animated properties must be compatible among the\n * \t\tall objects in the group.\n *\n * -\tA single property can either be controlled through a\n * \ttarget group or directly, but not both.\n *\n * @author tschw\n */\n\nfunction AnimationObjectGroup( var_args ) {\n\n\tthis.uuid = _Math.generateUUID();\n\n\t// cached objects followed by the active ones\n\tthis._objects = Array.prototype.slice.call( arguments );\n\n\tthis.nCachedObjects_ = 0;\t\t\t// threshold\n\t// note: read by PropertyBinding.Composite\n\n\tvar indices = {};\n\tthis._indicesByUUID = indices;\t\t// for bookkeeping\n\n\tfor ( var i = 0, n = arguments.length; i !== n; ++ i ) {\n\n\t\tindices[ arguments[ i ].uuid ] = i;\n\n\t}\n\n\tthis._paths = [];\t\t\t\t\t// inside: string\n\tthis._parsedPaths = [];\t\t\t\t// inside: { we don't care, here }\n\tthis._bindings = []; \t\t\t\t// inside: Array< PropertyBinding >\n\tthis._bindingsIndicesByPath = {}; \t// inside: indices in these arrays\n\n\tvar scope = this;\n\n\tthis.stats = {\n\n\t\tobjects: {\n\t\t\tget total() { return scope._objects.length; },\n\t\t\tget inUse() { return this.total - scope.nCachedObjects_; }\n\t\t},\n\n\t\tget bindingsPerObject() { return scope._bindings.length; }\n\n\t};\n\n}\n\nAnimationObjectGroup.prototype = {\n\n\tconstructor: AnimationObjectGroup,\n\n\tisAnimationObjectGroup: true,\n\n\tadd: function( var_args ) {\n\n\t\tvar objects = this._objects,\n\t\t\tnObjects = objects.length,\n\t\t\tnCachedObjects = this.nCachedObjects_,\n\t\t\tindicesByUUID = this._indicesByUUID,\n\t\t\tpaths = this._paths,\n\t\t\tparsedPaths = this._parsedPaths,\n\t\t\tbindings = this._bindings,\n\t\t\tnBindings = bindings.length;\n\n\t\tfor ( var i = 0, n = arguments.length; i !== n; ++ i ) {\n\n\t\t\tvar object = arguments[ i ],\n\t\t\t\tuuid = object.uuid,\n\t\t\t\tindex = indicesByUUID[ uuid ];\n\n\t\t\tif ( index === undefined ) {\n\n\t\t\t\t// unknown object -> add it to the ACTIVE region\n\n\t\t\t\tindex = nObjects ++;\n\t\t\t\tindicesByUUID[ uuid ] = index;\n\t\t\t\tobjects.push( object );\n\n\t\t\t\t// accounting is done, now do the same for all bindings\n\n\t\t\t\tfor ( var j = 0, m = nBindings; j !== m; ++ j ) {\n\n\t\t\t\t\tbindings[ j ].push(\n\t\t\t\t\t\t\tnew PropertyBinding(\n\t\t\t\t\t\t\t\tobject, paths[ j ], parsedPaths[ j ] ) );\n\n\t\t\t\t}\n\n\t\t\t} else if ( index < nCachedObjects ) {\n\n\t\t\t\tvar knownObject = objects[ index ];\n\n\t\t\t\t// move existing object to the ACTIVE region\n\n\t\t\t\tvar firstActiveIndex = -- nCachedObjects,\n\t\t\t\t\tlastCachedObject = objects[ firstActiveIndex ];\n\n\t\t\t\tindicesByUUID[ lastCachedObject.uuid ] = index;\n\t\t\t\tobjects[ index ] = lastCachedObject;\n\n\t\t\t\tindicesByUUID[ uuid ] = firstActiveIndex;\n\t\t\t\tobjects[ firstActiveIndex ] = object;\n\n\t\t\t\t// accounting is done, now do the same for all bindings\n\n\t\t\t\tfor ( var j = 0, m = nBindings; j !== m; ++ j ) {\n\n\t\t\t\t\tvar bindingsForPath = bindings[ j ],\n\t\t\t\t\t\tlastCached = bindingsForPath[ firstActiveIndex ],\n\t\t\t\t\t\tbinding = bindingsForPath[ index ];\n\n\t\t\t\t\tbindingsForPath[ index ] = lastCached;\n\n\t\t\t\t\tif ( binding === undefined ) {\n\n\t\t\t\t\t\t// since we do not bother to create new bindings\n\t\t\t\t\t\t// for objects that are cached, the binding may\n\t\t\t\t\t\t// or may not exist\n\n\t\t\t\t\t\tbinding = new PropertyBinding(\n\t\t\t\t\t\t\t\tobject, paths[ j ], parsedPaths[ j ] );\n\n\t\t\t\t\t}\n\n\t\t\t\t\tbindingsForPath[ firstActiveIndex ] = binding;\n\n\t\t\t\t}\n\n\t\t\t} else if ( objects[ index ] !== knownObject) {\n\n\t\t\t\tconsole.error( \"Different objects with the same UUID \" +\n\t\t\t\t\t\t\"detected. Clean the caches or recreate your \" +\n\t\t\t\t\t\t\"infrastructure when reloading scenes...\" );\n\n\t\t\t} // else the object is already where we want it to be\n\n\t\t} // for arguments\n\n\t\tthis.nCachedObjects_ = nCachedObjects;\n\n\t},\n\n\tremove: function( var_args ) {\n\n\t\tvar objects = this._objects,\n\t\t\tnCachedObjects = this.nCachedObjects_,\n\t\t\tindicesByUUID = this._indicesByUUID,\n\t\t\tbindings = this._bindings,\n\t\t\tnBindings = bindings.length;\n\n\t\tfor ( var i = 0, n = arguments.length; i !== n; ++ i ) {\n\n\t\t\tvar object = arguments[ i ],\n\t\t\t\tuuid = object.uuid,\n\t\t\t\tindex = indicesByUUID[ uuid ];\n\n\t\t\tif ( index !== undefined && index >= nCachedObjects ) {\n\n\t\t\t\t// move existing object into the CACHED region\n\n\t\t\t\tvar lastCachedIndex = nCachedObjects ++,\n\t\t\t\t\tfirstActiveObject = objects[ lastCachedIndex ];\n\n\t\t\t\tindicesByUUID[ firstActiveObject.uuid ] = index;\n\t\t\t\tobjects[ index ] = firstActiveObject;\n\n\t\t\t\tindicesByUUID[ uuid ] = lastCachedIndex;\n\t\t\t\tobjects[ lastCachedIndex ] = object;\n\n\t\t\t\t// accounting is done, now do the same for all bindings\n\n\t\t\t\tfor ( var j = 0, m = nBindings; j !== m; ++ j ) {\n\n\t\t\t\t\tvar bindingsForPath = bindings[ j ],\n\t\t\t\t\t\tfirstActive = bindingsForPath[ lastCachedIndex ],\n\t\t\t\t\t\tbinding = bindingsForPath[ index ];\n\n\t\t\t\t\tbindingsForPath[ index ] = firstActive;\n\t\t\t\t\tbindingsForPath[ lastCachedIndex ] = binding;\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t} // for arguments\n\n\t\tthis.nCachedObjects_ = nCachedObjects;\n\n\t},\n\n\t// remove & forget\n\tuncache: function( var_args ) {\n\n\t\tvar objects = this._objects,\n\t\t\tnObjects = objects.length,\n\t\t\tnCachedObjects = this.nCachedObjects_,\n\t\t\tindicesByUUID = this._indicesByUUID,\n\t\t\tbindings = this._bindings,\n\t\t\tnBindings = bindings.length;\n\n\t\tfor ( var i = 0, n = arguments.length; i !== n; ++ i ) {\n\n\t\t\tvar object = arguments[ i ],\n\t\t\t\tuuid = object.uuid,\n\t\t\t\tindex = indicesByUUID[ uuid ];\n\n\t\t\tif ( index !== undefined ) {\n\n\t\t\t\tdelete indicesByUUID[ uuid ];\n\n\t\t\t\tif ( index < nCachedObjects ) {\n\n\t\t\t\t\t// object is cached, shrink the CACHED region\n\n\t\t\t\t\tvar firstActiveIndex = -- nCachedObjects,\n\t\t\t\t\t\tlastCachedObject = objects[ firstActiveIndex ],\n\t\t\t\t\t\tlastIndex = -- nObjects,\n\t\t\t\t\t\tlastObject = objects[ lastIndex ];\n\n\t\t\t\t\t// last cached object takes this object's place\n\t\t\t\t\tindicesByUUID[ lastCachedObject.uuid ] = index;\n\t\t\t\t\tobjects[ index ] = lastCachedObject;\n\n\t\t\t\t\t// last object goes to the activated slot and pop\n\t\t\t\t\tindicesByUUID[ lastObject.uuid ] = firstActiveIndex;\n\t\t\t\t\tobjects[ firstActiveIndex ] = lastObject;\n\t\t\t\t\tobjects.pop();\n\n\t\t\t\t\t// accounting is done, now do the same for all bindings\n\n\t\t\t\t\tfor ( var j = 0, m = nBindings; j !== m; ++ j ) {\n\n\t\t\t\t\t\tvar bindingsForPath = bindings[ j ],\n\t\t\t\t\t\t\tlastCached = bindingsForPath[ firstActiveIndex ],\n\t\t\t\t\t\t\tlast = bindingsForPath[ lastIndex ];\n\n\t\t\t\t\t\tbindingsForPath[ index ] = lastCached;\n\t\t\t\t\t\tbindingsForPath[ firstActiveIndex ] = last;\n\t\t\t\t\t\tbindingsForPath.pop();\n\n\t\t\t\t\t}\n\n\t\t\t\t} else {\n\n\t\t\t\t\t// object is active, just swap with the last and pop\n\n\t\t\t\t\tvar lastIndex = -- nObjects,\n\t\t\t\t\t\tlastObject = objects[ lastIndex ];\n\n\t\t\t\t\tindicesByUUID[ lastObject.uuid ] = index;\n\t\t\t\t\tobjects[ index ] = lastObject;\n\t\t\t\t\tobjects.pop();\n\n\t\t\t\t\t// accounting is done, now do the same for all bindings\n\n\t\t\t\t\tfor ( var j = 0, m = nBindings; j !== m; ++ j ) {\n\n\t\t\t\t\t\tvar bindingsForPath = bindings[ j ];\n\n\t\t\t\t\t\tbindingsForPath[ index ] = bindingsForPath[ lastIndex ];\n\t\t\t\t\t\tbindingsForPath.pop();\n\n\t\t\t\t\t}\n\n\t\t\t\t} // cached or active\n\n\t\t\t} // if object is known\n\n\t\t} // for arguments\n\n\t\tthis.nCachedObjects_ = nCachedObjects;\n\n\t},\n\n\t// Internal interface used by befriended PropertyBinding.Composite:\n\n\tsubscribe_: function( path, parsedPath ) {\n\t\t// returns an array of bindings for the given path that is changed\n\t\t// according to the contained objects in the group\n\n\t\tvar indicesByPath = this._bindingsIndicesByPath,\n\t\t\tindex = indicesByPath[ path ],\n\t\t\tbindings = this._bindings;\n\n\t\tif ( index !== undefined ) return bindings[ index ];\n\n\t\tvar paths = this._paths,\n\t\t\tparsedPaths = this._parsedPaths,\n\t\t\tobjects = this._objects,\n\t\t\tnObjects = objects.length,\n\t\t\tnCachedObjects = this.nCachedObjects_,\n\t\t\tbindingsForPath = new Array( nObjects );\n\n\t\tindex = bindings.length;\n\n\t\tindicesByPath[ path ] = index;\n\n\t\tpaths.push( path );\n\t\tparsedPaths.push( parsedPath );\n\t\tbindings.push( bindingsForPath );\n\n\t\tfor ( var i = nCachedObjects,\n\t\t\t\tn = objects.length; i !== n; ++ i ) {\n\n\t\t\tvar object = objects[ i ];\n\n\t\t\tbindingsForPath[ i ] =\n\t\t\t\t\tnew PropertyBinding( object, path, parsedPath );\n\n\t\t}\n\n\t\treturn bindingsForPath;\n\n\t},\n\n\tunsubscribe_: function( path ) {\n\t\t// tells the group to forget about a property path and no longer\n\t\t// update the array previously obtained with 'subscribe_'\n\n\t\tvar indicesByPath = this._bindingsIndicesByPath,\n\t\t\tindex = indicesByPath[ path ];\n\n\t\tif ( index !== undefined ) {\n\n\t\t\tvar paths = this._paths,\n\t\t\t\tparsedPaths = this._parsedPaths,\n\t\t\t\tbindings = this._bindings,\n\t\t\t\tlastBindingsIndex = bindings.length - 1,\n\t\t\t\tlastBindings = bindings[ lastBindingsIndex ],\n\t\t\t\tlastBindingsPath = path[ lastBindingsIndex ];\n\n\t\t\tindicesByPath[ lastBindingsPath ] = index;\n\n\t\t\tbindings[ index ] = lastBindings;\n\t\t\tbindings.pop();\n\n\t\t\tparsedPaths[ index ] = parsedPaths[ lastBindingsIndex ];\n\t\t\tparsedPaths.pop();\n\n\t\t\tpaths[ index ] = paths[ lastBindingsIndex ];\n\t\t\tpaths.pop();\n\n\t\t}\n\n\t}\n\n};\n\n\n\nexport { AnimationObjectGroup };\n","import { WrapAroundEnding, ZeroCurvatureEnding, ZeroSlopeEnding, LoopPingPong, LoopOnce, LoopRepeat } from '../constants';\n\n/**\n *\n * Action provided by AnimationMixer for scheduling clip playback on specific\n * objects.\n *\n * @author Ben Houston / http://clara.io/\n * @author David Sarno / http://lighthaus.us/\n * @author tschw\n *\n */\n\nfunction AnimationAction( mixer, clip, localRoot ) {\n\n\tthis._mixer = mixer;\n\tthis._clip = clip;\n\tthis._localRoot = localRoot || null;\n\n\tvar tracks = clip.tracks,\n\t\tnTracks = tracks.length,\n\t\tinterpolants = new Array( nTracks );\n\n\tvar interpolantSettings = {\n\t\t\tendingStart: \tZeroCurvatureEnding,\n\t\t\tendingEnd:\t\tZeroCurvatureEnding\n\t};\n\n\tfor ( var i = 0; i !== nTracks; ++ i ) {\n\n\t\tvar interpolant = tracks[ i ].createInterpolant( null );\n\t\tinterpolants[ i ] = interpolant;\n\t\tinterpolant.settings = interpolantSettings;\n\n\t}\n\n\tthis._interpolantSettings = interpolantSettings;\n\n\tthis._interpolants = interpolants;\t// bound by the mixer\n\n\t// inside: PropertyMixer (managed by the mixer)\n\tthis._propertyBindings = new Array( nTracks );\n\n\tthis._cacheIndex = null;\t\t\t// for the memory manager\n\tthis._byClipCacheIndex = null;\t\t// for the memory manager\n\n\tthis._timeScaleInterpolant = null;\n\tthis._weightInterpolant = null;\n\n\tthis.loop = LoopRepeat;\n\tthis._loopCount = -1;\n\n\t// global mixer time when the action is to be started\n\t// it's set back to 'null' upon start of the action\n\tthis._startTime = null;\n\n\t// scaled local time of the action\n\t// gets clamped or wrapped to 0..clip.duration according to loop\n\tthis.time = 0;\n\n\tthis.timeScale = 1;\n\tthis._effectiveTimeScale = 1;\n\n\tthis.weight = 1;\n\tthis._effectiveWeight = 1;\n\n\tthis.repetitions = Infinity; \t\t// no. of repetitions when looping\n\n\tthis.paused = false;\t\t\t\t// false -> zero effective time scale\n\tthis.enabled = true;\t\t\t\t// true -> zero effective weight\n\n\tthis.clampWhenFinished \t= false;\t// keep feeding the last frame?\n\n\tthis.zeroSlopeAtStart \t= true;\t\t// for smooth interpolation w/o separate\n\tthis.zeroSlopeAtEnd\t\t= true;\t\t// clips for start, loop and end\n\n};\n\nAnimationAction.prototype = {\n\n\tconstructor: AnimationAction,\n\n\t// State & Scheduling\n\n\tplay: function() {\n\n\t\tthis._mixer._activateAction( this );\n\n\t\treturn this;\n\n\t},\n\n\tstop: function() {\n\n\t\tthis._mixer._deactivateAction( this );\n\n\t\treturn this.reset();\n\n\t},\n\n\treset: function() {\n\n\t\tthis.paused = false;\n\t\tthis.enabled = true;\n\n\t\tthis.time = 0;\t\t\t// restart clip\n\t\tthis._loopCount = -1;\t// forget previous loops\n\t\tthis._startTime = null;\t// forget scheduling\n\n\t\treturn this.stopFading().stopWarping();\n\n\t},\n\n\tisRunning: function() {\n\n\t\treturn this.enabled && ! this.paused && this.timeScale !== 0 &&\n\t\t\t\tthis._startTime === null && this._mixer._isActiveAction( this );\n\n\t},\n\n\t// return true when play has been called\n\tisScheduled: function() {\n\n\t\treturn this._mixer._isActiveAction( this );\n\n\t},\n\n\tstartAt: function( time ) {\n\n\t\tthis._startTime = time;\n\n\t\treturn this;\n\n\t},\n\n\tsetLoop: function( mode, repetitions ) {\n\n\t\tthis.loop = mode;\n\t\tthis.repetitions = repetitions;\n\n\t\treturn this;\n\n\t},\n\n\t// Weight\n\n\t// set the weight stopping any scheduled fading\n\t// although .enabled = false yields an effective weight of zero, this\n\t// method does *not* change .enabled, because it would be confusing\n\tsetEffectiveWeight: function( weight ) {\n\n\t\tthis.weight = weight;\n\n\t\t// note: same logic as when updated at runtime\n\t\tthis._effectiveWeight = this.enabled ? weight : 0;\n\n\t\treturn this.stopFading();\n\n\t},\n\n\t// return the weight considering fading and .enabled\n\tgetEffectiveWeight: function() {\n\n\t\treturn this._effectiveWeight;\n\n\t},\n\n\tfadeIn: function( duration ) {\n\n\t\treturn this._scheduleFading( duration, 0, 1 );\n\n\t},\n\n\tfadeOut: function( duration ) {\n\n\t\treturn this._scheduleFading( duration, 1, 0 );\n\n\t},\n\n\tcrossFadeFrom: function( fadeOutAction, duration, warp ) {\n\n\t\tfadeOutAction.fadeOut( duration );\n\t\tthis.fadeIn( duration );\n\n\t\tif( warp ) {\n\n\t\t\tvar fadeInDuration = this._clip.duration,\n\t\t\t\tfadeOutDuration = fadeOutAction._clip.duration,\n\n\t\t\t\tstartEndRatio = fadeOutDuration / fadeInDuration,\n\t\t\t\tendStartRatio = fadeInDuration / fadeOutDuration;\n\n\t\t\tfadeOutAction.warp( 1.0, startEndRatio, duration );\n\t\t\tthis.warp( endStartRatio, 1.0, duration );\n\n\t\t}\n\n\t\treturn this;\n\n\t},\n\n\tcrossFadeTo: function( fadeInAction, duration, warp ) {\n\n\t\treturn fadeInAction.crossFadeFrom( this, duration, warp );\n\n\t},\n\n\tstopFading: function() {\n\n\t\tvar weightInterpolant = this._weightInterpolant;\n\n\t\tif ( weightInterpolant !== null ) {\n\n\t\t\tthis._weightInterpolant = null;\n\t\t\tthis._mixer._takeBackControlInterpolant( weightInterpolant );\n\n\t\t}\n\n\t\treturn this;\n\n\t},\n\n\t// Time Scale Control\n\n\t// set the weight stopping any scheduled warping\n\t// although .paused = true yields an effective time scale of zero, this\n\t// method does *not* change .paused, because it would be confusing\n\tsetEffectiveTimeScale: function( timeScale ) {\n\n\t\tthis.timeScale = timeScale;\n\t\tthis._effectiveTimeScale = this.paused ? 0 :timeScale;\n\n\t\treturn this.stopWarping();\n\n\t},\n\n\t// return the time scale considering warping and .paused\n\tgetEffectiveTimeScale: function() {\n\n\t\treturn this._effectiveTimeScale;\n\n\t},\n\n\tsetDuration: function( duration ) {\n\n\t\tthis.timeScale = this._clip.duration / duration;\n\n\t\treturn this.stopWarping();\n\n\t},\n\n\tsyncWith: function( action ) {\n\n\t\tthis.time = action.time;\n\t\tthis.timeScale = action.timeScale;\n\n\t\treturn this.stopWarping();\n\n\t},\n\n\thalt: function( duration ) {\n\n\t\treturn this.warp( this._effectiveTimeScale, 0, duration );\n\n\t},\n\n\twarp: function( startTimeScale, endTimeScale, duration ) {\n\n\t\tvar mixer = this._mixer, now = mixer.time,\n\t\t\tinterpolant = this._timeScaleInterpolant,\n\n\t\t\ttimeScale = this.timeScale;\n\n\t\tif ( interpolant === null ) {\n\n\t\t\tinterpolant = mixer._lendControlInterpolant(),\n\t\t\tthis._timeScaleInterpolant = interpolant;\n\n\t\t}\n\n\t\tvar times = interpolant.parameterPositions,\n\t\t\tvalues = interpolant.sampleValues;\n\n\t\ttimes[ 0 ] = now;\n\t\ttimes[ 1 ] = now + duration;\n\n\t\tvalues[ 0 ] = startTimeScale / timeScale;\n\t\tvalues[ 1 ] = endTimeScale / timeScale;\n\n\t\treturn this;\n\n\t},\n\n\tstopWarping: function() {\n\n\t\tvar timeScaleInterpolant = this._timeScaleInterpolant;\n\n\t\tif ( timeScaleInterpolant !== null ) {\n\n\t\t\tthis._timeScaleInterpolant = null;\n\t\t\tthis._mixer._takeBackControlInterpolant( timeScaleInterpolant );\n\n\t\t}\n\n\t\treturn this;\n\n\t},\n\n\t// Object Accessors\n\n\tgetMixer: function() {\n\n\t\treturn this._mixer;\n\n\t},\n\n\tgetClip: function() {\n\n\t\treturn this._clip;\n\n\t},\n\n\tgetRoot: function() {\n\n\t\treturn this._localRoot || this._mixer._root;\n\n\t},\n\n\t// Interna\n\n\t_update: function( time, deltaTime, timeDirection, accuIndex ) {\n\t\t// called by the mixer\n\n\t\tvar startTime = this._startTime;\n\n\t\tif ( startTime !== null ) {\n\n\t\t\t// check for scheduled start of action\n\n\t\t\tvar timeRunning = ( time - startTime ) * timeDirection;\n\t\t\tif ( timeRunning < 0 || timeDirection === 0 ) {\n\n\t\t\t\treturn; // yet to come / don't decide when delta = 0\n\n\t\t\t}\n\n\t\t\t// start\n\n\t\t\tthis._startTime = null; // unschedule\n\t\t\tdeltaTime = timeDirection * timeRunning;\n\n\t\t}\n\n\t\t// apply time scale and advance time\n\n\t\tdeltaTime *= this._updateTimeScale( time );\n\t\tvar clipTime = this._updateTime( deltaTime );\n\n\t\t// note: _updateTime may disable the action resulting in\n\t\t// an effective weight of 0\n\n\t\tvar weight = this._updateWeight( time );\n\n\t\tif ( weight > 0 ) {\n\n\t\t\tvar interpolants = this._interpolants;\n\t\t\tvar propertyMixers = this._propertyBindings;\n\n\t\t\tfor ( var j = 0, m = interpolants.length; j !== m; ++ j ) {\n\n\t\t\t\tinterpolants[ j ].evaluate( clipTime );\n\t\t\t\tpropertyMixers[ j ].accumulate( accuIndex, weight );\n\n\t\t\t}\n\n\t\t}\n\n\t},\n\n\t_updateWeight: function( time ) {\n\n\t\tvar weight = 0;\n\n\t\tif ( this.enabled ) {\n\n\t\t\tweight = this.weight;\n\t\t\tvar interpolant = this._weightInterpolant;\n\n\t\t\tif ( interpolant !== null ) {\n\n\t\t\t\tvar interpolantValue = interpolant.evaluate( time )[ 0 ];\n\n\t\t\t\tweight *= interpolantValue;\n\n\t\t\t\tif ( time > interpolant.parameterPositions[ 1 ] ) {\n\n\t\t\t\t\tthis.stopFading();\n\n\t\t\t\t\tif ( interpolantValue === 0 ) {\n\n\t\t\t\t\t\t// faded out, disable\n\t\t\t\t\t\tthis.enabled = false;\n\n\t\t\t\t\t}\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t}\n\n\t\tthis._effectiveWeight = weight;\n\t\treturn weight;\n\n\t},\n\n\t_updateTimeScale: function( time ) {\n\n\t\tvar timeScale = 0;\n\n\t\tif ( ! this.paused ) {\n\n\t\t\ttimeScale = this.timeScale;\n\n\t\t\tvar interpolant = this._timeScaleInterpolant;\n\n\t\t\tif ( interpolant !== null ) {\n\n\t\t\t\tvar interpolantValue = interpolant.evaluate( time )[ 0 ];\n\n\t\t\t\ttimeScale *= interpolantValue;\n\n\t\t\t\tif ( time > interpolant.parameterPositions[ 1 ] ) {\n\n\t\t\t\t\tthis.stopWarping();\n\n\t\t\t\t\tif ( timeScale === 0 ) {\n\n\t\t\t\t\t\t// motion has halted, pause\n\t\t\t\t\t\tthis.paused = true;\n\n\t\t\t\t\t} else {\n\n\t\t\t\t\t\t// warp done - apply final time scale\n\t\t\t\t\t\tthis.timeScale = timeScale;\n\n\t\t\t\t\t}\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t}\n\n\t\tthis._effectiveTimeScale = timeScale;\n\t\treturn timeScale;\n\n\t},\n\n\t_updateTime: function( deltaTime ) {\n\n\t\tvar time = this.time + deltaTime;\n\n\t\tif ( deltaTime === 0 ) return time;\n\n\t\tvar duration = this._clip.duration,\n\n\t\t\tloop = this.loop,\n\t\t\tloopCount = this._loopCount;\n\n\t\tif ( loop === LoopOnce ) {\n\n\t\t\tif ( loopCount === -1 ) {\n\t\t\t\t// just started\n\n\t\t\t\tthis.loopCount = 0;\n\t\t\t\tthis._setEndings( true, true, false );\n\n\t\t\t}\n\n\t\t\thandle_stop: {\n\n\t\t\t\tif ( time >= duration ) {\n\n\t\t\t\t\ttime = duration;\n\n\t\t\t\t} else if ( time < 0 ) {\n\n\t\t\t\t\ttime = 0;\n\n\t\t\t\t} else break handle_stop;\n\n\t\t\t\tif ( this.clampWhenFinished ) this.paused = true;\n\t\t\t\telse this.enabled = false;\n\n\t\t\t\tthis._mixer.dispatchEvent( {\n\t\t\t\t\ttype: 'finished', action: this,\n\t\t\t\t\tdirection: deltaTime < 0 ? -1 : 1\n\t\t\t\t} );\n\n\t\t\t}\n\n\t\t} else { // repetitive Repeat or PingPong\n\n\t\t\tvar pingPong = ( loop === LoopPingPong );\n\n\t\t\tif ( loopCount === -1 ) {\n\t\t\t\t// just started\n\n\t\t\t\tif ( deltaTime >= 0 ) {\n\n\t\t\t\t\tloopCount = 0;\n\n\t\t\t\t\tthis._setEndings(\n\t\t\t\t\t\t\ttrue, this.repetitions === 0, pingPong );\n\n\t\t\t\t} else {\n\n\t\t\t\t\t// when looping in reverse direction, the initial\n\t\t\t\t\t// transition through zero counts as a repetition,\n\t\t\t\t\t// so leave loopCount at -1\n\n\t\t\t\t\tthis._setEndings(\n\t\t\t\t\t\t\tthis.repetitions === 0, true, pingPong );\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t\tif ( time >= duration || time < 0 ) {\n\t\t\t\t// wrap around\n\n\t\t\t\tvar loopDelta = Math.floor( time / duration ); // signed\n\t\t\t\ttime -= duration * loopDelta;\n\n\t\t\t\tloopCount += Math.abs( loopDelta );\n\n\t\t\t\tvar pending = this.repetitions - loopCount;\n\n\t\t\t\tif ( pending < 0 ) {\n\t\t\t\t\t// have to stop (switch state, clamp time, fire event)\n\n\t\t\t\t\tif ( this.clampWhenFinished ) this.paused = true;\n\t\t\t\t\telse this.enabled = false;\n\n\t\t\t\t\ttime = deltaTime > 0 ? duration : 0;\n\n\t\t\t\t\tthis._mixer.dispatchEvent( {\n\t\t\t\t\t\ttype: 'finished', action: this,\n\t\t\t\t\t\tdirection: deltaTime > 0 ? 1 : -1\n\t\t\t\t\t} );\n\n\t\t\t\t} else {\n\t\t\t\t\t// keep running\n\n\t\t\t\t\tif ( pending === 0 ) {\n\t\t\t\t\t\t// entering the last round\n\n\t\t\t\t\t\tvar atStart = deltaTime < 0;\n\t\t\t\t\t\tthis._setEndings( atStart, ! atStart, pingPong );\n\n\t\t\t\t\t} else {\n\n\t\t\t\t\t\tthis._setEndings( false, false, pingPong );\n\n\t\t\t\t\t}\n\n\t\t\t\t\tthis._loopCount = loopCount;\n\n\t\t\t\t\tthis._mixer.dispatchEvent( {\n\t\t\t\t\t\ttype: 'loop', action: this, loopDelta: loopDelta\n\t\t\t\t\t} );\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t\tif ( pingPong && ( loopCount & 1 ) === 1 ) {\n\t\t\t\t// invert time for the \"pong round\"\n\n\t\t\t\tthis.time = time;\n\t\t\t\treturn duration - time;\n\n\t\t\t}\n\n\t\t}\n\n\t\tthis.time = time;\n\t\treturn time;\n\n\t},\n\n\t_setEndings: function( atStart, atEnd, pingPong ) {\n\n\t\tvar settings = this._interpolantSettings;\n\n\t\tif ( pingPong ) {\n\n\t\t\tsettings.endingStart \t= ZeroSlopeEnding;\n\t\t\tsettings.endingEnd\t\t= ZeroSlopeEnding;\n\n\t\t} else {\n\n\t\t\t// assuming for LoopOnce atStart == atEnd == true\n\n\t\t\tif ( atStart ) {\n\n\t\t\t\tsettings.endingStart = this.zeroSlopeAtStart ?\n\t\t\t\t\t\tZeroSlopeEnding : ZeroCurvatureEnding;\n\n\t\t\t} else {\n\n\t\t\t\tsettings.endingStart = WrapAroundEnding;\n\n\t\t\t}\n\n\t\t\tif ( atEnd ) {\n\n\t\t\t\tsettings.endingEnd = this.zeroSlopeAtEnd ?\n\t\t\t\t\t\tZeroSlopeEnding : ZeroCurvatureEnding;\n\n\t\t\t} else {\n\n\t\t\t\tsettings.endingEnd \t = WrapAroundEnding;\n\n\t\t\t}\n\n\t\t}\n\n\t},\n\n\t_scheduleFading: function( duration, weightNow, weightThen ) {\n\n\t\tvar mixer = this._mixer, now = mixer.time,\n\t\t\tinterpolant = this._weightInterpolant;\n\n\t\tif ( interpolant === null ) {\n\n\t\t\tinterpolant = mixer._lendControlInterpolant(),\n\t\t\tthis._weightInterpolant = interpolant;\n\n\t\t}\n\n\t\tvar times = interpolant.parameterPositions,\n\t\t\tvalues = interpolant.sampleValues;\n\n\t\ttimes[ 0 ] = now; \t\t\t\tvalues[ 0 ] = weightNow;\n\t\ttimes[ 1 ] = now + duration;\tvalues[ 1 ] = weightThen;\n\n\t\treturn this;\n\n\t}\n\n};\n\n\nexport { AnimationAction };\n","import { AnimationAction } from './AnimationAction';\nimport { EventDispatcher } from '../core/EventDispatcher';\nimport { LinearInterpolant } from '../math/interpolants/LinearInterpolant';\nimport { PropertyBinding } from './PropertyBinding';\nimport { PropertyMixer } from './PropertyMixer';\nimport { AnimationClip } from './AnimationClip';\n\n/**\n *\n * Player for AnimationClips.\n *\n *\n * @author Ben Houston / http://clara.io/\n * @author David Sarno / http://lighthaus.us/\n * @author tschw\n */\n\nfunction AnimationMixer( root ) {\n\n\tthis._root = root;\n\tthis._initMemoryManager();\n\tthis._accuIndex = 0;\n\n\tthis.time = 0;\n\n\tthis.timeScale = 1.0;\n\n}\n\nObject.assign( AnimationMixer.prototype, EventDispatcher.prototype, {\n\n\t// return an action for a clip optionally using a custom root target\n\t// object (this method allocates a lot of dynamic memory in case a\n\t// previously unknown clip/root combination is specified)\n\tclipAction: function( clip, optionalRoot ) {\n\n\t\tvar root = optionalRoot || this._root,\n\t\t\trootUuid = root.uuid,\n\n\t\t\tclipObject = typeof clip === 'string' ?\n\t\t\t\t\tAnimationClip.findByName( root, clip ) : clip,\n\n\t\t\tclipUuid = clipObject !== null ? clipObject.uuid : clip,\n\n\t\t\tactionsForClip = this._actionsByClip[ clipUuid ],\n\t\t\tprototypeAction = null;\n\n\t\tif ( actionsForClip !== undefined ) {\n\n\t\t\tvar existingAction =\n\t\t\t\t\tactionsForClip.actionByRoot[ rootUuid ];\n\n\t\t\tif ( existingAction !== undefined ) {\n\n\t\t\t\treturn existingAction;\n\n\t\t\t}\n\n\t\t\t// we know the clip, so we don't have to parse all\n\t\t\t// the bindings again but can just copy\n\t\t\tprototypeAction = actionsForClip.knownActions[ 0 ];\n\n\t\t\t// also, take the clip from the prototype action\n\t\t\tif ( clipObject === null )\n\t\t\t\tclipObject = prototypeAction._clip;\n\n\t\t}\n\n\t\t// clip must be known when specified via string\n\t\tif ( clipObject === null ) return null;\n\n\t\t// allocate all resources required to run it\n\t\tvar newAction = new AnimationAction( this, clipObject, optionalRoot );\n\n\t\tthis._bindAction( newAction, prototypeAction );\n\n\t\t// and make the action known to the memory manager\n\t\tthis._addInactiveAction( newAction, clipUuid, rootUuid );\n\n\t\treturn newAction;\n\n\t},\n\n\t// get an existing action\n\texistingAction: function( clip, optionalRoot ) {\n\n\t\tvar root = optionalRoot || this._root,\n\t\t\trootUuid = root.uuid,\n\n\t\t\tclipObject = typeof clip === 'string' ?\n\t\t\t\t\tAnimationClip.findByName( root, clip ) : clip,\n\n\t\t\tclipUuid = clipObject ? clipObject.uuid : clip,\n\n\t\t\tactionsForClip = this._actionsByClip[ clipUuid ];\n\n\t\tif ( actionsForClip !== undefined ) {\n\n\t\t\treturn actionsForClip.actionByRoot[ rootUuid ] || null;\n\n\t\t}\n\n\t\treturn null;\n\n\t},\n\n\t// deactivates all previously scheduled actions\n\tstopAllAction: function() {\n\n\t\tvar actions = this._actions,\n\t\t\tnActions = this._nActiveActions,\n\t\t\tbindings = this._bindings,\n\t\t\tnBindings = this._nActiveBindings;\n\n\t\tthis._nActiveActions = 0;\n\t\tthis._nActiveBindings = 0;\n\n\t\tfor ( var i = 0; i !== nActions; ++ i ) {\n\n\t\t\tactions[ i ].reset();\n\n\t\t}\n\n\t\tfor ( var i = 0; i !== nBindings; ++ i ) {\n\n\t\t\tbindings[ i ].useCount = 0;\n\n\t\t}\n\n\t\treturn this;\n\n\t},\n\n\t// advance the time and update apply the animation\n\tupdate: function( deltaTime ) {\n\n\t\tdeltaTime *= this.timeScale;\n\n\t\tvar actions = this._actions,\n\t\t\tnActions = this._nActiveActions,\n\n\t\t\ttime = this.time += deltaTime,\n\t\t\ttimeDirection = Math.sign( deltaTime ),\n\n\t\t\taccuIndex = this._accuIndex ^= 1;\n\n\t\t// run active actions\n\n\t\tfor ( var i = 0; i !== nActions; ++ i ) {\n\n\t\t\tvar action = actions[ i ];\n\n\t\t\tif ( action.enabled ) {\n\n\t\t\t\taction._update( time, deltaTime, timeDirection, accuIndex );\n\n\t\t\t}\n\n\t\t}\n\n\t\t// update scene graph\n\n\t\tvar bindings = this._bindings,\n\t\t\tnBindings = this._nActiveBindings;\n\n\t\tfor ( var i = 0; i !== nBindings; ++ i ) {\n\n\t\t\tbindings[ i ].apply( accuIndex );\n\n\t\t}\n\n\t\treturn this;\n\n\t},\n\n\t// return this mixer's root target object\n\tgetRoot: function() {\n\n\t\treturn this._root;\n\n\t},\n\n\t// free all resources specific to a particular clip\n\tuncacheClip: function( clip ) {\n\n\t\tvar actions = this._actions,\n\t\t\tclipUuid = clip.uuid,\n\t\t\tactionsByClip = this._actionsByClip,\n\t\t\tactionsForClip = actionsByClip[ clipUuid ];\n\n\t\tif ( actionsForClip !== undefined ) {\n\n\t\t\t// note: just calling _removeInactiveAction would mess up the\n\t\t\t// iteration state and also require updating the state we can\n\t\t\t// just throw away\n\n\t\t\tvar actionsToRemove = actionsForClip.knownActions;\n\n\t\t\tfor ( var i = 0, n = actionsToRemove.length; i !== n; ++ i ) {\n\n\t\t\t\tvar action = actionsToRemove[ i ];\n\n\t\t\t\tthis._deactivateAction( action );\n\n\t\t\t\tvar cacheIndex = action._cacheIndex,\n\t\t\t\t\tlastInactiveAction = actions[ actions.length - 1 ];\n\n\t\t\t\taction._cacheIndex = null;\n\t\t\t\taction._byClipCacheIndex = null;\n\n\t\t\t\tlastInactiveAction._cacheIndex = cacheIndex;\n\t\t\t\tactions[ cacheIndex ] = lastInactiveAction;\n\t\t\t\tactions.pop();\n\n\t\t\t\tthis._removeInactiveBindingsForAction( action );\n\n\t\t\t}\n\n\t\t\tdelete actionsByClip[ clipUuid ];\n\n\t\t}\n\n\t},\n\n\t// free all resources specific to a particular root target object\n\tuncacheRoot: function( root ) {\n\n\t\tvar rootUuid = root.uuid,\n\t\t\tactionsByClip = this._actionsByClip;\n\n\t\tfor ( var clipUuid in actionsByClip ) {\n\n\t\t\tvar actionByRoot = actionsByClip[ clipUuid ].actionByRoot,\n\t\t\t\taction = actionByRoot[ rootUuid ];\n\n\t\t\tif ( action !== undefined ) {\n\n\t\t\t\tthis._deactivateAction( action );\n\t\t\t\tthis._removeInactiveAction( action );\n\n\t\t\t}\n\n\t\t}\n\n\t\tvar bindingsByRoot = this._bindingsByRootAndName,\n\t\t\tbindingByName = bindingsByRoot[ rootUuid ];\n\n\t\tif ( bindingByName !== undefined ) {\n\n\t\t\tfor ( var trackName in bindingByName ) {\n\n\t\t\t\tvar binding = bindingByName[ trackName ];\n\t\t\t\tbinding.restoreOriginalState();\n\t\t\t\tthis._removeInactiveBinding( binding );\n\n\t\t\t}\n\n\t\t}\n\n\t},\n\n\t// remove a targeted clip from the cache\n\tuncacheAction: function( clip, optionalRoot ) {\n\n\t\tvar action = this.existingAction( clip, optionalRoot );\n\n\t\tif ( action !== null ) {\n\n\t\t\tthis._deactivateAction( action );\n\t\t\tthis._removeInactiveAction( action );\n\n\t\t}\n\n\t}\n\n} );\n\n// Implementation details:\n\nObject.assign( AnimationMixer.prototype, {\n\n\t_bindAction: function( action, prototypeAction ) {\n\n\t\tvar root = action._localRoot || this._root,\n\t\t\ttracks = action._clip.tracks,\n\t\t\tnTracks = tracks.length,\n\t\t\tbindings = action._propertyBindings,\n\t\t\tinterpolants = action._interpolants,\n\t\t\trootUuid = root.uuid,\n\t\t\tbindingsByRoot = this._bindingsByRootAndName,\n\t\t\tbindingsByName = bindingsByRoot[ rootUuid ];\n\n\t\tif ( bindingsByName === undefined ) {\n\n\t\t\tbindingsByName = {};\n\t\t\tbindingsByRoot[ rootUuid ] = bindingsByName;\n\n\t\t}\n\n\t\tfor ( var i = 0; i !== nTracks; ++ i ) {\n\n\t\t\tvar track = tracks[ i ],\n\t\t\t\ttrackName = track.name,\n\t\t\t\tbinding = bindingsByName[ trackName ];\n\n\t\t\tif ( binding !== undefined ) {\n\n\t\t\t\tbindings[ i ] = binding;\n\n\t\t\t} else {\n\n\t\t\t\tbinding = bindings[ i ];\n\n\t\t\t\tif ( binding !== undefined ) {\n\n\t\t\t\t\t// existing binding, make sure the cache knows\n\n\t\t\t\t\tif ( binding._cacheIndex === null ) {\n\n\t\t\t\t\t\t++ binding.referenceCount;\n\t\t\t\t\t\tthis._addInactiveBinding( binding, rootUuid, trackName );\n\n\t\t\t\t\t}\n\n\t\t\t\t\tcontinue;\n\n\t\t\t\t}\n\n\t\t\t\tvar path = prototypeAction && prototypeAction.\n\t\t\t\t\t\t_propertyBindings[ i ].binding.parsedPath;\n\n\t\t\t\tbinding = new PropertyMixer(\n\t\t\t\t\t\tPropertyBinding.create( root, trackName, path ),\n\t\t\t\t\t\ttrack.ValueTypeName, track.getValueSize() );\n\n\t\t\t\t++ binding.referenceCount;\n\t\t\t\tthis._addInactiveBinding( binding, rootUuid, trackName );\n\n\t\t\t\tbindings[ i ] = binding;\n\n\t\t\t}\n\n\t\t\tinterpolants[ i ].resultBuffer = binding.buffer;\n\n\t\t}\n\n\t},\n\n\t_activateAction: function( action ) {\n\n\t\tif ( ! this._isActiveAction( action ) ) {\n\n\t\t\tif ( action._cacheIndex === null ) {\n\n\t\t\t\t// this action has been forgotten by the cache, but the user\n\t\t\t\t// appears to be still using it -> rebind\n\n\t\t\t\tvar rootUuid = ( action._localRoot || this._root ).uuid,\n\t\t\t\t\tclipUuid = action._clip.uuid,\n\t\t\t\t\tactionsForClip = this._actionsByClip[ clipUuid ];\n\n\t\t\t\tthis._bindAction( action,\n\t\t\t\t\t\tactionsForClip && actionsForClip.knownActions[ 0 ] );\n\n\t\t\t\tthis._addInactiveAction( action, clipUuid, rootUuid );\n\n\t\t\t}\n\n\t\t\tvar bindings = action._propertyBindings;\n\n\t\t\t// increment reference counts / sort out state\n\t\t\tfor ( var i = 0, n = bindings.length; i !== n; ++ i ) {\n\n\t\t\t\tvar binding = bindings[ i ];\n\n\t\t\t\tif ( binding.useCount ++ === 0 ) {\n\n\t\t\t\t\tthis._lendBinding( binding );\n\t\t\t\t\tbinding.saveOriginalState();\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t\tthis._lendAction( action );\n\n\t\t}\n\n\t},\n\n\t_deactivateAction: function( action ) {\n\n\t\tif ( this._isActiveAction( action ) ) {\n\n\t\t\tvar bindings = action._propertyBindings;\n\n\t\t\t// decrement reference counts / sort out state\n\t\t\tfor ( var i = 0, n = bindings.length; i !== n; ++ i ) {\n\n\t\t\t\tvar binding = bindings[ i ];\n\n\t\t\t\tif ( -- binding.useCount === 0 ) {\n\n\t\t\t\t\tbinding.restoreOriginalState();\n\t\t\t\t\tthis._takeBackBinding( binding );\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t\tthis._takeBackAction( action );\n\n\t\t}\n\n\t},\n\n\t// Memory manager\n\n\t_initMemoryManager: function() {\n\n\t\tthis._actions = []; // 'nActiveActions' followed by inactive ones\n\t\tthis._nActiveActions = 0;\n\n\t\tthis._actionsByClip = {};\n\t\t// inside:\n\t\t// {\n\t\t// \t\tknownActions: Array< AnimationAction >\t- used as prototypes\n\t\t// \t\tactionByRoot: AnimationAction\t\t\t- lookup\n\t\t// }\n\n\n\t\tthis._bindings = []; // 'nActiveBindings' followed by inactive ones\n\t\tthis._nActiveBindings = 0;\n\n\t\tthis._bindingsByRootAndName = {}; // inside: Map< name, PropertyMixer >\n\n\n\t\tthis._controlInterpolants = []; // same game as above\n\t\tthis._nActiveControlInterpolants = 0;\n\n\t\tvar scope = this;\n\n\t\tthis.stats = {\n\n\t\t\tactions: {\n\t\t\t\tget total() { return scope._actions.length; },\n\t\t\t\tget inUse() { return scope._nActiveActions; }\n\t\t\t},\n\t\t\tbindings: {\n\t\t\t\tget total() { return scope._bindings.length; },\n\t\t\t\tget inUse() { return scope._nActiveBindings; }\n\t\t\t},\n\t\t\tcontrolInterpolants: {\n\t\t\t\tget total() { return scope._controlInterpolants.length; },\n\t\t\t\tget inUse() { return scope._nActiveControlInterpolants; }\n\t\t\t}\n\n\t\t};\n\n\t},\n\n\t// Memory management for AnimationAction objects\n\n\t_isActiveAction: function( action ) {\n\n\t\tvar index = action._cacheIndex;\n\t\treturn index !== null && index < this._nActiveActions;\n\n\t},\n\n\t_addInactiveAction: function( action, clipUuid, rootUuid ) {\n\n\t\tvar actions = this._actions,\n\t\t\tactionsByClip = this._actionsByClip,\n\t\t\tactionsForClip = actionsByClip[ clipUuid ];\n\n\t\tif ( actionsForClip === undefined ) {\n\n\t\t\tactionsForClip = {\n\n\t\t\t\tknownActions: [ action ],\n\t\t\t\tactionByRoot: {}\n\n\t\t\t};\n\n\t\t\taction._byClipCacheIndex = 0;\n\n\t\t\tactionsByClip[ clipUuid ] = actionsForClip;\n\n\t\t} else {\n\n\t\t\tvar knownActions = actionsForClip.knownActions;\n\n\t\t\taction._byClipCacheIndex = knownActions.length;\n\t\t\tknownActions.push( action );\n\n\t\t}\n\n\t\taction._cacheIndex = actions.length;\n\t\tactions.push( action );\n\n\t\tactionsForClip.actionByRoot[ rootUuid ] = action;\n\n\t},\n\n\t_removeInactiveAction: function( action ) {\n\n\t\tvar actions = this._actions,\n\t\t\tlastInactiveAction = actions[ actions.length - 1 ],\n\t\t\tcacheIndex = action._cacheIndex;\n\n\t\tlastInactiveAction._cacheIndex = cacheIndex;\n\t\tactions[ cacheIndex ] = lastInactiveAction;\n\t\tactions.pop();\n\n\t\taction._cacheIndex = null;\n\n\n\t\tvar clipUuid = action._clip.uuid,\n\t\t\tactionsByClip = this._actionsByClip,\n\t\t\tactionsForClip = actionsByClip[ clipUuid ],\n\t\t\tknownActionsForClip = actionsForClip.knownActions,\n\n\t\t\tlastKnownAction =\n\t\t\t\tknownActionsForClip[ knownActionsForClip.length - 1 ],\n\n\t\t\tbyClipCacheIndex = action._byClipCacheIndex;\n\n\t\tlastKnownAction._byClipCacheIndex = byClipCacheIndex;\n\t\tknownActionsForClip[ byClipCacheIndex ] = lastKnownAction;\n\t\tknownActionsForClip.pop();\n\n\t\taction._byClipCacheIndex = null;\n\n\n\t\tvar actionByRoot = actionsForClip.actionByRoot,\n\t\t\trootUuid = ( actions._localRoot || this._root ).uuid;\n\n\t\tdelete actionByRoot[ rootUuid ];\n\n\t\tif ( knownActionsForClip.length === 0 ) {\n\n\t\t\tdelete actionsByClip[ clipUuid ];\n\n\t\t}\n\n\t\tthis._removeInactiveBindingsForAction( action );\n\n\t},\n\n\t_removeInactiveBindingsForAction: function( action ) {\n\n\t\tvar bindings = action._propertyBindings;\n\t\tfor ( var i = 0, n = bindings.length; i !== n; ++ i ) {\n\n\t\t\tvar binding = bindings[ i ];\n\n\t\t\tif ( -- binding.referenceCount === 0 ) {\n\n\t\t\t\tthis._removeInactiveBinding( binding );\n\n\t\t\t}\n\n\t\t}\n\n\t},\n\n\t_lendAction: function( action ) {\n\n\t\t// [ active actions | inactive actions ]\n\t\t// [ active actions >| inactive actions ]\n\t\t// s a\n\t\t// <-swap->\n\t\t// a s\n\n\t\tvar actions = this._actions,\n\t\t\tprevIndex = action._cacheIndex,\n\n\t\t\tlastActiveIndex = this._nActiveActions ++,\n\n\t\t\tfirstInactiveAction = actions[ lastActiveIndex ];\n\n\t\taction._cacheIndex = lastActiveIndex;\n\t\tactions[ lastActiveIndex ] = action;\n\n\t\tfirstInactiveAction._cacheIndex = prevIndex;\n\t\tactions[ prevIndex ] = firstInactiveAction;\n\n\t},\n\n\t_takeBackAction: function( action ) {\n\n\t\t// [ active actions | inactive actions ]\n\t\t// [ active actions |< inactive actions ]\n\t\t// a s\n\t\t// <-swap->\n\t\t// s a\n\n\t\tvar actions = this._actions,\n\t\t\tprevIndex = action._cacheIndex,\n\n\t\t\tfirstInactiveIndex = -- this._nActiveActions,\n\n\t\t\tlastActiveAction = actions[ firstInactiveIndex ];\n\n\t\taction._cacheIndex = firstInactiveIndex;\n\t\tactions[ firstInactiveIndex ] = action;\n\n\t\tlastActiveAction._cacheIndex = prevIndex;\n\t\tactions[ prevIndex ] = lastActiveAction;\n\n\t},\n\n\t// Memory management for PropertyMixer objects\n\n\t_addInactiveBinding: function( binding, rootUuid, trackName ) {\n\n\t\tvar bindingsByRoot = this._bindingsByRootAndName,\n\t\t\tbindingByName = bindingsByRoot[ rootUuid ],\n\n\t\t\tbindings = this._bindings;\n\n\t\tif ( bindingByName === undefined ) {\n\n\t\t\tbindingByName = {};\n\t\t\tbindingsByRoot[ rootUuid ] = bindingByName;\n\n\t\t}\n\n\t\tbindingByName[ trackName ] = binding;\n\n\t\tbinding._cacheIndex = bindings.length;\n\t\tbindings.push( binding );\n\n\t},\n\n\t_removeInactiveBinding: function( binding ) {\n\n\t\tvar bindings = this._bindings,\n\t\t\tpropBinding = binding.binding,\n\t\t\trootUuid = propBinding.rootNode.uuid,\n\t\t\ttrackName = propBinding.path,\n\t\t\tbindingsByRoot = this._bindingsByRootAndName,\n\t\t\tbindingByName = bindingsByRoot[ rootUuid ],\n\n\t\t\tlastInactiveBinding = bindings[ bindings.length - 1 ],\n\t\t\tcacheIndex = binding._cacheIndex;\n\n\t\tlastInactiveBinding._cacheIndex = cacheIndex;\n\t\tbindings[ cacheIndex ] = lastInactiveBinding;\n\t\tbindings.pop();\n\n\t\tdelete bindingByName[ trackName ];\n\n\t\tremove_empty_map: {\n\n\t\t\tfor ( var _ in bindingByName ) break remove_empty_map;\n\n\t\t\tdelete bindingsByRoot[ rootUuid ];\n\n\t\t}\n\n\t},\n\n\t_lendBinding: function( binding ) {\n\n\t\tvar bindings = this._bindings,\n\t\t\tprevIndex = binding._cacheIndex,\n\n\t\t\tlastActiveIndex = this._nActiveBindings ++,\n\n\t\t\tfirstInactiveBinding = bindings[ lastActiveIndex ];\n\n\t\tbinding._cacheIndex = lastActiveIndex;\n\t\tbindings[ lastActiveIndex ] = binding;\n\n\t\tfirstInactiveBinding._cacheIndex = prevIndex;\n\t\tbindings[ prevIndex ] = firstInactiveBinding;\n\n\t},\n\n\t_takeBackBinding: function( binding ) {\n\n\t\tvar bindings = this._bindings,\n\t\t\tprevIndex = binding._cacheIndex,\n\n\t\t\tfirstInactiveIndex = -- this._nActiveBindings,\n\n\t\t\tlastActiveBinding = bindings[ firstInactiveIndex ];\n\n\t\tbinding._cacheIndex = firstInactiveIndex;\n\t\tbindings[ firstInactiveIndex ] = binding;\n\n\t\tlastActiveBinding._cacheIndex = prevIndex;\n\t\tbindings[ prevIndex ] = lastActiveBinding;\n\n\t},\n\n\n\t// Memory management of Interpolants for weight and time scale\n\n\t_lendControlInterpolant: function() {\n\n\t\tvar interpolants = this._controlInterpolants,\n\t\t\tlastActiveIndex = this._nActiveControlInterpolants ++,\n\t\t\tinterpolant = interpolants[ lastActiveIndex ];\n\n\t\tif ( interpolant === undefined ) {\n\n\t\t\tinterpolant = new LinearInterpolant(\n\t\t\t\t\tnew Float32Array( 2 ), new Float32Array( 2 ),\n\t\t\t\t\t\t1, this._controlInterpolantsResultBuffer );\n\n\t\t\tinterpolant.__cacheIndex = lastActiveIndex;\n\t\t\tinterpolants[ lastActiveIndex ] = interpolant;\n\n\t\t}\n\n\t\treturn interpolant;\n\n\t},\n\n\t_takeBackControlInterpolant: function( interpolant ) {\n\n\t\tvar interpolants = this._controlInterpolants,\n\t\t\tprevIndex = interpolant.__cacheIndex,\n\n\t\t\tfirstInactiveIndex = -- this._nActiveControlInterpolants,\n\n\t\t\tlastActiveInterpolant = interpolants[ firstInactiveIndex ];\n\n\t\tinterpolant.__cacheIndex = firstInactiveIndex;\n\t\tinterpolants[ firstInactiveIndex ] = interpolant;\n\n\t\tlastActiveInterpolant.__cacheIndex = prevIndex;\n\t\tinterpolants[ prevIndex ] = lastActiveInterpolant;\n\n\t},\n\n\t_controlInterpolantsResultBuffer: new Float32Array( 1 )\n\n} );\n\n\nexport { AnimationMixer };\n","/**\n * @author mrdoob / http://mrdoob.com/\n */\n\nfunction Uniform( value ) {\n\n\tif ( typeof value === 'string' ) {\n\n\t\tconsole.warn( 'THREE.Uniform: Type parameter is no longer needed.' );\n\t\tvalue = arguments[ 1 ];\n\n\t}\n\n\tthis.value = value;\n\n}\n\nexport { Uniform };\n","import { BufferGeometry } from './BufferGeometry';\n\n/**\n * @author benaadams / https://twitter.com/ben_a_adams\n */\n\nfunction InstancedBufferGeometry() {\n\n\tBufferGeometry.call( this );\n\n\tthis.type = 'InstancedBufferGeometry';\n\tthis.maxInstancedCount = undefined;\n\n}\n\nInstancedBufferGeometry.prototype = Object.create( BufferGeometry.prototype );\nInstancedBufferGeometry.prototype.constructor = InstancedBufferGeometry;\n\nInstancedBufferGeometry.prototype.isInstancedBufferGeometry = true;\n\nInstancedBufferGeometry.prototype.addGroup = function ( start, count, materialIndex ) {\n\n\tthis.groups.push( {\n\n\t\tstart: start,\n\t\tcount: count,\n\t\tmaterialIndex: materialIndex\n\n\t} );\n\n};\n\nInstancedBufferGeometry.prototype.copy = function ( source ) {\n\n\tvar index = source.index;\n\n\tif ( index !== null ) {\n\n\t\tthis.setIndex( index.clone() );\n\n\t}\n\n\tvar attributes = source.attributes;\n\n\tfor ( var name in attributes ) {\n\n\t\tvar attribute = attributes[ name ];\n\t\tthis.addAttribute( name, attribute.clone() );\n\n\t}\n\n\tvar groups = source.groups;\n\n\tfor ( var i = 0, l = groups.length; i < l; i ++ ) {\n\n\t\tvar group = groups[ i ];\n\t\tthis.addGroup( group.start, group.count, group.materialIndex );\n\n\t}\n\n\treturn this;\n\n};\n\n\nexport { InstancedBufferGeometry };\n","import { _Math } from '../math/Math';\n\n/**\n * @author benaadams / https://twitter.com/ben_a_adams\n */\n\nfunction InterleavedBufferAttribute( interleavedBuffer, itemSize, offset, normalized ) {\n\n\tthis.uuid = _Math.generateUUID();\n\n\tthis.data = interleavedBuffer;\n\tthis.itemSize = itemSize;\n\tthis.offset = offset;\n\n\tthis.normalized = normalized === true;\n\n}\n\n\nInterleavedBufferAttribute.prototype = {\n\n\tconstructor: InterleavedBufferAttribute,\n\n\tisInterleavedBufferAttribute: true,\n\n\tget count() {\n\n\t\treturn this.data.count;\n\n\t},\n\n\tget array() {\n\n\t\treturn this.data.array;\n\n\t},\n\n\tsetX: function ( index, x ) {\n\n\t\tthis.data.array[ index * this.data.stride + this.offset ] = x;\n\n\t\treturn this;\n\n\t},\n\n\tsetY: function ( index, y ) {\n\n\t\tthis.data.array[ index * this.data.stride + this.offset + 1 ] = y;\n\n\t\treturn this;\n\n\t},\n\n\tsetZ: function ( index, z ) {\n\n\t\tthis.data.array[ index * this.data.stride + this.offset + 2 ] = z;\n\n\t\treturn this;\n\n\t},\n\n\tsetW: function ( index, w ) {\n\n\t\tthis.data.array[ index * this.data.stride + this.offset + 3 ] = w;\n\n\t\treturn this;\n\n\t},\n\n\tgetX: function ( index ) {\n\n\t\treturn this.data.array[ index * this.data.stride + this.offset ];\n\n\t},\n\n\tgetY: function ( index ) {\n\n\t\treturn this.data.array[ index * this.data.stride + this.offset + 1 ];\n\n\t},\n\n\tgetZ: function ( index ) {\n\n\t\treturn this.data.array[ index * this.data.stride + this.offset + 2 ];\n\n\t},\n\n\tgetW: function ( index ) {\n\n\t\treturn this.data.array[ index * this.data.stride + this.offset + 3 ];\n\n\t},\n\n\tsetXY: function ( index, x, y ) {\n\n\t\tindex = index * this.data.stride + this.offset;\n\n\t\tthis.data.array[ index + 0 ] = x;\n\t\tthis.data.array[ index + 1 ] = y;\n\n\t\treturn this;\n\n\t},\n\n\tsetXYZ: function ( index, x, y, z ) {\n\n\t\tindex = index * this.data.stride + this.offset;\n\n\t\tthis.data.array[ index + 0 ] = x;\n\t\tthis.data.array[ index + 1 ] = y;\n\t\tthis.data.array[ index + 2 ] = z;\n\n\t\treturn this;\n\n\t},\n\n\tsetXYZW: function ( index, x, y, z, w ) {\n\n\t\tindex = index * this.data.stride + this.offset;\n\n\t\tthis.data.array[ index + 0 ] = x;\n\t\tthis.data.array[ index + 1 ] = y;\n\t\tthis.data.array[ index + 2 ] = z;\n\t\tthis.data.array[ index + 3 ] = w;\n\n\t\treturn this;\n\n\t}\n\n};\n\n\nexport { InterleavedBufferAttribute };\n","import { _Math } from '../math/Math';\n\n/**\n * @author benaadams / https://twitter.com/ben_a_adams\n */\n\nfunction InterleavedBuffer( array, stride ) {\n\n\tthis.uuid = _Math.generateUUID();\n\n\tthis.array = array;\n\tthis.stride = stride;\n\tthis.count = array !== undefined ? array.length / stride : 0;\n\n\tthis.dynamic = false;\n\tthis.updateRange = { offset: 0, count: - 1 };\n\n\tthis.version = 0;\n\n}\n\nInterleavedBuffer.prototype = {\n\n\tconstructor: InterleavedBuffer,\n\n\tisInterleavedBuffer: true,\n\n\tset needsUpdate( value ) {\n\n\t\tif ( value === true ) this.version ++;\n\n\t},\n\n\tsetArray: function ( array ) {\n\n\t\tif ( Array.isArray( array ) ) {\n\n\t\t\tthrow new TypeError( 'THREE.BufferAttribute: array should be a Typed Array.' );\n\n\t\t}\n\n\t\tthis.count = array !== undefined ? array.length / this.stride : 0;\n\t\tthis.array = array;\n\n\t},\n\n\tsetDynamic: function ( value ) {\n\n\t\tthis.dynamic = value;\n\n\t\treturn this;\n\n\t},\n\n\tcopy: function ( source ) {\n\n\t\tthis.array = new source.array.constructor( source.array );\n\t\tthis.count = source.count;\n\t\tthis.stride = source.stride;\n\t\tthis.dynamic = source.dynamic;\n\n\t\treturn this;\n\n\t},\n\n\tcopyAt: function ( index1, attribute, index2 ) {\n\n\t\tindex1 *= this.stride;\n\t\tindex2 *= attribute.stride;\n\n\t\tfor ( var i = 0, l = this.stride; i < l; i ++ ) {\n\n\t\t\tthis.array[ index1 + i ] = attribute.array[ index2 + i ];\n\n\t\t}\n\n\t\treturn this;\n\n\t},\n\n\tset: function ( value, offset ) {\n\n\t\tif ( offset === undefined ) offset = 0;\n\n\t\tthis.array.set( value, offset );\n\n\t\treturn this;\n\n\t},\n\n\tclone: function () {\n\n\t\treturn new this.constructor().copy( this );\n\n\t}\n\n};\n\n\nexport { InterleavedBuffer };\n","import { InterleavedBuffer } from './InterleavedBuffer';\n\n/**\n * @author benaadams / https://twitter.com/ben_a_adams\n */\n\nfunction InstancedInterleavedBuffer( array, stride, meshPerAttribute ) {\n\n\tInterleavedBuffer.call( this, array, stride );\n\n\tthis.meshPerAttribute = meshPerAttribute || 1;\n\n}\n\nInstancedInterleavedBuffer.prototype = Object.create( InterleavedBuffer.prototype );\nInstancedInterleavedBuffer.prototype.constructor = InstancedInterleavedBuffer;\n\nInstancedInterleavedBuffer.prototype.isInstancedInterleavedBuffer = true;\n\nInstancedInterleavedBuffer.prototype.copy = function ( source ) {\n\n\tInterleavedBuffer.prototype.copy.call( this, source );\n\n\tthis.meshPerAttribute = source.meshPerAttribute;\n\n\treturn this;\n\n};\n\n\nexport { InstancedInterleavedBuffer };\n","import { BufferAttribute } from './BufferAttribute';\n\n/**\n * @author benaadams / https://twitter.com/ben_a_adams\n */\n\nfunction InstancedBufferAttribute( array, itemSize, meshPerAttribute ) {\n\n\tBufferAttribute.call( this, array, itemSize );\n\n\tthis.meshPerAttribute = meshPerAttribute || 1;\n\n}\n\nInstancedBufferAttribute.prototype = Object.create( BufferAttribute.prototype );\nInstancedBufferAttribute.prototype.constructor = InstancedBufferAttribute;\n\nInstancedBufferAttribute.prototype.isInstancedBufferAttribute = true;\n\nInstancedBufferAttribute.prototype.copy = function ( source ) {\n\n\tBufferAttribute.prototype.copy.call( this, source );\n\n\tthis.meshPerAttribute = source.meshPerAttribute;\n\n\treturn this;\n\n};\n\n\nexport { InstancedBufferAttribute };\n","import { Ray } from '../math/Ray';\n\n/**\n * @author mrdoob / http://mrdoob.com/\n * @author bhouston / http://clara.io/\n * @author stephomi / http://stephaneginier.com/\n */\n\nfunction Raycaster( origin, direction, near, far ) {\n\n\tthis.ray = new Ray( origin, direction );\n\t// direction is assumed to be normalized (for accurate distance calculations)\n\n\tthis.near = near || 0;\n\tthis.far = far || Infinity;\n\n\tthis.params = {\n\t\tMesh: {},\n\t\tLine: {},\n\t\tLOD: {},\n\t\tPoints: { threshold: 1 },\n\t\tSprite: {}\n\t};\n\n\tObject.defineProperties( this.params, {\n\t\tPointCloud: {\n\t\t\tget: function () {\n\t\t\t\tconsole.warn( 'THREE.Raycaster: params.PointCloud has been renamed to params.Points.' );\n\t\t\t\treturn this.Points;\n\t\t\t}\n\t\t}\n\t} );\n\n}\n\nfunction ascSort( a, b ) {\n\n\treturn a.distance - b.distance;\n\n}\n\nfunction intersectObject( object, raycaster, intersects, recursive ) {\n\n\tif ( object.visible === false ) return;\n\n\tobject.raycast( raycaster, intersects );\n\n\tif ( recursive === true ) {\n\n\t\tvar children = object.children;\n\n\t\tfor ( var i = 0, l = children.length; i < l; i ++ ) {\n\n\t\t\tintersectObject( children[ i ], raycaster, intersects, true );\n\n\t\t}\n\n\t}\n\n}\n\n//\n\nRaycaster.prototype = {\n\n\tconstructor: Raycaster,\n\n\tlinePrecision: 1,\n\n\tset: function ( origin, direction ) {\n\n\t\t// direction is assumed to be normalized (for accurate distance calculations)\n\n\t\tthis.ray.set( origin, direction );\n\n\t},\n\n\tsetFromCamera: function ( coords, camera ) {\n\n\t\tif ( (camera && camera.isPerspectiveCamera) ) {\n\n\t\t\tthis.ray.origin.setFromMatrixPosition( camera.matrixWorld );\n\t\t\tthis.ray.direction.set( coords.x, coords.y, 0.5 ).unproject( camera ).sub( this.ray.origin ).normalize();\n\n\t\t} else if ( (camera && camera.isOrthographicCamera) ) {\n\n\t\t\tthis.ray.origin.set( coords.x, coords.y, ( camera.near + camera.far ) / ( camera.near - camera.far ) ).unproject( camera ); // set origin in plane of camera\n\t\t\tthis.ray.direction.set( 0, 0, - 1 ).transformDirection( camera.matrixWorld );\n\n\t\t} else {\n\n\t\t\tconsole.error( 'THREE.Raycaster: Unsupported camera type.' );\n\n\t\t}\n\n\t},\n\n\tintersectObject: function ( object, recursive ) {\n\n\t\tvar intersects = [];\n\n\t\tintersectObject( object, this, intersects, recursive );\n\n\t\tintersects.sort( ascSort );\n\n\t\treturn intersects;\n\n\t},\n\n\tintersectObjects: function ( objects, recursive ) {\n\n\t\tvar intersects = [];\n\n\t\tif ( Array.isArray( objects ) === false ) {\n\n\t\t\tconsole.warn( 'THREE.Raycaster.intersectObjects: objects is not an Array.' );\n\t\t\treturn intersects;\n\n\t\t}\n\n\t\tfor ( var i = 0, l = objects.length; i < l; i ++ ) {\n\n\t\t\tintersectObject( objects[ i ], this, intersects, recursive );\n\n\t\t}\n\n\t\tintersects.sort( ascSort );\n\n\t\treturn intersects;\n\n\t}\n\n};\n\n\nexport { Raycaster };\n","/**\n * @author alteredq / http://alteredqualia.com/\n */\n\nfunction Clock( autoStart ) {\n\n\tthis.autoStart = ( autoStart !== undefined ) ? autoStart : true;\n\n\tthis.startTime = 0;\n\tthis.oldTime = 0;\n\tthis.elapsedTime = 0;\n\n\tthis.running = false;\n\n}\n\nClock.prototype = {\n\n\tconstructor: Clock,\n\n\tstart: function () {\n\n\t\tthis.startTime = ( performance || Date ).now();\n\n\t\tthis.oldTime = this.startTime;\n\t\tthis.elapsedTime = 0;\n\t\tthis.running = true;\n\n\t},\n\n\tstop: function () {\n\n\t\tthis.getElapsedTime();\n\t\tthis.running = false;\n\n\t},\n\n\tgetElapsedTime: function () {\n\n\t\tthis.getDelta();\n\t\treturn this.elapsedTime;\n\n\t},\n\n\tgetDelta: function () {\n\n\t\tvar diff = 0;\n\n\t\tif ( this.autoStart && ! this.running ) {\n\n\t\t\tthis.start();\n\n\t\t}\n\n\t\tif ( this.running ) {\n\n\t\t\tvar newTime = ( performance || Date ).now();\n\n\t\t\tdiff = ( newTime - this.oldTime ) / 1000;\n\t\t\tthis.oldTime = newTime;\n\n\t\t\tthis.elapsedTime += diff;\n\n\t\t}\n\n\t\treturn diff;\n\n\t}\n\n};\n\n\nexport { Clock };\n","import { Vector3 } from './Vector3';\n\n/**\n * Spline from Tween.js, slightly optimized (and trashed)\n * http://sole.github.com/tween.js/examples/05_spline.html\n *\n * @author mrdoob / http://mrdoob.com/\n * @author alteredq / http://alteredqualia.com/\n */\n\nfunction Spline( points ) {\n\n\tthis.points = points;\n\n\tvar c = [], v3 = { x: 0, y: 0, z: 0 },\n\tpoint, intPoint, weight, w2, w3,\n\tpa, pb, pc, pd;\n\n\tthis.initFromArray = function ( a ) {\n\n\t\tthis.points = [];\n\n\t\tfor ( var i = 0; i < a.length; i ++ ) {\n\n\t\t\tthis.points[ i ] = { x: a[ i ][ 0 ], y: a[ i ][ 1 ], z: a[ i ][ 2 ] };\n\n\t\t}\n\n\t};\n\n\tthis.getPoint = function ( k ) {\n\n\t\tpoint = ( this.points.length - 1 ) * k;\n\t\tintPoint = Math.floor( point );\n\t\tweight = point - intPoint;\n\n\t\tc[ 0 ] = intPoint === 0 ? intPoint : intPoint - 1;\n\t\tc[ 1 ] = intPoint;\n\t\tc[ 2 ] = intPoint > this.points.length - 2 ? this.points.length - 1 : intPoint + 1;\n\t\tc[ 3 ] = intPoint > this.points.length - 3 ? this.points.length - 1 : intPoint + 2;\n\n\t\tpa = this.points[ c[ 0 ] ];\n\t\tpb = this.points[ c[ 1 ] ];\n\t\tpc = this.points[ c[ 2 ] ];\n\t\tpd = this.points[ c[ 3 ] ];\n\n\t\tw2 = weight * weight;\n\t\tw3 = weight * w2;\n\n\t\tv3.x = interpolate( pa.x, pb.x, pc.x, pd.x, weight, w2, w3 );\n\t\tv3.y = interpolate( pa.y, pb.y, pc.y, pd.y, weight, w2, w3 );\n\t\tv3.z = interpolate( pa.z, pb.z, pc.z, pd.z, weight, w2, w3 );\n\n\t\treturn v3;\n\n\t};\n\n\tthis.getControlPointsArray = function () {\n\n\t\tvar i, p, l = this.points.length,\n\t\t\tcoords = [];\n\n\t\tfor ( i = 0; i < l; i ++ ) {\n\n\t\t\tp = this.points[ i ];\n\t\t\tcoords[ i ] = [ p.x, p.y, p.z ];\n\n\t\t}\n\n\t\treturn coords;\n\n\t};\n\n\t// approximate length by summing linear segments\n\n\tthis.getLength = function ( nSubDivisions ) {\n\n\t\tvar i, index, nSamples, position,\n\t\t\tpoint = 0, intPoint = 0, oldIntPoint = 0,\n\t\t\toldPosition = new Vector3(),\n\t\t\ttmpVec = new Vector3(),\n\t\t\tchunkLengths = [],\n\t\t\ttotalLength = 0;\n\n\t\t// first point has 0 length\n\n\t\tchunkLengths[ 0 ] = 0;\n\n\t\tif ( ! nSubDivisions ) nSubDivisions = 100;\n\n\t\tnSamples = this.points.length * nSubDivisions;\n\n\t\toldPosition.copy( this.points[ 0 ] );\n\n\t\tfor ( i = 1; i < nSamples; i ++ ) {\n\n\t\t\tindex = i / nSamples;\n\n\t\t\tposition = this.getPoint( index );\n\t\t\ttmpVec.copy( position );\n\n\t\t\ttotalLength += tmpVec.distanceTo( oldPosition );\n\n\t\t\toldPosition.copy( position );\n\n\t\t\tpoint = ( this.points.length - 1 ) * index;\n\t\t\tintPoint = Math.floor( point );\n\n\t\t\tif ( intPoint !== oldIntPoint ) {\n\n\t\t\t\tchunkLengths[ intPoint ] = totalLength;\n\t\t\t\toldIntPoint = intPoint;\n\n\t\t\t}\n\n\t\t}\n\n\t\t// last point ends with total length\n\n\t\tchunkLengths[ chunkLengths.length ] = totalLength;\n\n\t\treturn { chunks: chunkLengths, total: totalLength };\n\n\t};\n\n\tthis.reparametrizeByArcLength = function ( samplingCoef ) {\n\n\t\tvar i, j,\n\t\t\tindex, indexCurrent, indexNext,\n\t\t\trealDistance,\n\t\t\tsampling, position,\n\t\t\tnewpoints = [],\n\t\t\ttmpVec = new Vector3(),\n\t\t\tsl = this.getLength();\n\n\t\tnewpoints.push( tmpVec.copy( this.points[ 0 ] ).clone() );\n\n\t\tfor ( i = 1; i < this.points.length; i ++ ) {\n\n\t\t\t//tmpVec.copy( this.points[ i - 1 ] );\n\t\t\t//linearDistance = tmpVec.distanceTo( this.points[ i ] );\n\n\t\t\trealDistance = sl.chunks[ i ] - sl.chunks[ i - 1 ];\n\n\t\t\tsampling = Math.ceil( samplingCoef * realDistance / sl.total );\n\n\t\t\tindexCurrent = ( i - 1 ) / ( this.points.length - 1 );\n\t\t\tindexNext = i / ( this.points.length - 1 );\n\n\t\t\tfor ( j = 1; j < sampling - 1; j ++ ) {\n\n\t\t\t\tindex = indexCurrent + j * ( 1 / sampling ) * ( indexNext - indexCurrent );\n\n\t\t\t\tposition = this.getPoint( index );\n\t\t\t\tnewpoints.push( tmpVec.copy( position ).clone() );\n\n\t\t\t}\n\n\t\t\tnewpoints.push( tmpVec.copy( this.points[ i ] ).clone() );\n\n\t\t}\n\n\t\tthis.points = newpoints;\n\n\t};\n\n\t// Catmull-Rom\n\n\tfunction interpolate( p0, p1, p2, p3, t, t2, t3 ) {\n\n\t\tvar v0 = ( p2 - p0 ) * 0.5,\n\t\t\tv1 = ( p3 - p1 ) * 0.5;\n\n\t\treturn ( 2 * ( p1 - p2 ) + v0 + v1 ) * t3 + ( - 3 * ( p1 - p2 ) - 2 * v0 - v1 ) * t2 + v0 * t + p1;\n\n\t}\n\n}\n\n\nexport { Spline };\n","import { _Math } from './Math';\n\n/**\n * @author bhouston / http://clara.io\n * @author WestLangley / http://github.com/WestLangley\n *\n * Ref: https://en.wikipedia.org/wiki/Spherical_coordinate_system\n *\n * The poles (phi) are at the positive and negative y axis.\n * The equator starts at positive z.\n */\n\nfunction Spherical( radius, phi, theta ) {\n\n\tthis.radius = ( radius !== undefined ) ? radius : 1.0;\n\tthis.phi = ( phi !== undefined ) ? phi : 0; // up / down towards top and bottom pole\n\tthis.theta = ( theta !== undefined ) ? theta : 0; // around the equator of the sphere\n\n\treturn this;\n\n}\n\nSpherical.prototype = {\n\n\tconstructor: Spherical,\n\n\tset: function ( radius, phi, theta ) {\n\n\t\tthis.radius = radius;\n\t\tthis.phi = phi;\n\t\tthis.theta = theta;\n\n\t\treturn this;\n\n\t},\n\n\tclone: function () {\n\n\t\treturn new this.constructor().copy( this );\n\n\t},\n\n\tcopy: function ( other ) {\n\n\t\tthis.radius = other.radius;\n\t\tthis.phi = other.phi;\n\t\tthis.theta = other.theta;\n\n\t\treturn this;\n\n\t},\n\n\t// restrict phi to be betwee EPS and PI-EPS\n\tmakeSafe: function() {\n\n\t\tvar EPS = 0.000001;\n\t\tthis.phi = Math.max( EPS, Math.min( Math.PI - EPS, this.phi ) );\n\n\t\treturn this;\n\n\t},\n\n\tsetFromVector3: function( vec3 ) {\n\n\t\tthis.radius = vec3.length();\n\n\t\tif ( this.radius === 0 ) {\n\n\t\t\tthis.theta = 0;\n\t\t\tthis.phi = 0;\n\n\t\t} else {\n\n\t\t\tthis.theta = Math.atan2( vec3.x, vec3.z ); // equator angle around y-up axis\n\t\t\tthis.phi = Math.acos( _Math.clamp( vec3.y / this.radius, - 1, 1 ) ); // polar angle\n\n\t\t}\n\n\t\treturn this;\n\n\t},\n\n};\n\n\nexport { Spherical };\n","import { Mesh } from '../../objects/Mesh';\nimport { _Math } from '../../math/Math';\n\n/**\r\n * @author alteredq / http://alteredqualia.com/\r\n */\r\n\r\nfunction MorphBlendMesh( geometry, material ) {\n\r\n\tMesh.call( this, geometry, material );\r\n\r\n\tthis.animationsMap = {};\r\n\tthis.animationsList = [];\r\n\r\n\t// prepare default animation\r\n\t// (all frames played together in 1 second)\r\n\r\n\tvar numFrames = this.geometry.morphTargets.length;\r\n\r\n\tvar name = \"__default\";\r\n\r\n\tvar startFrame = 0;\r\n\tvar endFrame = numFrames - 1;\r\n\r\n\tvar fps = numFrames / 1;\r\n\r\n\tthis.createAnimation( name, startFrame, endFrame, fps );\r\n\tthis.setAnimationWeight( name, 1 );\r\n\r\n}\r\n\r\nMorphBlendMesh.prototype = Object.create( Mesh.prototype );\r\nMorphBlendMesh.prototype.constructor = MorphBlendMesh;\r\n\r\nMorphBlendMesh.prototype.createAnimation = function ( name, start, end, fps ) {\r\n\r\n\tvar animation = {\r\n\r\n\t\tstart: start,\r\n\t\tend: end,\r\n\r\n\t\tlength: end - start + 1,\r\n\r\n\t\tfps: fps,\r\n\t\tduration: ( end - start ) / fps,\r\n\r\n\t\tlastFrame: 0,\r\n\t\tcurrentFrame: 0,\r\n\r\n\t\tactive: false,\r\n\r\n\t\ttime: 0,\r\n\t\tdirection: 1,\r\n\t\tweight: 1,\r\n\r\n\t\tdirectionBackwards: false,\r\n\t\tmirroredLoop: false\r\n\r\n\t};\r\n\r\n\tthis.animationsMap[ name ] = animation;\r\n\tthis.animationsList.push( animation );\r\n\r\n};\r\n\r\nMorphBlendMesh.prototype.autoCreateAnimations = function ( fps ) {\r\n\r\n\tvar pattern = /([a-z]+)_?(\\d+)/i;\r\n\r\n\tvar firstAnimation, frameRanges = {};\r\n\r\n\tvar geometry = this.geometry;\r\n\r\n\tfor ( var i = 0, il = geometry.morphTargets.length; i < il; i ++ ) {\r\n\r\n\t\tvar morph = geometry.morphTargets[ i ];\r\n\t\tvar chunks = morph.name.match( pattern );\r\n\r\n\t\tif ( chunks && chunks.length > 1 ) {\r\n\r\n\t\t\tvar name = chunks[ 1 ];\r\n\r\n\t\t\tif ( ! frameRanges[ name ] ) frameRanges[ name ] = { start: Infinity, end: - Infinity };\r\n\r\n\t\t\tvar range = frameRanges[ name ];\r\n\r\n\t\t\tif ( i < range.start ) range.start = i;\r\n\t\t\tif ( i > range.end ) range.end = i;\r\n\r\n\t\t\tif ( ! firstAnimation ) firstAnimation = name;\r\n\r\n\t\t}\r\n\r\n\t}\r\n\r\n\tfor ( var name in frameRanges ) {\r\n\r\n\t\tvar range = frameRanges[ name ];\r\n\t\tthis.createAnimation( name, range.start, range.end, fps );\r\n\r\n\t}\r\n\r\n\tthis.firstAnimation = firstAnimation;\r\n\r\n};\r\n\r\nMorphBlendMesh.prototype.setAnimationDirectionForward = function ( name ) {\r\n\r\n\tvar animation = this.animationsMap[ name ];\r\n\r\n\tif ( animation ) {\r\n\r\n\t\tanimation.direction = 1;\r\n\t\tanimation.directionBackwards = false;\r\n\r\n\t}\r\n\r\n};\r\n\r\nMorphBlendMesh.prototype.setAnimationDirectionBackward = function ( name ) {\r\n\r\n\tvar animation = this.animationsMap[ name ];\r\n\r\n\tif ( animation ) {\r\n\r\n\t\tanimation.direction = - 1;\r\n\t\tanimation.directionBackwards = true;\r\n\r\n\t}\r\n\r\n};\r\n\r\nMorphBlendMesh.prototype.setAnimationFPS = function ( name, fps ) {\r\n\r\n\tvar animation = this.animationsMap[ name ];\r\n\r\n\tif ( animation ) {\r\n\r\n\t\tanimation.fps = fps;\r\n\t\tanimation.duration = ( animation.end - animation.start ) / animation.fps;\r\n\r\n\t}\r\n\r\n};\r\n\r\nMorphBlendMesh.prototype.setAnimationDuration = function ( name, duration ) {\r\n\r\n\tvar animation = this.animationsMap[ name ];\r\n\r\n\tif ( animation ) {\r\n\r\n\t\tanimation.duration = duration;\r\n\t\tanimation.fps = ( animation.end - animation.start ) / animation.duration;\r\n\r\n\t}\r\n\r\n};\r\n\r\nMorphBlendMesh.prototype.setAnimationWeight = function ( name, weight ) {\r\n\r\n\tvar animation = this.animationsMap[ name ];\r\n\r\n\tif ( animation ) {\r\n\r\n\t\tanimation.weight = weight;\r\n\r\n\t}\r\n\r\n};\r\n\r\nMorphBlendMesh.prototype.setAnimationTime = function ( name, time ) {\r\n\r\n\tvar animation = this.animationsMap[ name ];\r\n\r\n\tif ( animation ) {\r\n\r\n\t\tanimation.time = time;\r\n\r\n\t}\r\n\r\n};\r\n\r\nMorphBlendMesh.prototype.getAnimationTime = function ( name ) {\r\n\r\n\tvar time = 0;\r\n\r\n\tvar animation = this.animationsMap[ name ];\r\n\r\n\tif ( animation ) {\r\n\r\n\t\ttime = animation.time;\r\n\r\n\t}\r\n\r\n\treturn time;\r\n\r\n};\r\n\r\nMorphBlendMesh.prototype.getAnimationDuration = function ( name ) {\r\n\r\n\tvar duration = - 1;\r\n\r\n\tvar animation = this.animationsMap[ name ];\r\n\r\n\tif ( animation ) {\r\n\r\n\t\tduration = animation.duration;\r\n\r\n\t}\r\n\r\n\treturn duration;\r\n\r\n};\r\n\r\nMorphBlendMesh.prototype.playAnimation = function ( name ) {\r\n\r\n\tvar animation = this.animationsMap[ name ];\r\n\r\n\tif ( animation ) {\r\n\r\n\t\tanimation.time = 0;\r\n\t\tanimation.active = true;\r\n\r\n\t} else {\r\n\r\n\t\tconsole.warn( \"THREE.MorphBlendMesh: animation[\" + name + \"] undefined in .playAnimation()\" );\r\n\r\n\t}\r\n\r\n};\r\n\r\nMorphBlendMesh.prototype.stopAnimation = function ( name ) {\r\n\r\n\tvar animation = this.animationsMap[ name ];\r\n\r\n\tif ( animation ) {\r\n\r\n\t\tanimation.active = false;\r\n\r\n\t}\r\n\r\n};\r\n\r\nMorphBlendMesh.prototype.update = function ( delta ) {\r\n\r\n\tfor ( var i = 0, il = this.animationsList.length; i < il; i ++ ) {\r\n\r\n\t\tvar animation = this.animationsList[ i ];\r\n\r\n\t\tif ( ! animation.active ) continue;\r\n\r\n\t\tvar frameTime = animation.duration / animation.length;\r\n\r\n\t\tanimation.time += animation.direction * delta;\r\n\r\n\t\tif ( animation.mirroredLoop ) {\r\n\r\n\t\t\tif ( animation.time > animation.duration || animation.time < 0 ) {\r\n\r\n\t\t\t\tanimation.direction *= - 1;\r\n\r\n\t\t\t\tif ( animation.time > animation.duration ) {\r\n\r\n\t\t\t\t\tanimation.time = animation.duration;\r\n\t\t\t\t\tanimation.directionBackwards = true;\r\n\r\n\t\t\t\t}\r\n\r\n\t\t\t\tif ( animation.time < 0 ) {\r\n\r\n\t\t\t\t\tanimation.time = 0;\r\n\t\t\t\t\tanimation.directionBackwards = false;\r\n\r\n\t\t\t\t}\r\n\r\n\t\t\t}\r\n\r\n\t\t} else {\r\n\r\n\t\t\tanimation.time = animation.time % animation.duration;\r\n\r\n\t\t\tif ( animation.time < 0 ) animation.time += animation.duration;\r\n\r\n\t\t}\r\n\r\n\t\tvar keyframe = animation.start + _Math.clamp( Math.floor( animation.time / frameTime ), 0, animation.length - 1 );\r\n\t\tvar weight = animation.weight;\r\n\r\n\t\tif ( keyframe !== animation.currentFrame ) {\r\n\r\n\t\t\tthis.morphTargetInfluences[ animation.lastFrame ] = 0;\r\n\t\t\tthis.morphTargetInfluences[ animation.currentFrame ] = 1 * weight;\r\n\r\n\t\t\tthis.morphTargetInfluences[ keyframe ] = 0;\r\n\r\n\t\t\tanimation.lastFrame = animation.currentFrame;\r\n\t\t\tanimation.currentFrame = keyframe;\r\n\r\n\t\t}\r\n\r\n\t\tvar mix = ( animation.time % frameTime ) / frameTime;\r\n\r\n\t\tif ( animation.directionBackwards ) mix = 1 - mix;\r\n\r\n\t\tif ( animation.currentFrame !== animation.lastFrame ) {\r\n\r\n\t\t\tthis.morphTargetInfluences[ animation.currentFrame ] = mix * weight;\r\n\t\t\tthis.morphTargetInfluences[ animation.lastFrame ] = ( 1 - mix ) * weight;\r\n\r\n\t\t} else {\r\n\r\n\t\t\tthis.morphTargetInfluences[ animation.currentFrame ] = weight;\r\n\r\n\t\t}\r\n\r\n\t}\r\n\r\n};\r\n\n\nexport { MorphBlendMesh };\n","import { Object3D } from '../../core/Object3D';\n\n/**\n * @author alteredq / http://alteredqualia.com/\n */\n\nfunction ImmediateRenderObject( material ) {\n\n\tObject3D.call( this );\n\n\tthis.material = material;\n\tthis.render = function ( renderCallback ) {};\n\n}\n\nImmediateRenderObject.prototype = Object.create( Object3D.prototype );\nImmediateRenderObject.prototype.constructor = ImmediateRenderObject;\n\nImmediateRenderObject.prototype.isImmediateRenderObject = true;\n\n\nexport { ImmediateRenderObject };\n","import { Matrix3 } from '../../math/Matrix3';\nimport { Vector3 } from '../../math/Vector3';\nimport { LineSegments } from '../../objects/LineSegments';\nimport { LineBasicMaterial } from '../../materials/LineBasicMaterial';\nimport { Float32Attribute } from '../../core/BufferAttribute';\nimport { BufferGeometry } from '../../core/BufferGeometry';\n\n/**\n * @author mrdoob / http://mrdoob.com/\n * @author WestLangley / http://github.com/WestLangley\n*/\n\nfunction VertexNormalsHelper( object, size, hex, linewidth ) {\n\n\tthis.object = object;\n\n\tthis.size = ( size !== undefined ) ? size : 1;\n\n\tvar color = ( hex !== undefined ) ? hex : 0xff0000;\n\n\tvar width = ( linewidth !== undefined ) ? linewidth : 1;\n\n\t//\n\n\tvar nNormals = 0;\n\n\tvar objGeometry = this.object.geometry;\n\n\tif ( (objGeometry && objGeometry.isGeometry) ) {\n\n\t\tnNormals = objGeometry.faces.length * 3;\n\n\t} else if ( (objGeometry && objGeometry.isBufferGeometry) ) {\n\n\t\tnNormals = objGeometry.attributes.normal.count;\n\n\t}\n\n\t//\n\n\tvar geometry = new BufferGeometry();\n\n\tvar positions = new Float32Attribute( nNormals * 2 * 3, 3 );\n\n\tgeometry.addAttribute( 'position', positions );\n\n\tLineSegments.call( this, geometry, new LineBasicMaterial( { color: color, linewidth: width } ) );\n\n\t//\n\n\tthis.matrixAutoUpdate = false;\n\n\tthis.update();\n\n}\n\nVertexNormalsHelper.prototype = Object.create( LineSegments.prototype );\nVertexNormalsHelper.prototype.constructor = VertexNormalsHelper;\n\nVertexNormalsHelper.prototype.update = ( function () {\n\n\tvar v1 = new Vector3();\n\tvar v2 = new Vector3();\n\tvar normalMatrix = new Matrix3();\n\n\treturn function update() {\n\n\t\tvar keys = [ 'a', 'b', 'c' ];\n\n\t\tthis.object.updateMatrixWorld( true );\n\n\t\tnormalMatrix.getNormalMatrix( this.object.matrixWorld );\n\n\t\tvar matrixWorld = this.object.matrixWorld;\n\n\t\tvar position = this.geometry.attributes.position;\n\n\t\t//\n\n\t\tvar objGeometry = this.object.geometry;\n\n\t\tif ( (objGeometry && objGeometry.isGeometry) ) {\n\n\t\t\tvar vertices = objGeometry.vertices;\n\n\t\t\tvar faces = objGeometry.faces;\n\n\t\t\tvar idx = 0;\n\n\t\t\tfor ( var i = 0, l = faces.length; i < l; i ++ ) {\n\n\t\t\t\tvar face = faces[ i ];\n\n\t\t\t\tfor ( var j = 0, jl = face.vertexNormals.length; j < jl; j ++ ) {\n\n\t\t\t\t\tvar vertex = vertices[ face[ keys[ j ] ] ];\n\n\t\t\t\t\tvar normal = face.vertexNormals[ j ];\n\n\t\t\t\t\tv1.copy( vertex ).applyMatrix4( matrixWorld );\n\n\t\t\t\t\tv2.copy( normal ).applyMatrix3( normalMatrix ).normalize().multiplyScalar( this.size ).add( v1 );\n\n\t\t\t\t\tposition.setXYZ( idx, v1.x, v1.y, v1.z );\n\n\t\t\t\t\tidx = idx + 1;\n\n\t\t\t\t\tposition.setXYZ( idx, v2.x, v2.y, v2.z );\n\n\t\t\t\t\tidx = idx + 1;\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t} else if ( (objGeometry && objGeometry.isBufferGeometry) ) {\n\n\t\t\tvar objPos = objGeometry.attributes.position;\n\n\t\t\tvar objNorm = objGeometry.attributes.normal;\n\n\t\t\tvar idx = 0;\n\n\t\t\t// for simplicity, ignore index and drawcalls, and render every normal\n\n\t\t\tfor ( var j = 0, jl = objPos.count; j < jl; j ++ ) {\n\n\t\t\t\tv1.set( objPos.getX( j ), objPos.getY( j ), objPos.getZ( j ) ).applyMatrix4( matrixWorld );\n\n\t\t\t\tv2.set( objNorm.getX( j ), objNorm.getY( j ), objNorm.getZ( j ) );\n\n\t\t\t\tv2.applyMatrix3( normalMatrix ).normalize().multiplyScalar( this.size ).add( v1 );\n\n\t\t\t\tposition.setXYZ( idx, v1.x, v1.y, v1.z );\n\n\t\t\t\tidx = idx + 1;\n\n\t\t\t\tposition.setXYZ( idx, v2.x, v2.y, v2.z );\n\n\t\t\t\tidx = idx + 1;\n\n\t\t\t}\n\n\t\t}\n\n\t\tposition.needsUpdate = true;\n\n\t\treturn this;\n\n\t};\n\n}() );\n\n\nexport { VertexNormalsHelper };\n","import { Vector3 } from '../../math/Vector3';\nimport { Object3D } from '../../core/Object3D';\nimport { LineSegments } from '../../objects/LineSegments';\nimport { LineBasicMaterial } from '../../materials/LineBasicMaterial';\nimport { Float32Attribute } from '../../core/BufferAttribute';\nimport { BufferGeometry } from '../../core/BufferGeometry';\n\n/**\n * @author alteredq / http://alteredqualia.com/\n * @author mrdoob / http://mrdoob.com/\n * @author WestLangley / http://github.com/WestLangley\n*/\n\nfunction SpotLightHelper( light ) {\n\n\tObject3D.call( this );\n\n\tthis.light = light;\n\tthis.light.updateMatrixWorld();\n\n\tthis.matrix = light.matrixWorld;\n\tthis.matrixAutoUpdate = false;\n\n\tvar geometry = new BufferGeometry();\n\n\tvar positions = [\n\t\t0, 0, 0, 0, 0, 1,\n\t\t0, 0, 0, 1, 0, 1,\n\t\t0, 0, 0, - 1, 0, 1,\n\t\t0, 0, 0, 0, 1, 1,\n\t\t0, 0, 0, 0, - 1, 1\n\t];\n\n\tfor ( var i = 0, j = 1, l = 32; i < l; i ++, j ++ ) {\n\n\t\tvar p1 = ( i / l ) * Math.PI * 2;\n\t\tvar p2 = ( j / l ) * Math.PI * 2;\n\n\t\tpositions.push(\n\t\t\tMath.cos( p1 ), Math.sin( p1 ), 1,\n\t\t\tMath.cos( p2 ), Math.sin( p2 ), 1\n\t\t);\n\n\t}\n\n\tgeometry.addAttribute( 'position', new Float32Attribute( positions, 3 ) );\n\n\tvar material = new LineBasicMaterial( { fog: false } );\n\n\tthis.cone = new LineSegments( geometry, material );\n\tthis.add( this.cone );\n\n\tthis.update();\n\n}\n\nSpotLightHelper.prototype = Object.create( Object3D.prototype );\nSpotLightHelper.prototype.constructor = SpotLightHelper;\n\nSpotLightHelper.prototype.dispose = function () {\n\n\tthis.cone.geometry.dispose();\n\tthis.cone.material.dispose();\n\n};\n\nSpotLightHelper.prototype.update = function () {\n\n\tvar vector = new Vector3();\n\tvar vector2 = new Vector3();\n\n\treturn function update() {\n\n\t\tvar coneLength = this.light.distance ? this.light.distance : 1000;\n\t\tvar coneWidth = coneLength * Math.tan( this.light.angle );\n\n\t\tthis.cone.scale.set( coneWidth, coneWidth, coneLength );\n\n\t\tvector.setFromMatrixPosition( this.light.matrixWorld );\n\t\tvector2.setFromMatrixPosition( this.light.target.matrixWorld );\n\n\t\tthis.cone.lookAt( vector2.sub( vector ) );\n\n\t\tthis.cone.material.color.copy( this.light.color ).multiplyScalar( this.light.intensity );\n\n\t};\n\n}();\n\n\nexport { SpotLightHelper };\n","import { LineSegments } from '../../objects/LineSegments';\nimport { Matrix4 } from '../../math/Matrix4';\nimport { VertexColors } from '../../constants';\nimport { LineBasicMaterial } from '../../materials/LineBasicMaterial';\nimport { Color } from '../../math/Color';\nimport { Vector3 } from '../../math/Vector3';\nimport { Geometry } from '../../core/Geometry';\n\n/**\n * @author Sean Griffin / http://twitter.com/sgrif\n * @author Michael Guerrero / http://realitymeltdown.com\n * @author mrdoob / http://mrdoob.com/\n * @author ikerr / http://verold.com\n */\n\nfunction SkeletonHelper( object ) {\n\n\tthis.bones = this.getBoneList( object );\n\n\tvar geometry = new Geometry();\n\n\tfor ( var i = 0; i < this.bones.length; i ++ ) {\n\n\t\tvar bone = this.bones[ i ];\n\n\t\tif ( (bone.parent && bone.parent.isBone) ) {\n\n\t\t\tgeometry.vertices.push( new Vector3() );\n\t\t\tgeometry.vertices.push( new Vector3() );\n\t\t\tgeometry.colors.push( new Color( 0, 0, 1 ) );\n\t\t\tgeometry.colors.push( new Color( 0, 1, 0 ) );\n\n\t\t}\n\n\t}\n\n\tgeometry.dynamic = true;\n\n\tvar material = new LineBasicMaterial( { vertexColors: VertexColors, depthTest: false, depthWrite: false, transparent: true } );\n\n\tLineSegments.call( this, geometry, material );\n\n\tthis.root = object;\n\n\tthis.matrix = object.matrixWorld;\n\tthis.matrixAutoUpdate = false;\n\n\tthis.update();\n\n}\n\n\nSkeletonHelper.prototype = Object.create( LineSegments.prototype );\nSkeletonHelper.prototype.constructor = SkeletonHelper;\n\nSkeletonHelper.prototype.getBoneList = function( object ) {\n\n\tvar boneList = [];\n\n\tif ( (object && object.isBone) ) {\n\n\t\tboneList.push( object );\n\n\t}\n\n\tfor ( var i = 0; i < object.children.length; i ++ ) {\n\n\t\tboneList.push.apply( boneList, this.getBoneList( object.children[ i ] ) );\n\n\t}\n\n\treturn boneList;\n\n};\n\nSkeletonHelper.prototype.update = function () {\n\n\tvar geometry = this.geometry;\n\n\tvar matrixWorldInv = new Matrix4().getInverse( this.root.matrixWorld );\n\n\tvar boneMatrix = new Matrix4();\n\n\tvar j = 0;\n\n\tfor ( var i = 0; i < this.bones.length; i ++ ) {\n\n\t\tvar bone = this.bones[ i ];\n\n\t\tif ( (bone.parent && bone.parent.isBone) ) {\n\n\t\t\tboneMatrix.multiplyMatrices( matrixWorldInv, bone.matrixWorld );\n\t\t\tgeometry.vertices[ j ].setFromMatrixPosition( boneMatrix );\n\n\t\t\tboneMatrix.multiplyMatrices( matrixWorldInv, bone.parent.matrixWorld );\n\t\t\tgeometry.vertices[ j + 1 ].setFromMatrixPosition( boneMatrix );\n\n\t\t\tj += 2;\n\n\t\t}\n\n\t}\n\n\tgeometry.verticesNeedUpdate = true;\n\n\tgeometry.computeBoundingSphere();\n\n};\n\n\nexport { SkeletonHelper };\n","import { Mesh } from '../../objects/Mesh';\nimport { MeshBasicMaterial } from '../../materials/MeshBasicMaterial';\nimport { SphereBufferGeometry } from '../../geometries/SphereBufferGeometry';\n\n/**\n * @author alteredq / http://alteredqualia.com/\n * @author mrdoob / http://mrdoob.com/\n */\n\nfunction PointLightHelper( light, sphereSize ) {\n\n\tthis.light = light;\n\tthis.light.updateMatrixWorld();\n\n\tvar geometry = new SphereBufferGeometry( sphereSize, 4, 2 );\n\tvar material = new MeshBasicMaterial( { wireframe: true, fog: false } );\n\tmaterial.color.copy( this.light.color ).multiplyScalar( this.light.intensity );\n\n\tMesh.call( this, geometry, material );\n\n\tthis.matrix = this.light.matrixWorld;\n\tthis.matrixAutoUpdate = false;\n\n\t/*\n\tvar distanceGeometry = new THREE.IcosahedronGeometry( 1, 2 );\n\tvar distanceMaterial = new THREE.MeshBasicMaterial( { color: hexColor, fog: false, wireframe: true, opacity: 0.1, transparent: true } );\n\n\tthis.lightSphere = new THREE.Mesh( bulbGeometry, bulbMaterial );\n\tthis.lightDistance = new THREE.Mesh( distanceGeometry, distanceMaterial );\n\n\tvar d = light.distance;\n\n\tif ( d === 0.0 ) {\n\n\t\tthis.lightDistance.visible = false;\n\n\t} else {\n\n\t\tthis.lightDistance.scale.set( d, d, d );\n\n\t}\n\n\tthis.add( this.lightDistance );\n\t*/\n\n}\n\nPointLightHelper.prototype = Object.create( Mesh.prototype );\nPointLightHelper.prototype.constructor = PointLightHelper;\n\nPointLightHelper.prototype.dispose = function () {\n\n\tthis.geometry.dispose();\n\tthis.material.dispose();\n\n};\n\nPointLightHelper.prototype.update = function () {\n\n\tthis.material.color.copy( this.light.color ).multiplyScalar( this.light.intensity );\n\n\t/*\n\tvar d = this.light.distance;\n\n\tif ( d === 0.0 ) {\n\n\t\tthis.lightDistance.visible = false;\n\n\t} else {\n\n\t\tthis.lightDistance.visible = true;\n\t\tthis.lightDistance.scale.set( d, d, d );\n\n\t}\n\t*/\n\n};\n\n\nexport { PointLightHelper };\n","import { Vector3 } from '../../math/Vector3';\nimport { Object3D } from '../../core/Object3D';\nimport { Mesh } from '../../objects/Mesh';\nimport { FaceColors } from '../../constants';\nimport { MeshBasicMaterial } from '../../materials/MeshBasicMaterial';\nimport { SphereGeometry } from '../../geometries/SphereGeometry';\nimport { Color } from '../../math/Color';\n\n/**\n * @author alteredq / http://alteredqualia.com/\n * @author mrdoob / http://mrdoob.com/\n */\n\nfunction HemisphereLightHelper( light, sphereSize ) {\n\n\tObject3D.call( this );\n\n\tthis.light = light;\n\tthis.light.updateMatrixWorld();\n\n\tthis.matrix = light.matrixWorld;\n\tthis.matrixAutoUpdate = false;\n\n\tthis.colors = [ new Color(), new Color() ];\n\n\tvar geometry = new SphereGeometry( sphereSize, 4, 2 );\n\tgeometry.rotateX( - Math.PI / 2 );\n\n\tfor ( var i = 0, il = 8; i < il; i ++ ) {\n\n\t\tgeometry.faces[ i ].color = this.colors[ i < 4 ? 0 : 1 ];\n\n\t}\n\n\tvar material = new MeshBasicMaterial( { vertexColors: FaceColors, wireframe: true } );\n\n\tthis.lightSphere = new Mesh( geometry, material );\n\tthis.add( this.lightSphere );\n\n\tthis.update();\n\n}\n\nHemisphereLightHelper.prototype = Object.create( Object3D.prototype );\nHemisphereLightHelper.prototype.constructor = HemisphereLightHelper;\n\nHemisphereLightHelper.prototype.dispose = function () {\n\n\tthis.lightSphere.geometry.dispose();\n\tthis.lightSphere.material.dispose();\n\n};\n\nHemisphereLightHelper.prototype.update = function () {\n\n\tvar vector = new Vector3();\n\n\treturn function update() {\n\n\t\tthis.colors[ 0 ].copy( this.light.color ).multiplyScalar( this.light.intensity );\n\t\tthis.colors[ 1 ].copy( this.light.groundColor ).multiplyScalar( this.light.intensity );\n\n\t\tthis.lightSphere.lookAt( vector.setFromMatrixPosition( this.light.matrixWorld ).negate() );\n\t\tthis.lightSphere.geometry.colorsNeedUpdate = true;\n\n\t};\n\n}();\n\n\nexport { HemisphereLightHelper };\n","import { LineSegments } from '../../objects/LineSegments';\nimport { VertexColors } from '../../constants';\nimport { LineBasicMaterial } from '../../materials/LineBasicMaterial';\nimport { Float32Attribute } from '../../core/BufferAttribute';\nimport { BufferGeometry } from '../../core/BufferGeometry';\nimport { Color } from '../../math/Color';\n\n/**\n * @author mrdoob / http://mrdoob.com/\n */\n\nfunction GridHelper( size, divisions, color1, color2 ) {\n\n\tdivisions = divisions || 1;\n\tcolor1 = new Color( color1 !== undefined ? color1 : 0x444444 );\n\tcolor2 = new Color( color2 !== undefined ? color2 : 0x888888 );\n\n\tvar center = divisions / 2;\n\tvar step = ( size * 2 ) / divisions;\n\tvar vertices = [], colors = [];\n\n\tfor ( var i = 0, j = 0, k = - size; i <= divisions; i ++, k += step ) {\n\n\t\tvertices.push( - size, 0, k, size, 0, k );\n\t\tvertices.push( k, 0, - size, k, 0, size );\n\n\t\tvar color = i === center ? color1 : color2;\n\n\t\tcolor.toArray( colors, j ); j += 3;\n\t\tcolor.toArray( colors, j ); j += 3;\n\t\tcolor.toArray( colors, j ); j += 3;\n\t\tcolor.toArray( colors, j ); j += 3;\n\n\t}\n\n\tvar geometry = new BufferGeometry();\n\tgeometry.addAttribute( 'position', new Float32Attribute( vertices, 3 ) );\n\tgeometry.addAttribute( 'color', new Float32Attribute( colors, 3 ) );\n\n\tvar material = new LineBasicMaterial( { vertexColors: VertexColors } );\n\n\tLineSegments.call( this, geometry, material );\n\n}\n\nGridHelper.prototype = Object.create( LineSegments.prototype );\nGridHelper.prototype.constructor = GridHelper;\n\nGridHelper.prototype.setColors = function () {\n\n\tconsole.error( 'THREE.GridHelper: setColors() has been deprecated, pass them in the constructor instead.' );\n\n};\n\n\nexport { GridHelper };\n","import { Matrix3 } from '../../math/Matrix3';\nimport { Vector3 } from '../../math/Vector3';\nimport { LineSegments } from '../../objects/LineSegments';\nimport { LineBasicMaterial } from '../../materials/LineBasicMaterial';\nimport { Float32Attribute } from '../../core/BufferAttribute';\nimport { BufferGeometry } from '../../core/BufferGeometry';\n\n/**\n * @author mrdoob / http://mrdoob.com/\n * @author WestLangley / http://github.com/WestLangley\n*/\n\nfunction FaceNormalsHelper( object, size, hex, linewidth ) {\n\n\t// FaceNormalsHelper only supports THREE.Geometry\n\n\tthis.object = object;\n\n\tthis.size = ( size !== undefined ) ? size : 1;\n\n\tvar color = ( hex !== undefined ) ? hex : 0xffff00;\n\n\tvar width = ( linewidth !== undefined ) ? linewidth : 1;\n\n\t//\n\n\tvar nNormals = 0;\n\n\tvar objGeometry = this.object.geometry;\n\n\tif ( (objGeometry && objGeometry.isGeometry) ) {\n\n\t\tnNormals = objGeometry.faces.length;\n\n\t} else {\n\n\t\tconsole.warn( 'THREE.FaceNormalsHelper: only THREE.Geometry is supported. Use THREE.VertexNormalsHelper, instead.' );\n\n\t}\n\n\t//\n\n\tvar geometry = new BufferGeometry();\n\n\tvar positions = new Float32Attribute( nNormals * 2 * 3, 3 );\n\n\tgeometry.addAttribute( 'position', positions );\n\n\tLineSegments.call( this, geometry, new LineBasicMaterial( { color: color, linewidth: width } ) );\n\n\t//\n\n\tthis.matrixAutoUpdate = false;\n\tthis.update();\n\n}\n\nFaceNormalsHelper.prototype = Object.create( LineSegments.prototype );\nFaceNormalsHelper.prototype.constructor = FaceNormalsHelper;\n\nFaceNormalsHelper.prototype.update = ( function () {\n\n\tvar v1 = new Vector3();\n\tvar v2 = new Vector3();\n\tvar normalMatrix = new Matrix3();\n\n\treturn function update() {\n\n\t\tthis.object.updateMatrixWorld( true );\n\n\t\tnormalMatrix.getNormalMatrix( this.object.matrixWorld );\n\n\t\tvar matrixWorld = this.object.matrixWorld;\n\n\t\tvar position = this.geometry.attributes.position;\n\n\t\t//\n\n\t\tvar objGeometry = this.object.geometry;\n\n\t\tvar vertices = objGeometry.vertices;\n\n\t\tvar faces = objGeometry.faces;\n\n\t\tvar idx = 0;\n\n\t\tfor ( var i = 0, l = faces.length; i < l; i ++ ) {\n\n\t\t\tvar face = faces[ i ];\n\n\t\t\tvar normal = face.normal;\n\n\t\t\tv1.copy( vertices[ face.a ] )\n\t\t\t\t.add( vertices[ face.b ] )\n\t\t\t\t.add( vertices[ face.c ] )\n\t\t\t\t.divideScalar( 3 )\n\t\t\t\t.applyMatrix4( matrixWorld );\n\n\t\t\tv2.copy( normal ).applyMatrix3( normalMatrix ).normalize().multiplyScalar( this.size ).add( v1 );\n\n\t\t\tposition.setXYZ( idx, v1.x, v1.y, v1.z );\n\n\t\t\tidx = idx + 1;\n\n\t\t\tposition.setXYZ( idx, v2.x, v2.y, v2.z );\n\n\t\t\tidx = idx + 1;\n\n\t\t}\n\n\t\tposition.needsUpdate = true;\n\n\t\treturn this;\n\n\t};\n\n}() );\n\n\nexport { FaceNormalsHelper };\n","import { Vector3 } from '../../math/Vector3';\nimport { Object3D } from '../../core/Object3D';\nimport { Line } from '../../objects/Line';\nimport { Float32Attribute } from '../../core/BufferAttribute';\nimport { BufferGeometry } from '../../core/BufferGeometry';\nimport { LineBasicMaterial } from '../../materials/LineBasicMaterial';\n\n/**\n * @author alteredq / http://alteredqualia.com/\n * @author mrdoob / http://mrdoob.com/\n * @author WestLangley / http://github.com/WestLangley\n */\n\nfunction DirectionalLightHelper( light, size ) {\n\n\tObject3D.call( this );\n\n\tthis.light = light;\n\tthis.light.updateMatrixWorld();\n\n\tthis.matrix = light.matrixWorld;\n\tthis.matrixAutoUpdate = false;\n\n\tif ( size === undefined ) size = 1;\n\n\tvar geometry = new BufferGeometry();\n\tgeometry.addAttribute( 'position', new Float32Attribute( [\n\t\t- size, size, 0,\n\t\t size, size, 0,\n\t\t size, - size, 0,\n\t\t- size, - size, 0,\n\t\t- size, size, 0\n\t], 3 ) );\n\n\tvar material = new LineBasicMaterial( { fog: false } );\n\n\tthis.add( new Line( geometry, material ) );\n\n\tgeometry = new BufferGeometry();\n\tgeometry.addAttribute( 'position', new Float32Attribute( [ 0, 0, 0, 0, 0, 1 ], 3 ) );\n\n\tthis.add( new Line( geometry, material ));\n\n\tthis.update();\n\n}\n\nDirectionalLightHelper.prototype = Object.create( Object3D.prototype );\nDirectionalLightHelper.prototype.constructor = DirectionalLightHelper;\n\nDirectionalLightHelper.prototype.dispose = function () {\n\n\tvar lightPlane = this.children[ 0 ];\n\tvar targetLine = this.children[ 1 ];\n\n\tlightPlane.geometry.dispose();\n\tlightPlane.material.dispose();\n\ttargetLine.geometry.dispose();\n\ttargetLine.material.dispose();\n\n};\n\nDirectionalLightHelper.prototype.update = function () {\n\n\tvar v1 = new Vector3();\n\tvar v2 = new Vector3();\n\tvar v3 = new Vector3();\n\n\treturn function update() {\n\n\t\tv1.setFromMatrixPosition( this.light.matrixWorld );\n\t\tv2.setFromMatrixPosition( this.light.target.matrixWorld );\n\t\tv3.subVectors( v2, v1 );\n\n\t\tvar lightPlane = this.children[ 0 ];\n\t\tvar targetLine = this.children[ 1 ];\n\n\t\tlightPlane.lookAt( v3 );\n\t\tlightPlane.material.color.copy( this.light.color ).multiplyScalar( this.light.intensity );\n\n\t\ttargetLine.lookAt( v3 );\n\t\ttargetLine.scale.z = v3.length();\n\n\t};\n\n}();\n\n\nexport { DirectionalLightHelper };\n","import { Camera } from '../../cameras/Camera';\nimport { Vector3 } from '../../math/Vector3';\nimport { LineSegments } from '../../objects/LineSegments';\nimport { Color } from '../../math/Color';\nimport { FaceColors } from '../../constants';\nimport { LineBasicMaterial } from '../../materials/LineBasicMaterial';\nimport { Geometry } from '../../core/Geometry';\n\n/**\n * @author alteredq / http://alteredqualia.com/\n *\n *\t- shows frustum, line of sight and up of the camera\n *\t- suitable for fast updates\n * \t- based on frustum visualization in lightgl.js shadowmap example\n *\t\thttp://evanw.github.com/lightgl.js/tests/shadowmap.html\n */\n\nfunction CameraHelper( camera ) {\n\n\tvar geometry = new Geometry();\n\tvar material = new LineBasicMaterial( { color: 0xffffff, vertexColors: FaceColors } );\n\n\tvar pointMap = {};\n\n\t// colors\n\n\tvar hexFrustum = 0xffaa00;\n\tvar hexCone = 0xff0000;\n\tvar hexUp = 0x00aaff;\n\tvar hexTarget = 0xffffff;\n\tvar hexCross = 0x333333;\n\n\t// near\n\n\taddLine( \"n1\", \"n2\", hexFrustum );\n\taddLine( \"n2\", \"n4\", hexFrustum );\n\taddLine( \"n4\", \"n3\", hexFrustum );\n\taddLine( \"n3\", \"n1\", hexFrustum );\n\n\t// far\n\n\taddLine( \"f1\", \"f2\", hexFrustum );\n\taddLine( \"f2\", \"f4\", hexFrustum );\n\taddLine( \"f4\", \"f3\", hexFrustum );\n\taddLine( \"f3\", \"f1\", hexFrustum );\n\n\t// sides\n\n\taddLine( \"n1\", \"f1\", hexFrustum );\n\taddLine( \"n2\", \"f2\", hexFrustum );\n\taddLine( \"n3\", \"f3\", hexFrustum );\n\taddLine( \"n4\", \"f4\", hexFrustum );\n\n\t// cone\n\n\taddLine( \"p\", \"n1\", hexCone );\n\taddLine( \"p\", \"n2\", hexCone );\n\taddLine( \"p\", \"n3\", hexCone );\n\taddLine( \"p\", \"n4\", hexCone );\n\n\t// up\n\n\taddLine( \"u1\", \"u2\", hexUp );\n\taddLine( \"u2\", \"u3\", hexUp );\n\taddLine( \"u3\", \"u1\", hexUp );\n\n\t// target\n\n\taddLine( \"c\", \"t\", hexTarget );\n\taddLine( \"p\", \"c\", hexCross );\n\n\t// cross\n\n\taddLine( \"cn1\", \"cn2\", hexCross );\n\taddLine( \"cn3\", \"cn4\", hexCross );\n\n\taddLine( \"cf1\", \"cf2\", hexCross );\n\taddLine( \"cf3\", \"cf4\", hexCross );\n\n\tfunction addLine( a, b, hex ) {\n\n\t\taddPoint( a, hex );\n\t\taddPoint( b, hex );\n\n\t}\n\n\tfunction addPoint( id, hex ) {\n\n\t\tgeometry.vertices.push( new Vector3() );\n\t\tgeometry.colors.push( new Color( hex ) );\n\n\t\tif ( pointMap[ id ] === undefined ) {\n\n\t\t\tpointMap[ id ] = [];\n\n\t\t}\n\n\t\tpointMap[ id ].push( geometry.vertices.length - 1 );\n\n\t}\n\n\tLineSegments.call( this, geometry, material );\n\n\tthis.camera = camera;\n\tif( this.camera.updateProjectionMatrix ) this.camera.updateProjectionMatrix();\n\n\tthis.matrix = camera.matrixWorld;\n\tthis.matrixAutoUpdate = false;\n\n\tthis.pointMap = pointMap;\n\n\tthis.update();\n\n}\n\nCameraHelper.prototype = Object.create( LineSegments.prototype );\nCameraHelper.prototype.constructor = CameraHelper;\n\nCameraHelper.prototype.update = function () {\n\n\tvar geometry, pointMap;\n\n\tvar vector = new Vector3();\n\tvar camera = new Camera();\n\n\tfunction setPoint( point, x, y, z ) {\n\n\t\tvector.set( x, y, z ).unproject( camera );\n\n\t\tvar points = pointMap[ point ];\n\n\t\tif ( points !== undefined ) {\n\n\t\t\tfor ( var i = 0, il = points.length; i < il; i ++ ) {\n\n\t\t\t\tgeometry.vertices[ points[ i ] ].copy( vector );\n\n\t\t\t}\n\n\t\t}\n\n\t}\n\n\treturn function update() {\n\n\t\tgeometry = this.geometry;\n\t\tpointMap = this.pointMap;\n\n\t\tvar w = 1, h = 1;\n\n\t\t// we need just camera projection matrix\n\t\t// world matrix must be identity\n\n\t\tcamera.projectionMatrix.copy( this.camera.projectionMatrix );\n\n\t\t// center / target\n\n\t\tsetPoint( \"c\", 0, 0, - 1 );\n\t\tsetPoint( \"t\", 0, 0, 1 );\n\n\t\t// near\n\n\t\tsetPoint( \"n1\", - w, - h, - 1 );\n\t\tsetPoint( \"n2\", w, - h, - 1 );\n\t\tsetPoint( \"n3\", - w, h, - 1 );\n\t\tsetPoint( \"n4\", w, h, - 1 );\n\n\t\t// far\n\n\t\tsetPoint( \"f1\", - w, - h, 1 );\n\t\tsetPoint( \"f2\", w, - h, 1 );\n\t\tsetPoint( \"f3\", - w, h, 1 );\n\t\tsetPoint( \"f4\", w, h, 1 );\n\n\t\t// up\n\n\t\tsetPoint( \"u1\", w * 0.7, h * 1.1, - 1 );\n\t\tsetPoint( \"u2\", - w * 0.7, h * 1.1, - 1 );\n\t\tsetPoint( \"u3\", 0, h * 2, - 1 );\n\n\t\t// cross\n\n\t\tsetPoint( \"cf1\", - w, 0, 1 );\n\t\tsetPoint( \"cf2\", w, 0, 1 );\n\t\tsetPoint( \"cf3\", 0, - h, 1 );\n\t\tsetPoint( \"cf4\", 0, h, 1 );\n\n\t\tsetPoint( \"cn1\", - w, 0, - 1 );\n\t\tsetPoint( \"cn2\", w, 0, - 1 );\n\t\tsetPoint( \"cn3\", 0, - h, - 1 );\n\t\tsetPoint( \"cn4\", 0, h, - 1 );\n\n\t\tgeometry.verticesNeedUpdate = true;\n\n\t};\n\n}();\n\n\nexport { CameraHelper };\n","import { Mesh } from '../../objects/Mesh';\nimport { MeshBasicMaterial } from '../../materials/MeshBasicMaterial';\nimport { BoxGeometry } from '../../geometries/BoxGeometry';\nimport { Box3 } from '../../math/Box3';\n\n/**\n * @author WestLangley / http://github.com/WestLangley\n */\n\n// a helper to show the world-axis-aligned bounding box for an object\n\nfunction BoundingBoxHelper( object, hex ) {\n\n\tvar color = ( hex !== undefined ) ? hex : 0x888888;\n\n\tthis.object = object;\n\n\tthis.box = new Box3();\n\n\tMesh.call( this, new BoxGeometry( 1, 1, 1 ), new MeshBasicMaterial( { color: color, wireframe: true } ) );\n\n}\n\nBoundingBoxHelper.prototype = Object.create( Mesh.prototype );\nBoundingBoxHelper.prototype.constructor = BoundingBoxHelper;\n\nBoundingBoxHelper.prototype.update = function () {\n\n\tthis.box.setFromObject( this.object );\n\n\tthis.box.getSize( this.scale );\n\n\tthis.box.getCenter( this.position );\n\n};\n\n\nexport { BoundingBoxHelper };\n","import { Box3 } from '../../math/Box3';\nimport { LineSegments } from '../../objects/LineSegments';\nimport { LineBasicMaterial } from '../../materials/LineBasicMaterial';\nimport { BufferAttribute } from '../../core/BufferAttribute';\nimport { BufferGeometry } from '../../core/BufferGeometry';\n\n/**\n * @author mrdoob / http://mrdoob.com/\n */\n\nfunction BoxHelper( object, color ) {\n\n\tif ( color === undefined ) color = 0xffff00;\n\n\tvar indices = new Uint16Array( [ 0, 1, 1, 2, 2, 3, 3, 0, 4, 5, 5, 6, 6, 7, 7, 4, 0, 4, 1, 5, 2, 6, 3, 7 ] );\n\tvar positions = new Float32Array( 8 * 3 );\n\n\tvar geometry = new BufferGeometry();\n\tgeometry.setIndex( new BufferAttribute( indices, 1 ) );\n\tgeometry.addAttribute( 'position', new BufferAttribute( positions, 3 ) );\n\n\tLineSegments.call( this, geometry, new LineBasicMaterial( { color: color } ) );\n\n\tif ( object !== undefined ) {\n\n\t\tthis.update( object );\n\n\t}\n\n}\n\nBoxHelper.prototype = Object.create( LineSegments.prototype );\nBoxHelper.prototype.constructor = BoxHelper;\n\nBoxHelper.prototype.update = ( function () {\n\n\tvar box = new Box3();\n\n\treturn function update( object ) {\n\n\t\tif ( (object && object.isBox3) ) {\n\n\t\t\tbox.copy( object );\n\n\t\t} else {\n\n\t\t\tbox.setFromObject( object );\n\n\t\t}\n\n\t\tif ( box.isEmpty() ) return;\n\n\t\tvar min = box.min;\n\t\tvar max = box.max;\n\n\t\t/*\n\t\t 5____4\n\t\t1/___0/|\n\t\t| 6__|_7\n\t\t2/___3/\n\n\t\t0: max.x, max.y, max.z\n\t\t1: min.x, max.y, max.z\n\t\t2: min.x, min.y, max.z\n\t\t3: max.x, min.y, max.z\n\t\t4: max.x, max.y, min.z\n\t\t5: min.x, max.y, min.z\n\t\t6: min.x, min.y, min.z\n\t\t7: max.x, min.y, min.z\n\t\t*/\n\n\t\tvar position = this.geometry.attributes.position;\n\t\tvar array = position.array;\n\n\t\tarray[ 0 ] = max.x; array[ 1 ] = max.y; array[ 2 ] = max.z;\n\t\tarray[ 3 ] = min.x; array[ 4 ] = max.y; array[ 5 ] = max.z;\n\t\tarray[ 6 ] = min.x; array[ 7 ] = min.y; array[ 8 ] = max.z;\n\t\tarray[ 9 ] = max.x; array[ 10 ] = min.y; array[ 11 ] = max.z;\n\t\tarray[ 12 ] = max.x; array[ 13 ] = max.y; array[ 14 ] = min.z;\n\t\tarray[ 15 ] = min.x; array[ 16 ] = max.y; array[ 17 ] = min.z;\n\t\tarray[ 18 ] = min.x; array[ 19 ] = min.y; array[ 20 ] = min.z;\n\t\tarray[ 21 ] = max.x; array[ 22 ] = min.y; array[ 23 ] = min.z;\n\n\t\tposition.needsUpdate = true;\n\n\t\tthis.geometry.computeBoundingSphere();\n\n\t};\n\n} )();\n\n\nexport { BoxHelper };\n","/**\n * @author WestLangley / http://github.com/WestLangley\n * @author zz85 / http://github.com/zz85\n * @author bhouston / http://clara.io\n *\n * Creates an arrow for visualizing directions\n *\n * Parameters:\n * dir - Vector3\n * origin - Vector3\n * length - Number\n * color - color in hex value\n * headLength - Number\n * headWidth - Number\n */\n\nimport { Vector3 } from '../../math/Vector3';\nimport { Object3D } from '../../core/Object3D';\nimport { CylinderBufferGeometry } from '../../geometries/CylinderBufferGeometry';\nimport { Float32Attribute } from '../../core/BufferAttribute';\nimport { BufferGeometry } from '../../core/BufferGeometry';\nimport { MeshBasicMaterial } from '../../materials/MeshBasicMaterial';\nimport { Mesh } from '../../objects/Mesh';\nimport { LineBasicMaterial } from '../../materials/LineBasicMaterial';\nimport { Line } from '../../objects/Line';\n\nvar lineGeometry = new BufferGeometry();\nlineGeometry.addAttribute( 'position', new Float32Attribute( [ 0, 0, 0, 0, 1, 0 ], 3 ) );\n\nvar coneGeometry = new CylinderBufferGeometry( 0, 0.5, 1, 5, 1 );\nconeGeometry.translate( 0, - 0.5, 0 );\n\nfunction ArrowHelper( dir, origin, length, color, headLength, headWidth ) {\n\n\t// dir is assumed to be normalized\n\n\tObject3D.call( this );\n\n\tif ( color === undefined ) color = 0xffff00;\n\tif ( length === undefined ) length = 1;\n\tif ( headLength === undefined ) headLength = 0.2 * length;\n\tif ( headWidth === undefined ) headWidth = 0.2 * headLength;\n\n\tthis.position.copy( origin );\n\n\tthis.line = new Line( lineGeometry, new LineBasicMaterial( { color: color } ) );\n\tthis.line.matrixAutoUpdate = false;\n\tthis.add( this.line );\n\n\tthis.cone = new Mesh( coneGeometry, new MeshBasicMaterial( { color: color } ) );\n\tthis.cone.matrixAutoUpdate = false;\n\tthis.add( this.cone );\n\n\tthis.setDirection( dir );\n\tthis.setLength( length, headLength, headWidth );\n\n}\n\nArrowHelper.prototype = Object.create( Object3D.prototype );\nArrowHelper.prototype.constructor = ArrowHelper;\n\nArrowHelper.prototype.setDirection = ( function () {\n\n\tvar axis = new Vector3();\n\tvar radians;\n\n\treturn function setDirection( dir ) {\n\n\t\t// dir is assumed to be normalized\n\n\t\tif ( dir.y > 0.99999 ) {\n\n\t\t\tthis.quaternion.set( 0, 0, 0, 1 );\n\n\t\t} else if ( dir.y < - 0.99999 ) {\n\n\t\t\tthis.quaternion.set( 1, 0, 0, 0 );\n\n\t\t} else {\n\n\t\t\taxis.set( dir.z, 0, - dir.x ).normalize();\n\n\t\t\tradians = Math.acos( dir.y );\n\n\t\t\tthis.quaternion.setFromAxisAngle( axis, radians );\n\n\t\t}\n\n\t};\n\n}() );\n\nArrowHelper.prototype.setLength = function ( length, headLength, headWidth ) {\n\n\tif ( headLength === undefined ) headLength = 0.2 * length;\n\tif ( headWidth === undefined ) headWidth = 0.2 * headLength;\n\n\tthis.line.scale.set( 1, Math.max( 0, length - headLength ), 1 );\n\tthis.line.updateMatrix();\n\n\tthis.cone.scale.set( headWidth, headLength, headWidth );\n\tthis.cone.position.y = length;\n\tthis.cone.updateMatrix();\n\n};\n\nArrowHelper.prototype.setColor = function ( color ) {\n\n\tthis.line.material.color.copy( color );\n\tthis.cone.material.color.copy( color );\n\n};\n\n\nexport { ArrowHelper };\n","import { LineSegments } from '../../objects/LineSegments';\nimport { VertexColors } from '../../constants';\nimport { LineBasicMaterial } from '../../materials/LineBasicMaterial';\nimport { BufferAttribute } from '../../core/BufferAttribute';\nimport { BufferGeometry } from '../../core/BufferGeometry';\n\n/**\n * @author sroucheray / http://sroucheray.org/\n * @author mrdoob / http://mrdoob.com/\n */\n\nfunction AxisHelper( size ) {\n\n\tsize = size || 1;\n\n\tvar vertices = new Float32Array( [\n\t\t0, 0, 0, size, 0, 0,\n\t\t0, 0, 0, 0, size, 0,\n\t\t0, 0, 0, 0, 0, size\n\t] );\n\n\tvar colors = new Float32Array( [\n\t\t1, 0, 0, 1, 0.6, 0,\n\t\t0, 1, 0, 0.6, 1, 0,\n\t\t0, 0, 1, 0, 0.6, 1\n\t] );\n\n\tvar geometry = new BufferGeometry();\n\tgeometry.addAttribute( 'position', new BufferAttribute( vertices, 3 ) );\n\tgeometry.addAttribute( 'color', new BufferAttribute( colors, 3 ) );\n\n\tvar material = new LineBasicMaterial( { vertexColors: VertexColors } );\n\n\tLineSegments.call( this, geometry, material );\n\n}\n\nAxisHelper.prototype = Object.create( LineSegments.prototype );\nAxisHelper.prototype.constructor = AxisHelper;\n\n\nexport { AxisHelper };\n","import { Vector3 } from '../../math/Vector3';\nimport { Curve } from '../core/Curve';\n\n/**\n * @author zz85 https://github.com/zz85\n *\n * Centripetal CatmullRom Curve - which is useful for avoiding\n * cusps and self-intersections in non-uniform catmull rom curves.\n * http://www.cemyuksel.com/research/catmullrom_param/catmullrom.pdf\n *\n * curve.type accepts centripetal(default), chordal and catmullrom\n * curve.tension is used for catmullrom which defaults to 0.5\n */\n\nvar CatmullRomCurve3 = ( function() {\n\n\tvar\n\t\ttmp = new Vector3(),\n\t\tpx = new CubicPoly(),\n\t\tpy = new CubicPoly(),\n\t\tpz = new CubicPoly();\n\n\t/*\n\tBased on an optimized c++ solution in\n\t - http://stackoverflow.com/questions/9489736/catmull-rom-curve-with-no-cusps-and-no-self-intersections/\n\t - http://ideone.com/NoEbVM\n\n\tThis CubicPoly class could be used for reusing some variables and calculations,\n\tbut for three.js curve use, it could be possible inlined and flatten into a single function call\n\twhich can be placed in CurveUtils.\n\t*/\n\n\tfunction CubicPoly() {}\n\n\t/*\n\t * Compute coefficients for a cubic polynomial\n\t * p(s) = c0 + c1*s + c2*s^2 + c3*s^3\n\t * such that\n\t * p(0) = x0, p(1) = x1\n\t * and\n\t * p'(0) = t0, p'(1) = t1.\n\t */\n\tCubicPoly.prototype.init = function( x0, x1, t0, t1 ) {\n\n\t\tthis.c0 = x0;\n\t\tthis.c1 = t0;\n\t\tthis.c2 = - 3 * x0 + 3 * x1 - 2 * t0 - t1;\n\t\tthis.c3 = 2 * x0 - 2 * x1 + t0 + t1;\n\n\t};\n\n\tCubicPoly.prototype.initNonuniformCatmullRom = function( x0, x1, x2, x3, dt0, dt1, dt2 ) {\n\n\t\t// compute tangents when parameterized in [t1,t2]\n\t\tvar t1 = ( x1 - x0 ) / dt0 - ( x2 - x0 ) / ( dt0 + dt1 ) + ( x2 - x1 ) / dt1;\n\t\tvar t2 = ( x2 - x1 ) / dt1 - ( x3 - x1 ) / ( dt1 + dt2 ) + ( x3 - x2 ) / dt2;\n\n\t\t// rescale tangents for parametrization in [0,1]\n\t\tt1 *= dt1;\n\t\tt2 *= dt1;\n\n\t\t// initCubicPoly\n\t\tthis.init( x1, x2, t1, t2 );\n\n\t};\n\n\t// standard Catmull-Rom spline: interpolate between x1 and x2 with previous/following points x1/x4\n\tCubicPoly.prototype.initCatmullRom = function( x0, x1, x2, x3, tension ) {\n\n\t\tthis.init( x1, x2, tension * ( x2 - x0 ), tension * ( x3 - x1 ) );\n\n\t};\n\n\tCubicPoly.prototype.calc = function( t ) {\n\n\t\tvar t2 = t * t;\n\t\tvar t3 = t2 * t;\n\t\treturn this.c0 + this.c1 * t + this.c2 * t2 + this.c3 * t3;\n\n\t};\n\n\t// Subclass Three.js curve\n\treturn Curve.create(\n\n\t\tfunction ( p /* array of Vector3 */ ) {\n\n\t\t\tthis.points = p || [];\n\t\t\tthis.closed = false;\n\n\t\t},\n\n\t\tfunction ( t ) {\n\n\t\t\tvar points = this.points,\n\t\t\t\tpoint, intPoint, weight, l;\n\n\t\t\tl = points.length;\n\n\t\t\tif ( l < 2 ) console.log( 'duh, you need at least 2 points' );\n\n\t\t\tpoint = ( l - ( this.closed ? 0 : 1 ) ) * t;\n\t\t\tintPoint = Math.floor( point );\n\t\t\tweight = point - intPoint;\n\n\t\t\tif ( this.closed ) {\n\n\t\t\t\tintPoint += intPoint > 0 ? 0 : ( Math.floor( Math.abs( intPoint ) / points.length ) + 1 ) * points.length;\n\n\t\t\t} else if ( weight === 0 && intPoint === l - 1 ) {\n\n\t\t\t\tintPoint = l - 2;\n\t\t\t\tweight = 1;\n\n\t\t\t}\n\n\t\t\tvar p0, p1, p2, p3; // 4 points\n\n\t\t\tif ( this.closed || intPoint > 0 ) {\n\n\t\t\t\tp0 = points[ ( intPoint - 1 ) % l ];\n\n\t\t\t} else {\n\n\t\t\t\t// extrapolate first point\n\t\t\t\ttmp.subVectors( points[ 0 ], points[ 1 ] ).add( points[ 0 ] );\n\t\t\t\tp0 = tmp;\n\n\t\t\t}\n\n\t\t\tp1 = points[ intPoint % l ];\n\t\t\tp2 = points[ ( intPoint + 1 ) % l ];\n\n\t\t\tif ( this.closed || intPoint + 2 < l ) {\n\n\t\t\t\tp3 = points[ ( intPoint + 2 ) % l ];\n\n\t\t\t} else {\n\n\t\t\t\t// extrapolate last point\n\t\t\t\ttmp.subVectors( points[ l - 1 ], points[ l - 2 ] ).add( points[ l - 1 ] );\n\t\t\t\tp3 = tmp;\n\n\t\t\t}\n\n\t\t\tif ( this.type === undefined || this.type === 'centripetal' || this.type === 'chordal' ) {\n\n\t\t\t\t// init Centripetal / Chordal Catmull-Rom\n\t\t\t\tvar pow = this.type === 'chordal' ? 0.5 : 0.25;\n\t\t\t\tvar dt0 = Math.pow( p0.distanceToSquared( p1 ), pow );\n\t\t\t\tvar dt1 = Math.pow( p1.distanceToSquared( p2 ), pow );\n\t\t\t\tvar dt2 = Math.pow( p2.distanceToSquared( p3 ), pow );\n\n\t\t\t\t// safety check for repeated points\n\t\t\t\tif ( dt1 < 1e-4 ) dt1 = 1.0;\n\t\t\t\tif ( dt0 < 1e-4 ) dt0 = dt1;\n\t\t\t\tif ( dt2 < 1e-4 ) dt2 = dt1;\n\n\t\t\t\tpx.initNonuniformCatmullRom( p0.x, p1.x, p2.x, p3.x, dt0, dt1, dt2 );\n\t\t\t\tpy.initNonuniformCatmullRom( p0.y, p1.y, p2.y, p3.y, dt0, dt1, dt2 );\n\t\t\t\tpz.initNonuniformCatmullRom( p0.z, p1.z, p2.z, p3.z, dt0, dt1, dt2 );\n\n\t\t\t} else if ( this.type === 'catmullrom' ) {\n\n\t\t\t\tvar tension = this.tension !== undefined ? this.tension : 0.5;\n\t\t\t\tpx.initCatmullRom( p0.x, p1.x, p2.x, p3.x, tension );\n\t\t\t\tpy.initCatmullRom( p0.y, p1.y, p2.y, p3.y, tension );\n\t\t\t\tpz.initCatmullRom( p0.z, p1.z, p2.z, p3.z, tension );\n\n\t\t\t}\n\n\t\t\tvar v = new Vector3(\n\t\t\t\tpx.calc( weight ),\n\t\t\t\tpy.calc( weight ),\n\t\t\t\tpz.calc( weight )\n\t\t\t);\n\n\t\t\treturn v;\n\n\t\t}\n\n\t);\n\n} )();\n\n\nexport { CatmullRomCurve3 };\n","import { CatmullRomCurve3 } from './CatmullRomCurve3';\n\n/**************************************************************\n *\tClosed Spline 3D curve\n **************************************************************/\n\n\nfunction ClosedSplineCurve3( points ) {\n\n\tconsole.warn( 'THREE.ClosedSplineCurve3 has been deprecated. Please use THREE.CatmullRomCurve3.' );\n\n\tCatmullRomCurve3.call( this, points );\n\tthis.type = 'catmullrom';\n\tthis.closed = true;\n\n}\n\nClosedSplineCurve3.prototype = Object.create( CatmullRomCurve3.prototype );\n\n\nexport { ClosedSplineCurve3 };\n","import { Vector3 } from '../../math/Vector3';\nimport { CurveUtils } from '../CurveUtils';\nimport { Curve } from '../core/Curve';\n\n/**************************************************************\n *\tSpline 3D curve\n **************************************************************/\n\n\nvar SplineCurve3 = Curve.create(\n\n\tfunction ( points /* array of Vector3 */ ) {\n\n\t\tconsole.warn( 'THREE.SplineCurve3 will be deprecated. Please use THREE.CatmullRomCurve3' );\n\t\tthis.points = ( points === undefined ) ? [] : points;\n\n\t},\n\n\tfunction ( t ) {\n\n\t\tvar points = this.points;\n\t\tvar point = ( points.length - 1 ) * t;\n\n\t\tvar intPoint = Math.floor( point );\n\t\tvar weight = point - intPoint;\n\n\t\tvar point0 = points[ intPoint == 0 ? intPoint : intPoint - 1 ];\n\t\tvar point1 = points[ intPoint ];\n\t\tvar point2 = points[ intPoint > points.length - 2 ? points.length - 1 : intPoint + 1 ];\n\t\tvar point3 = points[ intPoint > points.length - 3 ? points.length - 1 : intPoint + 2 ];\n\n\t\tvar interpolate = CurveUtils.interpolate;\n\n\t\treturn new Vector3(\n\t\t\tinterpolate( point0.x, point1.x, point2.x, point3.x, weight ),\n\t\t\tinterpolate( point0.y, point1.y, point2.y, point3.y, weight ),\n\t\t\tinterpolate( point0.z, point1.z, point2.z, point3.z, weight )\n\t\t);\n\n\t}\n\n);\n\n\nexport { SplineCurve3 };\n","import { Vector3 } from '../../math/Vector3';\nimport { ShapeUtils } from '../ShapeUtils';\nimport { Curve } from '../core/Curve';\n\n/**************************************************************\n *\tCubic Bezier 3D curve\n **************************************************************/\n\nvar CubicBezierCurve3 = Curve.create(\n\n\tfunction ( v0, v1, v2, v3 ) {\n\n\t\tthis.v0 = v0;\n\t\tthis.v1 = v1;\n\t\tthis.v2 = v2;\n\t\tthis.v3 = v3;\n\n\t},\n\n\tfunction ( t ) {\n\n\t\tvar b3 = ShapeUtils.b3;\n\n\t\treturn new Vector3(\n\t\t\tb3( t, this.v0.x, this.v1.x, this.v2.x, this.v3.x ),\n\t\t\tb3( t, this.v0.y, this.v1.y, this.v2.y, this.v3.y ),\n\t\t\tb3( t, this.v0.z, this.v1.z, this.v2.z, this.v3.z )\n\t\t);\n\n\t}\n\n);\n\n\nexport { CubicBezierCurve3 };\n","import { Vector3 } from '../../math/Vector3';\nimport { ShapeUtils } from '../ShapeUtils';\nimport { Curve } from '../core/Curve';\n\n/**************************************************************\n *\tQuadratic Bezier 3D curve\n **************************************************************/\n\nvar QuadraticBezierCurve3 = Curve.create(\n\n\tfunction ( v0, v1, v2 ) {\n\n\t\tthis.v0 = v0;\n\t\tthis.v1 = v1;\n\t\tthis.v2 = v2;\n\n\t},\n\n\tfunction ( t ) {\n\n\t\tvar b2 = ShapeUtils.b2;\n\n\t\treturn new Vector3(\n\t\t\tb2( t, this.v0.x, this.v1.x, this.v2.x ),\n\t\t\tb2( t, this.v0.y, this.v1.y, this.v2.y ),\n\t\t\tb2( t, this.v0.z, this.v1.z, this.v2.z )\n\t\t);\n\n\t}\n\n);\n\n\nexport { QuadraticBezierCurve3 };\n","import { Vector3 } from '../../math/Vector3';\nimport { Curve } from '../core/Curve';\n\n/**************************************************************\n *\tLine3D\n **************************************************************/\n\nvar LineCurve3 = Curve.create(\n\n\tfunction ( v1, v2 ) {\n\n\t\tthis.v1 = v1;\n\t\tthis.v2 = v2;\n\n\t},\n\n\tfunction ( t ) {\n\n\t\tif ( t === 1 ) {\n\n\t\t\treturn this.v2.clone();\n\n\t\t}\n\n\t\tvar vector = new Vector3();\n\n\t\tvector.subVectors( this.v2, this.v1 ); // diff\n\t\tvector.multiplyScalar( t );\n\t\tvector.add( this.v1 );\n\n\t\treturn vector;\n\n\t}\n\n);\n\n\nexport { LineCurve3 };\n","import { EllipseCurve } from './EllipseCurve';\n\n/**************************************************************\n *\tArc curve\n **************************************************************/\n\nfunction ArcCurve( aX, aY, aRadius, aStartAngle, aEndAngle, aClockwise ) {\n\n\tEllipseCurve.call( this, aX, aY, aRadius, aRadius, aStartAngle, aEndAngle, aClockwise );\n\n}\n\nArcCurve.prototype = Object.create( EllipseCurve.prototype );\nArcCurve.prototype.constructor = ArcCurve;\n\n\nexport { ArcCurve };\n","import { Matrix4 } from '../math/Matrix4';\nimport { Mesh } from '../objects/Mesh';\nimport { Group } from '../objects/Group';\n\n/**\n * @author alteredq / http://alteredqualia.com/\n */\n\nvar SceneUtils = {\n\n\tcreateMultiMaterialObject: function ( geometry, materials ) {\n\n\t\tvar group = new Group();\n\n\t\tfor ( var i = 0, l = materials.length; i < l; i ++ ) {\n\n\t\t\tgroup.add( new Mesh( geometry, materials[ i ] ) );\n\n\t\t}\n\n\t\treturn group;\n\n\t},\n\n\tdetach: function ( child, parent, scene ) {\n\n\t\tchild.applyMatrix( parent.matrixWorld );\n\t\tparent.remove( child );\n\t\tscene.add( child );\n\n\t},\n\n\tattach: function ( child, scene, parent ) {\n\n\t\tvar matrixWorldInverse = new Matrix4();\n\t\tmatrixWorldInverse.getInverse( parent.matrixWorld );\n\t\tchild.applyMatrix( matrixWorldInverse );\n\n\t\tscene.remove( child );\n\t\tparent.add( child );\n\n\t}\n\n};\n\n\nexport { SceneUtils };\n","/**\n * @author mrdoob / http://mrdoob.com/\n */\n\nimport { Audio } from './audio/Audio.js';\nimport { AudioAnalyser } from './audio/AudioAnalyser.js';\nimport { PerspectiveCamera } from './cameras/PerspectiveCamera.js';\nimport { CullFaceFront, CullFaceBack } from './constants.js';\nimport { BufferAttribute } from './core/BufferAttribute.js';\nimport { BufferGeometry } from './core/BufferGeometry.js';\nimport { EventDispatcher } from './core/EventDispatcher.js';\nimport { Face3 } from './core/Face3.js';\nimport { Object3D } from './core/Object3D.js';\nimport { Uniform } from './core/Uniform';\nimport { BoxGeometry } from './geometries/BoxGeometry.js';\nimport { EdgesGeometry } from './geometries/EdgesGeometry.js';\nimport { ExtrudeGeometry } from './geometries/ExtrudeGeometry.js';\nimport { ShapeGeometry } from './geometries/ShapeGeometry.js';\nimport { WireframeGeometry } from './geometries/WireframeGeometry.js';\nimport { Light } from './lights/Light.js';\nimport { FileLoader } from './loaders/FileLoader.js';\nimport { AudioLoader } from './loaders/AudioLoader.js';\nimport { CubeTextureLoader } from './loaders/CubeTextureLoader.js';\nimport { TextureLoader } from './loaders/TextureLoader.js';\nimport { Material } from './materials/Material.js';\nimport { LineBasicMaterial } from './materials/LineBasicMaterial.js';\nimport { MeshPhongMaterial } from './materials/MeshPhongMaterial.js';\nimport { MultiMaterial } from './materials/MultiMaterial.js';\nimport { PointsMaterial } from './materials/PointsMaterial.js';\nimport { ShaderMaterial } from './materials/ShaderMaterial.js';\nimport { Box2 } from './math/Box2.js';\nimport { Box3 } from './math/Box3.js';\nimport { Color } from './math/Color.js';\nimport { Line3 } from './math/Line3.js';\nimport { Matrix3 } from './math/Matrix3.js';\nimport { Matrix4 } from './math/Matrix4.js';\nimport { Plane } from './math/Plane.js';\nimport { Quaternion } from './math/Quaternion.js';\nimport { Ray } from './math/Ray.js';\nimport { Vector3 } from './math/Vector3.js';\nimport { LineSegments } from './objects/LineSegments.js';\nimport { LOD } from './objects/LOD.js';\nimport { Points } from './objects/Points.js';\nimport { Sprite } from './objects/Sprite.js';\nimport { WebGLRenderer } from './renderers/WebGLRenderer.js';\nimport { WebGLRenderTarget } from './renderers/WebGLRenderTarget.js';\nimport { WebGLShadowMap } from './renderers/webgl/WebGLShadowMap.js';\nimport { Shape } from './extras/core/Shape.js';\n\nexport { BoxGeometry as CubeGeometry };\n\nexport function Face4 ( a, b, c, d, normal, color, materialIndex ) {\n\tconsole.warn( 'THREE.Face4 has been removed. A THREE.Face3 will be created instead.' );\n\treturn new Face3( a, b, c, normal, color, materialIndex );\n}\n\nexport var LineStrip = 0;\n\nexport var LinePieces = 1;\n\nexport { MultiMaterial as MeshFaceMaterial };\n\nexport function PointCloud ( geometry, material ) {\n\tconsole.warn( 'THREE.PointCloud has been renamed to THREE.Points.' );\n\treturn new Points( geometry, material );\n}\n\nexport { Sprite as Particle };\n\nexport function ParticleSystem ( geometry, material ) {\n\tconsole.warn( 'THREE.ParticleSystem has been renamed to THREE.Points.' );\n\treturn new Points( geometry, material );\n}\n\nexport function PointCloudMaterial ( parameters ) {\n\tconsole.warn( 'THREE.PointCloudMaterial has been renamed to THREE.PointsMaterial.' );\n\treturn new PointsMaterial( parameters );\n}\n\nexport function ParticleBasicMaterial ( parameters ) {\n\tconsole.warn( 'THREE.ParticleBasicMaterial has been renamed to THREE.PointsMaterial.' );\n\treturn new PointsMaterial( parameters );\n}\n\nexport function ParticleSystemMaterial ( parameters ) {\n\tconsole.warn( 'THREE.ParticleSystemMaterial has been renamed to THREE.PointsMaterial.' );\n\treturn new PointsMaterial( parameters );\n}\n\nexport function Vertex ( x, y, z ) {\n\tconsole.warn( 'THREE.Vertex has been removed. Use THREE.Vector3 instead.' );\n\treturn new Vector3( x, y, z );\n}\n\n//\n\nexport function EdgesHelper( object, hex ) {\n\tconsole.warn( 'THREE.EdgesHelper has been removed. Use THREE.EdgesGeometry instead.' );\n\treturn new LineSegments( new EdgesGeometry( object.geometry ), new LineBasicMaterial( { color: hex !== undefined ? hex : 0xffffff } ) );\n}\n\nexport function WireframeHelper( object, hex ) {\n\tconsole.warn( 'THREE.WireframeHelper has been removed. Use THREE.WireframeGeometry instead.' );\n\treturn new LineSegments( new WireframeGeometry( object.geometry ), new LineBasicMaterial( { color: hex !== undefined ? hex : 0xffffff } ) );\n}\n\n//\n\nexport function XHRLoader( manager ) {\n\tconsole.warn( 'THREE.XHRLoader has been renamed to THREE.FileLoader.' );\n\treturn new FileLoader( manager );\n}\n\n//\n\nObject.assign( Box2.prototype, {\n\tcenter: function ( optionalTarget ) {\n\t\tconsole.warn( 'THREE.Box2: .center() has been renamed to .getCenter().' );\n\t\treturn this.getCenter( optionalTarget );\n\t},\n\tempty: function () {\n\t\tconsole.warn( 'THREE.Box2: .empty() has been renamed to .isEmpty().' );\n\t\treturn this.isEmpty();\n\t},\n\tisIntersectionBox: function ( box ) {\n\t\tconsole.warn( 'THREE.Box2: .isIntersectionBox() has been renamed to .intersectsBox().' );\n\t\treturn this.intersectsBox( box );\n\t},\n\tsize: function ( optionalTarget ) {\n\t\tconsole.warn( 'THREE.Box2: .size() has been renamed to .getSize().' );\n\t\treturn this.getSize( optionalTarget );\n\t}\n} );\n\nObject.assign( Box3.prototype, {\n\tcenter: function ( optionalTarget ) {\n\t\tconsole.warn( 'THREE.Box3: .center() has been renamed to .getCenter().' );\n\t\treturn this.getCenter( optionalTarget );\n\t},\n\tempty: function () {\n\t\tconsole.warn( 'THREE.Box3: .empty() has been renamed to .isEmpty().' );\n\t\treturn this.isEmpty();\n\t},\n\tisIntersectionBox: function ( box ) {\n\t\tconsole.warn( 'THREE.Box3: .isIntersectionBox() has been renamed to .intersectsBox().' );\n\t\treturn this.intersectsBox( box );\n\t},\n\tisIntersectionSphere: function ( sphere ) {\n\t\tconsole.warn( 'THREE.Box3: .isIntersectionSphere() has been renamed to .intersectsSphere().' );\n\t\treturn this.intersectsSphere( sphere );\n\t},\n\tsize: function ( optionalTarget ) {\n\t\tconsole.warn( 'THREE.Box3: .size() has been renamed to .getSize().' );\n\t\treturn this.getSize( optionalTarget );\n\t}\n} );\n\nObject.assign( Line3.prototype, {\n\tcenter: function ( optionalTarget ) {\n\t\tconsole.warn( 'THREE.Line3: .center() has been renamed to .getCenter().' );\n\t\treturn this.getCenter( optionalTarget );\n\t}\n} );\n\nObject.assign( Matrix3.prototype, {\n\tmultiplyVector3: function ( vector ) {\n\t\tconsole.warn( 'THREE.Matrix3: .multiplyVector3() has been removed. Use vector.applyMatrix3( matrix ) instead.' );\n\t\treturn vector.applyMatrix3( this );\n\t},\n\tmultiplyVector3Array: function ( a ) {\n\t\tconsole.warn( 'THREE.Matrix3: .multiplyVector3Array() has been renamed. Use matrix.applyToVector3Array( array ) instead.' );\n\t\treturn this.applyToVector3Array( a );\n\t}\n} );\n\nObject.assign( Matrix4.prototype, {\n\textractPosition: function ( m ) {\n\t\tconsole.warn( 'THREE.Matrix4: .extractPosition() has been renamed to .copyPosition().' );\n\t\treturn this.copyPosition( m );\n\t},\n\tsetRotationFromQuaternion: function ( q ) {\n\t\tconsole.warn( 'THREE.Matrix4: .setRotationFromQuaternion() has been renamed to .makeRotationFromQuaternion().' );\n\t\treturn this.makeRotationFromQuaternion( q );\n\t},\n\tmultiplyVector3: function ( vector ) {\n\t\tconsole.warn( 'THREE.Matrix4: .multiplyVector3() has been removed. Use vector.applyMatrix4( matrix ) or vector.applyProjection( matrix ) instead.' );\n\t\treturn vector.applyProjection( this );\n\t},\n\tmultiplyVector4: function ( vector ) {\n\t\tconsole.warn( 'THREE.Matrix4: .multiplyVector4() has been removed. Use vector.applyMatrix4( matrix ) instead.' );\n\t\treturn vector.applyMatrix4( this );\n\t},\n\tmultiplyVector3Array: function ( a ) {\n\t\tconsole.warn( 'THREE.Matrix4: .multiplyVector3Array() has been renamed. Use matrix.applyToVector3Array( array ) instead.' );\n\t\treturn this.applyToVector3Array( a );\n\t},\n\trotateAxis: function ( v ) {\n\t\tconsole.warn( 'THREE.Matrix4: .rotateAxis() has been removed. Use Vector3.transformDirection( matrix ) instead.' );\n\t\tv.transformDirection( this );\n\t},\n\tcrossVector: function ( vector ) {\n\t\tconsole.warn( 'THREE.Matrix4: .crossVector() has been removed. Use vector.applyMatrix4( matrix ) instead.' );\n\t\treturn vector.applyMatrix4( this );\n\t},\n\ttranslate: function ( v ) {\n\t\tconsole.error( 'THREE.Matrix4: .translate() has been removed.' );\n\t},\n\trotateX: function ( angle ) {\n\t\tconsole.error( 'THREE.Matrix4: .rotateX() has been removed.' );\n\t},\n\trotateY: function ( angle ) {\n\t\tconsole.error( 'THREE.Matrix4: .rotateY() has been removed.' );\n\t},\n\trotateZ: function ( angle ) {\n\t\tconsole.error( 'THREE.Matrix4: .rotateZ() has been removed.' );\n\t},\n\trotateByAxis: function ( axis, angle ) {\n\t\tconsole.error( 'THREE.Matrix4: .rotateByAxis() has been removed.' );\n\t}\n} );\n\nObject.assign( Plane.prototype, {\n\tisIntersectionLine: function ( line ) {\n\t\tconsole.warn( 'THREE.Plane: .isIntersectionLine() has been renamed to .intersectsLine().' );\n\t\treturn this.intersectsLine( line );\n\t}\n} );\n\nObject.assign( Quaternion.prototype, {\n\tmultiplyVector3: function ( vector ) {\n\t\tconsole.warn( 'THREE.Quaternion: .multiplyVector3() has been removed. Use is now vector.applyQuaternion( quaternion ) instead.' );\n\t\treturn vector.applyQuaternion( this );\n\t}\n} );\n\nObject.assign( Ray.prototype, {\n\tisIntersectionBox: function ( box ) {\n\t\tconsole.warn( 'THREE.Ray: .isIntersectionBox() has been renamed to .intersectsBox().' );\n\t\treturn this.intersectsBox( box );\n\t},\n\tisIntersectionPlane: function ( plane ) {\n\t\tconsole.warn( 'THREE.Ray: .isIntersectionPlane() has been renamed to .intersectsPlane().' );\n\t\treturn this.intersectsPlane( plane );\n\t},\n\tisIntersectionSphere: function ( sphere ) {\n\t\tconsole.warn( 'THREE.Ray: .isIntersectionSphere() has been renamed to .intersectsSphere().' );\n\t\treturn this.intersectsSphere( sphere );\n\t}\n} );\n\nObject.assign( Shape.prototype, {\n\textrude: function ( options ) {\n\t\tconsole.warn( 'THREE.Shape: .extrude() has been removed. Use ExtrudeGeometry() instead.' );\n\t\treturn new ExtrudeGeometry( this, options );\n\t},\n\tmakeGeometry: function ( options ) {\n\t\tconsole.warn( 'THREE.Shape: .makeGeometry() has been removed. Use ShapeGeometry() instead.' );\n\t\treturn new ShapeGeometry( this, options );\n\t}\n} );\n\nObject.assign( Vector3.prototype, {\n\tsetEulerFromRotationMatrix: function () {\n\t\tconsole.error( 'THREE.Vector3: .setEulerFromRotationMatrix() has been removed. Use Euler.setFromRotationMatrix() instead.' );\n\t},\n\tsetEulerFromQuaternion: function () {\n\t\tconsole.error( 'THREE.Vector3: .setEulerFromQuaternion() has been removed. Use Euler.setFromQuaternion() instead.' );\n\t},\n\tgetPositionFromMatrix: function ( m ) {\n\t\tconsole.warn( 'THREE.Vector3: .getPositionFromMatrix() has been renamed to .setFromMatrixPosition().' );\n\t\treturn this.setFromMatrixPosition( m );\n\t},\n\tgetScaleFromMatrix: function ( m ) {\n\t\tconsole.warn( 'THREE.Vector3: .getScaleFromMatrix() has been renamed to .setFromMatrixScale().' );\n\t\treturn this.setFromMatrixScale( m );\n\t},\n\tgetColumnFromMatrix: function ( index, matrix ) {\n\t\tconsole.warn( 'THREE.Vector3: .getColumnFromMatrix() has been renamed to .setFromMatrixColumn().' );\n\t\treturn this.setFromMatrixColumn( matrix, index );\n\t}\n} );\n\n//\n\nObject.assign( Object3D.prototype, {\n\tgetChildByName: function ( name ) {\n\t\tconsole.warn( 'THREE.Object3D: .getChildByName() has been renamed to .getObjectByName().' );\n\t\treturn this.getObjectByName( name );\n\t},\n\trenderDepth: function ( value ) {\n\t\tconsole.warn( 'THREE.Object3D: .renderDepth has been removed. Use .renderOrder, instead.' );\n\t},\n\ttranslate: function ( distance, axis ) {\n\t\tconsole.warn( 'THREE.Object3D: .translate() has been removed. Use .translateOnAxis( axis, distance ) instead.' );\n\t\treturn this.translateOnAxis( axis, distance );\n\t}\n} );\n\nObject.defineProperties( Object3D.prototype, {\n\teulerOrder: {\n\t\tget: function () {\n\t\t\tconsole.warn( 'THREE.Object3D: .eulerOrder is now .rotation.order.' );\n\t\t\treturn this.rotation.order;\n\t\t},\n\t\tset: function ( value ) {\n\t\t\tconsole.warn( 'THREE.Object3D: .eulerOrder is now .rotation.order.' );\n\t\t\tthis.rotation.order = value;\n\t\t}\n\t},\n\tuseQuaternion: {\n\t\tget: function () {\n\t\t\tconsole.warn( 'THREE.Object3D: .useQuaternion has been removed. The library now uses quaternions by default.' );\n\t\t},\n\t\tset: function ( value ) {\n\t\t\tconsole.warn( 'THREE.Object3D: .useQuaternion has been removed. The library now uses quaternions by default.' );\n\t\t}\n\t}\n} );\n\nObject.defineProperties( LOD.prototype, {\n\tobjects: {\n\t\tget: function () {\n\t\t\tconsole.warn( 'THREE.LOD: .objects has been renamed to .levels.' );\n\t\t\treturn this.levels;\n\t\t}\n\t}\n} );\n\n//\n\nPerspectiveCamera.prototype.setLens = function ( focalLength, filmGauge ) {\n\n\tconsole.warn( \"THREE.PerspectiveCamera.setLens is deprecated. \" +\n\t\t\t\"Use .setFocalLength and .filmGauge for a photographic setup.\" );\n\n\tif ( filmGauge !== undefined ) this.filmGauge = filmGauge;\n\tthis.setFocalLength( focalLength );\n\n};\n\n//\n\nObject.defineProperties( Light.prototype, {\n\tonlyShadow: {\n\t\tset: function ( value ) {\n\t\t\tconsole.warn( 'THREE.Light: .onlyShadow has been removed.' );\n\t\t}\n\t},\n\tshadowCameraFov: {\n\t\tset: function ( value ) {\n\t\t\tconsole.warn( 'THREE.Light: .shadowCameraFov is now .shadow.camera.fov.' );\n\t\t\tthis.shadow.camera.fov = value;\n\t\t}\n\t},\n\tshadowCameraLeft: {\n\t\tset: function ( value ) {\n\t\t\tconsole.warn( 'THREE.Light: .shadowCameraLeft is now .shadow.camera.left.' );\n\t\t\tthis.shadow.camera.left = value;\n\t\t}\n\t},\n\tshadowCameraRight: {\n\t\tset: function ( value ) {\n\t\t\tconsole.warn( 'THREE.Light: .shadowCameraRight is now .shadow.camera.right.' );\n\t\t\tthis.shadow.camera.right = value;\n\t\t}\n\t},\n\tshadowCameraTop: {\n\t\tset: function ( value ) {\n\t\t\tconsole.warn( 'THREE.Light: .shadowCameraTop is now .shadow.camera.top.' );\n\t\t\tthis.shadow.camera.top = value;\n\t\t}\n\t},\n\tshadowCameraBottom: {\n\t\tset: function ( value ) {\n\t\t\tconsole.warn( 'THREE.Light: .shadowCameraBottom is now .shadow.camera.bottom.' );\n\t\t\tthis.shadow.camera.bottom = value;\n\t\t}\n\t},\n\tshadowCameraNear: {\n\t\tset: function ( value ) {\n\t\t\tconsole.warn( 'THREE.Light: .shadowCameraNear is now .shadow.camera.near.' );\n\t\t\tthis.shadow.camera.near = value;\n\t\t}\n\t},\n\tshadowCameraFar: {\n\t\tset: function ( value ) {\n\t\t\tconsole.warn( 'THREE.Light: .shadowCameraFar is now .shadow.camera.far.' );\n\t\t\tthis.shadow.camera.far = value;\n\t\t}\n\t},\n\tshadowCameraVisible: {\n\t\tset: function ( value ) {\n\t\t\tconsole.warn( 'THREE.Light: .shadowCameraVisible has been removed. Use new THREE.CameraHelper( light.shadow.camera ) instead.' );\n\t\t}\n\t},\n\tshadowBias: {\n\t\tset: function ( value ) {\n\t\t\tconsole.warn( 'THREE.Light: .shadowBias is now .shadow.bias.' );\n\t\t\tthis.shadow.bias = value;\n\t\t}\n\t},\n\tshadowDarkness: {\n\t\tset: function ( value ) {\n\t\t\tconsole.warn( 'THREE.Light: .shadowDarkness has been removed.' );\n\t\t}\n\t},\n\tshadowMapWidth: {\n\t\tset: function ( value ) {\n\t\t\tconsole.warn( 'THREE.Light: .shadowMapWidth is now .shadow.mapSize.width.' );\n\t\t\tthis.shadow.mapSize.width = value;\n\t\t}\n\t},\n\tshadowMapHeight: {\n\t\tset: function ( value ) {\n\t\t\tconsole.warn( 'THREE.Light: .shadowMapHeight is now .shadow.mapSize.height.' );\n\t\t\tthis.shadow.mapSize.height = value;\n\t\t}\n\t}\n} );\n\n//\n\nObject.defineProperties( BufferAttribute.prototype, {\n\tlength: {\n\t\tget: function () {\n\t\t\tconsole.warn( 'THREE.BufferAttribute: .length has been deprecated. Please use .count.' );\n\t\t\treturn this.array.length;\n\t\t}\n\t}\n} );\n\nObject.assign( BufferGeometry.prototype, {\n\taddIndex: function ( index ) {\n\t\tconsole.warn( 'THREE.BufferGeometry: .addIndex() has been renamed to .setIndex().' );\n\t\tthis.setIndex( index );\n\t},\n\taddDrawCall: function ( start, count, indexOffset ) {\n\t\tif ( indexOffset !== undefined ) {\n\t\t\tconsole.warn( 'THREE.BufferGeometry: .addDrawCall() no longer supports indexOffset.' );\n\t\t}\n\t\tconsole.warn( 'THREE.BufferGeometry: .addDrawCall() is now .addGroup().' );\n\t\tthis.addGroup( start, count );\n\t},\n\tclearDrawCalls: function () {\n\t\tconsole.warn( 'THREE.BufferGeometry: .clearDrawCalls() is now .clearGroups().' );\n\t\tthis.clearGroups();\n\t},\n\tcomputeTangents: function () {\n\t\tconsole.warn( 'THREE.BufferGeometry: .computeTangents() has been removed.' );\n\t},\n\tcomputeOffsets: function () {\n\t\tconsole.warn( 'THREE.BufferGeometry: .computeOffsets() has been removed.' );\n\t}\n} );\n\nObject.defineProperties( BufferGeometry.prototype, {\n\tdrawcalls: {\n\t\tget: function () {\n\t\t\tconsole.error( 'THREE.BufferGeometry: .drawcalls has been renamed to .groups.' );\n\t\t\treturn this.groups;\n\t\t}\n\t},\n\toffsets: {\n\t\tget: function () {\n\t\t\tconsole.warn( 'THREE.BufferGeometry: .offsets has been renamed to .groups.' );\n\t\t\treturn this.groups;\n\t\t}\n\t}\n} );\n\n//\n\nObject.defineProperties( Uniform.prototype, {\n\tdynamic: {\n\t\tset: function ( value ) {\n\t\t\tconsole.warn( 'THREE.Uniform: .dynamic has been removed. Use object.onBeforeRender() instead.' );\n\t\t}\n\t},\n\tonUpdate: {\n\t\tvalue: function () {\n\t\t\tconsole.warn( 'THREE.Uniform: .onUpdate() has been removed. Use object.onBeforeRender() instead.' );\n\t\t\treturn this;\n\t\t}\n\t}\n} );\n\n//\n\nObject.defineProperties( Material.prototype, {\n\twrapAround: {\n\t\tget: function () {\n\t\t\tconsole.warn( 'THREE.' + this.type + ': .wrapAround has been removed.' );\n\t\t},\n\t\tset: function ( value ) {\n\t\t\tconsole.warn( 'THREE.' + this.type + ': .wrapAround has been removed.' );\n\t\t}\n\t},\n\twrapRGB: {\n\t\tget: function () {\n\t\t\tconsole.warn( 'THREE.' + this.type + ': .wrapRGB has been removed.' );\n\t\t\treturn new Color();\n\t\t}\n\t}\n} );\n\nObject.defineProperties( MeshPhongMaterial.prototype, {\n\tmetal: {\n\t\tget: function () {\n\t\t\tconsole.warn( 'THREE.MeshPhongMaterial: .metal has been removed. Use THREE.MeshStandardMaterial instead.' );\n\t\t\treturn false;\n\t\t},\n\t\tset: function ( value ) {\n\t\t\tconsole.warn( 'THREE.MeshPhongMaterial: .metal has been removed. Use THREE.MeshStandardMaterial instead' );\n\t\t}\n\t}\n} );\n\nObject.defineProperties( ShaderMaterial.prototype, {\n\tderivatives: {\n\t\tget: function () {\n\t\t\tconsole.warn( 'THREE.ShaderMaterial: .derivatives has been moved to .extensions.derivatives.' );\n\t\t\treturn this.extensions.derivatives;\n\t\t},\n\t\tset: function ( value ) {\n\t\t\tconsole.warn( 'THREE. ShaderMaterial: .derivatives has been moved to .extensions.derivatives.' );\n\t\t\tthis.extensions.derivatives = value;\n\t\t}\n\t}\n} );\n\n//\n\nEventDispatcher.prototype = Object.assign( Object.create( {\n\n\t// Note: Extra base ensures these properties are not 'assign'ed.\n\n\tconstructor: EventDispatcher,\n\n\tapply: function ( target ) {\n\n\t\tconsole.warn( \"THREE.EventDispatcher: .apply is deprecated, \" +\n\t\t\t\t\"just inherit or Object.assign the prototype to mix-in.\" );\n\n\t\tObject.assign( target, this );\n\n\t}\n\n} ), EventDispatcher.prototype );\n\n//\n\nObject.assign( WebGLRenderer.prototype, {\n\tsupportsFloatTextures: function () {\n\t\tconsole.warn( 'THREE.WebGLRenderer: .supportsFloatTextures() is now .extensions.get( \\'OES_texture_float\\' ).' );\n\t\treturn this.extensions.get( 'OES_texture_float' );\n\t},\n\tsupportsHalfFloatTextures: function () {\n\t\tconsole.warn( 'THREE.WebGLRenderer: .supportsHalfFloatTextures() is now .extensions.get( \\'OES_texture_half_float\\' ).' );\n\t\treturn this.extensions.get( 'OES_texture_half_float' );\n\t},\n\tsupportsStandardDerivatives: function () {\n\t\tconsole.warn( 'THREE.WebGLRenderer: .supportsStandardDerivatives() is now .extensions.get( \\'OES_standard_derivatives\\' ).' );\n\t\treturn this.extensions.get( 'OES_standard_derivatives' );\n\t},\n\tsupportsCompressedTextureS3TC: function () {\n\t\tconsole.warn( 'THREE.WebGLRenderer: .supportsCompressedTextureS3TC() is now .extensions.get( \\'WEBGL_compressed_texture_s3tc\\' ).' );\n\t\treturn this.extensions.get( 'WEBGL_compressed_texture_s3tc' );\n\t},\n\tsupportsCompressedTexturePVRTC: function () {\n\t\tconsole.warn( 'THREE.WebGLRenderer: .supportsCompressedTexturePVRTC() is now .extensions.get( \\'WEBGL_compressed_texture_pvrtc\\' ).' );\n\t\treturn this.extensions.get( 'WEBGL_compressed_texture_pvrtc' );\n\t},\n\tsupportsBlendMinMax: function () {\n\t\tconsole.warn( 'THREE.WebGLRenderer: .supportsBlendMinMax() is now .extensions.get( \\'EXT_blend_minmax\\' ).' );\n\t\treturn this.extensions.get( 'EXT_blend_minmax' );\n\t},\n\tsupportsVertexTextures: function () {\n\t\treturn this.capabilities.vertexTextures;\n\t},\n\tsupportsInstancedArrays: function () {\n\t\tconsole.warn( 'THREE.WebGLRenderer: .supportsInstancedArrays() is now .extensions.get( \\'ANGLE_instanced_arrays\\' ).' );\n\t\treturn this.extensions.get( 'ANGLE_instanced_arrays' );\n\t},\n\tenableScissorTest: function ( boolean ) {\n\t\tconsole.warn( 'THREE.WebGLRenderer: .enableScissorTest() is now .setScissorTest().' );\n\t\tthis.setScissorTest( boolean );\n\t},\n\tinitMaterial: function () {\n\t\tconsole.warn( 'THREE.WebGLRenderer: .initMaterial() has been removed.' );\n\t},\n\taddPrePlugin: function () {\n\t\tconsole.warn( 'THREE.WebGLRenderer: .addPrePlugin() has been removed.' );\n\t},\n\taddPostPlugin: function () {\n\t\tconsole.warn( 'THREE.WebGLRenderer: .addPostPlugin() has been removed.' );\n\t},\n\tupdateShadowMap: function () {\n\t\tconsole.warn( 'THREE.WebGLRenderer: .updateShadowMap() has been removed.' );\n\t}\n} );\n\nObject.defineProperties( WebGLRenderer.prototype, {\n\tshadowMapEnabled: {\n\t\tget: function () {\n\t\t\treturn this.shadowMap.enabled;\n\t\t},\n\t\tset: function ( value ) {\n\t\t\tconsole.warn( 'THREE.WebGLRenderer: .shadowMapEnabled is now .shadowMap.enabled.' );\n\t\t\tthis.shadowMap.enabled = value;\n\t\t}\n\t},\n\tshadowMapType: {\n\t\tget: function () {\n\t\t\treturn this.shadowMap.type;\n\t\t},\n\t\tset: function ( value ) {\n\t\t\tconsole.warn( 'THREE.WebGLRenderer: .shadowMapType is now .shadowMap.type.' );\n\t\t\tthis.shadowMap.type = value;\n\t\t}\n\t},\n\tshadowMapCullFace: {\n\t\tget: function () {\n\t\t\treturn this.shadowMap.cullFace;\n\t\t},\n\t\tset: function ( value ) {\n\t\t\tconsole.warn( 'THREE.WebGLRenderer: .shadowMapCullFace is now .shadowMap.cullFace.' );\n\t\t\tthis.shadowMap.cullFace = value;\n\t\t}\n\t}\n} );\n\nObject.defineProperties( WebGLShadowMap.prototype, {\n\tcullFace: {\n\t\tget: function () {\n\t\t\treturn this.renderReverseSided ? CullFaceFront : CullFaceBack;\n\t\t},\n\t\tset: function ( cullFace ) {\n\t\t\tvar value = ( cullFace !== CullFaceBack );\n\t\t\tconsole.warn( \"WebGLRenderer: .shadowMap.cullFace is deprecated. Set .shadowMap.renderReverseSided to \" + value + \".\" );\n\t\t\tthis.renderReverseSided = value;\n\t\t}\n\t}\n} );\n\n//\n\nObject.defineProperties( WebGLRenderTarget.prototype, {\n\twrapS: {\n\t\tget: function () {\n\t\t\tconsole.warn( 'THREE.WebGLRenderTarget: .wrapS is now .texture.wrapS.' );\n\t\t\treturn this.texture.wrapS;\n\t\t},\n\t\tset: function ( value ) {\n\t\t\tconsole.warn( 'THREE.WebGLRenderTarget: .wrapS is now .texture.wrapS.' );\n\t\t\tthis.texture.wrapS = value;\n\t\t}\n\t},\n\twrapT: {\n\t\tget: function () {\n\t\t\tconsole.warn( 'THREE.WebGLRenderTarget: .wrapT is now .texture.wrapT.' );\n\t\t\treturn this.texture.wrapT;\n\t\t},\n\t\tset: function ( value ) {\n\t\t\tconsole.warn( 'THREE.WebGLRenderTarget: .wrapT is now .texture.wrapT.' );\n\t\t\tthis.texture.wrapT = value;\n\t\t}\n\t},\n\tmagFilter: {\n\t\tget: function () {\n\t\t\tconsole.warn( 'THREE.WebGLRenderTarget: .magFilter is now .texture.magFilter.' );\n\t\t\treturn this.texture.magFilter;\n\t\t},\n\t\tset: function ( value ) {\n\t\t\tconsole.warn( 'THREE.WebGLRenderTarget: .magFilter is now .texture.magFilter.' );\n\t\t\tthis.texture.magFilter = value;\n\t\t}\n\t},\n\tminFilter: {\n\t\tget: function () {\n\t\t\tconsole.warn( 'THREE.WebGLRenderTarget: .minFilter is now .texture.minFilter.' );\n\t\t\treturn this.texture.minFilter;\n\t\t},\n\t\tset: function ( value ) {\n\t\t\tconsole.warn( 'THREE.WebGLRenderTarget: .minFilter is now .texture.minFilter.' );\n\t\t\tthis.texture.minFilter = value;\n\t\t}\n\t},\n\tanisotropy: {\n\t\tget: function () {\n\t\t\tconsole.warn( 'THREE.WebGLRenderTarget: .anisotropy is now .texture.anisotropy.' );\n\t\t\treturn this.texture.anisotropy;\n\t\t},\n\t\tset: function ( value ) {\n\t\t\tconsole.warn( 'THREE.WebGLRenderTarget: .anisotropy is now .texture.anisotropy.' );\n\t\t\tthis.texture.anisotropy = value;\n\t\t}\n\t},\n\toffset: {\n\t\tget: function () {\n\t\t\tconsole.warn( 'THREE.WebGLRenderTarget: .offset is now .texture.offset.' );\n\t\t\treturn this.texture.offset;\n\t\t},\n\t\tset: function ( value ) {\n\t\t\tconsole.warn( 'THREE.WebGLRenderTarget: .offset is now .texture.offset.' );\n\t\t\tthis.texture.offset = value;\n\t\t}\n\t},\n\trepeat: {\n\t\tget: function () {\n\t\t\tconsole.warn( 'THREE.WebGLRenderTarget: .repeat is now .texture.repeat.' );\n\t\t\treturn this.texture.repeat;\n\t\t},\n\t\tset: function ( value ) {\n\t\t\tconsole.warn( 'THREE.WebGLRenderTarget: .repeat is now .texture.repeat.' );\n\t\t\tthis.texture.repeat = value;\n\t\t}\n\t},\n\tformat: {\n\t\tget: function () {\n\t\t\tconsole.warn( 'THREE.WebGLRenderTarget: .format is now .texture.format.' );\n\t\t\treturn this.texture.format;\n\t\t},\n\t\tset: function ( value ) {\n\t\t\tconsole.warn( 'THREE.WebGLRenderTarget: .format is now .texture.format.' );\n\t\t\tthis.texture.format = value;\n\t\t}\n\t},\n\ttype: {\n\t\tget: function () {\n\t\t\tconsole.warn( 'THREE.WebGLRenderTarget: .type is now .texture.type.' );\n\t\t\treturn this.texture.type;\n\t\t},\n\t\tset: function ( value ) {\n\t\t\tconsole.warn( 'THREE.WebGLRenderTarget: .type is now .texture.type.' );\n\t\t\tthis.texture.type = value;\n\t\t}\n\t},\n\tgenerateMipmaps: {\n\t\tget: function () {\n\t\t\tconsole.warn( 'THREE.WebGLRenderTarget: .generateMipmaps is now .texture.generateMipmaps.' );\n\t\t\treturn this.texture.generateMipmaps;\n\t\t},\n\t\tset: function ( value ) {\n\t\t\tconsole.warn( 'THREE.WebGLRenderTarget: .generateMipmaps is now .texture.generateMipmaps.' );\n\t\t\tthis.texture.generateMipmaps = value;\n\t\t}\n\t}\n} );\n\n//\n\nObject.assign( Audio.prototype, {\n\tload: function ( file ) {\n\t\tconsole.warn( 'THREE.Audio: .load has been deprecated. Please use THREE.AudioLoader.' );\n\t\tvar scope = this;\n\t\tvar audioLoader = new AudioLoader();\n\t\taudioLoader.load( file, function ( buffer ) {\n\t\t\tscope.setBuffer( buffer );\n\t\t} );\n\t\treturn this;\n\t}\n} );\n\nObject.assign( AudioAnalyser.prototype, {\n\tgetData: function ( file ) {\n\t\tconsole.warn( 'THREE.AudioAnalyser: .getData() is now .getFrequencyData().' );\n\t\treturn this.getFrequencyData();\n\t}\n} );\n\n//\n\nexport var GeometryUtils = {\n\n\tmerge: function ( geometry1, geometry2, materialIndexOffset ) {\n\n\t\tconsole.warn( 'THREE.GeometryUtils: .merge() has been moved to Geometry. Use geometry.merge( geometry2, matrix, materialIndexOffset ) instead.' );\n\n\t\tvar matrix;\n\n\t\tif ( geometry2.isMesh ) {\n\n\t\t\tgeometry2.matrixAutoUpdate && geometry2.updateMatrix();\n\n\t\t\tmatrix = geometry2.matrix;\n\t\t\tgeometry2 = geometry2.geometry;\n\n\t\t}\n\n\t\tgeometry1.merge( geometry2, matrix, materialIndexOffset );\n\n\t},\n\n\tcenter: function ( geometry ) {\n\n\t\tconsole.warn( 'THREE.GeometryUtils: .center() has been moved to Geometry. Use geometry.center() instead.' );\n\t\treturn geometry.center();\n\n\t}\n\n};\n\nexport var ImageUtils = {\n\n\tcrossOrigin: undefined,\n\n\tloadTexture: function ( url, mapping, onLoad, onError ) {\n\n\t\tconsole.warn( 'THREE.ImageUtils.loadTexture has been deprecated. Use THREE.TextureLoader() instead.' );\n\n\t\tvar loader = new TextureLoader();\n\t\tloader.setCrossOrigin( this.crossOrigin );\n\n\t\tvar texture = loader.load( url, onLoad, undefined, onError );\n\n\t\tif ( mapping ) texture.mapping = mapping;\n\n\t\treturn texture;\n\n\t},\n\n\tloadTextureCube: function ( urls, mapping, onLoad, onError ) {\n\n\t\tconsole.warn( 'THREE.ImageUtils.loadTextureCube has been deprecated. Use THREE.CubeTextureLoader() instead.' );\n\n\t\tvar loader = new CubeTextureLoader();\n\t\tloader.setCrossOrigin( this.crossOrigin );\n\n\t\tvar texture = loader.load( urls, onLoad, undefined, onError );\n\n\t\tif ( mapping ) texture.mapping = mapping;\n\n\t\treturn texture;\n\n\t},\n\n\tloadCompressedTexture: function () {\n\n\t\tconsole.error( 'THREE.ImageUtils.loadCompressedTexture has been removed. Use THREE.DDSLoader instead.' );\n\n\t},\n\n\tloadCompressedTextureCube: function () {\n\n\t\tconsole.error( 'THREE.ImageUtils.loadCompressedTextureCube has been removed. Use THREE.DDSLoader instead.' );\n\n\t}\n\n};\n\n//\n\nexport function Projector () {\n\n\tconsole.error( 'THREE.Projector has been moved to /examples/js/renderers/Projector.js.' );\n\n\tthis.projectVector = function ( vector, camera ) {\n\n\t\tconsole.warn( 'THREE.Projector: .projectVector() is now vector.project().' );\n\t\tvector.project( camera );\n\n\t};\n\n\tthis.unprojectVector = function ( vector, camera ) {\n\n\t\tconsole.warn( 'THREE.Projector: .unprojectVector() is now vector.unproject().' );\n\t\tvector.unproject( camera );\n\n\t};\n\n\tthis.pickingRay = function ( vector, camera ) {\n\n\t\tconsole.error( 'THREE.Projector: .pickingRay() is now raycaster.setFromCamera().' );\n\n\t};\n\n}\n\n//\n\nexport function CanvasRenderer () {\n\n\tconsole.error( 'THREE.CanvasRenderer has been moved to /examples/js/renderers/CanvasRenderer.js' );\n\n\tthis.domElement = document.createElementNS( 'http://www.w3.org/1999/xhtml', 'canvas' );\n\tthis.clear = function () {};\n\tthis.render = function () {};\n\tthis.setClearColor = function () {};\n\tthis.setSize = function () {};\n\n}\n"],"names":["count"],"mappings":"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E,EAAE,GAAG,GAAG,EAAE,EAAE,EAAE,EAAE,EAAE,GAAG,GAAG,EAAE,EAAE,EAAE,EAAE,CAAC;AACnE,CAAA,EAAE,IAAI,GAAG,GAAG,EAAE,EAAE,CAAC,EAAE,EAAE,GAAG,GAAG,EAAE,EAAE,CAAC,EAAE,EAAE,GAAG,GAAG,EAAE,EAAE,EAAE,EAAE,EAAE,GAAG,GAAG,EAAE,EAAE,EAAE,EAAE,CAAC;;AAEnE,CAAA,EAAE,IAAI,GAAG,GAAG,EAAE,EAAE,CAAC,EAAE,EAAE,GAAG,GAAG,EAAE,EAAE,CAAC,EAAE,EAAE,GAAG,GAAG,EAAE,EAAE,CAAC,EAAE,EAAE,GAAG,GAAG,EAAE,EAAE,EAAE,EAAE,CAAC;AAClE,CAAA,EAAE,IAAI,GAAG,GAAG,EAAE,EAAE,CAAC,EAAE,EAAE,GAAG,GAAG,EAAE,EAAE,CAAC,EAAE,EAAE,GAAG,GAAG,EAAE,EAAE,CAAC,EAAE,EAAE,GAAG,GAAG,EAAE,EAAE,EAAE,EAAE,CAAC;AAClE,CAAA,EAAE,IAAI,GAAG,GAAG,EAAE,EAAE,CAAC,EAAE,EAAE,GAAG,GAAG,EAAE,EAAE,CAAC,EAAE,EAAE,GAAG,GAAG,EAAE,EAAE,EAAE,EAAE,EAAE,GAAG,GAAG,EAAE,EAAE,EAAE,EAAE,CAAC;AACnE,CAAA,EAAE,IAAI,GAAG,GAAG,EAAE,EAAE,CAAC,EAAE,EAAE,GAAG,GAAG,EAAE,EAAE,CAAC,EAAE,EAAE,GAAG,GAAG,EAAE,EAAE,EAAE,EAAE,EAAE,GAAG,GAAG,EAAE,EAAE,EAAE,EAAE,CAAC;;AAEnE,CAAA,EAAE,EAAE,EAAE,CAAC,EAAE,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,CAAC;AAC1D,CAAA,EAAE,EAAE,EAAE,CAAC,EAAE,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,CAAC;AAC1D,CAAA,EAAE,EAAE,EAAE,CAAC,EAAE,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,CAAC;AAC1D,CAAA,EAAE,EAAE,EAAE,EAAE,EAAE,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,CAAC;;AAE3D,CAAA,EAAE,EAAE,EAAE,CAAC,EAAE,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,CAAC;AAC1D,CAAA,EAAE,EAAE,EAAE,CAAC,EAAE,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,CAAC;AAC1D,CAAA,EAAE,EAAE,EAAE,CAAC,EAAE,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,CAAC;AAC1D,CAAA,EAAE,EAAE,EAAE,EAAE,EAAE,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,CAAC;;AAE3D,CAAA,EAAE,EAAE,EAAE,CAAC,EAAE,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,CAAC;AAC1D,CAAA,EAAE,EAAE,EAAE,CAAC,EAAE,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,CAAC;AAC1D,CAAA,EAAE,EAAE,EAAE,EAAE,EAAE,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,CAAC;AAC3D,CAAA,EAAE,EAAE,EAAE,EAAE,EAAE,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,CAAC;;AAE3D,CAAA,EAAE,EAAE,EAAE,CAAC,EAAE,GAAG,GAAG,GAAG,GAAG,GAAG,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GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,EAAE,GAAG,MAAM,CAAC;;AAEnI,CAAA,EAAE,EAAE,EAAE,CAAC,EAAE,GAAG,GAAG,GAAG,MAAM,CAAC;AACzB,CAAA,EAAE,EAAE,EAAE,CAAC,EAAE,GAAG,EAAE,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,EAAE,GAAG,MAAM,CAAC;AACnI,CAAA,EAAE,EAAE,EAAE,CAAC,EAAE,GAAG,EAAE,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,EAAE,GAAG,MAAM,CAAC;AACnI,CAAA,EAAE,EAAE,EAAE,CAAC,EAAE,GAAG,EAAE,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,EAAE,GAAG,MAAM,CAAC;;AAEnI,CAAA,EAAE,EAAE,EAAE,CAAC,EAAE,GAAG,GAAG,GAAG,MAAM,CAAC;AACzB,CAAA,EAAE,EAAE,EAAE,CAAC,EAAE,GAAG,EAAE,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,EAAE,GAAG,MAAM,CAAC;AACnI,CAAA,EAAE,EAAE,EAAE,EAAE,EAAE,GAAG,EAAE,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,EAAE,GAAG,MAAM,CAAC;AACpI,CAAA,EAAE,EAAE,EAAE,EAAE,EAAE,GAAG,EAAE,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,EAAE,GAAG,MAAM,CAAC;;AAEpI,CAAA,EAAE,EAAE,EAAE,EAAE,EAAE,GAAG,GAAG,GAAG,MAAM,CAAC;AAC1B,CAAA,EAAE,EAAE,EAAE,EAAE,EAAE,GAAG,EAAE,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,EAAE,GAAG,MAAM,CAAC;AACpI,CAAA,EAAE,EAAE,EAAE,EAAE,EAAE,GAAG,EAAE,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,EAAE,GAAG,MAAM,CAAC;AACpI,CAAA,EAAE,EAAE,EAAE,EAAE,EAAE,GAAG,EAAE,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,EAAE,GAAG,MAAM,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"} \ No newline at end of file +{"version":3,"file":null,"sources":["../src/polyfills.js","../src/core/EventDispatcher.js","../src/constants.js","../src/math/Math.js","../src/math/Vector2.js","../src/textures/Texture.js","../src/math/Vector4.js","../src/renderers/WebGLRenderTarget.js","../src/renderers/WebGLRenderTargetCube.js","../src/math/Quaternion.js","../src/math/Vector3.js","../src/math/Matrix4.js","../src/textures/CubeTexture.js","../src/renderers/webgl/WebGLUniforms.js","../src/renderers/shaders/UniformsUtils.js","../src/renderers/shaders/ShaderChunk.js","../src/math/Color.js","../src/renderers/shaders/UniformsLib.js","../src/renderers/shaders/ShaderLib.js","../src/math/Box2.js","../src/renderers/webgl/plugins/LensFlarePlugin.js","../src/renderers/webgl/plugins/SpritePlugin.js","../src/materials/Material.js","../src/materials/ShaderMaterial.js","../src/materials/MeshDepthMaterial.js","../src/math/Box3.js","../src/math/Sphere.js","../src/math/Matrix3.js","../src/math/Plane.js","../src/math/Frustum.js","../src/renderers/webgl/WebGLShadowMap.js","../src/math/Ray.js","../src/math/Euler.js","../src/core/Layers.js","../src/core/Object3D.js","../src/math/Line3.js","../src/math/Triangle.js","../src/core/Face3.js","../src/materials/MeshBasicMaterial.js","../src/core/BufferAttribute.js","../src/core/Geometry.js","../src/core/DirectGeometry.js","../src/core/BufferGeometry.js","../src/objects/Mesh.js","../src/geometries/BoxBufferGeometry.js","../src/geometries/PlaneBufferGeometry.js","../src/cameras/Camera.js","../src/cameras/PerspectiveCamera.js","../src/cameras/OrthographicCamera.js","../src/renderers/webgl/WebGLIndexedBufferRenderer.js","../src/renderers/webgl/WebGLBufferRenderer.js","../src/renderers/webgl/WebGLLights.js","../src/renderers/webgl/WebGLShader.js","../src/renderers/webgl/WebGLProgram.js","../src/renderers/webgl/WebGLPrograms.js","../src/renderers/webgl/WebGLGeometries.js","../src/renderers/webgl/WebGLObjects.js","../src/renderers/webgl/WebGLTextures.js","../src/renderers/webgl/WebGLProperties.js","../src/renderers/webgl/WebGLState.js","../src/renderers/webgl/WebGLCapabilities.js","../src/renderers/webgl/WebGLExtensions.js","../src/renderers/webgl/WebGLClipping.js","../src/renderers/WebGLRenderer.js","../src/renderers/WebGL2Renderer.js","../src/scenes/FogExp2.js","../src/scenes/Fog.js","../src/scenes/Scene.js","../src/objects/LensFlare.js","../src/materials/SpriteMaterial.js","../src/objects/Sprite.js","../src/objects/LOD.js","../src/textures/DataTexture.js","../src/objects/Skeleton.js","../src/objects/Bone.js","../src/objects/SkinnedMesh.js","../src/materials/LineBasicMaterial.js","../src/objects/Line.js","../src/objects/LineSegments.js","../src/materials/PointsMaterial.js","../src/objects/Points.js","../src/objects/Group.js","../src/textures/VideoTexture.js","../src/textures/CompressedTexture.js","../src/textures/CanvasTexture.js","../src/textures/DepthTexture.js","../src/geometries/WireframeGeometry.js","../src/geometries/ParametricBufferGeometry.js","../src/geometries/ParametricGeometry.js","../src/geometries/PolyhedronBufferGeometry.js","../src/geometries/TetrahedronBufferGeometry.js","../src/geometries/TetrahedronGeometry.js","../src/geometries/OctahedronBufferGeometry.js","../src/geometries/OctahedronGeometry.js","../src/geometries/IcosahedronBufferGeometry.js","../src/geometries/IcosahedronGeometry.js","../src/geometries/DodecahedronBufferGeometry.js","../src/geometries/DodecahedronGeometry.js","../src/geometries/PolyhedronGeometry.js","../src/geometries/TubeBufferGeometry.js","../src/geometries/TubeGeometry.js","../src/geometries/TorusKnotBufferGeometry.js","../src/geometries/TorusKnotGeometry.js","../src/geometries/TorusBufferGeometry.js","../src/geometries/TorusGeometry.js","../src/extras/ShapeUtils.js","../src/geometries/ExtrudeGeometry.js","../src/geometries/TextGeometry.js","../src/geometries/SphereBufferGeometry.js","../src/geometries/SphereGeometry.js","../src/geometries/RingBufferGeometry.js","../src/geometries/RingGeometry.js","../src/geometries/PlaneGeometry.js","../src/geometries/LatheBufferGeometry.js","../src/geometries/LatheGeometry.js","../src/geometries/ShapeBufferGeometry.js","../src/geometries/ShapeGeometry.js","../src/geometries/EdgesGeometry.js","../src/geometries/CylinderBufferGeometry.js","../src/geometries/CylinderGeometry.js","../src/geometries/ConeGeometry.js","../src/geometries/ConeBufferGeometry.js","../src/geometries/CircleBufferGeometry.js","../src/geometries/CircleGeometry.js","../src/geometries/BoxGeometry.js","../src/materials/ShadowMaterial.js","../src/materials/RawShaderMaterial.js","../src/materials/MultiMaterial.js","../src/materials/MeshStandardMaterial.js","../src/materials/MeshPhysicalMaterial.js","../src/materials/MeshPhongMaterial.js","../src/materials/MeshNormalMaterial.js","../src/materials/MeshLambertMaterial.js","../src/materials/LineDashedMaterial.js","../src/loaders/Cache.js","../src/loaders/LoadingManager.js","../src/loaders/FileLoader.js","../src/loaders/CompressedTextureLoader.js","../src/loaders/BinaryTextureLoader.js","../src/loaders/ImageLoader.js","../src/loaders/CubeTextureLoader.js","../src/loaders/TextureLoader.js","../src/lights/Light.js","../src/lights/HemisphereLight.js","../src/lights/LightShadow.js","../src/lights/SpotLightShadow.js","../src/lights/SpotLight.js","../src/lights/PointLight.js","../src/lights/DirectionalLightShadow.js","../src/lights/DirectionalLight.js","../src/lights/AmbientLight.js","../src/animation/AnimationUtils.js","../src/math/Interpolant.js","../src/math/interpolants/CubicInterpolant.js","../src/math/interpolants/LinearInterpolant.js","../src/math/interpolants/DiscreteInterpolant.js","../src/animation/KeyframeTrackPrototype.js","../src/animation/KeyframeTrackConstructor.js","../src/animation/tracks/VectorKeyframeTrack.js","../src/math/interpolants/QuaternionLinearInterpolant.js","../src/animation/tracks/QuaternionKeyframeTrack.js","../src/animation/tracks/NumberKeyframeTrack.js","../src/animation/tracks/StringKeyframeTrack.js","../src/animation/tracks/BooleanKeyframeTrack.js","../src/animation/tracks/ColorKeyframeTrack.js","../src/animation/KeyframeTrack.js","../src/animation/AnimationClip.js","../src/loaders/MaterialLoader.js","../src/loaders/BufferGeometryLoader.js","../src/loaders/Loader.js","../src/loaders/JSONLoader.js","../src/loaders/ObjectLoader.js","../src/extras/core/Curve.js","../src/extras/curves/LineCurve.js","../src/extras/core/CurvePath.js","../src/extras/curves/EllipseCurve.js","../src/extras/CurveUtils.js","../src/extras/curves/SplineCurve.js","../src/extras/curves/CubicBezierCurve.js","../src/extras/curves/QuadraticBezierCurve.js","../src/extras/core/PathPrototype.js","../src/extras/core/Shape.js","../src/extras/core/Path.js","../src/extras/core/Font.js","../src/loaders/FontLoader.js","../src/audio/AudioContext.js","../src/loaders/AudioLoader.js","../src/cameras/StereoCamera.js","../src/cameras/CubeCamera.js","../src/audio/AudioListener.js","../src/audio/Audio.js","../src/audio/PositionalAudio.js","../src/audio/AudioAnalyser.js","../src/animation/PropertyMixer.js","../src/animation/PropertyBinding.js","../src/animation/AnimationObjectGroup.js","../src/animation/AnimationAction.js","../src/animation/AnimationMixer.js","../src/core/Uniform.js","../src/core/InstancedBufferGeometry.js","../src/core/InterleavedBufferAttribute.js","../src/core/InterleavedBuffer.js","../src/core/InstancedInterleavedBuffer.js","../src/core/InstancedBufferAttribute.js","../src/core/Raycaster.js","../src/core/Clock.js","../src/math/Spline.js","../src/math/Spherical.js","../src/extras/objects/MorphBlendMesh.js","../src/extras/objects/ImmediateRenderObject.js","../src/extras/helpers/VertexNormalsHelper.js","../src/extras/helpers/SpotLightHelper.js","../src/extras/helpers/SkeletonHelper.js","../src/extras/helpers/PointLightHelper.js","../src/extras/helpers/HemisphereLightHelper.js","../src/extras/helpers/GridHelper.js","../src/extras/helpers/FaceNormalsHelper.js","../src/extras/helpers/DirectionalLightHelper.js","../src/extras/helpers/CameraHelper.js","../src/extras/helpers/BoundingBoxHelper.js","../src/extras/helpers/BoxHelper.js","../src/extras/helpers/ArrowHelper.js","../src/extras/helpers/AxisHelper.js","../src/extras/curves/CatmullRomCurve3.js","../src/extras/curves/ClosedSplineCurve3.js","../src/extras/curves/SplineCurve3.js","../src/extras/curves/CubicBezierCurve3.js","../src/extras/curves/QuadraticBezierCurve3.js","../src/extras/curves/LineCurve3.js","../src/extras/curves/ArcCurve.js","../src/extras/SceneUtils.js","../src/Three.Legacy.js"],"sourcesContent":["// Polyfills\n\nif ( Number.EPSILON === undefined ) {\n\n\tNumber.EPSILON = Math.pow( 2, - 52 );\n\n}\n\n//\n\nif ( Math.sign === undefined ) {\n\n\t// https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Math/sign\n\n\tMath.sign = function ( x ) {\n\n\t\treturn ( x < 0 ) ? - 1 : ( x > 0 ) ? 1 : + x;\n\n\t};\n\n}\n\nif ( Function.prototype.name === undefined ) {\n\n\t// Missing in IE9-11.\n\t// https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Function/name\n\n\tObject.defineProperty( Function.prototype, 'name', {\n\n\t\tget: function () {\n\n\t\t\treturn this.toString().match( /^\\s*function\\s*(\\S*)\\s*\\(/ )[ 1 ];\n\n\t\t}\n\n\t} );\n\n}\n\nif ( Object.assign === undefined ) {\n\n\t// Missing in IE.\n\t// https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Object/assign\n\n\t( function () {\n\n\t\tObject.assign = function ( target ) {\n\n\t\t\t'use strict';\n\n\t\t\tif ( target === undefined || target === null ) {\n\n\t\t\t\tthrow new TypeError( 'Cannot convert undefined or null to object' );\n\n\t\t\t}\n\n\t\t\tvar output = Object( target );\n\n\t\t\tfor ( var index = 1; index < arguments.length; index ++ ) {\n\n\t\t\t\tvar source = arguments[ index ];\n\n\t\t\t\tif ( source !== undefined && source !== null ) {\n\n\t\t\t\t\tfor ( var nextKey in source ) {\n\n\t\t\t\t\t\tif ( Object.prototype.hasOwnProperty.call( source, nextKey ) ) {\n\n\t\t\t\t\t\t\toutput[ nextKey ] = source[ nextKey ];\n\n\t\t\t\t\t\t}\n\n\t\t\t\t\t}\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t\treturn output;\n\n\t\t};\n\n\t} )();\n\n}\n","/**\n * https://github.com/mrdoob/eventdispatcher.js/\n */\n\nfunction EventDispatcher() {}\n\nObject.assign( EventDispatcher.prototype, {\n\n\taddEventListener: function ( type, listener ) {\n\n\t\tif ( this._listeners === undefined ) this._listeners = {};\n\n\t\tvar listeners = this._listeners;\n\n\t\tif ( listeners[ type ] === undefined ) {\n\n\t\t\tlisteners[ type ] = [];\n\n\t\t}\n\n\t\tif ( listeners[ type ].indexOf( listener ) === - 1 ) {\n\n\t\t\tlisteners[ type ].push( listener );\n\n\t\t}\n\n\t},\n\n\thasEventListener: function ( type, listener ) {\n\n\t\tif ( this._listeners === undefined ) return false;\n\n\t\tvar listeners = this._listeners;\n\n\t\tif ( listeners[ type ] !== undefined && listeners[ type ].indexOf( listener ) !== - 1 ) {\n\n\t\t\treturn true;\n\n\t\t}\n\n\t\treturn false;\n\n\t},\n\n\tremoveEventListener: function ( type, listener ) {\n\n\t\tif ( this._listeners === undefined ) return;\n\n\t\tvar listeners = this._listeners;\n\t\tvar listenerArray = listeners[ type ];\n\n\t\tif ( listenerArray !== undefined ) {\n\n\t\t\tvar index = listenerArray.indexOf( listener );\n\n\t\t\tif ( index !== - 1 ) {\n\n\t\t\t\tlistenerArray.splice( index, 1 );\n\n\t\t\t}\n\n\t\t}\n\n\t},\n\n\tdispatchEvent: function ( event ) {\n\n\t\tif ( this._listeners === undefined ) return;\n\n\t\tvar listeners = this._listeners;\n\t\tvar listenerArray = listeners[ event.type ];\n\n\t\tif ( listenerArray !== undefined ) {\n\n\t\t\tevent.target = this;\n\n\t\t\tvar array = [], i = 0;\n\t\t\tvar length = listenerArray.length;\n\n\t\t\tfor ( i = 0; i < length; i ++ ) {\n\n\t\t\t\tarray[ i ] = listenerArray[ i ];\n\n\t\t\t}\n\n\t\t\tfor ( i = 0; i < length; i ++ ) {\n\n\t\t\t\tarray[ i ].call( this, event );\n\n\t\t\t}\n\n\t\t}\n\n\t}\n\n} );\n\n\nexport { EventDispatcher };\n","export var REVISION = '83dev';\nexport var MOUSE = { LEFT: 0, MIDDLE: 1, RIGHT: 2 };\nexport var CullFaceNone = 0;\nexport var CullFaceBack = 1;\nexport var CullFaceFront = 2;\nexport var CullFaceFrontBack = 3;\nexport var FrontFaceDirectionCW = 0;\nexport var FrontFaceDirectionCCW = 1;\nexport var BasicShadowMap = 0;\nexport var PCFShadowMap = 1;\nexport var PCFSoftShadowMap = 2;\nexport var FrontSide = 0;\nexport var BackSide = 1;\nexport var DoubleSide = 2;\nexport var FlatShading = 1;\nexport var SmoothShading = 2;\nexport var NoColors = 0;\nexport var FaceColors = 1;\nexport var VertexColors = 2;\nexport var NoBlending = 0;\nexport var NormalBlending = 1;\nexport var AdditiveBlending = 2;\nexport var SubtractiveBlending = 3;\nexport var MultiplyBlending = 4;\nexport var CustomBlending = 5;\nexport var BlendingMode = {\n\tNoBlending: NoBlending,\n\tNormalBlending: NormalBlending,\n\tAdditiveBlending: AdditiveBlending,\n\tSubtractiveBlending: SubtractiveBlending,\n\tMultiplyBlending: MultiplyBlending,\n\tCustomBlending: CustomBlending\n};\nexport var AddEquation = 100;\nexport var SubtractEquation = 101;\nexport var ReverseSubtractEquation = 102;\nexport var MinEquation = 103;\nexport var MaxEquation = 104;\nexport var ZeroFactor = 200;\nexport var OneFactor = 201;\nexport var SrcColorFactor = 202;\nexport var OneMinusSrcColorFactor = 203;\nexport var SrcAlphaFactor = 204;\nexport var OneMinusSrcAlphaFactor = 205;\nexport var DstAlphaFactor = 206;\nexport var OneMinusDstAlphaFactor = 207;\nexport var DstColorFactor = 208;\nexport var OneMinusDstColorFactor = 209;\nexport var SrcAlphaSaturateFactor = 210;\nexport var NeverDepth = 0;\nexport var AlwaysDepth = 1;\nexport var LessDepth = 2;\nexport var LessEqualDepth = 3;\nexport var EqualDepth = 4;\nexport var GreaterEqualDepth = 5;\nexport var GreaterDepth = 6;\nexport var NotEqualDepth = 7;\nexport var MultiplyOperation = 0;\nexport var MixOperation = 1;\nexport var AddOperation = 2;\nexport var NoToneMapping = 0;\nexport var LinearToneMapping = 1;\nexport var ReinhardToneMapping = 2;\nexport var Uncharted2ToneMapping = 3;\nexport var CineonToneMapping = 4;\nexport var UVMapping = 300;\nexport var CubeReflectionMapping = 301;\nexport var CubeRefractionMapping = 302;\nexport var EquirectangularReflectionMapping = 303;\nexport var EquirectangularRefractionMapping = 304;\nexport var SphericalReflectionMapping = 305;\nexport var CubeUVReflectionMapping = 306;\nexport var CubeUVRefractionMapping = 307;\nexport var TextureMapping = {\n\tUVMapping: UVMapping,\n\tCubeReflectionMapping: CubeReflectionMapping,\n\tCubeRefractionMapping: CubeRefractionMapping,\n\tEquirectangularReflectionMapping: EquirectangularReflectionMapping,\n\tEquirectangularRefractionMapping: EquirectangularRefractionMapping,\n\tSphericalReflectionMapping: SphericalReflectionMapping,\n\tCubeUVReflectionMapping: CubeUVReflectionMapping,\n\tCubeUVRefractionMapping: CubeUVRefractionMapping\n};\nexport var RepeatWrapping = 1000;\nexport var ClampToEdgeWrapping = 1001;\nexport var MirroredRepeatWrapping = 1002;\nexport var TextureWrapping = {\n\tRepeatWrapping: RepeatWrapping,\n\tClampToEdgeWrapping: ClampToEdgeWrapping,\n\tMirroredRepeatWrapping: MirroredRepeatWrapping\n};\nexport var NearestFilter = 1003;\nexport var NearestMipMapNearestFilter = 1004;\nexport var NearestMipMapLinearFilter = 1005;\nexport var LinearFilter = 1006;\nexport var LinearMipMapNearestFilter = 1007;\nexport var LinearMipMapLinearFilter = 1008;\nexport var TextureFilter = {\n\tNearestFilter: NearestFilter,\n\tNearestMipMapNearestFilter: NearestMipMapNearestFilter,\n\tNearestMipMapLinearFilter: NearestMipMapLinearFilter,\n\tLinearFilter: LinearFilter,\n\tLinearMipMapNearestFilter: LinearMipMapNearestFilter,\n\tLinearMipMapLinearFilter: LinearMipMapLinearFilter\n};\nexport var UnsignedByteType = 1009;\nexport var ByteType = 1010;\nexport var ShortType = 1011;\nexport var UnsignedShortType = 1012;\nexport var IntType = 1013;\nexport var UnsignedIntType = 1014;\nexport var FloatType = 1015;\nexport var HalfFloatType = 1016;\nexport var UnsignedShort4444Type = 1017;\nexport var UnsignedShort5551Type = 1018;\nexport var UnsignedShort565Type = 1019;\nexport var UnsignedInt248Type = 1020;\nexport var AlphaFormat = 1021;\nexport var RGBFormat = 1022;\nexport var RGBAFormat = 1023;\nexport var LuminanceFormat = 1024;\nexport var LuminanceAlphaFormat = 1025;\nexport var RGBEFormat = RGBAFormat;\nexport var DepthFormat = 1026;\nexport var DepthStencilFormat = 1027;\nexport var RGB_S3TC_DXT1_Format = 2001;\nexport var RGBA_S3TC_DXT1_Format = 2002;\nexport var RGBA_S3TC_DXT3_Format = 2003;\nexport var RGBA_S3TC_DXT5_Format = 2004;\nexport var RGB_PVRTC_4BPPV1_Format = 2100;\nexport var RGB_PVRTC_2BPPV1_Format = 2101;\nexport var RGBA_PVRTC_4BPPV1_Format = 2102;\nexport var RGBA_PVRTC_2BPPV1_Format = 2103;\nexport var RGB_ETC1_Format = 2151;\nexport var LoopOnce = 2200;\nexport var LoopRepeat = 2201;\nexport var LoopPingPong = 2202;\nexport var InterpolateDiscrete = 2300;\nexport var InterpolateLinear = 2301;\nexport var InterpolateSmooth = 2302;\nexport var ZeroCurvatureEnding = 2400;\nexport var ZeroSlopeEnding = 2401;\nexport var WrapAroundEnding = 2402;\nexport var TrianglesDrawMode = 0;\nexport var TriangleStripDrawMode = 1;\nexport var TriangleFanDrawMode = 2;\nexport var LinearEncoding = 3000;\nexport var sRGBEncoding = 3001;\nexport var GammaEncoding = 3007;\nexport var RGBEEncoding = 3002;\nexport var LogLuvEncoding = 3003;\nexport var RGBM7Encoding = 3004;\nexport var RGBM16Encoding = 3005;\nexport var RGBDEncoding = 3006;\nexport var BasicDepthPacking = 3200;\nexport var RGBADepthPacking = 3201;\n","/**\n * @author alteredq / http://alteredqualia.com/\n * @author mrdoob / http://mrdoob.com/\n */\n\nvar _Math = {\n\n\tDEG2RAD: Math.PI / 180,\n\tRAD2DEG: 180 / Math.PI,\n\n\tgenerateUUID: function () {\n\n\t\t// http://www.broofa.com/Tools/Math.uuid.htm\n\n\t\tvar chars = '0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz'.split( '' );\n\t\tvar uuid = new Array( 36 );\n\t\tvar rnd = 0, r;\n\n\t\treturn function generateUUID() {\n\n\t\t\tfor ( var i = 0; i < 36; i ++ ) {\n\n\t\t\t\tif ( i === 8 || i === 13 || i === 18 || i === 23 ) {\n\n\t\t\t\t\tuuid[ i ] = '-';\n\n\t\t\t\t} else if ( i === 14 ) {\n\n\t\t\t\t\tuuid[ i ] = '4';\n\n\t\t\t\t} else {\n\n\t\t\t\t\tif ( rnd <= 0x02 ) rnd = 0x2000000 + ( Math.random() * 0x1000000 ) | 0;\n\t\t\t\t\tr = rnd & 0xf;\n\t\t\t\t\trnd = rnd >> 4;\n\t\t\t\t\tuuid[ i ] = chars[ ( i === 19 ) ? ( r & 0x3 ) | 0x8 : r ];\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t\treturn uuid.join( '' );\n\n\t\t};\n\n\t}(),\n\n\tclamp: function ( value, min, max ) {\n\n\t\treturn Math.max( min, Math.min( max, value ) );\n\n\t},\n\n\t// compute euclidian modulo of m % n\n\t// https://en.wikipedia.org/wiki/Modulo_operation\n\n\teuclideanModulo: function ( n, m ) {\n\n\t\treturn ( ( n % m ) + m ) % m;\n\n\t},\n\n\t// Linear mapping from range to range \n\n\tmapLinear: function ( x, a1, a2, b1, b2 ) {\n\n\t\treturn b1 + ( x - a1 ) * ( b2 - b1 ) / ( a2 - a1 );\n\n\t},\n\n\t// https://en.wikipedia.org/wiki/Linear_interpolation\n\n\tlerp: function ( x, y, t ) {\n\n\t\treturn ( 1 - t ) * x + t * y;\n\n\t},\n\n\t// http://en.wikipedia.org/wiki/Smoothstep\n\n\tsmoothstep: function ( x, min, max ) {\n\n\t\tif ( x <= min ) return 0;\n\t\tif ( x >= max ) return 1;\n\n\t\tx = ( x - min ) / ( max - min );\n\n\t\treturn x * x * ( 3 - 2 * x );\n\n\t},\n\n\tsmootherstep: function ( x, min, max ) {\n\n\t\tif ( x <= min ) return 0;\n\t\tif ( x >= max ) return 1;\n\n\t\tx = ( x - min ) / ( max - min );\n\n\t\treturn x * x * x * ( x * ( x * 6 - 15 ) + 10 );\n\n\t},\n\n\trandom16: function () {\n\n\t\tconsole.warn( 'THREE.Math.random16() has been deprecated. Use Math.random() instead.' );\n\t\treturn Math.random();\n\n\t},\n\n\t// Random integer from interval\n\n\trandInt: function ( low, high ) {\n\n\t\treturn low + Math.floor( Math.random() * ( high - low + 1 ) );\n\n\t},\n\n\t// Random float from interval\n\n\trandFloat: function ( low, high ) {\n\n\t\treturn low + Math.random() * ( high - low );\n\n\t},\n\n\t// Random float from <-range/2, range/2> interval\n\n\trandFloatSpread: function ( range ) {\n\n\t\treturn range * ( 0.5 - Math.random() );\n\n\t},\n\n\tdegToRad: function ( degrees ) {\n\n\t\treturn degrees * _Math.DEG2RAD;\n\n\t},\n\n\tradToDeg: function ( radians ) {\n\n\t\treturn radians * _Math.RAD2DEG;\n\n\t},\n\n\tisPowerOfTwo: function ( value ) {\n\n\t\treturn ( value & ( value - 1 ) ) === 0 && value !== 0;\n\n\t},\n\n\tnearestPowerOfTwo: function ( value ) {\n\n\t\treturn Math.pow( 2, Math.round( Math.log( value ) / Math.LN2 ) );\n\n\t},\n\n\tnextPowerOfTwo: function ( value ) {\n\n\t\tvalue --;\n\t\tvalue |= value >> 1;\n\t\tvalue |= value >> 2;\n\t\tvalue |= value >> 4;\n\t\tvalue |= value >> 8;\n\t\tvalue |= value >> 16;\n\t\tvalue ++;\n\n\t\treturn value;\n\n\t}\n\n};\n\n\nexport { _Math };\n","/**\n * @author mrdoob / http://mrdoob.com/\n * @author philogb / http://blog.thejit.org/\n * @author egraether / http://egraether.com/\n * @author zz85 / http://www.lab4games.net/zz85/blog\n */\n\nfunction Vector2( x, y ) {\n\n\tthis.x = x || 0;\n\tthis.y = y || 0;\n\n}\n\nVector2.prototype = {\n\n\tconstructor: Vector2,\n\n\tisVector2: true,\n\n\tget width() {\n\n\t\treturn this.x;\n\n\t},\n\n\tset width( value ) {\n\n\t\tthis.x = value;\n\n\t},\n\n\tget height() {\n\n\t\treturn this.y;\n\n\t},\n\n\tset height( value ) {\n\n\t\tthis.y = value;\n\n\t},\n\n\t//\n\n\tset: function ( x, y ) {\n\n\t\tthis.x = x;\n\t\tthis.y = y;\n\n\t\treturn this;\n\n\t},\n\n\tsetScalar: function ( scalar ) {\n\n\t\tthis.x = scalar;\n\t\tthis.y = scalar;\n\n\t\treturn this;\n\n\t},\n\n\tsetX: function ( x ) {\n\n\t\tthis.x = x;\n\n\t\treturn this;\n\n\t},\n\n\tsetY: function ( y ) {\n\n\t\tthis.y = y;\n\n\t\treturn this;\n\n\t},\n\n\tsetComponent: function ( index, value ) {\n\n\t\tswitch ( index ) {\n\n\t\t\tcase 0: this.x = value; break;\n\t\t\tcase 1: this.y = value; break;\n\t\t\tdefault: throw new Error( 'index is out of range: ' + index );\n\n\t\t}\n\t\t\n\t\treturn this;\n\n\t},\n\n\tgetComponent: function ( index ) {\n\n\t\tswitch ( index ) {\n\n\t\t\tcase 0: return this.x;\n\t\t\tcase 1: return this.y;\n\t\t\tdefault: throw new Error( 'index is out of range: ' + index );\n\n\t\t}\n\n\t},\n\n\tclone: function () {\n\n\t\treturn new this.constructor( this.x, this.y );\n\n\t},\n\n\tcopy: function ( v ) {\n\n\t\tthis.x = v.x;\n\t\tthis.y = v.y;\n\n\t\treturn this;\n\n\t},\n\n\tadd: function ( v, w ) {\n\n\t\tif ( w !== undefined ) {\n\n\t\t\tconsole.warn( 'THREE.Vector2: .add() now only accepts one argument. Use .addVectors( a, b ) instead.' );\n\t\t\treturn this.addVectors( v, w );\n\n\t\t}\n\n\t\tthis.x += v.x;\n\t\tthis.y += v.y;\n\n\t\treturn this;\n\n\t},\n\n\taddScalar: function ( s ) {\n\n\t\tthis.x += s;\n\t\tthis.y += s;\n\n\t\treturn this;\n\n\t},\n\n\taddVectors: function ( a, b ) {\n\n\t\tthis.x = a.x + b.x;\n\t\tthis.y = a.y + b.y;\n\n\t\treturn this;\n\n\t},\n\n\taddScaledVector: function ( v, s ) {\n\n\t\tthis.x += v.x * s;\n\t\tthis.y += v.y * s;\n\n\t\treturn this;\n\n\t},\n\n\tsub: function ( v, w ) {\n\n\t\tif ( w !== undefined ) {\n\n\t\t\tconsole.warn( 'THREE.Vector2: .sub() now only accepts one argument. Use .subVectors( a, b ) instead.' );\n\t\t\treturn this.subVectors( v, w );\n\n\t\t}\n\n\t\tthis.x -= v.x;\n\t\tthis.y -= v.y;\n\n\t\treturn this;\n\n\t},\n\n\tsubScalar: function ( s ) {\n\n\t\tthis.x -= s;\n\t\tthis.y -= s;\n\n\t\treturn this;\n\n\t},\n\n\tsubVectors: function ( a, b ) {\n\n\t\tthis.x = a.x - b.x;\n\t\tthis.y = a.y - b.y;\n\n\t\treturn this;\n\n\t},\n\n\tmultiply: function ( v ) {\n\n\t\tthis.x *= v.x;\n\t\tthis.y *= v.y;\n\n\t\treturn this;\n\n\t},\n\n\tmultiplyScalar: function ( scalar ) {\n\n\t\tif ( isFinite( scalar ) ) {\n\n\t\t\tthis.x *= scalar;\n\t\t\tthis.y *= scalar;\n\n\t\t} else {\n\n\t\t\tthis.x = 0;\n\t\t\tthis.y = 0;\n\n\t\t}\n\n\t\treturn this;\n\n\t},\n\n\tdivide: function ( v ) {\n\n\t\tthis.x /= v.x;\n\t\tthis.y /= v.y;\n\n\t\treturn this;\n\n\t},\n\n\tdivideScalar: function ( scalar ) {\n\n\t\treturn this.multiplyScalar( 1 / scalar );\n\n\t},\n\n\tmin: function ( v ) {\n\n\t\tthis.x = Math.min( this.x, v.x );\n\t\tthis.y = Math.min( this.y, v.y );\n\n\t\treturn this;\n\n\t},\n\n\tmax: function ( v ) {\n\n\t\tthis.x = Math.max( this.x, v.x );\n\t\tthis.y = Math.max( this.y, v.y );\n\n\t\treturn this;\n\n\t},\n\n\tclamp: function ( min, max ) {\n\n\t\t// This function assumes min < max, if this assumption isn't true it will not operate correctly\n\n\t\tthis.x = Math.max( min.x, Math.min( max.x, this.x ) );\n\t\tthis.y = Math.max( min.y, Math.min( max.y, this.y ) );\n\n\t\treturn this;\n\n\t},\n\n\tclampScalar: function () {\n\n\t\tvar min, max;\n\n\t\treturn function clampScalar( minVal, maxVal ) {\n\n\t\t\tif ( min === undefined ) {\n\n\t\t\t\tmin = new Vector2();\n\t\t\t\tmax = new Vector2();\n\n\t\t\t}\n\n\t\t\tmin.set( minVal, minVal );\n\t\t\tmax.set( maxVal, maxVal );\n\n\t\t\treturn this.clamp( min, max );\n\n\t\t};\n\n\t}(),\n\n\tclampLength: function ( min, max ) {\n\n\t\tvar length = this.length();\n\n\t\treturn this.multiplyScalar( Math.max( min, Math.min( max, length ) ) / length );\n\n\t},\n\n\tfloor: function () {\n\n\t\tthis.x = Math.floor( this.x );\n\t\tthis.y = Math.floor( this.y );\n\n\t\treturn this;\n\n\t},\n\n\tceil: function () {\n\n\t\tthis.x = Math.ceil( this.x );\n\t\tthis.y = Math.ceil( this.y );\n\n\t\treturn this;\n\n\t},\n\n\tround: function () {\n\n\t\tthis.x = Math.round( this.x );\n\t\tthis.y = Math.round( this.y );\n\n\t\treturn this;\n\n\t},\n\n\troundToZero: function () {\n\n\t\tthis.x = ( this.x < 0 ) ? Math.ceil( this.x ) : Math.floor( this.x );\n\t\tthis.y = ( this.y < 0 ) ? Math.ceil( this.y ) : Math.floor( this.y );\n\n\t\treturn this;\n\n\t},\n\n\tnegate: function () {\n\n\t\tthis.x = - this.x;\n\t\tthis.y = - this.y;\n\n\t\treturn this;\n\n\t},\n\n\tdot: function ( v ) {\n\n\t\treturn this.x * v.x + this.y * v.y;\n\n\t},\n\n\tlengthSq: function () {\n\n\t\treturn this.x * this.x + this.y * this.y;\n\n\t},\n\n\tlength: function () {\n\n\t\treturn Math.sqrt( this.x * this.x + this.y * this.y );\n\n\t},\n\n\tlengthManhattan: function() {\n\n\t\treturn Math.abs( this.x ) + Math.abs( this.y );\n\n\t},\n\n\tnormalize: function () {\n\n\t\treturn this.divideScalar( this.length() );\n\n\t},\n\n\tangle: function () {\n\n\t\t// computes the angle in radians with respect to the positive x-axis\n\n\t\tvar angle = Math.atan2( this.y, this.x );\n\n\t\tif ( angle < 0 ) angle += 2 * Math.PI;\n\n\t\treturn angle;\n\n\t},\n\n\tdistanceTo: function ( v ) {\n\n\t\treturn Math.sqrt( this.distanceToSquared( v ) );\n\n\t},\n\n\tdistanceToSquared: function ( v ) {\n\n\t\tvar dx = this.x - v.x, dy = this.y - v.y;\n\t\treturn dx * dx + dy * dy;\n\n\t},\n\n\tdistanceToManhattan: function ( v ) {\n\n\t\treturn Math.abs( this.x - v.x ) + Math.abs( this.y - v.y );\n\n\t},\n\n\tsetLength: function ( length ) {\n\n\t\treturn this.multiplyScalar( length / this.length() );\n\n\t},\n\n\tlerp: function ( v, alpha ) {\n\n\t\tthis.x += ( v.x - this.x ) * alpha;\n\t\tthis.y += ( v.y - this.y ) * alpha;\n\n\t\treturn this;\n\n\t},\n\n\tlerpVectors: function ( v1, v2, alpha ) {\n\n\t\treturn this.subVectors( v2, v1 ).multiplyScalar( alpha ).add( v1 );\n\n\t},\n\n\tequals: function ( v ) {\n\n\t\treturn ( ( v.x === this.x ) && ( v.y === this.y ) );\n\n\t},\n\n\tfromArray: function ( array, offset ) {\n\n\t\tif ( offset === undefined ) offset = 0;\n\n\t\tthis.x = array[ offset ];\n\t\tthis.y = array[ offset + 1 ];\n\n\t\treturn this;\n\n\t},\n\n\ttoArray: function ( array, offset ) {\n\n\t\tif ( array === undefined ) array = [];\n\t\tif ( offset === undefined ) offset = 0;\n\n\t\tarray[ offset ] = this.x;\n\t\tarray[ offset + 1 ] = this.y;\n\n\t\treturn array;\n\n\t},\n\n\tfromAttribute: function ( attribute, index, offset ) {\n\n\t\tif ( offset === undefined ) offset = 0;\n\n\t\tindex = index * attribute.itemSize + offset;\n\n\t\tthis.x = attribute.array[ index ];\n\t\tthis.y = attribute.array[ index + 1 ];\n\n\t\treturn this;\n\n\t},\n\n\trotateAround: function ( center, angle ) {\n\n\t\tvar c = Math.cos( angle ), s = Math.sin( angle );\n\n\t\tvar x = this.x - center.x;\n\t\tvar y = this.y - center.y;\n\n\t\tthis.x = x * c - y * s + center.x;\n\t\tthis.y = x * s + y * c + center.y;\n\n\t\treturn this;\n\n\t}\n\n};\n\n\nexport { Vector2 };\n","import { EventDispatcher } from '../core/EventDispatcher';\nimport { UVMapping } from '../constants';\nimport { MirroredRepeatWrapping, ClampToEdgeWrapping, RepeatWrapping, LinearEncoding, UnsignedByteType, RGBAFormat, LinearMipMapLinearFilter, LinearFilter } from '../constants';\nimport { _Math } from '../math/Math';\nimport { Vector2 } from '../math/Vector2';\n\n/**\n * @author mrdoob / http://mrdoob.com/\n * @author alteredq / http://alteredqualia.com/\n * @author szimek / https://github.com/szimek/\n */\n\nfunction Texture( image, mapping, wrapS, wrapT, magFilter, minFilter, format, type, anisotropy, encoding ) {\n\n\tObject.defineProperty( this, 'id', { value: TextureIdCount() } );\n\n\tthis.uuid = _Math.generateUUID();\n\n\tthis.name = '';\n\tthis.sourceFile = '';\n\n\tthis.image = image !== undefined ? image : Texture.DEFAULT_IMAGE;\n\tthis.mipmaps = [];\n\n\tthis.mapping = mapping !== undefined ? mapping : Texture.DEFAULT_MAPPING;\n\n\tthis.wrapS = wrapS !== undefined ? wrapS : ClampToEdgeWrapping;\n\tthis.wrapT = wrapT !== undefined ? wrapT : ClampToEdgeWrapping;\n\n\tthis.magFilter = magFilter !== undefined ? magFilter : LinearFilter;\n\tthis.minFilter = minFilter !== undefined ? minFilter : LinearMipMapLinearFilter;\n\n\tthis.anisotropy = anisotropy !== undefined ? anisotropy : 1;\n\n\tthis.format = format !== undefined ? format : RGBAFormat;\n\tthis.type = type !== undefined ? type : UnsignedByteType;\n\n\tthis.offset = new Vector2( 0, 0 );\n\tthis.repeat = new Vector2( 1, 1 );\n\n\tthis.generateMipmaps = true;\n\tthis.premultiplyAlpha = false;\n\tthis.flipY = true;\n\tthis.unpackAlignment = 4;\t// valid values: 1, 2, 4, 8 (see http://www.khronos.org/opengles/sdk/docs/man/xhtml/glPixelStorei.xml)\n\n\n\t// Values of encoding !== THREE.LinearEncoding only supported on map, envMap and emissiveMap.\n\t//\n\t// Also changing the encoding after already used by a Material will not automatically make the Material\n\t// update. You need to explicitly call Material.needsUpdate to trigger it to recompile.\n\tthis.encoding = encoding !== undefined ? encoding : LinearEncoding;\n\n\tthis.version = 0;\n\tthis.onUpdate = null;\n\n}\n\nTexture.DEFAULT_IMAGE = undefined;\nTexture.DEFAULT_MAPPING = UVMapping;\n\nTexture.prototype = {\n\n\tconstructor: Texture,\n\n\tisTexture: true,\n\n\tset needsUpdate( value ) {\n\n\t\tif ( value === true ) this.version ++;\n\n\t},\n\n\tclone: function () {\n\n\t\treturn new this.constructor().copy( this );\n\n\t},\n\n\tcopy: function ( source ) {\n\n\t\tthis.image = source.image;\n\t\tthis.mipmaps = source.mipmaps.slice( 0 );\n\n\t\tthis.mapping = source.mapping;\n\n\t\tthis.wrapS = source.wrapS;\n\t\tthis.wrapT = source.wrapT;\n\n\t\tthis.magFilter = source.magFilter;\n\t\tthis.minFilter = source.minFilter;\n\n\t\tthis.anisotropy = source.anisotropy;\n\n\t\tthis.format = source.format;\n\t\tthis.type = source.type;\n\n\t\tthis.offset.copy( source.offset );\n\t\tthis.repeat.copy( source.repeat );\n\n\t\tthis.generateMipmaps = source.generateMipmaps;\n\t\tthis.premultiplyAlpha = source.premultiplyAlpha;\n\t\tthis.flipY = source.flipY;\n\t\tthis.unpackAlignment = source.unpackAlignment;\n\t\tthis.encoding = source.encoding;\n\n\t\treturn this;\n\n\t},\n\n\ttoJSON: function ( meta ) {\n\n\t\tif ( meta.textures[ this.uuid ] !== undefined ) {\n\n\t\t\treturn meta.textures[ this.uuid ];\n\n\t\t}\n\n\t\tfunction getDataURL( image ) {\n\n\t\t\tvar canvas;\n\n\t\t\tif ( image.toDataURL !== undefined ) {\n\n\t\t\t\tcanvas = image;\n\n\t\t\t} else {\n\n\t\t\t\tcanvas = document.createElementNS( 'http://www.w3.org/1999/xhtml', 'canvas' );\n\t\t\t\tcanvas.width = image.width;\n\t\t\t\tcanvas.height = image.height;\n\n\t\t\t\tcanvas.getContext( '2d' ).drawImage( image, 0, 0, image.width, image.height );\n\n\t\t\t}\n\n\t\t\tif ( canvas.width > 2048 || canvas.height > 2048 ) {\n\n\t\t\t\treturn canvas.toDataURL( 'image/jpeg', 0.6 );\n\n\t\t\t} else {\n\n\t\t\t\treturn canvas.toDataURL( 'image/png' );\n\n\t\t\t}\n\n\t\t}\n\n\t\tvar output = {\n\t\t\tmetadata: {\n\t\t\t\tversion: 4.4,\n\t\t\t\ttype: 'Texture',\n\t\t\t\tgenerator: 'Texture.toJSON'\n\t\t\t},\n\n\t\t\tuuid: this.uuid,\n\t\t\tname: this.name,\n\n\t\t\tmapping: this.mapping,\n\n\t\t\trepeat: [ this.repeat.x, this.repeat.y ],\n\t\t\toffset: [ this.offset.x, this.offset.y ],\n\t\t\twrap: [ this.wrapS, this.wrapT ],\n\n\t\t\tminFilter: this.minFilter,\n\t\t\tmagFilter: this.magFilter,\n\t\t\tanisotropy: this.anisotropy,\n\n\t\t\tflipY: this.flipY\n\t\t};\n\n\t\tif ( this.image !== undefined ) {\n\n\t\t\t// TODO: Move to THREE.Image\n\n\t\t\tvar image = this.image;\n\n\t\t\tif ( image.uuid === undefined ) {\n\n\t\t\t\timage.uuid = _Math.generateUUID(); // UGH\n\n\t\t\t}\n\n\t\t\tif ( meta.images[ image.uuid ] === undefined ) {\n\n\t\t\t\tmeta.images[ image.uuid ] = {\n\t\t\t\t\tuuid: image.uuid,\n\t\t\t\t\turl: getDataURL( image )\n\t\t\t\t};\n\n\t\t\t}\n\n\t\t\toutput.image = image.uuid;\n\n\t\t}\n\n\t\tmeta.textures[ this.uuid ] = output;\n\n\t\treturn output;\n\n\t},\n\n\tdispose: function () {\n\n\t\tthis.dispatchEvent( { type: 'dispose' } );\n\n\t},\n\n\ttransformUv: function ( uv ) {\n\n\t\tif ( this.mapping !== UVMapping ) return;\n\n\t\tuv.multiply( this.repeat );\n\t\tuv.add( this.offset );\n\n\t\tif ( uv.x < 0 || uv.x > 1 ) {\n\n\t\t\tswitch ( this.wrapS ) {\n\n\t\t\t\tcase RepeatWrapping:\n\n\t\t\t\t\tuv.x = uv.x - Math.floor( uv.x );\n\t\t\t\t\tbreak;\n\n\t\t\t\tcase ClampToEdgeWrapping:\n\n\t\t\t\t\tuv.x = uv.x < 0 ? 0 : 1;\n\t\t\t\t\tbreak;\n\n\t\t\t\tcase MirroredRepeatWrapping:\n\n\t\t\t\t\tif ( Math.abs( Math.floor( uv.x ) % 2 ) === 1 ) {\n\n\t\t\t\t\t\tuv.x = Math.ceil( uv.x ) - uv.x;\n\n\t\t\t\t\t} else {\n\n\t\t\t\t\t\tuv.x = uv.x - Math.floor( uv.x );\n\n\t\t\t\t\t}\n\t\t\t\t\tbreak;\n\n\t\t\t}\n\n\t\t}\n\n\t\tif ( uv.y < 0 || uv.y > 1 ) {\n\n\t\t\tswitch ( this.wrapT ) {\n\n\t\t\t\tcase RepeatWrapping:\n\n\t\t\t\t\tuv.y = uv.y - Math.floor( uv.y );\n\t\t\t\t\tbreak;\n\n\t\t\t\tcase ClampToEdgeWrapping:\n\n\t\t\t\t\tuv.y = uv.y < 0 ? 0 : 1;\n\t\t\t\t\tbreak;\n\n\t\t\t\tcase MirroredRepeatWrapping:\n\n\t\t\t\t\tif ( Math.abs( Math.floor( uv.y ) % 2 ) === 1 ) {\n\n\t\t\t\t\t\tuv.y = Math.ceil( uv.y ) - uv.y;\n\n\t\t\t\t\t} else {\n\n\t\t\t\t\t\tuv.y = uv.y - Math.floor( uv.y );\n\n\t\t\t\t\t}\n\t\t\t\t\tbreak;\n\n\t\t\t}\n\n\t\t}\n\n\t\tif ( this.flipY ) {\n\n\t\t\tuv.y = 1 - uv.y;\n\n\t\t}\n\n\t}\n\n};\n\nObject.assign( Texture.prototype, EventDispatcher.prototype );\n\nvar count = 0;\nfunction TextureIdCount() { return count++; };\n\n\nexport { TextureIdCount, Texture };\n","/**\n * @author supereggbert / http://www.paulbrunt.co.uk/\n * @author philogb / http://blog.thejit.org/\n * @author mikael emtinger / http://gomo.se/\n * @author egraether / http://egraether.com/\n * @author WestLangley / http://github.com/WestLangley\n */\n\nfunction Vector4( x, y, z, w ) {\n\n\tthis.x = x || 0;\n\tthis.y = y || 0;\n\tthis.z = z || 0;\n\tthis.w = ( w !== undefined ) ? w : 1;\n\n}\n\nVector4.prototype = {\n\n\tconstructor: Vector4,\n\n\tisVector4: true,\n\n\tset: function ( x, y, z, w ) {\n\n\t\tthis.x = x;\n\t\tthis.y = y;\n\t\tthis.z = z;\n\t\tthis.w = w;\n\n\t\treturn this;\n\n\t},\n\n\tsetScalar: function ( scalar ) {\n\n\t\tthis.x = scalar;\n\t\tthis.y = scalar;\n\t\tthis.z = scalar;\n\t\tthis.w = scalar;\n\n\t\treturn this;\n\n\t},\n\n\tsetX: function ( x ) {\n\n\t\tthis.x = x;\n\n\t\treturn this;\n\n\t},\n\n\tsetY: function ( y ) {\n\n\t\tthis.y = y;\n\n\t\treturn this;\n\n\t},\n\n\tsetZ: function ( z ) {\n\n\t\tthis.z = z;\n\n\t\treturn this;\n\n\t},\n\n\tsetW: function ( w ) {\n\n\t\tthis.w = w;\n\n\t\treturn this;\n\n\t},\n\n\tsetComponent: function ( index, value ) {\n\n\t\tswitch ( index ) {\n\n\t\t\tcase 0: this.x = value; break;\n\t\t\tcase 1: this.y = value; break;\n\t\t\tcase 2: this.z = value; break;\n\t\t\tcase 3: this.w = value; break;\n\t\t\tdefault: throw new Error( 'index is out of range: ' + index );\n\n\t\t}\n\t\t\n\t\treturn this;\n\n\t},\n\n\tgetComponent: function ( index ) {\n\n\t\tswitch ( index ) {\n\n\t\t\tcase 0: return this.x;\n\t\t\tcase 1: return this.y;\n\t\t\tcase 2: return this.z;\n\t\t\tcase 3: return this.w;\n\t\t\tdefault: throw new Error( 'index is out of range: ' + index );\n\n\t\t}\n\n\t},\n\n\tclone: function () {\n\n\t\treturn new this.constructor( this.x, this.y, this.z, this.w );\n\n\t},\n\n\tcopy: function ( v ) {\n\n\t\tthis.x = v.x;\n\t\tthis.y = v.y;\n\t\tthis.z = v.z;\n\t\tthis.w = ( v.w !== undefined ) ? v.w : 1;\n\n\t\treturn this;\n\n\t},\n\n\tadd: function ( v, w ) {\n\n\t\tif ( w !== undefined ) {\n\n\t\t\tconsole.warn( 'THREE.Vector4: .add() now only accepts one argument. Use .addVectors( a, b ) instead.' );\n\t\t\treturn this.addVectors( v, w );\n\n\t\t}\n\n\t\tthis.x += v.x;\n\t\tthis.y += v.y;\n\t\tthis.z += v.z;\n\t\tthis.w += v.w;\n\n\t\treturn this;\n\n\t},\n\n\taddScalar: function ( s ) {\n\n\t\tthis.x += s;\n\t\tthis.y += s;\n\t\tthis.z += s;\n\t\tthis.w += s;\n\n\t\treturn this;\n\n\t},\n\n\taddVectors: function ( a, b ) {\n\n\t\tthis.x = a.x + b.x;\n\t\tthis.y = a.y + b.y;\n\t\tthis.z = a.z + b.z;\n\t\tthis.w = a.w + b.w;\n\n\t\treturn this;\n\n\t},\n\n\taddScaledVector: function ( v, s ) {\n\n\t\tthis.x += v.x * s;\n\t\tthis.y += v.y * s;\n\t\tthis.z += v.z * s;\n\t\tthis.w += v.w * s;\n\n\t\treturn this;\n\n\t},\n\n\tsub: function ( v, w ) {\n\n\t\tif ( w !== undefined ) {\n\n\t\t\tconsole.warn( 'THREE.Vector4: .sub() now only accepts one argument. Use .subVectors( a, b ) instead.' );\n\t\t\treturn this.subVectors( v, w );\n\n\t\t}\n\n\t\tthis.x -= v.x;\n\t\tthis.y -= v.y;\n\t\tthis.z -= v.z;\n\t\tthis.w -= v.w;\n\n\t\treturn this;\n\n\t},\n\n\tsubScalar: function ( s ) {\n\n\t\tthis.x -= s;\n\t\tthis.y -= s;\n\t\tthis.z -= s;\n\t\tthis.w -= s;\n\n\t\treturn this;\n\n\t},\n\n\tsubVectors: function ( a, b ) {\n\n\t\tthis.x = a.x - b.x;\n\t\tthis.y = a.y - b.y;\n\t\tthis.z = a.z - b.z;\n\t\tthis.w = a.w - b.w;\n\n\t\treturn this;\n\n\t},\n\n\tmultiplyScalar: function ( scalar ) {\n\n\t\tif ( isFinite( scalar ) ) {\n\n\t\t\tthis.x *= scalar;\n\t\t\tthis.y *= scalar;\n\t\t\tthis.z *= scalar;\n\t\t\tthis.w *= scalar;\n\n\t\t} else {\n\n\t\t\tthis.x = 0;\n\t\t\tthis.y = 0;\n\t\t\tthis.z = 0;\n\t\t\tthis.w = 0;\n\n\t\t}\n\n\t\treturn this;\n\n\t},\n\n\tapplyMatrix4: function ( m ) {\n\n\t\tvar x = this.x, y = this.y, z = this.z, w = this.w;\n\t\tvar e = m.elements;\n\n\t\tthis.x = e[ 0 ] * x + e[ 4 ] * y + e[ 8 ] * z + e[ 12 ] * w;\n\t\tthis.y = e[ 1 ] * x + e[ 5 ] * y + e[ 9 ] * z + e[ 13 ] * w;\n\t\tthis.z = e[ 2 ] * x + e[ 6 ] * y + e[ 10 ] * z + e[ 14 ] * w;\n\t\tthis.w = e[ 3 ] * x + e[ 7 ] * y + e[ 11 ] * z + e[ 15 ] * w;\n\n\t\treturn this;\n\n\t},\n\n\tdivideScalar: function ( scalar ) {\n\n\t\treturn this.multiplyScalar( 1 / scalar );\n\n\t},\n\n\tsetAxisAngleFromQuaternion: function ( q ) {\n\n\t\t// http://www.euclideanspace.com/maths/geometry/rotations/conversions/quaternionToAngle/index.htm\n\n\t\t// q is assumed to be normalized\n\n\t\tthis.w = 2 * Math.acos( q.w );\n\n\t\tvar s = Math.sqrt( 1 - q.w * q.w );\n\n\t\tif ( s < 0.0001 ) {\n\n\t\t\t this.x = 1;\n\t\t\t this.y = 0;\n\t\t\t this.z = 0;\n\n\t\t} else {\n\n\t\t\t this.x = q.x / s;\n\t\t\t this.y = q.y / s;\n\t\t\t this.z = q.z / s;\n\n\t\t}\n\n\t\treturn this;\n\n\t},\n\n\tsetAxisAngleFromRotationMatrix: function ( m ) {\n\n\t\t// http://www.euclideanspace.com/maths/geometry/rotations/conversions/matrixToAngle/index.htm\n\n\t\t// assumes the upper 3x3 of m is a pure rotation matrix (i.e, unscaled)\n\n\t\tvar angle, x, y, z,\t\t// variables for result\n\t\t\tepsilon = 0.01,\t\t// margin to allow for rounding errors\n\t\t\tepsilon2 = 0.1,\t\t// margin to distinguish between 0 and 180 degrees\n\n\t\t\tte = m.elements,\n\n\t\t\tm11 = te[ 0 ], m12 = te[ 4 ], m13 = te[ 8 ],\n\t\t\tm21 = te[ 1 ], m22 = te[ 5 ], m23 = te[ 9 ],\n\t\t\tm31 = te[ 2 ], m32 = te[ 6 ], m33 = te[ 10 ];\n\n\t\tif ( ( Math.abs( m12 - m21 ) < epsilon ) &&\n\t\t ( Math.abs( m13 - m31 ) < epsilon ) &&\n\t\t ( Math.abs( m23 - m32 ) < epsilon ) ) {\n\n\t\t\t// singularity found\n\t\t\t// first check for identity matrix which must have +1 for all terms\n\t\t\t// in leading diagonal and zero in other terms\n\n\t\t\tif ( ( Math.abs( m12 + m21 ) < epsilon2 ) &&\n\t\t\t ( Math.abs( m13 + m31 ) < epsilon2 ) &&\n\t\t\t ( Math.abs( m23 + m32 ) < epsilon2 ) &&\n\t\t\t ( Math.abs( m11 + m22 + m33 - 3 ) < epsilon2 ) ) {\n\n\t\t\t\t// this singularity is identity matrix so angle = 0\n\n\t\t\t\tthis.set( 1, 0, 0, 0 );\n\n\t\t\t\treturn this; // zero angle, arbitrary axis\n\n\t\t\t}\n\n\t\t\t// otherwise this singularity is angle = 180\n\n\t\t\tangle = Math.PI;\n\n\t\t\tvar xx = ( m11 + 1 ) / 2;\n\t\t\tvar yy = ( m22 + 1 ) / 2;\n\t\t\tvar zz = ( m33 + 1 ) / 2;\n\t\t\tvar xy = ( m12 + m21 ) / 4;\n\t\t\tvar xz = ( m13 + m31 ) / 4;\n\t\t\tvar yz = ( m23 + m32 ) / 4;\n\n\t\t\tif ( ( xx > yy ) && ( xx > zz ) ) {\n\n\t\t\t\t// m11 is the largest diagonal term\n\n\t\t\t\tif ( xx < epsilon ) {\n\n\t\t\t\t\tx = 0;\n\t\t\t\t\ty = 0.707106781;\n\t\t\t\t\tz = 0.707106781;\n\n\t\t\t\t} else {\n\n\t\t\t\t\tx = Math.sqrt( xx );\n\t\t\t\t\ty = xy / x;\n\t\t\t\t\tz = xz / x;\n\n\t\t\t\t}\n\n\t\t\t} else if ( yy > zz ) {\n\n\t\t\t\t// m22 is the largest diagonal term\n\n\t\t\t\tif ( yy < epsilon ) {\n\n\t\t\t\t\tx = 0.707106781;\n\t\t\t\t\ty = 0;\n\t\t\t\t\tz = 0.707106781;\n\n\t\t\t\t} else {\n\n\t\t\t\t\ty = Math.sqrt( yy );\n\t\t\t\t\tx = xy / y;\n\t\t\t\t\tz = yz / y;\n\n\t\t\t\t}\n\n\t\t\t} else {\n\n\t\t\t\t// m33 is the largest diagonal term so base result on this\n\n\t\t\t\tif ( zz < epsilon ) {\n\n\t\t\t\t\tx = 0.707106781;\n\t\t\t\t\ty = 0.707106781;\n\t\t\t\t\tz = 0;\n\n\t\t\t\t} else {\n\n\t\t\t\t\tz = Math.sqrt( zz );\n\t\t\t\t\tx = xz / z;\n\t\t\t\t\ty = yz / z;\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t\tthis.set( x, y, z, angle );\n\n\t\t\treturn this; // return 180 deg rotation\n\n\t\t}\n\n\t\t// as we have reached here there are no singularities so we can handle normally\n\n\t\tvar s = Math.sqrt( ( m32 - m23 ) * ( m32 - m23 ) +\n\t\t ( m13 - m31 ) * ( m13 - m31 ) +\n\t\t ( m21 - m12 ) * ( m21 - m12 ) ); // used to normalize\n\n\t\tif ( Math.abs( s ) < 0.001 ) s = 1;\n\n\t\t// prevent divide by zero, should not happen if matrix is orthogonal and should be\n\t\t// caught by singularity test above, but I've left it in just in case\n\n\t\tthis.x = ( m32 - m23 ) / s;\n\t\tthis.y = ( m13 - m31 ) / s;\n\t\tthis.z = ( m21 - m12 ) / s;\n\t\tthis.w = Math.acos( ( m11 + m22 + m33 - 1 ) / 2 );\n\n\t\treturn this;\n\n\t},\n\n\tmin: function ( v ) {\n\n\t\tthis.x = Math.min( this.x, v.x );\n\t\tthis.y = Math.min( this.y, v.y );\n\t\tthis.z = Math.min( this.z, v.z );\n\t\tthis.w = Math.min( this.w, v.w );\n\n\t\treturn this;\n\n\t},\n\n\tmax: function ( v ) {\n\n\t\tthis.x = Math.max( this.x, v.x );\n\t\tthis.y = Math.max( this.y, v.y );\n\t\tthis.z = Math.max( this.z, v.z );\n\t\tthis.w = Math.max( this.w, v.w );\n\n\t\treturn this;\n\n\t},\n\n\tclamp: function ( min, max ) {\n\n\t\t// This function assumes min < max, if this assumption isn't true it will not operate correctly\n\n\t\tthis.x = Math.max( min.x, Math.min( max.x, this.x ) );\n\t\tthis.y = Math.max( min.y, Math.min( max.y, this.y ) );\n\t\tthis.z = Math.max( min.z, Math.min( max.z, this.z ) );\n\t\tthis.w = Math.max( min.w, Math.min( max.w, this.w ) );\n\n\t\treturn this;\n\n\t},\n\n\tclampScalar: function () {\n\n\t\tvar min, max;\n\n\t\treturn function clampScalar( minVal, maxVal ) {\n\n\t\t\tif ( min === undefined ) {\n\n\t\t\t\tmin = new Vector4();\n\t\t\t\tmax = new Vector4();\n\n\t\t\t}\n\n\t\t\tmin.set( minVal, minVal, minVal, minVal );\n\t\t\tmax.set( maxVal, maxVal, maxVal, maxVal );\n\n\t\t\treturn this.clamp( min, max );\n\n\t\t};\n\n\t}(),\n\n\tfloor: function () {\n\n\t\tthis.x = Math.floor( this.x );\n\t\tthis.y = Math.floor( this.y );\n\t\tthis.z = Math.floor( this.z );\n\t\tthis.w = Math.floor( this.w );\n\n\t\treturn this;\n\n\t},\n\n\tceil: function () {\n\n\t\tthis.x = Math.ceil( this.x );\n\t\tthis.y = Math.ceil( this.y );\n\t\tthis.z = Math.ceil( this.z );\n\t\tthis.w = Math.ceil( this.w );\n\n\t\treturn this;\n\n\t},\n\n\tround: function () {\n\n\t\tthis.x = Math.round( this.x );\n\t\tthis.y = Math.round( this.y );\n\t\tthis.z = Math.round( this.z );\n\t\tthis.w = Math.round( this.w );\n\n\t\treturn this;\n\n\t},\n\n\troundToZero: function () {\n\n\t\tthis.x = ( this.x < 0 ) ? Math.ceil( this.x ) : Math.floor( this.x );\n\t\tthis.y = ( this.y < 0 ) ? Math.ceil( this.y ) : Math.floor( this.y );\n\t\tthis.z = ( this.z < 0 ) ? Math.ceil( this.z ) : Math.floor( this.z );\n\t\tthis.w = ( this.w < 0 ) ? Math.ceil( this.w ) : Math.floor( this.w );\n\n\t\treturn this;\n\n\t},\n\n\tnegate: function () {\n\n\t\tthis.x = - this.x;\n\t\tthis.y = - this.y;\n\t\tthis.z = - this.z;\n\t\tthis.w = - this.w;\n\n\t\treturn this;\n\n\t},\n\n\tdot: function ( v ) {\n\n\t\treturn this.x * v.x + this.y * v.y + this.z * v.z + this.w * v.w;\n\n\t},\n\n\tlengthSq: function () {\n\n\t\treturn this.x * this.x + this.y * this.y + this.z * this.z + this.w * this.w;\n\n\t},\n\n\tlength: function () {\n\n\t\treturn Math.sqrt( this.x * this.x + this.y * this.y + this.z * this.z + this.w * this.w );\n\n\t},\n\n\tlengthManhattan: function () {\n\n\t\treturn Math.abs( this.x ) + Math.abs( this.y ) + Math.abs( this.z ) + Math.abs( this.w );\n\n\t},\n\n\tnormalize: function () {\n\n\t\treturn this.divideScalar( this.length() );\n\n\t},\n\n\tsetLength: function ( length ) {\n\n\t\treturn this.multiplyScalar( length / this.length() );\n\n\t},\n\n\tlerp: function ( v, alpha ) {\n\n\t\tthis.x += ( v.x - this.x ) * alpha;\n\t\tthis.y += ( v.y - this.y ) * alpha;\n\t\tthis.z += ( v.z - this.z ) * alpha;\n\t\tthis.w += ( v.w - this.w ) * alpha;\n\n\t\treturn this;\n\n\t},\n\n\tlerpVectors: function ( v1, v2, alpha ) {\n\n\t\treturn this.subVectors( v2, v1 ).multiplyScalar( alpha ).add( v1 );\n\n\t},\n\n\tequals: function ( v ) {\n\n\t\treturn ( ( v.x === this.x ) && ( v.y === this.y ) && ( v.z === this.z ) && ( v.w === this.w ) );\n\n\t},\n\n\tfromArray: function ( array, offset ) {\n\n\t\tif ( offset === undefined ) offset = 0;\n\n\t\tthis.x = array[ offset ];\n\t\tthis.y = array[ offset + 1 ];\n\t\tthis.z = array[ offset + 2 ];\n\t\tthis.w = array[ offset + 3 ];\n\n\t\treturn this;\n\n\t},\n\n\ttoArray: function ( array, offset ) {\n\n\t\tif ( array === undefined ) array = [];\n\t\tif ( offset === undefined ) offset = 0;\n\n\t\tarray[ offset ] = this.x;\n\t\tarray[ offset + 1 ] = this.y;\n\t\tarray[ offset + 2 ] = this.z;\n\t\tarray[ offset + 3 ] = this.w;\n\n\t\treturn array;\n\n\t},\n\n\tfromAttribute: function ( attribute, index, offset ) {\n\n\t\tif ( offset === undefined ) offset = 0;\n\n\t\tindex = index * attribute.itemSize + offset;\n\n\t\tthis.x = attribute.array[ index ];\n\t\tthis.y = attribute.array[ index + 1 ];\n\t\tthis.z = attribute.array[ index + 2 ];\n\t\tthis.w = attribute.array[ index + 3 ];\n\n\t\treturn this;\n\n\t}\n\n};\n\n\nexport { Vector4 };\n","import { EventDispatcher } from '../core/EventDispatcher';\nimport { Texture } from '../textures/Texture';\nimport { LinearFilter } from '../constants';\nimport { Vector4 } from '../math/Vector4';\nimport { _Math } from '../math/Math';\n\n/**\n * @author szimek / https://github.com/szimek/\n * @author alteredq / http://alteredqualia.com/\n * @author Marius Kintel / https://github.com/kintel\n */\n\n/*\n In options, we can specify:\n * Texture parameters for an auto-generated target texture\n * depthBuffer/stencilBuffer: Booleans to indicate if we should generate these buffers\n*/\nfunction WebGLRenderTarget( width, height, options ) {\n\n\tthis.uuid = _Math.generateUUID();\n\n\tthis.width = width;\n\tthis.height = height;\n\n\tthis.scissor = new Vector4( 0, 0, width, height );\n\tthis.scissorTest = false;\n\n\tthis.viewport = new Vector4( 0, 0, width, height );\n\n\toptions = options || {};\n\n\tif ( options.minFilter === undefined ) options.minFilter = LinearFilter;\n\n\tthis.texture = new Texture( undefined, undefined, options.wrapS, options.wrapT, options.magFilter, options.minFilter, options.format, options.type, options.anisotropy, options.encoding );\n\n\tthis.depthBuffer = options.depthBuffer !== undefined ? options.depthBuffer : true;\n\tthis.stencilBuffer = options.stencilBuffer !== undefined ? options.stencilBuffer : true;\n\tthis.depthTexture = options.depthTexture !== undefined ? options.depthTexture : null;\n\n}\n\nObject.assign( WebGLRenderTarget.prototype, EventDispatcher.prototype, {\n\n\tisWebGLRenderTarget: true,\n\n\tsetSize: function ( width, height ) {\n\n\t\tif ( this.width !== width || this.height !== height ) {\n\n\t\t\tthis.width = width;\n\t\t\tthis.height = height;\n\n\t\t\tthis.dispose();\n\n\t\t}\n\n\t\tthis.viewport.set( 0, 0, width, height );\n\t\tthis.scissor.set( 0, 0, width, height );\n\n\t},\n\n\tclone: function () {\n\n\t\treturn new this.constructor().copy( this );\n\n\t},\n\n\tcopy: function ( source ) {\n\n\t\tthis.width = source.width;\n\t\tthis.height = source.height;\n\n\t\tthis.viewport.copy( source.viewport );\n\n\t\tthis.texture = source.texture.clone();\n\n\t\tthis.depthBuffer = source.depthBuffer;\n\t\tthis.stencilBuffer = source.stencilBuffer;\n\t\tthis.depthTexture = source.depthTexture;\n\n\t\treturn this;\n\n\t},\n\n\tdispose: function () {\n\n\t\tthis.dispatchEvent( { type: 'dispose' } );\n\n\t}\n\n} );\n\n\nexport { WebGLRenderTarget };\n","import { WebGLRenderTarget } from './WebGLRenderTarget';\n\n/**\n * @author alteredq / http://alteredqualia.com\n */\n\nfunction WebGLRenderTargetCube( width, height, options ) {\n\n\tWebGLRenderTarget.call( this, width, height, options );\n\n\tthis.activeCubeFace = 0; // PX 0, NX 1, PY 2, NY 3, PZ 4, NZ 5\n\tthis.activeMipMapLevel = 0;\n\n}\n\nWebGLRenderTargetCube.prototype = Object.create( WebGLRenderTarget.prototype );\nWebGLRenderTargetCube.prototype.constructor = WebGLRenderTargetCube;\n\nWebGLRenderTargetCube.prototype.isWebGLRenderTargetCube = true;\n\n\nexport { WebGLRenderTargetCube };\n","import { Vector3 } from './Vector3';\n\n/**\n * @author mikael emtinger / http://gomo.se/\n * @author alteredq / http://alteredqualia.com/\n * @author WestLangley / http://github.com/WestLangley\n * @author bhouston / http://clara.io\n */\n\nfunction Quaternion( x, y, z, w ) {\n\n\tthis._x = x || 0;\n\tthis._y = y || 0;\n\tthis._z = z || 0;\n\tthis._w = ( w !== undefined ) ? w : 1;\n\n}\n\nQuaternion.prototype = {\n\n\tconstructor: Quaternion,\n\n\tget x () {\n\n\t\treturn this._x;\n\n\t},\n\n\tset x ( value ) {\n\n\t\tthis._x = value;\n\t\tthis.onChangeCallback();\n\n\t},\n\n\tget y () {\n\n\t\treturn this._y;\n\n\t},\n\n\tset y ( value ) {\n\n\t\tthis._y = value;\n\t\tthis.onChangeCallback();\n\n\t},\n\n\tget z () {\n\n\t\treturn this._z;\n\n\t},\n\n\tset z ( value ) {\n\n\t\tthis._z = value;\n\t\tthis.onChangeCallback();\n\n\t},\n\n\tget w () {\n\n\t\treturn this._w;\n\n\t},\n\n\tset w ( value ) {\n\n\t\tthis._w = value;\n\t\tthis.onChangeCallback();\n\n\t},\n\n\tset: function ( x, y, z, w ) {\n\n\t\tthis._x = x;\n\t\tthis._y = y;\n\t\tthis._z = z;\n\t\tthis._w = w;\n\n\t\tthis.onChangeCallback();\n\n\t\treturn this;\n\n\t},\n\n\tclone: function () {\n\n\t\treturn new this.constructor( this._x, this._y, this._z, this._w );\n\n\t},\n\n\tcopy: function ( quaternion ) {\n\n\t\tthis._x = quaternion.x;\n\t\tthis._y = quaternion.y;\n\t\tthis._z = quaternion.z;\n\t\tthis._w = quaternion.w;\n\n\t\tthis.onChangeCallback();\n\n\t\treturn this;\n\n\t},\n\n\tsetFromEuler: function ( euler, update ) {\n\n\t\tif ( (euler && euler.isEuler) === false ) {\n\n\t\t\tthrow new Error( 'THREE.Quaternion: .setFromEuler() now expects an Euler rotation rather than a Vector3 and order.' );\n\n\t\t}\n\n\t\t// http://www.mathworks.com/matlabcentral/fileexchange/\n\t\t// \t20696-function-to-convert-between-dcm-euler-angles-quaternions-and-euler-vectors/\n\t\t//\tcontent/SpinCalc.m\n\n\t\tvar c1 = Math.cos( euler._x / 2 );\n\t\tvar c2 = Math.cos( euler._y / 2 );\n\t\tvar c3 = Math.cos( euler._z / 2 );\n\t\tvar s1 = Math.sin( euler._x / 2 );\n\t\tvar s2 = Math.sin( euler._y / 2 );\n\t\tvar s3 = Math.sin( euler._z / 2 );\n\n\t\tvar order = euler.order;\n\n\t\tif ( order === 'XYZ' ) {\n\n\t\t\tthis._x = s1 * c2 * c3 + c1 * s2 * s3;\n\t\t\tthis._y = c1 * s2 * c3 - s1 * c2 * s3;\n\t\t\tthis._z = c1 * c2 * s3 + s1 * s2 * c3;\n\t\t\tthis._w = c1 * c2 * c3 - s1 * s2 * s3;\n\n\t\t} else if ( order === 'YXZ' ) {\n\n\t\t\tthis._x = s1 * c2 * c3 + c1 * s2 * s3;\n\t\t\tthis._y = c1 * s2 * c3 - s1 * c2 * s3;\n\t\t\tthis._z = c1 * c2 * s3 - s1 * s2 * c3;\n\t\t\tthis._w = c1 * c2 * c3 + s1 * s2 * s3;\n\n\t\t} else if ( order === 'ZXY' ) {\n\n\t\t\tthis._x = s1 * c2 * c3 - c1 * s2 * s3;\n\t\t\tthis._y = c1 * s2 * c3 + s1 * c2 * s3;\n\t\t\tthis._z = c1 * c2 * s3 + s1 * s2 * c3;\n\t\t\tthis._w = c1 * c2 * c3 - s1 * s2 * s3;\n\n\t\t} else if ( order === 'ZYX' ) {\n\n\t\t\tthis._x = s1 * c2 * c3 - c1 * s2 * s3;\n\t\t\tthis._y = c1 * s2 * c3 + s1 * c2 * s3;\n\t\t\tthis._z = c1 * c2 * s3 - s1 * s2 * c3;\n\t\t\tthis._w = c1 * c2 * c3 + s1 * s2 * s3;\n\n\t\t} else if ( order === 'YZX' ) {\n\n\t\t\tthis._x = s1 * c2 * c3 + c1 * s2 * s3;\n\t\t\tthis._y = c1 * s2 * c3 + s1 * c2 * s3;\n\t\t\tthis._z = c1 * c2 * s3 - s1 * s2 * c3;\n\t\t\tthis._w = c1 * c2 * c3 - s1 * s2 * s3;\n\n\t\t} else if ( order === 'XZY' ) {\n\n\t\t\tthis._x = s1 * c2 * c3 - c1 * s2 * s3;\n\t\t\tthis._y = c1 * s2 * c3 - s1 * c2 * s3;\n\t\t\tthis._z = c1 * c2 * s3 + s1 * s2 * c3;\n\t\t\tthis._w = c1 * c2 * c3 + s1 * s2 * s3;\n\n\t\t}\n\n\t\tif ( update !== false ) this.onChangeCallback();\n\n\t\treturn this;\n\n\t},\n\n\tsetFromAxisAngle: function ( axis, angle ) {\n\n\t\t// http://www.euclideanspace.com/maths/geometry/rotations/conversions/angleToQuaternion/index.htm\n\n\t\t// assumes axis is normalized\n\n\t\tvar halfAngle = angle / 2, s = Math.sin( halfAngle );\n\n\t\tthis._x = axis.x * s;\n\t\tthis._y = axis.y * s;\n\t\tthis._z = axis.z * s;\n\t\tthis._w = Math.cos( halfAngle );\n\n\t\tthis.onChangeCallback();\n\n\t\treturn this;\n\n\t},\n\n\tsetFromRotationMatrix: function ( m ) {\n\n\t\t// http://www.euclideanspace.com/maths/geometry/rotations/conversions/matrixToQuaternion/index.htm\n\n\t\t// assumes the upper 3x3 of m is a pure rotation matrix (i.e, unscaled)\n\n\t\tvar te = m.elements,\n\n\t\t\tm11 = te[ 0 ], m12 = te[ 4 ], m13 = te[ 8 ],\n\t\t\tm21 = te[ 1 ], m22 = te[ 5 ], m23 = te[ 9 ],\n\t\t\tm31 = te[ 2 ], m32 = te[ 6 ], m33 = te[ 10 ],\n\n\t\t\ttrace = m11 + m22 + m33,\n\t\t\ts;\n\n\t\tif ( trace > 0 ) {\n\n\t\t\ts = 0.5 / Math.sqrt( trace + 1.0 );\n\n\t\t\tthis._w = 0.25 / s;\n\t\t\tthis._x = ( m32 - m23 ) * s;\n\t\t\tthis._y = ( m13 - m31 ) * s;\n\t\t\tthis._z = ( m21 - m12 ) * s;\n\n\t\t} else if ( m11 > m22 && m11 > m33 ) {\n\n\t\t\ts = 2.0 * Math.sqrt( 1.0 + m11 - m22 - m33 );\n\n\t\t\tthis._w = ( m32 - m23 ) / s;\n\t\t\tthis._x = 0.25 * s;\n\t\t\tthis._y = ( m12 + m21 ) / s;\n\t\t\tthis._z = ( m13 + m31 ) / s;\n\n\t\t} else if ( m22 > m33 ) {\n\n\t\t\ts = 2.0 * Math.sqrt( 1.0 + m22 - m11 - m33 );\n\n\t\t\tthis._w = ( m13 - m31 ) / s;\n\t\t\tthis._x = ( m12 + m21 ) / s;\n\t\t\tthis._y = 0.25 * s;\n\t\t\tthis._z = ( m23 + m32 ) / s;\n\n\t\t} else {\n\n\t\t\ts = 2.0 * Math.sqrt( 1.0 + m33 - m11 - m22 );\n\n\t\t\tthis._w = ( m21 - m12 ) / s;\n\t\t\tthis._x = ( m13 + m31 ) / s;\n\t\t\tthis._y = ( m23 + m32 ) / s;\n\t\t\tthis._z = 0.25 * s;\n\n\t\t}\n\n\t\tthis.onChangeCallback();\n\n\t\treturn this;\n\n\t},\n\n\tsetFromUnitVectors: function () {\n\n\t\t// http://lolengine.net/blog/2014/02/24/quaternion-from-two-vectors-final\n\n\t\t// assumes direction vectors vFrom and vTo are normalized\n\n\t\tvar v1, r;\n\n\t\tvar EPS = 0.000001;\n\n\t\treturn function setFromUnitVectors( vFrom, vTo ) {\n\n\t\t\tif ( v1 === undefined ) v1 = new Vector3();\n\n\t\t\tr = vFrom.dot( vTo ) + 1;\n\n\t\t\tif ( r < EPS ) {\n\n\t\t\t\tr = 0;\n\n\t\t\t\tif ( Math.abs( vFrom.x ) > Math.abs( vFrom.z ) ) {\n\n\t\t\t\t\tv1.set( - vFrom.y, vFrom.x, 0 );\n\n\t\t\t\t} else {\n\n\t\t\t\t\tv1.set( 0, - vFrom.z, vFrom.y );\n\n\t\t\t\t}\n\n\t\t\t} else {\n\n\t\t\t\tv1.crossVectors( vFrom, vTo );\n\n\t\t\t}\n\n\t\t\tthis._x = v1.x;\n\t\t\tthis._y = v1.y;\n\t\t\tthis._z = v1.z;\n\t\t\tthis._w = r;\n\n\t\t\treturn this.normalize();\n\n\t\t};\n\n\t}(),\n\n\tinverse: function () {\n\n\t\treturn this.conjugate().normalize();\n\n\t},\n\n\tconjugate: function () {\n\n\t\tthis._x *= - 1;\n\t\tthis._y *= - 1;\n\t\tthis._z *= - 1;\n\n\t\tthis.onChangeCallback();\n\n\t\treturn this;\n\n\t},\n\n\tdot: function ( v ) {\n\n\t\treturn this._x * v._x + this._y * v._y + this._z * v._z + this._w * v._w;\n\n\t},\n\n\tlengthSq: function () {\n\n\t\treturn this._x * this._x + this._y * this._y + this._z * this._z + this._w * this._w;\n\n\t},\n\n\tlength: function () {\n\n\t\treturn Math.sqrt( this._x * this._x + this._y * this._y + this._z * this._z + this._w * this._w );\n\n\t},\n\n\tnormalize: function () {\n\n\t\tvar l = this.length();\n\n\t\tif ( l === 0 ) {\n\n\t\t\tthis._x = 0;\n\t\t\tthis._y = 0;\n\t\t\tthis._z = 0;\n\t\t\tthis._w = 1;\n\n\t\t} else {\n\n\t\t\tl = 1 / l;\n\n\t\t\tthis._x = this._x * l;\n\t\t\tthis._y = this._y * l;\n\t\t\tthis._z = this._z * l;\n\t\t\tthis._w = this._w * l;\n\n\t\t}\n\n\t\tthis.onChangeCallback();\n\n\t\treturn this;\n\n\t},\n\n\tmultiply: function ( q, p ) {\n\n\t\tif ( p !== undefined ) {\n\n\t\t\tconsole.warn( 'THREE.Quaternion: .multiply() now only accepts one argument. Use .multiplyQuaternions( a, b ) instead.' );\n\t\t\treturn this.multiplyQuaternions( q, p );\n\n\t\t}\n\n\t\treturn this.multiplyQuaternions( this, q );\n\n\t},\n\n\tpremultiply: function ( q ) {\n\n\t\treturn this.multiplyQuaternions( q, this );\n\n\t},\n\n\tmultiplyQuaternions: function ( a, b ) {\n\n\t\t// from http://www.euclideanspace.com/maths/algebra/realNormedAlgebra/quaternions/code/index.htm\n\n\t\tvar qax = a._x, qay = a._y, qaz = a._z, qaw = a._w;\n\t\tvar qbx = b._x, qby = b._y, qbz = b._z, qbw = b._w;\n\n\t\tthis._x = qax * qbw + qaw * qbx + qay * qbz - qaz * qby;\n\t\tthis._y = qay * qbw + qaw * qby + qaz * qbx - qax * qbz;\n\t\tthis._z = qaz * qbw + qaw * qbz + qax * qby - qay * qbx;\n\t\tthis._w = qaw * qbw - qax * qbx - qay * qby - qaz * qbz;\n\n\t\tthis.onChangeCallback();\n\n\t\treturn this;\n\n\t},\n\n\tslerp: function ( qb, t ) {\n\n\t\tif ( t === 0 ) return this;\n\t\tif ( t === 1 ) return this.copy( qb );\n\n\t\tvar x = this._x, y = this._y, z = this._z, w = this._w;\n\n\t\t// http://www.euclideanspace.com/maths/algebra/realNormedAlgebra/quaternions/slerp/\n\n\t\tvar cosHalfTheta = w * qb._w + x * qb._x + y * qb._y + z * qb._z;\n\n\t\tif ( cosHalfTheta < 0 ) {\n\n\t\t\tthis._w = - qb._w;\n\t\t\tthis._x = - qb._x;\n\t\t\tthis._y = - qb._y;\n\t\t\tthis._z = - qb._z;\n\n\t\t\tcosHalfTheta = - cosHalfTheta;\n\n\t\t} else {\n\n\t\t\tthis.copy( qb );\n\n\t\t}\n\n\t\tif ( cosHalfTheta >= 1.0 ) {\n\n\t\t\tthis._w = w;\n\t\t\tthis._x = x;\n\t\t\tthis._y = y;\n\t\t\tthis._z = z;\n\n\t\t\treturn this;\n\n\t\t}\n\n\t\tvar sinHalfTheta = Math.sqrt( 1.0 - cosHalfTheta * cosHalfTheta );\n\n\t\tif ( Math.abs( sinHalfTheta ) < 0.001 ) {\n\n\t\t\tthis._w = 0.5 * ( w + this._w );\n\t\t\tthis._x = 0.5 * ( x + this._x );\n\t\t\tthis._y = 0.5 * ( y + this._y );\n\t\t\tthis._z = 0.5 * ( z + this._z );\n\n\t\t\treturn this;\n\n\t\t}\n\n\t\tvar halfTheta = Math.atan2( sinHalfTheta, cosHalfTheta );\n\t\tvar ratioA = Math.sin( ( 1 - t ) * halfTheta ) / sinHalfTheta,\n\t\tratioB = Math.sin( t * halfTheta ) / sinHalfTheta;\n\n\t\tthis._w = ( w * ratioA + this._w * ratioB );\n\t\tthis._x = ( x * ratioA + this._x * ratioB );\n\t\tthis._y = ( y * ratioA + this._y * ratioB );\n\t\tthis._z = ( z * ratioA + this._z * ratioB );\n\n\t\tthis.onChangeCallback();\n\n\t\treturn this;\n\n\t},\n\n\tequals: function ( quaternion ) {\n\n\t\treturn ( quaternion._x === this._x ) && ( quaternion._y === this._y ) && ( quaternion._z === this._z ) && ( quaternion._w === this._w );\n\n\t},\n\n\tfromArray: function ( array, offset ) {\n\n\t\tif ( offset === undefined ) offset = 0;\n\n\t\tthis._x = array[ offset ];\n\t\tthis._y = array[ offset + 1 ];\n\t\tthis._z = array[ offset + 2 ];\n\t\tthis._w = array[ offset + 3 ];\n\n\t\tthis.onChangeCallback();\n\n\t\treturn this;\n\n\t},\n\n\ttoArray: function ( array, offset ) {\n\n\t\tif ( array === undefined ) array = [];\n\t\tif ( offset === undefined ) offset = 0;\n\n\t\tarray[ offset ] = this._x;\n\t\tarray[ offset + 1 ] = this._y;\n\t\tarray[ offset + 2 ] = this._z;\n\t\tarray[ offset + 3 ] = this._w;\n\n\t\treturn array;\n\n\t},\n\n\tonChange: function ( callback ) {\n\n\t\tthis.onChangeCallback = callback;\n\n\t\treturn this;\n\n\t},\n\n\tonChangeCallback: function () {}\n\n};\n\nObject.assign( Quaternion, {\n\n\tslerp: function( qa, qb, qm, t ) {\n\n\t\treturn qm.copy( qa ).slerp( qb, t );\n\n\t},\n\n\tslerpFlat: function(\n\t\t\tdst, dstOffset, src0, srcOffset0, src1, srcOffset1, t ) {\n\n\t\t// fuzz-free, array-based Quaternion SLERP operation\n\n\t\tvar x0 = src0[ srcOffset0 + 0 ],\n\t\t\ty0 = src0[ srcOffset0 + 1 ],\n\t\t\tz0 = src0[ srcOffset0 + 2 ],\n\t\t\tw0 = src0[ srcOffset0 + 3 ],\n\n\t\t\tx1 = src1[ srcOffset1 + 0 ],\n\t\t\ty1 = src1[ srcOffset1 + 1 ],\n\t\t\tz1 = src1[ srcOffset1 + 2 ],\n\t\t\tw1 = src1[ srcOffset1 + 3 ];\n\n\t\tif ( w0 !== w1 || x0 !== x1 || y0 !== y1 || z0 !== z1 ) {\n\n\t\t\tvar s = 1 - t,\n\n\t\t\t\tcos = x0 * x1 + y0 * y1 + z0 * z1 + w0 * w1,\n\n\t\t\t\tdir = ( cos >= 0 ? 1 : - 1 ),\n\t\t\t\tsqrSin = 1 - cos * cos;\n\n\t\t\t// Skip the Slerp for tiny steps to avoid numeric problems:\n\t\t\tif ( sqrSin > Number.EPSILON ) {\n\n\t\t\t\tvar sin = Math.sqrt( sqrSin ),\n\t\t\t\t\tlen = Math.atan2( sin, cos * dir );\n\n\t\t\t\ts = Math.sin( s * len ) / sin;\n\t\t\t\tt = Math.sin( t * len ) / sin;\n\n\t\t\t}\n\n\t\t\tvar tDir = t * dir;\n\n\t\t\tx0 = x0 * s + x1 * tDir;\n\t\t\ty0 = y0 * s + y1 * tDir;\n\t\t\tz0 = z0 * s + z1 * tDir;\n\t\t\tw0 = w0 * s + w1 * tDir;\n\n\t\t\t// Normalize in case we just did a lerp:\n\t\t\tif ( s === 1 - t ) {\n\n\t\t\t\tvar f = 1 / Math.sqrt( x0 * x0 + y0 * y0 + z0 * z0 + w0 * w0 );\n\n\t\t\t\tx0 *= f;\n\t\t\t\ty0 *= f;\n\t\t\t\tz0 *= f;\n\t\t\t\tw0 *= f;\n\n\t\t\t}\n\n\t\t}\n\n\t\tdst[ dstOffset ] = x0;\n\t\tdst[ dstOffset + 1 ] = y0;\n\t\tdst[ dstOffset + 2 ] = z0;\n\t\tdst[ dstOffset + 3 ] = w0;\n\n\t}\n\n} );\n\n\nexport { Quaternion };\n","import { _Math } from './Math';\nimport { Matrix4 } from './Matrix4';\nimport { Quaternion } from './Quaternion';\n\n/**\n * @author mrdoob / http://mrdoob.com/\n * @author *kile / http://kile.stravaganza.org/\n * @author philogb / http://blog.thejit.org/\n * @author mikael emtinger / http://gomo.se/\n * @author egraether / http://egraether.com/\n * @author WestLangley / http://github.com/WestLangley\n */\n\nfunction Vector3( x, y, z ) {\n\n\tthis.x = x || 0;\n\tthis.y = y || 0;\n\tthis.z = z || 0;\n\n}\n\nVector3.prototype = {\n\n\tconstructor: Vector3,\n\n\tisVector3: true,\n\n\tset: function ( x, y, z ) {\n\n\t\tthis.x = x;\n\t\tthis.y = y;\n\t\tthis.z = z;\n\n\t\treturn this;\n\n\t},\n\n\tsetScalar: function ( scalar ) {\n\n\t\tthis.x = scalar;\n\t\tthis.y = scalar;\n\t\tthis.z = scalar;\n\n\t\treturn this;\n\n\t},\n\n\tsetX: function ( x ) {\n\n\t\tthis.x = x;\n\n\t\treturn this;\n\n\t},\n\n\tsetY: function ( y ) {\n\n\t\tthis.y = y;\n\n\t\treturn this;\n\n\t},\n\n\tsetZ: function ( z ) {\n\n\t\tthis.z = z;\n\n\t\treturn this;\n\n\t},\n\n\tsetComponent: function ( index, value ) {\n\n\t\tswitch ( index ) {\n\n\t\t\tcase 0: this.x = value; break;\n\t\t\tcase 1: this.y = value; break;\n\t\t\tcase 2: this.z = value; break;\n\t\t\tdefault: throw new Error( 'index is out of range: ' + index );\n\n\t\t}\n\t\t\n\t\treturn this;\n\n\t},\n\n\tgetComponent: function ( index ) {\n\n\t\tswitch ( index ) {\n\n\t\t\tcase 0: return this.x;\n\t\t\tcase 1: return this.y;\n\t\t\tcase 2: return this.z;\n\t\t\tdefault: throw new Error( 'index is out of range: ' + index );\n\n\t\t}\n\n\t},\n\n\tclone: function () {\n\n\t\treturn new this.constructor( this.x, this.y, this.z );\n\n\t},\n\n\tcopy: function ( v ) {\n\n\t\tthis.x = v.x;\n\t\tthis.y = v.y;\n\t\tthis.z = v.z;\n\n\t\treturn this;\n\n\t},\n\n\tadd: function ( v, w ) {\n\n\t\tif ( w !== undefined ) {\n\n\t\t\tconsole.warn( 'THREE.Vector3: .add() now only accepts one argument. Use .addVectors( a, b ) instead.' );\n\t\t\treturn this.addVectors( v, w );\n\n\t\t}\n\n\t\tthis.x += v.x;\n\t\tthis.y += v.y;\n\t\tthis.z += v.z;\n\n\t\treturn this;\n\n\t},\n\n\taddScalar: function ( s ) {\n\n\t\tthis.x += s;\n\t\tthis.y += s;\n\t\tthis.z += s;\n\n\t\treturn this;\n\n\t},\n\n\taddVectors: function ( a, b ) {\n\n\t\tthis.x = a.x + b.x;\n\t\tthis.y = a.y + b.y;\n\t\tthis.z = a.z + b.z;\n\n\t\treturn this;\n\n\t},\n\n\taddScaledVector: function ( v, s ) {\n\n\t\tthis.x += v.x * s;\n\t\tthis.y += v.y * s;\n\t\tthis.z += v.z * s;\n\n\t\treturn this;\n\n\t},\n\n\tsub: function ( v, w ) {\n\n\t\tif ( w !== undefined ) {\n\n\t\t\tconsole.warn( 'THREE.Vector3: .sub() now only accepts one argument. Use .subVectors( a, b ) instead.' );\n\t\t\treturn this.subVectors( v, w );\n\n\t\t}\n\n\t\tthis.x -= v.x;\n\t\tthis.y -= v.y;\n\t\tthis.z -= v.z;\n\n\t\treturn this;\n\n\t},\n\n\tsubScalar: function ( s ) {\n\n\t\tthis.x -= s;\n\t\tthis.y -= s;\n\t\tthis.z -= s;\n\n\t\treturn this;\n\n\t},\n\n\tsubVectors: function ( a, b ) {\n\n\t\tthis.x = a.x - b.x;\n\t\tthis.y = a.y - b.y;\n\t\tthis.z = a.z - b.z;\n\n\t\treturn this;\n\n\t},\n\n\tmultiply: function ( v, w ) {\n\n\t\tif ( w !== undefined ) {\n\n\t\t\tconsole.warn( 'THREE.Vector3: .multiply() now only accepts one argument. Use .multiplyVectors( a, b ) instead.' );\n\t\t\treturn this.multiplyVectors( v, w );\n\n\t\t}\n\n\t\tthis.x *= v.x;\n\t\tthis.y *= v.y;\n\t\tthis.z *= v.z;\n\n\t\treturn this;\n\n\t},\n\n\tmultiplyScalar: function ( scalar ) {\n\n\t\tif ( isFinite( scalar ) ) {\n\n\t\t\tthis.x *= scalar;\n\t\t\tthis.y *= scalar;\n\t\t\tthis.z *= scalar;\n\n\t\t} else {\n\n\t\t\tthis.x = 0;\n\t\t\tthis.y = 0;\n\t\t\tthis.z = 0;\n\n\t\t}\n\n\t\treturn this;\n\n\t},\n\n\tmultiplyVectors: function ( a, b ) {\n\n\t\tthis.x = a.x * b.x;\n\t\tthis.y = a.y * b.y;\n\t\tthis.z = a.z * b.z;\n\n\t\treturn this;\n\n\t},\n\n\tapplyEuler: function () {\n\n\t\tvar quaternion;\n\n\t\treturn function applyEuler( euler ) {\n\n\t\t\tif ( (euler && euler.isEuler) === false ) {\n\n\t\t\t\tconsole.error( 'THREE.Vector3: .applyEuler() now expects an Euler rotation rather than a Vector3 and order.' );\n\n\t\t\t}\n\n\t\t\tif ( quaternion === undefined ) quaternion = new Quaternion();\n\n\t\t\treturn this.applyQuaternion( quaternion.setFromEuler( euler ) );\n\n\t\t};\n\n\t}(),\n\n\tapplyAxisAngle: function () {\n\n\t\tvar quaternion;\n\n\t\treturn function applyAxisAngle( axis, angle ) {\n\n\t\t\tif ( quaternion === undefined ) quaternion = new Quaternion();\n\n\t\t\treturn this.applyQuaternion( quaternion.setFromAxisAngle( axis, angle ) );\n\n\t\t};\n\n\t}(),\n\n\tapplyMatrix3: function ( m ) {\n\n\t\tvar x = this.x, y = this.y, z = this.z;\n\t\tvar e = m.elements;\n\n\t\tthis.x = e[ 0 ] * x + e[ 3 ] * y + e[ 6 ] * z;\n\t\tthis.y = e[ 1 ] * x + e[ 4 ] * y + e[ 7 ] * z;\n\t\tthis.z = e[ 2 ] * x + e[ 5 ] * y + e[ 8 ] * z;\n\n\t\treturn this;\n\n\t},\n\n\tapplyMatrix4: function ( m ) {\n\n\t\t// input: THREE.Matrix4 affine matrix\n\n\t\tvar x = this.x, y = this.y, z = this.z;\n\t\tvar e = m.elements;\n\n\t\tthis.x = e[ 0 ] * x + e[ 4 ] * y + e[ 8 ] * z + e[ 12 ];\n\t\tthis.y = e[ 1 ] * x + e[ 5 ] * y + e[ 9 ] * z + e[ 13 ];\n\t\tthis.z = e[ 2 ] * x + e[ 6 ] * y + e[ 10 ] * z + e[ 14 ];\n\n\t\treturn this;\n\n\t},\n\n\tapplyProjection: function ( m ) {\n\n\t\t// input: THREE.Matrix4 projection matrix\n\n\t\tvar x = this.x, y = this.y, z = this.z;\n\t\tvar e = m.elements;\n\t\tvar d = 1 / ( e[ 3 ] * x + e[ 7 ] * y + e[ 11 ] * z + e[ 15 ] ); // perspective divide\n\n\t\tthis.x = ( e[ 0 ] * x + e[ 4 ] * y + e[ 8 ] * z + e[ 12 ] ) * d;\n\t\tthis.y = ( e[ 1 ] * x + e[ 5 ] * y + e[ 9 ] * z + e[ 13 ] ) * d;\n\t\tthis.z = ( e[ 2 ] * x + e[ 6 ] * y + e[ 10 ] * z + e[ 14 ] ) * d;\n\n\t\treturn this;\n\n\t},\n\n\tapplyQuaternion: function ( q ) {\n\n\t\tvar x = this.x, y = this.y, z = this.z;\n\t\tvar qx = q.x, qy = q.y, qz = q.z, qw = q.w;\n\n\t\t// calculate quat * vector\n\n\t\tvar ix = qw * x + qy * z - qz * y;\n\t\tvar iy = qw * y + qz * x - qx * z;\n\t\tvar iz = qw * z + qx * y - qy * x;\n\t\tvar iw = - qx * x - qy * y - qz * z;\n\n\t\t// calculate result * inverse quat\n\n\t\tthis.x = ix * qw + iw * - qx + iy * - qz - iz * - qy;\n\t\tthis.y = iy * qw + iw * - qy + iz * - qx - ix * - qz;\n\t\tthis.z = iz * qw + iw * - qz + ix * - qy - iy * - qx;\n\n\t\treturn this;\n\n\t},\n\n\tproject: function () {\n\n\t\tvar matrix;\n\n\t\treturn function project( camera ) {\n\n\t\t\tif ( matrix === undefined ) matrix = new Matrix4();\n\n\t\t\tmatrix.multiplyMatrices( camera.projectionMatrix, matrix.getInverse( camera.matrixWorld ) );\n\t\t\treturn this.applyProjection( matrix );\n\n\t\t};\n\n\t}(),\n\n\tunproject: function () {\n\n\t\tvar matrix;\n\n\t\treturn function unproject( camera ) {\n\n\t\t\tif ( matrix === undefined ) matrix = new Matrix4();\n\n\t\t\tmatrix.multiplyMatrices( camera.matrixWorld, matrix.getInverse( camera.projectionMatrix ) );\n\t\t\treturn this.applyProjection( matrix );\n\n\t\t};\n\n\t}(),\n\n\ttransformDirection: function ( m ) {\n\n\t\t// input: THREE.Matrix4 affine matrix\n\t\t// vector interpreted as a direction\n\n\t\tvar x = this.x, y = this.y, z = this.z;\n\t\tvar e = m.elements;\n\n\t\tthis.x = e[ 0 ] * x + e[ 4 ] * y + e[ 8 ] * z;\n\t\tthis.y = e[ 1 ] * x + e[ 5 ] * y + e[ 9 ] * z;\n\t\tthis.z = e[ 2 ] * x + e[ 6 ] * y + e[ 10 ] * z;\n\n\t\treturn this.normalize();\n\n\t},\n\n\tdivide: function ( v ) {\n\n\t\tthis.x /= v.x;\n\t\tthis.y /= v.y;\n\t\tthis.z /= v.z;\n\n\t\treturn this;\n\n\t},\n\n\tdivideScalar: function ( scalar ) {\n\n\t\treturn this.multiplyScalar( 1 / scalar );\n\n\t},\n\n\tmin: function ( v ) {\n\n\t\tthis.x = Math.min( this.x, v.x );\n\t\tthis.y = Math.min( this.y, v.y );\n\t\tthis.z = Math.min( this.z, v.z );\n\n\t\treturn this;\n\n\t},\n\n\tmax: function ( v ) {\n\n\t\tthis.x = Math.max( this.x, v.x );\n\t\tthis.y = Math.max( this.y, v.y );\n\t\tthis.z = Math.max( this.z, v.z );\n\n\t\treturn this;\n\n\t},\n\n\tclamp: function ( min, max ) {\n\n\t\t// This function assumes min < max, if this assumption isn't true it will not operate correctly\n\n\t\tthis.x = Math.max( min.x, Math.min( max.x, this.x ) );\n\t\tthis.y = Math.max( min.y, Math.min( max.y, this.y ) );\n\t\tthis.z = Math.max( min.z, Math.min( max.z, this.z ) );\n\n\t\treturn this;\n\n\t},\n\n\tclampScalar: function () {\n\n\t\tvar min, max;\n\n\t\treturn function clampScalar( minVal, maxVal ) {\n\n\t\t\tif ( min === undefined ) {\n\n\t\t\t\tmin = new Vector3();\n\t\t\t\tmax = new Vector3();\n\n\t\t\t}\n\n\t\t\tmin.set( minVal, minVal, minVal );\n\t\t\tmax.set( maxVal, maxVal, maxVal );\n\n\t\t\treturn this.clamp( min, max );\n\n\t\t};\n\n\t}(),\n\n\tclampLength: function ( min, max ) {\n\n\t\tvar length = this.length();\n\n\t\treturn this.multiplyScalar( Math.max( min, Math.min( max, length ) ) / length );\n\n\t},\n\n\tfloor: function () {\n\n\t\tthis.x = Math.floor( this.x );\n\t\tthis.y = Math.floor( this.y );\n\t\tthis.z = Math.floor( this.z );\n\n\t\treturn this;\n\n\t},\n\n\tceil: function () {\n\n\t\tthis.x = Math.ceil( this.x );\n\t\tthis.y = Math.ceil( this.y );\n\t\tthis.z = Math.ceil( this.z );\n\n\t\treturn this;\n\n\t},\n\n\tround: function () {\n\n\t\tthis.x = Math.round( this.x );\n\t\tthis.y = Math.round( this.y );\n\t\tthis.z = Math.round( this.z );\n\n\t\treturn this;\n\n\t},\n\n\troundToZero: function () {\n\n\t\tthis.x = ( this.x < 0 ) ? Math.ceil( this.x ) : Math.floor( this.x );\n\t\tthis.y = ( this.y < 0 ) ? Math.ceil( this.y ) : Math.floor( this.y );\n\t\tthis.z = ( this.z < 0 ) ? Math.ceil( this.z ) : Math.floor( this.z );\n\n\t\treturn this;\n\n\t},\n\n\tnegate: function () {\n\n\t\tthis.x = - this.x;\n\t\tthis.y = - this.y;\n\t\tthis.z = - this.z;\n\n\t\treturn this;\n\n\t},\n\n\tdot: function ( v ) {\n\n\t\treturn this.x * v.x + this.y * v.y + this.z * v.z;\n\n\t},\n\n\tlengthSq: function () {\n\n\t\treturn this.x * this.x + this.y * this.y + this.z * this.z;\n\n\t},\n\n\tlength: function () {\n\n\t\treturn Math.sqrt( this.x * this.x + this.y * this.y + this.z * this.z );\n\n\t},\n\n\tlengthManhattan: function () {\n\n\t\treturn Math.abs( this.x ) + Math.abs( this.y ) + Math.abs( this.z );\n\n\t},\n\n\tnormalize: function () {\n\n\t\treturn this.divideScalar( this.length() );\n\n\t},\n\n\tsetLength: function ( length ) {\n\n\t\treturn this.multiplyScalar( length / this.length() );\n\n\t},\n\n\tlerp: function ( v, alpha ) {\n\n\t\tthis.x += ( v.x - this.x ) * alpha;\n\t\tthis.y += ( v.y - this.y ) * alpha;\n\t\tthis.z += ( v.z - this.z ) * alpha;\n\n\t\treturn this;\n\n\t},\n\n\tlerpVectors: function ( v1, v2, alpha ) {\n\n\t\treturn this.subVectors( v2, v1 ).multiplyScalar( alpha ).add( v1 );\n\n\t},\n\n\tcross: function ( v, w ) {\n\n\t\tif ( w !== undefined ) {\n\n\t\t\tconsole.warn( 'THREE.Vector3: .cross() now only accepts one argument. Use .crossVectors( a, b ) instead.' );\n\t\t\treturn this.crossVectors( v, w );\n\n\t\t}\n\n\t\tvar x = this.x, y = this.y, z = this.z;\n\n\t\tthis.x = y * v.z - z * v.y;\n\t\tthis.y = z * v.x - x * v.z;\n\t\tthis.z = x * v.y - y * v.x;\n\n\t\treturn this;\n\n\t},\n\n\tcrossVectors: function ( a, b ) {\n\n\t\tvar ax = a.x, ay = a.y, az = a.z;\n\t\tvar bx = b.x, by = b.y, bz = b.z;\n\n\t\tthis.x = ay * bz - az * by;\n\t\tthis.y = az * bx - ax * bz;\n\t\tthis.z = ax * by - ay * bx;\n\n\t\treturn this;\n\n\t},\n\n\tprojectOnVector: function ( vector ) {\n\n\t\tvar scalar = vector.dot( this ) / vector.lengthSq();\n\n\t\treturn this.copy( vector ).multiplyScalar( scalar );\n\n\t},\n\n\tprojectOnPlane: function () {\n\n\t\tvar v1;\n\n\t\treturn function projectOnPlane( planeNormal ) {\n\n\t\t\tif ( v1 === undefined ) v1 = new Vector3();\n\n\t\t\tv1.copy( this ).projectOnVector( planeNormal );\n\n\t\t\treturn this.sub( v1 );\n\n\t\t};\n\n\t}(),\n\n\treflect: function () {\n\n\t\t// reflect incident vector off plane orthogonal to normal\n\t\t// normal is assumed to have unit length\n\n\t\tvar v1;\n\n\t\treturn function reflect( normal ) {\n\n\t\t\tif ( v1 === undefined ) v1 = new Vector3();\n\n\t\t\treturn this.sub( v1.copy( normal ).multiplyScalar( 2 * this.dot( normal ) ) );\n\n\t\t};\n\n\t}(),\n\n\tangleTo: function ( v ) {\n\n\t\tvar theta = this.dot( v ) / ( Math.sqrt( this.lengthSq() * v.lengthSq() ) );\n\n\t\t// clamp, to handle numerical problems\n\n\t\treturn Math.acos( _Math.clamp( theta, - 1, 1 ) );\n\n\t},\n\n\tdistanceTo: function ( v ) {\n\n\t\treturn Math.sqrt( this.distanceToSquared( v ) );\n\n\t},\n\n\tdistanceToSquared: function ( v ) {\n\n\t\tvar dx = this.x - v.x, dy = this.y - v.y, dz = this.z - v.z;\n\n\t\treturn dx * dx + dy * dy + dz * dz;\n\n\t},\n\n\tdistanceToManhattan: function ( v ) {\n\n\t\treturn Math.abs( this.x - v.x ) + Math.abs( this.y - v.y ) + Math.abs( this.z - v.z );\n\n\t},\n\n\tsetFromSpherical: function( s ) {\n\n\t\tvar sinPhiRadius = Math.sin( s.phi ) * s.radius;\n\n\t\tthis.x = sinPhiRadius * Math.sin( s.theta );\n\t\tthis.y = Math.cos( s.phi ) * s.radius;\n\t\tthis.z = sinPhiRadius * Math.cos( s.theta );\n\n\t\treturn this;\n\n\t},\n\n\tsetFromMatrixPosition: function ( m ) {\n\n\t\treturn this.setFromMatrixColumn( m, 3 );\n\n\t},\n\n\tsetFromMatrixScale: function ( m ) {\n\n\t\tvar sx = this.setFromMatrixColumn( m, 0 ).length();\n\t\tvar sy = this.setFromMatrixColumn( m, 1 ).length();\n\t\tvar sz = this.setFromMatrixColumn( m, 2 ).length();\n\n\t\tthis.x = sx;\n\t\tthis.y = sy;\n\t\tthis.z = sz;\n\n\t\treturn this;\n\n\t},\n\n\tsetFromMatrixColumn: function ( m, index ) {\n\n\t\tif ( typeof m === 'number' ) {\n\n\t\t\tconsole.warn( 'THREE.Vector3: setFromMatrixColumn now expects ( matrix, index ).' );\n\t\t\tvar temp = m\n\t\t\tm = index;\n\t\t\tindex = temp;\n\n\t\t}\n\n\t\treturn this.fromArray( m.elements, index * 4 );\n\n\t},\n\n\tequals: function ( v ) {\n\n\t\treturn ( ( v.x === this.x ) && ( v.y === this.y ) && ( v.z === this.z ) );\n\n\t},\n\n\tfromArray: function ( array, offset ) {\n\n\t\tif ( offset === undefined ) offset = 0;\n\n\t\tthis.x = array[ offset ];\n\t\tthis.y = array[ offset + 1 ];\n\t\tthis.z = array[ offset + 2 ];\n\n\t\treturn this;\n\n\t},\n\n\ttoArray: function ( array, offset ) {\n\n\t\tif ( array === undefined ) array = [];\n\t\tif ( offset === undefined ) offset = 0;\n\n\t\tarray[ offset ] = this.x;\n\t\tarray[ offset + 1 ] = this.y;\n\t\tarray[ offset + 2 ] = this.z;\n\n\t\treturn array;\n\n\t},\n\n\tfromAttribute: function ( attribute, index, offset ) {\n\n\t\tif ( offset === undefined ) offset = 0;\n\n\t\tindex = index * attribute.itemSize + offset;\n\n\t\tthis.x = attribute.array[ index ];\n\t\tthis.y = attribute.array[ index + 1 ];\n\t\tthis.z = attribute.array[ index + 2 ];\n\n\t\treturn this;\n\n\t}\n\n};\n\n\nexport { Vector3 };\n","import { _Math } from './Math';\nimport { Vector3 } from './Vector3';\n\n/**\n * @author mrdoob / http://mrdoob.com/\n * @author supereggbert / http://www.paulbrunt.co.uk/\n * @author philogb / http://blog.thejit.org/\n * @author jordi_ros / http://plattsoft.com\n * @author D1plo1d / http://github.com/D1plo1d\n * @author alteredq / http://alteredqualia.com/\n * @author mikael emtinger / http://gomo.se/\n * @author timknip / http://www.floorplanner.com/\n * @author bhouston / http://clara.io\n * @author WestLangley / http://github.com/WestLangley\n */\n\nfunction Matrix4() {\n\n\tthis.elements = new Float32Array( [\n\n\t\t1, 0, 0, 0,\n\t\t0, 1, 0, 0,\n\t\t0, 0, 1, 0,\n\t\t0, 0, 0, 1\n\n\t] );\n\n\tif ( arguments.length > 0 ) {\n\n\t\tconsole.error( 'THREE.Matrix4: the constructor no longer reads arguments. use .set() instead.' );\n\n\t}\n\n}\n\nMatrix4.prototype = {\n\n\tconstructor: Matrix4,\n\n\tisMatrix4: true,\n\n\tset: function ( n11, n12, n13, n14, n21, n22, n23, n24, n31, n32, n33, n34, n41, n42, n43, n44 ) {\n\n\t\tvar te = this.elements;\n\n\t\tte[ 0 ] = n11; te[ 4 ] = n12; te[ 8 ] = n13; te[ 12 ] = n14;\n\t\tte[ 1 ] = n21; te[ 5 ] = n22; te[ 9 ] = n23; te[ 13 ] = n24;\n\t\tte[ 2 ] = n31; te[ 6 ] = n32; te[ 10 ] = n33; te[ 14 ] = n34;\n\t\tte[ 3 ] = n41; te[ 7 ] = n42; te[ 11 ] = n43; te[ 15 ] = n44;\n\n\t\treturn this;\n\n\t},\n\n\tidentity: function () {\n\n\t\tthis.set(\n\n\t\t\t1, 0, 0, 0,\n\t\t\t0, 1, 0, 0,\n\t\t\t0, 0, 1, 0,\n\t\t\t0, 0, 0, 1\n\n\t\t);\n\n\t\treturn this;\n\n\t},\n\n\tclone: function () {\n\n\t\treturn new Matrix4().fromArray( this.elements );\n\n\t},\n\n\tcopy: function ( m ) {\n\n\t\tthis.elements.set( m.elements );\n\n\t\treturn this;\n\n\t},\n\n\tcopyPosition: function ( m ) {\n\n\t\tvar te = this.elements;\n\t\tvar me = m.elements;\n\n\t\tte[ 12 ] = me[ 12 ];\n\t\tte[ 13 ] = me[ 13 ];\n\t\tte[ 14 ] = me[ 14 ];\n\n\t\treturn this;\n\n\t},\n\n\textractBasis: function ( xAxis, yAxis, zAxis ) {\n\n\t\txAxis.setFromMatrixColumn( this, 0 );\n\t\tyAxis.setFromMatrixColumn( this, 1 );\n\t\tzAxis.setFromMatrixColumn( this, 2 );\n\n\t\treturn this;\n\n\t},\n\n\tmakeBasis: function ( xAxis, yAxis, zAxis ) {\n\n\t\tthis.set(\n\t\t\txAxis.x, yAxis.x, zAxis.x, 0,\n\t\t\txAxis.y, yAxis.y, zAxis.y, 0,\n\t\t\txAxis.z, yAxis.z, zAxis.z, 0,\n\t\t\t0, 0, 0, 1\n\t\t);\n\n\t\treturn this;\n\n\t},\n\n\textractRotation: function () {\n\n\t\tvar v1;\n\n\t\treturn function extractRotation( m ) {\n\n\t\t\tif ( v1 === undefined ) v1 = new Vector3();\n\n\t\t\tvar te = this.elements;\n\t\t\tvar me = m.elements;\n\n\t\t\tvar scaleX = 1 / v1.setFromMatrixColumn( m, 0 ).length();\n\t\t\tvar scaleY = 1 / v1.setFromMatrixColumn( m, 1 ).length();\n\t\t\tvar scaleZ = 1 / v1.setFromMatrixColumn( m, 2 ).length();\n\n\t\t\tte[ 0 ] = me[ 0 ] * scaleX;\n\t\t\tte[ 1 ] = me[ 1 ] * scaleX;\n\t\t\tte[ 2 ] = me[ 2 ] * scaleX;\n\n\t\t\tte[ 4 ] = me[ 4 ] * scaleY;\n\t\t\tte[ 5 ] = me[ 5 ] * scaleY;\n\t\t\tte[ 6 ] = me[ 6 ] * scaleY;\n\n\t\t\tte[ 8 ] = me[ 8 ] * scaleZ;\n\t\t\tte[ 9 ] = me[ 9 ] * scaleZ;\n\t\t\tte[ 10 ] = me[ 10 ] * scaleZ;\n\n\t\t\treturn this;\n\n\t\t};\n\n\t}(),\n\n\tmakeRotationFromEuler: function ( euler ) {\n\n\t\tif ( (euler && euler.isEuler) === false ) {\n\n\t\t\tconsole.error( 'THREE.Matrix: .makeRotationFromEuler() now expects a Euler rotation rather than a Vector3 and order.' );\n\n\t\t}\n\n\t\tvar te = this.elements;\n\n\t\tvar x = euler.x, y = euler.y, z = euler.z;\n\t\tvar a = Math.cos( x ), b = Math.sin( x );\n\t\tvar c = Math.cos( y ), d = Math.sin( y );\n\t\tvar e = Math.cos( z ), f = Math.sin( z );\n\n\t\tif ( euler.order === 'XYZ' ) {\n\n\t\t\tvar ae = a * e, af = a * f, be = b * e, bf = b * f;\n\n\t\t\tte[ 0 ] = c * e;\n\t\t\tte[ 4 ] = - c * f;\n\t\t\tte[ 8 ] = d;\n\n\t\t\tte[ 1 ] = af + be * d;\n\t\t\tte[ 5 ] = ae - bf * d;\n\t\t\tte[ 9 ] = - b * c;\n\n\t\t\tte[ 2 ] = bf - ae * d;\n\t\t\tte[ 6 ] = be + af * d;\n\t\t\tte[ 10 ] = a * c;\n\n\t\t} else if ( euler.order === 'YXZ' ) {\n\n\t\t\tvar ce = c * e, cf = c * f, de = d * e, df = d * f;\n\n\t\t\tte[ 0 ] = ce + df * b;\n\t\t\tte[ 4 ] = de * b - cf;\n\t\t\tte[ 8 ] = a * d;\n\n\t\t\tte[ 1 ] = a * f;\n\t\t\tte[ 5 ] = a * e;\n\t\t\tte[ 9 ] = - b;\n\n\t\t\tte[ 2 ] = cf * b - de;\n\t\t\tte[ 6 ] = df + ce * b;\n\t\t\tte[ 10 ] = a * c;\n\n\t\t} else if ( euler.order === 'ZXY' ) {\n\n\t\t\tvar ce = c * e, cf = c * f, de = d * e, df = d * f;\n\n\t\t\tte[ 0 ] = ce - df * b;\n\t\t\tte[ 4 ] = - a * f;\n\t\t\tte[ 8 ] = de + cf * b;\n\n\t\t\tte[ 1 ] = cf + de * b;\n\t\t\tte[ 5 ] = a * e;\n\t\t\tte[ 9 ] = df - ce * b;\n\n\t\t\tte[ 2 ] = - a * d;\n\t\t\tte[ 6 ] = b;\n\t\t\tte[ 10 ] = a * c;\n\n\t\t} else if ( euler.order === 'ZYX' ) {\n\n\t\t\tvar ae = a * e, af = a * f, be = b * e, bf = b * f;\n\n\t\t\tte[ 0 ] = c * e;\n\t\t\tte[ 4 ] = be * d - af;\n\t\t\tte[ 8 ] = ae * d + bf;\n\n\t\t\tte[ 1 ] = c * f;\n\t\t\tte[ 5 ] = bf * d + ae;\n\t\t\tte[ 9 ] = af * d - be;\n\n\t\t\tte[ 2 ] = - d;\n\t\t\tte[ 6 ] = b * c;\n\t\t\tte[ 10 ] = a * c;\n\n\t\t} else if ( euler.order === 'YZX' ) {\n\n\t\t\tvar ac = a * c, ad = a * d, bc = b * c, bd = b * d;\n\n\t\t\tte[ 0 ] = c * e;\n\t\t\tte[ 4 ] = bd - ac * f;\n\t\t\tte[ 8 ] = bc * f + ad;\n\n\t\t\tte[ 1 ] = f;\n\t\t\tte[ 5 ] = a * e;\n\t\t\tte[ 9 ] = - b * e;\n\n\t\t\tte[ 2 ] = - d * e;\n\t\t\tte[ 6 ] = ad * f + bc;\n\t\t\tte[ 10 ] = ac - bd * f;\n\n\t\t} else if ( euler.order === 'XZY' ) {\n\n\t\t\tvar ac = a * c, ad = a * d, bc = b * c, bd = b * d;\n\n\t\t\tte[ 0 ] = c * e;\n\t\t\tte[ 4 ] = - f;\n\t\t\tte[ 8 ] = d * e;\n\n\t\t\tte[ 1 ] = ac * f + bd;\n\t\t\tte[ 5 ] = a * e;\n\t\t\tte[ 9 ] = ad * f - bc;\n\n\t\t\tte[ 2 ] = bc * f - ad;\n\t\t\tte[ 6 ] = b * e;\n\t\t\tte[ 10 ] = bd * f + ac;\n\n\t\t}\n\n\t\t// last column\n\t\tte[ 3 ] = 0;\n\t\tte[ 7 ] = 0;\n\t\tte[ 11 ] = 0;\n\n\t\t// bottom row\n\t\tte[ 12 ] = 0;\n\t\tte[ 13 ] = 0;\n\t\tte[ 14 ] = 0;\n\t\tte[ 15 ] = 1;\n\n\t\treturn this;\n\n\t},\n\n\tmakeRotationFromQuaternion: function ( q ) {\n\n\t\tvar te = this.elements;\n\n\t\tvar x = q.x, y = q.y, z = q.z, w = q.w;\n\t\tvar x2 = x + x, y2 = y + y, z2 = z + z;\n\t\tvar xx = x * x2, xy = x * y2, xz = x * z2;\n\t\tvar yy = y * y2, yz = y * z2, zz = z * z2;\n\t\tvar wx = w * x2, wy = w * y2, wz = w * z2;\n\n\t\tte[ 0 ] = 1 - ( yy + zz );\n\t\tte[ 4 ] = xy - wz;\n\t\tte[ 8 ] = xz + wy;\n\n\t\tte[ 1 ] = xy + wz;\n\t\tte[ 5 ] = 1 - ( xx + zz );\n\t\tte[ 9 ] = yz - wx;\n\n\t\tte[ 2 ] = xz - wy;\n\t\tte[ 6 ] = yz + wx;\n\t\tte[ 10 ] = 1 - ( xx + yy );\n\n\t\t// last column\n\t\tte[ 3 ] = 0;\n\t\tte[ 7 ] = 0;\n\t\tte[ 11 ] = 0;\n\n\t\t// bottom row\n\t\tte[ 12 ] = 0;\n\t\tte[ 13 ] = 0;\n\t\tte[ 14 ] = 0;\n\t\tte[ 15 ] = 1;\n\n\t\treturn this;\n\n\t},\n\n\tlookAt: function () {\n\n\t\tvar x, y, z;\n\n\t\treturn function lookAt( eye, target, up ) {\n\n\t\t\tif ( x === undefined ) {\n\n\t\t\t\tx = new Vector3();\n\t\t\t\ty = new Vector3();\n\t\t\t\tz = new Vector3();\n\n\t\t\t}\n\n\t\t\tvar te = this.elements;\n\n\t\t\tz.subVectors( eye, target ).normalize();\n\n\t\t\tif ( z.lengthSq() === 0 ) {\n\n\t\t\t\tz.z = 1;\n\n\t\t\t}\n\n\t\t\tx.crossVectors( up, z ).normalize();\n\n\t\t\tif ( x.lengthSq() === 0 ) {\n\n\t\t\t\tz.z += 0.0001;\n\t\t\t\tx.crossVectors( up, z ).normalize();\n\n\t\t\t}\n\n\t\t\ty.crossVectors( z, x );\n\n\n\t\t\tte[ 0 ] = x.x; te[ 4 ] = y.x; te[ 8 ] = z.x;\n\t\t\tte[ 1 ] = x.y; te[ 5 ] = y.y; te[ 9 ] = z.y;\n\t\t\tte[ 2 ] = x.z; te[ 6 ] = y.z; te[ 10 ] = z.z;\n\n\t\t\treturn this;\n\n\t\t};\n\n\t}(),\n\n\tmultiply: function ( m, n ) {\n\n\t\tif ( n !== undefined ) {\n\n\t\t\tconsole.warn( 'THREE.Matrix4: .multiply() now only accepts one argument. Use .multiplyMatrices( a, b ) instead.' );\n\t\t\treturn this.multiplyMatrices( m, n );\n\n\t\t}\n\n\t\treturn this.multiplyMatrices( this, m );\n\n\t},\n\n\tpremultiply: function ( m ) {\n\n\t\treturn this.multiplyMatrices( m, this );\n\n\t},\n\n\tmultiplyMatrices: function ( a, b ) {\n\n\t\tvar ae = a.elements;\n\t\tvar be = b.elements;\n\t\tvar te = this.elements;\n\n\t\tvar a11 = ae[ 0 ], a12 = ae[ 4 ], a13 = ae[ 8 ], a14 = ae[ 12 ];\n\t\tvar a21 = ae[ 1 ], a22 = ae[ 5 ], a23 = ae[ 9 ], a24 = ae[ 13 ];\n\t\tvar a31 = ae[ 2 ], a32 = ae[ 6 ], a33 = ae[ 10 ], a34 = ae[ 14 ];\n\t\tvar a41 = ae[ 3 ], a42 = ae[ 7 ], a43 = ae[ 11 ], a44 = ae[ 15 ];\n\n\t\tvar b11 = be[ 0 ], b12 = be[ 4 ], b13 = be[ 8 ], b14 = be[ 12 ];\n\t\tvar b21 = be[ 1 ], b22 = be[ 5 ], b23 = be[ 9 ], b24 = be[ 13 ];\n\t\tvar b31 = be[ 2 ], b32 = be[ 6 ], b33 = be[ 10 ], b34 = be[ 14 ];\n\t\tvar b41 = be[ 3 ], b42 = be[ 7 ], b43 = be[ 11 ], b44 = be[ 15 ];\n\n\t\tte[ 0 ] = a11 * b11 + a12 * b21 + a13 * b31 + a14 * b41;\n\t\tte[ 4 ] = a11 * b12 + a12 * b22 + a13 * b32 + a14 * b42;\n\t\tte[ 8 ] = a11 * b13 + a12 * b23 + a13 * b33 + a14 * b43;\n\t\tte[ 12 ] = a11 * b14 + a12 * b24 + a13 * b34 + a14 * b44;\n\n\t\tte[ 1 ] = a21 * b11 + a22 * b21 + a23 * b31 + a24 * b41;\n\t\tte[ 5 ] = a21 * b12 + a22 * b22 + a23 * b32 + a24 * b42;\n\t\tte[ 9 ] = a21 * b13 + a22 * b23 + a23 * b33 + a24 * b43;\n\t\tte[ 13 ] = a21 * b14 + a22 * b24 + a23 * b34 + a24 * b44;\n\n\t\tte[ 2 ] = a31 * b11 + a32 * b21 + a33 * b31 + a34 * b41;\n\t\tte[ 6 ] = a31 * b12 + a32 * b22 + a33 * b32 + a34 * b42;\n\t\tte[ 10 ] = a31 * b13 + a32 * b23 + a33 * b33 + a34 * b43;\n\t\tte[ 14 ] = a31 * b14 + a32 * b24 + a33 * b34 + a34 * b44;\n\n\t\tte[ 3 ] = a41 * b11 + a42 * b21 + a43 * b31 + a44 * b41;\n\t\tte[ 7 ] = a41 * b12 + a42 * b22 + a43 * b32 + a44 * b42;\n\t\tte[ 11 ] = a41 * b13 + a42 * b23 + a43 * b33 + a44 * b43;\n\t\tte[ 15 ] = a41 * b14 + a42 * b24 + a43 * b34 + a44 * b44;\n\n\t\treturn this;\n\n\t},\n\n\tmultiplyToArray: function ( a, b, r ) {\n\n\t\tvar te = this.elements;\n\n\t\tthis.multiplyMatrices( a, b );\n\n\t\tr[ 0 ] = te[ 0 ]; r[ 1 ] = te[ 1 ]; r[ 2 ] = te[ 2 ]; r[ 3 ] = te[ 3 ];\n\t\tr[ 4 ] = te[ 4 ]; r[ 5 ] = te[ 5 ]; r[ 6 ] = te[ 6 ]; r[ 7 ] = te[ 7 ];\n\t\tr[ 8 ] = te[ 8 ]; r[ 9 ] = te[ 9 ]; r[ 10 ] = te[ 10 ]; r[ 11 ] = te[ 11 ];\n\t\tr[ 12 ] = te[ 12 ]; r[ 13 ] = te[ 13 ]; r[ 14 ] = te[ 14 ]; r[ 15 ] = te[ 15 ];\n\n\t\treturn this;\n\n\t},\n\n\tmultiplyScalar: function ( s ) {\n\n\t\tvar te = this.elements;\n\n\t\tte[ 0 ] *= s; te[ 4 ] *= s; te[ 8 ] *= s; te[ 12 ] *= s;\n\t\tte[ 1 ] *= s; te[ 5 ] *= s; te[ 9 ] *= s; te[ 13 ] *= s;\n\t\tte[ 2 ] *= s; te[ 6 ] *= s; te[ 10 ] *= s; te[ 14 ] *= s;\n\t\tte[ 3 ] *= s; te[ 7 ] *= s; te[ 11 ] *= s; te[ 15 ] *= s;\n\n\t\treturn this;\n\n\t},\n\n\tapplyToVector3Array: function () {\n\n\t\tvar v1;\n\n\t\treturn function applyToVector3Array( array, offset, length ) {\n\n\t\t\tif ( v1 === undefined ) v1 = new Vector3();\n\t\t\tif ( offset === undefined ) offset = 0;\n\t\t\tif ( length === undefined ) length = array.length;\n\n\t\t\tfor ( var i = 0, j = offset; i < length; i += 3, j += 3 ) {\n\n\t\t\t\tv1.fromArray( array, j );\n\t\t\t\tv1.applyMatrix4( this );\n\t\t\t\tv1.toArray( array, j );\n\n\t\t\t}\n\n\t\t\treturn array;\n\n\t\t};\n\n\t}(),\n\n\tapplyToBuffer: function () {\n\n\t\tvar v1;\n\n\t\treturn function applyToBuffer( buffer, offset, length ) {\n\n\t\t\tif ( v1 === undefined ) v1 = new Vector3();\n\t\t\tif ( offset === undefined ) offset = 0;\n\t\t\tif ( length === undefined ) length = buffer.length / buffer.itemSize;\n\n\t\t\tfor ( var i = 0, j = offset; i < length; i ++, j ++ ) {\n\n\t\t\t\tv1.x = buffer.getX( j );\n\t\t\t\tv1.y = buffer.getY( j );\n\t\t\t\tv1.z = buffer.getZ( j );\n\n\t\t\t\tv1.applyMatrix4( this );\n\n\t\t\t\tbuffer.setXYZ( j, v1.x, v1.y, v1.z );\n\n\t\t\t}\n\n\t\t\treturn buffer;\n\n\t\t};\n\n\t}(),\n\n\tdeterminant: function () {\n\n\t\tvar te = this.elements;\n\n\t\tvar n11 = te[ 0 ], n12 = te[ 4 ], n13 = te[ 8 ], n14 = te[ 12 ];\n\t\tvar n21 = te[ 1 ], n22 = te[ 5 ], n23 = te[ 9 ], n24 = te[ 13 ];\n\t\tvar n31 = te[ 2 ], n32 = te[ 6 ], n33 = te[ 10 ], n34 = te[ 14 ];\n\t\tvar n41 = te[ 3 ], n42 = te[ 7 ], n43 = te[ 11 ], n44 = te[ 15 ];\n\n\t\t//TODO: make this more efficient\n\t\t//( based on http://www.euclideanspace.com/maths/algebra/matrix/functions/inverse/fourD/index.htm )\n\n\t\treturn (\n\t\t\tn41 * (\n\t\t\t\t+ n14 * n23 * n32\n\t\t\t\t - n13 * n24 * n32\n\t\t\t\t - n14 * n22 * n33\n\t\t\t\t + n12 * n24 * n33\n\t\t\t\t + n13 * n22 * n34\n\t\t\t\t - n12 * n23 * n34\n\t\t\t) +\n\t\t\tn42 * (\n\t\t\t\t+ n11 * n23 * n34\n\t\t\t\t - n11 * n24 * n33\n\t\t\t\t + n14 * n21 * n33\n\t\t\t\t - n13 * n21 * n34\n\t\t\t\t + n13 * n24 * n31\n\t\t\t\t - n14 * n23 * n31\n\t\t\t) +\n\t\t\tn43 * (\n\t\t\t\t+ n11 * n24 * n32\n\t\t\t\t - n11 * n22 * n34\n\t\t\t\t - n14 * n21 * n32\n\t\t\t\t + n12 * n21 * n34\n\t\t\t\t + n14 * n22 * n31\n\t\t\t\t - n12 * n24 * n31\n\t\t\t) +\n\t\t\tn44 * (\n\t\t\t\t- n13 * n22 * n31\n\t\t\t\t - n11 * n23 * n32\n\t\t\t\t + n11 * n22 * n33\n\t\t\t\t + n13 * n21 * n32\n\t\t\t\t - n12 * n21 * n33\n\t\t\t\t + n12 * n23 * n31\n\t\t\t)\n\n\t\t);\n\n\t},\n\n\ttranspose: function () {\n\n\t\tvar te = this.elements;\n\t\tvar tmp;\n\n\t\ttmp = te[ 1 ]; te[ 1 ] = te[ 4 ]; te[ 4 ] = tmp;\n\t\ttmp = te[ 2 ]; te[ 2 ] = te[ 8 ]; te[ 8 ] = tmp;\n\t\ttmp = te[ 6 ]; te[ 6 ] = te[ 9 ]; te[ 9 ] = tmp;\n\n\t\ttmp = te[ 3 ]; te[ 3 ] = te[ 12 ]; te[ 12 ] = tmp;\n\t\ttmp = te[ 7 ]; te[ 7 ] = te[ 13 ]; te[ 13 ] = tmp;\n\t\ttmp = te[ 11 ]; te[ 11 ] = te[ 14 ]; te[ 14 ] = tmp;\n\n\t\treturn this;\n\n\t},\n\n\tflattenToArrayOffset: function ( array, offset ) {\n\n\t\tconsole.warn( \"THREE.Matrix3: .flattenToArrayOffset is deprecated \" +\n\t\t\t\t\"- just use .toArray instead.\" );\n\n\t\treturn this.toArray( array, offset );\n\n\t},\n\n\tgetPosition: function () {\n\n\t\tvar v1;\n\n\t\treturn function getPosition() {\n\n\t\t\tif ( v1 === undefined ) v1 = new Vector3();\n\t\t\tconsole.warn( 'THREE.Matrix4: .getPosition() has been removed. Use Vector3.setFromMatrixPosition( matrix ) instead.' );\n\n\t\t\treturn v1.setFromMatrixColumn( this, 3 );\n\n\t\t};\n\n\t}(),\n\n\tsetPosition: function ( v ) {\n\n\t\tvar te = this.elements;\n\n\t\tte[ 12 ] = v.x;\n\t\tte[ 13 ] = v.y;\n\t\tte[ 14 ] = v.z;\n\n\t\treturn this;\n\n\t},\n\n\tgetInverse: function ( m, throwOnDegenerate ) {\n\n\t\t// based on http://www.euclideanspace.com/maths/algebra/matrix/functions/inverse/fourD/index.htm\n\t\tvar te = this.elements,\n\t\t\tme = m.elements,\n\n\t\t\tn11 = me[ 0 ], n21 = me[ 1 ], n31 = me[ 2 ], n41 = me[ 3 ],\n\t\t\tn12 = me[ 4 ], n22 = me[ 5 ], n32 = me[ 6 ], n42 = me[ 7 ],\n\t\t\tn13 = me[ 8 ], n23 = me[ 9 ], n33 = me[ 10 ], n43 = me[ 11 ],\n\t\t\tn14 = me[ 12 ], n24 = me[ 13 ], n34 = me[ 14 ], n44 = me[ 15 ],\n\n\t\t\tt11 = n23 * n34 * n42 - n24 * n33 * n42 + n24 * n32 * n43 - n22 * n34 * n43 - n23 * n32 * n44 + n22 * n33 * n44,\n\t\t\tt12 = n14 * n33 * n42 - n13 * n34 * n42 - n14 * n32 * n43 + n12 * n34 * n43 + n13 * n32 * n44 - n12 * n33 * n44,\n\t\t\tt13 = n13 * n24 * n42 - n14 * n23 * n42 + n14 * n22 * n43 - n12 * n24 * n43 - n13 * n22 * n44 + n12 * n23 * n44,\n\t\t\tt14 = n14 * n23 * n32 - n13 * n24 * n32 - n14 * n22 * n33 + n12 * n24 * n33 + n13 * n22 * n34 - n12 * n23 * n34;\n\n\t\tvar det = n11 * t11 + n21 * t12 + n31 * t13 + n41 * t14;\n\n\t\tif ( det === 0 ) {\n\n\t\t\tvar msg = \"THREE.Matrix4.getInverse(): can't invert matrix, determinant is 0\";\n\n\t\t\tif ( throwOnDegenerate === true ) {\n\n\t\t\t\tthrow new Error( msg );\n\n\t\t\t} else {\n\n\t\t\t\tconsole.warn( msg );\n\n\t\t\t}\n\n\t\t\treturn this.identity();\n\n\t\t}\n\n\t\tvar detInv = 1 / det;\n\n\t\tte[ 0 ] = t11 * detInv;\n\t\tte[ 1 ] = ( n24 * n33 * n41 - n23 * n34 * n41 - n24 * n31 * n43 + n21 * n34 * n43 + n23 * n31 * n44 - n21 * n33 * n44 ) * detInv;\n\t\tte[ 2 ] = ( n22 * n34 * n41 - n24 * n32 * n41 + n24 * n31 * n42 - n21 * n34 * n42 - n22 * n31 * n44 + n21 * n32 * n44 ) * detInv;\n\t\tte[ 3 ] = ( n23 * n32 * n41 - n22 * n33 * n41 - n23 * n31 * n42 + n21 * n33 * n42 + n22 * n31 * n43 - n21 * n32 * n43 ) * detInv;\n\n\t\tte[ 4 ] = t12 * detInv;\n\t\tte[ 5 ] = ( n13 * n34 * n41 - n14 * n33 * n41 + n14 * n31 * n43 - n11 * n34 * n43 - n13 * n31 * n44 + n11 * n33 * n44 ) * detInv;\n\t\tte[ 6 ] = ( n14 * n32 * n41 - n12 * n34 * n41 - n14 * n31 * n42 + n11 * n34 * n42 + n12 * n31 * n44 - n11 * n32 * n44 ) * detInv;\n\t\tte[ 7 ] = ( n12 * n33 * n41 - n13 * n32 * n41 + n13 * n31 * n42 - n11 * n33 * n42 - n12 * n31 * n43 + n11 * n32 * n43 ) * detInv;\n\n\t\tte[ 8 ] = t13 * detInv;\n\t\tte[ 9 ] = ( n14 * n23 * n41 - n13 * n24 * n41 - n14 * n21 * n43 + n11 * n24 * n43 + n13 * n21 * n44 - n11 * n23 * n44 ) * detInv;\n\t\tte[ 10 ] = ( n12 * n24 * n41 - n14 * n22 * n41 + n14 * n21 * n42 - n11 * n24 * n42 - n12 * n21 * n44 + n11 * n22 * n44 ) * detInv;\n\t\tte[ 11 ] = ( n13 * n22 * n41 - n12 * n23 * n41 - n13 * n21 * n42 + n11 * n23 * n42 + n12 * n21 * n43 - n11 * n22 * n43 ) * detInv;\n\n\t\tte[ 12 ] = t14 * detInv;\n\t\tte[ 13 ] = ( n13 * n24 * n31 - n14 * n23 * n31 + n14 * n21 * n33 - n11 * n24 * n33 - n13 * n21 * n34 + n11 * n23 * n34 ) * detInv;\n\t\tte[ 14 ] = ( n14 * n22 * n31 - n12 * n24 * n31 - n14 * n21 * n32 + n11 * n24 * n32 + n12 * n21 * n34 - n11 * n22 * n34 ) * detInv;\n\t\tte[ 15 ] = ( n12 * n23 * n31 - n13 * n22 * n31 + n13 * n21 * n32 - n11 * n23 * n32 - n12 * n21 * n33 + n11 * n22 * n33 ) * detInv;\n\n\t\treturn this;\n\n\t},\n\n\tscale: function ( v ) {\n\n\t\tvar te = this.elements;\n\t\tvar x = v.x, y = v.y, z = v.z;\n\n\t\tte[ 0 ] *= x; te[ 4 ] *= y; te[ 8 ] *= z;\n\t\tte[ 1 ] *= x; te[ 5 ] *= y; te[ 9 ] *= z;\n\t\tte[ 2 ] *= x; te[ 6 ] *= y; te[ 10 ] *= z;\n\t\tte[ 3 ] *= x; te[ 7 ] *= y; te[ 11 ] *= z;\n\n\t\treturn this;\n\n\t},\n\n\tgetMaxScaleOnAxis: function () {\n\n\t\tvar te = this.elements;\n\n\t\tvar scaleXSq = te[ 0 ] * te[ 0 ] + te[ 1 ] * te[ 1 ] + te[ 2 ] * te[ 2 ];\n\t\tvar scaleYSq = te[ 4 ] * te[ 4 ] + te[ 5 ] * te[ 5 ] + te[ 6 ] * te[ 6 ];\n\t\tvar scaleZSq = te[ 8 ] * te[ 8 ] + te[ 9 ] * te[ 9 ] + te[ 10 ] * te[ 10 ];\n\n\t\treturn Math.sqrt( Math.max( scaleXSq, scaleYSq, scaleZSq ) );\n\n\t},\n\n\tmakeTranslation: function ( x, y, z ) {\n\n\t\tthis.set(\n\n\t\t\t1, 0, 0, x,\n\t\t\t0, 1, 0, y,\n\t\t\t0, 0, 1, z,\n\t\t\t0, 0, 0, 1\n\n\t\t);\n\n\t\treturn this;\n\n\t},\n\n\tmakeRotationX: function ( theta ) {\n\n\t\tvar c = Math.cos( theta ), s = Math.sin( theta );\n\n\t\tthis.set(\n\n\t\t\t1, 0, 0, 0,\n\t\t\t0, c, - s, 0,\n\t\t\t0, s, c, 0,\n\t\t\t0, 0, 0, 1\n\n\t\t);\n\n\t\treturn this;\n\n\t},\n\n\tmakeRotationY: function ( theta ) {\n\n\t\tvar c = Math.cos( theta ), s = Math.sin( theta );\n\n\t\tthis.set(\n\n\t\t\t c, 0, s, 0,\n\t\t\t 0, 1, 0, 0,\n\t\t\t- s, 0, c, 0,\n\t\t\t 0, 0, 0, 1\n\n\t\t);\n\n\t\treturn this;\n\n\t},\n\n\tmakeRotationZ: function ( theta ) {\n\n\t\tvar c = Math.cos( theta ), s = Math.sin( theta );\n\n\t\tthis.set(\n\n\t\t\tc, - s, 0, 0,\n\t\t\ts, c, 0, 0,\n\t\t\t0, 0, 1, 0,\n\t\t\t0, 0, 0, 1\n\n\t\t);\n\n\t\treturn this;\n\n\t},\n\n\tmakeRotationAxis: function ( axis, angle ) {\n\n\t\t// Based on http://www.gamedev.net/reference/articles/article1199.asp\n\n\t\tvar c = Math.cos( angle );\n\t\tvar s = Math.sin( angle );\n\t\tvar t = 1 - c;\n\t\tvar x = axis.x, y = axis.y, z = axis.z;\n\t\tvar tx = t * x, ty = t * y;\n\n\t\tthis.set(\n\n\t\t\ttx * x + c, tx * y - s * z, tx * z + s * y, 0,\n\t\t\ttx * y + s * z, ty * y + c, ty * z - s * x, 0,\n\t\t\ttx * z - s * y, ty * z + s * x, t * z * z + c, 0,\n\t\t\t0, 0, 0, 1\n\n\t\t);\n\n\t\t return this;\n\n\t},\n\n\tmakeScale: function ( x, y, z ) {\n\n\t\tthis.set(\n\n\t\t\tx, 0, 0, 0,\n\t\t\t0, y, 0, 0,\n\t\t\t0, 0, z, 0,\n\t\t\t0, 0, 0, 1\n\n\t\t);\n\n\t\treturn this;\n\n\t},\n\n\tcompose: function ( position, quaternion, scale ) {\n\n\t\tthis.makeRotationFromQuaternion( quaternion );\n\t\tthis.scale( scale );\n\t\tthis.setPosition( position );\n\n\t\treturn this;\n\n\t},\n\n\tdecompose: function () {\n\n\t\tvar vector, matrix;\n\n\t\treturn function decompose( position, quaternion, scale ) {\n\n\t\t\tif ( vector === undefined ) {\n\n\t\t\t\tvector = new Vector3();\n\t\t\t\tmatrix = new Matrix4();\n\n\t\t\t}\n\n\t\t\tvar te = this.elements;\n\n\t\t\tvar sx = vector.set( te[ 0 ], te[ 1 ], te[ 2 ] ).length();\n\t\t\tvar sy = vector.set( te[ 4 ], te[ 5 ], te[ 6 ] ).length();\n\t\t\tvar sz = vector.set( te[ 8 ], te[ 9 ], te[ 10 ] ).length();\n\n\t\t\t// if determine is negative, we need to invert one scale\n\t\t\tvar det = this.determinant();\n\t\t\tif ( det < 0 ) {\n\n\t\t\t\tsx = - sx;\n\n\t\t\t}\n\n\t\t\tposition.x = te[ 12 ];\n\t\t\tposition.y = te[ 13 ];\n\t\t\tposition.z = te[ 14 ];\n\n\t\t\t// scale the rotation part\n\n\t\t\tmatrix.elements.set( this.elements ); // at this point matrix is incomplete so we can't use .copy()\n\n\t\t\tvar invSX = 1 / sx;\n\t\t\tvar invSY = 1 / sy;\n\t\t\tvar invSZ = 1 / sz;\n\n\t\t\tmatrix.elements[ 0 ] *= invSX;\n\t\t\tmatrix.elements[ 1 ] *= invSX;\n\t\t\tmatrix.elements[ 2 ] *= invSX;\n\n\t\t\tmatrix.elements[ 4 ] *= invSY;\n\t\t\tmatrix.elements[ 5 ] *= invSY;\n\t\t\tmatrix.elements[ 6 ] *= invSY;\n\n\t\t\tmatrix.elements[ 8 ] *= invSZ;\n\t\t\tmatrix.elements[ 9 ] *= invSZ;\n\t\t\tmatrix.elements[ 10 ] *= invSZ;\n\n\t\t\tquaternion.setFromRotationMatrix( matrix );\n\n\t\t\tscale.x = sx;\n\t\t\tscale.y = sy;\n\t\t\tscale.z = sz;\n\n\t\t\treturn this;\n\n\t\t};\n\n\t}(),\n\n\tmakeFrustum: function ( left, right, bottom, top, near, far ) {\n\n\t\tvar te = this.elements;\n\t\tvar x = 2 * near / ( right - left );\n\t\tvar y = 2 * near / ( top - bottom );\n\n\t\tvar a = ( right + left ) / ( right - left );\n\t\tvar b = ( top + bottom ) / ( top - bottom );\n\t\tvar c = - ( far + near ) / ( far - near );\n\t\tvar d = - 2 * far * near / ( far - near );\n\n\t\tte[ 0 ] = x;\tte[ 4 ] = 0;\tte[ 8 ] = a;\tte[ 12 ] = 0;\n\t\tte[ 1 ] = 0;\tte[ 5 ] = y;\tte[ 9 ] = b;\tte[ 13 ] = 0;\n\t\tte[ 2 ] = 0;\tte[ 6 ] = 0;\tte[ 10 ] = c;\tte[ 14 ] = d;\n\t\tte[ 3 ] = 0;\tte[ 7 ] = 0;\tte[ 11 ] = - 1;\tte[ 15 ] = 0;\n\n\t\treturn this;\n\n\t},\n\n\tmakePerspective: function ( fov, aspect, near, far ) {\n\n\t\tvar ymax = near * Math.tan( _Math.DEG2RAD * fov * 0.5 );\n\t\tvar ymin = - ymax;\n\t\tvar xmin = ymin * aspect;\n\t\tvar xmax = ymax * aspect;\n\n\t\treturn this.makeFrustum( xmin, xmax, ymin, ymax, near, far );\n\n\t},\n\n\tmakeOrthographic: function ( left, right, top, bottom, near, far ) {\n\n\t\tvar te = this.elements;\n\t\tvar w = 1.0 / ( right - left );\n\t\tvar h = 1.0 / ( top - bottom );\n\t\tvar p = 1.0 / ( far - near );\n\n\t\tvar x = ( right + left ) * w;\n\t\tvar y = ( top + bottom ) * h;\n\t\tvar z = ( far + near ) * p;\n\n\t\tte[ 0 ] = 2 * w;\tte[ 4 ] = 0;\tte[ 8 ] = 0;\tte[ 12 ] = - x;\n\t\tte[ 1 ] = 0;\tte[ 5 ] = 2 * h;\tte[ 9 ] = 0;\tte[ 13 ] = - y;\n\t\tte[ 2 ] = 0;\tte[ 6 ] = 0;\tte[ 10 ] = - 2 * p;\tte[ 14 ] = - z;\n\t\tte[ 3 ] = 0;\tte[ 7 ] = 0;\tte[ 11 ] = 0;\tte[ 15 ] = 1;\n\n\t\treturn this;\n\n\t},\n\n\tequals: function ( matrix ) {\n\n\t\tvar te = this.elements;\n\t\tvar me = matrix.elements;\n\n\t\tfor ( var i = 0; i < 16; i ++ ) {\n\n\t\t\tif ( te[ i ] !== me[ i ] ) return false;\n\n\t\t}\n\n\t\treturn true;\n\n\t},\n\n\tfromArray: function ( array, offset ) {\n\n\t\tif ( offset === undefined ) offset = 0;\n\n\t\tfor( var i = 0; i < 16; i ++ ) {\n\n\t\t\tthis.elements[ i ] = array[ i + offset ];\n\n\t\t}\n\n\t\treturn this;\n\n\t},\n\n\ttoArray: function ( array, offset ) {\n\n\t\tif ( array === undefined ) array = [];\n\t\tif ( offset === undefined ) offset = 0;\n\n\t\tvar te = this.elements;\n\n\t\tarray[ offset ] = te[ 0 ];\n\t\tarray[ offset + 1 ] = te[ 1 ];\n\t\tarray[ offset + 2 ] = te[ 2 ];\n\t\tarray[ offset + 3 ] = te[ 3 ];\n\n\t\tarray[ offset + 4 ] = te[ 4 ];\n\t\tarray[ offset + 5 ] = te[ 5 ];\n\t\tarray[ offset + 6 ] = te[ 6 ];\n\t\tarray[ offset + 7 ] = te[ 7 ];\n\n\t\tarray[ offset + 8 ] = te[ 8 ];\n\t\tarray[ offset + 9 ] = te[ 9 ];\n\t\tarray[ offset + 10 ] = te[ 10 ];\n\t\tarray[ offset + 11 ] = te[ 11 ];\n\n\t\tarray[ offset + 12 ] = te[ 12 ];\n\t\tarray[ offset + 13 ] = te[ 13 ];\n\t\tarray[ offset + 14 ] = te[ 14 ];\n\t\tarray[ offset + 15 ] = te[ 15 ];\n\n\t\treturn array;\n\n\t}\n\n};\n\n\nexport { Matrix4 };\n","import { Texture } from './Texture';\nimport { CubeReflectionMapping } from '../constants';\n\n/**\n * @author mrdoob / http://mrdoob.com/\n */\n\nfunction CubeTexture( images, mapping, wrapS, wrapT, magFilter, minFilter, format, type, anisotropy, encoding ) {\n\n\timages = images !== undefined ? images : [];\n\tmapping = mapping !== undefined ? mapping : CubeReflectionMapping;\n\n\tTexture.call( this, images, mapping, wrapS, wrapT, magFilter, minFilter, format, type, anisotropy, encoding );\n\n\tthis.flipY = false;\n\n}\n\nCubeTexture.prototype = Object.create( Texture.prototype );\nCubeTexture.prototype.constructor = CubeTexture;\n\nCubeTexture.prototype.isCubeTexture = true;\n\nObject.defineProperty( CubeTexture.prototype, 'images', {\n\n\tget: function () {\n\n\t\treturn this.image;\n\n\t},\n\n\tset: function ( value ) {\n\n\t\tthis.image = value;\n\n\t}\n\n} );\n\n\nexport { CubeTexture };\n","/**\n * @author tschw\n *\n * Uniforms of a program.\n * Those form a tree structure with a special top-level container for the root,\n * which you get by calling 'new WebGLUniforms( gl, program, renderer )'.\n *\n *\n * Properties of inner nodes including the top-level container:\n *\n * .seq - array of nested uniforms\n * .map - nested uniforms by name\n *\n *\n * Methods of all nodes except the top-level container:\n *\n * .setValue( gl, value, [renderer] )\n *\n * \t\tuploads a uniform value(s)\n * \tthe 'renderer' parameter is needed for sampler uniforms\n *\n *\n * Static methods of the top-level container (renderer factorizations):\n *\n * .upload( gl, seq, values, renderer )\n *\n * \t\tsets uniforms in 'seq' to 'values[id].value'\n *\n * .seqWithValue( seq, values ) : filteredSeq\n *\n * \t\tfilters 'seq' entries with corresponding entry in values\n *\n *\n * Methods of the top-level container (renderer factorizations):\n *\n * .setValue( gl, name, value )\n *\n * \t\tsets uniform with name 'name' to 'value'\n *\n * .set( gl, obj, prop )\n *\n * \t\tsets uniform from object and property with same name than uniform\n *\n * .setOptional( gl, obj, prop )\n *\n * \t\tlike .set for an optional property of the object\n *\n */\n\nimport { CubeTexture } from '../../textures/CubeTexture';\nimport { Texture } from '../../textures/Texture';\n\nvar emptyTexture = new Texture();\nvar emptyCubeTexture = new CubeTexture();\n\n// --- Base for inner nodes (including the root) ---\n\nfunction UniformContainer() {\n\n\tthis.seq = [];\n\tthis.map = {};\n\n}\n\n// --- Utilities ---\n\n// Array Caches (provide typed arrays for temporary by size)\n\nvar arrayCacheF32 = [];\nvar arrayCacheI32 = [];\n\n// Flattening for arrays of vectors and matrices\n\nfunction flatten( array, nBlocks, blockSize ) {\n\n\tvar firstElem = array[ 0 ];\n\n\tif ( firstElem <= 0 || firstElem > 0 ) return array;\n\t// unoptimized: ! isNaN( firstElem )\n\t// see http://jacksondunstan.com/articles/983\n\n\tvar n = nBlocks * blockSize,\n\t\tr = arrayCacheF32[ n ];\n\n\tif ( r === undefined ) {\n\n\t\tr = new Float32Array( n );\n\t\tarrayCacheF32[ n ] = r;\n\n\t}\n\n\tif ( nBlocks !== 0 ) {\n\n\t\tfirstElem.toArray( r, 0 );\n\n\t\tfor ( var i = 1, offset = 0; i !== nBlocks; ++ i ) {\n\n\t\t\toffset += blockSize;\n\t\t\tarray[ i ].toArray( r, offset );\n\n\t\t}\n\n\t}\n\n\treturn r;\n\n}\n\n// Texture unit allocation\n\nfunction allocTexUnits( renderer, n ) {\n\n\tvar r = arrayCacheI32[ n ];\n\n\tif ( r === undefined ) {\n\n\t\tr = new Int32Array( n );\n\t\tarrayCacheI32[ n ] = r;\n\n\t}\n\n\tfor ( var i = 0; i !== n; ++ i )\n\t\tr[ i ] = renderer.allocTextureUnit();\n\n\treturn r;\n\n}\n\n// --- Setters ---\n\n// Note: Defining these methods externally, because they come in a bunch\n// and this way their names minify.\n\n// Single scalar\n\nfunction setValue1f( gl, v ) { gl.uniform1f( this.addr, v ); }\nfunction setValue1i( gl, v ) { gl.uniform1i( this.addr, v ); }\n\n// Single float vector (from flat array or THREE.VectorN)\n\nfunction setValue2fv( gl, v ) {\n\n\tif ( v.x === undefined ) gl.uniform2fv( this.addr, v );\n\telse gl.uniform2f( this.addr, v.x, v.y );\n\n}\n\nfunction setValue3fv( gl, v ) {\n\n\tif ( v.x !== undefined )\n\t\tgl.uniform3f( this.addr, v.x, v.y, v.z );\n\telse if ( v.r !== undefined )\n\t\tgl.uniform3f( this.addr, v.r, v.g, v.b );\n\telse\n\t\tgl.uniform3fv( this.addr, v );\n\n}\n\nfunction setValue4fv( gl, v ) {\n\n\tif ( v.x === undefined ) gl.uniform4fv( this.addr, v );\n\telse gl.uniform4f( this.addr, v.x, v.y, v.z, v.w );\n\n}\n\n// Single matrix (from flat array or MatrixN)\n\nfunction setValue2fm( gl, v ) {\n\n\tgl.uniformMatrix2fv( this.addr, false, v.elements || v );\n\n}\n\nfunction setValue3fm( gl, v ) {\n\n\tgl.uniformMatrix3fv( this.addr, false, v.elements || v );\n\n}\n\nfunction setValue4fm( gl, v ) {\n\n\tgl.uniformMatrix4fv( this.addr, false, v.elements || v );\n\n}\n\n// Single texture (2D / Cube)\n\nfunction setValueT1( gl, v, renderer ) {\n\n\tvar unit = renderer.allocTextureUnit();\n\tgl.uniform1i( this.addr, unit );\n\trenderer.setTexture2D( v || emptyTexture, unit );\n\n}\n\nfunction setValueT6( gl, v, renderer ) {\n\n\tvar unit = renderer.allocTextureUnit();\n\tgl.uniform1i( this.addr, unit );\n\trenderer.setTextureCube( v || emptyCubeTexture, unit );\n\n}\n\n// Integer / Boolean vectors or arrays thereof (always flat arrays)\n\nfunction setValue2iv( gl, v ) { gl.uniform2iv( this.addr, v ); }\nfunction setValue3iv( gl, v ) { gl.uniform3iv( this.addr, v ); }\nfunction setValue4iv( gl, v ) { gl.uniform4iv( this.addr, v ); }\n\n// Helper to pick the right setter for the singular case\n\nfunction getSingularSetter( type ) {\n\n\tswitch ( type ) {\n\n\t\tcase 0x1406: return setValue1f; // FLOAT\n\t\tcase 0x8b50: return setValue2fv; // _VEC2\n\t\tcase 0x8b51: return setValue3fv; // _VEC3\n\t\tcase 0x8b52: return setValue4fv; // _VEC4\n\n\t\tcase 0x8b5a: return setValue2fm; // _MAT2\n\t\tcase 0x8b5b: return setValue3fm; // _MAT3\n\t\tcase 0x8b5c: return setValue4fm; // _MAT4\n\n\t\tcase 0x8b5e: return setValueT1; // SAMPLER_2D\n\t\tcase 0x8b60: return setValueT6; // SAMPLER_CUBE\n\n\t\tcase 0x1404: case 0x8b56: return setValue1i; // INT, BOOL\n\t\tcase 0x8b53: case 0x8b57: return setValue2iv; // _VEC2\n\t\tcase 0x8b54: case 0x8b58: return setValue3iv; // _VEC3\n\t\tcase 0x8b55: case 0x8b59: return setValue4iv; // _VEC4\n\n\t}\n\n}\n\n// Array of scalars\n\nfunction setValue1fv( gl, v ) { gl.uniform1fv( this.addr, v ); }\nfunction setValue1iv( gl, v ) { gl.uniform1iv( this.addr, v ); }\n\n// Array of vectors (flat or from THREE classes)\n\nfunction setValueV2a( gl, v ) {\n\n\tgl.uniform2fv( this.addr, flatten( v, this.size, 2 ) );\n\n}\n\nfunction setValueV3a( gl, v ) {\n\n\tgl.uniform3fv( this.addr, flatten( v, this.size, 3 ) );\n\n}\n\nfunction setValueV4a( gl, v ) {\n\n\tgl.uniform4fv( this.addr, flatten( v, this.size, 4 ) );\n\n}\n\n// Array of matrices (flat or from THREE clases)\n\nfunction setValueM2a( gl, v ) {\n\n\tgl.uniformMatrix2fv( this.addr, false, flatten( v, this.size, 4 ) );\n\n}\n\nfunction setValueM3a( gl, v ) {\n\n\tgl.uniformMatrix3fv( this.addr, false, flatten( v, this.size, 9 ) );\n\n}\n\nfunction setValueM4a( gl, v ) {\n\n\tgl.uniformMatrix4fv( this.addr, false, flatten( v, this.size, 16 ) );\n\n}\n\n// Array of textures (2D / Cube)\n\nfunction setValueT1a( gl, v, renderer ) {\n\n\tvar n = v.length,\n\t\tunits = allocTexUnits( renderer, n );\n\n\tgl.uniform1iv( this.addr, units );\n\n\tfor ( var i = 0; i !== n; ++ i ) {\n\n\t\trenderer.setTexture2D( v[ i ] || emptyTexture, units[ i ] );\n\n\t}\n\n}\n\nfunction setValueT6a( gl, v, renderer ) {\n\n\tvar n = v.length,\n\t\tunits = allocTexUnits( renderer, n );\n\n\tgl.uniform1iv( this.addr, units );\n\n\tfor ( var i = 0; i !== n; ++ i ) {\n\n\t\trenderer.setTextureCube( v[ i ] || emptyCubeTexture, units[ i ] );\n\n\t}\n\n}\n\n// Helper to pick the right setter for a pure (bottom-level) array\n\nfunction getPureArraySetter( type ) {\n\n\tswitch ( type ) {\n\n\t\tcase 0x1406: return setValue1fv; // FLOAT\n\t\tcase 0x8b50: return setValueV2a; // _VEC2\n\t\tcase 0x8b51: return setValueV3a; // _VEC3\n\t\tcase 0x8b52: return setValueV4a; // _VEC4\n\n\t\tcase 0x8b5a: return setValueM2a; // _MAT2\n\t\tcase 0x8b5b: return setValueM3a; // _MAT3\n\t\tcase 0x8b5c: return setValueM4a; // _MAT4\n\n\t\tcase 0x8b5e: return setValueT1a; // SAMPLER_2D\n\t\tcase 0x8b60: return setValueT6a; // SAMPLER_CUBE\n\n\t\tcase 0x1404: case 0x8b56: return setValue1iv; // INT, BOOL\n\t\tcase 0x8b53: case 0x8b57: return setValue2iv; // _VEC2\n\t\tcase 0x8b54: case 0x8b58: return setValue3iv; // _VEC3\n\t\tcase 0x8b55: case 0x8b59: return setValue4iv; // _VEC4\n\n\t}\n\n}\n\n// --- Uniform Classes ---\n\nfunction SingleUniform( id, activeInfo, addr ) {\n\n\tthis.id = id;\n\tthis.addr = addr;\n\tthis.setValue = getSingularSetter( activeInfo.type );\n\n\t// this.path = activeInfo.name; // DEBUG\n\n}\n\nfunction PureArrayUniform( id, activeInfo, addr ) {\n\n\tthis.id = id;\n\tthis.addr = addr;\n\tthis.size = activeInfo.size;\n\tthis.setValue = getPureArraySetter( activeInfo.type );\n\n\t// this.path = activeInfo.name; // DEBUG\n\n}\n\nfunction StructuredUniform( id ) {\n\n\tthis.id = id;\n\n\tUniformContainer.call( this ); // mix-in\n\n}\n\nStructuredUniform.prototype.setValue = function( gl, value ) {\n\n\t// Note: Don't need an extra 'renderer' parameter, since samplers\n\t// are not allowed in structured uniforms.\n\n\tvar seq = this.seq;\n\n\tfor ( var i = 0, n = seq.length; i !== n; ++ i ) {\n\n\t\tvar u = seq[ i ];\n\t\tu.setValue( gl, value[ u.id ] );\n\n\t}\n\n};\n\n// --- Top-level ---\n\n// Parser - builds up the property tree from the path strings\n\nvar RePathPart = /([\\w\\d_]+)(\\])?(\\[|\\.)?/g;\n\n// extracts\n// \t- the identifier (member name or array index)\n// - followed by an optional right bracket (found when array index)\n// - followed by an optional left bracket or dot (type of subscript)\n//\n// Note: These portions can be read in a non-overlapping fashion and\n// allow straightforward parsing of the hierarchy that WebGL encodes\n// in the uniform names.\n\nfunction addUniform( container, uniformObject ) {\n\n\tcontainer.seq.push( uniformObject );\n\tcontainer.map[ uniformObject.id ] = uniformObject;\n\n}\n\nfunction parseUniform( activeInfo, addr, container ) {\n\n\tvar path = activeInfo.name,\n\t\tpathLength = path.length;\n\n\t// reset RegExp object, because of the early exit of a previous run\n\tRePathPart.lastIndex = 0;\n\n\tfor (; ;) {\n\n\t\tvar match = RePathPart.exec( path ),\n\t\t\tmatchEnd = RePathPart.lastIndex,\n\n\t\t\tid = match[ 1 ],\n\t\t\tidIsIndex = match[ 2 ] === ']',\n\t\t\tsubscript = match[ 3 ];\n\n\t\tif ( idIsIndex ) id = id | 0; // convert to integer\n\n\t\tif ( subscript === undefined ||\n\t\t\t\tsubscript === '[' && matchEnd + 2 === pathLength ) {\n\t\t\t// bare name or \"pure\" bottom-level array \"[0]\" suffix\n\n\t\t\taddUniform( container, subscript === undefined ?\n\t\t\t\t\tnew SingleUniform( id, activeInfo, addr ) :\n\t\t\t\t\tnew PureArrayUniform( id, activeInfo, addr ) );\n\n\t\t\tbreak;\n\n\t\t} else {\n\t\t\t// step into inner node / create it in case it doesn't exist\n\n\t\t\tvar map = container.map,\n\t\t\t\tnext = map[ id ];\n\n\t\t\tif ( next === undefined ) {\n\n\t\t\t\tnext = new StructuredUniform( id );\n\t\t\t\taddUniform( container, next );\n\n\t\t\t}\n\n\t\t\tcontainer = next;\n\n\t\t}\n\n\t}\n\n}\n\n// Root Container\n\nfunction WebGLUniforms( gl, program, renderer ) {\n\n\tUniformContainer.call( this );\n\n\tthis.renderer = renderer;\n\n\tvar n = gl.getProgramParameter( program, gl.ACTIVE_UNIFORMS );\n\n\tfor ( var i = 0; i !== n; ++ i ) {\n\n\t\tvar info = gl.getActiveUniform( program, i ),\n\t\t\tpath = info.name,\n\t\t\taddr = gl.getUniformLocation( program, path );\n\n\t\tparseUniform( info, addr, this );\n\n\t}\n\n}\n\nWebGLUniforms.prototype.setValue = function( gl, name, value ) {\n\n\tvar u = this.map[ name ];\n\n\tif ( u !== undefined ) u.setValue( gl, value, this.renderer );\n\n};\n\nWebGLUniforms.prototype.set = function( gl, object, name ) {\n\n\tvar u = this.map[ name ];\n\n\tif ( u !== undefined ) u.setValue( gl, object[ name ], this.renderer );\n\n};\n\nWebGLUniforms.prototype.setOptional = function( gl, object, name ) {\n\n\tvar v = object[ name ];\n\n\tif ( v !== undefined ) this.setValue( gl, name, v );\n\n};\n\n\n// Static interface\n\nWebGLUniforms.upload = function( gl, seq, values, renderer ) {\n\n\tfor ( var i = 0, n = seq.length; i !== n; ++ i ) {\n\n\t\tvar u = seq[ i ],\n\t\t\tv = values[ u.id ];\n\n\t\tif ( v.needsUpdate !== false ) {\n\t\t\t// note: always updating when .needsUpdate is undefined\n\n\t\t\tu.setValue( gl, v.value, renderer );\n\n\t\t}\n\n\t}\n\n};\n\nWebGLUniforms.seqWithValue = function( seq, values ) {\n\n\tvar r = [];\n\n\tfor ( var i = 0, n = seq.length; i !== n; ++ i ) {\n\n\t\tvar u = seq[ i ];\n\t\tif ( u.id in values ) r.push( u );\n\n\t}\n\n\treturn r;\n\n};\n\nexport { WebGLUniforms };\n","/**\n * Uniform Utilities\n */\n\nvar UniformsUtils = {\n\n\tmerge: function ( uniforms ) {\n\n\t\tvar merged = {};\n\n\t\tfor ( var u = 0; u < uniforms.length; u ++ ) {\n\n\t\t\tvar tmp = this.clone( uniforms[ u ] );\n\n\t\t\tfor ( var p in tmp ) {\n\n\t\t\t\tmerged[ p ] = tmp[ p ];\n\n\t\t\t}\n\n\t\t}\n\n\t\treturn merged;\n\n\t},\n\n\tclone: function ( uniforms_src ) {\n\n\t\tvar uniforms_dst = {};\n\n\t\tfor ( var u in uniforms_src ) {\n\n\t\t\tuniforms_dst[ u ] = {};\n\n\t\t\tfor ( var p in uniforms_src[ u ] ) {\n\n\t\t\t\tvar parameter_src = uniforms_src[ u ][ p ];\n\n\t\t\t\tif ( parameter_src && ( parameter_src.isColor ||\n\t\t\t\t\tparameter_src.isMatrix3 || parameter_src.isMatrix4 ||\n\t\t\t\t\tparameter_src.isVector2 || parameter_src.isVector3 || parameter_src.isVector4 ||\n\t\t\t\t\tparameter_src.isTexture ) ) {\n\n\t\t\t\t\tuniforms_dst[ u ][ p ] = parameter_src.clone();\n\n\t\t\t\t} else if ( Array.isArray( parameter_src ) ) {\n\n\t\t\t\t\tuniforms_dst[ u ][ p ] = parameter_src.slice();\n\n\t\t\t\t} else {\n\n\t\t\t\t\tuniforms_dst[ u ][ p ] = parameter_src;\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t}\n\n\t\treturn uniforms_dst;\n\n\t}\n\n};\n\n\nexport { UniformsUtils };\n","import alphamap_fragment from './ShaderChunk/alphamap_fragment.glsl';\nimport alphamap_pars_fragment from './ShaderChunk/alphamap_pars_fragment.glsl';\nimport alphatest_fragment from './ShaderChunk/alphatest_fragment.glsl';\nimport aomap_fragment from './ShaderChunk/aomap_fragment.glsl';\nimport aomap_pars_fragment from './ShaderChunk/aomap_pars_fragment.glsl';\nimport begin_vertex from './ShaderChunk/begin_vertex.glsl';\nimport beginnormal_vertex from './ShaderChunk/beginnormal_vertex.glsl';\nimport bsdfs from './ShaderChunk/bsdfs.glsl';\nimport bumpmap_pars_fragment from './ShaderChunk/bumpmap_pars_fragment.glsl';\nimport clipping_planes_fragment from './ShaderChunk/clipping_planes_fragment.glsl';\nimport clipping_planes_pars_fragment from './ShaderChunk/clipping_planes_pars_fragment.glsl';\nimport clipping_planes_pars_vertex from './ShaderChunk/clipping_planes_pars_vertex.glsl';\nimport clipping_planes_vertex from './ShaderChunk/clipping_planes_vertex.glsl';\nimport color_fragment from './ShaderChunk/color_fragment.glsl';\nimport color_pars_fragment from './ShaderChunk/color_pars_fragment.glsl';\nimport color_pars_vertex from './ShaderChunk/color_pars_vertex.glsl';\nimport color_vertex from './ShaderChunk/color_vertex.glsl';\nimport common from './ShaderChunk/common.glsl';\nimport cube_uv_reflection_fragment from './ShaderChunk/cube_uv_reflection_fragment.glsl';\nimport defaultnormal_vertex from './ShaderChunk/defaultnormal_vertex.glsl';\nimport displacementmap_pars_vertex from './ShaderChunk/displacementmap_pars_vertex.glsl';\nimport displacementmap_vertex from './ShaderChunk/displacementmap_vertex.glsl';\nimport emissivemap_fragment from './ShaderChunk/emissivemap_fragment.glsl';\nimport emissivemap_pars_fragment from './ShaderChunk/emissivemap_pars_fragment.glsl';\nimport encodings_fragment from './ShaderChunk/encodings_fragment.glsl';\nimport encodings_pars_fragment from './ShaderChunk/encodings_pars_fragment.glsl';\nimport envmap_fragment from './ShaderChunk/envmap_fragment.glsl';\nimport envmap_pars_fragment from './ShaderChunk/envmap_pars_fragment.glsl';\nimport envmap_pars_vertex from './ShaderChunk/envmap_pars_vertex.glsl';\nimport envmap_vertex from './ShaderChunk/envmap_vertex.glsl';\nimport fog_fragment from './ShaderChunk/fog_fragment.glsl';\nimport fog_pars_fragment from './ShaderChunk/fog_pars_fragment.glsl';\nimport lightmap_fragment from './ShaderChunk/lightmap_fragment.glsl';\nimport lightmap_pars_fragment from './ShaderChunk/lightmap_pars_fragment.glsl';\nimport lights_lambert_vertex from './ShaderChunk/lights_lambert_vertex.glsl';\nimport lights_pars from './ShaderChunk/lights_pars.glsl';\nimport lights_phong_fragment from './ShaderChunk/lights_phong_fragment.glsl';\nimport lights_phong_pars_fragment from './ShaderChunk/lights_phong_pars_fragment.glsl';\nimport lights_physical_fragment from './ShaderChunk/lights_physical_fragment.glsl';\nimport lights_physical_pars_fragment from './ShaderChunk/lights_physical_pars_fragment.glsl';\nimport lights_template from './ShaderChunk/lights_template.glsl';\nimport logdepthbuf_fragment from './ShaderChunk/logdepthbuf_fragment.glsl';\nimport logdepthbuf_pars_fragment from './ShaderChunk/logdepthbuf_pars_fragment.glsl';\nimport logdepthbuf_pars_vertex from './ShaderChunk/logdepthbuf_pars_vertex.glsl';\nimport logdepthbuf_vertex from './ShaderChunk/logdepthbuf_vertex.glsl';\nimport map_fragment from './ShaderChunk/map_fragment.glsl';\nimport map_pars_fragment from './ShaderChunk/map_pars_fragment.glsl';\nimport map_particle_fragment from './ShaderChunk/map_particle_fragment.glsl';\nimport map_particle_pars_fragment from './ShaderChunk/map_particle_pars_fragment.glsl';\nimport metalnessmap_fragment from './ShaderChunk/metalnessmap_fragment.glsl';\nimport metalnessmap_pars_fragment from './ShaderChunk/metalnessmap_pars_fragment.glsl';\nimport morphnormal_vertex from './ShaderChunk/morphnormal_vertex.glsl';\nimport morphtarget_pars_vertex from './ShaderChunk/morphtarget_pars_vertex.glsl';\nimport morphtarget_vertex from './ShaderChunk/morphtarget_vertex.glsl';\nimport normal_flip from './ShaderChunk/normal_flip.glsl';\nimport normal_fragment from './ShaderChunk/normal_fragment.glsl';\nimport normalmap_pars_fragment from './ShaderChunk/normalmap_pars_fragment.glsl';\nimport packing from './ShaderChunk/packing.glsl';\nimport premultiplied_alpha_fragment from './ShaderChunk/premultiplied_alpha_fragment.glsl';\nimport project_vertex from './ShaderChunk/project_vertex.glsl';\nimport roughnessmap_fragment from './ShaderChunk/roughnessmap_fragment.glsl';\nimport roughnessmap_pars_fragment from './ShaderChunk/roughnessmap_pars_fragment.glsl';\nimport shadowmap_pars_fragment from './ShaderChunk/shadowmap_pars_fragment.glsl';\nimport shadowmap_pars_vertex from './ShaderChunk/shadowmap_pars_vertex.glsl';\nimport shadowmap_vertex from './ShaderChunk/shadowmap_vertex.glsl';\nimport shadowmask_pars_fragment from './ShaderChunk/shadowmask_pars_fragment.glsl';\nimport skinbase_vertex from './ShaderChunk/skinbase_vertex.glsl';\nimport skinning_pars_vertex from './ShaderChunk/skinning_pars_vertex.glsl';\nimport skinning_vertex from './ShaderChunk/skinning_vertex.glsl';\nimport skinnormal_vertex from './ShaderChunk/skinnormal_vertex.glsl';\nimport specularmap_fragment from './ShaderChunk/specularmap_fragment.glsl';\nimport specularmap_pars_fragment from './ShaderChunk/specularmap_pars_fragment.glsl';\nimport tonemapping_fragment from './ShaderChunk/tonemapping_fragment.glsl';\nimport tonemapping_pars_fragment from './ShaderChunk/tonemapping_pars_fragment.glsl';\nimport uv_pars_fragment from './ShaderChunk/uv_pars_fragment.glsl';\nimport uv_pars_vertex from './ShaderChunk/uv_pars_vertex.glsl';\nimport uv_vertex from './ShaderChunk/uv_vertex.glsl';\nimport uv2_pars_fragment from './ShaderChunk/uv2_pars_fragment.glsl';\nimport uv2_pars_vertex from './ShaderChunk/uv2_pars_vertex.glsl';\nimport uv2_vertex from './ShaderChunk/uv2_vertex.glsl';\nimport worldpos_vertex from './ShaderChunk/worldpos_vertex.glsl';\n\nimport cube_frag from './ShaderLib/cube_frag.glsl';\nimport cube_vert from './ShaderLib/cube_vert.glsl';\nimport depth_frag from './ShaderLib/depth_frag.glsl';\nimport depth_vert from './ShaderLib/depth_vert.glsl';\nimport distanceRGBA_frag from './ShaderLib/distanceRGBA_frag.glsl';\nimport distanceRGBA_vert from './ShaderLib/distanceRGBA_vert.glsl';\nimport equirect_frag from './ShaderLib/equirect_frag.glsl';\nimport equirect_vert from './ShaderLib/equirect_vert.glsl';\nimport linedashed_frag from './ShaderLib/linedashed_frag.glsl';\nimport linedashed_vert from './ShaderLib/linedashed_vert.glsl';\nimport meshbasic_frag from './ShaderLib/meshbasic_frag.glsl';\nimport meshbasic_vert from './ShaderLib/meshbasic_vert.glsl';\nimport meshlambert_frag from './ShaderLib/meshlambert_frag.glsl';\nimport meshlambert_vert from './ShaderLib/meshlambert_vert.glsl';\nimport meshphong_frag from './ShaderLib/meshphong_frag.glsl';\nimport meshphong_vert from './ShaderLib/meshphong_vert.glsl';\nimport meshphysical_frag from './ShaderLib/meshphysical_frag.glsl';\nimport meshphysical_vert from './ShaderLib/meshphysical_vert.glsl';\nimport normal_frag from './ShaderLib/normal_frag.glsl';\nimport normal_vert from './ShaderLib/normal_vert.glsl';\nimport points_frag from './ShaderLib/points_frag.glsl';\nimport points_vert from './ShaderLib/points_vert.glsl';\nimport shadow_frag from './ShaderLib/shadow_frag.glsl';\nimport shadow_vert from './ShaderLib/shadow_vert.glsl';\n\nexport var ShaderChunk = {\n\talphamap_fragment: alphamap_fragment,\n\talphamap_pars_fragment: alphamap_pars_fragment,\n\talphatest_fragment: alphatest_fragment,\n\taomap_fragment: aomap_fragment,\n\taomap_pars_fragment: aomap_pars_fragment,\n\tbegin_vertex: begin_vertex,\n\tbeginnormal_vertex: beginnormal_vertex,\n\tbsdfs: bsdfs,\n\tbumpmap_pars_fragment: bumpmap_pars_fragment,\n\tclipping_planes_fragment: clipping_planes_fragment,\n\tclipping_planes_pars_fragment: clipping_planes_pars_fragment,\n\tclipping_planes_pars_vertex: clipping_planes_pars_vertex,\n\tclipping_planes_vertex: clipping_planes_vertex,\n\tcolor_fragment: color_fragment,\n\tcolor_pars_fragment: color_pars_fragment,\n\tcolor_pars_vertex: color_pars_vertex,\n\tcolor_vertex: color_vertex,\n\tcommon: common,\n\tcube_uv_reflection_fragment: cube_uv_reflection_fragment,\n\tdefaultnormal_vertex: defaultnormal_vertex,\n\tdisplacementmap_pars_vertex: displacementmap_pars_vertex,\n\tdisplacementmap_vertex: displacementmap_vertex,\n\temissivemap_fragment: emissivemap_fragment,\n\temissivemap_pars_fragment: emissivemap_pars_fragment,\n\tencodings_fragment: encodings_fragment,\n\tencodings_pars_fragment: encodings_pars_fragment,\n\tenvmap_fragment: envmap_fragment,\n\tenvmap_pars_fragment: envmap_pars_fragment,\n\tenvmap_pars_vertex: envmap_pars_vertex,\n\tenvmap_vertex: envmap_vertex,\n\tfog_fragment: fog_fragment,\n\tfog_pars_fragment: fog_pars_fragment,\n\tlightmap_fragment: lightmap_fragment,\n\tlightmap_pars_fragment: lightmap_pars_fragment,\n\tlights_lambert_vertex: lights_lambert_vertex,\n\tlights_pars: lights_pars,\n\tlights_phong_fragment: lights_phong_fragment,\n\tlights_phong_pars_fragment: lights_phong_pars_fragment,\n\tlights_physical_fragment: lights_physical_fragment,\n\tlights_physical_pars_fragment: lights_physical_pars_fragment,\n\tlights_template: lights_template,\n\tlogdepthbuf_fragment: logdepthbuf_fragment,\n\tlogdepthbuf_pars_fragment: logdepthbuf_pars_fragment,\n\tlogdepthbuf_pars_vertex: logdepthbuf_pars_vertex,\n\tlogdepthbuf_vertex: logdepthbuf_vertex,\n\tmap_fragment: map_fragment,\n\tmap_pars_fragment: map_pars_fragment,\n\tmap_particle_fragment: map_particle_fragment,\n\tmap_particle_pars_fragment: map_particle_pars_fragment,\n\tmetalnessmap_fragment: metalnessmap_fragment,\n\tmetalnessmap_pars_fragment: metalnessmap_pars_fragment,\n\tmorphnormal_vertex: morphnormal_vertex,\n\tmorphtarget_pars_vertex: morphtarget_pars_vertex,\n\tmorphtarget_vertex: morphtarget_vertex,\n\tnormal_flip: normal_flip,\n\tnormal_fragment: normal_fragment,\n\tnormalmap_pars_fragment: normalmap_pars_fragment,\n\tpacking: packing,\n\tpremultiplied_alpha_fragment: premultiplied_alpha_fragment,\n\tproject_vertex: project_vertex,\n\troughnessmap_fragment: roughnessmap_fragment,\n\troughnessmap_pars_fragment: roughnessmap_pars_fragment,\n\tshadowmap_pars_fragment: shadowmap_pars_fragment,\n\tshadowmap_pars_vertex: shadowmap_pars_vertex,\n\tshadowmap_vertex: shadowmap_vertex,\n\tshadowmask_pars_fragment: shadowmask_pars_fragment,\n\tskinbase_vertex: skinbase_vertex,\n\tskinning_pars_vertex: skinning_pars_vertex,\n\tskinning_vertex: skinning_vertex,\n\tskinnormal_vertex: skinnormal_vertex,\n\tspecularmap_fragment: specularmap_fragment,\n\tspecularmap_pars_fragment: specularmap_pars_fragment,\n\ttonemapping_fragment: tonemapping_fragment,\n\ttonemapping_pars_fragment: tonemapping_pars_fragment,\n\tuv_pars_fragment: uv_pars_fragment,\n\tuv_pars_vertex: uv_pars_vertex,\n\tuv_vertex: uv_vertex,\n\tuv2_pars_fragment: uv2_pars_fragment,\n\tuv2_pars_vertex: uv2_pars_vertex,\n\tuv2_vertex: uv2_vertex,\n\tworldpos_vertex: worldpos_vertex,\n\n\tcube_frag: cube_frag,\n\tcube_vert: cube_vert,\n\tdepth_frag: depth_frag,\n\tdepth_vert: depth_vert,\n\tdistanceRGBA_frag: distanceRGBA_frag,\n\tdistanceRGBA_vert: distanceRGBA_vert,\n\tequirect_frag: equirect_frag,\n\tequirect_vert: equirect_vert,\n\tlinedashed_frag: linedashed_frag,\n\tlinedashed_vert: linedashed_vert,\n\tmeshbasic_frag: meshbasic_frag,\n\tmeshbasic_vert: meshbasic_vert,\n\tmeshlambert_frag: meshlambert_frag,\n\tmeshlambert_vert: meshlambert_vert,\n\tmeshphong_frag: meshphong_frag,\n\tmeshphong_vert: meshphong_vert,\n\tmeshphysical_frag: meshphysical_frag,\n\tmeshphysical_vert: meshphysical_vert,\n\tnormal_frag: normal_frag,\n\tnormal_vert: normal_vert,\n\tpoints_frag: points_frag,\n\tpoints_vert: points_vert,\n\tshadow_frag: shadow_frag,\n\tshadow_vert: shadow_vert\n};\n","import { _Math } from './Math';\n\n/**\n * @author mrdoob / http://mrdoob.com/\n */\n\nfunction Color( r, g, b ) {\n\n\tif ( g === undefined && b === undefined ) {\n\n\t\t// r is THREE.Color, hex or string\n\t\treturn this.set( r );\n\n\t}\n\n\treturn this.setRGB( r, g, b );\n\n}\n\nColor.prototype = {\n\n\tconstructor: Color,\n\n\tisColor: true,\n\n\tr: 1, g: 1, b: 1,\n\n\tset: function ( value ) {\n\n\t\tif ( (value && value.isColor) ) {\n\n\t\t\tthis.copy( value );\n\n\t\t} else if ( typeof value === 'number' ) {\n\n\t\t\tthis.setHex( value );\n\n\t\t} else if ( typeof value === 'string' ) {\n\n\t\t\tthis.setStyle( value );\n\n\t\t}\n\n\t\treturn this;\n\n\t},\n\n\tsetScalar: function ( scalar ) {\n\n\t\tthis.r = scalar;\n\t\tthis.g = scalar;\n\t\tthis.b = scalar;\n\n\t\treturn this;\n\n\t},\n\n\tsetHex: function ( hex ) {\n\n\t\thex = Math.floor( hex );\n\n\t\tthis.r = ( hex >> 16 & 255 ) / 255;\n\t\tthis.g = ( hex >> 8 & 255 ) / 255;\n\t\tthis.b = ( hex & 255 ) / 255;\n\n\t\treturn this;\n\n\t},\n\n\tsetRGB: function ( r, g, b ) {\n\n\t\tthis.r = r;\n\t\tthis.g = g;\n\t\tthis.b = b;\n\n\t\treturn this;\n\n\t},\n\n\tsetHSL: function () {\n\n\t\tfunction hue2rgb( p, q, t ) {\n\n\t\t\tif ( t < 0 ) t += 1;\n\t\t\tif ( t > 1 ) t -= 1;\n\t\t\tif ( t < 1 / 6 ) return p + ( q - p ) * 6 * t;\n\t\t\tif ( t < 1 / 2 ) return q;\n\t\t\tif ( t < 2 / 3 ) return p + ( q - p ) * 6 * ( 2 / 3 - t );\n\t\t\treturn p;\n\n\t\t}\n\n\t\treturn function setHSL( h, s, l ) {\n\n\t\t\t// h,s,l ranges are in 0.0 - 1.0\n\t\t\th = _Math.euclideanModulo( h, 1 );\n\t\t\ts = _Math.clamp( s, 0, 1 );\n\t\t\tl = _Math.clamp( l, 0, 1 );\n\n\t\t\tif ( s === 0 ) {\n\n\t\t\t\tthis.r = this.g = this.b = l;\n\n\t\t\t} else {\n\n\t\t\t\tvar p = l <= 0.5 ? l * ( 1 + s ) : l + s - ( l * s );\n\t\t\t\tvar q = ( 2 * l ) - p;\n\n\t\t\t\tthis.r = hue2rgb( q, p, h + 1 / 3 );\n\t\t\t\tthis.g = hue2rgb( q, p, h );\n\t\t\t\tthis.b = hue2rgb( q, p, h - 1 / 3 );\n\n\t\t\t}\n\n\t\t\treturn this;\n\n\t\t};\n\n\t}(),\n\n\tsetStyle: function ( style ) {\n\n\t\tfunction handleAlpha( string ) {\n\n\t\t\tif ( string === undefined ) return;\n\n\t\t\tif ( parseFloat( string ) < 1 ) {\n\n\t\t\t\tconsole.warn( 'THREE.Color: Alpha component of ' + style + ' will be ignored.' );\n\n\t\t\t}\n\n\t\t}\n\n\n\t\tvar m;\n\n\t\tif ( m = /^((?:rgb|hsl)a?)\\(\\s*([^\\)]*)\\)/.exec( style ) ) {\n\n\t\t\t// rgb / hsl\n\n\t\t\tvar color;\n\t\t\tvar name = m[ 1 ];\n\t\t\tvar components = m[ 2 ];\n\n\t\t\tswitch ( name ) {\n\n\t\t\t\tcase 'rgb':\n\t\t\t\tcase 'rgba':\n\n\t\t\t\t\tif ( color = /^(\\d+)\\s*,\\s*(\\d+)\\s*,\\s*(\\d+)\\s*(,\\s*([0-9]*\\.?[0-9]+)\\s*)?$/.exec( components ) ) {\n\n\t\t\t\t\t\t// rgb(255,0,0) rgba(255,0,0,0.5)\n\t\t\t\t\t\tthis.r = Math.min( 255, parseInt( color[ 1 ], 10 ) ) / 255;\n\t\t\t\t\t\tthis.g = Math.min( 255, parseInt( color[ 2 ], 10 ) ) / 255;\n\t\t\t\t\t\tthis.b = Math.min( 255, parseInt( color[ 3 ], 10 ) ) / 255;\n\n\t\t\t\t\t\thandleAlpha( color[ 5 ] );\n\n\t\t\t\t\t\treturn this;\n\n\t\t\t\t\t}\n\n\t\t\t\t\tif ( color = /^(\\d+)\\%\\s*,\\s*(\\d+)\\%\\s*,\\s*(\\d+)\\%\\s*(,\\s*([0-9]*\\.?[0-9]+)\\s*)?$/.exec( components ) ) {\n\n\t\t\t\t\t\t// rgb(100%,0%,0%) rgba(100%,0%,0%,0.5)\n\t\t\t\t\t\tthis.r = Math.min( 100, parseInt( color[ 1 ], 10 ) ) / 100;\n\t\t\t\t\t\tthis.g = Math.min( 100, parseInt( color[ 2 ], 10 ) ) / 100;\n\t\t\t\t\t\tthis.b = Math.min( 100, parseInt( color[ 3 ], 10 ) ) / 100;\n\n\t\t\t\t\t\thandleAlpha( color[ 5 ] );\n\n\t\t\t\t\t\treturn this;\n\n\t\t\t\t\t}\n\n\t\t\t\t\tbreak;\n\n\t\t\t\tcase 'hsl':\n\t\t\t\tcase 'hsla':\n\n\t\t\t\t\tif ( color = /^([0-9]*\\.?[0-9]+)\\s*,\\s*(\\d+)\\%\\s*,\\s*(\\d+)\\%\\s*(,\\s*([0-9]*\\.?[0-9]+)\\s*)?$/.exec( components ) ) {\n\n\t\t\t\t\t\t// hsl(120,50%,50%) hsla(120,50%,50%,0.5)\n\t\t\t\t\t\tvar h = parseFloat( color[ 1 ] ) / 360;\n\t\t\t\t\t\tvar s = parseInt( color[ 2 ], 10 ) / 100;\n\t\t\t\t\t\tvar l = parseInt( color[ 3 ], 10 ) / 100;\n\n\t\t\t\t\t\thandleAlpha( color[ 5 ] );\n\n\t\t\t\t\t\treturn this.setHSL( h, s, l );\n\n\t\t\t\t\t}\n\n\t\t\t\t\tbreak;\n\n\t\t\t}\n\n\t\t} else if ( m = /^\\#([A-Fa-f0-9]+)$/.exec( style ) ) {\n\n\t\t\t// hex color\n\n\t\t\tvar hex = m[ 1 ];\n\t\t\tvar size = hex.length;\n\n\t\t\tif ( size === 3 ) {\n\n\t\t\t\t// #ff0\n\t\t\t\tthis.r = parseInt( hex.charAt( 0 ) + hex.charAt( 0 ), 16 ) / 255;\n\t\t\t\tthis.g = parseInt( hex.charAt( 1 ) + hex.charAt( 1 ), 16 ) / 255;\n\t\t\t\tthis.b = parseInt( hex.charAt( 2 ) + hex.charAt( 2 ), 16 ) / 255;\n\n\t\t\t\treturn this;\n\n\t\t\t} else if ( size === 6 ) {\n\n\t\t\t\t// #ff0000\n\t\t\t\tthis.r = parseInt( hex.charAt( 0 ) + hex.charAt( 1 ), 16 ) / 255;\n\t\t\t\tthis.g = parseInt( hex.charAt( 2 ) + hex.charAt( 3 ), 16 ) / 255;\n\t\t\t\tthis.b = parseInt( hex.charAt( 4 ) + hex.charAt( 5 ), 16 ) / 255;\n\n\t\t\t\treturn this;\n\n\t\t\t}\n\n\t\t}\n\n\t\tif ( style && style.length > 0 ) {\n\n\t\t\t// color keywords\n\t\t\tvar hex = ColorKeywords[ style ];\n\n\t\t\tif ( hex !== undefined ) {\n\n\t\t\t\t// red\n\t\t\t\tthis.setHex( hex );\n\n\t\t\t} else {\n\n\t\t\t\t// unknown color\n\t\t\t\tconsole.warn( 'THREE.Color: Unknown color ' + style );\n\n\t\t\t}\n\n\t\t}\n\n\t\treturn this;\n\n\t},\n\n\tclone: function () {\n\n\t\treturn new this.constructor( this.r, this.g, this.b );\n\n\t},\n\n\tcopy: function ( color ) {\n\n\t\tthis.r = color.r;\n\t\tthis.g = color.g;\n\t\tthis.b = color.b;\n\n\t\treturn this;\n\n\t},\n\n\tcopyGammaToLinear: function ( color, gammaFactor ) {\n\n\t\tif ( gammaFactor === undefined ) gammaFactor = 2.0;\n\n\t\tthis.r = Math.pow( color.r, gammaFactor );\n\t\tthis.g = Math.pow( color.g, gammaFactor );\n\t\tthis.b = Math.pow( color.b, gammaFactor );\n\n\t\treturn this;\n\n\t},\n\n\tcopyLinearToGamma: function ( color, gammaFactor ) {\n\n\t\tif ( gammaFactor === undefined ) gammaFactor = 2.0;\n\n\t\tvar safeInverse = ( gammaFactor > 0 ) ? ( 1.0 / gammaFactor ) : 1.0;\n\n\t\tthis.r = Math.pow( color.r, safeInverse );\n\t\tthis.g = Math.pow( color.g, safeInverse );\n\t\tthis.b = Math.pow( color.b, safeInverse );\n\n\t\treturn this;\n\n\t},\n\n\tconvertGammaToLinear: function () {\n\n\t\tvar r = this.r, g = this.g, b = this.b;\n\n\t\tthis.r = r * r;\n\t\tthis.g = g * g;\n\t\tthis.b = b * b;\n\n\t\treturn this;\n\n\t},\n\n\tconvertLinearToGamma: function () {\n\n\t\tthis.r = Math.sqrt( this.r );\n\t\tthis.g = Math.sqrt( this.g );\n\t\tthis.b = Math.sqrt( this.b );\n\n\t\treturn this;\n\n\t},\n\n\tgetHex: function () {\n\n\t\treturn ( this.r * 255 ) << 16 ^ ( this.g * 255 ) << 8 ^ ( this.b * 255 ) << 0;\n\n\t},\n\n\tgetHexString: function () {\n\n\t\treturn ( '000000' + this.getHex().toString( 16 ) ).slice( - 6 );\n\n\t},\n\n\tgetHSL: function ( optionalTarget ) {\n\n\t\t// h,s,l ranges are in 0.0 - 1.0\n\n\t\tvar hsl = optionalTarget || { h: 0, s: 0, l: 0 };\n\n\t\tvar r = this.r, g = this.g, b = this.b;\n\n\t\tvar max = Math.max( r, g, b );\n\t\tvar min = Math.min( r, g, b );\n\n\t\tvar hue, saturation;\n\t\tvar lightness = ( min + max ) / 2.0;\n\n\t\tif ( min === max ) {\n\n\t\t\thue = 0;\n\t\t\tsaturation = 0;\n\n\t\t} else {\n\n\t\t\tvar delta = max - min;\n\n\t\t\tsaturation = lightness <= 0.5 ? delta / ( max + min ) : delta / ( 2 - max - min );\n\n\t\t\tswitch ( max ) {\n\n\t\t\t\tcase r: hue = ( g - b ) / delta + ( g < b ? 6 : 0 ); break;\n\t\t\t\tcase g: hue = ( b - r ) / delta + 2; break;\n\t\t\t\tcase b: hue = ( r - g ) / delta + 4; break;\n\n\t\t\t}\n\n\t\t\thue /= 6;\n\n\t\t}\n\n\t\thsl.h = hue;\n\t\thsl.s = saturation;\n\t\thsl.l = lightness;\n\n\t\treturn hsl;\n\n\t},\n\n\tgetStyle: function () {\n\n\t\treturn 'rgb(' + ( ( this.r * 255 ) | 0 ) + ',' + ( ( this.g * 255 ) | 0 ) + ',' + ( ( this.b * 255 ) | 0 ) + ')';\n\n\t},\n\n\toffsetHSL: function ( h, s, l ) {\n\n\t\tvar hsl = this.getHSL();\n\n\t\thsl.h += h; hsl.s += s; hsl.l += l;\n\n\t\tthis.setHSL( hsl.h, hsl.s, hsl.l );\n\n\t\treturn this;\n\n\t},\n\n\tadd: function ( color ) {\n\n\t\tthis.r += color.r;\n\t\tthis.g += color.g;\n\t\tthis.b += color.b;\n\n\t\treturn this;\n\n\t},\n\n\taddColors: function ( color1, color2 ) {\n\n\t\tthis.r = color1.r + color2.r;\n\t\tthis.g = color1.g + color2.g;\n\t\tthis.b = color1.b + color2.b;\n\n\t\treturn this;\n\n\t},\n\n\taddScalar: function ( s ) {\n\n\t\tthis.r += s;\n\t\tthis.g += s;\n\t\tthis.b += s;\n\n\t\treturn this;\n\n\t},\n\n\tsub: function( color ) {\n\n\t\tthis.r = Math.max( 0, this.r - color.r );\n\t\tthis.g = Math.max( 0, this.g - color.g );\n\t\tthis.b = Math.max( 0, this.b - color.b );\n\n\t\treturn this;\n\n\t},\n\n\tmultiply: function ( color ) {\n\n\t\tthis.r *= color.r;\n\t\tthis.g *= color.g;\n\t\tthis.b *= color.b;\n\n\t\treturn this;\n\n\t},\n\n\tmultiplyScalar: function ( s ) {\n\n\t\tthis.r *= s;\n\t\tthis.g *= s;\n\t\tthis.b *= s;\n\n\t\treturn this;\n\n\t},\n\n\tlerp: function ( color, alpha ) {\n\n\t\tthis.r += ( color.r - this.r ) * alpha;\n\t\tthis.g += ( color.g - this.g ) * alpha;\n\t\tthis.b += ( color.b - this.b ) * alpha;\n\n\t\treturn this;\n\n\t},\n\n\tequals: function ( c ) {\n\n\t\treturn ( c.r === this.r ) && ( c.g === this.g ) && ( c.b === this.b );\n\n\t},\n\n\tfromArray: function ( array, offset ) {\n\n\t\tif ( offset === undefined ) offset = 0;\n\n\t\tthis.r = array[ offset ];\n\t\tthis.g = array[ offset + 1 ];\n\t\tthis.b = array[ offset + 2 ];\n\n\t\treturn this;\n\n\t},\n\n\ttoArray: function ( array, offset ) {\n\n\t\tif ( array === undefined ) array = [];\n\t\tif ( offset === undefined ) offset = 0;\n\n\t\tarray[ offset ] = this.r;\n\t\tarray[ offset + 1 ] = this.g;\n\t\tarray[ offset + 2 ] = this.b;\n\n\t\treturn array;\n\n\t},\n\n\ttoJSON: function () {\n\n\t\treturn this.getHex();\n\n\t}\n\n};\n\nvar ColorKeywords = { 'aliceblue': 0xF0F8FF, 'antiquewhite': 0xFAEBD7, 'aqua': 0x00FFFF, 'aquamarine': 0x7FFFD4, 'azure': 0xF0FFFF,\n'beige': 0xF5F5DC, 'bisque': 0xFFE4C4, 'black': 0x000000, 'blanchedalmond': 0xFFEBCD, 'blue': 0x0000FF, 'blueviolet': 0x8A2BE2,\n'brown': 0xA52A2A, 'burlywood': 0xDEB887, 'cadetblue': 0x5F9EA0, 'chartreuse': 0x7FFF00, 'chocolate': 0xD2691E, 'coral': 0xFF7F50,\n'cornflowerblue': 0x6495ED, 'cornsilk': 0xFFF8DC, 'crimson': 0xDC143C, 'cyan': 0x00FFFF, 'darkblue': 0x00008B, 'darkcyan': 0x008B8B,\n'darkgoldenrod': 0xB8860B, 'darkgray': 0xA9A9A9, 'darkgreen': 0x006400, 'darkgrey': 0xA9A9A9, 'darkkhaki': 0xBDB76B, 'darkmagenta': 0x8B008B,\n'darkolivegreen': 0x556B2F, 'darkorange': 0xFF8C00, 'darkorchid': 0x9932CC, 'darkred': 0x8B0000, 'darksalmon': 0xE9967A, 'darkseagreen': 0x8FBC8F,\n'darkslateblue': 0x483D8B, 'darkslategray': 0x2F4F4F, 'darkslategrey': 0x2F4F4F, 'darkturquoise': 0x00CED1, 'darkviolet': 0x9400D3,\n'deeppink': 0xFF1493, 'deepskyblue': 0x00BFFF, 'dimgray': 0x696969, 'dimgrey': 0x696969, 'dodgerblue': 0x1E90FF, 'firebrick': 0xB22222,\n'floralwhite': 0xFFFAF0, 'forestgreen': 0x228B22, 'fuchsia': 0xFF00FF, 'gainsboro': 0xDCDCDC, 'ghostwhite': 0xF8F8FF, 'gold': 0xFFD700,\n'goldenrod': 0xDAA520, 'gray': 0x808080, 'green': 0x008000, 'greenyellow': 0xADFF2F, 'grey': 0x808080, 'honeydew': 0xF0FFF0, 'hotpink': 0xFF69B4,\n'indianred': 0xCD5C5C, 'indigo': 0x4B0082, 'ivory': 0xFFFFF0, 'khaki': 0xF0E68C, 'lavender': 0xE6E6FA, 'lavenderblush': 0xFFF0F5, 'lawngreen': 0x7CFC00,\n'lemonchiffon': 0xFFFACD, 'lightblue': 0xADD8E6, 'lightcoral': 0xF08080, 'lightcyan': 0xE0FFFF, 'lightgoldenrodyellow': 0xFAFAD2, 'lightgray': 0xD3D3D3,\n'lightgreen': 0x90EE90, 'lightgrey': 0xD3D3D3, 'lightpink': 0xFFB6C1, 'lightsalmon': 0xFFA07A, 'lightseagreen': 0x20B2AA, 'lightskyblue': 0x87CEFA,\n'lightslategray': 0x778899, 'lightslategrey': 0x778899, 'lightsteelblue': 0xB0C4DE, 'lightyellow': 0xFFFFE0, 'lime': 0x00FF00, 'limegreen': 0x32CD32,\n'linen': 0xFAF0E6, 'magenta': 0xFF00FF, 'maroon': 0x800000, 'mediumaquamarine': 0x66CDAA, 'mediumblue': 0x0000CD, 'mediumorchid': 0xBA55D3,\n'mediumpurple': 0x9370DB, 'mediumseagreen': 0x3CB371, 'mediumslateblue': 0x7B68EE, 'mediumspringgreen': 0x00FA9A, 'mediumturquoise': 0x48D1CC,\n'mediumvioletred': 0xC71585, 'midnightblue': 0x191970, 'mintcream': 0xF5FFFA, 'mistyrose': 0xFFE4E1, 'moccasin': 0xFFE4B5, 'navajowhite': 0xFFDEAD,\n'navy': 0x000080, 'oldlace': 0xFDF5E6, 'olive': 0x808000, 'olivedrab': 0x6B8E23, 'orange': 0xFFA500, 'orangered': 0xFF4500, 'orchid': 0xDA70D6,\n'palegoldenrod': 0xEEE8AA, 'palegreen': 0x98FB98, 'paleturquoise': 0xAFEEEE, 'palevioletred': 0xDB7093, 'papayawhip': 0xFFEFD5, 'peachpuff': 0xFFDAB9,\n'peru': 0xCD853F, 'pink': 0xFFC0CB, 'plum': 0xDDA0DD, 'powderblue': 0xB0E0E6, 'purple': 0x800080, 'red': 0xFF0000, 'rosybrown': 0xBC8F8F,\n'royalblue': 0x4169E1, 'saddlebrown': 0x8B4513, 'salmon': 0xFA8072, 'sandybrown': 0xF4A460, 'seagreen': 0x2E8B57, 'seashell': 0xFFF5EE,\n'sienna': 0xA0522D, 'silver': 0xC0C0C0, 'skyblue': 0x87CEEB, 'slateblue': 0x6A5ACD, 'slategray': 0x708090, 'slategrey': 0x708090, 'snow': 0xFFFAFA,\n'springgreen': 0x00FF7F, 'steelblue': 0x4682B4, 'tan': 0xD2B48C, 'teal': 0x008080, 'thistle': 0xD8BFD8, 'tomato': 0xFF6347, 'turquoise': 0x40E0D0,\n'violet': 0xEE82EE, 'wheat': 0xF5DEB3, 'white': 0xFFFFFF, 'whitesmoke': 0xF5F5F5, 'yellow': 0xFFFF00, 'yellowgreen': 0x9ACD32 };\n\n\nexport { ColorKeywords, Color };\n","import { Vector4 } from '../../math/Vector4';\nimport { Color } from '../../math/Color';\nimport { Vector2 } from '../../math/Vector2';\n\n/**\n * Uniforms library for shared webgl shaders\n */\n\nvar UniformsLib = {\n\n\tcommon: {\n\n\t\tdiffuse: { value: new Color( 0xeeeeee ) },\n\t\topacity: { value: 1.0 },\n\n\t\tmap: { value: null },\n\t\toffsetRepeat: { value: new Vector4( 0, 0, 1, 1 ) },\n\n\t\tspecularMap: { value: null },\n\t\talphaMap: { value: null },\n\n\t\tenvMap: { value: null },\n\t\tflipEnvMap: { value: - 1 },\n\t\treflectivity: { value: 1.0 },\n\t\trefractionRatio: { value: 0.98 }\n\n\t},\n\n\taomap: {\n\n\t\taoMap: { value: null },\n\t\taoMapIntensity: { value: 1 }\n\n\t},\n\n\tlightmap: {\n\n\t\tlightMap: { value: null },\n\t\tlightMapIntensity: { value: 1 }\n\n\t},\n\n\temissivemap: {\n\n\t\temissiveMap: { value: null }\n\n\t},\n\n\tbumpmap: {\n\n\t\tbumpMap: { value: null },\n\t\tbumpScale: { value: 1 }\n\n\t},\n\n\tnormalmap: {\n\n\t\tnormalMap: { value: null },\n\t\tnormalScale: { value: new Vector2( 1, 1 ) }\n\n\t},\n\n\tdisplacementmap: {\n\n\t\tdisplacementMap: { value: null },\n\t\tdisplacementScale: { value: 1 },\n\t\tdisplacementBias: { value: 0 }\n\n\t},\n\n\troughnessmap: {\n\n\t\troughnessMap: { value: null }\n\n\t},\n\n\tmetalnessmap: {\n\n\t\tmetalnessMap: { value: null }\n\n\t},\n\n\tfog: {\n\n\t\tfogDensity: { value: 0.00025 },\n\t\tfogNear: { value: 1 },\n\t\tfogFar: { value: 2000 },\n\t\tfogColor: { value: new Color( 0xffffff ) }\n\n\t},\n\n\tlights: {\n\n\t\tambientLightColor: { value: [] },\n\n\t\tdirectionalLights: { value: [], properties: {\n\t\t\tdirection: {},\n\t\t\tcolor: {},\n\n\t\t\tshadow: {},\n\t\t\tshadowBias: {},\n\t\t\tshadowRadius: {},\n\t\t\tshadowMapSize: {}\n\t\t} },\n\n\t\tdirectionalShadowMap: { value: [] },\n\t\tdirectionalShadowMatrix: { value: [] },\n\n\t\tspotLights: { value: [], properties: {\n\t\t\tcolor: {},\n\t\t\tposition: {},\n\t\t\tdirection: {},\n\t\t\tdistance: {},\n\t\t\tconeCos: {},\n\t\t\tpenumbraCos: {},\n\t\t\tdecay: {},\n\n\t\t\tshadow: {},\n\t\t\tshadowBias: {},\n\t\t\tshadowRadius: {},\n\t\t\tshadowMapSize: {}\n\t\t} },\n\n\t\tspotShadowMap: { value: [] },\n\t\tspotShadowMatrix: { value: [] },\n\n\t\tpointLights: { value: [], properties: {\n\t\t\tcolor: {},\n\t\t\tposition: {},\n\t\t\tdecay: {},\n\t\t\tdistance: {},\n\n\t\t\tshadow: {},\n\t\t\tshadowBias: {},\n\t\t\tshadowRadius: {},\n\t\t\tshadowMapSize: {}\n\t\t} },\n\n\t\tpointShadowMap: { value: [] },\n\t\tpointShadowMatrix: { value: [] },\n\n\t\themisphereLights: { value: [], properties: {\n\t\t\tdirection: {},\n\t\t\tskyColor: {},\n\t\t\tgroundColor: {}\n\t\t} }\n\n\t},\n\n\tpoints: {\n\n\t\tdiffuse: { value: new Color( 0xeeeeee ) },\n\t\topacity: { value: 1.0 },\n\t\tsize: { value: 1.0 },\n\t\tscale: { value: 1.0 },\n\t\tmap: { value: null },\n\t\toffsetRepeat: { value: new Vector4( 0, 0, 1, 1 ) }\n\n\t}\n\n};\n\n\nexport { UniformsLib };\n","import { ShaderChunk } from './ShaderChunk';\nimport { UniformsUtils } from './UniformsUtils';\nimport { Vector3 } from '../../math/Vector3';\nimport { UniformsLib } from './UniformsLib';\nimport { Color } from '../../math/Color';\n\n/**\n * @author alteredq / http://alteredqualia.com/\n * @author mrdoob / http://mrdoob.com/\n * @author mikael emtinger / http://gomo.se/\n */\n\nvar ShaderLib = {\n\n\tbasic: {\n\n\t\tuniforms: UniformsUtils.merge( [\n\n\t\t\tUniformsLib.common,\n\t\t\tUniformsLib.aomap,\n\t\t\tUniformsLib.fog\n\n\t\t] ),\n\n\t\tvertexShader: ShaderChunk.meshbasic_vert,\n\t\tfragmentShader: ShaderChunk.meshbasic_frag\n\n\t},\n\n\tlambert: {\n\n\t\tuniforms: UniformsUtils.merge( [\n\n\t\t\tUniformsLib.common,\n\t\t\tUniformsLib.aomap,\n\t\t\tUniformsLib.lightmap,\n\t\t\tUniformsLib.emissivemap,\n\t\t\tUniformsLib.fog,\n\t\t\tUniformsLib.lights,\n\n\t\t\t{\n\t\t\t\temissive : { value: new Color( 0x000000 ) }\n\t\t\t}\n\n\t\t] ),\n\n\t\tvertexShader: ShaderChunk.meshlambert_vert,\n\t\tfragmentShader: ShaderChunk.meshlambert_frag\n\n\t},\n\n\tphong: {\n\n\t\tuniforms: UniformsUtils.merge( [\n\n\t\t\tUniformsLib.common,\n\t\t\tUniformsLib.aomap,\n\t\t\tUniformsLib.lightmap,\n\t\t\tUniformsLib.emissivemap,\n\t\t\tUniformsLib.bumpmap,\n\t\t\tUniformsLib.normalmap,\n\t\t\tUniformsLib.displacementmap,\n\t\t\tUniformsLib.fog,\n\t\t\tUniformsLib.lights,\n\n\t\t\t{\n\t\t\t\temissive : { value: new Color( 0x000000 ) },\n\t\t\t\tspecular : { value: new Color( 0x111111 ) },\n\t\t\t\tshininess: { value: 30 }\n\t\t\t}\n\n\t\t] ),\n\n\t\tvertexShader: ShaderChunk.meshphong_vert,\n\t\tfragmentShader: ShaderChunk.meshphong_frag\n\n\t},\n\n\tstandard: {\n\n\t\tuniforms: UniformsUtils.merge( [\n\n\t\t\tUniformsLib.common,\n\t\t\tUniformsLib.aomap,\n\t\t\tUniformsLib.lightmap,\n\t\t\tUniformsLib.emissivemap,\n\t\t\tUniformsLib.bumpmap,\n\t\t\tUniformsLib.normalmap,\n\t\t\tUniformsLib.displacementmap,\n\t\t\tUniformsLib.roughnessmap,\n\t\t\tUniformsLib.metalnessmap,\n\t\t\tUniformsLib.fog,\n\t\t\tUniformsLib.lights,\n\n\t\t\t{\n\t\t\t\temissive : { value: new Color( 0x000000 ) },\n\t\t\t\troughness: { value: 0.5 },\n\t\t\t\tmetalness: { value: 0 },\n\t\t\t\tenvMapIntensity : { value: 1 }, // temporary\n\t\t\t}\n\n\t\t] ),\n\n\t\tvertexShader: ShaderChunk.meshphysical_vert,\n\t\tfragmentShader: ShaderChunk.meshphysical_frag\n\n\t},\n\n\tpoints: {\n\n\t\tuniforms: UniformsUtils.merge( [\n\n\t\t\tUniformsLib.points,\n\t\t\tUniformsLib.fog\n\n\t\t] ),\n\n\t\tvertexShader: ShaderChunk.points_vert,\n\t\tfragmentShader: ShaderChunk.points_frag\n\n\t},\n\n\tdashed: {\n\n\t\tuniforms: UniformsUtils.merge( [\n\n\t\t\tUniformsLib.common,\n\t\t\tUniformsLib.fog,\n\n\t\t\t{\n\t\t\t\tscale : { value: 1 },\n\t\t\t\tdashSize : { value: 1 },\n\t\t\t\ttotalSize: { value: 2 }\n\t\t\t}\n\n\t\t] ),\n\n\t\tvertexShader: ShaderChunk.linedashed_vert,\n\t\tfragmentShader: ShaderChunk.linedashed_frag\n\n\t},\n\n\tdepth: {\n\n\t\tuniforms: UniformsUtils.merge( [\n\n\t\t\tUniformsLib.common,\n\t\t\tUniformsLib.displacementmap\n\n\t\t] ),\n\n\t\tvertexShader: ShaderChunk.depth_vert,\n\t\tfragmentShader: ShaderChunk.depth_frag\n\n\t},\n\n\tnormal: {\n\n\t\tuniforms: {\n\n\t\t\topacity : { value: 1.0 }\n\n\t\t},\n\n\t\tvertexShader: ShaderChunk.normal_vert,\n\t\tfragmentShader: ShaderChunk.normal_frag\n\n\t},\n\n\t/* -------------------------------------------------------------------------\n\t//\tCube map shader\n\t ------------------------------------------------------------------------- */\n\n\tcube: {\n\n\t\tuniforms: {\n\t\t\ttCube: { value: null },\n\t\t\ttFlip: { value: - 1 },\n\t\t\topacity: { value: 1.0 }\n\t\t},\n\n\t\tvertexShader: ShaderChunk.cube_vert,\n\t\tfragmentShader: ShaderChunk.cube_frag\n\n\t},\n\n\t/* -------------------------------------------------------------------------\n\t//\tCube map shader\n\t ------------------------------------------------------------------------- */\n\n\tequirect: {\n\n\t\tuniforms: {\n\t\t\ttEquirect: { value: null },\n\t\t\ttFlip: { value: - 1 }\n\t\t},\n\n\t\tvertexShader: ShaderChunk.equirect_vert,\n\t\tfragmentShader: ShaderChunk.equirect_frag\n\n\t},\n\n\tdistanceRGBA: {\n\n\t\tuniforms: {\n\n\t\t\tlightPos: { value: new Vector3() }\n\n\t\t},\n\n\t\tvertexShader: ShaderChunk.distanceRGBA_vert,\n\t\tfragmentShader: ShaderChunk.distanceRGBA_frag\n\n\t}\n\n};\n\nShaderLib.physical = {\n\n\tuniforms: UniformsUtils.merge( [\n\n\t\tShaderLib.standard.uniforms,\n\n\t\t{\n\t\t\tclearCoat: { value: 0 },\n\t\t\tclearCoatRoughness: { value: 0 }\n\t\t}\n\n\t] ),\n\n\tvertexShader: ShaderChunk.meshphysical_vert,\n\tfragmentShader: ShaderChunk.meshphysical_frag\n\n};\n\n\nexport { ShaderLib };\n","import { Vector2 } from './Vector2';\n\n/**\n * @author bhouston / http://clara.io\n */\n\nfunction Box2( min, max ) {\n\n\tthis.min = ( min !== undefined ) ? min : new Vector2( + Infinity, + Infinity );\n\tthis.max = ( max !== undefined ) ? max : new Vector2( - Infinity, - Infinity );\n\n}\n\nBox2.prototype = {\n\n\tconstructor: Box2,\n\n\tset: function ( min, max ) {\n\n\t\tthis.min.copy( min );\n\t\tthis.max.copy( max );\n\n\t\treturn this;\n\n\t},\n\n\tsetFromPoints: function ( points ) {\n\n\t\tthis.makeEmpty();\n\n\t\tfor ( var i = 0, il = points.length; i < il; i ++ ) {\n\n\t\t\tthis.expandByPoint( points[ i ] );\n\n\t\t}\n\n\t\treturn this;\n\n\t},\n\n\tsetFromCenterAndSize: function () {\n\n\t\tvar v1 = new Vector2();\n\n\t\treturn function setFromCenterAndSize( center, size ) {\n\n\t\t\tvar halfSize = v1.copy( size ).multiplyScalar( 0.5 );\n\t\t\tthis.min.copy( center ).sub( halfSize );\n\t\t\tthis.max.copy( center ).add( halfSize );\n\n\t\t\treturn this;\n\n\t\t};\n\n\t}(),\n\n\tclone: function () {\n\n\t\treturn new this.constructor().copy( this );\n\n\t},\n\n\tcopy: function ( box ) {\n\n\t\tthis.min.copy( box.min );\n\t\tthis.max.copy( box.max );\n\n\t\treturn this;\n\n\t},\n\n\tmakeEmpty: function () {\n\n\t\tthis.min.x = this.min.y = + Infinity;\n\t\tthis.max.x = this.max.y = - Infinity;\n\n\t\treturn this;\n\n\t},\n\n\tisEmpty: function () {\n\n\t\t// this is a more robust check for empty than ( volume <= 0 ) because volume can get positive with two negative axes\n\n\t\treturn ( this.max.x < this.min.x ) || ( this.max.y < this.min.y );\n\n\t},\n\n\tgetCenter: function ( optionalTarget ) {\n\n\t\tvar result = optionalTarget || new Vector2();\n\t\treturn this.isEmpty() ? result.set( 0, 0 ) : result.addVectors( this.min, this.max ).multiplyScalar( 0.5 );\n\n\t},\n\n\tgetSize: function ( optionalTarget ) {\n\n\t\tvar result = optionalTarget || new Vector2();\n\t\treturn this.isEmpty() ? result.set( 0, 0 ) : result.subVectors( this.max, this.min );\n\n\t},\n\n\texpandByPoint: function ( point ) {\n\n\t\tthis.min.min( point );\n\t\tthis.max.max( point );\n\n\t\treturn this;\n\n\t},\n\n\texpandByVector: function ( vector ) {\n\n\t\tthis.min.sub( vector );\n\t\tthis.max.add( vector );\n\n\t\treturn this;\n\n\t},\n\n\texpandByScalar: function ( scalar ) {\n\n\t\tthis.min.addScalar( - scalar );\n\t\tthis.max.addScalar( scalar );\n\n\t\treturn this;\n\n\t},\n\n\tcontainsPoint: function ( point ) {\n\n\t\tif ( point.x < this.min.x || point.x > this.max.x ||\n\t\t point.y < this.min.y || point.y > this.max.y ) {\n\n\t\t\treturn false;\n\n\t\t}\n\n\t\treturn true;\n\n\t},\n\n\tcontainsBox: function ( box ) {\n\n\t\tif ( ( this.min.x <= box.min.x ) && ( box.max.x <= this.max.x ) &&\n\t\t ( this.min.y <= box.min.y ) && ( box.max.y <= this.max.y ) ) {\n\n\t\t\treturn true;\n\n\t\t}\n\n\t\treturn false;\n\n\t},\n\n\tgetParameter: function ( point, optionalTarget ) {\n\n\t\t// This can potentially have a divide by zero if the box\n\t\t// has a size dimension of 0.\n\n\t\tvar result = optionalTarget || new Vector2();\n\n\t\treturn result.set(\n\t\t\t( point.x - this.min.x ) / ( this.max.x - this.min.x ),\n\t\t\t( point.y - this.min.y ) / ( this.max.y - this.min.y )\n\t\t);\n\n\t},\n\n\tintersectsBox: function ( box ) {\n\n\t\t// using 6 splitting planes to rule out intersections.\n\n\t\tif ( box.max.x < this.min.x || box.min.x > this.max.x ||\n\t\t box.max.y < this.min.y || box.min.y > this.max.y ) {\n\n\t\t\treturn false;\n\n\t\t}\n\n\t\treturn true;\n\n\t},\n\n\tclampPoint: function ( point, optionalTarget ) {\n\n\t\tvar result = optionalTarget || new Vector2();\n\t\treturn result.copy( point ).clamp( this.min, this.max );\n\n\t},\n\n\tdistanceToPoint: function () {\n\n\t\tvar v1 = new Vector2();\n\n\t\treturn function distanceToPoint( point ) {\n\n\t\t\tvar clampedPoint = v1.copy( point ).clamp( this.min, this.max );\n\t\t\treturn clampedPoint.sub( point ).length();\n\n\t\t};\n\n\t}(),\n\n\tintersect: function ( box ) {\n\n\t\tthis.min.max( box.min );\n\t\tthis.max.min( box.max );\n\n\t\treturn this;\n\n\t},\n\n\tunion: function ( box ) {\n\n\t\tthis.min.min( box.min );\n\t\tthis.max.max( box.max );\n\n\t\treturn this;\n\n\t},\n\n\ttranslate: function ( offset ) {\n\n\t\tthis.min.add( offset );\n\t\tthis.max.add( offset );\n\n\t\treturn this;\n\n\t},\n\n\tequals: function ( box ) {\n\n\t\treturn box.min.equals( this.min ) && box.max.equals( this.max );\n\n\t}\n\n};\n\n\nexport { Box2 };\n","import { Box2 } from '../../../math/Box2';\nimport { Vector2 } from '../../../math/Vector2';\nimport { Vector3 } from '../../../math/Vector3';\n\n/**\n * @author mikael emtinger / http://gomo.se/\n * @author alteredq / http://alteredqualia.com/\n */\n\nfunction LensFlarePlugin( renderer, flares ) {\n\n\tvar gl = renderer.context;\n\tvar state = renderer.state;\n\n\tvar vertexBuffer, elementBuffer;\n\tvar shader, program, attributes, uniforms;\n\n\tvar tempTexture, occlusionTexture;\n\n\tfunction init() {\n\n\t\tvar vertices = new Float32Array( [\n\t\t\t- 1, - 1, 0, 0,\n\t\t\t 1, - 1, 1, 0,\n\t\t\t 1, 1, 1, 1,\n\t\t\t- 1, 1, 0, 1\n\t\t] );\n\n\t\tvar faces = new Uint16Array( [\n\t\t\t0, 1, 2,\n\t\t\t0, 2, 3\n\t\t] );\n\n\t\t// buffers\n\n\t\tvertexBuffer = gl.createBuffer();\n\t\telementBuffer = gl.createBuffer();\n\n\t\tgl.bindBuffer( gl.ARRAY_BUFFER, vertexBuffer );\n\t\tgl.bufferData( gl.ARRAY_BUFFER, vertices, gl.STATIC_DRAW );\n\n\t\tgl.bindBuffer( gl.ELEMENT_ARRAY_BUFFER, elementBuffer );\n\t\tgl.bufferData( gl.ELEMENT_ARRAY_BUFFER, faces, gl.STATIC_DRAW );\n\n\t\t// textures\n\n\t\ttempTexture = gl.createTexture();\n\t\tocclusionTexture = gl.createTexture();\n\n\t\tstate.bindTexture( gl.TEXTURE_2D, tempTexture );\n\t\tgl.texImage2D( gl.TEXTURE_2D, 0, gl.RGB, 16, 16, 0, gl.RGB, gl.UNSIGNED_BYTE, null );\n\t\tgl.texParameteri( gl.TEXTURE_2D, gl.TEXTURE_WRAP_S, gl.CLAMP_TO_EDGE );\n\t\tgl.texParameteri( gl.TEXTURE_2D, gl.TEXTURE_WRAP_T, gl.CLAMP_TO_EDGE );\n\t\tgl.texParameteri( gl.TEXTURE_2D, gl.TEXTURE_MAG_FILTER, gl.NEAREST );\n\t\tgl.texParameteri( gl.TEXTURE_2D, gl.TEXTURE_MIN_FILTER, gl.NEAREST );\n\n\t\tstate.bindTexture( gl.TEXTURE_2D, occlusionTexture );\n\t\tgl.texImage2D( gl.TEXTURE_2D, 0, gl.RGBA, 16, 16, 0, gl.RGBA, gl.UNSIGNED_BYTE, null );\n\t\tgl.texParameteri( gl.TEXTURE_2D, gl.TEXTURE_WRAP_S, gl.CLAMP_TO_EDGE );\n\t\tgl.texParameteri( gl.TEXTURE_2D, gl.TEXTURE_WRAP_T, gl.CLAMP_TO_EDGE );\n\t\tgl.texParameteri( gl.TEXTURE_2D, gl.TEXTURE_MAG_FILTER, gl.NEAREST );\n\t\tgl.texParameteri( gl.TEXTURE_2D, gl.TEXTURE_MIN_FILTER, gl.NEAREST );\n\n\t\tshader = {\n\n\t\t\tvertexShader: [\n\n\t\t\t\t\"uniform lowp int renderType;\",\n\n\t\t\t\t\"uniform vec3 screenPosition;\",\n\t\t\t\t\"uniform vec2 scale;\",\n\t\t\t\t\"uniform float rotation;\",\n\n\t\t\t\t\"uniform sampler2D occlusionMap;\",\n\n\t\t\t\t\"attribute vec2 position;\",\n\t\t\t\t\"attribute vec2 uv;\",\n\n\t\t\t\t\"varying vec2 vUV;\",\n\t\t\t\t\"varying float vVisibility;\",\n\n\t\t\t\t\"void main() {\",\n\n\t\t\t\t\t\"vUV = uv;\",\n\n\t\t\t\t\t\"vec2 pos = position;\",\n\n\t\t\t\t\t\"if ( renderType == 2 ) {\",\n\n\t\t\t\t\t\t\"vec4 visibility = texture2D( occlusionMap, vec2( 0.1, 0.1 ) );\",\n\t\t\t\t\t\t\"visibility += texture2D( occlusionMap, vec2( 0.5, 0.1 ) );\",\n\t\t\t\t\t\t\"visibility += texture2D( occlusionMap, vec2( 0.9, 0.1 ) );\",\n\t\t\t\t\t\t\"visibility += texture2D( occlusionMap, vec2( 0.9, 0.5 ) );\",\n\t\t\t\t\t\t\"visibility += texture2D( occlusionMap, vec2( 0.9, 0.9 ) );\",\n\t\t\t\t\t\t\"visibility += texture2D( occlusionMap, vec2( 0.5, 0.9 ) );\",\n\t\t\t\t\t\t\"visibility += texture2D( occlusionMap, vec2( 0.1, 0.9 ) );\",\n\t\t\t\t\t\t\"visibility += texture2D( occlusionMap, vec2( 0.1, 0.5 ) );\",\n\t\t\t\t\t\t\"visibility += texture2D( occlusionMap, vec2( 0.5, 0.5 ) );\",\n\n\t\t\t\t\t\t\"vVisibility = visibility.r / 9.0;\",\n\t\t\t\t\t\t\"vVisibility *= 1.0 - visibility.g / 9.0;\",\n\t\t\t\t\t\t\"vVisibility *= visibility.b / 9.0;\",\n\t\t\t\t\t\t\"vVisibility *= 1.0 - visibility.a / 9.0;\",\n\n\t\t\t\t\t\t\"pos.x = cos( rotation ) * position.x - sin( rotation ) * position.y;\",\n\t\t\t\t\t\t\"pos.y = sin( rotation ) * position.x + cos( rotation ) * position.y;\",\n\n\t\t\t\t\t\"}\",\n\n\t\t\t\t\t\"gl_Position = vec4( ( pos * scale + screenPosition.xy ).xy, screenPosition.z, 1.0 );\",\n\n\t\t\t\t\"}\"\n\n\t\t\t].join( \"\\n\" ),\n\n\t\t\tfragmentShader: [\n\n\t\t\t\t\"uniform lowp int renderType;\",\n\n\t\t\t\t\"uniform sampler2D map;\",\n\t\t\t\t\"uniform float opacity;\",\n\t\t\t\t\"uniform vec3 color;\",\n\n\t\t\t\t\"varying vec2 vUV;\",\n\t\t\t\t\"varying float vVisibility;\",\n\n\t\t\t\t\"void main() {\",\n\n\t\t\t\t\t// pink square\n\n\t\t\t\t\t\"if ( renderType == 0 ) {\",\n\n\t\t\t\t\t\t\"gl_FragColor = vec4( 1.0, 0.0, 1.0, 0.0 );\",\n\n\t\t\t\t\t// restore\n\n\t\t\t\t\t\"} else if ( renderType == 1 ) {\",\n\n\t\t\t\t\t\t\"gl_FragColor = texture2D( map, vUV );\",\n\n\t\t\t\t\t// flare\n\n\t\t\t\t\t\"} else {\",\n\n\t\t\t\t\t\t\"vec4 texture = texture2D( map, vUV );\",\n\t\t\t\t\t\t\"texture.a *= opacity * vVisibility;\",\n\t\t\t\t\t\t\"gl_FragColor = texture;\",\n\t\t\t\t\t\t\"gl_FragColor.rgb *= color;\",\n\n\t\t\t\t\t\"}\",\n\n\t\t\t\t\"}\"\n\n\t\t\t].join( \"\\n\" )\n\n\t\t};\n\n\t\tprogram = createProgram( shader );\n\n\t\tattributes = {\n\t\t\tvertex: gl.getAttribLocation ( program, \"position\" ),\n\t\t\tuv: gl.getAttribLocation ( program, \"uv\" )\n\t\t};\n\n\t\tuniforms = {\n\t\t\trenderType: gl.getUniformLocation( program, \"renderType\" ),\n\t\t\tmap: gl.getUniformLocation( program, \"map\" ),\n\t\t\tocclusionMap: gl.getUniformLocation( program, \"occlusionMap\" ),\n\t\t\topacity: gl.getUniformLocation( program, \"opacity\" ),\n\t\t\tcolor: gl.getUniformLocation( program, \"color\" ),\n\t\t\tscale: gl.getUniformLocation( program, \"scale\" ),\n\t\t\trotation: gl.getUniformLocation( program, \"rotation\" ),\n\t\t\tscreenPosition: gl.getUniformLocation( program, \"screenPosition\" )\n\t\t};\n\n\t}\n\n\t/*\n\t * Render lens flares\n\t * Method: renders 16x16 0xff00ff-colored points scattered over the light source area,\n\t * reads these back and calculates occlusion.\n\t */\n\n\tthis.render = function ( scene, camera, viewport ) {\n\n\t\tif ( flares.length === 0 ) return;\n\n\t\tvar tempPosition = new Vector3();\n\n\t\tvar invAspect = viewport.w / viewport.z,\n\t\t\thalfViewportWidth = viewport.z * 0.5,\n\t\t\thalfViewportHeight = viewport.w * 0.5;\n\n\t\tvar size = 16 / viewport.w,\n\t\t\tscale = new Vector2( size * invAspect, size );\n\n\t\tvar screenPosition = new Vector3( 1, 1, 0 ),\n\t\t\tscreenPositionPixels = new Vector2( 1, 1 );\n\n\t\tvar validArea = new Box2();\n\n\t\tvalidArea.min.set( viewport.x, viewport.y );\n\t\tvalidArea.max.set( viewport.x + ( viewport.z - 16 ), viewport.y + ( viewport.w - 16 ) );\n\n\t\tif ( program === undefined ) {\n\n\t\t\tinit();\n\n\t\t}\n\n\t\tgl.useProgram( program );\n\n\t\tstate.initAttributes();\n\t\tstate.enableAttribute( attributes.vertex );\n\t\tstate.enableAttribute( attributes.uv );\n\t\tstate.disableUnusedAttributes();\n\n\t\t// loop through all lens flares to update their occlusion and positions\n\t\t// setup gl and common used attribs/uniforms\n\n\t\tgl.uniform1i( uniforms.occlusionMap, 0 );\n\t\tgl.uniform1i( uniforms.map, 1 );\n\n\t\tgl.bindBuffer( gl.ARRAY_BUFFER, vertexBuffer );\n\t\tgl.vertexAttribPointer( attributes.vertex, 2, gl.FLOAT, false, 2 * 8, 0 );\n\t\tgl.vertexAttribPointer( attributes.uv, 2, gl.FLOAT, false, 2 * 8, 8 );\n\n\t\tgl.bindBuffer( gl.ELEMENT_ARRAY_BUFFER, elementBuffer );\n\n\t\tstate.disable( gl.CULL_FACE );\n\t\tstate.setDepthWrite( false );\n\n\t\tfor ( var i = 0, l = flares.length; i < l; i ++ ) {\n\n\t\t\tsize = 16 / viewport.w;\n\t\t\tscale.set( size * invAspect, size );\n\n\t\t\t// calc object screen position\n\n\t\t\tvar flare = flares[ i ];\n\n\t\t\ttempPosition.set( flare.matrixWorld.elements[ 12 ], flare.matrixWorld.elements[ 13 ], flare.matrixWorld.elements[ 14 ] );\n\n\t\t\ttempPosition.applyMatrix4( camera.matrixWorldInverse );\n\t\t\ttempPosition.applyProjection( camera.projectionMatrix );\n\n\t\t\t// setup arrays for gl programs\n\n\t\t\tscreenPosition.copy( tempPosition );\n\n\t\t\t// horizontal and vertical coordinate of the lower left corner of the pixels to copy\n\n\t\t\tscreenPositionPixels.x = viewport.x + ( screenPosition.x * halfViewportWidth ) + halfViewportWidth - 8;\n\t\t\tscreenPositionPixels.y = viewport.y + ( screenPosition.y * halfViewportHeight ) + halfViewportHeight - 8;\n\n\t\t\t// screen cull\n\n\t\t\tif ( validArea.containsPoint( screenPositionPixels ) === true ) {\n\n\t\t\t\t// save current RGB to temp texture\n\n\t\t\t\tstate.activeTexture( gl.TEXTURE0 );\n\t\t\t\tstate.bindTexture( gl.TEXTURE_2D, null );\n\t\t\t\tstate.activeTexture( gl.TEXTURE1 );\n\t\t\t\tstate.bindTexture( gl.TEXTURE_2D, tempTexture );\n\t\t\t\tgl.copyTexImage2D( gl.TEXTURE_2D, 0, gl.RGB, screenPositionPixels.x, screenPositionPixels.y, 16, 16, 0 );\n\n\n\t\t\t\t// render pink quad\n\n\t\t\t\tgl.uniform1i( uniforms.renderType, 0 );\n\t\t\t\tgl.uniform2f( uniforms.scale, scale.x, scale.y );\n\t\t\t\tgl.uniform3f( uniforms.screenPosition, screenPosition.x, screenPosition.y, screenPosition.z );\n\n\t\t\t\tstate.disable( gl.BLEND );\n\t\t\t\tstate.enable( gl.DEPTH_TEST );\n\n\t\t\t\tgl.drawElements( gl.TRIANGLES, 6, gl.UNSIGNED_SHORT, 0 );\n\n\n\t\t\t\t// copy result to occlusionMap\n\n\t\t\t\tstate.activeTexture( gl.TEXTURE0 );\n\t\t\t\tstate.bindTexture( gl.TEXTURE_2D, occlusionTexture );\n\t\t\t\tgl.copyTexImage2D( gl.TEXTURE_2D, 0, gl.RGBA, screenPositionPixels.x, screenPositionPixels.y, 16, 16, 0 );\n\n\n\t\t\t\t// restore graphics\n\n\t\t\t\tgl.uniform1i( uniforms.renderType, 1 );\n\t\t\t\tstate.disable( gl.DEPTH_TEST );\n\n\t\t\t\tstate.activeTexture( gl.TEXTURE1 );\n\t\t\t\tstate.bindTexture( gl.TEXTURE_2D, tempTexture );\n\t\t\t\tgl.drawElements( gl.TRIANGLES, 6, gl.UNSIGNED_SHORT, 0 );\n\n\n\t\t\t\t// update object positions\n\n\t\t\t\tflare.positionScreen.copy( screenPosition );\n\n\t\t\t\tif ( flare.customUpdateCallback ) {\n\n\t\t\t\t\tflare.customUpdateCallback( flare );\n\n\t\t\t\t} else {\n\n\t\t\t\t\tflare.updateLensFlares();\n\n\t\t\t\t}\n\n\t\t\t\t// render flares\n\n\t\t\t\tgl.uniform1i( uniforms.renderType, 2 );\n\t\t\t\tstate.enable( gl.BLEND );\n\n\t\t\t\tfor ( var j = 0, jl = flare.lensFlares.length; j < jl; j ++ ) {\n\n\t\t\t\t\tvar sprite = flare.lensFlares[ j ];\n\n\t\t\t\t\tif ( sprite.opacity > 0.001 && sprite.scale > 0.001 ) {\n\n\t\t\t\t\t\tscreenPosition.x = sprite.x;\n\t\t\t\t\t\tscreenPosition.y = sprite.y;\n\t\t\t\t\t\tscreenPosition.z = sprite.z;\n\n\t\t\t\t\t\tsize = sprite.size * sprite.scale / viewport.w;\n\n\t\t\t\t\t\tscale.x = size * invAspect;\n\t\t\t\t\t\tscale.y = size;\n\n\t\t\t\t\t\tgl.uniform3f( uniforms.screenPosition, screenPosition.x, screenPosition.y, screenPosition.z );\n\t\t\t\t\t\tgl.uniform2f( uniforms.scale, scale.x, scale.y );\n\t\t\t\t\t\tgl.uniform1f( uniforms.rotation, sprite.rotation );\n\n\t\t\t\t\t\tgl.uniform1f( uniforms.opacity, sprite.opacity );\n\t\t\t\t\t\tgl.uniform3f( uniforms.color, sprite.color.r, sprite.color.g, sprite.color.b );\n\n\t\t\t\t\t\tstate.setBlending( sprite.blending, sprite.blendEquation, sprite.blendSrc, sprite.blendDst );\n\t\t\t\t\t\trenderer.setTexture2D( sprite.texture, 1 );\n\n\t\t\t\t\t\tgl.drawElements( gl.TRIANGLES, 6, gl.UNSIGNED_SHORT, 0 );\n\n\t\t\t\t\t}\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t}\n\n\t\t// restore gl\n\n\t\tstate.enable( gl.CULL_FACE );\n\t\tstate.enable( gl.DEPTH_TEST );\n\t\tstate.setDepthWrite( true );\n\n\t\trenderer.resetGLState();\n\n\t};\n\n\tfunction createProgram( shader ) {\n\n\t\tvar program = gl.createProgram();\n\n\t\tvar fragmentShader = gl.createShader( gl.FRAGMENT_SHADER );\n\t\tvar vertexShader = gl.createShader( gl.VERTEX_SHADER );\n\n\t\tvar prefix = \"precision \" + renderer.getPrecision() + \" float;\\n\";\n\n\t\tgl.shaderSource( fragmentShader, prefix + shader.fragmentShader );\n\t\tgl.shaderSource( vertexShader, prefix + shader.vertexShader );\n\n\t\tgl.compileShader( fragmentShader );\n\t\tgl.compileShader( vertexShader );\n\n\t\tgl.attachShader( program, fragmentShader );\n\t\tgl.attachShader( program, vertexShader );\n\n\t\tgl.linkProgram( program );\n\n\t\treturn program;\n\n\t}\n\n}\n\n\nexport { LensFlarePlugin };\n","import { Texture } from '../../../textures/Texture';\nimport { Vector3 } from '../../../math/Vector3';\nimport { Quaternion } from '../../../math/Quaternion';\n\n/**\n * @author mikael emtinger / http://gomo.se/\n * @author alteredq / http://alteredqualia.com/\n */\n\nfunction SpritePlugin( renderer, sprites ) {\n\n\tvar gl = renderer.context;\n\tvar state = renderer.state;\n\n\tvar vertexBuffer, elementBuffer;\n\tvar program, attributes, uniforms;\n\n\tvar texture;\n\n\t// decompose matrixWorld\n\n\tvar spritePosition = new Vector3();\n\tvar spriteRotation = new Quaternion();\n\tvar spriteScale = new Vector3();\n\n\tfunction init() {\n\n\t\tvar vertices = new Float32Array( [\n\t\t\t- 0.5, - 0.5, 0, 0,\n\t\t\t 0.5, - 0.5, 1, 0,\n\t\t\t 0.5, 0.5, 1, 1,\n\t\t\t- 0.5, 0.5, 0, 1\n\t\t] );\n\n\t\tvar faces = new Uint16Array( [\n\t\t\t0, 1, 2,\n\t\t\t0, 2, 3\n\t\t] );\n\n\t\tvertexBuffer = gl.createBuffer();\n\t\telementBuffer = gl.createBuffer();\n\n\t\tgl.bindBuffer( gl.ARRAY_BUFFER, vertexBuffer );\n\t\tgl.bufferData( gl.ARRAY_BUFFER, vertices, gl.STATIC_DRAW );\n\n\t\tgl.bindBuffer( gl.ELEMENT_ARRAY_BUFFER, elementBuffer );\n\t\tgl.bufferData( gl.ELEMENT_ARRAY_BUFFER, faces, gl.STATIC_DRAW );\n\n\t\tprogram = createProgram();\n\n\t\tattributes = {\n\t\t\tposition:\t\t\tgl.getAttribLocation ( program, 'position' ),\n\t\t\tuv:\t\t\t\t\tgl.getAttribLocation ( program, 'uv' )\n\t\t};\n\n\t\tuniforms = {\n\t\t\tuvOffset:\t\t\tgl.getUniformLocation( program, 'uvOffset' ),\n\t\t\tuvScale:\t\t\tgl.getUniformLocation( program, 'uvScale' ),\n\n\t\t\trotation:\t\t\tgl.getUniformLocation( program, 'rotation' ),\n\t\t\tscale:\t\t\t\tgl.getUniformLocation( program, 'scale' ),\n\n\t\t\tcolor:\t\t\t\tgl.getUniformLocation( program, 'color' ),\n\t\t\tmap:\t\t\t\tgl.getUniformLocation( program, 'map' ),\n\t\t\topacity:\t\t\tgl.getUniformLocation( program, 'opacity' ),\n\n\t\t\tmodelViewMatrix: \tgl.getUniformLocation( program, 'modelViewMatrix' ),\n\t\t\tprojectionMatrix:\tgl.getUniformLocation( program, 'projectionMatrix' ),\n\n\t\t\tfogType:\t\t\tgl.getUniformLocation( program, 'fogType' ),\n\t\t\tfogDensity:\t\t\tgl.getUniformLocation( program, 'fogDensity' ),\n\t\t\tfogNear:\t\t\tgl.getUniformLocation( program, 'fogNear' ),\n\t\t\tfogFar:\t\t\t\tgl.getUniformLocation( program, 'fogFar' ),\n\t\t\tfogColor:\t\t\tgl.getUniformLocation( program, 'fogColor' ),\n\n\t\t\talphaTest:\t\t\tgl.getUniformLocation( program, 'alphaTest' )\n\t\t};\n\n\t\tvar canvas = document.createElementNS( 'http://www.w3.org/1999/xhtml', 'canvas' );\n\t\tcanvas.width = 8;\n\t\tcanvas.height = 8;\n\n\t\tvar context = canvas.getContext( '2d' );\n\t\tcontext.fillStyle = 'white';\n\t\tcontext.fillRect( 0, 0, 8, 8 );\n\n\t\ttexture = new Texture( canvas );\n\t\ttexture.needsUpdate = true;\n\n\t}\n\n\tthis.render = function ( scene, camera ) {\n\n\t\tif ( sprites.length === 0 ) return;\n\n\t\t// setup gl\n\n\t\tif ( program === undefined ) {\n\n\t\t\tinit();\n\n\t\t}\n\n\t\tgl.useProgram( program );\n\n\t\tstate.initAttributes();\n\t\tstate.enableAttribute( attributes.position );\n\t\tstate.enableAttribute( attributes.uv );\n\t\tstate.disableUnusedAttributes();\n\n\t\tstate.disable( gl.CULL_FACE );\n\t\tstate.enable( gl.BLEND );\n\n\t\tgl.bindBuffer( gl.ARRAY_BUFFER, vertexBuffer );\n\t\tgl.vertexAttribPointer( attributes.position, 2, gl.FLOAT, false, 2 * 8, 0 );\n\t\tgl.vertexAttribPointer( attributes.uv, 2, gl.FLOAT, false, 2 * 8, 8 );\n\n\t\tgl.bindBuffer( gl.ELEMENT_ARRAY_BUFFER, elementBuffer );\n\n\t\tgl.uniformMatrix4fv( uniforms.projectionMatrix, false, camera.projectionMatrix.elements );\n\n\t\tstate.activeTexture( gl.TEXTURE0 );\n\t\tgl.uniform1i( uniforms.map, 0 );\n\n\t\tvar oldFogType = 0;\n\t\tvar sceneFogType = 0;\n\t\tvar fog = scene.fog;\n\n\t\tif ( fog ) {\n\n\t\t\tgl.uniform3f( uniforms.fogColor, fog.color.r, fog.color.g, fog.color.b );\n\n\t\t\tif ( (fog && fog.isFog) ) {\n\n\t\t\t\tgl.uniform1f( uniforms.fogNear, fog.near );\n\t\t\t\tgl.uniform1f( uniforms.fogFar, fog.far );\n\n\t\t\t\tgl.uniform1i( uniforms.fogType, 1 );\n\t\t\t\toldFogType = 1;\n\t\t\t\tsceneFogType = 1;\n\n\t\t\t} else if ( (fog && fog.isFogExp2) ) {\n\n\t\t\t\tgl.uniform1f( uniforms.fogDensity, fog.density );\n\n\t\t\t\tgl.uniform1i( uniforms.fogType, 2 );\n\t\t\t\toldFogType = 2;\n\t\t\t\tsceneFogType = 2;\n\n\t\t\t}\n\n\t\t} else {\n\n\t\t\tgl.uniform1i( uniforms.fogType, 0 );\n\t\t\toldFogType = 0;\n\t\t\tsceneFogType = 0;\n\n\t\t}\n\n\n\t\t// update positions and sort\n\n\t\tfor ( var i = 0, l = sprites.length; i < l; i ++ ) {\n\n\t\t\tvar sprite = sprites[ i ];\n\n\t\t\tsprite.modelViewMatrix.multiplyMatrices( camera.matrixWorldInverse, sprite.matrixWorld );\n\t\t\tsprite.z = - sprite.modelViewMatrix.elements[ 14 ];\n\n\t\t}\n\n\t\tsprites.sort( painterSortStable );\n\n\t\t// render all sprites\n\n\t\tvar scale = [];\n\n\t\tfor ( var i = 0, l = sprites.length; i < l; i ++ ) {\n\n\t\t\tvar sprite = sprites[ i ];\n\t\t\tvar material = sprite.material;\n\n\t\t\tif ( material.visible === false ) continue;\n\n\t\t\tgl.uniform1f( uniforms.alphaTest, material.alphaTest );\n\t\t\tgl.uniformMatrix4fv( uniforms.modelViewMatrix, false, sprite.modelViewMatrix.elements );\n\n\t\t\tsprite.matrixWorld.decompose( spritePosition, spriteRotation, spriteScale );\n\n\t\t\tscale[ 0 ] = spriteScale.x;\n\t\t\tscale[ 1 ] = spriteScale.y;\n\n\t\t\tvar fogType = 0;\n\n\t\t\tif ( scene.fog && material.fog ) {\n\n\t\t\t\tfogType = sceneFogType;\n\n\t\t\t}\n\n\t\t\tif ( oldFogType !== fogType ) {\n\n\t\t\t\tgl.uniform1i( uniforms.fogType, fogType );\n\t\t\t\toldFogType = fogType;\n\n\t\t\t}\n\n\t\t\tif ( material.map !== null ) {\n\n\t\t\t\tgl.uniform2f( uniforms.uvOffset, material.map.offset.x, material.map.offset.y );\n\t\t\t\tgl.uniform2f( uniforms.uvScale, material.map.repeat.x, material.map.repeat.y );\n\n\t\t\t} else {\n\n\t\t\t\tgl.uniform2f( uniforms.uvOffset, 0, 0 );\n\t\t\t\tgl.uniform2f( uniforms.uvScale, 1, 1 );\n\n\t\t\t}\n\n\t\t\tgl.uniform1f( uniforms.opacity, material.opacity );\n\t\t\tgl.uniform3f( uniforms.color, material.color.r, material.color.g, material.color.b );\n\n\t\t\tgl.uniform1f( uniforms.rotation, material.rotation );\n\t\t\tgl.uniform2fv( uniforms.scale, scale );\n\n\t\t\tstate.setBlending( material.blending, material.blendEquation, material.blendSrc, material.blendDst );\n\t\t\tstate.setDepthTest( material.depthTest );\n\t\t\tstate.setDepthWrite( material.depthWrite );\n\n\t\t\tif ( material.map ) {\n\n\t\t\t\trenderer.setTexture2D( material.map, 0 );\n\n\t\t\t} else {\n\n\t\t\t\trenderer.setTexture2D( texture, 0 );\n\n\t\t\t}\n\n\t\t\tgl.drawElements( gl.TRIANGLES, 6, gl.UNSIGNED_SHORT, 0 );\n\n\t\t}\n\n\t\t// restore gl\n\n\t\tstate.enable( gl.CULL_FACE );\n\n\t\trenderer.resetGLState();\n\n\t};\n\n\tfunction createProgram() {\n\n\t\tvar program = gl.createProgram();\n\n\t\tvar vertexShader = gl.createShader( gl.VERTEX_SHADER );\n\t\tvar fragmentShader = gl.createShader( gl.FRAGMENT_SHADER );\n\n\t\tgl.shaderSource( vertexShader, [\n\n\t\t\t'precision ' + renderer.getPrecision() + ' float;',\n\n\t\t\t'uniform mat4 modelViewMatrix;',\n\t\t\t'uniform mat4 projectionMatrix;',\n\t\t\t'uniform float rotation;',\n\t\t\t'uniform vec2 scale;',\n\t\t\t'uniform vec2 uvOffset;',\n\t\t\t'uniform vec2 uvScale;',\n\n\t\t\t'attribute vec2 position;',\n\t\t\t'attribute vec2 uv;',\n\n\t\t\t'varying vec2 vUV;',\n\n\t\t\t'void main() {',\n\n\t\t\t\t'vUV = uvOffset + uv * uvScale;',\n\n\t\t\t\t'vec2 alignedPosition = position * scale;',\n\n\t\t\t\t'vec2 rotatedPosition;',\n\t\t\t\t'rotatedPosition.x = cos( rotation ) * alignedPosition.x - sin( rotation ) * alignedPosition.y;',\n\t\t\t\t'rotatedPosition.y = sin( rotation ) * alignedPosition.x + cos( rotation ) * alignedPosition.y;',\n\n\t\t\t\t'vec4 finalPosition;',\n\n\t\t\t\t'finalPosition = modelViewMatrix * vec4( 0.0, 0.0, 0.0, 1.0 );',\n\t\t\t\t'finalPosition.xy += rotatedPosition;',\n\t\t\t\t'finalPosition = projectionMatrix * finalPosition;',\n\n\t\t\t\t'gl_Position = finalPosition;',\n\n\t\t\t'}'\n\n\t\t].join( '\\n' ) );\n\n\t\tgl.shaderSource( fragmentShader, [\n\n\t\t\t'precision ' + renderer.getPrecision() + ' float;',\n\n\t\t\t'uniform vec3 color;',\n\t\t\t'uniform sampler2D map;',\n\t\t\t'uniform float opacity;',\n\n\t\t\t'uniform int fogType;',\n\t\t\t'uniform vec3 fogColor;',\n\t\t\t'uniform float fogDensity;',\n\t\t\t'uniform float fogNear;',\n\t\t\t'uniform float fogFar;',\n\t\t\t'uniform float alphaTest;',\n\n\t\t\t'varying vec2 vUV;',\n\n\t\t\t'void main() {',\n\n\t\t\t\t'vec4 texture = texture2D( map, vUV );',\n\n\t\t\t\t'if ( texture.a < alphaTest ) discard;',\n\n\t\t\t\t'gl_FragColor = vec4( color * texture.xyz, texture.a * opacity );',\n\n\t\t\t\t'if ( fogType > 0 ) {',\n\n\t\t\t\t\t'float depth = gl_FragCoord.z / gl_FragCoord.w;',\n\t\t\t\t\t'float fogFactor = 0.0;',\n\n\t\t\t\t\t'if ( fogType == 1 ) {',\n\n\t\t\t\t\t\t'fogFactor = smoothstep( fogNear, fogFar, depth );',\n\n\t\t\t\t\t'} else {',\n\n\t\t\t\t\t\t'const float LOG2 = 1.442695;',\n\t\t\t\t\t\t'fogFactor = exp2( - fogDensity * fogDensity * depth * depth * LOG2 );',\n\t\t\t\t\t\t'fogFactor = 1.0 - clamp( fogFactor, 0.0, 1.0 );',\n\n\t\t\t\t\t'}',\n\n\t\t\t\t\t'gl_FragColor = mix( gl_FragColor, vec4( fogColor, gl_FragColor.w ), fogFactor );',\n\n\t\t\t\t'}',\n\n\t\t\t'}'\n\n\t\t].join( '\\n' ) );\n\n\t\tgl.compileShader( vertexShader );\n\t\tgl.compileShader( fragmentShader );\n\n\t\tgl.attachShader( program, vertexShader );\n\t\tgl.attachShader( program, fragmentShader );\n\n\t\tgl.linkProgram( program );\n\n\t\treturn program;\n\n\t}\n\n\tfunction painterSortStable( a, b ) {\n\n\t\tif ( a.renderOrder !== b.renderOrder ) {\n\n\t\t\treturn a.renderOrder - b.renderOrder;\n\n\t\t} else if ( a.z !== b.z ) {\n\n\t\t\treturn b.z - a.z;\n\n\t\t} else {\n\n\t\t\treturn b.id - a.id;\n\n\t\t}\n\n\t}\n\n}\n\n\nexport { SpritePlugin };\n","import { EventDispatcher } from '../core/EventDispatcher';\nimport { NoColors, FrontSide, SmoothShading, NormalBlending, LessEqualDepth, AddEquation, OneMinusSrcAlphaFactor, SrcAlphaFactor } from '../constants';\nimport { _Math } from '../math/Math';\n\n/**\n * @author mrdoob / http://mrdoob.com/\n * @author alteredq / http://alteredqualia.com/\n */\n\nfunction Material() {\n\n\tObject.defineProperty( this, 'id', { value: MaterialIdCount() } );\n\n\tthis.uuid = _Math.generateUUID();\n\n\tthis.name = '';\n\tthis.type = 'Material';\n\n\tthis.fog = true;\n\tthis.lights = true;\n\n\tthis.blending = NormalBlending;\n\tthis.side = FrontSide;\n\tthis.shading = SmoothShading; // THREE.FlatShading, THREE.SmoothShading\n\tthis.vertexColors = NoColors; // THREE.NoColors, THREE.VertexColors, THREE.FaceColors\n\n\tthis.opacity = 1;\n\tthis.transparent = false;\n\n\tthis.blendSrc = SrcAlphaFactor;\n\tthis.blendDst = OneMinusSrcAlphaFactor;\n\tthis.blendEquation = AddEquation;\n\tthis.blendSrcAlpha = null;\n\tthis.blendDstAlpha = null;\n\tthis.blendEquationAlpha = null;\n\n\tthis.depthFunc = LessEqualDepth;\n\tthis.depthTest = true;\n\tthis.depthWrite = true;\n\n\tthis.clippingPlanes = null;\n\tthis.clipIntersection = false;\n\tthis.clipShadows = false;\n\n\tthis.colorWrite = true;\n\n\tthis.precision = null; // override the renderer's default precision for this material\n\n\tthis.polygonOffset = false;\n\tthis.polygonOffsetFactor = 0;\n\tthis.polygonOffsetUnits = 0;\n\n\tthis.alphaTest = 0;\n\tthis.premultipliedAlpha = false;\n\n\tthis.overdraw = 0; // Overdrawn pixels (typically between 0 and 1) for fixing antialiasing gaps in CanvasRenderer\n\n\tthis.visible = true;\n\n\tthis._needsUpdate = true;\n\n}\n\nMaterial.prototype = {\n\n\tconstructor: Material,\n\n\tisMaterial: true,\n\n\tget needsUpdate() {\n\n\t\treturn this._needsUpdate;\n\n\t},\n\n\tset needsUpdate( value ) {\n\n\t\tif ( value === true ) this.update();\n\t\tthis._needsUpdate = value;\n\n\t},\n\n\tsetValues: function ( values ) {\n\n\t\tif ( values === undefined ) return;\n\n\t\tfor ( var key in values ) {\n\n\t\t\tvar newValue = values[ key ];\n\n\t\t\tif ( newValue === undefined ) {\n\n\t\t\t\tconsole.warn( \"THREE.Material: '\" + key + \"' parameter is undefined.\" );\n\t\t\t\tcontinue;\n\n\t\t\t}\n\n\t\t\tvar currentValue = this[ key ];\n\n\t\t\tif ( currentValue === undefined ) {\n\n\t\t\t\tconsole.warn( \"THREE.\" + this.type + \": '\" + key + \"' is not a property of this material.\" );\n\t\t\t\tcontinue;\n\n\t\t\t}\n\n\t\t\tif ( (currentValue && currentValue.isColor) ) {\n\n\t\t\t\tcurrentValue.set( newValue );\n\n\t\t\t} else if ( (currentValue && currentValue.isVector3) && (newValue && newValue.isVector3) ) {\n\n\t\t\t\tcurrentValue.copy( newValue );\n\n\t\t\t} else if ( key === 'overdraw' ) {\n\n\t\t\t\t// ensure overdraw is backwards-compatible with legacy boolean type\n\t\t\t\tthis[ key ] = Number( newValue );\n\n\t\t\t} else {\n\n\t\t\t\tthis[ key ] = newValue;\n\n\t\t\t}\n\n\t\t}\n\n\t},\n\n\ttoJSON: function ( meta ) {\n\n\t\tvar isRoot = meta === undefined;\n\n\t\tif ( isRoot ) {\n\n\t\t\tmeta = {\n\t\t\t\ttextures: {},\n\t\t\t\timages: {}\n\t\t\t};\n\n\t\t}\n\n\t\tvar data = {\n\t\t\tmetadata: {\n\t\t\t\tversion: 4.4,\n\t\t\t\ttype: 'Material',\n\t\t\t\tgenerator: 'Material.toJSON'\n\t\t\t}\n\t\t};\n\n\t\t// standard Material serialization\n\t\tdata.uuid = this.uuid;\n\t\tdata.type = this.type;\n\n\t\tif ( this.name !== '' ) data.name = this.name;\n\n\t\tif ( (this.color && this.color.isColor) ) data.color = this.color.getHex();\n\n\t\tif ( this.roughness !== undefined ) data.roughness = this.roughness;\n\t\tif ( this.metalness !== undefined ) data.metalness = this.metalness;\n\n\t\tif ( (this.emissive && this.emissive.isColor) ) data.emissive = this.emissive.getHex();\n\t\tif ( (this.specular && this.specular.isColor) ) data.specular = this.specular.getHex();\n\t\tif ( this.shininess !== undefined ) data.shininess = this.shininess;\n\n\t\tif ( (this.map && this.map.isTexture) ) data.map = this.map.toJSON( meta ).uuid;\n\t\tif ( (this.alphaMap && this.alphaMap.isTexture) ) data.alphaMap = this.alphaMap.toJSON( meta ).uuid;\n\t\tif ( (this.lightMap && this.lightMap.isTexture) ) data.lightMap = this.lightMap.toJSON( meta ).uuid;\n\t\tif ( (this.bumpMap && this.bumpMap.isTexture) ) {\n\n\t\t\tdata.bumpMap = this.bumpMap.toJSON( meta ).uuid;\n\t\t\tdata.bumpScale = this.bumpScale;\n\n\t\t}\n\t\tif ( (this.normalMap && this.normalMap.isTexture) ) {\n\n\t\t\tdata.normalMap = this.normalMap.toJSON( meta ).uuid;\n\t\t\tdata.normalScale = this.normalScale.toArray();\n\n\t\t}\n\t\tif ( (this.displacementMap && this.displacementMap.isTexture) ) {\n\n\t\t\tdata.displacementMap = this.displacementMap.toJSON( meta ).uuid;\n\t\t\tdata.displacementScale = this.displacementScale;\n\t\t\tdata.displacementBias = this.displacementBias;\n\n\t\t}\n\t\tif ( (this.roughnessMap && this.roughnessMap.isTexture) ) data.roughnessMap = this.roughnessMap.toJSON( meta ).uuid;\n\t\tif ( (this.metalnessMap && this.metalnessMap.isTexture) ) data.metalnessMap = this.metalnessMap.toJSON( meta ).uuid;\n\n\t\tif ( (this.emissiveMap && this.emissiveMap.isTexture) ) data.emissiveMap = this.emissiveMap.toJSON( meta ).uuid;\n\t\tif ( (this.specularMap && this.specularMap.isTexture) ) data.specularMap = this.specularMap.toJSON( meta ).uuid;\n\n\t\tif ( (this.envMap && this.envMap.isTexture) ) {\n\n\t\t\tdata.envMap = this.envMap.toJSON( meta ).uuid;\n\t\t\tdata.reflectivity = this.reflectivity; // Scale behind envMap\n\n\t\t}\n\n\t\tif ( this.size !== undefined ) data.size = this.size;\n\t\tif ( this.sizeAttenuation !== undefined ) data.sizeAttenuation = this.sizeAttenuation;\n\n\t\tif ( this.blending !== NormalBlending ) data.blending = this.blending;\n\t\tif ( this.shading !== SmoothShading ) data.shading = this.shading;\n\t\tif ( this.side !== FrontSide ) data.side = this.side;\n\t\tif ( this.vertexColors !== NoColors ) data.vertexColors = this.vertexColors;\n\n\t\tif ( this.opacity < 1 ) data.opacity = this.opacity;\n\t\tif ( this.transparent === true ) data.transparent = this.transparent;\n\n\t\tdata.depthFunc = this.depthFunc;\n\t\tdata.depthTest = this.depthTest;\n\t\tdata.depthWrite = this.depthWrite;\n\n\t\tif ( this.alphaTest > 0 ) data.alphaTest = this.alphaTest;\n\t\tif ( this.premultipliedAlpha === true ) data.premultipliedAlpha = this.premultipliedAlpha;\n\t\tif ( this.wireframe === true ) data.wireframe = this.wireframe;\n\t\tif ( this.wireframeLinewidth > 1 ) data.wireframeLinewidth = this.wireframeLinewidth;\n\t\tif ( this.wireframeLinecap !== 'round' ) data.wireframeLinecap = this.wireframeLinecap;\n\t\tif ( this.wireframeLinejoin !== 'round' ) data.wireframeLinejoin = this.wireframeLinejoin;\n\n\t\tdata.skinning = this.skinning;\n\t\tdata.morphTargets = this.morphTargets;\n\n\t\t// TODO: Copied from Object3D.toJSON\n\n\t\tfunction extractFromCache( cache ) {\n\n\t\t\tvar values = [];\n\n\t\t\tfor ( var key in cache ) {\n\n\t\t\t\tvar data = cache[ key ];\n\t\t\t\tdelete data.metadata;\n\t\t\t\tvalues.push( data );\n\n\t\t\t}\n\n\t\t\treturn values;\n\n\t\t}\n\n\t\tif ( isRoot ) {\n\n\t\t\tvar textures = extractFromCache( meta.textures );\n\t\t\tvar images = extractFromCache( meta.images );\n\n\t\t\tif ( textures.length > 0 ) data.textures = textures;\n\t\t\tif ( images.length > 0 ) data.images = images;\n\n\t\t}\n\n\t\treturn data;\n\n\t},\n\n\tclone: function () {\n\n\t\treturn new this.constructor().copy( this );\n\n\t},\n\n\tcopy: function ( source ) {\n\n\t\tthis.name = source.name;\n\n\t\tthis.fog = source.fog;\n\t\tthis.lights = source.lights;\n\n\t\tthis.blending = source.blending;\n\t\tthis.side = source.side;\n\t\tthis.shading = source.shading;\n\t\tthis.vertexColors = source.vertexColors;\n\n\t\tthis.opacity = source.opacity;\n\t\tthis.transparent = source.transparent;\n\n\t\tthis.blendSrc = source.blendSrc;\n\t\tthis.blendDst = source.blendDst;\n\t\tthis.blendEquation = source.blendEquation;\n\t\tthis.blendSrcAlpha = source.blendSrcAlpha;\n\t\tthis.blendDstAlpha = source.blendDstAlpha;\n\t\tthis.blendEquationAlpha = source.blendEquationAlpha;\n\n\t\tthis.depthFunc = source.depthFunc;\n\t\tthis.depthTest = source.depthTest;\n\t\tthis.depthWrite = source.depthWrite;\n\n\t\tthis.colorWrite = source.colorWrite;\n\n\t\tthis.precision = source.precision;\n\n\t\tthis.polygonOffset = source.polygonOffset;\n\t\tthis.polygonOffsetFactor = source.polygonOffsetFactor;\n\t\tthis.polygonOffsetUnits = source.polygonOffsetUnits;\n\n\t\tthis.alphaTest = source.alphaTest;\n\n\t\tthis.premultipliedAlpha = source.premultipliedAlpha;\n\n\t\tthis.overdraw = source.overdraw;\n\n\t\tthis.visible = source.visible;\n\t\tthis.clipShadows = source.clipShadows;\n\t\tthis.clipIntersection = source.clipIntersection;\n\n\t\tvar srcPlanes = source.clippingPlanes,\n\t\t\tdstPlanes = null;\n\n\t\tif ( srcPlanes !== null ) {\n\n\t\t\tvar n = srcPlanes.length;\n\t\t\tdstPlanes = new Array( n );\n\n\t\t\tfor ( var i = 0; i !== n; ++ i )\n\t\t\t\tdstPlanes[ i ] = srcPlanes[ i ].clone();\n\n\t\t}\n\n\t\tthis.clippingPlanes = dstPlanes;\n\n\t\treturn this;\n\n\t},\n\n\tupdate: function () {\n\n\t\tthis.dispatchEvent( { type: 'update' } );\n\n\t},\n\n\tdispose: function () {\n\n\t\tthis.dispatchEvent( { type: 'dispose' } );\n\n\t}\n\n};\n\nObject.assign( Material.prototype, EventDispatcher.prototype );\n\nvar count = 0;\nfunction MaterialIdCount() { return count++; };\n\n\nexport { MaterialIdCount, Material };\n","import { Material } from './Material';\nimport { UniformsUtils } from '../renderers/shaders/UniformsUtils';\n\n/**\n * @author alteredq / http://alteredqualia.com/\n *\n * parameters = {\n * defines: { \"label\" : \"value\" },\n * uniforms: { \"parameter1\": { value: 1.0 }, \"parameter2\": { value2: 2 } },\n *\n * fragmentShader: ,\n * vertexShader: ,\n *\n * wireframe: ,\n * wireframeLinewidth: ,\n *\n * lights: ,\n *\n * skinning: ,\n * morphTargets: ,\n * morphNormals: \n * }\n */\n\nfunction ShaderMaterial( parameters ) {\n\n\tMaterial.call( this );\n\n\tthis.type = 'ShaderMaterial';\n\n\tthis.defines = {};\n\tthis.uniforms = {};\n\n\tthis.vertexShader = 'void main() {\\n\\tgl_Position = projectionMatrix * modelViewMatrix * vec4( position, 1.0 );\\n}';\n\tthis.fragmentShader = 'void main() {\\n\\tgl_FragColor = vec4( 1.0, 0.0, 0.0, 1.0 );\\n}';\n\n\tthis.linewidth = 1;\n\n\tthis.wireframe = false;\n\tthis.wireframeLinewidth = 1;\n\n\tthis.fog = false; // set to use scene fog\n\tthis.lights = false; // set to use scene lights\n\tthis.clipping = false; // set to use user-defined clipping planes\n\n\tthis.skinning = false; // set to use skinning attribute streams\n\tthis.morphTargets = false; // set to use morph targets\n\tthis.morphNormals = false; // set to use morph normals\n\n\tthis.extensions = {\n\t\tderivatives: false, // set to use derivatives\n\t\tfragDepth: false, // set to use fragment depth values\n\t\tdrawBuffers: false, // set to use draw buffers\n\t\tshaderTextureLOD: false // set to use shader texture LOD\n\t};\n\n\t// When rendered geometry doesn't include these attributes but the material does,\n\t// use these default values in WebGL. This avoids errors when buffer data is missing.\n\tthis.defaultAttributeValues = {\n\t\t'color': [ 1, 1, 1 ],\n\t\t'uv': [ 0, 0 ],\n\t\t'uv2': [ 0, 0 ]\n\t};\n\n\tthis.index0AttributeName = undefined;\n\n\tif ( parameters !== undefined ) {\n\n\t\tif ( parameters.attributes !== undefined ) {\n\n\t\t\tconsole.error( 'THREE.ShaderMaterial: attributes should now be defined in THREE.BufferGeometry instead.' );\n\n\t\t}\n\n\t\tthis.setValues( parameters );\n\n\t}\n\n}\n\nShaderMaterial.prototype = Object.create( Material.prototype );\nShaderMaterial.prototype.constructor = ShaderMaterial;\n\nShaderMaterial.prototype.isShaderMaterial = true;\n\nShaderMaterial.prototype.copy = function ( source ) {\n\n\tMaterial.prototype.copy.call( this, source );\n\n\tthis.fragmentShader = source.fragmentShader;\n\tthis.vertexShader = source.vertexShader;\n\n\tthis.uniforms = UniformsUtils.clone( source.uniforms );\n\n\tthis.defines = source.defines;\n\n\tthis.wireframe = source.wireframe;\n\tthis.wireframeLinewidth = source.wireframeLinewidth;\n\n\tthis.lights = source.lights;\n\tthis.clipping = source.clipping;\n\n\tthis.skinning = source.skinning;\n\n\tthis.morphTargets = source.morphTargets;\n\tthis.morphNormals = source.morphNormals;\n\n\tthis.extensions = source.extensions;\n\n\treturn this;\n\n};\n\nShaderMaterial.prototype.toJSON = function ( meta ) {\n\n\tvar data = Material.prototype.toJSON.call( this, meta );\n\n\tdata.uniforms = this.uniforms;\n\tdata.vertexShader = this.vertexShader;\n\tdata.fragmentShader = this.fragmentShader;\n\n\treturn data;\n\n};\n\n\nexport { ShaderMaterial };\n","import { Material } from './Material';\nimport { BasicDepthPacking } from '../constants';\n\n/**\n * @author mrdoob / http://mrdoob.com/\n * @author alteredq / http://alteredqualia.com/\n * @author bhouston / https://clara.io\n * @author WestLangley / http://github.com/WestLangley\n *\n * parameters = {\n *\n * opacity: ,\n *\n * map: new THREE.Texture( ),\n *\n * alphaMap: new THREE.Texture( ),\n *\n * displacementMap: new THREE.Texture( ),\n * displacementScale: ,\n * displacementBias: ,\n *\n * wireframe: ,\n * wireframeLinewidth: \n * }\n */\n\nfunction MeshDepthMaterial( parameters ) {\n\n\tMaterial.call( this );\n\n\tthis.type = 'MeshDepthMaterial';\n\n\tthis.depthPacking = BasicDepthPacking;\n\n\tthis.skinning = false;\n\tthis.morphTargets = false;\n\n\tthis.map = null;\n\n\tthis.alphaMap = null;\n\n\tthis.displacementMap = null;\n\tthis.displacementScale = 1;\n\tthis.displacementBias = 0;\n\n\tthis.wireframe = false;\n\tthis.wireframeLinewidth = 1;\n\n\tthis.fog = false;\n\tthis.lights = false;\n\n\tthis.setValues( parameters );\n\n}\n\nMeshDepthMaterial.prototype = Object.create( Material.prototype );\nMeshDepthMaterial.prototype.constructor = MeshDepthMaterial;\n\nMeshDepthMaterial.prototype.isMeshDepthMaterial = true;\n\nMeshDepthMaterial.prototype.copy = function ( source ) {\n\n\tMaterial.prototype.copy.call( this, source );\n\n\tthis.depthPacking = source.depthPacking;\n\n\tthis.skinning = source.skinning;\n\tthis.morphTargets = source.morphTargets;\n\n\tthis.map = source.map;\n\n\tthis.alphaMap = source.alphaMap;\n\n\tthis.displacementMap = source.displacementMap;\n\tthis.displacementScale = source.displacementScale;\n\tthis.displacementBias = source.displacementBias;\n\n\tthis.wireframe = source.wireframe;\n\tthis.wireframeLinewidth = source.wireframeLinewidth;\n\n\treturn this;\n\n};\n\n\nexport { MeshDepthMaterial };\n","import { Vector3 } from './Vector3';\nimport { Sphere } from './Sphere';\n\n/**\n * @author bhouston / http://clara.io\n * @author WestLangley / http://github.com/WestLangley\n */\n\nfunction Box3( min, max ) {\n\n\tthis.min = ( min !== undefined ) ? min : new Vector3( + Infinity, + Infinity, + Infinity );\n\tthis.max = ( max !== undefined ) ? max : new Vector3( - Infinity, - Infinity, - Infinity );\n\n}\n\nBox3.prototype = {\n\n\tconstructor: Box3,\n\n\tisBox3: true,\n\n\tset: function ( min, max ) {\n\n\t\tthis.min.copy( min );\n\t\tthis.max.copy( max );\n\n\t\treturn this;\n\n\t},\n\n\tsetFromArray: function ( array ) {\n\n\t\tvar minX = + Infinity;\n\t\tvar minY = + Infinity;\n\t\tvar minZ = + Infinity;\n\n\t\tvar maxX = - Infinity;\n\t\tvar maxY = - Infinity;\n\t\tvar maxZ = - Infinity;\n\n\t\tfor ( var i = 0, l = array.length; i < l; i += 3 ) {\n\n\t\t\tvar x = array[ i ];\n\t\t\tvar y = array[ i + 1 ];\n\t\t\tvar z = array[ i + 2 ];\n\n\t\t\tif ( x < minX ) minX = x;\n\t\t\tif ( y < minY ) minY = y;\n\t\t\tif ( z < minZ ) minZ = z;\n\n\t\t\tif ( x > maxX ) maxX = x;\n\t\t\tif ( y > maxY ) maxY = y;\n\t\t\tif ( z > maxZ ) maxZ = z;\n\n\t\t}\n\n\t\tthis.min.set( minX, minY, minZ );\n\t\tthis.max.set( maxX, maxY, maxZ );\n\n\t},\n\n\tsetFromPoints: function ( points ) {\n\n\t\tthis.makeEmpty();\n\n\t\tfor ( var i = 0, il = points.length; i < il; i ++ ) {\n\n\t\t\tthis.expandByPoint( points[ i ] );\n\n\t\t}\n\n\t\treturn this;\n\n\t},\n\n\tsetFromCenterAndSize: function () {\n\n\t\tvar v1 = new Vector3();\n\n\t\treturn function setFromCenterAndSize( center, size ) {\n\n\t\t\tvar halfSize = v1.copy( size ).multiplyScalar( 0.5 );\n\n\t\t\tthis.min.copy( center ).sub( halfSize );\n\t\t\tthis.max.copy( center ).add( halfSize );\n\n\t\t\treturn this;\n\n\t\t};\n\n\t}(),\n\n\tsetFromObject: function () {\n\n\t\t// Computes the world-axis-aligned bounding box of an object (including its children),\n\t\t// accounting for both the object's, and children's, world transforms\n\n\t\tvar v1 = new Vector3();\n\n\t\treturn function setFromObject( object ) {\n\n\t\t\tvar scope = this;\n\n\t\t\tobject.updateMatrixWorld( true );\n\n\t\t\tthis.makeEmpty();\n\n\t\t\tobject.traverse( function ( node ) {\n\n\t\t\t\tvar geometry = node.geometry;\n\n\t\t\t\tif ( geometry !== undefined ) {\n\n\t\t\t\t\tif ( (geometry && geometry.isGeometry) ) {\n\n\t\t\t\t\t\tvar vertices = geometry.vertices;\n\n\t\t\t\t\t\tfor ( var i = 0, il = vertices.length; i < il; i ++ ) {\n\n\t\t\t\t\t\t\tv1.copy( vertices[ i ] );\n\t\t\t\t\t\t\tv1.applyMatrix4( node.matrixWorld );\n\n\t\t\t\t\t\t\tscope.expandByPoint( v1 );\n\n\t\t\t\t\t\t}\n\n\t\t\t\t\t} else if ( (geometry && geometry.isBufferGeometry) ) {\n\n\t\t\t\t\t\tvar attribute = geometry.attributes.position;\n\n\t\t\t\t\t\tif ( attribute !== undefined ) {\n\n\t\t\t\t\t\t\tvar array, offset, stride;\n\n\t\t\t\t\t\t\tif ( (attribute && attribute.isInterleavedBufferAttribute) ) {\n\n\t\t\t\t\t\t\t\tarray = attribute.data.array;\n\t\t\t\t\t\t\t\toffset = attribute.offset;\n\t\t\t\t\t\t\t\tstride = attribute.data.stride;\n\n\t\t\t\t\t\t\t} else {\n\n\t\t\t\t\t\t\t\tarray = attribute.array;\n\t\t\t\t\t\t\t\toffset = 0;\n\t\t\t\t\t\t\t\tstride = 3;\n\n\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\tfor ( var i = offset, il = array.length; i < il; i += stride ) {\n\n\t\t\t\t\t\t\t\tv1.fromArray( array, i );\n\t\t\t\t\t\t\t\tv1.applyMatrix4( node.matrixWorld );\n\n\t\t\t\t\t\t\t\tscope.expandByPoint( v1 );\n\n\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t}\n\n\t\t\t\t\t}\n\n\t\t\t\t}\n\n\t\t\t} );\n\n\t\t\treturn this;\n\n\t\t};\n\n\t}(),\n\n\tclone: function () {\n\n\t\treturn new this.constructor().copy( this );\n\n\t},\n\n\tcopy: function ( box ) {\n\n\t\tthis.min.copy( box.min );\n\t\tthis.max.copy( box.max );\n\n\t\treturn this;\n\n\t},\n\n\tmakeEmpty: function () {\n\n\t\tthis.min.x = this.min.y = this.min.z = + Infinity;\n\t\tthis.max.x = this.max.y = this.max.z = - Infinity;\n\n\t\treturn this;\n\n\t},\n\n\tisEmpty: function () {\n\n\t\t// this is a more robust check for empty than ( volume <= 0 ) because volume can get positive with two negative axes\n\n\t\treturn ( this.max.x < this.min.x ) || ( this.max.y < this.min.y ) || ( this.max.z < this.min.z );\n\n\t},\n\n\tgetCenter: function ( optionalTarget ) {\n\n\t\tvar result = optionalTarget || new Vector3();\n\t\treturn this.isEmpty() ? result.set( 0, 0, 0 ) : result.addVectors( this.min, this.max ).multiplyScalar( 0.5 );\n\n\t},\n\n\tgetSize: function ( optionalTarget ) {\n\n\t\tvar result = optionalTarget || new Vector3();\n\t\treturn this.isEmpty() ? result.set( 0, 0, 0 ) : result.subVectors( this.max, this.min );\n\n\t},\n\n\texpandByPoint: function ( point ) {\n\n\t\tthis.min.min( point );\n\t\tthis.max.max( point );\n\n\t\treturn this;\n\n\t},\n\n\texpandByVector: function ( vector ) {\n\n\t\tthis.min.sub( vector );\n\t\tthis.max.add( vector );\n\n\t\treturn this;\n\n\t},\n\n\texpandByScalar: function ( scalar ) {\n\n\t\tthis.min.addScalar( - scalar );\n\t\tthis.max.addScalar( scalar );\n\n\t\treturn this;\n\n\t},\n\n\tcontainsPoint: function ( point ) {\n\n\t\tif ( point.x < this.min.x || point.x > this.max.x ||\n\t\t\t\t point.y < this.min.y || point.y > this.max.y ||\n\t\t\t\t point.z < this.min.z || point.z > this.max.z ) {\n\n\t\t\treturn false;\n\n\t\t}\n\n\t\treturn true;\n\n\t},\n\n\tcontainsBox: function ( box ) {\n\n\t\tif ( ( this.min.x <= box.min.x ) && ( box.max.x <= this.max.x ) &&\n\t\t\t ( this.min.y <= box.min.y ) && ( box.max.y <= this.max.y ) &&\n\t\t\t ( this.min.z <= box.min.z ) && ( box.max.z <= this.max.z ) ) {\n\n\t\t\treturn true;\n\n\t\t}\n\n\t\treturn false;\n\n\t},\n\n\tgetParameter: function ( point, optionalTarget ) {\n\n\t\t// This can potentially have a divide by zero if the box\n\t\t// has a size dimension of 0.\n\n\t\tvar result = optionalTarget || new Vector3();\n\n\t\treturn result.set(\n\t\t\t( point.x - this.min.x ) / ( this.max.x - this.min.x ),\n\t\t\t( point.y - this.min.y ) / ( this.max.y - this.min.y ),\n\t\t\t( point.z - this.min.z ) / ( this.max.z - this.min.z )\n\t\t);\n\n\t},\n\n\tintersectsBox: function ( box ) {\n\n\t\t// using 6 splitting planes to rule out intersections.\n\n\t\tif ( box.max.x < this.min.x || box.min.x > this.max.x ||\n\t\t\t\t box.max.y < this.min.y || box.min.y > this.max.y ||\n\t\t\t\t box.max.z < this.min.z || box.min.z > this.max.z ) {\n\n\t\t\treturn false;\n\n\t\t}\n\n\t\treturn true;\n\n\t},\n\n\tintersectsSphere: ( function () {\n\n\t\tvar closestPoint;\n\n\t\treturn function intersectsSphere( sphere ) {\n\n\t\t\tif ( closestPoint === undefined ) closestPoint = new Vector3();\n\n\t\t\t// Find the point on the AABB closest to the sphere center.\n\t\t\tthis.clampPoint( sphere.center, closestPoint );\n\n\t\t\t// If that point is inside the sphere, the AABB and sphere intersect.\n\t\t\treturn closestPoint.distanceToSquared( sphere.center ) <= ( sphere.radius * sphere.radius );\n\n\t\t};\n\n\t} )(),\n\n\tintersectsPlane: function ( plane ) {\n\n\t\t// We compute the minimum and maximum dot product values. If those values\n\t\t// are on the same side (back or front) of the plane, then there is no intersection.\n\n\t\tvar min, max;\n\n\t\tif ( plane.normal.x > 0 ) {\n\n\t\t\tmin = plane.normal.x * this.min.x;\n\t\t\tmax = plane.normal.x * this.max.x;\n\n\t\t} else {\n\n\t\t\tmin = plane.normal.x * this.max.x;\n\t\t\tmax = plane.normal.x * this.min.x;\n\n\t\t}\n\n\t\tif ( plane.normal.y > 0 ) {\n\n\t\t\tmin += plane.normal.y * this.min.y;\n\t\t\tmax += plane.normal.y * this.max.y;\n\n\t\t} else {\n\n\t\t\tmin += plane.normal.y * this.max.y;\n\t\t\tmax += plane.normal.y * this.min.y;\n\n\t\t}\n\n\t\tif ( plane.normal.z > 0 ) {\n\n\t\t\tmin += plane.normal.z * this.min.z;\n\t\t\tmax += plane.normal.z * this.max.z;\n\n\t\t} else {\n\n\t\t\tmin += plane.normal.z * this.max.z;\n\t\t\tmax += plane.normal.z * this.min.z;\n\n\t\t}\n\n\t\treturn ( min <= plane.constant && max >= plane.constant );\n\n\t},\n\n\tclampPoint: function ( point, optionalTarget ) {\n\n\t\tvar result = optionalTarget || new Vector3();\n\t\treturn result.copy( point ).clamp( this.min, this.max );\n\n\t},\n\n\tdistanceToPoint: function () {\n\n\t\tvar v1 = new Vector3();\n\n\t\treturn function distanceToPoint( point ) {\n\n\t\t\tvar clampedPoint = v1.copy( point ).clamp( this.min, this.max );\n\t\t\treturn clampedPoint.sub( point ).length();\n\n\t\t};\n\n\t}(),\n\n\tgetBoundingSphere: function () {\n\n\t\tvar v1 = new Vector3();\n\n\t\treturn function getBoundingSphere( optionalTarget ) {\n\n\t\t\tvar result = optionalTarget || new Sphere();\n\n\t\t\tthis.getCenter( result.center );\n\n\t\t\tresult.radius = this.getSize( v1 ).length() * 0.5;\n\n\t\t\treturn result;\n\n\t\t};\n\n\t}(),\n\n\tintersect: function ( box ) {\n\n\t\tthis.min.max( box.min );\n\t\tthis.max.min( box.max );\n\n\t\t// ensure that if there is no overlap, the result is fully empty, not slightly empty with non-inf/+inf values that will cause subsequence intersects to erroneously return valid values.\n\t\tif( this.isEmpty() ) this.makeEmpty();\n\n\t\treturn this;\n\n\t},\n\n\tunion: function ( box ) {\n\n\t\tthis.min.min( box.min );\n\t\tthis.max.max( box.max );\n\n\t\treturn this;\n\n\t},\n\n\tapplyMatrix4: function () {\n\n\t\tvar points = [\n\t\t\tnew Vector3(),\n\t\t\tnew Vector3(),\n\t\t\tnew Vector3(),\n\t\t\tnew Vector3(),\n\t\t\tnew Vector3(),\n\t\t\tnew Vector3(),\n\t\t\tnew Vector3(),\n\t\t\tnew Vector3()\n\t\t];\n\n\t\treturn function applyMatrix4( matrix ) {\n\n\t\t\t// transform of empty box is an empty box.\n\t\t\tif( this.isEmpty() ) return this;\n\n\t\t\t// NOTE: I am using a binary pattern to specify all 2^3 combinations below\n\t\t\tpoints[ 0 ].set( this.min.x, this.min.y, this.min.z ).applyMatrix4( matrix ); // 000\n\t\t\tpoints[ 1 ].set( this.min.x, this.min.y, this.max.z ).applyMatrix4( matrix ); // 001\n\t\t\tpoints[ 2 ].set( this.min.x, this.max.y, this.min.z ).applyMatrix4( matrix ); // 010\n\t\t\tpoints[ 3 ].set( this.min.x, this.max.y, this.max.z ).applyMatrix4( matrix ); // 011\n\t\t\tpoints[ 4 ].set( this.max.x, this.min.y, this.min.z ).applyMatrix4( matrix ); // 100\n\t\t\tpoints[ 5 ].set( this.max.x, this.min.y, this.max.z ).applyMatrix4( matrix ); // 101\n\t\t\tpoints[ 6 ].set( this.max.x, this.max.y, this.min.z ).applyMatrix4( matrix ); // 110\n\t\t\tpoints[ 7 ].set( this.max.x, this.max.y, this.max.z ).applyMatrix4( matrix );\t// 111\n\n\t\t\tthis.setFromPoints( points );\n\n\t\t\treturn this;\n\n\t\t};\n\n\t}(),\n\n\ttranslate: function ( offset ) {\n\n\t\tthis.min.add( offset );\n\t\tthis.max.add( offset );\n\n\t\treturn this;\n\n\t},\n\n\tequals: function ( box ) {\n\n\t\treturn box.min.equals( this.min ) && box.max.equals( this.max );\n\n\t}\n\n};\n\n\nexport { Box3 };\n","import { Box3 } from './Box3';\nimport { Vector3 } from './Vector3';\n\n/**\n * @author bhouston / http://clara.io\n * @author mrdoob / http://mrdoob.com/\n */\n\nfunction Sphere( center, radius ) {\n\n\tthis.center = ( center !== undefined ) ? center : new Vector3();\n\tthis.radius = ( radius !== undefined ) ? radius : 0;\n\n}\n\nSphere.prototype = {\n\n\tconstructor: Sphere,\n\n\tset: function ( center, radius ) {\n\n\t\tthis.center.copy( center );\n\t\tthis.radius = radius;\n\n\t\treturn this;\n\n\t},\n\n\tsetFromPoints: function () {\n\n\t\tvar box = new Box3();\n\n\t\treturn function setFromPoints( points, optionalCenter ) {\n\n\t\t\tvar center = this.center;\n\n\t\t\tif ( optionalCenter !== undefined ) {\n\n\t\t\t\tcenter.copy( optionalCenter );\n\n\t\t\t} else {\n\n\t\t\t\tbox.setFromPoints( points ).getCenter( center );\n\n\t\t\t}\n\n\t\t\tvar maxRadiusSq = 0;\n\n\t\t\tfor ( var i = 0, il = points.length; i < il; i ++ ) {\n\n\t\t\t\tmaxRadiusSq = Math.max( maxRadiusSq, center.distanceToSquared( points[ i ] ) );\n\n\t\t\t}\n\n\t\t\tthis.radius = Math.sqrt( maxRadiusSq );\n\n\t\t\treturn this;\n\n\t\t};\n\n\t}(),\n\n\tclone: function () {\n\n\t\treturn new this.constructor().copy( this );\n\n\t},\n\n\tcopy: function ( sphere ) {\n\n\t\tthis.center.copy( sphere.center );\n\t\tthis.radius = sphere.radius;\n\n\t\treturn this;\n\n\t},\n\n\tempty: function () {\n\n\t\treturn ( this.radius <= 0 );\n\n\t},\n\n\tcontainsPoint: function ( point ) {\n\n\t\treturn ( point.distanceToSquared( this.center ) <= ( this.radius * this.radius ) );\n\n\t},\n\n\tdistanceToPoint: function ( point ) {\n\n\t\treturn ( point.distanceTo( this.center ) - this.radius );\n\n\t},\n\n\tintersectsSphere: function ( sphere ) {\n\n\t\tvar radiusSum = this.radius + sphere.radius;\n\n\t\treturn sphere.center.distanceToSquared( this.center ) <= ( radiusSum * radiusSum );\n\n\t},\n\n\tintersectsBox: function ( box ) {\n\n\t\treturn box.intersectsSphere( this );\n\n\t},\n\n\tintersectsPlane: function ( plane ) {\n\n\t\t// We use the following equation to compute the signed distance from\n\t\t// the center of the sphere to the plane.\n\t\t//\n\t\t// distance = q * n - d\n\t\t//\n\t\t// If this distance is greater than the radius of the sphere,\n\t\t// then there is no intersection.\n\n\t\treturn Math.abs( this.center.dot( plane.normal ) - plane.constant ) <= this.radius;\n\n\t},\n\n\tclampPoint: function ( point, optionalTarget ) {\n\n\t\tvar deltaLengthSq = this.center.distanceToSquared( point );\n\n\t\tvar result = optionalTarget || new Vector3();\n\n\t\tresult.copy( point );\n\n\t\tif ( deltaLengthSq > ( this.radius * this.radius ) ) {\n\n\t\t\tresult.sub( this.center ).normalize();\n\t\t\tresult.multiplyScalar( this.radius ).add( this.center );\n\n\t\t}\n\n\t\treturn result;\n\n\t},\n\n\tgetBoundingBox: function ( optionalTarget ) {\n\n\t\tvar box = optionalTarget || new Box3();\n\n\t\tbox.set( this.center, this.center );\n\t\tbox.expandByScalar( this.radius );\n\n\t\treturn box;\n\n\t},\n\n\tapplyMatrix4: function ( matrix ) {\n\n\t\tthis.center.applyMatrix4( matrix );\n\t\tthis.radius = this.radius * matrix.getMaxScaleOnAxis();\n\n\t\treturn this;\n\n\t},\n\n\ttranslate: function ( offset ) {\n\n\t\tthis.center.add( offset );\n\n\t\treturn this;\n\n\t},\n\n\tequals: function ( sphere ) {\n\n\t\treturn sphere.center.equals( this.center ) && ( sphere.radius === this.radius );\n\n\t}\n\n};\n\n\nexport { Sphere };\n","import { Vector3 } from './Vector3';\n\n/**\n * @author alteredq / http://alteredqualia.com/\n * @author WestLangley / http://github.com/WestLangley\n * @author bhouston / http://clara.io\n * @author tschw\n */\n\nfunction Matrix3() {\n\n\tthis.elements = new Float32Array( [\n\n\t\t1, 0, 0,\n\t\t0, 1, 0,\n\t\t0, 0, 1\n\n\t] );\n\n\tif ( arguments.length > 0 ) {\n\n\t\tconsole.error( 'THREE.Matrix3: the constructor no longer reads arguments. use .set() instead.' );\n\n\t}\n\n}\n\nMatrix3.prototype = {\n\n\tconstructor: Matrix3,\n\n\tisMatrix3: true,\n\n\tset: function ( n11, n12, n13, n21, n22, n23, n31, n32, n33 ) {\n\n\t\tvar te = this.elements;\n\n\t\tte[ 0 ] = n11; te[ 1 ] = n21; te[ 2 ] = n31;\n\t\tte[ 3 ] = n12; te[ 4 ] = n22; te[ 5 ] = n32;\n\t\tte[ 6 ] = n13; te[ 7 ] = n23; te[ 8 ] = n33;\n\n\t\treturn this;\n\n\t},\n\n\tidentity: function () {\n\n\t\tthis.set(\n\n\t\t\t1, 0, 0,\n\t\t\t0, 1, 0,\n\t\t\t0, 0, 1\n\n\t\t);\n\n\t\treturn this;\n\n\t},\n\n\tclone: function () {\n\n\t\treturn new this.constructor().fromArray( this.elements );\n\n\t},\n\n\tcopy: function ( m ) {\n\n\t\tvar me = m.elements;\n\n\t\tthis.set(\n\n\t\t\tme[ 0 ], me[ 3 ], me[ 6 ],\n\t\t\tme[ 1 ], me[ 4 ], me[ 7 ],\n\t\t\tme[ 2 ], me[ 5 ], me[ 8 ]\n\n\t\t);\n\n\t\treturn this;\n\n\t},\n\n\tsetFromMatrix4: function( m ) {\n\n\t\tvar me = m.elements;\n\n\t\tthis.set(\n\n\t\t\tme[ 0 ], me[ 4 ], me[ 8 ],\n\t\t\tme[ 1 ], me[ 5 ], me[ 9 ],\n\t\t\tme[ 2 ], me[ 6 ], me[ 10 ]\n\n\t\t);\n\n\t\treturn this;\n\n\t},\n\n\tapplyToVector3Array: function () {\n\n\t\tvar v1;\n\n\t\treturn function applyToVector3Array( array, offset, length ) {\n\n\t\t\tif ( v1 === undefined ) v1 = new Vector3();\n\t\t\tif ( offset === undefined ) offset = 0;\n\t\t\tif ( length === undefined ) length = array.length;\n\n\t\t\tfor ( var i = 0, j = offset; i < length; i += 3, j += 3 ) {\n\n\t\t\t\tv1.fromArray( array, j );\n\t\t\t\tv1.applyMatrix3( this );\n\t\t\t\tv1.toArray( array, j );\n\n\t\t\t}\n\n\t\t\treturn array;\n\n\t\t};\n\n\t}(),\n\n\tapplyToBuffer: function () {\n\n\t\tvar v1;\n\n\t\treturn function applyToBuffer( buffer, offset, length ) {\n\n\t\t\tif ( v1 === undefined ) v1 = new Vector3();\n\t\t\tif ( offset === undefined ) offset = 0;\n\t\t\tif ( length === undefined ) length = buffer.length / buffer.itemSize;\n\n\t\t\tfor ( var i = 0, j = offset; i < length; i ++, j ++ ) {\n\n\t\t\t\tv1.x = buffer.getX( j );\n\t\t\t\tv1.y = buffer.getY( j );\n\t\t\t\tv1.z = buffer.getZ( j );\n\n\t\t\t\tv1.applyMatrix3( this );\n\n\t\t\t\tbuffer.setXYZ( j, v1.x, v1.y, v1.z );\n\n\t\t\t}\n\n\t\t\treturn buffer;\n\n\t\t};\n\n\t}(),\n\n\tmultiplyScalar: function ( s ) {\n\n\t\tvar te = this.elements;\n\n\t\tte[ 0 ] *= s; te[ 3 ] *= s; te[ 6 ] *= s;\n\t\tte[ 1 ] *= s; te[ 4 ] *= s; te[ 7 ] *= s;\n\t\tte[ 2 ] *= s; te[ 5 ] *= s; te[ 8 ] *= s;\n\n\t\treturn this;\n\n\t},\n\n\tdeterminant: function () {\n\n\t\tvar te = this.elements;\n\n\t\tvar a = te[ 0 ], b = te[ 1 ], c = te[ 2 ],\n\t\t\td = te[ 3 ], e = te[ 4 ], f = te[ 5 ],\n\t\t\tg = te[ 6 ], h = te[ 7 ], i = te[ 8 ];\n\n\t\treturn a * e * i - a * f * h - b * d * i + b * f * g + c * d * h - c * e * g;\n\n\t},\n\n\tgetInverse: function ( matrix, throwOnDegenerate ) {\n\n\t\tif ( (matrix && matrix.isMatrix4) ) {\n\n\t\t\tconsole.error( \"THREE.Matrix3.getInverse no longer takes a Matrix4 argument.\" );\n\n\t\t}\n\n\t\tvar me = matrix.elements,\n\t\t\tte = this.elements,\n\n\t\t\tn11 = me[ 0 ], n21 = me[ 1 ], n31 = me[ 2 ],\n\t\t\tn12 = me[ 3 ], n22 = me[ 4 ], n32 = me[ 5 ],\n\t\t\tn13 = me[ 6 ], n23 = me[ 7 ], n33 = me[ 8 ],\n\n\t\t\tt11 = n33 * n22 - n32 * n23,\n\t\t\tt12 = n32 * n13 - n33 * n12,\n\t\t\tt13 = n23 * n12 - n22 * n13,\n\n\t\t\tdet = n11 * t11 + n21 * t12 + n31 * t13;\n\n\t\tif ( det === 0 ) {\n\n\t\t\tvar msg = \"THREE.Matrix3.getInverse(): can't invert matrix, determinant is 0\";\n\n\t\t\tif ( throwOnDegenerate === true ) {\n\n\t\t\t\tthrow new Error( msg );\n\n\t\t\t} else {\n\n\t\t\t\tconsole.warn( msg );\n\n\t\t\t}\n\n\t\t\treturn this.identity();\n\t\t}\n\n\t\tvar detInv = 1 / det;\n\n\t\tte[ 0 ] = t11 * detInv;\n\t\tte[ 1 ] = ( n31 * n23 - n33 * n21 ) * detInv;\n\t\tte[ 2 ] = ( n32 * n21 - n31 * n22 ) * detInv;\n\n\t\tte[ 3 ] = t12 * detInv;\n\t\tte[ 4 ] = ( n33 * n11 - n31 * n13 ) * detInv;\n\t\tte[ 5 ] = ( n31 * n12 - n32 * n11 ) * detInv;\n\n\t\tte[ 6 ] = t13 * detInv;\n\t\tte[ 7 ] = ( n21 * n13 - n23 * n11 ) * detInv;\n\t\tte[ 8 ] = ( n22 * n11 - n21 * n12 ) * detInv;\n\n\t\treturn this;\n\n\t},\n\n\ttranspose: function () {\n\n\t\tvar tmp, m = this.elements;\n\n\t\ttmp = m[ 1 ]; m[ 1 ] = m[ 3 ]; m[ 3 ] = tmp;\n\t\ttmp = m[ 2 ]; m[ 2 ] = m[ 6 ]; m[ 6 ] = tmp;\n\t\ttmp = m[ 5 ]; m[ 5 ] = m[ 7 ]; m[ 7 ] = tmp;\n\n\t\treturn this;\n\n\t},\n\n\tflattenToArrayOffset: function ( array, offset ) {\n\n\t\tconsole.warn( \"THREE.Matrix3: .flattenToArrayOffset is deprecated \" +\n\t\t\t\t\"- just use .toArray instead.\" );\n\n\t\treturn this.toArray( array, offset );\n\n\t},\n\n\tgetNormalMatrix: function ( matrix4 ) {\n\n\t\treturn this.setFromMatrix4( matrix4 ).getInverse( this ).transpose();\n\n\t},\n\n\ttransposeIntoArray: function ( r ) {\n\n\t\tvar m = this.elements;\n\n\t\tr[ 0 ] = m[ 0 ];\n\t\tr[ 1 ] = m[ 3 ];\n\t\tr[ 2 ] = m[ 6 ];\n\t\tr[ 3 ] = m[ 1 ];\n\t\tr[ 4 ] = m[ 4 ];\n\t\tr[ 5 ] = m[ 7 ];\n\t\tr[ 6 ] = m[ 2 ];\n\t\tr[ 7 ] = m[ 5 ];\n\t\tr[ 8 ] = m[ 8 ];\n\n\t\treturn this;\n\n\t},\n\n\tfromArray: function ( array, offset ) {\n\n\t\tif ( offset === undefined ) offset = 0;\n\n\t\tfor( var i = 0; i < 9; i ++ ) {\n\n\t\t\tthis.elements[ i ] = array[ i + offset ];\n\n\t\t}\n\n\t\treturn this;\n\n\t},\n\n\ttoArray: function ( array, offset ) {\n\n\t\tif ( array === undefined ) array = [];\n\t\tif ( offset === undefined ) offset = 0;\n\n\t\tvar te = this.elements;\n\n\t\tarray[ offset ] = te[ 0 ];\n\t\tarray[ offset + 1 ] = te[ 1 ];\n\t\tarray[ offset + 2 ] = te[ 2 ];\n\n\t\tarray[ offset + 3 ] = te[ 3 ];\n\t\tarray[ offset + 4 ] = te[ 4 ];\n\t\tarray[ offset + 5 ] = te[ 5 ];\n\n\t\tarray[ offset + 6 ] = te[ 6 ];\n\t\tarray[ offset + 7 ] = te[ 7 ];\n\t\tarray[ offset + 8 ] = te[ 8 ];\n\n\t\treturn array;\n\n\t}\n\n};\n\n\nexport { Matrix3 };\n","import { Matrix3 } from './Matrix3';\nimport { Vector3 } from './Vector3';\n\n/**\n * @author bhouston / http://clara.io\n */\n\nfunction Plane( normal, constant ) {\n\n\tthis.normal = ( normal !== undefined ) ? normal : new Vector3( 1, 0, 0 );\n\tthis.constant = ( constant !== undefined ) ? constant : 0;\n\n}\n\nPlane.prototype = {\n\n\tconstructor: Plane,\n\n\tset: function ( normal, constant ) {\n\n\t\tthis.normal.copy( normal );\n\t\tthis.constant = constant;\n\n\t\treturn this;\n\n\t},\n\n\tsetComponents: function ( x, y, z, w ) {\n\n\t\tthis.normal.set( x, y, z );\n\t\tthis.constant = w;\n\n\t\treturn this;\n\n\t},\n\n\tsetFromNormalAndCoplanarPoint: function ( normal, point ) {\n\n\t\tthis.normal.copy( normal );\n\t\tthis.constant = - point.dot( this.normal );\t// must be this.normal, not normal, as this.normal is normalized\n\n\t\treturn this;\n\n\t},\n\n\tsetFromCoplanarPoints: function () {\n\n\t\tvar v1 = new Vector3();\n\t\tvar v2 = new Vector3();\n\n\t\treturn function setFromCoplanarPoints( a, b, c ) {\n\n\t\t\tvar normal = v1.subVectors( c, b ).cross( v2.subVectors( a, b ) ).normalize();\n\n\t\t\t// Q: should an error be thrown if normal is zero (e.g. degenerate plane)?\n\n\t\t\tthis.setFromNormalAndCoplanarPoint( normal, a );\n\n\t\t\treturn this;\n\n\t\t};\n\n\t}(),\n\n\tclone: function () {\n\n\t\treturn new this.constructor().copy( this );\n\n\t},\n\n\tcopy: function ( plane ) {\n\n\t\tthis.normal.copy( plane.normal );\n\t\tthis.constant = plane.constant;\n\n\t\treturn this;\n\n\t},\n\n\tnormalize: function () {\n\n\t\t// Note: will lead to a divide by zero if the plane is invalid.\n\n\t\tvar inverseNormalLength = 1.0 / this.normal.length();\n\t\tthis.normal.multiplyScalar( inverseNormalLength );\n\t\tthis.constant *= inverseNormalLength;\n\n\t\treturn this;\n\n\t},\n\n\tnegate: function () {\n\n\t\tthis.constant *= - 1;\n\t\tthis.normal.negate();\n\n\t\treturn this;\n\n\t},\n\n\tdistanceToPoint: function ( point ) {\n\n\t\treturn this.normal.dot( point ) + this.constant;\n\n\t},\n\n\tdistanceToSphere: function ( sphere ) {\n\n\t\treturn this.distanceToPoint( sphere.center ) - sphere.radius;\n\n\t},\n\n\tprojectPoint: function ( point, optionalTarget ) {\n\n\t\treturn this.orthoPoint( point, optionalTarget ).sub( point ).negate();\n\n\t},\n\n\torthoPoint: function ( point, optionalTarget ) {\n\n\t\tvar perpendicularMagnitude = this.distanceToPoint( point );\n\n\t\tvar result = optionalTarget || new Vector3();\n\t\treturn result.copy( this.normal ).multiplyScalar( perpendicularMagnitude );\n\n\t},\n\n\tintersectLine: function () {\n\n\t\tvar v1 = new Vector3();\n\n\t\treturn function intersectLine( line, optionalTarget ) {\n\n\t\t\tvar result = optionalTarget || new Vector3();\n\n\t\t\tvar direction = line.delta( v1 );\n\n\t\t\tvar denominator = this.normal.dot( direction );\n\n\t\t\tif ( denominator === 0 ) {\n\n\t\t\t\t// line is coplanar, return origin\n\t\t\t\tif ( this.distanceToPoint( line.start ) === 0 ) {\n\n\t\t\t\t\treturn result.copy( line.start );\n\n\t\t\t\t}\n\n\t\t\t\t// Unsure if this is the correct method to handle this case.\n\t\t\t\treturn undefined;\n\n\t\t\t}\n\n\t\t\tvar t = - ( line.start.dot( this.normal ) + this.constant ) / denominator;\n\n\t\t\tif ( t < 0 || t > 1 ) {\n\n\t\t\t\treturn undefined;\n\n\t\t\t}\n\n\t\t\treturn result.copy( direction ).multiplyScalar( t ).add( line.start );\n\n\t\t};\n\n\t}(),\n\n\tintersectsLine: function ( line ) {\n\n\t\t// Note: this tests if a line intersects the plane, not whether it (or its end-points) are coplanar with it.\n\n\t\tvar startSign = this.distanceToPoint( line.start );\n\t\tvar endSign = this.distanceToPoint( line.end );\n\n\t\treturn ( startSign < 0 && endSign > 0 ) || ( endSign < 0 && startSign > 0 );\n\n\t},\n\n\tintersectsBox: function ( box ) {\n\n\t\treturn box.intersectsPlane( this );\n\n\t},\n\n\tintersectsSphere: function ( sphere ) {\n\n\t\treturn sphere.intersectsPlane( this );\n\n\t},\n\n\tcoplanarPoint: function ( optionalTarget ) {\n\n\t\tvar result = optionalTarget || new Vector3();\n\t\treturn result.copy( this.normal ).multiplyScalar( - this.constant );\n\n\t},\n\n\tapplyMatrix4: function () {\n\n\t\tvar v1 = new Vector3();\n\t\tvar m1 = new Matrix3();\n\n\t\treturn function applyMatrix4( matrix, optionalNormalMatrix ) {\n\n\t\t\tvar referencePoint = this.coplanarPoint( v1 ).applyMatrix4( matrix );\n\n\t\t\t// transform normal based on theory here:\n\t\t\t// http://www.songho.ca/opengl/gl_normaltransform.html\n\t\t\tvar normalMatrix = optionalNormalMatrix || m1.getNormalMatrix( matrix );\n\t\t\tvar normal = this.normal.applyMatrix3( normalMatrix ).normalize();\n\n\t\t\t// recalculate constant (like in setFromNormalAndCoplanarPoint)\n\t\t\tthis.constant = - referencePoint.dot( normal );\n\n\t\t\treturn this;\n\n\t\t};\n\n\t}(),\n\n\ttranslate: function ( offset ) {\n\n\t\tthis.constant = this.constant - offset.dot( this.normal );\n\n\t\treturn this;\n\n\t},\n\n\tequals: function ( plane ) {\n\n\t\treturn plane.normal.equals( this.normal ) && ( plane.constant === this.constant );\n\n\t}\n\n};\n\n\nexport { Plane };\n","import { Vector3 } from './Vector3';\nimport { Sphere } from './Sphere';\nimport { Plane } from './Plane';\n\n/**\n * @author mrdoob / http://mrdoob.com/\n * @author alteredq / http://alteredqualia.com/\n * @author bhouston / http://clara.io\n */\n\nfunction Frustum( p0, p1, p2, p3, p4, p5 ) {\n\n\tthis.planes = [\n\n\t\t( p0 !== undefined ) ? p0 : new Plane(),\n\t\t( p1 !== undefined ) ? p1 : new Plane(),\n\t\t( p2 !== undefined ) ? p2 : new Plane(),\n\t\t( p3 !== undefined ) ? p3 : new Plane(),\n\t\t( p4 !== undefined ) ? p4 : new Plane(),\n\t\t( p5 !== undefined ) ? p5 : new Plane()\n\n\t];\n\n}\n\nFrustum.prototype = {\n\n\tconstructor: Frustum,\n\n\tset: function ( p0, p1, p2, p3, p4, p5 ) {\n\n\t\tvar planes = this.planes;\n\n\t\tplanes[ 0 ].copy( p0 );\n\t\tplanes[ 1 ].copy( p1 );\n\t\tplanes[ 2 ].copy( p2 );\n\t\tplanes[ 3 ].copy( p3 );\n\t\tplanes[ 4 ].copy( p4 );\n\t\tplanes[ 5 ].copy( p5 );\n\n\t\treturn this;\n\n\t},\n\n\tclone: function () {\n\n\t\treturn new this.constructor().copy( this );\n\n\t},\n\n\tcopy: function ( frustum ) {\n\n\t\tvar planes = this.planes;\n\n\t\tfor ( var i = 0; i < 6; i ++ ) {\n\n\t\t\tplanes[ i ].copy( frustum.planes[ i ] );\n\n\t\t}\n\n\t\treturn this;\n\n\t},\n\n\tsetFromMatrix: function ( m ) {\n\n\t\tvar planes = this.planes;\n\t\tvar me = m.elements;\n\t\tvar me0 = me[ 0 ], me1 = me[ 1 ], me2 = me[ 2 ], me3 = me[ 3 ];\n\t\tvar me4 = me[ 4 ], me5 = me[ 5 ], me6 = me[ 6 ], me7 = me[ 7 ];\n\t\tvar me8 = me[ 8 ], me9 = me[ 9 ], me10 = me[ 10 ], me11 = me[ 11 ];\n\t\tvar me12 = me[ 12 ], me13 = me[ 13 ], me14 = me[ 14 ], me15 = me[ 15 ];\n\n\t\tplanes[ 0 ].setComponents( me3 - me0, me7 - me4, me11 - me8, me15 - me12 ).normalize();\n\t\tplanes[ 1 ].setComponents( me3 + me0, me7 + me4, me11 + me8, me15 + me12 ).normalize();\n\t\tplanes[ 2 ].setComponents( me3 + me1, me7 + me5, me11 + me9, me15 + me13 ).normalize();\n\t\tplanes[ 3 ].setComponents( me3 - me1, me7 - me5, me11 - me9, me15 - me13 ).normalize();\n\t\tplanes[ 4 ].setComponents( me3 - me2, me7 - me6, me11 - me10, me15 - me14 ).normalize();\n\t\tplanes[ 5 ].setComponents( me3 + me2, me7 + me6, me11 + me10, me15 + me14 ).normalize();\n\n\t\treturn this;\n\n\t},\n\n\tintersectsObject: function () {\n\n\t\tvar sphere = new Sphere();\n\n\t\treturn function intersectsObject( object ) {\n\n\t\t\tvar geometry = object.geometry;\n\n\t\t\tif ( geometry.boundingSphere === null )\n\t\t\t\tgeometry.computeBoundingSphere();\n\n\t\t\tsphere.copy( geometry.boundingSphere )\n\t\t\t\t.applyMatrix4( object.matrixWorld );\n\n\t\t\treturn this.intersectsSphere( sphere );\n\n\t\t};\n\n\t}(),\n\n\tintersectsSprite: function () {\n\n\t\tvar sphere = new Sphere();\n\n\t\treturn function intersectsSprite( sprite ) {\n\n\t\t\tsphere.center.set( 0, 0, 0 );\n\t\t\tsphere.radius = 0.7071067811865476;\n\t\t\tsphere.applyMatrix4( sprite.matrixWorld );\n\n\t\t\treturn this.intersectsSphere( sphere );\n\n\t\t};\n\n\t}(),\n\n\tintersectsSphere: function ( sphere ) {\n\n\t\tvar planes = this.planes;\n\t\tvar center = sphere.center;\n\t\tvar negRadius = - sphere.radius;\n\n\t\tfor ( var i = 0; i < 6; i ++ ) {\n\n\t\t\tvar distance = planes[ i ].distanceToPoint( center );\n\n\t\t\tif ( distance < negRadius ) {\n\n\t\t\t\treturn false;\n\n\t\t\t}\n\n\t\t}\n\n\t\treturn true;\n\n\t},\n\n\tintersectsBox: function () {\n\n\t\tvar p1 = new Vector3(),\n\t\t\tp2 = new Vector3();\n\n\t\treturn function intersectsBox( box ) {\n\n\t\t\tvar planes = this.planes;\n\n\t\t\tfor ( var i = 0; i < 6 ; i ++ ) {\n\n\t\t\t\tvar plane = planes[ i ];\n\n\t\t\t\tp1.x = plane.normal.x > 0 ? box.min.x : box.max.x;\n\t\t\t\tp2.x = plane.normal.x > 0 ? box.max.x : box.min.x;\n\t\t\t\tp1.y = plane.normal.y > 0 ? box.min.y : box.max.y;\n\t\t\t\tp2.y = plane.normal.y > 0 ? box.max.y : box.min.y;\n\t\t\t\tp1.z = plane.normal.z > 0 ? box.min.z : box.max.z;\n\t\t\t\tp2.z = plane.normal.z > 0 ? box.max.z : box.min.z;\n\n\t\t\t\tvar d1 = plane.distanceToPoint( p1 );\n\t\t\t\tvar d2 = plane.distanceToPoint( p2 );\n\n\t\t\t\t// if both outside plane, no intersection\n\n\t\t\t\tif ( d1 < 0 && d2 < 0 ) {\n\n\t\t\t\t\treturn false;\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t\treturn true;\n\n\t\t};\n\n\t}(),\n\n\n\tcontainsPoint: function ( point ) {\n\n\t\tvar planes = this.planes;\n\n\t\tfor ( var i = 0; i < 6; i ++ ) {\n\n\t\t\tif ( planes[ i ].distanceToPoint( point ) < 0 ) {\n\n\t\t\t\treturn false;\n\n\t\t\t}\n\n\t\t}\n\n\t\treturn true;\n\n\t}\n\n};\n\n\nexport { Frustum };\n","/**\n * @author alteredq / http://alteredqualia.com/\n * @author mrdoob / http://mrdoob.com/\n */\n\nimport { FrontSide, BackSide, DoubleSide, RGBAFormat, NearestFilter, PCFShadowMap, RGBADepthPacking } from '../../constants';\nimport { WebGLRenderTarget } from '../WebGLRenderTarget';\nimport { ShaderMaterial } from '../../materials/ShaderMaterial';\nimport { UniformsUtils } from '../shaders/UniformsUtils';\nimport { ShaderLib } from '../shaders/ShaderLib';\nimport { MeshDepthMaterial } from '../../materials/MeshDepthMaterial';\nimport { Vector4 } from '../../math/Vector4';\nimport { Vector3 } from '../../math/Vector3';\nimport { Vector2 } from '../../math/Vector2';\nimport { Matrix4 } from '../../math/Matrix4';\nimport { Frustum } from '../../math/Frustum';\n\nfunction WebGLShadowMap( _renderer, _lights, _objects, capabilities ) {\n\n\tvar _gl = _renderer.context,\n\t_state = _renderer.state,\n\t_frustum = new Frustum(),\n\t_projScreenMatrix = new Matrix4(),\n\n\t_lightShadows = _lights.shadows,\n\n\t_shadowMapSize = new Vector2(),\n\t_maxShadowMapSize = new Vector2( capabilities.maxTextureSize, capabilities.maxTextureSize ),\n\n\t_lookTarget = new Vector3(),\n\t_lightPositionWorld = new Vector3(),\n\n\t_renderList = [],\n\n\t_MorphingFlag = 1,\n\t_SkinningFlag = 2,\n\n\t_NumberOfMaterialVariants = ( _MorphingFlag | _SkinningFlag ) + 1,\n\n\t_depthMaterials = new Array( _NumberOfMaterialVariants ),\n\t_distanceMaterials = new Array( _NumberOfMaterialVariants ),\n\n\t_materialCache = {};\n\n\tvar cubeDirections = [\n\t\tnew Vector3( 1, 0, 0 ), new Vector3( - 1, 0, 0 ), new Vector3( 0, 0, 1 ),\n\t\tnew Vector3( 0, 0, - 1 ), new Vector3( 0, 1, 0 ), new Vector3( 0, - 1, 0 )\n\t];\n\n\tvar cubeUps = [\n\t\tnew Vector3( 0, 1, 0 ), new Vector3( 0, 1, 0 ), new Vector3( 0, 1, 0 ),\n\t\tnew Vector3( 0, 1, 0 ), new Vector3( 0, 0, 1 ),\tnew Vector3( 0, 0, - 1 )\n\t];\n\n\tvar cube2DViewPorts = [\n\t\tnew Vector4(), new Vector4(), new Vector4(),\n\t\tnew Vector4(), new Vector4(), new Vector4()\n\t];\n\n\t// init\n\n\tvar depthMaterialTemplate = new MeshDepthMaterial();\n\tdepthMaterialTemplate.depthPacking = RGBADepthPacking;\n\tdepthMaterialTemplate.clipping = true;\n\n\tvar distanceShader = ShaderLib[ \"distanceRGBA\" ];\n\tvar distanceUniforms = UniformsUtils.clone( distanceShader.uniforms );\n\n\tfor ( var i = 0; i !== _NumberOfMaterialVariants; ++ i ) {\n\n\t\tvar useMorphing = ( i & _MorphingFlag ) !== 0;\n\t\tvar useSkinning = ( i & _SkinningFlag ) !== 0;\n\n\t\tvar depthMaterial = depthMaterialTemplate.clone();\n\t\tdepthMaterial.morphTargets = useMorphing;\n\t\tdepthMaterial.skinning = useSkinning;\n\n\t\t_depthMaterials[ i ] = depthMaterial;\n\n\t\tvar distanceMaterial = new ShaderMaterial( {\n\t\t\tdefines: {\n\t\t\t\t'USE_SHADOWMAP': ''\n\t\t\t},\n\t\t\tuniforms: distanceUniforms,\n\t\t\tvertexShader: distanceShader.vertexShader,\n\t\t\tfragmentShader: distanceShader.fragmentShader,\n\t\t\tmorphTargets: useMorphing,\n\t\t\tskinning: useSkinning,\n\t\t\tclipping: true\n\t\t} );\n\n\t\t_distanceMaterials[ i ] = distanceMaterial;\n\n\t}\n\n\t//\n\n\tvar scope = this;\n\n\tthis.enabled = false;\n\n\tthis.autoUpdate = true;\n\tthis.needsUpdate = false;\n\n\tthis.type = PCFShadowMap;\n\n\tthis.renderReverseSided = true;\n\tthis.renderSingleSided = true;\n\n\tthis.render = function ( scene, camera ) {\n\n\t\tif ( scope.enabled === false ) return;\n\t\tif ( scope.autoUpdate === false && scope.needsUpdate === false ) return;\n\n\t\tif ( _lightShadows.length === 0 ) return;\n\n\t\t// Set GL state for depth map.\n\t\t_state.buffers.color.setClear( 1, 1, 1, 1 );\n\t\t_state.disable( _gl.BLEND );\n\t\t_state.setDepthTest( true );\n\t\t_state.setScissorTest( false );\n\n\t\t// render depth map\n\n\t\tvar faceCount, isPointLight;\n\n\t\tfor ( var i = 0, il = _lightShadows.length; i < il; i ++ ) {\n\n\t\t\tvar light = _lightShadows[ i ];\n\t\t\tvar shadow = light.shadow;\n\n\t\t\tif ( shadow === undefined ) {\n\n\t\t\t\tconsole.warn( 'THREE.WebGLShadowMap:', light, 'has no shadow.' );\n\t\t\t\tcontinue;\n\n\t\t\t}\n\n\t\t\tvar shadowCamera = shadow.camera;\n\n\t\t\t_shadowMapSize.copy( shadow.mapSize );\n\t\t\t_shadowMapSize.min( _maxShadowMapSize );\n\n\t\t\tif ( (light && light.isPointLight) ) {\n\n\t\t\t\tfaceCount = 6;\n\t\t\t\tisPointLight = true;\n\n\t\t\t\tvar vpWidth = _shadowMapSize.x;\n\t\t\t\tvar vpHeight = _shadowMapSize.y;\n\n\t\t\t\t// These viewports map a cube-map onto a 2D texture with the\n\t\t\t\t// following orientation:\n\t\t\t\t//\n\t\t\t\t// xzXZ\n\t\t\t\t// y Y\n\t\t\t\t//\n\t\t\t\t// X - Positive x direction\n\t\t\t\t// x - Negative x direction\n\t\t\t\t// Y - Positive y direction\n\t\t\t\t// y - Negative y direction\n\t\t\t\t// Z - Positive z direction\n\t\t\t\t// z - Negative z direction\n\n\t\t\t\t// positive X\n\t\t\t\tcube2DViewPorts[ 0 ].set( vpWidth * 2, vpHeight, vpWidth, vpHeight );\n\t\t\t\t// negative X\n\t\t\t\tcube2DViewPorts[ 1 ].set( 0, vpHeight, vpWidth, vpHeight );\n\t\t\t\t// positive Z\n\t\t\t\tcube2DViewPorts[ 2 ].set( vpWidth * 3, vpHeight, vpWidth, vpHeight );\n\t\t\t\t// negative Z\n\t\t\t\tcube2DViewPorts[ 3 ].set( vpWidth, vpHeight, vpWidth, vpHeight );\n\t\t\t\t// positive Y\n\t\t\t\tcube2DViewPorts[ 4 ].set( vpWidth * 3, 0, vpWidth, vpHeight );\n\t\t\t\t// negative Y\n\t\t\t\tcube2DViewPorts[ 5 ].set( vpWidth, 0, vpWidth, vpHeight );\n\n\t\t\t\t_shadowMapSize.x *= 4.0;\n\t\t\t\t_shadowMapSize.y *= 2.0;\n\n\t\t\t} else {\n\n\t\t\t\tfaceCount = 1;\n\t\t\t\tisPointLight = false;\n\n\t\t\t}\n\n\t\t\tif ( shadow.map === null ) {\n\n\t\t\t\tvar pars = { minFilter: NearestFilter, magFilter: NearestFilter, format: RGBAFormat };\n\n\t\t\t\tshadow.map = new WebGLRenderTarget( _shadowMapSize.x, _shadowMapSize.y, pars );\n\n\t\t\t\tshadowCamera.updateProjectionMatrix();\n\n\t\t\t}\n\n\t\t\tif ( (shadow && shadow.isSpotLightShadow) ) {\n\n\t\t\t\tshadow.update( light );\n\n\t\t\t}\n\n\t\t\tvar shadowMap = shadow.map;\n\t\t\tvar shadowMatrix = shadow.matrix;\n\n\t\t\t_lightPositionWorld.setFromMatrixPosition( light.matrixWorld );\n\t\t\tshadowCamera.position.copy( _lightPositionWorld );\n\n\t\t\t_renderer.setRenderTarget( shadowMap );\n\t\t\t_renderer.clear();\n\n\t\t\t// render shadow map for each cube face (if omni-directional) or\n\t\t\t// run a single pass if not\n\n\t\t\tfor ( var face = 0; face < faceCount; face ++ ) {\n\n\t\t\t\tif ( isPointLight ) {\n\n\t\t\t\t\t_lookTarget.copy( shadowCamera.position );\n\t\t\t\t\t_lookTarget.add( cubeDirections[ face ] );\n\t\t\t\t\tshadowCamera.up.copy( cubeUps[ face ] );\n\t\t\t\t\tshadowCamera.lookAt( _lookTarget );\n\n\t\t\t\t\tvar vpDimensions = cube2DViewPorts[ face ];\n\t\t\t\t\t_state.viewport( vpDimensions );\n\n\t\t\t\t} else {\n\n\t\t\t\t\t_lookTarget.setFromMatrixPosition( light.target.matrixWorld );\n\t\t\t\t\tshadowCamera.lookAt( _lookTarget );\n\n\t\t\t\t}\n\n\t\t\t\tshadowCamera.updateMatrixWorld();\n\t\t\t\tshadowCamera.matrixWorldInverse.getInverse( shadowCamera.matrixWorld );\n\n\t\t\t\t// compute shadow matrix\n\n\t\t\t\tshadowMatrix.set(\n\t\t\t\t\t0.5, 0.0, 0.0, 0.5,\n\t\t\t\t\t0.0, 0.5, 0.0, 0.5,\n\t\t\t\t\t0.0, 0.0, 0.5, 0.5,\n\t\t\t\t\t0.0, 0.0, 0.0, 1.0\n\t\t\t\t);\n\n\t\t\t\tshadowMatrix.multiply( shadowCamera.projectionMatrix );\n\t\t\t\tshadowMatrix.multiply( shadowCamera.matrixWorldInverse );\n\n\t\t\t\t// update camera matrices and frustum\n\n\t\t\t\t_projScreenMatrix.multiplyMatrices( shadowCamera.projectionMatrix, shadowCamera.matrixWorldInverse );\n\t\t\t\t_frustum.setFromMatrix( _projScreenMatrix );\n\n\t\t\t\t// set object matrices & frustum culling\n\n\t\t\t\t_renderList.length = 0;\n\n\t\t\t\tprojectObject( scene, camera, shadowCamera );\n\n\t\t\t\t// render shadow map\n\t\t\t\t// render regular objects\n\n\t\t\t\tfor ( var j = 0, jl = _renderList.length; j < jl; j ++ ) {\n\n\t\t\t\t\tvar object = _renderList[ j ];\n\t\t\t\t\tvar geometry = _objects.update( object );\n\t\t\t\t\tvar material = object.material;\n\n\t\t\t\t\tif ( (material && material.isMultiMaterial) ) {\n\n\t\t\t\t\t\tvar groups = geometry.groups;\n\t\t\t\t\t\tvar materials = material.materials;\n\n\t\t\t\t\t\tfor ( var k = 0, kl = groups.length; k < kl; k ++ ) {\n\n\t\t\t\t\t\t\tvar group = groups[ k ];\n\t\t\t\t\t\t\tvar groupMaterial = materials[ group.materialIndex ];\n\n\t\t\t\t\t\t\tif ( groupMaterial.visible === true ) {\n\n\t\t\t\t\t\t\t\tvar depthMaterial = getDepthMaterial( object, groupMaterial, isPointLight, _lightPositionWorld );\n\t\t\t\t\t\t\t\t_renderer.renderBufferDirect( shadowCamera, null, geometry, depthMaterial, object, group );\n\n\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t}\n\n\t\t\t\t\t} else {\n\n\t\t\t\t\t\tvar depthMaterial = getDepthMaterial( object, material, isPointLight, _lightPositionWorld );\n\t\t\t\t\t\t_renderer.renderBufferDirect( shadowCamera, null, geometry, depthMaterial, object, null );\n\n\t\t\t\t\t}\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t}\n\n\t\t// Restore GL state.\n\t\tvar clearColor = _renderer.getClearColor(),\n\t\tclearAlpha = _renderer.getClearAlpha();\n\t\t_renderer.setClearColor( clearColor, clearAlpha );\n\n\t\tscope.needsUpdate = false;\n\n\t};\n\n\tfunction getDepthMaterial( object, material, isPointLight, lightPositionWorld ) {\n\n\t\tvar geometry = object.geometry;\n\n\t\tvar result = null;\n\n\t\tvar materialVariants = _depthMaterials;\n\t\tvar customMaterial = object.customDepthMaterial;\n\n\t\tif ( isPointLight ) {\n\n\t\t\tmaterialVariants = _distanceMaterials;\n\t\t\tcustomMaterial = object.customDistanceMaterial;\n\n\t\t}\n\n\t\tif ( ! customMaterial ) {\n\n\t\t\tvar useMorphing = false;\n\n\t\t\tif ( material.morphTargets ) {\n\n\t\t\t\tif ( (geometry && geometry.isBufferGeometry) ) {\n\n\t\t\t\t\tuseMorphing = geometry.morphAttributes && geometry.morphAttributes.position && geometry.morphAttributes.position.length > 0;\n\n\t\t\t\t} else if ( (geometry && geometry.isGeometry) ) {\n\n\t\t\t\t\tuseMorphing = geometry.morphTargets && geometry.morphTargets.length > 0;\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t\tvar useSkinning = object.isSkinnedMesh && material.skinning;\n\n\t\t\tvar variantIndex = 0;\n\n\t\t\tif ( useMorphing ) variantIndex |= _MorphingFlag;\n\t\t\tif ( useSkinning ) variantIndex |= _SkinningFlag;\n\n\t\t\tresult = materialVariants[ variantIndex ];\n\n\t\t} else {\n\n\t\t\tresult = customMaterial;\n\n\t\t}\n\n\t\tif ( _renderer.localClippingEnabled &&\n\t\t\t material.clipShadows === true &&\n\t\t\t\tmaterial.clippingPlanes.length !== 0 ) {\n\n\t\t\t// in this case we need a unique material instance reflecting the\n\t\t\t// appropriate state\n\n\t\t\tvar keyA = result.uuid, keyB = material.uuid;\n\n\t\t\tvar materialsForVariant = _materialCache[ keyA ];\n\n\t\t\tif ( materialsForVariant === undefined ) {\n\n\t\t\t\tmaterialsForVariant = {};\n\t\t\t\t_materialCache[ keyA ] = materialsForVariant;\n\n\t\t\t}\n\n\t\t\tvar cachedMaterial = materialsForVariant[ keyB ];\n\n\t\t\tif ( cachedMaterial === undefined ) {\n\n\t\t\t\tcachedMaterial = result.clone();\n\t\t\t\tmaterialsForVariant[ keyB ] = cachedMaterial;\n\n\t\t\t}\n\n\t\t\tresult = cachedMaterial;\n\n\t\t}\n\n\t\tresult.visible = material.visible;\n\t\tresult.wireframe = material.wireframe;\n\n\t\tvar side = material.side;\n\n\t\tif ( scope.renderSingleSided && side == DoubleSide ) {\n\n\t\t\tside = FrontSide;\n\n\t\t}\n\n\t\tif ( scope.renderReverseSided ) {\n\n\t\t\tif ( side === FrontSide ) side = BackSide;\n\t\t\telse if ( side === BackSide ) side = FrontSide;\n\n\t\t}\n\n\t\tresult.side = side;\n\n\t\tresult.clipShadows = material.clipShadows;\n\t\tresult.clippingPlanes = material.clippingPlanes;\n\n\t\tresult.wireframeLinewidth = material.wireframeLinewidth;\n\t\tresult.linewidth = material.linewidth;\n\n\t\tif ( isPointLight && result.uniforms.lightPos !== undefined ) {\n\n\t\t\tresult.uniforms.lightPos.value.copy( lightPositionWorld );\n\n\t\t}\n\n\t\treturn result;\n\n\t}\n\n\tfunction projectObject( object, camera, shadowCamera ) {\n\n\t\tif ( object.visible === false ) return;\n\n\t\tvar visible = ( object.layers.mask & camera.layers.mask ) !== 0;\n\n\t\tif ( visible && ( object.isMesh || object.isLine || object.isPoints ) ) {\n\n\t\t\tif ( object.castShadow && ( object.frustumCulled === false || _frustum.intersectsObject( object ) === true ) ) {\n\n\t\t\t\tvar material = object.material;\n\n\t\t\t\tif ( material.visible === true ) {\n\n\t\t\t\t\tobject.modelViewMatrix.multiplyMatrices( shadowCamera.matrixWorldInverse, object.matrixWorld );\n\t\t\t\t\t_renderList.push( object );\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t}\n\n\t\tvar children = object.children;\n\n\t\tfor ( var i = 0, l = children.length; i < l; i ++ ) {\n\n\t\t\tprojectObject( children[ i ], camera, shadowCamera );\n\n\t\t}\n\n\t}\n\n}\n\n\nexport { WebGLShadowMap };\n","import { Vector3 } from './Vector3';\n\n/**\n * @author bhouston / http://clara.io\n */\n\nfunction Ray( origin, direction ) {\n\n\tthis.origin = ( origin !== undefined ) ? origin : new Vector3();\n\tthis.direction = ( direction !== undefined ) ? direction : new Vector3();\n\n}\n\nRay.prototype = {\n\n\tconstructor: Ray,\n\n\tset: function ( origin, direction ) {\n\n\t\tthis.origin.copy( origin );\n\t\tthis.direction.copy( direction );\n\n\t\treturn this;\n\n\t},\n\n\tclone: function () {\n\n\t\treturn new this.constructor().copy( this );\n\n\t},\n\n\tcopy: function ( ray ) {\n\n\t\tthis.origin.copy( ray.origin );\n\t\tthis.direction.copy( ray.direction );\n\n\t\treturn this;\n\n\t},\n\n\tat: function ( t, optionalTarget ) {\n\n\t\tvar result = optionalTarget || new Vector3();\n\n\t\treturn result.copy( this.direction ).multiplyScalar( t ).add( this.origin );\n\n\t},\n\n\tlookAt: function ( v ) {\n\n\t\tthis.direction.copy( v ).sub( this.origin ).normalize();\n\n\t\treturn this;\n\n\t},\n\n\trecast: function () {\n\n\t\tvar v1 = new Vector3();\n\n\t\treturn function recast( t ) {\n\n\t\t\tthis.origin.copy( this.at( t, v1 ) );\n\n\t\t\treturn this;\n\n\t\t};\n\n\t}(),\n\n\tclosestPointToPoint: function ( point, optionalTarget ) {\n\n\t\tvar result = optionalTarget || new Vector3();\n\t\tresult.subVectors( point, this.origin );\n\t\tvar directionDistance = result.dot( this.direction );\n\n\t\tif ( directionDistance < 0 ) {\n\n\t\t\treturn result.copy( this.origin );\n\n\t\t}\n\n\t\treturn result.copy( this.direction ).multiplyScalar( directionDistance ).add( this.origin );\n\n\t},\n\n\tdistanceToPoint: function ( point ) {\n\n\t\treturn Math.sqrt( this.distanceSqToPoint( point ) );\n\n\t},\n\n\tdistanceSqToPoint: function () {\n\n\t\tvar v1 = new Vector3();\n\n\t\treturn function distanceSqToPoint( point ) {\n\n\t\t\tvar directionDistance = v1.subVectors( point, this.origin ).dot( this.direction );\n\n\t\t\t// point behind the ray\n\n\t\t\tif ( directionDistance < 0 ) {\n\n\t\t\t\treturn this.origin.distanceToSquared( point );\n\n\t\t\t}\n\n\t\t\tv1.copy( this.direction ).multiplyScalar( directionDistance ).add( this.origin );\n\n\t\t\treturn v1.distanceToSquared( point );\n\n\t\t};\n\n\t}(),\n\n\tdistanceSqToSegment: function () {\n\n\t\tvar segCenter = new Vector3();\n\t\tvar segDir = new Vector3();\n\t\tvar diff = new Vector3();\n\n\t\treturn function distanceSqToSegment( v0, v1, optionalPointOnRay, optionalPointOnSegment ) {\n\n\t\t\t// from http://www.geometrictools.com/GTEngine/Include/Mathematics/GteDistRaySegment.h\n\t\t\t// It returns the min distance between the ray and the segment\n\t\t\t// defined by v0 and v1\n\t\t\t// It can also set two optional targets :\n\t\t\t// - The closest point on the ray\n\t\t\t// - The closest point on the segment\n\n\t\t\tsegCenter.copy( v0 ).add( v1 ).multiplyScalar( 0.5 );\n\t\t\tsegDir.copy( v1 ).sub( v0 ).normalize();\n\t\t\tdiff.copy( this.origin ).sub( segCenter );\n\n\t\t\tvar segExtent = v0.distanceTo( v1 ) * 0.5;\n\t\t\tvar a01 = - this.direction.dot( segDir );\n\t\t\tvar b0 = diff.dot( this.direction );\n\t\t\tvar b1 = - diff.dot( segDir );\n\t\t\tvar c = diff.lengthSq();\n\t\t\tvar det = Math.abs( 1 - a01 * a01 );\n\t\t\tvar s0, s1, sqrDist, extDet;\n\n\t\t\tif ( det > 0 ) {\n\n\t\t\t\t// The ray and segment are not parallel.\n\n\t\t\t\ts0 = a01 * b1 - b0;\n\t\t\t\ts1 = a01 * b0 - b1;\n\t\t\t\textDet = segExtent * det;\n\n\t\t\t\tif ( s0 >= 0 ) {\n\n\t\t\t\t\tif ( s1 >= - extDet ) {\n\n\t\t\t\t\t\tif ( s1 <= extDet ) {\n\n\t\t\t\t\t\t\t// region 0\n\t\t\t\t\t\t\t// Minimum at interior points of ray and segment.\n\n\t\t\t\t\t\t\tvar invDet = 1 / det;\n\t\t\t\t\t\t\ts0 *= invDet;\n\t\t\t\t\t\t\ts1 *= invDet;\n\t\t\t\t\t\t\tsqrDist = s0 * ( s0 + a01 * s1 + 2 * b0 ) + s1 * ( a01 * s0 + s1 + 2 * b1 ) + c;\n\n\t\t\t\t\t\t} else {\n\n\t\t\t\t\t\t\t// region 1\n\n\t\t\t\t\t\t\ts1 = segExtent;\n\t\t\t\t\t\t\ts0 = Math.max( 0, - ( a01 * s1 + b0 ) );\n\t\t\t\t\t\t\tsqrDist = - s0 * s0 + s1 * ( s1 + 2 * b1 ) + c;\n\n\t\t\t\t\t\t}\n\n\t\t\t\t\t} else {\n\n\t\t\t\t\t\t// region 5\n\n\t\t\t\t\t\ts1 = - segExtent;\n\t\t\t\t\t\ts0 = Math.max( 0, - ( a01 * s1 + b0 ) );\n\t\t\t\t\t\tsqrDist = - s0 * s0 + s1 * ( s1 + 2 * b1 ) + c;\n\n\t\t\t\t\t}\n\n\t\t\t\t} else {\n\n\t\t\t\t\tif ( s1 <= - extDet ) {\n\n\t\t\t\t\t\t// region 4\n\n\t\t\t\t\t\ts0 = Math.max( 0, - ( - a01 * segExtent + b0 ) );\n\t\t\t\t\t\ts1 = ( s0 > 0 ) ? - segExtent : Math.min( Math.max( - segExtent, - b1 ), segExtent );\n\t\t\t\t\t\tsqrDist = - s0 * s0 + s1 * ( s1 + 2 * b1 ) + c;\n\n\t\t\t\t\t} else if ( s1 <= extDet ) {\n\n\t\t\t\t\t\t// region 3\n\n\t\t\t\t\t\ts0 = 0;\n\t\t\t\t\t\ts1 = Math.min( Math.max( - segExtent, - b1 ), segExtent );\n\t\t\t\t\t\tsqrDist = s1 * ( s1 + 2 * b1 ) + c;\n\n\t\t\t\t\t} else {\n\n\t\t\t\t\t\t// region 2\n\n\t\t\t\t\t\ts0 = Math.max( 0, - ( a01 * segExtent + b0 ) );\n\t\t\t\t\t\ts1 = ( s0 > 0 ) ? segExtent : Math.min( Math.max( - segExtent, - b1 ), segExtent );\n\t\t\t\t\t\tsqrDist = - s0 * s0 + s1 * ( s1 + 2 * b1 ) + c;\n\n\t\t\t\t\t}\n\n\t\t\t\t}\n\n\t\t\t} else {\n\n\t\t\t\t// Ray and segment are parallel.\n\n\t\t\t\ts1 = ( a01 > 0 ) ? - segExtent : segExtent;\n\t\t\t\ts0 = Math.max( 0, - ( a01 * s1 + b0 ) );\n\t\t\t\tsqrDist = - s0 * s0 + s1 * ( s1 + 2 * b1 ) + c;\n\n\t\t\t}\n\n\t\t\tif ( optionalPointOnRay ) {\n\n\t\t\t\toptionalPointOnRay.copy( this.direction ).multiplyScalar( s0 ).add( this.origin );\n\n\t\t\t}\n\n\t\t\tif ( optionalPointOnSegment ) {\n\n\t\t\t\toptionalPointOnSegment.copy( segDir ).multiplyScalar( s1 ).add( segCenter );\n\n\t\t\t}\n\n\t\t\treturn sqrDist;\n\n\t\t};\n\n\t}(),\n\n\tintersectSphere: function () {\n\n\t\tvar v1 = new Vector3();\n\n\t\treturn function intersectSphere( sphere, optionalTarget ) {\n\n\t\t\tv1.subVectors( sphere.center, this.origin );\n\t\t\tvar tca = v1.dot( this.direction );\n\t\t\tvar d2 = v1.dot( v1 ) - tca * tca;\n\t\t\tvar radius2 = sphere.radius * sphere.radius;\n\n\t\t\tif ( d2 > radius2 ) return null;\n\n\t\t\tvar thc = Math.sqrt( radius2 - d2 );\n\n\t\t\t// t0 = first intersect point - entrance on front of sphere\n\t\t\tvar t0 = tca - thc;\n\n\t\t\t// t1 = second intersect point - exit point on back of sphere\n\t\t\tvar t1 = tca + thc;\n\n\t\t\t// test to see if both t0 and t1 are behind the ray - if so, return null\n\t\t\tif ( t0 < 0 && t1 < 0 ) return null;\n\n\t\t\t// test to see if t0 is behind the ray:\n\t\t\t// if it is, the ray is inside the sphere, so return the second exit point scaled by t1,\n\t\t\t// in order to always return an intersect point that is in front of the ray.\n\t\t\tif ( t0 < 0 ) return this.at( t1, optionalTarget );\n\n\t\t\t// else t0 is in front of the ray, so return the first collision point scaled by t0\n\t\t\treturn this.at( t0, optionalTarget );\n\n\t\t};\n\n\t}(),\n\n\tintersectsSphere: function ( sphere ) {\n\n\t\treturn this.distanceToPoint( sphere.center ) <= sphere.radius;\n\n\t},\n\n\tdistanceToPlane: function ( plane ) {\n\n\t\tvar denominator = plane.normal.dot( this.direction );\n\n\t\tif ( denominator === 0 ) {\n\n\t\t\t// line is coplanar, return origin\n\t\t\tif ( plane.distanceToPoint( this.origin ) === 0 ) {\n\n\t\t\t\treturn 0;\n\n\t\t\t}\n\n\t\t\t// Null is preferable to undefined since undefined means.... it is undefined\n\n\t\t\treturn null;\n\n\t\t}\n\n\t\tvar t = - ( this.origin.dot( plane.normal ) + plane.constant ) / denominator;\n\n\t\t// Return if the ray never intersects the plane\n\n\t\treturn t >= 0 ? t : null;\n\n\t},\n\n\tintersectPlane: function ( plane, optionalTarget ) {\n\n\t\tvar t = this.distanceToPlane( plane );\n\n\t\tif ( t === null ) {\n\n\t\t\treturn null;\n\n\t\t}\n\n\t\treturn this.at( t, optionalTarget );\n\n\t},\n\n\n\n\tintersectsPlane: function ( plane ) {\n\n\t\t// check if the ray lies on the plane first\n\n\t\tvar distToPoint = plane.distanceToPoint( this.origin );\n\n\t\tif ( distToPoint === 0 ) {\n\n\t\t\treturn true;\n\n\t\t}\n\n\t\tvar denominator = plane.normal.dot( this.direction );\n\n\t\tif ( denominator * distToPoint < 0 ) {\n\n\t\t\treturn true;\n\n\t\t}\n\n\t\t// ray origin is behind the plane (and is pointing behind it)\n\n\t\treturn false;\n\n\t},\n\n\tintersectBox: function ( box, optionalTarget ) {\n\n\t\tvar tmin, tmax, tymin, tymax, tzmin, tzmax;\n\n\t\tvar invdirx = 1 / this.direction.x,\n\t\t\tinvdiry = 1 / this.direction.y,\n\t\t\tinvdirz = 1 / this.direction.z;\n\n\t\tvar origin = this.origin;\n\n\t\tif ( invdirx >= 0 ) {\n\n\t\t\ttmin = ( box.min.x - origin.x ) * invdirx;\n\t\t\ttmax = ( box.max.x - origin.x ) * invdirx;\n\n\t\t} else {\n\n\t\t\ttmin = ( box.max.x - origin.x ) * invdirx;\n\t\t\ttmax = ( box.min.x - origin.x ) * invdirx;\n\n\t\t}\n\n\t\tif ( invdiry >= 0 ) {\n\n\t\t\ttymin = ( box.min.y - origin.y ) * invdiry;\n\t\t\ttymax = ( box.max.y - origin.y ) * invdiry;\n\n\t\t} else {\n\n\t\t\ttymin = ( box.max.y - origin.y ) * invdiry;\n\t\t\ttymax = ( box.min.y - origin.y ) * invdiry;\n\n\t\t}\n\n\t\tif ( ( tmin > tymax ) || ( tymin > tmax ) ) return null;\n\n\t\t// These lines also handle the case where tmin or tmax is NaN\n\t\t// (result of 0 * Infinity). x !== x returns true if x is NaN\n\n\t\tif ( tymin > tmin || tmin !== tmin ) tmin = tymin;\n\n\t\tif ( tymax < tmax || tmax !== tmax ) tmax = tymax;\n\n\t\tif ( invdirz >= 0 ) {\n\n\t\t\ttzmin = ( box.min.z - origin.z ) * invdirz;\n\t\t\ttzmax = ( box.max.z - origin.z ) * invdirz;\n\n\t\t} else {\n\n\t\t\ttzmin = ( box.max.z - origin.z ) * invdirz;\n\t\t\ttzmax = ( box.min.z - origin.z ) * invdirz;\n\n\t\t}\n\n\t\tif ( ( tmin > tzmax ) || ( tzmin > tmax ) ) return null;\n\n\t\tif ( tzmin > tmin || tmin !== tmin ) tmin = tzmin;\n\n\t\tif ( tzmax < tmax || tmax !== tmax ) tmax = tzmax;\n\n\t\t//return point closest to the ray (positive side)\n\n\t\tif ( tmax < 0 ) return null;\n\n\t\treturn this.at( tmin >= 0 ? tmin : tmax, optionalTarget );\n\n\t},\n\n\tintersectsBox: ( function () {\n\n\t\tvar v = new Vector3();\n\n\t\treturn function intersectsBox( box ) {\n\n\t\t\treturn this.intersectBox( box, v ) !== null;\n\n\t\t};\n\n\t} )(),\n\n\tintersectTriangle: function () {\n\n\t\t// Compute the offset origin, edges, and normal.\n\t\tvar diff = new Vector3();\n\t\tvar edge1 = new Vector3();\n\t\tvar edge2 = new Vector3();\n\t\tvar normal = new Vector3();\n\n\t\treturn function intersectTriangle( a, b, c, backfaceCulling, optionalTarget ) {\n\n\t\t\t// from http://www.geometrictools.com/GTEngine/Include/Mathematics/GteIntrRay3Triangle3.h\n\n\t\t\tedge1.subVectors( b, a );\n\t\t\tedge2.subVectors( c, a );\n\t\t\tnormal.crossVectors( edge1, edge2 );\n\n\t\t\t// Solve Q + t*D = b1*E1 + b2*E2 (Q = kDiff, D = ray direction,\n\t\t\t// E1 = kEdge1, E2 = kEdge2, N = Cross(E1,E2)) by\n\t\t\t// |Dot(D,N)|*b1 = sign(Dot(D,N))*Dot(D,Cross(Q,E2))\n\t\t\t// |Dot(D,N)|*b2 = sign(Dot(D,N))*Dot(D,Cross(E1,Q))\n\t\t\t// |Dot(D,N)|*t = -sign(Dot(D,N))*Dot(Q,N)\n\t\t\tvar DdN = this.direction.dot( normal );\n\t\t\tvar sign;\n\n\t\t\tif ( DdN > 0 ) {\n\n\t\t\t\tif ( backfaceCulling ) return null;\n\t\t\t\tsign = 1;\n\n\t\t\t} else if ( DdN < 0 ) {\n\n\t\t\t\tsign = - 1;\n\t\t\t\tDdN = - DdN;\n\n\t\t\t} else {\n\n\t\t\t\treturn null;\n\n\t\t\t}\n\n\t\t\tdiff.subVectors( this.origin, a );\n\t\t\tvar DdQxE2 = sign * this.direction.dot( edge2.crossVectors( diff, edge2 ) );\n\n\t\t\t// b1 < 0, no intersection\n\t\t\tif ( DdQxE2 < 0 ) {\n\n\t\t\t\treturn null;\n\n\t\t\t}\n\n\t\t\tvar DdE1xQ = sign * this.direction.dot( edge1.cross( diff ) );\n\n\t\t\t// b2 < 0, no intersection\n\t\t\tif ( DdE1xQ < 0 ) {\n\n\t\t\t\treturn null;\n\n\t\t\t}\n\n\t\t\t// b1+b2 > 1, no intersection\n\t\t\tif ( DdQxE2 + DdE1xQ > DdN ) {\n\n\t\t\t\treturn null;\n\n\t\t\t}\n\n\t\t\t// Line intersects triangle, check if ray does.\n\t\t\tvar QdN = - sign * diff.dot( normal );\n\n\t\t\t// t < 0, no intersection\n\t\t\tif ( QdN < 0 ) {\n\n\t\t\t\treturn null;\n\n\t\t\t}\n\n\t\t\t// Ray intersects triangle.\n\t\t\treturn this.at( QdN / DdN, optionalTarget );\n\n\t\t};\n\n\t}(),\n\n\tapplyMatrix4: function ( matrix4 ) {\n\n\t\tthis.direction.add( this.origin ).applyMatrix4( matrix4 );\n\t\tthis.origin.applyMatrix4( matrix4 );\n\t\tthis.direction.sub( this.origin );\n\t\tthis.direction.normalize();\n\n\t\treturn this;\n\n\t},\n\n\tequals: function ( ray ) {\n\n\t\treturn ray.origin.equals( this.origin ) && ray.direction.equals( this.direction );\n\n\t}\n\n};\n\n\nexport { Ray };\n","import { Quaternion } from './Quaternion';\nimport { Vector3 } from './Vector3';\nimport { Matrix4 } from './Matrix4';\nimport { _Math } from './Math';\n\n/**\n * @author mrdoob / http://mrdoob.com/\n * @author WestLangley / http://github.com/WestLangley\n * @author bhouston / http://clara.io\n */\n\nfunction Euler( x, y, z, order ) {\n\n\tthis._x = x || 0;\n\tthis._y = y || 0;\n\tthis._z = z || 0;\n\tthis._order = order || Euler.DefaultOrder;\n\n}\n\nEuler.RotationOrders = [ 'XYZ', 'YZX', 'ZXY', 'XZY', 'YXZ', 'ZYX' ];\n\nEuler.DefaultOrder = 'XYZ';\n\nEuler.prototype = {\n\n\tconstructor: Euler,\n\n\tisEuler: true,\n\n\tget x () {\n\n\t\treturn this._x;\n\n\t},\n\n\tset x ( value ) {\n\n\t\tthis._x = value;\n\t\tthis.onChangeCallback();\n\n\t},\n\n\tget y () {\n\n\t\treturn this._y;\n\n\t},\n\n\tset y ( value ) {\n\n\t\tthis._y = value;\n\t\tthis.onChangeCallback();\n\n\t},\n\n\tget z () {\n\n\t\treturn this._z;\n\n\t},\n\n\tset z ( value ) {\n\n\t\tthis._z = value;\n\t\tthis.onChangeCallback();\n\n\t},\n\n\tget order () {\n\n\t\treturn this._order;\n\n\t},\n\n\tset order ( value ) {\n\n\t\tthis._order = value;\n\t\tthis.onChangeCallback();\n\n\t},\n\n\tset: function ( x, y, z, order ) {\n\n\t\tthis._x = x;\n\t\tthis._y = y;\n\t\tthis._z = z;\n\t\tthis._order = order || this._order;\n\n\t\tthis.onChangeCallback();\n\n\t\treturn this;\n\n\t},\n\n\tclone: function () {\n\n\t\treturn new this.constructor( this._x, this._y, this._z, this._order );\n\n\t},\n\n\tcopy: function ( euler ) {\n\n\t\tthis._x = euler._x;\n\t\tthis._y = euler._y;\n\t\tthis._z = euler._z;\n\t\tthis._order = euler._order;\n\n\t\tthis.onChangeCallback();\n\n\t\treturn this;\n\n\t},\n\n\tsetFromRotationMatrix: function ( m, order, update ) {\n\n\t\tvar clamp = _Math.clamp;\n\n\t\t// assumes the upper 3x3 of m is a pure rotation matrix (i.e, unscaled)\n\n\t\tvar te = m.elements;\n\t\tvar m11 = te[ 0 ], m12 = te[ 4 ], m13 = te[ 8 ];\n\t\tvar m21 = te[ 1 ], m22 = te[ 5 ], m23 = te[ 9 ];\n\t\tvar m31 = te[ 2 ], m32 = te[ 6 ], m33 = te[ 10 ];\n\n\t\torder = order || this._order;\n\n\t\tif ( order === 'XYZ' ) {\n\n\t\t\tthis._y = Math.asin( clamp( m13, - 1, 1 ) );\n\n\t\t\tif ( Math.abs( m13 ) < 0.99999 ) {\n\n\t\t\t\tthis._x = Math.atan2( - m23, m33 );\n\t\t\t\tthis._z = Math.atan2( - m12, m11 );\n\n\t\t\t} else {\n\n\t\t\t\tthis._x = Math.atan2( m32, m22 );\n\t\t\t\tthis._z = 0;\n\n\t\t\t}\n\n\t\t} else if ( order === 'YXZ' ) {\n\n\t\t\tthis._x = Math.asin( - clamp( m23, - 1, 1 ) );\n\n\t\t\tif ( Math.abs( m23 ) < 0.99999 ) {\n\n\t\t\t\tthis._y = Math.atan2( m13, m33 );\n\t\t\t\tthis._z = Math.atan2( m21, m22 );\n\n\t\t\t} else {\n\n\t\t\t\tthis._y = Math.atan2( - m31, m11 );\n\t\t\t\tthis._z = 0;\n\n\t\t\t}\n\n\t\t} else if ( order === 'ZXY' ) {\n\n\t\t\tthis._x = Math.asin( clamp( m32, - 1, 1 ) );\n\n\t\t\tif ( Math.abs( m32 ) < 0.99999 ) {\n\n\t\t\t\tthis._y = Math.atan2( - m31, m33 );\n\t\t\t\tthis._z = Math.atan2( - m12, m22 );\n\n\t\t\t} else {\n\n\t\t\t\tthis._y = 0;\n\t\t\t\tthis._z = Math.atan2( m21, m11 );\n\n\t\t\t}\n\n\t\t} else if ( order === 'ZYX' ) {\n\n\t\t\tthis._y = Math.asin( - clamp( m31, - 1, 1 ) );\n\n\t\t\tif ( Math.abs( m31 ) < 0.99999 ) {\n\n\t\t\t\tthis._x = Math.atan2( m32, m33 );\n\t\t\t\tthis._z = Math.atan2( m21, m11 );\n\n\t\t\t} else {\n\n\t\t\t\tthis._x = 0;\n\t\t\t\tthis._z = Math.atan2( - m12, m22 );\n\n\t\t\t}\n\n\t\t} else if ( order === 'YZX' ) {\n\n\t\t\tthis._z = Math.asin( clamp( m21, - 1, 1 ) );\n\n\t\t\tif ( Math.abs( m21 ) < 0.99999 ) {\n\n\t\t\t\tthis._x = Math.atan2( - m23, m22 );\n\t\t\t\tthis._y = Math.atan2( - m31, m11 );\n\n\t\t\t} else {\n\n\t\t\t\tthis._x = 0;\n\t\t\t\tthis._y = Math.atan2( m13, m33 );\n\n\t\t\t}\n\n\t\t} else if ( order === 'XZY' ) {\n\n\t\t\tthis._z = Math.asin( - clamp( m12, - 1, 1 ) );\n\n\t\t\tif ( Math.abs( m12 ) < 0.99999 ) {\n\n\t\t\t\tthis._x = Math.atan2( m32, m22 );\n\t\t\t\tthis._y = Math.atan2( m13, m11 );\n\n\t\t\t} else {\n\n\t\t\t\tthis._x = Math.atan2( - m23, m33 );\n\t\t\t\tthis._y = 0;\n\n\t\t\t}\n\n\t\t} else {\n\n\t\t\tconsole.warn( 'THREE.Euler: .setFromRotationMatrix() given unsupported order: ' + order );\n\n\t\t}\n\n\t\tthis._order = order;\n\n\t\tif ( update !== false ) this.onChangeCallback();\n\n\t\treturn this;\n\n\t},\n\n\tsetFromQuaternion: function () {\n\n\t\tvar matrix;\n\n\t\treturn function setFromQuaternion( q, order, update ) {\n\n\t\t\tif ( matrix === undefined ) matrix = new Matrix4();\n\n\t\t\tmatrix.makeRotationFromQuaternion( q );\n\n\t\t\treturn this.setFromRotationMatrix( matrix, order, update );\n\n\t\t};\n\n\t}(),\n\n\tsetFromVector3: function ( v, order ) {\n\n\t\treturn this.set( v.x, v.y, v.z, order || this._order );\n\n\t},\n\n\treorder: function () {\n\n\t\t// WARNING: this discards revolution information -bhouston\n\n\t\tvar q = new Quaternion();\n\n\t\treturn function reorder( newOrder ) {\n\n\t\t\tq.setFromEuler( this );\n\n\t\t\treturn this.setFromQuaternion( q, newOrder );\n\n\t\t};\n\n\t}(),\n\n\tequals: function ( euler ) {\n\n\t\treturn ( euler._x === this._x ) && ( euler._y === this._y ) && ( euler._z === this._z ) && ( euler._order === this._order );\n\n\t},\n\n\tfromArray: function ( array ) {\n\n\t\tthis._x = array[ 0 ];\n\t\tthis._y = array[ 1 ];\n\t\tthis._z = array[ 2 ];\n\t\tif ( array[ 3 ] !== undefined ) this._order = array[ 3 ];\n\n\t\tthis.onChangeCallback();\n\n\t\treturn this;\n\n\t},\n\n\ttoArray: function ( array, offset ) {\n\n\t\tif ( array === undefined ) array = [];\n\t\tif ( offset === undefined ) offset = 0;\n\n\t\tarray[ offset ] = this._x;\n\t\tarray[ offset + 1 ] = this._y;\n\t\tarray[ offset + 2 ] = this._z;\n\t\tarray[ offset + 3 ] = this._order;\n\n\t\treturn array;\n\n\t},\n\n\ttoVector3: function ( optionalResult ) {\n\n\t\tif ( optionalResult ) {\n\n\t\t\treturn optionalResult.set( this._x, this._y, this._z );\n\n\t\t} else {\n\n\t\t\treturn new Vector3( this._x, this._y, this._z );\n\n\t\t}\n\n\t},\n\n\tonChange: function ( callback ) {\n\n\t\tthis.onChangeCallback = callback;\n\n\t\treturn this;\n\n\t},\n\n\tonChangeCallback: function () {}\n\n};\n\n\nexport { Euler };\n","/**\n * @author mrdoob / http://mrdoob.com/\n */\n\nfunction Layers() {\n\n\tthis.mask = 1;\n\n}\n\nLayers.prototype = {\n\n\tconstructor: Layers,\n\n\tset: function ( channel ) {\n\n\t\tthis.mask = 1 << channel;\n\n\t},\n\n\tenable: function ( channel ) {\n\n\t\tthis.mask |= 1 << channel;\n\n\t},\n\n\ttoggle: function ( channel ) {\n\n\t\tthis.mask ^= 1 << channel;\n\n\t},\n\n\tdisable: function ( channel ) {\n\n\t\tthis.mask &= ~ ( 1 << channel );\n\n\t},\n\n\ttest: function ( layers ) {\n\n\t\treturn ( this.mask & layers.mask ) !== 0;\n\n\t}\n\n};\n\n\nexport { Layers };\n","import { Quaternion } from '../math/Quaternion';\nimport { Vector3 } from '../math/Vector3';\nimport { Matrix4 } from '../math/Matrix4';\nimport { EventDispatcher } from './EventDispatcher';\nimport { Euler } from '../math/Euler';\nimport { Layers } from './Layers';\nimport { Matrix3 } from '../math/Matrix3';\nimport { _Math } from '../math/Math';\n\n/**\n * @author mrdoob / http://mrdoob.com/\n * @author mikael emtinger / http://gomo.se/\n * @author alteredq / http://alteredqualia.com/\n * @author WestLangley / http://github.com/WestLangley\n * @author elephantatwork / www.elephantatwork.ch\n */\n\nfunction Object3D() {\n\n\tObject.defineProperty( this, 'id', { value: Object3DIdCount() } );\n\n\tthis.uuid = _Math.generateUUID();\n\n\tthis.name = '';\n\tthis.type = 'Object3D';\n\n\tthis.parent = null;\n\tthis.children = [];\n\n\tthis.up = Object3D.DefaultUp.clone();\n\n\tvar position = new Vector3();\n\tvar rotation = new Euler();\n\tvar quaternion = new Quaternion();\n\tvar scale = new Vector3( 1, 1, 1 );\n\n\tfunction onRotationChange() {\n\n\t\tquaternion.setFromEuler( rotation, false );\n\n\t}\n\n\tfunction onQuaternionChange() {\n\n\t\trotation.setFromQuaternion( quaternion, undefined, false );\n\n\t}\n\n\trotation.onChange( onRotationChange );\n\tquaternion.onChange( onQuaternionChange );\n\n\tObject.defineProperties( this, {\n\t\tposition: {\n\t\t\tenumerable: true,\n\t\t\tvalue: position\n\t\t},\n\t\trotation: {\n\t\t\tenumerable: true,\n\t\t\tvalue: rotation\n\t\t},\n\t\tquaternion: {\n\t\t\tenumerable: true,\n\t\t\tvalue: quaternion\n\t\t},\n\t\tscale: {\n\t\t\tenumerable: true,\n\t\t\tvalue: scale\n\t\t},\n\t\tmodelViewMatrix: {\n\t\t\tvalue: new Matrix4()\n\t\t},\n\t\tnormalMatrix: {\n\t\t\tvalue: new Matrix3()\n\t\t}\n\t} );\n\n\tthis.matrix = new Matrix4();\n\tthis.matrixWorld = new Matrix4();\n\n\tthis.matrixAutoUpdate = Object3D.DefaultMatrixAutoUpdate;\n\tthis.matrixWorldNeedsUpdate = false;\n\n\tthis.layers = new Layers();\n\tthis.visible = true;\n\n\tthis.castShadow = false;\n\tthis.receiveShadow = false;\n\n\tthis.frustumCulled = true;\n\tthis.renderOrder = 0;\n\n\tthis.userData = {};\n\n\tthis.onBeforeRender = function(){}; \n\tthis.onAfterRender = function(){};\n\n}\n\nObject3D.DefaultUp = new Vector3( 0, 1, 0 );\nObject3D.DefaultMatrixAutoUpdate = true;\n\nObject.assign( Object3D.prototype, EventDispatcher.prototype, {\n\n\tisObject3D: true,\n\n\tapplyMatrix: function ( matrix ) {\n\n\t\tthis.matrix.multiplyMatrices( matrix, this.matrix );\n\n\t\tthis.matrix.decompose( this.position, this.quaternion, this.scale );\n\n\t},\n\n\tsetRotationFromAxisAngle: function ( axis, angle ) {\n\n\t\t// assumes axis is normalized\n\n\t\tthis.quaternion.setFromAxisAngle( axis, angle );\n\n\t},\n\n\tsetRotationFromEuler: function ( euler ) {\n\n\t\tthis.quaternion.setFromEuler( euler, true );\n\n\t},\n\n\tsetRotationFromMatrix: function ( m ) {\n\n\t\t// assumes the upper 3x3 of m is a pure rotation matrix (i.e, unscaled)\n\n\t\tthis.quaternion.setFromRotationMatrix( m );\n\n\t},\n\n\tsetRotationFromQuaternion: function ( q ) {\n\n\t\t// assumes q is normalized\n\n\t\tthis.quaternion.copy( q );\n\n\t},\n\n\trotateOnAxis: function () {\n\n\t\t// rotate object on axis in object space\n\t\t// axis is assumed to be normalized\n\n\t\tvar q1 = new Quaternion();\n\n\t\treturn function rotateOnAxis( axis, angle ) {\n\n\t\t\tq1.setFromAxisAngle( axis, angle );\n\n\t\t\tthis.quaternion.multiply( q1 );\n\n\t\t\treturn this;\n\n\t\t};\n\n\t}(),\n\n\trotateX: function () {\n\n\t\tvar v1 = new Vector3( 1, 0, 0 );\n\n\t\treturn function rotateX( angle ) {\n\n\t\t\treturn this.rotateOnAxis( v1, angle );\n\n\t\t};\n\n\t}(),\n\n\trotateY: function () {\n\n\t\tvar v1 = new Vector3( 0, 1, 0 );\n\n\t\treturn function rotateY( angle ) {\n\n\t\t\treturn this.rotateOnAxis( v1, angle );\n\n\t\t};\n\n\t}(),\n\n\trotateZ: function () {\n\n\t\tvar v1 = new Vector3( 0, 0, 1 );\n\n\t\treturn function rotateZ( angle ) {\n\n\t\t\treturn this.rotateOnAxis( v1, angle );\n\n\t\t};\n\n\t}(),\n\n\ttranslateOnAxis: function () {\n\n\t\t// translate object by distance along axis in object space\n\t\t// axis is assumed to be normalized\n\n\t\tvar v1 = new Vector3();\n\n\t\treturn function translateOnAxis( axis, distance ) {\n\n\t\t\tv1.copy( axis ).applyQuaternion( this.quaternion );\n\n\t\t\tthis.position.add( v1.multiplyScalar( distance ) );\n\n\t\t\treturn this;\n\n\t\t};\n\n\t}(),\n\n\ttranslateX: function () {\n\n\t\tvar v1 = new Vector3( 1, 0, 0 );\n\n\t\treturn function translateX( distance ) {\n\n\t\t\treturn this.translateOnAxis( v1, distance );\n\n\t\t};\n\n\t}(),\n\n\ttranslateY: function () {\n\n\t\tvar v1 = new Vector3( 0, 1, 0 );\n\n\t\treturn function translateY( distance ) {\n\n\t\t\treturn this.translateOnAxis( v1, distance );\n\n\t\t};\n\n\t}(),\n\n\ttranslateZ: function () {\n\n\t\tvar v1 = new Vector3( 0, 0, 1 );\n\n\t\treturn function translateZ( distance ) {\n\n\t\t\treturn this.translateOnAxis( v1, distance );\n\n\t\t};\n\n\t}(),\n\n\tlocalToWorld: function ( vector ) {\n\n\t\treturn vector.applyMatrix4( this.matrixWorld );\n\n\t},\n\n\tworldToLocal: function () {\n\n\t\tvar m1 = new Matrix4();\n\n\t\treturn function worldToLocal( vector ) {\n\n\t\t\treturn vector.applyMatrix4( m1.getInverse( this.matrixWorld ) );\n\n\t\t};\n\n\t}(),\n\n\tlookAt: function () {\n\n\t\t// This routine does not support objects with rotated and/or translated parent(s)\n\n\t\tvar m1 = new Matrix4();\n\n\t\treturn function lookAt( vector ) {\n\n\t\t\tm1.lookAt( vector, this.position, this.up );\n\n\t\t\tthis.quaternion.setFromRotationMatrix( m1 );\n\n\t\t};\n\n\t}(),\n\n\tadd: function ( object ) {\n\n\t\tif ( arguments.length > 1 ) {\n\n\t\t\tfor ( var i = 0; i < arguments.length; i ++ ) {\n\n\t\t\t\tthis.add( arguments[ i ] );\n\n\t\t\t}\n\n\t\t\treturn this;\n\n\t\t}\n\n\t\tif ( object === this ) {\n\n\t\t\tconsole.error( \"THREE.Object3D.add: object can't be added as a child of itself.\", object );\n\t\t\treturn this;\n\n\t\t}\n\n\t\tif ( (object && object.isObject3D) ) {\n\n\t\t\tif ( object.parent !== null ) {\n\n\t\t\t\tobject.parent.remove( object );\n\n\t\t\t}\n\n\t\t\tobject.parent = this;\n\t\t\tobject.dispatchEvent( { type: 'added' } );\n\n\t\t\tthis.children.push( object );\n\n\t\t} else {\n\n\t\t\tconsole.error( \"THREE.Object3D.add: object not an instance of THREE.Object3D.\", object );\n\n\t\t}\n\n\t\treturn this;\n\n\t},\n\n\tremove: function ( object ) {\n\n\t\tif ( arguments.length > 1 ) {\n\n\t\t\tfor ( var i = 0; i < arguments.length; i ++ ) {\n\n\t\t\t\tthis.remove( arguments[ i ] );\n\n\t\t\t}\n\n\t\t}\n\n\t\tvar index = this.children.indexOf( object );\n\n\t\tif ( index !== - 1 ) {\n\n\t\t\tobject.parent = null;\n\n\t\t\tobject.dispatchEvent( { type: 'removed' } );\n\n\t\t\tthis.children.splice( index, 1 );\n\n\t\t}\n\n\t},\n\n\tgetObjectById: function ( id ) {\n\n\t\treturn this.getObjectByProperty( 'id', id );\n\n\t},\n\n\tgetObjectByName: function ( name ) {\n\n\t\treturn this.getObjectByProperty( 'name', name );\n\n\t},\n\n\tgetObjectByProperty: function ( name, value ) {\n\n\t\tif ( this[ name ] === value ) return this;\n\n\t\tfor ( var i = 0, l = this.children.length; i < l; i ++ ) {\n\n\t\t\tvar child = this.children[ i ];\n\t\t\tvar object = child.getObjectByProperty( name, value );\n\n\t\t\tif ( object !== undefined ) {\n\n\t\t\t\treturn object;\n\n\t\t\t}\n\n\t\t}\n\n\t\treturn undefined;\n\n\t},\n\n\tgetWorldPosition: function ( optionalTarget ) {\n\n\t\tvar result = optionalTarget || new Vector3();\n\n\t\tthis.updateMatrixWorld( true );\n\n\t\treturn result.setFromMatrixPosition( this.matrixWorld );\n\n\t},\n\n\tgetWorldQuaternion: function () {\n\n\t\tvar position = new Vector3();\n\t\tvar scale = new Vector3();\n\n\t\treturn function getWorldQuaternion( optionalTarget ) {\n\n\t\t\tvar result = optionalTarget || new Quaternion();\n\n\t\t\tthis.updateMatrixWorld( true );\n\n\t\t\tthis.matrixWorld.decompose( position, result, scale );\n\n\t\t\treturn result;\n\n\t\t};\n\n\t}(),\n\n\tgetWorldRotation: function () {\n\n\t\tvar quaternion = new Quaternion();\n\n\t\treturn function getWorldRotation( optionalTarget ) {\n\n\t\t\tvar result = optionalTarget || new Euler();\n\n\t\t\tthis.getWorldQuaternion( quaternion );\n\n\t\t\treturn result.setFromQuaternion( quaternion, this.rotation.order, false );\n\n\t\t};\n\n\t}(),\n\n\tgetWorldScale: function () {\n\n\t\tvar position = new Vector3();\n\t\tvar quaternion = new Quaternion();\n\n\t\treturn function getWorldScale( optionalTarget ) {\n\n\t\t\tvar result = optionalTarget || new Vector3();\n\n\t\t\tthis.updateMatrixWorld( true );\n\n\t\t\tthis.matrixWorld.decompose( position, quaternion, result );\n\n\t\t\treturn result;\n\n\t\t};\n\n\t}(),\n\n\tgetWorldDirection: function () {\n\n\t\tvar quaternion = new Quaternion();\n\n\t\treturn function getWorldDirection( optionalTarget ) {\n\n\t\t\tvar result = optionalTarget || new Vector3();\n\n\t\t\tthis.getWorldQuaternion( quaternion );\n\n\t\t\treturn result.set( 0, 0, 1 ).applyQuaternion( quaternion );\n\n\t\t};\n\n\t}(),\n\n\traycast: function () {},\n\n\ttraverse: function ( callback ) {\n\n\t\tcallback( this );\n\n\t\tvar children = this.children;\n\n\t\tfor ( var i = 0, l = children.length; i < l; i ++ ) {\n\n\t\t\tchildren[ i ].traverse( callback );\n\n\t\t}\n\n\t},\n\n\ttraverseVisible: function ( callback ) {\n\n\t\tif ( this.visible === false ) return;\n\n\t\tcallback( this );\n\n\t\tvar children = this.children;\n\n\t\tfor ( var i = 0, l = children.length; i < l; i ++ ) {\n\n\t\t\tchildren[ i ].traverseVisible( callback );\n\n\t\t}\n\n\t},\n\n\ttraverseAncestors: function ( callback ) {\n\n\t\tvar parent = this.parent;\n\n\t\tif ( parent !== null ) {\n\n\t\t\tcallback( parent );\n\n\t\t\tparent.traverseAncestors( callback );\n\n\t\t}\n\n\t},\n\n\tupdateMatrix: function () {\n\n\t\tthis.matrix.compose( this.position, this.quaternion, this.scale );\n\n\t\tthis.matrixWorldNeedsUpdate = true;\n\n\t},\n\n\tupdateMatrixWorld: function ( force ) {\n\n\t\tif ( this.matrixAutoUpdate === true ) this.updateMatrix();\n\n\t\tif ( this.matrixWorldNeedsUpdate === true || force === true ) {\n\n\t\t\tif ( this.parent === null ) {\n\n\t\t\t\tthis.matrixWorld.copy( this.matrix );\n\n\t\t\t} else {\n\n\t\t\t\tthis.matrixWorld.multiplyMatrices( this.parent.matrixWorld, this.matrix );\n\n\t\t\t}\n\n\t\t\tthis.matrixWorldNeedsUpdate = false;\n\n\t\t\tforce = true;\n\n\t\t}\n\n\t\t// update children\n\n\t\tvar children = this.children;\n\n\t\tfor ( var i = 0, l = children.length; i < l; i ++ ) {\n\n\t\t\tchildren[ i ].updateMatrixWorld( force );\n\n\t\t}\n\n\t},\n\n\ttoJSON: function ( meta ) {\n\n\t\t// meta is '' when called from JSON.stringify\n\t\tvar isRootObject = ( meta === undefined || meta === '' );\n\n\t\tvar output = {};\n\n\t\t// meta is a hash used to collect geometries, materials.\n\t\t// not providing it implies that this is the root object\n\t\t// being serialized.\n\t\tif ( isRootObject ) {\n\n\t\t\t// initialize meta obj\n\t\t\tmeta = {\n\t\t\t\tgeometries: {},\n\t\t\t\tmaterials: {},\n\t\t\t\ttextures: {},\n\t\t\t\timages: {}\n\t\t\t};\n\n\t\t\toutput.metadata = {\n\t\t\t\tversion: 4.4,\n\t\t\t\ttype: 'Object',\n\t\t\t\tgenerator: 'Object3D.toJSON'\n\t\t\t};\n\n\t\t}\n\n\t\t// standard Object3D serialization\n\n\t\tvar object = {};\n\n\t\tobject.uuid = this.uuid;\n\t\tobject.type = this.type;\n\n\t\tif ( this.name !== '' ) object.name = this.name;\n\t\tif ( JSON.stringify( this.userData ) !== '{}' ) object.userData = this.userData;\n\t\tif ( this.castShadow === true ) object.castShadow = true;\n\t\tif ( this.receiveShadow === true ) object.receiveShadow = true;\n\t\tif ( this.visible === false ) object.visible = false;\n\n\t\tobject.matrix = this.matrix.toArray();\n\n\t\t//\n\n\t\tif ( this.geometry !== undefined ) {\n\n\t\t\tif ( meta.geometries[ this.geometry.uuid ] === undefined ) {\n\n\t\t\t\tmeta.geometries[ this.geometry.uuid ] = this.geometry.toJSON( meta );\n\n\t\t\t}\n\n\t\t\tobject.geometry = this.geometry.uuid;\n\n\t\t}\n\n\t\tif ( this.material !== undefined ) {\n\n\t\t\tif ( meta.materials[ this.material.uuid ] === undefined ) {\n\n\t\t\t\tmeta.materials[ this.material.uuid ] = this.material.toJSON( meta );\n\n\t\t\t}\n\n\t\t\tobject.material = this.material.uuid;\n\n\t\t}\n\n\t\t//\n\n\t\tif ( this.children.length > 0 ) {\n\n\t\t\tobject.children = [];\n\n\t\t\tfor ( var i = 0; i < this.children.length; i ++ ) {\n\n\t\t\t\tobject.children.push( this.children[ i ].toJSON( meta ).object );\n\n\t\t\t}\n\n\t\t}\n\n\t\tif ( isRootObject ) {\n\n\t\t\tvar geometries = extractFromCache( meta.geometries );\n\t\t\tvar materials = extractFromCache( meta.materials );\n\t\t\tvar textures = extractFromCache( meta.textures );\n\t\t\tvar images = extractFromCache( meta.images );\n\n\t\t\tif ( geometries.length > 0 ) output.geometries = geometries;\n\t\t\tif ( materials.length > 0 ) output.materials = materials;\n\t\t\tif ( textures.length > 0 ) output.textures = textures;\n\t\t\tif ( images.length > 0 ) output.images = images;\n\n\t\t}\n\n\t\toutput.object = object;\n\n\t\treturn output;\n\n\t\t// extract data from the cache hash\n\t\t// remove metadata on each item\n\t\t// and return as array\n\t\tfunction extractFromCache( cache ) {\n\n\t\t\tvar values = [];\n\t\t\tfor ( var key in cache ) {\n\n\t\t\t\tvar data = cache[ key ];\n\t\t\t\tdelete data.metadata;\n\t\t\t\tvalues.push( data );\n\n\t\t\t}\n\t\t\treturn values;\n\n\t\t}\n\n\t},\n\n\tclone: function ( recursive ) {\n\n\t\treturn new this.constructor().copy( this, recursive );\n\n\t},\n\n\tcopy: function ( source, recursive ) {\n\n\t\tif ( recursive === undefined ) recursive = true;\n\n\t\tthis.name = source.name;\n\n\t\tthis.up.copy( source.up );\n\n\t\tthis.position.copy( source.position );\n\t\tthis.quaternion.copy( source.quaternion );\n\t\tthis.scale.copy( source.scale );\n\n\t\tthis.matrix.copy( source.matrix );\n\t\tthis.matrixWorld.copy( source.matrixWorld );\n\n\t\tthis.matrixAutoUpdate = source.matrixAutoUpdate;\n\t\tthis.matrixWorldNeedsUpdate = source.matrixWorldNeedsUpdate;\n\n\t\tthis.visible = source.visible;\n\n\t\tthis.castShadow = source.castShadow;\n\t\tthis.receiveShadow = source.receiveShadow;\n\n\t\tthis.frustumCulled = source.frustumCulled;\n\t\tthis.renderOrder = source.renderOrder;\n\n\t\tthis.userData = JSON.parse( JSON.stringify( source.userData ) );\n\n\t\tif ( recursive === true ) {\n\n\t\t\tfor ( var i = 0; i < source.children.length; i ++ ) {\n\n\t\t\t\tvar child = source.children[ i ];\n\t\t\t\tthis.add( child.clone() );\n\n\t\t\t}\n\n\t\t}\n\n\t\treturn this;\n\n\t}\n\n} );\n\nvar count = 0;\nfunction Object3DIdCount() { return count++; };\n\n\nexport { Object3DIdCount, Object3D };\n","import { Vector3 } from './Vector3';\nimport { _Math } from './Math';\n\n/**\n * @author bhouston / http://clara.io\n */\n\nfunction Line3( start, end ) {\n\n\tthis.start = ( start !== undefined ) ? start : new Vector3();\n\tthis.end = ( end !== undefined ) ? end : new Vector3();\n\n}\n\nLine3.prototype = {\n\n\tconstructor: Line3,\n\n\tset: function ( start, end ) {\n\n\t\tthis.start.copy( start );\n\t\tthis.end.copy( end );\n\n\t\treturn this;\n\n\t},\n\n\tclone: function () {\n\n\t\treturn new this.constructor().copy( this );\n\n\t},\n\n\tcopy: function ( line ) {\n\n\t\tthis.start.copy( line.start );\n\t\tthis.end.copy( line.end );\n\n\t\treturn this;\n\n\t},\n\n\tgetCenter: function ( optionalTarget ) {\n\n\t\tvar result = optionalTarget || new Vector3();\n\t\treturn result.addVectors( this.start, this.end ).multiplyScalar( 0.5 );\n\n\t},\n\n\tdelta: function ( optionalTarget ) {\n\n\t\tvar result = optionalTarget || new Vector3();\n\t\treturn result.subVectors( this.end, this.start );\n\n\t},\n\n\tdistanceSq: function () {\n\n\t\treturn this.start.distanceToSquared( this.end );\n\n\t},\n\n\tdistance: function () {\n\n\t\treturn this.start.distanceTo( this.end );\n\n\t},\n\n\tat: function ( t, optionalTarget ) {\n\n\t\tvar result = optionalTarget || new Vector3();\n\n\t\treturn this.delta( result ).multiplyScalar( t ).add( this.start );\n\n\t},\n\n\tclosestPointToPointParameter: function () {\n\n\t\tvar startP = new Vector3();\n\t\tvar startEnd = new Vector3();\n\n\t\treturn function closestPointToPointParameter( point, clampToLine ) {\n\n\t\t\tstartP.subVectors( point, this.start );\n\t\t\tstartEnd.subVectors( this.end, this.start );\n\n\t\t\tvar startEnd2 = startEnd.dot( startEnd );\n\t\t\tvar startEnd_startP = startEnd.dot( startP );\n\n\t\t\tvar t = startEnd_startP / startEnd2;\n\n\t\t\tif ( clampToLine ) {\n\n\t\t\t\tt = _Math.clamp( t, 0, 1 );\n\n\t\t\t}\n\n\t\t\treturn t;\n\n\t\t};\n\n\t}(),\n\n\tclosestPointToPoint: function ( point, clampToLine, optionalTarget ) {\n\n\t\tvar t = this.closestPointToPointParameter( point, clampToLine );\n\n\t\tvar result = optionalTarget || new Vector3();\n\n\t\treturn this.delta( result ).multiplyScalar( t ).add( this.start );\n\n\t},\n\n\tapplyMatrix4: function ( matrix ) {\n\n\t\tthis.start.applyMatrix4( matrix );\n\t\tthis.end.applyMatrix4( matrix );\n\n\t\treturn this;\n\n\t},\n\n\tequals: function ( line ) {\n\n\t\treturn line.start.equals( this.start ) && line.end.equals( this.end );\n\n\t}\n\n};\n\n\nexport { Line3 };\n","import { Vector3 } from './Vector3';\nimport { Line3 } from './Line3';\nimport { Plane } from './Plane';\n\n/**\n * @author bhouston / http://clara.io\n * @author mrdoob / http://mrdoob.com/\n */\n\nfunction Triangle( a, b, c ) {\n\n\tthis.a = ( a !== undefined ) ? a : new Vector3();\n\tthis.b = ( b !== undefined ) ? b : new Vector3();\n\tthis.c = ( c !== undefined ) ? c : new Vector3();\n\n}\n\nTriangle.normal = function () {\n\n\tvar v0 = new Vector3();\n\n\treturn function normal( a, b, c, optionalTarget ) {\n\n\t\tvar result = optionalTarget || new Vector3();\n\n\t\tresult.subVectors( c, b );\n\t\tv0.subVectors( a, b );\n\t\tresult.cross( v0 );\n\n\t\tvar resultLengthSq = result.lengthSq();\n\t\tif ( resultLengthSq > 0 ) {\n\n\t\t\treturn result.multiplyScalar( 1 / Math.sqrt( resultLengthSq ) );\n\n\t\t}\n\n\t\treturn result.set( 0, 0, 0 );\n\n\t};\n\n}();\n\n// static/instance method to calculate barycentric coordinates\n// based on: http://www.blackpawn.com/texts/pointinpoly/default.html\nTriangle.barycoordFromPoint = function () {\n\n\tvar v0 = new Vector3();\n\tvar v1 = new Vector3();\n\tvar v2 = new Vector3();\n\n\treturn function barycoordFromPoint( point, a, b, c, optionalTarget ) {\n\n\t\tv0.subVectors( c, a );\n\t\tv1.subVectors( b, a );\n\t\tv2.subVectors( point, a );\n\n\t\tvar dot00 = v0.dot( v0 );\n\t\tvar dot01 = v0.dot( v1 );\n\t\tvar dot02 = v0.dot( v2 );\n\t\tvar dot11 = v1.dot( v1 );\n\t\tvar dot12 = v1.dot( v2 );\n\n\t\tvar denom = ( dot00 * dot11 - dot01 * dot01 );\n\n\t\tvar result = optionalTarget || new Vector3();\n\n\t\t// collinear or singular triangle\n\t\tif ( denom === 0 ) {\n\n\t\t\t// arbitrary location outside of triangle?\n\t\t\t// not sure if this is the best idea, maybe should be returning undefined\n\t\t\treturn result.set( - 2, - 1, - 1 );\n\n\t\t}\n\n\t\tvar invDenom = 1 / denom;\n\t\tvar u = ( dot11 * dot02 - dot01 * dot12 ) * invDenom;\n\t\tvar v = ( dot00 * dot12 - dot01 * dot02 ) * invDenom;\n\n\t\t// barycentric coordinates must always sum to 1\n\t\treturn result.set( 1 - u - v, v, u );\n\n\t};\n\n}();\n\nTriangle.containsPoint = function () {\n\n\tvar v1 = new Vector3();\n\n\treturn function containsPoint( point, a, b, c ) {\n\n\t\tvar result = Triangle.barycoordFromPoint( point, a, b, c, v1 );\n\n\t\treturn ( result.x >= 0 ) && ( result.y >= 0 ) && ( ( result.x + result.y ) <= 1 );\n\n\t};\n\n}();\n\nTriangle.prototype = {\n\n\tconstructor: Triangle,\n\n\tset: function ( a, b, c ) {\n\n\t\tthis.a.copy( a );\n\t\tthis.b.copy( b );\n\t\tthis.c.copy( c );\n\n\t\treturn this;\n\n\t},\n\n\tsetFromPointsAndIndices: function ( points, i0, i1, i2 ) {\n\n\t\tthis.a.copy( points[ i0 ] );\n\t\tthis.b.copy( points[ i1 ] );\n\t\tthis.c.copy( points[ i2 ] );\n\n\t\treturn this;\n\n\t},\n\n\tclone: function () {\n\n\t\treturn new this.constructor().copy( this );\n\n\t},\n\n\tcopy: function ( triangle ) {\n\n\t\tthis.a.copy( triangle.a );\n\t\tthis.b.copy( triangle.b );\n\t\tthis.c.copy( triangle.c );\n\n\t\treturn this;\n\n\t},\n\n\tarea: function () {\n\n\t\tvar v0 = new Vector3();\n\t\tvar v1 = new Vector3();\n\n\t\treturn function area() {\n\n\t\t\tv0.subVectors( this.c, this.b );\n\t\t\tv1.subVectors( this.a, this.b );\n\n\t\t\treturn v0.cross( v1 ).length() * 0.5;\n\n\t\t};\n\n\t}(),\n\n\tmidpoint: function ( optionalTarget ) {\n\n\t\tvar result = optionalTarget || new Vector3();\n\t\treturn result.addVectors( this.a, this.b ).add( this.c ).multiplyScalar( 1 / 3 );\n\n\t},\n\n\tnormal: function ( optionalTarget ) {\n\n\t\treturn Triangle.normal( this.a, this.b, this.c, optionalTarget );\n\n\t},\n\n\tplane: function ( optionalTarget ) {\n\n\t\tvar result = optionalTarget || new Plane();\n\n\t\treturn result.setFromCoplanarPoints( this.a, this.b, this.c );\n\n\t},\n\n\tbarycoordFromPoint: function ( point, optionalTarget ) {\n\n\t\treturn Triangle.barycoordFromPoint( point, this.a, this.b, this.c, optionalTarget );\n\n\t},\n\n\tcontainsPoint: function ( point ) {\n\n\t\treturn Triangle.containsPoint( point, this.a, this.b, this.c );\n\n\t},\n\n\tclosestPointToPoint: function () {\n\n\t\tvar plane, edgeList, projectedPoint, closestPoint;\n\n\t\treturn function closestPointToPoint( point, optionalTarget ) {\n\n\t\t\tif ( plane === undefined ) {\n\n\t\t\t\tplane = new Plane();\n\t\t\t\tedgeList = [ new Line3(), new Line3(), new Line3() ];\n\t\t\t\tprojectedPoint = new Vector3();\n\t\t\t\tclosestPoint = new Vector3();\n\n\t\t\t}\n\n\t\t\tvar result = optionalTarget || new Vector3();\n\t\t\tvar minDistance = Infinity;\n\n\t\t\t// project the point onto the plane of the triangle\n\n\t\t\tplane.setFromCoplanarPoints( this.a, this.b, this.c );\n\t\t\tplane.projectPoint( point, projectedPoint );\n\n\t\t\t// check if the projection lies within the triangle\n\n\t\t\tif( this.containsPoint( projectedPoint ) === true ) {\n\n\t\t\t\t// if so, this is the closest point\n\n\t\t\t\tresult.copy( projectedPoint );\n\n\t\t\t} else {\n\n\t\t\t\t// if not, the point falls outside the triangle. the result is the closest point to the triangle's edges or vertices\n\n\t\t\t\tedgeList[ 0 ].set( this.a, this.b );\n\t\t\t\tedgeList[ 1 ].set( this.b, this.c );\n\t\t\t\tedgeList[ 2 ].set( this.c, this.a );\n\n\t\t\t\tfor( var i = 0; i < edgeList.length; i ++ ) {\n\n\t\t\t\t\tedgeList[ i ].closestPointToPoint( projectedPoint, true, closestPoint );\n\n\t\t\t\t\tvar distance = projectedPoint.distanceToSquared( closestPoint );\n\n\t\t\t\t\tif( distance < minDistance ) {\n\n\t\t\t\t\t\tminDistance = distance;\n\n\t\t\t\t\t\tresult.copy( closestPoint );\n\n\t\t\t\t\t}\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t\treturn result;\n\n\t\t};\n\n\t}(),\n\n\tequals: function ( triangle ) {\n\n\t\treturn triangle.a.equals( this.a ) && triangle.b.equals( this.b ) && triangle.c.equals( this.c );\n\n\t}\n\n};\n\n\nexport { Triangle };\n","import { Color } from '../math/Color';\nimport { Vector3 } from '../math/Vector3';\n\n/**\n * @author mrdoob / http://mrdoob.com/\n * @author alteredq / http://alteredqualia.com/\n */\n\nfunction Face3( a, b, c, normal, color, materialIndex ) {\n\n\tthis.a = a;\n\tthis.b = b;\n\tthis.c = c;\n\n\tthis.normal = (normal && normal.isVector3) ? normal : new Vector3();\n\tthis.vertexNormals = Array.isArray( normal ) ? normal : [];\n\n\tthis.color = (color && color.isColor) ? color : new Color();\n\tthis.vertexColors = Array.isArray( color ) ? color : [];\n\n\tthis.materialIndex = materialIndex !== undefined ? materialIndex : 0;\n\n}\n\nFace3.prototype = {\n\n\tconstructor: Face3,\n\n\tclone: function () {\n\n\t\treturn new this.constructor().copy( this );\n\n\t},\n\n\tcopy: function ( source ) {\n\n\t\tthis.a = source.a;\n\t\tthis.b = source.b;\n\t\tthis.c = source.c;\n\n\t\tthis.normal.copy( source.normal );\n\t\tthis.color.copy( source.color );\n\n\t\tthis.materialIndex = source.materialIndex;\n\n\t\tfor ( var i = 0, il = source.vertexNormals.length; i < il; i ++ ) {\n\n\t\t\tthis.vertexNormals[ i ] = source.vertexNormals[ i ].clone();\n\n\t\t}\n\n\t\tfor ( var i = 0, il = source.vertexColors.length; i < il; i ++ ) {\n\n\t\t\tthis.vertexColors[ i ] = source.vertexColors[ i ].clone();\n\n\t\t}\n\n\t\treturn this;\n\n\t}\n\n};\n\n\nexport { Face3 };\n","import { Material } from './Material';\nimport { MultiplyOperation } from '../constants';\nimport { Color } from '../math/Color';\n\n/**\n * @author mrdoob / http://mrdoob.com/\n * @author alteredq / http://alteredqualia.com/\n *\n * parameters = {\n * color: ,\n * opacity: ,\n * map: new THREE.Texture( ),\n *\n * aoMap: new THREE.Texture( ),\n * aoMapIntensity: \n *\n * specularMap: new THREE.Texture( ),\n *\n * alphaMap: new THREE.Texture( ),\n *\n * envMap: new THREE.TextureCube( [posx, negx, posy, negy, posz, negz] ),\n * combine: THREE.Multiply,\n * reflectivity: ,\n * refractionRatio: ,\n *\n * shading: THREE.SmoothShading,\n * depthTest: ,\n * depthWrite: ,\n *\n * wireframe: ,\n * wireframeLinewidth: ,\n *\n * skinning: ,\n * morphTargets: \n * }\n */\n\nfunction MeshBasicMaterial( parameters ) {\n\n\tMaterial.call( this );\n\n\tthis.type = 'MeshBasicMaterial';\n\n\tthis.color = new Color( 0xffffff ); // emissive\n\n\tthis.map = null;\n\n\tthis.aoMap = null;\n\tthis.aoMapIntensity = 1.0;\n\n\tthis.specularMap = null;\n\n\tthis.alphaMap = null;\n\n\tthis.envMap = null;\n\tthis.combine = MultiplyOperation;\n\tthis.reflectivity = 1;\n\tthis.refractionRatio = 0.98;\n\n\tthis.wireframe = false;\n\tthis.wireframeLinewidth = 1;\n\tthis.wireframeLinecap = 'round';\n\tthis.wireframeLinejoin = 'round';\n\n\tthis.skinning = false;\n\tthis.morphTargets = false;\n\n\tthis.lights = false;\n\n\tthis.setValues( parameters );\n\n}\n\nMeshBasicMaterial.prototype = Object.create( Material.prototype );\nMeshBasicMaterial.prototype.constructor = MeshBasicMaterial;\n\nMeshBasicMaterial.prototype.isMeshBasicMaterial = true;\n\nMeshBasicMaterial.prototype.copy = function ( source ) {\n\n\tMaterial.prototype.copy.call( this, source );\n\n\tthis.color.copy( source.color );\n\n\tthis.map = source.map;\n\n\tthis.aoMap = source.aoMap;\n\tthis.aoMapIntensity = source.aoMapIntensity;\n\n\tthis.specularMap = source.specularMap;\n\n\tthis.alphaMap = source.alphaMap;\n\n\tthis.envMap = source.envMap;\n\tthis.combine = source.combine;\n\tthis.reflectivity = source.reflectivity;\n\tthis.refractionRatio = source.refractionRatio;\n\n\tthis.wireframe = source.wireframe;\n\tthis.wireframeLinewidth = source.wireframeLinewidth;\n\tthis.wireframeLinecap = source.wireframeLinecap;\n\tthis.wireframeLinejoin = source.wireframeLinejoin;\n\n\tthis.skinning = source.skinning;\n\tthis.morphTargets = source.morphTargets;\n\n\treturn this;\n\n};\n\n\nexport { MeshBasicMaterial };\n","import { Vector4 } from '../math/Vector4';\nimport { Vector3 } from '../math/Vector3';\nimport { Vector2 } from '../math/Vector2';\nimport { Color } from '../math/Color';\nimport { _Math } from '../math/Math';\n\n/**\n * @author mrdoob / http://mrdoob.com/\n */\n\nfunction BufferAttribute( array, itemSize, normalized ) {\n\n\tif ( Array.isArray( array ) ) {\n\n\t\tthrow new TypeError( 'THREE.BufferAttribute: array should be a Typed Array.' );\n\n\t}\n\n\tthis.uuid = _Math.generateUUID();\n\n\tthis.array = array;\n\tthis.itemSize = itemSize;\n\tthis.count = array !== undefined ? array.length / itemSize : 0;\n\tthis.normalized = normalized === true;\n\n\tthis.dynamic = false;\n\tthis.updateRange = { offset: 0, count: - 1 };\n\n\tthis.version = 0;\n\n}\n\nBufferAttribute.prototype = {\n\n\tconstructor: BufferAttribute,\n\n\tisBufferAttribute: true,\n\n\tset needsUpdate( value ) {\n\n\t\tif ( value === true ) this.version ++;\n\n\t},\n\n\tsetArray: function ( array ) {\n\n\t\tif ( Array.isArray( array ) ) {\n\n\t\t\tthrow new TypeError( 'THREE.BufferAttribute: array should be a Typed Array.' );\n\n\t\t}\n\n\t\tthis.count = array !== undefined ? array.length / this.itemSize : 0;\n\t\tthis.array = array;\n\n\t},\n\n\tsetDynamic: function ( value ) {\n\n\t\tthis.dynamic = value;\n\n\t\treturn this;\n\n\t},\n\n\tcopy: function ( source ) {\n\n\t\tthis.array = new source.array.constructor( source.array );\n\t\tthis.itemSize = source.itemSize;\n\t\tthis.count = source.count;\n\t\tthis.normalized = source.normalized;\n\n\t\tthis.dynamic = source.dynamic;\n\n\t\treturn this;\n\n\t},\n\n\tcopyAt: function ( index1, attribute, index2 ) {\n\n\t\tindex1 *= this.itemSize;\n\t\tindex2 *= attribute.itemSize;\n\n\t\tfor ( var i = 0, l = this.itemSize; i < l; i ++ ) {\n\n\t\t\tthis.array[ index1 + i ] = attribute.array[ index2 + i ];\n\n\t\t}\n\n\t\treturn this;\n\n\t},\n\n\tcopyArray: function ( array ) {\n\n\t\tthis.array.set( array );\n\n\t\treturn this;\n\n\t},\n\n\tcopyColorsArray: function ( colors ) {\n\n\t\tvar array = this.array, offset = 0;\n\n\t\tfor ( var i = 0, l = colors.length; i < l; i ++ ) {\n\n\t\t\tvar color = colors[ i ];\n\n\t\t\tif ( color === undefined ) {\n\n\t\t\t\tconsole.warn( 'THREE.BufferAttribute.copyColorsArray(): color is undefined', i );\n\t\t\t\tcolor = new Color();\n\n\t\t\t}\n\n\t\t\tarray[ offset ++ ] = color.r;\n\t\t\tarray[ offset ++ ] = color.g;\n\t\t\tarray[ offset ++ ] = color.b;\n\n\t\t}\n\n\t\treturn this;\n\n\t},\n\n\tcopyIndicesArray: function ( indices ) {\n\n\t\tvar array = this.array, offset = 0;\n\n\t\tfor ( var i = 0, l = indices.length; i < l; i ++ ) {\n\n\t\t\tvar index = indices[ i ];\n\n\t\t\tarray[ offset ++ ] = index.a;\n\t\t\tarray[ offset ++ ] = index.b;\n\t\t\tarray[ offset ++ ] = index.c;\n\n\t\t}\n\n\t\treturn this;\n\n\t},\n\n\tcopyVector2sArray: function ( vectors ) {\n\n\t\tvar array = this.array, offset = 0;\n\n\t\tfor ( var i = 0, l = vectors.length; i < l; i ++ ) {\n\n\t\t\tvar vector = vectors[ i ];\n\n\t\t\tif ( vector === undefined ) {\n\n\t\t\t\tconsole.warn( 'THREE.BufferAttribute.copyVector2sArray(): vector is undefined', i );\n\t\t\t\tvector = new Vector2();\n\n\t\t\t}\n\n\t\t\tarray[ offset ++ ] = vector.x;\n\t\t\tarray[ offset ++ ] = vector.y;\n\n\t\t}\n\n\t\treturn this;\n\n\t},\n\n\tcopyVector3sArray: function ( vectors ) {\n\n\t\tvar array = this.array, offset = 0;\n\n\t\tfor ( var i = 0, l = vectors.length; i < l; i ++ ) {\n\n\t\t\tvar vector = vectors[ i ];\n\n\t\t\tif ( vector === undefined ) {\n\n\t\t\t\tconsole.warn( 'THREE.BufferAttribute.copyVector3sArray(): vector is undefined', i );\n\t\t\t\tvector = new Vector3();\n\n\t\t\t}\n\n\t\t\tarray[ offset ++ ] = vector.x;\n\t\t\tarray[ offset ++ ] = vector.y;\n\t\t\tarray[ offset ++ ] = vector.z;\n\n\t\t}\n\n\t\treturn this;\n\n\t},\n\n\tcopyVector4sArray: function ( vectors ) {\n\n\t\tvar array = this.array, offset = 0;\n\n\t\tfor ( var i = 0, l = vectors.length; i < l; i ++ ) {\n\n\t\t\tvar vector = vectors[ i ];\n\n\t\t\tif ( vector === undefined ) {\n\n\t\t\t\tconsole.warn( 'THREE.BufferAttribute.copyVector4sArray(): vector is undefined', i );\n\t\t\t\tvector = new Vector4();\n\n\t\t\t}\n\n\t\t\tarray[ offset ++ ] = vector.x;\n\t\t\tarray[ offset ++ ] = vector.y;\n\t\t\tarray[ offset ++ ] = vector.z;\n\t\t\tarray[ offset ++ ] = vector.w;\n\n\t\t}\n\n\t\treturn this;\n\n\t},\n\n\tset: function ( value, offset ) {\n\n\t\tif ( offset === undefined ) offset = 0;\n\n\t\tthis.array.set( value, offset );\n\n\t\treturn this;\n\n\t},\n\n\tgetX: function ( index ) {\n\n\t\treturn this.array[ index * this.itemSize ];\n\n\t},\n\n\tsetX: function ( index, x ) {\n\n\t\tthis.array[ index * this.itemSize ] = x;\n\n\t\treturn this;\n\n\t},\n\n\tgetY: function ( index ) {\n\n\t\treturn this.array[ index * this.itemSize + 1 ];\n\n\t},\n\n\tsetY: function ( index, y ) {\n\n\t\tthis.array[ index * this.itemSize + 1 ] = y;\n\n\t\treturn this;\n\n\t},\n\n\tgetZ: function ( index ) {\n\n\t\treturn this.array[ index * this.itemSize + 2 ];\n\n\t},\n\n\tsetZ: function ( index, z ) {\n\n\t\tthis.array[ index * this.itemSize + 2 ] = z;\n\n\t\treturn this;\n\n\t},\n\n\tgetW: function ( index ) {\n\n\t\treturn this.array[ index * this.itemSize + 3 ];\n\n\t},\n\n\tsetW: function ( index, w ) {\n\n\t\tthis.array[ index * this.itemSize + 3 ] = w;\n\n\t\treturn this;\n\n\t},\n\n\tsetXY: function ( index, x, y ) {\n\n\t\tindex *= this.itemSize;\n\n\t\tthis.array[ index + 0 ] = x;\n\t\tthis.array[ index + 1 ] = y;\n\n\t\treturn this;\n\n\t},\n\n\tsetXYZ: function ( index, x, y, z ) {\n\n\t\tindex *= this.itemSize;\n\n\t\tthis.array[ index + 0 ] = x;\n\t\tthis.array[ index + 1 ] = y;\n\t\tthis.array[ index + 2 ] = z;\n\n\t\treturn this;\n\n\t},\n\n\tsetXYZW: function ( index, x, y, z, w ) {\n\n\t\tindex *= this.itemSize;\n\n\t\tthis.array[ index + 0 ] = x;\n\t\tthis.array[ index + 1 ] = y;\n\t\tthis.array[ index + 2 ] = z;\n\t\tthis.array[ index + 3 ] = w;\n\n\t\treturn this;\n\n\t},\n\n\tclone: function () {\n\n\t\treturn new this.constructor().copy( this );\n\n\t}\n\n};\n\n//\n\nfunction Int8Attribute( array, itemSize ) {\n\n\treturn new BufferAttribute( new Int8Array( array ), itemSize );\n\n}\n\nfunction Uint8Attribute( array, itemSize ) {\n\n\treturn new BufferAttribute( new Uint8Array( array ), itemSize );\n\n}\n\nfunction Uint8ClampedAttribute( array, itemSize ) {\n\n\treturn new BufferAttribute( new Uint8ClampedArray( array ), itemSize );\n\n}\n\nfunction Int16Attribute( array, itemSize ) {\n\n\treturn new BufferAttribute( new Int16Array( array ), itemSize );\n\n}\n\nfunction Uint16Attribute( array, itemSize ) {\n\n\treturn new BufferAttribute( new Uint16Array( array ), itemSize );\n\n}\n\nfunction Int32Attribute( array, itemSize ) {\n\n\treturn new BufferAttribute( new Int32Array( array ), itemSize );\n\n}\n\nfunction Uint32Attribute( array, itemSize ) {\n\n\treturn new BufferAttribute( new Uint32Array( array ), itemSize );\n\n}\n\nfunction Float32Attribute( array, itemSize ) {\n\n\treturn new BufferAttribute( new Float32Array( array ), itemSize );\n\n}\n\nfunction Float64Attribute( array, itemSize ) {\n\n\treturn new BufferAttribute( new Float64Array( array ), itemSize );\n\n}\n\n// Deprecated\n\nfunction DynamicBufferAttribute( array, itemSize ) {\n\n\tconsole.warn( 'THREE.DynamicBufferAttribute has been removed. Use new THREE.BufferAttribute().setDynamic( true ) instead.' );\n\treturn new BufferAttribute( array, itemSize ).setDynamic( true );\n\n}\n\n\nexport {\n DynamicBufferAttribute,\n Float64Attribute,\n Float32Attribute,\n Uint32Attribute,\n Int32Attribute,\n Uint16Attribute,\n Int16Attribute,\n Uint8ClampedAttribute,\n Uint8Attribute,\n Int8Attribute,\n BufferAttribute\n};\n","import { EventDispatcher } from './EventDispatcher';\nimport { Face3 } from './Face3';\nimport { Matrix3 } from '../math/Matrix3';\nimport { Sphere } from '../math/Sphere';\nimport { Box3 } from '../math/Box3';\nimport { Vector3 } from '../math/Vector3';\nimport { Matrix4 } from '../math/Matrix4';\nimport { Vector2 } from '../math/Vector2';\nimport { Color } from '../math/Color';\nimport { Object3D } from './Object3D';\nimport { _Math } from '../math/Math';\n\n/**\n * @author mrdoob / http://mrdoob.com/\n * @author kile / http://kile.stravaganza.org/\n * @author alteredq / http://alteredqualia.com/\n * @author mikael emtinger / http://gomo.se/\n * @author zz85 / http://www.lab4games.net/zz85/blog\n * @author bhouston / http://clara.io\n */\n\nfunction Geometry() {\n\n\tObject.defineProperty( this, 'id', { value: GeometryIdCount() } );\n\n\tthis.uuid = _Math.generateUUID();\n\n\tthis.name = '';\n\tthis.type = 'Geometry';\n\n\tthis.vertices = [];\n\tthis.colors = [];\n\tthis.faces = [];\n\tthis.faceVertexUvs = [ [] ];\n\n\tthis.morphTargets = [];\n\tthis.morphNormals = [];\n\n\tthis.skinWeights = [];\n\tthis.skinIndices = [];\n\n\tthis.lineDistances = [];\n\n\tthis.boundingBox = null;\n\tthis.boundingSphere = null;\n\n\t// update flags\n\n\tthis.elementsNeedUpdate = false;\n\tthis.verticesNeedUpdate = false;\n\tthis.uvsNeedUpdate = false;\n\tthis.normalsNeedUpdate = false;\n\tthis.colorsNeedUpdate = false;\n\tthis.lineDistancesNeedUpdate = false;\n\tthis.groupsNeedUpdate = false;\n\n}\n\nObject.assign( Geometry.prototype, EventDispatcher.prototype, {\n\n\tisGeometry: true,\n\n\tapplyMatrix: function ( matrix ) {\n\n\t\tvar normalMatrix = new Matrix3().getNormalMatrix( matrix );\n\n\t\tfor ( var i = 0, il = this.vertices.length; i < il; i ++ ) {\n\n\t\t\tvar vertex = this.vertices[ i ];\n\t\t\tvertex.applyMatrix4( matrix );\n\n\t\t}\n\n\t\tfor ( var i = 0, il = this.faces.length; i < il; i ++ ) {\n\n\t\t\tvar face = this.faces[ i ];\n\t\t\tface.normal.applyMatrix3( normalMatrix ).normalize();\n\n\t\t\tfor ( var j = 0, jl = face.vertexNormals.length; j < jl; j ++ ) {\n\n\t\t\t\tface.vertexNormals[ j ].applyMatrix3( normalMatrix ).normalize();\n\n\t\t\t}\n\n\t\t}\n\n\t\tif ( this.boundingBox !== null ) {\n\n\t\t\tthis.computeBoundingBox();\n\n\t\t}\n\n\t\tif ( this.boundingSphere !== null ) {\n\n\t\t\tthis.computeBoundingSphere();\n\n\t\t}\n\n\t\tthis.verticesNeedUpdate = true;\n\t\tthis.normalsNeedUpdate = true;\n\n\t\treturn this;\n\n\t},\n\n\trotateX: function () {\n\n\t\t// rotate geometry around world x-axis\n\n\t\tvar m1;\n\n\t\treturn function rotateX( angle ) {\n\n\t\t\tif ( m1 === undefined ) m1 = new Matrix4();\n\n\t\t\tm1.makeRotationX( angle );\n\n\t\t\tthis.applyMatrix( m1 );\n\n\t\t\treturn this;\n\n\t\t};\n\n\t}(),\n\n\trotateY: function () {\n\n\t\t// rotate geometry around world y-axis\n\n\t\tvar m1;\n\n\t\treturn function rotateY( angle ) {\n\n\t\t\tif ( m1 === undefined ) m1 = new Matrix4();\n\n\t\t\tm1.makeRotationY( angle );\n\n\t\t\tthis.applyMatrix( m1 );\n\n\t\t\treturn this;\n\n\t\t};\n\n\t}(),\n\n\trotateZ: function () {\n\n\t\t// rotate geometry around world z-axis\n\n\t\tvar m1;\n\n\t\treturn function rotateZ( angle ) {\n\n\t\t\tif ( m1 === undefined ) m1 = new Matrix4();\n\n\t\t\tm1.makeRotationZ( angle );\n\n\t\t\tthis.applyMatrix( m1 );\n\n\t\t\treturn this;\n\n\t\t};\n\n\t}(),\n\n\ttranslate: function () {\n\n\t\t// translate geometry\n\n\t\tvar m1;\n\n\t\treturn function translate( x, y, z ) {\n\n\t\t\tif ( m1 === undefined ) m1 = new Matrix4();\n\n\t\t\tm1.makeTranslation( x, y, z );\n\n\t\t\tthis.applyMatrix( m1 );\n\n\t\t\treturn this;\n\n\t\t};\n\n\t}(),\n\n\tscale: function () {\n\n\t\t// scale geometry\n\n\t\tvar m1;\n\n\t\treturn function scale( x, y, z ) {\n\n\t\t\tif ( m1 === undefined ) m1 = new Matrix4();\n\n\t\t\tm1.makeScale( x, y, z );\n\n\t\t\tthis.applyMatrix( m1 );\n\n\t\t\treturn this;\n\n\t\t};\n\n\t}(),\n\n\tlookAt: function () {\n\n\t\tvar obj;\n\n\t\treturn function lookAt( vector ) {\n\n\t\t\tif ( obj === undefined ) obj = new Object3D();\n\n\t\t\tobj.lookAt( vector );\n\n\t\t\tobj.updateMatrix();\n\n\t\t\tthis.applyMatrix( obj.matrix );\n\n\t\t};\n\n\t}(),\n\n\tfromBufferGeometry: function ( geometry ) {\n\n\t\tvar scope = this;\n\n\t\tvar indices = geometry.index !== null ? geometry.index.array : undefined;\n\t\tvar attributes = geometry.attributes;\n\n\t\tvar positions = attributes.position.array;\n\t\tvar normals = attributes.normal !== undefined ? attributes.normal.array : undefined;\n\t\tvar colors = attributes.color !== undefined ? attributes.color.array : undefined;\n\t\tvar uvs = attributes.uv !== undefined ? attributes.uv.array : undefined;\n\t\tvar uvs2 = attributes.uv2 !== undefined ? attributes.uv2.array : undefined;\n\n\t\tif ( uvs2 !== undefined ) this.faceVertexUvs[ 1 ] = [];\n\n\t\tvar tempNormals = [];\n\t\tvar tempUVs = [];\n\t\tvar tempUVs2 = [];\n\n\t\tfor ( var i = 0, j = 0; i < positions.length; i += 3, j += 2 ) {\n\n\t\t\tscope.vertices.push( new Vector3( positions[ i ], positions[ i + 1 ], positions[ i + 2 ] ) );\n\n\t\t\tif ( normals !== undefined ) {\n\n\t\t\t\ttempNormals.push( new Vector3( normals[ i ], normals[ i + 1 ], normals[ i + 2 ] ) );\n\n\t\t\t}\n\n\t\t\tif ( colors !== undefined ) {\n\n\t\t\t\tscope.colors.push( new Color( colors[ i ], colors[ i + 1 ], colors[ i + 2 ] ) );\n\n\t\t\t}\n\n\t\t\tif ( uvs !== undefined ) {\n\n\t\t\t\ttempUVs.push( new Vector2( uvs[ j ], uvs[ j + 1 ] ) );\n\n\t\t\t}\n\n\t\t\tif ( uvs2 !== undefined ) {\n\n\t\t\t\ttempUVs2.push( new Vector2( uvs2[ j ], uvs2[ j + 1 ] ) );\n\n\t\t\t}\n\n\t\t}\n\n\t\tfunction addFace( a, b, c, materialIndex ) {\n\n\t\t\tvar vertexNormals = normals !== undefined ? [ tempNormals[ a ].clone(), tempNormals[ b ].clone(), tempNormals[ c ].clone() ] : [];\n\t\t\tvar vertexColors = colors !== undefined ? [ scope.colors[ a ].clone(), scope.colors[ b ].clone(), scope.colors[ c ].clone() ] : [];\n\n\t\t\tvar face = new Face3( a, b, c, vertexNormals, vertexColors, materialIndex );\n\n\t\t\tscope.faces.push( face );\n\n\t\t\tif ( uvs !== undefined ) {\n\n\t\t\t\tscope.faceVertexUvs[ 0 ].push( [ tempUVs[ a ].clone(), tempUVs[ b ].clone(), tempUVs[ c ].clone() ] );\n\n\t\t\t}\n\n\t\t\tif ( uvs2 !== undefined ) {\n\n\t\t\t\tscope.faceVertexUvs[ 1 ].push( [ tempUVs2[ a ].clone(), tempUVs2[ b ].clone(), tempUVs2[ c ].clone() ] );\n\n\t\t\t}\n\n\t\t}\n\n\t\tif ( indices !== undefined ) {\n\n\t\t\tvar groups = geometry.groups;\n\n\t\t\tif ( groups.length > 0 ) {\n\n\t\t\t\tfor ( var i = 0; i < groups.length; i ++ ) {\n\n\t\t\t\t\tvar group = groups[ i ];\n\n\t\t\t\t\tvar start = group.start;\n\t\t\t\t\tvar count = group.count;\n\n\t\t\t\t\tfor ( var j = start, jl = start + count; j < jl; j += 3 ) {\n\n\t\t\t\t\t\taddFace( indices[ j ], indices[ j + 1 ], indices[ j + 2 ], group.materialIndex );\n\n\t\t\t\t\t}\n\n\t\t\t\t}\n\n\t\t\t} else {\n\n\t\t\t\tfor ( var i = 0; i < indices.length; i += 3 ) {\n\n\t\t\t\t\taddFace( indices[ i ], indices[ i + 1 ], indices[ i + 2 ] );\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t} else {\n\n\t\t\tfor ( var i = 0; i < positions.length / 3; i += 3 ) {\n\n\t\t\t\taddFace( i, i + 1, i + 2 );\n\n\t\t\t}\n\n\t\t}\n\n\t\tthis.computeFaceNormals();\n\n\t\tif ( geometry.boundingBox !== null ) {\n\n\t\t\tthis.boundingBox = geometry.boundingBox.clone();\n\n\t\t}\n\n\t\tif ( geometry.boundingSphere !== null ) {\n\n\t\t\tthis.boundingSphere = geometry.boundingSphere.clone();\n\n\t\t}\n\n\t\treturn this;\n\n\t},\n\n\tcenter: function () {\n\n\t\tthis.computeBoundingBox();\n\n\t\tvar offset = this.boundingBox.getCenter().negate();\n\n\t\tthis.translate( offset.x, offset.y, offset.z );\n\n\t\treturn offset;\n\n\t},\n\n\tnormalize: function () {\n\n\t\tthis.computeBoundingSphere();\n\n\t\tvar center = this.boundingSphere.center;\n\t\tvar radius = this.boundingSphere.radius;\n\n\t\tvar s = radius === 0 ? 1 : 1.0 / radius;\n\n\t\tvar matrix = new Matrix4();\n\t\tmatrix.set(\n\t\t\ts, 0, 0, - s * center.x,\n\t\t\t0, s, 0, - s * center.y,\n\t\t\t0, 0, s, - s * center.z,\n\t\t\t0, 0, 0, 1\n\t\t);\n\n\t\tthis.applyMatrix( matrix );\n\n\t\treturn this;\n\n\t},\n\n\tcomputeFaceNormals: function () {\n\n\t\tvar cb = new Vector3(), ab = new Vector3();\n\n\t\tfor ( var f = 0, fl = this.faces.length; f < fl; f ++ ) {\n\n\t\t\tvar face = this.faces[ f ];\n\n\t\t\tvar vA = this.vertices[ face.a ];\n\t\t\tvar vB = this.vertices[ face.b ];\n\t\t\tvar vC = this.vertices[ face.c ];\n\n\t\t\tcb.subVectors( vC, vB );\n\t\t\tab.subVectors( vA, vB );\n\t\t\tcb.cross( ab );\n\n\t\t\tcb.normalize();\n\n\t\t\tface.normal.copy( cb );\n\n\t\t}\n\n\t},\n\n\tcomputeVertexNormals: function ( areaWeighted ) {\n\n\t\tif ( areaWeighted === undefined ) areaWeighted = true;\n\n\t\tvar v, vl, f, fl, face, vertices;\n\n\t\tvertices = new Array( this.vertices.length );\n\n\t\tfor ( v = 0, vl = this.vertices.length; v < vl; v ++ ) {\n\n\t\t\tvertices[ v ] = new Vector3();\n\n\t\t}\n\n\t\tif ( areaWeighted ) {\n\n\t\t\t// vertex normals weighted by triangle areas\n\t\t\t// http://www.iquilezles.org/www/articles/normals/normals.htm\n\n\t\t\tvar vA, vB, vC;\n\t\t\tvar cb = new Vector3(), ab = new Vector3();\n\n\t\t\tfor ( f = 0, fl = this.faces.length; f < fl; f ++ ) {\n\n\t\t\t\tface = this.faces[ f ];\n\n\t\t\t\tvA = this.vertices[ face.a ];\n\t\t\t\tvB = this.vertices[ face.b ];\n\t\t\t\tvC = this.vertices[ face.c ];\n\n\t\t\t\tcb.subVectors( vC, vB );\n\t\t\t\tab.subVectors( vA, vB );\n\t\t\t\tcb.cross( ab );\n\n\t\t\t\tvertices[ face.a ].add( cb );\n\t\t\t\tvertices[ face.b ].add( cb );\n\t\t\t\tvertices[ face.c ].add( cb );\n\n\t\t\t}\n\n\t\t} else {\n\n\t\t\tthis.computeFaceNormals();\n\n\t\t\tfor ( f = 0, fl = this.faces.length; f < fl; f ++ ) {\n\n\t\t\t\tface = this.faces[ f ];\n\n\t\t\t\tvertices[ face.a ].add( face.normal );\n\t\t\t\tvertices[ face.b ].add( face.normal );\n\t\t\t\tvertices[ face.c ].add( face.normal );\n\n\t\t\t}\n\n\t\t}\n\n\t\tfor ( v = 0, vl = this.vertices.length; v < vl; v ++ ) {\n\n\t\t\tvertices[ v ].normalize();\n\n\t\t}\n\n\t\tfor ( f = 0, fl = this.faces.length; f < fl; f ++ ) {\n\n\t\t\tface = this.faces[ f ];\n\n\t\t\tvar vertexNormals = face.vertexNormals;\n\n\t\t\tif ( vertexNormals.length === 3 ) {\n\n\t\t\t\tvertexNormals[ 0 ].copy( vertices[ face.a ] );\n\t\t\t\tvertexNormals[ 1 ].copy( vertices[ face.b ] );\n\t\t\t\tvertexNormals[ 2 ].copy( vertices[ face.c ] );\n\n\t\t\t} else {\n\n\t\t\t\tvertexNormals[ 0 ] = vertices[ face.a ].clone();\n\t\t\t\tvertexNormals[ 1 ] = vertices[ face.b ].clone();\n\t\t\t\tvertexNormals[ 2 ] = vertices[ face.c ].clone();\n\n\t\t\t}\n\n\t\t}\n\n\t\tif ( this.faces.length > 0 ) {\n\n\t\t\tthis.normalsNeedUpdate = true;\n\n\t\t}\n\n\t},\n\n\tcomputeFlatVertexNormals: function () {\n\n\t\tvar f, fl, face;\n\n\t\tthis.computeFaceNormals();\n\n\t\tfor ( f = 0, fl = this.faces.length; f < fl; f ++ ) {\n\n\t\t\tface = this.faces[ f ];\n\n\t\t\tvar vertexNormals = face.vertexNormals;\n\n\t\t\tif ( vertexNormals.length === 3 ) {\n\n\t\t\t\tvertexNormals[ 0 ].copy( face.normal );\n\t\t\t\tvertexNormals[ 1 ].copy( face.normal );\n\t\t\t\tvertexNormals[ 2 ].copy( face.normal );\n\n\t\t\t} else {\n\n\t\t\t\tvertexNormals[ 0 ] = face.normal.clone();\n\t\t\t\tvertexNormals[ 1 ] = face.normal.clone();\n\t\t\t\tvertexNormals[ 2 ] = face.normal.clone();\n\n\t\t\t}\n\n\t\t}\n\n\t\tif ( this.faces.length > 0 ) {\n\n\t\t\tthis.normalsNeedUpdate = true;\n\n\t\t}\n\n\t},\n\n\tcomputeMorphNormals: function () {\n\n\t\tvar i, il, f, fl, face;\n\n\t\t// save original normals\n\t\t// - create temp variables on first access\n\t\t// otherwise just copy (for faster repeated calls)\n\n\t\tfor ( f = 0, fl = this.faces.length; f < fl; f ++ ) {\n\n\t\t\tface = this.faces[ f ];\n\n\t\t\tif ( ! face.__originalFaceNormal ) {\n\n\t\t\t\tface.__originalFaceNormal = face.normal.clone();\n\n\t\t\t} else {\n\n\t\t\t\tface.__originalFaceNormal.copy( face.normal );\n\n\t\t\t}\n\n\t\t\tif ( ! face.__originalVertexNormals ) face.__originalVertexNormals = [];\n\n\t\t\tfor ( i = 0, il = face.vertexNormals.length; i < il; i ++ ) {\n\n\t\t\t\tif ( ! face.__originalVertexNormals[ i ] ) {\n\n\t\t\t\t\tface.__originalVertexNormals[ i ] = face.vertexNormals[ i ].clone();\n\n\t\t\t\t} else {\n\n\t\t\t\t\tface.__originalVertexNormals[ i ].copy( face.vertexNormals[ i ] );\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t}\n\n\t\t// use temp geometry to compute face and vertex normals for each morph\n\n\t\tvar tmpGeo = new Geometry();\n\t\ttmpGeo.faces = this.faces;\n\n\t\tfor ( i = 0, il = this.morphTargets.length; i < il; i ++ ) {\n\n\t\t\t// create on first access\n\n\t\t\tif ( ! this.morphNormals[ i ] ) {\n\n\t\t\t\tthis.morphNormals[ i ] = {};\n\t\t\t\tthis.morphNormals[ i ].faceNormals = [];\n\t\t\t\tthis.morphNormals[ i ].vertexNormals = [];\n\n\t\t\t\tvar dstNormalsFace = this.morphNormals[ i ].faceNormals;\n\t\t\t\tvar dstNormalsVertex = this.morphNormals[ i ].vertexNormals;\n\n\t\t\t\tvar faceNormal, vertexNormals;\n\n\t\t\t\tfor ( f = 0, fl = this.faces.length; f < fl; f ++ ) {\n\n\t\t\t\t\tfaceNormal = new Vector3();\n\t\t\t\t\tvertexNormals = { a: new Vector3(), b: new Vector3(), c: new Vector3() };\n\n\t\t\t\t\tdstNormalsFace.push( faceNormal );\n\t\t\t\t\tdstNormalsVertex.push( vertexNormals );\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t\tvar morphNormals = this.morphNormals[ i ];\n\n\t\t\t// set vertices to morph target\n\n\t\t\ttmpGeo.vertices = this.morphTargets[ i ].vertices;\n\n\t\t\t// compute morph normals\n\n\t\t\ttmpGeo.computeFaceNormals();\n\t\t\ttmpGeo.computeVertexNormals();\n\n\t\t\t// store morph normals\n\n\t\t\tvar faceNormal, vertexNormals;\n\n\t\t\tfor ( f = 0, fl = this.faces.length; f < fl; f ++ ) {\n\n\t\t\t\tface = this.faces[ f ];\n\n\t\t\t\tfaceNormal = morphNormals.faceNormals[ f ];\n\t\t\t\tvertexNormals = morphNormals.vertexNormals[ f ];\n\n\t\t\t\tfaceNormal.copy( face.normal );\n\n\t\t\t\tvertexNormals.a.copy( face.vertexNormals[ 0 ] );\n\t\t\t\tvertexNormals.b.copy( face.vertexNormals[ 1 ] );\n\t\t\t\tvertexNormals.c.copy( face.vertexNormals[ 2 ] );\n\n\t\t\t}\n\n\t\t}\n\n\t\t// restore original normals\n\n\t\tfor ( f = 0, fl = this.faces.length; f < fl; f ++ ) {\n\n\t\t\tface = this.faces[ f ];\n\n\t\t\tface.normal = face.__originalFaceNormal;\n\t\t\tface.vertexNormals = face.__originalVertexNormals;\n\n\t\t}\n\n\t},\n\n\tcomputeTangents: function () {\n\n\t\tconsole.warn( 'THREE.Geometry: .computeTangents() has been removed.' );\n\n\t},\n\n\tcomputeLineDistances: function () {\n\n\t\tvar d = 0;\n\t\tvar vertices = this.vertices;\n\n\t\tfor ( var i = 0, il = vertices.length; i < il; i ++ ) {\n\n\t\t\tif ( i > 0 ) {\n\n\t\t\t\td += vertices[ i ].distanceTo( vertices[ i - 1 ] );\n\n\t\t\t}\n\n\t\t\tthis.lineDistances[ i ] = d;\n\n\t\t}\n\n\t},\n\n\tcomputeBoundingBox: function () {\n\n\t\tif ( this.boundingBox === null ) {\n\n\t\t\tthis.boundingBox = new Box3();\n\n\t\t}\n\n\t\tthis.boundingBox.setFromPoints( this.vertices );\n\n\t},\n\n\tcomputeBoundingSphere: function () {\n\n\t\tif ( this.boundingSphere === null ) {\n\n\t\t\tthis.boundingSphere = new Sphere();\n\n\t\t}\n\n\t\tthis.boundingSphere.setFromPoints( this.vertices );\n\n\t},\n\n\tmerge: function ( geometry, matrix, materialIndexOffset ) {\n\n\t\tif ( (geometry && geometry.isGeometry) === false ) {\n\n\t\t\tconsole.error( 'THREE.Geometry.merge(): geometry not an instance of THREE.Geometry.', geometry );\n\t\t\treturn;\n\n\t\t}\n\n\t\tvar normalMatrix,\n\t\tvertexOffset = this.vertices.length,\n\t\tvertices1 = this.vertices,\n\t\tvertices2 = geometry.vertices,\n\t\tfaces1 = this.faces,\n\t\tfaces2 = geometry.faces,\n\t\tuvs1 = this.faceVertexUvs[ 0 ],\n\t\tuvs2 = geometry.faceVertexUvs[ 0 ],\n\t\tcolors1 = this.colors,\n\t\tcolors2 = geometry.colors;\n\n\t\tif ( materialIndexOffset === undefined ) materialIndexOffset = 0;\n\n\t\tif ( matrix !== undefined ) {\n\n\t\t\tnormalMatrix = new Matrix3().getNormalMatrix( matrix );\n\n\t\t}\n\n\t\t// vertices\n\n\t\tfor ( var i = 0, il = vertices2.length; i < il; i ++ ) {\n\n\t\t\tvar vertex = vertices2[ i ];\n\n\t\t\tvar vertexCopy = vertex.clone();\n\n\t\t\tif ( matrix !== undefined ) vertexCopy.applyMatrix4( matrix );\n\n\t\t\tvertices1.push( vertexCopy );\n\n\t\t}\n\n\t\t// colors\n\n\t\tfor ( var i = 0, il = colors2.length; i < il; i ++ ) {\n\n\t\t\tcolors1.push( colors2[ i ].clone() );\n\n\t\t}\n\n\t\t// faces\n\n\t\tfor ( i = 0, il = faces2.length; i < il; i ++ ) {\n\n\t\t\tvar face = faces2[ i ], faceCopy, normal, color,\n\t\t\tfaceVertexNormals = face.vertexNormals,\n\t\t\tfaceVertexColors = face.vertexColors;\n\n\t\t\tfaceCopy = new Face3( face.a + vertexOffset, face.b + vertexOffset, face.c + vertexOffset );\n\t\t\tfaceCopy.normal.copy( face.normal );\n\n\t\t\tif ( normalMatrix !== undefined ) {\n\n\t\t\t\tfaceCopy.normal.applyMatrix3( normalMatrix ).normalize();\n\n\t\t\t}\n\n\t\t\tfor ( var j = 0, jl = faceVertexNormals.length; j < jl; j ++ ) {\n\n\t\t\t\tnormal = faceVertexNormals[ j ].clone();\n\n\t\t\t\tif ( normalMatrix !== undefined ) {\n\n\t\t\t\t\tnormal.applyMatrix3( normalMatrix ).normalize();\n\n\t\t\t\t}\n\n\t\t\t\tfaceCopy.vertexNormals.push( normal );\n\n\t\t\t}\n\n\t\t\tfaceCopy.color.copy( face.color );\n\n\t\t\tfor ( var j = 0, jl = faceVertexColors.length; j < jl; j ++ ) {\n\n\t\t\t\tcolor = faceVertexColors[ j ];\n\t\t\t\tfaceCopy.vertexColors.push( color.clone() );\n\n\t\t\t}\n\n\t\t\tfaceCopy.materialIndex = face.materialIndex + materialIndexOffset;\n\n\t\t\tfaces1.push( faceCopy );\n\n\t\t}\n\n\t\t// uvs\n\n\t\tfor ( i = 0, il = uvs2.length; i < il; i ++ ) {\n\n\t\t\tvar uv = uvs2[ i ], uvCopy = [];\n\n\t\t\tif ( uv === undefined ) {\n\n\t\t\t\tcontinue;\n\n\t\t\t}\n\n\t\t\tfor ( var j = 0, jl = uv.length; j < jl; j ++ ) {\n\n\t\t\t\tuvCopy.push( uv[ j ].clone() );\n\n\t\t\t}\n\n\t\t\tuvs1.push( uvCopy );\n\n\t\t}\n\n\t},\n\n\tmergeMesh: function ( mesh ) {\n\n\t\tif ( (mesh && mesh.isMesh) === false ) {\n\n\t\t\tconsole.error( 'THREE.Geometry.mergeMesh(): mesh not an instance of THREE.Mesh.', mesh );\n\t\t\treturn;\n\n\t\t}\n\n\t\tmesh.matrixAutoUpdate && mesh.updateMatrix();\n\n\t\tthis.merge( mesh.geometry, mesh.matrix );\n\n\t},\n\n\t/*\n\t * Checks for duplicate vertices with hashmap.\n\t * Duplicated vertices are removed\n\t * and faces' vertices are updated.\n\t */\n\n\tmergeVertices: function () {\n\n\t\tvar verticesMap = {}; // Hashmap for looking up vertices by position coordinates (and making sure they are unique)\n\t\tvar unique = [], changes = [];\n\n\t\tvar v, key;\n\t\tvar precisionPoints = 4; // number of decimal points, e.g. 4 for epsilon of 0.0001\n\t\tvar precision = Math.pow( 10, precisionPoints );\n\t\tvar i, il, face;\n\t\tvar indices, j, jl;\n\n\t\tfor ( i = 0, il = this.vertices.length; i < il; i ++ ) {\n\n\t\t\tv = this.vertices[ i ];\n\t\t\tkey = Math.round( v.x * precision ) + '_' + Math.round( v.y * precision ) + '_' + Math.round( v.z * precision );\n\n\t\t\tif ( verticesMap[ key ] === undefined ) {\n\n\t\t\t\tverticesMap[ key ] = i;\n\t\t\t\tunique.push( this.vertices[ i ] );\n\t\t\t\tchanges[ i ] = unique.length - 1;\n\n\t\t\t} else {\n\n\t\t\t\t//console.log('Duplicate vertex found. ', i, ' could be using ', verticesMap[key]);\n\t\t\t\tchanges[ i ] = changes[ verticesMap[ key ] ];\n\n\t\t\t}\n\n\t\t}\n\n\n\t\t// if faces are completely degenerate after merging vertices, we\n\t\t// have to remove them from the geometry.\n\t\tvar faceIndicesToRemove = [];\n\n\t\tfor ( i = 0, il = this.faces.length; i < il; i ++ ) {\n\n\t\t\tface = this.faces[ i ];\n\n\t\t\tface.a = changes[ face.a ];\n\t\t\tface.b = changes[ face.b ];\n\t\t\tface.c = changes[ face.c ];\n\n\t\t\tindices = [ face.a, face.b, face.c ];\n\n\t\t\tvar dupIndex = - 1;\n\n\t\t\t// if any duplicate vertices are found in a Face3\n\t\t\t// we have to remove the face as nothing can be saved\n\t\t\tfor ( var n = 0; n < 3; n ++ ) {\n\n\t\t\t\tif ( indices[ n ] === indices[ ( n + 1 ) % 3 ] ) {\n\n\t\t\t\t\tdupIndex = n;\n\t\t\t\t\tfaceIndicesToRemove.push( i );\n\t\t\t\t\tbreak;\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t}\n\n\t\tfor ( i = faceIndicesToRemove.length - 1; i >= 0; i -- ) {\n\n\t\t\tvar idx = faceIndicesToRemove[ i ];\n\n\t\t\tthis.faces.splice( idx, 1 );\n\n\t\t\tfor ( j = 0, jl = this.faceVertexUvs.length; j < jl; j ++ ) {\n\n\t\t\t\tthis.faceVertexUvs[ j ].splice( idx, 1 );\n\n\t\t\t}\n\n\t\t}\n\n\t\t// Use unique set of vertices\n\n\t\tvar diff = this.vertices.length - unique.length;\n\t\tthis.vertices = unique;\n\t\treturn diff;\n\n\t},\n\n\tsortFacesByMaterialIndex: function () {\n\n\t\tvar faces = this.faces;\n\t\tvar length = faces.length;\n\n\t\t// tag faces\n\n\t\tfor ( var i = 0; i < length; i ++ ) {\n\n\t\t\tfaces[ i ]._id = i;\n\n\t\t}\n\n\t\t// sort faces\n\n\t\tfunction materialIndexSort( a, b ) {\n\n\t\t\treturn a.materialIndex - b.materialIndex;\n\n\t\t}\n\n\t\tfaces.sort( materialIndexSort );\n\n\t\t// sort uvs\n\n\t\tvar uvs1 = this.faceVertexUvs[ 0 ];\n\t\tvar uvs2 = this.faceVertexUvs[ 1 ];\n\n\t\tvar newUvs1, newUvs2;\n\n\t\tif ( uvs1 && uvs1.length === length ) newUvs1 = [];\n\t\tif ( uvs2 && uvs2.length === length ) newUvs2 = [];\n\n\t\tfor ( var i = 0; i < length; i ++ ) {\n\n\t\t\tvar id = faces[ i ]._id;\n\n\t\t\tif ( newUvs1 ) newUvs1.push( uvs1[ id ] );\n\t\t\tif ( newUvs2 ) newUvs2.push( uvs2[ id ] );\n\n\t\t}\n\n\t\tif ( newUvs1 ) this.faceVertexUvs[ 0 ] = newUvs1;\n\t\tif ( newUvs2 ) this.faceVertexUvs[ 1 ] = newUvs2;\n\n\t},\n\n\ttoJSON: function () {\n\n\t\tvar data = {\n\t\t\tmetadata: {\n\t\t\t\tversion: 4.4,\n\t\t\t\ttype: 'Geometry',\n\t\t\t\tgenerator: 'Geometry.toJSON'\n\t\t\t}\n\t\t};\n\n\t\t// standard Geometry serialization\n\n\t\tdata.uuid = this.uuid;\n\t\tdata.type = this.type;\n\t\tif ( this.name !== '' ) data.name = this.name;\n\n\t\tif ( this.parameters !== undefined ) {\n\n\t\t\tvar parameters = this.parameters;\n\n\t\t\tfor ( var key in parameters ) {\n\n\t\t\t\tif ( parameters[ key ] !== undefined ) data[ key ] = parameters[ key ];\n\n\t\t\t}\n\n\t\t\treturn data;\n\n\t\t}\n\n\t\tvar vertices = [];\n\n\t\tfor ( var i = 0; i < this.vertices.length; i ++ ) {\n\n\t\t\tvar vertex = this.vertices[ i ];\n\t\t\tvertices.push( vertex.x, vertex.y, vertex.z );\n\n\t\t}\n\n\t\tvar faces = [];\n\t\tvar normals = [];\n\t\tvar normalsHash = {};\n\t\tvar colors = [];\n\t\tvar colorsHash = {};\n\t\tvar uvs = [];\n\t\tvar uvsHash = {};\n\n\t\tfor ( var i = 0; i < this.faces.length; i ++ ) {\n\n\t\t\tvar face = this.faces[ i ];\n\n\t\t\tvar hasMaterial = true;\n\t\t\tvar hasFaceUv = false; // deprecated\n\t\t\tvar hasFaceVertexUv = this.faceVertexUvs[ 0 ][ i ] !== undefined;\n\t\t\tvar hasFaceNormal = face.normal.length() > 0;\n\t\t\tvar hasFaceVertexNormal = face.vertexNormals.length > 0;\n\t\t\tvar hasFaceColor = face.color.r !== 1 || face.color.g !== 1 || face.color.b !== 1;\n\t\t\tvar hasFaceVertexColor = face.vertexColors.length > 0;\n\n\t\t\tvar faceType = 0;\n\n\t\t\tfaceType = setBit( faceType, 0, 0 ); // isQuad\n\t\t\tfaceType = setBit( faceType, 1, hasMaterial );\n\t\t\tfaceType = setBit( faceType, 2, hasFaceUv );\n\t\t\tfaceType = setBit( faceType, 3, hasFaceVertexUv );\n\t\t\tfaceType = setBit( faceType, 4, hasFaceNormal );\n\t\t\tfaceType = setBit( faceType, 5, hasFaceVertexNormal );\n\t\t\tfaceType = setBit( faceType, 6, hasFaceColor );\n\t\t\tfaceType = setBit( faceType, 7, hasFaceVertexColor );\n\n\t\t\tfaces.push( faceType );\n\t\t\tfaces.push( face.a, face.b, face.c );\n\t\t\tfaces.push( face.materialIndex );\n\n\t\t\tif ( hasFaceVertexUv ) {\n\n\t\t\t\tvar faceVertexUvs = this.faceVertexUvs[ 0 ][ i ];\n\n\t\t\t\tfaces.push(\n\t\t\t\t\tgetUvIndex( faceVertexUvs[ 0 ] ),\n\t\t\t\t\tgetUvIndex( faceVertexUvs[ 1 ] ),\n\t\t\t\t\tgetUvIndex( faceVertexUvs[ 2 ] )\n\t\t\t\t);\n\n\t\t\t}\n\n\t\t\tif ( hasFaceNormal ) {\n\n\t\t\t\tfaces.push( getNormalIndex( face.normal ) );\n\n\t\t\t}\n\n\t\t\tif ( hasFaceVertexNormal ) {\n\n\t\t\t\tvar vertexNormals = face.vertexNormals;\n\n\t\t\t\tfaces.push(\n\t\t\t\t\tgetNormalIndex( vertexNormals[ 0 ] ),\n\t\t\t\t\tgetNormalIndex( vertexNormals[ 1 ] ),\n\t\t\t\t\tgetNormalIndex( vertexNormals[ 2 ] )\n\t\t\t\t);\n\n\t\t\t}\n\n\t\t\tif ( hasFaceColor ) {\n\n\t\t\t\tfaces.push( getColorIndex( face.color ) );\n\n\t\t\t}\n\n\t\t\tif ( hasFaceVertexColor ) {\n\n\t\t\t\tvar vertexColors = face.vertexColors;\n\n\t\t\t\tfaces.push(\n\t\t\t\t\tgetColorIndex( vertexColors[ 0 ] ),\n\t\t\t\t\tgetColorIndex( vertexColors[ 1 ] ),\n\t\t\t\t\tgetColorIndex( vertexColors[ 2 ] )\n\t\t\t\t);\n\n\t\t\t}\n\n\t\t}\n\n\t\tfunction setBit( value, position, enabled ) {\n\n\t\t\treturn enabled ? value | ( 1 << position ) : value & ( ~ ( 1 << position ) );\n\n\t\t}\n\n\t\tfunction getNormalIndex( normal ) {\n\n\t\t\tvar hash = normal.x.toString() + normal.y.toString() + normal.z.toString();\n\n\t\t\tif ( normalsHash[ hash ] !== undefined ) {\n\n\t\t\t\treturn normalsHash[ hash ];\n\n\t\t\t}\n\n\t\t\tnormalsHash[ hash ] = normals.length / 3;\n\t\t\tnormals.push( normal.x, normal.y, normal.z );\n\n\t\t\treturn normalsHash[ hash ];\n\n\t\t}\n\n\t\tfunction getColorIndex( color ) {\n\n\t\t\tvar hash = color.r.toString() + color.g.toString() + color.b.toString();\n\n\t\t\tif ( colorsHash[ hash ] !== undefined ) {\n\n\t\t\t\treturn colorsHash[ hash ];\n\n\t\t\t}\n\n\t\t\tcolorsHash[ hash ] = colors.length;\n\t\t\tcolors.push( color.getHex() );\n\n\t\t\treturn colorsHash[ hash ];\n\n\t\t}\n\n\t\tfunction getUvIndex( uv ) {\n\n\t\t\tvar hash = uv.x.toString() + uv.y.toString();\n\n\t\t\tif ( uvsHash[ hash ] !== undefined ) {\n\n\t\t\t\treturn uvsHash[ hash ];\n\n\t\t\t}\n\n\t\t\tuvsHash[ hash ] = uvs.length / 2;\n\t\t\tuvs.push( uv.x, uv.y );\n\n\t\t\treturn uvsHash[ hash ];\n\n\t\t}\n\n\t\tdata.data = {};\n\n\t\tdata.data.vertices = vertices;\n\t\tdata.data.normals = normals;\n\t\tif ( colors.length > 0 ) data.data.colors = colors;\n\t\tif ( uvs.length > 0 ) data.data.uvs = [ uvs ]; // temporal backward compatibility\n\t\tdata.data.faces = faces;\n\n\t\treturn data;\n\n\t},\n\n\tclone: function () {\n\n\t\t/*\n\t\t// Handle primitives\n\n\t\tvar parameters = this.parameters;\n\n\t\tif ( parameters !== undefined ) {\n\n\t\t\tvar values = [];\n\n\t\t\tfor ( var key in parameters ) {\n\n\t\t\t\tvalues.push( parameters[ key ] );\n\n\t\t\t}\n\n\t\t\tvar geometry = Object.create( this.constructor.prototype );\n\t\t\tthis.constructor.apply( geometry, values );\n\t\t\treturn geometry;\n\n\t\t}\n\n\t\treturn new this.constructor().copy( this );\n\t\t*/\n\n\t\treturn new Geometry().copy( this );\n\n\t},\n\n\tcopy: function ( source ) {\n\n\t\tthis.vertices = [];\n\t\tthis.faces = [];\n\t\tthis.faceVertexUvs = [ [] ];\n\t\tthis.colors = [];\n\n\t\tvar vertices = source.vertices;\n\n\t\tfor ( var i = 0, il = vertices.length; i < il; i ++ ) {\n\n\t\t\tthis.vertices.push( vertices[ i ].clone() );\n\n\t\t}\n\n\t\tvar colors = source.colors;\n\n\t\tfor ( var i = 0, il = colors.length; i < il; i ++ ) {\n\n\t\t\tthis.colors.push( colors[ i ].clone() );\n\n\t\t}\n\n\t\tvar faces = source.faces;\n\n\t\tfor ( var i = 0, il = faces.length; i < il; i ++ ) {\n\n\t\t\tthis.faces.push( faces[ i ].clone() );\n\n\t\t}\n\n\t\tfor ( var i = 0, il = source.faceVertexUvs.length; i < il; i ++ ) {\n\n\t\t\tvar faceVertexUvs = source.faceVertexUvs[ i ];\n\n\t\t\tif ( this.faceVertexUvs[ i ] === undefined ) {\n\n\t\t\t\tthis.faceVertexUvs[ i ] = [];\n\n\t\t\t}\n\n\t\t\tfor ( var j = 0, jl = faceVertexUvs.length; j < jl; j ++ ) {\n\n\t\t\t\tvar uvs = faceVertexUvs[ j ], uvsCopy = [];\n\n\t\t\t\tfor ( var k = 0, kl = uvs.length; k < kl; k ++ ) {\n\n\t\t\t\t\tvar uv = uvs[ k ];\n\n\t\t\t\t\tuvsCopy.push( uv.clone() );\n\n\t\t\t\t}\n\n\t\t\t\tthis.faceVertexUvs[ i ].push( uvsCopy );\n\n\t\t\t}\n\n\t\t}\n\n\t\treturn this;\n\n\t},\n\n\tdispose: function () {\n\n\t\tthis.dispatchEvent( { type: 'dispose' } );\n\n\t}\n\n} );\n\nvar count = 0;\nfunction GeometryIdCount() { return count++; };\n\n\nexport { GeometryIdCount, Geometry };\n","import { Geometry } from './Geometry';\nimport { EventDispatcher } from './EventDispatcher';\nimport { Vector2 } from '../math/Vector2';\nimport { _Math } from '../math/Math';\nimport { GeometryIdCount } from './Geometry';\n\n/**\n * @author mrdoob / http://mrdoob.com/\n */\n\nfunction DirectGeometry() {\n\n\tObject.defineProperty( this, 'id', { value: GeometryIdCount() } );\n\n\tthis.uuid = _Math.generateUUID();\n\n\tthis.name = '';\n\tthis.type = 'DirectGeometry';\n\n\tthis.indices = [];\n\tthis.vertices = [];\n\tthis.normals = [];\n\tthis.colors = [];\n\tthis.uvs = [];\n\tthis.uvs2 = [];\n\n\tthis.groups = [];\n\n\tthis.morphTargets = {};\n\n\tthis.skinWeights = [];\n\tthis.skinIndices = [];\n\n\t// this.lineDistances = [];\n\n\tthis.boundingBox = null;\n\tthis.boundingSphere = null;\n\n\t// update flags\n\n\tthis.verticesNeedUpdate = false;\n\tthis.normalsNeedUpdate = false;\n\tthis.colorsNeedUpdate = false;\n\tthis.uvsNeedUpdate = false;\n\tthis.groupsNeedUpdate = false;\n\n}\n\nObject.assign( DirectGeometry.prototype, EventDispatcher.prototype, {\n\n\tcomputeBoundingBox: Geometry.prototype.computeBoundingBox,\n\tcomputeBoundingSphere: Geometry.prototype.computeBoundingSphere,\n\n\tcomputeFaceNormals: function () {\n\n\t\tconsole.warn( 'THREE.DirectGeometry: computeFaceNormals() is not a method of this type of geometry.' );\n\n\t},\n\n\tcomputeVertexNormals: function () {\n\n\t\tconsole.warn( 'THREE.DirectGeometry: computeVertexNormals() is not a method of this type of geometry.' );\n\n\t},\n\n\tcomputeGroups: function ( geometry ) {\n\n\t\tvar group;\n\t\tvar groups = [];\n\t\tvar materialIndex;\n\n\t\tvar faces = geometry.faces;\n\n\t\tfor ( var i = 0; i < faces.length; i ++ ) {\n\n\t\t\tvar face = faces[ i ];\n\n\t\t\t// materials\n\n\t\t\tif ( face.materialIndex !== materialIndex ) {\n\n\t\t\t\tmaterialIndex = face.materialIndex;\n\n\t\t\t\tif ( group !== undefined ) {\n\n\t\t\t\t\tgroup.count = ( i * 3 ) - group.start;\n\t\t\t\t\tgroups.push( group );\n\n\t\t\t\t}\n\n\t\t\t\tgroup = {\n\t\t\t\t\tstart: i * 3,\n\t\t\t\t\tmaterialIndex: materialIndex\n\t\t\t\t};\n\n\t\t\t}\n\n\t\t}\n\n\t\tif ( group !== undefined ) {\n\n\t\t\tgroup.count = ( i * 3 ) - group.start;\n\t\t\tgroups.push( group );\n\n\t\t}\n\n\t\tthis.groups = groups;\n\n\t},\n\n\tfromGeometry: function ( geometry ) {\n\n\t\tvar faces = geometry.faces;\n\t\tvar vertices = geometry.vertices;\n\t\tvar faceVertexUvs = geometry.faceVertexUvs;\n\n\t\tvar hasFaceVertexUv = faceVertexUvs[ 0 ] && faceVertexUvs[ 0 ].length > 0;\n\t\tvar hasFaceVertexUv2 = faceVertexUvs[ 1 ] && faceVertexUvs[ 1 ].length > 0;\n\n\t\t// morphs\n\n\t\tvar morphTargets = geometry.morphTargets;\n\t\tvar morphTargetsLength = morphTargets.length;\n\n\t\tvar morphTargetsPosition;\n\n\t\tif ( morphTargetsLength > 0 ) {\n\n\t\t\tmorphTargetsPosition = [];\n\n\t\t\tfor ( var i = 0; i < morphTargetsLength; i ++ ) {\n\n\t\t\t\tmorphTargetsPosition[ i ] = [];\n\n\t\t\t}\n\n\t\t\tthis.morphTargets.position = morphTargetsPosition;\n\n\t\t}\n\n\t\tvar morphNormals = geometry.morphNormals;\n\t\tvar morphNormalsLength = morphNormals.length;\n\n\t\tvar morphTargetsNormal;\n\n\t\tif ( morphNormalsLength > 0 ) {\n\n\t\t\tmorphTargetsNormal = [];\n\n\t\t\tfor ( var i = 0; i < morphNormalsLength; i ++ ) {\n\n\t\t\t\tmorphTargetsNormal[ i ] = [];\n\n\t\t\t}\n\n\t\t\tthis.morphTargets.normal = morphTargetsNormal;\n\n\t\t}\n\n\t\t// skins\n\n\t\tvar skinIndices = geometry.skinIndices;\n\t\tvar skinWeights = geometry.skinWeights;\n\n\t\tvar hasSkinIndices = skinIndices.length === vertices.length;\n\t\tvar hasSkinWeights = skinWeights.length === vertices.length;\n\n\t\t//\n\n\t\tfor ( var i = 0; i < faces.length; i ++ ) {\n\n\t\t\tvar face = faces[ i ];\n\n\t\t\tthis.vertices.push( vertices[ face.a ], vertices[ face.b ], vertices[ face.c ] );\n\n\t\t\tvar vertexNormals = face.vertexNormals;\n\n\t\t\tif ( vertexNormals.length === 3 ) {\n\n\t\t\t\tthis.normals.push( vertexNormals[ 0 ], vertexNormals[ 1 ], vertexNormals[ 2 ] );\n\n\t\t\t} else {\n\n\t\t\t\tvar normal = face.normal;\n\n\t\t\t\tthis.normals.push( normal, normal, normal );\n\n\t\t\t}\n\n\t\t\tvar vertexColors = face.vertexColors;\n\n\t\t\tif ( vertexColors.length === 3 ) {\n\n\t\t\t\tthis.colors.push( vertexColors[ 0 ], vertexColors[ 1 ], vertexColors[ 2 ] );\n\n\t\t\t} else {\n\n\t\t\t\tvar color = face.color;\n\n\t\t\t\tthis.colors.push( color, color, color );\n\n\t\t\t}\n\n\t\t\tif ( hasFaceVertexUv === true ) {\n\n\t\t\t\tvar vertexUvs = faceVertexUvs[ 0 ][ i ];\n\n\t\t\t\tif ( vertexUvs !== undefined ) {\n\n\t\t\t\t\tthis.uvs.push( vertexUvs[ 0 ], vertexUvs[ 1 ], vertexUvs[ 2 ] );\n\n\t\t\t\t} else {\n\n\t\t\t\t\tconsole.warn( 'THREE.DirectGeometry.fromGeometry(): Undefined vertexUv ', i );\n\n\t\t\t\t\tthis.uvs.push( new Vector2(), new Vector2(), new Vector2() );\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t\tif ( hasFaceVertexUv2 === true ) {\n\n\t\t\t\tvar vertexUvs = faceVertexUvs[ 1 ][ i ];\n\n\t\t\t\tif ( vertexUvs !== undefined ) {\n\n\t\t\t\t\tthis.uvs2.push( vertexUvs[ 0 ], vertexUvs[ 1 ], vertexUvs[ 2 ] );\n\n\t\t\t\t} else {\n\n\t\t\t\t\tconsole.warn( 'THREE.DirectGeometry.fromGeometry(): Undefined vertexUv2 ', i );\n\n\t\t\t\t\tthis.uvs2.push( new Vector2(), new Vector2(), new Vector2() );\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t\t// morphs\n\n\t\t\tfor ( var j = 0; j < morphTargetsLength; j ++ ) {\n\n\t\t\t\tvar morphTarget = morphTargets[ j ].vertices;\n\n\t\t\t\tmorphTargetsPosition[ j ].push( morphTarget[ face.a ], morphTarget[ face.b ], morphTarget[ face.c ] );\n\n\t\t\t}\n\n\t\t\tfor ( var j = 0; j < morphNormalsLength; j ++ ) {\n\n\t\t\t\tvar morphNormal = morphNormals[ j ].vertexNormals[ i ];\n\n\t\t\t\tmorphTargetsNormal[ j ].push( morphNormal.a, morphNormal.b, morphNormal.c );\n\n\t\t\t}\n\n\t\t\t// skins\n\n\t\t\tif ( hasSkinIndices ) {\n\n\t\t\t\tthis.skinIndices.push( skinIndices[ face.a ], skinIndices[ face.b ], skinIndices[ face.c ] );\n\n\t\t\t}\n\n\t\t\tif ( hasSkinWeights ) {\n\n\t\t\t\tthis.skinWeights.push( skinWeights[ face.a ], skinWeights[ face.b ], skinWeights[ face.c ] );\n\n\t\t\t}\n\n\t\t}\n\n\t\tthis.computeGroups( geometry );\n\n\t\tthis.verticesNeedUpdate = geometry.verticesNeedUpdate;\n\t\tthis.normalsNeedUpdate = geometry.normalsNeedUpdate;\n\t\tthis.colorsNeedUpdate = geometry.colorsNeedUpdate;\n\t\tthis.uvsNeedUpdate = geometry.uvsNeedUpdate;\n\t\tthis.groupsNeedUpdate = geometry.groupsNeedUpdate;\n\n\t\treturn this;\n\n\t},\n\n\tdispose: function () {\n\n\t\tthis.dispatchEvent( { type: 'dispose' } );\n\n\t}\n\n} );\n\n\nexport { DirectGeometry };\n","import { Vector3 } from '../math/Vector3';\nimport { Box3 } from '../math/Box3';\nimport { EventDispatcher } from './EventDispatcher';\nimport { BufferAttribute, Float32Attribute } from './BufferAttribute';\nimport { Sphere } from '../math/Sphere';\nimport { DirectGeometry } from './DirectGeometry';\nimport { Object3D } from './Object3D';\nimport { Matrix4 } from '../math/Matrix4';\nimport { Matrix3 } from '../math/Matrix3';\nimport { _Math } from '../math/Math';\nimport { GeometryIdCount } from './Geometry';\n\n/**\n * @author alteredq / http://alteredqualia.com/\n * @author mrdoob / http://mrdoob.com/\n */\n\nfunction BufferGeometry() {\n\n\tObject.defineProperty( this, 'id', { value: GeometryIdCount() } );\n\n\tthis.uuid = _Math.generateUUID();\n\n\tthis.name = '';\n\tthis.type = 'BufferGeometry';\n\n\tthis.index = null;\n\tthis.attributes = {};\n\n\tthis.morphAttributes = {};\n\n\tthis.groups = [];\n\n\tthis.boundingBox = null;\n\tthis.boundingSphere = null;\n\n\tthis.drawRange = { start: 0, count: Infinity };\n\n}\n\nObject.assign( BufferGeometry.prototype, EventDispatcher.prototype, {\n\n\tisBufferGeometry: true,\n\n\tgetIndex: function () {\n\n\t\treturn this.index;\n\n\t},\n\n\tsetIndex: function ( index ) {\n\n\t\tthis.index = index;\n\n\t},\n\n\taddAttribute: function ( name, attribute ) {\n\n\t\tif ( (attribute && attribute.isBufferAttribute) === false && (attribute && attribute.isInterleavedBufferAttribute) === false ) {\n\n\t\t\tconsole.warn( 'THREE.BufferGeometry: .addAttribute() now expects ( name, attribute ).' );\n\n\t\t\tthis.addAttribute( name, new BufferAttribute( arguments[ 1 ], arguments[ 2 ] ) );\n\n\t\t\treturn;\n\n\t\t}\n\n\t\tif ( name === 'index' ) {\n\n\t\t\tconsole.warn( 'THREE.BufferGeometry.addAttribute: Use .setIndex() for index attribute.' );\n\t\t\tthis.setIndex( attribute );\n\n\t\t\treturn;\n\n\t\t}\n\n\t\tthis.attributes[ name ] = attribute;\n\n\t\treturn this;\n\n\t},\n\n\tgetAttribute: function ( name ) {\n\n\t\treturn this.attributes[ name ];\n\n\t},\n\n\tremoveAttribute: function ( name ) {\n\n\t\tdelete this.attributes[ name ];\n\n\t\treturn this;\n\n\t},\n\n\taddGroup: function ( start, count, materialIndex ) {\n\n\t\tthis.groups.push( {\n\n\t\t\tstart: start,\n\t\t\tcount: count,\n\t\t\tmaterialIndex: materialIndex !== undefined ? materialIndex : 0\n\n\t\t} );\n\n\t},\n\n\tclearGroups: function () {\n\n\t\tthis.groups = [];\n\n\t},\n\n\tsetDrawRange: function ( start, count ) {\n\n\t\tthis.drawRange.start = start;\n\t\tthis.drawRange.count = count;\n\n\t},\n\n\tapplyMatrix: function ( matrix ) {\n\n\t\tvar position = this.attributes.position;\n\n\t\tif ( position !== undefined ) {\n\n\t\t\tmatrix.applyToVector3Array( position.array );\n\t\t\tposition.needsUpdate = true;\n\n\t\t}\n\n\t\tvar normal = this.attributes.normal;\n\n\t\tif ( normal !== undefined ) {\n\n\t\t\tvar normalMatrix = new Matrix3().getNormalMatrix( matrix );\n\n\t\t\tnormalMatrix.applyToVector3Array( normal.array );\n\t\t\tnormal.needsUpdate = true;\n\n\t\t}\n\n\t\tif ( this.boundingBox !== null ) {\n\n\t\t\tthis.computeBoundingBox();\n\n\t\t}\n\n\t\tif ( this.boundingSphere !== null ) {\n\n\t\t\tthis.computeBoundingSphere();\n\n\t\t}\n\n\t\treturn this;\n\n\t},\n\n\trotateX: function () {\n\n\t\t// rotate geometry around world x-axis\n\n\t\tvar m1;\n\n\t\treturn function rotateX( angle ) {\n\n\t\t\tif ( m1 === undefined ) m1 = new Matrix4();\n\n\t\t\tm1.makeRotationX( angle );\n\n\t\t\tthis.applyMatrix( m1 );\n\n\t\t\treturn this;\n\n\t\t};\n\n\t}(),\n\n\trotateY: function () {\n\n\t\t// rotate geometry around world y-axis\n\n\t\tvar m1;\n\n\t\treturn function rotateY( angle ) {\n\n\t\t\tif ( m1 === undefined ) m1 = new Matrix4();\n\n\t\t\tm1.makeRotationY( angle );\n\n\t\t\tthis.applyMatrix( m1 );\n\n\t\t\treturn this;\n\n\t\t};\n\n\t}(),\n\n\trotateZ: function () {\n\n\t\t// rotate geometry around world z-axis\n\n\t\tvar m1;\n\n\t\treturn function rotateZ( angle ) {\n\n\t\t\tif ( m1 === undefined ) m1 = new Matrix4();\n\n\t\t\tm1.makeRotationZ( angle );\n\n\t\t\tthis.applyMatrix( m1 );\n\n\t\t\treturn this;\n\n\t\t};\n\n\t}(),\n\n\ttranslate: function () {\n\n\t\t// translate geometry\n\n\t\tvar m1;\n\n\t\treturn function translate( x, y, z ) {\n\n\t\t\tif ( m1 === undefined ) m1 = new Matrix4();\n\n\t\t\tm1.makeTranslation( x, y, z );\n\n\t\t\tthis.applyMatrix( m1 );\n\n\t\t\treturn this;\n\n\t\t};\n\n\t}(),\n\n\tscale: function () {\n\n\t\t// scale geometry\n\n\t\tvar m1;\n\n\t\treturn function scale( x, y, z ) {\n\n\t\t\tif ( m1 === undefined ) m1 = new Matrix4();\n\n\t\t\tm1.makeScale( x, y, z );\n\n\t\t\tthis.applyMatrix( m1 );\n\n\t\t\treturn this;\n\n\t\t};\n\n\t}(),\n\n\tlookAt: function () {\n\n\t\tvar obj;\n\n\t\treturn function lookAt( vector ) {\n\n\t\t\tif ( obj === undefined ) obj = new Object3D();\n\n\t\t\tobj.lookAt( vector );\n\n\t\t\tobj.updateMatrix();\n\n\t\t\tthis.applyMatrix( obj.matrix );\n\n\t\t};\n\n\t}(),\n\n\tcenter: function () {\n\n\t\tthis.computeBoundingBox();\n\n\t\tvar offset = this.boundingBox.getCenter().negate();\n\n\t\tthis.translate( offset.x, offset.y, offset.z );\n\n\t\treturn offset;\n\n\t},\n\n\tsetFromObject: function ( object ) {\n\n\t\t// console.log( 'THREE.BufferGeometry.setFromObject(). Converting', object, this );\n\n\t\tvar geometry = object.geometry;\n\n\t\tif ( (object && object.isPoints) || (object && object.isLine) ) {\n\n\t\t\tvar positions = new Float32Attribute( geometry.vertices.length * 3, 3 );\n\t\t\tvar colors = new Float32Attribute( geometry.colors.length * 3, 3 );\n\n\t\t\tthis.addAttribute( 'position', positions.copyVector3sArray( geometry.vertices ) );\n\t\t\tthis.addAttribute( 'color', colors.copyColorsArray( geometry.colors ) );\n\n\t\t\tif ( geometry.lineDistances && geometry.lineDistances.length === geometry.vertices.length ) {\n\n\t\t\t\tvar lineDistances = new Float32Attribute( geometry.lineDistances.length, 1 );\n\n\t\t\t\tthis.addAttribute( 'lineDistance', lineDistances.copyArray( geometry.lineDistances ) );\n\n\t\t\t}\n\n\t\t\tif ( geometry.boundingSphere !== null ) {\n\n\t\t\t\tthis.boundingSphere = geometry.boundingSphere.clone();\n\n\t\t\t}\n\n\t\t\tif ( geometry.boundingBox !== null ) {\n\n\t\t\t\tthis.boundingBox = geometry.boundingBox.clone();\n\n\t\t\t}\n\n\t\t} else if ( (object && object.isMesh) ) {\n\n\t\t\tif ( (geometry && geometry.isGeometry) ) {\n\n\t\t\t\tthis.fromGeometry( geometry );\n\n\t\t\t}\n\n\t\t}\n\n\t\treturn this;\n\n\t},\n\n\tupdateFromObject: function ( object ) {\n\n\t\tvar geometry = object.geometry;\n\n\t\tif ( (object && object.isMesh) ) {\n\n\t\t\tvar direct = geometry.__directGeometry;\n\n\t\t\tif ( geometry.elementsNeedUpdate === true ) {\n\n\t\t\t\tdirect = undefined;\n\t\t\t\tgeometry.elementsNeedUpdate = false;\n\n\t\t\t}\n\n\t\t\tif ( direct === undefined ) {\n\n\t\t\t\treturn this.fromGeometry( geometry );\n\n\t\t\t}\n\n\t\t\tdirect.verticesNeedUpdate = geometry.verticesNeedUpdate;\n\t\t\tdirect.normalsNeedUpdate = geometry.normalsNeedUpdate;\n\t\t\tdirect.colorsNeedUpdate = geometry.colorsNeedUpdate;\n\t\t\tdirect.uvsNeedUpdate = geometry.uvsNeedUpdate;\n\t\t\tdirect.groupsNeedUpdate = geometry.groupsNeedUpdate;\n\n\t\t\tgeometry.verticesNeedUpdate = false;\n\t\t\tgeometry.normalsNeedUpdate = false;\n\t\t\tgeometry.colorsNeedUpdate = false;\n\t\t\tgeometry.uvsNeedUpdate = false;\n\t\t\tgeometry.groupsNeedUpdate = false;\n\n\t\t\tgeometry = direct;\n\n\t\t}\n\n\t\tvar attribute;\n\n\t\tif ( geometry.verticesNeedUpdate === true ) {\n\n\t\t\tattribute = this.attributes.position;\n\n\t\t\tif ( attribute !== undefined ) {\n\n\t\t\t\tattribute.copyVector3sArray( geometry.vertices );\n\t\t\t\tattribute.needsUpdate = true;\n\n\t\t\t}\n\n\t\t\tgeometry.verticesNeedUpdate = false;\n\n\t\t}\n\n\t\tif ( geometry.normalsNeedUpdate === true ) {\n\n\t\t\tattribute = this.attributes.normal;\n\n\t\t\tif ( attribute !== undefined ) {\n\n\t\t\t\tattribute.copyVector3sArray( geometry.normals );\n\t\t\t\tattribute.needsUpdate = true;\n\n\t\t\t}\n\n\t\t\tgeometry.normalsNeedUpdate = false;\n\n\t\t}\n\n\t\tif ( geometry.colorsNeedUpdate === true ) {\n\n\t\t\tattribute = this.attributes.color;\n\n\t\t\tif ( attribute !== undefined ) {\n\n\t\t\t\tattribute.copyColorsArray( geometry.colors );\n\t\t\t\tattribute.needsUpdate = true;\n\n\t\t\t}\n\n\t\t\tgeometry.colorsNeedUpdate = false;\n\n\t\t}\n\n\t\tif ( geometry.uvsNeedUpdate ) {\n\n\t\t\tattribute = this.attributes.uv;\n\n\t\t\tif ( attribute !== undefined ) {\n\n\t\t\t\tattribute.copyVector2sArray( geometry.uvs );\n\t\t\t\tattribute.needsUpdate = true;\n\n\t\t\t}\n\n\t\t\tgeometry.uvsNeedUpdate = false;\n\n\t\t}\n\n\t\tif ( geometry.lineDistancesNeedUpdate ) {\n\n\t\t\tattribute = this.attributes.lineDistance;\n\n\t\t\tif ( attribute !== undefined ) {\n\n\t\t\t\tattribute.copyArray( geometry.lineDistances );\n\t\t\t\tattribute.needsUpdate = true;\n\n\t\t\t}\n\n\t\t\tgeometry.lineDistancesNeedUpdate = false;\n\n\t\t}\n\n\t\tif ( geometry.groupsNeedUpdate ) {\n\n\t\t\tgeometry.computeGroups( object.geometry );\n\t\t\tthis.groups = geometry.groups;\n\n\t\t\tgeometry.groupsNeedUpdate = false;\n\n\t\t}\n\n\t\treturn this;\n\n\t},\n\n\tfromGeometry: function ( geometry ) {\n\n\t\tgeometry.__directGeometry = new DirectGeometry().fromGeometry( geometry );\n\n\t\treturn this.fromDirectGeometry( geometry.__directGeometry );\n\n\t},\n\n\tfromDirectGeometry: function ( geometry ) {\n\n\t\tvar positions = new Float32Array( geometry.vertices.length * 3 );\n\t\tthis.addAttribute( 'position', new BufferAttribute( positions, 3 ).copyVector3sArray( geometry.vertices ) );\n\n\t\tif ( geometry.normals.length > 0 ) {\n\n\t\t\tvar normals = new Float32Array( geometry.normals.length * 3 );\n\t\t\tthis.addAttribute( 'normal', new BufferAttribute( normals, 3 ).copyVector3sArray( geometry.normals ) );\n\n\t\t}\n\n\t\tif ( geometry.colors.length > 0 ) {\n\n\t\t\tvar colors = new Float32Array( geometry.colors.length * 3 );\n\t\t\tthis.addAttribute( 'color', new BufferAttribute( colors, 3 ).copyColorsArray( geometry.colors ) );\n\n\t\t}\n\n\t\tif ( geometry.uvs.length > 0 ) {\n\n\t\t\tvar uvs = new Float32Array( geometry.uvs.length * 2 );\n\t\t\tthis.addAttribute( 'uv', new BufferAttribute( uvs, 2 ).copyVector2sArray( geometry.uvs ) );\n\n\t\t}\n\n\t\tif ( geometry.uvs2.length > 0 ) {\n\n\t\t\tvar uvs2 = new Float32Array( geometry.uvs2.length * 2 );\n\t\t\tthis.addAttribute( 'uv2', new BufferAttribute( uvs2, 2 ).copyVector2sArray( geometry.uvs2 ) );\n\n\t\t}\n\n\t\tif ( geometry.indices.length > 0 ) {\n\n\t\t\tvar TypeArray = geometry.vertices.length > 65535 ? Uint32Array : Uint16Array;\n\t\t\tvar indices = new TypeArray( geometry.indices.length * 3 );\n\t\t\tthis.setIndex( new BufferAttribute( indices, 1 ).copyIndicesArray( geometry.indices ) );\n\n\t\t}\n\n\t\t// groups\n\n\t\tthis.groups = geometry.groups;\n\n\t\t// morphs\n\n\t\tfor ( var name in geometry.morphTargets ) {\n\n\t\t\tvar array = [];\n\t\t\tvar morphTargets = geometry.morphTargets[ name ];\n\n\t\t\tfor ( var i = 0, l = morphTargets.length; i < l; i ++ ) {\n\n\t\t\t\tvar morphTarget = morphTargets[ i ];\n\n\t\t\t\tvar attribute = new Float32Attribute( morphTarget.length * 3, 3 );\n\n\t\t\t\tarray.push( attribute.copyVector3sArray( morphTarget ) );\n\n\t\t\t}\n\n\t\t\tthis.morphAttributes[ name ] = array;\n\n\t\t}\n\n\t\t// skinning\n\n\t\tif ( geometry.skinIndices.length > 0 ) {\n\n\t\t\tvar skinIndices = new Float32Attribute( geometry.skinIndices.length * 4, 4 );\n\t\t\tthis.addAttribute( 'skinIndex', skinIndices.copyVector4sArray( geometry.skinIndices ) );\n\n\t\t}\n\n\t\tif ( geometry.skinWeights.length > 0 ) {\n\n\t\t\tvar skinWeights = new Float32Attribute( geometry.skinWeights.length * 4, 4 );\n\t\t\tthis.addAttribute( 'skinWeight', skinWeights.copyVector4sArray( geometry.skinWeights ) );\n\n\t\t}\n\n\t\t//\n\n\t\tif ( geometry.boundingSphere !== null ) {\n\n\t\t\tthis.boundingSphere = geometry.boundingSphere.clone();\n\n\t\t}\n\n\t\tif ( geometry.boundingBox !== null ) {\n\n\t\t\tthis.boundingBox = geometry.boundingBox.clone();\n\n\t\t}\n\n\t\treturn this;\n\n\t},\n\n\tcomputeBoundingBox: function () {\n\n\t\tif ( this.boundingBox === null ) {\n\n\t\t\tthis.boundingBox = new Box3();\n\n\t\t}\n\n\t\tvar positions = this.attributes.position.array;\n\n\t\tif ( positions !== undefined ) {\n\n\t\t\tthis.boundingBox.setFromArray( positions );\n\n\t\t} else {\n\n\t\t\tthis.boundingBox.makeEmpty();\n\n\t\t}\n\n\t\tif ( isNaN( this.boundingBox.min.x ) || isNaN( this.boundingBox.min.y ) || isNaN( this.boundingBox.min.z ) ) {\n\n\t\t\tconsole.error( 'THREE.BufferGeometry.computeBoundingBox: Computed min/max have NaN values. The \"position\" attribute is likely to have NaN values.', this );\n\n\t\t}\n\n\t},\n\n\tcomputeBoundingSphere: function () {\n\n\t\tvar box = new Box3();\n\t\tvar vector = new Vector3();\n\n\t\treturn function computeBoundingSphere() {\n\n\t\t\tif ( this.boundingSphere === null ) {\n\n\t\t\t\tthis.boundingSphere = new Sphere();\n\n\t\t\t}\n\n\t\t\tvar positions = this.attributes.position;\n\n\t\t\tif ( positions ) {\n\n\t\t\t\tvar array = positions.array;\n\t\t\t\tvar center = this.boundingSphere.center;\n\n\t\t\t\tbox.setFromArray( array );\n\t\t\t\tbox.getCenter( center );\n\n\t\t\t\t// hoping to find a boundingSphere with a radius smaller than the\n\t\t\t\t// boundingSphere of the boundingBox: sqrt(3) smaller in the best case\n\n\t\t\t\tvar maxRadiusSq = 0;\n\n\t\t\t\tfor ( var i = 0, il = array.length; i < il; i += 3 ) {\n\n\t\t\t\t\tvector.fromArray( array, i );\n\t\t\t\t\tmaxRadiusSq = Math.max( maxRadiusSq, center.distanceToSquared( vector ) );\n\n\t\t\t\t}\n\n\t\t\t\tthis.boundingSphere.radius = Math.sqrt( maxRadiusSq );\n\n\t\t\t\tif ( isNaN( this.boundingSphere.radius ) ) {\n\n\t\t\t\t\tconsole.error( 'THREE.BufferGeometry.computeBoundingSphere(): Computed radius is NaN. The \"position\" attribute is likely to have NaN values.', this );\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t};\n\n\t}(),\n\n\tcomputeFaceNormals: function () {\n\n\t\t// backwards compatibility\n\n\t},\n\n\tcomputeVertexNormals: function () {\n\n\t\tvar index = this.index;\n\t\tvar attributes = this.attributes;\n\t\tvar groups = this.groups;\n\n\t\tif ( attributes.position ) {\n\n\t\t\tvar positions = attributes.position.array;\n\n\t\t\tif ( attributes.normal === undefined ) {\n\n\t\t\t\tthis.addAttribute( 'normal', new BufferAttribute( new Float32Array( positions.length ), 3 ) );\n\n\t\t\t} else {\n\n\t\t\t\t// reset existing normals to zero\n\n\t\t\t\tvar array = attributes.normal.array;\n\n\t\t\t\tfor ( var i = 0, il = array.length; i < il; i ++ ) {\n\n\t\t\t\t\tarray[ i ] = 0;\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t\tvar normals = attributes.normal.array;\n\n\t\t\tvar vA, vB, vC,\n\n\t\t\tpA = new Vector3(),\n\t\t\tpB = new Vector3(),\n\t\t\tpC = new Vector3(),\n\n\t\t\tcb = new Vector3(),\n\t\t\tab = new Vector3();\n\n\t\t\t// indexed elements\n\n\t\t\tif ( index ) {\n\n\t\t\t\tvar indices = index.array;\n\n\t\t\t\tif ( groups.length === 0 ) {\n\n\t\t\t\t\tthis.addGroup( 0, indices.length );\n\n\t\t\t\t}\n\n\t\t\t\tfor ( var j = 0, jl = groups.length; j < jl; ++ j ) {\n\n\t\t\t\t\tvar group = groups[ j ];\n\n\t\t\t\t\tvar start = group.start;\n\t\t\t\t\tvar count = group.count;\n\n\t\t\t\t\tfor ( var i = start, il = start + count; i < il; i += 3 ) {\n\n\t\t\t\t\t\tvA = indices[ i + 0 ] * 3;\n\t\t\t\t\t\tvB = indices[ i + 1 ] * 3;\n\t\t\t\t\t\tvC = indices[ i + 2 ] * 3;\n\n\t\t\t\t\t\tpA.fromArray( positions, vA );\n\t\t\t\t\t\tpB.fromArray( positions, vB );\n\t\t\t\t\t\tpC.fromArray( positions, vC );\n\n\t\t\t\t\t\tcb.subVectors( pC, pB );\n\t\t\t\t\t\tab.subVectors( pA, pB );\n\t\t\t\t\t\tcb.cross( ab );\n\n\t\t\t\t\t\tnormals[ vA ] += cb.x;\n\t\t\t\t\t\tnormals[ vA + 1 ] += cb.y;\n\t\t\t\t\t\tnormals[ vA + 2 ] += cb.z;\n\n\t\t\t\t\t\tnormals[ vB ] += cb.x;\n\t\t\t\t\t\tnormals[ vB + 1 ] += cb.y;\n\t\t\t\t\t\tnormals[ vB + 2 ] += cb.z;\n\n\t\t\t\t\t\tnormals[ vC ] += cb.x;\n\t\t\t\t\t\tnormals[ vC + 1 ] += cb.y;\n\t\t\t\t\t\tnormals[ vC + 2 ] += cb.z;\n\n\t\t\t\t\t}\n\n\t\t\t\t}\n\n\t\t\t} else {\n\n\t\t\t\t// non-indexed elements (unconnected triangle soup)\n\n\t\t\t\tfor ( var i = 0, il = positions.length; i < il; i += 9 ) {\n\n\t\t\t\t\tpA.fromArray( positions, i );\n\t\t\t\t\tpB.fromArray( positions, i + 3 );\n\t\t\t\t\tpC.fromArray( positions, i + 6 );\n\n\t\t\t\t\tcb.subVectors( pC, pB );\n\t\t\t\t\tab.subVectors( pA, pB );\n\t\t\t\t\tcb.cross( ab );\n\n\t\t\t\t\tnormals[ i ] = cb.x;\n\t\t\t\t\tnormals[ i + 1 ] = cb.y;\n\t\t\t\t\tnormals[ i + 2 ] = cb.z;\n\n\t\t\t\t\tnormals[ i + 3 ] = cb.x;\n\t\t\t\t\tnormals[ i + 4 ] = cb.y;\n\t\t\t\t\tnormals[ i + 5 ] = cb.z;\n\n\t\t\t\t\tnormals[ i + 6 ] = cb.x;\n\t\t\t\t\tnormals[ i + 7 ] = cb.y;\n\t\t\t\t\tnormals[ i + 8 ] = cb.z;\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t\tthis.normalizeNormals();\n\n\t\t\tattributes.normal.needsUpdate = true;\n\n\t\t}\n\n\t},\n\n\tmerge: function ( geometry, offset ) {\n\n\t\tif ( (geometry && geometry.isBufferGeometry) === false ) {\n\n\t\t\tconsole.error( 'THREE.BufferGeometry.merge(): geometry not an instance of THREE.BufferGeometry.', geometry );\n\t\t\treturn;\n\n\t\t}\n\n\t\tif ( offset === undefined ) offset = 0;\n\n\t\tvar attributes = this.attributes;\n\n\t\tfor ( var key in attributes ) {\n\n\t\t\tif ( geometry.attributes[ key ] === undefined ) continue;\n\n\t\t\tvar attribute1 = attributes[ key ];\n\t\t\tvar attributeArray1 = attribute1.array;\n\n\t\t\tvar attribute2 = geometry.attributes[ key ];\n\t\t\tvar attributeArray2 = attribute2.array;\n\n\t\t\tvar attributeSize = attribute2.itemSize;\n\n\t\t\tfor ( var i = 0, j = attributeSize * offset; i < attributeArray2.length; i ++, j ++ ) {\n\n\t\t\t\tattributeArray1[ j ] = attributeArray2[ i ];\n\n\t\t\t}\n\n\t\t}\n\n\t\treturn this;\n\n\t},\n\n\tnormalizeNormals: function () {\n\n\t\tvar normals = this.attributes.normal.array;\n\n\t\tvar x, y, z, n;\n\n\t\tfor ( var i = 0, il = normals.length; i < il; i += 3 ) {\n\n\t\t\tx = normals[ i ];\n\t\t\ty = normals[ i + 1 ];\n\t\t\tz = normals[ i + 2 ];\n\n\t\t\tn = 1.0 / Math.sqrt( x * x + y * y + z * z );\n\n\t\t\tnormals[ i ] *= n;\n\t\t\tnormals[ i + 1 ] *= n;\n\t\t\tnormals[ i + 2 ] *= n;\n\n\t\t}\n\n\t},\n\n\ttoNonIndexed: function () {\n\n\t\tif ( this.index === null ) {\n\n\t\t\tconsole.warn( 'THREE.BufferGeometry.toNonIndexed(): Geometry is already non-indexed.' );\n\t\t\treturn this;\n\n\t\t}\n\n\t\tvar geometry2 = new BufferGeometry();\n\n\t\tvar indices = this.index.array;\n\t\tvar attributes = this.attributes;\n\n\t\tfor ( var name in attributes ) {\n\n\t\t\tvar attribute = attributes[ name ];\n\n\t\t\tvar array = attribute.array;\n\t\t\tvar itemSize = attribute.itemSize;\n\n\t\t\tvar array2 = new array.constructor( indices.length * itemSize );\n\n\t\t\tvar index = 0, index2 = 0;\n\n\t\t\tfor ( var i = 0, l = indices.length; i < l; i ++ ) {\n\n\t\t\t\tindex = indices[ i ] * itemSize;\n\n\t\t\t\tfor ( var j = 0; j < itemSize; j ++ ) {\n\n\t\t\t\t\tarray2[ index2 ++ ] = array[ index ++ ];\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t\tgeometry2.addAttribute( name, new BufferAttribute( array2, itemSize ) );\n\n\t\t}\n\n\t\treturn geometry2;\n\n\t},\n\n\ttoJSON: function () {\n\n\t\tvar data = {\n\t\t\tmetadata: {\n\t\t\t\tversion: 4.4,\n\t\t\t\ttype: 'BufferGeometry',\n\t\t\t\tgenerator: 'BufferGeometry.toJSON'\n\t\t\t}\n\t\t};\n\n\t\t// standard BufferGeometry serialization\n\n\t\tdata.uuid = this.uuid;\n\t\tdata.type = this.type;\n\t\tif ( this.name !== '' ) data.name = this.name;\n\n\t\tif ( this.parameters !== undefined ) {\n\n\t\t\tvar parameters = this.parameters;\n\n\t\t\tfor ( var key in parameters ) {\n\n\t\t\t\tif ( parameters[ key ] !== undefined ) data[ key ] = parameters[ key ];\n\n\t\t\t}\n\n\t\t\treturn data;\n\n\t\t}\n\n\t\tdata.data = { attributes: {} };\n\n\t\tvar index = this.index;\n\n\t\tif ( index !== null ) {\n\n\t\t\tvar array = Array.prototype.slice.call( index.array );\n\n\t\t\tdata.data.index = {\n\t\t\t\ttype: index.array.constructor.name,\n\t\t\t\tarray: array\n\t\t\t};\n\n\t\t}\n\n\t\tvar attributes = this.attributes;\n\n\t\tfor ( var key in attributes ) {\n\n\t\t\tvar attribute = attributes[ key ];\n\n\t\t\tvar array = Array.prototype.slice.call( attribute.array );\n\n\t\t\tdata.data.attributes[ key ] = {\n\t\t\t\titemSize: attribute.itemSize,\n\t\t\t\ttype: attribute.array.constructor.name,\n\t\t\t\tarray: array,\n\t\t\t\tnormalized: attribute.normalized\n\t\t\t};\n\n\t\t}\n\n\t\tvar groups = this.groups;\n\n\t\tif ( groups.length > 0 ) {\n\n\t\t\tdata.data.groups = JSON.parse( JSON.stringify( groups ) );\n\n\t\t}\n\n\t\tvar boundingSphere = this.boundingSphere;\n\n\t\tif ( boundingSphere !== null ) {\n\n\t\t\tdata.data.boundingSphere = {\n\t\t\t\tcenter: boundingSphere.center.toArray(),\n\t\t\t\tradius: boundingSphere.radius\n\t\t\t};\n\n\t\t}\n\n\t\treturn data;\n\n\t},\n\n\tclone: function () {\n\n\t\t/*\n\t\t// Handle primitives\n\n\t\tvar parameters = this.parameters;\n\n\t\tif ( parameters !== undefined ) {\n\n\t\t\tvar values = [];\n\n\t\t\tfor ( var key in parameters ) {\n\n\t\t\t\tvalues.push( parameters[ key ] );\n\n\t\t\t}\n\n\t\t\tvar geometry = Object.create( this.constructor.prototype );\n\t\t\tthis.constructor.apply( geometry, values );\n\t\t\treturn geometry;\n\n\t\t}\n\n\t\treturn new this.constructor().copy( this );\n\t\t*/\n\n\t\treturn new BufferGeometry().copy( this );\n\n\t},\n\n\tcopy: function ( source ) {\n\n\t\tvar index = source.index;\n\n\t\tif ( index !== null ) {\n\n\t\t\tthis.setIndex( index.clone() );\n\n\t\t}\n\n\t\tvar attributes = source.attributes;\n\n\t\tfor ( var name in attributes ) {\n\n\t\t\tvar attribute = attributes[ name ];\n\t\t\tthis.addAttribute( name, attribute.clone() );\n\n\t\t}\n\n\t\tvar groups = source.groups;\n\n\t\tfor ( var i = 0, l = groups.length; i < l; i ++ ) {\n\n\t\t\tvar group = groups[ i ];\n\t\t\tthis.addGroup( group.start, group.count, group.materialIndex );\n\n\t\t}\n\n\t\treturn this;\n\n\t},\n\n\tdispose: function () {\n\n\t\tthis.dispatchEvent( { type: 'dispose' } );\n\n\t}\n\n} );\n\nBufferGeometry.MaxIndex = 65535;\n\n\nexport { BufferGeometry };\n","import { Vector3 } from '../math/Vector3';\nimport { Vector2 } from '../math/Vector2';\nimport { Sphere } from '../math/Sphere';\nimport { Ray } from '../math/Ray';\nimport { Matrix4 } from '../math/Matrix4';\nimport { Object3D } from '../core/Object3D';\nimport { Triangle } from '../math/Triangle';\nimport { Face3 } from '../core/Face3';\nimport { DoubleSide, BackSide, TrianglesDrawMode } from '../constants';\nimport { MeshBasicMaterial } from '../materials/MeshBasicMaterial';\nimport { BufferGeometry } from '../core/BufferGeometry';\n\n/**\n * @author mrdoob / http://mrdoob.com/\n * @author alteredq / http://alteredqualia.com/\n * @author mikael emtinger / http://gomo.se/\n * @author jonobr1 / http://jonobr1.com/\n */\n\nfunction Mesh( geometry, material ) {\n\n\tObject3D.call( this );\n\n\tthis.type = 'Mesh';\n\n\tthis.geometry = geometry !== undefined ? geometry : new BufferGeometry();\n\tthis.material = material !== undefined ? material : new MeshBasicMaterial( { color: Math.random() * 0xffffff } );\n\n\tthis.drawMode = TrianglesDrawMode;\n\n\tthis.updateMorphTargets();\n\n}\n\nMesh.prototype = Object.assign( Object.create( Object3D.prototype ), {\n\n\tconstructor: Mesh,\n\n\tisMesh: true,\n\n\tsetDrawMode: function ( value ) {\n\n\t\tthis.drawMode = value;\n\n\t},\n\n\tcopy: function ( source ) {\n\n\t\tObject3D.prototype.copy.call( this, source );\n\n\t\tthis.drawMode = source.drawMode;\n\n\t\treturn this;\n\n\t},\n\n\tupdateMorphTargets: function () {\n\n\t\tvar morphTargets = this.geometry.morphTargets;\n\n\t\tif ( morphTargets !== undefined && morphTargets.length > 0 ) {\n\n\t\t\tthis.morphTargetInfluences = [];\n\t\t\tthis.morphTargetDictionary = {};\n\n\t\t\tfor ( var m = 0, ml = morphTargets.length; m < ml; m ++ ) {\n\n\t\t\t\tthis.morphTargetInfluences.push( 0 );\n\t\t\t\tthis.morphTargetDictionary[ morphTargets[ m ].name ] = m;\n\n\t\t\t}\n\n\t\t}\n\n\t},\n\n\traycast: ( function () {\n\n\t\tvar inverseMatrix = new Matrix4();\n\t\tvar ray = new Ray();\n\t\tvar sphere = new Sphere();\n\n\t\tvar vA = new Vector3();\n\t\tvar vB = new Vector3();\n\t\tvar vC = new Vector3();\n\n\t\tvar tempA = new Vector3();\n\t\tvar tempB = new Vector3();\n\t\tvar tempC = new Vector3();\n\n\t\tvar uvA = new Vector2();\n\t\tvar uvB = new Vector2();\n\t\tvar uvC = new Vector2();\n\n\t\tvar barycoord = new Vector3();\n\n\t\tvar intersectionPoint = new Vector3();\n\t\tvar intersectionPointWorld = new Vector3();\n\n\t\tfunction uvIntersection( point, p1, p2, p3, uv1, uv2, uv3 ) {\n\n\t\t\tTriangle.barycoordFromPoint( point, p1, p2, p3, barycoord );\n\n\t\t\tuv1.multiplyScalar( barycoord.x );\n\t\t\tuv2.multiplyScalar( barycoord.y );\n\t\t\tuv3.multiplyScalar( barycoord.z );\n\n\t\t\tuv1.add( uv2 ).add( uv3 );\n\n\t\t\treturn uv1.clone();\n\n\t\t}\n\n\t\tfunction checkIntersection( object, raycaster, ray, pA, pB, pC, point ) {\n\n\t\t\tvar intersect;\n\t\t\tvar material = object.material;\n\n\t\t\tif ( material.side === BackSide ) {\n\n\t\t\t\tintersect = ray.intersectTriangle( pC, pB, pA, true, point );\n\n\t\t\t} else {\n\n\t\t\t\tintersect = ray.intersectTriangle( pA, pB, pC, material.side !== DoubleSide, point );\n\n\t\t\t}\n\n\t\t\tif ( intersect === null ) return null;\n\n\t\t\tintersectionPointWorld.copy( point );\n\t\t\tintersectionPointWorld.applyMatrix4( object.matrixWorld );\n\n\t\t\tvar distance = raycaster.ray.origin.distanceTo( intersectionPointWorld );\n\n\t\t\tif ( distance < raycaster.near || distance > raycaster.far ) return null;\n\n\t\t\treturn {\n\t\t\t\tdistance: distance,\n\t\t\t\tpoint: intersectionPointWorld.clone(),\n\t\t\t\tobject: object\n\t\t\t};\n\n\t\t}\n\n\t\tfunction checkBufferGeometryIntersection( object, raycaster, ray, positions, uvs, a, b, c ) {\n\n\t\t\tvA.fromArray( positions, a * 3 );\n\t\t\tvB.fromArray( positions, b * 3 );\n\t\t\tvC.fromArray( positions, c * 3 );\n\n\t\t\tvar intersection = checkIntersection( object, raycaster, ray, vA, vB, vC, intersectionPoint );\n\n\t\t\tif ( intersection ) {\n\n\t\t\t\tif ( uvs ) {\n\n\t\t\t\t\tuvA.fromArray( uvs, a * 2 );\n\t\t\t\t\tuvB.fromArray( uvs, b * 2 );\n\t\t\t\t\tuvC.fromArray( uvs, c * 2 );\n\n\t\t\t\t\tintersection.uv = uvIntersection( intersectionPoint, vA, vB, vC, uvA, uvB, uvC );\n\n\t\t\t\t}\n\n\t\t\t\tintersection.face = new Face3( a, b, c, Triangle.normal( vA, vB, vC ) );\n\t\t\t\tintersection.faceIndex = a;\n\n\t\t\t}\n\n\t\t\treturn intersection;\n\n\t\t}\n\n\t\treturn function raycast( raycaster, intersects ) {\n\n\t\t\tvar geometry = this.geometry;\n\t\t\tvar material = this.material;\n\t\t\tvar matrixWorld = this.matrixWorld;\n\n\t\t\tif ( material === undefined ) return;\n\n\t\t\t// Checking boundingSphere distance to ray\n\n\t\t\tif ( geometry.boundingSphere === null ) geometry.computeBoundingSphere();\n\n\t\t\tsphere.copy( geometry.boundingSphere );\n\t\t\tsphere.applyMatrix4( matrixWorld );\n\n\t\t\tif ( raycaster.ray.intersectsSphere( sphere ) === false ) return;\n\n\t\t\t//\n\n\t\t\tinverseMatrix.getInverse( matrixWorld );\n\t\t\tray.copy( raycaster.ray ).applyMatrix4( inverseMatrix );\n\n\t\t\t// Check boundingBox before continuing\n\n\t\t\tif ( geometry.boundingBox !== null ) {\n\n\t\t\t\tif ( ray.intersectsBox( geometry.boundingBox ) === false ) return;\n\n\t\t\t}\n\n\t\t\tvar uvs, intersection;\n\n\t\t\tif ( (geometry && geometry.isBufferGeometry) ) {\n\n\t\t\t\tvar a, b, c;\n\t\t\t\tvar index = geometry.index;\n\t\t\t\tvar attributes = geometry.attributes;\n\t\t\t\tvar positions = attributes.position.array;\n\n\t\t\t\tif ( attributes.uv !== undefined ) {\n\n\t\t\t\t\tuvs = attributes.uv.array;\n\n\t\t\t\t}\n\n\t\t\t\tif ( index !== null ) {\n\n\t\t\t\t\tvar indices = index.array;\n\n\t\t\t\t\tfor ( var i = 0, l = indices.length; i < l; i += 3 ) {\n\n\t\t\t\t\t\ta = indices[ i ];\n\t\t\t\t\t\tb = indices[ i + 1 ];\n\t\t\t\t\t\tc = indices[ i + 2 ];\n\n\t\t\t\t\t\tintersection = checkBufferGeometryIntersection( this, raycaster, ray, positions, uvs, a, b, c );\n\n\t\t\t\t\t\tif ( intersection ) {\n\n\t\t\t\t\t\t\tintersection.faceIndex = Math.floor( i / 3 ); // triangle number in indices buffer semantics\n\t\t\t\t\t\t\tintersects.push( intersection );\n\n\t\t\t\t\t\t}\n\n\t\t\t\t\t}\n\n\t\t\t\t} else {\n\n\n\t\t\t\t\tfor ( var i = 0, l = positions.length; i < l; i += 9 ) {\n\n\t\t\t\t\t\ta = i / 3;\n\t\t\t\t\t\tb = a + 1;\n\t\t\t\t\t\tc = a + 2;\n\n\t\t\t\t\t\tintersection = checkBufferGeometryIntersection( this, raycaster, ray, positions, uvs, a, b, c );\n\n\t\t\t\t\t\tif ( intersection ) {\n\n\t\t\t\t\t\t\tintersection.index = a; // triangle number in positions buffer semantics\n\t\t\t\t\t\t\tintersects.push( intersection );\n\n\t\t\t\t\t\t}\n\n\t\t\t\t\t}\n\n\t\t\t\t}\n\n\t\t\t} else if ( (geometry && geometry.isGeometry) ) {\n\n\t\t\t\tvar fvA, fvB, fvC;\n\t\t\t\tvar isFaceMaterial = (material && material.isMultiMaterial);\n\t\t\t\tvar materials = isFaceMaterial === true ? material.materials : null;\n\n\t\t\t\tvar vertices = geometry.vertices;\n\t\t\t\tvar faces = geometry.faces;\n\t\t\t\tvar faceVertexUvs = geometry.faceVertexUvs[ 0 ];\n\t\t\t\tif ( faceVertexUvs.length > 0 ) uvs = faceVertexUvs;\n\n\t\t\t\tfor ( var f = 0, fl = faces.length; f < fl; f ++ ) {\n\n\t\t\t\t\tvar face = faces[ f ];\n\t\t\t\t\tvar faceMaterial = isFaceMaterial === true ? materials[ face.materialIndex ] : material;\n\n\t\t\t\t\tif ( faceMaterial === undefined ) continue;\n\n\t\t\t\t\tfvA = vertices[ face.a ];\n\t\t\t\t\tfvB = vertices[ face.b ];\n\t\t\t\t\tfvC = vertices[ face.c ];\n\n\t\t\t\t\tif ( faceMaterial.morphTargets === true ) {\n\n\t\t\t\t\t\tvar morphTargets = geometry.morphTargets;\n\t\t\t\t\t\tvar morphInfluences = this.morphTargetInfluences;\n\n\t\t\t\t\t\tvA.set( 0, 0, 0 );\n\t\t\t\t\t\tvB.set( 0, 0, 0 );\n\t\t\t\t\t\tvC.set( 0, 0, 0 );\n\n\t\t\t\t\t\tfor ( var t = 0, tl = morphTargets.length; t < tl; t ++ ) {\n\n\t\t\t\t\t\t\tvar influence = morphInfluences[ t ];\n\n\t\t\t\t\t\t\tif ( influence === 0 ) continue;\n\n\t\t\t\t\t\t\tvar targets = morphTargets[ t ].vertices;\n\n\t\t\t\t\t\t\tvA.addScaledVector( tempA.subVectors( targets[ face.a ], fvA ), influence );\n\t\t\t\t\t\t\tvB.addScaledVector( tempB.subVectors( targets[ face.b ], fvB ), influence );\n\t\t\t\t\t\t\tvC.addScaledVector( tempC.subVectors( targets[ face.c ], fvC ), influence );\n\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\tvA.add( fvA );\n\t\t\t\t\t\tvB.add( fvB );\n\t\t\t\t\t\tvC.add( fvC );\n\n\t\t\t\t\t\tfvA = vA;\n\t\t\t\t\t\tfvB = vB;\n\t\t\t\t\t\tfvC = vC;\n\n\t\t\t\t\t}\n\n\t\t\t\t\tintersection = checkIntersection( this, raycaster, ray, fvA, fvB, fvC, intersectionPoint );\n\n\t\t\t\t\tif ( intersection ) {\n\n\t\t\t\t\t\tif ( uvs ) {\n\n\t\t\t\t\t\t\tvar uvs_f = uvs[ f ];\n\t\t\t\t\t\t\tuvA.copy( uvs_f[ 0 ] );\n\t\t\t\t\t\t\tuvB.copy( uvs_f[ 1 ] );\n\t\t\t\t\t\t\tuvC.copy( uvs_f[ 2 ] );\n\n\t\t\t\t\t\t\tintersection.uv = uvIntersection( intersectionPoint, fvA, fvB, fvC, uvA, uvB, uvC );\n\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\tintersection.face = face;\n\t\t\t\t\t\tintersection.faceIndex = f;\n\t\t\t\t\t\tintersects.push( intersection );\n\n\t\t\t\t\t}\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t};\n\n\t}() ),\n\n\tclone: function () {\n\n\t\treturn new this.constructor( this.geometry, this.material ).copy( this );\n\n\t}\n\n} );\n\n\nexport { Mesh };\n","import { BufferGeometry } from '../core/BufferGeometry';\nimport { Vector3 } from '../math/Vector3';\nimport { BufferAttribute } from '../core/BufferAttribute';\n\n/**\n * @author Mugen87 / https://github.com/Mugen87\n */\n\nfunction BoxBufferGeometry( width, height, depth, widthSegments, heightSegments, depthSegments ) {\n\n\tBufferGeometry.call( this );\n\n\tthis.type = 'BoxBufferGeometry';\n\n\tthis.parameters = {\n\t\twidth: width,\n\t\theight: height,\n\t\tdepth: depth,\n\t\twidthSegments: widthSegments,\n\t\theightSegments: heightSegments,\n\t\tdepthSegments: depthSegments\n\t};\n\n\tvar scope = this;\n\n\t// segments\n\twidthSegments = Math.floor( widthSegments ) || 1;\n\theightSegments = Math.floor( heightSegments ) || 1;\n\tdepthSegments = Math.floor( depthSegments ) || 1;\n\n\t// these are used to calculate buffer length\n\tvar vertexCount = calculateVertexCount( widthSegments, heightSegments, depthSegments );\n\tvar indexCount = calculateIndexCount( widthSegments, heightSegments, depthSegments );\n\n\t// buffers\n\tvar indices = new ( indexCount > 65535 ? Uint32Array : Uint16Array )( indexCount );\n\tvar vertices = new Float32Array( vertexCount * 3 );\n\tvar normals = new Float32Array( vertexCount * 3 );\n\tvar uvs = new Float32Array( vertexCount * 2 );\n\n\t// offset variables\n\tvar vertexBufferOffset = 0;\n\tvar uvBufferOffset = 0;\n\tvar indexBufferOffset = 0;\n\tvar numberOfVertices = 0;\n\n\t// group variables\n\tvar groupStart = 0;\n\n\t// build each side of the box geometry\n\tbuildPlane( 'z', 'y', 'x', - 1, - 1, depth, height, width, depthSegments, heightSegments, 0 ); // px\n\tbuildPlane( 'z', 'y', 'x', 1, - 1, depth, height, - width, depthSegments, heightSegments, 1 ); // nx\n\tbuildPlane( 'x', 'z', 'y', 1, 1, width, depth, height, widthSegments, depthSegments, 2 ); // py\n\tbuildPlane( 'x', 'z', 'y', 1, - 1, width, depth, - height, widthSegments, depthSegments, 3 ); // ny\n\tbuildPlane( 'x', 'y', 'z', 1, - 1, width, height, depth, widthSegments, heightSegments, 4 ); // pz\n\tbuildPlane( 'x', 'y', 'z', - 1, - 1, width, height, - depth, widthSegments, heightSegments, 5 ); // nz\n\n\t// build geometry\n\tthis.setIndex( new BufferAttribute( indices, 1 ) );\n\tthis.addAttribute( 'position', new BufferAttribute( vertices, 3 ) );\n\tthis.addAttribute( 'normal', new BufferAttribute( normals, 3 ) );\n\tthis.addAttribute( 'uv', new BufferAttribute( uvs, 2 ) );\n\n\t// helper functions\n\n\tfunction calculateVertexCount( w, h, d ) {\n\n\t\tvar vertices = 0;\n\n\t\t// calculate the amount of vertices for each side (plane)\n\t\tvertices += (w + 1) * (h + 1) * 2; // xy\n\t\tvertices += (w + 1) * (d + 1) * 2; // xz\n\t\tvertices += (d + 1) * (h + 1) * 2; // zy\n\n\t\treturn vertices;\n\n\t}\n\n\tfunction calculateIndexCount( w, h, d ) {\n\n\t\tvar index = 0;\n\n\t\t// calculate the amount of squares for each side\n\t\tindex += w * h * 2; // xy\n\t\tindex += w * d * 2; // xz\n\t\tindex += d * h * 2; // zy\n\n\t\treturn index * 6; // two triangles per square => six vertices per square\n\n\t}\n\n\tfunction buildPlane( u, v, w, udir, vdir, width, height, depth, gridX, gridY, materialIndex ) {\n\n\t\tvar segmentWidth\t= width / gridX;\n\t\tvar segmentHeight = height / gridY;\n\n\t\tvar widthHalf = width / 2;\n\t\tvar heightHalf = height / 2;\n\t\tvar depthHalf = depth / 2;\n\n\t\tvar gridX1 = gridX + 1;\n\t\tvar gridY1 = gridY + 1;\n\n\t\tvar vertexCounter = 0;\n\t\tvar groupCount = 0;\n\n\t\tvar vector = new Vector3();\n\n\t\t// generate vertices, normals and uvs\n\n\t\tfor ( var iy = 0; iy < gridY1; iy ++ ) {\n\n\t\t\tvar y = iy * segmentHeight - heightHalf;\n\n\t\t\tfor ( var ix = 0; ix < gridX1; ix ++ ) {\n\n\t\t\t\tvar x = ix * segmentWidth - widthHalf;\n\n\t\t\t\t// set values to correct vector component\n\t\t\t\tvector[ u ] = x * udir;\n\t\t\t\tvector[ v ] = y * vdir;\n\t\t\t\tvector[ w ] = depthHalf;\n\n\t\t\t\t// now apply vector to vertex buffer\n\t\t\t\tvertices[ vertexBufferOffset ] = vector.x;\n\t\t\t\tvertices[ vertexBufferOffset + 1 ] = vector.y;\n\t\t\t\tvertices[ vertexBufferOffset + 2 ] = vector.z;\n\n\t\t\t\t// set values to correct vector component\n\t\t\t\tvector[ u ] = 0;\n\t\t\t\tvector[ v ] = 0;\n\t\t\t\tvector[ w ] = depth > 0 ? 1 : - 1;\n\n\t\t\t\t// now apply vector to normal buffer\n\t\t\t\tnormals[ vertexBufferOffset ] = vector.x;\n\t\t\t\tnormals[ vertexBufferOffset + 1 ] = vector.y;\n\t\t\t\tnormals[ vertexBufferOffset + 2 ] = vector.z;\n\n\t\t\t\t// uvs\n\t\t\t\tuvs[ uvBufferOffset ] = ix / gridX;\n\t\t\t\tuvs[ uvBufferOffset + 1 ] = 1 - ( iy / gridY );\n\n\t\t\t\t// update offsets and counters\n\t\t\t\tvertexBufferOffset += 3;\n\t\t\t\tuvBufferOffset += 2;\n\t\t\t\tvertexCounter += 1;\n\n\t\t\t}\n\n\t\t}\n\n\t\t// 1. you need three indices to draw a single face\n\t\t// 2. a single segment consists of two faces\n\t\t// 3. so we need to generate six (2*3) indices per segment\n\n\t\tfor ( iy = 0; iy < gridY; iy ++ ) {\n\n\t\t\tfor ( ix = 0; ix < gridX; ix ++ ) {\n\n\t\t\t\t// indices\n\t\t\t\tvar a = numberOfVertices + ix + gridX1 * iy;\n\t\t\t\tvar b = numberOfVertices + ix + gridX1 * ( iy + 1 );\n\t\t\t\tvar c = numberOfVertices + ( ix + 1 ) + gridX1 * ( iy + 1 );\n\t\t\t\tvar d = numberOfVertices + ( ix + 1 ) + gridX1 * iy;\n\n\t\t\t\t// face one\n\t\t\t\tindices[ indexBufferOffset ] = a;\n\t\t\t\tindices[ indexBufferOffset + 1 ] = b;\n\t\t\t\tindices[ indexBufferOffset + 2 ] = d;\n\n\t\t\t\t// face two\n\t\t\t\tindices[ indexBufferOffset + 3 ] = b;\n\t\t\t\tindices[ indexBufferOffset + 4 ] = c;\n\t\t\t\tindices[ indexBufferOffset + 5 ] = d;\n\n\t\t\t\t// update offsets and counters\n\t\t\t\tindexBufferOffset += 6;\n\t\t\t\tgroupCount += 6;\n\n\t\t\t}\n\n\t\t}\n\n\t\t// add a group to the geometry. this will ensure multi material support\n\t\tscope.addGroup( groupStart, groupCount, materialIndex );\n\n\t\t// calculate new start value for groups\n\t\tgroupStart += groupCount;\n\n\t\t// update total number of vertices\n\t\tnumberOfVertices += vertexCounter;\n\n\t}\n\n}\n\nBoxBufferGeometry.prototype = Object.create( BufferGeometry.prototype );\nBoxBufferGeometry.prototype.constructor = BoxBufferGeometry;\n\n\nexport { BoxBufferGeometry };\n","import { BufferGeometry } from '../core/BufferGeometry';\nimport { BufferAttribute } from '../core/BufferAttribute';\n\n/**\n * @author mrdoob / http://mrdoob.com/\n * based on http://papervision3d.googlecode.com/svn/trunk/as3/trunk/src/org/papervision3d/objects/primitives/Plane.as\n */\n\nfunction PlaneBufferGeometry( width, height, widthSegments, heightSegments ) {\n\n\tBufferGeometry.call( this );\n\n\tthis.type = 'PlaneBufferGeometry';\n\n\tthis.parameters = {\n\t\twidth: width,\n\t\theight: height,\n\t\twidthSegments: widthSegments,\n\t\theightSegments: heightSegments\n\t};\n\n\tvar width_half = width / 2;\n\tvar height_half = height / 2;\n\n\tvar gridX = Math.floor( widthSegments ) || 1;\n\tvar gridY = Math.floor( heightSegments ) || 1;\n\n\tvar gridX1 = gridX + 1;\n\tvar gridY1 = gridY + 1;\n\n\tvar segment_width = width / gridX;\n\tvar segment_height = height / gridY;\n\n\tvar vertices = new Float32Array( gridX1 * gridY1 * 3 );\n\tvar normals = new Float32Array( gridX1 * gridY1 * 3 );\n\tvar uvs = new Float32Array( gridX1 * gridY1 * 2 );\n\n\tvar offset = 0;\n\tvar offset2 = 0;\n\n\tfor ( var iy = 0; iy < gridY1; iy ++ ) {\n\n\t\tvar y = iy * segment_height - height_half;\n\n\t\tfor ( var ix = 0; ix < gridX1; ix ++ ) {\n\n\t\t\tvar x = ix * segment_width - width_half;\n\n\t\t\tvertices[ offset ] = x;\n\t\t\tvertices[ offset + 1 ] = - y;\n\n\t\t\tnormals[ offset + 2 ] = 1;\n\n\t\t\tuvs[ offset2 ] = ix / gridX;\n\t\t\tuvs[ offset2 + 1 ] = 1 - ( iy / gridY );\n\n\t\t\toffset += 3;\n\t\t\toffset2 += 2;\n\n\t\t}\n\n\t}\n\n\toffset = 0;\n\n\tvar indices = new ( ( vertices.length / 3 ) > 65535 ? Uint32Array : Uint16Array )( gridX * gridY * 6 );\n\n\tfor ( var iy = 0; iy < gridY; iy ++ ) {\n\n\t\tfor ( var ix = 0; ix < gridX; ix ++ ) {\n\n\t\t\tvar a = ix + gridX1 * iy;\n\t\t\tvar b = ix + gridX1 * ( iy + 1 );\n\t\t\tvar c = ( ix + 1 ) + gridX1 * ( iy + 1 );\n\t\t\tvar d = ( ix + 1 ) + gridX1 * iy;\n\n\t\t\tindices[ offset ] = a;\n\t\t\tindices[ offset + 1 ] = b;\n\t\t\tindices[ offset + 2 ] = d;\n\n\t\t\tindices[ offset + 3 ] = b;\n\t\t\tindices[ offset + 4 ] = c;\n\t\t\tindices[ offset + 5 ] = d;\n\n\t\t\toffset += 6;\n\n\t\t}\n\n\t}\n\n\tthis.setIndex( new BufferAttribute( indices, 1 ) );\n\tthis.addAttribute( 'position', new BufferAttribute( vertices, 3 ) );\n\tthis.addAttribute( 'normal', new BufferAttribute( normals, 3 ) );\n\tthis.addAttribute( 'uv', new BufferAttribute( uvs, 2 ) );\n\n}\n\nPlaneBufferGeometry.prototype = Object.create( BufferGeometry.prototype );\nPlaneBufferGeometry.prototype.constructor = PlaneBufferGeometry;\n\n\nexport { PlaneBufferGeometry };\n","import { Matrix4 } from '../math/Matrix4';\nimport { Quaternion } from '../math/Quaternion';\nimport { Object3D } from '../core/Object3D';\nimport { Vector3 } from '../math/Vector3';\n\n/**\n * @author mrdoob / http://mrdoob.com/\n * @author mikael emtinger / http://gomo.se/\n * @author WestLangley / http://github.com/WestLangley\n*/\n\nfunction Camera() {\n\n\tObject3D.call( this );\n\n\tthis.type = 'Camera';\n\n\tthis.matrixWorldInverse = new Matrix4();\n\tthis.projectionMatrix = new Matrix4();\n\n}\n\nCamera.prototype = Object.create( Object3D.prototype );\nCamera.prototype.constructor = Camera;\n\nCamera.prototype.isCamera = true;\n\nCamera.prototype.getWorldDirection = function () {\n\n\tvar quaternion = new Quaternion();\n\n\treturn function getWorldDirection( optionalTarget ) {\n\n\t\tvar result = optionalTarget || new Vector3();\n\n\t\tthis.getWorldQuaternion( quaternion );\n\n\t\treturn result.set( 0, 0, - 1 ).applyQuaternion( quaternion );\n\n\t};\n\n}();\n\nCamera.prototype.lookAt = function () {\n\n\t// This routine does not support cameras with rotated and/or translated parent(s)\n\n\tvar m1 = new Matrix4();\n\n\treturn function lookAt( vector ) {\n\n\t\tm1.lookAt( this.position, vector, this.up );\n\n\t\tthis.quaternion.setFromRotationMatrix( m1 );\n\n\t};\n\n}();\n\nCamera.prototype.clone = function () {\n\n\treturn new this.constructor().copy( this );\n\n};\n\nCamera.prototype.copy = function ( source ) {\n\n\tObject3D.prototype.copy.call( this, source );\n\n\tthis.matrixWorldInverse.copy( source.matrixWorldInverse );\n\tthis.projectionMatrix.copy( source.projectionMatrix );\n\n\treturn this;\n\n};\n\n\nexport { Camera };\n","import { Camera } from './Camera';\nimport { Object3D } from '../core/Object3D';\nimport { _Math } from '../math/Math';\n\n/**\n * @author mrdoob / http://mrdoob.com/\n * @author greggman / http://games.greggman.com/\n * @author zz85 / http://www.lab4games.net/zz85/blog\n * @author tschw\n */\n\nfunction PerspectiveCamera( fov, aspect, near, far ) {\n\n\tCamera.call( this );\n\n\tthis.type = 'PerspectiveCamera';\n\n\tthis.fov = fov !== undefined ? fov : 50;\n\tthis.zoom = 1;\n\n\tthis.near = near !== undefined ? near : 0.1;\n\tthis.far = far !== undefined ? far : 2000;\n\tthis.focus = 10;\n\n\tthis.aspect = aspect !== undefined ? aspect : 1;\n\tthis.view = null;\n\n\tthis.filmGauge = 35;\t// width of the film (default in millimeters)\n\tthis.filmOffset = 0;\t// horizontal film offset (same unit as gauge)\n\n\tthis.updateProjectionMatrix();\n\n}\n\nPerspectiveCamera.prototype = Object.assign( Object.create( Camera.prototype ), {\n\n\tconstructor: PerspectiveCamera,\n\n\tisPerspectiveCamera: true,\n\n\tcopy: function ( source ) {\n\n\t\tCamera.prototype.copy.call( this, source );\n\n\t\tthis.fov = source.fov;\n\t\tthis.zoom = source.zoom;\n\n\t\tthis.near = source.near;\n\t\tthis.far = source.far;\n\t\tthis.focus = source.focus;\n\n\t\tthis.aspect = source.aspect;\n\t\tthis.view = source.view === null ? null : Object.assign( {}, source.view );\n\n\t\tthis.filmGauge = source.filmGauge;\n\t\tthis.filmOffset = source.filmOffset;\n\n\t\treturn this;\n\n\t},\n\n\t/**\n\t * Sets the FOV by focal length in respect to the current .filmGauge.\n\t *\n\t * The default film gauge is 35, so that the focal length can be specified for\n\t * a 35mm (full frame) camera.\n\t *\n\t * Values for focal length and film gauge must have the same unit.\n\t */\n\tsetFocalLength: function ( focalLength ) {\n\n\t\t// see http://www.bobatkins.com/photography/technical/field_of_view.html\n\t\tvar vExtentSlope = 0.5 * this.getFilmHeight() / focalLength;\n\n\t\tthis.fov = _Math.RAD2DEG * 2 * Math.atan( vExtentSlope );\n\t\tthis.updateProjectionMatrix();\n\n\t},\n\n\t/**\n\t * Calculates the focal length from the current .fov and .filmGauge.\n\t */\n\tgetFocalLength: function () {\n\n\t\tvar vExtentSlope = Math.tan( _Math.DEG2RAD * 0.5 * this.fov );\n\n\t\treturn 0.5 * this.getFilmHeight() / vExtentSlope;\n\n\t},\n\n\tgetEffectiveFOV: function () {\n\n\t\treturn _Math.RAD2DEG * 2 * Math.atan(\n\t\t\t\tMath.tan( _Math.DEG2RAD * 0.5 * this.fov ) / this.zoom );\n\n\t},\n\n\tgetFilmWidth: function () {\n\n\t\t// film not completely covered in portrait format (aspect < 1)\n\t\treturn this.filmGauge * Math.min( this.aspect, 1 );\n\n\t},\n\n\tgetFilmHeight: function () {\n\n\t\t// film not completely covered in landscape format (aspect > 1)\n\t\treturn this.filmGauge / Math.max( this.aspect, 1 );\n\n\t},\n\n\t/**\n\t * Sets an offset in a larger frustum. This is useful for multi-window or\n\t * multi-monitor/multi-machine setups.\n\t *\n\t * For example, if you have 3x2 monitors and each monitor is 1920x1080 and\n\t * the monitors are in grid like this\n\t *\n\t * +---+---+---+\n\t * | A | B | C |\n\t * +---+---+---+\n\t * | D | E | F |\n\t * +---+---+---+\n\t *\n\t * then for each monitor you would call it like this\n\t *\n\t * var w = 1920;\n\t * var h = 1080;\n\t * var fullWidth = w * 3;\n\t * var fullHeight = h * 2;\n\t *\n\t * --A--\n\t * camera.setOffset( fullWidth, fullHeight, w * 0, h * 0, w, h );\n\t * --B--\n\t * camera.setOffset( fullWidth, fullHeight, w * 1, h * 0, w, h );\n\t * --C--\n\t * camera.setOffset( fullWidth, fullHeight, w * 2, h * 0, w, h );\n\t * --D--\n\t * camera.setOffset( fullWidth, fullHeight, w * 0, h * 1, w, h );\n\t * --E--\n\t * camera.setOffset( fullWidth, fullHeight, w * 1, h * 1, w, h );\n\t * --F--\n\t * camera.setOffset( fullWidth, fullHeight, w * 2, h * 1, w, h );\n\t *\n\t * Note there is no reason monitors have to be the same size or in a grid.\n\t */\n\tsetViewOffset: function ( fullWidth, fullHeight, x, y, width, height ) {\n\n\t\tthis.aspect = fullWidth / fullHeight;\n\n\t\tthis.view = {\n\t\t\tfullWidth: fullWidth,\n\t\t\tfullHeight: fullHeight,\n\t\t\toffsetX: x,\n\t\t\toffsetY: y,\n\t\t\twidth: width,\n\t\t\theight: height\n\t\t};\n\n\t\tthis.updateProjectionMatrix();\n\n\t},\n\n\tclearViewOffset: function() {\n\n\t\tthis.view = null;\n\t\tthis.updateProjectionMatrix();\n\n\t},\n\n\tupdateProjectionMatrix: function () {\n\n\t\tvar near = this.near,\n\t\t\ttop = near * Math.tan(\n\t\t\t\t\t_Math.DEG2RAD * 0.5 * this.fov ) / this.zoom,\n\t\t\theight = 2 * top,\n\t\t\twidth = this.aspect * height,\n\t\t\tleft = - 0.5 * width,\n\t\t\tview = this.view;\n\n\t\tif ( view !== null ) {\n\n\t\t\tvar fullWidth = view.fullWidth,\n\t\t\t\tfullHeight = view.fullHeight;\n\n\t\t\tleft += view.offsetX * width / fullWidth;\n\t\t\ttop -= view.offsetY * height / fullHeight;\n\t\t\twidth *= view.width / fullWidth;\n\t\t\theight *= view.height / fullHeight;\n\n\t\t}\n\n\t\tvar skew = this.filmOffset;\n\t\tif ( skew !== 0 ) left += near * skew / this.getFilmWidth();\n\n\t\tthis.projectionMatrix.makeFrustum(\n\t\t\t\tleft, left + width, top - height, top, near, this.far );\n\n\t},\n\n\ttoJSON: function ( meta ) {\n\n\t\tvar data = Object3D.prototype.toJSON.call( this, meta );\n\n\t\tdata.object.fov = this.fov;\n\t\tdata.object.zoom = this.zoom;\n\n\t\tdata.object.near = this.near;\n\t\tdata.object.far = this.far;\n\t\tdata.object.focus = this.focus;\n\n\t\tdata.object.aspect = this.aspect;\n\n\t\tif ( this.view !== null ) data.object.view = Object.assign( {}, this.view );\n\n\t\tdata.object.filmGauge = this.filmGauge;\n\t\tdata.object.filmOffset = this.filmOffset;\n\n\t\treturn data;\n\n\t}\n\n} );\n\n\nexport { PerspectiveCamera };\n","import { Camera } from './Camera';\nimport { Object3D } from '../core/Object3D';\n\n/**\n * @author alteredq / http://alteredqualia.com/\n * @author arose / http://github.com/arose\n */\n\nfunction OrthographicCamera( left, right, top, bottom, near, far ) {\n\n\tCamera.call( this );\n\n\tthis.type = 'OrthographicCamera';\n\n\tthis.zoom = 1;\n\tthis.view = null;\n\n\tthis.left = left;\n\tthis.right = right;\n\tthis.top = top;\n\tthis.bottom = bottom;\n\n\tthis.near = ( near !== undefined ) ? near : 0.1;\n\tthis.far = ( far !== undefined ) ? far : 2000;\n\n\tthis.updateProjectionMatrix();\n\n}\n\nOrthographicCamera.prototype = Object.assign( Object.create( Camera.prototype ), {\n\n\tconstructor: OrthographicCamera,\n\n\tisOrthographicCamera: true,\n\n\tcopy: function ( source ) {\n\n\t\tCamera.prototype.copy.call( this, source );\n\n\t\tthis.left = source.left;\n\t\tthis.right = source.right;\n\t\tthis.top = source.top;\n\t\tthis.bottom = source.bottom;\n\t\tthis.near = source.near;\n\t\tthis.far = source.far;\n\n\t\tthis.zoom = source.zoom;\n\t\tthis.view = source.view === null ? null : Object.assign( {}, source.view );\n\n\t\treturn this;\n\n\t},\n\n\tsetViewOffset: function( fullWidth, fullHeight, x, y, width, height ) {\n\n\t\tthis.view = {\n\t\t\tfullWidth: fullWidth,\n\t\t\tfullHeight: fullHeight,\n\t\t\toffsetX: x,\n\t\t\toffsetY: y,\n\t\t\twidth: width,\n\t\t\theight: height\n\t\t};\n\n\t\tthis.updateProjectionMatrix();\n\n\t},\n\n\tclearViewOffset: function() {\n\n\t\tthis.view = null;\n\t\tthis.updateProjectionMatrix();\n\n\t},\n\n\tupdateProjectionMatrix: function () {\n\n\t\tvar dx = ( this.right - this.left ) / ( 2 * this.zoom );\n\t\tvar dy = ( this.top - this.bottom ) / ( 2 * this.zoom );\n\t\tvar cx = ( this.right + this.left ) / 2;\n\t\tvar cy = ( this.top + this.bottom ) / 2;\n\n\t\tvar left = cx - dx;\n\t\tvar right = cx + dx;\n\t\tvar top = cy + dy;\n\t\tvar bottom = cy - dy;\n\n\t\tif ( this.view !== null ) {\n\n\t\t\tvar zoomW = this.zoom / ( this.view.width / this.view.fullWidth );\n\t\t\tvar zoomH = this.zoom / ( this.view.height / this.view.fullHeight );\n\t\t\tvar scaleW = ( this.right - this.left ) / this.view.width;\n\t\t\tvar scaleH = ( this.top - this.bottom ) / this.view.height;\n\n\t\t\tleft += scaleW * ( this.view.offsetX / zoomW );\n\t\t\tright = left + scaleW * ( this.view.width / zoomW );\n\t\t\ttop -= scaleH * ( this.view.offsetY / zoomH );\n\t\t\tbottom = top - scaleH * ( this.view.height / zoomH );\n\n\t\t}\n\n\t\tthis.projectionMatrix.makeOrthographic( left, right, top, bottom, this.near, this.far );\n\n\t},\n\n\ttoJSON: function ( meta ) {\n\n\t\tvar data = Object3D.prototype.toJSON.call( this, meta );\n\n\t\tdata.object.zoom = this.zoom;\n\t\tdata.object.left = this.left;\n\t\tdata.object.right = this.right;\n\t\tdata.object.top = this.top;\n\t\tdata.object.bottom = this.bottom;\n\t\tdata.object.near = this.near;\n\t\tdata.object.far = this.far;\n\n\t\tif ( this.view !== null ) data.object.view = Object.assign( {}, this.view );\n\n\t\treturn data;\n\n\t}\n\n} );\n\n\nexport { OrthographicCamera };\n","/**\n * @author mrdoob / http://mrdoob.com/\n */\n\nfunction WebGLIndexedBufferRenderer( gl, extensions, infoRender ) {\n\n\tvar mode;\n\n\tfunction setMode( value ) {\n\n\t\tmode = value;\n\n\t}\n\n\tvar type, size;\n\n\tfunction setIndex( index ) {\n\n\t\tif ( index.array instanceof Uint32Array && extensions.get( 'OES_element_index_uint' ) ) {\n\n\t\t\ttype = gl.UNSIGNED_INT;\n\t\t\tsize = 4;\n\n\t\t} else {\n\n\t\t\ttype = gl.UNSIGNED_SHORT;\n\t\t\tsize = 2;\n\n\t\t}\n\n\t}\n\n\tfunction render( start, count ) {\n\n\t\tgl.drawElements( mode, count, type, start * size );\n\n\t\tinfoRender.calls ++;\n\t\tinfoRender.vertices += count;\n\n\t\tif ( mode === gl.TRIANGLES ) infoRender.faces += count / 3;\n\n\t}\n\n\tfunction renderInstances( geometry, start, count ) {\n\n\t\tvar extension = extensions.get( 'ANGLE_instanced_arrays' );\n\n\t\tif ( extension === null ) {\n\n\t\t\tconsole.error( 'THREE.WebGLBufferRenderer: using THREE.InstancedBufferGeometry but hardware does not support extension ANGLE_instanced_arrays.' );\n\t\t\treturn;\n\n\t\t}\n\n\t\textension.drawElementsInstancedANGLE( mode, count, type, start * size, geometry.maxInstancedCount );\n\n\t\tinfoRender.calls ++;\n\t\tinfoRender.vertices += count * geometry.maxInstancedCount;\n\n\t\tif ( mode === gl.TRIANGLES ) infoRender.faces += geometry.maxInstancedCount * count / 3;\n\n\t}\n\n\treturn {\n\n\t\tsetMode: setMode,\n\t\tsetIndex: setIndex,\n\t\trender: render,\n\t\trenderInstances: renderInstances\n\n\t};\n\n}\n\n\nexport { WebGLIndexedBufferRenderer };\n","/**\n * @author mrdoob / http://mrdoob.com/\n */\n\nfunction WebGLBufferRenderer( gl, extensions, infoRender ) {\n\n\tvar mode;\n\n\tfunction setMode( value ) {\n\n\t\tmode = value;\n\n\t}\n\n\tfunction render( start, count ) {\n\n\t\tgl.drawArrays( mode, start, count );\n\n\t\tinfoRender.calls ++;\n\t\tinfoRender.vertices += count;\n\n\t\tif ( mode === gl.TRIANGLES ) infoRender.faces += count / 3;\n\n\t}\n\n\tfunction renderInstances( geometry ) {\n\n\t\tvar extension = extensions.get( 'ANGLE_instanced_arrays' );\n\n\t\tif ( extension === null ) {\n\n\t\t\tconsole.error( 'THREE.WebGLBufferRenderer: using THREE.InstancedBufferGeometry but hardware does not support extension ANGLE_instanced_arrays.' );\n\t\t\treturn;\n\n\t\t}\n\n\t\tvar position = geometry.attributes.position;\n\n\t\tvar count = 0;\n\n\t\tif ( (position && position.isInterleavedBufferAttribute) ) {\n\n\t\t\tcount = position.data.count;\n\n\t\t\textension.drawArraysInstancedANGLE( mode, 0, count, geometry.maxInstancedCount );\n\n\t\t} else {\n\n\t\t\tcount = position.count;\n\n\t\t\textension.drawArraysInstancedANGLE( mode, 0, count, geometry.maxInstancedCount );\n\n\t\t}\n\n\t\tinfoRender.calls ++;\n\t\tinfoRender.vertices += count * geometry.maxInstancedCount;\n\n\t\tif ( mode === gl.TRIANGLES ) infoRender.faces += geometry.maxInstancedCount * count / 3;\n\n\t}\n\n\treturn {\n\t\tsetMode: setMode,\n\t\trender: render,\n\t\trenderInstances: renderInstances\n\t};\n\n}\n\n\nexport { WebGLBufferRenderer };\n","/**\n * @author mrdoob / http://mrdoob.com/\n */\n\nimport { Color } from '../../math/Color';\nimport { Vector3 } from '../../math/Vector3';\nimport { Vector2 } from '../../math/Vector2';\n\nfunction WebGLLights() {\n\n\tvar lights = {};\n\n\treturn {\n\n\t\tget: function ( light ) {\n\n\t\t\tif ( lights[ light.id ] !== undefined ) {\n\n\t\t\t\treturn lights[ light.id ];\n\n\t\t\t}\n\n\t\t\tvar uniforms;\n\n\t\t\tswitch ( light.type ) {\n\n\t\t\t\tcase 'DirectionalLight':\n\t\t\t\t\tuniforms = {\n\t\t\t\t\t\tdirection: new Vector3(),\n\t\t\t\t\t\tcolor: new Color(),\n\n\t\t\t\t\t\tshadow: false,\n\t\t\t\t\t\tshadowBias: 0,\n\t\t\t\t\t\tshadowRadius: 1,\n\t\t\t\t\t\tshadowMapSize: new Vector2()\n\t\t\t\t\t};\n\t\t\t\t\tbreak;\n\n\t\t\t\tcase 'SpotLight':\n\t\t\t\t\tuniforms = {\n\t\t\t\t\t\tposition: new Vector3(),\n\t\t\t\t\t\tdirection: new Vector3(),\n\t\t\t\t\t\tcolor: new Color(),\n\t\t\t\t\t\tdistance: 0,\n\t\t\t\t\t\tconeCos: 0,\n\t\t\t\t\t\tpenumbraCos: 0,\n\t\t\t\t\t\tdecay: 0,\n\n\t\t\t\t\t\tshadow: false,\n\t\t\t\t\t\tshadowBias: 0,\n\t\t\t\t\t\tshadowRadius: 1,\n\t\t\t\t\t\tshadowMapSize: new Vector2()\n\t\t\t\t\t};\n\t\t\t\t\tbreak;\n\n\t\t\t\tcase 'PointLight':\n\t\t\t\t\tuniforms = {\n\t\t\t\t\t\tposition: new Vector3(),\n\t\t\t\t\t\tcolor: new Color(),\n\t\t\t\t\t\tdistance: 0,\n\t\t\t\t\t\tdecay: 0,\n\n\t\t\t\t\t\tshadow: false,\n\t\t\t\t\t\tshadowBias: 0,\n\t\t\t\t\t\tshadowRadius: 1,\n\t\t\t\t\t\tshadowMapSize: new Vector2()\n\t\t\t\t\t};\n\t\t\t\t\tbreak;\n\n\t\t\t\tcase 'HemisphereLight':\n\t\t\t\t\tuniforms = {\n\t\t\t\t\t\tdirection: new Vector3(),\n\t\t\t\t\t\tskyColor: new Color(),\n\t\t\t\t\t\tgroundColor: new Color()\n\t\t\t\t\t};\n\t\t\t\t\tbreak;\n\n\t\t\t}\n\n\t\t\tlights[ light.id ] = uniforms;\n\n\t\t\treturn uniforms;\n\n\t\t}\n\n\t};\n\n}\n\n\nexport { WebGLLights };\n","/**\n * @author mrdoob / http://mrdoob.com/\n */\n\nfunction addLineNumbers( string ) {\n\n\tvar lines = string.split( '\\n' );\n\n\tfor ( var i = 0; i < lines.length; i ++ ) {\n\n\t\tlines[ i ] = ( i + 1 ) + ': ' + lines[ i ];\n\n\t}\n\n\treturn lines.join( '\\n' );\n\n}\n\nfunction WebGLShader( gl, type, string ) {\n\n\tvar shader = gl.createShader( type );\n\n\tgl.shaderSource( shader, string );\n\tgl.compileShader( shader );\n\n\tif ( gl.getShaderParameter( shader, gl.COMPILE_STATUS ) === false ) {\n\n\t\tconsole.error( 'THREE.WebGLShader: Shader couldn\\'t compile.' );\n\n\t}\n\n\tif ( gl.getShaderInfoLog( shader ) !== '' ) {\n\n\t\tconsole.warn( 'THREE.WebGLShader: gl.getShaderInfoLog()', type === gl.VERTEX_SHADER ? 'vertex' : 'fragment', gl.getShaderInfoLog( shader ), addLineNumbers( string ) );\n\n\t}\n\n\t// --enable-privileged-webgl-extension\n\t// console.log( type, gl.getExtension( 'WEBGL_debug_shaders' ).getTranslatedShaderSource( shader ) );\n\n\treturn shader;\n\n}\n\nexport { WebGLShader };\n","/**\n * @author mrdoob / http://mrdoob.com/\n */\n\nimport { WebGLUniforms } from './WebGLUniforms';\nimport { WebGLShader } from './WebGLShader';\nimport { ShaderChunk } from '../shaders/ShaderChunk';\nimport { NoToneMapping, AddOperation, MixOperation, MultiplyOperation, EquirectangularRefractionMapping, CubeRefractionMapping, SphericalReflectionMapping, EquirectangularReflectionMapping, CubeUVRefractionMapping, CubeUVReflectionMapping, CubeReflectionMapping, PCFSoftShadowMap, PCFShadowMap, CineonToneMapping, Uncharted2ToneMapping, ReinhardToneMapping, LinearToneMapping, GammaEncoding, RGBDEncoding, RGBM16Encoding, RGBM7Encoding, RGBEEncoding, sRGBEncoding, LinearEncoding } from '../../constants';\n\nvar programIdCount = 0;\n\nfunction getEncodingComponents( encoding ) {\n\n\tswitch ( encoding ) {\n\n\t\tcase LinearEncoding:\n\t\t\treturn [ 'Linear','( value )' ];\n\t\tcase sRGBEncoding:\n\t\t\treturn [ 'sRGB','( value )' ];\n\t\tcase RGBEEncoding:\n\t\t\treturn [ 'RGBE','( value )' ];\n\t\tcase RGBM7Encoding:\n\t\t\treturn [ 'RGBM','( value, 7.0 )' ];\n\t\tcase RGBM16Encoding:\n\t\t\treturn [ 'RGBM','( value, 16.0 )' ];\n\t\tcase RGBDEncoding:\n\t\t\treturn [ 'RGBD','( value, 256.0 )' ];\n\t\tcase GammaEncoding:\n\t\t\treturn [ 'Gamma','( value, float( GAMMA_FACTOR ) )' ];\n\t\tdefault:\n\t\t\tthrow new Error( 'unsupported encoding: ' + encoding );\n\n\t}\n\n}\n\nfunction getTexelDecodingFunction( functionName, encoding ) {\n\n\tvar components = getEncodingComponents( encoding );\n\treturn \"vec4 \" + functionName + \"( vec4 value ) { return \" + components[ 0 ] + \"ToLinear\" + components[ 1 ] + \"; }\";\n\n}\n\nfunction getTexelEncodingFunction( functionName, encoding ) {\n\n\tvar components = getEncodingComponents( encoding );\n\treturn \"vec4 \" + functionName + \"( vec4 value ) { return LinearTo\" + components[ 0 ] + components[ 1 ] + \"; }\";\n\n}\n\nfunction getToneMappingFunction( functionName, toneMapping ) {\n\n\tvar toneMappingName;\n\n\tswitch ( toneMapping ) {\n\n\t\tcase LinearToneMapping:\n\t\t\ttoneMappingName = \"Linear\";\n\t\t\tbreak;\n\n\t\tcase ReinhardToneMapping:\n\t\t\ttoneMappingName = \"Reinhard\";\n\t\t\tbreak;\n\n\t\tcase Uncharted2ToneMapping:\n\t\t\ttoneMappingName = \"Uncharted2\";\n\t\t\tbreak;\n\n\t\tcase CineonToneMapping:\n\t\t\ttoneMappingName = \"OptimizedCineon\";\n\t\t\tbreak;\n\n\t\tdefault:\n\t\t\tthrow new Error( 'unsupported toneMapping: ' + toneMapping );\n\n\t}\n\n\treturn \"vec3 \" + functionName + \"( vec3 color ) { return \" + toneMappingName + \"ToneMapping( color ); }\";\n\n}\n\nfunction generateExtensions( extensions, parameters, rendererExtensions ) {\n\n\textensions = extensions || {};\n\n\tvar chunks = [\n\t\t( extensions.derivatives || parameters.envMapCubeUV || parameters.bumpMap || parameters.normalMap || parameters.flatShading ) ? '#extension GL_OES_standard_derivatives : enable' : '',\n\t\t( extensions.fragDepth || parameters.logarithmicDepthBuffer ) && rendererExtensions.get( 'EXT_frag_depth' ) ? '#extension GL_EXT_frag_depth : enable' : '',\n\t\t( extensions.drawBuffers ) && rendererExtensions.get( 'WEBGL_draw_buffers' ) ? '#extension GL_EXT_draw_buffers : require' : '',\n\t\t( extensions.shaderTextureLOD || parameters.envMap ) && rendererExtensions.get( 'EXT_shader_texture_lod' ) ? '#extension GL_EXT_shader_texture_lod : enable' : '',\n\t];\n\n\treturn chunks.filter( filterEmptyLine ).join( '\\n' );\n\n}\n\nfunction generateDefines( defines ) {\n\n\tvar chunks = [];\n\n\tfor ( var name in defines ) {\n\n\t\tvar value = defines[ name ];\n\n\t\tif ( value === false ) continue;\n\n\t\tchunks.push( '#define ' + name + ' ' + value );\n\n\t}\n\n\treturn chunks.join( '\\n' );\n\n}\n\nfunction fetchAttributeLocations( gl, program, identifiers ) {\n\n\tvar attributes = {};\n\n\tvar n = gl.getProgramParameter( program, gl.ACTIVE_ATTRIBUTES );\n\n\tfor ( var i = 0; i < n; i ++ ) {\n\n\t\tvar info = gl.getActiveAttrib( program, i );\n\t\tvar name = info.name;\n\n\t\t// console.log(\"THREE.WebGLProgram: ACTIVE VERTEX ATTRIBUTE:\", name, i );\n\n\t\tattributes[ name ] = gl.getAttribLocation( program, name );\n\n\t}\n\n\treturn attributes;\n\n}\n\nfunction filterEmptyLine( string ) {\n\n\treturn string !== '';\n\n}\n\nfunction replaceLightNums( string, parameters ) {\n\n\treturn string\n\t\t.replace( /NUM_DIR_LIGHTS/g, parameters.numDirLights )\n\t\t.replace( /NUM_SPOT_LIGHTS/g, parameters.numSpotLights )\n\t\t.replace( /NUM_POINT_LIGHTS/g, parameters.numPointLights )\n\t\t.replace( /NUM_HEMI_LIGHTS/g, parameters.numHemiLights );\n\n}\n\nfunction parseIncludes( string ) {\n\n\tvar pattern = /#include +<([\\w\\d.]+)>/g;\n\n\tfunction replace( match, include ) {\n\n\t\tvar replace = ShaderChunk[ include ];\n\n\t\tif ( replace === undefined ) {\n\n\t\t\tthrow new Error( 'Can not resolve #include <' + include + '>' );\n\n\t\t}\n\n\t\treturn parseIncludes( replace );\n\n\t}\n\n\treturn string.replace( pattern, replace );\n\n}\n\nfunction unrollLoops( string ) {\n\n\tvar pattern = /for \\( int i \\= (\\d+)\\; i < (\\d+)\\; i \\+\\+ \\) \\{([\\s\\S]+?)(?=\\})\\}/g;\n\n\tfunction replace( match, start, end, snippet ) {\n\n\t\tvar unroll = '';\n\n\t\tfor ( var i = parseInt( start ); i < parseInt( end ); i ++ ) {\n\n\t\t\tunroll += snippet.replace( /\\[ i \\]/g, '[ ' + i + ' ]' );\n\n\t\t}\n\n\t\treturn unroll;\n\n\t}\n\n\treturn string.replace( pattern, replace );\n\n}\n\nfunction WebGLProgram( renderer, code, material, parameters ) {\n\n\tvar gl = renderer.context;\n\n\tvar extensions = material.extensions;\n\tvar defines = material.defines;\n\n\tvar vertexShader = material.__webglShader.vertexShader;\n\tvar fragmentShader = material.__webglShader.fragmentShader;\n\n\tvar shadowMapTypeDefine = 'SHADOWMAP_TYPE_BASIC';\n\n\tif ( parameters.shadowMapType === PCFShadowMap ) {\n\n\t\tshadowMapTypeDefine = 'SHADOWMAP_TYPE_PCF';\n\n\t} else if ( parameters.shadowMapType === PCFSoftShadowMap ) {\n\n\t\tshadowMapTypeDefine = 'SHADOWMAP_TYPE_PCF_SOFT';\n\n\t}\n\n\tvar envMapTypeDefine = 'ENVMAP_TYPE_CUBE';\n\tvar envMapModeDefine = 'ENVMAP_MODE_REFLECTION';\n\tvar envMapBlendingDefine = 'ENVMAP_BLENDING_MULTIPLY';\n\n\tif ( parameters.envMap ) {\n\n\t\tswitch ( material.envMap.mapping ) {\n\n\t\t\tcase CubeReflectionMapping:\n\t\t\tcase CubeRefractionMapping:\n\t\t\t\tenvMapTypeDefine = 'ENVMAP_TYPE_CUBE';\n\t\t\t\tbreak;\n\n\t\t\tcase CubeUVReflectionMapping:\n\t\t\tcase CubeUVRefractionMapping:\n\t\t\t\tenvMapTypeDefine = 'ENVMAP_TYPE_CUBE_UV';\n\t\t\t\tbreak;\n\n\t\t\tcase EquirectangularReflectionMapping:\n\t\t\tcase EquirectangularRefractionMapping:\n\t\t\t\tenvMapTypeDefine = 'ENVMAP_TYPE_EQUIREC';\n\t\t\t\tbreak;\n\n\t\t\tcase SphericalReflectionMapping:\n\t\t\t\tenvMapTypeDefine = 'ENVMAP_TYPE_SPHERE';\n\t\t\t\tbreak;\n\n\t\t}\n\n\t\tswitch ( material.envMap.mapping ) {\n\n\t\t\tcase CubeRefractionMapping:\n\t\t\tcase EquirectangularRefractionMapping:\n\t\t\t\tenvMapModeDefine = 'ENVMAP_MODE_REFRACTION';\n\t\t\t\tbreak;\n\n\t\t}\n\n\t\tswitch ( material.combine ) {\n\n\t\t\tcase MultiplyOperation:\n\t\t\t\tenvMapBlendingDefine = 'ENVMAP_BLENDING_MULTIPLY';\n\t\t\t\tbreak;\n\n\t\t\tcase MixOperation:\n\t\t\t\tenvMapBlendingDefine = 'ENVMAP_BLENDING_MIX';\n\t\t\t\tbreak;\n\n\t\t\tcase AddOperation:\n\t\t\t\tenvMapBlendingDefine = 'ENVMAP_BLENDING_ADD';\n\t\t\t\tbreak;\n\n\t\t}\n\n\t}\n\n\tvar gammaFactorDefine = ( renderer.gammaFactor > 0 ) ? renderer.gammaFactor : 1.0;\n\n\t// console.log( 'building new program ' );\n\n\t//\n\n\tvar customExtensions = generateExtensions( extensions, parameters, renderer.extensions );\n\n\tvar customDefines = generateDefines( defines );\n\n\t//\n\n\tvar program = gl.createProgram();\n\n\tvar prefixVertex, prefixFragment;\n\n\tif ( material.isRawShaderMaterial ) {\n\n\t\tprefixVertex = [\n\n\t\t\tcustomDefines,\n\n\t\t\t'\\n'\n\n\t\t].filter( filterEmptyLine ).join( '\\n' );\n\n\t\tprefixFragment = [\n\n\t\t\tcustomExtensions,\n\t\t\tcustomDefines,\n\n\t\t\t'\\n'\n\n\t\t].filter( filterEmptyLine ).join( '\\n' );\n\n\t} else {\n\n\t\tprefixVertex = [\n\n\t\t\t'precision ' + parameters.precision + ' float;',\n\t\t\t'precision ' + parameters.precision + ' int;',\n\n\t\t\t'#define SHADER_NAME ' + material.__webglShader.name,\n\n\t\t\tcustomDefines,\n\n\t\t\tparameters.supportsVertexTextures ? '#define VERTEX_TEXTURES' : '',\n\n\t\t\t'#define GAMMA_FACTOR ' + gammaFactorDefine,\n\n\t\t\t'#define MAX_BONES ' + parameters.maxBones,\n\n\t\t\tparameters.map ? '#define USE_MAP' : '',\n\t\t\tparameters.envMap ? '#define USE_ENVMAP' : '',\n\t\t\tparameters.envMap ? '#define ' + envMapModeDefine : '',\n\t\t\tparameters.lightMap ? '#define USE_LIGHTMAP' : '',\n\t\t\tparameters.aoMap ? '#define USE_AOMAP' : '',\n\t\t\tparameters.emissiveMap ? '#define USE_EMISSIVEMAP' : '',\n\t\t\tparameters.bumpMap ? '#define USE_BUMPMAP' : '',\n\t\t\tparameters.normalMap ? '#define USE_NORMALMAP' : '',\n\t\t\tparameters.displacementMap && parameters.supportsVertexTextures ? '#define USE_DISPLACEMENTMAP' : '',\n\t\t\tparameters.specularMap ? '#define USE_SPECULARMAP' : '',\n\t\t\tparameters.roughnessMap ? '#define USE_ROUGHNESSMAP' : '',\n\t\t\tparameters.metalnessMap ? '#define USE_METALNESSMAP' : '',\n\t\t\tparameters.alphaMap ? '#define USE_ALPHAMAP' : '',\n\t\t\tparameters.vertexColors ? '#define USE_COLOR' : '',\n\n\t\t\tparameters.flatShading ? '#define FLAT_SHADED' : '',\n\n\t\t\tparameters.skinning ? '#define USE_SKINNING' : '',\n\t\t\tparameters.useVertexTexture ? '#define BONE_TEXTURE' : '',\n\n\t\t\tparameters.morphTargets ? '#define USE_MORPHTARGETS' : '',\n\t\t\tparameters.morphNormals && parameters.flatShading === false ? '#define USE_MORPHNORMALS' : '',\n\t\t\tparameters.doubleSided ? '#define DOUBLE_SIDED' : '',\n\t\t\tparameters.flipSided ? '#define FLIP_SIDED' : '',\n\n\t\t\t'#define NUM_CLIPPING_PLANES ' + parameters.numClippingPlanes,\n\n\t\t\tparameters.shadowMapEnabled ? '#define USE_SHADOWMAP' : '',\n\t\t\tparameters.shadowMapEnabled ? '#define ' + shadowMapTypeDefine : '',\n\n\t\t\tparameters.sizeAttenuation ? '#define USE_SIZEATTENUATION' : '',\n\n\t\t\tparameters.logarithmicDepthBuffer ? '#define USE_LOGDEPTHBUF' : '',\n\t\t\tparameters.logarithmicDepthBuffer && renderer.extensions.get( 'EXT_frag_depth' ) ? '#define USE_LOGDEPTHBUF_EXT' : '',\n\n\t\t\t'uniform mat4 modelMatrix;',\n\t\t\t'uniform mat4 modelViewMatrix;',\n\t\t\t'uniform mat4 projectionMatrix;',\n\t\t\t'uniform mat4 viewMatrix;',\n\t\t\t'uniform mat3 normalMatrix;',\n\t\t\t'uniform vec3 cameraPosition;',\n\n\t\t\t'attribute vec3 position;',\n\t\t\t'attribute vec3 normal;',\n\t\t\t'attribute vec2 uv;',\n\n\t\t\t'#ifdef USE_COLOR',\n\n\t\t\t'\tattribute vec3 color;',\n\n\t\t\t'#endif',\n\n\t\t\t'#ifdef USE_MORPHTARGETS',\n\n\t\t\t'\tattribute vec3 morphTarget0;',\n\t\t\t'\tattribute vec3 morphTarget1;',\n\t\t\t'\tattribute vec3 morphTarget2;',\n\t\t\t'\tattribute vec3 morphTarget3;',\n\n\t\t\t'\t#ifdef USE_MORPHNORMALS',\n\n\t\t\t'\t\tattribute vec3 morphNormal0;',\n\t\t\t'\t\tattribute vec3 morphNormal1;',\n\t\t\t'\t\tattribute vec3 morphNormal2;',\n\t\t\t'\t\tattribute vec3 morphNormal3;',\n\n\t\t\t'\t#else',\n\n\t\t\t'\t\tattribute vec3 morphTarget4;',\n\t\t\t'\t\tattribute vec3 morphTarget5;',\n\t\t\t'\t\tattribute vec3 morphTarget6;',\n\t\t\t'\t\tattribute vec3 morphTarget7;',\n\n\t\t\t'\t#endif',\n\n\t\t\t'#endif',\n\n\t\t\t'#ifdef USE_SKINNING',\n\n\t\t\t'\tattribute vec4 skinIndex;',\n\t\t\t'\tattribute vec4 skinWeight;',\n\n\t\t\t'#endif',\n\n\t\t\t'\\n'\n\n\t\t].filter( filterEmptyLine ).join( '\\n' );\n\n\t\tprefixFragment = [\n\n\t\t\tcustomExtensions,\n\n\t\t\t'precision ' + parameters.precision + ' float;',\n\t\t\t'precision ' + parameters.precision + ' int;',\n\n\t\t\t'#define SHADER_NAME ' + material.__webglShader.name,\n\n\t\t\tcustomDefines,\n\n\t\t\tparameters.alphaTest ? '#define ALPHATEST ' + parameters.alphaTest : '',\n\n\t\t\t'#define GAMMA_FACTOR ' + gammaFactorDefine,\n\n\t\t\t( parameters.useFog && parameters.fog ) ? '#define USE_FOG' : '',\n\t\t\t( parameters.useFog && parameters.fogExp ) ? '#define FOG_EXP2' : '',\n\n\t\t\tparameters.map ? '#define USE_MAP' : '',\n\t\t\tparameters.envMap ? '#define USE_ENVMAP' : '',\n\t\t\tparameters.envMap ? '#define ' + envMapTypeDefine : '',\n\t\t\tparameters.envMap ? '#define ' + envMapModeDefine : '',\n\t\t\tparameters.envMap ? '#define ' + envMapBlendingDefine : '',\n\t\t\tparameters.lightMap ? '#define USE_LIGHTMAP' : '',\n\t\t\tparameters.aoMap ? '#define USE_AOMAP' : '',\n\t\t\tparameters.emissiveMap ? '#define USE_EMISSIVEMAP' : '',\n\t\t\tparameters.bumpMap ? '#define USE_BUMPMAP' : '',\n\t\t\tparameters.normalMap ? '#define USE_NORMALMAP' : '',\n\t\t\tparameters.specularMap ? '#define USE_SPECULARMAP' : '',\n\t\t\tparameters.roughnessMap ? '#define USE_ROUGHNESSMAP' : '',\n\t\t\tparameters.metalnessMap ? '#define USE_METALNESSMAP' : '',\n\t\t\tparameters.alphaMap ? '#define USE_ALPHAMAP' : '',\n\t\t\tparameters.vertexColors ? '#define USE_COLOR' : '',\n\n\t\t\tparameters.flatShading ? '#define FLAT_SHADED' : '',\n\n\t\t\tparameters.doubleSided ? '#define DOUBLE_SIDED' : '',\n\t\t\tparameters.flipSided ? '#define FLIP_SIDED' : '',\n\n\t\t\t'#define NUM_CLIPPING_PLANES ' + parameters.numClippingPlanes,\n\t\t\t'#define UNION_CLIPPING_PLANES ' + (parameters.numClippingPlanes - parameters.numClipIntersection),\n\n\t\t\tparameters.shadowMapEnabled ? '#define USE_SHADOWMAP' : '',\n\t\t\tparameters.shadowMapEnabled ? '#define ' + shadowMapTypeDefine : '',\n\n\t\t\tparameters.premultipliedAlpha ? \"#define PREMULTIPLIED_ALPHA\" : '',\n\n\t\t\tparameters.physicallyCorrectLights ? \"#define PHYSICALLY_CORRECT_LIGHTS\" : '',\n\n\t\t\tparameters.logarithmicDepthBuffer ? '#define USE_LOGDEPTHBUF' : '',\n\t\t\tparameters.logarithmicDepthBuffer && renderer.extensions.get( 'EXT_frag_depth' ) ? '#define USE_LOGDEPTHBUF_EXT' : '',\n\n\t\t\tparameters.envMap && renderer.extensions.get( 'EXT_shader_texture_lod' ) ? '#define TEXTURE_LOD_EXT' : '',\n\n\t\t\t'uniform mat4 viewMatrix;',\n\t\t\t'uniform vec3 cameraPosition;',\n\n\t\t\t( parameters.toneMapping !== NoToneMapping ) ? \"#define TONE_MAPPING\" : '',\n\t\t\t( parameters.toneMapping !== NoToneMapping ) ? ShaderChunk[ 'tonemapping_pars_fragment' ] : '', // this code is required here because it is used by the toneMapping() function defined below\n\t\t\t( parameters.toneMapping !== NoToneMapping ) ? getToneMappingFunction( \"toneMapping\", parameters.toneMapping ) : '',\n\n\t\t\t( parameters.outputEncoding || parameters.mapEncoding || parameters.envMapEncoding || parameters.emissiveMapEncoding ) ? ShaderChunk[ 'encodings_pars_fragment' ] : '', // this code is required here because it is used by the various encoding/decoding function defined below\n\t\t\tparameters.mapEncoding ? getTexelDecodingFunction( 'mapTexelToLinear', parameters.mapEncoding ) : '',\n\t\t\tparameters.envMapEncoding ? getTexelDecodingFunction( 'envMapTexelToLinear', parameters.envMapEncoding ) : '',\n\t\t\tparameters.emissiveMapEncoding ? getTexelDecodingFunction( 'emissiveMapTexelToLinear', parameters.emissiveMapEncoding ) : '',\n\t\t\tparameters.outputEncoding ? getTexelEncodingFunction( \"linearToOutputTexel\", parameters.outputEncoding ) : '',\n\n\t\t\tparameters.depthPacking ? \"#define DEPTH_PACKING \" + material.depthPacking : '',\n\n\t\t\t'\\n'\n\n\t\t].filter( filterEmptyLine ).join( '\\n' );\n\n\t}\n\n\tvertexShader = parseIncludes( vertexShader, parameters );\n\tvertexShader = replaceLightNums( vertexShader, parameters );\n\n\tfragmentShader = parseIncludes( fragmentShader, parameters );\n\tfragmentShader = replaceLightNums( fragmentShader, parameters );\n\n\tif ( ! material.isShaderMaterial ) {\n\n\t\tvertexShader = unrollLoops( vertexShader );\n\t\tfragmentShader = unrollLoops( fragmentShader );\n\n\t}\n\n\tvar vertexGlsl = prefixVertex + vertexShader;\n\tvar fragmentGlsl = prefixFragment + fragmentShader;\n\n\t// console.log( '*VERTEX*', vertexGlsl );\n\t// console.log( '*FRAGMENT*', fragmentGlsl );\n\n\tvar glVertexShader = WebGLShader( gl, gl.VERTEX_SHADER, vertexGlsl );\n\tvar glFragmentShader = WebGLShader( gl, gl.FRAGMENT_SHADER, fragmentGlsl );\n\n\tgl.attachShader( program, glVertexShader );\n\tgl.attachShader( program, glFragmentShader );\n\n\t// Force a particular attribute to index 0.\n\n\tif ( material.index0AttributeName !== undefined ) {\n\n\t\tgl.bindAttribLocation( program, 0, material.index0AttributeName );\n\n\t} else if ( parameters.morphTargets === true ) {\n\n\t\t// programs with morphTargets displace position out of attribute 0\n\t\tgl.bindAttribLocation( program, 0, 'position' );\n\n\t}\n\n\tgl.linkProgram( program );\n\n\tvar programLog = gl.getProgramInfoLog( program );\n\tvar vertexLog = gl.getShaderInfoLog( glVertexShader );\n\tvar fragmentLog = gl.getShaderInfoLog( glFragmentShader );\n\n\tvar runnable = true;\n\tvar haveDiagnostics = true;\n\n\t// console.log( '**VERTEX**', gl.getExtension( 'WEBGL_debug_shaders' ).getTranslatedShaderSource( glVertexShader ) );\n\t// console.log( '**FRAGMENT**', gl.getExtension( 'WEBGL_debug_shaders' ).getTranslatedShaderSource( glFragmentShader ) );\n\n\tif ( gl.getProgramParameter( program, gl.LINK_STATUS ) === false ) {\n\n\t\trunnable = false;\n\n\t\tconsole.error( 'THREE.WebGLProgram: shader error: ', gl.getError(), 'gl.VALIDATE_STATUS', gl.getProgramParameter( program, gl.VALIDATE_STATUS ), 'gl.getProgramInfoLog', programLog, vertexLog, fragmentLog );\n\n\t} else if ( programLog !== '' ) {\n\n\t\tconsole.warn( 'THREE.WebGLProgram: gl.getProgramInfoLog()', programLog );\n\n\t} else if ( vertexLog === '' || fragmentLog === '' ) {\n\n\t\thaveDiagnostics = false;\n\n\t}\n\n\tif ( haveDiagnostics ) {\n\n\t\tthis.diagnostics = {\n\n\t\t\trunnable: runnable,\n\t\t\tmaterial: material,\n\n\t\t\tprogramLog: programLog,\n\n\t\t\tvertexShader: {\n\n\t\t\t\tlog: vertexLog,\n\t\t\t\tprefix: prefixVertex\n\n\t\t\t},\n\n\t\t\tfragmentShader: {\n\n\t\t\t\tlog: fragmentLog,\n\t\t\t\tprefix: prefixFragment\n\n\t\t\t}\n\n\t\t};\n\n\t}\n\n\t// clean up\n\n\tgl.deleteShader( glVertexShader );\n\tgl.deleteShader( glFragmentShader );\n\n\t// set up caching for uniform locations\n\n\tvar cachedUniforms;\n\n\tthis.getUniforms = function() {\n\n\t\tif ( cachedUniforms === undefined ) {\n\n\t\t\tcachedUniforms =\n\t\t\t\t\tnew WebGLUniforms( gl, program, renderer );\n\n\t\t}\n\n\t\treturn cachedUniforms;\n\n\t};\n\n\t// set up caching for attribute locations\n\n\tvar cachedAttributes;\n\n\tthis.getAttributes = function() {\n\n\t\tif ( cachedAttributes === undefined ) {\n\n\t\t\tcachedAttributes = fetchAttributeLocations( gl, program );\n\n\t\t}\n\n\t\treturn cachedAttributes;\n\n\t};\n\n\t// free resource\n\n\tthis.destroy = function() {\n\n\t\tgl.deleteProgram( program );\n\t\tthis.program = undefined;\n\n\t};\n\n\t// DEPRECATED\n\n\tObject.defineProperties( this, {\n\n\t\tuniforms: {\n\t\t\tget: function() {\n\n\t\t\t\tconsole.warn( 'THREE.WebGLProgram: .uniforms is now .getUniforms().' );\n\t\t\t\treturn this.getUniforms();\n\n\t\t\t}\n\t\t},\n\n\t\tattributes: {\n\t\t\tget: function() {\n\n\t\t\t\tconsole.warn( 'THREE.WebGLProgram: .attributes is now .getAttributes().' );\n\t\t\t\treturn this.getAttributes();\n\n\t\t\t}\n\t\t}\n\n\t} );\n\n\n\t//\n\n\tthis.id = programIdCount ++;\n\tthis.code = code;\n\tthis.usedTimes = 1;\n\tthis.program = program;\n\tthis.vertexShader = glVertexShader;\n\tthis.fragmentShader = glFragmentShader;\n\n\treturn this;\n\n}\n\nexport { WebGLProgram };\n","/**\n * @author mrdoob / http://mrdoob.com/\n */\n\nimport { WebGLProgram } from './WebGLProgram';\nimport { BackSide, DoubleSide, FlatShading, CubeUVRefractionMapping, CubeUVReflectionMapping, GammaEncoding, LinearEncoding } from '../../constants';\n\nfunction WebGLPrograms( renderer, capabilities ) {\n\n\tvar programs = [];\n\n\tvar shaderIDs = {\n\t\tMeshDepthMaterial: 'depth',\n\t\tMeshNormalMaterial: 'normal',\n\t\tMeshBasicMaterial: 'basic',\n\t\tMeshLambertMaterial: 'lambert',\n\t\tMeshPhongMaterial: 'phong',\n\t\tMeshStandardMaterial: 'physical',\n\t\tMeshPhysicalMaterial: 'physical',\n\t\tLineBasicMaterial: 'basic',\n\t\tLineDashedMaterial: 'dashed',\n\t\tPointsMaterial: 'points'\n\t};\n\n\tvar parameterNames = [\n\t\t\"precision\", \"supportsVertexTextures\", \"map\", \"mapEncoding\", \"envMap\", \"envMapMode\", \"envMapEncoding\",\n\t\t\"lightMap\", \"aoMap\", \"emissiveMap\", \"emissiveMapEncoding\", \"bumpMap\", \"normalMap\", \"displacementMap\", \"specularMap\",\n\t\t\"roughnessMap\", \"metalnessMap\",\n\t\t\"alphaMap\", \"combine\", \"vertexColors\", \"fog\", \"useFog\", \"fogExp\",\n\t\t\"flatShading\", \"sizeAttenuation\", \"logarithmicDepthBuffer\", \"skinning\",\n\t\t\"maxBones\", \"useVertexTexture\", \"morphTargets\", \"morphNormals\",\n\t\t\"maxMorphTargets\", \"maxMorphNormals\", \"premultipliedAlpha\",\n\t\t\"numDirLights\", \"numPointLights\", \"numSpotLights\", \"numHemiLights\",\n\t\t\"shadowMapEnabled\", \"shadowMapType\", \"toneMapping\", 'physicallyCorrectLights',\n\t\t\"alphaTest\", \"doubleSided\", \"flipSided\", \"numClippingPlanes\", \"numClipIntersection\", \"depthPacking\"\n\t];\n\n\n\tfunction allocateBones( object ) {\n\n\t\tif ( capabilities.floatVertexTextures && object && object.skeleton && object.skeleton.useVertexTexture ) {\n\n\t\t\treturn 1024;\n\n\t\t} else {\n\n\t\t\t// default for when object is not specified\n\t\t\t// ( for example when prebuilding shader to be used with multiple objects )\n\t\t\t//\n\t\t\t// - leave some extra space for other uniforms\n\t\t\t// - limit here is ANGLE's 254 max uniform vectors\n\t\t\t// (up to 54 should be safe)\n\n\t\t\tvar nVertexUniforms = capabilities.maxVertexUniforms;\n\t\t\tvar nVertexMatrices = Math.floor( ( nVertexUniforms - 20 ) / 4 );\n\n\t\t\tvar maxBones = nVertexMatrices;\n\n\t\t\tif ( object !== undefined && (object && object.isSkinnedMesh) ) {\n\n\t\t\t\tmaxBones = Math.min( object.skeleton.bones.length, maxBones );\n\n\t\t\t\tif ( maxBones < object.skeleton.bones.length ) {\n\n\t\t\t\t\tconsole.warn( 'WebGLRenderer: too many bones - ' + object.skeleton.bones.length + ', this GPU supports just ' + maxBones + ' (try OpenGL instead of ANGLE)' );\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t\treturn maxBones;\n\n\t\t}\n\n\t}\n\n\tfunction getTextureEncodingFromMap( map, gammaOverrideLinear ) {\n\n\t\tvar encoding;\n\n\t\tif ( ! map ) {\n\n\t\t\tencoding = LinearEncoding;\n\n\t\t} else if ( (map && map.isTexture) ) {\n\n\t\t\tencoding = map.encoding;\n\n\t\t} else if ( (map && map.isWebGLRenderTarget) ) {\n\n\t\t\tconsole.warn( \"THREE.WebGLPrograms.getTextureEncodingFromMap: don't use render targets as textures. Use their .texture property instead.\" );\n\t\t\tencoding = map.texture.encoding;\n\n\t\t}\n\n\t\t// add backwards compatibility for WebGLRenderer.gammaInput/gammaOutput parameter, should probably be removed at some point.\n\t\tif ( encoding === LinearEncoding && gammaOverrideLinear ) {\n\n\t\t\tencoding = GammaEncoding;\n\n\t\t}\n\n\t\treturn encoding;\n\n\t}\n\n\tthis.getParameters = function ( material, lights, fog, nClipPlanes, nClipIntersection, object ) {\n\n\t\tvar shaderID = shaderIDs[ material.type ];\n\n\t\t// heuristics to create shader parameters according to lights in the scene\n\t\t// (not to blow over maxLights budget)\n\n\t\tvar maxBones = allocateBones( object );\n\t\tvar precision = renderer.getPrecision();\n\n\t\tif ( material.precision !== null ) {\n\n\t\t\tprecision = capabilities.getMaxPrecision( material.precision );\n\n\t\t\tif ( precision !== material.precision ) {\n\n\t\t\t\tconsole.warn( 'THREE.WebGLProgram.getParameters:', material.precision, 'not supported, using', precision, 'instead.' );\n\n\t\t\t}\n\n\t\t}\n\n\t\tvar currentRenderTarget = renderer.getCurrentRenderTarget();\n\n\t\tvar parameters = {\n\n\t\t\tshaderID: shaderID,\n\n\t\t\tprecision: precision,\n\t\t\tsupportsVertexTextures: capabilities.vertexTextures,\n\t\t\toutputEncoding: getTextureEncodingFromMap( ( ! currentRenderTarget ) ? null : currentRenderTarget.texture, renderer.gammaOutput ),\n\t\t\tmap: !! material.map,\n\t\t\tmapEncoding: getTextureEncodingFromMap( material.map, renderer.gammaInput ),\n\t\t\tenvMap: !! material.envMap,\n\t\t\tenvMapMode: material.envMap && material.envMap.mapping,\n\t\t\tenvMapEncoding: getTextureEncodingFromMap( material.envMap, renderer.gammaInput ),\n\t\t\tenvMapCubeUV: ( !! material.envMap ) && ( ( material.envMap.mapping === CubeUVReflectionMapping ) || ( material.envMap.mapping === CubeUVRefractionMapping ) ),\n\t\t\tlightMap: !! material.lightMap,\n\t\t\taoMap: !! material.aoMap,\n\t\t\temissiveMap: !! material.emissiveMap,\n\t\t\temissiveMapEncoding: getTextureEncodingFromMap( material.emissiveMap, renderer.gammaInput ),\n\t\t\tbumpMap: !! material.bumpMap,\n\t\t\tnormalMap: !! material.normalMap,\n\t\t\tdisplacementMap: !! material.displacementMap,\n\t\t\troughnessMap: !! material.roughnessMap,\n\t\t\tmetalnessMap: !! material.metalnessMap,\n\t\t\tspecularMap: !! material.specularMap,\n\t\t\talphaMap: !! material.alphaMap,\n\n\t\t\tcombine: material.combine,\n\n\t\t\tvertexColors: material.vertexColors,\n\n\t\t\tfog: !! fog,\n\t\t\tuseFog: material.fog,\n\t\t\tfogExp: (fog && fog.isFogExp2),\n\n\t\t\tflatShading: material.shading === FlatShading,\n\n\t\t\tsizeAttenuation: material.sizeAttenuation,\n\t\t\tlogarithmicDepthBuffer: capabilities.logarithmicDepthBuffer,\n\n\t\t\tskinning: material.skinning,\n\t\t\tmaxBones: maxBones,\n\t\t\tuseVertexTexture: capabilities.floatVertexTextures && object && object.skeleton && object.skeleton.useVertexTexture,\n\n\t\t\tmorphTargets: material.morphTargets,\n\t\t\tmorphNormals: material.morphNormals,\n\t\t\tmaxMorphTargets: renderer.maxMorphTargets,\n\t\t\tmaxMorphNormals: renderer.maxMorphNormals,\n\n\t\t\tnumDirLights: lights.directional.length,\n\t\t\tnumPointLights: lights.point.length,\n\t\t\tnumSpotLights: lights.spot.length,\n\t\t\tnumHemiLights: lights.hemi.length,\n\n\t\t\tnumClippingPlanes: nClipPlanes,\n\t\t\tnumClipIntersection: nClipIntersection,\n\n\t\t\tshadowMapEnabled: renderer.shadowMap.enabled && object.receiveShadow && lights.shadows.length > 0,\n\t\t\tshadowMapType: renderer.shadowMap.type,\n\n\t\t\ttoneMapping: renderer.toneMapping,\n\t\t\tphysicallyCorrectLights: renderer.physicallyCorrectLights,\n\n\t\t\tpremultipliedAlpha: material.premultipliedAlpha,\n\n\t\t\talphaTest: material.alphaTest,\n\t\t\tdoubleSided: material.side === DoubleSide,\n\t\t\tflipSided: material.side === BackSide,\n\n\t\t\tdepthPacking: ( material.depthPacking !== undefined ) ? material.depthPacking : false\n\n\t\t};\n\n\t\treturn parameters;\n\n\t};\n\n\tthis.getProgramCode = function ( material, parameters ) {\n\n\t\tvar array = [];\n\n\t\tif ( parameters.shaderID ) {\n\n\t\t\tarray.push( parameters.shaderID );\n\n\t\t} else {\n\n\t\t\tarray.push( material.fragmentShader );\n\t\t\tarray.push( material.vertexShader );\n\n\t\t}\n\n\t\tif ( material.defines !== undefined ) {\n\n\t\t\tfor ( var name in material.defines ) {\n\n\t\t\t\tarray.push( name );\n\t\t\t\tarray.push( material.defines[ name ] );\n\n\t\t\t}\n\n\t\t}\n\n\t\tfor ( var i = 0; i < parameterNames.length; i ++ ) {\n\n\t\t\tarray.push( parameters[ parameterNames[ i ] ] );\n\n\t\t}\n\n\t\treturn array.join();\n\n\t};\n\n\tthis.acquireProgram = function ( material, parameters, code ) {\n\n\t\tvar program;\n\n\t\t// Check if code has been already compiled\n\t\tfor ( var p = 0, pl = programs.length; p < pl; p ++ ) {\n\n\t\t\tvar programInfo = programs[ p ];\n\n\t\t\tif ( programInfo.code === code ) {\n\n\t\t\t\tprogram = programInfo;\n\t\t\t\t++ program.usedTimes;\n\n\t\t\t\tbreak;\n\n\t\t\t}\n\n\t\t}\n\n\t\tif ( program === undefined ) {\n\n\t\t\tprogram = new WebGLProgram( renderer, code, material, parameters );\n\t\t\tprograms.push( program );\n\n\t\t}\n\n\t\treturn program;\n\n\t};\n\n\tthis.releaseProgram = function( program ) {\n\n\t\tif ( -- program.usedTimes === 0 ) {\n\n\t\t\t// Remove from unordered set\n\t\t\tvar i = programs.indexOf( program );\n\t\t\tprograms[ i ] = programs[ programs.length - 1 ];\n\t\t\tprograms.pop();\n\n\t\t\t// Free WebGL resources\n\t\t\tprogram.destroy();\n\n\t\t}\n\n\t};\n\n\t// Exposed for resource monitoring & error feedback via renderer.info:\n\tthis.programs = programs;\n\n}\n\n\nexport { WebGLPrograms };\n","/**\n * @author mrdoob / http://mrdoob.com/\n */\n\nimport { BufferGeometry } from '../../core/BufferGeometry';\n\nfunction WebGLGeometries( gl, properties, info ) {\n\n\tvar geometries = {};\n\n\tfunction onGeometryDispose( event ) {\n\n\t\tvar geometry = event.target;\n\t\tvar buffergeometry = geometries[ geometry.id ];\n\n\t\tif ( buffergeometry.index !== null ) {\n\n\t\t\tdeleteAttribute( buffergeometry.index );\n\n\t\t}\n\n\t\tdeleteAttributes( buffergeometry.attributes );\n\n\t\tgeometry.removeEventListener( 'dispose', onGeometryDispose );\n\n\t\tdelete geometries[ geometry.id ];\n\n\t\t// TODO\n\n\t\tvar property = properties.get( geometry );\n\n\t\tif ( property.wireframe ) {\n\n\t\t\tdeleteAttribute( property.wireframe );\n\n\t\t}\n\n\t\tproperties.delete( geometry );\n\n\t\tvar bufferproperty = properties.get( buffergeometry );\n\n\t\tif ( bufferproperty.wireframe ) {\n\n\t\t\tdeleteAttribute( bufferproperty.wireframe );\n\n\t\t}\n\n\t\tproperties.delete( buffergeometry );\n\n\t\t//\n\n\t\tinfo.memory.geometries --;\n\n\t}\n\n\tfunction getAttributeBuffer( attribute ) {\n\n\t\tif ( attribute.isInterleavedBufferAttribute ) {\n\n\t\t\treturn properties.get( attribute.data ).__webglBuffer;\n\n\t\t}\n\n\t\treturn properties.get( attribute ).__webglBuffer;\n\n\t}\n\n\tfunction deleteAttribute( attribute ) {\n\n\t\tvar buffer = getAttributeBuffer( attribute );\n\n\t\tif ( buffer !== undefined ) {\n\n\t\t\tgl.deleteBuffer( buffer );\n\t\t\tremoveAttributeBuffer( attribute );\n\n\t\t}\n\n\t}\n\n\tfunction deleteAttributes( attributes ) {\n\n\t\tfor ( var name in attributes ) {\n\n\t\t\tdeleteAttribute( attributes[ name ] );\n\n\t\t}\n\n\t}\n\n\tfunction removeAttributeBuffer( attribute ) {\n\n\t\tif ( attribute.isInterleavedBufferAttribute ) {\n\n\t\t\tproperties.delete( attribute.data );\n\n\t\t} else {\n\n\t\t\tproperties.delete( attribute );\n\n\t\t}\n\n\t}\n\n\treturn {\n\n\t\tget: function ( object ) {\n\n\t\t\tvar geometry = object.geometry;\n\n\t\t\tif ( geometries[ geometry.id ] !== undefined ) {\n\n\t\t\t\treturn geometries[ geometry.id ];\n\n\t\t\t}\n\n\t\t\tgeometry.addEventListener( 'dispose', onGeometryDispose );\n\n\t\t\tvar buffergeometry;\n\n\t\t\tif ( geometry.isBufferGeometry ) {\n\n\t\t\t\tbuffergeometry = geometry;\n\n\t\t\t} else if ( geometry.isGeometry ) {\n\n\t\t\t\tif ( geometry._bufferGeometry === undefined ) {\n\n\t\t\t\t\tgeometry._bufferGeometry = new BufferGeometry().setFromObject( object );\n\n\t\t\t\t}\n\n\t\t\t\tbuffergeometry = geometry._bufferGeometry;\n\n\t\t\t}\n\n\t\t\tgeometries[ geometry.id ] = buffergeometry;\n\n\t\t\tinfo.memory.geometries ++;\n\n\t\t\treturn buffergeometry;\n\n\t\t}\n\n\t};\n\n}\n\n\nexport { WebGLGeometries };\n","/**\n * @author mrdoob / http://mrdoob.com/\n */\n\nimport { BufferAttribute } from '../../core/BufferAttribute';\nimport { WebGLGeometries } from './WebGLGeometries';\n\nfunction WebGLObjects( gl, properties, info ) {\n\n\tvar geometries = new WebGLGeometries( gl, properties, info );\n\n\t//\n\n\tfunction update( object ) {\n\n\t\t// TODO: Avoid updating twice (when using shadowMap). Maybe add frame counter.\n\n\t\tvar geometry = geometries.get( object );\n\n\t\tif ( object.geometry.isGeometry ) {\n\n\t\t\tgeometry.updateFromObject( object );\n\n\t\t}\n\n\t\tvar index = geometry.index;\n\t\tvar attributes = geometry.attributes;\n\n\t\tif ( index !== null ) {\n\n\t\t\tupdateAttribute( index, gl.ELEMENT_ARRAY_BUFFER );\n\n\t\t}\n\n\t\tfor ( var name in attributes ) {\n\n\t\t\tupdateAttribute( attributes[ name ], gl.ARRAY_BUFFER );\n\n\t\t}\n\n\t\t// morph targets\n\n\t\tvar morphAttributes = geometry.morphAttributes;\n\n\t\tfor ( var name in morphAttributes ) {\n\n\t\t\tvar array = morphAttributes[ name ];\n\n\t\t\tfor ( var i = 0, l = array.length; i < l; i ++ ) {\n\n\t\t\t\tupdateAttribute( array[ i ], gl.ARRAY_BUFFER );\n\n\t\t\t}\n\n\t\t}\n\n\t\treturn geometry;\n\n\t}\n\n\tfunction updateAttribute( attribute, bufferType ) {\n\n\t\tvar data = ( attribute.isInterleavedBufferAttribute ) ? attribute.data : attribute;\n\n\t\tvar attributeProperties = properties.get( data );\n\n\t\tif ( attributeProperties.__webglBuffer === undefined ) {\n\n\t\t\tcreateBuffer( attributeProperties, data, bufferType );\n\n\t\t} else if ( attributeProperties.version !== data.version ) {\n\n\t\t\tupdateBuffer( attributeProperties, data, bufferType );\n\n\t\t}\n\n\t}\n\n\tfunction createBuffer( attributeProperties, data, bufferType ) {\n\n\t\tattributeProperties.__webglBuffer = gl.createBuffer();\n\t\tgl.bindBuffer( bufferType, attributeProperties.__webglBuffer );\n\n\t\tvar usage = data.dynamic ? gl.DYNAMIC_DRAW : gl.STATIC_DRAW;\n\n\t\tgl.bufferData( bufferType, data.array, usage );\n\n\t\tattributeProperties.version = data.version;\n\n\t}\n\n\tfunction updateBuffer( attributeProperties, data, bufferType ) {\n\n\t\tgl.bindBuffer( bufferType, attributeProperties.__webglBuffer );\n\n\t\tif ( data.dynamic === false ) {\n\n\t\t\tgl.bufferData( bufferType, data.array, gl.STATIC_DRAW );\n\n\t\t} else if ( data.updateRange.count === - 1 ) {\n\n\t\t\t// Not using update ranges\n\n\t\t\tgl.bufferSubData( bufferType, 0, data.array );\n\n\t\t} else if ( data.updateRange.count === 0 ) {\n\n\t\t\tconsole.error( 'THREE.WebGLObjects.updateBuffer: dynamic THREE.BufferAttribute marked as needsUpdate but updateRange.count is 0, ensure you are using set methods or updating manually.' );\n\n\t\t} else {\n\n\t\t\tgl.bufferSubData( bufferType, data.updateRange.offset * data.array.BYTES_PER_ELEMENT,\n\t\t\t\t\t\t\t data.array.subarray( data.updateRange.offset, data.updateRange.offset + data.updateRange.count ) );\n\n\t\t\tdata.updateRange.count = 0; // reset range\n\n\t\t}\n\n\t\tattributeProperties.version = data.version;\n\n\t}\n\n\tfunction getAttributeBuffer( attribute ) {\n\n\t\tif ( attribute.isInterleavedBufferAttribute ) {\n\n\t\t\treturn properties.get( attribute.data ).__webglBuffer;\n\n\t\t}\n\n\t\treturn properties.get( attribute ).__webglBuffer;\n\n\t}\n\n\tfunction getWireframeAttribute( geometry ) {\n\n\t\tvar property = properties.get( geometry );\n\n\t\tif ( property.wireframe !== undefined ) {\n\n\t\t\treturn property.wireframe;\n\n\t\t}\n\n\t\tvar indices = [];\n\n\t\tvar index = geometry.index;\n\t\tvar attributes = geometry.attributes;\n\t\tvar position = attributes.position;\n\n\t\t// console.time( 'wireframe' );\n\n\t\tif ( index !== null ) {\n\n\t\t\tvar edges = {};\n\t\t\tvar array = index.array;\n\n\t\t\tfor ( var i = 0, l = array.length; i < l; i += 3 ) {\n\n\t\t\t\tvar a = array[ i + 0 ];\n\t\t\t\tvar b = array[ i + 1 ];\n\t\t\t\tvar c = array[ i + 2 ];\n\n\t\t\t\tindices.push( a, b, b, c, c, a );\n\n\t\t\t}\n\n\t\t} else {\n\n\t\t\tvar array = attributes.position.array;\n\n\t\t\tfor ( var i = 0, l = ( array.length / 3 ) - 1; i < l; i += 3 ) {\n\n\t\t\t\tvar a = i + 0;\n\t\t\t\tvar b = i + 1;\n\t\t\t\tvar c = i + 2;\n\n\t\t\t\tindices.push( a, b, b, c, c, a );\n\n\t\t\t}\n\n\t\t}\n\n\t\t// console.timeEnd( 'wireframe' );\n\n\t\tvar TypeArray = position.count > 65535 ? Uint32Array : Uint16Array;\n\t\tvar attribute = new BufferAttribute( new TypeArray( indices ), 1 );\n\n\t\tupdateAttribute( attribute, gl.ELEMENT_ARRAY_BUFFER );\n\n\t\tproperty.wireframe = attribute;\n\n\t\treturn attribute;\n\n\t}\n\n\treturn {\n\n\t\tgetAttributeBuffer: getAttributeBuffer,\n\t\tgetWireframeAttribute: getWireframeAttribute,\n\n\t\tupdate: update\n\n\t};\n\n}\n\n\nexport { WebGLObjects };\n","/**\n * @author mrdoob / http://mrdoob.com/\n */\n\nimport { LinearFilter, NearestFilter, RGBFormat, RGBAFormat, DepthFormat, DepthStencilFormat, FloatType, HalfFloatType, ClampToEdgeWrapping, NearestMipMapLinearFilter, NearestMipMapNearestFilter } from '../../constants';\nimport { _Math } from '../../math/Math';\n\nfunction WebGLTextures( _gl, extensions, state, properties, capabilities, paramThreeToGL, info ) {\n\n\tvar _infoMemory = info.memory;\n\tvar _isWebGL2 = ( typeof WebGL2RenderingContext !== 'undefined' && _gl instanceof WebGL2RenderingContext );\n\n\t//\n\n\tfunction clampToMaxSize( image, maxSize ) {\n\n\t\tif ( image.width > maxSize || image.height > maxSize ) {\n\n\t\t\t// Warning: Scaling through the canvas will only work with images that use\n\t\t\t// premultiplied alpha.\n\n\t\t\tvar scale = maxSize / Math.max( image.width, image.height );\n\n\t\t\tvar canvas = document.createElementNS( 'http://www.w3.org/1999/xhtml', 'canvas' );\n\t\t\tcanvas.width = Math.floor( image.width * scale );\n\t\t\tcanvas.height = Math.floor( image.height * scale );\n\n\t\t\tvar context = canvas.getContext( '2d' );\n\t\t\tcontext.drawImage( image, 0, 0, image.width, image.height, 0, 0, canvas.width, canvas.height );\n\n\t\t\tconsole.warn( 'THREE.WebGLRenderer: image is too big (' + image.width + 'x' + image.height + '). Resized to ' + canvas.width + 'x' + canvas.height, image );\n\n\t\t\treturn canvas;\n\n\t\t}\n\n\t\treturn image;\n\n\t}\n\n\tfunction isPowerOfTwo( image ) {\n\n\t\treturn _Math.isPowerOfTwo( image.width ) && _Math.isPowerOfTwo( image.height );\n\n\t}\n\n\tfunction makePowerOfTwo( image ) {\n\n\t\tif ( image instanceof HTMLImageElement || image instanceof HTMLCanvasElement ) {\n\n\t\t\tvar canvas = document.createElementNS( 'http://www.w3.org/1999/xhtml', 'canvas' );\n\t\t\tcanvas.width = _Math.nearestPowerOfTwo( image.width );\n\t\t\tcanvas.height = _Math.nearestPowerOfTwo( image.height );\n\n\t\t\tvar context = canvas.getContext( '2d' );\n\t\t\tcontext.drawImage( image, 0, 0, canvas.width, canvas.height );\n\n\t\t\tconsole.warn( 'THREE.WebGLRenderer: image is not power of two (' + image.width + 'x' + image.height + '). Resized to ' + canvas.width + 'x' + canvas.height, image );\n\n\t\t\treturn canvas;\n\n\t\t}\n\n\t\treturn image;\n\n\t}\n\n\tfunction textureNeedsPowerOfTwo( texture ) {\n\n\t\tif ( texture.wrapS !== ClampToEdgeWrapping || texture.wrapT !== ClampToEdgeWrapping ) return true;\n\t\tif ( texture.minFilter !== NearestFilter && texture.minFilter !== LinearFilter ) return true;\n\n\t\treturn false;\n\n\t}\n\n\t// Fallback filters for non-power-of-2 textures\n\n\tfunction filterFallback( f ) {\n\n\t\tif ( f === NearestFilter || f === NearestMipMapNearestFilter || f === NearestMipMapLinearFilter ) {\n\n\t\t\treturn _gl.NEAREST;\n\n\t\t}\n\n\t\treturn _gl.LINEAR;\n\n\t}\n\n\t//\n\n\tfunction onTextureDispose( event ) {\n\n\t\tvar texture = event.target;\n\n\t\ttexture.removeEventListener( 'dispose', onTextureDispose );\n\n\t\tdeallocateTexture( texture );\n\n\t\t_infoMemory.textures --;\n\n\n\t}\n\n\tfunction onRenderTargetDispose( event ) {\n\n\t\tvar renderTarget = event.target;\n\n\t\trenderTarget.removeEventListener( 'dispose', onRenderTargetDispose );\n\n\t\tdeallocateRenderTarget( renderTarget );\n\n\t\t_infoMemory.textures --;\n\n\t}\n\n\t//\n\n\tfunction deallocateTexture( texture ) {\n\n\t\tvar textureProperties = properties.get( texture );\n\n\t\tif ( texture.image && textureProperties.__image__webglTextureCube ) {\n\n\t\t\t// cube texture\n\n\t\t\t_gl.deleteTexture( textureProperties.__image__webglTextureCube );\n\n\t\t} else {\n\n\t\t\t// 2D texture\n\n\t\t\tif ( textureProperties.__webglInit === undefined ) return;\n\n\t\t\t_gl.deleteTexture( textureProperties.__webglTexture );\n\n\t\t}\n\n\t\t// remove all webgl properties\n\t\tproperties.delete( texture );\n\n\t}\n\n\tfunction deallocateRenderTarget( renderTarget ) {\n\n\t\tvar renderTargetProperties = properties.get( renderTarget );\n\t\tvar textureProperties = properties.get( renderTarget.texture );\n\n\t\tif ( ! renderTarget ) return;\n\n\t\tif ( textureProperties.__webglTexture !== undefined ) {\n\n\t\t\t_gl.deleteTexture( textureProperties.__webglTexture );\n\n\t\t}\n\n\t\tif ( renderTarget.depthTexture ) {\n\n\t\t\trenderTarget.depthTexture.dispose();\n\n\t\t}\n\n\t\tif ( (renderTarget && renderTarget.isWebGLRenderTargetCube) ) {\n\n\t\t\tfor ( var i = 0; i < 6; i ++ ) {\n\n\t\t\t\t_gl.deleteFramebuffer( renderTargetProperties.__webglFramebuffer[ i ] );\n\t\t\t\tif ( renderTargetProperties.__webglDepthbuffer ) _gl.deleteRenderbuffer( renderTargetProperties.__webglDepthbuffer[ i ] );\n\n\t\t\t}\n\n\t\t} else {\n\n\t\t\t_gl.deleteFramebuffer( renderTargetProperties.__webglFramebuffer );\n\t\t\tif ( renderTargetProperties.__webglDepthbuffer ) _gl.deleteRenderbuffer( renderTargetProperties.__webglDepthbuffer );\n\n\t\t}\n\n\t\tproperties.delete( renderTarget.texture );\n\t\tproperties.delete( renderTarget );\n\n\t}\n\n\t//\n\n\n\n\tfunction setTexture2D( texture, slot ) {\n\n\t\tvar textureProperties = properties.get( texture );\n\n\t\tif ( texture.version > 0 && textureProperties.__version !== texture.version ) {\n\n\t\t\tvar image = texture.image;\n\n\t\t\tif ( image === undefined ) {\n\n\t\t\t\tconsole.warn( 'THREE.WebGLRenderer: Texture marked for update but image is undefined', texture );\n\n\t\t\t} else if ( image.complete === false ) {\n\n\t\t\t\tconsole.warn( 'THREE.WebGLRenderer: Texture marked for update but image is incomplete', texture );\n\n\t\t\t} else {\n\n\t\t\t\tuploadTexture( textureProperties, texture, slot );\n\t\t\t\treturn;\n\n\t\t\t}\n\n\t\t}\n\n\t\tstate.activeTexture( _gl.TEXTURE0 + slot );\n\t\tstate.bindTexture( _gl.TEXTURE_2D, textureProperties.__webglTexture );\n\n\t}\n\n\tfunction setTextureCube( texture, slot ) {\n\n\t\tvar textureProperties = properties.get( texture );\n\n\t\tif ( texture.image.length === 6 ) {\n\n\t\t\tif ( texture.version > 0 && textureProperties.__version !== texture.version ) {\n\n\t\t\t\tif ( ! textureProperties.__image__webglTextureCube ) {\n\n\t\t\t\t\ttexture.addEventListener( 'dispose', onTextureDispose );\n\n\t\t\t\t\ttextureProperties.__image__webglTextureCube = _gl.createTexture();\n\n\t\t\t\t\t_infoMemory.textures ++;\n\n\t\t\t\t}\n\n\t\t\t\tstate.activeTexture( _gl.TEXTURE0 + slot );\n\t\t\t\tstate.bindTexture( _gl.TEXTURE_CUBE_MAP, textureProperties.__image__webglTextureCube );\n\n\t\t\t\t_gl.pixelStorei( _gl.UNPACK_FLIP_Y_WEBGL, texture.flipY );\n\n\t\t\t\tvar isCompressed = (texture && texture.isCompressedTexture);\n\t\t\t\tvar isDataTexture = (texture.image[ 0 ] && texture.image[ 0 ].isDataTexture);\n\n\t\t\t\tvar cubeImage = [];\n\n\t\t\t\tfor ( var i = 0; i < 6; i ++ ) {\n\n\t\t\t\t\tif ( ! isCompressed && ! isDataTexture ) {\n\n\t\t\t\t\t\tcubeImage[ i ] = clampToMaxSize( texture.image[ i ], capabilities.maxCubemapSize );\n\n\t\t\t\t\t} else {\n\n\t\t\t\t\t\tcubeImage[ i ] = isDataTexture ? texture.image[ i ].image : texture.image[ i ];\n\n\t\t\t\t\t}\n\n\t\t\t\t}\n\n\t\t\t\tvar image = cubeImage[ 0 ],\n\t\t\t\tisPowerOfTwoImage = isPowerOfTwo( image ),\n\t\t\t\tglFormat = paramThreeToGL( texture.format ),\n\t\t\t\tglType = paramThreeToGL( texture.type );\n\n\t\t\t\tsetTextureParameters( _gl.TEXTURE_CUBE_MAP, texture, isPowerOfTwoImage );\n\n\t\t\t\tfor ( var i = 0; i < 6; i ++ ) {\n\n\t\t\t\t\tif ( ! isCompressed ) {\n\n\t\t\t\t\t\tif ( isDataTexture ) {\n\n\t\t\t\t\t\t\tstate.texImage2D( _gl.TEXTURE_CUBE_MAP_POSITIVE_X + i, 0, glFormat, cubeImage[ i ].width, cubeImage[ i ].height, 0, glFormat, glType, cubeImage[ i ].data );\n\n\t\t\t\t\t\t} else {\n\n\t\t\t\t\t\t\tstate.texImage2D( _gl.TEXTURE_CUBE_MAP_POSITIVE_X + i, 0, glFormat, glFormat, glType, cubeImage[ i ] );\n\n\t\t\t\t\t\t}\n\n\t\t\t\t\t} else {\n\n\t\t\t\t\t\tvar mipmap, mipmaps = cubeImage[ i ].mipmaps;\n\n\t\t\t\t\t\tfor ( var j = 0, jl = mipmaps.length; j < jl; j ++ ) {\n\n\t\t\t\t\t\t\tmipmap = mipmaps[ j ];\n\n\t\t\t\t\t\t\tif ( texture.format !== RGBAFormat && texture.format !== RGBFormat ) {\n\n\t\t\t\t\t\t\t\tif ( state.getCompressedTextureFormats().indexOf( glFormat ) > - 1 ) {\n\n\t\t\t\t\t\t\t\t\tstate.compressedTexImage2D( _gl.TEXTURE_CUBE_MAP_POSITIVE_X + i, j, glFormat, mipmap.width, mipmap.height, 0, mipmap.data );\n\n\t\t\t\t\t\t\t\t} else {\n\n\t\t\t\t\t\t\t\t\tconsole.warn( \"THREE.WebGLRenderer: Attempt to load unsupported compressed texture format in .setTextureCube()\" );\n\n\t\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\t} else {\n\n\t\t\t\t\t\t\t\tstate.texImage2D( _gl.TEXTURE_CUBE_MAP_POSITIVE_X + i, j, glFormat, mipmap.width, mipmap.height, 0, glFormat, glType, mipmap.data );\n\n\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t}\n\n\t\t\t\t\t}\n\n\t\t\t\t}\n\n\t\t\t\tif ( texture.generateMipmaps && isPowerOfTwoImage ) {\n\n\t\t\t\t\t_gl.generateMipmap( _gl.TEXTURE_CUBE_MAP );\n\n\t\t\t\t}\n\n\t\t\t\ttextureProperties.__version = texture.version;\n\n\t\t\t\tif ( texture.onUpdate ) texture.onUpdate( texture );\n\n\t\t\t} else {\n\n\t\t\t\tstate.activeTexture( _gl.TEXTURE0 + slot );\n\t\t\t\tstate.bindTexture( _gl.TEXTURE_CUBE_MAP, textureProperties.__image__webglTextureCube );\n\n\t\t\t}\n\n\t\t}\n\n\t}\n\n\tfunction setTextureCubeDynamic( texture, slot ) {\n\n\t\tstate.activeTexture( _gl.TEXTURE0 + slot );\n\t\tstate.bindTexture( _gl.TEXTURE_CUBE_MAP, properties.get( texture ).__webglTexture );\n\n\t}\n\n\tfunction setTextureParameters( textureType, texture, isPowerOfTwoImage ) {\n\n\t\tvar extension;\n\n\t\tif ( isPowerOfTwoImage ) {\n\n\t\t\t_gl.texParameteri( textureType, _gl.TEXTURE_WRAP_S, paramThreeToGL( texture.wrapS ) );\n\t\t\t_gl.texParameteri( textureType, _gl.TEXTURE_WRAP_T, paramThreeToGL( texture.wrapT ) );\n\n\t\t\t_gl.texParameteri( textureType, _gl.TEXTURE_MAG_FILTER, paramThreeToGL( texture.magFilter ) );\n\t\t\t_gl.texParameteri( textureType, _gl.TEXTURE_MIN_FILTER, paramThreeToGL( texture.minFilter ) );\n\n\t\t} else {\n\n\t\t\t_gl.texParameteri( textureType, _gl.TEXTURE_WRAP_S, _gl.CLAMP_TO_EDGE );\n\t\t\t_gl.texParameteri( textureType, _gl.TEXTURE_WRAP_T, _gl.CLAMP_TO_EDGE );\n\n\t\t\tif ( texture.wrapS !== ClampToEdgeWrapping || texture.wrapT !== ClampToEdgeWrapping ) {\n\n\t\t\t\tconsole.warn( 'THREE.WebGLRenderer: Texture is not power of two. Texture.wrapS and Texture.wrapT should be set to THREE.ClampToEdgeWrapping.', texture );\n\n\t\t\t}\n\n\t\t\t_gl.texParameteri( textureType, _gl.TEXTURE_MAG_FILTER, filterFallback( texture.magFilter ) );\n\t\t\t_gl.texParameteri( textureType, _gl.TEXTURE_MIN_FILTER, filterFallback( texture.minFilter ) );\n\n\t\t\tif ( texture.minFilter !== NearestFilter && texture.minFilter !== LinearFilter ) {\n\n\t\t\t\tconsole.warn( 'THREE.WebGLRenderer: Texture is not power of two. Texture.minFilter should be set to THREE.NearestFilter or THREE.LinearFilter.', texture );\n\n\t\t\t}\n\n\t\t}\n\n\t\textension = extensions.get( 'EXT_texture_filter_anisotropic' );\n\n\t\tif ( extension ) {\n\n\t\t\tif ( texture.type === FloatType && extensions.get( 'OES_texture_float_linear' ) === null ) return;\n\t\t\tif ( texture.type === HalfFloatType && extensions.get( 'OES_texture_half_float_linear' ) === null ) return;\n\n\t\t\tif ( texture.anisotropy > 1 || properties.get( texture ).__currentAnisotropy ) {\n\n\t\t\t\t_gl.texParameterf( textureType, extension.TEXTURE_MAX_ANISOTROPY_EXT, Math.min( texture.anisotropy, capabilities.getMaxAnisotropy() ) );\n\t\t\t\tproperties.get( texture ).__currentAnisotropy = texture.anisotropy;\n\n\t\t\t}\n\n\t\t}\n\n\t}\n\n\tfunction uploadTexture( textureProperties, texture, slot ) {\n\n\t\tif ( textureProperties.__webglInit === undefined ) {\n\n\t\t\ttextureProperties.__webglInit = true;\n\n\t\t\ttexture.addEventListener( 'dispose', onTextureDispose );\n\n\t\t\ttextureProperties.__webglTexture = _gl.createTexture();\n\n\t\t\t_infoMemory.textures ++;\n\n\t\t}\n\n\t\tstate.activeTexture( _gl.TEXTURE0 + slot );\n\t\tstate.bindTexture( _gl.TEXTURE_2D, textureProperties.__webglTexture );\n\n\t\t_gl.pixelStorei( _gl.UNPACK_FLIP_Y_WEBGL, texture.flipY );\n\t\t_gl.pixelStorei( _gl.UNPACK_PREMULTIPLY_ALPHA_WEBGL, texture.premultiplyAlpha );\n\t\t_gl.pixelStorei( _gl.UNPACK_ALIGNMENT, texture.unpackAlignment );\n\n\t\tvar image = clampToMaxSize( texture.image, capabilities.maxTextureSize );\n\n\t\tif ( textureNeedsPowerOfTwo( texture ) && isPowerOfTwo( image ) === false ) {\n\n\t\t\timage = makePowerOfTwo( image );\n\n\t\t}\n\n\t\tvar isPowerOfTwoImage = isPowerOfTwo( image ),\n\t\tglFormat = paramThreeToGL( texture.format ),\n\t\tglType = paramThreeToGL( texture.type );\n\n\t\tsetTextureParameters( _gl.TEXTURE_2D, texture, isPowerOfTwoImage );\n\n\t\tvar mipmap, mipmaps = texture.mipmaps;\n\n\t\tif ( (texture && texture.isDepthTexture) ) {\n\n\t\t\t// populate depth texture with dummy data\n\n\t\t\tvar internalFormat = _gl.DEPTH_COMPONENT;\n\n\t\t\tif ( texture.type === FloatType ) {\n\n\t\t\t\tif ( !_isWebGL2 ) throw new Error('Float Depth Texture only supported in WebGL2.0');\n\t\t\t\tinternalFormat = _gl.DEPTH_COMPONENT32F;\n\n\t\t\t} else if ( _isWebGL2 ) {\n\n\t\t\t\t// WebGL 2.0 requires signed internalformat for glTexImage2D\n\t\t\t\tinternalFormat = _gl.DEPTH_COMPONENT16;\n\n\t\t\t}\n\n\t\t\t// Depth stencil textures need the DEPTH_STENCIL internal format\n\t\t\t// (https://www.khronos.org/registry/webgl/extensions/WEBGL_depth_texture/)\n\t\t\tif ( texture.format === DepthStencilFormat ) {\n\n\t\t\t\tinternalFormat = _gl.DEPTH_STENCIL;\n\n\t\t\t}\n\n\t\t\tstate.texImage2D( _gl.TEXTURE_2D, 0, internalFormat, image.width, image.height, 0, glFormat, glType, null );\n\n\t\t} else if ( (texture && texture.isDataTexture) ) {\n\n\t\t\t// use manually created mipmaps if available\n\t\t\t// if there are no manual mipmaps\n\t\t\t// set 0 level mipmap and then use GL to generate other mipmap levels\n\n\t\t\tif ( mipmaps.length > 0 && isPowerOfTwoImage ) {\n\n\t\t\t\tfor ( var i = 0, il = mipmaps.length; i < il; i ++ ) {\n\n\t\t\t\t\tmipmap = mipmaps[ i ];\n\t\t\t\t\tstate.texImage2D( _gl.TEXTURE_2D, i, glFormat, mipmap.width, mipmap.height, 0, glFormat, glType, mipmap.data );\n\n\t\t\t\t}\n\n\t\t\t\ttexture.generateMipmaps = false;\n\n\t\t\t} else {\n\n\t\t\t\tstate.texImage2D( _gl.TEXTURE_2D, 0, glFormat, image.width, image.height, 0, glFormat, glType, image.data );\n\n\t\t\t}\n\n\t\t} else if ( (texture && texture.isCompressedTexture) ) {\n\n\t\t\tfor ( var i = 0, il = mipmaps.length; i < il; i ++ ) {\n\n\t\t\t\tmipmap = mipmaps[ i ];\n\n\t\t\t\tif ( texture.format !== RGBAFormat && texture.format !== RGBFormat ) {\n\n\t\t\t\t\tif ( state.getCompressedTextureFormats().indexOf( glFormat ) > - 1 ) {\n\n\t\t\t\t\t\tstate.compressedTexImage2D( _gl.TEXTURE_2D, i, glFormat, mipmap.width, mipmap.height, 0, mipmap.data );\n\n\t\t\t\t\t} else {\n\n\t\t\t\t\t\tconsole.warn( \"THREE.WebGLRenderer: Attempt to load unsupported compressed texture format in .uploadTexture()\" );\n\n\t\t\t\t\t}\n\n\t\t\t\t} else {\n\n\t\t\t\t\tstate.texImage2D( _gl.TEXTURE_2D, i, glFormat, mipmap.width, mipmap.height, 0, glFormat, glType, mipmap.data );\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t} else {\n\n\t\t\t// regular Texture (image, video, canvas)\n\n\t\t\t// use manually created mipmaps if available\n\t\t\t// if there are no manual mipmaps\n\t\t\t// set 0 level mipmap and then use GL to generate other mipmap levels\n\n\t\t\tif ( mipmaps.length > 0 && isPowerOfTwoImage ) {\n\n\t\t\t\tfor ( var i = 0, il = mipmaps.length; i < il; i ++ ) {\n\n\t\t\t\t\tmipmap = mipmaps[ i ];\n\t\t\t\t\tstate.texImage2D( _gl.TEXTURE_2D, i, glFormat, glFormat, glType, mipmap );\n\n\t\t\t\t}\n\n\t\t\t\ttexture.generateMipmaps = false;\n\n\t\t\t} else {\n\n\t\t\t\tstate.texImage2D( _gl.TEXTURE_2D, 0, glFormat, glFormat, glType, image );\n\n\t\t\t}\n\n\t\t}\n\n\t\tif ( texture.generateMipmaps && isPowerOfTwoImage ) _gl.generateMipmap( _gl.TEXTURE_2D );\n\n\t\ttextureProperties.__version = texture.version;\n\n\t\tif ( texture.onUpdate ) texture.onUpdate( texture );\n\n\t}\n\n\t// Render targets\n\n\t// Setup storage for target texture and bind it to correct framebuffer\n\tfunction setupFrameBufferTexture( framebuffer, renderTarget, attachment, textureTarget ) {\n\n\t\tvar glFormat = paramThreeToGL( renderTarget.texture.format );\n\t\tvar glType = paramThreeToGL( renderTarget.texture.type );\n\t\tstate.texImage2D( textureTarget, 0, glFormat, renderTarget.width, renderTarget.height, 0, glFormat, glType, null );\n\t\t_gl.bindFramebuffer( _gl.FRAMEBUFFER, framebuffer );\n\t\t_gl.framebufferTexture2D( _gl.FRAMEBUFFER, attachment, textureTarget, properties.get( renderTarget.texture ).__webglTexture, 0 );\n\t\t_gl.bindFramebuffer( _gl.FRAMEBUFFER, null );\n\n\t}\n\n\t// Setup storage for internal depth/stencil buffers and bind to correct framebuffer\n\tfunction setupRenderBufferStorage( renderbuffer, renderTarget ) {\n\n\t\t_gl.bindRenderbuffer( _gl.RENDERBUFFER, renderbuffer );\n\n\t\tif ( renderTarget.depthBuffer && ! renderTarget.stencilBuffer ) {\n\n\t\t\t_gl.renderbufferStorage( _gl.RENDERBUFFER, _gl.DEPTH_COMPONENT16, renderTarget.width, renderTarget.height );\n\t\t\t_gl.framebufferRenderbuffer( _gl.FRAMEBUFFER, _gl.DEPTH_ATTACHMENT, _gl.RENDERBUFFER, renderbuffer );\n\n\t\t} else if ( renderTarget.depthBuffer && renderTarget.stencilBuffer ) {\n\n\t\t\t_gl.renderbufferStorage( _gl.RENDERBUFFER, _gl.DEPTH_STENCIL, renderTarget.width, renderTarget.height );\n\t\t\t_gl.framebufferRenderbuffer( _gl.FRAMEBUFFER, _gl.DEPTH_STENCIL_ATTACHMENT, _gl.RENDERBUFFER, renderbuffer );\n\n\t\t} else {\n\n\t\t\t// FIXME: We don't support !depth !stencil\n\t\t\t_gl.renderbufferStorage( _gl.RENDERBUFFER, _gl.RGBA4, renderTarget.width, renderTarget.height );\n\n\t\t}\n\n\t\t_gl.bindRenderbuffer( _gl.RENDERBUFFER, null );\n\n\t}\n\n\t// Setup resources for a Depth Texture for a FBO (needs an extension)\n\tfunction setupDepthTexture( framebuffer, renderTarget ) {\n\n\t\tvar isCube = ( (renderTarget && renderTarget.isWebGLRenderTargetCube) );\n\t\tif ( isCube ) throw new Error('Depth Texture with cube render targets is not supported!');\n\n\t\t_gl.bindFramebuffer( _gl.FRAMEBUFFER, framebuffer );\n\n\t\tif ( !( (renderTarget.depthTexture && renderTarget.depthTexture.isDepthTexture) ) ) {\n\n\t\t\tthrow new Error('renderTarget.depthTexture must be an instance of THREE.DepthTexture');\n\n\t\t}\n\n\t\t// upload an empty depth texture with framebuffer size\n\t\tif ( !properties.get( renderTarget.depthTexture ).__webglTexture ||\n\t\t\t\trenderTarget.depthTexture.image.width !== renderTarget.width ||\n\t\t\t\trenderTarget.depthTexture.image.height !== renderTarget.height ) {\n\t\t\trenderTarget.depthTexture.image.width = renderTarget.width;\n\t\t\trenderTarget.depthTexture.image.height = renderTarget.height;\n\t\t\trenderTarget.depthTexture.needsUpdate = true;\n\t\t}\n\n\t\tsetTexture2D( renderTarget.depthTexture, 0 );\n\n\t\tvar webglDepthTexture = properties.get( renderTarget.depthTexture ).__webglTexture;\n\n\t\tif ( renderTarget.depthTexture.format === DepthFormat ) {\n\n\t\t\t_gl.framebufferTexture2D( _gl.FRAMEBUFFER, _gl.DEPTH_ATTACHMENT, _gl.TEXTURE_2D, webglDepthTexture, 0 );\n\n\t\t} else if ( renderTarget.depthTexture.format === DepthStencilFormat ) {\n\n\t\t\t_gl.framebufferTexture2D( _gl.FRAMEBUFFER, _gl.DEPTH_STENCIL_ATTACHMENT, _gl.TEXTURE_2D, webglDepthTexture, 0 );\n\n\t\t} else {\n\n\t\t\tthrow new Error('Unknown depthTexture format')\n\n\t\t}\n\n\t}\n\n\t// Setup GL resources for a non-texture depth buffer\n\tfunction setupDepthRenderbuffer( renderTarget ) {\n\n\t\tvar renderTargetProperties = properties.get( renderTarget );\n\n\t\tvar isCube = ( (renderTarget && renderTarget.isWebGLRenderTargetCube) );\n\n\t\tif ( renderTarget.depthTexture ) {\n\n\t\t\tif ( isCube ) throw new Error('target.depthTexture not supported in Cube render targets');\n\n\t\t\tsetupDepthTexture( renderTargetProperties.__webglFramebuffer, renderTarget );\n\n\t\t} else {\n\n\t\t\tif ( isCube ) {\n\n\t\t\t\trenderTargetProperties.__webglDepthbuffer = [];\n\n\t\t\t\tfor ( var i = 0; i < 6; i ++ ) {\n\n\t\t\t\t\t_gl.bindFramebuffer( _gl.FRAMEBUFFER, renderTargetProperties.__webglFramebuffer[ i ] );\n\t\t\t\t\trenderTargetProperties.__webglDepthbuffer[ i ] = _gl.createRenderbuffer();\n\t\t\t\t\tsetupRenderBufferStorage( renderTargetProperties.__webglDepthbuffer[ i ], renderTarget );\n\n\t\t\t\t}\n\n\t\t\t} else {\n\n\t\t\t\t_gl.bindFramebuffer( _gl.FRAMEBUFFER, renderTargetProperties.__webglFramebuffer );\n\t\t\t\trenderTargetProperties.__webglDepthbuffer = _gl.createRenderbuffer();\n\t\t\t\tsetupRenderBufferStorage( renderTargetProperties.__webglDepthbuffer, renderTarget );\n\n\t\t\t}\n\n\t\t}\n\n\t\t_gl.bindFramebuffer( _gl.FRAMEBUFFER, null );\n\n\t}\n\n\t// Set up GL resources for the render target\n\tfunction setupRenderTarget( renderTarget ) {\n\n\t\tvar renderTargetProperties = properties.get( renderTarget );\n\t\tvar textureProperties = properties.get( renderTarget.texture );\n\n\t\trenderTarget.addEventListener( 'dispose', onRenderTargetDispose );\n\n\t\ttextureProperties.__webglTexture = _gl.createTexture();\n\n\t\t_infoMemory.textures ++;\n\n\t\tvar isCube = ( (renderTarget && renderTarget.isWebGLRenderTargetCube) );\n\t\tvar isTargetPowerOfTwo = isPowerOfTwo( renderTarget );\n\n\t\t// Setup framebuffer\n\n\t\tif ( isCube ) {\n\n\t\t\trenderTargetProperties.__webglFramebuffer = [];\n\n\t\t\tfor ( var i = 0; i < 6; i ++ ) {\n\n\t\t\t\trenderTargetProperties.__webglFramebuffer[ i ] = _gl.createFramebuffer();\n\n\t\t\t}\n\n\t\t} else {\n\n\t\t\trenderTargetProperties.__webglFramebuffer = _gl.createFramebuffer();\n\n\t\t}\n\n\t\t// Setup color buffer\n\n\t\tif ( isCube ) {\n\n\t\t\tstate.bindTexture( _gl.TEXTURE_CUBE_MAP, textureProperties.__webglTexture );\n\t\t\tsetTextureParameters( _gl.TEXTURE_CUBE_MAP, renderTarget.texture, isTargetPowerOfTwo );\n\n\t\t\tfor ( var i = 0; i < 6; i ++ ) {\n\n\t\t\t\tsetupFrameBufferTexture( renderTargetProperties.__webglFramebuffer[ i ], renderTarget, _gl.COLOR_ATTACHMENT0, _gl.TEXTURE_CUBE_MAP_POSITIVE_X + i );\n\n\t\t\t}\n\n\t\t\tif ( renderTarget.texture.generateMipmaps && isTargetPowerOfTwo ) _gl.generateMipmap( _gl.TEXTURE_CUBE_MAP );\n\t\t\tstate.bindTexture( _gl.TEXTURE_CUBE_MAP, null );\n\n\t\t} else {\n\n\t\t\tstate.bindTexture( _gl.TEXTURE_2D, textureProperties.__webglTexture );\n\t\t\tsetTextureParameters( _gl.TEXTURE_2D, renderTarget.texture, isTargetPowerOfTwo );\n\t\t\tsetupFrameBufferTexture( renderTargetProperties.__webglFramebuffer, renderTarget, _gl.COLOR_ATTACHMENT0, _gl.TEXTURE_2D );\n\n\t\t\tif ( renderTarget.texture.generateMipmaps && isTargetPowerOfTwo ) _gl.generateMipmap( _gl.TEXTURE_2D );\n\t\t\tstate.bindTexture( _gl.TEXTURE_2D, null );\n\n\t\t}\n\n\t\t// Setup depth and stencil buffers\n\n\t\tif ( renderTarget.depthBuffer ) {\n\n\t\t\tsetupDepthRenderbuffer( renderTarget );\n\n\t\t}\n\n\t}\n\n\tfunction updateRenderTargetMipmap( renderTarget ) {\n\n\t\tvar texture = renderTarget.texture;\n\n\t\tif ( texture.generateMipmaps && isPowerOfTwo( renderTarget ) &&\n\t\t\t\ttexture.minFilter !== NearestFilter &&\n\t\t\t\ttexture.minFilter !== LinearFilter ) {\n\n\t\t\tvar target = (renderTarget && renderTarget.isWebGLRenderTargetCube) ? _gl.TEXTURE_CUBE_MAP : _gl.TEXTURE_2D;\n\t\t\tvar webglTexture = properties.get( texture ).__webglTexture;\n\n\t\t\tstate.bindTexture( target, webglTexture );\n\t\t\t_gl.generateMipmap( target );\n\t\t\tstate.bindTexture( target, null );\n\n\t\t}\n\n\t}\n\n\tthis.setTexture2D = setTexture2D;\n\tthis.setTextureCube = setTextureCube;\n\tthis.setTextureCubeDynamic = setTextureCubeDynamic;\n\tthis.setupRenderTarget = setupRenderTarget;\n\tthis.updateRenderTargetMipmap = updateRenderTargetMipmap;\n\n}\n\n\nexport { WebGLTextures };\n","/**\n * @author fordacious / fordacious.github.io\n */\n\nfunction WebGLProperties() {\n\n\tvar properties = {};\n\n\treturn {\n\n\t\tget: function ( object ) {\n\n\t\t\tvar uuid = object.uuid;\n\t\t\tvar map = properties[ uuid ];\n\n\t\t\tif ( map === undefined ) {\n\n\t\t\t\tmap = {};\n\t\t\t\tproperties[ uuid ] = map;\n\n\t\t\t}\n\n\t\t\treturn map;\n\n\t\t},\n\n\t\tdelete: function ( object ) {\n\n\t\t\tdelete properties[ object.uuid ];\n\n\t\t},\n\n\t\tclear: function () {\n\n\t\t\tproperties = {};\n\n\t\t}\n\n\t};\n\n}\n\nexport { WebGLProperties };\n","/**\n * @author mrdoob / http://mrdoob.com/\n */\n\nimport { NotEqualDepth, GreaterDepth, GreaterEqualDepth, EqualDepth, LessEqualDepth, LessDepth, AlwaysDepth, NeverDepth, CullFaceFront, CullFaceBack, CullFaceNone, CustomBlending, MultiplyBlending, SubtractiveBlending, AdditiveBlending, NoBlending, NormalBlending } from '../../constants';\nimport { Vector4 } from '../../math/Vector4';\n\nfunction WebGLState( gl, extensions, paramThreeToGL ) {\n\n\tfunction ColorBuffer() {\n\n\t\tvar locked = false;\n\n\t\tvar color = new Vector4();\n\t\tvar currentColorMask = null;\n\t\tvar currentColorClear = new Vector4();\n\n\t\treturn {\n\n\t\t\tsetMask: function ( colorMask ) {\n\n\t\t\t\tif ( currentColorMask !== colorMask && ! locked ) {\n\n\t\t\t\t\tgl.colorMask( colorMask, colorMask, colorMask, colorMask );\n\t\t\t\t\tcurrentColorMask = colorMask;\n\n\t\t\t\t}\n\n\t\t\t},\n\n\t\t\tsetLocked: function ( lock ) {\n\n\t\t\t\tlocked = lock;\n\n\t\t\t},\n\n\t\t\tsetClear: function ( r, g, b, a, premultipliedAlpha ) {\n\n\t\t\t\tif ( premultipliedAlpha === true ) {\n\n\t\t\t\t\tr *= a; g *= a; b *= a;\n\n\t\t\t\t}\n\n\t\t\t\tcolor.set( r, g, b, a );\n\n\t\t\t\tif ( currentColorClear.equals( color ) === false ) {\n\n\t\t\t\t\tgl.clearColor( r, g, b, a );\n\t\t\t\t\tcurrentColorClear.copy( color );\n\n\t\t\t\t}\n\n\t\t\t},\n\n\t\t\treset: function () {\n\n\t\t\t\tlocked = false;\n\n\t\t\t\tcurrentColorMask = null;\n\t\t\t\tcurrentColorClear.set( 0, 0, 0, 1 );\n\n\t\t\t}\n\n\t\t};\n\n\t}\n\n\tfunction DepthBuffer() {\n\n\t\tvar locked = false;\n\n\t\tvar currentDepthMask = null;\n\t\tvar currentDepthFunc = null;\n\t\tvar currentDepthClear = null;\n\n\t\treturn {\n\n\t\t\tsetTest: function ( depthTest ) {\n\n\t\t\t\tif ( depthTest ) {\n\n\t\t\t\t\tenable( gl.DEPTH_TEST );\n\n\t\t\t\t} else {\n\n\t\t\t\t\tdisable( gl.DEPTH_TEST );\n\n\t\t\t\t}\n\n\t\t\t},\n\n\t\t\tsetMask: function ( depthMask ) {\n\n\t\t\t\tif ( currentDepthMask !== depthMask && ! locked ) {\n\n\t\t\t\t\tgl.depthMask( depthMask );\n\t\t\t\t\tcurrentDepthMask = depthMask;\n\n\t\t\t\t}\n\n\t\t\t},\n\n\t\t\tsetFunc: function ( depthFunc ) {\n\n\t\t\t\tif ( currentDepthFunc !== depthFunc ) {\n\n\t\t\t\t\tif ( depthFunc ) {\n\n\t\t\t\t\t\tswitch ( depthFunc ) {\n\n\t\t\t\t\t\t\tcase NeverDepth:\n\n\t\t\t\t\t\t\t\tgl.depthFunc( gl.NEVER );\n\t\t\t\t\t\t\t\tbreak;\n\n\t\t\t\t\t\t\tcase AlwaysDepth:\n\n\t\t\t\t\t\t\t\tgl.depthFunc( gl.ALWAYS );\n\t\t\t\t\t\t\t\tbreak;\n\n\t\t\t\t\t\t\tcase LessDepth:\n\n\t\t\t\t\t\t\t\tgl.depthFunc( gl.LESS );\n\t\t\t\t\t\t\t\tbreak;\n\n\t\t\t\t\t\t\tcase LessEqualDepth:\n\n\t\t\t\t\t\t\t\tgl.depthFunc( gl.LEQUAL );\n\t\t\t\t\t\t\t\tbreak;\n\n\t\t\t\t\t\t\tcase EqualDepth:\n\n\t\t\t\t\t\t\t\tgl.depthFunc( gl.EQUAL );\n\t\t\t\t\t\t\t\tbreak;\n\n\t\t\t\t\t\t\tcase GreaterEqualDepth:\n\n\t\t\t\t\t\t\t\tgl.depthFunc( gl.GEQUAL );\n\t\t\t\t\t\t\t\tbreak;\n\n\t\t\t\t\t\t\tcase GreaterDepth:\n\n\t\t\t\t\t\t\t\tgl.depthFunc( gl.GREATER );\n\t\t\t\t\t\t\t\tbreak;\n\n\t\t\t\t\t\t\tcase NotEqualDepth:\n\n\t\t\t\t\t\t\t\tgl.depthFunc( gl.NOTEQUAL );\n\t\t\t\t\t\t\t\tbreak;\n\n\t\t\t\t\t\t\tdefault:\n\n\t\t\t\t\t\t\t\tgl.depthFunc( gl.LEQUAL );\n\n\t\t\t\t\t\t}\n\n\t\t\t\t\t} else {\n\n\t\t\t\t\t\tgl.depthFunc( gl.LEQUAL );\n\n\t\t\t\t\t}\n\n\t\t\t\t\tcurrentDepthFunc = depthFunc;\n\n\t\t\t\t}\n\n\t\t\t},\n\n\t\t\tsetLocked: function ( lock ) {\n\n\t\t\t\tlocked = lock;\n\n\t\t\t},\n\n\t\t\tsetClear: function ( depth ) {\n\n\t\t\t\tif ( currentDepthClear !== depth ) {\n\n\t\t\t\t\tgl.clearDepth( depth );\n\t\t\t\t\tcurrentDepthClear = depth;\n\n\t\t\t\t}\n\n\t\t\t},\n\n\t\t\treset: function () {\n\n\t\t\t\tlocked = false;\n\n\t\t\t\tcurrentDepthMask = null;\n\t\t\t\tcurrentDepthFunc = null;\n\t\t\t\tcurrentDepthClear = null;\n\n\t\t\t}\n\n\t\t};\n\n\t}\n\n\tfunction StencilBuffer() {\n\n\t\tvar locked = false;\n\n\t\tvar currentStencilMask = null;\n\t\tvar currentStencilFunc = null;\n\t\tvar currentStencilRef = null;\n\t\tvar currentStencilFuncMask = null;\n\t\tvar currentStencilFail = null;\n\t\tvar currentStencilZFail = null;\n\t\tvar currentStencilZPass = null;\n\t\tvar currentStencilClear = null;\n\n\t\treturn {\n\n\t\t\tsetTest: function ( stencilTest ) {\n\n\t\t\t\tif ( stencilTest ) {\n\n\t\t\t\t\tenable( gl.STENCIL_TEST );\n\n\t\t\t\t} else {\n\n\t\t\t\t\tdisable( gl.STENCIL_TEST );\n\n\t\t\t\t}\n\n\t\t\t},\n\n\t\t\tsetMask: function ( stencilMask ) {\n\n\t\t\t\tif ( currentStencilMask !== stencilMask && ! locked ) {\n\n\t\t\t\t\tgl.stencilMask( stencilMask );\n\t\t\t\t\tcurrentStencilMask = stencilMask;\n\n\t\t\t\t}\n\n\t\t\t},\n\n\t\t\tsetFunc: function ( stencilFunc, stencilRef, stencilMask ) {\n\n\t\t\t\tif ( currentStencilFunc !== stencilFunc ||\n\t\t\t\t currentStencilRef \t!== stencilRef \t||\n\t\t\t\t currentStencilFuncMask !== stencilMask ) {\n\n\t\t\t\t\tgl.stencilFunc( stencilFunc, stencilRef, stencilMask );\n\n\t\t\t\t\tcurrentStencilFunc = stencilFunc;\n\t\t\t\t\tcurrentStencilRef = stencilRef;\n\t\t\t\t\tcurrentStencilFuncMask = stencilMask;\n\n\t\t\t\t}\n\n\t\t\t},\n\n\t\t\tsetOp: function ( stencilFail, stencilZFail, stencilZPass ) {\n\n\t\t\t\tif ( currentStencilFail\t !== stencilFail \t||\n\t\t\t\t currentStencilZFail !== stencilZFail ||\n\t\t\t\t currentStencilZPass !== stencilZPass ) {\n\n\t\t\t\t\tgl.stencilOp( stencilFail, stencilZFail, stencilZPass );\n\n\t\t\t\t\tcurrentStencilFail = stencilFail;\n\t\t\t\t\tcurrentStencilZFail = stencilZFail;\n\t\t\t\t\tcurrentStencilZPass = stencilZPass;\n\n\t\t\t\t}\n\n\t\t\t},\n\n\t\t\tsetLocked: function ( lock ) {\n\n\t\t\t\tlocked = lock;\n\n\t\t\t},\n\n\t\t\tsetClear: function ( stencil ) {\n\n\t\t\t\tif ( currentStencilClear !== stencil ) {\n\n\t\t\t\t\tgl.clearStencil( stencil );\n\t\t\t\t\tcurrentStencilClear = stencil;\n\n\t\t\t\t}\n\n\t\t\t},\n\n\t\t\treset: function () {\n\n\t\t\t\tlocked = false;\n\n\t\t\t\tcurrentStencilMask = null;\n\t\t\t\tcurrentStencilFunc = null;\n\t\t\t\tcurrentStencilRef = null;\n\t\t\t\tcurrentStencilFuncMask = null;\n\t\t\t\tcurrentStencilFail = null;\n\t\t\t\tcurrentStencilZFail = null;\n\t\t\t\tcurrentStencilZPass = null;\n\t\t\t\tcurrentStencilClear = null;\n\n\t\t\t}\n\n\t\t};\n\n\t}\n\n\t//\n\n\tvar colorBuffer = new ColorBuffer();\n\tvar depthBuffer = new DepthBuffer();\n\tvar stencilBuffer = new StencilBuffer();\n\n\tvar maxVertexAttributes = gl.getParameter( gl.MAX_VERTEX_ATTRIBS );\n\tvar newAttributes = new Uint8Array( maxVertexAttributes );\n\tvar enabledAttributes = new Uint8Array( maxVertexAttributes );\n\tvar attributeDivisors = new Uint8Array( maxVertexAttributes );\n\n\tvar capabilities = {};\n\n\tvar compressedTextureFormats = null;\n\n\tvar currentBlending = null;\n\tvar currentBlendEquation = null;\n\tvar currentBlendSrc = null;\n\tvar currentBlendDst = null;\n\tvar currentBlendEquationAlpha = null;\n\tvar currentBlendSrcAlpha = null;\n\tvar currentBlendDstAlpha = null;\n\tvar currentPremultipledAlpha = false;\n\n\tvar currentFlipSided = null;\n\tvar currentCullFace = null;\n\n\tvar currentLineWidth = null;\n\n\tvar currentPolygonOffsetFactor = null;\n\tvar currentPolygonOffsetUnits = null;\n\n\tvar currentScissorTest = null;\n\n\tvar maxTextures = gl.getParameter( gl.MAX_TEXTURE_IMAGE_UNITS );\n\n\tvar currentTextureSlot = null;\n\tvar currentBoundTextures = {};\n\n\tvar currentScissor = new Vector4();\n\tvar currentViewport = new Vector4();\n\n\tfunction createTexture( type, target, count ) {\n\n\t\tvar data = new Uint8Array( 4 ); // 4 is required to match default unpack alignment of 4.\n\t\tvar texture = gl.createTexture();\n\n\t\tgl.bindTexture( type, texture );\n\t\tgl.texParameteri( type, gl.TEXTURE_MIN_FILTER, gl.NEAREST );\n\t\tgl.texParameteri( type, gl.TEXTURE_MAG_FILTER, gl.NEAREST );\n\n\t\tfor ( var i = 0; i < count; i ++ ) {\n\n\t\t\tgl.texImage2D( target + i, 0, gl.RGBA, 1, 1, 0, gl.RGBA, gl.UNSIGNED_BYTE, data );\n\n\t\t}\n\n\t\treturn texture;\n\n\t}\n\n\tvar emptyTextures = {};\n\temptyTextures[ gl.TEXTURE_2D ] = createTexture( gl.TEXTURE_2D, gl.TEXTURE_2D, 1 );\n\temptyTextures[ gl.TEXTURE_CUBE_MAP ] = createTexture( gl.TEXTURE_CUBE_MAP, gl.TEXTURE_CUBE_MAP_POSITIVE_X, 6 );\n\n\t//\n\n\tfunction init() {\n\n\t\tcolorBuffer.setClear( 0, 0, 0, 1 );\n\t\tdepthBuffer.setClear( 1 );\n\t\tstencilBuffer.setClear( 0 );\n\n\t\tenable( gl.DEPTH_TEST );\n\t\tsetDepthFunc( LessEqualDepth );\n\n\t\tsetFlipSided( false );\n\t\tsetCullFace( CullFaceBack );\n\t\tenable( gl.CULL_FACE );\n\n\t\tenable( gl.BLEND );\n\t\tsetBlending( NormalBlending );\n\n\t}\n\n\tfunction initAttributes() {\n\n\t\tfor ( var i = 0, l = newAttributes.length; i < l; i ++ ) {\n\n\t\t\tnewAttributes[ i ] = 0;\n\n\t\t}\n\n\t}\n\n\tfunction enableAttribute( attribute ) {\n\n\t\tnewAttributes[ attribute ] = 1;\n\n\t\tif ( enabledAttributes[ attribute ] === 0 ) {\n\n\t\t\tgl.enableVertexAttribArray( attribute );\n\t\t\tenabledAttributes[ attribute ] = 1;\n\n\t\t}\n\n\t\tif ( attributeDivisors[ attribute ] !== 0 ) {\n\n\t\t\tvar extension = extensions.get( 'ANGLE_instanced_arrays' );\n\n\t\t\textension.vertexAttribDivisorANGLE( attribute, 0 );\n\t\t\tattributeDivisors[ attribute ] = 0;\n\n\t\t}\n\n\t}\n\n\tfunction enableAttributeAndDivisor( attribute, meshPerAttribute, extension ) {\n\n\t\tnewAttributes[ attribute ] = 1;\n\n\t\tif ( enabledAttributes[ attribute ] === 0 ) {\n\n\t\t\tgl.enableVertexAttribArray( attribute );\n\t\t\tenabledAttributes[ attribute ] = 1;\n\n\t\t}\n\n\t\tif ( attributeDivisors[ attribute ] !== meshPerAttribute ) {\n\n\t\t\textension.vertexAttribDivisorANGLE( attribute, meshPerAttribute );\n\t\t\tattributeDivisors[ attribute ] = meshPerAttribute;\n\n\t\t}\n\n\t}\n\n\tfunction disableUnusedAttributes() {\n\n\t\tfor ( var i = 0, l = enabledAttributes.length; i !== l; ++ i ) {\n\n\t\t\tif ( enabledAttributes[ i ] !== newAttributes[ i ] ) {\n\n\t\t\t\tgl.disableVertexAttribArray( i );\n\t\t\t\tenabledAttributes[ i ] = 0;\n\n\t\t\t}\n\n\t\t}\n\n\t}\n\n\tfunction enable( id ) {\n\n\t\tif ( capabilities[ id ] !== true ) {\n\n\t\t\tgl.enable( id );\n\t\t\tcapabilities[ id ] = true;\n\n\t\t}\n\n\t}\n\n\tfunction disable( id ) {\n\n\t\tif ( capabilities[ id ] !== false ) {\n\n\t\t\tgl.disable( id );\n\t\t\tcapabilities[ id ] = false;\n\n\t\t}\n\n\t}\n\n\tfunction getCompressedTextureFormats() {\n\n\t\tif ( compressedTextureFormats === null ) {\n\n\t\t\tcompressedTextureFormats = [];\n\n\t\t\tif ( extensions.get( 'WEBGL_compressed_texture_pvrtc' ) ||\n\t\t\t extensions.get( 'WEBGL_compressed_texture_s3tc' ) ||\n\t\t\t extensions.get( 'WEBGL_compressed_texture_etc1' ) ) {\n\n\t\t\t\tvar formats = gl.getParameter( gl.COMPRESSED_TEXTURE_FORMATS );\n\n\t\t\t\tfor ( var i = 0; i < formats.length; i ++ ) {\n\n\t\t\t\t\tcompressedTextureFormats.push( formats[ i ] );\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t}\n\n\t\treturn compressedTextureFormats;\n\n\t}\n\n\tfunction setBlending( blending, blendEquation, blendSrc, blendDst, blendEquationAlpha, blendSrcAlpha, blendDstAlpha, premultipliedAlpha ) {\n\n\t\tif ( blending !== NoBlending ) {\n\n\t\t\tenable( gl.BLEND );\n\n\t\t} else {\n\n\t\t\tdisable( gl.BLEND );\n\n\t\t}\n\n\t\tif ( blending !== currentBlending || premultipliedAlpha !== currentPremultipledAlpha ) {\n\n\t\t\tif ( blending === AdditiveBlending ) {\n\n\t\t\t\tif ( premultipliedAlpha ) {\n\n\t\t\t\t\tgl.blendEquationSeparate( gl.FUNC_ADD, gl.FUNC_ADD );\n\t\t\t\t\tgl.blendFuncSeparate( gl.ONE, gl.ONE, gl.ONE, gl.ONE );\n\n\t\t\t\t} else {\n\n\t\t\t\t\tgl.blendEquation( gl.FUNC_ADD );\n\t\t\t\t\tgl.blendFunc( gl.SRC_ALPHA, gl.ONE );\n\n\t\t\t\t}\n\n\t\t\t} else if ( blending === SubtractiveBlending ) {\n\n\t\t\t\tif ( premultipliedAlpha ) {\n\n\t\t\t\t\tgl.blendEquationSeparate( gl.FUNC_ADD, gl.FUNC_ADD );\n\t\t\t\t\tgl.blendFuncSeparate( gl.ZERO, gl.ZERO, gl.ONE_MINUS_SRC_COLOR, gl.ONE_MINUS_SRC_ALPHA );\n\n\t\t\t\t} else {\n\n\t\t\t\t\tgl.blendEquation( gl.FUNC_ADD );\n\t\t\t\t\tgl.blendFunc( gl.ZERO, gl.ONE_MINUS_SRC_COLOR );\n\n\t\t\t\t}\n\n\t\t\t} else if ( blending === MultiplyBlending ) {\n\n\t\t\t\tif ( premultipliedAlpha ) {\n\n\t\t\t\t\tgl.blendEquationSeparate( gl.FUNC_ADD, gl.FUNC_ADD );\n\t\t\t\t\tgl.blendFuncSeparate( gl.ZERO, gl.SRC_COLOR, gl.ZERO, gl.SRC_ALPHA );\n\n\t\t\t\t} else {\n\n\t\t\t\t\tgl.blendEquation( gl.FUNC_ADD );\n\t\t\t\t\tgl.blendFunc( gl.ZERO, gl.SRC_COLOR );\n\n\t\t\t\t}\n\n\t\t\t} else {\n\n\t\t\t\tif ( premultipliedAlpha ) {\n\n\t\t\t\t\tgl.blendEquationSeparate( gl.FUNC_ADD, gl.FUNC_ADD );\n\t\t\t\t\tgl.blendFuncSeparate( gl.ONE, gl.ONE_MINUS_SRC_ALPHA, gl.ONE, gl.ONE_MINUS_SRC_ALPHA );\n\n\t\t\t\t} else {\n\n\t\t\t\t\tgl.blendEquationSeparate( gl.FUNC_ADD, gl.FUNC_ADD );\n\t\t\t\t\tgl.blendFuncSeparate( gl.SRC_ALPHA, gl.ONE_MINUS_SRC_ALPHA, gl.ONE, gl.ONE_MINUS_SRC_ALPHA );\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t\tcurrentBlending = blending;\n\t\t\tcurrentPremultipledAlpha = premultipliedAlpha;\n\n\t\t}\n\n\t\tif ( blending === CustomBlending ) {\n\n\t\t\tblendEquationAlpha = blendEquationAlpha || blendEquation;\n\t\t\tblendSrcAlpha = blendSrcAlpha || blendSrc;\n\t\t\tblendDstAlpha = blendDstAlpha || blendDst;\n\n\t\t\tif ( blendEquation !== currentBlendEquation || blendEquationAlpha !== currentBlendEquationAlpha ) {\n\n\t\t\t\tgl.blendEquationSeparate( paramThreeToGL( blendEquation ), paramThreeToGL( blendEquationAlpha ) );\n\n\t\t\t\tcurrentBlendEquation = blendEquation;\n\t\t\t\tcurrentBlendEquationAlpha = blendEquationAlpha;\n\n\t\t\t}\n\n\t\t\tif ( blendSrc !== currentBlendSrc || blendDst !== currentBlendDst || blendSrcAlpha !== currentBlendSrcAlpha || blendDstAlpha !== currentBlendDstAlpha ) {\n\n\t\t\t\tgl.blendFuncSeparate( paramThreeToGL( blendSrc ), paramThreeToGL( blendDst ), paramThreeToGL( blendSrcAlpha ), paramThreeToGL( blendDstAlpha ) );\n\n\t\t\t\tcurrentBlendSrc = blendSrc;\n\t\t\t\tcurrentBlendDst = blendDst;\n\t\t\t\tcurrentBlendSrcAlpha = blendSrcAlpha;\n\t\t\t\tcurrentBlendDstAlpha = blendDstAlpha;\n\n\t\t\t}\n\n\t\t} else {\n\n\t\t\tcurrentBlendEquation = null;\n\t\t\tcurrentBlendSrc = null;\n\t\t\tcurrentBlendDst = null;\n\t\t\tcurrentBlendEquationAlpha = null;\n\t\t\tcurrentBlendSrcAlpha = null;\n\t\t\tcurrentBlendDstAlpha = null;\n\n\t\t}\n\n\t}\n\n\t// TODO Deprecate\n\n\tfunction setColorWrite( colorWrite ) {\n\n\t\tcolorBuffer.setMask( colorWrite );\n\n\t}\n\n\tfunction setDepthTest( depthTest ) {\n\n\t\tdepthBuffer.setTest( depthTest );\n\n\t}\n\n\tfunction setDepthWrite( depthWrite ) {\n\n\t\tdepthBuffer.setMask( depthWrite );\n\n\t}\n\n\tfunction setDepthFunc( depthFunc ) {\n\n\t\tdepthBuffer.setFunc( depthFunc );\n\n\t}\n\n\tfunction setStencilTest( stencilTest ) {\n\n\t\tstencilBuffer.setTest( stencilTest );\n\n\t}\n\n\tfunction setStencilWrite( stencilWrite ) {\n\n\t\tstencilBuffer.setMask( stencilWrite );\n\n\t}\n\n\tfunction setStencilFunc( stencilFunc, stencilRef, stencilMask ) {\n\n\t\tstencilBuffer.setFunc( stencilFunc, stencilRef, stencilMask );\n\n\t}\n\n\tfunction setStencilOp( stencilFail, stencilZFail, stencilZPass ) {\n\n\t\tstencilBuffer.setOp( stencilFail, stencilZFail, stencilZPass );\n\n\t}\n\n\t//\n\n\tfunction setFlipSided( flipSided ) {\n\n\t\tif ( currentFlipSided !== flipSided ) {\n\n\t\t\tif ( flipSided ) {\n\n\t\t\t\tgl.frontFace( gl.CW );\n\n\t\t\t} else {\n\n\t\t\t\tgl.frontFace( gl.CCW );\n\n\t\t\t}\n\n\t\t\tcurrentFlipSided = flipSided;\n\n\t\t}\n\n\t}\n\n\tfunction setCullFace( cullFace ) {\n\n\t\tif ( cullFace !== CullFaceNone ) {\n\n\t\t\tenable( gl.CULL_FACE );\n\n\t\t\tif ( cullFace !== currentCullFace ) {\n\n\t\t\t\tif ( cullFace === CullFaceBack ) {\n\n\t\t\t\t\tgl.cullFace( gl.BACK );\n\n\t\t\t\t} else if ( cullFace === CullFaceFront ) {\n\n\t\t\t\t\tgl.cullFace( gl.FRONT );\n\n\t\t\t\t} else {\n\n\t\t\t\t\tgl.cullFace( gl.FRONT_AND_BACK );\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t} else {\n\n\t\t\tdisable( gl.CULL_FACE );\n\n\t\t}\n\n\t\tcurrentCullFace = cullFace;\n\n\t}\n\n\tfunction setLineWidth( width ) {\n\n\t\tif ( width !== currentLineWidth ) {\n\n\t\t\tgl.lineWidth( width );\n\n\t\t\tcurrentLineWidth = width;\n\n\t\t}\n\n\t}\n\n\tfunction setPolygonOffset( polygonOffset, factor, units ) {\n\n\t\tif ( polygonOffset ) {\n\n\t\t\tenable( gl.POLYGON_OFFSET_FILL );\n\n\t\t\tif ( currentPolygonOffsetFactor !== factor || currentPolygonOffsetUnits !== units ) {\n\n\t\t\t\tgl.polygonOffset( factor, units );\n\n\t\t\t\tcurrentPolygonOffsetFactor = factor;\n\t\t\t\tcurrentPolygonOffsetUnits = units;\n\n\t\t\t}\n\n\t\t} else {\n\n\t\t\tdisable( gl.POLYGON_OFFSET_FILL );\n\n\t\t}\n\n\t}\n\n\tfunction getScissorTest() {\n\n\t\treturn currentScissorTest;\n\n\t}\n\n\tfunction setScissorTest( scissorTest ) {\n\n\t\tcurrentScissorTest = scissorTest;\n\n\t\tif ( scissorTest ) {\n\n\t\t\tenable( gl.SCISSOR_TEST );\n\n\t\t} else {\n\n\t\t\tdisable( gl.SCISSOR_TEST );\n\n\t\t}\n\n\t}\n\n\t// texture\n\n\tfunction activeTexture( webglSlot ) {\n\n\t\tif ( webglSlot === undefined ) webglSlot = gl.TEXTURE0 + maxTextures - 1;\n\n\t\tif ( currentTextureSlot !== webglSlot ) {\n\n\t\t\tgl.activeTexture( webglSlot );\n\t\t\tcurrentTextureSlot = webglSlot;\n\n\t\t}\n\n\t}\n\n\tfunction bindTexture( webglType, webglTexture ) {\n\n\t\tif ( currentTextureSlot === null ) {\n\n\t\t\tactiveTexture();\n\n\t\t}\n\n\t\tvar boundTexture = currentBoundTextures[ currentTextureSlot ];\n\n\t\tif ( boundTexture === undefined ) {\n\n\t\t\tboundTexture = { type: undefined, texture: undefined };\n\t\t\tcurrentBoundTextures[ currentTextureSlot ] = boundTexture;\n\n\t\t}\n\n\t\tif ( boundTexture.type !== webglType || boundTexture.texture !== webglTexture ) {\n\n\t\t\tgl.bindTexture( webglType, webglTexture || emptyTextures[ webglType ] );\n\n\t\t\tboundTexture.type = webglType;\n\t\t\tboundTexture.texture = webglTexture;\n\n\t\t}\n\n\t}\n\n\tfunction compressedTexImage2D() {\n\n\t\ttry {\n\n\t\t\tgl.compressedTexImage2D.apply( gl, arguments );\n\n\t\t} catch ( error ) {\n\n\t\t\tconsole.error( error );\n\n\t\t}\n\n\t}\n\n\tfunction texImage2D() {\n\n\t\ttry {\n\n\t\t\tgl.texImage2D.apply( gl, arguments );\n\n\t\t} catch ( error ) {\n\n\t\t\tconsole.error( error );\n\n\t\t}\n\n\t}\n\n\t//\n\n\tfunction scissor( scissor ) {\n\n\t\tif ( currentScissor.equals( scissor ) === false ) {\n\n\t\t\tgl.scissor( scissor.x, scissor.y, scissor.z, scissor.w );\n\t\t\tcurrentScissor.copy( scissor );\n\n\t\t}\n\n\t}\n\n\tfunction viewport( viewport ) {\n\n\t\tif ( currentViewport.equals( viewport ) === false ) {\n\n\t\t\tgl.viewport( viewport.x, viewport.y, viewport.z, viewport.w );\n\t\t\tcurrentViewport.copy( viewport );\n\n\t\t}\n\n\t}\n\n\t//\n\n\tfunction reset() {\n\n\t\tfor ( var i = 0; i < enabledAttributes.length; i ++ ) {\n\n\t\t\tif ( enabledAttributes[ i ] === 1 ) {\n\n\t\t\t\tgl.disableVertexAttribArray( i );\n\t\t\t\tenabledAttributes[ i ] = 0;\n\n\t\t\t}\n\n\t\t}\n\n\t\tcapabilities = {};\n\n\t\tcompressedTextureFormats = null;\n\n\t\tcurrentTextureSlot = null;\n\t\tcurrentBoundTextures = {};\n\n\t\tcurrentBlending = null;\n\n\t\tcurrentFlipSided = null;\n\t\tcurrentCullFace = null;\n\n\t\tcolorBuffer.reset();\n\t\tdepthBuffer.reset();\n\t\tstencilBuffer.reset();\n\n\t}\n\n\treturn {\n\n\t\tbuffers: {\n\t\t\tcolor: colorBuffer,\n\t\t\tdepth: depthBuffer,\n\t\t\tstencil: stencilBuffer\n\t\t},\n\n\t\tinit: init,\n\t\tinitAttributes: initAttributes,\n\t\tenableAttribute: enableAttribute,\n\t\tenableAttributeAndDivisor: enableAttributeAndDivisor,\n\t\tdisableUnusedAttributes: disableUnusedAttributes,\n\t\tenable: enable,\n\t\tdisable: disable,\n\t\tgetCompressedTextureFormats: getCompressedTextureFormats,\n\n\t\tsetBlending: setBlending,\n\n\t\tsetColorWrite: setColorWrite,\n\t\tsetDepthTest: setDepthTest,\n\t\tsetDepthWrite: setDepthWrite,\n\t\tsetDepthFunc: setDepthFunc,\n\t\tsetStencilTest: setStencilTest,\n\t\tsetStencilWrite: setStencilWrite,\n\t\tsetStencilFunc: setStencilFunc,\n\t\tsetStencilOp: setStencilOp,\n\n\t\tsetFlipSided: setFlipSided,\n\t\tsetCullFace: setCullFace,\n\n\t\tsetLineWidth: setLineWidth,\n\t\tsetPolygonOffset: setPolygonOffset,\n\n\t\tgetScissorTest: getScissorTest,\n\t\tsetScissorTest: setScissorTest,\n\n\t\tactiveTexture: activeTexture,\n\t\tbindTexture: bindTexture,\n\t\tcompressedTexImage2D: compressedTexImage2D,\n\t\ttexImage2D: texImage2D,\n\n\t\tscissor: scissor,\n\t\tviewport: viewport,\n\n\t\treset: reset\n\n\t};\n\n}\n\n\nexport { WebGLState };\n","/**\n * @author mrdoob / http://mrdoob.com/\n */\n\nfunction WebGLCapabilities( gl, extensions, parameters ) {\n\n\tvar maxAnisotropy;\n\n\tfunction getMaxAnisotropy() {\n\n\t\tif ( maxAnisotropy !== undefined ) return maxAnisotropy;\n\n\t\tvar extension = extensions.get( 'EXT_texture_filter_anisotropic' );\n\n\t\tif ( extension !== null ) {\n\n\t\t\tmaxAnisotropy = gl.getParameter( extension.MAX_TEXTURE_MAX_ANISOTROPY_EXT );\n\n\t\t} else {\n\n\t\t\tmaxAnisotropy = 0;\n\n\t\t}\n\n\t\treturn maxAnisotropy;\n\n\t}\n\n\tfunction getMaxPrecision( precision ) {\n\n\t\tif ( precision === 'highp' ) {\n\n\t\t\tif ( gl.getShaderPrecisionFormat( gl.VERTEX_SHADER, gl.HIGH_FLOAT ).precision > 0 &&\n\t\t\t gl.getShaderPrecisionFormat( gl.FRAGMENT_SHADER, gl.HIGH_FLOAT ).precision > 0 ) {\n\n\t\t\t\treturn 'highp';\n\n\t\t\t}\n\n\t\t\tprecision = 'mediump';\n\n\t\t}\n\n\t\tif ( precision === 'mediump' ) {\n\n\t\t\tif ( gl.getShaderPrecisionFormat( gl.VERTEX_SHADER, gl.MEDIUM_FLOAT ).precision > 0 &&\n\t\t\t gl.getShaderPrecisionFormat( gl.FRAGMENT_SHADER, gl.MEDIUM_FLOAT ).precision > 0 ) {\n\n\t\t\t\treturn 'mediump';\n\n\t\t\t}\n\n\t\t}\n\n\t\treturn 'lowp';\n\n\t}\n\n\tvar precision = parameters.precision !== undefined ? parameters.precision : 'highp';\n\tvar maxPrecision = getMaxPrecision( precision );\n\n\tif ( maxPrecision !== precision ) {\n\n\t\tconsole.warn( 'THREE.WebGLRenderer:', precision, 'not supported, using', maxPrecision, 'instead.' );\n\t\tprecision = maxPrecision;\n\n\t}\n\n\tvar logarithmicDepthBuffer = parameters.logarithmicDepthBuffer === true && !! extensions.get( 'EXT_frag_depth' );\n\n\tvar maxTextures = gl.getParameter( gl.MAX_TEXTURE_IMAGE_UNITS );\n\tvar maxVertexTextures = gl.getParameter( gl.MAX_VERTEX_TEXTURE_IMAGE_UNITS );\n\tvar maxTextureSize = gl.getParameter( gl.MAX_TEXTURE_SIZE );\n\tvar maxCubemapSize = gl.getParameter( gl.MAX_CUBE_MAP_TEXTURE_SIZE );\n\n\tvar maxAttributes = gl.getParameter( gl.MAX_VERTEX_ATTRIBS );\n\tvar maxVertexUniforms = gl.getParameter( gl.MAX_VERTEX_UNIFORM_VECTORS );\n\tvar maxVaryings = gl.getParameter( gl.MAX_VARYING_VECTORS );\n\tvar maxFragmentUniforms = gl.getParameter( gl.MAX_FRAGMENT_UNIFORM_VECTORS );\n\n\tvar vertexTextures = maxVertexTextures > 0;\n\tvar floatFragmentTextures = !! extensions.get( 'OES_texture_float' );\n\tvar floatVertexTextures = vertexTextures && floatFragmentTextures;\n\n\treturn {\n\n\t\tgetMaxAnisotropy: getMaxAnisotropy,\n\t\tgetMaxPrecision: getMaxPrecision,\n\n\t\tprecision: precision,\n\t\tlogarithmicDepthBuffer: logarithmicDepthBuffer,\n\n\t\tmaxTextures: maxTextures,\n\t\tmaxVertexTextures: maxVertexTextures,\n\t\tmaxTextureSize: maxTextureSize,\n\t\tmaxCubemapSize: maxCubemapSize,\n\n\t\tmaxAttributes: maxAttributes,\n\t\tmaxVertexUniforms: maxVertexUniforms,\n\t\tmaxVaryings: maxVaryings,\n\t\tmaxFragmentUniforms: maxFragmentUniforms,\n\n\t\tvertexTextures: vertexTextures,\n\t\tfloatFragmentTextures: floatFragmentTextures,\n\t\tfloatVertexTextures: floatVertexTextures\n\n\t};\n\n}\n\n\nexport { WebGLCapabilities };\n","/**\n * @author mrdoob / http://mrdoob.com/\n */\n\nfunction WebGLExtensions( gl ) {\n\n\tvar extensions = {};\n\n\treturn {\n\n\t\tget: function ( name ) {\n\n\t\t\tif ( extensions[ name ] !== undefined ) {\n\n\t\t\t\treturn extensions[ name ];\n\n\t\t\t}\n\n\t\t\tvar extension;\n\n\t\t\tswitch ( name ) {\n\n\t\t\t\tcase 'WEBGL_depth_texture':\n\t\t\t\t\textension = gl.getExtension( 'WEBGL_depth_texture' ) || gl.getExtension( 'MOZ_WEBGL_depth_texture' ) || gl.getExtension( 'WEBKIT_WEBGL_depth_texture' );\n\t\t\t\t\tbreak;\n\n\t\t\t\tcase 'EXT_texture_filter_anisotropic':\n\t\t\t\t\textension = gl.getExtension( 'EXT_texture_filter_anisotropic' ) || gl.getExtension( 'MOZ_EXT_texture_filter_anisotropic' ) || gl.getExtension( 'WEBKIT_EXT_texture_filter_anisotropic' );\n\t\t\t\t\tbreak;\n\n\t\t\t\tcase 'WEBGL_compressed_texture_s3tc':\n\t\t\t\t\textension = gl.getExtension( 'WEBGL_compressed_texture_s3tc' ) || gl.getExtension( 'MOZ_WEBGL_compressed_texture_s3tc' ) || gl.getExtension( 'WEBKIT_WEBGL_compressed_texture_s3tc' );\n\t\t\t\t\tbreak;\n\n\t\t\t\tcase 'WEBGL_compressed_texture_pvrtc':\n\t\t\t\t\textension = gl.getExtension( 'WEBGL_compressed_texture_pvrtc' ) || gl.getExtension( 'WEBKIT_WEBGL_compressed_texture_pvrtc' );\n\t\t\t\t\tbreak;\n\n\t\t\t\tcase 'WEBGL_compressed_texture_etc1':\n\t\t\t\t\textension = gl.getExtension( 'WEBGL_compressed_texture_etc1' );\n\t\t\t\t\tbreak;\n\n\t\t\t\tdefault:\n\t\t\t\t\textension = gl.getExtension( name );\n\n\t\t\t}\n\n\t\t\tif ( extension === null ) {\n\n\t\t\t\tconsole.warn( 'THREE.WebGLRenderer: ' + name + ' extension not supported.' );\n\n\t\t\t}\n\n\t\t\textensions[ name ] = extension;\n\n\t\t\treturn extension;\n\n\t\t}\n\n\t};\n\n}\n\n\nexport { WebGLExtensions };\n","/**\n * @author tschw\n */\n\nimport { Matrix3 } from '../../math/Matrix3';\nimport { Plane } from '../../math/Plane';\n\nfunction WebGLClipping() {\n\n\tvar scope = this,\n\n\t\tglobalState = null,\n\t\tnumGlobalPlanes = 0,\n\t\tlocalClippingEnabled = false,\n\t\trenderingShadows = false,\n\n\t\tplane = new Plane(),\n\t\tviewNormalMatrix = new Matrix3(),\n\n\t\tuniform = { value: null, needsUpdate: false };\n\n\tthis.uniform = uniform;\n\tthis.numPlanes = 0;\n\tthis.numIntersection = 0;\n\n\tthis.init = function( planes, enableLocalClipping, camera ) {\n\n\t\tvar enabled =\n\t\t\tplanes.length !== 0 ||\n\t\t\tenableLocalClipping ||\n\t\t\t// enable state of previous frame - the clipping code has to\n\t\t\t// run another frame in order to reset the state:\n\t\t\tnumGlobalPlanes !== 0 ||\n\t\t\tlocalClippingEnabled;\n\n\t\tlocalClippingEnabled = enableLocalClipping;\n\n\t\tglobalState = projectPlanes( planes, camera, 0 );\n\t\tnumGlobalPlanes = planes.length;\n\n\t\treturn enabled;\n\n\t};\n\n\tthis.beginShadows = function() {\n\n\t\trenderingShadows = true;\n\t\tprojectPlanes( null );\n\n\t};\n\n\tthis.endShadows = function() {\n\n\t\trenderingShadows = false;\n\t\tresetGlobalState();\n\n\t};\n\n\tthis.setState = function( planes, clipIntersection, clipShadows, camera, cache, fromCache ) {\n\n\t\tif ( ! localClippingEnabled ||\n\t\t\t\tplanes === null || planes.length === 0 ||\n\t\t\t\trenderingShadows && ! clipShadows ) {\n\t\t\t// there's no local clipping\n\n\t\t\tif ( renderingShadows ) {\n\t\t\t\t// there's no global clipping\n\n\t\t\t\tprojectPlanes( null );\n\n\t\t\t} else {\n\n\t\t\t\tresetGlobalState();\n\t\t\t}\n\n\t\t} else {\n\n\t\t\tvar nGlobal = renderingShadows ? 0 : numGlobalPlanes,\n\t\t\t\tlGlobal = nGlobal * 4,\n\n\t\t\t\tdstArray = cache.clippingState || null;\n\n\t\t\tuniform.value = dstArray; // ensure unique state\n\n\t\t\tdstArray = projectPlanes( planes, camera, lGlobal, fromCache );\n\n\t\t\tfor ( var i = 0; i !== lGlobal; ++ i ) {\n\n\t\t\t\tdstArray[ i ] = globalState[ i ];\n\n\t\t\t}\n\n\t\t\tcache.clippingState = dstArray;\n\t\t\tthis.numIntersection = clipIntersection ? this.numPlanes : 0;\n\t\t\tthis.numPlanes += nGlobal;\n\n\t\t}\n\n\n\t};\n\n\tfunction resetGlobalState() {\n\n\t\tif ( uniform.value !== globalState ) {\n\n\t\t\tuniform.value = globalState;\n\t\t\tuniform.needsUpdate = numGlobalPlanes > 0;\n\n\t\t}\n\n\t\tscope.numPlanes = numGlobalPlanes;\n\t\tscope.numIntersection = 0;\n\n\t}\n\n\tfunction projectPlanes( planes, camera, dstOffset, skipTransform ) {\n\n\t\tvar nPlanes = planes !== null ? planes.length : 0,\n\t\t\tdstArray = null;\n\n\t\tif ( nPlanes !== 0 ) {\n\n\t\t\tdstArray = uniform.value;\n\n\t\t\tif ( skipTransform !== true || dstArray === null ) {\n\n\t\t\t\tvar flatSize = dstOffset + nPlanes * 4,\n\t\t\t\t\tviewMatrix = camera.matrixWorldInverse;\n\n\t\t\t\tviewNormalMatrix.getNormalMatrix( viewMatrix );\n\n\t\t\t\tif ( dstArray === null || dstArray.length < flatSize ) {\n\n\t\t\t\t\tdstArray = new Float32Array( flatSize );\n\n\t\t\t\t}\n\n\t\t\t\tfor ( var i = 0, i4 = dstOffset;\n\t\t\t\t\t\t\t\t\ti !== nPlanes; ++ i, i4 += 4 ) {\n\n\t\t\t\t\tplane.copy( planes[ i ] ).\n\t\t\t\t\t\t\tapplyMatrix4( viewMatrix, viewNormalMatrix );\n\n\t\t\t\t\tplane.normal.toArray( dstArray, i4 );\n\t\t\t\t\tdstArray[ i4 + 3 ] = plane.constant;\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t\tuniform.value = dstArray;\n\t\t\tuniform.needsUpdate = true;\n\n\t\t}\n\n\t\tscope.numPlanes = nPlanes;\n\t\t\n\t\treturn dstArray;\n\n\t}\n\n}\n\nexport { WebGLClipping };\n","import { REVISION, MaxEquation, MinEquation, RGB_ETC1_Format, RGBA_PVRTC_2BPPV1_Format, RGBA_PVRTC_4BPPV1_Format, RGB_PVRTC_2BPPV1_Format, RGB_PVRTC_4BPPV1_Format, RGBA_S3TC_DXT5_Format, RGBA_S3TC_DXT3_Format, RGBA_S3TC_DXT1_Format, RGB_S3TC_DXT1_Format, SrcAlphaSaturateFactor, OneMinusDstColorFactor, DstColorFactor, OneMinusDstAlphaFactor, DstAlphaFactor, OneMinusSrcAlphaFactor, SrcAlphaFactor, OneMinusSrcColorFactor, SrcColorFactor, OneFactor, ZeroFactor, ReverseSubtractEquation, SubtractEquation, AddEquation, DepthFormat, DepthStencilFormat, LuminanceAlphaFormat, LuminanceFormat, RGBAFormat, RGBFormat, AlphaFormat, HalfFloatType, FloatType, UnsignedIntType, IntType, UnsignedShortType, ShortType, ByteType, UnsignedInt248Type, UnsignedShort565Type, UnsignedShort5551Type, UnsignedShort4444Type, UnsignedByteType, LinearMipMapLinearFilter, LinearMipMapNearestFilter, LinearFilter, NearestMipMapLinearFilter, NearestMipMapNearestFilter, NearestFilter, MirroredRepeatWrapping, ClampToEdgeWrapping, RepeatWrapping, FrontFaceDirectionCW, NoBlending, BackSide, DoubleSide, TriangleFanDrawMode, TriangleStripDrawMode, TrianglesDrawMode, NoColors, FlatShading, LinearToneMapping } from '../constants';\nimport { Matrix4 } from '../math/Matrix4';\nimport { WebGLUniforms } from './webgl/WebGLUniforms';\nimport { UniformsUtils } from './shaders/UniformsUtils';\nimport { ShaderLib } from './shaders/ShaderLib';\nimport { LensFlarePlugin } from './webgl/plugins/LensFlarePlugin';\nimport { SpritePlugin } from './webgl/plugins/SpritePlugin';\nimport { WebGLShadowMap } from './webgl/WebGLShadowMap';\nimport { ShaderMaterial } from '../materials/ShaderMaterial';\nimport { Mesh } from '../objects/Mesh';\nimport { BoxBufferGeometry } from '../geometries/BoxBufferGeometry';\nimport { PlaneBufferGeometry } from '../geometries/PlaneBufferGeometry';\nimport { MeshBasicMaterial } from '../materials/MeshBasicMaterial';\nimport { PerspectiveCamera } from '../cameras/PerspectiveCamera';\nimport { OrthographicCamera } from '../cameras/OrthographicCamera';\nimport { WebGLIndexedBufferRenderer } from './webgl/WebGLIndexedBufferRenderer';\nimport { WebGLBufferRenderer } from './webgl/WebGLBufferRenderer';\nimport { WebGLLights } from './webgl/WebGLLights';\nimport { WebGLPrograms } from './webgl/WebGLPrograms';\nimport { WebGLObjects } from './webgl/WebGLObjects';\nimport { WebGLTextures } from './webgl/WebGLTextures';\nimport { WebGLProperties } from './webgl/WebGLProperties';\nimport { WebGLState } from './webgl/WebGLState';\nimport { WebGLCapabilities } from './webgl/WebGLCapabilities';\nimport { BufferGeometry } from '../core/BufferGeometry';\nimport { WebGLExtensions } from './webgl/WebGLExtensions';\nimport { Vector3 } from '../math/Vector3';\nimport { Sphere } from '../math/Sphere';\nimport { WebGLClipping } from './webgl/WebGLClipping';\nimport { Frustum } from '../math/Frustum';\nimport { Vector4 } from '../math/Vector4';\nimport { Color } from '../math/Color';\n\n/**\n * @author supereggbert / http://www.paulbrunt.co.uk/\n * @author mrdoob / http://mrdoob.com/\n * @author alteredq / http://alteredqualia.com/\n * @author szimek / https://github.com/szimek/\n * @author tschw\n */\n\nfunction WebGLRenderer( parameters ) {\n\n\tconsole.log( 'THREE.WebGLRenderer', REVISION );\n\n\tparameters = parameters || {};\n\n\tvar _canvas = parameters.canvas !== undefined ? parameters.canvas : document.createElementNS( 'http://www.w3.org/1999/xhtml', 'canvas' ),\n\t_context = parameters.context !== undefined ? parameters.context : null,\n\n\t_alpha = parameters.alpha !== undefined ? parameters.alpha : false,\n\t_depth = parameters.depth !== undefined ? parameters.depth : true,\n\t_stencil = parameters.stencil !== undefined ? parameters.stencil : true,\n\t_antialias = parameters.antialias !== undefined ? parameters.antialias : false,\n\t_premultipliedAlpha = parameters.premultipliedAlpha !== undefined ? parameters.premultipliedAlpha : true,\n\t_preserveDrawingBuffer = parameters.preserveDrawingBuffer !== undefined ? parameters.preserveDrawingBuffer : false;\n\n\tvar lights = [];\n\n\tvar opaqueObjects = [];\n\tvar opaqueObjectsLastIndex = - 1;\n\tvar transparentObjects = [];\n\tvar transparentObjectsLastIndex = - 1;\n\n\tvar morphInfluences = new Float32Array( 8 );\n\n\tvar sprites = [];\n\tvar lensFlares = [];\n\n\t// public properties\n\n\tthis.domElement = _canvas;\n\tthis.context = null;\n\n\t// clearing\n\n\tthis.autoClear = true;\n\tthis.autoClearColor = true;\n\tthis.autoClearDepth = true;\n\tthis.autoClearStencil = true;\n\n\t// scene graph\n\n\tthis.sortObjects = true;\n\n\t// user-defined clipping\n\n\tthis.clippingPlanes = [];\n\tthis.localClippingEnabled = false;\n\n\t// physically based shading\n\n\tthis.gammaFactor = 2.0;\t// for backwards compatibility\n\tthis.gammaInput = false;\n\tthis.gammaOutput = false;\n\n\t// physical lights\n\n\tthis.physicallyCorrectLights = false;\n\n\t// tone mapping\n\n\tthis.toneMapping = LinearToneMapping;\n\tthis.toneMappingExposure = 1.0;\n\tthis.toneMappingWhitePoint = 1.0;\n\n\t// morphs\n\n\tthis.maxMorphTargets = 8;\n\tthis.maxMorphNormals = 4;\n\n\t// internal properties\n\n\tvar _this = this,\n\n\t// internal state cache\n\n\t_currentProgram = null,\n\t_currentRenderTarget = null,\n\t_currentFramebuffer = null,\n\t_currentMaterialId = - 1,\n\t_currentGeometryProgram = '',\n\t_currentCamera = null,\n\n\t_currentScissor = new Vector4(),\n\t_currentScissorTest = null,\n\n\t_currentViewport = new Vector4(),\n\n\t//\n\n\t_usedTextureUnits = 0,\n\n\t//\n\n\t_clearColor = new Color( 0x000000 ),\n\t_clearAlpha = 0,\n\n\t_width = _canvas.width,\n\t_height = _canvas.height,\n\n\t_pixelRatio = 1,\n\n\t_scissor = new Vector4( 0, 0, _width, _height ),\n\t_scissorTest = false,\n\n\t_viewport = new Vector4( 0, 0, _width, _height ),\n\n\t// frustum\n\n\t_frustum = new Frustum(),\n\n\t// clipping\n\n\t_clipping = new WebGLClipping(),\n\t_clippingEnabled = false,\n\t_localClippingEnabled = false,\n\n\t_sphere = new Sphere(),\n\n\t// camera matrices cache\n\n\t_projScreenMatrix = new Matrix4(),\n\n\t_vector3 = new Vector3(),\n\n\t// light arrays cache\n\n\t_lights = {\n\n\t\thash: '',\n\n\t\tambient: [ 0, 0, 0 ],\n\t\tdirectional: [],\n\t\tdirectionalShadowMap: [],\n\t\tdirectionalShadowMatrix: [],\n\t\tspot: [],\n\t\tspotShadowMap: [],\n\t\tspotShadowMatrix: [],\n\t\tpoint: [],\n\t\tpointShadowMap: [],\n\t\tpointShadowMatrix: [],\n\t\themi: [],\n\n\t\tshadows: []\n\n\t},\n\n\t// info\n\n\t_infoRender = {\n\n\t\tcalls: 0,\n\t\tvertices: 0,\n\t\tfaces: 0,\n\t\tpoints: 0\n\n\t};\n\n\tthis.info = {\n\n\t\trender: _infoRender,\n\t\tmemory: {\n\n\t\t\tgeometries: 0,\n\t\t\ttextures: 0\n\n\t\t},\n\t\tprograms: null\n\n\t};\n\n\n\t// initialize\n\n\tvar _gl;\n\n\ttry {\n\n\t\tvar attributes = {\n\t\t\talpha: _alpha,\n\t\t\tdepth: _depth,\n\t\t\tstencil: _stencil,\n\t\t\tantialias: _antialias,\n\t\t\tpremultipliedAlpha: _premultipliedAlpha,\n\t\t\tpreserveDrawingBuffer: _preserveDrawingBuffer\n\t\t};\n\n\t\t_gl = _context || _canvas.getContext( 'webgl', attributes ) || _canvas.getContext( 'experimental-webgl', attributes );\n\n\t\tif ( _gl === null ) {\n\n\t\t\tif ( _canvas.getContext( 'webgl' ) !== null ) {\n\n\t\t\t\tthrow 'Error creating WebGL context with your selected attributes.';\n\n\t\t\t} else {\n\n\t\t\t\tthrow 'Error creating WebGL context.';\n\n\t\t\t}\n\n\t\t}\n\n\t\t// Some experimental-webgl implementations do not have getShaderPrecisionFormat\n\n\t\tif ( _gl.getShaderPrecisionFormat === undefined ) {\n\n\t\t\t_gl.getShaderPrecisionFormat = function () {\n\n\t\t\t\treturn { 'rangeMin': 1, 'rangeMax': 1, 'precision': 1 };\n\n\t\t\t};\n\n\t\t}\n\n\t\t_canvas.addEventListener( 'webglcontextlost', onContextLost, false );\n\n\t} catch ( error ) {\n\n\t\tconsole.error( 'THREE.WebGLRenderer: ' + error );\n\n\t}\n\n\tvar extensions = new WebGLExtensions( _gl );\n\n\textensions.get( 'WEBGL_depth_texture' );\n\textensions.get( 'OES_texture_float' );\n\textensions.get( 'OES_texture_float_linear' );\n\textensions.get( 'OES_texture_half_float' );\n\textensions.get( 'OES_texture_half_float_linear' );\n\textensions.get( 'OES_standard_derivatives' );\n\textensions.get( 'ANGLE_instanced_arrays' );\n\n\tif ( extensions.get( 'OES_element_index_uint' ) ) {\n\n\t\tBufferGeometry.MaxIndex = 4294967296;\n\n\t}\n\n\tvar capabilities = new WebGLCapabilities( _gl, extensions, parameters );\n\n\tvar state = new WebGLState( _gl, extensions, paramThreeToGL );\n\tvar properties = new WebGLProperties();\n\tvar textures = new WebGLTextures( _gl, extensions, state, properties, capabilities, paramThreeToGL, this.info );\n\tvar objects = new WebGLObjects( _gl, properties, this.info );\n\tvar programCache = new WebGLPrograms( this, capabilities );\n\tvar lightCache = new WebGLLights();\n\n\tthis.info.programs = programCache.programs;\n\n\tvar bufferRenderer = new WebGLBufferRenderer( _gl, extensions, _infoRender );\n\tvar indexedBufferRenderer = new WebGLIndexedBufferRenderer( _gl, extensions, _infoRender );\n\n\t//\n\n\tvar backgroundCamera = new OrthographicCamera( - 1, 1, 1, - 1, 0, 1 );\n\tvar backgroundCamera2 = new PerspectiveCamera();\n\tvar backgroundPlaneMesh = new Mesh(\n\t\tnew PlaneBufferGeometry( 2, 2 ),\n\t\tnew MeshBasicMaterial( { depthTest: false, depthWrite: false, fog: false } )\n\t);\n\tvar backgroundBoxShader = ShaderLib[ 'cube' ];\n\tvar backgroundBoxMesh = new Mesh(\n\t\tnew BoxBufferGeometry( 5, 5, 5 ),\n\t\tnew ShaderMaterial( {\n\t\t\tuniforms: backgroundBoxShader.uniforms,\n\t\t\tvertexShader: backgroundBoxShader.vertexShader,\n\t\t\tfragmentShader: backgroundBoxShader.fragmentShader,\n\t\t\tside: BackSide,\n\t\t\tdepthTest: false,\n\t\t\tdepthWrite: false,\n\t\t\tfog: false\n\t\t} )\n\t);\n\n\t//\n\n\tfunction getTargetPixelRatio() {\n\n\t\treturn _currentRenderTarget === null ? _pixelRatio : 1;\n\n\t}\n\n\tfunction setDefaultGLState() {\n\n\t\tstate.init();\n\n\t\tstate.scissor( _currentScissor.copy( _scissor ).multiplyScalar( _pixelRatio ) );\n\t\tstate.viewport( _currentViewport.copy( _viewport ).multiplyScalar( _pixelRatio ) );\n\n\t\tstate.buffers.color.setClear( _clearColor.r, _clearColor.g, _clearColor.b, _clearAlpha, _premultipliedAlpha );\n\n\t}\n\n\tfunction resetGLState() {\n\n\t\t_currentProgram = null;\n\t\t_currentCamera = null;\n\n\t\t_currentGeometryProgram = '';\n\t\t_currentMaterialId = - 1;\n\n\t\tstate.reset();\n\n\t}\n\n\tsetDefaultGLState();\n\n\tthis.context = _gl;\n\tthis.capabilities = capabilities;\n\tthis.extensions = extensions;\n\tthis.properties = properties;\n\tthis.state = state;\n\n\t// shadow map\n\n\tvar shadowMap = new WebGLShadowMap( this, _lights, objects, capabilities );\n\n\tthis.shadowMap = shadowMap;\n\n\n\t// Plugins\n\n\tvar spritePlugin = new SpritePlugin( this, sprites );\n\tvar lensFlarePlugin = new LensFlarePlugin( this, lensFlares );\n\n\t// API\n\n\tthis.getContext = function () {\n\n\t\treturn _gl;\n\n\t};\n\n\tthis.getContextAttributes = function () {\n\n\t\treturn _gl.getContextAttributes();\n\n\t};\n\n\tthis.forceContextLoss = function () {\n\n\t\textensions.get( 'WEBGL_lose_context' ).loseContext();\n\n\t};\n\n\tthis.getMaxAnisotropy = function () {\n\n\t\treturn capabilities.getMaxAnisotropy();\n\n\t};\n\n\tthis.getPrecision = function () {\n\n\t\treturn capabilities.precision;\n\n\t};\n\n\tthis.getPixelRatio = function () {\n\n\t\treturn _pixelRatio;\n\n\t};\n\n\tthis.setPixelRatio = function ( value ) {\n\n\t\tif ( value === undefined ) return;\n\n\t\t_pixelRatio = value;\n\n\t\tthis.setSize( _viewport.z, _viewport.w, false );\n\n\t};\n\n\tthis.getSize = function () {\n\n\t\treturn {\n\t\t\twidth: _width,\n\t\t\theight: _height\n\t\t};\n\n\t};\n\n\tthis.setSize = function ( width, height, updateStyle ) {\n\n\t\t_width = width;\n\t\t_height = height;\n\n\t\t_canvas.width = width * _pixelRatio;\n\t\t_canvas.height = height * _pixelRatio;\n\n\t\tif ( updateStyle !== false ) {\n\n\t\t\t_canvas.style.width = width + 'px';\n\t\t\t_canvas.style.height = height + 'px';\n\n\t\t}\n\n\t\tthis.setViewport( 0, 0, width, height );\n\n\t};\n\n\tthis.setViewport = function ( x, y, width, height ) {\n\n\t\tstate.viewport( _viewport.set( x, y, width, height ) );\n\n\t};\n\n\tthis.setScissor = function ( x, y, width, height ) {\n\n\t\tstate.scissor( _scissor.set( x, y, width, height ) );\n\n\t};\n\n\tthis.setScissorTest = function ( boolean ) {\n\n\t\tstate.setScissorTest( _scissorTest = boolean );\n\n\t};\n\n\t// Clearing\n\n\tthis.getClearColor = function () {\n\n\t\treturn _clearColor;\n\n\t};\n\n\tthis.setClearColor = function ( color, alpha ) {\n\n\t\t_clearColor.set( color );\n\n\t\t_clearAlpha = alpha !== undefined ? alpha : 1;\n\n\t\tstate.buffers.color.setClear( _clearColor.r, _clearColor.g, _clearColor.b, _clearAlpha, _premultipliedAlpha );\n\n\t};\n\n\tthis.getClearAlpha = function () {\n\n\t\treturn _clearAlpha;\n\n\t};\n\n\tthis.setClearAlpha = function ( alpha ) {\n\n\t\t_clearAlpha = alpha;\n\n\t\tstate.buffers.color.setClear( _clearColor.r, _clearColor.g, _clearColor.b, _clearAlpha, _premultipliedAlpha );\n\n\t};\n\n\tthis.clear = function ( color, depth, stencil ) {\n\n\t\tvar bits = 0;\n\n\t\tif ( color === undefined || color ) bits |= _gl.COLOR_BUFFER_BIT;\n\t\tif ( depth === undefined || depth ) bits |= _gl.DEPTH_BUFFER_BIT;\n\t\tif ( stencil === undefined || stencil ) bits |= _gl.STENCIL_BUFFER_BIT;\n\n\t\t_gl.clear( bits );\n\n\t};\n\n\tthis.clearColor = function () {\n\n\t\tthis.clear( true, false, false );\n\n\t};\n\n\tthis.clearDepth = function () {\n\n\t\tthis.clear( false, true, false );\n\n\t};\n\n\tthis.clearStencil = function () {\n\n\t\tthis.clear( false, false, true );\n\n\t};\n\n\tthis.clearTarget = function ( renderTarget, color, depth, stencil ) {\n\n\t\tthis.setRenderTarget( renderTarget );\n\t\tthis.clear( color, depth, stencil );\n\n\t};\n\n\t// Reset\n\n\tthis.resetGLState = resetGLState;\n\n\tthis.dispose = function() {\n\n\t\ttransparentObjects = [];\n\t\ttransparentObjectsLastIndex = -1;\n\t\topaqueObjects = [];\n\t\topaqueObjectsLastIndex = -1;\n\n\t\t_canvas.removeEventListener( 'webglcontextlost', onContextLost, false );\n\n\t};\n\n\t// Events\n\n\tfunction onContextLost( event ) {\n\n\t\tevent.preventDefault();\n\n\t\tresetGLState();\n\t\tsetDefaultGLState();\n\n\t\tproperties.clear();\n\n\t}\n\n\tfunction onMaterialDispose( event ) {\n\n\t\tvar material = event.target;\n\n\t\tmaterial.removeEventListener( 'dispose', onMaterialDispose );\n\n\t\tdeallocateMaterial( material );\n\n\t}\n\n\t// Buffer deallocation\n\n\tfunction deallocateMaterial( material ) {\n\n\t\treleaseMaterialProgramReference( material );\n\n\t\tproperties.delete( material );\n\n\t}\n\n\n\tfunction releaseMaterialProgramReference( material ) {\n\n\t\tvar programInfo = properties.get( material ).program;\n\n\t\tmaterial.program = undefined;\n\n\t\tif ( programInfo !== undefined ) {\n\n\t\t\tprogramCache.releaseProgram( programInfo );\n\n\t\t}\n\n\t}\n\n\t// Buffer rendering\n\n\tthis.renderBufferImmediate = function ( object, program, material ) {\n\n\t\tstate.initAttributes();\n\n\t\tvar buffers = properties.get( object );\n\n\t\tif ( object.hasPositions && ! buffers.position ) buffers.position = _gl.createBuffer();\n\t\tif ( object.hasNormals && ! buffers.normal ) buffers.normal = _gl.createBuffer();\n\t\tif ( object.hasUvs && ! buffers.uv ) buffers.uv = _gl.createBuffer();\n\t\tif ( object.hasColors && ! buffers.color ) buffers.color = _gl.createBuffer();\n\n\t\tvar attributes = program.getAttributes();\n\n\t\tif ( object.hasPositions ) {\n\n\t\t\t_gl.bindBuffer( _gl.ARRAY_BUFFER, buffers.position );\n\t\t\t_gl.bufferData( _gl.ARRAY_BUFFER, object.positionArray, _gl.DYNAMIC_DRAW );\n\n\t\t\tstate.enableAttribute( attributes.position );\n\t\t\t_gl.vertexAttribPointer( attributes.position, 3, _gl.FLOAT, false, 0, 0 );\n\n\t\t}\n\n\t\tif ( object.hasNormals ) {\n\n\t\t\t_gl.bindBuffer( _gl.ARRAY_BUFFER, buffers.normal );\n\n\t\t\tif ( ! material.isMeshPhongMaterial &&\n\t\t\t ! material.isMeshStandardMaterial &&\n\t\t\t material.shading === FlatShading ) {\n\n\t\t\t\tfor ( var i = 0, l = object.count * 3; i < l; i += 9 ) {\n\n\t\t\t\t\tvar array = object.normalArray;\n\n\t\t\t\t\tvar nx = ( array[ i + 0 ] + array[ i + 3 ] + array[ i + 6 ] ) / 3;\n\t\t\t\t\tvar ny = ( array[ i + 1 ] + array[ i + 4 ] + array[ i + 7 ] ) / 3;\n\t\t\t\t\tvar nz = ( array[ i + 2 ] + array[ i + 5 ] + array[ i + 8 ] ) / 3;\n\n\t\t\t\t\tarray[ i + 0 ] = nx;\n\t\t\t\t\tarray[ i + 1 ] = ny;\n\t\t\t\t\tarray[ i + 2 ] = nz;\n\n\t\t\t\t\tarray[ i + 3 ] = nx;\n\t\t\t\t\tarray[ i + 4 ] = ny;\n\t\t\t\t\tarray[ i + 5 ] = nz;\n\n\t\t\t\t\tarray[ i + 6 ] = nx;\n\t\t\t\t\tarray[ i + 7 ] = ny;\n\t\t\t\t\tarray[ i + 8 ] = nz;\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t\t_gl.bufferData( _gl.ARRAY_BUFFER, object.normalArray, _gl.DYNAMIC_DRAW );\n\n\t\t\tstate.enableAttribute( attributes.normal );\n\n\t\t\t_gl.vertexAttribPointer( attributes.normal, 3, _gl.FLOAT, false, 0, 0 );\n\n\t\t}\n\n\t\tif ( object.hasUvs && material.map ) {\n\n\t\t\t_gl.bindBuffer( _gl.ARRAY_BUFFER, buffers.uv );\n\t\t\t_gl.bufferData( _gl.ARRAY_BUFFER, object.uvArray, _gl.DYNAMIC_DRAW );\n\n\t\t\tstate.enableAttribute( attributes.uv );\n\n\t\t\t_gl.vertexAttribPointer( attributes.uv, 2, _gl.FLOAT, false, 0, 0 );\n\n\t\t}\n\n\t\tif ( object.hasColors && material.vertexColors !== NoColors ) {\n\n\t\t\t_gl.bindBuffer( _gl.ARRAY_BUFFER, buffers.color );\n\t\t\t_gl.bufferData( _gl.ARRAY_BUFFER, object.colorArray, _gl.DYNAMIC_DRAW );\n\n\t\t\tstate.enableAttribute( attributes.color );\n\n\t\t\t_gl.vertexAttribPointer( attributes.color, 3, _gl.FLOAT, false, 0, 0 );\n\n\t\t}\n\n\t\tstate.disableUnusedAttributes();\n\n\t\t_gl.drawArrays( _gl.TRIANGLES, 0, object.count );\n\n\t\tobject.count = 0;\n\n\t};\n\n\tthis.renderBufferDirect = function ( camera, fog, geometry, material, object, group ) {\n\n\t\tsetMaterial( material );\n\n\t\tvar program = setProgram( camera, fog, material, object );\n\n\t\tvar updateBuffers = false;\n\t\tvar geometryProgram = geometry.id + '_' + program.id + '_' + material.wireframe;\n\n\t\tif ( geometryProgram !== _currentGeometryProgram ) {\n\n\t\t\t_currentGeometryProgram = geometryProgram;\n\t\t\tupdateBuffers = true;\n\n\t\t}\n\n\t\t// morph targets\n\n\t\tvar morphTargetInfluences = object.morphTargetInfluences;\n\n\t\tif ( morphTargetInfluences !== undefined ) {\n\n\t\t\tvar activeInfluences = [];\n\n\t\t\tfor ( var i = 0, l = morphTargetInfluences.length; i < l; i ++ ) {\n\n\t\t\t\tvar influence = morphTargetInfluences[ i ];\n\t\t\t\tactiveInfluences.push( [ influence, i ] );\n\n\t\t\t}\n\n\t\t\tactiveInfluences.sort( absNumericalSort );\n\n\t\t\tif ( activeInfluences.length > 8 ) {\n\n\t\t\t\tactiveInfluences.length = 8;\n\n\t\t\t}\n\n\t\t\tvar morphAttributes = geometry.morphAttributes;\n\n\t\t\tfor ( var i = 0, l = activeInfluences.length; i < l; i ++ ) {\n\n\t\t\t\tvar influence = activeInfluences[ i ];\n\t\t\t\tmorphInfluences[ i ] = influence[ 0 ];\n\n\t\t\t\tif ( influence[ 0 ] !== 0 ) {\n\n\t\t\t\t\tvar index = influence[ 1 ];\n\n\t\t\t\t\tif ( material.morphTargets === true && morphAttributes.position ) geometry.addAttribute( 'morphTarget' + i, morphAttributes.position[ index ] );\n\t\t\t\t\tif ( material.morphNormals === true && morphAttributes.normal ) geometry.addAttribute( 'morphNormal' + i, morphAttributes.normal[ index ] );\n\n\t\t\t\t} else {\n\n\t\t\t\t\tif ( material.morphTargets === true ) geometry.removeAttribute( 'morphTarget' + i );\n\t\t\t\t\tif ( material.morphNormals === true ) geometry.removeAttribute( 'morphNormal' + i );\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t\tfor ( var i = activeInfluences.length, il = morphInfluences.length; i < il; i ++ ) {\n\n\t\t\t\tmorphInfluences[ i ] = 0.0;\n\n\t\t\t}\n\n\t\t\tprogram.getUniforms().setValue(\n\t\t\t\t\t_gl, 'morphTargetInfluences', morphInfluences );\n\n\t\t\tupdateBuffers = true;\n\n\t\t}\n\n\t\t//\n\n\t\tvar index = geometry.index;\n\t\tvar position = geometry.attributes.position;\n\t\tvar rangeFactor = 1;\n\n\t\tif ( material.wireframe === true ) {\n\n\t\t\tindex = objects.getWireframeAttribute( geometry );\n\t\t\trangeFactor = 2;\n\n\t\t}\n\n\t\tvar renderer;\n\n\t\tif ( index !== null ) {\n\n\t\t\trenderer = indexedBufferRenderer;\n\t\t\trenderer.setIndex( index );\n\n\t\t} else {\n\n\t\t\trenderer = bufferRenderer;\n\n\t\t}\n\n\t\tif ( updateBuffers ) {\n\n\t\t\tsetupVertexAttributes( material, program, geometry );\n\n\t\t\tif ( index !== null ) {\n\n\t\t\t\t_gl.bindBuffer( _gl.ELEMENT_ARRAY_BUFFER, objects.getAttributeBuffer( index ) );\n\n\t\t\t}\n\n\t\t}\n\n\t\t//\n\n\t\tvar dataCount = 0;\n\n\t\tif ( index !== null ) {\n\n\t\t\tdataCount = index.count;\n\n\t\t} else if ( position !== undefined ) {\n\n\t\t\tdataCount = position.count;\n\n\t\t}\n\n\t\tvar rangeStart = geometry.drawRange.start * rangeFactor;\n\t\tvar rangeCount = geometry.drawRange.count * rangeFactor;\n\n\t\tvar groupStart = group !== null ? group.start * rangeFactor : 0;\n\t\tvar groupCount = group !== null ? group.count * rangeFactor : Infinity;\n\n\t\tvar drawStart = Math.max( rangeStart, groupStart );\n\t\tvar drawEnd = Math.min( dataCount, rangeStart + rangeCount, groupStart + groupCount ) - 1;\n\n\t\tvar drawCount = Math.max( 0, drawEnd - drawStart + 1 );\n\n\t\tif ( drawCount === 0 ) return;\n\n\t\t//\n\n\t\tif ( object.isMesh ) {\n\n\t\t\tif ( material.wireframe === true ) {\n\n\t\t\t\tstate.setLineWidth( material.wireframeLinewidth * getTargetPixelRatio() );\n\t\t\t\trenderer.setMode( _gl.LINES );\n\n\t\t\t} else {\n\n\t\t\t\tswitch ( object.drawMode ) {\n\n\t\t\t\t\tcase TrianglesDrawMode:\n\t\t\t\t\t\trenderer.setMode( _gl.TRIANGLES );\n\t\t\t\t\t\tbreak;\n\n\t\t\t\t\tcase TriangleStripDrawMode:\n\t\t\t\t\t\trenderer.setMode( _gl.TRIANGLE_STRIP );\n\t\t\t\t\t\tbreak;\n\n\t\t\t\t\tcase TriangleFanDrawMode:\n\t\t\t\t\t\trenderer.setMode( _gl.TRIANGLE_FAN );\n\t\t\t\t\t\tbreak;\n\n\t\t\t\t}\n\n\t\t\t}\n\n\n\t\t} else if ( object.isLine ) {\n\n\t\t\tvar lineWidth = material.linewidth;\n\n\t\t\tif ( lineWidth === undefined ) lineWidth = 1; // Not using Line*Material\n\n\t\t\tstate.setLineWidth( lineWidth * getTargetPixelRatio() );\n\n\t\t\tif ( object.isLineSegments ) {\n\n\t\t\t\trenderer.setMode( _gl.LINES );\n\n\t\t\t} else {\n\n\t\t\t\trenderer.setMode( _gl.LINE_STRIP );\n\n\t\t\t}\n\n\t\t} else if ( object.isPoints ) {\n\n\t\t\trenderer.setMode( _gl.POINTS );\n\n\t\t}\n\n\t\tif ( geometry && geometry.isInstancedBufferGeometry ) {\n\n\t\t\tif ( geometry.maxInstancedCount > 0 ) {\n\n\t\t\t\trenderer.renderInstances( geometry, drawStart, drawCount );\n\n\t\t\t}\n\n\t\t} else {\n\n\t\t\trenderer.render( drawStart, drawCount );\n\n\t\t}\n\n\t};\n\n\tfunction setupVertexAttributes( material, program, geometry, startIndex ) {\n\n\t\tvar extension;\n\n\t\tif ( geometry && geometry.isInstancedBufferGeometry ) {\n\n\t\t\textension = extensions.get( 'ANGLE_instanced_arrays' );\n\n\t\t\tif ( extension === null ) {\n\n\t\t\t\tconsole.error( 'THREE.WebGLRenderer.setupVertexAttributes: using THREE.InstancedBufferGeometry but hardware does not support extension ANGLE_instanced_arrays.' );\n\t\t\t\treturn;\n\n\t\t\t}\n\n\t\t}\n\n\t\tif ( startIndex === undefined ) startIndex = 0;\n\n\t\tstate.initAttributes();\n\n\t\tvar geometryAttributes = geometry.attributes;\n\n\t\tvar programAttributes = program.getAttributes();\n\n\t\tvar materialDefaultAttributeValues = material.defaultAttributeValues;\n\n\t\tfor ( var name in programAttributes ) {\n\n\t\t\tvar programAttribute = programAttributes[ name ];\n\n\t\t\tif ( programAttribute >= 0 ) {\n\n\t\t\t\tvar geometryAttribute = geometryAttributes[ name ];\n\n\t\t\t\tif ( geometryAttribute !== undefined ) {\n\n\t\t\t\t\tvar type = _gl.FLOAT;\n\t\t\t\t\tvar array = geometryAttribute.array;\n\t\t\t\t\tvar normalized = geometryAttribute.normalized;\n\n\t\t\t\t\tif ( array instanceof Float32Array ) {\n\n\t\t\t\t\t\ttype = _gl.FLOAT;\n\n\t\t\t\t\t} else if ( array instanceof Float64Array ) {\n\n\t\t\t\t\t\tconsole.warn( \"Unsupported data buffer format: Float64Array\" );\n\n\t\t\t\t\t} else if ( array instanceof Uint16Array ) {\n\n\t\t\t\t\t\ttype = _gl.UNSIGNED_SHORT;\n\n\t\t\t\t\t} else if ( array instanceof Int16Array ) {\n\n\t\t\t\t\t\ttype = _gl.SHORT;\n\n\t\t\t\t\t} else if ( array instanceof Uint32Array ) {\n\n\t\t\t\t\t\ttype = _gl.UNSIGNED_INT;\n\n\t\t\t\t\t} else if ( array instanceof Int32Array ) {\n\n\t\t\t\t\t\ttype = _gl.INT;\n\n\t\t\t\t\t} else if ( array instanceof Int8Array ) {\n\n\t\t\t\t\t\ttype = _gl.BYTE;\n\n\t\t\t\t\t} else if ( array instanceof Uint8Array ) {\n\n\t\t\t\t\t\ttype = _gl.UNSIGNED_BYTE;\n\n\t\t\t\t\t}\n\n\t\t\t\t\tvar size = geometryAttribute.itemSize;\n\t\t\t\t\tvar buffer = objects.getAttributeBuffer( geometryAttribute );\n\n\t\t\t\t\tif ( geometryAttribute.isInterleavedBufferAttribute ) {\n\n\t\t\t\t\t\tvar data = geometryAttribute.data;\n\t\t\t\t\t\tvar stride = data.stride;\n\t\t\t\t\t\tvar offset = geometryAttribute.offset;\n\n\t\t\t\t\t\tif ( data && data.isInstancedInterleavedBuffer ) {\n\n\t\t\t\t\t\t\tstate.enableAttributeAndDivisor( programAttribute, data.meshPerAttribute, extension );\n\n\t\t\t\t\t\t\tif ( geometry.maxInstancedCount === undefined ) {\n\n\t\t\t\t\t\t\t\tgeometry.maxInstancedCount = data.meshPerAttribute * data.count;\n\n\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t} else {\n\n\t\t\t\t\t\t\tstate.enableAttribute( programAttribute );\n\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\t_gl.bindBuffer( _gl.ARRAY_BUFFER, buffer );\n\t\t\t\t\t\t_gl.vertexAttribPointer( programAttribute, size, type, normalized, stride * data.array.BYTES_PER_ELEMENT, ( startIndex * stride + offset ) * data.array.BYTES_PER_ELEMENT );\n\n\t\t\t\t\t} else {\n\n\t\t\t\t\t\tif ( geometryAttribute.isInstancedBufferAttribute ) {\n\n\t\t\t\t\t\t\tstate.enableAttributeAndDivisor( programAttribute, geometryAttribute.meshPerAttribute, extension );\n\n\t\t\t\t\t\t\tif ( geometry.maxInstancedCount === undefined ) {\n\n\t\t\t\t\t\t\t\tgeometry.maxInstancedCount = geometryAttribute.meshPerAttribute * geometryAttribute.count;\n\n\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t} else {\n\n\t\t\t\t\t\t\tstate.enableAttribute( programAttribute );\n\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\t_gl.bindBuffer( _gl.ARRAY_BUFFER, buffer );\n\t\t\t\t\t\t_gl.vertexAttribPointer( programAttribute, size, type, normalized, 0, startIndex * size * geometryAttribute.array.BYTES_PER_ELEMENT );\n\n\t\t\t\t\t}\n\n\t\t\t\t} else if ( materialDefaultAttributeValues !== undefined ) {\n\n\t\t\t\t\tvar value = materialDefaultAttributeValues[ name ];\n\n\t\t\t\t\tif ( value !== undefined ) {\n\n\t\t\t\t\t\tswitch ( value.length ) {\n\n\t\t\t\t\t\t\tcase 2:\n\t\t\t\t\t\t\t\t_gl.vertexAttrib2fv( programAttribute, value );\n\t\t\t\t\t\t\t\tbreak;\n\n\t\t\t\t\t\t\tcase 3:\n\t\t\t\t\t\t\t\t_gl.vertexAttrib3fv( programAttribute, value );\n\t\t\t\t\t\t\t\tbreak;\n\n\t\t\t\t\t\t\tcase 4:\n\t\t\t\t\t\t\t\t_gl.vertexAttrib4fv( programAttribute, value );\n\t\t\t\t\t\t\t\tbreak;\n\n\t\t\t\t\t\t\tdefault:\n\t\t\t\t\t\t\t\t_gl.vertexAttrib1fv( programAttribute, value );\n\n\t\t\t\t\t\t}\n\n\t\t\t\t\t}\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t}\n\n\t\tstate.disableUnusedAttributes();\n\n\t}\n\n\t// Sorting\n\n\tfunction absNumericalSort( a, b ) {\n\n\t\treturn Math.abs( b[ 0 ] ) - Math.abs( a[ 0 ] );\n\n\t}\n\n\tfunction painterSortStable( a, b ) {\n\n\t\tif ( a.object.renderOrder !== b.object.renderOrder ) {\n\n\t\t\treturn a.object.renderOrder - b.object.renderOrder;\n\n\t\t} else if ( a.material.program && b.material.program && a.material.program !== b.material.program ) {\n\n\t\t\treturn a.material.program.id - b.material.program.id;\n\n\t\t} else if ( a.material.id !== b.material.id ) {\n\n\t\t\treturn a.material.id - b.material.id;\n\n\t\t} else if ( a.z !== b.z ) {\n\n\t\t\treturn a.z - b.z;\n\n\t\t} else {\n\n\t\t\treturn a.id - b.id;\n\n\t\t}\n\n\t}\n\n\tfunction reversePainterSortStable( a, b ) {\n\n\t\tif ( a.object.renderOrder !== b.object.renderOrder ) {\n\n\t\t\treturn a.object.renderOrder - b.object.renderOrder;\n\n\t\t} if ( a.z !== b.z ) {\n\n\t\t\treturn b.z - a.z;\n\n\t\t} else {\n\n\t\t\treturn a.id - b.id;\n\n\t\t}\n\n\t}\n\n\t// Rendering\n\n\tthis.render = function ( scene, camera, renderTarget, forceClear ) {\n\n\t\tif ( camera !== undefined && camera.isCamera !== true ) {\n\n\t\t\tconsole.error( 'THREE.WebGLRenderer.render: camera is not an instance of THREE.Camera.' );\n\t\t\treturn;\n\n\t\t}\n\n\t\t// reset caching for this frame\n\n\t\t_currentGeometryProgram = '';\n\t\t_currentMaterialId = - 1;\n\t\t_currentCamera = null;\n\n\t\t// update scene graph\n\n\t\tif ( scene.autoUpdate === true ) scene.updateMatrixWorld();\n\n\t\t// update camera matrices and frustum\n\n\t\tif ( camera.parent === null ) camera.updateMatrixWorld();\n\n\t\tcamera.matrixWorldInverse.getInverse( camera.matrixWorld );\n\n\t\t_projScreenMatrix.multiplyMatrices( camera.projectionMatrix, camera.matrixWorldInverse );\n\t\t_frustum.setFromMatrix( _projScreenMatrix );\n\n\t\tlights.length = 0;\n\n\t\topaqueObjectsLastIndex = - 1;\n\t\ttransparentObjectsLastIndex = - 1;\n\n\t\tsprites.length = 0;\n\t\tlensFlares.length = 0;\n\n\t\t_localClippingEnabled = this.localClippingEnabled;\n\t\t_clippingEnabled = _clipping.init( this.clippingPlanes, _localClippingEnabled, camera );\n\n\t\tprojectObject( scene, camera );\n\n\t\topaqueObjects.length = opaqueObjectsLastIndex + 1;\n\t\ttransparentObjects.length = transparentObjectsLastIndex + 1;\n\n\t\tif ( _this.sortObjects === true ) {\n\n\t\t\topaqueObjects.sort( painterSortStable );\n\t\t\ttransparentObjects.sort( reversePainterSortStable );\n\n\t\t}\n\n\t\t//\n\n\t\tif ( _clippingEnabled ) _clipping.beginShadows();\n\n\t\tsetupShadows( lights );\n\n\t\tshadowMap.render( scene, camera );\n\n\t\tsetupLights( lights, camera );\n\n\t\tif ( _clippingEnabled ) _clipping.endShadows();\n\n\t\t//\n\n\t\t_infoRender.calls = 0;\n\t\t_infoRender.vertices = 0;\n\t\t_infoRender.faces = 0;\n\t\t_infoRender.points = 0;\n\n\t\tif ( renderTarget === undefined ) {\n\n\t\t\trenderTarget = null;\n\n\t\t}\n\n\t\tthis.setRenderTarget( renderTarget );\n\n\t\t//\n\n\t\tvar background = scene.background;\n\n\t\tif ( background === null ) {\n\n\t\t\tstate.buffers.color.setClear( _clearColor.r, _clearColor.g, _clearColor.b, _clearAlpha, _premultipliedAlpha );\n\n\t\t} else if ( background && background.isColor ) {\n\n\t\t\tstate.buffers.color.setClear( background.r, background.g, background.b, 1, _premultipliedAlpha );\n\t\t\tforceClear = true;\n\n\t\t}\n\n\t\tif ( this.autoClear || forceClear ) {\n\n\t\t\tthis.clear( this.autoClearColor, this.autoClearDepth, this.autoClearStencil );\n\n\t\t}\n\n\t\tif ( background && background.isCubeTexture ) {\n\n\t\t\tbackgroundCamera2.projectionMatrix.copy( camera.projectionMatrix );\n\n\t\t\tbackgroundCamera2.matrixWorld.extractRotation( camera.matrixWorld );\n\t\t\tbackgroundCamera2.matrixWorldInverse.getInverse( backgroundCamera2.matrixWorld );\n\n\t\t\tbackgroundBoxMesh.material.uniforms[ \"tCube\" ].value = background;\n\t\t\tbackgroundBoxMesh.modelViewMatrix.multiplyMatrices( backgroundCamera2.matrixWorldInverse, backgroundBoxMesh.matrixWorld );\n\n\t\t\tobjects.update( backgroundBoxMesh );\n\n\t\t\t_this.renderBufferDirect( backgroundCamera2, null, backgroundBoxMesh.geometry, backgroundBoxMesh.material, backgroundBoxMesh, null );\n\n\t\t} else if ( background && background.isTexture ) {\n\n\t\t\tbackgroundPlaneMesh.material.map = background;\n\n\t\t\tobjects.update( backgroundPlaneMesh );\n\n\t\t\t_this.renderBufferDirect( backgroundCamera, null, backgroundPlaneMesh.geometry, backgroundPlaneMesh.material, backgroundPlaneMesh, null );\n\n\t\t}\n\n\t\t//\n\n\t\tif ( scene.overrideMaterial ) {\n\n\t\t\tvar overrideMaterial = scene.overrideMaterial;\n\n\t\t\trenderObjects( opaqueObjects, scene, camera, overrideMaterial );\n\t\t\trenderObjects( transparentObjects, scene, camera, overrideMaterial );\n\n\t\t} else {\n\n\t\t\t// opaque pass (front-to-back order)\n\n\t\t\tstate.setBlending( NoBlending );\n\t\t\trenderObjects( opaqueObjects, scene, camera );\n\n\t\t\t// transparent pass (back-to-front order)\n\n\t\t\trenderObjects( transparentObjects, scene, camera );\n\n\t\t}\n\n\t\t// custom render plugins (post pass)\n\n\t\tspritePlugin.render( scene, camera );\n\t\tlensFlarePlugin.render( scene, camera, _currentViewport );\n\n\t\t// Generate mipmap if we're using any kind of mipmap filtering\n\n\t\tif ( renderTarget ) {\n\n\t\t\ttextures.updateRenderTargetMipmap( renderTarget );\n\n\t\t}\n\n\t\t// Ensure depth buffer writing is enabled so it can be cleared on next render\n\n\t\tstate.setDepthTest( true );\n\t\tstate.setDepthWrite( true );\n\t\tstate.setColorWrite( true );\n\n\t\t// _gl.finish();\n\n\t};\n\n\tfunction pushRenderItem( object, geometry, material, z, group ) {\n\n\t\tvar array, index;\n\n\t\t// allocate the next position in the appropriate array\n\n\t\tif ( material.transparent ) {\n\n\t\t\tarray = transparentObjects;\n\t\t\tindex = ++ transparentObjectsLastIndex;\n\n\t\t} else {\n\n\t\t\tarray = opaqueObjects;\n\t\t\tindex = ++ opaqueObjectsLastIndex;\n\n\t\t}\n\n\t\t// recycle existing render item or grow the array\n\n\t\tvar renderItem = array[ index ];\n\n\t\tif ( renderItem !== undefined ) {\n\n\t\t\trenderItem.id = object.id;\n\t\t\trenderItem.object = object;\n\t\t\trenderItem.geometry = geometry;\n\t\t\trenderItem.material = material;\n\t\t\trenderItem.z = _vector3.z;\n\t\t\trenderItem.group = group;\n\n\t\t} else {\n\n\t\t\trenderItem = {\n\t\t\t\tid: object.id,\n\t\t\t\tobject: object,\n\t\t\t\tgeometry: geometry,\n\t\t\t\tmaterial: material,\n\t\t\t\tz: _vector3.z,\n\t\t\t\tgroup: group\n\t\t\t};\n\n\t\t\t// assert( index === array.length );\n\t\t\tarray.push( renderItem );\n\n\t\t}\n\n\t}\n\n\t// TODO Duplicated code (Frustum)\n\n\tfunction isObjectViewable( object ) {\n\n\t\tvar geometry = object.geometry;\n\n\t\tif ( geometry.boundingSphere === null )\n\t\t\tgeometry.computeBoundingSphere();\n\n\t\t_sphere.copy( geometry.boundingSphere ).\n\t\t\tapplyMatrix4( object.matrixWorld );\n\n\t\treturn isSphereViewable( _sphere );\n\n\t}\n\n\tfunction isSpriteViewable( sprite ) {\n\n\t\t_sphere.center.set( 0, 0, 0 );\n\t\t_sphere.radius = 0.7071067811865476;\n\t\t_sphere.applyMatrix4( sprite.matrixWorld );\n\n\t\treturn isSphereViewable( _sphere );\n\n\t}\n\n\tfunction isSphereViewable( sphere ) {\n\n\t\tif ( ! _frustum.intersectsSphere( sphere ) ) return false;\n\n\t\tvar numPlanes = _clipping.numPlanes;\n\n\t\tif ( numPlanes === 0 ) return true;\n\n\t\tvar planes = _this.clippingPlanes,\n\n\t\t\tcenter = sphere.center,\n\t\t\tnegRad = - sphere.radius,\n\t\t\ti = 0;\n\n\t\tdo {\n\n\t\t\t// out when deeper than radius in the negative halfspace\n\t\t\tif ( planes[ i ].distanceToPoint( center ) < negRad ) return false;\n\n\t\t} while ( ++ i !== numPlanes );\n\n\t\treturn true;\n\n\t}\n\n\tfunction projectObject( object, camera ) {\n\n\t\tif ( object.visible === false ) return;\n\n\t\tvar visible = ( object.layers.mask & camera.layers.mask ) !== 0;\n\n\t\tif ( visible ) {\n\n\t\t\tif ( object.isLight ) {\n\n\t\t\t\tlights.push( object );\n\n\t\t\t} else if ( object.isSprite ) {\n\n\t\t\t\tif ( object.frustumCulled === false || isSpriteViewable( object ) === true ) {\n\n\t\t\t\t\tsprites.push( object );\n\n\t\t\t\t}\n\n\t\t\t} else if ( object.isLensFlare ) {\n\n\t\t\t\tlensFlares.push( object );\n\n\t\t\t} else if ( object.isImmediateRenderObject ) {\n\n\t\t\t\tif ( _this.sortObjects === true ) {\n\n\t\t\t\t\t_vector3.setFromMatrixPosition( object.matrixWorld );\n\t\t\t\t\t_vector3.applyProjection( _projScreenMatrix );\n\n\t\t\t\t}\n\n\t\t\t\tpushRenderItem( object, null, object.material, _vector3.z, null );\n\n\t\t\t} else if ( object.isMesh || object.isLine || object.isPoints ) {\n\n\t\t\t\tif ( object.isSkinnedMesh ) {\n\n\t\t\t\t\tobject.skeleton.update();\n\n\t\t\t\t}\n\n\t\t\t\tif ( object.frustumCulled === false || isObjectViewable( object ) === true ) {\n\n\t\t\t\t\tvar material = object.material;\n\n\t\t\t\t\tif ( material.visible === true ) {\n\n\t\t\t\t\t\tif ( _this.sortObjects === true ) {\n\n\t\t\t\t\t\t\t_vector3.setFromMatrixPosition( object.matrixWorld );\n\t\t\t\t\t\t\t_vector3.applyProjection( _projScreenMatrix );\n\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\tvar geometry = objects.update( object );\n\n\t\t\t\t\t\tif ( material.isMultiMaterial ) {\n\n\t\t\t\t\t\t\tvar groups = geometry.groups;\n\t\t\t\t\t\t\tvar materials = material.materials;\n\n\t\t\t\t\t\t\tfor ( var i = 0, l = groups.length; i < l; i ++ ) {\n\n\t\t\t\t\t\t\t\tvar group = groups[ i ];\n\t\t\t\t\t\t\t\tvar groupMaterial = materials[ group.materialIndex ];\n\n\t\t\t\t\t\t\t\tif ( groupMaterial.visible === true ) {\n\n\t\t\t\t\t\t\t\t\tpushRenderItem( object, geometry, groupMaterial, _vector3.z, group );\n\n\t\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t} else {\n\n\t\t\t\t\t\t\tpushRenderItem( object, geometry, material, _vector3.z, null );\n\n\t\t\t\t\t\t}\n\n\t\t\t\t\t}\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t}\n\n\t\tvar children = object.children;\n\n\t\tfor ( var i = 0, l = children.length; i < l; i ++ ) {\n\n\t\t\tprojectObject( children[ i ], camera );\n\n\t\t}\n\n\t}\n\n\tfunction renderObjects( renderList, scene, camera, overrideMaterial ) {\n\n\t\tfor ( var i = 0, l = renderList.length; i < l; i ++ ) {\n\n\t\t\tvar renderItem = renderList[ i ];\n\n\t\t\tvar object = renderItem.object;\n\t\t\tvar geometry = renderItem.geometry;\n\t\t\tvar material = overrideMaterial === undefined ? renderItem.material : overrideMaterial;\n\t\t\tvar group = renderItem.group;\n\n\t\t\tobject.modelViewMatrix.multiplyMatrices( camera.matrixWorldInverse, object.matrixWorld );\n\t\t\tobject.normalMatrix.getNormalMatrix( object.modelViewMatrix );\n\n\t\t\tobject.onBeforeRender( _this, scene, camera, geometry, material, group );\n\n\t\t\tif ( object.isImmediateRenderObject ) {\n\n\t\t\t\tsetMaterial( material );\n\n\t\t\t\tvar program = setProgram( camera, scene.fog, material, object );\n\n\t\t\t\t_currentGeometryProgram = '';\n\n\t\t\t\tobject.render( function ( object ) {\n\n\t\t\t\t\t_this.renderBufferImmediate( object, program, material );\n\n\t\t\t\t} );\n\n\t\t\t} else {\n\n\t\t\t\t_this.renderBufferDirect( camera, scene.fog, geometry, material, object, group );\n\n\t\t\t}\n\n\t\t\tobject.onAfterRender( _this, scene, camera, geometry, material, group );\n\n\n\t\t}\n\n\t}\n\n\tfunction initMaterial( material, fog, object ) {\n\n\t\tvar materialProperties = properties.get( material );\n\n\t\tvar parameters = programCache.getParameters(\n\t\t\t\tmaterial, _lights, fog, _clipping.numPlanes, _clipping.numIntersection, object );\n\n\t\tvar code = programCache.getProgramCode( material, parameters );\n\n\t\tvar program = materialProperties.program;\n\t\tvar programChange = true;\n\n\t\tif ( program === undefined ) {\n\n\t\t\t// new material\n\t\t\tmaterial.addEventListener( 'dispose', onMaterialDispose );\n\n\t\t} else if ( program.code !== code ) {\n\n\t\t\t// changed glsl or parameters\n\t\t\treleaseMaterialProgramReference( material );\n\n\t\t} else if ( parameters.shaderID !== undefined ) {\n\n\t\t\t// same glsl and uniform list\n\t\t\treturn;\n\n\t\t} else {\n\n\t\t\t// only rebuild uniform list\n\t\t\tprogramChange = false;\n\n\t\t}\n\n\t\tif ( programChange ) {\n\n\t\t\tif ( parameters.shaderID ) {\n\n\t\t\t\tvar shader = ShaderLib[ parameters.shaderID ];\n\n\t\t\t\tmaterialProperties.__webglShader = {\n\t\t\t\t\tname: material.type,\n\t\t\t\t\tuniforms: UniformsUtils.clone( shader.uniforms ),\n\t\t\t\t\tvertexShader: shader.vertexShader,\n\t\t\t\t\tfragmentShader: shader.fragmentShader\n\t\t\t\t};\n\n\t\t\t} else {\n\n\t\t\t\tmaterialProperties.__webglShader = {\n\t\t\t\t\tname: material.type,\n\t\t\t\t\tuniforms: material.uniforms,\n\t\t\t\t\tvertexShader: material.vertexShader,\n\t\t\t\t\tfragmentShader: material.fragmentShader\n\t\t\t\t};\n\n\t\t\t}\n\n\t\t\tmaterial.__webglShader = materialProperties.__webglShader;\n\n\t\t\tprogram = programCache.acquireProgram( material, parameters, code );\n\n\t\t\tmaterialProperties.program = program;\n\t\t\tmaterial.program = program;\n\n\t\t}\n\n\t\tvar attributes = program.getAttributes();\n\n\t\tif ( material.morphTargets ) {\n\n\t\t\tmaterial.numSupportedMorphTargets = 0;\n\n\t\t\tfor ( var i = 0; i < _this.maxMorphTargets; i ++ ) {\n\n\t\t\t\tif ( attributes[ 'morphTarget' + i ] >= 0 ) {\n\n\t\t\t\t\tmaterial.numSupportedMorphTargets ++;\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t}\n\n\t\tif ( material.morphNormals ) {\n\n\t\t\tmaterial.numSupportedMorphNormals = 0;\n\n\t\t\tfor ( var i = 0; i < _this.maxMorphNormals; i ++ ) {\n\n\t\t\t\tif ( attributes[ 'morphNormal' + i ] >= 0 ) {\n\n\t\t\t\t\tmaterial.numSupportedMorphNormals ++;\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t}\n\n\t\tvar uniforms = materialProperties.__webglShader.uniforms;\n\n\t\tif ( ! material.isShaderMaterial &&\n\t\t ! material.isRawShaderMaterial ||\n\t\t material.clipping === true ) {\n\n\t\t\tmaterialProperties.numClippingPlanes = _clipping.numPlanes;\n\t\t\tmaterialProperties.numIntersection = _clipping.numIntersection;\n\t\t\tuniforms.clippingPlanes = _clipping.uniform;\n\n\t\t}\n\n\t\tmaterialProperties.fog = fog;\n\n\t\t// store the light setup it was created for\n\n\t\tmaterialProperties.lightsHash = _lights.hash;\n\n\t\tif ( material.lights ) {\n\n\t\t\t// wire up the material to this renderer's lighting state\n\n\t\t\tuniforms.ambientLightColor.value = _lights.ambient;\n\t\t\tuniforms.directionalLights.value = _lights.directional;\n\t\t\tuniforms.spotLights.value = _lights.spot;\n\t\t\tuniforms.pointLights.value = _lights.point;\n\t\t\tuniforms.hemisphereLights.value = _lights.hemi;\n\n\t\t\tuniforms.directionalShadowMap.value = _lights.directionalShadowMap;\n\t\t\tuniforms.directionalShadowMatrix.value = _lights.directionalShadowMatrix;\n\t\t\tuniforms.spotShadowMap.value = _lights.spotShadowMap;\n\t\t\tuniforms.spotShadowMatrix.value = _lights.spotShadowMatrix;\n\t\t\tuniforms.pointShadowMap.value = _lights.pointShadowMap;\n\t\t\tuniforms.pointShadowMatrix.value = _lights.pointShadowMatrix;\n\n\t\t}\n\n\t\tvar progUniforms = materialProperties.program.getUniforms(),\n\t\t\tuniformsList =\n\t\t\t\t\tWebGLUniforms.seqWithValue( progUniforms.seq, uniforms );\n\n\t\tmaterialProperties.uniformsList = uniformsList;\n\n\t}\n\n\tfunction setMaterial( material ) {\n\n\t\tmaterial.side === DoubleSide\n\t\t\t? state.disable( _gl.CULL_FACE )\n\t\t\t: state.enable( _gl.CULL_FACE );\n\n\t\tstate.setFlipSided( material.side === BackSide );\n\n\t\tmaterial.transparent === true\n\t\t\t? state.setBlending( material.blending, material.blendEquation, material.blendSrc, material.blendDst, material.blendEquationAlpha, material.blendSrcAlpha, material.blendDstAlpha, material.premultipliedAlpha )\n\t\t\t: state.setBlending( NoBlending );\n\n\t\tstate.setDepthFunc( material.depthFunc );\n\t\tstate.setDepthTest( material.depthTest );\n\t\tstate.setDepthWrite( material.depthWrite );\n\t\tstate.setColorWrite( material.colorWrite );\n\t\tstate.setPolygonOffset( material.polygonOffset, material.polygonOffsetFactor, material.polygonOffsetUnits );\n\n\t}\n\n\tfunction setProgram( camera, fog, material, object ) {\n\n\t\t_usedTextureUnits = 0;\n\n\t\tvar materialProperties = properties.get( material );\n\n\t\tif ( _clippingEnabled ) {\n\n\t\t\tif ( _localClippingEnabled || camera !== _currentCamera ) {\n\n\t\t\t\tvar useCache =\n\t\t\t\t\t\tcamera === _currentCamera &&\n\t\t\t\t\t\tmaterial.id === _currentMaterialId;\n\n\t\t\t\t// we might want to call this function with some ClippingGroup\n\t\t\t\t// object instead of the material, once it becomes feasible\n\t\t\t\t// (#8465, #8379)\n\t\t\t\t_clipping.setState(\n\t\t\t\t\t\tmaterial.clippingPlanes, material.clipIntersection, material.clipShadows,\n\t\t\t\t\t\tcamera, materialProperties, useCache );\n\n\t\t\t}\n\n\t\t}\n\n\t\tif ( material.needsUpdate === false ) {\n\n\t\t\tif ( materialProperties.program === undefined ) {\n\n\t\t\t\tmaterial.needsUpdate = true;\n\n\t\t\t} else if ( material.fog && materialProperties.fog !== fog ) {\n\n\t\t\t\tmaterial.needsUpdate = true;\n\n\t\t\t} else if ( material.lights && materialProperties.lightsHash !== _lights.hash ) {\n\n\t\t\t\tmaterial.needsUpdate = true;\n\n\t\t\t} else if ( materialProperties.numClippingPlanes !== undefined &&\n\t\t\t\t( materialProperties.numClippingPlanes !== _clipping.numPlanes ||\n \t\t\t\t materialProperties.numIntersection !== _clipping.numIntersection ) ) {\n\n\t\t\t\tmaterial.needsUpdate = true;\n\n\t\t\t}\n\n\t\t}\n\n\t\tif ( material.needsUpdate ) {\n\n\t\t\tinitMaterial( material, fog, object );\n\t\t\tmaterial.needsUpdate = false;\n\n\t\t}\n\n\t\tvar refreshProgram = false;\n\t\tvar refreshMaterial = false;\n\t\tvar refreshLights = false;\n\n\t\tvar program = materialProperties.program,\n\t\t\tp_uniforms = program.getUniforms(),\n\t\t\tm_uniforms = materialProperties.__webglShader.uniforms;\n\n\t\tif ( program.id !== _currentProgram ) {\n\n\t\t\t_gl.useProgram( program.program );\n\t\t\t_currentProgram = program.id;\n\n\t\t\trefreshProgram = true;\n\t\t\trefreshMaterial = true;\n\t\t\trefreshLights = true;\n\n\t\t}\n\n\t\tif ( material.id !== _currentMaterialId ) {\n\n\t\t\t_currentMaterialId = material.id;\n\n\t\t\trefreshMaterial = true;\n\n\t\t}\n\n\t\tif ( refreshProgram || camera !== _currentCamera ) {\n\n\t\t\tp_uniforms.set( _gl, camera, 'projectionMatrix' );\n\n\t\t\tif ( capabilities.logarithmicDepthBuffer ) {\n\n\t\t\t\tp_uniforms.setValue( _gl, 'logDepthBufFC',\n\t\t\t\t\t\t2.0 / ( Math.log( camera.far + 1.0 ) / Math.LN2 ) );\n\n\t\t\t}\n\n\n\t\t\tif ( camera !== _currentCamera ) {\n\n\t\t\t\t_currentCamera = camera;\n\n\t\t\t\t// lighting uniforms depend on the camera so enforce an update\n\t\t\t\t// now, in case this material supports lights - or later, when\n\t\t\t\t// the next material that does gets activated:\n\n\t\t\t\trefreshMaterial = true;\t\t// set to true on material change\n\t\t\t\trefreshLights = true;\t\t// remains set until update done\n\n\t\t\t}\n\n\t\t\t// load material specific uniforms\n\t\t\t// (shader material also gets them for the sake of genericity)\n\n\t\t\tif ( material.isShaderMaterial ||\n\t\t\t material.isMeshPhongMaterial ||\n\t\t\t material.isMeshStandardMaterial ||\n\t\t\t material.envMap ) {\n\n\t\t\t\tvar uCamPos = p_uniforms.map.cameraPosition;\n\n\t\t\t\tif ( uCamPos !== undefined ) {\n\n\t\t\t\t\tuCamPos.setValue( _gl,\n\t\t\t\t\t\t\t_vector3.setFromMatrixPosition( camera.matrixWorld ) );\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t\tif ( material.isMeshPhongMaterial ||\n\t\t\t material.isMeshLambertMaterial ||\n\t\t\t material.isMeshBasicMaterial ||\n\t\t\t material.isMeshStandardMaterial ||\n\t\t\t material.isShaderMaterial ||\n\t\t\t material.skinning ) {\n\n\t\t\t\tp_uniforms.setValue( _gl, 'viewMatrix', camera.matrixWorldInverse );\n\n\t\t\t}\n\n\t\t\tp_uniforms.set( _gl, _this, 'toneMappingExposure' );\n\t\t\tp_uniforms.set( _gl, _this, 'toneMappingWhitePoint' );\n\n\t\t}\n\n\t\t// skinning uniforms must be set even if material didn't change\n\t\t// auto-setting of texture unit for bone texture must go before other textures\n\t\t// not sure why, but otherwise weird things happen\n\n\t\tif ( material.skinning ) {\n\n\t\t\tp_uniforms.setOptional( _gl, object, 'bindMatrix' );\n\t\t\tp_uniforms.setOptional( _gl, object, 'bindMatrixInverse' );\n\n\t\t\tvar skeleton = object.skeleton;\n\n\t\t\tif ( skeleton ) {\n\n\t\t\t\tif ( capabilities.floatVertexTextures && skeleton.useVertexTexture ) {\n\n\t\t\t\t\tp_uniforms.set( _gl, skeleton, 'boneTexture' );\n\t\t\t\t\tp_uniforms.set( _gl, skeleton, 'boneTextureWidth' );\n\t\t\t\t\tp_uniforms.set( _gl, skeleton, 'boneTextureHeight' );\n\n\t\t\t\t} else {\n\n\t\t\t\t\tp_uniforms.setOptional( _gl, skeleton, 'boneMatrices' );\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t}\n\n\t\tif ( refreshMaterial ) {\n\n\t\t\tif ( material.lights ) {\n\n\t\t\t\t// the current material requires lighting info\n\n\t\t\t\t// note: all lighting uniforms are always set correctly\n\t\t\t\t// they simply reference the renderer's state for their\n\t\t\t\t// values\n\t\t\t\t//\n\t\t\t\t// use the current material's .needsUpdate flags to set\n\t\t\t\t// the GL state when required\n\n\t\t\t\tmarkUniformsLightsNeedsUpdate( m_uniforms, refreshLights );\n\n\t\t\t}\n\n\t\t\t// refresh uniforms common to several materials\n\n\t\t\tif ( fog && material.fog ) {\n\n\t\t\t\trefreshUniformsFog( m_uniforms, fog );\n\n\t\t\t}\n\n\t\t\tif ( material.isMeshBasicMaterial ||\n\t\t\t material.isMeshLambertMaterial ||\n\t\t\t material.isMeshPhongMaterial ||\n\t\t\t material.isMeshStandardMaterial ||\n\t\t\t material.isMeshDepthMaterial ) {\n\n\t\t\t\trefreshUniformsCommon( m_uniforms, material );\n\n\t\t\t}\n\n\t\t\t// refresh single material specific uniforms\n\n\t\t\tif ( material.isLineBasicMaterial ) {\n\n\t\t\t\trefreshUniformsLine( m_uniforms, material );\n\n\t\t\t} else if ( material.isLineDashedMaterial ) {\n\n\t\t\t\trefreshUniformsLine( m_uniforms, material );\n\t\t\t\trefreshUniformsDash( m_uniforms, material );\n\n\t\t\t} else if ( material.isPointsMaterial ) {\n\n\t\t\t\trefreshUniformsPoints( m_uniforms, material );\n\n\t\t\t} else if ( material.isMeshLambertMaterial ) {\n\n\t\t\t\trefreshUniformsLambert( m_uniforms, material );\n\n\t\t\t} else if ( material.isMeshPhongMaterial ) {\n\n\t\t\t\trefreshUniformsPhong( m_uniforms, material );\n\n\t\t\t} else if ( material.isMeshPhysicalMaterial ) {\n\n\t\t\t\trefreshUniformsPhysical( m_uniforms, material );\n\n\t\t\t} else if ( material.isMeshStandardMaterial ) {\n\n\t\t\t\trefreshUniformsStandard( m_uniforms, material );\n\n\t\t\t} else if ( material.isMeshDepthMaterial ) {\n\n\t\t\t\tif ( material.displacementMap ) {\n\n\t\t\t\t\tm_uniforms.displacementMap.value = material.displacementMap;\n\t\t\t\t\tm_uniforms.displacementScale.value = material.displacementScale;\n\t\t\t\t\tm_uniforms.displacementBias.value = material.displacementBias;\n\n\t\t\t\t}\n\n\t\t\t} else if ( material.isMeshNormalMaterial ) {\n\n\t\t\t\tm_uniforms.opacity.value = material.opacity;\n\n\t\t\t}\n\n\t\t\tWebGLUniforms.upload(\n\t\t\t\t\t_gl, materialProperties.uniformsList, m_uniforms, _this );\n\n\t\t}\n\n\n\t\t// common matrices\n\n\t\tp_uniforms.set( _gl, object, 'modelViewMatrix' );\n\t\tp_uniforms.set( _gl, object, 'normalMatrix' );\n\t\tp_uniforms.setValue( _gl, 'modelMatrix', object.matrixWorld );\n\n\t\treturn program;\n\n\t}\n\n\t// Uniforms (refresh uniforms objects)\n\n\tfunction refreshUniformsCommon( uniforms, material ) {\n\n\t\tuniforms.opacity.value = material.opacity;\n\n\t\tuniforms.diffuse.value = material.color;\n\n\t\tif ( material.emissive ) {\n\n\t\t\tuniforms.emissive.value.copy( material.emissive ).multiplyScalar( material.emissiveIntensity );\n\n\t\t}\n\n\t\tuniforms.map.value = material.map;\n\t\tuniforms.specularMap.value = material.specularMap;\n\t\tuniforms.alphaMap.value = material.alphaMap;\n\n\t\tif ( material.aoMap ) {\n\n\t\t\tuniforms.aoMap.value = material.aoMap;\n\t\t\tuniforms.aoMapIntensity.value = material.aoMapIntensity;\n\n\t\t}\n\n\t\t// uv repeat and offset setting priorities\n\t\t// 1. color map\n\t\t// 2. specular map\n\t\t// 3. normal map\n\t\t// 4. bump map\n\t\t// 5. alpha map\n\t\t// 6. emissive map\n\n\t\tvar uvScaleMap;\n\n\t\tif ( material.map ) {\n\n\t\t\tuvScaleMap = material.map;\n\n\t\t} else if ( material.specularMap ) {\n\n\t\t\tuvScaleMap = material.specularMap;\n\n\t\t} else if ( material.displacementMap ) {\n\n\t\t\tuvScaleMap = material.displacementMap;\n\n\t\t} else if ( material.normalMap ) {\n\n\t\t\tuvScaleMap = material.normalMap;\n\n\t\t} else if ( material.bumpMap ) {\n\n\t\t\tuvScaleMap = material.bumpMap;\n\n\t\t} else if ( material.roughnessMap ) {\n\n\t\t\tuvScaleMap = material.roughnessMap;\n\n\t\t} else if ( material.metalnessMap ) {\n\n\t\t\tuvScaleMap = material.metalnessMap;\n\n\t\t} else if ( material.alphaMap ) {\n\n\t\t\tuvScaleMap = material.alphaMap;\n\n\t\t} else if ( material.emissiveMap ) {\n\n\t\t\tuvScaleMap = material.emissiveMap;\n\n\t\t}\n\n\t\tif ( uvScaleMap !== undefined ) {\n\n\t\t\t// backwards compatibility\n\t\t\tif ( uvScaleMap.isWebGLRenderTarget ) {\n\n\t\t\t\tuvScaleMap = uvScaleMap.texture;\n\n\t\t\t}\n\n\t\t\tvar offset = uvScaleMap.offset;\n\t\t\tvar repeat = uvScaleMap.repeat;\n\n\t\t\tuniforms.offsetRepeat.value.set( offset.x, offset.y, repeat.x, repeat.y );\n\n\t\t}\n\n\t\tuniforms.envMap.value = material.envMap;\n\n\t\t// don't flip CubeTexture envMaps, flip everything else:\n\t\t// WebGLRenderTargetCube will be flipped for backwards compatibility\n\t\t// WebGLRenderTargetCube.texture will be flipped because it's a Texture and NOT a CubeTexture\n\t\t// this check must be handled differently, or removed entirely, if WebGLRenderTargetCube uses a CubeTexture in the future\n\t\tuniforms.flipEnvMap.value = ( ! ( material.envMap && material.envMap.isCubeTexture ) ) ? 1 : - 1;\n\n\t\tuniforms.reflectivity.value = material.reflectivity;\n\t\tuniforms.refractionRatio.value = material.refractionRatio;\n\n\t}\n\n\tfunction refreshUniformsLine( uniforms, material ) {\n\n\t\tuniforms.diffuse.value = material.color;\n\t\tuniforms.opacity.value = material.opacity;\n\n\t}\n\n\tfunction refreshUniformsDash( uniforms, material ) {\n\n\t\tuniforms.dashSize.value = material.dashSize;\n\t\tuniforms.totalSize.value = material.dashSize + material.gapSize;\n\t\tuniforms.scale.value = material.scale;\n\n\t}\n\n\tfunction refreshUniformsPoints( uniforms, material ) {\n\n\t\tuniforms.diffuse.value = material.color;\n\t\tuniforms.opacity.value = material.opacity;\n\t\tuniforms.size.value = material.size * _pixelRatio;\n\t\tuniforms.scale.value = _height * 0.5;\n\n\t\tuniforms.map.value = material.map;\n\n\t\tif ( material.map !== null ) {\n\n\t\t\tvar offset = material.map.offset;\n\t\t\tvar repeat = material.map.repeat;\n\n\t\t\tuniforms.offsetRepeat.value.set( offset.x, offset.y, repeat.x, repeat.y );\n\n\t\t}\n\n\t}\n\n\tfunction refreshUniformsFog( uniforms, fog ) {\n\n\t\tuniforms.fogColor.value = fog.color;\n\n\t\tif ( fog.isFog ) {\n\n\t\t\tuniforms.fogNear.value = fog.near;\n\t\t\tuniforms.fogFar.value = fog.far;\n\n\t\t} else if ( fog.isFogExp2 ) {\n\n\t\t\tuniforms.fogDensity.value = fog.density;\n\n\t\t}\n\n\t}\n\n\tfunction refreshUniformsLambert( uniforms, material ) {\n\n\t\tif ( material.lightMap ) {\n\n\t\t\tuniforms.lightMap.value = material.lightMap;\n\t\t\tuniforms.lightMapIntensity.value = material.lightMapIntensity;\n\n\t\t}\n\n\t\tif ( material.emissiveMap ) {\n\n\t\t\tuniforms.emissiveMap.value = material.emissiveMap;\n\n\t\t}\n\n\t}\n\n\tfunction refreshUniformsPhong( uniforms, material ) {\n\n\t\tuniforms.specular.value = material.specular;\n\t\tuniforms.shininess.value = Math.max( material.shininess, 1e-4 ); // to prevent pow( 0.0, 0.0 )\n\n\t\tif ( material.lightMap ) {\n\n\t\t\tuniforms.lightMap.value = material.lightMap;\n\t\t\tuniforms.lightMapIntensity.value = material.lightMapIntensity;\n\n\t\t}\n\n\t\tif ( material.emissiveMap ) {\n\n\t\t\tuniforms.emissiveMap.value = material.emissiveMap;\n\n\t\t}\n\n\t\tif ( material.bumpMap ) {\n\n\t\t\tuniforms.bumpMap.value = material.bumpMap;\n\t\t\tuniforms.bumpScale.value = material.bumpScale;\n\n\t\t}\n\n\t\tif ( material.normalMap ) {\n\n\t\t\tuniforms.normalMap.value = material.normalMap;\n\t\t\tuniforms.normalScale.value.copy( material.normalScale );\n\n\t\t}\n\n\t\tif ( material.displacementMap ) {\n\n\t\t\tuniforms.displacementMap.value = material.displacementMap;\n\t\t\tuniforms.displacementScale.value = material.displacementScale;\n\t\t\tuniforms.displacementBias.value = material.displacementBias;\n\n\t\t}\n\n\t}\n\n\tfunction refreshUniformsStandard( uniforms, material ) {\n\n\t\tuniforms.roughness.value = material.roughness;\n\t\tuniforms.metalness.value = material.metalness;\n\n\t\tif ( material.roughnessMap ) {\n\n\t\t\tuniforms.roughnessMap.value = material.roughnessMap;\n\n\t\t}\n\n\t\tif ( material.metalnessMap ) {\n\n\t\t\tuniforms.metalnessMap.value = material.metalnessMap;\n\n\t\t}\n\n\t\tif ( material.lightMap ) {\n\n\t\t\tuniforms.lightMap.value = material.lightMap;\n\t\t\tuniforms.lightMapIntensity.value = material.lightMapIntensity;\n\n\t\t}\n\n\t\tif ( material.emissiveMap ) {\n\n\t\t\tuniforms.emissiveMap.value = material.emissiveMap;\n\n\t\t}\n\n\t\tif ( material.bumpMap ) {\n\n\t\t\tuniforms.bumpMap.value = material.bumpMap;\n\t\t\tuniforms.bumpScale.value = material.bumpScale;\n\n\t\t}\n\n\t\tif ( material.normalMap ) {\n\n\t\t\tuniforms.normalMap.value = material.normalMap;\n\t\t\tuniforms.normalScale.value.copy( material.normalScale );\n\n\t\t}\n\n\t\tif ( material.displacementMap ) {\n\n\t\t\tuniforms.displacementMap.value = material.displacementMap;\n\t\t\tuniforms.displacementScale.value = material.displacementScale;\n\t\t\tuniforms.displacementBias.value = material.displacementBias;\n\n\t\t}\n\n\t\tif ( material.envMap ) {\n\n\t\t\t//uniforms.envMap.value = material.envMap; // part of uniforms common\n\t\t\tuniforms.envMapIntensity.value = material.envMapIntensity;\n\n\t\t}\n\n\t}\n\n\tfunction refreshUniformsPhysical( uniforms, material ) {\n\n\t\tuniforms.clearCoat.value = material.clearCoat;\n\t\tuniforms.clearCoatRoughness.value = material.clearCoatRoughness;\n\n\t\trefreshUniformsStandard( uniforms, material );\n\n\t}\n\n\t// If uniforms are marked as clean, they don't need to be loaded to the GPU.\n\n\tfunction markUniformsLightsNeedsUpdate( uniforms, value ) {\n\n\t\tuniforms.ambientLightColor.needsUpdate = value;\n\n\t\tuniforms.directionalLights.needsUpdate = value;\n\t\tuniforms.pointLights.needsUpdate = value;\n\t\tuniforms.spotLights.needsUpdate = value;\n\t\tuniforms.hemisphereLights.needsUpdate = value;\n\n\t}\n\n\t// Lighting\n\n\tfunction setupShadows( lights ) {\n\n\t\tvar lightShadowsLength = 0;\n\n\t\tfor ( var i = 0, l = lights.length; i < l; i ++ ) {\n\n\t\t\tvar light = lights[ i ];\n\n\t\t\tif ( light.castShadow ) {\n\n\t\t\t\t_lights.shadows[ lightShadowsLength ++ ] = light;\n\n\t\t\t}\n\n\t\t}\n\n\t\t_lights.shadows.length = lightShadowsLength;\n\n\t}\n\n\tfunction setupLights( lights, camera ) {\n\n\t\tvar l, ll, light,\n\t\tr = 0, g = 0, b = 0,\n\t\tcolor,\n\t\tintensity,\n\t\tdistance,\n\t\tshadowMap,\n\n\t\tviewMatrix = camera.matrixWorldInverse,\n\n\t\tdirectionalLength = 0,\n\t\tpointLength = 0,\n\t\tspotLength = 0,\n\t\themiLength = 0;\n\n\t\tfor ( l = 0, ll = lights.length; l < ll; l ++ ) {\n\n\t\t\tlight = lights[ l ];\n\n\t\t\tcolor = light.color;\n\t\t\tintensity = light.intensity;\n\t\t\tdistance = light.distance;\n\n\t\t\tshadowMap = ( light.shadow && light.shadow.map ) ? light.shadow.map.texture : null;\n\n\t\t\tif ( light.isAmbientLight ) {\n\n\t\t\t\tr += color.r * intensity;\n\t\t\t\tg += color.g * intensity;\n\t\t\t\tb += color.b * intensity;\n\n\t\t\t} else if ( light.isDirectionalLight ) {\n\n\t\t\t\tvar uniforms = lightCache.get( light );\n\n\t\t\t\tuniforms.color.copy( light.color ).multiplyScalar( light.intensity );\n\t\t\t\tuniforms.direction.setFromMatrixPosition( light.matrixWorld );\n\t\t\t\t_vector3.setFromMatrixPosition( light.target.matrixWorld );\n\t\t\t\tuniforms.direction.sub( _vector3 );\n\t\t\t\tuniforms.direction.transformDirection( viewMatrix );\n\n\t\t\t\tuniforms.shadow = light.castShadow;\n\n\t\t\t\tif ( light.castShadow ) {\n\n\t\t\t\t\tuniforms.shadowBias = light.shadow.bias;\n\t\t\t\t\tuniforms.shadowRadius = light.shadow.radius;\n\t\t\t\t\tuniforms.shadowMapSize = light.shadow.mapSize;\n\n\t\t\t\t}\n\n\t\t\t\t_lights.directionalShadowMap[ directionalLength ] = shadowMap;\n\t\t\t\t_lights.directionalShadowMatrix[ directionalLength ] = light.shadow.matrix;\n\t\t\t\t_lights.directional[ directionalLength ++ ] = uniforms;\n\n\t\t\t} else if ( light.isSpotLight ) {\n\n\t\t\t\tvar uniforms = lightCache.get( light );\n\n\t\t\t\tuniforms.position.setFromMatrixPosition( light.matrixWorld );\n\t\t\t\tuniforms.position.applyMatrix4( viewMatrix );\n\n\t\t\t\tuniforms.color.copy( color ).multiplyScalar( intensity );\n\t\t\t\tuniforms.distance = distance;\n\n\t\t\t\tuniforms.direction.setFromMatrixPosition( light.matrixWorld );\n\t\t\t\t_vector3.setFromMatrixPosition( light.target.matrixWorld );\n\t\t\t\tuniforms.direction.sub( _vector3 );\n\t\t\t\tuniforms.direction.transformDirection( viewMatrix );\n\n\t\t\t\tuniforms.coneCos = Math.cos( light.angle );\n\t\t\t\tuniforms.penumbraCos = Math.cos( light.angle * ( 1 - light.penumbra ) );\n\t\t\t\tuniforms.decay = ( light.distance === 0 ) ? 0.0 : light.decay;\n\n\t\t\t\tuniforms.shadow = light.castShadow;\n\n\t\t\t\tif ( light.castShadow ) {\n\n\t\t\t\t\tuniforms.shadowBias = light.shadow.bias;\n\t\t\t\t\tuniforms.shadowRadius = light.shadow.radius;\n\t\t\t\t\tuniforms.shadowMapSize = light.shadow.mapSize;\n\n\t\t\t\t}\n\n\t\t\t\t_lights.spotShadowMap[ spotLength ] = shadowMap;\n\t\t\t\t_lights.spotShadowMatrix[ spotLength ] = light.shadow.matrix;\n\t\t\t\t_lights.spot[ spotLength ++ ] = uniforms;\n\n\t\t\t} else if ( light.isPointLight ) {\n\n\t\t\t\tvar uniforms = lightCache.get( light );\n\n\t\t\t\tuniforms.position.setFromMatrixPosition( light.matrixWorld );\n\t\t\t\tuniforms.position.applyMatrix4( viewMatrix );\n\n\t\t\t\tuniforms.color.copy( light.color ).multiplyScalar( light.intensity );\n\t\t\t\tuniforms.distance = light.distance;\n\t\t\t\tuniforms.decay = ( light.distance === 0 ) ? 0.0 : light.decay;\n\n\t\t\t\tuniforms.shadow = light.castShadow;\n\n\t\t\t\tif ( light.castShadow ) {\n\n\t\t\t\t\tuniforms.shadowBias = light.shadow.bias;\n\t\t\t\t\tuniforms.shadowRadius = light.shadow.radius;\n\t\t\t\t\tuniforms.shadowMapSize = light.shadow.mapSize;\n\n\t\t\t\t}\n\n\t\t\t\t_lights.pointShadowMap[ pointLength ] = shadowMap;\n\n\t\t\t\tif ( _lights.pointShadowMatrix[ pointLength ] === undefined ) {\n\n\t\t\t\t\t_lights.pointShadowMatrix[ pointLength ] = new Matrix4();\n\n\t\t\t\t}\n\n\t\t\t\t// for point lights we set the shadow matrix to be a translation-only matrix\n\t\t\t\t// equal to inverse of the light's position\n\t\t\t\t_vector3.setFromMatrixPosition( light.matrixWorld ).negate();\n\t\t\t\t_lights.pointShadowMatrix[ pointLength ].identity().setPosition( _vector3 );\n\n\t\t\t\t_lights.point[ pointLength ++ ] = uniforms;\n\n\t\t\t} else if ( light.isHemisphereLight ) {\n\n\t\t\t\tvar uniforms = lightCache.get( light );\n\n\t\t\t\tuniforms.direction.setFromMatrixPosition( light.matrixWorld );\n\t\t\t\tuniforms.direction.transformDirection( viewMatrix );\n\t\t\t\tuniforms.direction.normalize();\n\n\t\t\t\tuniforms.skyColor.copy( light.color ).multiplyScalar( intensity );\n\t\t\t\tuniforms.groundColor.copy( light.groundColor ).multiplyScalar( intensity );\n\n\t\t\t\t_lights.hemi[ hemiLength ++ ] = uniforms;\n\n\t\t\t}\n\n\t\t}\n\n\t\t_lights.ambient[ 0 ] = r;\n\t\t_lights.ambient[ 1 ] = g;\n\t\t_lights.ambient[ 2 ] = b;\n\n\t\t_lights.directional.length = directionalLength;\n\t\t_lights.spot.length = spotLength;\n\t\t_lights.point.length = pointLength;\n\t\t_lights.hemi.length = hemiLength;\n\n\t\t_lights.hash = directionalLength + ',' + pointLength + ',' + spotLength + ',' + hemiLength + ',' + _lights.shadows.length;\n\n\t}\n\n\t// GL state setting\n\n\tthis.setFaceCulling = function ( cullFace, frontFaceDirection ) {\n\n\t\tstate.setCullFace( cullFace );\n\t\tstate.setFlipSided( frontFaceDirection === FrontFaceDirectionCW );\n\n\t};\n\n\t// Textures\n\n\tfunction allocTextureUnit() {\n\n\t\tvar textureUnit = _usedTextureUnits;\n\n\t\tif ( textureUnit >= capabilities.maxTextures ) {\n\n\t\t\tconsole.warn( 'WebGLRenderer: trying to use ' + textureUnit + ' texture units while this GPU supports only ' + capabilities.maxTextures );\n\n\t\t}\n\n\t\t_usedTextureUnits += 1;\n\n\t\treturn textureUnit;\n\n\t}\n\n\tthis.allocTextureUnit = allocTextureUnit;\n\n\t// this.setTexture2D = setTexture2D;\n\tthis.setTexture2D = ( function() {\n\n\t\tvar warned = false;\n\n\t\t// backwards compatibility: peel texture.texture\n\t\treturn function setTexture2D( texture, slot ) {\n\n\t\t\tif ( texture && texture.isWebGLRenderTarget ) {\n\n\t\t\t\tif ( ! warned ) {\n\n\t\t\t\t\tconsole.warn( \"THREE.WebGLRenderer.setTexture2D: don't use render targets as textures. Use their .texture property instead.\" );\n\t\t\t\t\twarned = true;\n\n\t\t\t\t}\n\n\t\t\t\ttexture = texture.texture;\n\n\t\t\t}\n\n\t\t\ttextures.setTexture2D( texture, slot );\n\n\t\t};\n\n\t}() );\n\n\tthis.setTexture = ( function() {\n\n\t\tvar warned = false;\n\n\t\treturn function setTexture( texture, slot ) {\n\n\t\t\tif ( ! warned ) {\n\n\t\t\t\tconsole.warn( \"THREE.WebGLRenderer: .setTexture is deprecated, use setTexture2D instead.\" );\n\t\t\t\twarned = true;\n\n\t\t\t}\n\n\t\t\ttextures.setTexture2D( texture, slot );\n\n\t\t};\n\n\t}() );\n\n\tthis.setTextureCube = ( function() {\n\n\t\tvar warned = false;\n\n\t\treturn function setTextureCube( texture, slot ) {\n\n\t\t\t// backwards compatibility: peel texture.texture\n\t\t\tif ( texture && texture.isWebGLRenderTargetCube ) {\n\n\t\t\t\tif ( ! warned ) {\n\n\t\t\t\t\tconsole.warn( \"THREE.WebGLRenderer.setTextureCube: don't use cube render targets as textures. Use their .texture property instead.\" );\n\t\t\t\t\twarned = true;\n\n\t\t\t\t}\n\n\t\t\t\ttexture = texture.texture;\n\n\t\t\t}\n\n\t\t\t// currently relying on the fact that WebGLRenderTargetCube.texture is a Texture and NOT a CubeTexture\n\t\t\t// TODO: unify these code paths\n\t\t\tif ( ( texture && texture.isCubeTexture ) ||\n\t\t\t\t ( Array.isArray( texture.image ) && texture.image.length === 6 ) ) {\n\n\t\t\t\t// CompressedTexture can have Array in image :/\n\n\t\t\t\t// this function alone should take care of cube textures\n\t\t\t\ttextures.setTextureCube( texture, slot );\n\n\t\t\t} else {\n\n\t\t\t\t// assumed: texture property of THREE.WebGLRenderTargetCube\n\n\t\t\t\ttextures.setTextureCubeDynamic( texture, slot );\n\n\t\t\t}\n\n\t\t};\n\n\t}() );\n\n\tthis.getCurrentRenderTarget = function() {\n\n\t\treturn _currentRenderTarget;\n\n\t};\n\n\tthis.setRenderTarget = function ( renderTarget ) {\n\n\t\t_currentRenderTarget = renderTarget;\n\n\t\tif ( renderTarget && properties.get( renderTarget ).__webglFramebuffer === undefined ) {\n\n\t\t\ttextures.setupRenderTarget( renderTarget );\n\n\t\t}\n\n\t\tvar isCube = ( renderTarget && renderTarget.isWebGLRenderTargetCube );\n\t\tvar framebuffer;\n\n\t\tif ( renderTarget ) {\n\n\t\t\tvar renderTargetProperties = properties.get( renderTarget );\n\n\t\t\tif ( isCube ) {\n\n\t\t\t\tframebuffer = renderTargetProperties.__webglFramebuffer[ renderTarget.activeCubeFace ];\n\n\t\t\t} else {\n\n\t\t\t\tframebuffer = renderTargetProperties.__webglFramebuffer;\n\n\t\t\t}\n\n\t\t\t_currentScissor.copy( renderTarget.scissor );\n\t\t\t_currentScissorTest = renderTarget.scissorTest;\n\n\t\t\t_currentViewport.copy( renderTarget.viewport );\n\n\t\t} else {\n\n\t\t\tframebuffer = null;\n\n\t\t\t_currentScissor.copy( _scissor ).multiplyScalar( _pixelRatio );\n\t\t\t_currentScissorTest = _scissorTest;\n\n\t\t\t_currentViewport.copy( _viewport ).multiplyScalar( _pixelRatio );\n\n\t\t}\n\n\t\tif ( _currentFramebuffer !== framebuffer ) {\n\n\t\t\t_gl.bindFramebuffer( _gl.FRAMEBUFFER, framebuffer );\n\t\t\t_currentFramebuffer = framebuffer;\n\n\t\t}\n\n\t\tstate.scissor( _currentScissor );\n\t\tstate.setScissorTest( _currentScissorTest );\n\n\t\tstate.viewport( _currentViewport );\n\n\t\tif ( isCube ) {\n\n\t\t\tvar textureProperties = properties.get( renderTarget.texture );\n\t\t\t_gl.framebufferTexture2D( _gl.FRAMEBUFFER, _gl.COLOR_ATTACHMENT0, _gl.TEXTURE_CUBE_MAP_POSITIVE_X + renderTarget.activeCubeFace, textureProperties.__webglTexture, renderTarget.activeMipMapLevel );\n\n\t\t}\n\n\t};\n\n\tthis.readRenderTargetPixels = function ( renderTarget, x, y, width, height, buffer ) {\n\n\t\tif ( ( renderTarget && renderTarget.isWebGLRenderTarget ) === false ) {\n\n\t\t\tconsole.error( 'THREE.WebGLRenderer.readRenderTargetPixels: renderTarget is not THREE.WebGLRenderTarget.' );\n\t\t\treturn;\n\n\t\t}\n\n\t\tvar framebuffer = properties.get( renderTarget ).__webglFramebuffer;\n\n\t\tif ( framebuffer ) {\n\n\t\t\tvar restore = false;\n\n\t\t\tif ( framebuffer !== _currentFramebuffer ) {\n\n\t\t\t\t_gl.bindFramebuffer( _gl.FRAMEBUFFER, framebuffer );\n\n\t\t\t\trestore = true;\n\n\t\t\t}\n\n\t\t\ttry {\n\n\t\t\t\tvar texture = renderTarget.texture;\n\t\t\t\tvar textureFormat = texture.format;\n\t\t\t\tvar textureType = texture.type;\n\n\t\t\t\tif ( textureFormat !== RGBAFormat && paramThreeToGL( textureFormat ) !== _gl.getParameter( _gl.IMPLEMENTATION_COLOR_READ_FORMAT ) ) {\n\n\t\t\t\t\tconsole.error( 'THREE.WebGLRenderer.readRenderTargetPixels: renderTarget is not in RGBA or implementation defined format.' );\n\t\t\t\t\treturn;\n\n\t\t\t\t}\n\n\t\t\t\tif ( textureType !== UnsignedByteType && paramThreeToGL( textureType ) !== _gl.getParameter( _gl.IMPLEMENTATION_COLOR_READ_TYPE ) && // IE11, Edge and Chrome Mac < 52 (#9513)\n\t\t\t\t ! ( textureType === FloatType && ( extensions.get( 'OES_texture_float' ) || extensions.get( 'WEBGL_color_buffer_float' ) ) ) && // Chrome Mac >= 52 and Firefox\n\t\t\t\t ! ( textureType === HalfFloatType && extensions.get( 'EXT_color_buffer_half_float' ) ) ) {\n\n\t\t\t\t\tconsole.error( 'THREE.WebGLRenderer.readRenderTargetPixels: renderTarget is not in UnsignedByteType or implementation defined type.' );\n\t\t\t\t\treturn;\n\n\t\t\t\t}\n\n\t\t\t\tif ( _gl.checkFramebufferStatus( _gl.FRAMEBUFFER ) === _gl.FRAMEBUFFER_COMPLETE ) {\n\n\t\t\t\t\t// the following if statement ensures valid read requests (no out-of-bounds pixels, see #8604)\n\n\t\t\t\t\tif ( ( x >= 0 && x <= ( renderTarget.width - width ) ) && ( y >= 0 && y <= ( renderTarget.height - height ) ) ) {\n\n\t\t\t\t\t\t_gl.readPixels( x, y, width, height, paramThreeToGL( textureFormat ), paramThreeToGL( textureType ), buffer );\n\n\t\t\t\t\t}\n\n\t\t\t\t} else {\n\n\t\t\t\t\tconsole.error( 'THREE.WebGLRenderer.readRenderTargetPixels: readPixels from renderTarget failed. Framebuffer not complete.' );\n\n\t\t\t\t}\n\n\t\t\t} finally {\n\n\t\t\t\tif ( restore ) {\n\n\t\t\t\t\t_gl.bindFramebuffer( _gl.FRAMEBUFFER, _currentFramebuffer );\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t}\n\n\t};\n\n\t// Map three.js constants to WebGL constants\n\n\tfunction paramThreeToGL( p ) {\n\n\t\tvar extension;\n\n\t\tif ( p === RepeatWrapping ) return _gl.REPEAT;\n\t\tif ( p === ClampToEdgeWrapping ) return _gl.CLAMP_TO_EDGE;\n\t\tif ( p === MirroredRepeatWrapping ) return _gl.MIRRORED_REPEAT;\n\n\t\tif ( p === NearestFilter ) return _gl.NEAREST;\n\t\tif ( p === NearestMipMapNearestFilter ) return _gl.NEAREST_MIPMAP_NEAREST;\n\t\tif ( p === NearestMipMapLinearFilter ) return _gl.NEAREST_MIPMAP_LINEAR;\n\n\t\tif ( p === LinearFilter ) return _gl.LINEAR;\n\t\tif ( p === LinearMipMapNearestFilter ) return _gl.LINEAR_MIPMAP_NEAREST;\n\t\tif ( p === LinearMipMapLinearFilter ) return _gl.LINEAR_MIPMAP_LINEAR;\n\n\t\tif ( p === UnsignedByteType ) return _gl.UNSIGNED_BYTE;\n\t\tif ( p === UnsignedShort4444Type ) return _gl.UNSIGNED_SHORT_4_4_4_4;\n\t\tif ( p === UnsignedShort5551Type ) return _gl.UNSIGNED_SHORT_5_5_5_1;\n\t\tif ( p === UnsignedShort565Type ) return _gl.UNSIGNED_SHORT_5_6_5;\n\n\t\tif ( p === ByteType ) return _gl.BYTE;\n\t\tif ( p === ShortType ) return _gl.SHORT;\n\t\tif ( p === UnsignedShortType ) return _gl.UNSIGNED_SHORT;\n\t\tif ( p === IntType ) return _gl.INT;\n\t\tif ( p === UnsignedIntType ) return _gl.UNSIGNED_INT;\n\t\tif ( p === FloatType ) return _gl.FLOAT;\n\n\t\tif ( p === HalfFloatType ) {\n\n\t\t\textension = extensions.get( 'OES_texture_half_float' );\n\n\t\t\tif ( extension !== null ) return extension.HALF_FLOAT_OES;\n\n\t\t}\n\n\t\tif ( p === AlphaFormat ) return _gl.ALPHA;\n\t\tif ( p === RGBFormat ) return _gl.RGB;\n\t\tif ( p === RGBAFormat ) return _gl.RGBA;\n\t\tif ( p === LuminanceFormat ) return _gl.LUMINANCE;\n\t\tif ( p === LuminanceAlphaFormat ) return _gl.LUMINANCE_ALPHA;\n\t\tif ( p === DepthFormat ) return _gl.DEPTH_COMPONENT;\n\t\tif ( p === DepthStencilFormat ) return _gl.DEPTH_STENCIL;\n\n\t\tif ( p === AddEquation ) return _gl.FUNC_ADD;\n\t\tif ( p === SubtractEquation ) return _gl.FUNC_SUBTRACT;\n\t\tif ( p === ReverseSubtractEquation ) return _gl.FUNC_REVERSE_SUBTRACT;\n\n\t\tif ( p === ZeroFactor ) return _gl.ZERO;\n\t\tif ( p === OneFactor ) return _gl.ONE;\n\t\tif ( p === SrcColorFactor ) return _gl.SRC_COLOR;\n\t\tif ( p === OneMinusSrcColorFactor ) return _gl.ONE_MINUS_SRC_COLOR;\n\t\tif ( p === SrcAlphaFactor ) return _gl.SRC_ALPHA;\n\t\tif ( p === OneMinusSrcAlphaFactor ) return _gl.ONE_MINUS_SRC_ALPHA;\n\t\tif ( p === DstAlphaFactor ) return _gl.DST_ALPHA;\n\t\tif ( p === OneMinusDstAlphaFactor ) return _gl.ONE_MINUS_DST_ALPHA;\n\n\t\tif ( p === DstColorFactor ) return _gl.DST_COLOR;\n\t\tif ( p === OneMinusDstColorFactor ) return _gl.ONE_MINUS_DST_COLOR;\n\t\tif ( p === SrcAlphaSaturateFactor ) return _gl.SRC_ALPHA_SATURATE;\n\n\t\tif ( p === RGB_S3TC_DXT1_Format || p === RGBA_S3TC_DXT1_Format ||\n\t\t\tp === RGBA_S3TC_DXT3_Format || p === RGBA_S3TC_DXT5_Format ) {\n\n\t\t\textension = extensions.get( 'WEBGL_compressed_texture_s3tc' );\n\n\t\t\tif ( extension !== null ) {\n\n\t\t\t\tif ( p === RGB_S3TC_DXT1_Format ) return extension.COMPRESSED_RGB_S3TC_DXT1_EXT;\n\t\t\t\tif ( p === RGBA_S3TC_DXT1_Format ) return extension.COMPRESSED_RGBA_S3TC_DXT1_EXT;\n\t\t\t\tif ( p === RGBA_S3TC_DXT3_Format ) return extension.COMPRESSED_RGBA_S3TC_DXT3_EXT;\n\t\t\t\tif ( p === RGBA_S3TC_DXT5_Format ) return extension.COMPRESSED_RGBA_S3TC_DXT5_EXT;\n\n\t\t\t}\n\n\t\t}\n\n\t\tif ( p === RGB_PVRTC_4BPPV1_Format || p === RGB_PVRTC_2BPPV1_Format ||\n\t\t\t p === RGBA_PVRTC_4BPPV1_Format || p === RGBA_PVRTC_2BPPV1_Format ) {\n\n\t\t\textension = extensions.get( 'WEBGL_compressed_texture_pvrtc' );\n\n\t\t\tif ( extension !== null ) {\n\n\t\t\t\tif ( p === RGB_PVRTC_4BPPV1_Format ) return extension.COMPRESSED_RGB_PVRTC_4BPPV1_IMG;\n\t\t\t\tif ( p === RGB_PVRTC_2BPPV1_Format ) return extension.COMPRESSED_RGB_PVRTC_2BPPV1_IMG;\n\t\t\t\tif ( p === RGBA_PVRTC_4BPPV1_Format ) return extension.COMPRESSED_RGBA_PVRTC_4BPPV1_IMG;\n\t\t\t\tif ( p === RGBA_PVRTC_2BPPV1_Format ) return extension.COMPRESSED_RGBA_PVRTC_2BPPV1_IMG;\n\n\t\t\t}\n\n\t\t}\n\n\t\tif ( p === RGB_ETC1_Format ) {\n\n\t\t\textension = extensions.get( 'WEBGL_compressed_texture_etc1' );\n\n\t\t\tif ( extension !== null ) return extension.COMPRESSED_RGB_ETC1_WEBGL;\n\n\t\t}\n\n\t\tif ( p === MinEquation || p === MaxEquation ) {\n\n\t\t\textension = extensions.get( 'EXT_blend_minmax' );\n\n\t\t\tif ( extension !== null ) {\n\n\t\t\t\tif ( p === MinEquation ) return extension.MIN_EXT;\n\t\t\t\tif ( p === MaxEquation ) return extension.MAX_EXT;\n\n\t\t\t}\n\n\t\t}\n\n\t\tif ( p === UnsignedInt248Type ) {\n\n\t\t\textension = extensions.get( 'WEBGL_depth_texture' );\n\n\t\t\tif ( extension !== null ) return extension.UNSIGNED_INT_24_8_WEBGL;\n\n\t\t}\n\n\t\treturn 0;\n\n\t}\n\n}\n\nexport { WebGLRenderer };\n","/**\n * @author mrdoob / http://mrdoob.com/\n */\n\nimport { REVISION } from '../constants';\nimport { WebGLExtensions } from './webgl/WebGLExtensions';\nimport { WebGLState } from './webgl/WebGLState';\nimport { Color } from '../math/Color';\nimport { Vector4 } from '../math/Vector4';\n\nfunction WebGL2Renderer( parameters ) {\n\n\tconsole.log( 'THREE.WebGL2Renderer', REVISION );\n\n\tparameters = parameters || {};\n\n\tvar _canvas = parameters.canvas !== undefined ? parameters.canvas : document.createElementNS( 'http://www.w3.org/1999/xhtml', 'canvas' ),\n\t_context = parameters.context !== undefined ? parameters.context : null,\n\n\t_alpha = parameters.alpha !== undefined ? parameters.alpha : false,\n\t_depth = parameters.depth !== undefined ? parameters.depth : true,\n\t_stencil = parameters.stencil !== undefined ? parameters.stencil : true,\n\t_antialias = parameters.antialias !== undefined ? parameters.antialias : false,\n\t_premultipliedAlpha = parameters.premultipliedAlpha !== undefined ? parameters.premultipliedAlpha : true,\n\t_preserveDrawingBuffer = parameters.preserveDrawingBuffer !== undefined ? parameters.preserveDrawingBuffer : false;\n\n\t// initialize\n\n\tvar gl;\n\n\ttry {\n\n\t\tvar attributes = {\n\t\t\talpha: _alpha,\n\t\t\tdepth: _depth,\n\t\t\tstencil: _stencil,\n\t\t\tantialias: _antialias,\n\t\t\tpremultipliedAlpha: _premultipliedAlpha,\n\t\t\tpreserveDrawingBuffer: _preserveDrawingBuffer\n\t\t};\n\n\t\tgl = _context || _canvas.getContext( 'webgl2', attributes );\n\n\t\tif ( gl === null ) {\n\n\t\t\tif ( _canvas.getContext( 'webgl2' ) !== null ) {\n\n\t\t\t\tthrow 'Error creating WebGL2 context with your selected attributes.';\n\n\t\t\t} else {\n\n\t\t\t\tthrow 'Error creating WebGL2 context.';\n\n\t\t\t}\n\n\t\t}\n\n\t\t_canvas.addEventListener( 'webglcontextlost', onContextLost, false );\n\n\t} catch ( error ) {\n\n\t\tconsole.error( 'THREE.WebGL2Renderer: ' + error );\n\n\t}\n\n\t//\n\n\tvar _this = this,\n\n\t\t_autoClear = true,\n\t\t_autoClearColor = true,\n\t\t_autoClearDepth = true,\n\t\t_autoClearStencil = true,\n\n\t\t_clearColor = new Color( 0x000000 ),\n\t\t_clearAlpha = 0,\n\n\t\t_width = _canvas.width,\n\t\t_height = _canvas.height,\n\n\t\t_pixelRatio = 1,\n\n\t\t_viewport = new Vector4( 0, 0, _width, _height );\n\n\tvar extensions = new WebGLExtensions( gl );\n\tvar state = new WebGLState( gl, extensions, function () {} );\n\n\t//\n\n\tfunction clear( color, depth, stencil ) {\n\n\t\tvar bits = 0;\n\n\t\tif ( color === undefined || color ) bits |= gl.COLOR_BUFFER_BIT;\n\t\tif ( depth === undefined || depth ) bits |= gl.DEPTH_BUFFER_BIT;\n\t\tif ( stencil === undefined || stencil ) bits |= gl.STENCIL_BUFFER_BIT;\n\n\t\tgl.clear( bits );\n\n\t}\n\n\tfunction setPixelRatio( value ) {\n\n\t\tif ( value === undefined ) return;\n\n\t\t_pixelRatio = value;\n\n\t\tsetSize( _viewport.z, _viewport.w, false );\n\n\t}\n\n\tfunction setSize( width, height, updateStyle ) {\n\n\t\t_width = width;\n\t\t_height = height;\n\n\t\t_canvas.width = width * _pixelRatio;\n\t\t_canvas.height = height * _pixelRatio;\n\n\t\tif ( updateStyle !== false ) {\n\n\t\t\t_canvas.style.width = width + 'px';\n\t\t\t_canvas.style.height = height + 'px';\n\n\t\t}\n\n\t\tsetViewport( 0, 0, width, height );\n\n\t}\n\n\tfunction setViewport( x, y, width, height ) {\n\n\t\tstate.viewport( _viewport.set( x, y, width, height ) );\n\n\t}\n\n\tfunction render( scene, camera ) {\n\n\t\tif ( camera !== undefined && camera.isCamera !== true ) {\n\n\t\t\tconsole.error( 'THREE.WebGL2Renderer.render: camera is not an instance of THREE.Camera.' );\n\t\t\treturn;\n\n\t\t}\n\n\t\tvar background = scene.background;\n\t\tvar forceClear = false;\n\n\t\tif ( background === null ) {\n\n\t\t\tstate.buffers.color.setClear( _clearColor.r, _clearColor.g, _clearColor.b, _clearAlpha, _premultipliedAlpha );\n\n\t\t} else if ( background && background.isColor ) {\n\n\t\t\tstate.buffers.color.setClear( background.r, background.g, background.b, 1, _premultipliedAlpha );\n\t\t\tforceClear = true;\n\n\t\t}\n\n\t\tif ( _autoClear || forceClear ) {\n\n\t\t\tthis.clear( _autoClearColor, _autoClearDepth, _autoClearStencil );\n\n\t\t}\n\n\t}\n\n\tfunction onContextLost( event ) {\n\n\t\tevent.preventDefault();\n\n\t}\n\n\treturn {\n\t\tdomElement: _canvas,\n\n\t\tclear: clear,\n\t\tsetPixelRatio: setPixelRatio,\n\t\tsetSize: setSize,\n\t\trender: render\n\t}\n\n}\n\nexport { WebGL2Renderer };\n","import { Color } from '../math/Color';\n\n/**\n * @author mrdoob / http://mrdoob.com/\n * @author alteredq / http://alteredqualia.com/\n */\n\nfunction FogExp2 ( color, density ) {\n\n\tthis.name = '';\n\n\tthis.color = new Color( color );\n\tthis.density = ( density !== undefined ) ? density : 0.00025;\n\n}\n\nFogExp2.prototype.isFogExp2 = true;\n\nFogExp2.prototype.clone = function () {\n\n\treturn new FogExp2( this.color.getHex(), this.density );\n\n};\n\nFogExp2.prototype.toJSON = function ( meta ) {\n\n\treturn {\n\t\ttype: 'FogExp2',\n\t\tcolor: this.color.getHex(),\n\t\tdensity: this.density\n\t};\n\n};\n\nexport { FogExp2 };\n","import { Color } from '../math/Color';\n\n/**\n * @author mrdoob / http://mrdoob.com/\n * @author alteredq / http://alteredqualia.com/\n */\n\nfunction Fog ( color, near, far ) {\n\n\tthis.name = '';\n\n\tthis.color = new Color( color );\n\n\tthis.near = ( near !== undefined ) ? near : 1;\n\tthis.far = ( far !== undefined ) ? far : 1000;\n\n}\n\nFog.prototype.isFog = true;\n\nFog.prototype.clone = function () {\n\n\treturn new Fog( this.color.getHex(), this.near, this.far );\n\n};\n\nFog.prototype.toJSON = function ( meta ) {\n\n\treturn {\n\t\ttype: 'Fog',\n\t\tcolor: this.color.getHex(),\n\t\tnear: this.near,\n\t\tfar: this.far\n\t};\n\n};\n\nexport { Fog };\n","import { Object3D } from '../core/Object3D';\n\n/**\n * @author mrdoob / http://mrdoob.com/\n */\n\nfunction Scene () {\n\n\tObject3D.call( this );\n\n\tthis.type = 'Scene';\n\n\tthis.background = null;\n\tthis.fog = null;\n\tthis.overrideMaterial = null;\n\n\tthis.autoUpdate = true; // checked by the renderer\n\n}\n\nScene.prototype = Object.create( Object3D.prototype );\n\nScene.prototype.constructor = Scene;\n\nScene.prototype.copy = function ( source, recursive ) {\n\n\tObject3D.prototype.copy.call( this, source, recursive );\n\n\tif ( source.background !== null ) this.background = source.background.clone();\n\tif ( source.fog !== null ) this.fog = source.fog.clone();\n\tif ( source.overrideMaterial !== null ) this.overrideMaterial = source.overrideMaterial.clone();\n\n\tthis.autoUpdate = source.autoUpdate;\n\tthis.matrixAutoUpdate = source.matrixAutoUpdate;\n\n\treturn this;\n\n};\n\nScene.prototype.toJSON = function ( meta ) {\n\n\tvar data = Object3D.prototype.toJSON.call( this, meta );\n\n\tif ( this.background !== null ) data.object.background = this.background.toJSON( meta );\n\tif ( this.fog !== null ) data.object.fog = this.fog.toJSON();\n\n\treturn data;\n\n};\n\nexport { Scene };\n","import { Object3D } from '../core/Object3D';\nimport { NormalBlending } from '../constants';\nimport { Color } from '../math/Color';\nimport { Vector3 } from '../math/Vector3';\n\n/**\n * @author mikael emtinger / http://gomo.se/\n * @author alteredq / http://alteredqualia.com/\n */\n\nfunction LensFlare( texture, size, distance, blending, color ) {\n\n\tObject3D.call( this );\n\n\tthis.lensFlares = [];\n\n\tthis.positionScreen = new Vector3();\n\tthis.customUpdateCallback = undefined;\n\n\tif ( texture !== undefined ) {\n\n\t\tthis.add( texture, size, distance, blending, color );\n\n\t}\n\n}\n\nLensFlare.prototype = Object.assign( Object.create( Object3D.prototype ), {\n\n\tconstructor: LensFlare,\n\n\tisLensFlare: true,\n\n\tcopy: function ( source ) {\n\n\t\tObject3D.prototype.copy.call( this, source );\n\n\t\tthis.positionScreen.copy( source.positionScreen );\n\t\tthis.customUpdateCallback = source.customUpdateCallback;\n\n\t\tfor ( var i = 0, l = source.lensFlares.length; i < l; i ++ ) {\n\n\t\t\tthis.lensFlares.push( source.lensFlares[ i ] );\n\n\t\t}\n\n\t\treturn this;\n\n\t},\n\n\tadd: function ( texture, size, distance, blending, color, opacity ) {\n\n\t\tif ( size === undefined ) size = - 1;\n\t\tif ( distance === undefined ) distance = 0;\n\t\tif ( opacity === undefined ) opacity = 1;\n\t\tif ( color === undefined ) color = new Color( 0xffffff );\n\t\tif ( blending === undefined ) blending = NormalBlending;\n\n\t\tdistance = Math.min( distance, Math.max( 0, distance ) );\n\n\t\tthis.lensFlares.push( {\n\t\t\ttexture: texture,\t// THREE.Texture\n\t\t\tsize: size, \t\t// size in pixels (-1 = use texture.width)\n\t\t\tdistance: distance, \t// distance (0-1) from light source (0=at light source)\n\t\t\tx: 0, y: 0, z: 0,\t// screen position (-1 => 1) z = 0 is in front z = 1 is back\n\t\t\tscale: 1, \t\t// scale\n\t\t\trotation: 0, \t\t// rotation\n\t\t\topacity: opacity,\t// opacity\n\t\t\tcolor: color,\t\t// color\n\t\t\tblending: blending\t// blending\n\t\t} );\n\n\t},\n\n\t/*\n\t * Update lens flares update positions on all flares based on the screen position\n\t * Set myLensFlare.customUpdateCallback to alter the flares in your project specific way.\n\t */\n\n\tupdateLensFlares: function () {\n\n\t\tvar f, fl = this.lensFlares.length;\n\t\tvar flare;\n\t\tvar vecX = - this.positionScreen.x * 2;\n\t\tvar vecY = - this.positionScreen.y * 2;\n\n\t\tfor ( f = 0; f < fl; f ++ ) {\n\n\t\t\tflare = this.lensFlares[ f ];\n\n\t\t\tflare.x = this.positionScreen.x + vecX * flare.distance;\n\t\t\tflare.y = this.positionScreen.y + vecY * flare.distance;\n\n\t\t\tflare.wantedRotation = flare.x * Math.PI * 0.25;\n\t\t\tflare.rotation += ( flare.wantedRotation - flare.rotation ) * 0.25;\n\n\t\t}\n\n\t}\n\n} );\n\n\nexport { LensFlare };\n","import { Material } from './Material';\nimport { Color } from '../math/Color';\n\n/**\n * @author alteredq / http://alteredqualia.com/\n *\n * parameters = {\n * color: ,\n * opacity: ,\n * map: new THREE.Texture( ),\n *\n *\tuvOffset: new THREE.Vector2(),\n *\tuvScale: new THREE.Vector2()\n * }\n */\n\nfunction SpriteMaterial( parameters ) {\n\n\tMaterial.call( this );\n\n\tthis.type = 'SpriteMaterial';\n\n\tthis.color = new Color( 0xffffff );\n\tthis.map = null;\n\n\tthis.rotation = 0;\n\n\tthis.fog = false;\n\tthis.lights = false;\n\n\tthis.setValues( parameters );\n\n}\n\nSpriteMaterial.prototype = Object.create( Material.prototype );\nSpriteMaterial.prototype.constructor = SpriteMaterial;\n\nSpriteMaterial.prototype.copy = function ( source ) {\n\n\tMaterial.prototype.copy.call( this, source );\n\n\tthis.color.copy( source.color );\n\tthis.map = source.map;\n\n\tthis.rotation = source.rotation;\n\n\treturn this;\n\n};\n\n\nexport { SpriteMaterial };\n","import { Vector3 } from '../math/Vector3';\nimport { Object3D } from '../core/Object3D';\nimport { SpriteMaterial } from '../materials/SpriteMaterial';\n\n/**\n * @author mikael emtinger / http://gomo.se/\n * @author alteredq / http://alteredqualia.com/\n */\n\nfunction Sprite( material ) {\n\n\tObject3D.call( this );\n\n\tthis.type = 'Sprite';\n\n\tthis.material = ( material !== undefined ) ? material : new SpriteMaterial();\n\n}\n\nSprite.prototype = Object.assign( Object.create( Object3D.prototype ), {\n\n\tconstructor: Sprite,\n\n\tisSprite: true,\n\n\traycast: ( function () {\n\n\t\tvar matrixPosition = new Vector3();\n\n\t\treturn function raycast( raycaster, intersects ) {\n\n\t\t\tmatrixPosition.setFromMatrixPosition( this.matrixWorld );\n\n\t\t\tvar distanceSq = raycaster.ray.distanceSqToPoint( matrixPosition );\n\t\t\tvar guessSizeSq = this.scale.x * this.scale.y / 4;\n\n\t\t\tif ( distanceSq > guessSizeSq ) {\n\n\t\t\t\treturn;\n\n\t\t\t}\n\n\t\t\tintersects.push( {\n\n\t\t\t\tdistance: Math.sqrt( distanceSq ),\n\t\t\t\tpoint: this.position,\n\t\t\t\tface: null,\n\t\t\t\tobject: this\n\n\t\t\t} );\n\n\t\t};\n\n\t}() ),\n\n\tclone: function () {\n\n\t\treturn new this.constructor( this.material ).copy( this );\n\n\t}\n\n} );\n\n\nexport { Sprite };\n","import { Vector3 } from '../math/Vector3';\nimport { Object3D } from '../core/Object3D';\n\n/**\n * @author mikael emtinger / http://gomo.se/\n * @author alteredq / http://alteredqualia.com/\n * @author mrdoob / http://mrdoob.com/\n */\n\nfunction LOD() {\n\n\tObject3D.call( this );\n\n\tthis.type = 'LOD';\n\n\tObject.defineProperties( this, {\n\t\tlevels: {\n\t\t\tenumerable: true,\n\t\t\tvalue: []\n\t\t}\n\t} );\n\n}\n\n\nLOD.prototype = Object.assign( Object.create( Object3D.prototype ), {\n\n\tconstructor: LOD,\n\n\tcopy: function ( source ) {\n\n\t\tObject3D.prototype.copy.call( this, source, false );\n\n\t\tvar levels = source.levels;\n\n\t\tfor ( var i = 0, l = levels.length; i < l; i ++ ) {\n\n\t\t\tvar level = levels[ i ];\n\n\t\t\tthis.addLevel( level.object.clone(), level.distance );\n\n\t\t}\n\n\t\treturn this;\n\n\t},\n\n\taddLevel: function ( object, distance ) {\n\n\t\tif ( distance === undefined ) distance = 0;\n\n\t\tdistance = Math.abs( distance );\n\n\t\tvar levels = this.levels;\n\n\t\tfor ( var l = 0; l < levels.length; l ++ ) {\n\n\t\t\tif ( distance < levels[ l ].distance ) {\n\n\t\t\t\tbreak;\n\n\t\t\t}\n\n\t\t}\n\n\t\tlevels.splice( l, 0, { distance: distance, object: object } );\n\n\t\tthis.add( object );\n\n\t},\n\n\tgetObjectForDistance: function ( distance ) {\n\n\t\tvar levels = this.levels;\n\n\t\tfor ( var i = 1, l = levels.length; i < l; i ++ ) {\n\n\t\t\tif ( distance < levels[ i ].distance ) {\n\n\t\t\t\tbreak;\n\n\t\t\t}\n\n\t\t}\n\n\t\treturn levels[ i - 1 ].object;\n\n\t},\n\n\traycast: ( function () {\n\n\t\tvar matrixPosition = new Vector3();\n\n\t\treturn function raycast( raycaster, intersects ) {\n\n\t\t\tmatrixPosition.setFromMatrixPosition( this.matrixWorld );\n\n\t\t\tvar distance = raycaster.ray.origin.distanceTo( matrixPosition );\n\n\t\t\tthis.getObjectForDistance( distance ).raycast( raycaster, intersects );\n\n\t\t};\n\n\t}() ),\n\n\tupdate: function () {\n\n\t\tvar v1 = new Vector3();\n\t\tvar v2 = new Vector3();\n\n\t\treturn function update( camera ) {\n\n\t\t\tvar levels = this.levels;\n\n\t\t\tif ( levels.length > 1 ) {\n\n\t\t\t\tv1.setFromMatrixPosition( camera.matrixWorld );\n\t\t\t\tv2.setFromMatrixPosition( this.matrixWorld );\n\n\t\t\t\tvar distance = v1.distanceTo( v2 );\n\n\t\t\t\tlevels[ 0 ].object.visible = true;\n\n\t\t\t\tfor ( var i = 1, l = levels.length; i < l; i ++ ) {\n\n\t\t\t\t\tif ( distance >= levels[ i ].distance ) {\n\n\t\t\t\t\t\tlevels[ i - 1 ].object.visible = false;\n\t\t\t\t\t\tlevels[ i ].object.visible = true;\n\n\t\t\t\t\t} else {\n\n\t\t\t\t\t\tbreak;\n\n\t\t\t\t\t}\n\n\t\t\t\t}\n\n\t\t\t\tfor ( ; i < l; i ++ ) {\n\n\t\t\t\t\tlevels[ i ].object.visible = false;\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t};\n\n\t}(),\n\n\ttoJSON: function ( meta ) {\n\n\t\tvar data = Object3D.prototype.toJSON.call( this, meta );\n\n\t\tdata.object.levels = [];\n\n\t\tvar levels = this.levels;\n\n\t\tfor ( var i = 0, l = levels.length; i < l; i ++ ) {\n\n\t\t\tvar level = levels[ i ];\n\n\t\t\tdata.object.levels.push( {\n\t\t\t\tobject: level.object.uuid,\n\t\t\t\tdistance: level.distance\n\t\t\t} );\n\n\t\t}\n\n\t\treturn data;\n\n\t}\n\n} );\n\n\nexport { LOD };\n","import { Texture } from './Texture';\nimport { NearestFilter } from '../constants';\n\n/**\n * @author alteredq / http://alteredqualia.com/\n */\n\nfunction DataTexture( data, width, height, format, type, mapping, wrapS, wrapT, magFilter, minFilter, anisotropy, encoding ) {\n\n\tTexture.call( this, null, mapping, wrapS, wrapT, magFilter, minFilter, format, type, anisotropy, encoding );\n\n\tthis.image = { data: data, width: width, height: height };\n\n\tthis.magFilter = magFilter !== undefined ? magFilter : NearestFilter;\n\tthis.minFilter = minFilter !== undefined ? minFilter : NearestFilter;\n\n\tthis.generateMipmaps = false;\n\tthis.flipY = false;\n\tthis.unpackAlignment = 1;\n\n}\n\nDataTexture.prototype = Object.create( Texture.prototype );\nDataTexture.prototype.constructor = DataTexture;\n\nDataTexture.prototype.isDataTexture = true;\n\n\nexport { DataTexture };\n","import { Matrix4 } from '../math/Matrix4';\nimport { FloatType, RGBAFormat } from '../constants';\nimport { DataTexture } from '../textures/DataTexture';\nimport { _Math } from '../math/Math';\n\n/**\n * @author mikael emtinger / http://gomo.se/\n * @author alteredq / http://alteredqualia.com/\n * @author michael guerrero / http://realitymeltdown.com\n * @author ikerr / http://verold.com\n */\n\nfunction Skeleton( bones, boneInverses, useVertexTexture ) {\n\n\tthis.useVertexTexture = useVertexTexture !== undefined ? useVertexTexture : true;\n\n\tthis.identityMatrix = new Matrix4();\n\n\t// copy the bone array\n\n\tbones = bones || [];\n\n\tthis.bones = bones.slice( 0 );\n\n\t// create a bone texture or an array of floats\n\n\tif ( this.useVertexTexture ) {\n\n\t\t// layout (1 matrix = 4 pixels)\n\t\t// RGBA RGBA RGBA RGBA (=> column1, column2, column3, column4)\n\t\t// with 8x8 pixel texture max 16 bones * 4 pixels = (8 * 8)\n\t\t// 16x16 pixel texture max 64 bones * 4 pixels = (16 * 16)\n\t\t// 32x32 pixel texture max 256 bones * 4 pixels = (32 * 32)\n\t\t// 64x64 pixel texture max 1024 bones * 4 pixels = (64 * 64)\n\n\n\t\tvar size = Math.sqrt( this.bones.length * 4 ); // 4 pixels needed for 1 matrix\n\t\tsize = _Math.nextPowerOfTwo( Math.ceil( size ) );\n\t\tsize = Math.max( size, 4 );\n\n\t\tthis.boneTextureWidth = size;\n\t\tthis.boneTextureHeight = size;\n\n\t\tthis.boneMatrices = new Float32Array( this.boneTextureWidth * this.boneTextureHeight * 4 ); // 4 floats per RGBA pixel\n\t\tthis.boneTexture = new DataTexture( this.boneMatrices, this.boneTextureWidth, this.boneTextureHeight, RGBAFormat, FloatType );\n\n\t} else {\n\n\t\tthis.boneMatrices = new Float32Array( 16 * this.bones.length );\n\n\t}\n\n\t// use the supplied bone inverses or calculate the inverses\n\n\tif ( boneInverses === undefined ) {\n\n\t\tthis.calculateInverses();\n\n\t} else {\n\n\t\tif ( this.bones.length === boneInverses.length ) {\n\n\t\t\tthis.boneInverses = boneInverses.slice( 0 );\n\n\t\t} else {\n\n\t\t\tconsole.warn( 'THREE.Skeleton bonInverses is the wrong length.' );\n\n\t\t\tthis.boneInverses = [];\n\n\t\t\tfor ( var b = 0, bl = this.bones.length; b < bl; b ++ ) {\n\n\t\t\t\tthis.boneInverses.push( new Matrix4() );\n\n\t\t\t}\n\n\t\t}\n\n\t}\n\n}\n\nObject.assign( Skeleton.prototype, {\n\n\tcalculateInverses: function () {\n\n\t\tthis.boneInverses = [];\n\n\t\tfor ( var b = 0, bl = this.bones.length; b < bl; b ++ ) {\n\n\t\t\tvar inverse = new Matrix4();\n\n\t\t\tif ( this.bones[ b ] ) {\n\n\t\t\t\tinverse.getInverse( this.bones[ b ].matrixWorld );\n\n\t\t\t}\n\n\t\t\tthis.boneInverses.push( inverse );\n\n\t\t}\n\n\t},\n\n\tpose: function () {\n\n\t\tvar bone;\n\n\t\t// recover the bind-time world matrices\n\n\t\tfor ( var b = 0, bl = this.bones.length; b < bl; b ++ ) {\n\n\t\t\tbone = this.bones[ b ];\n\n\t\t\tif ( bone ) {\n\n\t\t\t\tbone.matrixWorld.getInverse( this.boneInverses[ b ] );\n\n\t\t\t}\n\n\t\t}\n\n\t\t// compute the local matrices, positions, rotations and scales\n\n\t\tfor ( var b = 0, bl = this.bones.length; b < bl; b ++ ) {\n\n\t\t\tbone = this.bones[ b ];\n\n\t\t\tif ( bone ) {\n\n\t\t\t\tif ( (bone.parent && bone.parent.isBone) ) {\n\n\t\t\t\t\tbone.matrix.getInverse( bone.parent.matrixWorld );\n\t\t\t\t\tbone.matrix.multiply( bone.matrixWorld );\n\n\t\t\t\t} else {\n\n\t\t\t\t\tbone.matrix.copy( bone.matrixWorld );\n\n\t\t\t\t}\n\n\t\t\t\tbone.matrix.decompose( bone.position, bone.quaternion, bone.scale );\n\n\t\t\t}\n\n\t\t}\n\n\t},\n\n\tupdate: ( function () {\n\n\t\tvar offsetMatrix = new Matrix4();\n\n\t\treturn function update() {\n\n\t\t\t// flatten bone matrices to array\n\n\t\t\tfor ( var b = 0, bl = this.bones.length; b < bl; b ++ ) {\n\n\t\t\t\t// compute the offset between the current and the original transform\n\n\t\t\t\tvar matrix = this.bones[ b ] ? this.bones[ b ].matrixWorld : this.identityMatrix;\n\n\t\t\t\toffsetMatrix.multiplyMatrices( matrix, this.boneInverses[ b ] );\n\t\t\t\toffsetMatrix.toArray( this.boneMatrices, b * 16 );\n\n\t\t\t}\n\n\t\t\tif ( this.useVertexTexture ) {\n\n\t\t\t\tthis.boneTexture.needsUpdate = true;\n\n\t\t\t}\n\n\t\t};\n\n\t} )(),\n\n\tclone: function () {\n\n\t\treturn new Skeleton( this.bones, this.boneInverses, this.useVertexTexture );\n\n\t}\n\n} );\n\n\nexport { Skeleton };\n","import { Object3D } from '../core/Object3D';\n\n/**\n * @author mikael emtinger / http://gomo.se/\n * @author alteredq / http://alteredqualia.com/\n * @author ikerr / http://verold.com\n */\n\nfunction Bone() {\n\n\tObject3D.call( this );\n\n\tthis.type = 'Bone';\n\n}\n\nBone.prototype = Object.assign( Object.create( Object3D.prototype ), {\n\n\tconstructor: Bone,\n\n\tisBone: true\n\n} );\n\n\nexport { Bone };\n","import { Mesh } from './Mesh';\nimport { Vector4 } from '../math/Vector4';\nimport { Skeleton } from './Skeleton';\nimport { Bone } from './Bone';\nimport { Matrix4 } from '../math/Matrix4';\n\n/**\n * @author mikael emtinger / http://gomo.se/\n * @author alteredq / http://alteredqualia.com/\n * @author ikerr / http://verold.com\n */\n\nfunction SkinnedMesh( geometry, material, useVertexTexture ) {\n\n\tMesh.call( this, geometry, material );\n\n\tthis.type = 'SkinnedMesh';\n\n\tthis.bindMode = \"attached\";\n\tthis.bindMatrix = new Matrix4();\n\tthis.bindMatrixInverse = new Matrix4();\n\n\t// init bones\n\n\t// TODO: remove bone creation as there is no reason (other than\n\t// convenience) for THREE.SkinnedMesh to do this.\n\n\tvar bones = [];\n\n\tif ( this.geometry && this.geometry.bones !== undefined ) {\n\n\t\tvar bone, gbone;\n\n\t\tfor ( var b = 0, bl = this.geometry.bones.length; b < bl; ++ b ) {\n\n\t\t\tgbone = this.geometry.bones[ b ];\n\n\t\t\tbone = new Bone();\n\t\t\tbones.push( bone );\n\n\t\t\tbone.name = gbone.name;\n\t\t\tbone.position.fromArray( gbone.pos );\n\t\t\tbone.quaternion.fromArray( gbone.rotq );\n\t\t\tif ( gbone.scl !== undefined ) bone.scale.fromArray( gbone.scl );\n\n\t\t}\n\n\t\tfor ( var b = 0, bl = this.geometry.bones.length; b < bl; ++ b ) {\n\n\t\t\tgbone = this.geometry.bones[ b ];\n\n\t\t\tif ( gbone.parent !== - 1 && gbone.parent !== null &&\n\t\t\t\t\tbones[ gbone.parent ] !== undefined ) {\n\n\t\t\t\tbones[ gbone.parent ].add( bones[ b ] );\n\n\t\t\t} else {\n\n\t\t\t\tthis.add( bones[ b ] );\n\n\t\t\t}\n\n\t\t}\n\n\t}\n\n\tthis.normalizeSkinWeights();\n\n\tthis.updateMatrixWorld( true );\n\tthis.bind( new Skeleton( bones, undefined, useVertexTexture ), this.matrixWorld );\n\n}\n\n\nSkinnedMesh.prototype = Object.assign( Object.create( Mesh.prototype ), {\n\n\tconstructor: SkinnedMesh,\n\n\tisSkinnedMesh: true,\n\n\tbind: function( skeleton, bindMatrix ) {\n\n\t\tthis.skeleton = skeleton;\n\n\t\tif ( bindMatrix === undefined ) {\n\n\t\t\tthis.updateMatrixWorld( true );\n\n\t\t\tthis.skeleton.calculateInverses();\n\n\t\t\tbindMatrix = this.matrixWorld;\n\n\t\t}\n\n\t\tthis.bindMatrix.copy( bindMatrix );\n\t\tthis.bindMatrixInverse.getInverse( bindMatrix );\n\n\t},\n\n\tpose: function () {\n\n\t\tthis.skeleton.pose();\n\n\t},\n\n\tnormalizeSkinWeights: function () {\n\n\t\tif ( (this.geometry && this.geometry.isGeometry) ) {\n\n\t\t\tfor ( var i = 0; i < this.geometry.skinWeights.length; i ++ ) {\n\n\t\t\t\tvar sw = this.geometry.skinWeights[ i ];\n\n\t\t\t\tvar scale = 1.0 / sw.lengthManhattan();\n\n\t\t\t\tif ( scale !== Infinity ) {\n\n\t\t\t\t\tsw.multiplyScalar( scale );\n\n\t\t\t\t} else {\n\n\t\t\t\t\tsw.set( 1, 0, 0, 0 ); // do something reasonable\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t} else if ( (this.geometry && this.geometry.isBufferGeometry) ) {\n\n\t\t\tvar vec = new Vector4();\n\n\t\t\tvar skinWeight = this.geometry.attributes.skinWeight;\n\n\t\t\tfor ( var i = 0; i < skinWeight.count; i ++ ) {\n\n\t\t\t\tvec.x = skinWeight.getX( i );\n\t\t\t\tvec.y = skinWeight.getY( i );\n\t\t\t\tvec.z = skinWeight.getZ( i );\n\t\t\t\tvec.w = skinWeight.getW( i );\n\n\t\t\t\tvar scale = 1.0 / vec.lengthManhattan();\n\n\t\t\t\tif ( scale !== Infinity ) {\n\n\t\t\t\t\tvec.multiplyScalar( scale );\n\n\t\t\t\t} else {\n\n\t\t\t\t\tvec.set( 1, 0, 0, 0 ); // do something reasonable\n\n\t\t\t\t}\n\n\t\t\t\tskinWeight.setXYZW( i, vec.x, vec.y, vec.z, vec.w );\n\n\t\t\t}\n\n\t\t}\n\n\t},\n\n\tupdateMatrixWorld: function( force ) {\n\n\t\tMesh.prototype.updateMatrixWorld.call( this, true );\n\n\t\tif ( this.bindMode === \"attached\" ) {\n\n\t\t\tthis.bindMatrixInverse.getInverse( this.matrixWorld );\n\n\t\t} else if ( this.bindMode === \"detached\" ) {\n\n\t\t\tthis.bindMatrixInverse.getInverse( this.bindMatrix );\n\n\t\t} else {\n\n\t\t\tconsole.warn( 'THREE.SkinnedMesh unrecognized bindMode: ' + this.bindMode );\n\n\t\t}\n\n\t},\n\n\tclone: function() {\n\n\t\treturn new this.constructor( this.geometry, this.material, this.skeleton.useVertexTexture ).copy( this );\n\n\t}\n\n} );\n\n\nexport { SkinnedMesh };\n","import { Material } from './Material';\nimport { Color } from '../math/Color';\n\n/**\n * @author mrdoob / http://mrdoob.com/\n * @author alteredq / http://alteredqualia.com/\n *\n * parameters = {\n * color: ,\n * opacity: ,\n *\n * linewidth: ,\n * linecap: \"round\",\n * linejoin: \"round\"\n * }\n */\n\nfunction LineBasicMaterial( parameters ) {\n\n\tMaterial.call( this );\n\n\tthis.type = 'LineBasicMaterial';\n\n\tthis.color = new Color( 0xffffff );\n\n\tthis.linewidth = 1;\n\tthis.linecap = 'round';\n\tthis.linejoin = 'round';\n\n\tthis.lights = false;\n\n\tthis.setValues( parameters );\n\n}\n\nLineBasicMaterial.prototype = Object.create( Material.prototype );\nLineBasicMaterial.prototype.constructor = LineBasicMaterial;\n\nLineBasicMaterial.prototype.isLineBasicMaterial = true;\n\nLineBasicMaterial.prototype.copy = function ( source ) {\n\n\tMaterial.prototype.copy.call( this, source );\n\n\tthis.color.copy( source.color );\n\n\tthis.linewidth = source.linewidth;\n\tthis.linecap = source.linecap;\n\tthis.linejoin = source.linejoin;\n\n\treturn this;\n\n};\n\n\nexport { LineBasicMaterial };\n","import { Sphere } from '../math/Sphere';\nimport { Ray } from '../math/Ray';\nimport { Matrix4 } from '../math/Matrix4';\nimport { Object3D } from '../core/Object3D';\nimport { Vector3 } from '../math/Vector3';\nimport { LineBasicMaterial } from '../materials/LineBasicMaterial';\nimport { BufferGeometry } from '../core/BufferGeometry';\nimport { LineSegments } from './LineSegments';\n\n/**\n * @author mrdoob / http://mrdoob.com/\n */\n\nfunction Line( geometry, material, mode ) {\n\n\tif ( mode === 1 ) {\n\n\t\tconsole.warn( 'THREE.Line: parameter THREE.LinePieces no longer supported. Created THREE.LineSegments instead.' );\n\t\treturn new LineSegments( geometry, material );\n\n\t}\n\n\tObject3D.call( this );\n\n\tthis.type = 'Line';\n\n\tthis.geometry = geometry !== undefined ? geometry : new BufferGeometry();\n\tthis.material = material !== undefined ? material : new LineBasicMaterial( { color: Math.random() * 0xffffff } );\n\n}\n\nLine.prototype = Object.assign( Object.create( Object3D.prototype ), {\n\n\tconstructor: Line,\n\n\tisLine: true,\n\n\traycast: ( function () {\n\n\t\tvar inverseMatrix = new Matrix4();\n\t\tvar ray = new Ray();\n\t\tvar sphere = new Sphere();\n\n\t\treturn function raycast( raycaster, intersects ) {\n\n\t\t\tvar precision = raycaster.linePrecision;\n\t\t\tvar precisionSq = precision * precision;\n\n\t\t\tvar geometry = this.geometry;\n\t\t\tvar matrixWorld = this.matrixWorld;\n\n\t\t\t// Checking boundingSphere distance to ray\n\n\t\t\tif ( geometry.boundingSphere === null ) geometry.computeBoundingSphere();\n\n\t\t\tsphere.copy( geometry.boundingSphere );\n\t\t\tsphere.applyMatrix4( matrixWorld );\n\n\t\t\tif ( raycaster.ray.intersectsSphere( sphere ) === false ) return;\n\n\t\t\t//\n\n\t\t\tinverseMatrix.getInverse( matrixWorld );\n\t\t\tray.copy( raycaster.ray ).applyMatrix4( inverseMatrix );\n\n\t\t\tvar vStart = new Vector3();\n\t\t\tvar vEnd = new Vector3();\n\t\t\tvar interSegment = new Vector3();\n\t\t\tvar interRay = new Vector3();\n\t\t\tvar step = (this && this.isLineSegments) ? 2 : 1;\n\n\t\t\tif ( (geometry && geometry.isBufferGeometry) ) {\n\n\t\t\t\tvar index = geometry.index;\n\t\t\t\tvar attributes = geometry.attributes;\n\t\t\t\tvar positions = attributes.position.array;\n\n\t\t\t\tif ( index !== null ) {\n\n\t\t\t\t\tvar indices = index.array;\n\n\t\t\t\t\tfor ( var i = 0, l = indices.length - 1; i < l; i += step ) {\n\n\t\t\t\t\t\tvar a = indices[ i ];\n\t\t\t\t\t\tvar b = indices[ i + 1 ];\n\n\t\t\t\t\t\tvStart.fromArray( positions, a * 3 );\n\t\t\t\t\t\tvEnd.fromArray( positions, b * 3 );\n\n\t\t\t\t\t\tvar distSq = ray.distanceSqToSegment( vStart, vEnd, interRay, interSegment );\n\n\t\t\t\t\t\tif ( distSq > precisionSq ) continue;\n\n\t\t\t\t\t\tinterRay.applyMatrix4( this.matrixWorld ); //Move back to world space for distance calculation\n\n\t\t\t\t\t\tvar distance = raycaster.ray.origin.distanceTo( interRay );\n\n\t\t\t\t\t\tif ( distance < raycaster.near || distance > raycaster.far ) continue;\n\n\t\t\t\t\t\tintersects.push( {\n\n\t\t\t\t\t\t\tdistance: distance,\n\t\t\t\t\t\t\t// What do we want? intersection point on the ray or on the segment??\n\t\t\t\t\t\t\t// point: raycaster.ray.at( distance ),\n\t\t\t\t\t\t\tpoint: interSegment.clone().applyMatrix4( this.matrixWorld ),\n\t\t\t\t\t\t\tindex: i,\n\t\t\t\t\t\t\tface: null,\n\t\t\t\t\t\t\tfaceIndex: null,\n\t\t\t\t\t\t\tobject: this\n\n\t\t\t\t\t\t} );\n\n\t\t\t\t\t}\n\n\t\t\t\t} else {\n\n\t\t\t\t\tfor ( var i = 0, l = positions.length / 3 - 1; i < l; i += step ) {\n\n\t\t\t\t\t\tvStart.fromArray( positions, 3 * i );\n\t\t\t\t\t\tvEnd.fromArray( positions, 3 * i + 3 );\n\n\t\t\t\t\t\tvar distSq = ray.distanceSqToSegment( vStart, vEnd, interRay, interSegment );\n\n\t\t\t\t\t\tif ( distSq > precisionSq ) continue;\n\n\t\t\t\t\t\tinterRay.applyMatrix4( this.matrixWorld ); //Move back to world space for distance calculation\n\n\t\t\t\t\t\tvar distance = raycaster.ray.origin.distanceTo( interRay );\n\n\t\t\t\t\t\tif ( distance < raycaster.near || distance > raycaster.far ) continue;\n\n\t\t\t\t\t\tintersects.push( {\n\n\t\t\t\t\t\t\tdistance: distance,\n\t\t\t\t\t\t\t// What do we want? intersection point on the ray or on the segment??\n\t\t\t\t\t\t\t// point: raycaster.ray.at( distance ),\n\t\t\t\t\t\t\tpoint: interSegment.clone().applyMatrix4( this.matrixWorld ),\n\t\t\t\t\t\t\tindex: i,\n\t\t\t\t\t\t\tface: null,\n\t\t\t\t\t\t\tfaceIndex: null,\n\t\t\t\t\t\t\tobject: this\n\n\t\t\t\t\t\t} );\n\n\t\t\t\t\t}\n\n\t\t\t\t}\n\n\t\t\t} else if ( (geometry && geometry.isGeometry) ) {\n\n\t\t\t\tvar vertices = geometry.vertices;\n\t\t\t\tvar nbVertices = vertices.length;\n\n\t\t\t\tfor ( var i = 0; i < nbVertices - 1; i += step ) {\n\n\t\t\t\t\tvar distSq = ray.distanceSqToSegment( vertices[ i ], vertices[ i + 1 ], interRay, interSegment );\n\n\t\t\t\t\tif ( distSq > precisionSq ) continue;\n\n\t\t\t\t\tinterRay.applyMatrix4( this.matrixWorld ); //Move back to world space for distance calculation\n\n\t\t\t\t\tvar distance = raycaster.ray.origin.distanceTo( interRay );\n\n\t\t\t\t\tif ( distance < raycaster.near || distance > raycaster.far ) continue;\n\n\t\t\t\t\tintersects.push( {\n\n\t\t\t\t\t\tdistance: distance,\n\t\t\t\t\t\t// What do we want? intersection point on the ray or on the segment??\n\t\t\t\t\t\t// point: raycaster.ray.at( distance ),\n\t\t\t\t\t\tpoint: interSegment.clone().applyMatrix4( this.matrixWorld ),\n\t\t\t\t\t\tindex: i,\n\t\t\t\t\t\tface: null,\n\t\t\t\t\t\tfaceIndex: null,\n\t\t\t\t\t\tobject: this\n\n\t\t\t\t\t} );\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t};\n\n\t}() ),\n\n\tclone: function () {\n\n\t\treturn new this.constructor( this.geometry, this.material ).copy( this );\n\n\t}\n\n} );\n\n\nexport { Line };\n","import { Line } from './Line';\n\n/**\n * @author mrdoob / http://mrdoob.com/\n */\n\nfunction LineSegments( geometry, material ) {\n\n\tLine.call( this, geometry, material );\n\n\tthis.type = 'LineSegments';\n\n}\n\nLineSegments.prototype = Object.assign( Object.create( Line.prototype ), {\n\n\tconstructor: LineSegments,\n\n\tisLineSegments: true\n\n} );\n\n\nexport { LineSegments };\n","import { Material } from './Material';\nimport { Color } from '../math/Color';\n\n/**\n * @author mrdoob / http://mrdoob.com/\n * @author alteredq / http://alteredqualia.com/\n *\n * parameters = {\n * color: ,\n * opacity: ,\n * map: new THREE.Texture( ),\n *\n * size: ,\n * sizeAttenuation: \n * }\n */\n\nfunction PointsMaterial( parameters ) {\n\n\tMaterial.call( this );\n\n\tthis.type = 'PointsMaterial';\n\n\tthis.color = new Color( 0xffffff );\n\n\tthis.map = null;\n\n\tthis.size = 1;\n\tthis.sizeAttenuation = true;\n\n\tthis.lights = false;\n\n\tthis.setValues( parameters );\n\n}\n\nPointsMaterial.prototype = Object.create( Material.prototype );\nPointsMaterial.prototype.constructor = PointsMaterial;\n\nPointsMaterial.prototype.isPointsMaterial = true;\n\nPointsMaterial.prototype.copy = function ( source ) {\n\n\tMaterial.prototype.copy.call( this, source );\n\n\tthis.color.copy( source.color );\n\n\tthis.map = source.map;\n\n\tthis.size = source.size;\n\tthis.sizeAttenuation = source.sizeAttenuation;\n\n\treturn this;\n\n};\n\n\nexport { PointsMaterial };\n","import { Sphere } from '../math/Sphere';\nimport { Ray } from '../math/Ray';\nimport { Matrix4 } from '../math/Matrix4';\nimport { Object3D } from '../core/Object3D';\nimport { Vector3 } from '../math/Vector3';\nimport { PointsMaterial } from '../materials/PointsMaterial';\nimport { BufferGeometry } from '../core/BufferGeometry';\n\n/**\n * @author alteredq / http://alteredqualia.com/\n */\n\nfunction Points( geometry, material ) {\n\n\tObject3D.call( this );\n\n\tthis.type = 'Points';\n\n\tthis.geometry = geometry !== undefined ? geometry : new BufferGeometry();\n\tthis.material = material !== undefined ? material : new PointsMaterial( { color: Math.random() * 0xffffff } );\n\n}\n\nPoints.prototype = Object.assign( Object.create( Object3D.prototype ), {\n\n\tconstructor: Points,\n\n\tisPoints: true,\n\n\traycast: ( function () {\n\n\t\tvar inverseMatrix = new Matrix4();\n\t\tvar ray = new Ray();\n\t\tvar sphere = new Sphere();\n\n\t\treturn function raycast( raycaster, intersects ) {\n\n\t\t\tvar object = this;\n\t\t\tvar geometry = this.geometry;\n\t\t\tvar matrixWorld = this.matrixWorld;\n\t\t\tvar threshold = raycaster.params.Points.threshold;\n\n\t\t\t// Checking boundingSphere distance to ray\n\n\t\t\tif ( geometry.boundingSphere === null ) geometry.computeBoundingSphere();\n\n\t\t\tsphere.copy( geometry.boundingSphere );\n\t\t\tsphere.applyMatrix4( matrixWorld );\n\n\t\t\tif ( raycaster.ray.intersectsSphere( sphere ) === false ) return;\n\n\t\t\t//\n\n\t\t\tinverseMatrix.getInverse( matrixWorld );\n\t\t\tray.copy( raycaster.ray ).applyMatrix4( inverseMatrix );\n\n\t\t\tvar localThreshold = threshold / ( ( this.scale.x + this.scale.y + this.scale.z ) / 3 );\n\t\t\tvar localThresholdSq = localThreshold * localThreshold;\n\t\t\tvar position = new Vector3();\n\n\t\t\tfunction testPoint( point, index ) {\n\n\t\t\t\tvar rayPointDistanceSq = ray.distanceSqToPoint( point );\n\n\t\t\t\tif ( rayPointDistanceSq < localThresholdSq ) {\n\n\t\t\t\t\tvar intersectPoint = ray.closestPointToPoint( point );\n\t\t\t\t\tintersectPoint.applyMatrix4( matrixWorld );\n\n\t\t\t\t\tvar distance = raycaster.ray.origin.distanceTo( intersectPoint );\n\n\t\t\t\t\tif ( distance < raycaster.near || distance > raycaster.far ) return;\n\n\t\t\t\t\tintersects.push( {\n\n\t\t\t\t\t\tdistance: distance,\n\t\t\t\t\t\tdistanceToRay: Math.sqrt( rayPointDistanceSq ),\n\t\t\t\t\t\tpoint: intersectPoint.clone(),\n\t\t\t\t\t\tindex: index,\n\t\t\t\t\t\tface: null,\n\t\t\t\t\t\tobject: object\n\n\t\t\t\t\t} );\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t\tif ( (geometry && geometry.isBufferGeometry) ) {\n\n\t\t\t\tvar index = geometry.index;\n\t\t\t\tvar attributes = geometry.attributes;\n\t\t\t\tvar positions = attributes.position.array;\n\n\t\t\t\tif ( index !== null ) {\n\n\t\t\t\t\tvar indices = index.array;\n\n\t\t\t\t\tfor ( var i = 0, il = indices.length; i < il; i ++ ) {\n\n\t\t\t\t\t\tvar a = indices[ i ];\n\n\t\t\t\t\t\tposition.fromArray( positions, a * 3 );\n\n\t\t\t\t\t\ttestPoint( position, a );\n\n\t\t\t\t\t}\n\n\t\t\t\t} else {\n\n\t\t\t\t\tfor ( var i = 0, l = positions.length / 3; i < l; i ++ ) {\n\n\t\t\t\t\t\tposition.fromArray( positions, i * 3 );\n\n\t\t\t\t\t\ttestPoint( position, i );\n\n\t\t\t\t\t}\n\n\t\t\t\t}\n\n\t\t\t} else {\n\n\t\t\t\tvar vertices = geometry.vertices;\n\n\t\t\t\tfor ( var i = 0, l = vertices.length; i < l; i ++ ) {\n\n\t\t\t\t\ttestPoint( vertices[ i ], i );\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t};\n\n\t}() ),\n\n\tclone: function () {\n\n\t\treturn new this.constructor( this.geometry, this.material ).copy( this );\n\n\t}\n\n} );\n\n\nexport { Points };\n","import { Object3D } from '../core/Object3D';\n\n/**\n * @author mrdoob / http://mrdoob.com/\n */\n\nfunction Group() {\n\n\tObject3D.call( this );\n\n\tthis.type = 'Group';\n\n}\n\nGroup.prototype = Object.assign( Object.create( Object3D.prototype ), {\n\n\tconstructor: Group\n\n} );\n\n\nexport { Group };\n","import { Texture } from './Texture';\n\n/**\n * @author mrdoob / http://mrdoob.com/\n */\n\nfunction VideoTexture( video, mapping, wrapS, wrapT, magFilter, minFilter, format, type, anisotropy ) {\n\n\tTexture.call( this, video, mapping, wrapS, wrapT, magFilter, minFilter, format, type, anisotropy );\n\n\tthis.generateMipmaps = false;\n\n\tvar scope = this;\n\n\tfunction update() {\n\n\t\trequestAnimationFrame( update );\n\n\t\tif ( video.readyState >= video.HAVE_CURRENT_DATA ) {\n\n\t\t\tscope.needsUpdate = true;\n\n\t\t}\n\n\t}\n\n\tupdate();\n\n}\n\nVideoTexture.prototype = Object.create( Texture.prototype );\nVideoTexture.prototype.constructor = VideoTexture;\n\n\nexport { VideoTexture };\n","import { Texture } from './Texture';\n\n/**\n * @author alteredq / http://alteredqualia.com/\n */\n\nfunction CompressedTexture( mipmaps, width, height, format, type, mapping, wrapS, wrapT, magFilter, minFilter, anisotropy, encoding ) {\n\n\tTexture.call( this, null, mapping, wrapS, wrapT, magFilter, minFilter, format, type, anisotropy, encoding );\n\n\tthis.image = { width: width, height: height };\n\tthis.mipmaps = mipmaps;\n\n\t// no flipping for cube textures\n\t// (also flipping doesn't work for compressed textures )\n\n\tthis.flipY = false;\n\n\t// can't generate mipmaps for compressed textures\n\t// mips must be embedded in DDS files\n\n\tthis.generateMipmaps = false;\n\n}\n\nCompressedTexture.prototype = Object.create( Texture.prototype );\nCompressedTexture.prototype.constructor = CompressedTexture;\n\nCompressedTexture.prototype.isCompressedTexture = true;\n\n\nexport { CompressedTexture };\n","import { Texture } from './Texture';\n\n/**\n * @author mrdoob / http://mrdoob.com/\n */\n\nfunction CanvasTexture( canvas, mapping, wrapS, wrapT, magFilter, minFilter, format, type, anisotropy ) {\n\n\tTexture.call( this, canvas, mapping, wrapS, wrapT, magFilter, minFilter, format, type, anisotropy );\n\n\tthis.needsUpdate = true;\n\n}\n\nCanvasTexture.prototype = Object.create( Texture.prototype );\nCanvasTexture.prototype.constructor = CanvasTexture;\n\n\nexport { CanvasTexture };\n","import { Texture } from './Texture';\nimport { NearestFilter, UnsignedShortType, DepthFormat, DepthStencilFormat } from '../constants';\n\n/**\n * @author Matt DesLauriers / @mattdesl\n * @author atix / arthursilber.de\n */\n\nfunction DepthTexture( width, height, type, mapping, wrapS, wrapT, magFilter, minFilter, anisotropy, format ) {\n\n\tformat = format !== undefined ? format : DepthFormat;\n\n\tif ( format !== DepthFormat && format !== DepthStencilFormat ) {\n\n\t\tthrow new Error( 'DepthTexture format must be either THREE.DepthFormat or THREE.DepthStencilFormat' )\n\n\t}\n\n\tTexture.call( this, null, mapping, wrapS, wrapT, magFilter, minFilter, format, type, anisotropy );\n\n\tthis.image = { width: width, height: height };\n\n\tthis.type = type !== undefined ? type : UnsignedShortType;\n\n\tthis.magFilter = magFilter !== undefined ? magFilter : NearestFilter;\n\tthis.minFilter = minFilter !== undefined ? minFilter : NearestFilter;\n\n\tthis.flipY = false;\n\tthis.generateMipmaps\t= false;\n\n}\n\nDepthTexture.prototype = Object.create( Texture.prototype );\nDepthTexture.prototype.constructor = DepthTexture;\nDepthTexture.prototype.isDepthTexture = true;\n\nexport { DepthTexture };\n","import { BufferGeometry } from '../core/BufferGeometry';\nimport { BufferAttribute } from '../core/BufferAttribute';\n\n/**\n * @author mrdoob / http://mrdoob.com/\n */\n\nfunction WireframeGeometry( geometry ) {\n\n\tBufferGeometry.call( this );\n\n\tvar edge = [ 0, 0 ], hash = {};\n\n\tfunction sortFunction( a, b ) {\n\n\t\treturn a - b;\n\n\t}\n\n\tvar keys = [ 'a', 'b', 'c' ];\n\n\tif ( (geometry && geometry.isGeometry) ) {\n\n\t\tvar vertices = geometry.vertices;\n\t\tvar faces = geometry.faces;\n\t\tvar numEdges = 0;\n\n\t\t// allocate maximal size\n\t\tvar edges = new Uint32Array( 6 * faces.length );\n\n\t\tfor ( var i = 0, l = faces.length; i < l; i ++ ) {\n\n\t\t\tvar face = faces[ i ];\n\n\t\t\tfor ( var j = 0; j < 3; j ++ ) {\n\n\t\t\t\tedge[ 0 ] = face[ keys[ j ] ];\n\t\t\t\tedge[ 1 ] = face[ keys[ ( j + 1 ) % 3 ] ];\n\t\t\t\tedge.sort( sortFunction );\n\n\t\t\t\tvar key = edge.toString();\n\n\t\t\t\tif ( hash[ key ] === undefined ) {\n\n\t\t\t\t\tedges[ 2 * numEdges ] = edge[ 0 ];\n\t\t\t\t\tedges[ 2 * numEdges + 1 ] = edge[ 1 ];\n\t\t\t\t\thash[ key ] = true;\n\t\t\t\t\tnumEdges ++;\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t}\n\n\t\tvar coords = new Float32Array( numEdges * 2 * 3 );\n\n\t\tfor ( var i = 0, l = numEdges; i < l; i ++ ) {\n\n\t\t\tfor ( var j = 0; j < 2; j ++ ) {\n\n\t\t\t\tvar vertex = vertices[ edges [ 2 * i + j ] ];\n\n\t\t\t\tvar index = 6 * i + 3 * j;\n\t\t\t\tcoords[ index + 0 ] = vertex.x;\n\t\t\t\tcoords[ index + 1 ] = vertex.y;\n\t\t\t\tcoords[ index + 2 ] = vertex.z;\n\n\t\t\t}\n\n\t\t}\n\n\t\tthis.addAttribute( 'position', new BufferAttribute( coords, 3 ) );\n\n\t} else if ( (geometry && geometry.isBufferGeometry) ) {\n\n\t\tif ( geometry.index !== null ) {\n\n\t\t\t// Indexed BufferGeometry\n\n\t\t\tvar indices = geometry.index.array;\n\t\t\tvar vertices = geometry.attributes.position;\n\t\t\tvar groups = geometry.groups;\n\t\t\tvar numEdges = 0;\n\n\t\t\tif ( groups.length === 0 ) {\n\n\t\t\t\tgeometry.addGroup( 0, indices.length );\n\n\t\t\t}\n\n\t\t\t// allocate maximal size\n\t\t\tvar edges = new Uint32Array( 2 * indices.length );\n\n\t\t\tfor ( var o = 0, ol = groups.length; o < ol; ++ o ) {\n\n\t\t\t\tvar group = groups[ o ];\n\n\t\t\t\tvar start = group.start;\n\t\t\t\tvar count = group.count;\n\n\t\t\t\tfor ( var i = start, il = start + count; i < il; i += 3 ) {\n\n\t\t\t\t\tfor ( var j = 0; j < 3; j ++ ) {\n\n\t\t\t\t\t\tedge[ 0 ] = indices[ i + j ];\n\t\t\t\t\t\tedge[ 1 ] = indices[ i + ( j + 1 ) % 3 ];\n\t\t\t\t\t\tedge.sort( sortFunction );\n\n\t\t\t\t\t\tvar key = edge.toString();\n\n\t\t\t\t\t\tif ( hash[ key ] === undefined ) {\n\n\t\t\t\t\t\t\tedges[ 2 * numEdges ] = edge[ 0 ];\n\t\t\t\t\t\t\tedges[ 2 * numEdges + 1 ] = edge[ 1 ];\n\t\t\t\t\t\t\thash[ key ] = true;\n\t\t\t\t\t\t\tnumEdges ++;\n\n\t\t\t\t\t\t}\n\n\t\t\t\t\t}\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t\tvar coords = new Float32Array( numEdges * 2 * 3 );\n\n\t\t\tfor ( var i = 0, l = numEdges; i < l; i ++ ) {\n\n\t\t\t\tfor ( var j = 0; j < 2; j ++ ) {\n\n\t\t\t\t\tvar index = 6 * i + 3 * j;\n\t\t\t\t\tvar index2 = edges[ 2 * i + j ];\n\n\t\t\t\t\tcoords[ index + 0 ] = vertices.getX( index2 );\n\t\t\t\t\tcoords[ index + 1 ] = vertices.getY( index2 );\n\t\t\t\t\tcoords[ index + 2 ] = vertices.getZ( index2 );\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t\tthis.addAttribute( 'position', new BufferAttribute( coords, 3 ) );\n\n\t\t} else {\n\n\t\t\t// non-indexed BufferGeometry\n\n\t\t\tvar vertices = geometry.attributes.position.array;\n\t\t\tvar numEdges = vertices.length / 3;\n\t\t\tvar numTris = numEdges / 3;\n\n\t\t\tvar coords = new Float32Array( numEdges * 2 * 3 );\n\n\t\t\tfor ( var i = 0, l = numTris; i < l; i ++ ) {\n\n\t\t\t\tfor ( var j = 0; j < 3; j ++ ) {\n\n\t\t\t\t\tvar index = 18 * i + 6 * j;\n\n\t\t\t\t\tvar index1 = 9 * i + 3 * j;\n\t\t\t\t\tcoords[ index + 0 ] = vertices[ index1 ];\n\t\t\t\t\tcoords[ index + 1 ] = vertices[ index1 + 1 ];\n\t\t\t\t\tcoords[ index + 2 ] = vertices[ index1 + 2 ];\n\n\t\t\t\t\tvar index2 = 9 * i + 3 * ( ( j + 1 ) % 3 );\n\t\t\t\t\tcoords[ index + 3 ] = vertices[ index2 ];\n\t\t\t\t\tcoords[ index + 4 ] = vertices[ index2 + 1 ];\n\t\t\t\t\tcoords[ index + 5 ] = vertices[ index2 + 2 ];\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t\tthis.addAttribute( 'position', new BufferAttribute( coords, 3 ) );\n\n\t\t}\n\n\t}\n\n}\n\nWireframeGeometry.prototype = Object.create( BufferGeometry.prototype );\nWireframeGeometry.prototype.constructor = WireframeGeometry;\n\n\nexport { WireframeGeometry };\n","import { BufferGeometry } from '../core/BufferGeometry';\nimport { Float32Attribute, Uint16Attribute, Uint32Attribute } from '../core/BufferAttribute';\n\n/**\n * @author Mugen87 / https://github.com/Mugen87\n *\n * Parametric Surfaces Geometry\n * based on the brilliant article by @prideout http://prideout.net/blog/?p=44\n */\n\nfunction ParametricBufferGeometry( func, slices, stacks ) {\n\n\tBufferGeometry.call( this );\n\n\tthis.type = 'ParametricBufferGeometry';\n\n\tthis.parameters = {\n\t\tfunc: func,\n\t\tslices: slices,\n\t\tstacks: stacks\n\t};\n\n\t// generate vertices and uvs\n\n\tvar vertices = [];\n\tvar uvs = [];\n\n\tvar i, j, p;\n\tvar u, v;\n\n\tvar sliceCount = slices + 1;\n\n\tfor ( i = 0; i <= stacks; i ++ ) {\n\n\t\tv = i / stacks;\n\n\t\tfor ( j = 0; j <= slices; j ++ ) {\n\n\t\t\tu = j / slices;\n\n\t\t\tp = func( u, v );\n\t\t\tvertices.push( p.x, p.y, p.z );\n\n\t\t\tuvs.push( u, v );\n\n\t\t}\n\n\t}\n\n\t// generate indices\n\n\tvar indices = [];\n\tvar a, b, c, d;\n\n\tfor ( i = 0; i < stacks; i ++ ) {\n\n\t\tfor ( j = 0; j < slices; j ++ ) {\n\n\t\t\ta = i * sliceCount + j;\n\t\t\tb = i * sliceCount + j + 1;\n\t\t\tc = ( i + 1 ) * sliceCount + j + 1;\n\t\t\td = ( i + 1 ) * sliceCount + j;\n\n\t\t\t// faces one and two\n\n\t\t\tindices.push( a, b, d );\n\t\t\tindices.push( b, c, d );\n\n\t\t}\n\n\t}\n\n\t// build geometry\n\n\tthis.setIndex( ( indices.length > 65535 ? Uint32Attribute : Uint16Attribute )( indices, 1 ) );\n\tthis.addAttribute( 'position', Float32Attribute( vertices, 3 ) );\n\tthis.addAttribute( 'uv', Float32Attribute( uvs, 2 ) );\n\n\t// generate normals\n\n\tthis.computeVertexNormals();\n\n}\n\nParametricBufferGeometry.prototype = Object.create( BufferGeometry.prototype );\nParametricBufferGeometry.prototype.constructor = ParametricBufferGeometry;\n\n\nexport { ParametricBufferGeometry };\n","import { Geometry } from '../core/Geometry';\nimport { ParametricBufferGeometry } from './ParametricBufferGeometry';\n\n/**\n * @author zz85 / https://github.com/zz85\n *\n * Parametric Surfaces Geometry\n * based on the brilliant article by @prideout http://prideout.net/blog/?p=44\n */\n\nfunction ParametricGeometry( func, slices, stacks ) {\n\n\tGeometry.call( this );\n\n\tthis.type = 'ParametricGeometry';\n\n\tthis.parameters = {\n\t\tfunc: func,\n\t\tslices: slices,\n\t\tstacks: stacks\n\t};\n\n\tthis.fromBufferGeometry( new ParametricBufferGeometry( func, slices, stacks ) );\n\tthis.mergeVertices();\n\n}\n\nParametricGeometry.prototype = Object.create( Geometry.prototype );\nParametricGeometry.prototype.constructor = ParametricGeometry;\n\n\nexport { ParametricGeometry };\n","import { BufferGeometry } from '../core/BufferGeometry';\nimport { Float32Attribute } from '../core/BufferAttribute';\nimport { Vector3 } from '../math/Vector3';\nimport { Vector2 } from '../math/Vector2';\nimport { Sphere } from '../math/Sphere';\n\n/**\n * @author Mugen87 / https://github.com/Mugen87\n */\n\nfunction PolyhedronBufferGeometry( vertices, indices, radius, detail ) {\n\n\tBufferGeometry.call( this );\n\n\tthis.type = 'PolyhedronBufferGeometry';\n\n\tthis.parameters = {\n\t\tvertices: vertices,\n\t\tindices: indices,\n\t\tradius: radius,\n\t\tdetail: detail\n\t};\n\n\tradius = radius || 1;\n\tdetail = detail || 0;\n\n\t// default buffer data\n\n\tvar vertexBuffer = [];\n\tvar uvBuffer = [];\n\n\t// the subdivision creates the vertex buffer data\n\n\tsubdivide( detail );\n\n\t// all vertices should lie on a conceptual sphere with a given radius\n\n\tappplyRadius( radius );\n\n\t// finally, create the uv data\n\n\tgenerateUVs();\n\n\t// build non-indexed geometry\n\n\tthis.addAttribute( 'position', Float32Attribute( vertexBuffer, 3 ) );\n\tthis.addAttribute( 'normal', Float32Attribute( vertexBuffer.slice(), 3 ) );\n\tthis.addAttribute( 'uv', Float32Attribute( uvBuffer, 2 ) );\n\tthis.normalizeNormals();\n\n\tthis.boundingSphere = new Sphere( new Vector3(), radius );\n\n\t// helper functions\n\n\tfunction subdivide( detail ) {\n\n\t\tvar a = new Vector3();\n\t\tvar b = new Vector3();\n\t\tvar c = new Vector3();\n\n\t\t// iterate over all faces and apply a subdivison with the given detail value\n\n\t\tfor ( var i = 0; i < indices.length; i += 3 ) {\n\n\t\t\t// get the vertices of the face\n\n\t\t\tgetVertexByIndex( indices[ i + 0 ], a );\n\t\t\tgetVertexByIndex( indices[ i + 1 ], b );\n\t\t\tgetVertexByIndex( indices[ i + 2 ], c );\n\n\t\t\t// perform subdivision\n\n\t\t\tsubdivideFace( a, b, c, detail );\n\n\t\t}\n\n\t}\n\n\tfunction subdivideFace( a, b, c, detail ) {\n\n\t\tvar cols = Math.pow( 2, detail );\n\n\t\t// we use this multidimensional array as a data structure for creating the subdivision\n\n\t\tvar v = [];\n\n\t\tvar i, j;\n\n\t\t// construct all of the vertices for this subdivision\n\n\t\tfor ( i = 0 ; i <= cols; i ++ ) {\n\n\t\t\tv[ i ] = [];\n\n\t\t\tvar aj = a.clone().lerp( c, i / cols );\n\t\t\tvar bj = b.clone().lerp( c, i / cols );\n\n\t\t\tvar rows = cols - i;\n\n\t\t\tfor ( j = 0; j <= rows; j ++ ) {\n\n\t\t\t\tif ( j === 0 && i === cols ) {\n\n\t\t\t\t\tv[ i ][ j ] = aj;\n\n\t\t\t\t} else {\n\n\t\t\t\t\tv[ i ][ j ] = aj.clone().lerp( bj, j / rows );\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t}\n\n\t\t// construct all of the faces\n\n\t\tfor ( i = 0; i < cols ; i ++ ) {\n\n\t\t\tfor ( j = 0; j < 2 * ( cols - i ) - 1; j ++ ) {\n\n\t\t\t\tvar k = Math.floor( j / 2 );\n\n\t\t\t\tif ( j % 2 === 0 ) {\n\n\t\t\t\t\tpushVertex( v[ i ][ k + 1 ] );\n\t\t\t\t\tpushVertex( v[ i + 1 ][ k ] );\n\t\t\t\t\tpushVertex( v[ i ][ k ] );\n\n\t\t\t\t} else {\n\n\t\t\t\t\tpushVertex( v[ i ][ k + 1 ] );\n\t\t\t\t\tpushVertex( v[ i + 1 ][ k + 1 ] );\n\t\t\t\t\tpushVertex( v[ i + 1 ][ k ] );\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t}\n\n\t}\n\n\tfunction appplyRadius( radius ) {\n\n\t\tvar vertex = new Vector3();\n\n\t\t// iterate over the entire buffer and apply the radius to each vertex\n\n\t\tfor ( var i = 0; i < vertexBuffer.length; i += 3 ) {\n\n\t\t\tvertex.x = vertexBuffer[ i + 0 ];\n\t\t\tvertex.y = vertexBuffer[ i + 1 ];\n\t\t\tvertex.z = vertexBuffer[ i + 2 ];\n\n\t\t\tvertex.normalize().multiplyScalar( radius );\n\n\t\t\tvertexBuffer[ i + 0 ] = vertex.x;\n\t\t\tvertexBuffer[ i + 1 ] = vertex.y;\n\t\t\tvertexBuffer[ i + 2 ] = vertex.z;\n\n\t\t}\n\n\t}\n\n\tfunction generateUVs() {\n\n\t\tvar vertex = new Vector3();\n\n\t\tfor ( var i = 0; i < vertexBuffer.length; i += 3 ) {\n\n\t\t\tvertex.x = vertexBuffer[ i + 0 ];\n\t\t\tvertex.y = vertexBuffer[ i + 1 ];\n\t\t\tvertex.z = vertexBuffer[ i + 2 ];\n\n\t\t\tvar u = azimuth( vertex ) / 2 / Math.PI + 0.5;\n\t\t\tvar v = inclination( vertex ) / Math.PI + 0.5;\n\t\t\tuvBuffer.push( u, 1 - v );\n\n\t\t}\n\n\t\tcorrectUVs();\n\n\t\tcorrectSeam();\n\n\t}\n\n\tfunction correctSeam() {\n\n\t\t// handle case when face straddles the seam, see #3269\n\n\t\tfor ( var i = 0; i < uvBuffer.length; i += 6 ) {\n\n\t\t\t// uv data of a single face\n\n\t\t\tvar x0 = uvBuffer[ i + 0 ];\n\t\t\tvar x1 = uvBuffer[ i + 2 ];\n\t\t\tvar x2 = uvBuffer[ i + 4 ];\n\n\t\t\tvar max = Math.max( x0, x1, x2 );\n\t\t\tvar min = Math.min( x0, x1, x2 );\n\n\t\t\t// 0.9 is somewhat arbitrary\n\n\t\t\tif ( max > 0.9 && min < 0.1 ) {\n\n\t\t\t\tif ( x0 < 0.2 ) uvBuffer[ i + 0 ] += 1;\n\t\t\t\tif ( x1 < 0.2 ) uvBuffer[ i + 2 ] += 1;\n\t\t\t\tif ( x2 < 0.2 ) uvBuffer[ i + 4 ] += 1;\n\n\t\t\t}\n\n\t\t}\n\n\t}\n\n\tfunction pushVertex( vertex ) {\n\n\t\tvertexBuffer.push( vertex.x, vertex.y, vertex.z );\n\n\t}\n\n\tfunction getVertexByIndex( index, vertex ) {\n\n\t\tvar stride = index * 3;\n\n\t\tvertex.x = vertices[ stride + 0 ];\n\t\tvertex.y = vertices[ stride + 1 ];\n\t\tvertex.z = vertices[ stride + 2 ];\n\n\t}\n\n\tfunction correctUVs() {\n\n\t\tvar a = new Vector3();\n\t\tvar b = new Vector3();\n\t\tvar c = new Vector3();\n\n\t\tvar centroid = new Vector3();\n\n\t\tvar uvA = new Vector2();\n\t\tvar uvB = new Vector2();\n\t\tvar uvC = new Vector2();\n\n\t\tfor ( var i = 0, j = 0; i < vertexBuffer.length; i += 9, j += 6 ) {\n\n\t\t\ta.set( vertexBuffer[ i + 0 ], vertexBuffer[ i + 1 ], vertexBuffer[ i + 2 ] );\n\t\t\tb.set( vertexBuffer[ i + 3 ], vertexBuffer[ i + 4 ], vertexBuffer[ i + 5 ] );\n\t\t\tc.set( vertexBuffer[ i + 6 ], vertexBuffer[ i + 7 ], vertexBuffer[ i + 8 ] );\n\n\t\t\tuvA.set( uvBuffer[ j + 0 ], uvBuffer[ j + 1 ] );\n\t\t\tuvB.set( uvBuffer[ j + 2 ], uvBuffer[ j + 3 ] );\n\t\t\tuvC.set( uvBuffer[ j + 4 ], uvBuffer[ j + 5 ] );\n\n\t\t\tcentroid.copy( a ).add( b ).add( c ).divideScalar( 3 );\n\n\t\t\tvar azi = azimuth( centroid );\n\n\t\t\tcorrectUV( uvA, j + 0, a, azi );\n\t\t\tcorrectUV( uvB, j + 2, b, azi );\n\t\t\tcorrectUV( uvC, j + 4, c, azi );\n\n\t\t}\n\n\t}\n\n\tfunction correctUV( uv, stride, vector, azimuth ) {\n\n\t\tif ( ( azimuth < 0 ) && ( uv.x === 1 ) ) {\n\n\t\t\tuvBuffer[ stride ] = uv.x - 1;\n\n\t\t}\n\n\t\tif ( ( vector.x === 0 ) && ( vector.z === 0 ) ) {\n\n\t\t\tuvBuffer[ stride ] = azimuth / 2 / Math.PI + 0.5;\n\n\t\t}\n\n\t}\n\n\t// Angle around the Y axis, counter-clockwise when looking from above.\n\n\tfunction azimuth( vector ) {\n\n\t\treturn Math.atan2( vector.z, - vector.x );\n\n\t}\n\n\n\t// Angle above the XZ plane.\n\n\tfunction inclination( vector ) {\n\n\t\treturn Math.atan2( - vector.y, Math.sqrt( ( vector.x * vector.x ) + ( vector.z * vector.z ) ) );\n\n\t}\n\n}\n\nPolyhedronBufferGeometry.prototype = Object.create( BufferGeometry.prototype );\nPolyhedronBufferGeometry.prototype.constructor = PolyhedronBufferGeometry;\n\n\nexport { PolyhedronBufferGeometry };\n","import { PolyhedronBufferGeometry } from './PolyhedronBufferGeometry';\n\n/**\n * @author Mugen87 / https://github.com/Mugen87\n */\n\nfunction TetrahedronBufferGeometry( radius, detail ) {\n\n\tvar vertices = [\n\t\t1, 1, 1, - 1, - 1, 1, - 1, 1, - 1, 1, - 1, - 1\n\t];\n\n\tvar indices = [\n\t\t2, 1, 0, 0, 3, 2, 1, 3, 0, 2, 3, 1\n\t];\n\n\tPolyhedronBufferGeometry.call( this, vertices, indices, radius, detail );\n\n\tthis.type = 'TetrahedronBufferGeometry';\n\n\tthis.parameters = {\n\t\tradius: radius,\n\t\tdetail: detail\n\t};\n\n}\n\nTetrahedronBufferGeometry.prototype = Object.create( PolyhedronBufferGeometry.prototype );\nTetrahedronBufferGeometry.prototype.constructor = TetrahedronBufferGeometry;\n\n\nexport { TetrahedronBufferGeometry };\n","import { Geometry } from '../core/Geometry';\nimport { TetrahedronBufferGeometry } from './TetrahedronBufferGeometry';\n\n/**\n * @author timothypratley / https://github.com/timothypratley\n */\n\nfunction TetrahedronGeometry( radius, detail ) {\n\n\tGeometry.call( this );\n\n\tthis.type = 'TetrahedronGeometry';\n\n\tthis.parameters = {\n\t\tradius: radius,\n\t\tdetail: detail\n\t};\n\n\tthis.fromBufferGeometry( new TetrahedronBufferGeometry( radius, detail ) );\n\tthis.mergeVertices();\n\n}\n\nTetrahedronGeometry.prototype = Object.create( Geometry.prototype );\nTetrahedronGeometry.prototype.constructor = TetrahedronGeometry;\n\n\nexport { TetrahedronGeometry };\n","import { PolyhedronBufferGeometry } from './PolyhedronBufferGeometry';\n\n/**\n * @author Mugen87 / https://github.com/Mugen87\n */\n\nfunction OctahedronBufferGeometry( radius,detail ) {\n\n\tvar vertices = [\n\t\t1, 0, 0, - 1, 0, 0, 0, 1, 0, 0, - 1, 0, 0, 0, 1, 0, 0, - 1\n\t];\n\n\tvar indices = [\n\t\t0, 2, 4, 0, 4, 3, 0, 3, 5, 0, 5, 2, 1, 2, 5, 1, 5, 3, 1, 3, 4, 1, 4, 2\n\t];\n\n\tPolyhedronBufferGeometry.call( this, vertices, indices, radius, detail );\n\n\tthis.type = 'OctahedronBufferGeometry';\n\n\tthis.parameters = {\n\t\tradius: radius,\n\t\tdetail: detail\n\t};\n\n}\n\nOctahedronBufferGeometry.prototype = Object.create( PolyhedronBufferGeometry.prototype );\nOctahedronBufferGeometry.prototype.constructor = OctahedronBufferGeometry;\n\n\nexport { OctahedronBufferGeometry };\n","import { Geometry } from '../core/Geometry';\nimport { OctahedronBufferGeometry } from './OctahedronBufferGeometry';\n\n/**\n * @author timothypratley / https://github.com/timothypratley\n */\n\nfunction OctahedronGeometry( radius, detail ) {\n\n\tGeometry.call( this );\n\n\tthis.type = 'OctahedronGeometry';\n\n\tthis.parameters = {\n\t\tradius: radius,\n\t\tdetail: detail\n\t};\n\n\tthis.fromBufferGeometry( new OctahedronBufferGeometry( radius, detail ) );\n\tthis.mergeVertices();\n\n}\n\nOctahedronGeometry.prototype = Object.create( Geometry.prototype );\nOctahedronGeometry.prototype.constructor = OctahedronGeometry;\n\n\nexport { OctahedronGeometry };\n","import { PolyhedronBufferGeometry } from './PolyhedronBufferGeometry';\n\n/**\n * @author Mugen87 / https://github.com/Mugen87\n */\n\nfunction IcosahedronBufferGeometry( radius, detail ) {\n\n\tvar t = ( 1 + Math.sqrt( 5 ) ) / 2;\n\n\tvar vertices = [\n\t\t- 1, t, 0, 1, t, 0, - 1, - t, 0, 1, - t, 0,\n\t\t 0, - 1, t, 0, 1, t, 0, - 1, - t, 0, 1, - t,\n\t\t t, 0, - 1, t, 0, 1, - t, 0, - 1, - t, 0, 1\n\t];\n\n\tvar indices = [\n\t\t 0, 11, 5, 0, 5, 1, 0, 1, 7, 0, 7, 10, 0, 10, 11,\n\t\t 1, 5, 9, 5, 11, 4, 11, 10, 2, 10, 7, 6, 7, 1, 8,\n\t\t 3, 9, 4, 3, 4, 2, 3, 2, 6, 3, 6, 8, 3, 8, 9,\n\t\t 4, 9, 5, 2, 4, 11, 6, 2, 10, 8, 6, 7, 9, 8, 1\n\t];\n\n\tPolyhedronBufferGeometry.call( this, vertices, indices, radius, detail );\n\n\tthis.type = 'IcosahedronBufferGeometry';\n\n\tthis.parameters = {\n\t\tradius: radius,\n\t\tdetail: detail\n\t};\n\n}\n\nIcosahedronBufferGeometry.prototype = Object.create( PolyhedronBufferGeometry.prototype );\nIcosahedronBufferGeometry.prototype.constructor = IcosahedronBufferGeometry;\n\n\nexport { IcosahedronBufferGeometry };\n","import { Geometry } from '../core/Geometry';\nimport { IcosahedronBufferGeometry } from './IcosahedronBufferGeometry';\n\n/**\n * @author timothypratley / https://github.com/timothypratley\n */\n\nfunction IcosahedronGeometry( radius, detail ) {\n\n \tGeometry.call( this );\n\n\tthis.type = 'IcosahedronGeometry';\n\n\tthis.parameters = {\n\t\tradius: radius,\n\t\tdetail: detail\n\t};\n\n\tthis.fromBufferGeometry( new IcosahedronBufferGeometry( radius, detail ) );\n\tthis.mergeVertices();\n\n}\n\nIcosahedronGeometry.prototype = Object.create( Geometry.prototype );\nIcosahedronGeometry.prototype.constructor = IcosahedronGeometry;\n\n\nexport { IcosahedronGeometry };\n","import { PolyhedronBufferGeometry } from './PolyhedronBufferGeometry';\n\n/**\n * @author Mugen87 / https://github.com/Mugen87\n */\n\nfunction DodecahedronBufferGeometry( radius, detail ) {\n\n\tvar t = ( 1 + Math.sqrt( 5 ) ) / 2;\n\tvar r = 1 / t;\n\n\tvar vertices = [\n\n\t\t// (±1, ±1, ±1)\n\t\t- 1, - 1, - 1, - 1, - 1, 1,\n\t\t- 1, 1, - 1, - 1, 1, 1,\n\t\t 1, - 1, - 1, 1, - 1, 1,\n\t\t 1, 1, - 1, 1, 1, 1,\n\n\t\t// (0, ±1/φ, ±φ)\n\t\t 0, - r, - t, 0, - r, t,\n\t\t 0, r, - t, 0, r, t,\n\n\t\t// (±1/φ, ±φ, 0)\n\t\t- r, - t, 0, - r, t, 0,\n\t\t r, - t, 0, r, t, 0,\n\n\t\t// (±φ, 0, ±1/φ)\n\t\t- t, 0, - r, t, 0, - r,\n\t\t- t, 0, r, t, 0, r\n\t];\n\n\tvar indices = [\n\t\t 3, 11, 7, 3, 7, 15, 3, 15, 13,\n\t\t 7, 19, 17, 7, 17, 6, 7, 6, 15,\n\t\t17, 4, 8, 17, 8, 10, 17, 10, 6,\n\t\t 8, 0, 16, 8, 16, 2, 8, 2, 10,\n\t\t 0, 12, 1, 0, 1, 18, 0, 18, 16,\n\t\t 6, 10, 2, 6, 2, 13, 6, 13, 15,\n\t\t 2, 16, 18, 2, 18, 3, 2, 3, 13,\n\t\t18, 1, 9, 18, 9, 11, 18, 11, 3,\n\t\t 4, 14, 12, 4, 12, 0, 4, 0, 8,\n\t\t11, 9, 5, 11, 5, 19, 11, 19, 7,\n\t\t19, 5, 14, 19, 14, 4, 19, 4, 17,\n\t\t 1, 12, 14, 1, 14, 5, 1, 5, 9\n\t];\n\n\tPolyhedronBufferGeometry.call( this, vertices, indices, radius, detail );\n\n\tthis.type = 'DodecahedronBufferGeometry';\n\n\tthis.parameters = {\n\t\tradius: radius,\n\t\tdetail: detail\n\t};\n\n}\n\nDodecahedronBufferGeometry.prototype = Object.create( PolyhedronBufferGeometry.prototype );\nDodecahedronBufferGeometry.prototype.constructor = DodecahedronBufferGeometry;\n\n\nexport { DodecahedronBufferGeometry };\n","import { Geometry } from '../core/Geometry';\nimport { DodecahedronBufferGeometry } from './DodecahedronBufferGeometry';\n\n/**\n * @author Abe Pazos / https://hamoid.com\n */\n\nfunction DodecahedronGeometry( radius, detail ) {\n\n\tGeometry.call( this );\n\n\tthis.type = 'DodecahedronGeometry';\n\n\tthis.parameters = {\n\t\tradius: radius,\n\t\tdetail: detail\n\t};\n\n\tthis.fromBufferGeometry( new DodecahedronBufferGeometry( radius, detail ) );\n\tthis.mergeVertices();\n\n}\n\nDodecahedronGeometry.prototype = Object.create( Geometry.prototype );\nDodecahedronGeometry.prototype.constructor = DodecahedronGeometry;\n\n\nexport { DodecahedronGeometry };\n","import { Geometry } from '../core/Geometry';\nimport { PolyhedronBufferGeometry } from './PolyhedronBufferGeometry';\n\n/**\n * @author clockworkgeek / https://github.com/clockworkgeek\n * @author timothypratley / https://github.com/timothypratley\n * @author WestLangley / http://github.com/WestLangley\n*/\n\nfunction PolyhedronGeometry( vertices, indices, radius, detail ) {\n\n\tGeometry.call( this );\n\n\tthis.type = 'PolyhedronGeometry';\n\n\tthis.parameters = {\n\t\tvertices: vertices,\n\t\tindices: indices,\n\t\tradius: radius,\n\t\tdetail: detail\n\t};\n\n\tthis.fromBufferGeometry( new PolyhedronBufferGeometry( vertices, indices, radius, detail ) );\n\tthis.mergeVertices();\n\n}\n\nPolyhedronGeometry.prototype = Object.create( Geometry.prototype );\nPolyhedronGeometry.prototype.constructor = PolyhedronGeometry;\n\n\nexport { PolyhedronGeometry };\n","import { BufferGeometry } from '../core/BufferGeometry';\nimport { Float32Attribute, Uint16Attribute, Uint32Attribute } from '../core/BufferAttribute';\nimport { Vector2 } from '../math/Vector2';\nimport { Vector3 } from '../math/Vector3';\n\n/**\n * @author Mugen87 / https://github.com/Mugen87\n *\n * Creates a tube which extrudes along a 3d spline.\n *\n */\n\nfunction TubeBufferGeometry( path, tubularSegments, radius, radialSegments, closed ) {\n\n\tBufferGeometry.call( this );\n\n\tthis.type = 'TubeBufferGeometry';\n\n\tthis.parameters = {\n\t\tpath: path,\n\t\ttubularSegments: tubularSegments,\n\t\tradius: radius,\n\t\tradialSegments: radialSegments,\n\t\tclosed: closed\n\t};\n\n\ttubularSegments = tubularSegments || 64;\n\tradius = radius || 1;\n\tradialSegments = radialSegments || 8;\n\tclosed = closed || false;\n\n\tvar frames = path.computeFrenetFrames( tubularSegments, closed );\n\n\t// expose internals\n\n\tthis.tangents = frames.tangents;\n\tthis.normals = frames.normals;\n\tthis.binormals = frames.binormals;\n\n\t// helper variables\n\n\tvar vertex = new Vector3();\n\tvar normal = new Vector3();\n\tvar uv = new Vector2();\n\n\tvar i, j;\n\n\t// buffer\n\n\tvar vertices = [];\n\tvar normals = [];\n\tvar uvs = [];\n\tvar indices = [];\n\n\t// create buffer data\n\n\tgenerateBufferData();\n\n\t// build geometry\n\n\tthis.setIndex( ( indices.length > 65535 ? Uint32Attribute : Uint16Attribute )( indices, 1 ) );\n\tthis.addAttribute( 'position', Float32Attribute( vertices, 3 ) );\n\tthis.addAttribute( 'normal', Float32Attribute( normals, 3 ) );\n\tthis.addAttribute( 'uv', Float32Attribute( uvs, 2 ) );\n\n\t// functions\n\n\tfunction generateBufferData() {\n\n\t\tfor ( i = 0; i < tubularSegments; i ++ ) {\n\n\t\t\tgenerateSegment( i );\n\n\t\t}\n\n\t\t// if the geometry is not closed, generate the last row of vertices and normals\n\t\t// at the regular position on the given path\n\t\t//\n\t\t// if the geometry is closed, duplicate the first row of vertices and normals (uvs will differ)\n\n\t\tgenerateSegment( ( closed === false ) ? tubularSegments : 0 );\n\n\t\t// uvs are generated in a separate function.\n\t\t// this makes it easy compute correct values for closed geometries\n\n\t\tgenerateUVs();\n\n\t\t// finally create faces\n\n\t\tgenerateIndices();\n\n\t}\n\n\tfunction generateSegment( i ) {\n\n\t\t// we use getPointAt to sample evenly distributed points from the given path\n\n\t\tvar P = path.getPointAt( i / tubularSegments );\n\n\t\t// retrieve corresponding normal and binormal\n\n\t\tvar N = frames.normals[ i ];\n\t\tvar B = frames.binormals[ i ];\n\n\t\t// generate normals and vertices for the current segment\n\n\t\tfor ( j = 0; j <= radialSegments; j ++ ) {\n\n\t\t\tvar v = j / radialSegments * Math.PI * 2;\n\n\t\t\tvar sin = Math.sin( v );\n\t\t\tvar cos = - Math.cos( v );\n\n\t\t\t// normal\n\n\t\t\tnormal.x = ( cos * N.x + sin * B.x );\n\t\t\tnormal.y = ( cos * N.y + sin * B.y );\n\t\t\tnormal.z = ( cos * N.z + sin * B.z );\n\t\t\tnormal.normalize();\n\n\t\t\tnormals.push( normal.x, normal.y, normal.z );\n\n\t\t\t// vertex\n\n\t\t\tvertex.x = P.x + radius * normal.x;\n\t\t\tvertex.y = P.y + radius * normal.y;\n\t\t\tvertex.z = P.z + radius * normal.z;\n\n\t\t\tvertices.push( vertex.x, vertex.y, vertex.z );\n\n\t\t}\n\n\t}\n\n\tfunction generateIndices() {\n\n\t\tfor ( j = 1; j <= tubularSegments; j ++ ) {\n\n\t\t\tfor ( i = 1; i <= radialSegments; i ++ ) {\n\n\t\t\t\tvar a = ( radialSegments + 1 ) * ( j - 1 ) + ( i - 1 );\n\t\t\t\tvar b = ( radialSegments + 1 ) * j + ( i - 1 );\n\t\t\t\tvar c = ( radialSegments + 1 ) * j + i;\n\t\t\t\tvar d = ( radialSegments + 1 ) * ( j - 1 ) + i;\n\n\t\t\t\t// faces\n\n\t\t\t\tindices.push( a, b, d );\n\t\t\t\tindices.push( b, c, d );\n\n\t\t\t}\n\n\t\t}\n\n\t}\n\n\tfunction generateUVs() {\n\n\t\tfor ( i = 0; i <= tubularSegments; i ++ ) {\n\n\t\t\tfor ( j = 0; j <= radialSegments; j ++ ) {\n\n\t\t\t\tuv.x = i / tubularSegments;\n\t\t\t\tuv.y = j / radialSegments;\n\n\t\t\t\tuvs.push( uv.x, uv.y );\n\n\t\t\t}\n\n\t\t}\n\n\t}\n\n}\n\nTubeBufferGeometry.prototype = Object.create( BufferGeometry.prototype );\nTubeBufferGeometry.prototype.constructor = TubeBufferGeometry;\n\n\nexport { TubeBufferGeometry };\n","import { Geometry } from '../core/Geometry';\nimport { TubeBufferGeometry } from './TubeBufferGeometry';\n\n/**\n * @author oosmoxiecode / https://github.com/oosmoxiecode\n * @author WestLangley / https://github.com/WestLangley\n * @author zz85 / https://github.com/zz85\n * @author miningold / https://github.com/miningold\n * @author jonobr1 / https://github.com/jonobr1\n *\n * Creates a tube which extrudes along a 3d spline.\n */\n\nfunction TubeGeometry( path, tubularSegments, radius, radialSegments, closed, taper ) {\n\n\tGeometry.call( this );\n\n\tthis.type = 'TubeGeometry';\n\n\tthis.parameters = {\n\t\tpath: path,\n\t\ttubularSegments: tubularSegments,\n\t\tradius: radius,\n\t\tradialSegments: radialSegments,\n\t\tclosed: closed\n\t};\n\n\tif ( taper !== undefined ) console.warn( 'THREE.TubeGeometry: taper has been removed.' );\n\n\tvar bufferGeometry = new TubeBufferGeometry( path, tubularSegments, radius, radialSegments, closed );\n\n\t// expose internals\n\n\tthis.tangents = bufferGeometry.tangents;\n\tthis.normals = bufferGeometry.normals;\n\tthis.binormals = bufferGeometry.binormals;\n\n\t// create geometry\n\n\tthis.fromBufferGeometry( bufferGeometry );\n\tthis.mergeVertices();\n\n}\n\nTubeGeometry.prototype = Object.create( Geometry.prototype );\nTubeGeometry.prototype.constructor = TubeGeometry;\n\n\nexport { TubeGeometry };\n","import { BufferGeometry } from '../core/BufferGeometry';\nimport { Vector3 } from '../math/Vector3';\nimport { Vector2 } from '../math/Vector2';\nimport { BufferAttribute } from '../core/BufferAttribute';\n\n/**\n * @author Mugen87 / https://github.com/Mugen87\n *\n * see: http://www.blackpawn.com/texts/pqtorus/\n */\nfunction TorusKnotBufferGeometry( radius, tube, tubularSegments, radialSegments, p, q ) {\n\n\tBufferGeometry.call( this );\n\n\tthis.type = 'TorusKnotBufferGeometry';\n\n\tthis.parameters = {\n\t\tradius: radius,\n\t\ttube: tube,\n\t\ttubularSegments: tubularSegments,\n\t\tradialSegments: radialSegments,\n\t\tp: p,\n\t\tq: q\n\t};\n\n\tradius = radius || 100;\n\ttube = tube || 40;\n\ttubularSegments = Math.floor( tubularSegments ) || 64;\n\tradialSegments = Math.floor( radialSegments ) || 8;\n\tp = p || 2;\n\tq = q || 3;\n\n\t// used to calculate buffer length\n\tvar vertexCount = ( ( radialSegments + 1 ) * ( tubularSegments + 1 ) );\n\tvar indexCount = radialSegments * tubularSegments * 2 * 3;\n\n\t// buffers\n\tvar indices = new BufferAttribute( new ( indexCount > 65535 ? Uint32Array : Uint16Array )( indexCount ) , 1 );\n\tvar vertices = new BufferAttribute( new Float32Array( vertexCount * 3 ), 3 );\n\tvar normals = new BufferAttribute( new Float32Array( vertexCount * 3 ), 3 );\n\tvar uvs = new BufferAttribute( new Float32Array( vertexCount * 2 ), 2 );\n\n\t// helper variables\n\tvar i, j, index = 0, indexOffset = 0;\n\n\tvar vertex = new Vector3();\n\tvar normal = new Vector3();\n\tvar uv = new Vector2();\n\n\tvar P1 = new Vector3();\n\tvar P2 = new Vector3();\n\n\tvar B = new Vector3();\n\tvar T = new Vector3();\n\tvar N = new Vector3();\n\n\t// generate vertices, normals and uvs\n\n\tfor ( i = 0; i <= tubularSegments; ++ i ) {\n\n\t\t// the radian \"u\" is used to calculate the position on the torus curve of the current tubular segement\n\n\t\tvar u = i / tubularSegments * p * Math.PI * 2;\n\n\t\t// now we calculate two points. P1 is our current position on the curve, P2 is a little farther ahead.\n\t\t// these points are used to create a special \"coordinate space\", which is necessary to calculate the correct vertex positions\n\n\t\tcalculatePositionOnCurve( u, p, q, radius, P1 );\n\t\tcalculatePositionOnCurve( u + 0.01, p, q, radius, P2 );\n\n\t\t// calculate orthonormal basis\n\n\t\tT.subVectors( P2, P1 );\n\t\tN.addVectors( P2, P1 );\n\t\tB.crossVectors( T, N );\n\t\tN.crossVectors( B, T );\n\n\t\t// normalize B, N. T can be ignored, we don't use it\n\n\t\tB.normalize();\n\t\tN.normalize();\n\n\t\tfor ( j = 0; j <= radialSegments; ++ j ) {\n\n\t\t\t// now calculate the vertices. they are nothing more than an extrusion of the torus curve.\n\t\t\t// because we extrude a shape in the xy-plane, there is no need to calculate a z-value.\n\n\t\t\tvar v = j / radialSegments * Math.PI * 2;\n\t\t\tvar cx = - tube * Math.cos( v );\n\t\t\tvar cy = tube * Math.sin( v );\n\n\t\t\t// now calculate the final vertex position.\n\t\t\t// first we orient the extrusion with our basis vectos, then we add it to the current position on the curve\n\n\t\t\tvertex.x = P1.x + ( cx * N.x + cy * B.x );\n\t\t\tvertex.y = P1.y + ( cx * N.y + cy * B.y );\n\t\t\tvertex.z = P1.z + ( cx * N.z + cy * B.z );\n\n\t\t\t// vertex\n\t\t\tvertices.setXYZ( index, vertex.x, vertex.y, vertex.z );\n\n\t\t\t// normal (P1 is always the center/origin of the extrusion, thus we can use it to calculate the normal)\n\t\t\tnormal.subVectors( vertex, P1 ).normalize();\n\t\t\tnormals.setXYZ( index, normal.x, normal.y, normal.z );\n\n\t\t\t// uv\n\t\t\tuv.x = i / tubularSegments;\n\t\t\tuv.y = j / radialSegments;\n\t\t\tuvs.setXY( index, uv.x, uv.y );\n\n\t\t\t// increase index\n\t\t\tindex ++;\n\n\t\t}\n\n\t}\n\n\t// generate indices\n\n\tfor ( j = 1; j <= tubularSegments; j ++ ) {\n\n\t\tfor ( i = 1; i <= radialSegments; i ++ ) {\n\n\t\t\t// indices\n\t\t\tvar a = ( radialSegments + 1 ) * ( j - 1 ) + ( i - 1 );\n\t\t\tvar b = ( radialSegments + 1 ) * j + ( i - 1 );\n\t\t\tvar c = ( radialSegments + 1 ) * j + i;\n\t\t\tvar d = ( radialSegments + 1 ) * ( j - 1 ) + i;\n\n\t\t\t// face one\n\t\t\tindices.setX( indexOffset, a ); indexOffset++;\n\t\t\tindices.setX( indexOffset, b ); indexOffset++;\n\t\t\tindices.setX( indexOffset, d ); indexOffset++;\n\n\t\t\t// face two\n\t\t\tindices.setX( indexOffset, b ); indexOffset++;\n\t\t\tindices.setX( indexOffset, c ); indexOffset++;\n\t\t\tindices.setX( indexOffset, d ); indexOffset++;\n\n\t\t}\n\n\t}\n\n\t// build geometry\n\n\tthis.setIndex( indices );\n\tthis.addAttribute( 'position', vertices );\n\tthis.addAttribute( 'normal', normals );\n\tthis.addAttribute( 'uv', uvs );\n\n\t// this function calculates the current position on the torus curve\n\n\tfunction calculatePositionOnCurve( u, p, q, radius, position ) {\n\n\t\tvar cu = Math.cos( u );\n\t\tvar su = Math.sin( u );\n\t\tvar quOverP = q / p * u;\n\t\tvar cs = Math.cos( quOverP );\n\n\t\tposition.x = radius * ( 2 + cs ) * 0.5 * cu;\n\t\tposition.y = radius * ( 2 + cs ) * su * 0.5;\n\t\tposition.z = radius * Math.sin( quOverP ) * 0.5;\n\n\t}\n\n}\n\nTorusKnotBufferGeometry.prototype = Object.create( BufferGeometry.prototype );\nTorusKnotBufferGeometry.prototype.constructor = TorusKnotBufferGeometry;\n\n\nexport { TorusKnotBufferGeometry };\n","import { Geometry } from '../core/Geometry';\nimport { TorusKnotBufferGeometry } from './TorusKnotBufferGeometry';\n\n/**\n * @author oosmoxiecode\n */\n\nfunction TorusKnotGeometry( radius, tube, tubularSegments, radialSegments, p, q, heightScale ) {\n\n\tGeometry.call( this );\n\n\tthis.type = 'TorusKnotGeometry';\n\n\tthis.parameters = {\n\t\tradius: radius,\n\t\ttube: tube,\n\t\ttubularSegments: tubularSegments,\n\t\tradialSegments: radialSegments,\n\t\tp: p,\n\t\tq: q\n\t};\n\n\tif( heightScale !== undefined ) console.warn( 'THREE.TorusKnotGeometry: heightScale has been deprecated. Use .scale( x, y, z ) instead.' );\n\n\tthis.fromBufferGeometry( new TorusKnotBufferGeometry( radius, tube, tubularSegments, radialSegments, p, q ) );\n\tthis.mergeVertices();\n\n}\n\nTorusKnotGeometry.prototype = Object.create( Geometry.prototype );\nTorusKnotGeometry.prototype.constructor = TorusKnotGeometry;\n\n\nexport { TorusKnotGeometry };\n","import { BufferGeometry } from '../core/BufferGeometry';\nimport { BufferAttribute } from '../core/BufferAttribute';\nimport { Vector3 } from '../math/Vector3';\n\n/**\n * @author Mugen87 / https://github.com/Mugen87\n */\n\nfunction TorusBufferGeometry( radius, tube, radialSegments, tubularSegments, arc ) {\n\n\tBufferGeometry.call( this );\n\n\tthis.type = 'TorusBufferGeometry';\n\n\tthis.parameters = {\n\t\tradius: radius,\n\t\ttube: tube,\n\t\tradialSegments: radialSegments,\n\t\ttubularSegments: tubularSegments,\n\t\tarc: arc\n\t};\n\n\tradius = radius || 100;\n\ttube = tube || 40;\n\tradialSegments = Math.floor( radialSegments ) || 8;\n\ttubularSegments = Math.floor( tubularSegments ) || 6;\n\tarc = arc || Math.PI * 2;\n\n\t// used to calculate buffer length\n\tvar vertexCount = ( ( radialSegments + 1 ) * ( tubularSegments + 1 ) );\n\tvar indexCount = radialSegments * tubularSegments * 2 * 3;\n\n\t// buffers\n\tvar indices = new ( indexCount > 65535 ? Uint32Array : Uint16Array )( indexCount );\n\tvar vertices = new Float32Array( vertexCount * 3 );\n\tvar normals = new Float32Array( vertexCount * 3 );\n\tvar uvs = new Float32Array( vertexCount * 2 );\n\n\t// offset variables\n\tvar vertexBufferOffset = 0;\n\tvar uvBufferOffset = 0;\n\tvar indexBufferOffset = 0;\n\n\t// helper variables\n\tvar center = new Vector3();\n\tvar vertex = new Vector3();\n\tvar normal = new Vector3();\n\n\tvar j, i;\n\n\t// generate vertices, normals and uvs\n\n\tfor ( j = 0; j <= radialSegments; j ++ ) {\n\n\t\tfor ( i = 0; i <= tubularSegments; i ++ ) {\n\n\t\t\tvar u = i / tubularSegments * arc;\n\t\t\tvar v = j / radialSegments * Math.PI * 2;\n\n\t\t\t// vertex\n\t\t\tvertex.x = ( radius + tube * Math.cos( v ) ) * Math.cos( u );\n\t\t\tvertex.y = ( radius + tube * Math.cos( v ) ) * Math.sin( u );\n\t\t\tvertex.z = tube * Math.sin( v );\n\n\t\t\tvertices[ vertexBufferOffset ] = vertex.x;\n\t\t\tvertices[ vertexBufferOffset + 1 ] = vertex.y;\n\t\t\tvertices[ vertexBufferOffset + 2 ] = vertex.z;\n\n\t\t\t// this vector is used to calculate the normal\n\t\t\tcenter.x = radius * Math.cos( u );\n\t\t\tcenter.y = radius * Math.sin( u );\n\n\t\t\t// normal\n\t\t\tnormal.subVectors( vertex, center ).normalize();\n\n\t\t\tnormals[ vertexBufferOffset ] = normal.x;\n\t\t\tnormals[ vertexBufferOffset + 1 ] = normal.y;\n\t\t\tnormals[ vertexBufferOffset + 2 ] = normal.z;\n\n\t\t\t// uv\n\t\t\tuvs[ uvBufferOffset ] = i / tubularSegments;\n\t\t\tuvs[ uvBufferOffset + 1 ] = j / radialSegments;\n\n\t\t\t// update offsets\n\t\t\tvertexBufferOffset += 3;\n\t\t\tuvBufferOffset += 2;\n\n\t\t}\n\n\t}\n\n\t// generate indices\n\n\tfor ( j = 1; j <= radialSegments; j ++ ) {\n\n\t\tfor ( i = 1; i <= tubularSegments; i ++ ) {\n\n\t\t\t// indices\n\t\t\tvar a = ( tubularSegments + 1 ) * j + i - 1;\n\t\t\tvar b = ( tubularSegments + 1 ) * ( j - 1 ) + i - 1;\n\t\t\tvar c = ( tubularSegments + 1 ) * ( j - 1 ) + i;\n\t\t\tvar d = ( tubularSegments + 1 ) * j + i;\n\n\t\t\t// face one\n\t\t\tindices[ indexBufferOffset ] = a;\n\t\t\tindices[ indexBufferOffset + 1 ] = b;\n\t\t\tindices[ indexBufferOffset + 2 ] = d;\n\n\t\t\t// face two\n\t\t\tindices[ indexBufferOffset + 3 ] = b;\n\t\t\tindices[ indexBufferOffset + 4 ] = c;\n\t\t\tindices[ indexBufferOffset + 5 ] = d;\n\n\t\t\t// update offset\n\t\t\tindexBufferOffset += 6;\n\n\t\t}\n\n\t}\n\n\t// build geometry\n\tthis.setIndex( new BufferAttribute( indices, 1 ) );\n\tthis.addAttribute( 'position', new BufferAttribute( vertices, 3 ) );\n\tthis.addAttribute( 'normal', new BufferAttribute( normals, 3 ) );\n\tthis.addAttribute( 'uv', new BufferAttribute( uvs, 2 ) );\n\n}\n\nTorusBufferGeometry.prototype = Object.create( BufferGeometry.prototype );\nTorusBufferGeometry.prototype.constructor = TorusBufferGeometry;\n\n\nexport { TorusBufferGeometry };\n","import { Geometry } from '../core/Geometry';\nimport { TorusBufferGeometry } from './TorusBufferGeometry';\n\n/**\n * @author oosmoxiecode\n * @author mrdoob / http://mrdoob.com/\n * based on http://code.google.com/p/away3d/source/browse/trunk/fp10/Away3DLite/src/away3dlite/primitives/Torus.as?r=2888\n */\n\nfunction TorusGeometry( radius, tube, radialSegments, tubularSegments, arc ) {\n\n\tGeometry.call( this );\n\n\tthis.type = 'TorusGeometry';\n\n\tthis.parameters = {\n\t\tradius: radius,\n\t\ttube: tube,\n\t\tradialSegments: radialSegments,\n\t\ttubularSegments: tubularSegments,\n\t\tarc: arc\n\t};\n\n\tthis.fromBufferGeometry( new TorusBufferGeometry( radius, tube, radialSegments, tubularSegments, arc ) );\n\n}\n\nTorusGeometry.prototype = Object.create( Geometry.prototype );\nTorusGeometry.prototype.constructor = TorusGeometry;\n\n\nexport { TorusGeometry };\n","/**\n * @author zz85 / http://www.lab4games.net/zz85/blog\n */\n\nvar ShapeUtils = {\n\n\t// calculate area of the contour polygon\n\n\tarea: function ( contour ) {\n\n\t\tvar n = contour.length;\n\t\tvar a = 0.0;\n\n\t\tfor ( var p = n - 1, q = 0; q < n; p = q ++ ) {\n\n\t\t\ta += contour[ p ].x * contour[ q ].y - contour[ q ].x * contour[ p ].y;\n\n\t\t}\n\n\t\treturn a * 0.5;\n\n\t},\n\n\ttriangulate: ( function () {\n\n\t\t/**\n\t\t * This code is a quick port of code written in C++ which was submitted to\n\t\t * flipcode.com by John W. Ratcliff // July 22, 2000\n\t\t * See original code and more information here:\n\t\t * http://www.flipcode.com/archives/Efficient_Polygon_Triangulation.shtml\n\t\t *\n\t\t * ported to actionscript by Zevan Rosser\n\t\t * www.actionsnippet.com\n\t\t *\n\t\t * ported to javascript by Joshua Koo\n\t\t * http://www.lab4games.net/zz85/blog\n\t\t *\n\t\t */\n\n\t\tfunction snip( contour, u, v, w, n, verts ) {\n\n\t\t\tvar p;\n\t\t\tvar ax, ay, bx, by;\n\t\t\tvar cx, cy, px, py;\n\n\t\t\tax = contour[ verts[ u ] ].x;\n\t\t\tay = contour[ verts[ u ] ].y;\n\n\t\t\tbx = contour[ verts[ v ] ].x;\n\t\t\tby = contour[ verts[ v ] ].y;\n\n\t\t\tcx = contour[ verts[ w ] ].x;\n\t\t\tcy = contour[ verts[ w ] ].y;\n\n\t\t\tif ( ( bx - ax ) * ( cy - ay ) - ( by - ay ) * ( cx - ax ) <= 0 ) return false;\n\n\t\t\tvar aX, aY, bX, bY, cX, cY;\n\t\t\tvar apx, apy, bpx, bpy, cpx, cpy;\n\t\t\tvar cCROSSap, bCROSScp, aCROSSbp;\n\n\t\t\taX = cx - bx; aY = cy - by;\n\t\t\tbX = ax - cx; bY = ay - cy;\n\t\t\tcX = bx - ax; cY = by - ay;\n\n\t\t\tfor ( p = 0; p < n; p ++ ) {\n\n\t\t\t\tpx = contour[ verts[ p ] ].x;\n\t\t\t\tpy = contour[ verts[ p ] ].y;\n\n\t\t\t\tif ( ( ( px === ax ) && ( py === ay ) ) ||\n\t\t\t\t\t ( ( px === bx ) && ( py === by ) ) ||\n\t\t\t\t\t ( ( px === cx ) && ( py === cy ) ) )\tcontinue;\n\n\t\t\t\tapx = px - ax; apy = py - ay;\n\t\t\t\tbpx = px - bx; bpy = py - by;\n\t\t\t\tcpx = px - cx; cpy = py - cy;\n\n\t\t\t\t// see if p is inside triangle abc\n\n\t\t\t\taCROSSbp = aX * bpy - aY * bpx;\n\t\t\t\tcCROSSap = cX * apy - cY * apx;\n\t\t\t\tbCROSScp = bX * cpy - bY * cpx;\n\n\t\t\t\tif ( ( aCROSSbp >= - Number.EPSILON ) && ( bCROSScp >= - Number.EPSILON ) && ( cCROSSap >= - Number.EPSILON ) ) return false;\n\n\t\t\t}\n\n\t\t\treturn true;\n\n\t\t}\n\n\t\t// takes in an contour array and returns\n\n\t\treturn function triangulate( contour, indices ) {\n\n\t\t\tvar n = contour.length;\n\n\t\t\tif ( n < 3 ) return null;\n\n\t\t\tvar result = [],\n\t\t\t\tverts = [],\n\t\t\t\tvertIndices = [];\n\n\t\t\t/* we want a counter-clockwise polygon in verts */\n\n\t\t\tvar u, v, w;\n\n\t\t\tif ( ShapeUtils.area( contour ) > 0.0 ) {\n\n\t\t\t\tfor ( v = 0; v < n; v ++ ) verts[ v ] = v;\n\n\t\t\t} else {\n\n\t\t\t\tfor ( v = 0; v < n; v ++ ) verts[ v ] = ( n - 1 ) - v;\n\n\t\t\t}\n\n\t\t\tvar nv = n;\n\n\t\t\t/* remove nv - 2 vertices, creating 1 triangle every time */\n\n\t\t\tvar count = 2 * nv; /* error detection */\n\n\t\t\tfor ( v = nv - 1; nv > 2; ) {\n\n\t\t\t\t/* if we loop, it is probably a non-simple polygon */\n\n\t\t\t\tif ( ( count -- ) <= 0 ) {\n\n\t\t\t\t\t//** Triangulate: ERROR - probable bad polygon!\n\n\t\t\t\t\t//throw ( \"Warning, unable to triangulate polygon!\" );\n\t\t\t\t\t//return null;\n\t\t\t\t\t// Sometimes warning is fine, especially polygons are triangulated in reverse.\n\t\t\t\t\tconsole.warn( 'THREE.ShapeUtils: Unable to triangulate polygon! in triangulate()' );\n\n\t\t\t\t\tif ( indices ) return vertIndices;\n\t\t\t\t\treturn result;\n\n\t\t\t\t}\n\n\t\t\t\t/* three consecutive vertices in current polygon, */\n\n\t\t\t\tu = v; \t \tif ( nv <= u ) u = 0; /* previous */\n\t\t\t\tv = u + 1; if ( nv <= v ) v = 0; /* new v */\n\t\t\t\tw = v + 1; if ( nv <= w ) w = 0; /* next */\n\n\t\t\t\tif ( snip( contour, u, v, w, nv, verts ) ) {\n\n\t\t\t\t\tvar a, b, c, s, t;\n\n\t\t\t\t\t/* true names of the vertices */\n\n\t\t\t\t\ta = verts[ u ];\n\t\t\t\t\tb = verts[ v ];\n\t\t\t\t\tc = verts[ w ];\n\n\t\t\t\t\t/* output Triangle */\n\n\t\t\t\t\tresult.push( [ contour[ a ],\n\t\t\t\t\t\tcontour[ b ],\n\t\t\t\t\t\tcontour[ c ] ] );\n\n\n\t\t\t\t\tvertIndices.push( [ verts[ u ], verts[ v ], verts[ w ] ] );\n\n\t\t\t\t\t/* remove v from the remaining polygon */\n\n\t\t\t\t\tfor ( s = v, t = v + 1; t < nv; s ++, t ++ ) {\n\n\t\t\t\t\t\tverts[ s ] = verts[ t ];\n\n\t\t\t\t\t}\n\n\t\t\t\t\tnv --;\n\n\t\t\t\t\t/* reset error detection counter */\n\n\t\t\t\t\tcount = 2 * nv;\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t\tif ( indices ) return vertIndices;\n\t\t\treturn result;\n\n\t\t}\n\n\t} )(),\n\n\ttriangulateShape: function ( contour, holes ) {\n\n\t\tfunction removeDupEndPts(points) {\n\n\t\t\tvar l = points.length;\n\n\t\t\tif ( l > 2 && points[ l - 1 ].equals( points[ 0 ] ) ) {\n\n\t\t\t\tpoints.pop();\n\n\t\t\t}\n\n\t\t}\n\n\t\tremoveDupEndPts( contour );\n\t\tholes.forEach( removeDupEndPts );\n\n\t\tfunction point_in_segment_2D_colin( inSegPt1, inSegPt2, inOtherPt ) {\n\n\t\t\t// inOtherPt needs to be collinear to the inSegment\n\t\t\tif ( inSegPt1.x !== inSegPt2.x ) {\n\n\t\t\t\tif ( inSegPt1.x < inSegPt2.x ) {\n\n\t\t\t\t\treturn\t( ( inSegPt1.x <= inOtherPt.x ) && ( inOtherPt.x <= inSegPt2.x ) );\n\n\t\t\t\t} else {\n\n\t\t\t\t\treturn\t( ( inSegPt2.x <= inOtherPt.x ) && ( inOtherPt.x <= inSegPt1.x ) );\n\n\t\t\t\t}\n\n\t\t\t} else {\n\n\t\t\t\tif ( inSegPt1.y < inSegPt2.y ) {\n\n\t\t\t\t\treturn\t( ( inSegPt1.y <= inOtherPt.y ) && ( inOtherPt.y <= inSegPt2.y ) );\n\n\t\t\t\t} else {\n\n\t\t\t\t\treturn\t( ( inSegPt2.y <= inOtherPt.y ) && ( inOtherPt.y <= inSegPt1.y ) );\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t}\n\n\t\tfunction intersect_segments_2D( inSeg1Pt1, inSeg1Pt2, inSeg2Pt1, inSeg2Pt2, inExcludeAdjacentSegs ) {\n\n\t\t\tvar seg1dx = inSeg1Pt2.x - inSeg1Pt1.x, seg1dy = inSeg1Pt2.y - inSeg1Pt1.y;\n\t\t\tvar seg2dx = inSeg2Pt2.x - inSeg2Pt1.x, seg2dy = inSeg2Pt2.y - inSeg2Pt1.y;\n\n\t\t\tvar seg1seg2dx = inSeg1Pt1.x - inSeg2Pt1.x;\n\t\t\tvar seg1seg2dy = inSeg1Pt1.y - inSeg2Pt1.y;\n\n\t\t\tvar limit\t\t= seg1dy * seg2dx - seg1dx * seg2dy;\n\t\t\tvar perpSeg1\t= seg1dy * seg1seg2dx - seg1dx * seg1seg2dy;\n\n\t\t\tif ( Math.abs( limit ) > Number.EPSILON ) {\n\n\t\t\t\t// not parallel\n\n\t\t\t\tvar perpSeg2;\n\t\t\t\tif ( limit > 0 ) {\n\n\t\t\t\t\tif ( ( perpSeg1 < 0 ) || ( perpSeg1 > limit ) ) \t\treturn [];\n\t\t\t\t\tperpSeg2 = seg2dy * seg1seg2dx - seg2dx * seg1seg2dy;\n\t\t\t\t\tif ( ( perpSeg2 < 0 ) || ( perpSeg2 > limit ) ) \t\treturn [];\n\n\t\t\t\t} else {\n\n\t\t\t\t\tif ( ( perpSeg1 > 0 ) || ( perpSeg1 < limit ) ) \t\treturn [];\n\t\t\t\t\tperpSeg2 = seg2dy * seg1seg2dx - seg2dx * seg1seg2dy;\n\t\t\t\t\tif ( ( perpSeg2 > 0 ) || ( perpSeg2 < limit ) ) \t\treturn [];\n\n\t\t\t\t}\n\n\t\t\t\t// i.e. to reduce rounding errors\n\t\t\t\t// intersection at endpoint of segment#1?\n\t\t\t\tif ( perpSeg2 === 0 ) {\n\n\t\t\t\t\tif ( ( inExcludeAdjacentSegs ) &&\n\t\t\t\t\t\t ( ( perpSeg1 === 0 ) || ( perpSeg1 === limit ) ) )\t\treturn [];\n\t\t\t\t\treturn [ inSeg1Pt1 ];\n\n\t\t\t\t}\n\t\t\t\tif ( perpSeg2 === limit ) {\n\n\t\t\t\t\tif ( ( inExcludeAdjacentSegs ) &&\n\t\t\t\t\t\t ( ( perpSeg1 === 0 ) || ( perpSeg1 === limit ) ) )\t\treturn [];\n\t\t\t\t\treturn [ inSeg1Pt2 ];\n\n\t\t\t\t}\n\t\t\t\t// intersection at endpoint of segment#2?\n\t\t\t\tif ( perpSeg1 === 0 )\t\treturn [ inSeg2Pt1 ];\n\t\t\t\tif ( perpSeg1 === limit )\treturn [ inSeg2Pt2 ];\n\n\t\t\t\t// return real intersection point\n\t\t\t\tvar factorSeg1 = perpSeg2 / limit;\n\t\t\t\treturn\t[ { x: inSeg1Pt1.x + factorSeg1 * seg1dx,\n\t\t\t\t\t\t\ty: inSeg1Pt1.y + factorSeg1 * seg1dy } ];\n\n\t\t\t} else {\n\n\t\t\t\t// parallel or collinear\n\t\t\t\tif ( ( perpSeg1 !== 0 ) ||\n\t\t\t\t\t ( seg2dy * seg1seg2dx !== seg2dx * seg1seg2dy ) ) \t\t\treturn [];\n\n\t\t\t\t// they are collinear or degenerate\n\t\t\t\tvar seg1Pt = ( ( seg1dx === 0 ) && ( seg1dy === 0 ) );\t// segment1 is just a point?\n\t\t\t\tvar seg2Pt = ( ( seg2dx === 0 ) && ( seg2dy === 0 ) );\t// segment2 is just a point?\n\t\t\t\t// both segments are points\n\t\t\t\tif ( seg1Pt && seg2Pt ) {\n\n\t\t\t\t\tif ( ( inSeg1Pt1.x !== inSeg2Pt1.x ) ||\n\t\t\t\t\t\t ( inSeg1Pt1.y !== inSeg2Pt1.y ) )\t\treturn [];\t// they are distinct points\n\t\t\t\t\treturn [ inSeg1Pt1 ]; \t\t\t\t\t\t// they are the same point\n\n\t\t\t\t}\n\t\t\t\t// segment#1 is a single point\n\t\t\t\tif ( seg1Pt ) {\n\n\t\t\t\t\tif ( ! point_in_segment_2D_colin( inSeg2Pt1, inSeg2Pt2, inSeg1Pt1 ) )\t\treturn [];\t\t// but not in segment#2\n\t\t\t\t\treturn [ inSeg1Pt1 ];\n\n\t\t\t\t}\n\t\t\t\t// segment#2 is a single point\n\t\t\t\tif ( seg2Pt ) {\n\n\t\t\t\t\tif ( ! point_in_segment_2D_colin( inSeg1Pt1, inSeg1Pt2, inSeg2Pt1 ) )\t\treturn [];\t\t// but not in segment#1\n\t\t\t\t\treturn [ inSeg2Pt1 ];\n\n\t\t\t\t}\n\n\t\t\t\t// they are collinear segments, which might overlap\n\t\t\t\tvar seg1min, seg1max, seg1minVal, seg1maxVal;\n\t\t\t\tvar seg2min, seg2max, seg2minVal, seg2maxVal;\n\t\t\t\tif ( seg1dx !== 0 ) {\n\n\t\t\t\t\t// the segments are NOT on a vertical line\n\t\t\t\t\tif ( inSeg1Pt1.x < inSeg1Pt2.x ) {\n\n\t\t\t\t\t\tseg1min = inSeg1Pt1; seg1minVal = inSeg1Pt1.x;\n\t\t\t\t\t\tseg1max = inSeg1Pt2; seg1maxVal = inSeg1Pt2.x;\n\n\t\t\t\t\t} else {\n\n\t\t\t\t\t\tseg1min = inSeg1Pt2; seg1minVal = inSeg1Pt2.x;\n\t\t\t\t\t\tseg1max = inSeg1Pt1; seg1maxVal = inSeg1Pt1.x;\n\n\t\t\t\t\t}\n\t\t\t\t\tif ( inSeg2Pt1.x < inSeg2Pt2.x ) {\n\n\t\t\t\t\t\tseg2min = inSeg2Pt1; seg2minVal = inSeg2Pt1.x;\n\t\t\t\t\t\tseg2max = inSeg2Pt2; seg2maxVal = inSeg2Pt2.x;\n\n\t\t\t\t\t} else {\n\n\t\t\t\t\t\tseg2min = inSeg2Pt2; seg2minVal = inSeg2Pt2.x;\n\t\t\t\t\t\tseg2max = inSeg2Pt1; seg2maxVal = inSeg2Pt1.x;\n\n\t\t\t\t\t}\n\n\t\t\t\t} else {\n\n\t\t\t\t\t// the segments are on a vertical line\n\t\t\t\t\tif ( inSeg1Pt1.y < inSeg1Pt2.y ) {\n\n\t\t\t\t\t\tseg1min = inSeg1Pt1; seg1minVal = inSeg1Pt1.y;\n\t\t\t\t\t\tseg1max = inSeg1Pt2; seg1maxVal = inSeg1Pt2.y;\n\n\t\t\t\t\t} else {\n\n\t\t\t\t\t\tseg1min = inSeg1Pt2; seg1minVal = inSeg1Pt2.y;\n\t\t\t\t\t\tseg1max = inSeg1Pt1; seg1maxVal = inSeg1Pt1.y;\n\n\t\t\t\t\t}\n\t\t\t\t\tif ( inSeg2Pt1.y < inSeg2Pt2.y ) {\n\n\t\t\t\t\t\tseg2min = inSeg2Pt1; seg2minVal = inSeg2Pt1.y;\n\t\t\t\t\t\tseg2max = inSeg2Pt2; seg2maxVal = inSeg2Pt2.y;\n\n\t\t\t\t\t} else {\n\n\t\t\t\t\t\tseg2min = inSeg2Pt2; seg2minVal = inSeg2Pt2.y;\n\t\t\t\t\t\tseg2max = inSeg2Pt1; seg2maxVal = inSeg2Pt1.y;\n\n\t\t\t\t\t}\n\n\t\t\t\t}\n\t\t\t\tif ( seg1minVal <= seg2minVal ) {\n\n\t\t\t\t\tif ( seg1maxVal < seg2minVal )\treturn [];\n\t\t\t\t\tif ( seg1maxVal === seg2minVal )\t{\n\n\t\t\t\t\t\tif ( inExcludeAdjacentSegs )\t\treturn [];\n\t\t\t\t\t\treturn [ seg2min ];\n\n\t\t\t\t\t}\n\t\t\t\t\tif ( seg1maxVal <= seg2maxVal )\treturn [ seg2min, seg1max ];\n\t\t\t\t\treturn\t[ seg2min, seg2max ];\n\n\t\t\t\t} else {\n\n\t\t\t\t\tif ( seg1minVal > seg2maxVal )\treturn [];\n\t\t\t\t\tif ( seg1minVal === seg2maxVal )\t{\n\n\t\t\t\t\t\tif ( inExcludeAdjacentSegs )\t\treturn [];\n\t\t\t\t\t\treturn [ seg1min ];\n\n\t\t\t\t\t}\n\t\t\t\t\tif ( seg1maxVal <= seg2maxVal )\treturn [ seg1min, seg1max ];\n\t\t\t\t\treturn\t[ seg1min, seg2max ];\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t}\n\n\t\tfunction isPointInsideAngle( inVertex, inLegFromPt, inLegToPt, inOtherPt ) {\n\n\t\t\t// The order of legs is important\n\n\t\t\t// translation of all points, so that Vertex is at (0,0)\n\t\t\tvar legFromPtX\t= inLegFromPt.x - inVertex.x, legFromPtY\t= inLegFromPt.y - inVertex.y;\n\t\t\tvar legToPtX\t= inLegToPt.x\t- inVertex.x, legToPtY\t\t= inLegToPt.y\t- inVertex.y;\n\t\t\tvar otherPtX\t= inOtherPt.x\t- inVertex.x, otherPtY\t\t= inOtherPt.y\t- inVertex.y;\n\n\t\t\t// main angle >0: < 180 deg.; 0: 180 deg.; <0: > 180 deg.\n\t\t\tvar from2toAngle\t= legFromPtX * legToPtY - legFromPtY * legToPtX;\n\t\t\tvar from2otherAngle\t= legFromPtX * otherPtY - legFromPtY * otherPtX;\n\n\t\t\tif ( Math.abs( from2toAngle ) > Number.EPSILON ) {\n\n\t\t\t\t// angle != 180 deg.\n\n\t\t\t\tvar other2toAngle\t\t= otherPtX * legToPtY - otherPtY * legToPtX;\n\t\t\t\t// console.log( \"from2to: \" + from2toAngle + \", from2other: \" + from2otherAngle + \", other2to: \" + other2toAngle );\n\n\t\t\t\tif ( from2toAngle > 0 ) {\n\n\t\t\t\t\t// main angle < 180 deg.\n\t\t\t\t\treturn\t( ( from2otherAngle >= 0 ) && ( other2toAngle >= 0 ) );\n\n\t\t\t\t} else {\n\n\t\t\t\t\t// main angle > 180 deg.\n\t\t\t\t\treturn\t( ( from2otherAngle >= 0 ) || ( other2toAngle >= 0 ) );\n\n\t\t\t\t}\n\n\t\t\t} else {\n\n\t\t\t\t// angle == 180 deg.\n\t\t\t\t// console.log( \"from2to: 180 deg., from2other: \" + from2otherAngle );\n\t\t\t\treturn\t( from2otherAngle > 0 );\n\n\t\t\t}\n\n\t\t}\n\n\n\t\tfunction removeHoles( contour, holes ) {\n\n\t\t\tvar shape = contour.concat(); // work on this shape\n\t\t\tvar hole;\n\n\t\t\tfunction isCutLineInsideAngles( inShapeIdx, inHoleIdx ) {\n\n\t\t\t\t// Check if hole point lies within angle around shape point\n\t\t\t\tvar lastShapeIdx = shape.length - 1;\n\n\t\t\t\tvar prevShapeIdx = inShapeIdx - 1;\n\t\t\t\tif ( prevShapeIdx < 0 )\t\t\tprevShapeIdx = lastShapeIdx;\n\n\t\t\t\tvar nextShapeIdx = inShapeIdx + 1;\n\t\t\t\tif ( nextShapeIdx > lastShapeIdx )\tnextShapeIdx = 0;\n\n\t\t\t\tvar insideAngle = isPointInsideAngle( shape[ inShapeIdx ], shape[ prevShapeIdx ], shape[ nextShapeIdx ], hole[ inHoleIdx ] );\n\t\t\t\tif ( ! insideAngle ) {\n\n\t\t\t\t\t// console.log( \"Vertex (Shape): \" + inShapeIdx + \", Point: \" + hole[inHoleIdx].x + \"/\" + hole[inHoleIdx].y );\n\t\t\t\t\treturn\tfalse;\n\n\t\t\t\t}\n\n\t\t\t\t// Check if shape point lies within angle around hole point\n\t\t\t\tvar lastHoleIdx = hole.length - 1;\n\n\t\t\t\tvar prevHoleIdx = inHoleIdx - 1;\n\t\t\t\tif ( prevHoleIdx < 0 )\t\t\tprevHoleIdx = lastHoleIdx;\n\n\t\t\t\tvar nextHoleIdx = inHoleIdx + 1;\n\t\t\t\tif ( nextHoleIdx > lastHoleIdx )\tnextHoleIdx = 0;\n\n\t\t\t\tinsideAngle = isPointInsideAngle( hole[ inHoleIdx ], hole[ prevHoleIdx ], hole[ nextHoleIdx ], shape[ inShapeIdx ] );\n\t\t\t\tif ( ! insideAngle ) {\n\n\t\t\t\t\t// console.log( \"Vertex (Hole): \" + inHoleIdx + \", Point: \" + shape[inShapeIdx].x + \"/\" + shape[inShapeIdx].y );\n\t\t\t\t\treturn\tfalse;\n\n\t\t\t\t}\n\n\t\t\t\treturn\ttrue;\n\n\t\t\t}\n\n\t\t\tfunction intersectsShapeEdge( inShapePt, inHolePt ) {\n\n\t\t\t\t// checks for intersections with shape edges\n\t\t\t\tvar sIdx, nextIdx, intersection;\n\t\t\t\tfor ( sIdx = 0; sIdx < shape.length; sIdx ++ ) {\n\n\t\t\t\t\tnextIdx = sIdx + 1; nextIdx %= shape.length;\n\t\t\t\t\tintersection = intersect_segments_2D( inShapePt, inHolePt, shape[ sIdx ], shape[ nextIdx ], true );\n\t\t\t\t\tif ( intersection.length > 0 )\t\treturn\ttrue;\n\n\t\t\t\t}\n\n\t\t\t\treturn\tfalse;\n\n\t\t\t}\n\n\t\t\tvar indepHoles = [];\n\n\t\t\tfunction intersectsHoleEdge( inShapePt, inHolePt ) {\n\n\t\t\t\t// checks for intersections with hole edges\n\t\t\t\tvar ihIdx, chkHole,\n\t\t\t\t\thIdx, nextIdx, intersection;\n\t\t\t\tfor ( ihIdx = 0; ihIdx < indepHoles.length; ihIdx ++ ) {\n\n\t\t\t\t\tchkHole = holes[ indepHoles[ ihIdx ]];\n\t\t\t\t\tfor ( hIdx = 0; hIdx < chkHole.length; hIdx ++ ) {\n\n\t\t\t\t\t\tnextIdx = hIdx + 1; nextIdx %= chkHole.length;\n\t\t\t\t\t\tintersection = intersect_segments_2D( inShapePt, inHolePt, chkHole[ hIdx ], chkHole[ nextIdx ], true );\n\t\t\t\t\t\tif ( intersection.length > 0 )\t\treturn\ttrue;\n\n\t\t\t\t\t}\n\n\t\t\t\t}\n\t\t\t\treturn\tfalse;\n\n\t\t\t}\n\n\t\t\tvar holeIndex, shapeIndex,\n\t\t\t\tshapePt, holePt,\n\t\t\t\tholeIdx, cutKey, failedCuts = [],\n\t\t\t\ttmpShape1, tmpShape2,\n\t\t\t\ttmpHole1, tmpHole2;\n\n\t\t\tfor ( var h = 0, hl = holes.length; h < hl; h ++ ) {\n\n\t\t\t\tindepHoles.push( h );\n\n\t\t\t}\n\n\t\t\tvar minShapeIndex = 0;\n\t\t\tvar counter = indepHoles.length * 2;\n\t\t\twhile ( indepHoles.length > 0 ) {\n\n\t\t\t\tcounter --;\n\t\t\t\tif ( counter < 0 ) {\n\n\t\t\t\t\tconsole.log( \"Infinite Loop! Holes left:\" + indepHoles.length + \", Probably Hole outside Shape!\" );\n\t\t\t\t\tbreak;\n\n\t\t\t\t}\n\n\t\t\t\t// search for shape-vertex and hole-vertex,\n\t\t\t\t// which can be connected without intersections\n\t\t\t\tfor ( shapeIndex = minShapeIndex; shapeIndex < shape.length; shapeIndex ++ ) {\n\n\t\t\t\t\tshapePt = shape[ shapeIndex ];\n\t\t\t\t\tholeIndex\t= - 1;\n\n\t\t\t\t\t// search for hole which can be reached without intersections\n\t\t\t\t\tfor ( var h = 0; h < indepHoles.length; h ++ ) {\n\n\t\t\t\t\t\tholeIdx = indepHoles[ h ];\n\n\t\t\t\t\t\t// prevent multiple checks\n\t\t\t\t\t\tcutKey = shapePt.x + \":\" + shapePt.y + \":\" + holeIdx;\n\t\t\t\t\t\tif ( failedCuts[ cutKey ] !== undefined )\t\t\tcontinue;\n\n\t\t\t\t\t\thole = holes[ holeIdx ];\n\t\t\t\t\t\tfor ( var h2 = 0; h2 < hole.length; h2 ++ ) {\n\n\t\t\t\t\t\t\tholePt = hole[ h2 ];\n\t\t\t\t\t\t\tif ( ! isCutLineInsideAngles( shapeIndex, h2 ) )\t\tcontinue;\n\t\t\t\t\t\t\tif ( intersectsShapeEdge( shapePt, holePt ) )\t\tcontinue;\n\t\t\t\t\t\t\tif ( intersectsHoleEdge( shapePt, holePt ) )\t\tcontinue;\n\n\t\t\t\t\t\t\tholeIndex = h2;\n\t\t\t\t\t\t\tindepHoles.splice( h, 1 );\n\n\t\t\t\t\t\t\ttmpShape1 = shape.slice( 0, shapeIndex + 1 );\n\t\t\t\t\t\t\ttmpShape2 = shape.slice( shapeIndex );\n\t\t\t\t\t\t\ttmpHole1 = hole.slice( holeIndex );\n\t\t\t\t\t\t\ttmpHole2 = hole.slice( 0, holeIndex + 1 );\n\n\t\t\t\t\t\t\tshape = tmpShape1.concat( tmpHole1 ).concat( tmpHole2 ).concat( tmpShape2 );\n\n\t\t\t\t\t\t\tminShapeIndex = shapeIndex;\n\n\t\t\t\t\t\t\t// Debug only, to show the selected cuts\n\t\t\t\t\t\t\t// glob_CutLines.push( [ shapePt, holePt ] );\n\n\t\t\t\t\t\t\tbreak;\n\n\t\t\t\t\t\t}\n\t\t\t\t\t\tif ( holeIndex >= 0 )\tbreak;\t\t// hole-vertex found\n\n\t\t\t\t\t\tfailedCuts[ cutKey ] = true;\t\t\t// remember failure\n\n\t\t\t\t\t}\n\t\t\t\t\tif ( holeIndex >= 0 )\tbreak;\t\t// hole-vertex found\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t\treturn shape; \t\t\t/* shape with no holes */\n\n\t\t}\n\n\n\t\tvar i, il, f, face,\n\t\t\tkey, index,\n\t\t\tallPointsMap = {};\n\n\t\t// To maintain reference to old shape, one must match coordinates, or offset the indices from original arrays. It's probably easier to do the first.\n\n\t\tvar allpoints = contour.concat();\n\n\t\tfor ( var h = 0, hl = holes.length; h < hl; h ++ ) {\n\n\t\t\tArray.prototype.push.apply( allpoints, holes[ h ] );\n\n\t\t}\n\n\t\t//console.log( \"allpoints\",allpoints, allpoints.length );\n\n\t\t// prepare all points map\n\n\t\tfor ( i = 0, il = allpoints.length; i < il; i ++ ) {\n\n\t\t\tkey = allpoints[ i ].x + \":\" + allpoints[ i ].y;\n\n\t\t\tif ( allPointsMap[ key ] !== undefined ) {\n\n\t\t\t\tconsole.warn( \"THREE.ShapeUtils: Duplicate point\", key, i );\n\n\t\t\t}\n\n\t\t\tallPointsMap[ key ] = i;\n\n\t\t}\n\n\t\t// remove holes by cutting paths to holes and adding them to the shape\n\t\tvar shapeWithoutHoles = removeHoles( contour, holes );\n\n\t\tvar triangles = ShapeUtils.triangulate( shapeWithoutHoles, false ); // True returns indices for points of spooled shape\n\t\t//console.log( \"triangles\",triangles, triangles.length );\n\n\t\t// check all face vertices against all points map\n\n\t\tfor ( i = 0, il = triangles.length; i < il; i ++ ) {\n\n\t\t\tface = triangles[ i ];\n\n\t\t\tfor ( f = 0; f < 3; f ++ ) {\n\n\t\t\t\tkey = face[ f ].x + \":\" + face[ f ].y;\n\n\t\t\t\tindex = allPointsMap[ key ];\n\n\t\t\t\tif ( index !== undefined ) {\n\n\t\t\t\t\tface[ f ] = index;\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t}\n\n\t\treturn triangles.concat();\n\n\t},\n\n\tisClockWise: function ( pts ) {\n\n\t\treturn ShapeUtils.area( pts ) < 0;\n\n\t},\n\n\t// Bezier Curves formulas obtained from\n\t// http://en.wikipedia.org/wiki/B%C3%A9zier_curve\n\n\t// Quad Bezier Functions\n\n\tb2: ( function () {\n\n\t\tfunction b2p0( t, p ) {\n\n\t\t\tvar k = 1 - t;\n\t\t\treturn k * k * p;\n\n\t\t}\n\n\t\tfunction b2p1( t, p ) {\n\n\t\t\treturn 2 * ( 1 - t ) * t * p;\n\n\t\t}\n\n\t\tfunction b2p2( t, p ) {\n\n\t\t\treturn t * t * p;\n\n\t\t}\n\n\t\treturn function b2( t, p0, p1, p2 ) {\n\n\t\t\treturn b2p0( t, p0 ) + b2p1( t, p1 ) + b2p2( t, p2 );\n\n\t\t};\n\n\t} )(),\n\n\t// Cubic Bezier Functions\n\n\tb3: ( function () {\n\n\t\tfunction b3p0( t, p ) {\n\n\t\t\tvar k = 1 - t;\n\t\t\treturn k * k * k * p;\n\n\t\t}\n\n\t\tfunction b3p1( t, p ) {\n\n\t\t\tvar k = 1 - t;\n\t\t\treturn 3 * k * k * t * p;\n\n\t\t}\n\n\t\tfunction b3p2( t, p ) {\n\n\t\t\tvar k = 1 - t;\n\t\t\treturn 3 * k * t * t * p;\n\n\t\t}\n\n\t\tfunction b3p3( t, p ) {\n\n\t\t\treturn t * t * t * p;\n\n\t\t}\n\n\t\treturn function b3( t, p0, p1, p2, p3 ) {\n\n\t\t\treturn b3p0( t, p0 ) + b3p1( t, p1 ) + b3p2( t, p2 ) + b3p3( t, p3 );\n\n\t\t};\n\n\t} )()\n\n};\n\n\nexport { ShapeUtils };\n","import { Geometry } from '../core/Geometry';\nimport { Vector2 } from '../math/Vector2';\nimport { Face3 } from '../core/Face3';\nimport { Vector3 } from '../math/Vector3';\nimport { ShapeUtils } from '../extras/ShapeUtils';\n\n/**\n * @author zz85 / http://www.lab4games.net/zz85/blog\n *\n * Creates extruded geometry from a path shape.\n *\n * parameters = {\n *\n * curveSegments: , // number of points on the curves\n * steps: , // number of points for z-side extrusions / used for subdividing segments of extrude spline too\n * amount: , // Depth to extrude the shape\n *\n * bevelEnabled: , // turn on bevel\n * bevelThickness: , // how deep into the original shape bevel goes\n * bevelSize: , // how far from shape outline is bevel\n * bevelSegments: , // number of bevel layers\n *\n * extrudePath: // 3d spline path to extrude shape along. (creates Frames if .frames aren't defined)\n * frames: // containing arrays of tangents, normals, binormals\n *\n * uvGenerator: // object that provides UV generator functions\n *\n * }\n **/\n\nfunction ExtrudeGeometry( shapes, options ) {\n\n\tif ( typeof( shapes ) === \"undefined\" ) {\n\n\t\tshapes = [];\n\t\treturn;\n\n\t}\n\n\tGeometry.call( this );\n\n\tthis.type = 'ExtrudeGeometry';\n\n\tshapes = Array.isArray( shapes ) ? shapes : [ shapes ];\n\n\tthis.addShapeList( shapes, options );\n\n\tthis.computeFaceNormals();\n\n\t// can't really use automatic vertex normals\n\t// as then front and back sides get smoothed too\n\t// should do separate smoothing just for sides\n\n\t//this.computeVertexNormals();\n\n\t//console.log( \"took\", ( Date.now() - startTime ) );\n\n}\n\nExtrudeGeometry.prototype = Object.create( Geometry.prototype );\nExtrudeGeometry.prototype.constructor = ExtrudeGeometry;\n\nExtrudeGeometry.prototype.addShapeList = function ( shapes, options ) {\n\n\tvar sl = shapes.length;\n\n\tfor ( var s = 0; s < sl; s ++ ) {\n\n\t\tvar shape = shapes[ s ];\n\t\tthis.addShape( shape, options );\n\n\t}\n\n};\n\nExtrudeGeometry.prototype.addShape = function ( shape, options ) {\n\n\tvar amount = options.amount !== undefined ? options.amount : 100;\n\n\tvar bevelThickness = options.bevelThickness !== undefined ? options.bevelThickness : 6; // 10\n\tvar bevelSize = options.bevelSize !== undefined ? options.bevelSize : bevelThickness - 2; // 8\n\tvar bevelSegments = options.bevelSegments !== undefined ? options.bevelSegments : 3;\n\n\tvar bevelEnabled = options.bevelEnabled !== undefined ? options.bevelEnabled : true; // false\n\n\tvar curveSegments = options.curveSegments !== undefined ? options.curveSegments : 12;\n\n\tvar steps = options.steps !== undefined ? options.steps : 1;\n\n\tvar extrudePath = options.extrudePath;\n\tvar extrudePts, extrudeByPath = false;\n\n\t// Use default WorldUVGenerator if no UV generators are specified.\n\tvar uvgen = options.UVGenerator !== undefined ? options.UVGenerator : ExtrudeGeometry.WorldUVGenerator;\n\n\tvar splineTube, binormal, normal, position2;\n\tif ( extrudePath ) {\n\n\t\textrudePts = extrudePath.getSpacedPoints( steps );\n\n\t\textrudeByPath = true;\n\t\tbevelEnabled = false; // bevels not supported for path extrusion\n\n\t\t// SETUP TNB variables\n\n\t\t// TODO1 - have a .isClosed in spline?\n\n\t\tsplineTube = options.frames !== undefined ? options.frames : extrudePath.computeFrenetFrames( steps, false );\n\n\t\t// console.log(splineTube, 'splineTube', splineTube.normals.length, 'steps', steps, 'extrudePts', extrudePts.length);\n\n\t\tbinormal = new Vector3();\n\t\tnormal = new Vector3();\n\t\tposition2 = new Vector3();\n\n\t}\n\n\t// Safeguards if bevels are not enabled\n\n\tif ( ! bevelEnabled ) {\n\n\t\tbevelSegments = 0;\n\t\tbevelThickness = 0;\n\t\tbevelSize = 0;\n\n\t}\n\n\t// Variables initialization\n\n\tvar ahole, h, hl; // looping of holes\n\tvar scope = this;\n\n\tvar shapesOffset = this.vertices.length;\n\n\tvar shapePoints = shape.extractPoints( curveSegments );\n\n\tvar vertices = shapePoints.shape;\n\tvar holes = shapePoints.holes;\n\n\tvar reverse = ! ShapeUtils.isClockWise( vertices );\n\n\tif ( reverse ) {\n\n\t\tvertices = vertices.reverse();\n\n\t\t// Maybe we should also check if holes are in the opposite direction, just to be safe ...\n\n\t\tfor ( h = 0, hl = holes.length; h < hl; h ++ ) {\n\n\t\t\tahole = holes[ h ];\n\n\t\t\tif ( ShapeUtils.isClockWise( ahole ) ) {\n\n\t\t\t\tholes[ h ] = ahole.reverse();\n\n\t\t\t}\n\n\t\t}\n\n\t\treverse = false; // If vertices are in order now, we shouldn't need to worry about them again (hopefully)!\n\n\t}\n\n\n\tvar faces = ShapeUtils.triangulateShape( vertices, holes );\n\n\t/* Vertices */\n\n\tvar contour = vertices; // vertices has all points but contour has only points of circumference\n\n\tfor ( h = 0, hl = holes.length; h < hl; h ++ ) {\n\n\t\tahole = holes[ h ];\n\n\t\tvertices = vertices.concat( ahole );\n\n\t}\n\n\n\tfunction scalePt2( pt, vec, size ) {\n\n\t\tif ( ! vec ) console.error( \"THREE.ExtrudeGeometry: vec does not exist\" );\n\n\t\treturn vec.clone().multiplyScalar( size ).add( pt );\n\n\t}\n\n\tvar b, bs, t, z,\n\t\tvert, vlen = vertices.length,\n\t\tface, flen = faces.length;\n\n\n\t// Find directions for point movement\n\n\n\tfunction getBevelVec( inPt, inPrev, inNext ) {\n\n\t\t// computes for inPt the corresponding point inPt' on a new contour\n\t\t// shifted by 1 unit (length of normalized vector) to the left\n\t\t// if we walk along contour clockwise, this new contour is outside the old one\n\t\t//\n\t\t// inPt' is the intersection of the two lines parallel to the two\n\t\t// adjacent edges of inPt at a distance of 1 unit on the left side.\n\n\t\tvar v_trans_x, v_trans_y, shrink_by = 1;\t\t// resulting translation vector for inPt\n\n\t\t// good reading for geometry algorithms (here: line-line intersection)\n\t\t// http://geomalgorithms.com/a05-_intersect-1.html\n\n\t\tvar v_prev_x = inPt.x - inPrev.x, v_prev_y = inPt.y - inPrev.y;\n\t\tvar v_next_x = inNext.x - inPt.x, v_next_y = inNext.y - inPt.y;\n\n\t\tvar v_prev_lensq = ( v_prev_x * v_prev_x + v_prev_y * v_prev_y );\n\n\t\t// check for collinear edges\n\t\tvar collinear0 = ( v_prev_x * v_next_y - v_prev_y * v_next_x );\n\n\t\tif ( Math.abs( collinear0 ) > Number.EPSILON ) {\n\n\t\t\t// not collinear\n\n\t\t\t// length of vectors for normalizing\n\n\t\t\tvar v_prev_len = Math.sqrt( v_prev_lensq );\n\t\t\tvar v_next_len = Math.sqrt( v_next_x * v_next_x + v_next_y * v_next_y );\n\n\t\t\t// shift adjacent points by unit vectors to the left\n\n\t\t\tvar ptPrevShift_x = ( inPrev.x - v_prev_y / v_prev_len );\n\t\t\tvar ptPrevShift_y = ( inPrev.y + v_prev_x / v_prev_len );\n\n\t\t\tvar ptNextShift_x = ( inNext.x - v_next_y / v_next_len );\n\t\t\tvar ptNextShift_y = ( inNext.y + v_next_x / v_next_len );\n\n\t\t\t// scaling factor for v_prev to intersection point\n\n\t\t\tvar sf = ( ( ptNextShift_x - ptPrevShift_x ) * v_next_y -\n\t\t\t\t\t\t( ptNextShift_y - ptPrevShift_y ) * v_next_x ) /\n\t\t\t\t\t ( v_prev_x * v_next_y - v_prev_y * v_next_x );\n\n\t\t\t// vector from inPt to intersection point\n\n\t\t\tv_trans_x = ( ptPrevShift_x + v_prev_x * sf - inPt.x );\n\t\t\tv_trans_y = ( ptPrevShift_y + v_prev_y * sf - inPt.y );\n\n\t\t\t// Don't normalize!, otherwise sharp corners become ugly\n\t\t\t// but prevent crazy spikes\n\t\t\tvar v_trans_lensq = ( v_trans_x * v_trans_x + v_trans_y * v_trans_y );\n\t\t\tif ( v_trans_lensq <= 2 ) {\n\n\t\t\t\treturn\tnew Vector2( v_trans_x, v_trans_y );\n\n\t\t\t} else {\n\n\t\t\t\tshrink_by = Math.sqrt( v_trans_lensq / 2 );\n\n\t\t\t}\n\n\t\t} else {\n\n\t\t\t// handle special case of collinear edges\n\n\t\t\tvar direction_eq = false;\t\t// assumes: opposite\n\t\t\tif ( v_prev_x > Number.EPSILON ) {\n\n\t\t\t\tif ( v_next_x > Number.EPSILON ) {\n\n\t\t\t\t\tdirection_eq = true;\n\n\t\t\t\t}\n\n\t\t\t} else {\n\n\t\t\t\tif ( v_prev_x < - Number.EPSILON ) {\n\n\t\t\t\t\tif ( v_next_x < - Number.EPSILON ) {\n\n\t\t\t\t\t\tdirection_eq = true;\n\n\t\t\t\t\t}\n\n\t\t\t\t} else {\n\n\t\t\t\t\tif ( Math.sign( v_prev_y ) === Math.sign( v_next_y ) ) {\n\n\t\t\t\t\t\tdirection_eq = true;\n\n\t\t\t\t\t}\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t\tif ( direction_eq ) {\n\n\t\t\t\t// console.log(\"Warning: lines are a straight sequence\");\n\t\t\t\tv_trans_x = - v_prev_y;\n\t\t\t\tv_trans_y = v_prev_x;\n\t\t\t\tshrink_by = Math.sqrt( v_prev_lensq );\n\n\t\t\t} else {\n\n\t\t\t\t// console.log(\"Warning: lines are a straight spike\");\n\t\t\t\tv_trans_x = v_prev_x;\n\t\t\t\tv_trans_y = v_prev_y;\n\t\t\t\tshrink_by = Math.sqrt( v_prev_lensq / 2 );\n\n\t\t\t}\n\n\t\t}\n\n\t\treturn\tnew Vector2( v_trans_x / shrink_by, v_trans_y / shrink_by );\n\n\t}\n\n\n\tvar contourMovements = [];\n\n\tfor ( var i = 0, il = contour.length, j = il - 1, k = i + 1; i < il; i ++, j ++, k ++ ) {\n\n\t\tif ( j === il ) j = 0;\n\t\tif ( k === il ) k = 0;\n\n\t\t// (j)---(i)---(k)\n\t\t// console.log('i,j,k', i, j , k)\n\n\t\tcontourMovements[ i ] = getBevelVec( contour[ i ], contour[ j ], contour[ k ] );\n\n\t}\n\n\tvar holesMovements = [], oneHoleMovements, verticesMovements = contourMovements.concat();\n\n\tfor ( h = 0, hl = holes.length; h < hl; h ++ ) {\n\n\t\tahole = holes[ h ];\n\n\t\toneHoleMovements = [];\n\n\t\tfor ( i = 0, il = ahole.length, j = il - 1, k = i + 1; i < il; i ++, j ++, k ++ ) {\n\n\t\t\tif ( j === il ) j = 0;\n\t\t\tif ( k === il ) k = 0;\n\n\t\t\t// (j)---(i)---(k)\n\t\t\toneHoleMovements[ i ] = getBevelVec( ahole[ i ], ahole[ j ], ahole[ k ] );\n\n\t\t}\n\n\t\tholesMovements.push( oneHoleMovements );\n\t\tverticesMovements = verticesMovements.concat( oneHoleMovements );\n\n\t}\n\n\n\t// Loop bevelSegments, 1 for the front, 1 for the back\n\n\tfor ( b = 0; b < bevelSegments; b ++ ) {\n\n\t\t//for ( b = bevelSegments; b > 0; b -- ) {\n\n\t\tt = b / bevelSegments;\n\t\tz = bevelThickness * Math.cos( t * Math.PI / 2 );\n\t\tbs = bevelSize * Math.sin( t * Math.PI / 2 );\n\n\t\t// contract shape\n\n\t\tfor ( i = 0, il = contour.length; i < il; i ++ ) {\n\n\t\t\tvert = scalePt2( contour[ i ], contourMovements[ i ], bs );\n\n\t\t\tv( vert.x, vert.y, - z );\n\n\t\t}\n\n\t\t// expand holes\n\n\t\tfor ( h = 0, hl = holes.length; h < hl; h ++ ) {\n\n\t\t\tahole = holes[ h ];\n\t\t\toneHoleMovements = holesMovements[ h ];\n\n\t\t\tfor ( i = 0, il = ahole.length; i < il; i ++ ) {\n\n\t\t\t\tvert = scalePt2( ahole[ i ], oneHoleMovements[ i ], bs );\n\n\t\t\t\tv( vert.x, vert.y, - z );\n\n\t\t\t}\n\n\t\t}\n\n\t}\n\n\tbs = bevelSize;\n\n\t// Back facing vertices\n\n\tfor ( i = 0; i < vlen; i ++ ) {\n\n\t\tvert = bevelEnabled ? scalePt2( vertices[ i ], verticesMovements[ i ], bs ) : vertices[ i ];\n\n\t\tif ( ! extrudeByPath ) {\n\n\t\t\tv( vert.x, vert.y, 0 );\n\n\t\t} else {\n\n\t\t\t// v( vert.x, vert.y + extrudePts[ 0 ].y, extrudePts[ 0 ].x );\n\n\t\t\tnormal.copy( splineTube.normals[ 0 ] ).multiplyScalar( vert.x );\n\t\t\tbinormal.copy( splineTube.binormals[ 0 ] ).multiplyScalar( vert.y );\n\n\t\t\tposition2.copy( extrudePts[ 0 ] ).add( normal ).add( binormal );\n\n\t\t\tv( position2.x, position2.y, position2.z );\n\n\t\t}\n\n\t}\n\n\t// Add stepped vertices...\n\t// Including front facing vertices\n\n\tvar s;\n\n\tfor ( s = 1; s <= steps; s ++ ) {\n\n\t\tfor ( i = 0; i < vlen; i ++ ) {\n\n\t\t\tvert = bevelEnabled ? scalePt2( vertices[ i ], verticesMovements[ i ], bs ) : vertices[ i ];\n\n\t\t\tif ( ! extrudeByPath ) {\n\n\t\t\t\tv( vert.x, vert.y, amount / steps * s );\n\n\t\t\t} else {\n\n\t\t\t\t// v( vert.x, vert.y + extrudePts[ s - 1 ].y, extrudePts[ s - 1 ].x );\n\n\t\t\t\tnormal.copy( splineTube.normals[ s ] ).multiplyScalar( vert.x );\n\t\t\t\tbinormal.copy( splineTube.binormals[ s ] ).multiplyScalar( vert.y );\n\n\t\t\t\tposition2.copy( extrudePts[ s ] ).add( normal ).add( binormal );\n\n\t\t\t\tv( position2.x, position2.y, position2.z );\n\n\t\t\t}\n\n\t\t}\n\n\t}\n\n\n\t// Add bevel segments planes\n\n\t//for ( b = 1; b <= bevelSegments; b ++ ) {\n\tfor ( b = bevelSegments - 1; b >= 0; b -- ) {\n\n\t\tt = b / bevelSegments;\n\t\tz = bevelThickness * Math.cos ( t * Math.PI / 2 );\n\t\tbs = bevelSize * Math.sin( t * Math.PI / 2 );\n\n\t\t// contract shape\n\n\t\tfor ( i = 0, il = contour.length; i < il; i ++ ) {\n\n\t\t\tvert = scalePt2( contour[ i ], contourMovements[ i ], bs );\n\t\t\tv( vert.x, vert.y, amount + z );\n\n\t\t}\n\n\t\t// expand holes\n\n\t\tfor ( h = 0, hl = holes.length; h < hl; h ++ ) {\n\n\t\t\tahole = holes[ h ];\n\t\t\toneHoleMovements = holesMovements[ h ];\n\n\t\t\tfor ( i = 0, il = ahole.length; i < il; i ++ ) {\n\n\t\t\t\tvert = scalePt2( ahole[ i ], oneHoleMovements[ i ], bs );\n\n\t\t\t\tif ( ! extrudeByPath ) {\n\n\t\t\t\t\tv( vert.x, vert.y, amount + z );\n\n\t\t\t\t} else {\n\n\t\t\t\t\tv( vert.x, vert.y + extrudePts[ steps - 1 ].y, extrudePts[ steps - 1 ].x + z );\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t}\n\n\t}\n\n\t/* Faces */\n\n\t// Top and bottom faces\n\n\tbuildLidFaces();\n\n\t// Sides faces\n\n\tbuildSideFaces();\n\n\n\t///// Internal functions\n\n\tfunction buildLidFaces() {\n\n\t\tif ( bevelEnabled ) {\n\n\t\t\tvar layer = 0; // steps + 1\n\t\t\tvar offset = vlen * layer;\n\n\t\t\t// Bottom faces\n\n\t\t\tfor ( i = 0; i < flen; i ++ ) {\n\n\t\t\t\tface = faces[ i ];\n\t\t\t\tf3( face[ 2 ] + offset, face[ 1 ] + offset, face[ 0 ] + offset );\n\n\t\t\t}\n\n\t\t\tlayer = steps + bevelSegments * 2;\n\t\t\toffset = vlen * layer;\n\n\t\t\t// Top faces\n\n\t\t\tfor ( i = 0; i < flen; i ++ ) {\n\n\t\t\t\tface = faces[ i ];\n\t\t\t\tf3( face[ 0 ] + offset, face[ 1 ] + offset, face[ 2 ] + offset );\n\n\t\t\t}\n\n\t\t} else {\n\n\t\t\t// Bottom faces\n\n\t\t\tfor ( i = 0; i < flen; i ++ ) {\n\n\t\t\t\tface = faces[ i ];\n\t\t\t\tf3( face[ 2 ], face[ 1 ], face[ 0 ] );\n\n\t\t\t}\n\n\t\t\t// Top faces\n\n\t\t\tfor ( i = 0; i < flen; i ++ ) {\n\n\t\t\t\tface = faces[ i ];\n\t\t\t\tf3( face[ 0 ] + vlen * steps, face[ 1 ] + vlen * steps, face[ 2 ] + vlen * steps );\n\n\t\t\t}\n\n\t\t}\n\n\t}\n\n\t// Create faces for the z-sides of the shape\n\n\tfunction buildSideFaces() {\n\n\t\tvar layeroffset = 0;\n\t\tsidewalls( contour, layeroffset );\n\t\tlayeroffset += contour.length;\n\n\t\tfor ( h = 0, hl = holes.length; h < hl; h ++ ) {\n\n\t\t\tahole = holes[ h ];\n\t\t\tsidewalls( ahole, layeroffset );\n\n\t\t\t//, true\n\t\t\tlayeroffset += ahole.length;\n\n\t\t}\n\n\t}\n\n\tfunction sidewalls( contour, layeroffset ) {\n\n\t\tvar j, k;\n\t\ti = contour.length;\n\n\t\twhile ( -- i >= 0 ) {\n\n\t\t\tj = i;\n\t\t\tk = i - 1;\n\t\t\tif ( k < 0 ) k = contour.length - 1;\n\n\t\t\t//console.log('b', i,j, i-1, k,vertices.length);\n\n\t\t\tvar s = 0, sl = steps + bevelSegments * 2;\n\n\t\t\tfor ( s = 0; s < sl; s ++ ) {\n\n\t\t\t\tvar slen1 = vlen * s;\n\t\t\t\tvar slen2 = vlen * ( s + 1 );\n\n\t\t\t\tvar a = layeroffset + j + slen1,\n\t\t\t\t\tb = layeroffset + k + slen1,\n\t\t\t\t\tc = layeroffset + k + slen2,\n\t\t\t\t\td = layeroffset + j + slen2;\n\n\t\t\t\tf4( a, b, c, d, contour, s, sl, j, k );\n\n\t\t\t}\n\n\t\t}\n\n\t}\n\n\n\tfunction v( x, y, z ) {\n\n\t\tscope.vertices.push( new Vector3( x, y, z ) );\n\n\t}\n\n\tfunction f3( a, b, c ) {\n\n\t\ta += shapesOffset;\n\t\tb += shapesOffset;\n\t\tc += shapesOffset;\n\n\t\tscope.faces.push( new Face3( a, b, c, null, null, 0 ) );\n\n\t\tvar uvs = uvgen.generateTopUV( scope, a, b, c );\n\n\t\tscope.faceVertexUvs[ 0 ].push( uvs );\n\n\t}\n\n\tfunction f4( a, b, c, d, wallContour, stepIndex, stepsLength, contourIndex1, contourIndex2 ) {\n\n\t\ta += shapesOffset;\n\t\tb += shapesOffset;\n\t\tc += shapesOffset;\n\t\td += shapesOffset;\n\n\t\tscope.faces.push( new Face3( a, b, d, null, null, 1 ) );\n\t\tscope.faces.push( new Face3( b, c, d, null, null, 1 ) );\n\n\t\tvar uvs = uvgen.generateSideWallUV( scope, a, b, c, d );\n\n\t\tscope.faceVertexUvs[ 0 ].push( [ uvs[ 0 ], uvs[ 1 ], uvs[ 3 ] ] );\n\t\tscope.faceVertexUvs[ 0 ].push( [ uvs[ 1 ], uvs[ 2 ], uvs[ 3 ] ] );\n\n\t}\n\n};\n\nExtrudeGeometry.WorldUVGenerator = {\n\n\tgenerateTopUV: function ( geometry, indexA, indexB, indexC ) {\n\n\t\tvar vertices = geometry.vertices;\n\n\t\tvar a = vertices[ indexA ];\n\t\tvar b = vertices[ indexB ];\n\t\tvar c = vertices[ indexC ];\n\n\t\treturn [\n\t\t\tnew Vector2( a.x, a.y ),\n\t\t\tnew Vector2( b.x, b.y ),\n\t\t\tnew Vector2( c.x, c.y )\n\t\t];\n\n\t},\n\n\tgenerateSideWallUV: function ( geometry, indexA, indexB, indexC, indexD ) {\n\n\t\tvar vertices = geometry.vertices;\n\n\t\tvar a = vertices[ indexA ];\n\t\tvar b = vertices[ indexB ];\n\t\tvar c = vertices[ indexC ];\n\t\tvar d = vertices[ indexD ];\n\n\t\tif ( Math.abs( a.y - b.y ) < 0.01 ) {\n\n\t\t\treturn [\n\t\t\t\tnew Vector2( a.x, 1 - a.z ),\n\t\t\t\tnew Vector2( b.x, 1 - b.z ),\n\t\t\t\tnew Vector2( c.x, 1 - c.z ),\n\t\t\t\tnew Vector2( d.x, 1 - d.z )\n\t\t\t];\n\n\t\t} else {\n\n\t\t\treturn [\n\t\t\t\tnew Vector2( a.y, 1 - a.z ),\n\t\t\t\tnew Vector2( b.y, 1 - b.z ),\n\t\t\t\tnew Vector2( c.y, 1 - c.z ),\n\t\t\t\tnew Vector2( d.y, 1 - d.z )\n\t\t\t];\n\n\t\t}\n\n\t}\n};\n\n\nexport { ExtrudeGeometry };\n","import { ExtrudeGeometry } from './ExtrudeGeometry';\nimport { Geometry } from '../core/Geometry';\n\n/**\n * @author zz85 / http://www.lab4games.net/zz85/blog\n * @author alteredq / http://alteredqualia.com/\n *\n * Text = 3D Text\n *\n * parameters = {\n * font: , // font\n *\n * size: , // size of the text\n * height: , // thickness to extrude text\n * curveSegments: , // number of points on the curves\n *\n * bevelEnabled: , // turn on bevel\n * bevelThickness: , // how deep into text bevel goes\n * bevelSize: // how far from text outline is bevel\n * }\n */\n\nfunction TextGeometry( text, parameters ) {\n\n\tparameters = parameters || {};\n\n\tvar font = parameters.font;\n\n\tif ( (font && font.isFont) === false ) {\n\n\t\tconsole.error( 'THREE.TextGeometry: font parameter is not an instance of THREE.Font.' );\n\t\treturn new Geometry();\n\n\t}\n\n\tvar shapes = font.generateShapes( text, parameters.size, parameters.curveSegments );\n\n\t// translate parameters to ExtrudeGeometry API\n\n\tparameters.amount = parameters.height !== undefined ? parameters.height : 50;\n\n\t// defaults\n\n\tif ( parameters.bevelThickness === undefined ) parameters.bevelThickness = 10;\n\tif ( parameters.bevelSize === undefined ) parameters.bevelSize = 8;\n\tif ( parameters.bevelEnabled === undefined ) parameters.bevelEnabled = false;\n\n\tExtrudeGeometry.call( this, shapes, parameters );\n\n\tthis.type = 'TextGeometry';\n\n}\n\nTextGeometry.prototype = Object.create( ExtrudeGeometry.prototype );\nTextGeometry.prototype.constructor = TextGeometry;\n\n\nexport { TextGeometry };\n","import { BufferGeometry } from '../core/BufferGeometry';\nimport { Vector3 } from '../math/Vector3';\nimport { Sphere } from '../math/Sphere';\nimport { Uint16Attribute, Uint32Attribute, BufferAttribute } from '../core/BufferAttribute';\n\n/**\n * @author benaadams / https://twitter.com/ben_a_adams\n * based on THREE.SphereGeometry\n */\n\nfunction SphereBufferGeometry( radius, widthSegments, heightSegments, phiStart, phiLength, thetaStart, thetaLength ) {\n\n\tBufferGeometry.call( this );\n\n\tthis.type = 'SphereBufferGeometry';\n\n\tthis.parameters = {\n\t\tradius: radius,\n\t\twidthSegments: widthSegments,\n\t\theightSegments: heightSegments,\n\t\tphiStart: phiStart,\n\t\tphiLength: phiLength,\n\t\tthetaStart: thetaStart,\n\t\tthetaLength: thetaLength\n\t};\n\n\tradius = radius || 50;\n\n\twidthSegments = Math.max( 3, Math.floor( widthSegments ) || 8 );\n\theightSegments = Math.max( 2, Math.floor( heightSegments ) || 6 );\n\n\tphiStart = phiStart !== undefined ? phiStart : 0;\n\tphiLength = phiLength !== undefined ? phiLength : Math.PI * 2;\n\n\tthetaStart = thetaStart !== undefined ? thetaStart : 0;\n\tthetaLength = thetaLength !== undefined ? thetaLength : Math.PI;\n\n\tvar thetaEnd = thetaStart + thetaLength;\n\n\tvar vertexCount = ( ( widthSegments + 1 ) * ( heightSegments + 1 ) );\n\n\tvar positions = new BufferAttribute( new Float32Array( vertexCount * 3 ), 3 );\n\tvar normals = new BufferAttribute( new Float32Array( vertexCount * 3 ), 3 );\n\tvar uvs = new BufferAttribute( new Float32Array( vertexCount * 2 ), 2 );\n\n\tvar index = 0, vertices = [], normal = new Vector3();\n\n\tfor ( var y = 0; y <= heightSegments; y ++ ) {\n\n\t\tvar verticesRow = [];\n\n\t\tvar v = y / heightSegments;\n\n\t\tfor ( var x = 0; x <= widthSegments; x ++ ) {\n\n\t\t\tvar u = x / widthSegments;\n\n\t\t\tvar px = - radius * Math.cos( phiStart + u * phiLength ) * Math.sin( thetaStart + v * thetaLength );\n\t\t\tvar py = radius * Math.cos( thetaStart + v * thetaLength );\n\t\t\tvar pz = radius * Math.sin( phiStart + u * phiLength ) * Math.sin( thetaStart + v * thetaLength );\n\n\t\t\tnormal.set( px, py, pz ).normalize();\n\n\t\t\tpositions.setXYZ( index, px, py, pz );\n\t\t\tnormals.setXYZ( index, normal.x, normal.y, normal.z );\n\t\t\tuvs.setXY( index, u, 1 - v );\n\n\t\t\tverticesRow.push( index );\n\n\t\t\tindex ++;\n\n\t\t}\n\n\t\tvertices.push( verticesRow );\n\n\t}\n\n\tvar indices = [];\n\n\tfor ( var y = 0; y < heightSegments; y ++ ) {\n\n\t\tfor ( var x = 0; x < widthSegments; x ++ ) {\n\n\t\t\tvar v1 = vertices[ y ][ x + 1 ];\n\t\t\tvar v2 = vertices[ y ][ x ];\n\t\t\tvar v3 = vertices[ y + 1 ][ x ];\n\t\t\tvar v4 = vertices[ y + 1 ][ x + 1 ];\n\n\t\t\tif ( y !== 0 || thetaStart > 0 ) indices.push( v1, v2, v4 );\n\t\t\tif ( y !== heightSegments - 1 || thetaEnd < Math.PI ) indices.push( v2, v3, v4 );\n\n\t\t}\n\n\t}\n\n\tthis.setIndex( new ( positions.count > 65535 ? Uint32Attribute : Uint16Attribute )( indices, 1 ) );\n\tthis.addAttribute( 'position', positions );\n\tthis.addAttribute( 'normal', normals );\n\tthis.addAttribute( 'uv', uvs );\n\n\tthis.boundingSphere = new Sphere( new Vector3(), radius );\n\n}\n\nSphereBufferGeometry.prototype = Object.create( BufferGeometry.prototype );\nSphereBufferGeometry.prototype.constructor = SphereBufferGeometry;\n\n\nexport { SphereBufferGeometry };\n","import { Geometry } from '../core/Geometry';\nimport { SphereBufferGeometry } from './SphereBufferGeometry';\n\n/**\n * @author mrdoob / http://mrdoob.com/\n */\n\nfunction SphereGeometry( radius, widthSegments, heightSegments, phiStart, phiLength, thetaStart, thetaLength ) {\n\n\tGeometry.call( this );\n\n\tthis.type = 'SphereGeometry';\n\n\tthis.parameters = {\n\t\tradius: radius,\n\t\twidthSegments: widthSegments,\n\t\theightSegments: heightSegments,\n\t\tphiStart: phiStart,\n\t\tphiLength: phiLength,\n\t\tthetaStart: thetaStart,\n\t\tthetaLength: thetaLength\n\t};\n\n\tthis.fromBufferGeometry( new SphereBufferGeometry( radius, widthSegments, heightSegments, phiStart, phiLength, thetaStart, thetaLength ) );\n\n}\n\nSphereGeometry.prototype = Object.create( Geometry.prototype );\nSphereGeometry.prototype.constructor = SphereGeometry;\n\n\nexport { SphereGeometry };\n","import { BufferGeometry } from '../core/BufferGeometry';\nimport { Vector2 } from '../math/Vector2';\nimport { Vector3 } from '../math/Vector3';\nimport { BufferAttribute } from '../core/BufferAttribute';\n\n/**\n * @author Mugen87 / https://github.com/Mugen87\n */\n\nfunction RingBufferGeometry( innerRadius, outerRadius, thetaSegments, phiSegments, thetaStart, thetaLength ) {\n\n\tBufferGeometry.call( this );\n\n\tthis.type = 'RingBufferGeometry';\n\n\tthis.parameters = {\n\t\tinnerRadius: innerRadius,\n\t\touterRadius: outerRadius,\n\t\tthetaSegments: thetaSegments,\n\t\tphiSegments: phiSegments,\n\t\tthetaStart: thetaStart,\n\t\tthetaLength: thetaLength\n\t};\n\n\tinnerRadius = innerRadius || 20;\n\touterRadius = outerRadius || 50;\n\n\tthetaStart = thetaStart !== undefined ? thetaStart : 0;\n\tthetaLength = thetaLength !== undefined ? thetaLength : Math.PI * 2;\n\n\tthetaSegments = thetaSegments !== undefined ? Math.max( 3, thetaSegments ) : 8;\n\tphiSegments = phiSegments !== undefined ? Math.max( 1, phiSegments ) : 1;\n\n\t// these are used to calculate buffer length\n\tvar vertexCount = ( thetaSegments + 1 ) * ( phiSegments + 1 );\n\tvar indexCount = thetaSegments * phiSegments * 2 * 3;\n\n\t// buffers\n\tvar indices = new BufferAttribute( new ( indexCount > 65535 ? Uint32Array : Uint16Array )( indexCount ) , 1 );\n\tvar vertices = new BufferAttribute( new Float32Array( vertexCount * 3 ), 3 );\n\tvar normals = new BufferAttribute( new Float32Array( vertexCount * 3 ), 3 );\n\tvar uvs = new BufferAttribute( new Float32Array( vertexCount * 2 ), 2 );\n\n\t// some helper variables\n\tvar index = 0, indexOffset = 0, segment;\n\tvar radius = innerRadius;\n\tvar radiusStep = ( ( outerRadius - innerRadius ) / phiSegments );\n\tvar vertex = new Vector3();\n\tvar uv = new Vector2();\n\tvar j, i;\n\n\t// generate vertices, normals and uvs\n\n\t// values are generate from the inside of the ring to the outside\n\n\tfor ( j = 0; j <= phiSegments; j ++ ) {\n\n\t\tfor ( i = 0; i <= thetaSegments; i ++ ) {\n\n\t\t\tsegment = thetaStart + i / thetaSegments * thetaLength;\n\n\t\t\t// vertex\n\t\t\tvertex.x = radius * Math.cos( segment );\n\t\t\tvertex.y = radius * Math.sin( segment );\n\t\t\tvertices.setXYZ( index, vertex.x, vertex.y, vertex.z );\n\n\t\t\t// normal\n\t\t\tnormals.setXYZ( index, 0, 0, 1 );\n\n\t\t\t// uv\n\t\t\tuv.x = ( vertex.x / outerRadius + 1 ) / 2;\n\t\t\tuv.y = ( vertex.y / outerRadius + 1 ) / 2;\n\t\t\tuvs.setXY( index, uv.x, uv.y );\n\n\t\t\t// increase index\n\t\t\tindex++;\n\n\t\t}\n\n\t\t// increase the radius for next row of vertices\n\t\tradius += radiusStep;\n\n\t}\n\n\t// generate indices\n\n\tfor ( j = 0; j < phiSegments; j ++ ) {\n\n\t\tvar thetaSegmentLevel = j * ( thetaSegments + 1 );\n\n\t\tfor ( i = 0; i < thetaSegments; i ++ ) {\n\n\t\t\tsegment = i + thetaSegmentLevel;\n\n\t\t\t// indices\n\t\t\tvar a = segment;\n\t\t\tvar b = segment + thetaSegments + 1;\n\t\t\tvar c = segment + thetaSegments + 2;\n\t\t\tvar d = segment + 1;\n\n\t\t\t// face one\n\t\t\tindices.setX( indexOffset, a ); indexOffset++;\n\t\t\tindices.setX( indexOffset, b ); indexOffset++;\n\t\t\tindices.setX( indexOffset, c ); indexOffset++;\n\n\t\t\t// face two\n\t\t\tindices.setX( indexOffset, a ); indexOffset++;\n\t\t\tindices.setX( indexOffset, c ); indexOffset++;\n\t\t\tindices.setX( indexOffset, d ); indexOffset++;\n\n\t\t}\n\n\t}\n\n\t// build geometry\n\n\tthis.setIndex( indices );\n\tthis.addAttribute( 'position', vertices );\n\tthis.addAttribute( 'normal', normals );\n\tthis.addAttribute( 'uv', uvs );\n\n}\n\nRingBufferGeometry.prototype = Object.create( BufferGeometry.prototype );\nRingBufferGeometry.prototype.constructor = RingBufferGeometry;\n\n\nexport { RingBufferGeometry };\n","import { Geometry } from '../core/Geometry';\nimport { RingBufferGeometry } from './RingBufferGeometry';\n\n/**\n * @author Kaleb Murphy\n */\n\nfunction RingGeometry( innerRadius, outerRadius, thetaSegments, phiSegments, thetaStart, thetaLength ) {\n\n\tGeometry.call( this );\n\n\tthis.type = 'RingGeometry';\n\n\tthis.parameters = {\n\t\tinnerRadius: innerRadius,\n\t\touterRadius: outerRadius,\n\t\tthetaSegments: thetaSegments,\n\t\tphiSegments: phiSegments,\n\t\tthetaStart: thetaStart,\n\t\tthetaLength: thetaLength\n\t};\n\n\tthis.fromBufferGeometry( new RingBufferGeometry( innerRadius, outerRadius, thetaSegments, phiSegments, thetaStart, thetaLength ) );\n\n}\n\nRingGeometry.prototype = Object.create( Geometry.prototype );\nRingGeometry.prototype.constructor = RingGeometry;\n\n\nexport { RingGeometry };\n","import { Geometry } from '../core/Geometry';\nimport { PlaneBufferGeometry } from './PlaneBufferGeometry';\n\n/**\n * @author mrdoob / http://mrdoob.com/\n * based on http://papervision3d.googlecode.com/svn/trunk/as3/trunk/src/org/papervision3d/objects/primitives/Plane.as\n */\n\nfunction PlaneGeometry( width, height, widthSegments, heightSegments ) {\n\n\tGeometry.call( this );\n\n\tthis.type = 'PlaneGeometry';\n\n\tthis.parameters = {\n\t\twidth: width,\n\t\theight: height,\n\t\twidthSegments: widthSegments,\n\t\theightSegments: heightSegments\n\t};\n\n\tthis.fromBufferGeometry( new PlaneBufferGeometry( width, height, widthSegments, heightSegments ) );\n\n}\n\nPlaneGeometry.prototype = Object.create( Geometry.prototype );\nPlaneGeometry.prototype.constructor = PlaneGeometry;\n\n\nexport { PlaneGeometry };\n","import { BufferGeometry } from '../core/BufferGeometry';\nimport { Vector3 } from '../math/Vector3';\nimport { Vector2 } from '../math/Vector2';\nimport { BufferAttribute } from '../core/BufferAttribute';\nimport { _Math } from '../math/Math';\n\n/**\n * @author Mugen87 / https://github.com/Mugen87\n */\n\n // points - to create a closed torus, one must use a set of points\n // like so: [ a, b, c, d, a ], see first is the same as last.\n // segments - the number of circumference segments to create\n // phiStart - the starting radian\n // phiLength - the radian (0 to 2PI) range of the lathed section\n // 2PI is a closed lathe, less than 2PI is a portion.\n\nfunction LatheBufferGeometry( points, segments, phiStart, phiLength ) {\n\n\tBufferGeometry.call( this );\n\n\tthis.type = 'LatheBufferGeometry';\n\n\tthis.parameters = {\n\t\tpoints: points,\n\t\tsegments: segments,\n\t\tphiStart: phiStart,\n\t\tphiLength: phiLength\n\t};\n\n\tsegments = Math.floor( segments ) || 12;\n\tphiStart = phiStart || 0;\n\tphiLength = phiLength || Math.PI * 2;\n\n\t// clamp phiLength so it's in range of [ 0, 2PI ]\n\tphiLength = _Math.clamp( phiLength, 0, Math.PI * 2 );\n\n\t// these are used to calculate buffer length\n\tvar vertexCount = ( segments + 1 ) * points.length;\n\tvar indexCount = segments * points.length * 2 * 3;\n\n\t// buffers\n\tvar indices = new BufferAttribute( new ( indexCount > 65535 ? Uint32Array : Uint16Array )( indexCount ) , 1 );\n\tvar vertices = new BufferAttribute( new Float32Array( vertexCount * 3 ), 3 );\n\tvar uvs = new BufferAttribute( new Float32Array( vertexCount * 2 ), 2 );\n\n\t// helper variables\n\tvar index = 0, indexOffset = 0, base;\n\tvar inverseSegments = 1.0 / segments;\n\tvar vertex = new Vector3();\n\tvar uv = new Vector2();\n\tvar i, j;\n\n\t// generate vertices and uvs\n\n\tfor ( i = 0; i <= segments; i ++ ) {\n\n\t\tvar phi = phiStart + i * inverseSegments * phiLength;\n\n\t\tvar sin = Math.sin( phi );\n\t\tvar cos = Math.cos( phi );\n\n\t\tfor ( j = 0; j <= ( points.length - 1 ); j ++ ) {\n\n\t\t\t// vertex\n\t\t\tvertex.x = points[ j ].x * sin;\n\t\t\tvertex.y = points[ j ].y;\n\t\t\tvertex.z = points[ j ].x * cos;\n\t\t\tvertices.setXYZ( index, vertex.x, vertex.y, vertex.z );\n\n\t\t\t// uv\n\t\t\tuv.x = i / segments;\n\t\t\tuv.y = j / ( points.length - 1 );\n\t\t\tuvs.setXY( index, uv.x, uv.y );\n\n\t\t\t// increase index\n\t\t\tindex ++;\n\n\t\t}\n\n\t}\n\n\t// generate indices\n\n\tfor ( i = 0; i < segments; i ++ ) {\n\n\t\tfor ( j = 0; j < ( points.length - 1 ); j ++ ) {\n\n\t\t\tbase = j + i * points.length;\n\n\t\t\t// indices\n\t\t\tvar a = base;\n\t\t\tvar b = base + points.length;\n\t\t\tvar c = base + points.length + 1;\n\t\t\tvar d = base + 1;\n\n\t\t\t// face one\n\t\t\tindices.setX( indexOffset, a ); indexOffset++;\n\t\t\tindices.setX( indexOffset, b ); indexOffset++;\n\t\t\tindices.setX( indexOffset, d ); indexOffset++;\n\n\t\t\t// face two\n\t\t\tindices.setX( indexOffset, b ); indexOffset++;\n\t\t\tindices.setX( indexOffset, c ); indexOffset++;\n\t\t\tindices.setX( indexOffset, d ); indexOffset++;\n\n\t\t}\n\n\t}\n\n\t// build geometry\n\n\tthis.setIndex( indices );\n\tthis.addAttribute( 'position', vertices );\n\tthis.addAttribute( 'uv', uvs );\n\n\t// generate normals\n\n\tthis.computeVertexNormals();\n\n\t// if the geometry is closed, we need to average the normals along the seam.\n\t// because the corresponding vertices are identical (but still have different UVs).\n\n\tif( phiLength === Math.PI * 2 ) {\n\n\t\tvar normals = this.attributes.normal.array;\n\t\tvar n1 = new Vector3();\n\t\tvar n2 = new Vector3();\n\t\tvar n = new Vector3();\n\n\t\t// this is the buffer offset for the last line of vertices\n\t\tbase = segments * points.length * 3;\n\n\t\tfor( i = 0, j = 0; i < points.length; i ++, j += 3 ) {\n\n\t\t\t// select the normal of the vertex in the first line\n\t\t\tn1.x = normals[ j + 0 ];\n\t\t\tn1.y = normals[ j + 1 ];\n\t\t\tn1.z = normals[ j + 2 ];\n\n\t\t\t// select the normal of the vertex in the last line\n\t\t\tn2.x = normals[ base + j + 0 ];\n\t\t\tn2.y = normals[ base + j + 1 ];\n\t\t\tn2.z = normals[ base + j + 2 ];\n\n\t\t\t// average normals\n\t\t\tn.addVectors( n1, n2 ).normalize();\n\n\t\t\t// assign the new values to both normals\n\t\t\tnormals[ j + 0 ] = normals[ base + j + 0 ] = n.x;\n\t\t\tnormals[ j + 1 ] = normals[ base + j + 1 ] = n.y;\n\t\t\tnormals[ j + 2 ] = normals[ base + j + 2 ] = n.z;\n\n\t\t} // next row\n\n\t}\n\n}\n\nLatheBufferGeometry.prototype = Object.create( BufferGeometry.prototype );\nLatheBufferGeometry.prototype.constructor = LatheBufferGeometry;\n\n\nexport { LatheBufferGeometry };\n","import { Geometry } from '../core/Geometry';\nimport { LatheBufferGeometry } from './LatheBufferGeometry';\n\n/**\n * @author astrodud / http://astrodud.isgreat.org/\n * @author zz85 / https://github.com/zz85\n * @author bhouston / http://clara.io\n */\n\n// points - to create a closed torus, one must use a set of points\n// like so: [ a, b, c, d, a ], see first is the same as last.\n// segments - the number of circumference segments to create\n// phiStart - the starting radian\n// phiLength - the radian (0 to 2PI) range of the lathed section\n// 2PI is a closed lathe, less than 2PI is a portion.\n\nfunction LatheGeometry( points, segments, phiStart, phiLength ) {\n\n\tGeometry.call( this );\n\n\tthis.type = 'LatheGeometry';\n\n\tthis.parameters = {\n\t\tpoints: points,\n\t\tsegments: segments,\n\t\tphiStart: phiStart,\n\t\tphiLength: phiLength\n\t};\n\n\tthis.fromBufferGeometry( new LatheBufferGeometry( points, segments, phiStart, phiLength ) );\n\tthis.mergeVertices();\n\n}\n\nLatheGeometry.prototype = Object.create( Geometry.prototype );\nLatheGeometry.prototype.constructor = LatheGeometry;\n\n\nexport { LatheGeometry };\n","import { BufferGeometry } from '../core/BufferGeometry';\nimport { Float32Attribute, Uint16Attribute, Uint32Attribute } from '../core/BufferAttribute';\nimport { ShapeUtils } from '../extras/ShapeUtils';\n\n/**\n * @author Mugen87 / https://github.com/Mugen87\n *\n * Creates a one-sided polygonal geometry from one or more shapes.\n *\n **/\n\nfunction ShapeBufferGeometry( shapes, curveSegments ) {\n\n\tBufferGeometry.call( this );\n\n\tthis.type = 'ShapeBufferGeometry';\n\n\tthis.parameters = {\n\t\tshapes: shapes,\n\t\tcurveSegments: curveSegments\n\t};\n\n\tcurveSegments = curveSegments || 12;\n\n\tvar vertices = [];\n\tvar normals = [];\n\tvar uvs = [];\n\tvar indices = [];\n\n\tvar groupStart = 0;\n\tvar groupCount = 0;\n\n\t// allow single and array values for \"shapes\" parameter\n\n\tif ( Array.isArray( shapes ) === false ) {\n\n\t\taddShape( shapes );\n\n\t} else {\n\n\t\tfor ( var i = 0; i < shapes.length; i++ ) {\n\n\t\t\taddShape( shapes[ i ] );\n\n\t\t\tthis.addGroup( groupStart, groupCount, i ); // enables MultiMaterial support\n\n\t\t\tgroupStart += groupCount;\n\t\t\tgroupCount = 0;\n\n\t\t}\n\n\t}\n\n\t// build geometry\n\n\tthis.setIndex( ( indices.length > 65535 ? Uint32Attribute : Uint16Attribute )( indices, 1 ) );\n\tthis.addAttribute( 'position', Float32Attribute( vertices, 3 ) );\n\tthis.addAttribute( 'normal', Float32Attribute( normals, 3 ) );\n\tthis.addAttribute( 'uv', Float32Attribute( uvs, 2 ) );\n\n\n\t// helper functions\n\n\tfunction addShape( shape ) {\n\n\t\tvar i, l, shapeHole;\n\n\t\tvar indexOffset = vertices.length / 3;\n\t\tvar points = shape.extractPoints( curveSegments );\n\n\t\tvar shapeVertices = points.shape;\n\t\tvar shapeHoles = points.holes;\n\n\t\t// check direction of vertices\n\n\t\tif ( ShapeUtils.isClockWise( shapeVertices ) === false ) {\n\n\t\t\tshapeVertices = shapeVertices.reverse();\n\n\t\t\t// also check if holes are in the opposite direction\n\n\t\t\tfor ( i = 0, l = shapeHoles.length; i < l; i ++ ) {\n\n\t\t\t\tshapeHole = shapeHoles[ i ];\n\n\t\t\t\tif ( ShapeUtils.isClockWise( shapeHole ) === true ) {\n\n\t\t\t\t\tshapeHoles[ i ] = shapeHole.reverse();\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t}\n\n\t\tvar faces = ShapeUtils.triangulateShape( shapeVertices, shapeHoles );\n\n\t\t// join vertices of inner and outer paths to a single array\n\n\t\tfor ( i = 0, l = shapeHoles.length; i < l; i ++ ) {\n\n\t\t\tshapeHole = shapeHoles[ i ];\n\t\t\tshapeVertices = shapeVertices.concat( shapeHole );\n\n\t\t}\n\n\t\t// vertices, normals, uvs\n\n\t\tfor ( i = 0, l = shapeVertices.length; i < l; i ++ ) {\n\n\t\t\tvar vertex = shapeVertices[ i ];\n\n\t\t\tvertices.push( vertex.x, vertex.y, 0 );\n\t\t\tnormals.push( 0, 0, 1 );\n\t\t\tuvs.push( vertex.x, vertex.y ); // world uvs\n\n\t\t}\n\n\t\t// incides\n\n\t\tfor ( i = 0, l = faces.length; i < l; i ++ ) {\n\n\t\t\tvar face = faces[ i ];\n\n\t\t\tvar a = face[ 0 ] + indexOffset;\n\t\t\tvar b = face[ 1 ] + indexOffset;\n\t\t\tvar c = face[ 2 ] + indexOffset;\n\n\t\t\tindices.push( a, b, c );\n\t\t\tgroupCount += 3;\n\n\t\t}\n\n\t}\n\n}\n\nShapeBufferGeometry.prototype = Object.create( BufferGeometry.prototype );\nShapeBufferGeometry.prototype.constructor = ShapeBufferGeometry;\n\n\nexport { ShapeBufferGeometry };\n","import { Geometry } from '../core/Geometry';\nimport { ShapeBufferGeometry } from './ShapeBufferGeometry';\n\n/**\n * @author jonobr1 / http://jonobr1.com\n *\n * Creates a one-sided polygonal geometry from a path shape.\n *\n **/\n\nfunction ShapeGeometry( shapes, curveSegments ) {\n\n\tGeometry.call( this );\n\n\tthis.type = 'ShapeGeometry';\n\n\tif ( typeof curveSegments === 'object' ) {\n\n\t\tconsole.warn( 'THREE.ShapeGeometry: Options parameter has been removed.' );\n\n\t\tcurveSegments = curveSegments.curveSegments;\n\n\t}\n\n\tthis.parameters = {\n\t\tshapes: shapes,\n\t\tcurveSegments: curveSegments\n\t};\n\n\tthis.fromBufferGeometry( new ShapeBufferGeometry( shapes, curveSegments ) );\n\tthis.mergeVertices();\n\n}\n\nShapeGeometry.prototype = Object.create( Geometry.prototype );\nShapeGeometry.prototype.constructor = ShapeGeometry;\n\n\nexport { ShapeGeometry };\n","import { BufferGeometry } from '../core/BufferGeometry';\nimport { BufferAttribute } from '../core/BufferAttribute';\nimport { Geometry } from '../core/Geometry';\nimport { _Math } from '../math/Math';\n\n/**\n * @author WestLangley / http://github.com/WestLangley\n */\n\nfunction EdgesGeometry( geometry, thresholdAngle ) {\n\n\tBufferGeometry.call( this );\n\n\tthresholdAngle = ( thresholdAngle !== undefined ) ? thresholdAngle : 1;\n\n\tvar thresholdDot = Math.cos( _Math.DEG2RAD * thresholdAngle );\n\n\tvar edge = [ 0, 0 ], hash = {};\n\n\tfunction sortFunction( a, b ) {\n\n\t\treturn a - b;\n\n\t}\n\n\tvar keys = [ 'a', 'b', 'c' ];\n\n\tvar geometry2;\n\n\tif ( (geometry && geometry.isBufferGeometry) ) {\n\n\t\tgeometry2 = new Geometry();\n\t\tgeometry2.fromBufferGeometry( geometry );\n\n\t} else {\n\n\t\tgeometry2 = geometry.clone();\n\n\t}\n\n\tgeometry2.mergeVertices();\n\tgeometry2.computeFaceNormals();\n\n\tvar vertices = geometry2.vertices;\n\tvar faces = geometry2.faces;\n\n\tfor ( var i = 0, l = faces.length; i < l; i ++ ) {\n\n\t\tvar face = faces[ i ];\n\n\t\tfor ( var j = 0; j < 3; j ++ ) {\n\n\t\t\tedge[ 0 ] = face[ keys[ j ] ];\n\t\t\tedge[ 1 ] = face[ keys[ ( j + 1 ) % 3 ] ];\n\t\t\tedge.sort( sortFunction );\n\n\t\t\tvar key = edge.toString();\n\n\t\t\tif ( hash[ key ] === undefined ) {\n\n\t\t\t\thash[ key ] = { vert1: edge[ 0 ], vert2: edge[ 1 ], face1: i, face2: undefined };\n\n\t\t\t} else {\n\n\t\t\t\thash[ key ].face2 = i;\n\n\t\t\t}\n\n\t\t}\n\n\t}\n\n\tvar coords = [];\n\n\tfor ( var key in hash ) {\n\n\t\tvar h = hash[ key ];\n\n\t\tif ( h.face2 === undefined || faces[ h.face1 ].normal.dot( faces[ h.face2 ].normal ) <= thresholdDot ) {\n\n\t\t\tvar vertex = vertices[ h.vert1 ];\n\t\t\tcoords.push( vertex.x );\n\t\t\tcoords.push( vertex.y );\n\t\t\tcoords.push( vertex.z );\n\n\t\t\tvertex = vertices[ h.vert2 ];\n\t\t\tcoords.push( vertex.x );\n\t\t\tcoords.push( vertex.y );\n\t\t\tcoords.push( vertex.z );\n\n\t\t}\n\n\t}\n\n\tthis.addAttribute( 'position', new BufferAttribute( new Float32Array( coords ), 3 ) );\n\n}\n\nEdgesGeometry.prototype = Object.create( BufferGeometry.prototype );\nEdgesGeometry.prototype.constructor = EdgesGeometry;\n\n\nexport { EdgesGeometry };\n","import { BufferGeometry } from '../core/BufferGeometry';\nimport { Vector3 } from '../math/Vector3';\nimport { Vector2 } from '../math/Vector2';\nimport { BufferAttribute } from '../core/BufferAttribute';\n\n/**\n * @author Mugen87 / https://github.com/Mugen87\n */\n\nfunction CylinderBufferGeometry( radiusTop, radiusBottom, height, radialSegments, heightSegments, openEnded, thetaStart, thetaLength ) {\n\n\tBufferGeometry.call( this );\n\n\tthis.type = 'CylinderBufferGeometry';\n\n\tthis.parameters = {\n\t\tradiusTop: radiusTop,\n\t\tradiusBottom: radiusBottom,\n\t\theight: height,\n\t\tradialSegments: radialSegments,\n\t\theightSegments: heightSegments,\n\t\topenEnded: openEnded,\n\t\tthetaStart: thetaStart,\n\t\tthetaLength: thetaLength\n\t};\n\n\tvar scope = this;\n\n\tradiusTop = radiusTop !== undefined ? radiusTop : 20;\n\tradiusBottom = radiusBottom !== undefined ? radiusBottom : 20;\n\theight = height !== undefined ? height : 100;\n\n\tradialSegments = Math.floor( radialSegments ) || 8;\n\theightSegments = Math.floor( heightSegments ) || 1;\n\n\topenEnded = openEnded !== undefined ? openEnded : false;\n\tthetaStart = thetaStart !== undefined ? thetaStart : 0.0;\n\tthetaLength = thetaLength !== undefined ? thetaLength : 2.0 * Math.PI;\n\n\t// used to calculate buffer length\n\n\tvar nbCap = 0;\n\n\tif ( openEnded === false ) {\n\n\t\tif ( radiusTop > 0 ) nbCap ++;\n\t\tif ( radiusBottom > 0 ) nbCap ++;\n\n\t}\n\n\tvar vertexCount = calculateVertexCount();\n\tvar indexCount = calculateIndexCount();\n\n\t// buffers\n\n\tvar indices = new BufferAttribute( new ( indexCount > 65535 ? Uint32Array : Uint16Array )( indexCount ), 1 );\n\tvar vertices = new BufferAttribute( new Float32Array( vertexCount * 3 ), 3 );\n\tvar normals = new BufferAttribute( new Float32Array( vertexCount * 3 ), 3 );\n\tvar uvs = new BufferAttribute( new Float32Array( vertexCount * 2 ), 2 );\n\n\t// helper variables\n\n\tvar index = 0,\n\t indexOffset = 0,\n\t indexArray = [],\n\t halfHeight = height / 2;\n\n\t// group variables\n\tvar groupStart = 0;\n\n\t// generate geometry\n\n\tgenerateTorso();\n\n\tif ( openEnded === false ) {\n\n\t\tif ( radiusTop > 0 ) generateCap( true );\n\t\tif ( radiusBottom > 0 ) generateCap( false );\n\n\t}\n\n\t// build geometry\n\n\tthis.setIndex( indices );\n\tthis.addAttribute( 'position', vertices );\n\tthis.addAttribute( 'normal', normals );\n\tthis.addAttribute( 'uv', uvs );\n\n\t// helper functions\n\n\tfunction calculateVertexCount() {\n\n\t\tvar count = ( radialSegments + 1 ) * ( heightSegments + 1 );\n\n\t\tif ( openEnded === false ) {\n\n\t\t\tcount += ( ( radialSegments + 1 ) * nbCap ) + ( radialSegments * nbCap );\n\n\t\t}\n\n\t\treturn count;\n\n\t}\n\n\tfunction calculateIndexCount() {\n\n\t\tvar count = radialSegments * heightSegments * 2 * 3;\n\n\t\tif ( openEnded === false ) {\n\n\t\t\tcount += radialSegments * nbCap * 3;\n\n\t\t}\n\n\t\treturn count;\n\n\t}\n\n\tfunction generateTorso() {\n\n\t\tvar x, y;\n\t\tvar normal = new Vector3();\n\t\tvar vertex = new Vector3();\n\n\t\tvar groupCount = 0;\n\n\t\t// this will be used to calculate the normal\n\t\tvar slope = ( radiusBottom - radiusTop ) / height;\n\n\t\t// generate vertices, normals and uvs\n\n\t\tfor ( y = 0; y <= heightSegments; y ++ ) {\n\n\t\t\tvar indexRow = [];\n\n\t\t\tvar v = y / heightSegments;\n\n\t\t\t// calculate the radius of the current row\n\t\t\tvar radius = v * ( radiusBottom - radiusTop ) + radiusTop;\n\n\t\t\tfor ( x = 0; x <= radialSegments; x ++ ) {\n\n\t\t\t\tvar u = x / radialSegments;\n\n\t\t\t\tvar theta = u * thetaLength + thetaStart;\n\n\t\t\t\tvar sinTheta = Math.sin( theta );\n\t\t\t\tvar cosTheta = Math.cos( theta );\n\n\t\t\t\t// vertex\n\t\t\t\tvertex.x = radius * sinTheta;\n\t\t\t\tvertex.y = - v * height + halfHeight;\n\t\t\t\tvertex.z = radius * cosTheta;\n\t\t\t\tvertices.setXYZ( index, vertex.x, vertex.y, vertex.z );\n\n\t\t\t\t// normal\n\t\t\t\tnormal.set( sinTheta, slope, cosTheta ).normalize();\n\t\t\t\tnormals.setXYZ( index, normal.x, normal.y, normal.z );\n\n\t\t\t\t// uv\n\t\t\t\tuvs.setXY( index, u, 1 - v );\n\n\t\t\t\t// save index of vertex in respective row\n\t\t\t\tindexRow.push( index );\n\n\t\t\t\t// increase index\n\t\t\t\tindex ++;\n\n\t\t\t}\n\n\t\t\t// now save vertices of the row in our index array\n\t\t\tindexArray.push( indexRow );\n\n\t\t}\n\n\t\t// generate indices\n\n\t\tfor ( x = 0; x < radialSegments; x ++ ) {\n\n\t\t\tfor ( y = 0; y < heightSegments; y ++ ) {\n\n\t\t\t\t// we use the index array to access the correct indices\n\t\t\t\tvar i1 = indexArray[ y ][ x ];\n\t\t\t\tvar i2 = indexArray[ y + 1 ][ x ];\n\t\t\t\tvar i3 = indexArray[ y + 1 ][ x + 1 ];\n\t\t\t\tvar i4 = indexArray[ y ][ x + 1 ];\n\n\t\t\t\t// face one\n\t\t\t\tindices.setX( indexOffset, i1 ); indexOffset ++;\n\t\t\t\tindices.setX( indexOffset, i2 ); indexOffset ++;\n\t\t\t\tindices.setX( indexOffset, i4 ); indexOffset ++;\n\n\t\t\t\t// face two\n\t\t\t\tindices.setX( indexOffset, i2 ); indexOffset ++;\n\t\t\t\tindices.setX( indexOffset, i3 ); indexOffset ++;\n\t\t\t\tindices.setX( indexOffset, i4 ); indexOffset ++;\n\n\t\t\t\t// update counters\n\t\t\t\tgroupCount += 6;\n\n\t\t\t}\n\n\t\t}\n\n\t\t// add a group to the geometry. this will ensure multi material support\n\t\tscope.addGroup( groupStart, groupCount, 0 );\n\n\t\t// calculate new start value for groups\n\t\tgroupStart += groupCount;\n\n\t}\n\n\tfunction generateCap( top ) {\n\n\t\tvar x, centerIndexStart, centerIndexEnd;\n\n\t\tvar uv = new Vector2();\n\t\tvar vertex = new Vector3();\n\n\t\tvar groupCount = 0;\n\n\t\tvar radius = ( top === true ) ? radiusTop : radiusBottom;\n\t\tvar sign = ( top === true ) ? 1 : - 1;\n\n\t\t// save the index of the first center vertex\n\t\tcenterIndexStart = index;\n\n\t\t// first we generate the center vertex data of the cap.\n\t\t// because the geometry needs one set of uvs per face,\n\t\t// we must generate a center vertex per face/segment\n\n\t\tfor ( x = 1; x <= radialSegments; x ++ ) {\n\n\t\t\t// vertex\n\t\t\tvertices.setXYZ( index, 0, halfHeight * sign, 0 );\n\n\t\t\t// normal\n\t\t\tnormals.setXYZ( index, 0, sign, 0 );\n\n\t\t\t// uv\n\t\t\tuv.x = 0.5;\n\t\t\tuv.y = 0.5;\n\n\t\t\tuvs.setXY( index, uv.x, uv.y );\n\n\t\t\t// increase index\n\t\t\tindex ++;\n\n\t\t}\n\n\t\t// save the index of the last center vertex\n\t\tcenterIndexEnd = index;\n\n\t\t// now we generate the surrounding vertices, normals and uvs\n\n\t\tfor ( x = 0; x <= radialSegments; x ++ ) {\n\n\t\t\tvar u = x / radialSegments;\n\t\t\tvar theta = u * thetaLength + thetaStart;\n\n\t\t\tvar cosTheta = Math.cos( theta );\n\t\t\tvar sinTheta = Math.sin( theta );\n\n\t\t\t// vertex\n\t\t\tvertex.x = radius * sinTheta;\n\t\t\tvertex.y = halfHeight * sign;\n\t\t\tvertex.z = radius * cosTheta;\n\t\t\tvertices.setXYZ( index, vertex.x, vertex.y, vertex.z );\n\n\t\t\t// normal\n\t\t\tnormals.setXYZ( index, 0, sign, 0 );\n\n\t\t\t// uv\n\t\t\tuv.x = ( cosTheta * 0.5 ) + 0.5;\n\t\t\tuv.y = ( sinTheta * 0.5 * sign ) + 0.5;\n\t\t\tuvs.setXY( index, uv.x, uv.y );\n\n\t\t\t// increase index\n\t\t\tindex ++;\n\n\t\t}\n\n\t\t// generate indices\n\n\t\tfor ( x = 0; x < radialSegments; x ++ ) {\n\n\t\t\tvar c = centerIndexStart + x;\n\t\t\tvar i = centerIndexEnd + x;\n\n\t\t\tif ( top === true ) {\n\n\t\t\t\t// face top\n\t\t\t\tindices.setX( indexOffset, i ); indexOffset ++;\n\t\t\t\tindices.setX( indexOffset, i + 1 ); indexOffset ++;\n\t\t\t\tindices.setX( indexOffset, c ); indexOffset ++;\n\n\t\t\t} else {\n\n\t\t\t\t// face bottom\n\t\t\t\tindices.setX( indexOffset, i + 1 ); indexOffset ++;\n\t\t\t\tindices.setX( indexOffset, i ); indexOffset ++;\n\t\t\t\tindices.setX( indexOffset, c ); indexOffset ++;\n\n\t\t\t}\n\n\t\t\t// update counters\n\t\t\tgroupCount += 3;\n\n\t\t}\n\n\t\t// add a group to the geometry. this will ensure multi material support\n\t\tscope.addGroup( groupStart, groupCount, top === true ? 1 : 2 );\n\n\t\t// calculate new start value for groups\n\t\tgroupStart += groupCount;\n\n\t}\n\n}\n\nCylinderBufferGeometry.prototype = Object.create( BufferGeometry.prototype );\nCylinderBufferGeometry.prototype.constructor = CylinderBufferGeometry;\n\n\nexport { CylinderBufferGeometry };\n","import { Geometry } from '../core/Geometry';\nimport { CylinderBufferGeometry } from './CylinderBufferGeometry';\n\n/**\n * @author mrdoob / http://mrdoob.com/\n */\n\nfunction CylinderGeometry( radiusTop, radiusBottom, height, radialSegments, heightSegments, openEnded, thetaStart, thetaLength ) {\n\n\tGeometry.call( this );\n\n\tthis.type = 'CylinderGeometry';\n\n\tthis.parameters = {\n\t\tradiusTop: radiusTop,\n\t\tradiusBottom: radiusBottom,\n\t\theight: height,\n\t\tradialSegments: radialSegments,\n\t\theightSegments: heightSegments,\n\t\topenEnded: openEnded,\n\t\tthetaStart: thetaStart,\n\t\tthetaLength: thetaLength\n\t};\n\n\tthis.fromBufferGeometry( new CylinderBufferGeometry( radiusTop, radiusBottom, height, radialSegments, heightSegments, openEnded, thetaStart, thetaLength ) );\n\tthis.mergeVertices();\n\n}\n\nCylinderGeometry.prototype = Object.create( Geometry.prototype );\nCylinderGeometry.prototype.constructor = CylinderGeometry;\n\n\nexport { CylinderGeometry };\n","import { CylinderGeometry } from './CylinderGeometry';\n\n/**\n * @author abelnation / http://github.com/abelnation\n */\n\nfunction ConeGeometry( radius, height, radialSegments, heightSegments, openEnded, thetaStart, thetaLength ) {\n\n\tCylinderGeometry.call( this, 0, radius, height, radialSegments, heightSegments, openEnded, thetaStart, thetaLength );\n\n\tthis.type = 'ConeGeometry';\n\n\tthis.parameters = {\n\t\tradius: radius,\n\t\theight: height,\n\t\tradialSegments: radialSegments,\n\t\theightSegments: heightSegments,\n\t\topenEnded: openEnded,\n\t\tthetaStart: thetaStart,\n\t\tthetaLength: thetaLength\n\t};\n\n}\n\nConeGeometry.prototype = Object.create( CylinderGeometry.prototype );\nConeGeometry.prototype.constructor = ConeGeometry;\n\n\nexport { ConeGeometry };\n","import { CylinderBufferGeometry } from './CylinderBufferGeometry';\n\n/**\n * @author: abelnation / http://github.com/abelnation\n */\n\nfunction ConeBufferGeometry( radius, height, radialSegments, heightSegments, openEnded, thetaStart, thetaLength ) {\n\n\tCylinderBufferGeometry.call( this, 0, radius, height, radialSegments, heightSegments, openEnded, thetaStart, thetaLength );\n\n\tthis.type = 'ConeBufferGeometry';\n\n\tthis.parameters = {\n\t\tradius: radius,\n\t\theight: height,\n\t\tradialSegments: radialSegments,\n\t\theightSegments: heightSegments,\n\t\topenEnded: openEnded,\n\t\tthetaStart: thetaStart,\n\t\tthetaLength: thetaLength\n\t};\n\n}\n\nConeBufferGeometry.prototype = Object.create( CylinderBufferGeometry.prototype );\nConeBufferGeometry.prototype.constructor = ConeBufferGeometry;\n\n\nexport { ConeBufferGeometry };\n","import { BufferGeometry } from '../core/BufferGeometry';\nimport { Vector3 } from '../math/Vector3';\nimport { Sphere } from '../math/Sphere';\nimport { BufferAttribute } from '../core/BufferAttribute';\n\n/**\n * @author benaadams / https://twitter.com/ben_a_adams\n */\n\nfunction CircleBufferGeometry( radius, segments, thetaStart, thetaLength ) {\n\n\tBufferGeometry.call( this );\n\n\tthis.type = 'CircleBufferGeometry';\n\n\tthis.parameters = {\n\t\tradius: radius,\n\t\tsegments: segments,\n\t\tthetaStart: thetaStart,\n\t\tthetaLength: thetaLength\n\t};\n\n\tradius = radius || 50;\n\tsegments = segments !== undefined ? Math.max( 3, segments ) : 8;\n\n\tthetaStart = thetaStart !== undefined ? thetaStart : 0;\n\tthetaLength = thetaLength !== undefined ? thetaLength : Math.PI * 2;\n\n\tvar vertices = segments + 2;\n\n\tvar positions = new Float32Array( vertices * 3 );\n\tvar normals = new Float32Array( vertices * 3 );\n\tvar uvs = new Float32Array( vertices * 2 );\n\n\t// center data is already zero, but need to set a few extras\n\tnormals[ 2 ] = 1.0;\n\tuvs[ 0 ] = 0.5;\n\tuvs[ 1 ] = 0.5;\n\n\tfor ( var s = 0, i = 3, ii = 2 ; s <= segments; s ++, i += 3, ii += 2 ) {\n\n\t\tvar segment = thetaStart + s / segments * thetaLength;\n\n\t\tpositions[ i ] = radius * Math.cos( segment );\n\t\tpositions[ i + 1 ] = radius * Math.sin( segment );\n\n\t\tnormals[ i + 2 ] = 1; // normal z\n\n\t\tuvs[ ii ] = ( positions[ i ] / radius + 1 ) / 2;\n\t\tuvs[ ii + 1 ] = ( positions[ i + 1 ] / radius + 1 ) / 2;\n\n\t}\n\n\tvar indices = [];\n\n\tfor ( var i = 1; i <= segments; i ++ ) {\n\n\t\tindices.push( i, i + 1, 0 );\n\n\t}\n\n\tthis.setIndex( new BufferAttribute( new Uint16Array( indices ), 1 ) );\n\tthis.addAttribute( 'position', new BufferAttribute( positions, 3 ) );\n\tthis.addAttribute( 'normal', new BufferAttribute( normals, 3 ) );\n\tthis.addAttribute( 'uv', new BufferAttribute( uvs, 2 ) );\n\n\tthis.boundingSphere = new Sphere( new Vector3(), radius );\n\n}\n\nCircleBufferGeometry.prototype = Object.create( BufferGeometry.prototype );\nCircleBufferGeometry.prototype.constructor = CircleBufferGeometry;\n\n\nexport { CircleBufferGeometry };\n","import { Geometry } from '../core/Geometry';\nimport { CircleBufferGeometry } from './CircleBufferGeometry';\n\n/**\n * @author hughes\n */\n\nfunction CircleGeometry( radius, segments, thetaStart, thetaLength ) {\n\n\tGeometry.call( this );\n\n\tthis.type = 'CircleGeometry';\n\n\tthis.parameters = {\n\t\tradius: radius,\n\t\tsegments: segments,\n\t\tthetaStart: thetaStart,\n\t\tthetaLength: thetaLength\n\t};\n\n\tthis.fromBufferGeometry( new CircleBufferGeometry( radius, segments, thetaStart, thetaLength ) );\n\n}\n\nCircleGeometry.prototype = Object.create( Geometry.prototype );\nCircleGeometry.prototype.constructor = CircleGeometry;\n\n\nexport { CircleGeometry };\n","import { Geometry } from '../core/Geometry';\nimport { BoxBufferGeometry } from './BoxBufferGeometry';\n\n/**\n * @author mrdoob / http://mrdoob.com/\n * based on http://papervision3d.googlecode.com/svn/trunk/as3/trunk/src/org/papervision3d/objects/primitives/Cube.as\n */\n\nfunction BoxGeometry( width, height, depth, widthSegments, heightSegments, depthSegments ) {\n\n\tGeometry.call( this );\n\n\tthis.type = 'BoxGeometry';\n\n\tthis.parameters = {\n\t\twidth: width,\n\t\theight: height,\n\t\tdepth: depth,\n\t\twidthSegments: widthSegments,\n\t\theightSegments: heightSegments,\n\t\tdepthSegments: depthSegments\n\t};\n\n\tthis.fromBufferGeometry( new BoxBufferGeometry( width, height, depth, widthSegments, heightSegments, depthSegments ) );\n\tthis.mergeVertices();\n\n}\n\nBoxGeometry.prototype = Object.create( Geometry.prototype );\nBoxGeometry.prototype.constructor = BoxGeometry;\n\n\nexport { BoxGeometry };\n","import { ShaderMaterial } from './ShaderMaterial';\nimport { ShaderChunk } from '../renderers/shaders/ShaderChunk';\nimport { UniformsLib } from '../renderers/shaders/UniformsLib';\nimport { UniformsUtils } from '../renderers/shaders/UniformsUtils';\n\n/**\n * @author mrdoob / http://mrdoob.com/\n */\n\nfunction ShadowMaterial() {\n\n\tShaderMaterial.call( this, {\n\t\tuniforms: UniformsUtils.merge( [\n\t\t\tUniformsLib[ \"lights\" ],\n\t\t\t{\n\t\t\t\topacity: { value: 1.0 }\n\t\t\t}\n\t\t] ),\n\t\tvertexShader: ShaderChunk[ 'shadow_vert' ],\n\t\tfragmentShader: ShaderChunk[ 'shadow_frag' ]\n\t} );\n\n\tthis.lights = true;\n\tthis.transparent = true;\n\n\tObject.defineProperties( this, {\n\t\topacity: {\n\t\t\tenumerable: true,\n\t\t\tget: function () {\n\t\t\t\treturn this.uniforms.opacity.value;\n\t\t\t},\n\t\t\tset: function ( value ) {\n\t\t\t\tthis.uniforms.opacity.value = value;\n\t\t\t}\n\t\t}\n\t} );\n\n}\n\nShadowMaterial.prototype = Object.create( ShaderMaterial.prototype );\nShadowMaterial.prototype.constructor = ShadowMaterial;\n\nShadowMaterial.prototype.isShadowMaterial = true;\n\n\nexport { ShadowMaterial };\n","import { ShaderMaterial } from './ShaderMaterial';\n\n/**\n * @author mrdoob / http://mrdoob.com/\n */\n\nfunction RawShaderMaterial( parameters ) {\n\n\tShaderMaterial.call( this, parameters );\n\n\tthis.type = 'RawShaderMaterial';\n\n}\n\nRawShaderMaterial.prototype = Object.create( ShaderMaterial.prototype );\nRawShaderMaterial.prototype.constructor = RawShaderMaterial;\n\nRawShaderMaterial.prototype.isRawShaderMaterial = true;\n\n\nexport { RawShaderMaterial };\n","import { _Math } from '../math/Math';\n\n/**\n * @author mrdoob / http://mrdoob.com/\n */\n\nfunction MultiMaterial( materials ) {\n\n\tthis.uuid = _Math.generateUUID();\n\n\tthis.type = 'MultiMaterial';\n\n\tthis.materials = materials instanceof Array ? materials : [];\n\n\tthis.visible = true;\n\n}\n\nMultiMaterial.prototype = {\n\n\tconstructor: MultiMaterial,\n\n\tisMultiMaterial: true,\n\n\ttoJSON: function ( meta ) {\n\n\t\tvar output = {\n\t\t\tmetadata: {\n\t\t\t\tversion: 4.2,\n\t\t\t\ttype: 'material',\n\t\t\t\tgenerator: 'MaterialExporter'\n\t\t\t},\n\t\t\tuuid: this.uuid,\n\t\t\ttype: this.type,\n\t\t\tmaterials: []\n\t\t};\n\n\t\tvar materials = this.materials;\n\n\t\tfor ( var i = 0, l = materials.length; i < l; i ++ ) {\n\n\t\t\tvar material = materials[ i ].toJSON( meta );\n\t\t\tdelete material.metadata;\n\n\t\t\toutput.materials.push( material );\n\n\t\t}\n\n\t\toutput.visible = this.visible;\n\n\t\treturn output;\n\n\t},\n\n\tclone: function () {\n\n\t\tvar material = new this.constructor();\n\n\t\tfor ( var i = 0; i < this.materials.length; i ++ ) {\n\n\t\t\tmaterial.materials.push( this.materials[ i ].clone() );\n\n\t\t}\n\n\t\tmaterial.visible = this.visible;\n\n\t\treturn material;\n\n\t}\n\n};\n\n\nexport { MultiMaterial };\n","import { Material } from './Material';\nimport { Vector2 } from '../math/Vector2';\nimport { Color } from '../math/Color';\n\n/**\n * @author WestLangley / http://github.com/WestLangley\n *\n * parameters = {\n * color: ,\n * roughness: ,\n * metalness: ,\n * opacity: ,\n *\n * map: new THREE.Texture( ),\n *\n * lightMap: new THREE.Texture( ),\n * lightMapIntensity: \n *\n * aoMap: new THREE.Texture( ),\n * aoMapIntensity: \n *\n * emissive: ,\n * emissiveIntensity: \n * emissiveMap: new THREE.Texture( ),\n *\n * bumpMap: new THREE.Texture( ),\n * bumpScale: ,\n *\n * normalMap: new THREE.Texture( ),\n * normalScale: ,\n *\n * displacementMap: new THREE.Texture( ),\n * displacementScale: ,\n * displacementBias: ,\n *\n * roughnessMap: new THREE.Texture( ),\n *\n * metalnessMap: new THREE.Texture( ),\n *\n * alphaMap: new THREE.Texture( ),\n *\n * envMap: new THREE.CubeTexture( [posx, negx, posy, negy, posz, negz] ),\n * envMapIntensity: \n *\n * refractionRatio: ,\n *\n * wireframe: ,\n * wireframeLinewidth: ,\n *\n * skinning: ,\n * morphTargets: ,\n * morphNormals: \n * }\n */\n\nfunction MeshStandardMaterial( parameters ) {\n\n\tMaterial.call( this );\n\n\tthis.defines = { 'STANDARD': '' };\n\n\tthis.type = 'MeshStandardMaterial';\n\n\tthis.color = new Color( 0xffffff ); // diffuse\n\tthis.roughness = 0.5;\n\tthis.metalness = 0.5;\n\n\tthis.map = null;\n\n\tthis.lightMap = null;\n\tthis.lightMapIntensity = 1.0;\n\n\tthis.aoMap = null;\n\tthis.aoMapIntensity = 1.0;\n\n\tthis.emissive = new Color( 0x000000 );\n\tthis.emissiveIntensity = 1.0;\n\tthis.emissiveMap = null;\n\n\tthis.bumpMap = null;\n\tthis.bumpScale = 1;\n\n\tthis.normalMap = null;\n\tthis.normalScale = new Vector2( 1, 1 );\n\n\tthis.displacementMap = null;\n\tthis.displacementScale = 1;\n\tthis.displacementBias = 0;\n\n\tthis.roughnessMap = null;\n\n\tthis.metalnessMap = null;\n\n\tthis.alphaMap = null;\n\n\tthis.envMap = null;\n\tthis.envMapIntensity = 1.0;\n\n\tthis.refractionRatio = 0.98;\n\n\tthis.wireframe = false;\n\tthis.wireframeLinewidth = 1;\n\tthis.wireframeLinecap = 'round';\n\tthis.wireframeLinejoin = 'round';\n\n\tthis.skinning = false;\n\tthis.morphTargets = false;\n\tthis.morphNormals = false;\n\n\tthis.setValues( parameters );\n\n}\n\nMeshStandardMaterial.prototype = Object.create( Material.prototype );\nMeshStandardMaterial.prototype.constructor = MeshStandardMaterial;\n\nMeshStandardMaterial.prototype.isMeshStandardMaterial = true;\n\nMeshStandardMaterial.prototype.copy = function ( source ) {\n\n\tMaterial.prototype.copy.call( this, source );\n\n\tthis.defines = { 'STANDARD': '' };\n\n\tthis.color.copy( source.color );\n\tthis.roughness = source.roughness;\n\tthis.metalness = source.metalness;\n\n\tthis.map = source.map;\n\n\tthis.lightMap = source.lightMap;\n\tthis.lightMapIntensity = source.lightMapIntensity;\n\n\tthis.aoMap = source.aoMap;\n\tthis.aoMapIntensity = source.aoMapIntensity;\n\n\tthis.emissive.copy( source.emissive );\n\tthis.emissiveMap = source.emissiveMap;\n\tthis.emissiveIntensity = source.emissiveIntensity;\n\n\tthis.bumpMap = source.bumpMap;\n\tthis.bumpScale = source.bumpScale;\n\n\tthis.normalMap = source.normalMap;\n\tthis.normalScale.copy( source.normalScale );\n\n\tthis.displacementMap = source.displacementMap;\n\tthis.displacementScale = source.displacementScale;\n\tthis.displacementBias = source.displacementBias;\n\n\tthis.roughnessMap = source.roughnessMap;\n\n\tthis.metalnessMap = source.metalnessMap;\n\n\tthis.alphaMap = source.alphaMap;\n\n\tthis.envMap = source.envMap;\n\tthis.envMapIntensity = source.envMapIntensity;\n\n\tthis.refractionRatio = source.refractionRatio;\n\n\tthis.wireframe = source.wireframe;\n\tthis.wireframeLinewidth = source.wireframeLinewidth;\n\tthis.wireframeLinecap = source.wireframeLinecap;\n\tthis.wireframeLinejoin = source.wireframeLinejoin;\n\n\tthis.skinning = source.skinning;\n\tthis.morphTargets = source.morphTargets;\n\tthis.morphNormals = source.morphNormals;\n\n\treturn this;\n\n};\n\n\nexport { MeshStandardMaterial };\n","import { MeshStandardMaterial } from './MeshStandardMaterial';\n\n/**\n * @author WestLangley / http://github.com/WestLangley\n *\n * parameters = {\n * reflectivity: \n * }\n */\n\nfunction MeshPhysicalMaterial( parameters ) {\n\n\tMeshStandardMaterial.call( this );\n\n\tthis.defines = { 'PHYSICAL': '' };\n\n\tthis.type = 'MeshPhysicalMaterial';\n\n\tthis.reflectivity = 0.5; // maps to F0 = 0.04\n\n\tthis.clearCoat = 0.0;\n\tthis.clearCoatRoughness = 0.0;\n\n\tthis.setValues( parameters );\n\n}\n\nMeshPhysicalMaterial.prototype = Object.create( MeshStandardMaterial.prototype );\nMeshPhysicalMaterial.prototype.constructor = MeshPhysicalMaterial;\n\nMeshPhysicalMaterial.prototype.isMeshPhysicalMaterial = true;\n\nMeshPhysicalMaterial.prototype.copy = function ( source ) {\n\n\tMeshStandardMaterial.prototype.copy.call( this, source );\n\n\tthis.defines = { 'PHYSICAL': '' };\n\n\tthis.reflectivity = source.reflectivity;\n\n\tthis.clearCoat = source.clearCoat;\n\tthis.clearCoatRoughness = source.clearCoatRoughness;\n\n\treturn this;\n\n};\n\n\nexport { MeshPhysicalMaterial };\n","import { Material } from './Material';\nimport { MultiplyOperation } from '../constants';\nimport { Vector2 } from '../math/Vector2';\nimport { Color } from '../math/Color';\n\n/**\n * @author mrdoob / http://mrdoob.com/\n * @author alteredq / http://alteredqualia.com/\n *\n * parameters = {\n * color: ,\n * specular: ,\n * shininess: ,\n * opacity: ,\n *\n * map: new THREE.Texture( ),\n *\n * lightMap: new THREE.Texture( ),\n * lightMapIntensity: \n *\n * aoMap: new THREE.Texture( ),\n * aoMapIntensity: \n *\n * emissive: ,\n * emissiveIntensity: \n * emissiveMap: new THREE.Texture( ),\n *\n * bumpMap: new THREE.Texture( ),\n * bumpScale: ,\n *\n * normalMap: new THREE.Texture( ),\n * normalScale: ,\n *\n * displacementMap: new THREE.Texture( ),\n * displacementScale: ,\n * displacementBias: ,\n *\n * specularMap: new THREE.Texture( ),\n *\n * alphaMap: new THREE.Texture( ),\n *\n * envMap: new THREE.TextureCube( [posx, negx, posy, negy, posz, negz] ),\n * combine: THREE.Multiply,\n * reflectivity: ,\n * refractionRatio: ,\n *\n * wireframe: ,\n * wireframeLinewidth: ,\n *\n * skinning: ,\n * morphTargets: ,\n * morphNormals: \n * }\n */\n\nfunction MeshPhongMaterial( parameters ) {\n\n\tMaterial.call( this );\n\n\tthis.type = 'MeshPhongMaterial';\n\n\tthis.color = new Color( 0xffffff ); // diffuse\n\tthis.specular = new Color( 0x111111 );\n\tthis.shininess = 30;\n\n\tthis.map = null;\n\n\tthis.lightMap = null;\n\tthis.lightMapIntensity = 1.0;\n\n\tthis.aoMap = null;\n\tthis.aoMapIntensity = 1.0;\n\n\tthis.emissive = new Color( 0x000000 );\n\tthis.emissiveIntensity = 1.0;\n\tthis.emissiveMap = null;\n\n\tthis.bumpMap = null;\n\tthis.bumpScale = 1;\n\n\tthis.normalMap = null;\n\tthis.normalScale = new Vector2( 1, 1 );\n\n\tthis.displacementMap = null;\n\tthis.displacementScale = 1;\n\tthis.displacementBias = 0;\n\n\tthis.specularMap = null;\n\n\tthis.alphaMap = null;\n\n\tthis.envMap = null;\n\tthis.combine = MultiplyOperation;\n\tthis.reflectivity = 1;\n\tthis.refractionRatio = 0.98;\n\n\tthis.wireframe = false;\n\tthis.wireframeLinewidth = 1;\n\tthis.wireframeLinecap = 'round';\n\tthis.wireframeLinejoin = 'round';\n\n\tthis.skinning = false;\n\tthis.morphTargets = false;\n\tthis.morphNormals = false;\n\n\tthis.setValues( parameters );\n\n}\n\nMeshPhongMaterial.prototype = Object.create( Material.prototype );\nMeshPhongMaterial.prototype.constructor = MeshPhongMaterial;\n\nMeshPhongMaterial.prototype.isMeshPhongMaterial = true;\n\nMeshPhongMaterial.prototype.copy = function ( source ) {\n\n\tMaterial.prototype.copy.call( this, source );\n\n\tthis.color.copy( source.color );\n\tthis.specular.copy( source.specular );\n\tthis.shininess = source.shininess;\n\n\tthis.map = source.map;\n\n\tthis.lightMap = source.lightMap;\n\tthis.lightMapIntensity = source.lightMapIntensity;\n\n\tthis.aoMap = source.aoMap;\n\tthis.aoMapIntensity = source.aoMapIntensity;\n\n\tthis.emissive.copy( source.emissive );\n\tthis.emissiveMap = source.emissiveMap;\n\tthis.emissiveIntensity = source.emissiveIntensity;\n\n\tthis.bumpMap = source.bumpMap;\n\tthis.bumpScale = source.bumpScale;\n\n\tthis.normalMap = source.normalMap;\n\tthis.normalScale.copy( source.normalScale );\n\n\tthis.displacementMap = source.displacementMap;\n\tthis.displacementScale = source.displacementScale;\n\tthis.displacementBias = source.displacementBias;\n\n\tthis.specularMap = source.specularMap;\n\n\tthis.alphaMap = source.alphaMap;\n\n\tthis.envMap = source.envMap;\n\tthis.combine = source.combine;\n\tthis.reflectivity = source.reflectivity;\n\tthis.refractionRatio = source.refractionRatio;\n\n\tthis.wireframe = source.wireframe;\n\tthis.wireframeLinewidth = source.wireframeLinewidth;\n\tthis.wireframeLinecap = source.wireframeLinecap;\n\tthis.wireframeLinejoin = source.wireframeLinejoin;\n\n\tthis.skinning = source.skinning;\n\tthis.morphTargets = source.morphTargets;\n\tthis.morphNormals = source.morphNormals;\n\n\treturn this;\n\n};\n\n\nexport { MeshPhongMaterial };\n","import { Material } from './Material';\n\n/**\n * @author mrdoob / http://mrdoob.com/\n *\n * parameters = {\n * opacity: ,\n *\n * wireframe: ,\n * wireframeLinewidth: \n * }\n */\n\nfunction MeshNormalMaterial( parameters ) {\n\n\tMaterial.call( this, parameters );\n\n\tthis.type = 'MeshNormalMaterial';\n\n\tthis.wireframe = false;\n\tthis.wireframeLinewidth = 1;\n\n\tthis.fog = false;\n\tthis.lights = false;\n\tthis.morphTargets = false;\n\n\tthis.setValues( parameters );\n\n}\n\nMeshNormalMaterial.prototype = Object.create( Material.prototype );\nMeshNormalMaterial.prototype.constructor = MeshNormalMaterial;\n\nMeshNormalMaterial.prototype.isMeshNormalMaterial = true;\n\nMeshNormalMaterial.prototype.copy = function ( source ) {\n\n\tMaterial.prototype.copy.call( this, source );\n\n\tthis.wireframe = source.wireframe;\n\tthis.wireframeLinewidth = source.wireframeLinewidth;\n\n\treturn this;\n\n};\n\n\nexport { MeshNormalMaterial };\n","import { Material } from './Material';\nimport { MultiplyOperation } from '../constants';\nimport { Color } from '../math/Color';\n\n/**\n * @author mrdoob / http://mrdoob.com/\n * @author alteredq / http://alteredqualia.com/\n *\n * parameters = {\n * color: ,\n * opacity: ,\n *\n * map: new THREE.Texture( ),\n *\n * lightMap: new THREE.Texture( ),\n * lightMapIntensity: \n *\n * aoMap: new THREE.Texture( ),\n * aoMapIntensity: \n *\n * emissive: ,\n * emissiveIntensity: \n * emissiveMap: new THREE.Texture( ),\n *\n * specularMap: new THREE.Texture( ),\n *\n * alphaMap: new THREE.Texture( ),\n *\n * envMap: new THREE.TextureCube( [posx, negx, posy, negy, posz, negz] ),\n * combine: THREE.Multiply,\n * reflectivity: ,\n * refractionRatio: ,\n *\n * wireframe: ,\n * wireframeLinewidth: ,\n *\n * skinning: ,\n * morphTargets: ,\n * morphNormals: \n * }\n */\n\nfunction MeshLambertMaterial( parameters ) {\n\n\tMaterial.call( this );\n\n\tthis.type = 'MeshLambertMaterial';\n\n\tthis.color = new Color( 0xffffff ); // diffuse\n\n\tthis.map = null;\n\n\tthis.lightMap = null;\n\tthis.lightMapIntensity = 1.0;\n\n\tthis.aoMap = null;\n\tthis.aoMapIntensity = 1.0;\n\n\tthis.emissive = new Color( 0x000000 );\n\tthis.emissiveIntensity = 1.0;\n\tthis.emissiveMap = null;\n\n\tthis.specularMap = null;\n\n\tthis.alphaMap = null;\n\n\tthis.envMap = null;\n\tthis.combine = MultiplyOperation;\n\tthis.reflectivity = 1;\n\tthis.refractionRatio = 0.98;\n\n\tthis.wireframe = false;\n\tthis.wireframeLinewidth = 1;\n\tthis.wireframeLinecap = 'round';\n\tthis.wireframeLinejoin = 'round';\n\n\tthis.skinning = false;\n\tthis.morphTargets = false;\n\tthis.morphNormals = false;\n\n\tthis.setValues( parameters );\n\n}\n\nMeshLambertMaterial.prototype = Object.create( Material.prototype );\nMeshLambertMaterial.prototype.constructor = MeshLambertMaterial;\n\nMeshLambertMaterial.prototype.isMeshLambertMaterial = true;\n\nMeshLambertMaterial.prototype.copy = function ( source ) {\n\n\tMaterial.prototype.copy.call( this, source );\n\n\tthis.color.copy( source.color );\n\n\tthis.map = source.map;\n\n\tthis.lightMap = source.lightMap;\n\tthis.lightMapIntensity = source.lightMapIntensity;\n\n\tthis.aoMap = source.aoMap;\n\tthis.aoMapIntensity = source.aoMapIntensity;\n\n\tthis.emissive.copy( source.emissive );\n\tthis.emissiveMap = source.emissiveMap;\n\tthis.emissiveIntensity = source.emissiveIntensity;\n\n\tthis.specularMap = source.specularMap;\n\n\tthis.alphaMap = source.alphaMap;\n\n\tthis.envMap = source.envMap;\n\tthis.combine = source.combine;\n\tthis.reflectivity = source.reflectivity;\n\tthis.refractionRatio = source.refractionRatio;\n\n\tthis.wireframe = source.wireframe;\n\tthis.wireframeLinewidth = source.wireframeLinewidth;\n\tthis.wireframeLinecap = source.wireframeLinecap;\n\tthis.wireframeLinejoin = source.wireframeLinejoin;\n\n\tthis.skinning = source.skinning;\n\tthis.morphTargets = source.morphTargets;\n\tthis.morphNormals = source.morphNormals;\n\n\treturn this;\n\n};\n\n\nexport { MeshLambertMaterial };\n","import { Material } from './Material';\nimport { Color } from '../math/Color';\n\n/**\n * @author alteredq / http://alteredqualia.com/\n *\n * parameters = {\n * color: ,\n * opacity: ,\n *\n * linewidth: ,\n *\n * scale: ,\n * dashSize: ,\n * gapSize: \n * }\n */\n\nfunction LineDashedMaterial( parameters ) {\n\n\tMaterial.call( this );\n\n\tthis.type = 'LineDashedMaterial';\n\n\tthis.color = new Color( 0xffffff );\n\n\tthis.linewidth = 1;\n\n\tthis.scale = 1;\n\tthis.dashSize = 3;\n\tthis.gapSize = 1;\n\n\tthis.lights = false;\n\n\tthis.setValues( parameters );\n\n}\n\nLineDashedMaterial.prototype = Object.create( Material.prototype );\nLineDashedMaterial.prototype.constructor = LineDashedMaterial;\n\nLineDashedMaterial.prototype.isLineDashedMaterial = true;\n\nLineDashedMaterial.prototype.copy = function ( source ) {\n\n\tMaterial.prototype.copy.call( this, source );\n\n\tthis.color.copy( source.color );\n\n\tthis.linewidth = source.linewidth;\n\n\tthis.scale = source.scale;\n\tthis.dashSize = source.dashSize;\n\tthis.gapSize = source.gapSize;\n\n\treturn this;\n\n};\n\n\nexport { LineDashedMaterial };\n","/**\n * @author mrdoob / http://mrdoob.com/\n */\n\nvar Cache = {\n\n\tenabled: false,\n\n\tfiles: {},\n\n\tadd: function ( key, file ) {\n\n\t\tif ( this.enabled === false ) return;\n\n\t\t// console.log( 'THREE.Cache', 'Adding key:', key );\n\n\t\tthis.files[ key ] = file;\n\n\t},\n\n\tget: function ( key ) {\n\n\t\tif ( this.enabled === false ) return;\n\n\t\t// console.log( 'THREE.Cache', 'Checking key:', key );\n\n\t\treturn this.files[ key ];\n\n\t},\n\n\tremove: function ( key ) {\n\n\t\tdelete this.files[ key ];\n\n\t},\n\n\tclear: function () {\n\n\t\tthis.files = {};\n\n\t}\n\n};\n\n\nexport { Cache };\n","/**\n * @author mrdoob / http://mrdoob.com/\n */\n\nfunction LoadingManager( onLoad, onProgress, onError ) {\n\n\tvar scope = this;\n\n\tvar isLoading = false, itemsLoaded = 0, itemsTotal = 0;\n\n\tthis.onStart = undefined;\n\tthis.onLoad = onLoad;\n\tthis.onProgress = onProgress;\n\tthis.onError = onError;\n\n\tthis.itemStart = function ( url ) {\n\n\t\titemsTotal ++;\n\n\t\tif ( isLoading === false ) {\n\n\t\t\tif ( scope.onStart !== undefined ) {\n\n\t\t\t\tscope.onStart( url, itemsLoaded, itemsTotal );\n\n\t\t\t}\n\n\t\t}\n\n\t\tisLoading = true;\n\n\t};\n\n\tthis.itemEnd = function ( url ) {\n\n\t\titemsLoaded ++;\n\n\t\tif ( scope.onProgress !== undefined ) {\n\n\t\t\tscope.onProgress( url, itemsLoaded, itemsTotal );\n\n\t\t}\n\n\t\tif ( itemsLoaded === itemsTotal ) {\n\n\t\t\tisLoading = false;\n\n\t\t\tif ( scope.onLoad !== undefined ) {\n\n\t\t\t\tscope.onLoad();\n\n\t\t\t}\n\n\t\t}\n\n\t};\n\n\tthis.itemError = function ( url ) {\n\n\t\tif ( scope.onError !== undefined ) {\n\n\t\t\tscope.onError( url );\n\n\t\t}\n\n\t};\n\n}\n\nvar DefaultLoadingManager = new LoadingManager();\n\n\nexport { DefaultLoadingManager, LoadingManager };\n","/**\n * @author mrdoob / http://mrdoob.com/\n */\n\nimport { Cache } from './Cache';\nimport { DefaultLoadingManager } from './LoadingManager';\n\nfunction FileLoader( manager ) {\n\n\tthis.manager = ( manager !== undefined ) ? manager : DefaultLoadingManager;\n\n}\n\nObject.assign( FileLoader.prototype, {\n\n\tload: function ( url, onLoad, onProgress, onError ) {\n\n\t\tif ( url === undefined ) url = '';\n\n\t\tif ( this.path !== undefined ) url = this.path + url;\n\n\t\tvar scope = this;\n\n\t\tvar cached = Cache.get( url );\n\n\t\tif ( cached !== undefined ) {\n\n\t\t\tscope.manager.itemStart( url );\n\n\t\t\tsetTimeout( function () {\n\n\t\t\t\tif ( onLoad ) onLoad( cached );\n\n\t\t\t\tscope.manager.itemEnd( url );\n\n\t\t\t}, 0 );\n\n\t\t\treturn cached;\n\n\t\t}\n\n\t\t// Check for data: URI\n\t\tvar dataUriRegex = /^data:(.*?)(;base64)?,(.*)$/;\n\t\tvar dataUriRegexResult = url.match( dataUriRegex );\n\n\t\t// Safari can not handle Data URIs through XMLHttpRequest so process manually\n\t\tif ( dataUriRegexResult ) {\n\n\t\t\tvar mimeType = dataUriRegexResult[1];\n\t\t\tvar isBase64 = !!dataUriRegexResult[2];\n\t\t\tvar data = dataUriRegexResult[3];\n\n\t\t\tdata = window.decodeURIComponent(data);\n\n\t\t\tif( isBase64 ) {\n\t\t\t\tdata = window.atob(data);\n\t\t\t}\n\n\t\t\ttry {\n\n\t\t\t\tvar response;\n\t\t\t\tvar responseType = ( this.responseType || '' ).toLowerCase();\n\n\t\t\t\tswitch ( responseType ) {\n\n\t\t\t\t\tcase 'arraybuffer':\n\t\t\t\t\tcase 'blob':\n\n\t\t\t\t\t \tresponse = new ArrayBuffer( data.length );\n\t\t\t\t\t\tvar view = new Uint8Array( response );\n\t\t\t\t\t\tfor ( var i = 0; i < data.length; i ++ ) {\n\n\t\t\t\t\t\t\t\tview[ i ] = data.charCodeAt( i );\n\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\tif ( responseType === 'blob' ) {\n\n\t\t\t\t\t\t\tresponse = new Blob( [ response ], { \"type\" : mimeType } );\n\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\tbreak;\n\n\t\t\t\t\tcase 'document':\n\n\t\t\t\t\t\tvar parser = new DOMParser();\n\t\t\t\t\t\tresponse = parser.parseFromString( data, mimeType );\n\n\t\t\t\t\t\tbreak;\n\n\t\t\t\t\tcase 'json':\n\n\t\t\t\t\t\tresponse = JSON.parse( data );\n\n\t\t\t\t\t\tbreak;\n\n\t\t\t\t\tdefault: // 'text' or other\n\n\t\t\t\t\t\tresponse = data;\n\n\t\t\t\t\t\tbreak;\n\n\t\t\t\t}\n\n\t\t\t\t// Wait for next browser tick\n\t\t\t\twindow.setTimeout( function() {\n\n\t\t\t\t\tif ( onLoad ) onLoad( response );\n\n\t\t\t\t\tscope.manager.itemEnd( url );\n\n\t\t\t\t}, 0);\n\n\t\t\t} catch ( error ) {\n\n\t\t\t\t// Wait for next browser tick\n\t\t\t\twindow.setTimeout( function() {\n\n\t\t\t\t\tif ( onError ) onError( error );\n\n\t\t\t\t\tscope.manager.itemError( url );\n\n\t\t\t\t}, 0);\n\n\t\t\t}\n\n\t\t} else {\n\n\t\t\tvar request = new XMLHttpRequest();\n\t\t\trequest.open( 'GET', url, true );\n\n\t\t\trequest.addEventListener( 'load', function ( event ) {\n\n\t\t\t\tvar response = event.target.response;\n\n\t\t\t\tCache.add( url, response );\n\n\t\t\t\tif ( this.status === 200 ) {\n\n\t\t\t\t\tif ( onLoad ) onLoad( response );\n\n\t\t\t\t\tscope.manager.itemEnd( url );\n\n\t\t\t\t} else if ( this.status === 0 ) {\n\n\t\t\t\t\t// Some browsers return HTTP Status 0 when using non-http protocol\n\t\t\t\t\t// e.g. 'file://' or 'data://'. Handle as success.\n\n\t\t\t\t\tconsole.warn( 'THREE.FileLoader: HTTP Status 0 received.' );\n\n\t\t\t\t\tif ( onLoad ) onLoad( response );\n\n\t\t\t\t\tscope.manager.itemEnd( url );\n\n\t\t\t\t} else {\n\n\t\t\t\t\tif ( onError ) onError( event );\n\n\t\t\t\t\tscope.manager.itemError( url );\n\n\t\t\t\t}\n\n\t\t\t}, false );\n\n\t\t\tif ( onProgress !== undefined ) {\n\n\t\t\t\trequest.addEventListener( 'progress', function ( event ) {\n\n\t\t\t\t\tonProgress( event );\n\n\t\t\t\t}, false );\n\n\t\t\t}\n\n\t\t\trequest.addEventListener( 'error', function ( event ) {\n\n\t\t\t\tif ( onError ) onError( event );\n\n\t\t\t\tscope.manager.itemError( url );\n\n\t\t\t}, false );\n\n\t\t\tif ( this.responseType !== undefined ) request.responseType = this.responseType;\n\t\t\tif ( this.withCredentials !== undefined ) request.withCredentials = this.withCredentials;\n\n\t\t\tif ( request.overrideMimeType ) request.overrideMimeType( this.mimeType !== undefined ? this.mimeType : 'text/plain' );\n\n\t\t\trequest.send( null );\n\n\t\t}\n\n\t\tscope.manager.itemStart( url );\n\n\t\treturn request;\n\n\t},\n\n\tsetPath: function ( value ) {\n\n\t\tthis.path = value;\n\t\treturn this;\n\n\t},\n\n\tsetResponseType: function ( value ) {\n\n\t\tthis.responseType = value;\n\t\treturn this;\n\n\t},\n\n\tsetWithCredentials: function ( value ) {\n\n\t\tthis.withCredentials = value;\n\t\treturn this;\n\n\t},\n\n\tsetMimeType: function ( value ) {\n\n\t\tthis.mimeType = value;\n\t\treturn this;\n\n\t}\n\n} );\n\n\nexport { FileLoader };\n","import { LinearFilter } from '../constants';\nimport { FileLoader } from './FileLoader';\nimport { CompressedTexture } from '../textures/CompressedTexture';\nimport { DefaultLoadingManager } from './LoadingManager';\n\n/**\n * @author mrdoob / http://mrdoob.com/\n *\n * Abstract Base class to block based textures loader (dds, pvr, ...)\n */\n\nfunction CompressedTextureLoader( manager ) {\n\n\tthis.manager = ( manager !== undefined ) ? manager : DefaultLoadingManager;\n\n\t// override in sub classes\n\tthis._parser = null;\n\n}\n\nObject.assign( CompressedTextureLoader.prototype, {\n\n\tload: function ( url, onLoad, onProgress, onError ) {\n\n\t\tvar scope = this;\n\n\t\tvar images = [];\n\n\t\tvar texture = new CompressedTexture();\n\t\ttexture.image = images;\n\n\t\tvar loader = new FileLoader( this.manager );\n\t\tloader.setPath( this.path );\n\t\tloader.setResponseType( 'arraybuffer' );\n\n\t\tfunction loadTexture( i ) {\n\n\t\t\tloader.load( url[ i ], function ( buffer ) {\n\n\t\t\t\tvar texDatas = scope._parser( buffer, true );\n\n\t\t\t\timages[ i ] = {\n\t\t\t\t\twidth: texDatas.width,\n\t\t\t\t\theight: texDatas.height,\n\t\t\t\t\tformat: texDatas.format,\n\t\t\t\t\tmipmaps: texDatas.mipmaps\n\t\t\t\t};\n\n\t\t\t\tloaded += 1;\n\n\t\t\t\tif ( loaded === 6 ) {\n\n\t\t\t\t\tif ( texDatas.mipmapCount === 1 )\n\t\t\t\t\t\ttexture.minFilter = LinearFilter;\n\n\t\t\t\t\ttexture.format = texDatas.format;\n\t\t\t\t\ttexture.needsUpdate = true;\n\n\t\t\t\t\tif ( onLoad ) onLoad( texture );\n\n\t\t\t\t}\n\n\t\t\t}, onProgress, onError );\n\n\t\t}\n\n\t\tif ( Array.isArray( url ) ) {\n\n\t\t\tvar loaded = 0;\n\n\t\t\tfor ( var i = 0, il = url.length; i < il; ++ i ) {\n\n\t\t\t\tloadTexture( i );\n\n\t\t\t}\n\n\t\t} else {\n\n\t\t\t// compressed cubemap texture stored in a single DDS file\n\n\t\t\tloader.load( url, function ( buffer ) {\n\n\t\t\t\tvar texDatas = scope._parser( buffer, true );\n\n\t\t\t\tif ( texDatas.isCubemap ) {\n\n\t\t\t\t\tvar faces = texDatas.mipmaps.length / texDatas.mipmapCount;\n\n\t\t\t\t\tfor ( var f = 0; f < faces; f ++ ) {\n\n\t\t\t\t\t\timages[ f ] = { mipmaps : [] };\n\n\t\t\t\t\t\tfor ( var i = 0; i < texDatas.mipmapCount; i ++ ) {\n\n\t\t\t\t\t\t\timages[ f ].mipmaps.push( texDatas.mipmaps[ f * texDatas.mipmapCount + i ] );\n\t\t\t\t\t\t\timages[ f ].format = texDatas.format;\n\t\t\t\t\t\t\timages[ f ].width = texDatas.width;\n\t\t\t\t\t\t\timages[ f ].height = texDatas.height;\n\n\t\t\t\t\t\t}\n\n\t\t\t\t\t}\n\n\t\t\t\t} else {\n\n\t\t\t\t\ttexture.image.width = texDatas.width;\n\t\t\t\t\ttexture.image.height = texDatas.height;\n\t\t\t\t\ttexture.mipmaps = texDatas.mipmaps;\n\n\t\t\t\t}\n\n\t\t\t\tif ( texDatas.mipmapCount === 1 ) {\n\n\t\t\t\t\ttexture.minFilter = LinearFilter;\n\n\t\t\t\t}\n\n\t\t\t\ttexture.format = texDatas.format;\n\t\t\t\ttexture.needsUpdate = true;\n\n\t\t\t\tif ( onLoad ) onLoad( texture );\n\n\t\t\t}, onProgress, onError );\n\n\t\t}\n\n\t\treturn texture;\n\n\t},\n\n\tsetPath: function ( value ) {\n\n\t\tthis.path = value;\n\t\treturn this;\n\n\t}\n\n} );\n\n\nexport { CompressedTextureLoader };\n","import { LinearFilter, LinearMipMapLinearFilter, ClampToEdgeWrapping } from '../constants';\nimport { FileLoader } from './FileLoader';\nimport { DataTexture } from '../textures/DataTexture';\nimport { DefaultLoadingManager } from './LoadingManager';\n\n/**\n * @author Nikos M. / https://github.com/foo123/\n *\n * Abstract Base class to load generic binary textures formats (rgbe, hdr, ...)\n */\n\nvar DataTextureLoader = BinaryTextureLoader;\nfunction BinaryTextureLoader( manager ) {\n\n\tthis.manager = ( manager !== undefined ) ? manager : DefaultLoadingManager;\n\n\t// override in sub classes\n\tthis._parser = null;\n\n}\n\nObject.assign( BinaryTextureLoader.prototype, {\n\n\tload: function ( url, onLoad, onProgress, onError ) {\n\n\t\tvar scope = this;\n\n\t\tvar texture = new DataTexture();\n\n\t\tvar loader = new FileLoader( this.manager );\n\t\tloader.setResponseType( 'arraybuffer' );\n\n\t\tloader.load( url, function ( buffer ) {\n\n\t\t\tvar texData = scope._parser( buffer );\n\n\t\t\tif ( ! texData ) return;\n\n\t\t\tif ( undefined !== texData.image ) {\n\n\t\t\t\ttexture.image = texData.image;\n\n\t\t\t} else if ( undefined !== texData.data ) {\n\n\t\t\t\ttexture.image.width = texData.width;\n\t\t\t\ttexture.image.height = texData.height;\n\t\t\t\ttexture.image.data = texData.data;\n\n\t\t\t}\n\n\t\t\ttexture.wrapS = undefined !== texData.wrapS ? texData.wrapS : ClampToEdgeWrapping;\n\t\t\ttexture.wrapT = undefined !== texData.wrapT ? texData.wrapT : ClampToEdgeWrapping;\n\n\t\t\ttexture.magFilter = undefined !== texData.magFilter ? texData.magFilter : LinearFilter;\n\t\t\ttexture.minFilter = undefined !== texData.minFilter ? texData.minFilter : LinearMipMapLinearFilter;\n\n\t\t\ttexture.anisotropy = undefined !== texData.anisotropy ? texData.anisotropy : 1;\n\n\t\t\tif ( undefined !== texData.format ) {\n\n\t\t\t\ttexture.format = texData.format;\n\n\t\t\t}\n\t\t\tif ( undefined !== texData.type ) {\n\n\t\t\t\ttexture.type = texData.type;\n\n\t\t\t}\n\n\t\t\tif ( undefined !== texData.mipmaps ) {\n\n\t\t\t\ttexture.mipmaps = texData.mipmaps;\n\n\t\t\t}\n\n\t\t\tif ( 1 === texData.mipmapCount ) {\n\n\t\t\t\ttexture.minFilter = LinearFilter;\n\n\t\t\t}\n\n\t\t\ttexture.needsUpdate = true;\n\n\t\t\tif ( onLoad ) onLoad( texture, texData );\n\n\t\t}, onProgress, onError );\n\n\n\t\treturn texture;\n\n\t}\n\n} );\n\n\nexport { BinaryTextureLoader, DataTextureLoader };\n","import { FileLoader } from './FileLoader';\nimport { DefaultLoadingManager } from './LoadingManager';\n\n/**\n * @author mrdoob / http://mrdoob.com/\n */\n\nfunction ImageLoader( manager ) {\n\n\tthis.manager = ( manager !== undefined ) ? manager : DefaultLoadingManager;\n\n}\n\nObject.assign( ImageLoader.prototype, {\n\n\tload: function ( url, onLoad, onProgress, onError ) {\n\n\t\tvar scope = this;\n\n\t\tvar image = document.createElementNS( 'http://www.w3.org/1999/xhtml', 'img' );\n\t\timage.onload = function () {\n\n\t\t\timage.onload = null;\n\n\t\t\tURL.revokeObjectURL( image.src );\n\n\t\t\tif ( onLoad ) onLoad( image );\n\n\t\t\tscope.manager.itemEnd( url );\n\n\t\t};\n\t\timage.onerror = onError;\n\n\t\tif ( url.indexOf( 'data:' ) === 0 ) {\n\n\t\t\timage.src = url;\n\n\t\t} else {\n\n\t\t\tvar loader = new FileLoader();\n\t\t\tloader.setPath( this.path );\n\t\t\tloader.setResponseType( 'blob' );\n\t\t\tloader.setWithCredentials( this.withCredentials );\n\t\t\tloader.load( url, function ( blob ) {\n\n\t\t\t\timage.src = URL.createObjectURL( blob );\n\n\t\t\t}, onProgress, onError );\n\n\t\t}\n\n\t\tscope.manager.itemStart( url );\n\n\t\treturn image;\n\n\t},\n\n\tsetCrossOrigin: function ( value ) {\n\n\t\tthis.crossOrigin = value;\n\t\treturn this;\n\n\t},\n\n\tsetWithCredentials: function ( value ) {\n\n\t\tthis.withCredentials = value;\n\t\treturn this;\n\n\t},\n\n\tsetPath: function ( value ) {\n\n\t\tthis.path = value;\n\t\treturn this;\n\n\t}\n\n} );\n\n\nexport { ImageLoader };\n","import { ImageLoader } from './ImageLoader';\nimport { CubeTexture } from '../textures/CubeTexture';\nimport { DefaultLoadingManager } from './LoadingManager';\n\n/**\n * @author mrdoob / http://mrdoob.com/\n */\n\nfunction CubeTextureLoader( manager ) {\n\n\tthis.manager = ( manager !== undefined ) ? manager : DefaultLoadingManager;\n\n}\n\nObject.assign( CubeTextureLoader.prototype, {\n\n\tload: function ( urls, onLoad, onProgress, onError ) {\n\n\t\tvar texture = new CubeTexture();\n\n\t\tvar loader = new ImageLoader( this.manager );\n\t\tloader.setCrossOrigin( this.crossOrigin );\n\t\tloader.setPath( this.path );\n\n\t\tvar loaded = 0;\n\n\t\tfunction loadTexture( i ) {\n\n\t\t\tloader.load( urls[ i ], function ( image ) {\n\n\t\t\t\ttexture.images[ i ] = image;\n\n\t\t\t\tloaded ++;\n\n\t\t\t\tif ( loaded === 6 ) {\n\n\t\t\t\t\ttexture.needsUpdate = true;\n\n\t\t\t\t\tif ( onLoad ) onLoad( texture );\n\n\t\t\t\t}\n\n\t\t\t}, undefined, onError );\n\n\t\t}\n\n\t\tfor ( var i = 0; i < urls.length; ++ i ) {\n\n\t\t\tloadTexture( i );\n\n\t\t}\n\n\t\treturn texture;\n\n\t},\n\n\tsetCrossOrigin: function ( value ) {\n\n\t\tthis.crossOrigin = value;\n\t\treturn this;\n\n\t},\n\n\tsetPath: function ( value ) {\n\n\t\tthis.path = value;\n\t\treturn this;\n\n\t}\n\n} );\n\n\nexport { CubeTextureLoader };\n","import { RGBAFormat, RGBFormat } from '../constants';\nimport { ImageLoader } from './ImageLoader';\nimport { Texture } from '../textures/Texture';\nimport { DefaultLoadingManager } from './LoadingManager';\n\n/**\n * @author mrdoob / http://mrdoob.com/\n */\n\nfunction TextureLoader( manager ) {\n\n\tthis.manager = ( manager !== undefined ) ? manager : DefaultLoadingManager;\n\n}\n\nObject.assign( TextureLoader.prototype, {\n\n\tload: function ( url, onLoad, onProgress, onError ) {\n\n\t\tvar texture = new Texture();\n\n\t\tvar loader = new ImageLoader( this.manager );\n\t\tloader.setCrossOrigin( this.crossOrigin );\n\t\tloader.setWithCredentials( this.withCredentials );\n\t\tloader.setPath( this.path );\n\t\tloader.load( url, function ( image ) {\n\n\t\t\t// JPEGs can't have an alpha channel, so memory can be saved by storing them as RGB.\n\t\t\tvar isJPEG = url.search( /\\.(jpg|jpeg)$/ ) > 0 || url.search( /^data\\:image\\/jpeg/ ) === 0;\n\n\t\t\ttexture.format = isJPEG ? RGBFormat : RGBAFormat;\n\t\t\ttexture.image = image;\n\t\t\ttexture.needsUpdate = true;\n\n\t\t\tif ( onLoad !== undefined ) {\n\n\t\t\t\tonLoad( texture );\n\n\t\t\t}\n\n\t\t}, onProgress, onError );\n\n\t\treturn texture;\n\n\t},\n\n\tsetCrossOrigin: function ( value ) {\n\n\t\tthis.crossOrigin = value;\n\t\treturn this;\n\n\t},\n\n\tsetWithCredentials: function ( value ) {\n\n\t\tthis.withCredentials = value;\n\t\treturn this;\n\n\t},\n\n\tsetPath: function ( value ) {\n\n\t\tthis.path = value;\n\t\treturn this;\n\n\t}\n\n\n\n} );\n\n\nexport { TextureLoader };\n","import { Object3D } from '../core/Object3D';\nimport { Color } from '../math/Color';\n\n/**\n * @author mrdoob / http://mrdoob.com/\n * @author alteredq / http://alteredqualia.com/\n */\n\nfunction Light( color, intensity ) {\n\n\tObject3D.call( this );\n\n\tthis.type = 'Light';\n\n\tthis.color = new Color( color );\n\tthis.intensity = intensity !== undefined ? intensity : 1;\n\n\tthis.receiveShadow = undefined;\n\n}\n\nLight.prototype = Object.assign( Object.create( Object3D.prototype ), {\n\n\tconstructor: Light,\n\n\tisLight: true,\n\n\tcopy: function ( source ) {\n\n\t\tObject3D.prototype.copy.call( this, source );\n\n\t\tthis.color.copy( source.color );\n\t\tthis.intensity = source.intensity;\n\n\t\treturn this;\n\n\t},\n\n\ttoJSON: function ( meta ) {\n\n\t\tvar data = Object3D.prototype.toJSON.call( this, meta );\n\n\t\tdata.object.color = this.color.getHex();\n\t\tdata.object.intensity = this.intensity;\n\n\t\tif ( this.groundColor !== undefined ) data.object.groundColor = this.groundColor.getHex();\n\n\t\tif ( this.distance !== undefined ) data.object.distance = this.distance;\n\t\tif ( this.angle !== undefined ) data.object.angle = this.angle;\n\t\tif ( this.decay !== undefined ) data.object.decay = this.decay;\n\t\tif ( this.penumbra !== undefined ) data.object.penumbra = this.penumbra;\n\n\t\tif ( this.shadow !== undefined ) data.object.shadow = this.shadow.toJSON();\n\n\t\treturn data;\n\n\t}\n\n} );\n\n\nexport { Light };\n","import { Light } from './Light';\nimport { Color } from '../math/Color';\nimport { Object3D } from '../core/Object3D';\n\n/**\n * @author alteredq / http://alteredqualia.com/\n */\n\nfunction HemisphereLight( skyColor, groundColor, intensity ) {\n\n\tLight.call( this, skyColor, intensity );\n\n\tthis.type = 'HemisphereLight';\n\n\tthis.castShadow = undefined;\n\n\tthis.position.copy( Object3D.DefaultUp );\n\tthis.updateMatrix();\n\n\tthis.groundColor = new Color( groundColor );\n\n}\n\nHemisphereLight.prototype = Object.assign( Object.create( Light.prototype ), {\n\n\tconstructor: HemisphereLight,\n\n\tisHemisphereLight: true,\n\n\tcopy: function ( source ) {\n\n\t\tLight.prototype.copy.call( this, source );\n\n\t\tthis.groundColor.copy( source.groundColor );\n\n\t\treturn this;\n\n\t}\n\n} );\n\n\nexport { HemisphereLight };\n","import { Matrix4 } from '../math/Matrix4';\nimport { Vector2 } from '../math/Vector2';\n\n/**\n * @author mrdoob / http://mrdoob.com/\n */\n\nfunction LightShadow( camera ) {\n\n\tthis.camera = camera;\n\n\tthis.bias = 0;\n\tthis.radius = 1;\n\n\tthis.mapSize = new Vector2( 512, 512 );\n\n\tthis.map = null;\n\tthis.matrix = new Matrix4();\n\n}\n\nObject.assign( LightShadow.prototype, {\n\n\tcopy: function ( source ) {\n\n\t\tthis.camera = source.camera.clone();\n\n\t\tthis.bias = source.bias;\n\t\tthis.radius = source.radius;\n\n\t\tthis.mapSize.copy( source.mapSize );\n\n\t\treturn this;\n\n\t},\n\n\tclone: function () {\n\n\t\treturn new this.constructor().copy( this );\n\n\t},\n\n\ttoJSON: function () {\n\n\t\tvar object = {};\n\n\t\tif ( this.bias !== 0 ) object.bias = this.bias;\n\t\tif ( this.radius !== 1 ) object.radius = this.radius;\n\t\tif ( this.mapSize.x !== 512 || this.mapSize.y !== 512 ) object.mapSize = this.mapSize.toArray();\n\n\t\tobject.camera = this.camera.toJSON( false ).object;\n\t\tdelete object.camera.matrix;\n\n\t\treturn object;\n\n\t}\n\n} );\n\n\nexport { LightShadow };\n","import { LightShadow } from './LightShadow';\nimport { _Math } from '../math/Math';\nimport { PerspectiveCamera } from '../cameras/PerspectiveCamera';\n\n/**\n * @author mrdoob / http://mrdoob.com/\n */\n\nfunction SpotLightShadow() {\n\n\tLightShadow.call( this, new PerspectiveCamera( 50, 1, 0.5, 500 ) );\n\n}\n\nSpotLightShadow.prototype = Object.assign( Object.create( LightShadow.prototype ), {\n\n\tconstructor: SpotLightShadow,\n\n\tisSpotLightShadow: true,\n\n\tupdate: function ( light ) {\n\n\t\tvar fov = _Math.RAD2DEG * 2 * light.angle;\n\t\tvar aspect = this.mapSize.width / this.mapSize.height;\n\t\tvar far = light.distance || 500;\n\n\t\tvar camera = this.camera;\n\n\t\tif ( fov !== camera.fov || aspect !== camera.aspect || far !== camera.far ) {\n\n\t\t\tcamera.fov = fov;\n\t\t\tcamera.aspect = aspect;\n\t\t\tcamera.far = far;\n\t\t\tcamera.updateProjectionMatrix();\n\n\t\t}\n\n\t}\n\n} );\n\n\nexport { SpotLightShadow };\n","import { Light } from './Light';\nimport { SpotLightShadow } from './SpotLightShadow';\nimport { Object3D } from '../core/Object3D';\n\n/**\n * @author alteredq / http://alteredqualia.com/\n */\n\nfunction SpotLight( color, intensity, distance, angle, penumbra, decay ) {\n\n\tLight.call( this, color, intensity );\n\n\tthis.type = 'SpotLight';\n\n\tthis.position.copy( Object3D.DefaultUp );\n\tthis.updateMatrix();\n\n\tthis.target = new Object3D();\n\n\tObject.defineProperty( this, 'power', {\n\t\tget: function () {\n\t\t\t// intensity = power per solid angle.\n\t\t\t// ref: equation (17) from http://www.frostbite.com/wp-content/uploads/2014/11/course_notes_moving_frostbite_to_pbr.pdf\n\t\t\treturn this.intensity * Math.PI;\n\t\t},\n\t\tset: function ( power ) {\n\t\t\t// intensity = power per solid angle.\n\t\t\t// ref: equation (17) from http://www.frostbite.com/wp-content/uploads/2014/11/course_notes_moving_frostbite_to_pbr.pdf\n\t\t\tthis.intensity = power / Math.PI;\n\t\t}\n\t} );\n\n\tthis.distance = ( distance !== undefined ) ? distance : 0;\n\tthis.angle = ( angle !== undefined ) ? angle : Math.PI / 3;\n\tthis.penumbra = ( penumbra !== undefined ) ? penumbra : 0;\n\tthis.decay = ( decay !== undefined ) ? decay : 1;\t// for physically correct lights, should be 2.\n\n\tthis.shadow = new SpotLightShadow();\n\n}\n\nSpotLight.prototype = Object.assign( Object.create( Light.prototype ), {\n\n\tconstructor: SpotLight,\n\n\tisSpotLight: true,\n\n\tcopy: function ( source ) {\n\n\t\tLight.prototype.copy.call( this, source );\n\n\t\tthis.distance = source.distance;\n\t\tthis.angle = source.angle;\n\t\tthis.penumbra = source.penumbra;\n\t\tthis.decay = source.decay;\n\n\t\tthis.target = source.target.clone();\n\n\t\tthis.shadow = source.shadow.clone();\n\n\t\treturn this;\n\n\t}\n\n} );\n\n\nexport { SpotLight };\n","import { Light } from './Light';\nimport { PerspectiveCamera } from '../cameras/PerspectiveCamera';\nimport { LightShadow } from './LightShadow';\n\n/**\n * @author mrdoob / http://mrdoob.com/\n */\n\n\nfunction PointLight( color, intensity, distance, decay ) {\n\n\tLight.call( this, color, intensity );\n\n\tthis.type = 'PointLight';\n\n\tObject.defineProperty( this, 'power', {\n\t\tget: function () {\n\t\t\t// intensity = power per solid angle.\n\t\t\t// ref: equation (15) from http://www.frostbite.com/wp-content/uploads/2014/11/course_notes_moving_frostbite_to_pbr.pdf\n\t\t\treturn this.intensity * 4 * Math.PI;\n\n\t\t},\n\t\tset: function ( power ) {\n\t\t\t// intensity = power per solid angle.\n\t\t\t// ref: equation (15) from http://www.frostbite.com/wp-content/uploads/2014/11/course_notes_moving_frostbite_to_pbr.pdf\n\t\t\tthis.intensity = power / ( 4 * Math.PI );\n\t\t}\n\t} );\n\n\tthis.distance = ( distance !== undefined ) ? distance : 0;\n\tthis.decay = ( decay !== undefined ) ? decay : 1;\t// for physically correct lights, should be 2.\n\n\tthis.shadow = new LightShadow( new PerspectiveCamera( 90, 1, 0.5, 500 ) );\n\n}\n\nPointLight.prototype = Object.assign( Object.create( Light.prototype ), {\n\n\tconstructor: PointLight,\n\n\tisPointLight: true,\n\n\tcopy: function ( source ) {\n\n\t\tLight.prototype.copy.call( this, source );\n\n\t\tthis.distance = source.distance;\n\t\tthis.decay = source.decay;\n\n\t\tthis.shadow = source.shadow.clone();\n\n\t\treturn this;\n\n\t}\n\n} );\n\n\nexport { PointLight };\n","import { LightShadow } from './LightShadow';\nimport { OrthographicCamera } from '../cameras/OrthographicCamera';\n\n/**\n * @author mrdoob / http://mrdoob.com/\n */\n\nfunction DirectionalLightShadow( light ) {\n\n\tLightShadow.call( this, new OrthographicCamera( - 5, 5, 5, - 5, 0.5, 500 ) );\n\n}\n\nDirectionalLightShadow.prototype = Object.assign( Object.create( LightShadow.prototype ), {\n\n\tconstructor: DirectionalLightShadow\n\n} );\n\n\nexport { DirectionalLightShadow };\n","import { Light } from './Light';\nimport { DirectionalLightShadow } from './DirectionalLightShadow';\nimport { Object3D } from '../core/Object3D';\n\n/**\n * @author mrdoob / http://mrdoob.com/\n * @author alteredq / http://alteredqualia.com/\n */\n\nfunction DirectionalLight( color, intensity ) {\n\n\tLight.call( this, color, intensity );\n\n\tthis.type = 'DirectionalLight';\n\n\tthis.position.copy( Object3D.DefaultUp );\n\tthis.updateMatrix();\n\n\tthis.target = new Object3D();\n\n\tthis.shadow = new DirectionalLightShadow();\n\n}\n\nDirectionalLight.prototype = Object.assign( Object.create( Light.prototype ), {\n\n\tconstructor: DirectionalLight,\n\n\tisDirectionalLight: true,\n\n\tcopy: function ( source ) {\n\n\t\tLight.prototype.copy.call( this, source );\n\n\t\tthis.target = source.target.clone();\n\n\t\tthis.shadow = source.shadow.clone();\n\n\t\treturn this;\n\n\t}\n\n} );\n\n\nexport { DirectionalLight };\n","import { Light } from './Light';\n\n/**\n * @author mrdoob / http://mrdoob.com/\n */\n\nfunction AmbientLight( color, intensity ) {\n\n\tLight.call( this, color, intensity );\n\n\tthis.type = 'AmbientLight';\n\n\tthis.castShadow = undefined;\n\n}\n\nAmbientLight.prototype = Object.assign( Object.create( Light.prototype ), {\n\n\tconstructor: AmbientLight,\n\n\tisAmbientLight: true,\n\n} );\n\n\nexport { AmbientLight };\n","/**\n * @author tschw\n * @author Ben Houston / http://clara.io/\n * @author David Sarno / http://lighthaus.us/\n */\n\nvar AnimationUtils = {\n\n\t// same as Array.prototype.slice, but also works on typed arrays\n\tarraySlice: function( array, from, to ) {\n\n\t\tif ( AnimationUtils.isTypedArray( array ) ) {\n\n\t\t\treturn new array.constructor( array.subarray( from, to ) );\n\n\t\t}\n\n\t\treturn array.slice( from, to );\n\n\t},\n\n\t// converts an array to a specific type\n\tconvertArray: function( array, type, forceClone ) {\n\n\t\tif ( ! array || // let 'undefined' and 'null' pass\n\t\t\t\t! forceClone && array.constructor === type ) return array;\n\n\t\tif ( typeof type.BYTES_PER_ELEMENT === 'number' ) {\n\n\t\t\treturn new type( array ); // create typed array\n\n\t\t}\n\n\t\treturn Array.prototype.slice.call( array ); // create Array\n\n\t},\n\n\tisTypedArray: function( object ) {\n\n\t\treturn ArrayBuffer.isView( object ) &&\n\t\t\t\t! ( object instanceof DataView );\n\n\t},\n\n\t// returns an array by which times and values can be sorted\n\tgetKeyframeOrder: function( times ) {\n\n\t\tfunction compareTime( i, j ) {\n\n\t\t\treturn times[ i ] - times[ j ];\n\n\t\t}\n\n\t\tvar n = times.length;\n\t\tvar result = new Array( n );\n\t\tfor ( var i = 0; i !== n; ++ i ) result[ i ] = i;\n\n\t\tresult.sort( compareTime );\n\n\t\treturn result;\n\n\t},\n\n\t// uses the array previously returned by 'getKeyframeOrder' to sort data\n\tsortedArray: function( values, stride, order ) {\n\n\t\tvar nValues = values.length;\n\t\tvar result = new values.constructor( nValues );\n\n\t\tfor ( var i = 0, dstOffset = 0; dstOffset !== nValues; ++ i ) {\n\n\t\t\tvar srcOffset = order[ i ] * stride;\n\n\t\t\tfor ( var j = 0; j !== stride; ++ j ) {\n\n\t\t\t\tresult[ dstOffset ++ ] = values[ srcOffset + j ];\n\n\t\t\t}\n\n\t\t}\n\n\t\treturn result;\n\n\t},\n\n\t// function for parsing AOS keyframe formats\n\tflattenJSON: function( jsonKeys, times, values, valuePropertyName ) {\n\n\t\tvar i = 1, key = jsonKeys[ 0 ];\n\n\t\twhile ( key !== undefined && key[ valuePropertyName ] === undefined ) {\n\n\t\t\tkey = jsonKeys[ i ++ ];\n\n\t\t}\n\n\t\tif ( key === undefined ) return; // no data\n\n\t\tvar value = key[ valuePropertyName ];\n\t\tif ( value === undefined ) return; // no data\n\n\t\tif ( Array.isArray( value ) ) {\n\n\t\t\tdo {\n\n\t\t\t\tvalue = key[ valuePropertyName ];\n\n\t\t\t\tif ( value !== undefined ) {\n\n\t\t\t\t\ttimes.push( key.time );\n\t\t\t\t\tvalues.push.apply( values, value ); // push all elements\n\n\t\t\t\t}\n\n\t\t\t\tkey = jsonKeys[ i ++ ];\n\n\t\t\t} while ( key !== undefined );\n\n\t\t} else if ( value.toArray !== undefined ) {\n\t\t\t// ...assume THREE.Math-ish\n\n\t\t\tdo {\n\n\t\t\t\tvalue = key[ valuePropertyName ];\n\n\t\t\t\tif ( value !== undefined ) {\n\n\t\t\t\t\ttimes.push( key.time );\n\t\t\t\t\tvalue.toArray( values, values.length );\n\n\t\t\t\t}\n\n\t\t\t\tkey = jsonKeys[ i ++ ];\n\n\t\t\t} while ( key !== undefined );\n\n\t\t} else {\n\t\t\t// otherwise push as-is\n\n\t\t\tdo {\n\n\t\t\t\tvalue = key[ valuePropertyName ];\n\n\t\t\t\tif ( value !== undefined ) {\n\n\t\t\t\t\ttimes.push( key.time );\n\t\t\t\t\tvalues.push( value );\n\n\t\t\t\t}\n\n\t\t\t\tkey = jsonKeys[ i ++ ];\n\n\t\t\t} while ( key !== undefined );\n\n\t\t}\n\n\t}\n\n};\n\n\nexport { AnimationUtils };\n","/**\n * Abstract base class of interpolants over parametric samples.\n *\n * The parameter domain is one dimensional, typically the time or a path\n * along a curve defined by the data.\n *\n * The sample values can have any dimensionality and derived classes may\n * apply special interpretations to the data.\n *\n * This class provides the interval seek in a Template Method, deferring\n * the actual interpolation to derived classes.\n *\n * Time complexity is O(1) for linear access crossing at most two points\n * and O(log N) for random access, where N is the number of positions.\n *\n * References:\n *\n * \t\thttp://www.oodesign.com/template-method-pattern.html\n *\n * @author tschw\n */\n\nfunction Interpolant(\n\t\tparameterPositions, sampleValues, sampleSize, resultBuffer ) {\n\n\tthis.parameterPositions = parameterPositions;\n\tthis._cachedIndex = 0;\n\n\tthis.resultBuffer = resultBuffer !== undefined ?\n\t\t\tresultBuffer : new sampleValues.constructor( sampleSize );\n\tthis.sampleValues = sampleValues;\n\tthis.valueSize = sampleSize;\n\n}\n\nInterpolant.prototype = {\n\n\tconstructor: Interpolant,\n\n\tevaluate: function( t ) {\n\n\t\tvar pp = this.parameterPositions,\n\t\t\ti1 = this._cachedIndex,\n\n\t\t\tt1 = pp[ i1 ],\n\t\t\tt0 = pp[ i1 - 1 ];\n\n\t\tvalidate_interval: {\n\n\t\t\tseek: {\n\n\t\t\t\tvar right;\n\n\t\t\t\tlinear_scan: {\n//- See http://jsperf.com/comparison-to-undefined/3\n//- slower code:\n//-\n//- \t\t\t\tif ( t >= t1 || t1 === undefined ) {\n\t\t\t\t\tforward_scan: if ( ! ( t < t1 ) ) {\n\n\t\t\t\t\t\tfor ( var giveUpAt = i1 + 2; ;) {\n\n\t\t\t\t\t\t\tif ( t1 === undefined ) {\n\n\t\t\t\t\t\t\t\tif ( t < t0 ) break forward_scan;\n\n\t\t\t\t\t\t\t\t// after end\n\n\t\t\t\t\t\t\t\ti1 = pp.length;\n\t\t\t\t\t\t\t\tthis._cachedIndex = i1;\n\t\t\t\t\t\t\t\treturn this.afterEnd_( i1 - 1, t, t0 );\n\n\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\tif ( i1 === giveUpAt ) break; // this loop\n\n\t\t\t\t\t\t\tt0 = t1;\n\t\t\t\t\t\t\tt1 = pp[ ++ i1 ];\n\n\t\t\t\t\t\t\tif ( t < t1 ) {\n\n\t\t\t\t\t\t\t\t// we have arrived at the sought interval\n\t\t\t\t\t\t\t\tbreak seek;\n\n\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\t// prepare binary search on the right side of the index\n\t\t\t\t\t\tright = pp.length;\n\t\t\t\t\t\tbreak linear_scan;\n\n\t\t\t\t\t}\n\n//- slower code:\n//-\t\t\t\t\tif ( t < t0 || t0 === undefined ) {\n\t\t\t\t\tif ( ! ( t >= t0 ) ) {\n\n\t\t\t\t\t\t// looping?\n\n\t\t\t\t\t\tvar t1global = pp[ 1 ];\n\n\t\t\t\t\t\tif ( t < t1global ) {\n\n\t\t\t\t\t\t\ti1 = 2; // + 1, using the scan for the details\n\t\t\t\t\t\t\tt0 = t1global;\n\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\t// linear reverse scan\n\n\t\t\t\t\t\tfor ( var giveUpAt = i1 - 2; ;) {\n\n\t\t\t\t\t\t\tif ( t0 === undefined ) {\n\n\t\t\t\t\t\t\t\t// before start\n\n\t\t\t\t\t\t\t\tthis._cachedIndex = 0;\n\t\t\t\t\t\t\t\treturn this.beforeStart_( 0, t, t1 );\n\n\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\tif ( i1 === giveUpAt ) break; // this loop\n\n\t\t\t\t\t\t\tt1 = t0;\n\t\t\t\t\t\t\tt0 = pp[ -- i1 - 1 ];\n\n\t\t\t\t\t\t\tif ( t >= t0 ) {\n\n\t\t\t\t\t\t\t\t// we have arrived at the sought interval\n\t\t\t\t\t\t\t\tbreak seek;\n\n\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\t// prepare binary search on the left side of the index\n\t\t\t\t\t\tright = i1;\n\t\t\t\t\t\ti1 = 0;\n\t\t\t\t\t\tbreak linear_scan;\n\n\t\t\t\t\t}\n\n\t\t\t\t\t// the interval is valid\n\n\t\t\t\t\tbreak validate_interval;\n\n\t\t\t\t} // linear scan\n\n\t\t\t\t// binary search\n\n\t\t\t\twhile ( i1 < right ) {\n\n\t\t\t\t\tvar mid = ( i1 + right ) >>> 1;\n\n\t\t\t\t\tif ( t < pp[ mid ] ) {\n\n\t\t\t\t\t\tright = mid;\n\n\t\t\t\t\t} else {\n\n\t\t\t\t\t\ti1 = mid + 1;\n\n\t\t\t\t\t}\n\n\t\t\t\t}\n\n\t\t\t\tt1 = pp[ i1 ];\n\t\t\t\tt0 = pp[ i1 - 1 ];\n\n\t\t\t\t// check boundary cases, again\n\n\t\t\t\tif ( t0 === undefined ) {\n\n\t\t\t\t\tthis._cachedIndex = 0;\n\t\t\t\t\treturn this.beforeStart_( 0, t, t1 );\n\n\t\t\t\t}\n\n\t\t\t\tif ( t1 === undefined ) {\n\n\t\t\t\t\ti1 = pp.length;\n\t\t\t\t\tthis._cachedIndex = i1;\n\t\t\t\t\treturn this.afterEnd_( i1 - 1, t0, t );\n\n\t\t\t\t}\n\n\t\t\t} // seek\n\n\t\t\tthis._cachedIndex = i1;\n\n\t\t\tthis.intervalChanged_( i1, t0, t1 );\n\n\t\t} // validate_interval\n\n\t\treturn this.interpolate_( i1, t0, t, t1 );\n\n\t},\n\n\tsettings: null, // optional, subclass-specific settings structure\n\t// Note: The indirection allows central control of many interpolants.\n\n\t// --- Protected interface\n\n\tDefaultSettings_: {},\n\n\tgetSettings_: function() {\n\n\t\treturn this.settings || this.DefaultSettings_;\n\n\t},\n\n\tcopySampleValue_: function( index ) {\n\n\t\t// copies a sample value to the result buffer\n\n\t\tvar result = this.resultBuffer,\n\t\t\tvalues = this.sampleValues,\n\t\t\tstride = this.valueSize,\n\t\t\toffset = index * stride;\n\n\t\tfor ( var i = 0; i !== stride; ++ i ) {\n\n\t\t\tresult[ i ] = values[ offset + i ];\n\n\t\t}\n\n\t\treturn result;\n\n\t},\n\n\t// Template methods for derived classes:\n\n\tinterpolate_: function( i1, t0, t, t1 ) {\n\n\t\tthrow new Error( \"call to abstract method\" );\n\t\t// implementations shall return this.resultBuffer\n\n\t},\n\n\tintervalChanged_: function( i1, t0, t1 ) {\n\n\t\t// empty\n\n\t}\n\n};\n\nObject.assign( Interpolant.prototype, {\n\n\tbeforeStart_: //( 0, t, t0 ), returns this.resultBuffer\n\t\tInterpolant.prototype.copySampleValue_,\n\n\tafterEnd_: //( N-1, tN-1, t ), returns this.resultBuffer\n\t\tInterpolant.prototype.copySampleValue_\n\n} );\n\n\nexport { Interpolant };\n","import { ZeroCurvatureEnding } from '../../constants';\nimport { Interpolant } from '../Interpolant';\nimport { WrapAroundEnding, ZeroSlopeEnding } from '../../constants';\n\n/**\n * Fast and simple cubic spline interpolant.\n *\n * It was derived from a Hermitian construction setting the first derivative\n * at each sample position to the linear slope between neighboring positions\n * over their parameter interval.\n *\n * @author tschw\n */\n\nfunction CubicInterpolant(\n\t\tparameterPositions, sampleValues, sampleSize, resultBuffer ) {\n\n\tInterpolant.call(\n\t\t\tthis, parameterPositions, sampleValues, sampleSize, resultBuffer );\n\n\tthis._weightPrev = -0;\n\tthis._offsetPrev = -0;\n\tthis._weightNext = -0;\n\tthis._offsetNext = -0;\n\n}\n\nCubicInterpolant.prototype =\n\t\tObject.assign( Object.create( Interpolant.prototype ), {\n\n\tconstructor: CubicInterpolant,\n\n\tDefaultSettings_: {\n\n\t\tendingStart: \tZeroCurvatureEnding,\n\t\tendingEnd:\t\tZeroCurvatureEnding\n\n\t},\n\n\tintervalChanged_: function( i1, t0, t1 ) {\n\n\t\tvar pp = this.parameterPositions,\n\t\t\tiPrev = i1 - 2,\n\t\t\tiNext = i1 + 1,\n\n\t\t\ttPrev = pp[ iPrev ],\n\t\t\ttNext = pp[ iNext ];\n\n\t\tif ( tPrev === undefined ) {\n\n\t\t\tswitch ( this.getSettings_().endingStart ) {\n\n\t\t\t\tcase ZeroSlopeEnding:\n\n\t\t\t\t\t// f'(t0) = 0\n\t\t\t\t\tiPrev = i1;\n\t\t\t\t\ttPrev = 2 * t0 - t1;\n\n\t\t\t\t\tbreak;\n\n\t\t\t\tcase WrapAroundEnding:\n\n\t\t\t\t\t// use the other end of the curve\n\t\t\t\t\tiPrev = pp.length - 2;\n\t\t\t\t\ttPrev = t0 + pp[ iPrev ] - pp[ iPrev + 1 ];\n\n\t\t\t\t\tbreak;\n\n\t\t\t\tdefault: // ZeroCurvatureEnding\n\n\t\t\t\t\t// f''(t0) = 0 a.k.a. Natural Spline\n\t\t\t\t\tiPrev = i1;\n\t\t\t\t\ttPrev = t1;\n\n\t\t\t}\n\n\t\t}\n\n\t\tif ( tNext === undefined ) {\n\n\t\t\tswitch ( this.getSettings_().endingEnd ) {\n\n\t\t\t\tcase ZeroSlopeEnding:\n\n\t\t\t\t\t// f'(tN) = 0\n\t\t\t\t\tiNext = i1;\n\t\t\t\t\ttNext = 2 * t1 - t0;\n\n\t\t\t\t\tbreak;\n\n\t\t\t\tcase WrapAroundEnding:\n\n\t\t\t\t\t// use the other end of the curve\n\t\t\t\t\tiNext = 1;\n\t\t\t\t\ttNext = t1 + pp[ 1 ] - pp[ 0 ];\n\n\t\t\t\t\tbreak;\n\n\t\t\t\tdefault: // ZeroCurvatureEnding\n\n\t\t\t\t\t// f''(tN) = 0, a.k.a. Natural Spline\n\t\t\t\t\tiNext = i1 - 1;\n\t\t\t\t\ttNext = t0;\n\n\t\t\t}\n\n\t\t}\n\n\t\tvar halfDt = ( t1 - t0 ) * 0.5,\n\t\t\tstride = this.valueSize;\n\n\t\tthis._weightPrev = halfDt / ( t0 - tPrev );\n\t\tthis._weightNext = halfDt / ( tNext - t1 );\n\t\tthis._offsetPrev = iPrev * stride;\n\t\tthis._offsetNext = iNext * stride;\n\n\t},\n\n\tinterpolate_: function( i1, t0, t, t1 ) {\n\n\t\tvar result = this.resultBuffer,\n\t\t\tvalues = this.sampleValues,\n\t\t\tstride = this.valueSize,\n\n\t\t\to1 = i1 * stride,\t\to0 = o1 - stride,\n\t\t\toP = this._offsetPrev, \toN = this._offsetNext,\n\t\t\twP = this._weightPrev,\twN = this._weightNext,\n\n\t\t\tp = ( t - t0 ) / ( t1 - t0 ),\n\t\t\tpp = p * p,\n\t\t\tppp = pp * p;\n\n\t\t// evaluate polynomials\n\n\t\tvar sP = - wP * ppp + 2 * wP * pp - wP * p;\n\t\tvar s0 = ( 1 + wP ) * ppp + (-1.5 - 2 * wP ) * pp + ( -0.5 + wP ) * p + 1;\n\t\tvar s1 = (-1 - wN ) * ppp + ( 1.5 + wN ) * pp + 0.5 * p;\n\t\tvar sN = wN * ppp - wN * pp;\n\n\t\t// combine data linearly\n\n\t\tfor ( var i = 0; i !== stride; ++ i ) {\n\n\t\t\tresult[ i ] =\n\t\t\t\t\tsP * values[ oP + i ] +\n\t\t\t\t\ts0 * values[ o0 + i ] +\n\t\t\t\t\ts1 * values[ o1 + i ] +\n\t\t\t\t\tsN * values[ oN + i ];\n\n\t\t}\n\n\t\treturn result;\n\n\t}\n\n} );\n\n\nexport { CubicInterpolant };\n","import { Interpolant } from '../Interpolant';\n\n/**\n * @author tschw\n */\n\nfunction LinearInterpolant(\n\t\tparameterPositions, sampleValues, sampleSize, resultBuffer ) {\n\n\tInterpolant.call(\n\t\t\tthis, parameterPositions, sampleValues, sampleSize, resultBuffer );\n\n}\n\nLinearInterpolant.prototype =\n\t\tObject.assign( Object.create( Interpolant.prototype ), {\n\n\tconstructor: LinearInterpolant,\n\n\tinterpolate_: function( i1, t0, t, t1 ) {\n\n\t\tvar result = this.resultBuffer,\n\t\t\tvalues = this.sampleValues,\n\t\t\tstride = this.valueSize,\n\n\t\t\toffset1 = i1 * stride,\n\t\t\toffset0 = offset1 - stride,\n\n\t\t\tweight1 = ( t - t0 ) / ( t1 - t0 ),\n\t\t\tweight0 = 1 - weight1;\n\n\t\tfor ( var i = 0; i !== stride; ++ i ) {\n\n\t\t\tresult[ i ] =\n\t\t\t\t\tvalues[ offset0 + i ] * weight0 +\n\t\t\t\t\tvalues[ offset1 + i ] * weight1;\n\n\t\t}\n\n\t\treturn result;\n\n\t}\n\n} );\n\n\nexport { LinearInterpolant };\n","import { Interpolant } from '../Interpolant';\n\n/**\n *\n * Interpolant that evaluates to the sample value at the position preceeding\n * the parameter.\n *\n * @author tschw\n */\n\nfunction DiscreteInterpolant(\n\t\tparameterPositions, sampleValues, sampleSize, resultBuffer ) {\n\n\tInterpolant.call(\n\t\t\tthis, parameterPositions, sampleValues, sampleSize, resultBuffer );\n\n}\n\nDiscreteInterpolant.prototype =\n\t\tObject.assign( Object.create( Interpolant.prototype ), {\n\n\tconstructor: DiscreteInterpolant,\n\n\tinterpolate_: function( i1, t0, t, t1 ) {\n\n\t\treturn this.copySampleValue_( i1 - 1 );\n\n\t}\n\n} );\n\n\nexport { DiscreteInterpolant };\n","import { InterpolateLinear } from '../constants';\nimport { AnimationUtils } from './AnimationUtils';\nimport { InterpolateSmooth, InterpolateDiscrete } from '../constants';\nimport { CubicInterpolant } from '../math/interpolants/CubicInterpolant';\nimport { LinearInterpolant } from '../math/interpolants/LinearInterpolant';\nimport { DiscreteInterpolant } from '../math/interpolants/DiscreteInterpolant';\n\nvar KeyframeTrackPrototype;\n\nKeyframeTrackPrototype = {\n\n\tTimeBufferType: Float32Array,\n\tValueBufferType: Float32Array,\n\n\tDefaultInterpolation: InterpolateLinear,\n\n\tInterpolantFactoryMethodDiscrete: function( result ) {\n\n\t\treturn new DiscreteInterpolant(\n\t\t\t\tthis.times, this.values, this.getValueSize(), result );\n\n\t},\n\n\tInterpolantFactoryMethodLinear: function( result ) {\n\n\t\treturn new LinearInterpolant(\n\t\t\t\tthis.times, this.values, this.getValueSize(), result );\n\n\t},\n\n\tInterpolantFactoryMethodSmooth: function( result ) {\n\n\t\treturn new CubicInterpolant(\n\t\t\t\tthis.times, this.values, this.getValueSize(), result );\n\n\t},\n\n\tsetInterpolation: function( interpolation ) {\n\n\t\tvar factoryMethod;\n\n\t\tswitch ( interpolation ) {\n\n\t\t\tcase InterpolateDiscrete:\n\n\t\t\t\tfactoryMethod = this.InterpolantFactoryMethodDiscrete;\n\n\t\t\t\tbreak;\n\n\t\t\tcase InterpolateLinear:\n\n\t\t\t\tfactoryMethod = this.InterpolantFactoryMethodLinear;\n\n\t\t\t\tbreak;\n\n\t\t\tcase InterpolateSmooth:\n\n\t\t\t\tfactoryMethod = this.InterpolantFactoryMethodSmooth;\n\n\t\t\t\tbreak;\n\n\t\t}\n\n\t\tif ( factoryMethod === undefined ) {\n\n\t\t\tvar message = \"unsupported interpolation for \" +\n\t\t\t\t\tthis.ValueTypeName + \" keyframe track named \" + this.name;\n\n\t\t\tif ( this.createInterpolant === undefined ) {\n\n\t\t\t\t// fall back to default, unless the default itself is messed up\n\t\t\t\tif ( interpolation !== this.DefaultInterpolation ) {\n\n\t\t\t\t\tthis.setInterpolation( this.DefaultInterpolation );\n\n\t\t\t\t} else {\n\n\t\t\t\t\tthrow new Error( message ); // fatal, in this case\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t\tconsole.warn( message );\n\t\t\treturn;\n\n\t\t}\n\n\t\tthis.createInterpolant = factoryMethod;\n\n\t},\n\n\tgetInterpolation: function() {\n\n\t\tswitch ( this.createInterpolant ) {\n\n\t\t\tcase this.InterpolantFactoryMethodDiscrete:\n\n\t\t\t\treturn InterpolateDiscrete;\n\n\t\t\tcase this.InterpolantFactoryMethodLinear:\n\n\t\t\t\treturn InterpolateLinear;\n\n\t\t\tcase this.InterpolantFactoryMethodSmooth:\n\n\t\t\t\treturn InterpolateSmooth;\n\n\t\t}\n\n\t},\n\n\tgetValueSize: function() {\n\n\t\treturn this.values.length / this.times.length;\n\n\t},\n\n\t// move all keyframes either forwards or backwards in time\n\tshift: function( timeOffset ) {\n\n\t\tif( timeOffset !== 0.0 ) {\n\n\t\t\tvar times = this.times;\n\n\t\t\tfor( var i = 0, n = times.length; i !== n; ++ i ) {\n\n\t\t\t\ttimes[ i ] += timeOffset;\n\n\t\t\t}\n\n\t\t}\n\n\t\treturn this;\n\n\t},\n\n\t// scale all keyframe times by a factor (useful for frame <-> seconds conversions)\n\tscale: function( timeScale ) {\n\n\t\tif( timeScale !== 1.0 ) {\n\n\t\t\tvar times = this.times;\n\n\t\t\tfor( var i = 0, n = times.length; i !== n; ++ i ) {\n\n\t\t\t\ttimes[ i ] *= timeScale;\n\n\t\t\t}\n\n\t\t}\n\n\t\treturn this;\n\n\t},\n\n\t// removes keyframes before and after animation without changing any values within the range [startTime, endTime].\n\t// IMPORTANT: We do not shift around keys to the start of the track time, because for interpolated keys this will change their values\n\ttrim: function( startTime, endTime ) {\n\n\t\tvar times = this.times,\n\t\t\tnKeys = times.length,\n\t\t\tfrom = 0,\n\t\t\tto = nKeys - 1;\n\n\t\twhile ( from !== nKeys && times[ from ] < startTime ) ++ from;\n\t\twhile ( to !== -1 && times[ to ] > endTime ) -- to;\n\n\t\t++ to; // inclusive -> exclusive bound\n\n\t\tif( from !== 0 || to !== nKeys ) {\n\n\t\t\t// empty tracks are forbidden, so keep at least one keyframe\n\t\t\tif ( from >= to ) to = Math.max( to , 1 ), from = to - 1;\n\n\t\t\tvar stride = this.getValueSize();\n\t\t\tthis.times = AnimationUtils.arraySlice( times, from, to );\n\t\t\tthis.values = AnimationUtils.\n\t\t\t\t\tarraySlice( this.values, from * stride, to * stride );\n\n\t\t}\n\n\t\treturn this;\n\n\t},\n\n\t// ensure we do not get a GarbageInGarbageOut situation, make sure tracks are at least minimally viable\n\tvalidate: function() {\n\n\t\tvar valid = true;\n\n\t\tvar valueSize = this.getValueSize();\n\t\tif ( valueSize - Math.floor( valueSize ) !== 0 ) {\n\n\t\t\tconsole.error( \"invalid value size in track\", this );\n\t\t\tvalid = false;\n\n\t\t}\n\n\t\tvar times = this.times,\n\t\t\tvalues = this.values,\n\n\t\t\tnKeys = times.length;\n\n\t\tif( nKeys === 0 ) {\n\n\t\t\tconsole.error( \"track is empty\", this );\n\t\t\tvalid = false;\n\n\t\t}\n\n\t\tvar prevTime = null;\n\n\t\tfor( var i = 0; i !== nKeys; i ++ ) {\n\n\t\t\tvar currTime = times[ i ];\n\n\t\t\tif ( typeof currTime === 'number' && isNaN( currTime ) ) {\n\n\t\t\t\tconsole.error( \"time is not a valid number\", this, i, currTime );\n\t\t\t\tvalid = false;\n\t\t\t\tbreak;\n\n\t\t\t}\n\n\t\t\tif( prevTime !== null && prevTime > currTime ) {\n\n\t\t\t\tconsole.error( \"out of order keys\", this, i, currTime, prevTime );\n\t\t\t\tvalid = false;\n\t\t\t\tbreak;\n\n\t\t\t}\n\n\t\t\tprevTime = currTime;\n\n\t\t}\n\n\t\tif ( values !== undefined ) {\n\n\t\t\tif ( AnimationUtils.isTypedArray( values ) ) {\n\n\t\t\t\tfor ( var i = 0, n = values.length; i !== n; ++ i ) {\n\n\t\t\t\t\tvar value = values[ i ];\n\n\t\t\t\t\tif ( isNaN( value ) ) {\n\n\t\t\t\t\t\tconsole.error( \"value is not a valid number\", this, i, value );\n\t\t\t\t\t\tvalid = false;\n\t\t\t\t\t\tbreak;\n\n\t\t\t\t\t}\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t}\n\n\t\treturn valid;\n\n\t},\n\n\t// removes equivalent sequential keys as common in morph target sequences\n\t// (0,0,0,0,1,1,1,0,0,0,0,0,0,0) --> (0,0,1,1,0,0)\n\toptimize: function() {\n\n\t\tvar times = this.times,\n\t\t\tvalues = this.values,\n\t\t\tstride = this.getValueSize(),\n\n\t\t\tsmoothInterpolation = this.getInterpolation() === InterpolateSmooth,\n\n\t\t\twriteIndex = 1,\n\t\t\tlastIndex = times.length - 1;\n\n\t\tfor( var i = 1; i < lastIndex; ++ i ) {\n\n\t\t\tvar keep = false;\n\n\t\t\tvar time = times[ i ];\n\t\t\tvar timeNext = times[ i + 1 ];\n\n\t\t\t// remove adjacent keyframes scheduled at the same time\n\n\t\t\tif ( time !== timeNext && ( i !== 1 || time !== time[ 0 ] ) ) {\n\n\t\t\t\tif ( ! smoothInterpolation ) {\n\n\t\t\t\t\t// remove unnecessary keyframes same as their neighbors\n\n\t\t\t\t\tvar offset = i * stride,\n\t\t\t\t\t\toffsetP = offset - stride,\n\t\t\t\t\t\toffsetN = offset + stride;\n\n\t\t\t\t\tfor ( var j = 0; j !== stride; ++ j ) {\n\n\t\t\t\t\t\tvar value = values[ offset + j ];\n\n\t\t\t\t\t\tif ( value !== values[ offsetP + j ] ||\n\t\t\t\t\t\t\t\tvalue !== values[ offsetN + j ] ) {\n\n\t\t\t\t\t\t\tkeep = true;\n\t\t\t\t\t\t\tbreak;\n\n\t\t\t\t\t\t}\n\n\t\t\t\t\t}\n\n\t\t\t\t} else keep = true;\n\n\t\t\t}\n\n\t\t\t// in-place compaction\n\n\t\t\tif ( keep ) {\n\n\t\t\t\tif ( i !== writeIndex ) {\n\n\t\t\t\t\ttimes[ writeIndex ] = times[ i ];\n\n\t\t\t\t\tvar readOffset = i * stride,\n\t\t\t\t\t\twriteOffset = writeIndex * stride;\n\n\t\t\t\t\tfor ( var j = 0; j !== stride; ++ j )\n\n\t\t\t\t\t\tvalues[ writeOffset + j ] = values[ readOffset + j ];\n\n\t\t\t\t}\n\n\t\t\t\t++ writeIndex;\n\n\t\t\t}\n\n\t\t}\n\n\t\t// flush last keyframe (compaction looks ahead)\n\n\t\tif ( lastIndex > 0 ) {\n\n\t\t\ttimes[ writeIndex ] = times[ lastIndex ];\n\n\t\t\tfor ( var readOffset = lastIndex * stride, writeOffset = writeIndex * stride, j = 0; j !== stride; ++ j )\n\n\t\t\t\tvalues[ writeOffset + j ] = values[ readOffset + j ];\n\n\t\t\t++ writeIndex;\n\n\t\t}\n\n\t\tif ( writeIndex !== times.length ) {\n\n\t\t\tthis.times = AnimationUtils.arraySlice( times, 0, writeIndex );\n\t\t\tthis.values = AnimationUtils.arraySlice( values, 0, writeIndex * stride );\n\n\t\t}\n\n\t\treturn this;\n\n\t}\n\n}\n\nexport { KeyframeTrackPrototype };\n","import { AnimationUtils } from './AnimationUtils';\n\nfunction KeyframeTrackConstructor( name, times, values, interpolation ) {\n\n\tif( name === undefined ) throw new Error( \"track name is undefined\" );\n\n\tif( times === undefined || times.length === 0 ) {\n\n\t\tthrow new Error( \"no keyframes in track named \" + name );\n\n\t}\n\n\tthis.name = name;\n\n\tthis.times = AnimationUtils.convertArray( times, this.TimeBufferType );\n\tthis.values = AnimationUtils.convertArray( values, this.ValueBufferType );\n\n\tthis.setInterpolation( interpolation || this.DefaultInterpolation );\n\n\tthis.validate();\n\tthis.optimize();\n\n}\n\nexport { KeyframeTrackConstructor };\n","import { KeyframeTrackPrototype } from '../KeyframeTrackPrototype';\nimport { KeyframeTrackConstructor } from '../KeyframeTrackConstructor';\n\n/**\n *\n * A Track of vectored keyframe values.\n *\n *\n * @author Ben Houston / http://clara.io/\n * @author David Sarno / http://lighthaus.us/\n * @author tschw\n */\n\nfunction VectorKeyframeTrack( name, times, values, interpolation ) {\n\n\tKeyframeTrackConstructor.call( this, name, times, values, interpolation );\n\n}\n\nVectorKeyframeTrack.prototype =\n\t\tObject.assign( Object.create( KeyframeTrackPrototype ), {\n\n\tconstructor: VectorKeyframeTrack,\n\n\tValueTypeName: 'vector'\n\n\t// ValueBufferType is inherited\n\n\t// DefaultInterpolation is inherited\n\n} );\n\n\nexport { VectorKeyframeTrack };\n","import { Interpolant } from '../Interpolant';\nimport { Quaternion } from '../Quaternion';\n\n/**\n * Spherical linear unit quaternion interpolant.\n *\n * @author tschw\n */\n\nfunction QuaternionLinearInterpolant(\n\t\tparameterPositions, sampleValues, sampleSize, resultBuffer ) {\n\n\tInterpolant.call(\n\t\t\tthis, parameterPositions, sampleValues, sampleSize, resultBuffer );\n\n}\n\nQuaternionLinearInterpolant.prototype =\n\t\tObject.assign( Object.create( Interpolant.prototype ), {\n\n\tconstructor: QuaternionLinearInterpolant,\n\n\tinterpolate_: function( i1, t0, t, t1 ) {\n\n\t\tvar result = this.resultBuffer,\n\t\t\tvalues = this.sampleValues,\n\t\t\tstride = this.valueSize,\n\n\t\t\toffset = i1 * stride,\n\n\t\t\talpha = ( t - t0 ) / ( t1 - t0 );\n\n\t\tfor ( var end = offset + stride; offset !== end; offset += 4 ) {\n\n\t\t\tQuaternion.slerpFlat( result, 0,\n\t\t\t\t\tvalues, offset - stride, values, offset, alpha );\n\n\t\t}\n\n\t\treturn result;\n\n\t}\n\n} );\n\n\nexport { QuaternionLinearInterpolant };\n","import { InterpolateLinear } from '../../constants';\nimport { KeyframeTrackPrototype } from '../KeyframeTrackPrototype';\nimport { QuaternionLinearInterpolant } from '../../math/interpolants/QuaternionLinearInterpolant';\nimport { KeyframeTrackConstructor } from '../KeyframeTrackConstructor';\n\n/**\n *\n * A Track of quaternion keyframe values.\n *\n * @author Ben Houston / http://clara.io/\n * @author David Sarno / http://lighthaus.us/\n * @author tschw\n */\n\nfunction QuaternionKeyframeTrack( name, times, values, interpolation ) {\n\n\tKeyframeTrackConstructor.call( this, name, times, values, interpolation );\n\n}\n\nQuaternionKeyframeTrack.prototype =\n\t\tObject.assign( Object.create( KeyframeTrackPrototype ), {\n\n\tconstructor: QuaternionKeyframeTrack,\n\n\tValueTypeName: 'quaternion',\n\n\t// ValueBufferType is inherited\n\n\tDefaultInterpolation: InterpolateLinear,\n\n\tInterpolantFactoryMethodLinear: function( result ) {\n\n\t\treturn new QuaternionLinearInterpolant(\n\t\t\t\tthis.times, this.values, this.getValueSize(), result );\n\n\t},\n\n\tInterpolantFactoryMethodSmooth: undefined // not yet implemented\n\n} );\n\n\nexport { QuaternionKeyframeTrack };\n","import { KeyframeTrackPrototype } from '../KeyframeTrackPrototype';\nimport { KeyframeTrackConstructor } from '../KeyframeTrackConstructor';\n\n/**\n *\n * A Track of numeric keyframe values.\n *\n * @author Ben Houston / http://clara.io/\n * @author David Sarno / http://lighthaus.us/\n * @author tschw\n */\n\nfunction NumberKeyframeTrack( name, times, values, interpolation ) {\n\n\tKeyframeTrackConstructor.call( this, name, times, values, interpolation );\n\n}\n\nNumberKeyframeTrack.prototype =\n\t\tObject.assign( Object.create( KeyframeTrackPrototype ), {\n\n\tconstructor: NumberKeyframeTrack,\n\n\tValueTypeName: 'number',\n\n\t// ValueBufferType is inherited\n\n\t// DefaultInterpolation is inherited\n\n} );\n\n\nexport { NumberKeyframeTrack };\n","import { InterpolateDiscrete } from '../../constants';\nimport { KeyframeTrackPrototype } from '../KeyframeTrackPrototype';\nimport { KeyframeTrackConstructor } from '../KeyframeTrackConstructor';\n\n/**\n *\n * A Track that interpolates Strings\n *\n *\n * @author Ben Houston / http://clara.io/\n * @author David Sarno / http://lighthaus.us/\n * @author tschw\n */\n\nfunction StringKeyframeTrack( name, times, values, interpolation ) {\n\n\tKeyframeTrackConstructor.call( this, name, times, values, interpolation );\n\n}\n\nStringKeyframeTrack.prototype =\n\t\tObject.assign( Object.create( KeyframeTrackPrototype ), {\n\n\tconstructor: StringKeyframeTrack,\n\n\tValueTypeName: 'string',\n\tValueBufferType: Array,\n\n\tDefaultInterpolation: InterpolateDiscrete,\n\n\tInterpolantFactoryMethodLinear: undefined,\n\n\tInterpolantFactoryMethodSmooth: undefined\n\n} );\n\n\nexport { StringKeyframeTrack };\n","import { InterpolateDiscrete } from '../../constants';\nimport { KeyframeTrackPrototype } from '../KeyframeTrackPrototype';\nimport { KeyframeTrackConstructor } from '../KeyframeTrackConstructor';\n\n/**\n *\n * A Track of Boolean keyframe values.\n *\n *\n * @author Ben Houston / http://clara.io/\n * @author David Sarno / http://lighthaus.us/\n * @author tschw\n */\n\nfunction BooleanKeyframeTrack( name, times, values ) {\n\n\tKeyframeTrackConstructor.call( this, name, times, values );\n\n}\n\nBooleanKeyframeTrack.prototype =\n\t\tObject.assign( Object.create( KeyframeTrackPrototype ), {\n\n\tconstructor: BooleanKeyframeTrack,\n\n\tValueTypeName: 'bool',\n\tValueBufferType: Array,\n\n\tDefaultInterpolation: InterpolateDiscrete,\n\n\tInterpolantFactoryMethodLinear: undefined,\n\tInterpolantFactoryMethodSmooth: undefined\n\n\t// Note: Actually this track could have a optimized / compressed\n\t// representation of a single value and a custom interpolant that\n\t// computes \"firstValue ^ isOdd( index )\".\n\n} );\n\n\nexport { BooleanKeyframeTrack };\n","import { KeyframeTrackPrototype } from '../KeyframeTrackPrototype';\nimport { KeyframeTrackConstructor } from '../KeyframeTrackConstructor';\n\n/**\n *\n * A Track of keyframe values that represent color.\n *\n *\n * @author Ben Houston / http://clara.io/\n * @author David Sarno / http://lighthaus.us/\n * @author tschw\n */\n\nfunction ColorKeyframeTrack( name, times, values, interpolation ) {\n\n\tKeyframeTrackConstructor.call( this, name, times, values, interpolation );\n\n}\n\nColorKeyframeTrack.prototype =\n\t\tObject.assign( Object.create( KeyframeTrackPrototype ), {\n\n\tconstructor: ColorKeyframeTrack,\n\n\tValueTypeName: 'color'\n\n\t// ValueBufferType is inherited\n\n\t// DefaultInterpolation is inherited\n\n\n\t// Note: Very basic implementation and nothing special yet.\n\t// However, this is the place for color space parameterization.\n\n} );\n\n\nexport { ColorKeyframeTrack };\n","import { KeyframeTrackPrototype } from './KeyframeTrackPrototype';\nimport { StringKeyframeTrack } from './tracks/StringKeyframeTrack';\nimport { BooleanKeyframeTrack } from './tracks/BooleanKeyframeTrack';\nimport { QuaternionKeyframeTrack } from './tracks/QuaternionKeyframeTrack';\nimport { ColorKeyframeTrack } from './tracks/ColorKeyframeTrack';\nimport { VectorKeyframeTrack } from './tracks/VectorKeyframeTrack';\nimport { NumberKeyframeTrack } from './tracks/NumberKeyframeTrack';\nimport { AnimationUtils } from './AnimationUtils';\nimport { KeyframeTrackConstructor } from './KeyframeTrackConstructor';\n\n/**\n *\n * A timed sequence of keyframes for a specific property.\n *\n *\n * @author Ben Houston / http://clara.io/\n * @author David Sarno / http://lighthaus.us/\n * @author tschw\n */\n\nfunction KeyframeTrack( name, times, values, interpolation ) {\n\n\tKeyframeTrackConstructor.apply( this, arguments );\n\n}\n\nKeyframeTrack.prototype = KeyframeTrackPrototype;\nKeyframeTrackPrototype.constructor = KeyframeTrack;\n\n// Static methods:\n\nObject.assign( KeyframeTrack, {\n\n\t// Serialization (in static context, because of constructor invocation\n\t// and automatic invocation of .toJSON):\n\n\tparse: function( json ) {\n\n\t\tif( json.type === undefined ) {\n\n\t\t\tthrow new Error( \"track type undefined, can not parse\" );\n\n\t\t}\n\n\t\tvar trackType = KeyframeTrack._getTrackTypeForValueTypeName( json.type );\n\n\t\tif ( json.times === undefined ) {\n\n\t\t\tvar times = [], values = [];\n\n\t\t\tAnimationUtils.flattenJSON( json.keys, times, values, 'value' );\n\n\t\t\tjson.times = times;\n\t\t\tjson.values = values;\n\n\t\t}\n\n\t\t// derived classes can define a static parse method\n\t\tif ( trackType.parse !== undefined ) {\n\n\t\t\treturn trackType.parse( json );\n\n\t\t} else {\n\n\t\t\t// by default, we asssume a constructor compatible with the base\n\t\t\treturn new trackType(\n\t\t\t\t\tjson.name, json.times, json.values, json.interpolation );\n\n\t\t}\n\n\t},\n\n\ttoJSON: function( track ) {\n\n\t\tvar trackType = track.constructor;\n\n\t\tvar json;\n\n\t\t// derived classes can define a static toJSON method\n\t\tif ( trackType.toJSON !== undefined ) {\n\n\t\t\tjson = trackType.toJSON( track );\n\n\t\t} else {\n\n\t\t\t// by default, we assume the data can be serialized as-is\n\t\t\tjson = {\n\n\t\t\t\t'name': track.name,\n\t\t\t\t'times': AnimationUtils.convertArray( track.times, Array ),\n\t\t\t\t'values': AnimationUtils.convertArray( track.values, Array )\n\n\t\t\t};\n\n\t\t\tvar interpolation = track.getInterpolation();\n\n\t\t\tif ( interpolation !== track.DefaultInterpolation ) {\n\n\t\t\t\tjson.interpolation = interpolation;\n\n\t\t\t}\n\n\t\t}\n\n\t\tjson.type = track.ValueTypeName; // mandatory\n\n\t\treturn json;\n\n\t},\n\n\t_getTrackTypeForValueTypeName: function( typeName ) {\n\n\t\tswitch( typeName.toLowerCase() ) {\n\n\t\t\tcase \"scalar\":\n\t\t\tcase \"double\":\n\t\t\tcase \"float\":\n\t\t\tcase \"number\":\n\t\t\tcase \"integer\":\n\n\t\t\t\treturn NumberKeyframeTrack;\n\n\t\t\tcase \"vector\":\n\t\t\tcase \"vector2\":\n\t\t\tcase \"vector3\":\n\t\t\tcase \"vector4\":\n\n\t\t\t\treturn VectorKeyframeTrack;\n\n\t\t\tcase \"color\":\n\n\t\t\t\treturn ColorKeyframeTrack;\n\n\t\t\tcase \"quaternion\":\n\n\t\t\t\treturn QuaternionKeyframeTrack;\n\n\t\t\tcase \"bool\":\n\t\t\tcase \"boolean\":\n\n\t\t\t\treturn BooleanKeyframeTrack;\n\n\t\t\tcase \"string\":\n\n\t\t\t\treturn StringKeyframeTrack;\n\n\t\t}\n\n\t\tthrow new Error( \"Unsupported typeName: \" + typeName );\n\n\t}\n\n} );\n\n\nexport { KeyframeTrack };\n","import { VectorKeyframeTrack } from './tracks/VectorKeyframeTrack';\nimport { QuaternionKeyframeTrack } from './tracks/QuaternionKeyframeTrack';\nimport { NumberKeyframeTrack } from './tracks/NumberKeyframeTrack';\nimport { AnimationUtils } from './AnimationUtils';\nimport { KeyframeTrack } from './KeyframeTrack';\nimport { _Math } from '../math/Math';\n\n/**\n *\n * Reusable set of Tracks that represent an animation.\n *\n * @author Ben Houston / http://clara.io/\n * @author David Sarno / http://lighthaus.us/\n */\n\nfunction AnimationClip( name, duration, tracks ) {\n\n\tthis.name = name;\n\tthis.tracks = tracks;\n\tthis.duration = ( duration !== undefined ) ? duration : -1;\n\n\tthis.uuid = _Math.generateUUID();\n\n\t// this means it should figure out its duration by scanning the tracks\n\tif ( this.duration < 0 ) {\n\n\t\tthis.resetDuration();\n\n\t}\n\n\tthis.optimize();\n\n}\n\nAnimationClip.prototype = {\n\n\tconstructor: AnimationClip,\n\n\tresetDuration: function() {\n\n\t\tvar tracks = this.tracks,\n\t\t\tduration = 0;\n\n\t\tfor ( var i = 0, n = tracks.length; i !== n; ++ i ) {\n\n\t\t\tvar track = this.tracks[ i ];\n\n\t\t\tduration = Math.max(\n\t\t\t\t\tduration, track.times[ track.times.length - 1 ] );\n\n\t\t}\n\n\t\tthis.duration = duration;\n\n\t},\n\n\ttrim: function() {\n\n\t\tfor ( var i = 0; i < this.tracks.length; i ++ ) {\n\n\t\t\tthis.tracks[ i ].trim( 0, this.duration );\n\n\t\t}\n\n\t\treturn this;\n\n\t},\n\n\toptimize: function() {\n\n\t\tfor ( var i = 0; i < this.tracks.length; i ++ ) {\n\n\t\t\tthis.tracks[ i ].optimize();\n\n\t\t}\n\n\t\treturn this;\n\n\t}\n\n};\n\n// Static methods:\n\nObject.assign( AnimationClip, {\n\n\tparse: function( json ) {\n\n\t\tvar tracks = [],\n\t\t\tjsonTracks = json.tracks,\n\t\t\tframeTime = 1.0 / ( json.fps || 1.0 );\n\n\t\tfor ( var i = 0, n = jsonTracks.length; i !== n; ++ i ) {\n\n\t\t\ttracks.push( KeyframeTrack.parse( jsonTracks[ i ] ).scale( frameTime ) );\n\n\t\t}\n\n\t\treturn new AnimationClip( json.name, json.duration, tracks );\n\n\t},\n\n\n\ttoJSON: function( clip ) {\n\n\t\tvar tracks = [],\n\t\t\tclipTracks = clip.tracks;\n\n\t\tvar json = {\n\n\t\t\t'name': clip.name,\n\t\t\t'duration': clip.duration,\n\t\t\t'tracks': tracks\n\n\t\t};\n\n\t\tfor ( var i = 0, n = clipTracks.length; i !== n; ++ i ) {\n\n\t\t\ttracks.push( KeyframeTrack.toJSON( clipTracks[ i ] ) );\n\n\t\t}\n\n\t\treturn json;\n\n\t},\n\n\n\tCreateFromMorphTargetSequence: function( name, morphTargetSequence, fps, noLoop ) {\n\n\t\tvar numMorphTargets = morphTargetSequence.length;\n\t\tvar tracks = [];\n\n\t\tfor ( var i = 0; i < numMorphTargets; i ++ ) {\n\n\t\t\tvar times = [];\n\t\t\tvar values = [];\n\n\t\t\ttimes.push(\n\t\t\t\t\t( i + numMorphTargets - 1 ) % numMorphTargets,\n\t\t\t\t\ti,\n\t\t\t\t\t( i + 1 ) % numMorphTargets );\n\n\t\t\tvalues.push( 0, 1, 0 );\n\n\t\t\tvar order = AnimationUtils.getKeyframeOrder( times );\n\t\t\ttimes = AnimationUtils.sortedArray( times, 1, order );\n\t\t\tvalues = AnimationUtils.sortedArray( values, 1, order );\n\n\t\t\t// if there is a key at the first frame, duplicate it as the\n\t\t\t// last frame as well for perfect loop.\n\t\t\tif ( ! noLoop && times[ 0 ] === 0 ) {\n\n\t\t\t\ttimes.push( numMorphTargets );\n\t\t\t\tvalues.push( values[ 0 ] );\n\n\t\t\t}\n\n\t\t\ttracks.push(\n\t\t\t\t\tnew NumberKeyframeTrack(\n\t\t\t\t\t\t'.morphTargetInfluences[' + morphTargetSequence[ i ].name + ']',\n\t\t\t\t\t\ttimes, values\n\t\t\t\t\t).scale( 1.0 / fps ) );\n\t\t}\n\n\t\treturn new AnimationClip( name, -1, tracks );\n\n\t},\n\n\tfindByName: function( objectOrClipArray, name ) {\n\n\t\tvar clipArray = objectOrClipArray;\n\n\t\tif ( ! Array.isArray( objectOrClipArray ) ) {\n\n\t\t\tvar o = objectOrClipArray;\n\t\t\tclipArray = o.geometry && o.geometry.animations || o.animations;\n\n\t\t}\n\n\t\tfor ( var i = 0; i < clipArray.length; i ++ ) {\n\n\t\t\tif ( clipArray[ i ].name === name ) {\n\n\t\t\t\treturn clipArray[ i ];\n\n\t\t\t}\n\t\t}\n\n\t\treturn null;\n\n\t},\n\n\tCreateClipsFromMorphTargetSequences: function( morphTargets, fps, noLoop ) {\n\n\t\tvar animationToMorphTargets = {};\n\n\t\t// tested with https://regex101.com/ on trick sequences\n\t\t// such flamingo_flyA_003, flamingo_run1_003, crdeath0059\n\t\tvar pattern = /^([\\w-]*?)([\\d]+)$/;\n\n\t\t// sort morph target names into animation groups based\n\t\t// patterns like Walk_001, Walk_002, Run_001, Run_002\n\t\tfor ( var i = 0, il = morphTargets.length; i < il; i ++ ) {\n\n\t\t\tvar morphTarget = morphTargets[ i ];\n\t\t\tvar parts = morphTarget.name.match( pattern );\n\n\t\t\tif ( parts && parts.length > 1 ) {\n\n\t\t\t\tvar name = parts[ 1 ];\n\n\t\t\t\tvar animationMorphTargets = animationToMorphTargets[ name ];\n\t\t\t\tif ( ! animationMorphTargets ) {\n\n\t\t\t\t\tanimationToMorphTargets[ name ] = animationMorphTargets = [];\n\n\t\t\t\t}\n\n\t\t\t\tanimationMorphTargets.push( morphTarget );\n\n\t\t\t}\n\n\t\t}\n\n\t\tvar clips = [];\n\n\t\tfor ( var name in animationToMorphTargets ) {\n\n\t\t\tclips.push( AnimationClip.CreateFromMorphTargetSequence( name, animationToMorphTargets[ name ], fps, noLoop ) );\n\n\t\t}\n\n\t\treturn clips;\n\n\t},\n\n\t// parse the animation.hierarchy format\n\tparseAnimation: function( animation, bones ) {\n\n\t\tif ( ! animation ) {\n\n\t\t\tconsole.error( \" no animation in JSONLoader data\" );\n\t\t\treturn null;\n\n\t\t}\n\n\t\tvar addNonemptyTrack = function(\n\t\t\t\ttrackType, trackName, animationKeys, propertyName, destTracks ) {\n\n\t\t\t// only return track if there are actually keys.\n\t\t\tif ( animationKeys.length !== 0 ) {\n\n\t\t\t\tvar times = [];\n\t\t\t\tvar values = [];\n\n\t\t\t\tAnimationUtils.flattenJSON(\n\t\t\t\t\t\tanimationKeys, times, values, propertyName );\n\n\t\t\t\t// empty keys are filtered out, so check again\n\t\t\t\tif ( times.length !== 0 ) {\n\n\t\t\t\t\tdestTracks.push( new trackType( trackName, times, values ) );\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t};\n\n\t\tvar tracks = [];\n\n\t\tvar clipName = animation.name || 'default';\n\t\t// automatic length determination in AnimationClip.\n\t\tvar duration = animation.length || -1;\n\t\tvar fps = animation.fps || 30;\n\n\t\tvar hierarchyTracks = animation.hierarchy || [];\n\n\t\tfor ( var h = 0; h < hierarchyTracks.length; h ++ ) {\n\n\t\t\tvar animationKeys = hierarchyTracks[ h ].keys;\n\n\t\t\t// skip empty tracks\n\t\t\tif ( ! animationKeys || animationKeys.length === 0 ) continue;\n\n\t\t\t// process morph targets in a way exactly compatible\n\t\t\t// with AnimationHandler.init( animation )\n\t\t\tif ( animationKeys[0].morphTargets ) {\n\n\t\t\t\t// figure out all morph targets used in this track\n\t\t\t\tvar morphTargetNames = {};\n\t\t\t\tfor ( var k = 0; k < animationKeys.length; k ++ ) {\n\n\t\t\t\t\tif ( animationKeys[k].morphTargets ) {\n\n\t\t\t\t\t\tfor ( var m = 0; m < animationKeys[k].morphTargets.length; m ++ ) {\n\n\t\t\t\t\t\t\tmorphTargetNames[ animationKeys[k].morphTargets[m] ] = -1;\n\t\t\t\t\t\t}\n\n\t\t\t\t\t}\n\n\t\t\t\t}\n\n\t\t\t\t// create a track for each morph target with all zero\n\t\t\t\t// morphTargetInfluences except for the keys in which\n\t\t\t\t// the morphTarget is named.\n\t\t\t\tfor ( var morphTargetName in morphTargetNames ) {\n\n\t\t\t\t\tvar times = [];\n\t\t\t\t\tvar values = [];\n\n\t\t\t\t\tfor ( var m = 0;\n\t\t\t\t\t\t\tm !== animationKeys[k].morphTargets.length; ++ m ) {\n\n\t\t\t\t\t\tvar animationKey = animationKeys[k];\n\n\t\t\t\t\t\ttimes.push( animationKey.time );\n\t\t\t\t\t\tvalues.push( ( animationKey.morphTarget === morphTargetName ) ? 1 : 0 );\n\n\t\t\t\t\t}\n\n\t\t\t\t\ttracks.push( new NumberKeyframeTrack(\n\t\t\t\t\t\t\t'.morphTargetInfluence[' + morphTargetName + ']', times, values ) );\n\n\t\t\t\t}\n\n\t\t\t\tduration = morphTargetNames.length * ( fps || 1.0 );\n\n\t\t\t} else {\n\t\t\t\t// ...assume skeletal animation\n\n\t\t\t\tvar boneName = '.bones[' + bones[ h ].name + ']';\n\n\t\t\t\taddNonemptyTrack(\n\t\t\t\t\t\tVectorKeyframeTrack, boneName + '.position',\n\t\t\t\t\t\tanimationKeys, 'pos', tracks );\n\n\t\t\t\taddNonemptyTrack(\n\t\t\t\t\t\tQuaternionKeyframeTrack, boneName + '.quaternion',\n\t\t\t\t\t\tanimationKeys, 'rot', tracks );\n\n\t\t\t\taddNonemptyTrack(\n\t\t\t\t\t\tVectorKeyframeTrack, boneName + '.scale',\n\t\t\t\t\t\tanimationKeys, 'scl', tracks );\n\n\t\t\t}\n\n\t\t}\n\n\t\tif ( tracks.length === 0 ) {\n\n\t\t\treturn null;\n\n\t\t}\n\n\t\tvar clip = new AnimationClip( clipName, duration, tracks );\n\n\t\treturn clip;\n\n\t}\n\n} );\n\n\nexport { AnimationClip };\n","import { Vector2 } from '../math/Vector2';\nimport { FileLoader } from './FileLoader';\nimport { DefaultLoadingManager } from './LoadingManager';\nimport * as Materials from '../materials/Materials';\n\n/**\n * @author mrdoob / http://mrdoob.com/\n */\n\nfunction MaterialLoader( manager ) {\n\n\tthis.manager = ( manager !== undefined ) ? manager : DefaultLoadingManager;\n\tthis.textures = {};\n\n}\n\nObject.assign( MaterialLoader.prototype, {\n\n\tload: function ( url, onLoad, onProgress, onError ) {\n\n\t\tvar scope = this;\n\n\t\tvar loader = new FileLoader( scope.manager );\n\t\tloader.load( url, function ( text ) {\n\n\t\t\tonLoad( scope.parse( JSON.parse( text ) ) );\n\n\t\t}, onProgress, onError );\n\n\t},\n\n\tsetTextures: function ( value ) {\n\n\t\tthis.textures = value;\n\n\t},\n\n\tparse: function ( json ) {\n\n\t\tvar textures = this.textures;\n\n\t\tfunction getTexture( name ) {\n\n\t\t\tif ( textures[ name ] === undefined ) {\n\n\t\t\t\tconsole.warn( 'THREE.MaterialLoader: Undefined texture', name );\n\n\t\t\t}\n\n\t\t\treturn textures[ name ];\n\n\t\t}\n\n\t\tvar material = new Materials[ json.type ]();\n\n\t\tif ( json.uuid !== undefined ) material.uuid = json.uuid;\n\t\tif ( json.name !== undefined ) material.name = json.name;\n\t\tif ( json.color !== undefined ) material.color.setHex( json.color );\n\t\tif ( json.roughness !== undefined ) material.roughness = json.roughness;\n\t\tif ( json.metalness !== undefined ) material.metalness = json.metalness;\n\t\tif ( json.emissive !== undefined ) material.emissive.setHex( json.emissive );\n\t\tif ( json.specular !== undefined ) material.specular.setHex( json.specular );\n\t\tif ( json.shininess !== undefined ) material.shininess = json.shininess;\n\t\tif ( json.uniforms !== undefined ) material.uniforms = json.uniforms;\n\t\tif ( json.vertexShader !== undefined ) material.vertexShader = json.vertexShader;\n\t\tif ( json.fragmentShader !== undefined ) material.fragmentShader = json.fragmentShader;\n\t\tif ( json.vertexColors !== undefined ) material.vertexColors = json.vertexColors;\n\t\tif ( json.fog !== undefined ) material.fog = json.fog;\n\t\tif ( json.shading !== undefined ) material.shading = json.shading;\n\t\tif ( json.blending !== undefined ) material.blending = json.blending;\n\t\tif ( json.side !== undefined ) material.side = json.side;\n\t\tif ( json.opacity !== undefined ) material.opacity = json.opacity;\n\t\tif ( json.transparent !== undefined ) material.transparent = json.transparent;\n\t\tif ( json.alphaTest !== undefined ) material.alphaTest = json.alphaTest;\n\t\tif ( json.depthTest !== undefined ) material.depthTest = json.depthTest;\n\t\tif ( json.depthWrite !== undefined ) material.depthWrite = json.depthWrite;\n\t\tif ( json.colorWrite !== undefined ) material.colorWrite = json.colorWrite;\n\t\tif ( json.wireframe !== undefined ) material.wireframe = json.wireframe;\n\t\tif ( json.wireframeLinewidth !== undefined ) material.wireframeLinewidth = json.wireframeLinewidth;\n\t\tif ( json.wireframeLinecap !== undefined ) material.wireframeLinecap = json.wireframeLinecap;\n\t\tif ( json.wireframeLinejoin !== undefined ) material.wireframeLinejoin = json.wireframeLinejoin;\n\t\tif ( json.skinning !== undefined ) material.skinning = json.skinning;\n\t\tif ( json.morphTargets !== undefined ) material.morphTargets = json.morphTargets;\n\n\t\t// for PointsMaterial\n\n\t\tif ( json.size !== undefined ) material.size = json.size;\n\t\tif ( json.sizeAttenuation !== undefined ) material.sizeAttenuation = json.sizeAttenuation;\n\n\t\t// maps\n\n\t\tif ( json.map !== undefined ) material.map = getTexture( json.map );\n\n\t\tif ( json.alphaMap !== undefined ) {\n\n\t\t\tmaterial.alphaMap = getTexture( json.alphaMap );\n\t\t\tmaterial.transparent = true;\n\n\t\t}\n\n\t\tif ( json.bumpMap !== undefined ) material.bumpMap = getTexture( json.bumpMap );\n\t\tif ( json.bumpScale !== undefined ) material.bumpScale = json.bumpScale;\n\n\t\tif ( json.normalMap !== undefined ) material.normalMap = getTexture( json.normalMap );\n\t\tif ( json.normalScale !== undefined ) {\n\n\t\t\tvar normalScale = json.normalScale;\n\n\t\t\tif ( Array.isArray( normalScale ) === false ) {\n\n\t\t\t\t// Blender exporter used to export a scalar. See #7459\n\n\t\t\t\tnormalScale = [ normalScale, normalScale ];\n\n\t\t\t}\n\n\t\t\tmaterial.normalScale = new Vector2().fromArray( normalScale );\n\n\t\t}\n\n\t\tif ( json.displacementMap !== undefined ) material.displacementMap = getTexture( json.displacementMap );\n\t\tif ( json.displacementScale !== undefined ) material.displacementScale = json.displacementScale;\n\t\tif ( json.displacementBias !== undefined ) material.displacementBias = json.displacementBias;\n\n\t\tif ( json.roughnessMap !== undefined ) material.roughnessMap = getTexture( json.roughnessMap );\n\t\tif ( json.metalnessMap !== undefined ) material.metalnessMap = getTexture( json.metalnessMap );\n\n\t\tif ( json.emissiveMap !== undefined ) material.emissiveMap = getTexture( json.emissiveMap );\n\t\tif ( json.emissiveIntensity !== undefined ) material.emissiveIntensity = json.emissiveIntensity;\n\n\t\tif ( json.specularMap !== undefined ) material.specularMap = getTexture( json.specularMap );\n\n\t\tif ( json.envMap !== undefined ) material.envMap = getTexture( json.envMap );\n\n\t\tif ( json.reflectivity !== undefined ) material.reflectivity = json.reflectivity;\n\n\t\tif ( json.lightMap !== undefined ) material.lightMap = getTexture( json.lightMap );\n\t\tif ( json.lightMapIntensity !== undefined ) material.lightMapIntensity = json.lightMapIntensity;\n\n\t\tif ( json.aoMap !== undefined ) material.aoMap = getTexture( json.aoMap );\n\t\tif ( json.aoMapIntensity !== undefined ) material.aoMapIntensity = json.aoMapIntensity;\n\n\t\t// MultiMaterial\n\n\t\tif ( json.materials !== undefined ) {\n\n\t\t\tfor ( var i = 0, l = json.materials.length; i < l; i ++ ) {\n\n\t\t\t\tmaterial.materials.push( this.parse( json.materials[ i ] ) );\n\n\t\t\t}\n\n\t\t}\n\n\t\treturn material;\n\n\t}\n\n} );\n\n\nexport { MaterialLoader };\n","import { Sphere } from '../math/Sphere';\nimport { Vector3 } from '../math/Vector3';\nimport { BufferAttribute } from '../core/BufferAttribute';\nimport { BufferGeometry } from '../core/BufferGeometry';\nimport { FileLoader } from './FileLoader';\nimport { DefaultLoadingManager } from './LoadingManager';\n\n/**\n * @author mrdoob / http://mrdoob.com/\n */\n\nfunction BufferGeometryLoader( manager ) {\n\n\tthis.manager = ( manager !== undefined ) ? manager : DefaultLoadingManager;\n\n}\n\nObject.assign( BufferGeometryLoader.prototype, {\n\n\tload: function ( url, onLoad, onProgress, onError ) {\n\n\t\tvar scope = this;\n\n\t\tvar loader = new FileLoader( scope.manager );\n\t\tloader.load( url, function ( text ) {\n\n\t\t\tonLoad( scope.parse( JSON.parse( text ) ) );\n\n\t\t}, onProgress, onError );\n\n\t},\n\n\tparse: function ( json ) {\n\n\t\tvar geometry = new BufferGeometry();\n\n\t\tvar index = json.data.index;\n\n\t\tvar TYPED_ARRAYS = {\n\t\t\t'Int8Array': Int8Array,\n\t\t\t'Uint8Array': Uint8Array,\n\t\t\t'Uint8ClampedArray': Uint8ClampedArray,\n\t\t\t'Int16Array': Int16Array,\n\t\t\t'Uint16Array': Uint16Array,\n\t\t\t'Int32Array': Int32Array,\n\t\t\t'Uint32Array': Uint32Array,\n\t\t\t'Float32Array': Float32Array,\n\t\t\t'Float64Array': Float64Array\n\t\t};\n\n\t\tif ( index !== undefined ) {\n\n\t\t\tvar typedArray = new TYPED_ARRAYS[ index.type ]( index.array );\n\t\t\tgeometry.setIndex( new BufferAttribute( typedArray, 1 ) );\n\n\t\t}\n\n\t\tvar attributes = json.data.attributes;\n\n\t\tfor ( var key in attributes ) {\n\n\t\t\tvar attribute = attributes[ key ];\n\t\t\tvar typedArray = new TYPED_ARRAYS[ attribute.type ]( attribute.array );\n\n\t\t\tgeometry.addAttribute( key, new BufferAttribute( typedArray, attribute.itemSize, attribute.normalized ) );\n\n\t\t}\n\n\t\tvar groups = json.data.groups || json.data.drawcalls || json.data.offsets;\n\n\t\tif ( groups !== undefined ) {\n\n\t\t\tfor ( var i = 0, n = groups.length; i !== n; ++ i ) {\n\n\t\t\t\tvar group = groups[ i ];\n\n\t\t\t\tgeometry.addGroup( group.start, group.count, group.materialIndex );\n\n\t\t\t}\n\n\t\t}\n\n\t\tvar boundingSphere = json.data.boundingSphere;\n\n\t\tif ( boundingSphere !== undefined ) {\n\n\t\t\tvar center = new Vector3();\n\n\t\t\tif ( boundingSphere.center !== undefined ) {\n\n\t\t\t\tcenter.fromArray( boundingSphere.center );\n\n\t\t\t}\n\n\t\t\tgeometry.boundingSphere = new Sphere( center, boundingSphere.radius );\n\n\t\t}\n\n\t\treturn geometry;\n\n\t}\n\n} );\n\n\nexport { BufferGeometryLoader };\n","import { FaceColors, VertexColors, DoubleSide, BackSide, MirroredRepeatWrapping, RepeatWrapping, BlendingMode } from '../constants';\nimport { _Math } from '../math/Math';\nimport { MaterialLoader } from './MaterialLoader';\nimport { TextureLoader } from './TextureLoader';\nimport { Color } from '../math/Color';\n\n/**\n * @author alteredq / http://alteredqualia.com/\n */\n\nfunction Loader() {\n\n\tthis.onLoadStart = function () {};\n\tthis.onLoadProgress = function () {};\n\tthis.onLoadComplete = function () {};\n\n}\n\nLoader.prototype = {\n\n\tconstructor: Loader,\n\n\tcrossOrigin: undefined,\n\n\textractUrlBase: function ( url ) {\n\n\t\tvar parts = url.split( '/' );\n\n\t\tif ( parts.length === 1 ) return './';\n\n\t\tparts.pop();\n\n\t\treturn parts.join( '/' ) + '/';\n\n\t},\n\n\tinitMaterials: function ( materials, texturePath, crossOrigin ) {\n\n\t\tvar array = [];\n\n\t\tfor ( var i = 0; i < materials.length; ++ i ) {\n\n\t\t\tarray[ i ] = this.createMaterial( materials[ i ], texturePath, crossOrigin );\n\n\t\t}\n\n\t\treturn array;\n\n\t},\n\n\tcreateMaterial: ( function () {\n\n\t\tvar color, textureLoader, materialLoader;\n\n\t\treturn function createMaterial( m, texturePath, crossOrigin ) {\n\n\t\t\tif ( color === undefined ) color = new Color();\n\t\t\tif ( textureLoader === undefined ) textureLoader = new TextureLoader();\n\t\t\tif ( materialLoader === undefined ) materialLoader = new MaterialLoader();\n\n\t\t\t// convert from old material format\n\n\t\t\tvar textures = {};\n\n\t\t\tfunction loadTexture( path, repeat, offset, wrap, anisotropy ) {\n\n\t\t\t\tvar fullPath = texturePath + path;\n\t\t\t\tvar loader = Loader.Handlers.get( fullPath );\n\n\t\t\t\tvar texture;\n\n\t\t\t\tif ( loader !== null ) {\n\n\t\t\t\t\ttexture = loader.load( fullPath );\n\n\t\t\t\t} else {\n\n\t\t\t\t\ttextureLoader.setCrossOrigin( crossOrigin );\n\t\t\t\t\ttexture = textureLoader.load( fullPath );\n\n\t\t\t\t}\n\n\t\t\t\tif ( repeat !== undefined ) {\n\n\t\t\t\t\ttexture.repeat.fromArray( repeat );\n\n\t\t\t\t\tif ( repeat[ 0 ] !== 1 ) texture.wrapS = RepeatWrapping;\n\t\t\t\t\tif ( repeat[ 1 ] !== 1 ) texture.wrapT = RepeatWrapping;\n\n\t\t\t\t}\n\n\t\t\t\tif ( offset !== undefined ) {\n\n\t\t\t\t\ttexture.offset.fromArray( offset );\n\n\t\t\t\t}\n\n\t\t\t\tif ( wrap !== undefined ) {\n\n\t\t\t\t\tif ( wrap[ 0 ] === 'repeat' ) texture.wrapS = RepeatWrapping;\n\t\t\t\t\tif ( wrap[ 0 ] === 'mirror' ) texture.wrapS = MirroredRepeatWrapping;\n\n\t\t\t\t\tif ( wrap[ 1 ] === 'repeat' ) texture.wrapT = RepeatWrapping;\n\t\t\t\t\tif ( wrap[ 1 ] === 'mirror' ) texture.wrapT = MirroredRepeatWrapping;\n\n\t\t\t\t}\n\n\t\t\t\tif ( anisotropy !== undefined ) {\n\n\t\t\t\t\ttexture.anisotropy = anisotropy;\n\n\t\t\t\t}\n\n\t\t\t\tvar uuid = _Math.generateUUID();\n\n\t\t\t\ttextures[ uuid ] = texture;\n\n\t\t\t\treturn uuid;\n\n\t\t\t}\n\n\t\t\t//\n\n\t\t\tvar json = {\n\t\t\t\tuuid: _Math.generateUUID(),\n\t\t\t\ttype: 'MeshLambertMaterial'\n\t\t\t};\n\n\t\t\tfor ( var name in m ) {\n\n\t\t\t\tvar value = m[ name ];\n\n\t\t\t\tswitch ( name ) {\n\t\t\t\t\tcase 'DbgColor':\n\t\t\t\t\tcase 'DbgIndex':\n\t\t\t\t\tcase 'opticalDensity':\n\t\t\t\t\tcase 'illumination':\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tcase 'DbgName':\n\t\t\t\t\t\tjson.name = value;\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tcase 'blending':\n\t\t\t\t\t\tjson.blending = BlendingMode[ value ];\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tcase 'colorAmbient':\n\t\t\t\t\tcase 'mapAmbient':\n\t\t\t\t\t\tconsole.warn( 'THREE.Loader.createMaterial:', name, 'is no longer supported.' );\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tcase 'colorDiffuse':\n\t\t\t\t\t\tjson.color = color.fromArray( value ).getHex();\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tcase 'colorSpecular':\n\t\t\t\t\t\tjson.specular = color.fromArray( value ).getHex();\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tcase 'colorEmissive':\n\t\t\t\t\t\tjson.emissive = color.fromArray( value ).getHex();\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tcase 'specularCoef':\n\t\t\t\t\t\tjson.shininess = value;\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tcase 'shading':\n\t\t\t\t\t\tif ( value.toLowerCase() === 'basic' ) json.type = 'MeshBasicMaterial';\n\t\t\t\t\t\tif ( value.toLowerCase() === 'phong' ) json.type = 'MeshPhongMaterial';\n\t\t\t\t\t\tif ( value.toLowerCase() === 'standard' ) json.type = 'MeshStandardMaterial';\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tcase 'mapDiffuse':\n\t\t\t\t\t\tjson.map = loadTexture( value, m.mapDiffuseRepeat, m.mapDiffuseOffset, m.mapDiffuseWrap, m.mapDiffuseAnisotropy );\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tcase 'mapDiffuseRepeat':\n\t\t\t\t\tcase 'mapDiffuseOffset':\n\t\t\t\t\tcase 'mapDiffuseWrap':\n\t\t\t\t\tcase 'mapDiffuseAnisotropy':\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tcase 'mapEmissive':\n\t\t\t\t\t\tjson.emissiveMap = loadTexture( value, m.mapEmissiveRepeat, m.mapEmissiveOffset, m.mapEmissiveWrap, m.mapEmissiveAnisotropy );\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tcase 'mapEmissiveRepeat':\n\t\t\t\t\tcase 'mapEmissiveOffset':\n\t\t\t\t\tcase 'mapEmissiveWrap':\n\t\t\t\t\tcase 'mapEmissiveAnisotropy':\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tcase 'mapLight':\n\t\t\t\t\t\tjson.lightMap = loadTexture( value, m.mapLightRepeat, m.mapLightOffset, m.mapLightWrap, m.mapLightAnisotropy );\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tcase 'mapLightRepeat':\n\t\t\t\t\tcase 'mapLightOffset':\n\t\t\t\t\tcase 'mapLightWrap':\n\t\t\t\t\tcase 'mapLightAnisotropy':\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tcase 'mapAO':\n\t\t\t\t\t\tjson.aoMap = loadTexture( value, m.mapAORepeat, m.mapAOOffset, m.mapAOWrap, m.mapAOAnisotropy );\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tcase 'mapAORepeat':\n\t\t\t\t\tcase 'mapAOOffset':\n\t\t\t\t\tcase 'mapAOWrap':\n\t\t\t\t\tcase 'mapAOAnisotropy':\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tcase 'mapBump':\n\t\t\t\t\t\tjson.bumpMap = loadTexture( value, m.mapBumpRepeat, m.mapBumpOffset, m.mapBumpWrap, m.mapBumpAnisotropy );\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tcase 'mapBumpScale':\n\t\t\t\t\t\tjson.bumpScale = value;\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tcase 'mapBumpRepeat':\n\t\t\t\t\tcase 'mapBumpOffset':\n\t\t\t\t\tcase 'mapBumpWrap':\n\t\t\t\t\tcase 'mapBumpAnisotropy':\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tcase 'mapNormal':\n\t\t\t\t\t\tjson.normalMap = loadTexture( value, m.mapNormalRepeat, m.mapNormalOffset, m.mapNormalWrap, m.mapNormalAnisotropy );\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tcase 'mapNormalFactor':\n\t\t\t\t\t\tjson.normalScale = [ value, value ];\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tcase 'mapNormalRepeat':\n\t\t\t\t\tcase 'mapNormalOffset':\n\t\t\t\t\tcase 'mapNormalWrap':\n\t\t\t\t\tcase 'mapNormalAnisotropy':\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tcase 'mapSpecular':\n\t\t\t\t\t\tjson.specularMap = loadTexture( value, m.mapSpecularRepeat, m.mapSpecularOffset, m.mapSpecularWrap, m.mapSpecularAnisotropy );\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tcase 'mapSpecularRepeat':\n\t\t\t\t\tcase 'mapSpecularOffset':\n\t\t\t\t\tcase 'mapSpecularWrap':\n\t\t\t\t\tcase 'mapSpecularAnisotropy':\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tcase 'mapMetalness':\n\t\t\t\t\t\tjson.metalnessMap = loadTexture( value, m.mapMetalnessRepeat, m.mapMetalnessOffset, m.mapMetalnessWrap, m.mapMetalnessAnisotropy );\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tcase 'mapMetalnessRepeat':\n\t\t\t\t\tcase 'mapMetalnessOffset':\n\t\t\t\t\tcase 'mapMetalnessWrap':\n\t\t\t\t\tcase 'mapMetalnessAnisotropy':\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tcase 'mapRoughness':\n\t\t\t\t\t\tjson.roughnessMap = loadTexture( value, m.mapRoughnessRepeat, m.mapRoughnessOffset, m.mapRoughnessWrap, m.mapRoughnessAnisotropy );\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tcase 'mapRoughnessRepeat':\n\t\t\t\t\tcase 'mapRoughnessOffset':\n\t\t\t\t\tcase 'mapRoughnessWrap':\n\t\t\t\t\tcase 'mapRoughnessAnisotropy':\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tcase 'mapAlpha':\n\t\t\t\t\t\tjson.alphaMap = loadTexture( value, m.mapAlphaRepeat, m.mapAlphaOffset, m.mapAlphaWrap, m.mapAlphaAnisotropy );\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tcase 'mapAlphaRepeat':\n\t\t\t\t\tcase 'mapAlphaOffset':\n\t\t\t\t\tcase 'mapAlphaWrap':\n\t\t\t\t\tcase 'mapAlphaAnisotropy':\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tcase 'flipSided':\n\t\t\t\t\t\tjson.side = BackSide;\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tcase 'doubleSided':\n\t\t\t\t\t\tjson.side = DoubleSide;\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tcase 'transparency':\n\t\t\t\t\t\tconsole.warn( 'THREE.Loader.createMaterial: transparency has been renamed to opacity' );\n\t\t\t\t\t\tjson.opacity = value;\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tcase 'depthTest':\n\t\t\t\t\tcase 'depthWrite':\n\t\t\t\t\tcase 'colorWrite':\n\t\t\t\t\tcase 'opacity':\n\t\t\t\t\tcase 'reflectivity':\n\t\t\t\t\tcase 'transparent':\n\t\t\t\t\tcase 'visible':\n\t\t\t\t\tcase 'wireframe':\n\t\t\t\t\t\tjson[ name ] = value;\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tcase 'vertexColors':\n\t\t\t\t\t\tif ( value === true ) json.vertexColors = VertexColors;\n\t\t\t\t\t\tif ( value === 'face' ) json.vertexColors = FaceColors;\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tdefault:\n\t\t\t\t\t\tconsole.error( 'THREE.Loader.createMaterial: Unsupported', name, value );\n\t\t\t\t\t\tbreak;\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t\tif ( json.type === 'MeshBasicMaterial' ) delete json.emissive;\n\t\t\tif ( json.type !== 'MeshPhongMaterial' ) delete json.specular;\n\n\t\t\tif ( json.opacity < 1 ) json.transparent = true;\n\n\t\t\tmaterialLoader.setTextures( textures );\n\n\t\t\treturn materialLoader.parse( json );\n\n\t\t};\n\n\t} )()\n\n};\n\nLoader.Handlers = {\n\n\thandlers: [],\n\n\tadd: function ( regex, loader ) {\n\n\t\tthis.handlers.push( regex, loader );\n\n\t},\n\n\tget: function ( file ) {\n\n\t\tvar handlers = this.handlers;\n\n\t\tfor ( var i = 0, l = handlers.length; i < l; i += 2 ) {\n\n\t\t\tvar regex = handlers[ i ];\n\t\t\tvar loader = handlers[ i + 1 ];\n\n\t\t\tif ( regex.test( file ) ) {\n\n\t\t\t\treturn loader;\n\n\t\t\t}\n\n\t\t}\n\n\t\treturn null;\n\n\t}\n\n};\n\n\nexport { Loader };\n","import { Loader } from './Loader';\nimport { AnimationClip } from '../animation/AnimationClip';\nimport { Vector3 } from '../math/Vector3';\nimport { Vector4 } from '../math/Vector4';\nimport { Color } from '../math/Color';\nimport { Vector2 } from '../math/Vector2';\nimport { Face3 } from '../core/Face3';\nimport { Geometry } from '../core/Geometry';\nimport { FileLoader } from './FileLoader';\nimport { DefaultLoadingManager } from './LoadingManager';\n\n/**\n * @author mrdoob / http://mrdoob.com/\n * @author alteredq / http://alteredqualia.com/\n */\n\nfunction JSONLoader( manager ) {\n\n\tif ( typeof manager === 'boolean' ) {\n\n\t\tconsole.warn( 'THREE.JSONLoader: showStatus parameter has been removed from constructor.' );\n\t\tmanager = undefined;\n\n\t}\n\n\tthis.manager = ( manager !== undefined ) ? manager : DefaultLoadingManager;\n\n\tthis.withCredentials = false;\n\n}\n\nObject.assign( JSONLoader.prototype, {\n\n\tload: function( url, onLoad, onProgress, onError ) {\n\n\t\tvar scope = this;\n\n\t\tvar texturePath = this.texturePath && ( typeof this.texturePath === \"string\" ) ? this.texturePath : Loader.prototype.extractUrlBase( url );\n\n\t\tvar loader = new FileLoader( this.manager );\n\t\tloader.setWithCredentials( this.withCredentials );\n\t\tloader.load( url, function ( text ) {\n\n\t\t\tvar json = JSON.parse( text );\n\t\t\tvar metadata = json.metadata;\n\n\t\t\tif ( metadata !== undefined ) {\n\n\t\t\t\tvar type = metadata.type;\n\n\t\t\t\tif ( type !== undefined ) {\n\n\t\t\t\t\tif ( type.toLowerCase() === 'object' ) {\n\n\t\t\t\t\t\tconsole.error( 'THREE.JSONLoader: ' + url + ' should be loaded with THREE.ObjectLoader instead.' );\n\t\t\t\t\t\treturn;\n\n\t\t\t\t\t}\n\n\t\t\t\t\tif ( type.toLowerCase() === 'scene' ) {\n\n\t\t\t\t\t\tconsole.error( 'THREE.JSONLoader: ' + url + ' should be loaded with THREE.SceneLoader instead.' );\n\t\t\t\t\t\treturn;\n\n\t\t\t\t\t}\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t\tvar object = scope.parse( json, texturePath );\n\t\t\tonLoad( object.geometry, object.materials );\n\n\t\t}, onProgress, onError );\n\n\t},\n\n\tsetTexturePath: function ( value ) {\n\n\t\tthis.texturePath = value;\n\n\t},\n\n\tparse: function ( json, texturePath ) {\n\n\t\tvar geometry = new Geometry(),\n\t\tscale = ( json.scale !== undefined ) ? 1.0 / json.scale : 1.0;\n\n\t\tparseModel( scale );\n\n\t\tparseSkin();\n\t\tparseMorphing( scale );\n\t\tparseAnimations();\n\n\t\tgeometry.computeFaceNormals();\n\t\tgeometry.computeBoundingSphere();\n\n\t\tfunction parseModel( scale ) {\n\n\t\t\tfunction isBitSet( value, position ) {\n\n\t\t\t\treturn value & ( 1 << position );\n\n\t\t\t}\n\n\t\t\tvar i, j, fi,\n\n\t\t\toffset, zLength,\n\n\t\tcolorIndex, normalIndex, uvIndex, materialIndex,\n\n\t\t\ttype,\n\t\t\tisQuad,\n\t\t\thasMaterial,\n\t\t\thasFaceVertexUv,\n\t\t\thasFaceNormal, hasFaceVertexNormal,\n\t\t\thasFaceColor, hasFaceVertexColor,\n\n\t\tvertex, face, faceA, faceB, hex, normal,\n\n\t\t\tuvLayer, uv, u, v,\n\n\t\t\tfaces = json.faces,\n\t\t\tvertices = json.vertices,\n\t\t\tnormals = json.normals,\n\t\t\tcolors = json.colors,\n\n\t\t\tnUvLayers = 0;\n\n\t\t\tif ( json.uvs !== undefined ) {\n\n\t\t\t\t// disregard empty arrays\n\n\t\t\t\tfor ( i = 0; i < json.uvs.length; i ++ ) {\n\n\t\t\t\t\tif ( json.uvs[ i ].length ) nUvLayers ++;\n\n\t\t\t\t}\n\n\t\t\t\tfor ( i = 0; i < nUvLayers; i ++ ) {\n\n\t\t\t\t\tgeometry.faceVertexUvs[ i ] = [];\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t\toffset = 0;\n\t\t\tzLength = vertices.length;\n\n\t\t\twhile ( offset < zLength ) {\n\n\t\t\t\tvertex = new Vector3();\n\n\t\t\t\tvertex.x = vertices[ offset ++ ] * scale;\n\t\t\t\tvertex.y = vertices[ offset ++ ] * scale;\n\t\t\t\tvertex.z = vertices[ offset ++ ] * scale;\n\n\t\t\t\tgeometry.vertices.push( vertex );\n\n\t\t\t}\n\n\t\t\toffset = 0;\n\t\t\tzLength = faces.length;\n\n\t\t\twhile ( offset < zLength ) {\n\n\t\t\t\ttype = faces[ offset ++ ];\n\n\n\t\t\t\tisQuad = isBitSet( type, 0 );\n\t\t\t\thasMaterial = isBitSet( type, 1 );\n\t\t\t\thasFaceVertexUv = isBitSet( type, 3 );\n\t\t\t\thasFaceNormal = isBitSet( type, 4 );\n\t\t\t\thasFaceVertexNormal = isBitSet( type, 5 );\n\t\t\t\thasFaceColor\t = isBitSet( type, 6 );\n\t\t\t\thasFaceVertexColor = isBitSet( type, 7 );\n\n\t\t\t\t// console.log(\"type\", type, \"bits\", isQuad, hasMaterial, hasFaceVertexUv, hasFaceNormal, hasFaceVertexNormal, hasFaceColor, hasFaceVertexColor);\n\n\t\t\t\tif ( isQuad ) {\n\n\t\t\t\t\tfaceA = new Face3();\n\t\t\t\t\tfaceA.a = faces[ offset ];\n\t\t\t\t\tfaceA.b = faces[ offset + 1 ];\n\t\t\t\t\tfaceA.c = faces[ offset + 3 ];\n\n\t\t\t\t\tfaceB = new Face3();\n\t\t\t\t\tfaceB.a = faces[ offset + 1 ];\n\t\t\t\t\tfaceB.b = faces[ offset + 2 ];\n\t\t\t\t\tfaceB.c = faces[ offset + 3 ];\n\n\t\t\t\t\toffset += 4;\n\n\t\t\t\t\tif ( hasMaterial ) {\n\n\t\t\t\t\t\tmaterialIndex = faces[ offset ++ ];\n\t\t\t\t\t\tfaceA.materialIndex = materialIndex;\n\t\t\t\t\t\tfaceB.materialIndex = materialIndex;\n\n\t\t\t\t\t}\n\n\t\t\t\t\t// to get face <=> uv index correspondence\n\n\t\t\t\t\tfi = geometry.faces.length;\n\n\t\t\t\t\tif ( hasFaceVertexUv ) {\n\n\t\t\t\t\t\tfor ( i = 0; i < nUvLayers; i ++ ) {\n\n\t\t\t\t\t\t\tuvLayer = json.uvs[ i ];\n\n\t\t\t\t\t\t\tgeometry.faceVertexUvs[ i ][ fi ] = [];\n\t\t\t\t\t\t\tgeometry.faceVertexUvs[ i ][ fi + 1 ] = [];\n\n\t\t\t\t\t\t\tfor ( j = 0; j < 4; j ++ ) {\n\n\t\t\t\t\t\t\t\tuvIndex = faces[ offset ++ ];\n\n\t\t\t\t\t\t\t\tu = uvLayer[ uvIndex * 2 ];\n\t\t\t\t\t\t\t\tv = uvLayer[ uvIndex * 2 + 1 ];\n\n\t\t\t\t\t\t\t\tuv = new Vector2( u, v );\n\n\t\t\t\t\t\t\t\tif ( j !== 2 ) geometry.faceVertexUvs[ i ][ fi ].push( uv );\n\t\t\t\t\t\t\t\tif ( j !== 0 ) geometry.faceVertexUvs[ i ][ fi + 1 ].push( uv );\n\n\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t}\n\n\t\t\t\t\t}\n\n\t\t\t\t\tif ( hasFaceNormal ) {\n\n\t\t\t\t\t\tnormalIndex = faces[ offset ++ ] * 3;\n\n\t\t\t\t\t\tfaceA.normal.set(\n\t\t\t\t\t\t\tnormals[ normalIndex ++ ],\n\t\t\t\t\t\t\tnormals[ normalIndex ++ ],\n\t\t\t\t\t\t\tnormals[ normalIndex ]\n\t\t\t\t\t\t);\n\n\t\t\t\t\t\tfaceB.normal.copy( faceA.normal );\n\n\t\t\t\t\t}\n\n\t\t\t\t\tif ( hasFaceVertexNormal ) {\n\n\t\t\t\t\t\tfor ( i = 0; i < 4; i ++ ) {\n\n\t\t\t\t\t\t\tnormalIndex = faces[ offset ++ ] * 3;\n\n\t\t\t\t\t\t\tnormal = new Vector3(\n\t\t\t\t\t\t\t\tnormals[ normalIndex ++ ],\n\t\t\t\t\t\t\t\tnormals[ normalIndex ++ ],\n\t\t\t\t\t\t\t\tnormals[ normalIndex ]\n\t\t\t\t\t\t\t);\n\n\n\t\t\t\t\t\t\tif ( i !== 2 ) faceA.vertexNormals.push( normal );\n\t\t\t\t\t\t\tif ( i !== 0 ) faceB.vertexNormals.push( normal );\n\n\t\t\t\t\t\t}\n\n\t\t\t\t\t}\n\n\n\t\t\t\t\tif ( hasFaceColor ) {\n\n\t\t\t\t\t\tcolorIndex = faces[ offset ++ ];\n\t\t\t\t\t\thex = colors[ colorIndex ];\n\n\t\t\t\t\t\tfaceA.color.setHex( hex );\n\t\t\t\t\t\tfaceB.color.setHex( hex );\n\n\t\t\t\t\t}\n\n\n\t\t\t\t\tif ( hasFaceVertexColor ) {\n\n\t\t\t\t\t\tfor ( i = 0; i < 4; i ++ ) {\n\n\t\t\t\t\t\t\tcolorIndex = faces[ offset ++ ];\n\t\t\t\t\t\t\thex = colors[ colorIndex ];\n\n\t\t\t\t\t\t\tif ( i !== 2 ) faceA.vertexColors.push( new Color( hex ) );\n\t\t\t\t\t\t\tif ( i !== 0 ) faceB.vertexColors.push( new Color( hex ) );\n\n\t\t\t\t\t\t}\n\n\t\t\t\t\t}\n\n\t\t\t\t\tgeometry.faces.push( faceA );\n\t\t\t\t\tgeometry.faces.push( faceB );\n\n\t\t\t\t} else {\n\n\t\t\t\t\tface = new Face3();\n\t\t\t\t\tface.a = faces[ offset ++ ];\n\t\t\t\t\tface.b = faces[ offset ++ ];\n\t\t\t\t\tface.c = faces[ offset ++ ];\n\n\t\t\t\t\tif ( hasMaterial ) {\n\n\t\t\t\t\t\tmaterialIndex = faces[ offset ++ ];\n\t\t\t\t\t\tface.materialIndex = materialIndex;\n\n\t\t\t\t\t}\n\n\t\t\t\t\t// to get face <=> uv index correspondence\n\n\t\t\t\t\tfi = geometry.faces.length;\n\n\t\t\t\t\tif ( hasFaceVertexUv ) {\n\n\t\t\t\t\t\tfor ( i = 0; i < nUvLayers; i ++ ) {\n\n\t\t\t\t\t\t\tuvLayer = json.uvs[ i ];\n\n\t\t\t\t\t\t\tgeometry.faceVertexUvs[ i ][ fi ] = [];\n\n\t\t\t\t\t\t\tfor ( j = 0; j < 3; j ++ ) {\n\n\t\t\t\t\t\t\t\tuvIndex = faces[ offset ++ ];\n\n\t\t\t\t\t\t\t\tu = uvLayer[ uvIndex * 2 ];\n\t\t\t\t\t\t\t\tv = uvLayer[ uvIndex * 2 + 1 ];\n\n\t\t\t\t\t\t\t\tuv = new Vector2( u, v );\n\n\t\t\t\t\t\t\t\tgeometry.faceVertexUvs[ i ][ fi ].push( uv );\n\n\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t}\n\n\t\t\t\t\t}\n\n\t\t\t\t\tif ( hasFaceNormal ) {\n\n\t\t\t\t\t\tnormalIndex = faces[ offset ++ ] * 3;\n\n\t\t\t\t\t\tface.normal.set(\n\t\t\t\t\t\t\tnormals[ normalIndex ++ ],\n\t\t\t\t\t\t\tnormals[ normalIndex ++ ],\n\t\t\t\t\t\t\tnormals[ normalIndex ]\n\t\t\t\t\t\t);\n\n\t\t\t\t\t}\n\n\t\t\t\t\tif ( hasFaceVertexNormal ) {\n\n\t\t\t\t\t\tfor ( i = 0; i < 3; i ++ ) {\n\n\t\t\t\t\t\t\tnormalIndex = faces[ offset ++ ] * 3;\n\n\t\t\t\t\t\t\tnormal = new Vector3(\n\t\t\t\t\t\t\t\tnormals[ normalIndex ++ ],\n\t\t\t\t\t\t\t\tnormals[ normalIndex ++ ],\n\t\t\t\t\t\t\t\tnormals[ normalIndex ]\n\t\t\t\t\t\t\t);\n\n\t\t\t\t\t\t\tface.vertexNormals.push( normal );\n\n\t\t\t\t\t\t}\n\n\t\t\t\t\t}\n\n\n\t\t\t\t\tif ( hasFaceColor ) {\n\n\t\t\t\t\t\tcolorIndex = faces[ offset ++ ];\n\t\t\t\t\t\tface.color.setHex( colors[ colorIndex ] );\n\n\t\t\t\t\t}\n\n\n\t\t\t\t\tif ( hasFaceVertexColor ) {\n\n\t\t\t\t\t\tfor ( i = 0; i < 3; i ++ ) {\n\n\t\t\t\t\t\t\tcolorIndex = faces[ offset ++ ];\n\t\t\t\t\t\t\tface.vertexColors.push( new Color( colors[ colorIndex ] ) );\n\n\t\t\t\t\t\t}\n\n\t\t\t\t\t}\n\n\t\t\t\t\tgeometry.faces.push( face );\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t}\n\n\t\tfunction parseSkin() {\n\n\t\t\tvar influencesPerVertex = ( json.influencesPerVertex !== undefined ) ? json.influencesPerVertex : 2;\n\n\t\t\tif ( json.skinWeights ) {\n\n\t\t\t\tfor ( var i = 0, l = json.skinWeights.length; i < l; i += influencesPerVertex ) {\n\n\t\t\t\t\tvar x = json.skinWeights[ i ];\n\t\t\t\t\tvar y = ( influencesPerVertex > 1 ) ? json.skinWeights[ i + 1 ] : 0;\n\t\t\t\t\tvar z = ( influencesPerVertex > 2 ) ? json.skinWeights[ i + 2 ] : 0;\n\t\t\t\t\tvar w = ( influencesPerVertex > 3 ) ? json.skinWeights[ i + 3 ] : 0;\n\n\t\t\t\t\tgeometry.skinWeights.push( new Vector4( x, y, z, w ) );\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t\tif ( json.skinIndices ) {\n\n\t\t\t\tfor ( var i = 0, l = json.skinIndices.length; i < l; i += influencesPerVertex ) {\n\n\t\t\t\t\tvar a = json.skinIndices[ i ];\n\t\t\t\t\tvar b = ( influencesPerVertex > 1 ) ? json.skinIndices[ i + 1 ] : 0;\n\t\t\t\t\tvar c = ( influencesPerVertex > 2 ) ? json.skinIndices[ i + 2 ] : 0;\n\t\t\t\t\tvar d = ( influencesPerVertex > 3 ) ? json.skinIndices[ i + 3 ] : 0;\n\n\t\t\t\t\tgeometry.skinIndices.push( new Vector4( a, b, c, d ) );\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t\tgeometry.bones = json.bones;\n\n\t\t\tif ( geometry.bones && geometry.bones.length > 0 && ( geometry.skinWeights.length !== geometry.skinIndices.length || geometry.skinIndices.length !== geometry.vertices.length ) ) {\n\n\t\t\t\tconsole.warn( 'When skinning, number of vertices (' + geometry.vertices.length + '), skinIndices (' +\n\t\t\t\t\tgeometry.skinIndices.length + '), and skinWeights (' + geometry.skinWeights.length + ') should match.' );\n\n\t\t\t}\n\n\t\t}\n\n\t\tfunction parseMorphing( scale ) {\n\n\t\t\tif ( json.morphTargets !== undefined ) {\n\n\t\t\t\tfor ( var i = 0, l = json.morphTargets.length; i < l; i ++ ) {\n\n\t\t\t\t\tgeometry.morphTargets[ i ] = {};\n\t\t\t\t\tgeometry.morphTargets[ i ].name = json.morphTargets[ i ].name;\n\t\t\t\t\tgeometry.morphTargets[ i ].vertices = [];\n\n\t\t\t\t\tvar dstVertices = geometry.morphTargets[ i ].vertices;\n\t\t\t\t\tvar srcVertices = json.morphTargets[ i ].vertices;\n\n\t\t\t\t\tfor ( var v = 0, vl = srcVertices.length; v < vl; v += 3 ) {\n\n\t\t\t\t\t\tvar vertex = new Vector3();\n\t\t\t\t\t\tvertex.x = srcVertices[ v ] * scale;\n\t\t\t\t\t\tvertex.y = srcVertices[ v + 1 ] * scale;\n\t\t\t\t\t\tvertex.z = srcVertices[ v + 2 ] * scale;\n\n\t\t\t\t\t\tdstVertices.push( vertex );\n\n\t\t\t\t\t}\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t\tif ( json.morphColors !== undefined && json.morphColors.length > 0 ) {\n\n\t\t\t\tconsole.warn( 'THREE.JSONLoader: \"morphColors\" no longer supported. Using them as face colors.' );\n\n\t\t\t\tvar faces = geometry.faces;\n\t\t\t\tvar morphColors = json.morphColors[ 0 ].colors;\n\n\t\t\t\tfor ( var i = 0, l = faces.length; i < l; i ++ ) {\n\n\t\t\t\t\tfaces[ i ].color.fromArray( morphColors, i * 3 );\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t}\n\n\t\tfunction parseAnimations() {\n\n\t\t\tvar outputAnimations = [];\n\n\t\t\t// parse old style Bone/Hierarchy animations\n\t\t\tvar animations = [];\n\n\t\t\tif ( json.animation !== undefined ) {\n\n\t\t\t\tanimations.push( json.animation );\n\n\t\t\t}\n\n\t\t\tif ( json.animations !== undefined ) {\n\n\t\t\t\tif ( json.animations.length ) {\n\n\t\t\t\t\tanimations = animations.concat( json.animations );\n\n\t\t\t\t} else {\n\n\t\t\t\t\tanimations.push( json.animations );\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t\tfor ( var i = 0; i < animations.length; i ++ ) {\n\n\t\t\t\tvar clip = AnimationClip.parseAnimation( animations[ i ], geometry.bones );\n\t\t\t\tif ( clip ) outputAnimations.push( clip );\n\n\t\t\t}\n\n\t\t\t// parse implicit morph animations\n\t\t\tif ( geometry.morphTargets ) {\n\n\t\t\t\t// TODO: Figure out what an appropraite FPS is for morph target animations -- defaulting to 10, but really it is completely arbitrary.\n\t\t\t\tvar morphAnimationClips = AnimationClip.CreateClipsFromMorphTargetSequences( geometry.morphTargets, 10 );\n\t\t\t\toutputAnimations = outputAnimations.concat( morphAnimationClips );\n\n\t\t\t}\n\n\t\t\tif ( outputAnimations.length > 0 ) geometry.animations = outputAnimations;\n\n\t\t}\n\n\t\tif ( json.materials === undefined || json.materials.length === 0 ) {\n\n\t\t\treturn { geometry: geometry };\n\n\t\t} else {\n\n\t\t\tvar materials = Loader.prototype.initMaterials( json.materials, texturePath, this.crossOrigin );\n\n\t\t\treturn { geometry: geometry, materials: materials };\n\n\t\t}\n\n\t}\n\n} );\n\n\nexport { JSONLoader };\n","import { TextureMapping, TextureWrapping, TextureFilter } from '../constants';\nimport { Color } from '../math/Color';\nimport { Matrix4 } from '../math/Matrix4';\nimport { Object3D } from '../core/Object3D';\nimport { Group } from '../objects/Group';\nimport { Sprite } from '../objects/Sprite';\nimport { Points } from '../objects/Points';\nimport { Line } from '../objects/Line';\nimport { LineSegments } from '../objects/LineSegments';\nimport { LOD } from '../objects/LOD';\nimport { Mesh } from '../objects/Mesh';\nimport { SkinnedMesh } from '../objects/SkinnedMesh';\nimport { Fog } from '../scenes/Fog';\nimport { FogExp2 } from '../scenes/FogExp2';\nimport { HemisphereLight } from '../lights/HemisphereLight';\nimport { SpotLight } from '../lights/SpotLight';\nimport { PointLight } from '../lights/PointLight';\nimport { DirectionalLight } from '../lights/DirectionalLight';\nimport { AmbientLight } from '../lights/AmbientLight';\nimport { OrthographicCamera } from '../cameras/OrthographicCamera';\nimport { PerspectiveCamera } from '../cameras/PerspectiveCamera';\nimport { Scene } from '../scenes/Scene';\nimport { Texture } from '../textures/Texture';\nimport { ImageLoader } from './ImageLoader';\nimport { LoadingManager, DefaultLoadingManager } from './LoadingManager';\nimport { AnimationClip } from '../animation/AnimationClip';\nimport { MaterialLoader } from './MaterialLoader';\nimport { BufferGeometryLoader } from './BufferGeometryLoader';\nimport { JSONLoader } from './JSONLoader';\nimport { FileLoader } from './FileLoader';\nimport * as Geometries from '../geometries/Geometries';\n\n/**\n * @author mrdoob / http://mrdoob.com/\n */\n\nfunction ObjectLoader ( manager ) {\n\n\tthis.manager = ( manager !== undefined ) ? manager : DefaultLoadingManager;\n\tthis.texturePath = '';\n\n}\n\nObject.assign( ObjectLoader.prototype, {\n\n\tload: function ( url, onLoad, onProgress, onError ) {\n\n\t\tif ( this.texturePath === '' ) {\n\n\t\t\tthis.texturePath = url.substring( 0, url.lastIndexOf( '/' ) + 1 );\n\n\t\t}\n\n\t\tvar scope = this;\n\n\t\tvar loader = new FileLoader( scope.manager );\n\t\tloader.load( url, function ( text ) {\n\n\t\t\tvar json = null;\n\n\t\t\ttry {\n\n\t\t\t\tjson = JSON.parse( text );\n\n\t\t\t} catch ( error ) {\n\n\t\t\t\tconsole.error( 'THREE:ObjectLoader: Can\\'t parse ' + url + '.', error.message );\n\t\t\t\treturn;\n\n\t\t\t}\n\n\t\t\tvar metadata = json.metadata;\n\n\t\t\tif ( metadata === undefined || metadata.type === undefined || metadata.type.toLowerCase() === 'geometry' ) {\n\n\t\t\t\tconsole.error( 'THREE.ObjectLoader: Can\\'t load ' + url + '. Use THREE.JSONLoader instead.' );\n\t\t\t\treturn;\n\n\t\t\t}\n\n\t\t\tscope.parse( json, onLoad );\n\n\t\t}, onProgress, onError );\n\n\t},\n\n\tsetTexturePath: function ( value ) {\n\n\t\tthis.texturePath = value;\n\n\t},\n\n\tsetCrossOrigin: function ( value ) {\n\n\t\tthis.crossOrigin = value;\n\n\t},\n\n\tparse: function ( json, onLoad ) {\n\n\t\tvar geometries = this.parseGeometries( json.geometries );\n\n\t\tvar images = this.parseImages( json.images, function () {\n\n\t\t\tif ( onLoad !== undefined ) onLoad( object );\n\n\t\t} );\n\n\t\tvar textures = this.parseTextures( json.textures, images );\n\t\tvar materials = this.parseMaterials( json.materials, textures );\n\n\t\tvar object = this.parseObject( json.object, geometries, materials );\n\n\t\tif ( json.animations ) {\n\n\t\t\tobject.animations = this.parseAnimations( json.animations );\n\n\t\t}\n\n\t\tif ( json.images === undefined || json.images.length === 0 ) {\n\n\t\t\tif ( onLoad !== undefined ) onLoad( object );\n\n\t\t}\n\n\t\treturn object;\n\n\t},\n\n\tparseGeometries: function ( json ) {\n\n\t\tvar geometries = {};\n\n\t\tif ( json !== undefined ) {\n\n\t\t\tvar geometryLoader = new JSONLoader();\n\t\t\tvar bufferGeometryLoader = new BufferGeometryLoader();\n\n\t\t\tfor ( var i = 0, l = json.length; i < l; i ++ ) {\n\n\t\t\t\tvar geometry;\n\t\t\t\tvar data = json[ i ];\n\n\t\t\t\tswitch ( data.type ) {\n\n\t\t\t\t\tcase 'PlaneGeometry':\n\t\t\t\t\tcase 'PlaneBufferGeometry':\n\n\t\t\t\t\t\tgeometry = new Geometries[ data.type ](\n\t\t\t\t\t\t\tdata.width,\n\t\t\t\t\t\t\tdata.height,\n\t\t\t\t\t\t\tdata.widthSegments,\n\t\t\t\t\t\t\tdata.heightSegments\n\t\t\t\t\t\t);\n\n\t\t\t\t\t\tbreak;\n\n\t\t\t\t\tcase 'BoxGeometry':\n\t\t\t\t\tcase 'BoxBufferGeometry':\n\t\t\t\t\tcase 'CubeGeometry': // backwards compatible\n\n\t\t\t\t\t\tgeometry = new Geometries[ data.type ](\n\t\t\t\t\t\t\tdata.width,\n\t\t\t\t\t\t\tdata.height,\n\t\t\t\t\t\t\tdata.depth,\n\t\t\t\t\t\t\tdata.widthSegments,\n\t\t\t\t\t\t\tdata.heightSegments,\n\t\t\t\t\t\t\tdata.depthSegments\n\t\t\t\t\t\t);\n\n\t\t\t\t\t\tbreak;\n\n\t\t\t\t\tcase 'CircleGeometry':\n\t\t\t\t\tcase 'CircleBufferGeometry':\n\n\t\t\t\t\t\tgeometry = new Geometries[ data.type ](\n\t\t\t\t\t\t\tdata.radius,\n\t\t\t\t\t\t\tdata.segments,\n\t\t\t\t\t\t\tdata.thetaStart,\n\t\t\t\t\t\t\tdata.thetaLength\n\t\t\t\t\t\t);\n\n\t\t\t\t\t\tbreak;\n\n\t\t\t\t\tcase 'CylinderGeometry':\n\t\t\t\t\tcase 'CylinderBufferGeometry':\n\n\t\t\t\t\t\tgeometry = new Geometries[ data.type ](\n\t\t\t\t\t\t\tdata.radiusTop,\n\t\t\t\t\t\t\tdata.radiusBottom,\n\t\t\t\t\t\t\tdata.height,\n\t\t\t\t\t\t\tdata.radialSegments,\n\t\t\t\t\t\t\tdata.heightSegments,\n\t\t\t\t\t\t\tdata.openEnded,\n\t\t\t\t\t\t\tdata.thetaStart,\n\t\t\t\t\t\t\tdata.thetaLength\n\t\t\t\t\t\t);\n\n\t\t\t\t\t\tbreak;\n\n\t\t\t\t\tcase 'ConeGeometry':\n\t\t\t\t\tcase 'ConeBufferGeometry':\n\n\t\t\t\t\t\tgeometry = new Geometries[ data.type ](\n\t\t\t\t\t\t\tdata.radius,\n\t\t\t\t\t\t\tdata.height,\n\t\t\t\t\t\t\tdata.radialSegments,\n\t\t\t\t\t\t\tdata.heightSegments,\n\t\t\t\t\t\t\tdata.openEnded,\n\t\t\t\t\t\t\tdata.thetaStart,\n\t\t\t\t\t\t\tdata.thetaLength\n\t\t\t\t\t\t);\n\n\t\t\t\t\t\tbreak;\n\n\t\t\t\t\tcase 'SphereGeometry':\n\t\t\t\t\tcase 'SphereBufferGeometry':\n\n\t\t\t\t\t\tgeometry = new Geometries[ data.type ](\n\t\t\t\t\t\t\tdata.radius,\n\t\t\t\t\t\t\tdata.widthSegments,\n\t\t\t\t\t\t\tdata.heightSegments,\n\t\t\t\t\t\t\tdata.phiStart,\n\t\t\t\t\t\t\tdata.phiLength,\n\t\t\t\t\t\t\tdata.thetaStart,\n\t\t\t\t\t\t\tdata.thetaLength\n\t\t\t\t\t\t);\n\n\t\t\t\t\t\tbreak;\n\n\t\t\t\t\tcase 'DodecahedronGeometry':\n\t\t\t\t\tcase 'IcosahedronGeometry':\n\t\t\t\t\tcase 'OctahedronGeometry':\n\t\t\t\t\tcase 'TetrahedronGeometry':\n\n\t\t\t\t\t\tgeometry = new Geometries[ data.type ](\n\t\t\t\t\t\t\tdata.radius,\n\t\t\t\t\t\t\tdata.detail\n\t\t\t\t\t\t);\n\n\t\t\t\t\t\tbreak;\n\n\t\t\t\t\tcase 'RingGeometry':\n\t\t\t\t\tcase 'RingBufferGeometry':\n\n\t\t\t\t\t\tgeometry = new Geometries[ data.type ](\n\t\t\t\t\t\t\tdata.innerRadius,\n\t\t\t\t\t\t\tdata.outerRadius,\n\t\t\t\t\t\t\tdata.thetaSegments,\n\t\t\t\t\t\t\tdata.phiSegments,\n\t\t\t\t\t\t\tdata.thetaStart,\n\t\t\t\t\t\t\tdata.thetaLength\n\t\t\t\t\t\t);\n\n\t\t\t\t\t\tbreak;\n\n\t\t\t\t\tcase 'TorusGeometry':\n\t\t\t\t\tcase 'TorusBufferGeometry':\n\n\t\t\t\t\t\tgeometry = new Geometries[ data.type ](\n\t\t\t\t\t\t\tdata.radius,\n\t\t\t\t\t\t\tdata.tube,\n\t\t\t\t\t\t\tdata.radialSegments,\n\t\t\t\t\t\t\tdata.tubularSegments,\n\t\t\t\t\t\t\tdata.arc\n\t\t\t\t\t\t);\n\n\t\t\t\t\t\tbreak;\n\n\t\t\t\t\tcase 'TorusKnotGeometry':\n\t\t\t\t\tcase 'TorusKnotBufferGeometry':\n\n\t\t\t\t\t\tgeometry = new Geometries[ data.type ](\n\t\t\t\t\t\t\tdata.radius,\n\t\t\t\t\t\t\tdata.tube,\n\t\t\t\t\t\t\tdata.tubularSegments,\n\t\t\t\t\t\t\tdata.radialSegments,\n\t\t\t\t\t\t\tdata.p,\n\t\t\t\t\t\t\tdata.q\n\t\t\t\t\t\t);\n\n\t\t\t\t\t\tbreak;\n\n\t\t\t\t\tcase 'LatheGeometry':\n\t\t\t\t\tcase 'LatheBufferGeometry':\n\n\t\t\t\t\t\tgeometry = new Geometries[ data.type ](\n\t\t\t\t\t\t\tdata.points,\n\t\t\t\t\t\t\tdata.segments,\n\t\t\t\t\t\t\tdata.phiStart,\n\t\t\t\t\t\t\tdata.phiLength\n\t\t\t\t\t\t);\n\n\t\t\t\t\t\tbreak;\n\n\t\t\t\t\tcase 'BufferGeometry':\n\n\t\t\t\t\t\tgeometry = bufferGeometryLoader.parse( data );\n\n\t\t\t\t\t\tbreak;\n\n\t\t\t\t\tcase 'Geometry':\n\n\t\t\t\t\t\tgeometry = geometryLoader.parse( data.data, this.texturePath ).geometry;\n\n\t\t\t\t\t\tbreak;\n\n\t\t\t\t\tdefault:\n\n\t\t\t\t\t\tconsole.warn( 'THREE.ObjectLoader: Unsupported geometry type \"' + data.type + '\"' );\n\n\t\t\t\t\t\tcontinue;\n\n\t\t\t\t}\n\n\t\t\t\tgeometry.uuid = data.uuid;\n\n\t\t\t\tif ( data.name !== undefined ) geometry.name = data.name;\n\n\t\t\t\tgeometries[ data.uuid ] = geometry;\n\n\t\t\t}\n\n\t\t}\n\n\t\treturn geometries;\n\n\t},\n\n\tparseMaterials: function ( json, textures ) {\n\n\t\tvar materials = {};\n\n\t\tif ( json !== undefined ) {\n\n\t\t\tvar loader = new MaterialLoader();\n\t\t\tloader.setTextures( textures );\n\n\t\t\tfor ( var i = 0, l = json.length; i < l; i ++ ) {\n\n\t\t\t\tvar material = loader.parse( json[ i ] );\n\t\t\t\tmaterials[ material.uuid ] = material;\n\n\t\t\t}\n\n\t\t}\n\n\t\treturn materials;\n\n\t},\n\n\tparseAnimations: function ( json ) {\n\n\t\tvar animations = [];\n\n\t\tfor ( var i = 0; i < json.length; i ++ ) {\n\n\t\t\tvar clip = AnimationClip.parse( json[ i ] );\n\n\t\t\tanimations.push( clip );\n\n\t\t}\n\n\t\treturn animations;\n\n\t},\n\n\tparseImages: function ( json, onLoad ) {\n\n\t\tvar scope = this;\n\t\tvar images = {};\n\n\t\tfunction loadImage( url ) {\n\n\t\t\tscope.manager.itemStart( url );\n\n\t\t\treturn loader.load( url, function () {\n\n\t\t\t\tscope.manager.itemEnd( url );\n\n\t\t\t}, undefined, function () {\n\n\t\t\t\tscope.manager.itemError( url );\n\n\t\t\t} );\n\n\t\t}\n\n\t\tif ( json !== undefined && json.length > 0 ) {\n\n\t\t\tvar manager = new LoadingManager( onLoad );\n\n\t\t\tvar loader = new ImageLoader( manager );\n\t\t\tloader.setCrossOrigin( this.crossOrigin );\n\n\t\t\tfor ( var i = 0, l = json.length; i < l; i ++ ) {\n\n\t\t\t\tvar image = json[ i ];\n\t\t\t\tvar path = /^(\\/\\/)|([a-z]+:(\\/\\/)?)/i.test( image.url ) ? image.url : scope.texturePath + image.url;\n\n\t\t\t\timages[ image.uuid ] = loadImage( path );\n\n\t\t\t}\n\n\t\t}\n\n\t\treturn images;\n\n\t},\n\n\tparseTextures: function ( json, images ) {\n\n\t\tfunction parseConstant( value, type ) {\n\n\t\t\tif ( typeof( value ) === 'number' ) return value;\n\n\t\t\tconsole.warn( 'THREE.ObjectLoader.parseTexture: Constant should be in numeric form.', value );\n\n\t\t\treturn type[ value ];\n\n\t\t}\n\n\t\tvar textures = {};\n\n\t\tif ( json !== undefined ) {\n\n\t\t\tfor ( var i = 0, l = json.length; i < l; i ++ ) {\n\n\t\t\t\tvar data = json[ i ];\n\n\t\t\t\tif ( data.image === undefined ) {\n\n\t\t\t\t\tconsole.warn( 'THREE.ObjectLoader: No \"image\" specified for', data.uuid );\n\n\t\t\t\t}\n\n\t\t\t\tif ( images[ data.image ] === undefined ) {\n\n\t\t\t\t\tconsole.warn( 'THREE.ObjectLoader: Undefined image', data.image );\n\n\t\t\t\t}\n\n\t\t\t\tvar texture = new Texture( images[ data.image ] );\n\t\t\t\ttexture.needsUpdate = true;\n\n\t\t\t\ttexture.uuid = data.uuid;\n\n\t\t\t\tif ( data.name !== undefined ) texture.name = data.name;\n\n\t\t\t\tif ( data.mapping !== undefined ) texture.mapping = parseConstant( data.mapping, TextureMapping );\n\n\t\t\t\tif ( data.offset !== undefined ) texture.offset.fromArray( data.offset );\n\t\t\t\tif ( data.repeat !== undefined ) texture.repeat.fromArray( data.repeat );\n\t\t\t\tif ( data.wrap !== undefined ) {\n\n\t\t\t\t\ttexture.wrapS = parseConstant( data.wrap[ 0 ], TextureWrapping );\n\t\t\t\t\ttexture.wrapT = parseConstant( data.wrap[ 1 ], TextureWrapping );\n\n\t\t\t\t}\n\n\t\t\t\tif ( data.minFilter !== undefined ) texture.minFilter = parseConstant( data.minFilter, TextureFilter );\n\t\t\t\tif ( data.magFilter !== undefined ) texture.magFilter = parseConstant( data.magFilter, TextureFilter );\n\t\t\t\tif ( data.anisotropy !== undefined ) texture.anisotropy = data.anisotropy;\n\n\t\t\t\tif ( data.flipY !== undefined ) texture.flipY = data.flipY;\n\n\t\t\t\ttextures[ data.uuid ] = texture;\n\n\t\t\t}\n\n\t\t}\n\n\t\treturn textures;\n\n\t},\n\n\tparseObject: function () {\n\n\t\tvar matrix = new Matrix4();\n\n\t\treturn function parseObject( data, geometries, materials ) {\n\n\t\t\tvar object;\n\n\t\t\tfunction getGeometry( name ) {\n\n\t\t\t\tif ( geometries[ name ] === undefined ) {\n\n\t\t\t\t\tconsole.warn( 'THREE.ObjectLoader: Undefined geometry', name );\n\n\t\t\t\t}\n\n\t\t\t\treturn geometries[ name ];\n\n\t\t\t}\n\n\t\t\tfunction getMaterial( name ) {\n\n\t\t\t\tif ( name === undefined ) return undefined;\n\n\t\t\t\tif ( materials[ name ] === undefined ) {\n\n\t\t\t\t\tconsole.warn( 'THREE.ObjectLoader: Undefined material', name );\n\n\t\t\t\t}\n\n\t\t\t\treturn materials[ name ];\n\n\t\t\t}\n\n\t\t\tswitch ( data.type ) {\n\n\t\t\t\tcase 'Scene':\n\n\t\t\t\t\tobject = new Scene();\n\n\t\t\t\t\tif ( data.background !== undefined ) {\n\n\t\t\t\t\t\tif ( Number.isInteger( data.background ) ) {\n\n\t\t\t\t\t\t\tobject.background = new Color( data.background );\n\n\t\t\t\t\t\t}\n\n\t\t\t\t\t}\n\n\t\t\t\t\tif ( data.fog !== undefined ) {\n\n\t\t\t\t\t\tif ( data.fog.type === 'Fog' ) {\n\n\t\t\t\t\t\t\tobject.fog = new Fog( data.fog.color, data.fog.near, data.fog.far );\n\n\t\t\t\t\t\t} else if ( data.fog.type === 'FogExp2' ) {\n\n\t\t\t\t\t\t\tobject.fog = new FogExp2( data.fog.color, data.fog.density );\n\n\t\t\t\t\t\t}\n\n\t\t\t\t\t}\n\n\t\t\t\t\tbreak;\n\n\t\t\t\tcase 'PerspectiveCamera':\n\n\t\t\t\t\tobject = new PerspectiveCamera( data.fov, data.aspect, data.near, data.far );\n\n\t\t\t\t\tif ( data.focus !== undefined ) object.focus = data.focus;\n\t\t\t\t\tif ( data.zoom !== undefined ) object.zoom = data.zoom;\n\t\t\t\t\tif ( data.filmGauge !== undefined ) object.filmGauge = data.filmGauge;\n\t\t\t\t\tif ( data.filmOffset !== undefined ) object.filmOffset = data.filmOffset;\n\t\t\t\t\tif ( data.view !== undefined ) object.view = Object.assign( {}, data.view );\n\n\t\t\t\t\tbreak;\n\n\t\t\t\tcase 'OrthographicCamera':\n\n\t\t\t\t\tobject = new OrthographicCamera( data.left, data.right, data.top, data.bottom, data.near, data.far );\n\n\t\t\t\t\tbreak;\n\n\t\t\t\tcase 'AmbientLight':\n\n\t\t\t\t\tobject = new AmbientLight( data.color, data.intensity );\n\n\t\t\t\t\tbreak;\n\n\t\t\t\tcase 'DirectionalLight':\n\n\t\t\t\t\tobject = new DirectionalLight( data.color, data.intensity );\n\n\t\t\t\t\tbreak;\n\n\t\t\t\tcase 'PointLight':\n\n\t\t\t\t\tobject = new PointLight( data.color, data.intensity, data.distance, data.decay );\n\n\t\t\t\t\tbreak;\n\n\t\t\t\tcase 'SpotLight':\n\n\t\t\t\t\tobject = new SpotLight( data.color, data.intensity, data.distance, data.angle, data.penumbra, data.decay );\n\n\t\t\t\t\tbreak;\n\n\t\t\t\tcase 'HemisphereLight':\n\n\t\t\t\t\tobject = new HemisphereLight( data.color, data.groundColor, data.intensity );\n\n\t\t\t\t\tbreak;\n\n\t\t\t\tcase 'Mesh':\n\n\t\t\t\t\tvar geometry = getGeometry( data.geometry );\n\t\t\t\t\tvar material = getMaterial( data.material );\n\n\t\t\t\t\tif ( geometry.bones && geometry.bones.length > 0 ) {\n\n\t\t\t\t\t\tobject = new SkinnedMesh( geometry, material );\n\n\t\t\t\t\t} else {\n\n\t\t\t\t\t\tobject = new Mesh( geometry, material );\n\n\t\t\t\t\t}\n\n\t\t\t\t\tbreak;\n\n\t\t\t\tcase 'LOD':\n\n\t\t\t\t\tobject = new LOD();\n\n\t\t\t\t\tbreak;\n\n\t\t\t\tcase 'Line':\n\n\t\t\t\t\tobject = new Line( getGeometry( data.geometry ), getMaterial( data.material ), data.mode );\n\n\t\t\t\t\tbreak;\n\n\t\t\t\tcase 'LineSegments':\n\n\t\t\t\t\tobject = new LineSegments( getGeometry( data.geometry ), getMaterial( data.material ) );\n\n\t\t\t\t\tbreak;\n\n\t\t\t\tcase 'PointCloud':\n\t\t\t\tcase 'Points':\n\n\t\t\t\t\tobject = new Points( getGeometry( data.geometry ), getMaterial( data.material ) );\n\n\t\t\t\t\tbreak;\n\n\t\t\t\tcase 'Sprite':\n\n\t\t\t\t\tobject = new Sprite( getMaterial( data.material ) );\n\n\t\t\t\t\tbreak;\n\n\t\t\t\tcase 'Group':\n\n\t\t\t\t\tobject = new Group();\n\n\t\t\t\t\tbreak;\n\n\t\t\t\tdefault:\n\n\t\t\t\t\tobject = new Object3D();\n\n\t\t\t}\n\n\t\t\tobject.uuid = data.uuid;\n\n\t\t\tif ( data.name !== undefined ) object.name = data.name;\n\t\t\tif ( data.matrix !== undefined ) {\n\n\t\t\t\tmatrix.fromArray( data.matrix );\n\t\t\t\tmatrix.decompose( object.position, object.quaternion, object.scale );\n\n\t\t\t} else {\n\n\t\t\t\tif ( data.position !== undefined ) object.position.fromArray( data.position );\n\t\t\t\tif ( data.rotation !== undefined ) object.rotation.fromArray( data.rotation );\n\t\t\t\tif ( data.quaternion !== undefined ) object.quaternion.fromArray( data.quaternion );\n\t\t\t\tif ( data.scale !== undefined ) object.scale.fromArray( data.scale );\n\n\t\t\t}\n\n\t\t\tif ( data.castShadow !== undefined ) object.castShadow = data.castShadow;\n\t\t\tif ( data.receiveShadow !== undefined ) object.receiveShadow = data.receiveShadow;\n\n\t\t\tif ( data.shadow ) {\n\n\t\t\t\tif ( data.shadow.bias !== undefined ) object.shadow.bias = data.shadow.bias;\n\t\t\t\tif ( data.shadow.radius !== undefined ) object.shadow.radius = data.shadow.radius;\n\t\t\t\tif ( data.shadow.mapSize !== undefined ) object.shadow.mapSize.fromArray( data.shadow.mapSize );\n\t\t\t\tif ( data.shadow.camera !== undefined ) object.shadow.camera = this.parseObject( data.shadow.camera );\n\n\t\t\t}\n\n\t\t\tif ( data.visible !== undefined ) object.visible = data.visible;\n\t\t\tif ( data.userData !== undefined ) object.userData = data.userData;\n\n\t\t\tif ( data.children !== undefined ) {\n\n\t\t\t\tfor ( var child in data.children ) {\n\n\t\t\t\t\tobject.add( this.parseObject( data.children[ child ], geometries, materials ) );\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t\tif ( data.type === 'LOD' ) {\n\n\t\t\t\tvar levels = data.levels;\n\n\t\t\t\tfor ( var l = 0; l < levels.length; l ++ ) {\n\n\t\t\t\t\tvar level = levels[ l ];\n\t\t\t\t\tvar child = object.getObjectByProperty( 'uuid', level.object );\n\n\t\t\t\t\tif ( child !== undefined ) {\n\n\t\t\t\t\t\tobject.addLevel( child, level.distance );\n\n\t\t\t\t\t}\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t\treturn object;\n\n\t\t};\n\n\t}()\n\n} );\n\n\nexport { ObjectLoader };\n","import { _Math } from '../../math/Math';\nimport { Vector3 } from '../../math/Vector3';\nimport { Matrix4 } from '../../math/Matrix4';\n\n/**\n * @author zz85 / http://www.lab4games.net/zz85/blog\n * Extensible curve object\n *\n * Some common of Curve methods\n * .getPoint(t), getTangent(t)\n * .getPointAt(u), getTangentAt(u)\n * .getPoints(), .getSpacedPoints()\n * .getLength()\n * .updateArcLengths()\n *\n * This following classes subclasses THREE.Curve:\n *\n * -- 2d classes --\n * THREE.LineCurve\n * THREE.QuadraticBezierCurve\n * THREE.CubicBezierCurve\n * THREE.SplineCurve\n * THREE.ArcCurve\n * THREE.EllipseCurve\n *\n * -- 3d classes --\n * THREE.LineCurve3\n * THREE.QuadraticBezierCurve3\n * THREE.CubicBezierCurve3\n * THREE.SplineCurve3\n *\n * A series of curves can be represented as a THREE.CurvePath\n *\n **/\n\n/**************************************************************\n *\tAbstract Curve base class\n **************************************************************/\n\nfunction Curve() {}\n\nCurve.prototype = {\n\n\tconstructor: Curve,\n\n\t// Virtual base class method to overwrite and implement in subclasses\n\t//\t- t [0 .. 1]\n\n\tgetPoint: function ( t ) {\n\n\t\tconsole.warn( \"THREE.Curve: Warning, getPoint() not implemented!\" );\n\t\treturn null;\n\n\t},\n\n\t// Get point at relative position in curve according to arc length\n\t// - u [0 .. 1]\n\n\tgetPointAt: function ( u ) {\n\n\t\tvar t = this.getUtoTmapping( u );\n\t\treturn this.getPoint( t );\n\n\t},\n\n\t// Get sequence of points using getPoint( t )\n\n\tgetPoints: function ( divisions ) {\n\n\t\tif ( ! divisions ) divisions = 5;\n\n\t\tvar points = [];\n\n\t\tfor ( var d = 0; d <= divisions; d ++ ) {\n\n\t\t\tpoints.push( this.getPoint( d / divisions ) );\n\n\t\t}\n\n\t\treturn points;\n\n\t},\n\n\t// Get sequence of points using getPointAt( u )\n\n\tgetSpacedPoints: function ( divisions ) {\n\n\t\tif ( ! divisions ) divisions = 5;\n\n\t\tvar points = [];\n\n\t\tfor ( var d = 0; d <= divisions; d ++ ) {\n\n\t\t\tpoints.push( this.getPointAt( d / divisions ) );\n\n\t\t}\n\n\t\treturn points;\n\n\t},\n\n\t// Get total curve arc length\n\n\tgetLength: function () {\n\n\t\tvar lengths = this.getLengths();\n\t\treturn lengths[ lengths.length - 1 ];\n\n\t},\n\n\t// Get list of cumulative segment lengths\n\n\tgetLengths: function ( divisions ) {\n\n\t\tif ( ! divisions ) divisions = ( this.__arcLengthDivisions ) ? ( this.__arcLengthDivisions ) : 200;\n\n\t\tif ( this.cacheArcLengths\n\t\t\t&& ( this.cacheArcLengths.length === divisions + 1 )\n\t\t\t&& ! this.needsUpdate ) {\n\n\t\t\t//console.log( \"cached\", this.cacheArcLengths );\n\t\t\treturn this.cacheArcLengths;\n\n\t\t}\n\n\t\tthis.needsUpdate = false;\n\n\t\tvar cache = [];\n\t\tvar current, last = this.getPoint( 0 );\n\t\tvar p, sum = 0;\n\n\t\tcache.push( 0 );\n\n\t\tfor ( p = 1; p <= divisions; p ++ ) {\n\n\t\t\tcurrent = this.getPoint ( p / divisions );\n\t\t\tsum += current.distanceTo( last );\n\t\t\tcache.push( sum );\n\t\t\tlast = current;\n\n\t\t}\n\n\t\tthis.cacheArcLengths = cache;\n\n\t\treturn cache; // { sums: cache, sum:sum }; Sum is in the last element.\n\n\t},\n\n\tupdateArcLengths: function() {\n\n\t\tthis.needsUpdate = true;\n\t\tthis.getLengths();\n\n\t},\n\n\t// Given u ( 0 .. 1 ), get a t to find p. This gives you points which are equidistant\n\n\tgetUtoTmapping: function ( u, distance ) {\n\n\t\tvar arcLengths = this.getLengths();\n\n\t\tvar i = 0, il = arcLengths.length;\n\n\t\tvar targetArcLength; // The targeted u distance value to get\n\n\t\tif ( distance ) {\n\n\t\t\ttargetArcLength = distance;\n\n\t\t} else {\n\n\t\t\ttargetArcLength = u * arcLengths[ il - 1 ];\n\n\t\t}\n\n\t\t//var time = Date.now();\n\n\t\t// binary search for the index with largest value smaller than target u distance\n\n\t\tvar low = 0, high = il - 1, comparison;\n\n\t\twhile ( low <= high ) {\n\n\t\t\ti = Math.floor( low + ( high - low ) / 2 ); // less likely to overflow, though probably not issue here, JS doesn't really have integers, all numbers are floats\n\n\t\t\tcomparison = arcLengths[ i ] - targetArcLength;\n\n\t\t\tif ( comparison < 0 ) {\n\n\t\t\t\tlow = i + 1;\n\n\t\t\t} else if ( comparison > 0 ) {\n\n\t\t\t\thigh = i - 1;\n\n\t\t\t} else {\n\n\t\t\t\thigh = i;\n\t\t\t\tbreak;\n\n\t\t\t\t// DONE\n\n\t\t\t}\n\n\t\t}\n\n\t\ti = high;\n\n\t\t//console.log('b' , i, low, high, Date.now()- time);\n\n\t\tif ( arcLengths[ i ] === targetArcLength ) {\n\n\t\t\tvar t = i / ( il - 1 );\n\t\t\treturn t;\n\n\t\t}\n\n\t\t// we could get finer grain at lengths, or use simple interpolation between two points\n\n\t\tvar lengthBefore = arcLengths[ i ];\n\t\tvar lengthAfter = arcLengths[ i + 1 ];\n\n\t\tvar segmentLength = lengthAfter - lengthBefore;\n\n\t\t// determine where we are between the 'before' and 'after' points\n\n\t\tvar segmentFraction = ( targetArcLength - lengthBefore ) / segmentLength;\n\n\t\t// add that fractional amount to t\n\n\t\tvar t = ( i + segmentFraction ) / ( il - 1 );\n\n\t\treturn t;\n\n\t},\n\n\t// Returns a unit vector tangent at t\n\t// In case any sub curve does not implement its tangent derivation,\n\t// 2 points a small delta apart will be used to find its gradient\n\t// which seems to give a reasonable approximation\n\n\tgetTangent: function( t ) {\n\n\t\tvar delta = 0.0001;\n\t\tvar t1 = t - delta;\n\t\tvar t2 = t + delta;\n\n\t\t// Capping in case of danger\n\n\t\tif ( t1 < 0 ) t1 = 0;\n\t\tif ( t2 > 1 ) t2 = 1;\n\n\t\tvar pt1 = this.getPoint( t1 );\n\t\tvar pt2 = this.getPoint( t2 );\n\n\t\tvar vec = pt2.clone().sub( pt1 );\n\t\treturn vec.normalize();\n\n\t},\n\n\tgetTangentAt: function ( u ) {\n\n\t\tvar t = this.getUtoTmapping( u );\n\t\treturn this.getTangent( t );\n\n\t},\n\n\tcomputeFrenetFrames: function ( segments, closed ) {\n\n\t\t// see http://www.cs.indiana.edu/pub/techreports/TR425.pdf\n\n\t\tvar normal = new Vector3();\n\n\t\tvar tangents = [];\n\t\tvar normals = [];\n\t\tvar binormals = [];\n\n\t\tvar vec = new Vector3();\n\t\tvar mat = new Matrix4();\n\n\t\tvar i, u, theta;\n\n\t\t// compute the tangent vectors for each segment on the curve\n\n\t\tfor ( i = 0; i <= segments; i ++ ) {\n\n\t\t\tu = i / segments;\n\n\t\t\ttangents[ i ] = this.getTangentAt( u );\n\t\t\ttangents[ i ].normalize();\n\n\t\t}\n\n\t\t// select an initial normal vector perpendicular to the first tangent vector,\n\t\t// and in the direction of the minimum tangent xyz component\n\n\t\tnormals[ 0 ] = new Vector3();\n\t\tbinormals[ 0 ] = new Vector3();\n\t\tvar min = Number.MAX_VALUE;\n\t\tvar tx = Math.abs( tangents[ 0 ].x );\n\t\tvar ty = Math.abs( tangents[ 0 ].y );\n\t\tvar tz = Math.abs( tangents[ 0 ].z );\n\n\t\tif ( tx <= min ) {\n\n\t\t\tmin = tx;\n\t\t\tnormal.set( 1, 0, 0 );\n\n\t\t}\n\n\t\tif ( ty <= min ) {\n\n\t\t\tmin = ty;\n\t\t\tnormal.set( 0, 1, 0 );\n\n\t\t}\n\n\t\tif ( tz <= min ) {\n\n\t\t\tnormal.set( 0, 0, 1 );\n\n\t\t}\n\n\t\tvec.crossVectors( tangents[ 0 ], normal ).normalize();\n\n\t\tnormals[ 0 ].crossVectors( tangents[ 0 ], vec );\n\t\tbinormals[ 0 ].crossVectors( tangents[ 0 ], normals[ 0 ] );\n\n\n\t\t// compute the slowly-varying normal and binormal vectors for each segment on the curve\n\n\t\tfor ( i = 1; i <= segments; i ++ ) {\n\n\t\t\tnormals[ i ] = normals[ i - 1 ].clone();\n\n\t\t\tbinormals[ i ] = binormals[ i - 1 ].clone();\n\n\t\t\tvec.crossVectors( tangents[ i - 1 ], tangents[ i ] );\n\n\t\t\tif ( vec.length() > Number.EPSILON ) {\n\n\t\t\t\tvec.normalize();\n\n\t\t\t\ttheta = Math.acos( _Math.clamp( tangents[ i - 1 ].dot( tangents[ i ] ), - 1, 1 ) ); // clamp for floating pt errors\n\n\t\t\t\tnormals[ i ].applyMatrix4( mat.makeRotationAxis( vec, theta ) );\n\n\t\t\t}\n\n\t\t\tbinormals[ i ].crossVectors( tangents[ i ], normals[ i ] );\n\n\t\t}\n\n\t\t// if the curve is closed, postprocess the vectors so the first and last normal vectors are the same\n\n\t\tif ( closed === true ) {\n\n\t\t\ttheta = Math.acos( _Math.clamp( normals[ 0 ].dot( normals[ segments ] ), - 1, 1 ) );\n\t\t\ttheta /= segments;\n\n\t\t\tif ( tangents[ 0 ].dot( vec.crossVectors( normals[ 0 ], normals[ segments ] ) ) > 0 ) {\n\n\t\t\t\ttheta = - theta;\n\n\t\t\t}\n\n\t\t\tfor ( i = 1; i <= segments; i ++ ) {\n\n\t\t\t\t// twist a little...\n\t\t\t\tnormals[ i ].applyMatrix4( mat.makeRotationAxis( tangents[ i ], theta * i ) );\n\t\t\t\tbinormals[ i ].crossVectors( tangents[ i ], normals[ i ] );\n\n\t\t\t}\n\n\t\t}\n\n\t\treturn {\n\t\t\ttangents: tangents,\n\t\t\tnormals: normals,\n\t\t\tbinormals: binormals\n\t\t};\n\n\t}\n\n};\n\n// TODO: Transformation for Curves?\n\n/**************************************************************\n *\t3D Curves\n **************************************************************/\n\n// A Factory method for creating new curve subclasses\n\nCurve.create = function ( constructor, getPointFunc ) {\n\n\tconstructor.prototype = Object.create( Curve.prototype );\n\tconstructor.prototype.constructor = constructor;\n\tconstructor.prototype.getPoint = getPointFunc;\n\n\treturn constructor;\n\n};\n\n\nexport { Curve };\n","import { Curve } from '../core/Curve';\n\n/**************************************************************\n *\tLine\n **************************************************************/\n\nfunction LineCurve( v1, v2 ) {\n\n\tthis.v1 = v1;\n\tthis.v2 = v2;\n\n}\n\nLineCurve.prototype = Object.create( Curve.prototype );\nLineCurve.prototype.constructor = LineCurve;\n\nLineCurve.prototype.isLineCurve = true;\n\nLineCurve.prototype.getPoint = function ( t ) {\n\n\tif ( t === 1 ) {\n\n\t\treturn this.v2.clone();\n\n\t}\n\n\tvar point = this.v2.clone().sub( this.v1 );\n\tpoint.multiplyScalar( t ).add( this.v1 );\n\n\treturn point;\n\n};\n\n// Line curve is linear, so we can overwrite default getPointAt\n\nLineCurve.prototype.getPointAt = function ( u ) {\n\n\treturn this.getPoint( u );\n\n};\n\nLineCurve.prototype.getTangent = function( t ) {\n\n\tvar tangent = this.v2.clone().sub( this.v1 );\n\n\treturn tangent.normalize();\n\n};\n\n\nexport { LineCurve };\n","import { Curve } from './Curve';\nimport { Vector3 } from '../../math/Vector3';\nimport { Geometry } from '../../core/Geometry';\nimport { LineCurve } from '../curves/LineCurve';\n\n/**\n * @author zz85 / http://www.lab4games.net/zz85/blog\n *\n **/\n\n/**************************************************************\n *\tCurved Path - a curve path is simply a array of connected\n * curves, but retains the api of a curve\n **************************************************************/\n\nfunction CurvePath() {\n\n\tthis.curves = [];\n\n\tthis.autoClose = false; // Automatically closes the path\n\n}\n\nCurvePath.prototype = Object.assign( Object.create( Curve.prototype ), {\n\n\tconstructor: CurvePath,\n\n\tadd: function ( curve ) {\n\n\t\tthis.curves.push( curve );\n\n\t},\n\n\tclosePath: function () {\n\n\t\t// Add a line curve if start and end of lines are not connected\n\t\tvar startPoint = this.curves[ 0 ].getPoint( 0 );\n\t\tvar endPoint = this.curves[ this.curves.length - 1 ].getPoint( 1 );\n\n\t\tif ( ! startPoint.equals( endPoint ) ) {\n\n\t\t\tthis.curves.push( new LineCurve( endPoint, startPoint ) );\n\n\t\t}\n\n\t},\n\n\t// To get accurate point with reference to\n\t// entire path distance at time t,\n\t// following has to be done:\n\n\t// 1. Length of each sub path have to be known\n\t// 2. Locate and identify type of curve\n\t// 3. Get t for the curve\n\t// 4. Return curve.getPointAt(t')\n\n\tgetPoint: function ( t ) {\n\n\t\tvar d = t * this.getLength();\n\t\tvar curveLengths = this.getCurveLengths();\n\t\tvar i = 0;\n\n\t\t// To think about boundaries points.\n\n\t\twhile ( i < curveLengths.length ) {\n\n\t\t\tif ( curveLengths[ i ] >= d ) {\n\n\t\t\t\tvar diff = curveLengths[ i ] - d;\n\t\t\t\tvar curve = this.curves[ i ];\n\n\t\t\t\tvar segmentLength = curve.getLength();\n\t\t\t\tvar u = segmentLength === 0 ? 0 : 1 - diff / segmentLength;\n\n\t\t\t\treturn curve.getPointAt( u );\n\n\t\t\t}\n\n\t\t\ti ++;\n\n\t\t}\n\n\t\treturn null;\n\n\t\t// loop where sum != 0, sum > d , sum+1 1 && !points[ points.length - 1 ].equals( points[ 0 ] ) ) {\n\n\t\t\tpoints.push( points[ 0 ] );\n\n\t\t}\n\n\t\treturn points;\n\n\t},\n\n\t/**************************************************************\n\t *\tCreate Geometries Helpers\n\t **************************************************************/\n\n\t/// Generate geometry from path points (for Line or Points objects)\n\n\tcreatePointsGeometry: function ( divisions ) {\n\n\t\tvar pts = this.getPoints( divisions );\n\t\treturn this.createGeometry( pts );\n\n\t},\n\n\t// Generate geometry from equidistant sampling along the path\n\n\tcreateSpacedPointsGeometry: function ( divisions ) {\n\n\t\tvar pts = this.getSpacedPoints( divisions );\n\t\treturn this.createGeometry( pts );\n\n\t},\n\n\tcreateGeometry: function ( points ) {\n\n\t\tvar geometry = new Geometry();\n\n\t\tfor ( var i = 0, l = points.length; i < l; i ++ ) {\n\n\t\t\tvar point = points[ i ];\n\t\t\tgeometry.vertices.push( new Vector3( point.x, point.y, point.z || 0 ) );\n\n\t\t}\n\n\t\treturn geometry;\n\n\t}\n\n} );\n\n\nexport { CurvePath };\n","import { Curve } from '../core/Curve';\nimport { Vector2 } from '../../math/Vector2';\n\n/**************************************************************\n *\tEllipse curve\n **************************************************************/\n\nfunction EllipseCurve( aX, aY, xRadius, yRadius, aStartAngle, aEndAngle, aClockwise, aRotation ) {\n\n\tthis.aX = aX;\n\tthis.aY = aY;\n\n\tthis.xRadius = xRadius;\n\tthis.yRadius = yRadius;\n\n\tthis.aStartAngle = aStartAngle;\n\tthis.aEndAngle = aEndAngle;\n\n\tthis.aClockwise = aClockwise;\n\n\tthis.aRotation = aRotation || 0;\n\n}\n\nEllipseCurve.prototype = Object.create( Curve.prototype );\nEllipseCurve.prototype.constructor = EllipseCurve;\n\nEllipseCurve.prototype.isEllipseCurve = true;\n\nEllipseCurve.prototype.getPoint = function( t ) {\n\n\tvar twoPi = Math.PI * 2;\n\tvar deltaAngle = this.aEndAngle - this.aStartAngle;\n\tvar samePoints = Math.abs( deltaAngle ) < Number.EPSILON;\n\n\t// ensures that deltaAngle is 0 .. 2 PI\n\twhile ( deltaAngle < 0 ) deltaAngle += twoPi;\n\twhile ( deltaAngle > twoPi ) deltaAngle -= twoPi;\n\n\tif ( deltaAngle < Number.EPSILON ) {\n\n\t\tif ( samePoints ) {\n\n\t\t\tdeltaAngle = 0;\n\n\t\t} else {\n\n\t\t\tdeltaAngle = twoPi;\n\n\t\t}\n\n\t}\n\n\tif ( this.aClockwise === true && ! samePoints ) {\n\n\t\tif ( deltaAngle === twoPi ) {\n\n\t\t\tdeltaAngle = - twoPi;\n\n\t\t} else {\n\n\t\t\tdeltaAngle = deltaAngle - twoPi;\n\n\t\t}\n\n\t}\n\n\tvar angle = this.aStartAngle + t * deltaAngle;\n\tvar x = this.aX + this.xRadius * Math.cos( angle );\n\tvar y = this.aY + this.yRadius * Math.sin( angle );\n\n\tif ( this.aRotation !== 0 ) {\n\n\t\tvar cos = Math.cos( this.aRotation );\n\t\tvar sin = Math.sin( this.aRotation );\n\n\t\tvar tx = x - this.aX;\n\t\tvar ty = y - this.aY;\n\n\t\t// Rotate the point about the center of the ellipse.\n\t\tx = tx * cos - ty * sin + this.aX;\n\t\ty = tx * sin + ty * cos + this.aY;\n\n\t}\n\n\treturn new Vector2( x, y );\n\n};\n\n\nexport { EllipseCurve };\n","/**\n * @author zz85 / http://www.lab4games.net/zz85/blog\n */\n\nvar CurveUtils = {\n\n\ttangentQuadraticBezier: function ( t, p0, p1, p2 ) {\n\n\t\treturn 2 * ( 1 - t ) * ( p1 - p0 ) + 2 * t * ( p2 - p1 );\n\n\t},\n\n\t// Puay Bing, thanks for helping with this derivative!\n\n\ttangentCubicBezier: function ( t, p0, p1, p2, p3 ) {\n\n\t\treturn - 3 * p0 * ( 1 - t ) * ( 1 - t ) +\n\t\t\t3 * p1 * ( 1 - t ) * ( 1 - t ) - 6 * t * p1 * ( 1 - t ) +\n\t\t\t6 * t * p2 * ( 1 - t ) - 3 * t * t * p2 +\n\t\t\t3 * t * t * p3;\n\n\t},\n\n\ttangentSpline: function ( t, p0, p1, p2, p3 ) {\n\n\t\t// To check if my formulas are correct\n\n\t\tvar h00 = 6 * t * t - 6 * t; \t// derived from 2t^3 − 3t^2 + 1\n\t\tvar h10 = 3 * t * t - 4 * t + 1; // t^3 − 2t^2 + t\n\t\tvar h01 = - 6 * t * t + 6 * t; \t// − 2t3 + 3t2\n\t\tvar h11 = 3 * t * t - 2 * t;\t// t3 − t2\n\n\t\treturn h00 + h10 + h01 + h11;\n\n\t},\n\n\t// Catmull-Rom\n\n\tinterpolate: function( p0, p1, p2, p3, t ) {\n\n\t\tvar v0 = ( p2 - p0 ) * 0.5;\n\t\tvar v1 = ( p3 - p1 ) * 0.5;\n\t\tvar t2 = t * t;\n\t\tvar t3 = t * t2;\n\t\treturn ( 2 * p1 - 2 * p2 + v0 + v1 ) * t3 + ( - 3 * p1 + 3 * p2 - 2 * v0 - v1 ) * t2 + v0 * t + p1;\n\n\t}\n\n};\n\n\nexport { CurveUtils };\n","import { Curve } from '../core/Curve';\nimport { Vector2 } from '../../math/Vector2';\nimport { CurveUtils } from '../CurveUtils';\n\n/**************************************************************\n *\tSpline curve\n **************************************************************/\n\nfunction SplineCurve( points /* array of Vector2 */ ) {\n\n\tthis.points = ( points === undefined ) ? [] : points;\n\n}\n\nSplineCurve.prototype = Object.create( Curve.prototype );\nSplineCurve.prototype.constructor = SplineCurve;\n\nSplineCurve.prototype.isSplineCurve = true;\n\nSplineCurve.prototype.getPoint = function ( t ) {\n\n\tvar points = this.points;\n\tvar point = ( points.length - 1 ) * t;\n\n\tvar intPoint = Math.floor( point );\n\tvar weight = point - intPoint;\n\n\tvar point0 = points[ intPoint === 0 ? intPoint : intPoint - 1 ];\n\tvar point1 = points[ intPoint ];\n\tvar point2 = points[ intPoint > points.length - 2 ? points.length - 1 : intPoint + 1 ];\n\tvar point3 = points[ intPoint > points.length - 3 ? points.length - 1 : intPoint + 2 ];\n\n\tvar interpolate = CurveUtils.interpolate;\n\n\treturn new Vector2(\n\t\tinterpolate( point0.x, point1.x, point2.x, point3.x, weight ),\n\t\tinterpolate( point0.y, point1.y, point2.y, point3.y, weight )\n\t);\n\n};\n\n\nexport { SplineCurve };\n","import { Curve } from '../core/Curve';\nimport { Vector2 } from '../../math/Vector2';\nimport { CurveUtils } from '../CurveUtils';\nimport { ShapeUtils } from '../ShapeUtils';\n\n/**************************************************************\n *\tCubic Bezier curve\n **************************************************************/\n\nfunction CubicBezierCurve( v0, v1, v2, v3 ) {\n\n\tthis.v0 = v0;\n\tthis.v1 = v1;\n\tthis.v2 = v2;\n\tthis.v3 = v3;\n\n}\n\nCubicBezierCurve.prototype = Object.create( Curve.prototype );\nCubicBezierCurve.prototype.constructor = CubicBezierCurve;\n\nCubicBezierCurve.prototype.getPoint = function ( t ) {\n\n\tvar b3 = ShapeUtils.b3;\n\n\treturn new Vector2(\n\t\tb3( t, this.v0.x, this.v1.x, this.v2.x, this.v3.x ),\n\t\tb3( t, this.v0.y, this.v1.y, this.v2.y, this.v3.y )\n\t);\n\n};\n\nCubicBezierCurve.prototype.getTangent = function( t ) {\n\n\tvar tangentCubicBezier = CurveUtils.tangentCubicBezier;\n\n\treturn new Vector2(\n\t\ttangentCubicBezier( t, this.v0.x, this.v1.x, this.v2.x, this.v3.x ),\n\t\ttangentCubicBezier( t, this.v0.y, this.v1.y, this.v2.y, this.v3.y )\n\t).normalize();\n\n};\n\n\nexport { CubicBezierCurve };\n","import { Curve } from '../core/Curve';\nimport { Vector2 } from '../../math/Vector2';\nimport { CurveUtils } from '../CurveUtils';\nimport { ShapeUtils } from '../ShapeUtils';\n\n/**************************************************************\n *\tQuadratic Bezier curve\n **************************************************************/\n\n\nfunction QuadraticBezierCurve( v0, v1, v2 ) {\n\n\tthis.v0 = v0;\n\tthis.v1 = v1;\n\tthis.v2 = v2;\n\n}\n\nQuadraticBezierCurve.prototype = Object.create( Curve.prototype );\nQuadraticBezierCurve.prototype.constructor = QuadraticBezierCurve;\n\n\nQuadraticBezierCurve.prototype.getPoint = function ( t ) {\n\n\tvar b2 = ShapeUtils.b2;\n\n\treturn new Vector2(\n\t\tb2( t, this.v0.x, this.v1.x, this.v2.x ),\n\t\tb2( t, this.v0.y, this.v1.y, this.v2.y )\n\t);\n\n};\n\n\nQuadraticBezierCurve.prototype.getTangent = function( t ) {\n\n\tvar tangentQuadraticBezier = CurveUtils.tangentQuadraticBezier;\n\n\treturn new Vector2(\n\t\ttangentQuadraticBezier( t, this.v0.x, this.v1.x, this.v2.x ),\n\t\ttangentQuadraticBezier( t, this.v0.y, this.v1.y, this.v2.y )\n\t).normalize();\n\n};\n\n\nexport { QuadraticBezierCurve };\n","import { CurvePath } from './CurvePath';\nimport { EllipseCurve } from '../curves/EllipseCurve';\nimport { SplineCurve } from '../curves/SplineCurve';\nimport { Vector2 } from '../../math/Vector2';\nimport { CubicBezierCurve } from '../curves/CubicBezierCurve';\nimport { QuadraticBezierCurve } from '../curves/QuadraticBezierCurve';\nimport { LineCurve } from '../curves/LineCurve';\n\nvar PathPrototype = Object.assign( Object.create( CurvePath.prototype ), {\n\n\tfromPoints: function ( vectors ) {\n\n\t\tthis.moveTo( vectors[ 0 ].x, vectors[ 0 ].y );\n\n\t\tfor ( var i = 1, l = vectors.length; i < l; i ++ ) {\n\n\t\t\tthis.lineTo( vectors[ i ].x, vectors[ i ].y );\n\n\t\t}\n\n\t},\n\n\tmoveTo: function ( x, y ) {\n\n\t\tthis.currentPoint.set( x, y ); // TODO consider referencing vectors instead of copying?\n\n\t},\n\n\tlineTo: function ( x, y ) {\n\n\t\tvar curve = new LineCurve( this.currentPoint.clone(), new Vector2( x, y ) );\n\t\tthis.curves.push( curve );\n\n\t\tthis.currentPoint.set( x, y );\n\n\t},\n\n\tquadraticCurveTo: function ( aCPx, aCPy, aX, aY ) {\n\n\t\tvar curve = new QuadraticBezierCurve(\n\t\t\tthis.currentPoint.clone(),\n\t\t\tnew Vector2( aCPx, aCPy ),\n\t\t\tnew Vector2( aX, aY )\n\t\t);\n\n\t\tthis.curves.push( curve );\n\n\t\tthis.currentPoint.set( aX, aY );\n\n\t},\n\n\tbezierCurveTo: function ( aCP1x, aCP1y, aCP2x, aCP2y, aX, aY ) {\n\n\t\tvar curve = new CubicBezierCurve(\n\t\t\tthis.currentPoint.clone(),\n\t\t\tnew Vector2( aCP1x, aCP1y ),\n\t\t\tnew Vector2( aCP2x, aCP2y ),\n\t\t\tnew Vector2( aX, aY )\n\t\t);\n\n\t\tthis.curves.push( curve );\n\n\t\tthis.currentPoint.set( aX, aY );\n\n\t},\n\n\tsplineThru: function ( pts /*Array of Vector*/ ) {\n\n\t\tvar npts = [ this.currentPoint.clone() ].concat( pts );\n\n\t\tvar curve = new SplineCurve( npts );\n\t\tthis.curves.push( curve );\n\n\t\tthis.currentPoint.copy( pts[ pts.length - 1 ] );\n\n\t},\n\n\tarc: function ( aX, aY, aRadius, aStartAngle, aEndAngle, aClockwise ) {\n\n\t\tvar x0 = this.currentPoint.x;\n\t\tvar y0 = this.currentPoint.y;\n\n\t\tthis.absarc( aX + x0, aY + y0, aRadius,\n\t\t\taStartAngle, aEndAngle, aClockwise );\n\n\t},\n\n\tabsarc: function ( aX, aY, aRadius, aStartAngle, aEndAngle, aClockwise ) {\n\n\t\tthis.absellipse( aX, aY, aRadius, aRadius, aStartAngle, aEndAngle, aClockwise );\n\n\t},\n\n\tellipse: function ( aX, aY, xRadius, yRadius, aStartAngle, aEndAngle, aClockwise, aRotation ) {\n\n\t\tvar x0 = this.currentPoint.x;\n\t\tvar y0 = this.currentPoint.y;\n\n\t\tthis.absellipse( aX + x0, aY + y0, xRadius, yRadius, aStartAngle, aEndAngle, aClockwise, aRotation );\n\n\t},\n\n\tabsellipse: function ( aX, aY, xRadius, yRadius, aStartAngle, aEndAngle, aClockwise, aRotation ) {\n\n\t\tvar curve = new EllipseCurve( aX, aY, xRadius, yRadius, aStartAngle, aEndAngle, aClockwise, aRotation );\n\n\t\tif ( this.curves.length > 0 ) {\n\n\t\t\t// if a previous curve is present, attempt to join\n\t\t\tvar firstPoint = curve.getPoint( 0 );\n\n\t\t\tif ( ! firstPoint.equals( this.currentPoint ) ) {\n\n\t\t\t\tthis.lineTo( firstPoint.x, firstPoint.y );\n\n\t\t\t}\n\n\t\t}\n\n\t\tthis.curves.push( curve );\n\n\t\tvar lastPoint = curve.getPoint( 1 );\n\t\tthis.currentPoint.copy( lastPoint );\n\n\t}\n\n} );\n\nexport { PathPrototype };\n","import { PathPrototype } from './PathPrototype';\nimport { Path } from './Path';\n\n/**\n * @author zz85 / http://www.lab4games.net/zz85/blog\n * Defines a 2d shape plane using paths.\n **/\n\n// STEP 1 Create a path.\n// STEP 2 Turn path into shape.\n// STEP 3 ExtrudeGeometry takes in Shape/Shapes\n// STEP 3a - Extract points from each shape, turn to vertices\n// STEP 3b - Triangulate each shape, add faces.\n\nfunction Shape() {\n\n\tPath.apply( this, arguments );\n\n\tthis.holes = [];\n\n}\n\nShape.prototype = Object.assign( Object.create( PathPrototype ), {\n\n\tconstructor: Shape,\n\n\tgetPointsHoles: function ( divisions ) {\n\n\t\tvar holesPts = [];\n\n\t\tfor ( var i = 0, l = this.holes.length; i < l; i ++ ) {\n\n\t\t\tholesPts[ i ] = this.holes[ i ].getPoints( divisions );\n\n\t\t}\n\n\t\treturn holesPts;\n\n\t},\n\n\t// Get points of shape and holes (keypoints based on segments parameter)\n\n\textractAllPoints: function ( divisions ) {\n\n\t\treturn {\n\n\t\t\tshape: this.getPoints( divisions ),\n\t\t\tholes: this.getPointsHoles( divisions )\n\n\t\t};\n\n\t},\n\n\textractPoints: function ( divisions ) {\n\n\t\treturn this.extractAllPoints( divisions );\n\n\t}\n\n} );\n\n\nexport { Shape };\n","import { PathPrototype } from './PathPrototype';\nimport { Shape } from './Shape';\nimport { ShapeUtils } from '../ShapeUtils';\nimport { Vector2 } from '../../math/Vector2';\nimport { CurvePath } from './CurvePath';\n\n/**\n * @author zz85 / http://www.lab4games.net/zz85/blog\n * Creates free form 2d path using series of points, lines or curves.\n *\n **/\n\nfunction Path( points ) {\n\n\tCurvePath.call( this );\n\tthis.currentPoint = new Vector2();\n\n\tif ( points ) {\n\n\t\tthis.fromPoints( points );\n\n\t}\n\n}\n\nPath.prototype = PathPrototype;\nPathPrototype.constructor = Path;\n\n\n// minimal class for proxing functions to Path. Replaces old \"extractSubpaths()\"\nfunction ShapePath() {\n\tthis.subPaths = [];\n\tthis.currentPath = null;\n}\n\nShapePath.prototype = {\n\tmoveTo: function ( x, y ) {\n\t\tthis.currentPath = new Path();\n\t\tthis.subPaths.push(this.currentPath);\n\t\tthis.currentPath.moveTo( x, y );\n\t},\n\tlineTo: function ( x, y ) {\n\t\tthis.currentPath.lineTo( x, y );\n\t},\n\tquadraticCurveTo: function ( aCPx, aCPy, aX, aY ) {\n\t\tthis.currentPath.quadraticCurveTo( aCPx, aCPy, aX, aY );\n\t},\n\tbezierCurveTo: function ( aCP1x, aCP1y, aCP2x, aCP2y, aX, aY ) {\n\t\tthis.currentPath.bezierCurveTo( aCP1x, aCP1y, aCP2x, aCP2y, aX, aY );\n\t},\n\tsplineThru: function ( pts ) {\n\t\tthis.currentPath.splineThru( pts );\n\t},\n\n\ttoShapes: function ( isCCW, noHoles ) {\n\n\t\tfunction toShapesNoHoles( inSubpaths ) {\n\n\t\t\tvar shapes = [];\n\n\t\t\tfor ( var i = 0, l = inSubpaths.length; i < l; i ++ ) {\n\n\t\t\t\tvar tmpPath = inSubpaths[ i ];\n\n\t\t\t\tvar tmpShape = new Shape();\n\t\t\t\ttmpShape.curves = tmpPath.curves;\n\n\t\t\t\tshapes.push( tmpShape );\n\n\t\t\t}\n\n\t\t\treturn shapes;\n\n\t\t}\n\n\t\tfunction isPointInsidePolygon( inPt, inPolygon ) {\n\n\t\t\tvar polyLen = inPolygon.length;\n\n\t\t\t// inPt on polygon contour => immediate success or\n\t\t\t// toggling of inside/outside at every single! intersection point of an edge\n\t\t\t// with the horizontal line through inPt, left of inPt\n\t\t\t// not counting lowerY endpoints of edges and whole edges on that line\n\t\t\tvar inside = false;\n\t\t\tfor ( var p = polyLen - 1, q = 0; q < polyLen; p = q ++ ) {\n\n\t\t\t\tvar edgeLowPt = inPolygon[ p ];\n\t\t\t\tvar edgeHighPt = inPolygon[ q ];\n\n\t\t\t\tvar edgeDx = edgeHighPt.x - edgeLowPt.x;\n\t\t\t\tvar edgeDy = edgeHighPt.y - edgeLowPt.y;\n\n\t\t\t\tif ( Math.abs( edgeDy ) > Number.EPSILON ) {\n\n\t\t\t\t\t// not parallel\n\t\t\t\t\tif ( edgeDy < 0 ) {\n\n\t\t\t\t\t\tedgeLowPt = inPolygon[ q ]; edgeDx = - edgeDx;\n\t\t\t\t\t\tedgeHighPt = inPolygon[ p ]; edgeDy = - edgeDy;\n\n\t\t\t\t\t}\n\t\t\t\t\tif ( ( inPt.y < edgeLowPt.y ) || ( inPt.y > edgeHighPt.y ) ) \t\tcontinue;\n\n\t\t\t\t\tif ( inPt.y === edgeLowPt.y ) {\n\n\t\t\t\t\t\tif ( inPt.x === edgeLowPt.x )\t\treturn\ttrue;\t\t// inPt is on contour ?\n\t\t\t\t\t\t// continue;\t\t\t\t// no intersection or edgeLowPt => doesn't count !!!\n\n\t\t\t\t\t} else {\n\n\t\t\t\t\t\tvar perpEdge = edgeDy * ( inPt.x - edgeLowPt.x ) - edgeDx * ( inPt.y - edgeLowPt.y );\n\t\t\t\t\t\tif ( perpEdge === 0 )\t\t\t\treturn\ttrue;\t\t// inPt is on contour ?\n\t\t\t\t\t\tif ( perpEdge < 0 ) \t\t\t\tcontinue;\n\t\t\t\t\t\tinside = ! inside;\t\t// true intersection left of inPt\n\n\t\t\t\t\t}\n\n\t\t\t\t} else {\n\n\t\t\t\t\t// parallel or collinear\n\t\t\t\t\tif ( inPt.y !== edgeLowPt.y ) \t\tcontinue;\t\t\t// parallel\n\t\t\t\t\t// edge lies on the same horizontal line as inPt\n\t\t\t\t\tif ( ( ( edgeHighPt.x <= inPt.x ) && ( inPt.x <= edgeLowPt.x ) ) ||\n\t\t\t\t\t\t ( ( edgeLowPt.x <= inPt.x ) && ( inPt.x <= edgeHighPt.x ) ) )\t\treturn\ttrue;\t// inPt: Point on contour !\n\t\t\t\t\t// continue;\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t\treturn\tinside;\n\n\t\t}\n\n\t\tvar isClockWise = ShapeUtils.isClockWise;\n\n\t\tvar subPaths = this.subPaths;\n\t\tif ( subPaths.length === 0 ) return [];\n\n\t\tif ( noHoles === true )\treturn\ttoShapesNoHoles( subPaths );\n\n\n\t\tvar solid, tmpPath, tmpShape, shapes = [];\n\n\t\tif ( subPaths.length === 1 ) {\n\n\t\t\ttmpPath = subPaths[ 0 ];\n\t\t\ttmpShape = new Shape();\n\t\t\ttmpShape.curves = tmpPath.curves;\n\t\t\tshapes.push( tmpShape );\n\t\t\treturn shapes;\n\n\t\t}\n\n\t\tvar holesFirst = ! isClockWise( subPaths[ 0 ].getPoints() );\n\t\tholesFirst = isCCW ? ! holesFirst : holesFirst;\n\n\t\t// console.log(\"Holes first\", holesFirst);\n\n\t\tvar betterShapeHoles = [];\n\t\tvar newShapes = [];\n\t\tvar newShapeHoles = [];\n\t\tvar mainIdx = 0;\n\t\tvar tmpPoints;\n\n\t\tnewShapes[ mainIdx ] = undefined;\n\t\tnewShapeHoles[ mainIdx ] = [];\n\n\t\tfor ( var i = 0, l = subPaths.length; i < l; i ++ ) {\n\n\t\t\ttmpPath = subPaths[ i ];\n\t\t\ttmpPoints = tmpPath.getPoints();\n\t\t\tsolid = isClockWise( tmpPoints );\n\t\t\tsolid = isCCW ? ! solid : solid;\n\n\t\t\tif ( solid ) {\n\n\t\t\t\tif ( ( ! holesFirst ) && ( newShapes[ mainIdx ] ) )\tmainIdx ++;\n\n\t\t\t\tnewShapes[ mainIdx ] = { s: new Shape(), p: tmpPoints };\n\t\t\t\tnewShapes[ mainIdx ].s.curves = tmpPath.curves;\n\n\t\t\t\tif ( holesFirst )\tmainIdx ++;\n\t\t\t\tnewShapeHoles[ mainIdx ] = [];\n\n\t\t\t\t//console.log('cw', i);\n\n\t\t\t} else {\n\n\t\t\t\tnewShapeHoles[ mainIdx ].push( { h: tmpPath, p: tmpPoints[ 0 ] } );\n\n\t\t\t\t//console.log('ccw', i);\n\n\t\t\t}\n\n\t\t}\n\n\t\t// only Holes? -> probably all Shapes with wrong orientation\n\t\tif ( ! newShapes[ 0 ] )\treturn\ttoShapesNoHoles( subPaths );\n\n\n\t\tif ( newShapes.length > 1 ) {\n\n\t\t\tvar ambiguous = false;\n\t\t\tvar toChange = [];\n\n\t\t\tfor ( var sIdx = 0, sLen = newShapes.length; sIdx < sLen; sIdx ++ ) {\n\n\t\t\t\tbetterShapeHoles[ sIdx ] = [];\n\n\t\t\t}\n\n\t\t\tfor ( var sIdx = 0, sLen = newShapes.length; sIdx < sLen; sIdx ++ ) {\n\n\t\t\t\tvar sho = newShapeHoles[ sIdx ];\n\n\t\t\t\tfor ( var hIdx = 0; hIdx < sho.length; hIdx ++ ) {\n\n\t\t\t\t\tvar ho = sho[ hIdx ];\n\t\t\t\t\tvar hole_unassigned = true;\n\n\t\t\t\t\tfor ( var s2Idx = 0; s2Idx < newShapes.length; s2Idx ++ ) {\n\n\t\t\t\t\t\tif ( isPointInsidePolygon( ho.p, newShapes[ s2Idx ].p ) ) {\n\n\t\t\t\t\t\t\tif ( sIdx !== s2Idx )\ttoChange.push( { froms: sIdx, tos: s2Idx, hole: hIdx } );\n\t\t\t\t\t\t\tif ( hole_unassigned ) {\n\n\t\t\t\t\t\t\t\thole_unassigned = false;\n\t\t\t\t\t\t\t\tbetterShapeHoles[ s2Idx ].push( ho );\n\n\t\t\t\t\t\t\t} else {\n\n\t\t\t\t\t\t\t\tambiguous = true;\n\n\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t}\n\n\t\t\t\t\t}\n\t\t\t\t\tif ( hole_unassigned ) {\n\n\t\t\t\t\t\tbetterShapeHoles[ sIdx ].push( ho );\n\n\t\t\t\t\t}\n\n\t\t\t\t}\n\n\t\t\t}\n\t\t\t// console.log(\"ambiguous: \", ambiguous);\n\t\t\tif ( toChange.length > 0 ) {\n\n\t\t\t\t// console.log(\"to change: \", toChange);\n\t\t\t\tif ( ! ambiguous )\tnewShapeHoles = betterShapeHoles;\n\n\t\t\t}\n\n\t\t}\n\n\t\tvar tmpHoles;\n\n\t\tfor ( var i = 0, il = newShapes.length; i < il; i ++ ) {\n\n\t\t\ttmpShape = newShapes[ i ].s;\n\t\t\tshapes.push( tmpShape );\n\t\t\ttmpHoles = newShapeHoles[ i ];\n\n\t\t\tfor ( var j = 0, jl = tmpHoles.length; j < jl; j ++ ) {\n\n\t\t\t\ttmpShape.holes.push( tmpHoles[ j ].h );\n\n\t\t\t}\n\n\t\t}\n\n\t\t//console.log(\"shape\", shapes);\n\n\t\treturn shapes;\n\n\t}\n}\n\n\nexport { ShapePath, Path };\n","import { ShapeUtils } from '../ShapeUtils';\nimport { ShapePath } from './Path';\n\n/**\n * @author zz85 / http://www.lab4games.net/zz85/blog\n * @author mrdoob / http://mrdoob.com/\n */\n\nfunction Font( data ) {\n\n\tthis.data = data;\n\n}\n\nObject.assign( Font.prototype, {\n\n\tisFont: true,\n\n\tgenerateShapes: function ( text, size, divisions ) {\n\n\t\tfunction createPaths( text ) {\n\n\t\t\tvar chars = String( text ).split( '' );\n\t\t\tvar scale = size / data.resolution;\n\t\t\tvar offset = 0;\n\n\t\t\tvar paths = [];\n\n\t\t\tfor ( var i = 0; i < chars.length; i ++ ) {\n\n\t\t\t\tvar ret = createPath( chars[ i ], scale, offset );\n\t\t\t\toffset += ret.offset;\n\n\t\t\t\tpaths.push( ret.path );\n\n\t\t\t}\n\n\t\t\treturn paths;\n\n\t\t}\n\n\t\tfunction createPath( c, scale, offset ) {\n\n\t\t\tvar glyph = data.glyphs[ c ] || data.glyphs[ '?' ];\n\n\t\t\tif ( ! glyph ) return;\n\n\t\t\tvar path = new ShapePath();\n\n\t\t\tvar pts = [], b2 = ShapeUtils.b2, b3 = ShapeUtils.b3;\n\t\t\tvar x, y, cpx, cpy, cpx0, cpy0, cpx1, cpy1, cpx2, cpy2, laste;\n\n\t\t\tif ( glyph.o ) {\n\n\t\t\t\tvar outline = glyph._cachedOutline || ( glyph._cachedOutline = glyph.o.split( ' ' ) );\n\n\t\t\t\tfor ( var i = 0, l = outline.length; i < l; ) {\n\n\t\t\t\t\tvar action = outline[ i ++ ];\n\n\t\t\t\t\tswitch ( action ) {\n\n\t\t\t\t\t\tcase 'm': // moveTo\n\n\t\t\t\t\t\t\tx = outline[ i ++ ] * scale + offset;\n\t\t\t\t\t\t\ty = outline[ i ++ ] * scale;\n\n\t\t\t\t\t\t\tpath.moveTo( x, y );\n\n\t\t\t\t\t\t\tbreak;\n\n\t\t\t\t\t\tcase 'l': // lineTo\n\n\t\t\t\t\t\t\tx = outline[ i ++ ] * scale + offset;\n\t\t\t\t\t\t\ty = outline[ i ++ ] * scale;\n\n\t\t\t\t\t\t\tpath.lineTo( x, y );\n\n\t\t\t\t\t\t\tbreak;\n\n\t\t\t\t\t\tcase 'q': // quadraticCurveTo\n\n\t\t\t\t\t\t\tcpx = outline[ i ++ ] * scale + offset;\n\t\t\t\t\t\t\tcpy = outline[ i ++ ] * scale;\n\t\t\t\t\t\t\tcpx1 = outline[ i ++ ] * scale + offset;\n\t\t\t\t\t\t\tcpy1 = outline[ i ++ ] * scale;\n\n\t\t\t\t\t\t\tpath.quadraticCurveTo( cpx1, cpy1, cpx, cpy );\n\n\t\t\t\t\t\t\tlaste = pts[ pts.length - 1 ];\n\n\t\t\t\t\t\t\tif ( laste ) {\n\n\t\t\t\t\t\t\t\tcpx0 = laste.x;\n\t\t\t\t\t\t\t\tcpy0 = laste.y;\n\n\t\t\t\t\t\t\t\tfor ( var i2 = 1; i2 <= divisions; i2 ++ ) {\n\n\t\t\t\t\t\t\t\t\tvar t = i2 / divisions;\n\t\t\t\t\t\t\t\t\tb2( t, cpx0, cpx1, cpx );\n\t\t\t\t\t\t\t\t\tb2( t, cpy0, cpy1, cpy );\n\n\t\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\tbreak;\n\n\t\t\t\t\t\tcase 'b': // bezierCurveTo\n\n\t\t\t\t\t\t\tcpx = outline[ i ++ ] * scale + offset;\n\t\t\t\t\t\t\tcpy = outline[ i ++ ] * scale;\n\t\t\t\t\t\t\tcpx1 = outline[ i ++ ] * scale + offset;\n\t\t\t\t\t\t\tcpy1 = outline[ i ++ ] * scale;\n\t\t\t\t\t\t\tcpx2 = outline[ i ++ ] * scale + offset;\n\t\t\t\t\t\t\tcpy2 = outline[ i ++ ] * scale;\n\n\t\t\t\t\t\t\tpath.bezierCurveTo( cpx1, cpy1, cpx2, cpy2, cpx, cpy );\n\n\t\t\t\t\t\t\tlaste = pts[ pts.length - 1 ];\n\n\t\t\t\t\t\t\tif ( laste ) {\n\n\t\t\t\t\t\t\t\tcpx0 = laste.x;\n\t\t\t\t\t\t\t\tcpy0 = laste.y;\n\n\t\t\t\t\t\t\t\tfor ( var i2 = 1; i2 <= divisions; i2 ++ ) {\n\n\t\t\t\t\t\t\t\t\tvar t = i2 / divisions;\n\t\t\t\t\t\t\t\t\tb3( t, cpx0, cpx1, cpx2, cpx );\n\t\t\t\t\t\t\t\t\tb3( t, cpy0, cpy1, cpy2, cpy );\n\n\t\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\tbreak;\n\n\t\t\t\t\t}\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t\treturn { offset: glyph.ha * scale, path: path };\n\n\t\t}\n\n\t\t//\n\n\t\tif ( size === undefined ) size = 100;\n\t\tif ( divisions === undefined ) divisions = 4;\n\n\t\tvar data = this.data;\n\n\t\tvar paths = createPaths( text );\n\t\tvar shapes = [];\n\n\t\tfor ( var p = 0, pl = paths.length; p < pl; p ++ ) {\n\n\t\t\tArray.prototype.push.apply( shapes, paths[ p ].toShapes() );\n\n\t\t}\n\n\t\treturn shapes;\n\n\t}\n\n} );\n\n\nexport { Font };\n","import { Font } from '../extras/core/Font';\nimport { FileLoader } from './FileLoader';\nimport { DefaultLoadingManager } from './LoadingManager';\n\n/**\n * @author mrdoob / http://mrdoob.com/\n */\n\nfunction FontLoader( manager ) {\n\n\tthis.manager = ( manager !== undefined ) ? manager : DefaultLoadingManager;\n\n}\n\nObject.assign( FontLoader.prototype, {\n\n\tload: function ( url, onLoad, onProgress, onError ) {\n\n\t\tvar scope = this;\n\n\t\tvar loader = new FileLoader( this.manager );\n\t\tloader.load( url, function ( text ) {\n\n\t\t\tvar json;\n\n\t\t\ttry {\n\n\t\t\t\tjson = JSON.parse( text );\n\n\t\t\t} catch ( e ) {\n\n\t\t\t\tconsole.warn( 'THREE.FontLoader: typeface.js support is being deprecated. Use typeface.json instead.' );\n\t\t\t\tjson = JSON.parse( text.substring( 65, text.length - 2 ) );\n\n\t\t\t}\n\n\t\t\tvar font = scope.parse( json );\n\n\t\t\tif ( onLoad ) onLoad( font );\n\n\t\t}, onProgress, onError );\n\n\t},\n\n\tparse: function ( json ) {\n\n\t\treturn new Font( json );\n\n\t}\n\n} );\n\n\nexport { FontLoader };\n","var context;\n\nexport function getAudioContext() {\n\n\tif ( context === undefined ) {\n\n\t\tcontext = new ( window.AudioContext || window.webkitAudioContext )();\n\n\t}\n\n\treturn context;\n\n}\n","import { getAudioContext } from '../audio/AudioContext';\nimport { FileLoader } from './FileLoader';\nimport { DefaultLoadingManager } from './LoadingManager';\n\n/**\n * @author Reece Aaron Lecrivain / http://reecenotes.com/\n */\n\nfunction AudioLoader( manager ) {\n\n\tthis.manager = ( manager !== undefined ) ? manager : DefaultLoadingManager;\n\n}\n\nObject.assign( AudioLoader.prototype, {\n\n\tload: function ( url, onLoad, onProgress, onError ) {\n\n\t\tvar loader = new FileLoader( this.manager );\n\t\tloader.setResponseType( 'arraybuffer' );\n\t\tloader.load( url, function ( buffer ) {\n\n\t\t\tvar context = getAudioContext();\n\n\t\t\tcontext.decodeAudioData( buffer, function ( audioBuffer ) {\n\n\t\t\t\tonLoad( audioBuffer );\n\n\t\t\t} );\n\n\t\t}, onProgress, onError );\n\n\t}\n\n} );\n\n\nexport { AudioLoader };\n","import { Matrix4 } from '../math/Matrix4';\nimport { _Math } from '../math/Math';\nimport { PerspectiveCamera } from './PerspectiveCamera';\n\n/**\n * @author mrdoob / http://mrdoob.com/\n */\n\nfunction StereoCamera() {\n\n\tthis.type = 'StereoCamera';\n\n\tthis.aspect = 1;\n\n\tthis.eyeSep = 0.064;\n\n\tthis.cameraL = new PerspectiveCamera();\n\tthis.cameraL.layers.enable( 1 );\n\tthis.cameraL.matrixAutoUpdate = false;\n\n\tthis.cameraR = new PerspectiveCamera();\n\tthis.cameraR.layers.enable( 2 );\n\tthis.cameraR.matrixAutoUpdate = false;\n\n}\n\nObject.assign( StereoCamera.prototype, {\n\n\tupdate: ( function () {\n\n\t\tvar instance, focus, fov, aspect, near, far, zoom;\n\n\t\tvar eyeRight = new Matrix4();\n\t\tvar eyeLeft = new Matrix4();\n\n\t\treturn function update( camera ) {\n\n\t\t\tvar needsUpdate = instance !== this || focus !== camera.focus || fov !== camera.fov ||\n\t\t\t\t\t\t\t\t\t\t\t\taspect !== camera.aspect * this.aspect || near !== camera.near ||\n\t\t\t\t\t\t\t\t\t\t\t\tfar !== camera.far || zoom !== camera.zoom;\n\n\t\t\tif ( needsUpdate ) {\n\n\t\t\t\tinstance = this;\n\t\t\t\tfocus = camera.focus;\n\t\t\t\tfov = camera.fov;\n\t\t\t\taspect = camera.aspect * this.aspect;\n\t\t\t\tnear = camera.near;\n\t\t\t\tfar = camera.far;\n\t\t\t\tzoom = camera.zoom;\n\n\t\t\t\t// Off-axis stereoscopic effect based on\n\t\t\t\t// http://paulbourke.net/stereographics/stereorender/\n\n\t\t\t\tvar projectionMatrix = camera.projectionMatrix.clone();\n\t\t\t\tvar eyeSep = this.eyeSep / 2;\n\t\t\t\tvar eyeSepOnProjection = eyeSep * near / focus;\n\t\t\t\tvar ymax = ( near * Math.tan( _Math.DEG2RAD * fov * 0.5 ) ) / zoom;\n\t\t\t\tvar xmin, xmax;\n\n\t\t\t\t// translate xOffset\n\n\t\t\t\teyeLeft.elements[ 12 ] = - eyeSep;\n\t\t\t\teyeRight.elements[ 12 ] = eyeSep;\n\n\t\t\t\t// for left eye\n\n\t\t\t\txmin = - ymax * aspect + eyeSepOnProjection;\n\t\t\t\txmax = ymax * aspect + eyeSepOnProjection;\n\n\t\t\t\tprojectionMatrix.elements[ 0 ] = 2 * near / ( xmax - xmin );\n\t\t\t\tprojectionMatrix.elements[ 8 ] = ( xmax + xmin ) / ( xmax - xmin );\n\n\t\t\t\tthis.cameraL.projectionMatrix.copy( projectionMatrix );\n\n\t\t\t\t// for right eye\n\n\t\t\t\txmin = - ymax * aspect - eyeSepOnProjection;\n\t\t\t\txmax = ymax * aspect - eyeSepOnProjection;\n\n\t\t\t\tprojectionMatrix.elements[ 0 ] = 2 * near / ( xmax - xmin );\n\t\t\t\tprojectionMatrix.elements[ 8 ] = ( xmax + xmin ) / ( xmax - xmin );\n\n\t\t\t\tthis.cameraR.projectionMatrix.copy( projectionMatrix );\n\n\t\t\t}\n\n\t\t\tthis.cameraL.matrixWorld.copy( camera.matrixWorld ).multiply( eyeLeft );\n\t\t\tthis.cameraR.matrixWorld.copy( camera.matrixWorld ).multiply( eyeRight );\n\n\t\t};\n\n\t} )()\n\n} );\n\n\nexport { StereoCamera };\n","import { Object3D } from '../core/Object3D';\nimport { WebGLRenderTargetCube } from '../renderers/WebGLRenderTargetCube';\nimport { LinearFilter, RGBFormat } from '../constants';\nimport { Vector3 } from '../math/Vector3';\nimport { PerspectiveCamera } from './PerspectiveCamera';\n\n/**\n * Camera for rendering cube maps\n *\t- renders scene into axis-aligned cube\n *\n * @author alteredq / http://alteredqualia.com/\n */\n\nfunction CubeCamera( near, far, cubeResolution ) {\n\n\tObject3D.call( this );\n\n\tthis.type = 'CubeCamera';\n\n\tvar fov = 90, aspect = 1;\n\n\tvar cameraPX = new PerspectiveCamera( fov, aspect, near, far );\n\tcameraPX.up.set( 0, - 1, 0 );\n\tcameraPX.lookAt( new Vector3( 1, 0, 0 ) );\n\tthis.add( cameraPX );\n\n\tvar cameraNX = new PerspectiveCamera( fov, aspect, near, far );\n\tcameraNX.up.set( 0, - 1, 0 );\n\tcameraNX.lookAt( new Vector3( - 1, 0, 0 ) );\n\tthis.add( cameraNX );\n\n\tvar cameraPY = new PerspectiveCamera( fov, aspect, near, far );\n\tcameraPY.up.set( 0, 0, 1 );\n\tcameraPY.lookAt( new Vector3( 0, 1, 0 ) );\n\tthis.add( cameraPY );\n\n\tvar cameraNY = new PerspectiveCamera( fov, aspect, near, far );\n\tcameraNY.up.set( 0, 0, - 1 );\n\tcameraNY.lookAt( new Vector3( 0, - 1, 0 ) );\n\tthis.add( cameraNY );\n\n\tvar cameraPZ = new PerspectiveCamera( fov, aspect, near, far );\n\tcameraPZ.up.set( 0, - 1, 0 );\n\tcameraPZ.lookAt( new Vector3( 0, 0, 1 ) );\n\tthis.add( cameraPZ );\n\n\tvar cameraNZ = new PerspectiveCamera( fov, aspect, near, far );\n\tcameraNZ.up.set( 0, - 1, 0 );\n\tcameraNZ.lookAt( new Vector3( 0, 0, - 1 ) );\n\tthis.add( cameraNZ );\n\n\tvar options = { format: RGBFormat, magFilter: LinearFilter, minFilter: LinearFilter };\n\n\tthis.renderTarget = new WebGLRenderTargetCube( cubeResolution, cubeResolution, options );\n\n\tthis.updateCubeMap = function ( renderer, scene ) {\n\n\t\tif ( this.parent === null ) this.updateMatrixWorld();\n\n\t\tvar renderTarget = this.renderTarget;\n\t\tvar generateMipmaps = renderTarget.texture.generateMipmaps;\n\n\t\trenderTarget.texture.generateMipmaps = false;\n\n\t\trenderTarget.activeCubeFace = 0;\n\t\trenderer.render( scene, cameraPX, renderTarget );\n\n\t\trenderTarget.activeCubeFace = 1;\n\t\trenderer.render( scene, cameraNX, renderTarget );\n\n\t\trenderTarget.activeCubeFace = 2;\n\t\trenderer.render( scene, cameraPY, renderTarget );\n\n\t\trenderTarget.activeCubeFace = 3;\n\t\trenderer.render( scene, cameraNY, renderTarget );\n\n\t\trenderTarget.activeCubeFace = 4;\n\t\trenderer.render( scene, cameraPZ, renderTarget );\n\n\t\trenderTarget.texture.generateMipmaps = generateMipmaps;\n\n\t\trenderTarget.activeCubeFace = 5;\n\t\trenderer.render( scene, cameraNZ, renderTarget );\n\n\t\trenderer.setRenderTarget( null );\n\n\t};\n\n}\n\nCubeCamera.prototype = Object.create( Object3D.prototype );\nCubeCamera.prototype.constructor = CubeCamera;\n\n\nexport { CubeCamera };\n","/**\n * @author mrdoob / http://mrdoob.com/\n */\n\nimport { Vector3 } from '../math/Vector3';\nimport { Quaternion } from '../math/Quaternion';\nimport { Object3D } from '../core/Object3D';\nimport { getAudioContext } from './AudioContext';\n\nfunction AudioListener() {\n\n\tObject3D.call( this );\n\n\tthis.type = 'AudioListener';\n\n\tthis.context = getAudioContext();\n\n\tthis.gain = this.context.createGain();\n\tthis.gain.connect( this.context.destination );\n\n\tthis.filter = null;\n\n}\n\nAudioListener.prototype = Object.assign( Object.create( Object3D.prototype ), {\n\n\tconstructor: AudioListener,\n\n\tgetInput: function () {\n\n\t\treturn this.gain;\n\n\t},\n\n\tremoveFilter: function ( ) {\n\n\t\tif ( this.filter !== null ) {\n\n\t\t\tthis.gain.disconnect( this.filter );\n\t\t\tthis.filter.disconnect( this.context.destination );\n\t\t\tthis.gain.connect( this.context.destination );\n\t\t\tthis.filter = null;\n\n\t\t}\n\n\t},\n\n\tgetFilter: function () {\n\n\t\treturn this.filter;\n\n\t},\n\n\tsetFilter: function ( value ) {\n\n\t\tif ( this.filter !== null ) {\n\n\t\t\tthis.gain.disconnect( this.filter );\n\t\t\tthis.filter.disconnect( this.context.destination );\n\n\t\t} else {\n\n\t\t\tthis.gain.disconnect( this.context.destination );\n\n\t\t}\n\n\t\tthis.filter = value;\n\t\tthis.gain.connect( this.filter );\n\t\tthis.filter.connect( this.context.destination );\n\n\t},\n\n\tgetMasterVolume: function () {\n\n\t\treturn this.gain.gain.value;\n\n\t},\n\n\tsetMasterVolume: function ( value ) {\n\n\t\tthis.gain.gain.value = value;\n\n\t},\n\n\tupdateMatrixWorld: ( function () {\n\n\t\tvar position = new Vector3();\n\t\tvar quaternion = new Quaternion();\n\t\tvar scale = new Vector3();\n\n\t\tvar orientation = new Vector3();\n\n\t\treturn function updateMatrixWorld( force ) {\n\n\t\t\tObject3D.prototype.updateMatrixWorld.call( this, force );\n\n\t\t\tvar listener = this.context.listener;\n\t\t\tvar up = this.up;\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, up.x, up.y, up.z );\n\n\t\t};\n\n\t} )()\n\n} );\n\nexport { AudioListener };\n","/**\n * @author mrdoob / http://mrdoob.com/\n * @author Reece Aaron Lecrivain / http://reecenotes.com/\n */\n\nimport { Object3D } from '../core/Object3D';\n\nfunction Audio( listener ) {\n\n\tObject3D.call( this );\n\n\tthis.type = 'Audio';\n\n\tthis.context = listener.context;\n\tthis.source = this.context.createBufferSource();\n\tthis.source.onended = this.onEnded.bind( this );\n\n\tthis.gain = this.context.createGain();\n\tthis.gain.connect( listener.getInput() );\n\n\tthis.autoplay = false;\n\n\tthis.startTime = 0;\n\tthis.playbackRate = 1;\n\tthis.isPlaying = false;\n\tthis.hasPlaybackControl = true;\n\tthis.sourceType = 'empty';\n\n\tthis.filters = [];\n\n}\n\nAudio.prototype = Object.assign( Object.create( Object3D.prototype ), {\n\n\tconstructor: Audio,\n\n\tgetOutput: function () {\n\n\t\treturn this.gain;\n\n\t},\n\n\tsetNodeSource: function ( audioNode ) {\n\n\t\tthis.hasPlaybackControl = false;\n\t\tthis.sourceType = 'audioNode';\n\t\tthis.source = audioNode;\n\t\tthis.connect();\n\n\t\treturn this;\n\n\t},\n\n\tsetBuffer: function ( audioBuffer ) {\n\n\t\tthis.source.buffer = audioBuffer;\n\t\tthis.sourceType = 'buffer';\n\n\t\tif ( this.autoplay ) this.play();\n\n\t\treturn this;\n\n\t},\n\n\tplay: function () {\n\n\t\tif ( this.isPlaying === true ) {\n\n\t\t\tconsole.warn( 'THREE.Audio: Audio is already playing.' );\n\t\t\treturn;\n\n\t\t}\n\n\t\tif ( this.hasPlaybackControl === false ) {\n\n\t\t\tconsole.warn( 'THREE.Audio: this Audio has no playback control.' );\n\t\t\treturn;\n\n\t\t}\n\n\t\tvar source = this.context.createBufferSource();\n\n\t\tsource.buffer = this.source.buffer;\n\t\tsource.loop = this.source.loop;\n\t\tsource.onended = this.source.onended;\n\t\tsource.start( 0, this.startTime );\n\t\tsource.playbackRate.value = this.playbackRate;\n\n\t\tthis.isPlaying = true;\n\n\t\tthis.source = source;\n\n\t\treturn this.connect();\n\n\t},\n\n\tpause: function () {\n\n\t\tif ( this.hasPlaybackControl === false ) {\n\n\t\t\tconsole.warn( 'THREE.Audio: this Audio has no playback control.' );\n\t\t\treturn;\n\n\t\t}\n\n\t\tthis.source.stop();\n\t\tthis.startTime = this.context.currentTime;\n\t\tthis.isPlaying = false;\n\n\t\treturn this;\n\n\t},\n\n\tstop: function () {\n\n\t\tif ( this.hasPlaybackControl === false ) {\n\n\t\t\tconsole.warn( 'THREE.Audio: this Audio has no playback control.' );\n\t\t\treturn;\n\n\t\t}\n\n\t\tthis.source.stop();\n\t\tthis.startTime = 0;\n\t\tthis.isPlaying = false;\n\n\t\treturn this;\n\n\t},\n\n\tconnect: function () {\n\n\t\tif ( this.filters.length > 0 ) {\n\n\t\t\tthis.source.connect( this.filters[ 0 ] );\n\n\t\t\tfor ( var i = 1, l = this.filters.length; i < l; i ++ ) {\n\n\t\t\t\tthis.filters[ i - 1 ].connect( this.filters[ i ] );\n\n\t\t\t}\n\n\t\t\tthis.filters[ this.filters.length - 1 ].connect( this.getOutput() );\n\n\t\t} else {\n\n\t\t\tthis.source.connect( this.getOutput() );\n\n\t\t}\n\n\t\treturn this;\n\n\t},\n\n\tdisconnect: function () {\n\n\t\tif ( this.filters.length > 0 ) {\n\n\t\t\tthis.source.disconnect( this.filters[ 0 ] );\n\n\t\t\tfor ( var i = 1, l = this.filters.length; i < l; i ++ ) {\n\n\t\t\t\tthis.filters[ i - 1 ].disconnect( this.filters[ i ] );\n\n\t\t\t}\n\n\t\t\tthis.filters[ this.filters.length - 1 ].disconnect( this.getOutput() );\n\n\t\t} else {\n\n\t\t\tthis.source.disconnect( this.getOutput() );\n\n\t\t}\n\n\t\treturn this;\n\n\t},\n\n\tgetFilters: function () {\n\n\t\treturn this.filters;\n\n\t},\n\n\tsetFilters: function ( value ) {\n\n\t\tif ( ! value ) value = [];\n\n\t\tif ( this.isPlaying === true ) {\n\n\t\t\tthis.disconnect();\n\t\t\tthis.filters = value;\n\t\t\tthis.connect();\n\n\t\t} else {\n\n\t\t\tthis.filters = value;\n\n\t\t}\n\n\t\treturn this;\n\n\t},\n\n\tgetFilter: function () {\n\n\t\treturn this.getFilters()[ 0 ];\n\n\t},\n\n\tsetFilter: function ( filter ) {\n\n\t\treturn this.setFilters( filter ? [ filter ] : [] );\n\n\t},\n\n\tsetPlaybackRate: function ( value ) {\n\n\t\tif ( this.hasPlaybackControl === false ) {\n\n\t\t\tconsole.warn( 'THREE.Audio: this Audio has no playback control.' );\n\t\t\treturn;\n\n\t\t}\n\n\t\tthis.playbackRate = value;\n\n\t\tif ( this.isPlaying === true ) {\n\n\t\t\tthis.source.playbackRate.value = this.playbackRate;\n\n\t\t}\n\n\t\treturn this;\n\n\t},\n\n\tgetPlaybackRate: function () {\n\n\t\treturn this.playbackRate;\n\n\t},\n\n\tonEnded: function () {\n\n\t\tthis.isPlaying = false;\n\n\t},\n\n\tgetLoop: function () {\n\n\t\tif ( this.hasPlaybackControl === false ) {\n\n\t\t\tconsole.warn( 'THREE.Audio: this Audio has no playback control.' );\n\t\t\treturn false;\n\n\t\t}\n\n\t\treturn this.source.loop;\n\n\t},\n\n\tsetLoop: function ( value ) {\n\n\t\tif ( this.hasPlaybackControl === false ) {\n\n\t\t\tconsole.warn( 'THREE.Audio: this Audio has no playback control.' );\n\t\t\treturn;\n\n\t\t}\n\n\t\tthis.source.loop = value;\n\n\t},\n\n\tgetVolume: function () {\n\n\t\treturn this.gain.gain.value;\n\n\t},\n\n\n\tsetVolume: function ( value ) {\n\n\t\tthis.gain.gain.value = value;\n\n\t\treturn this;\n\n\t}\n\n} );\n\nexport { Audio };\n","/**\n * @author mrdoob / http://mrdoob.com/\n */\n\nimport { Vector3 } from '../math/Vector3';\nimport { Audio } from './Audio';\nimport { Object3D } from '../core/Object3D';\n\nfunction PositionalAudio( listener ) {\n\n\tAudio.call( this, listener );\n\n\tthis.panner = this.context.createPanner();\n\tthis.panner.connect( this.gain );\n\n}\n\nPositionalAudio.prototype = Object.assign( Object.create( Audio.prototype ), {\n\n\tconstructor: PositionalAudio,\n\n\tgetOutput: function () {\n\n\t\treturn this.panner;\n\n\t},\n\n\tgetRefDistance: function () {\n\n\t\treturn this.panner.refDistance;\n\n\t},\n\n\tsetRefDistance: function ( value ) {\n\n\t\tthis.panner.refDistance = value;\n\n\t},\n\n\tgetRolloffFactor: function () {\n\n\t\treturn this.panner.rolloffFactor;\n\n\t},\n\n\tsetRolloffFactor: function ( value ) {\n\n\t\tthis.panner.rolloffFactor = value;\n\n\t},\n\n\tgetDistanceModel: function () {\n\n\t\treturn this.panner.distanceModel;\n\n\t},\n\n\tsetDistanceModel: function ( value ) {\n\n\t\tthis.panner.distanceModel = value;\n\n\t},\n\n\tgetMaxDistance: function () {\n\n\t\treturn this.panner.maxDistance;\n\n\t},\n\n\tsetMaxDistance: function ( value ) {\n\n\t\tthis.panner.maxDistance = value;\n\n\t},\n\n\tupdateMatrixWorld: ( function () {\n\n\t\tvar position = new Vector3();\n\n\t\treturn function updateMatrixWorld( force ) {\n\n\t\t\tObject3D.prototype.updateMatrixWorld.call( this, force );\n\n\t\t\tposition.setFromMatrixPosition( this.matrixWorld );\n\n\t\t\tthis.panner.setPosition( position.x, position.y, position.z );\n\n\t\t};\n\n\t} )()\n\n\n} );\n\nexport { PositionalAudio };\n","/**\n * @author mrdoob / http://mrdoob.com/\n */\n\nfunction AudioAnalyser( audio, fftSize ) {\n\n\tthis.analyser = audio.context.createAnalyser();\n\tthis.analyser.fftSize = fftSize !== undefined ? fftSize : 2048;\n\n\tthis.data = new Uint8Array( this.analyser.frequencyBinCount );\n\n\taudio.getOutput().connect( this.analyser );\n\n}\n\nObject.assign( AudioAnalyser.prototype, {\n\n\tgetFrequencyData: function () {\n\n\t\tthis.analyser.getByteFrequencyData( this.data );\n\n\t\treturn this.data;\n\n\t},\n\n\tgetAverageFrequency: function () {\n\n\t\tvar value = 0, data = this.getFrequencyData();\n\n\t\tfor ( var i = 0; i < data.length; i ++ ) {\n\n\t\t\tvalue += data[ i ];\n\n\t\t}\n\n\t\treturn value / data.length;\n\n\t}\n\n} );\n\nexport { AudioAnalyser };\n","import { Quaternion } from '../math/Quaternion';\n\n/**\n *\n * Buffered scene graph property that allows weighted accumulation.\n *\n *\n * @author Ben Houston / http://clara.io/\n * @author David Sarno / http://lighthaus.us/\n * @author tschw\n */\n\nfunction PropertyMixer( binding, typeName, valueSize ) {\n\n\tthis.binding = binding;\n\tthis.valueSize = valueSize;\n\n\tvar bufferType = Float64Array,\n\t\tmixFunction;\n\n\tswitch ( typeName ) {\n\n\t\tcase 'quaternion':\t\t\tmixFunction = this._slerp;\t\tbreak;\n\n\t\tcase 'string':\n\t\tcase 'bool':\n\n\t\t\tbufferType = Array,\t\tmixFunction = this._select;\t\tbreak;\n\n\t\tdefault:\t\t\t\t\tmixFunction = this._lerp;\n\n\t}\n\n\tthis.buffer = new bufferType( valueSize * 4 );\n\t// layout: [ incoming | accu0 | accu1 | orig ]\n\t//\n\t// interpolators can use .buffer as their .result\n\t// the data then goes to 'incoming'\n\t//\n\t// 'accu0' and 'accu1' are used frame-interleaved for\n\t// the cumulative result and are compared to detect\n\t// changes\n\t//\n\t// 'orig' stores the original state of the property\n\n\tthis._mixBufferRegion = mixFunction;\n\n\tthis.cumulativeWeight = 0;\n\n\tthis.useCount = 0;\n\tthis.referenceCount = 0;\n\n}\n\nPropertyMixer.prototype = {\n\n\tconstructor: PropertyMixer,\n\n\t// accumulate data in the 'incoming' region into 'accu'\n\taccumulate: function( accuIndex, weight ) {\n\n\t\t// note: happily accumulating nothing when weight = 0, the caller knows\n\t\t// the weight and shouldn't have made the call in the first place\n\n\t\tvar buffer = this.buffer,\n\t\t\tstride = this.valueSize,\n\t\t\toffset = accuIndex * stride + stride,\n\n\t\t\tcurrentWeight = this.cumulativeWeight;\n\n\t\tif ( currentWeight === 0 ) {\n\n\t\t\t// accuN := incoming * weight\n\n\t\t\tfor ( var i = 0; i !== stride; ++ i ) {\n\n\t\t\t\tbuffer[ offset + i ] = buffer[ i ];\n\n\t\t\t}\n\n\t\t\tcurrentWeight = weight;\n\n\t\t} else {\n\n\t\t\t// accuN := accuN + incoming * weight\n\n\t\t\tcurrentWeight += weight;\n\t\t\tvar mix = weight / currentWeight;\n\t\t\tthis._mixBufferRegion( buffer, offset, 0, mix, stride );\n\n\t\t}\n\n\t\tthis.cumulativeWeight = currentWeight;\n\n\t},\n\n\t// apply the state of 'accu' to the binding when accus differ\n\tapply: function( accuIndex ) {\n\n\t\tvar stride = this.valueSize,\n\t\t\tbuffer = this.buffer,\n\t\t\toffset = accuIndex * stride + stride,\n\n\t\t\tweight = this.cumulativeWeight,\n\n\t\t\tbinding = this.binding;\n\n\t\tthis.cumulativeWeight = 0;\n\n\t\tif ( weight < 1 ) {\n\n\t\t\t// accuN := accuN + original * ( 1 - cumulativeWeight )\n\n\t\t\tvar originalValueOffset = stride * 3;\n\n\t\t\tthis._mixBufferRegion(\n\t\t\t\t\tbuffer, offset, originalValueOffset, 1 - weight, stride );\n\n\t\t}\n\n\t\tfor ( var i = stride, e = stride + stride; i !== e; ++ i ) {\n\n\t\t\tif ( buffer[ i ] !== buffer[ i + stride ] ) {\n\n\t\t\t\t// value has changed -> update scene graph\n\n\t\t\t\tbinding.setValue( buffer, offset );\n\t\t\t\tbreak;\n\n\t\t\t}\n\n\t\t}\n\n\t},\n\n\t// remember the state of the bound property and copy it to both accus\n\tsaveOriginalState: function() {\n\n\t\tvar binding = this.binding;\n\n\t\tvar buffer = this.buffer,\n\t\t\tstride = this.valueSize,\n\n\t\t\toriginalValueOffset = stride * 3;\n\n\t\tbinding.getValue( buffer, originalValueOffset );\n\n\t\t// accu[0..1] := orig -- initially detect changes against the original\n\t\tfor ( var i = stride, e = originalValueOffset; i !== e; ++ i ) {\n\n\t\t\tbuffer[ i ] = buffer[ originalValueOffset + ( i % stride ) ];\n\n\t\t}\n\n\t\tthis.cumulativeWeight = 0;\n\n\t},\n\n\t// apply the state previously taken via 'saveOriginalState' to the binding\n\trestoreOriginalState: function() {\n\n\t\tvar originalValueOffset = this.valueSize * 3;\n\t\tthis.binding.setValue( this.buffer, originalValueOffset );\n\n\t},\n\n\n\t// mix functions\n\n\t_select: function( buffer, dstOffset, srcOffset, t, stride ) {\n\n\t\tif ( t >= 0.5 ) {\n\n\t\t\tfor ( var i = 0; i !== stride; ++ i ) {\n\n\t\t\t\tbuffer[ dstOffset + i ] = buffer[ srcOffset + i ];\n\n\t\t\t}\n\n\t\t}\n\n\t},\n\n\t_slerp: function( buffer, dstOffset, srcOffset, t, stride ) {\n\n\t\tQuaternion.slerpFlat( buffer, dstOffset,\n\t\t\t\tbuffer, dstOffset, buffer, srcOffset, t );\n\n\t},\n\n\t_lerp: function( buffer, dstOffset, srcOffset, t, stride ) {\n\n\t\tvar s = 1 - t;\n\n\t\tfor ( var i = 0; i !== stride; ++ i ) {\n\n\t\t\tvar j = dstOffset + i;\n\n\t\t\tbuffer[ j ] = buffer[ j ] * s + buffer[ srcOffset + i ] * t;\n\n\t\t}\n\n\t}\n\n};\n\n\nexport { PropertyMixer };\n","/**\n *\n * A reference to a real property in the scene graph.\n *\n *\n * @author Ben Houston / http://clara.io/\n * @author David Sarno / http://lighthaus.us/\n * @author tschw\n */\n\nfunction PropertyBinding( rootNode, path, parsedPath ) {\n\n\tthis.path = path;\n\tthis.parsedPath = parsedPath ||\n\t\t\tPropertyBinding.parseTrackName( path );\n\n\tthis.node = PropertyBinding.findNode(\n\t\t\trootNode, this.parsedPath.nodeName ) || rootNode;\n\n\tthis.rootNode = rootNode;\n\n}\n\nPropertyBinding.prototype = {\n\n\tconstructor: PropertyBinding,\n\n\tgetValue: function getValue_unbound( targetArray, offset ) {\n\n\t\tthis.bind();\n\t\tthis.getValue( targetArray, offset );\n\n\t\t// Note: This class uses a State pattern on a per-method basis:\n\t\t// 'bind' sets 'this.getValue' / 'setValue' and shadows the\n\t\t// prototype version of these methods with one that represents\n\t\t// the bound state. When the property is not found, the methods\n\t\t// become no-ops.\n\n\t},\n\n\tsetValue: function getValue_unbound( sourceArray, offset ) {\n\n\t\tthis.bind();\n\t\tthis.setValue( sourceArray, offset );\n\n\t},\n\n\t// create getter / setter pair for a property in the scene graph\n\tbind: function() {\n\n\t\tvar targetObject = this.node,\n\t\t\tparsedPath = this.parsedPath,\n\n\t\t\tobjectName = parsedPath.objectName,\n\t\t\tpropertyName = parsedPath.propertyName,\n\t\t\tpropertyIndex = parsedPath.propertyIndex;\n\n\t\tif ( ! targetObject ) {\n\n\t\t\ttargetObject = PropertyBinding.findNode(\n\t\t\t\t\tthis.rootNode, parsedPath.nodeName ) || this.rootNode;\n\n\t\t\tthis.node = targetObject;\n\n\t\t}\n\n\t\t// set fail state so we can just 'return' on error\n\t\tthis.getValue = this._getValue_unavailable;\n\t\tthis.setValue = this._setValue_unavailable;\n\n \t\t// ensure there is a value node\n\t\tif ( ! targetObject ) {\n\n\t\t\tconsole.error( \" trying to update node for track: \" + this.path + \" but it wasn't found.\" );\n\t\t\treturn;\n\n\t\t}\n\n\t\tif ( objectName ) {\n\n\t\t\tvar objectIndex = parsedPath.objectIndex;\n\n\t\t\t// special cases were we need to reach deeper into the hierarchy to get the face materials....\n\t\t\tswitch ( objectName ) {\n\n\t\t\t\tcase 'materials':\n\n\t\t\t\t\tif ( ! targetObject.material ) {\n\n\t\t\t\t\t\tconsole.error( ' can not bind to material as node does not have a material', this );\n\t\t\t\t\t\treturn;\n\n\t\t\t\t\t}\n\n\t\t\t\t\tif ( ! targetObject.material.materials ) {\n\n\t\t\t\t\t\tconsole.error( ' can not bind to material.materials as node.material does not have a materials array', this );\n\t\t\t\t\t\treturn;\n\n\t\t\t\t\t}\n\n\t\t\t\t\ttargetObject = targetObject.material.materials;\n\n\t\t\t\t\tbreak;\n\n\t\t\t\tcase 'bones':\n\n\t\t\t\t\tif ( ! targetObject.skeleton ) {\n\n\t\t\t\t\t\tconsole.error( ' can not bind to bones as node does not have a skeleton', this );\n\t\t\t\t\t\treturn;\n\n\t\t\t\t\t}\n\n\t\t\t\t\t// potential future optimization: skip this if propertyIndex is already an integer\n\t\t\t\t\t// and convert the integer string to a true integer.\n\n\t\t\t\t\ttargetObject = targetObject.skeleton.bones;\n\n\t\t\t\t\t// support resolving morphTarget names into indices.\n\t\t\t\t\tfor ( var i = 0; i < targetObject.length; i ++ ) {\n\n\t\t\t\t\t\tif ( targetObject[ i ].name === objectIndex ) {\n\n\t\t\t\t\t\t\tobjectIndex = i;\n\t\t\t\t\t\t\tbreak;\n\n\t\t\t\t\t\t}\n\n\t\t\t\t\t}\n\n\t\t\t\t\tbreak;\n\n\t\t\t\tdefault:\n\n\t\t\t\t\tif ( targetObject[ objectName ] === undefined ) {\n\n\t\t\t\t\t\tconsole.error( ' can not bind to objectName of node, undefined', this );\n\t\t\t\t\t\treturn;\n\n\t\t\t\t\t}\n\n\t\t\t\t\ttargetObject = targetObject[ objectName ];\n\n\t\t\t}\n\n\n\t\t\tif ( objectIndex !== undefined ) {\n\n\t\t\t\tif ( targetObject[ objectIndex ] === undefined ) {\n\n\t\t\t\t\tconsole.error( \" trying to bind to objectIndex of objectName, but is undefined:\", this, targetObject );\n\t\t\t\t\treturn;\n\n\t\t\t\t}\n\n\t\t\t\ttargetObject = targetObject[ objectIndex ];\n\n\t\t\t}\n\n\t\t}\n\n\t\t// resolve property\n\t\tvar nodeProperty = targetObject[ propertyName ];\n\n\t\tif ( nodeProperty === undefined ) {\n\n\t\t\tvar nodeName = parsedPath.nodeName;\n\n\t\t\tconsole.error( \" trying to update property for track: \" + nodeName +\n\t\t\t\t\t'.' + propertyName + \" but it wasn't found.\", targetObject );\n\t\t\treturn;\n\n\t\t}\n\n\t\t// determine versioning scheme\n\t\tvar versioning = this.Versioning.None;\n\n\t\tif ( targetObject.needsUpdate !== undefined ) { // material\n\n\t\t\tversioning = this.Versioning.NeedsUpdate;\n\t\t\tthis.targetObject = targetObject;\n\n\t\t} else if ( targetObject.matrixWorldNeedsUpdate !== undefined ) { // node transform\n\n\t\t\tversioning = this.Versioning.MatrixWorldNeedsUpdate;\n\t\t\tthis.targetObject = targetObject;\n\n\t\t}\n\n\t\t// determine how the property gets bound\n\t\tvar bindingType = this.BindingType.Direct;\n\n\t\tif ( propertyIndex !== undefined ) {\n\t\t\t// access a sub element of the property array (only primitives are supported right now)\n\n\t\t\tif ( propertyName === \"morphTargetInfluences\" ) {\n\t\t\t\t// potential optimization, skip this if propertyIndex is already an integer, and convert the integer string to a true integer.\n\n\t\t\t\t// support resolving morphTarget names into indices.\n\t\t\t\tif ( ! targetObject.geometry ) {\n\n\t\t\t\t\tconsole.error( ' can not bind to morphTargetInfluences becasuse node does not have a geometry', this );\n\t\t\t\t\treturn;\n\n\t\t\t\t}\n\n\t\t\t\tif ( ! targetObject.geometry.morphTargets ) {\n\n\t\t\t\t\tconsole.error( ' can not bind to morphTargetInfluences becasuse node does not have a geometry.morphTargets', this );\n\t\t\t\t\treturn;\n\n\t\t\t\t}\n\n\t\t\t\tfor ( var i = 0; i < this.node.geometry.morphTargets.length; i ++ ) {\n\n\t\t\t\t\tif ( targetObject.geometry.morphTargets[ i ].name === propertyIndex ) {\n\n\t\t\t\t\t\tpropertyIndex = i;\n\t\t\t\t\t\tbreak;\n\n\t\t\t\t\t}\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t\tbindingType = this.BindingType.ArrayElement;\n\n\t\t\tthis.resolvedProperty = nodeProperty;\n\t\t\tthis.propertyIndex = propertyIndex;\n\n\t\t} else if ( nodeProperty.fromArray !== undefined && nodeProperty.toArray !== undefined ) {\n\t\t\t// must use copy for Object3D.Euler/Quaternion\n\n\t\t\tbindingType = this.BindingType.HasFromToArray;\n\n\t\t\tthis.resolvedProperty = nodeProperty;\n\n\t\t} else if ( nodeProperty.length !== undefined ) {\n\n\t\t\tbindingType = this.BindingType.EntireArray;\n\n\t\t\tthis.resolvedProperty = nodeProperty;\n\n\t\t} else {\n\n\t\t\tthis.propertyName = propertyName;\n\n\t\t}\n\n\t\t// select getter / setter\n\t\tthis.getValue = this.GetterByBindingType[ bindingType ];\n\t\tthis.setValue = this.SetterByBindingTypeAndVersioning[ bindingType ][ versioning ];\n\n\t},\n\n\tunbind: function() {\n\n\t\tthis.node = null;\n\n\t\t// back to the prototype version of getValue / setValue\n\t\t// note: avoiding to mutate the shape of 'this' via 'delete'\n\t\tthis.getValue = this._getValue_unbound;\n\t\tthis.setValue = this._setValue_unbound;\n\n\t}\n\n};\n\nObject.assign( PropertyBinding.prototype, { // prototype, continued\n\n\t// these are used to \"bind\" a nonexistent property\n\t_getValue_unavailable: function() {},\n\t_setValue_unavailable: function() {},\n\n\t// initial state of these methods that calls 'bind'\n\t_getValue_unbound: PropertyBinding.prototype.getValue,\n\t_setValue_unbound: PropertyBinding.prototype.setValue,\n\n\tBindingType: {\n\t\tDirect: 0,\n\t\tEntireArray: 1,\n\t\tArrayElement: 2,\n\t\tHasFromToArray: 3\n\t},\n\n\tVersioning: {\n\t\tNone: 0,\n\t\tNeedsUpdate: 1,\n\t\tMatrixWorldNeedsUpdate: 2\n\t},\n\n\tGetterByBindingType: [\n\n\t\tfunction getValue_direct( buffer, offset ) {\n\n\t\t\tbuffer[ offset ] = this.node[ this.propertyName ];\n\n\t\t},\n\n\t\tfunction getValue_array( buffer, offset ) {\n\n\t\t\tvar source = this.resolvedProperty;\n\n\t\t\tfor ( var i = 0, n = source.length; i !== n; ++ i ) {\n\n\t\t\t\tbuffer[ offset ++ ] = source[ i ];\n\n\t\t\t}\n\n\t\t},\n\n\t\tfunction getValue_arrayElement( buffer, offset ) {\n\n\t\t\tbuffer[ offset ] = this.resolvedProperty[ this.propertyIndex ];\n\n\t\t},\n\n\t\tfunction getValue_toArray( buffer, offset ) {\n\n\t\t\tthis.resolvedProperty.toArray( buffer, offset );\n\n\t\t}\n\n\t],\n\n\tSetterByBindingTypeAndVersioning: [\n\n\t\t[\n\t\t\t// Direct\n\n\t\t\tfunction setValue_direct( buffer, offset ) {\n\n\t\t\t\tthis.node[ this.propertyName ] = buffer[ offset ];\n\n\t\t\t},\n\n\t\t\tfunction setValue_direct_setNeedsUpdate( buffer, offset ) {\n\n\t\t\t\tthis.node[ this.propertyName ] = buffer[ offset ];\n\t\t\t\tthis.targetObject.needsUpdate = true;\n\n\t\t\t},\n\n\t\t\tfunction setValue_direct_setMatrixWorldNeedsUpdate( buffer, offset ) {\n\n\t\t\t\tthis.node[ this.propertyName ] = buffer[ offset ];\n\t\t\t\tthis.targetObject.matrixWorldNeedsUpdate = true;\n\n\t\t\t}\n\n\t\t], [\n\n\t\t\t// EntireArray\n\n\t\t\tfunction setValue_array( buffer, offset ) {\n\n\t\t\t\tvar dest = this.resolvedProperty;\n\n\t\t\t\tfor ( var i = 0, n = dest.length; i !== n; ++ i ) {\n\n\t\t\t\t\tdest[ i ] = buffer[ offset ++ ];\n\n\t\t\t\t}\n\n\t\t\t},\n\n\t\t\tfunction setValue_array_setNeedsUpdate( buffer, offset ) {\n\n\t\t\t\tvar dest = this.resolvedProperty;\n\n\t\t\t\tfor ( var i = 0, n = dest.length; i !== n; ++ i ) {\n\n\t\t\t\t\tdest[ i ] = buffer[ offset ++ ];\n\n\t\t\t\t}\n\n\t\t\t\tthis.targetObject.needsUpdate = true;\n\n\t\t\t},\n\n\t\t\tfunction setValue_array_setMatrixWorldNeedsUpdate( buffer, offset ) {\n\n\t\t\t\tvar dest = this.resolvedProperty;\n\n\t\t\t\tfor ( var i = 0, n = dest.length; i !== n; ++ i ) {\n\n\t\t\t\t\tdest[ i ] = buffer[ offset ++ ];\n\n\t\t\t\t}\n\n\t\t\t\tthis.targetObject.matrixWorldNeedsUpdate = true;\n\n\t\t\t}\n\n\t\t], [\n\n\t\t\t// ArrayElement\n\n\t\t\tfunction setValue_arrayElement( buffer, offset ) {\n\n\t\t\t\tthis.resolvedProperty[ this.propertyIndex ] = buffer[ offset ];\n\n\t\t\t},\n\n\t\t\tfunction setValue_arrayElement_setNeedsUpdate( buffer, offset ) {\n\n\t\t\t\tthis.resolvedProperty[ this.propertyIndex ] = buffer[ offset ];\n\t\t\t\tthis.targetObject.needsUpdate = true;\n\n\t\t\t},\n\n\t\t\tfunction setValue_arrayElement_setMatrixWorldNeedsUpdate( buffer, offset ) {\n\n\t\t\t\tthis.resolvedProperty[ this.propertyIndex ] = buffer[ offset ];\n\t\t\t\tthis.targetObject.matrixWorldNeedsUpdate = true;\n\n\t\t\t}\n\n\t\t], [\n\n\t\t\t// HasToFromArray\n\n\t\t\tfunction setValue_fromArray( buffer, offset ) {\n\n\t\t\t\tthis.resolvedProperty.fromArray( buffer, offset );\n\n\t\t\t},\n\n\t\t\tfunction setValue_fromArray_setNeedsUpdate( buffer, offset ) {\n\n\t\t\t\tthis.resolvedProperty.fromArray( buffer, offset );\n\t\t\t\tthis.targetObject.needsUpdate = true;\n\n\t\t\t},\n\n\t\t\tfunction setValue_fromArray_setMatrixWorldNeedsUpdate( buffer, offset ) {\n\n\t\t\t\tthis.resolvedProperty.fromArray( buffer, offset );\n\t\t\t\tthis.targetObject.matrixWorldNeedsUpdate = true;\n\n\t\t\t}\n\n\t\t]\n\n\t]\n\n} );\n\nPropertyBinding.Composite =\n\t\tfunction( targetGroup, path, optionalParsedPath ) {\n\n\tvar parsedPath = optionalParsedPath ||\n\t\t\tPropertyBinding.parseTrackName( path );\n\n\tthis._targetGroup = targetGroup;\n\tthis._bindings = targetGroup.subscribe_( path, parsedPath );\n\n};\n\nPropertyBinding.Composite.prototype = {\n\n\tconstructor: PropertyBinding.Composite,\n\n\tgetValue: function( array, offset ) {\n\n\t\tthis.bind(); // bind all binding\n\n\t\tvar firstValidIndex = this._targetGroup.nCachedObjects_,\n\t\t\tbinding = this._bindings[ firstValidIndex ];\n\n\t\t// and only call .getValue on the first\n\t\tif ( binding !== undefined ) binding.getValue( array, offset );\n\n\t},\n\n\tsetValue: function( array, offset ) {\n\n\t\tvar bindings = this._bindings;\n\n\t\tfor ( var i = this._targetGroup.nCachedObjects_,\n\t\t\t\tn = bindings.length; i !== n; ++ i ) {\n\n\t\t\tbindings[ i ].setValue( array, offset );\n\n\t\t}\n\n\t},\n\n\tbind: function() {\n\n\t\tvar bindings = this._bindings;\n\n\t\tfor ( var i = this._targetGroup.nCachedObjects_,\n\t\t\t\tn = bindings.length; i !== n; ++ i ) {\n\n\t\t\tbindings[ i ].bind();\n\n\t\t}\n\n\t},\n\n\tunbind: function() {\n\n\t\tvar bindings = this._bindings;\n\n\t\tfor ( var i = this._targetGroup.nCachedObjects_,\n\t\t\t\tn = bindings.length; i !== n; ++ i ) {\n\n\t\t\tbindings[ i ].unbind();\n\n\t\t}\n\n\t}\n\n};\n\nPropertyBinding.create = function( root, path, parsedPath ) {\n\n\tif ( ! ( (root && root.isAnimationObjectGroup) ) ) {\n\n\t\treturn new PropertyBinding( root, path, parsedPath );\n\n\t} else {\n\n\t\treturn new PropertyBinding.Composite( root, path, parsedPath );\n\n\t}\n\n};\n\nPropertyBinding.parseTrackName = function( trackName ) {\n\n\t// matches strings in the form of:\n\t// nodeName.property\n\t// nodeName.property[accessor]\n\t// nodeName.material.property[accessor]\n\t// uuid.property[accessor]\n\t// uuid.objectName[objectIndex].propertyName[propertyIndex]\n\t// parentName/nodeName.property\n\t// parentName/parentName/nodeName.property[index]\n\t// .bone[Armature.DEF_cog].position\n\t// scene:helium_balloon_model:helium_balloon_model.position\n\t// created and tested via https://regex101.com/#javascript\n\n\tvar re = /^((?:\\w+[\\/:])*)(\\w+)?(?:\\.(\\w+)(?:\\[(.+)\\])?)?\\.(\\w+)(?:\\[(.+)\\])?$/;\n\tvar matches = re.exec( trackName );\n\n\tif ( ! matches ) {\n\n\t\tthrow new Error( \"cannot parse trackName at all: \" + trackName );\n\n\t}\n\n\tvar results = {\n\t\t// directoryName: matches[ 1 ], // (tschw) currently unused\n\t\tnodeName: matches[ 2 ], \t// allowed to be null, specified root node.\n\t\tobjectName: matches[ 3 ],\n\t\tobjectIndex: matches[ 4 ],\n\t\tpropertyName: matches[ 5 ],\n\t\tpropertyIndex: matches[ 6 ]\t// allowed to be null, specifies that the whole property is set.\n\t};\n\n\tif ( results.propertyName === null || results.propertyName.length === 0 ) {\n\n\t\tthrow new Error( \"can not parse propertyName from trackName: \" + trackName );\n\n\t}\n\n\treturn results;\n\n};\n\nPropertyBinding.findNode = function( root, nodeName ) {\n\n\tif ( ! nodeName || nodeName === \"\" || nodeName === \"root\" || nodeName === \".\" || nodeName === -1 || nodeName === root.name || nodeName === root.uuid ) {\n\n\t\treturn root;\n\n\t}\n\n\t// search into skeleton bones.\n\tif ( root.skeleton ) {\n\n\t\tvar searchSkeleton = function( skeleton ) {\n\n\t\t\tfor( var i = 0; i < skeleton.bones.length; i ++ ) {\n\n\t\t\t\tvar bone = skeleton.bones[ i ];\n\n\t\t\t\tif ( bone.name === nodeName ) {\n\n\t\t\t\t\treturn bone;\n\n\t\t\t\t}\n\t\t\t}\n\n\t\t\treturn null;\n\n\t\t};\n\n\t\tvar bone = searchSkeleton( root.skeleton );\n\n\t\tif ( bone ) {\n\n\t\t\treturn bone;\n\n\t\t}\n\t}\n\n\t// search into node subtree.\n\tif ( root.children ) {\n\n\t\tvar searchNodeSubtree = function( children ) {\n\n\t\t\tfor( var i = 0; i < children.length; i ++ ) {\n\n\t\t\t\tvar childNode = children[ i ];\n\n\t\t\t\tif ( childNode.name === nodeName || childNode.uuid === nodeName ) {\n\n\t\t\t\t\treturn childNode;\n\n\t\t\t\t}\n\n\t\t\t\tvar result = searchNodeSubtree( childNode.children );\n\n\t\t\t\tif ( result ) return result;\n\n\t\t\t}\n\n\t\t\treturn null;\n\n\t\t};\n\n\t\tvar subTreeNode = searchNodeSubtree( root.children );\n\n\t\tif ( subTreeNode ) {\n\n\t\t\treturn subTreeNode;\n\n\t\t}\n\n\t}\n\n\treturn null;\n\n};\n\n\nexport { PropertyBinding };\n","import { PropertyBinding } from './PropertyBinding';\nimport { _Math } from '../math/Math';\n\n/**\n *\n * A group of objects that receives a shared animation state.\n *\n * Usage:\n *\n * \t-\tAdd objects you would otherwise pass as 'root' to the\n * \t\tconstructor or the .clipAction method of AnimationMixer.\n *\n * \t-\tInstead pass this object as 'root'.\n *\n * \t-\tYou can also add and remove objects later when the mixer\n * \t\tis running.\n *\n * Note:\n *\n * \tObjects of this class appear as one object to the mixer,\n * \tso cache control of the individual objects must be done\n * \ton the group.\n *\n * Limitation:\n *\n * \t- \tThe animated properties must be compatible among the\n * \t\tall objects in the group.\n *\n * -\tA single property can either be controlled through a\n * \ttarget group or directly, but not both.\n *\n * @author tschw\n */\n\nfunction AnimationObjectGroup( var_args ) {\n\n\tthis.uuid = _Math.generateUUID();\n\n\t// cached objects followed by the active ones\n\tthis._objects = Array.prototype.slice.call( arguments );\n\n\tthis.nCachedObjects_ = 0;\t\t\t// threshold\n\t// note: read by PropertyBinding.Composite\n\n\tvar indices = {};\n\tthis._indicesByUUID = indices;\t\t// for bookkeeping\n\n\tfor ( var i = 0, n = arguments.length; i !== n; ++ i ) {\n\n\t\tindices[ arguments[ i ].uuid ] = i;\n\n\t}\n\n\tthis._paths = [];\t\t\t\t\t// inside: string\n\tthis._parsedPaths = [];\t\t\t\t// inside: { we don't care, here }\n\tthis._bindings = []; \t\t\t\t// inside: Array< PropertyBinding >\n\tthis._bindingsIndicesByPath = {}; \t// inside: indices in these arrays\n\n\tvar scope = this;\n\n\tthis.stats = {\n\n\t\tobjects: {\n\t\t\tget total() { return scope._objects.length; },\n\t\t\tget inUse() { return this.total - scope.nCachedObjects_; }\n\t\t},\n\n\t\tget bindingsPerObject() { return scope._bindings.length; }\n\n\t};\n\n}\n\nAnimationObjectGroup.prototype = {\n\n\tconstructor: AnimationObjectGroup,\n\n\tisAnimationObjectGroup: true,\n\n\tadd: function( var_args ) {\n\n\t\tvar objects = this._objects,\n\t\t\tnObjects = objects.length,\n\t\t\tnCachedObjects = this.nCachedObjects_,\n\t\t\tindicesByUUID = this._indicesByUUID,\n\t\t\tpaths = this._paths,\n\t\t\tparsedPaths = this._parsedPaths,\n\t\t\tbindings = this._bindings,\n\t\t\tnBindings = bindings.length;\n\n\t\tfor ( var i = 0, n = arguments.length; i !== n; ++ i ) {\n\n\t\t\tvar object = arguments[ i ],\n\t\t\t\tuuid = object.uuid,\n\t\t\t\tindex = indicesByUUID[ uuid ];\n\n\t\t\tif ( index === undefined ) {\n\n\t\t\t\t// unknown object -> add it to the ACTIVE region\n\n\t\t\t\tindex = nObjects ++;\n\t\t\t\tindicesByUUID[ uuid ] = index;\n\t\t\t\tobjects.push( object );\n\n\t\t\t\t// accounting is done, now do the same for all bindings\n\n\t\t\t\tfor ( var j = 0, m = nBindings; j !== m; ++ j ) {\n\n\t\t\t\t\tbindings[ j ].push(\n\t\t\t\t\t\t\tnew PropertyBinding(\n\t\t\t\t\t\t\t\tobject, paths[ j ], parsedPaths[ j ] ) );\n\n\t\t\t\t}\n\n\t\t\t} else if ( index < nCachedObjects ) {\n\n\t\t\t\tvar knownObject = objects[ index ];\n\n\t\t\t\t// move existing object to the ACTIVE region\n\n\t\t\t\tvar firstActiveIndex = -- nCachedObjects,\n\t\t\t\t\tlastCachedObject = objects[ firstActiveIndex ];\n\n\t\t\t\tindicesByUUID[ lastCachedObject.uuid ] = index;\n\t\t\t\tobjects[ index ] = lastCachedObject;\n\n\t\t\t\tindicesByUUID[ uuid ] = firstActiveIndex;\n\t\t\t\tobjects[ firstActiveIndex ] = object;\n\n\t\t\t\t// accounting is done, now do the same for all bindings\n\n\t\t\t\tfor ( var j = 0, m = nBindings; j !== m; ++ j ) {\n\n\t\t\t\t\tvar bindingsForPath = bindings[ j ],\n\t\t\t\t\t\tlastCached = bindingsForPath[ firstActiveIndex ],\n\t\t\t\t\t\tbinding = bindingsForPath[ index ];\n\n\t\t\t\t\tbindingsForPath[ index ] = lastCached;\n\n\t\t\t\t\tif ( binding === undefined ) {\n\n\t\t\t\t\t\t// since we do not bother to create new bindings\n\t\t\t\t\t\t// for objects that are cached, the binding may\n\t\t\t\t\t\t// or may not exist\n\n\t\t\t\t\t\tbinding = new PropertyBinding(\n\t\t\t\t\t\t\t\tobject, paths[ j ], parsedPaths[ j ] );\n\n\t\t\t\t\t}\n\n\t\t\t\t\tbindingsForPath[ firstActiveIndex ] = binding;\n\n\t\t\t\t}\n\n\t\t\t} else if ( objects[ index ] !== knownObject) {\n\n\t\t\t\tconsole.error( \"Different objects with the same UUID \" +\n\t\t\t\t\t\t\"detected. Clean the caches or recreate your \" +\n\t\t\t\t\t\t\"infrastructure when reloading scenes...\" );\n\n\t\t\t} // else the object is already where we want it to be\n\n\t\t} // for arguments\n\n\t\tthis.nCachedObjects_ = nCachedObjects;\n\n\t},\n\n\tremove: function( var_args ) {\n\n\t\tvar objects = this._objects,\n\t\t\tnCachedObjects = this.nCachedObjects_,\n\t\t\tindicesByUUID = this._indicesByUUID,\n\t\t\tbindings = this._bindings,\n\t\t\tnBindings = bindings.length;\n\n\t\tfor ( var i = 0, n = arguments.length; i !== n; ++ i ) {\n\n\t\t\tvar object = arguments[ i ],\n\t\t\t\tuuid = object.uuid,\n\t\t\t\tindex = indicesByUUID[ uuid ];\n\n\t\t\tif ( index !== undefined && index >= nCachedObjects ) {\n\n\t\t\t\t// move existing object into the CACHED region\n\n\t\t\t\tvar lastCachedIndex = nCachedObjects ++,\n\t\t\t\t\tfirstActiveObject = objects[ lastCachedIndex ];\n\n\t\t\t\tindicesByUUID[ firstActiveObject.uuid ] = index;\n\t\t\t\tobjects[ index ] = firstActiveObject;\n\n\t\t\t\tindicesByUUID[ uuid ] = lastCachedIndex;\n\t\t\t\tobjects[ lastCachedIndex ] = object;\n\n\t\t\t\t// accounting is done, now do the same for all bindings\n\n\t\t\t\tfor ( var j = 0, m = nBindings; j !== m; ++ j ) {\n\n\t\t\t\t\tvar bindingsForPath = bindings[ j ],\n\t\t\t\t\t\tfirstActive = bindingsForPath[ lastCachedIndex ],\n\t\t\t\t\t\tbinding = bindingsForPath[ index ];\n\n\t\t\t\t\tbindingsForPath[ index ] = firstActive;\n\t\t\t\t\tbindingsForPath[ lastCachedIndex ] = binding;\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t} // for arguments\n\n\t\tthis.nCachedObjects_ = nCachedObjects;\n\n\t},\n\n\t// remove & forget\n\tuncache: function( var_args ) {\n\n\t\tvar objects = this._objects,\n\t\t\tnObjects = objects.length,\n\t\t\tnCachedObjects = this.nCachedObjects_,\n\t\t\tindicesByUUID = this._indicesByUUID,\n\t\t\tbindings = this._bindings,\n\t\t\tnBindings = bindings.length;\n\n\t\tfor ( var i = 0, n = arguments.length; i !== n; ++ i ) {\n\n\t\t\tvar object = arguments[ i ],\n\t\t\t\tuuid = object.uuid,\n\t\t\t\tindex = indicesByUUID[ uuid ];\n\n\t\t\tif ( index !== undefined ) {\n\n\t\t\t\tdelete indicesByUUID[ uuid ];\n\n\t\t\t\tif ( index < nCachedObjects ) {\n\n\t\t\t\t\t// object is cached, shrink the CACHED region\n\n\t\t\t\t\tvar firstActiveIndex = -- nCachedObjects,\n\t\t\t\t\t\tlastCachedObject = objects[ firstActiveIndex ],\n\t\t\t\t\t\tlastIndex = -- nObjects,\n\t\t\t\t\t\tlastObject = objects[ lastIndex ];\n\n\t\t\t\t\t// last cached object takes this object's place\n\t\t\t\t\tindicesByUUID[ lastCachedObject.uuid ] = index;\n\t\t\t\t\tobjects[ index ] = lastCachedObject;\n\n\t\t\t\t\t// last object goes to the activated slot and pop\n\t\t\t\t\tindicesByUUID[ lastObject.uuid ] = firstActiveIndex;\n\t\t\t\t\tobjects[ firstActiveIndex ] = lastObject;\n\t\t\t\t\tobjects.pop();\n\n\t\t\t\t\t// accounting is done, now do the same for all bindings\n\n\t\t\t\t\tfor ( var j = 0, m = nBindings; j !== m; ++ j ) {\n\n\t\t\t\t\t\tvar bindingsForPath = bindings[ j ],\n\t\t\t\t\t\t\tlastCached = bindingsForPath[ firstActiveIndex ],\n\t\t\t\t\t\t\tlast = bindingsForPath[ lastIndex ];\n\n\t\t\t\t\t\tbindingsForPath[ index ] = lastCached;\n\t\t\t\t\t\tbindingsForPath[ firstActiveIndex ] = last;\n\t\t\t\t\t\tbindingsForPath.pop();\n\n\t\t\t\t\t}\n\n\t\t\t\t} else {\n\n\t\t\t\t\t// object is active, just swap with the last and pop\n\n\t\t\t\t\tvar lastIndex = -- nObjects,\n\t\t\t\t\t\tlastObject = objects[ lastIndex ];\n\n\t\t\t\t\tindicesByUUID[ lastObject.uuid ] = index;\n\t\t\t\t\tobjects[ index ] = lastObject;\n\t\t\t\t\tobjects.pop();\n\n\t\t\t\t\t// accounting is done, now do the same for all bindings\n\n\t\t\t\t\tfor ( var j = 0, m = nBindings; j !== m; ++ j ) {\n\n\t\t\t\t\t\tvar bindingsForPath = bindings[ j ];\n\n\t\t\t\t\t\tbindingsForPath[ index ] = bindingsForPath[ lastIndex ];\n\t\t\t\t\t\tbindingsForPath.pop();\n\n\t\t\t\t\t}\n\n\t\t\t\t} // cached or active\n\n\t\t\t} // if object is known\n\n\t\t} // for arguments\n\n\t\tthis.nCachedObjects_ = nCachedObjects;\n\n\t},\n\n\t// Internal interface used by befriended PropertyBinding.Composite:\n\n\tsubscribe_: function( path, parsedPath ) {\n\t\t// returns an array of bindings for the given path that is changed\n\t\t// according to the contained objects in the group\n\n\t\tvar indicesByPath = this._bindingsIndicesByPath,\n\t\t\tindex = indicesByPath[ path ],\n\t\t\tbindings = this._bindings;\n\n\t\tif ( index !== undefined ) return bindings[ index ];\n\n\t\tvar paths = this._paths,\n\t\t\tparsedPaths = this._parsedPaths,\n\t\t\tobjects = this._objects,\n\t\t\tnObjects = objects.length,\n\t\t\tnCachedObjects = this.nCachedObjects_,\n\t\t\tbindingsForPath = new Array( nObjects );\n\n\t\tindex = bindings.length;\n\n\t\tindicesByPath[ path ] = index;\n\n\t\tpaths.push( path );\n\t\tparsedPaths.push( parsedPath );\n\t\tbindings.push( bindingsForPath );\n\n\t\tfor ( var i = nCachedObjects,\n\t\t\t\tn = objects.length; i !== n; ++ i ) {\n\n\t\t\tvar object = objects[ i ];\n\n\t\t\tbindingsForPath[ i ] =\n\t\t\t\t\tnew PropertyBinding( object, path, parsedPath );\n\n\t\t}\n\n\t\treturn bindingsForPath;\n\n\t},\n\n\tunsubscribe_: function( path ) {\n\t\t// tells the group to forget about a property path and no longer\n\t\t// update the array previously obtained with 'subscribe_'\n\n\t\tvar indicesByPath = this._bindingsIndicesByPath,\n\t\t\tindex = indicesByPath[ path ];\n\n\t\tif ( index !== undefined ) {\n\n\t\t\tvar paths = this._paths,\n\t\t\t\tparsedPaths = this._parsedPaths,\n\t\t\t\tbindings = this._bindings,\n\t\t\t\tlastBindingsIndex = bindings.length - 1,\n\t\t\t\tlastBindings = bindings[ lastBindingsIndex ],\n\t\t\t\tlastBindingsPath = path[ lastBindingsIndex ];\n\n\t\t\tindicesByPath[ lastBindingsPath ] = index;\n\n\t\t\tbindings[ index ] = lastBindings;\n\t\t\tbindings.pop();\n\n\t\t\tparsedPaths[ index ] = parsedPaths[ lastBindingsIndex ];\n\t\t\tparsedPaths.pop();\n\n\t\t\tpaths[ index ] = paths[ lastBindingsIndex ];\n\t\t\tpaths.pop();\n\n\t\t}\n\n\t}\n\n};\n\n\n\nexport { AnimationObjectGroup };\n","import { WrapAroundEnding, ZeroCurvatureEnding, ZeroSlopeEnding, LoopPingPong, LoopOnce, LoopRepeat } from '../constants';\n\n/**\n *\n * Action provided by AnimationMixer for scheduling clip playback on specific\n * objects.\n *\n * @author Ben Houston / http://clara.io/\n * @author David Sarno / http://lighthaus.us/\n * @author tschw\n *\n */\n\nfunction AnimationAction( mixer, clip, localRoot ) {\n\n\tthis._mixer = mixer;\n\tthis._clip = clip;\n\tthis._localRoot = localRoot || null;\n\n\tvar tracks = clip.tracks,\n\t\tnTracks = tracks.length,\n\t\tinterpolants = new Array( nTracks );\n\n\tvar interpolantSettings = {\n\t\t\tendingStart: \tZeroCurvatureEnding,\n\t\t\tendingEnd:\t\tZeroCurvatureEnding\n\t};\n\n\tfor ( var i = 0; i !== nTracks; ++ i ) {\n\n\t\tvar interpolant = tracks[ i ].createInterpolant( null );\n\t\tinterpolants[ i ] = interpolant;\n\t\tinterpolant.settings = interpolantSettings;\n\n\t}\n\n\tthis._interpolantSettings = interpolantSettings;\n\n\tthis._interpolants = interpolants;\t// bound by the mixer\n\n\t// inside: PropertyMixer (managed by the mixer)\n\tthis._propertyBindings = new Array( nTracks );\n\n\tthis._cacheIndex = null;\t\t\t// for the memory manager\n\tthis._byClipCacheIndex = null;\t\t// for the memory manager\n\n\tthis._timeScaleInterpolant = null;\n\tthis._weightInterpolant = null;\n\n\tthis.loop = LoopRepeat;\n\tthis._loopCount = -1;\n\n\t// global mixer time when the action is to be started\n\t// it's set back to 'null' upon start of the action\n\tthis._startTime = null;\n\n\t// scaled local time of the action\n\t// gets clamped or wrapped to 0..clip.duration according to loop\n\tthis.time = 0;\n\n\tthis.timeScale = 1;\n\tthis._effectiveTimeScale = 1;\n\n\tthis.weight = 1;\n\tthis._effectiveWeight = 1;\n\n\tthis.repetitions = Infinity; \t\t// no. of repetitions when looping\n\n\tthis.paused = false;\t\t\t\t// false -> zero effective time scale\n\tthis.enabled = true;\t\t\t\t// true -> zero effective weight\n\n\tthis.clampWhenFinished \t= false;\t// keep feeding the last frame?\n\n\tthis.zeroSlopeAtStart \t= true;\t\t// for smooth interpolation w/o separate\n\tthis.zeroSlopeAtEnd\t\t= true;\t\t// clips for start, loop and end\n\n};\n\nAnimationAction.prototype = {\n\n\tconstructor: AnimationAction,\n\n\t// State & Scheduling\n\n\tplay: function() {\n\n\t\tthis._mixer._activateAction( this );\n\n\t\treturn this;\n\n\t},\n\n\tstop: function() {\n\n\t\tthis._mixer._deactivateAction( this );\n\n\t\treturn this.reset();\n\n\t},\n\n\treset: function() {\n\n\t\tthis.paused = false;\n\t\tthis.enabled = true;\n\n\t\tthis.time = 0;\t\t\t// restart clip\n\t\tthis._loopCount = -1;\t// forget previous loops\n\t\tthis._startTime = null;\t// forget scheduling\n\n\t\treturn this.stopFading().stopWarping();\n\n\t},\n\n\tisRunning: function() {\n\n\t\treturn this.enabled && ! this.paused && this.timeScale !== 0 &&\n\t\t\t\tthis._startTime === null && this._mixer._isActiveAction( this );\n\n\t},\n\n\t// return true when play has been called\n\tisScheduled: function() {\n\n\t\treturn this._mixer._isActiveAction( this );\n\n\t},\n\n\tstartAt: function( time ) {\n\n\t\tthis._startTime = time;\n\n\t\treturn this;\n\n\t},\n\n\tsetLoop: function( mode, repetitions ) {\n\n\t\tthis.loop = mode;\n\t\tthis.repetitions = repetitions;\n\n\t\treturn this;\n\n\t},\n\n\t// Weight\n\n\t// set the weight stopping any scheduled fading\n\t// although .enabled = false yields an effective weight of zero, this\n\t// method does *not* change .enabled, because it would be confusing\n\tsetEffectiveWeight: function( weight ) {\n\n\t\tthis.weight = weight;\n\n\t\t// note: same logic as when updated at runtime\n\t\tthis._effectiveWeight = this.enabled ? weight : 0;\n\n\t\treturn this.stopFading();\n\n\t},\n\n\t// return the weight considering fading and .enabled\n\tgetEffectiveWeight: function() {\n\n\t\treturn this._effectiveWeight;\n\n\t},\n\n\tfadeIn: function( duration ) {\n\n\t\treturn this._scheduleFading( duration, 0, 1 );\n\n\t},\n\n\tfadeOut: function( duration ) {\n\n\t\treturn this._scheduleFading( duration, 1, 0 );\n\n\t},\n\n\tcrossFadeFrom: function( fadeOutAction, duration, warp ) {\n\n\t\tfadeOutAction.fadeOut( duration );\n\t\tthis.fadeIn( duration );\n\n\t\tif( warp ) {\n\n\t\t\tvar fadeInDuration = this._clip.duration,\n\t\t\t\tfadeOutDuration = fadeOutAction._clip.duration,\n\n\t\t\t\tstartEndRatio = fadeOutDuration / fadeInDuration,\n\t\t\t\tendStartRatio = fadeInDuration / fadeOutDuration;\n\n\t\t\tfadeOutAction.warp( 1.0, startEndRatio, duration );\n\t\t\tthis.warp( endStartRatio, 1.0, duration );\n\n\t\t}\n\n\t\treturn this;\n\n\t},\n\n\tcrossFadeTo: function( fadeInAction, duration, warp ) {\n\n\t\treturn fadeInAction.crossFadeFrom( this, duration, warp );\n\n\t},\n\n\tstopFading: function() {\n\n\t\tvar weightInterpolant = this._weightInterpolant;\n\n\t\tif ( weightInterpolant !== null ) {\n\n\t\t\tthis._weightInterpolant = null;\n\t\t\tthis._mixer._takeBackControlInterpolant( weightInterpolant );\n\n\t\t}\n\n\t\treturn this;\n\n\t},\n\n\t// Time Scale Control\n\n\t// set the weight stopping any scheduled warping\n\t// although .paused = true yields an effective time scale of zero, this\n\t// method does *not* change .paused, because it would be confusing\n\tsetEffectiveTimeScale: function( timeScale ) {\n\n\t\tthis.timeScale = timeScale;\n\t\tthis._effectiveTimeScale = this.paused ? 0 :timeScale;\n\n\t\treturn this.stopWarping();\n\n\t},\n\n\t// return the time scale considering warping and .paused\n\tgetEffectiveTimeScale: function() {\n\n\t\treturn this._effectiveTimeScale;\n\n\t},\n\n\tsetDuration: function( duration ) {\n\n\t\tthis.timeScale = this._clip.duration / duration;\n\n\t\treturn this.stopWarping();\n\n\t},\n\n\tsyncWith: function( action ) {\n\n\t\tthis.time = action.time;\n\t\tthis.timeScale = action.timeScale;\n\n\t\treturn this.stopWarping();\n\n\t},\n\n\thalt: function( duration ) {\n\n\t\treturn this.warp( this._effectiveTimeScale, 0, duration );\n\n\t},\n\n\twarp: function( startTimeScale, endTimeScale, duration ) {\n\n\t\tvar mixer = this._mixer, now = mixer.time,\n\t\t\tinterpolant = this._timeScaleInterpolant,\n\n\t\t\ttimeScale = this.timeScale;\n\n\t\tif ( interpolant === null ) {\n\n\t\t\tinterpolant = mixer._lendControlInterpolant(),\n\t\t\tthis._timeScaleInterpolant = interpolant;\n\n\t\t}\n\n\t\tvar times = interpolant.parameterPositions,\n\t\t\tvalues = interpolant.sampleValues;\n\n\t\ttimes[ 0 ] = now;\n\t\ttimes[ 1 ] = now + duration;\n\n\t\tvalues[ 0 ] = startTimeScale / timeScale;\n\t\tvalues[ 1 ] = endTimeScale / timeScale;\n\n\t\treturn this;\n\n\t},\n\n\tstopWarping: function() {\n\n\t\tvar timeScaleInterpolant = this._timeScaleInterpolant;\n\n\t\tif ( timeScaleInterpolant !== null ) {\n\n\t\t\tthis._timeScaleInterpolant = null;\n\t\t\tthis._mixer._takeBackControlInterpolant( timeScaleInterpolant );\n\n\t\t}\n\n\t\treturn this;\n\n\t},\n\n\t// Object Accessors\n\n\tgetMixer: function() {\n\n\t\treturn this._mixer;\n\n\t},\n\n\tgetClip: function() {\n\n\t\treturn this._clip;\n\n\t},\n\n\tgetRoot: function() {\n\n\t\treturn this._localRoot || this._mixer._root;\n\n\t},\n\n\t// Interna\n\n\t_update: function( time, deltaTime, timeDirection, accuIndex ) {\n\t\t// called by the mixer\n\n\t\tvar startTime = this._startTime;\n\n\t\tif ( startTime !== null ) {\n\n\t\t\t// check for scheduled start of action\n\n\t\t\tvar timeRunning = ( time - startTime ) * timeDirection;\n\t\t\tif ( timeRunning < 0 || timeDirection === 0 ) {\n\n\t\t\t\treturn; // yet to come / don't decide when delta = 0\n\n\t\t\t}\n\n\t\t\t// start\n\n\t\t\tthis._startTime = null; // unschedule\n\t\t\tdeltaTime = timeDirection * timeRunning;\n\n\t\t}\n\n\t\t// apply time scale and advance time\n\n\t\tdeltaTime *= this._updateTimeScale( time );\n\t\tvar clipTime = this._updateTime( deltaTime );\n\n\t\t// note: _updateTime may disable the action resulting in\n\t\t// an effective weight of 0\n\n\t\tvar weight = this._updateWeight( time );\n\n\t\tif ( weight > 0 ) {\n\n\t\t\tvar interpolants = this._interpolants;\n\t\t\tvar propertyMixers = this._propertyBindings;\n\n\t\t\tfor ( var j = 0, m = interpolants.length; j !== m; ++ j ) {\n\n\t\t\t\tinterpolants[ j ].evaluate( clipTime );\n\t\t\t\tpropertyMixers[ j ].accumulate( accuIndex, weight );\n\n\t\t\t}\n\n\t\t}\n\n\t},\n\n\t_updateWeight: function( time ) {\n\n\t\tvar weight = 0;\n\n\t\tif ( this.enabled ) {\n\n\t\t\tweight = this.weight;\n\t\t\tvar interpolant = this._weightInterpolant;\n\n\t\t\tif ( interpolant !== null ) {\n\n\t\t\t\tvar interpolantValue = interpolant.evaluate( time )[ 0 ];\n\n\t\t\t\tweight *= interpolantValue;\n\n\t\t\t\tif ( time > interpolant.parameterPositions[ 1 ] ) {\n\n\t\t\t\t\tthis.stopFading();\n\n\t\t\t\t\tif ( interpolantValue === 0 ) {\n\n\t\t\t\t\t\t// faded out, disable\n\t\t\t\t\t\tthis.enabled = false;\n\n\t\t\t\t\t}\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t}\n\n\t\tthis._effectiveWeight = weight;\n\t\treturn weight;\n\n\t},\n\n\t_updateTimeScale: function( time ) {\n\n\t\tvar timeScale = 0;\n\n\t\tif ( ! this.paused ) {\n\n\t\t\ttimeScale = this.timeScale;\n\n\t\t\tvar interpolant = this._timeScaleInterpolant;\n\n\t\t\tif ( interpolant !== null ) {\n\n\t\t\t\tvar interpolantValue = interpolant.evaluate( time )[ 0 ];\n\n\t\t\t\ttimeScale *= interpolantValue;\n\n\t\t\t\tif ( time > interpolant.parameterPositions[ 1 ] ) {\n\n\t\t\t\t\tthis.stopWarping();\n\n\t\t\t\t\tif ( timeScale === 0 ) {\n\n\t\t\t\t\t\t// motion has halted, pause\n\t\t\t\t\t\tthis.paused = true;\n\n\t\t\t\t\t} else {\n\n\t\t\t\t\t\t// warp done - apply final time scale\n\t\t\t\t\t\tthis.timeScale = timeScale;\n\n\t\t\t\t\t}\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t}\n\n\t\tthis._effectiveTimeScale = timeScale;\n\t\treturn timeScale;\n\n\t},\n\n\t_updateTime: function( deltaTime ) {\n\n\t\tvar time = this.time + deltaTime;\n\n\t\tif ( deltaTime === 0 ) return time;\n\n\t\tvar duration = this._clip.duration,\n\n\t\t\tloop = this.loop,\n\t\t\tloopCount = this._loopCount;\n\n\t\tif ( loop === LoopOnce ) {\n\n\t\t\tif ( loopCount === -1 ) {\n\t\t\t\t// just started\n\n\t\t\t\tthis.loopCount = 0;\n\t\t\t\tthis._setEndings( true, true, false );\n\n\t\t\t}\n\n\t\t\thandle_stop: {\n\n\t\t\t\tif ( time >= duration ) {\n\n\t\t\t\t\ttime = duration;\n\n\t\t\t\t} else if ( time < 0 ) {\n\n\t\t\t\t\ttime = 0;\n\n\t\t\t\t} else break handle_stop;\n\n\t\t\t\tif ( this.clampWhenFinished ) this.paused = true;\n\t\t\t\telse this.enabled = false;\n\n\t\t\t\tthis._mixer.dispatchEvent( {\n\t\t\t\t\ttype: 'finished', action: this,\n\t\t\t\t\tdirection: deltaTime < 0 ? -1 : 1\n\t\t\t\t} );\n\n\t\t\t}\n\n\t\t} else { // repetitive Repeat or PingPong\n\n\t\t\tvar pingPong = ( loop === LoopPingPong );\n\n\t\t\tif ( loopCount === -1 ) {\n\t\t\t\t// just started\n\n\t\t\t\tif ( deltaTime >= 0 ) {\n\n\t\t\t\t\tloopCount = 0;\n\n\t\t\t\t\tthis._setEndings(\n\t\t\t\t\t\t\ttrue, this.repetitions === 0, pingPong );\n\n\t\t\t\t} else {\n\n\t\t\t\t\t// when looping in reverse direction, the initial\n\t\t\t\t\t// transition through zero counts as a repetition,\n\t\t\t\t\t// so leave loopCount at -1\n\n\t\t\t\t\tthis._setEndings(\n\t\t\t\t\t\t\tthis.repetitions === 0, true, pingPong );\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t\tif ( time >= duration || time < 0 ) {\n\t\t\t\t// wrap around\n\n\t\t\t\tvar loopDelta = Math.floor( time / duration ); // signed\n\t\t\t\ttime -= duration * loopDelta;\n\n\t\t\t\tloopCount += Math.abs( loopDelta );\n\n\t\t\t\tvar pending = this.repetitions - loopCount;\n\n\t\t\t\tif ( pending < 0 ) {\n\t\t\t\t\t// have to stop (switch state, clamp time, fire event)\n\n\t\t\t\t\tif ( this.clampWhenFinished ) this.paused = true;\n\t\t\t\t\telse this.enabled = false;\n\n\t\t\t\t\ttime = deltaTime > 0 ? duration : 0;\n\n\t\t\t\t\tthis._mixer.dispatchEvent( {\n\t\t\t\t\t\ttype: 'finished', action: this,\n\t\t\t\t\t\tdirection: deltaTime > 0 ? 1 : -1\n\t\t\t\t\t} );\n\n\t\t\t\t} else {\n\t\t\t\t\t// keep running\n\n\t\t\t\t\tif ( pending === 0 ) {\n\t\t\t\t\t\t// entering the last round\n\n\t\t\t\t\t\tvar atStart = deltaTime < 0;\n\t\t\t\t\t\tthis._setEndings( atStart, ! atStart, pingPong );\n\n\t\t\t\t\t} else {\n\n\t\t\t\t\t\tthis._setEndings( false, false, pingPong );\n\n\t\t\t\t\t}\n\n\t\t\t\t\tthis._loopCount = loopCount;\n\n\t\t\t\t\tthis._mixer.dispatchEvent( {\n\t\t\t\t\t\ttype: 'loop', action: this, loopDelta: loopDelta\n\t\t\t\t\t} );\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t\tif ( pingPong && ( loopCount & 1 ) === 1 ) {\n\t\t\t\t// invert time for the \"pong round\"\n\n\t\t\t\tthis.time = time;\n\t\t\t\treturn duration - time;\n\n\t\t\t}\n\n\t\t}\n\n\t\tthis.time = time;\n\t\treturn time;\n\n\t},\n\n\t_setEndings: function( atStart, atEnd, pingPong ) {\n\n\t\tvar settings = this._interpolantSettings;\n\n\t\tif ( pingPong ) {\n\n\t\t\tsettings.endingStart \t= ZeroSlopeEnding;\n\t\t\tsettings.endingEnd\t\t= ZeroSlopeEnding;\n\n\t\t} else {\n\n\t\t\t// assuming for LoopOnce atStart == atEnd == true\n\n\t\t\tif ( atStart ) {\n\n\t\t\t\tsettings.endingStart = this.zeroSlopeAtStart ?\n\t\t\t\t\t\tZeroSlopeEnding : ZeroCurvatureEnding;\n\n\t\t\t} else {\n\n\t\t\t\tsettings.endingStart = WrapAroundEnding;\n\n\t\t\t}\n\n\t\t\tif ( atEnd ) {\n\n\t\t\t\tsettings.endingEnd = this.zeroSlopeAtEnd ?\n\t\t\t\t\t\tZeroSlopeEnding : ZeroCurvatureEnding;\n\n\t\t\t} else {\n\n\t\t\t\tsettings.endingEnd \t = WrapAroundEnding;\n\n\t\t\t}\n\n\t\t}\n\n\t},\n\n\t_scheduleFading: function( duration, weightNow, weightThen ) {\n\n\t\tvar mixer = this._mixer, now = mixer.time,\n\t\t\tinterpolant = this._weightInterpolant;\n\n\t\tif ( interpolant === null ) {\n\n\t\t\tinterpolant = mixer._lendControlInterpolant(),\n\t\t\tthis._weightInterpolant = interpolant;\n\n\t\t}\n\n\t\tvar times = interpolant.parameterPositions,\n\t\t\tvalues = interpolant.sampleValues;\n\n\t\ttimes[ 0 ] = now; \t\t\t\tvalues[ 0 ] = weightNow;\n\t\ttimes[ 1 ] = now + duration;\tvalues[ 1 ] = weightThen;\n\n\t\treturn this;\n\n\t}\n\n};\n\n\nexport { AnimationAction };\n","import { AnimationAction } from './AnimationAction';\nimport { EventDispatcher } from '../core/EventDispatcher';\nimport { LinearInterpolant } from '../math/interpolants/LinearInterpolant';\nimport { PropertyBinding } from './PropertyBinding';\nimport { PropertyMixer } from './PropertyMixer';\nimport { AnimationClip } from './AnimationClip';\n\n/**\n *\n * Player for AnimationClips.\n *\n *\n * @author Ben Houston / http://clara.io/\n * @author David Sarno / http://lighthaus.us/\n * @author tschw\n */\n\nfunction AnimationMixer( root ) {\n\n\tthis._root = root;\n\tthis._initMemoryManager();\n\tthis._accuIndex = 0;\n\n\tthis.time = 0;\n\n\tthis.timeScale = 1.0;\n\n}\n\nObject.assign( AnimationMixer.prototype, EventDispatcher.prototype, {\n\n\t// return an action for a clip optionally using a custom root target\n\t// object (this method allocates a lot of dynamic memory in case a\n\t// previously unknown clip/root combination is specified)\n\tclipAction: function( clip, optionalRoot ) {\n\n\t\tvar root = optionalRoot || this._root,\n\t\t\trootUuid = root.uuid,\n\n\t\t\tclipObject = typeof clip === 'string' ?\n\t\t\t\t\tAnimationClip.findByName( root, clip ) : clip,\n\n\t\t\tclipUuid = clipObject !== null ? clipObject.uuid : clip,\n\n\t\t\tactionsForClip = this._actionsByClip[ clipUuid ],\n\t\t\tprototypeAction = null;\n\n\t\tif ( actionsForClip !== undefined ) {\n\n\t\t\tvar existingAction =\n\t\t\t\t\tactionsForClip.actionByRoot[ rootUuid ];\n\n\t\t\tif ( existingAction !== undefined ) {\n\n\t\t\t\treturn existingAction;\n\n\t\t\t}\n\n\t\t\t// we know the clip, so we don't have to parse all\n\t\t\t// the bindings again but can just copy\n\t\t\tprototypeAction = actionsForClip.knownActions[ 0 ];\n\n\t\t\t// also, take the clip from the prototype action\n\t\t\tif ( clipObject === null )\n\t\t\t\tclipObject = prototypeAction._clip;\n\n\t\t}\n\n\t\t// clip must be known when specified via string\n\t\tif ( clipObject === null ) return null;\n\n\t\t// allocate all resources required to run it\n\t\tvar newAction = new AnimationAction( this, clipObject, optionalRoot );\n\n\t\tthis._bindAction( newAction, prototypeAction );\n\n\t\t// and make the action known to the memory manager\n\t\tthis._addInactiveAction( newAction, clipUuid, rootUuid );\n\n\t\treturn newAction;\n\n\t},\n\n\t// get an existing action\n\texistingAction: function( clip, optionalRoot ) {\n\n\t\tvar root = optionalRoot || this._root,\n\t\t\trootUuid = root.uuid,\n\n\t\t\tclipObject = typeof clip === 'string' ?\n\t\t\t\t\tAnimationClip.findByName( root, clip ) : clip,\n\n\t\t\tclipUuid = clipObject ? clipObject.uuid : clip,\n\n\t\t\tactionsForClip = this._actionsByClip[ clipUuid ];\n\n\t\tif ( actionsForClip !== undefined ) {\n\n\t\t\treturn actionsForClip.actionByRoot[ rootUuid ] || null;\n\n\t\t}\n\n\t\treturn null;\n\n\t},\n\n\t// deactivates all previously scheduled actions\n\tstopAllAction: function() {\n\n\t\tvar actions = this._actions,\n\t\t\tnActions = this._nActiveActions,\n\t\t\tbindings = this._bindings,\n\t\t\tnBindings = this._nActiveBindings;\n\n\t\tthis._nActiveActions = 0;\n\t\tthis._nActiveBindings = 0;\n\n\t\tfor ( var i = 0; i !== nActions; ++ i ) {\n\n\t\t\tactions[ i ].reset();\n\n\t\t}\n\n\t\tfor ( var i = 0; i !== nBindings; ++ i ) {\n\n\t\t\tbindings[ i ].useCount = 0;\n\n\t\t}\n\n\t\treturn this;\n\n\t},\n\n\t// advance the time and update apply the animation\n\tupdate: function( deltaTime ) {\n\n\t\tdeltaTime *= this.timeScale;\n\n\t\tvar actions = this._actions,\n\t\t\tnActions = this._nActiveActions,\n\n\t\t\ttime = this.time += deltaTime,\n\t\t\ttimeDirection = Math.sign( deltaTime ),\n\n\t\t\taccuIndex = this._accuIndex ^= 1;\n\n\t\t// run active actions\n\n\t\tfor ( var i = 0; i !== nActions; ++ i ) {\n\n\t\t\tvar action = actions[ i ];\n\n\t\t\tif ( action.enabled ) {\n\n\t\t\t\taction._update( time, deltaTime, timeDirection, accuIndex );\n\n\t\t\t}\n\n\t\t}\n\n\t\t// update scene graph\n\n\t\tvar bindings = this._bindings,\n\t\t\tnBindings = this._nActiveBindings;\n\n\t\tfor ( var i = 0; i !== nBindings; ++ i ) {\n\n\t\t\tbindings[ i ].apply( accuIndex );\n\n\t\t}\n\n\t\treturn this;\n\n\t},\n\n\t// return this mixer's root target object\n\tgetRoot: function() {\n\n\t\treturn this._root;\n\n\t},\n\n\t// free all resources specific to a particular clip\n\tuncacheClip: function( clip ) {\n\n\t\tvar actions = this._actions,\n\t\t\tclipUuid = clip.uuid,\n\t\t\tactionsByClip = this._actionsByClip,\n\t\t\tactionsForClip = actionsByClip[ clipUuid ];\n\n\t\tif ( actionsForClip !== undefined ) {\n\n\t\t\t// note: just calling _removeInactiveAction would mess up the\n\t\t\t// iteration state and also require updating the state we can\n\t\t\t// just throw away\n\n\t\t\tvar actionsToRemove = actionsForClip.knownActions;\n\n\t\t\tfor ( var i = 0, n = actionsToRemove.length; i !== n; ++ i ) {\n\n\t\t\t\tvar action = actionsToRemove[ i ];\n\n\t\t\t\tthis._deactivateAction( action );\n\n\t\t\t\tvar cacheIndex = action._cacheIndex,\n\t\t\t\t\tlastInactiveAction = actions[ actions.length - 1 ];\n\n\t\t\t\taction._cacheIndex = null;\n\t\t\t\taction._byClipCacheIndex = null;\n\n\t\t\t\tlastInactiveAction._cacheIndex = cacheIndex;\n\t\t\t\tactions[ cacheIndex ] = lastInactiveAction;\n\t\t\t\tactions.pop();\n\n\t\t\t\tthis._removeInactiveBindingsForAction( action );\n\n\t\t\t}\n\n\t\t\tdelete actionsByClip[ clipUuid ];\n\n\t\t}\n\n\t},\n\n\t// free all resources specific to a particular root target object\n\tuncacheRoot: function( root ) {\n\n\t\tvar rootUuid = root.uuid,\n\t\t\tactionsByClip = this._actionsByClip;\n\n\t\tfor ( var clipUuid in actionsByClip ) {\n\n\t\t\tvar actionByRoot = actionsByClip[ clipUuid ].actionByRoot,\n\t\t\t\taction = actionByRoot[ rootUuid ];\n\n\t\t\tif ( action !== undefined ) {\n\n\t\t\t\tthis._deactivateAction( action );\n\t\t\t\tthis._removeInactiveAction( action );\n\n\t\t\t}\n\n\t\t}\n\n\t\tvar bindingsByRoot = this._bindingsByRootAndName,\n\t\t\tbindingByName = bindingsByRoot[ rootUuid ];\n\n\t\tif ( bindingByName !== undefined ) {\n\n\t\t\tfor ( var trackName in bindingByName ) {\n\n\t\t\t\tvar binding = bindingByName[ trackName ];\n\t\t\t\tbinding.restoreOriginalState();\n\t\t\t\tthis._removeInactiveBinding( binding );\n\n\t\t\t}\n\n\t\t}\n\n\t},\n\n\t// remove a targeted clip from the cache\n\tuncacheAction: function( clip, optionalRoot ) {\n\n\t\tvar action = this.existingAction( clip, optionalRoot );\n\n\t\tif ( action !== null ) {\n\n\t\t\tthis._deactivateAction( action );\n\t\t\tthis._removeInactiveAction( action );\n\n\t\t}\n\n\t}\n\n} );\n\n// Implementation details:\n\nObject.assign( AnimationMixer.prototype, {\n\n\t_bindAction: function( action, prototypeAction ) {\n\n\t\tvar root = action._localRoot || this._root,\n\t\t\ttracks = action._clip.tracks,\n\t\t\tnTracks = tracks.length,\n\t\t\tbindings = action._propertyBindings,\n\t\t\tinterpolants = action._interpolants,\n\t\t\trootUuid = root.uuid,\n\t\t\tbindingsByRoot = this._bindingsByRootAndName,\n\t\t\tbindingsByName = bindingsByRoot[ rootUuid ];\n\n\t\tif ( bindingsByName === undefined ) {\n\n\t\t\tbindingsByName = {};\n\t\t\tbindingsByRoot[ rootUuid ] = bindingsByName;\n\n\t\t}\n\n\t\tfor ( var i = 0; i !== nTracks; ++ i ) {\n\n\t\t\tvar track = tracks[ i ],\n\t\t\t\ttrackName = track.name,\n\t\t\t\tbinding = bindingsByName[ trackName ];\n\n\t\t\tif ( binding !== undefined ) {\n\n\t\t\t\tbindings[ i ] = binding;\n\n\t\t\t} else {\n\n\t\t\t\tbinding = bindings[ i ];\n\n\t\t\t\tif ( binding !== undefined ) {\n\n\t\t\t\t\t// existing binding, make sure the cache knows\n\n\t\t\t\t\tif ( binding._cacheIndex === null ) {\n\n\t\t\t\t\t\t++ binding.referenceCount;\n\t\t\t\t\t\tthis._addInactiveBinding( binding, rootUuid, trackName );\n\n\t\t\t\t\t}\n\n\t\t\t\t\tcontinue;\n\n\t\t\t\t}\n\n\t\t\t\tvar path = prototypeAction && prototypeAction.\n\t\t\t\t\t\t_propertyBindings[ i ].binding.parsedPath;\n\n\t\t\t\tbinding = new PropertyMixer(\n\t\t\t\t\t\tPropertyBinding.create( root, trackName, path ),\n\t\t\t\t\t\ttrack.ValueTypeName, track.getValueSize() );\n\n\t\t\t\t++ binding.referenceCount;\n\t\t\t\tthis._addInactiveBinding( binding, rootUuid, trackName );\n\n\t\t\t\tbindings[ i ] = binding;\n\n\t\t\t}\n\n\t\t\tinterpolants[ i ].resultBuffer = binding.buffer;\n\n\t\t}\n\n\t},\n\n\t_activateAction: function( action ) {\n\n\t\tif ( ! this._isActiveAction( action ) ) {\n\n\t\t\tif ( action._cacheIndex === null ) {\n\n\t\t\t\t// this action has been forgotten by the cache, but the user\n\t\t\t\t// appears to be still using it -> rebind\n\n\t\t\t\tvar rootUuid = ( action._localRoot || this._root ).uuid,\n\t\t\t\t\tclipUuid = action._clip.uuid,\n\t\t\t\t\tactionsForClip = this._actionsByClip[ clipUuid ];\n\n\t\t\t\tthis._bindAction( action,\n\t\t\t\t\t\tactionsForClip && actionsForClip.knownActions[ 0 ] );\n\n\t\t\t\tthis._addInactiveAction( action, clipUuid, rootUuid );\n\n\t\t\t}\n\n\t\t\tvar bindings = action._propertyBindings;\n\n\t\t\t// increment reference counts / sort out state\n\t\t\tfor ( var i = 0, n = bindings.length; i !== n; ++ i ) {\n\n\t\t\t\tvar binding = bindings[ i ];\n\n\t\t\t\tif ( binding.useCount ++ === 0 ) {\n\n\t\t\t\t\tthis._lendBinding( binding );\n\t\t\t\t\tbinding.saveOriginalState();\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t\tthis._lendAction( action );\n\n\t\t}\n\n\t},\n\n\t_deactivateAction: function( action ) {\n\n\t\tif ( this._isActiveAction( action ) ) {\n\n\t\t\tvar bindings = action._propertyBindings;\n\n\t\t\t// decrement reference counts / sort out state\n\t\t\tfor ( var i = 0, n = bindings.length; i !== n; ++ i ) {\n\n\t\t\t\tvar binding = bindings[ i ];\n\n\t\t\t\tif ( -- binding.useCount === 0 ) {\n\n\t\t\t\t\tbinding.restoreOriginalState();\n\t\t\t\t\tthis._takeBackBinding( binding );\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t\tthis._takeBackAction( action );\n\n\t\t}\n\n\t},\n\n\t// Memory manager\n\n\t_initMemoryManager: function() {\n\n\t\tthis._actions = []; // 'nActiveActions' followed by inactive ones\n\t\tthis._nActiveActions = 0;\n\n\t\tthis._actionsByClip = {};\n\t\t// inside:\n\t\t// {\n\t\t// \t\tknownActions: Array< AnimationAction >\t- used as prototypes\n\t\t// \t\tactionByRoot: AnimationAction\t\t\t- lookup\n\t\t// }\n\n\n\t\tthis._bindings = []; // 'nActiveBindings' followed by inactive ones\n\t\tthis._nActiveBindings = 0;\n\n\t\tthis._bindingsByRootAndName = {}; // inside: Map< name, PropertyMixer >\n\n\n\t\tthis._controlInterpolants = []; // same game as above\n\t\tthis._nActiveControlInterpolants = 0;\n\n\t\tvar scope = this;\n\n\t\tthis.stats = {\n\n\t\t\tactions: {\n\t\t\t\tget total() { return scope._actions.length; },\n\t\t\t\tget inUse() { return scope._nActiveActions; }\n\t\t\t},\n\t\t\tbindings: {\n\t\t\t\tget total() { return scope._bindings.length; },\n\t\t\t\tget inUse() { return scope._nActiveBindings; }\n\t\t\t},\n\t\t\tcontrolInterpolants: {\n\t\t\t\tget total() { return scope._controlInterpolants.length; },\n\t\t\t\tget inUse() { return scope._nActiveControlInterpolants; }\n\t\t\t}\n\n\t\t};\n\n\t},\n\n\t// Memory management for AnimationAction objects\n\n\t_isActiveAction: function( action ) {\n\n\t\tvar index = action._cacheIndex;\n\t\treturn index !== null && index < this._nActiveActions;\n\n\t},\n\n\t_addInactiveAction: function( action, clipUuid, rootUuid ) {\n\n\t\tvar actions = this._actions,\n\t\t\tactionsByClip = this._actionsByClip,\n\t\t\tactionsForClip = actionsByClip[ clipUuid ];\n\n\t\tif ( actionsForClip === undefined ) {\n\n\t\t\tactionsForClip = {\n\n\t\t\t\tknownActions: [ action ],\n\t\t\t\tactionByRoot: {}\n\n\t\t\t};\n\n\t\t\taction._byClipCacheIndex = 0;\n\n\t\t\tactionsByClip[ clipUuid ] = actionsForClip;\n\n\t\t} else {\n\n\t\t\tvar knownActions = actionsForClip.knownActions;\n\n\t\t\taction._byClipCacheIndex = knownActions.length;\n\t\t\tknownActions.push( action );\n\n\t\t}\n\n\t\taction._cacheIndex = actions.length;\n\t\tactions.push( action );\n\n\t\tactionsForClip.actionByRoot[ rootUuid ] = action;\n\n\t},\n\n\t_removeInactiveAction: function( action ) {\n\n\t\tvar actions = this._actions,\n\t\t\tlastInactiveAction = actions[ actions.length - 1 ],\n\t\t\tcacheIndex = action._cacheIndex;\n\n\t\tlastInactiveAction._cacheIndex = cacheIndex;\n\t\tactions[ cacheIndex ] = lastInactiveAction;\n\t\tactions.pop();\n\n\t\taction._cacheIndex = null;\n\n\n\t\tvar clipUuid = action._clip.uuid,\n\t\t\tactionsByClip = this._actionsByClip,\n\t\t\tactionsForClip = actionsByClip[ clipUuid ],\n\t\t\tknownActionsForClip = actionsForClip.knownActions,\n\n\t\t\tlastKnownAction =\n\t\t\t\tknownActionsForClip[ knownActionsForClip.length - 1 ],\n\n\t\t\tbyClipCacheIndex = action._byClipCacheIndex;\n\n\t\tlastKnownAction._byClipCacheIndex = byClipCacheIndex;\n\t\tknownActionsForClip[ byClipCacheIndex ] = lastKnownAction;\n\t\tknownActionsForClip.pop();\n\n\t\taction._byClipCacheIndex = null;\n\n\n\t\tvar actionByRoot = actionsForClip.actionByRoot,\n\t\t\trootUuid = ( actions._localRoot || this._root ).uuid;\n\n\t\tdelete actionByRoot[ rootUuid ];\n\n\t\tif ( knownActionsForClip.length === 0 ) {\n\n\t\t\tdelete actionsByClip[ clipUuid ];\n\n\t\t}\n\n\t\tthis._removeInactiveBindingsForAction( action );\n\n\t},\n\n\t_removeInactiveBindingsForAction: function( action ) {\n\n\t\tvar bindings = action._propertyBindings;\n\t\tfor ( var i = 0, n = bindings.length; i !== n; ++ i ) {\n\n\t\t\tvar binding = bindings[ i ];\n\n\t\t\tif ( -- binding.referenceCount === 0 ) {\n\n\t\t\t\tthis._removeInactiveBinding( binding );\n\n\t\t\t}\n\n\t\t}\n\n\t},\n\n\t_lendAction: function( action ) {\n\n\t\t// [ active actions | inactive actions ]\n\t\t// [ active actions >| inactive actions ]\n\t\t// s a\n\t\t// <-swap->\n\t\t// a s\n\n\t\tvar actions = this._actions,\n\t\t\tprevIndex = action._cacheIndex,\n\n\t\t\tlastActiveIndex = this._nActiveActions ++,\n\n\t\t\tfirstInactiveAction = actions[ lastActiveIndex ];\n\n\t\taction._cacheIndex = lastActiveIndex;\n\t\tactions[ lastActiveIndex ] = action;\n\n\t\tfirstInactiveAction._cacheIndex = prevIndex;\n\t\tactions[ prevIndex ] = firstInactiveAction;\n\n\t},\n\n\t_takeBackAction: function( action ) {\n\n\t\t// [ active actions | inactive actions ]\n\t\t// [ active actions |< inactive actions ]\n\t\t// a s\n\t\t// <-swap->\n\t\t// s a\n\n\t\tvar actions = this._actions,\n\t\t\tprevIndex = action._cacheIndex,\n\n\t\t\tfirstInactiveIndex = -- this._nActiveActions,\n\n\t\t\tlastActiveAction = actions[ firstInactiveIndex ];\n\n\t\taction._cacheIndex = firstInactiveIndex;\n\t\tactions[ firstInactiveIndex ] = action;\n\n\t\tlastActiveAction._cacheIndex = prevIndex;\n\t\tactions[ prevIndex ] = lastActiveAction;\n\n\t},\n\n\t// Memory management for PropertyMixer objects\n\n\t_addInactiveBinding: function( binding, rootUuid, trackName ) {\n\n\t\tvar bindingsByRoot = this._bindingsByRootAndName,\n\t\t\tbindingByName = bindingsByRoot[ rootUuid ],\n\n\t\t\tbindings = this._bindings;\n\n\t\tif ( bindingByName === undefined ) {\n\n\t\t\tbindingByName = {};\n\t\t\tbindingsByRoot[ rootUuid ] = bindingByName;\n\n\t\t}\n\n\t\tbindingByName[ trackName ] = binding;\n\n\t\tbinding._cacheIndex = bindings.length;\n\t\tbindings.push( binding );\n\n\t},\n\n\t_removeInactiveBinding: function( binding ) {\n\n\t\tvar bindings = this._bindings,\n\t\t\tpropBinding = binding.binding,\n\t\t\trootUuid = propBinding.rootNode.uuid,\n\t\t\ttrackName = propBinding.path,\n\t\t\tbindingsByRoot = this._bindingsByRootAndName,\n\t\t\tbindingByName = bindingsByRoot[ rootUuid ],\n\n\t\t\tlastInactiveBinding = bindings[ bindings.length - 1 ],\n\t\t\tcacheIndex = binding._cacheIndex;\n\n\t\tlastInactiveBinding._cacheIndex = cacheIndex;\n\t\tbindings[ cacheIndex ] = lastInactiveBinding;\n\t\tbindings.pop();\n\n\t\tdelete bindingByName[ trackName ];\n\n\t\tremove_empty_map: {\n\n\t\t\tfor ( var _ in bindingByName ) break remove_empty_map;\n\n\t\t\tdelete bindingsByRoot[ rootUuid ];\n\n\t\t}\n\n\t},\n\n\t_lendBinding: function( binding ) {\n\n\t\tvar bindings = this._bindings,\n\t\t\tprevIndex = binding._cacheIndex,\n\n\t\t\tlastActiveIndex = this._nActiveBindings ++,\n\n\t\t\tfirstInactiveBinding = bindings[ lastActiveIndex ];\n\n\t\tbinding._cacheIndex = lastActiveIndex;\n\t\tbindings[ lastActiveIndex ] = binding;\n\n\t\tfirstInactiveBinding._cacheIndex = prevIndex;\n\t\tbindings[ prevIndex ] = firstInactiveBinding;\n\n\t},\n\n\t_takeBackBinding: function( binding ) {\n\n\t\tvar bindings = this._bindings,\n\t\t\tprevIndex = binding._cacheIndex,\n\n\t\t\tfirstInactiveIndex = -- this._nActiveBindings,\n\n\t\t\tlastActiveBinding = bindings[ firstInactiveIndex ];\n\n\t\tbinding._cacheIndex = firstInactiveIndex;\n\t\tbindings[ firstInactiveIndex ] = binding;\n\n\t\tlastActiveBinding._cacheIndex = prevIndex;\n\t\tbindings[ prevIndex ] = lastActiveBinding;\n\n\t},\n\n\n\t// Memory management of Interpolants for weight and time scale\n\n\t_lendControlInterpolant: function() {\n\n\t\tvar interpolants = this._controlInterpolants,\n\t\t\tlastActiveIndex = this._nActiveControlInterpolants ++,\n\t\t\tinterpolant = interpolants[ lastActiveIndex ];\n\n\t\tif ( interpolant === undefined ) {\n\n\t\t\tinterpolant = new LinearInterpolant(\n\t\t\t\t\tnew Float32Array( 2 ), new Float32Array( 2 ),\n\t\t\t\t\t\t1, this._controlInterpolantsResultBuffer );\n\n\t\t\tinterpolant.__cacheIndex = lastActiveIndex;\n\t\t\tinterpolants[ lastActiveIndex ] = interpolant;\n\n\t\t}\n\n\t\treturn interpolant;\n\n\t},\n\n\t_takeBackControlInterpolant: function( interpolant ) {\n\n\t\tvar interpolants = this._controlInterpolants,\n\t\t\tprevIndex = interpolant.__cacheIndex,\n\n\t\t\tfirstInactiveIndex = -- this._nActiveControlInterpolants,\n\n\t\t\tlastActiveInterpolant = interpolants[ firstInactiveIndex ];\n\n\t\tinterpolant.__cacheIndex = firstInactiveIndex;\n\t\tinterpolants[ firstInactiveIndex ] = interpolant;\n\n\t\tlastActiveInterpolant.__cacheIndex = prevIndex;\n\t\tinterpolants[ prevIndex ] = lastActiveInterpolant;\n\n\t},\n\n\t_controlInterpolantsResultBuffer: new Float32Array( 1 )\n\n} );\n\n\nexport { AnimationMixer };\n","/**\n * @author mrdoob / http://mrdoob.com/\n */\n\nfunction Uniform( value ) {\n\n\tif ( typeof value === 'string' ) {\n\n\t\tconsole.warn( 'THREE.Uniform: Type parameter is no longer needed.' );\n\t\tvalue = arguments[ 1 ];\n\n\t}\n\n\tthis.value = value;\n\n}\n\nexport { Uniform };\n","import { BufferGeometry } from './BufferGeometry';\n\n/**\n * @author benaadams / https://twitter.com/ben_a_adams\n */\n\nfunction InstancedBufferGeometry() {\n\n\tBufferGeometry.call( this );\n\n\tthis.type = 'InstancedBufferGeometry';\n\tthis.maxInstancedCount = undefined;\n\n}\n\nInstancedBufferGeometry.prototype = Object.create( BufferGeometry.prototype );\nInstancedBufferGeometry.prototype.constructor = InstancedBufferGeometry;\n\nInstancedBufferGeometry.prototype.isInstancedBufferGeometry = true;\n\nInstancedBufferGeometry.prototype.addGroup = function ( start, count, materialIndex ) {\n\n\tthis.groups.push( {\n\n\t\tstart: start,\n\t\tcount: count,\n\t\tmaterialIndex: materialIndex\n\n\t} );\n\n};\n\nInstancedBufferGeometry.prototype.copy = function ( source ) {\n\n\tvar index = source.index;\n\n\tif ( index !== null ) {\n\n\t\tthis.setIndex( index.clone() );\n\n\t}\n\n\tvar attributes = source.attributes;\n\n\tfor ( var name in attributes ) {\n\n\t\tvar attribute = attributes[ name ];\n\t\tthis.addAttribute( name, attribute.clone() );\n\n\t}\n\n\tvar groups = source.groups;\n\n\tfor ( var i = 0, l = groups.length; i < l; i ++ ) {\n\n\t\tvar group = groups[ i ];\n\t\tthis.addGroup( group.start, group.count, group.materialIndex );\n\n\t}\n\n\treturn this;\n\n};\n\n\nexport { InstancedBufferGeometry };\n","import { _Math } from '../math/Math';\n\n/**\n * @author benaadams / https://twitter.com/ben_a_adams\n */\n\nfunction InterleavedBufferAttribute( interleavedBuffer, itemSize, offset, normalized ) {\n\n\tthis.uuid = _Math.generateUUID();\n\n\tthis.data = interleavedBuffer;\n\tthis.itemSize = itemSize;\n\tthis.offset = offset;\n\n\tthis.normalized = normalized === true;\n\n}\n\n\nInterleavedBufferAttribute.prototype = {\n\n\tconstructor: InterleavedBufferAttribute,\n\n\tisInterleavedBufferAttribute: true,\n\n\tget count() {\n\n\t\treturn this.data.count;\n\n\t},\n\n\tget array() {\n\n\t\treturn this.data.array;\n\n\t},\n\n\tsetX: function ( index, x ) {\n\n\t\tthis.data.array[ index * this.data.stride + this.offset ] = x;\n\n\t\treturn this;\n\n\t},\n\n\tsetY: function ( index, y ) {\n\n\t\tthis.data.array[ index * this.data.stride + this.offset + 1 ] = y;\n\n\t\treturn this;\n\n\t},\n\n\tsetZ: function ( index, z ) {\n\n\t\tthis.data.array[ index * this.data.stride + this.offset + 2 ] = z;\n\n\t\treturn this;\n\n\t},\n\n\tsetW: function ( index, w ) {\n\n\t\tthis.data.array[ index * this.data.stride + this.offset + 3 ] = w;\n\n\t\treturn this;\n\n\t},\n\n\tgetX: function ( index ) {\n\n\t\treturn this.data.array[ index * this.data.stride + this.offset ];\n\n\t},\n\n\tgetY: function ( index ) {\n\n\t\treturn this.data.array[ index * this.data.stride + this.offset + 1 ];\n\n\t},\n\n\tgetZ: function ( index ) {\n\n\t\treturn this.data.array[ index * this.data.stride + this.offset + 2 ];\n\n\t},\n\n\tgetW: function ( index ) {\n\n\t\treturn this.data.array[ index * this.data.stride + this.offset + 3 ];\n\n\t},\n\n\tsetXY: function ( index, x, y ) {\n\n\t\tindex = index * this.data.stride + this.offset;\n\n\t\tthis.data.array[ index + 0 ] = x;\n\t\tthis.data.array[ index + 1 ] = y;\n\n\t\treturn this;\n\n\t},\n\n\tsetXYZ: function ( index, x, y, z ) {\n\n\t\tindex = index * this.data.stride + this.offset;\n\n\t\tthis.data.array[ index + 0 ] = x;\n\t\tthis.data.array[ index + 1 ] = y;\n\t\tthis.data.array[ index + 2 ] = z;\n\n\t\treturn this;\n\n\t},\n\n\tsetXYZW: function ( index, x, y, z, w ) {\n\n\t\tindex = index * this.data.stride + this.offset;\n\n\t\tthis.data.array[ index + 0 ] = x;\n\t\tthis.data.array[ index + 1 ] = y;\n\t\tthis.data.array[ index + 2 ] = z;\n\t\tthis.data.array[ index + 3 ] = w;\n\n\t\treturn this;\n\n\t}\n\n};\n\n\nexport { InterleavedBufferAttribute };\n","import { _Math } from '../math/Math';\n\n/**\n * @author benaadams / https://twitter.com/ben_a_adams\n */\n\nfunction InterleavedBuffer( array, stride ) {\n\n\tthis.uuid = _Math.generateUUID();\n\n\tthis.array = array;\n\tthis.stride = stride;\n\tthis.count = array !== undefined ? array.length / stride : 0;\n\n\tthis.dynamic = false;\n\tthis.updateRange = { offset: 0, count: - 1 };\n\n\tthis.version = 0;\n\n}\n\nInterleavedBuffer.prototype = {\n\n\tconstructor: InterleavedBuffer,\n\n\tisInterleavedBuffer: true,\n\n\tset needsUpdate( value ) {\n\n\t\tif ( value === true ) this.version ++;\n\n\t},\n\n\tsetArray: function ( array ) {\n\n\t\tif ( Array.isArray( array ) ) {\n\n\t\t\tthrow new TypeError( 'THREE.BufferAttribute: array should be a Typed Array.' );\n\n\t\t}\n\n\t\tthis.count = array !== undefined ? array.length / this.stride : 0;\n\t\tthis.array = array;\n\n\t},\n\n\tsetDynamic: function ( value ) {\n\n\t\tthis.dynamic = value;\n\n\t\treturn this;\n\n\t},\n\n\tcopy: function ( source ) {\n\n\t\tthis.array = new source.array.constructor( source.array );\n\t\tthis.count = source.count;\n\t\tthis.stride = source.stride;\n\t\tthis.dynamic = source.dynamic;\n\n\t\treturn this;\n\n\t},\n\n\tcopyAt: function ( index1, attribute, index2 ) {\n\n\t\tindex1 *= this.stride;\n\t\tindex2 *= attribute.stride;\n\n\t\tfor ( var i = 0, l = this.stride; i < l; i ++ ) {\n\n\t\t\tthis.array[ index1 + i ] = attribute.array[ index2 + i ];\n\n\t\t}\n\n\t\treturn this;\n\n\t},\n\n\tset: function ( value, offset ) {\n\n\t\tif ( offset === undefined ) offset = 0;\n\n\t\tthis.array.set( value, offset );\n\n\t\treturn this;\n\n\t},\n\n\tclone: function () {\n\n\t\treturn new this.constructor().copy( this );\n\n\t}\n\n};\n\n\nexport { InterleavedBuffer };\n","import { InterleavedBuffer } from './InterleavedBuffer';\n\n/**\n * @author benaadams / https://twitter.com/ben_a_adams\n */\n\nfunction InstancedInterleavedBuffer( array, stride, meshPerAttribute ) {\n\n\tInterleavedBuffer.call( this, array, stride );\n\n\tthis.meshPerAttribute = meshPerAttribute || 1;\n\n}\n\nInstancedInterleavedBuffer.prototype = Object.create( InterleavedBuffer.prototype );\nInstancedInterleavedBuffer.prototype.constructor = InstancedInterleavedBuffer;\n\nInstancedInterleavedBuffer.prototype.isInstancedInterleavedBuffer = true;\n\nInstancedInterleavedBuffer.prototype.copy = function ( source ) {\n\n\tInterleavedBuffer.prototype.copy.call( this, source );\n\n\tthis.meshPerAttribute = source.meshPerAttribute;\n\n\treturn this;\n\n};\n\n\nexport { InstancedInterleavedBuffer };\n","import { BufferAttribute } from './BufferAttribute';\n\n/**\n * @author benaadams / https://twitter.com/ben_a_adams\n */\n\nfunction InstancedBufferAttribute( array, itemSize, meshPerAttribute ) {\n\n\tBufferAttribute.call( this, array, itemSize );\n\n\tthis.meshPerAttribute = meshPerAttribute || 1;\n\n}\n\nInstancedBufferAttribute.prototype = Object.create( BufferAttribute.prototype );\nInstancedBufferAttribute.prototype.constructor = InstancedBufferAttribute;\n\nInstancedBufferAttribute.prototype.isInstancedBufferAttribute = true;\n\nInstancedBufferAttribute.prototype.copy = function ( source ) {\n\n\tBufferAttribute.prototype.copy.call( this, source );\n\n\tthis.meshPerAttribute = source.meshPerAttribute;\n\n\treturn this;\n\n};\n\n\nexport { InstancedBufferAttribute };\n","import { Ray } from '../math/Ray';\n\n/**\n * @author mrdoob / http://mrdoob.com/\n * @author bhouston / http://clara.io/\n * @author stephomi / http://stephaneginier.com/\n */\n\nfunction Raycaster( origin, direction, near, far ) {\n\n\tthis.ray = new Ray( origin, direction );\n\t// direction is assumed to be normalized (for accurate distance calculations)\n\n\tthis.near = near || 0;\n\tthis.far = far || Infinity;\n\n\tthis.params = {\n\t\tMesh: {},\n\t\tLine: {},\n\t\tLOD: {},\n\t\tPoints: { threshold: 1 },\n\t\tSprite: {}\n\t};\n\n\tObject.defineProperties( this.params, {\n\t\tPointCloud: {\n\t\t\tget: function () {\n\t\t\t\tconsole.warn( 'THREE.Raycaster: params.PointCloud has been renamed to params.Points.' );\n\t\t\t\treturn this.Points;\n\t\t\t}\n\t\t}\n\t} );\n\n}\n\nfunction ascSort( a, b ) {\n\n\treturn a.distance - b.distance;\n\n}\n\nfunction intersectObject( object, raycaster, intersects, recursive ) {\n\n\tif ( object.visible === false ) return;\n\n\tobject.raycast( raycaster, intersects );\n\n\tif ( recursive === true ) {\n\n\t\tvar children = object.children;\n\n\t\tfor ( var i = 0, l = children.length; i < l; i ++ ) {\n\n\t\t\tintersectObject( children[ i ], raycaster, intersects, true );\n\n\t\t}\n\n\t}\n\n}\n\n//\n\nRaycaster.prototype = {\n\n\tconstructor: Raycaster,\n\n\tlinePrecision: 1,\n\n\tset: function ( origin, direction ) {\n\n\t\t// direction is assumed to be normalized (for accurate distance calculations)\n\n\t\tthis.ray.set( origin, direction );\n\n\t},\n\n\tsetFromCamera: function ( coords, camera ) {\n\n\t\tif ( (camera && camera.isPerspectiveCamera) ) {\n\n\t\t\tthis.ray.origin.setFromMatrixPosition( camera.matrixWorld );\n\t\t\tthis.ray.direction.set( coords.x, coords.y, 0.5 ).unproject( camera ).sub( this.ray.origin ).normalize();\n\n\t\t} else if ( (camera && camera.isOrthographicCamera) ) {\n\n\t\t\tthis.ray.origin.set( coords.x, coords.y, ( camera.near + camera.far ) / ( camera.near - camera.far ) ).unproject( camera ); // set origin in plane of camera\n\t\t\tthis.ray.direction.set( 0, 0, - 1 ).transformDirection( camera.matrixWorld );\n\n\t\t} else {\n\n\t\t\tconsole.error( 'THREE.Raycaster: Unsupported camera type.' );\n\n\t\t}\n\n\t},\n\n\tintersectObject: function ( object, recursive ) {\n\n\t\tvar intersects = [];\n\n\t\tintersectObject( object, this, intersects, recursive );\n\n\t\tintersects.sort( ascSort );\n\n\t\treturn intersects;\n\n\t},\n\n\tintersectObjects: function ( objects, recursive ) {\n\n\t\tvar intersects = [];\n\n\t\tif ( Array.isArray( objects ) === false ) {\n\n\t\t\tconsole.warn( 'THREE.Raycaster.intersectObjects: objects is not an Array.' );\n\t\t\treturn intersects;\n\n\t\t}\n\n\t\tfor ( var i = 0, l = objects.length; i < l; i ++ ) {\n\n\t\t\tintersectObject( objects[ i ], this, intersects, recursive );\n\n\t\t}\n\n\t\tintersects.sort( ascSort );\n\n\t\treturn intersects;\n\n\t}\n\n};\n\n\nexport { Raycaster };\n","/**\n * @author alteredq / http://alteredqualia.com/\n */\n\nfunction Clock( autoStart ) {\n\n\tthis.autoStart = ( autoStart !== undefined ) ? autoStart : true;\n\n\tthis.startTime = 0;\n\tthis.oldTime = 0;\n\tthis.elapsedTime = 0;\n\n\tthis.running = false;\n\n}\n\nClock.prototype = {\n\n\tconstructor: Clock,\n\n\tstart: function () {\n\n\t\tthis.startTime = ( performance || Date ).now();\n\n\t\tthis.oldTime = this.startTime;\n\t\tthis.elapsedTime = 0;\n\t\tthis.running = true;\n\n\t},\n\n\tstop: function () {\n\n\t\tthis.getElapsedTime();\n\t\tthis.running = false;\n\n\t},\n\n\tgetElapsedTime: function () {\n\n\t\tthis.getDelta();\n\t\treturn this.elapsedTime;\n\n\t},\n\n\tgetDelta: function () {\n\n\t\tvar diff = 0;\n\n\t\tif ( this.autoStart && ! this.running ) {\n\n\t\t\tthis.start();\n\n\t\t}\n\n\t\tif ( this.running ) {\n\n\t\t\tvar newTime = ( performance || Date ).now();\n\n\t\t\tdiff = ( newTime - this.oldTime ) / 1000;\n\t\t\tthis.oldTime = newTime;\n\n\t\t\tthis.elapsedTime += diff;\n\n\t\t}\n\n\t\treturn diff;\n\n\t}\n\n};\n\n\nexport { Clock };\n","import { Vector3 } from './Vector3';\n\n/**\n * Spline from Tween.js, slightly optimized (and trashed)\n * http://sole.github.com/tween.js/examples/05_spline.html\n *\n * @author mrdoob / http://mrdoob.com/\n * @author alteredq / http://alteredqualia.com/\n */\n\nfunction Spline( points ) {\n\n\tthis.points = points;\n\n\tvar c = [], v3 = { x: 0, y: 0, z: 0 },\n\tpoint, intPoint, weight, w2, w3,\n\tpa, pb, pc, pd;\n\n\tthis.initFromArray = function ( a ) {\n\n\t\tthis.points = [];\n\n\t\tfor ( var i = 0; i < a.length; i ++ ) {\n\n\t\t\tthis.points[ i ] = { x: a[ i ][ 0 ], y: a[ i ][ 1 ], z: a[ i ][ 2 ] };\n\n\t\t}\n\n\t};\n\n\tthis.getPoint = function ( k ) {\n\n\t\tpoint = ( this.points.length - 1 ) * k;\n\t\tintPoint = Math.floor( point );\n\t\tweight = point - intPoint;\n\n\t\tc[ 0 ] = intPoint === 0 ? intPoint : intPoint - 1;\n\t\tc[ 1 ] = intPoint;\n\t\tc[ 2 ] = intPoint > this.points.length - 2 ? this.points.length - 1 : intPoint + 1;\n\t\tc[ 3 ] = intPoint > this.points.length - 3 ? this.points.length - 1 : intPoint + 2;\n\n\t\tpa = this.points[ c[ 0 ] ];\n\t\tpb = this.points[ c[ 1 ] ];\n\t\tpc = this.points[ c[ 2 ] ];\n\t\tpd = this.points[ c[ 3 ] ];\n\n\t\tw2 = weight * weight;\n\t\tw3 = weight * w2;\n\n\t\tv3.x = interpolate( pa.x, pb.x, pc.x, pd.x, weight, w2, w3 );\n\t\tv3.y = interpolate( pa.y, pb.y, pc.y, pd.y, weight, w2, w3 );\n\t\tv3.z = interpolate( pa.z, pb.z, pc.z, pd.z, weight, w2, w3 );\n\n\t\treturn v3;\n\n\t};\n\n\tthis.getControlPointsArray = function () {\n\n\t\tvar i, p, l = this.points.length,\n\t\t\tcoords = [];\n\n\t\tfor ( i = 0; i < l; i ++ ) {\n\n\t\t\tp = this.points[ i ];\n\t\t\tcoords[ i ] = [ p.x, p.y, p.z ];\n\n\t\t}\n\n\t\treturn coords;\n\n\t};\n\n\t// approximate length by summing linear segments\n\n\tthis.getLength = function ( nSubDivisions ) {\n\n\t\tvar i, index, nSamples, position,\n\t\t\tpoint = 0, intPoint = 0, oldIntPoint = 0,\n\t\t\toldPosition = new Vector3(),\n\t\t\ttmpVec = new Vector3(),\n\t\t\tchunkLengths = [],\n\t\t\ttotalLength = 0;\n\n\t\t// first point has 0 length\n\n\t\tchunkLengths[ 0 ] = 0;\n\n\t\tif ( ! nSubDivisions ) nSubDivisions = 100;\n\n\t\tnSamples = this.points.length * nSubDivisions;\n\n\t\toldPosition.copy( this.points[ 0 ] );\n\n\t\tfor ( i = 1; i < nSamples; i ++ ) {\n\n\t\t\tindex = i / nSamples;\n\n\t\t\tposition = this.getPoint( index );\n\t\t\ttmpVec.copy( position );\n\n\t\t\ttotalLength += tmpVec.distanceTo( oldPosition );\n\n\t\t\toldPosition.copy( position );\n\n\t\t\tpoint = ( this.points.length - 1 ) * index;\n\t\t\tintPoint = Math.floor( point );\n\n\t\t\tif ( intPoint !== oldIntPoint ) {\n\n\t\t\t\tchunkLengths[ intPoint ] = totalLength;\n\t\t\t\toldIntPoint = intPoint;\n\n\t\t\t}\n\n\t\t}\n\n\t\t// last point ends with total length\n\n\t\tchunkLengths[ chunkLengths.length ] = totalLength;\n\n\t\treturn { chunks: chunkLengths, total: totalLength };\n\n\t};\n\n\tthis.reparametrizeByArcLength = function ( samplingCoef ) {\n\n\t\tvar i, j,\n\t\t\tindex, indexCurrent, indexNext,\n\t\t\trealDistance,\n\t\t\tsampling, position,\n\t\t\tnewpoints = [],\n\t\t\ttmpVec = new Vector3(),\n\t\t\tsl = this.getLength();\n\n\t\tnewpoints.push( tmpVec.copy( this.points[ 0 ] ).clone() );\n\n\t\tfor ( i = 1; i < this.points.length; i ++ ) {\n\n\t\t\t//tmpVec.copy( this.points[ i - 1 ] );\n\t\t\t//linearDistance = tmpVec.distanceTo( this.points[ i ] );\n\n\t\t\trealDistance = sl.chunks[ i ] - sl.chunks[ i - 1 ];\n\n\t\t\tsampling = Math.ceil( samplingCoef * realDistance / sl.total );\n\n\t\t\tindexCurrent = ( i - 1 ) / ( this.points.length - 1 );\n\t\t\tindexNext = i / ( this.points.length - 1 );\n\n\t\t\tfor ( j = 1; j < sampling - 1; j ++ ) {\n\n\t\t\t\tindex = indexCurrent + j * ( 1 / sampling ) * ( indexNext - indexCurrent );\n\n\t\t\t\tposition = this.getPoint( index );\n\t\t\t\tnewpoints.push( tmpVec.copy( position ).clone() );\n\n\t\t\t}\n\n\t\t\tnewpoints.push( tmpVec.copy( this.points[ i ] ).clone() );\n\n\t\t}\n\n\t\tthis.points = newpoints;\n\n\t};\n\n\t// Catmull-Rom\n\n\tfunction interpolate( p0, p1, p2, p3, t, t2, t3 ) {\n\n\t\tvar v0 = ( p2 - p0 ) * 0.5,\n\t\t\tv1 = ( p3 - p1 ) * 0.5;\n\n\t\treturn ( 2 * ( p1 - p2 ) + v0 + v1 ) * t3 + ( - 3 * ( p1 - p2 ) - 2 * v0 - v1 ) * t2 + v0 * t + p1;\n\n\t}\n\n}\n\n\nexport { Spline };\n","import { _Math } from './Math';\n\n/**\n * @author bhouston / http://clara.io\n * @author WestLangley / http://github.com/WestLangley\n *\n * Ref: https://en.wikipedia.org/wiki/Spherical_coordinate_system\n *\n * The poles (phi) are at the positive and negative y axis.\n * The equator starts at positive z.\n */\n\nfunction Spherical( radius, phi, theta ) {\n\n\tthis.radius = ( radius !== undefined ) ? radius : 1.0;\n\tthis.phi = ( phi !== undefined ) ? phi : 0; // up / down towards top and bottom pole\n\tthis.theta = ( theta !== undefined ) ? theta : 0; // around the equator of the sphere\n\n\treturn this;\n\n}\n\nSpherical.prototype = {\n\n\tconstructor: Spherical,\n\n\tset: function ( radius, phi, theta ) {\n\n\t\tthis.radius = radius;\n\t\tthis.phi = phi;\n\t\tthis.theta = theta;\n\n\t\treturn this;\n\n\t},\n\n\tclone: function () {\n\n\t\treturn new this.constructor().copy( this );\n\n\t},\n\n\tcopy: function ( other ) {\n\n\t\tthis.radius = other.radius;\n\t\tthis.phi = other.phi;\n\t\tthis.theta = other.theta;\n\n\t\treturn this;\n\n\t},\n\n\t// restrict phi to be betwee EPS and PI-EPS\n\tmakeSafe: function() {\n\n\t\tvar EPS = 0.000001;\n\t\tthis.phi = Math.max( EPS, Math.min( Math.PI - EPS, this.phi ) );\n\n\t\treturn this;\n\n\t},\n\n\tsetFromVector3: function( vec3 ) {\n\n\t\tthis.radius = vec3.length();\n\n\t\tif ( this.radius === 0 ) {\n\n\t\t\tthis.theta = 0;\n\t\t\tthis.phi = 0;\n\n\t\t} else {\n\n\t\t\tthis.theta = Math.atan2( vec3.x, vec3.z ); // equator angle around y-up axis\n\t\t\tthis.phi = Math.acos( _Math.clamp( vec3.y / this.radius, - 1, 1 ) ); // polar angle\n\n\t\t}\n\n\t\treturn this;\n\n\t},\n\n};\n\n\nexport { Spherical };\n","import { Mesh } from '../../objects/Mesh';\nimport { _Math } from '../../math/Math';\n\n/**\r\n * @author alteredq / http://alteredqualia.com/\r\n */\r\n\r\nfunction MorphBlendMesh( geometry, material ) {\n\r\n\tMesh.call( this, geometry, material );\r\n\r\n\tthis.animationsMap = {};\r\n\tthis.animationsList = [];\r\n\r\n\t// prepare default animation\r\n\t// (all frames played together in 1 second)\r\n\r\n\tvar numFrames = this.geometry.morphTargets.length;\r\n\r\n\tvar name = \"__default\";\r\n\r\n\tvar startFrame = 0;\r\n\tvar endFrame = numFrames - 1;\r\n\r\n\tvar fps = numFrames / 1;\r\n\r\n\tthis.createAnimation( name, startFrame, endFrame, fps );\r\n\tthis.setAnimationWeight( name, 1 );\r\n\r\n}\r\n\r\nMorphBlendMesh.prototype = Object.create( Mesh.prototype );\r\nMorphBlendMesh.prototype.constructor = MorphBlendMesh;\r\n\r\nMorphBlendMesh.prototype.createAnimation = function ( name, start, end, fps ) {\r\n\r\n\tvar animation = {\r\n\r\n\t\tstart: start,\r\n\t\tend: end,\r\n\r\n\t\tlength: end - start + 1,\r\n\r\n\t\tfps: fps,\r\n\t\tduration: ( end - start ) / fps,\r\n\r\n\t\tlastFrame: 0,\r\n\t\tcurrentFrame: 0,\r\n\r\n\t\tactive: false,\r\n\r\n\t\ttime: 0,\r\n\t\tdirection: 1,\r\n\t\tweight: 1,\r\n\r\n\t\tdirectionBackwards: false,\r\n\t\tmirroredLoop: false\r\n\r\n\t};\r\n\r\n\tthis.animationsMap[ name ] = animation;\r\n\tthis.animationsList.push( animation );\r\n\r\n};\r\n\r\nMorphBlendMesh.prototype.autoCreateAnimations = function ( fps ) {\r\n\r\n\tvar pattern = /([a-z]+)_?(\\d+)/i;\r\n\r\n\tvar firstAnimation, frameRanges = {};\r\n\r\n\tvar geometry = this.geometry;\r\n\r\n\tfor ( var i = 0, il = geometry.morphTargets.length; i < il; i ++ ) {\r\n\r\n\t\tvar morph = geometry.morphTargets[ i ];\r\n\t\tvar chunks = morph.name.match( pattern );\r\n\r\n\t\tif ( chunks && chunks.length > 1 ) {\r\n\r\n\t\t\tvar name = chunks[ 1 ];\r\n\r\n\t\t\tif ( ! frameRanges[ name ] ) frameRanges[ name ] = { start: Infinity, end: - Infinity };\r\n\r\n\t\t\tvar range = frameRanges[ name ];\r\n\r\n\t\t\tif ( i < range.start ) range.start = i;\r\n\t\t\tif ( i > range.end ) range.end = i;\r\n\r\n\t\t\tif ( ! firstAnimation ) firstAnimation = name;\r\n\r\n\t\t}\r\n\r\n\t}\r\n\r\n\tfor ( var name in frameRanges ) {\r\n\r\n\t\tvar range = frameRanges[ name ];\r\n\t\tthis.createAnimation( name, range.start, range.end, fps );\r\n\r\n\t}\r\n\r\n\tthis.firstAnimation = firstAnimation;\r\n\r\n};\r\n\r\nMorphBlendMesh.prototype.setAnimationDirectionForward = function ( name ) {\r\n\r\n\tvar animation = this.animationsMap[ name ];\r\n\r\n\tif ( animation ) {\r\n\r\n\t\tanimation.direction = 1;\r\n\t\tanimation.directionBackwards = false;\r\n\r\n\t}\r\n\r\n};\r\n\r\nMorphBlendMesh.prototype.setAnimationDirectionBackward = function ( name ) {\r\n\r\n\tvar animation = this.animationsMap[ name ];\r\n\r\n\tif ( animation ) {\r\n\r\n\t\tanimation.direction = - 1;\r\n\t\tanimation.directionBackwards = true;\r\n\r\n\t}\r\n\r\n};\r\n\r\nMorphBlendMesh.prototype.setAnimationFPS = function ( name, fps ) {\r\n\r\n\tvar animation = this.animationsMap[ name ];\r\n\r\n\tif ( animation ) {\r\n\r\n\t\tanimation.fps = fps;\r\n\t\tanimation.duration = ( animation.end - animation.start ) / animation.fps;\r\n\r\n\t}\r\n\r\n};\r\n\r\nMorphBlendMesh.prototype.setAnimationDuration = function ( name, duration ) {\r\n\r\n\tvar animation = this.animationsMap[ name ];\r\n\r\n\tif ( animation ) {\r\n\r\n\t\tanimation.duration = duration;\r\n\t\tanimation.fps = ( animation.end - animation.start ) / animation.duration;\r\n\r\n\t}\r\n\r\n};\r\n\r\nMorphBlendMesh.prototype.setAnimationWeight = function ( name, weight ) {\r\n\r\n\tvar animation = this.animationsMap[ name ];\r\n\r\n\tif ( animation ) {\r\n\r\n\t\tanimation.weight = weight;\r\n\r\n\t}\r\n\r\n};\r\n\r\nMorphBlendMesh.prototype.setAnimationTime = function ( name, time ) {\r\n\r\n\tvar animation = this.animationsMap[ name ];\r\n\r\n\tif ( animation ) {\r\n\r\n\t\tanimation.time = time;\r\n\r\n\t}\r\n\r\n};\r\n\r\nMorphBlendMesh.prototype.getAnimationTime = function ( name ) {\r\n\r\n\tvar time = 0;\r\n\r\n\tvar animation = this.animationsMap[ name ];\r\n\r\n\tif ( animation ) {\r\n\r\n\t\ttime = animation.time;\r\n\r\n\t}\r\n\r\n\treturn time;\r\n\r\n};\r\n\r\nMorphBlendMesh.prototype.getAnimationDuration = function ( name ) {\r\n\r\n\tvar duration = - 1;\r\n\r\n\tvar animation = this.animationsMap[ name ];\r\n\r\n\tif ( animation ) {\r\n\r\n\t\tduration = animation.duration;\r\n\r\n\t}\r\n\r\n\treturn duration;\r\n\r\n};\r\n\r\nMorphBlendMesh.prototype.playAnimation = function ( name ) {\r\n\r\n\tvar animation = this.animationsMap[ name ];\r\n\r\n\tif ( animation ) {\r\n\r\n\t\tanimation.time = 0;\r\n\t\tanimation.active = true;\r\n\r\n\t} else {\r\n\r\n\t\tconsole.warn( \"THREE.MorphBlendMesh: animation[\" + name + \"] undefined in .playAnimation()\" );\r\n\r\n\t}\r\n\r\n};\r\n\r\nMorphBlendMesh.prototype.stopAnimation = function ( name ) {\r\n\r\n\tvar animation = this.animationsMap[ name ];\r\n\r\n\tif ( animation ) {\r\n\r\n\t\tanimation.active = false;\r\n\r\n\t}\r\n\r\n};\r\n\r\nMorphBlendMesh.prototype.update = function ( delta ) {\r\n\r\n\tfor ( var i = 0, il = this.animationsList.length; i < il; i ++ ) {\r\n\r\n\t\tvar animation = this.animationsList[ i ];\r\n\r\n\t\tif ( ! animation.active ) continue;\r\n\r\n\t\tvar frameTime = animation.duration / animation.length;\r\n\r\n\t\tanimation.time += animation.direction * delta;\r\n\r\n\t\tif ( animation.mirroredLoop ) {\r\n\r\n\t\t\tif ( animation.time > animation.duration || animation.time < 0 ) {\r\n\r\n\t\t\t\tanimation.direction *= - 1;\r\n\r\n\t\t\t\tif ( animation.time > animation.duration ) {\r\n\r\n\t\t\t\t\tanimation.time = animation.duration;\r\n\t\t\t\t\tanimation.directionBackwards = true;\r\n\r\n\t\t\t\t}\r\n\r\n\t\t\t\tif ( animation.time < 0 ) {\r\n\r\n\t\t\t\t\tanimation.time = 0;\r\n\t\t\t\t\tanimation.directionBackwards = false;\r\n\r\n\t\t\t\t}\r\n\r\n\t\t\t}\r\n\r\n\t\t} else {\r\n\r\n\t\t\tanimation.time = animation.time % animation.duration;\r\n\r\n\t\t\tif ( animation.time < 0 ) animation.time += animation.duration;\r\n\r\n\t\t}\r\n\r\n\t\tvar keyframe = animation.start + _Math.clamp( Math.floor( animation.time / frameTime ), 0, animation.length - 1 );\r\n\t\tvar weight = animation.weight;\r\n\r\n\t\tif ( keyframe !== animation.currentFrame ) {\r\n\r\n\t\t\tthis.morphTargetInfluences[ animation.lastFrame ] = 0;\r\n\t\t\tthis.morphTargetInfluences[ animation.currentFrame ] = 1 * weight;\r\n\r\n\t\t\tthis.morphTargetInfluences[ keyframe ] = 0;\r\n\r\n\t\t\tanimation.lastFrame = animation.currentFrame;\r\n\t\t\tanimation.currentFrame = keyframe;\r\n\r\n\t\t}\r\n\r\n\t\tvar mix = ( animation.time % frameTime ) / frameTime;\r\n\r\n\t\tif ( animation.directionBackwards ) mix = 1 - mix;\r\n\r\n\t\tif ( animation.currentFrame !== animation.lastFrame ) {\r\n\r\n\t\t\tthis.morphTargetInfluences[ animation.currentFrame ] = mix * weight;\r\n\t\t\tthis.morphTargetInfluences[ animation.lastFrame ] = ( 1 - mix ) * weight;\r\n\r\n\t\t} else {\r\n\r\n\t\t\tthis.morphTargetInfluences[ animation.currentFrame ] = weight;\r\n\r\n\t\t}\r\n\r\n\t}\r\n\r\n};\r\n\n\nexport { MorphBlendMesh };\n","import { Object3D } from '../../core/Object3D';\n\n/**\n * @author alteredq / http://alteredqualia.com/\n */\n\nfunction ImmediateRenderObject( material ) {\n\n\tObject3D.call( this );\n\n\tthis.material = material;\n\tthis.render = function ( renderCallback ) {};\n\n}\n\nImmediateRenderObject.prototype = Object.create( Object3D.prototype );\nImmediateRenderObject.prototype.constructor = ImmediateRenderObject;\n\nImmediateRenderObject.prototype.isImmediateRenderObject = true;\n\n\nexport { ImmediateRenderObject };\n","import { Matrix3 } from '../../math/Matrix3';\nimport { Vector3 } from '../../math/Vector3';\nimport { LineSegments } from '../../objects/LineSegments';\nimport { LineBasicMaterial } from '../../materials/LineBasicMaterial';\nimport { Float32Attribute } from '../../core/BufferAttribute';\nimport { BufferGeometry } from '../../core/BufferGeometry';\n\n/**\n * @author mrdoob / http://mrdoob.com/\n * @author WestLangley / http://github.com/WestLangley\n*/\n\nfunction VertexNormalsHelper( object, size, hex, linewidth ) {\n\n\tthis.object = object;\n\n\tthis.size = ( size !== undefined ) ? size : 1;\n\n\tvar color = ( hex !== undefined ) ? hex : 0xff0000;\n\n\tvar width = ( linewidth !== undefined ) ? linewidth : 1;\n\n\t//\n\n\tvar nNormals = 0;\n\n\tvar objGeometry = this.object.geometry;\n\n\tif ( (objGeometry && objGeometry.isGeometry) ) {\n\n\t\tnNormals = objGeometry.faces.length * 3;\n\n\t} else if ( (objGeometry && objGeometry.isBufferGeometry) ) {\n\n\t\tnNormals = objGeometry.attributes.normal.count;\n\n\t}\n\n\t//\n\n\tvar geometry = new BufferGeometry();\n\n\tvar positions = new Float32Attribute( nNormals * 2 * 3, 3 );\n\n\tgeometry.addAttribute( 'position', positions );\n\n\tLineSegments.call( this, geometry, new LineBasicMaterial( { color: color, linewidth: width } ) );\n\n\t//\n\n\tthis.matrixAutoUpdate = false;\n\n\tthis.update();\n\n}\n\nVertexNormalsHelper.prototype = Object.create( LineSegments.prototype );\nVertexNormalsHelper.prototype.constructor = VertexNormalsHelper;\n\nVertexNormalsHelper.prototype.update = ( function () {\n\n\tvar v1 = new Vector3();\n\tvar v2 = new Vector3();\n\tvar normalMatrix = new Matrix3();\n\n\treturn function update() {\n\n\t\tvar keys = [ 'a', 'b', 'c' ];\n\n\t\tthis.object.updateMatrixWorld( true );\n\n\t\tnormalMatrix.getNormalMatrix( this.object.matrixWorld );\n\n\t\tvar matrixWorld = this.object.matrixWorld;\n\n\t\tvar position = this.geometry.attributes.position;\n\n\t\t//\n\n\t\tvar objGeometry = this.object.geometry;\n\n\t\tif ( (objGeometry && objGeometry.isGeometry) ) {\n\n\t\t\tvar vertices = objGeometry.vertices;\n\n\t\t\tvar faces = objGeometry.faces;\n\n\t\t\tvar idx = 0;\n\n\t\t\tfor ( var i = 0, l = faces.length; i < l; i ++ ) {\n\n\t\t\t\tvar face = faces[ i ];\n\n\t\t\t\tfor ( var j = 0, jl = face.vertexNormals.length; j < jl; j ++ ) {\n\n\t\t\t\t\tvar vertex = vertices[ face[ keys[ j ] ] ];\n\n\t\t\t\t\tvar normal = face.vertexNormals[ j ];\n\n\t\t\t\t\tv1.copy( vertex ).applyMatrix4( matrixWorld );\n\n\t\t\t\t\tv2.copy( normal ).applyMatrix3( normalMatrix ).normalize().multiplyScalar( this.size ).add( v1 );\n\n\t\t\t\t\tposition.setXYZ( idx, v1.x, v1.y, v1.z );\n\n\t\t\t\t\tidx = idx + 1;\n\n\t\t\t\t\tposition.setXYZ( idx, v2.x, v2.y, v2.z );\n\n\t\t\t\t\tidx = idx + 1;\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t} else if ( (objGeometry && objGeometry.isBufferGeometry) ) {\n\n\t\t\tvar objPos = objGeometry.attributes.position;\n\n\t\t\tvar objNorm = objGeometry.attributes.normal;\n\n\t\t\tvar idx = 0;\n\n\t\t\t// for simplicity, ignore index and drawcalls, and render every normal\n\n\t\t\tfor ( var j = 0, jl = objPos.count; j < jl; j ++ ) {\n\n\t\t\t\tv1.set( objPos.getX( j ), objPos.getY( j ), objPos.getZ( j ) ).applyMatrix4( matrixWorld );\n\n\t\t\t\tv2.set( objNorm.getX( j ), objNorm.getY( j ), objNorm.getZ( j ) );\n\n\t\t\t\tv2.applyMatrix3( normalMatrix ).normalize().multiplyScalar( this.size ).add( v1 );\n\n\t\t\t\tposition.setXYZ( idx, v1.x, v1.y, v1.z );\n\n\t\t\t\tidx = idx + 1;\n\n\t\t\t\tposition.setXYZ( idx, v2.x, v2.y, v2.z );\n\n\t\t\t\tidx = idx + 1;\n\n\t\t\t}\n\n\t\t}\n\n\t\tposition.needsUpdate = true;\n\n\t\treturn this;\n\n\t};\n\n}() );\n\n\nexport { VertexNormalsHelper };\n","import { Vector3 } from '../../math/Vector3';\nimport { Object3D } from '../../core/Object3D';\nimport { LineSegments } from '../../objects/LineSegments';\nimport { LineBasicMaterial } from '../../materials/LineBasicMaterial';\nimport { Float32Attribute } from '../../core/BufferAttribute';\nimport { BufferGeometry } from '../../core/BufferGeometry';\n\n/**\n * @author alteredq / http://alteredqualia.com/\n * @author mrdoob / http://mrdoob.com/\n * @author WestLangley / http://github.com/WestLangley\n*/\n\nfunction SpotLightHelper( light ) {\n\n\tObject3D.call( this );\n\n\tthis.light = light;\n\tthis.light.updateMatrixWorld();\n\n\tthis.matrix = light.matrixWorld;\n\tthis.matrixAutoUpdate = false;\n\n\tvar geometry = new BufferGeometry();\n\n\tvar positions = [\n\t\t0, 0, 0, 0, 0, 1,\n\t\t0, 0, 0, 1, 0, 1,\n\t\t0, 0, 0, - 1, 0, 1,\n\t\t0, 0, 0, 0, 1, 1,\n\t\t0, 0, 0, 0, - 1, 1\n\t];\n\n\tfor ( var i = 0, j = 1, l = 32; i < l; i ++, j ++ ) {\n\n\t\tvar p1 = ( i / l ) * Math.PI * 2;\n\t\tvar p2 = ( j / l ) * Math.PI * 2;\n\n\t\tpositions.push(\n\t\t\tMath.cos( p1 ), Math.sin( p1 ), 1,\n\t\t\tMath.cos( p2 ), Math.sin( p2 ), 1\n\t\t);\n\n\t}\n\n\tgeometry.addAttribute( 'position', new Float32Attribute( positions, 3 ) );\n\n\tvar material = new LineBasicMaterial( { fog: false } );\n\n\tthis.cone = new LineSegments( geometry, material );\n\tthis.add( this.cone );\n\n\tthis.update();\n\n}\n\nSpotLightHelper.prototype = Object.create( Object3D.prototype );\nSpotLightHelper.prototype.constructor = SpotLightHelper;\n\nSpotLightHelper.prototype.dispose = function () {\n\n\tthis.cone.geometry.dispose();\n\tthis.cone.material.dispose();\n\n};\n\nSpotLightHelper.prototype.update = function () {\n\n\tvar vector = new Vector3();\n\tvar vector2 = new Vector3();\n\n\treturn function update() {\n\n\t\tvar coneLength = this.light.distance ? this.light.distance : 1000;\n\t\tvar coneWidth = coneLength * Math.tan( this.light.angle );\n\n\t\tthis.cone.scale.set( coneWidth, coneWidth, coneLength );\n\n\t\tvector.setFromMatrixPosition( this.light.matrixWorld );\n\t\tvector2.setFromMatrixPosition( this.light.target.matrixWorld );\n\n\t\tthis.cone.lookAt( vector2.sub( vector ) );\n\n\t\tthis.cone.material.color.copy( this.light.color ).multiplyScalar( this.light.intensity );\n\n\t};\n\n}();\n\n\nexport { SpotLightHelper };\n","import { LineSegments } from '../../objects/LineSegments';\nimport { Matrix4 } from '../../math/Matrix4';\nimport { VertexColors } from '../../constants';\nimport { LineBasicMaterial } from '../../materials/LineBasicMaterial';\nimport { Color } from '../../math/Color';\nimport { Vector3 } from '../../math/Vector3';\nimport { Geometry } from '../../core/Geometry';\n\n/**\n * @author Sean Griffin / http://twitter.com/sgrif\n * @author Michael Guerrero / http://realitymeltdown.com\n * @author mrdoob / http://mrdoob.com/\n * @author ikerr / http://verold.com\n */\n\nfunction SkeletonHelper( object ) {\n\n\tthis.bones = this.getBoneList( object );\n\n\tvar geometry = new Geometry();\n\n\tfor ( var i = 0; i < this.bones.length; i ++ ) {\n\n\t\tvar bone = this.bones[ i ];\n\n\t\tif ( (bone.parent && bone.parent.isBone) ) {\n\n\t\t\tgeometry.vertices.push( new Vector3() );\n\t\t\tgeometry.vertices.push( new Vector3() );\n\t\t\tgeometry.colors.push( new Color( 0, 0, 1 ) );\n\t\t\tgeometry.colors.push( new Color( 0, 1, 0 ) );\n\n\t\t}\n\n\t}\n\n\tgeometry.dynamic = true;\n\n\tvar material = new LineBasicMaterial( { vertexColors: VertexColors, depthTest: false, depthWrite: false, transparent: true } );\n\n\tLineSegments.call( this, geometry, material );\n\n\tthis.root = object;\n\n\tthis.matrix = object.matrixWorld;\n\tthis.matrixAutoUpdate = false;\n\n\tthis.update();\n\n}\n\n\nSkeletonHelper.prototype = Object.create( LineSegments.prototype );\nSkeletonHelper.prototype.constructor = SkeletonHelper;\n\nSkeletonHelper.prototype.getBoneList = function( object ) {\n\n\tvar boneList = [];\n\n\tif ( (object && object.isBone) ) {\n\n\t\tboneList.push( object );\n\n\t}\n\n\tfor ( var i = 0; i < object.children.length; i ++ ) {\n\n\t\tboneList.push.apply( boneList, this.getBoneList( object.children[ i ] ) );\n\n\t}\n\n\treturn boneList;\n\n};\n\nSkeletonHelper.prototype.update = function () {\n\n\tvar geometry = this.geometry;\n\n\tvar matrixWorldInv = new Matrix4().getInverse( this.root.matrixWorld );\n\n\tvar boneMatrix = new Matrix4();\n\n\tvar j = 0;\n\n\tfor ( var i = 0; i < this.bones.length; i ++ ) {\n\n\t\tvar bone = this.bones[ i ];\n\n\t\tif ( (bone.parent && bone.parent.isBone) ) {\n\n\t\t\tboneMatrix.multiplyMatrices( matrixWorldInv, bone.matrixWorld );\n\t\t\tgeometry.vertices[ j ].setFromMatrixPosition( boneMatrix );\n\n\t\t\tboneMatrix.multiplyMatrices( matrixWorldInv, bone.parent.matrixWorld );\n\t\t\tgeometry.vertices[ j + 1 ].setFromMatrixPosition( boneMatrix );\n\n\t\t\tj += 2;\n\n\t\t}\n\n\t}\n\n\tgeometry.verticesNeedUpdate = true;\n\n\tgeometry.computeBoundingSphere();\n\n};\n\n\nexport { SkeletonHelper };\n","import { Mesh } from '../../objects/Mesh';\nimport { MeshBasicMaterial } from '../../materials/MeshBasicMaterial';\nimport { SphereBufferGeometry } from '../../geometries/SphereBufferGeometry';\n\n/**\n * @author alteredq / http://alteredqualia.com/\n * @author mrdoob / http://mrdoob.com/\n */\n\nfunction PointLightHelper( light, sphereSize ) {\n\n\tthis.light = light;\n\tthis.light.updateMatrixWorld();\n\n\tvar geometry = new SphereBufferGeometry( sphereSize, 4, 2 );\n\tvar material = new MeshBasicMaterial( { wireframe: true, fog: false } );\n\tmaterial.color.copy( this.light.color ).multiplyScalar( this.light.intensity );\n\n\tMesh.call( this, geometry, material );\n\n\tthis.matrix = this.light.matrixWorld;\n\tthis.matrixAutoUpdate = false;\n\n\t/*\n\tvar distanceGeometry = new THREE.IcosahedronGeometry( 1, 2 );\n\tvar distanceMaterial = new THREE.MeshBasicMaterial( { color: hexColor, fog: false, wireframe: true, opacity: 0.1, transparent: true } );\n\n\tthis.lightSphere = new THREE.Mesh( bulbGeometry, bulbMaterial );\n\tthis.lightDistance = new THREE.Mesh( distanceGeometry, distanceMaterial );\n\n\tvar d = light.distance;\n\n\tif ( d === 0.0 ) {\n\n\t\tthis.lightDistance.visible = false;\n\n\t} else {\n\n\t\tthis.lightDistance.scale.set( d, d, d );\n\n\t}\n\n\tthis.add( this.lightDistance );\n\t*/\n\n}\n\nPointLightHelper.prototype = Object.create( Mesh.prototype );\nPointLightHelper.prototype.constructor = PointLightHelper;\n\nPointLightHelper.prototype.dispose = function () {\n\n\tthis.geometry.dispose();\n\tthis.material.dispose();\n\n};\n\nPointLightHelper.prototype.update = function () {\n\n\tthis.material.color.copy( this.light.color ).multiplyScalar( this.light.intensity );\n\n\t/*\n\tvar d = this.light.distance;\n\n\tif ( d === 0.0 ) {\n\n\t\tthis.lightDistance.visible = false;\n\n\t} else {\n\n\t\tthis.lightDistance.visible = true;\n\t\tthis.lightDistance.scale.set( d, d, d );\n\n\t}\n\t*/\n\n};\n\n\nexport { PointLightHelper };\n","import { Vector3 } from '../../math/Vector3';\nimport { Object3D } from '../../core/Object3D';\nimport { Mesh } from '../../objects/Mesh';\nimport { FaceColors } from '../../constants';\nimport { MeshBasicMaterial } from '../../materials/MeshBasicMaterial';\nimport { SphereGeometry } from '../../geometries/SphereGeometry';\nimport { Color } from '../../math/Color';\n\n/**\n * @author alteredq / http://alteredqualia.com/\n * @author mrdoob / http://mrdoob.com/\n */\n\nfunction HemisphereLightHelper( light, sphereSize ) {\n\n\tObject3D.call( this );\n\n\tthis.light = light;\n\tthis.light.updateMatrixWorld();\n\n\tthis.matrix = light.matrixWorld;\n\tthis.matrixAutoUpdate = false;\n\n\tthis.colors = [ new Color(), new Color() ];\n\n\tvar geometry = new SphereGeometry( sphereSize, 4, 2 );\n\tgeometry.rotateX( - Math.PI / 2 );\n\n\tfor ( var i = 0, il = 8; i < il; i ++ ) {\n\n\t\tgeometry.faces[ i ].color = this.colors[ i < 4 ? 0 : 1 ];\n\n\t}\n\n\tvar material = new MeshBasicMaterial( { vertexColors: FaceColors, wireframe: true } );\n\n\tthis.lightSphere = new Mesh( geometry, material );\n\tthis.add( this.lightSphere );\n\n\tthis.update();\n\n}\n\nHemisphereLightHelper.prototype = Object.create( Object3D.prototype );\nHemisphereLightHelper.prototype.constructor = HemisphereLightHelper;\n\nHemisphereLightHelper.prototype.dispose = function () {\n\n\tthis.lightSphere.geometry.dispose();\n\tthis.lightSphere.material.dispose();\n\n};\n\nHemisphereLightHelper.prototype.update = function () {\n\n\tvar vector = new Vector3();\n\n\treturn function update() {\n\n\t\tthis.colors[ 0 ].copy( this.light.color ).multiplyScalar( this.light.intensity );\n\t\tthis.colors[ 1 ].copy( this.light.groundColor ).multiplyScalar( this.light.intensity );\n\n\t\tthis.lightSphere.lookAt( vector.setFromMatrixPosition( this.light.matrixWorld ).negate() );\n\t\tthis.lightSphere.geometry.colorsNeedUpdate = true;\n\n\t};\n\n}();\n\n\nexport { HemisphereLightHelper };\n","import { LineSegments } from '../../objects/LineSegments';\nimport { VertexColors } from '../../constants';\nimport { LineBasicMaterial } from '../../materials/LineBasicMaterial';\nimport { Float32Attribute } from '../../core/BufferAttribute';\nimport { BufferGeometry } from '../../core/BufferGeometry';\nimport { Color } from '../../math/Color';\n\n/**\n * @author mrdoob / http://mrdoob.com/\n */\n\nfunction GridHelper( size, divisions, color1, color2 ) {\n\n\tdivisions = divisions || 1;\n\tcolor1 = new Color( color1 !== undefined ? color1 : 0x444444 );\n\tcolor2 = new Color( color2 !== undefined ? color2 : 0x888888 );\n\n\tvar center = divisions / 2;\n\tvar step = ( size * 2 ) / divisions;\n\tvar vertices = [], colors = [];\n\n\tfor ( var i = 0, j = 0, k = - size; i <= divisions; i ++, k += step ) {\n\n\t\tvertices.push( - size, 0, k, size, 0, k );\n\t\tvertices.push( k, 0, - size, k, 0, size );\n\n\t\tvar color = i === center ? color1 : color2;\n\n\t\tcolor.toArray( colors, j ); j += 3;\n\t\tcolor.toArray( colors, j ); j += 3;\n\t\tcolor.toArray( colors, j ); j += 3;\n\t\tcolor.toArray( colors, j ); j += 3;\n\n\t}\n\n\tvar geometry = new BufferGeometry();\n\tgeometry.addAttribute( 'position', new Float32Attribute( vertices, 3 ) );\n\tgeometry.addAttribute( 'color', new Float32Attribute( colors, 3 ) );\n\n\tvar material = new LineBasicMaterial( { vertexColors: VertexColors } );\n\n\tLineSegments.call( this, geometry, material );\n\n}\n\nGridHelper.prototype = Object.create( LineSegments.prototype );\nGridHelper.prototype.constructor = GridHelper;\n\nGridHelper.prototype.setColors = function () {\n\n\tconsole.error( 'THREE.GridHelper: setColors() has been deprecated, pass them in the constructor instead.' );\n\n};\n\n\nexport { GridHelper };\n","import { Matrix3 } from '../../math/Matrix3';\nimport { Vector3 } from '../../math/Vector3';\nimport { LineSegments } from '../../objects/LineSegments';\nimport { LineBasicMaterial } from '../../materials/LineBasicMaterial';\nimport { Float32Attribute } from '../../core/BufferAttribute';\nimport { BufferGeometry } from '../../core/BufferGeometry';\n\n/**\n * @author mrdoob / http://mrdoob.com/\n * @author WestLangley / http://github.com/WestLangley\n*/\n\nfunction FaceNormalsHelper( object, size, hex, linewidth ) {\n\n\t// FaceNormalsHelper only supports THREE.Geometry\n\n\tthis.object = object;\n\n\tthis.size = ( size !== undefined ) ? size : 1;\n\n\tvar color = ( hex !== undefined ) ? hex : 0xffff00;\n\n\tvar width = ( linewidth !== undefined ) ? linewidth : 1;\n\n\t//\n\n\tvar nNormals = 0;\n\n\tvar objGeometry = this.object.geometry;\n\n\tif ( (objGeometry && objGeometry.isGeometry) ) {\n\n\t\tnNormals = objGeometry.faces.length;\n\n\t} else {\n\n\t\tconsole.warn( 'THREE.FaceNormalsHelper: only THREE.Geometry is supported. Use THREE.VertexNormalsHelper, instead.' );\n\n\t}\n\n\t//\n\n\tvar geometry = new BufferGeometry();\n\n\tvar positions = new Float32Attribute( nNormals * 2 * 3, 3 );\n\n\tgeometry.addAttribute( 'position', positions );\n\n\tLineSegments.call( this, geometry, new LineBasicMaterial( { color: color, linewidth: width } ) );\n\n\t//\n\n\tthis.matrixAutoUpdate = false;\n\tthis.update();\n\n}\n\nFaceNormalsHelper.prototype = Object.create( LineSegments.prototype );\nFaceNormalsHelper.prototype.constructor = FaceNormalsHelper;\n\nFaceNormalsHelper.prototype.update = ( function () {\n\n\tvar v1 = new Vector3();\n\tvar v2 = new Vector3();\n\tvar normalMatrix = new Matrix3();\n\n\treturn function update() {\n\n\t\tthis.object.updateMatrixWorld( true );\n\n\t\tnormalMatrix.getNormalMatrix( this.object.matrixWorld );\n\n\t\tvar matrixWorld = this.object.matrixWorld;\n\n\t\tvar position = this.geometry.attributes.position;\n\n\t\t//\n\n\t\tvar objGeometry = this.object.geometry;\n\n\t\tvar vertices = objGeometry.vertices;\n\n\t\tvar faces = objGeometry.faces;\n\n\t\tvar idx = 0;\n\n\t\tfor ( var i = 0, l = faces.length; i < l; i ++ ) {\n\n\t\t\tvar face = faces[ i ];\n\n\t\t\tvar normal = face.normal;\n\n\t\t\tv1.copy( vertices[ face.a ] )\n\t\t\t\t.add( vertices[ face.b ] )\n\t\t\t\t.add( vertices[ face.c ] )\n\t\t\t\t.divideScalar( 3 )\n\t\t\t\t.applyMatrix4( matrixWorld );\n\n\t\t\tv2.copy( normal ).applyMatrix3( normalMatrix ).normalize().multiplyScalar( this.size ).add( v1 );\n\n\t\t\tposition.setXYZ( idx, v1.x, v1.y, v1.z );\n\n\t\t\tidx = idx + 1;\n\n\t\t\tposition.setXYZ( idx, v2.x, v2.y, v2.z );\n\n\t\t\tidx = idx + 1;\n\n\t\t}\n\n\t\tposition.needsUpdate = true;\n\n\t\treturn this;\n\n\t};\n\n}() );\n\n\nexport { FaceNormalsHelper };\n","import { Vector3 } from '../../math/Vector3';\nimport { Object3D } from '../../core/Object3D';\nimport { Line } from '../../objects/Line';\nimport { Float32Attribute } from '../../core/BufferAttribute';\nimport { BufferGeometry } from '../../core/BufferGeometry';\nimport { LineBasicMaterial } from '../../materials/LineBasicMaterial';\n\n/**\n * @author alteredq / http://alteredqualia.com/\n * @author mrdoob / http://mrdoob.com/\n * @author WestLangley / http://github.com/WestLangley\n */\n\nfunction DirectionalLightHelper( light, size ) {\n\n\tObject3D.call( this );\n\n\tthis.light = light;\n\tthis.light.updateMatrixWorld();\n\n\tthis.matrix = light.matrixWorld;\n\tthis.matrixAutoUpdate = false;\n\n\tif ( size === undefined ) size = 1;\n\n\tvar geometry = new BufferGeometry();\n\tgeometry.addAttribute( 'position', new Float32Attribute( [\n\t\t- size, size, 0,\n\t\t size, size, 0,\n\t\t size, - size, 0,\n\t\t- size, - size, 0,\n\t\t- size, size, 0\n\t], 3 ) );\n\n\tvar material = new LineBasicMaterial( { fog: false } );\n\n\tthis.add( new Line( geometry, material ) );\n\n\tgeometry = new BufferGeometry();\n\tgeometry.addAttribute( 'position', new Float32Attribute( [ 0, 0, 0, 0, 0, 1 ], 3 ) );\n\n\tthis.add( new Line( geometry, material ));\n\n\tthis.update();\n\n}\n\nDirectionalLightHelper.prototype = Object.create( Object3D.prototype );\nDirectionalLightHelper.prototype.constructor = DirectionalLightHelper;\n\nDirectionalLightHelper.prototype.dispose = function () {\n\n\tvar lightPlane = this.children[ 0 ];\n\tvar targetLine = this.children[ 1 ];\n\n\tlightPlane.geometry.dispose();\n\tlightPlane.material.dispose();\n\ttargetLine.geometry.dispose();\n\ttargetLine.material.dispose();\n\n};\n\nDirectionalLightHelper.prototype.update = function () {\n\n\tvar v1 = new Vector3();\n\tvar v2 = new Vector3();\n\tvar v3 = new Vector3();\n\n\treturn function update() {\n\n\t\tv1.setFromMatrixPosition( this.light.matrixWorld );\n\t\tv2.setFromMatrixPosition( this.light.target.matrixWorld );\n\t\tv3.subVectors( v2, v1 );\n\n\t\tvar lightPlane = this.children[ 0 ];\n\t\tvar targetLine = this.children[ 1 ];\n\n\t\tlightPlane.lookAt( v3 );\n\t\tlightPlane.material.color.copy( this.light.color ).multiplyScalar( this.light.intensity );\n\n\t\ttargetLine.lookAt( v3 );\n\t\ttargetLine.scale.z = v3.length();\n\n\t};\n\n}();\n\n\nexport { DirectionalLightHelper };\n","import { Camera } from '../../cameras/Camera';\nimport { Vector3 } from '../../math/Vector3';\nimport { LineSegments } from '../../objects/LineSegments';\nimport { Color } from '../../math/Color';\nimport { FaceColors } from '../../constants';\nimport { LineBasicMaterial } from '../../materials/LineBasicMaterial';\nimport { Geometry } from '../../core/Geometry';\n\n/**\n * @author alteredq / http://alteredqualia.com/\n *\n *\t- shows frustum, line of sight and up of the camera\n *\t- suitable for fast updates\n * \t- based on frustum visualization in lightgl.js shadowmap example\n *\t\thttp://evanw.github.com/lightgl.js/tests/shadowmap.html\n */\n\nfunction CameraHelper( camera ) {\n\n\tvar geometry = new Geometry();\n\tvar material = new LineBasicMaterial( { color: 0xffffff, vertexColors: FaceColors } );\n\n\tvar pointMap = {};\n\n\t// colors\n\n\tvar hexFrustum = 0xffaa00;\n\tvar hexCone = 0xff0000;\n\tvar hexUp = 0x00aaff;\n\tvar hexTarget = 0xffffff;\n\tvar hexCross = 0x333333;\n\n\t// near\n\n\taddLine( \"n1\", \"n2\", hexFrustum );\n\taddLine( \"n2\", \"n4\", hexFrustum );\n\taddLine( \"n4\", \"n3\", hexFrustum );\n\taddLine( \"n3\", \"n1\", hexFrustum );\n\n\t// far\n\n\taddLine( \"f1\", \"f2\", hexFrustum );\n\taddLine( \"f2\", \"f4\", hexFrustum );\n\taddLine( \"f4\", \"f3\", hexFrustum );\n\taddLine( \"f3\", \"f1\", hexFrustum );\n\n\t// sides\n\n\taddLine( \"n1\", \"f1\", hexFrustum );\n\taddLine( \"n2\", \"f2\", hexFrustum );\n\taddLine( \"n3\", \"f3\", hexFrustum );\n\taddLine( \"n4\", \"f4\", hexFrustum );\n\n\t// cone\n\n\taddLine( \"p\", \"n1\", hexCone );\n\taddLine( \"p\", \"n2\", hexCone );\n\taddLine( \"p\", \"n3\", hexCone );\n\taddLine( \"p\", \"n4\", hexCone );\n\n\t// up\n\n\taddLine( \"u1\", \"u2\", hexUp );\n\taddLine( \"u2\", \"u3\", hexUp );\n\taddLine( \"u3\", \"u1\", hexUp );\n\n\t// target\n\n\taddLine( \"c\", \"t\", hexTarget );\n\taddLine( \"p\", \"c\", hexCross );\n\n\t// cross\n\n\taddLine( \"cn1\", \"cn2\", hexCross );\n\taddLine( \"cn3\", \"cn4\", hexCross );\n\n\taddLine( \"cf1\", \"cf2\", hexCross );\n\taddLine( \"cf3\", \"cf4\", hexCross );\n\n\tfunction addLine( a, b, hex ) {\n\n\t\taddPoint( a, hex );\n\t\taddPoint( b, hex );\n\n\t}\n\n\tfunction addPoint( id, hex ) {\n\n\t\tgeometry.vertices.push( new Vector3() );\n\t\tgeometry.colors.push( new Color( hex ) );\n\n\t\tif ( pointMap[ id ] === undefined ) {\n\n\t\t\tpointMap[ id ] = [];\n\n\t\t}\n\n\t\tpointMap[ id ].push( geometry.vertices.length - 1 );\n\n\t}\n\n\tLineSegments.call( this, geometry, material );\n\n\tthis.camera = camera;\n\tif( this.camera.updateProjectionMatrix ) this.camera.updateProjectionMatrix();\n\n\tthis.matrix = camera.matrixWorld;\n\tthis.matrixAutoUpdate = false;\n\n\tthis.pointMap = pointMap;\n\n\tthis.update();\n\n}\n\nCameraHelper.prototype = Object.create( LineSegments.prototype );\nCameraHelper.prototype.constructor = CameraHelper;\n\nCameraHelper.prototype.update = function () {\n\n\tvar geometry, pointMap;\n\n\tvar vector = new Vector3();\n\tvar camera = new Camera();\n\n\tfunction setPoint( point, x, y, z ) {\n\n\t\tvector.set( x, y, z ).unproject( camera );\n\n\t\tvar points = pointMap[ point ];\n\n\t\tif ( points !== undefined ) {\n\n\t\t\tfor ( var i = 0, il = points.length; i < il; i ++ ) {\n\n\t\t\t\tgeometry.vertices[ points[ i ] ].copy( vector );\n\n\t\t\t}\n\n\t\t}\n\n\t}\n\n\treturn function update() {\n\n\t\tgeometry = this.geometry;\n\t\tpointMap = this.pointMap;\n\n\t\tvar w = 1, h = 1;\n\n\t\t// we need just camera projection matrix\n\t\t// world matrix must be identity\n\n\t\tcamera.projectionMatrix.copy( this.camera.projectionMatrix );\n\n\t\t// center / target\n\n\t\tsetPoint( \"c\", 0, 0, - 1 );\n\t\tsetPoint( \"t\", 0, 0, 1 );\n\n\t\t// near\n\n\t\tsetPoint( \"n1\", - w, - h, - 1 );\n\t\tsetPoint( \"n2\", w, - h, - 1 );\n\t\tsetPoint( \"n3\", - w, h, - 1 );\n\t\tsetPoint( \"n4\", w, h, - 1 );\n\n\t\t// far\n\n\t\tsetPoint( \"f1\", - w, - h, 1 );\n\t\tsetPoint( \"f2\", w, - h, 1 );\n\t\tsetPoint( \"f3\", - w, h, 1 );\n\t\tsetPoint( \"f4\", w, h, 1 );\n\n\t\t// up\n\n\t\tsetPoint( \"u1\", w * 0.7, h * 1.1, - 1 );\n\t\tsetPoint( \"u2\", - w * 0.7, h * 1.1, - 1 );\n\t\tsetPoint( \"u3\", 0, h * 2, - 1 );\n\n\t\t// cross\n\n\t\tsetPoint( \"cf1\", - w, 0, 1 );\n\t\tsetPoint( \"cf2\", w, 0, 1 );\n\t\tsetPoint( \"cf3\", 0, - h, 1 );\n\t\tsetPoint( \"cf4\", 0, h, 1 );\n\n\t\tsetPoint( \"cn1\", - w, 0, - 1 );\n\t\tsetPoint( \"cn2\", w, 0, - 1 );\n\t\tsetPoint( \"cn3\", 0, - h, - 1 );\n\t\tsetPoint( \"cn4\", 0, h, - 1 );\n\n\t\tgeometry.verticesNeedUpdate = true;\n\n\t};\n\n}();\n\n\nexport { CameraHelper };\n","import { Mesh } from '../../objects/Mesh';\nimport { MeshBasicMaterial } from '../../materials/MeshBasicMaterial';\nimport { BoxGeometry } from '../../geometries/BoxGeometry';\nimport { Box3 } from '../../math/Box3';\n\n/**\n * @author WestLangley / http://github.com/WestLangley\n */\n\n// a helper to show the world-axis-aligned bounding box for an object\n\nfunction BoundingBoxHelper( object, hex ) {\n\n\tvar color = ( hex !== undefined ) ? hex : 0x888888;\n\n\tthis.object = object;\n\n\tthis.box = new Box3();\n\n\tMesh.call( this, new BoxGeometry( 1, 1, 1 ), new MeshBasicMaterial( { color: color, wireframe: true } ) );\n\n}\n\nBoundingBoxHelper.prototype = Object.create( Mesh.prototype );\nBoundingBoxHelper.prototype.constructor = BoundingBoxHelper;\n\nBoundingBoxHelper.prototype.update = function () {\n\n\tthis.box.setFromObject( this.object );\n\n\tthis.box.getSize( this.scale );\n\n\tthis.box.getCenter( this.position );\n\n};\n\n\nexport { BoundingBoxHelper };\n","import { Box3 } from '../../math/Box3';\nimport { LineSegments } from '../../objects/LineSegments';\nimport { LineBasicMaterial } from '../../materials/LineBasicMaterial';\nimport { BufferAttribute } from '../../core/BufferAttribute';\nimport { BufferGeometry } from '../../core/BufferGeometry';\n\n/**\n * @author mrdoob / http://mrdoob.com/\n */\n\nfunction BoxHelper( object, color ) {\n\n\tif ( color === undefined ) color = 0xffff00;\n\n\tvar indices = new Uint16Array( [ 0, 1, 1, 2, 2, 3, 3, 0, 4, 5, 5, 6, 6, 7, 7, 4, 0, 4, 1, 5, 2, 6, 3, 7 ] );\n\tvar positions = new Float32Array( 8 * 3 );\n\n\tvar geometry = new BufferGeometry();\n\tgeometry.setIndex( new BufferAttribute( indices, 1 ) );\n\tgeometry.addAttribute( 'position', new BufferAttribute( positions, 3 ) );\n\n\tLineSegments.call( this, geometry, new LineBasicMaterial( { color: color } ) );\n\n\tif ( object !== undefined ) {\n\n\t\tthis.update( object );\n\n\t}\n\n}\n\nBoxHelper.prototype = Object.create( LineSegments.prototype );\nBoxHelper.prototype.constructor = BoxHelper;\n\nBoxHelper.prototype.update = ( function () {\n\n\tvar box = new Box3();\n\n\treturn function update( object ) {\n\n\t\tif ( (object && object.isBox3) ) {\n\n\t\t\tbox.copy( object );\n\n\t\t} else {\n\n\t\t\tbox.setFromObject( object );\n\n\t\t}\n\n\t\tif ( box.isEmpty() ) return;\n\n\t\tvar min = box.min;\n\t\tvar max = box.max;\n\n\t\t/*\n\t\t 5____4\n\t\t1/___0/|\n\t\t| 6__|_7\n\t\t2/___3/\n\n\t\t0: max.x, max.y, max.z\n\t\t1: min.x, max.y, max.z\n\t\t2: min.x, min.y, max.z\n\t\t3: max.x, min.y, max.z\n\t\t4: max.x, max.y, min.z\n\t\t5: min.x, max.y, min.z\n\t\t6: min.x, min.y, min.z\n\t\t7: max.x, min.y, min.z\n\t\t*/\n\n\t\tvar position = this.geometry.attributes.position;\n\t\tvar array = position.array;\n\n\t\tarray[ 0 ] = max.x; array[ 1 ] = max.y; array[ 2 ] = max.z;\n\t\tarray[ 3 ] = min.x; array[ 4 ] = max.y; array[ 5 ] = max.z;\n\t\tarray[ 6 ] = min.x; array[ 7 ] = min.y; array[ 8 ] = max.z;\n\t\tarray[ 9 ] = max.x; array[ 10 ] = min.y; array[ 11 ] = max.z;\n\t\tarray[ 12 ] = max.x; array[ 13 ] = max.y; array[ 14 ] = min.z;\n\t\tarray[ 15 ] = min.x; array[ 16 ] = max.y; array[ 17 ] = min.z;\n\t\tarray[ 18 ] = min.x; array[ 19 ] = min.y; array[ 20 ] = min.z;\n\t\tarray[ 21 ] = max.x; array[ 22 ] = min.y; array[ 23 ] = min.z;\n\n\t\tposition.needsUpdate = true;\n\n\t\tthis.geometry.computeBoundingSphere();\n\n\t};\n\n} )();\n\n\nexport { BoxHelper };\n","/**\n * @author WestLangley / http://github.com/WestLangley\n * @author zz85 / http://github.com/zz85\n * @author bhouston / http://clara.io\n *\n * Creates an arrow for visualizing directions\n *\n * Parameters:\n * dir - Vector3\n * origin - Vector3\n * length - Number\n * color - color in hex value\n * headLength - Number\n * headWidth - Number\n */\n\nimport { Vector3 } from '../../math/Vector3';\nimport { Object3D } from '../../core/Object3D';\nimport { CylinderBufferGeometry } from '../../geometries/CylinderBufferGeometry';\nimport { Float32Attribute } from '../../core/BufferAttribute';\nimport { BufferGeometry } from '../../core/BufferGeometry';\nimport { MeshBasicMaterial } from '../../materials/MeshBasicMaterial';\nimport { Mesh } from '../../objects/Mesh';\nimport { LineBasicMaterial } from '../../materials/LineBasicMaterial';\nimport { Line } from '../../objects/Line';\n\nvar lineGeometry = new BufferGeometry();\nlineGeometry.addAttribute( 'position', new Float32Attribute( [ 0, 0, 0, 0, 1, 0 ], 3 ) );\n\nvar coneGeometry = new CylinderBufferGeometry( 0, 0.5, 1, 5, 1 );\nconeGeometry.translate( 0, - 0.5, 0 );\n\nfunction ArrowHelper( dir, origin, length, color, headLength, headWidth ) {\n\n\t// dir is assumed to be normalized\n\n\tObject3D.call( this );\n\n\tif ( color === undefined ) color = 0xffff00;\n\tif ( length === undefined ) length = 1;\n\tif ( headLength === undefined ) headLength = 0.2 * length;\n\tif ( headWidth === undefined ) headWidth = 0.2 * headLength;\n\n\tthis.position.copy( origin );\n\n\tthis.line = new Line( lineGeometry, new LineBasicMaterial( { color: color } ) );\n\tthis.line.matrixAutoUpdate = false;\n\tthis.add( this.line );\n\n\tthis.cone = new Mesh( coneGeometry, new MeshBasicMaterial( { color: color } ) );\n\tthis.cone.matrixAutoUpdate = false;\n\tthis.add( this.cone );\n\n\tthis.setDirection( dir );\n\tthis.setLength( length, headLength, headWidth );\n\n}\n\nArrowHelper.prototype = Object.create( Object3D.prototype );\nArrowHelper.prototype.constructor = ArrowHelper;\n\nArrowHelper.prototype.setDirection = ( function () {\n\n\tvar axis = new Vector3();\n\tvar radians;\n\n\treturn function setDirection( dir ) {\n\n\t\t// dir is assumed to be normalized\n\n\t\tif ( dir.y > 0.99999 ) {\n\n\t\t\tthis.quaternion.set( 0, 0, 0, 1 );\n\n\t\t} else if ( dir.y < - 0.99999 ) {\n\n\t\t\tthis.quaternion.set( 1, 0, 0, 0 );\n\n\t\t} else {\n\n\t\t\taxis.set( dir.z, 0, - dir.x ).normalize();\n\n\t\t\tradians = Math.acos( dir.y );\n\n\t\t\tthis.quaternion.setFromAxisAngle( axis, radians );\n\n\t\t}\n\n\t};\n\n}() );\n\nArrowHelper.prototype.setLength = function ( length, headLength, headWidth ) {\n\n\tif ( headLength === undefined ) headLength = 0.2 * length;\n\tif ( headWidth === undefined ) headWidth = 0.2 * headLength;\n\n\tthis.line.scale.set( 1, Math.max( 0, length - headLength ), 1 );\n\tthis.line.updateMatrix();\n\n\tthis.cone.scale.set( headWidth, headLength, headWidth );\n\tthis.cone.position.y = length;\n\tthis.cone.updateMatrix();\n\n};\n\nArrowHelper.prototype.setColor = function ( color ) {\n\n\tthis.line.material.color.copy( color );\n\tthis.cone.material.color.copy( color );\n\n};\n\n\nexport { ArrowHelper };\n","import { LineSegments } from '../../objects/LineSegments';\nimport { VertexColors } from '../../constants';\nimport { LineBasicMaterial } from '../../materials/LineBasicMaterial';\nimport { BufferAttribute } from '../../core/BufferAttribute';\nimport { BufferGeometry } from '../../core/BufferGeometry';\n\n/**\n * @author sroucheray / http://sroucheray.org/\n * @author mrdoob / http://mrdoob.com/\n */\n\nfunction AxisHelper( size ) {\n\n\tsize = size || 1;\n\n\tvar vertices = new Float32Array( [\n\t\t0, 0, 0, size, 0, 0,\n\t\t0, 0, 0, 0, size, 0,\n\t\t0, 0, 0, 0, 0, size\n\t] );\n\n\tvar colors = new Float32Array( [\n\t\t1, 0, 0, 1, 0.6, 0,\n\t\t0, 1, 0, 0.6, 1, 0,\n\t\t0, 0, 1, 0, 0.6, 1\n\t] );\n\n\tvar geometry = new BufferGeometry();\n\tgeometry.addAttribute( 'position', new BufferAttribute( vertices, 3 ) );\n\tgeometry.addAttribute( 'color', new BufferAttribute( colors, 3 ) );\n\n\tvar material = new LineBasicMaterial( { vertexColors: VertexColors } );\n\n\tLineSegments.call( this, geometry, material );\n\n}\n\nAxisHelper.prototype = Object.create( LineSegments.prototype );\nAxisHelper.prototype.constructor = AxisHelper;\n\n\nexport { AxisHelper };\n","import { Vector3 } from '../../math/Vector3';\nimport { Curve } from '../core/Curve';\n\n/**\n * @author zz85 https://github.com/zz85\n *\n * Centripetal CatmullRom Curve - which is useful for avoiding\n * cusps and self-intersections in non-uniform catmull rom curves.\n * http://www.cemyuksel.com/research/catmullrom_param/catmullrom.pdf\n *\n * curve.type accepts centripetal(default), chordal and catmullrom\n * curve.tension is used for catmullrom which defaults to 0.5\n */\n\nvar CatmullRomCurve3 = ( function() {\n\n\tvar\n\t\ttmp = new Vector3(),\n\t\tpx = new CubicPoly(),\n\t\tpy = new CubicPoly(),\n\t\tpz = new CubicPoly();\n\n\t/*\n\tBased on an optimized c++ solution in\n\t - http://stackoverflow.com/questions/9489736/catmull-rom-curve-with-no-cusps-and-no-self-intersections/\n\t - http://ideone.com/NoEbVM\n\n\tThis CubicPoly class could be used for reusing some variables and calculations,\n\tbut for three.js curve use, it could be possible inlined and flatten into a single function call\n\twhich can be placed in CurveUtils.\n\t*/\n\n\tfunction CubicPoly() {}\n\n\t/*\n\t * Compute coefficients for a cubic polynomial\n\t * p(s) = c0 + c1*s + c2*s^2 + c3*s^3\n\t * such that\n\t * p(0) = x0, p(1) = x1\n\t * and\n\t * p'(0) = t0, p'(1) = t1.\n\t */\n\tCubicPoly.prototype.init = function( x0, x1, t0, t1 ) {\n\n\t\tthis.c0 = x0;\n\t\tthis.c1 = t0;\n\t\tthis.c2 = - 3 * x0 + 3 * x1 - 2 * t0 - t1;\n\t\tthis.c3 = 2 * x0 - 2 * x1 + t0 + t1;\n\n\t};\n\n\tCubicPoly.prototype.initNonuniformCatmullRom = function( x0, x1, x2, x3, dt0, dt1, dt2 ) {\n\n\t\t// compute tangents when parameterized in [t1,t2]\n\t\tvar t1 = ( x1 - x0 ) / dt0 - ( x2 - x0 ) / ( dt0 + dt1 ) + ( x2 - x1 ) / dt1;\n\t\tvar t2 = ( x2 - x1 ) / dt1 - ( x3 - x1 ) / ( dt1 + dt2 ) + ( x3 - x2 ) / dt2;\n\n\t\t// rescale tangents for parametrization in [0,1]\n\t\tt1 *= dt1;\n\t\tt2 *= dt1;\n\n\t\t// initCubicPoly\n\t\tthis.init( x1, x2, t1, t2 );\n\n\t};\n\n\t// standard Catmull-Rom spline: interpolate between x1 and x2 with previous/following points x1/x4\n\tCubicPoly.prototype.initCatmullRom = function( x0, x1, x2, x3, tension ) {\n\n\t\tthis.init( x1, x2, tension * ( x2 - x0 ), tension * ( x3 - x1 ) );\n\n\t};\n\n\tCubicPoly.prototype.calc = function( t ) {\n\n\t\tvar t2 = t * t;\n\t\tvar t3 = t2 * t;\n\t\treturn this.c0 + this.c1 * t + this.c2 * t2 + this.c3 * t3;\n\n\t};\n\n\t// Subclass Three.js curve\n\treturn Curve.create(\n\n\t\tfunction ( p /* array of Vector3 */ ) {\n\n\t\t\tthis.points = p || [];\n\t\t\tthis.closed = false;\n\n\t\t},\n\n\t\tfunction ( t ) {\n\n\t\t\tvar points = this.points,\n\t\t\t\tpoint, intPoint, weight, l;\n\n\t\t\tl = points.length;\n\n\t\t\tif ( l < 2 ) console.log( 'duh, you need at least 2 points' );\n\n\t\t\tpoint = ( l - ( this.closed ? 0 : 1 ) ) * t;\n\t\t\tintPoint = Math.floor( point );\n\t\t\tweight = point - intPoint;\n\n\t\t\tif ( this.closed ) {\n\n\t\t\t\tintPoint += intPoint > 0 ? 0 : ( Math.floor( Math.abs( intPoint ) / points.length ) + 1 ) * points.length;\n\n\t\t\t} else if ( weight === 0 && intPoint === l - 1 ) {\n\n\t\t\t\tintPoint = l - 2;\n\t\t\t\tweight = 1;\n\n\t\t\t}\n\n\t\t\tvar p0, p1, p2, p3; // 4 points\n\n\t\t\tif ( this.closed || intPoint > 0 ) {\n\n\t\t\t\tp0 = points[ ( intPoint - 1 ) % l ];\n\n\t\t\t} else {\n\n\t\t\t\t// extrapolate first point\n\t\t\t\ttmp.subVectors( points[ 0 ], points[ 1 ] ).add( points[ 0 ] );\n\t\t\t\tp0 = tmp;\n\n\t\t\t}\n\n\t\t\tp1 = points[ intPoint % l ];\n\t\t\tp2 = points[ ( intPoint + 1 ) % l ];\n\n\t\t\tif ( this.closed || intPoint + 2 < l ) {\n\n\t\t\t\tp3 = points[ ( intPoint + 2 ) % l ];\n\n\t\t\t} else {\n\n\t\t\t\t// extrapolate last point\n\t\t\t\ttmp.subVectors( points[ l - 1 ], points[ l - 2 ] ).add( points[ l - 1 ] );\n\t\t\t\tp3 = tmp;\n\n\t\t\t}\n\n\t\t\tif ( this.type === undefined || this.type === 'centripetal' || this.type === 'chordal' ) {\n\n\t\t\t\t// init Centripetal / Chordal Catmull-Rom\n\t\t\t\tvar pow = this.type === 'chordal' ? 0.5 : 0.25;\n\t\t\t\tvar dt0 = Math.pow( p0.distanceToSquared( p1 ), pow );\n\t\t\t\tvar dt1 = Math.pow( p1.distanceToSquared( p2 ), pow );\n\t\t\t\tvar dt2 = Math.pow( p2.distanceToSquared( p3 ), pow );\n\n\t\t\t\t// safety check for repeated points\n\t\t\t\tif ( dt1 < 1e-4 ) dt1 = 1.0;\n\t\t\t\tif ( dt0 < 1e-4 ) dt0 = dt1;\n\t\t\t\tif ( dt2 < 1e-4 ) dt2 = dt1;\n\n\t\t\t\tpx.initNonuniformCatmullRom( p0.x, p1.x, p2.x, p3.x, dt0, dt1, dt2 );\n\t\t\t\tpy.initNonuniformCatmullRom( p0.y, p1.y, p2.y, p3.y, dt0, dt1, dt2 );\n\t\t\t\tpz.initNonuniformCatmullRom( p0.z, p1.z, p2.z, p3.z, dt0, dt1, dt2 );\n\n\t\t\t} else if ( this.type === 'catmullrom' ) {\n\n\t\t\t\tvar tension = this.tension !== undefined ? this.tension : 0.5;\n\t\t\t\tpx.initCatmullRom( p0.x, p1.x, p2.x, p3.x, tension );\n\t\t\t\tpy.initCatmullRom( p0.y, p1.y, p2.y, p3.y, tension );\n\t\t\t\tpz.initCatmullRom( p0.z, p1.z, p2.z, p3.z, tension );\n\n\t\t\t}\n\n\t\t\tvar v = new Vector3(\n\t\t\t\tpx.calc( weight ),\n\t\t\t\tpy.calc( weight ),\n\t\t\t\tpz.calc( weight )\n\t\t\t);\n\n\t\t\treturn v;\n\n\t\t}\n\n\t);\n\n} )();\n\n\nexport { CatmullRomCurve3 };\n","import { CatmullRomCurve3 } from './CatmullRomCurve3';\n\n/**************************************************************\n *\tClosed Spline 3D curve\n **************************************************************/\n\n\nfunction ClosedSplineCurve3( points ) {\n\n\tconsole.warn( 'THREE.ClosedSplineCurve3 has been deprecated. Please use THREE.CatmullRomCurve3.' );\n\n\tCatmullRomCurve3.call( this, points );\n\tthis.type = 'catmullrom';\n\tthis.closed = true;\n\n}\n\nClosedSplineCurve3.prototype = Object.create( CatmullRomCurve3.prototype );\n\n\nexport { ClosedSplineCurve3 };\n","import { Vector3 } from '../../math/Vector3';\nimport { CurveUtils } from '../CurveUtils';\nimport { Curve } from '../core/Curve';\n\n/**************************************************************\n *\tSpline 3D curve\n **************************************************************/\n\n\nvar SplineCurve3 = Curve.create(\n\n\tfunction ( points /* array of Vector3 */ ) {\n\n\t\tconsole.warn( 'THREE.SplineCurve3 will be deprecated. Please use THREE.CatmullRomCurve3' );\n\t\tthis.points = ( points === undefined ) ? [] : points;\n\n\t},\n\n\tfunction ( t ) {\n\n\t\tvar points = this.points;\n\t\tvar point = ( points.length - 1 ) * t;\n\n\t\tvar intPoint = Math.floor( point );\n\t\tvar weight = point - intPoint;\n\n\t\tvar point0 = points[ intPoint == 0 ? intPoint : intPoint - 1 ];\n\t\tvar point1 = points[ intPoint ];\n\t\tvar point2 = points[ intPoint > points.length - 2 ? points.length - 1 : intPoint + 1 ];\n\t\tvar point3 = points[ intPoint > points.length - 3 ? points.length - 1 : intPoint + 2 ];\n\n\t\tvar interpolate = CurveUtils.interpolate;\n\n\t\treturn new Vector3(\n\t\t\tinterpolate( point0.x, point1.x, point2.x, point3.x, weight ),\n\t\t\tinterpolate( point0.y, point1.y, point2.y, point3.y, weight ),\n\t\t\tinterpolate( point0.z, point1.z, point2.z, point3.z, weight )\n\t\t);\n\n\t}\n\n);\n\n\nexport { SplineCurve3 };\n","import { Vector3 } from '../../math/Vector3';\nimport { ShapeUtils } from '../ShapeUtils';\nimport { Curve } from '../core/Curve';\n\n/**************************************************************\n *\tCubic Bezier 3D curve\n **************************************************************/\n\nvar CubicBezierCurve3 = Curve.create(\n\n\tfunction ( v0, v1, v2, v3 ) {\n\n\t\tthis.v0 = v0;\n\t\tthis.v1 = v1;\n\t\tthis.v2 = v2;\n\t\tthis.v3 = v3;\n\n\t},\n\n\tfunction ( t ) {\n\n\t\tvar b3 = ShapeUtils.b3;\n\n\t\treturn new Vector3(\n\t\t\tb3( t, this.v0.x, this.v1.x, this.v2.x, this.v3.x ),\n\t\t\tb3( t, this.v0.y, this.v1.y, this.v2.y, this.v3.y ),\n\t\t\tb3( t, this.v0.z, this.v1.z, this.v2.z, this.v3.z )\n\t\t);\n\n\t}\n\n);\n\n\nexport { CubicBezierCurve3 };\n","import { Vector3 } from '../../math/Vector3';\nimport { ShapeUtils } from '../ShapeUtils';\nimport { Curve } from '../core/Curve';\n\n/**************************************************************\n *\tQuadratic Bezier 3D curve\n **************************************************************/\n\nvar QuadraticBezierCurve3 = Curve.create(\n\n\tfunction ( v0, v1, v2 ) {\n\n\t\tthis.v0 = v0;\n\t\tthis.v1 = v1;\n\t\tthis.v2 = v2;\n\n\t},\n\n\tfunction ( t ) {\n\n\t\tvar b2 = ShapeUtils.b2;\n\n\t\treturn new Vector3(\n\t\t\tb2( t, this.v0.x, this.v1.x, this.v2.x ),\n\t\t\tb2( t, this.v0.y, this.v1.y, this.v2.y ),\n\t\t\tb2( t, this.v0.z, this.v1.z, this.v2.z )\n\t\t);\n\n\t}\n\n);\n\n\nexport { QuadraticBezierCurve3 };\n","import { Vector3 } from '../../math/Vector3';\nimport { Curve } from '../core/Curve';\n\n/**************************************************************\n *\tLine3D\n **************************************************************/\n\nvar LineCurve3 = Curve.create(\n\n\tfunction ( v1, v2 ) {\n\n\t\tthis.v1 = v1;\n\t\tthis.v2 = v2;\n\n\t},\n\n\tfunction ( t ) {\n\n\t\tif ( t === 1 ) {\n\n\t\t\treturn this.v2.clone();\n\n\t\t}\n\n\t\tvar vector = new Vector3();\n\n\t\tvector.subVectors( this.v2, this.v1 ); // diff\n\t\tvector.multiplyScalar( t );\n\t\tvector.add( this.v1 );\n\n\t\treturn vector;\n\n\t}\n\n);\n\n\nexport { LineCurve3 };\n","import { EllipseCurve } from './EllipseCurve';\n\n/**************************************************************\n *\tArc curve\n **************************************************************/\n\nfunction ArcCurve( aX, aY, aRadius, aStartAngle, aEndAngle, aClockwise ) {\n\n\tEllipseCurve.call( this, aX, aY, aRadius, aRadius, aStartAngle, aEndAngle, aClockwise );\n\n}\n\nArcCurve.prototype = Object.create( EllipseCurve.prototype );\nArcCurve.prototype.constructor = ArcCurve;\n\n\nexport { ArcCurve };\n","import { Matrix4 } from '../math/Matrix4';\nimport { Mesh } from '../objects/Mesh';\nimport { Group } from '../objects/Group';\n\n/**\n * @author alteredq / http://alteredqualia.com/\n */\n\nvar SceneUtils = {\n\n\tcreateMultiMaterialObject: function ( geometry, materials ) {\n\n\t\tvar group = new Group();\n\n\t\tfor ( var i = 0, l = materials.length; i < l; i ++ ) {\n\n\t\t\tgroup.add( new Mesh( geometry, materials[ i ] ) );\n\n\t\t}\n\n\t\treturn group;\n\n\t},\n\n\tdetach: function ( child, parent, scene ) {\n\n\t\tchild.applyMatrix( parent.matrixWorld );\n\t\tparent.remove( child );\n\t\tscene.add( child );\n\n\t},\n\n\tattach: function ( child, scene, parent ) {\n\n\t\tvar matrixWorldInverse = new Matrix4();\n\t\tmatrixWorldInverse.getInverse( parent.matrixWorld );\n\t\tchild.applyMatrix( matrixWorldInverse );\n\n\t\tscene.remove( child );\n\t\tparent.add( child );\n\n\t}\n\n};\n\n\nexport { SceneUtils };\n","/**\n * @author mrdoob / http://mrdoob.com/\n */\n\nimport { Audio } from './audio/Audio.js';\nimport { AudioAnalyser } from './audio/AudioAnalyser.js';\nimport { PerspectiveCamera } from './cameras/PerspectiveCamera.js';\nimport { CullFaceFront, CullFaceBack } from './constants.js';\nimport { BufferAttribute } from './core/BufferAttribute.js';\nimport { BufferGeometry } from './core/BufferGeometry.js';\nimport { EventDispatcher } from './core/EventDispatcher.js';\nimport { Face3 } from './core/Face3.js';\nimport { Object3D } from './core/Object3D.js';\nimport { Uniform } from './core/Uniform';\nimport { BoxGeometry } from './geometries/BoxGeometry.js';\nimport { EdgesGeometry } from './geometries/EdgesGeometry.js';\nimport { ExtrudeGeometry } from './geometries/ExtrudeGeometry.js';\nimport { ShapeGeometry } from './geometries/ShapeGeometry.js';\nimport { WireframeGeometry } from './geometries/WireframeGeometry.js';\nimport { Light } from './lights/Light.js';\nimport { FileLoader } from './loaders/FileLoader.js';\nimport { AudioLoader } from './loaders/AudioLoader.js';\nimport { CubeTextureLoader } from './loaders/CubeTextureLoader.js';\nimport { TextureLoader } from './loaders/TextureLoader.js';\nimport { Material } from './materials/Material.js';\nimport { LineBasicMaterial } from './materials/LineBasicMaterial.js';\nimport { MeshPhongMaterial } from './materials/MeshPhongMaterial.js';\nimport { MultiMaterial } from './materials/MultiMaterial.js';\nimport { PointsMaterial } from './materials/PointsMaterial.js';\nimport { ShaderMaterial } from './materials/ShaderMaterial.js';\nimport { Box2 } from './math/Box2.js';\nimport { Box3 } from './math/Box3.js';\nimport { Color } from './math/Color.js';\nimport { Line3 } from './math/Line3.js';\nimport { Matrix3 } from './math/Matrix3.js';\nimport { Matrix4 } from './math/Matrix4.js';\nimport { Plane } from './math/Plane.js';\nimport { Quaternion } from './math/Quaternion.js';\nimport { Ray } from './math/Ray.js';\nimport { Vector3 } from './math/Vector3.js';\nimport { LineSegments } from './objects/LineSegments.js';\nimport { LOD } from './objects/LOD.js';\nimport { Points } from './objects/Points.js';\nimport { Sprite } from './objects/Sprite.js';\nimport { WebGLRenderer } from './renderers/WebGLRenderer.js';\nimport { WebGLRenderTarget } from './renderers/WebGLRenderTarget.js';\nimport { WebGLShadowMap } from './renderers/webgl/WebGLShadowMap.js';\nimport { Shape } from './extras/core/Shape.js';\n\nexport { BoxGeometry as CubeGeometry };\n\nexport function Face4 ( a, b, c, d, normal, color, materialIndex ) {\n\tconsole.warn( 'THREE.Face4 has been removed. A THREE.Face3 will be created instead.' );\n\treturn new Face3( a, b, c, normal, color, materialIndex );\n}\n\nexport var LineStrip = 0;\n\nexport var LinePieces = 1;\n\nexport { MultiMaterial as MeshFaceMaterial };\n\nexport function PointCloud ( geometry, material ) {\n\tconsole.warn( 'THREE.PointCloud has been renamed to THREE.Points.' );\n\treturn new Points( geometry, material );\n}\n\nexport { Sprite as Particle };\n\nexport function ParticleSystem ( geometry, material ) {\n\tconsole.warn( 'THREE.ParticleSystem has been renamed to THREE.Points.' );\n\treturn new Points( geometry, material );\n}\n\nexport function PointCloudMaterial ( parameters ) {\n\tconsole.warn( 'THREE.PointCloudMaterial has been renamed to THREE.PointsMaterial.' );\n\treturn new PointsMaterial( parameters );\n}\n\nexport function ParticleBasicMaterial ( parameters ) {\n\tconsole.warn( 'THREE.ParticleBasicMaterial has been renamed to THREE.PointsMaterial.' );\n\treturn new PointsMaterial( parameters );\n}\n\nexport function ParticleSystemMaterial ( parameters ) {\n\tconsole.warn( 'THREE.ParticleSystemMaterial has been renamed to THREE.PointsMaterial.' );\n\treturn new PointsMaterial( parameters );\n}\n\nexport function Vertex ( x, y, z ) {\n\tconsole.warn( 'THREE.Vertex has been removed. Use THREE.Vector3 instead.' );\n\treturn new Vector3( x, y, z );\n}\n\n//\n\nexport function EdgesHelper( object, hex ) {\n\tconsole.warn( 'THREE.EdgesHelper has been removed. Use THREE.EdgesGeometry instead.' );\n\treturn new LineSegments( new EdgesGeometry( object.geometry ), new LineBasicMaterial( { color: hex !== undefined ? hex : 0xffffff } ) );\n}\n\nexport function WireframeHelper( object, hex ) {\n\tconsole.warn( 'THREE.WireframeHelper has been removed. Use THREE.WireframeGeometry instead.' );\n\treturn new LineSegments( new WireframeGeometry( object.geometry ), new LineBasicMaterial( { color: hex !== undefined ? hex : 0xffffff } ) );\n}\n\n//\n\nexport function XHRLoader( manager ) {\n\tconsole.warn( 'THREE.XHRLoader has been renamed to THREE.FileLoader.' );\n\treturn new FileLoader( manager );\n}\n\n//\n\nObject.assign( Box2.prototype, {\n\tcenter: function ( optionalTarget ) {\n\t\tconsole.warn( 'THREE.Box2: .center() has been renamed to .getCenter().' );\n\t\treturn this.getCenter( optionalTarget );\n\t},\n\tempty: function () {\n\t\tconsole.warn( 'THREE.Box2: .empty() has been renamed to .isEmpty().' );\n\t\treturn this.isEmpty();\n\t},\n\tisIntersectionBox: function ( box ) {\n\t\tconsole.warn( 'THREE.Box2: .isIntersectionBox() has been renamed to .intersectsBox().' );\n\t\treturn this.intersectsBox( box );\n\t},\n\tsize: function ( optionalTarget ) {\n\t\tconsole.warn( 'THREE.Box2: .size() has been renamed to .getSize().' );\n\t\treturn this.getSize( optionalTarget );\n\t}\n} );\n\nObject.assign( Box3.prototype, {\n\tcenter: function ( optionalTarget ) {\n\t\tconsole.warn( 'THREE.Box3: .center() has been renamed to .getCenter().' );\n\t\treturn this.getCenter( optionalTarget );\n\t},\n\tempty: function () {\n\t\tconsole.warn( 'THREE.Box3: .empty() has been renamed to .isEmpty().' );\n\t\treturn this.isEmpty();\n\t},\n\tisIntersectionBox: function ( box ) {\n\t\tconsole.warn( 'THREE.Box3: .isIntersectionBox() has been renamed to .intersectsBox().' );\n\t\treturn this.intersectsBox( box );\n\t},\n\tisIntersectionSphere: function ( sphere ) {\n\t\tconsole.warn( 'THREE.Box3: .isIntersectionSphere() has been renamed to .intersectsSphere().' );\n\t\treturn this.intersectsSphere( sphere );\n\t},\n\tsize: function ( optionalTarget ) {\n\t\tconsole.warn( 'THREE.Box3: .size() has been renamed to .getSize().' );\n\t\treturn this.getSize( optionalTarget );\n\t}\n} );\n\nObject.assign( Line3.prototype, {\n\tcenter: function ( optionalTarget ) {\n\t\tconsole.warn( 'THREE.Line3: .center() has been renamed to .getCenter().' );\n\t\treturn this.getCenter( optionalTarget );\n\t}\n} );\n\nObject.assign( Matrix3.prototype, {\n\tmultiplyVector3: function ( vector ) {\n\t\tconsole.warn( 'THREE.Matrix3: .multiplyVector3() has been removed. Use vector.applyMatrix3( matrix ) instead.' );\n\t\treturn vector.applyMatrix3( this );\n\t},\n\tmultiplyVector3Array: function ( a ) {\n\t\tconsole.warn( 'THREE.Matrix3: .multiplyVector3Array() has been renamed. Use matrix.applyToVector3Array( array ) instead.' );\n\t\treturn this.applyToVector3Array( a );\n\t}\n} );\n\nObject.assign( Matrix4.prototype, {\n\textractPosition: function ( m ) {\n\t\tconsole.warn( 'THREE.Matrix4: .extractPosition() has been renamed to .copyPosition().' );\n\t\treturn this.copyPosition( m );\n\t},\n\tsetRotationFromQuaternion: function ( q ) {\n\t\tconsole.warn( 'THREE.Matrix4: .setRotationFromQuaternion() has been renamed to .makeRotationFromQuaternion().' );\n\t\treturn this.makeRotationFromQuaternion( q );\n\t},\n\tmultiplyVector3: function ( vector ) {\n\t\tconsole.warn( 'THREE.Matrix4: .multiplyVector3() has been removed. Use vector.applyMatrix4( matrix ) or vector.applyProjection( matrix ) instead.' );\n\t\treturn vector.applyProjection( this );\n\t},\n\tmultiplyVector4: function ( vector ) {\n\t\tconsole.warn( 'THREE.Matrix4: .multiplyVector4() has been removed. Use vector.applyMatrix4( matrix ) instead.' );\n\t\treturn vector.applyMatrix4( this );\n\t},\n\tmultiplyVector3Array: function ( a ) {\n\t\tconsole.warn( 'THREE.Matrix4: .multiplyVector3Array() has been renamed. Use matrix.applyToVector3Array( array ) instead.' );\n\t\treturn this.applyToVector3Array( a );\n\t},\n\trotateAxis: function ( v ) {\n\t\tconsole.warn( 'THREE.Matrix4: .rotateAxis() has been removed. Use Vector3.transformDirection( matrix ) instead.' );\n\t\tv.transformDirection( this );\n\t},\n\tcrossVector: function ( vector ) {\n\t\tconsole.warn( 'THREE.Matrix4: .crossVector() has been removed. Use vector.applyMatrix4( matrix ) instead.' );\n\t\treturn vector.applyMatrix4( this );\n\t},\n\ttranslate: function ( v ) {\n\t\tconsole.error( 'THREE.Matrix4: .translate() has been removed.' );\n\t},\n\trotateX: function ( angle ) {\n\t\tconsole.error( 'THREE.Matrix4: .rotateX() has been removed.' );\n\t},\n\trotateY: function ( angle ) {\n\t\tconsole.error( 'THREE.Matrix4: .rotateY() has been removed.' );\n\t},\n\trotateZ: function ( angle ) {\n\t\tconsole.error( 'THREE.Matrix4: .rotateZ() has been removed.' );\n\t},\n\trotateByAxis: function ( axis, angle ) {\n\t\tconsole.error( 'THREE.Matrix4: .rotateByAxis() has been removed.' );\n\t}\n} );\n\nObject.assign( Plane.prototype, {\n\tisIntersectionLine: function ( line ) {\n\t\tconsole.warn( 'THREE.Plane: .isIntersectionLine() has been renamed to .intersectsLine().' );\n\t\treturn this.intersectsLine( line );\n\t}\n} );\n\nObject.assign( Quaternion.prototype, {\n\tmultiplyVector3: function ( vector ) {\n\t\tconsole.warn( 'THREE.Quaternion: .multiplyVector3() has been removed. Use is now vector.applyQuaternion( quaternion ) instead.' );\n\t\treturn vector.applyQuaternion( this );\n\t}\n} );\n\nObject.assign( Ray.prototype, {\n\tisIntersectionBox: function ( box ) {\n\t\tconsole.warn( 'THREE.Ray: .isIntersectionBox() has been renamed to .intersectsBox().' );\n\t\treturn this.intersectsBox( box );\n\t},\n\tisIntersectionPlane: function ( plane ) {\n\t\tconsole.warn( 'THREE.Ray: .isIntersectionPlane() has been renamed to .intersectsPlane().' );\n\t\treturn this.intersectsPlane( plane );\n\t},\n\tisIntersectionSphere: function ( sphere ) {\n\t\tconsole.warn( 'THREE.Ray: .isIntersectionSphere() has been renamed to .intersectsSphere().' );\n\t\treturn this.intersectsSphere( sphere );\n\t}\n} );\n\nObject.assign( Shape.prototype, {\n\textrude: function ( options ) {\n\t\tconsole.warn( 'THREE.Shape: .extrude() has been removed. Use ExtrudeGeometry() instead.' );\n\t\treturn new ExtrudeGeometry( this, options );\n\t},\n\tmakeGeometry: function ( options ) {\n\t\tconsole.warn( 'THREE.Shape: .makeGeometry() has been removed. Use ShapeGeometry() instead.' );\n\t\treturn new ShapeGeometry( this, options );\n\t}\n} );\n\nObject.assign( Vector3.prototype, {\n\tsetEulerFromRotationMatrix: function () {\n\t\tconsole.error( 'THREE.Vector3: .setEulerFromRotationMatrix() has been removed. Use Euler.setFromRotationMatrix() instead.' );\n\t},\n\tsetEulerFromQuaternion: function () {\n\t\tconsole.error( 'THREE.Vector3: .setEulerFromQuaternion() has been removed. Use Euler.setFromQuaternion() instead.' );\n\t},\n\tgetPositionFromMatrix: function ( m ) {\n\t\tconsole.warn( 'THREE.Vector3: .getPositionFromMatrix() has been renamed to .setFromMatrixPosition().' );\n\t\treturn this.setFromMatrixPosition( m );\n\t},\n\tgetScaleFromMatrix: function ( m ) {\n\t\tconsole.warn( 'THREE.Vector3: .getScaleFromMatrix() has been renamed to .setFromMatrixScale().' );\n\t\treturn this.setFromMatrixScale( m );\n\t},\n\tgetColumnFromMatrix: function ( index, matrix ) {\n\t\tconsole.warn( 'THREE.Vector3: .getColumnFromMatrix() has been renamed to .setFromMatrixColumn().' );\n\t\treturn this.setFromMatrixColumn( matrix, index );\n\t}\n} );\n\n//\n\nObject.assign( Object3D.prototype, {\n\tgetChildByName: function ( name ) {\n\t\tconsole.warn( 'THREE.Object3D: .getChildByName() has been renamed to .getObjectByName().' );\n\t\treturn this.getObjectByName( name );\n\t},\n\trenderDepth: function ( value ) {\n\t\tconsole.warn( 'THREE.Object3D: .renderDepth has been removed. Use .renderOrder, instead.' );\n\t},\n\ttranslate: function ( distance, axis ) {\n\t\tconsole.warn( 'THREE.Object3D: .translate() has been removed. Use .translateOnAxis( axis, distance ) instead.' );\n\t\treturn this.translateOnAxis( axis, distance );\n\t}\n} );\n\nObject.defineProperties( Object3D.prototype, {\n\teulerOrder: {\n\t\tget: function () {\n\t\t\tconsole.warn( 'THREE.Object3D: .eulerOrder is now .rotation.order.' );\n\t\t\treturn this.rotation.order;\n\t\t},\n\t\tset: function ( value ) {\n\t\t\tconsole.warn( 'THREE.Object3D: .eulerOrder is now .rotation.order.' );\n\t\t\tthis.rotation.order = value;\n\t\t}\n\t},\n\tuseQuaternion: {\n\t\tget: function () {\n\t\t\tconsole.warn( 'THREE.Object3D: .useQuaternion has been removed. The library now uses quaternions by default.' );\n\t\t},\n\t\tset: function ( value ) {\n\t\t\tconsole.warn( 'THREE.Object3D: .useQuaternion has been removed. The library now uses quaternions by default.' );\n\t\t}\n\t}\n} );\n\nObject.defineProperties( LOD.prototype, {\n\tobjects: {\n\t\tget: function () {\n\t\t\tconsole.warn( 'THREE.LOD: .objects has been renamed to .levels.' );\n\t\t\treturn this.levels;\n\t\t}\n\t}\n} );\n\n//\n\nPerspectiveCamera.prototype.setLens = function ( focalLength, filmGauge ) {\n\n\tconsole.warn( \"THREE.PerspectiveCamera.setLens is deprecated. \" +\n\t\t\t\"Use .setFocalLength and .filmGauge for a photographic setup.\" );\n\n\tif ( filmGauge !== undefined ) this.filmGauge = filmGauge;\n\tthis.setFocalLength( focalLength );\n\n};\n\n//\n\nObject.defineProperties( Light.prototype, {\n\tonlyShadow: {\n\t\tset: function ( value ) {\n\t\t\tconsole.warn( 'THREE.Light: .onlyShadow has been removed.' );\n\t\t}\n\t},\n\tshadowCameraFov: {\n\t\tset: function ( value ) {\n\t\t\tconsole.warn( 'THREE.Light: .shadowCameraFov is now .shadow.camera.fov.' );\n\t\t\tthis.shadow.camera.fov = value;\n\t\t}\n\t},\n\tshadowCameraLeft: {\n\t\tset: function ( value ) {\n\t\t\tconsole.warn( 'THREE.Light: .shadowCameraLeft is now .shadow.camera.left.' );\n\t\t\tthis.shadow.camera.left = value;\n\t\t}\n\t},\n\tshadowCameraRight: {\n\t\tset: function ( value ) {\n\t\t\tconsole.warn( 'THREE.Light: .shadowCameraRight is now .shadow.camera.right.' );\n\t\t\tthis.shadow.camera.right = value;\n\t\t}\n\t},\n\tshadowCameraTop: {\n\t\tset: function ( value ) {\n\t\t\tconsole.warn( 'THREE.Light: .shadowCameraTop is now .shadow.camera.top.' );\n\t\t\tthis.shadow.camera.top = value;\n\t\t}\n\t},\n\tshadowCameraBottom: {\n\t\tset: function ( value ) {\n\t\t\tconsole.warn( 'THREE.Light: .shadowCameraBottom is now .shadow.camera.bottom.' );\n\t\t\tthis.shadow.camera.bottom = value;\n\t\t}\n\t},\n\tshadowCameraNear: {\n\t\tset: function ( value ) {\n\t\t\tconsole.warn( 'THREE.Light: .shadowCameraNear is now .shadow.camera.near.' );\n\t\t\tthis.shadow.camera.near = value;\n\t\t}\n\t},\n\tshadowCameraFar: {\n\t\tset: function ( value ) {\n\t\t\tconsole.warn( 'THREE.Light: .shadowCameraFar is now .shadow.camera.far.' );\n\t\t\tthis.shadow.camera.far = value;\n\t\t}\n\t},\n\tshadowCameraVisible: {\n\t\tset: function ( value ) {\n\t\t\tconsole.warn( 'THREE.Light: .shadowCameraVisible has been removed. Use new THREE.CameraHelper( light.shadow.camera ) instead.' );\n\t\t}\n\t},\n\tshadowBias: {\n\t\tset: function ( value ) {\n\t\t\tconsole.warn( 'THREE.Light: .shadowBias is now .shadow.bias.' );\n\t\t\tthis.shadow.bias = value;\n\t\t}\n\t},\n\tshadowDarkness: {\n\t\tset: function ( value ) {\n\t\t\tconsole.warn( 'THREE.Light: .shadowDarkness has been removed.' );\n\t\t}\n\t},\n\tshadowMapWidth: {\n\t\tset: function ( value ) {\n\t\t\tconsole.warn( 'THREE.Light: .shadowMapWidth is now .shadow.mapSize.width.' );\n\t\t\tthis.shadow.mapSize.width = value;\n\t\t}\n\t},\n\tshadowMapHeight: {\n\t\tset: function ( value ) {\n\t\t\tconsole.warn( 'THREE.Light: .shadowMapHeight is now .shadow.mapSize.height.' );\n\t\t\tthis.shadow.mapSize.height = value;\n\t\t}\n\t}\n} );\n\n//\n\nObject.defineProperties( BufferAttribute.prototype, {\n\tlength: {\n\t\tget: function () {\n\t\t\tconsole.warn( 'THREE.BufferAttribute: .length has been deprecated. Please use .count.' );\n\t\t\treturn this.array.length;\n\t\t}\n\t}\n} );\n\nObject.assign( BufferGeometry.prototype, {\n\taddIndex: function ( index ) {\n\t\tconsole.warn( 'THREE.BufferGeometry: .addIndex() has been renamed to .setIndex().' );\n\t\tthis.setIndex( index );\n\t},\n\taddDrawCall: function ( start, count, indexOffset ) {\n\t\tif ( indexOffset !== undefined ) {\n\t\t\tconsole.warn( 'THREE.BufferGeometry: .addDrawCall() no longer supports indexOffset.' );\n\t\t}\n\t\tconsole.warn( 'THREE.BufferGeometry: .addDrawCall() is now .addGroup().' );\n\t\tthis.addGroup( start, count );\n\t},\n\tclearDrawCalls: function () {\n\t\tconsole.warn( 'THREE.BufferGeometry: .clearDrawCalls() is now .clearGroups().' );\n\t\tthis.clearGroups();\n\t},\n\tcomputeTangents: function () {\n\t\tconsole.warn( 'THREE.BufferGeometry: .computeTangents() has been removed.' );\n\t},\n\tcomputeOffsets: function () {\n\t\tconsole.warn( 'THREE.BufferGeometry: .computeOffsets() has been removed.' );\n\t}\n} );\n\nObject.defineProperties( BufferGeometry.prototype, {\n\tdrawcalls: {\n\t\tget: function () {\n\t\t\tconsole.error( 'THREE.BufferGeometry: .drawcalls has been renamed to .groups.' );\n\t\t\treturn this.groups;\n\t\t}\n\t},\n\toffsets: {\n\t\tget: function () {\n\t\t\tconsole.warn( 'THREE.BufferGeometry: .offsets has been renamed to .groups.' );\n\t\t\treturn this.groups;\n\t\t}\n\t}\n} );\n\n//\n\nObject.defineProperties( Uniform.prototype, {\n\tdynamic: {\n\t\tset: function ( value ) {\n\t\t\tconsole.warn( 'THREE.Uniform: .dynamic has been removed. Use object.onBeforeRender() instead.' );\n\t\t}\n\t},\n\tonUpdate: {\n\t\tvalue: function () {\n\t\t\tconsole.warn( 'THREE.Uniform: .onUpdate() has been removed. Use object.onBeforeRender() instead.' );\n\t\t\treturn this;\n\t\t}\n\t}\n} );\n\n//\n\nObject.defineProperties( Material.prototype, {\n\twrapAround: {\n\t\tget: function () {\n\t\t\tconsole.warn( 'THREE.' + this.type + ': .wrapAround has been removed.' );\n\t\t},\n\t\tset: function ( value ) {\n\t\t\tconsole.warn( 'THREE.' + this.type + ': .wrapAround has been removed.' );\n\t\t}\n\t},\n\twrapRGB: {\n\t\tget: function () {\n\t\t\tconsole.warn( 'THREE.' + this.type + ': .wrapRGB has been removed.' );\n\t\t\treturn new Color();\n\t\t}\n\t}\n} );\n\nObject.defineProperties( MeshPhongMaterial.prototype, {\n\tmetal: {\n\t\tget: function () {\n\t\t\tconsole.warn( 'THREE.MeshPhongMaterial: .metal has been removed. Use THREE.MeshStandardMaterial instead.' );\n\t\t\treturn false;\n\t\t},\n\t\tset: function ( value ) {\n\t\t\tconsole.warn( 'THREE.MeshPhongMaterial: .metal has been removed. Use THREE.MeshStandardMaterial instead' );\n\t\t}\n\t}\n} );\n\nObject.defineProperties( ShaderMaterial.prototype, {\n\tderivatives: {\n\t\tget: function () {\n\t\t\tconsole.warn( 'THREE.ShaderMaterial: .derivatives has been moved to .extensions.derivatives.' );\n\t\t\treturn this.extensions.derivatives;\n\t\t},\n\t\tset: function ( value ) {\n\t\t\tconsole.warn( 'THREE. ShaderMaterial: .derivatives has been moved to .extensions.derivatives.' );\n\t\t\tthis.extensions.derivatives = value;\n\t\t}\n\t}\n} );\n\n//\n\nEventDispatcher.prototype = Object.assign( Object.create( {\n\n\t// Note: Extra base ensures these properties are not 'assign'ed.\n\n\tconstructor: EventDispatcher,\n\n\tapply: function ( target ) {\n\n\t\tconsole.warn( \"THREE.EventDispatcher: .apply is deprecated, \" +\n\t\t\t\t\"just inherit or Object.assign the prototype to mix-in.\" );\n\n\t\tObject.assign( target, this );\n\n\t}\n\n} ), EventDispatcher.prototype );\n\n//\n\nObject.assign( WebGLRenderer.prototype, {\n\tsupportsFloatTextures: function () {\n\t\tconsole.warn( 'THREE.WebGLRenderer: .supportsFloatTextures() is now .extensions.get( \\'OES_texture_float\\' ).' );\n\t\treturn this.extensions.get( 'OES_texture_float' );\n\t},\n\tsupportsHalfFloatTextures: function () {\n\t\tconsole.warn( 'THREE.WebGLRenderer: .supportsHalfFloatTextures() is now .extensions.get( \\'OES_texture_half_float\\' ).' );\n\t\treturn this.extensions.get( 'OES_texture_half_float' );\n\t},\n\tsupportsStandardDerivatives: function () {\n\t\tconsole.warn( 'THREE.WebGLRenderer: .supportsStandardDerivatives() is now .extensions.get( \\'OES_standard_derivatives\\' ).' );\n\t\treturn this.extensions.get( 'OES_standard_derivatives' );\n\t},\n\tsupportsCompressedTextureS3TC: function () {\n\t\tconsole.warn( 'THREE.WebGLRenderer: .supportsCompressedTextureS3TC() is now .extensions.get( \\'WEBGL_compressed_texture_s3tc\\' ).' );\n\t\treturn this.extensions.get( 'WEBGL_compressed_texture_s3tc' );\n\t},\n\tsupportsCompressedTexturePVRTC: function () {\n\t\tconsole.warn( 'THREE.WebGLRenderer: .supportsCompressedTexturePVRTC() is now .extensions.get( \\'WEBGL_compressed_texture_pvrtc\\' ).' );\n\t\treturn this.extensions.get( 'WEBGL_compressed_texture_pvrtc' );\n\t},\n\tsupportsBlendMinMax: function () {\n\t\tconsole.warn( 'THREE.WebGLRenderer: .supportsBlendMinMax() is now .extensions.get( \\'EXT_blend_minmax\\' ).' );\n\t\treturn this.extensions.get( 'EXT_blend_minmax' );\n\t},\n\tsupportsVertexTextures: function () {\n\t\treturn this.capabilities.vertexTextures;\n\t},\n\tsupportsInstancedArrays: function () {\n\t\tconsole.warn( 'THREE.WebGLRenderer: .supportsInstancedArrays() is now .extensions.get( \\'ANGLE_instanced_arrays\\' ).' );\n\t\treturn this.extensions.get( 'ANGLE_instanced_arrays' );\n\t},\n\tenableScissorTest: function ( boolean ) {\n\t\tconsole.warn( 'THREE.WebGLRenderer: .enableScissorTest() is now .setScissorTest().' );\n\t\tthis.setScissorTest( boolean );\n\t},\n\tinitMaterial: function () {\n\t\tconsole.warn( 'THREE.WebGLRenderer: .initMaterial() has been removed.' );\n\t},\n\taddPrePlugin: function () {\n\t\tconsole.warn( 'THREE.WebGLRenderer: .addPrePlugin() has been removed.' );\n\t},\n\taddPostPlugin: function () {\n\t\tconsole.warn( 'THREE.WebGLRenderer: .addPostPlugin() has been removed.' );\n\t},\n\tupdateShadowMap: function () {\n\t\tconsole.warn( 'THREE.WebGLRenderer: .updateShadowMap() has been removed.' );\n\t}\n} );\n\nObject.defineProperties( WebGLRenderer.prototype, {\n\tshadowMapEnabled: {\n\t\tget: function () {\n\t\t\treturn this.shadowMap.enabled;\n\t\t},\n\t\tset: function ( value ) {\n\t\t\tconsole.warn( 'THREE.WebGLRenderer: .shadowMapEnabled is now .shadowMap.enabled.' );\n\t\t\tthis.shadowMap.enabled = value;\n\t\t}\n\t},\n\tshadowMapType: {\n\t\tget: function () {\n\t\t\treturn this.shadowMap.type;\n\t\t},\n\t\tset: function ( value ) {\n\t\t\tconsole.warn( 'THREE.WebGLRenderer: .shadowMapType is now .shadowMap.type.' );\n\t\t\tthis.shadowMap.type = value;\n\t\t}\n\t},\n\tshadowMapCullFace: {\n\t\tget: function () {\n\t\t\treturn this.shadowMap.cullFace;\n\t\t},\n\t\tset: function ( value ) {\n\t\t\tconsole.warn( 'THREE.WebGLRenderer: .shadowMapCullFace is now .shadowMap.cullFace.' );\n\t\t\tthis.shadowMap.cullFace = value;\n\t\t}\n\t}\n} );\n\nObject.defineProperties( WebGLShadowMap.prototype, {\n\tcullFace: {\n\t\tget: function () {\n\t\t\treturn this.renderReverseSided ? CullFaceFront : CullFaceBack;\n\t\t},\n\t\tset: function ( cullFace ) {\n\t\t\tvar value = ( cullFace !== CullFaceBack );\n\t\t\tconsole.warn( \"WebGLRenderer: .shadowMap.cullFace is deprecated. Set .shadowMap.renderReverseSided to \" + value + \".\" );\n\t\t\tthis.renderReverseSided = value;\n\t\t}\n\t}\n} );\n\n//\n\nObject.defineProperties( WebGLRenderTarget.prototype, {\n\twrapS: {\n\t\tget: function () {\n\t\t\tconsole.warn( 'THREE.WebGLRenderTarget: .wrapS is now .texture.wrapS.' );\n\t\t\treturn this.texture.wrapS;\n\t\t},\n\t\tset: function ( value ) {\n\t\t\tconsole.warn( 'THREE.WebGLRenderTarget: .wrapS is now .texture.wrapS.' );\n\t\t\tthis.texture.wrapS = value;\n\t\t}\n\t},\n\twrapT: {\n\t\tget: function () {\n\t\t\tconsole.warn( 'THREE.WebGLRenderTarget: .wrapT is now .texture.wrapT.' );\n\t\t\treturn this.texture.wrapT;\n\t\t},\n\t\tset: function ( value ) {\n\t\t\tconsole.warn( 'THREE.WebGLRenderTarget: .wrapT is now .texture.wrapT.' );\n\t\t\tthis.texture.wrapT = value;\n\t\t}\n\t},\n\tmagFilter: {\n\t\tget: function () {\n\t\t\tconsole.warn( 'THREE.WebGLRenderTarget: .magFilter is now .texture.magFilter.' );\n\t\t\treturn this.texture.magFilter;\n\t\t},\n\t\tset: function ( value ) {\n\t\t\tconsole.warn( 'THREE.WebGLRenderTarget: .magFilter is now .texture.magFilter.' );\n\t\t\tthis.texture.magFilter = value;\n\t\t}\n\t},\n\tminFilter: {\n\t\tget: function () {\n\t\t\tconsole.warn( 'THREE.WebGLRenderTarget: .minFilter is now .texture.minFilter.' );\n\t\t\treturn this.texture.minFilter;\n\t\t},\n\t\tset: function ( value ) {\n\t\t\tconsole.warn( 'THREE.WebGLRenderTarget: .minFilter is now .texture.minFilter.' );\n\t\t\tthis.texture.minFilter = value;\n\t\t}\n\t},\n\tanisotropy: {\n\t\tget: function () {\n\t\t\tconsole.warn( 'THREE.WebGLRenderTarget: .anisotropy is now .texture.anisotropy.' );\n\t\t\treturn this.texture.anisotropy;\n\t\t},\n\t\tset: function ( value ) {\n\t\t\tconsole.warn( 'THREE.WebGLRenderTarget: .anisotropy is now .texture.anisotropy.' );\n\t\t\tthis.texture.anisotropy = value;\n\t\t}\n\t},\n\toffset: {\n\t\tget: function () {\n\t\t\tconsole.warn( 'THREE.WebGLRenderTarget: .offset is now .texture.offset.' );\n\t\t\treturn this.texture.offset;\n\t\t},\n\t\tset: function ( value ) {\n\t\t\tconsole.warn( 'THREE.WebGLRenderTarget: .offset is now .texture.offset.' );\n\t\t\tthis.texture.offset = value;\n\t\t}\n\t},\n\trepeat: {\n\t\tget: function () {\n\t\t\tconsole.warn( 'THREE.WebGLRenderTarget: .repeat is now .texture.repeat.' );\n\t\t\treturn this.texture.repeat;\n\t\t},\n\t\tset: function ( value ) {\n\t\t\tconsole.warn( 'THREE.WebGLRenderTarget: .repeat is now .texture.repeat.' );\n\t\t\tthis.texture.repeat = value;\n\t\t}\n\t},\n\tformat: {\n\t\tget: function () {\n\t\t\tconsole.warn( 'THREE.WebGLRenderTarget: .format is now .texture.format.' );\n\t\t\treturn this.texture.format;\n\t\t},\n\t\tset: function ( value ) {\n\t\t\tconsole.warn( 'THREE.WebGLRenderTarget: .format is now .texture.format.' );\n\t\t\tthis.texture.format = value;\n\t\t}\n\t},\n\ttype: {\n\t\tget: function () {\n\t\t\tconsole.warn( 'THREE.WebGLRenderTarget: .type is now .texture.type.' );\n\t\t\treturn this.texture.type;\n\t\t},\n\t\tset: function ( value ) {\n\t\t\tconsole.warn( 'THREE.WebGLRenderTarget: .type is now .texture.type.' );\n\t\t\tthis.texture.type = value;\n\t\t}\n\t},\n\tgenerateMipmaps: {\n\t\tget: function () {\n\t\t\tconsole.warn( 'THREE.WebGLRenderTarget: .generateMipmaps is now .texture.generateMipmaps.' );\n\t\t\treturn this.texture.generateMipmaps;\n\t\t},\n\t\tset: function ( value ) {\n\t\t\tconsole.warn( 'THREE.WebGLRenderTarget: .generateMipmaps is now .texture.generateMipmaps.' );\n\t\t\tthis.texture.generateMipmaps = value;\n\t\t}\n\t}\n} );\n\n//\n\nObject.assign( Audio.prototype, {\n\tload: function ( file ) {\n\t\tconsole.warn( 'THREE.Audio: .load has been deprecated. Please use THREE.AudioLoader.' );\n\t\tvar scope = this;\n\t\tvar audioLoader = new AudioLoader();\n\t\taudioLoader.load( file, function ( buffer ) {\n\t\t\tscope.setBuffer( buffer );\n\t\t} );\n\t\treturn this;\n\t}\n} );\n\nObject.assign( AudioAnalyser.prototype, {\n\tgetData: function ( file ) {\n\t\tconsole.warn( 'THREE.AudioAnalyser: .getData() is now .getFrequencyData().' );\n\t\treturn this.getFrequencyData();\n\t}\n} );\n\n//\n\nexport var GeometryUtils = {\n\n\tmerge: function ( geometry1, geometry2, materialIndexOffset ) {\n\n\t\tconsole.warn( 'THREE.GeometryUtils: .merge() has been moved to Geometry. Use geometry.merge( geometry2, matrix, materialIndexOffset ) instead.' );\n\n\t\tvar matrix;\n\n\t\tif ( geometry2.isMesh ) {\n\n\t\t\tgeometry2.matrixAutoUpdate && geometry2.updateMatrix();\n\n\t\t\tmatrix = geometry2.matrix;\n\t\t\tgeometry2 = geometry2.geometry;\n\n\t\t}\n\n\t\tgeometry1.merge( geometry2, matrix, materialIndexOffset );\n\n\t},\n\n\tcenter: function ( geometry ) {\n\n\t\tconsole.warn( 'THREE.GeometryUtils: .center() has been moved to Geometry. Use geometry.center() instead.' );\n\t\treturn geometry.center();\n\n\t}\n\n};\n\nexport var ImageUtils = {\n\n\tcrossOrigin: undefined,\n\n\tloadTexture: function ( url, mapping, onLoad, onError ) {\n\n\t\tconsole.warn( 'THREE.ImageUtils.loadTexture has been deprecated. Use THREE.TextureLoader() instead.' );\n\n\t\tvar loader = new TextureLoader();\n\t\tloader.setCrossOrigin( this.crossOrigin );\n\n\t\tvar texture = loader.load( url, onLoad, undefined, onError );\n\n\t\tif ( mapping ) texture.mapping = mapping;\n\n\t\treturn texture;\n\n\t},\n\n\tloadTextureCube: function ( urls, mapping, onLoad, onError ) {\n\n\t\tconsole.warn( 'THREE.ImageUtils.loadTextureCube has been deprecated. Use THREE.CubeTextureLoader() instead.' );\n\n\t\tvar loader = new CubeTextureLoader();\n\t\tloader.setCrossOrigin( this.crossOrigin );\n\n\t\tvar texture = loader.load( urls, onLoad, undefined, onError );\n\n\t\tif ( mapping ) texture.mapping = mapping;\n\n\t\treturn texture;\n\n\t},\n\n\tloadCompressedTexture: function () {\n\n\t\tconsole.error( 'THREE.ImageUtils.loadCompressedTexture has been removed. Use THREE.DDSLoader instead.' );\n\n\t},\n\n\tloadCompressedTextureCube: function () {\n\n\t\tconsole.error( 'THREE.ImageUtils.loadCompressedTextureCube has been removed. Use THREE.DDSLoader instead.' );\n\n\t}\n\n};\n\n//\n\nexport function Projector () {\n\n\tconsole.error( 'THREE.Projector has been moved to /examples/js/renderers/Projector.js.' );\n\n\tthis.projectVector = function ( vector, camera ) {\n\n\t\tconsole.warn( 'THREE.Projector: .projectVector() is now vector.project().' );\n\t\tvector.project( camera );\n\n\t};\n\n\tthis.unprojectVector = function ( vector, camera ) {\n\n\t\tconsole.warn( 'THREE.Projector: .unprojectVector() is now vector.unproject().' );\n\t\tvector.unproject( camera );\n\n\t};\n\n\tthis.pickingRay = function ( vector, camera ) {\n\n\t\tconsole.error( 'THREE.Projector: .pickingRay() is now raycaster.setFromCamera().' );\n\n\t};\n\n}\n\n//\n\nexport function CanvasRenderer () {\n\n\tconsole.error( 'THREE.CanvasRenderer has been moved to /examples/js/renderers/CanvasRenderer.js' );\n\n\tthis.domElement = document.createElementNS( 'http://www.w3.org/1999/xhtml', 'canvas' );\n\tthis.clear = function () {};\n\tthis.render = function () {};\n\tthis.setClearColor = function () {};\n\tthis.setSize = function () {};\n\n}\n"],"names":["count"],"mappings":"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E,EAAE,GAAG,GAAG,EAAE,EAAE,EAAE,EAAE,EAAE,GAAG,GAAG,EAAE,EAAE,EAAE,EAAE,CAAC;AACnE,CAAA,EAAE,IAAI,GAAG,GAAG,EAAE,EAAE,CAAC,EAAE,EAAE,GAAG,GAAG,EAAE,EAAE,CAAC,EAAE,EAAE,GAAG,GAAG,EAAE,EAAE,EAAE,EAAE,EAAE,GAAG,GAAG,EAAE,EAAE,EAAE,EAAE,CAAC;;AAEnE,CAAA,EAAE,IAAI,GAAG,GAAG,EAAE,EAAE,CAAC,EAAE,EAAE,GAAG,GAAG,EAAE,EAAE,CAAC,EAAE,EAAE,GAAG,GAAG,EAAE,EAAE,CAAC,EAAE,EAAE,GAAG,GAAG,EAAE,EAAE,EAAE,EAAE,CAAC;AAClE,CAAA,EAAE,IAAI,GAAG,GAAG,EAAE,EAAE,CAAC,EAAE,EAAE,GAAG,GAAG,EAAE,EAAE,CAAC,EAAE,EAAE,GAAG,GAAG,EAAE,EAAE,CAAC,EAAE,EAAE,GAAG,GAAG,EAAE,EAAE,EAAE,EAAE,CAAC;AAClE,CAAA,EAAE,IAAI,GAAG,GAAG,EAAE,EAAE,CAAC,EAAE,EAAE,GAAG,GAAG,EAAE,EAAE,CAAC,EAAE,EAAE,GAAG,GAAG,EAAE,EAAE,EAAE,EAAE,EAAE,GAAG,GAAG,EAAE,EAAE,EAAE,EAAE,CAAC;AACnE,CAAA,EAAE,IAAI,GAAG,GAAG,EAAE,EAAE,CAAC,EAAE,EAAE,GAAG,GAAG,EAAE,EAAE,CAAC,EAAE,EAAE,GAAG,GAAG,EAAE,EAAE,EAAE,EAAE,EAAE,GAAG,GAAG,EAAE,EAAE,EAAE,EAAE,CAAC;;AAEnE,CAAA,EAAE,EAAE,EAAE,CAAC,EAAE,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,CAAC;AAC1D,CAAA,EAAE,EAAE,EAAE,CAAC,EAAE,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,CAAC;AAC1D,CAAA,EAAE,EAAE,EAAE,CAAC,EAAE,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,CAAC;AAC1D,CAAA,EAAE,EAAE,EAAE,EAAE,EAAE,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,CAAC;;AAE3D,CAAA,EAAE,EAAE,EAAE,CAAC,EAAE,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,CAAC;AAC1D,CAAA,EAAE,EAAE,EAAE,CAAC,EAAE,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,CAAC;AAC1D,CAAA,EAAE,EAAE,EAAE,CAAC,EAAE,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,CAAC;AAC1D,CAAA,EAAE,EAAE,EAAE,EAAE,EAAE,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,CAAC;;AAE3D,CAAA,EAAE,EAAE,EAAE,CAAC,EAAE,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,CAAC;AAC1D,CAAA,EAAE,EAAE,EAAE,CAAC,EAAE,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,CAAC;AAC1D,CAAA,EAAE,EAAE,EAAE,EAAE,EAAE,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,CAAC;AAC3D,CAAA,EAAE,EAAE,EAAE,EAAE,EAAE,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,CAAC;;AAE3D,CAAA,EAAE,EAAE,EAAE,CAAC,EAAE,GAAG,GAAG,GAAG,GAAG,GAAG,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GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,EAAE,GAAG,MAAM,CAAC;;AAEnI,CAAA,EAAE,EAAE,EAAE,CAAC,EAAE,GAAG,GAAG,GAAG,MAAM,CAAC;AACzB,CAAA,EAAE,EAAE,EAAE,CAAC,EAAE,GAAG,EAAE,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,EAAE,GAAG,MAAM,CAAC;AACnI,CAAA,EAAE,EAAE,EAAE,CAAC,EAAE,GAAG,EAAE,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,EAAE,GAAG,MAAM,CAAC;AACnI,CAAA,EAAE,EAAE,EAAE,CAAC,EAAE,GAAG,EAAE,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,EAAE,GAAG,MAAM,CAAC;;AAEnI,CAAA,EAAE,EAAE,EAAE,CAAC,EAAE,GAAG,GAAG,GAAG,MAAM,CAAC;AACzB,CAAA,EAAE,EAAE,EAAE,CAAC,EAAE,GAAG,EAAE,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,EAAE,GAAG,MAAM,CAAC;AACnI,CAAA,EAAE,EAAE,EAAE,EAAE,EAAE,GAAG,EAAE,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,EAAE,GAAG,MAAM,CAAC;AACpI,CAAA,EAAE,EAAE,EAAE,EAAE,EAAE,GAAG,EAAE,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,EAAE,GAAG,MAAM,CAAC;;AAEpI,CAAA,EAAE,EAAE,EAAE,EAAE,EAAE,GAAG,GAAG,GAAG,MAAM,CAAC;AAC1B,CAAA,EAAE,EAAE,EAAE,EAAE,EAAE,GAAG,EAAE,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,EAAE,GAAG,MAAM,CAAC;AACpI,CAAA,EAAE,EAAE,EAAE,EAAE,EAAE,GAAG,EAAE,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,EAAE,GAAG,MAAM,CAAC;AACpI,CAAA,EAAE,EAAE,EAAE,EAAE,EAAE,GAAG,EAAE,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,EAAE,GAAG,MAAM,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"} \ No newline at end of file diff --git a/build/three.min.js b/build/three.min.js index 90cab8097d2161..a381600abd272b 100644 --- a/build/three.min.js +++ b/build/three.min.js @@ -605,27 +605,27 @@ qb.prototype=Object.create(T.prototype);qb.prototype.constructor=qb;qb.prototype MeshLambertMaterial:pb,MeshDepthMaterial:$a,MeshBasicMaterial:Ma,LineDashedMaterial:qb,LineBasicMaterial:ea,Material:T}),ce={enabled:!1,files:{},add:function(a,b){!1!==this.enabled&&(this.files[a]=b)},get:function(a){if(!1!==this.enabled)return this.files[a]},remove:function(a){delete this.files[a]},clear:function(){this.files={}}},Ha=new Fd;Object.assign(wa.prototype,{load:function(a,b,c,d){void 0===a&&(a="");void 0!==this.path&&(a=this.path+a);var e=this,f=ce.get(a);if(void 0!==f)return e.manager.itemStart(a), setTimeout(function(){b&&b(f);e.manager.itemEnd(a)},0),f;var g=a.match(/^data:(.*?)(;base64)?,(.*)$/);if(g){var h=g[1],k=!!g[2],g=g[3],g=window.decodeURIComponent(g);k&&(g=window.atob(g));try{var m,l=(this.responseType||"").toLowerCase();switch(l){case "arraybuffer":case "blob":m=new ArrayBuffer(g.length);for(var p=new Uint8Array(m),k=0;k=e)break a;else{f=b[1];a=e)break b}d=c;c=0}}for(;c>>1,a=e)break a;else{f=b[1];a=e)break b}d=c;c=0}}for(;c>>1,ab;)--f;++f;if(0!==e||f!==d)e>=f&&(f=Math.max(f,1),e=f-1),d=this.getValueSize(),this.times=la.arraySlice(c,e,f),this.values=la.arraySlice(this.values,e*d,f*d);return this},validate:function(){var a=!0,b=this.getValueSize();0!==b-Math.floor(b)&&(console.error("invalid value size in track",this),a=!1);var c=this.times,b=this.values,d=c.length;0===d&&(console.error("track is empty", this),a=!1);for(var e=null,f=0;f!==d;f++){var g=c[f];if("number"===typeof g&&isNaN(g)){console.error("time is not a valid number",this,f,g);a=!1;break}if(null!==e&&e>g){console.error("out of order keys",this,f,g,e);a=!1;break}e=g}if(void 0!==b&&la.isTypedArray(b))for(f=0,c=b.length;f!==c;++f)if(d=b[f],isNaN(d)){console.error("value is not a valid number",this,f,d);a=!1;break}return a},optimize:function(){for(var a=this.times,b=this.values,c=this.getValueSize(),d=2302===this.getInterpolation(),e=1, diff --git a/build/three.modules.js b/build/three.modules.js index 921b7776458c2a..3f8554131e7001 100644 --- a/build/three.modules.js +++ b/build/three.modules.js @@ -29216,7 +29216,7 @@ Object.assign( FileLoader.prototype, { if ( this.responseType !== undefined ) request.responseType = this.responseType; if ( this.withCredentials !== undefined ) request.withCredentials = this.withCredentials; - if ( request.overrideMimeType ) request.overrideMimeType( 'text/plain' ); + if ( request.overrideMimeType ) request.overrideMimeType( this.mimeType !== undefined ? this.mimeType : 'text/plain' ); request.send( null ); @@ -29247,6 +29247,13 @@ Object.assign( FileLoader.prototype, { this.withCredentials = value; return this; + }, + + setMimeType: function ( value ) { + + this.mimeType = value; + return this; + } } ); diff --git a/build/three.modules.js.map b/build/three.modules.js.map index 9cc703aab28042..e76b4fa66f2a75 100644 --- a/build/three.modules.js.map +++ b/build/three.modules.js.map @@ -1 +1 @@ -{"version":3,"file":null,"sources":["../src/polyfills.js","../src/core/EventDispatcher.js","../src/constants.js","../src/math/Math.js","../src/math/Vector2.js","../src/textures/Texture.js","../src/math/Vector4.js","../src/renderers/WebGLRenderTarget.js","../src/renderers/WebGLRenderTargetCube.js","../src/math/Quaternion.js","../src/math/Vector3.js","../src/math/Matrix4.js","../src/textures/CubeTexture.js","../src/renderers/webgl/WebGLUniforms.js","../src/renderers/shaders/UniformsUtils.js","../src/renderers/shaders/ShaderChunk.js","../src/math/Color.js","../src/renderers/shaders/UniformsLib.js","../src/renderers/shaders/ShaderLib.js","../src/math/Box2.js","../src/renderers/webgl/plugins/LensFlarePlugin.js","../src/renderers/webgl/plugins/SpritePlugin.js","../src/materials/Material.js","../src/materials/ShaderMaterial.js","../src/materials/MeshDepthMaterial.js","../src/math/Box3.js","../src/math/Sphere.js","../src/math/Matrix3.js","../src/math/Plane.js","../src/math/Frustum.js","../src/renderers/webgl/WebGLShadowMap.js","../src/math/Ray.js","../src/math/Euler.js","../src/core/Layers.js","../src/core/Object3D.js","../src/math/Line3.js","../src/math/Triangle.js","../src/core/Face3.js","../src/materials/MeshBasicMaterial.js","../src/core/BufferAttribute.js","../src/core/Geometry.js","../src/core/DirectGeometry.js","../src/core/BufferGeometry.js","../src/objects/Mesh.js","../src/geometries/BoxBufferGeometry.js","../src/geometries/PlaneBufferGeometry.js","../src/cameras/Camera.js","../src/cameras/PerspectiveCamera.js","../src/cameras/OrthographicCamera.js","../src/renderers/webgl/WebGLIndexedBufferRenderer.js","../src/renderers/webgl/WebGLBufferRenderer.js","../src/renderers/webgl/WebGLLights.js","../src/renderers/webgl/WebGLShader.js","../src/renderers/webgl/WebGLProgram.js","../src/renderers/webgl/WebGLPrograms.js","../src/renderers/webgl/WebGLGeometries.js","../src/renderers/webgl/WebGLObjects.js","../src/renderers/webgl/WebGLTextures.js","../src/renderers/webgl/WebGLProperties.js","../src/renderers/webgl/WebGLState.js","../src/renderers/webgl/WebGLCapabilities.js","../src/renderers/webgl/WebGLExtensions.js","../src/renderers/webgl/WebGLClipping.js","../src/renderers/WebGLRenderer.js","../src/renderers/WebGL2Renderer.js","../src/scenes/FogExp2.js","../src/scenes/Fog.js","../src/scenes/Scene.js","../src/objects/LensFlare.js","../src/materials/SpriteMaterial.js","../src/objects/Sprite.js","../src/objects/LOD.js","../src/textures/DataTexture.js","../src/objects/Skeleton.js","../src/objects/Bone.js","../src/objects/SkinnedMesh.js","../src/materials/LineBasicMaterial.js","../src/objects/Line.js","../src/objects/LineSegments.js","../src/materials/PointsMaterial.js","../src/objects/Points.js","../src/objects/Group.js","../src/textures/VideoTexture.js","../src/textures/CompressedTexture.js","../src/textures/CanvasTexture.js","../src/textures/DepthTexture.js","../src/geometries/WireframeGeometry.js","../src/geometries/ParametricBufferGeometry.js","../src/geometries/ParametricGeometry.js","../src/geometries/PolyhedronBufferGeometry.js","../src/geometries/TetrahedronBufferGeometry.js","../src/geometries/TetrahedronGeometry.js","../src/geometries/OctahedronBufferGeometry.js","../src/geometries/OctahedronGeometry.js","../src/geometries/IcosahedronBufferGeometry.js","../src/geometries/IcosahedronGeometry.js","../src/geometries/DodecahedronBufferGeometry.js","../src/geometries/DodecahedronGeometry.js","../src/geometries/PolyhedronGeometry.js","../src/geometries/TubeBufferGeometry.js","../src/geometries/TubeGeometry.js","../src/geometries/TorusKnotBufferGeometry.js","../src/geometries/TorusKnotGeometry.js","../src/geometries/TorusBufferGeometry.js","../src/geometries/TorusGeometry.js","../src/extras/ShapeUtils.js","../src/geometries/ExtrudeGeometry.js","../src/geometries/TextGeometry.js","../src/geometries/SphereBufferGeometry.js","../src/geometries/SphereGeometry.js","../src/geometries/RingBufferGeometry.js","../src/geometries/RingGeometry.js","../src/geometries/PlaneGeometry.js","../src/geometries/LatheBufferGeometry.js","../src/geometries/LatheGeometry.js","../src/geometries/ShapeBufferGeometry.js","../src/geometries/ShapeGeometry.js","../src/geometries/EdgesGeometry.js","../src/geometries/CylinderBufferGeometry.js","../src/geometries/CylinderGeometry.js","../src/geometries/ConeGeometry.js","../src/geometries/ConeBufferGeometry.js","../src/geometries/CircleBufferGeometry.js","../src/geometries/CircleGeometry.js","../src/geometries/BoxGeometry.js","../src/materials/ShadowMaterial.js","../src/materials/RawShaderMaterial.js","../src/materials/MultiMaterial.js","../src/materials/MeshStandardMaterial.js","../src/materials/MeshPhysicalMaterial.js","../src/materials/MeshPhongMaterial.js","../src/materials/MeshNormalMaterial.js","../src/materials/MeshLambertMaterial.js","../src/materials/LineDashedMaterial.js","../src/loaders/Cache.js","../src/loaders/LoadingManager.js","../src/loaders/FileLoader.js","../src/loaders/CompressedTextureLoader.js","../src/loaders/BinaryTextureLoader.js","../src/loaders/ImageLoader.js","../src/loaders/CubeTextureLoader.js","../src/loaders/TextureLoader.js","../src/lights/Light.js","../src/lights/HemisphereLight.js","../src/lights/LightShadow.js","../src/lights/SpotLightShadow.js","../src/lights/SpotLight.js","../src/lights/PointLight.js","../src/lights/DirectionalLightShadow.js","../src/lights/DirectionalLight.js","../src/lights/AmbientLight.js","../src/animation/AnimationUtils.js","../src/math/Interpolant.js","../src/math/interpolants/CubicInterpolant.js","../src/math/interpolants/LinearInterpolant.js","../src/math/interpolants/DiscreteInterpolant.js","../src/animation/KeyframeTrackPrototype.js","../src/animation/KeyframeTrackConstructor.js","../src/animation/tracks/VectorKeyframeTrack.js","../src/math/interpolants/QuaternionLinearInterpolant.js","../src/animation/tracks/QuaternionKeyframeTrack.js","../src/animation/tracks/NumberKeyframeTrack.js","../src/animation/tracks/StringKeyframeTrack.js","../src/animation/tracks/BooleanKeyframeTrack.js","../src/animation/tracks/ColorKeyframeTrack.js","../src/animation/KeyframeTrack.js","../src/animation/AnimationClip.js","../src/loaders/MaterialLoader.js","../src/loaders/BufferGeometryLoader.js","../src/loaders/Loader.js","../src/loaders/JSONLoader.js","../src/loaders/ObjectLoader.js","../src/extras/core/Curve.js","../src/extras/curves/LineCurve.js","../src/extras/core/CurvePath.js","../src/extras/curves/EllipseCurve.js","../src/extras/CurveUtils.js","../src/extras/curves/SplineCurve.js","../src/extras/curves/CubicBezierCurve.js","../src/extras/curves/QuadraticBezierCurve.js","../src/extras/core/PathPrototype.js","../src/extras/core/Shape.js","../src/extras/core/Path.js","../src/extras/core/Font.js","../src/loaders/FontLoader.js","../src/audio/AudioContext.js","../src/loaders/AudioLoader.js","../src/cameras/StereoCamera.js","../src/cameras/CubeCamera.js","../src/audio/AudioListener.js","../src/audio/Audio.js","../src/audio/PositionalAudio.js","../src/audio/AudioAnalyser.js","../src/animation/PropertyMixer.js","../src/animation/PropertyBinding.js","../src/animation/AnimationObjectGroup.js","../src/animation/AnimationAction.js","../src/animation/AnimationMixer.js","../src/core/Uniform.js","../src/core/InstancedBufferGeometry.js","../src/core/InterleavedBufferAttribute.js","../src/core/InterleavedBuffer.js","../src/core/InstancedInterleavedBuffer.js","../src/core/InstancedBufferAttribute.js","../src/core/Raycaster.js","../src/core/Clock.js","../src/math/Spline.js","../src/math/Spherical.js","../src/extras/objects/MorphBlendMesh.js","../src/extras/objects/ImmediateRenderObject.js","../src/extras/helpers/VertexNormalsHelper.js","../src/extras/helpers/SpotLightHelper.js","../src/extras/helpers/SkeletonHelper.js","../src/extras/helpers/PointLightHelper.js","../src/extras/helpers/HemisphereLightHelper.js","../src/extras/helpers/GridHelper.js","../src/extras/helpers/FaceNormalsHelper.js","../src/extras/helpers/DirectionalLightHelper.js","../src/extras/helpers/CameraHelper.js","../src/extras/helpers/BoundingBoxHelper.js","../src/extras/helpers/BoxHelper.js","../src/extras/helpers/ArrowHelper.js","../src/extras/helpers/AxisHelper.js","../src/extras/curves/CatmullRomCurve3.js","../src/extras/curves/ClosedSplineCurve3.js","../src/extras/curves/SplineCurve3.js","../src/extras/curves/CubicBezierCurve3.js","../src/extras/curves/QuadraticBezierCurve3.js","../src/extras/curves/LineCurve3.js","../src/extras/curves/ArcCurve.js","../src/extras/SceneUtils.js","../src/Three.Legacy.js"],"sourcesContent":["// Polyfills\n\nif ( Number.EPSILON === undefined ) {\n\n\tNumber.EPSILON = Math.pow( 2, - 52 );\n\n}\n\n//\n\nif ( Math.sign === undefined ) {\n\n\t// https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Math/sign\n\n\tMath.sign = function ( x ) {\n\n\t\treturn ( x < 0 ) ? - 1 : ( x > 0 ) ? 1 : + x;\n\n\t};\n\n}\n\nif ( Function.prototype.name === undefined ) {\n\n\t// Missing in IE9-11.\n\t// https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Function/name\n\n\tObject.defineProperty( Function.prototype, 'name', {\n\n\t\tget: function () {\n\n\t\t\treturn this.toString().match( /^\\s*function\\s*(\\S*)\\s*\\(/ )[ 1 ];\n\n\t\t}\n\n\t} );\n\n}\n\nif ( Object.assign === undefined ) {\n\n\t// Missing in IE.\n\t// https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Object/assign\n\n\t( function () {\n\n\t\tObject.assign = function ( target ) {\n\n\t\t\t'use strict';\n\n\t\t\tif ( target === undefined || target === null ) {\n\n\t\t\t\tthrow new TypeError( 'Cannot convert undefined or null to object' );\n\n\t\t\t}\n\n\t\t\tvar output = Object( target );\n\n\t\t\tfor ( var index = 1; index < arguments.length; index ++ ) {\n\n\t\t\t\tvar source = arguments[ index ];\n\n\t\t\t\tif ( source !== undefined && source !== null ) {\n\n\t\t\t\t\tfor ( var nextKey in source ) {\n\n\t\t\t\t\t\tif ( Object.prototype.hasOwnProperty.call( source, nextKey ) ) {\n\n\t\t\t\t\t\t\toutput[ nextKey ] = source[ nextKey ];\n\n\t\t\t\t\t\t}\n\n\t\t\t\t\t}\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t\treturn output;\n\n\t\t};\n\n\t} )();\n\n}\n","/**\n * https://github.com/mrdoob/eventdispatcher.js/\n */\n\nfunction EventDispatcher() {}\n\nObject.assign( EventDispatcher.prototype, {\n\n\taddEventListener: function ( type, listener ) {\n\n\t\tif ( this._listeners === undefined ) this._listeners = {};\n\n\t\tvar listeners = this._listeners;\n\n\t\tif ( listeners[ type ] === undefined ) {\n\n\t\t\tlisteners[ type ] = [];\n\n\t\t}\n\n\t\tif ( listeners[ type ].indexOf( listener ) === - 1 ) {\n\n\t\t\tlisteners[ type ].push( listener );\n\n\t\t}\n\n\t},\n\n\thasEventListener: function ( type, listener ) {\n\n\t\tif ( this._listeners === undefined ) return false;\n\n\t\tvar listeners = this._listeners;\n\n\t\tif ( listeners[ type ] !== undefined && listeners[ type ].indexOf( listener ) !== - 1 ) {\n\n\t\t\treturn true;\n\n\t\t}\n\n\t\treturn false;\n\n\t},\n\n\tremoveEventListener: function ( type, listener ) {\n\n\t\tif ( this._listeners === undefined ) return;\n\n\t\tvar listeners = this._listeners;\n\t\tvar listenerArray = listeners[ type ];\n\n\t\tif ( listenerArray !== undefined ) {\n\n\t\t\tvar index = listenerArray.indexOf( listener );\n\n\t\t\tif ( index !== - 1 ) {\n\n\t\t\t\tlistenerArray.splice( index, 1 );\n\n\t\t\t}\n\n\t\t}\n\n\t},\n\n\tdispatchEvent: function ( event ) {\n\n\t\tif ( this._listeners === undefined ) return;\n\n\t\tvar listeners = this._listeners;\n\t\tvar listenerArray = listeners[ event.type ];\n\n\t\tif ( listenerArray !== undefined ) {\n\n\t\t\tevent.target = this;\n\n\t\t\tvar array = [], i = 0;\n\t\t\tvar length = listenerArray.length;\n\n\t\t\tfor ( i = 0; i < length; i ++ ) {\n\n\t\t\t\tarray[ i ] = listenerArray[ i ];\n\n\t\t\t}\n\n\t\t\tfor ( i = 0; i < length; i ++ ) {\n\n\t\t\t\tarray[ i ].call( this, event );\n\n\t\t\t}\n\n\t\t}\n\n\t}\n\n} );\n\n\nexport { EventDispatcher };\n","export var REVISION = '83dev';\nexport var MOUSE = { LEFT: 0, MIDDLE: 1, RIGHT: 2 };\nexport var CullFaceNone = 0;\nexport var CullFaceBack = 1;\nexport var CullFaceFront = 2;\nexport var CullFaceFrontBack = 3;\nexport var FrontFaceDirectionCW = 0;\nexport var FrontFaceDirectionCCW = 1;\nexport var BasicShadowMap = 0;\nexport var PCFShadowMap = 1;\nexport var PCFSoftShadowMap = 2;\nexport var FrontSide = 0;\nexport var BackSide = 1;\nexport var DoubleSide = 2;\nexport var FlatShading = 1;\nexport var SmoothShading = 2;\nexport var NoColors = 0;\nexport var FaceColors = 1;\nexport var VertexColors = 2;\nexport var NoBlending = 0;\nexport var NormalBlending = 1;\nexport var AdditiveBlending = 2;\nexport var SubtractiveBlending = 3;\nexport var MultiplyBlending = 4;\nexport var CustomBlending = 5;\nexport var BlendingMode = {\n\tNoBlending: NoBlending,\n\tNormalBlending: NormalBlending,\n\tAdditiveBlending: AdditiveBlending,\n\tSubtractiveBlending: SubtractiveBlending,\n\tMultiplyBlending: MultiplyBlending,\n\tCustomBlending: CustomBlending\n};\nexport var AddEquation = 100;\nexport var SubtractEquation = 101;\nexport var ReverseSubtractEquation = 102;\nexport var MinEquation = 103;\nexport var MaxEquation = 104;\nexport var ZeroFactor = 200;\nexport var OneFactor = 201;\nexport var SrcColorFactor = 202;\nexport var OneMinusSrcColorFactor = 203;\nexport var SrcAlphaFactor = 204;\nexport var OneMinusSrcAlphaFactor = 205;\nexport var DstAlphaFactor = 206;\nexport var OneMinusDstAlphaFactor = 207;\nexport var DstColorFactor = 208;\nexport var OneMinusDstColorFactor = 209;\nexport var SrcAlphaSaturateFactor = 210;\nexport var NeverDepth = 0;\nexport var AlwaysDepth = 1;\nexport var LessDepth = 2;\nexport var LessEqualDepth = 3;\nexport var EqualDepth = 4;\nexport var GreaterEqualDepth = 5;\nexport var GreaterDepth = 6;\nexport var NotEqualDepth = 7;\nexport var MultiplyOperation = 0;\nexport var MixOperation = 1;\nexport var AddOperation = 2;\nexport var NoToneMapping = 0;\nexport var LinearToneMapping = 1;\nexport var ReinhardToneMapping = 2;\nexport var Uncharted2ToneMapping = 3;\nexport var CineonToneMapping = 4;\nexport var UVMapping = 300;\nexport var CubeReflectionMapping = 301;\nexport var CubeRefractionMapping = 302;\nexport var EquirectangularReflectionMapping = 303;\nexport var EquirectangularRefractionMapping = 304;\nexport var SphericalReflectionMapping = 305;\nexport var CubeUVReflectionMapping = 306;\nexport var CubeUVRefractionMapping = 307;\nexport var TextureMapping = {\n\tUVMapping: UVMapping,\n\tCubeReflectionMapping: CubeReflectionMapping,\n\tCubeRefractionMapping: CubeRefractionMapping,\n\tEquirectangularReflectionMapping: EquirectangularReflectionMapping,\n\tEquirectangularRefractionMapping: EquirectangularRefractionMapping,\n\tSphericalReflectionMapping: SphericalReflectionMapping,\n\tCubeUVReflectionMapping: CubeUVReflectionMapping,\n\tCubeUVRefractionMapping: CubeUVRefractionMapping\n};\nexport var RepeatWrapping = 1000;\nexport var ClampToEdgeWrapping = 1001;\nexport var MirroredRepeatWrapping = 1002;\nexport var TextureWrapping = {\n\tRepeatWrapping: RepeatWrapping,\n\tClampToEdgeWrapping: ClampToEdgeWrapping,\n\tMirroredRepeatWrapping: MirroredRepeatWrapping\n};\nexport var NearestFilter = 1003;\nexport var NearestMipMapNearestFilter = 1004;\nexport var NearestMipMapLinearFilter = 1005;\nexport var LinearFilter = 1006;\nexport var LinearMipMapNearestFilter = 1007;\nexport var LinearMipMapLinearFilter = 1008;\nexport var TextureFilter = {\n\tNearestFilter: NearestFilter,\n\tNearestMipMapNearestFilter: NearestMipMapNearestFilter,\n\tNearestMipMapLinearFilter: NearestMipMapLinearFilter,\n\tLinearFilter: LinearFilter,\n\tLinearMipMapNearestFilter: LinearMipMapNearestFilter,\n\tLinearMipMapLinearFilter: LinearMipMapLinearFilter\n};\nexport var UnsignedByteType = 1009;\nexport var ByteType = 1010;\nexport var ShortType = 1011;\nexport var UnsignedShortType = 1012;\nexport var IntType = 1013;\nexport var UnsignedIntType = 1014;\nexport var FloatType = 1015;\nexport var HalfFloatType = 1016;\nexport var UnsignedShort4444Type = 1017;\nexport var UnsignedShort5551Type = 1018;\nexport var UnsignedShort565Type = 1019;\nexport var UnsignedInt248Type = 1020;\nexport var AlphaFormat = 1021;\nexport var RGBFormat = 1022;\nexport var RGBAFormat = 1023;\nexport var LuminanceFormat = 1024;\nexport var LuminanceAlphaFormat = 1025;\nexport var RGBEFormat = RGBAFormat;\nexport var DepthFormat = 1026;\nexport var DepthStencilFormat = 1027;\nexport var RGB_S3TC_DXT1_Format = 2001;\nexport var RGBA_S3TC_DXT1_Format = 2002;\nexport var RGBA_S3TC_DXT3_Format = 2003;\nexport var RGBA_S3TC_DXT5_Format = 2004;\nexport var RGB_PVRTC_4BPPV1_Format = 2100;\nexport var RGB_PVRTC_2BPPV1_Format = 2101;\nexport var RGBA_PVRTC_4BPPV1_Format = 2102;\nexport var RGBA_PVRTC_2BPPV1_Format = 2103;\nexport var RGB_ETC1_Format = 2151;\nexport var LoopOnce = 2200;\nexport var LoopRepeat = 2201;\nexport var LoopPingPong = 2202;\nexport var InterpolateDiscrete = 2300;\nexport var InterpolateLinear = 2301;\nexport var InterpolateSmooth = 2302;\nexport var ZeroCurvatureEnding = 2400;\nexport var ZeroSlopeEnding = 2401;\nexport var WrapAroundEnding = 2402;\nexport var TrianglesDrawMode = 0;\nexport var TriangleStripDrawMode = 1;\nexport var TriangleFanDrawMode = 2;\nexport var LinearEncoding = 3000;\nexport var sRGBEncoding = 3001;\nexport var GammaEncoding = 3007;\nexport var RGBEEncoding = 3002;\nexport var LogLuvEncoding = 3003;\nexport var RGBM7Encoding = 3004;\nexport var RGBM16Encoding = 3005;\nexport var RGBDEncoding = 3006;\nexport var BasicDepthPacking = 3200;\nexport var RGBADepthPacking = 3201;\n","/**\n * @author alteredq / http://alteredqualia.com/\n * @author mrdoob / http://mrdoob.com/\n */\n\nvar _Math = {\n\n\tDEG2RAD: Math.PI / 180,\n\tRAD2DEG: 180 / Math.PI,\n\n\tgenerateUUID: function () {\n\n\t\t// http://www.broofa.com/Tools/Math.uuid.htm\n\n\t\tvar chars = '0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz'.split( '' );\n\t\tvar uuid = new Array( 36 );\n\t\tvar rnd = 0, r;\n\n\t\treturn function generateUUID() {\n\n\t\t\tfor ( var i = 0; i < 36; i ++ ) {\n\n\t\t\t\tif ( i === 8 || i === 13 || i === 18 || i === 23 ) {\n\n\t\t\t\t\tuuid[ i ] = '-';\n\n\t\t\t\t} else if ( i === 14 ) {\n\n\t\t\t\t\tuuid[ i ] = '4';\n\n\t\t\t\t} else {\n\n\t\t\t\t\tif ( rnd <= 0x02 ) rnd = 0x2000000 + ( Math.random() * 0x1000000 ) | 0;\n\t\t\t\t\tr = rnd & 0xf;\n\t\t\t\t\trnd = rnd >> 4;\n\t\t\t\t\tuuid[ i ] = chars[ ( i === 19 ) ? ( r & 0x3 ) | 0x8 : r ];\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t\treturn uuid.join( '' );\n\n\t\t};\n\n\t}(),\n\n\tclamp: function ( value, min, max ) {\n\n\t\treturn Math.max( min, Math.min( max, value ) );\n\n\t},\n\n\t// compute euclidian modulo of m % n\n\t// https://en.wikipedia.org/wiki/Modulo_operation\n\n\teuclideanModulo: function ( n, m ) {\n\n\t\treturn ( ( n % m ) + m ) % m;\n\n\t},\n\n\t// Linear mapping from range to range \n\n\tmapLinear: function ( x, a1, a2, b1, b2 ) {\n\n\t\treturn b1 + ( x - a1 ) * ( b2 - b1 ) / ( a2 - a1 );\n\n\t},\n\n\t// https://en.wikipedia.org/wiki/Linear_interpolation\n\n\tlerp: function ( x, y, t ) {\n\n\t\treturn ( 1 - t ) * x + t * y;\n\n\t},\n\n\t// http://en.wikipedia.org/wiki/Smoothstep\n\n\tsmoothstep: function ( x, min, max ) {\n\n\t\tif ( x <= min ) return 0;\n\t\tif ( x >= max ) return 1;\n\n\t\tx = ( x - min ) / ( max - min );\n\n\t\treturn x * x * ( 3 - 2 * x );\n\n\t},\n\n\tsmootherstep: function ( x, min, max ) {\n\n\t\tif ( x <= min ) return 0;\n\t\tif ( x >= max ) return 1;\n\n\t\tx = ( x - min ) / ( max - min );\n\n\t\treturn x * x * x * ( x * ( x * 6 - 15 ) + 10 );\n\n\t},\n\n\trandom16: function () {\n\n\t\tconsole.warn( 'THREE.Math.random16() has been deprecated. Use Math.random() instead.' );\n\t\treturn Math.random();\n\n\t},\n\n\t// Random integer from interval\n\n\trandInt: function ( low, high ) {\n\n\t\treturn low + Math.floor( Math.random() * ( high - low + 1 ) );\n\n\t},\n\n\t// Random float from interval\n\n\trandFloat: function ( low, high ) {\n\n\t\treturn low + Math.random() * ( high - low );\n\n\t},\n\n\t// Random float from <-range/2, range/2> interval\n\n\trandFloatSpread: function ( range ) {\n\n\t\treturn range * ( 0.5 - Math.random() );\n\n\t},\n\n\tdegToRad: function ( degrees ) {\n\n\t\treturn degrees * _Math.DEG2RAD;\n\n\t},\n\n\tradToDeg: function ( radians ) {\n\n\t\treturn radians * _Math.RAD2DEG;\n\n\t},\n\n\tisPowerOfTwo: function ( value ) {\n\n\t\treturn ( value & ( value - 1 ) ) === 0 && value !== 0;\n\n\t},\n\n\tnearestPowerOfTwo: function ( value ) {\n\n\t\treturn Math.pow( 2, Math.round( Math.log( value ) / Math.LN2 ) );\n\n\t},\n\n\tnextPowerOfTwo: function ( value ) {\n\n\t\tvalue --;\n\t\tvalue |= value >> 1;\n\t\tvalue |= value >> 2;\n\t\tvalue |= value >> 4;\n\t\tvalue |= value >> 8;\n\t\tvalue |= value >> 16;\n\t\tvalue ++;\n\n\t\treturn value;\n\n\t}\n\n};\n\n\nexport { _Math };\n","/**\n * @author mrdoob / http://mrdoob.com/\n * @author philogb / http://blog.thejit.org/\n * @author egraether / http://egraether.com/\n * @author zz85 / http://www.lab4games.net/zz85/blog\n */\n\nfunction Vector2( x, y ) {\n\n\tthis.x = x || 0;\n\tthis.y = y || 0;\n\n}\n\nVector2.prototype = {\n\n\tconstructor: Vector2,\n\n\tisVector2: true,\n\n\tget width() {\n\n\t\treturn this.x;\n\n\t},\n\n\tset width( value ) {\n\n\t\tthis.x = value;\n\n\t},\n\n\tget height() {\n\n\t\treturn this.y;\n\n\t},\n\n\tset height( value ) {\n\n\t\tthis.y = value;\n\n\t},\n\n\t//\n\n\tset: function ( x, y ) {\n\n\t\tthis.x = x;\n\t\tthis.y = y;\n\n\t\treturn this;\n\n\t},\n\n\tsetScalar: function ( scalar ) {\n\n\t\tthis.x = scalar;\n\t\tthis.y = scalar;\n\n\t\treturn this;\n\n\t},\n\n\tsetX: function ( x ) {\n\n\t\tthis.x = x;\n\n\t\treturn this;\n\n\t},\n\n\tsetY: function ( y ) {\n\n\t\tthis.y = y;\n\n\t\treturn this;\n\n\t},\n\n\tsetComponent: function ( index, value ) {\n\n\t\tswitch ( index ) {\n\n\t\t\tcase 0: this.x = value; break;\n\t\t\tcase 1: this.y = value; break;\n\t\t\tdefault: throw new Error( 'index is out of range: ' + index );\n\n\t\t}\n\t\t\n\t\treturn this;\n\n\t},\n\n\tgetComponent: function ( index ) {\n\n\t\tswitch ( index ) {\n\n\t\t\tcase 0: return this.x;\n\t\t\tcase 1: return this.y;\n\t\t\tdefault: throw new Error( 'index is out of range: ' + index );\n\n\t\t}\n\n\t},\n\n\tclone: function () {\n\n\t\treturn new this.constructor( this.x, this.y );\n\n\t},\n\n\tcopy: function ( v ) {\n\n\t\tthis.x = v.x;\n\t\tthis.y = v.y;\n\n\t\treturn this;\n\n\t},\n\n\tadd: function ( v, w ) {\n\n\t\tif ( w !== undefined ) {\n\n\t\t\tconsole.warn( 'THREE.Vector2: .add() now only accepts one argument. Use .addVectors( a, b ) instead.' );\n\t\t\treturn this.addVectors( v, w );\n\n\t\t}\n\n\t\tthis.x += v.x;\n\t\tthis.y += v.y;\n\n\t\treturn this;\n\n\t},\n\n\taddScalar: function ( s ) {\n\n\t\tthis.x += s;\n\t\tthis.y += s;\n\n\t\treturn this;\n\n\t},\n\n\taddVectors: function ( a, b ) {\n\n\t\tthis.x = a.x + b.x;\n\t\tthis.y = a.y + b.y;\n\n\t\treturn this;\n\n\t},\n\n\taddScaledVector: function ( v, s ) {\n\n\t\tthis.x += v.x * s;\n\t\tthis.y += v.y * s;\n\n\t\treturn this;\n\n\t},\n\n\tsub: function ( v, w ) {\n\n\t\tif ( w !== undefined ) {\n\n\t\t\tconsole.warn( 'THREE.Vector2: .sub() now only accepts one argument. Use .subVectors( a, b ) instead.' );\n\t\t\treturn this.subVectors( v, w );\n\n\t\t}\n\n\t\tthis.x -= v.x;\n\t\tthis.y -= v.y;\n\n\t\treturn this;\n\n\t},\n\n\tsubScalar: function ( s ) {\n\n\t\tthis.x -= s;\n\t\tthis.y -= s;\n\n\t\treturn this;\n\n\t},\n\n\tsubVectors: function ( a, b ) {\n\n\t\tthis.x = a.x - b.x;\n\t\tthis.y = a.y - b.y;\n\n\t\treturn this;\n\n\t},\n\n\tmultiply: function ( v ) {\n\n\t\tthis.x *= v.x;\n\t\tthis.y *= v.y;\n\n\t\treturn this;\n\n\t},\n\n\tmultiplyScalar: function ( scalar ) {\n\n\t\tif ( isFinite( scalar ) ) {\n\n\t\t\tthis.x *= scalar;\n\t\t\tthis.y *= scalar;\n\n\t\t} else {\n\n\t\t\tthis.x = 0;\n\t\t\tthis.y = 0;\n\n\t\t}\n\n\t\treturn this;\n\n\t},\n\n\tdivide: function ( v ) {\n\n\t\tthis.x /= v.x;\n\t\tthis.y /= v.y;\n\n\t\treturn this;\n\n\t},\n\n\tdivideScalar: function ( scalar ) {\n\n\t\treturn this.multiplyScalar( 1 / scalar );\n\n\t},\n\n\tmin: function ( v ) {\n\n\t\tthis.x = Math.min( this.x, v.x );\n\t\tthis.y = Math.min( this.y, v.y );\n\n\t\treturn this;\n\n\t},\n\n\tmax: function ( v ) {\n\n\t\tthis.x = Math.max( this.x, v.x );\n\t\tthis.y = Math.max( this.y, v.y );\n\n\t\treturn this;\n\n\t},\n\n\tclamp: function ( min, max ) {\n\n\t\t// This function assumes min < max, if this assumption isn't true it will not operate correctly\n\n\t\tthis.x = Math.max( min.x, Math.min( max.x, this.x ) );\n\t\tthis.y = Math.max( min.y, Math.min( max.y, this.y ) );\n\n\t\treturn this;\n\n\t},\n\n\tclampScalar: function () {\n\n\t\tvar min, max;\n\n\t\treturn function clampScalar( minVal, maxVal ) {\n\n\t\t\tif ( min === undefined ) {\n\n\t\t\t\tmin = new Vector2();\n\t\t\t\tmax = new Vector2();\n\n\t\t\t}\n\n\t\t\tmin.set( minVal, minVal );\n\t\t\tmax.set( maxVal, maxVal );\n\n\t\t\treturn this.clamp( min, max );\n\n\t\t};\n\n\t}(),\n\n\tclampLength: function ( min, max ) {\n\n\t\tvar length = this.length();\n\n\t\treturn this.multiplyScalar( Math.max( min, Math.min( max, length ) ) / length );\n\n\t},\n\n\tfloor: function () {\n\n\t\tthis.x = Math.floor( this.x );\n\t\tthis.y = Math.floor( this.y );\n\n\t\treturn this;\n\n\t},\n\n\tceil: function () {\n\n\t\tthis.x = Math.ceil( this.x );\n\t\tthis.y = Math.ceil( this.y );\n\n\t\treturn this;\n\n\t},\n\n\tround: function () {\n\n\t\tthis.x = Math.round( this.x );\n\t\tthis.y = Math.round( this.y );\n\n\t\treturn this;\n\n\t},\n\n\troundToZero: function () {\n\n\t\tthis.x = ( this.x < 0 ) ? Math.ceil( this.x ) : Math.floor( this.x );\n\t\tthis.y = ( this.y < 0 ) ? Math.ceil( this.y ) : Math.floor( this.y );\n\n\t\treturn this;\n\n\t},\n\n\tnegate: function () {\n\n\t\tthis.x = - this.x;\n\t\tthis.y = - this.y;\n\n\t\treturn this;\n\n\t},\n\n\tdot: function ( v ) {\n\n\t\treturn this.x * v.x + this.y * v.y;\n\n\t},\n\n\tlengthSq: function () {\n\n\t\treturn this.x * this.x + this.y * this.y;\n\n\t},\n\n\tlength: function () {\n\n\t\treturn Math.sqrt( this.x * this.x + this.y * this.y );\n\n\t},\n\n\tlengthManhattan: function() {\n\n\t\treturn Math.abs( this.x ) + Math.abs( this.y );\n\n\t},\n\n\tnormalize: function () {\n\n\t\treturn this.divideScalar( this.length() );\n\n\t},\n\n\tangle: function () {\n\n\t\t// computes the angle in radians with respect to the positive x-axis\n\n\t\tvar angle = Math.atan2( this.y, this.x );\n\n\t\tif ( angle < 0 ) angle += 2 * Math.PI;\n\n\t\treturn angle;\n\n\t},\n\n\tdistanceTo: function ( v ) {\n\n\t\treturn Math.sqrt( this.distanceToSquared( v ) );\n\n\t},\n\n\tdistanceToSquared: function ( v ) {\n\n\t\tvar dx = this.x - v.x, dy = this.y - v.y;\n\t\treturn dx * dx + dy * dy;\n\n\t},\n\n\tdistanceToManhattan: function ( v ) {\n\n\t\treturn Math.abs( this.x - v.x ) + Math.abs( this.y - v.y );\n\n\t},\n\n\tsetLength: function ( length ) {\n\n\t\treturn this.multiplyScalar( length / this.length() );\n\n\t},\n\n\tlerp: function ( v, alpha ) {\n\n\t\tthis.x += ( v.x - this.x ) * alpha;\n\t\tthis.y += ( v.y - this.y ) * alpha;\n\n\t\treturn this;\n\n\t},\n\n\tlerpVectors: function ( v1, v2, alpha ) {\n\n\t\treturn this.subVectors( v2, v1 ).multiplyScalar( alpha ).add( v1 );\n\n\t},\n\n\tequals: function ( v ) {\n\n\t\treturn ( ( v.x === this.x ) && ( v.y === this.y ) );\n\n\t},\n\n\tfromArray: function ( array, offset ) {\n\n\t\tif ( offset === undefined ) offset = 0;\n\n\t\tthis.x = array[ offset ];\n\t\tthis.y = array[ offset + 1 ];\n\n\t\treturn this;\n\n\t},\n\n\ttoArray: function ( array, offset ) {\n\n\t\tif ( array === undefined ) array = [];\n\t\tif ( offset === undefined ) offset = 0;\n\n\t\tarray[ offset ] = this.x;\n\t\tarray[ offset + 1 ] = this.y;\n\n\t\treturn array;\n\n\t},\n\n\tfromAttribute: function ( attribute, index, offset ) {\n\n\t\tif ( offset === undefined ) offset = 0;\n\n\t\tindex = index * attribute.itemSize + offset;\n\n\t\tthis.x = attribute.array[ index ];\n\t\tthis.y = attribute.array[ index + 1 ];\n\n\t\treturn this;\n\n\t},\n\n\trotateAround: function ( center, angle ) {\n\n\t\tvar c = Math.cos( angle ), s = Math.sin( angle );\n\n\t\tvar x = this.x - center.x;\n\t\tvar y = this.y - center.y;\n\n\t\tthis.x = x * c - y * s + center.x;\n\t\tthis.y = x * s + y * c + center.y;\n\n\t\treturn this;\n\n\t}\n\n};\n\n\nexport { Vector2 };\n","import { EventDispatcher } from '../core/EventDispatcher';\nimport { UVMapping } from '../constants';\nimport { MirroredRepeatWrapping, ClampToEdgeWrapping, RepeatWrapping, LinearEncoding, UnsignedByteType, RGBAFormat, LinearMipMapLinearFilter, LinearFilter } from '../constants';\nimport { _Math } from '../math/Math';\nimport { Vector2 } from '../math/Vector2';\n\n/**\n * @author mrdoob / http://mrdoob.com/\n * @author alteredq / http://alteredqualia.com/\n * @author szimek / https://github.com/szimek/\n */\n\nfunction Texture( image, mapping, wrapS, wrapT, magFilter, minFilter, format, type, anisotropy, encoding ) {\n\n\tObject.defineProperty( this, 'id', { value: TextureIdCount() } );\n\n\tthis.uuid = _Math.generateUUID();\n\n\tthis.name = '';\n\tthis.sourceFile = '';\n\n\tthis.image = image !== undefined ? image : Texture.DEFAULT_IMAGE;\n\tthis.mipmaps = [];\n\n\tthis.mapping = mapping !== undefined ? mapping : Texture.DEFAULT_MAPPING;\n\n\tthis.wrapS = wrapS !== undefined ? wrapS : ClampToEdgeWrapping;\n\tthis.wrapT = wrapT !== undefined ? wrapT : ClampToEdgeWrapping;\n\n\tthis.magFilter = magFilter !== undefined ? magFilter : LinearFilter;\n\tthis.minFilter = minFilter !== undefined ? minFilter : LinearMipMapLinearFilter;\n\n\tthis.anisotropy = anisotropy !== undefined ? anisotropy : 1;\n\n\tthis.format = format !== undefined ? format : RGBAFormat;\n\tthis.type = type !== undefined ? type : UnsignedByteType;\n\n\tthis.offset = new Vector2( 0, 0 );\n\tthis.repeat = new Vector2( 1, 1 );\n\n\tthis.generateMipmaps = true;\n\tthis.premultiplyAlpha = false;\n\tthis.flipY = true;\n\tthis.unpackAlignment = 4;\t// valid values: 1, 2, 4, 8 (see http://www.khronos.org/opengles/sdk/docs/man/xhtml/glPixelStorei.xml)\n\n\n\t// Values of encoding !== THREE.LinearEncoding only supported on map, envMap and emissiveMap.\n\t//\n\t// Also changing the encoding after already used by a Material will not automatically make the Material\n\t// update. You need to explicitly call Material.needsUpdate to trigger it to recompile.\n\tthis.encoding = encoding !== undefined ? encoding : LinearEncoding;\n\n\tthis.version = 0;\n\tthis.onUpdate = null;\n\n}\n\nTexture.DEFAULT_IMAGE = undefined;\nTexture.DEFAULT_MAPPING = UVMapping;\n\nTexture.prototype = {\n\n\tconstructor: Texture,\n\n\tisTexture: true,\n\n\tset needsUpdate( value ) {\n\n\t\tif ( value === true ) this.version ++;\n\n\t},\n\n\tclone: function () {\n\n\t\treturn new this.constructor().copy( this );\n\n\t},\n\n\tcopy: function ( source ) {\n\n\t\tthis.image = source.image;\n\t\tthis.mipmaps = source.mipmaps.slice( 0 );\n\n\t\tthis.mapping = source.mapping;\n\n\t\tthis.wrapS = source.wrapS;\n\t\tthis.wrapT = source.wrapT;\n\n\t\tthis.magFilter = source.magFilter;\n\t\tthis.minFilter = source.minFilter;\n\n\t\tthis.anisotropy = source.anisotropy;\n\n\t\tthis.format = source.format;\n\t\tthis.type = source.type;\n\n\t\tthis.offset.copy( source.offset );\n\t\tthis.repeat.copy( source.repeat );\n\n\t\tthis.generateMipmaps = source.generateMipmaps;\n\t\tthis.premultiplyAlpha = source.premultiplyAlpha;\n\t\tthis.flipY = source.flipY;\n\t\tthis.unpackAlignment = source.unpackAlignment;\n\t\tthis.encoding = source.encoding;\n\n\t\treturn this;\n\n\t},\n\n\ttoJSON: function ( meta ) {\n\n\t\tif ( meta.textures[ this.uuid ] !== undefined ) {\n\n\t\t\treturn meta.textures[ this.uuid ];\n\n\t\t}\n\n\t\tfunction getDataURL( image ) {\n\n\t\t\tvar canvas;\n\n\t\t\tif ( image.toDataURL !== undefined ) {\n\n\t\t\t\tcanvas = image;\n\n\t\t\t} else {\n\n\t\t\t\tcanvas = document.createElementNS( 'http://www.w3.org/1999/xhtml', 'canvas' );\n\t\t\t\tcanvas.width = image.width;\n\t\t\t\tcanvas.height = image.height;\n\n\t\t\t\tcanvas.getContext( '2d' ).drawImage( image, 0, 0, image.width, image.height );\n\n\t\t\t}\n\n\t\t\tif ( canvas.width > 2048 || canvas.height > 2048 ) {\n\n\t\t\t\treturn canvas.toDataURL( 'image/jpeg', 0.6 );\n\n\t\t\t} else {\n\n\t\t\t\treturn canvas.toDataURL( 'image/png' );\n\n\t\t\t}\n\n\t\t}\n\n\t\tvar output = {\n\t\t\tmetadata: {\n\t\t\t\tversion: 4.4,\n\t\t\t\ttype: 'Texture',\n\t\t\t\tgenerator: 'Texture.toJSON'\n\t\t\t},\n\n\t\t\tuuid: this.uuid,\n\t\t\tname: this.name,\n\n\t\t\tmapping: this.mapping,\n\n\t\t\trepeat: [ this.repeat.x, this.repeat.y ],\n\t\t\toffset: [ this.offset.x, this.offset.y ],\n\t\t\twrap: [ this.wrapS, this.wrapT ],\n\n\t\t\tminFilter: this.minFilter,\n\t\t\tmagFilter: this.magFilter,\n\t\t\tanisotropy: this.anisotropy,\n\n\t\t\tflipY: this.flipY\n\t\t};\n\n\t\tif ( this.image !== undefined ) {\n\n\t\t\t// TODO: Move to THREE.Image\n\n\t\t\tvar image = this.image;\n\n\t\t\tif ( image.uuid === undefined ) {\n\n\t\t\t\timage.uuid = _Math.generateUUID(); // UGH\n\n\t\t\t}\n\n\t\t\tif ( meta.images[ image.uuid ] === undefined ) {\n\n\t\t\t\tmeta.images[ image.uuid ] = {\n\t\t\t\t\tuuid: image.uuid,\n\t\t\t\t\turl: getDataURL( image )\n\t\t\t\t};\n\n\t\t\t}\n\n\t\t\toutput.image = image.uuid;\n\n\t\t}\n\n\t\tmeta.textures[ this.uuid ] = output;\n\n\t\treturn output;\n\n\t},\n\n\tdispose: function () {\n\n\t\tthis.dispatchEvent( { type: 'dispose' } );\n\n\t},\n\n\ttransformUv: function ( uv ) {\n\n\t\tif ( this.mapping !== UVMapping ) return;\n\n\t\tuv.multiply( this.repeat );\n\t\tuv.add( this.offset );\n\n\t\tif ( uv.x < 0 || uv.x > 1 ) {\n\n\t\t\tswitch ( this.wrapS ) {\n\n\t\t\t\tcase RepeatWrapping:\n\n\t\t\t\t\tuv.x = uv.x - Math.floor( uv.x );\n\t\t\t\t\tbreak;\n\n\t\t\t\tcase ClampToEdgeWrapping:\n\n\t\t\t\t\tuv.x = uv.x < 0 ? 0 : 1;\n\t\t\t\t\tbreak;\n\n\t\t\t\tcase MirroredRepeatWrapping:\n\n\t\t\t\t\tif ( Math.abs( Math.floor( uv.x ) % 2 ) === 1 ) {\n\n\t\t\t\t\t\tuv.x = Math.ceil( uv.x ) - uv.x;\n\n\t\t\t\t\t} else {\n\n\t\t\t\t\t\tuv.x = uv.x - Math.floor( uv.x );\n\n\t\t\t\t\t}\n\t\t\t\t\tbreak;\n\n\t\t\t}\n\n\t\t}\n\n\t\tif ( uv.y < 0 || uv.y > 1 ) {\n\n\t\t\tswitch ( this.wrapT ) {\n\n\t\t\t\tcase RepeatWrapping:\n\n\t\t\t\t\tuv.y = uv.y - Math.floor( uv.y );\n\t\t\t\t\tbreak;\n\n\t\t\t\tcase ClampToEdgeWrapping:\n\n\t\t\t\t\tuv.y = uv.y < 0 ? 0 : 1;\n\t\t\t\t\tbreak;\n\n\t\t\t\tcase MirroredRepeatWrapping:\n\n\t\t\t\t\tif ( Math.abs( Math.floor( uv.y ) % 2 ) === 1 ) {\n\n\t\t\t\t\t\tuv.y = Math.ceil( uv.y ) - uv.y;\n\n\t\t\t\t\t} else {\n\n\t\t\t\t\t\tuv.y = uv.y - Math.floor( uv.y );\n\n\t\t\t\t\t}\n\t\t\t\t\tbreak;\n\n\t\t\t}\n\n\t\t}\n\n\t\tif ( this.flipY ) {\n\n\t\t\tuv.y = 1 - uv.y;\n\n\t\t}\n\n\t}\n\n};\n\nObject.assign( Texture.prototype, EventDispatcher.prototype );\n\nvar count = 0;\nfunction TextureIdCount() { return count++; };\n\n\nexport { TextureIdCount, Texture };\n","/**\n * @author supereggbert / http://www.paulbrunt.co.uk/\n * @author philogb / http://blog.thejit.org/\n * @author mikael emtinger / http://gomo.se/\n * @author egraether / http://egraether.com/\n * @author WestLangley / http://github.com/WestLangley\n */\n\nfunction Vector4( x, y, z, w ) {\n\n\tthis.x = x || 0;\n\tthis.y = y || 0;\n\tthis.z = z || 0;\n\tthis.w = ( w !== undefined ) ? w : 1;\n\n}\n\nVector4.prototype = {\n\n\tconstructor: Vector4,\n\n\tisVector4: true,\n\n\tset: function ( x, y, z, w ) {\n\n\t\tthis.x = x;\n\t\tthis.y = y;\n\t\tthis.z = z;\n\t\tthis.w = w;\n\n\t\treturn this;\n\n\t},\n\n\tsetScalar: function ( scalar ) {\n\n\t\tthis.x = scalar;\n\t\tthis.y = scalar;\n\t\tthis.z = scalar;\n\t\tthis.w = scalar;\n\n\t\treturn this;\n\n\t},\n\n\tsetX: function ( x ) {\n\n\t\tthis.x = x;\n\n\t\treturn this;\n\n\t},\n\n\tsetY: function ( y ) {\n\n\t\tthis.y = y;\n\n\t\treturn this;\n\n\t},\n\n\tsetZ: function ( z ) {\n\n\t\tthis.z = z;\n\n\t\treturn this;\n\n\t},\n\n\tsetW: function ( w ) {\n\n\t\tthis.w = w;\n\n\t\treturn this;\n\n\t},\n\n\tsetComponent: function ( index, value ) {\n\n\t\tswitch ( index ) {\n\n\t\t\tcase 0: this.x = value; break;\n\t\t\tcase 1: this.y = value; break;\n\t\t\tcase 2: this.z = value; break;\n\t\t\tcase 3: this.w = value; break;\n\t\t\tdefault: throw new Error( 'index is out of range: ' + index );\n\n\t\t}\n\t\t\n\t\treturn this;\n\n\t},\n\n\tgetComponent: function ( index ) {\n\n\t\tswitch ( index ) {\n\n\t\t\tcase 0: return this.x;\n\t\t\tcase 1: return this.y;\n\t\t\tcase 2: return this.z;\n\t\t\tcase 3: return this.w;\n\t\t\tdefault: throw new Error( 'index is out of range: ' + index );\n\n\t\t}\n\n\t},\n\n\tclone: function () {\n\n\t\treturn new this.constructor( this.x, this.y, this.z, this.w );\n\n\t},\n\n\tcopy: function ( v ) {\n\n\t\tthis.x = v.x;\n\t\tthis.y = v.y;\n\t\tthis.z = v.z;\n\t\tthis.w = ( v.w !== undefined ) ? v.w : 1;\n\n\t\treturn this;\n\n\t},\n\n\tadd: function ( v, w ) {\n\n\t\tif ( w !== undefined ) {\n\n\t\t\tconsole.warn( 'THREE.Vector4: .add() now only accepts one argument. Use .addVectors( a, b ) instead.' );\n\t\t\treturn this.addVectors( v, w );\n\n\t\t}\n\n\t\tthis.x += v.x;\n\t\tthis.y += v.y;\n\t\tthis.z += v.z;\n\t\tthis.w += v.w;\n\n\t\treturn this;\n\n\t},\n\n\taddScalar: function ( s ) {\n\n\t\tthis.x += s;\n\t\tthis.y += s;\n\t\tthis.z += s;\n\t\tthis.w += s;\n\n\t\treturn this;\n\n\t},\n\n\taddVectors: function ( a, b ) {\n\n\t\tthis.x = a.x + b.x;\n\t\tthis.y = a.y + b.y;\n\t\tthis.z = a.z + b.z;\n\t\tthis.w = a.w + b.w;\n\n\t\treturn this;\n\n\t},\n\n\taddScaledVector: function ( v, s ) {\n\n\t\tthis.x += v.x * s;\n\t\tthis.y += v.y * s;\n\t\tthis.z += v.z * s;\n\t\tthis.w += v.w * s;\n\n\t\treturn this;\n\n\t},\n\n\tsub: function ( v, w ) {\n\n\t\tif ( w !== undefined ) {\n\n\t\t\tconsole.warn( 'THREE.Vector4: .sub() now only accepts one argument. Use .subVectors( a, b ) instead.' );\n\t\t\treturn this.subVectors( v, w );\n\n\t\t}\n\n\t\tthis.x -= v.x;\n\t\tthis.y -= v.y;\n\t\tthis.z -= v.z;\n\t\tthis.w -= v.w;\n\n\t\treturn this;\n\n\t},\n\n\tsubScalar: function ( s ) {\n\n\t\tthis.x -= s;\n\t\tthis.y -= s;\n\t\tthis.z -= s;\n\t\tthis.w -= s;\n\n\t\treturn this;\n\n\t},\n\n\tsubVectors: function ( a, b ) {\n\n\t\tthis.x = a.x - b.x;\n\t\tthis.y = a.y - b.y;\n\t\tthis.z = a.z - b.z;\n\t\tthis.w = a.w - b.w;\n\n\t\treturn this;\n\n\t},\n\n\tmultiplyScalar: function ( scalar ) {\n\n\t\tif ( isFinite( scalar ) ) {\n\n\t\t\tthis.x *= scalar;\n\t\t\tthis.y *= scalar;\n\t\t\tthis.z *= scalar;\n\t\t\tthis.w *= scalar;\n\n\t\t} else {\n\n\t\t\tthis.x = 0;\n\t\t\tthis.y = 0;\n\t\t\tthis.z = 0;\n\t\t\tthis.w = 0;\n\n\t\t}\n\n\t\treturn this;\n\n\t},\n\n\tapplyMatrix4: function ( m ) {\n\n\t\tvar x = this.x, y = this.y, z = this.z, w = this.w;\n\t\tvar e = m.elements;\n\n\t\tthis.x = e[ 0 ] * x + e[ 4 ] * y + e[ 8 ] * z + e[ 12 ] * w;\n\t\tthis.y = e[ 1 ] * x + e[ 5 ] * y + e[ 9 ] * z + e[ 13 ] * w;\n\t\tthis.z = e[ 2 ] * x + e[ 6 ] * y + e[ 10 ] * z + e[ 14 ] * w;\n\t\tthis.w = e[ 3 ] * x + e[ 7 ] * y + e[ 11 ] * z + e[ 15 ] * w;\n\n\t\treturn this;\n\n\t},\n\n\tdivideScalar: function ( scalar ) {\n\n\t\treturn this.multiplyScalar( 1 / scalar );\n\n\t},\n\n\tsetAxisAngleFromQuaternion: function ( q ) {\n\n\t\t// http://www.euclideanspace.com/maths/geometry/rotations/conversions/quaternionToAngle/index.htm\n\n\t\t// q is assumed to be normalized\n\n\t\tthis.w = 2 * Math.acos( q.w );\n\n\t\tvar s = Math.sqrt( 1 - q.w * q.w );\n\n\t\tif ( s < 0.0001 ) {\n\n\t\t\t this.x = 1;\n\t\t\t this.y = 0;\n\t\t\t this.z = 0;\n\n\t\t} else {\n\n\t\t\t this.x = q.x / s;\n\t\t\t this.y = q.y / s;\n\t\t\t this.z = q.z / s;\n\n\t\t}\n\n\t\treturn this;\n\n\t},\n\n\tsetAxisAngleFromRotationMatrix: function ( m ) {\n\n\t\t// http://www.euclideanspace.com/maths/geometry/rotations/conversions/matrixToAngle/index.htm\n\n\t\t// assumes the upper 3x3 of m is a pure rotation matrix (i.e, unscaled)\n\n\t\tvar angle, x, y, z,\t\t// variables for result\n\t\t\tepsilon = 0.01,\t\t// margin to allow for rounding errors\n\t\t\tepsilon2 = 0.1,\t\t// margin to distinguish between 0 and 180 degrees\n\n\t\t\tte = m.elements,\n\n\t\t\tm11 = te[ 0 ], m12 = te[ 4 ], m13 = te[ 8 ],\n\t\t\tm21 = te[ 1 ], m22 = te[ 5 ], m23 = te[ 9 ],\n\t\t\tm31 = te[ 2 ], m32 = te[ 6 ], m33 = te[ 10 ];\n\n\t\tif ( ( Math.abs( m12 - m21 ) < epsilon ) &&\n\t\t ( Math.abs( m13 - m31 ) < epsilon ) &&\n\t\t ( Math.abs( m23 - m32 ) < epsilon ) ) {\n\n\t\t\t// singularity found\n\t\t\t// first check for identity matrix which must have +1 for all terms\n\t\t\t// in leading diagonal and zero in other terms\n\n\t\t\tif ( ( Math.abs( m12 + m21 ) < epsilon2 ) &&\n\t\t\t ( Math.abs( m13 + m31 ) < epsilon2 ) &&\n\t\t\t ( Math.abs( m23 + m32 ) < epsilon2 ) &&\n\t\t\t ( Math.abs( m11 + m22 + m33 - 3 ) < epsilon2 ) ) {\n\n\t\t\t\t// this singularity is identity matrix so angle = 0\n\n\t\t\t\tthis.set( 1, 0, 0, 0 );\n\n\t\t\t\treturn this; // zero angle, arbitrary axis\n\n\t\t\t}\n\n\t\t\t// otherwise this singularity is angle = 180\n\n\t\t\tangle = Math.PI;\n\n\t\t\tvar xx = ( m11 + 1 ) / 2;\n\t\t\tvar yy = ( m22 + 1 ) / 2;\n\t\t\tvar zz = ( m33 + 1 ) / 2;\n\t\t\tvar xy = ( m12 + m21 ) / 4;\n\t\t\tvar xz = ( m13 + m31 ) / 4;\n\t\t\tvar yz = ( m23 + m32 ) / 4;\n\n\t\t\tif ( ( xx > yy ) && ( xx > zz ) ) {\n\n\t\t\t\t// m11 is the largest diagonal term\n\n\t\t\t\tif ( xx < epsilon ) {\n\n\t\t\t\t\tx = 0;\n\t\t\t\t\ty = 0.707106781;\n\t\t\t\t\tz = 0.707106781;\n\n\t\t\t\t} else {\n\n\t\t\t\t\tx = Math.sqrt( xx );\n\t\t\t\t\ty = xy / x;\n\t\t\t\t\tz = xz / x;\n\n\t\t\t\t}\n\n\t\t\t} else if ( yy > zz ) {\n\n\t\t\t\t// m22 is the largest diagonal term\n\n\t\t\t\tif ( yy < epsilon ) {\n\n\t\t\t\t\tx = 0.707106781;\n\t\t\t\t\ty = 0;\n\t\t\t\t\tz = 0.707106781;\n\n\t\t\t\t} else {\n\n\t\t\t\t\ty = Math.sqrt( yy );\n\t\t\t\t\tx = xy / y;\n\t\t\t\t\tz = yz / y;\n\n\t\t\t\t}\n\n\t\t\t} else {\n\n\t\t\t\t// m33 is the largest diagonal term so base result on this\n\n\t\t\t\tif ( zz < epsilon ) {\n\n\t\t\t\t\tx = 0.707106781;\n\t\t\t\t\ty = 0.707106781;\n\t\t\t\t\tz = 0;\n\n\t\t\t\t} else {\n\n\t\t\t\t\tz = Math.sqrt( zz );\n\t\t\t\t\tx = xz / z;\n\t\t\t\t\ty = yz / z;\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t\tthis.set( x, y, z, angle );\n\n\t\t\treturn this; // return 180 deg rotation\n\n\t\t}\n\n\t\t// as we have reached here there are no singularities so we can handle normally\n\n\t\tvar s = Math.sqrt( ( m32 - m23 ) * ( m32 - m23 ) +\n\t\t ( m13 - m31 ) * ( m13 - m31 ) +\n\t\t ( m21 - m12 ) * ( m21 - m12 ) ); // used to normalize\n\n\t\tif ( Math.abs( s ) < 0.001 ) s = 1;\n\n\t\t// prevent divide by zero, should not happen if matrix is orthogonal and should be\n\t\t// caught by singularity test above, but I've left it in just in case\n\n\t\tthis.x = ( m32 - m23 ) / s;\n\t\tthis.y = ( m13 - m31 ) / s;\n\t\tthis.z = ( m21 - m12 ) / s;\n\t\tthis.w = Math.acos( ( m11 + m22 + m33 - 1 ) / 2 );\n\n\t\treturn this;\n\n\t},\n\n\tmin: function ( v ) {\n\n\t\tthis.x = Math.min( this.x, v.x );\n\t\tthis.y = Math.min( this.y, v.y );\n\t\tthis.z = Math.min( this.z, v.z );\n\t\tthis.w = Math.min( this.w, v.w );\n\n\t\treturn this;\n\n\t},\n\n\tmax: function ( v ) {\n\n\t\tthis.x = Math.max( this.x, v.x );\n\t\tthis.y = Math.max( this.y, v.y );\n\t\tthis.z = Math.max( this.z, v.z );\n\t\tthis.w = Math.max( this.w, v.w );\n\n\t\treturn this;\n\n\t},\n\n\tclamp: function ( min, max ) {\n\n\t\t// This function assumes min < max, if this assumption isn't true it will not operate correctly\n\n\t\tthis.x = Math.max( min.x, Math.min( max.x, this.x ) );\n\t\tthis.y = Math.max( min.y, Math.min( max.y, this.y ) );\n\t\tthis.z = Math.max( min.z, Math.min( max.z, this.z ) );\n\t\tthis.w = Math.max( min.w, Math.min( max.w, this.w ) );\n\n\t\treturn this;\n\n\t},\n\n\tclampScalar: function () {\n\n\t\tvar min, max;\n\n\t\treturn function clampScalar( minVal, maxVal ) {\n\n\t\t\tif ( min === undefined ) {\n\n\t\t\t\tmin = new Vector4();\n\t\t\t\tmax = new Vector4();\n\n\t\t\t}\n\n\t\t\tmin.set( minVal, minVal, minVal, minVal );\n\t\t\tmax.set( maxVal, maxVal, maxVal, maxVal );\n\n\t\t\treturn this.clamp( min, max );\n\n\t\t};\n\n\t}(),\n\n\tfloor: function () {\n\n\t\tthis.x = Math.floor( this.x );\n\t\tthis.y = Math.floor( this.y );\n\t\tthis.z = Math.floor( this.z );\n\t\tthis.w = Math.floor( this.w );\n\n\t\treturn this;\n\n\t},\n\n\tceil: function () {\n\n\t\tthis.x = Math.ceil( this.x );\n\t\tthis.y = Math.ceil( this.y );\n\t\tthis.z = Math.ceil( this.z );\n\t\tthis.w = Math.ceil( this.w );\n\n\t\treturn this;\n\n\t},\n\n\tround: function () {\n\n\t\tthis.x = Math.round( this.x );\n\t\tthis.y = Math.round( this.y );\n\t\tthis.z = Math.round( this.z );\n\t\tthis.w = Math.round( this.w );\n\n\t\treturn this;\n\n\t},\n\n\troundToZero: function () {\n\n\t\tthis.x = ( this.x < 0 ) ? Math.ceil( this.x ) : Math.floor( this.x );\n\t\tthis.y = ( this.y < 0 ) ? Math.ceil( this.y ) : Math.floor( this.y );\n\t\tthis.z = ( this.z < 0 ) ? Math.ceil( this.z ) : Math.floor( this.z );\n\t\tthis.w = ( this.w < 0 ) ? Math.ceil( this.w ) : Math.floor( this.w );\n\n\t\treturn this;\n\n\t},\n\n\tnegate: function () {\n\n\t\tthis.x = - this.x;\n\t\tthis.y = - this.y;\n\t\tthis.z = - this.z;\n\t\tthis.w = - this.w;\n\n\t\treturn this;\n\n\t},\n\n\tdot: function ( v ) {\n\n\t\treturn this.x * v.x + this.y * v.y + this.z * v.z + this.w * v.w;\n\n\t},\n\n\tlengthSq: function () {\n\n\t\treturn this.x * this.x + this.y * this.y + this.z * this.z + this.w * this.w;\n\n\t},\n\n\tlength: function () {\n\n\t\treturn Math.sqrt( this.x * this.x + this.y * this.y + this.z * this.z + this.w * this.w );\n\n\t},\n\n\tlengthManhattan: function () {\n\n\t\treturn Math.abs( this.x ) + Math.abs( this.y ) + Math.abs( this.z ) + Math.abs( this.w );\n\n\t},\n\n\tnormalize: function () {\n\n\t\treturn this.divideScalar( this.length() );\n\n\t},\n\n\tsetLength: function ( length ) {\n\n\t\treturn this.multiplyScalar( length / this.length() );\n\n\t},\n\n\tlerp: function ( v, alpha ) {\n\n\t\tthis.x += ( v.x - this.x ) * alpha;\n\t\tthis.y += ( v.y - this.y ) * alpha;\n\t\tthis.z += ( v.z - this.z ) * alpha;\n\t\tthis.w += ( v.w - this.w ) * alpha;\n\n\t\treturn this;\n\n\t},\n\n\tlerpVectors: function ( v1, v2, alpha ) {\n\n\t\treturn this.subVectors( v2, v1 ).multiplyScalar( alpha ).add( v1 );\n\n\t},\n\n\tequals: function ( v ) {\n\n\t\treturn ( ( v.x === this.x ) && ( v.y === this.y ) && ( v.z === this.z ) && ( v.w === this.w ) );\n\n\t},\n\n\tfromArray: function ( array, offset ) {\n\n\t\tif ( offset === undefined ) offset = 0;\n\n\t\tthis.x = array[ offset ];\n\t\tthis.y = array[ offset + 1 ];\n\t\tthis.z = array[ offset + 2 ];\n\t\tthis.w = array[ offset + 3 ];\n\n\t\treturn this;\n\n\t},\n\n\ttoArray: function ( array, offset ) {\n\n\t\tif ( array === undefined ) array = [];\n\t\tif ( offset === undefined ) offset = 0;\n\n\t\tarray[ offset ] = this.x;\n\t\tarray[ offset + 1 ] = this.y;\n\t\tarray[ offset + 2 ] = this.z;\n\t\tarray[ offset + 3 ] = this.w;\n\n\t\treturn array;\n\n\t},\n\n\tfromAttribute: function ( attribute, index, offset ) {\n\n\t\tif ( offset === undefined ) offset = 0;\n\n\t\tindex = index * attribute.itemSize + offset;\n\n\t\tthis.x = attribute.array[ index ];\n\t\tthis.y = attribute.array[ index + 1 ];\n\t\tthis.z = attribute.array[ index + 2 ];\n\t\tthis.w = attribute.array[ index + 3 ];\n\n\t\treturn this;\n\n\t}\n\n};\n\n\nexport { Vector4 };\n","import { EventDispatcher } from '../core/EventDispatcher';\nimport { Texture } from '../textures/Texture';\nimport { LinearFilter } from '../constants';\nimport { Vector4 } from '../math/Vector4';\nimport { _Math } from '../math/Math';\n\n/**\n * @author szimek / https://github.com/szimek/\n * @author alteredq / http://alteredqualia.com/\n * @author Marius Kintel / https://github.com/kintel\n */\n\n/*\n In options, we can specify:\n * Texture parameters for an auto-generated target texture\n * depthBuffer/stencilBuffer: Booleans to indicate if we should generate these buffers\n*/\nfunction WebGLRenderTarget( width, height, options ) {\n\n\tthis.uuid = _Math.generateUUID();\n\n\tthis.width = width;\n\tthis.height = height;\n\n\tthis.scissor = new Vector4( 0, 0, width, height );\n\tthis.scissorTest = false;\n\n\tthis.viewport = new Vector4( 0, 0, width, height );\n\n\toptions = options || {};\n\n\tif ( options.minFilter === undefined ) options.minFilter = LinearFilter;\n\n\tthis.texture = new Texture( undefined, undefined, options.wrapS, options.wrapT, options.magFilter, options.minFilter, options.format, options.type, options.anisotropy, options.encoding );\n\n\tthis.depthBuffer = options.depthBuffer !== undefined ? options.depthBuffer : true;\n\tthis.stencilBuffer = options.stencilBuffer !== undefined ? options.stencilBuffer : true;\n\tthis.depthTexture = options.depthTexture !== undefined ? options.depthTexture : null;\n\n}\n\nObject.assign( WebGLRenderTarget.prototype, EventDispatcher.prototype, {\n\n\tisWebGLRenderTarget: true,\n\n\tsetSize: function ( width, height ) {\n\n\t\tif ( this.width !== width || this.height !== height ) {\n\n\t\t\tthis.width = width;\n\t\t\tthis.height = height;\n\n\t\t\tthis.dispose();\n\n\t\t}\n\n\t\tthis.viewport.set( 0, 0, width, height );\n\t\tthis.scissor.set( 0, 0, width, height );\n\n\t},\n\n\tclone: function () {\n\n\t\treturn new this.constructor().copy( this );\n\n\t},\n\n\tcopy: function ( source ) {\n\n\t\tthis.width = source.width;\n\t\tthis.height = source.height;\n\n\t\tthis.viewport.copy( source.viewport );\n\n\t\tthis.texture = source.texture.clone();\n\n\t\tthis.depthBuffer = source.depthBuffer;\n\t\tthis.stencilBuffer = source.stencilBuffer;\n\t\tthis.depthTexture = source.depthTexture;\n\n\t\treturn this;\n\n\t},\n\n\tdispose: function () {\n\n\t\tthis.dispatchEvent( { type: 'dispose' } );\n\n\t}\n\n} );\n\n\nexport { WebGLRenderTarget };\n","import { WebGLRenderTarget } from './WebGLRenderTarget';\n\n/**\n * @author alteredq / http://alteredqualia.com\n */\n\nfunction WebGLRenderTargetCube( width, height, options ) {\n\n\tWebGLRenderTarget.call( this, width, height, options );\n\n\tthis.activeCubeFace = 0; // PX 0, NX 1, PY 2, NY 3, PZ 4, NZ 5\n\tthis.activeMipMapLevel = 0;\n\n}\n\nWebGLRenderTargetCube.prototype = Object.create( WebGLRenderTarget.prototype );\nWebGLRenderTargetCube.prototype.constructor = WebGLRenderTargetCube;\n\nWebGLRenderTargetCube.prototype.isWebGLRenderTargetCube = true;\n\n\nexport { WebGLRenderTargetCube };\n","import { Vector3 } from './Vector3';\n\n/**\n * @author mikael emtinger / http://gomo.se/\n * @author alteredq / http://alteredqualia.com/\n * @author WestLangley / http://github.com/WestLangley\n * @author bhouston / http://clara.io\n */\n\nfunction Quaternion( x, y, z, w ) {\n\n\tthis._x = x || 0;\n\tthis._y = y || 0;\n\tthis._z = z || 0;\n\tthis._w = ( w !== undefined ) ? w : 1;\n\n}\n\nQuaternion.prototype = {\n\n\tconstructor: Quaternion,\n\n\tget x () {\n\n\t\treturn this._x;\n\n\t},\n\n\tset x ( value ) {\n\n\t\tthis._x = value;\n\t\tthis.onChangeCallback();\n\n\t},\n\n\tget y () {\n\n\t\treturn this._y;\n\n\t},\n\n\tset y ( value ) {\n\n\t\tthis._y = value;\n\t\tthis.onChangeCallback();\n\n\t},\n\n\tget z () {\n\n\t\treturn this._z;\n\n\t},\n\n\tset z ( value ) {\n\n\t\tthis._z = value;\n\t\tthis.onChangeCallback();\n\n\t},\n\n\tget w () {\n\n\t\treturn this._w;\n\n\t},\n\n\tset w ( value ) {\n\n\t\tthis._w = value;\n\t\tthis.onChangeCallback();\n\n\t},\n\n\tset: function ( x, y, z, w ) {\n\n\t\tthis._x = x;\n\t\tthis._y = y;\n\t\tthis._z = z;\n\t\tthis._w = w;\n\n\t\tthis.onChangeCallback();\n\n\t\treturn this;\n\n\t},\n\n\tclone: function () {\n\n\t\treturn new this.constructor( this._x, this._y, this._z, this._w );\n\n\t},\n\n\tcopy: function ( quaternion ) {\n\n\t\tthis._x = quaternion.x;\n\t\tthis._y = quaternion.y;\n\t\tthis._z = quaternion.z;\n\t\tthis._w = quaternion.w;\n\n\t\tthis.onChangeCallback();\n\n\t\treturn this;\n\n\t},\n\n\tsetFromEuler: function ( euler, update ) {\n\n\t\tif ( (euler && euler.isEuler) === false ) {\n\n\t\t\tthrow new Error( 'THREE.Quaternion: .setFromEuler() now expects an Euler rotation rather than a Vector3 and order.' );\n\n\t\t}\n\n\t\t// http://www.mathworks.com/matlabcentral/fileexchange/\n\t\t// \t20696-function-to-convert-between-dcm-euler-angles-quaternions-and-euler-vectors/\n\t\t//\tcontent/SpinCalc.m\n\n\t\tvar c1 = Math.cos( euler._x / 2 );\n\t\tvar c2 = Math.cos( euler._y / 2 );\n\t\tvar c3 = Math.cos( euler._z / 2 );\n\t\tvar s1 = Math.sin( euler._x / 2 );\n\t\tvar s2 = Math.sin( euler._y / 2 );\n\t\tvar s3 = Math.sin( euler._z / 2 );\n\n\t\tvar order = euler.order;\n\n\t\tif ( order === 'XYZ' ) {\n\n\t\t\tthis._x = s1 * c2 * c3 + c1 * s2 * s3;\n\t\t\tthis._y = c1 * s2 * c3 - s1 * c2 * s3;\n\t\t\tthis._z = c1 * c2 * s3 + s1 * s2 * c3;\n\t\t\tthis._w = c1 * c2 * c3 - s1 * s2 * s3;\n\n\t\t} else if ( order === 'YXZ' ) {\n\n\t\t\tthis._x = s1 * c2 * c3 + c1 * s2 * s3;\n\t\t\tthis._y = c1 * s2 * c3 - s1 * c2 * s3;\n\t\t\tthis._z = c1 * c2 * s3 - s1 * s2 * c3;\n\t\t\tthis._w = c1 * c2 * c3 + s1 * s2 * s3;\n\n\t\t} else if ( order === 'ZXY' ) {\n\n\t\t\tthis._x = s1 * c2 * c3 - c1 * s2 * s3;\n\t\t\tthis._y = c1 * s2 * c3 + s1 * c2 * s3;\n\t\t\tthis._z = c1 * c2 * s3 + s1 * s2 * c3;\n\t\t\tthis._w = c1 * c2 * c3 - s1 * s2 * s3;\n\n\t\t} else if ( order === 'ZYX' ) {\n\n\t\t\tthis._x = s1 * c2 * c3 - c1 * s2 * s3;\n\t\t\tthis._y = c1 * s2 * c3 + s1 * c2 * s3;\n\t\t\tthis._z = c1 * c2 * s3 - s1 * s2 * c3;\n\t\t\tthis._w = c1 * c2 * c3 + s1 * s2 * s3;\n\n\t\t} else if ( order === 'YZX' ) {\n\n\t\t\tthis._x = s1 * c2 * c3 + c1 * s2 * s3;\n\t\t\tthis._y = c1 * s2 * c3 + s1 * c2 * s3;\n\t\t\tthis._z = c1 * c2 * s3 - s1 * s2 * c3;\n\t\t\tthis._w = c1 * c2 * c3 - s1 * s2 * s3;\n\n\t\t} else if ( order === 'XZY' ) {\n\n\t\t\tthis._x = s1 * c2 * c3 - c1 * s2 * s3;\n\t\t\tthis._y = c1 * s2 * c3 - s1 * c2 * s3;\n\t\t\tthis._z = c1 * c2 * s3 + s1 * s2 * c3;\n\t\t\tthis._w = c1 * c2 * c3 + s1 * s2 * s3;\n\n\t\t}\n\n\t\tif ( update !== false ) this.onChangeCallback();\n\n\t\treturn this;\n\n\t},\n\n\tsetFromAxisAngle: function ( axis, angle ) {\n\n\t\t// http://www.euclideanspace.com/maths/geometry/rotations/conversions/angleToQuaternion/index.htm\n\n\t\t// assumes axis is normalized\n\n\t\tvar halfAngle = angle / 2, s = Math.sin( halfAngle );\n\n\t\tthis._x = axis.x * s;\n\t\tthis._y = axis.y * s;\n\t\tthis._z = axis.z * s;\n\t\tthis._w = Math.cos( halfAngle );\n\n\t\tthis.onChangeCallback();\n\n\t\treturn this;\n\n\t},\n\n\tsetFromRotationMatrix: function ( m ) {\n\n\t\t// http://www.euclideanspace.com/maths/geometry/rotations/conversions/matrixToQuaternion/index.htm\n\n\t\t// assumes the upper 3x3 of m is a pure rotation matrix (i.e, unscaled)\n\n\t\tvar te = m.elements,\n\n\t\t\tm11 = te[ 0 ], m12 = te[ 4 ], m13 = te[ 8 ],\n\t\t\tm21 = te[ 1 ], m22 = te[ 5 ], m23 = te[ 9 ],\n\t\t\tm31 = te[ 2 ], m32 = te[ 6 ], m33 = te[ 10 ],\n\n\t\t\ttrace = m11 + m22 + m33,\n\t\t\ts;\n\n\t\tif ( trace > 0 ) {\n\n\t\t\ts = 0.5 / Math.sqrt( trace + 1.0 );\n\n\t\t\tthis._w = 0.25 / s;\n\t\t\tthis._x = ( m32 - m23 ) * s;\n\t\t\tthis._y = ( m13 - m31 ) * s;\n\t\t\tthis._z = ( m21 - m12 ) * s;\n\n\t\t} else if ( m11 > m22 && m11 > m33 ) {\n\n\t\t\ts = 2.0 * Math.sqrt( 1.0 + m11 - m22 - m33 );\n\n\t\t\tthis._w = ( m32 - m23 ) / s;\n\t\t\tthis._x = 0.25 * s;\n\t\t\tthis._y = ( m12 + m21 ) / s;\n\t\t\tthis._z = ( m13 + m31 ) / s;\n\n\t\t} else if ( m22 > m33 ) {\n\n\t\t\ts = 2.0 * Math.sqrt( 1.0 + m22 - m11 - m33 );\n\n\t\t\tthis._w = ( m13 - m31 ) / s;\n\t\t\tthis._x = ( m12 + m21 ) / s;\n\t\t\tthis._y = 0.25 * s;\n\t\t\tthis._z = ( m23 + m32 ) / s;\n\n\t\t} else {\n\n\t\t\ts = 2.0 * Math.sqrt( 1.0 + m33 - m11 - m22 );\n\n\t\t\tthis._w = ( m21 - m12 ) / s;\n\t\t\tthis._x = ( m13 + m31 ) / s;\n\t\t\tthis._y = ( m23 + m32 ) / s;\n\t\t\tthis._z = 0.25 * s;\n\n\t\t}\n\n\t\tthis.onChangeCallback();\n\n\t\treturn this;\n\n\t},\n\n\tsetFromUnitVectors: function () {\n\n\t\t// http://lolengine.net/blog/2014/02/24/quaternion-from-two-vectors-final\n\n\t\t// assumes direction vectors vFrom and vTo are normalized\n\n\t\tvar v1, r;\n\n\t\tvar EPS = 0.000001;\n\n\t\treturn function setFromUnitVectors( vFrom, vTo ) {\n\n\t\t\tif ( v1 === undefined ) v1 = new Vector3();\n\n\t\t\tr = vFrom.dot( vTo ) + 1;\n\n\t\t\tif ( r < EPS ) {\n\n\t\t\t\tr = 0;\n\n\t\t\t\tif ( Math.abs( vFrom.x ) > Math.abs( vFrom.z ) ) {\n\n\t\t\t\t\tv1.set( - vFrom.y, vFrom.x, 0 );\n\n\t\t\t\t} else {\n\n\t\t\t\t\tv1.set( 0, - vFrom.z, vFrom.y );\n\n\t\t\t\t}\n\n\t\t\t} else {\n\n\t\t\t\tv1.crossVectors( vFrom, vTo );\n\n\t\t\t}\n\n\t\t\tthis._x = v1.x;\n\t\t\tthis._y = v1.y;\n\t\t\tthis._z = v1.z;\n\t\t\tthis._w = r;\n\n\t\t\treturn this.normalize();\n\n\t\t};\n\n\t}(),\n\n\tinverse: function () {\n\n\t\treturn this.conjugate().normalize();\n\n\t},\n\n\tconjugate: function () {\n\n\t\tthis._x *= - 1;\n\t\tthis._y *= - 1;\n\t\tthis._z *= - 1;\n\n\t\tthis.onChangeCallback();\n\n\t\treturn this;\n\n\t},\n\n\tdot: function ( v ) {\n\n\t\treturn this._x * v._x + this._y * v._y + this._z * v._z + this._w * v._w;\n\n\t},\n\n\tlengthSq: function () {\n\n\t\treturn this._x * this._x + this._y * this._y + this._z * this._z + this._w * this._w;\n\n\t},\n\n\tlength: function () {\n\n\t\treturn Math.sqrt( this._x * this._x + this._y * this._y + this._z * this._z + this._w * this._w );\n\n\t},\n\n\tnormalize: function () {\n\n\t\tvar l = this.length();\n\n\t\tif ( l === 0 ) {\n\n\t\t\tthis._x = 0;\n\t\t\tthis._y = 0;\n\t\t\tthis._z = 0;\n\t\t\tthis._w = 1;\n\n\t\t} else {\n\n\t\t\tl = 1 / l;\n\n\t\t\tthis._x = this._x * l;\n\t\t\tthis._y = this._y * l;\n\t\t\tthis._z = this._z * l;\n\t\t\tthis._w = this._w * l;\n\n\t\t}\n\n\t\tthis.onChangeCallback();\n\n\t\treturn this;\n\n\t},\n\n\tmultiply: function ( q, p ) {\n\n\t\tif ( p !== undefined ) {\n\n\t\t\tconsole.warn( 'THREE.Quaternion: .multiply() now only accepts one argument. Use .multiplyQuaternions( a, b ) instead.' );\n\t\t\treturn this.multiplyQuaternions( q, p );\n\n\t\t}\n\n\t\treturn this.multiplyQuaternions( this, q );\n\n\t},\n\n\tpremultiply: function ( q ) {\n\n\t\treturn this.multiplyQuaternions( q, this );\n\n\t},\n\n\tmultiplyQuaternions: function ( a, b ) {\n\n\t\t// from http://www.euclideanspace.com/maths/algebra/realNormedAlgebra/quaternions/code/index.htm\n\n\t\tvar qax = a._x, qay = a._y, qaz = a._z, qaw = a._w;\n\t\tvar qbx = b._x, qby = b._y, qbz = b._z, qbw = b._w;\n\n\t\tthis._x = qax * qbw + qaw * qbx + qay * qbz - qaz * qby;\n\t\tthis._y = qay * qbw + qaw * qby + qaz * qbx - qax * qbz;\n\t\tthis._z = qaz * qbw + qaw * qbz + qax * qby - qay * qbx;\n\t\tthis._w = qaw * qbw - qax * qbx - qay * qby - qaz * qbz;\n\n\t\tthis.onChangeCallback();\n\n\t\treturn this;\n\n\t},\n\n\tslerp: function ( qb, t ) {\n\n\t\tif ( t === 0 ) return this;\n\t\tif ( t === 1 ) return this.copy( qb );\n\n\t\tvar x = this._x, y = this._y, z = this._z, w = this._w;\n\n\t\t// http://www.euclideanspace.com/maths/algebra/realNormedAlgebra/quaternions/slerp/\n\n\t\tvar cosHalfTheta = w * qb._w + x * qb._x + y * qb._y + z * qb._z;\n\n\t\tif ( cosHalfTheta < 0 ) {\n\n\t\t\tthis._w = - qb._w;\n\t\t\tthis._x = - qb._x;\n\t\t\tthis._y = - qb._y;\n\t\t\tthis._z = - qb._z;\n\n\t\t\tcosHalfTheta = - cosHalfTheta;\n\n\t\t} else {\n\n\t\t\tthis.copy( qb );\n\n\t\t}\n\n\t\tif ( cosHalfTheta >= 1.0 ) {\n\n\t\t\tthis._w = w;\n\t\t\tthis._x = x;\n\t\t\tthis._y = y;\n\t\t\tthis._z = z;\n\n\t\t\treturn this;\n\n\t\t}\n\n\t\tvar sinHalfTheta = Math.sqrt( 1.0 - cosHalfTheta * cosHalfTheta );\n\n\t\tif ( Math.abs( sinHalfTheta ) < 0.001 ) {\n\n\t\t\tthis._w = 0.5 * ( w + this._w );\n\t\t\tthis._x = 0.5 * ( x + this._x );\n\t\t\tthis._y = 0.5 * ( y + this._y );\n\t\t\tthis._z = 0.5 * ( z + this._z );\n\n\t\t\treturn this;\n\n\t\t}\n\n\t\tvar halfTheta = Math.atan2( sinHalfTheta, cosHalfTheta );\n\t\tvar ratioA = Math.sin( ( 1 - t ) * halfTheta ) / sinHalfTheta,\n\t\tratioB = Math.sin( t * halfTheta ) / sinHalfTheta;\n\n\t\tthis._w = ( w * ratioA + this._w * ratioB );\n\t\tthis._x = ( x * ratioA + this._x * ratioB );\n\t\tthis._y = ( y * ratioA + this._y * ratioB );\n\t\tthis._z = ( z * ratioA + this._z * ratioB );\n\n\t\tthis.onChangeCallback();\n\n\t\treturn this;\n\n\t},\n\n\tequals: function ( quaternion ) {\n\n\t\treturn ( quaternion._x === this._x ) && ( quaternion._y === this._y ) && ( quaternion._z === this._z ) && ( quaternion._w === this._w );\n\n\t},\n\n\tfromArray: function ( array, offset ) {\n\n\t\tif ( offset === undefined ) offset = 0;\n\n\t\tthis._x = array[ offset ];\n\t\tthis._y = array[ offset + 1 ];\n\t\tthis._z = array[ offset + 2 ];\n\t\tthis._w = array[ offset + 3 ];\n\n\t\tthis.onChangeCallback();\n\n\t\treturn this;\n\n\t},\n\n\ttoArray: function ( array, offset ) {\n\n\t\tif ( array === undefined ) array = [];\n\t\tif ( offset === undefined ) offset = 0;\n\n\t\tarray[ offset ] = this._x;\n\t\tarray[ offset + 1 ] = this._y;\n\t\tarray[ offset + 2 ] = this._z;\n\t\tarray[ offset + 3 ] = this._w;\n\n\t\treturn array;\n\n\t},\n\n\tonChange: function ( callback ) {\n\n\t\tthis.onChangeCallback = callback;\n\n\t\treturn this;\n\n\t},\n\n\tonChangeCallback: function () {}\n\n};\n\nObject.assign( Quaternion, {\n\n\tslerp: function( qa, qb, qm, t ) {\n\n\t\treturn qm.copy( qa ).slerp( qb, t );\n\n\t},\n\n\tslerpFlat: function(\n\t\t\tdst, dstOffset, src0, srcOffset0, src1, srcOffset1, t ) {\n\n\t\t// fuzz-free, array-based Quaternion SLERP operation\n\n\t\tvar x0 = src0[ srcOffset0 + 0 ],\n\t\t\ty0 = src0[ srcOffset0 + 1 ],\n\t\t\tz0 = src0[ srcOffset0 + 2 ],\n\t\t\tw0 = src0[ srcOffset0 + 3 ],\n\n\t\t\tx1 = src1[ srcOffset1 + 0 ],\n\t\t\ty1 = src1[ srcOffset1 + 1 ],\n\t\t\tz1 = src1[ srcOffset1 + 2 ],\n\t\t\tw1 = src1[ srcOffset1 + 3 ];\n\n\t\tif ( w0 !== w1 || x0 !== x1 || y0 !== y1 || z0 !== z1 ) {\n\n\t\t\tvar s = 1 - t,\n\n\t\t\t\tcos = x0 * x1 + y0 * y1 + z0 * z1 + w0 * w1,\n\n\t\t\t\tdir = ( cos >= 0 ? 1 : - 1 ),\n\t\t\t\tsqrSin = 1 - cos * cos;\n\n\t\t\t// Skip the Slerp for tiny steps to avoid numeric problems:\n\t\t\tif ( sqrSin > Number.EPSILON ) {\n\n\t\t\t\tvar sin = Math.sqrt( sqrSin ),\n\t\t\t\t\tlen = Math.atan2( sin, cos * dir );\n\n\t\t\t\ts = Math.sin( s * len ) / sin;\n\t\t\t\tt = Math.sin( t * len ) / sin;\n\n\t\t\t}\n\n\t\t\tvar tDir = t * dir;\n\n\t\t\tx0 = x0 * s + x1 * tDir;\n\t\t\ty0 = y0 * s + y1 * tDir;\n\t\t\tz0 = z0 * s + z1 * tDir;\n\t\t\tw0 = w0 * s + w1 * tDir;\n\n\t\t\t// Normalize in case we just did a lerp:\n\t\t\tif ( s === 1 - t ) {\n\n\t\t\t\tvar f = 1 / Math.sqrt( x0 * x0 + y0 * y0 + z0 * z0 + w0 * w0 );\n\n\t\t\t\tx0 *= f;\n\t\t\t\ty0 *= f;\n\t\t\t\tz0 *= f;\n\t\t\t\tw0 *= f;\n\n\t\t\t}\n\n\t\t}\n\n\t\tdst[ dstOffset ] = x0;\n\t\tdst[ dstOffset + 1 ] = y0;\n\t\tdst[ dstOffset + 2 ] = z0;\n\t\tdst[ dstOffset + 3 ] = w0;\n\n\t}\n\n} );\n\n\nexport { Quaternion };\n","import { _Math } from './Math';\nimport { Matrix4 } from './Matrix4';\nimport { Quaternion } from './Quaternion';\n\n/**\n * @author mrdoob / http://mrdoob.com/\n * @author *kile / http://kile.stravaganza.org/\n * @author philogb / http://blog.thejit.org/\n * @author mikael emtinger / http://gomo.se/\n * @author egraether / http://egraether.com/\n * @author WestLangley / http://github.com/WestLangley\n */\n\nfunction Vector3( x, y, z ) {\n\n\tthis.x = x || 0;\n\tthis.y = y || 0;\n\tthis.z = z || 0;\n\n}\n\nVector3.prototype = {\n\n\tconstructor: Vector3,\n\n\tisVector3: true,\n\n\tset: function ( x, y, z ) {\n\n\t\tthis.x = x;\n\t\tthis.y = y;\n\t\tthis.z = z;\n\n\t\treturn this;\n\n\t},\n\n\tsetScalar: function ( scalar ) {\n\n\t\tthis.x = scalar;\n\t\tthis.y = scalar;\n\t\tthis.z = scalar;\n\n\t\treturn this;\n\n\t},\n\n\tsetX: function ( x ) {\n\n\t\tthis.x = x;\n\n\t\treturn this;\n\n\t},\n\n\tsetY: function ( y ) {\n\n\t\tthis.y = y;\n\n\t\treturn this;\n\n\t},\n\n\tsetZ: function ( z ) {\n\n\t\tthis.z = z;\n\n\t\treturn this;\n\n\t},\n\n\tsetComponent: function ( index, value ) {\n\n\t\tswitch ( index ) {\n\n\t\t\tcase 0: this.x = value; break;\n\t\t\tcase 1: this.y = value; break;\n\t\t\tcase 2: this.z = value; break;\n\t\t\tdefault: throw new Error( 'index is out of range: ' + index );\n\n\t\t}\n\t\t\n\t\treturn this;\n\n\t},\n\n\tgetComponent: function ( index ) {\n\n\t\tswitch ( index ) {\n\n\t\t\tcase 0: return this.x;\n\t\t\tcase 1: return this.y;\n\t\t\tcase 2: return this.z;\n\t\t\tdefault: throw new Error( 'index is out of range: ' + index );\n\n\t\t}\n\n\t},\n\n\tclone: function () {\n\n\t\treturn new this.constructor( this.x, this.y, this.z );\n\n\t},\n\n\tcopy: function ( v ) {\n\n\t\tthis.x = v.x;\n\t\tthis.y = v.y;\n\t\tthis.z = v.z;\n\n\t\treturn this;\n\n\t},\n\n\tadd: function ( v, w ) {\n\n\t\tif ( w !== undefined ) {\n\n\t\t\tconsole.warn( 'THREE.Vector3: .add() now only accepts one argument. Use .addVectors( a, b ) instead.' );\n\t\t\treturn this.addVectors( v, w );\n\n\t\t}\n\n\t\tthis.x += v.x;\n\t\tthis.y += v.y;\n\t\tthis.z += v.z;\n\n\t\treturn this;\n\n\t},\n\n\taddScalar: function ( s ) {\n\n\t\tthis.x += s;\n\t\tthis.y += s;\n\t\tthis.z += s;\n\n\t\treturn this;\n\n\t},\n\n\taddVectors: function ( a, b ) {\n\n\t\tthis.x = a.x + b.x;\n\t\tthis.y = a.y + b.y;\n\t\tthis.z = a.z + b.z;\n\n\t\treturn this;\n\n\t},\n\n\taddScaledVector: function ( v, s ) {\n\n\t\tthis.x += v.x * s;\n\t\tthis.y += v.y * s;\n\t\tthis.z += v.z * s;\n\n\t\treturn this;\n\n\t},\n\n\tsub: function ( v, w ) {\n\n\t\tif ( w !== undefined ) {\n\n\t\t\tconsole.warn( 'THREE.Vector3: .sub() now only accepts one argument. Use .subVectors( a, b ) instead.' );\n\t\t\treturn this.subVectors( v, w );\n\n\t\t}\n\n\t\tthis.x -= v.x;\n\t\tthis.y -= v.y;\n\t\tthis.z -= v.z;\n\n\t\treturn this;\n\n\t},\n\n\tsubScalar: function ( s ) {\n\n\t\tthis.x -= s;\n\t\tthis.y -= s;\n\t\tthis.z -= s;\n\n\t\treturn this;\n\n\t},\n\n\tsubVectors: function ( a, b ) {\n\n\t\tthis.x = a.x - b.x;\n\t\tthis.y = a.y - b.y;\n\t\tthis.z = a.z - b.z;\n\n\t\treturn this;\n\n\t},\n\n\tmultiply: function ( v, w ) {\n\n\t\tif ( w !== undefined ) {\n\n\t\t\tconsole.warn( 'THREE.Vector3: .multiply() now only accepts one argument. Use .multiplyVectors( a, b ) instead.' );\n\t\t\treturn this.multiplyVectors( v, w );\n\n\t\t}\n\n\t\tthis.x *= v.x;\n\t\tthis.y *= v.y;\n\t\tthis.z *= v.z;\n\n\t\treturn this;\n\n\t},\n\n\tmultiplyScalar: function ( scalar ) {\n\n\t\tif ( isFinite( scalar ) ) {\n\n\t\t\tthis.x *= scalar;\n\t\t\tthis.y *= scalar;\n\t\t\tthis.z *= scalar;\n\n\t\t} else {\n\n\t\t\tthis.x = 0;\n\t\t\tthis.y = 0;\n\t\t\tthis.z = 0;\n\n\t\t}\n\n\t\treturn this;\n\n\t},\n\n\tmultiplyVectors: function ( a, b ) {\n\n\t\tthis.x = a.x * b.x;\n\t\tthis.y = a.y * b.y;\n\t\tthis.z = a.z * b.z;\n\n\t\treturn this;\n\n\t},\n\n\tapplyEuler: function () {\n\n\t\tvar quaternion;\n\n\t\treturn function applyEuler( euler ) {\n\n\t\t\tif ( (euler && euler.isEuler) === false ) {\n\n\t\t\t\tconsole.error( 'THREE.Vector3: .applyEuler() now expects an Euler rotation rather than a Vector3 and order.' );\n\n\t\t\t}\n\n\t\t\tif ( quaternion === undefined ) quaternion = new Quaternion();\n\n\t\t\treturn this.applyQuaternion( quaternion.setFromEuler( euler ) );\n\n\t\t};\n\n\t}(),\n\n\tapplyAxisAngle: function () {\n\n\t\tvar quaternion;\n\n\t\treturn function applyAxisAngle( axis, angle ) {\n\n\t\t\tif ( quaternion === undefined ) quaternion = new Quaternion();\n\n\t\t\treturn this.applyQuaternion( quaternion.setFromAxisAngle( axis, angle ) );\n\n\t\t};\n\n\t}(),\n\n\tapplyMatrix3: function ( m ) {\n\n\t\tvar x = this.x, y = this.y, z = this.z;\n\t\tvar e = m.elements;\n\n\t\tthis.x = e[ 0 ] * x + e[ 3 ] * y + e[ 6 ] * z;\n\t\tthis.y = e[ 1 ] * x + e[ 4 ] * y + e[ 7 ] * z;\n\t\tthis.z = e[ 2 ] * x + e[ 5 ] * y + e[ 8 ] * z;\n\n\t\treturn this;\n\n\t},\n\n\tapplyMatrix4: function ( m ) {\n\n\t\t// input: THREE.Matrix4 affine matrix\n\n\t\tvar x = this.x, y = this.y, z = this.z;\n\t\tvar e = m.elements;\n\n\t\tthis.x = e[ 0 ] * x + e[ 4 ] * y + e[ 8 ] * z + e[ 12 ];\n\t\tthis.y = e[ 1 ] * x + e[ 5 ] * y + e[ 9 ] * z + e[ 13 ];\n\t\tthis.z = e[ 2 ] * x + e[ 6 ] * y + e[ 10 ] * z + e[ 14 ];\n\n\t\treturn this;\n\n\t},\n\n\tapplyProjection: function ( m ) {\n\n\t\t// input: THREE.Matrix4 projection matrix\n\n\t\tvar x = this.x, y = this.y, z = this.z;\n\t\tvar e = m.elements;\n\t\tvar d = 1 / ( e[ 3 ] * x + e[ 7 ] * y + e[ 11 ] * z + e[ 15 ] ); // perspective divide\n\n\t\tthis.x = ( e[ 0 ] * x + e[ 4 ] * y + e[ 8 ] * z + e[ 12 ] ) * d;\n\t\tthis.y = ( e[ 1 ] * x + e[ 5 ] * y + e[ 9 ] * z + e[ 13 ] ) * d;\n\t\tthis.z = ( e[ 2 ] * x + e[ 6 ] * y + e[ 10 ] * z + e[ 14 ] ) * d;\n\n\t\treturn this;\n\n\t},\n\n\tapplyQuaternion: function ( q ) {\n\n\t\tvar x = this.x, y = this.y, z = this.z;\n\t\tvar qx = q.x, qy = q.y, qz = q.z, qw = q.w;\n\n\t\t// calculate quat * vector\n\n\t\tvar ix = qw * x + qy * z - qz * y;\n\t\tvar iy = qw * y + qz * x - qx * z;\n\t\tvar iz = qw * z + qx * y - qy * x;\n\t\tvar iw = - qx * x - qy * y - qz * z;\n\n\t\t// calculate result * inverse quat\n\n\t\tthis.x = ix * qw + iw * - qx + iy * - qz - iz * - qy;\n\t\tthis.y = iy * qw + iw * - qy + iz * - qx - ix * - qz;\n\t\tthis.z = iz * qw + iw * - qz + ix * - qy - iy * - qx;\n\n\t\treturn this;\n\n\t},\n\n\tproject: function () {\n\n\t\tvar matrix;\n\n\t\treturn function project( camera ) {\n\n\t\t\tif ( matrix === undefined ) matrix = new Matrix4();\n\n\t\t\tmatrix.multiplyMatrices( camera.projectionMatrix, matrix.getInverse( camera.matrixWorld ) );\n\t\t\treturn this.applyProjection( matrix );\n\n\t\t};\n\n\t}(),\n\n\tunproject: function () {\n\n\t\tvar matrix;\n\n\t\treturn function unproject( camera ) {\n\n\t\t\tif ( matrix === undefined ) matrix = new Matrix4();\n\n\t\t\tmatrix.multiplyMatrices( camera.matrixWorld, matrix.getInverse( camera.projectionMatrix ) );\n\t\t\treturn this.applyProjection( matrix );\n\n\t\t};\n\n\t}(),\n\n\ttransformDirection: function ( m ) {\n\n\t\t// input: THREE.Matrix4 affine matrix\n\t\t// vector interpreted as a direction\n\n\t\tvar x = this.x, y = this.y, z = this.z;\n\t\tvar e = m.elements;\n\n\t\tthis.x = e[ 0 ] * x + e[ 4 ] * y + e[ 8 ] * z;\n\t\tthis.y = e[ 1 ] * x + e[ 5 ] * y + e[ 9 ] * z;\n\t\tthis.z = e[ 2 ] * x + e[ 6 ] * y + e[ 10 ] * z;\n\n\t\treturn this.normalize();\n\n\t},\n\n\tdivide: function ( v ) {\n\n\t\tthis.x /= v.x;\n\t\tthis.y /= v.y;\n\t\tthis.z /= v.z;\n\n\t\treturn this;\n\n\t},\n\n\tdivideScalar: function ( scalar ) {\n\n\t\treturn this.multiplyScalar( 1 / scalar );\n\n\t},\n\n\tmin: function ( v ) {\n\n\t\tthis.x = Math.min( this.x, v.x );\n\t\tthis.y = Math.min( this.y, v.y );\n\t\tthis.z = Math.min( this.z, v.z );\n\n\t\treturn this;\n\n\t},\n\n\tmax: function ( v ) {\n\n\t\tthis.x = Math.max( this.x, v.x );\n\t\tthis.y = Math.max( this.y, v.y );\n\t\tthis.z = Math.max( this.z, v.z );\n\n\t\treturn this;\n\n\t},\n\n\tclamp: function ( min, max ) {\n\n\t\t// This function assumes min < max, if this assumption isn't true it will not operate correctly\n\n\t\tthis.x = Math.max( min.x, Math.min( max.x, this.x ) );\n\t\tthis.y = Math.max( min.y, Math.min( max.y, this.y ) );\n\t\tthis.z = Math.max( min.z, Math.min( max.z, this.z ) );\n\n\t\treturn this;\n\n\t},\n\n\tclampScalar: function () {\n\n\t\tvar min, max;\n\n\t\treturn function clampScalar( minVal, maxVal ) {\n\n\t\t\tif ( min === undefined ) {\n\n\t\t\t\tmin = new Vector3();\n\t\t\t\tmax = new Vector3();\n\n\t\t\t}\n\n\t\t\tmin.set( minVal, minVal, minVal );\n\t\t\tmax.set( maxVal, maxVal, maxVal );\n\n\t\t\treturn this.clamp( min, max );\n\n\t\t};\n\n\t}(),\n\n\tclampLength: function ( min, max ) {\n\n\t\tvar length = this.length();\n\n\t\treturn this.multiplyScalar( Math.max( min, Math.min( max, length ) ) / length );\n\n\t},\n\n\tfloor: function () {\n\n\t\tthis.x = Math.floor( this.x );\n\t\tthis.y = Math.floor( this.y );\n\t\tthis.z = Math.floor( this.z );\n\n\t\treturn this;\n\n\t},\n\n\tceil: function () {\n\n\t\tthis.x = Math.ceil( this.x );\n\t\tthis.y = Math.ceil( this.y );\n\t\tthis.z = Math.ceil( this.z );\n\n\t\treturn this;\n\n\t},\n\n\tround: function () {\n\n\t\tthis.x = Math.round( this.x );\n\t\tthis.y = Math.round( this.y );\n\t\tthis.z = Math.round( this.z );\n\n\t\treturn this;\n\n\t},\n\n\troundToZero: function () {\n\n\t\tthis.x = ( this.x < 0 ) ? Math.ceil( this.x ) : Math.floor( this.x );\n\t\tthis.y = ( this.y < 0 ) ? Math.ceil( this.y ) : Math.floor( this.y );\n\t\tthis.z = ( this.z < 0 ) ? Math.ceil( this.z ) : Math.floor( this.z );\n\n\t\treturn this;\n\n\t},\n\n\tnegate: function () {\n\n\t\tthis.x = - this.x;\n\t\tthis.y = - this.y;\n\t\tthis.z = - this.z;\n\n\t\treturn this;\n\n\t},\n\n\tdot: function ( v ) {\n\n\t\treturn this.x * v.x + this.y * v.y + this.z * v.z;\n\n\t},\n\n\tlengthSq: function () {\n\n\t\treturn this.x * this.x + this.y * this.y + this.z * this.z;\n\n\t},\n\n\tlength: function () {\n\n\t\treturn Math.sqrt( this.x * this.x + this.y * this.y + this.z * this.z );\n\n\t},\n\n\tlengthManhattan: function () {\n\n\t\treturn Math.abs( this.x ) + Math.abs( this.y ) + Math.abs( this.z );\n\n\t},\n\n\tnormalize: function () {\n\n\t\treturn this.divideScalar( this.length() );\n\n\t},\n\n\tsetLength: function ( length ) {\n\n\t\treturn this.multiplyScalar( length / this.length() );\n\n\t},\n\n\tlerp: function ( v, alpha ) {\n\n\t\tthis.x += ( v.x - this.x ) * alpha;\n\t\tthis.y += ( v.y - this.y ) * alpha;\n\t\tthis.z += ( v.z - this.z ) * alpha;\n\n\t\treturn this;\n\n\t},\n\n\tlerpVectors: function ( v1, v2, alpha ) {\n\n\t\treturn this.subVectors( v2, v1 ).multiplyScalar( alpha ).add( v1 );\n\n\t},\n\n\tcross: function ( v, w ) {\n\n\t\tif ( w !== undefined ) {\n\n\t\t\tconsole.warn( 'THREE.Vector3: .cross() now only accepts one argument. Use .crossVectors( a, b ) instead.' );\n\t\t\treturn this.crossVectors( v, w );\n\n\t\t}\n\n\t\tvar x = this.x, y = this.y, z = this.z;\n\n\t\tthis.x = y * v.z - z * v.y;\n\t\tthis.y = z * v.x - x * v.z;\n\t\tthis.z = x * v.y - y * v.x;\n\n\t\treturn this;\n\n\t},\n\n\tcrossVectors: function ( a, b ) {\n\n\t\tvar ax = a.x, ay = a.y, az = a.z;\n\t\tvar bx = b.x, by = b.y, bz = b.z;\n\n\t\tthis.x = ay * bz - az * by;\n\t\tthis.y = az * bx - ax * bz;\n\t\tthis.z = ax * by - ay * bx;\n\n\t\treturn this;\n\n\t},\n\n\tprojectOnVector: function ( vector ) {\n\n\t\tvar scalar = vector.dot( this ) / vector.lengthSq();\n\n\t\treturn this.copy( vector ).multiplyScalar( scalar );\n\n\t},\n\n\tprojectOnPlane: function () {\n\n\t\tvar v1;\n\n\t\treturn function projectOnPlane( planeNormal ) {\n\n\t\t\tif ( v1 === undefined ) v1 = new Vector3();\n\n\t\t\tv1.copy( this ).projectOnVector( planeNormal );\n\n\t\t\treturn this.sub( v1 );\n\n\t\t};\n\n\t}(),\n\n\treflect: function () {\n\n\t\t// reflect incident vector off plane orthogonal to normal\n\t\t// normal is assumed to have unit length\n\n\t\tvar v1;\n\n\t\treturn function reflect( normal ) {\n\n\t\t\tif ( v1 === undefined ) v1 = new Vector3();\n\n\t\t\treturn this.sub( v1.copy( normal ).multiplyScalar( 2 * this.dot( normal ) ) );\n\n\t\t};\n\n\t}(),\n\n\tangleTo: function ( v ) {\n\n\t\tvar theta = this.dot( v ) / ( Math.sqrt( this.lengthSq() * v.lengthSq() ) );\n\n\t\t// clamp, to handle numerical problems\n\n\t\treturn Math.acos( _Math.clamp( theta, - 1, 1 ) );\n\n\t},\n\n\tdistanceTo: function ( v ) {\n\n\t\treturn Math.sqrt( this.distanceToSquared( v ) );\n\n\t},\n\n\tdistanceToSquared: function ( v ) {\n\n\t\tvar dx = this.x - v.x, dy = this.y - v.y, dz = this.z - v.z;\n\n\t\treturn dx * dx + dy * dy + dz * dz;\n\n\t},\n\n\tdistanceToManhattan: function ( v ) {\n\n\t\treturn Math.abs( this.x - v.x ) + Math.abs( this.y - v.y ) + Math.abs( this.z - v.z );\n\n\t},\n\n\tsetFromSpherical: function( s ) {\n\n\t\tvar sinPhiRadius = Math.sin( s.phi ) * s.radius;\n\n\t\tthis.x = sinPhiRadius * Math.sin( s.theta );\n\t\tthis.y = Math.cos( s.phi ) * s.radius;\n\t\tthis.z = sinPhiRadius * Math.cos( s.theta );\n\n\t\treturn this;\n\n\t},\n\n\tsetFromMatrixPosition: function ( m ) {\n\n\t\treturn this.setFromMatrixColumn( m, 3 );\n\n\t},\n\n\tsetFromMatrixScale: function ( m ) {\n\n\t\tvar sx = this.setFromMatrixColumn( m, 0 ).length();\n\t\tvar sy = this.setFromMatrixColumn( m, 1 ).length();\n\t\tvar sz = this.setFromMatrixColumn( m, 2 ).length();\n\n\t\tthis.x = sx;\n\t\tthis.y = sy;\n\t\tthis.z = sz;\n\n\t\treturn this;\n\n\t},\n\n\tsetFromMatrixColumn: function ( m, index ) {\n\n\t\tif ( typeof m === 'number' ) {\n\n\t\t\tconsole.warn( 'THREE.Vector3: setFromMatrixColumn now expects ( matrix, index ).' );\n\t\t\tvar temp = m\n\t\t\tm = index;\n\t\t\tindex = temp;\n\n\t\t}\n\n\t\treturn this.fromArray( m.elements, index * 4 );\n\n\t},\n\n\tequals: function ( v ) {\n\n\t\treturn ( ( v.x === this.x ) && ( v.y === this.y ) && ( v.z === this.z ) );\n\n\t},\n\n\tfromArray: function ( array, offset ) {\n\n\t\tif ( offset === undefined ) offset = 0;\n\n\t\tthis.x = array[ offset ];\n\t\tthis.y = array[ offset + 1 ];\n\t\tthis.z = array[ offset + 2 ];\n\n\t\treturn this;\n\n\t},\n\n\ttoArray: function ( array, offset ) {\n\n\t\tif ( array === undefined ) array = [];\n\t\tif ( offset === undefined ) offset = 0;\n\n\t\tarray[ offset ] = this.x;\n\t\tarray[ offset + 1 ] = this.y;\n\t\tarray[ offset + 2 ] = this.z;\n\n\t\treturn array;\n\n\t},\n\n\tfromAttribute: function ( attribute, index, offset ) {\n\n\t\tif ( offset === undefined ) offset = 0;\n\n\t\tindex = index * attribute.itemSize + offset;\n\n\t\tthis.x = attribute.array[ index ];\n\t\tthis.y = attribute.array[ index + 1 ];\n\t\tthis.z = attribute.array[ index + 2 ];\n\n\t\treturn this;\n\n\t}\n\n};\n\n\nexport { Vector3 };\n","import { _Math } from './Math';\nimport { Vector3 } from './Vector3';\n\n/**\n * @author mrdoob / http://mrdoob.com/\n * @author supereggbert / http://www.paulbrunt.co.uk/\n * @author philogb / http://blog.thejit.org/\n * @author jordi_ros / http://plattsoft.com\n * @author D1plo1d / http://github.com/D1plo1d\n * @author alteredq / http://alteredqualia.com/\n * @author mikael emtinger / http://gomo.se/\n * @author timknip / http://www.floorplanner.com/\n * @author bhouston / http://clara.io\n * @author WestLangley / http://github.com/WestLangley\n */\n\nfunction Matrix4() {\n\n\tthis.elements = new Float32Array( [\n\n\t\t1, 0, 0, 0,\n\t\t0, 1, 0, 0,\n\t\t0, 0, 1, 0,\n\t\t0, 0, 0, 1\n\n\t] );\n\n\tif ( arguments.length > 0 ) {\n\n\t\tconsole.error( 'THREE.Matrix4: the constructor no longer reads arguments. use .set() instead.' );\n\n\t}\n\n}\n\nMatrix4.prototype = {\n\n\tconstructor: Matrix4,\n\n\tisMatrix4: true,\n\n\tset: function ( n11, n12, n13, n14, n21, n22, n23, n24, n31, n32, n33, n34, n41, n42, n43, n44 ) {\n\n\t\tvar te = this.elements;\n\n\t\tte[ 0 ] = n11; te[ 4 ] = n12; te[ 8 ] = n13; te[ 12 ] = n14;\n\t\tte[ 1 ] = n21; te[ 5 ] = n22; te[ 9 ] = n23; te[ 13 ] = n24;\n\t\tte[ 2 ] = n31; te[ 6 ] = n32; te[ 10 ] = n33; te[ 14 ] = n34;\n\t\tte[ 3 ] = n41; te[ 7 ] = n42; te[ 11 ] = n43; te[ 15 ] = n44;\n\n\t\treturn this;\n\n\t},\n\n\tidentity: function () {\n\n\t\tthis.set(\n\n\t\t\t1, 0, 0, 0,\n\t\t\t0, 1, 0, 0,\n\t\t\t0, 0, 1, 0,\n\t\t\t0, 0, 0, 1\n\n\t\t);\n\n\t\treturn this;\n\n\t},\n\n\tclone: function () {\n\n\t\treturn new Matrix4().fromArray( this.elements );\n\n\t},\n\n\tcopy: function ( m ) {\n\n\t\tthis.elements.set( m.elements );\n\n\t\treturn this;\n\n\t},\n\n\tcopyPosition: function ( m ) {\n\n\t\tvar te = this.elements;\n\t\tvar me = m.elements;\n\n\t\tte[ 12 ] = me[ 12 ];\n\t\tte[ 13 ] = me[ 13 ];\n\t\tte[ 14 ] = me[ 14 ];\n\n\t\treturn this;\n\n\t},\n\n\textractBasis: function ( xAxis, yAxis, zAxis ) {\n\n\t\txAxis.setFromMatrixColumn( this, 0 );\n\t\tyAxis.setFromMatrixColumn( this, 1 );\n\t\tzAxis.setFromMatrixColumn( this, 2 );\n\n\t\treturn this;\n\n\t},\n\n\tmakeBasis: function ( xAxis, yAxis, zAxis ) {\n\n\t\tthis.set(\n\t\t\txAxis.x, yAxis.x, zAxis.x, 0,\n\t\t\txAxis.y, yAxis.y, zAxis.y, 0,\n\t\t\txAxis.z, yAxis.z, zAxis.z, 0,\n\t\t\t0, 0, 0, 1\n\t\t);\n\n\t\treturn this;\n\n\t},\n\n\textractRotation: function () {\n\n\t\tvar v1;\n\n\t\treturn function extractRotation( m ) {\n\n\t\t\tif ( v1 === undefined ) v1 = new Vector3();\n\n\t\t\tvar te = this.elements;\n\t\t\tvar me = m.elements;\n\n\t\t\tvar scaleX = 1 / v1.setFromMatrixColumn( m, 0 ).length();\n\t\t\tvar scaleY = 1 / v1.setFromMatrixColumn( m, 1 ).length();\n\t\t\tvar scaleZ = 1 / v1.setFromMatrixColumn( m, 2 ).length();\n\n\t\t\tte[ 0 ] = me[ 0 ] * scaleX;\n\t\t\tte[ 1 ] = me[ 1 ] * scaleX;\n\t\t\tte[ 2 ] = me[ 2 ] * scaleX;\n\n\t\t\tte[ 4 ] = me[ 4 ] * scaleY;\n\t\t\tte[ 5 ] = me[ 5 ] * scaleY;\n\t\t\tte[ 6 ] = me[ 6 ] * scaleY;\n\n\t\t\tte[ 8 ] = me[ 8 ] * scaleZ;\n\t\t\tte[ 9 ] = me[ 9 ] * scaleZ;\n\t\t\tte[ 10 ] = me[ 10 ] * scaleZ;\n\n\t\t\treturn this;\n\n\t\t};\n\n\t}(),\n\n\tmakeRotationFromEuler: function ( euler ) {\n\n\t\tif ( (euler && euler.isEuler) === false ) {\n\n\t\t\tconsole.error( 'THREE.Matrix: .makeRotationFromEuler() now expects a Euler rotation rather than a Vector3 and order.' );\n\n\t\t}\n\n\t\tvar te = this.elements;\n\n\t\tvar x = euler.x, y = euler.y, z = euler.z;\n\t\tvar a = Math.cos( x ), b = Math.sin( x );\n\t\tvar c = Math.cos( y ), d = Math.sin( y );\n\t\tvar e = Math.cos( z ), f = Math.sin( z );\n\n\t\tif ( euler.order === 'XYZ' ) {\n\n\t\t\tvar ae = a * e, af = a * f, be = b * e, bf = b * f;\n\n\t\t\tte[ 0 ] = c * e;\n\t\t\tte[ 4 ] = - c * f;\n\t\t\tte[ 8 ] = d;\n\n\t\t\tte[ 1 ] = af + be * d;\n\t\t\tte[ 5 ] = ae - bf * d;\n\t\t\tte[ 9 ] = - b * c;\n\n\t\t\tte[ 2 ] = bf - ae * d;\n\t\t\tte[ 6 ] = be + af * d;\n\t\t\tte[ 10 ] = a * c;\n\n\t\t} else if ( euler.order === 'YXZ' ) {\n\n\t\t\tvar ce = c * e, cf = c * f, de = d * e, df = d * f;\n\n\t\t\tte[ 0 ] = ce + df * b;\n\t\t\tte[ 4 ] = de * b - cf;\n\t\t\tte[ 8 ] = a * d;\n\n\t\t\tte[ 1 ] = a * f;\n\t\t\tte[ 5 ] = a * e;\n\t\t\tte[ 9 ] = - b;\n\n\t\t\tte[ 2 ] = cf * b - de;\n\t\t\tte[ 6 ] = df + ce * b;\n\t\t\tte[ 10 ] = a * c;\n\n\t\t} else if ( euler.order === 'ZXY' ) {\n\n\t\t\tvar ce = c * e, cf = c * f, de = d * e, df = d * f;\n\n\t\t\tte[ 0 ] = ce - df * b;\n\t\t\tte[ 4 ] = - a * f;\n\t\t\tte[ 8 ] = de + cf * b;\n\n\t\t\tte[ 1 ] = cf + de * b;\n\t\t\tte[ 5 ] = a * e;\n\t\t\tte[ 9 ] = df - ce * b;\n\n\t\t\tte[ 2 ] = - a * d;\n\t\t\tte[ 6 ] = b;\n\t\t\tte[ 10 ] = a * c;\n\n\t\t} else if ( euler.order === 'ZYX' ) {\n\n\t\t\tvar ae = a * e, af = a * f, be = b * e, bf = b * f;\n\n\t\t\tte[ 0 ] = c * e;\n\t\t\tte[ 4 ] = be * d - af;\n\t\t\tte[ 8 ] = ae * d + bf;\n\n\t\t\tte[ 1 ] = c * f;\n\t\t\tte[ 5 ] = bf * d + ae;\n\t\t\tte[ 9 ] = af * d - be;\n\n\t\t\tte[ 2 ] = - d;\n\t\t\tte[ 6 ] = b * c;\n\t\t\tte[ 10 ] = a * c;\n\n\t\t} else if ( euler.order === 'YZX' ) {\n\n\t\t\tvar ac = a * c, ad = a * d, bc = b * c, bd = b * d;\n\n\t\t\tte[ 0 ] = c * e;\n\t\t\tte[ 4 ] = bd - ac * f;\n\t\t\tte[ 8 ] = bc * f + ad;\n\n\t\t\tte[ 1 ] = f;\n\t\t\tte[ 5 ] = a * e;\n\t\t\tte[ 9 ] = - b * e;\n\n\t\t\tte[ 2 ] = - d * e;\n\t\t\tte[ 6 ] = ad * f + bc;\n\t\t\tte[ 10 ] = ac - bd * f;\n\n\t\t} else if ( euler.order === 'XZY' ) {\n\n\t\t\tvar ac = a * c, ad = a * d, bc = b * c, bd = b * d;\n\n\t\t\tte[ 0 ] = c * e;\n\t\t\tte[ 4 ] = - f;\n\t\t\tte[ 8 ] = d * e;\n\n\t\t\tte[ 1 ] = ac * f + bd;\n\t\t\tte[ 5 ] = a * e;\n\t\t\tte[ 9 ] = ad * f - bc;\n\n\t\t\tte[ 2 ] = bc * f - ad;\n\t\t\tte[ 6 ] = b * e;\n\t\t\tte[ 10 ] = bd * f + ac;\n\n\t\t}\n\n\t\t// last column\n\t\tte[ 3 ] = 0;\n\t\tte[ 7 ] = 0;\n\t\tte[ 11 ] = 0;\n\n\t\t// bottom row\n\t\tte[ 12 ] = 0;\n\t\tte[ 13 ] = 0;\n\t\tte[ 14 ] = 0;\n\t\tte[ 15 ] = 1;\n\n\t\treturn this;\n\n\t},\n\n\tmakeRotationFromQuaternion: function ( q ) {\n\n\t\tvar te = this.elements;\n\n\t\tvar x = q.x, y = q.y, z = q.z, w = q.w;\n\t\tvar x2 = x + x, y2 = y + y, z2 = z + z;\n\t\tvar xx = x * x2, xy = x * y2, xz = x * z2;\n\t\tvar yy = y * y2, yz = y * z2, zz = z * z2;\n\t\tvar wx = w * x2, wy = w * y2, wz = w * z2;\n\n\t\tte[ 0 ] = 1 - ( yy + zz );\n\t\tte[ 4 ] = xy - wz;\n\t\tte[ 8 ] = xz + wy;\n\n\t\tte[ 1 ] = xy + wz;\n\t\tte[ 5 ] = 1 - ( xx + zz );\n\t\tte[ 9 ] = yz - wx;\n\n\t\tte[ 2 ] = xz - wy;\n\t\tte[ 6 ] = yz + wx;\n\t\tte[ 10 ] = 1 - ( xx + yy );\n\n\t\t// last column\n\t\tte[ 3 ] = 0;\n\t\tte[ 7 ] = 0;\n\t\tte[ 11 ] = 0;\n\n\t\t// bottom row\n\t\tte[ 12 ] = 0;\n\t\tte[ 13 ] = 0;\n\t\tte[ 14 ] = 0;\n\t\tte[ 15 ] = 1;\n\n\t\treturn this;\n\n\t},\n\n\tlookAt: function () {\n\n\t\tvar x, y, z;\n\n\t\treturn function lookAt( eye, target, up ) {\n\n\t\t\tif ( x === undefined ) {\n\n\t\t\t\tx = new Vector3();\n\t\t\t\ty = new Vector3();\n\t\t\t\tz = new Vector3();\n\n\t\t\t}\n\n\t\t\tvar te = this.elements;\n\n\t\t\tz.subVectors( eye, target ).normalize();\n\n\t\t\tif ( z.lengthSq() === 0 ) {\n\n\t\t\t\tz.z = 1;\n\n\t\t\t}\n\n\t\t\tx.crossVectors( up, z ).normalize();\n\n\t\t\tif ( x.lengthSq() === 0 ) {\n\n\t\t\t\tz.z += 0.0001;\n\t\t\t\tx.crossVectors( up, z ).normalize();\n\n\t\t\t}\n\n\t\t\ty.crossVectors( z, x );\n\n\n\t\t\tte[ 0 ] = x.x; te[ 4 ] = y.x; te[ 8 ] = z.x;\n\t\t\tte[ 1 ] = x.y; te[ 5 ] = y.y; te[ 9 ] = z.y;\n\t\t\tte[ 2 ] = x.z; te[ 6 ] = y.z; te[ 10 ] = z.z;\n\n\t\t\treturn this;\n\n\t\t};\n\n\t}(),\n\n\tmultiply: function ( m, n ) {\n\n\t\tif ( n !== undefined ) {\n\n\t\t\tconsole.warn( 'THREE.Matrix4: .multiply() now only accepts one argument. Use .multiplyMatrices( a, b ) instead.' );\n\t\t\treturn this.multiplyMatrices( m, n );\n\n\t\t}\n\n\t\treturn this.multiplyMatrices( this, m );\n\n\t},\n\n\tpremultiply: function ( m ) {\n\n\t\treturn this.multiplyMatrices( m, this );\n\n\t},\n\n\tmultiplyMatrices: function ( a, b ) {\n\n\t\tvar ae = a.elements;\n\t\tvar be = b.elements;\n\t\tvar te = this.elements;\n\n\t\tvar a11 = ae[ 0 ], a12 = ae[ 4 ], a13 = ae[ 8 ], a14 = ae[ 12 ];\n\t\tvar a21 = ae[ 1 ], a22 = ae[ 5 ], a23 = ae[ 9 ], a24 = ae[ 13 ];\n\t\tvar a31 = ae[ 2 ], a32 = ae[ 6 ], a33 = ae[ 10 ], a34 = ae[ 14 ];\n\t\tvar a41 = ae[ 3 ], a42 = ae[ 7 ], a43 = ae[ 11 ], a44 = ae[ 15 ];\n\n\t\tvar b11 = be[ 0 ], b12 = be[ 4 ], b13 = be[ 8 ], b14 = be[ 12 ];\n\t\tvar b21 = be[ 1 ], b22 = be[ 5 ], b23 = be[ 9 ], b24 = be[ 13 ];\n\t\tvar b31 = be[ 2 ], b32 = be[ 6 ], b33 = be[ 10 ], b34 = be[ 14 ];\n\t\tvar b41 = be[ 3 ], b42 = be[ 7 ], b43 = be[ 11 ], b44 = be[ 15 ];\n\n\t\tte[ 0 ] = a11 * b11 + a12 * b21 + a13 * b31 + a14 * b41;\n\t\tte[ 4 ] = a11 * b12 + a12 * b22 + a13 * b32 + a14 * b42;\n\t\tte[ 8 ] = a11 * b13 + a12 * b23 + a13 * b33 + a14 * b43;\n\t\tte[ 12 ] = a11 * b14 + a12 * b24 + a13 * b34 + a14 * b44;\n\n\t\tte[ 1 ] = a21 * b11 + a22 * b21 + a23 * b31 + a24 * b41;\n\t\tte[ 5 ] = a21 * b12 + a22 * b22 + a23 * b32 + a24 * b42;\n\t\tte[ 9 ] = a21 * b13 + a22 * b23 + a23 * b33 + a24 * b43;\n\t\tte[ 13 ] = a21 * b14 + a22 * b24 + a23 * b34 + a24 * b44;\n\n\t\tte[ 2 ] = a31 * b11 + a32 * b21 + a33 * b31 + a34 * b41;\n\t\tte[ 6 ] = a31 * b12 + a32 * b22 + a33 * b32 + a34 * b42;\n\t\tte[ 10 ] = a31 * b13 + a32 * b23 + a33 * b33 + a34 * b43;\n\t\tte[ 14 ] = a31 * b14 + a32 * b24 + a33 * b34 + a34 * b44;\n\n\t\tte[ 3 ] = a41 * b11 + a42 * b21 + a43 * b31 + a44 * b41;\n\t\tte[ 7 ] = a41 * b12 + a42 * b22 + a43 * b32 + a44 * b42;\n\t\tte[ 11 ] = a41 * b13 + a42 * b23 + a43 * b33 + a44 * b43;\n\t\tte[ 15 ] = a41 * b14 + a42 * b24 + a43 * b34 + a44 * b44;\n\n\t\treturn this;\n\n\t},\n\n\tmultiplyToArray: function ( a, b, r ) {\n\n\t\tvar te = this.elements;\n\n\t\tthis.multiplyMatrices( a, b );\n\n\t\tr[ 0 ] = te[ 0 ]; r[ 1 ] = te[ 1 ]; r[ 2 ] = te[ 2 ]; r[ 3 ] = te[ 3 ];\n\t\tr[ 4 ] = te[ 4 ]; r[ 5 ] = te[ 5 ]; r[ 6 ] = te[ 6 ]; r[ 7 ] = te[ 7 ];\n\t\tr[ 8 ] = te[ 8 ]; r[ 9 ] = te[ 9 ]; r[ 10 ] = te[ 10 ]; r[ 11 ] = te[ 11 ];\n\t\tr[ 12 ] = te[ 12 ]; r[ 13 ] = te[ 13 ]; r[ 14 ] = te[ 14 ]; r[ 15 ] = te[ 15 ];\n\n\t\treturn this;\n\n\t},\n\n\tmultiplyScalar: function ( s ) {\n\n\t\tvar te = this.elements;\n\n\t\tte[ 0 ] *= s; te[ 4 ] *= s; te[ 8 ] *= s; te[ 12 ] *= s;\n\t\tte[ 1 ] *= s; te[ 5 ] *= s; te[ 9 ] *= s; te[ 13 ] *= s;\n\t\tte[ 2 ] *= s; te[ 6 ] *= s; te[ 10 ] *= s; te[ 14 ] *= s;\n\t\tte[ 3 ] *= s; te[ 7 ] *= s; te[ 11 ] *= s; te[ 15 ] *= s;\n\n\t\treturn this;\n\n\t},\n\n\tapplyToVector3Array: function () {\n\n\t\tvar v1;\n\n\t\treturn function applyToVector3Array( array, offset, length ) {\n\n\t\t\tif ( v1 === undefined ) v1 = new Vector3();\n\t\t\tif ( offset === undefined ) offset = 0;\n\t\t\tif ( length === undefined ) length = array.length;\n\n\t\t\tfor ( var i = 0, j = offset; i < length; i += 3, j += 3 ) {\n\n\t\t\t\tv1.fromArray( array, j );\n\t\t\t\tv1.applyMatrix4( this );\n\t\t\t\tv1.toArray( array, j );\n\n\t\t\t}\n\n\t\t\treturn array;\n\n\t\t};\n\n\t}(),\n\n\tapplyToBuffer: function () {\n\n\t\tvar v1;\n\n\t\treturn function applyToBuffer( buffer, offset, length ) {\n\n\t\t\tif ( v1 === undefined ) v1 = new Vector3();\n\t\t\tif ( offset === undefined ) offset = 0;\n\t\t\tif ( length === undefined ) length = buffer.length / buffer.itemSize;\n\n\t\t\tfor ( var i = 0, j = offset; i < length; i ++, j ++ ) {\n\n\t\t\t\tv1.x = buffer.getX( j );\n\t\t\t\tv1.y = buffer.getY( j );\n\t\t\t\tv1.z = buffer.getZ( j );\n\n\t\t\t\tv1.applyMatrix4( this );\n\n\t\t\t\tbuffer.setXYZ( j, v1.x, v1.y, v1.z );\n\n\t\t\t}\n\n\t\t\treturn buffer;\n\n\t\t};\n\n\t}(),\n\n\tdeterminant: function () {\n\n\t\tvar te = this.elements;\n\n\t\tvar n11 = te[ 0 ], n12 = te[ 4 ], n13 = te[ 8 ], n14 = te[ 12 ];\n\t\tvar n21 = te[ 1 ], n22 = te[ 5 ], n23 = te[ 9 ], n24 = te[ 13 ];\n\t\tvar n31 = te[ 2 ], n32 = te[ 6 ], n33 = te[ 10 ], n34 = te[ 14 ];\n\t\tvar n41 = te[ 3 ], n42 = te[ 7 ], n43 = te[ 11 ], n44 = te[ 15 ];\n\n\t\t//TODO: make this more efficient\n\t\t//( based on http://www.euclideanspace.com/maths/algebra/matrix/functions/inverse/fourD/index.htm )\n\n\t\treturn (\n\t\t\tn41 * (\n\t\t\t\t+ n14 * n23 * n32\n\t\t\t\t - n13 * n24 * n32\n\t\t\t\t - n14 * n22 * n33\n\t\t\t\t + n12 * n24 * n33\n\t\t\t\t + n13 * n22 * n34\n\t\t\t\t - n12 * n23 * n34\n\t\t\t) +\n\t\t\tn42 * (\n\t\t\t\t+ n11 * n23 * n34\n\t\t\t\t - n11 * n24 * n33\n\t\t\t\t + n14 * n21 * n33\n\t\t\t\t - n13 * n21 * n34\n\t\t\t\t + n13 * n24 * n31\n\t\t\t\t - n14 * n23 * n31\n\t\t\t) +\n\t\t\tn43 * (\n\t\t\t\t+ n11 * n24 * n32\n\t\t\t\t - n11 * n22 * n34\n\t\t\t\t - n14 * n21 * n32\n\t\t\t\t + n12 * n21 * n34\n\t\t\t\t + n14 * n22 * n31\n\t\t\t\t - n12 * n24 * n31\n\t\t\t) +\n\t\t\tn44 * (\n\t\t\t\t- n13 * n22 * n31\n\t\t\t\t - n11 * n23 * n32\n\t\t\t\t + n11 * n22 * n33\n\t\t\t\t + n13 * n21 * n32\n\t\t\t\t - n12 * n21 * n33\n\t\t\t\t + n12 * n23 * n31\n\t\t\t)\n\n\t\t);\n\n\t},\n\n\ttranspose: function () {\n\n\t\tvar te = this.elements;\n\t\tvar tmp;\n\n\t\ttmp = te[ 1 ]; te[ 1 ] = te[ 4 ]; te[ 4 ] = tmp;\n\t\ttmp = te[ 2 ]; te[ 2 ] = te[ 8 ]; te[ 8 ] = tmp;\n\t\ttmp = te[ 6 ]; te[ 6 ] = te[ 9 ]; te[ 9 ] = tmp;\n\n\t\ttmp = te[ 3 ]; te[ 3 ] = te[ 12 ]; te[ 12 ] = tmp;\n\t\ttmp = te[ 7 ]; te[ 7 ] = te[ 13 ]; te[ 13 ] = tmp;\n\t\ttmp = te[ 11 ]; te[ 11 ] = te[ 14 ]; te[ 14 ] = tmp;\n\n\t\treturn this;\n\n\t},\n\n\tflattenToArrayOffset: function ( array, offset ) {\n\n\t\tconsole.warn( \"THREE.Matrix3: .flattenToArrayOffset is deprecated \" +\n\t\t\t\t\"- just use .toArray instead.\" );\n\n\t\treturn this.toArray( array, offset );\n\n\t},\n\n\tgetPosition: function () {\n\n\t\tvar v1;\n\n\t\treturn function getPosition() {\n\n\t\t\tif ( v1 === undefined ) v1 = new Vector3();\n\t\t\tconsole.warn( 'THREE.Matrix4: .getPosition() has been removed. Use Vector3.setFromMatrixPosition( matrix ) instead.' );\n\n\t\t\treturn v1.setFromMatrixColumn( this, 3 );\n\n\t\t};\n\n\t}(),\n\n\tsetPosition: function ( v ) {\n\n\t\tvar te = this.elements;\n\n\t\tte[ 12 ] = v.x;\n\t\tte[ 13 ] = v.y;\n\t\tte[ 14 ] = v.z;\n\n\t\treturn this;\n\n\t},\n\n\tgetInverse: function ( m, throwOnDegenerate ) {\n\n\t\t// based on http://www.euclideanspace.com/maths/algebra/matrix/functions/inverse/fourD/index.htm\n\t\tvar te = this.elements,\n\t\t\tme = m.elements,\n\n\t\t\tn11 = me[ 0 ], n21 = me[ 1 ], n31 = me[ 2 ], n41 = me[ 3 ],\n\t\t\tn12 = me[ 4 ], n22 = me[ 5 ], n32 = me[ 6 ], n42 = me[ 7 ],\n\t\t\tn13 = me[ 8 ], n23 = me[ 9 ], n33 = me[ 10 ], n43 = me[ 11 ],\n\t\t\tn14 = me[ 12 ], n24 = me[ 13 ], n34 = me[ 14 ], n44 = me[ 15 ],\n\n\t\t\tt11 = n23 * n34 * n42 - n24 * n33 * n42 + n24 * n32 * n43 - n22 * n34 * n43 - n23 * n32 * n44 + n22 * n33 * n44,\n\t\t\tt12 = n14 * n33 * n42 - n13 * n34 * n42 - n14 * n32 * n43 + n12 * n34 * n43 + n13 * n32 * n44 - n12 * n33 * n44,\n\t\t\tt13 = n13 * n24 * n42 - n14 * n23 * n42 + n14 * n22 * n43 - n12 * n24 * n43 - n13 * n22 * n44 + n12 * n23 * n44,\n\t\t\tt14 = n14 * n23 * n32 - n13 * n24 * n32 - n14 * n22 * n33 + n12 * n24 * n33 + n13 * n22 * n34 - n12 * n23 * n34;\n\n\t\tvar det = n11 * t11 + n21 * t12 + n31 * t13 + n41 * t14;\n\n\t\tif ( det === 0 ) {\n\n\t\t\tvar msg = \"THREE.Matrix4.getInverse(): can't invert matrix, determinant is 0\";\n\n\t\t\tif ( throwOnDegenerate === true ) {\n\n\t\t\t\tthrow new Error( msg );\n\n\t\t\t} else {\n\n\t\t\t\tconsole.warn( msg );\n\n\t\t\t}\n\n\t\t\treturn this.identity();\n\n\t\t}\n\n\t\tvar detInv = 1 / det;\n\n\t\tte[ 0 ] = t11 * detInv;\n\t\tte[ 1 ] = ( n24 * n33 * n41 - n23 * n34 * n41 - n24 * n31 * n43 + n21 * n34 * n43 + n23 * n31 * n44 - n21 * n33 * n44 ) * detInv;\n\t\tte[ 2 ] = ( n22 * n34 * n41 - n24 * n32 * n41 + n24 * n31 * n42 - n21 * n34 * n42 - n22 * n31 * n44 + n21 * n32 * n44 ) * detInv;\n\t\tte[ 3 ] = ( n23 * n32 * n41 - n22 * n33 * n41 - n23 * n31 * n42 + n21 * n33 * n42 + n22 * n31 * n43 - n21 * n32 * n43 ) * detInv;\n\n\t\tte[ 4 ] = t12 * detInv;\n\t\tte[ 5 ] = ( n13 * n34 * n41 - n14 * n33 * n41 + n14 * n31 * n43 - n11 * n34 * n43 - n13 * n31 * n44 + n11 * n33 * n44 ) * detInv;\n\t\tte[ 6 ] = ( n14 * n32 * n41 - n12 * n34 * n41 - n14 * n31 * n42 + n11 * n34 * n42 + n12 * n31 * n44 - n11 * n32 * n44 ) * detInv;\n\t\tte[ 7 ] = ( n12 * n33 * n41 - n13 * n32 * n41 + n13 * n31 * n42 - n11 * n33 * n42 - n12 * n31 * n43 + n11 * n32 * n43 ) * detInv;\n\n\t\tte[ 8 ] = t13 * detInv;\n\t\tte[ 9 ] = ( n14 * n23 * n41 - n13 * n24 * n41 - n14 * n21 * n43 + n11 * n24 * n43 + n13 * n21 * n44 - n11 * n23 * n44 ) * detInv;\n\t\tte[ 10 ] = ( n12 * n24 * n41 - n14 * n22 * n41 + n14 * n21 * n42 - n11 * n24 * n42 - n12 * n21 * n44 + n11 * n22 * n44 ) * detInv;\n\t\tte[ 11 ] = ( n13 * n22 * n41 - n12 * n23 * n41 - n13 * n21 * n42 + n11 * n23 * n42 + n12 * n21 * n43 - n11 * n22 * n43 ) * detInv;\n\n\t\tte[ 12 ] = t14 * detInv;\n\t\tte[ 13 ] = ( n13 * n24 * n31 - n14 * n23 * n31 + n14 * n21 * n33 - n11 * n24 * n33 - n13 * n21 * n34 + n11 * n23 * n34 ) * detInv;\n\t\tte[ 14 ] = ( n14 * n22 * n31 - n12 * n24 * n31 - n14 * n21 * n32 + n11 * n24 * n32 + n12 * n21 * n34 - n11 * n22 * n34 ) * detInv;\n\t\tte[ 15 ] = ( n12 * n23 * n31 - n13 * n22 * n31 + n13 * n21 * n32 - n11 * n23 * n32 - n12 * n21 * n33 + n11 * n22 * n33 ) * detInv;\n\n\t\treturn this;\n\n\t},\n\n\tscale: function ( v ) {\n\n\t\tvar te = this.elements;\n\t\tvar x = v.x, y = v.y, z = v.z;\n\n\t\tte[ 0 ] *= x; te[ 4 ] *= y; te[ 8 ] *= z;\n\t\tte[ 1 ] *= x; te[ 5 ] *= y; te[ 9 ] *= z;\n\t\tte[ 2 ] *= x; te[ 6 ] *= y; te[ 10 ] *= z;\n\t\tte[ 3 ] *= x; te[ 7 ] *= y; te[ 11 ] *= z;\n\n\t\treturn this;\n\n\t},\n\n\tgetMaxScaleOnAxis: function () {\n\n\t\tvar te = this.elements;\n\n\t\tvar scaleXSq = te[ 0 ] * te[ 0 ] + te[ 1 ] * te[ 1 ] + te[ 2 ] * te[ 2 ];\n\t\tvar scaleYSq = te[ 4 ] * te[ 4 ] + te[ 5 ] * te[ 5 ] + te[ 6 ] * te[ 6 ];\n\t\tvar scaleZSq = te[ 8 ] * te[ 8 ] + te[ 9 ] * te[ 9 ] + te[ 10 ] * te[ 10 ];\n\n\t\treturn Math.sqrt( Math.max( scaleXSq, scaleYSq, scaleZSq ) );\n\n\t},\n\n\tmakeTranslation: function ( x, y, z ) {\n\n\t\tthis.set(\n\n\t\t\t1, 0, 0, x,\n\t\t\t0, 1, 0, y,\n\t\t\t0, 0, 1, z,\n\t\t\t0, 0, 0, 1\n\n\t\t);\n\n\t\treturn this;\n\n\t},\n\n\tmakeRotationX: function ( theta ) {\n\n\t\tvar c = Math.cos( theta ), s = Math.sin( theta );\n\n\t\tthis.set(\n\n\t\t\t1, 0, 0, 0,\n\t\t\t0, c, - s, 0,\n\t\t\t0, s, c, 0,\n\t\t\t0, 0, 0, 1\n\n\t\t);\n\n\t\treturn this;\n\n\t},\n\n\tmakeRotationY: function ( theta ) {\n\n\t\tvar c = Math.cos( theta ), s = Math.sin( theta );\n\n\t\tthis.set(\n\n\t\t\t c, 0, s, 0,\n\t\t\t 0, 1, 0, 0,\n\t\t\t- s, 0, c, 0,\n\t\t\t 0, 0, 0, 1\n\n\t\t);\n\n\t\treturn this;\n\n\t},\n\n\tmakeRotationZ: function ( theta ) {\n\n\t\tvar c = Math.cos( theta ), s = Math.sin( theta );\n\n\t\tthis.set(\n\n\t\t\tc, - s, 0, 0,\n\t\t\ts, c, 0, 0,\n\t\t\t0, 0, 1, 0,\n\t\t\t0, 0, 0, 1\n\n\t\t);\n\n\t\treturn this;\n\n\t},\n\n\tmakeRotationAxis: function ( axis, angle ) {\n\n\t\t// Based on http://www.gamedev.net/reference/articles/article1199.asp\n\n\t\tvar c = Math.cos( angle );\n\t\tvar s = Math.sin( angle );\n\t\tvar t = 1 - c;\n\t\tvar x = axis.x, y = axis.y, z = axis.z;\n\t\tvar tx = t * x, ty = t * y;\n\n\t\tthis.set(\n\n\t\t\ttx * x + c, tx * y - s * z, tx * z + s * y, 0,\n\t\t\ttx * y + s * z, ty * y + c, ty * z - s * x, 0,\n\t\t\ttx * z - s * y, ty * z + s * x, t * z * z + c, 0,\n\t\t\t0, 0, 0, 1\n\n\t\t);\n\n\t\t return this;\n\n\t},\n\n\tmakeScale: function ( x, y, z ) {\n\n\t\tthis.set(\n\n\t\t\tx, 0, 0, 0,\n\t\t\t0, y, 0, 0,\n\t\t\t0, 0, z, 0,\n\t\t\t0, 0, 0, 1\n\n\t\t);\n\n\t\treturn this;\n\n\t},\n\n\tcompose: function ( position, quaternion, scale ) {\n\n\t\tthis.makeRotationFromQuaternion( quaternion );\n\t\tthis.scale( scale );\n\t\tthis.setPosition( position );\n\n\t\treturn this;\n\n\t},\n\n\tdecompose: function () {\n\n\t\tvar vector, matrix;\n\n\t\treturn function decompose( position, quaternion, scale ) {\n\n\t\t\tif ( vector === undefined ) {\n\n\t\t\t\tvector = new Vector3();\n\t\t\t\tmatrix = new Matrix4();\n\n\t\t\t}\n\n\t\t\tvar te = this.elements;\n\n\t\t\tvar sx = vector.set( te[ 0 ], te[ 1 ], te[ 2 ] ).length();\n\t\t\tvar sy = vector.set( te[ 4 ], te[ 5 ], te[ 6 ] ).length();\n\t\t\tvar sz = vector.set( te[ 8 ], te[ 9 ], te[ 10 ] ).length();\n\n\t\t\t// if determine is negative, we need to invert one scale\n\t\t\tvar det = this.determinant();\n\t\t\tif ( det < 0 ) {\n\n\t\t\t\tsx = - sx;\n\n\t\t\t}\n\n\t\t\tposition.x = te[ 12 ];\n\t\t\tposition.y = te[ 13 ];\n\t\t\tposition.z = te[ 14 ];\n\n\t\t\t// scale the rotation part\n\n\t\t\tmatrix.elements.set( this.elements ); // at this point matrix is incomplete so we can't use .copy()\n\n\t\t\tvar invSX = 1 / sx;\n\t\t\tvar invSY = 1 / sy;\n\t\t\tvar invSZ = 1 / sz;\n\n\t\t\tmatrix.elements[ 0 ] *= invSX;\n\t\t\tmatrix.elements[ 1 ] *= invSX;\n\t\t\tmatrix.elements[ 2 ] *= invSX;\n\n\t\t\tmatrix.elements[ 4 ] *= invSY;\n\t\t\tmatrix.elements[ 5 ] *= invSY;\n\t\t\tmatrix.elements[ 6 ] *= invSY;\n\n\t\t\tmatrix.elements[ 8 ] *= invSZ;\n\t\t\tmatrix.elements[ 9 ] *= invSZ;\n\t\t\tmatrix.elements[ 10 ] *= invSZ;\n\n\t\t\tquaternion.setFromRotationMatrix( matrix );\n\n\t\t\tscale.x = sx;\n\t\t\tscale.y = sy;\n\t\t\tscale.z = sz;\n\n\t\t\treturn this;\n\n\t\t};\n\n\t}(),\n\n\tmakeFrustum: function ( left, right, bottom, top, near, far ) {\n\n\t\tvar te = this.elements;\n\t\tvar x = 2 * near / ( right - left );\n\t\tvar y = 2 * near / ( top - bottom );\n\n\t\tvar a = ( right + left ) / ( right - left );\n\t\tvar b = ( top + bottom ) / ( top - bottom );\n\t\tvar c = - ( far + near ) / ( far - near );\n\t\tvar d = - 2 * far * near / ( far - near );\n\n\t\tte[ 0 ] = x;\tte[ 4 ] = 0;\tte[ 8 ] = a;\tte[ 12 ] = 0;\n\t\tte[ 1 ] = 0;\tte[ 5 ] = y;\tte[ 9 ] = b;\tte[ 13 ] = 0;\n\t\tte[ 2 ] = 0;\tte[ 6 ] = 0;\tte[ 10 ] = c;\tte[ 14 ] = d;\n\t\tte[ 3 ] = 0;\tte[ 7 ] = 0;\tte[ 11 ] = - 1;\tte[ 15 ] = 0;\n\n\t\treturn this;\n\n\t},\n\n\tmakePerspective: function ( fov, aspect, near, far ) {\n\n\t\tvar ymax = near * Math.tan( _Math.DEG2RAD * fov * 0.5 );\n\t\tvar ymin = - ymax;\n\t\tvar xmin = ymin * aspect;\n\t\tvar xmax = ymax * aspect;\n\n\t\treturn this.makeFrustum( xmin, xmax, ymin, ymax, near, far );\n\n\t},\n\n\tmakeOrthographic: function ( left, right, top, bottom, near, far ) {\n\n\t\tvar te = this.elements;\n\t\tvar w = 1.0 / ( right - left );\n\t\tvar h = 1.0 / ( top - bottom );\n\t\tvar p = 1.0 / ( far - near );\n\n\t\tvar x = ( right + left ) * w;\n\t\tvar y = ( top + bottom ) * h;\n\t\tvar z = ( far + near ) * p;\n\n\t\tte[ 0 ] = 2 * w;\tte[ 4 ] = 0;\tte[ 8 ] = 0;\tte[ 12 ] = - x;\n\t\tte[ 1 ] = 0;\tte[ 5 ] = 2 * h;\tte[ 9 ] = 0;\tte[ 13 ] = - y;\n\t\tte[ 2 ] = 0;\tte[ 6 ] = 0;\tte[ 10 ] = - 2 * p;\tte[ 14 ] = - z;\n\t\tte[ 3 ] = 0;\tte[ 7 ] = 0;\tte[ 11 ] = 0;\tte[ 15 ] = 1;\n\n\t\treturn this;\n\n\t},\n\n\tequals: function ( matrix ) {\n\n\t\tvar te = this.elements;\n\t\tvar me = matrix.elements;\n\n\t\tfor ( var i = 0; i < 16; i ++ ) {\n\n\t\t\tif ( te[ i ] !== me[ i ] ) return false;\n\n\t\t}\n\n\t\treturn true;\n\n\t},\n\n\tfromArray: function ( array, offset ) {\n\n\t\tif ( offset === undefined ) offset = 0;\n\n\t\tfor( var i = 0; i < 16; i ++ ) {\n\n\t\t\tthis.elements[ i ] = array[ i + offset ];\n\n\t\t}\n\n\t\treturn this;\n\n\t},\n\n\ttoArray: function ( array, offset ) {\n\n\t\tif ( array === undefined ) array = [];\n\t\tif ( offset === undefined ) offset = 0;\n\n\t\tvar te = this.elements;\n\n\t\tarray[ offset ] = te[ 0 ];\n\t\tarray[ offset + 1 ] = te[ 1 ];\n\t\tarray[ offset + 2 ] = te[ 2 ];\n\t\tarray[ offset + 3 ] = te[ 3 ];\n\n\t\tarray[ offset + 4 ] = te[ 4 ];\n\t\tarray[ offset + 5 ] = te[ 5 ];\n\t\tarray[ offset + 6 ] = te[ 6 ];\n\t\tarray[ offset + 7 ] = te[ 7 ];\n\n\t\tarray[ offset + 8 ] = te[ 8 ];\n\t\tarray[ offset + 9 ] = te[ 9 ];\n\t\tarray[ offset + 10 ] = te[ 10 ];\n\t\tarray[ offset + 11 ] = te[ 11 ];\n\n\t\tarray[ offset + 12 ] = te[ 12 ];\n\t\tarray[ offset + 13 ] = te[ 13 ];\n\t\tarray[ offset + 14 ] = te[ 14 ];\n\t\tarray[ offset + 15 ] = te[ 15 ];\n\n\t\treturn array;\n\n\t}\n\n};\n\n\nexport { Matrix4 };\n","import { Texture } from './Texture';\nimport { CubeReflectionMapping } from '../constants';\n\n/**\n * @author mrdoob / http://mrdoob.com/\n */\n\nfunction CubeTexture( images, mapping, wrapS, wrapT, magFilter, minFilter, format, type, anisotropy, encoding ) {\n\n\timages = images !== undefined ? images : [];\n\tmapping = mapping !== undefined ? mapping : CubeReflectionMapping;\n\n\tTexture.call( this, images, mapping, wrapS, wrapT, magFilter, minFilter, format, type, anisotropy, encoding );\n\n\tthis.flipY = false;\n\n}\n\nCubeTexture.prototype = Object.create( Texture.prototype );\nCubeTexture.prototype.constructor = CubeTexture;\n\nCubeTexture.prototype.isCubeTexture = true;\n\nObject.defineProperty( CubeTexture.prototype, 'images', {\n\n\tget: function () {\n\n\t\treturn this.image;\n\n\t},\n\n\tset: function ( value ) {\n\n\t\tthis.image = value;\n\n\t}\n\n} );\n\n\nexport { CubeTexture };\n","/**\n * @author tschw\n *\n * Uniforms of a program.\n * Those form a tree structure with a special top-level container for the root,\n * which you get by calling 'new WebGLUniforms( gl, program, renderer )'.\n *\n *\n * Properties of inner nodes including the top-level container:\n *\n * .seq - array of nested uniforms\n * .map - nested uniforms by name\n *\n *\n * Methods of all nodes except the top-level container:\n *\n * .setValue( gl, value, [renderer] )\n *\n * \t\tuploads a uniform value(s)\n * \tthe 'renderer' parameter is needed for sampler uniforms\n *\n *\n * Static methods of the top-level container (renderer factorizations):\n *\n * .upload( gl, seq, values, renderer )\n *\n * \t\tsets uniforms in 'seq' to 'values[id].value'\n *\n * .seqWithValue( seq, values ) : filteredSeq\n *\n * \t\tfilters 'seq' entries with corresponding entry in values\n *\n *\n * Methods of the top-level container (renderer factorizations):\n *\n * .setValue( gl, name, value )\n *\n * \t\tsets uniform with name 'name' to 'value'\n *\n * .set( gl, obj, prop )\n *\n * \t\tsets uniform from object and property with same name than uniform\n *\n * .setOptional( gl, obj, prop )\n *\n * \t\tlike .set for an optional property of the object\n *\n */\n\nimport { CubeTexture } from '../../textures/CubeTexture';\nimport { Texture } from '../../textures/Texture';\n\nvar emptyTexture = new Texture();\nvar emptyCubeTexture = new CubeTexture();\n\n// --- Base for inner nodes (including the root) ---\n\nfunction UniformContainer() {\n\n\tthis.seq = [];\n\tthis.map = {};\n\n}\n\n// --- Utilities ---\n\n// Array Caches (provide typed arrays for temporary by size)\n\nvar arrayCacheF32 = [];\nvar arrayCacheI32 = [];\n\n// Flattening for arrays of vectors and matrices\n\nfunction flatten( array, nBlocks, blockSize ) {\n\n\tvar firstElem = array[ 0 ];\n\n\tif ( firstElem <= 0 || firstElem > 0 ) return array;\n\t// unoptimized: ! isNaN( firstElem )\n\t// see http://jacksondunstan.com/articles/983\n\n\tvar n = nBlocks * blockSize,\n\t\tr = arrayCacheF32[ n ];\n\n\tif ( r === undefined ) {\n\n\t\tr = new Float32Array( n );\n\t\tarrayCacheF32[ n ] = r;\n\n\t}\n\n\tif ( nBlocks !== 0 ) {\n\n\t\tfirstElem.toArray( r, 0 );\n\n\t\tfor ( var i = 1, offset = 0; i !== nBlocks; ++ i ) {\n\n\t\t\toffset += blockSize;\n\t\t\tarray[ i ].toArray( r, offset );\n\n\t\t}\n\n\t}\n\n\treturn r;\n\n}\n\n// Texture unit allocation\n\nfunction allocTexUnits( renderer, n ) {\n\n\tvar r = arrayCacheI32[ n ];\n\n\tif ( r === undefined ) {\n\n\t\tr = new Int32Array( n );\n\t\tarrayCacheI32[ n ] = r;\n\n\t}\n\n\tfor ( var i = 0; i !== n; ++ i )\n\t\tr[ i ] = renderer.allocTextureUnit();\n\n\treturn r;\n\n}\n\n// --- Setters ---\n\n// Note: Defining these methods externally, because they come in a bunch\n// and this way their names minify.\n\n// Single scalar\n\nfunction setValue1f( gl, v ) { gl.uniform1f( this.addr, v ); }\nfunction setValue1i( gl, v ) { gl.uniform1i( this.addr, v ); }\n\n// Single float vector (from flat array or THREE.VectorN)\n\nfunction setValue2fv( gl, v ) {\n\n\tif ( v.x === undefined ) gl.uniform2fv( this.addr, v );\n\telse gl.uniform2f( this.addr, v.x, v.y );\n\n}\n\nfunction setValue3fv( gl, v ) {\n\n\tif ( v.x !== undefined )\n\t\tgl.uniform3f( this.addr, v.x, v.y, v.z );\n\telse if ( v.r !== undefined )\n\t\tgl.uniform3f( this.addr, v.r, v.g, v.b );\n\telse\n\t\tgl.uniform3fv( this.addr, v );\n\n}\n\nfunction setValue4fv( gl, v ) {\n\n\tif ( v.x === undefined ) gl.uniform4fv( this.addr, v );\n\telse gl.uniform4f( this.addr, v.x, v.y, v.z, v.w );\n\n}\n\n// Single matrix (from flat array or MatrixN)\n\nfunction setValue2fm( gl, v ) {\n\n\tgl.uniformMatrix2fv( this.addr, false, v.elements || v );\n\n}\n\nfunction setValue3fm( gl, v ) {\n\n\tgl.uniformMatrix3fv( this.addr, false, v.elements || v );\n\n}\n\nfunction setValue4fm( gl, v ) {\n\n\tgl.uniformMatrix4fv( this.addr, false, v.elements || v );\n\n}\n\n// Single texture (2D / Cube)\n\nfunction setValueT1( gl, v, renderer ) {\n\n\tvar unit = renderer.allocTextureUnit();\n\tgl.uniform1i( this.addr, unit );\n\trenderer.setTexture2D( v || emptyTexture, unit );\n\n}\n\nfunction setValueT6( gl, v, renderer ) {\n\n\tvar unit = renderer.allocTextureUnit();\n\tgl.uniform1i( this.addr, unit );\n\trenderer.setTextureCube( v || emptyCubeTexture, unit );\n\n}\n\n// Integer / Boolean vectors or arrays thereof (always flat arrays)\n\nfunction setValue2iv( gl, v ) { gl.uniform2iv( this.addr, v ); }\nfunction setValue3iv( gl, v ) { gl.uniform3iv( this.addr, v ); }\nfunction setValue4iv( gl, v ) { gl.uniform4iv( this.addr, v ); }\n\n// Helper to pick the right setter for the singular case\n\nfunction getSingularSetter( type ) {\n\n\tswitch ( type ) {\n\n\t\tcase 0x1406: return setValue1f; // FLOAT\n\t\tcase 0x8b50: return setValue2fv; // _VEC2\n\t\tcase 0x8b51: return setValue3fv; // _VEC3\n\t\tcase 0x8b52: return setValue4fv; // _VEC4\n\n\t\tcase 0x8b5a: return setValue2fm; // _MAT2\n\t\tcase 0x8b5b: return setValue3fm; // _MAT3\n\t\tcase 0x8b5c: return setValue4fm; // _MAT4\n\n\t\tcase 0x8b5e: return setValueT1; // SAMPLER_2D\n\t\tcase 0x8b60: return setValueT6; // SAMPLER_CUBE\n\n\t\tcase 0x1404: case 0x8b56: return setValue1i; // INT, BOOL\n\t\tcase 0x8b53: case 0x8b57: return setValue2iv; // _VEC2\n\t\tcase 0x8b54: case 0x8b58: return setValue3iv; // _VEC3\n\t\tcase 0x8b55: case 0x8b59: return setValue4iv; // _VEC4\n\n\t}\n\n}\n\n// Array of scalars\n\nfunction setValue1fv( gl, v ) { gl.uniform1fv( this.addr, v ); }\nfunction setValue1iv( gl, v ) { gl.uniform1iv( this.addr, v ); }\n\n// Array of vectors (flat or from THREE classes)\n\nfunction setValueV2a( gl, v ) {\n\n\tgl.uniform2fv( this.addr, flatten( v, this.size, 2 ) );\n\n}\n\nfunction setValueV3a( gl, v ) {\n\n\tgl.uniform3fv( this.addr, flatten( v, this.size, 3 ) );\n\n}\n\nfunction setValueV4a( gl, v ) {\n\n\tgl.uniform4fv( this.addr, flatten( v, this.size, 4 ) );\n\n}\n\n// Array of matrices (flat or from THREE clases)\n\nfunction setValueM2a( gl, v ) {\n\n\tgl.uniformMatrix2fv( this.addr, false, flatten( v, this.size, 4 ) );\n\n}\n\nfunction setValueM3a( gl, v ) {\n\n\tgl.uniformMatrix3fv( this.addr, false, flatten( v, this.size, 9 ) );\n\n}\n\nfunction setValueM4a( gl, v ) {\n\n\tgl.uniformMatrix4fv( this.addr, false, flatten( v, this.size, 16 ) );\n\n}\n\n// Array of textures (2D / Cube)\n\nfunction setValueT1a( gl, v, renderer ) {\n\n\tvar n = v.length,\n\t\tunits = allocTexUnits( renderer, n );\n\n\tgl.uniform1iv( this.addr, units );\n\n\tfor ( var i = 0; i !== n; ++ i ) {\n\n\t\trenderer.setTexture2D( v[ i ] || emptyTexture, units[ i ] );\n\n\t}\n\n}\n\nfunction setValueT6a( gl, v, renderer ) {\n\n\tvar n = v.length,\n\t\tunits = allocTexUnits( renderer, n );\n\n\tgl.uniform1iv( this.addr, units );\n\n\tfor ( var i = 0; i !== n; ++ i ) {\n\n\t\trenderer.setTextureCube( v[ i ] || emptyCubeTexture, units[ i ] );\n\n\t}\n\n}\n\n// Helper to pick the right setter for a pure (bottom-level) array\n\nfunction getPureArraySetter( type ) {\n\n\tswitch ( type ) {\n\n\t\tcase 0x1406: return setValue1fv; // FLOAT\n\t\tcase 0x8b50: return setValueV2a; // _VEC2\n\t\tcase 0x8b51: return setValueV3a; // _VEC3\n\t\tcase 0x8b52: return setValueV4a; // _VEC4\n\n\t\tcase 0x8b5a: return setValueM2a; // _MAT2\n\t\tcase 0x8b5b: return setValueM3a; // _MAT3\n\t\tcase 0x8b5c: return setValueM4a; // _MAT4\n\n\t\tcase 0x8b5e: return setValueT1a; // SAMPLER_2D\n\t\tcase 0x8b60: return setValueT6a; // SAMPLER_CUBE\n\n\t\tcase 0x1404: case 0x8b56: return setValue1iv; // INT, BOOL\n\t\tcase 0x8b53: case 0x8b57: return setValue2iv; // _VEC2\n\t\tcase 0x8b54: case 0x8b58: return setValue3iv; // _VEC3\n\t\tcase 0x8b55: case 0x8b59: return setValue4iv; // _VEC4\n\n\t}\n\n}\n\n// --- Uniform Classes ---\n\nfunction SingleUniform( id, activeInfo, addr ) {\n\n\tthis.id = id;\n\tthis.addr = addr;\n\tthis.setValue = getSingularSetter( activeInfo.type );\n\n\t// this.path = activeInfo.name; // DEBUG\n\n}\n\nfunction PureArrayUniform( id, activeInfo, addr ) {\n\n\tthis.id = id;\n\tthis.addr = addr;\n\tthis.size = activeInfo.size;\n\tthis.setValue = getPureArraySetter( activeInfo.type );\n\n\t// this.path = activeInfo.name; // DEBUG\n\n}\n\nfunction StructuredUniform( id ) {\n\n\tthis.id = id;\n\n\tUniformContainer.call( this ); // mix-in\n\n}\n\nStructuredUniform.prototype.setValue = function( gl, value ) {\n\n\t// Note: Don't need an extra 'renderer' parameter, since samplers\n\t// are not allowed in structured uniforms.\n\n\tvar seq = this.seq;\n\n\tfor ( var i = 0, n = seq.length; i !== n; ++ i ) {\n\n\t\tvar u = seq[ i ];\n\t\tu.setValue( gl, value[ u.id ] );\n\n\t}\n\n};\n\n// --- Top-level ---\n\n// Parser - builds up the property tree from the path strings\n\nvar RePathPart = /([\\w\\d_]+)(\\])?(\\[|\\.)?/g;\n\n// extracts\n// \t- the identifier (member name or array index)\n// - followed by an optional right bracket (found when array index)\n// - followed by an optional left bracket or dot (type of subscript)\n//\n// Note: These portions can be read in a non-overlapping fashion and\n// allow straightforward parsing of the hierarchy that WebGL encodes\n// in the uniform names.\n\nfunction addUniform( container, uniformObject ) {\n\n\tcontainer.seq.push( uniformObject );\n\tcontainer.map[ uniformObject.id ] = uniformObject;\n\n}\n\nfunction parseUniform( activeInfo, addr, container ) {\n\n\tvar path = activeInfo.name,\n\t\tpathLength = path.length;\n\n\t// reset RegExp object, because of the early exit of a previous run\n\tRePathPart.lastIndex = 0;\n\n\tfor (; ;) {\n\n\t\tvar match = RePathPart.exec( path ),\n\t\t\tmatchEnd = RePathPart.lastIndex,\n\n\t\t\tid = match[ 1 ],\n\t\t\tidIsIndex = match[ 2 ] === ']',\n\t\t\tsubscript = match[ 3 ];\n\n\t\tif ( idIsIndex ) id = id | 0; // convert to integer\n\n\t\tif ( subscript === undefined ||\n\t\t\t\tsubscript === '[' && matchEnd + 2 === pathLength ) {\n\t\t\t// bare name or \"pure\" bottom-level array \"[0]\" suffix\n\n\t\t\taddUniform( container, subscript === undefined ?\n\t\t\t\t\tnew SingleUniform( id, activeInfo, addr ) :\n\t\t\t\t\tnew PureArrayUniform( id, activeInfo, addr ) );\n\n\t\t\tbreak;\n\n\t\t} else {\n\t\t\t// step into inner node / create it in case it doesn't exist\n\n\t\t\tvar map = container.map,\n\t\t\t\tnext = map[ id ];\n\n\t\t\tif ( next === undefined ) {\n\n\t\t\t\tnext = new StructuredUniform( id );\n\t\t\t\taddUniform( container, next );\n\n\t\t\t}\n\n\t\t\tcontainer = next;\n\n\t\t}\n\n\t}\n\n}\n\n// Root Container\n\nfunction WebGLUniforms( gl, program, renderer ) {\n\n\tUniformContainer.call( this );\n\n\tthis.renderer = renderer;\n\n\tvar n = gl.getProgramParameter( program, gl.ACTIVE_UNIFORMS );\n\n\tfor ( var i = 0; i !== n; ++ i ) {\n\n\t\tvar info = gl.getActiveUniform( program, i ),\n\t\t\tpath = info.name,\n\t\t\taddr = gl.getUniformLocation( program, path );\n\n\t\tparseUniform( info, addr, this );\n\n\t}\n\n}\n\nWebGLUniforms.prototype.setValue = function( gl, name, value ) {\n\n\tvar u = this.map[ name ];\n\n\tif ( u !== undefined ) u.setValue( gl, value, this.renderer );\n\n};\n\nWebGLUniforms.prototype.set = function( gl, object, name ) {\n\n\tvar u = this.map[ name ];\n\n\tif ( u !== undefined ) u.setValue( gl, object[ name ], this.renderer );\n\n};\n\nWebGLUniforms.prototype.setOptional = function( gl, object, name ) {\n\n\tvar v = object[ name ];\n\n\tif ( v !== undefined ) this.setValue( gl, name, v );\n\n};\n\n\n// Static interface\n\nWebGLUniforms.upload = function( gl, seq, values, renderer ) {\n\n\tfor ( var i = 0, n = seq.length; i !== n; ++ i ) {\n\n\t\tvar u = seq[ i ],\n\t\t\tv = values[ u.id ];\n\n\t\tif ( v.needsUpdate !== false ) {\n\t\t\t// note: always updating when .needsUpdate is undefined\n\n\t\t\tu.setValue( gl, v.value, renderer );\n\n\t\t}\n\n\t}\n\n};\n\nWebGLUniforms.seqWithValue = function( seq, values ) {\n\n\tvar r = [];\n\n\tfor ( var i = 0, n = seq.length; i !== n; ++ i ) {\n\n\t\tvar u = seq[ i ];\n\t\tif ( u.id in values ) r.push( u );\n\n\t}\n\n\treturn r;\n\n};\n\nexport { WebGLUniforms };\n","/**\n * Uniform Utilities\n */\n\nvar UniformsUtils = {\n\n\tmerge: function ( uniforms ) {\n\n\t\tvar merged = {};\n\n\t\tfor ( var u = 0; u < uniforms.length; u ++ ) {\n\n\t\t\tvar tmp = this.clone( uniforms[ u ] );\n\n\t\t\tfor ( var p in tmp ) {\n\n\t\t\t\tmerged[ p ] = tmp[ p ];\n\n\t\t\t}\n\n\t\t}\n\n\t\treturn merged;\n\n\t},\n\n\tclone: function ( uniforms_src ) {\n\n\t\tvar uniforms_dst = {};\n\n\t\tfor ( var u in uniforms_src ) {\n\n\t\t\tuniforms_dst[ u ] = {};\n\n\t\t\tfor ( var p in uniforms_src[ u ] ) {\n\n\t\t\t\tvar parameter_src = uniforms_src[ u ][ p ];\n\n\t\t\t\tif ( parameter_src && ( parameter_src.isColor ||\n\t\t\t\t\tparameter_src.isMatrix3 || parameter_src.isMatrix4 ||\n\t\t\t\t\tparameter_src.isVector2 || parameter_src.isVector3 || parameter_src.isVector4 ||\n\t\t\t\t\tparameter_src.isTexture ) ) {\n\n\t\t\t\t\tuniforms_dst[ u ][ p ] = parameter_src.clone();\n\n\t\t\t\t} else if ( Array.isArray( parameter_src ) ) {\n\n\t\t\t\t\tuniforms_dst[ u ][ p ] = parameter_src.slice();\n\n\t\t\t\t} else {\n\n\t\t\t\t\tuniforms_dst[ u ][ p ] = parameter_src;\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t}\n\n\t\treturn uniforms_dst;\n\n\t}\n\n};\n\n\nexport { UniformsUtils };\n","import alphamap_fragment from './ShaderChunk/alphamap_fragment.glsl';\nimport alphamap_pars_fragment from './ShaderChunk/alphamap_pars_fragment.glsl';\nimport alphatest_fragment from './ShaderChunk/alphatest_fragment.glsl';\nimport aomap_fragment from './ShaderChunk/aomap_fragment.glsl';\nimport aomap_pars_fragment from './ShaderChunk/aomap_pars_fragment.glsl';\nimport begin_vertex from './ShaderChunk/begin_vertex.glsl';\nimport beginnormal_vertex from './ShaderChunk/beginnormal_vertex.glsl';\nimport bsdfs from './ShaderChunk/bsdfs.glsl';\nimport bumpmap_pars_fragment from './ShaderChunk/bumpmap_pars_fragment.glsl';\nimport clipping_planes_fragment from './ShaderChunk/clipping_planes_fragment.glsl';\nimport clipping_planes_pars_fragment from './ShaderChunk/clipping_planes_pars_fragment.glsl';\nimport clipping_planes_pars_vertex from './ShaderChunk/clipping_planes_pars_vertex.glsl';\nimport clipping_planes_vertex from './ShaderChunk/clipping_planes_vertex.glsl';\nimport color_fragment from './ShaderChunk/color_fragment.glsl';\nimport color_pars_fragment from './ShaderChunk/color_pars_fragment.glsl';\nimport color_pars_vertex from './ShaderChunk/color_pars_vertex.glsl';\nimport color_vertex from './ShaderChunk/color_vertex.glsl';\nimport common from './ShaderChunk/common.glsl';\nimport cube_uv_reflection_fragment from './ShaderChunk/cube_uv_reflection_fragment.glsl';\nimport defaultnormal_vertex from './ShaderChunk/defaultnormal_vertex.glsl';\nimport displacementmap_pars_vertex from './ShaderChunk/displacementmap_pars_vertex.glsl';\nimport displacementmap_vertex from './ShaderChunk/displacementmap_vertex.glsl';\nimport emissivemap_fragment from './ShaderChunk/emissivemap_fragment.glsl';\nimport emissivemap_pars_fragment from './ShaderChunk/emissivemap_pars_fragment.glsl';\nimport encodings_fragment from './ShaderChunk/encodings_fragment.glsl';\nimport encodings_pars_fragment from './ShaderChunk/encodings_pars_fragment.glsl';\nimport envmap_fragment from './ShaderChunk/envmap_fragment.glsl';\nimport envmap_pars_fragment from './ShaderChunk/envmap_pars_fragment.glsl';\nimport envmap_pars_vertex from './ShaderChunk/envmap_pars_vertex.glsl';\nimport envmap_vertex from './ShaderChunk/envmap_vertex.glsl';\nimport fog_fragment from './ShaderChunk/fog_fragment.glsl';\nimport fog_pars_fragment from './ShaderChunk/fog_pars_fragment.glsl';\nimport lightmap_fragment from './ShaderChunk/lightmap_fragment.glsl';\nimport lightmap_pars_fragment from './ShaderChunk/lightmap_pars_fragment.glsl';\nimport lights_lambert_vertex from './ShaderChunk/lights_lambert_vertex.glsl';\nimport lights_pars from './ShaderChunk/lights_pars.glsl';\nimport lights_phong_fragment from './ShaderChunk/lights_phong_fragment.glsl';\nimport lights_phong_pars_fragment from './ShaderChunk/lights_phong_pars_fragment.glsl';\nimport lights_physical_fragment from './ShaderChunk/lights_physical_fragment.glsl';\nimport lights_physical_pars_fragment from './ShaderChunk/lights_physical_pars_fragment.glsl';\nimport lights_template from './ShaderChunk/lights_template.glsl';\nimport logdepthbuf_fragment from './ShaderChunk/logdepthbuf_fragment.glsl';\nimport logdepthbuf_pars_fragment from './ShaderChunk/logdepthbuf_pars_fragment.glsl';\nimport logdepthbuf_pars_vertex from './ShaderChunk/logdepthbuf_pars_vertex.glsl';\nimport logdepthbuf_vertex from './ShaderChunk/logdepthbuf_vertex.glsl';\nimport map_fragment from './ShaderChunk/map_fragment.glsl';\nimport map_pars_fragment from './ShaderChunk/map_pars_fragment.glsl';\nimport map_particle_fragment from './ShaderChunk/map_particle_fragment.glsl';\nimport map_particle_pars_fragment from './ShaderChunk/map_particle_pars_fragment.glsl';\nimport metalnessmap_fragment from './ShaderChunk/metalnessmap_fragment.glsl';\nimport metalnessmap_pars_fragment from './ShaderChunk/metalnessmap_pars_fragment.glsl';\nimport morphnormal_vertex from './ShaderChunk/morphnormal_vertex.glsl';\nimport morphtarget_pars_vertex from './ShaderChunk/morphtarget_pars_vertex.glsl';\nimport morphtarget_vertex from './ShaderChunk/morphtarget_vertex.glsl';\nimport normal_flip from './ShaderChunk/normal_flip.glsl';\nimport normal_fragment from './ShaderChunk/normal_fragment.glsl';\nimport normalmap_pars_fragment from './ShaderChunk/normalmap_pars_fragment.glsl';\nimport packing from './ShaderChunk/packing.glsl';\nimport premultiplied_alpha_fragment from './ShaderChunk/premultiplied_alpha_fragment.glsl';\nimport project_vertex from './ShaderChunk/project_vertex.glsl';\nimport roughnessmap_fragment from './ShaderChunk/roughnessmap_fragment.glsl';\nimport roughnessmap_pars_fragment from './ShaderChunk/roughnessmap_pars_fragment.glsl';\nimport shadowmap_pars_fragment from './ShaderChunk/shadowmap_pars_fragment.glsl';\nimport shadowmap_pars_vertex from './ShaderChunk/shadowmap_pars_vertex.glsl';\nimport shadowmap_vertex from './ShaderChunk/shadowmap_vertex.glsl';\nimport shadowmask_pars_fragment from './ShaderChunk/shadowmask_pars_fragment.glsl';\nimport skinbase_vertex from './ShaderChunk/skinbase_vertex.glsl';\nimport skinning_pars_vertex from './ShaderChunk/skinning_pars_vertex.glsl';\nimport skinning_vertex from './ShaderChunk/skinning_vertex.glsl';\nimport skinnormal_vertex from './ShaderChunk/skinnormal_vertex.glsl';\nimport specularmap_fragment from './ShaderChunk/specularmap_fragment.glsl';\nimport specularmap_pars_fragment from './ShaderChunk/specularmap_pars_fragment.glsl';\nimport tonemapping_fragment from './ShaderChunk/tonemapping_fragment.glsl';\nimport tonemapping_pars_fragment from './ShaderChunk/tonemapping_pars_fragment.glsl';\nimport uv_pars_fragment from './ShaderChunk/uv_pars_fragment.glsl';\nimport uv_pars_vertex from './ShaderChunk/uv_pars_vertex.glsl';\nimport uv_vertex from './ShaderChunk/uv_vertex.glsl';\nimport uv2_pars_fragment from './ShaderChunk/uv2_pars_fragment.glsl';\nimport uv2_pars_vertex from './ShaderChunk/uv2_pars_vertex.glsl';\nimport uv2_vertex from './ShaderChunk/uv2_vertex.glsl';\nimport worldpos_vertex from './ShaderChunk/worldpos_vertex.glsl';\n\nimport cube_frag from './ShaderLib/cube_frag.glsl';\nimport cube_vert from './ShaderLib/cube_vert.glsl';\nimport depth_frag from './ShaderLib/depth_frag.glsl';\nimport depth_vert from './ShaderLib/depth_vert.glsl';\nimport distanceRGBA_frag from './ShaderLib/distanceRGBA_frag.glsl';\nimport distanceRGBA_vert from './ShaderLib/distanceRGBA_vert.glsl';\nimport equirect_frag from './ShaderLib/equirect_frag.glsl';\nimport equirect_vert from './ShaderLib/equirect_vert.glsl';\nimport linedashed_frag from './ShaderLib/linedashed_frag.glsl';\nimport linedashed_vert from './ShaderLib/linedashed_vert.glsl';\nimport meshbasic_frag from './ShaderLib/meshbasic_frag.glsl';\nimport meshbasic_vert from './ShaderLib/meshbasic_vert.glsl';\nimport meshlambert_frag from './ShaderLib/meshlambert_frag.glsl';\nimport meshlambert_vert from './ShaderLib/meshlambert_vert.glsl';\nimport meshphong_frag from './ShaderLib/meshphong_frag.glsl';\nimport meshphong_vert from './ShaderLib/meshphong_vert.glsl';\nimport meshphysical_frag from './ShaderLib/meshphysical_frag.glsl';\nimport meshphysical_vert from './ShaderLib/meshphysical_vert.glsl';\nimport normal_frag from './ShaderLib/normal_frag.glsl';\nimport normal_vert from './ShaderLib/normal_vert.glsl';\nimport points_frag from './ShaderLib/points_frag.glsl';\nimport points_vert from './ShaderLib/points_vert.glsl';\nimport shadow_frag from './ShaderLib/shadow_frag.glsl';\nimport shadow_vert from './ShaderLib/shadow_vert.glsl';\n\nexport var ShaderChunk = {\n\talphamap_fragment: alphamap_fragment,\n\talphamap_pars_fragment: alphamap_pars_fragment,\n\talphatest_fragment: alphatest_fragment,\n\taomap_fragment: aomap_fragment,\n\taomap_pars_fragment: aomap_pars_fragment,\n\tbegin_vertex: begin_vertex,\n\tbeginnormal_vertex: beginnormal_vertex,\n\tbsdfs: bsdfs,\n\tbumpmap_pars_fragment: bumpmap_pars_fragment,\n\tclipping_planes_fragment: clipping_planes_fragment,\n\tclipping_planes_pars_fragment: clipping_planes_pars_fragment,\n\tclipping_planes_pars_vertex: clipping_planes_pars_vertex,\n\tclipping_planes_vertex: clipping_planes_vertex,\n\tcolor_fragment: color_fragment,\n\tcolor_pars_fragment: color_pars_fragment,\n\tcolor_pars_vertex: color_pars_vertex,\n\tcolor_vertex: color_vertex,\n\tcommon: common,\n\tcube_uv_reflection_fragment: cube_uv_reflection_fragment,\n\tdefaultnormal_vertex: defaultnormal_vertex,\n\tdisplacementmap_pars_vertex: displacementmap_pars_vertex,\n\tdisplacementmap_vertex: displacementmap_vertex,\n\temissivemap_fragment: emissivemap_fragment,\n\temissivemap_pars_fragment: emissivemap_pars_fragment,\n\tencodings_fragment: encodings_fragment,\n\tencodings_pars_fragment: encodings_pars_fragment,\n\tenvmap_fragment: envmap_fragment,\n\tenvmap_pars_fragment: envmap_pars_fragment,\n\tenvmap_pars_vertex: envmap_pars_vertex,\n\tenvmap_vertex: envmap_vertex,\n\tfog_fragment: fog_fragment,\n\tfog_pars_fragment: fog_pars_fragment,\n\tlightmap_fragment: lightmap_fragment,\n\tlightmap_pars_fragment: lightmap_pars_fragment,\n\tlights_lambert_vertex: lights_lambert_vertex,\n\tlights_pars: lights_pars,\n\tlights_phong_fragment: lights_phong_fragment,\n\tlights_phong_pars_fragment: lights_phong_pars_fragment,\n\tlights_physical_fragment: lights_physical_fragment,\n\tlights_physical_pars_fragment: lights_physical_pars_fragment,\n\tlights_template: lights_template,\n\tlogdepthbuf_fragment: logdepthbuf_fragment,\n\tlogdepthbuf_pars_fragment: logdepthbuf_pars_fragment,\n\tlogdepthbuf_pars_vertex: logdepthbuf_pars_vertex,\n\tlogdepthbuf_vertex: logdepthbuf_vertex,\n\tmap_fragment: map_fragment,\n\tmap_pars_fragment: map_pars_fragment,\n\tmap_particle_fragment: map_particle_fragment,\n\tmap_particle_pars_fragment: map_particle_pars_fragment,\n\tmetalnessmap_fragment: metalnessmap_fragment,\n\tmetalnessmap_pars_fragment: metalnessmap_pars_fragment,\n\tmorphnormal_vertex: morphnormal_vertex,\n\tmorphtarget_pars_vertex: morphtarget_pars_vertex,\n\tmorphtarget_vertex: morphtarget_vertex,\n\tnormal_flip: normal_flip,\n\tnormal_fragment: normal_fragment,\n\tnormalmap_pars_fragment: normalmap_pars_fragment,\n\tpacking: packing,\n\tpremultiplied_alpha_fragment: premultiplied_alpha_fragment,\n\tproject_vertex: project_vertex,\n\troughnessmap_fragment: roughnessmap_fragment,\n\troughnessmap_pars_fragment: roughnessmap_pars_fragment,\n\tshadowmap_pars_fragment: shadowmap_pars_fragment,\n\tshadowmap_pars_vertex: shadowmap_pars_vertex,\n\tshadowmap_vertex: shadowmap_vertex,\n\tshadowmask_pars_fragment: shadowmask_pars_fragment,\n\tskinbase_vertex: skinbase_vertex,\n\tskinning_pars_vertex: skinning_pars_vertex,\n\tskinning_vertex: skinning_vertex,\n\tskinnormal_vertex: skinnormal_vertex,\n\tspecularmap_fragment: specularmap_fragment,\n\tspecularmap_pars_fragment: specularmap_pars_fragment,\n\ttonemapping_fragment: tonemapping_fragment,\n\ttonemapping_pars_fragment: tonemapping_pars_fragment,\n\tuv_pars_fragment: uv_pars_fragment,\n\tuv_pars_vertex: uv_pars_vertex,\n\tuv_vertex: uv_vertex,\n\tuv2_pars_fragment: uv2_pars_fragment,\n\tuv2_pars_vertex: uv2_pars_vertex,\n\tuv2_vertex: uv2_vertex,\n\tworldpos_vertex: worldpos_vertex,\n\n\tcube_frag: cube_frag,\n\tcube_vert: cube_vert,\n\tdepth_frag: depth_frag,\n\tdepth_vert: depth_vert,\n\tdistanceRGBA_frag: distanceRGBA_frag,\n\tdistanceRGBA_vert: distanceRGBA_vert,\n\tequirect_frag: equirect_frag,\n\tequirect_vert: equirect_vert,\n\tlinedashed_frag: linedashed_frag,\n\tlinedashed_vert: linedashed_vert,\n\tmeshbasic_frag: meshbasic_frag,\n\tmeshbasic_vert: meshbasic_vert,\n\tmeshlambert_frag: meshlambert_frag,\n\tmeshlambert_vert: meshlambert_vert,\n\tmeshphong_frag: meshphong_frag,\n\tmeshphong_vert: meshphong_vert,\n\tmeshphysical_frag: meshphysical_frag,\n\tmeshphysical_vert: meshphysical_vert,\n\tnormal_frag: normal_frag,\n\tnormal_vert: normal_vert,\n\tpoints_frag: points_frag,\n\tpoints_vert: points_vert,\n\tshadow_frag: shadow_frag,\n\tshadow_vert: shadow_vert\n};\n","import { _Math } from './Math';\n\n/**\n * @author mrdoob / http://mrdoob.com/\n */\n\nfunction Color( r, g, b ) {\n\n\tif ( g === undefined && b === undefined ) {\n\n\t\t// r is THREE.Color, hex or string\n\t\treturn this.set( r );\n\n\t}\n\n\treturn this.setRGB( r, g, b );\n\n}\n\nColor.prototype = {\n\n\tconstructor: Color,\n\n\tisColor: true,\n\n\tr: 1, g: 1, b: 1,\n\n\tset: function ( value ) {\n\n\t\tif ( (value && value.isColor) ) {\n\n\t\t\tthis.copy( value );\n\n\t\t} else if ( typeof value === 'number' ) {\n\n\t\t\tthis.setHex( value );\n\n\t\t} else if ( typeof value === 'string' ) {\n\n\t\t\tthis.setStyle( value );\n\n\t\t}\n\n\t\treturn this;\n\n\t},\n\n\tsetScalar: function ( scalar ) {\n\n\t\tthis.r = scalar;\n\t\tthis.g = scalar;\n\t\tthis.b = scalar;\n\n\t\treturn this;\n\n\t},\n\n\tsetHex: function ( hex ) {\n\n\t\thex = Math.floor( hex );\n\n\t\tthis.r = ( hex >> 16 & 255 ) / 255;\n\t\tthis.g = ( hex >> 8 & 255 ) / 255;\n\t\tthis.b = ( hex & 255 ) / 255;\n\n\t\treturn this;\n\n\t},\n\n\tsetRGB: function ( r, g, b ) {\n\n\t\tthis.r = r;\n\t\tthis.g = g;\n\t\tthis.b = b;\n\n\t\treturn this;\n\n\t},\n\n\tsetHSL: function () {\n\n\t\tfunction hue2rgb( p, q, t ) {\n\n\t\t\tif ( t < 0 ) t += 1;\n\t\t\tif ( t > 1 ) t -= 1;\n\t\t\tif ( t < 1 / 6 ) return p + ( q - p ) * 6 * t;\n\t\t\tif ( t < 1 / 2 ) return q;\n\t\t\tif ( t < 2 / 3 ) return p + ( q - p ) * 6 * ( 2 / 3 - t );\n\t\t\treturn p;\n\n\t\t}\n\n\t\treturn function setHSL( h, s, l ) {\n\n\t\t\t// h,s,l ranges are in 0.0 - 1.0\n\t\t\th = _Math.euclideanModulo( h, 1 );\n\t\t\ts = _Math.clamp( s, 0, 1 );\n\t\t\tl = _Math.clamp( l, 0, 1 );\n\n\t\t\tif ( s === 0 ) {\n\n\t\t\t\tthis.r = this.g = this.b = l;\n\n\t\t\t} else {\n\n\t\t\t\tvar p = l <= 0.5 ? l * ( 1 + s ) : l + s - ( l * s );\n\t\t\t\tvar q = ( 2 * l ) - p;\n\n\t\t\t\tthis.r = hue2rgb( q, p, h + 1 / 3 );\n\t\t\t\tthis.g = hue2rgb( q, p, h );\n\t\t\t\tthis.b = hue2rgb( q, p, h - 1 / 3 );\n\n\t\t\t}\n\n\t\t\treturn this;\n\n\t\t};\n\n\t}(),\n\n\tsetStyle: function ( style ) {\n\n\t\tfunction handleAlpha( string ) {\n\n\t\t\tif ( string === undefined ) return;\n\n\t\t\tif ( parseFloat( string ) < 1 ) {\n\n\t\t\t\tconsole.warn( 'THREE.Color: Alpha component of ' + style + ' will be ignored.' );\n\n\t\t\t}\n\n\t\t}\n\n\n\t\tvar m;\n\n\t\tif ( m = /^((?:rgb|hsl)a?)\\(\\s*([^\\)]*)\\)/.exec( style ) ) {\n\n\t\t\t// rgb / hsl\n\n\t\t\tvar color;\n\t\t\tvar name = m[ 1 ];\n\t\t\tvar components = m[ 2 ];\n\n\t\t\tswitch ( name ) {\n\n\t\t\t\tcase 'rgb':\n\t\t\t\tcase 'rgba':\n\n\t\t\t\t\tif ( color = /^(\\d+)\\s*,\\s*(\\d+)\\s*,\\s*(\\d+)\\s*(,\\s*([0-9]*\\.?[0-9]+)\\s*)?$/.exec( components ) ) {\n\n\t\t\t\t\t\t// rgb(255,0,0) rgba(255,0,0,0.5)\n\t\t\t\t\t\tthis.r = Math.min( 255, parseInt( color[ 1 ], 10 ) ) / 255;\n\t\t\t\t\t\tthis.g = Math.min( 255, parseInt( color[ 2 ], 10 ) ) / 255;\n\t\t\t\t\t\tthis.b = Math.min( 255, parseInt( color[ 3 ], 10 ) ) / 255;\n\n\t\t\t\t\t\thandleAlpha( color[ 5 ] );\n\n\t\t\t\t\t\treturn this;\n\n\t\t\t\t\t}\n\n\t\t\t\t\tif ( color = /^(\\d+)\\%\\s*,\\s*(\\d+)\\%\\s*,\\s*(\\d+)\\%\\s*(,\\s*([0-9]*\\.?[0-9]+)\\s*)?$/.exec( components ) ) {\n\n\t\t\t\t\t\t// rgb(100%,0%,0%) rgba(100%,0%,0%,0.5)\n\t\t\t\t\t\tthis.r = Math.min( 100, parseInt( color[ 1 ], 10 ) ) / 100;\n\t\t\t\t\t\tthis.g = Math.min( 100, parseInt( color[ 2 ], 10 ) ) / 100;\n\t\t\t\t\t\tthis.b = Math.min( 100, parseInt( color[ 3 ], 10 ) ) / 100;\n\n\t\t\t\t\t\thandleAlpha( color[ 5 ] );\n\n\t\t\t\t\t\treturn this;\n\n\t\t\t\t\t}\n\n\t\t\t\t\tbreak;\n\n\t\t\t\tcase 'hsl':\n\t\t\t\tcase 'hsla':\n\n\t\t\t\t\tif ( color = /^([0-9]*\\.?[0-9]+)\\s*,\\s*(\\d+)\\%\\s*,\\s*(\\d+)\\%\\s*(,\\s*([0-9]*\\.?[0-9]+)\\s*)?$/.exec( components ) ) {\n\n\t\t\t\t\t\t// hsl(120,50%,50%) hsla(120,50%,50%,0.5)\n\t\t\t\t\t\tvar h = parseFloat( color[ 1 ] ) / 360;\n\t\t\t\t\t\tvar s = parseInt( color[ 2 ], 10 ) / 100;\n\t\t\t\t\t\tvar l = parseInt( color[ 3 ], 10 ) / 100;\n\n\t\t\t\t\t\thandleAlpha( color[ 5 ] );\n\n\t\t\t\t\t\treturn this.setHSL( h, s, l );\n\n\t\t\t\t\t}\n\n\t\t\t\t\tbreak;\n\n\t\t\t}\n\n\t\t} else if ( m = /^\\#([A-Fa-f0-9]+)$/.exec( style ) ) {\n\n\t\t\t// hex color\n\n\t\t\tvar hex = m[ 1 ];\n\t\t\tvar size = hex.length;\n\n\t\t\tif ( size === 3 ) {\n\n\t\t\t\t// #ff0\n\t\t\t\tthis.r = parseInt( hex.charAt( 0 ) + hex.charAt( 0 ), 16 ) / 255;\n\t\t\t\tthis.g = parseInt( hex.charAt( 1 ) + hex.charAt( 1 ), 16 ) / 255;\n\t\t\t\tthis.b = parseInt( hex.charAt( 2 ) + hex.charAt( 2 ), 16 ) / 255;\n\n\t\t\t\treturn this;\n\n\t\t\t} else if ( size === 6 ) {\n\n\t\t\t\t// #ff0000\n\t\t\t\tthis.r = parseInt( hex.charAt( 0 ) + hex.charAt( 1 ), 16 ) / 255;\n\t\t\t\tthis.g = parseInt( hex.charAt( 2 ) + hex.charAt( 3 ), 16 ) / 255;\n\t\t\t\tthis.b = parseInt( hex.charAt( 4 ) + hex.charAt( 5 ), 16 ) / 255;\n\n\t\t\t\treturn this;\n\n\t\t\t}\n\n\t\t}\n\n\t\tif ( style && style.length > 0 ) {\n\n\t\t\t// color keywords\n\t\t\tvar hex = ColorKeywords[ style ];\n\n\t\t\tif ( hex !== undefined ) {\n\n\t\t\t\t// red\n\t\t\t\tthis.setHex( hex );\n\n\t\t\t} else {\n\n\t\t\t\t// unknown color\n\t\t\t\tconsole.warn( 'THREE.Color: Unknown color ' + style );\n\n\t\t\t}\n\n\t\t}\n\n\t\treturn this;\n\n\t},\n\n\tclone: function () {\n\n\t\treturn new this.constructor( this.r, this.g, this.b );\n\n\t},\n\n\tcopy: function ( color ) {\n\n\t\tthis.r = color.r;\n\t\tthis.g = color.g;\n\t\tthis.b = color.b;\n\n\t\treturn this;\n\n\t},\n\n\tcopyGammaToLinear: function ( color, gammaFactor ) {\n\n\t\tif ( gammaFactor === undefined ) gammaFactor = 2.0;\n\n\t\tthis.r = Math.pow( color.r, gammaFactor );\n\t\tthis.g = Math.pow( color.g, gammaFactor );\n\t\tthis.b = Math.pow( color.b, gammaFactor );\n\n\t\treturn this;\n\n\t},\n\n\tcopyLinearToGamma: function ( color, gammaFactor ) {\n\n\t\tif ( gammaFactor === undefined ) gammaFactor = 2.0;\n\n\t\tvar safeInverse = ( gammaFactor > 0 ) ? ( 1.0 / gammaFactor ) : 1.0;\n\n\t\tthis.r = Math.pow( color.r, safeInverse );\n\t\tthis.g = Math.pow( color.g, safeInverse );\n\t\tthis.b = Math.pow( color.b, safeInverse );\n\n\t\treturn this;\n\n\t},\n\n\tconvertGammaToLinear: function () {\n\n\t\tvar r = this.r, g = this.g, b = this.b;\n\n\t\tthis.r = r * r;\n\t\tthis.g = g * g;\n\t\tthis.b = b * b;\n\n\t\treturn this;\n\n\t},\n\n\tconvertLinearToGamma: function () {\n\n\t\tthis.r = Math.sqrt( this.r );\n\t\tthis.g = Math.sqrt( this.g );\n\t\tthis.b = Math.sqrt( this.b );\n\n\t\treturn this;\n\n\t},\n\n\tgetHex: function () {\n\n\t\treturn ( this.r * 255 ) << 16 ^ ( this.g * 255 ) << 8 ^ ( this.b * 255 ) << 0;\n\n\t},\n\n\tgetHexString: function () {\n\n\t\treturn ( '000000' + this.getHex().toString( 16 ) ).slice( - 6 );\n\n\t},\n\n\tgetHSL: function ( optionalTarget ) {\n\n\t\t// h,s,l ranges are in 0.0 - 1.0\n\n\t\tvar hsl = optionalTarget || { h: 0, s: 0, l: 0 };\n\n\t\tvar r = this.r, g = this.g, b = this.b;\n\n\t\tvar max = Math.max( r, g, b );\n\t\tvar min = Math.min( r, g, b );\n\n\t\tvar hue, saturation;\n\t\tvar lightness = ( min + max ) / 2.0;\n\n\t\tif ( min === max ) {\n\n\t\t\thue = 0;\n\t\t\tsaturation = 0;\n\n\t\t} else {\n\n\t\t\tvar delta = max - min;\n\n\t\t\tsaturation = lightness <= 0.5 ? delta / ( max + min ) : delta / ( 2 - max - min );\n\n\t\t\tswitch ( max ) {\n\n\t\t\t\tcase r: hue = ( g - b ) / delta + ( g < b ? 6 : 0 ); break;\n\t\t\t\tcase g: hue = ( b - r ) / delta + 2; break;\n\t\t\t\tcase b: hue = ( r - g ) / delta + 4; break;\n\n\t\t\t}\n\n\t\t\thue /= 6;\n\n\t\t}\n\n\t\thsl.h = hue;\n\t\thsl.s = saturation;\n\t\thsl.l = lightness;\n\n\t\treturn hsl;\n\n\t},\n\n\tgetStyle: function () {\n\n\t\treturn 'rgb(' + ( ( this.r * 255 ) | 0 ) + ',' + ( ( this.g * 255 ) | 0 ) + ',' + ( ( this.b * 255 ) | 0 ) + ')';\n\n\t},\n\n\toffsetHSL: function ( h, s, l ) {\n\n\t\tvar hsl = this.getHSL();\n\n\t\thsl.h += h; hsl.s += s; hsl.l += l;\n\n\t\tthis.setHSL( hsl.h, hsl.s, hsl.l );\n\n\t\treturn this;\n\n\t},\n\n\tadd: function ( color ) {\n\n\t\tthis.r += color.r;\n\t\tthis.g += color.g;\n\t\tthis.b += color.b;\n\n\t\treturn this;\n\n\t},\n\n\taddColors: function ( color1, color2 ) {\n\n\t\tthis.r = color1.r + color2.r;\n\t\tthis.g = color1.g + color2.g;\n\t\tthis.b = color1.b + color2.b;\n\n\t\treturn this;\n\n\t},\n\n\taddScalar: function ( s ) {\n\n\t\tthis.r += s;\n\t\tthis.g += s;\n\t\tthis.b += s;\n\n\t\treturn this;\n\n\t},\n\n\tsub: function( color ) {\n\n\t\tthis.r = Math.max( 0, this.r - color.r );\n\t\tthis.g = Math.max( 0, this.g - color.g );\n\t\tthis.b = Math.max( 0, this.b - color.b );\n\n\t\treturn this;\n\n\t},\n\n\tmultiply: function ( color ) {\n\n\t\tthis.r *= color.r;\n\t\tthis.g *= color.g;\n\t\tthis.b *= color.b;\n\n\t\treturn this;\n\n\t},\n\n\tmultiplyScalar: function ( s ) {\n\n\t\tthis.r *= s;\n\t\tthis.g *= s;\n\t\tthis.b *= s;\n\n\t\treturn this;\n\n\t},\n\n\tlerp: function ( color, alpha ) {\n\n\t\tthis.r += ( color.r - this.r ) * alpha;\n\t\tthis.g += ( color.g - this.g ) * alpha;\n\t\tthis.b += ( color.b - this.b ) * alpha;\n\n\t\treturn this;\n\n\t},\n\n\tequals: function ( c ) {\n\n\t\treturn ( c.r === this.r ) && ( c.g === this.g ) && ( c.b === this.b );\n\n\t},\n\n\tfromArray: function ( array, offset ) {\n\n\t\tif ( offset === undefined ) offset = 0;\n\n\t\tthis.r = array[ offset ];\n\t\tthis.g = array[ offset + 1 ];\n\t\tthis.b = array[ offset + 2 ];\n\n\t\treturn this;\n\n\t},\n\n\ttoArray: function ( array, offset ) {\n\n\t\tif ( array === undefined ) array = [];\n\t\tif ( offset === undefined ) offset = 0;\n\n\t\tarray[ offset ] = this.r;\n\t\tarray[ offset + 1 ] = this.g;\n\t\tarray[ offset + 2 ] = this.b;\n\n\t\treturn array;\n\n\t},\n\n\ttoJSON: function () {\n\n\t\treturn this.getHex();\n\n\t}\n\n};\n\nvar ColorKeywords = { 'aliceblue': 0xF0F8FF, 'antiquewhite': 0xFAEBD7, 'aqua': 0x00FFFF, 'aquamarine': 0x7FFFD4, 'azure': 0xF0FFFF,\n'beige': 0xF5F5DC, 'bisque': 0xFFE4C4, 'black': 0x000000, 'blanchedalmond': 0xFFEBCD, 'blue': 0x0000FF, 'blueviolet': 0x8A2BE2,\n'brown': 0xA52A2A, 'burlywood': 0xDEB887, 'cadetblue': 0x5F9EA0, 'chartreuse': 0x7FFF00, 'chocolate': 0xD2691E, 'coral': 0xFF7F50,\n'cornflowerblue': 0x6495ED, 'cornsilk': 0xFFF8DC, 'crimson': 0xDC143C, 'cyan': 0x00FFFF, 'darkblue': 0x00008B, 'darkcyan': 0x008B8B,\n'darkgoldenrod': 0xB8860B, 'darkgray': 0xA9A9A9, 'darkgreen': 0x006400, 'darkgrey': 0xA9A9A9, 'darkkhaki': 0xBDB76B, 'darkmagenta': 0x8B008B,\n'darkolivegreen': 0x556B2F, 'darkorange': 0xFF8C00, 'darkorchid': 0x9932CC, 'darkred': 0x8B0000, 'darksalmon': 0xE9967A, 'darkseagreen': 0x8FBC8F,\n'darkslateblue': 0x483D8B, 'darkslategray': 0x2F4F4F, 'darkslategrey': 0x2F4F4F, 'darkturquoise': 0x00CED1, 'darkviolet': 0x9400D3,\n'deeppink': 0xFF1493, 'deepskyblue': 0x00BFFF, 'dimgray': 0x696969, 'dimgrey': 0x696969, 'dodgerblue': 0x1E90FF, 'firebrick': 0xB22222,\n'floralwhite': 0xFFFAF0, 'forestgreen': 0x228B22, 'fuchsia': 0xFF00FF, 'gainsboro': 0xDCDCDC, 'ghostwhite': 0xF8F8FF, 'gold': 0xFFD700,\n'goldenrod': 0xDAA520, 'gray': 0x808080, 'green': 0x008000, 'greenyellow': 0xADFF2F, 'grey': 0x808080, 'honeydew': 0xF0FFF0, 'hotpink': 0xFF69B4,\n'indianred': 0xCD5C5C, 'indigo': 0x4B0082, 'ivory': 0xFFFFF0, 'khaki': 0xF0E68C, 'lavender': 0xE6E6FA, 'lavenderblush': 0xFFF0F5, 'lawngreen': 0x7CFC00,\n'lemonchiffon': 0xFFFACD, 'lightblue': 0xADD8E6, 'lightcoral': 0xF08080, 'lightcyan': 0xE0FFFF, 'lightgoldenrodyellow': 0xFAFAD2, 'lightgray': 0xD3D3D3,\n'lightgreen': 0x90EE90, 'lightgrey': 0xD3D3D3, 'lightpink': 0xFFB6C1, 'lightsalmon': 0xFFA07A, 'lightseagreen': 0x20B2AA, 'lightskyblue': 0x87CEFA,\n'lightslategray': 0x778899, 'lightslategrey': 0x778899, 'lightsteelblue': 0xB0C4DE, 'lightyellow': 0xFFFFE0, 'lime': 0x00FF00, 'limegreen': 0x32CD32,\n'linen': 0xFAF0E6, 'magenta': 0xFF00FF, 'maroon': 0x800000, 'mediumaquamarine': 0x66CDAA, 'mediumblue': 0x0000CD, 'mediumorchid': 0xBA55D3,\n'mediumpurple': 0x9370DB, 'mediumseagreen': 0x3CB371, 'mediumslateblue': 0x7B68EE, 'mediumspringgreen': 0x00FA9A, 'mediumturquoise': 0x48D1CC,\n'mediumvioletred': 0xC71585, 'midnightblue': 0x191970, 'mintcream': 0xF5FFFA, 'mistyrose': 0xFFE4E1, 'moccasin': 0xFFE4B5, 'navajowhite': 0xFFDEAD,\n'navy': 0x000080, 'oldlace': 0xFDF5E6, 'olive': 0x808000, 'olivedrab': 0x6B8E23, 'orange': 0xFFA500, 'orangered': 0xFF4500, 'orchid': 0xDA70D6,\n'palegoldenrod': 0xEEE8AA, 'palegreen': 0x98FB98, 'paleturquoise': 0xAFEEEE, 'palevioletred': 0xDB7093, 'papayawhip': 0xFFEFD5, 'peachpuff': 0xFFDAB9,\n'peru': 0xCD853F, 'pink': 0xFFC0CB, 'plum': 0xDDA0DD, 'powderblue': 0xB0E0E6, 'purple': 0x800080, 'red': 0xFF0000, 'rosybrown': 0xBC8F8F,\n'royalblue': 0x4169E1, 'saddlebrown': 0x8B4513, 'salmon': 0xFA8072, 'sandybrown': 0xF4A460, 'seagreen': 0x2E8B57, 'seashell': 0xFFF5EE,\n'sienna': 0xA0522D, 'silver': 0xC0C0C0, 'skyblue': 0x87CEEB, 'slateblue': 0x6A5ACD, 'slategray': 0x708090, 'slategrey': 0x708090, 'snow': 0xFFFAFA,\n'springgreen': 0x00FF7F, 'steelblue': 0x4682B4, 'tan': 0xD2B48C, 'teal': 0x008080, 'thistle': 0xD8BFD8, 'tomato': 0xFF6347, 'turquoise': 0x40E0D0,\n'violet': 0xEE82EE, 'wheat': 0xF5DEB3, 'white': 0xFFFFFF, 'whitesmoke': 0xF5F5F5, 'yellow': 0xFFFF00, 'yellowgreen': 0x9ACD32 };\n\n\nexport { ColorKeywords, Color };\n","import { Vector4 } from '../../math/Vector4';\nimport { Color } from '../../math/Color';\nimport { Vector2 } from '../../math/Vector2';\n\n/**\n * Uniforms library for shared webgl shaders\n */\n\nvar UniformsLib = {\n\n\tcommon: {\n\n\t\tdiffuse: { value: new Color( 0xeeeeee ) },\n\t\topacity: { value: 1.0 },\n\n\t\tmap: { value: null },\n\t\toffsetRepeat: { value: new Vector4( 0, 0, 1, 1 ) },\n\n\t\tspecularMap: { value: null },\n\t\talphaMap: { value: null },\n\n\t\tenvMap: { value: null },\n\t\tflipEnvMap: { value: - 1 },\n\t\treflectivity: { value: 1.0 },\n\t\trefractionRatio: { value: 0.98 }\n\n\t},\n\n\taomap: {\n\n\t\taoMap: { value: null },\n\t\taoMapIntensity: { value: 1 }\n\n\t},\n\n\tlightmap: {\n\n\t\tlightMap: { value: null },\n\t\tlightMapIntensity: { value: 1 }\n\n\t},\n\n\temissivemap: {\n\n\t\temissiveMap: { value: null }\n\n\t},\n\n\tbumpmap: {\n\n\t\tbumpMap: { value: null },\n\t\tbumpScale: { value: 1 }\n\n\t},\n\n\tnormalmap: {\n\n\t\tnormalMap: { value: null },\n\t\tnormalScale: { value: new Vector2( 1, 1 ) }\n\n\t},\n\n\tdisplacementmap: {\n\n\t\tdisplacementMap: { value: null },\n\t\tdisplacementScale: { value: 1 },\n\t\tdisplacementBias: { value: 0 }\n\n\t},\n\n\troughnessmap: {\n\n\t\troughnessMap: { value: null }\n\n\t},\n\n\tmetalnessmap: {\n\n\t\tmetalnessMap: { value: null }\n\n\t},\n\n\tfog: {\n\n\t\tfogDensity: { value: 0.00025 },\n\t\tfogNear: { value: 1 },\n\t\tfogFar: { value: 2000 },\n\t\tfogColor: { value: new Color( 0xffffff ) }\n\n\t},\n\n\tlights: {\n\n\t\tambientLightColor: { value: [] },\n\n\t\tdirectionalLights: { value: [], properties: {\n\t\t\tdirection: {},\n\t\t\tcolor: {},\n\n\t\t\tshadow: {},\n\t\t\tshadowBias: {},\n\t\t\tshadowRadius: {},\n\t\t\tshadowMapSize: {}\n\t\t} },\n\n\t\tdirectionalShadowMap: { value: [] },\n\t\tdirectionalShadowMatrix: { value: [] },\n\n\t\tspotLights: { value: [], properties: {\n\t\t\tcolor: {},\n\t\t\tposition: {},\n\t\t\tdirection: {},\n\t\t\tdistance: {},\n\t\t\tconeCos: {},\n\t\t\tpenumbraCos: {},\n\t\t\tdecay: {},\n\n\t\t\tshadow: {},\n\t\t\tshadowBias: {},\n\t\t\tshadowRadius: {},\n\t\t\tshadowMapSize: {}\n\t\t} },\n\n\t\tspotShadowMap: { value: [] },\n\t\tspotShadowMatrix: { value: [] },\n\n\t\tpointLights: { value: [], properties: {\n\t\t\tcolor: {},\n\t\t\tposition: {},\n\t\t\tdecay: {},\n\t\t\tdistance: {},\n\n\t\t\tshadow: {},\n\t\t\tshadowBias: {},\n\t\t\tshadowRadius: {},\n\t\t\tshadowMapSize: {}\n\t\t} },\n\n\t\tpointShadowMap: { value: [] },\n\t\tpointShadowMatrix: { value: [] },\n\n\t\themisphereLights: { value: [], properties: {\n\t\t\tdirection: {},\n\t\t\tskyColor: {},\n\t\t\tgroundColor: {}\n\t\t} }\n\n\t},\n\n\tpoints: {\n\n\t\tdiffuse: { value: new Color( 0xeeeeee ) },\n\t\topacity: { value: 1.0 },\n\t\tsize: { value: 1.0 },\n\t\tscale: { value: 1.0 },\n\t\tmap: { value: null },\n\t\toffsetRepeat: { value: new Vector4( 0, 0, 1, 1 ) }\n\n\t}\n\n};\n\n\nexport { UniformsLib };\n","import { ShaderChunk } from './ShaderChunk';\nimport { UniformsUtils } from './UniformsUtils';\nimport { Vector3 } from '../../math/Vector3';\nimport { UniformsLib } from './UniformsLib';\nimport { Color } from '../../math/Color';\n\n/**\n * @author alteredq / http://alteredqualia.com/\n * @author mrdoob / http://mrdoob.com/\n * @author mikael emtinger / http://gomo.se/\n */\n\nvar ShaderLib = {\n\n\tbasic: {\n\n\t\tuniforms: UniformsUtils.merge( [\n\n\t\t\tUniformsLib.common,\n\t\t\tUniformsLib.aomap,\n\t\t\tUniformsLib.fog\n\n\t\t] ),\n\n\t\tvertexShader: ShaderChunk.meshbasic_vert,\n\t\tfragmentShader: ShaderChunk.meshbasic_frag\n\n\t},\n\n\tlambert: {\n\n\t\tuniforms: UniformsUtils.merge( [\n\n\t\t\tUniformsLib.common,\n\t\t\tUniformsLib.aomap,\n\t\t\tUniformsLib.lightmap,\n\t\t\tUniformsLib.emissivemap,\n\t\t\tUniformsLib.fog,\n\t\t\tUniformsLib.lights,\n\n\t\t\t{\n\t\t\t\temissive : { value: new Color( 0x000000 ) }\n\t\t\t}\n\n\t\t] ),\n\n\t\tvertexShader: ShaderChunk.meshlambert_vert,\n\t\tfragmentShader: ShaderChunk.meshlambert_frag\n\n\t},\n\n\tphong: {\n\n\t\tuniforms: UniformsUtils.merge( [\n\n\t\t\tUniformsLib.common,\n\t\t\tUniformsLib.aomap,\n\t\t\tUniformsLib.lightmap,\n\t\t\tUniformsLib.emissivemap,\n\t\t\tUniformsLib.bumpmap,\n\t\t\tUniformsLib.normalmap,\n\t\t\tUniformsLib.displacementmap,\n\t\t\tUniformsLib.fog,\n\t\t\tUniformsLib.lights,\n\n\t\t\t{\n\t\t\t\temissive : { value: new Color( 0x000000 ) },\n\t\t\t\tspecular : { value: new Color( 0x111111 ) },\n\t\t\t\tshininess: { value: 30 }\n\t\t\t}\n\n\t\t] ),\n\n\t\tvertexShader: ShaderChunk.meshphong_vert,\n\t\tfragmentShader: ShaderChunk.meshphong_frag\n\n\t},\n\n\tstandard: {\n\n\t\tuniforms: UniformsUtils.merge( [\n\n\t\t\tUniformsLib.common,\n\t\t\tUniformsLib.aomap,\n\t\t\tUniformsLib.lightmap,\n\t\t\tUniformsLib.emissivemap,\n\t\t\tUniformsLib.bumpmap,\n\t\t\tUniformsLib.normalmap,\n\t\t\tUniformsLib.displacementmap,\n\t\t\tUniformsLib.roughnessmap,\n\t\t\tUniformsLib.metalnessmap,\n\t\t\tUniformsLib.fog,\n\t\t\tUniformsLib.lights,\n\n\t\t\t{\n\t\t\t\temissive : { value: new Color( 0x000000 ) },\n\t\t\t\troughness: { value: 0.5 },\n\t\t\t\tmetalness: { value: 0 },\n\t\t\t\tenvMapIntensity : { value: 1 }, // temporary\n\t\t\t}\n\n\t\t] ),\n\n\t\tvertexShader: ShaderChunk.meshphysical_vert,\n\t\tfragmentShader: ShaderChunk.meshphysical_frag\n\n\t},\n\n\tpoints: {\n\n\t\tuniforms: UniformsUtils.merge( [\n\n\t\t\tUniformsLib.points,\n\t\t\tUniformsLib.fog\n\n\t\t] ),\n\n\t\tvertexShader: ShaderChunk.points_vert,\n\t\tfragmentShader: ShaderChunk.points_frag\n\n\t},\n\n\tdashed: {\n\n\t\tuniforms: UniformsUtils.merge( [\n\n\t\t\tUniformsLib.common,\n\t\t\tUniformsLib.fog,\n\n\t\t\t{\n\t\t\t\tscale : { value: 1 },\n\t\t\t\tdashSize : { value: 1 },\n\t\t\t\ttotalSize: { value: 2 }\n\t\t\t}\n\n\t\t] ),\n\n\t\tvertexShader: ShaderChunk.linedashed_vert,\n\t\tfragmentShader: ShaderChunk.linedashed_frag\n\n\t},\n\n\tdepth: {\n\n\t\tuniforms: UniformsUtils.merge( [\n\n\t\t\tUniformsLib.common,\n\t\t\tUniformsLib.displacementmap\n\n\t\t] ),\n\n\t\tvertexShader: ShaderChunk.depth_vert,\n\t\tfragmentShader: ShaderChunk.depth_frag\n\n\t},\n\n\tnormal: {\n\n\t\tuniforms: {\n\n\t\t\topacity : { value: 1.0 }\n\n\t\t},\n\n\t\tvertexShader: ShaderChunk.normal_vert,\n\t\tfragmentShader: ShaderChunk.normal_frag\n\n\t},\n\n\t/* -------------------------------------------------------------------------\n\t//\tCube map shader\n\t ------------------------------------------------------------------------- */\n\n\tcube: {\n\n\t\tuniforms: {\n\t\t\ttCube: { value: null },\n\t\t\ttFlip: { value: - 1 },\n\t\t\topacity: { value: 1.0 }\n\t\t},\n\n\t\tvertexShader: ShaderChunk.cube_vert,\n\t\tfragmentShader: ShaderChunk.cube_frag\n\n\t},\n\n\t/* -------------------------------------------------------------------------\n\t//\tCube map shader\n\t ------------------------------------------------------------------------- */\n\n\tequirect: {\n\n\t\tuniforms: {\n\t\t\ttEquirect: { value: null },\n\t\t\ttFlip: { value: - 1 }\n\t\t},\n\n\t\tvertexShader: ShaderChunk.equirect_vert,\n\t\tfragmentShader: ShaderChunk.equirect_frag\n\n\t},\n\n\tdistanceRGBA: {\n\n\t\tuniforms: {\n\n\t\t\tlightPos: { value: new Vector3() }\n\n\t\t},\n\n\t\tvertexShader: ShaderChunk.distanceRGBA_vert,\n\t\tfragmentShader: ShaderChunk.distanceRGBA_frag\n\n\t}\n\n};\n\nShaderLib.physical = {\n\n\tuniforms: UniformsUtils.merge( [\n\n\t\tShaderLib.standard.uniforms,\n\n\t\t{\n\t\t\tclearCoat: { value: 0 },\n\t\t\tclearCoatRoughness: { value: 0 }\n\t\t}\n\n\t] ),\n\n\tvertexShader: ShaderChunk.meshphysical_vert,\n\tfragmentShader: ShaderChunk.meshphysical_frag\n\n};\n\n\nexport { ShaderLib };\n","import { Vector2 } from './Vector2';\n\n/**\n * @author bhouston / http://clara.io\n */\n\nfunction Box2( min, max ) {\n\n\tthis.min = ( min !== undefined ) ? min : new Vector2( + Infinity, + Infinity );\n\tthis.max = ( max !== undefined ) ? max : new Vector2( - Infinity, - Infinity );\n\n}\n\nBox2.prototype = {\n\n\tconstructor: Box2,\n\n\tset: function ( min, max ) {\n\n\t\tthis.min.copy( min );\n\t\tthis.max.copy( max );\n\n\t\treturn this;\n\n\t},\n\n\tsetFromPoints: function ( points ) {\n\n\t\tthis.makeEmpty();\n\n\t\tfor ( var i = 0, il = points.length; i < il; i ++ ) {\n\n\t\t\tthis.expandByPoint( points[ i ] );\n\n\t\t}\n\n\t\treturn this;\n\n\t},\n\n\tsetFromCenterAndSize: function () {\n\n\t\tvar v1 = new Vector2();\n\n\t\treturn function setFromCenterAndSize( center, size ) {\n\n\t\t\tvar halfSize = v1.copy( size ).multiplyScalar( 0.5 );\n\t\t\tthis.min.copy( center ).sub( halfSize );\n\t\t\tthis.max.copy( center ).add( halfSize );\n\n\t\t\treturn this;\n\n\t\t};\n\n\t}(),\n\n\tclone: function () {\n\n\t\treturn new this.constructor().copy( this );\n\n\t},\n\n\tcopy: function ( box ) {\n\n\t\tthis.min.copy( box.min );\n\t\tthis.max.copy( box.max );\n\n\t\treturn this;\n\n\t},\n\n\tmakeEmpty: function () {\n\n\t\tthis.min.x = this.min.y = + Infinity;\n\t\tthis.max.x = this.max.y = - Infinity;\n\n\t\treturn this;\n\n\t},\n\n\tisEmpty: function () {\n\n\t\t// this is a more robust check for empty than ( volume <= 0 ) because volume can get positive with two negative axes\n\n\t\treturn ( this.max.x < this.min.x ) || ( this.max.y < this.min.y );\n\n\t},\n\n\tgetCenter: function ( optionalTarget ) {\n\n\t\tvar result = optionalTarget || new Vector2();\n\t\treturn this.isEmpty() ? result.set( 0, 0 ) : result.addVectors( this.min, this.max ).multiplyScalar( 0.5 );\n\n\t},\n\n\tgetSize: function ( optionalTarget ) {\n\n\t\tvar result = optionalTarget || new Vector2();\n\t\treturn this.isEmpty() ? result.set( 0, 0 ) : result.subVectors( this.max, this.min );\n\n\t},\n\n\texpandByPoint: function ( point ) {\n\n\t\tthis.min.min( point );\n\t\tthis.max.max( point );\n\n\t\treturn this;\n\n\t},\n\n\texpandByVector: function ( vector ) {\n\n\t\tthis.min.sub( vector );\n\t\tthis.max.add( vector );\n\n\t\treturn this;\n\n\t},\n\n\texpandByScalar: function ( scalar ) {\n\n\t\tthis.min.addScalar( - scalar );\n\t\tthis.max.addScalar( scalar );\n\n\t\treturn this;\n\n\t},\n\n\tcontainsPoint: function ( point ) {\n\n\t\tif ( point.x < this.min.x || point.x > this.max.x ||\n\t\t point.y < this.min.y || point.y > this.max.y ) {\n\n\t\t\treturn false;\n\n\t\t}\n\n\t\treturn true;\n\n\t},\n\n\tcontainsBox: function ( box ) {\n\n\t\tif ( ( this.min.x <= box.min.x ) && ( box.max.x <= this.max.x ) &&\n\t\t ( this.min.y <= box.min.y ) && ( box.max.y <= this.max.y ) ) {\n\n\t\t\treturn true;\n\n\t\t}\n\n\t\treturn false;\n\n\t},\n\n\tgetParameter: function ( point, optionalTarget ) {\n\n\t\t// This can potentially have a divide by zero if the box\n\t\t// has a size dimension of 0.\n\n\t\tvar result = optionalTarget || new Vector2();\n\n\t\treturn result.set(\n\t\t\t( point.x - this.min.x ) / ( this.max.x - this.min.x ),\n\t\t\t( point.y - this.min.y ) / ( this.max.y - this.min.y )\n\t\t);\n\n\t},\n\n\tintersectsBox: function ( box ) {\n\n\t\t// using 6 splitting planes to rule out intersections.\n\n\t\tif ( box.max.x < this.min.x || box.min.x > this.max.x ||\n\t\t box.max.y < this.min.y || box.min.y > this.max.y ) {\n\n\t\t\treturn false;\n\n\t\t}\n\n\t\treturn true;\n\n\t},\n\n\tclampPoint: function ( point, optionalTarget ) {\n\n\t\tvar result = optionalTarget || new Vector2();\n\t\treturn result.copy( point ).clamp( this.min, this.max );\n\n\t},\n\n\tdistanceToPoint: function () {\n\n\t\tvar v1 = new Vector2();\n\n\t\treturn function distanceToPoint( point ) {\n\n\t\t\tvar clampedPoint = v1.copy( point ).clamp( this.min, this.max );\n\t\t\treturn clampedPoint.sub( point ).length();\n\n\t\t};\n\n\t}(),\n\n\tintersect: function ( box ) {\n\n\t\tthis.min.max( box.min );\n\t\tthis.max.min( box.max );\n\n\t\treturn this;\n\n\t},\n\n\tunion: function ( box ) {\n\n\t\tthis.min.min( box.min );\n\t\tthis.max.max( box.max );\n\n\t\treturn this;\n\n\t},\n\n\ttranslate: function ( offset ) {\n\n\t\tthis.min.add( offset );\n\t\tthis.max.add( offset );\n\n\t\treturn this;\n\n\t},\n\n\tequals: function ( box ) {\n\n\t\treturn box.min.equals( this.min ) && box.max.equals( this.max );\n\n\t}\n\n};\n\n\nexport { Box2 };\n","import { Box2 } from '../../../math/Box2';\nimport { Vector2 } from '../../../math/Vector2';\nimport { Vector3 } from '../../../math/Vector3';\n\n/**\n * @author mikael emtinger / http://gomo.se/\n * @author alteredq / http://alteredqualia.com/\n */\n\nfunction LensFlarePlugin( renderer, flares ) {\n\n\tvar gl = renderer.context;\n\tvar state = renderer.state;\n\n\tvar vertexBuffer, elementBuffer;\n\tvar shader, program, attributes, uniforms;\n\n\tvar tempTexture, occlusionTexture;\n\n\tfunction init() {\n\n\t\tvar vertices = new Float32Array( [\n\t\t\t- 1, - 1, 0, 0,\n\t\t\t 1, - 1, 1, 0,\n\t\t\t 1, 1, 1, 1,\n\t\t\t- 1, 1, 0, 1\n\t\t] );\n\n\t\tvar faces = new Uint16Array( [\n\t\t\t0, 1, 2,\n\t\t\t0, 2, 3\n\t\t] );\n\n\t\t// buffers\n\n\t\tvertexBuffer = gl.createBuffer();\n\t\telementBuffer = gl.createBuffer();\n\n\t\tgl.bindBuffer( gl.ARRAY_BUFFER, vertexBuffer );\n\t\tgl.bufferData( gl.ARRAY_BUFFER, vertices, gl.STATIC_DRAW );\n\n\t\tgl.bindBuffer( gl.ELEMENT_ARRAY_BUFFER, elementBuffer );\n\t\tgl.bufferData( gl.ELEMENT_ARRAY_BUFFER, faces, gl.STATIC_DRAW );\n\n\t\t// textures\n\n\t\ttempTexture = gl.createTexture();\n\t\tocclusionTexture = gl.createTexture();\n\n\t\tstate.bindTexture( gl.TEXTURE_2D, tempTexture );\n\t\tgl.texImage2D( gl.TEXTURE_2D, 0, gl.RGB, 16, 16, 0, gl.RGB, gl.UNSIGNED_BYTE, null );\n\t\tgl.texParameteri( gl.TEXTURE_2D, gl.TEXTURE_WRAP_S, gl.CLAMP_TO_EDGE );\n\t\tgl.texParameteri( gl.TEXTURE_2D, gl.TEXTURE_WRAP_T, gl.CLAMP_TO_EDGE );\n\t\tgl.texParameteri( gl.TEXTURE_2D, gl.TEXTURE_MAG_FILTER, gl.NEAREST );\n\t\tgl.texParameteri( gl.TEXTURE_2D, gl.TEXTURE_MIN_FILTER, gl.NEAREST );\n\n\t\tstate.bindTexture( gl.TEXTURE_2D, occlusionTexture );\n\t\tgl.texImage2D( gl.TEXTURE_2D, 0, gl.RGBA, 16, 16, 0, gl.RGBA, gl.UNSIGNED_BYTE, null );\n\t\tgl.texParameteri( gl.TEXTURE_2D, gl.TEXTURE_WRAP_S, gl.CLAMP_TO_EDGE );\n\t\tgl.texParameteri( gl.TEXTURE_2D, gl.TEXTURE_WRAP_T, gl.CLAMP_TO_EDGE );\n\t\tgl.texParameteri( gl.TEXTURE_2D, gl.TEXTURE_MAG_FILTER, gl.NEAREST );\n\t\tgl.texParameteri( gl.TEXTURE_2D, gl.TEXTURE_MIN_FILTER, gl.NEAREST );\n\n\t\tshader = {\n\n\t\t\tvertexShader: [\n\n\t\t\t\t\"uniform lowp int renderType;\",\n\n\t\t\t\t\"uniform vec3 screenPosition;\",\n\t\t\t\t\"uniform vec2 scale;\",\n\t\t\t\t\"uniform float rotation;\",\n\n\t\t\t\t\"uniform sampler2D occlusionMap;\",\n\n\t\t\t\t\"attribute vec2 position;\",\n\t\t\t\t\"attribute vec2 uv;\",\n\n\t\t\t\t\"varying vec2 vUV;\",\n\t\t\t\t\"varying float vVisibility;\",\n\n\t\t\t\t\"void main() {\",\n\n\t\t\t\t\t\"vUV = uv;\",\n\n\t\t\t\t\t\"vec2 pos = position;\",\n\n\t\t\t\t\t\"if ( renderType == 2 ) {\",\n\n\t\t\t\t\t\t\"vec4 visibility = texture2D( occlusionMap, vec2( 0.1, 0.1 ) );\",\n\t\t\t\t\t\t\"visibility += texture2D( occlusionMap, vec2( 0.5, 0.1 ) );\",\n\t\t\t\t\t\t\"visibility += texture2D( occlusionMap, vec2( 0.9, 0.1 ) );\",\n\t\t\t\t\t\t\"visibility += texture2D( occlusionMap, vec2( 0.9, 0.5 ) );\",\n\t\t\t\t\t\t\"visibility += texture2D( occlusionMap, vec2( 0.9, 0.9 ) );\",\n\t\t\t\t\t\t\"visibility += texture2D( occlusionMap, vec2( 0.5, 0.9 ) );\",\n\t\t\t\t\t\t\"visibility += texture2D( occlusionMap, vec2( 0.1, 0.9 ) );\",\n\t\t\t\t\t\t\"visibility += texture2D( occlusionMap, vec2( 0.1, 0.5 ) );\",\n\t\t\t\t\t\t\"visibility += texture2D( occlusionMap, vec2( 0.5, 0.5 ) );\",\n\n\t\t\t\t\t\t\"vVisibility = visibility.r / 9.0;\",\n\t\t\t\t\t\t\"vVisibility *= 1.0 - visibility.g / 9.0;\",\n\t\t\t\t\t\t\"vVisibility *= visibility.b / 9.0;\",\n\t\t\t\t\t\t\"vVisibility *= 1.0 - visibility.a / 9.0;\",\n\n\t\t\t\t\t\t\"pos.x = cos( rotation ) * position.x - sin( rotation ) * position.y;\",\n\t\t\t\t\t\t\"pos.y = sin( rotation ) * position.x + cos( rotation ) * position.y;\",\n\n\t\t\t\t\t\"}\",\n\n\t\t\t\t\t\"gl_Position = vec4( ( pos * scale + screenPosition.xy ).xy, screenPosition.z, 1.0 );\",\n\n\t\t\t\t\"}\"\n\n\t\t\t].join( \"\\n\" ),\n\n\t\t\tfragmentShader: [\n\n\t\t\t\t\"uniform lowp int renderType;\",\n\n\t\t\t\t\"uniform sampler2D map;\",\n\t\t\t\t\"uniform float opacity;\",\n\t\t\t\t\"uniform vec3 color;\",\n\n\t\t\t\t\"varying vec2 vUV;\",\n\t\t\t\t\"varying float vVisibility;\",\n\n\t\t\t\t\"void main() {\",\n\n\t\t\t\t\t// pink square\n\n\t\t\t\t\t\"if ( renderType == 0 ) {\",\n\n\t\t\t\t\t\t\"gl_FragColor = vec4( 1.0, 0.0, 1.0, 0.0 );\",\n\n\t\t\t\t\t// restore\n\n\t\t\t\t\t\"} else if ( renderType == 1 ) {\",\n\n\t\t\t\t\t\t\"gl_FragColor = texture2D( map, vUV );\",\n\n\t\t\t\t\t// flare\n\n\t\t\t\t\t\"} else {\",\n\n\t\t\t\t\t\t\"vec4 texture = texture2D( map, vUV );\",\n\t\t\t\t\t\t\"texture.a *= opacity * vVisibility;\",\n\t\t\t\t\t\t\"gl_FragColor = texture;\",\n\t\t\t\t\t\t\"gl_FragColor.rgb *= color;\",\n\n\t\t\t\t\t\"}\",\n\n\t\t\t\t\"}\"\n\n\t\t\t].join( \"\\n\" )\n\n\t\t};\n\n\t\tprogram = createProgram( shader );\n\n\t\tattributes = {\n\t\t\tvertex: gl.getAttribLocation ( program, \"position\" ),\n\t\t\tuv: gl.getAttribLocation ( program, \"uv\" )\n\t\t};\n\n\t\tuniforms = {\n\t\t\trenderType: gl.getUniformLocation( program, \"renderType\" ),\n\t\t\tmap: gl.getUniformLocation( program, \"map\" ),\n\t\t\tocclusionMap: gl.getUniformLocation( program, \"occlusionMap\" ),\n\t\t\topacity: gl.getUniformLocation( program, \"opacity\" ),\n\t\t\tcolor: gl.getUniformLocation( program, \"color\" ),\n\t\t\tscale: gl.getUniformLocation( program, \"scale\" ),\n\t\t\trotation: gl.getUniformLocation( program, \"rotation\" ),\n\t\t\tscreenPosition: gl.getUniformLocation( program, \"screenPosition\" )\n\t\t};\n\n\t}\n\n\t/*\n\t * Render lens flares\n\t * Method: renders 16x16 0xff00ff-colored points scattered over the light source area,\n\t * reads these back and calculates occlusion.\n\t */\n\n\tthis.render = function ( scene, camera, viewport ) {\n\n\t\tif ( flares.length === 0 ) return;\n\n\t\tvar tempPosition = new Vector3();\n\n\t\tvar invAspect = viewport.w / viewport.z,\n\t\t\thalfViewportWidth = viewport.z * 0.5,\n\t\t\thalfViewportHeight = viewport.w * 0.5;\n\n\t\tvar size = 16 / viewport.w,\n\t\t\tscale = new Vector2( size * invAspect, size );\n\n\t\tvar screenPosition = new Vector3( 1, 1, 0 ),\n\t\t\tscreenPositionPixels = new Vector2( 1, 1 );\n\n\t\tvar validArea = new Box2();\n\n\t\tvalidArea.min.set( viewport.x, viewport.y );\n\t\tvalidArea.max.set( viewport.x + ( viewport.z - 16 ), viewport.y + ( viewport.w - 16 ) );\n\n\t\tif ( program === undefined ) {\n\n\t\t\tinit();\n\n\t\t}\n\n\t\tgl.useProgram( program );\n\n\t\tstate.initAttributes();\n\t\tstate.enableAttribute( attributes.vertex );\n\t\tstate.enableAttribute( attributes.uv );\n\t\tstate.disableUnusedAttributes();\n\n\t\t// loop through all lens flares to update their occlusion and positions\n\t\t// setup gl and common used attribs/uniforms\n\n\t\tgl.uniform1i( uniforms.occlusionMap, 0 );\n\t\tgl.uniform1i( uniforms.map, 1 );\n\n\t\tgl.bindBuffer( gl.ARRAY_BUFFER, vertexBuffer );\n\t\tgl.vertexAttribPointer( attributes.vertex, 2, gl.FLOAT, false, 2 * 8, 0 );\n\t\tgl.vertexAttribPointer( attributes.uv, 2, gl.FLOAT, false, 2 * 8, 8 );\n\n\t\tgl.bindBuffer( gl.ELEMENT_ARRAY_BUFFER, elementBuffer );\n\n\t\tstate.disable( gl.CULL_FACE );\n\t\tstate.setDepthWrite( false );\n\n\t\tfor ( var i = 0, l = flares.length; i < l; i ++ ) {\n\n\t\t\tsize = 16 / viewport.w;\n\t\t\tscale.set( size * invAspect, size );\n\n\t\t\t// calc object screen position\n\n\t\t\tvar flare = flares[ i ];\n\n\t\t\ttempPosition.set( flare.matrixWorld.elements[ 12 ], flare.matrixWorld.elements[ 13 ], flare.matrixWorld.elements[ 14 ] );\n\n\t\t\ttempPosition.applyMatrix4( camera.matrixWorldInverse );\n\t\t\ttempPosition.applyProjection( camera.projectionMatrix );\n\n\t\t\t// setup arrays for gl programs\n\n\t\t\tscreenPosition.copy( tempPosition );\n\n\t\t\t// horizontal and vertical coordinate of the lower left corner of the pixels to copy\n\n\t\t\tscreenPositionPixels.x = viewport.x + ( screenPosition.x * halfViewportWidth ) + halfViewportWidth - 8;\n\t\t\tscreenPositionPixels.y = viewport.y + ( screenPosition.y * halfViewportHeight ) + halfViewportHeight - 8;\n\n\t\t\t// screen cull\n\n\t\t\tif ( validArea.containsPoint( screenPositionPixels ) === true ) {\n\n\t\t\t\t// save current RGB to temp texture\n\n\t\t\t\tstate.activeTexture( gl.TEXTURE0 );\n\t\t\t\tstate.bindTexture( gl.TEXTURE_2D, null );\n\t\t\t\tstate.activeTexture( gl.TEXTURE1 );\n\t\t\t\tstate.bindTexture( gl.TEXTURE_2D, tempTexture );\n\t\t\t\tgl.copyTexImage2D( gl.TEXTURE_2D, 0, gl.RGB, screenPositionPixels.x, screenPositionPixels.y, 16, 16, 0 );\n\n\n\t\t\t\t// render pink quad\n\n\t\t\t\tgl.uniform1i( uniforms.renderType, 0 );\n\t\t\t\tgl.uniform2f( uniforms.scale, scale.x, scale.y );\n\t\t\t\tgl.uniform3f( uniforms.screenPosition, screenPosition.x, screenPosition.y, screenPosition.z );\n\n\t\t\t\tstate.disable( gl.BLEND );\n\t\t\t\tstate.enable( gl.DEPTH_TEST );\n\n\t\t\t\tgl.drawElements( gl.TRIANGLES, 6, gl.UNSIGNED_SHORT, 0 );\n\n\n\t\t\t\t// copy result to occlusionMap\n\n\t\t\t\tstate.activeTexture( gl.TEXTURE0 );\n\t\t\t\tstate.bindTexture( gl.TEXTURE_2D, occlusionTexture );\n\t\t\t\tgl.copyTexImage2D( gl.TEXTURE_2D, 0, gl.RGBA, screenPositionPixels.x, screenPositionPixels.y, 16, 16, 0 );\n\n\n\t\t\t\t// restore graphics\n\n\t\t\t\tgl.uniform1i( uniforms.renderType, 1 );\n\t\t\t\tstate.disable( gl.DEPTH_TEST );\n\n\t\t\t\tstate.activeTexture( gl.TEXTURE1 );\n\t\t\t\tstate.bindTexture( gl.TEXTURE_2D, tempTexture );\n\t\t\t\tgl.drawElements( gl.TRIANGLES, 6, gl.UNSIGNED_SHORT, 0 );\n\n\n\t\t\t\t// update object positions\n\n\t\t\t\tflare.positionScreen.copy( screenPosition );\n\n\t\t\t\tif ( flare.customUpdateCallback ) {\n\n\t\t\t\t\tflare.customUpdateCallback( flare );\n\n\t\t\t\t} else {\n\n\t\t\t\t\tflare.updateLensFlares();\n\n\t\t\t\t}\n\n\t\t\t\t// render flares\n\n\t\t\t\tgl.uniform1i( uniforms.renderType, 2 );\n\t\t\t\tstate.enable( gl.BLEND );\n\n\t\t\t\tfor ( var j = 0, jl = flare.lensFlares.length; j < jl; j ++ ) {\n\n\t\t\t\t\tvar sprite = flare.lensFlares[ j ];\n\n\t\t\t\t\tif ( sprite.opacity > 0.001 && sprite.scale > 0.001 ) {\n\n\t\t\t\t\t\tscreenPosition.x = sprite.x;\n\t\t\t\t\t\tscreenPosition.y = sprite.y;\n\t\t\t\t\t\tscreenPosition.z = sprite.z;\n\n\t\t\t\t\t\tsize = sprite.size * sprite.scale / viewport.w;\n\n\t\t\t\t\t\tscale.x = size * invAspect;\n\t\t\t\t\t\tscale.y = size;\n\n\t\t\t\t\t\tgl.uniform3f( uniforms.screenPosition, screenPosition.x, screenPosition.y, screenPosition.z );\n\t\t\t\t\t\tgl.uniform2f( uniforms.scale, scale.x, scale.y );\n\t\t\t\t\t\tgl.uniform1f( uniforms.rotation, sprite.rotation );\n\n\t\t\t\t\t\tgl.uniform1f( uniforms.opacity, sprite.opacity );\n\t\t\t\t\t\tgl.uniform3f( uniforms.color, sprite.color.r, sprite.color.g, sprite.color.b );\n\n\t\t\t\t\t\tstate.setBlending( sprite.blending, sprite.blendEquation, sprite.blendSrc, sprite.blendDst );\n\t\t\t\t\t\trenderer.setTexture2D( sprite.texture, 1 );\n\n\t\t\t\t\t\tgl.drawElements( gl.TRIANGLES, 6, gl.UNSIGNED_SHORT, 0 );\n\n\t\t\t\t\t}\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t}\n\n\t\t// restore gl\n\n\t\tstate.enable( gl.CULL_FACE );\n\t\tstate.enable( gl.DEPTH_TEST );\n\t\tstate.setDepthWrite( true );\n\n\t\trenderer.resetGLState();\n\n\t};\n\n\tfunction createProgram( shader ) {\n\n\t\tvar program = gl.createProgram();\n\n\t\tvar fragmentShader = gl.createShader( gl.FRAGMENT_SHADER );\n\t\tvar vertexShader = gl.createShader( gl.VERTEX_SHADER );\n\n\t\tvar prefix = \"precision \" + renderer.getPrecision() + \" float;\\n\";\n\n\t\tgl.shaderSource( fragmentShader, prefix + shader.fragmentShader );\n\t\tgl.shaderSource( vertexShader, prefix + shader.vertexShader );\n\n\t\tgl.compileShader( fragmentShader );\n\t\tgl.compileShader( vertexShader );\n\n\t\tgl.attachShader( program, fragmentShader );\n\t\tgl.attachShader( program, vertexShader );\n\n\t\tgl.linkProgram( program );\n\n\t\treturn program;\n\n\t}\n\n}\n\n\nexport { LensFlarePlugin };\n","import { Texture } from '../../../textures/Texture';\nimport { Vector3 } from '../../../math/Vector3';\nimport { Quaternion } from '../../../math/Quaternion';\n\n/**\n * @author mikael emtinger / http://gomo.se/\n * @author alteredq / http://alteredqualia.com/\n */\n\nfunction SpritePlugin( renderer, sprites ) {\n\n\tvar gl = renderer.context;\n\tvar state = renderer.state;\n\n\tvar vertexBuffer, elementBuffer;\n\tvar program, attributes, uniforms;\n\n\tvar texture;\n\n\t// decompose matrixWorld\n\n\tvar spritePosition = new Vector3();\n\tvar spriteRotation = new Quaternion();\n\tvar spriteScale = new Vector3();\n\n\tfunction init() {\n\n\t\tvar vertices = new Float32Array( [\n\t\t\t- 0.5, - 0.5, 0, 0,\n\t\t\t 0.5, - 0.5, 1, 0,\n\t\t\t 0.5, 0.5, 1, 1,\n\t\t\t- 0.5, 0.5, 0, 1\n\t\t] );\n\n\t\tvar faces = new Uint16Array( [\n\t\t\t0, 1, 2,\n\t\t\t0, 2, 3\n\t\t] );\n\n\t\tvertexBuffer = gl.createBuffer();\n\t\telementBuffer = gl.createBuffer();\n\n\t\tgl.bindBuffer( gl.ARRAY_BUFFER, vertexBuffer );\n\t\tgl.bufferData( gl.ARRAY_BUFFER, vertices, gl.STATIC_DRAW );\n\n\t\tgl.bindBuffer( gl.ELEMENT_ARRAY_BUFFER, elementBuffer );\n\t\tgl.bufferData( gl.ELEMENT_ARRAY_BUFFER, faces, gl.STATIC_DRAW );\n\n\t\tprogram = createProgram();\n\n\t\tattributes = {\n\t\t\tposition:\t\t\tgl.getAttribLocation ( program, 'position' ),\n\t\t\tuv:\t\t\t\t\tgl.getAttribLocation ( program, 'uv' )\n\t\t};\n\n\t\tuniforms = {\n\t\t\tuvOffset:\t\t\tgl.getUniformLocation( program, 'uvOffset' ),\n\t\t\tuvScale:\t\t\tgl.getUniformLocation( program, 'uvScale' ),\n\n\t\t\trotation:\t\t\tgl.getUniformLocation( program, 'rotation' ),\n\t\t\tscale:\t\t\t\tgl.getUniformLocation( program, 'scale' ),\n\n\t\t\tcolor:\t\t\t\tgl.getUniformLocation( program, 'color' ),\n\t\t\tmap:\t\t\t\tgl.getUniformLocation( program, 'map' ),\n\t\t\topacity:\t\t\tgl.getUniformLocation( program, 'opacity' ),\n\n\t\t\tmodelViewMatrix: \tgl.getUniformLocation( program, 'modelViewMatrix' ),\n\t\t\tprojectionMatrix:\tgl.getUniformLocation( program, 'projectionMatrix' ),\n\n\t\t\tfogType:\t\t\tgl.getUniformLocation( program, 'fogType' ),\n\t\t\tfogDensity:\t\t\tgl.getUniformLocation( program, 'fogDensity' ),\n\t\t\tfogNear:\t\t\tgl.getUniformLocation( program, 'fogNear' ),\n\t\t\tfogFar:\t\t\t\tgl.getUniformLocation( program, 'fogFar' ),\n\t\t\tfogColor:\t\t\tgl.getUniformLocation( program, 'fogColor' ),\n\n\t\t\talphaTest:\t\t\tgl.getUniformLocation( program, 'alphaTest' )\n\t\t};\n\n\t\tvar canvas = document.createElementNS( 'http://www.w3.org/1999/xhtml', 'canvas' );\n\t\tcanvas.width = 8;\n\t\tcanvas.height = 8;\n\n\t\tvar context = canvas.getContext( '2d' );\n\t\tcontext.fillStyle = 'white';\n\t\tcontext.fillRect( 0, 0, 8, 8 );\n\n\t\ttexture = new Texture( canvas );\n\t\ttexture.needsUpdate = true;\n\n\t}\n\n\tthis.render = function ( scene, camera ) {\n\n\t\tif ( sprites.length === 0 ) return;\n\n\t\t// setup gl\n\n\t\tif ( program === undefined ) {\n\n\t\t\tinit();\n\n\t\t}\n\n\t\tgl.useProgram( program );\n\n\t\tstate.initAttributes();\n\t\tstate.enableAttribute( attributes.position );\n\t\tstate.enableAttribute( attributes.uv );\n\t\tstate.disableUnusedAttributes();\n\n\t\tstate.disable( gl.CULL_FACE );\n\t\tstate.enable( gl.BLEND );\n\n\t\tgl.bindBuffer( gl.ARRAY_BUFFER, vertexBuffer );\n\t\tgl.vertexAttribPointer( attributes.position, 2, gl.FLOAT, false, 2 * 8, 0 );\n\t\tgl.vertexAttribPointer( attributes.uv, 2, gl.FLOAT, false, 2 * 8, 8 );\n\n\t\tgl.bindBuffer( gl.ELEMENT_ARRAY_BUFFER, elementBuffer );\n\n\t\tgl.uniformMatrix4fv( uniforms.projectionMatrix, false, camera.projectionMatrix.elements );\n\n\t\tstate.activeTexture( gl.TEXTURE0 );\n\t\tgl.uniform1i( uniforms.map, 0 );\n\n\t\tvar oldFogType = 0;\n\t\tvar sceneFogType = 0;\n\t\tvar fog = scene.fog;\n\n\t\tif ( fog ) {\n\n\t\t\tgl.uniform3f( uniforms.fogColor, fog.color.r, fog.color.g, fog.color.b );\n\n\t\t\tif ( (fog && fog.isFog) ) {\n\n\t\t\t\tgl.uniform1f( uniforms.fogNear, fog.near );\n\t\t\t\tgl.uniform1f( uniforms.fogFar, fog.far );\n\n\t\t\t\tgl.uniform1i( uniforms.fogType, 1 );\n\t\t\t\toldFogType = 1;\n\t\t\t\tsceneFogType = 1;\n\n\t\t\t} else if ( (fog && fog.isFogExp2) ) {\n\n\t\t\t\tgl.uniform1f( uniforms.fogDensity, fog.density );\n\n\t\t\t\tgl.uniform1i( uniforms.fogType, 2 );\n\t\t\t\toldFogType = 2;\n\t\t\t\tsceneFogType = 2;\n\n\t\t\t}\n\n\t\t} else {\n\n\t\t\tgl.uniform1i( uniforms.fogType, 0 );\n\t\t\toldFogType = 0;\n\t\t\tsceneFogType = 0;\n\n\t\t}\n\n\n\t\t// update positions and sort\n\n\t\tfor ( var i = 0, l = sprites.length; i < l; i ++ ) {\n\n\t\t\tvar sprite = sprites[ i ];\n\n\t\t\tsprite.modelViewMatrix.multiplyMatrices( camera.matrixWorldInverse, sprite.matrixWorld );\n\t\t\tsprite.z = - sprite.modelViewMatrix.elements[ 14 ];\n\n\t\t}\n\n\t\tsprites.sort( painterSortStable );\n\n\t\t// render all sprites\n\n\t\tvar scale = [];\n\n\t\tfor ( var i = 0, l = sprites.length; i < l; i ++ ) {\n\n\t\t\tvar sprite = sprites[ i ];\n\t\t\tvar material = sprite.material;\n\n\t\t\tif ( material.visible === false ) continue;\n\n\t\t\tgl.uniform1f( uniforms.alphaTest, material.alphaTest );\n\t\t\tgl.uniformMatrix4fv( uniforms.modelViewMatrix, false, sprite.modelViewMatrix.elements );\n\n\t\t\tsprite.matrixWorld.decompose( spritePosition, spriteRotation, spriteScale );\n\n\t\t\tscale[ 0 ] = spriteScale.x;\n\t\t\tscale[ 1 ] = spriteScale.y;\n\n\t\t\tvar fogType = 0;\n\n\t\t\tif ( scene.fog && material.fog ) {\n\n\t\t\t\tfogType = sceneFogType;\n\n\t\t\t}\n\n\t\t\tif ( oldFogType !== fogType ) {\n\n\t\t\t\tgl.uniform1i( uniforms.fogType, fogType );\n\t\t\t\toldFogType = fogType;\n\n\t\t\t}\n\n\t\t\tif ( material.map !== null ) {\n\n\t\t\t\tgl.uniform2f( uniforms.uvOffset, material.map.offset.x, material.map.offset.y );\n\t\t\t\tgl.uniform2f( uniforms.uvScale, material.map.repeat.x, material.map.repeat.y );\n\n\t\t\t} else {\n\n\t\t\t\tgl.uniform2f( uniforms.uvOffset, 0, 0 );\n\t\t\t\tgl.uniform2f( uniforms.uvScale, 1, 1 );\n\n\t\t\t}\n\n\t\t\tgl.uniform1f( uniforms.opacity, material.opacity );\n\t\t\tgl.uniform3f( uniforms.color, material.color.r, material.color.g, material.color.b );\n\n\t\t\tgl.uniform1f( uniforms.rotation, material.rotation );\n\t\t\tgl.uniform2fv( uniforms.scale, scale );\n\n\t\t\tstate.setBlending( material.blending, material.blendEquation, material.blendSrc, material.blendDst );\n\t\t\tstate.setDepthTest( material.depthTest );\n\t\t\tstate.setDepthWrite( material.depthWrite );\n\n\t\t\tif ( material.map ) {\n\n\t\t\t\trenderer.setTexture2D( material.map, 0 );\n\n\t\t\t} else {\n\n\t\t\t\trenderer.setTexture2D( texture, 0 );\n\n\t\t\t}\n\n\t\t\tgl.drawElements( gl.TRIANGLES, 6, gl.UNSIGNED_SHORT, 0 );\n\n\t\t}\n\n\t\t// restore gl\n\n\t\tstate.enable( gl.CULL_FACE );\n\n\t\trenderer.resetGLState();\n\n\t};\n\n\tfunction createProgram() {\n\n\t\tvar program = gl.createProgram();\n\n\t\tvar vertexShader = gl.createShader( gl.VERTEX_SHADER );\n\t\tvar fragmentShader = gl.createShader( gl.FRAGMENT_SHADER );\n\n\t\tgl.shaderSource( vertexShader, [\n\n\t\t\t'precision ' + renderer.getPrecision() + ' float;',\n\n\t\t\t'uniform mat4 modelViewMatrix;',\n\t\t\t'uniform mat4 projectionMatrix;',\n\t\t\t'uniform float rotation;',\n\t\t\t'uniform vec2 scale;',\n\t\t\t'uniform vec2 uvOffset;',\n\t\t\t'uniform vec2 uvScale;',\n\n\t\t\t'attribute vec2 position;',\n\t\t\t'attribute vec2 uv;',\n\n\t\t\t'varying vec2 vUV;',\n\n\t\t\t'void main() {',\n\n\t\t\t\t'vUV = uvOffset + uv * uvScale;',\n\n\t\t\t\t'vec2 alignedPosition = position * scale;',\n\n\t\t\t\t'vec2 rotatedPosition;',\n\t\t\t\t'rotatedPosition.x = cos( rotation ) * alignedPosition.x - sin( rotation ) * alignedPosition.y;',\n\t\t\t\t'rotatedPosition.y = sin( rotation ) * alignedPosition.x + cos( rotation ) * alignedPosition.y;',\n\n\t\t\t\t'vec4 finalPosition;',\n\n\t\t\t\t'finalPosition = modelViewMatrix * vec4( 0.0, 0.0, 0.0, 1.0 );',\n\t\t\t\t'finalPosition.xy += rotatedPosition;',\n\t\t\t\t'finalPosition = projectionMatrix * finalPosition;',\n\n\t\t\t\t'gl_Position = finalPosition;',\n\n\t\t\t'}'\n\n\t\t].join( '\\n' ) );\n\n\t\tgl.shaderSource( fragmentShader, [\n\n\t\t\t'precision ' + renderer.getPrecision() + ' float;',\n\n\t\t\t'uniform vec3 color;',\n\t\t\t'uniform sampler2D map;',\n\t\t\t'uniform float opacity;',\n\n\t\t\t'uniform int fogType;',\n\t\t\t'uniform vec3 fogColor;',\n\t\t\t'uniform float fogDensity;',\n\t\t\t'uniform float fogNear;',\n\t\t\t'uniform float fogFar;',\n\t\t\t'uniform float alphaTest;',\n\n\t\t\t'varying vec2 vUV;',\n\n\t\t\t'void main() {',\n\n\t\t\t\t'vec4 texture = texture2D( map, vUV );',\n\n\t\t\t\t'if ( texture.a < alphaTest ) discard;',\n\n\t\t\t\t'gl_FragColor = vec4( color * texture.xyz, texture.a * opacity );',\n\n\t\t\t\t'if ( fogType > 0 ) {',\n\n\t\t\t\t\t'float depth = gl_FragCoord.z / gl_FragCoord.w;',\n\t\t\t\t\t'float fogFactor = 0.0;',\n\n\t\t\t\t\t'if ( fogType == 1 ) {',\n\n\t\t\t\t\t\t'fogFactor = smoothstep( fogNear, fogFar, depth );',\n\n\t\t\t\t\t'} else {',\n\n\t\t\t\t\t\t'const float LOG2 = 1.442695;',\n\t\t\t\t\t\t'fogFactor = exp2( - fogDensity * fogDensity * depth * depth * LOG2 );',\n\t\t\t\t\t\t'fogFactor = 1.0 - clamp( fogFactor, 0.0, 1.0 );',\n\n\t\t\t\t\t'}',\n\n\t\t\t\t\t'gl_FragColor = mix( gl_FragColor, vec4( fogColor, gl_FragColor.w ), fogFactor );',\n\n\t\t\t\t'}',\n\n\t\t\t'}'\n\n\t\t].join( '\\n' ) );\n\n\t\tgl.compileShader( vertexShader );\n\t\tgl.compileShader( fragmentShader );\n\n\t\tgl.attachShader( program, vertexShader );\n\t\tgl.attachShader( program, fragmentShader );\n\n\t\tgl.linkProgram( program );\n\n\t\treturn program;\n\n\t}\n\n\tfunction painterSortStable( a, b ) {\n\n\t\tif ( a.renderOrder !== b.renderOrder ) {\n\n\t\t\treturn a.renderOrder - b.renderOrder;\n\n\t\t} else if ( a.z !== b.z ) {\n\n\t\t\treturn b.z - a.z;\n\n\t\t} else {\n\n\t\t\treturn b.id - a.id;\n\n\t\t}\n\n\t}\n\n}\n\n\nexport { SpritePlugin };\n","import { EventDispatcher } from '../core/EventDispatcher';\nimport { NoColors, FrontSide, SmoothShading, NormalBlending, LessEqualDepth, AddEquation, OneMinusSrcAlphaFactor, SrcAlphaFactor } from '../constants';\nimport { _Math } from '../math/Math';\n\n/**\n * @author mrdoob / http://mrdoob.com/\n * @author alteredq / http://alteredqualia.com/\n */\n\nfunction Material() {\n\n\tObject.defineProperty( this, 'id', { value: MaterialIdCount() } );\n\n\tthis.uuid = _Math.generateUUID();\n\n\tthis.name = '';\n\tthis.type = 'Material';\n\n\tthis.fog = true;\n\tthis.lights = true;\n\n\tthis.blending = NormalBlending;\n\tthis.side = FrontSide;\n\tthis.shading = SmoothShading; // THREE.FlatShading, THREE.SmoothShading\n\tthis.vertexColors = NoColors; // THREE.NoColors, THREE.VertexColors, THREE.FaceColors\n\n\tthis.opacity = 1;\n\tthis.transparent = false;\n\n\tthis.blendSrc = SrcAlphaFactor;\n\tthis.blendDst = OneMinusSrcAlphaFactor;\n\tthis.blendEquation = AddEquation;\n\tthis.blendSrcAlpha = null;\n\tthis.blendDstAlpha = null;\n\tthis.blendEquationAlpha = null;\n\n\tthis.depthFunc = LessEqualDepth;\n\tthis.depthTest = true;\n\tthis.depthWrite = true;\n\n\tthis.clippingPlanes = null;\n\tthis.clipIntersection = false;\n\tthis.clipShadows = false;\n\n\tthis.colorWrite = true;\n\n\tthis.precision = null; // override the renderer's default precision for this material\n\n\tthis.polygonOffset = false;\n\tthis.polygonOffsetFactor = 0;\n\tthis.polygonOffsetUnits = 0;\n\n\tthis.alphaTest = 0;\n\tthis.premultipliedAlpha = false;\n\n\tthis.overdraw = 0; // Overdrawn pixels (typically between 0 and 1) for fixing antialiasing gaps in CanvasRenderer\n\n\tthis.visible = true;\n\n\tthis._needsUpdate = true;\n\n}\n\nMaterial.prototype = {\n\n\tconstructor: Material,\n\n\tisMaterial: true,\n\n\tget needsUpdate() {\n\n\t\treturn this._needsUpdate;\n\n\t},\n\n\tset needsUpdate( value ) {\n\n\t\tif ( value === true ) this.update();\n\t\tthis._needsUpdate = value;\n\n\t},\n\n\tsetValues: function ( values ) {\n\n\t\tif ( values === undefined ) return;\n\n\t\tfor ( var key in values ) {\n\n\t\t\tvar newValue = values[ key ];\n\n\t\t\tif ( newValue === undefined ) {\n\n\t\t\t\tconsole.warn( \"THREE.Material: '\" + key + \"' parameter is undefined.\" );\n\t\t\t\tcontinue;\n\n\t\t\t}\n\n\t\t\tvar currentValue = this[ key ];\n\n\t\t\tif ( currentValue === undefined ) {\n\n\t\t\t\tconsole.warn( \"THREE.\" + this.type + \": '\" + key + \"' is not a property of this material.\" );\n\t\t\t\tcontinue;\n\n\t\t\t}\n\n\t\t\tif ( (currentValue && currentValue.isColor) ) {\n\n\t\t\t\tcurrentValue.set( newValue );\n\n\t\t\t} else if ( (currentValue && currentValue.isVector3) && (newValue && newValue.isVector3) ) {\n\n\t\t\t\tcurrentValue.copy( newValue );\n\n\t\t\t} else if ( key === 'overdraw' ) {\n\n\t\t\t\t// ensure overdraw is backwards-compatible with legacy boolean type\n\t\t\t\tthis[ key ] = Number( newValue );\n\n\t\t\t} else {\n\n\t\t\t\tthis[ key ] = newValue;\n\n\t\t\t}\n\n\t\t}\n\n\t},\n\n\ttoJSON: function ( meta ) {\n\n\t\tvar isRoot = meta === undefined;\n\n\t\tif ( isRoot ) {\n\n\t\t\tmeta = {\n\t\t\t\ttextures: {},\n\t\t\t\timages: {}\n\t\t\t};\n\n\t\t}\n\n\t\tvar data = {\n\t\t\tmetadata: {\n\t\t\t\tversion: 4.4,\n\t\t\t\ttype: 'Material',\n\t\t\t\tgenerator: 'Material.toJSON'\n\t\t\t}\n\t\t};\n\n\t\t// standard Material serialization\n\t\tdata.uuid = this.uuid;\n\t\tdata.type = this.type;\n\n\t\tif ( this.name !== '' ) data.name = this.name;\n\n\t\tif ( (this.color && this.color.isColor) ) data.color = this.color.getHex();\n\n\t\tif ( this.roughness !== undefined ) data.roughness = this.roughness;\n\t\tif ( this.metalness !== undefined ) data.metalness = this.metalness;\n\n\t\tif ( (this.emissive && this.emissive.isColor) ) data.emissive = this.emissive.getHex();\n\t\tif ( (this.specular && this.specular.isColor) ) data.specular = this.specular.getHex();\n\t\tif ( this.shininess !== undefined ) data.shininess = this.shininess;\n\n\t\tif ( (this.map && this.map.isTexture) ) data.map = this.map.toJSON( meta ).uuid;\n\t\tif ( (this.alphaMap && this.alphaMap.isTexture) ) data.alphaMap = this.alphaMap.toJSON( meta ).uuid;\n\t\tif ( (this.lightMap && this.lightMap.isTexture) ) data.lightMap = this.lightMap.toJSON( meta ).uuid;\n\t\tif ( (this.bumpMap && this.bumpMap.isTexture) ) {\n\n\t\t\tdata.bumpMap = this.bumpMap.toJSON( meta ).uuid;\n\t\t\tdata.bumpScale = this.bumpScale;\n\n\t\t}\n\t\tif ( (this.normalMap && this.normalMap.isTexture) ) {\n\n\t\t\tdata.normalMap = this.normalMap.toJSON( meta ).uuid;\n\t\t\tdata.normalScale = this.normalScale.toArray();\n\n\t\t}\n\t\tif ( (this.displacementMap && this.displacementMap.isTexture) ) {\n\n\t\t\tdata.displacementMap = this.displacementMap.toJSON( meta ).uuid;\n\t\t\tdata.displacementScale = this.displacementScale;\n\t\t\tdata.displacementBias = this.displacementBias;\n\n\t\t}\n\t\tif ( (this.roughnessMap && this.roughnessMap.isTexture) ) data.roughnessMap = this.roughnessMap.toJSON( meta ).uuid;\n\t\tif ( (this.metalnessMap && this.metalnessMap.isTexture) ) data.metalnessMap = this.metalnessMap.toJSON( meta ).uuid;\n\n\t\tif ( (this.emissiveMap && this.emissiveMap.isTexture) ) data.emissiveMap = this.emissiveMap.toJSON( meta ).uuid;\n\t\tif ( (this.specularMap && this.specularMap.isTexture) ) data.specularMap = this.specularMap.toJSON( meta ).uuid;\n\n\t\tif ( (this.envMap && this.envMap.isTexture) ) {\n\n\t\t\tdata.envMap = this.envMap.toJSON( meta ).uuid;\n\t\t\tdata.reflectivity = this.reflectivity; // Scale behind envMap\n\n\t\t}\n\n\t\tif ( this.size !== undefined ) data.size = this.size;\n\t\tif ( this.sizeAttenuation !== undefined ) data.sizeAttenuation = this.sizeAttenuation;\n\n\t\tif ( this.blending !== NormalBlending ) data.blending = this.blending;\n\t\tif ( this.shading !== SmoothShading ) data.shading = this.shading;\n\t\tif ( this.side !== FrontSide ) data.side = this.side;\n\t\tif ( this.vertexColors !== NoColors ) data.vertexColors = this.vertexColors;\n\n\t\tif ( this.opacity < 1 ) data.opacity = this.opacity;\n\t\tif ( this.transparent === true ) data.transparent = this.transparent;\n\n\t\tdata.depthFunc = this.depthFunc;\n\t\tdata.depthTest = this.depthTest;\n\t\tdata.depthWrite = this.depthWrite;\n\n\t\tif ( this.alphaTest > 0 ) data.alphaTest = this.alphaTest;\n\t\tif ( this.premultipliedAlpha === true ) data.premultipliedAlpha = this.premultipliedAlpha;\n\t\tif ( this.wireframe === true ) data.wireframe = this.wireframe;\n\t\tif ( this.wireframeLinewidth > 1 ) data.wireframeLinewidth = this.wireframeLinewidth;\n\t\tif ( this.wireframeLinecap !== 'round' ) data.wireframeLinecap = this.wireframeLinecap;\n\t\tif ( this.wireframeLinejoin !== 'round' ) data.wireframeLinejoin = this.wireframeLinejoin;\n\n\t\tdata.skinning = this.skinning;\n\t\tdata.morphTargets = this.morphTargets;\n\n\t\t// TODO: Copied from Object3D.toJSON\n\n\t\tfunction extractFromCache( cache ) {\n\n\t\t\tvar values = [];\n\n\t\t\tfor ( var key in cache ) {\n\n\t\t\t\tvar data = cache[ key ];\n\t\t\t\tdelete data.metadata;\n\t\t\t\tvalues.push( data );\n\n\t\t\t}\n\n\t\t\treturn values;\n\n\t\t}\n\n\t\tif ( isRoot ) {\n\n\t\t\tvar textures = extractFromCache( meta.textures );\n\t\t\tvar images = extractFromCache( meta.images );\n\n\t\t\tif ( textures.length > 0 ) data.textures = textures;\n\t\t\tif ( images.length > 0 ) data.images = images;\n\n\t\t}\n\n\t\treturn data;\n\n\t},\n\n\tclone: function () {\n\n\t\treturn new this.constructor().copy( this );\n\n\t},\n\n\tcopy: function ( source ) {\n\n\t\tthis.name = source.name;\n\n\t\tthis.fog = source.fog;\n\t\tthis.lights = source.lights;\n\n\t\tthis.blending = source.blending;\n\t\tthis.side = source.side;\n\t\tthis.shading = source.shading;\n\t\tthis.vertexColors = source.vertexColors;\n\n\t\tthis.opacity = source.opacity;\n\t\tthis.transparent = source.transparent;\n\n\t\tthis.blendSrc = source.blendSrc;\n\t\tthis.blendDst = source.blendDst;\n\t\tthis.blendEquation = source.blendEquation;\n\t\tthis.blendSrcAlpha = source.blendSrcAlpha;\n\t\tthis.blendDstAlpha = source.blendDstAlpha;\n\t\tthis.blendEquationAlpha = source.blendEquationAlpha;\n\n\t\tthis.depthFunc = source.depthFunc;\n\t\tthis.depthTest = source.depthTest;\n\t\tthis.depthWrite = source.depthWrite;\n\n\t\tthis.colorWrite = source.colorWrite;\n\n\t\tthis.precision = source.precision;\n\n\t\tthis.polygonOffset = source.polygonOffset;\n\t\tthis.polygonOffsetFactor = source.polygonOffsetFactor;\n\t\tthis.polygonOffsetUnits = source.polygonOffsetUnits;\n\n\t\tthis.alphaTest = source.alphaTest;\n\n\t\tthis.premultipliedAlpha = source.premultipliedAlpha;\n\n\t\tthis.overdraw = source.overdraw;\n\n\t\tthis.visible = source.visible;\n\t\tthis.clipShadows = source.clipShadows;\n\t\tthis.clipIntersection = source.clipIntersection;\n\n\t\tvar srcPlanes = source.clippingPlanes,\n\t\t\tdstPlanes = null;\n\n\t\tif ( srcPlanes !== null ) {\n\n\t\t\tvar n = srcPlanes.length;\n\t\t\tdstPlanes = new Array( n );\n\n\t\t\tfor ( var i = 0; i !== n; ++ i )\n\t\t\t\tdstPlanes[ i ] = srcPlanes[ i ].clone();\n\n\t\t}\n\n\t\tthis.clippingPlanes = dstPlanes;\n\n\t\treturn this;\n\n\t},\n\n\tupdate: function () {\n\n\t\tthis.dispatchEvent( { type: 'update' } );\n\n\t},\n\n\tdispose: function () {\n\n\t\tthis.dispatchEvent( { type: 'dispose' } );\n\n\t}\n\n};\n\nObject.assign( Material.prototype, EventDispatcher.prototype );\n\nvar count = 0;\nfunction MaterialIdCount() { return count++; };\n\n\nexport { MaterialIdCount, Material };\n","import { Material } from './Material';\nimport { UniformsUtils } from '../renderers/shaders/UniformsUtils';\n\n/**\n * @author alteredq / http://alteredqualia.com/\n *\n * parameters = {\n * defines: { \"label\" : \"value\" },\n * uniforms: { \"parameter1\": { value: 1.0 }, \"parameter2\": { value2: 2 } },\n *\n * fragmentShader: ,\n * vertexShader: ,\n *\n * wireframe: ,\n * wireframeLinewidth: ,\n *\n * lights: ,\n *\n * skinning: ,\n * morphTargets: ,\n * morphNormals: \n * }\n */\n\nfunction ShaderMaterial( parameters ) {\n\n\tMaterial.call( this );\n\n\tthis.type = 'ShaderMaterial';\n\n\tthis.defines = {};\n\tthis.uniforms = {};\n\n\tthis.vertexShader = 'void main() {\\n\\tgl_Position = projectionMatrix * modelViewMatrix * vec4( position, 1.0 );\\n}';\n\tthis.fragmentShader = 'void main() {\\n\\tgl_FragColor = vec4( 1.0, 0.0, 0.0, 1.0 );\\n}';\n\n\tthis.linewidth = 1;\n\n\tthis.wireframe = false;\n\tthis.wireframeLinewidth = 1;\n\n\tthis.fog = false; // set to use scene fog\n\tthis.lights = false; // set to use scene lights\n\tthis.clipping = false; // set to use user-defined clipping planes\n\n\tthis.skinning = false; // set to use skinning attribute streams\n\tthis.morphTargets = false; // set to use morph targets\n\tthis.morphNormals = false; // set to use morph normals\n\n\tthis.extensions = {\n\t\tderivatives: false, // set to use derivatives\n\t\tfragDepth: false, // set to use fragment depth values\n\t\tdrawBuffers: false, // set to use draw buffers\n\t\tshaderTextureLOD: false // set to use shader texture LOD\n\t};\n\n\t// When rendered geometry doesn't include these attributes but the material does,\n\t// use these default values in WebGL. This avoids errors when buffer data is missing.\n\tthis.defaultAttributeValues = {\n\t\t'color': [ 1, 1, 1 ],\n\t\t'uv': [ 0, 0 ],\n\t\t'uv2': [ 0, 0 ]\n\t};\n\n\tthis.index0AttributeName = undefined;\n\n\tif ( parameters !== undefined ) {\n\n\t\tif ( parameters.attributes !== undefined ) {\n\n\t\t\tconsole.error( 'THREE.ShaderMaterial: attributes should now be defined in THREE.BufferGeometry instead.' );\n\n\t\t}\n\n\t\tthis.setValues( parameters );\n\n\t}\n\n}\n\nShaderMaterial.prototype = Object.create( Material.prototype );\nShaderMaterial.prototype.constructor = ShaderMaterial;\n\nShaderMaterial.prototype.isShaderMaterial = true;\n\nShaderMaterial.prototype.copy = function ( source ) {\n\n\tMaterial.prototype.copy.call( this, source );\n\n\tthis.fragmentShader = source.fragmentShader;\n\tthis.vertexShader = source.vertexShader;\n\n\tthis.uniforms = UniformsUtils.clone( source.uniforms );\n\n\tthis.defines = source.defines;\n\n\tthis.wireframe = source.wireframe;\n\tthis.wireframeLinewidth = source.wireframeLinewidth;\n\n\tthis.lights = source.lights;\n\tthis.clipping = source.clipping;\n\n\tthis.skinning = source.skinning;\n\n\tthis.morphTargets = source.morphTargets;\n\tthis.morphNormals = source.morphNormals;\n\n\tthis.extensions = source.extensions;\n\n\treturn this;\n\n};\n\nShaderMaterial.prototype.toJSON = function ( meta ) {\n\n\tvar data = Material.prototype.toJSON.call( this, meta );\n\n\tdata.uniforms = this.uniforms;\n\tdata.vertexShader = this.vertexShader;\n\tdata.fragmentShader = this.fragmentShader;\n\n\treturn data;\n\n};\n\n\nexport { ShaderMaterial };\n","import { Material } from './Material';\nimport { BasicDepthPacking } from '../constants';\n\n/**\n * @author mrdoob / http://mrdoob.com/\n * @author alteredq / http://alteredqualia.com/\n * @author bhouston / https://clara.io\n * @author WestLangley / http://github.com/WestLangley\n *\n * parameters = {\n *\n * opacity: ,\n *\n * map: new THREE.Texture( ),\n *\n * alphaMap: new THREE.Texture( ),\n *\n * displacementMap: new THREE.Texture( ),\n * displacementScale: ,\n * displacementBias: ,\n *\n * wireframe: ,\n * wireframeLinewidth: \n * }\n */\n\nfunction MeshDepthMaterial( parameters ) {\n\n\tMaterial.call( this );\n\n\tthis.type = 'MeshDepthMaterial';\n\n\tthis.depthPacking = BasicDepthPacking;\n\n\tthis.skinning = false;\n\tthis.morphTargets = false;\n\n\tthis.map = null;\n\n\tthis.alphaMap = null;\n\n\tthis.displacementMap = null;\n\tthis.displacementScale = 1;\n\tthis.displacementBias = 0;\n\n\tthis.wireframe = false;\n\tthis.wireframeLinewidth = 1;\n\n\tthis.fog = false;\n\tthis.lights = false;\n\n\tthis.setValues( parameters );\n\n}\n\nMeshDepthMaterial.prototype = Object.create( Material.prototype );\nMeshDepthMaterial.prototype.constructor = MeshDepthMaterial;\n\nMeshDepthMaterial.prototype.isMeshDepthMaterial = true;\n\nMeshDepthMaterial.prototype.copy = function ( source ) {\n\n\tMaterial.prototype.copy.call( this, source );\n\n\tthis.depthPacking = source.depthPacking;\n\n\tthis.skinning = source.skinning;\n\tthis.morphTargets = source.morphTargets;\n\n\tthis.map = source.map;\n\n\tthis.alphaMap = source.alphaMap;\n\n\tthis.displacementMap = source.displacementMap;\n\tthis.displacementScale = source.displacementScale;\n\tthis.displacementBias = source.displacementBias;\n\n\tthis.wireframe = source.wireframe;\n\tthis.wireframeLinewidth = source.wireframeLinewidth;\n\n\treturn this;\n\n};\n\n\nexport { MeshDepthMaterial };\n","import { Vector3 } from './Vector3';\nimport { Sphere } from './Sphere';\n\n/**\n * @author bhouston / http://clara.io\n * @author WestLangley / http://github.com/WestLangley\n */\n\nfunction Box3( min, max ) {\n\n\tthis.min = ( min !== undefined ) ? min : new Vector3( + Infinity, + Infinity, + Infinity );\n\tthis.max = ( max !== undefined ) ? max : new Vector3( - Infinity, - Infinity, - Infinity );\n\n}\n\nBox3.prototype = {\n\n\tconstructor: Box3,\n\n\tisBox3: true,\n\n\tset: function ( min, max ) {\n\n\t\tthis.min.copy( min );\n\t\tthis.max.copy( max );\n\n\t\treturn this;\n\n\t},\n\n\tsetFromArray: function ( array ) {\n\n\t\tvar minX = + Infinity;\n\t\tvar minY = + Infinity;\n\t\tvar minZ = + Infinity;\n\n\t\tvar maxX = - Infinity;\n\t\tvar maxY = - Infinity;\n\t\tvar maxZ = - Infinity;\n\n\t\tfor ( var i = 0, l = array.length; i < l; i += 3 ) {\n\n\t\t\tvar x = array[ i ];\n\t\t\tvar y = array[ i + 1 ];\n\t\t\tvar z = array[ i + 2 ];\n\n\t\t\tif ( x < minX ) minX = x;\n\t\t\tif ( y < minY ) minY = y;\n\t\t\tif ( z < minZ ) minZ = z;\n\n\t\t\tif ( x > maxX ) maxX = x;\n\t\t\tif ( y > maxY ) maxY = y;\n\t\t\tif ( z > maxZ ) maxZ = z;\n\n\t\t}\n\n\t\tthis.min.set( minX, minY, minZ );\n\t\tthis.max.set( maxX, maxY, maxZ );\n\n\t},\n\n\tsetFromPoints: function ( points ) {\n\n\t\tthis.makeEmpty();\n\n\t\tfor ( var i = 0, il = points.length; i < il; i ++ ) {\n\n\t\t\tthis.expandByPoint( points[ i ] );\n\n\t\t}\n\n\t\treturn this;\n\n\t},\n\n\tsetFromCenterAndSize: function () {\n\n\t\tvar v1 = new Vector3();\n\n\t\treturn function setFromCenterAndSize( center, size ) {\n\n\t\t\tvar halfSize = v1.copy( size ).multiplyScalar( 0.5 );\n\n\t\t\tthis.min.copy( center ).sub( halfSize );\n\t\t\tthis.max.copy( center ).add( halfSize );\n\n\t\t\treturn this;\n\n\t\t};\n\n\t}(),\n\n\tsetFromObject: function () {\n\n\t\t// Computes the world-axis-aligned bounding box of an object (including its children),\n\t\t// accounting for both the object's, and children's, world transforms\n\n\t\tvar v1 = new Vector3();\n\n\t\treturn function setFromObject( object ) {\n\n\t\t\tvar scope = this;\n\n\t\t\tobject.updateMatrixWorld( true );\n\n\t\t\tthis.makeEmpty();\n\n\t\t\tobject.traverse( function ( node ) {\n\n\t\t\t\tvar geometry = node.geometry;\n\n\t\t\t\tif ( geometry !== undefined ) {\n\n\t\t\t\t\tif ( (geometry && geometry.isGeometry) ) {\n\n\t\t\t\t\t\tvar vertices = geometry.vertices;\n\n\t\t\t\t\t\tfor ( var i = 0, il = vertices.length; i < il; i ++ ) {\n\n\t\t\t\t\t\t\tv1.copy( vertices[ i ] );\n\t\t\t\t\t\t\tv1.applyMatrix4( node.matrixWorld );\n\n\t\t\t\t\t\t\tscope.expandByPoint( v1 );\n\n\t\t\t\t\t\t}\n\n\t\t\t\t\t} else if ( (geometry && geometry.isBufferGeometry) ) {\n\n\t\t\t\t\t\tvar attribute = geometry.attributes.position;\n\n\t\t\t\t\t\tif ( attribute !== undefined ) {\n\n\t\t\t\t\t\t\tvar array, offset, stride;\n\n\t\t\t\t\t\t\tif ( (attribute && attribute.isInterleavedBufferAttribute) ) {\n\n\t\t\t\t\t\t\t\tarray = attribute.data.array;\n\t\t\t\t\t\t\t\toffset = attribute.offset;\n\t\t\t\t\t\t\t\tstride = attribute.data.stride;\n\n\t\t\t\t\t\t\t} else {\n\n\t\t\t\t\t\t\t\tarray = attribute.array;\n\t\t\t\t\t\t\t\toffset = 0;\n\t\t\t\t\t\t\t\tstride = 3;\n\n\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\tfor ( var i = offset, il = array.length; i < il; i += stride ) {\n\n\t\t\t\t\t\t\t\tv1.fromArray( array, i );\n\t\t\t\t\t\t\t\tv1.applyMatrix4( node.matrixWorld );\n\n\t\t\t\t\t\t\t\tscope.expandByPoint( v1 );\n\n\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t}\n\n\t\t\t\t\t}\n\n\t\t\t\t}\n\n\t\t\t} );\n\n\t\t\treturn this;\n\n\t\t};\n\n\t}(),\n\n\tclone: function () {\n\n\t\treturn new this.constructor().copy( this );\n\n\t},\n\n\tcopy: function ( box ) {\n\n\t\tthis.min.copy( box.min );\n\t\tthis.max.copy( box.max );\n\n\t\treturn this;\n\n\t},\n\n\tmakeEmpty: function () {\n\n\t\tthis.min.x = this.min.y = this.min.z = + Infinity;\n\t\tthis.max.x = this.max.y = this.max.z = - Infinity;\n\n\t\treturn this;\n\n\t},\n\n\tisEmpty: function () {\n\n\t\t// this is a more robust check for empty than ( volume <= 0 ) because volume can get positive with two negative axes\n\n\t\treturn ( this.max.x < this.min.x ) || ( this.max.y < this.min.y ) || ( this.max.z < this.min.z );\n\n\t},\n\n\tgetCenter: function ( optionalTarget ) {\n\n\t\tvar result = optionalTarget || new Vector3();\n\t\treturn this.isEmpty() ? result.set( 0, 0, 0 ) : result.addVectors( this.min, this.max ).multiplyScalar( 0.5 );\n\n\t},\n\n\tgetSize: function ( optionalTarget ) {\n\n\t\tvar result = optionalTarget || new Vector3();\n\t\treturn this.isEmpty() ? result.set( 0, 0, 0 ) : result.subVectors( this.max, this.min );\n\n\t},\n\n\texpandByPoint: function ( point ) {\n\n\t\tthis.min.min( point );\n\t\tthis.max.max( point );\n\n\t\treturn this;\n\n\t},\n\n\texpandByVector: function ( vector ) {\n\n\t\tthis.min.sub( vector );\n\t\tthis.max.add( vector );\n\n\t\treturn this;\n\n\t},\n\n\texpandByScalar: function ( scalar ) {\n\n\t\tthis.min.addScalar( - scalar );\n\t\tthis.max.addScalar( scalar );\n\n\t\treturn this;\n\n\t},\n\n\tcontainsPoint: function ( point ) {\n\n\t\tif ( point.x < this.min.x || point.x > this.max.x ||\n\t\t\t\t point.y < this.min.y || point.y > this.max.y ||\n\t\t\t\t point.z < this.min.z || point.z > this.max.z ) {\n\n\t\t\treturn false;\n\n\t\t}\n\n\t\treturn true;\n\n\t},\n\n\tcontainsBox: function ( box ) {\n\n\t\tif ( ( this.min.x <= box.min.x ) && ( box.max.x <= this.max.x ) &&\n\t\t\t ( this.min.y <= box.min.y ) && ( box.max.y <= this.max.y ) &&\n\t\t\t ( this.min.z <= box.min.z ) && ( box.max.z <= this.max.z ) ) {\n\n\t\t\treturn true;\n\n\t\t}\n\n\t\treturn false;\n\n\t},\n\n\tgetParameter: function ( point, optionalTarget ) {\n\n\t\t// This can potentially have a divide by zero if the box\n\t\t// has a size dimension of 0.\n\n\t\tvar result = optionalTarget || new Vector3();\n\n\t\treturn result.set(\n\t\t\t( point.x - this.min.x ) / ( this.max.x - this.min.x ),\n\t\t\t( point.y - this.min.y ) / ( this.max.y - this.min.y ),\n\t\t\t( point.z - this.min.z ) / ( this.max.z - this.min.z )\n\t\t);\n\n\t},\n\n\tintersectsBox: function ( box ) {\n\n\t\t// using 6 splitting planes to rule out intersections.\n\n\t\tif ( box.max.x < this.min.x || box.min.x > this.max.x ||\n\t\t\t\t box.max.y < this.min.y || box.min.y > this.max.y ||\n\t\t\t\t box.max.z < this.min.z || box.min.z > this.max.z ) {\n\n\t\t\treturn false;\n\n\t\t}\n\n\t\treturn true;\n\n\t},\n\n\tintersectsSphere: ( function () {\n\n\t\tvar closestPoint;\n\n\t\treturn function intersectsSphere( sphere ) {\n\n\t\t\tif ( closestPoint === undefined ) closestPoint = new Vector3();\n\n\t\t\t// Find the point on the AABB closest to the sphere center.\n\t\t\tthis.clampPoint( sphere.center, closestPoint );\n\n\t\t\t// If that point is inside the sphere, the AABB and sphere intersect.\n\t\t\treturn closestPoint.distanceToSquared( sphere.center ) <= ( sphere.radius * sphere.radius );\n\n\t\t};\n\n\t} )(),\n\n\tintersectsPlane: function ( plane ) {\n\n\t\t// We compute the minimum and maximum dot product values. If those values\n\t\t// are on the same side (back or front) of the plane, then there is no intersection.\n\n\t\tvar min, max;\n\n\t\tif ( plane.normal.x > 0 ) {\n\n\t\t\tmin = plane.normal.x * this.min.x;\n\t\t\tmax = plane.normal.x * this.max.x;\n\n\t\t} else {\n\n\t\t\tmin = plane.normal.x * this.max.x;\n\t\t\tmax = plane.normal.x * this.min.x;\n\n\t\t}\n\n\t\tif ( plane.normal.y > 0 ) {\n\n\t\t\tmin += plane.normal.y * this.min.y;\n\t\t\tmax += plane.normal.y * this.max.y;\n\n\t\t} else {\n\n\t\t\tmin += plane.normal.y * this.max.y;\n\t\t\tmax += plane.normal.y * this.min.y;\n\n\t\t}\n\n\t\tif ( plane.normal.z > 0 ) {\n\n\t\t\tmin += plane.normal.z * this.min.z;\n\t\t\tmax += plane.normal.z * this.max.z;\n\n\t\t} else {\n\n\t\t\tmin += plane.normal.z * this.max.z;\n\t\t\tmax += plane.normal.z * this.min.z;\n\n\t\t}\n\n\t\treturn ( min <= plane.constant && max >= plane.constant );\n\n\t},\n\n\tclampPoint: function ( point, optionalTarget ) {\n\n\t\tvar result = optionalTarget || new Vector3();\n\t\treturn result.copy( point ).clamp( this.min, this.max );\n\n\t},\n\n\tdistanceToPoint: function () {\n\n\t\tvar v1 = new Vector3();\n\n\t\treturn function distanceToPoint( point ) {\n\n\t\t\tvar clampedPoint = v1.copy( point ).clamp( this.min, this.max );\n\t\t\treturn clampedPoint.sub( point ).length();\n\n\t\t};\n\n\t}(),\n\n\tgetBoundingSphere: function () {\n\n\t\tvar v1 = new Vector3();\n\n\t\treturn function getBoundingSphere( optionalTarget ) {\n\n\t\t\tvar result = optionalTarget || new Sphere();\n\n\t\t\tthis.getCenter( result.center );\n\n\t\t\tresult.radius = this.getSize( v1 ).length() * 0.5;\n\n\t\t\treturn result;\n\n\t\t};\n\n\t}(),\n\n\tintersect: function ( box ) {\n\n\t\tthis.min.max( box.min );\n\t\tthis.max.min( box.max );\n\n\t\t// ensure that if there is no overlap, the result is fully empty, not slightly empty with non-inf/+inf values that will cause subsequence intersects to erroneously return valid values.\n\t\tif( this.isEmpty() ) this.makeEmpty();\n\n\t\treturn this;\n\n\t},\n\n\tunion: function ( box ) {\n\n\t\tthis.min.min( box.min );\n\t\tthis.max.max( box.max );\n\n\t\treturn this;\n\n\t},\n\n\tapplyMatrix4: function () {\n\n\t\tvar points = [\n\t\t\tnew Vector3(),\n\t\t\tnew Vector3(),\n\t\t\tnew Vector3(),\n\t\t\tnew Vector3(),\n\t\t\tnew Vector3(),\n\t\t\tnew Vector3(),\n\t\t\tnew Vector3(),\n\t\t\tnew Vector3()\n\t\t];\n\n\t\treturn function applyMatrix4( matrix ) {\n\n\t\t\t// transform of empty box is an empty box.\n\t\t\tif( this.isEmpty() ) return this;\n\n\t\t\t// NOTE: I am using a binary pattern to specify all 2^3 combinations below\n\t\t\tpoints[ 0 ].set( this.min.x, this.min.y, this.min.z ).applyMatrix4( matrix ); // 000\n\t\t\tpoints[ 1 ].set( this.min.x, this.min.y, this.max.z ).applyMatrix4( matrix ); // 001\n\t\t\tpoints[ 2 ].set( this.min.x, this.max.y, this.min.z ).applyMatrix4( matrix ); // 010\n\t\t\tpoints[ 3 ].set( this.min.x, this.max.y, this.max.z ).applyMatrix4( matrix ); // 011\n\t\t\tpoints[ 4 ].set( this.max.x, this.min.y, this.min.z ).applyMatrix4( matrix ); // 100\n\t\t\tpoints[ 5 ].set( this.max.x, this.min.y, this.max.z ).applyMatrix4( matrix ); // 101\n\t\t\tpoints[ 6 ].set( this.max.x, this.max.y, this.min.z ).applyMatrix4( matrix ); // 110\n\t\t\tpoints[ 7 ].set( this.max.x, this.max.y, this.max.z ).applyMatrix4( matrix );\t// 111\n\n\t\t\tthis.setFromPoints( points );\n\n\t\t\treturn this;\n\n\t\t};\n\n\t}(),\n\n\ttranslate: function ( offset ) {\n\n\t\tthis.min.add( offset );\n\t\tthis.max.add( offset );\n\n\t\treturn this;\n\n\t},\n\n\tequals: function ( box ) {\n\n\t\treturn box.min.equals( this.min ) && box.max.equals( this.max );\n\n\t}\n\n};\n\n\nexport { Box3 };\n","import { Box3 } from './Box3';\nimport { Vector3 } from './Vector3';\n\n/**\n * @author bhouston / http://clara.io\n * @author mrdoob / http://mrdoob.com/\n */\n\nfunction Sphere( center, radius ) {\n\n\tthis.center = ( center !== undefined ) ? center : new Vector3();\n\tthis.radius = ( radius !== undefined ) ? radius : 0;\n\n}\n\nSphere.prototype = {\n\n\tconstructor: Sphere,\n\n\tset: function ( center, radius ) {\n\n\t\tthis.center.copy( center );\n\t\tthis.radius = radius;\n\n\t\treturn this;\n\n\t},\n\n\tsetFromPoints: function () {\n\n\t\tvar box = new Box3();\n\n\t\treturn function setFromPoints( points, optionalCenter ) {\n\n\t\t\tvar center = this.center;\n\n\t\t\tif ( optionalCenter !== undefined ) {\n\n\t\t\t\tcenter.copy( optionalCenter );\n\n\t\t\t} else {\n\n\t\t\t\tbox.setFromPoints( points ).getCenter( center );\n\n\t\t\t}\n\n\t\t\tvar maxRadiusSq = 0;\n\n\t\t\tfor ( var i = 0, il = points.length; i < il; i ++ ) {\n\n\t\t\t\tmaxRadiusSq = Math.max( maxRadiusSq, center.distanceToSquared( points[ i ] ) );\n\n\t\t\t}\n\n\t\t\tthis.radius = Math.sqrt( maxRadiusSq );\n\n\t\t\treturn this;\n\n\t\t};\n\n\t}(),\n\n\tclone: function () {\n\n\t\treturn new this.constructor().copy( this );\n\n\t},\n\n\tcopy: function ( sphere ) {\n\n\t\tthis.center.copy( sphere.center );\n\t\tthis.radius = sphere.radius;\n\n\t\treturn this;\n\n\t},\n\n\tempty: function () {\n\n\t\treturn ( this.radius <= 0 );\n\n\t},\n\n\tcontainsPoint: function ( point ) {\n\n\t\treturn ( point.distanceToSquared( this.center ) <= ( this.radius * this.radius ) );\n\n\t},\n\n\tdistanceToPoint: function ( point ) {\n\n\t\treturn ( point.distanceTo( this.center ) - this.radius );\n\n\t},\n\n\tintersectsSphere: function ( sphere ) {\n\n\t\tvar radiusSum = this.radius + sphere.radius;\n\n\t\treturn sphere.center.distanceToSquared( this.center ) <= ( radiusSum * radiusSum );\n\n\t},\n\n\tintersectsBox: function ( box ) {\n\n\t\treturn box.intersectsSphere( this );\n\n\t},\n\n\tintersectsPlane: function ( plane ) {\n\n\t\t// We use the following equation to compute the signed distance from\n\t\t// the center of the sphere to the plane.\n\t\t//\n\t\t// distance = q * n - d\n\t\t//\n\t\t// If this distance is greater than the radius of the sphere,\n\t\t// then there is no intersection.\n\n\t\treturn Math.abs( this.center.dot( plane.normal ) - plane.constant ) <= this.radius;\n\n\t},\n\n\tclampPoint: function ( point, optionalTarget ) {\n\n\t\tvar deltaLengthSq = this.center.distanceToSquared( point );\n\n\t\tvar result = optionalTarget || new Vector3();\n\n\t\tresult.copy( point );\n\n\t\tif ( deltaLengthSq > ( this.radius * this.radius ) ) {\n\n\t\t\tresult.sub( this.center ).normalize();\n\t\t\tresult.multiplyScalar( this.radius ).add( this.center );\n\n\t\t}\n\n\t\treturn result;\n\n\t},\n\n\tgetBoundingBox: function ( optionalTarget ) {\n\n\t\tvar box = optionalTarget || new Box3();\n\n\t\tbox.set( this.center, this.center );\n\t\tbox.expandByScalar( this.radius );\n\n\t\treturn box;\n\n\t},\n\n\tapplyMatrix4: function ( matrix ) {\n\n\t\tthis.center.applyMatrix4( matrix );\n\t\tthis.radius = this.radius * matrix.getMaxScaleOnAxis();\n\n\t\treturn this;\n\n\t},\n\n\ttranslate: function ( offset ) {\n\n\t\tthis.center.add( offset );\n\n\t\treturn this;\n\n\t},\n\n\tequals: function ( sphere ) {\n\n\t\treturn sphere.center.equals( this.center ) && ( sphere.radius === this.radius );\n\n\t}\n\n};\n\n\nexport { Sphere };\n","import { Vector3 } from './Vector3';\n\n/**\n * @author alteredq / http://alteredqualia.com/\n * @author WestLangley / http://github.com/WestLangley\n * @author bhouston / http://clara.io\n * @author tschw\n */\n\nfunction Matrix3() {\n\n\tthis.elements = new Float32Array( [\n\n\t\t1, 0, 0,\n\t\t0, 1, 0,\n\t\t0, 0, 1\n\n\t] );\n\n\tif ( arguments.length > 0 ) {\n\n\t\tconsole.error( 'THREE.Matrix3: the constructor no longer reads arguments. use .set() instead.' );\n\n\t}\n\n}\n\nMatrix3.prototype = {\n\n\tconstructor: Matrix3,\n\n\tisMatrix3: true,\n\n\tset: function ( n11, n12, n13, n21, n22, n23, n31, n32, n33 ) {\n\n\t\tvar te = this.elements;\n\n\t\tte[ 0 ] = n11; te[ 1 ] = n21; te[ 2 ] = n31;\n\t\tte[ 3 ] = n12; te[ 4 ] = n22; te[ 5 ] = n32;\n\t\tte[ 6 ] = n13; te[ 7 ] = n23; te[ 8 ] = n33;\n\n\t\treturn this;\n\n\t},\n\n\tidentity: function () {\n\n\t\tthis.set(\n\n\t\t\t1, 0, 0,\n\t\t\t0, 1, 0,\n\t\t\t0, 0, 1\n\n\t\t);\n\n\t\treturn this;\n\n\t},\n\n\tclone: function () {\n\n\t\treturn new this.constructor().fromArray( this.elements );\n\n\t},\n\n\tcopy: function ( m ) {\n\n\t\tvar me = m.elements;\n\n\t\tthis.set(\n\n\t\t\tme[ 0 ], me[ 3 ], me[ 6 ],\n\t\t\tme[ 1 ], me[ 4 ], me[ 7 ],\n\t\t\tme[ 2 ], me[ 5 ], me[ 8 ]\n\n\t\t);\n\n\t\treturn this;\n\n\t},\n\n\tsetFromMatrix4: function( m ) {\n\n\t\tvar me = m.elements;\n\n\t\tthis.set(\n\n\t\t\tme[ 0 ], me[ 4 ], me[ 8 ],\n\t\t\tme[ 1 ], me[ 5 ], me[ 9 ],\n\t\t\tme[ 2 ], me[ 6 ], me[ 10 ]\n\n\t\t);\n\n\t\treturn this;\n\n\t},\n\n\tapplyToVector3Array: function () {\n\n\t\tvar v1;\n\n\t\treturn function applyToVector3Array( array, offset, length ) {\n\n\t\t\tif ( v1 === undefined ) v1 = new Vector3();\n\t\t\tif ( offset === undefined ) offset = 0;\n\t\t\tif ( length === undefined ) length = array.length;\n\n\t\t\tfor ( var i = 0, j = offset; i < length; i += 3, j += 3 ) {\n\n\t\t\t\tv1.fromArray( array, j );\n\t\t\t\tv1.applyMatrix3( this );\n\t\t\t\tv1.toArray( array, j );\n\n\t\t\t}\n\n\t\t\treturn array;\n\n\t\t};\n\n\t}(),\n\n\tapplyToBuffer: function () {\n\n\t\tvar v1;\n\n\t\treturn function applyToBuffer( buffer, offset, length ) {\n\n\t\t\tif ( v1 === undefined ) v1 = new Vector3();\n\t\t\tif ( offset === undefined ) offset = 0;\n\t\t\tif ( length === undefined ) length = buffer.length / buffer.itemSize;\n\n\t\t\tfor ( var i = 0, j = offset; i < length; i ++, j ++ ) {\n\n\t\t\t\tv1.x = buffer.getX( j );\n\t\t\t\tv1.y = buffer.getY( j );\n\t\t\t\tv1.z = buffer.getZ( j );\n\n\t\t\t\tv1.applyMatrix3( this );\n\n\t\t\t\tbuffer.setXYZ( j, v1.x, v1.y, v1.z );\n\n\t\t\t}\n\n\t\t\treturn buffer;\n\n\t\t};\n\n\t}(),\n\n\tmultiplyScalar: function ( s ) {\n\n\t\tvar te = this.elements;\n\n\t\tte[ 0 ] *= s; te[ 3 ] *= s; te[ 6 ] *= s;\n\t\tte[ 1 ] *= s; te[ 4 ] *= s; te[ 7 ] *= s;\n\t\tte[ 2 ] *= s; te[ 5 ] *= s; te[ 8 ] *= s;\n\n\t\treturn this;\n\n\t},\n\n\tdeterminant: function () {\n\n\t\tvar te = this.elements;\n\n\t\tvar a = te[ 0 ], b = te[ 1 ], c = te[ 2 ],\n\t\t\td = te[ 3 ], e = te[ 4 ], f = te[ 5 ],\n\t\t\tg = te[ 6 ], h = te[ 7 ], i = te[ 8 ];\n\n\t\treturn a * e * i - a * f * h - b * d * i + b * f * g + c * d * h - c * e * g;\n\n\t},\n\n\tgetInverse: function ( matrix, throwOnDegenerate ) {\n\n\t\tif ( (matrix && matrix.isMatrix4) ) {\n\n\t\t\tconsole.error( \"THREE.Matrix3.getInverse no longer takes a Matrix4 argument.\" );\n\n\t\t}\n\n\t\tvar me = matrix.elements,\n\t\t\tte = this.elements,\n\n\t\t\tn11 = me[ 0 ], n21 = me[ 1 ], n31 = me[ 2 ],\n\t\t\tn12 = me[ 3 ], n22 = me[ 4 ], n32 = me[ 5 ],\n\t\t\tn13 = me[ 6 ], n23 = me[ 7 ], n33 = me[ 8 ],\n\n\t\t\tt11 = n33 * n22 - n32 * n23,\n\t\t\tt12 = n32 * n13 - n33 * n12,\n\t\t\tt13 = n23 * n12 - n22 * n13,\n\n\t\t\tdet = n11 * t11 + n21 * t12 + n31 * t13;\n\n\t\tif ( det === 0 ) {\n\n\t\t\tvar msg = \"THREE.Matrix3.getInverse(): can't invert matrix, determinant is 0\";\n\n\t\t\tif ( throwOnDegenerate === true ) {\n\n\t\t\t\tthrow new Error( msg );\n\n\t\t\t} else {\n\n\t\t\t\tconsole.warn( msg );\n\n\t\t\t}\n\n\t\t\treturn this.identity();\n\t\t}\n\n\t\tvar detInv = 1 / det;\n\n\t\tte[ 0 ] = t11 * detInv;\n\t\tte[ 1 ] = ( n31 * n23 - n33 * n21 ) * detInv;\n\t\tte[ 2 ] = ( n32 * n21 - n31 * n22 ) * detInv;\n\n\t\tte[ 3 ] = t12 * detInv;\n\t\tte[ 4 ] = ( n33 * n11 - n31 * n13 ) * detInv;\n\t\tte[ 5 ] = ( n31 * n12 - n32 * n11 ) * detInv;\n\n\t\tte[ 6 ] = t13 * detInv;\n\t\tte[ 7 ] = ( n21 * n13 - n23 * n11 ) * detInv;\n\t\tte[ 8 ] = ( n22 * n11 - n21 * n12 ) * detInv;\n\n\t\treturn this;\n\n\t},\n\n\ttranspose: function () {\n\n\t\tvar tmp, m = this.elements;\n\n\t\ttmp = m[ 1 ]; m[ 1 ] = m[ 3 ]; m[ 3 ] = tmp;\n\t\ttmp = m[ 2 ]; m[ 2 ] = m[ 6 ]; m[ 6 ] = tmp;\n\t\ttmp = m[ 5 ]; m[ 5 ] = m[ 7 ]; m[ 7 ] = tmp;\n\n\t\treturn this;\n\n\t},\n\n\tflattenToArrayOffset: function ( array, offset ) {\n\n\t\tconsole.warn( \"THREE.Matrix3: .flattenToArrayOffset is deprecated \" +\n\t\t\t\t\"- just use .toArray instead.\" );\n\n\t\treturn this.toArray( array, offset );\n\n\t},\n\n\tgetNormalMatrix: function ( matrix4 ) {\n\n\t\treturn this.setFromMatrix4( matrix4 ).getInverse( this ).transpose();\n\n\t},\n\n\ttransposeIntoArray: function ( r ) {\n\n\t\tvar m = this.elements;\n\n\t\tr[ 0 ] = m[ 0 ];\n\t\tr[ 1 ] = m[ 3 ];\n\t\tr[ 2 ] = m[ 6 ];\n\t\tr[ 3 ] = m[ 1 ];\n\t\tr[ 4 ] = m[ 4 ];\n\t\tr[ 5 ] = m[ 7 ];\n\t\tr[ 6 ] = m[ 2 ];\n\t\tr[ 7 ] = m[ 5 ];\n\t\tr[ 8 ] = m[ 8 ];\n\n\t\treturn this;\n\n\t},\n\n\tfromArray: function ( array, offset ) {\n\n\t\tif ( offset === undefined ) offset = 0;\n\n\t\tfor( var i = 0; i < 9; i ++ ) {\n\n\t\t\tthis.elements[ i ] = array[ i + offset ];\n\n\t\t}\n\n\t\treturn this;\n\n\t},\n\n\ttoArray: function ( array, offset ) {\n\n\t\tif ( array === undefined ) array = [];\n\t\tif ( offset === undefined ) offset = 0;\n\n\t\tvar te = this.elements;\n\n\t\tarray[ offset ] = te[ 0 ];\n\t\tarray[ offset + 1 ] = te[ 1 ];\n\t\tarray[ offset + 2 ] = te[ 2 ];\n\n\t\tarray[ offset + 3 ] = te[ 3 ];\n\t\tarray[ offset + 4 ] = te[ 4 ];\n\t\tarray[ offset + 5 ] = te[ 5 ];\n\n\t\tarray[ offset + 6 ] = te[ 6 ];\n\t\tarray[ offset + 7 ] = te[ 7 ];\n\t\tarray[ offset + 8 ] = te[ 8 ];\n\n\t\treturn array;\n\n\t}\n\n};\n\n\nexport { Matrix3 };\n","import { Matrix3 } from './Matrix3';\nimport { Vector3 } from './Vector3';\n\n/**\n * @author bhouston / http://clara.io\n */\n\nfunction Plane( normal, constant ) {\n\n\tthis.normal = ( normal !== undefined ) ? normal : new Vector3( 1, 0, 0 );\n\tthis.constant = ( constant !== undefined ) ? constant : 0;\n\n}\n\nPlane.prototype = {\n\n\tconstructor: Plane,\n\n\tset: function ( normal, constant ) {\n\n\t\tthis.normal.copy( normal );\n\t\tthis.constant = constant;\n\n\t\treturn this;\n\n\t},\n\n\tsetComponents: function ( x, y, z, w ) {\n\n\t\tthis.normal.set( x, y, z );\n\t\tthis.constant = w;\n\n\t\treturn this;\n\n\t},\n\n\tsetFromNormalAndCoplanarPoint: function ( normal, point ) {\n\n\t\tthis.normal.copy( normal );\n\t\tthis.constant = - point.dot( this.normal );\t// must be this.normal, not normal, as this.normal is normalized\n\n\t\treturn this;\n\n\t},\n\n\tsetFromCoplanarPoints: function () {\n\n\t\tvar v1 = new Vector3();\n\t\tvar v2 = new Vector3();\n\n\t\treturn function setFromCoplanarPoints( a, b, c ) {\n\n\t\t\tvar normal = v1.subVectors( c, b ).cross( v2.subVectors( a, b ) ).normalize();\n\n\t\t\t// Q: should an error be thrown if normal is zero (e.g. degenerate plane)?\n\n\t\t\tthis.setFromNormalAndCoplanarPoint( normal, a );\n\n\t\t\treturn this;\n\n\t\t};\n\n\t}(),\n\n\tclone: function () {\n\n\t\treturn new this.constructor().copy( this );\n\n\t},\n\n\tcopy: function ( plane ) {\n\n\t\tthis.normal.copy( plane.normal );\n\t\tthis.constant = plane.constant;\n\n\t\treturn this;\n\n\t},\n\n\tnormalize: function () {\n\n\t\t// Note: will lead to a divide by zero if the plane is invalid.\n\n\t\tvar inverseNormalLength = 1.0 / this.normal.length();\n\t\tthis.normal.multiplyScalar( inverseNormalLength );\n\t\tthis.constant *= inverseNormalLength;\n\n\t\treturn this;\n\n\t},\n\n\tnegate: function () {\n\n\t\tthis.constant *= - 1;\n\t\tthis.normal.negate();\n\n\t\treturn this;\n\n\t},\n\n\tdistanceToPoint: function ( point ) {\n\n\t\treturn this.normal.dot( point ) + this.constant;\n\n\t},\n\n\tdistanceToSphere: function ( sphere ) {\n\n\t\treturn this.distanceToPoint( sphere.center ) - sphere.radius;\n\n\t},\n\n\tprojectPoint: function ( point, optionalTarget ) {\n\n\t\treturn this.orthoPoint( point, optionalTarget ).sub( point ).negate();\n\n\t},\n\n\torthoPoint: function ( point, optionalTarget ) {\n\n\t\tvar perpendicularMagnitude = this.distanceToPoint( point );\n\n\t\tvar result = optionalTarget || new Vector3();\n\t\treturn result.copy( this.normal ).multiplyScalar( perpendicularMagnitude );\n\n\t},\n\n\tintersectLine: function () {\n\n\t\tvar v1 = new Vector3();\n\n\t\treturn function intersectLine( line, optionalTarget ) {\n\n\t\t\tvar result = optionalTarget || new Vector3();\n\n\t\t\tvar direction = line.delta( v1 );\n\n\t\t\tvar denominator = this.normal.dot( direction );\n\n\t\t\tif ( denominator === 0 ) {\n\n\t\t\t\t// line is coplanar, return origin\n\t\t\t\tif ( this.distanceToPoint( line.start ) === 0 ) {\n\n\t\t\t\t\treturn result.copy( line.start );\n\n\t\t\t\t}\n\n\t\t\t\t// Unsure if this is the correct method to handle this case.\n\t\t\t\treturn undefined;\n\n\t\t\t}\n\n\t\t\tvar t = - ( line.start.dot( this.normal ) + this.constant ) / denominator;\n\n\t\t\tif ( t < 0 || t > 1 ) {\n\n\t\t\t\treturn undefined;\n\n\t\t\t}\n\n\t\t\treturn result.copy( direction ).multiplyScalar( t ).add( line.start );\n\n\t\t};\n\n\t}(),\n\n\tintersectsLine: function ( line ) {\n\n\t\t// Note: this tests if a line intersects the plane, not whether it (or its end-points) are coplanar with it.\n\n\t\tvar startSign = this.distanceToPoint( line.start );\n\t\tvar endSign = this.distanceToPoint( line.end );\n\n\t\treturn ( startSign < 0 && endSign > 0 ) || ( endSign < 0 && startSign > 0 );\n\n\t},\n\n\tintersectsBox: function ( box ) {\n\n\t\treturn box.intersectsPlane( this );\n\n\t},\n\n\tintersectsSphere: function ( sphere ) {\n\n\t\treturn sphere.intersectsPlane( this );\n\n\t},\n\n\tcoplanarPoint: function ( optionalTarget ) {\n\n\t\tvar result = optionalTarget || new Vector3();\n\t\treturn result.copy( this.normal ).multiplyScalar( - this.constant );\n\n\t},\n\n\tapplyMatrix4: function () {\n\n\t\tvar v1 = new Vector3();\n\t\tvar m1 = new Matrix3();\n\n\t\treturn function applyMatrix4( matrix, optionalNormalMatrix ) {\n\n\t\t\tvar referencePoint = this.coplanarPoint( v1 ).applyMatrix4( matrix );\n\n\t\t\t// transform normal based on theory here:\n\t\t\t// http://www.songho.ca/opengl/gl_normaltransform.html\n\t\t\tvar normalMatrix = optionalNormalMatrix || m1.getNormalMatrix( matrix );\n\t\t\tvar normal = this.normal.applyMatrix3( normalMatrix ).normalize();\n\n\t\t\t// recalculate constant (like in setFromNormalAndCoplanarPoint)\n\t\t\tthis.constant = - referencePoint.dot( normal );\n\n\t\t\treturn this;\n\n\t\t};\n\n\t}(),\n\n\ttranslate: function ( offset ) {\n\n\t\tthis.constant = this.constant - offset.dot( this.normal );\n\n\t\treturn this;\n\n\t},\n\n\tequals: function ( plane ) {\n\n\t\treturn plane.normal.equals( this.normal ) && ( plane.constant === this.constant );\n\n\t}\n\n};\n\n\nexport { Plane };\n","import { Vector3 } from './Vector3';\nimport { Sphere } from './Sphere';\nimport { Plane } from './Plane';\n\n/**\n * @author mrdoob / http://mrdoob.com/\n * @author alteredq / http://alteredqualia.com/\n * @author bhouston / http://clara.io\n */\n\nfunction Frustum( p0, p1, p2, p3, p4, p5 ) {\n\n\tthis.planes = [\n\n\t\t( p0 !== undefined ) ? p0 : new Plane(),\n\t\t( p1 !== undefined ) ? p1 : new Plane(),\n\t\t( p2 !== undefined ) ? p2 : new Plane(),\n\t\t( p3 !== undefined ) ? p3 : new Plane(),\n\t\t( p4 !== undefined ) ? p4 : new Plane(),\n\t\t( p5 !== undefined ) ? p5 : new Plane()\n\n\t];\n\n}\n\nFrustum.prototype = {\n\n\tconstructor: Frustum,\n\n\tset: function ( p0, p1, p2, p3, p4, p5 ) {\n\n\t\tvar planes = this.planes;\n\n\t\tplanes[ 0 ].copy( p0 );\n\t\tplanes[ 1 ].copy( p1 );\n\t\tplanes[ 2 ].copy( p2 );\n\t\tplanes[ 3 ].copy( p3 );\n\t\tplanes[ 4 ].copy( p4 );\n\t\tplanes[ 5 ].copy( p5 );\n\n\t\treturn this;\n\n\t},\n\n\tclone: function () {\n\n\t\treturn new this.constructor().copy( this );\n\n\t},\n\n\tcopy: function ( frustum ) {\n\n\t\tvar planes = this.planes;\n\n\t\tfor ( var i = 0; i < 6; i ++ ) {\n\n\t\t\tplanes[ i ].copy( frustum.planes[ i ] );\n\n\t\t}\n\n\t\treturn this;\n\n\t},\n\n\tsetFromMatrix: function ( m ) {\n\n\t\tvar planes = this.planes;\n\t\tvar me = m.elements;\n\t\tvar me0 = me[ 0 ], me1 = me[ 1 ], me2 = me[ 2 ], me3 = me[ 3 ];\n\t\tvar me4 = me[ 4 ], me5 = me[ 5 ], me6 = me[ 6 ], me7 = me[ 7 ];\n\t\tvar me8 = me[ 8 ], me9 = me[ 9 ], me10 = me[ 10 ], me11 = me[ 11 ];\n\t\tvar me12 = me[ 12 ], me13 = me[ 13 ], me14 = me[ 14 ], me15 = me[ 15 ];\n\n\t\tplanes[ 0 ].setComponents( me3 - me0, me7 - me4, me11 - me8, me15 - me12 ).normalize();\n\t\tplanes[ 1 ].setComponents( me3 + me0, me7 + me4, me11 + me8, me15 + me12 ).normalize();\n\t\tplanes[ 2 ].setComponents( me3 + me1, me7 + me5, me11 + me9, me15 + me13 ).normalize();\n\t\tplanes[ 3 ].setComponents( me3 - me1, me7 - me5, me11 - me9, me15 - me13 ).normalize();\n\t\tplanes[ 4 ].setComponents( me3 - me2, me7 - me6, me11 - me10, me15 - me14 ).normalize();\n\t\tplanes[ 5 ].setComponents( me3 + me2, me7 + me6, me11 + me10, me15 + me14 ).normalize();\n\n\t\treturn this;\n\n\t},\n\n\tintersectsObject: function () {\n\n\t\tvar sphere = new Sphere();\n\n\t\treturn function intersectsObject( object ) {\n\n\t\t\tvar geometry = object.geometry;\n\n\t\t\tif ( geometry.boundingSphere === null )\n\t\t\t\tgeometry.computeBoundingSphere();\n\n\t\t\tsphere.copy( geometry.boundingSphere )\n\t\t\t\t.applyMatrix4( object.matrixWorld );\n\n\t\t\treturn this.intersectsSphere( sphere );\n\n\t\t};\n\n\t}(),\n\n\tintersectsSprite: function () {\n\n\t\tvar sphere = new Sphere();\n\n\t\treturn function intersectsSprite( sprite ) {\n\n\t\t\tsphere.center.set( 0, 0, 0 );\n\t\t\tsphere.radius = 0.7071067811865476;\n\t\t\tsphere.applyMatrix4( sprite.matrixWorld );\n\n\t\t\treturn this.intersectsSphere( sphere );\n\n\t\t};\n\n\t}(),\n\n\tintersectsSphere: function ( sphere ) {\n\n\t\tvar planes = this.planes;\n\t\tvar center = sphere.center;\n\t\tvar negRadius = - sphere.radius;\n\n\t\tfor ( var i = 0; i < 6; i ++ ) {\n\n\t\t\tvar distance = planes[ i ].distanceToPoint( center );\n\n\t\t\tif ( distance < negRadius ) {\n\n\t\t\t\treturn false;\n\n\t\t\t}\n\n\t\t}\n\n\t\treturn true;\n\n\t},\n\n\tintersectsBox: function () {\n\n\t\tvar p1 = new Vector3(),\n\t\t\tp2 = new Vector3();\n\n\t\treturn function intersectsBox( box ) {\n\n\t\t\tvar planes = this.planes;\n\n\t\t\tfor ( var i = 0; i < 6 ; i ++ ) {\n\n\t\t\t\tvar plane = planes[ i ];\n\n\t\t\t\tp1.x = plane.normal.x > 0 ? box.min.x : box.max.x;\n\t\t\t\tp2.x = plane.normal.x > 0 ? box.max.x : box.min.x;\n\t\t\t\tp1.y = plane.normal.y > 0 ? box.min.y : box.max.y;\n\t\t\t\tp2.y = plane.normal.y > 0 ? box.max.y : box.min.y;\n\t\t\t\tp1.z = plane.normal.z > 0 ? box.min.z : box.max.z;\n\t\t\t\tp2.z = plane.normal.z > 0 ? box.max.z : box.min.z;\n\n\t\t\t\tvar d1 = plane.distanceToPoint( p1 );\n\t\t\t\tvar d2 = plane.distanceToPoint( p2 );\n\n\t\t\t\t// if both outside plane, no intersection\n\n\t\t\t\tif ( d1 < 0 && d2 < 0 ) {\n\n\t\t\t\t\treturn false;\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t\treturn true;\n\n\t\t};\n\n\t}(),\n\n\n\tcontainsPoint: function ( point ) {\n\n\t\tvar planes = this.planes;\n\n\t\tfor ( var i = 0; i < 6; i ++ ) {\n\n\t\t\tif ( planes[ i ].distanceToPoint( point ) < 0 ) {\n\n\t\t\t\treturn false;\n\n\t\t\t}\n\n\t\t}\n\n\t\treturn true;\n\n\t}\n\n};\n\n\nexport { Frustum };\n","/**\n * @author alteredq / http://alteredqualia.com/\n * @author mrdoob / http://mrdoob.com/\n */\n\nimport { FrontSide, BackSide, DoubleSide, RGBAFormat, NearestFilter, PCFShadowMap, RGBADepthPacking } from '../../constants';\nimport { WebGLRenderTarget } from '../WebGLRenderTarget';\nimport { ShaderMaterial } from '../../materials/ShaderMaterial';\nimport { UniformsUtils } from '../shaders/UniformsUtils';\nimport { ShaderLib } from '../shaders/ShaderLib';\nimport { MeshDepthMaterial } from '../../materials/MeshDepthMaterial';\nimport { Vector4 } from '../../math/Vector4';\nimport { Vector3 } from '../../math/Vector3';\nimport { Vector2 } from '../../math/Vector2';\nimport { Matrix4 } from '../../math/Matrix4';\nimport { Frustum } from '../../math/Frustum';\n\nfunction WebGLShadowMap( _renderer, _lights, _objects, capabilities ) {\n\n\tvar _gl = _renderer.context,\n\t_state = _renderer.state,\n\t_frustum = new Frustum(),\n\t_projScreenMatrix = new Matrix4(),\n\n\t_lightShadows = _lights.shadows,\n\n\t_shadowMapSize = new Vector2(),\n\t_maxShadowMapSize = new Vector2( capabilities.maxTextureSize, capabilities.maxTextureSize ),\n\n\t_lookTarget = new Vector3(),\n\t_lightPositionWorld = new Vector3(),\n\n\t_renderList = [],\n\n\t_MorphingFlag = 1,\n\t_SkinningFlag = 2,\n\n\t_NumberOfMaterialVariants = ( _MorphingFlag | _SkinningFlag ) + 1,\n\n\t_depthMaterials = new Array( _NumberOfMaterialVariants ),\n\t_distanceMaterials = new Array( _NumberOfMaterialVariants ),\n\n\t_materialCache = {};\n\n\tvar cubeDirections = [\n\t\tnew Vector3( 1, 0, 0 ), new Vector3( - 1, 0, 0 ), new Vector3( 0, 0, 1 ),\n\t\tnew Vector3( 0, 0, - 1 ), new Vector3( 0, 1, 0 ), new Vector3( 0, - 1, 0 )\n\t];\n\n\tvar cubeUps = [\n\t\tnew Vector3( 0, 1, 0 ), new Vector3( 0, 1, 0 ), new Vector3( 0, 1, 0 ),\n\t\tnew Vector3( 0, 1, 0 ), new Vector3( 0, 0, 1 ),\tnew Vector3( 0, 0, - 1 )\n\t];\n\n\tvar cube2DViewPorts = [\n\t\tnew Vector4(), new Vector4(), new Vector4(),\n\t\tnew Vector4(), new Vector4(), new Vector4()\n\t];\n\n\t// init\n\n\tvar depthMaterialTemplate = new MeshDepthMaterial();\n\tdepthMaterialTemplate.depthPacking = RGBADepthPacking;\n\tdepthMaterialTemplate.clipping = true;\n\n\tvar distanceShader = ShaderLib[ \"distanceRGBA\" ];\n\tvar distanceUniforms = UniformsUtils.clone( distanceShader.uniforms );\n\n\tfor ( var i = 0; i !== _NumberOfMaterialVariants; ++ i ) {\n\n\t\tvar useMorphing = ( i & _MorphingFlag ) !== 0;\n\t\tvar useSkinning = ( i & _SkinningFlag ) !== 0;\n\n\t\tvar depthMaterial = depthMaterialTemplate.clone();\n\t\tdepthMaterial.morphTargets = useMorphing;\n\t\tdepthMaterial.skinning = useSkinning;\n\n\t\t_depthMaterials[ i ] = depthMaterial;\n\n\t\tvar distanceMaterial = new ShaderMaterial( {\n\t\t\tdefines: {\n\t\t\t\t'USE_SHADOWMAP': ''\n\t\t\t},\n\t\t\tuniforms: distanceUniforms,\n\t\t\tvertexShader: distanceShader.vertexShader,\n\t\t\tfragmentShader: distanceShader.fragmentShader,\n\t\t\tmorphTargets: useMorphing,\n\t\t\tskinning: useSkinning,\n\t\t\tclipping: true\n\t\t} );\n\n\t\t_distanceMaterials[ i ] = distanceMaterial;\n\n\t}\n\n\t//\n\n\tvar scope = this;\n\n\tthis.enabled = false;\n\n\tthis.autoUpdate = true;\n\tthis.needsUpdate = false;\n\n\tthis.type = PCFShadowMap;\n\n\tthis.renderReverseSided = true;\n\tthis.renderSingleSided = true;\n\n\tthis.render = function ( scene, camera ) {\n\n\t\tif ( scope.enabled === false ) return;\n\t\tif ( scope.autoUpdate === false && scope.needsUpdate === false ) return;\n\n\t\tif ( _lightShadows.length === 0 ) return;\n\n\t\t// Set GL state for depth map.\n\t\t_state.buffers.color.setClear( 1, 1, 1, 1 );\n\t\t_state.disable( _gl.BLEND );\n\t\t_state.setDepthTest( true );\n\t\t_state.setScissorTest( false );\n\n\t\t// render depth map\n\n\t\tvar faceCount, isPointLight;\n\n\t\tfor ( var i = 0, il = _lightShadows.length; i < il; i ++ ) {\n\n\t\t\tvar light = _lightShadows[ i ];\n\t\t\tvar shadow = light.shadow;\n\n\t\t\tif ( shadow === undefined ) {\n\n\t\t\t\tconsole.warn( 'THREE.WebGLShadowMap:', light, 'has no shadow.' );\n\t\t\t\tcontinue;\n\n\t\t\t}\n\n\t\t\tvar shadowCamera = shadow.camera;\n\n\t\t\t_shadowMapSize.copy( shadow.mapSize );\n\t\t\t_shadowMapSize.min( _maxShadowMapSize );\n\n\t\t\tif ( (light && light.isPointLight) ) {\n\n\t\t\t\tfaceCount = 6;\n\t\t\t\tisPointLight = true;\n\n\t\t\t\tvar vpWidth = _shadowMapSize.x;\n\t\t\t\tvar vpHeight = _shadowMapSize.y;\n\n\t\t\t\t// These viewports map a cube-map onto a 2D texture with the\n\t\t\t\t// following orientation:\n\t\t\t\t//\n\t\t\t\t// xzXZ\n\t\t\t\t// y Y\n\t\t\t\t//\n\t\t\t\t// X - Positive x direction\n\t\t\t\t// x - Negative x direction\n\t\t\t\t// Y - Positive y direction\n\t\t\t\t// y - Negative y direction\n\t\t\t\t// Z - Positive z direction\n\t\t\t\t// z - Negative z direction\n\n\t\t\t\t// positive X\n\t\t\t\tcube2DViewPorts[ 0 ].set( vpWidth * 2, vpHeight, vpWidth, vpHeight );\n\t\t\t\t// negative X\n\t\t\t\tcube2DViewPorts[ 1 ].set( 0, vpHeight, vpWidth, vpHeight );\n\t\t\t\t// positive Z\n\t\t\t\tcube2DViewPorts[ 2 ].set( vpWidth * 3, vpHeight, vpWidth, vpHeight );\n\t\t\t\t// negative Z\n\t\t\t\tcube2DViewPorts[ 3 ].set( vpWidth, vpHeight, vpWidth, vpHeight );\n\t\t\t\t// positive Y\n\t\t\t\tcube2DViewPorts[ 4 ].set( vpWidth * 3, 0, vpWidth, vpHeight );\n\t\t\t\t// negative Y\n\t\t\t\tcube2DViewPorts[ 5 ].set( vpWidth, 0, vpWidth, vpHeight );\n\n\t\t\t\t_shadowMapSize.x *= 4.0;\n\t\t\t\t_shadowMapSize.y *= 2.0;\n\n\t\t\t} else {\n\n\t\t\t\tfaceCount = 1;\n\t\t\t\tisPointLight = false;\n\n\t\t\t}\n\n\t\t\tif ( shadow.map === null ) {\n\n\t\t\t\tvar pars = { minFilter: NearestFilter, magFilter: NearestFilter, format: RGBAFormat };\n\n\t\t\t\tshadow.map = new WebGLRenderTarget( _shadowMapSize.x, _shadowMapSize.y, pars );\n\n\t\t\t\tshadowCamera.updateProjectionMatrix();\n\n\t\t\t}\n\n\t\t\tif ( (shadow && shadow.isSpotLightShadow) ) {\n\n\t\t\t\tshadow.update( light );\n\n\t\t\t}\n\n\t\t\tvar shadowMap = shadow.map;\n\t\t\tvar shadowMatrix = shadow.matrix;\n\n\t\t\t_lightPositionWorld.setFromMatrixPosition( light.matrixWorld );\n\t\t\tshadowCamera.position.copy( _lightPositionWorld );\n\n\t\t\t_renderer.setRenderTarget( shadowMap );\n\t\t\t_renderer.clear();\n\n\t\t\t// render shadow map for each cube face (if omni-directional) or\n\t\t\t// run a single pass if not\n\n\t\t\tfor ( var face = 0; face < faceCount; face ++ ) {\n\n\t\t\t\tif ( isPointLight ) {\n\n\t\t\t\t\t_lookTarget.copy( shadowCamera.position );\n\t\t\t\t\t_lookTarget.add( cubeDirections[ face ] );\n\t\t\t\t\tshadowCamera.up.copy( cubeUps[ face ] );\n\t\t\t\t\tshadowCamera.lookAt( _lookTarget );\n\n\t\t\t\t\tvar vpDimensions = cube2DViewPorts[ face ];\n\t\t\t\t\t_state.viewport( vpDimensions );\n\n\t\t\t\t} else {\n\n\t\t\t\t\t_lookTarget.setFromMatrixPosition( light.target.matrixWorld );\n\t\t\t\t\tshadowCamera.lookAt( _lookTarget );\n\n\t\t\t\t}\n\n\t\t\t\tshadowCamera.updateMatrixWorld();\n\t\t\t\tshadowCamera.matrixWorldInverse.getInverse( shadowCamera.matrixWorld );\n\n\t\t\t\t// compute shadow matrix\n\n\t\t\t\tshadowMatrix.set(\n\t\t\t\t\t0.5, 0.0, 0.0, 0.5,\n\t\t\t\t\t0.0, 0.5, 0.0, 0.5,\n\t\t\t\t\t0.0, 0.0, 0.5, 0.5,\n\t\t\t\t\t0.0, 0.0, 0.0, 1.0\n\t\t\t\t);\n\n\t\t\t\tshadowMatrix.multiply( shadowCamera.projectionMatrix );\n\t\t\t\tshadowMatrix.multiply( shadowCamera.matrixWorldInverse );\n\n\t\t\t\t// update camera matrices and frustum\n\n\t\t\t\t_projScreenMatrix.multiplyMatrices( shadowCamera.projectionMatrix, shadowCamera.matrixWorldInverse );\n\t\t\t\t_frustum.setFromMatrix( _projScreenMatrix );\n\n\t\t\t\t// set object matrices & frustum culling\n\n\t\t\t\t_renderList.length = 0;\n\n\t\t\t\tprojectObject( scene, camera, shadowCamera );\n\n\t\t\t\t// render shadow map\n\t\t\t\t// render regular objects\n\n\t\t\t\tfor ( var j = 0, jl = _renderList.length; j < jl; j ++ ) {\n\n\t\t\t\t\tvar object = _renderList[ j ];\n\t\t\t\t\tvar geometry = _objects.update( object );\n\t\t\t\t\tvar material = object.material;\n\n\t\t\t\t\tif ( (material && material.isMultiMaterial) ) {\n\n\t\t\t\t\t\tvar groups = geometry.groups;\n\t\t\t\t\t\tvar materials = material.materials;\n\n\t\t\t\t\t\tfor ( var k = 0, kl = groups.length; k < kl; k ++ ) {\n\n\t\t\t\t\t\t\tvar group = groups[ k ];\n\t\t\t\t\t\t\tvar groupMaterial = materials[ group.materialIndex ];\n\n\t\t\t\t\t\t\tif ( groupMaterial.visible === true ) {\n\n\t\t\t\t\t\t\t\tvar depthMaterial = getDepthMaterial( object, groupMaterial, isPointLight, _lightPositionWorld );\n\t\t\t\t\t\t\t\t_renderer.renderBufferDirect( shadowCamera, null, geometry, depthMaterial, object, group );\n\n\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t}\n\n\t\t\t\t\t} else {\n\n\t\t\t\t\t\tvar depthMaterial = getDepthMaterial( object, material, isPointLight, _lightPositionWorld );\n\t\t\t\t\t\t_renderer.renderBufferDirect( shadowCamera, null, geometry, depthMaterial, object, null );\n\n\t\t\t\t\t}\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t}\n\n\t\t// Restore GL state.\n\t\tvar clearColor = _renderer.getClearColor(),\n\t\tclearAlpha = _renderer.getClearAlpha();\n\t\t_renderer.setClearColor( clearColor, clearAlpha );\n\n\t\tscope.needsUpdate = false;\n\n\t};\n\n\tfunction getDepthMaterial( object, material, isPointLight, lightPositionWorld ) {\n\n\t\tvar geometry = object.geometry;\n\n\t\tvar result = null;\n\n\t\tvar materialVariants = _depthMaterials;\n\t\tvar customMaterial = object.customDepthMaterial;\n\n\t\tif ( isPointLight ) {\n\n\t\t\tmaterialVariants = _distanceMaterials;\n\t\t\tcustomMaterial = object.customDistanceMaterial;\n\n\t\t}\n\n\t\tif ( ! customMaterial ) {\n\n\t\t\tvar useMorphing = false;\n\n\t\t\tif ( material.morphTargets ) {\n\n\t\t\t\tif ( (geometry && geometry.isBufferGeometry) ) {\n\n\t\t\t\t\tuseMorphing = geometry.morphAttributes && geometry.morphAttributes.position && geometry.morphAttributes.position.length > 0;\n\n\t\t\t\t} else if ( (geometry && geometry.isGeometry) ) {\n\n\t\t\t\t\tuseMorphing = geometry.morphTargets && geometry.morphTargets.length > 0;\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t\tvar useSkinning = object.isSkinnedMesh && material.skinning;\n\n\t\t\tvar variantIndex = 0;\n\n\t\t\tif ( useMorphing ) variantIndex |= _MorphingFlag;\n\t\t\tif ( useSkinning ) variantIndex |= _SkinningFlag;\n\n\t\t\tresult = materialVariants[ variantIndex ];\n\n\t\t} else {\n\n\t\t\tresult = customMaterial;\n\n\t\t}\n\n\t\tif ( _renderer.localClippingEnabled &&\n\t\t\t material.clipShadows === true &&\n\t\t\t\tmaterial.clippingPlanes.length !== 0 ) {\n\n\t\t\t// in this case we need a unique material instance reflecting the\n\t\t\t// appropriate state\n\n\t\t\tvar keyA = result.uuid, keyB = material.uuid;\n\n\t\t\tvar materialsForVariant = _materialCache[ keyA ];\n\n\t\t\tif ( materialsForVariant === undefined ) {\n\n\t\t\t\tmaterialsForVariant = {};\n\t\t\t\t_materialCache[ keyA ] = materialsForVariant;\n\n\t\t\t}\n\n\t\t\tvar cachedMaterial = materialsForVariant[ keyB ];\n\n\t\t\tif ( cachedMaterial === undefined ) {\n\n\t\t\t\tcachedMaterial = result.clone();\n\t\t\t\tmaterialsForVariant[ keyB ] = cachedMaterial;\n\n\t\t\t}\n\n\t\t\tresult = cachedMaterial;\n\n\t\t}\n\n\t\tresult.visible = material.visible;\n\t\tresult.wireframe = material.wireframe;\n\n\t\tvar side = material.side;\n\n\t\tif ( scope.renderSingleSided && side == DoubleSide ) {\n\n\t\t\tside = FrontSide;\n\n\t\t}\n\n\t\tif ( scope.renderReverseSided ) {\n\n\t\t\tif ( side === FrontSide ) side = BackSide;\n\t\t\telse if ( side === BackSide ) side = FrontSide;\n\n\t\t}\n\n\t\tresult.side = side;\n\n\t\tresult.clipShadows = material.clipShadows;\n\t\tresult.clippingPlanes = material.clippingPlanes;\n\n\t\tresult.wireframeLinewidth = material.wireframeLinewidth;\n\t\tresult.linewidth = material.linewidth;\n\n\t\tif ( isPointLight && result.uniforms.lightPos !== undefined ) {\n\n\t\t\tresult.uniforms.lightPos.value.copy( lightPositionWorld );\n\n\t\t}\n\n\t\treturn result;\n\n\t}\n\n\tfunction projectObject( object, camera, shadowCamera ) {\n\n\t\tif ( object.visible === false ) return;\n\n\t\tvar visible = ( object.layers.mask & camera.layers.mask ) !== 0;\n\n\t\tif ( visible && ( object.isMesh || object.isLine || object.isPoints ) ) {\n\n\t\t\tif ( object.castShadow && ( object.frustumCulled === false || _frustum.intersectsObject( object ) === true ) ) {\n\n\t\t\t\tvar material = object.material;\n\n\t\t\t\tif ( material.visible === true ) {\n\n\t\t\t\t\tobject.modelViewMatrix.multiplyMatrices( shadowCamera.matrixWorldInverse, object.matrixWorld );\n\t\t\t\t\t_renderList.push( object );\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t}\n\n\t\tvar children = object.children;\n\n\t\tfor ( var i = 0, l = children.length; i < l; i ++ ) {\n\n\t\t\tprojectObject( children[ i ], camera, shadowCamera );\n\n\t\t}\n\n\t}\n\n}\n\n\nexport { WebGLShadowMap };\n","import { Vector3 } from './Vector3';\n\n/**\n * @author bhouston / http://clara.io\n */\n\nfunction Ray( origin, direction ) {\n\n\tthis.origin = ( origin !== undefined ) ? origin : new Vector3();\n\tthis.direction = ( direction !== undefined ) ? direction : new Vector3();\n\n}\n\nRay.prototype = {\n\n\tconstructor: Ray,\n\n\tset: function ( origin, direction ) {\n\n\t\tthis.origin.copy( origin );\n\t\tthis.direction.copy( direction );\n\n\t\treturn this;\n\n\t},\n\n\tclone: function () {\n\n\t\treturn new this.constructor().copy( this );\n\n\t},\n\n\tcopy: function ( ray ) {\n\n\t\tthis.origin.copy( ray.origin );\n\t\tthis.direction.copy( ray.direction );\n\n\t\treturn this;\n\n\t},\n\n\tat: function ( t, optionalTarget ) {\n\n\t\tvar result = optionalTarget || new Vector3();\n\n\t\treturn result.copy( this.direction ).multiplyScalar( t ).add( this.origin );\n\n\t},\n\n\tlookAt: function ( v ) {\n\n\t\tthis.direction.copy( v ).sub( this.origin ).normalize();\n\n\t\treturn this;\n\n\t},\n\n\trecast: function () {\n\n\t\tvar v1 = new Vector3();\n\n\t\treturn function recast( t ) {\n\n\t\t\tthis.origin.copy( this.at( t, v1 ) );\n\n\t\t\treturn this;\n\n\t\t};\n\n\t}(),\n\n\tclosestPointToPoint: function ( point, optionalTarget ) {\n\n\t\tvar result = optionalTarget || new Vector3();\n\t\tresult.subVectors( point, this.origin );\n\t\tvar directionDistance = result.dot( this.direction );\n\n\t\tif ( directionDistance < 0 ) {\n\n\t\t\treturn result.copy( this.origin );\n\n\t\t}\n\n\t\treturn result.copy( this.direction ).multiplyScalar( directionDistance ).add( this.origin );\n\n\t},\n\n\tdistanceToPoint: function ( point ) {\n\n\t\treturn Math.sqrt( this.distanceSqToPoint( point ) );\n\n\t},\n\n\tdistanceSqToPoint: function () {\n\n\t\tvar v1 = new Vector3();\n\n\t\treturn function distanceSqToPoint( point ) {\n\n\t\t\tvar directionDistance = v1.subVectors( point, this.origin ).dot( this.direction );\n\n\t\t\t// point behind the ray\n\n\t\t\tif ( directionDistance < 0 ) {\n\n\t\t\t\treturn this.origin.distanceToSquared( point );\n\n\t\t\t}\n\n\t\t\tv1.copy( this.direction ).multiplyScalar( directionDistance ).add( this.origin );\n\n\t\t\treturn v1.distanceToSquared( point );\n\n\t\t};\n\n\t}(),\n\n\tdistanceSqToSegment: function () {\n\n\t\tvar segCenter = new Vector3();\n\t\tvar segDir = new Vector3();\n\t\tvar diff = new Vector3();\n\n\t\treturn function distanceSqToSegment( v0, v1, optionalPointOnRay, optionalPointOnSegment ) {\n\n\t\t\t// from http://www.geometrictools.com/GTEngine/Include/Mathematics/GteDistRaySegment.h\n\t\t\t// It returns the min distance between the ray and the segment\n\t\t\t// defined by v0 and v1\n\t\t\t// It can also set two optional targets :\n\t\t\t// - The closest point on the ray\n\t\t\t// - The closest point on the segment\n\n\t\t\tsegCenter.copy( v0 ).add( v1 ).multiplyScalar( 0.5 );\n\t\t\tsegDir.copy( v1 ).sub( v0 ).normalize();\n\t\t\tdiff.copy( this.origin ).sub( segCenter );\n\n\t\t\tvar segExtent = v0.distanceTo( v1 ) * 0.5;\n\t\t\tvar a01 = - this.direction.dot( segDir );\n\t\t\tvar b0 = diff.dot( this.direction );\n\t\t\tvar b1 = - diff.dot( segDir );\n\t\t\tvar c = diff.lengthSq();\n\t\t\tvar det = Math.abs( 1 - a01 * a01 );\n\t\t\tvar s0, s1, sqrDist, extDet;\n\n\t\t\tif ( det > 0 ) {\n\n\t\t\t\t// The ray and segment are not parallel.\n\n\t\t\t\ts0 = a01 * b1 - b0;\n\t\t\t\ts1 = a01 * b0 - b1;\n\t\t\t\textDet = segExtent * det;\n\n\t\t\t\tif ( s0 >= 0 ) {\n\n\t\t\t\t\tif ( s1 >= - extDet ) {\n\n\t\t\t\t\t\tif ( s1 <= extDet ) {\n\n\t\t\t\t\t\t\t// region 0\n\t\t\t\t\t\t\t// Minimum at interior points of ray and segment.\n\n\t\t\t\t\t\t\tvar invDet = 1 / det;\n\t\t\t\t\t\t\ts0 *= invDet;\n\t\t\t\t\t\t\ts1 *= invDet;\n\t\t\t\t\t\t\tsqrDist = s0 * ( s0 + a01 * s1 + 2 * b0 ) + s1 * ( a01 * s0 + s1 + 2 * b1 ) + c;\n\n\t\t\t\t\t\t} else {\n\n\t\t\t\t\t\t\t// region 1\n\n\t\t\t\t\t\t\ts1 = segExtent;\n\t\t\t\t\t\t\ts0 = Math.max( 0, - ( a01 * s1 + b0 ) );\n\t\t\t\t\t\t\tsqrDist = - s0 * s0 + s1 * ( s1 + 2 * b1 ) + c;\n\n\t\t\t\t\t\t}\n\n\t\t\t\t\t} else {\n\n\t\t\t\t\t\t// region 5\n\n\t\t\t\t\t\ts1 = - segExtent;\n\t\t\t\t\t\ts0 = Math.max( 0, - ( a01 * s1 + b0 ) );\n\t\t\t\t\t\tsqrDist = - s0 * s0 + s1 * ( s1 + 2 * b1 ) + c;\n\n\t\t\t\t\t}\n\n\t\t\t\t} else {\n\n\t\t\t\t\tif ( s1 <= - extDet ) {\n\n\t\t\t\t\t\t// region 4\n\n\t\t\t\t\t\ts0 = Math.max( 0, - ( - a01 * segExtent + b0 ) );\n\t\t\t\t\t\ts1 = ( s0 > 0 ) ? - segExtent : Math.min( Math.max( - segExtent, - b1 ), segExtent );\n\t\t\t\t\t\tsqrDist = - s0 * s0 + s1 * ( s1 + 2 * b1 ) + c;\n\n\t\t\t\t\t} else if ( s1 <= extDet ) {\n\n\t\t\t\t\t\t// region 3\n\n\t\t\t\t\t\ts0 = 0;\n\t\t\t\t\t\ts1 = Math.min( Math.max( - segExtent, - b1 ), segExtent );\n\t\t\t\t\t\tsqrDist = s1 * ( s1 + 2 * b1 ) + c;\n\n\t\t\t\t\t} else {\n\n\t\t\t\t\t\t// region 2\n\n\t\t\t\t\t\ts0 = Math.max( 0, - ( a01 * segExtent + b0 ) );\n\t\t\t\t\t\ts1 = ( s0 > 0 ) ? segExtent : Math.min( Math.max( - segExtent, - b1 ), segExtent );\n\t\t\t\t\t\tsqrDist = - s0 * s0 + s1 * ( s1 + 2 * b1 ) + c;\n\n\t\t\t\t\t}\n\n\t\t\t\t}\n\n\t\t\t} else {\n\n\t\t\t\t// Ray and segment are parallel.\n\n\t\t\t\ts1 = ( a01 > 0 ) ? - segExtent : segExtent;\n\t\t\t\ts0 = Math.max( 0, - ( a01 * s1 + b0 ) );\n\t\t\t\tsqrDist = - s0 * s0 + s1 * ( s1 + 2 * b1 ) + c;\n\n\t\t\t}\n\n\t\t\tif ( optionalPointOnRay ) {\n\n\t\t\t\toptionalPointOnRay.copy( this.direction ).multiplyScalar( s0 ).add( this.origin );\n\n\t\t\t}\n\n\t\t\tif ( optionalPointOnSegment ) {\n\n\t\t\t\toptionalPointOnSegment.copy( segDir ).multiplyScalar( s1 ).add( segCenter );\n\n\t\t\t}\n\n\t\t\treturn sqrDist;\n\n\t\t};\n\n\t}(),\n\n\tintersectSphere: function () {\n\n\t\tvar v1 = new Vector3();\n\n\t\treturn function intersectSphere( sphere, optionalTarget ) {\n\n\t\t\tv1.subVectors( sphere.center, this.origin );\n\t\t\tvar tca = v1.dot( this.direction );\n\t\t\tvar d2 = v1.dot( v1 ) - tca * tca;\n\t\t\tvar radius2 = sphere.radius * sphere.radius;\n\n\t\t\tif ( d2 > radius2 ) return null;\n\n\t\t\tvar thc = Math.sqrt( radius2 - d2 );\n\n\t\t\t// t0 = first intersect point - entrance on front of sphere\n\t\t\tvar t0 = tca - thc;\n\n\t\t\t// t1 = second intersect point - exit point on back of sphere\n\t\t\tvar t1 = tca + thc;\n\n\t\t\t// test to see if both t0 and t1 are behind the ray - if so, return null\n\t\t\tif ( t0 < 0 && t1 < 0 ) return null;\n\n\t\t\t// test to see if t0 is behind the ray:\n\t\t\t// if it is, the ray is inside the sphere, so return the second exit point scaled by t1,\n\t\t\t// in order to always return an intersect point that is in front of the ray.\n\t\t\tif ( t0 < 0 ) return this.at( t1, optionalTarget );\n\n\t\t\t// else t0 is in front of the ray, so return the first collision point scaled by t0\n\t\t\treturn this.at( t0, optionalTarget );\n\n\t\t};\n\n\t}(),\n\n\tintersectsSphere: function ( sphere ) {\n\n\t\treturn this.distanceToPoint( sphere.center ) <= sphere.radius;\n\n\t},\n\n\tdistanceToPlane: function ( plane ) {\n\n\t\tvar denominator = plane.normal.dot( this.direction );\n\n\t\tif ( denominator === 0 ) {\n\n\t\t\t// line is coplanar, return origin\n\t\t\tif ( plane.distanceToPoint( this.origin ) === 0 ) {\n\n\t\t\t\treturn 0;\n\n\t\t\t}\n\n\t\t\t// Null is preferable to undefined since undefined means.... it is undefined\n\n\t\t\treturn null;\n\n\t\t}\n\n\t\tvar t = - ( this.origin.dot( plane.normal ) + plane.constant ) / denominator;\n\n\t\t// Return if the ray never intersects the plane\n\n\t\treturn t >= 0 ? t : null;\n\n\t},\n\n\tintersectPlane: function ( plane, optionalTarget ) {\n\n\t\tvar t = this.distanceToPlane( plane );\n\n\t\tif ( t === null ) {\n\n\t\t\treturn null;\n\n\t\t}\n\n\t\treturn this.at( t, optionalTarget );\n\n\t},\n\n\n\n\tintersectsPlane: function ( plane ) {\n\n\t\t// check if the ray lies on the plane first\n\n\t\tvar distToPoint = plane.distanceToPoint( this.origin );\n\n\t\tif ( distToPoint === 0 ) {\n\n\t\t\treturn true;\n\n\t\t}\n\n\t\tvar denominator = plane.normal.dot( this.direction );\n\n\t\tif ( denominator * distToPoint < 0 ) {\n\n\t\t\treturn true;\n\n\t\t}\n\n\t\t// ray origin is behind the plane (and is pointing behind it)\n\n\t\treturn false;\n\n\t},\n\n\tintersectBox: function ( box, optionalTarget ) {\n\n\t\tvar tmin, tmax, tymin, tymax, tzmin, tzmax;\n\n\t\tvar invdirx = 1 / this.direction.x,\n\t\t\tinvdiry = 1 / this.direction.y,\n\t\t\tinvdirz = 1 / this.direction.z;\n\n\t\tvar origin = this.origin;\n\n\t\tif ( invdirx >= 0 ) {\n\n\t\t\ttmin = ( box.min.x - origin.x ) * invdirx;\n\t\t\ttmax = ( box.max.x - origin.x ) * invdirx;\n\n\t\t} else {\n\n\t\t\ttmin = ( box.max.x - origin.x ) * invdirx;\n\t\t\ttmax = ( box.min.x - origin.x ) * invdirx;\n\n\t\t}\n\n\t\tif ( invdiry >= 0 ) {\n\n\t\t\ttymin = ( box.min.y - origin.y ) * invdiry;\n\t\t\ttymax = ( box.max.y - origin.y ) * invdiry;\n\n\t\t} else {\n\n\t\t\ttymin = ( box.max.y - origin.y ) * invdiry;\n\t\t\ttymax = ( box.min.y - origin.y ) * invdiry;\n\n\t\t}\n\n\t\tif ( ( tmin > tymax ) || ( tymin > tmax ) ) return null;\n\n\t\t// These lines also handle the case where tmin or tmax is NaN\n\t\t// (result of 0 * Infinity). x !== x returns true if x is NaN\n\n\t\tif ( tymin > tmin || tmin !== tmin ) tmin = tymin;\n\n\t\tif ( tymax < tmax || tmax !== tmax ) tmax = tymax;\n\n\t\tif ( invdirz >= 0 ) {\n\n\t\t\ttzmin = ( box.min.z - origin.z ) * invdirz;\n\t\t\ttzmax = ( box.max.z - origin.z ) * invdirz;\n\n\t\t} else {\n\n\t\t\ttzmin = ( box.max.z - origin.z ) * invdirz;\n\t\t\ttzmax = ( box.min.z - origin.z ) * invdirz;\n\n\t\t}\n\n\t\tif ( ( tmin > tzmax ) || ( tzmin > tmax ) ) return null;\n\n\t\tif ( tzmin > tmin || tmin !== tmin ) tmin = tzmin;\n\n\t\tif ( tzmax < tmax || tmax !== tmax ) tmax = tzmax;\n\n\t\t//return point closest to the ray (positive side)\n\n\t\tif ( tmax < 0 ) return null;\n\n\t\treturn this.at( tmin >= 0 ? tmin : tmax, optionalTarget );\n\n\t},\n\n\tintersectsBox: ( function () {\n\n\t\tvar v = new Vector3();\n\n\t\treturn function intersectsBox( box ) {\n\n\t\t\treturn this.intersectBox( box, v ) !== null;\n\n\t\t};\n\n\t} )(),\n\n\tintersectTriangle: function () {\n\n\t\t// Compute the offset origin, edges, and normal.\n\t\tvar diff = new Vector3();\n\t\tvar edge1 = new Vector3();\n\t\tvar edge2 = new Vector3();\n\t\tvar normal = new Vector3();\n\n\t\treturn function intersectTriangle( a, b, c, backfaceCulling, optionalTarget ) {\n\n\t\t\t// from http://www.geometrictools.com/GTEngine/Include/Mathematics/GteIntrRay3Triangle3.h\n\n\t\t\tedge1.subVectors( b, a );\n\t\t\tedge2.subVectors( c, a );\n\t\t\tnormal.crossVectors( edge1, edge2 );\n\n\t\t\t// Solve Q + t*D = b1*E1 + b2*E2 (Q = kDiff, D = ray direction,\n\t\t\t// E1 = kEdge1, E2 = kEdge2, N = Cross(E1,E2)) by\n\t\t\t// |Dot(D,N)|*b1 = sign(Dot(D,N))*Dot(D,Cross(Q,E2))\n\t\t\t// |Dot(D,N)|*b2 = sign(Dot(D,N))*Dot(D,Cross(E1,Q))\n\t\t\t// |Dot(D,N)|*t = -sign(Dot(D,N))*Dot(Q,N)\n\t\t\tvar DdN = this.direction.dot( normal );\n\t\t\tvar sign;\n\n\t\t\tif ( DdN > 0 ) {\n\n\t\t\t\tif ( backfaceCulling ) return null;\n\t\t\t\tsign = 1;\n\n\t\t\t} else if ( DdN < 0 ) {\n\n\t\t\t\tsign = - 1;\n\t\t\t\tDdN = - DdN;\n\n\t\t\t} else {\n\n\t\t\t\treturn null;\n\n\t\t\t}\n\n\t\t\tdiff.subVectors( this.origin, a );\n\t\t\tvar DdQxE2 = sign * this.direction.dot( edge2.crossVectors( diff, edge2 ) );\n\n\t\t\t// b1 < 0, no intersection\n\t\t\tif ( DdQxE2 < 0 ) {\n\n\t\t\t\treturn null;\n\n\t\t\t}\n\n\t\t\tvar DdE1xQ = sign * this.direction.dot( edge1.cross( diff ) );\n\n\t\t\t// b2 < 0, no intersection\n\t\t\tif ( DdE1xQ < 0 ) {\n\n\t\t\t\treturn null;\n\n\t\t\t}\n\n\t\t\t// b1+b2 > 1, no intersection\n\t\t\tif ( DdQxE2 + DdE1xQ > DdN ) {\n\n\t\t\t\treturn null;\n\n\t\t\t}\n\n\t\t\t// Line intersects triangle, check if ray does.\n\t\t\tvar QdN = - sign * diff.dot( normal );\n\n\t\t\t// t < 0, no intersection\n\t\t\tif ( QdN < 0 ) {\n\n\t\t\t\treturn null;\n\n\t\t\t}\n\n\t\t\t// Ray intersects triangle.\n\t\t\treturn this.at( QdN / DdN, optionalTarget );\n\n\t\t};\n\n\t}(),\n\n\tapplyMatrix4: function ( matrix4 ) {\n\n\t\tthis.direction.add( this.origin ).applyMatrix4( matrix4 );\n\t\tthis.origin.applyMatrix4( matrix4 );\n\t\tthis.direction.sub( this.origin );\n\t\tthis.direction.normalize();\n\n\t\treturn this;\n\n\t},\n\n\tequals: function ( ray ) {\n\n\t\treturn ray.origin.equals( this.origin ) && ray.direction.equals( this.direction );\n\n\t}\n\n};\n\n\nexport { Ray };\n","import { Quaternion } from './Quaternion';\nimport { Vector3 } from './Vector3';\nimport { Matrix4 } from './Matrix4';\nimport { _Math } from './Math';\n\n/**\n * @author mrdoob / http://mrdoob.com/\n * @author WestLangley / http://github.com/WestLangley\n * @author bhouston / http://clara.io\n */\n\nfunction Euler( x, y, z, order ) {\n\n\tthis._x = x || 0;\n\tthis._y = y || 0;\n\tthis._z = z || 0;\n\tthis._order = order || Euler.DefaultOrder;\n\n}\n\nEuler.RotationOrders = [ 'XYZ', 'YZX', 'ZXY', 'XZY', 'YXZ', 'ZYX' ];\n\nEuler.DefaultOrder = 'XYZ';\n\nEuler.prototype = {\n\n\tconstructor: Euler,\n\n\tisEuler: true,\n\n\tget x () {\n\n\t\treturn this._x;\n\n\t},\n\n\tset x ( value ) {\n\n\t\tthis._x = value;\n\t\tthis.onChangeCallback();\n\n\t},\n\n\tget y () {\n\n\t\treturn this._y;\n\n\t},\n\n\tset y ( value ) {\n\n\t\tthis._y = value;\n\t\tthis.onChangeCallback();\n\n\t},\n\n\tget z () {\n\n\t\treturn this._z;\n\n\t},\n\n\tset z ( value ) {\n\n\t\tthis._z = value;\n\t\tthis.onChangeCallback();\n\n\t},\n\n\tget order () {\n\n\t\treturn this._order;\n\n\t},\n\n\tset order ( value ) {\n\n\t\tthis._order = value;\n\t\tthis.onChangeCallback();\n\n\t},\n\n\tset: function ( x, y, z, order ) {\n\n\t\tthis._x = x;\n\t\tthis._y = y;\n\t\tthis._z = z;\n\t\tthis._order = order || this._order;\n\n\t\tthis.onChangeCallback();\n\n\t\treturn this;\n\n\t},\n\n\tclone: function () {\n\n\t\treturn new this.constructor( this._x, this._y, this._z, this._order );\n\n\t},\n\n\tcopy: function ( euler ) {\n\n\t\tthis._x = euler._x;\n\t\tthis._y = euler._y;\n\t\tthis._z = euler._z;\n\t\tthis._order = euler._order;\n\n\t\tthis.onChangeCallback();\n\n\t\treturn this;\n\n\t},\n\n\tsetFromRotationMatrix: function ( m, order, update ) {\n\n\t\tvar clamp = _Math.clamp;\n\n\t\t// assumes the upper 3x3 of m is a pure rotation matrix (i.e, unscaled)\n\n\t\tvar te = m.elements;\n\t\tvar m11 = te[ 0 ], m12 = te[ 4 ], m13 = te[ 8 ];\n\t\tvar m21 = te[ 1 ], m22 = te[ 5 ], m23 = te[ 9 ];\n\t\tvar m31 = te[ 2 ], m32 = te[ 6 ], m33 = te[ 10 ];\n\n\t\torder = order || this._order;\n\n\t\tif ( order === 'XYZ' ) {\n\n\t\t\tthis._y = Math.asin( clamp( m13, - 1, 1 ) );\n\n\t\t\tif ( Math.abs( m13 ) < 0.99999 ) {\n\n\t\t\t\tthis._x = Math.atan2( - m23, m33 );\n\t\t\t\tthis._z = Math.atan2( - m12, m11 );\n\n\t\t\t} else {\n\n\t\t\t\tthis._x = Math.atan2( m32, m22 );\n\t\t\t\tthis._z = 0;\n\n\t\t\t}\n\n\t\t} else if ( order === 'YXZ' ) {\n\n\t\t\tthis._x = Math.asin( - clamp( m23, - 1, 1 ) );\n\n\t\t\tif ( Math.abs( m23 ) < 0.99999 ) {\n\n\t\t\t\tthis._y = Math.atan2( m13, m33 );\n\t\t\t\tthis._z = Math.atan2( m21, m22 );\n\n\t\t\t} else {\n\n\t\t\t\tthis._y = Math.atan2( - m31, m11 );\n\t\t\t\tthis._z = 0;\n\n\t\t\t}\n\n\t\t} else if ( order === 'ZXY' ) {\n\n\t\t\tthis._x = Math.asin( clamp( m32, - 1, 1 ) );\n\n\t\t\tif ( Math.abs( m32 ) < 0.99999 ) {\n\n\t\t\t\tthis._y = Math.atan2( - m31, m33 );\n\t\t\t\tthis._z = Math.atan2( - m12, m22 );\n\n\t\t\t} else {\n\n\t\t\t\tthis._y = 0;\n\t\t\t\tthis._z = Math.atan2( m21, m11 );\n\n\t\t\t}\n\n\t\t} else if ( order === 'ZYX' ) {\n\n\t\t\tthis._y = Math.asin( - clamp( m31, - 1, 1 ) );\n\n\t\t\tif ( Math.abs( m31 ) < 0.99999 ) {\n\n\t\t\t\tthis._x = Math.atan2( m32, m33 );\n\t\t\t\tthis._z = Math.atan2( m21, m11 );\n\n\t\t\t} else {\n\n\t\t\t\tthis._x = 0;\n\t\t\t\tthis._z = Math.atan2( - m12, m22 );\n\n\t\t\t}\n\n\t\t} else if ( order === 'YZX' ) {\n\n\t\t\tthis._z = Math.asin( clamp( m21, - 1, 1 ) );\n\n\t\t\tif ( Math.abs( m21 ) < 0.99999 ) {\n\n\t\t\t\tthis._x = Math.atan2( - m23, m22 );\n\t\t\t\tthis._y = Math.atan2( - m31, m11 );\n\n\t\t\t} else {\n\n\t\t\t\tthis._x = 0;\n\t\t\t\tthis._y = Math.atan2( m13, m33 );\n\n\t\t\t}\n\n\t\t} else if ( order === 'XZY' ) {\n\n\t\t\tthis._z = Math.asin( - clamp( m12, - 1, 1 ) );\n\n\t\t\tif ( Math.abs( m12 ) < 0.99999 ) {\n\n\t\t\t\tthis._x = Math.atan2( m32, m22 );\n\t\t\t\tthis._y = Math.atan2( m13, m11 );\n\n\t\t\t} else {\n\n\t\t\t\tthis._x = Math.atan2( - m23, m33 );\n\t\t\t\tthis._y = 0;\n\n\t\t\t}\n\n\t\t} else {\n\n\t\t\tconsole.warn( 'THREE.Euler: .setFromRotationMatrix() given unsupported order: ' + order );\n\n\t\t}\n\n\t\tthis._order = order;\n\n\t\tif ( update !== false ) this.onChangeCallback();\n\n\t\treturn this;\n\n\t},\n\n\tsetFromQuaternion: function () {\n\n\t\tvar matrix;\n\n\t\treturn function setFromQuaternion( q, order, update ) {\n\n\t\t\tif ( matrix === undefined ) matrix = new Matrix4();\n\n\t\t\tmatrix.makeRotationFromQuaternion( q );\n\n\t\t\treturn this.setFromRotationMatrix( matrix, order, update );\n\n\t\t};\n\n\t}(),\n\n\tsetFromVector3: function ( v, order ) {\n\n\t\treturn this.set( v.x, v.y, v.z, order || this._order );\n\n\t},\n\n\treorder: function () {\n\n\t\t// WARNING: this discards revolution information -bhouston\n\n\t\tvar q = new Quaternion();\n\n\t\treturn function reorder( newOrder ) {\n\n\t\t\tq.setFromEuler( this );\n\n\t\t\treturn this.setFromQuaternion( q, newOrder );\n\n\t\t};\n\n\t}(),\n\n\tequals: function ( euler ) {\n\n\t\treturn ( euler._x === this._x ) && ( euler._y === this._y ) && ( euler._z === this._z ) && ( euler._order === this._order );\n\n\t},\n\n\tfromArray: function ( array ) {\n\n\t\tthis._x = array[ 0 ];\n\t\tthis._y = array[ 1 ];\n\t\tthis._z = array[ 2 ];\n\t\tif ( array[ 3 ] !== undefined ) this._order = array[ 3 ];\n\n\t\tthis.onChangeCallback();\n\n\t\treturn this;\n\n\t},\n\n\ttoArray: function ( array, offset ) {\n\n\t\tif ( array === undefined ) array = [];\n\t\tif ( offset === undefined ) offset = 0;\n\n\t\tarray[ offset ] = this._x;\n\t\tarray[ offset + 1 ] = this._y;\n\t\tarray[ offset + 2 ] = this._z;\n\t\tarray[ offset + 3 ] = this._order;\n\n\t\treturn array;\n\n\t},\n\n\ttoVector3: function ( optionalResult ) {\n\n\t\tif ( optionalResult ) {\n\n\t\t\treturn optionalResult.set( this._x, this._y, this._z );\n\n\t\t} else {\n\n\t\t\treturn new Vector3( this._x, this._y, this._z );\n\n\t\t}\n\n\t},\n\n\tonChange: function ( callback ) {\n\n\t\tthis.onChangeCallback = callback;\n\n\t\treturn this;\n\n\t},\n\n\tonChangeCallback: function () {}\n\n};\n\n\nexport { Euler };\n","/**\n * @author mrdoob / http://mrdoob.com/\n */\n\nfunction Layers() {\n\n\tthis.mask = 1;\n\n}\n\nLayers.prototype = {\n\n\tconstructor: Layers,\n\n\tset: function ( channel ) {\n\n\t\tthis.mask = 1 << channel;\n\n\t},\n\n\tenable: function ( channel ) {\n\n\t\tthis.mask |= 1 << channel;\n\n\t},\n\n\ttoggle: function ( channel ) {\n\n\t\tthis.mask ^= 1 << channel;\n\n\t},\n\n\tdisable: function ( channel ) {\n\n\t\tthis.mask &= ~ ( 1 << channel );\n\n\t},\n\n\ttest: function ( layers ) {\n\n\t\treturn ( this.mask & layers.mask ) !== 0;\n\n\t}\n\n};\n\n\nexport { Layers };\n","import { Quaternion } from '../math/Quaternion';\nimport { Vector3 } from '../math/Vector3';\nimport { Matrix4 } from '../math/Matrix4';\nimport { EventDispatcher } from './EventDispatcher';\nimport { Euler } from '../math/Euler';\nimport { Layers } from './Layers';\nimport { Matrix3 } from '../math/Matrix3';\nimport { _Math } from '../math/Math';\n\n/**\n * @author mrdoob / http://mrdoob.com/\n * @author mikael emtinger / http://gomo.se/\n * @author alteredq / http://alteredqualia.com/\n * @author WestLangley / http://github.com/WestLangley\n * @author elephantatwork / www.elephantatwork.ch\n */\n\nfunction Object3D() {\n\n\tObject.defineProperty( this, 'id', { value: Object3DIdCount() } );\n\n\tthis.uuid = _Math.generateUUID();\n\n\tthis.name = '';\n\tthis.type = 'Object3D';\n\n\tthis.parent = null;\n\tthis.children = [];\n\n\tthis.up = Object3D.DefaultUp.clone();\n\n\tvar position = new Vector3();\n\tvar rotation = new Euler();\n\tvar quaternion = new Quaternion();\n\tvar scale = new Vector3( 1, 1, 1 );\n\n\tfunction onRotationChange() {\n\n\t\tquaternion.setFromEuler( rotation, false );\n\n\t}\n\n\tfunction onQuaternionChange() {\n\n\t\trotation.setFromQuaternion( quaternion, undefined, false );\n\n\t}\n\n\trotation.onChange( onRotationChange );\n\tquaternion.onChange( onQuaternionChange );\n\n\tObject.defineProperties( this, {\n\t\tposition: {\n\t\t\tenumerable: true,\n\t\t\tvalue: position\n\t\t},\n\t\trotation: {\n\t\t\tenumerable: true,\n\t\t\tvalue: rotation\n\t\t},\n\t\tquaternion: {\n\t\t\tenumerable: true,\n\t\t\tvalue: quaternion\n\t\t},\n\t\tscale: {\n\t\t\tenumerable: true,\n\t\t\tvalue: scale\n\t\t},\n\t\tmodelViewMatrix: {\n\t\t\tvalue: new Matrix4()\n\t\t},\n\t\tnormalMatrix: {\n\t\t\tvalue: new Matrix3()\n\t\t}\n\t} );\n\n\tthis.matrix = new Matrix4();\n\tthis.matrixWorld = new Matrix4();\n\n\tthis.matrixAutoUpdate = Object3D.DefaultMatrixAutoUpdate;\n\tthis.matrixWorldNeedsUpdate = false;\n\n\tthis.layers = new Layers();\n\tthis.visible = true;\n\n\tthis.castShadow = false;\n\tthis.receiveShadow = false;\n\n\tthis.frustumCulled = true;\n\tthis.renderOrder = 0;\n\n\tthis.userData = {};\n\n\tthis.onBeforeRender = function(){}; \n\tthis.onAfterRender = function(){};\n\n}\n\nObject3D.DefaultUp = new Vector3( 0, 1, 0 );\nObject3D.DefaultMatrixAutoUpdate = true;\n\nObject.assign( Object3D.prototype, EventDispatcher.prototype, {\n\n\tisObject3D: true,\n\n\tapplyMatrix: function ( matrix ) {\n\n\t\tthis.matrix.multiplyMatrices( matrix, this.matrix );\n\n\t\tthis.matrix.decompose( this.position, this.quaternion, this.scale );\n\n\t},\n\n\tsetRotationFromAxisAngle: function ( axis, angle ) {\n\n\t\t// assumes axis is normalized\n\n\t\tthis.quaternion.setFromAxisAngle( axis, angle );\n\n\t},\n\n\tsetRotationFromEuler: function ( euler ) {\n\n\t\tthis.quaternion.setFromEuler( euler, true );\n\n\t},\n\n\tsetRotationFromMatrix: function ( m ) {\n\n\t\t// assumes the upper 3x3 of m is a pure rotation matrix (i.e, unscaled)\n\n\t\tthis.quaternion.setFromRotationMatrix( m );\n\n\t},\n\n\tsetRotationFromQuaternion: function ( q ) {\n\n\t\t// assumes q is normalized\n\n\t\tthis.quaternion.copy( q );\n\n\t},\n\n\trotateOnAxis: function () {\n\n\t\t// rotate object on axis in object space\n\t\t// axis is assumed to be normalized\n\n\t\tvar q1 = new Quaternion();\n\n\t\treturn function rotateOnAxis( axis, angle ) {\n\n\t\t\tq1.setFromAxisAngle( axis, angle );\n\n\t\t\tthis.quaternion.multiply( q1 );\n\n\t\t\treturn this;\n\n\t\t};\n\n\t}(),\n\n\trotateX: function () {\n\n\t\tvar v1 = new Vector3( 1, 0, 0 );\n\n\t\treturn function rotateX( angle ) {\n\n\t\t\treturn this.rotateOnAxis( v1, angle );\n\n\t\t};\n\n\t}(),\n\n\trotateY: function () {\n\n\t\tvar v1 = new Vector3( 0, 1, 0 );\n\n\t\treturn function rotateY( angle ) {\n\n\t\t\treturn this.rotateOnAxis( v1, angle );\n\n\t\t};\n\n\t}(),\n\n\trotateZ: function () {\n\n\t\tvar v1 = new Vector3( 0, 0, 1 );\n\n\t\treturn function rotateZ( angle ) {\n\n\t\t\treturn this.rotateOnAxis( v1, angle );\n\n\t\t};\n\n\t}(),\n\n\ttranslateOnAxis: function () {\n\n\t\t// translate object by distance along axis in object space\n\t\t// axis is assumed to be normalized\n\n\t\tvar v1 = new Vector3();\n\n\t\treturn function translateOnAxis( axis, distance ) {\n\n\t\t\tv1.copy( axis ).applyQuaternion( this.quaternion );\n\n\t\t\tthis.position.add( v1.multiplyScalar( distance ) );\n\n\t\t\treturn this;\n\n\t\t};\n\n\t}(),\n\n\ttranslateX: function () {\n\n\t\tvar v1 = new Vector3( 1, 0, 0 );\n\n\t\treturn function translateX( distance ) {\n\n\t\t\treturn this.translateOnAxis( v1, distance );\n\n\t\t};\n\n\t}(),\n\n\ttranslateY: function () {\n\n\t\tvar v1 = new Vector3( 0, 1, 0 );\n\n\t\treturn function translateY( distance ) {\n\n\t\t\treturn this.translateOnAxis( v1, distance );\n\n\t\t};\n\n\t}(),\n\n\ttranslateZ: function () {\n\n\t\tvar v1 = new Vector3( 0, 0, 1 );\n\n\t\treturn function translateZ( distance ) {\n\n\t\t\treturn this.translateOnAxis( v1, distance );\n\n\t\t};\n\n\t}(),\n\n\tlocalToWorld: function ( vector ) {\n\n\t\treturn vector.applyMatrix4( this.matrixWorld );\n\n\t},\n\n\tworldToLocal: function () {\n\n\t\tvar m1 = new Matrix4();\n\n\t\treturn function worldToLocal( vector ) {\n\n\t\t\treturn vector.applyMatrix4( m1.getInverse( this.matrixWorld ) );\n\n\t\t};\n\n\t}(),\n\n\tlookAt: function () {\n\n\t\t// This routine does not support objects with rotated and/or translated parent(s)\n\n\t\tvar m1 = new Matrix4();\n\n\t\treturn function lookAt( vector ) {\n\n\t\t\tm1.lookAt( vector, this.position, this.up );\n\n\t\t\tthis.quaternion.setFromRotationMatrix( m1 );\n\n\t\t};\n\n\t}(),\n\n\tadd: function ( object ) {\n\n\t\tif ( arguments.length > 1 ) {\n\n\t\t\tfor ( var i = 0; i < arguments.length; i ++ ) {\n\n\t\t\t\tthis.add( arguments[ i ] );\n\n\t\t\t}\n\n\t\t\treturn this;\n\n\t\t}\n\n\t\tif ( object === this ) {\n\n\t\t\tconsole.error( \"THREE.Object3D.add: object can't be added as a child of itself.\", object );\n\t\t\treturn this;\n\n\t\t}\n\n\t\tif ( (object && object.isObject3D) ) {\n\n\t\t\tif ( object.parent !== null ) {\n\n\t\t\t\tobject.parent.remove( object );\n\n\t\t\t}\n\n\t\t\tobject.parent = this;\n\t\t\tobject.dispatchEvent( { type: 'added' } );\n\n\t\t\tthis.children.push( object );\n\n\t\t} else {\n\n\t\t\tconsole.error( \"THREE.Object3D.add: object not an instance of THREE.Object3D.\", object );\n\n\t\t}\n\n\t\treturn this;\n\n\t},\n\n\tremove: function ( object ) {\n\n\t\tif ( arguments.length > 1 ) {\n\n\t\t\tfor ( var i = 0; i < arguments.length; i ++ ) {\n\n\t\t\t\tthis.remove( arguments[ i ] );\n\n\t\t\t}\n\n\t\t}\n\n\t\tvar index = this.children.indexOf( object );\n\n\t\tif ( index !== - 1 ) {\n\n\t\t\tobject.parent = null;\n\n\t\t\tobject.dispatchEvent( { type: 'removed' } );\n\n\t\t\tthis.children.splice( index, 1 );\n\n\t\t}\n\n\t},\n\n\tgetObjectById: function ( id ) {\n\n\t\treturn this.getObjectByProperty( 'id', id );\n\n\t},\n\n\tgetObjectByName: function ( name ) {\n\n\t\treturn this.getObjectByProperty( 'name', name );\n\n\t},\n\n\tgetObjectByProperty: function ( name, value ) {\n\n\t\tif ( this[ name ] === value ) return this;\n\n\t\tfor ( var i = 0, l = this.children.length; i < l; i ++ ) {\n\n\t\t\tvar child = this.children[ i ];\n\t\t\tvar object = child.getObjectByProperty( name, value );\n\n\t\t\tif ( object !== undefined ) {\n\n\t\t\t\treturn object;\n\n\t\t\t}\n\n\t\t}\n\n\t\treturn undefined;\n\n\t},\n\n\tgetWorldPosition: function ( optionalTarget ) {\n\n\t\tvar result = optionalTarget || new Vector3();\n\n\t\tthis.updateMatrixWorld( true );\n\n\t\treturn result.setFromMatrixPosition( this.matrixWorld );\n\n\t},\n\n\tgetWorldQuaternion: function () {\n\n\t\tvar position = new Vector3();\n\t\tvar scale = new Vector3();\n\n\t\treturn function getWorldQuaternion( optionalTarget ) {\n\n\t\t\tvar result = optionalTarget || new Quaternion();\n\n\t\t\tthis.updateMatrixWorld( true );\n\n\t\t\tthis.matrixWorld.decompose( position, result, scale );\n\n\t\t\treturn result;\n\n\t\t};\n\n\t}(),\n\n\tgetWorldRotation: function () {\n\n\t\tvar quaternion = new Quaternion();\n\n\t\treturn function getWorldRotation( optionalTarget ) {\n\n\t\t\tvar result = optionalTarget || new Euler();\n\n\t\t\tthis.getWorldQuaternion( quaternion );\n\n\t\t\treturn result.setFromQuaternion( quaternion, this.rotation.order, false );\n\n\t\t};\n\n\t}(),\n\n\tgetWorldScale: function () {\n\n\t\tvar position = new Vector3();\n\t\tvar quaternion = new Quaternion();\n\n\t\treturn function getWorldScale( optionalTarget ) {\n\n\t\t\tvar result = optionalTarget || new Vector3();\n\n\t\t\tthis.updateMatrixWorld( true );\n\n\t\t\tthis.matrixWorld.decompose( position, quaternion, result );\n\n\t\t\treturn result;\n\n\t\t};\n\n\t}(),\n\n\tgetWorldDirection: function () {\n\n\t\tvar quaternion = new Quaternion();\n\n\t\treturn function getWorldDirection( optionalTarget ) {\n\n\t\t\tvar result = optionalTarget || new Vector3();\n\n\t\t\tthis.getWorldQuaternion( quaternion );\n\n\t\t\treturn result.set( 0, 0, 1 ).applyQuaternion( quaternion );\n\n\t\t};\n\n\t}(),\n\n\traycast: function () {},\n\n\ttraverse: function ( callback ) {\n\n\t\tcallback( this );\n\n\t\tvar children = this.children;\n\n\t\tfor ( var i = 0, l = children.length; i < l; i ++ ) {\n\n\t\t\tchildren[ i ].traverse( callback );\n\n\t\t}\n\n\t},\n\n\ttraverseVisible: function ( callback ) {\n\n\t\tif ( this.visible === false ) return;\n\n\t\tcallback( this );\n\n\t\tvar children = this.children;\n\n\t\tfor ( var i = 0, l = children.length; i < l; i ++ ) {\n\n\t\t\tchildren[ i ].traverseVisible( callback );\n\n\t\t}\n\n\t},\n\n\ttraverseAncestors: function ( callback ) {\n\n\t\tvar parent = this.parent;\n\n\t\tif ( parent !== null ) {\n\n\t\t\tcallback( parent );\n\n\t\t\tparent.traverseAncestors( callback );\n\n\t\t}\n\n\t},\n\n\tupdateMatrix: function () {\n\n\t\tthis.matrix.compose( this.position, this.quaternion, this.scale );\n\n\t\tthis.matrixWorldNeedsUpdate = true;\n\n\t},\n\n\tupdateMatrixWorld: function ( force ) {\n\n\t\tif ( this.matrixAutoUpdate === true ) this.updateMatrix();\n\n\t\tif ( this.matrixWorldNeedsUpdate === true || force === true ) {\n\n\t\t\tif ( this.parent === null ) {\n\n\t\t\t\tthis.matrixWorld.copy( this.matrix );\n\n\t\t\t} else {\n\n\t\t\t\tthis.matrixWorld.multiplyMatrices( this.parent.matrixWorld, this.matrix );\n\n\t\t\t}\n\n\t\t\tthis.matrixWorldNeedsUpdate = false;\n\n\t\t\tforce = true;\n\n\t\t}\n\n\t\t// update children\n\n\t\tvar children = this.children;\n\n\t\tfor ( var i = 0, l = children.length; i < l; i ++ ) {\n\n\t\t\tchildren[ i ].updateMatrixWorld( force );\n\n\t\t}\n\n\t},\n\n\ttoJSON: function ( meta ) {\n\n\t\t// meta is '' when called from JSON.stringify\n\t\tvar isRootObject = ( meta === undefined || meta === '' );\n\n\t\tvar output = {};\n\n\t\t// meta is a hash used to collect geometries, materials.\n\t\t// not providing it implies that this is the root object\n\t\t// being serialized.\n\t\tif ( isRootObject ) {\n\n\t\t\t// initialize meta obj\n\t\t\tmeta = {\n\t\t\t\tgeometries: {},\n\t\t\t\tmaterials: {},\n\t\t\t\ttextures: {},\n\t\t\t\timages: {}\n\t\t\t};\n\n\t\t\toutput.metadata = {\n\t\t\t\tversion: 4.4,\n\t\t\t\ttype: 'Object',\n\t\t\t\tgenerator: 'Object3D.toJSON'\n\t\t\t};\n\n\t\t}\n\n\t\t// standard Object3D serialization\n\n\t\tvar object = {};\n\n\t\tobject.uuid = this.uuid;\n\t\tobject.type = this.type;\n\n\t\tif ( this.name !== '' ) object.name = this.name;\n\t\tif ( JSON.stringify( this.userData ) !== '{}' ) object.userData = this.userData;\n\t\tif ( this.castShadow === true ) object.castShadow = true;\n\t\tif ( this.receiveShadow === true ) object.receiveShadow = true;\n\t\tif ( this.visible === false ) object.visible = false;\n\n\t\tobject.matrix = this.matrix.toArray();\n\n\t\t//\n\n\t\tif ( this.geometry !== undefined ) {\n\n\t\t\tif ( meta.geometries[ this.geometry.uuid ] === undefined ) {\n\n\t\t\t\tmeta.geometries[ this.geometry.uuid ] = this.geometry.toJSON( meta );\n\n\t\t\t}\n\n\t\t\tobject.geometry = this.geometry.uuid;\n\n\t\t}\n\n\t\tif ( this.material !== undefined ) {\n\n\t\t\tif ( meta.materials[ this.material.uuid ] === undefined ) {\n\n\t\t\t\tmeta.materials[ this.material.uuid ] = this.material.toJSON( meta );\n\n\t\t\t}\n\n\t\t\tobject.material = this.material.uuid;\n\n\t\t}\n\n\t\t//\n\n\t\tif ( this.children.length > 0 ) {\n\n\t\t\tobject.children = [];\n\n\t\t\tfor ( var i = 0; i < this.children.length; i ++ ) {\n\n\t\t\t\tobject.children.push( this.children[ i ].toJSON( meta ).object );\n\n\t\t\t}\n\n\t\t}\n\n\t\tif ( isRootObject ) {\n\n\t\t\tvar geometries = extractFromCache( meta.geometries );\n\t\t\tvar materials = extractFromCache( meta.materials );\n\t\t\tvar textures = extractFromCache( meta.textures );\n\t\t\tvar images = extractFromCache( meta.images );\n\n\t\t\tif ( geometries.length > 0 ) output.geometries = geometries;\n\t\t\tif ( materials.length > 0 ) output.materials = materials;\n\t\t\tif ( textures.length > 0 ) output.textures = textures;\n\t\t\tif ( images.length > 0 ) output.images = images;\n\n\t\t}\n\n\t\toutput.object = object;\n\n\t\treturn output;\n\n\t\t// extract data from the cache hash\n\t\t// remove metadata on each item\n\t\t// and return as array\n\t\tfunction extractFromCache( cache ) {\n\n\t\t\tvar values = [];\n\t\t\tfor ( var key in cache ) {\n\n\t\t\t\tvar data = cache[ key ];\n\t\t\t\tdelete data.metadata;\n\t\t\t\tvalues.push( data );\n\n\t\t\t}\n\t\t\treturn values;\n\n\t\t}\n\n\t},\n\n\tclone: function ( recursive ) {\n\n\t\treturn new this.constructor().copy( this, recursive );\n\n\t},\n\n\tcopy: function ( source, recursive ) {\n\n\t\tif ( recursive === undefined ) recursive = true;\n\n\t\tthis.name = source.name;\n\n\t\tthis.up.copy( source.up );\n\n\t\tthis.position.copy( source.position );\n\t\tthis.quaternion.copy( source.quaternion );\n\t\tthis.scale.copy( source.scale );\n\n\t\tthis.matrix.copy( source.matrix );\n\t\tthis.matrixWorld.copy( source.matrixWorld );\n\n\t\tthis.matrixAutoUpdate = source.matrixAutoUpdate;\n\t\tthis.matrixWorldNeedsUpdate = source.matrixWorldNeedsUpdate;\n\n\t\tthis.visible = source.visible;\n\n\t\tthis.castShadow = source.castShadow;\n\t\tthis.receiveShadow = source.receiveShadow;\n\n\t\tthis.frustumCulled = source.frustumCulled;\n\t\tthis.renderOrder = source.renderOrder;\n\n\t\tthis.userData = JSON.parse( JSON.stringify( source.userData ) );\n\n\t\tif ( recursive === true ) {\n\n\t\t\tfor ( var i = 0; i < source.children.length; i ++ ) {\n\n\t\t\t\tvar child = source.children[ i ];\n\t\t\t\tthis.add( child.clone() );\n\n\t\t\t}\n\n\t\t}\n\n\t\treturn this;\n\n\t}\n\n} );\n\nvar count = 0;\nfunction Object3DIdCount() { return count++; };\n\n\nexport { Object3DIdCount, Object3D };\n","import { Vector3 } from './Vector3';\nimport { _Math } from './Math';\n\n/**\n * @author bhouston / http://clara.io\n */\n\nfunction Line3( start, end ) {\n\n\tthis.start = ( start !== undefined ) ? start : new Vector3();\n\tthis.end = ( end !== undefined ) ? end : new Vector3();\n\n}\n\nLine3.prototype = {\n\n\tconstructor: Line3,\n\n\tset: function ( start, end ) {\n\n\t\tthis.start.copy( start );\n\t\tthis.end.copy( end );\n\n\t\treturn this;\n\n\t},\n\n\tclone: function () {\n\n\t\treturn new this.constructor().copy( this );\n\n\t},\n\n\tcopy: function ( line ) {\n\n\t\tthis.start.copy( line.start );\n\t\tthis.end.copy( line.end );\n\n\t\treturn this;\n\n\t},\n\n\tgetCenter: function ( optionalTarget ) {\n\n\t\tvar result = optionalTarget || new Vector3();\n\t\treturn result.addVectors( this.start, this.end ).multiplyScalar( 0.5 );\n\n\t},\n\n\tdelta: function ( optionalTarget ) {\n\n\t\tvar result = optionalTarget || new Vector3();\n\t\treturn result.subVectors( this.end, this.start );\n\n\t},\n\n\tdistanceSq: function () {\n\n\t\treturn this.start.distanceToSquared( this.end );\n\n\t},\n\n\tdistance: function () {\n\n\t\treturn this.start.distanceTo( this.end );\n\n\t},\n\n\tat: function ( t, optionalTarget ) {\n\n\t\tvar result = optionalTarget || new Vector3();\n\n\t\treturn this.delta( result ).multiplyScalar( t ).add( this.start );\n\n\t},\n\n\tclosestPointToPointParameter: function () {\n\n\t\tvar startP = new Vector3();\n\t\tvar startEnd = new Vector3();\n\n\t\treturn function closestPointToPointParameter( point, clampToLine ) {\n\n\t\t\tstartP.subVectors( point, this.start );\n\t\t\tstartEnd.subVectors( this.end, this.start );\n\n\t\t\tvar startEnd2 = startEnd.dot( startEnd );\n\t\t\tvar startEnd_startP = startEnd.dot( startP );\n\n\t\t\tvar t = startEnd_startP / startEnd2;\n\n\t\t\tif ( clampToLine ) {\n\n\t\t\t\tt = _Math.clamp( t, 0, 1 );\n\n\t\t\t}\n\n\t\t\treturn t;\n\n\t\t};\n\n\t}(),\n\n\tclosestPointToPoint: function ( point, clampToLine, optionalTarget ) {\n\n\t\tvar t = this.closestPointToPointParameter( point, clampToLine );\n\n\t\tvar result = optionalTarget || new Vector3();\n\n\t\treturn this.delta( result ).multiplyScalar( t ).add( this.start );\n\n\t},\n\n\tapplyMatrix4: function ( matrix ) {\n\n\t\tthis.start.applyMatrix4( matrix );\n\t\tthis.end.applyMatrix4( matrix );\n\n\t\treturn this;\n\n\t},\n\n\tequals: function ( line ) {\n\n\t\treturn line.start.equals( this.start ) && line.end.equals( this.end );\n\n\t}\n\n};\n\n\nexport { Line3 };\n","import { Vector3 } from './Vector3';\nimport { Line3 } from './Line3';\nimport { Plane } from './Plane';\n\n/**\n * @author bhouston / http://clara.io\n * @author mrdoob / http://mrdoob.com/\n */\n\nfunction Triangle( a, b, c ) {\n\n\tthis.a = ( a !== undefined ) ? a : new Vector3();\n\tthis.b = ( b !== undefined ) ? b : new Vector3();\n\tthis.c = ( c !== undefined ) ? c : new Vector3();\n\n}\n\nTriangle.normal = function () {\n\n\tvar v0 = new Vector3();\n\n\treturn function normal( a, b, c, optionalTarget ) {\n\n\t\tvar result = optionalTarget || new Vector3();\n\n\t\tresult.subVectors( c, b );\n\t\tv0.subVectors( a, b );\n\t\tresult.cross( v0 );\n\n\t\tvar resultLengthSq = result.lengthSq();\n\t\tif ( resultLengthSq > 0 ) {\n\n\t\t\treturn result.multiplyScalar( 1 / Math.sqrt( resultLengthSq ) );\n\n\t\t}\n\n\t\treturn result.set( 0, 0, 0 );\n\n\t};\n\n}();\n\n// static/instance method to calculate barycentric coordinates\n// based on: http://www.blackpawn.com/texts/pointinpoly/default.html\nTriangle.barycoordFromPoint = function () {\n\n\tvar v0 = new Vector3();\n\tvar v1 = new Vector3();\n\tvar v2 = new Vector3();\n\n\treturn function barycoordFromPoint( point, a, b, c, optionalTarget ) {\n\n\t\tv0.subVectors( c, a );\n\t\tv1.subVectors( b, a );\n\t\tv2.subVectors( point, a );\n\n\t\tvar dot00 = v0.dot( v0 );\n\t\tvar dot01 = v0.dot( v1 );\n\t\tvar dot02 = v0.dot( v2 );\n\t\tvar dot11 = v1.dot( v1 );\n\t\tvar dot12 = v1.dot( v2 );\n\n\t\tvar denom = ( dot00 * dot11 - dot01 * dot01 );\n\n\t\tvar result = optionalTarget || new Vector3();\n\n\t\t// collinear or singular triangle\n\t\tif ( denom === 0 ) {\n\n\t\t\t// arbitrary location outside of triangle?\n\t\t\t// not sure if this is the best idea, maybe should be returning undefined\n\t\t\treturn result.set( - 2, - 1, - 1 );\n\n\t\t}\n\n\t\tvar invDenom = 1 / denom;\n\t\tvar u = ( dot11 * dot02 - dot01 * dot12 ) * invDenom;\n\t\tvar v = ( dot00 * dot12 - dot01 * dot02 ) * invDenom;\n\n\t\t// barycentric coordinates must always sum to 1\n\t\treturn result.set( 1 - u - v, v, u );\n\n\t};\n\n}();\n\nTriangle.containsPoint = function () {\n\n\tvar v1 = new Vector3();\n\n\treturn function containsPoint( point, a, b, c ) {\n\n\t\tvar result = Triangle.barycoordFromPoint( point, a, b, c, v1 );\n\n\t\treturn ( result.x >= 0 ) && ( result.y >= 0 ) && ( ( result.x + result.y ) <= 1 );\n\n\t};\n\n}();\n\nTriangle.prototype = {\n\n\tconstructor: Triangle,\n\n\tset: function ( a, b, c ) {\n\n\t\tthis.a.copy( a );\n\t\tthis.b.copy( b );\n\t\tthis.c.copy( c );\n\n\t\treturn this;\n\n\t},\n\n\tsetFromPointsAndIndices: function ( points, i0, i1, i2 ) {\n\n\t\tthis.a.copy( points[ i0 ] );\n\t\tthis.b.copy( points[ i1 ] );\n\t\tthis.c.copy( points[ i2 ] );\n\n\t\treturn this;\n\n\t},\n\n\tclone: function () {\n\n\t\treturn new this.constructor().copy( this );\n\n\t},\n\n\tcopy: function ( triangle ) {\n\n\t\tthis.a.copy( triangle.a );\n\t\tthis.b.copy( triangle.b );\n\t\tthis.c.copy( triangle.c );\n\n\t\treturn this;\n\n\t},\n\n\tarea: function () {\n\n\t\tvar v0 = new Vector3();\n\t\tvar v1 = new Vector3();\n\n\t\treturn function area() {\n\n\t\t\tv0.subVectors( this.c, this.b );\n\t\t\tv1.subVectors( this.a, this.b );\n\n\t\t\treturn v0.cross( v1 ).length() * 0.5;\n\n\t\t};\n\n\t}(),\n\n\tmidpoint: function ( optionalTarget ) {\n\n\t\tvar result = optionalTarget || new Vector3();\n\t\treturn result.addVectors( this.a, this.b ).add( this.c ).multiplyScalar( 1 / 3 );\n\n\t},\n\n\tnormal: function ( optionalTarget ) {\n\n\t\treturn Triangle.normal( this.a, this.b, this.c, optionalTarget );\n\n\t},\n\n\tplane: function ( optionalTarget ) {\n\n\t\tvar result = optionalTarget || new Plane();\n\n\t\treturn result.setFromCoplanarPoints( this.a, this.b, this.c );\n\n\t},\n\n\tbarycoordFromPoint: function ( point, optionalTarget ) {\n\n\t\treturn Triangle.barycoordFromPoint( point, this.a, this.b, this.c, optionalTarget );\n\n\t},\n\n\tcontainsPoint: function ( point ) {\n\n\t\treturn Triangle.containsPoint( point, this.a, this.b, this.c );\n\n\t},\n\n\tclosestPointToPoint: function () {\n\n\t\tvar plane, edgeList, projectedPoint, closestPoint;\n\n\t\treturn function closestPointToPoint( point, optionalTarget ) {\n\n\t\t\tif ( plane === undefined ) {\n\n\t\t\t\tplane = new Plane();\n\t\t\t\tedgeList = [ new Line3(), new Line3(), new Line3() ];\n\t\t\t\tprojectedPoint = new Vector3();\n\t\t\t\tclosestPoint = new Vector3();\n\n\t\t\t}\n\n\t\t\tvar result = optionalTarget || new Vector3();\n\t\t\tvar minDistance = Infinity;\n\n\t\t\t// project the point onto the plane of the triangle\n\n\t\t\tplane.setFromCoplanarPoints( this.a, this.b, this.c );\n\t\t\tplane.projectPoint( point, projectedPoint );\n\n\t\t\t// check if the projection lies within the triangle\n\n\t\t\tif( this.containsPoint( projectedPoint ) === true ) {\n\n\t\t\t\t// if so, this is the closest point\n\n\t\t\t\tresult.copy( projectedPoint );\n\n\t\t\t} else {\n\n\t\t\t\t// if not, the point falls outside the triangle. the result is the closest point to the triangle's edges or vertices\n\n\t\t\t\tedgeList[ 0 ].set( this.a, this.b );\n\t\t\t\tedgeList[ 1 ].set( this.b, this.c );\n\t\t\t\tedgeList[ 2 ].set( this.c, this.a );\n\n\t\t\t\tfor( var i = 0; i < edgeList.length; i ++ ) {\n\n\t\t\t\t\tedgeList[ i ].closestPointToPoint( projectedPoint, true, closestPoint );\n\n\t\t\t\t\tvar distance = projectedPoint.distanceToSquared( closestPoint );\n\n\t\t\t\t\tif( distance < minDistance ) {\n\n\t\t\t\t\t\tminDistance = distance;\n\n\t\t\t\t\t\tresult.copy( closestPoint );\n\n\t\t\t\t\t}\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t\treturn result;\n\n\t\t};\n\n\t}(),\n\n\tequals: function ( triangle ) {\n\n\t\treturn triangle.a.equals( this.a ) && triangle.b.equals( this.b ) && triangle.c.equals( this.c );\n\n\t}\n\n};\n\n\nexport { Triangle };\n","import { Color } from '../math/Color';\nimport { Vector3 } from '../math/Vector3';\n\n/**\n * @author mrdoob / http://mrdoob.com/\n * @author alteredq / http://alteredqualia.com/\n */\n\nfunction Face3( a, b, c, normal, color, materialIndex ) {\n\n\tthis.a = a;\n\tthis.b = b;\n\tthis.c = c;\n\n\tthis.normal = (normal && normal.isVector3) ? normal : new Vector3();\n\tthis.vertexNormals = Array.isArray( normal ) ? normal : [];\n\n\tthis.color = (color && color.isColor) ? color : new Color();\n\tthis.vertexColors = Array.isArray( color ) ? color : [];\n\n\tthis.materialIndex = materialIndex !== undefined ? materialIndex : 0;\n\n}\n\nFace3.prototype = {\n\n\tconstructor: Face3,\n\n\tclone: function () {\n\n\t\treturn new this.constructor().copy( this );\n\n\t},\n\n\tcopy: function ( source ) {\n\n\t\tthis.a = source.a;\n\t\tthis.b = source.b;\n\t\tthis.c = source.c;\n\n\t\tthis.normal.copy( source.normal );\n\t\tthis.color.copy( source.color );\n\n\t\tthis.materialIndex = source.materialIndex;\n\n\t\tfor ( var i = 0, il = source.vertexNormals.length; i < il; i ++ ) {\n\n\t\t\tthis.vertexNormals[ i ] = source.vertexNormals[ i ].clone();\n\n\t\t}\n\n\t\tfor ( var i = 0, il = source.vertexColors.length; i < il; i ++ ) {\n\n\t\t\tthis.vertexColors[ i ] = source.vertexColors[ i ].clone();\n\n\t\t}\n\n\t\treturn this;\n\n\t}\n\n};\n\n\nexport { Face3 };\n","import { Material } from './Material';\nimport { MultiplyOperation } from '../constants';\nimport { Color } from '../math/Color';\n\n/**\n * @author mrdoob / http://mrdoob.com/\n * @author alteredq / http://alteredqualia.com/\n *\n * parameters = {\n * color: ,\n * opacity: ,\n * map: new THREE.Texture( ),\n *\n * aoMap: new THREE.Texture( ),\n * aoMapIntensity: \n *\n * specularMap: new THREE.Texture( ),\n *\n * alphaMap: new THREE.Texture( ),\n *\n * envMap: new THREE.TextureCube( [posx, negx, posy, negy, posz, negz] ),\n * combine: THREE.Multiply,\n * reflectivity: ,\n * refractionRatio: ,\n *\n * shading: THREE.SmoothShading,\n * depthTest: ,\n * depthWrite: ,\n *\n * wireframe: ,\n * wireframeLinewidth: ,\n *\n * skinning: ,\n * morphTargets: \n * }\n */\n\nfunction MeshBasicMaterial( parameters ) {\n\n\tMaterial.call( this );\n\n\tthis.type = 'MeshBasicMaterial';\n\n\tthis.color = new Color( 0xffffff ); // emissive\n\n\tthis.map = null;\n\n\tthis.aoMap = null;\n\tthis.aoMapIntensity = 1.0;\n\n\tthis.specularMap = null;\n\n\tthis.alphaMap = null;\n\n\tthis.envMap = null;\n\tthis.combine = MultiplyOperation;\n\tthis.reflectivity = 1;\n\tthis.refractionRatio = 0.98;\n\n\tthis.wireframe = false;\n\tthis.wireframeLinewidth = 1;\n\tthis.wireframeLinecap = 'round';\n\tthis.wireframeLinejoin = 'round';\n\n\tthis.skinning = false;\n\tthis.morphTargets = false;\n\n\tthis.lights = false;\n\n\tthis.setValues( parameters );\n\n}\n\nMeshBasicMaterial.prototype = Object.create( Material.prototype );\nMeshBasicMaterial.prototype.constructor = MeshBasicMaterial;\n\nMeshBasicMaterial.prototype.isMeshBasicMaterial = true;\n\nMeshBasicMaterial.prototype.copy = function ( source ) {\n\n\tMaterial.prototype.copy.call( this, source );\n\n\tthis.color.copy( source.color );\n\n\tthis.map = source.map;\n\n\tthis.aoMap = source.aoMap;\n\tthis.aoMapIntensity = source.aoMapIntensity;\n\n\tthis.specularMap = source.specularMap;\n\n\tthis.alphaMap = source.alphaMap;\n\n\tthis.envMap = source.envMap;\n\tthis.combine = source.combine;\n\tthis.reflectivity = source.reflectivity;\n\tthis.refractionRatio = source.refractionRatio;\n\n\tthis.wireframe = source.wireframe;\n\tthis.wireframeLinewidth = source.wireframeLinewidth;\n\tthis.wireframeLinecap = source.wireframeLinecap;\n\tthis.wireframeLinejoin = source.wireframeLinejoin;\n\n\tthis.skinning = source.skinning;\n\tthis.morphTargets = source.morphTargets;\n\n\treturn this;\n\n};\n\n\nexport { MeshBasicMaterial };\n","import { Vector4 } from '../math/Vector4';\nimport { Vector3 } from '../math/Vector3';\nimport { Vector2 } from '../math/Vector2';\nimport { Color } from '../math/Color';\nimport { _Math } from '../math/Math';\n\n/**\n * @author mrdoob / http://mrdoob.com/\n */\n\nfunction BufferAttribute( array, itemSize, normalized ) {\n\n\tif ( Array.isArray( array ) ) {\n\n\t\tthrow new TypeError( 'THREE.BufferAttribute: array should be a Typed Array.' );\n\n\t}\n\n\tthis.uuid = _Math.generateUUID();\n\n\tthis.array = array;\n\tthis.itemSize = itemSize;\n\tthis.count = array !== undefined ? array.length / itemSize : 0;\n\tthis.normalized = normalized === true;\n\n\tthis.dynamic = false;\n\tthis.updateRange = { offset: 0, count: - 1 };\n\n\tthis.version = 0;\n\n}\n\nBufferAttribute.prototype = {\n\n\tconstructor: BufferAttribute,\n\n\tisBufferAttribute: true,\n\n\tset needsUpdate( value ) {\n\n\t\tif ( value === true ) this.version ++;\n\n\t},\n\n\tsetArray: function ( array ) {\n\n\t\tif ( Array.isArray( array ) ) {\n\n\t\t\tthrow new TypeError( 'THREE.BufferAttribute: array should be a Typed Array.' );\n\n\t\t}\n\n\t\tthis.count = array !== undefined ? array.length / this.itemSize : 0;\n\t\tthis.array = array;\n\n\t},\n\n\tsetDynamic: function ( value ) {\n\n\t\tthis.dynamic = value;\n\n\t\treturn this;\n\n\t},\n\n\tcopy: function ( source ) {\n\n\t\tthis.array = new source.array.constructor( source.array );\n\t\tthis.itemSize = source.itemSize;\n\t\tthis.count = source.count;\n\t\tthis.normalized = source.normalized;\n\n\t\tthis.dynamic = source.dynamic;\n\n\t\treturn this;\n\n\t},\n\n\tcopyAt: function ( index1, attribute, index2 ) {\n\n\t\tindex1 *= this.itemSize;\n\t\tindex2 *= attribute.itemSize;\n\n\t\tfor ( var i = 0, l = this.itemSize; i < l; i ++ ) {\n\n\t\t\tthis.array[ index1 + i ] = attribute.array[ index2 + i ];\n\n\t\t}\n\n\t\treturn this;\n\n\t},\n\n\tcopyArray: function ( array ) {\n\n\t\tthis.array.set( array );\n\n\t\treturn this;\n\n\t},\n\n\tcopyColorsArray: function ( colors ) {\n\n\t\tvar array = this.array, offset = 0;\n\n\t\tfor ( var i = 0, l = colors.length; i < l; i ++ ) {\n\n\t\t\tvar color = colors[ i ];\n\n\t\t\tif ( color === undefined ) {\n\n\t\t\t\tconsole.warn( 'THREE.BufferAttribute.copyColorsArray(): color is undefined', i );\n\t\t\t\tcolor = new Color();\n\n\t\t\t}\n\n\t\t\tarray[ offset ++ ] = color.r;\n\t\t\tarray[ offset ++ ] = color.g;\n\t\t\tarray[ offset ++ ] = color.b;\n\n\t\t}\n\n\t\treturn this;\n\n\t},\n\n\tcopyIndicesArray: function ( indices ) {\n\n\t\tvar array = this.array, offset = 0;\n\n\t\tfor ( var i = 0, l = indices.length; i < l; i ++ ) {\n\n\t\t\tvar index = indices[ i ];\n\n\t\t\tarray[ offset ++ ] = index.a;\n\t\t\tarray[ offset ++ ] = index.b;\n\t\t\tarray[ offset ++ ] = index.c;\n\n\t\t}\n\n\t\treturn this;\n\n\t},\n\n\tcopyVector2sArray: function ( vectors ) {\n\n\t\tvar array = this.array, offset = 0;\n\n\t\tfor ( var i = 0, l = vectors.length; i < l; i ++ ) {\n\n\t\t\tvar vector = vectors[ i ];\n\n\t\t\tif ( vector === undefined ) {\n\n\t\t\t\tconsole.warn( 'THREE.BufferAttribute.copyVector2sArray(): vector is undefined', i );\n\t\t\t\tvector = new Vector2();\n\n\t\t\t}\n\n\t\t\tarray[ offset ++ ] = vector.x;\n\t\t\tarray[ offset ++ ] = vector.y;\n\n\t\t}\n\n\t\treturn this;\n\n\t},\n\n\tcopyVector3sArray: function ( vectors ) {\n\n\t\tvar array = this.array, offset = 0;\n\n\t\tfor ( var i = 0, l = vectors.length; i < l; i ++ ) {\n\n\t\t\tvar vector = vectors[ i ];\n\n\t\t\tif ( vector === undefined ) {\n\n\t\t\t\tconsole.warn( 'THREE.BufferAttribute.copyVector3sArray(): vector is undefined', i );\n\t\t\t\tvector = new Vector3();\n\n\t\t\t}\n\n\t\t\tarray[ offset ++ ] = vector.x;\n\t\t\tarray[ offset ++ ] = vector.y;\n\t\t\tarray[ offset ++ ] = vector.z;\n\n\t\t}\n\n\t\treturn this;\n\n\t},\n\n\tcopyVector4sArray: function ( vectors ) {\n\n\t\tvar array = this.array, offset = 0;\n\n\t\tfor ( var i = 0, l = vectors.length; i < l; i ++ ) {\n\n\t\t\tvar vector = vectors[ i ];\n\n\t\t\tif ( vector === undefined ) {\n\n\t\t\t\tconsole.warn( 'THREE.BufferAttribute.copyVector4sArray(): vector is undefined', i );\n\t\t\t\tvector = new Vector4();\n\n\t\t\t}\n\n\t\t\tarray[ offset ++ ] = vector.x;\n\t\t\tarray[ offset ++ ] = vector.y;\n\t\t\tarray[ offset ++ ] = vector.z;\n\t\t\tarray[ offset ++ ] = vector.w;\n\n\t\t}\n\n\t\treturn this;\n\n\t},\n\n\tset: function ( value, offset ) {\n\n\t\tif ( offset === undefined ) offset = 0;\n\n\t\tthis.array.set( value, offset );\n\n\t\treturn this;\n\n\t},\n\n\tgetX: function ( index ) {\n\n\t\treturn this.array[ index * this.itemSize ];\n\n\t},\n\n\tsetX: function ( index, x ) {\n\n\t\tthis.array[ index * this.itemSize ] = x;\n\n\t\treturn this;\n\n\t},\n\n\tgetY: function ( index ) {\n\n\t\treturn this.array[ index * this.itemSize + 1 ];\n\n\t},\n\n\tsetY: function ( index, y ) {\n\n\t\tthis.array[ index * this.itemSize + 1 ] = y;\n\n\t\treturn this;\n\n\t},\n\n\tgetZ: function ( index ) {\n\n\t\treturn this.array[ index * this.itemSize + 2 ];\n\n\t},\n\n\tsetZ: function ( index, z ) {\n\n\t\tthis.array[ index * this.itemSize + 2 ] = z;\n\n\t\treturn this;\n\n\t},\n\n\tgetW: function ( index ) {\n\n\t\treturn this.array[ index * this.itemSize + 3 ];\n\n\t},\n\n\tsetW: function ( index, w ) {\n\n\t\tthis.array[ index * this.itemSize + 3 ] = w;\n\n\t\treturn this;\n\n\t},\n\n\tsetXY: function ( index, x, y ) {\n\n\t\tindex *= this.itemSize;\n\n\t\tthis.array[ index + 0 ] = x;\n\t\tthis.array[ index + 1 ] = y;\n\n\t\treturn this;\n\n\t},\n\n\tsetXYZ: function ( index, x, y, z ) {\n\n\t\tindex *= this.itemSize;\n\n\t\tthis.array[ index + 0 ] = x;\n\t\tthis.array[ index + 1 ] = y;\n\t\tthis.array[ index + 2 ] = z;\n\n\t\treturn this;\n\n\t},\n\n\tsetXYZW: function ( index, x, y, z, w ) {\n\n\t\tindex *= this.itemSize;\n\n\t\tthis.array[ index + 0 ] = x;\n\t\tthis.array[ index + 1 ] = y;\n\t\tthis.array[ index + 2 ] = z;\n\t\tthis.array[ index + 3 ] = w;\n\n\t\treturn this;\n\n\t},\n\n\tclone: function () {\n\n\t\treturn new this.constructor().copy( this );\n\n\t}\n\n};\n\n//\n\nfunction Int8Attribute( array, itemSize ) {\n\n\treturn new BufferAttribute( new Int8Array( array ), itemSize );\n\n}\n\nfunction Uint8Attribute( array, itemSize ) {\n\n\treturn new BufferAttribute( new Uint8Array( array ), itemSize );\n\n}\n\nfunction Uint8ClampedAttribute( array, itemSize ) {\n\n\treturn new BufferAttribute( new Uint8ClampedArray( array ), itemSize );\n\n}\n\nfunction Int16Attribute( array, itemSize ) {\n\n\treturn new BufferAttribute( new Int16Array( array ), itemSize );\n\n}\n\nfunction Uint16Attribute( array, itemSize ) {\n\n\treturn new BufferAttribute( new Uint16Array( array ), itemSize );\n\n}\n\nfunction Int32Attribute( array, itemSize ) {\n\n\treturn new BufferAttribute( new Int32Array( array ), itemSize );\n\n}\n\nfunction Uint32Attribute( array, itemSize ) {\n\n\treturn new BufferAttribute( new Uint32Array( array ), itemSize );\n\n}\n\nfunction Float32Attribute( array, itemSize ) {\n\n\treturn new BufferAttribute( new Float32Array( array ), itemSize );\n\n}\n\nfunction Float64Attribute( array, itemSize ) {\n\n\treturn new BufferAttribute( new Float64Array( array ), itemSize );\n\n}\n\n// Deprecated\n\nfunction DynamicBufferAttribute( array, itemSize ) {\n\n\tconsole.warn( 'THREE.DynamicBufferAttribute has been removed. Use new THREE.BufferAttribute().setDynamic( true ) instead.' );\n\treturn new BufferAttribute( array, itemSize ).setDynamic( true );\n\n}\n\n\nexport {\n DynamicBufferAttribute,\n Float64Attribute,\n Float32Attribute,\n Uint32Attribute,\n Int32Attribute,\n Uint16Attribute,\n Int16Attribute,\n Uint8ClampedAttribute,\n Uint8Attribute,\n Int8Attribute,\n BufferAttribute\n};\n","import { EventDispatcher } from './EventDispatcher';\nimport { Face3 } from './Face3';\nimport { Matrix3 } from '../math/Matrix3';\nimport { Sphere } from '../math/Sphere';\nimport { Box3 } from '../math/Box3';\nimport { Vector3 } from '../math/Vector3';\nimport { Matrix4 } from '../math/Matrix4';\nimport { Vector2 } from '../math/Vector2';\nimport { Color } from '../math/Color';\nimport { Object3D } from './Object3D';\nimport { _Math } from '../math/Math';\n\n/**\n * @author mrdoob / http://mrdoob.com/\n * @author kile / http://kile.stravaganza.org/\n * @author alteredq / http://alteredqualia.com/\n * @author mikael emtinger / http://gomo.se/\n * @author zz85 / http://www.lab4games.net/zz85/blog\n * @author bhouston / http://clara.io\n */\n\nfunction Geometry() {\n\n\tObject.defineProperty( this, 'id', { value: GeometryIdCount() } );\n\n\tthis.uuid = _Math.generateUUID();\n\n\tthis.name = '';\n\tthis.type = 'Geometry';\n\n\tthis.vertices = [];\n\tthis.colors = [];\n\tthis.faces = [];\n\tthis.faceVertexUvs = [ [] ];\n\n\tthis.morphTargets = [];\n\tthis.morphNormals = [];\n\n\tthis.skinWeights = [];\n\tthis.skinIndices = [];\n\n\tthis.lineDistances = [];\n\n\tthis.boundingBox = null;\n\tthis.boundingSphere = null;\n\n\t// update flags\n\n\tthis.elementsNeedUpdate = false;\n\tthis.verticesNeedUpdate = false;\n\tthis.uvsNeedUpdate = false;\n\tthis.normalsNeedUpdate = false;\n\tthis.colorsNeedUpdate = false;\n\tthis.lineDistancesNeedUpdate = false;\n\tthis.groupsNeedUpdate = false;\n\n}\n\nObject.assign( Geometry.prototype, EventDispatcher.prototype, {\n\n\tisGeometry: true,\n\n\tapplyMatrix: function ( matrix ) {\n\n\t\tvar normalMatrix = new Matrix3().getNormalMatrix( matrix );\n\n\t\tfor ( var i = 0, il = this.vertices.length; i < il; i ++ ) {\n\n\t\t\tvar vertex = this.vertices[ i ];\n\t\t\tvertex.applyMatrix4( matrix );\n\n\t\t}\n\n\t\tfor ( var i = 0, il = this.faces.length; i < il; i ++ ) {\n\n\t\t\tvar face = this.faces[ i ];\n\t\t\tface.normal.applyMatrix3( normalMatrix ).normalize();\n\n\t\t\tfor ( var j = 0, jl = face.vertexNormals.length; j < jl; j ++ ) {\n\n\t\t\t\tface.vertexNormals[ j ].applyMatrix3( normalMatrix ).normalize();\n\n\t\t\t}\n\n\t\t}\n\n\t\tif ( this.boundingBox !== null ) {\n\n\t\t\tthis.computeBoundingBox();\n\n\t\t}\n\n\t\tif ( this.boundingSphere !== null ) {\n\n\t\t\tthis.computeBoundingSphere();\n\n\t\t}\n\n\t\tthis.verticesNeedUpdate = true;\n\t\tthis.normalsNeedUpdate = true;\n\n\t\treturn this;\n\n\t},\n\n\trotateX: function () {\n\n\t\t// rotate geometry around world x-axis\n\n\t\tvar m1;\n\n\t\treturn function rotateX( angle ) {\n\n\t\t\tif ( m1 === undefined ) m1 = new Matrix4();\n\n\t\t\tm1.makeRotationX( angle );\n\n\t\t\tthis.applyMatrix( m1 );\n\n\t\t\treturn this;\n\n\t\t};\n\n\t}(),\n\n\trotateY: function () {\n\n\t\t// rotate geometry around world y-axis\n\n\t\tvar m1;\n\n\t\treturn function rotateY( angle ) {\n\n\t\t\tif ( m1 === undefined ) m1 = new Matrix4();\n\n\t\t\tm1.makeRotationY( angle );\n\n\t\t\tthis.applyMatrix( m1 );\n\n\t\t\treturn this;\n\n\t\t};\n\n\t}(),\n\n\trotateZ: function () {\n\n\t\t// rotate geometry around world z-axis\n\n\t\tvar m1;\n\n\t\treturn function rotateZ( angle ) {\n\n\t\t\tif ( m1 === undefined ) m1 = new Matrix4();\n\n\t\t\tm1.makeRotationZ( angle );\n\n\t\t\tthis.applyMatrix( m1 );\n\n\t\t\treturn this;\n\n\t\t};\n\n\t}(),\n\n\ttranslate: function () {\n\n\t\t// translate geometry\n\n\t\tvar m1;\n\n\t\treturn function translate( x, y, z ) {\n\n\t\t\tif ( m1 === undefined ) m1 = new Matrix4();\n\n\t\t\tm1.makeTranslation( x, y, z );\n\n\t\t\tthis.applyMatrix( m1 );\n\n\t\t\treturn this;\n\n\t\t};\n\n\t}(),\n\n\tscale: function () {\n\n\t\t// scale geometry\n\n\t\tvar m1;\n\n\t\treturn function scale( x, y, z ) {\n\n\t\t\tif ( m1 === undefined ) m1 = new Matrix4();\n\n\t\t\tm1.makeScale( x, y, z );\n\n\t\t\tthis.applyMatrix( m1 );\n\n\t\t\treturn this;\n\n\t\t};\n\n\t}(),\n\n\tlookAt: function () {\n\n\t\tvar obj;\n\n\t\treturn function lookAt( vector ) {\n\n\t\t\tif ( obj === undefined ) obj = new Object3D();\n\n\t\t\tobj.lookAt( vector );\n\n\t\t\tobj.updateMatrix();\n\n\t\t\tthis.applyMatrix( obj.matrix );\n\n\t\t};\n\n\t}(),\n\n\tfromBufferGeometry: function ( geometry ) {\n\n\t\tvar scope = this;\n\n\t\tvar indices = geometry.index !== null ? geometry.index.array : undefined;\n\t\tvar attributes = geometry.attributes;\n\n\t\tvar positions = attributes.position.array;\n\t\tvar normals = attributes.normal !== undefined ? attributes.normal.array : undefined;\n\t\tvar colors = attributes.color !== undefined ? attributes.color.array : undefined;\n\t\tvar uvs = attributes.uv !== undefined ? attributes.uv.array : undefined;\n\t\tvar uvs2 = attributes.uv2 !== undefined ? attributes.uv2.array : undefined;\n\n\t\tif ( uvs2 !== undefined ) this.faceVertexUvs[ 1 ] = [];\n\n\t\tvar tempNormals = [];\n\t\tvar tempUVs = [];\n\t\tvar tempUVs2 = [];\n\n\t\tfor ( var i = 0, j = 0; i < positions.length; i += 3, j += 2 ) {\n\n\t\t\tscope.vertices.push( new Vector3( positions[ i ], positions[ i + 1 ], positions[ i + 2 ] ) );\n\n\t\t\tif ( normals !== undefined ) {\n\n\t\t\t\ttempNormals.push( new Vector3( normals[ i ], normals[ i + 1 ], normals[ i + 2 ] ) );\n\n\t\t\t}\n\n\t\t\tif ( colors !== undefined ) {\n\n\t\t\t\tscope.colors.push( new Color( colors[ i ], colors[ i + 1 ], colors[ i + 2 ] ) );\n\n\t\t\t}\n\n\t\t\tif ( uvs !== undefined ) {\n\n\t\t\t\ttempUVs.push( new Vector2( uvs[ j ], uvs[ j + 1 ] ) );\n\n\t\t\t}\n\n\t\t\tif ( uvs2 !== undefined ) {\n\n\t\t\t\ttempUVs2.push( new Vector2( uvs2[ j ], uvs2[ j + 1 ] ) );\n\n\t\t\t}\n\n\t\t}\n\n\t\tfunction addFace( a, b, c, materialIndex ) {\n\n\t\t\tvar vertexNormals = normals !== undefined ? [ tempNormals[ a ].clone(), tempNormals[ b ].clone(), tempNormals[ c ].clone() ] : [];\n\t\t\tvar vertexColors = colors !== undefined ? [ scope.colors[ a ].clone(), scope.colors[ b ].clone(), scope.colors[ c ].clone() ] : [];\n\n\t\t\tvar face = new Face3( a, b, c, vertexNormals, vertexColors, materialIndex );\n\n\t\t\tscope.faces.push( face );\n\n\t\t\tif ( uvs !== undefined ) {\n\n\t\t\t\tscope.faceVertexUvs[ 0 ].push( [ tempUVs[ a ].clone(), tempUVs[ b ].clone(), tempUVs[ c ].clone() ] );\n\n\t\t\t}\n\n\t\t\tif ( uvs2 !== undefined ) {\n\n\t\t\t\tscope.faceVertexUvs[ 1 ].push( [ tempUVs2[ a ].clone(), tempUVs2[ b ].clone(), tempUVs2[ c ].clone() ] );\n\n\t\t\t}\n\n\t\t}\n\n\t\tif ( indices !== undefined ) {\n\n\t\t\tvar groups = geometry.groups;\n\n\t\t\tif ( groups.length > 0 ) {\n\n\t\t\t\tfor ( var i = 0; i < groups.length; i ++ ) {\n\n\t\t\t\t\tvar group = groups[ i ];\n\n\t\t\t\t\tvar start = group.start;\n\t\t\t\t\tvar count = group.count;\n\n\t\t\t\t\tfor ( var j = start, jl = start + count; j < jl; j += 3 ) {\n\n\t\t\t\t\t\taddFace( indices[ j ], indices[ j + 1 ], indices[ j + 2 ], group.materialIndex );\n\n\t\t\t\t\t}\n\n\t\t\t\t}\n\n\t\t\t} else {\n\n\t\t\t\tfor ( var i = 0; i < indices.length; i += 3 ) {\n\n\t\t\t\t\taddFace( indices[ i ], indices[ i + 1 ], indices[ i + 2 ] );\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t} else {\n\n\t\t\tfor ( var i = 0; i < positions.length / 3; i += 3 ) {\n\n\t\t\t\taddFace( i, i + 1, i + 2 );\n\n\t\t\t}\n\n\t\t}\n\n\t\tthis.computeFaceNormals();\n\n\t\tif ( geometry.boundingBox !== null ) {\n\n\t\t\tthis.boundingBox = geometry.boundingBox.clone();\n\n\t\t}\n\n\t\tif ( geometry.boundingSphere !== null ) {\n\n\t\t\tthis.boundingSphere = geometry.boundingSphere.clone();\n\n\t\t}\n\n\t\treturn this;\n\n\t},\n\n\tcenter: function () {\n\n\t\tthis.computeBoundingBox();\n\n\t\tvar offset = this.boundingBox.getCenter().negate();\n\n\t\tthis.translate( offset.x, offset.y, offset.z );\n\n\t\treturn offset;\n\n\t},\n\n\tnormalize: function () {\n\n\t\tthis.computeBoundingSphere();\n\n\t\tvar center = this.boundingSphere.center;\n\t\tvar radius = this.boundingSphere.radius;\n\n\t\tvar s = radius === 0 ? 1 : 1.0 / radius;\n\n\t\tvar matrix = new Matrix4();\n\t\tmatrix.set(\n\t\t\ts, 0, 0, - s * center.x,\n\t\t\t0, s, 0, - s * center.y,\n\t\t\t0, 0, s, - s * center.z,\n\t\t\t0, 0, 0, 1\n\t\t);\n\n\t\tthis.applyMatrix( matrix );\n\n\t\treturn this;\n\n\t},\n\n\tcomputeFaceNormals: function () {\n\n\t\tvar cb = new Vector3(), ab = new Vector3();\n\n\t\tfor ( var f = 0, fl = this.faces.length; f < fl; f ++ ) {\n\n\t\t\tvar face = this.faces[ f ];\n\n\t\t\tvar vA = this.vertices[ face.a ];\n\t\t\tvar vB = this.vertices[ face.b ];\n\t\t\tvar vC = this.vertices[ face.c ];\n\n\t\t\tcb.subVectors( vC, vB );\n\t\t\tab.subVectors( vA, vB );\n\t\t\tcb.cross( ab );\n\n\t\t\tcb.normalize();\n\n\t\t\tface.normal.copy( cb );\n\n\t\t}\n\n\t},\n\n\tcomputeVertexNormals: function ( areaWeighted ) {\n\n\t\tif ( areaWeighted === undefined ) areaWeighted = true;\n\n\t\tvar v, vl, f, fl, face, vertices;\n\n\t\tvertices = new Array( this.vertices.length );\n\n\t\tfor ( v = 0, vl = this.vertices.length; v < vl; v ++ ) {\n\n\t\t\tvertices[ v ] = new Vector3();\n\n\t\t}\n\n\t\tif ( areaWeighted ) {\n\n\t\t\t// vertex normals weighted by triangle areas\n\t\t\t// http://www.iquilezles.org/www/articles/normals/normals.htm\n\n\t\t\tvar vA, vB, vC;\n\t\t\tvar cb = new Vector3(), ab = new Vector3();\n\n\t\t\tfor ( f = 0, fl = this.faces.length; f < fl; f ++ ) {\n\n\t\t\t\tface = this.faces[ f ];\n\n\t\t\t\tvA = this.vertices[ face.a ];\n\t\t\t\tvB = this.vertices[ face.b ];\n\t\t\t\tvC = this.vertices[ face.c ];\n\n\t\t\t\tcb.subVectors( vC, vB );\n\t\t\t\tab.subVectors( vA, vB );\n\t\t\t\tcb.cross( ab );\n\n\t\t\t\tvertices[ face.a ].add( cb );\n\t\t\t\tvertices[ face.b ].add( cb );\n\t\t\t\tvertices[ face.c ].add( cb );\n\n\t\t\t}\n\n\t\t} else {\n\n\t\t\tthis.computeFaceNormals();\n\n\t\t\tfor ( f = 0, fl = this.faces.length; f < fl; f ++ ) {\n\n\t\t\t\tface = this.faces[ f ];\n\n\t\t\t\tvertices[ face.a ].add( face.normal );\n\t\t\t\tvertices[ face.b ].add( face.normal );\n\t\t\t\tvertices[ face.c ].add( face.normal );\n\n\t\t\t}\n\n\t\t}\n\n\t\tfor ( v = 0, vl = this.vertices.length; v < vl; v ++ ) {\n\n\t\t\tvertices[ v ].normalize();\n\n\t\t}\n\n\t\tfor ( f = 0, fl = this.faces.length; f < fl; f ++ ) {\n\n\t\t\tface = this.faces[ f ];\n\n\t\t\tvar vertexNormals = face.vertexNormals;\n\n\t\t\tif ( vertexNormals.length === 3 ) {\n\n\t\t\t\tvertexNormals[ 0 ].copy( vertices[ face.a ] );\n\t\t\t\tvertexNormals[ 1 ].copy( vertices[ face.b ] );\n\t\t\t\tvertexNormals[ 2 ].copy( vertices[ face.c ] );\n\n\t\t\t} else {\n\n\t\t\t\tvertexNormals[ 0 ] = vertices[ face.a ].clone();\n\t\t\t\tvertexNormals[ 1 ] = vertices[ face.b ].clone();\n\t\t\t\tvertexNormals[ 2 ] = vertices[ face.c ].clone();\n\n\t\t\t}\n\n\t\t}\n\n\t\tif ( this.faces.length > 0 ) {\n\n\t\t\tthis.normalsNeedUpdate = true;\n\n\t\t}\n\n\t},\n\n\tcomputeFlatVertexNormals: function () {\n\n\t\tvar f, fl, face;\n\n\t\tthis.computeFaceNormals();\n\n\t\tfor ( f = 0, fl = this.faces.length; f < fl; f ++ ) {\n\n\t\t\tface = this.faces[ f ];\n\n\t\t\tvar vertexNormals = face.vertexNormals;\n\n\t\t\tif ( vertexNormals.length === 3 ) {\n\n\t\t\t\tvertexNormals[ 0 ].copy( face.normal );\n\t\t\t\tvertexNormals[ 1 ].copy( face.normal );\n\t\t\t\tvertexNormals[ 2 ].copy( face.normal );\n\n\t\t\t} else {\n\n\t\t\t\tvertexNormals[ 0 ] = face.normal.clone();\n\t\t\t\tvertexNormals[ 1 ] = face.normal.clone();\n\t\t\t\tvertexNormals[ 2 ] = face.normal.clone();\n\n\t\t\t}\n\n\t\t}\n\n\t\tif ( this.faces.length > 0 ) {\n\n\t\t\tthis.normalsNeedUpdate = true;\n\n\t\t}\n\n\t},\n\n\tcomputeMorphNormals: function () {\n\n\t\tvar i, il, f, fl, face;\n\n\t\t// save original normals\n\t\t// - create temp variables on first access\n\t\t// otherwise just copy (for faster repeated calls)\n\n\t\tfor ( f = 0, fl = this.faces.length; f < fl; f ++ ) {\n\n\t\t\tface = this.faces[ f ];\n\n\t\t\tif ( ! face.__originalFaceNormal ) {\n\n\t\t\t\tface.__originalFaceNormal = face.normal.clone();\n\n\t\t\t} else {\n\n\t\t\t\tface.__originalFaceNormal.copy( face.normal );\n\n\t\t\t}\n\n\t\t\tif ( ! face.__originalVertexNormals ) face.__originalVertexNormals = [];\n\n\t\t\tfor ( i = 0, il = face.vertexNormals.length; i < il; i ++ ) {\n\n\t\t\t\tif ( ! face.__originalVertexNormals[ i ] ) {\n\n\t\t\t\t\tface.__originalVertexNormals[ i ] = face.vertexNormals[ i ].clone();\n\n\t\t\t\t} else {\n\n\t\t\t\t\tface.__originalVertexNormals[ i ].copy( face.vertexNormals[ i ] );\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t}\n\n\t\t// use temp geometry to compute face and vertex normals for each morph\n\n\t\tvar tmpGeo = new Geometry();\n\t\ttmpGeo.faces = this.faces;\n\n\t\tfor ( i = 0, il = this.morphTargets.length; i < il; i ++ ) {\n\n\t\t\t// create on first access\n\n\t\t\tif ( ! this.morphNormals[ i ] ) {\n\n\t\t\t\tthis.morphNormals[ i ] = {};\n\t\t\t\tthis.morphNormals[ i ].faceNormals = [];\n\t\t\t\tthis.morphNormals[ i ].vertexNormals = [];\n\n\t\t\t\tvar dstNormalsFace = this.morphNormals[ i ].faceNormals;\n\t\t\t\tvar dstNormalsVertex = this.morphNormals[ i ].vertexNormals;\n\n\t\t\t\tvar faceNormal, vertexNormals;\n\n\t\t\t\tfor ( f = 0, fl = this.faces.length; f < fl; f ++ ) {\n\n\t\t\t\t\tfaceNormal = new Vector3();\n\t\t\t\t\tvertexNormals = { a: new Vector3(), b: new Vector3(), c: new Vector3() };\n\n\t\t\t\t\tdstNormalsFace.push( faceNormal );\n\t\t\t\t\tdstNormalsVertex.push( vertexNormals );\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t\tvar morphNormals = this.morphNormals[ i ];\n\n\t\t\t// set vertices to morph target\n\n\t\t\ttmpGeo.vertices = this.morphTargets[ i ].vertices;\n\n\t\t\t// compute morph normals\n\n\t\t\ttmpGeo.computeFaceNormals();\n\t\t\ttmpGeo.computeVertexNormals();\n\n\t\t\t// store morph normals\n\n\t\t\tvar faceNormal, vertexNormals;\n\n\t\t\tfor ( f = 0, fl = this.faces.length; f < fl; f ++ ) {\n\n\t\t\t\tface = this.faces[ f ];\n\n\t\t\t\tfaceNormal = morphNormals.faceNormals[ f ];\n\t\t\t\tvertexNormals = morphNormals.vertexNormals[ f ];\n\n\t\t\t\tfaceNormal.copy( face.normal );\n\n\t\t\t\tvertexNormals.a.copy( face.vertexNormals[ 0 ] );\n\t\t\t\tvertexNormals.b.copy( face.vertexNormals[ 1 ] );\n\t\t\t\tvertexNormals.c.copy( face.vertexNormals[ 2 ] );\n\n\t\t\t}\n\n\t\t}\n\n\t\t// restore original normals\n\n\t\tfor ( f = 0, fl = this.faces.length; f < fl; f ++ ) {\n\n\t\t\tface = this.faces[ f ];\n\n\t\t\tface.normal = face.__originalFaceNormal;\n\t\t\tface.vertexNormals = face.__originalVertexNormals;\n\n\t\t}\n\n\t},\n\n\tcomputeTangents: function () {\n\n\t\tconsole.warn( 'THREE.Geometry: .computeTangents() has been removed.' );\n\n\t},\n\n\tcomputeLineDistances: function () {\n\n\t\tvar d = 0;\n\t\tvar vertices = this.vertices;\n\n\t\tfor ( var i = 0, il = vertices.length; i < il; i ++ ) {\n\n\t\t\tif ( i > 0 ) {\n\n\t\t\t\td += vertices[ i ].distanceTo( vertices[ i - 1 ] );\n\n\t\t\t}\n\n\t\t\tthis.lineDistances[ i ] = d;\n\n\t\t}\n\n\t},\n\n\tcomputeBoundingBox: function () {\n\n\t\tif ( this.boundingBox === null ) {\n\n\t\t\tthis.boundingBox = new Box3();\n\n\t\t}\n\n\t\tthis.boundingBox.setFromPoints( this.vertices );\n\n\t},\n\n\tcomputeBoundingSphere: function () {\n\n\t\tif ( this.boundingSphere === null ) {\n\n\t\t\tthis.boundingSphere = new Sphere();\n\n\t\t}\n\n\t\tthis.boundingSphere.setFromPoints( this.vertices );\n\n\t},\n\n\tmerge: function ( geometry, matrix, materialIndexOffset ) {\n\n\t\tif ( (geometry && geometry.isGeometry) === false ) {\n\n\t\t\tconsole.error( 'THREE.Geometry.merge(): geometry not an instance of THREE.Geometry.', geometry );\n\t\t\treturn;\n\n\t\t}\n\n\t\tvar normalMatrix,\n\t\tvertexOffset = this.vertices.length,\n\t\tvertices1 = this.vertices,\n\t\tvertices2 = geometry.vertices,\n\t\tfaces1 = this.faces,\n\t\tfaces2 = geometry.faces,\n\t\tuvs1 = this.faceVertexUvs[ 0 ],\n\t\tuvs2 = geometry.faceVertexUvs[ 0 ],\n\t\tcolors1 = this.colors,\n\t\tcolors2 = geometry.colors;\n\n\t\tif ( materialIndexOffset === undefined ) materialIndexOffset = 0;\n\n\t\tif ( matrix !== undefined ) {\n\n\t\t\tnormalMatrix = new Matrix3().getNormalMatrix( matrix );\n\n\t\t}\n\n\t\t// vertices\n\n\t\tfor ( var i = 0, il = vertices2.length; i < il; i ++ ) {\n\n\t\t\tvar vertex = vertices2[ i ];\n\n\t\t\tvar vertexCopy = vertex.clone();\n\n\t\t\tif ( matrix !== undefined ) vertexCopy.applyMatrix4( matrix );\n\n\t\t\tvertices1.push( vertexCopy );\n\n\t\t}\n\n\t\t// colors\n\n\t\tfor ( var i = 0, il = colors2.length; i < il; i ++ ) {\n\n\t\t\tcolors1.push( colors2[ i ].clone() );\n\n\t\t}\n\n\t\t// faces\n\n\t\tfor ( i = 0, il = faces2.length; i < il; i ++ ) {\n\n\t\t\tvar face = faces2[ i ], faceCopy, normal, color,\n\t\t\tfaceVertexNormals = face.vertexNormals,\n\t\t\tfaceVertexColors = face.vertexColors;\n\n\t\t\tfaceCopy = new Face3( face.a + vertexOffset, face.b + vertexOffset, face.c + vertexOffset );\n\t\t\tfaceCopy.normal.copy( face.normal );\n\n\t\t\tif ( normalMatrix !== undefined ) {\n\n\t\t\t\tfaceCopy.normal.applyMatrix3( normalMatrix ).normalize();\n\n\t\t\t}\n\n\t\t\tfor ( var j = 0, jl = faceVertexNormals.length; j < jl; j ++ ) {\n\n\t\t\t\tnormal = faceVertexNormals[ j ].clone();\n\n\t\t\t\tif ( normalMatrix !== undefined ) {\n\n\t\t\t\t\tnormal.applyMatrix3( normalMatrix ).normalize();\n\n\t\t\t\t}\n\n\t\t\t\tfaceCopy.vertexNormals.push( normal );\n\n\t\t\t}\n\n\t\t\tfaceCopy.color.copy( face.color );\n\n\t\t\tfor ( var j = 0, jl = faceVertexColors.length; j < jl; j ++ ) {\n\n\t\t\t\tcolor = faceVertexColors[ j ];\n\t\t\t\tfaceCopy.vertexColors.push( color.clone() );\n\n\t\t\t}\n\n\t\t\tfaceCopy.materialIndex = face.materialIndex + materialIndexOffset;\n\n\t\t\tfaces1.push( faceCopy );\n\n\t\t}\n\n\t\t// uvs\n\n\t\tfor ( i = 0, il = uvs2.length; i < il; i ++ ) {\n\n\t\t\tvar uv = uvs2[ i ], uvCopy = [];\n\n\t\t\tif ( uv === undefined ) {\n\n\t\t\t\tcontinue;\n\n\t\t\t}\n\n\t\t\tfor ( var j = 0, jl = uv.length; j < jl; j ++ ) {\n\n\t\t\t\tuvCopy.push( uv[ j ].clone() );\n\n\t\t\t}\n\n\t\t\tuvs1.push( uvCopy );\n\n\t\t}\n\n\t},\n\n\tmergeMesh: function ( mesh ) {\n\n\t\tif ( (mesh && mesh.isMesh) === false ) {\n\n\t\t\tconsole.error( 'THREE.Geometry.mergeMesh(): mesh not an instance of THREE.Mesh.', mesh );\n\t\t\treturn;\n\n\t\t}\n\n\t\tmesh.matrixAutoUpdate && mesh.updateMatrix();\n\n\t\tthis.merge( mesh.geometry, mesh.matrix );\n\n\t},\n\n\t/*\n\t * Checks for duplicate vertices with hashmap.\n\t * Duplicated vertices are removed\n\t * and faces' vertices are updated.\n\t */\n\n\tmergeVertices: function () {\n\n\t\tvar verticesMap = {}; // Hashmap for looking up vertices by position coordinates (and making sure they are unique)\n\t\tvar unique = [], changes = [];\n\n\t\tvar v, key;\n\t\tvar precisionPoints = 4; // number of decimal points, e.g. 4 for epsilon of 0.0001\n\t\tvar precision = Math.pow( 10, precisionPoints );\n\t\tvar i, il, face;\n\t\tvar indices, j, jl;\n\n\t\tfor ( i = 0, il = this.vertices.length; i < il; i ++ ) {\n\n\t\t\tv = this.vertices[ i ];\n\t\t\tkey = Math.round( v.x * precision ) + '_' + Math.round( v.y * precision ) + '_' + Math.round( v.z * precision );\n\n\t\t\tif ( verticesMap[ key ] === undefined ) {\n\n\t\t\t\tverticesMap[ key ] = i;\n\t\t\t\tunique.push( this.vertices[ i ] );\n\t\t\t\tchanges[ i ] = unique.length - 1;\n\n\t\t\t} else {\n\n\t\t\t\t//console.log('Duplicate vertex found. ', i, ' could be using ', verticesMap[key]);\n\t\t\t\tchanges[ i ] = changes[ verticesMap[ key ] ];\n\n\t\t\t}\n\n\t\t}\n\n\n\t\t// if faces are completely degenerate after merging vertices, we\n\t\t// have to remove them from the geometry.\n\t\tvar faceIndicesToRemove = [];\n\n\t\tfor ( i = 0, il = this.faces.length; i < il; i ++ ) {\n\n\t\t\tface = this.faces[ i ];\n\n\t\t\tface.a = changes[ face.a ];\n\t\t\tface.b = changes[ face.b ];\n\t\t\tface.c = changes[ face.c ];\n\n\t\t\tindices = [ face.a, face.b, face.c ];\n\n\t\t\tvar dupIndex = - 1;\n\n\t\t\t// if any duplicate vertices are found in a Face3\n\t\t\t// we have to remove the face as nothing can be saved\n\t\t\tfor ( var n = 0; n < 3; n ++ ) {\n\n\t\t\t\tif ( indices[ n ] === indices[ ( n + 1 ) % 3 ] ) {\n\n\t\t\t\t\tdupIndex = n;\n\t\t\t\t\tfaceIndicesToRemove.push( i );\n\t\t\t\t\tbreak;\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t}\n\n\t\tfor ( i = faceIndicesToRemove.length - 1; i >= 0; i -- ) {\n\n\t\t\tvar idx = faceIndicesToRemove[ i ];\n\n\t\t\tthis.faces.splice( idx, 1 );\n\n\t\t\tfor ( j = 0, jl = this.faceVertexUvs.length; j < jl; j ++ ) {\n\n\t\t\t\tthis.faceVertexUvs[ j ].splice( idx, 1 );\n\n\t\t\t}\n\n\t\t}\n\n\t\t// Use unique set of vertices\n\n\t\tvar diff = this.vertices.length - unique.length;\n\t\tthis.vertices = unique;\n\t\treturn diff;\n\n\t},\n\n\tsortFacesByMaterialIndex: function () {\n\n\t\tvar faces = this.faces;\n\t\tvar length = faces.length;\n\n\t\t// tag faces\n\n\t\tfor ( var i = 0; i < length; i ++ ) {\n\n\t\t\tfaces[ i ]._id = i;\n\n\t\t}\n\n\t\t// sort faces\n\n\t\tfunction materialIndexSort( a, b ) {\n\n\t\t\treturn a.materialIndex - b.materialIndex;\n\n\t\t}\n\n\t\tfaces.sort( materialIndexSort );\n\n\t\t// sort uvs\n\n\t\tvar uvs1 = this.faceVertexUvs[ 0 ];\n\t\tvar uvs2 = this.faceVertexUvs[ 1 ];\n\n\t\tvar newUvs1, newUvs2;\n\n\t\tif ( uvs1 && uvs1.length === length ) newUvs1 = [];\n\t\tif ( uvs2 && uvs2.length === length ) newUvs2 = [];\n\n\t\tfor ( var i = 0; i < length; i ++ ) {\n\n\t\t\tvar id = faces[ i ]._id;\n\n\t\t\tif ( newUvs1 ) newUvs1.push( uvs1[ id ] );\n\t\t\tif ( newUvs2 ) newUvs2.push( uvs2[ id ] );\n\n\t\t}\n\n\t\tif ( newUvs1 ) this.faceVertexUvs[ 0 ] = newUvs1;\n\t\tif ( newUvs2 ) this.faceVertexUvs[ 1 ] = newUvs2;\n\n\t},\n\n\ttoJSON: function () {\n\n\t\tvar data = {\n\t\t\tmetadata: {\n\t\t\t\tversion: 4.4,\n\t\t\t\ttype: 'Geometry',\n\t\t\t\tgenerator: 'Geometry.toJSON'\n\t\t\t}\n\t\t};\n\n\t\t// standard Geometry serialization\n\n\t\tdata.uuid = this.uuid;\n\t\tdata.type = this.type;\n\t\tif ( this.name !== '' ) data.name = this.name;\n\n\t\tif ( this.parameters !== undefined ) {\n\n\t\t\tvar parameters = this.parameters;\n\n\t\t\tfor ( var key in parameters ) {\n\n\t\t\t\tif ( parameters[ key ] !== undefined ) data[ key ] = parameters[ key ];\n\n\t\t\t}\n\n\t\t\treturn data;\n\n\t\t}\n\n\t\tvar vertices = [];\n\n\t\tfor ( var i = 0; i < this.vertices.length; i ++ ) {\n\n\t\t\tvar vertex = this.vertices[ i ];\n\t\t\tvertices.push( vertex.x, vertex.y, vertex.z );\n\n\t\t}\n\n\t\tvar faces = [];\n\t\tvar normals = [];\n\t\tvar normalsHash = {};\n\t\tvar colors = [];\n\t\tvar colorsHash = {};\n\t\tvar uvs = [];\n\t\tvar uvsHash = {};\n\n\t\tfor ( var i = 0; i < this.faces.length; i ++ ) {\n\n\t\t\tvar face = this.faces[ i ];\n\n\t\t\tvar hasMaterial = true;\n\t\t\tvar hasFaceUv = false; // deprecated\n\t\t\tvar hasFaceVertexUv = this.faceVertexUvs[ 0 ][ i ] !== undefined;\n\t\t\tvar hasFaceNormal = face.normal.length() > 0;\n\t\t\tvar hasFaceVertexNormal = face.vertexNormals.length > 0;\n\t\t\tvar hasFaceColor = face.color.r !== 1 || face.color.g !== 1 || face.color.b !== 1;\n\t\t\tvar hasFaceVertexColor = face.vertexColors.length > 0;\n\n\t\t\tvar faceType = 0;\n\n\t\t\tfaceType = setBit( faceType, 0, 0 ); // isQuad\n\t\t\tfaceType = setBit( faceType, 1, hasMaterial );\n\t\t\tfaceType = setBit( faceType, 2, hasFaceUv );\n\t\t\tfaceType = setBit( faceType, 3, hasFaceVertexUv );\n\t\t\tfaceType = setBit( faceType, 4, hasFaceNormal );\n\t\t\tfaceType = setBit( faceType, 5, hasFaceVertexNormal );\n\t\t\tfaceType = setBit( faceType, 6, hasFaceColor );\n\t\t\tfaceType = setBit( faceType, 7, hasFaceVertexColor );\n\n\t\t\tfaces.push( faceType );\n\t\t\tfaces.push( face.a, face.b, face.c );\n\t\t\tfaces.push( face.materialIndex );\n\n\t\t\tif ( hasFaceVertexUv ) {\n\n\t\t\t\tvar faceVertexUvs = this.faceVertexUvs[ 0 ][ i ];\n\n\t\t\t\tfaces.push(\n\t\t\t\t\tgetUvIndex( faceVertexUvs[ 0 ] ),\n\t\t\t\t\tgetUvIndex( faceVertexUvs[ 1 ] ),\n\t\t\t\t\tgetUvIndex( faceVertexUvs[ 2 ] )\n\t\t\t\t);\n\n\t\t\t}\n\n\t\t\tif ( hasFaceNormal ) {\n\n\t\t\t\tfaces.push( getNormalIndex( face.normal ) );\n\n\t\t\t}\n\n\t\t\tif ( hasFaceVertexNormal ) {\n\n\t\t\t\tvar vertexNormals = face.vertexNormals;\n\n\t\t\t\tfaces.push(\n\t\t\t\t\tgetNormalIndex( vertexNormals[ 0 ] ),\n\t\t\t\t\tgetNormalIndex( vertexNormals[ 1 ] ),\n\t\t\t\t\tgetNormalIndex( vertexNormals[ 2 ] )\n\t\t\t\t);\n\n\t\t\t}\n\n\t\t\tif ( hasFaceColor ) {\n\n\t\t\t\tfaces.push( getColorIndex( face.color ) );\n\n\t\t\t}\n\n\t\t\tif ( hasFaceVertexColor ) {\n\n\t\t\t\tvar vertexColors = face.vertexColors;\n\n\t\t\t\tfaces.push(\n\t\t\t\t\tgetColorIndex( vertexColors[ 0 ] ),\n\t\t\t\t\tgetColorIndex( vertexColors[ 1 ] ),\n\t\t\t\t\tgetColorIndex( vertexColors[ 2 ] )\n\t\t\t\t);\n\n\t\t\t}\n\n\t\t}\n\n\t\tfunction setBit( value, position, enabled ) {\n\n\t\t\treturn enabled ? value | ( 1 << position ) : value & ( ~ ( 1 << position ) );\n\n\t\t}\n\n\t\tfunction getNormalIndex( normal ) {\n\n\t\t\tvar hash = normal.x.toString() + normal.y.toString() + normal.z.toString();\n\n\t\t\tif ( normalsHash[ hash ] !== undefined ) {\n\n\t\t\t\treturn normalsHash[ hash ];\n\n\t\t\t}\n\n\t\t\tnormalsHash[ hash ] = normals.length / 3;\n\t\t\tnormals.push( normal.x, normal.y, normal.z );\n\n\t\t\treturn normalsHash[ hash ];\n\n\t\t}\n\n\t\tfunction getColorIndex( color ) {\n\n\t\t\tvar hash = color.r.toString() + color.g.toString() + color.b.toString();\n\n\t\t\tif ( colorsHash[ hash ] !== undefined ) {\n\n\t\t\t\treturn colorsHash[ hash ];\n\n\t\t\t}\n\n\t\t\tcolorsHash[ hash ] = colors.length;\n\t\t\tcolors.push( color.getHex() );\n\n\t\t\treturn colorsHash[ hash ];\n\n\t\t}\n\n\t\tfunction getUvIndex( uv ) {\n\n\t\t\tvar hash = uv.x.toString() + uv.y.toString();\n\n\t\t\tif ( uvsHash[ hash ] !== undefined ) {\n\n\t\t\t\treturn uvsHash[ hash ];\n\n\t\t\t}\n\n\t\t\tuvsHash[ hash ] = uvs.length / 2;\n\t\t\tuvs.push( uv.x, uv.y );\n\n\t\t\treturn uvsHash[ hash ];\n\n\t\t}\n\n\t\tdata.data = {};\n\n\t\tdata.data.vertices = vertices;\n\t\tdata.data.normals = normals;\n\t\tif ( colors.length > 0 ) data.data.colors = colors;\n\t\tif ( uvs.length > 0 ) data.data.uvs = [ uvs ]; // temporal backward compatibility\n\t\tdata.data.faces = faces;\n\n\t\treturn data;\n\n\t},\n\n\tclone: function () {\n\n\t\t/*\n\t\t// Handle primitives\n\n\t\tvar parameters = this.parameters;\n\n\t\tif ( parameters !== undefined ) {\n\n\t\t\tvar values = [];\n\n\t\t\tfor ( var key in parameters ) {\n\n\t\t\t\tvalues.push( parameters[ key ] );\n\n\t\t\t}\n\n\t\t\tvar geometry = Object.create( this.constructor.prototype );\n\t\t\tthis.constructor.apply( geometry, values );\n\t\t\treturn geometry;\n\n\t\t}\n\n\t\treturn new this.constructor().copy( this );\n\t\t*/\n\n\t\treturn new Geometry().copy( this );\n\n\t},\n\n\tcopy: function ( source ) {\n\n\t\tthis.vertices = [];\n\t\tthis.faces = [];\n\t\tthis.faceVertexUvs = [ [] ];\n\t\tthis.colors = [];\n\n\t\tvar vertices = source.vertices;\n\n\t\tfor ( var i = 0, il = vertices.length; i < il; i ++ ) {\n\n\t\t\tthis.vertices.push( vertices[ i ].clone() );\n\n\t\t}\n\n\t\tvar colors = source.colors;\n\n\t\tfor ( var i = 0, il = colors.length; i < il; i ++ ) {\n\n\t\t\tthis.colors.push( colors[ i ].clone() );\n\n\t\t}\n\n\t\tvar faces = source.faces;\n\n\t\tfor ( var i = 0, il = faces.length; i < il; i ++ ) {\n\n\t\t\tthis.faces.push( faces[ i ].clone() );\n\n\t\t}\n\n\t\tfor ( var i = 0, il = source.faceVertexUvs.length; i < il; i ++ ) {\n\n\t\t\tvar faceVertexUvs = source.faceVertexUvs[ i ];\n\n\t\t\tif ( this.faceVertexUvs[ i ] === undefined ) {\n\n\t\t\t\tthis.faceVertexUvs[ i ] = [];\n\n\t\t\t}\n\n\t\t\tfor ( var j = 0, jl = faceVertexUvs.length; j < jl; j ++ ) {\n\n\t\t\t\tvar uvs = faceVertexUvs[ j ], uvsCopy = [];\n\n\t\t\t\tfor ( var k = 0, kl = uvs.length; k < kl; k ++ ) {\n\n\t\t\t\t\tvar uv = uvs[ k ];\n\n\t\t\t\t\tuvsCopy.push( uv.clone() );\n\n\t\t\t\t}\n\n\t\t\t\tthis.faceVertexUvs[ i ].push( uvsCopy );\n\n\t\t\t}\n\n\t\t}\n\n\t\treturn this;\n\n\t},\n\n\tdispose: function () {\n\n\t\tthis.dispatchEvent( { type: 'dispose' } );\n\n\t}\n\n} );\n\nvar count = 0;\nfunction GeometryIdCount() { return count++; };\n\n\nexport { GeometryIdCount, Geometry };\n","import { Geometry } from './Geometry';\nimport { EventDispatcher } from './EventDispatcher';\nimport { Vector2 } from '../math/Vector2';\nimport { _Math } from '../math/Math';\nimport { GeometryIdCount } from './Geometry';\n\n/**\n * @author mrdoob / http://mrdoob.com/\n */\n\nfunction DirectGeometry() {\n\n\tObject.defineProperty( this, 'id', { value: GeometryIdCount() } );\n\n\tthis.uuid = _Math.generateUUID();\n\n\tthis.name = '';\n\tthis.type = 'DirectGeometry';\n\n\tthis.indices = [];\n\tthis.vertices = [];\n\tthis.normals = [];\n\tthis.colors = [];\n\tthis.uvs = [];\n\tthis.uvs2 = [];\n\n\tthis.groups = [];\n\n\tthis.morphTargets = {};\n\n\tthis.skinWeights = [];\n\tthis.skinIndices = [];\n\n\t// this.lineDistances = [];\n\n\tthis.boundingBox = null;\n\tthis.boundingSphere = null;\n\n\t// update flags\n\n\tthis.verticesNeedUpdate = false;\n\tthis.normalsNeedUpdate = false;\n\tthis.colorsNeedUpdate = false;\n\tthis.uvsNeedUpdate = false;\n\tthis.groupsNeedUpdate = false;\n\n}\n\nObject.assign( DirectGeometry.prototype, EventDispatcher.prototype, {\n\n\tcomputeBoundingBox: Geometry.prototype.computeBoundingBox,\n\tcomputeBoundingSphere: Geometry.prototype.computeBoundingSphere,\n\n\tcomputeFaceNormals: function () {\n\n\t\tconsole.warn( 'THREE.DirectGeometry: computeFaceNormals() is not a method of this type of geometry.' );\n\n\t},\n\n\tcomputeVertexNormals: function () {\n\n\t\tconsole.warn( 'THREE.DirectGeometry: computeVertexNormals() is not a method of this type of geometry.' );\n\n\t},\n\n\tcomputeGroups: function ( geometry ) {\n\n\t\tvar group;\n\t\tvar groups = [];\n\t\tvar materialIndex;\n\n\t\tvar faces = geometry.faces;\n\n\t\tfor ( var i = 0; i < faces.length; i ++ ) {\n\n\t\t\tvar face = faces[ i ];\n\n\t\t\t// materials\n\n\t\t\tif ( face.materialIndex !== materialIndex ) {\n\n\t\t\t\tmaterialIndex = face.materialIndex;\n\n\t\t\t\tif ( group !== undefined ) {\n\n\t\t\t\t\tgroup.count = ( i * 3 ) - group.start;\n\t\t\t\t\tgroups.push( group );\n\n\t\t\t\t}\n\n\t\t\t\tgroup = {\n\t\t\t\t\tstart: i * 3,\n\t\t\t\t\tmaterialIndex: materialIndex\n\t\t\t\t};\n\n\t\t\t}\n\n\t\t}\n\n\t\tif ( group !== undefined ) {\n\n\t\t\tgroup.count = ( i * 3 ) - group.start;\n\t\t\tgroups.push( group );\n\n\t\t}\n\n\t\tthis.groups = groups;\n\n\t},\n\n\tfromGeometry: function ( geometry ) {\n\n\t\tvar faces = geometry.faces;\n\t\tvar vertices = geometry.vertices;\n\t\tvar faceVertexUvs = geometry.faceVertexUvs;\n\n\t\tvar hasFaceVertexUv = faceVertexUvs[ 0 ] && faceVertexUvs[ 0 ].length > 0;\n\t\tvar hasFaceVertexUv2 = faceVertexUvs[ 1 ] && faceVertexUvs[ 1 ].length > 0;\n\n\t\t// morphs\n\n\t\tvar morphTargets = geometry.morphTargets;\n\t\tvar morphTargetsLength = morphTargets.length;\n\n\t\tvar morphTargetsPosition;\n\n\t\tif ( morphTargetsLength > 0 ) {\n\n\t\t\tmorphTargetsPosition = [];\n\n\t\t\tfor ( var i = 0; i < morphTargetsLength; i ++ ) {\n\n\t\t\t\tmorphTargetsPosition[ i ] = [];\n\n\t\t\t}\n\n\t\t\tthis.morphTargets.position = morphTargetsPosition;\n\n\t\t}\n\n\t\tvar morphNormals = geometry.morphNormals;\n\t\tvar morphNormalsLength = morphNormals.length;\n\n\t\tvar morphTargetsNormal;\n\n\t\tif ( morphNormalsLength > 0 ) {\n\n\t\t\tmorphTargetsNormal = [];\n\n\t\t\tfor ( var i = 0; i < morphNormalsLength; i ++ ) {\n\n\t\t\t\tmorphTargetsNormal[ i ] = [];\n\n\t\t\t}\n\n\t\t\tthis.morphTargets.normal = morphTargetsNormal;\n\n\t\t}\n\n\t\t// skins\n\n\t\tvar skinIndices = geometry.skinIndices;\n\t\tvar skinWeights = geometry.skinWeights;\n\n\t\tvar hasSkinIndices = skinIndices.length === vertices.length;\n\t\tvar hasSkinWeights = skinWeights.length === vertices.length;\n\n\t\t//\n\n\t\tfor ( var i = 0; i < faces.length; i ++ ) {\n\n\t\t\tvar face = faces[ i ];\n\n\t\t\tthis.vertices.push( vertices[ face.a ], vertices[ face.b ], vertices[ face.c ] );\n\n\t\t\tvar vertexNormals = face.vertexNormals;\n\n\t\t\tif ( vertexNormals.length === 3 ) {\n\n\t\t\t\tthis.normals.push( vertexNormals[ 0 ], vertexNormals[ 1 ], vertexNormals[ 2 ] );\n\n\t\t\t} else {\n\n\t\t\t\tvar normal = face.normal;\n\n\t\t\t\tthis.normals.push( normal, normal, normal );\n\n\t\t\t}\n\n\t\t\tvar vertexColors = face.vertexColors;\n\n\t\t\tif ( vertexColors.length === 3 ) {\n\n\t\t\t\tthis.colors.push( vertexColors[ 0 ], vertexColors[ 1 ], vertexColors[ 2 ] );\n\n\t\t\t} else {\n\n\t\t\t\tvar color = face.color;\n\n\t\t\t\tthis.colors.push( color, color, color );\n\n\t\t\t}\n\n\t\t\tif ( hasFaceVertexUv === true ) {\n\n\t\t\t\tvar vertexUvs = faceVertexUvs[ 0 ][ i ];\n\n\t\t\t\tif ( vertexUvs !== undefined ) {\n\n\t\t\t\t\tthis.uvs.push( vertexUvs[ 0 ], vertexUvs[ 1 ], vertexUvs[ 2 ] );\n\n\t\t\t\t} else {\n\n\t\t\t\t\tconsole.warn( 'THREE.DirectGeometry.fromGeometry(): Undefined vertexUv ', i );\n\n\t\t\t\t\tthis.uvs.push( new Vector2(), new Vector2(), new Vector2() );\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t\tif ( hasFaceVertexUv2 === true ) {\n\n\t\t\t\tvar vertexUvs = faceVertexUvs[ 1 ][ i ];\n\n\t\t\t\tif ( vertexUvs !== undefined ) {\n\n\t\t\t\t\tthis.uvs2.push( vertexUvs[ 0 ], vertexUvs[ 1 ], vertexUvs[ 2 ] );\n\n\t\t\t\t} else {\n\n\t\t\t\t\tconsole.warn( 'THREE.DirectGeometry.fromGeometry(): Undefined vertexUv2 ', i );\n\n\t\t\t\t\tthis.uvs2.push( new Vector2(), new Vector2(), new Vector2() );\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t\t// morphs\n\n\t\t\tfor ( var j = 0; j < morphTargetsLength; j ++ ) {\n\n\t\t\t\tvar morphTarget = morphTargets[ j ].vertices;\n\n\t\t\t\tmorphTargetsPosition[ j ].push( morphTarget[ face.a ], morphTarget[ face.b ], morphTarget[ face.c ] );\n\n\t\t\t}\n\n\t\t\tfor ( var j = 0; j < morphNormalsLength; j ++ ) {\n\n\t\t\t\tvar morphNormal = morphNormals[ j ].vertexNormals[ i ];\n\n\t\t\t\tmorphTargetsNormal[ j ].push( morphNormal.a, morphNormal.b, morphNormal.c );\n\n\t\t\t}\n\n\t\t\t// skins\n\n\t\t\tif ( hasSkinIndices ) {\n\n\t\t\t\tthis.skinIndices.push( skinIndices[ face.a ], skinIndices[ face.b ], skinIndices[ face.c ] );\n\n\t\t\t}\n\n\t\t\tif ( hasSkinWeights ) {\n\n\t\t\t\tthis.skinWeights.push( skinWeights[ face.a ], skinWeights[ face.b ], skinWeights[ face.c ] );\n\n\t\t\t}\n\n\t\t}\n\n\t\tthis.computeGroups( geometry );\n\n\t\tthis.verticesNeedUpdate = geometry.verticesNeedUpdate;\n\t\tthis.normalsNeedUpdate = geometry.normalsNeedUpdate;\n\t\tthis.colorsNeedUpdate = geometry.colorsNeedUpdate;\n\t\tthis.uvsNeedUpdate = geometry.uvsNeedUpdate;\n\t\tthis.groupsNeedUpdate = geometry.groupsNeedUpdate;\n\n\t\treturn this;\n\n\t},\n\n\tdispose: function () {\n\n\t\tthis.dispatchEvent( { type: 'dispose' } );\n\n\t}\n\n} );\n\n\nexport { DirectGeometry };\n","import { Vector3 } from '../math/Vector3';\nimport { Box3 } from '../math/Box3';\nimport { EventDispatcher } from './EventDispatcher';\nimport { BufferAttribute, Float32Attribute } from './BufferAttribute';\nimport { Sphere } from '../math/Sphere';\nimport { DirectGeometry } from './DirectGeometry';\nimport { Object3D } from './Object3D';\nimport { Matrix4 } from '../math/Matrix4';\nimport { Matrix3 } from '../math/Matrix3';\nimport { _Math } from '../math/Math';\nimport { GeometryIdCount } from './Geometry';\n\n/**\n * @author alteredq / http://alteredqualia.com/\n * @author mrdoob / http://mrdoob.com/\n */\n\nfunction BufferGeometry() {\n\n\tObject.defineProperty( this, 'id', { value: GeometryIdCount() } );\n\n\tthis.uuid = _Math.generateUUID();\n\n\tthis.name = '';\n\tthis.type = 'BufferGeometry';\n\n\tthis.index = null;\n\tthis.attributes = {};\n\n\tthis.morphAttributes = {};\n\n\tthis.groups = [];\n\n\tthis.boundingBox = null;\n\tthis.boundingSphere = null;\n\n\tthis.drawRange = { start: 0, count: Infinity };\n\n}\n\nObject.assign( BufferGeometry.prototype, EventDispatcher.prototype, {\n\n\tisBufferGeometry: true,\n\n\tgetIndex: function () {\n\n\t\treturn this.index;\n\n\t},\n\n\tsetIndex: function ( index ) {\n\n\t\tthis.index = index;\n\n\t},\n\n\taddAttribute: function ( name, attribute ) {\n\n\t\tif ( (attribute && attribute.isBufferAttribute) === false && (attribute && attribute.isInterleavedBufferAttribute) === false ) {\n\n\t\t\tconsole.warn( 'THREE.BufferGeometry: .addAttribute() now expects ( name, attribute ).' );\n\n\t\t\tthis.addAttribute( name, new BufferAttribute( arguments[ 1 ], arguments[ 2 ] ) );\n\n\t\t\treturn;\n\n\t\t}\n\n\t\tif ( name === 'index' ) {\n\n\t\t\tconsole.warn( 'THREE.BufferGeometry.addAttribute: Use .setIndex() for index attribute.' );\n\t\t\tthis.setIndex( attribute );\n\n\t\t\treturn;\n\n\t\t}\n\n\t\tthis.attributes[ name ] = attribute;\n\n\t\treturn this;\n\n\t},\n\n\tgetAttribute: function ( name ) {\n\n\t\treturn this.attributes[ name ];\n\n\t},\n\n\tremoveAttribute: function ( name ) {\n\n\t\tdelete this.attributes[ name ];\n\n\t\treturn this;\n\n\t},\n\n\taddGroup: function ( start, count, materialIndex ) {\n\n\t\tthis.groups.push( {\n\n\t\t\tstart: start,\n\t\t\tcount: count,\n\t\t\tmaterialIndex: materialIndex !== undefined ? materialIndex : 0\n\n\t\t} );\n\n\t},\n\n\tclearGroups: function () {\n\n\t\tthis.groups = [];\n\n\t},\n\n\tsetDrawRange: function ( start, count ) {\n\n\t\tthis.drawRange.start = start;\n\t\tthis.drawRange.count = count;\n\n\t},\n\n\tapplyMatrix: function ( matrix ) {\n\n\t\tvar position = this.attributes.position;\n\n\t\tif ( position !== undefined ) {\n\n\t\t\tmatrix.applyToVector3Array( position.array );\n\t\t\tposition.needsUpdate = true;\n\n\t\t}\n\n\t\tvar normal = this.attributes.normal;\n\n\t\tif ( normal !== undefined ) {\n\n\t\t\tvar normalMatrix = new Matrix3().getNormalMatrix( matrix );\n\n\t\t\tnormalMatrix.applyToVector3Array( normal.array );\n\t\t\tnormal.needsUpdate = true;\n\n\t\t}\n\n\t\tif ( this.boundingBox !== null ) {\n\n\t\t\tthis.computeBoundingBox();\n\n\t\t}\n\n\t\tif ( this.boundingSphere !== null ) {\n\n\t\t\tthis.computeBoundingSphere();\n\n\t\t}\n\n\t\treturn this;\n\n\t},\n\n\trotateX: function () {\n\n\t\t// rotate geometry around world x-axis\n\n\t\tvar m1;\n\n\t\treturn function rotateX( angle ) {\n\n\t\t\tif ( m1 === undefined ) m1 = new Matrix4();\n\n\t\t\tm1.makeRotationX( angle );\n\n\t\t\tthis.applyMatrix( m1 );\n\n\t\t\treturn this;\n\n\t\t};\n\n\t}(),\n\n\trotateY: function () {\n\n\t\t// rotate geometry around world y-axis\n\n\t\tvar m1;\n\n\t\treturn function rotateY( angle ) {\n\n\t\t\tif ( m1 === undefined ) m1 = new Matrix4();\n\n\t\t\tm1.makeRotationY( angle );\n\n\t\t\tthis.applyMatrix( m1 );\n\n\t\t\treturn this;\n\n\t\t};\n\n\t}(),\n\n\trotateZ: function () {\n\n\t\t// rotate geometry around world z-axis\n\n\t\tvar m1;\n\n\t\treturn function rotateZ( angle ) {\n\n\t\t\tif ( m1 === undefined ) m1 = new Matrix4();\n\n\t\t\tm1.makeRotationZ( angle );\n\n\t\t\tthis.applyMatrix( m1 );\n\n\t\t\treturn this;\n\n\t\t};\n\n\t}(),\n\n\ttranslate: function () {\n\n\t\t// translate geometry\n\n\t\tvar m1;\n\n\t\treturn function translate( x, y, z ) {\n\n\t\t\tif ( m1 === undefined ) m1 = new Matrix4();\n\n\t\t\tm1.makeTranslation( x, y, z );\n\n\t\t\tthis.applyMatrix( m1 );\n\n\t\t\treturn this;\n\n\t\t};\n\n\t}(),\n\n\tscale: function () {\n\n\t\t// scale geometry\n\n\t\tvar m1;\n\n\t\treturn function scale( x, y, z ) {\n\n\t\t\tif ( m1 === undefined ) m1 = new Matrix4();\n\n\t\t\tm1.makeScale( x, y, z );\n\n\t\t\tthis.applyMatrix( m1 );\n\n\t\t\treturn this;\n\n\t\t};\n\n\t}(),\n\n\tlookAt: function () {\n\n\t\tvar obj;\n\n\t\treturn function lookAt( vector ) {\n\n\t\t\tif ( obj === undefined ) obj = new Object3D();\n\n\t\t\tobj.lookAt( vector );\n\n\t\t\tobj.updateMatrix();\n\n\t\t\tthis.applyMatrix( obj.matrix );\n\n\t\t};\n\n\t}(),\n\n\tcenter: function () {\n\n\t\tthis.computeBoundingBox();\n\n\t\tvar offset = this.boundingBox.getCenter().negate();\n\n\t\tthis.translate( offset.x, offset.y, offset.z );\n\n\t\treturn offset;\n\n\t},\n\n\tsetFromObject: function ( object ) {\n\n\t\t// console.log( 'THREE.BufferGeometry.setFromObject(). Converting', object, this );\n\n\t\tvar geometry = object.geometry;\n\n\t\tif ( (object && object.isPoints) || (object && object.isLine) ) {\n\n\t\t\tvar positions = new Float32Attribute( geometry.vertices.length * 3, 3 );\n\t\t\tvar colors = new Float32Attribute( geometry.colors.length * 3, 3 );\n\n\t\t\tthis.addAttribute( 'position', positions.copyVector3sArray( geometry.vertices ) );\n\t\t\tthis.addAttribute( 'color', colors.copyColorsArray( geometry.colors ) );\n\n\t\t\tif ( geometry.lineDistances && geometry.lineDistances.length === geometry.vertices.length ) {\n\n\t\t\t\tvar lineDistances = new Float32Attribute( geometry.lineDistances.length, 1 );\n\n\t\t\t\tthis.addAttribute( 'lineDistance', lineDistances.copyArray( geometry.lineDistances ) );\n\n\t\t\t}\n\n\t\t\tif ( geometry.boundingSphere !== null ) {\n\n\t\t\t\tthis.boundingSphere = geometry.boundingSphere.clone();\n\n\t\t\t}\n\n\t\t\tif ( geometry.boundingBox !== null ) {\n\n\t\t\t\tthis.boundingBox = geometry.boundingBox.clone();\n\n\t\t\t}\n\n\t\t} else if ( (object && object.isMesh) ) {\n\n\t\t\tif ( (geometry && geometry.isGeometry) ) {\n\n\t\t\t\tthis.fromGeometry( geometry );\n\n\t\t\t}\n\n\t\t}\n\n\t\treturn this;\n\n\t},\n\n\tupdateFromObject: function ( object ) {\n\n\t\tvar geometry = object.geometry;\n\n\t\tif ( (object && object.isMesh) ) {\n\n\t\t\tvar direct = geometry.__directGeometry;\n\n\t\t\tif ( geometry.elementsNeedUpdate === true ) {\n\n\t\t\t\tdirect = undefined;\n\t\t\t\tgeometry.elementsNeedUpdate = false;\n\n\t\t\t}\n\n\t\t\tif ( direct === undefined ) {\n\n\t\t\t\treturn this.fromGeometry( geometry );\n\n\t\t\t}\n\n\t\t\tdirect.verticesNeedUpdate = geometry.verticesNeedUpdate;\n\t\t\tdirect.normalsNeedUpdate = geometry.normalsNeedUpdate;\n\t\t\tdirect.colorsNeedUpdate = geometry.colorsNeedUpdate;\n\t\t\tdirect.uvsNeedUpdate = geometry.uvsNeedUpdate;\n\t\t\tdirect.groupsNeedUpdate = geometry.groupsNeedUpdate;\n\n\t\t\tgeometry.verticesNeedUpdate = false;\n\t\t\tgeometry.normalsNeedUpdate = false;\n\t\t\tgeometry.colorsNeedUpdate = false;\n\t\t\tgeometry.uvsNeedUpdate = false;\n\t\t\tgeometry.groupsNeedUpdate = false;\n\n\t\t\tgeometry = direct;\n\n\t\t}\n\n\t\tvar attribute;\n\n\t\tif ( geometry.verticesNeedUpdate === true ) {\n\n\t\t\tattribute = this.attributes.position;\n\n\t\t\tif ( attribute !== undefined ) {\n\n\t\t\t\tattribute.copyVector3sArray( geometry.vertices );\n\t\t\t\tattribute.needsUpdate = true;\n\n\t\t\t}\n\n\t\t\tgeometry.verticesNeedUpdate = false;\n\n\t\t}\n\n\t\tif ( geometry.normalsNeedUpdate === true ) {\n\n\t\t\tattribute = this.attributes.normal;\n\n\t\t\tif ( attribute !== undefined ) {\n\n\t\t\t\tattribute.copyVector3sArray( geometry.normals );\n\t\t\t\tattribute.needsUpdate = true;\n\n\t\t\t}\n\n\t\t\tgeometry.normalsNeedUpdate = false;\n\n\t\t}\n\n\t\tif ( geometry.colorsNeedUpdate === true ) {\n\n\t\t\tattribute = this.attributes.color;\n\n\t\t\tif ( attribute !== undefined ) {\n\n\t\t\t\tattribute.copyColorsArray( geometry.colors );\n\t\t\t\tattribute.needsUpdate = true;\n\n\t\t\t}\n\n\t\t\tgeometry.colorsNeedUpdate = false;\n\n\t\t}\n\n\t\tif ( geometry.uvsNeedUpdate ) {\n\n\t\t\tattribute = this.attributes.uv;\n\n\t\t\tif ( attribute !== undefined ) {\n\n\t\t\t\tattribute.copyVector2sArray( geometry.uvs );\n\t\t\t\tattribute.needsUpdate = true;\n\n\t\t\t}\n\n\t\t\tgeometry.uvsNeedUpdate = false;\n\n\t\t}\n\n\t\tif ( geometry.lineDistancesNeedUpdate ) {\n\n\t\t\tattribute = this.attributes.lineDistance;\n\n\t\t\tif ( attribute !== undefined ) {\n\n\t\t\t\tattribute.copyArray( geometry.lineDistances );\n\t\t\t\tattribute.needsUpdate = true;\n\n\t\t\t}\n\n\t\t\tgeometry.lineDistancesNeedUpdate = false;\n\n\t\t}\n\n\t\tif ( geometry.groupsNeedUpdate ) {\n\n\t\t\tgeometry.computeGroups( object.geometry );\n\t\t\tthis.groups = geometry.groups;\n\n\t\t\tgeometry.groupsNeedUpdate = false;\n\n\t\t}\n\n\t\treturn this;\n\n\t},\n\n\tfromGeometry: function ( geometry ) {\n\n\t\tgeometry.__directGeometry = new DirectGeometry().fromGeometry( geometry );\n\n\t\treturn this.fromDirectGeometry( geometry.__directGeometry );\n\n\t},\n\n\tfromDirectGeometry: function ( geometry ) {\n\n\t\tvar positions = new Float32Array( geometry.vertices.length * 3 );\n\t\tthis.addAttribute( 'position', new BufferAttribute( positions, 3 ).copyVector3sArray( geometry.vertices ) );\n\n\t\tif ( geometry.normals.length > 0 ) {\n\n\t\t\tvar normals = new Float32Array( geometry.normals.length * 3 );\n\t\t\tthis.addAttribute( 'normal', new BufferAttribute( normals, 3 ).copyVector3sArray( geometry.normals ) );\n\n\t\t}\n\n\t\tif ( geometry.colors.length > 0 ) {\n\n\t\t\tvar colors = new Float32Array( geometry.colors.length * 3 );\n\t\t\tthis.addAttribute( 'color', new BufferAttribute( colors, 3 ).copyColorsArray( geometry.colors ) );\n\n\t\t}\n\n\t\tif ( geometry.uvs.length > 0 ) {\n\n\t\t\tvar uvs = new Float32Array( geometry.uvs.length * 2 );\n\t\t\tthis.addAttribute( 'uv', new BufferAttribute( uvs, 2 ).copyVector2sArray( geometry.uvs ) );\n\n\t\t}\n\n\t\tif ( geometry.uvs2.length > 0 ) {\n\n\t\t\tvar uvs2 = new Float32Array( geometry.uvs2.length * 2 );\n\t\t\tthis.addAttribute( 'uv2', new BufferAttribute( uvs2, 2 ).copyVector2sArray( geometry.uvs2 ) );\n\n\t\t}\n\n\t\tif ( geometry.indices.length > 0 ) {\n\n\t\t\tvar TypeArray = geometry.vertices.length > 65535 ? Uint32Array : Uint16Array;\n\t\t\tvar indices = new TypeArray( geometry.indices.length * 3 );\n\t\t\tthis.setIndex( new BufferAttribute( indices, 1 ).copyIndicesArray( geometry.indices ) );\n\n\t\t}\n\n\t\t// groups\n\n\t\tthis.groups = geometry.groups;\n\n\t\t// morphs\n\n\t\tfor ( var name in geometry.morphTargets ) {\n\n\t\t\tvar array = [];\n\t\t\tvar morphTargets = geometry.morphTargets[ name ];\n\n\t\t\tfor ( var i = 0, l = morphTargets.length; i < l; i ++ ) {\n\n\t\t\t\tvar morphTarget = morphTargets[ i ];\n\n\t\t\t\tvar attribute = new Float32Attribute( morphTarget.length * 3, 3 );\n\n\t\t\t\tarray.push( attribute.copyVector3sArray( morphTarget ) );\n\n\t\t\t}\n\n\t\t\tthis.morphAttributes[ name ] = array;\n\n\t\t}\n\n\t\t// skinning\n\n\t\tif ( geometry.skinIndices.length > 0 ) {\n\n\t\t\tvar skinIndices = new Float32Attribute( geometry.skinIndices.length * 4, 4 );\n\t\t\tthis.addAttribute( 'skinIndex', skinIndices.copyVector4sArray( geometry.skinIndices ) );\n\n\t\t}\n\n\t\tif ( geometry.skinWeights.length > 0 ) {\n\n\t\t\tvar skinWeights = new Float32Attribute( geometry.skinWeights.length * 4, 4 );\n\t\t\tthis.addAttribute( 'skinWeight', skinWeights.copyVector4sArray( geometry.skinWeights ) );\n\n\t\t}\n\n\t\t//\n\n\t\tif ( geometry.boundingSphere !== null ) {\n\n\t\t\tthis.boundingSphere = geometry.boundingSphere.clone();\n\n\t\t}\n\n\t\tif ( geometry.boundingBox !== null ) {\n\n\t\t\tthis.boundingBox = geometry.boundingBox.clone();\n\n\t\t}\n\n\t\treturn this;\n\n\t},\n\n\tcomputeBoundingBox: function () {\n\n\t\tif ( this.boundingBox === null ) {\n\n\t\t\tthis.boundingBox = new Box3();\n\n\t\t}\n\n\t\tvar positions = this.attributes.position.array;\n\n\t\tif ( positions !== undefined ) {\n\n\t\t\tthis.boundingBox.setFromArray( positions );\n\n\t\t} else {\n\n\t\t\tthis.boundingBox.makeEmpty();\n\n\t\t}\n\n\t\tif ( isNaN( this.boundingBox.min.x ) || isNaN( this.boundingBox.min.y ) || isNaN( this.boundingBox.min.z ) ) {\n\n\t\t\tconsole.error( 'THREE.BufferGeometry.computeBoundingBox: Computed min/max have NaN values. The \"position\" attribute is likely to have NaN values.', this );\n\n\t\t}\n\n\t},\n\n\tcomputeBoundingSphere: function () {\n\n\t\tvar box = new Box3();\n\t\tvar vector = new Vector3();\n\n\t\treturn function computeBoundingSphere() {\n\n\t\t\tif ( this.boundingSphere === null ) {\n\n\t\t\t\tthis.boundingSphere = new Sphere();\n\n\t\t\t}\n\n\t\t\tvar positions = this.attributes.position;\n\n\t\t\tif ( positions ) {\n\n\t\t\t\tvar array = positions.array;\n\t\t\t\tvar center = this.boundingSphere.center;\n\n\t\t\t\tbox.setFromArray( array );\n\t\t\t\tbox.getCenter( center );\n\n\t\t\t\t// hoping to find a boundingSphere with a radius smaller than the\n\t\t\t\t// boundingSphere of the boundingBox: sqrt(3) smaller in the best case\n\n\t\t\t\tvar maxRadiusSq = 0;\n\n\t\t\t\tfor ( var i = 0, il = array.length; i < il; i += 3 ) {\n\n\t\t\t\t\tvector.fromArray( array, i );\n\t\t\t\t\tmaxRadiusSq = Math.max( maxRadiusSq, center.distanceToSquared( vector ) );\n\n\t\t\t\t}\n\n\t\t\t\tthis.boundingSphere.radius = Math.sqrt( maxRadiusSq );\n\n\t\t\t\tif ( isNaN( this.boundingSphere.radius ) ) {\n\n\t\t\t\t\tconsole.error( 'THREE.BufferGeometry.computeBoundingSphere(): Computed radius is NaN. The \"position\" attribute is likely to have NaN values.', this );\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t};\n\n\t}(),\n\n\tcomputeFaceNormals: function () {\n\n\t\t// backwards compatibility\n\n\t},\n\n\tcomputeVertexNormals: function () {\n\n\t\tvar index = this.index;\n\t\tvar attributes = this.attributes;\n\t\tvar groups = this.groups;\n\n\t\tif ( attributes.position ) {\n\n\t\t\tvar positions = attributes.position.array;\n\n\t\t\tif ( attributes.normal === undefined ) {\n\n\t\t\t\tthis.addAttribute( 'normal', new BufferAttribute( new Float32Array( positions.length ), 3 ) );\n\n\t\t\t} else {\n\n\t\t\t\t// reset existing normals to zero\n\n\t\t\t\tvar array = attributes.normal.array;\n\n\t\t\t\tfor ( var i = 0, il = array.length; i < il; i ++ ) {\n\n\t\t\t\t\tarray[ i ] = 0;\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t\tvar normals = attributes.normal.array;\n\n\t\t\tvar vA, vB, vC,\n\n\t\t\tpA = new Vector3(),\n\t\t\tpB = new Vector3(),\n\t\t\tpC = new Vector3(),\n\n\t\t\tcb = new Vector3(),\n\t\t\tab = new Vector3();\n\n\t\t\t// indexed elements\n\n\t\t\tif ( index ) {\n\n\t\t\t\tvar indices = index.array;\n\n\t\t\t\tif ( groups.length === 0 ) {\n\n\t\t\t\t\tthis.addGroup( 0, indices.length );\n\n\t\t\t\t}\n\n\t\t\t\tfor ( var j = 0, jl = groups.length; j < jl; ++ j ) {\n\n\t\t\t\t\tvar group = groups[ j ];\n\n\t\t\t\t\tvar start = group.start;\n\t\t\t\t\tvar count = group.count;\n\n\t\t\t\t\tfor ( var i = start, il = start + count; i < il; i += 3 ) {\n\n\t\t\t\t\t\tvA = indices[ i + 0 ] * 3;\n\t\t\t\t\t\tvB = indices[ i + 1 ] * 3;\n\t\t\t\t\t\tvC = indices[ i + 2 ] * 3;\n\n\t\t\t\t\t\tpA.fromArray( positions, vA );\n\t\t\t\t\t\tpB.fromArray( positions, vB );\n\t\t\t\t\t\tpC.fromArray( positions, vC );\n\n\t\t\t\t\t\tcb.subVectors( pC, pB );\n\t\t\t\t\t\tab.subVectors( pA, pB );\n\t\t\t\t\t\tcb.cross( ab );\n\n\t\t\t\t\t\tnormals[ vA ] += cb.x;\n\t\t\t\t\t\tnormals[ vA + 1 ] += cb.y;\n\t\t\t\t\t\tnormals[ vA + 2 ] += cb.z;\n\n\t\t\t\t\t\tnormals[ vB ] += cb.x;\n\t\t\t\t\t\tnormals[ vB + 1 ] += cb.y;\n\t\t\t\t\t\tnormals[ vB + 2 ] += cb.z;\n\n\t\t\t\t\t\tnormals[ vC ] += cb.x;\n\t\t\t\t\t\tnormals[ vC + 1 ] += cb.y;\n\t\t\t\t\t\tnormals[ vC + 2 ] += cb.z;\n\n\t\t\t\t\t}\n\n\t\t\t\t}\n\n\t\t\t} else {\n\n\t\t\t\t// non-indexed elements (unconnected triangle soup)\n\n\t\t\t\tfor ( var i = 0, il = positions.length; i < il; i += 9 ) {\n\n\t\t\t\t\tpA.fromArray( positions, i );\n\t\t\t\t\tpB.fromArray( positions, i + 3 );\n\t\t\t\t\tpC.fromArray( positions, i + 6 );\n\n\t\t\t\t\tcb.subVectors( pC, pB );\n\t\t\t\t\tab.subVectors( pA, pB );\n\t\t\t\t\tcb.cross( ab );\n\n\t\t\t\t\tnormals[ i ] = cb.x;\n\t\t\t\t\tnormals[ i + 1 ] = cb.y;\n\t\t\t\t\tnormals[ i + 2 ] = cb.z;\n\n\t\t\t\t\tnormals[ i + 3 ] = cb.x;\n\t\t\t\t\tnormals[ i + 4 ] = cb.y;\n\t\t\t\t\tnormals[ i + 5 ] = cb.z;\n\n\t\t\t\t\tnormals[ i + 6 ] = cb.x;\n\t\t\t\t\tnormals[ i + 7 ] = cb.y;\n\t\t\t\t\tnormals[ i + 8 ] = cb.z;\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t\tthis.normalizeNormals();\n\n\t\t\tattributes.normal.needsUpdate = true;\n\n\t\t}\n\n\t},\n\n\tmerge: function ( geometry, offset ) {\n\n\t\tif ( (geometry && geometry.isBufferGeometry) === false ) {\n\n\t\t\tconsole.error( 'THREE.BufferGeometry.merge(): geometry not an instance of THREE.BufferGeometry.', geometry );\n\t\t\treturn;\n\n\t\t}\n\n\t\tif ( offset === undefined ) offset = 0;\n\n\t\tvar attributes = this.attributes;\n\n\t\tfor ( var key in attributes ) {\n\n\t\t\tif ( geometry.attributes[ key ] === undefined ) continue;\n\n\t\t\tvar attribute1 = attributes[ key ];\n\t\t\tvar attributeArray1 = attribute1.array;\n\n\t\t\tvar attribute2 = geometry.attributes[ key ];\n\t\t\tvar attributeArray2 = attribute2.array;\n\n\t\t\tvar attributeSize = attribute2.itemSize;\n\n\t\t\tfor ( var i = 0, j = attributeSize * offset; i < attributeArray2.length; i ++, j ++ ) {\n\n\t\t\t\tattributeArray1[ j ] = attributeArray2[ i ];\n\n\t\t\t}\n\n\t\t}\n\n\t\treturn this;\n\n\t},\n\n\tnormalizeNormals: function () {\n\n\t\tvar normals = this.attributes.normal.array;\n\n\t\tvar x, y, z, n;\n\n\t\tfor ( var i = 0, il = normals.length; i < il; i += 3 ) {\n\n\t\t\tx = normals[ i ];\n\t\t\ty = normals[ i + 1 ];\n\t\t\tz = normals[ i + 2 ];\n\n\t\t\tn = 1.0 / Math.sqrt( x * x + y * y + z * z );\n\n\t\t\tnormals[ i ] *= n;\n\t\t\tnormals[ i + 1 ] *= n;\n\t\t\tnormals[ i + 2 ] *= n;\n\n\t\t}\n\n\t},\n\n\ttoNonIndexed: function () {\n\n\t\tif ( this.index === null ) {\n\n\t\t\tconsole.warn( 'THREE.BufferGeometry.toNonIndexed(): Geometry is already non-indexed.' );\n\t\t\treturn this;\n\n\t\t}\n\n\t\tvar geometry2 = new BufferGeometry();\n\n\t\tvar indices = this.index.array;\n\t\tvar attributes = this.attributes;\n\n\t\tfor ( var name in attributes ) {\n\n\t\t\tvar attribute = attributes[ name ];\n\n\t\t\tvar array = attribute.array;\n\t\t\tvar itemSize = attribute.itemSize;\n\n\t\t\tvar array2 = new array.constructor( indices.length * itemSize );\n\n\t\t\tvar index = 0, index2 = 0;\n\n\t\t\tfor ( var i = 0, l = indices.length; i < l; i ++ ) {\n\n\t\t\t\tindex = indices[ i ] * itemSize;\n\n\t\t\t\tfor ( var j = 0; j < itemSize; j ++ ) {\n\n\t\t\t\t\tarray2[ index2 ++ ] = array[ index ++ ];\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t\tgeometry2.addAttribute( name, new BufferAttribute( array2, itemSize ) );\n\n\t\t}\n\n\t\treturn geometry2;\n\n\t},\n\n\ttoJSON: function () {\n\n\t\tvar data = {\n\t\t\tmetadata: {\n\t\t\t\tversion: 4.4,\n\t\t\t\ttype: 'BufferGeometry',\n\t\t\t\tgenerator: 'BufferGeometry.toJSON'\n\t\t\t}\n\t\t};\n\n\t\t// standard BufferGeometry serialization\n\n\t\tdata.uuid = this.uuid;\n\t\tdata.type = this.type;\n\t\tif ( this.name !== '' ) data.name = this.name;\n\n\t\tif ( this.parameters !== undefined ) {\n\n\t\t\tvar parameters = this.parameters;\n\n\t\t\tfor ( var key in parameters ) {\n\n\t\t\t\tif ( parameters[ key ] !== undefined ) data[ key ] = parameters[ key ];\n\n\t\t\t}\n\n\t\t\treturn data;\n\n\t\t}\n\n\t\tdata.data = { attributes: {} };\n\n\t\tvar index = this.index;\n\n\t\tif ( index !== null ) {\n\n\t\t\tvar array = Array.prototype.slice.call( index.array );\n\n\t\t\tdata.data.index = {\n\t\t\t\ttype: index.array.constructor.name,\n\t\t\t\tarray: array\n\t\t\t};\n\n\t\t}\n\n\t\tvar attributes = this.attributes;\n\n\t\tfor ( var key in attributes ) {\n\n\t\t\tvar attribute = attributes[ key ];\n\n\t\t\tvar array = Array.prototype.slice.call( attribute.array );\n\n\t\t\tdata.data.attributes[ key ] = {\n\t\t\t\titemSize: attribute.itemSize,\n\t\t\t\ttype: attribute.array.constructor.name,\n\t\t\t\tarray: array,\n\t\t\t\tnormalized: attribute.normalized\n\t\t\t};\n\n\t\t}\n\n\t\tvar groups = this.groups;\n\n\t\tif ( groups.length > 0 ) {\n\n\t\t\tdata.data.groups = JSON.parse( JSON.stringify( groups ) );\n\n\t\t}\n\n\t\tvar boundingSphere = this.boundingSphere;\n\n\t\tif ( boundingSphere !== null ) {\n\n\t\t\tdata.data.boundingSphere = {\n\t\t\t\tcenter: boundingSphere.center.toArray(),\n\t\t\t\tradius: boundingSphere.radius\n\t\t\t};\n\n\t\t}\n\n\t\treturn data;\n\n\t},\n\n\tclone: function () {\n\n\t\t/*\n\t\t// Handle primitives\n\n\t\tvar parameters = this.parameters;\n\n\t\tif ( parameters !== undefined ) {\n\n\t\t\tvar values = [];\n\n\t\t\tfor ( var key in parameters ) {\n\n\t\t\t\tvalues.push( parameters[ key ] );\n\n\t\t\t}\n\n\t\t\tvar geometry = Object.create( this.constructor.prototype );\n\t\t\tthis.constructor.apply( geometry, values );\n\t\t\treturn geometry;\n\n\t\t}\n\n\t\treturn new this.constructor().copy( this );\n\t\t*/\n\n\t\treturn new BufferGeometry().copy( this );\n\n\t},\n\n\tcopy: function ( source ) {\n\n\t\tvar index = source.index;\n\n\t\tif ( index !== null ) {\n\n\t\t\tthis.setIndex( index.clone() );\n\n\t\t}\n\n\t\tvar attributes = source.attributes;\n\n\t\tfor ( var name in attributes ) {\n\n\t\t\tvar attribute = attributes[ name ];\n\t\t\tthis.addAttribute( name, attribute.clone() );\n\n\t\t}\n\n\t\tvar groups = source.groups;\n\n\t\tfor ( var i = 0, l = groups.length; i < l; i ++ ) {\n\n\t\t\tvar group = groups[ i ];\n\t\t\tthis.addGroup( group.start, group.count, group.materialIndex );\n\n\t\t}\n\n\t\treturn this;\n\n\t},\n\n\tdispose: function () {\n\n\t\tthis.dispatchEvent( { type: 'dispose' } );\n\n\t}\n\n} );\n\nBufferGeometry.MaxIndex = 65535;\n\n\nexport { BufferGeometry };\n","import { Vector3 } from '../math/Vector3';\nimport { Vector2 } from '../math/Vector2';\nimport { Sphere } from '../math/Sphere';\nimport { Ray } from '../math/Ray';\nimport { Matrix4 } from '../math/Matrix4';\nimport { Object3D } from '../core/Object3D';\nimport { Triangle } from '../math/Triangle';\nimport { Face3 } from '../core/Face3';\nimport { DoubleSide, BackSide, TrianglesDrawMode } from '../constants';\nimport { MeshBasicMaterial } from '../materials/MeshBasicMaterial';\nimport { BufferGeometry } from '../core/BufferGeometry';\n\n/**\n * @author mrdoob / http://mrdoob.com/\n * @author alteredq / http://alteredqualia.com/\n * @author mikael emtinger / http://gomo.se/\n * @author jonobr1 / http://jonobr1.com/\n */\n\nfunction Mesh( geometry, material ) {\n\n\tObject3D.call( this );\n\n\tthis.type = 'Mesh';\n\n\tthis.geometry = geometry !== undefined ? geometry : new BufferGeometry();\n\tthis.material = material !== undefined ? material : new MeshBasicMaterial( { color: Math.random() * 0xffffff } );\n\n\tthis.drawMode = TrianglesDrawMode;\n\n\tthis.updateMorphTargets();\n\n}\n\nMesh.prototype = Object.assign( Object.create( Object3D.prototype ), {\n\n\tconstructor: Mesh,\n\n\tisMesh: true,\n\n\tsetDrawMode: function ( value ) {\n\n\t\tthis.drawMode = value;\n\n\t},\n\n\tcopy: function ( source ) {\n\n\t\tObject3D.prototype.copy.call( this, source );\n\n\t\tthis.drawMode = source.drawMode;\n\n\t\treturn this;\n\n\t},\n\n\tupdateMorphTargets: function () {\n\n\t\tvar morphTargets = this.geometry.morphTargets;\n\n\t\tif ( morphTargets !== undefined && morphTargets.length > 0 ) {\n\n\t\t\tthis.morphTargetInfluences = [];\n\t\t\tthis.morphTargetDictionary = {};\n\n\t\t\tfor ( var m = 0, ml = morphTargets.length; m < ml; m ++ ) {\n\n\t\t\t\tthis.morphTargetInfluences.push( 0 );\n\t\t\t\tthis.morphTargetDictionary[ morphTargets[ m ].name ] = m;\n\n\t\t\t}\n\n\t\t}\n\n\t},\n\n\traycast: ( function () {\n\n\t\tvar inverseMatrix = new Matrix4();\n\t\tvar ray = new Ray();\n\t\tvar sphere = new Sphere();\n\n\t\tvar vA = new Vector3();\n\t\tvar vB = new Vector3();\n\t\tvar vC = new Vector3();\n\n\t\tvar tempA = new Vector3();\n\t\tvar tempB = new Vector3();\n\t\tvar tempC = new Vector3();\n\n\t\tvar uvA = new Vector2();\n\t\tvar uvB = new Vector2();\n\t\tvar uvC = new Vector2();\n\n\t\tvar barycoord = new Vector3();\n\n\t\tvar intersectionPoint = new Vector3();\n\t\tvar intersectionPointWorld = new Vector3();\n\n\t\tfunction uvIntersection( point, p1, p2, p3, uv1, uv2, uv3 ) {\n\n\t\t\tTriangle.barycoordFromPoint( point, p1, p2, p3, barycoord );\n\n\t\t\tuv1.multiplyScalar( barycoord.x );\n\t\t\tuv2.multiplyScalar( barycoord.y );\n\t\t\tuv3.multiplyScalar( barycoord.z );\n\n\t\t\tuv1.add( uv2 ).add( uv3 );\n\n\t\t\treturn uv1.clone();\n\n\t\t}\n\n\t\tfunction checkIntersection( object, raycaster, ray, pA, pB, pC, point ) {\n\n\t\t\tvar intersect;\n\t\t\tvar material = object.material;\n\n\t\t\tif ( material.side === BackSide ) {\n\n\t\t\t\tintersect = ray.intersectTriangle( pC, pB, pA, true, point );\n\n\t\t\t} else {\n\n\t\t\t\tintersect = ray.intersectTriangle( pA, pB, pC, material.side !== DoubleSide, point );\n\n\t\t\t}\n\n\t\t\tif ( intersect === null ) return null;\n\n\t\t\tintersectionPointWorld.copy( point );\n\t\t\tintersectionPointWorld.applyMatrix4( object.matrixWorld );\n\n\t\t\tvar distance = raycaster.ray.origin.distanceTo( intersectionPointWorld );\n\n\t\t\tif ( distance < raycaster.near || distance > raycaster.far ) return null;\n\n\t\t\treturn {\n\t\t\t\tdistance: distance,\n\t\t\t\tpoint: intersectionPointWorld.clone(),\n\t\t\t\tobject: object\n\t\t\t};\n\n\t\t}\n\n\t\tfunction checkBufferGeometryIntersection( object, raycaster, ray, positions, uvs, a, b, c ) {\n\n\t\t\tvA.fromArray( positions, a * 3 );\n\t\t\tvB.fromArray( positions, b * 3 );\n\t\t\tvC.fromArray( positions, c * 3 );\n\n\t\t\tvar intersection = checkIntersection( object, raycaster, ray, vA, vB, vC, intersectionPoint );\n\n\t\t\tif ( intersection ) {\n\n\t\t\t\tif ( uvs ) {\n\n\t\t\t\t\tuvA.fromArray( uvs, a * 2 );\n\t\t\t\t\tuvB.fromArray( uvs, b * 2 );\n\t\t\t\t\tuvC.fromArray( uvs, c * 2 );\n\n\t\t\t\t\tintersection.uv = uvIntersection( intersectionPoint, vA, vB, vC, uvA, uvB, uvC );\n\n\t\t\t\t}\n\n\t\t\t\tintersection.face = new Face3( a, b, c, Triangle.normal( vA, vB, vC ) );\n\t\t\t\tintersection.faceIndex = a;\n\n\t\t\t}\n\n\t\t\treturn intersection;\n\n\t\t}\n\n\t\treturn function raycast( raycaster, intersects ) {\n\n\t\t\tvar geometry = this.geometry;\n\t\t\tvar material = this.material;\n\t\t\tvar matrixWorld = this.matrixWorld;\n\n\t\t\tif ( material === undefined ) return;\n\n\t\t\t// Checking boundingSphere distance to ray\n\n\t\t\tif ( geometry.boundingSphere === null ) geometry.computeBoundingSphere();\n\n\t\t\tsphere.copy( geometry.boundingSphere );\n\t\t\tsphere.applyMatrix4( matrixWorld );\n\n\t\t\tif ( raycaster.ray.intersectsSphere( sphere ) === false ) return;\n\n\t\t\t//\n\n\t\t\tinverseMatrix.getInverse( matrixWorld );\n\t\t\tray.copy( raycaster.ray ).applyMatrix4( inverseMatrix );\n\n\t\t\t// Check boundingBox before continuing\n\n\t\t\tif ( geometry.boundingBox !== null ) {\n\n\t\t\t\tif ( ray.intersectsBox( geometry.boundingBox ) === false ) return;\n\n\t\t\t}\n\n\t\t\tvar uvs, intersection;\n\n\t\t\tif ( (geometry && geometry.isBufferGeometry) ) {\n\n\t\t\t\tvar a, b, c;\n\t\t\t\tvar index = geometry.index;\n\t\t\t\tvar attributes = geometry.attributes;\n\t\t\t\tvar positions = attributes.position.array;\n\n\t\t\t\tif ( attributes.uv !== undefined ) {\n\n\t\t\t\t\tuvs = attributes.uv.array;\n\n\t\t\t\t}\n\n\t\t\t\tif ( index !== null ) {\n\n\t\t\t\t\tvar indices = index.array;\n\n\t\t\t\t\tfor ( var i = 0, l = indices.length; i < l; i += 3 ) {\n\n\t\t\t\t\t\ta = indices[ i ];\n\t\t\t\t\t\tb = indices[ i + 1 ];\n\t\t\t\t\t\tc = indices[ i + 2 ];\n\n\t\t\t\t\t\tintersection = checkBufferGeometryIntersection( this, raycaster, ray, positions, uvs, a, b, c );\n\n\t\t\t\t\t\tif ( intersection ) {\n\n\t\t\t\t\t\t\tintersection.faceIndex = Math.floor( i / 3 ); // triangle number in indices buffer semantics\n\t\t\t\t\t\t\tintersects.push( intersection );\n\n\t\t\t\t\t\t}\n\n\t\t\t\t\t}\n\n\t\t\t\t} else {\n\n\n\t\t\t\t\tfor ( var i = 0, l = positions.length; i < l; i += 9 ) {\n\n\t\t\t\t\t\ta = i / 3;\n\t\t\t\t\t\tb = a + 1;\n\t\t\t\t\t\tc = a + 2;\n\n\t\t\t\t\t\tintersection = checkBufferGeometryIntersection( this, raycaster, ray, positions, uvs, a, b, c );\n\n\t\t\t\t\t\tif ( intersection ) {\n\n\t\t\t\t\t\t\tintersection.index = a; // triangle number in positions buffer semantics\n\t\t\t\t\t\t\tintersects.push( intersection );\n\n\t\t\t\t\t\t}\n\n\t\t\t\t\t}\n\n\t\t\t\t}\n\n\t\t\t} else if ( (geometry && geometry.isGeometry) ) {\n\n\t\t\t\tvar fvA, fvB, fvC;\n\t\t\t\tvar isFaceMaterial = (material && material.isMultiMaterial);\n\t\t\t\tvar materials = isFaceMaterial === true ? material.materials : null;\n\n\t\t\t\tvar vertices = geometry.vertices;\n\t\t\t\tvar faces = geometry.faces;\n\t\t\t\tvar faceVertexUvs = geometry.faceVertexUvs[ 0 ];\n\t\t\t\tif ( faceVertexUvs.length > 0 ) uvs = faceVertexUvs;\n\n\t\t\t\tfor ( var f = 0, fl = faces.length; f < fl; f ++ ) {\n\n\t\t\t\t\tvar face = faces[ f ];\n\t\t\t\t\tvar faceMaterial = isFaceMaterial === true ? materials[ face.materialIndex ] : material;\n\n\t\t\t\t\tif ( faceMaterial === undefined ) continue;\n\n\t\t\t\t\tfvA = vertices[ face.a ];\n\t\t\t\t\tfvB = vertices[ face.b ];\n\t\t\t\t\tfvC = vertices[ face.c ];\n\n\t\t\t\t\tif ( faceMaterial.morphTargets === true ) {\n\n\t\t\t\t\t\tvar morphTargets = geometry.morphTargets;\n\t\t\t\t\t\tvar morphInfluences = this.morphTargetInfluences;\n\n\t\t\t\t\t\tvA.set( 0, 0, 0 );\n\t\t\t\t\t\tvB.set( 0, 0, 0 );\n\t\t\t\t\t\tvC.set( 0, 0, 0 );\n\n\t\t\t\t\t\tfor ( var t = 0, tl = morphTargets.length; t < tl; t ++ ) {\n\n\t\t\t\t\t\t\tvar influence = morphInfluences[ t ];\n\n\t\t\t\t\t\t\tif ( influence === 0 ) continue;\n\n\t\t\t\t\t\t\tvar targets = morphTargets[ t ].vertices;\n\n\t\t\t\t\t\t\tvA.addScaledVector( tempA.subVectors( targets[ face.a ], fvA ), influence );\n\t\t\t\t\t\t\tvB.addScaledVector( tempB.subVectors( targets[ face.b ], fvB ), influence );\n\t\t\t\t\t\t\tvC.addScaledVector( tempC.subVectors( targets[ face.c ], fvC ), influence );\n\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\tvA.add( fvA );\n\t\t\t\t\t\tvB.add( fvB );\n\t\t\t\t\t\tvC.add( fvC );\n\n\t\t\t\t\t\tfvA = vA;\n\t\t\t\t\t\tfvB = vB;\n\t\t\t\t\t\tfvC = vC;\n\n\t\t\t\t\t}\n\n\t\t\t\t\tintersection = checkIntersection( this, raycaster, ray, fvA, fvB, fvC, intersectionPoint );\n\n\t\t\t\t\tif ( intersection ) {\n\n\t\t\t\t\t\tif ( uvs ) {\n\n\t\t\t\t\t\t\tvar uvs_f = uvs[ f ];\n\t\t\t\t\t\t\tuvA.copy( uvs_f[ 0 ] );\n\t\t\t\t\t\t\tuvB.copy( uvs_f[ 1 ] );\n\t\t\t\t\t\t\tuvC.copy( uvs_f[ 2 ] );\n\n\t\t\t\t\t\t\tintersection.uv = uvIntersection( intersectionPoint, fvA, fvB, fvC, uvA, uvB, uvC );\n\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\tintersection.face = face;\n\t\t\t\t\t\tintersection.faceIndex = f;\n\t\t\t\t\t\tintersects.push( intersection );\n\n\t\t\t\t\t}\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t};\n\n\t}() ),\n\n\tclone: function () {\n\n\t\treturn new this.constructor( this.geometry, this.material ).copy( this );\n\n\t}\n\n} );\n\n\nexport { Mesh };\n","import { BufferGeometry } from '../core/BufferGeometry';\nimport { Vector3 } from '../math/Vector3';\nimport { BufferAttribute } from '../core/BufferAttribute';\n\n/**\n * @author Mugen87 / https://github.com/Mugen87\n */\n\nfunction BoxBufferGeometry( width, height, depth, widthSegments, heightSegments, depthSegments ) {\n\n\tBufferGeometry.call( this );\n\n\tthis.type = 'BoxBufferGeometry';\n\n\tthis.parameters = {\n\t\twidth: width,\n\t\theight: height,\n\t\tdepth: depth,\n\t\twidthSegments: widthSegments,\n\t\theightSegments: heightSegments,\n\t\tdepthSegments: depthSegments\n\t};\n\n\tvar scope = this;\n\n\t// segments\n\twidthSegments = Math.floor( widthSegments ) || 1;\n\theightSegments = Math.floor( heightSegments ) || 1;\n\tdepthSegments = Math.floor( depthSegments ) || 1;\n\n\t// these are used to calculate buffer length\n\tvar vertexCount = calculateVertexCount( widthSegments, heightSegments, depthSegments );\n\tvar indexCount = calculateIndexCount( widthSegments, heightSegments, depthSegments );\n\n\t// buffers\n\tvar indices = new ( indexCount > 65535 ? Uint32Array : Uint16Array )( indexCount );\n\tvar vertices = new Float32Array( vertexCount * 3 );\n\tvar normals = new Float32Array( vertexCount * 3 );\n\tvar uvs = new Float32Array( vertexCount * 2 );\n\n\t// offset variables\n\tvar vertexBufferOffset = 0;\n\tvar uvBufferOffset = 0;\n\tvar indexBufferOffset = 0;\n\tvar numberOfVertices = 0;\n\n\t// group variables\n\tvar groupStart = 0;\n\n\t// build each side of the box geometry\n\tbuildPlane( 'z', 'y', 'x', - 1, - 1, depth, height, width, depthSegments, heightSegments, 0 ); // px\n\tbuildPlane( 'z', 'y', 'x', 1, - 1, depth, height, - width, depthSegments, heightSegments, 1 ); // nx\n\tbuildPlane( 'x', 'z', 'y', 1, 1, width, depth, height, widthSegments, depthSegments, 2 ); // py\n\tbuildPlane( 'x', 'z', 'y', 1, - 1, width, depth, - height, widthSegments, depthSegments, 3 ); // ny\n\tbuildPlane( 'x', 'y', 'z', 1, - 1, width, height, depth, widthSegments, heightSegments, 4 ); // pz\n\tbuildPlane( 'x', 'y', 'z', - 1, - 1, width, height, - depth, widthSegments, heightSegments, 5 ); // nz\n\n\t// build geometry\n\tthis.setIndex( new BufferAttribute( indices, 1 ) );\n\tthis.addAttribute( 'position', new BufferAttribute( vertices, 3 ) );\n\tthis.addAttribute( 'normal', new BufferAttribute( normals, 3 ) );\n\tthis.addAttribute( 'uv', new BufferAttribute( uvs, 2 ) );\n\n\t// helper functions\n\n\tfunction calculateVertexCount( w, h, d ) {\n\n\t\tvar vertices = 0;\n\n\t\t// calculate the amount of vertices for each side (plane)\n\t\tvertices += (w + 1) * (h + 1) * 2; // xy\n\t\tvertices += (w + 1) * (d + 1) * 2; // xz\n\t\tvertices += (d + 1) * (h + 1) * 2; // zy\n\n\t\treturn vertices;\n\n\t}\n\n\tfunction calculateIndexCount( w, h, d ) {\n\n\t\tvar index = 0;\n\n\t\t// calculate the amount of squares for each side\n\t\tindex += w * h * 2; // xy\n\t\tindex += w * d * 2; // xz\n\t\tindex += d * h * 2; // zy\n\n\t\treturn index * 6; // two triangles per square => six vertices per square\n\n\t}\n\n\tfunction buildPlane( u, v, w, udir, vdir, width, height, depth, gridX, gridY, materialIndex ) {\n\n\t\tvar segmentWidth\t= width / gridX;\n\t\tvar segmentHeight = height / gridY;\n\n\t\tvar widthHalf = width / 2;\n\t\tvar heightHalf = height / 2;\n\t\tvar depthHalf = depth / 2;\n\n\t\tvar gridX1 = gridX + 1;\n\t\tvar gridY1 = gridY + 1;\n\n\t\tvar vertexCounter = 0;\n\t\tvar groupCount = 0;\n\n\t\tvar vector = new Vector3();\n\n\t\t// generate vertices, normals and uvs\n\n\t\tfor ( var iy = 0; iy < gridY1; iy ++ ) {\n\n\t\t\tvar y = iy * segmentHeight - heightHalf;\n\n\t\t\tfor ( var ix = 0; ix < gridX1; ix ++ ) {\n\n\t\t\t\tvar x = ix * segmentWidth - widthHalf;\n\n\t\t\t\t// set values to correct vector component\n\t\t\t\tvector[ u ] = x * udir;\n\t\t\t\tvector[ v ] = y * vdir;\n\t\t\t\tvector[ w ] = depthHalf;\n\n\t\t\t\t// now apply vector to vertex buffer\n\t\t\t\tvertices[ vertexBufferOffset ] = vector.x;\n\t\t\t\tvertices[ vertexBufferOffset + 1 ] = vector.y;\n\t\t\t\tvertices[ vertexBufferOffset + 2 ] = vector.z;\n\n\t\t\t\t// set values to correct vector component\n\t\t\t\tvector[ u ] = 0;\n\t\t\t\tvector[ v ] = 0;\n\t\t\t\tvector[ w ] = depth > 0 ? 1 : - 1;\n\n\t\t\t\t// now apply vector to normal buffer\n\t\t\t\tnormals[ vertexBufferOffset ] = vector.x;\n\t\t\t\tnormals[ vertexBufferOffset + 1 ] = vector.y;\n\t\t\t\tnormals[ vertexBufferOffset + 2 ] = vector.z;\n\n\t\t\t\t// uvs\n\t\t\t\tuvs[ uvBufferOffset ] = ix / gridX;\n\t\t\t\tuvs[ uvBufferOffset + 1 ] = 1 - ( iy / gridY );\n\n\t\t\t\t// update offsets and counters\n\t\t\t\tvertexBufferOffset += 3;\n\t\t\t\tuvBufferOffset += 2;\n\t\t\t\tvertexCounter += 1;\n\n\t\t\t}\n\n\t\t}\n\n\t\t// 1. you need three indices to draw a single face\n\t\t// 2. a single segment consists of two faces\n\t\t// 3. so we need to generate six (2*3) indices per segment\n\n\t\tfor ( iy = 0; iy < gridY; iy ++ ) {\n\n\t\t\tfor ( ix = 0; ix < gridX; ix ++ ) {\n\n\t\t\t\t// indices\n\t\t\t\tvar a = numberOfVertices + ix + gridX1 * iy;\n\t\t\t\tvar b = numberOfVertices + ix + gridX1 * ( iy + 1 );\n\t\t\t\tvar c = numberOfVertices + ( ix + 1 ) + gridX1 * ( iy + 1 );\n\t\t\t\tvar d = numberOfVertices + ( ix + 1 ) + gridX1 * iy;\n\n\t\t\t\t// face one\n\t\t\t\tindices[ indexBufferOffset ] = a;\n\t\t\t\tindices[ indexBufferOffset + 1 ] = b;\n\t\t\t\tindices[ indexBufferOffset + 2 ] = d;\n\n\t\t\t\t// face two\n\t\t\t\tindices[ indexBufferOffset + 3 ] = b;\n\t\t\t\tindices[ indexBufferOffset + 4 ] = c;\n\t\t\t\tindices[ indexBufferOffset + 5 ] = d;\n\n\t\t\t\t// update offsets and counters\n\t\t\t\tindexBufferOffset += 6;\n\t\t\t\tgroupCount += 6;\n\n\t\t\t}\n\n\t\t}\n\n\t\t// add a group to the geometry. this will ensure multi material support\n\t\tscope.addGroup( groupStart, groupCount, materialIndex );\n\n\t\t// calculate new start value for groups\n\t\tgroupStart += groupCount;\n\n\t\t// update total number of vertices\n\t\tnumberOfVertices += vertexCounter;\n\n\t}\n\n}\n\nBoxBufferGeometry.prototype = Object.create( BufferGeometry.prototype );\nBoxBufferGeometry.prototype.constructor = BoxBufferGeometry;\n\n\nexport { BoxBufferGeometry };\n","import { BufferGeometry } from '../core/BufferGeometry';\nimport { BufferAttribute } from '../core/BufferAttribute';\n\n/**\n * @author mrdoob / http://mrdoob.com/\n * based on http://papervision3d.googlecode.com/svn/trunk/as3/trunk/src/org/papervision3d/objects/primitives/Plane.as\n */\n\nfunction PlaneBufferGeometry( width, height, widthSegments, heightSegments ) {\n\n\tBufferGeometry.call( this );\n\n\tthis.type = 'PlaneBufferGeometry';\n\n\tthis.parameters = {\n\t\twidth: width,\n\t\theight: height,\n\t\twidthSegments: widthSegments,\n\t\theightSegments: heightSegments\n\t};\n\n\tvar width_half = width / 2;\n\tvar height_half = height / 2;\n\n\tvar gridX = Math.floor( widthSegments ) || 1;\n\tvar gridY = Math.floor( heightSegments ) || 1;\n\n\tvar gridX1 = gridX + 1;\n\tvar gridY1 = gridY + 1;\n\n\tvar segment_width = width / gridX;\n\tvar segment_height = height / gridY;\n\n\tvar vertices = new Float32Array( gridX1 * gridY1 * 3 );\n\tvar normals = new Float32Array( gridX1 * gridY1 * 3 );\n\tvar uvs = new Float32Array( gridX1 * gridY1 * 2 );\n\n\tvar offset = 0;\n\tvar offset2 = 0;\n\n\tfor ( var iy = 0; iy < gridY1; iy ++ ) {\n\n\t\tvar y = iy * segment_height - height_half;\n\n\t\tfor ( var ix = 0; ix < gridX1; ix ++ ) {\n\n\t\t\tvar x = ix * segment_width - width_half;\n\n\t\t\tvertices[ offset ] = x;\n\t\t\tvertices[ offset + 1 ] = - y;\n\n\t\t\tnormals[ offset + 2 ] = 1;\n\n\t\t\tuvs[ offset2 ] = ix / gridX;\n\t\t\tuvs[ offset2 + 1 ] = 1 - ( iy / gridY );\n\n\t\t\toffset += 3;\n\t\t\toffset2 += 2;\n\n\t\t}\n\n\t}\n\n\toffset = 0;\n\n\tvar indices = new ( ( vertices.length / 3 ) > 65535 ? Uint32Array : Uint16Array )( gridX * gridY * 6 );\n\n\tfor ( var iy = 0; iy < gridY; iy ++ ) {\n\n\t\tfor ( var ix = 0; ix < gridX; ix ++ ) {\n\n\t\t\tvar a = ix + gridX1 * iy;\n\t\t\tvar b = ix + gridX1 * ( iy + 1 );\n\t\t\tvar c = ( ix + 1 ) + gridX1 * ( iy + 1 );\n\t\t\tvar d = ( ix + 1 ) + gridX1 * iy;\n\n\t\t\tindices[ offset ] = a;\n\t\t\tindices[ offset + 1 ] = b;\n\t\t\tindices[ offset + 2 ] = d;\n\n\t\t\tindices[ offset + 3 ] = b;\n\t\t\tindices[ offset + 4 ] = c;\n\t\t\tindices[ offset + 5 ] = d;\n\n\t\t\toffset += 6;\n\n\t\t}\n\n\t}\n\n\tthis.setIndex( new BufferAttribute( indices, 1 ) );\n\tthis.addAttribute( 'position', new BufferAttribute( vertices, 3 ) );\n\tthis.addAttribute( 'normal', new BufferAttribute( normals, 3 ) );\n\tthis.addAttribute( 'uv', new BufferAttribute( uvs, 2 ) );\n\n}\n\nPlaneBufferGeometry.prototype = Object.create( BufferGeometry.prototype );\nPlaneBufferGeometry.prototype.constructor = PlaneBufferGeometry;\n\n\nexport { PlaneBufferGeometry };\n","import { Matrix4 } from '../math/Matrix4';\nimport { Quaternion } from '../math/Quaternion';\nimport { Object3D } from '../core/Object3D';\nimport { Vector3 } from '../math/Vector3';\n\n/**\n * @author mrdoob / http://mrdoob.com/\n * @author mikael emtinger / http://gomo.se/\n * @author WestLangley / http://github.com/WestLangley\n*/\n\nfunction Camera() {\n\n\tObject3D.call( this );\n\n\tthis.type = 'Camera';\n\n\tthis.matrixWorldInverse = new Matrix4();\n\tthis.projectionMatrix = new Matrix4();\n\n}\n\nCamera.prototype = Object.create( Object3D.prototype );\nCamera.prototype.constructor = Camera;\n\nCamera.prototype.isCamera = true;\n\nCamera.prototype.getWorldDirection = function () {\n\n\tvar quaternion = new Quaternion();\n\n\treturn function getWorldDirection( optionalTarget ) {\n\n\t\tvar result = optionalTarget || new Vector3();\n\n\t\tthis.getWorldQuaternion( quaternion );\n\n\t\treturn result.set( 0, 0, - 1 ).applyQuaternion( quaternion );\n\n\t};\n\n}();\n\nCamera.prototype.lookAt = function () {\n\n\t// This routine does not support cameras with rotated and/or translated parent(s)\n\n\tvar m1 = new Matrix4();\n\n\treturn function lookAt( vector ) {\n\n\t\tm1.lookAt( this.position, vector, this.up );\n\n\t\tthis.quaternion.setFromRotationMatrix( m1 );\n\n\t};\n\n}();\n\nCamera.prototype.clone = function () {\n\n\treturn new this.constructor().copy( this );\n\n};\n\nCamera.prototype.copy = function ( source ) {\n\n\tObject3D.prototype.copy.call( this, source );\n\n\tthis.matrixWorldInverse.copy( source.matrixWorldInverse );\n\tthis.projectionMatrix.copy( source.projectionMatrix );\n\n\treturn this;\n\n};\n\n\nexport { Camera };\n","import { Camera } from './Camera';\nimport { Object3D } from '../core/Object3D';\nimport { _Math } from '../math/Math';\n\n/**\n * @author mrdoob / http://mrdoob.com/\n * @author greggman / http://games.greggman.com/\n * @author zz85 / http://www.lab4games.net/zz85/blog\n * @author tschw\n */\n\nfunction PerspectiveCamera( fov, aspect, near, far ) {\n\n\tCamera.call( this );\n\n\tthis.type = 'PerspectiveCamera';\n\n\tthis.fov = fov !== undefined ? fov : 50;\n\tthis.zoom = 1;\n\n\tthis.near = near !== undefined ? near : 0.1;\n\tthis.far = far !== undefined ? far : 2000;\n\tthis.focus = 10;\n\n\tthis.aspect = aspect !== undefined ? aspect : 1;\n\tthis.view = null;\n\n\tthis.filmGauge = 35;\t// width of the film (default in millimeters)\n\tthis.filmOffset = 0;\t// horizontal film offset (same unit as gauge)\n\n\tthis.updateProjectionMatrix();\n\n}\n\nPerspectiveCamera.prototype = Object.assign( Object.create( Camera.prototype ), {\n\n\tconstructor: PerspectiveCamera,\n\n\tisPerspectiveCamera: true,\n\n\tcopy: function ( source ) {\n\n\t\tCamera.prototype.copy.call( this, source );\n\n\t\tthis.fov = source.fov;\n\t\tthis.zoom = source.zoom;\n\n\t\tthis.near = source.near;\n\t\tthis.far = source.far;\n\t\tthis.focus = source.focus;\n\n\t\tthis.aspect = source.aspect;\n\t\tthis.view = source.view === null ? null : Object.assign( {}, source.view );\n\n\t\tthis.filmGauge = source.filmGauge;\n\t\tthis.filmOffset = source.filmOffset;\n\n\t\treturn this;\n\n\t},\n\n\t/**\n\t * Sets the FOV by focal length in respect to the current .filmGauge.\n\t *\n\t * The default film gauge is 35, so that the focal length can be specified for\n\t * a 35mm (full frame) camera.\n\t *\n\t * Values for focal length and film gauge must have the same unit.\n\t */\n\tsetFocalLength: function ( focalLength ) {\n\n\t\t// see http://www.bobatkins.com/photography/technical/field_of_view.html\n\t\tvar vExtentSlope = 0.5 * this.getFilmHeight() / focalLength;\n\n\t\tthis.fov = _Math.RAD2DEG * 2 * Math.atan( vExtentSlope );\n\t\tthis.updateProjectionMatrix();\n\n\t},\n\n\t/**\n\t * Calculates the focal length from the current .fov and .filmGauge.\n\t */\n\tgetFocalLength: function () {\n\n\t\tvar vExtentSlope = Math.tan( _Math.DEG2RAD * 0.5 * this.fov );\n\n\t\treturn 0.5 * this.getFilmHeight() / vExtentSlope;\n\n\t},\n\n\tgetEffectiveFOV: function () {\n\n\t\treturn _Math.RAD2DEG * 2 * Math.atan(\n\t\t\t\tMath.tan( _Math.DEG2RAD * 0.5 * this.fov ) / this.zoom );\n\n\t},\n\n\tgetFilmWidth: function () {\n\n\t\t// film not completely covered in portrait format (aspect < 1)\n\t\treturn this.filmGauge * Math.min( this.aspect, 1 );\n\n\t},\n\n\tgetFilmHeight: function () {\n\n\t\t// film not completely covered in landscape format (aspect > 1)\n\t\treturn this.filmGauge / Math.max( this.aspect, 1 );\n\n\t},\n\n\t/**\n\t * Sets an offset in a larger frustum. This is useful for multi-window or\n\t * multi-monitor/multi-machine setups.\n\t *\n\t * For example, if you have 3x2 monitors and each monitor is 1920x1080 and\n\t * the monitors are in grid like this\n\t *\n\t * +---+---+---+\n\t * | A | B | C |\n\t * +---+---+---+\n\t * | D | E | F |\n\t * +---+---+---+\n\t *\n\t * then for each monitor you would call it like this\n\t *\n\t * var w = 1920;\n\t * var h = 1080;\n\t * var fullWidth = w * 3;\n\t * var fullHeight = h * 2;\n\t *\n\t * --A--\n\t * camera.setOffset( fullWidth, fullHeight, w * 0, h * 0, w, h );\n\t * --B--\n\t * camera.setOffset( fullWidth, fullHeight, w * 1, h * 0, w, h );\n\t * --C--\n\t * camera.setOffset( fullWidth, fullHeight, w * 2, h * 0, w, h );\n\t * --D--\n\t * camera.setOffset( fullWidth, fullHeight, w * 0, h * 1, w, h );\n\t * --E--\n\t * camera.setOffset( fullWidth, fullHeight, w * 1, h * 1, w, h );\n\t * --F--\n\t * camera.setOffset( fullWidth, fullHeight, w * 2, h * 1, w, h );\n\t *\n\t * Note there is no reason monitors have to be the same size or in a grid.\n\t */\n\tsetViewOffset: function ( fullWidth, fullHeight, x, y, width, height ) {\n\n\t\tthis.aspect = fullWidth / fullHeight;\n\n\t\tthis.view = {\n\t\t\tfullWidth: fullWidth,\n\t\t\tfullHeight: fullHeight,\n\t\t\toffsetX: x,\n\t\t\toffsetY: y,\n\t\t\twidth: width,\n\t\t\theight: height\n\t\t};\n\n\t\tthis.updateProjectionMatrix();\n\n\t},\n\n\tclearViewOffset: function() {\n\n\t\tthis.view = null;\n\t\tthis.updateProjectionMatrix();\n\n\t},\n\n\tupdateProjectionMatrix: function () {\n\n\t\tvar near = this.near,\n\t\t\ttop = near * Math.tan(\n\t\t\t\t\t_Math.DEG2RAD * 0.5 * this.fov ) / this.zoom,\n\t\t\theight = 2 * top,\n\t\t\twidth = this.aspect * height,\n\t\t\tleft = - 0.5 * width,\n\t\t\tview = this.view;\n\n\t\tif ( view !== null ) {\n\n\t\t\tvar fullWidth = view.fullWidth,\n\t\t\t\tfullHeight = view.fullHeight;\n\n\t\t\tleft += view.offsetX * width / fullWidth;\n\t\t\ttop -= view.offsetY * height / fullHeight;\n\t\t\twidth *= view.width / fullWidth;\n\t\t\theight *= view.height / fullHeight;\n\n\t\t}\n\n\t\tvar skew = this.filmOffset;\n\t\tif ( skew !== 0 ) left += near * skew / this.getFilmWidth();\n\n\t\tthis.projectionMatrix.makeFrustum(\n\t\t\t\tleft, left + width, top - height, top, near, this.far );\n\n\t},\n\n\ttoJSON: function ( meta ) {\n\n\t\tvar data = Object3D.prototype.toJSON.call( this, meta );\n\n\t\tdata.object.fov = this.fov;\n\t\tdata.object.zoom = this.zoom;\n\n\t\tdata.object.near = this.near;\n\t\tdata.object.far = this.far;\n\t\tdata.object.focus = this.focus;\n\n\t\tdata.object.aspect = this.aspect;\n\n\t\tif ( this.view !== null ) data.object.view = Object.assign( {}, this.view );\n\n\t\tdata.object.filmGauge = this.filmGauge;\n\t\tdata.object.filmOffset = this.filmOffset;\n\n\t\treturn data;\n\n\t}\n\n} );\n\n\nexport { PerspectiveCamera };\n","import { Camera } from './Camera';\nimport { Object3D } from '../core/Object3D';\n\n/**\n * @author alteredq / http://alteredqualia.com/\n * @author arose / http://github.com/arose\n */\n\nfunction OrthographicCamera( left, right, top, bottom, near, far ) {\n\n\tCamera.call( this );\n\n\tthis.type = 'OrthographicCamera';\n\n\tthis.zoom = 1;\n\tthis.view = null;\n\n\tthis.left = left;\n\tthis.right = right;\n\tthis.top = top;\n\tthis.bottom = bottom;\n\n\tthis.near = ( near !== undefined ) ? near : 0.1;\n\tthis.far = ( far !== undefined ) ? far : 2000;\n\n\tthis.updateProjectionMatrix();\n\n}\n\nOrthographicCamera.prototype = Object.assign( Object.create( Camera.prototype ), {\n\n\tconstructor: OrthographicCamera,\n\n\tisOrthographicCamera: true,\n\n\tcopy: function ( source ) {\n\n\t\tCamera.prototype.copy.call( this, source );\n\n\t\tthis.left = source.left;\n\t\tthis.right = source.right;\n\t\tthis.top = source.top;\n\t\tthis.bottom = source.bottom;\n\t\tthis.near = source.near;\n\t\tthis.far = source.far;\n\n\t\tthis.zoom = source.zoom;\n\t\tthis.view = source.view === null ? null : Object.assign( {}, source.view );\n\n\t\treturn this;\n\n\t},\n\n\tsetViewOffset: function( fullWidth, fullHeight, x, y, width, height ) {\n\n\t\tthis.view = {\n\t\t\tfullWidth: fullWidth,\n\t\t\tfullHeight: fullHeight,\n\t\t\toffsetX: x,\n\t\t\toffsetY: y,\n\t\t\twidth: width,\n\t\t\theight: height\n\t\t};\n\n\t\tthis.updateProjectionMatrix();\n\n\t},\n\n\tclearViewOffset: function() {\n\n\t\tthis.view = null;\n\t\tthis.updateProjectionMatrix();\n\n\t},\n\n\tupdateProjectionMatrix: function () {\n\n\t\tvar dx = ( this.right - this.left ) / ( 2 * this.zoom );\n\t\tvar dy = ( this.top - this.bottom ) / ( 2 * this.zoom );\n\t\tvar cx = ( this.right + this.left ) / 2;\n\t\tvar cy = ( this.top + this.bottom ) / 2;\n\n\t\tvar left = cx - dx;\n\t\tvar right = cx + dx;\n\t\tvar top = cy + dy;\n\t\tvar bottom = cy - dy;\n\n\t\tif ( this.view !== null ) {\n\n\t\t\tvar zoomW = this.zoom / ( this.view.width / this.view.fullWidth );\n\t\t\tvar zoomH = this.zoom / ( this.view.height / this.view.fullHeight );\n\t\t\tvar scaleW = ( this.right - this.left ) / this.view.width;\n\t\t\tvar scaleH = ( this.top - this.bottom ) / this.view.height;\n\n\t\t\tleft += scaleW * ( this.view.offsetX / zoomW );\n\t\t\tright = left + scaleW * ( this.view.width / zoomW );\n\t\t\ttop -= scaleH * ( this.view.offsetY / zoomH );\n\t\t\tbottom = top - scaleH * ( this.view.height / zoomH );\n\n\t\t}\n\n\t\tthis.projectionMatrix.makeOrthographic( left, right, top, bottom, this.near, this.far );\n\n\t},\n\n\ttoJSON: function ( meta ) {\n\n\t\tvar data = Object3D.prototype.toJSON.call( this, meta );\n\n\t\tdata.object.zoom = this.zoom;\n\t\tdata.object.left = this.left;\n\t\tdata.object.right = this.right;\n\t\tdata.object.top = this.top;\n\t\tdata.object.bottom = this.bottom;\n\t\tdata.object.near = this.near;\n\t\tdata.object.far = this.far;\n\n\t\tif ( this.view !== null ) data.object.view = Object.assign( {}, this.view );\n\n\t\treturn data;\n\n\t}\n\n} );\n\n\nexport { OrthographicCamera };\n","/**\n * @author mrdoob / http://mrdoob.com/\n */\n\nfunction WebGLIndexedBufferRenderer( gl, extensions, infoRender ) {\n\n\tvar mode;\n\n\tfunction setMode( value ) {\n\n\t\tmode = value;\n\n\t}\n\n\tvar type, size;\n\n\tfunction setIndex( index ) {\n\n\t\tif ( index.array instanceof Uint32Array && extensions.get( 'OES_element_index_uint' ) ) {\n\n\t\t\ttype = gl.UNSIGNED_INT;\n\t\t\tsize = 4;\n\n\t\t} else {\n\n\t\t\ttype = gl.UNSIGNED_SHORT;\n\t\t\tsize = 2;\n\n\t\t}\n\n\t}\n\n\tfunction render( start, count ) {\n\n\t\tgl.drawElements( mode, count, type, start * size );\n\n\t\tinfoRender.calls ++;\n\t\tinfoRender.vertices += count;\n\n\t\tif ( mode === gl.TRIANGLES ) infoRender.faces += count / 3;\n\n\t}\n\n\tfunction renderInstances( geometry, start, count ) {\n\n\t\tvar extension = extensions.get( 'ANGLE_instanced_arrays' );\n\n\t\tif ( extension === null ) {\n\n\t\t\tconsole.error( 'THREE.WebGLBufferRenderer: using THREE.InstancedBufferGeometry but hardware does not support extension ANGLE_instanced_arrays.' );\n\t\t\treturn;\n\n\t\t}\n\n\t\textension.drawElementsInstancedANGLE( mode, count, type, start * size, geometry.maxInstancedCount );\n\n\t\tinfoRender.calls ++;\n\t\tinfoRender.vertices += count * geometry.maxInstancedCount;\n\n\t\tif ( mode === gl.TRIANGLES ) infoRender.faces += geometry.maxInstancedCount * count / 3;\n\n\t}\n\n\treturn {\n\n\t\tsetMode: setMode,\n\t\tsetIndex: setIndex,\n\t\trender: render,\n\t\trenderInstances: renderInstances\n\n\t};\n\n}\n\n\nexport { WebGLIndexedBufferRenderer };\n","/**\n * @author mrdoob / http://mrdoob.com/\n */\n\nfunction WebGLBufferRenderer( gl, extensions, infoRender ) {\n\n\tvar mode;\n\n\tfunction setMode( value ) {\n\n\t\tmode = value;\n\n\t}\n\n\tfunction render( start, count ) {\n\n\t\tgl.drawArrays( mode, start, count );\n\n\t\tinfoRender.calls ++;\n\t\tinfoRender.vertices += count;\n\n\t\tif ( mode === gl.TRIANGLES ) infoRender.faces += count / 3;\n\n\t}\n\n\tfunction renderInstances( geometry ) {\n\n\t\tvar extension = extensions.get( 'ANGLE_instanced_arrays' );\n\n\t\tif ( extension === null ) {\n\n\t\t\tconsole.error( 'THREE.WebGLBufferRenderer: using THREE.InstancedBufferGeometry but hardware does not support extension ANGLE_instanced_arrays.' );\n\t\t\treturn;\n\n\t\t}\n\n\t\tvar position = geometry.attributes.position;\n\n\t\tvar count = 0;\n\n\t\tif ( (position && position.isInterleavedBufferAttribute) ) {\n\n\t\t\tcount = position.data.count;\n\n\t\t\textension.drawArraysInstancedANGLE( mode, 0, count, geometry.maxInstancedCount );\n\n\t\t} else {\n\n\t\t\tcount = position.count;\n\n\t\t\textension.drawArraysInstancedANGLE( mode, 0, count, geometry.maxInstancedCount );\n\n\t\t}\n\n\t\tinfoRender.calls ++;\n\t\tinfoRender.vertices += count * geometry.maxInstancedCount;\n\n\t\tif ( mode === gl.TRIANGLES ) infoRender.faces += geometry.maxInstancedCount * count / 3;\n\n\t}\n\n\treturn {\n\t\tsetMode: setMode,\n\t\trender: render,\n\t\trenderInstances: renderInstances\n\t};\n\n}\n\n\nexport { WebGLBufferRenderer };\n","/**\n * @author mrdoob / http://mrdoob.com/\n */\n\nimport { Color } from '../../math/Color';\nimport { Vector3 } from '../../math/Vector3';\nimport { Vector2 } from '../../math/Vector2';\n\nfunction WebGLLights() {\n\n\tvar lights = {};\n\n\treturn {\n\n\t\tget: function ( light ) {\n\n\t\t\tif ( lights[ light.id ] !== undefined ) {\n\n\t\t\t\treturn lights[ light.id ];\n\n\t\t\t}\n\n\t\t\tvar uniforms;\n\n\t\t\tswitch ( light.type ) {\n\n\t\t\t\tcase 'DirectionalLight':\n\t\t\t\t\tuniforms = {\n\t\t\t\t\t\tdirection: new Vector3(),\n\t\t\t\t\t\tcolor: new Color(),\n\n\t\t\t\t\t\tshadow: false,\n\t\t\t\t\t\tshadowBias: 0,\n\t\t\t\t\t\tshadowRadius: 1,\n\t\t\t\t\t\tshadowMapSize: new Vector2()\n\t\t\t\t\t};\n\t\t\t\t\tbreak;\n\n\t\t\t\tcase 'SpotLight':\n\t\t\t\t\tuniforms = {\n\t\t\t\t\t\tposition: new Vector3(),\n\t\t\t\t\t\tdirection: new Vector3(),\n\t\t\t\t\t\tcolor: new Color(),\n\t\t\t\t\t\tdistance: 0,\n\t\t\t\t\t\tconeCos: 0,\n\t\t\t\t\t\tpenumbraCos: 0,\n\t\t\t\t\t\tdecay: 0,\n\n\t\t\t\t\t\tshadow: false,\n\t\t\t\t\t\tshadowBias: 0,\n\t\t\t\t\t\tshadowRadius: 1,\n\t\t\t\t\t\tshadowMapSize: new Vector2()\n\t\t\t\t\t};\n\t\t\t\t\tbreak;\n\n\t\t\t\tcase 'PointLight':\n\t\t\t\t\tuniforms = {\n\t\t\t\t\t\tposition: new Vector3(),\n\t\t\t\t\t\tcolor: new Color(),\n\t\t\t\t\t\tdistance: 0,\n\t\t\t\t\t\tdecay: 0,\n\n\t\t\t\t\t\tshadow: false,\n\t\t\t\t\t\tshadowBias: 0,\n\t\t\t\t\t\tshadowRadius: 1,\n\t\t\t\t\t\tshadowMapSize: new Vector2()\n\t\t\t\t\t};\n\t\t\t\t\tbreak;\n\n\t\t\t\tcase 'HemisphereLight':\n\t\t\t\t\tuniforms = {\n\t\t\t\t\t\tdirection: new Vector3(),\n\t\t\t\t\t\tskyColor: new Color(),\n\t\t\t\t\t\tgroundColor: new Color()\n\t\t\t\t\t};\n\t\t\t\t\tbreak;\n\n\t\t\t}\n\n\t\t\tlights[ light.id ] = uniforms;\n\n\t\t\treturn uniforms;\n\n\t\t}\n\n\t};\n\n}\n\n\nexport { WebGLLights };\n","/**\n * @author mrdoob / http://mrdoob.com/\n */\n\nfunction addLineNumbers( string ) {\n\n\tvar lines = string.split( '\\n' );\n\n\tfor ( var i = 0; i < lines.length; i ++ ) {\n\n\t\tlines[ i ] = ( i + 1 ) + ': ' + lines[ i ];\n\n\t}\n\n\treturn lines.join( '\\n' );\n\n}\n\nfunction WebGLShader( gl, type, string ) {\n\n\tvar shader = gl.createShader( type );\n\n\tgl.shaderSource( shader, string );\n\tgl.compileShader( shader );\n\n\tif ( gl.getShaderParameter( shader, gl.COMPILE_STATUS ) === false ) {\n\n\t\tconsole.error( 'THREE.WebGLShader: Shader couldn\\'t compile.' );\n\n\t}\n\n\tif ( gl.getShaderInfoLog( shader ) !== '' ) {\n\n\t\tconsole.warn( 'THREE.WebGLShader: gl.getShaderInfoLog()', type === gl.VERTEX_SHADER ? 'vertex' : 'fragment', gl.getShaderInfoLog( shader ), addLineNumbers( string ) );\n\n\t}\n\n\t// --enable-privileged-webgl-extension\n\t// console.log( type, gl.getExtension( 'WEBGL_debug_shaders' ).getTranslatedShaderSource( shader ) );\n\n\treturn shader;\n\n}\n\nexport { WebGLShader };\n","/**\n * @author mrdoob / http://mrdoob.com/\n */\n\nimport { WebGLUniforms } from './WebGLUniforms';\nimport { WebGLShader } from './WebGLShader';\nimport { ShaderChunk } from '../shaders/ShaderChunk';\nimport { NoToneMapping, AddOperation, MixOperation, MultiplyOperation, EquirectangularRefractionMapping, CubeRefractionMapping, SphericalReflectionMapping, EquirectangularReflectionMapping, CubeUVRefractionMapping, CubeUVReflectionMapping, CubeReflectionMapping, PCFSoftShadowMap, PCFShadowMap, CineonToneMapping, Uncharted2ToneMapping, ReinhardToneMapping, LinearToneMapping, GammaEncoding, RGBDEncoding, RGBM16Encoding, RGBM7Encoding, RGBEEncoding, sRGBEncoding, LinearEncoding } from '../../constants';\n\nvar programIdCount = 0;\n\nfunction getEncodingComponents( encoding ) {\n\n\tswitch ( encoding ) {\n\n\t\tcase LinearEncoding:\n\t\t\treturn [ 'Linear','( value )' ];\n\t\tcase sRGBEncoding:\n\t\t\treturn [ 'sRGB','( value )' ];\n\t\tcase RGBEEncoding:\n\t\t\treturn [ 'RGBE','( value )' ];\n\t\tcase RGBM7Encoding:\n\t\t\treturn [ 'RGBM','( value, 7.0 )' ];\n\t\tcase RGBM16Encoding:\n\t\t\treturn [ 'RGBM','( value, 16.0 )' ];\n\t\tcase RGBDEncoding:\n\t\t\treturn [ 'RGBD','( value, 256.0 )' ];\n\t\tcase GammaEncoding:\n\t\t\treturn [ 'Gamma','( value, float( GAMMA_FACTOR ) )' ];\n\t\tdefault:\n\t\t\tthrow new Error( 'unsupported encoding: ' + encoding );\n\n\t}\n\n}\n\nfunction getTexelDecodingFunction( functionName, encoding ) {\n\n\tvar components = getEncodingComponents( encoding );\n\treturn \"vec4 \" + functionName + \"( vec4 value ) { return \" + components[ 0 ] + \"ToLinear\" + components[ 1 ] + \"; }\";\n\n}\n\nfunction getTexelEncodingFunction( functionName, encoding ) {\n\n\tvar components = getEncodingComponents( encoding );\n\treturn \"vec4 \" + functionName + \"( vec4 value ) { return LinearTo\" + components[ 0 ] + components[ 1 ] + \"; }\";\n\n}\n\nfunction getToneMappingFunction( functionName, toneMapping ) {\n\n\tvar toneMappingName;\n\n\tswitch ( toneMapping ) {\n\n\t\tcase LinearToneMapping:\n\t\t\ttoneMappingName = \"Linear\";\n\t\t\tbreak;\n\n\t\tcase ReinhardToneMapping:\n\t\t\ttoneMappingName = \"Reinhard\";\n\t\t\tbreak;\n\n\t\tcase Uncharted2ToneMapping:\n\t\t\ttoneMappingName = \"Uncharted2\";\n\t\t\tbreak;\n\n\t\tcase CineonToneMapping:\n\t\t\ttoneMappingName = \"OptimizedCineon\";\n\t\t\tbreak;\n\n\t\tdefault:\n\t\t\tthrow new Error( 'unsupported toneMapping: ' + toneMapping );\n\n\t}\n\n\treturn \"vec3 \" + functionName + \"( vec3 color ) { return \" + toneMappingName + \"ToneMapping( color ); }\";\n\n}\n\nfunction generateExtensions( extensions, parameters, rendererExtensions ) {\n\n\textensions = extensions || {};\n\n\tvar chunks = [\n\t\t( extensions.derivatives || parameters.envMapCubeUV || parameters.bumpMap || parameters.normalMap || parameters.flatShading ) ? '#extension GL_OES_standard_derivatives : enable' : '',\n\t\t( extensions.fragDepth || parameters.logarithmicDepthBuffer ) && rendererExtensions.get( 'EXT_frag_depth' ) ? '#extension GL_EXT_frag_depth : enable' : '',\n\t\t( extensions.drawBuffers ) && rendererExtensions.get( 'WEBGL_draw_buffers' ) ? '#extension GL_EXT_draw_buffers : require' : '',\n\t\t( extensions.shaderTextureLOD || parameters.envMap ) && rendererExtensions.get( 'EXT_shader_texture_lod' ) ? '#extension GL_EXT_shader_texture_lod : enable' : '',\n\t];\n\n\treturn chunks.filter( filterEmptyLine ).join( '\\n' );\n\n}\n\nfunction generateDefines( defines ) {\n\n\tvar chunks = [];\n\n\tfor ( var name in defines ) {\n\n\t\tvar value = defines[ name ];\n\n\t\tif ( value === false ) continue;\n\n\t\tchunks.push( '#define ' + name + ' ' + value );\n\n\t}\n\n\treturn chunks.join( '\\n' );\n\n}\n\nfunction fetchAttributeLocations( gl, program, identifiers ) {\n\n\tvar attributes = {};\n\n\tvar n = gl.getProgramParameter( program, gl.ACTIVE_ATTRIBUTES );\n\n\tfor ( var i = 0; i < n; i ++ ) {\n\n\t\tvar info = gl.getActiveAttrib( program, i );\n\t\tvar name = info.name;\n\n\t\t// console.log(\"THREE.WebGLProgram: ACTIVE VERTEX ATTRIBUTE:\", name, i );\n\n\t\tattributes[ name ] = gl.getAttribLocation( program, name );\n\n\t}\n\n\treturn attributes;\n\n}\n\nfunction filterEmptyLine( string ) {\n\n\treturn string !== '';\n\n}\n\nfunction replaceLightNums( string, parameters ) {\n\n\treturn string\n\t\t.replace( /NUM_DIR_LIGHTS/g, parameters.numDirLights )\n\t\t.replace( /NUM_SPOT_LIGHTS/g, parameters.numSpotLights )\n\t\t.replace( /NUM_POINT_LIGHTS/g, parameters.numPointLights )\n\t\t.replace( /NUM_HEMI_LIGHTS/g, parameters.numHemiLights );\n\n}\n\nfunction parseIncludes( string ) {\n\n\tvar pattern = /#include +<([\\w\\d.]+)>/g;\n\n\tfunction replace( match, include ) {\n\n\t\tvar replace = ShaderChunk[ include ];\n\n\t\tif ( replace === undefined ) {\n\n\t\t\tthrow new Error( 'Can not resolve #include <' + include + '>' );\n\n\t\t}\n\n\t\treturn parseIncludes( replace );\n\n\t}\n\n\treturn string.replace( pattern, replace );\n\n}\n\nfunction unrollLoops( string ) {\n\n\tvar pattern = /for \\( int i \\= (\\d+)\\; i < (\\d+)\\; i \\+\\+ \\) \\{([\\s\\S]+?)(?=\\})\\}/g;\n\n\tfunction replace( match, start, end, snippet ) {\n\n\t\tvar unroll = '';\n\n\t\tfor ( var i = parseInt( start ); i < parseInt( end ); i ++ ) {\n\n\t\t\tunroll += snippet.replace( /\\[ i \\]/g, '[ ' + i + ' ]' );\n\n\t\t}\n\n\t\treturn unroll;\n\n\t}\n\n\treturn string.replace( pattern, replace );\n\n}\n\nfunction WebGLProgram( renderer, code, material, parameters ) {\n\n\tvar gl = renderer.context;\n\n\tvar extensions = material.extensions;\n\tvar defines = material.defines;\n\n\tvar vertexShader = material.__webglShader.vertexShader;\n\tvar fragmentShader = material.__webglShader.fragmentShader;\n\n\tvar shadowMapTypeDefine = 'SHADOWMAP_TYPE_BASIC';\n\n\tif ( parameters.shadowMapType === PCFShadowMap ) {\n\n\t\tshadowMapTypeDefine = 'SHADOWMAP_TYPE_PCF';\n\n\t} else if ( parameters.shadowMapType === PCFSoftShadowMap ) {\n\n\t\tshadowMapTypeDefine = 'SHADOWMAP_TYPE_PCF_SOFT';\n\n\t}\n\n\tvar envMapTypeDefine = 'ENVMAP_TYPE_CUBE';\n\tvar envMapModeDefine = 'ENVMAP_MODE_REFLECTION';\n\tvar envMapBlendingDefine = 'ENVMAP_BLENDING_MULTIPLY';\n\n\tif ( parameters.envMap ) {\n\n\t\tswitch ( material.envMap.mapping ) {\n\n\t\t\tcase CubeReflectionMapping:\n\t\t\tcase CubeRefractionMapping:\n\t\t\t\tenvMapTypeDefine = 'ENVMAP_TYPE_CUBE';\n\t\t\t\tbreak;\n\n\t\t\tcase CubeUVReflectionMapping:\n\t\t\tcase CubeUVRefractionMapping:\n\t\t\t\tenvMapTypeDefine = 'ENVMAP_TYPE_CUBE_UV';\n\t\t\t\tbreak;\n\n\t\t\tcase EquirectangularReflectionMapping:\n\t\t\tcase EquirectangularRefractionMapping:\n\t\t\t\tenvMapTypeDefine = 'ENVMAP_TYPE_EQUIREC';\n\t\t\t\tbreak;\n\n\t\t\tcase SphericalReflectionMapping:\n\t\t\t\tenvMapTypeDefine = 'ENVMAP_TYPE_SPHERE';\n\t\t\t\tbreak;\n\n\t\t}\n\n\t\tswitch ( material.envMap.mapping ) {\n\n\t\t\tcase CubeRefractionMapping:\n\t\t\tcase EquirectangularRefractionMapping:\n\t\t\t\tenvMapModeDefine = 'ENVMAP_MODE_REFRACTION';\n\t\t\t\tbreak;\n\n\t\t}\n\n\t\tswitch ( material.combine ) {\n\n\t\t\tcase MultiplyOperation:\n\t\t\t\tenvMapBlendingDefine = 'ENVMAP_BLENDING_MULTIPLY';\n\t\t\t\tbreak;\n\n\t\t\tcase MixOperation:\n\t\t\t\tenvMapBlendingDefine = 'ENVMAP_BLENDING_MIX';\n\t\t\t\tbreak;\n\n\t\t\tcase AddOperation:\n\t\t\t\tenvMapBlendingDefine = 'ENVMAP_BLENDING_ADD';\n\t\t\t\tbreak;\n\n\t\t}\n\n\t}\n\n\tvar gammaFactorDefine = ( renderer.gammaFactor > 0 ) ? renderer.gammaFactor : 1.0;\n\n\t// console.log( 'building new program ' );\n\n\t//\n\n\tvar customExtensions = generateExtensions( extensions, parameters, renderer.extensions );\n\n\tvar customDefines = generateDefines( defines );\n\n\t//\n\n\tvar program = gl.createProgram();\n\n\tvar prefixVertex, prefixFragment;\n\n\tif ( material.isRawShaderMaterial ) {\n\n\t\tprefixVertex = [\n\n\t\t\tcustomDefines,\n\n\t\t\t'\\n'\n\n\t\t].filter( filterEmptyLine ).join( '\\n' );\n\n\t\tprefixFragment = [\n\n\t\t\tcustomExtensions,\n\t\t\tcustomDefines,\n\n\t\t\t'\\n'\n\n\t\t].filter( filterEmptyLine ).join( '\\n' );\n\n\t} else {\n\n\t\tprefixVertex = [\n\n\t\t\t'precision ' + parameters.precision + ' float;',\n\t\t\t'precision ' + parameters.precision + ' int;',\n\n\t\t\t'#define SHADER_NAME ' + material.__webglShader.name,\n\n\t\t\tcustomDefines,\n\n\t\t\tparameters.supportsVertexTextures ? '#define VERTEX_TEXTURES' : '',\n\n\t\t\t'#define GAMMA_FACTOR ' + gammaFactorDefine,\n\n\t\t\t'#define MAX_BONES ' + parameters.maxBones,\n\n\t\t\tparameters.map ? '#define USE_MAP' : '',\n\t\t\tparameters.envMap ? '#define USE_ENVMAP' : '',\n\t\t\tparameters.envMap ? '#define ' + envMapModeDefine : '',\n\t\t\tparameters.lightMap ? '#define USE_LIGHTMAP' : '',\n\t\t\tparameters.aoMap ? '#define USE_AOMAP' : '',\n\t\t\tparameters.emissiveMap ? '#define USE_EMISSIVEMAP' : '',\n\t\t\tparameters.bumpMap ? '#define USE_BUMPMAP' : '',\n\t\t\tparameters.normalMap ? '#define USE_NORMALMAP' : '',\n\t\t\tparameters.displacementMap && parameters.supportsVertexTextures ? '#define USE_DISPLACEMENTMAP' : '',\n\t\t\tparameters.specularMap ? '#define USE_SPECULARMAP' : '',\n\t\t\tparameters.roughnessMap ? '#define USE_ROUGHNESSMAP' : '',\n\t\t\tparameters.metalnessMap ? '#define USE_METALNESSMAP' : '',\n\t\t\tparameters.alphaMap ? '#define USE_ALPHAMAP' : '',\n\t\t\tparameters.vertexColors ? '#define USE_COLOR' : '',\n\n\t\t\tparameters.flatShading ? '#define FLAT_SHADED' : '',\n\n\t\t\tparameters.skinning ? '#define USE_SKINNING' : '',\n\t\t\tparameters.useVertexTexture ? '#define BONE_TEXTURE' : '',\n\n\t\t\tparameters.morphTargets ? '#define USE_MORPHTARGETS' : '',\n\t\t\tparameters.morphNormals && parameters.flatShading === false ? '#define USE_MORPHNORMALS' : '',\n\t\t\tparameters.doubleSided ? '#define DOUBLE_SIDED' : '',\n\t\t\tparameters.flipSided ? '#define FLIP_SIDED' : '',\n\n\t\t\t'#define NUM_CLIPPING_PLANES ' + parameters.numClippingPlanes,\n\n\t\t\tparameters.shadowMapEnabled ? '#define USE_SHADOWMAP' : '',\n\t\t\tparameters.shadowMapEnabled ? '#define ' + shadowMapTypeDefine : '',\n\n\t\t\tparameters.sizeAttenuation ? '#define USE_SIZEATTENUATION' : '',\n\n\t\t\tparameters.logarithmicDepthBuffer ? '#define USE_LOGDEPTHBUF' : '',\n\t\t\tparameters.logarithmicDepthBuffer && renderer.extensions.get( 'EXT_frag_depth' ) ? '#define USE_LOGDEPTHBUF_EXT' : '',\n\n\t\t\t'uniform mat4 modelMatrix;',\n\t\t\t'uniform mat4 modelViewMatrix;',\n\t\t\t'uniform mat4 projectionMatrix;',\n\t\t\t'uniform mat4 viewMatrix;',\n\t\t\t'uniform mat3 normalMatrix;',\n\t\t\t'uniform vec3 cameraPosition;',\n\n\t\t\t'attribute vec3 position;',\n\t\t\t'attribute vec3 normal;',\n\t\t\t'attribute vec2 uv;',\n\n\t\t\t'#ifdef USE_COLOR',\n\n\t\t\t'\tattribute vec3 color;',\n\n\t\t\t'#endif',\n\n\t\t\t'#ifdef USE_MORPHTARGETS',\n\n\t\t\t'\tattribute vec3 morphTarget0;',\n\t\t\t'\tattribute vec3 morphTarget1;',\n\t\t\t'\tattribute vec3 morphTarget2;',\n\t\t\t'\tattribute vec3 morphTarget3;',\n\n\t\t\t'\t#ifdef USE_MORPHNORMALS',\n\n\t\t\t'\t\tattribute vec3 morphNormal0;',\n\t\t\t'\t\tattribute vec3 morphNormal1;',\n\t\t\t'\t\tattribute vec3 morphNormal2;',\n\t\t\t'\t\tattribute vec3 morphNormal3;',\n\n\t\t\t'\t#else',\n\n\t\t\t'\t\tattribute vec3 morphTarget4;',\n\t\t\t'\t\tattribute vec3 morphTarget5;',\n\t\t\t'\t\tattribute vec3 morphTarget6;',\n\t\t\t'\t\tattribute vec3 morphTarget7;',\n\n\t\t\t'\t#endif',\n\n\t\t\t'#endif',\n\n\t\t\t'#ifdef USE_SKINNING',\n\n\t\t\t'\tattribute vec4 skinIndex;',\n\t\t\t'\tattribute vec4 skinWeight;',\n\n\t\t\t'#endif',\n\n\t\t\t'\\n'\n\n\t\t].filter( filterEmptyLine ).join( '\\n' );\n\n\t\tprefixFragment = [\n\n\t\t\tcustomExtensions,\n\n\t\t\t'precision ' + parameters.precision + ' float;',\n\t\t\t'precision ' + parameters.precision + ' int;',\n\n\t\t\t'#define SHADER_NAME ' + material.__webglShader.name,\n\n\t\t\tcustomDefines,\n\n\t\t\tparameters.alphaTest ? '#define ALPHATEST ' + parameters.alphaTest : '',\n\n\t\t\t'#define GAMMA_FACTOR ' + gammaFactorDefine,\n\n\t\t\t( parameters.useFog && parameters.fog ) ? '#define USE_FOG' : '',\n\t\t\t( parameters.useFog && parameters.fogExp ) ? '#define FOG_EXP2' : '',\n\n\t\t\tparameters.map ? '#define USE_MAP' : '',\n\t\t\tparameters.envMap ? '#define USE_ENVMAP' : '',\n\t\t\tparameters.envMap ? '#define ' + envMapTypeDefine : '',\n\t\t\tparameters.envMap ? '#define ' + envMapModeDefine : '',\n\t\t\tparameters.envMap ? '#define ' + envMapBlendingDefine : '',\n\t\t\tparameters.lightMap ? '#define USE_LIGHTMAP' : '',\n\t\t\tparameters.aoMap ? '#define USE_AOMAP' : '',\n\t\t\tparameters.emissiveMap ? '#define USE_EMISSIVEMAP' : '',\n\t\t\tparameters.bumpMap ? '#define USE_BUMPMAP' : '',\n\t\t\tparameters.normalMap ? '#define USE_NORMALMAP' : '',\n\t\t\tparameters.specularMap ? '#define USE_SPECULARMAP' : '',\n\t\t\tparameters.roughnessMap ? '#define USE_ROUGHNESSMAP' : '',\n\t\t\tparameters.metalnessMap ? '#define USE_METALNESSMAP' : '',\n\t\t\tparameters.alphaMap ? '#define USE_ALPHAMAP' : '',\n\t\t\tparameters.vertexColors ? '#define USE_COLOR' : '',\n\n\t\t\tparameters.flatShading ? '#define FLAT_SHADED' : '',\n\n\t\t\tparameters.doubleSided ? '#define DOUBLE_SIDED' : '',\n\t\t\tparameters.flipSided ? '#define FLIP_SIDED' : '',\n\n\t\t\t'#define NUM_CLIPPING_PLANES ' + parameters.numClippingPlanes,\n\t\t\t'#define UNION_CLIPPING_PLANES ' + (parameters.numClippingPlanes - parameters.numClipIntersection),\n\n\t\t\tparameters.shadowMapEnabled ? '#define USE_SHADOWMAP' : '',\n\t\t\tparameters.shadowMapEnabled ? '#define ' + shadowMapTypeDefine : '',\n\n\t\t\tparameters.premultipliedAlpha ? \"#define PREMULTIPLIED_ALPHA\" : '',\n\n\t\t\tparameters.physicallyCorrectLights ? \"#define PHYSICALLY_CORRECT_LIGHTS\" : '',\n\n\t\t\tparameters.logarithmicDepthBuffer ? '#define USE_LOGDEPTHBUF' : '',\n\t\t\tparameters.logarithmicDepthBuffer && renderer.extensions.get( 'EXT_frag_depth' ) ? '#define USE_LOGDEPTHBUF_EXT' : '',\n\n\t\t\tparameters.envMap && renderer.extensions.get( 'EXT_shader_texture_lod' ) ? '#define TEXTURE_LOD_EXT' : '',\n\n\t\t\t'uniform mat4 viewMatrix;',\n\t\t\t'uniform vec3 cameraPosition;',\n\n\t\t\t( parameters.toneMapping !== NoToneMapping ) ? \"#define TONE_MAPPING\" : '',\n\t\t\t( parameters.toneMapping !== NoToneMapping ) ? ShaderChunk[ 'tonemapping_pars_fragment' ] : '', // this code is required here because it is used by the toneMapping() function defined below\n\t\t\t( parameters.toneMapping !== NoToneMapping ) ? getToneMappingFunction( \"toneMapping\", parameters.toneMapping ) : '',\n\n\t\t\t( parameters.outputEncoding || parameters.mapEncoding || parameters.envMapEncoding || parameters.emissiveMapEncoding ) ? ShaderChunk[ 'encodings_pars_fragment' ] : '', // this code is required here because it is used by the various encoding/decoding function defined below\n\t\t\tparameters.mapEncoding ? getTexelDecodingFunction( 'mapTexelToLinear', parameters.mapEncoding ) : '',\n\t\t\tparameters.envMapEncoding ? getTexelDecodingFunction( 'envMapTexelToLinear', parameters.envMapEncoding ) : '',\n\t\t\tparameters.emissiveMapEncoding ? getTexelDecodingFunction( 'emissiveMapTexelToLinear', parameters.emissiveMapEncoding ) : '',\n\t\t\tparameters.outputEncoding ? getTexelEncodingFunction( \"linearToOutputTexel\", parameters.outputEncoding ) : '',\n\n\t\t\tparameters.depthPacking ? \"#define DEPTH_PACKING \" + material.depthPacking : '',\n\n\t\t\t'\\n'\n\n\t\t].filter( filterEmptyLine ).join( '\\n' );\n\n\t}\n\n\tvertexShader = parseIncludes( vertexShader, parameters );\n\tvertexShader = replaceLightNums( vertexShader, parameters );\n\n\tfragmentShader = parseIncludes( fragmentShader, parameters );\n\tfragmentShader = replaceLightNums( fragmentShader, parameters );\n\n\tif ( ! material.isShaderMaterial ) {\n\n\t\tvertexShader = unrollLoops( vertexShader );\n\t\tfragmentShader = unrollLoops( fragmentShader );\n\n\t}\n\n\tvar vertexGlsl = prefixVertex + vertexShader;\n\tvar fragmentGlsl = prefixFragment + fragmentShader;\n\n\t// console.log( '*VERTEX*', vertexGlsl );\n\t// console.log( '*FRAGMENT*', fragmentGlsl );\n\n\tvar glVertexShader = WebGLShader( gl, gl.VERTEX_SHADER, vertexGlsl );\n\tvar glFragmentShader = WebGLShader( gl, gl.FRAGMENT_SHADER, fragmentGlsl );\n\n\tgl.attachShader( program, glVertexShader );\n\tgl.attachShader( program, glFragmentShader );\n\n\t// Force a particular attribute to index 0.\n\n\tif ( material.index0AttributeName !== undefined ) {\n\n\t\tgl.bindAttribLocation( program, 0, material.index0AttributeName );\n\n\t} else if ( parameters.morphTargets === true ) {\n\n\t\t// programs with morphTargets displace position out of attribute 0\n\t\tgl.bindAttribLocation( program, 0, 'position' );\n\n\t}\n\n\tgl.linkProgram( program );\n\n\tvar programLog = gl.getProgramInfoLog( program );\n\tvar vertexLog = gl.getShaderInfoLog( glVertexShader );\n\tvar fragmentLog = gl.getShaderInfoLog( glFragmentShader );\n\n\tvar runnable = true;\n\tvar haveDiagnostics = true;\n\n\t// console.log( '**VERTEX**', gl.getExtension( 'WEBGL_debug_shaders' ).getTranslatedShaderSource( glVertexShader ) );\n\t// console.log( '**FRAGMENT**', gl.getExtension( 'WEBGL_debug_shaders' ).getTranslatedShaderSource( glFragmentShader ) );\n\n\tif ( gl.getProgramParameter( program, gl.LINK_STATUS ) === false ) {\n\n\t\trunnable = false;\n\n\t\tconsole.error( 'THREE.WebGLProgram: shader error: ', gl.getError(), 'gl.VALIDATE_STATUS', gl.getProgramParameter( program, gl.VALIDATE_STATUS ), 'gl.getProgramInfoLog', programLog, vertexLog, fragmentLog );\n\n\t} else if ( programLog !== '' ) {\n\n\t\tconsole.warn( 'THREE.WebGLProgram: gl.getProgramInfoLog()', programLog );\n\n\t} else if ( vertexLog === '' || fragmentLog === '' ) {\n\n\t\thaveDiagnostics = false;\n\n\t}\n\n\tif ( haveDiagnostics ) {\n\n\t\tthis.diagnostics = {\n\n\t\t\trunnable: runnable,\n\t\t\tmaterial: material,\n\n\t\t\tprogramLog: programLog,\n\n\t\t\tvertexShader: {\n\n\t\t\t\tlog: vertexLog,\n\t\t\t\tprefix: prefixVertex\n\n\t\t\t},\n\n\t\t\tfragmentShader: {\n\n\t\t\t\tlog: fragmentLog,\n\t\t\t\tprefix: prefixFragment\n\n\t\t\t}\n\n\t\t};\n\n\t}\n\n\t// clean up\n\n\tgl.deleteShader( glVertexShader );\n\tgl.deleteShader( glFragmentShader );\n\n\t// set up caching for uniform locations\n\n\tvar cachedUniforms;\n\n\tthis.getUniforms = function() {\n\n\t\tif ( cachedUniforms === undefined ) {\n\n\t\t\tcachedUniforms =\n\t\t\t\t\tnew WebGLUniforms( gl, program, renderer );\n\n\t\t}\n\n\t\treturn cachedUniforms;\n\n\t};\n\n\t// set up caching for attribute locations\n\n\tvar cachedAttributes;\n\n\tthis.getAttributes = function() {\n\n\t\tif ( cachedAttributes === undefined ) {\n\n\t\t\tcachedAttributes = fetchAttributeLocations( gl, program );\n\n\t\t}\n\n\t\treturn cachedAttributes;\n\n\t};\n\n\t// free resource\n\n\tthis.destroy = function() {\n\n\t\tgl.deleteProgram( program );\n\t\tthis.program = undefined;\n\n\t};\n\n\t// DEPRECATED\n\n\tObject.defineProperties( this, {\n\n\t\tuniforms: {\n\t\t\tget: function() {\n\n\t\t\t\tconsole.warn( 'THREE.WebGLProgram: .uniforms is now .getUniforms().' );\n\t\t\t\treturn this.getUniforms();\n\n\t\t\t}\n\t\t},\n\n\t\tattributes: {\n\t\t\tget: function() {\n\n\t\t\t\tconsole.warn( 'THREE.WebGLProgram: .attributes is now .getAttributes().' );\n\t\t\t\treturn this.getAttributes();\n\n\t\t\t}\n\t\t}\n\n\t} );\n\n\n\t//\n\n\tthis.id = programIdCount ++;\n\tthis.code = code;\n\tthis.usedTimes = 1;\n\tthis.program = program;\n\tthis.vertexShader = glVertexShader;\n\tthis.fragmentShader = glFragmentShader;\n\n\treturn this;\n\n}\n\nexport { WebGLProgram };\n","/**\n * @author mrdoob / http://mrdoob.com/\n */\n\nimport { WebGLProgram } from './WebGLProgram';\nimport { BackSide, DoubleSide, FlatShading, CubeUVRefractionMapping, CubeUVReflectionMapping, GammaEncoding, LinearEncoding } from '../../constants';\n\nfunction WebGLPrograms( renderer, capabilities ) {\n\n\tvar programs = [];\n\n\tvar shaderIDs = {\n\t\tMeshDepthMaterial: 'depth',\n\t\tMeshNormalMaterial: 'normal',\n\t\tMeshBasicMaterial: 'basic',\n\t\tMeshLambertMaterial: 'lambert',\n\t\tMeshPhongMaterial: 'phong',\n\t\tMeshStandardMaterial: 'physical',\n\t\tMeshPhysicalMaterial: 'physical',\n\t\tLineBasicMaterial: 'basic',\n\t\tLineDashedMaterial: 'dashed',\n\t\tPointsMaterial: 'points'\n\t};\n\n\tvar parameterNames = [\n\t\t\"precision\", \"supportsVertexTextures\", \"map\", \"mapEncoding\", \"envMap\", \"envMapMode\", \"envMapEncoding\",\n\t\t\"lightMap\", \"aoMap\", \"emissiveMap\", \"emissiveMapEncoding\", \"bumpMap\", \"normalMap\", \"displacementMap\", \"specularMap\",\n\t\t\"roughnessMap\", \"metalnessMap\",\n\t\t\"alphaMap\", \"combine\", \"vertexColors\", \"fog\", \"useFog\", \"fogExp\",\n\t\t\"flatShading\", \"sizeAttenuation\", \"logarithmicDepthBuffer\", \"skinning\",\n\t\t\"maxBones\", \"useVertexTexture\", \"morphTargets\", \"morphNormals\",\n\t\t\"maxMorphTargets\", \"maxMorphNormals\", \"premultipliedAlpha\",\n\t\t\"numDirLights\", \"numPointLights\", \"numSpotLights\", \"numHemiLights\",\n\t\t\"shadowMapEnabled\", \"shadowMapType\", \"toneMapping\", 'physicallyCorrectLights',\n\t\t\"alphaTest\", \"doubleSided\", \"flipSided\", \"numClippingPlanes\", \"numClipIntersection\", \"depthPacking\"\n\t];\n\n\n\tfunction allocateBones( object ) {\n\n\t\tif ( capabilities.floatVertexTextures && object && object.skeleton && object.skeleton.useVertexTexture ) {\n\n\t\t\treturn 1024;\n\n\t\t} else {\n\n\t\t\t// default for when object is not specified\n\t\t\t// ( for example when prebuilding shader to be used with multiple objects )\n\t\t\t//\n\t\t\t// - leave some extra space for other uniforms\n\t\t\t// - limit here is ANGLE's 254 max uniform vectors\n\t\t\t// (up to 54 should be safe)\n\n\t\t\tvar nVertexUniforms = capabilities.maxVertexUniforms;\n\t\t\tvar nVertexMatrices = Math.floor( ( nVertexUniforms - 20 ) / 4 );\n\n\t\t\tvar maxBones = nVertexMatrices;\n\n\t\t\tif ( object !== undefined && (object && object.isSkinnedMesh) ) {\n\n\t\t\t\tmaxBones = Math.min( object.skeleton.bones.length, maxBones );\n\n\t\t\t\tif ( maxBones < object.skeleton.bones.length ) {\n\n\t\t\t\t\tconsole.warn( 'WebGLRenderer: too many bones - ' + object.skeleton.bones.length + ', this GPU supports just ' + maxBones + ' (try OpenGL instead of ANGLE)' );\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t\treturn maxBones;\n\n\t\t}\n\n\t}\n\n\tfunction getTextureEncodingFromMap( map, gammaOverrideLinear ) {\n\n\t\tvar encoding;\n\n\t\tif ( ! map ) {\n\n\t\t\tencoding = LinearEncoding;\n\n\t\t} else if ( (map && map.isTexture) ) {\n\n\t\t\tencoding = map.encoding;\n\n\t\t} else if ( (map && map.isWebGLRenderTarget) ) {\n\n\t\t\tconsole.warn( \"THREE.WebGLPrograms.getTextureEncodingFromMap: don't use render targets as textures. Use their .texture property instead.\" );\n\t\t\tencoding = map.texture.encoding;\n\n\t\t}\n\n\t\t// add backwards compatibility for WebGLRenderer.gammaInput/gammaOutput parameter, should probably be removed at some point.\n\t\tif ( encoding === LinearEncoding && gammaOverrideLinear ) {\n\n\t\t\tencoding = GammaEncoding;\n\n\t\t}\n\n\t\treturn encoding;\n\n\t}\n\n\tthis.getParameters = function ( material, lights, fog, nClipPlanes, nClipIntersection, object ) {\n\n\t\tvar shaderID = shaderIDs[ material.type ];\n\n\t\t// heuristics to create shader parameters according to lights in the scene\n\t\t// (not to blow over maxLights budget)\n\n\t\tvar maxBones = allocateBones( object );\n\t\tvar precision = renderer.getPrecision();\n\n\t\tif ( material.precision !== null ) {\n\n\t\t\tprecision = capabilities.getMaxPrecision( material.precision );\n\n\t\t\tif ( precision !== material.precision ) {\n\n\t\t\t\tconsole.warn( 'THREE.WebGLProgram.getParameters:', material.precision, 'not supported, using', precision, 'instead.' );\n\n\t\t\t}\n\n\t\t}\n\n\t\tvar currentRenderTarget = renderer.getCurrentRenderTarget();\n\n\t\tvar parameters = {\n\n\t\t\tshaderID: shaderID,\n\n\t\t\tprecision: precision,\n\t\t\tsupportsVertexTextures: capabilities.vertexTextures,\n\t\t\toutputEncoding: getTextureEncodingFromMap( ( ! currentRenderTarget ) ? null : currentRenderTarget.texture, renderer.gammaOutput ),\n\t\t\tmap: !! material.map,\n\t\t\tmapEncoding: getTextureEncodingFromMap( material.map, renderer.gammaInput ),\n\t\t\tenvMap: !! material.envMap,\n\t\t\tenvMapMode: material.envMap && material.envMap.mapping,\n\t\t\tenvMapEncoding: getTextureEncodingFromMap( material.envMap, renderer.gammaInput ),\n\t\t\tenvMapCubeUV: ( !! material.envMap ) && ( ( material.envMap.mapping === CubeUVReflectionMapping ) || ( material.envMap.mapping === CubeUVRefractionMapping ) ),\n\t\t\tlightMap: !! material.lightMap,\n\t\t\taoMap: !! material.aoMap,\n\t\t\temissiveMap: !! material.emissiveMap,\n\t\t\temissiveMapEncoding: getTextureEncodingFromMap( material.emissiveMap, renderer.gammaInput ),\n\t\t\tbumpMap: !! material.bumpMap,\n\t\t\tnormalMap: !! material.normalMap,\n\t\t\tdisplacementMap: !! material.displacementMap,\n\t\t\troughnessMap: !! material.roughnessMap,\n\t\t\tmetalnessMap: !! material.metalnessMap,\n\t\t\tspecularMap: !! material.specularMap,\n\t\t\talphaMap: !! material.alphaMap,\n\n\t\t\tcombine: material.combine,\n\n\t\t\tvertexColors: material.vertexColors,\n\n\t\t\tfog: !! fog,\n\t\t\tuseFog: material.fog,\n\t\t\tfogExp: (fog && fog.isFogExp2),\n\n\t\t\tflatShading: material.shading === FlatShading,\n\n\t\t\tsizeAttenuation: material.sizeAttenuation,\n\t\t\tlogarithmicDepthBuffer: capabilities.logarithmicDepthBuffer,\n\n\t\t\tskinning: material.skinning,\n\t\t\tmaxBones: maxBones,\n\t\t\tuseVertexTexture: capabilities.floatVertexTextures && object && object.skeleton && object.skeleton.useVertexTexture,\n\n\t\t\tmorphTargets: material.morphTargets,\n\t\t\tmorphNormals: material.morphNormals,\n\t\t\tmaxMorphTargets: renderer.maxMorphTargets,\n\t\t\tmaxMorphNormals: renderer.maxMorphNormals,\n\n\t\t\tnumDirLights: lights.directional.length,\n\t\t\tnumPointLights: lights.point.length,\n\t\t\tnumSpotLights: lights.spot.length,\n\t\t\tnumHemiLights: lights.hemi.length,\n\n\t\t\tnumClippingPlanes: nClipPlanes,\n\t\t\tnumClipIntersection: nClipIntersection,\n\n\t\t\tshadowMapEnabled: renderer.shadowMap.enabled && object.receiveShadow && lights.shadows.length > 0,\n\t\t\tshadowMapType: renderer.shadowMap.type,\n\n\t\t\ttoneMapping: renderer.toneMapping,\n\t\t\tphysicallyCorrectLights: renderer.physicallyCorrectLights,\n\n\t\t\tpremultipliedAlpha: material.premultipliedAlpha,\n\n\t\t\talphaTest: material.alphaTest,\n\t\t\tdoubleSided: material.side === DoubleSide,\n\t\t\tflipSided: material.side === BackSide,\n\n\t\t\tdepthPacking: ( material.depthPacking !== undefined ) ? material.depthPacking : false\n\n\t\t};\n\n\t\treturn parameters;\n\n\t};\n\n\tthis.getProgramCode = function ( material, parameters ) {\n\n\t\tvar array = [];\n\n\t\tif ( parameters.shaderID ) {\n\n\t\t\tarray.push( parameters.shaderID );\n\n\t\t} else {\n\n\t\t\tarray.push( material.fragmentShader );\n\t\t\tarray.push( material.vertexShader );\n\n\t\t}\n\n\t\tif ( material.defines !== undefined ) {\n\n\t\t\tfor ( var name in material.defines ) {\n\n\t\t\t\tarray.push( name );\n\t\t\t\tarray.push( material.defines[ name ] );\n\n\t\t\t}\n\n\t\t}\n\n\t\tfor ( var i = 0; i < parameterNames.length; i ++ ) {\n\n\t\t\tarray.push( parameters[ parameterNames[ i ] ] );\n\n\t\t}\n\n\t\treturn array.join();\n\n\t};\n\n\tthis.acquireProgram = function ( material, parameters, code ) {\n\n\t\tvar program;\n\n\t\t// Check if code has been already compiled\n\t\tfor ( var p = 0, pl = programs.length; p < pl; p ++ ) {\n\n\t\t\tvar programInfo = programs[ p ];\n\n\t\t\tif ( programInfo.code === code ) {\n\n\t\t\t\tprogram = programInfo;\n\t\t\t\t++ program.usedTimes;\n\n\t\t\t\tbreak;\n\n\t\t\t}\n\n\t\t}\n\n\t\tif ( program === undefined ) {\n\n\t\t\tprogram = new WebGLProgram( renderer, code, material, parameters );\n\t\t\tprograms.push( program );\n\n\t\t}\n\n\t\treturn program;\n\n\t};\n\n\tthis.releaseProgram = function( program ) {\n\n\t\tif ( -- program.usedTimes === 0 ) {\n\n\t\t\t// Remove from unordered set\n\t\t\tvar i = programs.indexOf( program );\n\t\t\tprograms[ i ] = programs[ programs.length - 1 ];\n\t\t\tprograms.pop();\n\n\t\t\t// Free WebGL resources\n\t\t\tprogram.destroy();\n\n\t\t}\n\n\t};\n\n\t// Exposed for resource monitoring & error feedback via renderer.info:\n\tthis.programs = programs;\n\n}\n\n\nexport { WebGLPrograms };\n","/**\n * @author mrdoob / http://mrdoob.com/\n */\n\nimport { BufferGeometry } from '../../core/BufferGeometry';\n\nfunction WebGLGeometries( gl, properties, info ) {\n\n\tvar geometries = {};\n\n\tfunction onGeometryDispose( event ) {\n\n\t\tvar geometry = event.target;\n\t\tvar buffergeometry = geometries[ geometry.id ];\n\n\t\tif ( buffergeometry.index !== null ) {\n\n\t\t\tdeleteAttribute( buffergeometry.index );\n\n\t\t}\n\n\t\tdeleteAttributes( buffergeometry.attributes );\n\n\t\tgeometry.removeEventListener( 'dispose', onGeometryDispose );\n\n\t\tdelete geometries[ geometry.id ];\n\n\t\t// TODO\n\n\t\tvar property = properties.get( geometry );\n\n\t\tif ( property.wireframe ) {\n\n\t\t\tdeleteAttribute( property.wireframe );\n\n\t\t}\n\n\t\tproperties.delete( geometry );\n\n\t\tvar bufferproperty = properties.get( buffergeometry );\n\n\t\tif ( bufferproperty.wireframe ) {\n\n\t\t\tdeleteAttribute( bufferproperty.wireframe );\n\n\t\t}\n\n\t\tproperties.delete( buffergeometry );\n\n\t\t//\n\n\t\tinfo.memory.geometries --;\n\n\t}\n\n\tfunction getAttributeBuffer( attribute ) {\n\n\t\tif ( attribute.isInterleavedBufferAttribute ) {\n\n\t\t\treturn properties.get( attribute.data ).__webglBuffer;\n\n\t\t}\n\n\t\treturn properties.get( attribute ).__webglBuffer;\n\n\t}\n\n\tfunction deleteAttribute( attribute ) {\n\n\t\tvar buffer = getAttributeBuffer( attribute );\n\n\t\tif ( buffer !== undefined ) {\n\n\t\t\tgl.deleteBuffer( buffer );\n\t\t\tremoveAttributeBuffer( attribute );\n\n\t\t}\n\n\t}\n\n\tfunction deleteAttributes( attributes ) {\n\n\t\tfor ( var name in attributes ) {\n\n\t\t\tdeleteAttribute( attributes[ name ] );\n\n\t\t}\n\n\t}\n\n\tfunction removeAttributeBuffer( attribute ) {\n\n\t\tif ( attribute.isInterleavedBufferAttribute ) {\n\n\t\t\tproperties.delete( attribute.data );\n\n\t\t} else {\n\n\t\t\tproperties.delete( attribute );\n\n\t\t}\n\n\t}\n\n\treturn {\n\n\t\tget: function ( object ) {\n\n\t\t\tvar geometry = object.geometry;\n\n\t\t\tif ( geometries[ geometry.id ] !== undefined ) {\n\n\t\t\t\treturn geometries[ geometry.id ];\n\n\t\t\t}\n\n\t\t\tgeometry.addEventListener( 'dispose', onGeometryDispose );\n\n\t\t\tvar buffergeometry;\n\n\t\t\tif ( geometry.isBufferGeometry ) {\n\n\t\t\t\tbuffergeometry = geometry;\n\n\t\t\t} else if ( geometry.isGeometry ) {\n\n\t\t\t\tif ( geometry._bufferGeometry === undefined ) {\n\n\t\t\t\t\tgeometry._bufferGeometry = new BufferGeometry().setFromObject( object );\n\n\t\t\t\t}\n\n\t\t\t\tbuffergeometry = geometry._bufferGeometry;\n\n\t\t\t}\n\n\t\t\tgeometries[ geometry.id ] = buffergeometry;\n\n\t\t\tinfo.memory.geometries ++;\n\n\t\t\treturn buffergeometry;\n\n\t\t}\n\n\t};\n\n}\n\n\nexport { WebGLGeometries };\n","/**\n * @author mrdoob / http://mrdoob.com/\n */\n\nimport { BufferAttribute } from '../../core/BufferAttribute';\nimport { WebGLGeometries } from './WebGLGeometries';\n\nfunction WebGLObjects( gl, properties, info ) {\n\n\tvar geometries = new WebGLGeometries( gl, properties, info );\n\n\t//\n\n\tfunction update( object ) {\n\n\t\t// TODO: Avoid updating twice (when using shadowMap). Maybe add frame counter.\n\n\t\tvar geometry = geometries.get( object );\n\n\t\tif ( object.geometry.isGeometry ) {\n\n\t\t\tgeometry.updateFromObject( object );\n\n\t\t}\n\n\t\tvar index = geometry.index;\n\t\tvar attributes = geometry.attributes;\n\n\t\tif ( index !== null ) {\n\n\t\t\tupdateAttribute( index, gl.ELEMENT_ARRAY_BUFFER );\n\n\t\t}\n\n\t\tfor ( var name in attributes ) {\n\n\t\t\tupdateAttribute( attributes[ name ], gl.ARRAY_BUFFER );\n\n\t\t}\n\n\t\t// morph targets\n\n\t\tvar morphAttributes = geometry.morphAttributes;\n\n\t\tfor ( var name in morphAttributes ) {\n\n\t\t\tvar array = morphAttributes[ name ];\n\n\t\t\tfor ( var i = 0, l = array.length; i < l; i ++ ) {\n\n\t\t\t\tupdateAttribute( array[ i ], gl.ARRAY_BUFFER );\n\n\t\t\t}\n\n\t\t}\n\n\t\treturn geometry;\n\n\t}\n\n\tfunction updateAttribute( attribute, bufferType ) {\n\n\t\tvar data = ( attribute.isInterleavedBufferAttribute ) ? attribute.data : attribute;\n\n\t\tvar attributeProperties = properties.get( data );\n\n\t\tif ( attributeProperties.__webglBuffer === undefined ) {\n\n\t\t\tcreateBuffer( attributeProperties, data, bufferType );\n\n\t\t} else if ( attributeProperties.version !== data.version ) {\n\n\t\t\tupdateBuffer( attributeProperties, data, bufferType );\n\n\t\t}\n\n\t}\n\n\tfunction createBuffer( attributeProperties, data, bufferType ) {\n\n\t\tattributeProperties.__webglBuffer = gl.createBuffer();\n\t\tgl.bindBuffer( bufferType, attributeProperties.__webglBuffer );\n\n\t\tvar usage = data.dynamic ? gl.DYNAMIC_DRAW : gl.STATIC_DRAW;\n\n\t\tgl.bufferData( bufferType, data.array, usage );\n\n\t\tattributeProperties.version = data.version;\n\n\t}\n\n\tfunction updateBuffer( attributeProperties, data, bufferType ) {\n\n\t\tgl.bindBuffer( bufferType, attributeProperties.__webglBuffer );\n\n\t\tif ( data.dynamic === false ) {\n\n\t\t\tgl.bufferData( bufferType, data.array, gl.STATIC_DRAW );\n\n\t\t} else if ( data.updateRange.count === - 1 ) {\n\n\t\t\t// Not using update ranges\n\n\t\t\tgl.bufferSubData( bufferType, 0, data.array );\n\n\t\t} else if ( data.updateRange.count === 0 ) {\n\n\t\t\tconsole.error( 'THREE.WebGLObjects.updateBuffer: dynamic THREE.BufferAttribute marked as needsUpdate but updateRange.count is 0, ensure you are using set methods or updating manually.' );\n\n\t\t} else {\n\n\t\t\tgl.bufferSubData( bufferType, data.updateRange.offset * data.array.BYTES_PER_ELEMENT,\n\t\t\t\t\t\t\t data.array.subarray( data.updateRange.offset, data.updateRange.offset + data.updateRange.count ) );\n\n\t\t\tdata.updateRange.count = 0; // reset range\n\n\t\t}\n\n\t\tattributeProperties.version = data.version;\n\n\t}\n\n\tfunction getAttributeBuffer( attribute ) {\n\n\t\tif ( attribute.isInterleavedBufferAttribute ) {\n\n\t\t\treturn properties.get( attribute.data ).__webglBuffer;\n\n\t\t}\n\n\t\treturn properties.get( attribute ).__webglBuffer;\n\n\t}\n\n\tfunction getWireframeAttribute( geometry ) {\n\n\t\tvar property = properties.get( geometry );\n\n\t\tif ( property.wireframe !== undefined ) {\n\n\t\t\treturn property.wireframe;\n\n\t\t}\n\n\t\tvar indices = [];\n\n\t\tvar index = geometry.index;\n\t\tvar attributes = geometry.attributes;\n\t\tvar position = attributes.position;\n\n\t\t// console.time( 'wireframe' );\n\n\t\tif ( index !== null ) {\n\n\t\t\tvar edges = {};\n\t\t\tvar array = index.array;\n\n\t\t\tfor ( var i = 0, l = array.length; i < l; i += 3 ) {\n\n\t\t\t\tvar a = array[ i + 0 ];\n\t\t\t\tvar b = array[ i + 1 ];\n\t\t\t\tvar c = array[ i + 2 ];\n\n\t\t\t\tindices.push( a, b, b, c, c, a );\n\n\t\t\t}\n\n\t\t} else {\n\n\t\t\tvar array = attributes.position.array;\n\n\t\t\tfor ( var i = 0, l = ( array.length / 3 ) - 1; i < l; i += 3 ) {\n\n\t\t\t\tvar a = i + 0;\n\t\t\t\tvar b = i + 1;\n\t\t\t\tvar c = i + 2;\n\n\t\t\t\tindices.push( a, b, b, c, c, a );\n\n\t\t\t}\n\n\t\t}\n\n\t\t// console.timeEnd( 'wireframe' );\n\n\t\tvar TypeArray = position.count > 65535 ? Uint32Array : Uint16Array;\n\t\tvar attribute = new BufferAttribute( new TypeArray( indices ), 1 );\n\n\t\tupdateAttribute( attribute, gl.ELEMENT_ARRAY_BUFFER );\n\n\t\tproperty.wireframe = attribute;\n\n\t\treturn attribute;\n\n\t}\n\n\treturn {\n\n\t\tgetAttributeBuffer: getAttributeBuffer,\n\t\tgetWireframeAttribute: getWireframeAttribute,\n\n\t\tupdate: update\n\n\t};\n\n}\n\n\nexport { WebGLObjects };\n","/**\n * @author mrdoob / http://mrdoob.com/\n */\n\nimport { LinearFilter, NearestFilter, RGBFormat, RGBAFormat, DepthFormat, DepthStencilFormat, FloatType, HalfFloatType, ClampToEdgeWrapping, NearestMipMapLinearFilter, NearestMipMapNearestFilter } from '../../constants';\nimport { _Math } from '../../math/Math';\n\nfunction WebGLTextures( _gl, extensions, state, properties, capabilities, paramThreeToGL, info ) {\n\n\tvar _infoMemory = info.memory;\n\tvar _isWebGL2 = ( typeof WebGL2RenderingContext !== 'undefined' && _gl instanceof WebGL2RenderingContext );\n\n\t//\n\n\tfunction clampToMaxSize( image, maxSize ) {\n\n\t\tif ( image.width > maxSize || image.height > maxSize ) {\n\n\t\t\t// Warning: Scaling through the canvas will only work with images that use\n\t\t\t// premultiplied alpha.\n\n\t\t\tvar scale = maxSize / Math.max( image.width, image.height );\n\n\t\t\tvar canvas = document.createElementNS( 'http://www.w3.org/1999/xhtml', 'canvas' );\n\t\t\tcanvas.width = Math.floor( image.width * scale );\n\t\t\tcanvas.height = Math.floor( image.height * scale );\n\n\t\t\tvar context = canvas.getContext( '2d' );\n\t\t\tcontext.drawImage( image, 0, 0, image.width, image.height, 0, 0, canvas.width, canvas.height );\n\n\t\t\tconsole.warn( 'THREE.WebGLRenderer: image is too big (' + image.width + 'x' + image.height + '). Resized to ' + canvas.width + 'x' + canvas.height, image );\n\n\t\t\treturn canvas;\n\n\t\t}\n\n\t\treturn image;\n\n\t}\n\n\tfunction isPowerOfTwo( image ) {\n\n\t\treturn _Math.isPowerOfTwo( image.width ) && _Math.isPowerOfTwo( image.height );\n\n\t}\n\n\tfunction makePowerOfTwo( image ) {\n\n\t\tif ( image instanceof HTMLImageElement || image instanceof HTMLCanvasElement ) {\n\n\t\t\tvar canvas = document.createElementNS( 'http://www.w3.org/1999/xhtml', 'canvas' );\n\t\t\tcanvas.width = _Math.nearestPowerOfTwo( image.width );\n\t\t\tcanvas.height = _Math.nearestPowerOfTwo( image.height );\n\n\t\t\tvar context = canvas.getContext( '2d' );\n\t\t\tcontext.drawImage( image, 0, 0, canvas.width, canvas.height );\n\n\t\t\tconsole.warn( 'THREE.WebGLRenderer: image is not power of two (' + image.width + 'x' + image.height + '). Resized to ' + canvas.width + 'x' + canvas.height, image );\n\n\t\t\treturn canvas;\n\n\t\t}\n\n\t\treturn image;\n\n\t}\n\n\tfunction textureNeedsPowerOfTwo( texture ) {\n\n\t\tif ( texture.wrapS !== ClampToEdgeWrapping || texture.wrapT !== ClampToEdgeWrapping ) return true;\n\t\tif ( texture.minFilter !== NearestFilter && texture.minFilter !== LinearFilter ) return true;\n\n\t\treturn false;\n\n\t}\n\n\t// Fallback filters for non-power-of-2 textures\n\n\tfunction filterFallback( f ) {\n\n\t\tif ( f === NearestFilter || f === NearestMipMapNearestFilter || f === NearestMipMapLinearFilter ) {\n\n\t\t\treturn _gl.NEAREST;\n\n\t\t}\n\n\t\treturn _gl.LINEAR;\n\n\t}\n\n\t//\n\n\tfunction onTextureDispose( event ) {\n\n\t\tvar texture = event.target;\n\n\t\ttexture.removeEventListener( 'dispose', onTextureDispose );\n\n\t\tdeallocateTexture( texture );\n\n\t\t_infoMemory.textures --;\n\n\n\t}\n\n\tfunction onRenderTargetDispose( event ) {\n\n\t\tvar renderTarget = event.target;\n\n\t\trenderTarget.removeEventListener( 'dispose', onRenderTargetDispose );\n\n\t\tdeallocateRenderTarget( renderTarget );\n\n\t\t_infoMemory.textures --;\n\n\t}\n\n\t//\n\n\tfunction deallocateTexture( texture ) {\n\n\t\tvar textureProperties = properties.get( texture );\n\n\t\tif ( texture.image && textureProperties.__image__webglTextureCube ) {\n\n\t\t\t// cube texture\n\n\t\t\t_gl.deleteTexture( textureProperties.__image__webglTextureCube );\n\n\t\t} else {\n\n\t\t\t// 2D texture\n\n\t\t\tif ( textureProperties.__webglInit === undefined ) return;\n\n\t\t\t_gl.deleteTexture( textureProperties.__webglTexture );\n\n\t\t}\n\n\t\t// remove all webgl properties\n\t\tproperties.delete( texture );\n\n\t}\n\n\tfunction deallocateRenderTarget( renderTarget ) {\n\n\t\tvar renderTargetProperties = properties.get( renderTarget );\n\t\tvar textureProperties = properties.get( renderTarget.texture );\n\n\t\tif ( ! renderTarget ) return;\n\n\t\tif ( textureProperties.__webglTexture !== undefined ) {\n\n\t\t\t_gl.deleteTexture( textureProperties.__webglTexture );\n\n\t\t}\n\n\t\tif ( renderTarget.depthTexture ) {\n\n\t\t\trenderTarget.depthTexture.dispose();\n\n\t\t}\n\n\t\tif ( (renderTarget && renderTarget.isWebGLRenderTargetCube) ) {\n\n\t\t\tfor ( var i = 0; i < 6; i ++ ) {\n\n\t\t\t\t_gl.deleteFramebuffer( renderTargetProperties.__webglFramebuffer[ i ] );\n\t\t\t\tif ( renderTargetProperties.__webglDepthbuffer ) _gl.deleteRenderbuffer( renderTargetProperties.__webglDepthbuffer[ i ] );\n\n\t\t\t}\n\n\t\t} else {\n\n\t\t\t_gl.deleteFramebuffer( renderTargetProperties.__webglFramebuffer );\n\t\t\tif ( renderTargetProperties.__webglDepthbuffer ) _gl.deleteRenderbuffer( renderTargetProperties.__webglDepthbuffer );\n\n\t\t}\n\n\t\tproperties.delete( renderTarget.texture );\n\t\tproperties.delete( renderTarget );\n\n\t}\n\n\t//\n\n\n\n\tfunction setTexture2D( texture, slot ) {\n\n\t\tvar textureProperties = properties.get( texture );\n\n\t\tif ( texture.version > 0 && textureProperties.__version !== texture.version ) {\n\n\t\t\tvar image = texture.image;\n\n\t\t\tif ( image === undefined ) {\n\n\t\t\t\tconsole.warn( 'THREE.WebGLRenderer: Texture marked for update but image is undefined', texture );\n\n\t\t\t} else if ( image.complete === false ) {\n\n\t\t\t\tconsole.warn( 'THREE.WebGLRenderer: Texture marked for update but image is incomplete', texture );\n\n\t\t\t} else {\n\n\t\t\t\tuploadTexture( textureProperties, texture, slot );\n\t\t\t\treturn;\n\n\t\t\t}\n\n\t\t}\n\n\t\tstate.activeTexture( _gl.TEXTURE0 + slot );\n\t\tstate.bindTexture( _gl.TEXTURE_2D, textureProperties.__webglTexture );\n\n\t}\n\n\tfunction setTextureCube( texture, slot ) {\n\n\t\tvar textureProperties = properties.get( texture );\n\n\t\tif ( texture.image.length === 6 ) {\n\n\t\t\tif ( texture.version > 0 && textureProperties.__version !== texture.version ) {\n\n\t\t\t\tif ( ! textureProperties.__image__webglTextureCube ) {\n\n\t\t\t\t\ttexture.addEventListener( 'dispose', onTextureDispose );\n\n\t\t\t\t\ttextureProperties.__image__webglTextureCube = _gl.createTexture();\n\n\t\t\t\t\t_infoMemory.textures ++;\n\n\t\t\t\t}\n\n\t\t\t\tstate.activeTexture( _gl.TEXTURE0 + slot );\n\t\t\t\tstate.bindTexture( _gl.TEXTURE_CUBE_MAP, textureProperties.__image__webglTextureCube );\n\n\t\t\t\t_gl.pixelStorei( _gl.UNPACK_FLIP_Y_WEBGL, texture.flipY );\n\n\t\t\t\tvar isCompressed = (texture && texture.isCompressedTexture);\n\t\t\t\tvar isDataTexture = (texture.image[ 0 ] && texture.image[ 0 ].isDataTexture);\n\n\t\t\t\tvar cubeImage = [];\n\n\t\t\t\tfor ( var i = 0; i < 6; i ++ ) {\n\n\t\t\t\t\tif ( ! isCompressed && ! isDataTexture ) {\n\n\t\t\t\t\t\tcubeImage[ i ] = clampToMaxSize( texture.image[ i ], capabilities.maxCubemapSize );\n\n\t\t\t\t\t} else {\n\n\t\t\t\t\t\tcubeImage[ i ] = isDataTexture ? texture.image[ i ].image : texture.image[ i ];\n\n\t\t\t\t\t}\n\n\t\t\t\t}\n\n\t\t\t\tvar image = cubeImage[ 0 ],\n\t\t\t\tisPowerOfTwoImage = isPowerOfTwo( image ),\n\t\t\t\tglFormat = paramThreeToGL( texture.format ),\n\t\t\t\tglType = paramThreeToGL( texture.type );\n\n\t\t\t\tsetTextureParameters( _gl.TEXTURE_CUBE_MAP, texture, isPowerOfTwoImage );\n\n\t\t\t\tfor ( var i = 0; i < 6; i ++ ) {\n\n\t\t\t\t\tif ( ! isCompressed ) {\n\n\t\t\t\t\t\tif ( isDataTexture ) {\n\n\t\t\t\t\t\t\tstate.texImage2D( _gl.TEXTURE_CUBE_MAP_POSITIVE_X + i, 0, glFormat, cubeImage[ i ].width, cubeImage[ i ].height, 0, glFormat, glType, cubeImage[ i ].data );\n\n\t\t\t\t\t\t} else {\n\n\t\t\t\t\t\t\tstate.texImage2D( _gl.TEXTURE_CUBE_MAP_POSITIVE_X + i, 0, glFormat, glFormat, glType, cubeImage[ i ] );\n\n\t\t\t\t\t\t}\n\n\t\t\t\t\t} else {\n\n\t\t\t\t\t\tvar mipmap, mipmaps = cubeImage[ i ].mipmaps;\n\n\t\t\t\t\t\tfor ( var j = 0, jl = mipmaps.length; j < jl; j ++ ) {\n\n\t\t\t\t\t\t\tmipmap = mipmaps[ j ];\n\n\t\t\t\t\t\t\tif ( texture.format !== RGBAFormat && texture.format !== RGBFormat ) {\n\n\t\t\t\t\t\t\t\tif ( state.getCompressedTextureFormats().indexOf( glFormat ) > - 1 ) {\n\n\t\t\t\t\t\t\t\t\tstate.compressedTexImage2D( _gl.TEXTURE_CUBE_MAP_POSITIVE_X + i, j, glFormat, mipmap.width, mipmap.height, 0, mipmap.data );\n\n\t\t\t\t\t\t\t\t} else {\n\n\t\t\t\t\t\t\t\t\tconsole.warn( \"THREE.WebGLRenderer: Attempt to load unsupported compressed texture format in .setTextureCube()\" );\n\n\t\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\t} else {\n\n\t\t\t\t\t\t\t\tstate.texImage2D( _gl.TEXTURE_CUBE_MAP_POSITIVE_X + i, j, glFormat, mipmap.width, mipmap.height, 0, glFormat, glType, mipmap.data );\n\n\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t}\n\n\t\t\t\t\t}\n\n\t\t\t\t}\n\n\t\t\t\tif ( texture.generateMipmaps && isPowerOfTwoImage ) {\n\n\t\t\t\t\t_gl.generateMipmap( _gl.TEXTURE_CUBE_MAP );\n\n\t\t\t\t}\n\n\t\t\t\ttextureProperties.__version = texture.version;\n\n\t\t\t\tif ( texture.onUpdate ) texture.onUpdate( texture );\n\n\t\t\t} else {\n\n\t\t\t\tstate.activeTexture( _gl.TEXTURE0 + slot );\n\t\t\t\tstate.bindTexture( _gl.TEXTURE_CUBE_MAP, textureProperties.__image__webglTextureCube );\n\n\t\t\t}\n\n\t\t}\n\n\t}\n\n\tfunction setTextureCubeDynamic( texture, slot ) {\n\n\t\tstate.activeTexture( _gl.TEXTURE0 + slot );\n\t\tstate.bindTexture( _gl.TEXTURE_CUBE_MAP, properties.get( texture ).__webglTexture );\n\n\t}\n\n\tfunction setTextureParameters( textureType, texture, isPowerOfTwoImage ) {\n\n\t\tvar extension;\n\n\t\tif ( isPowerOfTwoImage ) {\n\n\t\t\t_gl.texParameteri( textureType, _gl.TEXTURE_WRAP_S, paramThreeToGL( texture.wrapS ) );\n\t\t\t_gl.texParameteri( textureType, _gl.TEXTURE_WRAP_T, paramThreeToGL( texture.wrapT ) );\n\n\t\t\t_gl.texParameteri( textureType, _gl.TEXTURE_MAG_FILTER, paramThreeToGL( texture.magFilter ) );\n\t\t\t_gl.texParameteri( textureType, _gl.TEXTURE_MIN_FILTER, paramThreeToGL( texture.minFilter ) );\n\n\t\t} else {\n\n\t\t\t_gl.texParameteri( textureType, _gl.TEXTURE_WRAP_S, _gl.CLAMP_TO_EDGE );\n\t\t\t_gl.texParameteri( textureType, _gl.TEXTURE_WRAP_T, _gl.CLAMP_TO_EDGE );\n\n\t\t\tif ( texture.wrapS !== ClampToEdgeWrapping || texture.wrapT !== ClampToEdgeWrapping ) {\n\n\t\t\t\tconsole.warn( 'THREE.WebGLRenderer: Texture is not power of two. Texture.wrapS and Texture.wrapT should be set to THREE.ClampToEdgeWrapping.', texture );\n\n\t\t\t}\n\n\t\t\t_gl.texParameteri( textureType, _gl.TEXTURE_MAG_FILTER, filterFallback( texture.magFilter ) );\n\t\t\t_gl.texParameteri( textureType, _gl.TEXTURE_MIN_FILTER, filterFallback( texture.minFilter ) );\n\n\t\t\tif ( texture.minFilter !== NearestFilter && texture.minFilter !== LinearFilter ) {\n\n\t\t\t\tconsole.warn( 'THREE.WebGLRenderer: Texture is not power of two. Texture.minFilter should be set to THREE.NearestFilter or THREE.LinearFilter.', texture );\n\n\t\t\t}\n\n\t\t}\n\n\t\textension = extensions.get( 'EXT_texture_filter_anisotropic' );\n\n\t\tif ( extension ) {\n\n\t\t\tif ( texture.type === FloatType && extensions.get( 'OES_texture_float_linear' ) === null ) return;\n\t\t\tif ( texture.type === HalfFloatType && extensions.get( 'OES_texture_half_float_linear' ) === null ) return;\n\n\t\t\tif ( texture.anisotropy > 1 || properties.get( texture ).__currentAnisotropy ) {\n\n\t\t\t\t_gl.texParameterf( textureType, extension.TEXTURE_MAX_ANISOTROPY_EXT, Math.min( texture.anisotropy, capabilities.getMaxAnisotropy() ) );\n\t\t\t\tproperties.get( texture ).__currentAnisotropy = texture.anisotropy;\n\n\t\t\t}\n\n\t\t}\n\n\t}\n\n\tfunction uploadTexture( textureProperties, texture, slot ) {\n\n\t\tif ( textureProperties.__webglInit === undefined ) {\n\n\t\t\ttextureProperties.__webglInit = true;\n\n\t\t\ttexture.addEventListener( 'dispose', onTextureDispose );\n\n\t\t\ttextureProperties.__webglTexture = _gl.createTexture();\n\n\t\t\t_infoMemory.textures ++;\n\n\t\t}\n\n\t\tstate.activeTexture( _gl.TEXTURE0 + slot );\n\t\tstate.bindTexture( _gl.TEXTURE_2D, textureProperties.__webglTexture );\n\n\t\t_gl.pixelStorei( _gl.UNPACK_FLIP_Y_WEBGL, texture.flipY );\n\t\t_gl.pixelStorei( _gl.UNPACK_PREMULTIPLY_ALPHA_WEBGL, texture.premultiplyAlpha );\n\t\t_gl.pixelStorei( _gl.UNPACK_ALIGNMENT, texture.unpackAlignment );\n\n\t\tvar image = clampToMaxSize( texture.image, capabilities.maxTextureSize );\n\n\t\tif ( textureNeedsPowerOfTwo( texture ) && isPowerOfTwo( image ) === false ) {\n\n\t\t\timage = makePowerOfTwo( image );\n\n\t\t}\n\n\t\tvar isPowerOfTwoImage = isPowerOfTwo( image ),\n\t\tglFormat = paramThreeToGL( texture.format ),\n\t\tglType = paramThreeToGL( texture.type );\n\n\t\tsetTextureParameters( _gl.TEXTURE_2D, texture, isPowerOfTwoImage );\n\n\t\tvar mipmap, mipmaps = texture.mipmaps;\n\n\t\tif ( (texture && texture.isDepthTexture) ) {\n\n\t\t\t// populate depth texture with dummy data\n\n\t\t\tvar internalFormat = _gl.DEPTH_COMPONENT;\n\n\t\t\tif ( texture.type === FloatType ) {\n\n\t\t\t\tif ( !_isWebGL2 ) throw new Error('Float Depth Texture only supported in WebGL2.0');\n\t\t\t\tinternalFormat = _gl.DEPTH_COMPONENT32F;\n\n\t\t\t} else if ( _isWebGL2 ) {\n\n\t\t\t\t// WebGL 2.0 requires signed internalformat for glTexImage2D\n\t\t\t\tinternalFormat = _gl.DEPTH_COMPONENT16;\n\n\t\t\t}\n\n\t\t\t// Depth stencil textures need the DEPTH_STENCIL internal format\n\t\t\t// (https://www.khronos.org/registry/webgl/extensions/WEBGL_depth_texture/)\n\t\t\tif ( texture.format === DepthStencilFormat ) {\n\n\t\t\t\tinternalFormat = _gl.DEPTH_STENCIL;\n\n\t\t\t}\n\n\t\t\tstate.texImage2D( _gl.TEXTURE_2D, 0, internalFormat, image.width, image.height, 0, glFormat, glType, null );\n\n\t\t} else if ( (texture && texture.isDataTexture) ) {\n\n\t\t\t// use manually created mipmaps if available\n\t\t\t// if there are no manual mipmaps\n\t\t\t// set 0 level mipmap and then use GL to generate other mipmap levels\n\n\t\t\tif ( mipmaps.length > 0 && isPowerOfTwoImage ) {\n\n\t\t\t\tfor ( var i = 0, il = mipmaps.length; i < il; i ++ ) {\n\n\t\t\t\t\tmipmap = mipmaps[ i ];\n\t\t\t\t\tstate.texImage2D( _gl.TEXTURE_2D, i, glFormat, mipmap.width, mipmap.height, 0, glFormat, glType, mipmap.data );\n\n\t\t\t\t}\n\n\t\t\t\ttexture.generateMipmaps = false;\n\n\t\t\t} else {\n\n\t\t\t\tstate.texImage2D( _gl.TEXTURE_2D, 0, glFormat, image.width, image.height, 0, glFormat, glType, image.data );\n\n\t\t\t}\n\n\t\t} else if ( (texture && texture.isCompressedTexture) ) {\n\n\t\t\tfor ( var i = 0, il = mipmaps.length; i < il; i ++ ) {\n\n\t\t\t\tmipmap = mipmaps[ i ];\n\n\t\t\t\tif ( texture.format !== RGBAFormat && texture.format !== RGBFormat ) {\n\n\t\t\t\t\tif ( state.getCompressedTextureFormats().indexOf( glFormat ) > - 1 ) {\n\n\t\t\t\t\t\tstate.compressedTexImage2D( _gl.TEXTURE_2D, i, glFormat, mipmap.width, mipmap.height, 0, mipmap.data );\n\n\t\t\t\t\t} else {\n\n\t\t\t\t\t\tconsole.warn( \"THREE.WebGLRenderer: Attempt to load unsupported compressed texture format in .uploadTexture()\" );\n\n\t\t\t\t\t}\n\n\t\t\t\t} else {\n\n\t\t\t\t\tstate.texImage2D( _gl.TEXTURE_2D, i, glFormat, mipmap.width, mipmap.height, 0, glFormat, glType, mipmap.data );\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t} else {\n\n\t\t\t// regular Texture (image, video, canvas)\n\n\t\t\t// use manually created mipmaps if available\n\t\t\t// if there are no manual mipmaps\n\t\t\t// set 0 level mipmap and then use GL to generate other mipmap levels\n\n\t\t\tif ( mipmaps.length > 0 && isPowerOfTwoImage ) {\n\n\t\t\t\tfor ( var i = 0, il = mipmaps.length; i < il; i ++ ) {\n\n\t\t\t\t\tmipmap = mipmaps[ i ];\n\t\t\t\t\tstate.texImage2D( _gl.TEXTURE_2D, i, glFormat, glFormat, glType, mipmap );\n\n\t\t\t\t}\n\n\t\t\t\ttexture.generateMipmaps = false;\n\n\t\t\t} else {\n\n\t\t\t\tstate.texImage2D( _gl.TEXTURE_2D, 0, glFormat, glFormat, glType, image );\n\n\t\t\t}\n\n\t\t}\n\n\t\tif ( texture.generateMipmaps && isPowerOfTwoImage ) _gl.generateMipmap( _gl.TEXTURE_2D );\n\n\t\ttextureProperties.__version = texture.version;\n\n\t\tif ( texture.onUpdate ) texture.onUpdate( texture );\n\n\t}\n\n\t// Render targets\n\n\t// Setup storage for target texture and bind it to correct framebuffer\n\tfunction setupFrameBufferTexture( framebuffer, renderTarget, attachment, textureTarget ) {\n\n\t\tvar glFormat = paramThreeToGL( renderTarget.texture.format );\n\t\tvar glType = paramThreeToGL( renderTarget.texture.type );\n\t\tstate.texImage2D( textureTarget, 0, glFormat, renderTarget.width, renderTarget.height, 0, glFormat, glType, null );\n\t\t_gl.bindFramebuffer( _gl.FRAMEBUFFER, framebuffer );\n\t\t_gl.framebufferTexture2D( _gl.FRAMEBUFFER, attachment, textureTarget, properties.get( renderTarget.texture ).__webglTexture, 0 );\n\t\t_gl.bindFramebuffer( _gl.FRAMEBUFFER, null );\n\n\t}\n\n\t// Setup storage for internal depth/stencil buffers and bind to correct framebuffer\n\tfunction setupRenderBufferStorage( renderbuffer, renderTarget ) {\n\n\t\t_gl.bindRenderbuffer( _gl.RENDERBUFFER, renderbuffer );\n\n\t\tif ( renderTarget.depthBuffer && ! renderTarget.stencilBuffer ) {\n\n\t\t\t_gl.renderbufferStorage( _gl.RENDERBUFFER, _gl.DEPTH_COMPONENT16, renderTarget.width, renderTarget.height );\n\t\t\t_gl.framebufferRenderbuffer( _gl.FRAMEBUFFER, _gl.DEPTH_ATTACHMENT, _gl.RENDERBUFFER, renderbuffer );\n\n\t\t} else if ( renderTarget.depthBuffer && renderTarget.stencilBuffer ) {\n\n\t\t\t_gl.renderbufferStorage( _gl.RENDERBUFFER, _gl.DEPTH_STENCIL, renderTarget.width, renderTarget.height );\n\t\t\t_gl.framebufferRenderbuffer( _gl.FRAMEBUFFER, _gl.DEPTH_STENCIL_ATTACHMENT, _gl.RENDERBUFFER, renderbuffer );\n\n\t\t} else {\n\n\t\t\t// FIXME: We don't support !depth !stencil\n\t\t\t_gl.renderbufferStorage( _gl.RENDERBUFFER, _gl.RGBA4, renderTarget.width, renderTarget.height );\n\n\t\t}\n\n\t\t_gl.bindRenderbuffer( _gl.RENDERBUFFER, null );\n\n\t}\n\n\t// Setup resources for a Depth Texture for a FBO (needs an extension)\n\tfunction setupDepthTexture( framebuffer, renderTarget ) {\n\n\t\tvar isCube = ( (renderTarget && renderTarget.isWebGLRenderTargetCube) );\n\t\tif ( isCube ) throw new Error('Depth Texture with cube render targets is not supported!');\n\n\t\t_gl.bindFramebuffer( _gl.FRAMEBUFFER, framebuffer );\n\n\t\tif ( !( (renderTarget.depthTexture && renderTarget.depthTexture.isDepthTexture) ) ) {\n\n\t\t\tthrow new Error('renderTarget.depthTexture must be an instance of THREE.DepthTexture');\n\n\t\t}\n\n\t\t// upload an empty depth texture with framebuffer size\n\t\tif ( !properties.get( renderTarget.depthTexture ).__webglTexture ||\n\t\t\t\trenderTarget.depthTexture.image.width !== renderTarget.width ||\n\t\t\t\trenderTarget.depthTexture.image.height !== renderTarget.height ) {\n\t\t\trenderTarget.depthTexture.image.width = renderTarget.width;\n\t\t\trenderTarget.depthTexture.image.height = renderTarget.height;\n\t\t\trenderTarget.depthTexture.needsUpdate = true;\n\t\t}\n\n\t\tsetTexture2D( renderTarget.depthTexture, 0 );\n\n\t\tvar webglDepthTexture = properties.get( renderTarget.depthTexture ).__webglTexture;\n\n\t\tif ( renderTarget.depthTexture.format === DepthFormat ) {\n\n\t\t\t_gl.framebufferTexture2D( _gl.FRAMEBUFFER, _gl.DEPTH_ATTACHMENT, _gl.TEXTURE_2D, webglDepthTexture, 0 );\n\n\t\t} else if ( renderTarget.depthTexture.format === DepthStencilFormat ) {\n\n\t\t\t_gl.framebufferTexture2D( _gl.FRAMEBUFFER, _gl.DEPTH_STENCIL_ATTACHMENT, _gl.TEXTURE_2D, webglDepthTexture, 0 );\n\n\t\t} else {\n\n\t\t\tthrow new Error('Unknown depthTexture format')\n\n\t\t}\n\n\t}\n\n\t// Setup GL resources for a non-texture depth buffer\n\tfunction setupDepthRenderbuffer( renderTarget ) {\n\n\t\tvar renderTargetProperties = properties.get( renderTarget );\n\n\t\tvar isCube = ( (renderTarget && renderTarget.isWebGLRenderTargetCube) );\n\n\t\tif ( renderTarget.depthTexture ) {\n\n\t\t\tif ( isCube ) throw new Error('target.depthTexture not supported in Cube render targets');\n\n\t\t\tsetupDepthTexture( renderTargetProperties.__webglFramebuffer, renderTarget );\n\n\t\t} else {\n\n\t\t\tif ( isCube ) {\n\n\t\t\t\trenderTargetProperties.__webglDepthbuffer = [];\n\n\t\t\t\tfor ( var i = 0; i < 6; i ++ ) {\n\n\t\t\t\t\t_gl.bindFramebuffer( _gl.FRAMEBUFFER, renderTargetProperties.__webglFramebuffer[ i ] );\n\t\t\t\t\trenderTargetProperties.__webglDepthbuffer[ i ] = _gl.createRenderbuffer();\n\t\t\t\t\tsetupRenderBufferStorage( renderTargetProperties.__webglDepthbuffer[ i ], renderTarget );\n\n\t\t\t\t}\n\n\t\t\t} else {\n\n\t\t\t\t_gl.bindFramebuffer( _gl.FRAMEBUFFER, renderTargetProperties.__webglFramebuffer );\n\t\t\t\trenderTargetProperties.__webglDepthbuffer = _gl.createRenderbuffer();\n\t\t\t\tsetupRenderBufferStorage( renderTargetProperties.__webglDepthbuffer, renderTarget );\n\n\t\t\t}\n\n\t\t}\n\n\t\t_gl.bindFramebuffer( _gl.FRAMEBUFFER, null );\n\n\t}\n\n\t// Set up GL resources for the render target\n\tfunction setupRenderTarget( renderTarget ) {\n\n\t\tvar renderTargetProperties = properties.get( renderTarget );\n\t\tvar textureProperties = properties.get( renderTarget.texture );\n\n\t\trenderTarget.addEventListener( 'dispose', onRenderTargetDispose );\n\n\t\ttextureProperties.__webglTexture = _gl.createTexture();\n\n\t\t_infoMemory.textures ++;\n\n\t\tvar isCube = ( (renderTarget && renderTarget.isWebGLRenderTargetCube) );\n\t\tvar isTargetPowerOfTwo = isPowerOfTwo( renderTarget );\n\n\t\t// Setup framebuffer\n\n\t\tif ( isCube ) {\n\n\t\t\trenderTargetProperties.__webglFramebuffer = [];\n\n\t\t\tfor ( var i = 0; i < 6; i ++ ) {\n\n\t\t\t\trenderTargetProperties.__webglFramebuffer[ i ] = _gl.createFramebuffer();\n\n\t\t\t}\n\n\t\t} else {\n\n\t\t\trenderTargetProperties.__webglFramebuffer = _gl.createFramebuffer();\n\n\t\t}\n\n\t\t// Setup color buffer\n\n\t\tif ( isCube ) {\n\n\t\t\tstate.bindTexture( _gl.TEXTURE_CUBE_MAP, textureProperties.__webglTexture );\n\t\t\tsetTextureParameters( _gl.TEXTURE_CUBE_MAP, renderTarget.texture, isTargetPowerOfTwo );\n\n\t\t\tfor ( var i = 0; i < 6; i ++ ) {\n\n\t\t\t\tsetupFrameBufferTexture( renderTargetProperties.__webglFramebuffer[ i ], renderTarget, _gl.COLOR_ATTACHMENT0, _gl.TEXTURE_CUBE_MAP_POSITIVE_X + i );\n\n\t\t\t}\n\n\t\t\tif ( renderTarget.texture.generateMipmaps && isTargetPowerOfTwo ) _gl.generateMipmap( _gl.TEXTURE_CUBE_MAP );\n\t\t\tstate.bindTexture( _gl.TEXTURE_CUBE_MAP, null );\n\n\t\t} else {\n\n\t\t\tstate.bindTexture( _gl.TEXTURE_2D, textureProperties.__webglTexture );\n\t\t\tsetTextureParameters( _gl.TEXTURE_2D, renderTarget.texture, isTargetPowerOfTwo );\n\t\t\tsetupFrameBufferTexture( renderTargetProperties.__webglFramebuffer, renderTarget, _gl.COLOR_ATTACHMENT0, _gl.TEXTURE_2D );\n\n\t\t\tif ( renderTarget.texture.generateMipmaps && isTargetPowerOfTwo ) _gl.generateMipmap( _gl.TEXTURE_2D );\n\t\t\tstate.bindTexture( _gl.TEXTURE_2D, null );\n\n\t\t}\n\n\t\t// Setup depth and stencil buffers\n\n\t\tif ( renderTarget.depthBuffer ) {\n\n\t\t\tsetupDepthRenderbuffer( renderTarget );\n\n\t\t}\n\n\t}\n\n\tfunction updateRenderTargetMipmap( renderTarget ) {\n\n\t\tvar texture = renderTarget.texture;\n\n\t\tif ( texture.generateMipmaps && isPowerOfTwo( renderTarget ) &&\n\t\t\t\ttexture.minFilter !== NearestFilter &&\n\t\t\t\ttexture.minFilter !== LinearFilter ) {\n\n\t\t\tvar target = (renderTarget && renderTarget.isWebGLRenderTargetCube) ? _gl.TEXTURE_CUBE_MAP : _gl.TEXTURE_2D;\n\t\t\tvar webglTexture = properties.get( texture ).__webglTexture;\n\n\t\t\tstate.bindTexture( target, webglTexture );\n\t\t\t_gl.generateMipmap( target );\n\t\t\tstate.bindTexture( target, null );\n\n\t\t}\n\n\t}\n\n\tthis.setTexture2D = setTexture2D;\n\tthis.setTextureCube = setTextureCube;\n\tthis.setTextureCubeDynamic = setTextureCubeDynamic;\n\tthis.setupRenderTarget = setupRenderTarget;\n\tthis.updateRenderTargetMipmap = updateRenderTargetMipmap;\n\n}\n\n\nexport { WebGLTextures };\n","/**\n * @author fordacious / fordacious.github.io\n */\n\nfunction WebGLProperties() {\n\n\tvar properties = {};\n\n\treturn {\n\n\t\tget: function ( object ) {\n\n\t\t\tvar uuid = object.uuid;\n\t\t\tvar map = properties[ uuid ];\n\n\t\t\tif ( map === undefined ) {\n\n\t\t\t\tmap = {};\n\t\t\t\tproperties[ uuid ] = map;\n\n\t\t\t}\n\n\t\t\treturn map;\n\n\t\t},\n\n\t\tdelete: function ( object ) {\n\n\t\t\tdelete properties[ object.uuid ];\n\n\t\t},\n\n\t\tclear: function () {\n\n\t\t\tproperties = {};\n\n\t\t}\n\n\t};\n\n}\n\nexport { WebGLProperties };\n","/**\n * @author mrdoob / http://mrdoob.com/\n */\n\nimport { NotEqualDepth, GreaterDepth, GreaterEqualDepth, EqualDepth, LessEqualDepth, LessDepth, AlwaysDepth, NeverDepth, CullFaceFront, CullFaceBack, CullFaceNone, CustomBlending, MultiplyBlending, SubtractiveBlending, AdditiveBlending, NoBlending, NormalBlending } from '../../constants';\nimport { Vector4 } from '../../math/Vector4';\n\nfunction WebGLState( gl, extensions, paramThreeToGL ) {\n\n\tfunction ColorBuffer() {\n\n\t\tvar locked = false;\n\n\t\tvar color = new Vector4();\n\t\tvar currentColorMask = null;\n\t\tvar currentColorClear = new Vector4();\n\n\t\treturn {\n\n\t\t\tsetMask: function ( colorMask ) {\n\n\t\t\t\tif ( currentColorMask !== colorMask && ! locked ) {\n\n\t\t\t\t\tgl.colorMask( colorMask, colorMask, colorMask, colorMask );\n\t\t\t\t\tcurrentColorMask = colorMask;\n\n\t\t\t\t}\n\n\t\t\t},\n\n\t\t\tsetLocked: function ( lock ) {\n\n\t\t\t\tlocked = lock;\n\n\t\t\t},\n\n\t\t\tsetClear: function ( r, g, b, a, premultipliedAlpha ) {\n\n\t\t\t\tif ( premultipliedAlpha === true ) {\n\n\t\t\t\t\tr *= a; g *= a; b *= a;\n\n\t\t\t\t}\n\n\t\t\t\tcolor.set( r, g, b, a );\n\n\t\t\t\tif ( currentColorClear.equals( color ) === false ) {\n\n\t\t\t\t\tgl.clearColor( r, g, b, a );\n\t\t\t\t\tcurrentColorClear.copy( color );\n\n\t\t\t\t}\n\n\t\t\t},\n\n\t\t\treset: function () {\n\n\t\t\t\tlocked = false;\n\n\t\t\t\tcurrentColorMask = null;\n\t\t\t\tcurrentColorClear.set( 0, 0, 0, 1 );\n\n\t\t\t}\n\n\t\t};\n\n\t}\n\n\tfunction DepthBuffer() {\n\n\t\tvar locked = false;\n\n\t\tvar currentDepthMask = null;\n\t\tvar currentDepthFunc = null;\n\t\tvar currentDepthClear = null;\n\n\t\treturn {\n\n\t\t\tsetTest: function ( depthTest ) {\n\n\t\t\t\tif ( depthTest ) {\n\n\t\t\t\t\tenable( gl.DEPTH_TEST );\n\n\t\t\t\t} else {\n\n\t\t\t\t\tdisable( gl.DEPTH_TEST );\n\n\t\t\t\t}\n\n\t\t\t},\n\n\t\t\tsetMask: function ( depthMask ) {\n\n\t\t\t\tif ( currentDepthMask !== depthMask && ! locked ) {\n\n\t\t\t\t\tgl.depthMask( depthMask );\n\t\t\t\t\tcurrentDepthMask = depthMask;\n\n\t\t\t\t}\n\n\t\t\t},\n\n\t\t\tsetFunc: function ( depthFunc ) {\n\n\t\t\t\tif ( currentDepthFunc !== depthFunc ) {\n\n\t\t\t\t\tif ( depthFunc ) {\n\n\t\t\t\t\t\tswitch ( depthFunc ) {\n\n\t\t\t\t\t\t\tcase NeverDepth:\n\n\t\t\t\t\t\t\t\tgl.depthFunc( gl.NEVER );\n\t\t\t\t\t\t\t\tbreak;\n\n\t\t\t\t\t\t\tcase AlwaysDepth:\n\n\t\t\t\t\t\t\t\tgl.depthFunc( gl.ALWAYS );\n\t\t\t\t\t\t\t\tbreak;\n\n\t\t\t\t\t\t\tcase LessDepth:\n\n\t\t\t\t\t\t\t\tgl.depthFunc( gl.LESS );\n\t\t\t\t\t\t\t\tbreak;\n\n\t\t\t\t\t\t\tcase LessEqualDepth:\n\n\t\t\t\t\t\t\t\tgl.depthFunc( gl.LEQUAL );\n\t\t\t\t\t\t\t\tbreak;\n\n\t\t\t\t\t\t\tcase EqualDepth:\n\n\t\t\t\t\t\t\t\tgl.depthFunc( gl.EQUAL );\n\t\t\t\t\t\t\t\tbreak;\n\n\t\t\t\t\t\t\tcase GreaterEqualDepth:\n\n\t\t\t\t\t\t\t\tgl.depthFunc( gl.GEQUAL );\n\t\t\t\t\t\t\t\tbreak;\n\n\t\t\t\t\t\t\tcase GreaterDepth:\n\n\t\t\t\t\t\t\t\tgl.depthFunc( gl.GREATER );\n\t\t\t\t\t\t\t\tbreak;\n\n\t\t\t\t\t\t\tcase NotEqualDepth:\n\n\t\t\t\t\t\t\t\tgl.depthFunc( gl.NOTEQUAL );\n\t\t\t\t\t\t\t\tbreak;\n\n\t\t\t\t\t\t\tdefault:\n\n\t\t\t\t\t\t\t\tgl.depthFunc( gl.LEQUAL );\n\n\t\t\t\t\t\t}\n\n\t\t\t\t\t} else {\n\n\t\t\t\t\t\tgl.depthFunc( gl.LEQUAL );\n\n\t\t\t\t\t}\n\n\t\t\t\t\tcurrentDepthFunc = depthFunc;\n\n\t\t\t\t}\n\n\t\t\t},\n\n\t\t\tsetLocked: function ( lock ) {\n\n\t\t\t\tlocked = lock;\n\n\t\t\t},\n\n\t\t\tsetClear: function ( depth ) {\n\n\t\t\t\tif ( currentDepthClear !== depth ) {\n\n\t\t\t\t\tgl.clearDepth( depth );\n\t\t\t\t\tcurrentDepthClear = depth;\n\n\t\t\t\t}\n\n\t\t\t},\n\n\t\t\treset: function () {\n\n\t\t\t\tlocked = false;\n\n\t\t\t\tcurrentDepthMask = null;\n\t\t\t\tcurrentDepthFunc = null;\n\t\t\t\tcurrentDepthClear = null;\n\n\t\t\t}\n\n\t\t};\n\n\t}\n\n\tfunction StencilBuffer() {\n\n\t\tvar locked = false;\n\n\t\tvar currentStencilMask = null;\n\t\tvar currentStencilFunc = null;\n\t\tvar currentStencilRef = null;\n\t\tvar currentStencilFuncMask = null;\n\t\tvar currentStencilFail = null;\n\t\tvar currentStencilZFail = null;\n\t\tvar currentStencilZPass = null;\n\t\tvar currentStencilClear = null;\n\n\t\treturn {\n\n\t\t\tsetTest: function ( stencilTest ) {\n\n\t\t\t\tif ( stencilTest ) {\n\n\t\t\t\t\tenable( gl.STENCIL_TEST );\n\n\t\t\t\t} else {\n\n\t\t\t\t\tdisable( gl.STENCIL_TEST );\n\n\t\t\t\t}\n\n\t\t\t},\n\n\t\t\tsetMask: function ( stencilMask ) {\n\n\t\t\t\tif ( currentStencilMask !== stencilMask && ! locked ) {\n\n\t\t\t\t\tgl.stencilMask( stencilMask );\n\t\t\t\t\tcurrentStencilMask = stencilMask;\n\n\t\t\t\t}\n\n\t\t\t},\n\n\t\t\tsetFunc: function ( stencilFunc, stencilRef, stencilMask ) {\n\n\t\t\t\tif ( currentStencilFunc !== stencilFunc ||\n\t\t\t\t currentStencilRef \t!== stencilRef \t||\n\t\t\t\t currentStencilFuncMask !== stencilMask ) {\n\n\t\t\t\t\tgl.stencilFunc( stencilFunc, stencilRef, stencilMask );\n\n\t\t\t\t\tcurrentStencilFunc = stencilFunc;\n\t\t\t\t\tcurrentStencilRef = stencilRef;\n\t\t\t\t\tcurrentStencilFuncMask = stencilMask;\n\n\t\t\t\t}\n\n\t\t\t},\n\n\t\t\tsetOp: function ( stencilFail, stencilZFail, stencilZPass ) {\n\n\t\t\t\tif ( currentStencilFail\t !== stencilFail \t||\n\t\t\t\t currentStencilZFail !== stencilZFail ||\n\t\t\t\t currentStencilZPass !== stencilZPass ) {\n\n\t\t\t\t\tgl.stencilOp( stencilFail, stencilZFail, stencilZPass );\n\n\t\t\t\t\tcurrentStencilFail = stencilFail;\n\t\t\t\t\tcurrentStencilZFail = stencilZFail;\n\t\t\t\t\tcurrentStencilZPass = stencilZPass;\n\n\t\t\t\t}\n\n\t\t\t},\n\n\t\t\tsetLocked: function ( lock ) {\n\n\t\t\t\tlocked = lock;\n\n\t\t\t},\n\n\t\t\tsetClear: function ( stencil ) {\n\n\t\t\t\tif ( currentStencilClear !== stencil ) {\n\n\t\t\t\t\tgl.clearStencil( stencil );\n\t\t\t\t\tcurrentStencilClear = stencil;\n\n\t\t\t\t}\n\n\t\t\t},\n\n\t\t\treset: function () {\n\n\t\t\t\tlocked = false;\n\n\t\t\t\tcurrentStencilMask = null;\n\t\t\t\tcurrentStencilFunc = null;\n\t\t\t\tcurrentStencilRef = null;\n\t\t\t\tcurrentStencilFuncMask = null;\n\t\t\t\tcurrentStencilFail = null;\n\t\t\t\tcurrentStencilZFail = null;\n\t\t\t\tcurrentStencilZPass = null;\n\t\t\t\tcurrentStencilClear = null;\n\n\t\t\t}\n\n\t\t};\n\n\t}\n\n\t//\n\n\tvar colorBuffer = new ColorBuffer();\n\tvar depthBuffer = new DepthBuffer();\n\tvar stencilBuffer = new StencilBuffer();\n\n\tvar maxVertexAttributes = gl.getParameter( gl.MAX_VERTEX_ATTRIBS );\n\tvar newAttributes = new Uint8Array( maxVertexAttributes );\n\tvar enabledAttributes = new Uint8Array( maxVertexAttributes );\n\tvar attributeDivisors = new Uint8Array( maxVertexAttributes );\n\n\tvar capabilities = {};\n\n\tvar compressedTextureFormats = null;\n\n\tvar currentBlending = null;\n\tvar currentBlendEquation = null;\n\tvar currentBlendSrc = null;\n\tvar currentBlendDst = null;\n\tvar currentBlendEquationAlpha = null;\n\tvar currentBlendSrcAlpha = null;\n\tvar currentBlendDstAlpha = null;\n\tvar currentPremultipledAlpha = false;\n\n\tvar currentFlipSided = null;\n\tvar currentCullFace = null;\n\n\tvar currentLineWidth = null;\n\n\tvar currentPolygonOffsetFactor = null;\n\tvar currentPolygonOffsetUnits = null;\n\n\tvar currentScissorTest = null;\n\n\tvar maxTextures = gl.getParameter( gl.MAX_TEXTURE_IMAGE_UNITS );\n\n\tvar currentTextureSlot = null;\n\tvar currentBoundTextures = {};\n\n\tvar currentScissor = new Vector4();\n\tvar currentViewport = new Vector4();\n\n\tfunction createTexture( type, target, count ) {\n\n\t\tvar data = new Uint8Array( 4 ); // 4 is required to match default unpack alignment of 4.\n\t\tvar texture = gl.createTexture();\n\n\t\tgl.bindTexture( type, texture );\n\t\tgl.texParameteri( type, gl.TEXTURE_MIN_FILTER, gl.NEAREST );\n\t\tgl.texParameteri( type, gl.TEXTURE_MAG_FILTER, gl.NEAREST );\n\n\t\tfor ( var i = 0; i < count; i ++ ) {\n\n\t\t\tgl.texImage2D( target + i, 0, gl.RGBA, 1, 1, 0, gl.RGBA, gl.UNSIGNED_BYTE, data );\n\n\t\t}\n\n\t\treturn texture;\n\n\t}\n\n\tvar emptyTextures = {};\n\temptyTextures[ gl.TEXTURE_2D ] = createTexture( gl.TEXTURE_2D, gl.TEXTURE_2D, 1 );\n\temptyTextures[ gl.TEXTURE_CUBE_MAP ] = createTexture( gl.TEXTURE_CUBE_MAP, gl.TEXTURE_CUBE_MAP_POSITIVE_X, 6 );\n\n\t//\n\n\tfunction init() {\n\n\t\tcolorBuffer.setClear( 0, 0, 0, 1 );\n\t\tdepthBuffer.setClear( 1 );\n\t\tstencilBuffer.setClear( 0 );\n\n\t\tenable( gl.DEPTH_TEST );\n\t\tsetDepthFunc( LessEqualDepth );\n\n\t\tsetFlipSided( false );\n\t\tsetCullFace( CullFaceBack );\n\t\tenable( gl.CULL_FACE );\n\n\t\tenable( gl.BLEND );\n\t\tsetBlending( NormalBlending );\n\n\t}\n\n\tfunction initAttributes() {\n\n\t\tfor ( var i = 0, l = newAttributes.length; i < l; i ++ ) {\n\n\t\t\tnewAttributes[ i ] = 0;\n\n\t\t}\n\n\t}\n\n\tfunction enableAttribute( attribute ) {\n\n\t\tnewAttributes[ attribute ] = 1;\n\n\t\tif ( enabledAttributes[ attribute ] === 0 ) {\n\n\t\t\tgl.enableVertexAttribArray( attribute );\n\t\t\tenabledAttributes[ attribute ] = 1;\n\n\t\t}\n\n\t\tif ( attributeDivisors[ attribute ] !== 0 ) {\n\n\t\t\tvar extension = extensions.get( 'ANGLE_instanced_arrays' );\n\n\t\t\textension.vertexAttribDivisorANGLE( attribute, 0 );\n\t\t\tattributeDivisors[ attribute ] = 0;\n\n\t\t}\n\n\t}\n\n\tfunction enableAttributeAndDivisor( attribute, meshPerAttribute, extension ) {\n\n\t\tnewAttributes[ attribute ] = 1;\n\n\t\tif ( enabledAttributes[ attribute ] === 0 ) {\n\n\t\t\tgl.enableVertexAttribArray( attribute );\n\t\t\tenabledAttributes[ attribute ] = 1;\n\n\t\t}\n\n\t\tif ( attributeDivisors[ attribute ] !== meshPerAttribute ) {\n\n\t\t\textension.vertexAttribDivisorANGLE( attribute, meshPerAttribute );\n\t\t\tattributeDivisors[ attribute ] = meshPerAttribute;\n\n\t\t}\n\n\t}\n\n\tfunction disableUnusedAttributes() {\n\n\t\tfor ( var i = 0, l = enabledAttributes.length; i !== l; ++ i ) {\n\n\t\t\tif ( enabledAttributes[ i ] !== newAttributes[ i ] ) {\n\n\t\t\t\tgl.disableVertexAttribArray( i );\n\t\t\t\tenabledAttributes[ i ] = 0;\n\n\t\t\t}\n\n\t\t}\n\n\t}\n\n\tfunction enable( id ) {\n\n\t\tif ( capabilities[ id ] !== true ) {\n\n\t\t\tgl.enable( id );\n\t\t\tcapabilities[ id ] = true;\n\n\t\t}\n\n\t}\n\n\tfunction disable( id ) {\n\n\t\tif ( capabilities[ id ] !== false ) {\n\n\t\t\tgl.disable( id );\n\t\t\tcapabilities[ id ] = false;\n\n\t\t}\n\n\t}\n\n\tfunction getCompressedTextureFormats() {\n\n\t\tif ( compressedTextureFormats === null ) {\n\n\t\t\tcompressedTextureFormats = [];\n\n\t\t\tif ( extensions.get( 'WEBGL_compressed_texture_pvrtc' ) ||\n\t\t\t extensions.get( 'WEBGL_compressed_texture_s3tc' ) ||\n\t\t\t extensions.get( 'WEBGL_compressed_texture_etc1' ) ) {\n\n\t\t\t\tvar formats = gl.getParameter( gl.COMPRESSED_TEXTURE_FORMATS );\n\n\t\t\t\tfor ( var i = 0; i < formats.length; i ++ ) {\n\n\t\t\t\t\tcompressedTextureFormats.push( formats[ i ] );\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t}\n\n\t\treturn compressedTextureFormats;\n\n\t}\n\n\tfunction setBlending( blending, blendEquation, blendSrc, blendDst, blendEquationAlpha, blendSrcAlpha, blendDstAlpha, premultipliedAlpha ) {\n\n\t\tif ( blending !== NoBlending ) {\n\n\t\t\tenable( gl.BLEND );\n\n\t\t} else {\n\n\t\t\tdisable( gl.BLEND );\n\n\t\t}\n\n\t\tif ( blending !== currentBlending || premultipliedAlpha !== currentPremultipledAlpha ) {\n\n\t\t\tif ( blending === AdditiveBlending ) {\n\n\t\t\t\tif ( premultipliedAlpha ) {\n\n\t\t\t\t\tgl.blendEquationSeparate( gl.FUNC_ADD, gl.FUNC_ADD );\n\t\t\t\t\tgl.blendFuncSeparate( gl.ONE, gl.ONE, gl.ONE, gl.ONE );\n\n\t\t\t\t} else {\n\n\t\t\t\t\tgl.blendEquation( gl.FUNC_ADD );\n\t\t\t\t\tgl.blendFunc( gl.SRC_ALPHA, gl.ONE );\n\n\t\t\t\t}\n\n\t\t\t} else if ( blending === SubtractiveBlending ) {\n\n\t\t\t\tif ( premultipliedAlpha ) {\n\n\t\t\t\t\tgl.blendEquationSeparate( gl.FUNC_ADD, gl.FUNC_ADD );\n\t\t\t\t\tgl.blendFuncSeparate( gl.ZERO, gl.ZERO, gl.ONE_MINUS_SRC_COLOR, gl.ONE_MINUS_SRC_ALPHA );\n\n\t\t\t\t} else {\n\n\t\t\t\t\tgl.blendEquation( gl.FUNC_ADD );\n\t\t\t\t\tgl.blendFunc( gl.ZERO, gl.ONE_MINUS_SRC_COLOR );\n\n\t\t\t\t}\n\n\t\t\t} else if ( blending === MultiplyBlending ) {\n\n\t\t\t\tif ( premultipliedAlpha ) {\n\n\t\t\t\t\tgl.blendEquationSeparate( gl.FUNC_ADD, gl.FUNC_ADD );\n\t\t\t\t\tgl.blendFuncSeparate( gl.ZERO, gl.SRC_COLOR, gl.ZERO, gl.SRC_ALPHA );\n\n\t\t\t\t} else {\n\n\t\t\t\t\tgl.blendEquation( gl.FUNC_ADD );\n\t\t\t\t\tgl.blendFunc( gl.ZERO, gl.SRC_COLOR );\n\n\t\t\t\t}\n\n\t\t\t} else {\n\n\t\t\t\tif ( premultipliedAlpha ) {\n\n\t\t\t\t\tgl.blendEquationSeparate( gl.FUNC_ADD, gl.FUNC_ADD );\n\t\t\t\t\tgl.blendFuncSeparate( gl.ONE, gl.ONE_MINUS_SRC_ALPHA, gl.ONE, gl.ONE_MINUS_SRC_ALPHA );\n\n\t\t\t\t} else {\n\n\t\t\t\t\tgl.blendEquationSeparate( gl.FUNC_ADD, gl.FUNC_ADD );\n\t\t\t\t\tgl.blendFuncSeparate( gl.SRC_ALPHA, gl.ONE_MINUS_SRC_ALPHA, gl.ONE, gl.ONE_MINUS_SRC_ALPHA );\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t\tcurrentBlending = blending;\n\t\t\tcurrentPremultipledAlpha = premultipliedAlpha;\n\n\t\t}\n\n\t\tif ( blending === CustomBlending ) {\n\n\t\t\tblendEquationAlpha = blendEquationAlpha || blendEquation;\n\t\t\tblendSrcAlpha = blendSrcAlpha || blendSrc;\n\t\t\tblendDstAlpha = blendDstAlpha || blendDst;\n\n\t\t\tif ( blendEquation !== currentBlendEquation || blendEquationAlpha !== currentBlendEquationAlpha ) {\n\n\t\t\t\tgl.blendEquationSeparate( paramThreeToGL( blendEquation ), paramThreeToGL( blendEquationAlpha ) );\n\n\t\t\t\tcurrentBlendEquation = blendEquation;\n\t\t\t\tcurrentBlendEquationAlpha = blendEquationAlpha;\n\n\t\t\t}\n\n\t\t\tif ( blendSrc !== currentBlendSrc || blendDst !== currentBlendDst || blendSrcAlpha !== currentBlendSrcAlpha || blendDstAlpha !== currentBlendDstAlpha ) {\n\n\t\t\t\tgl.blendFuncSeparate( paramThreeToGL( blendSrc ), paramThreeToGL( blendDst ), paramThreeToGL( blendSrcAlpha ), paramThreeToGL( blendDstAlpha ) );\n\n\t\t\t\tcurrentBlendSrc = blendSrc;\n\t\t\t\tcurrentBlendDst = blendDst;\n\t\t\t\tcurrentBlendSrcAlpha = blendSrcAlpha;\n\t\t\t\tcurrentBlendDstAlpha = blendDstAlpha;\n\n\t\t\t}\n\n\t\t} else {\n\n\t\t\tcurrentBlendEquation = null;\n\t\t\tcurrentBlendSrc = null;\n\t\t\tcurrentBlendDst = null;\n\t\t\tcurrentBlendEquationAlpha = null;\n\t\t\tcurrentBlendSrcAlpha = null;\n\t\t\tcurrentBlendDstAlpha = null;\n\n\t\t}\n\n\t}\n\n\t// TODO Deprecate\n\n\tfunction setColorWrite( colorWrite ) {\n\n\t\tcolorBuffer.setMask( colorWrite );\n\n\t}\n\n\tfunction setDepthTest( depthTest ) {\n\n\t\tdepthBuffer.setTest( depthTest );\n\n\t}\n\n\tfunction setDepthWrite( depthWrite ) {\n\n\t\tdepthBuffer.setMask( depthWrite );\n\n\t}\n\n\tfunction setDepthFunc( depthFunc ) {\n\n\t\tdepthBuffer.setFunc( depthFunc );\n\n\t}\n\n\tfunction setStencilTest( stencilTest ) {\n\n\t\tstencilBuffer.setTest( stencilTest );\n\n\t}\n\n\tfunction setStencilWrite( stencilWrite ) {\n\n\t\tstencilBuffer.setMask( stencilWrite );\n\n\t}\n\n\tfunction setStencilFunc( stencilFunc, stencilRef, stencilMask ) {\n\n\t\tstencilBuffer.setFunc( stencilFunc, stencilRef, stencilMask );\n\n\t}\n\n\tfunction setStencilOp( stencilFail, stencilZFail, stencilZPass ) {\n\n\t\tstencilBuffer.setOp( stencilFail, stencilZFail, stencilZPass );\n\n\t}\n\n\t//\n\n\tfunction setFlipSided( flipSided ) {\n\n\t\tif ( currentFlipSided !== flipSided ) {\n\n\t\t\tif ( flipSided ) {\n\n\t\t\t\tgl.frontFace( gl.CW );\n\n\t\t\t} else {\n\n\t\t\t\tgl.frontFace( gl.CCW );\n\n\t\t\t}\n\n\t\t\tcurrentFlipSided = flipSided;\n\n\t\t}\n\n\t}\n\n\tfunction setCullFace( cullFace ) {\n\n\t\tif ( cullFace !== CullFaceNone ) {\n\n\t\t\tenable( gl.CULL_FACE );\n\n\t\t\tif ( cullFace !== currentCullFace ) {\n\n\t\t\t\tif ( cullFace === CullFaceBack ) {\n\n\t\t\t\t\tgl.cullFace( gl.BACK );\n\n\t\t\t\t} else if ( cullFace === CullFaceFront ) {\n\n\t\t\t\t\tgl.cullFace( gl.FRONT );\n\n\t\t\t\t} else {\n\n\t\t\t\t\tgl.cullFace( gl.FRONT_AND_BACK );\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t} else {\n\n\t\t\tdisable( gl.CULL_FACE );\n\n\t\t}\n\n\t\tcurrentCullFace = cullFace;\n\n\t}\n\n\tfunction setLineWidth( width ) {\n\n\t\tif ( width !== currentLineWidth ) {\n\n\t\t\tgl.lineWidth( width );\n\n\t\t\tcurrentLineWidth = width;\n\n\t\t}\n\n\t}\n\n\tfunction setPolygonOffset( polygonOffset, factor, units ) {\n\n\t\tif ( polygonOffset ) {\n\n\t\t\tenable( gl.POLYGON_OFFSET_FILL );\n\n\t\t\tif ( currentPolygonOffsetFactor !== factor || currentPolygonOffsetUnits !== units ) {\n\n\t\t\t\tgl.polygonOffset( factor, units );\n\n\t\t\t\tcurrentPolygonOffsetFactor = factor;\n\t\t\t\tcurrentPolygonOffsetUnits = units;\n\n\t\t\t}\n\n\t\t} else {\n\n\t\t\tdisable( gl.POLYGON_OFFSET_FILL );\n\n\t\t}\n\n\t}\n\n\tfunction getScissorTest() {\n\n\t\treturn currentScissorTest;\n\n\t}\n\n\tfunction setScissorTest( scissorTest ) {\n\n\t\tcurrentScissorTest = scissorTest;\n\n\t\tif ( scissorTest ) {\n\n\t\t\tenable( gl.SCISSOR_TEST );\n\n\t\t} else {\n\n\t\t\tdisable( gl.SCISSOR_TEST );\n\n\t\t}\n\n\t}\n\n\t// texture\n\n\tfunction activeTexture( webglSlot ) {\n\n\t\tif ( webglSlot === undefined ) webglSlot = gl.TEXTURE0 + maxTextures - 1;\n\n\t\tif ( currentTextureSlot !== webglSlot ) {\n\n\t\t\tgl.activeTexture( webglSlot );\n\t\t\tcurrentTextureSlot = webglSlot;\n\n\t\t}\n\n\t}\n\n\tfunction bindTexture( webglType, webglTexture ) {\n\n\t\tif ( currentTextureSlot === null ) {\n\n\t\t\tactiveTexture();\n\n\t\t}\n\n\t\tvar boundTexture = currentBoundTextures[ currentTextureSlot ];\n\n\t\tif ( boundTexture === undefined ) {\n\n\t\t\tboundTexture = { type: undefined, texture: undefined };\n\t\t\tcurrentBoundTextures[ currentTextureSlot ] = boundTexture;\n\n\t\t}\n\n\t\tif ( boundTexture.type !== webglType || boundTexture.texture !== webglTexture ) {\n\n\t\t\tgl.bindTexture( webglType, webglTexture || emptyTextures[ webglType ] );\n\n\t\t\tboundTexture.type = webglType;\n\t\t\tboundTexture.texture = webglTexture;\n\n\t\t}\n\n\t}\n\n\tfunction compressedTexImage2D() {\n\n\t\ttry {\n\n\t\t\tgl.compressedTexImage2D.apply( gl, arguments );\n\n\t\t} catch ( error ) {\n\n\t\t\tconsole.error( error );\n\n\t\t}\n\n\t}\n\n\tfunction texImage2D() {\n\n\t\ttry {\n\n\t\t\tgl.texImage2D.apply( gl, arguments );\n\n\t\t} catch ( error ) {\n\n\t\t\tconsole.error( error );\n\n\t\t}\n\n\t}\n\n\t//\n\n\tfunction scissor( scissor ) {\n\n\t\tif ( currentScissor.equals( scissor ) === false ) {\n\n\t\t\tgl.scissor( scissor.x, scissor.y, scissor.z, scissor.w );\n\t\t\tcurrentScissor.copy( scissor );\n\n\t\t}\n\n\t}\n\n\tfunction viewport( viewport ) {\n\n\t\tif ( currentViewport.equals( viewport ) === false ) {\n\n\t\t\tgl.viewport( viewport.x, viewport.y, viewport.z, viewport.w );\n\t\t\tcurrentViewport.copy( viewport );\n\n\t\t}\n\n\t}\n\n\t//\n\n\tfunction reset() {\n\n\t\tfor ( var i = 0; i < enabledAttributes.length; i ++ ) {\n\n\t\t\tif ( enabledAttributes[ i ] === 1 ) {\n\n\t\t\t\tgl.disableVertexAttribArray( i );\n\t\t\t\tenabledAttributes[ i ] = 0;\n\n\t\t\t}\n\n\t\t}\n\n\t\tcapabilities = {};\n\n\t\tcompressedTextureFormats = null;\n\n\t\tcurrentTextureSlot = null;\n\t\tcurrentBoundTextures = {};\n\n\t\tcurrentBlending = null;\n\n\t\tcurrentFlipSided = null;\n\t\tcurrentCullFace = null;\n\n\t\tcolorBuffer.reset();\n\t\tdepthBuffer.reset();\n\t\tstencilBuffer.reset();\n\n\t}\n\n\treturn {\n\n\t\tbuffers: {\n\t\t\tcolor: colorBuffer,\n\t\t\tdepth: depthBuffer,\n\t\t\tstencil: stencilBuffer\n\t\t},\n\n\t\tinit: init,\n\t\tinitAttributes: initAttributes,\n\t\tenableAttribute: enableAttribute,\n\t\tenableAttributeAndDivisor: enableAttributeAndDivisor,\n\t\tdisableUnusedAttributes: disableUnusedAttributes,\n\t\tenable: enable,\n\t\tdisable: disable,\n\t\tgetCompressedTextureFormats: getCompressedTextureFormats,\n\n\t\tsetBlending: setBlending,\n\n\t\tsetColorWrite: setColorWrite,\n\t\tsetDepthTest: setDepthTest,\n\t\tsetDepthWrite: setDepthWrite,\n\t\tsetDepthFunc: setDepthFunc,\n\t\tsetStencilTest: setStencilTest,\n\t\tsetStencilWrite: setStencilWrite,\n\t\tsetStencilFunc: setStencilFunc,\n\t\tsetStencilOp: setStencilOp,\n\n\t\tsetFlipSided: setFlipSided,\n\t\tsetCullFace: setCullFace,\n\n\t\tsetLineWidth: setLineWidth,\n\t\tsetPolygonOffset: setPolygonOffset,\n\n\t\tgetScissorTest: getScissorTest,\n\t\tsetScissorTest: setScissorTest,\n\n\t\tactiveTexture: activeTexture,\n\t\tbindTexture: bindTexture,\n\t\tcompressedTexImage2D: compressedTexImage2D,\n\t\ttexImage2D: texImage2D,\n\n\t\tscissor: scissor,\n\t\tviewport: viewport,\n\n\t\treset: reset\n\n\t};\n\n}\n\n\nexport { WebGLState };\n","/**\n * @author mrdoob / http://mrdoob.com/\n */\n\nfunction WebGLCapabilities( gl, extensions, parameters ) {\n\n\tvar maxAnisotropy;\n\n\tfunction getMaxAnisotropy() {\n\n\t\tif ( maxAnisotropy !== undefined ) return maxAnisotropy;\n\n\t\tvar extension = extensions.get( 'EXT_texture_filter_anisotropic' );\n\n\t\tif ( extension !== null ) {\n\n\t\t\tmaxAnisotropy = gl.getParameter( extension.MAX_TEXTURE_MAX_ANISOTROPY_EXT );\n\n\t\t} else {\n\n\t\t\tmaxAnisotropy = 0;\n\n\t\t}\n\n\t\treturn maxAnisotropy;\n\n\t}\n\n\tfunction getMaxPrecision( precision ) {\n\n\t\tif ( precision === 'highp' ) {\n\n\t\t\tif ( gl.getShaderPrecisionFormat( gl.VERTEX_SHADER, gl.HIGH_FLOAT ).precision > 0 &&\n\t\t\t gl.getShaderPrecisionFormat( gl.FRAGMENT_SHADER, gl.HIGH_FLOAT ).precision > 0 ) {\n\n\t\t\t\treturn 'highp';\n\n\t\t\t}\n\n\t\t\tprecision = 'mediump';\n\n\t\t}\n\n\t\tif ( precision === 'mediump' ) {\n\n\t\t\tif ( gl.getShaderPrecisionFormat( gl.VERTEX_SHADER, gl.MEDIUM_FLOAT ).precision > 0 &&\n\t\t\t gl.getShaderPrecisionFormat( gl.FRAGMENT_SHADER, gl.MEDIUM_FLOAT ).precision > 0 ) {\n\n\t\t\t\treturn 'mediump';\n\n\t\t\t}\n\n\t\t}\n\n\t\treturn 'lowp';\n\n\t}\n\n\tvar precision = parameters.precision !== undefined ? parameters.precision : 'highp';\n\tvar maxPrecision = getMaxPrecision( precision );\n\n\tif ( maxPrecision !== precision ) {\n\n\t\tconsole.warn( 'THREE.WebGLRenderer:', precision, 'not supported, using', maxPrecision, 'instead.' );\n\t\tprecision = maxPrecision;\n\n\t}\n\n\tvar logarithmicDepthBuffer = parameters.logarithmicDepthBuffer === true && !! extensions.get( 'EXT_frag_depth' );\n\n\tvar maxTextures = gl.getParameter( gl.MAX_TEXTURE_IMAGE_UNITS );\n\tvar maxVertexTextures = gl.getParameter( gl.MAX_VERTEX_TEXTURE_IMAGE_UNITS );\n\tvar maxTextureSize = gl.getParameter( gl.MAX_TEXTURE_SIZE );\n\tvar maxCubemapSize = gl.getParameter( gl.MAX_CUBE_MAP_TEXTURE_SIZE );\n\n\tvar maxAttributes = gl.getParameter( gl.MAX_VERTEX_ATTRIBS );\n\tvar maxVertexUniforms = gl.getParameter( gl.MAX_VERTEX_UNIFORM_VECTORS );\n\tvar maxVaryings = gl.getParameter( gl.MAX_VARYING_VECTORS );\n\tvar maxFragmentUniforms = gl.getParameter( gl.MAX_FRAGMENT_UNIFORM_VECTORS );\n\n\tvar vertexTextures = maxVertexTextures > 0;\n\tvar floatFragmentTextures = !! extensions.get( 'OES_texture_float' );\n\tvar floatVertexTextures = vertexTextures && floatFragmentTextures;\n\n\treturn {\n\n\t\tgetMaxAnisotropy: getMaxAnisotropy,\n\t\tgetMaxPrecision: getMaxPrecision,\n\n\t\tprecision: precision,\n\t\tlogarithmicDepthBuffer: logarithmicDepthBuffer,\n\n\t\tmaxTextures: maxTextures,\n\t\tmaxVertexTextures: maxVertexTextures,\n\t\tmaxTextureSize: maxTextureSize,\n\t\tmaxCubemapSize: maxCubemapSize,\n\n\t\tmaxAttributes: maxAttributes,\n\t\tmaxVertexUniforms: maxVertexUniforms,\n\t\tmaxVaryings: maxVaryings,\n\t\tmaxFragmentUniforms: maxFragmentUniforms,\n\n\t\tvertexTextures: vertexTextures,\n\t\tfloatFragmentTextures: floatFragmentTextures,\n\t\tfloatVertexTextures: floatVertexTextures\n\n\t};\n\n}\n\n\nexport { WebGLCapabilities };\n","/**\n * @author mrdoob / http://mrdoob.com/\n */\n\nfunction WebGLExtensions( gl ) {\n\n\tvar extensions = {};\n\n\treturn {\n\n\t\tget: function ( name ) {\n\n\t\t\tif ( extensions[ name ] !== undefined ) {\n\n\t\t\t\treturn extensions[ name ];\n\n\t\t\t}\n\n\t\t\tvar extension;\n\n\t\t\tswitch ( name ) {\n\n\t\t\t\tcase 'WEBGL_depth_texture':\n\t\t\t\t\textension = gl.getExtension( 'WEBGL_depth_texture' ) || gl.getExtension( 'MOZ_WEBGL_depth_texture' ) || gl.getExtension( 'WEBKIT_WEBGL_depth_texture' );\n\t\t\t\t\tbreak;\n\n\t\t\t\tcase 'EXT_texture_filter_anisotropic':\n\t\t\t\t\textension = gl.getExtension( 'EXT_texture_filter_anisotropic' ) || gl.getExtension( 'MOZ_EXT_texture_filter_anisotropic' ) || gl.getExtension( 'WEBKIT_EXT_texture_filter_anisotropic' );\n\t\t\t\t\tbreak;\n\n\t\t\t\tcase 'WEBGL_compressed_texture_s3tc':\n\t\t\t\t\textension = gl.getExtension( 'WEBGL_compressed_texture_s3tc' ) || gl.getExtension( 'MOZ_WEBGL_compressed_texture_s3tc' ) || gl.getExtension( 'WEBKIT_WEBGL_compressed_texture_s3tc' );\n\t\t\t\t\tbreak;\n\n\t\t\t\tcase 'WEBGL_compressed_texture_pvrtc':\n\t\t\t\t\textension = gl.getExtension( 'WEBGL_compressed_texture_pvrtc' ) || gl.getExtension( 'WEBKIT_WEBGL_compressed_texture_pvrtc' );\n\t\t\t\t\tbreak;\n\n\t\t\t\tcase 'WEBGL_compressed_texture_etc1':\n\t\t\t\t\textension = gl.getExtension( 'WEBGL_compressed_texture_etc1' );\n\t\t\t\t\tbreak;\n\n\t\t\t\tdefault:\n\t\t\t\t\textension = gl.getExtension( name );\n\n\t\t\t}\n\n\t\t\tif ( extension === null ) {\n\n\t\t\t\tconsole.warn( 'THREE.WebGLRenderer: ' + name + ' extension not supported.' );\n\n\t\t\t}\n\n\t\t\textensions[ name ] = extension;\n\n\t\t\treturn extension;\n\n\t\t}\n\n\t};\n\n}\n\n\nexport { WebGLExtensions };\n","/**\n * @author tschw\n */\n\nimport { Matrix3 } from '../../math/Matrix3';\nimport { Plane } from '../../math/Plane';\n\nfunction WebGLClipping() {\n\n\tvar scope = this,\n\n\t\tglobalState = null,\n\t\tnumGlobalPlanes = 0,\n\t\tlocalClippingEnabled = false,\n\t\trenderingShadows = false,\n\n\t\tplane = new Plane(),\n\t\tviewNormalMatrix = new Matrix3(),\n\n\t\tuniform = { value: null, needsUpdate: false };\n\n\tthis.uniform = uniform;\n\tthis.numPlanes = 0;\n\tthis.numIntersection = 0;\n\n\tthis.init = function( planes, enableLocalClipping, camera ) {\n\n\t\tvar enabled =\n\t\t\tplanes.length !== 0 ||\n\t\t\tenableLocalClipping ||\n\t\t\t// enable state of previous frame - the clipping code has to\n\t\t\t// run another frame in order to reset the state:\n\t\t\tnumGlobalPlanes !== 0 ||\n\t\t\tlocalClippingEnabled;\n\n\t\tlocalClippingEnabled = enableLocalClipping;\n\n\t\tglobalState = projectPlanes( planes, camera, 0 );\n\t\tnumGlobalPlanes = planes.length;\n\n\t\treturn enabled;\n\n\t};\n\n\tthis.beginShadows = function() {\n\n\t\trenderingShadows = true;\n\t\tprojectPlanes( null );\n\n\t};\n\n\tthis.endShadows = function() {\n\n\t\trenderingShadows = false;\n\t\tresetGlobalState();\n\n\t};\n\n\tthis.setState = function( planes, clipIntersection, clipShadows, camera, cache, fromCache ) {\n\n\t\tif ( ! localClippingEnabled ||\n\t\t\t\tplanes === null || planes.length === 0 ||\n\t\t\t\trenderingShadows && ! clipShadows ) {\n\t\t\t// there's no local clipping\n\n\t\t\tif ( renderingShadows ) {\n\t\t\t\t// there's no global clipping\n\n\t\t\t\tprojectPlanes( null );\n\n\t\t\t} else {\n\n\t\t\t\tresetGlobalState();\n\t\t\t}\n\n\t\t} else {\n\n\t\t\tvar nGlobal = renderingShadows ? 0 : numGlobalPlanes,\n\t\t\t\tlGlobal = nGlobal * 4,\n\n\t\t\t\tdstArray = cache.clippingState || null;\n\n\t\t\tuniform.value = dstArray; // ensure unique state\n\n\t\t\tdstArray = projectPlanes( planes, camera, lGlobal, fromCache );\n\n\t\t\tfor ( var i = 0; i !== lGlobal; ++ i ) {\n\n\t\t\t\tdstArray[ i ] = globalState[ i ];\n\n\t\t\t}\n\n\t\t\tcache.clippingState = dstArray;\n\t\t\tthis.numIntersection = clipIntersection ? this.numPlanes : 0;\n\t\t\tthis.numPlanes += nGlobal;\n\n\t\t}\n\n\n\t};\n\n\tfunction resetGlobalState() {\n\n\t\tif ( uniform.value !== globalState ) {\n\n\t\t\tuniform.value = globalState;\n\t\t\tuniform.needsUpdate = numGlobalPlanes > 0;\n\n\t\t}\n\n\t\tscope.numPlanes = numGlobalPlanes;\n\t\tscope.numIntersection = 0;\n\n\t}\n\n\tfunction projectPlanes( planes, camera, dstOffset, skipTransform ) {\n\n\t\tvar nPlanes = planes !== null ? planes.length : 0,\n\t\t\tdstArray = null;\n\n\t\tif ( nPlanes !== 0 ) {\n\n\t\t\tdstArray = uniform.value;\n\n\t\t\tif ( skipTransform !== true || dstArray === null ) {\n\n\t\t\t\tvar flatSize = dstOffset + nPlanes * 4,\n\t\t\t\t\tviewMatrix = camera.matrixWorldInverse;\n\n\t\t\t\tviewNormalMatrix.getNormalMatrix( viewMatrix );\n\n\t\t\t\tif ( dstArray === null || dstArray.length < flatSize ) {\n\n\t\t\t\t\tdstArray = new Float32Array( flatSize );\n\n\t\t\t\t}\n\n\t\t\t\tfor ( var i = 0, i4 = dstOffset;\n\t\t\t\t\t\t\t\t\ti !== nPlanes; ++ i, i4 += 4 ) {\n\n\t\t\t\t\tplane.copy( planes[ i ] ).\n\t\t\t\t\t\t\tapplyMatrix4( viewMatrix, viewNormalMatrix );\n\n\t\t\t\t\tplane.normal.toArray( dstArray, i4 );\n\t\t\t\t\tdstArray[ i4 + 3 ] = plane.constant;\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t\tuniform.value = dstArray;\n\t\t\tuniform.needsUpdate = true;\n\n\t\t}\n\n\t\tscope.numPlanes = nPlanes;\n\t\t\n\t\treturn dstArray;\n\n\t}\n\n}\n\nexport { WebGLClipping };\n","import { REVISION, MaxEquation, MinEquation, RGB_ETC1_Format, RGBA_PVRTC_2BPPV1_Format, RGBA_PVRTC_4BPPV1_Format, RGB_PVRTC_2BPPV1_Format, RGB_PVRTC_4BPPV1_Format, RGBA_S3TC_DXT5_Format, RGBA_S3TC_DXT3_Format, RGBA_S3TC_DXT1_Format, RGB_S3TC_DXT1_Format, SrcAlphaSaturateFactor, OneMinusDstColorFactor, DstColorFactor, OneMinusDstAlphaFactor, DstAlphaFactor, OneMinusSrcAlphaFactor, SrcAlphaFactor, OneMinusSrcColorFactor, SrcColorFactor, OneFactor, ZeroFactor, ReverseSubtractEquation, SubtractEquation, AddEquation, DepthFormat, DepthStencilFormat, LuminanceAlphaFormat, LuminanceFormat, RGBAFormat, RGBFormat, AlphaFormat, HalfFloatType, FloatType, UnsignedIntType, IntType, UnsignedShortType, ShortType, ByteType, UnsignedInt248Type, UnsignedShort565Type, UnsignedShort5551Type, UnsignedShort4444Type, UnsignedByteType, LinearMipMapLinearFilter, LinearMipMapNearestFilter, LinearFilter, NearestMipMapLinearFilter, NearestMipMapNearestFilter, NearestFilter, MirroredRepeatWrapping, ClampToEdgeWrapping, RepeatWrapping, FrontFaceDirectionCW, NoBlending, BackSide, DoubleSide, TriangleFanDrawMode, TriangleStripDrawMode, TrianglesDrawMode, NoColors, FlatShading, LinearToneMapping } from '../constants';\nimport { Matrix4 } from '../math/Matrix4';\nimport { WebGLUniforms } from './webgl/WebGLUniforms';\nimport { UniformsUtils } from './shaders/UniformsUtils';\nimport { ShaderLib } from './shaders/ShaderLib';\nimport { LensFlarePlugin } from './webgl/plugins/LensFlarePlugin';\nimport { SpritePlugin } from './webgl/plugins/SpritePlugin';\nimport { WebGLShadowMap } from './webgl/WebGLShadowMap';\nimport { ShaderMaterial } from '../materials/ShaderMaterial';\nimport { Mesh } from '../objects/Mesh';\nimport { BoxBufferGeometry } from '../geometries/BoxBufferGeometry';\nimport { PlaneBufferGeometry } from '../geometries/PlaneBufferGeometry';\nimport { MeshBasicMaterial } from '../materials/MeshBasicMaterial';\nimport { PerspectiveCamera } from '../cameras/PerspectiveCamera';\nimport { OrthographicCamera } from '../cameras/OrthographicCamera';\nimport { WebGLIndexedBufferRenderer } from './webgl/WebGLIndexedBufferRenderer';\nimport { WebGLBufferRenderer } from './webgl/WebGLBufferRenderer';\nimport { WebGLLights } from './webgl/WebGLLights';\nimport { WebGLPrograms } from './webgl/WebGLPrograms';\nimport { WebGLObjects } from './webgl/WebGLObjects';\nimport { WebGLTextures } from './webgl/WebGLTextures';\nimport { WebGLProperties } from './webgl/WebGLProperties';\nimport { WebGLState } from './webgl/WebGLState';\nimport { WebGLCapabilities } from './webgl/WebGLCapabilities';\nimport { BufferGeometry } from '../core/BufferGeometry';\nimport { WebGLExtensions } from './webgl/WebGLExtensions';\nimport { Vector3 } from '../math/Vector3';\nimport { Sphere } from '../math/Sphere';\nimport { WebGLClipping } from './webgl/WebGLClipping';\nimport { Frustum } from '../math/Frustum';\nimport { Vector4 } from '../math/Vector4';\nimport { Color } from '../math/Color';\n\n/**\n * @author supereggbert / http://www.paulbrunt.co.uk/\n * @author mrdoob / http://mrdoob.com/\n * @author alteredq / http://alteredqualia.com/\n * @author szimek / https://github.com/szimek/\n * @author tschw\n */\n\nfunction WebGLRenderer( parameters ) {\n\n\tconsole.log( 'THREE.WebGLRenderer', REVISION );\n\n\tparameters = parameters || {};\n\n\tvar _canvas = parameters.canvas !== undefined ? parameters.canvas : document.createElementNS( 'http://www.w3.org/1999/xhtml', 'canvas' ),\n\t_context = parameters.context !== undefined ? parameters.context : null,\n\n\t_alpha = parameters.alpha !== undefined ? parameters.alpha : false,\n\t_depth = parameters.depth !== undefined ? parameters.depth : true,\n\t_stencil = parameters.stencil !== undefined ? parameters.stencil : true,\n\t_antialias = parameters.antialias !== undefined ? parameters.antialias : false,\n\t_premultipliedAlpha = parameters.premultipliedAlpha !== undefined ? parameters.premultipliedAlpha : true,\n\t_preserveDrawingBuffer = parameters.preserveDrawingBuffer !== undefined ? parameters.preserveDrawingBuffer : false;\n\n\tvar lights = [];\n\n\tvar opaqueObjects = [];\n\tvar opaqueObjectsLastIndex = - 1;\n\tvar transparentObjects = [];\n\tvar transparentObjectsLastIndex = - 1;\n\n\tvar morphInfluences = new Float32Array( 8 );\n\n\tvar sprites = [];\n\tvar lensFlares = [];\n\n\t// public properties\n\n\tthis.domElement = _canvas;\n\tthis.context = null;\n\n\t// clearing\n\n\tthis.autoClear = true;\n\tthis.autoClearColor = true;\n\tthis.autoClearDepth = true;\n\tthis.autoClearStencil = true;\n\n\t// scene graph\n\n\tthis.sortObjects = true;\n\n\t// user-defined clipping\n\n\tthis.clippingPlanes = [];\n\tthis.localClippingEnabled = false;\n\n\t// physically based shading\n\n\tthis.gammaFactor = 2.0;\t// for backwards compatibility\n\tthis.gammaInput = false;\n\tthis.gammaOutput = false;\n\n\t// physical lights\n\n\tthis.physicallyCorrectLights = false;\n\n\t// tone mapping\n\n\tthis.toneMapping = LinearToneMapping;\n\tthis.toneMappingExposure = 1.0;\n\tthis.toneMappingWhitePoint = 1.0;\n\n\t// morphs\n\n\tthis.maxMorphTargets = 8;\n\tthis.maxMorphNormals = 4;\n\n\t// internal properties\n\n\tvar _this = this,\n\n\t// internal state cache\n\n\t_currentProgram = null,\n\t_currentRenderTarget = null,\n\t_currentFramebuffer = null,\n\t_currentMaterialId = - 1,\n\t_currentGeometryProgram = '',\n\t_currentCamera = null,\n\n\t_currentScissor = new Vector4(),\n\t_currentScissorTest = null,\n\n\t_currentViewport = new Vector4(),\n\n\t//\n\n\t_usedTextureUnits = 0,\n\n\t//\n\n\t_clearColor = new Color( 0x000000 ),\n\t_clearAlpha = 0,\n\n\t_width = _canvas.width,\n\t_height = _canvas.height,\n\n\t_pixelRatio = 1,\n\n\t_scissor = new Vector4( 0, 0, _width, _height ),\n\t_scissorTest = false,\n\n\t_viewport = new Vector4( 0, 0, _width, _height ),\n\n\t// frustum\n\n\t_frustum = new Frustum(),\n\n\t// clipping\n\n\t_clipping = new WebGLClipping(),\n\t_clippingEnabled = false,\n\t_localClippingEnabled = false,\n\n\t_sphere = new Sphere(),\n\n\t// camera matrices cache\n\n\t_projScreenMatrix = new Matrix4(),\n\n\t_vector3 = new Vector3(),\n\n\t// light arrays cache\n\n\t_lights = {\n\n\t\thash: '',\n\n\t\tambient: [ 0, 0, 0 ],\n\t\tdirectional: [],\n\t\tdirectionalShadowMap: [],\n\t\tdirectionalShadowMatrix: [],\n\t\tspot: [],\n\t\tspotShadowMap: [],\n\t\tspotShadowMatrix: [],\n\t\tpoint: [],\n\t\tpointShadowMap: [],\n\t\tpointShadowMatrix: [],\n\t\themi: [],\n\n\t\tshadows: []\n\n\t},\n\n\t// info\n\n\t_infoRender = {\n\n\t\tcalls: 0,\n\t\tvertices: 0,\n\t\tfaces: 0,\n\t\tpoints: 0\n\n\t};\n\n\tthis.info = {\n\n\t\trender: _infoRender,\n\t\tmemory: {\n\n\t\t\tgeometries: 0,\n\t\t\ttextures: 0\n\n\t\t},\n\t\tprograms: null\n\n\t};\n\n\n\t// initialize\n\n\tvar _gl;\n\n\ttry {\n\n\t\tvar attributes = {\n\t\t\talpha: _alpha,\n\t\t\tdepth: _depth,\n\t\t\tstencil: _stencil,\n\t\t\tantialias: _antialias,\n\t\t\tpremultipliedAlpha: _premultipliedAlpha,\n\t\t\tpreserveDrawingBuffer: _preserveDrawingBuffer\n\t\t};\n\n\t\t_gl = _context || _canvas.getContext( 'webgl', attributes ) || _canvas.getContext( 'experimental-webgl', attributes );\n\n\t\tif ( _gl === null ) {\n\n\t\t\tif ( _canvas.getContext( 'webgl' ) !== null ) {\n\n\t\t\t\tthrow 'Error creating WebGL context with your selected attributes.';\n\n\t\t\t} else {\n\n\t\t\t\tthrow 'Error creating WebGL context.';\n\n\t\t\t}\n\n\t\t}\n\n\t\t// Some experimental-webgl implementations do not have getShaderPrecisionFormat\n\n\t\tif ( _gl.getShaderPrecisionFormat === undefined ) {\n\n\t\t\t_gl.getShaderPrecisionFormat = function () {\n\n\t\t\t\treturn { 'rangeMin': 1, 'rangeMax': 1, 'precision': 1 };\n\n\t\t\t};\n\n\t\t}\n\n\t\t_canvas.addEventListener( 'webglcontextlost', onContextLost, false );\n\n\t} catch ( error ) {\n\n\t\tconsole.error( 'THREE.WebGLRenderer: ' + error );\n\n\t}\n\n\tvar extensions = new WebGLExtensions( _gl );\n\n\textensions.get( 'WEBGL_depth_texture' );\n\textensions.get( 'OES_texture_float' );\n\textensions.get( 'OES_texture_float_linear' );\n\textensions.get( 'OES_texture_half_float' );\n\textensions.get( 'OES_texture_half_float_linear' );\n\textensions.get( 'OES_standard_derivatives' );\n\textensions.get( 'ANGLE_instanced_arrays' );\n\n\tif ( extensions.get( 'OES_element_index_uint' ) ) {\n\n\t\tBufferGeometry.MaxIndex = 4294967296;\n\n\t}\n\n\tvar capabilities = new WebGLCapabilities( _gl, extensions, parameters );\n\n\tvar state = new WebGLState( _gl, extensions, paramThreeToGL );\n\tvar properties = new WebGLProperties();\n\tvar textures = new WebGLTextures( _gl, extensions, state, properties, capabilities, paramThreeToGL, this.info );\n\tvar objects = new WebGLObjects( _gl, properties, this.info );\n\tvar programCache = new WebGLPrograms( this, capabilities );\n\tvar lightCache = new WebGLLights();\n\n\tthis.info.programs = programCache.programs;\n\n\tvar bufferRenderer = new WebGLBufferRenderer( _gl, extensions, _infoRender );\n\tvar indexedBufferRenderer = new WebGLIndexedBufferRenderer( _gl, extensions, _infoRender );\n\n\t//\n\n\tvar backgroundCamera = new OrthographicCamera( - 1, 1, 1, - 1, 0, 1 );\n\tvar backgroundCamera2 = new PerspectiveCamera();\n\tvar backgroundPlaneMesh = new Mesh(\n\t\tnew PlaneBufferGeometry( 2, 2 ),\n\t\tnew MeshBasicMaterial( { depthTest: false, depthWrite: false, fog: false } )\n\t);\n\tvar backgroundBoxShader = ShaderLib[ 'cube' ];\n\tvar backgroundBoxMesh = new Mesh(\n\t\tnew BoxBufferGeometry( 5, 5, 5 ),\n\t\tnew ShaderMaterial( {\n\t\t\tuniforms: backgroundBoxShader.uniforms,\n\t\t\tvertexShader: backgroundBoxShader.vertexShader,\n\t\t\tfragmentShader: backgroundBoxShader.fragmentShader,\n\t\t\tside: BackSide,\n\t\t\tdepthTest: false,\n\t\t\tdepthWrite: false,\n\t\t\tfog: false\n\t\t} )\n\t);\n\n\t//\n\n\tfunction getTargetPixelRatio() {\n\n\t\treturn _currentRenderTarget === null ? _pixelRatio : 1;\n\n\t}\n\n\tfunction setDefaultGLState() {\n\n\t\tstate.init();\n\n\t\tstate.scissor( _currentScissor.copy( _scissor ).multiplyScalar( _pixelRatio ) );\n\t\tstate.viewport( _currentViewport.copy( _viewport ).multiplyScalar( _pixelRatio ) );\n\n\t\tstate.buffers.color.setClear( _clearColor.r, _clearColor.g, _clearColor.b, _clearAlpha, _premultipliedAlpha );\n\n\t}\n\n\tfunction resetGLState() {\n\n\t\t_currentProgram = null;\n\t\t_currentCamera = null;\n\n\t\t_currentGeometryProgram = '';\n\t\t_currentMaterialId = - 1;\n\n\t\tstate.reset();\n\n\t}\n\n\tsetDefaultGLState();\n\n\tthis.context = _gl;\n\tthis.capabilities = capabilities;\n\tthis.extensions = extensions;\n\tthis.properties = properties;\n\tthis.state = state;\n\n\t// shadow map\n\n\tvar shadowMap = new WebGLShadowMap( this, _lights, objects, capabilities );\n\n\tthis.shadowMap = shadowMap;\n\n\n\t// Plugins\n\n\tvar spritePlugin = new SpritePlugin( this, sprites );\n\tvar lensFlarePlugin = new LensFlarePlugin( this, lensFlares );\n\n\t// API\n\n\tthis.getContext = function () {\n\n\t\treturn _gl;\n\n\t};\n\n\tthis.getContextAttributes = function () {\n\n\t\treturn _gl.getContextAttributes();\n\n\t};\n\n\tthis.forceContextLoss = function () {\n\n\t\textensions.get( 'WEBGL_lose_context' ).loseContext();\n\n\t};\n\n\tthis.getMaxAnisotropy = function () {\n\n\t\treturn capabilities.getMaxAnisotropy();\n\n\t};\n\n\tthis.getPrecision = function () {\n\n\t\treturn capabilities.precision;\n\n\t};\n\n\tthis.getPixelRatio = function () {\n\n\t\treturn _pixelRatio;\n\n\t};\n\n\tthis.setPixelRatio = function ( value ) {\n\n\t\tif ( value === undefined ) return;\n\n\t\t_pixelRatio = value;\n\n\t\tthis.setSize( _viewport.z, _viewport.w, false );\n\n\t};\n\n\tthis.getSize = function () {\n\n\t\treturn {\n\t\t\twidth: _width,\n\t\t\theight: _height\n\t\t};\n\n\t};\n\n\tthis.setSize = function ( width, height, updateStyle ) {\n\n\t\t_width = width;\n\t\t_height = height;\n\n\t\t_canvas.width = width * _pixelRatio;\n\t\t_canvas.height = height * _pixelRatio;\n\n\t\tif ( updateStyle !== false ) {\n\n\t\t\t_canvas.style.width = width + 'px';\n\t\t\t_canvas.style.height = height + 'px';\n\n\t\t}\n\n\t\tthis.setViewport( 0, 0, width, height );\n\n\t};\n\n\tthis.setViewport = function ( x, y, width, height ) {\n\n\t\tstate.viewport( _viewport.set( x, y, width, height ) );\n\n\t};\n\n\tthis.setScissor = function ( x, y, width, height ) {\n\n\t\tstate.scissor( _scissor.set( x, y, width, height ) );\n\n\t};\n\n\tthis.setScissorTest = function ( boolean ) {\n\n\t\tstate.setScissorTest( _scissorTest = boolean );\n\n\t};\n\n\t// Clearing\n\n\tthis.getClearColor = function () {\n\n\t\treturn _clearColor;\n\n\t};\n\n\tthis.setClearColor = function ( color, alpha ) {\n\n\t\t_clearColor.set( color );\n\n\t\t_clearAlpha = alpha !== undefined ? alpha : 1;\n\n\t\tstate.buffers.color.setClear( _clearColor.r, _clearColor.g, _clearColor.b, _clearAlpha, _premultipliedAlpha );\n\n\t};\n\n\tthis.getClearAlpha = function () {\n\n\t\treturn _clearAlpha;\n\n\t};\n\n\tthis.setClearAlpha = function ( alpha ) {\n\n\t\t_clearAlpha = alpha;\n\n\t\tstate.buffers.color.setClear( _clearColor.r, _clearColor.g, _clearColor.b, _clearAlpha, _premultipliedAlpha );\n\n\t};\n\n\tthis.clear = function ( color, depth, stencil ) {\n\n\t\tvar bits = 0;\n\n\t\tif ( color === undefined || color ) bits |= _gl.COLOR_BUFFER_BIT;\n\t\tif ( depth === undefined || depth ) bits |= _gl.DEPTH_BUFFER_BIT;\n\t\tif ( stencil === undefined || stencil ) bits |= _gl.STENCIL_BUFFER_BIT;\n\n\t\t_gl.clear( bits );\n\n\t};\n\n\tthis.clearColor = function () {\n\n\t\tthis.clear( true, false, false );\n\n\t};\n\n\tthis.clearDepth = function () {\n\n\t\tthis.clear( false, true, false );\n\n\t};\n\n\tthis.clearStencil = function () {\n\n\t\tthis.clear( false, false, true );\n\n\t};\n\n\tthis.clearTarget = function ( renderTarget, color, depth, stencil ) {\n\n\t\tthis.setRenderTarget( renderTarget );\n\t\tthis.clear( color, depth, stencil );\n\n\t};\n\n\t// Reset\n\n\tthis.resetGLState = resetGLState;\n\n\tthis.dispose = function() {\n\n\t\ttransparentObjects = [];\n\t\ttransparentObjectsLastIndex = -1;\n\t\topaqueObjects = [];\n\t\topaqueObjectsLastIndex = -1;\n\n\t\t_canvas.removeEventListener( 'webglcontextlost', onContextLost, false );\n\n\t};\n\n\t// Events\n\n\tfunction onContextLost( event ) {\n\n\t\tevent.preventDefault();\n\n\t\tresetGLState();\n\t\tsetDefaultGLState();\n\n\t\tproperties.clear();\n\n\t}\n\n\tfunction onMaterialDispose( event ) {\n\n\t\tvar material = event.target;\n\n\t\tmaterial.removeEventListener( 'dispose', onMaterialDispose );\n\n\t\tdeallocateMaterial( material );\n\n\t}\n\n\t// Buffer deallocation\n\n\tfunction deallocateMaterial( material ) {\n\n\t\treleaseMaterialProgramReference( material );\n\n\t\tproperties.delete( material );\n\n\t}\n\n\n\tfunction releaseMaterialProgramReference( material ) {\n\n\t\tvar programInfo = properties.get( material ).program;\n\n\t\tmaterial.program = undefined;\n\n\t\tif ( programInfo !== undefined ) {\n\n\t\t\tprogramCache.releaseProgram( programInfo );\n\n\t\t}\n\n\t}\n\n\t// Buffer rendering\n\n\tthis.renderBufferImmediate = function ( object, program, material ) {\n\n\t\tstate.initAttributes();\n\n\t\tvar buffers = properties.get( object );\n\n\t\tif ( object.hasPositions && ! buffers.position ) buffers.position = _gl.createBuffer();\n\t\tif ( object.hasNormals && ! buffers.normal ) buffers.normal = _gl.createBuffer();\n\t\tif ( object.hasUvs && ! buffers.uv ) buffers.uv = _gl.createBuffer();\n\t\tif ( object.hasColors && ! buffers.color ) buffers.color = _gl.createBuffer();\n\n\t\tvar attributes = program.getAttributes();\n\n\t\tif ( object.hasPositions ) {\n\n\t\t\t_gl.bindBuffer( _gl.ARRAY_BUFFER, buffers.position );\n\t\t\t_gl.bufferData( _gl.ARRAY_BUFFER, object.positionArray, _gl.DYNAMIC_DRAW );\n\n\t\t\tstate.enableAttribute( attributes.position );\n\t\t\t_gl.vertexAttribPointer( attributes.position, 3, _gl.FLOAT, false, 0, 0 );\n\n\t\t}\n\n\t\tif ( object.hasNormals ) {\n\n\t\t\t_gl.bindBuffer( _gl.ARRAY_BUFFER, buffers.normal );\n\n\t\t\tif ( ! material.isMeshPhongMaterial &&\n\t\t\t ! material.isMeshStandardMaterial &&\n\t\t\t material.shading === FlatShading ) {\n\n\t\t\t\tfor ( var i = 0, l = object.count * 3; i < l; i += 9 ) {\n\n\t\t\t\t\tvar array = object.normalArray;\n\n\t\t\t\t\tvar nx = ( array[ i + 0 ] + array[ i + 3 ] + array[ i + 6 ] ) / 3;\n\t\t\t\t\tvar ny = ( array[ i + 1 ] + array[ i + 4 ] + array[ i + 7 ] ) / 3;\n\t\t\t\t\tvar nz = ( array[ i + 2 ] + array[ i + 5 ] + array[ i + 8 ] ) / 3;\n\n\t\t\t\t\tarray[ i + 0 ] = nx;\n\t\t\t\t\tarray[ i + 1 ] = ny;\n\t\t\t\t\tarray[ i + 2 ] = nz;\n\n\t\t\t\t\tarray[ i + 3 ] = nx;\n\t\t\t\t\tarray[ i + 4 ] = ny;\n\t\t\t\t\tarray[ i + 5 ] = nz;\n\n\t\t\t\t\tarray[ i + 6 ] = nx;\n\t\t\t\t\tarray[ i + 7 ] = ny;\n\t\t\t\t\tarray[ i + 8 ] = nz;\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t\t_gl.bufferData( _gl.ARRAY_BUFFER, object.normalArray, _gl.DYNAMIC_DRAW );\n\n\t\t\tstate.enableAttribute( attributes.normal );\n\n\t\t\t_gl.vertexAttribPointer( attributes.normal, 3, _gl.FLOAT, false, 0, 0 );\n\n\t\t}\n\n\t\tif ( object.hasUvs && material.map ) {\n\n\t\t\t_gl.bindBuffer( _gl.ARRAY_BUFFER, buffers.uv );\n\t\t\t_gl.bufferData( _gl.ARRAY_BUFFER, object.uvArray, _gl.DYNAMIC_DRAW );\n\n\t\t\tstate.enableAttribute( attributes.uv );\n\n\t\t\t_gl.vertexAttribPointer( attributes.uv, 2, _gl.FLOAT, false, 0, 0 );\n\n\t\t}\n\n\t\tif ( object.hasColors && material.vertexColors !== NoColors ) {\n\n\t\t\t_gl.bindBuffer( _gl.ARRAY_BUFFER, buffers.color );\n\t\t\t_gl.bufferData( _gl.ARRAY_BUFFER, object.colorArray, _gl.DYNAMIC_DRAW );\n\n\t\t\tstate.enableAttribute( attributes.color );\n\n\t\t\t_gl.vertexAttribPointer( attributes.color, 3, _gl.FLOAT, false, 0, 0 );\n\n\t\t}\n\n\t\tstate.disableUnusedAttributes();\n\n\t\t_gl.drawArrays( _gl.TRIANGLES, 0, object.count );\n\n\t\tobject.count = 0;\n\n\t};\n\n\tthis.renderBufferDirect = function ( camera, fog, geometry, material, object, group ) {\n\n\t\tsetMaterial( material );\n\n\t\tvar program = setProgram( camera, fog, material, object );\n\n\t\tvar updateBuffers = false;\n\t\tvar geometryProgram = geometry.id + '_' + program.id + '_' + material.wireframe;\n\n\t\tif ( geometryProgram !== _currentGeometryProgram ) {\n\n\t\t\t_currentGeometryProgram = geometryProgram;\n\t\t\tupdateBuffers = true;\n\n\t\t}\n\n\t\t// morph targets\n\n\t\tvar morphTargetInfluences = object.morphTargetInfluences;\n\n\t\tif ( morphTargetInfluences !== undefined ) {\n\n\t\t\tvar activeInfluences = [];\n\n\t\t\tfor ( var i = 0, l = morphTargetInfluences.length; i < l; i ++ ) {\n\n\t\t\t\tvar influence = morphTargetInfluences[ i ];\n\t\t\t\tactiveInfluences.push( [ influence, i ] );\n\n\t\t\t}\n\n\t\t\tactiveInfluences.sort( absNumericalSort );\n\n\t\t\tif ( activeInfluences.length > 8 ) {\n\n\t\t\t\tactiveInfluences.length = 8;\n\n\t\t\t}\n\n\t\t\tvar morphAttributes = geometry.morphAttributes;\n\n\t\t\tfor ( var i = 0, l = activeInfluences.length; i < l; i ++ ) {\n\n\t\t\t\tvar influence = activeInfluences[ i ];\n\t\t\t\tmorphInfluences[ i ] = influence[ 0 ];\n\n\t\t\t\tif ( influence[ 0 ] !== 0 ) {\n\n\t\t\t\t\tvar index = influence[ 1 ];\n\n\t\t\t\t\tif ( material.morphTargets === true && morphAttributes.position ) geometry.addAttribute( 'morphTarget' + i, morphAttributes.position[ index ] );\n\t\t\t\t\tif ( material.morphNormals === true && morphAttributes.normal ) geometry.addAttribute( 'morphNormal' + i, morphAttributes.normal[ index ] );\n\n\t\t\t\t} else {\n\n\t\t\t\t\tif ( material.morphTargets === true ) geometry.removeAttribute( 'morphTarget' + i );\n\t\t\t\t\tif ( material.morphNormals === true ) geometry.removeAttribute( 'morphNormal' + i );\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t\tfor ( var i = activeInfluences.length, il = morphInfluences.length; i < il; i ++ ) {\n\n\t\t\t\tmorphInfluences[ i ] = 0.0;\n\n\t\t\t}\n\n\t\t\tprogram.getUniforms().setValue(\n\t\t\t\t\t_gl, 'morphTargetInfluences', morphInfluences );\n\n\t\t\tupdateBuffers = true;\n\n\t\t}\n\n\t\t//\n\n\t\tvar index = geometry.index;\n\t\tvar position = geometry.attributes.position;\n\t\tvar rangeFactor = 1;\n\n\t\tif ( material.wireframe === true ) {\n\n\t\t\tindex = objects.getWireframeAttribute( geometry );\n\t\t\trangeFactor = 2;\n\n\t\t}\n\n\t\tvar renderer;\n\n\t\tif ( index !== null ) {\n\n\t\t\trenderer = indexedBufferRenderer;\n\t\t\trenderer.setIndex( index );\n\n\t\t} else {\n\n\t\t\trenderer = bufferRenderer;\n\n\t\t}\n\n\t\tif ( updateBuffers ) {\n\n\t\t\tsetupVertexAttributes( material, program, geometry );\n\n\t\t\tif ( index !== null ) {\n\n\t\t\t\t_gl.bindBuffer( _gl.ELEMENT_ARRAY_BUFFER, objects.getAttributeBuffer( index ) );\n\n\t\t\t}\n\n\t\t}\n\n\t\t//\n\n\t\tvar dataCount = 0;\n\n\t\tif ( index !== null ) {\n\n\t\t\tdataCount = index.count;\n\n\t\t} else if ( position !== undefined ) {\n\n\t\t\tdataCount = position.count;\n\n\t\t}\n\n\t\tvar rangeStart = geometry.drawRange.start * rangeFactor;\n\t\tvar rangeCount = geometry.drawRange.count * rangeFactor;\n\n\t\tvar groupStart = group !== null ? group.start * rangeFactor : 0;\n\t\tvar groupCount = group !== null ? group.count * rangeFactor : Infinity;\n\n\t\tvar drawStart = Math.max( rangeStart, groupStart );\n\t\tvar drawEnd = Math.min( dataCount, rangeStart + rangeCount, groupStart + groupCount ) - 1;\n\n\t\tvar drawCount = Math.max( 0, drawEnd - drawStart + 1 );\n\n\t\tif ( drawCount === 0 ) return;\n\n\t\t//\n\n\t\tif ( object.isMesh ) {\n\n\t\t\tif ( material.wireframe === true ) {\n\n\t\t\t\tstate.setLineWidth( material.wireframeLinewidth * getTargetPixelRatio() );\n\t\t\t\trenderer.setMode( _gl.LINES );\n\n\t\t\t} else {\n\n\t\t\t\tswitch ( object.drawMode ) {\n\n\t\t\t\t\tcase TrianglesDrawMode:\n\t\t\t\t\t\trenderer.setMode( _gl.TRIANGLES );\n\t\t\t\t\t\tbreak;\n\n\t\t\t\t\tcase TriangleStripDrawMode:\n\t\t\t\t\t\trenderer.setMode( _gl.TRIANGLE_STRIP );\n\t\t\t\t\t\tbreak;\n\n\t\t\t\t\tcase TriangleFanDrawMode:\n\t\t\t\t\t\trenderer.setMode( _gl.TRIANGLE_FAN );\n\t\t\t\t\t\tbreak;\n\n\t\t\t\t}\n\n\t\t\t}\n\n\n\t\t} else if ( object.isLine ) {\n\n\t\t\tvar lineWidth = material.linewidth;\n\n\t\t\tif ( lineWidth === undefined ) lineWidth = 1; // Not using Line*Material\n\n\t\t\tstate.setLineWidth( lineWidth * getTargetPixelRatio() );\n\n\t\t\tif ( object.isLineSegments ) {\n\n\t\t\t\trenderer.setMode( _gl.LINES );\n\n\t\t\t} else {\n\n\t\t\t\trenderer.setMode( _gl.LINE_STRIP );\n\n\t\t\t}\n\n\t\t} else if ( object.isPoints ) {\n\n\t\t\trenderer.setMode( _gl.POINTS );\n\n\t\t}\n\n\t\tif ( geometry && geometry.isInstancedBufferGeometry ) {\n\n\t\t\tif ( geometry.maxInstancedCount > 0 ) {\n\n\t\t\t\trenderer.renderInstances( geometry, drawStart, drawCount );\n\n\t\t\t}\n\n\t\t} else {\n\n\t\t\trenderer.render( drawStart, drawCount );\n\n\t\t}\n\n\t};\n\n\tfunction setupVertexAttributes( material, program, geometry, startIndex ) {\n\n\t\tvar extension;\n\n\t\tif ( geometry && geometry.isInstancedBufferGeometry ) {\n\n\t\t\textension = extensions.get( 'ANGLE_instanced_arrays' );\n\n\t\t\tif ( extension === null ) {\n\n\t\t\t\tconsole.error( 'THREE.WebGLRenderer.setupVertexAttributes: using THREE.InstancedBufferGeometry but hardware does not support extension ANGLE_instanced_arrays.' );\n\t\t\t\treturn;\n\n\t\t\t}\n\n\t\t}\n\n\t\tif ( startIndex === undefined ) startIndex = 0;\n\n\t\tstate.initAttributes();\n\n\t\tvar geometryAttributes = geometry.attributes;\n\n\t\tvar programAttributes = program.getAttributes();\n\n\t\tvar materialDefaultAttributeValues = material.defaultAttributeValues;\n\n\t\tfor ( var name in programAttributes ) {\n\n\t\t\tvar programAttribute = programAttributes[ name ];\n\n\t\t\tif ( programAttribute >= 0 ) {\n\n\t\t\t\tvar geometryAttribute = geometryAttributes[ name ];\n\n\t\t\t\tif ( geometryAttribute !== undefined ) {\n\n\t\t\t\t\tvar type = _gl.FLOAT;\n\t\t\t\t\tvar array = geometryAttribute.array;\n\t\t\t\t\tvar normalized = geometryAttribute.normalized;\n\n\t\t\t\t\tif ( array instanceof Float32Array ) {\n\n\t\t\t\t\t\ttype = _gl.FLOAT;\n\n\t\t\t\t\t} else if ( array instanceof Float64Array ) {\n\n\t\t\t\t\t\tconsole.warn( \"Unsupported data buffer format: Float64Array\" );\n\n\t\t\t\t\t} else if ( array instanceof Uint16Array ) {\n\n\t\t\t\t\t\ttype = _gl.UNSIGNED_SHORT;\n\n\t\t\t\t\t} else if ( array instanceof Int16Array ) {\n\n\t\t\t\t\t\ttype = _gl.SHORT;\n\n\t\t\t\t\t} else if ( array instanceof Uint32Array ) {\n\n\t\t\t\t\t\ttype = _gl.UNSIGNED_INT;\n\n\t\t\t\t\t} else if ( array instanceof Int32Array ) {\n\n\t\t\t\t\t\ttype = _gl.INT;\n\n\t\t\t\t\t} else if ( array instanceof Int8Array ) {\n\n\t\t\t\t\t\ttype = _gl.BYTE;\n\n\t\t\t\t\t} else if ( array instanceof Uint8Array ) {\n\n\t\t\t\t\t\ttype = _gl.UNSIGNED_BYTE;\n\n\t\t\t\t\t}\n\n\t\t\t\t\tvar size = geometryAttribute.itemSize;\n\t\t\t\t\tvar buffer = objects.getAttributeBuffer( geometryAttribute );\n\n\t\t\t\t\tif ( geometryAttribute.isInterleavedBufferAttribute ) {\n\n\t\t\t\t\t\tvar data = geometryAttribute.data;\n\t\t\t\t\t\tvar stride = data.stride;\n\t\t\t\t\t\tvar offset = geometryAttribute.offset;\n\n\t\t\t\t\t\tif ( data && data.isInstancedInterleavedBuffer ) {\n\n\t\t\t\t\t\t\tstate.enableAttributeAndDivisor( programAttribute, data.meshPerAttribute, extension );\n\n\t\t\t\t\t\t\tif ( geometry.maxInstancedCount === undefined ) {\n\n\t\t\t\t\t\t\t\tgeometry.maxInstancedCount = data.meshPerAttribute * data.count;\n\n\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t} else {\n\n\t\t\t\t\t\t\tstate.enableAttribute( programAttribute );\n\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\t_gl.bindBuffer( _gl.ARRAY_BUFFER, buffer );\n\t\t\t\t\t\t_gl.vertexAttribPointer( programAttribute, size, type, normalized, stride * data.array.BYTES_PER_ELEMENT, ( startIndex * stride + offset ) * data.array.BYTES_PER_ELEMENT );\n\n\t\t\t\t\t} else {\n\n\t\t\t\t\t\tif ( geometryAttribute.isInstancedBufferAttribute ) {\n\n\t\t\t\t\t\t\tstate.enableAttributeAndDivisor( programAttribute, geometryAttribute.meshPerAttribute, extension );\n\n\t\t\t\t\t\t\tif ( geometry.maxInstancedCount === undefined ) {\n\n\t\t\t\t\t\t\t\tgeometry.maxInstancedCount = geometryAttribute.meshPerAttribute * geometryAttribute.count;\n\n\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t} else {\n\n\t\t\t\t\t\t\tstate.enableAttribute( programAttribute );\n\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\t_gl.bindBuffer( _gl.ARRAY_BUFFER, buffer );\n\t\t\t\t\t\t_gl.vertexAttribPointer( programAttribute, size, type, normalized, 0, startIndex * size * geometryAttribute.array.BYTES_PER_ELEMENT );\n\n\t\t\t\t\t}\n\n\t\t\t\t} else if ( materialDefaultAttributeValues !== undefined ) {\n\n\t\t\t\t\tvar value = materialDefaultAttributeValues[ name ];\n\n\t\t\t\t\tif ( value !== undefined ) {\n\n\t\t\t\t\t\tswitch ( value.length ) {\n\n\t\t\t\t\t\t\tcase 2:\n\t\t\t\t\t\t\t\t_gl.vertexAttrib2fv( programAttribute, value );\n\t\t\t\t\t\t\t\tbreak;\n\n\t\t\t\t\t\t\tcase 3:\n\t\t\t\t\t\t\t\t_gl.vertexAttrib3fv( programAttribute, value );\n\t\t\t\t\t\t\t\tbreak;\n\n\t\t\t\t\t\t\tcase 4:\n\t\t\t\t\t\t\t\t_gl.vertexAttrib4fv( programAttribute, value );\n\t\t\t\t\t\t\t\tbreak;\n\n\t\t\t\t\t\t\tdefault:\n\t\t\t\t\t\t\t\t_gl.vertexAttrib1fv( programAttribute, value );\n\n\t\t\t\t\t\t}\n\n\t\t\t\t\t}\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t}\n\n\t\tstate.disableUnusedAttributes();\n\n\t}\n\n\t// Sorting\n\n\tfunction absNumericalSort( a, b ) {\n\n\t\treturn Math.abs( b[ 0 ] ) - Math.abs( a[ 0 ] );\n\n\t}\n\n\tfunction painterSortStable( a, b ) {\n\n\t\tif ( a.object.renderOrder !== b.object.renderOrder ) {\n\n\t\t\treturn a.object.renderOrder - b.object.renderOrder;\n\n\t\t} else if ( a.material.program && b.material.program && a.material.program !== b.material.program ) {\n\n\t\t\treturn a.material.program.id - b.material.program.id;\n\n\t\t} else if ( a.material.id !== b.material.id ) {\n\n\t\t\treturn a.material.id - b.material.id;\n\n\t\t} else if ( a.z !== b.z ) {\n\n\t\t\treturn a.z - b.z;\n\n\t\t} else {\n\n\t\t\treturn a.id - b.id;\n\n\t\t}\n\n\t}\n\n\tfunction reversePainterSortStable( a, b ) {\n\n\t\tif ( a.object.renderOrder !== b.object.renderOrder ) {\n\n\t\t\treturn a.object.renderOrder - b.object.renderOrder;\n\n\t\t} if ( a.z !== b.z ) {\n\n\t\t\treturn b.z - a.z;\n\n\t\t} else {\n\n\t\t\treturn a.id - b.id;\n\n\t\t}\n\n\t}\n\n\t// Rendering\n\n\tthis.render = function ( scene, camera, renderTarget, forceClear ) {\n\n\t\tif ( camera !== undefined && camera.isCamera !== true ) {\n\n\t\t\tconsole.error( 'THREE.WebGLRenderer.render: camera is not an instance of THREE.Camera.' );\n\t\t\treturn;\n\n\t\t}\n\n\t\t// reset caching for this frame\n\n\t\t_currentGeometryProgram = '';\n\t\t_currentMaterialId = - 1;\n\t\t_currentCamera = null;\n\n\t\t// update scene graph\n\n\t\tif ( scene.autoUpdate === true ) scene.updateMatrixWorld();\n\n\t\t// update camera matrices and frustum\n\n\t\tif ( camera.parent === null ) camera.updateMatrixWorld();\n\n\t\tcamera.matrixWorldInverse.getInverse( camera.matrixWorld );\n\n\t\t_projScreenMatrix.multiplyMatrices( camera.projectionMatrix, camera.matrixWorldInverse );\n\t\t_frustum.setFromMatrix( _projScreenMatrix );\n\n\t\tlights.length = 0;\n\n\t\topaqueObjectsLastIndex = - 1;\n\t\ttransparentObjectsLastIndex = - 1;\n\n\t\tsprites.length = 0;\n\t\tlensFlares.length = 0;\n\n\t\t_localClippingEnabled = this.localClippingEnabled;\n\t\t_clippingEnabled = _clipping.init( this.clippingPlanes, _localClippingEnabled, camera );\n\n\t\tprojectObject( scene, camera );\n\n\t\topaqueObjects.length = opaqueObjectsLastIndex + 1;\n\t\ttransparentObjects.length = transparentObjectsLastIndex + 1;\n\n\t\tif ( _this.sortObjects === true ) {\n\n\t\t\topaqueObjects.sort( painterSortStable );\n\t\t\ttransparentObjects.sort( reversePainterSortStable );\n\n\t\t}\n\n\t\t//\n\n\t\tif ( _clippingEnabled ) _clipping.beginShadows();\n\n\t\tsetupShadows( lights );\n\n\t\tshadowMap.render( scene, camera );\n\n\t\tsetupLights( lights, camera );\n\n\t\tif ( _clippingEnabled ) _clipping.endShadows();\n\n\t\t//\n\n\t\t_infoRender.calls = 0;\n\t\t_infoRender.vertices = 0;\n\t\t_infoRender.faces = 0;\n\t\t_infoRender.points = 0;\n\n\t\tif ( renderTarget === undefined ) {\n\n\t\t\trenderTarget = null;\n\n\t\t}\n\n\t\tthis.setRenderTarget( renderTarget );\n\n\t\t//\n\n\t\tvar background = scene.background;\n\n\t\tif ( background === null ) {\n\n\t\t\tstate.buffers.color.setClear( _clearColor.r, _clearColor.g, _clearColor.b, _clearAlpha, _premultipliedAlpha );\n\n\t\t} else if ( background && background.isColor ) {\n\n\t\t\tstate.buffers.color.setClear( background.r, background.g, background.b, 1, _premultipliedAlpha );\n\t\t\tforceClear = true;\n\n\t\t}\n\n\t\tif ( this.autoClear || forceClear ) {\n\n\t\t\tthis.clear( this.autoClearColor, this.autoClearDepth, this.autoClearStencil );\n\n\t\t}\n\n\t\tif ( background && background.isCubeTexture ) {\n\n\t\t\tbackgroundCamera2.projectionMatrix.copy( camera.projectionMatrix );\n\n\t\t\tbackgroundCamera2.matrixWorld.extractRotation( camera.matrixWorld );\n\t\t\tbackgroundCamera2.matrixWorldInverse.getInverse( backgroundCamera2.matrixWorld );\n\n\t\t\tbackgroundBoxMesh.material.uniforms[ \"tCube\" ].value = background;\n\t\t\tbackgroundBoxMesh.modelViewMatrix.multiplyMatrices( backgroundCamera2.matrixWorldInverse, backgroundBoxMesh.matrixWorld );\n\n\t\t\tobjects.update( backgroundBoxMesh );\n\n\t\t\t_this.renderBufferDirect( backgroundCamera2, null, backgroundBoxMesh.geometry, backgroundBoxMesh.material, backgroundBoxMesh, null );\n\n\t\t} else if ( background && background.isTexture ) {\n\n\t\t\tbackgroundPlaneMesh.material.map = background;\n\n\t\t\tobjects.update( backgroundPlaneMesh );\n\n\t\t\t_this.renderBufferDirect( backgroundCamera, null, backgroundPlaneMesh.geometry, backgroundPlaneMesh.material, backgroundPlaneMesh, null );\n\n\t\t}\n\n\t\t//\n\n\t\tif ( scene.overrideMaterial ) {\n\n\t\t\tvar overrideMaterial = scene.overrideMaterial;\n\n\t\t\trenderObjects( opaqueObjects, scene, camera, overrideMaterial );\n\t\t\trenderObjects( transparentObjects, scene, camera, overrideMaterial );\n\n\t\t} else {\n\n\t\t\t// opaque pass (front-to-back order)\n\n\t\t\tstate.setBlending( NoBlending );\n\t\t\trenderObjects( opaqueObjects, scene, camera );\n\n\t\t\t// transparent pass (back-to-front order)\n\n\t\t\trenderObjects( transparentObjects, scene, camera );\n\n\t\t}\n\n\t\t// custom render plugins (post pass)\n\n\t\tspritePlugin.render( scene, camera );\n\t\tlensFlarePlugin.render( scene, camera, _currentViewport );\n\n\t\t// Generate mipmap if we're using any kind of mipmap filtering\n\n\t\tif ( renderTarget ) {\n\n\t\t\ttextures.updateRenderTargetMipmap( renderTarget );\n\n\t\t}\n\n\t\t// Ensure depth buffer writing is enabled so it can be cleared on next render\n\n\t\tstate.setDepthTest( true );\n\t\tstate.setDepthWrite( true );\n\t\tstate.setColorWrite( true );\n\n\t\t// _gl.finish();\n\n\t};\n\n\tfunction pushRenderItem( object, geometry, material, z, group ) {\n\n\t\tvar array, index;\n\n\t\t// allocate the next position in the appropriate array\n\n\t\tif ( material.transparent ) {\n\n\t\t\tarray = transparentObjects;\n\t\t\tindex = ++ transparentObjectsLastIndex;\n\n\t\t} else {\n\n\t\t\tarray = opaqueObjects;\n\t\t\tindex = ++ opaqueObjectsLastIndex;\n\n\t\t}\n\n\t\t// recycle existing render item or grow the array\n\n\t\tvar renderItem = array[ index ];\n\n\t\tif ( renderItem !== undefined ) {\n\n\t\t\trenderItem.id = object.id;\n\t\t\trenderItem.object = object;\n\t\t\trenderItem.geometry = geometry;\n\t\t\trenderItem.material = material;\n\t\t\trenderItem.z = _vector3.z;\n\t\t\trenderItem.group = group;\n\n\t\t} else {\n\n\t\t\trenderItem = {\n\t\t\t\tid: object.id,\n\t\t\t\tobject: object,\n\t\t\t\tgeometry: geometry,\n\t\t\t\tmaterial: material,\n\t\t\t\tz: _vector3.z,\n\t\t\t\tgroup: group\n\t\t\t};\n\n\t\t\t// assert( index === array.length );\n\t\t\tarray.push( renderItem );\n\n\t\t}\n\n\t}\n\n\t// TODO Duplicated code (Frustum)\n\n\tfunction isObjectViewable( object ) {\n\n\t\tvar geometry = object.geometry;\n\n\t\tif ( geometry.boundingSphere === null )\n\t\t\tgeometry.computeBoundingSphere();\n\n\t\t_sphere.copy( geometry.boundingSphere ).\n\t\t\tapplyMatrix4( object.matrixWorld );\n\n\t\treturn isSphereViewable( _sphere );\n\n\t}\n\n\tfunction isSpriteViewable( sprite ) {\n\n\t\t_sphere.center.set( 0, 0, 0 );\n\t\t_sphere.radius = 0.7071067811865476;\n\t\t_sphere.applyMatrix4( sprite.matrixWorld );\n\n\t\treturn isSphereViewable( _sphere );\n\n\t}\n\n\tfunction isSphereViewable( sphere ) {\n\n\t\tif ( ! _frustum.intersectsSphere( sphere ) ) return false;\n\n\t\tvar numPlanes = _clipping.numPlanes;\n\n\t\tif ( numPlanes === 0 ) return true;\n\n\t\tvar planes = _this.clippingPlanes,\n\n\t\t\tcenter = sphere.center,\n\t\t\tnegRad = - sphere.radius,\n\t\t\ti = 0;\n\n\t\tdo {\n\n\t\t\t// out when deeper than radius in the negative halfspace\n\t\t\tif ( planes[ i ].distanceToPoint( center ) < negRad ) return false;\n\n\t\t} while ( ++ i !== numPlanes );\n\n\t\treturn true;\n\n\t}\n\n\tfunction projectObject( object, camera ) {\n\n\t\tif ( object.visible === false ) return;\n\n\t\tvar visible = ( object.layers.mask & camera.layers.mask ) !== 0;\n\n\t\tif ( visible ) {\n\n\t\t\tif ( object.isLight ) {\n\n\t\t\t\tlights.push( object );\n\n\t\t\t} else if ( object.isSprite ) {\n\n\t\t\t\tif ( object.frustumCulled === false || isSpriteViewable( object ) === true ) {\n\n\t\t\t\t\tsprites.push( object );\n\n\t\t\t\t}\n\n\t\t\t} else if ( object.isLensFlare ) {\n\n\t\t\t\tlensFlares.push( object );\n\n\t\t\t} else if ( object.isImmediateRenderObject ) {\n\n\t\t\t\tif ( _this.sortObjects === true ) {\n\n\t\t\t\t\t_vector3.setFromMatrixPosition( object.matrixWorld );\n\t\t\t\t\t_vector3.applyProjection( _projScreenMatrix );\n\n\t\t\t\t}\n\n\t\t\t\tpushRenderItem( object, null, object.material, _vector3.z, null );\n\n\t\t\t} else if ( object.isMesh || object.isLine || object.isPoints ) {\n\n\t\t\t\tif ( object.isSkinnedMesh ) {\n\n\t\t\t\t\tobject.skeleton.update();\n\n\t\t\t\t}\n\n\t\t\t\tif ( object.frustumCulled === false || isObjectViewable( object ) === true ) {\n\n\t\t\t\t\tvar material = object.material;\n\n\t\t\t\t\tif ( material.visible === true ) {\n\n\t\t\t\t\t\tif ( _this.sortObjects === true ) {\n\n\t\t\t\t\t\t\t_vector3.setFromMatrixPosition( object.matrixWorld );\n\t\t\t\t\t\t\t_vector3.applyProjection( _projScreenMatrix );\n\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\tvar geometry = objects.update( object );\n\n\t\t\t\t\t\tif ( material.isMultiMaterial ) {\n\n\t\t\t\t\t\t\tvar groups = geometry.groups;\n\t\t\t\t\t\t\tvar materials = material.materials;\n\n\t\t\t\t\t\t\tfor ( var i = 0, l = groups.length; i < l; i ++ ) {\n\n\t\t\t\t\t\t\t\tvar group = groups[ i ];\n\t\t\t\t\t\t\t\tvar groupMaterial = materials[ group.materialIndex ];\n\n\t\t\t\t\t\t\t\tif ( groupMaterial.visible === true ) {\n\n\t\t\t\t\t\t\t\t\tpushRenderItem( object, geometry, groupMaterial, _vector3.z, group );\n\n\t\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t} else {\n\n\t\t\t\t\t\t\tpushRenderItem( object, geometry, material, _vector3.z, null );\n\n\t\t\t\t\t\t}\n\n\t\t\t\t\t}\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t}\n\n\t\tvar children = object.children;\n\n\t\tfor ( var i = 0, l = children.length; i < l; i ++ ) {\n\n\t\t\tprojectObject( children[ i ], camera );\n\n\t\t}\n\n\t}\n\n\tfunction renderObjects( renderList, scene, camera, overrideMaterial ) {\n\n\t\tfor ( var i = 0, l = renderList.length; i < l; i ++ ) {\n\n\t\t\tvar renderItem = renderList[ i ];\n\n\t\t\tvar object = renderItem.object;\n\t\t\tvar geometry = renderItem.geometry;\n\t\t\tvar material = overrideMaterial === undefined ? renderItem.material : overrideMaterial;\n\t\t\tvar group = renderItem.group;\n\n\t\t\tobject.modelViewMatrix.multiplyMatrices( camera.matrixWorldInverse, object.matrixWorld );\n\t\t\tobject.normalMatrix.getNormalMatrix( object.modelViewMatrix );\n\n\t\t\tobject.onBeforeRender( _this, scene, camera, geometry, material, group );\n\n\t\t\tif ( object.isImmediateRenderObject ) {\n\n\t\t\t\tsetMaterial( material );\n\n\t\t\t\tvar program = setProgram( camera, scene.fog, material, object );\n\n\t\t\t\t_currentGeometryProgram = '';\n\n\t\t\t\tobject.render( function ( object ) {\n\n\t\t\t\t\t_this.renderBufferImmediate( object, program, material );\n\n\t\t\t\t} );\n\n\t\t\t} else {\n\n\t\t\t\t_this.renderBufferDirect( camera, scene.fog, geometry, material, object, group );\n\n\t\t\t}\n\n\t\t\tobject.onAfterRender( _this, scene, camera, geometry, material, group );\n\n\n\t\t}\n\n\t}\n\n\tfunction initMaterial( material, fog, object ) {\n\n\t\tvar materialProperties = properties.get( material );\n\n\t\tvar parameters = programCache.getParameters(\n\t\t\t\tmaterial, _lights, fog, _clipping.numPlanes, _clipping.numIntersection, object );\n\n\t\tvar code = programCache.getProgramCode( material, parameters );\n\n\t\tvar program = materialProperties.program;\n\t\tvar programChange = true;\n\n\t\tif ( program === undefined ) {\n\n\t\t\t// new material\n\t\t\tmaterial.addEventListener( 'dispose', onMaterialDispose );\n\n\t\t} else if ( program.code !== code ) {\n\n\t\t\t// changed glsl or parameters\n\t\t\treleaseMaterialProgramReference( material );\n\n\t\t} else if ( parameters.shaderID !== undefined ) {\n\n\t\t\t// same glsl and uniform list\n\t\t\treturn;\n\n\t\t} else {\n\n\t\t\t// only rebuild uniform list\n\t\t\tprogramChange = false;\n\n\t\t}\n\n\t\tif ( programChange ) {\n\n\t\t\tif ( parameters.shaderID ) {\n\n\t\t\t\tvar shader = ShaderLib[ parameters.shaderID ];\n\n\t\t\t\tmaterialProperties.__webglShader = {\n\t\t\t\t\tname: material.type,\n\t\t\t\t\tuniforms: UniformsUtils.clone( shader.uniforms ),\n\t\t\t\t\tvertexShader: shader.vertexShader,\n\t\t\t\t\tfragmentShader: shader.fragmentShader\n\t\t\t\t};\n\n\t\t\t} else {\n\n\t\t\t\tmaterialProperties.__webglShader = {\n\t\t\t\t\tname: material.type,\n\t\t\t\t\tuniforms: material.uniforms,\n\t\t\t\t\tvertexShader: material.vertexShader,\n\t\t\t\t\tfragmentShader: material.fragmentShader\n\t\t\t\t};\n\n\t\t\t}\n\n\t\t\tmaterial.__webglShader = materialProperties.__webglShader;\n\n\t\t\tprogram = programCache.acquireProgram( material, parameters, code );\n\n\t\t\tmaterialProperties.program = program;\n\t\t\tmaterial.program = program;\n\n\t\t}\n\n\t\tvar attributes = program.getAttributes();\n\n\t\tif ( material.morphTargets ) {\n\n\t\t\tmaterial.numSupportedMorphTargets = 0;\n\n\t\t\tfor ( var i = 0; i < _this.maxMorphTargets; i ++ ) {\n\n\t\t\t\tif ( attributes[ 'morphTarget' + i ] >= 0 ) {\n\n\t\t\t\t\tmaterial.numSupportedMorphTargets ++;\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t}\n\n\t\tif ( material.morphNormals ) {\n\n\t\t\tmaterial.numSupportedMorphNormals = 0;\n\n\t\t\tfor ( var i = 0; i < _this.maxMorphNormals; i ++ ) {\n\n\t\t\t\tif ( attributes[ 'morphNormal' + i ] >= 0 ) {\n\n\t\t\t\t\tmaterial.numSupportedMorphNormals ++;\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t}\n\n\t\tvar uniforms = materialProperties.__webglShader.uniforms;\n\n\t\tif ( ! material.isShaderMaterial &&\n\t\t ! material.isRawShaderMaterial ||\n\t\t material.clipping === true ) {\n\n\t\t\tmaterialProperties.numClippingPlanes = _clipping.numPlanes;\n\t\t\tmaterialProperties.numIntersection = _clipping.numIntersection;\n\t\t\tuniforms.clippingPlanes = _clipping.uniform;\n\n\t\t}\n\n\t\tmaterialProperties.fog = fog;\n\n\t\t// store the light setup it was created for\n\n\t\tmaterialProperties.lightsHash = _lights.hash;\n\n\t\tif ( material.lights ) {\n\n\t\t\t// wire up the material to this renderer's lighting state\n\n\t\t\tuniforms.ambientLightColor.value = _lights.ambient;\n\t\t\tuniforms.directionalLights.value = _lights.directional;\n\t\t\tuniforms.spotLights.value = _lights.spot;\n\t\t\tuniforms.pointLights.value = _lights.point;\n\t\t\tuniforms.hemisphereLights.value = _lights.hemi;\n\n\t\t\tuniforms.directionalShadowMap.value = _lights.directionalShadowMap;\n\t\t\tuniforms.directionalShadowMatrix.value = _lights.directionalShadowMatrix;\n\t\t\tuniforms.spotShadowMap.value = _lights.spotShadowMap;\n\t\t\tuniforms.spotShadowMatrix.value = _lights.spotShadowMatrix;\n\t\t\tuniforms.pointShadowMap.value = _lights.pointShadowMap;\n\t\t\tuniforms.pointShadowMatrix.value = _lights.pointShadowMatrix;\n\n\t\t}\n\n\t\tvar progUniforms = materialProperties.program.getUniforms(),\n\t\t\tuniformsList =\n\t\t\t\t\tWebGLUniforms.seqWithValue( progUniforms.seq, uniforms );\n\n\t\tmaterialProperties.uniformsList = uniformsList;\n\n\t}\n\n\tfunction setMaterial( material ) {\n\n\t\tmaterial.side === DoubleSide\n\t\t\t? state.disable( _gl.CULL_FACE )\n\t\t\t: state.enable( _gl.CULL_FACE );\n\n\t\tstate.setFlipSided( material.side === BackSide );\n\n\t\tmaterial.transparent === true\n\t\t\t? state.setBlending( material.blending, material.blendEquation, material.blendSrc, material.blendDst, material.blendEquationAlpha, material.blendSrcAlpha, material.blendDstAlpha, material.premultipliedAlpha )\n\t\t\t: state.setBlending( NoBlending );\n\n\t\tstate.setDepthFunc( material.depthFunc );\n\t\tstate.setDepthTest( material.depthTest );\n\t\tstate.setDepthWrite( material.depthWrite );\n\t\tstate.setColorWrite( material.colorWrite );\n\t\tstate.setPolygonOffset( material.polygonOffset, material.polygonOffsetFactor, material.polygonOffsetUnits );\n\n\t}\n\n\tfunction setProgram( camera, fog, material, object ) {\n\n\t\t_usedTextureUnits = 0;\n\n\t\tvar materialProperties = properties.get( material );\n\n\t\tif ( _clippingEnabled ) {\n\n\t\t\tif ( _localClippingEnabled || camera !== _currentCamera ) {\n\n\t\t\t\tvar useCache =\n\t\t\t\t\t\tcamera === _currentCamera &&\n\t\t\t\t\t\tmaterial.id === _currentMaterialId;\n\n\t\t\t\t// we might want to call this function with some ClippingGroup\n\t\t\t\t// object instead of the material, once it becomes feasible\n\t\t\t\t// (#8465, #8379)\n\t\t\t\t_clipping.setState(\n\t\t\t\t\t\tmaterial.clippingPlanes, material.clipIntersection, material.clipShadows,\n\t\t\t\t\t\tcamera, materialProperties, useCache );\n\n\t\t\t}\n\n\t\t}\n\n\t\tif ( material.needsUpdate === false ) {\n\n\t\t\tif ( materialProperties.program === undefined ) {\n\n\t\t\t\tmaterial.needsUpdate = true;\n\n\t\t\t} else if ( material.fog && materialProperties.fog !== fog ) {\n\n\t\t\t\tmaterial.needsUpdate = true;\n\n\t\t\t} else if ( material.lights && materialProperties.lightsHash !== _lights.hash ) {\n\n\t\t\t\tmaterial.needsUpdate = true;\n\n\t\t\t} else if ( materialProperties.numClippingPlanes !== undefined &&\n\t\t\t\t( materialProperties.numClippingPlanes !== _clipping.numPlanes ||\n \t\t\t\t materialProperties.numIntersection !== _clipping.numIntersection ) ) {\n\n\t\t\t\tmaterial.needsUpdate = true;\n\n\t\t\t}\n\n\t\t}\n\n\t\tif ( material.needsUpdate ) {\n\n\t\t\tinitMaterial( material, fog, object );\n\t\t\tmaterial.needsUpdate = false;\n\n\t\t}\n\n\t\tvar refreshProgram = false;\n\t\tvar refreshMaterial = false;\n\t\tvar refreshLights = false;\n\n\t\tvar program = materialProperties.program,\n\t\t\tp_uniforms = program.getUniforms(),\n\t\t\tm_uniforms = materialProperties.__webglShader.uniforms;\n\n\t\tif ( program.id !== _currentProgram ) {\n\n\t\t\t_gl.useProgram( program.program );\n\t\t\t_currentProgram = program.id;\n\n\t\t\trefreshProgram = true;\n\t\t\trefreshMaterial = true;\n\t\t\trefreshLights = true;\n\n\t\t}\n\n\t\tif ( material.id !== _currentMaterialId ) {\n\n\t\t\t_currentMaterialId = material.id;\n\n\t\t\trefreshMaterial = true;\n\n\t\t}\n\n\t\tif ( refreshProgram || camera !== _currentCamera ) {\n\n\t\t\tp_uniforms.set( _gl, camera, 'projectionMatrix' );\n\n\t\t\tif ( capabilities.logarithmicDepthBuffer ) {\n\n\t\t\t\tp_uniforms.setValue( _gl, 'logDepthBufFC',\n\t\t\t\t\t\t2.0 / ( Math.log( camera.far + 1.0 ) / Math.LN2 ) );\n\n\t\t\t}\n\n\n\t\t\tif ( camera !== _currentCamera ) {\n\n\t\t\t\t_currentCamera = camera;\n\n\t\t\t\t// lighting uniforms depend on the camera so enforce an update\n\t\t\t\t// now, in case this material supports lights - or later, when\n\t\t\t\t// the next material that does gets activated:\n\n\t\t\t\trefreshMaterial = true;\t\t// set to true on material change\n\t\t\t\trefreshLights = true;\t\t// remains set until update done\n\n\t\t\t}\n\n\t\t\t// load material specific uniforms\n\t\t\t// (shader material also gets them for the sake of genericity)\n\n\t\t\tif ( material.isShaderMaterial ||\n\t\t\t material.isMeshPhongMaterial ||\n\t\t\t material.isMeshStandardMaterial ||\n\t\t\t material.envMap ) {\n\n\t\t\t\tvar uCamPos = p_uniforms.map.cameraPosition;\n\n\t\t\t\tif ( uCamPos !== undefined ) {\n\n\t\t\t\t\tuCamPos.setValue( _gl,\n\t\t\t\t\t\t\t_vector3.setFromMatrixPosition( camera.matrixWorld ) );\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t\tif ( material.isMeshPhongMaterial ||\n\t\t\t material.isMeshLambertMaterial ||\n\t\t\t material.isMeshBasicMaterial ||\n\t\t\t material.isMeshStandardMaterial ||\n\t\t\t material.isShaderMaterial ||\n\t\t\t material.skinning ) {\n\n\t\t\t\tp_uniforms.setValue( _gl, 'viewMatrix', camera.matrixWorldInverse );\n\n\t\t\t}\n\n\t\t\tp_uniforms.set( _gl, _this, 'toneMappingExposure' );\n\t\t\tp_uniforms.set( _gl, _this, 'toneMappingWhitePoint' );\n\n\t\t}\n\n\t\t// skinning uniforms must be set even if material didn't change\n\t\t// auto-setting of texture unit for bone texture must go before other textures\n\t\t// not sure why, but otherwise weird things happen\n\n\t\tif ( material.skinning ) {\n\n\t\t\tp_uniforms.setOptional( _gl, object, 'bindMatrix' );\n\t\t\tp_uniforms.setOptional( _gl, object, 'bindMatrixInverse' );\n\n\t\t\tvar skeleton = object.skeleton;\n\n\t\t\tif ( skeleton ) {\n\n\t\t\t\tif ( capabilities.floatVertexTextures && skeleton.useVertexTexture ) {\n\n\t\t\t\t\tp_uniforms.set( _gl, skeleton, 'boneTexture' );\n\t\t\t\t\tp_uniforms.set( _gl, skeleton, 'boneTextureWidth' );\n\t\t\t\t\tp_uniforms.set( _gl, skeleton, 'boneTextureHeight' );\n\n\t\t\t\t} else {\n\n\t\t\t\t\tp_uniforms.setOptional( _gl, skeleton, 'boneMatrices' );\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t}\n\n\t\tif ( refreshMaterial ) {\n\n\t\t\tif ( material.lights ) {\n\n\t\t\t\t// the current material requires lighting info\n\n\t\t\t\t// note: all lighting uniforms are always set correctly\n\t\t\t\t// they simply reference the renderer's state for their\n\t\t\t\t// values\n\t\t\t\t//\n\t\t\t\t// use the current material's .needsUpdate flags to set\n\t\t\t\t// the GL state when required\n\n\t\t\t\tmarkUniformsLightsNeedsUpdate( m_uniforms, refreshLights );\n\n\t\t\t}\n\n\t\t\t// refresh uniforms common to several materials\n\n\t\t\tif ( fog && material.fog ) {\n\n\t\t\t\trefreshUniformsFog( m_uniforms, fog );\n\n\t\t\t}\n\n\t\t\tif ( material.isMeshBasicMaterial ||\n\t\t\t material.isMeshLambertMaterial ||\n\t\t\t material.isMeshPhongMaterial ||\n\t\t\t material.isMeshStandardMaterial ||\n\t\t\t material.isMeshDepthMaterial ) {\n\n\t\t\t\trefreshUniformsCommon( m_uniforms, material );\n\n\t\t\t}\n\n\t\t\t// refresh single material specific uniforms\n\n\t\t\tif ( material.isLineBasicMaterial ) {\n\n\t\t\t\trefreshUniformsLine( m_uniforms, material );\n\n\t\t\t} else if ( material.isLineDashedMaterial ) {\n\n\t\t\t\trefreshUniformsLine( m_uniforms, material );\n\t\t\t\trefreshUniformsDash( m_uniforms, material );\n\n\t\t\t} else if ( material.isPointsMaterial ) {\n\n\t\t\t\trefreshUniformsPoints( m_uniforms, material );\n\n\t\t\t} else if ( material.isMeshLambertMaterial ) {\n\n\t\t\t\trefreshUniformsLambert( m_uniforms, material );\n\n\t\t\t} else if ( material.isMeshPhongMaterial ) {\n\n\t\t\t\trefreshUniformsPhong( m_uniforms, material );\n\n\t\t\t} else if ( material.isMeshPhysicalMaterial ) {\n\n\t\t\t\trefreshUniformsPhysical( m_uniforms, material );\n\n\t\t\t} else if ( material.isMeshStandardMaterial ) {\n\n\t\t\t\trefreshUniformsStandard( m_uniforms, material );\n\n\t\t\t} else if ( material.isMeshDepthMaterial ) {\n\n\t\t\t\tif ( material.displacementMap ) {\n\n\t\t\t\t\tm_uniforms.displacementMap.value = material.displacementMap;\n\t\t\t\t\tm_uniforms.displacementScale.value = material.displacementScale;\n\t\t\t\t\tm_uniforms.displacementBias.value = material.displacementBias;\n\n\t\t\t\t}\n\n\t\t\t} else if ( material.isMeshNormalMaterial ) {\n\n\t\t\t\tm_uniforms.opacity.value = material.opacity;\n\n\t\t\t}\n\n\t\t\tWebGLUniforms.upload(\n\t\t\t\t\t_gl, materialProperties.uniformsList, m_uniforms, _this );\n\n\t\t}\n\n\n\t\t// common matrices\n\n\t\tp_uniforms.set( _gl, object, 'modelViewMatrix' );\n\t\tp_uniforms.set( _gl, object, 'normalMatrix' );\n\t\tp_uniforms.setValue( _gl, 'modelMatrix', object.matrixWorld );\n\n\t\treturn program;\n\n\t}\n\n\t// Uniforms (refresh uniforms objects)\n\n\tfunction refreshUniformsCommon( uniforms, material ) {\n\n\t\tuniforms.opacity.value = material.opacity;\n\n\t\tuniforms.diffuse.value = material.color;\n\n\t\tif ( material.emissive ) {\n\n\t\t\tuniforms.emissive.value.copy( material.emissive ).multiplyScalar( material.emissiveIntensity );\n\n\t\t}\n\n\t\tuniforms.map.value = material.map;\n\t\tuniforms.specularMap.value = material.specularMap;\n\t\tuniforms.alphaMap.value = material.alphaMap;\n\n\t\tif ( material.aoMap ) {\n\n\t\t\tuniforms.aoMap.value = material.aoMap;\n\t\t\tuniforms.aoMapIntensity.value = material.aoMapIntensity;\n\n\t\t}\n\n\t\t// uv repeat and offset setting priorities\n\t\t// 1. color map\n\t\t// 2. specular map\n\t\t// 3. normal map\n\t\t// 4. bump map\n\t\t// 5. alpha map\n\t\t// 6. emissive map\n\n\t\tvar uvScaleMap;\n\n\t\tif ( material.map ) {\n\n\t\t\tuvScaleMap = material.map;\n\n\t\t} else if ( material.specularMap ) {\n\n\t\t\tuvScaleMap = material.specularMap;\n\n\t\t} else if ( material.displacementMap ) {\n\n\t\t\tuvScaleMap = material.displacementMap;\n\n\t\t} else if ( material.normalMap ) {\n\n\t\t\tuvScaleMap = material.normalMap;\n\n\t\t} else if ( material.bumpMap ) {\n\n\t\t\tuvScaleMap = material.bumpMap;\n\n\t\t} else if ( material.roughnessMap ) {\n\n\t\t\tuvScaleMap = material.roughnessMap;\n\n\t\t} else if ( material.metalnessMap ) {\n\n\t\t\tuvScaleMap = material.metalnessMap;\n\n\t\t} else if ( material.alphaMap ) {\n\n\t\t\tuvScaleMap = material.alphaMap;\n\n\t\t} else if ( material.emissiveMap ) {\n\n\t\t\tuvScaleMap = material.emissiveMap;\n\n\t\t}\n\n\t\tif ( uvScaleMap !== undefined ) {\n\n\t\t\t// backwards compatibility\n\t\t\tif ( uvScaleMap.isWebGLRenderTarget ) {\n\n\t\t\t\tuvScaleMap = uvScaleMap.texture;\n\n\t\t\t}\n\n\t\t\tvar offset = uvScaleMap.offset;\n\t\t\tvar repeat = uvScaleMap.repeat;\n\n\t\t\tuniforms.offsetRepeat.value.set( offset.x, offset.y, repeat.x, repeat.y );\n\n\t\t}\n\n\t\tuniforms.envMap.value = material.envMap;\n\n\t\t// don't flip CubeTexture envMaps, flip everything else:\n\t\t// WebGLRenderTargetCube will be flipped for backwards compatibility\n\t\t// WebGLRenderTargetCube.texture will be flipped because it's a Texture and NOT a CubeTexture\n\t\t// this check must be handled differently, or removed entirely, if WebGLRenderTargetCube uses a CubeTexture in the future\n\t\tuniforms.flipEnvMap.value = ( ! ( material.envMap && material.envMap.isCubeTexture ) ) ? 1 : - 1;\n\n\t\tuniforms.reflectivity.value = material.reflectivity;\n\t\tuniforms.refractionRatio.value = material.refractionRatio;\n\n\t}\n\n\tfunction refreshUniformsLine( uniforms, material ) {\n\n\t\tuniforms.diffuse.value = material.color;\n\t\tuniforms.opacity.value = material.opacity;\n\n\t}\n\n\tfunction refreshUniformsDash( uniforms, material ) {\n\n\t\tuniforms.dashSize.value = material.dashSize;\n\t\tuniforms.totalSize.value = material.dashSize + material.gapSize;\n\t\tuniforms.scale.value = material.scale;\n\n\t}\n\n\tfunction refreshUniformsPoints( uniforms, material ) {\n\n\t\tuniforms.diffuse.value = material.color;\n\t\tuniforms.opacity.value = material.opacity;\n\t\tuniforms.size.value = material.size * _pixelRatio;\n\t\tuniforms.scale.value = _height * 0.5;\n\n\t\tuniforms.map.value = material.map;\n\n\t\tif ( material.map !== null ) {\n\n\t\t\tvar offset = material.map.offset;\n\t\t\tvar repeat = material.map.repeat;\n\n\t\t\tuniforms.offsetRepeat.value.set( offset.x, offset.y, repeat.x, repeat.y );\n\n\t\t}\n\n\t}\n\n\tfunction refreshUniformsFog( uniforms, fog ) {\n\n\t\tuniforms.fogColor.value = fog.color;\n\n\t\tif ( fog.isFog ) {\n\n\t\t\tuniforms.fogNear.value = fog.near;\n\t\t\tuniforms.fogFar.value = fog.far;\n\n\t\t} else if ( fog.isFogExp2 ) {\n\n\t\t\tuniforms.fogDensity.value = fog.density;\n\n\t\t}\n\n\t}\n\n\tfunction refreshUniformsLambert( uniforms, material ) {\n\n\t\tif ( material.lightMap ) {\n\n\t\t\tuniforms.lightMap.value = material.lightMap;\n\t\t\tuniforms.lightMapIntensity.value = material.lightMapIntensity;\n\n\t\t}\n\n\t\tif ( material.emissiveMap ) {\n\n\t\t\tuniforms.emissiveMap.value = material.emissiveMap;\n\n\t\t}\n\n\t}\n\n\tfunction refreshUniformsPhong( uniforms, material ) {\n\n\t\tuniforms.specular.value = material.specular;\n\t\tuniforms.shininess.value = Math.max( material.shininess, 1e-4 ); // to prevent pow( 0.0, 0.0 )\n\n\t\tif ( material.lightMap ) {\n\n\t\t\tuniforms.lightMap.value = material.lightMap;\n\t\t\tuniforms.lightMapIntensity.value = material.lightMapIntensity;\n\n\t\t}\n\n\t\tif ( material.emissiveMap ) {\n\n\t\t\tuniforms.emissiveMap.value = material.emissiveMap;\n\n\t\t}\n\n\t\tif ( material.bumpMap ) {\n\n\t\t\tuniforms.bumpMap.value = material.bumpMap;\n\t\t\tuniforms.bumpScale.value = material.bumpScale;\n\n\t\t}\n\n\t\tif ( material.normalMap ) {\n\n\t\t\tuniforms.normalMap.value = material.normalMap;\n\t\t\tuniforms.normalScale.value.copy( material.normalScale );\n\n\t\t}\n\n\t\tif ( material.displacementMap ) {\n\n\t\t\tuniforms.displacementMap.value = material.displacementMap;\n\t\t\tuniforms.displacementScale.value = material.displacementScale;\n\t\t\tuniforms.displacementBias.value = material.displacementBias;\n\n\t\t}\n\n\t}\n\n\tfunction refreshUniformsStandard( uniforms, material ) {\n\n\t\tuniforms.roughness.value = material.roughness;\n\t\tuniforms.metalness.value = material.metalness;\n\n\t\tif ( material.roughnessMap ) {\n\n\t\t\tuniforms.roughnessMap.value = material.roughnessMap;\n\n\t\t}\n\n\t\tif ( material.metalnessMap ) {\n\n\t\t\tuniforms.metalnessMap.value = material.metalnessMap;\n\n\t\t}\n\n\t\tif ( material.lightMap ) {\n\n\t\t\tuniforms.lightMap.value = material.lightMap;\n\t\t\tuniforms.lightMapIntensity.value = material.lightMapIntensity;\n\n\t\t}\n\n\t\tif ( material.emissiveMap ) {\n\n\t\t\tuniforms.emissiveMap.value = material.emissiveMap;\n\n\t\t}\n\n\t\tif ( material.bumpMap ) {\n\n\t\t\tuniforms.bumpMap.value = material.bumpMap;\n\t\t\tuniforms.bumpScale.value = material.bumpScale;\n\n\t\t}\n\n\t\tif ( material.normalMap ) {\n\n\t\t\tuniforms.normalMap.value = material.normalMap;\n\t\t\tuniforms.normalScale.value.copy( material.normalScale );\n\n\t\t}\n\n\t\tif ( material.displacementMap ) {\n\n\t\t\tuniforms.displacementMap.value = material.displacementMap;\n\t\t\tuniforms.displacementScale.value = material.displacementScale;\n\t\t\tuniforms.displacementBias.value = material.displacementBias;\n\n\t\t}\n\n\t\tif ( material.envMap ) {\n\n\t\t\t//uniforms.envMap.value = material.envMap; // part of uniforms common\n\t\t\tuniforms.envMapIntensity.value = material.envMapIntensity;\n\n\t\t}\n\n\t}\n\n\tfunction refreshUniformsPhysical( uniforms, material ) {\n\n\t\tuniforms.clearCoat.value = material.clearCoat;\n\t\tuniforms.clearCoatRoughness.value = material.clearCoatRoughness;\n\n\t\trefreshUniformsStandard( uniforms, material );\n\n\t}\n\n\t// If uniforms are marked as clean, they don't need to be loaded to the GPU.\n\n\tfunction markUniformsLightsNeedsUpdate( uniforms, value ) {\n\n\t\tuniforms.ambientLightColor.needsUpdate = value;\n\n\t\tuniforms.directionalLights.needsUpdate = value;\n\t\tuniforms.pointLights.needsUpdate = value;\n\t\tuniforms.spotLights.needsUpdate = value;\n\t\tuniforms.hemisphereLights.needsUpdate = value;\n\n\t}\n\n\t// Lighting\n\n\tfunction setupShadows( lights ) {\n\n\t\tvar lightShadowsLength = 0;\n\n\t\tfor ( var i = 0, l = lights.length; i < l; i ++ ) {\n\n\t\t\tvar light = lights[ i ];\n\n\t\t\tif ( light.castShadow ) {\n\n\t\t\t\t_lights.shadows[ lightShadowsLength ++ ] = light;\n\n\t\t\t}\n\n\t\t}\n\n\t\t_lights.shadows.length = lightShadowsLength;\n\n\t}\n\n\tfunction setupLights( lights, camera ) {\n\n\t\tvar l, ll, light,\n\t\tr = 0, g = 0, b = 0,\n\t\tcolor,\n\t\tintensity,\n\t\tdistance,\n\t\tshadowMap,\n\n\t\tviewMatrix = camera.matrixWorldInverse,\n\n\t\tdirectionalLength = 0,\n\t\tpointLength = 0,\n\t\tspotLength = 0,\n\t\themiLength = 0;\n\n\t\tfor ( l = 0, ll = lights.length; l < ll; l ++ ) {\n\n\t\t\tlight = lights[ l ];\n\n\t\t\tcolor = light.color;\n\t\t\tintensity = light.intensity;\n\t\t\tdistance = light.distance;\n\n\t\t\tshadowMap = ( light.shadow && light.shadow.map ) ? light.shadow.map.texture : null;\n\n\t\t\tif ( light.isAmbientLight ) {\n\n\t\t\t\tr += color.r * intensity;\n\t\t\t\tg += color.g * intensity;\n\t\t\t\tb += color.b * intensity;\n\n\t\t\t} else if ( light.isDirectionalLight ) {\n\n\t\t\t\tvar uniforms = lightCache.get( light );\n\n\t\t\t\tuniforms.color.copy( light.color ).multiplyScalar( light.intensity );\n\t\t\t\tuniforms.direction.setFromMatrixPosition( light.matrixWorld );\n\t\t\t\t_vector3.setFromMatrixPosition( light.target.matrixWorld );\n\t\t\t\tuniforms.direction.sub( _vector3 );\n\t\t\t\tuniforms.direction.transformDirection( viewMatrix );\n\n\t\t\t\tuniforms.shadow = light.castShadow;\n\n\t\t\t\tif ( light.castShadow ) {\n\n\t\t\t\t\tuniforms.shadowBias = light.shadow.bias;\n\t\t\t\t\tuniforms.shadowRadius = light.shadow.radius;\n\t\t\t\t\tuniforms.shadowMapSize = light.shadow.mapSize;\n\n\t\t\t\t}\n\n\t\t\t\t_lights.directionalShadowMap[ directionalLength ] = shadowMap;\n\t\t\t\t_lights.directionalShadowMatrix[ directionalLength ] = light.shadow.matrix;\n\t\t\t\t_lights.directional[ directionalLength ++ ] = uniforms;\n\n\t\t\t} else if ( light.isSpotLight ) {\n\n\t\t\t\tvar uniforms = lightCache.get( light );\n\n\t\t\t\tuniforms.position.setFromMatrixPosition( light.matrixWorld );\n\t\t\t\tuniforms.position.applyMatrix4( viewMatrix );\n\n\t\t\t\tuniforms.color.copy( color ).multiplyScalar( intensity );\n\t\t\t\tuniforms.distance = distance;\n\n\t\t\t\tuniforms.direction.setFromMatrixPosition( light.matrixWorld );\n\t\t\t\t_vector3.setFromMatrixPosition( light.target.matrixWorld );\n\t\t\t\tuniforms.direction.sub( _vector3 );\n\t\t\t\tuniforms.direction.transformDirection( viewMatrix );\n\n\t\t\t\tuniforms.coneCos = Math.cos( light.angle );\n\t\t\t\tuniforms.penumbraCos = Math.cos( light.angle * ( 1 - light.penumbra ) );\n\t\t\t\tuniforms.decay = ( light.distance === 0 ) ? 0.0 : light.decay;\n\n\t\t\t\tuniforms.shadow = light.castShadow;\n\n\t\t\t\tif ( light.castShadow ) {\n\n\t\t\t\t\tuniforms.shadowBias = light.shadow.bias;\n\t\t\t\t\tuniforms.shadowRadius = light.shadow.radius;\n\t\t\t\t\tuniforms.shadowMapSize = light.shadow.mapSize;\n\n\t\t\t\t}\n\n\t\t\t\t_lights.spotShadowMap[ spotLength ] = shadowMap;\n\t\t\t\t_lights.spotShadowMatrix[ spotLength ] = light.shadow.matrix;\n\t\t\t\t_lights.spot[ spotLength ++ ] = uniforms;\n\n\t\t\t} else if ( light.isPointLight ) {\n\n\t\t\t\tvar uniforms = lightCache.get( light );\n\n\t\t\t\tuniforms.position.setFromMatrixPosition( light.matrixWorld );\n\t\t\t\tuniforms.position.applyMatrix4( viewMatrix );\n\n\t\t\t\tuniforms.color.copy( light.color ).multiplyScalar( light.intensity );\n\t\t\t\tuniforms.distance = light.distance;\n\t\t\t\tuniforms.decay = ( light.distance === 0 ) ? 0.0 : light.decay;\n\n\t\t\t\tuniforms.shadow = light.castShadow;\n\n\t\t\t\tif ( light.castShadow ) {\n\n\t\t\t\t\tuniforms.shadowBias = light.shadow.bias;\n\t\t\t\t\tuniforms.shadowRadius = light.shadow.radius;\n\t\t\t\t\tuniforms.shadowMapSize = light.shadow.mapSize;\n\n\t\t\t\t}\n\n\t\t\t\t_lights.pointShadowMap[ pointLength ] = shadowMap;\n\n\t\t\t\tif ( _lights.pointShadowMatrix[ pointLength ] === undefined ) {\n\n\t\t\t\t\t_lights.pointShadowMatrix[ pointLength ] = new Matrix4();\n\n\t\t\t\t}\n\n\t\t\t\t// for point lights we set the shadow matrix to be a translation-only matrix\n\t\t\t\t// equal to inverse of the light's position\n\t\t\t\t_vector3.setFromMatrixPosition( light.matrixWorld ).negate();\n\t\t\t\t_lights.pointShadowMatrix[ pointLength ].identity().setPosition( _vector3 );\n\n\t\t\t\t_lights.point[ pointLength ++ ] = uniforms;\n\n\t\t\t} else if ( light.isHemisphereLight ) {\n\n\t\t\t\tvar uniforms = lightCache.get( light );\n\n\t\t\t\tuniforms.direction.setFromMatrixPosition( light.matrixWorld );\n\t\t\t\tuniforms.direction.transformDirection( viewMatrix );\n\t\t\t\tuniforms.direction.normalize();\n\n\t\t\t\tuniforms.skyColor.copy( light.color ).multiplyScalar( intensity );\n\t\t\t\tuniforms.groundColor.copy( light.groundColor ).multiplyScalar( intensity );\n\n\t\t\t\t_lights.hemi[ hemiLength ++ ] = uniforms;\n\n\t\t\t}\n\n\t\t}\n\n\t\t_lights.ambient[ 0 ] = r;\n\t\t_lights.ambient[ 1 ] = g;\n\t\t_lights.ambient[ 2 ] = b;\n\n\t\t_lights.directional.length = directionalLength;\n\t\t_lights.spot.length = spotLength;\n\t\t_lights.point.length = pointLength;\n\t\t_lights.hemi.length = hemiLength;\n\n\t\t_lights.hash = directionalLength + ',' + pointLength + ',' + spotLength + ',' + hemiLength + ',' + _lights.shadows.length;\n\n\t}\n\n\t// GL state setting\n\n\tthis.setFaceCulling = function ( cullFace, frontFaceDirection ) {\n\n\t\tstate.setCullFace( cullFace );\n\t\tstate.setFlipSided( frontFaceDirection === FrontFaceDirectionCW );\n\n\t};\n\n\t// Textures\n\n\tfunction allocTextureUnit() {\n\n\t\tvar textureUnit = _usedTextureUnits;\n\n\t\tif ( textureUnit >= capabilities.maxTextures ) {\n\n\t\t\tconsole.warn( 'WebGLRenderer: trying to use ' + textureUnit + ' texture units while this GPU supports only ' + capabilities.maxTextures );\n\n\t\t}\n\n\t\t_usedTextureUnits += 1;\n\n\t\treturn textureUnit;\n\n\t}\n\n\tthis.allocTextureUnit = allocTextureUnit;\n\n\t// this.setTexture2D = setTexture2D;\n\tthis.setTexture2D = ( function() {\n\n\t\tvar warned = false;\n\n\t\t// backwards compatibility: peel texture.texture\n\t\treturn function setTexture2D( texture, slot ) {\n\n\t\t\tif ( texture && texture.isWebGLRenderTarget ) {\n\n\t\t\t\tif ( ! warned ) {\n\n\t\t\t\t\tconsole.warn( \"THREE.WebGLRenderer.setTexture2D: don't use render targets as textures. Use their .texture property instead.\" );\n\t\t\t\t\twarned = true;\n\n\t\t\t\t}\n\n\t\t\t\ttexture = texture.texture;\n\n\t\t\t}\n\n\t\t\ttextures.setTexture2D( texture, slot );\n\n\t\t};\n\n\t}() );\n\n\tthis.setTexture = ( function() {\n\n\t\tvar warned = false;\n\n\t\treturn function setTexture( texture, slot ) {\n\n\t\t\tif ( ! warned ) {\n\n\t\t\t\tconsole.warn( \"THREE.WebGLRenderer: .setTexture is deprecated, use setTexture2D instead.\" );\n\t\t\t\twarned = true;\n\n\t\t\t}\n\n\t\t\ttextures.setTexture2D( texture, slot );\n\n\t\t};\n\n\t}() );\n\n\tthis.setTextureCube = ( function() {\n\n\t\tvar warned = false;\n\n\t\treturn function setTextureCube( texture, slot ) {\n\n\t\t\t// backwards compatibility: peel texture.texture\n\t\t\tif ( texture && texture.isWebGLRenderTargetCube ) {\n\n\t\t\t\tif ( ! warned ) {\n\n\t\t\t\t\tconsole.warn( \"THREE.WebGLRenderer.setTextureCube: don't use cube render targets as textures. Use their .texture property instead.\" );\n\t\t\t\t\twarned = true;\n\n\t\t\t\t}\n\n\t\t\t\ttexture = texture.texture;\n\n\t\t\t}\n\n\t\t\t// currently relying on the fact that WebGLRenderTargetCube.texture is a Texture and NOT a CubeTexture\n\t\t\t// TODO: unify these code paths\n\t\t\tif ( ( texture && texture.isCubeTexture ) ||\n\t\t\t\t ( Array.isArray( texture.image ) && texture.image.length === 6 ) ) {\n\n\t\t\t\t// CompressedTexture can have Array in image :/\n\n\t\t\t\t// this function alone should take care of cube textures\n\t\t\t\ttextures.setTextureCube( texture, slot );\n\n\t\t\t} else {\n\n\t\t\t\t// assumed: texture property of THREE.WebGLRenderTargetCube\n\n\t\t\t\ttextures.setTextureCubeDynamic( texture, slot );\n\n\t\t\t}\n\n\t\t};\n\n\t}() );\n\n\tthis.getCurrentRenderTarget = function() {\n\n\t\treturn _currentRenderTarget;\n\n\t};\n\n\tthis.setRenderTarget = function ( renderTarget ) {\n\n\t\t_currentRenderTarget = renderTarget;\n\n\t\tif ( renderTarget && properties.get( renderTarget ).__webglFramebuffer === undefined ) {\n\n\t\t\ttextures.setupRenderTarget( renderTarget );\n\n\t\t}\n\n\t\tvar isCube = ( renderTarget && renderTarget.isWebGLRenderTargetCube );\n\t\tvar framebuffer;\n\n\t\tif ( renderTarget ) {\n\n\t\t\tvar renderTargetProperties = properties.get( renderTarget );\n\n\t\t\tif ( isCube ) {\n\n\t\t\t\tframebuffer = renderTargetProperties.__webglFramebuffer[ renderTarget.activeCubeFace ];\n\n\t\t\t} else {\n\n\t\t\t\tframebuffer = renderTargetProperties.__webglFramebuffer;\n\n\t\t\t}\n\n\t\t\t_currentScissor.copy( renderTarget.scissor );\n\t\t\t_currentScissorTest = renderTarget.scissorTest;\n\n\t\t\t_currentViewport.copy( renderTarget.viewport );\n\n\t\t} else {\n\n\t\t\tframebuffer = null;\n\n\t\t\t_currentScissor.copy( _scissor ).multiplyScalar( _pixelRatio );\n\t\t\t_currentScissorTest = _scissorTest;\n\n\t\t\t_currentViewport.copy( _viewport ).multiplyScalar( _pixelRatio );\n\n\t\t}\n\n\t\tif ( _currentFramebuffer !== framebuffer ) {\n\n\t\t\t_gl.bindFramebuffer( _gl.FRAMEBUFFER, framebuffer );\n\t\t\t_currentFramebuffer = framebuffer;\n\n\t\t}\n\n\t\tstate.scissor( _currentScissor );\n\t\tstate.setScissorTest( _currentScissorTest );\n\n\t\tstate.viewport( _currentViewport );\n\n\t\tif ( isCube ) {\n\n\t\t\tvar textureProperties = properties.get( renderTarget.texture );\n\t\t\t_gl.framebufferTexture2D( _gl.FRAMEBUFFER, _gl.COLOR_ATTACHMENT0, _gl.TEXTURE_CUBE_MAP_POSITIVE_X + renderTarget.activeCubeFace, textureProperties.__webglTexture, renderTarget.activeMipMapLevel );\n\n\t\t}\n\n\t};\n\n\tthis.readRenderTargetPixels = function ( renderTarget, x, y, width, height, buffer ) {\n\n\t\tif ( ( renderTarget && renderTarget.isWebGLRenderTarget ) === false ) {\n\n\t\t\tconsole.error( 'THREE.WebGLRenderer.readRenderTargetPixels: renderTarget is not THREE.WebGLRenderTarget.' );\n\t\t\treturn;\n\n\t\t}\n\n\t\tvar framebuffer = properties.get( renderTarget ).__webglFramebuffer;\n\n\t\tif ( framebuffer ) {\n\n\t\t\tvar restore = false;\n\n\t\t\tif ( framebuffer !== _currentFramebuffer ) {\n\n\t\t\t\t_gl.bindFramebuffer( _gl.FRAMEBUFFER, framebuffer );\n\n\t\t\t\trestore = true;\n\n\t\t\t}\n\n\t\t\ttry {\n\n\t\t\t\tvar texture = renderTarget.texture;\n\t\t\t\tvar textureFormat = texture.format;\n\t\t\t\tvar textureType = texture.type;\n\n\t\t\t\tif ( textureFormat !== RGBAFormat && paramThreeToGL( textureFormat ) !== _gl.getParameter( _gl.IMPLEMENTATION_COLOR_READ_FORMAT ) ) {\n\n\t\t\t\t\tconsole.error( 'THREE.WebGLRenderer.readRenderTargetPixels: renderTarget is not in RGBA or implementation defined format.' );\n\t\t\t\t\treturn;\n\n\t\t\t\t}\n\n\t\t\t\tif ( textureType !== UnsignedByteType && paramThreeToGL( textureType ) !== _gl.getParameter( _gl.IMPLEMENTATION_COLOR_READ_TYPE ) && // IE11, Edge and Chrome Mac < 52 (#9513)\n\t\t\t\t ! ( textureType === FloatType && ( extensions.get( 'OES_texture_float' ) || extensions.get( 'WEBGL_color_buffer_float' ) ) ) && // Chrome Mac >= 52 and Firefox\n\t\t\t\t ! ( textureType === HalfFloatType && extensions.get( 'EXT_color_buffer_half_float' ) ) ) {\n\n\t\t\t\t\tconsole.error( 'THREE.WebGLRenderer.readRenderTargetPixels: renderTarget is not in UnsignedByteType or implementation defined type.' );\n\t\t\t\t\treturn;\n\n\t\t\t\t}\n\n\t\t\t\tif ( _gl.checkFramebufferStatus( _gl.FRAMEBUFFER ) === _gl.FRAMEBUFFER_COMPLETE ) {\n\n\t\t\t\t\t// the following if statement ensures valid read requests (no out-of-bounds pixels, see #8604)\n\n\t\t\t\t\tif ( ( x >= 0 && x <= ( renderTarget.width - width ) ) && ( y >= 0 && y <= ( renderTarget.height - height ) ) ) {\n\n\t\t\t\t\t\t_gl.readPixels( x, y, width, height, paramThreeToGL( textureFormat ), paramThreeToGL( textureType ), buffer );\n\n\t\t\t\t\t}\n\n\t\t\t\t} else {\n\n\t\t\t\t\tconsole.error( 'THREE.WebGLRenderer.readRenderTargetPixels: readPixels from renderTarget failed. Framebuffer not complete.' );\n\n\t\t\t\t}\n\n\t\t\t} finally {\n\n\t\t\t\tif ( restore ) {\n\n\t\t\t\t\t_gl.bindFramebuffer( _gl.FRAMEBUFFER, _currentFramebuffer );\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t}\n\n\t};\n\n\t// Map three.js constants to WebGL constants\n\n\tfunction paramThreeToGL( p ) {\n\n\t\tvar extension;\n\n\t\tif ( p === RepeatWrapping ) return _gl.REPEAT;\n\t\tif ( p === ClampToEdgeWrapping ) return _gl.CLAMP_TO_EDGE;\n\t\tif ( p === MirroredRepeatWrapping ) return _gl.MIRRORED_REPEAT;\n\n\t\tif ( p === NearestFilter ) return _gl.NEAREST;\n\t\tif ( p === NearestMipMapNearestFilter ) return _gl.NEAREST_MIPMAP_NEAREST;\n\t\tif ( p === NearestMipMapLinearFilter ) return _gl.NEAREST_MIPMAP_LINEAR;\n\n\t\tif ( p === LinearFilter ) return _gl.LINEAR;\n\t\tif ( p === LinearMipMapNearestFilter ) return _gl.LINEAR_MIPMAP_NEAREST;\n\t\tif ( p === LinearMipMapLinearFilter ) return _gl.LINEAR_MIPMAP_LINEAR;\n\n\t\tif ( p === UnsignedByteType ) return _gl.UNSIGNED_BYTE;\n\t\tif ( p === UnsignedShort4444Type ) return _gl.UNSIGNED_SHORT_4_4_4_4;\n\t\tif ( p === UnsignedShort5551Type ) return _gl.UNSIGNED_SHORT_5_5_5_1;\n\t\tif ( p === UnsignedShort565Type ) return _gl.UNSIGNED_SHORT_5_6_5;\n\n\t\tif ( p === ByteType ) return _gl.BYTE;\n\t\tif ( p === ShortType ) return _gl.SHORT;\n\t\tif ( p === UnsignedShortType ) return _gl.UNSIGNED_SHORT;\n\t\tif ( p === IntType ) return _gl.INT;\n\t\tif ( p === UnsignedIntType ) return _gl.UNSIGNED_INT;\n\t\tif ( p === FloatType ) return _gl.FLOAT;\n\n\t\tif ( p === HalfFloatType ) {\n\n\t\t\textension = extensions.get( 'OES_texture_half_float' );\n\n\t\t\tif ( extension !== null ) return extension.HALF_FLOAT_OES;\n\n\t\t}\n\n\t\tif ( p === AlphaFormat ) return _gl.ALPHA;\n\t\tif ( p === RGBFormat ) return _gl.RGB;\n\t\tif ( p === RGBAFormat ) return _gl.RGBA;\n\t\tif ( p === LuminanceFormat ) return _gl.LUMINANCE;\n\t\tif ( p === LuminanceAlphaFormat ) return _gl.LUMINANCE_ALPHA;\n\t\tif ( p === DepthFormat ) return _gl.DEPTH_COMPONENT;\n\t\tif ( p === DepthStencilFormat ) return _gl.DEPTH_STENCIL;\n\n\t\tif ( p === AddEquation ) return _gl.FUNC_ADD;\n\t\tif ( p === SubtractEquation ) return _gl.FUNC_SUBTRACT;\n\t\tif ( p === ReverseSubtractEquation ) return _gl.FUNC_REVERSE_SUBTRACT;\n\n\t\tif ( p === ZeroFactor ) return _gl.ZERO;\n\t\tif ( p === OneFactor ) return _gl.ONE;\n\t\tif ( p === SrcColorFactor ) return _gl.SRC_COLOR;\n\t\tif ( p === OneMinusSrcColorFactor ) return _gl.ONE_MINUS_SRC_COLOR;\n\t\tif ( p === SrcAlphaFactor ) return _gl.SRC_ALPHA;\n\t\tif ( p === OneMinusSrcAlphaFactor ) return _gl.ONE_MINUS_SRC_ALPHA;\n\t\tif ( p === DstAlphaFactor ) return _gl.DST_ALPHA;\n\t\tif ( p === OneMinusDstAlphaFactor ) return _gl.ONE_MINUS_DST_ALPHA;\n\n\t\tif ( p === DstColorFactor ) return _gl.DST_COLOR;\n\t\tif ( p === OneMinusDstColorFactor ) return _gl.ONE_MINUS_DST_COLOR;\n\t\tif ( p === SrcAlphaSaturateFactor ) return _gl.SRC_ALPHA_SATURATE;\n\n\t\tif ( p === RGB_S3TC_DXT1_Format || p === RGBA_S3TC_DXT1_Format ||\n\t\t\tp === RGBA_S3TC_DXT3_Format || p === RGBA_S3TC_DXT5_Format ) {\n\n\t\t\textension = extensions.get( 'WEBGL_compressed_texture_s3tc' );\n\n\t\t\tif ( extension !== null ) {\n\n\t\t\t\tif ( p === RGB_S3TC_DXT1_Format ) return extension.COMPRESSED_RGB_S3TC_DXT1_EXT;\n\t\t\t\tif ( p === RGBA_S3TC_DXT1_Format ) return extension.COMPRESSED_RGBA_S3TC_DXT1_EXT;\n\t\t\t\tif ( p === RGBA_S3TC_DXT3_Format ) return extension.COMPRESSED_RGBA_S3TC_DXT3_EXT;\n\t\t\t\tif ( p === RGBA_S3TC_DXT5_Format ) return extension.COMPRESSED_RGBA_S3TC_DXT5_EXT;\n\n\t\t\t}\n\n\t\t}\n\n\t\tif ( p === RGB_PVRTC_4BPPV1_Format || p === RGB_PVRTC_2BPPV1_Format ||\n\t\t\t p === RGBA_PVRTC_4BPPV1_Format || p === RGBA_PVRTC_2BPPV1_Format ) {\n\n\t\t\textension = extensions.get( 'WEBGL_compressed_texture_pvrtc' );\n\n\t\t\tif ( extension !== null ) {\n\n\t\t\t\tif ( p === RGB_PVRTC_4BPPV1_Format ) return extension.COMPRESSED_RGB_PVRTC_4BPPV1_IMG;\n\t\t\t\tif ( p === RGB_PVRTC_2BPPV1_Format ) return extension.COMPRESSED_RGB_PVRTC_2BPPV1_IMG;\n\t\t\t\tif ( p === RGBA_PVRTC_4BPPV1_Format ) return extension.COMPRESSED_RGBA_PVRTC_4BPPV1_IMG;\n\t\t\t\tif ( p === RGBA_PVRTC_2BPPV1_Format ) return extension.COMPRESSED_RGBA_PVRTC_2BPPV1_IMG;\n\n\t\t\t}\n\n\t\t}\n\n\t\tif ( p === RGB_ETC1_Format ) {\n\n\t\t\textension = extensions.get( 'WEBGL_compressed_texture_etc1' );\n\n\t\t\tif ( extension !== null ) return extension.COMPRESSED_RGB_ETC1_WEBGL;\n\n\t\t}\n\n\t\tif ( p === MinEquation || p === MaxEquation ) {\n\n\t\t\textension = extensions.get( 'EXT_blend_minmax' );\n\n\t\t\tif ( extension !== null ) {\n\n\t\t\t\tif ( p === MinEquation ) return extension.MIN_EXT;\n\t\t\t\tif ( p === MaxEquation ) return extension.MAX_EXT;\n\n\t\t\t}\n\n\t\t}\n\n\t\tif ( p === UnsignedInt248Type ) {\n\n\t\t\textension = extensions.get( 'WEBGL_depth_texture' );\n\n\t\t\tif ( extension !== null ) return extension.UNSIGNED_INT_24_8_WEBGL;\n\n\t\t}\n\n\t\treturn 0;\n\n\t}\n\n}\n\nexport { WebGLRenderer };\n","/**\n * @author mrdoob / http://mrdoob.com/\n */\n\nimport { REVISION } from '../constants';\nimport { WebGLExtensions } from './webgl/WebGLExtensions';\nimport { WebGLState } from './webgl/WebGLState';\nimport { Color } from '../math/Color';\nimport { Vector4 } from '../math/Vector4';\n\nfunction WebGL2Renderer( parameters ) {\n\n\tconsole.log( 'THREE.WebGL2Renderer', REVISION );\n\n\tparameters = parameters || {};\n\n\tvar _canvas = parameters.canvas !== undefined ? parameters.canvas : document.createElementNS( 'http://www.w3.org/1999/xhtml', 'canvas' ),\n\t_context = parameters.context !== undefined ? parameters.context : null,\n\n\t_alpha = parameters.alpha !== undefined ? parameters.alpha : false,\n\t_depth = parameters.depth !== undefined ? parameters.depth : true,\n\t_stencil = parameters.stencil !== undefined ? parameters.stencil : true,\n\t_antialias = parameters.antialias !== undefined ? parameters.antialias : false,\n\t_premultipliedAlpha = parameters.premultipliedAlpha !== undefined ? parameters.premultipliedAlpha : true,\n\t_preserveDrawingBuffer = parameters.preserveDrawingBuffer !== undefined ? parameters.preserveDrawingBuffer : false;\n\n\t// initialize\n\n\tvar gl;\n\n\ttry {\n\n\t\tvar attributes = {\n\t\t\talpha: _alpha,\n\t\t\tdepth: _depth,\n\t\t\tstencil: _stencil,\n\t\t\tantialias: _antialias,\n\t\t\tpremultipliedAlpha: _premultipliedAlpha,\n\t\t\tpreserveDrawingBuffer: _preserveDrawingBuffer\n\t\t};\n\n\t\tgl = _context || _canvas.getContext( 'webgl2', attributes );\n\n\t\tif ( gl === null ) {\n\n\t\t\tif ( _canvas.getContext( 'webgl2' ) !== null ) {\n\n\t\t\t\tthrow 'Error creating WebGL2 context with your selected attributes.';\n\n\t\t\t} else {\n\n\t\t\t\tthrow 'Error creating WebGL2 context.';\n\n\t\t\t}\n\n\t\t}\n\n\t\t_canvas.addEventListener( 'webglcontextlost', onContextLost, false );\n\n\t} catch ( error ) {\n\n\t\tconsole.error( 'THREE.WebGL2Renderer: ' + error );\n\n\t}\n\n\t//\n\n\tvar _this = this,\n\n\t\t_autoClear = true,\n\t\t_autoClearColor = true,\n\t\t_autoClearDepth = true,\n\t\t_autoClearStencil = true,\n\n\t\t_clearColor = new Color( 0x000000 ),\n\t\t_clearAlpha = 0,\n\n\t\t_width = _canvas.width,\n\t\t_height = _canvas.height,\n\n\t\t_pixelRatio = 1,\n\n\t\t_viewport = new Vector4( 0, 0, _width, _height );\n\n\tvar extensions = new WebGLExtensions( gl );\n\tvar state = new WebGLState( gl, extensions, function () {} );\n\n\t//\n\n\tfunction clear( color, depth, stencil ) {\n\n\t\tvar bits = 0;\n\n\t\tif ( color === undefined || color ) bits |= gl.COLOR_BUFFER_BIT;\n\t\tif ( depth === undefined || depth ) bits |= gl.DEPTH_BUFFER_BIT;\n\t\tif ( stencil === undefined || stencil ) bits |= gl.STENCIL_BUFFER_BIT;\n\n\t\tgl.clear( bits );\n\n\t}\n\n\tfunction setPixelRatio( value ) {\n\n\t\tif ( value === undefined ) return;\n\n\t\t_pixelRatio = value;\n\n\t\tsetSize( _viewport.z, _viewport.w, false );\n\n\t}\n\n\tfunction setSize( width, height, updateStyle ) {\n\n\t\t_width = width;\n\t\t_height = height;\n\n\t\t_canvas.width = width * _pixelRatio;\n\t\t_canvas.height = height * _pixelRatio;\n\n\t\tif ( updateStyle !== false ) {\n\n\t\t\t_canvas.style.width = width + 'px';\n\t\t\t_canvas.style.height = height + 'px';\n\n\t\t}\n\n\t\tsetViewport( 0, 0, width, height );\n\n\t}\n\n\tfunction setViewport( x, y, width, height ) {\n\n\t\tstate.viewport( _viewport.set( x, y, width, height ) );\n\n\t}\n\n\tfunction render( scene, camera ) {\n\n\t\tif ( camera !== undefined && camera.isCamera !== true ) {\n\n\t\t\tconsole.error( 'THREE.WebGL2Renderer.render: camera is not an instance of THREE.Camera.' );\n\t\t\treturn;\n\n\t\t}\n\n\t\tvar background = scene.background;\n\t\tvar forceClear = false;\n\n\t\tif ( background === null ) {\n\n\t\t\tstate.buffers.color.setClear( _clearColor.r, _clearColor.g, _clearColor.b, _clearAlpha, _premultipliedAlpha );\n\n\t\t} else if ( background && background.isColor ) {\n\n\t\t\tstate.buffers.color.setClear( background.r, background.g, background.b, 1, _premultipliedAlpha );\n\t\t\tforceClear = true;\n\n\t\t}\n\n\t\tif ( _autoClear || forceClear ) {\n\n\t\t\tthis.clear( _autoClearColor, _autoClearDepth, _autoClearStencil );\n\n\t\t}\n\n\t}\n\n\tfunction onContextLost( event ) {\n\n\t\tevent.preventDefault();\n\n\t}\n\n\treturn {\n\t\tdomElement: _canvas,\n\n\t\tclear: clear,\n\t\tsetPixelRatio: setPixelRatio,\n\t\tsetSize: setSize,\n\t\trender: render\n\t}\n\n}\n\nexport { WebGL2Renderer };\n","import { Color } from '../math/Color';\n\n/**\n * @author mrdoob / http://mrdoob.com/\n * @author alteredq / http://alteredqualia.com/\n */\n\nfunction FogExp2 ( color, density ) {\n\n\tthis.name = '';\n\n\tthis.color = new Color( color );\n\tthis.density = ( density !== undefined ) ? density : 0.00025;\n\n}\n\nFogExp2.prototype.isFogExp2 = true;\n\nFogExp2.prototype.clone = function () {\n\n\treturn new FogExp2( this.color.getHex(), this.density );\n\n};\n\nFogExp2.prototype.toJSON = function ( meta ) {\n\n\treturn {\n\t\ttype: 'FogExp2',\n\t\tcolor: this.color.getHex(),\n\t\tdensity: this.density\n\t};\n\n};\n\nexport { FogExp2 };\n","import { Color } from '../math/Color';\n\n/**\n * @author mrdoob / http://mrdoob.com/\n * @author alteredq / http://alteredqualia.com/\n */\n\nfunction Fog ( color, near, far ) {\n\n\tthis.name = '';\n\n\tthis.color = new Color( color );\n\n\tthis.near = ( near !== undefined ) ? near : 1;\n\tthis.far = ( far !== undefined ) ? far : 1000;\n\n}\n\nFog.prototype.isFog = true;\n\nFog.prototype.clone = function () {\n\n\treturn new Fog( this.color.getHex(), this.near, this.far );\n\n};\n\nFog.prototype.toJSON = function ( meta ) {\n\n\treturn {\n\t\ttype: 'Fog',\n\t\tcolor: this.color.getHex(),\n\t\tnear: this.near,\n\t\tfar: this.far\n\t};\n\n};\n\nexport { Fog };\n","import { Object3D } from '../core/Object3D';\n\n/**\n * @author mrdoob / http://mrdoob.com/\n */\n\nfunction Scene () {\n\n\tObject3D.call( this );\n\n\tthis.type = 'Scene';\n\n\tthis.background = null;\n\tthis.fog = null;\n\tthis.overrideMaterial = null;\n\n\tthis.autoUpdate = true; // checked by the renderer\n\n}\n\nScene.prototype = Object.create( Object3D.prototype );\n\nScene.prototype.constructor = Scene;\n\nScene.prototype.copy = function ( source, recursive ) {\n\n\tObject3D.prototype.copy.call( this, source, recursive );\n\n\tif ( source.background !== null ) this.background = source.background.clone();\n\tif ( source.fog !== null ) this.fog = source.fog.clone();\n\tif ( source.overrideMaterial !== null ) this.overrideMaterial = source.overrideMaterial.clone();\n\n\tthis.autoUpdate = source.autoUpdate;\n\tthis.matrixAutoUpdate = source.matrixAutoUpdate;\n\n\treturn this;\n\n};\n\nScene.prototype.toJSON = function ( meta ) {\n\n\tvar data = Object3D.prototype.toJSON.call( this, meta );\n\n\tif ( this.background !== null ) data.object.background = this.background.toJSON( meta );\n\tif ( this.fog !== null ) data.object.fog = this.fog.toJSON();\n\n\treturn data;\n\n};\n\nexport { Scene };\n","import { Object3D } from '../core/Object3D';\nimport { NormalBlending } from '../constants';\nimport { Color } from '../math/Color';\nimport { Vector3 } from '../math/Vector3';\n\n/**\n * @author mikael emtinger / http://gomo.se/\n * @author alteredq / http://alteredqualia.com/\n */\n\nfunction LensFlare( texture, size, distance, blending, color ) {\n\n\tObject3D.call( this );\n\n\tthis.lensFlares = [];\n\n\tthis.positionScreen = new Vector3();\n\tthis.customUpdateCallback = undefined;\n\n\tif ( texture !== undefined ) {\n\n\t\tthis.add( texture, size, distance, blending, color );\n\n\t}\n\n}\n\nLensFlare.prototype = Object.assign( Object.create( Object3D.prototype ), {\n\n\tconstructor: LensFlare,\n\n\tisLensFlare: true,\n\n\tcopy: function ( source ) {\n\n\t\tObject3D.prototype.copy.call( this, source );\n\n\t\tthis.positionScreen.copy( source.positionScreen );\n\t\tthis.customUpdateCallback = source.customUpdateCallback;\n\n\t\tfor ( var i = 0, l = source.lensFlares.length; i < l; i ++ ) {\n\n\t\t\tthis.lensFlares.push( source.lensFlares[ i ] );\n\n\t\t}\n\n\t\treturn this;\n\n\t},\n\n\tadd: function ( texture, size, distance, blending, color, opacity ) {\n\n\t\tif ( size === undefined ) size = - 1;\n\t\tif ( distance === undefined ) distance = 0;\n\t\tif ( opacity === undefined ) opacity = 1;\n\t\tif ( color === undefined ) color = new Color( 0xffffff );\n\t\tif ( blending === undefined ) blending = NormalBlending;\n\n\t\tdistance = Math.min( distance, Math.max( 0, distance ) );\n\n\t\tthis.lensFlares.push( {\n\t\t\ttexture: texture,\t// THREE.Texture\n\t\t\tsize: size, \t\t// size in pixels (-1 = use texture.width)\n\t\t\tdistance: distance, \t// distance (0-1) from light source (0=at light source)\n\t\t\tx: 0, y: 0, z: 0,\t// screen position (-1 => 1) z = 0 is in front z = 1 is back\n\t\t\tscale: 1, \t\t// scale\n\t\t\trotation: 0, \t\t// rotation\n\t\t\topacity: opacity,\t// opacity\n\t\t\tcolor: color,\t\t// color\n\t\t\tblending: blending\t// blending\n\t\t} );\n\n\t},\n\n\t/*\n\t * Update lens flares update positions on all flares based on the screen position\n\t * Set myLensFlare.customUpdateCallback to alter the flares in your project specific way.\n\t */\n\n\tupdateLensFlares: function () {\n\n\t\tvar f, fl = this.lensFlares.length;\n\t\tvar flare;\n\t\tvar vecX = - this.positionScreen.x * 2;\n\t\tvar vecY = - this.positionScreen.y * 2;\n\n\t\tfor ( f = 0; f < fl; f ++ ) {\n\n\t\t\tflare = this.lensFlares[ f ];\n\n\t\t\tflare.x = this.positionScreen.x + vecX * flare.distance;\n\t\t\tflare.y = this.positionScreen.y + vecY * flare.distance;\n\n\t\t\tflare.wantedRotation = flare.x * Math.PI * 0.25;\n\t\t\tflare.rotation += ( flare.wantedRotation - flare.rotation ) * 0.25;\n\n\t\t}\n\n\t}\n\n} );\n\n\nexport { LensFlare };\n","import { Material } from './Material';\nimport { Color } from '../math/Color';\n\n/**\n * @author alteredq / http://alteredqualia.com/\n *\n * parameters = {\n * color: ,\n * opacity: ,\n * map: new THREE.Texture( ),\n *\n *\tuvOffset: new THREE.Vector2(),\n *\tuvScale: new THREE.Vector2()\n * }\n */\n\nfunction SpriteMaterial( parameters ) {\n\n\tMaterial.call( this );\n\n\tthis.type = 'SpriteMaterial';\n\n\tthis.color = new Color( 0xffffff );\n\tthis.map = null;\n\n\tthis.rotation = 0;\n\n\tthis.fog = false;\n\tthis.lights = false;\n\n\tthis.setValues( parameters );\n\n}\n\nSpriteMaterial.prototype = Object.create( Material.prototype );\nSpriteMaterial.prototype.constructor = SpriteMaterial;\n\nSpriteMaterial.prototype.copy = function ( source ) {\n\n\tMaterial.prototype.copy.call( this, source );\n\n\tthis.color.copy( source.color );\n\tthis.map = source.map;\n\n\tthis.rotation = source.rotation;\n\n\treturn this;\n\n};\n\n\nexport { SpriteMaterial };\n","import { Vector3 } from '../math/Vector3';\nimport { Object3D } from '../core/Object3D';\nimport { SpriteMaterial } from '../materials/SpriteMaterial';\n\n/**\n * @author mikael emtinger / http://gomo.se/\n * @author alteredq / http://alteredqualia.com/\n */\n\nfunction Sprite( material ) {\n\n\tObject3D.call( this );\n\n\tthis.type = 'Sprite';\n\n\tthis.material = ( material !== undefined ) ? material : new SpriteMaterial();\n\n}\n\nSprite.prototype = Object.assign( Object.create( Object3D.prototype ), {\n\n\tconstructor: Sprite,\n\n\tisSprite: true,\n\n\traycast: ( function () {\n\n\t\tvar matrixPosition = new Vector3();\n\n\t\treturn function raycast( raycaster, intersects ) {\n\n\t\t\tmatrixPosition.setFromMatrixPosition( this.matrixWorld );\n\n\t\t\tvar distanceSq = raycaster.ray.distanceSqToPoint( matrixPosition );\n\t\t\tvar guessSizeSq = this.scale.x * this.scale.y / 4;\n\n\t\t\tif ( distanceSq > guessSizeSq ) {\n\n\t\t\t\treturn;\n\n\t\t\t}\n\n\t\t\tintersects.push( {\n\n\t\t\t\tdistance: Math.sqrt( distanceSq ),\n\t\t\t\tpoint: this.position,\n\t\t\t\tface: null,\n\t\t\t\tobject: this\n\n\t\t\t} );\n\n\t\t};\n\n\t}() ),\n\n\tclone: function () {\n\n\t\treturn new this.constructor( this.material ).copy( this );\n\n\t}\n\n} );\n\n\nexport { Sprite };\n","import { Vector3 } from '../math/Vector3';\nimport { Object3D } from '../core/Object3D';\n\n/**\n * @author mikael emtinger / http://gomo.se/\n * @author alteredq / http://alteredqualia.com/\n * @author mrdoob / http://mrdoob.com/\n */\n\nfunction LOD() {\n\n\tObject3D.call( this );\n\n\tthis.type = 'LOD';\n\n\tObject.defineProperties( this, {\n\t\tlevels: {\n\t\t\tenumerable: true,\n\t\t\tvalue: []\n\t\t}\n\t} );\n\n}\n\n\nLOD.prototype = Object.assign( Object.create( Object3D.prototype ), {\n\n\tconstructor: LOD,\n\n\tcopy: function ( source ) {\n\n\t\tObject3D.prototype.copy.call( this, source, false );\n\n\t\tvar levels = source.levels;\n\n\t\tfor ( var i = 0, l = levels.length; i < l; i ++ ) {\n\n\t\t\tvar level = levels[ i ];\n\n\t\t\tthis.addLevel( level.object.clone(), level.distance );\n\n\t\t}\n\n\t\treturn this;\n\n\t},\n\n\taddLevel: function ( object, distance ) {\n\n\t\tif ( distance === undefined ) distance = 0;\n\n\t\tdistance = Math.abs( distance );\n\n\t\tvar levels = this.levels;\n\n\t\tfor ( var l = 0; l < levels.length; l ++ ) {\n\n\t\t\tif ( distance < levels[ l ].distance ) {\n\n\t\t\t\tbreak;\n\n\t\t\t}\n\n\t\t}\n\n\t\tlevels.splice( l, 0, { distance: distance, object: object } );\n\n\t\tthis.add( object );\n\n\t},\n\n\tgetObjectForDistance: function ( distance ) {\n\n\t\tvar levels = this.levels;\n\n\t\tfor ( var i = 1, l = levels.length; i < l; i ++ ) {\n\n\t\t\tif ( distance < levels[ i ].distance ) {\n\n\t\t\t\tbreak;\n\n\t\t\t}\n\n\t\t}\n\n\t\treturn levels[ i - 1 ].object;\n\n\t},\n\n\traycast: ( function () {\n\n\t\tvar matrixPosition = new Vector3();\n\n\t\treturn function raycast( raycaster, intersects ) {\n\n\t\t\tmatrixPosition.setFromMatrixPosition( this.matrixWorld );\n\n\t\t\tvar distance = raycaster.ray.origin.distanceTo( matrixPosition );\n\n\t\t\tthis.getObjectForDistance( distance ).raycast( raycaster, intersects );\n\n\t\t};\n\n\t}() ),\n\n\tupdate: function () {\n\n\t\tvar v1 = new Vector3();\n\t\tvar v2 = new Vector3();\n\n\t\treturn function update( camera ) {\n\n\t\t\tvar levels = this.levels;\n\n\t\t\tif ( levels.length > 1 ) {\n\n\t\t\t\tv1.setFromMatrixPosition( camera.matrixWorld );\n\t\t\t\tv2.setFromMatrixPosition( this.matrixWorld );\n\n\t\t\t\tvar distance = v1.distanceTo( v2 );\n\n\t\t\t\tlevels[ 0 ].object.visible = true;\n\n\t\t\t\tfor ( var i = 1, l = levels.length; i < l; i ++ ) {\n\n\t\t\t\t\tif ( distance >= levels[ i ].distance ) {\n\n\t\t\t\t\t\tlevels[ i - 1 ].object.visible = false;\n\t\t\t\t\t\tlevels[ i ].object.visible = true;\n\n\t\t\t\t\t} else {\n\n\t\t\t\t\t\tbreak;\n\n\t\t\t\t\t}\n\n\t\t\t\t}\n\n\t\t\t\tfor ( ; i < l; i ++ ) {\n\n\t\t\t\t\tlevels[ i ].object.visible = false;\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t};\n\n\t}(),\n\n\ttoJSON: function ( meta ) {\n\n\t\tvar data = Object3D.prototype.toJSON.call( this, meta );\n\n\t\tdata.object.levels = [];\n\n\t\tvar levels = this.levels;\n\n\t\tfor ( var i = 0, l = levels.length; i < l; i ++ ) {\n\n\t\t\tvar level = levels[ i ];\n\n\t\t\tdata.object.levels.push( {\n\t\t\t\tobject: level.object.uuid,\n\t\t\t\tdistance: level.distance\n\t\t\t} );\n\n\t\t}\n\n\t\treturn data;\n\n\t}\n\n} );\n\n\nexport { LOD };\n","import { Texture } from './Texture';\nimport { NearestFilter } from '../constants';\n\n/**\n * @author alteredq / http://alteredqualia.com/\n */\n\nfunction DataTexture( data, width, height, format, type, mapping, wrapS, wrapT, magFilter, minFilter, anisotropy, encoding ) {\n\n\tTexture.call( this, null, mapping, wrapS, wrapT, magFilter, minFilter, format, type, anisotropy, encoding );\n\n\tthis.image = { data: data, width: width, height: height };\n\n\tthis.magFilter = magFilter !== undefined ? magFilter : NearestFilter;\n\tthis.minFilter = minFilter !== undefined ? minFilter : NearestFilter;\n\n\tthis.generateMipmaps = false;\n\tthis.flipY = false;\n\tthis.unpackAlignment = 1;\n\n}\n\nDataTexture.prototype = Object.create( Texture.prototype );\nDataTexture.prototype.constructor = DataTexture;\n\nDataTexture.prototype.isDataTexture = true;\n\n\nexport { DataTexture };\n","import { Matrix4 } from '../math/Matrix4';\nimport { FloatType, RGBAFormat } from '../constants';\nimport { DataTexture } from '../textures/DataTexture';\nimport { _Math } from '../math/Math';\n\n/**\n * @author mikael emtinger / http://gomo.se/\n * @author alteredq / http://alteredqualia.com/\n * @author michael guerrero / http://realitymeltdown.com\n * @author ikerr / http://verold.com\n */\n\nfunction Skeleton( bones, boneInverses, useVertexTexture ) {\n\n\tthis.useVertexTexture = useVertexTexture !== undefined ? useVertexTexture : true;\n\n\tthis.identityMatrix = new Matrix4();\n\n\t// copy the bone array\n\n\tbones = bones || [];\n\n\tthis.bones = bones.slice( 0 );\n\n\t// create a bone texture or an array of floats\n\n\tif ( this.useVertexTexture ) {\n\n\t\t// layout (1 matrix = 4 pixels)\n\t\t// RGBA RGBA RGBA RGBA (=> column1, column2, column3, column4)\n\t\t// with 8x8 pixel texture max 16 bones * 4 pixels = (8 * 8)\n\t\t// 16x16 pixel texture max 64 bones * 4 pixels = (16 * 16)\n\t\t// 32x32 pixel texture max 256 bones * 4 pixels = (32 * 32)\n\t\t// 64x64 pixel texture max 1024 bones * 4 pixels = (64 * 64)\n\n\n\t\tvar size = Math.sqrt( this.bones.length * 4 ); // 4 pixels needed for 1 matrix\n\t\tsize = _Math.nextPowerOfTwo( Math.ceil( size ) );\n\t\tsize = Math.max( size, 4 );\n\n\t\tthis.boneTextureWidth = size;\n\t\tthis.boneTextureHeight = size;\n\n\t\tthis.boneMatrices = new Float32Array( this.boneTextureWidth * this.boneTextureHeight * 4 ); // 4 floats per RGBA pixel\n\t\tthis.boneTexture = new DataTexture( this.boneMatrices, this.boneTextureWidth, this.boneTextureHeight, RGBAFormat, FloatType );\n\n\t} else {\n\n\t\tthis.boneMatrices = new Float32Array( 16 * this.bones.length );\n\n\t}\n\n\t// use the supplied bone inverses or calculate the inverses\n\n\tif ( boneInverses === undefined ) {\n\n\t\tthis.calculateInverses();\n\n\t} else {\n\n\t\tif ( this.bones.length === boneInverses.length ) {\n\n\t\t\tthis.boneInverses = boneInverses.slice( 0 );\n\n\t\t} else {\n\n\t\t\tconsole.warn( 'THREE.Skeleton bonInverses is the wrong length.' );\n\n\t\t\tthis.boneInverses = [];\n\n\t\t\tfor ( var b = 0, bl = this.bones.length; b < bl; b ++ ) {\n\n\t\t\t\tthis.boneInverses.push( new Matrix4() );\n\n\t\t\t}\n\n\t\t}\n\n\t}\n\n}\n\nObject.assign( Skeleton.prototype, {\n\n\tcalculateInverses: function () {\n\n\t\tthis.boneInverses = [];\n\n\t\tfor ( var b = 0, bl = this.bones.length; b < bl; b ++ ) {\n\n\t\t\tvar inverse = new Matrix4();\n\n\t\t\tif ( this.bones[ b ] ) {\n\n\t\t\t\tinverse.getInverse( this.bones[ b ].matrixWorld );\n\n\t\t\t}\n\n\t\t\tthis.boneInverses.push( inverse );\n\n\t\t}\n\n\t},\n\n\tpose: function () {\n\n\t\tvar bone;\n\n\t\t// recover the bind-time world matrices\n\n\t\tfor ( var b = 0, bl = this.bones.length; b < bl; b ++ ) {\n\n\t\t\tbone = this.bones[ b ];\n\n\t\t\tif ( bone ) {\n\n\t\t\t\tbone.matrixWorld.getInverse( this.boneInverses[ b ] );\n\n\t\t\t}\n\n\t\t}\n\n\t\t// compute the local matrices, positions, rotations and scales\n\n\t\tfor ( var b = 0, bl = this.bones.length; b < bl; b ++ ) {\n\n\t\t\tbone = this.bones[ b ];\n\n\t\t\tif ( bone ) {\n\n\t\t\t\tif ( (bone.parent && bone.parent.isBone) ) {\n\n\t\t\t\t\tbone.matrix.getInverse( bone.parent.matrixWorld );\n\t\t\t\t\tbone.matrix.multiply( bone.matrixWorld );\n\n\t\t\t\t} else {\n\n\t\t\t\t\tbone.matrix.copy( bone.matrixWorld );\n\n\t\t\t\t}\n\n\t\t\t\tbone.matrix.decompose( bone.position, bone.quaternion, bone.scale );\n\n\t\t\t}\n\n\t\t}\n\n\t},\n\n\tupdate: ( function () {\n\n\t\tvar offsetMatrix = new Matrix4();\n\n\t\treturn function update() {\n\n\t\t\t// flatten bone matrices to array\n\n\t\t\tfor ( var b = 0, bl = this.bones.length; b < bl; b ++ ) {\n\n\t\t\t\t// compute the offset between the current and the original transform\n\n\t\t\t\tvar matrix = this.bones[ b ] ? this.bones[ b ].matrixWorld : this.identityMatrix;\n\n\t\t\t\toffsetMatrix.multiplyMatrices( matrix, this.boneInverses[ b ] );\n\t\t\t\toffsetMatrix.toArray( this.boneMatrices, b * 16 );\n\n\t\t\t}\n\n\t\t\tif ( this.useVertexTexture ) {\n\n\t\t\t\tthis.boneTexture.needsUpdate = true;\n\n\t\t\t}\n\n\t\t};\n\n\t} )(),\n\n\tclone: function () {\n\n\t\treturn new Skeleton( this.bones, this.boneInverses, this.useVertexTexture );\n\n\t}\n\n} );\n\n\nexport { Skeleton };\n","import { Object3D } from '../core/Object3D';\n\n/**\n * @author mikael emtinger / http://gomo.se/\n * @author alteredq / http://alteredqualia.com/\n * @author ikerr / http://verold.com\n */\n\nfunction Bone() {\n\n\tObject3D.call( this );\n\n\tthis.type = 'Bone';\n\n}\n\nBone.prototype = Object.assign( Object.create( Object3D.prototype ), {\n\n\tconstructor: Bone,\n\n\tisBone: true\n\n} );\n\n\nexport { Bone };\n","import { Mesh } from './Mesh';\nimport { Vector4 } from '../math/Vector4';\nimport { Skeleton } from './Skeleton';\nimport { Bone } from './Bone';\nimport { Matrix4 } from '../math/Matrix4';\n\n/**\n * @author mikael emtinger / http://gomo.se/\n * @author alteredq / http://alteredqualia.com/\n * @author ikerr / http://verold.com\n */\n\nfunction SkinnedMesh( geometry, material, useVertexTexture ) {\n\n\tMesh.call( this, geometry, material );\n\n\tthis.type = 'SkinnedMesh';\n\n\tthis.bindMode = \"attached\";\n\tthis.bindMatrix = new Matrix4();\n\tthis.bindMatrixInverse = new Matrix4();\n\n\t// init bones\n\n\t// TODO: remove bone creation as there is no reason (other than\n\t// convenience) for THREE.SkinnedMesh to do this.\n\n\tvar bones = [];\n\n\tif ( this.geometry && this.geometry.bones !== undefined ) {\n\n\t\tvar bone, gbone;\n\n\t\tfor ( var b = 0, bl = this.geometry.bones.length; b < bl; ++ b ) {\n\n\t\t\tgbone = this.geometry.bones[ b ];\n\n\t\t\tbone = new Bone();\n\t\t\tbones.push( bone );\n\n\t\t\tbone.name = gbone.name;\n\t\t\tbone.position.fromArray( gbone.pos );\n\t\t\tbone.quaternion.fromArray( gbone.rotq );\n\t\t\tif ( gbone.scl !== undefined ) bone.scale.fromArray( gbone.scl );\n\n\t\t}\n\n\t\tfor ( var b = 0, bl = this.geometry.bones.length; b < bl; ++ b ) {\n\n\t\t\tgbone = this.geometry.bones[ b ];\n\n\t\t\tif ( gbone.parent !== - 1 && gbone.parent !== null &&\n\t\t\t\t\tbones[ gbone.parent ] !== undefined ) {\n\n\t\t\t\tbones[ gbone.parent ].add( bones[ b ] );\n\n\t\t\t} else {\n\n\t\t\t\tthis.add( bones[ b ] );\n\n\t\t\t}\n\n\t\t}\n\n\t}\n\n\tthis.normalizeSkinWeights();\n\n\tthis.updateMatrixWorld( true );\n\tthis.bind( new Skeleton( bones, undefined, useVertexTexture ), this.matrixWorld );\n\n}\n\n\nSkinnedMesh.prototype = Object.assign( Object.create( Mesh.prototype ), {\n\n\tconstructor: SkinnedMesh,\n\n\tisSkinnedMesh: true,\n\n\tbind: function( skeleton, bindMatrix ) {\n\n\t\tthis.skeleton = skeleton;\n\n\t\tif ( bindMatrix === undefined ) {\n\n\t\t\tthis.updateMatrixWorld( true );\n\n\t\t\tthis.skeleton.calculateInverses();\n\n\t\t\tbindMatrix = this.matrixWorld;\n\n\t\t}\n\n\t\tthis.bindMatrix.copy( bindMatrix );\n\t\tthis.bindMatrixInverse.getInverse( bindMatrix );\n\n\t},\n\n\tpose: function () {\n\n\t\tthis.skeleton.pose();\n\n\t},\n\n\tnormalizeSkinWeights: function () {\n\n\t\tif ( (this.geometry && this.geometry.isGeometry) ) {\n\n\t\t\tfor ( var i = 0; i < this.geometry.skinWeights.length; i ++ ) {\n\n\t\t\t\tvar sw = this.geometry.skinWeights[ i ];\n\n\t\t\t\tvar scale = 1.0 / sw.lengthManhattan();\n\n\t\t\t\tif ( scale !== Infinity ) {\n\n\t\t\t\t\tsw.multiplyScalar( scale );\n\n\t\t\t\t} else {\n\n\t\t\t\t\tsw.set( 1, 0, 0, 0 ); // do something reasonable\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t} else if ( (this.geometry && this.geometry.isBufferGeometry) ) {\n\n\t\t\tvar vec = new Vector4();\n\n\t\t\tvar skinWeight = this.geometry.attributes.skinWeight;\n\n\t\t\tfor ( var i = 0; i < skinWeight.count; i ++ ) {\n\n\t\t\t\tvec.x = skinWeight.getX( i );\n\t\t\t\tvec.y = skinWeight.getY( i );\n\t\t\t\tvec.z = skinWeight.getZ( i );\n\t\t\t\tvec.w = skinWeight.getW( i );\n\n\t\t\t\tvar scale = 1.0 / vec.lengthManhattan();\n\n\t\t\t\tif ( scale !== Infinity ) {\n\n\t\t\t\t\tvec.multiplyScalar( scale );\n\n\t\t\t\t} else {\n\n\t\t\t\t\tvec.set( 1, 0, 0, 0 ); // do something reasonable\n\n\t\t\t\t}\n\n\t\t\t\tskinWeight.setXYZW( i, vec.x, vec.y, vec.z, vec.w );\n\n\t\t\t}\n\n\t\t}\n\n\t},\n\n\tupdateMatrixWorld: function( force ) {\n\n\t\tMesh.prototype.updateMatrixWorld.call( this, true );\n\n\t\tif ( this.bindMode === \"attached\" ) {\n\n\t\t\tthis.bindMatrixInverse.getInverse( this.matrixWorld );\n\n\t\t} else if ( this.bindMode === \"detached\" ) {\n\n\t\t\tthis.bindMatrixInverse.getInverse( this.bindMatrix );\n\n\t\t} else {\n\n\t\t\tconsole.warn( 'THREE.SkinnedMesh unrecognized bindMode: ' + this.bindMode );\n\n\t\t}\n\n\t},\n\n\tclone: function() {\n\n\t\treturn new this.constructor( this.geometry, this.material, this.skeleton.useVertexTexture ).copy( this );\n\n\t}\n\n} );\n\n\nexport { SkinnedMesh };\n","import { Material } from './Material';\nimport { Color } from '../math/Color';\n\n/**\n * @author mrdoob / http://mrdoob.com/\n * @author alteredq / http://alteredqualia.com/\n *\n * parameters = {\n * color: ,\n * opacity: ,\n *\n * linewidth: ,\n * linecap: \"round\",\n * linejoin: \"round\"\n * }\n */\n\nfunction LineBasicMaterial( parameters ) {\n\n\tMaterial.call( this );\n\n\tthis.type = 'LineBasicMaterial';\n\n\tthis.color = new Color( 0xffffff );\n\n\tthis.linewidth = 1;\n\tthis.linecap = 'round';\n\tthis.linejoin = 'round';\n\n\tthis.lights = false;\n\n\tthis.setValues( parameters );\n\n}\n\nLineBasicMaterial.prototype = Object.create( Material.prototype );\nLineBasicMaterial.prototype.constructor = LineBasicMaterial;\n\nLineBasicMaterial.prototype.isLineBasicMaterial = true;\n\nLineBasicMaterial.prototype.copy = function ( source ) {\n\n\tMaterial.prototype.copy.call( this, source );\n\n\tthis.color.copy( source.color );\n\n\tthis.linewidth = source.linewidth;\n\tthis.linecap = source.linecap;\n\tthis.linejoin = source.linejoin;\n\n\treturn this;\n\n};\n\n\nexport { LineBasicMaterial };\n","import { Sphere } from '../math/Sphere';\nimport { Ray } from '../math/Ray';\nimport { Matrix4 } from '../math/Matrix4';\nimport { Object3D } from '../core/Object3D';\nimport { Vector3 } from '../math/Vector3';\nimport { LineBasicMaterial } from '../materials/LineBasicMaterial';\nimport { BufferGeometry } from '../core/BufferGeometry';\nimport { LineSegments } from './LineSegments';\n\n/**\n * @author mrdoob / http://mrdoob.com/\n */\n\nfunction Line( geometry, material, mode ) {\n\n\tif ( mode === 1 ) {\n\n\t\tconsole.warn( 'THREE.Line: parameter THREE.LinePieces no longer supported. Created THREE.LineSegments instead.' );\n\t\treturn new LineSegments( geometry, material );\n\n\t}\n\n\tObject3D.call( this );\n\n\tthis.type = 'Line';\n\n\tthis.geometry = geometry !== undefined ? geometry : new BufferGeometry();\n\tthis.material = material !== undefined ? material : new LineBasicMaterial( { color: Math.random() * 0xffffff } );\n\n}\n\nLine.prototype = Object.assign( Object.create( Object3D.prototype ), {\n\n\tconstructor: Line,\n\n\tisLine: true,\n\n\traycast: ( function () {\n\n\t\tvar inverseMatrix = new Matrix4();\n\t\tvar ray = new Ray();\n\t\tvar sphere = new Sphere();\n\n\t\treturn function raycast( raycaster, intersects ) {\n\n\t\t\tvar precision = raycaster.linePrecision;\n\t\t\tvar precisionSq = precision * precision;\n\n\t\t\tvar geometry = this.geometry;\n\t\t\tvar matrixWorld = this.matrixWorld;\n\n\t\t\t// Checking boundingSphere distance to ray\n\n\t\t\tif ( geometry.boundingSphere === null ) geometry.computeBoundingSphere();\n\n\t\t\tsphere.copy( geometry.boundingSphere );\n\t\t\tsphere.applyMatrix4( matrixWorld );\n\n\t\t\tif ( raycaster.ray.intersectsSphere( sphere ) === false ) return;\n\n\t\t\t//\n\n\t\t\tinverseMatrix.getInverse( matrixWorld );\n\t\t\tray.copy( raycaster.ray ).applyMatrix4( inverseMatrix );\n\n\t\t\tvar vStart = new Vector3();\n\t\t\tvar vEnd = new Vector3();\n\t\t\tvar interSegment = new Vector3();\n\t\t\tvar interRay = new Vector3();\n\t\t\tvar step = (this && this.isLineSegments) ? 2 : 1;\n\n\t\t\tif ( (geometry && geometry.isBufferGeometry) ) {\n\n\t\t\t\tvar index = geometry.index;\n\t\t\t\tvar attributes = geometry.attributes;\n\t\t\t\tvar positions = attributes.position.array;\n\n\t\t\t\tif ( index !== null ) {\n\n\t\t\t\t\tvar indices = index.array;\n\n\t\t\t\t\tfor ( var i = 0, l = indices.length - 1; i < l; i += step ) {\n\n\t\t\t\t\t\tvar a = indices[ i ];\n\t\t\t\t\t\tvar b = indices[ i + 1 ];\n\n\t\t\t\t\t\tvStart.fromArray( positions, a * 3 );\n\t\t\t\t\t\tvEnd.fromArray( positions, b * 3 );\n\n\t\t\t\t\t\tvar distSq = ray.distanceSqToSegment( vStart, vEnd, interRay, interSegment );\n\n\t\t\t\t\t\tif ( distSq > precisionSq ) continue;\n\n\t\t\t\t\t\tinterRay.applyMatrix4( this.matrixWorld ); //Move back to world space for distance calculation\n\n\t\t\t\t\t\tvar distance = raycaster.ray.origin.distanceTo( interRay );\n\n\t\t\t\t\t\tif ( distance < raycaster.near || distance > raycaster.far ) continue;\n\n\t\t\t\t\t\tintersects.push( {\n\n\t\t\t\t\t\t\tdistance: distance,\n\t\t\t\t\t\t\t// What do we want? intersection point on the ray or on the segment??\n\t\t\t\t\t\t\t// point: raycaster.ray.at( distance ),\n\t\t\t\t\t\t\tpoint: interSegment.clone().applyMatrix4( this.matrixWorld ),\n\t\t\t\t\t\t\tindex: i,\n\t\t\t\t\t\t\tface: null,\n\t\t\t\t\t\t\tfaceIndex: null,\n\t\t\t\t\t\t\tobject: this\n\n\t\t\t\t\t\t} );\n\n\t\t\t\t\t}\n\n\t\t\t\t} else {\n\n\t\t\t\t\tfor ( var i = 0, l = positions.length / 3 - 1; i < l; i += step ) {\n\n\t\t\t\t\t\tvStart.fromArray( positions, 3 * i );\n\t\t\t\t\t\tvEnd.fromArray( positions, 3 * i + 3 );\n\n\t\t\t\t\t\tvar distSq = ray.distanceSqToSegment( vStart, vEnd, interRay, interSegment );\n\n\t\t\t\t\t\tif ( distSq > precisionSq ) continue;\n\n\t\t\t\t\t\tinterRay.applyMatrix4( this.matrixWorld ); //Move back to world space for distance calculation\n\n\t\t\t\t\t\tvar distance = raycaster.ray.origin.distanceTo( interRay );\n\n\t\t\t\t\t\tif ( distance < raycaster.near || distance > raycaster.far ) continue;\n\n\t\t\t\t\t\tintersects.push( {\n\n\t\t\t\t\t\t\tdistance: distance,\n\t\t\t\t\t\t\t// What do we want? intersection point on the ray or on the segment??\n\t\t\t\t\t\t\t// point: raycaster.ray.at( distance ),\n\t\t\t\t\t\t\tpoint: interSegment.clone().applyMatrix4( this.matrixWorld ),\n\t\t\t\t\t\t\tindex: i,\n\t\t\t\t\t\t\tface: null,\n\t\t\t\t\t\t\tfaceIndex: null,\n\t\t\t\t\t\t\tobject: this\n\n\t\t\t\t\t\t} );\n\n\t\t\t\t\t}\n\n\t\t\t\t}\n\n\t\t\t} else if ( (geometry && geometry.isGeometry) ) {\n\n\t\t\t\tvar vertices = geometry.vertices;\n\t\t\t\tvar nbVertices = vertices.length;\n\n\t\t\t\tfor ( var i = 0; i < nbVertices - 1; i += step ) {\n\n\t\t\t\t\tvar distSq = ray.distanceSqToSegment( vertices[ i ], vertices[ i + 1 ], interRay, interSegment );\n\n\t\t\t\t\tif ( distSq > precisionSq ) continue;\n\n\t\t\t\t\tinterRay.applyMatrix4( this.matrixWorld ); //Move back to world space for distance calculation\n\n\t\t\t\t\tvar distance = raycaster.ray.origin.distanceTo( interRay );\n\n\t\t\t\t\tif ( distance < raycaster.near || distance > raycaster.far ) continue;\n\n\t\t\t\t\tintersects.push( {\n\n\t\t\t\t\t\tdistance: distance,\n\t\t\t\t\t\t// What do we want? intersection point on the ray or on the segment??\n\t\t\t\t\t\t// point: raycaster.ray.at( distance ),\n\t\t\t\t\t\tpoint: interSegment.clone().applyMatrix4( this.matrixWorld ),\n\t\t\t\t\t\tindex: i,\n\t\t\t\t\t\tface: null,\n\t\t\t\t\t\tfaceIndex: null,\n\t\t\t\t\t\tobject: this\n\n\t\t\t\t\t} );\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t};\n\n\t}() ),\n\n\tclone: function () {\n\n\t\treturn new this.constructor( this.geometry, this.material ).copy( this );\n\n\t}\n\n} );\n\n\nexport { Line };\n","import { Line } from './Line';\n\n/**\n * @author mrdoob / http://mrdoob.com/\n */\n\nfunction LineSegments( geometry, material ) {\n\n\tLine.call( this, geometry, material );\n\n\tthis.type = 'LineSegments';\n\n}\n\nLineSegments.prototype = Object.assign( Object.create( Line.prototype ), {\n\n\tconstructor: LineSegments,\n\n\tisLineSegments: true\n\n} );\n\n\nexport { LineSegments };\n","import { Material } from './Material';\nimport { Color } from '../math/Color';\n\n/**\n * @author mrdoob / http://mrdoob.com/\n * @author alteredq / http://alteredqualia.com/\n *\n * parameters = {\n * color: ,\n * opacity: ,\n * map: new THREE.Texture( ),\n *\n * size: ,\n * sizeAttenuation: \n * }\n */\n\nfunction PointsMaterial( parameters ) {\n\n\tMaterial.call( this );\n\n\tthis.type = 'PointsMaterial';\n\n\tthis.color = new Color( 0xffffff );\n\n\tthis.map = null;\n\n\tthis.size = 1;\n\tthis.sizeAttenuation = true;\n\n\tthis.lights = false;\n\n\tthis.setValues( parameters );\n\n}\n\nPointsMaterial.prototype = Object.create( Material.prototype );\nPointsMaterial.prototype.constructor = PointsMaterial;\n\nPointsMaterial.prototype.isPointsMaterial = true;\n\nPointsMaterial.prototype.copy = function ( source ) {\n\n\tMaterial.prototype.copy.call( this, source );\n\n\tthis.color.copy( source.color );\n\n\tthis.map = source.map;\n\n\tthis.size = source.size;\n\tthis.sizeAttenuation = source.sizeAttenuation;\n\n\treturn this;\n\n};\n\n\nexport { PointsMaterial };\n","import { Sphere } from '../math/Sphere';\nimport { Ray } from '../math/Ray';\nimport { Matrix4 } from '../math/Matrix4';\nimport { Object3D } from '../core/Object3D';\nimport { Vector3 } from '../math/Vector3';\nimport { PointsMaterial } from '../materials/PointsMaterial';\nimport { BufferGeometry } from '../core/BufferGeometry';\n\n/**\n * @author alteredq / http://alteredqualia.com/\n */\n\nfunction Points( geometry, material ) {\n\n\tObject3D.call( this );\n\n\tthis.type = 'Points';\n\n\tthis.geometry = geometry !== undefined ? geometry : new BufferGeometry();\n\tthis.material = material !== undefined ? material : new PointsMaterial( { color: Math.random() * 0xffffff } );\n\n}\n\nPoints.prototype = Object.assign( Object.create( Object3D.prototype ), {\n\n\tconstructor: Points,\n\n\tisPoints: true,\n\n\traycast: ( function () {\n\n\t\tvar inverseMatrix = new Matrix4();\n\t\tvar ray = new Ray();\n\t\tvar sphere = new Sphere();\n\n\t\treturn function raycast( raycaster, intersects ) {\n\n\t\t\tvar object = this;\n\t\t\tvar geometry = this.geometry;\n\t\t\tvar matrixWorld = this.matrixWorld;\n\t\t\tvar threshold = raycaster.params.Points.threshold;\n\n\t\t\t// Checking boundingSphere distance to ray\n\n\t\t\tif ( geometry.boundingSphere === null ) geometry.computeBoundingSphere();\n\n\t\t\tsphere.copy( geometry.boundingSphere );\n\t\t\tsphere.applyMatrix4( matrixWorld );\n\n\t\t\tif ( raycaster.ray.intersectsSphere( sphere ) === false ) return;\n\n\t\t\t//\n\n\t\t\tinverseMatrix.getInverse( matrixWorld );\n\t\t\tray.copy( raycaster.ray ).applyMatrix4( inverseMatrix );\n\n\t\t\tvar localThreshold = threshold / ( ( this.scale.x + this.scale.y + this.scale.z ) / 3 );\n\t\t\tvar localThresholdSq = localThreshold * localThreshold;\n\t\t\tvar position = new Vector3();\n\n\t\t\tfunction testPoint( point, index ) {\n\n\t\t\t\tvar rayPointDistanceSq = ray.distanceSqToPoint( point );\n\n\t\t\t\tif ( rayPointDistanceSq < localThresholdSq ) {\n\n\t\t\t\t\tvar intersectPoint = ray.closestPointToPoint( point );\n\t\t\t\t\tintersectPoint.applyMatrix4( matrixWorld );\n\n\t\t\t\t\tvar distance = raycaster.ray.origin.distanceTo( intersectPoint );\n\n\t\t\t\t\tif ( distance < raycaster.near || distance > raycaster.far ) return;\n\n\t\t\t\t\tintersects.push( {\n\n\t\t\t\t\t\tdistance: distance,\n\t\t\t\t\t\tdistanceToRay: Math.sqrt( rayPointDistanceSq ),\n\t\t\t\t\t\tpoint: intersectPoint.clone(),\n\t\t\t\t\t\tindex: index,\n\t\t\t\t\t\tface: null,\n\t\t\t\t\t\tobject: object\n\n\t\t\t\t\t} );\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t\tif ( (geometry && geometry.isBufferGeometry) ) {\n\n\t\t\t\tvar index = geometry.index;\n\t\t\t\tvar attributes = geometry.attributes;\n\t\t\t\tvar positions = attributes.position.array;\n\n\t\t\t\tif ( index !== null ) {\n\n\t\t\t\t\tvar indices = index.array;\n\n\t\t\t\t\tfor ( var i = 0, il = indices.length; i < il; i ++ ) {\n\n\t\t\t\t\t\tvar a = indices[ i ];\n\n\t\t\t\t\t\tposition.fromArray( positions, a * 3 );\n\n\t\t\t\t\t\ttestPoint( position, a );\n\n\t\t\t\t\t}\n\n\t\t\t\t} else {\n\n\t\t\t\t\tfor ( var i = 0, l = positions.length / 3; i < l; i ++ ) {\n\n\t\t\t\t\t\tposition.fromArray( positions, i * 3 );\n\n\t\t\t\t\t\ttestPoint( position, i );\n\n\t\t\t\t\t}\n\n\t\t\t\t}\n\n\t\t\t} else {\n\n\t\t\t\tvar vertices = geometry.vertices;\n\n\t\t\t\tfor ( var i = 0, l = vertices.length; i < l; i ++ ) {\n\n\t\t\t\t\ttestPoint( vertices[ i ], i );\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t};\n\n\t}() ),\n\n\tclone: function () {\n\n\t\treturn new this.constructor( this.geometry, this.material ).copy( this );\n\n\t}\n\n} );\n\n\nexport { Points };\n","import { Object3D } from '../core/Object3D';\n\n/**\n * @author mrdoob / http://mrdoob.com/\n */\n\nfunction Group() {\n\n\tObject3D.call( this );\n\n\tthis.type = 'Group';\n\n}\n\nGroup.prototype = Object.assign( Object.create( Object3D.prototype ), {\n\n\tconstructor: Group\n\n} );\n\n\nexport { Group };\n","import { Texture } from './Texture';\n\n/**\n * @author mrdoob / http://mrdoob.com/\n */\n\nfunction VideoTexture( video, mapping, wrapS, wrapT, magFilter, minFilter, format, type, anisotropy ) {\n\n\tTexture.call( this, video, mapping, wrapS, wrapT, magFilter, minFilter, format, type, anisotropy );\n\n\tthis.generateMipmaps = false;\n\n\tvar scope = this;\n\n\tfunction update() {\n\n\t\trequestAnimationFrame( update );\n\n\t\tif ( video.readyState >= video.HAVE_CURRENT_DATA ) {\n\n\t\t\tscope.needsUpdate = true;\n\n\t\t}\n\n\t}\n\n\tupdate();\n\n}\n\nVideoTexture.prototype = Object.create( Texture.prototype );\nVideoTexture.prototype.constructor = VideoTexture;\n\n\nexport { VideoTexture };\n","import { Texture } from './Texture';\n\n/**\n * @author alteredq / http://alteredqualia.com/\n */\n\nfunction CompressedTexture( mipmaps, width, height, format, type, mapping, wrapS, wrapT, magFilter, minFilter, anisotropy, encoding ) {\n\n\tTexture.call( this, null, mapping, wrapS, wrapT, magFilter, minFilter, format, type, anisotropy, encoding );\n\n\tthis.image = { width: width, height: height };\n\tthis.mipmaps = mipmaps;\n\n\t// no flipping for cube textures\n\t// (also flipping doesn't work for compressed textures )\n\n\tthis.flipY = false;\n\n\t// can't generate mipmaps for compressed textures\n\t// mips must be embedded in DDS files\n\n\tthis.generateMipmaps = false;\n\n}\n\nCompressedTexture.prototype = Object.create( Texture.prototype );\nCompressedTexture.prototype.constructor = CompressedTexture;\n\nCompressedTexture.prototype.isCompressedTexture = true;\n\n\nexport { CompressedTexture };\n","import { Texture } from './Texture';\n\n/**\n * @author mrdoob / http://mrdoob.com/\n */\n\nfunction CanvasTexture( canvas, mapping, wrapS, wrapT, magFilter, minFilter, format, type, anisotropy ) {\n\n\tTexture.call( this, canvas, mapping, wrapS, wrapT, magFilter, minFilter, format, type, anisotropy );\n\n\tthis.needsUpdate = true;\n\n}\n\nCanvasTexture.prototype = Object.create( Texture.prototype );\nCanvasTexture.prototype.constructor = CanvasTexture;\n\n\nexport { CanvasTexture };\n","import { Texture } from './Texture';\nimport { NearestFilter, UnsignedShortType, DepthFormat, DepthStencilFormat } from '../constants';\n\n/**\n * @author Matt DesLauriers / @mattdesl\n * @author atix / arthursilber.de\n */\n\nfunction DepthTexture( width, height, type, mapping, wrapS, wrapT, magFilter, minFilter, anisotropy, format ) {\n\n\tformat = format !== undefined ? format : DepthFormat;\n\n\tif ( format !== DepthFormat && format !== DepthStencilFormat ) {\n\n\t\tthrow new Error( 'DepthTexture format must be either THREE.DepthFormat or THREE.DepthStencilFormat' )\n\n\t}\n\n\tTexture.call( this, null, mapping, wrapS, wrapT, magFilter, minFilter, format, type, anisotropy );\n\n\tthis.image = { width: width, height: height };\n\n\tthis.type = type !== undefined ? type : UnsignedShortType;\n\n\tthis.magFilter = magFilter !== undefined ? magFilter : NearestFilter;\n\tthis.minFilter = minFilter !== undefined ? minFilter : NearestFilter;\n\n\tthis.flipY = false;\n\tthis.generateMipmaps\t= false;\n\n}\n\nDepthTexture.prototype = Object.create( Texture.prototype );\nDepthTexture.prototype.constructor = DepthTexture;\nDepthTexture.prototype.isDepthTexture = true;\n\nexport { DepthTexture };\n","import { BufferGeometry } from '../core/BufferGeometry';\nimport { BufferAttribute } from '../core/BufferAttribute';\n\n/**\n * @author mrdoob / http://mrdoob.com/\n */\n\nfunction WireframeGeometry( geometry ) {\n\n\tBufferGeometry.call( this );\n\n\tvar edge = [ 0, 0 ], hash = {};\n\n\tfunction sortFunction( a, b ) {\n\n\t\treturn a - b;\n\n\t}\n\n\tvar keys = [ 'a', 'b', 'c' ];\n\n\tif ( (geometry && geometry.isGeometry) ) {\n\n\t\tvar vertices = geometry.vertices;\n\t\tvar faces = geometry.faces;\n\t\tvar numEdges = 0;\n\n\t\t// allocate maximal size\n\t\tvar edges = new Uint32Array( 6 * faces.length );\n\n\t\tfor ( var i = 0, l = faces.length; i < l; i ++ ) {\n\n\t\t\tvar face = faces[ i ];\n\n\t\t\tfor ( var j = 0; j < 3; j ++ ) {\n\n\t\t\t\tedge[ 0 ] = face[ keys[ j ] ];\n\t\t\t\tedge[ 1 ] = face[ keys[ ( j + 1 ) % 3 ] ];\n\t\t\t\tedge.sort( sortFunction );\n\n\t\t\t\tvar key = edge.toString();\n\n\t\t\t\tif ( hash[ key ] === undefined ) {\n\n\t\t\t\t\tedges[ 2 * numEdges ] = edge[ 0 ];\n\t\t\t\t\tedges[ 2 * numEdges + 1 ] = edge[ 1 ];\n\t\t\t\t\thash[ key ] = true;\n\t\t\t\t\tnumEdges ++;\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t}\n\n\t\tvar coords = new Float32Array( numEdges * 2 * 3 );\n\n\t\tfor ( var i = 0, l = numEdges; i < l; i ++ ) {\n\n\t\t\tfor ( var j = 0; j < 2; j ++ ) {\n\n\t\t\t\tvar vertex = vertices[ edges [ 2 * i + j ] ];\n\n\t\t\t\tvar index = 6 * i + 3 * j;\n\t\t\t\tcoords[ index + 0 ] = vertex.x;\n\t\t\t\tcoords[ index + 1 ] = vertex.y;\n\t\t\t\tcoords[ index + 2 ] = vertex.z;\n\n\t\t\t}\n\n\t\t}\n\n\t\tthis.addAttribute( 'position', new BufferAttribute( coords, 3 ) );\n\n\t} else if ( (geometry && geometry.isBufferGeometry) ) {\n\n\t\tif ( geometry.index !== null ) {\n\n\t\t\t// Indexed BufferGeometry\n\n\t\t\tvar indices = geometry.index.array;\n\t\t\tvar vertices = geometry.attributes.position;\n\t\t\tvar groups = geometry.groups;\n\t\t\tvar numEdges = 0;\n\n\t\t\tif ( groups.length === 0 ) {\n\n\t\t\t\tgeometry.addGroup( 0, indices.length );\n\n\t\t\t}\n\n\t\t\t// allocate maximal size\n\t\t\tvar edges = new Uint32Array( 2 * indices.length );\n\n\t\t\tfor ( var o = 0, ol = groups.length; o < ol; ++ o ) {\n\n\t\t\t\tvar group = groups[ o ];\n\n\t\t\t\tvar start = group.start;\n\t\t\t\tvar count = group.count;\n\n\t\t\t\tfor ( var i = start, il = start + count; i < il; i += 3 ) {\n\n\t\t\t\t\tfor ( var j = 0; j < 3; j ++ ) {\n\n\t\t\t\t\t\tedge[ 0 ] = indices[ i + j ];\n\t\t\t\t\t\tedge[ 1 ] = indices[ i + ( j + 1 ) % 3 ];\n\t\t\t\t\t\tedge.sort( sortFunction );\n\n\t\t\t\t\t\tvar key = edge.toString();\n\n\t\t\t\t\t\tif ( hash[ key ] === undefined ) {\n\n\t\t\t\t\t\t\tedges[ 2 * numEdges ] = edge[ 0 ];\n\t\t\t\t\t\t\tedges[ 2 * numEdges + 1 ] = edge[ 1 ];\n\t\t\t\t\t\t\thash[ key ] = true;\n\t\t\t\t\t\t\tnumEdges ++;\n\n\t\t\t\t\t\t}\n\n\t\t\t\t\t}\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t\tvar coords = new Float32Array( numEdges * 2 * 3 );\n\n\t\t\tfor ( var i = 0, l = numEdges; i < l; i ++ ) {\n\n\t\t\t\tfor ( var j = 0; j < 2; j ++ ) {\n\n\t\t\t\t\tvar index = 6 * i + 3 * j;\n\t\t\t\t\tvar index2 = edges[ 2 * i + j ];\n\n\t\t\t\t\tcoords[ index + 0 ] = vertices.getX( index2 );\n\t\t\t\t\tcoords[ index + 1 ] = vertices.getY( index2 );\n\t\t\t\t\tcoords[ index + 2 ] = vertices.getZ( index2 );\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t\tthis.addAttribute( 'position', new BufferAttribute( coords, 3 ) );\n\n\t\t} else {\n\n\t\t\t// non-indexed BufferGeometry\n\n\t\t\tvar vertices = geometry.attributes.position.array;\n\t\t\tvar numEdges = vertices.length / 3;\n\t\t\tvar numTris = numEdges / 3;\n\n\t\t\tvar coords = new Float32Array( numEdges * 2 * 3 );\n\n\t\t\tfor ( var i = 0, l = numTris; i < l; i ++ ) {\n\n\t\t\t\tfor ( var j = 0; j < 3; j ++ ) {\n\n\t\t\t\t\tvar index = 18 * i + 6 * j;\n\n\t\t\t\t\tvar index1 = 9 * i + 3 * j;\n\t\t\t\t\tcoords[ index + 0 ] = vertices[ index1 ];\n\t\t\t\t\tcoords[ index + 1 ] = vertices[ index1 + 1 ];\n\t\t\t\t\tcoords[ index + 2 ] = vertices[ index1 + 2 ];\n\n\t\t\t\t\tvar index2 = 9 * i + 3 * ( ( j + 1 ) % 3 );\n\t\t\t\t\tcoords[ index + 3 ] = vertices[ index2 ];\n\t\t\t\t\tcoords[ index + 4 ] = vertices[ index2 + 1 ];\n\t\t\t\t\tcoords[ index + 5 ] = vertices[ index2 + 2 ];\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t\tthis.addAttribute( 'position', new BufferAttribute( coords, 3 ) );\n\n\t\t}\n\n\t}\n\n}\n\nWireframeGeometry.prototype = Object.create( BufferGeometry.prototype );\nWireframeGeometry.prototype.constructor = WireframeGeometry;\n\n\nexport { WireframeGeometry };\n","import { BufferGeometry } from '../core/BufferGeometry';\nimport { Float32Attribute, Uint16Attribute, Uint32Attribute } from '../core/BufferAttribute';\n\n/**\n * @author Mugen87 / https://github.com/Mugen87\n *\n * Parametric Surfaces Geometry\n * based on the brilliant article by @prideout http://prideout.net/blog/?p=44\n */\n\nfunction ParametricBufferGeometry( func, slices, stacks ) {\n\n\tBufferGeometry.call( this );\n\n\tthis.type = 'ParametricBufferGeometry';\n\n\tthis.parameters = {\n\t\tfunc: func,\n\t\tslices: slices,\n\t\tstacks: stacks\n\t};\n\n\t// generate vertices and uvs\n\n\tvar vertices = [];\n\tvar uvs = [];\n\n\tvar i, j, p;\n\tvar u, v;\n\n\tvar sliceCount = slices + 1;\n\n\tfor ( i = 0; i <= stacks; i ++ ) {\n\n\t\tv = i / stacks;\n\n\t\tfor ( j = 0; j <= slices; j ++ ) {\n\n\t\t\tu = j / slices;\n\n\t\t\tp = func( u, v );\n\t\t\tvertices.push( p.x, p.y, p.z );\n\n\t\t\tuvs.push( u, v );\n\n\t\t}\n\n\t}\n\n\t// generate indices\n\n\tvar indices = [];\n\tvar a, b, c, d;\n\n\tfor ( i = 0; i < stacks; i ++ ) {\n\n\t\tfor ( j = 0; j < slices; j ++ ) {\n\n\t\t\ta = i * sliceCount + j;\n\t\t\tb = i * sliceCount + j + 1;\n\t\t\tc = ( i + 1 ) * sliceCount + j + 1;\n\t\t\td = ( i + 1 ) * sliceCount + j;\n\n\t\t\t// faces one and two\n\n\t\t\tindices.push( a, b, d );\n\t\t\tindices.push( b, c, d );\n\n\t\t}\n\n\t}\n\n\t// build geometry\n\n\tthis.setIndex( ( indices.length > 65535 ? Uint32Attribute : Uint16Attribute )( indices, 1 ) );\n\tthis.addAttribute( 'position', Float32Attribute( vertices, 3 ) );\n\tthis.addAttribute( 'uv', Float32Attribute( uvs, 2 ) );\n\n\t// generate normals\n\n\tthis.computeVertexNormals();\n\n}\n\nParametricBufferGeometry.prototype = Object.create( BufferGeometry.prototype );\nParametricBufferGeometry.prototype.constructor = ParametricBufferGeometry;\n\n\nexport { ParametricBufferGeometry };\n","import { Geometry } from '../core/Geometry';\nimport { ParametricBufferGeometry } from './ParametricBufferGeometry';\n\n/**\n * @author zz85 / https://github.com/zz85\n *\n * Parametric Surfaces Geometry\n * based on the brilliant article by @prideout http://prideout.net/blog/?p=44\n */\n\nfunction ParametricGeometry( func, slices, stacks ) {\n\n\tGeometry.call( this );\n\n\tthis.type = 'ParametricGeometry';\n\n\tthis.parameters = {\n\t\tfunc: func,\n\t\tslices: slices,\n\t\tstacks: stacks\n\t};\n\n\tthis.fromBufferGeometry( new ParametricBufferGeometry( func, slices, stacks ) );\n\tthis.mergeVertices();\n\n}\n\nParametricGeometry.prototype = Object.create( Geometry.prototype );\nParametricGeometry.prototype.constructor = ParametricGeometry;\n\n\nexport { ParametricGeometry };\n","import { BufferGeometry } from '../core/BufferGeometry';\nimport { Float32Attribute } from '../core/BufferAttribute';\nimport { Vector3 } from '../math/Vector3';\nimport { Vector2 } from '../math/Vector2';\nimport { Sphere } from '../math/Sphere';\n\n/**\n * @author Mugen87 / https://github.com/Mugen87\n */\n\nfunction PolyhedronBufferGeometry( vertices, indices, radius, detail ) {\n\n\tBufferGeometry.call( this );\n\n\tthis.type = 'PolyhedronBufferGeometry';\n\n\tthis.parameters = {\n\t\tvertices: vertices,\n\t\tindices: indices,\n\t\tradius: radius,\n\t\tdetail: detail\n\t};\n\n\tradius = radius || 1;\n\tdetail = detail || 0;\n\n\t// default buffer data\n\n\tvar vertexBuffer = [];\n\tvar uvBuffer = [];\n\n\t// the subdivision creates the vertex buffer data\n\n\tsubdivide( detail );\n\n\t// all vertices should lie on a conceptual sphere with a given radius\n\n\tappplyRadius( radius );\n\n\t// finally, create the uv data\n\n\tgenerateUVs();\n\n\t// build non-indexed geometry\n\n\tthis.addAttribute( 'position', Float32Attribute( vertexBuffer, 3 ) );\n\tthis.addAttribute( 'normal', Float32Attribute( vertexBuffer.slice(), 3 ) );\n\tthis.addAttribute( 'uv', Float32Attribute( uvBuffer, 2 ) );\n\tthis.normalizeNormals();\n\n\tthis.boundingSphere = new Sphere( new Vector3(), radius );\n\n\t// helper functions\n\n\tfunction subdivide( detail ) {\n\n\t\tvar a = new Vector3();\n\t\tvar b = new Vector3();\n\t\tvar c = new Vector3();\n\n\t\t// iterate over all faces and apply a subdivison with the given detail value\n\n\t\tfor ( var i = 0; i < indices.length; i += 3 ) {\n\n\t\t\t// get the vertices of the face\n\n\t\t\tgetVertexByIndex( indices[ i + 0 ], a );\n\t\t\tgetVertexByIndex( indices[ i + 1 ], b );\n\t\t\tgetVertexByIndex( indices[ i + 2 ], c );\n\n\t\t\t// perform subdivision\n\n\t\t\tsubdivideFace( a, b, c, detail );\n\n\t\t}\n\n\t}\n\n\tfunction subdivideFace( a, b, c, detail ) {\n\n\t\tvar cols = Math.pow( 2, detail );\n\n\t\t// we use this multidimensional array as a data structure for creating the subdivision\n\n\t\tvar v = [];\n\n\t\tvar i, j;\n\n\t\t// construct all of the vertices for this subdivision\n\n\t\tfor ( i = 0 ; i <= cols; i ++ ) {\n\n\t\t\tv[ i ] = [];\n\n\t\t\tvar aj = a.clone().lerp( c, i / cols );\n\t\t\tvar bj = b.clone().lerp( c, i / cols );\n\n\t\t\tvar rows = cols - i;\n\n\t\t\tfor ( j = 0; j <= rows; j ++ ) {\n\n\t\t\t\tif ( j === 0 && i === cols ) {\n\n\t\t\t\t\tv[ i ][ j ] = aj;\n\n\t\t\t\t} else {\n\n\t\t\t\t\tv[ i ][ j ] = aj.clone().lerp( bj, j / rows );\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t}\n\n\t\t// construct all of the faces\n\n\t\tfor ( i = 0; i < cols ; i ++ ) {\n\n\t\t\tfor ( j = 0; j < 2 * ( cols - i ) - 1; j ++ ) {\n\n\t\t\t\tvar k = Math.floor( j / 2 );\n\n\t\t\t\tif ( j % 2 === 0 ) {\n\n\t\t\t\t\tpushVertex( v[ i ][ k + 1 ] );\n\t\t\t\t\tpushVertex( v[ i + 1 ][ k ] );\n\t\t\t\t\tpushVertex( v[ i ][ k ] );\n\n\t\t\t\t} else {\n\n\t\t\t\t\tpushVertex( v[ i ][ k + 1 ] );\n\t\t\t\t\tpushVertex( v[ i + 1 ][ k + 1 ] );\n\t\t\t\t\tpushVertex( v[ i + 1 ][ k ] );\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t}\n\n\t}\n\n\tfunction appplyRadius( radius ) {\n\n\t\tvar vertex = new Vector3();\n\n\t\t// iterate over the entire buffer and apply the radius to each vertex\n\n\t\tfor ( var i = 0; i < vertexBuffer.length; i += 3 ) {\n\n\t\t\tvertex.x = vertexBuffer[ i + 0 ];\n\t\t\tvertex.y = vertexBuffer[ i + 1 ];\n\t\t\tvertex.z = vertexBuffer[ i + 2 ];\n\n\t\t\tvertex.normalize().multiplyScalar( radius );\n\n\t\t\tvertexBuffer[ i + 0 ] = vertex.x;\n\t\t\tvertexBuffer[ i + 1 ] = vertex.y;\n\t\t\tvertexBuffer[ i + 2 ] = vertex.z;\n\n\t\t}\n\n\t}\n\n\tfunction generateUVs() {\n\n\t\tvar vertex = new Vector3();\n\n\t\tfor ( var i = 0; i < vertexBuffer.length; i += 3 ) {\n\n\t\t\tvertex.x = vertexBuffer[ i + 0 ];\n\t\t\tvertex.y = vertexBuffer[ i + 1 ];\n\t\t\tvertex.z = vertexBuffer[ i + 2 ];\n\n\t\t\tvar u = azimuth( vertex ) / 2 / Math.PI + 0.5;\n\t\t\tvar v = inclination( vertex ) / Math.PI + 0.5;\n\t\t\tuvBuffer.push( u, 1 - v );\n\n\t\t}\n\n\t\tcorrectUVs();\n\n\t\tcorrectSeam();\n\n\t}\n\n\tfunction correctSeam() {\n\n\t\t// handle case when face straddles the seam, see #3269\n\n\t\tfor ( var i = 0; i < uvBuffer.length; i += 6 ) {\n\n\t\t\t// uv data of a single face\n\n\t\t\tvar x0 = uvBuffer[ i + 0 ];\n\t\t\tvar x1 = uvBuffer[ i + 2 ];\n\t\t\tvar x2 = uvBuffer[ i + 4 ];\n\n\t\t\tvar max = Math.max( x0, x1, x2 );\n\t\t\tvar min = Math.min( x0, x1, x2 );\n\n\t\t\t// 0.9 is somewhat arbitrary\n\n\t\t\tif ( max > 0.9 && min < 0.1 ) {\n\n\t\t\t\tif ( x0 < 0.2 ) uvBuffer[ i + 0 ] += 1;\n\t\t\t\tif ( x1 < 0.2 ) uvBuffer[ i + 2 ] += 1;\n\t\t\t\tif ( x2 < 0.2 ) uvBuffer[ i + 4 ] += 1;\n\n\t\t\t}\n\n\t\t}\n\n\t}\n\n\tfunction pushVertex( vertex ) {\n\n\t\tvertexBuffer.push( vertex.x, vertex.y, vertex.z );\n\n\t}\n\n\tfunction getVertexByIndex( index, vertex ) {\n\n\t\tvar stride = index * 3;\n\n\t\tvertex.x = vertices[ stride + 0 ];\n\t\tvertex.y = vertices[ stride + 1 ];\n\t\tvertex.z = vertices[ stride + 2 ];\n\n\t}\n\n\tfunction correctUVs() {\n\n\t\tvar a = new Vector3();\n\t\tvar b = new Vector3();\n\t\tvar c = new Vector3();\n\n\t\tvar centroid = new Vector3();\n\n\t\tvar uvA = new Vector2();\n\t\tvar uvB = new Vector2();\n\t\tvar uvC = new Vector2();\n\n\t\tfor ( var i = 0, j = 0; i < vertexBuffer.length; i += 9, j += 6 ) {\n\n\t\t\ta.set( vertexBuffer[ i + 0 ], vertexBuffer[ i + 1 ], vertexBuffer[ i + 2 ] );\n\t\t\tb.set( vertexBuffer[ i + 3 ], vertexBuffer[ i + 4 ], vertexBuffer[ i + 5 ] );\n\t\t\tc.set( vertexBuffer[ i + 6 ], vertexBuffer[ i + 7 ], vertexBuffer[ i + 8 ] );\n\n\t\t\tuvA.set( uvBuffer[ j + 0 ], uvBuffer[ j + 1 ] );\n\t\t\tuvB.set( uvBuffer[ j + 2 ], uvBuffer[ j + 3 ] );\n\t\t\tuvC.set( uvBuffer[ j + 4 ], uvBuffer[ j + 5 ] );\n\n\t\t\tcentroid.copy( a ).add( b ).add( c ).divideScalar( 3 );\n\n\t\t\tvar azi = azimuth( centroid );\n\n\t\t\tcorrectUV( uvA, j + 0, a, azi );\n\t\t\tcorrectUV( uvB, j + 2, b, azi );\n\t\t\tcorrectUV( uvC, j + 4, c, azi );\n\n\t\t}\n\n\t}\n\n\tfunction correctUV( uv, stride, vector, azimuth ) {\n\n\t\tif ( ( azimuth < 0 ) && ( uv.x === 1 ) ) {\n\n\t\t\tuvBuffer[ stride ] = uv.x - 1;\n\n\t\t}\n\n\t\tif ( ( vector.x === 0 ) && ( vector.z === 0 ) ) {\n\n\t\t\tuvBuffer[ stride ] = azimuth / 2 / Math.PI + 0.5;\n\n\t\t}\n\n\t}\n\n\t// Angle around the Y axis, counter-clockwise when looking from above.\n\n\tfunction azimuth( vector ) {\n\n\t\treturn Math.atan2( vector.z, - vector.x );\n\n\t}\n\n\n\t// Angle above the XZ plane.\n\n\tfunction inclination( vector ) {\n\n\t\treturn Math.atan2( - vector.y, Math.sqrt( ( vector.x * vector.x ) + ( vector.z * vector.z ) ) );\n\n\t}\n\n}\n\nPolyhedronBufferGeometry.prototype = Object.create( BufferGeometry.prototype );\nPolyhedronBufferGeometry.prototype.constructor = PolyhedronBufferGeometry;\n\n\nexport { PolyhedronBufferGeometry };\n","import { PolyhedronBufferGeometry } from './PolyhedronBufferGeometry';\n\n/**\n * @author Mugen87 / https://github.com/Mugen87\n */\n\nfunction TetrahedronBufferGeometry( radius, detail ) {\n\n\tvar vertices = [\n\t\t1, 1, 1, - 1, - 1, 1, - 1, 1, - 1, 1, - 1, - 1\n\t];\n\n\tvar indices = [\n\t\t2, 1, 0, 0, 3, 2, 1, 3, 0, 2, 3, 1\n\t];\n\n\tPolyhedronBufferGeometry.call( this, vertices, indices, radius, detail );\n\n\tthis.type = 'TetrahedronBufferGeometry';\n\n\tthis.parameters = {\n\t\tradius: radius,\n\t\tdetail: detail\n\t};\n\n}\n\nTetrahedronBufferGeometry.prototype = Object.create( PolyhedronBufferGeometry.prototype );\nTetrahedronBufferGeometry.prototype.constructor = TetrahedronBufferGeometry;\n\n\nexport { TetrahedronBufferGeometry };\n","import { Geometry } from '../core/Geometry';\nimport { TetrahedronBufferGeometry } from './TetrahedronBufferGeometry';\n\n/**\n * @author timothypratley / https://github.com/timothypratley\n */\n\nfunction TetrahedronGeometry( radius, detail ) {\n\n\tGeometry.call( this );\n\n\tthis.type = 'TetrahedronGeometry';\n\n\tthis.parameters = {\n\t\tradius: radius,\n\t\tdetail: detail\n\t};\n\n\tthis.fromBufferGeometry( new TetrahedronBufferGeometry( radius, detail ) );\n\tthis.mergeVertices();\n\n}\n\nTetrahedronGeometry.prototype = Object.create( Geometry.prototype );\nTetrahedronGeometry.prototype.constructor = TetrahedronGeometry;\n\n\nexport { TetrahedronGeometry };\n","import { PolyhedronBufferGeometry } from './PolyhedronBufferGeometry';\n\n/**\n * @author Mugen87 / https://github.com/Mugen87\n */\n\nfunction OctahedronBufferGeometry( radius,detail ) {\n\n\tvar vertices = [\n\t\t1, 0, 0, - 1, 0, 0, 0, 1, 0, 0, - 1, 0, 0, 0, 1, 0, 0, - 1\n\t];\n\n\tvar indices = [\n\t\t0, 2, 4, 0, 4, 3, 0, 3, 5, 0, 5, 2, 1, 2, 5, 1, 5, 3, 1, 3, 4, 1, 4, 2\n\t];\n\n\tPolyhedronBufferGeometry.call( this, vertices, indices, radius, detail );\n\n\tthis.type = 'OctahedronBufferGeometry';\n\n\tthis.parameters = {\n\t\tradius: radius,\n\t\tdetail: detail\n\t};\n\n}\n\nOctahedronBufferGeometry.prototype = Object.create( PolyhedronBufferGeometry.prototype );\nOctahedronBufferGeometry.prototype.constructor = OctahedronBufferGeometry;\n\n\nexport { OctahedronBufferGeometry };\n","import { Geometry } from '../core/Geometry';\nimport { OctahedronBufferGeometry } from './OctahedronBufferGeometry';\n\n/**\n * @author timothypratley / https://github.com/timothypratley\n */\n\nfunction OctahedronGeometry( radius, detail ) {\n\n\tGeometry.call( this );\n\n\tthis.type = 'OctahedronGeometry';\n\n\tthis.parameters = {\n\t\tradius: radius,\n\t\tdetail: detail\n\t};\n\n\tthis.fromBufferGeometry( new OctahedronBufferGeometry( radius, detail ) );\n\tthis.mergeVertices();\n\n}\n\nOctahedronGeometry.prototype = Object.create( Geometry.prototype );\nOctahedronGeometry.prototype.constructor = OctahedronGeometry;\n\n\nexport { OctahedronGeometry };\n","import { PolyhedronBufferGeometry } from './PolyhedronBufferGeometry';\n\n/**\n * @author Mugen87 / https://github.com/Mugen87\n */\n\nfunction IcosahedronBufferGeometry( radius, detail ) {\n\n\tvar t = ( 1 + Math.sqrt( 5 ) ) / 2;\n\n\tvar vertices = [\n\t\t- 1, t, 0, 1, t, 0, - 1, - t, 0, 1, - t, 0,\n\t\t 0, - 1, t, 0, 1, t, 0, - 1, - t, 0, 1, - t,\n\t\t t, 0, - 1, t, 0, 1, - t, 0, - 1, - t, 0, 1\n\t];\n\n\tvar indices = [\n\t\t 0, 11, 5, 0, 5, 1, 0, 1, 7, 0, 7, 10, 0, 10, 11,\n\t\t 1, 5, 9, 5, 11, 4, 11, 10, 2, 10, 7, 6, 7, 1, 8,\n\t\t 3, 9, 4, 3, 4, 2, 3, 2, 6, 3, 6, 8, 3, 8, 9,\n\t\t 4, 9, 5, 2, 4, 11, 6, 2, 10, 8, 6, 7, 9, 8, 1\n\t];\n\n\tPolyhedronBufferGeometry.call( this, vertices, indices, radius, detail );\n\n\tthis.type = 'IcosahedronBufferGeometry';\n\n\tthis.parameters = {\n\t\tradius: radius,\n\t\tdetail: detail\n\t};\n\n}\n\nIcosahedronBufferGeometry.prototype = Object.create( PolyhedronBufferGeometry.prototype );\nIcosahedronBufferGeometry.prototype.constructor = IcosahedronBufferGeometry;\n\n\nexport { IcosahedronBufferGeometry };\n","import { Geometry } from '../core/Geometry';\nimport { IcosahedronBufferGeometry } from './IcosahedronBufferGeometry';\n\n/**\n * @author timothypratley / https://github.com/timothypratley\n */\n\nfunction IcosahedronGeometry( radius, detail ) {\n\n \tGeometry.call( this );\n\n\tthis.type = 'IcosahedronGeometry';\n\n\tthis.parameters = {\n\t\tradius: radius,\n\t\tdetail: detail\n\t};\n\n\tthis.fromBufferGeometry( new IcosahedronBufferGeometry( radius, detail ) );\n\tthis.mergeVertices();\n\n}\n\nIcosahedronGeometry.prototype = Object.create( Geometry.prototype );\nIcosahedronGeometry.prototype.constructor = IcosahedronGeometry;\n\n\nexport { IcosahedronGeometry };\n","import { PolyhedronBufferGeometry } from './PolyhedronBufferGeometry';\n\n/**\n * @author Mugen87 / https://github.com/Mugen87\n */\n\nfunction DodecahedronBufferGeometry( radius, detail ) {\n\n\tvar t = ( 1 + Math.sqrt( 5 ) ) / 2;\n\tvar r = 1 / t;\n\n\tvar vertices = [\n\n\t\t// (±1, ±1, ±1)\n\t\t- 1, - 1, - 1, - 1, - 1, 1,\n\t\t- 1, 1, - 1, - 1, 1, 1,\n\t\t 1, - 1, - 1, 1, - 1, 1,\n\t\t 1, 1, - 1, 1, 1, 1,\n\n\t\t// (0, ±1/φ, ±φ)\n\t\t 0, - r, - t, 0, - r, t,\n\t\t 0, r, - t, 0, r, t,\n\n\t\t// (±1/φ, ±φ, 0)\n\t\t- r, - t, 0, - r, t, 0,\n\t\t r, - t, 0, r, t, 0,\n\n\t\t// (±φ, 0, ±1/φ)\n\t\t- t, 0, - r, t, 0, - r,\n\t\t- t, 0, r, t, 0, r\n\t];\n\n\tvar indices = [\n\t\t 3, 11, 7, 3, 7, 15, 3, 15, 13,\n\t\t 7, 19, 17, 7, 17, 6, 7, 6, 15,\n\t\t17, 4, 8, 17, 8, 10, 17, 10, 6,\n\t\t 8, 0, 16, 8, 16, 2, 8, 2, 10,\n\t\t 0, 12, 1, 0, 1, 18, 0, 18, 16,\n\t\t 6, 10, 2, 6, 2, 13, 6, 13, 15,\n\t\t 2, 16, 18, 2, 18, 3, 2, 3, 13,\n\t\t18, 1, 9, 18, 9, 11, 18, 11, 3,\n\t\t 4, 14, 12, 4, 12, 0, 4, 0, 8,\n\t\t11, 9, 5, 11, 5, 19, 11, 19, 7,\n\t\t19, 5, 14, 19, 14, 4, 19, 4, 17,\n\t\t 1, 12, 14, 1, 14, 5, 1, 5, 9\n\t];\n\n\tPolyhedronBufferGeometry.call( this, vertices, indices, radius, detail );\n\n\tthis.type = 'DodecahedronBufferGeometry';\n\n\tthis.parameters = {\n\t\tradius: radius,\n\t\tdetail: detail\n\t};\n\n}\n\nDodecahedronBufferGeometry.prototype = Object.create( PolyhedronBufferGeometry.prototype );\nDodecahedronBufferGeometry.prototype.constructor = DodecahedronBufferGeometry;\n\n\nexport { DodecahedronBufferGeometry };\n","import { Geometry } from '../core/Geometry';\nimport { DodecahedronBufferGeometry } from './DodecahedronBufferGeometry';\n\n/**\n * @author Abe Pazos / https://hamoid.com\n */\n\nfunction DodecahedronGeometry( radius, detail ) {\n\n\tGeometry.call( this );\n\n\tthis.type = 'DodecahedronGeometry';\n\n\tthis.parameters = {\n\t\tradius: radius,\n\t\tdetail: detail\n\t};\n\n\tthis.fromBufferGeometry( new DodecahedronBufferGeometry( radius, detail ) );\n\tthis.mergeVertices();\n\n}\n\nDodecahedronGeometry.prototype = Object.create( Geometry.prototype );\nDodecahedronGeometry.prototype.constructor = DodecahedronGeometry;\n\n\nexport { DodecahedronGeometry };\n","import { Geometry } from '../core/Geometry';\nimport { PolyhedronBufferGeometry } from './PolyhedronBufferGeometry';\n\n/**\n * @author clockworkgeek / https://github.com/clockworkgeek\n * @author timothypratley / https://github.com/timothypratley\n * @author WestLangley / http://github.com/WestLangley\n*/\n\nfunction PolyhedronGeometry( vertices, indices, radius, detail ) {\n\n\tGeometry.call( this );\n\n\tthis.type = 'PolyhedronGeometry';\n\n\tthis.parameters = {\n\t\tvertices: vertices,\n\t\tindices: indices,\n\t\tradius: radius,\n\t\tdetail: detail\n\t};\n\n\tthis.fromBufferGeometry( new PolyhedronBufferGeometry( vertices, indices, radius, detail ) );\n\tthis.mergeVertices();\n\n}\n\nPolyhedronGeometry.prototype = Object.create( Geometry.prototype );\nPolyhedronGeometry.prototype.constructor = PolyhedronGeometry;\n\n\nexport { PolyhedronGeometry };\n","import { BufferGeometry } from '../core/BufferGeometry';\nimport { Float32Attribute, Uint16Attribute, Uint32Attribute } from '../core/BufferAttribute';\nimport { Vector2 } from '../math/Vector2';\nimport { Vector3 } from '../math/Vector3';\n\n/**\n * @author Mugen87 / https://github.com/Mugen87\n *\n * Creates a tube which extrudes along a 3d spline.\n *\n */\n\nfunction TubeBufferGeometry( path, tubularSegments, radius, radialSegments, closed ) {\n\n\tBufferGeometry.call( this );\n\n\tthis.type = 'TubeBufferGeometry';\n\n\tthis.parameters = {\n\t\tpath: path,\n\t\ttubularSegments: tubularSegments,\n\t\tradius: radius,\n\t\tradialSegments: radialSegments,\n\t\tclosed: closed\n\t};\n\n\ttubularSegments = tubularSegments || 64;\n\tradius = radius || 1;\n\tradialSegments = radialSegments || 8;\n\tclosed = closed || false;\n\n\tvar frames = path.computeFrenetFrames( tubularSegments, closed );\n\n\t// expose internals\n\n\tthis.tangents = frames.tangents;\n\tthis.normals = frames.normals;\n\tthis.binormals = frames.binormals;\n\n\t// helper variables\n\n\tvar vertex = new Vector3();\n\tvar normal = new Vector3();\n\tvar uv = new Vector2();\n\n\tvar i, j;\n\n\t// buffer\n\n\tvar vertices = [];\n\tvar normals = [];\n\tvar uvs = [];\n\tvar indices = [];\n\n\t// create buffer data\n\n\tgenerateBufferData();\n\n\t// build geometry\n\n\tthis.setIndex( ( indices.length > 65535 ? Uint32Attribute : Uint16Attribute )( indices, 1 ) );\n\tthis.addAttribute( 'position', Float32Attribute( vertices, 3 ) );\n\tthis.addAttribute( 'normal', Float32Attribute( normals, 3 ) );\n\tthis.addAttribute( 'uv', Float32Attribute( uvs, 2 ) );\n\n\t// functions\n\n\tfunction generateBufferData() {\n\n\t\tfor ( i = 0; i < tubularSegments; i ++ ) {\n\n\t\t\tgenerateSegment( i );\n\n\t\t}\n\n\t\t// if the geometry is not closed, generate the last row of vertices and normals\n\t\t// at the regular position on the given path\n\t\t//\n\t\t// if the geometry is closed, duplicate the first row of vertices and normals (uvs will differ)\n\n\t\tgenerateSegment( ( closed === false ) ? tubularSegments : 0 );\n\n\t\t// uvs are generated in a separate function.\n\t\t// this makes it easy compute correct values for closed geometries\n\n\t\tgenerateUVs();\n\n\t\t// finally create faces\n\n\t\tgenerateIndices();\n\n\t}\n\n\tfunction generateSegment( i ) {\n\n\t\t// we use getPointAt to sample evenly distributed points from the given path\n\n\t\tvar P = path.getPointAt( i / tubularSegments );\n\n\t\t// retrieve corresponding normal and binormal\n\n\t\tvar N = frames.normals[ i ];\n\t\tvar B = frames.binormals[ i ];\n\n\t\t// generate normals and vertices for the current segment\n\n\t\tfor ( j = 0; j <= radialSegments; j ++ ) {\n\n\t\t\tvar v = j / radialSegments * Math.PI * 2;\n\n\t\t\tvar sin = Math.sin( v );\n\t\t\tvar cos = - Math.cos( v );\n\n\t\t\t// normal\n\n\t\t\tnormal.x = ( cos * N.x + sin * B.x );\n\t\t\tnormal.y = ( cos * N.y + sin * B.y );\n\t\t\tnormal.z = ( cos * N.z + sin * B.z );\n\t\t\tnormal.normalize();\n\n\t\t\tnormals.push( normal.x, normal.y, normal.z );\n\n\t\t\t// vertex\n\n\t\t\tvertex.x = P.x + radius * normal.x;\n\t\t\tvertex.y = P.y + radius * normal.y;\n\t\t\tvertex.z = P.z + radius * normal.z;\n\n\t\t\tvertices.push( vertex.x, vertex.y, vertex.z );\n\n\t\t}\n\n\t}\n\n\tfunction generateIndices() {\n\n\t\tfor ( j = 1; j <= tubularSegments; j ++ ) {\n\n\t\t\tfor ( i = 1; i <= radialSegments; i ++ ) {\n\n\t\t\t\tvar a = ( radialSegments + 1 ) * ( j - 1 ) + ( i - 1 );\n\t\t\t\tvar b = ( radialSegments + 1 ) * j + ( i - 1 );\n\t\t\t\tvar c = ( radialSegments + 1 ) * j + i;\n\t\t\t\tvar d = ( radialSegments + 1 ) * ( j - 1 ) + i;\n\n\t\t\t\t// faces\n\n\t\t\t\tindices.push( a, b, d );\n\t\t\t\tindices.push( b, c, d );\n\n\t\t\t}\n\n\t\t}\n\n\t}\n\n\tfunction generateUVs() {\n\n\t\tfor ( i = 0; i <= tubularSegments; i ++ ) {\n\n\t\t\tfor ( j = 0; j <= radialSegments; j ++ ) {\n\n\t\t\t\tuv.x = i / tubularSegments;\n\t\t\t\tuv.y = j / radialSegments;\n\n\t\t\t\tuvs.push( uv.x, uv.y );\n\n\t\t\t}\n\n\t\t}\n\n\t}\n\n}\n\nTubeBufferGeometry.prototype = Object.create( BufferGeometry.prototype );\nTubeBufferGeometry.prototype.constructor = TubeBufferGeometry;\n\n\nexport { TubeBufferGeometry };\n","import { Geometry } from '../core/Geometry';\nimport { TubeBufferGeometry } from './TubeBufferGeometry';\n\n/**\n * @author oosmoxiecode / https://github.com/oosmoxiecode\n * @author WestLangley / https://github.com/WestLangley\n * @author zz85 / https://github.com/zz85\n * @author miningold / https://github.com/miningold\n * @author jonobr1 / https://github.com/jonobr1\n *\n * Creates a tube which extrudes along a 3d spline.\n */\n\nfunction TubeGeometry( path, tubularSegments, radius, radialSegments, closed, taper ) {\n\n\tGeometry.call( this );\n\n\tthis.type = 'TubeGeometry';\n\n\tthis.parameters = {\n\t\tpath: path,\n\t\ttubularSegments: tubularSegments,\n\t\tradius: radius,\n\t\tradialSegments: radialSegments,\n\t\tclosed: closed\n\t};\n\n\tif ( taper !== undefined ) console.warn( 'THREE.TubeGeometry: taper has been removed.' );\n\n\tvar bufferGeometry = new TubeBufferGeometry( path, tubularSegments, radius, radialSegments, closed );\n\n\t// expose internals\n\n\tthis.tangents = bufferGeometry.tangents;\n\tthis.normals = bufferGeometry.normals;\n\tthis.binormals = bufferGeometry.binormals;\n\n\t// create geometry\n\n\tthis.fromBufferGeometry( bufferGeometry );\n\tthis.mergeVertices();\n\n}\n\nTubeGeometry.prototype = Object.create( Geometry.prototype );\nTubeGeometry.prototype.constructor = TubeGeometry;\n\n\nexport { TubeGeometry };\n","import { BufferGeometry } from '../core/BufferGeometry';\nimport { Vector3 } from '../math/Vector3';\nimport { Vector2 } from '../math/Vector2';\nimport { BufferAttribute } from '../core/BufferAttribute';\n\n/**\n * @author Mugen87 / https://github.com/Mugen87\n *\n * see: http://www.blackpawn.com/texts/pqtorus/\n */\nfunction TorusKnotBufferGeometry( radius, tube, tubularSegments, radialSegments, p, q ) {\n\n\tBufferGeometry.call( this );\n\n\tthis.type = 'TorusKnotBufferGeometry';\n\n\tthis.parameters = {\n\t\tradius: radius,\n\t\ttube: tube,\n\t\ttubularSegments: tubularSegments,\n\t\tradialSegments: radialSegments,\n\t\tp: p,\n\t\tq: q\n\t};\n\n\tradius = radius || 100;\n\ttube = tube || 40;\n\ttubularSegments = Math.floor( tubularSegments ) || 64;\n\tradialSegments = Math.floor( radialSegments ) || 8;\n\tp = p || 2;\n\tq = q || 3;\n\n\t// used to calculate buffer length\n\tvar vertexCount = ( ( radialSegments + 1 ) * ( tubularSegments + 1 ) );\n\tvar indexCount = radialSegments * tubularSegments * 2 * 3;\n\n\t// buffers\n\tvar indices = new BufferAttribute( new ( indexCount > 65535 ? Uint32Array : Uint16Array )( indexCount ) , 1 );\n\tvar vertices = new BufferAttribute( new Float32Array( vertexCount * 3 ), 3 );\n\tvar normals = new BufferAttribute( new Float32Array( vertexCount * 3 ), 3 );\n\tvar uvs = new BufferAttribute( new Float32Array( vertexCount * 2 ), 2 );\n\n\t// helper variables\n\tvar i, j, index = 0, indexOffset = 0;\n\n\tvar vertex = new Vector3();\n\tvar normal = new Vector3();\n\tvar uv = new Vector2();\n\n\tvar P1 = new Vector3();\n\tvar P2 = new Vector3();\n\n\tvar B = new Vector3();\n\tvar T = new Vector3();\n\tvar N = new Vector3();\n\n\t// generate vertices, normals and uvs\n\n\tfor ( i = 0; i <= tubularSegments; ++ i ) {\n\n\t\t// the radian \"u\" is used to calculate the position on the torus curve of the current tubular segement\n\n\t\tvar u = i / tubularSegments * p * Math.PI * 2;\n\n\t\t// now we calculate two points. P1 is our current position on the curve, P2 is a little farther ahead.\n\t\t// these points are used to create a special \"coordinate space\", which is necessary to calculate the correct vertex positions\n\n\t\tcalculatePositionOnCurve( u, p, q, radius, P1 );\n\t\tcalculatePositionOnCurve( u + 0.01, p, q, radius, P2 );\n\n\t\t// calculate orthonormal basis\n\n\t\tT.subVectors( P2, P1 );\n\t\tN.addVectors( P2, P1 );\n\t\tB.crossVectors( T, N );\n\t\tN.crossVectors( B, T );\n\n\t\t// normalize B, N. T can be ignored, we don't use it\n\n\t\tB.normalize();\n\t\tN.normalize();\n\n\t\tfor ( j = 0; j <= radialSegments; ++ j ) {\n\n\t\t\t// now calculate the vertices. they are nothing more than an extrusion of the torus curve.\n\t\t\t// because we extrude a shape in the xy-plane, there is no need to calculate a z-value.\n\n\t\t\tvar v = j / radialSegments * Math.PI * 2;\n\t\t\tvar cx = - tube * Math.cos( v );\n\t\t\tvar cy = tube * Math.sin( v );\n\n\t\t\t// now calculate the final vertex position.\n\t\t\t// first we orient the extrusion with our basis vectos, then we add it to the current position on the curve\n\n\t\t\tvertex.x = P1.x + ( cx * N.x + cy * B.x );\n\t\t\tvertex.y = P1.y + ( cx * N.y + cy * B.y );\n\t\t\tvertex.z = P1.z + ( cx * N.z + cy * B.z );\n\n\t\t\t// vertex\n\t\t\tvertices.setXYZ( index, vertex.x, vertex.y, vertex.z );\n\n\t\t\t// normal (P1 is always the center/origin of the extrusion, thus we can use it to calculate the normal)\n\t\t\tnormal.subVectors( vertex, P1 ).normalize();\n\t\t\tnormals.setXYZ( index, normal.x, normal.y, normal.z );\n\n\t\t\t// uv\n\t\t\tuv.x = i / tubularSegments;\n\t\t\tuv.y = j / radialSegments;\n\t\t\tuvs.setXY( index, uv.x, uv.y );\n\n\t\t\t// increase index\n\t\t\tindex ++;\n\n\t\t}\n\n\t}\n\n\t// generate indices\n\n\tfor ( j = 1; j <= tubularSegments; j ++ ) {\n\n\t\tfor ( i = 1; i <= radialSegments; i ++ ) {\n\n\t\t\t// indices\n\t\t\tvar a = ( radialSegments + 1 ) * ( j - 1 ) + ( i - 1 );\n\t\t\tvar b = ( radialSegments + 1 ) * j + ( i - 1 );\n\t\t\tvar c = ( radialSegments + 1 ) * j + i;\n\t\t\tvar d = ( radialSegments + 1 ) * ( j - 1 ) + i;\n\n\t\t\t// face one\n\t\t\tindices.setX( indexOffset, a ); indexOffset++;\n\t\t\tindices.setX( indexOffset, b ); indexOffset++;\n\t\t\tindices.setX( indexOffset, d ); indexOffset++;\n\n\t\t\t// face two\n\t\t\tindices.setX( indexOffset, b ); indexOffset++;\n\t\t\tindices.setX( indexOffset, c ); indexOffset++;\n\t\t\tindices.setX( indexOffset, d ); indexOffset++;\n\n\t\t}\n\n\t}\n\n\t// build geometry\n\n\tthis.setIndex( indices );\n\tthis.addAttribute( 'position', vertices );\n\tthis.addAttribute( 'normal', normals );\n\tthis.addAttribute( 'uv', uvs );\n\n\t// this function calculates the current position on the torus curve\n\n\tfunction calculatePositionOnCurve( u, p, q, radius, position ) {\n\n\t\tvar cu = Math.cos( u );\n\t\tvar su = Math.sin( u );\n\t\tvar quOverP = q / p * u;\n\t\tvar cs = Math.cos( quOverP );\n\n\t\tposition.x = radius * ( 2 + cs ) * 0.5 * cu;\n\t\tposition.y = radius * ( 2 + cs ) * su * 0.5;\n\t\tposition.z = radius * Math.sin( quOverP ) * 0.5;\n\n\t}\n\n}\n\nTorusKnotBufferGeometry.prototype = Object.create( BufferGeometry.prototype );\nTorusKnotBufferGeometry.prototype.constructor = TorusKnotBufferGeometry;\n\n\nexport { TorusKnotBufferGeometry };\n","import { Geometry } from '../core/Geometry';\nimport { TorusKnotBufferGeometry } from './TorusKnotBufferGeometry';\n\n/**\n * @author oosmoxiecode\n */\n\nfunction TorusKnotGeometry( radius, tube, tubularSegments, radialSegments, p, q, heightScale ) {\n\n\tGeometry.call( this );\n\n\tthis.type = 'TorusKnotGeometry';\n\n\tthis.parameters = {\n\t\tradius: radius,\n\t\ttube: tube,\n\t\ttubularSegments: tubularSegments,\n\t\tradialSegments: radialSegments,\n\t\tp: p,\n\t\tq: q\n\t};\n\n\tif( heightScale !== undefined ) console.warn( 'THREE.TorusKnotGeometry: heightScale has been deprecated. Use .scale( x, y, z ) instead.' );\n\n\tthis.fromBufferGeometry( new TorusKnotBufferGeometry( radius, tube, tubularSegments, radialSegments, p, q ) );\n\tthis.mergeVertices();\n\n}\n\nTorusKnotGeometry.prototype = Object.create( Geometry.prototype );\nTorusKnotGeometry.prototype.constructor = TorusKnotGeometry;\n\n\nexport { TorusKnotGeometry };\n","import { BufferGeometry } from '../core/BufferGeometry';\nimport { BufferAttribute } from '../core/BufferAttribute';\nimport { Vector3 } from '../math/Vector3';\n\n/**\n * @author Mugen87 / https://github.com/Mugen87\n */\n\nfunction TorusBufferGeometry( radius, tube, radialSegments, tubularSegments, arc ) {\n\n\tBufferGeometry.call( this );\n\n\tthis.type = 'TorusBufferGeometry';\n\n\tthis.parameters = {\n\t\tradius: radius,\n\t\ttube: tube,\n\t\tradialSegments: radialSegments,\n\t\ttubularSegments: tubularSegments,\n\t\tarc: arc\n\t};\n\n\tradius = radius || 100;\n\ttube = tube || 40;\n\tradialSegments = Math.floor( radialSegments ) || 8;\n\ttubularSegments = Math.floor( tubularSegments ) || 6;\n\tarc = arc || Math.PI * 2;\n\n\t// used to calculate buffer length\n\tvar vertexCount = ( ( radialSegments + 1 ) * ( tubularSegments + 1 ) );\n\tvar indexCount = radialSegments * tubularSegments * 2 * 3;\n\n\t// buffers\n\tvar indices = new ( indexCount > 65535 ? Uint32Array : Uint16Array )( indexCount );\n\tvar vertices = new Float32Array( vertexCount * 3 );\n\tvar normals = new Float32Array( vertexCount * 3 );\n\tvar uvs = new Float32Array( vertexCount * 2 );\n\n\t// offset variables\n\tvar vertexBufferOffset = 0;\n\tvar uvBufferOffset = 0;\n\tvar indexBufferOffset = 0;\n\n\t// helper variables\n\tvar center = new Vector3();\n\tvar vertex = new Vector3();\n\tvar normal = new Vector3();\n\n\tvar j, i;\n\n\t// generate vertices, normals and uvs\n\n\tfor ( j = 0; j <= radialSegments; j ++ ) {\n\n\t\tfor ( i = 0; i <= tubularSegments; i ++ ) {\n\n\t\t\tvar u = i / tubularSegments * arc;\n\t\t\tvar v = j / radialSegments * Math.PI * 2;\n\n\t\t\t// vertex\n\t\t\tvertex.x = ( radius + tube * Math.cos( v ) ) * Math.cos( u );\n\t\t\tvertex.y = ( radius + tube * Math.cos( v ) ) * Math.sin( u );\n\t\t\tvertex.z = tube * Math.sin( v );\n\n\t\t\tvertices[ vertexBufferOffset ] = vertex.x;\n\t\t\tvertices[ vertexBufferOffset + 1 ] = vertex.y;\n\t\t\tvertices[ vertexBufferOffset + 2 ] = vertex.z;\n\n\t\t\t// this vector is used to calculate the normal\n\t\t\tcenter.x = radius * Math.cos( u );\n\t\t\tcenter.y = radius * Math.sin( u );\n\n\t\t\t// normal\n\t\t\tnormal.subVectors( vertex, center ).normalize();\n\n\t\t\tnormals[ vertexBufferOffset ] = normal.x;\n\t\t\tnormals[ vertexBufferOffset + 1 ] = normal.y;\n\t\t\tnormals[ vertexBufferOffset + 2 ] = normal.z;\n\n\t\t\t// uv\n\t\t\tuvs[ uvBufferOffset ] = i / tubularSegments;\n\t\t\tuvs[ uvBufferOffset + 1 ] = j / radialSegments;\n\n\t\t\t// update offsets\n\t\t\tvertexBufferOffset += 3;\n\t\t\tuvBufferOffset += 2;\n\n\t\t}\n\n\t}\n\n\t// generate indices\n\n\tfor ( j = 1; j <= radialSegments; j ++ ) {\n\n\t\tfor ( i = 1; i <= tubularSegments; i ++ ) {\n\n\t\t\t// indices\n\t\t\tvar a = ( tubularSegments + 1 ) * j + i - 1;\n\t\t\tvar b = ( tubularSegments + 1 ) * ( j - 1 ) + i - 1;\n\t\t\tvar c = ( tubularSegments + 1 ) * ( j - 1 ) + i;\n\t\t\tvar d = ( tubularSegments + 1 ) * j + i;\n\n\t\t\t// face one\n\t\t\tindices[ indexBufferOffset ] = a;\n\t\t\tindices[ indexBufferOffset + 1 ] = b;\n\t\t\tindices[ indexBufferOffset + 2 ] = d;\n\n\t\t\t// face two\n\t\t\tindices[ indexBufferOffset + 3 ] = b;\n\t\t\tindices[ indexBufferOffset + 4 ] = c;\n\t\t\tindices[ indexBufferOffset + 5 ] = d;\n\n\t\t\t// update offset\n\t\t\tindexBufferOffset += 6;\n\n\t\t}\n\n\t}\n\n\t// build geometry\n\tthis.setIndex( new BufferAttribute( indices, 1 ) );\n\tthis.addAttribute( 'position', new BufferAttribute( vertices, 3 ) );\n\tthis.addAttribute( 'normal', new BufferAttribute( normals, 3 ) );\n\tthis.addAttribute( 'uv', new BufferAttribute( uvs, 2 ) );\n\n}\n\nTorusBufferGeometry.prototype = Object.create( BufferGeometry.prototype );\nTorusBufferGeometry.prototype.constructor = TorusBufferGeometry;\n\n\nexport { TorusBufferGeometry };\n","import { Geometry } from '../core/Geometry';\nimport { TorusBufferGeometry } from './TorusBufferGeometry';\n\n/**\n * @author oosmoxiecode\n * @author mrdoob / http://mrdoob.com/\n * based on http://code.google.com/p/away3d/source/browse/trunk/fp10/Away3DLite/src/away3dlite/primitives/Torus.as?r=2888\n */\n\nfunction TorusGeometry( radius, tube, radialSegments, tubularSegments, arc ) {\n\n\tGeometry.call( this );\n\n\tthis.type = 'TorusGeometry';\n\n\tthis.parameters = {\n\t\tradius: radius,\n\t\ttube: tube,\n\t\tradialSegments: radialSegments,\n\t\ttubularSegments: tubularSegments,\n\t\tarc: arc\n\t};\n\n\tthis.fromBufferGeometry( new TorusBufferGeometry( radius, tube, radialSegments, tubularSegments, arc ) );\n\n}\n\nTorusGeometry.prototype = Object.create( Geometry.prototype );\nTorusGeometry.prototype.constructor = TorusGeometry;\n\n\nexport { TorusGeometry };\n","/**\n * @author zz85 / http://www.lab4games.net/zz85/blog\n */\n\nvar ShapeUtils = {\n\n\t// calculate area of the contour polygon\n\n\tarea: function ( contour ) {\n\n\t\tvar n = contour.length;\n\t\tvar a = 0.0;\n\n\t\tfor ( var p = n - 1, q = 0; q < n; p = q ++ ) {\n\n\t\t\ta += contour[ p ].x * contour[ q ].y - contour[ q ].x * contour[ p ].y;\n\n\t\t}\n\n\t\treturn a * 0.5;\n\n\t},\n\n\ttriangulate: ( function () {\n\n\t\t/**\n\t\t * This code is a quick port of code written in C++ which was submitted to\n\t\t * flipcode.com by John W. Ratcliff // July 22, 2000\n\t\t * See original code and more information here:\n\t\t * http://www.flipcode.com/archives/Efficient_Polygon_Triangulation.shtml\n\t\t *\n\t\t * ported to actionscript by Zevan Rosser\n\t\t * www.actionsnippet.com\n\t\t *\n\t\t * ported to javascript by Joshua Koo\n\t\t * http://www.lab4games.net/zz85/blog\n\t\t *\n\t\t */\n\n\t\tfunction snip( contour, u, v, w, n, verts ) {\n\n\t\t\tvar p;\n\t\t\tvar ax, ay, bx, by;\n\t\t\tvar cx, cy, px, py;\n\n\t\t\tax = contour[ verts[ u ] ].x;\n\t\t\tay = contour[ verts[ u ] ].y;\n\n\t\t\tbx = contour[ verts[ v ] ].x;\n\t\t\tby = contour[ verts[ v ] ].y;\n\n\t\t\tcx = contour[ verts[ w ] ].x;\n\t\t\tcy = contour[ verts[ w ] ].y;\n\n\t\t\tif ( ( bx - ax ) * ( cy - ay ) - ( by - ay ) * ( cx - ax ) <= 0 ) return false;\n\n\t\t\tvar aX, aY, bX, bY, cX, cY;\n\t\t\tvar apx, apy, bpx, bpy, cpx, cpy;\n\t\t\tvar cCROSSap, bCROSScp, aCROSSbp;\n\n\t\t\taX = cx - bx; aY = cy - by;\n\t\t\tbX = ax - cx; bY = ay - cy;\n\t\t\tcX = bx - ax; cY = by - ay;\n\n\t\t\tfor ( p = 0; p < n; p ++ ) {\n\n\t\t\t\tpx = contour[ verts[ p ] ].x;\n\t\t\t\tpy = contour[ verts[ p ] ].y;\n\n\t\t\t\tif ( ( ( px === ax ) && ( py === ay ) ) ||\n\t\t\t\t\t ( ( px === bx ) && ( py === by ) ) ||\n\t\t\t\t\t ( ( px === cx ) && ( py === cy ) ) )\tcontinue;\n\n\t\t\t\tapx = px - ax; apy = py - ay;\n\t\t\t\tbpx = px - bx; bpy = py - by;\n\t\t\t\tcpx = px - cx; cpy = py - cy;\n\n\t\t\t\t// see if p is inside triangle abc\n\n\t\t\t\taCROSSbp = aX * bpy - aY * bpx;\n\t\t\t\tcCROSSap = cX * apy - cY * apx;\n\t\t\t\tbCROSScp = bX * cpy - bY * cpx;\n\n\t\t\t\tif ( ( aCROSSbp >= - Number.EPSILON ) && ( bCROSScp >= - Number.EPSILON ) && ( cCROSSap >= - Number.EPSILON ) ) return false;\n\n\t\t\t}\n\n\t\t\treturn true;\n\n\t\t}\n\n\t\t// takes in an contour array and returns\n\n\t\treturn function triangulate( contour, indices ) {\n\n\t\t\tvar n = contour.length;\n\n\t\t\tif ( n < 3 ) return null;\n\n\t\t\tvar result = [],\n\t\t\t\tverts = [],\n\t\t\t\tvertIndices = [];\n\n\t\t\t/* we want a counter-clockwise polygon in verts */\n\n\t\t\tvar u, v, w;\n\n\t\t\tif ( ShapeUtils.area( contour ) > 0.0 ) {\n\n\t\t\t\tfor ( v = 0; v < n; v ++ ) verts[ v ] = v;\n\n\t\t\t} else {\n\n\t\t\t\tfor ( v = 0; v < n; v ++ ) verts[ v ] = ( n - 1 ) - v;\n\n\t\t\t}\n\n\t\t\tvar nv = n;\n\n\t\t\t/* remove nv - 2 vertices, creating 1 triangle every time */\n\n\t\t\tvar count = 2 * nv; /* error detection */\n\n\t\t\tfor ( v = nv - 1; nv > 2; ) {\n\n\t\t\t\t/* if we loop, it is probably a non-simple polygon */\n\n\t\t\t\tif ( ( count -- ) <= 0 ) {\n\n\t\t\t\t\t//** Triangulate: ERROR - probable bad polygon!\n\n\t\t\t\t\t//throw ( \"Warning, unable to triangulate polygon!\" );\n\t\t\t\t\t//return null;\n\t\t\t\t\t// Sometimes warning is fine, especially polygons are triangulated in reverse.\n\t\t\t\t\tconsole.warn( 'THREE.ShapeUtils: Unable to triangulate polygon! in triangulate()' );\n\n\t\t\t\t\tif ( indices ) return vertIndices;\n\t\t\t\t\treturn result;\n\n\t\t\t\t}\n\n\t\t\t\t/* three consecutive vertices in current polygon, */\n\n\t\t\t\tu = v; \t \tif ( nv <= u ) u = 0; /* previous */\n\t\t\t\tv = u + 1; if ( nv <= v ) v = 0; /* new v */\n\t\t\t\tw = v + 1; if ( nv <= w ) w = 0; /* next */\n\n\t\t\t\tif ( snip( contour, u, v, w, nv, verts ) ) {\n\n\t\t\t\t\tvar a, b, c, s, t;\n\n\t\t\t\t\t/* true names of the vertices */\n\n\t\t\t\t\ta = verts[ u ];\n\t\t\t\t\tb = verts[ v ];\n\t\t\t\t\tc = verts[ w ];\n\n\t\t\t\t\t/* output Triangle */\n\n\t\t\t\t\tresult.push( [ contour[ a ],\n\t\t\t\t\t\tcontour[ b ],\n\t\t\t\t\t\tcontour[ c ] ] );\n\n\n\t\t\t\t\tvertIndices.push( [ verts[ u ], verts[ v ], verts[ w ] ] );\n\n\t\t\t\t\t/* remove v from the remaining polygon */\n\n\t\t\t\t\tfor ( s = v, t = v + 1; t < nv; s ++, t ++ ) {\n\n\t\t\t\t\t\tverts[ s ] = verts[ t ];\n\n\t\t\t\t\t}\n\n\t\t\t\t\tnv --;\n\n\t\t\t\t\t/* reset error detection counter */\n\n\t\t\t\t\tcount = 2 * nv;\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t\tif ( indices ) return vertIndices;\n\t\t\treturn result;\n\n\t\t}\n\n\t} )(),\n\n\ttriangulateShape: function ( contour, holes ) {\n\n\t\tfunction removeDupEndPts(points) {\n\n\t\t\tvar l = points.length;\n\n\t\t\tif ( l > 2 && points[ l - 1 ].equals( points[ 0 ] ) ) {\n\n\t\t\t\tpoints.pop();\n\n\t\t\t}\n\n\t\t}\n\n\t\tremoveDupEndPts( contour );\n\t\tholes.forEach( removeDupEndPts );\n\n\t\tfunction point_in_segment_2D_colin( inSegPt1, inSegPt2, inOtherPt ) {\n\n\t\t\t// inOtherPt needs to be collinear to the inSegment\n\t\t\tif ( inSegPt1.x !== inSegPt2.x ) {\n\n\t\t\t\tif ( inSegPt1.x < inSegPt2.x ) {\n\n\t\t\t\t\treturn\t( ( inSegPt1.x <= inOtherPt.x ) && ( inOtherPt.x <= inSegPt2.x ) );\n\n\t\t\t\t} else {\n\n\t\t\t\t\treturn\t( ( inSegPt2.x <= inOtherPt.x ) && ( inOtherPt.x <= inSegPt1.x ) );\n\n\t\t\t\t}\n\n\t\t\t} else {\n\n\t\t\t\tif ( inSegPt1.y < inSegPt2.y ) {\n\n\t\t\t\t\treturn\t( ( inSegPt1.y <= inOtherPt.y ) && ( inOtherPt.y <= inSegPt2.y ) );\n\n\t\t\t\t} else {\n\n\t\t\t\t\treturn\t( ( inSegPt2.y <= inOtherPt.y ) && ( inOtherPt.y <= inSegPt1.y ) );\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t}\n\n\t\tfunction intersect_segments_2D( inSeg1Pt1, inSeg1Pt2, inSeg2Pt1, inSeg2Pt2, inExcludeAdjacentSegs ) {\n\n\t\t\tvar seg1dx = inSeg1Pt2.x - inSeg1Pt1.x, seg1dy = inSeg1Pt2.y - inSeg1Pt1.y;\n\t\t\tvar seg2dx = inSeg2Pt2.x - inSeg2Pt1.x, seg2dy = inSeg2Pt2.y - inSeg2Pt1.y;\n\n\t\t\tvar seg1seg2dx = inSeg1Pt1.x - inSeg2Pt1.x;\n\t\t\tvar seg1seg2dy = inSeg1Pt1.y - inSeg2Pt1.y;\n\n\t\t\tvar limit\t\t= seg1dy * seg2dx - seg1dx * seg2dy;\n\t\t\tvar perpSeg1\t= seg1dy * seg1seg2dx - seg1dx * seg1seg2dy;\n\n\t\t\tif ( Math.abs( limit ) > Number.EPSILON ) {\n\n\t\t\t\t// not parallel\n\n\t\t\t\tvar perpSeg2;\n\t\t\t\tif ( limit > 0 ) {\n\n\t\t\t\t\tif ( ( perpSeg1 < 0 ) || ( perpSeg1 > limit ) ) \t\treturn [];\n\t\t\t\t\tperpSeg2 = seg2dy * seg1seg2dx - seg2dx * seg1seg2dy;\n\t\t\t\t\tif ( ( perpSeg2 < 0 ) || ( perpSeg2 > limit ) ) \t\treturn [];\n\n\t\t\t\t} else {\n\n\t\t\t\t\tif ( ( perpSeg1 > 0 ) || ( perpSeg1 < limit ) ) \t\treturn [];\n\t\t\t\t\tperpSeg2 = seg2dy * seg1seg2dx - seg2dx * seg1seg2dy;\n\t\t\t\t\tif ( ( perpSeg2 > 0 ) || ( perpSeg2 < limit ) ) \t\treturn [];\n\n\t\t\t\t}\n\n\t\t\t\t// i.e. to reduce rounding errors\n\t\t\t\t// intersection at endpoint of segment#1?\n\t\t\t\tif ( perpSeg2 === 0 ) {\n\n\t\t\t\t\tif ( ( inExcludeAdjacentSegs ) &&\n\t\t\t\t\t\t ( ( perpSeg1 === 0 ) || ( perpSeg1 === limit ) ) )\t\treturn [];\n\t\t\t\t\treturn [ inSeg1Pt1 ];\n\n\t\t\t\t}\n\t\t\t\tif ( perpSeg2 === limit ) {\n\n\t\t\t\t\tif ( ( inExcludeAdjacentSegs ) &&\n\t\t\t\t\t\t ( ( perpSeg1 === 0 ) || ( perpSeg1 === limit ) ) )\t\treturn [];\n\t\t\t\t\treturn [ inSeg1Pt2 ];\n\n\t\t\t\t}\n\t\t\t\t// intersection at endpoint of segment#2?\n\t\t\t\tif ( perpSeg1 === 0 )\t\treturn [ inSeg2Pt1 ];\n\t\t\t\tif ( perpSeg1 === limit )\treturn [ inSeg2Pt2 ];\n\n\t\t\t\t// return real intersection point\n\t\t\t\tvar factorSeg1 = perpSeg2 / limit;\n\t\t\t\treturn\t[ { x: inSeg1Pt1.x + factorSeg1 * seg1dx,\n\t\t\t\t\t\t\ty: inSeg1Pt1.y + factorSeg1 * seg1dy } ];\n\n\t\t\t} else {\n\n\t\t\t\t// parallel or collinear\n\t\t\t\tif ( ( perpSeg1 !== 0 ) ||\n\t\t\t\t\t ( seg2dy * seg1seg2dx !== seg2dx * seg1seg2dy ) ) \t\t\treturn [];\n\n\t\t\t\t// they are collinear or degenerate\n\t\t\t\tvar seg1Pt = ( ( seg1dx === 0 ) && ( seg1dy === 0 ) );\t// segment1 is just a point?\n\t\t\t\tvar seg2Pt = ( ( seg2dx === 0 ) && ( seg2dy === 0 ) );\t// segment2 is just a point?\n\t\t\t\t// both segments are points\n\t\t\t\tif ( seg1Pt && seg2Pt ) {\n\n\t\t\t\t\tif ( ( inSeg1Pt1.x !== inSeg2Pt1.x ) ||\n\t\t\t\t\t\t ( inSeg1Pt1.y !== inSeg2Pt1.y ) )\t\treturn [];\t// they are distinct points\n\t\t\t\t\treturn [ inSeg1Pt1 ]; \t\t\t\t\t\t// they are the same point\n\n\t\t\t\t}\n\t\t\t\t// segment#1 is a single point\n\t\t\t\tif ( seg1Pt ) {\n\n\t\t\t\t\tif ( ! point_in_segment_2D_colin( inSeg2Pt1, inSeg2Pt2, inSeg1Pt1 ) )\t\treturn [];\t\t// but not in segment#2\n\t\t\t\t\treturn [ inSeg1Pt1 ];\n\n\t\t\t\t}\n\t\t\t\t// segment#2 is a single point\n\t\t\t\tif ( seg2Pt ) {\n\n\t\t\t\t\tif ( ! point_in_segment_2D_colin( inSeg1Pt1, inSeg1Pt2, inSeg2Pt1 ) )\t\treturn [];\t\t// but not in segment#1\n\t\t\t\t\treturn [ inSeg2Pt1 ];\n\n\t\t\t\t}\n\n\t\t\t\t// they are collinear segments, which might overlap\n\t\t\t\tvar seg1min, seg1max, seg1minVal, seg1maxVal;\n\t\t\t\tvar seg2min, seg2max, seg2minVal, seg2maxVal;\n\t\t\t\tif ( seg1dx !== 0 ) {\n\n\t\t\t\t\t// the segments are NOT on a vertical line\n\t\t\t\t\tif ( inSeg1Pt1.x < inSeg1Pt2.x ) {\n\n\t\t\t\t\t\tseg1min = inSeg1Pt1; seg1minVal = inSeg1Pt1.x;\n\t\t\t\t\t\tseg1max = inSeg1Pt2; seg1maxVal = inSeg1Pt2.x;\n\n\t\t\t\t\t} else {\n\n\t\t\t\t\t\tseg1min = inSeg1Pt2; seg1minVal = inSeg1Pt2.x;\n\t\t\t\t\t\tseg1max = inSeg1Pt1; seg1maxVal = inSeg1Pt1.x;\n\n\t\t\t\t\t}\n\t\t\t\t\tif ( inSeg2Pt1.x < inSeg2Pt2.x ) {\n\n\t\t\t\t\t\tseg2min = inSeg2Pt1; seg2minVal = inSeg2Pt1.x;\n\t\t\t\t\t\tseg2max = inSeg2Pt2; seg2maxVal = inSeg2Pt2.x;\n\n\t\t\t\t\t} else {\n\n\t\t\t\t\t\tseg2min = inSeg2Pt2; seg2minVal = inSeg2Pt2.x;\n\t\t\t\t\t\tseg2max = inSeg2Pt1; seg2maxVal = inSeg2Pt1.x;\n\n\t\t\t\t\t}\n\n\t\t\t\t} else {\n\n\t\t\t\t\t// the segments are on a vertical line\n\t\t\t\t\tif ( inSeg1Pt1.y < inSeg1Pt2.y ) {\n\n\t\t\t\t\t\tseg1min = inSeg1Pt1; seg1minVal = inSeg1Pt1.y;\n\t\t\t\t\t\tseg1max = inSeg1Pt2; seg1maxVal = inSeg1Pt2.y;\n\n\t\t\t\t\t} else {\n\n\t\t\t\t\t\tseg1min = inSeg1Pt2; seg1minVal = inSeg1Pt2.y;\n\t\t\t\t\t\tseg1max = inSeg1Pt1; seg1maxVal = inSeg1Pt1.y;\n\n\t\t\t\t\t}\n\t\t\t\t\tif ( inSeg2Pt1.y < inSeg2Pt2.y ) {\n\n\t\t\t\t\t\tseg2min = inSeg2Pt1; seg2minVal = inSeg2Pt1.y;\n\t\t\t\t\t\tseg2max = inSeg2Pt2; seg2maxVal = inSeg2Pt2.y;\n\n\t\t\t\t\t} else {\n\n\t\t\t\t\t\tseg2min = inSeg2Pt2; seg2minVal = inSeg2Pt2.y;\n\t\t\t\t\t\tseg2max = inSeg2Pt1; seg2maxVal = inSeg2Pt1.y;\n\n\t\t\t\t\t}\n\n\t\t\t\t}\n\t\t\t\tif ( seg1minVal <= seg2minVal ) {\n\n\t\t\t\t\tif ( seg1maxVal < seg2minVal )\treturn [];\n\t\t\t\t\tif ( seg1maxVal === seg2minVal )\t{\n\n\t\t\t\t\t\tif ( inExcludeAdjacentSegs )\t\treturn [];\n\t\t\t\t\t\treturn [ seg2min ];\n\n\t\t\t\t\t}\n\t\t\t\t\tif ( seg1maxVal <= seg2maxVal )\treturn [ seg2min, seg1max ];\n\t\t\t\t\treturn\t[ seg2min, seg2max ];\n\n\t\t\t\t} else {\n\n\t\t\t\t\tif ( seg1minVal > seg2maxVal )\treturn [];\n\t\t\t\t\tif ( seg1minVal === seg2maxVal )\t{\n\n\t\t\t\t\t\tif ( inExcludeAdjacentSegs )\t\treturn [];\n\t\t\t\t\t\treturn [ seg1min ];\n\n\t\t\t\t\t}\n\t\t\t\t\tif ( seg1maxVal <= seg2maxVal )\treturn [ seg1min, seg1max ];\n\t\t\t\t\treturn\t[ seg1min, seg2max ];\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t}\n\n\t\tfunction isPointInsideAngle( inVertex, inLegFromPt, inLegToPt, inOtherPt ) {\n\n\t\t\t// The order of legs is important\n\n\t\t\t// translation of all points, so that Vertex is at (0,0)\n\t\t\tvar legFromPtX\t= inLegFromPt.x - inVertex.x, legFromPtY\t= inLegFromPt.y - inVertex.y;\n\t\t\tvar legToPtX\t= inLegToPt.x\t- inVertex.x, legToPtY\t\t= inLegToPt.y\t- inVertex.y;\n\t\t\tvar otherPtX\t= inOtherPt.x\t- inVertex.x, otherPtY\t\t= inOtherPt.y\t- inVertex.y;\n\n\t\t\t// main angle >0: < 180 deg.; 0: 180 deg.; <0: > 180 deg.\n\t\t\tvar from2toAngle\t= legFromPtX * legToPtY - legFromPtY * legToPtX;\n\t\t\tvar from2otherAngle\t= legFromPtX * otherPtY - legFromPtY * otherPtX;\n\n\t\t\tif ( Math.abs( from2toAngle ) > Number.EPSILON ) {\n\n\t\t\t\t// angle != 180 deg.\n\n\t\t\t\tvar other2toAngle\t\t= otherPtX * legToPtY - otherPtY * legToPtX;\n\t\t\t\t// console.log( \"from2to: \" + from2toAngle + \", from2other: \" + from2otherAngle + \", other2to: \" + other2toAngle );\n\n\t\t\t\tif ( from2toAngle > 0 ) {\n\n\t\t\t\t\t// main angle < 180 deg.\n\t\t\t\t\treturn\t( ( from2otherAngle >= 0 ) && ( other2toAngle >= 0 ) );\n\n\t\t\t\t} else {\n\n\t\t\t\t\t// main angle > 180 deg.\n\t\t\t\t\treturn\t( ( from2otherAngle >= 0 ) || ( other2toAngle >= 0 ) );\n\n\t\t\t\t}\n\n\t\t\t} else {\n\n\t\t\t\t// angle == 180 deg.\n\t\t\t\t// console.log( \"from2to: 180 deg., from2other: \" + from2otherAngle );\n\t\t\t\treturn\t( from2otherAngle > 0 );\n\n\t\t\t}\n\n\t\t}\n\n\n\t\tfunction removeHoles( contour, holes ) {\n\n\t\t\tvar shape = contour.concat(); // work on this shape\n\t\t\tvar hole;\n\n\t\t\tfunction isCutLineInsideAngles( inShapeIdx, inHoleIdx ) {\n\n\t\t\t\t// Check if hole point lies within angle around shape point\n\t\t\t\tvar lastShapeIdx = shape.length - 1;\n\n\t\t\t\tvar prevShapeIdx = inShapeIdx - 1;\n\t\t\t\tif ( prevShapeIdx < 0 )\t\t\tprevShapeIdx = lastShapeIdx;\n\n\t\t\t\tvar nextShapeIdx = inShapeIdx + 1;\n\t\t\t\tif ( nextShapeIdx > lastShapeIdx )\tnextShapeIdx = 0;\n\n\t\t\t\tvar insideAngle = isPointInsideAngle( shape[ inShapeIdx ], shape[ prevShapeIdx ], shape[ nextShapeIdx ], hole[ inHoleIdx ] );\n\t\t\t\tif ( ! insideAngle ) {\n\n\t\t\t\t\t// console.log( \"Vertex (Shape): \" + inShapeIdx + \", Point: \" + hole[inHoleIdx].x + \"/\" + hole[inHoleIdx].y );\n\t\t\t\t\treturn\tfalse;\n\n\t\t\t\t}\n\n\t\t\t\t// Check if shape point lies within angle around hole point\n\t\t\t\tvar lastHoleIdx = hole.length - 1;\n\n\t\t\t\tvar prevHoleIdx = inHoleIdx - 1;\n\t\t\t\tif ( prevHoleIdx < 0 )\t\t\tprevHoleIdx = lastHoleIdx;\n\n\t\t\t\tvar nextHoleIdx = inHoleIdx + 1;\n\t\t\t\tif ( nextHoleIdx > lastHoleIdx )\tnextHoleIdx = 0;\n\n\t\t\t\tinsideAngle = isPointInsideAngle( hole[ inHoleIdx ], hole[ prevHoleIdx ], hole[ nextHoleIdx ], shape[ inShapeIdx ] );\n\t\t\t\tif ( ! insideAngle ) {\n\n\t\t\t\t\t// console.log( \"Vertex (Hole): \" + inHoleIdx + \", Point: \" + shape[inShapeIdx].x + \"/\" + shape[inShapeIdx].y );\n\t\t\t\t\treturn\tfalse;\n\n\t\t\t\t}\n\n\t\t\t\treturn\ttrue;\n\n\t\t\t}\n\n\t\t\tfunction intersectsShapeEdge( inShapePt, inHolePt ) {\n\n\t\t\t\t// checks for intersections with shape edges\n\t\t\t\tvar sIdx, nextIdx, intersection;\n\t\t\t\tfor ( sIdx = 0; sIdx < shape.length; sIdx ++ ) {\n\n\t\t\t\t\tnextIdx = sIdx + 1; nextIdx %= shape.length;\n\t\t\t\t\tintersection = intersect_segments_2D( inShapePt, inHolePt, shape[ sIdx ], shape[ nextIdx ], true );\n\t\t\t\t\tif ( intersection.length > 0 )\t\treturn\ttrue;\n\n\t\t\t\t}\n\n\t\t\t\treturn\tfalse;\n\n\t\t\t}\n\n\t\t\tvar indepHoles = [];\n\n\t\t\tfunction intersectsHoleEdge( inShapePt, inHolePt ) {\n\n\t\t\t\t// checks for intersections with hole edges\n\t\t\t\tvar ihIdx, chkHole,\n\t\t\t\t\thIdx, nextIdx, intersection;\n\t\t\t\tfor ( ihIdx = 0; ihIdx < indepHoles.length; ihIdx ++ ) {\n\n\t\t\t\t\tchkHole = holes[ indepHoles[ ihIdx ]];\n\t\t\t\t\tfor ( hIdx = 0; hIdx < chkHole.length; hIdx ++ ) {\n\n\t\t\t\t\t\tnextIdx = hIdx + 1; nextIdx %= chkHole.length;\n\t\t\t\t\t\tintersection = intersect_segments_2D( inShapePt, inHolePt, chkHole[ hIdx ], chkHole[ nextIdx ], true );\n\t\t\t\t\t\tif ( intersection.length > 0 )\t\treturn\ttrue;\n\n\t\t\t\t\t}\n\n\t\t\t\t}\n\t\t\t\treturn\tfalse;\n\n\t\t\t}\n\n\t\t\tvar holeIndex, shapeIndex,\n\t\t\t\tshapePt, holePt,\n\t\t\t\tholeIdx, cutKey, failedCuts = [],\n\t\t\t\ttmpShape1, tmpShape2,\n\t\t\t\ttmpHole1, tmpHole2;\n\n\t\t\tfor ( var h = 0, hl = holes.length; h < hl; h ++ ) {\n\n\t\t\t\tindepHoles.push( h );\n\n\t\t\t}\n\n\t\t\tvar minShapeIndex = 0;\n\t\t\tvar counter = indepHoles.length * 2;\n\t\t\twhile ( indepHoles.length > 0 ) {\n\n\t\t\t\tcounter --;\n\t\t\t\tif ( counter < 0 ) {\n\n\t\t\t\t\tconsole.log( \"Infinite Loop! Holes left:\" + indepHoles.length + \", Probably Hole outside Shape!\" );\n\t\t\t\t\tbreak;\n\n\t\t\t\t}\n\n\t\t\t\t// search for shape-vertex and hole-vertex,\n\t\t\t\t// which can be connected without intersections\n\t\t\t\tfor ( shapeIndex = minShapeIndex; shapeIndex < shape.length; shapeIndex ++ ) {\n\n\t\t\t\t\tshapePt = shape[ shapeIndex ];\n\t\t\t\t\tholeIndex\t= - 1;\n\n\t\t\t\t\t// search for hole which can be reached without intersections\n\t\t\t\t\tfor ( var h = 0; h < indepHoles.length; h ++ ) {\n\n\t\t\t\t\t\tholeIdx = indepHoles[ h ];\n\n\t\t\t\t\t\t// prevent multiple checks\n\t\t\t\t\t\tcutKey = shapePt.x + \":\" + shapePt.y + \":\" + holeIdx;\n\t\t\t\t\t\tif ( failedCuts[ cutKey ] !== undefined )\t\t\tcontinue;\n\n\t\t\t\t\t\thole = holes[ holeIdx ];\n\t\t\t\t\t\tfor ( var h2 = 0; h2 < hole.length; h2 ++ ) {\n\n\t\t\t\t\t\t\tholePt = hole[ h2 ];\n\t\t\t\t\t\t\tif ( ! isCutLineInsideAngles( shapeIndex, h2 ) )\t\tcontinue;\n\t\t\t\t\t\t\tif ( intersectsShapeEdge( shapePt, holePt ) )\t\tcontinue;\n\t\t\t\t\t\t\tif ( intersectsHoleEdge( shapePt, holePt ) )\t\tcontinue;\n\n\t\t\t\t\t\t\tholeIndex = h2;\n\t\t\t\t\t\t\tindepHoles.splice( h, 1 );\n\n\t\t\t\t\t\t\ttmpShape1 = shape.slice( 0, shapeIndex + 1 );\n\t\t\t\t\t\t\ttmpShape2 = shape.slice( shapeIndex );\n\t\t\t\t\t\t\ttmpHole1 = hole.slice( holeIndex );\n\t\t\t\t\t\t\ttmpHole2 = hole.slice( 0, holeIndex + 1 );\n\n\t\t\t\t\t\t\tshape = tmpShape1.concat( tmpHole1 ).concat( tmpHole2 ).concat( tmpShape2 );\n\n\t\t\t\t\t\t\tminShapeIndex = shapeIndex;\n\n\t\t\t\t\t\t\t// Debug only, to show the selected cuts\n\t\t\t\t\t\t\t// glob_CutLines.push( [ shapePt, holePt ] );\n\n\t\t\t\t\t\t\tbreak;\n\n\t\t\t\t\t\t}\n\t\t\t\t\t\tif ( holeIndex >= 0 )\tbreak;\t\t// hole-vertex found\n\n\t\t\t\t\t\tfailedCuts[ cutKey ] = true;\t\t\t// remember failure\n\n\t\t\t\t\t}\n\t\t\t\t\tif ( holeIndex >= 0 )\tbreak;\t\t// hole-vertex found\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t\treturn shape; \t\t\t/* shape with no holes */\n\n\t\t}\n\n\n\t\tvar i, il, f, face,\n\t\t\tkey, index,\n\t\t\tallPointsMap = {};\n\n\t\t// To maintain reference to old shape, one must match coordinates, or offset the indices from original arrays. It's probably easier to do the first.\n\n\t\tvar allpoints = contour.concat();\n\n\t\tfor ( var h = 0, hl = holes.length; h < hl; h ++ ) {\n\n\t\t\tArray.prototype.push.apply( allpoints, holes[ h ] );\n\n\t\t}\n\n\t\t//console.log( \"allpoints\",allpoints, allpoints.length );\n\n\t\t// prepare all points map\n\n\t\tfor ( i = 0, il = allpoints.length; i < il; i ++ ) {\n\n\t\t\tkey = allpoints[ i ].x + \":\" + allpoints[ i ].y;\n\n\t\t\tif ( allPointsMap[ key ] !== undefined ) {\n\n\t\t\t\tconsole.warn( \"THREE.ShapeUtils: Duplicate point\", key, i );\n\n\t\t\t}\n\n\t\t\tallPointsMap[ key ] = i;\n\n\t\t}\n\n\t\t// remove holes by cutting paths to holes and adding them to the shape\n\t\tvar shapeWithoutHoles = removeHoles( contour, holes );\n\n\t\tvar triangles = ShapeUtils.triangulate( shapeWithoutHoles, false ); // True returns indices for points of spooled shape\n\t\t//console.log( \"triangles\",triangles, triangles.length );\n\n\t\t// check all face vertices against all points map\n\n\t\tfor ( i = 0, il = triangles.length; i < il; i ++ ) {\n\n\t\t\tface = triangles[ i ];\n\n\t\t\tfor ( f = 0; f < 3; f ++ ) {\n\n\t\t\t\tkey = face[ f ].x + \":\" + face[ f ].y;\n\n\t\t\t\tindex = allPointsMap[ key ];\n\n\t\t\t\tif ( index !== undefined ) {\n\n\t\t\t\t\tface[ f ] = index;\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t}\n\n\t\treturn triangles.concat();\n\n\t},\n\n\tisClockWise: function ( pts ) {\n\n\t\treturn ShapeUtils.area( pts ) < 0;\n\n\t},\n\n\t// Bezier Curves formulas obtained from\n\t// http://en.wikipedia.org/wiki/B%C3%A9zier_curve\n\n\t// Quad Bezier Functions\n\n\tb2: ( function () {\n\n\t\tfunction b2p0( t, p ) {\n\n\t\t\tvar k = 1 - t;\n\t\t\treturn k * k * p;\n\n\t\t}\n\n\t\tfunction b2p1( t, p ) {\n\n\t\t\treturn 2 * ( 1 - t ) * t * p;\n\n\t\t}\n\n\t\tfunction b2p2( t, p ) {\n\n\t\t\treturn t * t * p;\n\n\t\t}\n\n\t\treturn function b2( t, p0, p1, p2 ) {\n\n\t\t\treturn b2p0( t, p0 ) + b2p1( t, p1 ) + b2p2( t, p2 );\n\n\t\t};\n\n\t} )(),\n\n\t// Cubic Bezier Functions\n\n\tb3: ( function () {\n\n\t\tfunction b3p0( t, p ) {\n\n\t\t\tvar k = 1 - t;\n\t\t\treturn k * k * k * p;\n\n\t\t}\n\n\t\tfunction b3p1( t, p ) {\n\n\t\t\tvar k = 1 - t;\n\t\t\treturn 3 * k * k * t * p;\n\n\t\t}\n\n\t\tfunction b3p2( t, p ) {\n\n\t\t\tvar k = 1 - t;\n\t\t\treturn 3 * k * t * t * p;\n\n\t\t}\n\n\t\tfunction b3p3( t, p ) {\n\n\t\t\treturn t * t * t * p;\n\n\t\t}\n\n\t\treturn function b3( t, p0, p1, p2, p3 ) {\n\n\t\t\treturn b3p0( t, p0 ) + b3p1( t, p1 ) + b3p2( t, p2 ) + b3p3( t, p3 );\n\n\t\t};\n\n\t} )()\n\n};\n\n\nexport { ShapeUtils };\n","import { Geometry } from '../core/Geometry';\nimport { Vector2 } from '../math/Vector2';\nimport { Face3 } from '../core/Face3';\nimport { Vector3 } from '../math/Vector3';\nimport { ShapeUtils } from '../extras/ShapeUtils';\n\n/**\n * @author zz85 / http://www.lab4games.net/zz85/blog\n *\n * Creates extruded geometry from a path shape.\n *\n * parameters = {\n *\n * curveSegments: , // number of points on the curves\n * steps: , // number of points for z-side extrusions / used for subdividing segments of extrude spline too\n * amount: , // Depth to extrude the shape\n *\n * bevelEnabled: , // turn on bevel\n * bevelThickness: , // how deep into the original shape bevel goes\n * bevelSize: , // how far from shape outline is bevel\n * bevelSegments: , // number of bevel layers\n *\n * extrudePath: // 3d spline path to extrude shape along. (creates Frames if .frames aren't defined)\n * frames: // containing arrays of tangents, normals, binormals\n *\n * uvGenerator: // object that provides UV generator functions\n *\n * }\n **/\n\nfunction ExtrudeGeometry( shapes, options ) {\n\n\tif ( typeof( shapes ) === \"undefined\" ) {\n\n\t\tshapes = [];\n\t\treturn;\n\n\t}\n\n\tGeometry.call( this );\n\n\tthis.type = 'ExtrudeGeometry';\n\n\tshapes = Array.isArray( shapes ) ? shapes : [ shapes ];\n\n\tthis.addShapeList( shapes, options );\n\n\tthis.computeFaceNormals();\n\n\t// can't really use automatic vertex normals\n\t// as then front and back sides get smoothed too\n\t// should do separate smoothing just for sides\n\n\t//this.computeVertexNormals();\n\n\t//console.log( \"took\", ( Date.now() - startTime ) );\n\n}\n\nExtrudeGeometry.prototype = Object.create( Geometry.prototype );\nExtrudeGeometry.prototype.constructor = ExtrudeGeometry;\n\nExtrudeGeometry.prototype.addShapeList = function ( shapes, options ) {\n\n\tvar sl = shapes.length;\n\n\tfor ( var s = 0; s < sl; s ++ ) {\n\n\t\tvar shape = shapes[ s ];\n\t\tthis.addShape( shape, options );\n\n\t}\n\n};\n\nExtrudeGeometry.prototype.addShape = function ( shape, options ) {\n\n\tvar amount = options.amount !== undefined ? options.amount : 100;\n\n\tvar bevelThickness = options.bevelThickness !== undefined ? options.bevelThickness : 6; // 10\n\tvar bevelSize = options.bevelSize !== undefined ? options.bevelSize : bevelThickness - 2; // 8\n\tvar bevelSegments = options.bevelSegments !== undefined ? options.bevelSegments : 3;\n\n\tvar bevelEnabled = options.bevelEnabled !== undefined ? options.bevelEnabled : true; // false\n\n\tvar curveSegments = options.curveSegments !== undefined ? options.curveSegments : 12;\n\n\tvar steps = options.steps !== undefined ? options.steps : 1;\n\n\tvar extrudePath = options.extrudePath;\n\tvar extrudePts, extrudeByPath = false;\n\n\t// Use default WorldUVGenerator if no UV generators are specified.\n\tvar uvgen = options.UVGenerator !== undefined ? options.UVGenerator : ExtrudeGeometry.WorldUVGenerator;\n\n\tvar splineTube, binormal, normal, position2;\n\tif ( extrudePath ) {\n\n\t\textrudePts = extrudePath.getSpacedPoints( steps );\n\n\t\textrudeByPath = true;\n\t\tbevelEnabled = false; // bevels not supported for path extrusion\n\n\t\t// SETUP TNB variables\n\n\t\t// TODO1 - have a .isClosed in spline?\n\n\t\tsplineTube = options.frames !== undefined ? options.frames : extrudePath.computeFrenetFrames( steps, false );\n\n\t\t// console.log(splineTube, 'splineTube', splineTube.normals.length, 'steps', steps, 'extrudePts', extrudePts.length);\n\n\t\tbinormal = new Vector3();\n\t\tnormal = new Vector3();\n\t\tposition2 = new Vector3();\n\n\t}\n\n\t// Safeguards if bevels are not enabled\n\n\tif ( ! bevelEnabled ) {\n\n\t\tbevelSegments = 0;\n\t\tbevelThickness = 0;\n\t\tbevelSize = 0;\n\n\t}\n\n\t// Variables initialization\n\n\tvar ahole, h, hl; // looping of holes\n\tvar scope = this;\n\n\tvar shapesOffset = this.vertices.length;\n\n\tvar shapePoints = shape.extractPoints( curveSegments );\n\n\tvar vertices = shapePoints.shape;\n\tvar holes = shapePoints.holes;\n\n\tvar reverse = ! ShapeUtils.isClockWise( vertices );\n\n\tif ( reverse ) {\n\n\t\tvertices = vertices.reverse();\n\n\t\t// Maybe we should also check if holes are in the opposite direction, just to be safe ...\n\n\t\tfor ( h = 0, hl = holes.length; h < hl; h ++ ) {\n\n\t\t\tahole = holes[ h ];\n\n\t\t\tif ( ShapeUtils.isClockWise( ahole ) ) {\n\n\t\t\t\tholes[ h ] = ahole.reverse();\n\n\t\t\t}\n\n\t\t}\n\n\t\treverse = false; // If vertices are in order now, we shouldn't need to worry about them again (hopefully)!\n\n\t}\n\n\n\tvar faces = ShapeUtils.triangulateShape( vertices, holes );\n\n\t/* Vertices */\n\n\tvar contour = vertices; // vertices has all points but contour has only points of circumference\n\n\tfor ( h = 0, hl = holes.length; h < hl; h ++ ) {\n\n\t\tahole = holes[ h ];\n\n\t\tvertices = vertices.concat( ahole );\n\n\t}\n\n\n\tfunction scalePt2( pt, vec, size ) {\n\n\t\tif ( ! vec ) console.error( \"THREE.ExtrudeGeometry: vec does not exist\" );\n\n\t\treturn vec.clone().multiplyScalar( size ).add( pt );\n\n\t}\n\n\tvar b, bs, t, z,\n\t\tvert, vlen = vertices.length,\n\t\tface, flen = faces.length;\n\n\n\t// Find directions for point movement\n\n\n\tfunction getBevelVec( inPt, inPrev, inNext ) {\n\n\t\t// computes for inPt the corresponding point inPt' on a new contour\n\t\t// shifted by 1 unit (length of normalized vector) to the left\n\t\t// if we walk along contour clockwise, this new contour is outside the old one\n\t\t//\n\t\t// inPt' is the intersection of the two lines parallel to the two\n\t\t// adjacent edges of inPt at a distance of 1 unit on the left side.\n\n\t\tvar v_trans_x, v_trans_y, shrink_by = 1;\t\t// resulting translation vector for inPt\n\n\t\t// good reading for geometry algorithms (here: line-line intersection)\n\t\t// http://geomalgorithms.com/a05-_intersect-1.html\n\n\t\tvar v_prev_x = inPt.x - inPrev.x, v_prev_y = inPt.y - inPrev.y;\n\t\tvar v_next_x = inNext.x - inPt.x, v_next_y = inNext.y - inPt.y;\n\n\t\tvar v_prev_lensq = ( v_prev_x * v_prev_x + v_prev_y * v_prev_y );\n\n\t\t// check for collinear edges\n\t\tvar collinear0 = ( v_prev_x * v_next_y - v_prev_y * v_next_x );\n\n\t\tif ( Math.abs( collinear0 ) > Number.EPSILON ) {\n\n\t\t\t// not collinear\n\n\t\t\t// length of vectors for normalizing\n\n\t\t\tvar v_prev_len = Math.sqrt( v_prev_lensq );\n\t\t\tvar v_next_len = Math.sqrt( v_next_x * v_next_x + v_next_y * v_next_y );\n\n\t\t\t// shift adjacent points by unit vectors to the left\n\n\t\t\tvar ptPrevShift_x = ( inPrev.x - v_prev_y / v_prev_len );\n\t\t\tvar ptPrevShift_y = ( inPrev.y + v_prev_x / v_prev_len );\n\n\t\t\tvar ptNextShift_x = ( inNext.x - v_next_y / v_next_len );\n\t\t\tvar ptNextShift_y = ( inNext.y + v_next_x / v_next_len );\n\n\t\t\t// scaling factor for v_prev to intersection point\n\n\t\t\tvar sf = ( ( ptNextShift_x - ptPrevShift_x ) * v_next_y -\n\t\t\t\t\t\t( ptNextShift_y - ptPrevShift_y ) * v_next_x ) /\n\t\t\t\t\t ( v_prev_x * v_next_y - v_prev_y * v_next_x );\n\n\t\t\t// vector from inPt to intersection point\n\n\t\t\tv_trans_x = ( ptPrevShift_x + v_prev_x * sf - inPt.x );\n\t\t\tv_trans_y = ( ptPrevShift_y + v_prev_y * sf - inPt.y );\n\n\t\t\t// Don't normalize!, otherwise sharp corners become ugly\n\t\t\t// but prevent crazy spikes\n\t\t\tvar v_trans_lensq = ( v_trans_x * v_trans_x + v_trans_y * v_trans_y );\n\t\t\tif ( v_trans_lensq <= 2 ) {\n\n\t\t\t\treturn\tnew Vector2( v_trans_x, v_trans_y );\n\n\t\t\t} else {\n\n\t\t\t\tshrink_by = Math.sqrt( v_trans_lensq / 2 );\n\n\t\t\t}\n\n\t\t} else {\n\n\t\t\t// handle special case of collinear edges\n\n\t\t\tvar direction_eq = false;\t\t// assumes: opposite\n\t\t\tif ( v_prev_x > Number.EPSILON ) {\n\n\t\t\t\tif ( v_next_x > Number.EPSILON ) {\n\n\t\t\t\t\tdirection_eq = true;\n\n\t\t\t\t}\n\n\t\t\t} else {\n\n\t\t\t\tif ( v_prev_x < - Number.EPSILON ) {\n\n\t\t\t\t\tif ( v_next_x < - Number.EPSILON ) {\n\n\t\t\t\t\t\tdirection_eq = true;\n\n\t\t\t\t\t}\n\n\t\t\t\t} else {\n\n\t\t\t\t\tif ( Math.sign( v_prev_y ) === Math.sign( v_next_y ) ) {\n\n\t\t\t\t\t\tdirection_eq = true;\n\n\t\t\t\t\t}\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t\tif ( direction_eq ) {\n\n\t\t\t\t// console.log(\"Warning: lines are a straight sequence\");\n\t\t\t\tv_trans_x = - v_prev_y;\n\t\t\t\tv_trans_y = v_prev_x;\n\t\t\t\tshrink_by = Math.sqrt( v_prev_lensq );\n\n\t\t\t} else {\n\n\t\t\t\t// console.log(\"Warning: lines are a straight spike\");\n\t\t\t\tv_trans_x = v_prev_x;\n\t\t\t\tv_trans_y = v_prev_y;\n\t\t\t\tshrink_by = Math.sqrt( v_prev_lensq / 2 );\n\n\t\t\t}\n\n\t\t}\n\n\t\treturn\tnew Vector2( v_trans_x / shrink_by, v_trans_y / shrink_by );\n\n\t}\n\n\n\tvar contourMovements = [];\n\n\tfor ( var i = 0, il = contour.length, j = il - 1, k = i + 1; i < il; i ++, j ++, k ++ ) {\n\n\t\tif ( j === il ) j = 0;\n\t\tif ( k === il ) k = 0;\n\n\t\t// (j)---(i)---(k)\n\t\t// console.log('i,j,k', i, j , k)\n\n\t\tcontourMovements[ i ] = getBevelVec( contour[ i ], contour[ j ], contour[ k ] );\n\n\t}\n\n\tvar holesMovements = [], oneHoleMovements, verticesMovements = contourMovements.concat();\n\n\tfor ( h = 0, hl = holes.length; h < hl; h ++ ) {\n\n\t\tahole = holes[ h ];\n\n\t\toneHoleMovements = [];\n\n\t\tfor ( i = 0, il = ahole.length, j = il - 1, k = i + 1; i < il; i ++, j ++, k ++ ) {\n\n\t\t\tif ( j === il ) j = 0;\n\t\t\tif ( k === il ) k = 0;\n\n\t\t\t// (j)---(i)---(k)\n\t\t\toneHoleMovements[ i ] = getBevelVec( ahole[ i ], ahole[ j ], ahole[ k ] );\n\n\t\t}\n\n\t\tholesMovements.push( oneHoleMovements );\n\t\tverticesMovements = verticesMovements.concat( oneHoleMovements );\n\n\t}\n\n\n\t// Loop bevelSegments, 1 for the front, 1 for the back\n\n\tfor ( b = 0; b < bevelSegments; b ++ ) {\n\n\t\t//for ( b = bevelSegments; b > 0; b -- ) {\n\n\t\tt = b / bevelSegments;\n\t\tz = bevelThickness * Math.cos( t * Math.PI / 2 );\n\t\tbs = bevelSize * Math.sin( t * Math.PI / 2 );\n\n\t\t// contract shape\n\n\t\tfor ( i = 0, il = contour.length; i < il; i ++ ) {\n\n\t\t\tvert = scalePt2( contour[ i ], contourMovements[ i ], bs );\n\n\t\t\tv( vert.x, vert.y, - z );\n\n\t\t}\n\n\t\t// expand holes\n\n\t\tfor ( h = 0, hl = holes.length; h < hl; h ++ ) {\n\n\t\t\tahole = holes[ h ];\n\t\t\toneHoleMovements = holesMovements[ h ];\n\n\t\t\tfor ( i = 0, il = ahole.length; i < il; i ++ ) {\n\n\t\t\t\tvert = scalePt2( ahole[ i ], oneHoleMovements[ i ], bs );\n\n\t\t\t\tv( vert.x, vert.y, - z );\n\n\t\t\t}\n\n\t\t}\n\n\t}\n\n\tbs = bevelSize;\n\n\t// Back facing vertices\n\n\tfor ( i = 0; i < vlen; i ++ ) {\n\n\t\tvert = bevelEnabled ? scalePt2( vertices[ i ], verticesMovements[ i ], bs ) : vertices[ i ];\n\n\t\tif ( ! extrudeByPath ) {\n\n\t\t\tv( vert.x, vert.y, 0 );\n\n\t\t} else {\n\n\t\t\t// v( vert.x, vert.y + extrudePts[ 0 ].y, extrudePts[ 0 ].x );\n\n\t\t\tnormal.copy( splineTube.normals[ 0 ] ).multiplyScalar( vert.x );\n\t\t\tbinormal.copy( splineTube.binormals[ 0 ] ).multiplyScalar( vert.y );\n\n\t\t\tposition2.copy( extrudePts[ 0 ] ).add( normal ).add( binormal );\n\n\t\t\tv( position2.x, position2.y, position2.z );\n\n\t\t}\n\n\t}\n\n\t// Add stepped vertices...\n\t// Including front facing vertices\n\n\tvar s;\n\n\tfor ( s = 1; s <= steps; s ++ ) {\n\n\t\tfor ( i = 0; i < vlen; i ++ ) {\n\n\t\t\tvert = bevelEnabled ? scalePt2( vertices[ i ], verticesMovements[ i ], bs ) : vertices[ i ];\n\n\t\t\tif ( ! extrudeByPath ) {\n\n\t\t\t\tv( vert.x, vert.y, amount / steps * s );\n\n\t\t\t} else {\n\n\t\t\t\t// v( vert.x, vert.y + extrudePts[ s - 1 ].y, extrudePts[ s - 1 ].x );\n\n\t\t\t\tnormal.copy( splineTube.normals[ s ] ).multiplyScalar( vert.x );\n\t\t\t\tbinormal.copy( splineTube.binormals[ s ] ).multiplyScalar( vert.y );\n\n\t\t\t\tposition2.copy( extrudePts[ s ] ).add( normal ).add( binormal );\n\n\t\t\t\tv( position2.x, position2.y, position2.z );\n\n\t\t\t}\n\n\t\t}\n\n\t}\n\n\n\t// Add bevel segments planes\n\n\t//for ( b = 1; b <= bevelSegments; b ++ ) {\n\tfor ( b = bevelSegments - 1; b >= 0; b -- ) {\n\n\t\tt = b / bevelSegments;\n\t\tz = bevelThickness * Math.cos ( t * Math.PI / 2 );\n\t\tbs = bevelSize * Math.sin( t * Math.PI / 2 );\n\n\t\t// contract shape\n\n\t\tfor ( i = 0, il = contour.length; i < il; i ++ ) {\n\n\t\t\tvert = scalePt2( contour[ i ], contourMovements[ i ], bs );\n\t\t\tv( vert.x, vert.y, amount + z );\n\n\t\t}\n\n\t\t// expand holes\n\n\t\tfor ( h = 0, hl = holes.length; h < hl; h ++ ) {\n\n\t\t\tahole = holes[ h ];\n\t\t\toneHoleMovements = holesMovements[ h ];\n\n\t\t\tfor ( i = 0, il = ahole.length; i < il; i ++ ) {\n\n\t\t\t\tvert = scalePt2( ahole[ i ], oneHoleMovements[ i ], bs );\n\n\t\t\t\tif ( ! extrudeByPath ) {\n\n\t\t\t\t\tv( vert.x, vert.y, amount + z );\n\n\t\t\t\t} else {\n\n\t\t\t\t\tv( vert.x, vert.y + extrudePts[ steps - 1 ].y, extrudePts[ steps - 1 ].x + z );\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t}\n\n\t}\n\n\t/* Faces */\n\n\t// Top and bottom faces\n\n\tbuildLidFaces();\n\n\t// Sides faces\n\n\tbuildSideFaces();\n\n\n\t///// Internal functions\n\n\tfunction buildLidFaces() {\n\n\t\tif ( bevelEnabled ) {\n\n\t\t\tvar layer = 0; // steps + 1\n\t\t\tvar offset = vlen * layer;\n\n\t\t\t// Bottom faces\n\n\t\t\tfor ( i = 0; i < flen; i ++ ) {\n\n\t\t\t\tface = faces[ i ];\n\t\t\t\tf3( face[ 2 ] + offset, face[ 1 ] + offset, face[ 0 ] + offset );\n\n\t\t\t}\n\n\t\t\tlayer = steps + bevelSegments * 2;\n\t\t\toffset = vlen * layer;\n\n\t\t\t// Top faces\n\n\t\t\tfor ( i = 0; i < flen; i ++ ) {\n\n\t\t\t\tface = faces[ i ];\n\t\t\t\tf3( face[ 0 ] + offset, face[ 1 ] + offset, face[ 2 ] + offset );\n\n\t\t\t}\n\n\t\t} else {\n\n\t\t\t// Bottom faces\n\n\t\t\tfor ( i = 0; i < flen; i ++ ) {\n\n\t\t\t\tface = faces[ i ];\n\t\t\t\tf3( face[ 2 ], face[ 1 ], face[ 0 ] );\n\n\t\t\t}\n\n\t\t\t// Top faces\n\n\t\t\tfor ( i = 0; i < flen; i ++ ) {\n\n\t\t\t\tface = faces[ i ];\n\t\t\t\tf3( face[ 0 ] + vlen * steps, face[ 1 ] + vlen * steps, face[ 2 ] + vlen * steps );\n\n\t\t\t}\n\n\t\t}\n\n\t}\n\n\t// Create faces for the z-sides of the shape\n\n\tfunction buildSideFaces() {\n\n\t\tvar layeroffset = 0;\n\t\tsidewalls( contour, layeroffset );\n\t\tlayeroffset += contour.length;\n\n\t\tfor ( h = 0, hl = holes.length; h < hl; h ++ ) {\n\n\t\t\tahole = holes[ h ];\n\t\t\tsidewalls( ahole, layeroffset );\n\n\t\t\t//, true\n\t\t\tlayeroffset += ahole.length;\n\n\t\t}\n\n\t}\n\n\tfunction sidewalls( contour, layeroffset ) {\n\n\t\tvar j, k;\n\t\ti = contour.length;\n\n\t\twhile ( -- i >= 0 ) {\n\n\t\t\tj = i;\n\t\t\tk = i - 1;\n\t\t\tif ( k < 0 ) k = contour.length - 1;\n\n\t\t\t//console.log('b', i,j, i-1, k,vertices.length);\n\n\t\t\tvar s = 0, sl = steps + bevelSegments * 2;\n\n\t\t\tfor ( s = 0; s < sl; s ++ ) {\n\n\t\t\t\tvar slen1 = vlen * s;\n\t\t\t\tvar slen2 = vlen * ( s + 1 );\n\n\t\t\t\tvar a = layeroffset + j + slen1,\n\t\t\t\t\tb = layeroffset + k + slen1,\n\t\t\t\t\tc = layeroffset + k + slen2,\n\t\t\t\t\td = layeroffset + j + slen2;\n\n\t\t\t\tf4( a, b, c, d, contour, s, sl, j, k );\n\n\t\t\t}\n\n\t\t}\n\n\t}\n\n\n\tfunction v( x, y, z ) {\n\n\t\tscope.vertices.push( new Vector3( x, y, z ) );\n\n\t}\n\n\tfunction f3( a, b, c ) {\n\n\t\ta += shapesOffset;\n\t\tb += shapesOffset;\n\t\tc += shapesOffset;\n\n\t\tscope.faces.push( new Face3( a, b, c, null, null, 0 ) );\n\n\t\tvar uvs = uvgen.generateTopUV( scope, a, b, c );\n\n\t\tscope.faceVertexUvs[ 0 ].push( uvs );\n\n\t}\n\n\tfunction f4( a, b, c, d, wallContour, stepIndex, stepsLength, contourIndex1, contourIndex2 ) {\n\n\t\ta += shapesOffset;\n\t\tb += shapesOffset;\n\t\tc += shapesOffset;\n\t\td += shapesOffset;\n\n\t\tscope.faces.push( new Face3( a, b, d, null, null, 1 ) );\n\t\tscope.faces.push( new Face3( b, c, d, null, null, 1 ) );\n\n\t\tvar uvs = uvgen.generateSideWallUV( scope, a, b, c, d );\n\n\t\tscope.faceVertexUvs[ 0 ].push( [ uvs[ 0 ], uvs[ 1 ], uvs[ 3 ] ] );\n\t\tscope.faceVertexUvs[ 0 ].push( [ uvs[ 1 ], uvs[ 2 ], uvs[ 3 ] ] );\n\n\t}\n\n};\n\nExtrudeGeometry.WorldUVGenerator = {\n\n\tgenerateTopUV: function ( geometry, indexA, indexB, indexC ) {\n\n\t\tvar vertices = geometry.vertices;\n\n\t\tvar a = vertices[ indexA ];\n\t\tvar b = vertices[ indexB ];\n\t\tvar c = vertices[ indexC ];\n\n\t\treturn [\n\t\t\tnew Vector2( a.x, a.y ),\n\t\t\tnew Vector2( b.x, b.y ),\n\t\t\tnew Vector2( c.x, c.y )\n\t\t];\n\n\t},\n\n\tgenerateSideWallUV: function ( geometry, indexA, indexB, indexC, indexD ) {\n\n\t\tvar vertices = geometry.vertices;\n\n\t\tvar a = vertices[ indexA ];\n\t\tvar b = vertices[ indexB ];\n\t\tvar c = vertices[ indexC ];\n\t\tvar d = vertices[ indexD ];\n\n\t\tif ( Math.abs( a.y - b.y ) < 0.01 ) {\n\n\t\t\treturn [\n\t\t\t\tnew Vector2( a.x, 1 - a.z ),\n\t\t\t\tnew Vector2( b.x, 1 - b.z ),\n\t\t\t\tnew Vector2( c.x, 1 - c.z ),\n\t\t\t\tnew Vector2( d.x, 1 - d.z )\n\t\t\t];\n\n\t\t} else {\n\n\t\t\treturn [\n\t\t\t\tnew Vector2( a.y, 1 - a.z ),\n\t\t\t\tnew Vector2( b.y, 1 - b.z ),\n\t\t\t\tnew Vector2( c.y, 1 - c.z ),\n\t\t\t\tnew Vector2( d.y, 1 - d.z )\n\t\t\t];\n\n\t\t}\n\n\t}\n};\n\n\nexport { ExtrudeGeometry };\n","import { ExtrudeGeometry } from './ExtrudeGeometry';\nimport { Geometry } from '../core/Geometry';\n\n/**\n * @author zz85 / http://www.lab4games.net/zz85/blog\n * @author alteredq / http://alteredqualia.com/\n *\n * Text = 3D Text\n *\n * parameters = {\n * font: , // font\n *\n * size: , // size of the text\n * height: , // thickness to extrude text\n * curveSegments: , // number of points on the curves\n *\n * bevelEnabled: , // turn on bevel\n * bevelThickness: , // how deep into text bevel goes\n * bevelSize: // how far from text outline is bevel\n * }\n */\n\nfunction TextGeometry( text, parameters ) {\n\n\tparameters = parameters || {};\n\n\tvar font = parameters.font;\n\n\tif ( (font && font.isFont) === false ) {\n\n\t\tconsole.error( 'THREE.TextGeometry: font parameter is not an instance of THREE.Font.' );\n\t\treturn new Geometry();\n\n\t}\n\n\tvar shapes = font.generateShapes( text, parameters.size, parameters.curveSegments );\n\n\t// translate parameters to ExtrudeGeometry API\n\n\tparameters.amount = parameters.height !== undefined ? parameters.height : 50;\n\n\t// defaults\n\n\tif ( parameters.bevelThickness === undefined ) parameters.bevelThickness = 10;\n\tif ( parameters.bevelSize === undefined ) parameters.bevelSize = 8;\n\tif ( parameters.bevelEnabled === undefined ) parameters.bevelEnabled = false;\n\n\tExtrudeGeometry.call( this, shapes, parameters );\n\n\tthis.type = 'TextGeometry';\n\n}\n\nTextGeometry.prototype = Object.create( ExtrudeGeometry.prototype );\nTextGeometry.prototype.constructor = TextGeometry;\n\n\nexport { TextGeometry };\n","import { BufferGeometry } from '../core/BufferGeometry';\nimport { Vector3 } from '../math/Vector3';\nimport { Sphere } from '../math/Sphere';\nimport { Uint16Attribute, Uint32Attribute, BufferAttribute } from '../core/BufferAttribute';\n\n/**\n * @author benaadams / https://twitter.com/ben_a_adams\n * based on THREE.SphereGeometry\n */\n\nfunction SphereBufferGeometry( radius, widthSegments, heightSegments, phiStart, phiLength, thetaStart, thetaLength ) {\n\n\tBufferGeometry.call( this );\n\n\tthis.type = 'SphereBufferGeometry';\n\n\tthis.parameters = {\n\t\tradius: radius,\n\t\twidthSegments: widthSegments,\n\t\theightSegments: heightSegments,\n\t\tphiStart: phiStart,\n\t\tphiLength: phiLength,\n\t\tthetaStart: thetaStart,\n\t\tthetaLength: thetaLength\n\t};\n\n\tradius = radius || 50;\n\n\twidthSegments = Math.max( 3, Math.floor( widthSegments ) || 8 );\n\theightSegments = Math.max( 2, Math.floor( heightSegments ) || 6 );\n\n\tphiStart = phiStart !== undefined ? phiStart : 0;\n\tphiLength = phiLength !== undefined ? phiLength : Math.PI * 2;\n\n\tthetaStart = thetaStart !== undefined ? thetaStart : 0;\n\tthetaLength = thetaLength !== undefined ? thetaLength : Math.PI;\n\n\tvar thetaEnd = thetaStart + thetaLength;\n\n\tvar vertexCount = ( ( widthSegments + 1 ) * ( heightSegments + 1 ) );\n\n\tvar positions = new BufferAttribute( new Float32Array( vertexCount * 3 ), 3 );\n\tvar normals = new BufferAttribute( new Float32Array( vertexCount * 3 ), 3 );\n\tvar uvs = new BufferAttribute( new Float32Array( vertexCount * 2 ), 2 );\n\n\tvar index = 0, vertices = [], normal = new Vector3();\n\n\tfor ( var y = 0; y <= heightSegments; y ++ ) {\n\n\t\tvar verticesRow = [];\n\n\t\tvar v = y / heightSegments;\n\n\t\tfor ( var x = 0; x <= widthSegments; x ++ ) {\n\n\t\t\tvar u = x / widthSegments;\n\n\t\t\tvar px = - radius * Math.cos( phiStart + u * phiLength ) * Math.sin( thetaStart + v * thetaLength );\n\t\t\tvar py = radius * Math.cos( thetaStart + v * thetaLength );\n\t\t\tvar pz = radius * Math.sin( phiStart + u * phiLength ) * Math.sin( thetaStart + v * thetaLength );\n\n\t\t\tnormal.set( px, py, pz ).normalize();\n\n\t\t\tpositions.setXYZ( index, px, py, pz );\n\t\t\tnormals.setXYZ( index, normal.x, normal.y, normal.z );\n\t\t\tuvs.setXY( index, u, 1 - v );\n\n\t\t\tverticesRow.push( index );\n\n\t\t\tindex ++;\n\n\t\t}\n\n\t\tvertices.push( verticesRow );\n\n\t}\n\n\tvar indices = [];\n\n\tfor ( var y = 0; y < heightSegments; y ++ ) {\n\n\t\tfor ( var x = 0; x < widthSegments; x ++ ) {\n\n\t\t\tvar v1 = vertices[ y ][ x + 1 ];\n\t\t\tvar v2 = vertices[ y ][ x ];\n\t\t\tvar v3 = vertices[ y + 1 ][ x ];\n\t\t\tvar v4 = vertices[ y + 1 ][ x + 1 ];\n\n\t\t\tif ( y !== 0 || thetaStart > 0 ) indices.push( v1, v2, v4 );\n\t\t\tif ( y !== heightSegments - 1 || thetaEnd < Math.PI ) indices.push( v2, v3, v4 );\n\n\t\t}\n\n\t}\n\n\tthis.setIndex( new ( positions.count > 65535 ? Uint32Attribute : Uint16Attribute )( indices, 1 ) );\n\tthis.addAttribute( 'position', positions );\n\tthis.addAttribute( 'normal', normals );\n\tthis.addAttribute( 'uv', uvs );\n\n\tthis.boundingSphere = new Sphere( new Vector3(), radius );\n\n}\n\nSphereBufferGeometry.prototype = Object.create( BufferGeometry.prototype );\nSphereBufferGeometry.prototype.constructor = SphereBufferGeometry;\n\n\nexport { SphereBufferGeometry };\n","import { Geometry } from '../core/Geometry';\nimport { SphereBufferGeometry } from './SphereBufferGeometry';\n\n/**\n * @author mrdoob / http://mrdoob.com/\n */\n\nfunction SphereGeometry( radius, widthSegments, heightSegments, phiStart, phiLength, thetaStart, thetaLength ) {\n\n\tGeometry.call( this );\n\n\tthis.type = 'SphereGeometry';\n\n\tthis.parameters = {\n\t\tradius: radius,\n\t\twidthSegments: widthSegments,\n\t\theightSegments: heightSegments,\n\t\tphiStart: phiStart,\n\t\tphiLength: phiLength,\n\t\tthetaStart: thetaStart,\n\t\tthetaLength: thetaLength\n\t};\n\n\tthis.fromBufferGeometry( new SphereBufferGeometry( radius, widthSegments, heightSegments, phiStart, phiLength, thetaStart, thetaLength ) );\n\n}\n\nSphereGeometry.prototype = Object.create( Geometry.prototype );\nSphereGeometry.prototype.constructor = SphereGeometry;\n\n\nexport { SphereGeometry };\n","import { BufferGeometry } from '../core/BufferGeometry';\nimport { Vector2 } from '../math/Vector2';\nimport { Vector3 } from '../math/Vector3';\nimport { BufferAttribute } from '../core/BufferAttribute';\n\n/**\n * @author Mugen87 / https://github.com/Mugen87\n */\n\nfunction RingBufferGeometry( innerRadius, outerRadius, thetaSegments, phiSegments, thetaStart, thetaLength ) {\n\n\tBufferGeometry.call( this );\n\n\tthis.type = 'RingBufferGeometry';\n\n\tthis.parameters = {\n\t\tinnerRadius: innerRadius,\n\t\touterRadius: outerRadius,\n\t\tthetaSegments: thetaSegments,\n\t\tphiSegments: phiSegments,\n\t\tthetaStart: thetaStart,\n\t\tthetaLength: thetaLength\n\t};\n\n\tinnerRadius = innerRadius || 20;\n\touterRadius = outerRadius || 50;\n\n\tthetaStart = thetaStart !== undefined ? thetaStart : 0;\n\tthetaLength = thetaLength !== undefined ? thetaLength : Math.PI * 2;\n\n\tthetaSegments = thetaSegments !== undefined ? Math.max( 3, thetaSegments ) : 8;\n\tphiSegments = phiSegments !== undefined ? Math.max( 1, phiSegments ) : 1;\n\n\t// these are used to calculate buffer length\n\tvar vertexCount = ( thetaSegments + 1 ) * ( phiSegments + 1 );\n\tvar indexCount = thetaSegments * phiSegments * 2 * 3;\n\n\t// buffers\n\tvar indices = new BufferAttribute( new ( indexCount > 65535 ? Uint32Array : Uint16Array )( indexCount ) , 1 );\n\tvar vertices = new BufferAttribute( new Float32Array( vertexCount * 3 ), 3 );\n\tvar normals = new BufferAttribute( new Float32Array( vertexCount * 3 ), 3 );\n\tvar uvs = new BufferAttribute( new Float32Array( vertexCount * 2 ), 2 );\n\n\t// some helper variables\n\tvar index = 0, indexOffset = 0, segment;\n\tvar radius = innerRadius;\n\tvar radiusStep = ( ( outerRadius - innerRadius ) / phiSegments );\n\tvar vertex = new Vector3();\n\tvar uv = new Vector2();\n\tvar j, i;\n\n\t// generate vertices, normals and uvs\n\n\t// values are generate from the inside of the ring to the outside\n\n\tfor ( j = 0; j <= phiSegments; j ++ ) {\n\n\t\tfor ( i = 0; i <= thetaSegments; i ++ ) {\n\n\t\t\tsegment = thetaStart + i / thetaSegments * thetaLength;\n\n\t\t\t// vertex\n\t\t\tvertex.x = radius * Math.cos( segment );\n\t\t\tvertex.y = radius * Math.sin( segment );\n\t\t\tvertices.setXYZ( index, vertex.x, vertex.y, vertex.z );\n\n\t\t\t// normal\n\t\t\tnormals.setXYZ( index, 0, 0, 1 );\n\n\t\t\t// uv\n\t\t\tuv.x = ( vertex.x / outerRadius + 1 ) / 2;\n\t\t\tuv.y = ( vertex.y / outerRadius + 1 ) / 2;\n\t\t\tuvs.setXY( index, uv.x, uv.y );\n\n\t\t\t// increase index\n\t\t\tindex++;\n\n\t\t}\n\n\t\t// increase the radius for next row of vertices\n\t\tradius += radiusStep;\n\n\t}\n\n\t// generate indices\n\n\tfor ( j = 0; j < phiSegments; j ++ ) {\n\n\t\tvar thetaSegmentLevel = j * ( thetaSegments + 1 );\n\n\t\tfor ( i = 0; i < thetaSegments; i ++ ) {\n\n\t\t\tsegment = i + thetaSegmentLevel;\n\n\t\t\t// indices\n\t\t\tvar a = segment;\n\t\t\tvar b = segment + thetaSegments + 1;\n\t\t\tvar c = segment + thetaSegments + 2;\n\t\t\tvar d = segment + 1;\n\n\t\t\t// face one\n\t\t\tindices.setX( indexOffset, a ); indexOffset++;\n\t\t\tindices.setX( indexOffset, b ); indexOffset++;\n\t\t\tindices.setX( indexOffset, c ); indexOffset++;\n\n\t\t\t// face two\n\t\t\tindices.setX( indexOffset, a ); indexOffset++;\n\t\t\tindices.setX( indexOffset, c ); indexOffset++;\n\t\t\tindices.setX( indexOffset, d ); indexOffset++;\n\n\t\t}\n\n\t}\n\n\t// build geometry\n\n\tthis.setIndex( indices );\n\tthis.addAttribute( 'position', vertices );\n\tthis.addAttribute( 'normal', normals );\n\tthis.addAttribute( 'uv', uvs );\n\n}\n\nRingBufferGeometry.prototype = Object.create( BufferGeometry.prototype );\nRingBufferGeometry.prototype.constructor = RingBufferGeometry;\n\n\nexport { RingBufferGeometry };\n","import { Geometry } from '../core/Geometry';\nimport { RingBufferGeometry } from './RingBufferGeometry';\n\n/**\n * @author Kaleb Murphy\n */\n\nfunction RingGeometry( innerRadius, outerRadius, thetaSegments, phiSegments, thetaStart, thetaLength ) {\n\n\tGeometry.call( this );\n\n\tthis.type = 'RingGeometry';\n\n\tthis.parameters = {\n\t\tinnerRadius: innerRadius,\n\t\touterRadius: outerRadius,\n\t\tthetaSegments: thetaSegments,\n\t\tphiSegments: phiSegments,\n\t\tthetaStart: thetaStart,\n\t\tthetaLength: thetaLength\n\t};\n\n\tthis.fromBufferGeometry( new RingBufferGeometry( innerRadius, outerRadius, thetaSegments, phiSegments, thetaStart, thetaLength ) );\n\n}\n\nRingGeometry.prototype = Object.create( Geometry.prototype );\nRingGeometry.prototype.constructor = RingGeometry;\n\n\nexport { RingGeometry };\n","import { Geometry } from '../core/Geometry';\nimport { PlaneBufferGeometry } from './PlaneBufferGeometry';\n\n/**\n * @author mrdoob / http://mrdoob.com/\n * based on http://papervision3d.googlecode.com/svn/trunk/as3/trunk/src/org/papervision3d/objects/primitives/Plane.as\n */\n\nfunction PlaneGeometry( width, height, widthSegments, heightSegments ) {\n\n\tGeometry.call( this );\n\n\tthis.type = 'PlaneGeometry';\n\n\tthis.parameters = {\n\t\twidth: width,\n\t\theight: height,\n\t\twidthSegments: widthSegments,\n\t\theightSegments: heightSegments\n\t};\n\n\tthis.fromBufferGeometry( new PlaneBufferGeometry( width, height, widthSegments, heightSegments ) );\n\n}\n\nPlaneGeometry.prototype = Object.create( Geometry.prototype );\nPlaneGeometry.prototype.constructor = PlaneGeometry;\n\n\nexport { PlaneGeometry };\n","import { BufferGeometry } from '../core/BufferGeometry';\nimport { Vector3 } from '../math/Vector3';\nimport { Vector2 } from '../math/Vector2';\nimport { BufferAttribute } from '../core/BufferAttribute';\nimport { _Math } from '../math/Math';\n\n/**\n * @author Mugen87 / https://github.com/Mugen87\n */\n\n // points - to create a closed torus, one must use a set of points\n // like so: [ a, b, c, d, a ], see first is the same as last.\n // segments - the number of circumference segments to create\n // phiStart - the starting radian\n // phiLength - the radian (0 to 2PI) range of the lathed section\n // 2PI is a closed lathe, less than 2PI is a portion.\n\nfunction LatheBufferGeometry( points, segments, phiStart, phiLength ) {\n\n\tBufferGeometry.call( this );\n\n\tthis.type = 'LatheBufferGeometry';\n\n\tthis.parameters = {\n\t\tpoints: points,\n\t\tsegments: segments,\n\t\tphiStart: phiStart,\n\t\tphiLength: phiLength\n\t};\n\n\tsegments = Math.floor( segments ) || 12;\n\tphiStart = phiStart || 0;\n\tphiLength = phiLength || Math.PI * 2;\n\n\t// clamp phiLength so it's in range of [ 0, 2PI ]\n\tphiLength = _Math.clamp( phiLength, 0, Math.PI * 2 );\n\n\t// these are used to calculate buffer length\n\tvar vertexCount = ( segments + 1 ) * points.length;\n\tvar indexCount = segments * points.length * 2 * 3;\n\n\t// buffers\n\tvar indices = new BufferAttribute( new ( indexCount > 65535 ? Uint32Array : Uint16Array )( indexCount ) , 1 );\n\tvar vertices = new BufferAttribute( new Float32Array( vertexCount * 3 ), 3 );\n\tvar uvs = new BufferAttribute( new Float32Array( vertexCount * 2 ), 2 );\n\n\t// helper variables\n\tvar index = 0, indexOffset = 0, base;\n\tvar inverseSegments = 1.0 / segments;\n\tvar vertex = new Vector3();\n\tvar uv = new Vector2();\n\tvar i, j;\n\n\t// generate vertices and uvs\n\n\tfor ( i = 0; i <= segments; i ++ ) {\n\n\t\tvar phi = phiStart + i * inverseSegments * phiLength;\n\n\t\tvar sin = Math.sin( phi );\n\t\tvar cos = Math.cos( phi );\n\n\t\tfor ( j = 0; j <= ( points.length - 1 ); j ++ ) {\n\n\t\t\t// vertex\n\t\t\tvertex.x = points[ j ].x * sin;\n\t\t\tvertex.y = points[ j ].y;\n\t\t\tvertex.z = points[ j ].x * cos;\n\t\t\tvertices.setXYZ( index, vertex.x, vertex.y, vertex.z );\n\n\t\t\t// uv\n\t\t\tuv.x = i / segments;\n\t\t\tuv.y = j / ( points.length - 1 );\n\t\t\tuvs.setXY( index, uv.x, uv.y );\n\n\t\t\t// increase index\n\t\t\tindex ++;\n\n\t\t}\n\n\t}\n\n\t// generate indices\n\n\tfor ( i = 0; i < segments; i ++ ) {\n\n\t\tfor ( j = 0; j < ( points.length - 1 ); j ++ ) {\n\n\t\t\tbase = j + i * points.length;\n\n\t\t\t// indices\n\t\t\tvar a = base;\n\t\t\tvar b = base + points.length;\n\t\t\tvar c = base + points.length + 1;\n\t\t\tvar d = base + 1;\n\n\t\t\t// face one\n\t\t\tindices.setX( indexOffset, a ); indexOffset++;\n\t\t\tindices.setX( indexOffset, b ); indexOffset++;\n\t\t\tindices.setX( indexOffset, d ); indexOffset++;\n\n\t\t\t// face two\n\t\t\tindices.setX( indexOffset, b ); indexOffset++;\n\t\t\tindices.setX( indexOffset, c ); indexOffset++;\n\t\t\tindices.setX( indexOffset, d ); indexOffset++;\n\n\t\t}\n\n\t}\n\n\t// build geometry\n\n\tthis.setIndex( indices );\n\tthis.addAttribute( 'position', vertices );\n\tthis.addAttribute( 'uv', uvs );\n\n\t// generate normals\n\n\tthis.computeVertexNormals();\n\n\t// if the geometry is closed, we need to average the normals along the seam.\n\t// because the corresponding vertices are identical (but still have different UVs).\n\n\tif( phiLength === Math.PI * 2 ) {\n\n\t\tvar normals = this.attributes.normal.array;\n\t\tvar n1 = new Vector3();\n\t\tvar n2 = new Vector3();\n\t\tvar n = new Vector3();\n\n\t\t// this is the buffer offset for the last line of vertices\n\t\tbase = segments * points.length * 3;\n\n\t\tfor( i = 0, j = 0; i < points.length; i ++, j += 3 ) {\n\n\t\t\t// select the normal of the vertex in the first line\n\t\t\tn1.x = normals[ j + 0 ];\n\t\t\tn1.y = normals[ j + 1 ];\n\t\t\tn1.z = normals[ j + 2 ];\n\n\t\t\t// select the normal of the vertex in the last line\n\t\t\tn2.x = normals[ base + j + 0 ];\n\t\t\tn2.y = normals[ base + j + 1 ];\n\t\t\tn2.z = normals[ base + j + 2 ];\n\n\t\t\t// average normals\n\t\t\tn.addVectors( n1, n2 ).normalize();\n\n\t\t\t// assign the new values to both normals\n\t\t\tnormals[ j + 0 ] = normals[ base + j + 0 ] = n.x;\n\t\t\tnormals[ j + 1 ] = normals[ base + j + 1 ] = n.y;\n\t\t\tnormals[ j + 2 ] = normals[ base + j + 2 ] = n.z;\n\n\t\t} // next row\n\n\t}\n\n}\n\nLatheBufferGeometry.prototype = Object.create( BufferGeometry.prototype );\nLatheBufferGeometry.prototype.constructor = LatheBufferGeometry;\n\n\nexport { LatheBufferGeometry };\n","import { Geometry } from '../core/Geometry';\nimport { LatheBufferGeometry } from './LatheBufferGeometry';\n\n/**\n * @author astrodud / http://astrodud.isgreat.org/\n * @author zz85 / https://github.com/zz85\n * @author bhouston / http://clara.io\n */\n\n// points - to create a closed torus, one must use a set of points\n// like so: [ a, b, c, d, a ], see first is the same as last.\n// segments - the number of circumference segments to create\n// phiStart - the starting radian\n// phiLength - the radian (0 to 2PI) range of the lathed section\n// 2PI is a closed lathe, less than 2PI is a portion.\n\nfunction LatheGeometry( points, segments, phiStart, phiLength ) {\n\n\tGeometry.call( this );\n\n\tthis.type = 'LatheGeometry';\n\n\tthis.parameters = {\n\t\tpoints: points,\n\t\tsegments: segments,\n\t\tphiStart: phiStart,\n\t\tphiLength: phiLength\n\t};\n\n\tthis.fromBufferGeometry( new LatheBufferGeometry( points, segments, phiStart, phiLength ) );\n\tthis.mergeVertices();\n\n}\n\nLatheGeometry.prototype = Object.create( Geometry.prototype );\nLatheGeometry.prototype.constructor = LatheGeometry;\n\n\nexport { LatheGeometry };\n","import { BufferGeometry } from '../core/BufferGeometry';\nimport { Float32Attribute, Uint16Attribute, Uint32Attribute } from '../core/BufferAttribute';\nimport { ShapeUtils } from '../extras/ShapeUtils';\n\n/**\n * @author Mugen87 / https://github.com/Mugen87\n *\n * Creates a one-sided polygonal geometry from one or more shapes.\n *\n **/\n\nfunction ShapeBufferGeometry( shapes, curveSegments ) {\n\n\tBufferGeometry.call( this );\n\n\tthis.type = 'ShapeBufferGeometry';\n\n\tthis.parameters = {\n\t\tshapes: shapes,\n\t\tcurveSegments: curveSegments\n\t};\n\n\tcurveSegments = curveSegments || 12;\n\n\tvar vertices = [];\n\tvar normals = [];\n\tvar uvs = [];\n\tvar indices = [];\n\n\tvar groupStart = 0;\n\tvar groupCount = 0;\n\n\t// allow single and array values for \"shapes\" parameter\n\n\tif ( Array.isArray( shapes ) === false ) {\n\n\t\taddShape( shapes );\n\n\t} else {\n\n\t\tfor ( var i = 0; i < shapes.length; i++ ) {\n\n\t\t\taddShape( shapes[ i ] );\n\n\t\t\tthis.addGroup( groupStart, groupCount, i ); // enables MultiMaterial support\n\n\t\t\tgroupStart += groupCount;\n\t\t\tgroupCount = 0;\n\n\t\t}\n\n\t}\n\n\t// build geometry\n\n\tthis.setIndex( ( indices.length > 65535 ? Uint32Attribute : Uint16Attribute )( indices, 1 ) );\n\tthis.addAttribute( 'position', Float32Attribute( vertices, 3 ) );\n\tthis.addAttribute( 'normal', Float32Attribute( normals, 3 ) );\n\tthis.addAttribute( 'uv', Float32Attribute( uvs, 2 ) );\n\n\n\t// helper functions\n\n\tfunction addShape( shape ) {\n\n\t\tvar i, l, shapeHole;\n\n\t\tvar indexOffset = vertices.length / 3;\n\t\tvar points = shape.extractPoints( curveSegments );\n\n\t\tvar shapeVertices = points.shape;\n\t\tvar shapeHoles = points.holes;\n\n\t\t// check direction of vertices\n\n\t\tif ( ShapeUtils.isClockWise( shapeVertices ) === false ) {\n\n\t\t\tshapeVertices = shapeVertices.reverse();\n\n\t\t\t// also check if holes are in the opposite direction\n\n\t\t\tfor ( i = 0, l = shapeHoles.length; i < l; i ++ ) {\n\n\t\t\t\tshapeHole = shapeHoles[ i ];\n\n\t\t\t\tif ( ShapeUtils.isClockWise( shapeHole ) === true ) {\n\n\t\t\t\t\tshapeHoles[ i ] = shapeHole.reverse();\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t}\n\n\t\tvar faces = ShapeUtils.triangulateShape( shapeVertices, shapeHoles );\n\n\t\t// join vertices of inner and outer paths to a single array\n\n\t\tfor ( i = 0, l = shapeHoles.length; i < l; i ++ ) {\n\n\t\t\tshapeHole = shapeHoles[ i ];\n\t\t\tshapeVertices = shapeVertices.concat( shapeHole );\n\n\t\t}\n\n\t\t// vertices, normals, uvs\n\n\t\tfor ( i = 0, l = shapeVertices.length; i < l; i ++ ) {\n\n\t\t\tvar vertex = shapeVertices[ i ];\n\n\t\t\tvertices.push( vertex.x, vertex.y, 0 );\n\t\t\tnormals.push( 0, 0, 1 );\n\t\t\tuvs.push( vertex.x, vertex.y ); // world uvs\n\n\t\t}\n\n\t\t// incides\n\n\t\tfor ( i = 0, l = faces.length; i < l; i ++ ) {\n\n\t\t\tvar face = faces[ i ];\n\n\t\t\tvar a = face[ 0 ] + indexOffset;\n\t\t\tvar b = face[ 1 ] + indexOffset;\n\t\t\tvar c = face[ 2 ] + indexOffset;\n\n\t\t\tindices.push( a, b, c );\n\t\t\tgroupCount += 3;\n\n\t\t}\n\n\t}\n\n}\n\nShapeBufferGeometry.prototype = Object.create( BufferGeometry.prototype );\nShapeBufferGeometry.prototype.constructor = ShapeBufferGeometry;\n\n\nexport { ShapeBufferGeometry };\n","import { Geometry } from '../core/Geometry';\nimport { ShapeBufferGeometry } from './ShapeBufferGeometry';\n\n/**\n * @author jonobr1 / http://jonobr1.com\n *\n * Creates a one-sided polygonal geometry from a path shape.\n *\n **/\n\nfunction ShapeGeometry( shapes, curveSegments ) {\n\n\tGeometry.call( this );\n\n\tthis.type = 'ShapeGeometry';\n\n\tif ( typeof curveSegments === 'object' ) {\n\n\t\tconsole.warn( 'THREE.ShapeGeometry: Options parameter has been removed.' );\n\n\t\tcurveSegments = curveSegments.curveSegments;\n\n\t}\n\n\tthis.parameters = {\n\t\tshapes: shapes,\n\t\tcurveSegments: curveSegments\n\t};\n\n\tthis.fromBufferGeometry( new ShapeBufferGeometry( shapes, curveSegments ) );\n\tthis.mergeVertices();\n\n}\n\nShapeGeometry.prototype = Object.create( Geometry.prototype );\nShapeGeometry.prototype.constructor = ShapeGeometry;\n\n\nexport { ShapeGeometry };\n","import { BufferGeometry } from '../core/BufferGeometry';\nimport { BufferAttribute } from '../core/BufferAttribute';\nimport { Geometry } from '../core/Geometry';\nimport { _Math } from '../math/Math';\n\n/**\n * @author WestLangley / http://github.com/WestLangley\n */\n\nfunction EdgesGeometry( geometry, thresholdAngle ) {\n\n\tBufferGeometry.call( this );\n\n\tthresholdAngle = ( thresholdAngle !== undefined ) ? thresholdAngle : 1;\n\n\tvar thresholdDot = Math.cos( _Math.DEG2RAD * thresholdAngle );\n\n\tvar edge = [ 0, 0 ], hash = {};\n\n\tfunction sortFunction( a, b ) {\n\n\t\treturn a - b;\n\n\t}\n\n\tvar keys = [ 'a', 'b', 'c' ];\n\n\tvar geometry2;\n\n\tif ( (geometry && geometry.isBufferGeometry) ) {\n\n\t\tgeometry2 = new Geometry();\n\t\tgeometry2.fromBufferGeometry( geometry );\n\n\t} else {\n\n\t\tgeometry2 = geometry.clone();\n\n\t}\n\n\tgeometry2.mergeVertices();\n\tgeometry2.computeFaceNormals();\n\n\tvar vertices = geometry2.vertices;\n\tvar faces = geometry2.faces;\n\n\tfor ( var i = 0, l = faces.length; i < l; i ++ ) {\n\n\t\tvar face = faces[ i ];\n\n\t\tfor ( var j = 0; j < 3; j ++ ) {\n\n\t\t\tedge[ 0 ] = face[ keys[ j ] ];\n\t\t\tedge[ 1 ] = face[ keys[ ( j + 1 ) % 3 ] ];\n\t\t\tedge.sort( sortFunction );\n\n\t\t\tvar key = edge.toString();\n\n\t\t\tif ( hash[ key ] === undefined ) {\n\n\t\t\t\thash[ key ] = { vert1: edge[ 0 ], vert2: edge[ 1 ], face1: i, face2: undefined };\n\n\t\t\t} else {\n\n\t\t\t\thash[ key ].face2 = i;\n\n\t\t\t}\n\n\t\t}\n\n\t}\n\n\tvar coords = [];\n\n\tfor ( var key in hash ) {\n\n\t\tvar h = hash[ key ];\n\n\t\tif ( h.face2 === undefined || faces[ h.face1 ].normal.dot( faces[ h.face2 ].normal ) <= thresholdDot ) {\n\n\t\t\tvar vertex = vertices[ h.vert1 ];\n\t\t\tcoords.push( vertex.x );\n\t\t\tcoords.push( vertex.y );\n\t\t\tcoords.push( vertex.z );\n\n\t\t\tvertex = vertices[ h.vert2 ];\n\t\t\tcoords.push( vertex.x );\n\t\t\tcoords.push( vertex.y );\n\t\t\tcoords.push( vertex.z );\n\n\t\t}\n\n\t}\n\n\tthis.addAttribute( 'position', new BufferAttribute( new Float32Array( coords ), 3 ) );\n\n}\n\nEdgesGeometry.prototype = Object.create( BufferGeometry.prototype );\nEdgesGeometry.prototype.constructor = EdgesGeometry;\n\n\nexport { EdgesGeometry };\n","import { BufferGeometry } from '../core/BufferGeometry';\nimport { Vector3 } from '../math/Vector3';\nimport { Vector2 } from '../math/Vector2';\nimport { BufferAttribute } from '../core/BufferAttribute';\n\n/**\n * @author Mugen87 / https://github.com/Mugen87\n */\n\nfunction CylinderBufferGeometry( radiusTop, radiusBottom, height, radialSegments, heightSegments, openEnded, thetaStart, thetaLength ) {\n\n\tBufferGeometry.call( this );\n\n\tthis.type = 'CylinderBufferGeometry';\n\n\tthis.parameters = {\n\t\tradiusTop: radiusTop,\n\t\tradiusBottom: radiusBottom,\n\t\theight: height,\n\t\tradialSegments: radialSegments,\n\t\theightSegments: heightSegments,\n\t\topenEnded: openEnded,\n\t\tthetaStart: thetaStart,\n\t\tthetaLength: thetaLength\n\t};\n\n\tvar scope = this;\n\n\tradiusTop = radiusTop !== undefined ? radiusTop : 20;\n\tradiusBottom = radiusBottom !== undefined ? radiusBottom : 20;\n\theight = height !== undefined ? height : 100;\n\n\tradialSegments = Math.floor( radialSegments ) || 8;\n\theightSegments = Math.floor( heightSegments ) || 1;\n\n\topenEnded = openEnded !== undefined ? openEnded : false;\n\tthetaStart = thetaStart !== undefined ? thetaStart : 0.0;\n\tthetaLength = thetaLength !== undefined ? thetaLength : 2.0 * Math.PI;\n\n\t// used to calculate buffer length\n\n\tvar nbCap = 0;\n\n\tif ( openEnded === false ) {\n\n\t\tif ( radiusTop > 0 ) nbCap ++;\n\t\tif ( radiusBottom > 0 ) nbCap ++;\n\n\t}\n\n\tvar vertexCount = calculateVertexCount();\n\tvar indexCount = calculateIndexCount();\n\n\t// buffers\n\n\tvar indices = new BufferAttribute( new ( indexCount > 65535 ? Uint32Array : Uint16Array )( indexCount ), 1 );\n\tvar vertices = new BufferAttribute( new Float32Array( vertexCount * 3 ), 3 );\n\tvar normals = new BufferAttribute( new Float32Array( vertexCount * 3 ), 3 );\n\tvar uvs = new BufferAttribute( new Float32Array( vertexCount * 2 ), 2 );\n\n\t// helper variables\n\n\tvar index = 0,\n\t indexOffset = 0,\n\t indexArray = [],\n\t halfHeight = height / 2;\n\n\t// group variables\n\tvar groupStart = 0;\n\n\t// generate geometry\n\n\tgenerateTorso();\n\n\tif ( openEnded === false ) {\n\n\t\tif ( radiusTop > 0 ) generateCap( true );\n\t\tif ( radiusBottom > 0 ) generateCap( false );\n\n\t}\n\n\t// build geometry\n\n\tthis.setIndex( indices );\n\tthis.addAttribute( 'position', vertices );\n\tthis.addAttribute( 'normal', normals );\n\tthis.addAttribute( 'uv', uvs );\n\n\t// helper functions\n\n\tfunction calculateVertexCount() {\n\n\t\tvar count = ( radialSegments + 1 ) * ( heightSegments + 1 );\n\n\t\tif ( openEnded === false ) {\n\n\t\t\tcount += ( ( radialSegments + 1 ) * nbCap ) + ( radialSegments * nbCap );\n\n\t\t}\n\n\t\treturn count;\n\n\t}\n\n\tfunction calculateIndexCount() {\n\n\t\tvar count = radialSegments * heightSegments * 2 * 3;\n\n\t\tif ( openEnded === false ) {\n\n\t\t\tcount += radialSegments * nbCap * 3;\n\n\t\t}\n\n\t\treturn count;\n\n\t}\n\n\tfunction generateTorso() {\n\n\t\tvar x, y;\n\t\tvar normal = new Vector3();\n\t\tvar vertex = new Vector3();\n\n\t\tvar groupCount = 0;\n\n\t\t// this will be used to calculate the normal\n\t\tvar slope = ( radiusBottom - radiusTop ) / height;\n\n\t\t// generate vertices, normals and uvs\n\n\t\tfor ( y = 0; y <= heightSegments; y ++ ) {\n\n\t\t\tvar indexRow = [];\n\n\t\t\tvar v = y / heightSegments;\n\n\t\t\t// calculate the radius of the current row\n\t\t\tvar radius = v * ( radiusBottom - radiusTop ) + radiusTop;\n\n\t\t\tfor ( x = 0; x <= radialSegments; x ++ ) {\n\n\t\t\t\tvar u = x / radialSegments;\n\n\t\t\t\tvar theta = u * thetaLength + thetaStart;\n\n\t\t\t\tvar sinTheta = Math.sin( theta );\n\t\t\t\tvar cosTheta = Math.cos( theta );\n\n\t\t\t\t// vertex\n\t\t\t\tvertex.x = radius * sinTheta;\n\t\t\t\tvertex.y = - v * height + halfHeight;\n\t\t\t\tvertex.z = radius * cosTheta;\n\t\t\t\tvertices.setXYZ( index, vertex.x, vertex.y, vertex.z );\n\n\t\t\t\t// normal\n\t\t\t\tnormal.set( sinTheta, slope, cosTheta ).normalize();\n\t\t\t\tnormals.setXYZ( index, normal.x, normal.y, normal.z );\n\n\t\t\t\t// uv\n\t\t\t\tuvs.setXY( index, u, 1 - v );\n\n\t\t\t\t// save index of vertex in respective row\n\t\t\t\tindexRow.push( index );\n\n\t\t\t\t// increase index\n\t\t\t\tindex ++;\n\n\t\t\t}\n\n\t\t\t// now save vertices of the row in our index array\n\t\t\tindexArray.push( indexRow );\n\n\t\t}\n\n\t\t// generate indices\n\n\t\tfor ( x = 0; x < radialSegments; x ++ ) {\n\n\t\t\tfor ( y = 0; y < heightSegments; y ++ ) {\n\n\t\t\t\t// we use the index array to access the correct indices\n\t\t\t\tvar i1 = indexArray[ y ][ x ];\n\t\t\t\tvar i2 = indexArray[ y + 1 ][ x ];\n\t\t\t\tvar i3 = indexArray[ y + 1 ][ x + 1 ];\n\t\t\t\tvar i4 = indexArray[ y ][ x + 1 ];\n\n\t\t\t\t// face one\n\t\t\t\tindices.setX( indexOffset, i1 ); indexOffset ++;\n\t\t\t\tindices.setX( indexOffset, i2 ); indexOffset ++;\n\t\t\t\tindices.setX( indexOffset, i4 ); indexOffset ++;\n\n\t\t\t\t// face two\n\t\t\t\tindices.setX( indexOffset, i2 ); indexOffset ++;\n\t\t\t\tindices.setX( indexOffset, i3 ); indexOffset ++;\n\t\t\t\tindices.setX( indexOffset, i4 ); indexOffset ++;\n\n\t\t\t\t// update counters\n\t\t\t\tgroupCount += 6;\n\n\t\t\t}\n\n\t\t}\n\n\t\t// add a group to the geometry. this will ensure multi material support\n\t\tscope.addGroup( groupStart, groupCount, 0 );\n\n\t\t// calculate new start value for groups\n\t\tgroupStart += groupCount;\n\n\t}\n\n\tfunction generateCap( top ) {\n\n\t\tvar x, centerIndexStart, centerIndexEnd;\n\n\t\tvar uv = new Vector2();\n\t\tvar vertex = new Vector3();\n\n\t\tvar groupCount = 0;\n\n\t\tvar radius = ( top === true ) ? radiusTop : radiusBottom;\n\t\tvar sign = ( top === true ) ? 1 : - 1;\n\n\t\t// save the index of the first center vertex\n\t\tcenterIndexStart = index;\n\n\t\t// first we generate the center vertex data of the cap.\n\t\t// because the geometry needs one set of uvs per face,\n\t\t// we must generate a center vertex per face/segment\n\n\t\tfor ( x = 1; x <= radialSegments; x ++ ) {\n\n\t\t\t// vertex\n\t\t\tvertices.setXYZ( index, 0, halfHeight * sign, 0 );\n\n\t\t\t// normal\n\t\t\tnormals.setXYZ( index, 0, sign, 0 );\n\n\t\t\t// uv\n\t\t\tuv.x = 0.5;\n\t\t\tuv.y = 0.5;\n\n\t\t\tuvs.setXY( index, uv.x, uv.y );\n\n\t\t\t// increase index\n\t\t\tindex ++;\n\n\t\t}\n\n\t\t// save the index of the last center vertex\n\t\tcenterIndexEnd = index;\n\n\t\t// now we generate the surrounding vertices, normals and uvs\n\n\t\tfor ( x = 0; x <= radialSegments; x ++ ) {\n\n\t\t\tvar u = x / radialSegments;\n\t\t\tvar theta = u * thetaLength + thetaStart;\n\n\t\t\tvar cosTheta = Math.cos( theta );\n\t\t\tvar sinTheta = Math.sin( theta );\n\n\t\t\t// vertex\n\t\t\tvertex.x = radius * sinTheta;\n\t\t\tvertex.y = halfHeight * sign;\n\t\t\tvertex.z = radius * cosTheta;\n\t\t\tvertices.setXYZ( index, vertex.x, vertex.y, vertex.z );\n\n\t\t\t// normal\n\t\t\tnormals.setXYZ( index, 0, sign, 0 );\n\n\t\t\t// uv\n\t\t\tuv.x = ( cosTheta * 0.5 ) + 0.5;\n\t\t\tuv.y = ( sinTheta * 0.5 * sign ) + 0.5;\n\t\t\tuvs.setXY( index, uv.x, uv.y );\n\n\t\t\t// increase index\n\t\t\tindex ++;\n\n\t\t}\n\n\t\t// generate indices\n\n\t\tfor ( x = 0; x < radialSegments; x ++ ) {\n\n\t\t\tvar c = centerIndexStart + x;\n\t\t\tvar i = centerIndexEnd + x;\n\n\t\t\tif ( top === true ) {\n\n\t\t\t\t// face top\n\t\t\t\tindices.setX( indexOffset, i ); indexOffset ++;\n\t\t\t\tindices.setX( indexOffset, i + 1 ); indexOffset ++;\n\t\t\t\tindices.setX( indexOffset, c ); indexOffset ++;\n\n\t\t\t} else {\n\n\t\t\t\t// face bottom\n\t\t\t\tindices.setX( indexOffset, i + 1 ); indexOffset ++;\n\t\t\t\tindices.setX( indexOffset, i ); indexOffset ++;\n\t\t\t\tindices.setX( indexOffset, c ); indexOffset ++;\n\n\t\t\t}\n\n\t\t\t// update counters\n\t\t\tgroupCount += 3;\n\n\t\t}\n\n\t\t// add a group to the geometry. this will ensure multi material support\n\t\tscope.addGroup( groupStart, groupCount, top === true ? 1 : 2 );\n\n\t\t// calculate new start value for groups\n\t\tgroupStart += groupCount;\n\n\t}\n\n}\n\nCylinderBufferGeometry.prototype = Object.create( BufferGeometry.prototype );\nCylinderBufferGeometry.prototype.constructor = CylinderBufferGeometry;\n\n\nexport { CylinderBufferGeometry };\n","import { Geometry } from '../core/Geometry';\nimport { CylinderBufferGeometry } from './CylinderBufferGeometry';\n\n/**\n * @author mrdoob / http://mrdoob.com/\n */\n\nfunction CylinderGeometry( radiusTop, radiusBottom, height, radialSegments, heightSegments, openEnded, thetaStart, thetaLength ) {\n\n\tGeometry.call( this );\n\n\tthis.type = 'CylinderGeometry';\n\n\tthis.parameters = {\n\t\tradiusTop: radiusTop,\n\t\tradiusBottom: radiusBottom,\n\t\theight: height,\n\t\tradialSegments: radialSegments,\n\t\theightSegments: heightSegments,\n\t\topenEnded: openEnded,\n\t\tthetaStart: thetaStart,\n\t\tthetaLength: thetaLength\n\t};\n\n\tthis.fromBufferGeometry( new CylinderBufferGeometry( radiusTop, radiusBottom, height, radialSegments, heightSegments, openEnded, thetaStart, thetaLength ) );\n\tthis.mergeVertices();\n\n}\n\nCylinderGeometry.prototype = Object.create( Geometry.prototype );\nCylinderGeometry.prototype.constructor = CylinderGeometry;\n\n\nexport { CylinderGeometry };\n","import { CylinderGeometry } from './CylinderGeometry';\n\n/**\n * @author abelnation / http://github.com/abelnation\n */\n\nfunction ConeGeometry( radius, height, radialSegments, heightSegments, openEnded, thetaStart, thetaLength ) {\n\n\tCylinderGeometry.call( this, 0, radius, height, radialSegments, heightSegments, openEnded, thetaStart, thetaLength );\n\n\tthis.type = 'ConeGeometry';\n\n\tthis.parameters = {\n\t\tradius: radius,\n\t\theight: height,\n\t\tradialSegments: radialSegments,\n\t\theightSegments: heightSegments,\n\t\topenEnded: openEnded,\n\t\tthetaStart: thetaStart,\n\t\tthetaLength: thetaLength\n\t};\n\n}\n\nConeGeometry.prototype = Object.create( CylinderGeometry.prototype );\nConeGeometry.prototype.constructor = ConeGeometry;\n\n\nexport { ConeGeometry };\n","import { CylinderBufferGeometry } from './CylinderBufferGeometry';\n\n/**\n * @author: abelnation / http://github.com/abelnation\n */\n\nfunction ConeBufferGeometry( radius, height, radialSegments, heightSegments, openEnded, thetaStart, thetaLength ) {\n\n\tCylinderBufferGeometry.call( this, 0, radius, height, radialSegments, heightSegments, openEnded, thetaStart, thetaLength );\n\n\tthis.type = 'ConeBufferGeometry';\n\n\tthis.parameters = {\n\t\tradius: radius,\n\t\theight: height,\n\t\tradialSegments: radialSegments,\n\t\theightSegments: heightSegments,\n\t\topenEnded: openEnded,\n\t\tthetaStart: thetaStart,\n\t\tthetaLength: thetaLength\n\t};\n\n}\n\nConeBufferGeometry.prototype = Object.create( CylinderBufferGeometry.prototype );\nConeBufferGeometry.prototype.constructor = ConeBufferGeometry;\n\n\nexport { ConeBufferGeometry };\n","import { BufferGeometry } from '../core/BufferGeometry';\nimport { Vector3 } from '../math/Vector3';\nimport { Sphere } from '../math/Sphere';\nimport { BufferAttribute } from '../core/BufferAttribute';\n\n/**\n * @author benaadams / https://twitter.com/ben_a_adams\n */\n\nfunction CircleBufferGeometry( radius, segments, thetaStart, thetaLength ) {\n\n\tBufferGeometry.call( this );\n\n\tthis.type = 'CircleBufferGeometry';\n\n\tthis.parameters = {\n\t\tradius: radius,\n\t\tsegments: segments,\n\t\tthetaStart: thetaStart,\n\t\tthetaLength: thetaLength\n\t};\n\n\tradius = radius || 50;\n\tsegments = segments !== undefined ? Math.max( 3, segments ) : 8;\n\n\tthetaStart = thetaStart !== undefined ? thetaStart : 0;\n\tthetaLength = thetaLength !== undefined ? thetaLength : Math.PI * 2;\n\n\tvar vertices = segments + 2;\n\n\tvar positions = new Float32Array( vertices * 3 );\n\tvar normals = new Float32Array( vertices * 3 );\n\tvar uvs = new Float32Array( vertices * 2 );\n\n\t// center data is already zero, but need to set a few extras\n\tnormals[ 2 ] = 1.0;\n\tuvs[ 0 ] = 0.5;\n\tuvs[ 1 ] = 0.5;\n\n\tfor ( var s = 0, i = 3, ii = 2 ; s <= segments; s ++, i += 3, ii += 2 ) {\n\n\t\tvar segment = thetaStart + s / segments * thetaLength;\n\n\t\tpositions[ i ] = radius * Math.cos( segment );\n\t\tpositions[ i + 1 ] = radius * Math.sin( segment );\n\n\t\tnormals[ i + 2 ] = 1; // normal z\n\n\t\tuvs[ ii ] = ( positions[ i ] / radius + 1 ) / 2;\n\t\tuvs[ ii + 1 ] = ( positions[ i + 1 ] / radius + 1 ) / 2;\n\n\t}\n\n\tvar indices = [];\n\n\tfor ( var i = 1; i <= segments; i ++ ) {\n\n\t\tindices.push( i, i + 1, 0 );\n\n\t}\n\n\tthis.setIndex( new BufferAttribute( new Uint16Array( indices ), 1 ) );\n\tthis.addAttribute( 'position', new BufferAttribute( positions, 3 ) );\n\tthis.addAttribute( 'normal', new BufferAttribute( normals, 3 ) );\n\tthis.addAttribute( 'uv', new BufferAttribute( uvs, 2 ) );\n\n\tthis.boundingSphere = new Sphere( new Vector3(), radius );\n\n}\n\nCircleBufferGeometry.prototype = Object.create( BufferGeometry.prototype );\nCircleBufferGeometry.prototype.constructor = CircleBufferGeometry;\n\n\nexport { CircleBufferGeometry };\n","import { Geometry } from '../core/Geometry';\nimport { CircleBufferGeometry } from './CircleBufferGeometry';\n\n/**\n * @author hughes\n */\n\nfunction CircleGeometry( radius, segments, thetaStart, thetaLength ) {\n\n\tGeometry.call( this );\n\n\tthis.type = 'CircleGeometry';\n\n\tthis.parameters = {\n\t\tradius: radius,\n\t\tsegments: segments,\n\t\tthetaStart: thetaStart,\n\t\tthetaLength: thetaLength\n\t};\n\n\tthis.fromBufferGeometry( new CircleBufferGeometry( radius, segments, thetaStart, thetaLength ) );\n\n}\n\nCircleGeometry.prototype = Object.create( Geometry.prototype );\nCircleGeometry.prototype.constructor = CircleGeometry;\n\n\nexport { CircleGeometry };\n","import { Geometry } from '../core/Geometry';\nimport { BoxBufferGeometry } from './BoxBufferGeometry';\n\n/**\n * @author mrdoob / http://mrdoob.com/\n * based on http://papervision3d.googlecode.com/svn/trunk/as3/trunk/src/org/papervision3d/objects/primitives/Cube.as\n */\n\nfunction BoxGeometry( width, height, depth, widthSegments, heightSegments, depthSegments ) {\n\n\tGeometry.call( this );\n\n\tthis.type = 'BoxGeometry';\n\n\tthis.parameters = {\n\t\twidth: width,\n\t\theight: height,\n\t\tdepth: depth,\n\t\twidthSegments: widthSegments,\n\t\theightSegments: heightSegments,\n\t\tdepthSegments: depthSegments\n\t};\n\n\tthis.fromBufferGeometry( new BoxBufferGeometry( width, height, depth, widthSegments, heightSegments, depthSegments ) );\n\tthis.mergeVertices();\n\n}\n\nBoxGeometry.prototype = Object.create( Geometry.prototype );\nBoxGeometry.prototype.constructor = BoxGeometry;\n\n\nexport { BoxGeometry };\n","import { ShaderMaterial } from './ShaderMaterial';\nimport { ShaderChunk } from '../renderers/shaders/ShaderChunk';\nimport { UniformsLib } from '../renderers/shaders/UniformsLib';\nimport { UniformsUtils } from '../renderers/shaders/UniformsUtils';\n\n/**\n * @author mrdoob / http://mrdoob.com/\n */\n\nfunction ShadowMaterial() {\n\n\tShaderMaterial.call( this, {\n\t\tuniforms: UniformsUtils.merge( [\n\t\t\tUniformsLib[ \"lights\" ],\n\t\t\t{\n\t\t\t\topacity: { value: 1.0 }\n\t\t\t}\n\t\t] ),\n\t\tvertexShader: ShaderChunk[ 'shadow_vert' ],\n\t\tfragmentShader: ShaderChunk[ 'shadow_frag' ]\n\t} );\n\n\tthis.lights = true;\n\tthis.transparent = true;\n\n\tObject.defineProperties( this, {\n\t\topacity: {\n\t\t\tenumerable: true,\n\t\t\tget: function () {\n\t\t\t\treturn this.uniforms.opacity.value;\n\t\t\t},\n\t\t\tset: function ( value ) {\n\t\t\t\tthis.uniforms.opacity.value = value;\n\t\t\t}\n\t\t}\n\t} );\n\n}\n\nShadowMaterial.prototype = Object.create( ShaderMaterial.prototype );\nShadowMaterial.prototype.constructor = ShadowMaterial;\n\nShadowMaterial.prototype.isShadowMaterial = true;\n\n\nexport { ShadowMaterial };\n","import { ShaderMaterial } from './ShaderMaterial';\n\n/**\n * @author mrdoob / http://mrdoob.com/\n */\n\nfunction RawShaderMaterial( parameters ) {\n\n\tShaderMaterial.call( this, parameters );\n\n\tthis.type = 'RawShaderMaterial';\n\n}\n\nRawShaderMaterial.prototype = Object.create( ShaderMaterial.prototype );\nRawShaderMaterial.prototype.constructor = RawShaderMaterial;\n\nRawShaderMaterial.prototype.isRawShaderMaterial = true;\n\n\nexport { RawShaderMaterial };\n","import { _Math } from '../math/Math';\n\n/**\n * @author mrdoob / http://mrdoob.com/\n */\n\nfunction MultiMaterial( materials ) {\n\n\tthis.uuid = _Math.generateUUID();\n\n\tthis.type = 'MultiMaterial';\n\n\tthis.materials = materials instanceof Array ? materials : [];\n\n\tthis.visible = true;\n\n}\n\nMultiMaterial.prototype = {\n\n\tconstructor: MultiMaterial,\n\n\tisMultiMaterial: true,\n\n\ttoJSON: function ( meta ) {\n\n\t\tvar output = {\n\t\t\tmetadata: {\n\t\t\t\tversion: 4.2,\n\t\t\t\ttype: 'material',\n\t\t\t\tgenerator: 'MaterialExporter'\n\t\t\t},\n\t\t\tuuid: this.uuid,\n\t\t\ttype: this.type,\n\t\t\tmaterials: []\n\t\t};\n\n\t\tvar materials = this.materials;\n\n\t\tfor ( var i = 0, l = materials.length; i < l; i ++ ) {\n\n\t\t\tvar material = materials[ i ].toJSON( meta );\n\t\t\tdelete material.metadata;\n\n\t\t\toutput.materials.push( material );\n\n\t\t}\n\n\t\toutput.visible = this.visible;\n\n\t\treturn output;\n\n\t},\n\n\tclone: function () {\n\n\t\tvar material = new this.constructor();\n\n\t\tfor ( var i = 0; i < this.materials.length; i ++ ) {\n\n\t\t\tmaterial.materials.push( this.materials[ i ].clone() );\n\n\t\t}\n\n\t\tmaterial.visible = this.visible;\n\n\t\treturn material;\n\n\t}\n\n};\n\n\nexport { MultiMaterial };\n","import { Material } from './Material';\nimport { Vector2 } from '../math/Vector2';\nimport { Color } from '../math/Color';\n\n/**\n * @author WestLangley / http://github.com/WestLangley\n *\n * parameters = {\n * color: ,\n * roughness: ,\n * metalness: ,\n * opacity: ,\n *\n * map: new THREE.Texture( ),\n *\n * lightMap: new THREE.Texture( ),\n * lightMapIntensity: \n *\n * aoMap: new THREE.Texture( ),\n * aoMapIntensity: \n *\n * emissive: ,\n * emissiveIntensity: \n * emissiveMap: new THREE.Texture( ),\n *\n * bumpMap: new THREE.Texture( ),\n * bumpScale: ,\n *\n * normalMap: new THREE.Texture( ),\n * normalScale: ,\n *\n * displacementMap: new THREE.Texture( ),\n * displacementScale: ,\n * displacementBias: ,\n *\n * roughnessMap: new THREE.Texture( ),\n *\n * metalnessMap: new THREE.Texture( ),\n *\n * alphaMap: new THREE.Texture( ),\n *\n * envMap: new THREE.CubeTexture( [posx, negx, posy, negy, posz, negz] ),\n * envMapIntensity: \n *\n * refractionRatio: ,\n *\n * wireframe: ,\n * wireframeLinewidth: ,\n *\n * skinning: ,\n * morphTargets: ,\n * morphNormals: \n * }\n */\n\nfunction MeshStandardMaterial( parameters ) {\n\n\tMaterial.call( this );\n\n\tthis.defines = { 'STANDARD': '' };\n\n\tthis.type = 'MeshStandardMaterial';\n\n\tthis.color = new Color( 0xffffff ); // diffuse\n\tthis.roughness = 0.5;\n\tthis.metalness = 0.5;\n\n\tthis.map = null;\n\n\tthis.lightMap = null;\n\tthis.lightMapIntensity = 1.0;\n\n\tthis.aoMap = null;\n\tthis.aoMapIntensity = 1.0;\n\n\tthis.emissive = new Color( 0x000000 );\n\tthis.emissiveIntensity = 1.0;\n\tthis.emissiveMap = null;\n\n\tthis.bumpMap = null;\n\tthis.bumpScale = 1;\n\n\tthis.normalMap = null;\n\tthis.normalScale = new Vector2( 1, 1 );\n\n\tthis.displacementMap = null;\n\tthis.displacementScale = 1;\n\tthis.displacementBias = 0;\n\n\tthis.roughnessMap = null;\n\n\tthis.metalnessMap = null;\n\n\tthis.alphaMap = null;\n\n\tthis.envMap = null;\n\tthis.envMapIntensity = 1.0;\n\n\tthis.refractionRatio = 0.98;\n\n\tthis.wireframe = false;\n\tthis.wireframeLinewidth = 1;\n\tthis.wireframeLinecap = 'round';\n\tthis.wireframeLinejoin = 'round';\n\n\tthis.skinning = false;\n\tthis.morphTargets = false;\n\tthis.morphNormals = false;\n\n\tthis.setValues( parameters );\n\n}\n\nMeshStandardMaterial.prototype = Object.create( Material.prototype );\nMeshStandardMaterial.prototype.constructor = MeshStandardMaterial;\n\nMeshStandardMaterial.prototype.isMeshStandardMaterial = true;\n\nMeshStandardMaterial.prototype.copy = function ( source ) {\n\n\tMaterial.prototype.copy.call( this, source );\n\n\tthis.defines = { 'STANDARD': '' };\n\n\tthis.color.copy( source.color );\n\tthis.roughness = source.roughness;\n\tthis.metalness = source.metalness;\n\n\tthis.map = source.map;\n\n\tthis.lightMap = source.lightMap;\n\tthis.lightMapIntensity = source.lightMapIntensity;\n\n\tthis.aoMap = source.aoMap;\n\tthis.aoMapIntensity = source.aoMapIntensity;\n\n\tthis.emissive.copy( source.emissive );\n\tthis.emissiveMap = source.emissiveMap;\n\tthis.emissiveIntensity = source.emissiveIntensity;\n\n\tthis.bumpMap = source.bumpMap;\n\tthis.bumpScale = source.bumpScale;\n\n\tthis.normalMap = source.normalMap;\n\tthis.normalScale.copy( source.normalScale );\n\n\tthis.displacementMap = source.displacementMap;\n\tthis.displacementScale = source.displacementScale;\n\tthis.displacementBias = source.displacementBias;\n\n\tthis.roughnessMap = source.roughnessMap;\n\n\tthis.metalnessMap = source.metalnessMap;\n\n\tthis.alphaMap = source.alphaMap;\n\n\tthis.envMap = source.envMap;\n\tthis.envMapIntensity = source.envMapIntensity;\n\n\tthis.refractionRatio = source.refractionRatio;\n\n\tthis.wireframe = source.wireframe;\n\tthis.wireframeLinewidth = source.wireframeLinewidth;\n\tthis.wireframeLinecap = source.wireframeLinecap;\n\tthis.wireframeLinejoin = source.wireframeLinejoin;\n\n\tthis.skinning = source.skinning;\n\tthis.morphTargets = source.morphTargets;\n\tthis.morphNormals = source.morphNormals;\n\n\treturn this;\n\n};\n\n\nexport { MeshStandardMaterial };\n","import { MeshStandardMaterial } from './MeshStandardMaterial';\n\n/**\n * @author WestLangley / http://github.com/WestLangley\n *\n * parameters = {\n * reflectivity: \n * }\n */\n\nfunction MeshPhysicalMaterial( parameters ) {\n\n\tMeshStandardMaterial.call( this );\n\n\tthis.defines = { 'PHYSICAL': '' };\n\n\tthis.type = 'MeshPhysicalMaterial';\n\n\tthis.reflectivity = 0.5; // maps to F0 = 0.04\n\n\tthis.clearCoat = 0.0;\n\tthis.clearCoatRoughness = 0.0;\n\n\tthis.setValues( parameters );\n\n}\n\nMeshPhysicalMaterial.prototype = Object.create( MeshStandardMaterial.prototype );\nMeshPhysicalMaterial.prototype.constructor = MeshPhysicalMaterial;\n\nMeshPhysicalMaterial.prototype.isMeshPhysicalMaterial = true;\n\nMeshPhysicalMaterial.prototype.copy = function ( source ) {\n\n\tMeshStandardMaterial.prototype.copy.call( this, source );\n\n\tthis.defines = { 'PHYSICAL': '' };\n\n\tthis.reflectivity = source.reflectivity;\n\n\tthis.clearCoat = source.clearCoat;\n\tthis.clearCoatRoughness = source.clearCoatRoughness;\n\n\treturn this;\n\n};\n\n\nexport { MeshPhysicalMaterial };\n","import { Material } from './Material';\nimport { MultiplyOperation } from '../constants';\nimport { Vector2 } from '../math/Vector2';\nimport { Color } from '../math/Color';\n\n/**\n * @author mrdoob / http://mrdoob.com/\n * @author alteredq / http://alteredqualia.com/\n *\n * parameters = {\n * color: ,\n * specular: ,\n * shininess: ,\n * opacity: ,\n *\n * map: new THREE.Texture( ),\n *\n * lightMap: new THREE.Texture( ),\n * lightMapIntensity: \n *\n * aoMap: new THREE.Texture( ),\n * aoMapIntensity: \n *\n * emissive: ,\n * emissiveIntensity: \n * emissiveMap: new THREE.Texture( ),\n *\n * bumpMap: new THREE.Texture( ),\n * bumpScale: ,\n *\n * normalMap: new THREE.Texture( ),\n * normalScale: ,\n *\n * displacementMap: new THREE.Texture( ),\n * displacementScale: ,\n * displacementBias: ,\n *\n * specularMap: new THREE.Texture( ),\n *\n * alphaMap: new THREE.Texture( ),\n *\n * envMap: new THREE.TextureCube( [posx, negx, posy, negy, posz, negz] ),\n * combine: THREE.Multiply,\n * reflectivity: ,\n * refractionRatio: ,\n *\n * wireframe: ,\n * wireframeLinewidth: ,\n *\n * skinning: ,\n * morphTargets: ,\n * morphNormals: \n * }\n */\n\nfunction MeshPhongMaterial( parameters ) {\n\n\tMaterial.call( this );\n\n\tthis.type = 'MeshPhongMaterial';\n\n\tthis.color = new Color( 0xffffff ); // diffuse\n\tthis.specular = new Color( 0x111111 );\n\tthis.shininess = 30;\n\n\tthis.map = null;\n\n\tthis.lightMap = null;\n\tthis.lightMapIntensity = 1.0;\n\n\tthis.aoMap = null;\n\tthis.aoMapIntensity = 1.0;\n\n\tthis.emissive = new Color( 0x000000 );\n\tthis.emissiveIntensity = 1.0;\n\tthis.emissiveMap = null;\n\n\tthis.bumpMap = null;\n\tthis.bumpScale = 1;\n\n\tthis.normalMap = null;\n\tthis.normalScale = new Vector2( 1, 1 );\n\n\tthis.displacementMap = null;\n\tthis.displacementScale = 1;\n\tthis.displacementBias = 0;\n\n\tthis.specularMap = null;\n\n\tthis.alphaMap = null;\n\n\tthis.envMap = null;\n\tthis.combine = MultiplyOperation;\n\tthis.reflectivity = 1;\n\tthis.refractionRatio = 0.98;\n\n\tthis.wireframe = false;\n\tthis.wireframeLinewidth = 1;\n\tthis.wireframeLinecap = 'round';\n\tthis.wireframeLinejoin = 'round';\n\n\tthis.skinning = false;\n\tthis.morphTargets = false;\n\tthis.morphNormals = false;\n\n\tthis.setValues( parameters );\n\n}\n\nMeshPhongMaterial.prototype = Object.create( Material.prototype );\nMeshPhongMaterial.prototype.constructor = MeshPhongMaterial;\n\nMeshPhongMaterial.prototype.isMeshPhongMaterial = true;\n\nMeshPhongMaterial.prototype.copy = function ( source ) {\n\n\tMaterial.prototype.copy.call( this, source );\n\n\tthis.color.copy( source.color );\n\tthis.specular.copy( source.specular );\n\tthis.shininess = source.shininess;\n\n\tthis.map = source.map;\n\n\tthis.lightMap = source.lightMap;\n\tthis.lightMapIntensity = source.lightMapIntensity;\n\n\tthis.aoMap = source.aoMap;\n\tthis.aoMapIntensity = source.aoMapIntensity;\n\n\tthis.emissive.copy( source.emissive );\n\tthis.emissiveMap = source.emissiveMap;\n\tthis.emissiveIntensity = source.emissiveIntensity;\n\n\tthis.bumpMap = source.bumpMap;\n\tthis.bumpScale = source.bumpScale;\n\n\tthis.normalMap = source.normalMap;\n\tthis.normalScale.copy( source.normalScale );\n\n\tthis.displacementMap = source.displacementMap;\n\tthis.displacementScale = source.displacementScale;\n\tthis.displacementBias = source.displacementBias;\n\n\tthis.specularMap = source.specularMap;\n\n\tthis.alphaMap = source.alphaMap;\n\n\tthis.envMap = source.envMap;\n\tthis.combine = source.combine;\n\tthis.reflectivity = source.reflectivity;\n\tthis.refractionRatio = source.refractionRatio;\n\n\tthis.wireframe = source.wireframe;\n\tthis.wireframeLinewidth = source.wireframeLinewidth;\n\tthis.wireframeLinecap = source.wireframeLinecap;\n\tthis.wireframeLinejoin = source.wireframeLinejoin;\n\n\tthis.skinning = source.skinning;\n\tthis.morphTargets = source.morphTargets;\n\tthis.morphNormals = source.morphNormals;\n\n\treturn this;\n\n};\n\n\nexport { MeshPhongMaterial };\n","import { Material } from './Material';\n\n/**\n * @author mrdoob / http://mrdoob.com/\n *\n * parameters = {\n * opacity: ,\n *\n * wireframe: ,\n * wireframeLinewidth: \n * }\n */\n\nfunction MeshNormalMaterial( parameters ) {\n\n\tMaterial.call( this, parameters );\n\n\tthis.type = 'MeshNormalMaterial';\n\n\tthis.wireframe = false;\n\tthis.wireframeLinewidth = 1;\n\n\tthis.fog = false;\n\tthis.lights = false;\n\tthis.morphTargets = false;\n\n\tthis.setValues( parameters );\n\n}\n\nMeshNormalMaterial.prototype = Object.create( Material.prototype );\nMeshNormalMaterial.prototype.constructor = MeshNormalMaterial;\n\nMeshNormalMaterial.prototype.isMeshNormalMaterial = true;\n\nMeshNormalMaterial.prototype.copy = function ( source ) {\n\n\tMaterial.prototype.copy.call( this, source );\n\n\tthis.wireframe = source.wireframe;\n\tthis.wireframeLinewidth = source.wireframeLinewidth;\n\n\treturn this;\n\n};\n\n\nexport { MeshNormalMaterial };\n","import { Material } from './Material';\nimport { MultiplyOperation } from '../constants';\nimport { Color } from '../math/Color';\n\n/**\n * @author mrdoob / http://mrdoob.com/\n * @author alteredq / http://alteredqualia.com/\n *\n * parameters = {\n * color: ,\n * opacity: ,\n *\n * map: new THREE.Texture( ),\n *\n * lightMap: new THREE.Texture( ),\n * lightMapIntensity: \n *\n * aoMap: new THREE.Texture( ),\n * aoMapIntensity: \n *\n * emissive: ,\n * emissiveIntensity: \n * emissiveMap: new THREE.Texture( ),\n *\n * specularMap: new THREE.Texture( ),\n *\n * alphaMap: new THREE.Texture( ),\n *\n * envMap: new THREE.TextureCube( [posx, negx, posy, negy, posz, negz] ),\n * combine: THREE.Multiply,\n * reflectivity: ,\n * refractionRatio: ,\n *\n * wireframe: ,\n * wireframeLinewidth: ,\n *\n * skinning: ,\n * morphTargets: ,\n * morphNormals: \n * }\n */\n\nfunction MeshLambertMaterial( parameters ) {\n\n\tMaterial.call( this );\n\n\tthis.type = 'MeshLambertMaterial';\n\n\tthis.color = new Color( 0xffffff ); // diffuse\n\n\tthis.map = null;\n\n\tthis.lightMap = null;\n\tthis.lightMapIntensity = 1.0;\n\n\tthis.aoMap = null;\n\tthis.aoMapIntensity = 1.0;\n\n\tthis.emissive = new Color( 0x000000 );\n\tthis.emissiveIntensity = 1.0;\n\tthis.emissiveMap = null;\n\n\tthis.specularMap = null;\n\n\tthis.alphaMap = null;\n\n\tthis.envMap = null;\n\tthis.combine = MultiplyOperation;\n\tthis.reflectivity = 1;\n\tthis.refractionRatio = 0.98;\n\n\tthis.wireframe = false;\n\tthis.wireframeLinewidth = 1;\n\tthis.wireframeLinecap = 'round';\n\tthis.wireframeLinejoin = 'round';\n\n\tthis.skinning = false;\n\tthis.morphTargets = false;\n\tthis.morphNormals = false;\n\n\tthis.setValues( parameters );\n\n}\n\nMeshLambertMaterial.prototype = Object.create( Material.prototype );\nMeshLambertMaterial.prototype.constructor = MeshLambertMaterial;\n\nMeshLambertMaterial.prototype.isMeshLambertMaterial = true;\n\nMeshLambertMaterial.prototype.copy = function ( source ) {\n\n\tMaterial.prototype.copy.call( this, source );\n\n\tthis.color.copy( source.color );\n\n\tthis.map = source.map;\n\n\tthis.lightMap = source.lightMap;\n\tthis.lightMapIntensity = source.lightMapIntensity;\n\n\tthis.aoMap = source.aoMap;\n\tthis.aoMapIntensity = source.aoMapIntensity;\n\n\tthis.emissive.copy( source.emissive );\n\tthis.emissiveMap = source.emissiveMap;\n\tthis.emissiveIntensity = source.emissiveIntensity;\n\n\tthis.specularMap = source.specularMap;\n\n\tthis.alphaMap = source.alphaMap;\n\n\tthis.envMap = source.envMap;\n\tthis.combine = source.combine;\n\tthis.reflectivity = source.reflectivity;\n\tthis.refractionRatio = source.refractionRatio;\n\n\tthis.wireframe = source.wireframe;\n\tthis.wireframeLinewidth = source.wireframeLinewidth;\n\tthis.wireframeLinecap = source.wireframeLinecap;\n\tthis.wireframeLinejoin = source.wireframeLinejoin;\n\n\tthis.skinning = source.skinning;\n\tthis.morphTargets = source.morphTargets;\n\tthis.morphNormals = source.morphNormals;\n\n\treturn this;\n\n};\n\n\nexport { MeshLambertMaterial };\n","import { Material } from './Material';\nimport { Color } from '../math/Color';\n\n/**\n * @author alteredq / http://alteredqualia.com/\n *\n * parameters = {\n * color: ,\n * opacity: ,\n *\n * linewidth: ,\n *\n * scale: ,\n * dashSize: ,\n * gapSize: \n * }\n */\n\nfunction LineDashedMaterial( parameters ) {\n\n\tMaterial.call( this );\n\n\tthis.type = 'LineDashedMaterial';\n\n\tthis.color = new Color( 0xffffff );\n\n\tthis.linewidth = 1;\n\n\tthis.scale = 1;\n\tthis.dashSize = 3;\n\tthis.gapSize = 1;\n\n\tthis.lights = false;\n\n\tthis.setValues( parameters );\n\n}\n\nLineDashedMaterial.prototype = Object.create( Material.prototype );\nLineDashedMaterial.prototype.constructor = LineDashedMaterial;\n\nLineDashedMaterial.prototype.isLineDashedMaterial = true;\n\nLineDashedMaterial.prototype.copy = function ( source ) {\n\n\tMaterial.prototype.copy.call( this, source );\n\n\tthis.color.copy( source.color );\n\n\tthis.linewidth = source.linewidth;\n\n\tthis.scale = source.scale;\n\tthis.dashSize = source.dashSize;\n\tthis.gapSize = source.gapSize;\n\n\treturn this;\n\n};\n\n\nexport { LineDashedMaterial };\n","/**\n * @author mrdoob / http://mrdoob.com/\n */\n\nvar Cache = {\n\n\tenabled: false,\n\n\tfiles: {},\n\n\tadd: function ( key, file ) {\n\n\t\tif ( this.enabled === false ) return;\n\n\t\t// console.log( 'THREE.Cache', 'Adding key:', key );\n\n\t\tthis.files[ key ] = file;\n\n\t},\n\n\tget: function ( key ) {\n\n\t\tif ( this.enabled === false ) return;\n\n\t\t// console.log( 'THREE.Cache', 'Checking key:', key );\n\n\t\treturn this.files[ key ];\n\n\t},\n\n\tremove: function ( key ) {\n\n\t\tdelete this.files[ key ];\n\n\t},\n\n\tclear: function () {\n\n\t\tthis.files = {};\n\n\t}\n\n};\n\n\nexport { Cache };\n","/**\n * @author mrdoob / http://mrdoob.com/\n */\n\nfunction LoadingManager( onLoad, onProgress, onError ) {\n\n\tvar scope = this;\n\n\tvar isLoading = false, itemsLoaded = 0, itemsTotal = 0;\n\n\tthis.onStart = undefined;\n\tthis.onLoad = onLoad;\n\tthis.onProgress = onProgress;\n\tthis.onError = onError;\n\n\tthis.itemStart = function ( url ) {\n\n\t\titemsTotal ++;\n\n\t\tif ( isLoading === false ) {\n\n\t\t\tif ( scope.onStart !== undefined ) {\n\n\t\t\t\tscope.onStart( url, itemsLoaded, itemsTotal );\n\n\t\t\t}\n\n\t\t}\n\n\t\tisLoading = true;\n\n\t};\n\n\tthis.itemEnd = function ( url ) {\n\n\t\titemsLoaded ++;\n\n\t\tif ( scope.onProgress !== undefined ) {\n\n\t\t\tscope.onProgress( url, itemsLoaded, itemsTotal );\n\n\t\t}\n\n\t\tif ( itemsLoaded === itemsTotal ) {\n\n\t\t\tisLoading = false;\n\n\t\t\tif ( scope.onLoad !== undefined ) {\n\n\t\t\t\tscope.onLoad();\n\n\t\t\t}\n\n\t\t}\n\n\t};\n\n\tthis.itemError = function ( url ) {\n\n\t\tif ( scope.onError !== undefined ) {\n\n\t\t\tscope.onError( url );\n\n\t\t}\n\n\t};\n\n}\n\nvar DefaultLoadingManager = new LoadingManager();\n\n\nexport { DefaultLoadingManager, LoadingManager };\n","/**\n * @author mrdoob / http://mrdoob.com/\n */\n\nimport { Cache } from './Cache';\nimport { DefaultLoadingManager } from './LoadingManager';\n\nfunction FileLoader( manager ) {\n\n\tthis.manager = ( manager !== undefined ) ? manager : DefaultLoadingManager;\n\n}\n\nObject.assign( FileLoader.prototype, {\n\n\tload: function ( url, onLoad, onProgress, onError ) {\n\n\t\tif ( url === undefined ) url = '';\n\n\t\tif ( this.path !== undefined ) url = this.path + url;\n\n\t\tvar scope = this;\n\n\t\tvar cached = Cache.get( url );\n\n\t\tif ( cached !== undefined ) {\n\n\t\t\tscope.manager.itemStart( url );\n\n\t\t\tsetTimeout( function () {\n\n\t\t\t\tif ( onLoad ) onLoad( cached );\n\n\t\t\t\tscope.manager.itemEnd( url );\n\n\t\t\t}, 0 );\n\n\t\t\treturn cached;\n\n\t\t}\n\n\t\t// Check for data: URI\n\t\tvar dataUriRegex = /^data:(.*?)(;base64)?,(.*)$/;\n\t\tvar dataUriRegexResult = url.match( dataUriRegex );\n\n\t\t// Safari can not handle Data URIs through XMLHttpRequest so process manually\n\t\tif ( dataUriRegexResult ) {\n\n\t\t\tvar mimeType = dataUriRegexResult[1];\n\t\t\tvar isBase64 = !!dataUriRegexResult[2];\n\t\t\tvar data = dataUriRegexResult[3];\n\n\t\t\tdata = window.decodeURIComponent(data);\n\n\t\t\tif( isBase64 ) {\n\t\t\t\tdata = window.atob(data);\n\t\t\t}\n\n\t\t\ttry {\n\n\t\t\t\tvar response;\n\t\t\t\tvar responseType = ( this.responseType || '' ).toLowerCase();\n\n\t\t\t\tswitch ( responseType ) {\n\n\t\t\t\t\tcase 'arraybuffer':\n\t\t\t\t\tcase 'blob':\n\n\t\t\t\t\t \tresponse = new ArrayBuffer( data.length );\n\t\t\t\t\t\tvar view = new Uint8Array( response );\n\t\t\t\t\t\tfor ( var i = 0; i < data.length; i ++ ) {\n\n\t\t\t\t\t\t\t\tview[ i ] = data.charCodeAt( i );\n\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\tif ( responseType === 'blob' ) {\n\n\t\t\t\t\t\t\tresponse = new Blob( [ response ], { \"type\" : mimeType } );\n\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\tbreak;\n\n\t\t\t\t\tcase 'document':\n\n\t\t\t\t\t\tvar parser = new DOMParser();\n\t\t\t\t\t\tresponse = parser.parseFromString( data, mimeType );\n\n\t\t\t\t\t\tbreak;\n\n\t\t\t\t\tcase 'json':\n\n\t\t\t\t\t\tresponse = JSON.parse( data );\n\n\t\t\t\t\t\tbreak;\n\n\t\t\t\t\tdefault: // 'text' or other\n\n\t\t\t\t\t\tresponse = data;\n\n\t\t\t\t\t\tbreak;\n\n\t\t\t\t}\n\n\t\t\t\t// Wait for next browser tick\n\t\t\t\twindow.setTimeout( function() {\n\n\t\t\t\t\tif ( onLoad ) onLoad( response );\n\n\t\t\t\t\tscope.manager.itemEnd( url );\n\n\t\t\t\t}, 0);\n\n\t\t\t} catch ( error ) {\n\n\t\t\t\t// Wait for next browser tick\n\t\t\t\twindow.setTimeout( function() {\n\n\t\t\t\t\tif ( onError ) onError( error );\n\n\t\t\t\t\tscope.manager.itemError( url );\n\n\t\t\t\t}, 0);\n\n\t\t\t}\n\n\t\t} else {\n\n\t\t\tvar request = new XMLHttpRequest();\n\t\t\trequest.open( 'GET', url, true );\n\n\t\t\trequest.addEventListener( 'load', function ( event ) {\n\n\t\t\t\tvar response = event.target.response;\n\n\t\t\t\tCache.add( url, response );\n\n\t\t\t\tif ( this.status === 200 ) {\n\n\t\t\t\t\tif ( onLoad ) onLoad( response );\n\n\t\t\t\t\tscope.manager.itemEnd( url );\n\n\t\t\t\t} else if ( this.status === 0 ) {\n\n\t\t\t\t\t// Some browsers return HTTP Status 0 when using non-http protocol\n\t\t\t\t\t// e.g. 'file://' or 'data://'. Handle as success.\n\n\t\t\t\t\tconsole.warn( 'THREE.FileLoader: HTTP Status 0 received.' );\n\n\t\t\t\t\tif ( onLoad ) onLoad( response );\n\n\t\t\t\t\tscope.manager.itemEnd( url );\n\n\t\t\t\t} else {\n\n\t\t\t\t\tif ( onError ) onError( event );\n\n\t\t\t\t\tscope.manager.itemError( url );\n\n\t\t\t\t}\n\n\t\t\t}, false );\n\n\t\t\tif ( onProgress !== undefined ) {\n\n\t\t\t\trequest.addEventListener( 'progress', function ( event ) {\n\n\t\t\t\t\tonProgress( event );\n\n\t\t\t\t}, false );\n\n\t\t\t}\n\n\t\t\trequest.addEventListener( 'error', function ( event ) {\n\n\t\t\t\tif ( onError ) onError( event );\n\n\t\t\t\tscope.manager.itemError( url );\n\n\t\t\t}, false );\n\n\t\t\tif ( this.responseType !== undefined ) request.responseType = this.responseType;\n\t\t\tif ( this.withCredentials !== undefined ) request.withCredentials = this.withCredentials;\n\n\t\t\tif ( request.overrideMimeType ) request.overrideMimeType( 'text/plain' );\n\n\t\t\trequest.send( null );\n\n\t\t}\n\n\t\tscope.manager.itemStart( url );\n\n\t\treturn request;\n\n\t},\n\n\tsetPath: function ( value ) {\n\n\t\tthis.path = value;\n\t\treturn this;\n\n\t},\n\n\tsetResponseType: function ( value ) {\n\n\t\tthis.responseType = value;\n\t\treturn this;\n\n\t},\n\n\tsetWithCredentials: function ( value ) {\n\n\t\tthis.withCredentials = value;\n\t\treturn this;\n\n\t}\n\n} );\n\n\nexport { FileLoader };\n","import { LinearFilter } from '../constants';\nimport { FileLoader } from './FileLoader';\nimport { CompressedTexture } from '../textures/CompressedTexture';\nimport { DefaultLoadingManager } from './LoadingManager';\n\n/**\n * @author mrdoob / http://mrdoob.com/\n *\n * Abstract Base class to block based textures loader (dds, pvr, ...)\n */\n\nfunction CompressedTextureLoader( manager ) {\n\n\tthis.manager = ( manager !== undefined ) ? manager : DefaultLoadingManager;\n\n\t// override in sub classes\n\tthis._parser = null;\n\n}\n\nObject.assign( CompressedTextureLoader.prototype, {\n\n\tload: function ( url, onLoad, onProgress, onError ) {\n\n\t\tvar scope = this;\n\n\t\tvar images = [];\n\n\t\tvar texture = new CompressedTexture();\n\t\ttexture.image = images;\n\n\t\tvar loader = new FileLoader( this.manager );\n\t\tloader.setPath( this.path );\n\t\tloader.setResponseType( 'arraybuffer' );\n\n\t\tfunction loadTexture( i ) {\n\n\t\t\tloader.load( url[ i ], function ( buffer ) {\n\n\t\t\t\tvar texDatas = scope._parser( buffer, true );\n\n\t\t\t\timages[ i ] = {\n\t\t\t\t\twidth: texDatas.width,\n\t\t\t\t\theight: texDatas.height,\n\t\t\t\t\tformat: texDatas.format,\n\t\t\t\t\tmipmaps: texDatas.mipmaps\n\t\t\t\t};\n\n\t\t\t\tloaded += 1;\n\n\t\t\t\tif ( loaded === 6 ) {\n\n\t\t\t\t\tif ( texDatas.mipmapCount === 1 )\n\t\t\t\t\t\ttexture.minFilter = LinearFilter;\n\n\t\t\t\t\ttexture.format = texDatas.format;\n\t\t\t\t\ttexture.needsUpdate = true;\n\n\t\t\t\t\tif ( onLoad ) onLoad( texture );\n\n\t\t\t\t}\n\n\t\t\t}, onProgress, onError );\n\n\t\t}\n\n\t\tif ( Array.isArray( url ) ) {\n\n\t\t\tvar loaded = 0;\n\n\t\t\tfor ( var i = 0, il = url.length; i < il; ++ i ) {\n\n\t\t\t\tloadTexture( i );\n\n\t\t\t}\n\n\t\t} else {\n\n\t\t\t// compressed cubemap texture stored in a single DDS file\n\n\t\t\tloader.load( url, function ( buffer ) {\n\n\t\t\t\tvar texDatas = scope._parser( buffer, true );\n\n\t\t\t\tif ( texDatas.isCubemap ) {\n\n\t\t\t\t\tvar faces = texDatas.mipmaps.length / texDatas.mipmapCount;\n\n\t\t\t\t\tfor ( var f = 0; f < faces; f ++ ) {\n\n\t\t\t\t\t\timages[ f ] = { mipmaps : [] };\n\n\t\t\t\t\t\tfor ( var i = 0; i < texDatas.mipmapCount; i ++ ) {\n\n\t\t\t\t\t\t\timages[ f ].mipmaps.push( texDatas.mipmaps[ f * texDatas.mipmapCount + i ] );\n\t\t\t\t\t\t\timages[ f ].format = texDatas.format;\n\t\t\t\t\t\t\timages[ f ].width = texDatas.width;\n\t\t\t\t\t\t\timages[ f ].height = texDatas.height;\n\n\t\t\t\t\t\t}\n\n\t\t\t\t\t}\n\n\t\t\t\t} else {\n\n\t\t\t\t\ttexture.image.width = texDatas.width;\n\t\t\t\t\ttexture.image.height = texDatas.height;\n\t\t\t\t\ttexture.mipmaps = texDatas.mipmaps;\n\n\t\t\t\t}\n\n\t\t\t\tif ( texDatas.mipmapCount === 1 ) {\n\n\t\t\t\t\ttexture.minFilter = LinearFilter;\n\n\t\t\t\t}\n\n\t\t\t\ttexture.format = texDatas.format;\n\t\t\t\ttexture.needsUpdate = true;\n\n\t\t\t\tif ( onLoad ) onLoad( texture );\n\n\t\t\t}, onProgress, onError );\n\n\t\t}\n\n\t\treturn texture;\n\n\t},\n\n\tsetPath: function ( value ) {\n\n\t\tthis.path = value;\n\t\treturn this;\n\n\t}\n\n} );\n\n\nexport { CompressedTextureLoader };\n","import { LinearFilter, LinearMipMapLinearFilter, ClampToEdgeWrapping } from '../constants';\nimport { FileLoader } from './FileLoader';\nimport { DataTexture } from '../textures/DataTexture';\nimport { DefaultLoadingManager } from './LoadingManager';\n\n/**\n * @author Nikos M. / https://github.com/foo123/\n *\n * Abstract Base class to load generic binary textures formats (rgbe, hdr, ...)\n */\n\nvar DataTextureLoader = BinaryTextureLoader;\nfunction BinaryTextureLoader( manager ) {\n\n\tthis.manager = ( manager !== undefined ) ? manager : DefaultLoadingManager;\n\n\t// override in sub classes\n\tthis._parser = null;\n\n}\n\nObject.assign( BinaryTextureLoader.prototype, {\n\n\tload: function ( url, onLoad, onProgress, onError ) {\n\n\t\tvar scope = this;\n\n\t\tvar texture = new DataTexture();\n\n\t\tvar loader = new FileLoader( this.manager );\n\t\tloader.setResponseType( 'arraybuffer' );\n\n\t\tloader.load( url, function ( buffer ) {\n\n\t\t\tvar texData = scope._parser( buffer );\n\n\t\t\tif ( ! texData ) return;\n\n\t\t\tif ( undefined !== texData.image ) {\n\n\t\t\t\ttexture.image = texData.image;\n\n\t\t\t} else if ( undefined !== texData.data ) {\n\n\t\t\t\ttexture.image.width = texData.width;\n\t\t\t\ttexture.image.height = texData.height;\n\t\t\t\ttexture.image.data = texData.data;\n\n\t\t\t}\n\n\t\t\ttexture.wrapS = undefined !== texData.wrapS ? texData.wrapS : ClampToEdgeWrapping;\n\t\t\ttexture.wrapT = undefined !== texData.wrapT ? texData.wrapT : ClampToEdgeWrapping;\n\n\t\t\ttexture.magFilter = undefined !== texData.magFilter ? texData.magFilter : LinearFilter;\n\t\t\ttexture.minFilter = undefined !== texData.minFilter ? texData.minFilter : LinearMipMapLinearFilter;\n\n\t\t\ttexture.anisotropy = undefined !== texData.anisotropy ? texData.anisotropy : 1;\n\n\t\t\tif ( undefined !== texData.format ) {\n\n\t\t\t\ttexture.format = texData.format;\n\n\t\t\t}\n\t\t\tif ( undefined !== texData.type ) {\n\n\t\t\t\ttexture.type = texData.type;\n\n\t\t\t}\n\n\t\t\tif ( undefined !== texData.mipmaps ) {\n\n\t\t\t\ttexture.mipmaps = texData.mipmaps;\n\n\t\t\t}\n\n\t\t\tif ( 1 === texData.mipmapCount ) {\n\n\t\t\t\ttexture.minFilter = LinearFilter;\n\n\t\t\t}\n\n\t\t\ttexture.needsUpdate = true;\n\n\t\t\tif ( onLoad ) onLoad( texture, texData );\n\n\t\t}, onProgress, onError );\n\n\n\t\treturn texture;\n\n\t}\n\n} );\n\n\nexport { BinaryTextureLoader, DataTextureLoader };\n","import { FileLoader } from './FileLoader';\nimport { DefaultLoadingManager } from './LoadingManager';\n\n/**\n * @author mrdoob / http://mrdoob.com/\n */\n\nfunction ImageLoader( manager ) {\n\n\tthis.manager = ( manager !== undefined ) ? manager : DefaultLoadingManager;\n\n}\n\nObject.assign( ImageLoader.prototype, {\n\n\tload: function ( url, onLoad, onProgress, onError ) {\n\n\t\tvar scope = this;\n\n\t\tvar image = document.createElementNS( 'http://www.w3.org/1999/xhtml', 'img' );\n\t\timage.onload = function () {\n\n\t\t\timage.onload = null;\n\n\t\t\tURL.revokeObjectURL( image.src );\n\n\t\t\tif ( onLoad ) onLoad( image );\n\n\t\t\tscope.manager.itemEnd( url );\n\n\t\t};\n\t\timage.onerror = onError;\n\n\t\tif ( url.indexOf( 'data:' ) === 0 ) {\n\n\t\t\timage.src = url;\n\n\t\t} else {\n\n\t\t\tvar loader = new FileLoader();\n\t\t\tloader.setPath( this.path );\n\t\t\tloader.setResponseType( 'blob' );\n\t\t\tloader.setWithCredentials( this.withCredentials );\n\t\t\tloader.load( url, function ( blob ) {\n\n\t\t\t\timage.src = URL.createObjectURL( blob );\n\n\t\t\t}, onProgress, onError );\n\n\t\t}\n\n\t\tscope.manager.itemStart( url );\n\n\t\treturn image;\n\n\t},\n\n\tsetCrossOrigin: function ( value ) {\n\n\t\tthis.crossOrigin = value;\n\t\treturn this;\n\n\t},\n\n\tsetWithCredentials: function ( value ) {\n\n\t\tthis.withCredentials = value;\n\t\treturn this;\n\n\t},\n\n\tsetPath: function ( value ) {\n\n\t\tthis.path = value;\n\t\treturn this;\n\n\t}\n\n} );\n\n\nexport { ImageLoader };\n","import { ImageLoader } from './ImageLoader';\nimport { CubeTexture } from '../textures/CubeTexture';\nimport { DefaultLoadingManager } from './LoadingManager';\n\n/**\n * @author mrdoob / http://mrdoob.com/\n */\n\nfunction CubeTextureLoader( manager ) {\n\n\tthis.manager = ( manager !== undefined ) ? manager : DefaultLoadingManager;\n\n}\n\nObject.assign( CubeTextureLoader.prototype, {\n\n\tload: function ( urls, onLoad, onProgress, onError ) {\n\n\t\tvar texture = new CubeTexture();\n\n\t\tvar loader = new ImageLoader( this.manager );\n\t\tloader.setCrossOrigin( this.crossOrigin );\n\t\tloader.setPath( this.path );\n\n\t\tvar loaded = 0;\n\n\t\tfunction loadTexture( i ) {\n\n\t\t\tloader.load( urls[ i ], function ( image ) {\n\n\t\t\t\ttexture.images[ i ] = image;\n\n\t\t\t\tloaded ++;\n\n\t\t\t\tif ( loaded === 6 ) {\n\n\t\t\t\t\ttexture.needsUpdate = true;\n\n\t\t\t\t\tif ( onLoad ) onLoad( texture );\n\n\t\t\t\t}\n\n\t\t\t}, undefined, onError );\n\n\t\t}\n\n\t\tfor ( var i = 0; i < urls.length; ++ i ) {\n\n\t\t\tloadTexture( i );\n\n\t\t}\n\n\t\treturn texture;\n\n\t},\n\n\tsetCrossOrigin: function ( value ) {\n\n\t\tthis.crossOrigin = value;\n\t\treturn this;\n\n\t},\n\n\tsetPath: function ( value ) {\n\n\t\tthis.path = value;\n\t\treturn this;\n\n\t}\n\n} );\n\n\nexport { CubeTextureLoader };\n","import { RGBAFormat, RGBFormat } from '../constants';\nimport { ImageLoader } from './ImageLoader';\nimport { Texture } from '../textures/Texture';\nimport { DefaultLoadingManager } from './LoadingManager';\n\n/**\n * @author mrdoob / http://mrdoob.com/\n */\n\nfunction TextureLoader( manager ) {\n\n\tthis.manager = ( manager !== undefined ) ? manager : DefaultLoadingManager;\n\n}\n\nObject.assign( TextureLoader.prototype, {\n\n\tload: function ( url, onLoad, onProgress, onError ) {\n\n\t\tvar texture = new Texture();\n\n\t\tvar loader = new ImageLoader( this.manager );\n\t\tloader.setCrossOrigin( this.crossOrigin );\n\t\tloader.setWithCredentials( this.withCredentials );\n\t\tloader.setPath( this.path );\n\t\tloader.load( url, function ( image ) {\n\n\t\t\t// JPEGs can't have an alpha channel, so memory can be saved by storing them as RGB.\n\t\t\tvar isJPEG = url.search( /\\.(jpg|jpeg)$/ ) > 0 || url.search( /^data\\:image\\/jpeg/ ) === 0;\n\n\t\t\ttexture.format = isJPEG ? RGBFormat : RGBAFormat;\n\t\t\ttexture.image = image;\n\t\t\ttexture.needsUpdate = true;\n\n\t\t\tif ( onLoad !== undefined ) {\n\n\t\t\t\tonLoad( texture );\n\n\t\t\t}\n\n\t\t}, onProgress, onError );\n\n\t\treturn texture;\n\n\t},\n\n\tsetCrossOrigin: function ( value ) {\n\n\t\tthis.crossOrigin = value;\n\t\treturn this;\n\n\t},\n\n\tsetWithCredentials: function ( value ) {\n\n\t\tthis.withCredentials = value;\n\t\treturn this;\n\n\t},\n\n\tsetPath: function ( value ) {\n\n\t\tthis.path = value;\n\t\treturn this;\n\n\t}\n\n\n\n} );\n\n\nexport { TextureLoader };\n","import { Object3D } from '../core/Object3D';\nimport { Color } from '../math/Color';\n\n/**\n * @author mrdoob / http://mrdoob.com/\n * @author alteredq / http://alteredqualia.com/\n */\n\nfunction Light( color, intensity ) {\n\n\tObject3D.call( this );\n\n\tthis.type = 'Light';\n\n\tthis.color = new Color( color );\n\tthis.intensity = intensity !== undefined ? intensity : 1;\n\n\tthis.receiveShadow = undefined;\n\n}\n\nLight.prototype = Object.assign( Object.create( Object3D.prototype ), {\n\n\tconstructor: Light,\n\n\tisLight: true,\n\n\tcopy: function ( source ) {\n\n\t\tObject3D.prototype.copy.call( this, source );\n\n\t\tthis.color.copy( source.color );\n\t\tthis.intensity = source.intensity;\n\n\t\treturn this;\n\n\t},\n\n\ttoJSON: function ( meta ) {\n\n\t\tvar data = Object3D.prototype.toJSON.call( this, meta );\n\n\t\tdata.object.color = this.color.getHex();\n\t\tdata.object.intensity = this.intensity;\n\n\t\tif ( this.groundColor !== undefined ) data.object.groundColor = this.groundColor.getHex();\n\n\t\tif ( this.distance !== undefined ) data.object.distance = this.distance;\n\t\tif ( this.angle !== undefined ) data.object.angle = this.angle;\n\t\tif ( this.decay !== undefined ) data.object.decay = this.decay;\n\t\tif ( this.penumbra !== undefined ) data.object.penumbra = this.penumbra;\n\n\t\tif ( this.shadow !== undefined ) data.object.shadow = this.shadow.toJSON();\n\n\t\treturn data;\n\n\t}\n\n} );\n\n\nexport { Light };\n","import { Light } from './Light';\nimport { Color } from '../math/Color';\nimport { Object3D } from '../core/Object3D';\n\n/**\n * @author alteredq / http://alteredqualia.com/\n */\n\nfunction HemisphereLight( skyColor, groundColor, intensity ) {\n\n\tLight.call( this, skyColor, intensity );\n\n\tthis.type = 'HemisphereLight';\n\n\tthis.castShadow = undefined;\n\n\tthis.position.copy( Object3D.DefaultUp );\n\tthis.updateMatrix();\n\n\tthis.groundColor = new Color( groundColor );\n\n}\n\nHemisphereLight.prototype = Object.assign( Object.create( Light.prototype ), {\n\n\tconstructor: HemisphereLight,\n\n\tisHemisphereLight: true,\n\n\tcopy: function ( source ) {\n\n\t\tLight.prototype.copy.call( this, source );\n\n\t\tthis.groundColor.copy( source.groundColor );\n\n\t\treturn this;\n\n\t}\n\n} );\n\n\nexport { HemisphereLight };\n","import { Matrix4 } from '../math/Matrix4';\nimport { Vector2 } from '../math/Vector2';\n\n/**\n * @author mrdoob / http://mrdoob.com/\n */\n\nfunction LightShadow( camera ) {\n\n\tthis.camera = camera;\n\n\tthis.bias = 0;\n\tthis.radius = 1;\n\n\tthis.mapSize = new Vector2( 512, 512 );\n\n\tthis.map = null;\n\tthis.matrix = new Matrix4();\n\n}\n\nObject.assign( LightShadow.prototype, {\n\n\tcopy: function ( source ) {\n\n\t\tthis.camera = source.camera.clone();\n\n\t\tthis.bias = source.bias;\n\t\tthis.radius = source.radius;\n\n\t\tthis.mapSize.copy( source.mapSize );\n\n\t\treturn this;\n\n\t},\n\n\tclone: function () {\n\n\t\treturn new this.constructor().copy( this );\n\n\t},\n\n\ttoJSON: function () {\n\n\t\tvar object = {};\n\n\t\tif ( this.bias !== 0 ) object.bias = this.bias;\n\t\tif ( this.radius !== 1 ) object.radius = this.radius;\n\t\tif ( this.mapSize.x !== 512 || this.mapSize.y !== 512 ) object.mapSize = this.mapSize.toArray();\n\n\t\tobject.camera = this.camera.toJSON( false ).object;\n\t\tdelete object.camera.matrix;\n\n\t\treturn object;\n\n\t}\n\n} );\n\n\nexport { LightShadow };\n","import { LightShadow } from './LightShadow';\nimport { _Math } from '../math/Math';\nimport { PerspectiveCamera } from '../cameras/PerspectiveCamera';\n\n/**\n * @author mrdoob / http://mrdoob.com/\n */\n\nfunction SpotLightShadow() {\n\n\tLightShadow.call( this, new PerspectiveCamera( 50, 1, 0.5, 500 ) );\n\n}\n\nSpotLightShadow.prototype = Object.assign( Object.create( LightShadow.prototype ), {\n\n\tconstructor: SpotLightShadow,\n\n\tisSpotLightShadow: true,\n\n\tupdate: function ( light ) {\n\n\t\tvar fov = _Math.RAD2DEG * 2 * light.angle;\n\t\tvar aspect = this.mapSize.width / this.mapSize.height;\n\t\tvar far = light.distance || 500;\n\n\t\tvar camera = this.camera;\n\n\t\tif ( fov !== camera.fov || aspect !== camera.aspect || far !== camera.far ) {\n\n\t\t\tcamera.fov = fov;\n\t\t\tcamera.aspect = aspect;\n\t\t\tcamera.far = far;\n\t\t\tcamera.updateProjectionMatrix();\n\n\t\t}\n\n\t}\n\n} );\n\n\nexport { SpotLightShadow };\n","import { Light } from './Light';\nimport { SpotLightShadow } from './SpotLightShadow';\nimport { Object3D } from '../core/Object3D';\n\n/**\n * @author alteredq / http://alteredqualia.com/\n */\n\nfunction SpotLight( color, intensity, distance, angle, penumbra, decay ) {\n\n\tLight.call( this, color, intensity );\n\n\tthis.type = 'SpotLight';\n\n\tthis.position.copy( Object3D.DefaultUp );\n\tthis.updateMatrix();\n\n\tthis.target = new Object3D();\n\n\tObject.defineProperty( this, 'power', {\n\t\tget: function () {\n\t\t\t// intensity = power per solid angle.\n\t\t\t// ref: equation (17) from http://www.frostbite.com/wp-content/uploads/2014/11/course_notes_moving_frostbite_to_pbr.pdf\n\t\t\treturn this.intensity * Math.PI;\n\t\t},\n\t\tset: function ( power ) {\n\t\t\t// intensity = power per solid angle.\n\t\t\t// ref: equation (17) from http://www.frostbite.com/wp-content/uploads/2014/11/course_notes_moving_frostbite_to_pbr.pdf\n\t\t\tthis.intensity = power / Math.PI;\n\t\t}\n\t} );\n\n\tthis.distance = ( distance !== undefined ) ? distance : 0;\n\tthis.angle = ( angle !== undefined ) ? angle : Math.PI / 3;\n\tthis.penumbra = ( penumbra !== undefined ) ? penumbra : 0;\n\tthis.decay = ( decay !== undefined ) ? decay : 1;\t// for physically correct lights, should be 2.\n\n\tthis.shadow = new SpotLightShadow();\n\n}\n\nSpotLight.prototype = Object.assign( Object.create( Light.prototype ), {\n\n\tconstructor: SpotLight,\n\n\tisSpotLight: true,\n\n\tcopy: function ( source ) {\n\n\t\tLight.prototype.copy.call( this, source );\n\n\t\tthis.distance = source.distance;\n\t\tthis.angle = source.angle;\n\t\tthis.penumbra = source.penumbra;\n\t\tthis.decay = source.decay;\n\n\t\tthis.target = source.target.clone();\n\n\t\tthis.shadow = source.shadow.clone();\n\n\t\treturn this;\n\n\t}\n\n} );\n\n\nexport { SpotLight };\n","import { Light } from './Light';\nimport { PerspectiveCamera } from '../cameras/PerspectiveCamera';\nimport { LightShadow } from './LightShadow';\n\n/**\n * @author mrdoob / http://mrdoob.com/\n */\n\n\nfunction PointLight( color, intensity, distance, decay ) {\n\n\tLight.call( this, color, intensity );\n\n\tthis.type = 'PointLight';\n\n\tObject.defineProperty( this, 'power', {\n\t\tget: function () {\n\t\t\t// intensity = power per solid angle.\n\t\t\t// ref: equation (15) from http://www.frostbite.com/wp-content/uploads/2014/11/course_notes_moving_frostbite_to_pbr.pdf\n\t\t\treturn this.intensity * 4 * Math.PI;\n\n\t\t},\n\t\tset: function ( power ) {\n\t\t\t// intensity = power per solid angle.\n\t\t\t// ref: equation (15) from http://www.frostbite.com/wp-content/uploads/2014/11/course_notes_moving_frostbite_to_pbr.pdf\n\t\t\tthis.intensity = power / ( 4 * Math.PI );\n\t\t}\n\t} );\n\n\tthis.distance = ( distance !== undefined ) ? distance : 0;\n\tthis.decay = ( decay !== undefined ) ? decay : 1;\t// for physically correct lights, should be 2.\n\n\tthis.shadow = new LightShadow( new PerspectiveCamera( 90, 1, 0.5, 500 ) );\n\n}\n\nPointLight.prototype = Object.assign( Object.create( Light.prototype ), {\n\n\tconstructor: PointLight,\n\n\tisPointLight: true,\n\n\tcopy: function ( source ) {\n\n\t\tLight.prototype.copy.call( this, source );\n\n\t\tthis.distance = source.distance;\n\t\tthis.decay = source.decay;\n\n\t\tthis.shadow = source.shadow.clone();\n\n\t\treturn this;\n\n\t}\n\n} );\n\n\nexport { PointLight };\n","import { LightShadow } from './LightShadow';\nimport { OrthographicCamera } from '../cameras/OrthographicCamera';\n\n/**\n * @author mrdoob / http://mrdoob.com/\n */\n\nfunction DirectionalLightShadow( light ) {\n\n\tLightShadow.call( this, new OrthographicCamera( - 5, 5, 5, - 5, 0.5, 500 ) );\n\n}\n\nDirectionalLightShadow.prototype = Object.assign( Object.create( LightShadow.prototype ), {\n\n\tconstructor: DirectionalLightShadow\n\n} );\n\n\nexport { DirectionalLightShadow };\n","import { Light } from './Light';\nimport { DirectionalLightShadow } from './DirectionalLightShadow';\nimport { Object3D } from '../core/Object3D';\n\n/**\n * @author mrdoob / http://mrdoob.com/\n * @author alteredq / http://alteredqualia.com/\n */\n\nfunction DirectionalLight( color, intensity ) {\n\n\tLight.call( this, color, intensity );\n\n\tthis.type = 'DirectionalLight';\n\n\tthis.position.copy( Object3D.DefaultUp );\n\tthis.updateMatrix();\n\n\tthis.target = new Object3D();\n\n\tthis.shadow = new DirectionalLightShadow();\n\n}\n\nDirectionalLight.prototype = Object.assign( Object.create( Light.prototype ), {\n\n\tconstructor: DirectionalLight,\n\n\tisDirectionalLight: true,\n\n\tcopy: function ( source ) {\n\n\t\tLight.prototype.copy.call( this, source );\n\n\t\tthis.target = source.target.clone();\n\n\t\tthis.shadow = source.shadow.clone();\n\n\t\treturn this;\n\n\t}\n\n} );\n\n\nexport { DirectionalLight };\n","import { Light } from './Light';\n\n/**\n * @author mrdoob / http://mrdoob.com/\n */\n\nfunction AmbientLight( color, intensity ) {\n\n\tLight.call( this, color, intensity );\n\n\tthis.type = 'AmbientLight';\n\n\tthis.castShadow = undefined;\n\n}\n\nAmbientLight.prototype = Object.assign( Object.create( Light.prototype ), {\n\n\tconstructor: AmbientLight,\n\n\tisAmbientLight: true,\n\n} );\n\n\nexport { AmbientLight };\n","/**\n * @author tschw\n * @author Ben Houston / http://clara.io/\n * @author David Sarno / http://lighthaus.us/\n */\n\nvar AnimationUtils = {\n\n\t// same as Array.prototype.slice, but also works on typed arrays\n\tarraySlice: function( array, from, to ) {\n\n\t\tif ( AnimationUtils.isTypedArray( array ) ) {\n\n\t\t\treturn new array.constructor( array.subarray( from, to ) );\n\n\t\t}\n\n\t\treturn array.slice( from, to );\n\n\t},\n\n\t// converts an array to a specific type\n\tconvertArray: function( array, type, forceClone ) {\n\n\t\tif ( ! array || // let 'undefined' and 'null' pass\n\t\t\t\t! forceClone && array.constructor === type ) return array;\n\n\t\tif ( typeof type.BYTES_PER_ELEMENT === 'number' ) {\n\n\t\t\treturn new type( array ); // create typed array\n\n\t\t}\n\n\t\treturn Array.prototype.slice.call( array ); // create Array\n\n\t},\n\n\tisTypedArray: function( object ) {\n\n\t\treturn ArrayBuffer.isView( object ) &&\n\t\t\t\t! ( object instanceof DataView );\n\n\t},\n\n\t// returns an array by which times and values can be sorted\n\tgetKeyframeOrder: function( times ) {\n\n\t\tfunction compareTime( i, j ) {\n\n\t\t\treturn times[ i ] - times[ j ];\n\n\t\t}\n\n\t\tvar n = times.length;\n\t\tvar result = new Array( n );\n\t\tfor ( var i = 0; i !== n; ++ i ) result[ i ] = i;\n\n\t\tresult.sort( compareTime );\n\n\t\treturn result;\n\n\t},\n\n\t// uses the array previously returned by 'getKeyframeOrder' to sort data\n\tsortedArray: function( values, stride, order ) {\n\n\t\tvar nValues = values.length;\n\t\tvar result = new values.constructor( nValues );\n\n\t\tfor ( var i = 0, dstOffset = 0; dstOffset !== nValues; ++ i ) {\n\n\t\t\tvar srcOffset = order[ i ] * stride;\n\n\t\t\tfor ( var j = 0; j !== stride; ++ j ) {\n\n\t\t\t\tresult[ dstOffset ++ ] = values[ srcOffset + j ];\n\n\t\t\t}\n\n\t\t}\n\n\t\treturn result;\n\n\t},\n\n\t// function for parsing AOS keyframe formats\n\tflattenJSON: function( jsonKeys, times, values, valuePropertyName ) {\n\n\t\tvar i = 1, key = jsonKeys[ 0 ];\n\n\t\twhile ( key !== undefined && key[ valuePropertyName ] === undefined ) {\n\n\t\t\tkey = jsonKeys[ i ++ ];\n\n\t\t}\n\n\t\tif ( key === undefined ) return; // no data\n\n\t\tvar value = key[ valuePropertyName ];\n\t\tif ( value === undefined ) return; // no data\n\n\t\tif ( Array.isArray( value ) ) {\n\n\t\t\tdo {\n\n\t\t\t\tvalue = key[ valuePropertyName ];\n\n\t\t\t\tif ( value !== undefined ) {\n\n\t\t\t\t\ttimes.push( key.time );\n\t\t\t\t\tvalues.push.apply( values, value ); // push all elements\n\n\t\t\t\t}\n\n\t\t\t\tkey = jsonKeys[ i ++ ];\n\n\t\t\t} while ( key !== undefined );\n\n\t\t} else if ( value.toArray !== undefined ) {\n\t\t\t// ...assume THREE.Math-ish\n\n\t\t\tdo {\n\n\t\t\t\tvalue = key[ valuePropertyName ];\n\n\t\t\t\tif ( value !== undefined ) {\n\n\t\t\t\t\ttimes.push( key.time );\n\t\t\t\t\tvalue.toArray( values, values.length );\n\n\t\t\t\t}\n\n\t\t\t\tkey = jsonKeys[ i ++ ];\n\n\t\t\t} while ( key !== undefined );\n\n\t\t} else {\n\t\t\t// otherwise push as-is\n\n\t\t\tdo {\n\n\t\t\t\tvalue = key[ valuePropertyName ];\n\n\t\t\t\tif ( value !== undefined ) {\n\n\t\t\t\t\ttimes.push( key.time );\n\t\t\t\t\tvalues.push( value );\n\n\t\t\t\t}\n\n\t\t\t\tkey = jsonKeys[ i ++ ];\n\n\t\t\t} while ( key !== undefined );\n\n\t\t}\n\n\t}\n\n};\n\n\nexport { AnimationUtils };\n","/**\n * Abstract base class of interpolants over parametric samples.\n *\n * The parameter domain is one dimensional, typically the time or a path\n * along a curve defined by the data.\n *\n * The sample values can have any dimensionality and derived classes may\n * apply special interpretations to the data.\n *\n * This class provides the interval seek in a Template Method, deferring\n * the actual interpolation to derived classes.\n *\n * Time complexity is O(1) for linear access crossing at most two points\n * and O(log N) for random access, where N is the number of positions.\n *\n * References:\n *\n * \t\thttp://www.oodesign.com/template-method-pattern.html\n *\n * @author tschw\n */\n\nfunction Interpolant(\n\t\tparameterPositions, sampleValues, sampleSize, resultBuffer ) {\n\n\tthis.parameterPositions = parameterPositions;\n\tthis._cachedIndex = 0;\n\n\tthis.resultBuffer = resultBuffer !== undefined ?\n\t\t\tresultBuffer : new sampleValues.constructor( sampleSize );\n\tthis.sampleValues = sampleValues;\n\tthis.valueSize = sampleSize;\n\n}\n\nInterpolant.prototype = {\n\n\tconstructor: Interpolant,\n\n\tevaluate: function( t ) {\n\n\t\tvar pp = this.parameterPositions,\n\t\t\ti1 = this._cachedIndex,\n\n\t\t\tt1 = pp[ i1 ],\n\t\t\tt0 = pp[ i1 - 1 ];\n\n\t\tvalidate_interval: {\n\n\t\t\tseek: {\n\n\t\t\t\tvar right;\n\n\t\t\t\tlinear_scan: {\n//- See http://jsperf.com/comparison-to-undefined/3\n//- slower code:\n//-\n//- \t\t\t\tif ( t >= t1 || t1 === undefined ) {\n\t\t\t\t\tforward_scan: if ( ! ( t < t1 ) ) {\n\n\t\t\t\t\t\tfor ( var giveUpAt = i1 + 2; ;) {\n\n\t\t\t\t\t\t\tif ( t1 === undefined ) {\n\n\t\t\t\t\t\t\t\tif ( t < t0 ) break forward_scan;\n\n\t\t\t\t\t\t\t\t// after end\n\n\t\t\t\t\t\t\t\ti1 = pp.length;\n\t\t\t\t\t\t\t\tthis._cachedIndex = i1;\n\t\t\t\t\t\t\t\treturn this.afterEnd_( i1 - 1, t, t0 );\n\n\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\tif ( i1 === giveUpAt ) break; // this loop\n\n\t\t\t\t\t\t\tt0 = t1;\n\t\t\t\t\t\t\tt1 = pp[ ++ i1 ];\n\n\t\t\t\t\t\t\tif ( t < t1 ) {\n\n\t\t\t\t\t\t\t\t// we have arrived at the sought interval\n\t\t\t\t\t\t\t\tbreak seek;\n\n\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\t// prepare binary search on the right side of the index\n\t\t\t\t\t\tright = pp.length;\n\t\t\t\t\t\tbreak linear_scan;\n\n\t\t\t\t\t}\n\n//- slower code:\n//-\t\t\t\t\tif ( t < t0 || t0 === undefined ) {\n\t\t\t\t\tif ( ! ( t >= t0 ) ) {\n\n\t\t\t\t\t\t// looping?\n\n\t\t\t\t\t\tvar t1global = pp[ 1 ];\n\n\t\t\t\t\t\tif ( t < t1global ) {\n\n\t\t\t\t\t\t\ti1 = 2; // + 1, using the scan for the details\n\t\t\t\t\t\t\tt0 = t1global;\n\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\t// linear reverse scan\n\n\t\t\t\t\t\tfor ( var giveUpAt = i1 - 2; ;) {\n\n\t\t\t\t\t\t\tif ( t0 === undefined ) {\n\n\t\t\t\t\t\t\t\t// before start\n\n\t\t\t\t\t\t\t\tthis._cachedIndex = 0;\n\t\t\t\t\t\t\t\treturn this.beforeStart_( 0, t, t1 );\n\n\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\tif ( i1 === giveUpAt ) break; // this loop\n\n\t\t\t\t\t\t\tt1 = t0;\n\t\t\t\t\t\t\tt0 = pp[ -- i1 - 1 ];\n\n\t\t\t\t\t\t\tif ( t >= t0 ) {\n\n\t\t\t\t\t\t\t\t// we have arrived at the sought interval\n\t\t\t\t\t\t\t\tbreak seek;\n\n\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\t// prepare binary search on the left side of the index\n\t\t\t\t\t\tright = i1;\n\t\t\t\t\t\ti1 = 0;\n\t\t\t\t\t\tbreak linear_scan;\n\n\t\t\t\t\t}\n\n\t\t\t\t\t// the interval is valid\n\n\t\t\t\t\tbreak validate_interval;\n\n\t\t\t\t} // linear scan\n\n\t\t\t\t// binary search\n\n\t\t\t\twhile ( i1 < right ) {\n\n\t\t\t\t\tvar mid = ( i1 + right ) >>> 1;\n\n\t\t\t\t\tif ( t < pp[ mid ] ) {\n\n\t\t\t\t\t\tright = mid;\n\n\t\t\t\t\t} else {\n\n\t\t\t\t\t\ti1 = mid + 1;\n\n\t\t\t\t\t}\n\n\t\t\t\t}\n\n\t\t\t\tt1 = pp[ i1 ];\n\t\t\t\tt0 = pp[ i1 - 1 ];\n\n\t\t\t\t// check boundary cases, again\n\n\t\t\t\tif ( t0 === undefined ) {\n\n\t\t\t\t\tthis._cachedIndex = 0;\n\t\t\t\t\treturn this.beforeStart_( 0, t, t1 );\n\n\t\t\t\t}\n\n\t\t\t\tif ( t1 === undefined ) {\n\n\t\t\t\t\ti1 = pp.length;\n\t\t\t\t\tthis._cachedIndex = i1;\n\t\t\t\t\treturn this.afterEnd_( i1 - 1, t0, t );\n\n\t\t\t\t}\n\n\t\t\t} // seek\n\n\t\t\tthis._cachedIndex = i1;\n\n\t\t\tthis.intervalChanged_( i1, t0, t1 );\n\n\t\t} // validate_interval\n\n\t\treturn this.interpolate_( i1, t0, t, t1 );\n\n\t},\n\n\tsettings: null, // optional, subclass-specific settings structure\n\t// Note: The indirection allows central control of many interpolants.\n\n\t// --- Protected interface\n\n\tDefaultSettings_: {},\n\n\tgetSettings_: function() {\n\n\t\treturn this.settings || this.DefaultSettings_;\n\n\t},\n\n\tcopySampleValue_: function( index ) {\n\n\t\t// copies a sample value to the result buffer\n\n\t\tvar result = this.resultBuffer,\n\t\t\tvalues = this.sampleValues,\n\t\t\tstride = this.valueSize,\n\t\t\toffset = index * stride;\n\n\t\tfor ( var i = 0; i !== stride; ++ i ) {\n\n\t\t\tresult[ i ] = values[ offset + i ];\n\n\t\t}\n\n\t\treturn result;\n\n\t},\n\n\t// Template methods for derived classes:\n\n\tinterpolate_: function( i1, t0, t, t1 ) {\n\n\t\tthrow new Error( \"call to abstract method\" );\n\t\t// implementations shall return this.resultBuffer\n\n\t},\n\n\tintervalChanged_: function( i1, t0, t1 ) {\n\n\t\t// empty\n\n\t}\n\n};\n\nObject.assign( Interpolant.prototype, {\n\n\tbeforeStart_: //( 0, t, t0 ), returns this.resultBuffer\n\t\tInterpolant.prototype.copySampleValue_,\n\n\tafterEnd_: //( N-1, tN-1, t ), returns this.resultBuffer\n\t\tInterpolant.prototype.copySampleValue_\n\n} );\n\n\nexport { Interpolant };\n","import { ZeroCurvatureEnding } from '../../constants';\nimport { Interpolant } from '../Interpolant';\nimport { WrapAroundEnding, ZeroSlopeEnding } from '../../constants';\n\n/**\n * Fast and simple cubic spline interpolant.\n *\n * It was derived from a Hermitian construction setting the first derivative\n * at each sample position to the linear slope between neighboring positions\n * over their parameter interval.\n *\n * @author tschw\n */\n\nfunction CubicInterpolant(\n\t\tparameterPositions, sampleValues, sampleSize, resultBuffer ) {\n\n\tInterpolant.call(\n\t\t\tthis, parameterPositions, sampleValues, sampleSize, resultBuffer );\n\n\tthis._weightPrev = -0;\n\tthis._offsetPrev = -0;\n\tthis._weightNext = -0;\n\tthis._offsetNext = -0;\n\n}\n\nCubicInterpolant.prototype =\n\t\tObject.assign( Object.create( Interpolant.prototype ), {\n\n\tconstructor: CubicInterpolant,\n\n\tDefaultSettings_: {\n\n\t\tendingStart: \tZeroCurvatureEnding,\n\t\tendingEnd:\t\tZeroCurvatureEnding\n\n\t},\n\n\tintervalChanged_: function( i1, t0, t1 ) {\n\n\t\tvar pp = this.parameterPositions,\n\t\t\tiPrev = i1 - 2,\n\t\t\tiNext = i1 + 1,\n\n\t\t\ttPrev = pp[ iPrev ],\n\t\t\ttNext = pp[ iNext ];\n\n\t\tif ( tPrev === undefined ) {\n\n\t\t\tswitch ( this.getSettings_().endingStart ) {\n\n\t\t\t\tcase ZeroSlopeEnding:\n\n\t\t\t\t\t// f'(t0) = 0\n\t\t\t\t\tiPrev = i1;\n\t\t\t\t\ttPrev = 2 * t0 - t1;\n\n\t\t\t\t\tbreak;\n\n\t\t\t\tcase WrapAroundEnding:\n\n\t\t\t\t\t// use the other end of the curve\n\t\t\t\t\tiPrev = pp.length - 2;\n\t\t\t\t\ttPrev = t0 + pp[ iPrev ] - pp[ iPrev + 1 ];\n\n\t\t\t\t\tbreak;\n\n\t\t\t\tdefault: // ZeroCurvatureEnding\n\n\t\t\t\t\t// f''(t0) = 0 a.k.a. Natural Spline\n\t\t\t\t\tiPrev = i1;\n\t\t\t\t\ttPrev = t1;\n\n\t\t\t}\n\n\t\t}\n\n\t\tif ( tNext === undefined ) {\n\n\t\t\tswitch ( this.getSettings_().endingEnd ) {\n\n\t\t\t\tcase ZeroSlopeEnding:\n\n\t\t\t\t\t// f'(tN) = 0\n\t\t\t\t\tiNext = i1;\n\t\t\t\t\ttNext = 2 * t1 - t0;\n\n\t\t\t\t\tbreak;\n\n\t\t\t\tcase WrapAroundEnding:\n\n\t\t\t\t\t// use the other end of the curve\n\t\t\t\t\tiNext = 1;\n\t\t\t\t\ttNext = t1 + pp[ 1 ] - pp[ 0 ];\n\n\t\t\t\t\tbreak;\n\n\t\t\t\tdefault: // ZeroCurvatureEnding\n\n\t\t\t\t\t// f''(tN) = 0, a.k.a. Natural Spline\n\t\t\t\t\tiNext = i1 - 1;\n\t\t\t\t\ttNext = t0;\n\n\t\t\t}\n\n\t\t}\n\n\t\tvar halfDt = ( t1 - t0 ) * 0.5,\n\t\t\tstride = this.valueSize;\n\n\t\tthis._weightPrev = halfDt / ( t0 - tPrev );\n\t\tthis._weightNext = halfDt / ( tNext - t1 );\n\t\tthis._offsetPrev = iPrev * stride;\n\t\tthis._offsetNext = iNext * stride;\n\n\t},\n\n\tinterpolate_: function( i1, t0, t, t1 ) {\n\n\t\tvar result = this.resultBuffer,\n\t\t\tvalues = this.sampleValues,\n\t\t\tstride = this.valueSize,\n\n\t\t\to1 = i1 * stride,\t\to0 = o1 - stride,\n\t\t\toP = this._offsetPrev, \toN = this._offsetNext,\n\t\t\twP = this._weightPrev,\twN = this._weightNext,\n\n\t\t\tp = ( t - t0 ) / ( t1 - t0 ),\n\t\t\tpp = p * p,\n\t\t\tppp = pp * p;\n\n\t\t// evaluate polynomials\n\n\t\tvar sP = - wP * ppp + 2 * wP * pp - wP * p;\n\t\tvar s0 = ( 1 + wP ) * ppp + (-1.5 - 2 * wP ) * pp + ( -0.5 + wP ) * p + 1;\n\t\tvar s1 = (-1 - wN ) * ppp + ( 1.5 + wN ) * pp + 0.5 * p;\n\t\tvar sN = wN * ppp - wN * pp;\n\n\t\t// combine data linearly\n\n\t\tfor ( var i = 0; i !== stride; ++ i ) {\n\n\t\t\tresult[ i ] =\n\t\t\t\t\tsP * values[ oP + i ] +\n\t\t\t\t\ts0 * values[ o0 + i ] +\n\t\t\t\t\ts1 * values[ o1 + i ] +\n\t\t\t\t\tsN * values[ oN + i ];\n\n\t\t}\n\n\t\treturn result;\n\n\t}\n\n} );\n\n\nexport { CubicInterpolant };\n","import { Interpolant } from '../Interpolant';\n\n/**\n * @author tschw\n */\n\nfunction LinearInterpolant(\n\t\tparameterPositions, sampleValues, sampleSize, resultBuffer ) {\n\n\tInterpolant.call(\n\t\t\tthis, parameterPositions, sampleValues, sampleSize, resultBuffer );\n\n}\n\nLinearInterpolant.prototype =\n\t\tObject.assign( Object.create( Interpolant.prototype ), {\n\n\tconstructor: LinearInterpolant,\n\n\tinterpolate_: function( i1, t0, t, t1 ) {\n\n\t\tvar result = this.resultBuffer,\n\t\t\tvalues = this.sampleValues,\n\t\t\tstride = this.valueSize,\n\n\t\t\toffset1 = i1 * stride,\n\t\t\toffset0 = offset1 - stride,\n\n\t\t\tweight1 = ( t - t0 ) / ( t1 - t0 ),\n\t\t\tweight0 = 1 - weight1;\n\n\t\tfor ( var i = 0; i !== stride; ++ i ) {\n\n\t\t\tresult[ i ] =\n\t\t\t\t\tvalues[ offset0 + i ] * weight0 +\n\t\t\t\t\tvalues[ offset1 + i ] * weight1;\n\n\t\t}\n\n\t\treturn result;\n\n\t}\n\n} );\n\n\nexport { LinearInterpolant };\n","import { Interpolant } from '../Interpolant';\n\n/**\n *\n * Interpolant that evaluates to the sample value at the position preceeding\n * the parameter.\n *\n * @author tschw\n */\n\nfunction DiscreteInterpolant(\n\t\tparameterPositions, sampleValues, sampleSize, resultBuffer ) {\n\n\tInterpolant.call(\n\t\t\tthis, parameterPositions, sampleValues, sampleSize, resultBuffer );\n\n}\n\nDiscreteInterpolant.prototype =\n\t\tObject.assign( Object.create( Interpolant.prototype ), {\n\n\tconstructor: DiscreteInterpolant,\n\n\tinterpolate_: function( i1, t0, t, t1 ) {\n\n\t\treturn this.copySampleValue_( i1 - 1 );\n\n\t}\n\n} );\n\n\nexport { DiscreteInterpolant };\n","import { InterpolateLinear } from '../constants';\nimport { AnimationUtils } from './AnimationUtils';\nimport { InterpolateSmooth, InterpolateDiscrete } from '../constants';\nimport { CubicInterpolant } from '../math/interpolants/CubicInterpolant';\nimport { LinearInterpolant } from '../math/interpolants/LinearInterpolant';\nimport { DiscreteInterpolant } from '../math/interpolants/DiscreteInterpolant';\n\nvar KeyframeTrackPrototype;\n\nKeyframeTrackPrototype = {\n\n\tTimeBufferType: Float32Array,\n\tValueBufferType: Float32Array,\n\n\tDefaultInterpolation: InterpolateLinear,\n\n\tInterpolantFactoryMethodDiscrete: function( result ) {\n\n\t\treturn new DiscreteInterpolant(\n\t\t\t\tthis.times, this.values, this.getValueSize(), result );\n\n\t},\n\n\tInterpolantFactoryMethodLinear: function( result ) {\n\n\t\treturn new LinearInterpolant(\n\t\t\t\tthis.times, this.values, this.getValueSize(), result );\n\n\t},\n\n\tInterpolantFactoryMethodSmooth: function( result ) {\n\n\t\treturn new CubicInterpolant(\n\t\t\t\tthis.times, this.values, this.getValueSize(), result );\n\n\t},\n\n\tsetInterpolation: function( interpolation ) {\n\n\t\tvar factoryMethod;\n\n\t\tswitch ( interpolation ) {\n\n\t\t\tcase InterpolateDiscrete:\n\n\t\t\t\tfactoryMethod = this.InterpolantFactoryMethodDiscrete;\n\n\t\t\t\tbreak;\n\n\t\t\tcase InterpolateLinear:\n\n\t\t\t\tfactoryMethod = this.InterpolantFactoryMethodLinear;\n\n\t\t\t\tbreak;\n\n\t\t\tcase InterpolateSmooth:\n\n\t\t\t\tfactoryMethod = this.InterpolantFactoryMethodSmooth;\n\n\t\t\t\tbreak;\n\n\t\t}\n\n\t\tif ( factoryMethod === undefined ) {\n\n\t\t\tvar message = \"unsupported interpolation for \" +\n\t\t\t\t\tthis.ValueTypeName + \" keyframe track named \" + this.name;\n\n\t\t\tif ( this.createInterpolant === undefined ) {\n\n\t\t\t\t// fall back to default, unless the default itself is messed up\n\t\t\t\tif ( interpolation !== this.DefaultInterpolation ) {\n\n\t\t\t\t\tthis.setInterpolation( this.DefaultInterpolation );\n\n\t\t\t\t} else {\n\n\t\t\t\t\tthrow new Error( message ); // fatal, in this case\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t\tconsole.warn( message );\n\t\t\treturn;\n\n\t\t}\n\n\t\tthis.createInterpolant = factoryMethod;\n\n\t},\n\n\tgetInterpolation: function() {\n\n\t\tswitch ( this.createInterpolant ) {\n\n\t\t\tcase this.InterpolantFactoryMethodDiscrete:\n\n\t\t\t\treturn InterpolateDiscrete;\n\n\t\t\tcase this.InterpolantFactoryMethodLinear:\n\n\t\t\t\treturn InterpolateLinear;\n\n\t\t\tcase this.InterpolantFactoryMethodSmooth:\n\n\t\t\t\treturn InterpolateSmooth;\n\n\t\t}\n\n\t},\n\n\tgetValueSize: function() {\n\n\t\treturn this.values.length / this.times.length;\n\n\t},\n\n\t// move all keyframes either forwards or backwards in time\n\tshift: function( timeOffset ) {\n\n\t\tif( timeOffset !== 0.0 ) {\n\n\t\t\tvar times = this.times;\n\n\t\t\tfor( var i = 0, n = times.length; i !== n; ++ i ) {\n\n\t\t\t\ttimes[ i ] += timeOffset;\n\n\t\t\t}\n\n\t\t}\n\n\t\treturn this;\n\n\t},\n\n\t// scale all keyframe times by a factor (useful for frame <-> seconds conversions)\n\tscale: function( timeScale ) {\n\n\t\tif( timeScale !== 1.0 ) {\n\n\t\t\tvar times = this.times;\n\n\t\t\tfor( var i = 0, n = times.length; i !== n; ++ i ) {\n\n\t\t\t\ttimes[ i ] *= timeScale;\n\n\t\t\t}\n\n\t\t}\n\n\t\treturn this;\n\n\t},\n\n\t// removes keyframes before and after animation without changing any values within the range [startTime, endTime].\n\t// IMPORTANT: We do not shift around keys to the start of the track time, because for interpolated keys this will change their values\n\ttrim: function( startTime, endTime ) {\n\n\t\tvar times = this.times,\n\t\t\tnKeys = times.length,\n\t\t\tfrom = 0,\n\t\t\tto = nKeys - 1;\n\n\t\twhile ( from !== nKeys && times[ from ] < startTime ) ++ from;\n\t\twhile ( to !== -1 && times[ to ] > endTime ) -- to;\n\n\t\t++ to; // inclusive -> exclusive bound\n\n\t\tif( from !== 0 || to !== nKeys ) {\n\n\t\t\t// empty tracks are forbidden, so keep at least one keyframe\n\t\t\tif ( from >= to ) to = Math.max( to , 1 ), from = to - 1;\n\n\t\t\tvar stride = this.getValueSize();\n\t\t\tthis.times = AnimationUtils.arraySlice( times, from, to );\n\t\t\tthis.values = AnimationUtils.\n\t\t\t\t\tarraySlice( this.values, from * stride, to * stride );\n\n\t\t}\n\n\t\treturn this;\n\n\t},\n\n\t// ensure we do not get a GarbageInGarbageOut situation, make sure tracks are at least minimally viable\n\tvalidate: function() {\n\n\t\tvar valid = true;\n\n\t\tvar valueSize = this.getValueSize();\n\t\tif ( valueSize - Math.floor( valueSize ) !== 0 ) {\n\n\t\t\tconsole.error( \"invalid value size in track\", this );\n\t\t\tvalid = false;\n\n\t\t}\n\n\t\tvar times = this.times,\n\t\t\tvalues = this.values,\n\n\t\t\tnKeys = times.length;\n\n\t\tif( nKeys === 0 ) {\n\n\t\t\tconsole.error( \"track is empty\", this );\n\t\t\tvalid = false;\n\n\t\t}\n\n\t\tvar prevTime = null;\n\n\t\tfor( var i = 0; i !== nKeys; i ++ ) {\n\n\t\t\tvar currTime = times[ i ];\n\n\t\t\tif ( typeof currTime === 'number' && isNaN( currTime ) ) {\n\n\t\t\t\tconsole.error( \"time is not a valid number\", this, i, currTime );\n\t\t\t\tvalid = false;\n\t\t\t\tbreak;\n\n\t\t\t}\n\n\t\t\tif( prevTime !== null && prevTime > currTime ) {\n\n\t\t\t\tconsole.error( \"out of order keys\", this, i, currTime, prevTime );\n\t\t\t\tvalid = false;\n\t\t\t\tbreak;\n\n\t\t\t}\n\n\t\t\tprevTime = currTime;\n\n\t\t}\n\n\t\tif ( values !== undefined ) {\n\n\t\t\tif ( AnimationUtils.isTypedArray( values ) ) {\n\n\t\t\t\tfor ( var i = 0, n = values.length; i !== n; ++ i ) {\n\n\t\t\t\t\tvar value = values[ i ];\n\n\t\t\t\t\tif ( isNaN( value ) ) {\n\n\t\t\t\t\t\tconsole.error( \"value is not a valid number\", this, i, value );\n\t\t\t\t\t\tvalid = false;\n\t\t\t\t\t\tbreak;\n\n\t\t\t\t\t}\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t}\n\n\t\treturn valid;\n\n\t},\n\n\t// removes equivalent sequential keys as common in morph target sequences\n\t// (0,0,0,0,1,1,1,0,0,0,0,0,0,0) --> (0,0,1,1,0,0)\n\toptimize: function() {\n\n\t\tvar times = this.times,\n\t\t\tvalues = this.values,\n\t\t\tstride = this.getValueSize(),\n\n\t\t\tsmoothInterpolation = this.getInterpolation() === InterpolateSmooth,\n\n\t\t\twriteIndex = 1,\n\t\t\tlastIndex = times.length - 1;\n\n\t\tfor( var i = 1; i < lastIndex; ++ i ) {\n\n\t\t\tvar keep = false;\n\n\t\t\tvar time = times[ i ];\n\t\t\tvar timeNext = times[ i + 1 ];\n\n\t\t\t// remove adjacent keyframes scheduled at the same time\n\n\t\t\tif ( time !== timeNext && ( i !== 1 || time !== time[ 0 ] ) ) {\n\n\t\t\t\tif ( ! smoothInterpolation ) {\n\n\t\t\t\t\t// remove unnecessary keyframes same as their neighbors\n\n\t\t\t\t\tvar offset = i * stride,\n\t\t\t\t\t\toffsetP = offset - stride,\n\t\t\t\t\t\toffsetN = offset + stride;\n\n\t\t\t\t\tfor ( var j = 0; j !== stride; ++ j ) {\n\n\t\t\t\t\t\tvar value = values[ offset + j ];\n\n\t\t\t\t\t\tif ( value !== values[ offsetP + j ] ||\n\t\t\t\t\t\t\t\tvalue !== values[ offsetN + j ] ) {\n\n\t\t\t\t\t\t\tkeep = true;\n\t\t\t\t\t\t\tbreak;\n\n\t\t\t\t\t\t}\n\n\t\t\t\t\t}\n\n\t\t\t\t} else keep = true;\n\n\t\t\t}\n\n\t\t\t// in-place compaction\n\n\t\t\tif ( keep ) {\n\n\t\t\t\tif ( i !== writeIndex ) {\n\n\t\t\t\t\ttimes[ writeIndex ] = times[ i ];\n\n\t\t\t\t\tvar readOffset = i * stride,\n\t\t\t\t\t\twriteOffset = writeIndex * stride;\n\n\t\t\t\t\tfor ( var j = 0; j !== stride; ++ j )\n\n\t\t\t\t\t\tvalues[ writeOffset + j ] = values[ readOffset + j ];\n\n\t\t\t\t}\n\n\t\t\t\t++ writeIndex;\n\n\t\t\t}\n\n\t\t}\n\n\t\t// flush last keyframe (compaction looks ahead)\n\n\t\tif ( lastIndex > 0 ) {\n\n\t\t\ttimes[ writeIndex ] = times[ lastIndex ];\n\n\t\t\tfor ( var readOffset = lastIndex * stride, writeOffset = writeIndex * stride, j = 0; j !== stride; ++ j )\n\n\t\t\t\tvalues[ writeOffset + j ] = values[ readOffset + j ];\n\n\t\t\t++ writeIndex;\n\n\t\t}\n\n\t\tif ( writeIndex !== times.length ) {\n\n\t\t\tthis.times = AnimationUtils.arraySlice( times, 0, writeIndex );\n\t\t\tthis.values = AnimationUtils.arraySlice( values, 0, writeIndex * stride );\n\n\t\t}\n\n\t\treturn this;\n\n\t}\n\n}\n\nexport { KeyframeTrackPrototype };\n","import { AnimationUtils } from './AnimationUtils';\n\nfunction KeyframeTrackConstructor( name, times, values, interpolation ) {\n\n\tif( name === undefined ) throw new Error( \"track name is undefined\" );\n\n\tif( times === undefined || times.length === 0 ) {\n\n\t\tthrow new Error( \"no keyframes in track named \" + name );\n\n\t}\n\n\tthis.name = name;\n\n\tthis.times = AnimationUtils.convertArray( times, this.TimeBufferType );\n\tthis.values = AnimationUtils.convertArray( values, this.ValueBufferType );\n\n\tthis.setInterpolation( interpolation || this.DefaultInterpolation );\n\n\tthis.validate();\n\tthis.optimize();\n\n}\n\nexport { KeyframeTrackConstructor };\n","import { KeyframeTrackPrototype } from '../KeyframeTrackPrototype';\nimport { KeyframeTrackConstructor } from '../KeyframeTrackConstructor';\n\n/**\n *\n * A Track of vectored keyframe values.\n *\n *\n * @author Ben Houston / http://clara.io/\n * @author David Sarno / http://lighthaus.us/\n * @author tschw\n */\n\nfunction VectorKeyframeTrack( name, times, values, interpolation ) {\n\n\tKeyframeTrackConstructor.call( this, name, times, values, interpolation );\n\n}\n\nVectorKeyframeTrack.prototype =\n\t\tObject.assign( Object.create( KeyframeTrackPrototype ), {\n\n\tconstructor: VectorKeyframeTrack,\n\n\tValueTypeName: 'vector'\n\n\t// ValueBufferType is inherited\n\n\t// DefaultInterpolation is inherited\n\n} );\n\n\nexport { VectorKeyframeTrack };\n","import { Interpolant } from '../Interpolant';\nimport { Quaternion } from '../Quaternion';\n\n/**\n * Spherical linear unit quaternion interpolant.\n *\n * @author tschw\n */\n\nfunction QuaternionLinearInterpolant(\n\t\tparameterPositions, sampleValues, sampleSize, resultBuffer ) {\n\n\tInterpolant.call(\n\t\t\tthis, parameterPositions, sampleValues, sampleSize, resultBuffer );\n\n}\n\nQuaternionLinearInterpolant.prototype =\n\t\tObject.assign( Object.create( Interpolant.prototype ), {\n\n\tconstructor: QuaternionLinearInterpolant,\n\n\tinterpolate_: function( i1, t0, t, t1 ) {\n\n\t\tvar result = this.resultBuffer,\n\t\t\tvalues = this.sampleValues,\n\t\t\tstride = this.valueSize,\n\n\t\t\toffset = i1 * stride,\n\n\t\t\talpha = ( t - t0 ) / ( t1 - t0 );\n\n\t\tfor ( var end = offset + stride; offset !== end; offset += 4 ) {\n\n\t\t\tQuaternion.slerpFlat( result, 0,\n\t\t\t\t\tvalues, offset - stride, values, offset, alpha );\n\n\t\t}\n\n\t\treturn result;\n\n\t}\n\n} );\n\n\nexport { QuaternionLinearInterpolant };\n","import { InterpolateLinear } from '../../constants';\nimport { KeyframeTrackPrototype } from '../KeyframeTrackPrototype';\nimport { QuaternionLinearInterpolant } from '../../math/interpolants/QuaternionLinearInterpolant';\nimport { KeyframeTrackConstructor } from '../KeyframeTrackConstructor';\n\n/**\n *\n * A Track of quaternion keyframe values.\n *\n * @author Ben Houston / http://clara.io/\n * @author David Sarno / http://lighthaus.us/\n * @author tschw\n */\n\nfunction QuaternionKeyframeTrack( name, times, values, interpolation ) {\n\n\tKeyframeTrackConstructor.call( this, name, times, values, interpolation );\n\n}\n\nQuaternionKeyframeTrack.prototype =\n\t\tObject.assign( Object.create( KeyframeTrackPrototype ), {\n\n\tconstructor: QuaternionKeyframeTrack,\n\n\tValueTypeName: 'quaternion',\n\n\t// ValueBufferType is inherited\n\n\tDefaultInterpolation: InterpolateLinear,\n\n\tInterpolantFactoryMethodLinear: function( result ) {\n\n\t\treturn new QuaternionLinearInterpolant(\n\t\t\t\tthis.times, this.values, this.getValueSize(), result );\n\n\t},\n\n\tInterpolantFactoryMethodSmooth: undefined // not yet implemented\n\n} );\n\n\nexport { QuaternionKeyframeTrack };\n","import { KeyframeTrackPrototype } from '../KeyframeTrackPrototype';\nimport { KeyframeTrackConstructor } from '../KeyframeTrackConstructor';\n\n/**\n *\n * A Track of numeric keyframe values.\n *\n * @author Ben Houston / http://clara.io/\n * @author David Sarno / http://lighthaus.us/\n * @author tschw\n */\n\nfunction NumberKeyframeTrack( name, times, values, interpolation ) {\n\n\tKeyframeTrackConstructor.call( this, name, times, values, interpolation );\n\n}\n\nNumberKeyframeTrack.prototype =\n\t\tObject.assign( Object.create( KeyframeTrackPrototype ), {\n\n\tconstructor: NumberKeyframeTrack,\n\n\tValueTypeName: 'number',\n\n\t// ValueBufferType is inherited\n\n\t// DefaultInterpolation is inherited\n\n} );\n\n\nexport { NumberKeyframeTrack };\n","import { InterpolateDiscrete } from '../../constants';\nimport { KeyframeTrackPrototype } from '../KeyframeTrackPrototype';\nimport { KeyframeTrackConstructor } from '../KeyframeTrackConstructor';\n\n/**\n *\n * A Track that interpolates Strings\n *\n *\n * @author Ben Houston / http://clara.io/\n * @author David Sarno / http://lighthaus.us/\n * @author tschw\n */\n\nfunction StringKeyframeTrack( name, times, values, interpolation ) {\n\n\tKeyframeTrackConstructor.call( this, name, times, values, interpolation );\n\n}\n\nStringKeyframeTrack.prototype =\n\t\tObject.assign( Object.create( KeyframeTrackPrototype ), {\n\n\tconstructor: StringKeyframeTrack,\n\n\tValueTypeName: 'string',\n\tValueBufferType: Array,\n\n\tDefaultInterpolation: InterpolateDiscrete,\n\n\tInterpolantFactoryMethodLinear: undefined,\n\n\tInterpolantFactoryMethodSmooth: undefined\n\n} );\n\n\nexport { StringKeyframeTrack };\n","import { InterpolateDiscrete } from '../../constants';\nimport { KeyframeTrackPrototype } from '../KeyframeTrackPrototype';\nimport { KeyframeTrackConstructor } from '../KeyframeTrackConstructor';\n\n/**\n *\n * A Track of Boolean keyframe values.\n *\n *\n * @author Ben Houston / http://clara.io/\n * @author David Sarno / http://lighthaus.us/\n * @author tschw\n */\n\nfunction BooleanKeyframeTrack( name, times, values ) {\n\n\tKeyframeTrackConstructor.call( this, name, times, values );\n\n}\n\nBooleanKeyframeTrack.prototype =\n\t\tObject.assign( Object.create( KeyframeTrackPrototype ), {\n\n\tconstructor: BooleanKeyframeTrack,\n\n\tValueTypeName: 'bool',\n\tValueBufferType: Array,\n\n\tDefaultInterpolation: InterpolateDiscrete,\n\n\tInterpolantFactoryMethodLinear: undefined,\n\tInterpolantFactoryMethodSmooth: undefined\n\n\t// Note: Actually this track could have a optimized / compressed\n\t// representation of a single value and a custom interpolant that\n\t// computes \"firstValue ^ isOdd( index )\".\n\n} );\n\n\nexport { BooleanKeyframeTrack };\n","import { KeyframeTrackPrototype } from '../KeyframeTrackPrototype';\nimport { KeyframeTrackConstructor } from '../KeyframeTrackConstructor';\n\n/**\n *\n * A Track of keyframe values that represent color.\n *\n *\n * @author Ben Houston / http://clara.io/\n * @author David Sarno / http://lighthaus.us/\n * @author tschw\n */\n\nfunction ColorKeyframeTrack( name, times, values, interpolation ) {\n\n\tKeyframeTrackConstructor.call( this, name, times, values, interpolation );\n\n}\n\nColorKeyframeTrack.prototype =\n\t\tObject.assign( Object.create( KeyframeTrackPrototype ), {\n\n\tconstructor: ColorKeyframeTrack,\n\n\tValueTypeName: 'color'\n\n\t// ValueBufferType is inherited\n\n\t// DefaultInterpolation is inherited\n\n\n\t// Note: Very basic implementation and nothing special yet.\n\t// However, this is the place for color space parameterization.\n\n} );\n\n\nexport { ColorKeyframeTrack };\n","import { KeyframeTrackPrototype } from './KeyframeTrackPrototype';\nimport { StringKeyframeTrack } from './tracks/StringKeyframeTrack';\nimport { BooleanKeyframeTrack } from './tracks/BooleanKeyframeTrack';\nimport { QuaternionKeyframeTrack } from './tracks/QuaternionKeyframeTrack';\nimport { ColorKeyframeTrack } from './tracks/ColorKeyframeTrack';\nimport { VectorKeyframeTrack } from './tracks/VectorKeyframeTrack';\nimport { NumberKeyframeTrack } from './tracks/NumberKeyframeTrack';\nimport { AnimationUtils } from './AnimationUtils';\nimport { KeyframeTrackConstructor } from './KeyframeTrackConstructor';\n\n/**\n *\n * A timed sequence of keyframes for a specific property.\n *\n *\n * @author Ben Houston / http://clara.io/\n * @author David Sarno / http://lighthaus.us/\n * @author tschw\n */\n\nfunction KeyframeTrack( name, times, values, interpolation ) {\n\n\tKeyframeTrackConstructor.apply( this, arguments );\n\n}\n\nKeyframeTrack.prototype = KeyframeTrackPrototype;\nKeyframeTrackPrototype.constructor = KeyframeTrack;\n\n// Static methods:\n\nObject.assign( KeyframeTrack, {\n\n\t// Serialization (in static context, because of constructor invocation\n\t// and automatic invocation of .toJSON):\n\n\tparse: function( json ) {\n\n\t\tif( json.type === undefined ) {\n\n\t\t\tthrow new Error( \"track type undefined, can not parse\" );\n\n\t\t}\n\n\t\tvar trackType = KeyframeTrack._getTrackTypeForValueTypeName( json.type );\n\n\t\tif ( json.times === undefined ) {\n\n\t\t\tvar times = [], values = [];\n\n\t\t\tAnimationUtils.flattenJSON( json.keys, times, values, 'value' );\n\n\t\t\tjson.times = times;\n\t\t\tjson.values = values;\n\n\t\t}\n\n\t\t// derived classes can define a static parse method\n\t\tif ( trackType.parse !== undefined ) {\n\n\t\t\treturn trackType.parse( json );\n\n\t\t} else {\n\n\t\t\t// by default, we asssume a constructor compatible with the base\n\t\t\treturn new trackType(\n\t\t\t\t\tjson.name, json.times, json.values, json.interpolation );\n\n\t\t}\n\n\t},\n\n\ttoJSON: function( track ) {\n\n\t\tvar trackType = track.constructor;\n\n\t\tvar json;\n\n\t\t// derived classes can define a static toJSON method\n\t\tif ( trackType.toJSON !== undefined ) {\n\n\t\t\tjson = trackType.toJSON( track );\n\n\t\t} else {\n\n\t\t\t// by default, we assume the data can be serialized as-is\n\t\t\tjson = {\n\n\t\t\t\t'name': track.name,\n\t\t\t\t'times': AnimationUtils.convertArray( track.times, Array ),\n\t\t\t\t'values': AnimationUtils.convertArray( track.values, Array )\n\n\t\t\t};\n\n\t\t\tvar interpolation = track.getInterpolation();\n\n\t\t\tif ( interpolation !== track.DefaultInterpolation ) {\n\n\t\t\t\tjson.interpolation = interpolation;\n\n\t\t\t}\n\n\t\t}\n\n\t\tjson.type = track.ValueTypeName; // mandatory\n\n\t\treturn json;\n\n\t},\n\n\t_getTrackTypeForValueTypeName: function( typeName ) {\n\n\t\tswitch( typeName.toLowerCase() ) {\n\n\t\t\tcase \"scalar\":\n\t\t\tcase \"double\":\n\t\t\tcase \"float\":\n\t\t\tcase \"number\":\n\t\t\tcase \"integer\":\n\n\t\t\t\treturn NumberKeyframeTrack;\n\n\t\t\tcase \"vector\":\n\t\t\tcase \"vector2\":\n\t\t\tcase \"vector3\":\n\t\t\tcase \"vector4\":\n\n\t\t\t\treturn VectorKeyframeTrack;\n\n\t\t\tcase \"color\":\n\n\t\t\t\treturn ColorKeyframeTrack;\n\n\t\t\tcase \"quaternion\":\n\n\t\t\t\treturn QuaternionKeyframeTrack;\n\n\t\t\tcase \"bool\":\n\t\t\tcase \"boolean\":\n\n\t\t\t\treturn BooleanKeyframeTrack;\n\n\t\t\tcase \"string\":\n\n\t\t\t\treturn StringKeyframeTrack;\n\n\t\t}\n\n\t\tthrow new Error( \"Unsupported typeName: \" + typeName );\n\n\t}\n\n} );\n\n\nexport { KeyframeTrack };\n","import { VectorKeyframeTrack } from './tracks/VectorKeyframeTrack';\nimport { QuaternionKeyframeTrack } from './tracks/QuaternionKeyframeTrack';\nimport { NumberKeyframeTrack } from './tracks/NumberKeyframeTrack';\nimport { AnimationUtils } from './AnimationUtils';\nimport { KeyframeTrack } from './KeyframeTrack';\nimport { _Math } from '../math/Math';\n\n/**\n *\n * Reusable set of Tracks that represent an animation.\n *\n * @author Ben Houston / http://clara.io/\n * @author David Sarno / http://lighthaus.us/\n */\n\nfunction AnimationClip( name, duration, tracks ) {\n\n\tthis.name = name;\n\tthis.tracks = tracks;\n\tthis.duration = ( duration !== undefined ) ? duration : -1;\n\n\tthis.uuid = _Math.generateUUID();\n\n\t// this means it should figure out its duration by scanning the tracks\n\tif ( this.duration < 0 ) {\n\n\t\tthis.resetDuration();\n\n\t}\n\n\tthis.optimize();\n\n}\n\nAnimationClip.prototype = {\n\n\tconstructor: AnimationClip,\n\n\tresetDuration: function() {\n\n\t\tvar tracks = this.tracks,\n\t\t\tduration = 0;\n\n\t\tfor ( var i = 0, n = tracks.length; i !== n; ++ i ) {\n\n\t\t\tvar track = this.tracks[ i ];\n\n\t\t\tduration = Math.max(\n\t\t\t\t\tduration, track.times[ track.times.length - 1 ] );\n\n\t\t}\n\n\t\tthis.duration = duration;\n\n\t},\n\n\ttrim: function() {\n\n\t\tfor ( var i = 0; i < this.tracks.length; i ++ ) {\n\n\t\t\tthis.tracks[ i ].trim( 0, this.duration );\n\n\t\t}\n\n\t\treturn this;\n\n\t},\n\n\toptimize: function() {\n\n\t\tfor ( var i = 0; i < this.tracks.length; i ++ ) {\n\n\t\t\tthis.tracks[ i ].optimize();\n\n\t\t}\n\n\t\treturn this;\n\n\t}\n\n};\n\n// Static methods:\n\nObject.assign( AnimationClip, {\n\n\tparse: function( json ) {\n\n\t\tvar tracks = [],\n\t\t\tjsonTracks = json.tracks,\n\t\t\tframeTime = 1.0 / ( json.fps || 1.0 );\n\n\t\tfor ( var i = 0, n = jsonTracks.length; i !== n; ++ i ) {\n\n\t\t\ttracks.push( KeyframeTrack.parse( jsonTracks[ i ] ).scale( frameTime ) );\n\n\t\t}\n\n\t\treturn new AnimationClip( json.name, json.duration, tracks );\n\n\t},\n\n\n\ttoJSON: function( clip ) {\n\n\t\tvar tracks = [],\n\t\t\tclipTracks = clip.tracks;\n\n\t\tvar json = {\n\n\t\t\t'name': clip.name,\n\t\t\t'duration': clip.duration,\n\t\t\t'tracks': tracks\n\n\t\t};\n\n\t\tfor ( var i = 0, n = clipTracks.length; i !== n; ++ i ) {\n\n\t\t\ttracks.push( KeyframeTrack.toJSON( clipTracks[ i ] ) );\n\n\t\t}\n\n\t\treturn json;\n\n\t},\n\n\n\tCreateFromMorphTargetSequence: function( name, morphTargetSequence, fps, noLoop ) {\n\n\t\tvar numMorphTargets = morphTargetSequence.length;\n\t\tvar tracks = [];\n\n\t\tfor ( var i = 0; i < numMorphTargets; i ++ ) {\n\n\t\t\tvar times = [];\n\t\t\tvar values = [];\n\n\t\t\ttimes.push(\n\t\t\t\t\t( i + numMorphTargets - 1 ) % numMorphTargets,\n\t\t\t\t\ti,\n\t\t\t\t\t( i + 1 ) % numMorphTargets );\n\n\t\t\tvalues.push( 0, 1, 0 );\n\n\t\t\tvar order = AnimationUtils.getKeyframeOrder( times );\n\t\t\ttimes = AnimationUtils.sortedArray( times, 1, order );\n\t\t\tvalues = AnimationUtils.sortedArray( values, 1, order );\n\n\t\t\t// if there is a key at the first frame, duplicate it as the\n\t\t\t// last frame as well for perfect loop.\n\t\t\tif ( ! noLoop && times[ 0 ] === 0 ) {\n\n\t\t\t\ttimes.push( numMorphTargets );\n\t\t\t\tvalues.push( values[ 0 ] );\n\n\t\t\t}\n\n\t\t\ttracks.push(\n\t\t\t\t\tnew NumberKeyframeTrack(\n\t\t\t\t\t\t'.morphTargetInfluences[' + morphTargetSequence[ i ].name + ']',\n\t\t\t\t\t\ttimes, values\n\t\t\t\t\t).scale( 1.0 / fps ) );\n\t\t}\n\n\t\treturn new AnimationClip( name, -1, tracks );\n\n\t},\n\n\tfindByName: function( objectOrClipArray, name ) {\n\n\t\tvar clipArray = objectOrClipArray;\n\n\t\tif ( ! Array.isArray( objectOrClipArray ) ) {\n\n\t\t\tvar o = objectOrClipArray;\n\t\t\tclipArray = o.geometry && o.geometry.animations || o.animations;\n\n\t\t}\n\n\t\tfor ( var i = 0; i < clipArray.length; i ++ ) {\n\n\t\t\tif ( clipArray[ i ].name === name ) {\n\n\t\t\t\treturn clipArray[ i ];\n\n\t\t\t}\n\t\t}\n\n\t\treturn null;\n\n\t},\n\n\tCreateClipsFromMorphTargetSequences: function( morphTargets, fps, noLoop ) {\n\n\t\tvar animationToMorphTargets = {};\n\n\t\t// tested with https://regex101.com/ on trick sequences\n\t\t// such flamingo_flyA_003, flamingo_run1_003, crdeath0059\n\t\tvar pattern = /^([\\w-]*?)([\\d]+)$/;\n\n\t\t// sort morph target names into animation groups based\n\t\t// patterns like Walk_001, Walk_002, Run_001, Run_002\n\t\tfor ( var i = 0, il = morphTargets.length; i < il; i ++ ) {\n\n\t\t\tvar morphTarget = morphTargets[ i ];\n\t\t\tvar parts = morphTarget.name.match( pattern );\n\n\t\t\tif ( parts && parts.length > 1 ) {\n\n\t\t\t\tvar name = parts[ 1 ];\n\n\t\t\t\tvar animationMorphTargets = animationToMorphTargets[ name ];\n\t\t\t\tif ( ! animationMorphTargets ) {\n\n\t\t\t\t\tanimationToMorphTargets[ name ] = animationMorphTargets = [];\n\n\t\t\t\t}\n\n\t\t\t\tanimationMorphTargets.push( morphTarget );\n\n\t\t\t}\n\n\t\t}\n\n\t\tvar clips = [];\n\n\t\tfor ( var name in animationToMorphTargets ) {\n\n\t\t\tclips.push( AnimationClip.CreateFromMorphTargetSequence( name, animationToMorphTargets[ name ], fps, noLoop ) );\n\n\t\t}\n\n\t\treturn clips;\n\n\t},\n\n\t// parse the animation.hierarchy format\n\tparseAnimation: function( animation, bones ) {\n\n\t\tif ( ! animation ) {\n\n\t\t\tconsole.error( \" no animation in JSONLoader data\" );\n\t\t\treturn null;\n\n\t\t}\n\n\t\tvar addNonemptyTrack = function(\n\t\t\t\ttrackType, trackName, animationKeys, propertyName, destTracks ) {\n\n\t\t\t// only return track if there are actually keys.\n\t\t\tif ( animationKeys.length !== 0 ) {\n\n\t\t\t\tvar times = [];\n\t\t\t\tvar values = [];\n\n\t\t\t\tAnimationUtils.flattenJSON(\n\t\t\t\t\t\tanimationKeys, times, values, propertyName );\n\n\t\t\t\t// empty keys are filtered out, so check again\n\t\t\t\tif ( times.length !== 0 ) {\n\n\t\t\t\t\tdestTracks.push( new trackType( trackName, times, values ) );\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t};\n\n\t\tvar tracks = [];\n\n\t\tvar clipName = animation.name || 'default';\n\t\t// automatic length determination in AnimationClip.\n\t\tvar duration = animation.length || -1;\n\t\tvar fps = animation.fps || 30;\n\n\t\tvar hierarchyTracks = animation.hierarchy || [];\n\n\t\tfor ( var h = 0; h < hierarchyTracks.length; h ++ ) {\n\n\t\t\tvar animationKeys = hierarchyTracks[ h ].keys;\n\n\t\t\t// skip empty tracks\n\t\t\tif ( ! animationKeys || animationKeys.length === 0 ) continue;\n\n\t\t\t// process morph targets in a way exactly compatible\n\t\t\t// with AnimationHandler.init( animation )\n\t\t\tif ( animationKeys[0].morphTargets ) {\n\n\t\t\t\t// figure out all morph targets used in this track\n\t\t\t\tvar morphTargetNames = {};\n\t\t\t\tfor ( var k = 0; k < animationKeys.length; k ++ ) {\n\n\t\t\t\t\tif ( animationKeys[k].morphTargets ) {\n\n\t\t\t\t\t\tfor ( var m = 0; m < animationKeys[k].morphTargets.length; m ++ ) {\n\n\t\t\t\t\t\t\tmorphTargetNames[ animationKeys[k].morphTargets[m] ] = -1;\n\t\t\t\t\t\t}\n\n\t\t\t\t\t}\n\n\t\t\t\t}\n\n\t\t\t\t// create a track for each morph target with all zero\n\t\t\t\t// morphTargetInfluences except for the keys in which\n\t\t\t\t// the morphTarget is named.\n\t\t\t\tfor ( var morphTargetName in morphTargetNames ) {\n\n\t\t\t\t\tvar times = [];\n\t\t\t\t\tvar values = [];\n\n\t\t\t\t\tfor ( var m = 0;\n\t\t\t\t\t\t\tm !== animationKeys[k].morphTargets.length; ++ m ) {\n\n\t\t\t\t\t\tvar animationKey = animationKeys[k];\n\n\t\t\t\t\t\ttimes.push( animationKey.time );\n\t\t\t\t\t\tvalues.push( ( animationKey.morphTarget === morphTargetName ) ? 1 : 0 );\n\n\t\t\t\t\t}\n\n\t\t\t\t\ttracks.push( new NumberKeyframeTrack(\n\t\t\t\t\t\t\t'.morphTargetInfluence[' + morphTargetName + ']', times, values ) );\n\n\t\t\t\t}\n\n\t\t\t\tduration = morphTargetNames.length * ( fps || 1.0 );\n\n\t\t\t} else {\n\t\t\t\t// ...assume skeletal animation\n\n\t\t\t\tvar boneName = '.bones[' + bones[ h ].name + ']';\n\n\t\t\t\taddNonemptyTrack(\n\t\t\t\t\t\tVectorKeyframeTrack, boneName + '.position',\n\t\t\t\t\t\tanimationKeys, 'pos', tracks );\n\n\t\t\t\taddNonemptyTrack(\n\t\t\t\t\t\tQuaternionKeyframeTrack, boneName + '.quaternion',\n\t\t\t\t\t\tanimationKeys, 'rot', tracks );\n\n\t\t\t\taddNonemptyTrack(\n\t\t\t\t\t\tVectorKeyframeTrack, boneName + '.scale',\n\t\t\t\t\t\tanimationKeys, 'scl', tracks );\n\n\t\t\t}\n\n\t\t}\n\n\t\tif ( tracks.length === 0 ) {\n\n\t\t\treturn null;\n\n\t\t}\n\n\t\tvar clip = new AnimationClip( clipName, duration, tracks );\n\n\t\treturn clip;\n\n\t}\n\n} );\n\n\nexport { AnimationClip };\n","import { Vector2 } from '../math/Vector2';\nimport { FileLoader } from './FileLoader';\nimport { DefaultLoadingManager } from './LoadingManager';\nimport * as Materials from '../materials/Materials';\n\n/**\n * @author mrdoob / http://mrdoob.com/\n */\n\nfunction MaterialLoader( manager ) {\n\n\tthis.manager = ( manager !== undefined ) ? manager : DefaultLoadingManager;\n\tthis.textures = {};\n\n}\n\nObject.assign( MaterialLoader.prototype, {\n\n\tload: function ( url, onLoad, onProgress, onError ) {\n\n\t\tvar scope = this;\n\n\t\tvar loader = new FileLoader( scope.manager );\n\t\tloader.load( url, function ( text ) {\n\n\t\t\tonLoad( scope.parse( JSON.parse( text ) ) );\n\n\t\t}, onProgress, onError );\n\n\t},\n\n\tsetTextures: function ( value ) {\n\n\t\tthis.textures = value;\n\n\t},\n\n\tparse: function ( json ) {\n\n\t\tvar textures = this.textures;\n\n\t\tfunction getTexture( name ) {\n\n\t\t\tif ( textures[ name ] === undefined ) {\n\n\t\t\t\tconsole.warn( 'THREE.MaterialLoader: Undefined texture', name );\n\n\t\t\t}\n\n\t\t\treturn textures[ name ];\n\n\t\t}\n\n\t\tvar material = new Materials[ json.type ]();\n\n\t\tif ( json.uuid !== undefined ) material.uuid = json.uuid;\n\t\tif ( json.name !== undefined ) material.name = json.name;\n\t\tif ( json.color !== undefined ) material.color.setHex( json.color );\n\t\tif ( json.roughness !== undefined ) material.roughness = json.roughness;\n\t\tif ( json.metalness !== undefined ) material.metalness = json.metalness;\n\t\tif ( json.emissive !== undefined ) material.emissive.setHex( json.emissive );\n\t\tif ( json.specular !== undefined ) material.specular.setHex( json.specular );\n\t\tif ( json.shininess !== undefined ) material.shininess = json.shininess;\n\t\tif ( json.uniforms !== undefined ) material.uniforms = json.uniforms;\n\t\tif ( json.vertexShader !== undefined ) material.vertexShader = json.vertexShader;\n\t\tif ( json.fragmentShader !== undefined ) material.fragmentShader = json.fragmentShader;\n\t\tif ( json.vertexColors !== undefined ) material.vertexColors = json.vertexColors;\n\t\tif ( json.fog !== undefined ) material.fog = json.fog;\n\t\tif ( json.shading !== undefined ) material.shading = json.shading;\n\t\tif ( json.blending !== undefined ) material.blending = json.blending;\n\t\tif ( json.side !== undefined ) material.side = json.side;\n\t\tif ( json.opacity !== undefined ) material.opacity = json.opacity;\n\t\tif ( json.transparent !== undefined ) material.transparent = json.transparent;\n\t\tif ( json.alphaTest !== undefined ) material.alphaTest = json.alphaTest;\n\t\tif ( json.depthTest !== undefined ) material.depthTest = json.depthTest;\n\t\tif ( json.depthWrite !== undefined ) material.depthWrite = json.depthWrite;\n\t\tif ( json.colorWrite !== undefined ) material.colorWrite = json.colorWrite;\n\t\tif ( json.wireframe !== undefined ) material.wireframe = json.wireframe;\n\t\tif ( json.wireframeLinewidth !== undefined ) material.wireframeLinewidth = json.wireframeLinewidth;\n\t\tif ( json.wireframeLinecap !== undefined ) material.wireframeLinecap = json.wireframeLinecap;\n\t\tif ( json.wireframeLinejoin !== undefined ) material.wireframeLinejoin = json.wireframeLinejoin;\n\t\tif ( json.skinning !== undefined ) material.skinning = json.skinning;\n\t\tif ( json.morphTargets !== undefined ) material.morphTargets = json.morphTargets;\n\n\t\t// for PointsMaterial\n\n\t\tif ( json.size !== undefined ) material.size = json.size;\n\t\tif ( json.sizeAttenuation !== undefined ) material.sizeAttenuation = json.sizeAttenuation;\n\n\t\t// maps\n\n\t\tif ( json.map !== undefined ) material.map = getTexture( json.map );\n\n\t\tif ( json.alphaMap !== undefined ) {\n\n\t\t\tmaterial.alphaMap = getTexture( json.alphaMap );\n\t\t\tmaterial.transparent = true;\n\n\t\t}\n\n\t\tif ( json.bumpMap !== undefined ) material.bumpMap = getTexture( json.bumpMap );\n\t\tif ( json.bumpScale !== undefined ) material.bumpScale = json.bumpScale;\n\n\t\tif ( json.normalMap !== undefined ) material.normalMap = getTexture( json.normalMap );\n\t\tif ( json.normalScale !== undefined ) {\n\n\t\t\tvar normalScale = json.normalScale;\n\n\t\t\tif ( Array.isArray( normalScale ) === false ) {\n\n\t\t\t\t// Blender exporter used to export a scalar. See #7459\n\n\t\t\t\tnormalScale = [ normalScale, normalScale ];\n\n\t\t\t}\n\n\t\t\tmaterial.normalScale = new Vector2().fromArray( normalScale );\n\n\t\t}\n\n\t\tif ( json.displacementMap !== undefined ) material.displacementMap = getTexture( json.displacementMap );\n\t\tif ( json.displacementScale !== undefined ) material.displacementScale = json.displacementScale;\n\t\tif ( json.displacementBias !== undefined ) material.displacementBias = json.displacementBias;\n\n\t\tif ( json.roughnessMap !== undefined ) material.roughnessMap = getTexture( json.roughnessMap );\n\t\tif ( json.metalnessMap !== undefined ) material.metalnessMap = getTexture( json.metalnessMap );\n\n\t\tif ( json.emissiveMap !== undefined ) material.emissiveMap = getTexture( json.emissiveMap );\n\t\tif ( json.emissiveIntensity !== undefined ) material.emissiveIntensity = json.emissiveIntensity;\n\n\t\tif ( json.specularMap !== undefined ) material.specularMap = getTexture( json.specularMap );\n\n\t\tif ( json.envMap !== undefined ) material.envMap = getTexture( json.envMap );\n\n\t\tif ( json.reflectivity !== undefined ) material.reflectivity = json.reflectivity;\n\n\t\tif ( json.lightMap !== undefined ) material.lightMap = getTexture( json.lightMap );\n\t\tif ( json.lightMapIntensity !== undefined ) material.lightMapIntensity = json.lightMapIntensity;\n\n\t\tif ( json.aoMap !== undefined ) material.aoMap = getTexture( json.aoMap );\n\t\tif ( json.aoMapIntensity !== undefined ) material.aoMapIntensity = json.aoMapIntensity;\n\n\t\t// MultiMaterial\n\n\t\tif ( json.materials !== undefined ) {\n\n\t\t\tfor ( var i = 0, l = json.materials.length; i < l; i ++ ) {\n\n\t\t\t\tmaterial.materials.push( this.parse( json.materials[ i ] ) );\n\n\t\t\t}\n\n\t\t}\n\n\t\treturn material;\n\n\t}\n\n} );\n\n\nexport { MaterialLoader };\n","import { Sphere } from '../math/Sphere';\nimport { Vector3 } from '../math/Vector3';\nimport { BufferAttribute } from '../core/BufferAttribute';\nimport { BufferGeometry } from '../core/BufferGeometry';\nimport { FileLoader } from './FileLoader';\nimport { DefaultLoadingManager } from './LoadingManager';\n\n/**\n * @author mrdoob / http://mrdoob.com/\n */\n\nfunction BufferGeometryLoader( manager ) {\n\n\tthis.manager = ( manager !== undefined ) ? manager : DefaultLoadingManager;\n\n}\n\nObject.assign( BufferGeometryLoader.prototype, {\n\n\tload: function ( url, onLoad, onProgress, onError ) {\n\n\t\tvar scope = this;\n\n\t\tvar loader = new FileLoader( scope.manager );\n\t\tloader.load( url, function ( text ) {\n\n\t\t\tonLoad( scope.parse( JSON.parse( text ) ) );\n\n\t\t}, onProgress, onError );\n\n\t},\n\n\tparse: function ( json ) {\n\n\t\tvar geometry = new BufferGeometry();\n\n\t\tvar index = json.data.index;\n\n\t\tvar TYPED_ARRAYS = {\n\t\t\t'Int8Array': Int8Array,\n\t\t\t'Uint8Array': Uint8Array,\n\t\t\t'Uint8ClampedArray': Uint8ClampedArray,\n\t\t\t'Int16Array': Int16Array,\n\t\t\t'Uint16Array': Uint16Array,\n\t\t\t'Int32Array': Int32Array,\n\t\t\t'Uint32Array': Uint32Array,\n\t\t\t'Float32Array': Float32Array,\n\t\t\t'Float64Array': Float64Array\n\t\t};\n\n\t\tif ( index !== undefined ) {\n\n\t\t\tvar typedArray = new TYPED_ARRAYS[ index.type ]( index.array );\n\t\t\tgeometry.setIndex( new BufferAttribute( typedArray, 1 ) );\n\n\t\t}\n\n\t\tvar attributes = json.data.attributes;\n\n\t\tfor ( var key in attributes ) {\n\n\t\t\tvar attribute = attributes[ key ];\n\t\t\tvar typedArray = new TYPED_ARRAYS[ attribute.type ]( attribute.array );\n\n\t\t\tgeometry.addAttribute( key, new BufferAttribute( typedArray, attribute.itemSize, attribute.normalized ) );\n\n\t\t}\n\n\t\tvar groups = json.data.groups || json.data.drawcalls || json.data.offsets;\n\n\t\tif ( groups !== undefined ) {\n\n\t\t\tfor ( var i = 0, n = groups.length; i !== n; ++ i ) {\n\n\t\t\t\tvar group = groups[ i ];\n\n\t\t\t\tgeometry.addGroup( group.start, group.count, group.materialIndex );\n\n\t\t\t}\n\n\t\t}\n\n\t\tvar boundingSphere = json.data.boundingSphere;\n\n\t\tif ( boundingSphere !== undefined ) {\n\n\t\t\tvar center = new Vector3();\n\n\t\t\tif ( boundingSphere.center !== undefined ) {\n\n\t\t\t\tcenter.fromArray( boundingSphere.center );\n\n\t\t\t}\n\n\t\t\tgeometry.boundingSphere = new Sphere( center, boundingSphere.radius );\n\n\t\t}\n\n\t\treturn geometry;\n\n\t}\n\n} );\n\n\nexport { BufferGeometryLoader };\n","import { FaceColors, VertexColors, DoubleSide, BackSide, MirroredRepeatWrapping, RepeatWrapping, BlendingMode } from '../constants';\nimport { _Math } from '../math/Math';\nimport { MaterialLoader } from './MaterialLoader';\nimport { TextureLoader } from './TextureLoader';\nimport { Color } from '../math/Color';\n\n/**\n * @author alteredq / http://alteredqualia.com/\n */\n\nfunction Loader() {\n\n\tthis.onLoadStart = function () {};\n\tthis.onLoadProgress = function () {};\n\tthis.onLoadComplete = function () {};\n\n}\n\nLoader.prototype = {\n\n\tconstructor: Loader,\n\n\tcrossOrigin: undefined,\n\n\textractUrlBase: function ( url ) {\n\n\t\tvar parts = url.split( '/' );\n\n\t\tif ( parts.length === 1 ) return './';\n\n\t\tparts.pop();\n\n\t\treturn parts.join( '/' ) + '/';\n\n\t},\n\n\tinitMaterials: function ( materials, texturePath, crossOrigin ) {\n\n\t\tvar array = [];\n\n\t\tfor ( var i = 0; i < materials.length; ++ i ) {\n\n\t\t\tarray[ i ] = this.createMaterial( materials[ i ], texturePath, crossOrigin );\n\n\t\t}\n\n\t\treturn array;\n\n\t},\n\n\tcreateMaterial: ( function () {\n\n\t\tvar color, textureLoader, materialLoader;\n\n\t\treturn function createMaterial( m, texturePath, crossOrigin ) {\n\n\t\t\tif ( color === undefined ) color = new Color();\n\t\t\tif ( textureLoader === undefined ) textureLoader = new TextureLoader();\n\t\t\tif ( materialLoader === undefined ) materialLoader = new MaterialLoader();\n\n\t\t\t// convert from old material format\n\n\t\t\tvar textures = {};\n\n\t\t\tfunction loadTexture( path, repeat, offset, wrap, anisotropy ) {\n\n\t\t\t\tvar fullPath = texturePath + path;\n\t\t\t\tvar loader = Loader.Handlers.get( fullPath );\n\n\t\t\t\tvar texture;\n\n\t\t\t\tif ( loader !== null ) {\n\n\t\t\t\t\ttexture = loader.load( fullPath );\n\n\t\t\t\t} else {\n\n\t\t\t\t\ttextureLoader.setCrossOrigin( crossOrigin );\n\t\t\t\t\ttexture = textureLoader.load( fullPath );\n\n\t\t\t\t}\n\n\t\t\t\tif ( repeat !== undefined ) {\n\n\t\t\t\t\ttexture.repeat.fromArray( repeat );\n\n\t\t\t\t\tif ( repeat[ 0 ] !== 1 ) texture.wrapS = RepeatWrapping;\n\t\t\t\t\tif ( repeat[ 1 ] !== 1 ) texture.wrapT = RepeatWrapping;\n\n\t\t\t\t}\n\n\t\t\t\tif ( offset !== undefined ) {\n\n\t\t\t\t\ttexture.offset.fromArray( offset );\n\n\t\t\t\t}\n\n\t\t\t\tif ( wrap !== undefined ) {\n\n\t\t\t\t\tif ( wrap[ 0 ] === 'repeat' ) texture.wrapS = RepeatWrapping;\n\t\t\t\t\tif ( wrap[ 0 ] === 'mirror' ) texture.wrapS = MirroredRepeatWrapping;\n\n\t\t\t\t\tif ( wrap[ 1 ] === 'repeat' ) texture.wrapT = RepeatWrapping;\n\t\t\t\t\tif ( wrap[ 1 ] === 'mirror' ) texture.wrapT = MirroredRepeatWrapping;\n\n\t\t\t\t}\n\n\t\t\t\tif ( anisotropy !== undefined ) {\n\n\t\t\t\t\ttexture.anisotropy = anisotropy;\n\n\t\t\t\t}\n\n\t\t\t\tvar uuid = _Math.generateUUID();\n\n\t\t\t\ttextures[ uuid ] = texture;\n\n\t\t\t\treturn uuid;\n\n\t\t\t}\n\n\t\t\t//\n\n\t\t\tvar json = {\n\t\t\t\tuuid: _Math.generateUUID(),\n\t\t\t\ttype: 'MeshLambertMaterial'\n\t\t\t};\n\n\t\t\tfor ( var name in m ) {\n\n\t\t\t\tvar value = m[ name ];\n\n\t\t\t\tswitch ( name ) {\n\t\t\t\t\tcase 'DbgColor':\n\t\t\t\t\tcase 'DbgIndex':\n\t\t\t\t\tcase 'opticalDensity':\n\t\t\t\t\tcase 'illumination':\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tcase 'DbgName':\n\t\t\t\t\t\tjson.name = value;\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tcase 'blending':\n\t\t\t\t\t\tjson.blending = BlendingMode[ value ];\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tcase 'colorAmbient':\n\t\t\t\t\tcase 'mapAmbient':\n\t\t\t\t\t\tconsole.warn( 'THREE.Loader.createMaterial:', name, 'is no longer supported.' );\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tcase 'colorDiffuse':\n\t\t\t\t\t\tjson.color = color.fromArray( value ).getHex();\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tcase 'colorSpecular':\n\t\t\t\t\t\tjson.specular = color.fromArray( value ).getHex();\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tcase 'colorEmissive':\n\t\t\t\t\t\tjson.emissive = color.fromArray( value ).getHex();\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tcase 'specularCoef':\n\t\t\t\t\t\tjson.shininess = value;\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tcase 'shading':\n\t\t\t\t\t\tif ( value.toLowerCase() === 'basic' ) json.type = 'MeshBasicMaterial';\n\t\t\t\t\t\tif ( value.toLowerCase() === 'phong' ) json.type = 'MeshPhongMaterial';\n\t\t\t\t\t\tif ( value.toLowerCase() === 'standard' ) json.type = 'MeshStandardMaterial';\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tcase 'mapDiffuse':\n\t\t\t\t\t\tjson.map = loadTexture( value, m.mapDiffuseRepeat, m.mapDiffuseOffset, m.mapDiffuseWrap, m.mapDiffuseAnisotropy );\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tcase 'mapDiffuseRepeat':\n\t\t\t\t\tcase 'mapDiffuseOffset':\n\t\t\t\t\tcase 'mapDiffuseWrap':\n\t\t\t\t\tcase 'mapDiffuseAnisotropy':\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tcase 'mapEmissive':\n\t\t\t\t\t\tjson.emissiveMap = loadTexture( value, m.mapEmissiveRepeat, m.mapEmissiveOffset, m.mapEmissiveWrap, m.mapEmissiveAnisotropy );\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tcase 'mapEmissiveRepeat':\n\t\t\t\t\tcase 'mapEmissiveOffset':\n\t\t\t\t\tcase 'mapEmissiveWrap':\n\t\t\t\t\tcase 'mapEmissiveAnisotropy':\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tcase 'mapLight':\n\t\t\t\t\t\tjson.lightMap = loadTexture( value, m.mapLightRepeat, m.mapLightOffset, m.mapLightWrap, m.mapLightAnisotropy );\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tcase 'mapLightRepeat':\n\t\t\t\t\tcase 'mapLightOffset':\n\t\t\t\t\tcase 'mapLightWrap':\n\t\t\t\t\tcase 'mapLightAnisotropy':\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tcase 'mapAO':\n\t\t\t\t\t\tjson.aoMap = loadTexture( value, m.mapAORepeat, m.mapAOOffset, m.mapAOWrap, m.mapAOAnisotropy );\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tcase 'mapAORepeat':\n\t\t\t\t\tcase 'mapAOOffset':\n\t\t\t\t\tcase 'mapAOWrap':\n\t\t\t\t\tcase 'mapAOAnisotropy':\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tcase 'mapBump':\n\t\t\t\t\t\tjson.bumpMap = loadTexture( value, m.mapBumpRepeat, m.mapBumpOffset, m.mapBumpWrap, m.mapBumpAnisotropy );\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tcase 'mapBumpScale':\n\t\t\t\t\t\tjson.bumpScale = value;\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tcase 'mapBumpRepeat':\n\t\t\t\t\tcase 'mapBumpOffset':\n\t\t\t\t\tcase 'mapBumpWrap':\n\t\t\t\t\tcase 'mapBumpAnisotropy':\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tcase 'mapNormal':\n\t\t\t\t\t\tjson.normalMap = loadTexture( value, m.mapNormalRepeat, m.mapNormalOffset, m.mapNormalWrap, m.mapNormalAnisotropy );\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tcase 'mapNormalFactor':\n\t\t\t\t\t\tjson.normalScale = [ value, value ];\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tcase 'mapNormalRepeat':\n\t\t\t\t\tcase 'mapNormalOffset':\n\t\t\t\t\tcase 'mapNormalWrap':\n\t\t\t\t\tcase 'mapNormalAnisotropy':\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tcase 'mapSpecular':\n\t\t\t\t\t\tjson.specularMap = loadTexture( value, m.mapSpecularRepeat, m.mapSpecularOffset, m.mapSpecularWrap, m.mapSpecularAnisotropy );\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tcase 'mapSpecularRepeat':\n\t\t\t\t\tcase 'mapSpecularOffset':\n\t\t\t\t\tcase 'mapSpecularWrap':\n\t\t\t\t\tcase 'mapSpecularAnisotropy':\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tcase 'mapMetalness':\n\t\t\t\t\t\tjson.metalnessMap = loadTexture( value, m.mapMetalnessRepeat, m.mapMetalnessOffset, m.mapMetalnessWrap, m.mapMetalnessAnisotropy );\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tcase 'mapMetalnessRepeat':\n\t\t\t\t\tcase 'mapMetalnessOffset':\n\t\t\t\t\tcase 'mapMetalnessWrap':\n\t\t\t\t\tcase 'mapMetalnessAnisotropy':\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tcase 'mapRoughness':\n\t\t\t\t\t\tjson.roughnessMap = loadTexture( value, m.mapRoughnessRepeat, m.mapRoughnessOffset, m.mapRoughnessWrap, m.mapRoughnessAnisotropy );\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tcase 'mapRoughnessRepeat':\n\t\t\t\t\tcase 'mapRoughnessOffset':\n\t\t\t\t\tcase 'mapRoughnessWrap':\n\t\t\t\t\tcase 'mapRoughnessAnisotropy':\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tcase 'mapAlpha':\n\t\t\t\t\t\tjson.alphaMap = loadTexture( value, m.mapAlphaRepeat, m.mapAlphaOffset, m.mapAlphaWrap, m.mapAlphaAnisotropy );\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tcase 'mapAlphaRepeat':\n\t\t\t\t\tcase 'mapAlphaOffset':\n\t\t\t\t\tcase 'mapAlphaWrap':\n\t\t\t\t\tcase 'mapAlphaAnisotropy':\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tcase 'flipSided':\n\t\t\t\t\t\tjson.side = BackSide;\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tcase 'doubleSided':\n\t\t\t\t\t\tjson.side = DoubleSide;\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tcase 'transparency':\n\t\t\t\t\t\tconsole.warn( 'THREE.Loader.createMaterial: transparency has been renamed to opacity' );\n\t\t\t\t\t\tjson.opacity = value;\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tcase 'depthTest':\n\t\t\t\t\tcase 'depthWrite':\n\t\t\t\t\tcase 'colorWrite':\n\t\t\t\t\tcase 'opacity':\n\t\t\t\t\tcase 'reflectivity':\n\t\t\t\t\tcase 'transparent':\n\t\t\t\t\tcase 'visible':\n\t\t\t\t\tcase 'wireframe':\n\t\t\t\t\t\tjson[ name ] = value;\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tcase 'vertexColors':\n\t\t\t\t\t\tif ( value === true ) json.vertexColors = VertexColors;\n\t\t\t\t\t\tif ( value === 'face' ) json.vertexColors = FaceColors;\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tdefault:\n\t\t\t\t\t\tconsole.error( 'THREE.Loader.createMaterial: Unsupported', name, value );\n\t\t\t\t\t\tbreak;\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t\tif ( json.type === 'MeshBasicMaterial' ) delete json.emissive;\n\t\t\tif ( json.type !== 'MeshPhongMaterial' ) delete json.specular;\n\n\t\t\tif ( json.opacity < 1 ) json.transparent = true;\n\n\t\t\tmaterialLoader.setTextures( textures );\n\n\t\t\treturn materialLoader.parse( json );\n\n\t\t};\n\n\t} )()\n\n};\n\nLoader.Handlers = {\n\n\thandlers: [],\n\n\tadd: function ( regex, loader ) {\n\n\t\tthis.handlers.push( regex, loader );\n\n\t},\n\n\tget: function ( file ) {\n\n\t\tvar handlers = this.handlers;\n\n\t\tfor ( var i = 0, l = handlers.length; i < l; i += 2 ) {\n\n\t\t\tvar regex = handlers[ i ];\n\t\t\tvar loader = handlers[ i + 1 ];\n\n\t\t\tif ( regex.test( file ) ) {\n\n\t\t\t\treturn loader;\n\n\t\t\t}\n\n\t\t}\n\n\t\treturn null;\n\n\t}\n\n};\n\n\nexport { Loader };\n","import { Loader } from './Loader';\nimport { AnimationClip } from '../animation/AnimationClip';\nimport { Vector3 } from '../math/Vector3';\nimport { Vector4 } from '../math/Vector4';\nimport { Color } from '../math/Color';\nimport { Vector2 } from '../math/Vector2';\nimport { Face3 } from '../core/Face3';\nimport { Geometry } from '../core/Geometry';\nimport { FileLoader } from './FileLoader';\nimport { DefaultLoadingManager } from './LoadingManager';\n\n/**\n * @author mrdoob / http://mrdoob.com/\n * @author alteredq / http://alteredqualia.com/\n */\n\nfunction JSONLoader( manager ) {\n\n\tif ( typeof manager === 'boolean' ) {\n\n\t\tconsole.warn( 'THREE.JSONLoader: showStatus parameter has been removed from constructor.' );\n\t\tmanager = undefined;\n\n\t}\n\n\tthis.manager = ( manager !== undefined ) ? manager : DefaultLoadingManager;\n\n\tthis.withCredentials = false;\n\n}\n\nObject.assign( JSONLoader.prototype, {\n\n\tload: function( url, onLoad, onProgress, onError ) {\n\n\t\tvar scope = this;\n\n\t\tvar texturePath = this.texturePath && ( typeof this.texturePath === \"string\" ) ? this.texturePath : Loader.prototype.extractUrlBase( url );\n\n\t\tvar loader = new FileLoader( this.manager );\n\t\tloader.setWithCredentials( this.withCredentials );\n\t\tloader.load( url, function ( text ) {\n\n\t\t\tvar json = JSON.parse( text );\n\t\t\tvar metadata = json.metadata;\n\n\t\t\tif ( metadata !== undefined ) {\n\n\t\t\t\tvar type = metadata.type;\n\n\t\t\t\tif ( type !== undefined ) {\n\n\t\t\t\t\tif ( type.toLowerCase() === 'object' ) {\n\n\t\t\t\t\t\tconsole.error( 'THREE.JSONLoader: ' + url + ' should be loaded with THREE.ObjectLoader instead.' );\n\t\t\t\t\t\treturn;\n\n\t\t\t\t\t}\n\n\t\t\t\t\tif ( type.toLowerCase() === 'scene' ) {\n\n\t\t\t\t\t\tconsole.error( 'THREE.JSONLoader: ' + url + ' should be loaded with THREE.SceneLoader instead.' );\n\t\t\t\t\t\treturn;\n\n\t\t\t\t\t}\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t\tvar object = scope.parse( json, texturePath );\n\t\t\tonLoad( object.geometry, object.materials );\n\n\t\t}, onProgress, onError );\n\n\t},\n\n\tsetTexturePath: function ( value ) {\n\n\t\tthis.texturePath = value;\n\n\t},\n\n\tparse: function ( json, texturePath ) {\n\n\t\tvar geometry = new Geometry(),\n\t\tscale = ( json.scale !== undefined ) ? 1.0 / json.scale : 1.0;\n\n\t\tparseModel( scale );\n\n\t\tparseSkin();\n\t\tparseMorphing( scale );\n\t\tparseAnimations();\n\n\t\tgeometry.computeFaceNormals();\n\t\tgeometry.computeBoundingSphere();\n\n\t\tfunction parseModel( scale ) {\n\n\t\t\tfunction isBitSet( value, position ) {\n\n\t\t\t\treturn value & ( 1 << position );\n\n\t\t\t}\n\n\t\t\tvar i, j, fi,\n\n\t\t\toffset, zLength,\n\n\t\tcolorIndex, normalIndex, uvIndex, materialIndex,\n\n\t\t\ttype,\n\t\t\tisQuad,\n\t\t\thasMaterial,\n\t\t\thasFaceVertexUv,\n\t\t\thasFaceNormal, hasFaceVertexNormal,\n\t\t\thasFaceColor, hasFaceVertexColor,\n\n\t\tvertex, face, faceA, faceB, hex, normal,\n\n\t\t\tuvLayer, uv, u, v,\n\n\t\t\tfaces = json.faces,\n\t\t\tvertices = json.vertices,\n\t\t\tnormals = json.normals,\n\t\t\tcolors = json.colors,\n\n\t\t\tnUvLayers = 0;\n\n\t\t\tif ( json.uvs !== undefined ) {\n\n\t\t\t\t// disregard empty arrays\n\n\t\t\t\tfor ( i = 0; i < json.uvs.length; i ++ ) {\n\n\t\t\t\t\tif ( json.uvs[ i ].length ) nUvLayers ++;\n\n\t\t\t\t}\n\n\t\t\t\tfor ( i = 0; i < nUvLayers; i ++ ) {\n\n\t\t\t\t\tgeometry.faceVertexUvs[ i ] = [];\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t\toffset = 0;\n\t\t\tzLength = vertices.length;\n\n\t\t\twhile ( offset < zLength ) {\n\n\t\t\t\tvertex = new Vector3();\n\n\t\t\t\tvertex.x = vertices[ offset ++ ] * scale;\n\t\t\t\tvertex.y = vertices[ offset ++ ] * scale;\n\t\t\t\tvertex.z = vertices[ offset ++ ] * scale;\n\n\t\t\t\tgeometry.vertices.push( vertex );\n\n\t\t\t}\n\n\t\t\toffset = 0;\n\t\t\tzLength = faces.length;\n\n\t\t\twhile ( offset < zLength ) {\n\n\t\t\t\ttype = faces[ offset ++ ];\n\n\n\t\t\t\tisQuad = isBitSet( type, 0 );\n\t\t\t\thasMaterial = isBitSet( type, 1 );\n\t\t\t\thasFaceVertexUv = isBitSet( type, 3 );\n\t\t\t\thasFaceNormal = isBitSet( type, 4 );\n\t\t\t\thasFaceVertexNormal = isBitSet( type, 5 );\n\t\t\t\thasFaceColor\t = isBitSet( type, 6 );\n\t\t\t\thasFaceVertexColor = isBitSet( type, 7 );\n\n\t\t\t\t// console.log(\"type\", type, \"bits\", isQuad, hasMaterial, hasFaceVertexUv, hasFaceNormal, hasFaceVertexNormal, hasFaceColor, hasFaceVertexColor);\n\n\t\t\t\tif ( isQuad ) {\n\n\t\t\t\t\tfaceA = new Face3();\n\t\t\t\t\tfaceA.a = faces[ offset ];\n\t\t\t\t\tfaceA.b = faces[ offset + 1 ];\n\t\t\t\t\tfaceA.c = faces[ offset + 3 ];\n\n\t\t\t\t\tfaceB = new Face3();\n\t\t\t\t\tfaceB.a = faces[ offset + 1 ];\n\t\t\t\t\tfaceB.b = faces[ offset + 2 ];\n\t\t\t\t\tfaceB.c = faces[ offset + 3 ];\n\n\t\t\t\t\toffset += 4;\n\n\t\t\t\t\tif ( hasMaterial ) {\n\n\t\t\t\t\t\tmaterialIndex = faces[ offset ++ ];\n\t\t\t\t\t\tfaceA.materialIndex = materialIndex;\n\t\t\t\t\t\tfaceB.materialIndex = materialIndex;\n\n\t\t\t\t\t}\n\n\t\t\t\t\t// to get face <=> uv index correspondence\n\n\t\t\t\t\tfi = geometry.faces.length;\n\n\t\t\t\t\tif ( hasFaceVertexUv ) {\n\n\t\t\t\t\t\tfor ( i = 0; i < nUvLayers; i ++ ) {\n\n\t\t\t\t\t\t\tuvLayer = json.uvs[ i ];\n\n\t\t\t\t\t\t\tgeometry.faceVertexUvs[ i ][ fi ] = [];\n\t\t\t\t\t\t\tgeometry.faceVertexUvs[ i ][ fi + 1 ] = [];\n\n\t\t\t\t\t\t\tfor ( j = 0; j < 4; j ++ ) {\n\n\t\t\t\t\t\t\t\tuvIndex = faces[ offset ++ ];\n\n\t\t\t\t\t\t\t\tu = uvLayer[ uvIndex * 2 ];\n\t\t\t\t\t\t\t\tv = uvLayer[ uvIndex * 2 + 1 ];\n\n\t\t\t\t\t\t\t\tuv = new Vector2( u, v );\n\n\t\t\t\t\t\t\t\tif ( j !== 2 ) geometry.faceVertexUvs[ i ][ fi ].push( uv );\n\t\t\t\t\t\t\t\tif ( j !== 0 ) geometry.faceVertexUvs[ i ][ fi + 1 ].push( uv );\n\n\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t}\n\n\t\t\t\t\t}\n\n\t\t\t\t\tif ( hasFaceNormal ) {\n\n\t\t\t\t\t\tnormalIndex = faces[ offset ++ ] * 3;\n\n\t\t\t\t\t\tfaceA.normal.set(\n\t\t\t\t\t\t\tnormals[ normalIndex ++ ],\n\t\t\t\t\t\t\tnormals[ normalIndex ++ ],\n\t\t\t\t\t\t\tnormals[ normalIndex ]\n\t\t\t\t\t\t);\n\n\t\t\t\t\t\tfaceB.normal.copy( faceA.normal );\n\n\t\t\t\t\t}\n\n\t\t\t\t\tif ( hasFaceVertexNormal ) {\n\n\t\t\t\t\t\tfor ( i = 0; i < 4; i ++ ) {\n\n\t\t\t\t\t\t\tnormalIndex = faces[ offset ++ ] * 3;\n\n\t\t\t\t\t\t\tnormal = new Vector3(\n\t\t\t\t\t\t\t\tnormals[ normalIndex ++ ],\n\t\t\t\t\t\t\t\tnormals[ normalIndex ++ ],\n\t\t\t\t\t\t\t\tnormals[ normalIndex ]\n\t\t\t\t\t\t\t);\n\n\n\t\t\t\t\t\t\tif ( i !== 2 ) faceA.vertexNormals.push( normal );\n\t\t\t\t\t\t\tif ( i !== 0 ) faceB.vertexNormals.push( normal );\n\n\t\t\t\t\t\t}\n\n\t\t\t\t\t}\n\n\n\t\t\t\t\tif ( hasFaceColor ) {\n\n\t\t\t\t\t\tcolorIndex = faces[ offset ++ ];\n\t\t\t\t\t\thex = colors[ colorIndex ];\n\n\t\t\t\t\t\tfaceA.color.setHex( hex );\n\t\t\t\t\t\tfaceB.color.setHex( hex );\n\n\t\t\t\t\t}\n\n\n\t\t\t\t\tif ( hasFaceVertexColor ) {\n\n\t\t\t\t\t\tfor ( i = 0; i < 4; i ++ ) {\n\n\t\t\t\t\t\t\tcolorIndex = faces[ offset ++ ];\n\t\t\t\t\t\t\thex = colors[ colorIndex ];\n\n\t\t\t\t\t\t\tif ( i !== 2 ) faceA.vertexColors.push( new Color( hex ) );\n\t\t\t\t\t\t\tif ( i !== 0 ) faceB.vertexColors.push( new Color( hex ) );\n\n\t\t\t\t\t\t}\n\n\t\t\t\t\t}\n\n\t\t\t\t\tgeometry.faces.push( faceA );\n\t\t\t\t\tgeometry.faces.push( faceB );\n\n\t\t\t\t} else {\n\n\t\t\t\t\tface = new Face3();\n\t\t\t\t\tface.a = faces[ offset ++ ];\n\t\t\t\t\tface.b = faces[ offset ++ ];\n\t\t\t\t\tface.c = faces[ offset ++ ];\n\n\t\t\t\t\tif ( hasMaterial ) {\n\n\t\t\t\t\t\tmaterialIndex = faces[ offset ++ ];\n\t\t\t\t\t\tface.materialIndex = materialIndex;\n\n\t\t\t\t\t}\n\n\t\t\t\t\t// to get face <=> uv index correspondence\n\n\t\t\t\t\tfi = geometry.faces.length;\n\n\t\t\t\t\tif ( hasFaceVertexUv ) {\n\n\t\t\t\t\t\tfor ( i = 0; i < nUvLayers; i ++ ) {\n\n\t\t\t\t\t\t\tuvLayer = json.uvs[ i ];\n\n\t\t\t\t\t\t\tgeometry.faceVertexUvs[ i ][ fi ] = [];\n\n\t\t\t\t\t\t\tfor ( j = 0; j < 3; j ++ ) {\n\n\t\t\t\t\t\t\t\tuvIndex = faces[ offset ++ ];\n\n\t\t\t\t\t\t\t\tu = uvLayer[ uvIndex * 2 ];\n\t\t\t\t\t\t\t\tv = uvLayer[ uvIndex * 2 + 1 ];\n\n\t\t\t\t\t\t\t\tuv = new Vector2( u, v );\n\n\t\t\t\t\t\t\t\tgeometry.faceVertexUvs[ i ][ fi ].push( uv );\n\n\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t}\n\n\t\t\t\t\t}\n\n\t\t\t\t\tif ( hasFaceNormal ) {\n\n\t\t\t\t\t\tnormalIndex = faces[ offset ++ ] * 3;\n\n\t\t\t\t\t\tface.normal.set(\n\t\t\t\t\t\t\tnormals[ normalIndex ++ ],\n\t\t\t\t\t\t\tnormals[ normalIndex ++ ],\n\t\t\t\t\t\t\tnormals[ normalIndex ]\n\t\t\t\t\t\t);\n\n\t\t\t\t\t}\n\n\t\t\t\t\tif ( hasFaceVertexNormal ) {\n\n\t\t\t\t\t\tfor ( i = 0; i < 3; i ++ ) {\n\n\t\t\t\t\t\t\tnormalIndex = faces[ offset ++ ] * 3;\n\n\t\t\t\t\t\t\tnormal = new Vector3(\n\t\t\t\t\t\t\t\tnormals[ normalIndex ++ ],\n\t\t\t\t\t\t\t\tnormals[ normalIndex ++ ],\n\t\t\t\t\t\t\t\tnormals[ normalIndex ]\n\t\t\t\t\t\t\t);\n\n\t\t\t\t\t\t\tface.vertexNormals.push( normal );\n\n\t\t\t\t\t\t}\n\n\t\t\t\t\t}\n\n\n\t\t\t\t\tif ( hasFaceColor ) {\n\n\t\t\t\t\t\tcolorIndex = faces[ offset ++ ];\n\t\t\t\t\t\tface.color.setHex( colors[ colorIndex ] );\n\n\t\t\t\t\t}\n\n\n\t\t\t\t\tif ( hasFaceVertexColor ) {\n\n\t\t\t\t\t\tfor ( i = 0; i < 3; i ++ ) {\n\n\t\t\t\t\t\t\tcolorIndex = faces[ offset ++ ];\n\t\t\t\t\t\t\tface.vertexColors.push( new Color( colors[ colorIndex ] ) );\n\n\t\t\t\t\t\t}\n\n\t\t\t\t\t}\n\n\t\t\t\t\tgeometry.faces.push( face );\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t}\n\n\t\tfunction parseSkin() {\n\n\t\t\tvar influencesPerVertex = ( json.influencesPerVertex !== undefined ) ? json.influencesPerVertex : 2;\n\n\t\t\tif ( json.skinWeights ) {\n\n\t\t\t\tfor ( var i = 0, l = json.skinWeights.length; i < l; i += influencesPerVertex ) {\n\n\t\t\t\t\tvar x = json.skinWeights[ i ];\n\t\t\t\t\tvar y = ( influencesPerVertex > 1 ) ? json.skinWeights[ i + 1 ] : 0;\n\t\t\t\t\tvar z = ( influencesPerVertex > 2 ) ? json.skinWeights[ i + 2 ] : 0;\n\t\t\t\t\tvar w = ( influencesPerVertex > 3 ) ? json.skinWeights[ i + 3 ] : 0;\n\n\t\t\t\t\tgeometry.skinWeights.push( new Vector4( x, y, z, w ) );\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t\tif ( json.skinIndices ) {\n\n\t\t\t\tfor ( var i = 0, l = json.skinIndices.length; i < l; i += influencesPerVertex ) {\n\n\t\t\t\t\tvar a = json.skinIndices[ i ];\n\t\t\t\t\tvar b = ( influencesPerVertex > 1 ) ? json.skinIndices[ i + 1 ] : 0;\n\t\t\t\t\tvar c = ( influencesPerVertex > 2 ) ? json.skinIndices[ i + 2 ] : 0;\n\t\t\t\t\tvar d = ( influencesPerVertex > 3 ) ? json.skinIndices[ i + 3 ] : 0;\n\n\t\t\t\t\tgeometry.skinIndices.push( new Vector4( a, b, c, d ) );\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t\tgeometry.bones = json.bones;\n\n\t\t\tif ( geometry.bones && geometry.bones.length > 0 && ( geometry.skinWeights.length !== geometry.skinIndices.length || geometry.skinIndices.length !== geometry.vertices.length ) ) {\n\n\t\t\t\tconsole.warn( 'When skinning, number of vertices (' + geometry.vertices.length + '), skinIndices (' +\n\t\t\t\t\tgeometry.skinIndices.length + '), and skinWeights (' + geometry.skinWeights.length + ') should match.' );\n\n\t\t\t}\n\n\t\t}\n\n\t\tfunction parseMorphing( scale ) {\n\n\t\t\tif ( json.morphTargets !== undefined ) {\n\n\t\t\t\tfor ( var i = 0, l = json.morphTargets.length; i < l; i ++ ) {\n\n\t\t\t\t\tgeometry.morphTargets[ i ] = {};\n\t\t\t\t\tgeometry.morphTargets[ i ].name = json.morphTargets[ i ].name;\n\t\t\t\t\tgeometry.morphTargets[ i ].vertices = [];\n\n\t\t\t\t\tvar dstVertices = geometry.morphTargets[ i ].vertices;\n\t\t\t\t\tvar srcVertices = json.morphTargets[ i ].vertices;\n\n\t\t\t\t\tfor ( var v = 0, vl = srcVertices.length; v < vl; v += 3 ) {\n\n\t\t\t\t\t\tvar vertex = new Vector3();\n\t\t\t\t\t\tvertex.x = srcVertices[ v ] * scale;\n\t\t\t\t\t\tvertex.y = srcVertices[ v + 1 ] * scale;\n\t\t\t\t\t\tvertex.z = srcVertices[ v + 2 ] * scale;\n\n\t\t\t\t\t\tdstVertices.push( vertex );\n\n\t\t\t\t\t}\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t\tif ( json.morphColors !== undefined && json.morphColors.length > 0 ) {\n\n\t\t\t\tconsole.warn( 'THREE.JSONLoader: \"morphColors\" no longer supported. Using them as face colors.' );\n\n\t\t\t\tvar faces = geometry.faces;\n\t\t\t\tvar morphColors = json.morphColors[ 0 ].colors;\n\n\t\t\t\tfor ( var i = 0, l = faces.length; i < l; i ++ ) {\n\n\t\t\t\t\tfaces[ i ].color.fromArray( morphColors, i * 3 );\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t}\n\n\t\tfunction parseAnimations() {\n\n\t\t\tvar outputAnimations = [];\n\n\t\t\t// parse old style Bone/Hierarchy animations\n\t\t\tvar animations = [];\n\n\t\t\tif ( json.animation !== undefined ) {\n\n\t\t\t\tanimations.push( json.animation );\n\n\t\t\t}\n\n\t\t\tif ( json.animations !== undefined ) {\n\n\t\t\t\tif ( json.animations.length ) {\n\n\t\t\t\t\tanimations = animations.concat( json.animations );\n\n\t\t\t\t} else {\n\n\t\t\t\t\tanimations.push( json.animations );\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t\tfor ( var i = 0; i < animations.length; i ++ ) {\n\n\t\t\t\tvar clip = AnimationClip.parseAnimation( animations[ i ], geometry.bones );\n\t\t\t\tif ( clip ) outputAnimations.push( clip );\n\n\t\t\t}\n\n\t\t\t// parse implicit morph animations\n\t\t\tif ( geometry.morphTargets ) {\n\n\t\t\t\t// TODO: Figure out what an appropraite FPS is for morph target animations -- defaulting to 10, but really it is completely arbitrary.\n\t\t\t\tvar morphAnimationClips = AnimationClip.CreateClipsFromMorphTargetSequences( geometry.morphTargets, 10 );\n\t\t\t\toutputAnimations = outputAnimations.concat( morphAnimationClips );\n\n\t\t\t}\n\n\t\t\tif ( outputAnimations.length > 0 ) geometry.animations = outputAnimations;\n\n\t\t}\n\n\t\tif ( json.materials === undefined || json.materials.length === 0 ) {\n\n\t\t\treturn { geometry: geometry };\n\n\t\t} else {\n\n\t\t\tvar materials = Loader.prototype.initMaterials( json.materials, texturePath, this.crossOrigin );\n\n\t\t\treturn { geometry: geometry, materials: materials };\n\n\t\t}\n\n\t}\n\n} );\n\n\nexport { JSONLoader };\n","import { TextureMapping, TextureWrapping, TextureFilter } from '../constants';\nimport { Color } from '../math/Color';\nimport { Matrix4 } from '../math/Matrix4';\nimport { Object3D } from '../core/Object3D';\nimport { Group } from '../objects/Group';\nimport { Sprite } from '../objects/Sprite';\nimport { Points } from '../objects/Points';\nimport { Line } from '../objects/Line';\nimport { LineSegments } from '../objects/LineSegments';\nimport { LOD } from '../objects/LOD';\nimport { Mesh } from '../objects/Mesh';\nimport { SkinnedMesh } from '../objects/SkinnedMesh';\nimport { Fog } from '../scenes/Fog';\nimport { FogExp2 } from '../scenes/FogExp2';\nimport { HemisphereLight } from '../lights/HemisphereLight';\nimport { SpotLight } from '../lights/SpotLight';\nimport { PointLight } from '../lights/PointLight';\nimport { DirectionalLight } from '../lights/DirectionalLight';\nimport { AmbientLight } from '../lights/AmbientLight';\nimport { OrthographicCamera } from '../cameras/OrthographicCamera';\nimport { PerspectiveCamera } from '../cameras/PerspectiveCamera';\nimport { Scene } from '../scenes/Scene';\nimport { Texture } from '../textures/Texture';\nimport { ImageLoader } from './ImageLoader';\nimport { LoadingManager, DefaultLoadingManager } from './LoadingManager';\nimport { AnimationClip } from '../animation/AnimationClip';\nimport { MaterialLoader } from './MaterialLoader';\nimport { BufferGeometryLoader } from './BufferGeometryLoader';\nimport { JSONLoader } from './JSONLoader';\nimport { FileLoader } from './FileLoader';\nimport * as Geometries from '../geometries/Geometries';\n\n/**\n * @author mrdoob / http://mrdoob.com/\n */\n\nfunction ObjectLoader ( manager ) {\n\n\tthis.manager = ( manager !== undefined ) ? manager : DefaultLoadingManager;\n\tthis.texturePath = '';\n\n}\n\nObject.assign( ObjectLoader.prototype, {\n\n\tload: function ( url, onLoad, onProgress, onError ) {\n\n\t\tif ( this.texturePath === '' ) {\n\n\t\t\tthis.texturePath = url.substring( 0, url.lastIndexOf( '/' ) + 1 );\n\n\t\t}\n\n\t\tvar scope = this;\n\n\t\tvar loader = new FileLoader( scope.manager );\n\t\tloader.load( url, function ( text ) {\n\n\t\t\tvar json = null;\n\n\t\t\ttry {\n\n\t\t\t\tjson = JSON.parse( text );\n\n\t\t\t} catch ( error ) {\n\n\t\t\t\tconsole.error( 'THREE:ObjectLoader: Can\\'t parse ' + url + '.', error.message );\n\t\t\t\treturn;\n\n\t\t\t}\n\n\t\t\tvar metadata = json.metadata;\n\n\t\t\tif ( metadata === undefined || metadata.type === undefined || metadata.type.toLowerCase() === 'geometry' ) {\n\n\t\t\t\tconsole.error( 'THREE.ObjectLoader: Can\\'t load ' + url + '. Use THREE.JSONLoader instead.' );\n\t\t\t\treturn;\n\n\t\t\t}\n\n\t\t\tscope.parse( json, onLoad );\n\n\t\t}, onProgress, onError );\n\n\t},\n\n\tsetTexturePath: function ( value ) {\n\n\t\tthis.texturePath = value;\n\n\t},\n\n\tsetCrossOrigin: function ( value ) {\n\n\t\tthis.crossOrigin = value;\n\n\t},\n\n\tparse: function ( json, onLoad ) {\n\n\t\tvar geometries = this.parseGeometries( json.geometries );\n\n\t\tvar images = this.parseImages( json.images, function () {\n\n\t\t\tif ( onLoad !== undefined ) onLoad( object );\n\n\t\t} );\n\n\t\tvar textures = this.parseTextures( json.textures, images );\n\t\tvar materials = this.parseMaterials( json.materials, textures );\n\n\t\tvar object = this.parseObject( json.object, geometries, materials );\n\n\t\tif ( json.animations ) {\n\n\t\t\tobject.animations = this.parseAnimations( json.animations );\n\n\t\t}\n\n\t\tif ( json.images === undefined || json.images.length === 0 ) {\n\n\t\t\tif ( onLoad !== undefined ) onLoad( object );\n\n\t\t}\n\n\t\treturn object;\n\n\t},\n\n\tparseGeometries: function ( json ) {\n\n\t\tvar geometries = {};\n\n\t\tif ( json !== undefined ) {\n\n\t\t\tvar geometryLoader = new JSONLoader();\n\t\t\tvar bufferGeometryLoader = new BufferGeometryLoader();\n\n\t\t\tfor ( var i = 0, l = json.length; i < l; i ++ ) {\n\n\t\t\t\tvar geometry;\n\t\t\t\tvar data = json[ i ];\n\n\t\t\t\tswitch ( data.type ) {\n\n\t\t\t\t\tcase 'PlaneGeometry':\n\t\t\t\t\tcase 'PlaneBufferGeometry':\n\n\t\t\t\t\t\tgeometry = new Geometries[ data.type ](\n\t\t\t\t\t\t\tdata.width,\n\t\t\t\t\t\t\tdata.height,\n\t\t\t\t\t\t\tdata.widthSegments,\n\t\t\t\t\t\t\tdata.heightSegments\n\t\t\t\t\t\t);\n\n\t\t\t\t\t\tbreak;\n\n\t\t\t\t\tcase 'BoxGeometry':\n\t\t\t\t\tcase 'BoxBufferGeometry':\n\t\t\t\t\tcase 'CubeGeometry': // backwards compatible\n\n\t\t\t\t\t\tgeometry = new Geometries[ data.type ](\n\t\t\t\t\t\t\tdata.width,\n\t\t\t\t\t\t\tdata.height,\n\t\t\t\t\t\t\tdata.depth,\n\t\t\t\t\t\t\tdata.widthSegments,\n\t\t\t\t\t\t\tdata.heightSegments,\n\t\t\t\t\t\t\tdata.depthSegments\n\t\t\t\t\t\t);\n\n\t\t\t\t\t\tbreak;\n\n\t\t\t\t\tcase 'CircleGeometry':\n\t\t\t\t\tcase 'CircleBufferGeometry':\n\n\t\t\t\t\t\tgeometry = new Geometries[ data.type ](\n\t\t\t\t\t\t\tdata.radius,\n\t\t\t\t\t\t\tdata.segments,\n\t\t\t\t\t\t\tdata.thetaStart,\n\t\t\t\t\t\t\tdata.thetaLength\n\t\t\t\t\t\t);\n\n\t\t\t\t\t\tbreak;\n\n\t\t\t\t\tcase 'CylinderGeometry':\n\t\t\t\t\tcase 'CylinderBufferGeometry':\n\n\t\t\t\t\t\tgeometry = new Geometries[ data.type ](\n\t\t\t\t\t\t\tdata.radiusTop,\n\t\t\t\t\t\t\tdata.radiusBottom,\n\t\t\t\t\t\t\tdata.height,\n\t\t\t\t\t\t\tdata.radialSegments,\n\t\t\t\t\t\t\tdata.heightSegments,\n\t\t\t\t\t\t\tdata.openEnded,\n\t\t\t\t\t\t\tdata.thetaStart,\n\t\t\t\t\t\t\tdata.thetaLength\n\t\t\t\t\t\t);\n\n\t\t\t\t\t\tbreak;\n\n\t\t\t\t\tcase 'ConeGeometry':\n\t\t\t\t\tcase 'ConeBufferGeometry':\n\n\t\t\t\t\t\tgeometry = new Geometries[ data.type ](\n\t\t\t\t\t\t\tdata.radius,\n\t\t\t\t\t\t\tdata.height,\n\t\t\t\t\t\t\tdata.radialSegments,\n\t\t\t\t\t\t\tdata.heightSegments,\n\t\t\t\t\t\t\tdata.openEnded,\n\t\t\t\t\t\t\tdata.thetaStart,\n\t\t\t\t\t\t\tdata.thetaLength\n\t\t\t\t\t\t);\n\n\t\t\t\t\t\tbreak;\n\n\t\t\t\t\tcase 'SphereGeometry':\n\t\t\t\t\tcase 'SphereBufferGeometry':\n\n\t\t\t\t\t\tgeometry = new Geometries[ data.type ](\n\t\t\t\t\t\t\tdata.radius,\n\t\t\t\t\t\t\tdata.widthSegments,\n\t\t\t\t\t\t\tdata.heightSegments,\n\t\t\t\t\t\t\tdata.phiStart,\n\t\t\t\t\t\t\tdata.phiLength,\n\t\t\t\t\t\t\tdata.thetaStart,\n\t\t\t\t\t\t\tdata.thetaLength\n\t\t\t\t\t\t);\n\n\t\t\t\t\t\tbreak;\n\n\t\t\t\t\tcase 'DodecahedronGeometry':\n\t\t\t\t\tcase 'IcosahedronGeometry':\n\t\t\t\t\tcase 'OctahedronGeometry':\n\t\t\t\t\tcase 'TetrahedronGeometry':\n\n\t\t\t\t\t\tgeometry = new Geometries[ data.type ](\n\t\t\t\t\t\t\tdata.radius,\n\t\t\t\t\t\t\tdata.detail\n\t\t\t\t\t\t);\n\n\t\t\t\t\t\tbreak;\n\n\t\t\t\t\tcase 'RingGeometry':\n\t\t\t\t\tcase 'RingBufferGeometry':\n\n\t\t\t\t\t\tgeometry = new Geometries[ data.type ](\n\t\t\t\t\t\t\tdata.innerRadius,\n\t\t\t\t\t\t\tdata.outerRadius,\n\t\t\t\t\t\t\tdata.thetaSegments,\n\t\t\t\t\t\t\tdata.phiSegments,\n\t\t\t\t\t\t\tdata.thetaStart,\n\t\t\t\t\t\t\tdata.thetaLength\n\t\t\t\t\t\t);\n\n\t\t\t\t\t\tbreak;\n\n\t\t\t\t\tcase 'TorusGeometry':\n\t\t\t\t\tcase 'TorusBufferGeometry':\n\n\t\t\t\t\t\tgeometry = new Geometries[ data.type ](\n\t\t\t\t\t\t\tdata.radius,\n\t\t\t\t\t\t\tdata.tube,\n\t\t\t\t\t\t\tdata.radialSegments,\n\t\t\t\t\t\t\tdata.tubularSegments,\n\t\t\t\t\t\t\tdata.arc\n\t\t\t\t\t\t);\n\n\t\t\t\t\t\tbreak;\n\n\t\t\t\t\tcase 'TorusKnotGeometry':\n\t\t\t\t\tcase 'TorusKnotBufferGeometry':\n\n\t\t\t\t\t\tgeometry = new Geometries[ data.type ](\n\t\t\t\t\t\t\tdata.radius,\n\t\t\t\t\t\t\tdata.tube,\n\t\t\t\t\t\t\tdata.tubularSegments,\n\t\t\t\t\t\t\tdata.radialSegments,\n\t\t\t\t\t\t\tdata.p,\n\t\t\t\t\t\t\tdata.q\n\t\t\t\t\t\t);\n\n\t\t\t\t\t\tbreak;\n\n\t\t\t\t\tcase 'LatheGeometry':\n\t\t\t\t\tcase 'LatheBufferGeometry':\n\n\t\t\t\t\t\tgeometry = new Geometries[ data.type ](\n\t\t\t\t\t\t\tdata.points,\n\t\t\t\t\t\t\tdata.segments,\n\t\t\t\t\t\t\tdata.phiStart,\n\t\t\t\t\t\t\tdata.phiLength\n\t\t\t\t\t\t);\n\n\t\t\t\t\t\tbreak;\n\n\t\t\t\t\tcase 'BufferGeometry':\n\n\t\t\t\t\t\tgeometry = bufferGeometryLoader.parse( data );\n\n\t\t\t\t\t\tbreak;\n\n\t\t\t\t\tcase 'Geometry':\n\n\t\t\t\t\t\tgeometry = geometryLoader.parse( data.data, this.texturePath ).geometry;\n\n\t\t\t\t\t\tbreak;\n\n\t\t\t\t\tdefault:\n\n\t\t\t\t\t\tconsole.warn( 'THREE.ObjectLoader: Unsupported geometry type \"' + data.type + '\"' );\n\n\t\t\t\t\t\tcontinue;\n\n\t\t\t\t}\n\n\t\t\t\tgeometry.uuid = data.uuid;\n\n\t\t\t\tif ( data.name !== undefined ) geometry.name = data.name;\n\n\t\t\t\tgeometries[ data.uuid ] = geometry;\n\n\t\t\t}\n\n\t\t}\n\n\t\treturn geometries;\n\n\t},\n\n\tparseMaterials: function ( json, textures ) {\n\n\t\tvar materials = {};\n\n\t\tif ( json !== undefined ) {\n\n\t\t\tvar loader = new MaterialLoader();\n\t\t\tloader.setTextures( textures );\n\n\t\t\tfor ( var i = 0, l = json.length; i < l; i ++ ) {\n\n\t\t\t\tvar material = loader.parse( json[ i ] );\n\t\t\t\tmaterials[ material.uuid ] = material;\n\n\t\t\t}\n\n\t\t}\n\n\t\treturn materials;\n\n\t},\n\n\tparseAnimations: function ( json ) {\n\n\t\tvar animations = [];\n\n\t\tfor ( var i = 0; i < json.length; i ++ ) {\n\n\t\t\tvar clip = AnimationClip.parse( json[ i ] );\n\n\t\t\tanimations.push( clip );\n\n\t\t}\n\n\t\treturn animations;\n\n\t},\n\n\tparseImages: function ( json, onLoad ) {\n\n\t\tvar scope = this;\n\t\tvar images = {};\n\n\t\tfunction loadImage( url ) {\n\n\t\t\tscope.manager.itemStart( url );\n\n\t\t\treturn loader.load( url, function () {\n\n\t\t\t\tscope.manager.itemEnd( url );\n\n\t\t\t}, undefined, function () {\n\n\t\t\t\tscope.manager.itemError( url );\n\n\t\t\t} );\n\n\t\t}\n\n\t\tif ( json !== undefined && json.length > 0 ) {\n\n\t\t\tvar manager = new LoadingManager( onLoad );\n\n\t\t\tvar loader = new ImageLoader( manager );\n\t\t\tloader.setCrossOrigin( this.crossOrigin );\n\n\t\t\tfor ( var i = 0, l = json.length; i < l; i ++ ) {\n\n\t\t\t\tvar image = json[ i ];\n\t\t\t\tvar path = /^(\\/\\/)|([a-z]+:(\\/\\/)?)/i.test( image.url ) ? image.url : scope.texturePath + image.url;\n\n\t\t\t\timages[ image.uuid ] = loadImage( path );\n\n\t\t\t}\n\n\t\t}\n\n\t\treturn images;\n\n\t},\n\n\tparseTextures: function ( json, images ) {\n\n\t\tfunction parseConstant( value, type ) {\n\n\t\t\tif ( typeof( value ) === 'number' ) return value;\n\n\t\t\tconsole.warn( 'THREE.ObjectLoader.parseTexture: Constant should be in numeric form.', value );\n\n\t\t\treturn type[ value ];\n\n\t\t}\n\n\t\tvar textures = {};\n\n\t\tif ( json !== undefined ) {\n\n\t\t\tfor ( var i = 0, l = json.length; i < l; i ++ ) {\n\n\t\t\t\tvar data = json[ i ];\n\n\t\t\t\tif ( data.image === undefined ) {\n\n\t\t\t\t\tconsole.warn( 'THREE.ObjectLoader: No \"image\" specified for', data.uuid );\n\n\t\t\t\t}\n\n\t\t\t\tif ( images[ data.image ] === undefined ) {\n\n\t\t\t\t\tconsole.warn( 'THREE.ObjectLoader: Undefined image', data.image );\n\n\t\t\t\t}\n\n\t\t\t\tvar texture = new Texture( images[ data.image ] );\n\t\t\t\ttexture.needsUpdate = true;\n\n\t\t\t\ttexture.uuid = data.uuid;\n\n\t\t\t\tif ( data.name !== undefined ) texture.name = data.name;\n\n\t\t\t\tif ( data.mapping !== undefined ) texture.mapping = parseConstant( data.mapping, TextureMapping );\n\n\t\t\t\tif ( data.offset !== undefined ) texture.offset.fromArray( data.offset );\n\t\t\t\tif ( data.repeat !== undefined ) texture.repeat.fromArray( data.repeat );\n\t\t\t\tif ( data.wrap !== undefined ) {\n\n\t\t\t\t\ttexture.wrapS = parseConstant( data.wrap[ 0 ], TextureWrapping );\n\t\t\t\t\ttexture.wrapT = parseConstant( data.wrap[ 1 ], TextureWrapping );\n\n\t\t\t\t}\n\n\t\t\t\tif ( data.minFilter !== undefined ) texture.minFilter = parseConstant( data.minFilter, TextureFilter );\n\t\t\t\tif ( data.magFilter !== undefined ) texture.magFilter = parseConstant( data.magFilter, TextureFilter );\n\t\t\t\tif ( data.anisotropy !== undefined ) texture.anisotropy = data.anisotropy;\n\n\t\t\t\tif ( data.flipY !== undefined ) texture.flipY = data.flipY;\n\n\t\t\t\ttextures[ data.uuid ] = texture;\n\n\t\t\t}\n\n\t\t}\n\n\t\treturn textures;\n\n\t},\n\n\tparseObject: function () {\n\n\t\tvar matrix = new Matrix4();\n\n\t\treturn function parseObject( data, geometries, materials ) {\n\n\t\t\tvar object;\n\n\t\t\tfunction getGeometry( name ) {\n\n\t\t\t\tif ( geometries[ name ] === undefined ) {\n\n\t\t\t\t\tconsole.warn( 'THREE.ObjectLoader: Undefined geometry', name );\n\n\t\t\t\t}\n\n\t\t\t\treturn geometries[ name ];\n\n\t\t\t}\n\n\t\t\tfunction getMaterial( name ) {\n\n\t\t\t\tif ( name === undefined ) return undefined;\n\n\t\t\t\tif ( materials[ name ] === undefined ) {\n\n\t\t\t\t\tconsole.warn( 'THREE.ObjectLoader: Undefined material', name );\n\n\t\t\t\t}\n\n\t\t\t\treturn materials[ name ];\n\n\t\t\t}\n\n\t\t\tswitch ( data.type ) {\n\n\t\t\t\tcase 'Scene':\n\n\t\t\t\t\tobject = new Scene();\n\n\t\t\t\t\tif ( data.background !== undefined ) {\n\n\t\t\t\t\t\tif ( Number.isInteger( data.background ) ) {\n\n\t\t\t\t\t\t\tobject.background = new Color( data.background );\n\n\t\t\t\t\t\t}\n\n\t\t\t\t\t}\n\n\t\t\t\t\tif ( data.fog !== undefined ) {\n\n\t\t\t\t\t\tif ( data.fog.type === 'Fog' ) {\n\n\t\t\t\t\t\t\tobject.fog = new Fog( data.fog.color, data.fog.near, data.fog.far );\n\n\t\t\t\t\t\t} else if ( data.fog.type === 'FogExp2' ) {\n\n\t\t\t\t\t\t\tobject.fog = new FogExp2( data.fog.color, data.fog.density );\n\n\t\t\t\t\t\t}\n\n\t\t\t\t\t}\n\n\t\t\t\t\tbreak;\n\n\t\t\t\tcase 'PerspectiveCamera':\n\n\t\t\t\t\tobject = new PerspectiveCamera( data.fov, data.aspect, data.near, data.far );\n\n\t\t\t\t\tif ( data.focus !== undefined ) object.focus = data.focus;\n\t\t\t\t\tif ( data.zoom !== undefined ) object.zoom = data.zoom;\n\t\t\t\t\tif ( data.filmGauge !== undefined ) object.filmGauge = data.filmGauge;\n\t\t\t\t\tif ( data.filmOffset !== undefined ) object.filmOffset = data.filmOffset;\n\t\t\t\t\tif ( data.view !== undefined ) object.view = Object.assign( {}, data.view );\n\n\t\t\t\t\tbreak;\n\n\t\t\t\tcase 'OrthographicCamera':\n\n\t\t\t\t\tobject = new OrthographicCamera( data.left, data.right, data.top, data.bottom, data.near, data.far );\n\n\t\t\t\t\tbreak;\n\n\t\t\t\tcase 'AmbientLight':\n\n\t\t\t\t\tobject = new AmbientLight( data.color, data.intensity );\n\n\t\t\t\t\tbreak;\n\n\t\t\t\tcase 'DirectionalLight':\n\n\t\t\t\t\tobject = new DirectionalLight( data.color, data.intensity );\n\n\t\t\t\t\tbreak;\n\n\t\t\t\tcase 'PointLight':\n\n\t\t\t\t\tobject = new PointLight( data.color, data.intensity, data.distance, data.decay );\n\n\t\t\t\t\tbreak;\n\n\t\t\t\tcase 'SpotLight':\n\n\t\t\t\t\tobject = new SpotLight( data.color, data.intensity, data.distance, data.angle, data.penumbra, data.decay );\n\n\t\t\t\t\tbreak;\n\n\t\t\t\tcase 'HemisphereLight':\n\n\t\t\t\t\tobject = new HemisphereLight( data.color, data.groundColor, data.intensity );\n\n\t\t\t\t\tbreak;\n\n\t\t\t\tcase 'Mesh':\n\n\t\t\t\t\tvar geometry = getGeometry( data.geometry );\n\t\t\t\t\tvar material = getMaterial( data.material );\n\n\t\t\t\t\tif ( geometry.bones && geometry.bones.length > 0 ) {\n\n\t\t\t\t\t\tobject = new SkinnedMesh( geometry, material );\n\n\t\t\t\t\t} else {\n\n\t\t\t\t\t\tobject = new Mesh( geometry, material );\n\n\t\t\t\t\t}\n\n\t\t\t\t\tbreak;\n\n\t\t\t\tcase 'LOD':\n\n\t\t\t\t\tobject = new LOD();\n\n\t\t\t\t\tbreak;\n\n\t\t\t\tcase 'Line':\n\n\t\t\t\t\tobject = new Line( getGeometry( data.geometry ), getMaterial( data.material ), data.mode );\n\n\t\t\t\t\tbreak;\n\n\t\t\t\tcase 'LineSegments':\n\n\t\t\t\t\tobject = new LineSegments( getGeometry( data.geometry ), getMaterial( data.material ) );\n\n\t\t\t\t\tbreak;\n\n\t\t\t\tcase 'PointCloud':\n\t\t\t\tcase 'Points':\n\n\t\t\t\t\tobject = new Points( getGeometry( data.geometry ), getMaterial( data.material ) );\n\n\t\t\t\t\tbreak;\n\n\t\t\t\tcase 'Sprite':\n\n\t\t\t\t\tobject = new Sprite( getMaterial( data.material ) );\n\n\t\t\t\t\tbreak;\n\n\t\t\t\tcase 'Group':\n\n\t\t\t\t\tobject = new Group();\n\n\t\t\t\t\tbreak;\n\n\t\t\t\tdefault:\n\n\t\t\t\t\tobject = new Object3D();\n\n\t\t\t}\n\n\t\t\tobject.uuid = data.uuid;\n\n\t\t\tif ( data.name !== undefined ) object.name = data.name;\n\t\t\tif ( data.matrix !== undefined ) {\n\n\t\t\t\tmatrix.fromArray( data.matrix );\n\t\t\t\tmatrix.decompose( object.position, object.quaternion, object.scale );\n\n\t\t\t} else {\n\n\t\t\t\tif ( data.position !== undefined ) object.position.fromArray( data.position );\n\t\t\t\tif ( data.rotation !== undefined ) object.rotation.fromArray( data.rotation );\n\t\t\t\tif ( data.quaternion !== undefined ) object.quaternion.fromArray( data.quaternion );\n\t\t\t\tif ( data.scale !== undefined ) object.scale.fromArray( data.scale );\n\n\t\t\t}\n\n\t\t\tif ( data.castShadow !== undefined ) object.castShadow = data.castShadow;\n\t\t\tif ( data.receiveShadow !== undefined ) object.receiveShadow = data.receiveShadow;\n\n\t\t\tif ( data.shadow ) {\n\n\t\t\t\tif ( data.shadow.bias !== undefined ) object.shadow.bias = data.shadow.bias;\n\t\t\t\tif ( data.shadow.radius !== undefined ) object.shadow.radius = data.shadow.radius;\n\t\t\t\tif ( data.shadow.mapSize !== undefined ) object.shadow.mapSize.fromArray( data.shadow.mapSize );\n\t\t\t\tif ( data.shadow.camera !== undefined ) object.shadow.camera = this.parseObject( data.shadow.camera );\n\n\t\t\t}\n\n\t\t\tif ( data.visible !== undefined ) object.visible = data.visible;\n\t\t\tif ( data.userData !== undefined ) object.userData = data.userData;\n\n\t\t\tif ( data.children !== undefined ) {\n\n\t\t\t\tfor ( var child in data.children ) {\n\n\t\t\t\t\tobject.add( this.parseObject( data.children[ child ], geometries, materials ) );\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t\tif ( data.type === 'LOD' ) {\n\n\t\t\t\tvar levels = data.levels;\n\n\t\t\t\tfor ( var l = 0; l < levels.length; l ++ ) {\n\n\t\t\t\t\tvar level = levels[ l ];\n\t\t\t\t\tvar child = object.getObjectByProperty( 'uuid', level.object );\n\n\t\t\t\t\tif ( child !== undefined ) {\n\n\t\t\t\t\t\tobject.addLevel( child, level.distance );\n\n\t\t\t\t\t}\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t\treturn object;\n\n\t\t};\n\n\t}()\n\n} );\n\n\nexport { ObjectLoader };\n","import { _Math } from '../../math/Math';\nimport { Vector3 } from '../../math/Vector3';\nimport { Matrix4 } from '../../math/Matrix4';\n\n/**\n * @author zz85 / http://www.lab4games.net/zz85/blog\n * Extensible curve object\n *\n * Some common of Curve methods\n * .getPoint(t), getTangent(t)\n * .getPointAt(u), getTangentAt(u)\n * .getPoints(), .getSpacedPoints()\n * .getLength()\n * .updateArcLengths()\n *\n * This following classes subclasses THREE.Curve:\n *\n * -- 2d classes --\n * THREE.LineCurve\n * THREE.QuadraticBezierCurve\n * THREE.CubicBezierCurve\n * THREE.SplineCurve\n * THREE.ArcCurve\n * THREE.EllipseCurve\n *\n * -- 3d classes --\n * THREE.LineCurve3\n * THREE.QuadraticBezierCurve3\n * THREE.CubicBezierCurve3\n * THREE.SplineCurve3\n *\n * A series of curves can be represented as a THREE.CurvePath\n *\n **/\n\n/**************************************************************\n *\tAbstract Curve base class\n **************************************************************/\n\nfunction Curve() {}\n\nCurve.prototype = {\n\n\tconstructor: Curve,\n\n\t// Virtual base class method to overwrite and implement in subclasses\n\t//\t- t [0 .. 1]\n\n\tgetPoint: function ( t ) {\n\n\t\tconsole.warn( \"THREE.Curve: Warning, getPoint() not implemented!\" );\n\t\treturn null;\n\n\t},\n\n\t// Get point at relative position in curve according to arc length\n\t// - u [0 .. 1]\n\n\tgetPointAt: function ( u ) {\n\n\t\tvar t = this.getUtoTmapping( u );\n\t\treturn this.getPoint( t );\n\n\t},\n\n\t// Get sequence of points using getPoint( t )\n\n\tgetPoints: function ( divisions ) {\n\n\t\tif ( ! divisions ) divisions = 5;\n\n\t\tvar points = [];\n\n\t\tfor ( var d = 0; d <= divisions; d ++ ) {\n\n\t\t\tpoints.push( this.getPoint( d / divisions ) );\n\n\t\t}\n\n\t\treturn points;\n\n\t},\n\n\t// Get sequence of points using getPointAt( u )\n\n\tgetSpacedPoints: function ( divisions ) {\n\n\t\tif ( ! divisions ) divisions = 5;\n\n\t\tvar points = [];\n\n\t\tfor ( var d = 0; d <= divisions; d ++ ) {\n\n\t\t\tpoints.push( this.getPointAt( d / divisions ) );\n\n\t\t}\n\n\t\treturn points;\n\n\t},\n\n\t// Get total curve arc length\n\n\tgetLength: function () {\n\n\t\tvar lengths = this.getLengths();\n\t\treturn lengths[ lengths.length - 1 ];\n\n\t},\n\n\t// Get list of cumulative segment lengths\n\n\tgetLengths: function ( divisions ) {\n\n\t\tif ( ! divisions ) divisions = ( this.__arcLengthDivisions ) ? ( this.__arcLengthDivisions ) : 200;\n\n\t\tif ( this.cacheArcLengths\n\t\t\t&& ( this.cacheArcLengths.length === divisions + 1 )\n\t\t\t&& ! this.needsUpdate ) {\n\n\t\t\t//console.log( \"cached\", this.cacheArcLengths );\n\t\t\treturn this.cacheArcLengths;\n\n\t\t}\n\n\t\tthis.needsUpdate = false;\n\n\t\tvar cache = [];\n\t\tvar current, last = this.getPoint( 0 );\n\t\tvar p, sum = 0;\n\n\t\tcache.push( 0 );\n\n\t\tfor ( p = 1; p <= divisions; p ++ ) {\n\n\t\t\tcurrent = this.getPoint ( p / divisions );\n\t\t\tsum += current.distanceTo( last );\n\t\t\tcache.push( sum );\n\t\t\tlast = current;\n\n\t\t}\n\n\t\tthis.cacheArcLengths = cache;\n\n\t\treturn cache; // { sums: cache, sum:sum }; Sum is in the last element.\n\n\t},\n\n\tupdateArcLengths: function() {\n\n\t\tthis.needsUpdate = true;\n\t\tthis.getLengths();\n\n\t},\n\n\t// Given u ( 0 .. 1 ), get a t to find p. This gives you points which are equidistant\n\n\tgetUtoTmapping: function ( u, distance ) {\n\n\t\tvar arcLengths = this.getLengths();\n\n\t\tvar i = 0, il = arcLengths.length;\n\n\t\tvar targetArcLength; // The targeted u distance value to get\n\n\t\tif ( distance ) {\n\n\t\t\ttargetArcLength = distance;\n\n\t\t} else {\n\n\t\t\ttargetArcLength = u * arcLengths[ il - 1 ];\n\n\t\t}\n\n\t\t//var time = Date.now();\n\n\t\t// binary search for the index with largest value smaller than target u distance\n\n\t\tvar low = 0, high = il - 1, comparison;\n\n\t\twhile ( low <= high ) {\n\n\t\t\ti = Math.floor( low + ( high - low ) / 2 ); // less likely to overflow, though probably not issue here, JS doesn't really have integers, all numbers are floats\n\n\t\t\tcomparison = arcLengths[ i ] - targetArcLength;\n\n\t\t\tif ( comparison < 0 ) {\n\n\t\t\t\tlow = i + 1;\n\n\t\t\t} else if ( comparison > 0 ) {\n\n\t\t\t\thigh = i - 1;\n\n\t\t\t} else {\n\n\t\t\t\thigh = i;\n\t\t\t\tbreak;\n\n\t\t\t\t// DONE\n\n\t\t\t}\n\n\t\t}\n\n\t\ti = high;\n\n\t\t//console.log('b' , i, low, high, Date.now()- time);\n\n\t\tif ( arcLengths[ i ] === targetArcLength ) {\n\n\t\t\tvar t = i / ( il - 1 );\n\t\t\treturn t;\n\n\t\t}\n\n\t\t// we could get finer grain at lengths, or use simple interpolation between two points\n\n\t\tvar lengthBefore = arcLengths[ i ];\n\t\tvar lengthAfter = arcLengths[ i + 1 ];\n\n\t\tvar segmentLength = lengthAfter - lengthBefore;\n\n\t\t// determine where we are between the 'before' and 'after' points\n\n\t\tvar segmentFraction = ( targetArcLength - lengthBefore ) / segmentLength;\n\n\t\t// add that fractional amount to t\n\n\t\tvar t = ( i + segmentFraction ) / ( il - 1 );\n\n\t\treturn t;\n\n\t},\n\n\t// Returns a unit vector tangent at t\n\t// In case any sub curve does not implement its tangent derivation,\n\t// 2 points a small delta apart will be used to find its gradient\n\t// which seems to give a reasonable approximation\n\n\tgetTangent: function( t ) {\n\n\t\tvar delta = 0.0001;\n\t\tvar t1 = t - delta;\n\t\tvar t2 = t + delta;\n\n\t\t// Capping in case of danger\n\n\t\tif ( t1 < 0 ) t1 = 0;\n\t\tif ( t2 > 1 ) t2 = 1;\n\n\t\tvar pt1 = this.getPoint( t1 );\n\t\tvar pt2 = this.getPoint( t2 );\n\n\t\tvar vec = pt2.clone().sub( pt1 );\n\t\treturn vec.normalize();\n\n\t},\n\n\tgetTangentAt: function ( u ) {\n\n\t\tvar t = this.getUtoTmapping( u );\n\t\treturn this.getTangent( t );\n\n\t},\n\n\tcomputeFrenetFrames: function ( segments, closed ) {\n\n\t\t// see http://www.cs.indiana.edu/pub/techreports/TR425.pdf\n\n\t\tvar normal = new Vector3();\n\n\t\tvar tangents = [];\n\t\tvar normals = [];\n\t\tvar binormals = [];\n\n\t\tvar vec = new Vector3();\n\t\tvar mat = new Matrix4();\n\n\t\tvar i, u, theta;\n\n\t\t// compute the tangent vectors for each segment on the curve\n\n\t\tfor ( i = 0; i <= segments; i ++ ) {\n\n\t\t\tu = i / segments;\n\n\t\t\ttangents[ i ] = this.getTangentAt( u );\n\t\t\ttangents[ i ].normalize();\n\n\t\t}\n\n\t\t// select an initial normal vector perpendicular to the first tangent vector,\n\t\t// and in the direction of the minimum tangent xyz component\n\n\t\tnormals[ 0 ] = new Vector3();\n\t\tbinormals[ 0 ] = new Vector3();\n\t\tvar min = Number.MAX_VALUE;\n\t\tvar tx = Math.abs( tangents[ 0 ].x );\n\t\tvar ty = Math.abs( tangents[ 0 ].y );\n\t\tvar tz = Math.abs( tangents[ 0 ].z );\n\n\t\tif ( tx <= min ) {\n\n\t\t\tmin = tx;\n\t\t\tnormal.set( 1, 0, 0 );\n\n\t\t}\n\n\t\tif ( ty <= min ) {\n\n\t\t\tmin = ty;\n\t\t\tnormal.set( 0, 1, 0 );\n\n\t\t}\n\n\t\tif ( tz <= min ) {\n\n\t\t\tnormal.set( 0, 0, 1 );\n\n\t\t}\n\n\t\tvec.crossVectors( tangents[ 0 ], normal ).normalize();\n\n\t\tnormals[ 0 ].crossVectors( tangents[ 0 ], vec );\n\t\tbinormals[ 0 ].crossVectors( tangents[ 0 ], normals[ 0 ] );\n\n\n\t\t// compute the slowly-varying normal and binormal vectors for each segment on the curve\n\n\t\tfor ( i = 1; i <= segments; i ++ ) {\n\n\t\t\tnormals[ i ] = normals[ i - 1 ].clone();\n\n\t\t\tbinormals[ i ] = binormals[ i - 1 ].clone();\n\n\t\t\tvec.crossVectors( tangents[ i - 1 ], tangents[ i ] );\n\n\t\t\tif ( vec.length() > Number.EPSILON ) {\n\n\t\t\t\tvec.normalize();\n\n\t\t\t\ttheta = Math.acos( _Math.clamp( tangents[ i - 1 ].dot( tangents[ i ] ), - 1, 1 ) ); // clamp for floating pt errors\n\n\t\t\t\tnormals[ i ].applyMatrix4( mat.makeRotationAxis( vec, theta ) );\n\n\t\t\t}\n\n\t\t\tbinormals[ i ].crossVectors( tangents[ i ], normals[ i ] );\n\n\t\t}\n\n\t\t// if the curve is closed, postprocess the vectors so the first and last normal vectors are the same\n\n\t\tif ( closed === true ) {\n\n\t\t\ttheta = Math.acos( _Math.clamp( normals[ 0 ].dot( normals[ segments ] ), - 1, 1 ) );\n\t\t\ttheta /= segments;\n\n\t\t\tif ( tangents[ 0 ].dot( vec.crossVectors( normals[ 0 ], normals[ segments ] ) ) > 0 ) {\n\n\t\t\t\ttheta = - theta;\n\n\t\t\t}\n\n\t\t\tfor ( i = 1; i <= segments; i ++ ) {\n\n\t\t\t\t// twist a little...\n\t\t\t\tnormals[ i ].applyMatrix4( mat.makeRotationAxis( tangents[ i ], theta * i ) );\n\t\t\t\tbinormals[ i ].crossVectors( tangents[ i ], normals[ i ] );\n\n\t\t\t}\n\n\t\t}\n\n\t\treturn {\n\t\t\ttangents: tangents,\n\t\t\tnormals: normals,\n\t\t\tbinormals: binormals\n\t\t};\n\n\t}\n\n};\n\n// TODO: Transformation for Curves?\n\n/**************************************************************\n *\t3D Curves\n **************************************************************/\n\n// A Factory method for creating new curve subclasses\n\nCurve.create = function ( constructor, getPointFunc ) {\n\n\tconstructor.prototype = Object.create( Curve.prototype );\n\tconstructor.prototype.constructor = constructor;\n\tconstructor.prototype.getPoint = getPointFunc;\n\n\treturn constructor;\n\n};\n\n\nexport { Curve };\n","import { Curve } from '../core/Curve';\n\n/**************************************************************\n *\tLine\n **************************************************************/\n\nfunction LineCurve( v1, v2 ) {\n\n\tthis.v1 = v1;\n\tthis.v2 = v2;\n\n}\n\nLineCurve.prototype = Object.create( Curve.prototype );\nLineCurve.prototype.constructor = LineCurve;\n\nLineCurve.prototype.isLineCurve = true;\n\nLineCurve.prototype.getPoint = function ( t ) {\n\n\tif ( t === 1 ) {\n\n\t\treturn this.v2.clone();\n\n\t}\n\n\tvar point = this.v2.clone().sub( this.v1 );\n\tpoint.multiplyScalar( t ).add( this.v1 );\n\n\treturn point;\n\n};\n\n// Line curve is linear, so we can overwrite default getPointAt\n\nLineCurve.prototype.getPointAt = function ( u ) {\n\n\treturn this.getPoint( u );\n\n};\n\nLineCurve.prototype.getTangent = function( t ) {\n\n\tvar tangent = this.v2.clone().sub( this.v1 );\n\n\treturn tangent.normalize();\n\n};\n\n\nexport { LineCurve };\n","import { Curve } from './Curve';\nimport { Vector3 } from '../../math/Vector3';\nimport { Geometry } from '../../core/Geometry';\nimport { LineCurve } from '../curves/LineCurve';\n\n/**\n * @author zz85 / http://www.lab4games.net/zz85/blog\n *\n **/\n\n/**************************************************************\n *\tCurved Path - a curve path is simply a array of connected\n * curves, but retains the api of a curve\n **************************************************************/\n\nfunction CurvePath() {\n\n\tthis.curves = [];\n\n\tthis.autoClose = false; // Automatically closes the path\n\n}\n\nCurvePath.prototype = Object.assign( Object.create( Curve.prototype ), {\n\n\tconstructor: CurvePath,\n\n\tadd: function ( curve ) {\n\n\t\tthis.curves.push( curve );\n\n\t},\n\n\tclosePath: function () {\n\n\t\t// Add a line curve if start and end of lines are not connected\n\t\tvar startPoint = this.curves[ 0 ].getPoint( 0 );\n\t\tvar endPoint = this.curves[ this.curves.length - 1 ].getPoint( 1 );\n\n\t\tif ( ! startPoint.equals( endPoint ) ) {\n\n\t\t\tthis.curves.push( new LineCurve( endPoint, startPoint ) );\n\n\t\t}\n\n\t},\n\n\t// To get accurate point with reference to\n\t// entire path distance at time t,\n\t// following has to be done:\n\n\t// 1. Length of each sub path have to be known\n\t// 2. Locate and identify type of curve\n\t// 3. Get t for the curve\n\t// 4. Return curve.getPointAt(t')\n\n\tgetPoint: function ( t ) {\n\n\t\tvar d = t * this.getLength();\n\t\tvar curveLengths = this.getCurveLengths();\n\t\tvar i = 0;\n\n\t\t// To think about boundaries points.\n\n\t\twhile ( i < curveLengths.length ) {\n\n\t\t\tif ( curveLengths[ i ] >= d ) {\n\n\t\t\t\tvar diff = curveLengths[ i ] - d;\n\t\t\t\tvar curve = this.curves[ i ];\n\n\t\t\t\tvar segmentLength = curve.getLength();\n\t\t\t\tvar u = segmentLength === 0 ? 0 : 1 - diff / segmentLength;\n\n\t\t\t\treturn curve.getPointAt( u );\n\n\t\t\t}\n\n\t\t\ti ++;\n\n\t\t}\n\n\t\treturn null;\n\n\t\t// loop where sum != 0, sum > d , sum+1 1 && !points[ points.length - 1 ].equals( points[ 0 ] ) ) {\n\n\t\t\tpoints.push( points[ 0 ] );\n\n\t\t}\n\n\t\treturn points;\n\n\t},\n\n\t/**************************************************************\n\t *\tCreate Geometries Helpers\n\t **************************************************************/\n\n\t/// Generate geometry from path points (for Line or Points objects)\n\n\tcreatePointsGeometry: function ( divisions ) {\n\n\t\tvar pts = this.getPoints( divisions );\n\t\treturn this.createGeometry( pts );\n\n\t},\n\n\t// Generate geometry from equidistant sampling along the path\n\n\tcreateSpacedPointsGeometry: function ( divisions ) {\n\n\t\tvar pts = this.getSpacedPoints( divisions );\n\t\treturn this.createGeometry( pts );\n\n\t},\n\n\tcreateGeometry: function ( points ) {\n\n\t\tvar geometry = new Geometry();\n\n\t\tfor ( var i = 0, l = points.length; i < l; i ++ ) {\n\n\t\t\tvar point = points[ i ];\n\t\t\tgeometry.vertices.push( new Vector3( point.x, point.y, point.z || 0 ) );\n\n\t\t}\n\n\t\treturn geometry;\n\n\t}\n\n} );\n\n\nexport { CurvePath };\n","import { Curve } from '../core/Curve';\nimport { Vector2 } from '../../math/Vector2';\n\n/**************************************************************\n *\tEllipse curve\n **************************************************************/\n\nfunction EllipseCurve( aX, aY, xRadius, yRadius, aStartAngle, aEndAngle, aClockwise, aRotation ) {\n\n\tthis.aX = aX;\n\tthis.aY = aY;\n\n\tthis.xRadius = xRadius;\n\tthis.yRadius = yRadius;\n\n\tthis.aStartAngle = aStartAngle;\n\tthis.aEndAngle = aEndAngle;\n\n\tthis.aClockwise = aClockwise;\n\n\tthis.aRotation = aRotation || 0;\n\n}\n\nEllipseCurve.prototype = Object.create( Curve.prototype );\nEllipseCurve.prototype.constructor = EllipseCurve;\n\nEllipseCurve.prototype.isEllipseCurve = true;\n\nEllipseCurve.prototype.getPoint = function( t ) {\n\n\tvar twoPi = Math.PI * 2;\n\tvar deltaAngle = this.aEndAngle - this.aStartAngle;\n\tvar samePoints = Math.abs( deltaAngle ) < Number.EPSILON;\n\n\t// ensures that deltaAngle is 0 .. 2 PI\n\twhile ( deltaAngle < 0 ) deltaAngle += twoPi;\n\twhile ( deltaAngle > twoPi ) deltaAngle -= twoPi;\n\n\tif ( deltaAngle < Number.EPSILON ) {\n\n\t\tif ( samePoints ) {\n\n\t\t\tdeltaAngle = 0;\n\n\t\t} else {\n\n\t\t\tdeltaAngle = twoPi;\n\n\t\t}\n\n\t}\n\n\tif ( this.aClockwise === true && ! samePoints ) {\n\n\t\tif ( deltaAngle === twoPi ) {\n\n\t\t\tdeltaAngle = - twoPi;\n\n\t\t} else {\n\n\t\t\tdeltaAngle = deltaAngle - twoPi;\n\n\t\t}\n\n\t}\n\n\tvar angle = this.aStartAngle + t * deltaAngle;\n\tvar x = this.aX + this.xRadius * Math.cos( angle );\n\tvar y = this.aY + this.yRadius * Math.sin( angle );\n\n\tif ( this.aRotation !== 0 ) {\n\n\t\tvar cos = Math.cos( this.aRotation );\n\t\tvar sin = Math.sin( this.aRotation );\n\n\t\tvar tx = x - this.aX;\n\t\tvar ty = y - this.aY;\n\n\t\t// Rotate the point about the center of the ellipse.\n\t\tx = tx * cos - ty * sin + this.aX;\n\t\ty = tx * sin + ty * cos + this.aY;\n\n\t}\n\n\treturn new Vector2( x, y );\n\n};\n\n\nexport { EllipseCurve };\n","/**\n * @author zz85 / http://www.lab4games.net/zz85/blog\n */\n\nvar CurveUtils = {\n\n\ttangentQuadraticBezier: function ( t, p0, p1, p2 ) {\n\n\t\treturn 2 * ( 1 - t ) * ( p1 - p0 ) + 2 * t * ( p2 - p1 );\n\n\t},\n\n\t// Puay Bing, thanks for helping with this derivative!\n\n\ttangentCubicBezier: function ( t, p0, p1, p2, p3 ) {\n\n\t\treturn - 3 * p0 * ( 1 - t ) * ( 1 - t ) +\n\t\t\t3 * p1 * ( 1 - t ) * ( 1 - t ) - 6 * t * p1 * ( 1 - t ) +\n\t\t\t6 * t * p2 * ( 1 - t ) - 3 * t * t * p2 +\n\t\t\t3 * t * t * p3;\n\n\t},\n\n\ttangentSpline: function ( t, p0, p1, p2, p3 ) {\n\n\t\t// To check if my formulas are correct\n\n\t\tvar h00 = 6 * t * t - 6 * t; \t// derived from 2t^3 − 3t^2 + 1\n\t\tvar h10 = 3 * t * t - 4 * t + 1; // t^3 − 2t^2 + t\n\t\tvar h01 = - 6 * t * t + 6 * t; \t// − 2t3 + 3t2\n\t\tvar h11 = 3 * t * t - 2 * t;\t// t3 − t2\n\n\t\treturn h00 + h10 + h01 + h11;\n\n\t},\n\n\t// Catmull-Rom\n\n\tinterpolate: function( p0, p1, p2, p3, t ) {\n\n\t\tvar v0 = ( p2 - p0 ) * 0.5;\n\t\tvar v1 = ( p3 - p1 ) * 0.5;\n\t\tvar t2 = t * t;\n\t\tvar t3 = t * t2;\n\t\treturn ( 2 * p1 - 2 * p2 + v0 + v1 ) * t3 + ( - 3 * p1 + 3 * p2 - 2 * v0 - v1 ) * t2 + v0 * t + p1;\n\n\t}\n\n};\n\n\nexport { CurveUtils };\n","import { Curve } from '../core/Curve';\nimport { Vector2 } from '../../math/Vector2';\nimport { CurveUtils } from '../CurveUtils';\n\n/**************************************************************\n *\tSpline curve\n **************************************************************/\n\nfunction SplineCurve( points /* array of Vector2 */ ) {\n\n\tthis.points = ( points === undefined ) ? [] : points;\n\n}\n\nSplineCurve.prototype = Object.create( Curve.prototype );\nSplineCurve.prototype.constructor = SplineCurve;\n\nSplineCurve.prototype.isSplineCurve = true;\n\nSplineCurve.prototype.getPoint = function ( t ) {\n\n\tvar points = this.points;\n\tvar point = ( points.length - 1 ) * t;\n\n\tvar intPoint = Math.floor( point );\n\tvar weight = point - intPoint;\n\n\tvar point0 = points[ intPoint === 0 ? intPoint : intPoint - 1 ];\n\tvar point1 = points[ intPoint ];\n\tvar point2 = points[ intPoint > points.length - 2 ? points.length - 1 : intPoint + 1 ];\n\tvar point3 = points[ intPoint > points.length - 3 ? points.length - 1 : intPoint + 2 ];\n\n\tvar interpolate = CurveUtils.interpolate;\n\n\treturn new Vector2(\n\t\tinterpolate( point0.x, point1.x, point2.x, point3.x, weight ),\n\t\tinterpolate( point0.y, point1.y, point2.y, point3.y, weight )\n\t);\n\n};\n\n\nexport { SplineCurve };\n","import { Curve } from '../core/Curve';\nimport { Vector2 } from '../../math/Vector2';\nimport { CurveUtils } from '../CurveUtils';\nimport { ShapeUtils } from '../ShapeUtils';\n\n/**************************************************************\n *\tCubic Bezier curve\n **************************************************************/\n\nfunction CubicBezierCurve( v0, v1, v2, v3 ) {\n\n\tthis.v0 = v0;\n\tthis.v1 = v1;\n\tthis.v2 = v2;\n\tthis.v3 = v3;\n\n}\n\nCubicBezierCurve.prototype = Object.create( Curve.prototype );\nCubicBezierCurve.prototype.constructor = CubicBezierCurve;\n\nCubicBezierCurve.prototype.getPoint = function ( t ) {\n\n\tvar b3 = ShapeUtils.b3;\n\n\treturn new Vector2(\n\t\tb3( t, this.v0.x, this.v1.x, this.v2.x, this.v3.x ),\n\t\tb3( t, this.v0.y, this.v1.y, this.v2.y, this.v3.y )\n\t);\n\n};\n\nCubicBezierCurve.prototype.getTangent = function( t ) {\n\n\tvar tangentCubicBezier = CurveUtils.tangentCubicBezier;\n\n\treturn new Vector2(\n\t\ttangentCubicBezier( t, this.v0.x, this.v1.x, this.v2.x, this.v3.x ),\n\t\ttangentCubicBezier( t, this.v0.y, this.v1.y, this.v2.y, this.v3.y )\n\t).normalize();\n\n};\n\n\nexport { CubicBezierCurve };\n","import { Curve } from '../core/Curve';\nimport { Vector2 } from '../../math/Vector2';\nimport { CurveUtils } from '../CurveUtils';\nimport { ShapeUtils } from '../ShapeUtils';\n\n/**************************************************************\n *\tQuadratic Bezier curve\n **************************************************************/\n\n\nfunction QuadraticBezierCurve( v0, v1, v2 ) {\n\n\tthis.v0 = v0;\n\tthis.v1 = v1;\n\tthis.v2 = v2;\n\n}\n\nQuadraticBezierCurve.prototype = Object.create( Curve.prototype );\nQuadraticBezierCurve.prototype.constructor = QuadraticBezierCurve;\n\n\nQuadraticBezierCurve.prototype.getPoint = function ( t ) {\n\n\tvar b2 = ShapeUtils.b2;\n\n\treturn new Vector2(\n\t\tb2( t, this.v0.x, this.v1.x, this.v2.x ),\n\t\tb2( t, this.v0.y, this.v1.y, this.v2.y )\n\t);\n\n};\n\n\nQuadraticBezierCurve.prototype.getTangent = function( t ) {\n\n\tvar tangentQuadraticBezier = CurveUtils.tangentQuadraticBezier;\n\n\treturn new Vector2(\n\t\ttangentQuadraticBezier( t, this.v0.x, this.v1.x, this.v2.x ),\n\t\ttangentQuadraticBezier( t, this.v0.y, this.v1.y, this.v2.y )\n\t).normalize();\n\n};\n\n\nexport { QuadraticBezierCurve };\n","import { CurvePath } from './CurvePath';\nimport { EllipseCurve } from '../curves/EllipseCurve';\nimport { SplineCurve } from '../curves/SplineCurve';\nimport { Vector2 } from '../../math/Vector2';\nimport { CubicBezierCurve } from '../curves/CubicBezierCurve';\nimport { QuadraticBezierCurve } from '../curves/QuadraticBezierCurve';\nimport { LineCurve } from '../curves/LineCurve';\n\nvar PathPrototype = Object.assign( Object.create( CurvePath.prototype ), {\n\n\tfromPoints: function ( vectors ) {\n\n\t\tthis.moveTo( vectors[ 0 ].x, vectors[ 0 ].y );\n\n\t\tfor ( var i = 1, l = vectors.length; i < l; i ++ ) {\n\n\t\t\tthis.lineTo( vectors[ i ].x, vectors[ i ].y );\n\n\t\t}\n\n\t},\n\n\tmoveTo: function ( x, y ) {\n\n\t\tthis.currentPoint.set( x, y ); // TODO consider referencing vectors instead of copying?\n\n\t},\n\n\tlineTo: function ( x, y ) {\n\n\t\tvar curve = new LineCurve( this.currentPoint.clone(), new Vector2( x, y ) );\n\t\tthis.curves.push( curve );\n\n\t\tthis.currentPoint.set( x, y );\n\n\t},\n\n\tquadraticCurveTo: function ( aCPx, aCPy, aX, aY ) {\n\n\t\tvar curve = new QuadraticBezierCurve(\n\t\t\tthis.currentPoint.clone(),\n\t\t\tnew Vector2( aCPx, aCPy ),\n\t\t\tnew Vector2( aX, aY )\n\t\t);\n\n\t\tthis.curves.push( curve );\n\n\t\tthis.currentPoint.set( aX, aY );\n\n\t},\n\n\tbezierCurveTo: function ( aCP1x, aCP1y, aCP2x, aCP2y, aX, aY ) {\n\n\t\tvar curve = new CubicBezierCurve(\n\t\t\tthis.currentPoint.clone(),\n\t\t\tnew Vector2( aCP1x, aCP1y ),\n\t\t\tnew Vector2( aCP2x, aCP2y ),\n\t\t\tnew Vector2( aX, aY )\n\t\t);\n\n\t\tthis.curves.push( curve );\n\n\t\tthis.currentPoint.set( aX, aY );\n\n\t},\n\n\tsplineThru: function ( pts /*Array of Vector*/ ) {\n\n\t\tvar npts = [ this.currentPoint.clone() ].concat( pts );\n\n\t\tvar curve = new SplineCurve( npts );\n\t\tthis.curves.push( curve );\n\n\t\tthis.currentPoint.copy( pts[ pts.length - 1 ] );\n\n\t},\n\n\tarc: function ( aX, aY, aRadius, aStartAngle, aEndAngle, aClockwise ) {\n\n\t\tvar x0 = this.currentPoint.x;\n\t\tvar y0 = this.currentPoint.y;\n\n\t\tthis.absarc( aX + x0, aY + y0, aRadius,\n\t\t\taStartAngle, aEndAngle, aClockwise );\n\n\t},\n\n\tabsarc: function ( aX, aY, aRadius, aStartAngle, aEndAngle, aClockwise ) {\n\n\t\tthis.absellipse( aX, aY, aRadius, aRadius, aStartAngle, aEndAngle, aClockwise );\n\n\t},\n\n\tellipse: function ( aX, aY, xRadius, yRadius, aStartAngle, aEndAngle, aClockwise, aRotation ) {\n\n\t\tvar x0 = this.currentPoint.x;\n\t\tvar y0 = this.currentPoint.y;\n\n\t\tthis.absellipse( aX + x0, aY + y0, xRadius, yRadius, aStartAngle, aEndAngle, aClockwise, aRotation );\n\n\t},\n\n\tabsellipse: function ( aX, aY, xRadius, yRadius, aStartAngle, aEndAngle, aClockwise, aRotation ) {\n\n\t\tvar curve = new EllipseCurve( aX, aY, xRadius, yRadius, aStartAngle, aEndAngle, aClockwise, aRotation );\n\n\t\tif ( this.curves.length > 0 ) {\n\n\t\t\t// if a previous curve is present, attempt to join\n\t\t\tvar firstPoint = curve.getPoint( 0 );\n\n\t\t\tif ( ! firstPoint.equals( this.currentPoint ) ) {\n\n\t\t\t\tthis.lineTo( firstPoint.x, firstPoint.y );\n\n\t\t\t}\n\n\t\t}\n\n\t\tthis.curves.push( curve );\n\n\t\tvar lastPoint = curve.getPoint( 1 );\n\t\tthis.currentPoint.copy( lastPoint );\n\n\t}\n\n} );\n\nexport { PathPrototype };\n","import { PathPrototype } from './PathPrototype';\nimport { Path } from './Path';\n\n/**\n * @author zz85 / http://www.lab4games.net/zz85/blog\n * Defines a 2d shape plane using paths.\n **/\n\n// STEP 1 Create a path.\n// STEP 2 Turn path into shape.\n// STEP 3 ExtrudeGeometry takes in Shape/Shapes\n// STEP 3a - Extract points from each shape, turn to vertices\n// STEP 3b - Triangulate each shape, add faces.\n\nfunction Shape() {\n\n\tPath.apply( this, arguments );\n\n\tthis.holes = [];\n\n}\n\nShape.prototype = Object.assign( Object.create( PathPrototype ), {\n\n\tconstructor: Shape,\n\n\tgetPointsHoles: function ( divisions ) {\n\n\t\tvar holesPts = [];\n\n\t\tfor ( var i = 0, l = this.holes.length; i < l; i ++ ) {\n\n\t\t\tholesPts[ i ] = this.holes[ i ].getPoints( divisions );\n\n\t\t}\n\n\t\treturn holesPts;\n\n\t},\n\n\t// Get points of shape and holes (keypoints based on segments parameter)\n\n\textractAllPoints: function ( divisions ) {\n\n\t\treturn {\n\n\t\t\tshape: this.getPoints( divisions ),\n\t\t\tholes: this.getPointsHoles( divisions )\n\n\t\t};\n\n\t},\n\n\textractPoints: function ( divisions ) {\n\n\t\treturn this.extractAllPoints( divisions );\n\n\t}\n\n} );\n\n\nexport { Shape };\n","import { PathPrototype } from './PathPrototype';\nimport { Shape } from './Shape';\nimport { ShapeUtils } from '../ShapeUtils';\nimport { Vector2 } from '../../math/Vector2';\nimport { CurvePath } from './CurvePath';\n\n/**\n * @author zz85 / http://www.lab4games.net/zz85/blog\n * Creates free form 2d path using series of points, lines or curves.\n *\n **/\n\nfunction Path( points ) {\n\n\tCurvePath.call( this );\n\tthis.currentPoint = new Vector2();\n\n\tif ( points ) {\n\n\t\tthis.fromPoints( points );\n\n\t}\n\n}\n\nPath.prototype = PathPrototype;\nPathPrototype.constructor = Path;\n\n\n// minimal class for proxing functions to Path. Replaces old \"extractSubpaths()\"\nfunction ShapePath() {\n\tthis.subPaths = [];\n\tthis.currentPath = null;\n}\n\nShapePath.prototype = {\n\tmoveTo: function ( x, y ) {\n\t\tthis.currentPath = new Path();\n\t\tthis.subPaths.push(this.currentPath);\n\t\tthis.currentPath.moveTo( x, y );\n\t},\n\tlineTo: function ( x, y ) {\n\t\tthis.currentPath.lineTo( x, y );\n\t},\n\tquadraticCurveTo: function ( aCPx, aCPy, aX, aY ) {\n\t\tthis.currentPath.quadraticCurveTo( aCPx, aCPy, aX, aY );\n\t},\n\tbezierCurveTo: function ( aCP1x, aCP1y, aCP2x, aCP2y, aX, aY ) {\n\t\tthis.currentPath.bezierCurveTo( aCP1x, aCP1y, aCP2x, aCP2y, aX, aY );\n\t},\n\tsplineThru: function ( pts ) {\n\t\tthis.currentPath.splineThru( pts );\n\t},\n\n\ttoShapes: function ( isCCW, noHoles ) {\n\n\t\tfunction toShapesNoHoles( inSubpaths ) {\n\n\t\t\tvar shapes = [];\n\n\t\t\tfor ( var i = 0, l = inSubpaths.length; i < l; i ++ ) {\n\n\t\t\t\tvar tmpPath = inSubpaths[ i ];\n\n\t\t\t\tvar tmpShape = new Shape();\n\t\t\t\ttmpShape.curves = tmpPath.curves;\n\n\t\t\t\tshapes.push( tmpShape );\n\n\t\t\t}\n\n\t\t\treturn shapes;\n\n\t\t}\n\n\t\tfunction isPointInsidePolygon( inPt, inPolygon ) {\n\n\t\t\tvar polyLen = inPolygon.length;\n\n\t\t\t// inPt on polygon contour => immediate success or\n\t\t\t// toggling of inside/outside at every single! intersection point of an edge\n\t\t\t// with the horizontal line through inPt, left of inPt\n\t\t\t// not counting lowerY endpoints of edges and whole edges on that line\n\t\t\tvar inside = false;\n\t\t\tfor ( var p = polyLen - 1, q = 0; q < polyLen; p = q ++ ) {\n\n\t\t\t\tvar edgeLowPt = inPolygon[ p ];\n\t\t\t\tvar edgeHighPt = inPolygon[ q ];\n\n\t\t\t\tvar edgeDx = edgeHighPt.x - edgeLowPt.x;\n\t\t\t\tvar edgeDy = edgeHighPt.y - edgeLowPt.y;\n\n\t\t\t\tif ( Math.abs( edgeDy ) > Number.EPSILON ) {\n\n\t\t\t\t\t// not parallel\n\t\t\t\t\tif ( edgeDy < 0 ) {\n\n\t\t\t\t\t\tedgeLowPt = inPolygon[ q ]; edgeDx = - edgeDx;\n\t\t\t\t\t\tedgeHighPt = inPolygon[ p ]; edgeDy = - edgeDy;\n\n\t\t\t\t\t}\n\t\t\t\t\tif ( ( inPt.y < edgeLowPt.y ) || ( inPt.y > edgeHighPt.y ) ) \t\tcontinue;\n\n\t\t\t\t\tif ( inPt.y === edgeLowPt.y ) {\n\n\t\t\t\t\t\tif ( inPt.x === edgeLowPt.x )\t\treturn\ttrue;\t\t// inPt is on contour ?\n\t\t\t\t\t\t// continue;\t\t\t\t// no intersection or edgeLowPt => doesn't count !!!\n\n\t\t\t\t\t} else {\n\n\t\t\t\t\t\tvar perpEdge = edgeDy * ( inPt.x - edgeLowPt.x ) - edgeDx * ( inPt.y - edgeLowPt.y );\n\t\t\t\t\t\tif ( perpEdge === 0 )\t\t\t\treturn\ttrue;\t\t// inPt is on contour ?\n\t\t\t\t\t\tif ( perpEdge < 0 ) \t\t\t\tcontinue;\n\t\t\t\t\t\tinside = ! inside;\t\t// true intersection left of inPt\n\n\t\t\t\t\t}\n\n\t\t\t\t} else {\n\n\t\t\t\t\t// parallel or collinear\n\t\t\t\t\tif ( inPt.y !== edgeLowPt.y ) \t\tcontinue;\t\t\t// parallel\n\t\t\t\t\t// edge lies on the same horizontal line as inPt\n\t\t\t\t\tif ( ( ( edgeHighPt.x <= inPt.x ) && ( inPt.x <= edgeLowPt.x ) ) ||\n\t\t\t\t\t\t ( ( edgeLowPt.x <= inPt.x ) && ( inPt.x <= edgeHighPt.x ) ) )\t\treturn\ttrue;\t// inPt: Point on contour !\n\t\t\t\t\t// continue;\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t\treturn\tinside;\n\n\t\t}\n\n\t\tvar isClockWise = ShapeUtils.isClockWise;\n\n\t\tvar subPaths = this.subPaths;\n\t\tif ( subPaths.length === 0 ) return [];\n\n\t\tif ( noHoles === true )\treturn\ttoShapesNoHoles( subPaths );\n\n\n\t\tvar solid, tmpPath, tmpShape, shapes = [];\n\n\t\tif ( subPaths.length === 1 ) {\n\n\t\t\ttmpPath = subPaths[ 0 ];\n\t\t\ttmpShape = new Shape();\n\t\t\ttmpShape.curves = tmpPath.curves;\n\t\t\tshapes.push( tmpShape );\n\t\t\treturn shapes;\n\n\t\t}\n\n\t\tvar holesFirst = ! isClockWise( subPaths[ 0 ].getPoints() );\n\t\tholesFirst = isCCW ? ! holesFirst : holesFirst;\n\n\t\t// console.log(\"Holes first\", holesFirst);\n\n\t\tvar betterShapeHoles = [];\n\t\tvar newShapes = [];\n\t\tvar newShapeHoles = [];\n\t\tvar mainIdx = 0;\n\t\tvar tmpPoints;\n\n\t\tnewShapes[ mainIdx ] = undefined;\n\t\tnewShapeHoles[ mainIdx ] = [];\n\n\t\tfor ( var i = 0, l = subPaths.length; i < l; i ++ ) {\n\n\t\t\ttmpPath = subPaths[ i ];\n\t\t\ttmpPoints = tmpPath.getPoints();\n\t\t\tsolid = isClockWise( tmpPoints );\n\t\t\tsolid = isCCW ? ! solid : solid;\n\n\t\t\tif ( solid ) {\n\n\t\t\t\tif ( ( ! holesFirst ) && ( newShapes[ mainIdx ] ) )\tmainIdx ++;\n\n\t\t\t\tnewShapes[ mainIdx ] = { s: new Shape(), p: tmpPoints };\n\t\t\t\tnewShapes[ mainIdx ].s.curves = tmpPath.curves;\n\n\t\t\t\tif ( holesFirst )\tmainIdx ++;\n\t\t\t\tnewShapeHoles[ mainIdx ] = [];\n\n\t\t\t\t//console.log('cw', i);\n\n\t\t\t} else {\n\n\t\t\t\tnewShapeHoles[ mainIdx ].push( { h: tmpPath, p: tmpPoints[ 0 ] } );\n\n\t\t\t\t//console.log('ccw', i);\n\n\t\t\t}\n\n\t\t}\n\n\t\t// only Holes? -> probably all Shapes with wrong orientation\n\t\tif ( ! newShapes[ 0 ] )\treturn\ttoShapesNoHoles( subPaths );\n\n\n\t\tif ( newShapes.length > 1 ) {\n\n\t\t\tvar ambiguous = false;\n\t\t\tvar toChange = [];\n\n\t\t\tfor ( var sIdx = 0, sLen = newShapes.length; sIdx < sLen; sIdx ++ ) {\n\n\t\t\t\tbetterShapeHoles[ sIdx ] = [];\n\n\t\t\t}\n\n\t\t\tfor ( var sIdx = 0, sLen = newShapes.length; sIdx < sLen; sIdx ++ ) {\n\n\t\t\t\tvar sho = newShapeHoles[ sIdx ];\n\n\t\t\t\tfor ( var hIdx = 0; hIdx < sho.length; hIdx ++ ) {\n\n\t\t\t\t\tvar ho = sho[ hIdx ];\n\t\t\t\t\tvar hole_unassigned = true;\n\n\t\t\t\t\tfor ( var s2Idx = 0; s2Idx < newShapes.length; s2Idx ++ ) {\n\n\t\t\t\t\t\tif ( isPointInsidePolygon( ho.p, newShapes[ s2Idx ].p ) ) {\n\n\t\t\t\t\t\t\tif ( sIdx !== s2Idx )\ttoChange.push( { froms: sIdx, tos: s2Idx, hole: hIdx } );\n\t\t\t\t\t\t\tif ( hole_unassigned ) {\n\n\t\t\t\t\t\t\t\thole_unassigned = false;\n\t\t\t\t\t\t\t\tbetterShapeHoles[ s2Idx ].push( ho );\n\n\t\t\t\t\t\t\t} else {\n\n\t\t\t\t\t\t\t\tambiguous = true;\n\n\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t}\n\n\t\t\t\t\t}\n\t\t\t\t\tif ( hole_unassigned ) {\n\n\t\t\t\t\t\tbetterShapeHoles[ sIdx ].push( ho );\n\n\t\t\t\t\t}\n\n\t\t\t\t}\n\n\t\t\t}\n\t\t\t// console.log(\"ambiguous: \", ambiguous);\n\t\t\tif ( toChange.length > 0 ) {\n\n\t\t\t\t// console.log(\"to change: \", toChange);\n\t\t\t\tif ( ! ambiguous )\tnewShapeHoles = betterShapeHoles;\n\n\t\t\t}\n\n\t\t}\n\n\t\tvar tmpHoles;\n\n\t\tfor ( var i = 0, il = newShapes.length; i < il; i ++ ) {\n\n\t\t\ttmpShape = newShapes[ i ].s;\n\t\t\tshapes.push( tmpShape );\n\t\t\ttmpHoles = newShapeHoles[ i ];\n\n\t\t\tfor ( var j = 0, jl = tmpHoles.length; j < jl; j ++ ) {\n\n\t\t\t\ttmpShape.holes.push( tmpHoles[ j ].h );\n\n\t\t\t}\n\n\t\t}\n\n\t\t//console.log(\"shape\", shapes);\n\n\t\treturn shapes;\n\n\t}\n}\n\n\nexport { ShapePath, Path };\n","import { ShapeUtils } from '../ShapeUtils';\nimport { ShapePath } from './Path';\n\n/**\n * @author zz85 / http://www.lab4games.net/zz85/blog\n * @author mrdoob / http://mrdoob.com/\n */\n\nfunction Font( data ) {\n\n\tthis.data = data;\n\n}\n\nObject.assign( Font.prototype, {\n\n\tisFont: true,\n\n\tgenerateShapes: function ( text, size, divisions ) {\n\n\t\tfunction createPaths( text ) {\n\n\t\t\tvar chars = String( text ).split( '' );\n\t\t\tvar scale = size / data.resolution;\n\t\t\tvar offset = 0;\n\n\t\t\tvar paths = [];\n\n\t\t\tfor ( var i = 0; i < chars.length; i ++ ) {\n\n\t\t\t\tvar ret = createPath( chars[ i ], scale, offset );\n\t\t\t\toffset += ret.offset;\n\n\t\t\t\tpaths.push( ret.path );\n\n\t\t\t}\n\n\t\t\treturn paths;\n\n\t\t}\n\n\t\tfunction createPath( c, scale, offset ) {\n\n\t\t\tvar glyph = data.glyphs[ c ] || data.glyphs[ '?' ];\n\n\t\t\tif ( ! glyph ) return;\n\n\t\t\tvar path = new ShapePath();\n\n\t\t\tvar pts = [], b2 = ShapeUtils.b2, b3 = ShapeUtils.b3;\n\t\t\tvar x, y, cpx, cpy, cpx0, cpy0, cpx1, cpy1, cpx2, cpy2, laste;\n\n\t\t\tif ( glyph.o ) {\n\n\t\t\t\tvar outline = glyph._cachedOutline || ( glyph._cachedOutline = glyph.o.split( ' ' ) );\n\n\t\t\t\tfor ( var i = 0, l = outline.length; i < l; ) {\n\n\t\t\t\t\tvar action = outline[ i ++ ];\n\n\t\t\t\t\tswitch ( action ) {\n\n\t\t\t\t\t\tcase 'm': // moveTo\n\n\t\t\t\t\t\t\tx = outline[ i ++ ] * scale + offset;\n\t\t\t\t\t\t\ty = outline[ i ++ ] * scale;\n\n\t\t\t\t\t\t\tpath.moveTo( x, y );\n\n\t\t\t\t\t\t\tbreak;\n\n\t\t\t\t\t\tcase 'l': // lineTo\n\n\t\t\t\t\t\t\tx = outline[ i ++ ] * scale + offset;\n\t\t\t\t\t\t\ty = outline[ i ++ ] * scale;\n\n\t\t\t\t\t\t\tpath.lineTo( x, y );\n\n\t\t\t\t\t\t\tbreak;\n\n\t\t\t\t\t\tcase 'q': // quadraticCurveTo\n\n\t\t\t\t\t\t\tcpx = outline[ i ++ ] * scale + offset;\n\t\t\t\t\t\t\tcpy = outline[ i ++ ] * scale;\n\t\t\t\t\t\t\tcpx1 = outline[ i ++ ] * scale + offset;\n\t\t\t\t\t\t\tcpy1 = outline[ i ++ ] * scale;\n\n\t\t\t\t\t\t\tpath.quadraticCurveTo( cpx1, cpy1, cpx, cpy );\n\n\t\t\t\t\t\t\tlaste = pts[ pts.length - 1 ];\n\n\t\t\t\t\t\t\tif ( laste ) {\n\n\t\t\t\t\t\t\t\tcpx0 = laste.x;\n\t\t\t\t\t\t\t\tcpy0 = laste.y;\n\n\t\t\t\t\t\t\t\tfor ( var i2 = 1; i2 <= divisions; i2 ++ ) {\n\n\t\t\t\t\t\t\t\t\tvar t = i2 / divisions;\n\t\t\t\t\t\t\t\t\tb2( t, cpx0, cpx1, cpx );\n\t\t\t\t\t\t\t\t\tb2( t, cpy0, cpy1, cpy );\n\n\t\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\tbreak;\n\n\t\t\t\t\t\tcase 'b': // bezierCurveTo\n\n\t\t\t\t\t\t\tcpx = outline[ i ++ ] * scale + offset;\n\t\t\t\t\t\t\tcpy = outline[ i ++ ] * scale;\n\t\t\t\t\t\t\tcpx1 = outline[ i ++ ] * scale + offset;\n\t\t\t\t\t\t\tcpy1 = outline[ i ++ ] * scale;\n\t\t\t\t\t\t\tcpx2 = outline[ i ++ ] * scale + offset;\n\t\t\t\t\t\t\tcpy2 = outline[ i ++ ] * scale;\n\n\t\t\t\t\t\t\tpath.bezierCurveTo( cpx1, cpy1, cpx2, cpy2, cpx, cpy );\n\n\t\t\t\t\t\t\tlaste = pts[ pts.length - 1 ];\n\n\t\t\t\t\t\t\tif ( laste ) {\n\n\t\t\t\t\t\t\t\tcpx0 = laste.x;\n\t\t\t\t\t\t\t\tcpy0 = laste.y;\n\n\t\t\t\t\t\t\t\tfor ( var i2 = 1; i2 <= divisions; i2 ++ ) {\n\n\t\t\t\t\t\t\t\t\tvar t = i2 / divisions;\n\t\t\t\t\t\t\t\t\tb3( t, cpx0, cpx1, cpx2, cpx );\n\t\t\t\t\t\t\t\t\tb3( t, cpy0, cpy1, cpy2, cpy );\n\n\t\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\tbreak;\n\n\t\t\t\t\t}\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t\treturn { offset: glyph.ha * scale, path: path };\n\n\t\t}\n\n\t\t//\n\n\t\tif ( size === undefined ) size = 100;\n\t\tif ( divisions === undefined ) divisions = 4;\n\n\t\tvar data = this.data;\n\n\t\tvar paths = createPaths( text );\n\t\tvar shapes = [];\n\n\t\tfor ( var p = 0, pl = paths.length; p < pl; p ++ ) {\n\n\t\t\tArray.prototype.push.apply( shapes, paths[ p ].toShapes() );\n\n\t\t}\n\n\t\treturn shapes;\n\n\t}\n\n} );\n\n\nexport { Font };\n","import { Font } from '../extras/core/Font';\nimport { FileLoader } from './FileLoader';\nimport { DefaultLoadingManager } from './LoadingManager';\n\n/**\n * @author mrdoob / http://mrdoob.com/\n */\n\nfunction FontLoader( manager ) {\n\n\tthis.manager = ( manager !== undefined ) ? manager : DefaultLoadingManager;\n\n}\n\nObject.assign( FontLoader.prototype, {\n\n\tload: function ( url, onLoad, onProgress, onError ) {\n\n\t\tvar scope = this;\n\n\t\tvar loader = new FileLoader( this.manager );\n\t\tloader.load( url, function ( text ) {\n\n\t\t\tvar json;\n\n\t\t\ttry {\n\n\t\t\t\tjson = JSON.parse( text );\n\n\t\t\t} catch ( e ) {\n\n\t\t\t\tconsole.warn( 'THREE.FontLoader: typeface.js support is being deprecated. Use typeface.json instead.' );\n\t\t\t\tjson = JSON.parse( text.substring( 65, text.length - 2 ) );\n\n\t\t\t}\n\n\t\t\tvar font = scope.parse( json );\n\n\t\t\tif ( onLoad ) onLoad( font );\n\n\t\t}, onProgress, onError );\n\n\t},\n\n\tparse: function ( json ) {\n\n\t\treturn new Font( json );\n\n\t}\n\n} );\n\n\nexport { FontLoader };\n","var context;\n\nexport function getAudioContext() {\n\n\tif ( context === undefined ) {\n\n\t\tcontext = new ( window.AudioContext || window.webkitAudioContext )();\n\n\t}\n\n\treturn context;\n\n}\n","import { getAudioContext } from '../audio/AudioContext';\nimport { FileLoader } from './FileLoader';\nimport { DefaultLoadingManager } from './LoadingManager';\n\n/**\n * @author Reece Aaron Lecrivain / http://reecenotes.com/\n */\n\nfunction AudioLoader( manager ) {\n\n\tthis.manager = ( manager !== undefined ) ? manager : DefaultLoadingManager;\n\n}\n\nObject.assign( AudioLoader.prototype, {\n\n\tload: function ( url, onLoad, onProgress, onError ) {\n\n\t\tvar loader = new FileLoader( this.manager );\n\t\tloader.setResponseType( 'arraybuffer' );\n\t\tloader.load( url, function ( buffer ) {\n\n\t\t\tvar context = getAudioContext();\n\n\t\t\tcontext.decodeAudioData( buffer, function ( audioBuffer ) {\n\n\t\t\t\tonLoad( audioBuffer );\n\n\t\t\t} );\n\n\t\t}, onProgress, onError );\n\n\t}\n\n} );\n\n\nexport { AudioLoader };\n","import { Matrix4 } from '../math/Matrix4';\nimport { _Math } from '../math/Math';\nimport { PerspectiveCamera } from './PerspectiveCamera';\n\n/**\n * @author mrdoob / http://mrdoob.com/\n */\n\nfunction StereoCamera() {\n\n\tthis.type = 'StereoCamera';\n\n\tthis.aspect = 1;\n\n\tthis.eyeSep = 0.064;\n\n\tthis.cameraL = new PerspectiveCamera();\n\tthis.cameraL.layers.enable( 1 );\n\tthis.cameraL.matrixAutoUpdate = false;\n\n\tthis.cameraR = new PerspectiveCamera();\n\tthis.cameraR.layers.enable( 2 );\n\tthis.cameraR.matrixAutoUpdate = false;\n\n}\n\nObject.assign( StereoCamera.prototype, {\n\n\tupdate: ( function () {\n\n\t\tvar instance, focus, fov, aspect, near, far, zoom;\n\n\t\tvar eyeRight = new Matrix4();\n\t\tvar eyeLeft = new Matrix4();\n\n\t\treturn function update( camera ) {\n\n\t\t\tvar needsUpdate = instance !== this || focus !== camera.focus || fov !== camera.fov ||\n\t\t\t\t\t\t\t\t\t\t\t\taspect !== camera.aspect * this.aspect || near !== camera.near ||\n\t\t\t\t\t\t\t\t\t\t\t\tfar !== camera.far || zoom !== camera.zoom;\n\n\t\t\tif ( needsUpdate ) {\n\n\t\t\t\tinstance = this;\n\t\t\t\tfocus = camera.focus;\n\t\t\t\tfov = camera.fov;\n\t\t\t\taspect = camera.aspect * this.aspect;\n\t\t\t\tnear = camera.near;\n\t\t\t\tfar = camera.far;\n\t\t\t\tzoom = camera.zoom;\n\n\t\t\t\t// Off-axis stereoscopic effect based on\n\t\t\t\t// http://paulbourke.net/stereographics/stereorender/\n\n\t\t\t\tvar projectionMatrix = camera.projectionMatrix.clone();\n\t\t\t\tvar eyeSep = this.eyeSep / 2;\n\t\t\t\tvar eyeSepOnProjection = eyeSep * near / focus;\n\t\t\t\tvar ymax = ( near * Math.tan( _Math.DEG2RAD * fov * 0.5 ) ) / zoom;\n\t\t\t\tvar xmin, xmax;\n\n\t\t\t\t// translate xOffset\n\n\t\t\t\teyeLeft.elements[ 12 ] = - eyeSep;\n\t\t\t\teyeRight.elements[ 12 ] = eyeSep;\n\n\t\t\t\t// for left eye\n\n\t\t\t\txmin = - ymax * aspect + eyeSepOnProjection;\n\t\t\t\txmax = ymax * aspect + eyeSepOnProjection;\n\n\t\t\t\tprojectionMatrix.elements[ 0 ] = 2 * near / ( xmax - xmin );\n\t\t\t\tprojectionMatrix.elements[ 8 ] = ( xmax + xmin ) / ( xmax - xmin );\n\n\t\t\t\tthis.cameraL.projectionMatrix.copy( projectionMatrix );\n\n\t\t\t\t// for right eye\n\n\t\t\t\txmin = - ymax * aspect - eyeSepOnProjection;\n\t\t\t\txmax = ymax * aspect - eyeSepOnProjection;\n\n\t\t\t\tprojectionMatrix.elements[ 0 ] = 2 * near / ( xmax - xmin );\n\t\t\t\tprojectionMatrix.elements[ 8 ] = ( xmax + xmin ) / ( xmax - xmin );\n\n\t\t\t\tthis.cameraR.projectionMatrix.copy( projectionMatrix );\n\n\t\t\t}\n\n\t\t\tthis.cameraL.matrixWorld.copy( camera.matrixWorld ).multiply( eyeLeft );\n\t\t\tthis.cameraR.matrixWorld.copy( camera.matrixWorld ).multiply( eyeRight );\n\n\t\t};\n\n\t} )()\n\n} );\n\n\nexport { StereoCamera };\n","import { Object3D } from '../core/Object3D';\nimport { WebGLRenderTargetCube } from '../renderers/WebGLRenderTargetCube';\nimport { LinearFilter, RGBFormat } from '../constants';\nimport { Vector3 } from '../math/Vector3';\nimport { PerspectiveCamera } from './PerspectiveCamera';\n\n/**\n * Camera for rendering cube maps\n *\t- renders scene into axis-aligned cube\n *\n * @author alteredq / http://alteredqualia.com/\n */\n\nfunction CubeCamera( near, far, cubeResolution ) {\n\n\tObject3D.call( this );\n\n\tthis.type = 'CubeCamera';\n\n\tvar fov = 90, aspect = 1;\n\n\tvar cameraPX = new PerspectiveCamera( fov, aspect, near, far );\n\tcameraPX.up.set( 0, - 1, 0 );\n\tcameraPX.lookAt( new Vector3( 1, 0, 0 ) );\n\tthis.add( cameraPX );\n\n\tvar cameraNX = new PerspectiveCamera( fov, aspect, near, far );\n\tcameraNX.up.set( 0, - 1, 0 );\n\tcameraNX.lookAt( new Vector3( - 1, 0, 0 ) );\n\tthis.add( cameraNX );\n\n\tvar cameraPY = new PerspectiveCamera( fov, aspect, near, far );\n\tcameraPY.up.set( 0, 0, 1 );\n\tcameraPY.lookAt( new Vector3( 0, 1, 0 ) );\n\tthis.add( cameraPY );\n\n\tvar cameraNY = new PerspectiveCamera( fov, aspect, near, far );\n\tcameraNY.up.set( 0, 0, - 1 );\n\tcameraNY.lookAt( new Vector3( 0, - 1, 0 ) );\n\tthis.add( cameraNY );\n\n\tvar cameraPZ = new PerspectiveCamera( fov, aspect, near, far );\n\tcameraPZ.up.set( 0, - 1, 0 );\n\tcameraPZ.lookAt( new Vector3( 0, 0, 1 ) );\n\tthis.add( cameraPZ );\n\n\tvar cameraNZ = new PerspectiveCamera( fov, aspect, near, far );\n\tcameraNZ.up.set( 0, - 1, 0 );\n\tcameraNZ.lookAt( new Vector3( 0, 0, - 1 ) );\n\tthis.add( cameraNZ );\n\n\tvar options = { format: RGBFormat, magFilter: LinearFilter, minFilter: LinearFilter };\n\n\tthis.renderTarget = new WebGLRenderTargetCube( cubeResolution, cubeResolution, options );\n\n\tthis.updateCubeMap = function ( renderer, scene ) {\n\n\t\tif ( this.parent === null ) this.updateMatrixWorld();\n\n\t\tvar renderTarget = this.renderTarget;\n\t\tvar generateMipmaps = renderTarget.texture.generateMipmaps;\n\n\t\trenderTarget.texture.generateMipmaps = false;\n\n\t\trenderTarget.activeCubeFace = 0;\n\t\trenderer.render( scene, cameraPX, renderTarget );\n\n\t\trenderTarget.activeCubeFace = 1;\n\t\trenderer.render( scene, cameraNX, renderTarget );\n\n\t\trenderTarget.activeCubeFace = 2;\n\t\trenderer.render( scene, cameraPY, renderTarget );\n\n\t\trenderTarget.activeCubeFace = 3;\n\t\trenderer.render( scene, cameraNY, renderTarget );\n\n\t\trenderTarget.activeCubeFace = 4;\n\t\trenderer.render( scene, cameraPZ, renderTarget );\n\n\t\trenderTarget.texture.generateMipmaps = generateMipmaps;\n\n\t\trenderTarget.activeCubeFace = 5;\n\t\trenderer.render( scene, cameraNZ, renderTarget );\n\n\t\trenderer.setRenderTarget( null );\n\n\t};\n\n}\n\nCubeCamera.prototype = Object.create( Object3D.prototype );\nCubeCamera.prototype.constructor = CubeCamera;\n\n\nexport { CubeCamera };\n","/**\n * @author mrdoob / http://mrdoob.com/\n */\n\nimport { Vector3 } from '../math/Vector3';\nimport { Quaternion } from '../math/Quaternion';\nimport { Object3D } from '../core/Object3D';\nimport { getAudioContext } from './AudioContext';\n\nfunction AudioListener() {\n\n\tObject3D.call( this );\n\n\tthis.type = 'AudioListener';\n\n\tthis.context = getAudioContext();\n\n\tthis.gain = this.context.createGain();\n\tthis.gain.connect( this.context.destination );\n\n\tthis.filter = null;\n\n}\n\nAudioListener.prototype = Object.assign( Object.create( Object3D.prototype ), {\n\n\tconstructor: AudioListener,\n\n\tgetInput: function () {\n\n\t\treturn this.gain;\n\n\t},\n\n\tremoveFilter: function ( ) {\n\n\t\tif ( this.filter !== null ) {\n\n\t\t\tthis.gain.disconnect( this.filter );\n\t\t\tthis.filter.disconnect( this.context.destination );\n\t\t\tthis.gain.connect( this.context.destination );\n\t\t\tthis.filter = null;\n\n\t\t}\n\n\t},\n\n\tgetFilter: function () {\n\n\t\treturn this.filter;\n\n\t},\n\n\tsetFilter: function ( value ) {\n\n\t\tif ( this.filter !== null ) {\n\n\t\t\tthis.gain.disconnect( this.filter );\n\t\t\tthis.filter.disconnect( this.context.destination );\n\n\t\t} else {\n\n\t\t\tthis.gain.disconnect( this.context.destination );\n\n\t\t}\n\n\t\tthis.filter = value;\n\t\tthis.gain.connect( this.filter );\n\t\tthis.filter.connect( this.context.destination );\n\n\t},\n\n\tgetMasterVolume: function () {\n\n\t\treturn this.gain.gain.value;\n\n\t},\n\n\tsetMasterVolume: function ( value ) {\n\n\t\tthis.gain.gain.value = value;\n\n\t},\n\n\tupdateMatrixWorld: ( function () {\n\n\t\tvar position = new Vector3();\n\t\tvar quaternion = new Quaternion();\n\t\tvar scale = new Vector3();\n\n\t\tvar orientation = new Vector3();\n\n\t\treturn function updateMatrixWorld( force ) {\n\n\t\t\tObject3D.prototype.updateMatrixWorld.call( this, force );\n\n\t\t\tvar listener = this.context.listener;\n\t\t\tvar up = this.up;\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, up.x, up.y, up.z );\n\n\t\t};\n\n\t} )()\n\n} );\n\nexport { AudioListener };\n","/**\n * @author mrdoob / http://mrdoob.com/\n * @author Reece Aaron Lecrivain / http://reecenotes.com/\n */\n\nimport { Object3D } from '../core/Object3D';\n\nfunction Audio( listener ) {\n\n\tObject3D.call( this );\n\n\tthis.type = 'Audio';\n\n\tthis.context = listener.context;\n\tthis.source = this.context.createBufferSource();\n\tthis.source.onended = this.onEnded.bind( this );\n\n\tthis.gain = this.context.createGain();\n\tthis.gain.connect( listener.getInput() );\n\n\tthis.autoplay = false;\n\n\tthis.startTime = 0;\n\tthis.playbackRate = 1;\n\tthis.isPlaying = false;\n\tthis.hasPlaybackControl = true;\n\tthis.sourceType = 'empty';\n\n\tthis.filters = [];\n\n}\n\nAudio.prototype = Object.assign( Object.create( Object3D.prototype ), {\n\n\tconstructor: Audio,\n\n\tgetOutput: function () {\n\n\t\treturn this.gain;\n\n\t},\n\n\tsetNodeSource: function ( audioNode ) {\n\n\t\tthis.hasPlaybackControl = false;\n\t\tthis.sourceType = 'audioNode';\n\t\tthis.source = audioNode;\n\t\tthis.connect();\n\n\t\treturn this;\n\n\t},\n\n\tsetBuffer: function ( audioBuffer ) {\n\n\t\tthis.source.buffer = audioBuffer;\n\t\tthis.sourceType = 'buffer';\n\n\t\tif ( this.autoplay ) this.play();\n\n\t\treturn this;\n\n\t},\n\n\tplay: function () {\n\n\t\tif ( this.isPlaying === true ) {\n\n\t\t\tconsole.warn( 'THREE.Audio: Audio is already playing.' );\n\t\t\treturn;\n\n\t\t}\n\n\t\tif ( this.hasPlaybackControl === false ) {\n\n\t\t\tconsole.warn( 'THREE.Audio: this Audio has no playback control.' );\n\t\t\treturn;\n\n\t\t}\n\n\t\tvar source = this.context.createBufferSource();\n\n\t\tsource.buffer = this.source.buffer;\n\t\tsource.loop = this.source.loop;\n\t\tsource.onended = this.source.onended;\n\t\tsource.start( 0, this.startTime );\n\t\tsource.playbackRate.value = this.playbackRate;\n\n\t\tthis.isPlaying = true;\n\n\t\tthis.source = source;\n\n\t\treturn this.connect();\n\n\t},\n\n\tpause: function () {\n\n\t\tif ( this.hasPlaybackControl === false ) {\n\n\t\t\tconsole.warn( 'THREE.Audio: this Audio has no playback control.' );\n\t\t\treturn;\n\n\t\t}\n\n\t\tthis.source.stop();\n\t\tthis.startTime = this.context.currentTime;\n\t\tthis.isPlaying = false;\n\n\t\treturn this;\n\n\t},\n\n\tstop: function () {\n\n\t\tif ( this.hasPlaybackControl === false ) {\n\n\t\t\tconsole.warn( 'THREE.Audio: this Audio has no playback control.' );\n\t\t\treturn;\n\n\t\t}\n\n\t\tthis.source.stop();\n\t\tthis.startTime = 0;\n\t\tthis.isPlaying = false;\n\n\t\treturn this;\n\n\t},\n\n\tconnect: function () {\n\n\t\tif ( this.filters.length > 0 ) {\n\n\t\t\tthis.source.connect( this.filters[ 0 ] );\n\n\t\t\tfor ( var i = 1, l = this.filters.length; i < l; i ++ ) {\n\n\t\t\t\tthis.filters[ i - 1 ].connect( this.filters[ i ] );\n\n\t\t\t}\n\n\t\t\tthis.filters[ this.filters.length - 1 ].connect( this.getOutput() );\n\n\t\t} else {\n\n\t\t\tthis.source.connect( this.getOutput() );\n\n\t\t}\n\n\t\treturn this;\n\n\t},\n\n\tdisconnect: function () {\n\n\t\tif ( this.filters.length > 0 ) {\n\n\t\t\tthis.source.disconnect( this.filters[ 0 ] );\n\n\t\t\tfor ( var i = 1, l = this.filters.length; i < l; i ++ ) {\n\n\t\t\t\tthis.filters[ i - 1 ].disconnect( this.filters[ i ] );\n\n\t\t\t}\n\n\t\t\tthis.filters[ this.filters.length - 1 ].disconnect( this.getOutput() );\n\n\t\t} else {\n\n\t\t\tthis.source.disconnect( this.getOutput() );\n\n\t\t}\n\n\t\treturn this;\n\n\t},\n\n\tgetFilters: function () {\n\n\t\treturn this.filters;\n\n\t},\n\n\tsetFilters: function ( value ) {\n\n\t\tif ( ! value ) value = [];\n\n\t\tif ( this.isPlaying === true ) {\n\n\t\t\tthis.disconnect();\n\t\t\tthis.filters = value;\n\t\t\tthis.connect();\n\n\t\t} else {\n\n\t\t\tthis.filters = value;\n\n\t\t}\n\n\t\treturn this;\n\n\t},\n\n\tgetFilter: function () {\n\n\t\treturn this.getFilters()[ 0 ];\n\n\t},\n\n\tsetFilter: function ( filter ) {\n\n\t\treturn this.setFilters( filter ? [ filter ] : [] );\n\n\t},\n\n\tsetPlaybackRate: function ( value ) {\n\n\t\tif ( this.hasPlaybackControl === false ) {\n\n\t\t\tconsole.warn( 'THREE.Audio: this Audio has no playback control.' );\n\t\t\treturn;\n\n\t\t}\n\n\t\tthis.playbackRate = value;\n\n\t\tif ( this.isPlaying === true ) {\n\n\t\t\tthis.source.playbackRate.value = this.playbackRate;\n\n\t\t}\n\n\t\treturn this;\n\n\t},\n\n\tgetPlaybackRate: function () {\n\n\t\treturn this.playbackRate;\n\n\t},\n\n\tonEnded: function () {\n\n\t\tthis.isPlaying = false;\n\n\t},\n\n\tgetLoop: function () {\n\n\t\tif ( this.hasPlaybackControl === false ) {\n\n\t\t\tconsole.warn( 'THREE.Audio: this Audio has no playback control.' );\n\t\t\treturn false;\n\n\t\t}\n\n\t\treturn this.source.loop;\n\n\t},\n\n\tsetLoop: function ( value ) {\n\n\t\tif ( this.hasPlaybackControl === false ) {\n\n\t\t\tconsole.warn( 'THREE.Audio: this Audio has no playback control.' );\n\t\t\treturn;\n\n\t\t}\n\n\t\tthis.source.loop = value;\n\n\t},\n\n\tgetVolume: function () {\n\n\t\treturn this.gain.gain.value;\n\n\t},\n\n\n\tsetVolume: function ( value ) {\n\n\t\tthis.gain.gain.value = value;\n\n\t\treturn this;\n\n\t}\n\n} );\n\nexport { Audio };\n","/**\n * @author mrdoob / http://mrdoob.com/\n */\n\nimport { Vector3 } from '../math/Vector3';\nimport { Audio } from './Audio';\nimport { Object3D } from '../core/Object3D';\n\nfunction PositionalAudio( listener ) {\n\n\tAudio.call( this, listener );\n\n\tthis.panner = this.context.createPanner();\n\tthis.panner.connect( this.gain );\n\n}\n\nPositionalAudio.prototype = Object.assign( Object.create( Audio.prototype ), {\n\n\tconstructor: PositionalAudio,\n\n\tgetOutput: function () {\n\n\t\treturn this.panner;\n\n\t},\n\n\tgetRefDistance: function () {\n\n\t\treturn this.panner.refDistance;\n\n\t},\n\n\tsetRefDistance: function ( value ) {\n\n\t\tthis.panner.refDistance = value;\n\n\t},\n\n\tgetRolloffFactor: function () {\n\n\t\treturn this.panner.rolloffFactor;\n\n\t},\n\n\tsetRolloffFactor: function ( value ) {\n\n\t\tthis.panner.rolloffFactor = value;\n\n\t},\n\n\tgetDistanceModel: function () {\n\n\t\treturn this.panner.distanceModel;\n\n\t},\n\n\tsetDistanceModel: function ( value ) {\n\n\t\tthis.panner.distanceModel = value;\n\n\t},\n\n\tgetMaxDistance: function () {\n\n\t\treturn this.panner.maxDistance;\n\n\t},\n\n\tsetMaxDistance: function ( value ) {\n\n\t\tthis.panner.maxDistance = value;\n\n\t},\n\n\tupdateMatrixWorld: ( function () {\n\n\t\tvar position = new Vector3();\n\n\t\treturn function updateMatrixWorld( force ) {\n\n\t\t\tObject3D.prototype.updateMatrixWorld.call( this, force );\n\n\t\t\tposition.setFromMatrixPosition( this.matrixWorld );\n\n\t\t\tthis.panner.setPosition( position.x, position.y, position.z );\n\n\t\t};\n\n\t} )()\n\n\n} );\n\nexport { PositionalAudio };\n","/**\n * @author mrdoob / http://mrdoob.com/\n */\n\nfunction AudioAnalyser( audio, fftSize ) {\n\n\tthis.analyser = audio.context.createAnalyser();\n\tthis.analyser.fftSize = fftSize !== undefined ? fftSize : 2048;\n\n\tthis.data = new Uint8Array( this.analyser.frequencyBinCount );\n\n\taudio.getOutput().connect( this.analyser );\n\n}\n\nObject.assign( AudioAnalyser.prototype, {\n\n\tgetFrequencyData: function () {\n\n\t\tthis.analyser.getByteFrequencyData( this.data );\n\n\t\treturn this.data;\n\n\t},\n\n\tgetAverageFrequency: function () {\n\n\t\tvar value = 0, data = this.getFrequencyData();\n\n\t\tfor ( var i = 0; i < data.length; i ++ ) {\n\n\t\t\tvalue += data[ i ];\n\n\t\t}\n\n\t\treturn value / data.length;\n\n\t}\n\n} );\n\nexport { AudioAnalyser };\n","import { Quaternion } from '../math/Quaternion';\n\n/**\n *\n * Buffered scene graph property that allows weighted accumulation.\n *\n *\n * @author Ben Houston / http://clara.io/\n * @author David Sarno / http://lighthaus.us/\n * @author tschw\n */\n\nfunction PropertyMixer( binding, typeName, valueSize ) {\n\n\tthis.binding = binding;\n\tthis.valueSize = valueSize;\n\n\tvar bufferType = Float64Array,\n\t\tmixFunction;\n\n\tswitch ( typeName ) {\n\n\t\tcase 'quaternion':\t\t\tmixFunction = this._slerp;\t\tbreak;\n\n\t\tcase 'string':\n\t\tcase 'bool':\n\n\t\t\tbufferType = Array,\t\tmixFunction = this._select;\t\tbreak;\n\n\t\tdefault:\t\t\t\t\tmixFunction = this._lerp;\n\n\t}\n\n\tthis.buffer = new bufferType( valueSize * 4 );\n\t// layout: [ incoming | accu0 | accu1 | orig ]\n\t//\n\t// interpolators can use .buffer as their .result\n\t// the data then goes to 'incoming'\n\t//\n\t// 'accu0' and 'accu1' are used frame-interleaved for\n\t// the cumulative result and are compared to detect\n\t// changes\n\t//\n\t// 'orig' stores the original state of the property\n\n\tthis._mixBufferRegion = mixFunction;\n\n\tthis.cumulativeWeight = 0;\n\n\tthis.useCount = 0;\n\tthis.referenceCount = 0;\n\n}\n\nPropertyMixer.prototype = {\n\n\tconstructor: PropertyMixer,\n\n\t// accumulate data in the 'incoming' region into 'accu'\n\taccumulate: function( accuIndex, weight ) {\n\n\t\t// note: happily accumulating nothing when weight = 0, the caller knows\n\t\t// the weight and shouldn't have made the call in the first place\n\n\t\tvar buffer = this.buffer,\n\t\t\tstride = this.valueSize,\n\t\t\toffset = accuIndex * stride + stride,\n\n\t\t\tcurrentWeight = this.cumulativeWeight;\n\n\t\tif ( currentWeight === 0 ) {\n\n\t\t\t// accuN := incoming * weight\n\n\t\t\tfor ( var i = 0; i !== stride; ++ i ) {\n\n\t\t\t\tbuffer[ offset + i ] = buffer[ i ];\n\n\t\t\t}\n\n\t\t\tcurrentWeight = weight;\n\n\t\t} else {\n\n\t\t\t// accuN := accuN + incoming * weight\n\n\t\t\tcurrentWeight += weight;\n\t\t\tvar mix = weight / currentWeight;\n\t\t\tthis._mixBufferRegion( buffer, offset, 0, mix, stride );\n\n\t\t}\n\n\t\tthis.cumulativeWeight = currentWeight;\n\n\t},\n\n\t// apply the state of 'accu' to the binding when accus differ\n\tapply: function( accuIndex ) {\n\n\t\tvar stride = this.valueSize,\n\t\t\tbuffer = this.buffer,\n\t\t\toffset = accuIndex * stride + stride,\n\n\t\t\tweight = this.cumulativeWeight,\n\n\t\t\tbinding = this.binding;\n\n\t\tthis.cumulativeWeight = 0;\n\n\t\tif ( weight < 1 ) {\n\n\t\t\t// accuN := accuN + original * ( 1 - cumulativeWeight )\n\n\t\t\tvar originalValueOffset = stride * 3;\n\n\t\t\tthis._mixBufferRegion(\n\t\t\t\t\tbuffer, offset, originalValueOffset, 1 - weight, stride );\n\n\t\t}\n\n\t\tfor ( var i = stride, e = stride + stride; i !== e; ++ i ) {\n\n\t\t\tif ( buffer[ i ] !== buffer[ i + stride ] ) {\n\n\t\t\t\t// value has changed -> update scene graph\n\n\t\t\t\tbinding.setValue( buffer, offset );\n\t\t\t\tbreak;\n\n\t\t\t}\n\n\t\t}\n\n\t},\n\n\t// remember the state of the bound property and copy it to both accus\n\tsaveOriginalState: function() {\n\n\t\tvar binding = this.binding;\n\n\t\tvar buffer = this.buffer,\n\t\t\tstride = this.valueSize,\n\n\t\t\toriginalValueOffset = stride * 3;\n\n\t\tbinding.getValue( buffer, originalValueOffset );\n\n\t\t// accu[0..1] := orig -- initially detect changes against the original\n\t\tfor ( var i = stride, e = originalValueOffset; i !== e; ++ i ) {\n\n\t\t\tbuffer[ i ] = buffer[ originalValueOffset + ( i % stride ) ];\n\n\t\t}\n\n\t\tthis.cumulativeWeight = 0;\n\n\t},\n\n\t// apply the state previously taken via 'saveOriginalState' to the binding\n\trestoreOriginalState: function() {\n\n\t\tvar originalValueOffset = this.valueSize * 3;\n\t\tthis.binding.setValue( this.buffer, originalValueOffset );\n\n\t},\n\n\n\t// mix functions\n\n\t_select: function( buffer, dstOffset, srcOffset, t, stride ) {\n\n\t\tif ( t >= 0.5 ) {\n\n\t\t\tfor ( var i = 0; i !== stride; ++ i ) {\n\n\t\t\t\tbuffer[ dstOffset + i ] = buffer[ srcOffset + i ];\n\n\t\t\t}\n\n\t\t}\n\n\t},\n\n\t_slerp: function( buffer, dstOffset, srcOffset, t, stride ) {\n\n\t\tQuaternion.slerpFlat( buffer, dstOffset,\n\t\t\t\tbuffer, dstOffset, buffer, srcOffset, t );\n\n\t},\n\n\t_lerp: function( buffer, dstOffset, srcOffset, t, stride ) {\n\n\t\tvar s = 1 - t;\n\n\t\tfor ( var i = 0; i !== stride; ++ i ) {\n\n\t\t\tvar j = dstOffset + i;\n\n\t\t\tbuffer[ j ] = buffer[ j ] * s + buffer[ srcOffset + i ] * t;\n\n\t\t}\n\n\t}\n\n};\n\n\nexport { PropertyMixer };\n","/**\n *\n * A reference to a real property in the scene graph.\n *\n *\n * @author Ben Houston / http://clara.io/\n * @author David Sarno / http://lighthaus.us/\n * @author tschw\n */\n\nfunction PropertyBinding( rootNode, path, parsedPath ) {\n\n\tthis.path = path;\n\tthis.parsedPath = parsedPath ||\n\t\t\tPropertyBinding.parseTrackName( path );\n\n\tthis.node = PropertyBinding.findNode(\n\t\t\trootNode, this.parsedPath.nodeName ) || rootNode;\n\n\tthis.rootNode = rootNode;\n\n}\n\nPropertyBinding.prototype = {\n\n\tconstructor: PropertyBinding,\n\n\tgetValue: function getValue_unbound( targetArray, offset ) {\n\n\t\tthis.bind();\n\t\tthis.getValue( targetArray, offset );\n\n\t\t// Note: This class uses a State pattern on a per-method basis:\n\t\t// 'bind' sets 'this.getValue' / 'setValue' and shadows the\n\t\t// prototype version of these methods with one that represents\n\t\t// the bound state. When the property is not found, the methods\n\t\t// become no-ops.\n\n\t},\n\n\tsetValue: function getValue_unbound( sourceArray, offset ) {\n\n\t\tthis.bind();\n\t\tthis.setValue( sourceArray, offset );\n\n\t},\n\n\t// create getter / setter pair for a property in the scene graph\n\tbind: function() {\n\n\t\tvar targetObject = this.node,\n\t\t\tparsedPath = this.parsedPath,\n\n\t\t\tobjectName = parsedPath.objectName,\n\t\t\tpropertyName = parsedPath.propertyName,\n\t\t\tpropertyIndex = parsedPath.propertyIndex;\n\n\t\tif ( ! targetObject ) {\n\n\t\t\ttargetObject = PropertyBinding.findNode(\n\t\t\t\t\tthis.rootNode, parsedPath.nodeName ) || this.rootNode;\n\n\t\t\tthis.node = targetObject;\n\n\t\t}\n\n\t\t// set fail state so we can just 'return' on error\n\t\tthis.getValue = this._getValue_unavailable;\n\t\tthis.setValue = this._setValue_unavailable;\n\n \t\t// ensure there is a value node\n\t\tif ( ! targetObject ) {\n\n\t\t\tconsole.error( \" trying to update node for track: \" + this.path + \" but it wasn't found.\" );\n\t\t\treturn;\n\n\t\t}\n\n\t\tif ( objectName ) {\n\n\t\t\tvar objectIndex = parsedPath.objectIndex;\n\n\t\t\t// special cases were we need to reach deeper into the hierarchy to get the face materials....\n\t\t\tswitch ( objectName ) {\n\n\t\t\t\tcase 'materials':\n\n\t\t\t\t\tif ( ! targetObject.material ) {\n\n\t\t\t\t\t\tconsole.error( ' can not bind to material as node does not have a material', this );\n\t\t\t\t\t\treturn;\n\n\t\t\t\t\t}\n\n\t\t\t\t\tif ( ! targetObject.material.materials ) {\n\n\t\t\t\t\t\tconsole.error( ' can not bind to material.materials as node.material does not have a materials array', this );\n\t\t\t\t\t\treturn;\n\n\t\t\t\t\t}\n\n\t\t\t\t\ttargetObject = targetObject.material.materials;\n\n\t\t\t\t\tbreak;\n\n\t\t\t\tcase 'bones':\n\n\t\t\t\t\tif ( ! targetObject.skeleton ) {\n\n\t\t\t\t\t\tconsole.error( ' can not bind to bones as node does not have a skeleton', this );\n\t\t\t\t\t\treturn;\n\n\t\t\t\t\t}\n\n\t\t\t\t\t// potential future optimization: skip this if propertyIndex is already an integer\n\t\t\t\t\t// and convert the integer string to a true integer.\n\n\t\t\t\t\ttargetObject = targetObject.skeleton.bones;\n\n\t\t\t\t\t// support resolving morphTarget names into indices.\n\t\t\t\t\tfor ( var i = 0; i < targetObject.length; i ++ ) {\n\n\t\t\t\t\t\tif ( targetObject[ i ].name === objectIndex ) {\n\n\t\t\t\t\t\t\tobjectIndex = i;\n\t\t\t\t\t\t\tbreak;\n\n\t\t\t\t\t\t}\n\n\t\t\t\t\t}\n\n\t\t\t\t\tbreak;\n\n\t\t\t\tdefault:\n\n\t\t\t\t\tif ( targetObject[ objectName ] === undefined ) {\n\n\t\t\t\t\t\tconsole.error( ' can not bind to objectName of node, undefined', this );\n\t\t\t\t\t\treturn;\n\n\t\t\t\t\t}\n\n\t\t\t\t\ttargetObject = targetObject[ objectName ];\n\n\t\t\t}\n\n\n\t\t\tif ( objectIndex !== undefined ) {\n\n\t\t\t\tif ( targetObject[ objectIndex ] === undefined ) {\n\n\t\t\t\t\tconsole.error( \" trying to bind to objectIndex of objectName, but is undefined:\", this, targetObject );\n\t\t\t\t\treturn;\n\n\t\t\t\t}\n\n\t\t\t\ttargetObject = targetObject[ objectIndex ];\n\n\t\t\t}\n\n\t\t}\n\n\t\t// resolve property\n\t\tvar nodeProperty = targetObject[ propertyName ];\n\n\t\tif ( nodeProperty === undefined ) {\n\n\t\t\tvar nodeName = parsedPath.nodeName;\n\n\t\t\tconsole.error( \" trying to update property for track: \" + nodeName +\n\t\t\t\t\t'.' + propertyName + \" but it wasn't found.\", targetObject );\n\t\t\treturn;\n\n\t\t}\n\n\t\t// determine versioning scheme\n\t\tvar versioning = this.Versioning.None;\n\n\t\tif ( targetObject.needsUpdate !== undefined ) { // material\n\n\t\t\tversioning = this.Versioning.NeedsUpdate;\n\t\t\tthis.targetObject = targetObject;\n\n\t\t} else if ( targetObject.matrixWorldNeedsUpdate !== undefined ) { // node transform\n\n\t\t\tversioning = this.Versioning.MatrixWorldNeedsUpdate;\n\t\t\tthis.targetObject = targetObject;\n\n\t\t}\n\n\t\t// determine how the property gets bound\n\t\tvar bindingType = this.BindingType.Direct;\n\n\t\tif ( propertyIndex !== undefined ) {\n\t\t\t// access a sub element of the property array (only primitives are supported right now)\n\n\t\t\tif ( propertyName === \"morphTargetInfluences\" ) {\n\t\t\t\t// potential optimization, skip this if propertyIndex is already an integer, and convert the integer string to a true integer.\n\n\t\t\t\t// support resolving morphTarget names into indices.\n\t\t\t\tif ( ! targetObject.geometry ) {\n\n\t\t\t\t\tconsole.error( ' can not bind to morphTargetInfluences becasuse node does not have a geometry', this );\n\t\t\t\t\treturn;\n\n\t\t\t\t}\n\n\t\t\t\tif ( ! targetObject.geometry.morphTargets ) {\n\n\t\t\t\t\tconsole.error( ' can not bind to morphTargetInfluences becasuse node does not have a geometry.morphTargets', this );\n\t\t\t\t\treturn;\n\n\t\t\t\t}\n\n\t\t\t\tfor ( var i = 0; i < this.node.geometry.morphTargets.length; i ++ ) {\n\n\t\t\t\t\tif ( targetObject.geometry.morphTargets[ i ].name === propertyIndex ) {\n\n\t\t\t\t\t\tpropertyIndex = i;\n\t\t\t\t\t\tbreak;\n\n\t\t\t\t\t}\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t\tbindingType = this.BindingType.ArrayElement;\n\n\t\t\tthis.resolvedProperty = nodeProperty;\n\t\t\tthis.propertyIndex = propertyIndex;\n\n\t\t} else if ( nodeProperty.fromArray !== undefined && nodeProperty.toArray !== undefined ) {\n\t\t\t// must use copy for Object3D.Euler/Quaternion\n\n\t\t\tbindingType = this.BindingType.HasFromToArray;\n\n\t\t\tthis.resolvedProperty = nodeProperty;\n\n\t\t} else if ( nodeProperty.length !== undefined ) {\n\n\t\t\tbindingType = this.BindingType.EntireArray;\n\n\t\t\tthis.resolvedProperty = nodeProperty;\n\n\t\t} else {\n\n\t\t\tthis.propertyName = propertyName;\n\n\t\t}\n\n\t\t// select getter / setter\n\t\tthis.getValue = this.GetterByBindingType[ bindingType ];\n\t\tthis.setValue = this.SetterByBindingTypeAndVersioning[ bindingType ][ versioning ];\n\n\t},\n\n\tunbind: function() {\n\n\t\tthis.node = null;\n\n\t\t// back to the prototype version of getValue / setValue\n\t\t// note: avoiding to mutate the shape of 'this' via 'delete'\n\t\tthis.getValue = this._getValue_unbound;\n\t\tthis.setValue = this._setValue_unbound;\n\n\t}\n\n};\n\nObject.assign( PropertyBinding.prototype, { // prototype, continued\n\n\t// these are used to \"bind\" a nonexistent property\n\t_getValue_unavailable: function() {},\n\t_setValue_unavailable: function() {},\n\n\t// initial state of these methods that calls 'bind'\n\t_getValue_unbound: PropertyBinding.prototype.getValue,\n\t_setValue_unbound: PropertyBinding.prototype.setValue,\n\n\tBindingType: {\n\t\tDirect: 0,\n\t\tEntireArray: 1,\n\t\tArrayElement: 2,\n\t\tHasFromToArray: 3\n\t},\n\n\tVersioning: {\n\t\tNone: 0,\n\t\tNeedsUpdate: 1,\n\t\tMatrixWorldNeedsUpdate: 2\n\t},\n\n\tGetterByBindingType: [\n\n\t\tfunction getValue_direct( buffer, offset ) {\n\n\t\t\tbuffer[ offset ] = this.node[ this.propertyName ];\n\n\t\t},\n\n\t\tfunction getValue_array( buffer, offset ) {\n\n\t\t\tvar source = this.resolvedProperty;\n\n\t\t\tfor ( var i = 0, n = source.length; i !== n; ++ i ) {\n\n\t\t\t\tbuffer[ offset ++ ] = source[ i ];\n\n\t\t\t}\n\n\t\t},\n\n\t\tfunction getValue_arrayElement( buffer, offset ) {\n\n\t\t\tbuffer[ offset ] = this.resolvedProperty[ this.propertyIndex ];\n\n\t\t},\n\n\t\tfunction getValue_toArray( buffer, offset ) {\n\n\t\t\tthis.resolvedProperty.toArray( buffer, offset );\n\n\t\t}\n\n\t],\n\n\tSetterByBindingTypeAndVersioning: [\n\n\t\t[\n\t\t\t// Direct\n\n\t\t\tfunction setValue_direct( buffer, offset ) {\n\n\t\t\t\tthis.node[ this.propertyName ] = buffer[ offset ];\n\n\t\t\t},\n\n\t\t\tfunction setValue_direct_setNeedsUpdate( buffer, offset ) {\n\n\t\t\t\tthis.node[ this.propertyName ] = buffer[ offset ];\n\t\t\t\tthis.targetObject.needsUpdate = true;\n\n\t\t\t},\n\n\t\t\tfunction setValue_direct_setMatrixWorldNeedsUpdate( buffer, offset ) {\n\n\t\t\t\tthis.node[ this.propertyName ] = buffer[ offset ];\n\t\t\t\tthis.targetObject.matrixWorldNeedsUpdate = true;\n\n\t\t\t}\n\n\t\t], [\n\n\t\t\t// EntireArray\n\n\t\t\tfunction setValue_array( buffer, offset ) {\n\n\t\t\t\tvar dest = this.resolvedProperty;\n\n\t\t\t\tfor ( var i = 0, n = dest.length; i !== n; ++ i ) {\n\n\t\t\t\t\tdest[ i ] = buffer[ offset ++ ];\n\n\t\t\t\t}\n\n\t\t\t},\n\n\t\t\tfunction setValue_array_setNeedsUpdate( buffer, offset ) {\n\n\t\t\t\tvar dest = this.resolvedProperty;\n\n\t\t\t\tfor ( var i = 0, n = dest.length; i !== n; ++ i ) {\n\n\t\t\t\t\tdest[ i ] = buffer[ offset ++ ];\n\n\t\t\t\t}\n\n\t\t\t\tthis.targetObject.needsUpdate = true;\n\n\t\t\t},\n\n\t\t\tfunction setValue_array_setMatrixWorldNeedsUpdate( buffer, offset ) {\n\n\t\t\t\tvar dest = this.resolvedProperty;\n\n\t\t\t\tfor ( var i = 0, n = dest.length; i !== n; ++ i ) {\n\n\t\t\t\t\tdest[ i ] = buffer[ offset ++ ];\n\n\t\t\t\t}\n\n\t\t\t\tthis.targetObject.matrixWorldNeedsUpdate = true;\n\n\t\t\t}\n\n\t\t], [\n\n\t\t\t// ArrayElement\n\n\t\t\tfunction setValue_arrayElement( buffer, offset ) {\n\n\t\t\t\tthis.resolvedProperty[ this.propertyIndex ] = buffer[ offset ];\n\n\t\t\t},\n\n\t\t\tfunction setValue_arrayElement_setNeedsUpdate( buffer, offset ) {\n\n\t\t\t\tthis.resolvedProperty[ this.propertyIndex ] = buffer[ offset ];\n\t\t\t\tthis.targetObject.needsUpdate = true;\n\n\t\t\t},\n\n\t\t\tfunction setValue_arrayElement_setMatrixWorldNeedsUpdate( buffer, offset ) {\n\n\t\t\t\tthis.resolvedProperty[ this.propertyIndex ] = buffer[ offset ];\n\t\t\t\tthis.targetObject.matrixWorldNeedsUpdate = true;\n\n\t\t\t}\n\n\t\t], [\n\n\t\t\t// HasToFromArray\n\n\t\t\tfunction setValue_fromArray( buffer, offset ) {\n\n\t\t\t\tthis.resolvedProperty.fromArray( buffer, offset );\n\n\t\t\t},\n\n\t\t\tfunction setValue_fromArray_setNeedsUpdate( buffer, offset ) {\n\n\t\t\t\tthis.resolvedProperty.fromArray( buffer, offset );\n\t\t\t\tthis.targetObject.needsUpdate = true;\n\n\t\t\t},\n\n\t\t\tfunction setValue_fromArray_setMatrixWorldNeedsUpdate( buffer, offset ) {\n\n\t\t\t\tthis.resolvedProperty.fromArray( buffer, offset );\n\t\t\t\tthis.targetObject.matrixWorldNeedsUpdate = true;\n\n\t\t\t}\n\n\t\t]\n\n\t]\n\n} );\n\nPropertyBinding.Composite =\n\t\tfunction( targetGroup, path, optionalParsedPath ) {\n\n\tvar parsedPath = optionalParsedPath ||\n\t\t\tPropertyBinding.parseTrackName( path );\n\n\tthis._targetGroup = targetGroup;\n\tthis._bindings = targetGroup.subscribe_( path, parsedPath );\n\n};\n\nPropertyBinding.Composite.prototype = {\n\n\tconstructor: PropertyBinding.Composite,\n\n\tgetValue: function( array, offset ) {\n\n\t\tthis.bind(); // bind all binding\n\n\t\tvar firstValidIndex = this._targetGroup.nCachedObjects_,\n\t\t\tbinding = this._bindings[ firstValidIndex ];\n\n\t\t// and only call .getValue on the first\n\t\tif ( binding !== undefined ) binding.getValue( array, offset );\n\n\t},\n\n\tsetValue: function( array, offset ) {\n\n\t\tvar bindings = this._bindings;\n\n\t\tfor ( var i = this._targetGroup.nCachedObjects_,\n\t\t\t\tn = bindings.length; i !== n; ++ i ) {\n\n\t\t\tbindings[ i ].setValue( array, offset );\n\n\t\t}\n\n\t},\n\n\tbind: function() {\n\n\t\tvar bindings = this._bindings;\n\n\t\tfor ( var i = this._targetGroup.nCachedObjects_,\n\t\t\t\tn = bindings.length; i !== n; ++ i ) {\n\n\t\t\tbindings[ i ].bind();\n\n\t\t}\n\n\t},\n\n\tunbind: function() {\n\n\t\tvar bindings = this._bindings;\n\n\t\tfor ( var i = this._targetGroup.nCachedObjects_,\n\t\t\t\tn = bindings.length; i !== n; ++ i ) {\n\n\t\t\tbindings[ i ].unbind();\n\n\t\t}\n\n\t}\n\n};\n\nPropertyBinding.create = function( root, path, parsedPath ) {\n\n\tif ( ! ( (root && root.isAnimationObjectGroup) ) ) {\n\n\t\treturn new PropertyBinding( root, path, parsedPath );\n\n\t} else {\n\n\t\treturn new PropertyBinding.Composite( root, path, parsedPath );\n\n\t}\n\n};\n\nPropertyBinding.parseTrackName = function( trackName ) {\n\n\t// matches strings in the form of:\n\t// nodeName.property\n\t// nodeName.property[accessor]\n\t// nodeName.material.property[accessor]\n\t// uuid.property[accessor]\n\t// uuid.objectName[objectIndex].propertyName[propertyIndex]\n\t// parentName/nodeName.property\n\t// parentName/parentName/nodeName.property[index]\n\t// .bone[Armature.DEF_cog].position\n\t// scene:helium_balloon_model:helium_balloon_model.position\n\t// created and tested via https://regex101.com/#javascript\n\n\tvar re = /^((?:\\w+[\\/:])*)(\\w+)?(?:\\.(\\w+)(?:\\[(.+)\\])?)?\\.(\\w+)(?:\\[(.+)\\])?$/;\n\tvar matches = re.exec( trackName );\n\n\tif ( ! matches ) {\n\n\t\tthrow new Error( \"cannot parse trackName at all: \" + trackName );\n\n\t}\n\n\tvar results = {\n\t\t// directoryName: matches[ 1 ], // (tschw) currently unused\n\t\tnodeName: matches[ 2 ], \t// allowed to be null, specified root node.\n\t\tobjectName: matches[ 3 ],\n\t\tobjectIndex: matches[ 4 ],\n\t\tpropertyName: matches[ 5 ],\n\t\tpropertyIndex: matches[ 6 ]\t// allowed to be null, specifies that the whole property is set.\n\t};\n\n\tif ( results.propertyName === null || results.propertyName.length === 0 ) {\n\n\t\tthrow new Error( \"can not parse propertyName from trackName: \" + trackName );\n\n\t}\n\n\treturn results;\n\n};\n\nPropertyBinding.findNode = function( root, nodeName ) {\n\n\tif ( ! nodeName || nodeName === \"\" || nodeName === \"root\" || nodeName === \".\" || nodeName === -1 || nodeName === root.name || nodeName === root.uuid ) {\n\n\t\treturn root;\n\n\t}\n\n\t// search into skeleton bones.\n\tif ( root.skeleton ) {\n\n\t\tvar searchSkeleton = function( skeleton ) {\n\n\t\t\tfor( var i = 0; i < skeleton.bones.length; i ++ ) {\n\n\t\t\t\tvar bone = skeleton.bones[ i ];\n\n\t\t\t\tif ( bone.name === nodeName ) {\n\n\t\t\t\t\treturn bone;\n\n\t\t\t\t}\n\t\t\t}\n\n\t\t\treturn null;\n\n\t\t};\n\n\t\tvar bone = searchSkeleton( root.skeleton );\n\n\t\tif ( bone ) {\n\n\t\t\treturn bone;\n\n\t\t}\n\t}\n\n\t// search into node subtree.\n\tif ( root.children ) {\n\n\t\tvar searchNodeSubtree = function( children ) {\n\n\t\t\tfor( var i = 0; i < children.length; i ++ ) {\n\n\t\t\t\tvar childNode = children[ i ];\n\n\t\t\t\tif ( childNode.name === nodeName || childNode.uuid === nodeName ) {\n\n\t\t\t\t\treturn childNode;\n\n\t\t\t\t}\n\n\t\t\t\tvar result = searchNodeSubtree( childNode.children );\n\n\t\t\t\tif ( result ) return result;\n\n\t\t\t}\n\n\t\t\treturn null;\n\n\t\t};\n\n\t\tvar subTreeNode = searchNodeSubtree( root.children );\n\n\t\tif ( subTreeNode ) {\n\n\t\t\treturn subTreeNode;\n\n\t\t}\n\n\t}\n\n\treturn null;\n\n};\n\n\nexport { PropertyBinding };\n","import { PropertyBinding } from './PropertyBinding';\nimport { _Math } from '../math/Math';\n\n/**\n *\n * A group of objects that receives a shared animation state.\n *\n * Usage:\n *\n * \t-\tAdd objects you would otherwise pass as 'root' to the\n * \t\tconstructor or the .clipAction method of AnimationMixer.\n *\n * \t-\tInstead pass this object as 'root'.\n *\n * \t-\tYou can also add and remove objects later when the mixer\n * \t\tis running.\n *\n * Note:\n *\n * \tObjects of this class appear as one object to the mixer,\n * \tso cache control of the individual objects must be done\n * \ton the group.\n *\n * Limitation:\n *\n * \t- \tThe animated properties must be compatible among the\n * \t\tall objects in the group.\n *\n * -\tA single property can either be controlled through a\n * \ttarget group or directly, but not both.\n *\n * @author tschw\n */\n\nfunction AnimationObjectGroup( var_args ) {\n\n\tthis.uuid = _Math.generateUUID();\n\n\t// cached objects followed by the active ones\n\tthis._objects = Array.prototype.slice.call( arguments );\n\n\tthis.nCachedObjects_ = 0;\t\t\t// threshold\n\t// note: read by PropertyBinding.Composite\n\n\tvar indices = {};\n\tthis._indicesByUUID = indices;\t\t// for bookkeeping\n\n\tfor ( var i = 0, n = arguments.length; i !== n; ++ i ) {\n\n\t\tindices[ arguments[ i ].uuid ] = i;\n\n\t}\n\n\tthis._paths = [];\t\t\t\t\t// inside: string\n\tthis._parsedPaths = [];\t\t\t\t// inside: { we don't care, here }\n\tthis._bindings = []; \t\t\t\t// inside: Array< PropertyBinding >\n\tthis._bindingsIndicesByPath = {}; \t// inside: indices in these arrays\n\n\tvar scope = this;\n\n\tthis.stats = {\n\n\t\tobjects: {\n\t\t\tget total() { return scope._objects.length; },\n\t\t\tget inUse() { return this.total - scope.nCachedObjects_; }\n\t\t},\n\n\t\tget bindingsPerObject() { return scope._bindings.length; }\n\n\t};\n\n}\n\nAnimationObjectGroup.prototype = {\n\n\tconstructor: AnimationObjectGroup,\n\n\tisAnimationObjectGroup: true,\n\n\tadd: function( var_args ) {\n\n\t\tvar objects = this._objects,\n\t\t\tnObjects = objects.length,\n\t\t\tnCachedObjects = this.nCachedObjects_,\n\t\t\tindicesByUUID = this._indicesByUUID,\n\t\t\tpaths = this._paths,\n\t\t\tparsedPaths = this._parsedPaths,\n\t\t\tbindings = this._bindings,\n\t\t\tnBindings = bindings.length;\n\n\t\tfor ( var i = 0, n = arguments.length; i !== n; ++ i ) {\n\n\t\t\tvar object = arguments[ i ],\n\t\t\t\tuuid = object.uuid,\n\t\t\t\tindex = indicesByUUID[ uuid ];\n\n\t\t\tif ( index === undefined ) {\n\n\t\t\t\t// unknown object -> add it to the ACTIVE region\n\n\t\t\t\tindex = nObjects ++;\n\t\t\t\tindicesByUUID[ uuid ] = index;\n\t\t\t\tobjects.push( object );\n\n\t\t\t\t// accounting is done, now do the same for all bindings\n\n\t\t\t\tfor ( var j = 0, m = nBindings; j !== m; ++ j ) {\n\n\t\t\t\t\tbindings[ j ].push(\n\t\t\t\t\t\t\tnew PropertyBinding(\n\t\t\t\t\t\t\t\tobject, paths[ j ], parsedPaths[ j ] ) );\n\n\t\t\t\t}\n\n\t\t\t} else if ( index < nCachedObjects ) {\n\n\t\t\t\tvar knownObject = objects[ index ];\n\n\t\t\t\t// move existing object to the ACTIVE region\n\n\t\t\t\tvar firstActiveIndex = -- nCachedObjects,\n\t\t\t\t\tlastCachedObject = objects[ firstActiveIndex ];\n\n\t\t\t\tindicesByUUID[ lastCachedObject.uuid ] = index;\n\t\t\t\tobjects[ index ] = lastCachedObject;\n\n\t\t\t\tindicesByUUID[ uuid ] = firstActiveIndex;\n\t\t\t\tobjects[ firstActiveIndex ] = object;\n\n\t\t\t\t// accounting is done, now do the same for all bindings\n\n\t\t\t\tfor ( var j = 0, m = nBindings; j !== m; ++ j ) {\n\n\t\t\t\t\tvar bindingsForPath = bindings[ j ],\n\t\t\t\t\t\tlastCached = bindingsForPath[ firstActiveIndex ],\n\t\t\t\t\t\tbinding = bindingsForPath[ index ];\n\n\t\t\t\t\tbindingsForPath[ index ] = lastCached;\n\n\t\t\t\t\tif ( binding === undefined ) {\n\n\t\t\t\t\t\t// since we do not bother to create new bindings\n\t\t\t\t\t\t// for objects that are cached, the binding may\n\t\t\t\t\t\t// or may not exist\n\n\t\t\t\t\t\tbinding = new PropertyBinding(\n\t\t\t\t\t\t\t\tobject, paths[ j ], parsedPaths[ j ] );\n\n\t\t\t\t\t}\n\n\t\t\t\t\tbindingsForPath[ firstActiveIndex ] = binding;\n\n\t\t\t\t}\n\n\t\t\t} else if ( objects[ index ] !== knownObject) {\n\n\t\t\t\tconsole.error( \"Different objects with the same UUID \" +\n\t\t\t\t\t\t\"detected. Clean the caches or recreate your \" +\n\t\t\t\t\t\t\"infrastructure when reloading scenes...\" );\n\n\t\t\t} // else the object is already where we want it to be\n\n\t\t} // for arguments\n\n\t\tthis.nCachedObjects_ = nCachedObjects;\n\n\t},\n\n\tremove: function( var_args ) {\n\n\t\tvar objects = this._objects,\n\t\t\tnCachedObjects = this.nCachedObjects_,\n\t\t\tindicesByUUID = this._indicesByUUID,\n\t\t\tbindings = this._bindings,\n\t\t\tnBindings = bindings.length;\n\n\t\tfor ( var i = 0, n = arguments.length; i !== n; ++ i ) {\n\n\t\t\tvar object = arguments[ i ],\n\t\t\t\tuuid = object.uuid,\n\t\t\t\tindex = indicesByUUID[ uuid ];\n\n\t\t\tif ( index !== undefined && index >= nCachedObjects ) {\n\n\t\t\t\t// move existing object into the CACHED region\n\n\t\t\t\tvar lastCachedIndex = nCachedObjects ++,\n\t\t\t\t\tfirstActiveObject = objects[ lastCachedIndex ];\n\n\t\t\t\tindicesByUUID[ firstActiveObject.uuid ] = index;\n\t\t\t\tobjects[ index ] = firstActiveObject;\n\n\t\t\t\tindicesByUUID[ uuid ] = lastCachedIndex;\n\t\t\t\tobjects[ lastCachedIndex ] = object;\n\n\t\t\t\t// accounting is done, now do the same for all bindings\n\n\t\t\t\tfor ( var j = 0, m = nBindings; j !== m; ++ j ) {\n\n\t\t\t\t\tvar bindingsForPath = bindings[ j ],\n\t\t\t\t\t\tfirstActive = bindingsForPath[ lastCachedIndex ],\n\t\t\t\t\t\tbinding = bindingsForPath[ index ];\n\n\t\t\t\t\tbindingsForPath[ index ] = firstActive;\n\t\t\t\t\tbindingsForPath[ lastCachedIndex ] = binding;\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t} // for arguments\n\n\t\tthis.nCachedObjects_ = nCachedObjects;\n\n\t},\n\n\t// remove & forget\n\tuncache: function( var_args ) {\n\n\t\tvar objects = this._objects,\n\t\t\tnObjects = objects.length,\n\t\t\tnCachedObjects = this.nCachedObjects_,\n\t\t\tindicesByUUID = this._indicesByUUID,\n\t\t\tbindings = this._bindings,\n\t\t\tnBindings = bindings.length;\n\n\t\tfor ( var i = 0, n = arguments.length; i !== n; ++ i ) {\n\n\t\t\tvar object = arguments[ i ],\n\t\t\t\tuuid = object.uuid,\n\t\t\t\tindex = indicesByUUID[ uuid ];\n\n\t\t\tif ( index !== undefined ) {\n\n\t\t\t\tdelete indicesByUUID[ uuid ];\n\n\t\t\t\tif ( index < nCachedObjects ) {\n\n\t\t\t\t\t// object is cached, shrink the CACHED region\n\n\t\t\t\t\tvar firstActiveIndex = -- nCachedObjects,\n\t\t\t\t\t\tlastCachedObject = objects[ firstActiveIndex ],\n\t\t\t\t\t\tlastIndex = -- nObjects,\n\t\t\t\t\t\tlastObject = objects[ lastIndex ];\n\n\t\t\t\t\t// last cached object takes this object's place\n\t\t\t\t\tindicesByUUID[ lastCachedObject.uuid ] = index;\n\t\t\t\t\tobjects[ index ] = lastCachedObject;\n\n\t\t\t\t\t// last object goes to the activated slot and pop\n\t\t\t\t\tindicesByUUID[ lastObject.uuid ] = firstActiveIndex;\n\t\t\t\t\tobjects[ firstActiveIndex ] = lastObject;\n\t\t\t\t\tobjects.pop();\n\n\t\t\t\t\t// accounting is done, now do the same for all bindings\n\n\t\t\t\t\tfor ( var j = 0, m = nBindings; j !== m; ++ j ) {\n\n\t\t\t\t\t\tvar bindingsForPath = bindings[ j ],\n\t\t\t\t\t\t\tlastCached = bindingsForPath[ firstActiveIndex ],\n\t\t\t\t\t\t\tlast = bindingsForPath[ lastIndex ];\n\n\t\t\t\t\t\tbindingsForPath[ index ] = lastCached;\n\t\t\t\t\t\tbindingsForPath[ firstActiveIndex ] = last;\n\t\t\t\t\t\tbindingsForPath.pop();\n\n\t\t\t\t\t}\n\n\t\t\t\t} else {\n\n\t\t\t\t\t// object is active, just swap with the last and pop\n\n\t\t\t\t\tvar lastIndex = -- nObjects,\n\t\t\t\t\t\tlastObject = objects[ lastIndex ];\n\n\t\t\t\t\tindicesByUUID[ lastObject.uuid ] = index;\n\t\t\t\t\tobjects[ index ] = lastObject;\n\t\t\t\t\tobjects.pop();\n\n\t\t\t\t\t// accounting is done, now do the same for all bindings\n\n\t\t\t\t\tfor ( var j = 0, m = nBindings; j !== m; ++ j ) {\n\n\t\t\t\t\t\tvar bindingsForPath = bindings[ j ];\n\n\t\t\t\t\t\tbindingsForPath[ index ] = bindingsForPath[ lastIndex ];\n\t\t\t\t\t\tbindingsForPath.pop();\n\n\t\t\t\t\t}\n\n\t\t\t\t} // cached or active\n\n\t\t\t} // if object is known\n\n\t\t} // for arguments\n\n\t\tthis.nCachedObjects_ = nCachedObjects;\n\n\t},\n\n\t// Internal interface used by befriended PropertyBinding.Composite:\n\n\tsubscribe_: function( path, parsedPath ) {\n\t\t// returns an array of bindings for the given path that is changed\n\t\t// according to the contained objects in the group\n\n\t\tvar indicesByPath = this._bindingsIndicesByPath,\n\t\t\tindex = indicesByPath[ path ],\n\t\t\tbindings = this._bindings;\n\n\t\tif ( index !== undefined ) return bindings[ index ];\n\n\t\tvar paths = this._paths,\n\t\t\tparsedPaths = this._parsedPaths,\n\t\t\tobjects = this._objects,\n\t\t\tnObjects = objects.length,\n\t\t\tnCachedObjects = this.nCachedObjects_,\n\t\t\tbindingsForPath = new Array( nObjects );\n\n\t\tindex = bindings.length;\n\n\t\tindicesByPath[ path ] = index;\n\n\t\tpaths.push( path );\n\t\tparsedPaths.push( parsedPath );\n\t\tbindings.push( bindingsForPath );\n\n\t\tfor ( var i = nCachedObjects,\n\t\t\t\tn = objects.length; i !== n; ++ i ) {\n\n\t\t\tvar object = objects[ i ];\n\n\t\t\tbindingsForPath[ i ] =\n\t\t\t\t\tnew PropertyBinding( object, path, parsedPath );\n\n\t\t}\n\n\t\treturn bindingsForPath;\n\n\t},\n\n\tunsubscribe_: function( path ) {\n\t\t// tells the group to forget about a property path and no longer\n\t\t// update the array previously obtained with 'subscribe_'\n\n\t\tvar indicesByPath = this._bindingsIndicesByPath,\n\t\t\tindex = indicesByPath[ path ];\n\n\t\tif ( index !== undefined ) {\n\n\t\t\tvar paths = this._paths,\n\t\t\t\tparsedPaths = this._parsedPaths,\n\t\t\t\tbindings = this._bindings,\n\t\t\t\tlastBindingsIndex = bindings.length - 1,\n\t\t\t\tlastBindings = bindings[ lastBindingsIndex ],\n\t\t\t\tlastBindingsPath = path[ lastBindingsIndex ];\n\n\t\t\tindicesByPath[ lastBindingsPath ] = index;\n\n\t\t\tbindings[ index ] = lastBindings;\n\t\t\tbindings.pop();\n\n\t\t\tparsedPaths[ index ] = parsedPaths[ lastBindingsIndex ];\n\t\t\tparsedPaths.pop();\n\n\t\t\tpaths[ index ] = paths[ lastBindingsIndex ];\n\t\t\tpaths.pop();\n\n\t\t}\n\n\t}\n\n};\n\n\n\nexport { AnimationObjectGroup };\n","import { WrapAroundEnding, ZeroCurvatureEnding, ZeroSlopeEnding, LoopPingPong, LoopOnce, LoopRepeat } from '../constants';\n\n/**\n *\n * Action provided by AnimationMixer for scheduling clip playback on specific\n * objects.\n *\n * @author Ben Houston / http://clara.io/\n * @author David Sarno / http://lighthaus.us/\n * @author tschw\n *\n */\n\nfunction AnimationAction( mixer, clip, localRoot ) {\n\n\tthis._mixer = mixer;\n\tthis._clip = clip;\n\tthis._localRoot = localRoot || null;\n\n\tvar tracks = clip.tracks,\n\t\tnTracks = tracks.length,\n\t\tinterpolants = new Array( nTracks );\n\n\tvar interpolantSettings = {\n\t\t\tendingStart: \tZeroCurvatureEnding,\n\t\t\tendingEnd:\t\tZeroCurvatureEnding\n\t};\n\n\tfor ( var i = 0; i !== nTracks; ++ i ) {\n\n\t\tvar interpolant = tracks[ i ].createInterpolant( null );\n\t\tinterpolants[ i ] = interpolant;\n\t\tinterpolant.settings = interpolantSettings;\n\n\t}\n\n\tthis._interpolantSettings = interpolantSettings;\n\n\tthis._interpolants = interpolants;\t// bound by the mixer\n\n\t// inside: PropertyMixer (managed by the mixer)\n\tthis._propertyBindings = new Array( nTracks );\n\n\tthis._cacheIndex = null;\t\t\t// for the memory manager\n\tthis._byClipCacheIndex = null;\t\t// for the memory manager\n\n\tthis._timeScaleInterpolant = null;\n\tthis._weightInterpolant = null;\n\n\tthis.loop = LoopRepeat;\n\tthis._loopCount = -1;\n\n\t// global mixer time when the action is to be started\n\t// it's set back to 'null' upon start of the action\n\tthis._startTime = null;\n\n\t// scaled local time of the action\n\t// gets clamped or wrapped to 0..clip.duration according to loop\n\tthis.time = 0;\n\n\tthis.timeScale = 1;\n\tthis._effectiveTimeScale = 1;\n\n\tthis.weight = 1;\n\tthis._effectiveWeight = 1;\n\n\tthis.repetitions = Infinity; \t\t// no. of repetitions when looping\n\n\tthis.paused = false;\t\t\t\t// false -> zero effective time scale\n\tthis.enabled = true;\t\t\t\t// true -> zero effective weight\n\n\tthis.clampWhenFinished \t= false;\t// keep feeding the last frame?\n\n\tthis.zeroSlopeAtStart \t= true;\t\t// for smooth interpolation w/o separate\n\tthis.zeroSlopeAtEnd\t\t= true;\t\t// clips for start, loop and end\n\n};\n\nAnimationAction.prototype = {\n\n\tconstructor: AnimationAction,\n\n\t// State & Scheduling\n\n\tplay: function() {\n\n\t\tthis._mixer._activateAction( this );\n\n\t\treturn this;\n\n\t},\n\n\tstop: function() {\n\n\t\tthis._mixer._deactivateAction( this );\n\n\t\treturn this.reset();\n\n\t},\n\n\treset: function() {\n\n\t\tthis.paused = false;\n\t\tthis.enabled = true;\n\n\t\tthis.time = 0;\t\t\t// restart clip\n\t\tthis._loopCount = -1;\t// forget previous loops\n\t\tthis._startTime = null;\t// forget scheduling\n\n\t\treturn this.stopFading().stopWarping();\n\n\t},\n\n\tisRunning: function() {\n\n\t\treturn this.enabled && ! this.paused && this.timeScale !== 0 &&\n\t\t\t\tthis._startTime === null && this._mixer._isActiveAction( this );\n\n\t},\n\n\t// return true when play has been called\n\tisScheduled: function() {\n\n\t\treturn this._mixer._isActiveAction( this );\n\n\t},\n\n\tstartAt: function( time ) {\n\n\t\tthis._startTime = time;\n\n\t\treturn this;\n\n\t},\n\n\tsetLoop: function( mode, repetitions ) {\n\n\t\tthis.loop = mode;\n\t\tthis.repetitions = repetitions;\n\n\t\treturn this;\n\n\t},\n\n\t// Weight\n\n\t// set the weight stopping any scheduled fading\n\t// although .enabled = false yields an effective weight of zero, this\n\t// method does *not* change .enabled, because it would be confusing\n\tsetEffectiveWeight: function( weight ) {\n\n\t\tthis.weight = weight;\n\n\t\t// note: same logic as when updated at runtime\n\t\tthis._effectiveWeight = this.enabled ? weight : 0;\n\n\t\treturn this.stopFading();\n\n\t},\n\n\t// return the weight considering fading and .enabled\n\tgetEffectiveWeight: function() {\n\n\t\treturn this._effectiveWeight;\n\n\t},\n\n\tfadeIn: function( duration ) {\n\n\t\treturn this._scheduleFading( duration, 0, 1 );\n\n\t},\n\n\tfadeOut: function( duration ) {\n\n\t\treturn this._scheduleFading( duration, 1, 0 );\n\n\t},\n\n\tcrossFadeFrom: function( fadeOutAction, duration, warp ) {\n\n\t\tfadeOutAction.fadeOut( duration );\n\t\tthis.fadeIn( duration );\n\n\t\tif( warp ) {\n\n\t\t\tvar fadeInDuration = this._clip.duration,\n\t\t\t\tfadeOutDuration = fadeOutAction._clip.duration,\n\n\t\t\t\tstartEndRatio = fadeOutDuration / fadeInDuration,\n\t\t\t\tendStartRatio = fadeInDuration / fadeOutDuration;\n\n\t\t\tfadeOutAction.warp( 1.0, startEndRatio, duration );\n\t\t\tthis.warp( endStartRatio, 1.0, duration );\n\n\t\t}\n\n\t\treturn this;\n\n\t},\n\n\tcrossFadeTo: function( fadeInAction, duration, warp ) {\n\n\t\treturn fadeInAction.crossFadeFrom( this, duration, warp );\n\n\t},\n\n\tstopFading: function() {\n\n\t\tvar weightInterpolant = this._weightInterpolant;\n\n\t\tif ( weightInterpolant !== null ) {\n\n\t\t\tthis._weightInterpolant = null;\n\t\t\tthis._mixer._takeBackControlInterpolant( weightInterpolant );\n\n\t\t}\n\n\t\treturn this;\n\n\t},\n\n\t// Time Scale Control\n\n\t// set the weight stopping any scheduled warping\n\t// although .paused = true yields an effective time scale of zero, this\n\t// method does *not* change .paused, because it would be confusing\n\tsetEffectiveTimeScale: function( timeScale ) {\n\n\t\tthis.timeScale = timeScale;\n\t\tthis._effectiveTimeScale = this.paused ? 0 :timeScale;\n\n\t\treturn this.stopWarping();\n\n\t},\n\n\t// return the time scale considering warping and .paused\n\tgetEffectiveTimeScale: function() {\n\n\t\treturn this._effectiveTimeScale;\n\n\t},\n\n\tsetDuration: function( duration ) {\n\n\t\tthis.timeScale = this._clip.duration / duration;\n\n\t\treturn this.stopWarping();\n\n\t},\n\n\tsyncWith: function( action ) {\n\n\t\tthis.time = action.time;\n\t\tthis.timeScale = action.timeScale;\n\n\t\treturn this.stopWarping();\n\n\t},\n\n\thalt: function( duration ) {\n\n\t\treturn this.warp( this._effectiveTimeScale, 0, duration );\n\n\t},\n\n\twarp: function( startTimeScale, endTimeScale, duration ) {\n\n\t\tvar mixer = this._mixer, now = mixer.time,\n\t\t\tinterpolant = this._timeScaleInterpolant,\n\n\t\t\ttimeScale = this.timeScale;\n\n\t\tif ( interpolant === null ) {\n\n\t\t\tinterpolant = mixer._lendControlInterpolant(),\n\t\t\tthis._timeScaleInterpolant = interpolant;\n\n\t\t}\n\n\t\tvar times = interpolant.parameterPositions,\n\t\t\tvalues = interpolant.sampleValues;\n\n\t\ttimes[ 0 ] = now;\n\t\ttimes[ 1 ] = now + duration;\n\n\t\tvalues[ 0 ] = startTimeScale / timeScale;\n\t\tvalues[ 1 ] = endTimeScale / timeScale;\n\n\t\treturn this;\n\n\t},\n\n\tstopWarping: function() {\n\n\t\tvar timeScaleInterpolant = this._timeScaleInterpolant;\n\n\t\tif ( timeScaleInterpolant !== null ) {\n\n\t\t\tthis._timeScaleInterpolant = null;\n\t\t\tthis._mixer._takeBackControlInterpolant( timeScaleInterpolant );\n\n\t\t}\n\n\t\treturn this;\n\n\t},\n\n\t// Object Accessors\n\n\tgetMixer: function() {\n\n\t\treturn this._mixer;\n\n\t},\n\n\tgetClip: function() {\n\n\t\treturn this._clip;\n\n\t},\n\n\tgetRoot: function() {\n\n\t\treturn this._localRoot || this._mixer._root;\n\n\t},\n\n\t// Interna\n\n\t_update: function( time, deltaTime, timeDirection, accuIndex ) {\n\t\t// called by the mixer\n\n\t\tvar startTime = this._startTime;\n\n\t\tif ( startTime !== null ) {\n\n\t\t\t// check for scheduled start of action\n\n\t\t\tvar timeRunning = ( time - startTime ) * timeDirection;\n\t\t\tif ( timeRunning < 0 || timeDirection === 0 ) {\n\n\t\t\t\treturn; // yet to come / don't decide when delta = 0\n\n\t\t\t}\n\n\t\t\t// start\n\n\t\t\tthis._startTime = null; // unschedule\n\t\t\tdeltaTime = timeDirection * timeRunning;\n\n\t\t}\n\n\t\t// apply time scale and advance time\n\n\t\tdeltaTime *= this._updateTimeScale( time );\n\t\tvar clipTime = this._updateTime( deltaTime );\n\n\t\t// note: _updateTime may disable the action resulting in\n\t\t// an effective weight of 0\n\n\t\tvar weight = this._updateWeight( time );\n\n\t\tif ( weight > 0 ) {\n\n\t\t\tvar interpolants = this._interpolants;\n\t\t\tvar propertyMixers = this._propertyBindings;\n\n\t\t\tfor ( var j = 0, m = interpolants.length; j !== m; ++ j ) {\n\n\t\t\t\tinterpolants[ j ].evaluate( clipTime );\n\t\t\t\tpropertyMixers[ j ].accumulate( accuIndex, weight );\n\n\t\t\t}\n\n\t\t}\n\n\t},\n\n\t_updateWeight: function( time ) {\n\n\t\tvar weight = 0;\n\n\t\tif ( this.enabled ) {\n\n\t\t\tweight = this.weight;\n\t\t\tvar interpolant = this._weightInterpolant;\n\n\t\t\tif ( interpolant !== null ) {\n\n\t\t\t\tvar interpolantValue = interpolant.evaluate( time )[ 0 ];\n\n\t\t\t\tweight *= interpolantValue;\n\n\t\t\t\tif ( time > interpolant.parameterPositions[ 1 ] ) {\n\n\t\t\t\t\tthis.stopFading();\n\n\t\t\t\t\tif ( interpolantValue === 0 ) {\n\n\t\t\t\t\t\t// faded out, disable\n\t\t\t\t\t\tthis.enabled = false;\n\n\t\t\t\t\t}\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t}\n\n\t\tthis._effectiveWeight = weight;\n\t\treturn weight;\n\n\t},\n\n\t_updateTimeScale: function( time ) {\n\n\t\tvar timeScale = 0;\n\n\t\tif ( ! this.paused ) {\n\n\t\t\ttimeScale = this.timeScale;\n\n\t\t\tvar interpolant = this._timeScaleInterpolant;\n\n\t\t\tif ( interpolant !== null ) {\n\n\t\t\t\tvar interpolantValue = interpolant.evaluate( time )[ 0 ];\n\n\t\t\t\ttimeScale *= interpolantValue;\n\n\t\t\t\tif ( time > interpolant.parameterPositions[ 1 ] ) {\n\n\t\t\t\t\tthis.stopWarping();\n\n\t\t\t\t\tif ( timeScale === 0 ) {\n\n\t\t\t\t\t\t// motion has halted, pause\n\t\t\t\t\t\tthis.paused = true;\n\n\t\t\t\t\t} else {\n\n\t\t\t\t\t\t// warp done - apply final time scale\n\t\t\t\t\t\tthis.timeScale = timeScale;\n\n\t\t\t\t\t}\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t}\n\n\t\tthis._effectiveTimeScale = timeScale;\n\t\treturn timeScale;\n\n\t},\n\n\t_updateTime: function( deltaTime ) {\n\n\t\tvar time = this.time + deltaTime;\n\n\t\tif ( deltaTime === 0 ) return time;\n\n\t\tvar duration = this._clip.duration,\n\n\t\t\tloop = this.loop,\n\t\t\tloopCount = this._loopCount;\n\n\t\tif ( loop === LoopOnce ) {\n\n\t\t\tif ( loopCount === -1 ) {\n\t\t\t\t// just started\n\n\t\t\t\tthis.loopCount = 0;\n\t\t\t\tthis._setEndings( true, true, false );\n\n\t\t\t}\n\n\t\t\thandle_stop: {\n\n\t\t\t\tif ( time >= duration ) {\n\n\t\t\t\t\ttime = duration;\n\n\t\t\t\t} else if ( time < 0 ) {\n\n\t\t\t\t\ttime = 0;\n\n\t\t\t\t} else break handle_stop;\n\n\t\t\t\tif ( this.clampWhenFinished ) this.paused = true;\n\t\t\t\telse this.enabled = false;\n\n\t\t\t\tthis._mixer.dispatchEvent( {\n\t\t\t\t\ttype: 'finished', action: this,\n\t\t\t\t\tdirection: deltaTime < 0 ? -1 : 1\n\t\t\t\t} );\n\n\t\t\t}\n\n\t\t} else { // repetitive Repeat or PingPong\n\n\t\t\tvar pingPong = ( loop === LoopPingPong );\n\n\t\t\tif ( loopCount === -1 ) {\n\t\t\t\t// just started\n\n\t\t\t\tif ( deltaTime >= 0 ) {\n\n\t\t\t\t\tloopCount = 0;\n\n\t\t\t\t\tthis._setEndings(\n\t\t\t\t\t\t\ttrue, this.repetitions === 0, pingPong );\n\n\t\t\t\t} else {\n\n\t\t\t\t\t// when looping in reverse direction, the initial\n\t\t\t\t\t// transition through zero counts as a repetition,\n\t\t\t\t\t// so leave loopCount at -1\n\n\t\t\t\t\tthis._setEndings(\n\t\t\t\t\t\t\tthis.repetitions === 0, true, pingPong );\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t\tif ( time >= duration || time < 0 ) {\n\t\t\t\t// wrap around\n\n\t\t\t\tvar loopDelta = Math.floor( time / duration ); // signed\n\t\t\t\ttime -= duration * loopDelta;\n\n\t\t\t\tloopCount += Math.abs( loopDelta );\n\n\t\t\t\tvar pending = this.repetitions - loopCount;\n\n\t\t\t\tif ( pending < 0 ) {\n\t\t\t\t\t// have to stop (switch state, clamp time, fire event)\n\n\t\t\t\t\tif ( this.clampWhenFinished ) this.paused = true;\n\t\t\t\t\telse this.enabled = false;\n\n\t\t\t\t\ttime = deltaTime > 0 ? duration : 0;\n\n\t\t\t\t\tthis._mixer.dispatchEvent( {\n\t\t\t\t\t\ttype: 'finished', action: this,\n\t\t\t\t\t\tdirection: deltaTime > 0 ? 1 : -1\n\t\t\t\t\t} );\n\n\t\t\t\t} else {\n\t\t\t\t\t// keep running\n\n\t\t\t\t\tif ( pending === 0 ) {\n\t\t\t\t\t\t// entering the last round\n\n\t\t\t\t\t\tvar atStart = deltaTime < 0;\n\t\t\t\t\t\tthis._setEndings( atStart, ! atStart, pingPong );\n\n\t\t\t\t\t} else {\n\n\t\t\t\t\t\tthis._setEndings( false, false, pingPong );\n\n\t\t\t\t\t}\n\n\t\t\t\t\tthis._loopCount = loopCount;\n\n\t\t\t\t\tthis._mixer.dispatchEvent( {\n\t\t\t\t\t\ttype: 'loop', action: this, loopDelta: loopDelta\n\t\t\t\t\t} );\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t\tif ( pingPong && ( loopCount & 1 ) === 1 ) {\n\t\t\t\t// invert time for the \"pong round\"\n\n\t\t\t\tthis.time = time;\n\t\t\t\treturn duration - time;\n\n\t\t\t}\n\n\t\t}\n\n\t\tthis.time = time;\n\t\treturn time;\n\n\t},\n\n\t_setEndings: function( atStart, atEnd, pingPong ) {\n\n\t\tvar settings = this._interpolantSettings;\n\n\t\tif ( pingPong ) {\n\n\t\t\tsettings.endingStart \t= ZeroSlopeEnding;\n\t\t\tsettings.endingEnd\t\t= ZeroSlopeEnding;\n\n\t\t} else {\n\n\t\t\t// assuming for LoopOnce atStart == atEnd == true\n\n\t\t\tif ( atStart ) {\n\n\t\t\t\tsettings.endingStart = this.zeroSlopeAtStart ?\n\t\t\t\t\t\tZeroSlopeEnding : ZeroCurvatureEnding;\n\n\t\t\t} else {\n\n\t\t\t\tsettings.endingStart = WrapAroundEnding;\n\n\t\t\t}\n\n\t\t\tif ( atEnd ) {\n\n\t\t\t\tsettings.endingEnd = this.zeroSlopeAtEnd ?\n\t\t\t\t\t\tZeroSlopeEnding : ZeroCurvatureEnding;\n\n\t\t\t} else {\n\n\t\t\t\tsettings.endingEnd \t = WrapAroundEnding;\n\n\t\t\t}\n\n\t\t}\n\n\t},\n\n\t_scheduleFading: function( duration, weightNow, weightThen ) {\n\n\t\tvar mixer = this._mixer, now = mixer.time,\n\t\t\tinterpolant = this._weightInterpolant;\n\n\t\tif ( interpolant === null ) {\n\n\t\t\tinterpolant = mixer._lendControlInterpolant(),\n\t\t\tthis._weightInterpolant = interpolant;\n\n\t\t}\n\n\t\tvar times = interpolant.parameterPositions,\n\t\t\tvalues = interpolant.sampleValues;\n\n\t\ttimes[ 0 ] = now; \t\t\t\tvalues[ 0 ] = weightNow;\n\t\ttimes[ 1 ] = now + duration;\tvalues[ 1 ] = weightThen;\n\n\t\treturn this;\n\n\t}\n\n};\n\n\nexport { AnimationAction };\n","import { AnimationAction } from './AnimationAction';\nimport { EventDispatcher } from '../core/EventDispatcher';\nimport { LinearInterpolant } from '../math/interpolants/LinearInterpolant';\nimport { PropertyBinding } from './PropertyBinding';\nimport { PropertyMixer } from './PropertyMixer';\nimport { AnimationClip } from './AnimationClip';\n\n/**\n *\n * Player for AnimationClips.\n *\n *\n * @author Ben Houston / http://clara.io/\n * @author David Sarno / http://lighthaus.us/\n * @author tschw\n */\n\nfunction AnimationMixer( root ) {\n\n\tthis._root = root;\n\tthis._initMemoryManager();\n\tthis._accuIndex = 0;\n\n\tthis.time = 0;\n\n\tthis.timeScale = 1.0;\n\n}\n\nObject.assign( AnimationMixer.prototype, EventDispatcher.prototype, {\n\n\t// return an action for a clip optionally using a custom root target\n\t// object (this method allocates a lot of dynamic memory in case a\n\t// previously unknown clip/root combination is specified)\n\tclipAction: function( clip, optionalRoot ) {\n\n\t\tvar root = optionalRoot || this._root,\n\t\t\trootUuid = root.uuid,\n\n\t\t\tclipObject = typeof clip === 'string' ?\n\t\t\t\t\tAnimationClip.findByName( root, clip ) : clip,\n\n\t\t\tclipUuid = clipObject !== null ? clipObject.uuid : clip,\n\n\t\t\tactionsForClip = this._actionsByClip[ clipUuid ],\n\t\t\tprototypeAction = null;\n\n\t\tif ( actionsForClip !== undefined ) {\n\n\t\t\tvar existingAction =\n\t\t\t\t\tactionsForClip.actionByRoot[ rootUuid ];\n\n\t\t\tif ( existingAction !== undefined ) {\n\n\t\t\t\treturn existingAction;\n\n\t\t\t}\n\n\t\t\t// we know the clip, so we don't have to parse all\n\t\t\t// the bindings again but can just copy\n\t\t\tprototypeAction = actionsForClip.knownActions[ 0 ];\n\n\t\t\t// also, take the clip from the prototype action\n\t\t\tif ( clipObject === null )\n\t\t\t\tclipObject = prototypeAction._clip;\n\n\t\t}\n\n\t\t// clip must be known when specified via string\n\t\tif ( clipObject === null ) return null;\n\n\t\t// allocate all resources required to run it\n\t\tvar newAction = new AnimationAction( this, clipObject, optionalRoot );\n\n\t\tthis._bindAction( newAction, prototypeAction );\n\n\t\t// and make the action known to the memory manager\n\t\tthis._addInactiveAction( newAction, clipUuid, rootUuid );\n\n\t\treturn newAction;\n\n\t},\n\n\t// get an existing action\n\texistingAction: function( clip, optionalRoot ) {\n\n\t\tvar root = optionalRoot || this._root,\n\t\t\trootUuid = root.uuid,\n\n\t\t\tclipObject = typeof clip === 'string' ?\n\t\t\t\t\tAnimationClip.findByName( root, clip ) : clip,\n\n\t\t\tclipUuid = clipObject ? clipObject.uuid : clip,\n\n\t\t\tactionsForClip = this._actionsByClip[ clipUuid ];\n\n\t\tif ( actionsForClip !== undefined ) {\n\n\t\t\treturn actionsForClip.actionByRoot[ rootUuid ] || null;\n\n\t\t}\n\n\t\treturn null;\n\n\t},\n\n\t// deactivates all previously scheduled actions\n\tstopAllAction: function() {\n\n\t\tvar actions = this._actions,\n\t\t\tnActions = this._nActiveActions,\n\t\t\tbindings = this._bindings,\n\t\t\tnBindings = this._nActiveBindings;\n\n\t\tthis._nActiveActions = 0;\n\t\tthis._nActiveBindings = 0;\n\n\t\tfor ( var i = 0; i !== nActions; ++ i ) {\n\n\t\t\tactions[ i ].reset();\n\n\t\t}\n\n\t\tfor ( var i = 0; i !== nBindings; ++ i ) {\n\n\t\t\tbindings[ i ].useCount = 0;\n\n\t\t}\n\n\t\treturn this;\n\n\t},\n\n\t// advance the time and update apply the animation\n\tupdate: function( deltaTime ) {\n\n\t\tdeltaTime *= this.timeScale;\n\n\t\tvar actions = this._actions,\n\t\t\tnActions = this._nActiveActions,\n\n\t\t\ttime = this.time += deltaTime,\n\t\t\ttimeDirection = Math.sign( deltaTime ),\n\n\t\t\taccuIndex = this._accuIndex ^= 1;\n\n\t\t// run active actions\n\n\t\tfor ( var i = 0; i !== nActions; ++ i ) {\n\n\t\t\tvar action = actions[ i ];\n\n\t\t\tif ( action.enabled ) {\n\n\t\t\t\taction._update( time, deltaTime, timeDirection, accuIndex );\n\n\t\t\t}\n\n\t\t}\n\n\t\t// update scene graph\n\n\t\tvar bindings = this._bindings,\n\t\t\tnBindings = this._nActiveBindings;\n\n\t\tfor ( var i = 0; i !== nBindings; ++ i ) {\n\n\t\t\tbindings[ i ].apply( accuIndex );\n\n\t\t}\n\n\t\treturn this;\n\n\t},\n\n\t// return this mixer's root target object\n\tgetRoot: function() {\n\n\t\treturn this._root;\n\n\t},\n\n\t// free all resources specific to a particular clip\n\tuncacheClip: function( clip ) {\n\n\t\tvar actions = this._actions,\n\t\t\tclipUuid = clip.uuid,\n\t\t\tactionsByClip = this._actionsByClip,\n\t\t\tactionsForClip = actionsByClip[ clipUuid ];\n\n\t\tif ( actionsForClip !== undefined ) {\n\n\t\t\t// note: just calling _removeInactiveAction would mess up the\n\t\t\t// iteration state and also require updating the state we can\n\t\t\t// just throw away\n\n\t\t\tvar actionsToRemove = actionsForClip.knownActions;\n\n\t\t\tfor ( var i = 0, n = actionsToRemove.length; i !== n; ++ i ) {\n\n\t\t\t\tvar action = actionsToRemove[ i ];\n\n\t\t\t\tthis._deactivateAction( action );\n\n\t\t\t\tvar cacheIndex = action._cacheIndex,\n\t\t\t\t\tlastInactiveAction = actions[ actions.length - 1 ];\n\n\t\t\t\taction._cacheIndex = null;\n\t\t\t\taction._byClipCacheIndex = null;\n\n\t\t\t\tlastInactiveAction._cacheIndex = cacheIndex;\n\t\t\t\tactions[ cacheIndex ] = lastInactiveAction;\n\t\t\t\tactions.pop();\n\n\t\t\t\tthis._removeInactiveBindingsForAction( action );\n\n\t\t\t}\n\n\t\t\tdelete actionsByClip[ clipUuid ];\n\n\t\t}\n\n\t},\n\n\t// free all resources specific to a particular root target object\n\tuncacheRoot: function( root ) {\n\n\t\tvar rootUuid = root.uuid,\n\t\t\tactionsByClip = this._actionsByClip;\n\n\t\tfor ( var clipUuid in actionsByClip ) {\n\n\t\t\tvar actionByRoot = actionsByClip[ clipUuid ].actionByRoot,\n\t\t\t\taction = actionByRoot[ rootUuid ];\n\n\t\t\tif ( action !== undefined ) {\n\n\t\t\t\tthis._deactivateAction( action );\n\t\t\t\tthis._removeInactiveAction( action );\n\n\t\t\t}\n\n\t\t}\n\n\t\tvar bindingsByRoot = this._bindingsByRootAndName,\n\t\t\tbindingByName = bindingsByRoot[ rootUuid ];\n\n\t\tif ( bindingByName !== undefined ) {\n\n\t\t\tfor ( var trackName in bindingByName ) {\n\n\t\t\t\tvar binding = bindingByName[ trackName ];\n\t\t\t\tbinding.restoreOriginalState();\n\t\t\t\tthis._removeInactiveBinding( binding );\n\n\t\t\t}\n\n\t\t}\n\n\t},\n\n\t// remove a targeted clip from the cache\n\tuncacheAction: function( clip, optionalRoot ) {\n\n\t\tvar action = this.existingAction( clip, optionalRoot );\n\n\t\tif ( action !== null ) {\n\n\t\t\tthis._deactivateAction( action );\n\t\t\tthis._removeInactiveAction( action );\n\n\t\t}\n\n\t}\n\n} );\n\n// Implementation details:\n\nObject.assign( AnimationMixer.prototype, {\n\n\t_bindAction: function( action, prototypeAction ) {\n\n\t\tvar root = action._localRoot || this._root,\n\t\t\ttracks = action._clip.tracks,\n\t\t\tnTracks = tracks.length,\n\t\t\tbindings = action._propertyBindings,\n\t\t\tinterpolants = action._interpolants,\n\t\t\trootUuid = root.uuid,\n\t\t\tbindingsByRoot = this._bindingsByRootAndName,\n\t\t\tbindingsByName = bindingsByRoot[ rootUuid ];\n\n\t\tif ( bindingsByName === undefined ) {\n\n\t\t\tbindingsByName = {};\n\t\t\tbindingsByRoot[ rootUuid ] = bindingsByName;\n\n\t\t}\n\n\t\tfor ( var i = 0; i !== nTracks; ++ i ) {\n\n\t\t\tvar track = tracks[ i ],\n\t\t\t\ttrackName = track.name,\n\t\t\t\tbinding = bindingsByName[ trackName ];\n\n\t\t\tif ( binding !== undefined ) {\n\n\t\t\t\tbindings[ i ] = binding;\n\n\t\t\t} else {\n\n\t\t\t\tbinding = bindings[ i ];\n\n\t\t\t\tif ( binding !== undefined ) {\n\n\t\t\t\t\t// existing binding, make sure the cache knows\n\n\t\t\t\t\tif ( binding._cacheIndex === null ) {\n\n\t\t\t\t\t\t++ binding.referenceCount;\n\t\t\t\t\t\tthis._addInactiveBinding( binding, rootUuid, trackName );\n\n\t\t\t\t\t}\n\n\t\t\t\t\tcontinue;\n\n\t\t\t\t}\n\n\t\t\t\tvar path = prototypeAction && prototypeAction.\n\t\t\t\t\t\t_propertyBindings[ i ].binding.parsedPath;\n\n\t\t\t\tbinding = new PropertyMixer(\n\t\t\t\t\t\tPropertyBinding.create( root, trackName, path ),\n\t\t\t\t\t\ttrack.ValueTypeName, track.getValueSize() );\n\n\t\t\t\t++ binding.referenceCount;\n\t\t\t\tthis._addInactiveBinding( binding, rootUuid, trackName );\n\n\t\t\t\tbindings[ i ] = binding;\n\n\t\t\t}\n\n\t\t\tinterpolants[ i ].resultBuffer = binding.buffer;\n\n\t\t}\n\n\t},\n\n\t_activateAction: function( action ) {\n\n\t\tif ( ! this._isActiveAction( action ) ) {\n\n\t\t\tif ( action._cacheIndex === null ) {\n\n\t\t\t\t// this action has been forgotten by the cache, but the user\n\t\t\t\t// appears to be still using it -> rebind\n\n\t\t\t\tvar rootUuid = ( action._localRoot || this._root ).uuid,\n\t\t\t\t\tclipUuid = action._clip.uuid,\n\t\t\t\t\tactionsForClip = this._actionsByClip[ clipUuid ];\n\n\t\t\t\tthis._bindAction( action,\n\t\t\t\t\t\tactionsForClip && actionsForClip.knownActions[ 0 ] );\n\n\t\t\t\tthis._addInactiveAction( action, clipUuid, rootUuid );\n\n\t\t\t}\n\n\t\t\tvar bindings = action._propertyBindings;\n\n\t\t\t// increment reference counts / sort out state\n\t\t\tfor ( var i = 0, n = bindings.length; i !== n; ++ i ) {\n\n\t\t\t\tvar binding = bindings[ i ];\n\n\t\t\t\tif ( binding.useCount ++ === 0 ) {\n\n\t\t\t\t\tthis._lendBinding( binding );\n\t\t\t\t\tbinding.saveOriginalState();\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t\tthis._lendAction( action );\n\n\t\t}\n\n\t},\n\n\t_deactivateAction: function( action ) {\n\n\t\tif ( this._isActiveAction( action ) ) {\n\n\t\t\tvar bindings = action._propertyBindings;\n\n\t\t\t// decrement reference counts / sort out state\n\t\t\tfor ( var i = 0, n = bindings.length; i !== n; ++ i ) {\n\n\t\t\t\tvar binding = bindings[ i ];\n\n\t\t\t\tif ( -- binding.useCount === 0 ) {\n\n\t\t\t\t\tbinding.restoreOriginalState();\n\t\t\t\t\tthis._takeBackBinding( binding );\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t\tthis._takeBackAction( action );\n\n\t\t}\n\n\t},\n\n\t// Memory manager\n\n\t_initMemoryManager: function() {\n\n\t\tthis._actions = []; // 'nActiveActions' followed by inactive ones\n\t\tthis._nActiveActions = 0;\n\n\t\tthis._actionsByClip = {};\n\t\t// inside:\n\t\t// {\n\t\t// \t\tknownActions: Array< AnimationAction >\t- used as prototypes\n\t\t// \t\tactionByRoot: AnimationAction\t\t\t- lookup\n\t\t// }\n\n\n\t\tthis._bindings = []; // 'nActiveBindings' followed by inactive ones\n\t\tthis._nActiveBindings = 0;\n\n\t\tthis._bindingsByRootAndName = {}; // inside: Map< name, PropertyMixer >\n\n\n\t\tthis._controlInterpolants = []; // same game as above\n\t\tthis._nActiveControlInterpolants = 0;\n\n\t\tvar scope = this;\n\n\t\tthis.stats = {\n\n\t\t\tactions: {\n\t\t\t\tget total() { return scope._actions.length; },\n\t\t\t\tget inUse() { return scope._nActiveActions; }\n\t\t\t},\n\t\t\tbindings: {\n\t\t\t\tget total() { return scope._bindings.length; },\n\t\t\t\tget inUse() { return scope._nActiveBindings; }\n\t\t\t},\n\t\t\tcontrolInterpolants: {\n\t\t\t\tget total() { return scope._controlInterpolants.length; },\n\t\t\t\tget inUse() { return scope._nActiveControlInterpolants; }\n\t\t\t}\n\n\t\t};\n\n\t},\n\n\t// Memory management for AnimationAction objects\n\n\t_isActiveAction: function( action ) {\n\n\t\tvar index = action._cacheIndex;\n\t\treturn index !== null && index < this._nActiveActions;\n\n\t},\n\n\t_addInactiveAction: function( action, clipUuid, rootUuid ) {\n\n\t\tvar actions = this._actions,\n\t\t\tactionsByClip = this._actionsByClip,\n\t\t\tactionsForClip = actionsByClip[ clipUuid ];\n\n\t\tif ( actionsForClip === undefined ) {\n\n\t\t\tactionsForClip = {\n\n\t\t\t\tknownActions: [ action ],\n\t\t\t\tactionByRoot: {}\n\n\t\t\t};\n\n\t\t\taction._byClipCacheIndex = 0;\n\n\t\t\tactionsByClip[ clipUuid ] = actionsForClip;\n\n\t\t} else {\n\n\t\t\tvar knownActions = actionsForClip.knownActions;\n\n\t\t\taction._byClipCacheIndex = knownActions.length;\n\t\t\tknownActions.push( action );\n\n\t\t}\n\n\t\taction._cacheIndex = actions.length;\n\t\tactions.push( action );\n\n\t\tactionsForClip.actionByRoot[ rootUuid ] = action;\n\n\t},\n\n\t_removeInactiveAction: function( action ) {\n\n\t\tvar actions = this._actions,\n\t\t\tlastInactiveAction = actions[ actions.length - 1 ],\n\t\t\tcacheIndex = action._cacheIndex;\n\n\t\tlastInactiveAction._cacheIndex = cacheIndex;\n\t\tactions[ cacheIndex ] = lastInactiveAction;\n\t\tactions.pop();\n\n\t\taction._cacheIndex = null;\n\n\n\t\tvar clipUuid = action._clip.uuid,\n\t\t\tactionsByClip = this._actionsByClip,\n\t\t\tactionsForClip = actionsByClip[ clipUuid ],\n\t\t\tknownActionsForClip = actionsForClip.knownActions,\n\n\t\t\tlastKnownAction =\n\t\t\t\tknownActionsForClip[ knownActionsForClip.length - 1 ],\n\n\t\t\tbyClipCacheIndex = action._byClipCacheIndex;\n\n\t\tlastKnownAction._byClipCacheIndex = byClipCacheIndex;\n\t\tknownActionsForClip[ byClipCacheIndex ] = lastKnownAction;\n\t\tknownActionsForClip.pop();\n\n\t\taction._byClipCacheIndex = null;\n\n\n\t\tvar actionByRoot = actionsForClip.actionByRoot,\n\t\t\trootUuid = ( actions._localRoot || this._root ).uuid;\n\n\t\tdelete actionByRoot[ rootUuid ];\n\n\t\tif ( knownActionsForClip.length === 0 ) {\n\n\t\t\tdelete actionsByClip[ clipUuid ];\n\n\t\t}\n\n\t\tthis._removeInactiveBindingsForAction( action );\n\n\t},\n\n\t_removeInactiveBindingsForAction: function( action ) {\n\n\t\tvar bindings = action._propertyBindings;\n\t\tfor ( var i = 0, n = bindings.length; i !== n; ++ i ) {\n\n\t\t\tvar binding = bindings[ i ];\n\n\t\t\tif ( -- binding.referenceCount === 0 ) {\n\n\t\t\t\tthis._removeInactiveBinding( binding );\n\n\t\t\t}\n\n\t\t}\n\n\t},\n\n\t_lendAction: function( action ) {\n\n\t\t// [ active actions | inactive actions ]\n\t\t// [ active actions >| inactive actions ]\n\t\t// s a\n\t\t// <-swap->\n\t\t// a s\n\n\t\tvar actions = this._actions,\n\t\t\tprevIndex = action._cacheIndex,\n\n\t\t\tlastActiveIndex = this._nActiveActions ++,\n\n\t\t\tfirstInactiveAction = actions[ lastActiveIndex ];\n\n\t\taction._cacheIndex = lastActiveIndex;\n\t\tactions[ lastActiveIndex ] = action;\n\n\t\tfirstInactiveAction._cacheIndex = prevIndex;\n\t\tactions[ prevIndex ] = firstInactiveAction;\n\n\t},\n\n\t_takeBackAction: function( action ) {\n\n\t\t// [ active actions | inactive actions ]\n\t\t// [ active actions |< inactive actions ]\n\t\t// a s\n\t\t// <-swap->\n\t\t// s a\n\n\t\tvar actions = this._actions,\n\t\t\tprevIndex = action._cacheIndex,\n\n\t\t\tfirstInactiveIndex = -- this._nActiveActions,\n\n\t\t\tlastActiveAction = actions[ firstInactiveIndex ];\n\n\t\taction._cacheIndex = firstInactiveIndex;\n\t\tactions[ firstInactiveIndex ] = action;\n\n\t\tlastActiveAction._cacheIndex = prevIndex;\n\t\tactions[ prevIndex ] = lastActiveAction;\n\n\t},\n\n\t// Memory management for PropertyMixer objects\n\n\t_addInactiveBinding: function( binding, rootUuid, trackName ) {\n\n\t\tvar bindingsByRoot = this._bindingsByRootAndName,\n\t\t\tbindingByName = bindingsByRoot[ rootUuid ],\n\n\t\t\tbindings = this._bindings;\n\n\t\tif ( bindingByName === undefined ) {\n\n\t\t\tbindingByName = {};\n\t\t\tbindingsByRoot[ rootUuid ] = bindingByName;\n\n\t\t}\n\n\t\tbindingByName[ trackName ] = binding;\n\n\t\tbinding._cacheIndex = bindings.length;\n\t\tbindings.push( binding );\n\n\t},\n\n\t_removeInactiveBinding: function( binding ) {\n\n\t\tvar bindings = this._bindings,\n\t\t\tpropBinding = binding.binding,\n\t\t\trootUuid = propBinding.rootNode.uuid,\n\t\t\ttrackName = propBinding.path,\n\t\t\tbindingsByRoot = this._bindingsByRootAndName,\n\t\t\tbindingByName = bindingsByRoot[ rootUuid ],\n\n\t\t\tlastInactiveBinding = bindings[ bindings.length - 1 ],\n\t\t\tcacheIndex = binding._cacheIndex;\n\n\t\tlastInactiveBinding._cacheIndex = cacheIndex;\n\t\tbindings[ cacheIndex ] = lastInactiveBinding;\n\t\tbindings.pop();\n\n\t\tdelete bindingByName[ trackName ];\n\n\t\tremove_empty_map: {\n\n\t\t\tfor ( var _ in bindingByName ) break remove_empty_map;\n\n\t\t\tdelete bindingsByRoot[ rootUuid ];\n\n\t\t}\n\n\t},\n\n\t_lendBinding: function( binding ) {\n\n\t\tvar bindings = this._bindings,\n\t\t\tprevIndex = binding._cacheIndex,\n\n\t\t\tlastActiveIndex = this._nActiveBindings ++,\n\n\t\t\tfirstInactiveBinding = bindings[ lastActiveIndex ];\n\n\t\tbinding._cacheIndex = lastActiveIndex;\n\t\tbindings[ lastActiveIndex ] = binding;\n\n\t\tfirstInactiveBinding._cacheIndex = prevIndex;\n\t\tbindings[ prevIndex ] = firstInactiveBinding;\n\n\t},\n\n\t_takeBackBinding: function( binding ) {\n\n\t\tvar bindings = this._bindings,\n\t\t\tprevIndex = binding._cacheIndex,\n\n\t\t\tfirstInactiveIndex = -- this._nActiveBindings,\n\n\t\t\tlastActiveBinding = bindings[ firstInactiveIndex ];\n\n\t\tbinding._cacheIndex = firstInactiveIndex;\n\t\tbindings[ firstInactiveIndex ] = binding;\n\n\t\tlastActiveBinding._cacheIndex = prevIndex;\n\t\tbindings[ prevIndex ] = lastActiveBinding;\n\n\t},\n\n\n\t// Memory management of Interpolants for weight and time scale\n\n\t_lendControlInterpolant: function() {\n\n\t\tvar interpolants = this._controlInterpolants,\n\t\t\tlastActiveIndex = this._nActiveControlInterpolants ++,\n\t\t\tinterpolant = interpolants[ lastActiveIndex ];\n\n\t\tif ( interpolant === undefined ) {\n\n\t\t\tinterpolant = new LinearInterpolant(\n\t\t\t\t\tnew Float32Array( 2 ), new Float32Array( 2 ),\n\t\t\t\t\t\t1, this._controlInterpolantsResultBuffer );\n\n\t\t\tinterpolant.__cacheIndex = lastActiveIndex;\n\t\t\tinterpolants[ lastActiveIndex ] = interpolant;\n\n\t\t}\n\n\t\treturn interpolant;\n\n\t},\n\n\t_takeBackControlInterpolant: function( interpolant ) {\n\n\t\tvar interpolants = this._controlInterpolants,\n\t\t\tprevIndex = interpolant.__cacheIndex,\n\n\t\t\tfirstInactiveIndex = -- this._nActiveControlInterpolants,\n\n\t\t\tlastActiveInterpolant = interpolants[ firstInactiveIndex ];\n\n\t\tinterpolant.__cacheIndex = firstInactiveIndex;\n\t\tinterpolants[ firstInactiveIndex ] = interpolant;\n\n\t\tlastActiveInterpolant.__cacheIndex = prevIndex;\n\t\tinterpolants[ prevIndex ] = lastActiveInterpolant;\n\n\t},\n\n\t_controlInterpolantsResultBuffer: new Float32Array( 1 )\n\n} );\n\n\nexport { AnimationMixer };\n","/**\n * @author mrdoob / http://mrdoob.com/\n */\n\nfunction Uniform( value ) {\n\n\tif ( typeof value === 'string' ) {\n\n\t\tconsole.warn( 'THREE.Uniform: Type parameter is no longer needed.' );\n\t\tvalue = arguments[ 1 ];\n\n\t}\n\n\tthis.value = value;\n\n}\n\nexport { Uniform };\n","import { BufferGeometry } from './BufferGeometry';\n\n/**\n * @author benaadams / https://twitter.com/ben_a_adams\n */\n\nfunction InstancedBufferGeometry() {\n\n\tBufferGeometry.call( this );\n\n\tthis.type = 'InstancedBufferGeometry';\n\tthis.maxInstancedCount = undefined;\n\n}\n\nInstancedBufferGeometry.prototype = Object.create( BufferGeometry.prototype );\nInstancedBufferGeometry.prototype.constructor = InstancedBufferGeometry;\n\nInstancedBufferGeometry.prototype.isInstancedBufferGeometry = true;\n\nInstancedBufferGeometry.prototype.addGroup = function ( start, count, materialIndex ) {\n\n\tthis.groups.push( {\n\n\t\tstart: start,\n\t\tcount: count,\n\t\tmaterialIndex: materialIndex\n\n\t} );\n\n};\n\nInstancedBufferGeometry.prototype.copy = function ( source ) {\n\n\tvar index = source.index;\n\n\tif ( index !== null ) {\n\n\t\tthis.setIndex( index.clone() );\n\n\t}\n\n\tvar attributes = source.attributes;\n\n\tfor ( var name in attributes ) {\n\n\t\tvar attribute = attributes[ name ];\n\t\tthis.addAttribute( name, attribute.clone() );\n\n\t}\n\n\tvar groups = source.groups;\n\n\tfor ( var i = 0, l = groups.length; i < l; i ++ ) {\n\n\t\tvar group = groups[ i ];\n\t\tthis.addGroup( group.start, group.count, group.materialIndex );\n\n\t}\n\n\treturn this;\n\n};\n\n\nexport { InstancedBufferGeometry };\n","import { _Math } from '../math/Math';\n\n/**\n * @author benaadams / https://twitter.com/ben_a_adams\n */\n\nfunction InterleavedBufferAttribute( interleavedBuffer, itemSize, offset, normalized ) {\n\n\tthis.uuid = _Math.generateUUID();\n\n\tthis.data = interleavedBuffer;\n\tthis.itemSize = itemSize;\n\tthis.offset = offset;\n\n\tthis.normalized = normalized === true;\n\n}\n\n\nInterleavedBufferAttribute.prototype = {\n\n\tconstructor: InterleavedBufferAttribute,\n\n\tisInterleavedBufferAttribute: true,\n\n\tget count() {\n\n\t\treturn this.data.count;\n\n\t},\n\n\tget array() {\n\n\t\treturn this.data.array;\n\n\t},\n\n\tsetX: function ( index, x ) {\n\n\t\tthis.data.array[ index * this.data.stride + this.offset ] = x;\n\n\t\treturn this;\n\n\t},\n\n\tsetY: function ( index, y ) {\n\n\t\tthis.data.array[ index * this.data.stride + this.offset + 1 ] = y;\n\n\t\treturn this;\n\n\t},\n\n\tsetZ: function ( index, z ) {\n\n\t\tthis.data.array[ index * this.data.stride + this.offset + 2 ] = z;\n\n\t\treturn this;\n\n\t},\n\n\tsetW: function ( index, w ) {\n\n\t\tthis.data.array[ index * this.data.stride + this.offset + 3 ] = w;\n\n\t\treturn this;\n\n\t},\n\n\tgetX: function ( index ) {\n\n\t\treturn this.data.array[ index * this.data.stride + this.offset ];\n\n\t},\n\n\tgetY: function ( index ) {\n\n\t\treturn this.data.array[ index * this.data.stride + this.offset + 1 ];\n\n\t},\n\n\tgetZ: function ( index ) {\n\n\t\treturn this.data.array[ index * this.data.stride + this.offset + 2 ];\n\n\t},\n\n\tgetW: function ( index ) {\n\n\t\treturn this.data.array[ index * this.data.stride + this.offset + 3 ];\n\n\t},\n\n\tsetXY: function ( index, x, y ) {\n\n\t\tindex = index * this.data.stride + this.offset;\n\n\t\tthis.data.array[ index + 0 ] = x;\n\t\tthis.data.array[ index + 1 ] = y;\n\n\t\treturn this;\n\n\t},\n\n\tsetXYZ: function ( index, x, y, z ) {\n\n\t\tindex = index * this.data.stride + this.offset;\n\n\t\tthis.data.array[ index + 0 ] = x;\n\t\tthis.data.array[ index + 1 ] = y;\n\t\tthis.data.array[ index + 2 ] = z;\n\n\t\treturn this;\n\n\t},\n\n\tsetXYZW: function ( index, x, y, z, w ) {\n\n\t\tindex = index * this.data.stride + this.offset;\n\n\t\tthis.data.array[ index + 0 ] = x;\n\t\tthis.data.array[ index + 1 ] = y;\n\t\tthis.data.array[ index + 2 ] = z;\n\t\tthis.data.array[ index + 3 ] = w;\n\n\t\treturn this;\n\n\t}\n\n};\n\n\nexport { InterleavedBufferAttribute };\n","import { _Math } from '../math/Math';\n\n/**\n * @author benaadams / https://twitter.com/ben_a_adams\n */\n\nfunction InterleavedBuffer( array, stride ) {\n\n\tthis.uuid = _Math.generateUUID();\n\n\tthis.array = array;\n\tthis.stride = stride;\n\tthis.count = array !== undefined ? array.length / stride : 0;\n\n\tthis.dynamic = false;\n\tthis.updateRange = { offset: 0, count: - 1 };\n\n\tthis.version = 0;\n\n}\n\nInterleavedBuffer.prototype = {\n\n\tconstructor: InterleavedBuffer,\n\n\tisInterleavedBuffer: true,\n\n\tset needsUpdate( value ) {\n\n\t\tif ( value === true ) this.version ++;\n\n\t},\n\n\tsetArray: function ( array ) {\n\n\t\tif ( Array.isArray( array ) ) {\n\n\t\t\tthrow new TypeError( 'THREE.BufferAttribute: array should be a Typed Array.' );\n\n\t\t}\n\n\t\tthis.count = array !== undefined ? array.length / this.stride : 0;\n\t\tthis.array = array;\n\n\t},\n\n\tsetDynamic: function ( value ) {\n\n\t\tthis.dynamic = value;\n\n\t\treturn this;\n\n\t},\n\n\tcopy: function ( source ) {\n\n\t\tthis.array = new source.array.constructor( source.array );\n\t\tthis.count = source.count;\n\t\tthis.stride = source.stride;\n\t\tthis.dynamic = source.dynamic;\n\n\t\treturn this;\n\n\t},\n\n\tcopyAt: function ( index1, attribute, index2 ) {\n\n\t\tindex1 *= this.stride;\n\t\tindex2 *= attribute.stride;\n\n\t\tfor ( var i = 0, l = this.stride; i < l; i ++ ) {\n\n\t\t\tthis.array[ index1 + i ] = attribute.array[ index2 + i ];\n\n\t\t}\n\n\t\treturn this;\n\n\t},\n\n\tset: function ( value, offset ) {\n\n\t\tif ( offset === undefined ) offset = 0;\n\n\t\tthis.array.set( value, offset );\n\n\t\treturn this;\n\n\t},\n\n\tclone: function () {\n\n\t\treturn new this.constructor().copy( this );\n\n\t}\n\n};\n\n\nexport { InterleavedBuffer };\n","import { InterleavedBuffer } from './InterleavedBuffer';\n\n/**\n * @author benaadams / https://twitter.com/ben_a_adams\n */\n\nfunction InstancedInterleavedBuffer( array, stride, meshPerAttribute ) {\n\n\tInterleavedBuffer.call( this, array, stride );\n\n\tthis.meshPerAttribute = meshPerAttribute || 1;\n\n}\n\nInstancedInterleavedBuffer.prototype = Object.create( InterleavedBuffer.prototype );\nInstancedInterleavedBuffer.prototype.constructor = InstancedInterleavedBuffer;\n\nInstancedInterleavedBuffer.prototype.isInstancedInterleavedBuffer = true;\n\nInstancedInterleavedBuffer.prototype.copy = function ( source ) {\n\n\tInterleavedBuffer.prototype.copy.call( this, source );\n\n\tthis.meshPerAttribute = source.meshPerAttribute;\n\n\treturn this;\n\n};\n\n\nexport { InstancedInterleavedBuffer };\n","import { BufferAttribute } from './BufferAttribute';\n\n/**\n * @author benaadams / https://twitter.com/ben_a_adams\n */\n\nfunction InstancedBufferAttribute( array, itemSize, meshPerAttribute ) {\n\n\tBufferAttribute.call( this, array, itemSize );\n\n\tthis.meshPerAttribute = meshPerAttribute || 1;\n\n}\n\nInstancedBufferAttribute.prototype = Object.create( BufferAttribute.prototype );\nInstancedBufferAttribute.prototype.constructor = InstancedBufferAttribute;\n\nInstancedBufferAttribute.prototype.isInstancedBufferAttribute = true;\n\nInstancedBufferAttribute.prototype.copy = function ( source ) {\n\n\tBufferAttribute.prototype.copy.call( this, source );\n\n\tthis.meshPerAttribute = source.meshPerAttribute;\n\n\treturn this;\n\n};\n\n\nexport { InstancedBufferAttribute };\n","import { Ray } from '../math/Ray';\n\n/**\n * @author mrdoob / http://mrdoob.com/\n * @author bhouston / http://clara.io/\n * @author stephomi / http://stephaneginier.com/\n */\n\nfunction Raycaster( origin, direction, near, far ) {\n\n\tthis.ray = new Ray( origin, direction );\n\t// direction is assumed to be normalized (for accurate distance calculations)\n\n\tthis.near = near || 0;\n\tthis.far = far || Infinity;\n\n\tthis.params = {\n\t\tMesh: {},\n\t\tLine: {},\n\t\tLOD: {},\n\t\tPoints: { threshold: 1 },\n\t\tSprite: {}\n\t};\n\n\tObject.defineProperties( this.params, {\n\t\tPointCloud: {\n\t\t\tget: function () {\n\t\t\t\tconsole.warn( 'THREE.Raycaster: params.PointCloud has been renamed to params.Points.' );\n\t\t\t\treturn this.Points;\n\t\t\t}\n\t\t}\n\t} );\n\n}\n\nfunction ascSort( a, b ) {\n\n\treturn a.distance - b.distance;\n\n}\n\nfunction intersectObject( object, raycaster, intersects, recursive ) {\n\n\tif ( object.visible === false ) return;\n\n\tobject.raycast( raycaster, intersects );\n\n\tif ( recursive === true ) {\n\n\t\tvar children = object.children;\n\n\t\tfor ( var i = 0, l = children.length; i < l; i ++ ) {\n\n\t\t\tintersectObject( children[ i ], raycaster, intersects, true );\n\n\t\t}\n\n\t}\n\n}\n\n//\n\nRaycaster.prototype = {\n\n\tconstructor: Raycaster,\n\n\tlinePrecision: 1,\n\n\tset: function ( origin, direction ) {\n\n\t\t// direction is assumed to be normalized (for accurate distance calculations)\n\n\t\tthis.ray.set( origin, direction );\n\n\t},\n\n\tsetFromCamera: function ( coords, camera ) {\n\n\t\tif ( (camera && camera.isPerspectiveCamera) ) {\n\n\t\t\tthis.ray.origin.setFromMatrixPosition( camera.matrixWorld );\n\t\t\tthis.ray.direction.set( coords.x, coords.y, 0.5 ).unproject( camera ).sub( this.ray.origin ).normalize();\n\n\t\t} else if ( (camera && camera.isOrthographicCamera) ) {\n\n\t\t\tthis.ray.origin.set( coords.x, coords.y, ( camera.near + camera.far ) / ( camera.near - camera.far ) ).unproject( camera ); // set origin in plane of camera\n\t\t\tthis.ray.direction.set( 0, 0, - 1 ).transformDirection( camera.matrixWorld );\n\n\t\t} else {\n\n\t\t\tconsole.error( 'THREE.Raycaster: Unsupported camera type.' );\n\n\t\t}\n\n\t},\n\n\tintersectObject: function ( object, recursive ) {\n\n\t\tvar intersects = [];\n\n\t\tintersectObject( object, this, intersects, recursive );\n\n\t\tintersects.sort( ascSort );\n\n\t\treturn intersects;\n\n\t},\n\n\tintersectObjects: function ( objects, recursive ) {\n\n\t\tvar intersects = [];\n\n\t\tif ( Array.isArray( objects ) === false ) {\n\n\t\t\tconsole.warn( 'THREE.Raycaster.intersectObjects: objects is not an Array.' );\n\t\t\treturn intersects;\n\n\t\t}\n\n\t\tfor ( var i = 0, l = objects.length; i < l; i ++ ) {\n\n\t\t\tintersectObject( objects[ i ], this, intersects, recursive );\n\n\t\t}\n\n\t\tintersects.sort( ascSort );\n\n\t\treturn intersects;\n\n\t}\n\n};\n\n\nexport { Raycaster };\n","/**\n * @author alteredq / http://alteredqualia.com/\n */\n\nfunction Clock( autoStart ) {\n\n\tthis.autoStart = ( autoStart !== undefined ) ? autoStart : true;\n\n\tthis.startTime = 0;\n\tthis.oldTime = 0;\n\tthis.elapsedTime = 0;\n\n\tthis.running = false;\n\n}\n\nClock.prototype = {\n\n\tconstructor: Clock,\n\n\tstart: function () {\n\n\t\tthis.startTime = ( performance || Date ).now();\n\n\t\tthis.oldTime = this.startTime;\n\t\tthis.elapsedTime = 0;\n\t\tthis.running = true;\n\n\t},\n\n\tstop: function () {\n\n\t\tthis.getElapsedTime();\n\t\tthis.running = false;\n\n\t},\n\n\tgetElapsedTime: function () {\n\n\t\tthis.getDelta();\n\t\treturn this.elapsedTime;\n\n\t},\n\n\tgetDelta: function () {\n\n\t\tvar diff = 0;\n\n\t\tif ( this.autoStart && ! this.running ) {\n\n\t\t\tthis.start();\n\n\t\t}\n\n\t\tif ( this.running ) {\n\n\t\t\tvar newTime = ( performance || Date ).now();\n\n\t\t\tdiff = ( newTime - this.oldTime ) / 1000;\n\t\t\tthis.oldTime = newTime;\n\n\t\t\tthis.elapsedTime += diff;\n\n\t\t}\n\n\t\treturn diff;\n\n\t}\n\n};\n\n\nexport { Clock };\n","import { Vector3 } from './Vector3';\n\n/**\n * Spline from Tween.js, slightly optimized (and trashed)\n * http://sole.github.com/tween.js/examples/05_spline.html\n *\n * @author mrdoob / http://mrdoob.com/\n * @author alteredq / http://alteredqualia.com/\n */\n\nfunction Spline( points ) {\n\n\tthis.points = points;\n\n\tvar c = [], v3 = { x: 0, y: 0, z: 0 },\n\tpoint, intPoint, weight, w2, w3,\n\tpa, pb, pc, pd;\n\n\tthis.initFromArray = function ( a ) {\n\n\t\tthis.points = [];\n\n\t\tfor ( var i = 0; i < a.length; i ++ ) {\n\n\t\t\tthis.points[ i ] = { x: a[ i ][ 0 ], y: a[ i ][ 1 ], z: a[ i ][ 2 ] };\n\n\t\t}\n\n\t};\n\n\tthis.getPoint = function ( k ) {\n\n\t\tpoint = ( this.points.length - 1 ) * k;\n\t\tintPoint = Math.floor( point );\n\t\tweight = point - intPoint;\n\n\t\tc[ 0 ] = intPoint === 0 ? intPoint : intPoint - 1;\n\t\tc[ 1 ] = intPoint;\n\t\tc[ 2 ] = intPoint > this.points.length - 2 ? this.points.length - 1 : intPoint + 1;\n\t\tc[ 3 ] = intPoint > this.points.length - 3 ? this.points.length - 1 : intPoint + 2;\n\n\t\tpa = this.points[ c[ 0 ] ];\n\t\tpb = this.points[ c[ 1 ] ];\n\t\tpc = this.points[ c[ 2 ] ];\n\t\tpd = this.points[ c[ 3 ] ];\n\n\t\tw2 = weight * weight;\n\t\tw3 = weight * w2;\n\n\t\tv3.x = interpolate( pa.x, pb.x, pc.x, pd.x, weight, w2, w3 );\n\t\tv3.y = interpolate( pa.y, pb.y, pc.y, pd.y, weight, w2, w3 );\n\t\tv3.z = interpolate( pa.z, pb.z, pc.z, pd.z, weight, w2, w3 );\n\n\t\treturn v3;\n\n\t};\n\n\tthis.getControlPointsArray = function () {\n\n\t\tvar i, p, l = this.points.length,\n\t\t\tcoords = [];\n\n\t\tfor ( i = 0; i < l; i ++ ) {\n\n\t\t\tp = this.points[ i ];\n\t\t\tcoords[ i ] = [ p.x, p.y, p.z ];\n\n\t\t}\n\n\t\treturn coords;\n\n\t};\n\n\t// approximate length by summing linear segments\n\n\tthis.getLength = function ( nSubDivisions ) {\n\n\t\tvar i, index, nSamples, position,\n\t\t\tpoint = 0, intPoint = 0, oldIntPoint = 0,\n\t\t\toldPosition = new Vector3(),\n\t\t\ttmpVec = new Vector3(),\n\t\t\tchunkLengths = [],\n\t\t\ttotalLength = 0;\n\n\t\t// first point has 0 length\n\n\t\tchunkLengths[ 0 ] = 0;\n\n\t\tif ( ! nSubDivisions ) nSubDivisions = 100;\n\n\t\tnSamples = this.points.length * nSubDivisions;\n\n\t\toldPosition.copy( this.points[ 0 ] );\n\n\t\tfor ( i = 1; i < nSamples; i ++ ) {\n\n\t\t\tindex = i / nSamples;\n\n\t\t\tposition = this.getPoint( index );\n\t\t\ttmpVec.copy( position );\n\n\t\t\ttotalLength += tmpVec.distanceTo( oldPosition );\n\n\t\t\toldPosition.copy( position );\n\n\t\t\tpoint = ( this.points.length - 1 ) * index;\n\t\t\tintPoint = Math.floor( point );\n\n\t\t\tif ( intPoint !== oldIntPoint ) {\n\n\t\t\t\tchunkLengths[ intPoint ] = totalLength;\n\t\t\t\toldIntPoint = intPoint;\n\n\t\t\t}\n\n\t\t}\n\n\t\t// last point ends with total length\n\n\t\tchunkLengths[ chunkLengths.length ] = totalLength;\n\n\t\treturn { chunks: chunkLengths, total: totalLength };\n\n\t};\n\n\tthis.reparametrizeByArcLength = function ( samplingCoef ) {\n\n\t\tvar i, j,\n\t\t\tindex, indexCurrent, indexNext,\n\t\t\trealDistance,\n\t\t\tsampling, position,\n\t\t\tnewpoints = [],\n\t\t\ttmpVec = new Vector3(),\n\t\t\tsl = this.getLength();\n\n\t\tnewpoints.push( tmpVec.copy( this.points[ 0 ] ).clone() );\n\n\t\tfor ( i = 1; i < this.points.length; i ++ ) {\n\n\t\t\t//tmpVec.copy( this.points[ i - 1 ] );\n\t\t\t//linearDistance = tmpVec.distanceTo( this.points[ i ] );\n\n\t\t\trealDistance = sl.chunks[ i ] - sl.chunks[ i - 1 ];\n\n\t\t\tsampling = Math.ceil( samplingCoef * realDistance / sl.total );\n\n\t\t\tindexCurrent = ( i - 1 ) / ( this.points.length - 1 );\n\t\t\tindexNext = i / ( this.points.length - 1 );\n\n\t\t\tfor ( j = 1; j < sampling - 1; j ++ ) {\n\n\t\t\t\tindex = indexCurrent + j * ( 1 / sampling ) * ( indexNext - indexCurrent );\n\n\t\t\t\tposition = this.getPoint( index );\n\t\t\t\tnewpoints.push( tmpVec.copy( position ).clone() );\n\n\t\t\t}\n\n\t\t\tnewpoints.push( tmpVec.copy( this.points[ i ] ).clone() );\n\n\t\t}\n\n\t\tthis.points = newpoints;\n\n\t};\n\n\t// Catmull-Rom\n\n\tfunction interpolate( p0, p1, p2, p3, t, t2, t3 ) {\n\n\t\tvar v0 = ( p2 - p0 ) * 0.5,\n\t\t\tv1 = ( p3 - p1 ) * 0.5;\n\n\t\treturn ( 2 * ( p1 - p2 ) + v0 + v1 ) * t3 + ( - 3 * ( p1 - p2 ) - 2 * v0 - v1 ) * t2 + v0 * t + p1;\n\n\t}\n\n}\n\n\nexport { Spline };\n","import { _Math } from './Math';\n\n/**\n * @author bhouston / http://clara.io\n * @author WestLangley / http://github.com/WestLangley\n *\n * Ref: https://en.wikipedia.org/wiki/Spherical_coordinate_system\n *\n * The poles (phi) are at the positive and negative y axis.\n * The equator starts at positive z.\n */\n\nfunction Spherical( radius, phi, theta ) {\n\n\tthis.radius = ( radius !== undefined ) ? radius : 1.0;\n\tthis.phi = ( phi !== undefined ) ? phi : 0; // up / down towards top and bottom pole\n\tthis.theta = ( theta !== undefined ) ? theta : 0; // around the equator of the sphere\n\n\treturn this;\n\n}\n\nSpherical.prototype = {\n\n\tconstructor: Spherical,\n\n\tset: function ( radius, phi, theta ) {\n\n\t\tthis.radius = radius;\n\t\tthis.phi = phi;\n\t\tthis.theta = theta;\n\n\t\treturn this;\n\n\t},\n\n\tclone: function () {\n\n\t\treturn new this.constructor().copy( this );\n\n\t},\n\n\tcopy: function ( other ) {\n\n\t\tthis.radius = other.radius;\n\t\tthis.phi = other.phi;\n\t\tthis.theta = other.theta;\n\n\t\treturn this;\n\n\t},\n\n\t// restrict phi to be betwee EPS and PI-EPS\n\tmakeSafe: function() {\n\n\t\tvar EPS = 0.000001;\n\t\tthis.phi = Math.max( EPS, Math.min( Math.PI - EPS, this.phi ) );\n\n\t\treturn this;\n\n\t},\n\n\tsetFromVector3: function( vec3 ) {\n\n\t\tthis.radius = vec3.length();\n\n\t\tif ( this.radius === 0 ) {\n\n\t\t\tthis.theta = 0;\n\t\t\tthis.phi = 0;\n\n\t\t} else {\n\n\t\t\tthis.theta = Math.atan2( vec3.x, vec3.z ); // equator angle around y-up axis\n\t\t\tthis.phi = Math.acos( _Math.clamp( vec3.y / this.radius, - 1, 1 ) ); // polar angle\n\n\t\t}\n\n\t\treturn this;\n\n\t},\n\n};\n\n\nexport { Spherical };\n","import { Mesh } from '../../objects/Mesh';\nimport { _Math } from '../../math/Math';\n\n/**\r\n * @author alteredq / http://alteredqualia.com/\r\n */\r\n\r\nfunction MorphBlendMesh( geometry, material ) {\n\r\n\tMesh.call( this, geometry, material );\r\n\r\n\tthis.animationsMap = {};\r\n\tthis.animationsList = [];\r\n\r\n\t// prepare default animation\r\n\t// (all frames played together in 1 second)\r\n\r\n\tvar numFrames = this.geometry.morphTargets.length;\r\n\r\n\tvar name = \"__default\";\r\n\r\n\tvar startFrame = 0;\r\n\tvar endFrame = numFrames - 1;\r\n\r\n\tvar fps = numFrames / 1;\r\n\r\n\tthis.createAnimation( name, startFrame, endFrame, fps );\r\n\tthis.setAnimationWeight( name, 1 );\r\n\r\n}\r\n\r\nMorphBlendMesh.prototype = Object.create( Mesh.prototype );\r\nMorphBlendMesh.prototype.constructor = MorphBlendMesh;\r\n\r\nMorphBlendMesh.prototype.createAnimation = function ( name, start, end, fps ) {\r\n\r\n\tvar animation = {\r\n\r\n\t\tstart: start,\r\n\t\tend: end,\r\n\r\n\t\tlength: end - start + 1,\r\n\r\n\t\tfps: fps,\r\n\t\tduration: ( end - start ) / fps,\r\n\r\n\t\tlastFrame: 0,\r\n\t\tcurrentFrame: 0,\r\n\r\n\t\tactive: false,\r\n\r\n\t\ttime: 0,\r\n\t\tdirection: 1,\r\n\t\tweight: 1,\r\n\r\n\t\tdirectionBackwards: false,\r\n\t\tmirroredLoop: false\r\n\r\n\t};\r\n\r\n\tthis.animationsMap[ name ] = animation;\r\n\tthis.animationsList.push( animation );\r\n\r\n};\r\n\r\nMorphBlendMesh.prototype.autoCreateAnimations = function ( fps ) {\r\n\r\n\tvar pattern = /([a-z]+)_?(\\d+)/i;\r\n\r\n\tvar firstAnimation, frameRanges = {};\r\n\r\n\tvar geometry = this.geometry;\r\n\r\n\tfor ( var i = 0, il = geometry.morphTargets.length; i < il; i ++ ) {\r\n\r\n\t\tvar morph = geometry.morphTargets[ i ];\r\n\t\tvar chunks = morph.name.match( pattern );\r\n\r\n\t\tif ( chunks && chunks.length > 1 ) {\r\n\r\n\t\t\tvar name = chunks[ 1 ];\r\n\r\n\t\t\tif ( ! frameRanges[ name ] ) frameRanges[ name ] = { start: Infinity, end: - Infinity };\r\n\r\n\t\t\tvar range = frameRanges[ name ];\r\n\r\n\t\t\tif ( i < range.start ) range.start = i;\r\n\t\t\tif ( i > range.end ) range.end = i;\r\n\r\n\t\t\tif ( ! firstAnimation ) firstAnimation = name;\r\n\r\n\t\t}\r\n\r\n\t}\r\n\r\n\tfor ( var name in frameRanges ) {\r\n\r\n\t\tvar range = frameRanges[ name ];\r\n\t\tthis.createAnimation( name, range.start, range.end, fps );\r\n\r\n\t}\r\n\r\n\tthis.firstAnimation = firstAnimation;\r\n\r\n};\r\n\r\nMorphBlendMesh.prototype.setAnimationDirectionForward = function ( name ) {\r\n\r\n\tvar animation = this.animationsMap[ name ];\r\n\r\n\tif ( animation ) {\r\n\r\n\t\tanimation.direction = 1;\r\n\t\tanimation.directionBackwards = false;\r\n\r\n\t}\r\n\r\n};\r\n\r\nMorphBlendMesh.prototype.setAnimationDirectionBackward = function ( name ) {\r\n\r\n\tvar animation = this.animationsMap[ name ];\r\n\r\n\tif ( animation ) {\r\n\r\n\t\tanimation.direction = - 1;\r\n\t\tanimation.directionBackwards = true;\r\n\r\n\t}\r\n\r\n};\r\n\r\nMorphBlendMesh.prototype.setAnimationFPS = function ( name, fps ) {\r\n\r\n\tvar animation = this.animationsMap[ name ];\r\n\r\n\tif ( animation ) {\r\n\r\n\t\tanimation.fps = fps;\r\n\t\tanimation.duration = ( animation.end - animation.start ) / animation.fps;\r\n\r\n\t}\r\n\r\n};\r\n\r\nMorphBlendMesh.prototype.setAnimationDuration = function ( name, duration ) {\r\n\r\n\tvar animation = this.animationsMap[ name ];\r\n\r\n\tif ( animation ) {\r\n\r\n\t\tanimation.duration = duration;\r\n\t\tanimation.fps = ( animation.end - animation.start ) / animation.duration;\r\n\r\n\t}\r\n\r\n};\r\n\r\nMorphBlendMesh.prototype.setAnimationWeight = function ( name, weight ) {\r\n\r\n\tvar animation = this.animationsMap[ name ];\r\n\r\n\tif ( animation ) {\r\n\r\n\t\tanimation.weight = weight;\r\n\r\n\t}\r\n\r\n};\r\n\r\nMorphBlendMesh.prototype.setAnimationTime = function ( name, time ) {\r\n\r\n\tvar animation = this.animationsMap[ name ];\r\n\r\n\tif ( animation ) {\r\n\r\n\t\tanimation.time = time;\r\n\r\n\t}\r\n\r\n};\r\n\r\nMorphBlendMesh.prototype.getAnimationTime = function ( name ) {\r\n\r\n\tvar time = 0;\r\n\r\n\tvar animation = this.animationsMap[ name ];\r\n\r\n\tif ( animation ) {\r\n\r\n\t\ttime = animation.time;\r\n\r\n\t}\r\n\r\n\treturn time;\r\n\r\n};\r\n\r\nMorphBlendMesh.prototype.getAnimationDuration = function ( name ) {\r\n\r\n\tvar duration = - 1;\r\n\r\n\tvar animation = this.animationsMap[ name ];\r\n\r\n\tif ( animation ) {\r\n\r\n\t\tduration = animation.duration;\r\n\r\n\t}\r\n\r\n\treturn duration;\r\n\r\n};\r\n\r\nMorphBlendMesh.prototype.playAnimation = function ( name ) {\r\n\r\n\tvar animation = this.animationsMap[ name ];\r\n\r\n\tif ( animation ) {\r\n\r\n\t\tanimation.time = 0;\r\n\t\tanimation.active = true;\r\n\r\n\t} else {\r\n\r\n\t\tconsole.warn( \"THREE.MorphBlendMesh: animation[\" + name + \"] undefined in .playAnimation()\" );\r\n\r\n\t}\r\n\r\n};\r\n\r\nMorphBlendMesh.prototype.stopAnimation = function ( name ) {\r\n\r\n\tvar animation = this.animationsMap[ name ];\r\n\r\n\tif ( animation ) {\r\n\r\n\t\tanimation.active = false;\r\n\r\n\t}\r\n\r\n};\r\n\r\nMorphBlendMesh.prototype.update = function ( delta ) {\r\n\r\n\tfor ( var i = 0, il = this.animationsList.length; i < il; i ++ ) {\r\n\r\n\t\tvar animation = this.animationsList[ i ];\r\n\r\n\t\tif ( ! animation.active ) continue;\r\n\r\n\t\tvar frameTime = animation.duration / animation.length;\r\n\r\n\t\tanimation.time += animation.direction * delta;\r\n\r\n\t\tif ( animation.mirroredLoop ) {\r\n\r\n\t\t\tif ( animation.time > animation.duration || animation.time < 0 ) {\r\n\r\n\t\t\t\tanimation.direction *= - 1;\r\n\r\n\t\t\t\tif ( animation.time > animation.duration ) {\r\n\r\n\t\t\t\t\tanimation.time = animation.duration;\r\n\t\t\t\t\tanimation.directionBackwards = true;\r\n\r\n\t\t\t\t}\r\n\r\n\t\t\t\tif ( animation.time < 0 ) {\r\n\r\n\t\t\t\t\tanimation.time = 0;\r\n\t\t\t\t\tanimation.directionBackwards = false;\r\n\r\n\t\t\t\t}\r\n\r\n\t\t\t}\r\n\r\n\t\t} else {\r\n\r\n\t\t\tanimation.time = animation.time % animation.duration;\r\n\r\n\t\t\tif ( animation.time < 0 ) animation.time += animation.duration;\r\n\r\n\t\t}\r\n\r\n\t\tvar keyframe = animation.start + _Math.clamp( Math.floor( animation.time / frameTime ), 0, animation.length - 1 );\r\n\t\tvar weight = animation.weight;\r\n\r\n\t\tif ( keyframe !== animation.currentFrame ) {\r\n\r\n\t\t\tthis.morphTargetInfluences[ animation.lastFrame ] = 0;\r\n\t\t\tthis.morphTargetInfluences[ animation.currentFrame ] = 1 * weight;\r\n\r\n\t\t\tthis.morphTargetInfluences[ keyframe ] = 0;\r\n\r\n\t\t\tanimation.lastFrame = animation.currentFrame;\r\n\t\t\tanimation.currentFrame = keyframe;\r\n\r\n\t\t}\r\n\r\n\t\tvar mix = ( animation.time % frameTime ) / frameTime;\r\n\r\n\t\tif ( animation.directionBackwards ) mix = 1 - mix;\r\n\r\n\t\tif ( animation.currentFrame !== animation.lastFrame ) {\r\n\r\n\t\t\tthis.morphTargetInfluences[ animation.currentFrame ] = mix * weight;\r\n\t\t\tthis.morphTargetInfluences[ animation.lastFrame ] = ( 1 - mix ) * weight;\r\n\r\n\t\t} else {\r\n\r\n\t\t\tthis.morphTargetInfluences[ animation.currentFrame ] = weight;\r\n\r\n\t\t}\r\n\r\n\t}\r\n\r\n};\r\n\n\nexport { MorphBlendMesh };\n","import { Object3D } from '../../core/Object3D';\n\n/**\n * @author alteredq / http://alteredqualia.com/\n */\n\nfunction ImmediateRenderObject( material ) {\n\n\tObject3D.call( this );\n\n\tthis.material = material;\n\tthis.render = function ( renderCallback ) {};\n\n}\n\nImmediateRenderObject.prototype = Object.create( Object3D.prototype );\nImmediateRenderObject.prototype.constructor = ImmediateRenderObject;\n\nImmediateRenderObject.prototype.isImmediateRenderObject = true;\n\n\nexport { ImmediateRenderObject };\n","import { Matrix3 } from '../../math/Matrix3';\nimport { Vector3 } from '../../math/Vector3';\nimport { LineSegments } from '../../objects/LineSegments';\nimport { LineBasicMaterial } from '../../materials/LineBasicMaterial';\nimport { Float32Attribute } from '../../core/BufferAttribute';\nimport { BufferGeometry } from '../../core/BufferGeometry';\n\n/**\n * @author mrdoob / http://mrdoob.com/\n * @author WestLangley / http://github.com/WestLangley\n*/\n\nfunction VertexNormalsHelper( object, size, hex, linewidth ) {\n\n\tthis.object = object;\n\n\tthis.size = ( size !== undefined ) ? size : 1;\n\n\tvar color = ( hex !== undefined ) ? hex : 0xff0000;\n\n\tvar width = ( linewidth !== undefined ) ? linewidth : 1;\n\n\t//\n\n\tvar nNormals = 0;\n\n\tvar objGeometry = this.object.geometry;\n\n\tif ( (objGeometry && objGeometry.isGeometry) ) {\n\n\t\tnNormals = objGeometry.faces.length * 3;\n\n\t} else if ( (objGeometry && objGeometry.isBufferGeometry) ) {\n\n\t\tnNormals = objGeometry.attributes.normal.count;\n\n\t}\n\n\t//\n\n\tvar geometry = new BufferGeometry();\n\n\tvar positions = new Float32Attribute( nNormals * 2 * 3, 3 );\n\n\tgeometry.addAttribute( 'position', positions );\n\n\tLineSegments.call( this, geometry, new LineBasicMaterial( { color: color, linewidth: width } ) );\n\n\t//\n\n\tthis.matrixAutoUpdate = false;\n\n\tthis.update();\n\n}\n\nVertexNormalsHelper.prototype = Object.create( LineSegments.prototype );\nVertexNormalsHelper.prototype.constructor = VertexNormalsHelper;\n\nVertexNormalsHelper.prototype.update = ( function () {\n\n\tvar v1 = new Vector3();\n\tvar v2 = new Vector3();\n\tvar normalMatrix = new Matrix3();\n\n\treturn function update() {\n\n\t\tvar keys = [ 'a', 'b', 'c' ];\n\n\t\tthis.object.updateMatrixWorld( true );\n\n\t\tnormalMatrix.getNormalMatrix( this.object.matrixWorld );\n\n\t\tvar matrixWorld = this.object.matrixWorld;\n\n\t\tvar position = this.geometry.attributes.position;\n\n\t\t//\n\n\t\tvar objGeometry = this.object.geometry;\n\n\t\tif ( (objGeometry && objGeometry.isGeometry) ) {\n\n\t\t\tvar vertices = objGeometry.vertices;\n\n\t\t\tvar faces = objGeometry.faces;\n\n\t\t\tvar idx = 0;\n\n\t\t\tfor ( var i = 0, l = faces.length; i < l; i ++ ) {\n\n\t\t\t\tvar face = faces[ i ];\n\n\t\t\t\tfor ( var j = 0, jl = face.vertexNormals.length; j < jl; j ++ ) {\n\n\t\t\t\t\tvar vertex = vertices[ face[ keys[ j ] ] ];\n\n\t\t\t\t\tvar normal = face.vertexNormals[ j ];\n\n\t\t\t\t\tv1.copy( vertex ).applyMatrix4( matrixWorld );\n\n\t\t\t\t\tv2.copy( normal ).applyMatrix3( normalMatrix ).normalize().multiplyScalar( this.size ).add( v1 );\n\n\t\t\t\t\tposition.setXYZ( idx, v1.x, v1.y, v1.z );\n\n\t\t\t\t\tidx = idx + 1;\n\n\t\t\t\t\tposition.setXYZ( idx, v2.x, v2.y, v2.z );\n\n\t\t\t\t\tidx = idx + 1;\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t} else if ( (objGeometry && objGeometry.isBufferGeometry) ) {\n\n\t\t\tvar objPos = objGeometry.attributes.position;\n\n\t\t\tvar objNorm = objGeometry.attributes.normal;\n\n\t\t\tvar idx = 0;\n\n\t\t\t// for simplicity, ignore index and drawcalls, and render every normal\n\n\t\t\tfor ( var j = 0, jl = objPos.count; j < jl; j ++ ) {\n\n\t\t\t\tv1.set( objPos.getX( j ), objPos.getY( j ), objPos.getZ( j ) ).applyMatrix4( matrixWorld );\n\n\t\t\t\tv2.set( objNorm.getX( j ), objNorm.getY( j ), objNorm.getZ( j ) );\n\n\t\t\t\tv2.applyMatrix3( normalMatrix ).normalize().multiplyScalar( this.size ).add( v1 );\n\n\t\t\t\tposition.setXYZ( idx, v1.x, v1.y, v1.z );\n\n\t\t\t\tidx = idx + 1;\n\n\t\t\t\tposition.setXYZ( idx, v2.x, v2.y, v2.z );\n\n\t\t\t\tidx = idx + 1;\n\n\t\t\t}\n\n\t\t}\n\n\t\tposition.needsUpdate = true;\n\n\t\treturn this;\n\n\t};\n\n}() );\n\n\nexport { VertexNormalsHelper };\n","import { Vector3 } from '../../math/Vector3';\nimport { Object3D } from '../../core/Object3D';\nimport { LineSegments } from '../../objects/LineSegments';\nimport { LineBasicMaterial } from '../../materials/LineBasicMaterial';\nimport { Float32Attribute } from '../../core/BufferAttribute';\nimport { BufferGeometry } from '../../core/BufferGeometry';\n\n/**\n * @author alteredq / http://alteredqualia.com/\n * @author mrdoob / http://mrdoob.com/\n * @author WestLangley / http://github.com/WestLangley\n*/\n\nfunction SpotLightHelper( light ) {\n\n\tObject3D.call( this );\n\n\tthis.light = light;\n\tthis.light.updateMatrixWorld();\n\n\tthis.matrix = light.matrixWorld;\n\tthis.matrixAutoUpdate = false;\n\n\tvar geometry = new BufferGeometry();\n\n\tvar positions = [\n\t\t0, 0, 0, 0, 0, 1,\n\t\t0, 0, 0, 1, 0, 1,\n\t\t0, 0, 0, - 1, 0, 1,\n\t\t0, 0, 0, 0, 1, 1,\n\t\t0, 0, 0, 0, - 1, 1\n\t];\n\n\tfor ( var i = 0, j = 1, l = 32; i < l; i ++, j ++ ) {\n\n\t\tvar p1 = ( i / l ) * Math.PI * 2;\n\t\tvar p2 = ( j / l ) * Math.PI * 2;\n\n\t\tpositions.push(\n\t\t\tMath.cos( p1 ), Math.sin( p1 ), 1,\n\t\t\tMath.cos( p2 ), Math.sin( p2 ), 1\n\t\t);\n\n\t}\n\n\tgeometry.addAttribute( 'position', new Float32Attribute( positions, 3 ) );\n\n\tvar material = new LineBasicMaterial( { fog: false } );\n\n\tthis.cone = new LineSegments( geometry, material );\n\tthis.add( this.cone );\n\n\tthis.update();\n\n}\n\nSpotLightHelper.prototype = Object.create( Object3D.prototype );\nSpotLightHelper.prototype.constructor = SpotLightHelper;\n\nSpotLightHelper.prototype.dispose = function () {\n\n\tthis.cone.geometry.dispose();\n\tthis.cone.material.dispose();\n\n};\n\nSpotLightHelper.prototype.update = function () {\n\n\tvar vector = new Vector3();\n\tvar vector2 = new Vector3();\n\n\treturn function update() {\n\n\t\tvar coneLength = this.light.distance ? this.light.distance : 1000;\n\t\tvar coneWidth = coneLength * Math.tan( this.light.angle );\n\n\t\tthis.cone.scale.set( coneWidth, coneWidth, coneLength );\n\n\t\tvector.setFromMatrixPosition( this.light.matrixWorld );\n\t\tvector2.setFromMatrixPosition( this.light.target.matrixWorld );\n\n\t\tthis.cone.lookAt( vector2.sub( vector ) );\n\n\t\tthis.cone.material.color.copy( this.light.color ).multiplyScalar( this.light.intensity );\n\n\t};\n\n}();\n\n\nexport { SpotLightHelper };\n","import { LineSegments } from '../../objects/LineSegments';\nimport { Matrix4 } from '../../math/Matrix4';\nimport { VertexColors } from '../../constants';\nimport { LineBasicMaterial } from '../../materials/LineBasicMaterial';\nimport { Color } from '../../math/Color';\nimport { Vector3 } from '../../math/Vector3';\nimport { Geometry } from '../../core/Geometry';\n\n/**\n * @author Sean Griffin / http://twitter.com/sgrif\n * @author Michael Guerrero / http://realitymeltdown.com\n * @author mrdoob / http://mrdoob.com/\n * @author ikerr / http://verold.com\n */\n\nfunction SkeletonHelper( object ) {\n\n\tthis.bones = this.getBoneList( object );\n\n\tvar geometry = new Geometry();\n\n\tfor ( var i = 0; i < this.bones.length; i ++ ) {\n\n\t\tvar bone = this.bones[ i ];\n\n\t\tif ( (bone.parent && bone.parent.isBone) ) {\n\n\t\t\tgeometry.vertices.push( new Vector3() );\n\t\t\tgeometry.vertices.push( new Vector3() );\n\t\t\tgeometry.colors.push( new Color( 0, 0, 1 ) );\n\t\t\tgeometry.colors.push( new Color( 0, 1, 0 ) );\n\n\t\t}\n\n\t}\n\n\tgeometry.dynamic = true;\n\n\tvar material = new LineBasicMaterial( { vertexColors: VertexColors, depthTest: false, depthWrite: false, transparent: true } );\n\n\tLineSegments.call( this, geometry, material );\n\n\tthis.root = object;\n\n\tthis.matrix = object.matrixWorld;\n\tthis.matrixAutoUpdate = false;\n\n\tthis.update();\n\n}\n\n\nSkeletonHelper.prototype = Object.create( LineSegments.prototype );\nSkeletonHelper.prototype.constructor = SkeletonHelper;\n\nSkeletonHelper.prototype.getBoneList = function( object ) {\n\n\tvar boneList = [];\n\n\tif ( (object && object.isBone) ) {\n\n\t\tboneList.push( object );\n\n\t}\n\n\tfor ( var i = 0; i < object.children.length; i ++ ) {\n\n\t\tboneList.push.apply( boneList, this.getBoneList( object.children[ i ] ) );\n\n\t}\n\n\treturn boneList;\n\n};\n\nSkeletonHelper.prototype.update = function () {\n\n\tvar geometry = this.geometry;\n\n\tvar matrixWorldInv = new Matrix4().getInverse( this.root.matrixWorld );\n\n\tvar boneMatrix = new Matrix4();\n\n\tvar j = 0;\n\n\tfor ( var i = 0; i < this.bones.length; i ++ ) {\n\n\t\tvar bone = this.bones[ i ];\n\n\t\tif ( (bone.parent && bone.parent.isBone) ) {\n\n\t\t\tboneMatrix.multiplyMatrices( matrixWorldInv, bone.matrixWorld );\n\t\t\tgeometry.vertices[ j ].setFromMatrixPosition( boneMatrix );\n\n\t\t\tboneMatrix.multiplyMatrices( matrixWorldInv, bone.parent.matrixWorld );\n\t\t\tgeometry.vertices[ j + 1 ].setFromMatrixPosition( boneMatrix );\n\n\t\t\tj += 2;\n\n\t\t}\n\n\t}\n\n\tgeometry.verticesNeedUpdate = true;\n\n\tgeometry.computeBoundingSphere();\n\n};\n\n\nexport { SkeletonHelper };\n","import { Mesh } from '../../objects/Mesh';\nimport { MeshBasicMaterial } from '../../materials/MeshBasicMaterial';\nimport { SphereBufferGeometry } from '../../geometries/SphereBufferGeometry';\n\n/**\n * @author alteredq / http://alteredqualia.com/\n * @author mrdoob / http://mrdoob.com/\n */\n\nfunction PointLightHelper( light, sphereSize ) {\n\n\tthis.light = light;\n\tthis.light.updateMatrixWorld();\n\n\tvar geometry = new SphereBufferGeometry( sphereSize, 4, 2 );\n\tvar material = new MeshBasicMaterial( { wireframe: true, fog: false } );\n\tmaterial.color.copy( this.light.color ).multiplyScalar( this.light.intensity );\n\n\tMesh.call( this, geometry, material );\n\n\tthis.matrix = this.light.matrixWorld;\n\tthis.matrixAutoUpdate = false;\n\n\t/*\n\tvar distanceGeometry = new THREE.IcosahedronGeometry( 1, 2 );\n\tvar distanceMaterial = new THREE.MeshBasicMaterial( { color: hexColor, fog: false, wireframe: true, opacity: 0.1, transparent: true } );\n\n\tthis.lightSphere = new THREE.Mesh( bulbGeometry, bulbMaterial );\n\tthis.lightDistance = new THREE.Mesh( distanceGeometry, distanceMaterial );\n\n\tvar d = light.distance;\n\n\tif ( d === 0.0 ) {\n\n\t\tthis.lightDistance.visible = false;\n\n\t} else {\n\n\t\tthis.lightDistance.scale.set( d, d, d );\n\n\t}\n\n\tthis.add( this.lightDistance );\n\t*/\n\n}\n\nPointLightHelper.prototype = Object.create( Mesh.prototype );\nPointLightHelper.prototype.constructor = PointLightHelper;\n\nPointLightHelper.prototype.dispose = function () {\n\n\tthis.geometry.dispose();\n\tthis.material.dispose();\n\n};\n\nPointLightHelper.prototype.update = function () {\n\n\tthis.material.color.copy( this.light.color ).multiplyScalar( this.light.intensity );\n\n\t/*\n\tvar d = this.light.distance;\n\n\tif ( d === 0.0 ) {\n\n\t\tthis.lightDistance.visible = false;\n\n\t} else {\n\n\t\tthis.lightDistance.visible = true;\n\t\tthis.lightDistance.scale.set( d, d, d );\n\n\t}\n\t*/\n\n};\n\n\nexport { PointLightHelper };\n","import { Vector3 } from '../../math/Vector3';\nimport { Object3D } from '../../core/Object3D';\nimport { Mesh } from '../../objects/Mesh';\nimport { FaceColors } from '../../constants';\nimport { MeshBasicMaterial } from '../../materials/MeshBasicMaterial';\nimport { SphereGeometry } from '../../geometries/SphereGeometry';\nimport { Color } from '../../math/Color';\n\n/**\n * @author alteredq / http://alteredqualia.com/\n * @author mrdoob / http://mrdoob.com/\n */\n\nfunction HemisphereLightHelper( light, sphereSize ) {\n\n\tObject3D.call( this );\n\n\tthis.light = light;\n\tthis.light.updateMatrixWorld();\n\n\tthis.matrix = light.matrixWorld;\n\tthis.matrixAutoUpdate = false;\n\n\tthis.colors = [ new Color(), new Color() ];\n\n\tvar geometry = new SphereGeometry( sphereSize, 4, 2 );\n\tgeometry.rotateX( - Math.PI / 2 );\n\n\tfor ( var i = 0, il = 8; i < il; i ++ ) {\n\n\t\tgeometry.faces[ i ].color = this.colors[ i < 4 ? 0 : 1 ];\n\n\t}\n\n\tvar material = new MeshBasicMaterial( { vertexColors: FaceColors, wireframe: true } );\n\n\tthis.lightSphere = new Mesh( geometry, material );\n\tthis.add( this.lightSphere );\n\n\tthis.update();\n\n}\n\nHemisphereLightHelper.prototype = Object.create( Object3D.prototype );\nHemisphereLightHelper.prototype.constructor = HemisphereLightHelper;\n\nHemisphereLightHelper.prototype.dispose = function () {\n\n\tthis.lightSphere.geometry.dispose();\n\tthis.lightSphere.material.dispose();\n\n};\n\nHemisphereLightHelper.prototype.update = function () {\n\n\tvar vector = new Vector3();\n\n\treturn function update() {\n\n\t\tthis.colors[ 0 ].copy( this.light.color ).multiplyScalar( this.light.intensity );\n\t\tthis.colors[ 1 ].copy( this.light.groundColor ).multiplyScalar( this.light.intensity );\n\n\t\tthis.lightSphere.lookAt( vector.setFromMatrixPosition( this.light.matrixWorld ).negate() );\n\t\tthis.lightSphere.geometry.colorsNeedUpdate = true;\n\n\t};\n\n}();\n\n\nexport { HemisphereLightHelper };\n","import { LineSegments } from '../../objects/LineSegments';\nimport { VertexColors } from '../../constants';\nimport { LineBasicMaterial } from '../../materials/LineBasicMaterial';\nimport { Float32Attribute } from '../../core/BufferAttribute';\nimport { BufferGeometry } from '../../core/BufferGeometry';\nimport { Color } from '../../math/Color';\n\n/**\n * @author mrdoob / http://mrdoob.com/\n */\n\nfunction GridHelper( size, divisions, color1, color2 ) {\n\n\tdivisions = divisions || 1;\n\tcolor1 = new Color( color1 !== undefined ? color1 : 0x444444 );\n\tcolor2 = new Color( color2 !== undefined ? color2 : 0x888888 );\n\n\tvar center = divisions / 2;\n\tvar step = ( size * 2 ) / divisions;\n\tvar vertices = [], colors = [];\n\n\tfor ( var i = 0, j = 0, k = - size; i <= divisions; i ++, k += step ) {\n\n\t\tvertices.push( - size, 0, k, size, 0, k );\n\t\tvertices.push( k, 0, - size, k, 0, size );\n\n\t\tvar color = i === center ? color1 : color2;\n\n\t\tcolor.toArray( colors, j ); j += 3;\n\t\tcolor.toArray( colors, j ); j += 3;\n\t\tcolor.toArray( colors, j ); j += 3;\n\t\tcolor.toArray( colors, j ); j += 3;\n\n\t}\n\n\tvar geometry = new BufferGeometry();\n\tgeometry.addAttribute( 'position', new Float32Attribute( vertices, 3 ) );\n\tgeometry.addAttribute( 'color', new Float32Attribute( colors, 3 ) );\n\n\tvar material = new LineBasicMaterial( { vertexColors: VertexColors } );\n\n\tLineSegments.call( this, geometry, material );\n\n}\n\nGridHelper.prototype = Object.create( LineSegments.prototype );\nGridHelper.prototype.constructor = GridHelper;\n\nGridHelper.prototype.setColors = function () {\n\n\tconsole.error( 'THREE.GridHelper: setColors() has been deprecated, pass them in the constructor instead.' );\n\n};\n\n\nexport { GridHelper };\n","import { Matrix3 } from '../../math/Matrix3';\nimport { Vector3 } from '../../math/Vector3';\nimport { LineSegments } from '../../objects/LineSegments';\nimport { LineBasicMaterial } from '../../materials/LineBasicMaterial';\nimport { Float32Attribute } from '../../core/BufferAttribute';\nimport { BufferGeometry } from '../../core/BufferGeometry';\n\n/**\n * @author mrdoob / http://mrdoob.com/\n * @author WestLangley / http://github.com/WestLangley\n*/\n\nfunction FaceNormalsHelper( object, size, hex, linewidth ) {\n\n\t// FaceNormalsHelper only supports THREE.Geometry\n\n\tthis.object = object;\n\n\tthis.size = ( size !== undefined ) ? size : 1;\n\n\tvar color = ( hex !== undefined ) ? hex : 0xffff00;\n\n\tvar width = ( linewidth !== undefined ) ? linewidth : 1;\n\n\t//\n\n\tvar nNormals = 0;\n\n\tvar objGeometry = this.object.geometry;\n\n\tif ( (objGeometry && objGeometry.isGeometry) ) {\n\n\t\tnNormals = objGeometry.faces.length;\n\n\t} else {\n\n\t\tconsole.warn( 'THREE.FaceNormalsHelper: only THREE.Geometry is supported. Use THREE.VertexNormalsHelper, instead.' );\n\n\t}\n\n\t//\n\n\tvar geometry = new BufferGeometry();\n\n\tvar positions = new Float32Attribute( nNormals * 2 * 3, 3 );\n\n\tgeometry.addAttribute( 'position', positions );\n\n\tLineSegments.call( this, geometry, new LineBasicMaterial( { color: color, linewidth: width } ) );\n\n\t//\n\n\tthis.matrixAutoUpdate = false;\n\tthis.update();\n\n}\n\nFaceNormalsHelper.prototype = Object.create( LineSegments.prototype );\nFaceNormalsHelper.prototype.constructor = FaceNormalsHelper;\n\nFaceNormalsHelper.prototype.update = ( function () {\n\n\tvar v1 = new Vector3();\n\tvar v2 = new Vector3();\n\tvar normalMatrix = new Matrix3();\n\n\treturn function update() {\n\n\t\tthis.object.updateMatrixWorld( true );\n\n\t\tnormalMatrix.getNormalMatrix( this.object.matrixWorld );\n\n\t\tvar matrixWorld = this.object.matrixWorld;\n\n\t\tvar position = this.geometry.attributes.position;\n\n\t\t//\n\n\t\tvar objGeometry = this.object.geometry;\n\n\t\tvar vertices = objGeometry.vertices;\n\n\t\tvar faces = objGeometry.faces;\n\n\t\tvar idx = 0;\n\n\t\tfor ( var i = 0, l = faces.length; i < l; i ++ ) {\n\n\t\t\tvar face = faces[ i ];\n\n\t\t\tvar normal = face.normal;\n\n\t\t\tv1.copy( vertices[ face.a ] )\n\t\t\t\t.add( vertices[ face.b ] )\n\t\t\t\t.add( vertices[ face.c ] )\n\t\t\t\t.divideScalar( 3 )\n\t\t\t\t.applyMatrix4( matrixWorld );\n\n\t\t\tv2.copy( normal ).applyMatrix3( normalMatrix ).normalize().multiplyScalar( this.size ).add( v1 );\n\n\t\t\tposition.setXYZ( idx, v1.x, v1.y, v1.z );\n\n\t\t\tidx = idx + 1;\n\n\t\t\tposition.setXYZ( idx, v2.x, v2.y, v2.z );\n\n\t\t\tidx = idx + 1;\n\n\t\t}\n\n\t\tposition.needsUpdate = true;\n\n\t\treturn this;\n\n\t};\n\n}() );\n\n\nexport { FaceNormalsHelper };\n","import { Vector3 } from '../../math/Vector3';\nimport { Object3D } from '../../core/Object3D';\nimport { Line } from '../../objects/Line';\nimport { Float32Attribute } from '../../core/BufferAttribute';\nimport { BufferGeometry } from '../../core/BufferGeometry';\nimport { LineBasicMaterial } from '../../materials/LineBasicMaterial';\n\n/**\n * @author alteredq / http://alteredqualia.com/\n * @author mrdoob / http://mrdoob.com/\n * @author WestLangley / http://github.com/WestLangley\n */\n\nfunction DirectionalLightHelper( light, size ) {\n\n\tObject3D.call( this );\n\n\tthis.light = light;\n\tthis.light.updateMatrixWorld();\n\n\tthis.matrix = light.matrixWorld;\n\tthis.matrixAutoUpdate = false;\n\n\tif ( size === undefined ) size = 1;\n\n\tvar geometry = new BufferGeometry();\n\tgeometry.addAttribute( 'position', new Float32Attribute( [\n\t\t- size, size, 0,\n\t\t size, size, 0,\n\t\t size, - size, 0,\n\t\t- size, - size, 0,\n\t\t- size, size, 0\n\t], 3 ) );\n\n\tvar material = new LineBasicMaterial( { fog: false } );\n\n\tthis.add( new Line( geometry, material ) );\n\n\tgeometry = new BufferGeometry();\n\tgeometry.addAttribute( 'position', new Float32Attribute( [ 0, 0, 0, 0, 0, 1 ], 3 ) );\n\n\tthis.add( new Line( geometry, material ));\n\n\tthis.update();\n\n}\n\nDirectionalLightHelper.prototype = Object.create( Object3D.prototype );\nDirectionalLightHelper.prototype.constructor = DirectionalLightHelper;\n\nDirectionalLightHelper.prototype.dispose = function () {\n\n\tvar lightPlane = this.children[ 0 ];\n\tvar targetLine = this.children[ 1 ];\n\n\tlightPlane.geometry.dispose();\n\tlightPlane.material.dispose();\n\ttargetLine.geometry.dispose();\n\ttargetLine.material.dispose();\n\n};\n\nDirectionalLightHelper.prototype.update = function () {\n\n\tvar v1 = new Vector3();\n\tvar v2 = new Vector3();\n\tvar v3 = new Vector3();\n\n\treturn function update() {\n\n\t\tv1.setFromMatrixPosition( this.light.matrixWorld );\n\t\tv2.setFromMatrixPosition( this.light.target.matrixWorld );\n\t\tv3.subVectors( v2, v1 );\n\n\t\tvar lightPlane = this.children[ 0 ];\n\t\tvar targetLine = this.children[ 1 ];\n\n\t\tlightPlane.lookAt( v3 );\n\t\tlightPlane.material.color.copy( this.light.color ).multiplyScalar( this.light.intensity );\n\n\t\ttargetLine.lookAt( v3 );\n\t\ttargetLine.scale.z = v3.length();\n\n\t};\n\n}();\n\n\nexport { DirectionalLightHelper };\n","import { Camera } from '../../cameras/Camera';\nimport { Vector3 } from '../../math/Vector3';\nimport { LineSegments } from '../../objects/LineSegments';\nimport { Color } from '../../math/Color';\nimport { FaceColors } from '../../constants';\nimport { LineBasicMaterial } from '../../materials/LineBasicMaterial';\nimport { Geometry } from '../../core/Geometry';\n\n/**\n * @author alteredq / http://alteredqualia.com/\n *\n *\t- shows frustum, line of sight and up of the camera\n *\t- suitable for fast updates\n * \t- based on frustum visualization in lightgl.js shadowmap example\n *\t\thttp://evanw.github.com/lightgl.js/tests/shadowmap.html\n */\n\nfunction CameraHelper( camera ) {\n\n\tvar geometry = new Geometry();\n\tvar material = new LineBasicMaterial( { color: 0xffffff, vertexColors: FaceColors } );\n\n\tvar pointMap = {};\n\n\t// colors\n\n\tvar hexFrustum = 0xffaa00;\n\tvar hexCone = 0xff0000;\n\tvar hexUp = 0x00aaff;\n\tvar hexTarget = 0xffffff;\n\tvar hexCross = 0x333333;\n\n\t// near\n\n\taddLine( \"n1\", \"n2\", hexFrustum );\n\taddLine( \"n2\", \"n4\", hexFrustum );\n\taddLine( \"n4\", \"n3\", hexFrustum );\n\taddLine( \"n3\", \"n1\", hexFrustum );\n\n\t// far\n\n\taddLine( \"f1\", \"f2\", hexFrustum );\n\taddLine( \"f2\", \"f4\", hexFrustum );\n\taddLine( \"f4\", \"f3\", hexFrustum );\n\taddLine( \"f3\", \"f1\", hexFrustum );\n\n\t// sides\n\n\taddLine( \"n1\", \"f1\", hexFrustum );\n\taddLine( \"n2\", \"f2\", hexFrustum );\n\taddLine( \"n3\", \"f3\", hexFrustum );\n\taddLine( \"n4\", \"f4\", hexFrustum );\n\n\t// cone\n\n\taddLine( \"p\", \"n1\", hexCone );\n\taddLine( \"p\", \"n2\", hexCone );\n\taddLine( \"p\", \"n3\", hexCone );\n\taddLine( \"p\", \"n4\", hexCone );\n\n\t// up\n\n\taddLine( \"u1\", \"u2\", hexUp );\n\taddLine( \"u2\", \"u3\", hexUp );\n\taddLine( \"u3\", \"u1\", hexUp );\n\n\t// target\n\n\taddLine( \"c\", \"t\", hexTarget );\n\taddLine( \"p\", \"c\", hexCross );\n\n\t// cross\n\n\taddLine( \"cn1\", \"cn2\", hexCross );\n\taddLine( \"cn3\", \"cn4\", hexCross );\n\n\taddLine( \"cf1\", \"cf2\", hexCross );\n\taddLine( \"cf3\", \"cf4\", hexCross );\n\n\tfunction addLine( a, b, hex ) {\n\n\t\taddPoint( a, hex );\n\t\taddPoint( b, hex );\n\n\t}\n\n\tfunction addPoint( id, hex ) {\n\n\t\tgeometry.vertices.push( new Vector3() );\n\t\tgeometry.colors.push( new Color( hex ) );\n\n\t\tif ( pointMap[ id ] === undefined ) {\n\n\t\t\tpointMap[ id ] = [];\n\n\t\t}\n\n\t\tpointMap[ id ].push( geometry.vertices.length - 1 );\n\n\t}\n\n\tLineSegments.call( this, geometry, material );\n\n\tthis.camera = camera;\n\tif( this.camera.updateProjectionMatrix ) this.camera.updateProjectionMatrix();\n\n\tthis.matrix = camera.matrixWorld;\n\tthis.matrixAutoUpdate = false;\n\n\tthis.pointMap = pointMap;\n\n\tthis.update();\n\n}\n\nCameraHelper.prototype = Object.create( LineSegments.prototype );\nCameraHelper.prototype.constructor = CameraHelper;\n\nCameraHelper.prototype.update = function () {\n\n\tvar geometry, pointMap;\n\n\tvar vector = new Vector3();\n\tvar camera = new Camera();\n\n\tfunction setPoint( point, x, y, z ) {\n\n\t\tvector.set( x, y, z ).unproject( camera );\n\n\t\tvar points = pointMap[ point ];\n\n\t\tif ( points !== undefined ) {\n\n\t\t\tfor ( var i = 0, il = points.length; i < il; i ++ ) {\n\n\t\t\t\tgeometry.vertices[ points[ i ] ].copy( vector );\n\n\t\t\t}\n\n\t\t}\n\n\t}\n\n\treturn function update() {\n\n\t\tgeometry = this.geometry;\n\t\tpointMap = this.pointMap;\n\n\t\tvar w = 1, h = 1;\n\n\t\t// we need just camera projection matrix\n\t\t// world matrix must be identity\n\n\t\tcamera.projectionMatrix.copy( this.camera.projectionMatrix );\n\n\t\t// center / target\n\n\t\tsetPoint( \"c\", 0, 0, - 1 );\n\t\tsetPoint( \"t\", 0, 0, 1 );\n\n\t\t// near\n\n\t\tsetPoint( \"n1\", - w, - h, - 1 );\n\t\tsetPoint( \"n2\", w, - h, - 1 );\n\t\tsetPoint( \"n3\", - w, h, - 1 );\n\t\tsetPoint( \"n4\", w, h, - 1 );\n\n\t\t// far\n\n\t\tsetPoint( \"f1\", - w, - h, 1 );\n\t\tsetPoint( \"f2\", w, - h, 1 );\n\t\tsetPoint( \"f3\", - w, h, 1 );\n\t\tsetPoint( \"f4\", w, h, 1 );\n\n\t\t// up\n\n\t\tsetPoint( \"u1\", w * 0.7, h * 1.1, - 1 );\n\t\tsetPoint( \"u2\", - w * 0.7, h * 1.1, - 1 );\n\t\tsetPoint( \"u3\", 0, h * 2, - 1 );\n\n\t\t// cross\n\n\t\tsetPoint( \"cf1\", - w, 0, 1 );\n\t\tsetPoint( \"cf2\", w, 0, 1 );\n\t\tsetPoint( \"cf3\", 0, - h, 1 );\n\t\tsetPoint( \"cf4\", 0, h, 1 );\n\n\t\tsetPoint( \"cn1\", - w, 0, - 1 );\n\t\tsetPoint( \"cn2\", w, 0, - 1 );\n\t\tsetPoint( \"cn3\", 0, - h, - 1 );\n\t\tsetPoint( \"cn4\", 0, h, - 1 );\n\n\t\tgeometry.verticesNeedUpdate = true;\n\n\t};\n\n}();\n\n\nexport { CameraHelper };\n","import { Mesh } from '../../objects/Mesh';\nimport { MeshBasicMaterial } from '../../materials/MeshBasicMaterial';\nimport { BoxGeometry } from '../../geometries/BoxGeometry';\nimport { Box3 } from '../../math/Box3';\n\n/**\n * @author WestLangley / http://github.com/WestLangley\n */\n\n// a helper to show the world-axis-aligned bounding box for an object\n\nfunction BoundingBoxHelper( object, hex ) {\n\n\tvar color = ( hex !== undefined ) ? hex : 0x888888;\n\n\tthis.object = object;\n\n\tthis.box = new Box3();\n\n\tMesh.call( this, new BoxGeometry( 1, 1, 1 ), new MeshBasicMaterial( { color: color, wireframe: true } ) );\n\n}\n\nBoundingBoxHelper.prototype = Object.create( Mesh.prototype );\nBoundingBoxHelper.prototype.constructor = BoundingBoxHelper;\n\nBoundingBoxHelper.prototype.update = function () {\n\n\tthis.box.setFromObject( this.object );\n\n\tthis.box.getSize( this.scale );\n\n\tthis.box.getCenter( this.position );\n\n};\n\n\nexport { BoundingBoxHelper };\n","import { Box3 } from '../../math/Box3';\nimport { LineSegments } from '../../objects/LineSegments';\nimport { LineBasicMaterial } from '../../materials/LineBasicMaterial';\nimport { BufferAttribute } from '../../core/BufferAttribute';\nimport { BufferGeometry } from '../../core/BufferGeometry';\n\n/**\n * @author mrdoob / http://mrdoob.com/\n */\n\nfunction BoxHelper( object, color ) {\n\n\tif ( color === undefined ) color = 0xffff00;\n\n\tvar indices = new Uint16Array( [ 0, 1, 1, 2, 2, 3, 3, 0, 4, 5, 5, 6, 6, 7, 7, 4, 0, 4, 1, 5, 2, 6, 3, 7 ] );\n\tvar positions = new Float32Array( 8 * 3 );\n\n\tvar geometry = new BufferGeometry();\n\tgeometry.setIndex( new BufferAttribute( indices, 1 ) );\n\tgeometry.addAttribute( 'position', new BufferAttribute( positions, 3 ) );\n\n\tLineSegments.call( this, geometry, new LineBasicMaterial( { color: color } ) );\n\n\tif ( object !== undefined ) {\n\n\t\tthis.update( object );\n\n\t}\n\n}\n\nBoxHelper.prototype = Object.create( LineSegments.prototype );\nBoxHelper.prototype.constructor = BoxHelper;\n\nBoxHelper.prototype.update = ( function () {\n\n\tvar box = new Box3();\n\n\treturn function update( object ) {\n\n\t\tif ( (object && object.isBox3) ) {\n\n\t\t\tbox.copy( object );\n\n\t\t} else {\n\n\t\t\tbox.setFromObject( object );\n\n\t\t}\n\n\t\tif ( box.isEmpty() ) return;\n\n\t\tvar min = box.min;\n\t\tvar max = box.max;\n\n\t\t/*\n\t\t 5____4\n\t\t1/___0/|\n\t\t| 6__|_7\n\t\t2/___3/\n\n\t\t0: max.x, max.y, max.z\n\t\t1: min.x, max.y, max.z\n\t\t2: min.x, min.y, max.z\n\t\t3: max.x, min.y, max.z\n\t\t4: max.x, max.y, min.z\n\t\t5: min.x, max.y, min.z\n\t\t6: min.x, min.y, min.z\n\t\t7: max.x, min.y, min.z\n\t\t*/\n\n\t\tvar position = this.geometry.attributes.position;\n\t\tvar array = position.array;\n\n\t\tarray[ 0 ] = max.x; array[ 1 ] = max.y; array[ 2 ] = max.z;\n\t\tarray[ 3 ] = min.x; array[ 4 ] = max.y; array[ 5 ] = max.z;\n\t\tarray[ 6 ] = min.x; array[ 7 ] = min.y; array[ 8 ] = max.z;\n\t\tarray[ 9 ] = max.x; array[ 10 ] = min.y; array[ 11 ] = max.z;\n\t\tarray[ 12 ] = max.x; array[ 13 ] = max.y; array[ 14 ] = min.z;\n\t\tarray[ 15 ] = min.x; array[ 16 ] = max.y; array[ 17 ] = min.z;\n\t\tarray[ 18 ] = min.x; array[ 19 ] = min.y; array[ 20 ] = min.z;\n\t\tarray[ 21 ] = max.x; array[ 22 ] = min.y; array[ 23 ] = min.z;\n\n\t\tposition.needsUpdate = true;\n\n\t\tthis.geometry.computeBoundingSphere();\n\n\t};\n\n} )();\n\n\nexport { BoxHelper };\n","/**\n * @author WestLangley / http://github.com/WestLangley\n * @author zz85 / http://github.com/zz85\n * @author bhouston / http://clara.io\n *\n * Creates an arrow for visualizing directions\n *\n * Parameters:\n * dir - Vector3\n * origin - Vector3\n * length - Number\n * color - color in hex value\n * headLength - Number\n * headWidth - Number\n */\n\nimport { Vector3 } from '../../math/Vector3';\nimport { Object3D } from '../../core/Object3D';\nimport { CylinderBufferGeometry } from '../../geometries/CylinderBufferGeometry';\nimport { Float32Attribute } from '../../core/BufferAttribute';\nimport { BufferGeometry } from '../../core/BufferGeometry';\nimport { MeshBasicMaterial } from '../../materials/MeshBasicMaterial';\nimport { Mesh } from '../../objects/Mesh';\nimport { LineBasicMaterial } from '../../materials/LineBasicMaterial';\nimport { Line } from '../../objects/Line';\n\nvar lineGeometry = new BufferGeometry();\nlineGeometry.addAttribute( 'position', new Float32Attribute( [ 0, 0, 0, 0, 1, 0 ], 3 ) );\n\nvar coneGeometry = new CylinderBufferGeometry( 0, 0.5, 1, 5, 1 );\nconeGeometry.translate( 0, - 0.5, 0 );\n\nfunction ArrowHelper( dir, origin, length, color, headLength, headWidth ) {\n\n\t// dir is assumed to be normalized\n\n\tObject3D.call( this );\n\n\tif ( color === undefined ) color = 0xffff00;\n\tif ( length === undefined ) length = 1;\n\tif ( headLength === undefined ) headLength = 0.2 * length;\n\tif ( headWidth === undefined ) headWidth = 0.2 * headLength;\n\n\tthis.position.copy( origin );\n\n\tthis.line = new Line( lineGeometry, new LineBasicMaterial( { color: color } ) );\n\tthis.line.matrixAutoUpdate = false;\n\tthis.add( this.line );\n\n\tthis.cone = new Mesh( coneGeometry, new MeshBasicMaterial( { color: color } ) );\n\tthis.cone.matrixAutoUpdate = false;\n\tthis.add( this.cone );\n\n\tthis.setDirection( dir );\n\tthis.setLength( length, headLength, headWidth );\n\n}\n\nArrowHelper.prototype = Object.create( Object3D.prototype );\nArrowHelper.prototype.constructor = ArrowHelper;\n\nArrowHelper.prototype.setDirection = ( function () {\n\n\tvar axis = new Vector3();\n\tvar radians;\n\n\treturn function setDirection( dir ) {\n\n\t\t// dir is assumed to be normalized\n\n\t\tif ( dir.y > 0.99999 ) {\n\n\t\t\tthis.quaternion.set( 0, 0, 0, 1 );\n\n\t\t} else if ( dir.y < - 0.99999 ) {\n\n\t\t\tthis.quaternion.set( 1, 0, 0, 0 );\n\n\t\t} else {\n\n\t\t\taxis.set( dir.z, 0, - dir.x ).normalize();\n\n\t\t\tradians = Math.acos( dir.y );\n\n\t\t\tthis.quaternion.setFromAxisAngle( axis, radians );\n\n\t\t}\n\n\t};\n\n}() );\n\nArrowHelper.prototype.setLength = function ( length, headLength, headWidth ) {\n\n\tif ( headLength === undefined ) headLength = 0.2 * length;\n\tif ( headWidth === undefined ) headWidth = 0.2 * headLength;\n\n\tthis.line.scale.set( 1, Math.max( 0, length - headLength ), 1 );\n\tthis.line.updateMatrix();\n\n\tthis.cone.scale.set( headWidth, headLength, headWidth );\n\tthis.cone.position.y = length;\n\tthis.cone.updateMatrix();\n\n};\n\nArrowHelper.prototype.setColor = function ( color ) {\n\n\tthis.line.material.color.copy( color );\n\tthis.cone.material.color.copy( color );\n\n};\n\n\nexport { ArrowHelper };\n","import { LineSegments } from '../../objects/LineSegments';\nimport { VertexColors } from '../../constants';\nimport { LineBasicMaterial } from '../../materials/LineBasicMaterial';\nimport { BufferAttribute } from '../../core/BufferAttribute';\nimport { BufferGeometry } from '../../core/BufferGeometry';\n\n/**\n * @author sroucheray / http://sroucheray.org/\n * @author mrdoob / http://mrdoob.com/\n */\n\nfunction AxisHelper( size ) {\n\n\tsize = size || 1;\n\n\tvar vertices = new Float32Array( [\n\t\t0, 0, 0, size, 0, 0,\n\t\t0, 0, 0, 0, size, 0,\n\t\t0, 0, 0, 0, 0, size\n\t] );\n\n\tvar colors = new Float32Array( [\n\t\t1, 0, 0, 1, 0.6, 0,\n\t\t0, 1, 0, 0.6, 1, 0,\n\t\t0, 0, 1, 0, 0.6, 1\n\t] );\n\n\tvar geometry = new BufferGeometry();\n\tgeometry.addAttribute( 'position', new BufferAttribute( vertices, 3 ) );\n\tgeometry.addAttribute( 'color', new BufferAttribute( colors, 3 ) );\n\n\tvar material = new LineBasicMaterial( { vertexColors: VertexColors } );\n\n\tLineSegments.call( this, geometry, material );\n\n}\n\nAxisHelper.prototype = Object.create( LineSegments.prototype );\nAxisHelper.prototype.constructor = AxisHelper;\n\n\nexport { AxisHelper };\n","import { Vector3 } from '../../math/Vector3';\nimport { Curve } from '../core/Curve';\n\n/**\n * @author zz85 https://github.com/zz85\n *\n * Centripetal CatmullRom Curve - which is useful for avoiding\n * cusps and self-intersections in non-uniform catmull rom curves.\n * http://www.cemyuksel.com/research/catmullrom_param/catmullrom.pdf\n *\n * curve.type accepts centripetal(default), chordal and catmullrom\n * curve.tension is used for catmullrom which defaults to 0.5\n */\n\nvar CatmullRomCurve3 = ( function() {\n\n\tvar\n\t\ttmp = new Vector3(),\n\t\tpx = new CubicPoly(),\n\t\tpy = new CubicPoly(),\n\t\tpz = new CubicPoly();\n\n\t/*\n\tBased on an optimized c++ solution in\n\t - http://stackoverflow.com/questions/9489736/catmull-rom-curve-with-no-cusps-and-no-self-intersections/\n\t - http://ideone.com/NoEbVM\n\n\tThis CubicPoly class could be used for reusing some variables and calculations,\n\tbut for three.js curve use, it could be possible inlined and flatten into a single function call\n\twhich can be placed in CurveUtils.\n\t*/\n\n\tfunction CubicPoly() {}\n\n\t/*\n\t * Compute coefficients for a cubic polynomial\n\t * p(s) = c0 + c1*s + c2*s^2 + c3*s^3\n\t * such that\n\t * p(0) = x0, p(1) = x1\n\t * and\n\t * p'(0) = t0, p'(1) = t1.\n\t */\n\tCubicPoly.prototype.init = function( x0, x1, t0, t1 ) {\n\n\t\tthis.c0 = x0;\n\t\tthis.c1 = t0;\n\t\tthis.c2 = - 3 * x0 + 3 * x1 - 2 * t0 - t1;\n\t\tthis.c3 = 2 * x0 - 2 * x1 + t0 + t1;\n\n\t};\n\n\tCubicPoly.prototype.initNonuniformCatmullRom = function( x0, x1, x2, x3, dt0, dt1, dt2 ) {\n\n\t\t// compute tangents when parameterized in [t1,t2]\n\t\tvar t1 = ( x1 - x0 ) / dt0 - ( x2 - x0 ) / ( dt0 + dt1 ) + ( x2 - x1 ) / dt1;\n\t\tvar t2 = ( x2 - x1 ) / dt1 - ( x3 - x1 ) / ( dt1 + dt2 ) + ( x3 - x2 ) / dt2;\n\n\t\t// rescale tangents for parametrization in [0,1]\n\t\tt1 *= dt1;\n\t\tt2 *= dt1;\n\n\t\t// initCubicPoly\n\t\tthis.init( x1, x2, t1, t2 );\n\n\t};\n\n\t// standard Catmull-Rom spline: interpolate between x1 and x2 with previous/following points x1/x4\n\tCubicPoly.prototype.initCatmullRom = function( x0, x1, x2, x3, tension ) {\n\n\t\tthis.init( x1, x2, tension * ( x2 - x0 ), tension * ( x3 - x1 ) );\n\n\t};\n\n\tCubicPoly.prototype.calc = function( t ) {\n\n\t\tvar t2 = t * t;\n\t\tvar t3 = t2 * t;\n\t\treturn this.c0 + this.c1 * t + this.c2 * t2 + this.c3 * t3;\n\n\t};\n\n\t// Subclass Three.js curve\n\treturn Curve.create(\n\n\t\tfunction ( p /* array of Vector3 */ ) {\n\n\t\t\tthis.points = p || [];\n\t\t\tthis.closed = false;\n\n\t\t},\n\n\t\tfunction ( t ) {\n\n\t\t\tvar points = this.points,\n\t\t\t\tpoint, intPoint, weight, l;\n\n\t\t\tl = points.length;\n\n\t\t\tif ( l < 2 ) console.log( 'duh, you need at least 2 points' );\n\n\t\t\tpoint = ( l - ( this.closed ? 0 : 1 ) ) * t;\n\t\t\tintPoint = Math.floor( point );\n\t\t\tweight = point - intPoint;\n\n\t\t\tif ( this.closed ) {\n\n\t\t\t\tintPoint += intPoint > 0 ? 0 : ( Math.floor( Math.abs( intPoint ) / points.length ) + 1 ) * points.length;\n\n\t\t\t} else if ( weight === 0 && intPoint === l - 1 ) {\n\n\t\t\t\tintPoint = l - 2;\n\t\t\t\tweight = 1;\n\n\t\t\t}\n\n\t\t\tvar p0, p1, p2, p3; // 4 points\n\n\t\t\tif ( this.closed || intPoint > 0 ) {\n\n\t\t\t\tp0 = points[ ( intPoint - 1 ) % l ];\n\n\t\t\t} else {\n\n\t\t\t\t// extrapolate first point\n\t\t\t\ttmp.subVectors( points[ 0 ], points[ 1 ] ).add( points[ 0 ] );\n\t\t\t\tp0 = tmp;\n\n\t\t\t}\n\n\t\t\tp1 = points[ intPoint % l ];\n\t\t\tp2 = points[ ( intPoint + 1 ) % l ];\n\n\t\t\tif ( this.closed || intPoint + 2 < l ) {\n\n\t\t\t\tp3 = points[ ( intPoint + 2 ) % l ];\n\n\t\t\t} else {\n\n\t\t\t\t// extrapolate last point\n\t\t\t\ttmp.subVectors( points[ l - 1 ], points[ l - 2 ] ).add( points[ l - 1 ] );\n\t\t\t\tp3 = tmp;\n\n\t\t\t}\n\n\t\t\tif ( this.type === undefined || this.type === 'centripetal' || this.type === 'chordal' ) {\n\n\t\t\t\t// init Centripetal / Chordal Catmull-Rom\n\t\t\t\tvar pow = this.type === 'chordal' ? 0.5 : 0.25;\n\t\t\t\tvar dt0 = Math.pow( p0.distanceToSquared( p1 ), pow );\n\t\t\t\tvar dt1 = Math.pow( p1.distanceToSquared( p2 ), pow );\n\t\t\t\tvar dt2 = Math.pow( p2.distanceToSquared( p3 ), pow );\n\n\t\t\t\t// safety check for repeated points\n\t\t\t\tif ( dt1 < 1e-4 ) dt1 = 1.0;\n\t\t\t\tif ( dt0 < 1e-4 ) dt0 = dt1;\n\t\t\t\tif ( dt2 < 1e-4 ) dt2 = dt1;\n\n\t\t\t\tpx.initNonuniformCatmullRom( p0.x, p1.x, p2.x, p3.x, dt0, dt1, dt2 );\n\t\t\t\tpy.initNonuniformCatmullRom( p0.y, p1.y, p2.y, p3.y, dt0, dt1, dt2 );\n\t\t\t\tpz.initNonuniformCatmullRom( p0.z, p1.z, p2.z, p3.z, dt0, dt1, dt2 );\n\n\t\t\t} else if ( this.type === 'catmullrom' ) {\n\n\t\t\t\tvar tension = this.tension !== undefined ? this.tension : 0.5;\n\t\t\t\tpx.initCatmullRom( p0.x, p1.x, p2.x, p3.x, tension );\n\t\t\t\tpy.initCatmullRom( p0.y, p1.y, p2.y, p3.y, tension );\n\t\t\t\tpz.initCatmullRom( p0.z, p1.z, p2.z, p3.z, tension );\n\n\t\t\t}\n\n\t\t\tvar v = new Vector3(\n\t\t\t\tpx.calc( weight ),\n\t\t\t\tpy.calc( weight ),\n\t\t\t\tpz.calc( weight )\n\t\t\t);\n\n\t\t\treturn v;\n\n\t\t}\n\n\t);\n\n} )();\n\n\nexport { CatmullRomCurve3 };\n","import { CatmullRomCurve3 } from './CatmullRomCurve3';\n\n/**************************************************************\n *\tClosed Spline 3D curve\n **************************************************************/\n\n\nfunction ClosedSplineCurve3( points ) {\n\n\tconsole.warn( 'THREE.ClosedSplineCurve3 has been deprecated. Please use THREE.CatmullRomCurve3.' );\n\n\tCatmullRomCurve3.call( this, points );\n\tthis.type = 'catmullrom';\n\tthis.closed = true;\n\n}\n\nClosedSplineCurve3.prototype = Object.create( CatmullRomCurve3.prototype );\n\n\nexport { ClosedSplineCurve3 };\n","import { Vector3 } from '../../math/Vector3';\nimport { CurveUtils } from '../CurveUtils';\nimport { Curve } from '../core/Curve';\n\n/**************************************************************\n *\tSpline 3D curve\n **************************************************************/\n\n\nvar SplineCurve3 = Curve.create(\n\n\tfunction ( points /* array of Vector3 */ ) {\n\n\t\tconsole.warn( 'THREE.SplineCurve3 will be deprecated. Please use THREE.CatmullRomCurve3' );\n\t\tthis.points = ( points === undefined ) ? [] : points;\n\n\t},\n\n\tfunction ( t ) {\n\n\t\tvar points = this.points;\n\t\tvar point = ( points.length - 1 ) * t;\n\n\t\tvar intPoint = Math.floor( point );\n\t\tvar weight = point - intPoint;\n\n\t\tvar point0 = points[ intPoint == 0 ? intPoint : intPoint - 1 ];\n\t\tvar point1 = points[ intPoint ];\n\t\tvar point2 = points[ intPoint > points.length - 2 ? points.length - 1 : intPoint + 1 ];\n\t\tvar point3 = points[ intPoint > points.length - 3 ? points.length - 1 : intPoint + 2 ];\n\n\t\tvar interpolate = CurveUtils.interpolate;\n\n\t\treturn new Vector3(\n\t\t\tinterpolate( point0.x, point1.x, point2.x, point3.x, weight ),\n\t\t\tinterpolate( point0.y, point1.y, point2.y, point3.y, weight ),\n\t\t\tinterpolate( point0.z, point1.z, point2.z, point3.z, weight )\n\t\t);\n\n\t}\n\n);\n\n\nexport { SplineCurve3 };\n","import { Vector3 } from '../../math/Vector3';\nimport { ShapeUtils } from '../ShapeUtils';\nimport { Curve } from '../core/Curve';\n\n/**************************************************************\n *\tCubic Bezier 3D curve\n **************************************************************/\n\nvar CubicBezierCurve3 = Curve.create(\n\n\tfunction ( v0, v1, v2, v3 ) {\n\n\t\tthis.v0 = v0;\n\t\tthis.v1 = v1;\n\t\tthis.v2 = v2;\n\t\tthis.v3 = v3;\n\n\t},\n\n\tfunction ( t ) {\n\n\t\tvar b3 = ShapeUtils.b3;\n\n\t\treturn new Vector3(\n\t\t\tb3( t, this.v0.x, this.v1.x, this.v2.x, this.v3.x ),\n\t\t\tb3( t, this.v0.y, this.v1.y, this.v2.y, this.v3.y ),\n\t\t\tb3( t, this.v0.z, this.v1.z, this.v2.z, this.v3.z )\n\t\t);\n\n\t}\n\n);\n\n\nexport { CubicBezierCurve3 };\n","import { Vector3 } from '../../math/Vector3';\nimport { ShapeUtils } from '../ShapeUtils';\nimport { Curve } from '../core/Curve';\n\n/**************************************************************\n *\tQuadratic Bezier 3D curve\n **************************************************************/\n\nvar QuadraticBezierCurve3 = Curve.create(\n\n\tfunction ( v0, v1, v2 ) {\n\n\t\tthis.v0 = v0;\n\t\tthis.v1 = v1;\n\t\tthis.v2 = v2;\n\n\t},\n\n\tfunction ( t ) {\n\n\t\tvar b2 = ShapeUtils.b2;\n\n\t\treturn new Vector3(\n\t\t\tb2( t, this.v0.x, this.v1.x, this.v2.x ),\n\t\t\tb2( t, this.v0.y, this.v1.y, this.v2.y ),\n\t\t\tb2( t, this.v0.z, this.v1.z, this.v2.z )\n\t\t);\n\n\t}\n\n);\n\n\nexport { QuadraticBezierCurve3 };\n","import { Vector3 } from '../../math/Vector3';\nimport { Curve } from '../core/Curve';\n\n/**************************************************************\n *\tLine3D\n **************************************************************/\n\nvar LineCurve3 = Curve.create(\n\n\tfunction ( v1, v2 ) {\n\n\t\tthis.v1 = v1;\n\t\tthis.v2 = v2;\n\n\t},\n\n\tfunction ( t ) {\n\n\t\tif ( t === 1 ) {\n\n\t\t\treturn this.v2.clone();\n\n\t\t}\n\n\t\tvar vector = new Vector3();\n\n\t\tvector.subVectors( this.v2, this.v1 ); // diff\n\t\tvector.multiplyScalar( t );\n\t\tvector.add( this.v1 );\n\n\t\treturn vector;\n\n\t}\n\n);\n\n\nexport { LineCurve3 };\n","import { EllipseCurve } from './EllipseCurve';\n\n/**************************************************************\n *\tArc curve\n **************************************************************/\n\nfunction ArcCurve( aX, aY, aRadius, aStartAngle, aEndAngle, aClockwise ) {\n\n\tEllipseCurve.call( this, aX, aY, aRadius, aRadius, aStartAngle, aEndAngle, aClockwise );\n\n}\n\nArcCurve.prototype = Object.create( EllipseCurve.prototype );\nArcCurve.prototype.constructor = ArcCurve;\n\n\nexport { ArcCurve };\n","import { Matrix4 } from '../math/Matrix4';\nimport { Mesh } from '../objects/Mesh';\nimport { Group } from '../objects/Group';\n\n/**\n * @author alteredq / http://alteredqualia.com/\n */\n\nvar SceneUtils = {\n\n\tcreateMultiMaterialObject: function ( geometry, materials ) {\n\n\t\tvar group = new Group();\n\n\t\tfor ( var i = 0, l = materials.length; i < l; i ++ ) {\n\n\t\t\tgroup.add( new Mesh( geometry, materials[ i ] ) );\n\n\t\t}\n\n\t\treturn group;\n\n\t},\n\n\tdetach: function ( child, parent, scene ) {\n\n\t\tchild.applyMatrix( parent.matrixWorld );\n\t\tparent.remove( child );\n\t\tscene.add( child );\n\n\t},\n\n\tattach: function ( child, scene, parent ) {\n\n\t\tvar matrixWorldInverse = new Matrix4();\n\t\tmatrixWorldInverse.getInverse( parent.matrixWorld );\n\t\tchild.applyMatrix( matrixWorldInverse );\n\n\t\tscene.remove( child );\n\t\tparent.add( child );\n\n\t}\n\n};\n\n\nexport { SceneUtils };\n","/**\n * @author mrdoob / http://mrdoob.com/\n */\n\nimport { Audio } from './audio/Audio.js';\nimport { AudioAnalyser } from './audio/AudioAnalyser.js';\nimport { PerspectiveCamera } from './cameras/PerspectiveCamera.js';\nimport { CullFaceFront, CullFaceBack } from './constants.js';\nimport { BufferAttribute } from './core/BufferAttribute.js';\nimport { BufferGeometry } from './core/BufferGeometry.js';\nimport { EventDispatcher } from './core/EventDispatcher.js';\nimport { Face3 } from './core/Face3.js';\nimport { Object3D } from './core/Object3D.js';\nimport { Uniform } from './core/Uniform';\nimport { BoxGeometry } from './geometries/BoxGeometry.js';\nimport { EdgesGeometry } from './geometries/EdgesGeometry.js';\nimport { ExtrudeGeometry } from './geometries/ExtrudeGeometry.js';\nimport { ShapeGeometry } from './geometries/ShapeGeometry.js';\nimport { WireframeGeometry } from './geometries/WireframeGeometry.js';\nimport { Light } from './lights/Light.js';\nimport { FileLoader } from './loaders/FileLoader.js';\nimport { AudioLoader } from './loaders/AudioLoader.js';\nimport { CubeTextureLoader } from './loaders/CubeTextureLoader.js';\nimport { TextureLoader } from './loaders/TextureLoader.js';\nimport { Material } from './materials/Material.js';\nimport { LineBasicMaterial } from './materials/LineBasicMaterial.js';\nimport { MeshPhongMaterial } from './materials/MeshPhongMaterial.js';\nimport { MultiMaterial } from './materials/MultiMaterial.js';\nimport { PointsMaterial } from './materials/PointsMaterial.js';\nimport { ShaderMaterial } from './materials/ShaderMaterial.js';\nimport { Box2 } from './math/Box2.js';\nimport { Box3 } from './math/Box3.js';\nimport { Color } from './math/Color.js';\nimport { Line3 } from './math/Line3.js';\nimport { Matrix3 } from './math/Matrix3.js';\nimport { Matrix4 } from './math/Matrix4.js';\nimport { Plane } from './math/Plane.js';\nimport { Quaternion } from './math/Quaternion.js';\nimport { Ray } from './math/Ray.js';\nimport { Vector3 } from './math/Vector3.js';\nimport { LineSegments } from './objects/LineSegments.js';\nimport { LOD } from './objects/LOD.js';\nimport { Points } from './objects/Points.js';\nimport { Sprite } from './objects/Sprite.js';\nimport { WebGLRenderer } from './renderers/WebGLRenderer.js';\nimport { WebGLRenderTarget } from './renderers/WebGLRenderTarget.js';\nimport { WebGLShadowMap } from './renderers/webgl/WebGLShadowMap.js';\nimport { Shape } from './extras/core/Shape.js';\n\nexport { BoxGeometry as CubeGeometry };\n\nexport function Face4 ( a, b, c, d, normal, color, materialIndex ) {\n\tconsole.warn( 'THREE.Face4 has been removed. A THREE.Face3 will be created instead.' );\n\treturn new Face3( a, b, c, normal, color, materialIndex );\n}\n\nexport var LineStrip = 0;\n\nexport var LinePieces = 1;\n\nexport { MultiMaterial as MeshFaceMaterial };\n\nexport function PointCloud ( geometry, material ) {\n\tconsole.warn( 'THREE.PointCloud has been renamed to THREE.Points.' );\n\treturn new Points( geometry, material );\n}\n\nexport { Sprite as Particle };\n\nexport function ParticleSystem ( geometry, material ) {\n\tconsole.warn( 'THREE.ParticleSystem has been renamed to THREE.Points.' );\n\treturn new Points( geometry, material );\n}\n\nexport function PointCloudMaterial ( parameters ) {\n\tconsole.warn( 'THREE.PointCloudMaterial has been renamed to THREE.PointsMaterial.' );\n\treturn new PointsMaterial( parameters );\n}\n\nexport function ParticleBasicMaterial ( parameters ) {\n\tconsole.warn( 'THREE.ParticleBasicMaterial has been renamed to THREE.PointsMaterial.' );\n\treturn new PointsMaterial( parameters );\n}\n\nexport function ParticleSystemMaterial ( parameters ) {\n\tconsole.warn( 'THREE.ParticleSystemMaterial has been renamed to THREE.PointsMaterial.' );\n\treturn new PointsMaterial( parameters );\n}\n\nexport function Vertex ( x, y, z ) {\n\tconsole.warn( 'THREE.Vertex has been removed. Use THREE.Vector3 instead.' );\n\treturn new Vector3( x, y, z );\n}\n\n//\n\nexport function EdgesHelper( object, hex ) {\n\tconsole.warn( 'THREE.EdgesHelper has been removed. Use THREE.EdgesGeometry instead.' );\n\treturn new LineSegments( new EdgesGeometry( object.geometry ), new LineBasicMaterial( { color: hex !== undefined ? hex : 0xffffff } ) );\n}\n\nexport function WireframeHelper( object, hex ) {\n\tconsole.warn( 'THREE.WireframeHelper has been removed. Use THREE.WireframeGeometry instead.' );\n\treturn new LineSegments( new WireframeGeometry( object.geometry ), new LineBasicMaterial( { color: hex !== undefined ? hex : 0xffffff } ) );\n}\n\n//\n\nexport function XHRLoader( manager ) {\n\tconsole.warn( 'THREE.XHRLoader has been renamed to THREE.FileLoader.' );\n\treturn new FileLoader( manager );\n}\n\n//\n\nObject.assign( Box2.prototype, {\n\tcenter: function ( optionalTarget ) {\n\t\tconsole.warn( 'THREE.Box2: .center() has been renamed to .getCenter().' );\n\t\treturn this.getCenter( optionalTarget );\n\t},\n\tempty: function () {\n\t\tconsole.warn( 'THREE.Box2: .empty() has been renamed to .isEmpty().' );\n\t\treturn this.isEmpty();\n\t},\n\tisIntersectionBox: function ( box ) {\n\t\tconsole.warn( 'THREE.Box2: .isIntersectionBox() has been renamed to .intersectsBox().' );\n\t\treturn this.intersectsBox( box );\n\t},\n\tsize: function ( optionalTarget ) {\n\t\tconsole.warn( 'THREE.Box2: .size() has been renamed to .getSize().' );\n\t\treturn this.getSize( optionalTarget );\n\t}\n} );\n\nObject.assign( Box3.prototype, {\n\tcenter: function ( optionalTarget ) {\n\t\tconsole.warn( 'THREE.Box3: .center() has been renamed to .getCenter().' );\n\t\treturn this.getCenter( optionalTarget );\n\t},\n\tempty: function () {\n\t\tconsole.warn( 'THREE.Box3: .empty() has been renamed to .isEmpty().' );\n\t\treturn this.isEmpty();\n\t},\n\tisIntersectionBox: function ( box ) {\n\t\tconsole.warn( 'THREE.Box3: .isIntersectionBox() has been renamed to .intersectsBox().' );\n\t\treturn this.intersectsBox( box );\n\t},\n\tisIntersectionSphere: function ( sphere ) {\n\t\tconsole.warn( 'THREE.Box3: .isIntersectionSphere() has been renamed to .intersectsSphere().' );\n\t\treturn this.intersectsSphere( sphere );\n\t},\n\tsize: function ( optionalTarget ) {\n\t\tconsole.warn( 'THREE.Box3: .size() has been renamed to .getSize().' );\n\t\treturn this.getSize( optionalTarget );\n\t}\n} );\n\nObject.assign( Line3.prototype, {\n\tcenter: function ( optionalTarget ) {\n\t\tconsole.warn( 'THREE.Line3: .center() has been renamed to .getCenter().' );\n\t\treturn this.getCenter( optionalTarget );\n\t}\n} );\n\nObject.assign( Matrix3.prototype, {\n\tmultiplyVector3: function ( vector ) {\n\t\tconsole.warn( 'THREE.Matrix3: .multiplyVector3() has been removed. Use vector.applyMatrix3( matrix ) instead.' );\n\t\treturn vector.applyMatrix3( this );\n\t},\n\tmultiplyVector3Array: function ( a ) {\n\t\tconsole.warn( 'THREE.Matrix3: .multiplyVector3Array() has been renamed. Use matrix.applyToVector3Array( array ) instead.' );\n\t\treturn this.applyToVector3Array( a );\n\t}\n} );\n\nObject.assign( Matrix4.prototype, {\n\textractPosition: function ( m ) {\n\t\tconsole.warn( 'THREE.Matrix4: .extractPosition() has been renamed to .copyPosition().' );\n\t\treturn this.copyPosition( m );\n\t},\n\tsetRotationFromQuaternion: function ( q ) {\n\t\tconsole.warn( 'THREE.Matrix4: .setRotationFromQuaternion() has been renamed to .makeRotationFromQuaternion().' );\n\t\treturn this.makeRotationFromQuaternion( q );\n\t},\n\tmultiplyVector3: function ( vector ) {\n\t\tconsole.warn( 'THREE.Matrix4: .multiplyVector3() has been removed. Use vector.applyMatrix4( matrix ) or vector.applyProjection( matrix ) instead.' );\n\t\treturn vector.applyProjection( this );\n\t},\n\tmultiplyVector4: function ( vector ) {\n\t\tconsole.warn( 'THREE.Matrix4: .multiplyVector4() has been removed. Use vector.applyMatrix4( matrix ) instead.' );\n\t\treturn vector.applyMatrix4( this );\n\t},\n\tmultiplyVector3Array: function ( a ) {\n\t\tconsole.warn( 'THREE.Matrix4: .multiplyVector3Array() has been renamed. Use matrix.applyToVector3Array( array ) instead.' );\n\t\treturn this.applyToVector3Array( a );\n\t},\n\trotateAxis: function ( v ) {\n\t\tconsole.warn( 'THREE.Matrix4: .rotateAxis() has been removed. Use Vector3.transformDirection( matrix ) instead.' );\n\t\tv.transformDirection( this );\n\t},\n\tcrossVector: function ( vector ) {\n\t\tconsole.warn( 'THREE.Matrix4: .crossVector() has been removed. Use vector.applyMatrix4( matrix ) instead.' );\n\t\treturn vector.applyMatrix4( this );\n\t},\n\ttranslate: function ( v ) {\n\t\tconsole.error( 'THREE.Matrix4: .translate() has been removed.' );\n\t},\n\trotateX: function ( angle ) {\n\t\tconsole.error( 'THREE.Matrix4: .rotateX() has been removed.' );\n\t},\n\trotateY: function ( angle ) {\n\t\tconsole.error( 'THREE.Matrix4: .rotateY() has been removed.' );\n\t},\n\trotateZ: function ( angle ) {\n\t\tconsole.error( 'THREE.Matrix4: .rotateZ() has been removed.' );\n\t},\n\trotateByAxis: function ( axis, angle ) {\n\t\tconsole.error( 'THREE.Matrix4: .rotateByAxis() has been removed.' );\n\t}\n} );\n\nObject.assign( Plane.prototype, {\n\tisIntersectionLine: function ( line ) {\n\t\tconsole.warn( 'THREE.Plane: .isIntersectionLine() has been renamed to .intersectsLine().' );\n\t\treturn this.intersectsLine( line );\n\t}\n} );\n\nObject.assign( Quaternion.prototype, {\n\tmultiplyVector3: function ( vector ) {\n\t\tconsole.warn( 'THREE.Quaternion: .multiplyVector3() has been removed. Use is now vector.applyQuaternion( quaternion ) instead.' );\n\t\treturn vector.applyQuaternion( this );\n\t}\n} );\n\nObject.assign( Ray.prototype, {\n\tisIntersectionBox: function ( box ) {\n\t\tconsole.warn( 'THREE.Ray: .isIntersectionBox() has been renamed to .intersectsBox().' );\n\t\treturn this.intersectsBox( box );\n\t},\n\tisIntersectionPlane: function ( plane ) {\n\t\tconsole.warn( 'THREE.Ray: .isIntersectionPlane() has been renamed to .intersectsPlane().' );\n\t\treturn this.intersectsPlane( plane );\n\t},\n\tisIntersectionSphere: function ( sphere ) {\n\t\tconsole.warn( 'THREE.Ray: .isIntersectionSphere() has been renamed to .intersectsSphere().' );\n\t\treturn this.intersectsSphere( sphere );\n\t}\n} );\n\nObject.assign( Shape.prototype, {\n\textrude: function ( options ) {\n\t\tconsole.warn( 'THREE.Shape: .extrude() has been removed. Use ExtrudeGeometry() instead.' );\n\t\treturn new ExtrudeGeometry( this, options );\n\t},\n\tmakeGeometry: function ( options ) {\n\t\tconsole.warn( 'THREE.Shape: .makeGeometry() has been removed. Use ShapeGeometry() instead.' );\n\t\treturn new ShapeGeometry( this, options );\n\t}\n} );\n\nObject.assign( Vector3.prototype, {\n\tsetEulerFromRotationMatrix: function () {\n\t\tconsole.error( 'THREE.Vector3: .setEulerFromRotationMatrix() has been removed. Use Euler.setFromRotationMatrix() instead.' );\n\t},\n\tsetEulerFromQuaternion: function () {\n\t\tconsole.error( 'THREE.Vector3: .setEulerFromQuaternion() has been removed. Use Euler.setFromQuaternion() instead.' );\n\t},\n\tgetPositionFromMatrix: function ( m ) {\n\t\tconsole.warn( 'THREE.Vector3: .getPositionFromMatrix() has been renamed to .setFromMatrixPosition().' );\n\t\treturn this.setFromMatrixPosition( m );\n\t},\n\tgetScaleFromMatrix: function ( m ) {\n\t\tconsole.warn( 'THREE.Vector3: .getScaleFromMatrix() has been renamed to .setFromMatrixScale().' );\n\t\treturn this.setFromMatrixScale( m );\n\t},\n\tgetColumnFromMatrix: function ( index, matrix ) {\n\t\tconsole.warn( 'THREE.Vector3: .getColumnFromMatrix() has been renamed to .setFromMatrixColumn().' );\n\t\treturn this.setFromMatrixColumn( matrix, index );\n\t}\n} );\n\n//\n\nObject.assign( Object3D.prototype, {\n\tgetChildByName: function ( name ) {\n\t\tconsole.warn( 'THREE.Object3D: .getChildByName() has been renamed to .getObjectByName().' );\n\t\treturn this.getObjectByName( name );\n\t},\n\trenderDepth: function ( value ) {\n\t\tconsole.warn( 'THREE.Object3D: .renderDepth has been removed. Use .renderOrder, instead.' );\n\t},\n\ttranslate: function ( distance, axis ) {\n\t\tconsole.warn( 'THREE.Object3D: .translate() has been removed. Use .translateOnAxis( axis, distance ) instead.' );\n\t\treturn this.translateOnAxis( axis, distance );\n\t}\n} );\n\nObject.defineProperties( Object3D.prototype, {\n\teulerOrder: {\n\t\tget: function () {\n\t\t\tconsole.warn( 'THREE.Object3D: .eulerOrder is now .rotation.order.' );\n\t\t\treturn this.rotation.order;\n\t\t},\n\t\tset: function ( value ) {\n\t\t\tconsole.warn( 'THREE.Object3D: .eulerOrder is now .rotation.order.' );\n\t\t\tthis.rotation.order = value;\n\t\t}\n\t},\n\tuseQuaternion: {\n\t\tget: function () {\n\t\t\tconsole.warn( 'THREE.Object3D: .useQuaternion has been removed. The library now uses quaternions by default.' );\n\t\t},\n\t\tset: function ( value ) {\n\t\t\tconsole.warn( 'THREE.Object3D: .useQuaternion has been removed. The library now uses quaternions by default.' );\n\t\t}\n\t}\n} );\n\nObject.defineProperties( LOD.prototype, {\n\tobjects: {\n\t\tget: function () {\n\t\t\tconsole.warn( 'THREE.LOD: .objects has been renamed to .levels.' );\n\t\t\treturn this.levels;\n\t\t}\n\t}\n} );\n\n//\n\nPerspectiveCamera.prototype.setLens = function ( focalLength, filmGauge ) {\n\n\tconsole.warn( \"THREE.PerspectiveCamera.setLens is deprecated. \" +\n\t\t\t\"Use .setFocalLength and .filmGauge for a photographic setup.\" );\n\n\tif ( filmGauge !== undefined ) this.filmGauge = filmGauge;\n\tthis.setFocalLength( focalLength );\n\n};\n\n//\n\nObject.defineProperties( Light.prototype, {\n\tonlyShadow: {\n\t\tset: function ( value ) {\n\t\t\tconsole.warn( 'THREE.Light: .onlyShadow has been removed.' );\n\t\t}\n\t},\n\tshadowCameraFov: {\n\t\tset: function ( value ) {\n\t\t\tconsole.warn( 'THREE.Light: .shadowCameraFov is now .shadow.camera.fov.' );\n\t\t\tthis.shadow.camera.fov = value;\n\t\t}\n\t},\n\tshadowCameraLeft: {\n\t\tset: function ( value ) {\n\t\t\tconsole.warn( 'THREE.Light: .shadowCameraLeft is now .shadow.camera.left.' );\n\t\t\tthis.shadow.camera.left = value;\n\t\t}\n\t},\n\tshadowCameraRight: {\n\t\tset: function ( value ) {\n\t\t\tconsole.warn( 'THREE.Light: .shadowCameraRight is now .shadow.camera.right.' );\n\t\t\tthis.shadow.camera.right = value;\n\t\t}\n\t},\n\tshadowCameraTop: {\n\t\tset: function ( value ) {\n\t\t\tconsole.warn( 'THREE.Light: .shadowCameraTop is now .shadow.camera.top.' );\n\t\t\tthis.shadow.camera.top = value;\n\t\t}\n\t},\n\tshadowCameraBottom: {\n\t\tset: function ( value ) {\n\t\t\tconsole.warn( 'THREE.Light: .shadowCameraBottom is now .shadow.camera.bottom.' );\n\t\t\tthis.shadow.camera.bottom = value;\n\t\t}\n\t},\n\tshadowCameraNear: {\n\t\tset: function ( value ) {\n\t\t\tconsole.warn( 'THREE.Light: .shadowCameraNear is now .shadow.camera.near.' );\n\t\t\tthis.shadow.camera.near = value;\n\t\t}\n\t},\n\tshadowCameraFar: {\n\t\tset: function ( value ) {\n\t\t\tconsole.warn( 'THREE.Light: .shadowCameraFar is now .shadow.camera.far.' );\n\t\t\tthis.shadow.camera.far = value;\n\t\t}\n\t},\n\tshadowCameraVisible: {\n\t\tset: function ( value ) {\n\t\t\tconsole.warn( 'THREE.Light: .shadowCameraVisible has been removed. Use new THREE.CameraHelper( light.shadow.camera ) instead.' );\n\t\t}\n\t},\n\tshadowBias: {\n\t\tset: function ( value ) {\n\t\t\tconsole.warn( 'THREE.Light: .shadowBias is now .shadow.bias.' );\n\t\t\tthis.shadow.bias = value;\n\t\t}\n\t},\n\tshadowDarkness: {\n\t\tset: function ( value ) {\n\t\t\tconsole.warn( 'THREE.Light: .shadowDarkness has been removed.' );\n\t\t}\n\t},\n\tshadowMapWidth: {\n\t\tset: function ( value ) {\n\t\t\tconsole.warn( 'THREE.Light: .shadowMapWidth is now .shadow.mapSize.width.' );\n\t\t\tthis.shadow.mapSize.width = value;\n\t\t}\n\t},\n\tshadowMapHeight: {\n\t\tset: function ( value ) {\n\t\t\tconsole.warn( 'THREE.Light: .shadowMapHeight is now .shadow.mapSize.height.' );\n\t\t\tthis.shadow.mapSize.height = value;\n\t\t}\n\t}\n} );\n\n//\n\nObject.defineProperties( BufferAttribute.prototype, {\n\tlength: {\n\t\tget: function () {\n\t\t\tconsole.warn( 'THREE.BufferAttribute: .length has been deprecated. Please use .count.' );\n\t\t\treturn this.array.length;\n\t\t}\n\t}\n} );\n\nObject.assign( BufferGeometry.prototype, {\n\taddIndex: function ( index ) {\n\t\tconsole.warn( 'THREE.BufferGeometry: .addIndex() has been renamed to .setIndex().' );\n\t\tthis.setIndex( index );\n\t},\n\taddDrawCall: function ( start, count, indexOffset ) {\n\t\tif ( indexOffset !== undefined ) {\n\t\t\tconsole.warn( 'THREE.BufferGeometry: .addDrawCall() no longer supports indexOffset.' );\n\t\t}\n\t\tconsole.warn( 'THREE.BufferGeometry: .addDrawCall() is now .addGroup().' );\n\t\tthis.addGroup( start, count );\n\t},\n\tclearDrawCalls: function () {\n\t\tconsole.warn( 'THREE.BufferGeometry: .clearDrawCalls() is now .clearGroups().' );\n\t\tthis.clearGroups();\n\t},\n\tcomputeTangents: function () {\n\t\tconsole.warn( 'THREE.BufferGeometry: .computeTangents() has been removed.' );\n\t},\n\tcomputeOffsets: function () {\n\t\tconsole.warn( 'THREE.BufferGeometry: .computeOffsets() has been removed.' );\n\t}\n} );\n\nObject.defineProperties( BufferGeometry.prototype, {\n\tdrawcalls: {\n\t\tget: function () {\n\t\t\tconsole.error( 'THREE.BufferGeometry: .drawcalls has been renamed to .groups.' );\n\t\t\treturn this.groups;\n\t\t}\n\t},\n\toffsets: {\n\t\tget: function () {\n\t\t\tconsole.warn( 'THREE.BufferGeometry: .offsets has been renamed to .groups.' );\n\t\t\treturn this.groups;\n\t\t}\n\t}\n} );\n\n//\n\nObject.defineProperties( Uniform.prototype, {\n\tdynamic: {\n\t\tset: function ( value ) {\n\t\t\tconsole.warn( 'THREE.Uniform: .dynamic has been removed. Use object.onBeforeRender() instead.' );\n\t\t}\n\t},\n\tonUpdate: {\n\t\tvalue: function () {\n\t\t\tconsole.warn( 'THREE.Uniform: .onUpdate() has been removed. Use object.onBeforeRender() instead.' );\n\t\t\treturn this;\n\t\t}\n\t}\n} );\n\n//\n\nObject.defineProperties( Material.prototype, {\n\twrapAround: {\n\t\tget: function () {\n\t\t\tconsole.warn( 'THREE.' + this.type + ': .wrapAround has been removed.' );\n\t\t},\n\t\tset: function ( value ) {\n\t\t\tconsole.warn( 'THREE.' + this.type + ': .wrapAround has been removed.' );\n\t\t}\n\t},\n\twrapRGB: {\n\t\tget: function () {\n\t\t\tconsole.warn( 'THREE.' + this.type + ': .wrapRGB has been removed.' );\n\t\t\treturn new Color();\n\t\t}\n\t}\n} );\n\nObject.defineProperties( MeshPhongMaterial.prototype, {\n\tmetal: {\n\t\tget: function () {\n\t\t\tconsole.warn( 'THREE.MeshPhongMaterial: .metal has been removed. Use THREE.MeshStandardMaterial instead.' );\n\t\t\treturn false;\n\t\t},\n\t\tset: function ( value ) {\n\t\t\tconsole.warn( 'THREE.MeshPhongMaterial: .metal has been removed. Use THREE.MeshStandardMaterial instead' );\n\t\t}\n\t}\n} );\n\nObject.defineProperties( ShaderMaterial.prototype, {\n\tderivatives: {\n\t\tget: function () {\n\t\t\tconsole.warn( 'THREE.ShaderMaterial: .derivatives has been moved to .extensions.derivatives.' );\n\t\t\treturn this.extensions.derivatives;\n\t\t},\n\t\tset: function ( value ) {\n\t\t\tconsole.warn( 'THREE. ShaderMaterial: .derivatives has been moved to .extensions.derivatives.' );\n\t\t\tthis.extensions.derivatives = value;\n\t\t}\n\t}\n} );\n\n//\n\nEventDispatcher.prototype = Object.assign( Object.create( {\n\n\t// Note: Extra base ensures these properties are not 'assign'ed.\n\n\tconstructor: EventDispatcher,\n\n\tapply: function ( target ) {\n\n\t\tconsole.warn( \"THREE.EventDispatcher: .apply is deprecated, \" +\n\t\t\t\t\"just inherit or Object.assign the prototype to mix-in.\" );\n\n\t\tObject.assign( target, this );\n\n\t}\n\n} ), EventDispatcher.prototype );\n\n//\n\nObject.assign( WebGLRenderer.prototype, {\n\tsupportsFloatTextures: function () {\n\t\tconsole.warn( 'THREE.WebGLRenderer: .supportsFloatTextures() is now .extensions.get( \\'OES_texture_float\\' ).' );\n\t\treturn this.extensions.get( 'OES_texture_float' );\n\t},\n\tsupportsHalfFloatTextures: function () {\n\t\tconsole.warn( 'THREE.WebGLRenderer: .supportsHalfFloatTextures() is now .extensions.get( \\'OES_texture_half_float\\' ).' );\n\t\treturn this.extensions.get( 'OES_texture_half_float' );\n\t},\n\tsupportsStandardDerivatives: function () {\n\t\tconsole.warn( 'THREE.WebGLRenderer: .supportsStandardDerivatives() is now .extensions.get( \\'OES_standard_derivatives\\' ).' );\n\t\treturn this.extensions.get( 'OES_standard_derivatives' );\n\t},\n\tsupportsCompressedTextureS3TC: function () {\n\t\tconsole.warn( 'THREE.WebGLRenderer: .supportsCompressedTextureS3TC() is now .extensions.get( \\'WEBGL_compressed_texture_s3tc\\' ).' );\n\t\treturn this.extensions.get( 'WEBGL_compressed_texture_s3tc' );\n\t},\n\tsupportsCompressedTexturePVRTC: function () {\n\t\tconsole.warn( 'THREE.WebGLRenderer: .supportsCompressedTexturePVRTC() is now .extensions.get( \\'WEBGL_compressed_texture_pvrtc\\' ).' );\n\t\treturn this.extensions.get( 'WEBGL_compressed_texture_pvrtc' );\n\t},\n\tsupportsBlendMinMax: function () {\n\t\tconsole.warn( 'THREE.WebGLRenderer: .supportsBlendMinMax() is now .extensions.get( \\'EXT_blend_minmax\\' ).' );\n\t\treturn this.extensions.get( 'EXT_blend_minmax' );\n\t},\n\tsupportsVertexTextures: function () {\n\t\treturn this.capabilities.vertexTextures;\n\t},\n\tsupportsInstancedArrays: function () {\n\t\tconsole.warn( 'THREE.WebGLRenderer: .supportsInstancedArrays() is now .extensions.get( \\'ANGLE_instanced_arrays\\' ).' );\n\t\treturn this.extensions.get( 'ANGLE_instanced_arrays' );\n\t},\n\tenableScissorTest: function ( boolean ) {\n\t\tconsole.warn( 'THREE.WebGLRenderer: .enableScissorTest() is now .setScissorTest().' );\n\t\tthis.setScissorTest( boolean );\n\t},\n\tinitMaterial: function () {\n\t\tconsole.warn( 'THREE.WebGLRenderer: .initMaterial() has been removed.' );\n\t},\n\taddPrePlugin: function () {\n\t\tconsole.warn( 'THREE.WebGLRenderer: .addPrePlugin() has been removed.' );\n\t},\n\taddPostPlugin: function () {\n\t\tconsole.warn( 'THREE.WebGLRenderer: .addPostPlugin() has been removed.' );\n\t},\n\tupdateShadowMap: function () {\n\t\tconsole.warn( 'THREE.WebGLRenderer: .updateShadowMap() has been removed.' );\n\t}\n} );\n\nObject.defineProperties( WebGLRenderer.prototype, {\n\tshadowMapEnabled: {\n\t\tget: function () {\n\t\t\treturn this.shadowMap.enabled;\n\t\t},\n\t\tset: function ( value ) {\n\t\t\tconsole.warn( 'THREE.WebGLRenderer: .shadowMapEnabled is now .shadowMap.enabled.' );\n\t\t\tthis.shadowMap.enabled = value;\n\t\t}\n\t},\n\tshadowMapType: {\n\t\tget: function () {\n\t\t\treturn this.shadowMap.type;\n\t\t},\n\t\tset: function ( value ) {\n\t\t\tconsole.warn( 'THREE.WebGLRenderer: .shadowMapType is now .shadowMap.type.' );\n\t\t\tthis.shadowMap.type = value;\n\t\t}\n\t},\n\tshadowMapCullFace: {\n\t\tget: function () {\n\t\t\treturn this.shadowMap.cullFace;\n\t\t},\n\t\tset: function ( value ) {\n\t\t\tconsole.warn( 'THREE.WebGLRenderer: .shadowMapCullFace is now .shadowMap.cullFace.' );\n\t\t\tthis.shadowMap.cullFace = value;\n\t\t}\n\t}\n} );\n\nObject.defineProperties( WebGLShadowMap.prototype, {\n\tcullFace: {\n\t\tget: function () {\n\t\t\treturn this.renderReverseSided ? CullFaceFront : CullFaceBack;\n\t\t},\n\t\tset: function ( cullFace ) {\n\t\t\tvar value = ( cullFace !== CullFaceBack );\n\t\t\tconsole.warn( \"WebGLRenderer: .shadowMap.cullFace is deprecated. Set .shadowMap.renderReverseSided to \" + value + \".\" );\n\t\t\tthis.renderReverseSided = value;\n\t\t}\n\t}\n} );\n\n//\n\nObject.defineProperties( WebGLRenderTarget.prototype, {\n\twrapS: {\n\t\tget: function () {\n\t\t\tconsole.warn( 'THREE.WebGLRenderTarget: .wrapS is now .texture.wrapS.' );\n\t\t\treturn this.texture.wrapS;\n\t\t},\n\t\tset: function ( value ) {\n\t\t\tconsole.warn( 'THREE.WebGLRenderTarget: .wrapS is now .texture.wrapS.' );\n\t\t\tthis.texture.wrapS = value;\n\t\t}\n\t},\n\twrapT: {\n\t\tget: function () {\n\t\t\tconsole.warn( 'THREE.WebGLRenderTarget: .wrapT is now .texture.wrapT.' );\n\t\t\treturn this.texture.wrapT;\n\t\t},\n\t\tset: function ( value ) {\n\t\t\tconsole.warn( 'THREE.WebGLRenderTarget: .wrapT is now .texture.wrapT.' );\n\t\t\tthis.texture.wrapT = value;\n\t\t}\n\t},\n\tmagFilter: {\n\t\tget: function () {\n\t\t\tconsole.warn( 'THREE.WebGLRenderTarget: .magFilter is now .texture.magFilter.' );\n\t\t\treturn this.texture.magFilter;\n\t\t},\n\t\tset: function ( value ) {\n\t\t\tconsole.warn( 'THREE.WebGLRenderTarget: .magFilter is now .texture.magFilter.' );\n\t\t\tthis.texture.magFilter = value;\n\t\t}\n\t},\n\tminFilter: {\n\t\tget: function () {\n\t\t\tconsole.warn( 'THREE.WebGLRenderTarget: .minFilter is now .texture.minFilter.' );\n\t\t\treturn this.texture.minFilter;\n\t\t},\n\t\tset: function ( value ) {\n\t\t\tconsole.warn( 'THREE.WebGLRenderTarget: .minFilter is now .texture.minFilter.' );\n\t\t\tthis.texture.minFilter = value;\n\t\t}\n\t},\n\tanisotropy: {\n\t\tget: function () {\n\t\t\tconsole.warn( 'THREE.WebGLRenderTarget: .anisotropy is now .texture.anisotropy.' );\n\t\t\treturn this.texture.anisotropy;\n\t\t},\n\t\tset: function ( value ) {\n\t\t\tconsole.warn( 'THREE.WebGLRenderTarget: .anisotropy is now .texture.anisotropy.' );\n\t\t\tthis.texture.anisotropy = value;\n\t\t}\n\t},\n\toffset: {\n\t\tget: function () {\n\t\t\tconsole.warn( 'THREE.WebGLRenderTarget: .offset is now .texture.offset.' );\n\t\t\treturn this.texture.offset;\n\t\t},\n\t\tset: function ( value ) {\n\t\t\tconsole.warn( 'THREE.WebGLRenderTarget: .offset is now .texture.offset.' );\n\t\t\tthis.texture.offset = value;\n\t\t}\n\t},\n\trepeat: {\n\t\tget: function () {\n\t\t\tconsole.warn( 'THREE.WebGLRenderTarget: .repeat is now .texture.repeat.' );\n\t\t\treturn this.texture.repeat;\n\t\t},\n\t\tset: function ( value ) {\n\t\t\tconsole.warn( 'THREE.WebGLRenderTarget: .repeat is now .texture.repeat.' );\n\t\t\tthis.texture.repeat = value;\n\t\t}\n\t},\n\tformat: {\n\t\tget: function () {\n\t\t\tconsole.warn( 'THREE.WebGLRenderTarget: .format is now .texture.format.' );\n\t\t\treturn this.texture.format;\n\t\t},\n\t\tset: function ( value ) {\n\t\t\tconsole.warn( 'THREE.WebGLRenderTarget: .format is now .texture.format.' );\n\t\t\tthis.texture.format = value;\n\t\t}\n\t},\n\ttype: {\n\t\tget: function () {\n\t\t\tconsole.warn( 'THREE.WebGLRenderTarget: .type is now .texture.type.' );\n\t\t\treturn this.texture.type;\n\t\t},\n\t\tset: function ( value ) {\n\t\t\tconsole.warn( 'THREE.WebGLRenderTarget: .type is now .texture.type.' );\n\t\t\tthis.texture.type = value;\n\t\t}\n\t},\n\tgenerateMipmaps: {\n\t\tget: function () {\n\t\t\tconsole.warn( 'THREE.WebGLRenderTarget: .generateMipmaps is now .texture.generateMipmaps.' );\n\t\t\treturn this.texture.generateMipmaps;\n\t\t},\n\t\tset: function ( value ) {\n\t\t\tconsole.warn( 'THREE.WebGLRenderTarget: .generateMipmaps is now .texture.generateMipmaps.' );\n\t\t\tthis.texture.generateMipmaps = value;\n\t\t}\n\t}\n} );\n\n//\n\nObject.assign( Audio.prototype, {\n\tload: function ( file ) {\n\t\tconsole.warn( 'THREE.Audio: .load has been deprecated. Please use THREE.AudioLoader.' );\n\t\tvar scope = this;\n\t\tvar audioLoader = new AudioLoader();\n\t\taudioLoader.load( file, function ( buffer ) {\n\t\t\tscope.setBuffer( buffer );\n\t\t} );\n\t\treturn this;\n\t}\n} );\n\nObject.assign( AudioAnalyser.prototype, {\n\tgetData: function ( file ) {\n\t\tconsole.warn( 'THREE.AudioAnalyser: .getData() is now .getFrequencyData().' );\n\t\treturn this.getFrequencyData();\n\t}\n} );\n\n//\n\nexport var GeometryUtils = {\n\n\tmerge: function ( geometry1, geometry2, materialIndexOffset ) {\n\n\t\tconsole.warn( 'THREE.GeometryUtils: .merge() has been moved to Geometry. Use geometry.merge( geometry2, matrix, materialIndexOffset ) instead.' );\n\n\t\tvar matrix;\n\n\t\tif ( geometry2.isMesh ) {\n\n\t\t\tgeometry2.matrixAutoUpdate && geometry2.updateMatrix();\n\n\t\t\tmatrix = geometry2.matrix;\n\t\t\tgeometry2 = geometry2.geometry;\n\n\t\t}\n\n\t\tgeometry1.merge( geometry2, matrix, materialIndexOffset );\n\n\t},\n\n\tcenter: function ( geometry ) {\n\n\t\tconsole.warn( 'THREE.GeometryUtils: .center() has been moved to Geometry. Use geometry.center() instead.' );\n\t\treturn geometry.center();\n\n\t}\n\n};\n\nexport var ImageUtils = {\n\n\tcrossOrigin: undefined,\n\n\tloadTexture: function ( url, mapping, onLoad, onError ) {\n\n\t\tconsole.warn( 'THREE.ImageUtils.loadTexture has been deprecated. Use THREE.TextureLoader() instead.' );\n\n\t\tvar loader = new TextureLoader();\n\t\tloader.setCrossOrigin( this.crossOrigin );\n\n\t\tvar texture = loader.load( url, onLoad, undefined, onError );\n\n\t\tif ( mapping ) texture.mapping = mapping;\n\n\t\treturn texture;\n\n\t},\n\n\tloadTextureCube: function ( urls, mapping, onLoad, onError ) {\n\n\t\tconsole.warn( 'THREE.ImageUtils.loadTextureCube has been deprecated. Use THREE.CubeTextureLoader() instead.' );\n\n\t\tvar loader = new CubeTextureLoader();\n\t\tloader.setCrossOrigin( this.crossOrigin );\n\n\t\tvar texture = loader.load( urls, onLoad, undefined, onError );\n\n\t\tif ( mapping ) texture.mapping = mapping;\n\n\t\treturn texture;\n\n\t},\n\n\tloadCompressedTexture: function () {\n\n\t\tconsole.error( 'THREE.ImageUtils.loadCompressedTexture has been removed. Use THREE.DDSLoader instead.' );\n\n\t},\n\n\tloadCompressedTextureCube: function () {\n\n\t\tconsole.error( 'THREE.ImageUtils.loadCompressedTextureCube has been removed. Use THREE.DDSLoader instead.' );\n\n\t}\n\n};\n\n//\n\nexport function Projector () {\n\n\tconsole.error( 'THREE.Projector has been moved to /examples/js/renderers/Projector.js.' );\n\n\tthis.projectVector = function ( vector, camera ) {\n\n\t\tconsole.warn( 'THREE.Projector: .projectVector() is now vector.project().' );\n\t\tvector.project( camera );\n\n\t};\n\n\tthis.unprojectVector = function ( vector, camera ) {\n\n\t\tconsole.warn( 'THREE.Projector: .unprojectVector() is now vector.unproject().' );\n\t\tvector.unproject( camera );\n\n\t};\n\n\tthis.pickingRay = function ( vector, camera ) {\n\n\t\tconsole.error( 'THREE.Projector: .pickingRay() is now raycaster.setFromCamera().' );\n\n\t};\n\n}\n\n//\n\nexport function CanvasRenderer () {\n\n\tconsole.error( 'THREE.CanvasRenderer has been moved to /examples/js/renderers/CanvasRenderer.js' );\n\n\tthis.domElement = document.createElementNS( 'http://www.w3.org/1999/xhtml', 'canvas' );\n\tthis.clear = function () {};\n\tthis.render = function () {};\n\tthis.setClearColor = function () {};\n\tthis.setSize = function () {};\n\n}\n"],"names":["count"],"mappings":"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E,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,CAAC;GACtC,IAAI,CAAC,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,CAAC;GACtC,IAAI,CAAC,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,CAAC;;GAEtC,MAAM,KAAK,KAAK,KAAK,KAAK,GAAG;;GAE7B,IAAI,CAAC,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,CAAC;GACtC,IAAI,CAAC,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,CAAC;GACtC,IAAI,CAAC,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,CAAC;GACtC,IAAI,CAAC,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,CAAC;;GAEtC,MAAM,KAAK,KAAK,KAAK,KAAK,GAAG;;GAE7B,IAAI,CAAC,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,CAAC;GACtC,IAAI,CAAC,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,CAAC;GACtC,IAAI,CAAC,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,CAAC;GACtC,IAAI,CAAC,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,CAAC;;GAEtC,MAAM,KAAK,KAAK,KAAK,KAAK,GAAG;;GAE7B,IAAI,CAAC,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,CAAC;GACtC,IAAI,CAAC,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,CA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AAE,CAAC,EAAE,EAAE,GAAG,GAAG,EAAE,EAAE,CAAC,EAAE,EAAE,GAAG,GAAG,EAAE,EAAE,EAAE,EAAE,EAAE,GAAG,GAAG,EAAE,EAAE,EAAE,EAAE,CAAC;;EAEjE,EAAE,EAAE,CAAC,EAAE,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,CAAC;EACxD,EAAE,EAAE,CAAC,EAAE,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,CAAC;EACxD,EAAE,EAAE,CAAC,EAAE,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,CAAC;EACxD,EAAE,EAAE,EAAE,EAAE,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,CAAC;;EAEzD,EAAE,EAAE,CAAC,EAAE,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,CAAC;EACxD,EAAE,EAAE,CAAC,EAAE,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,CAAC;EACxD,EAAE,EAAE,CAAC,EAAE,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,CAAC;EACxD,EAAE,EAAE,EAAE,EAAE,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,CAAC;;EAEzD,EAAE,EAAE,CAAC,EAAE,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,CAAC;EACxD,EAAE,EAAE,CAAC,EAAE,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAA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E,CAAC,EAAE,EAAE,GAAG,GAAG,EAAE,EAAE,CAAC,EAAE,EAAE,GAAG,GAAG,EAAE,EAAE,CAAC,EAAE;GAC1D,GAAG,GAAG,EAAE,EAAE,CAAC,EAAE,EAAE,GAAG,GAAG,EAAE,EAAE,CAAC,EAAE,EAAE,GAAG,GAAG,EAAE,EAAE,CAAC,EAAE,EAAE,GAAG,GAAG,EAAE,EAAE,CAAC,EAAE;GAC1D,GAAG,GAAG,EAAE,EAAE,CAAC,EAAE,EAAE,GAAG,GAAG,EAAE,EAAE,CAAC,EAAE,EAAE,GAAG,GAAG,EAAE,EAAE,EAAE,EAAE,EAAE,GAAG,GAAG,EAAE,EAAE,EAAE,EAAE;GAC5D,GAAG,GAAG,EAAE,EAAE,EAAE,EAAE,EAAE,GAAG,GAAG,EAAE,EAAE,EAAE,EAAE,EAAE,GAAG,GAAG,EAAE,EAAE,EAAE,EAAE,EAAE,GAAG,GAAG,EAAE,EAAE,EAAE,EAAE;;GAE9D,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG;GAC/G,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG;GAC/G,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG;GAC/G,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,CAAC;;EAEjH,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,CAAC;;EAExD,KAAK,GAAG,KAAK,CAAC,GAAG;;GAEhB,IAAI,GAAG,GAAG,mEAAmE,CAAC;;GAE9E,KAAK,iBAAiB,KAAK,IAAI,GAAG;;IAEjC,MAAM,IAAI,KAAK,EAAE,GAAG,EAAE,CAAC;;IAEvB,MAAM;;IAEN,OAAO,CAAC,IAAI,EAAE,GAAG,EAAE,CAAC;;IAEpB;;GAED,OAAO,IAAI,CAAC,QAAQ,EAAE,CAAC;;GAEvB;;EAED,IAAI,MAAM,GAAG,CAAC,GAAG,GAAG,CAAC;;EAErB,EAAE,EAAE,CAAC,EAAE,GAAG,GAAG,GAAG,MAAM,CAAC;EACvB,EAAE,EAAE,CAAC,EAAE,GAAG,EAAE,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,EAAE,GAAG,MAAM,CAAC;EACjI,EAAE,EAAE,CAAC,EAAE,GAAG,EAAE,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,EAAE,GAAG,MAAM,CAAC;EACjI,EAAE,EAAE,CAAC,EAAE,GAAG,EAAE,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,EAAE,GAAG,MAAM,CAAC;;EAEjI,EAAE,EAAE,CAAC,EAAE,GAAG,GAAG,GAAG,MAAM,CAAC;EACvB,EAAE,EAAE,CAAC,EAAE,GAAG,EAAE,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,EAAE,GAAG,MAAM,CAAC;EACjI,EAAE,EAAE,CAAC,EAAE,GAAG,EAAE,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,EAAE,GAAG,MAAM,CAAC;EACjI,EAAE,EAAE,CAAC,EAAE,GAAG,EAAE,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,EAAE,GAAG,MAAM,CAAC;;EAEjI,EAAE,EAAE,CAAC,EAAE,GAAG,GAAG,GAAG,MAAM,CAAC;EACvB,EAAE,EAAE,CAAC,EAAE,GAAG,EAAE,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,EAAE,GAAG,MAAM,CAAC;EACjI,EAAE,EAAE,EAAE,EAAE,GAAG,EAAE,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAA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"} \ No newline at end of file +{"version":3,"file":null,"sources":["../src/polyfills.js","../src/core/EventDispatcher.js","../src/constants.js","../src/math/Math.js","../src/math/Vector2.js","../src/textures/Texture.js","../src/math/Vector4.js","../src/renderers/WebGLRenderTarget.js","../src/renderers/WebGLRenderTargetCube.js","../src/math/Quaternion.js","../src/math/Vector3.js","../src/math/Matrix4.js","../src/textures/CubeTexture.js","../src/renderers/webgl/WebGLUniforms.js","../src/renderers/shaders/UniformsUtils.js","../src/renderers/shaders/ShaderChunk.js","../src/math/Color.js","../src/renderers/shaders/UniformsLib.js","../src/renderers/shaders/ShaderLib.js","../src/math/Box2.js","../src/renderers/webgl/plugins/LensFlarePlugin.js","../src/renderers/webgl/plugins/SpritePlugin.js","../src/materials/Material.js","../src/materials/ShaderMaterial.js","../src/materials/MeshDepthMaterial.js","../src/math/Box3.js","../src/math/Sphere.js","../src/math/Matrix3.js","../src/math/Plane.js","../src/math/Frustum.js","../src/renderers/webgl/WebGLShadowMap.js","../src/math/Ray.js","../src/math/Euler.js","../src/core/Layers.js","../src/core/Object3D.js","../src/math/Line3.js","../src/math/Triangle.js","../src/core/Face3.js","../src/materials/MeshBasicMaterial.js","../src/core/BufferAttribute.js","../src/core/Geometry.js","../src/core/DirectGeometry.js","../src/core/BufferGeometry.js","../src/objects/Mesh.js","../src/geometries/BoxBufferGeometry.js","../src/geometries/PlaneBufferGeometry.js","../src/cameras/Camera.js","../src/cameras/PerspectiveCamera.js","../src/cameras/OrthographicCamera.js","../src/renderers/webgl/WebGLIndexedBufferRenderer.js","../src/renderers/webgl/WebGLBufferRenderer.js","../src/renderers/webgl/WebGLLights.js","../src/renderers/webgl/WebGLShader.js","../src/renderers/webgl/WebGLProgram.js","../src/renderers/webgl/WebGLPrograms.js","../src/renderers/webgl/WebGLGeometries.js","../src/renderers/webgl/WebGLObjects.js","../src/renderers/webgl/WebGLTextures.js","../src/renderers/webgl/WebGLProperties.js","../src/renderers/webgl/WebGLState.js","../src/renderers/webgl/WebGLCapabilities.js","../src/renderers/webgl/WebGLExtensions.js","../src/renderers/webgl/WebGLClipping.js","../src/renderers/WebGLRenderer.js","../src/renderers/WebGL2Renderer.js","../src/scenes/FogExp2.js","../src/scenes/Fog.js","../src/scenes/Scene.js","../src/objects/LensFlare.js","../src/materials/SpriteMaterial.js","../src/objects/Sprite.js","../src/objects/LOD.js","../src/textures/DataTexture.js","../src/objects/Skeleton.js","../src/objects/Bone.js","../src/objects/SkinnedMesh.js","../src/materials/LineBasicMaterial.js","../src/objects/Line.js","../src/objects/LineSegments.js","../src/materials/PointsMaterial.js","../src/objects/Points.js","../src/objects/Group.js","../src/textures/VideoTexture.js","../src/textures/CompressedTexture.js","../src/textures/CanvasTexture.js","../src/textures/DepthTexture.js","../src/geometries/WireframeGeometry.js","../src/geometries/ParametricBufferGeometry.js","../src/geometries/ParametricGeometry.js","../src/geometries/PolyhedronBufferGeometry.js","../src/geometries/TetrahedronBufferGeometry.js","../src/geometries/TetrahedronGeometry.js","../src/geometries/OctahedronBufferGeometry.js","../src/geometries/OctahedronGeometry.js","../src/geometries/IcosahedronBufferGeometry.js","../src/geometries/IcosahedronGeometry.js","../src/geometries/DodecahedronBufferGeometry.js","../src/geometries/DodecahedronGeometry.js","../src/geometries/PolyhedronGeometry.js","../src/geometries/TubeBufferGeometry.js","../src/geometries/TubeGeometry.js","../src/geometries/TorusKnotBufferGeometry.js","../src/geometries/TorusKnotGeometry.js","../src/geometries/TorusBufferGeometry.js","../src/geometries/TorusGeometry.js","../src/extras/ShapeUtils.js","../src/geometries/ExtrudeGeometry.js","../src/geometries/TextGeometry.js","../src/geometries/SphereBufferGeometry.js","../src/geometries/SphereGeometry.js","../src/geometries/RingBufferGeometry.js","../src/geometries/RingGeometry.js","../src/geometries/PlaneGeometry.js","../src/geometries/LatheBufferGeometry.js","../src/geometries/LatheGeometry.js","../src/geometries/ShapeBufferGeometry.js","../src/geometries/ShapeGeometry.js","../src/geometries/EdgesGeometry.js","../src/geometries/CylinderBufferGeometry.js","../src/geometries/CylinderGeometry.js","../src/geometries/ConeGeometry.js","../src/geometries/ConeBufferGeometry.js","../src/geometries/CircleBufferGeometry.js","../src/geometries/CircleGeometry.js","../src/geometries/BoxGeometry.js","../src/materials/ShadowMaterial.js","../src/materials/RawShaderMaterial.js","../src/materials/MultiMaterial.js","../src/materials/MeshStandardMaterial.js","../src/materials/MeshPhysicalMaterial.js","../src/materials/MeshPhongMaterial.js","../src/materials/MeshNormalMaterial.js","../src/materials/MeshLambertMaterial.js","../src/materials/LineDashedMaterial.js","../src/loaders/Cache.js","../src/loaders/LoadingManager.js","../src/loaders/FileLoader.js","../src/loaders/CompressedTextureLoader.js","../src/loaders/BinaryTextureLoader.js","../src/loaders/ImageLoader.js","../src/loaders/CubeTextureLoader.js","../src/loaders/TextureLoader.js","../src/lights/Light.js","../src/lights/HemisphereLight.js","../src/lights/LightShadow.js","../src/lights/SpotLightShadow.js","../src/lights/SpotLight.js","../src/lights/PointLight.js","../src/lights/DirectionalLightShadow.js","../src/lights/DirectionalLight.js","../src/lights/AmbientLight.js","../src/animation/AnimationUtils.js","../src/math/Interpolant.js","../src/math/interpolants/CubicInterpolant.js","../src/math/interpolants/LinearInterpolant.js","../src/math/interpolants/DiscreteInterpolant.js","../src/animation/KeyframeTrackPrototype.js","../src/animation/KeyframeTrackConstructor.js","../src/animation/tracks/VectorKeyframeTrack.js","../src/math/interpolants/QuaternionLinearInterpolant.js","../src/animation/tracks/QuaternionKeyframeTrack.js","../src/animation/tracks/NumberKeyframeTrack.js","../src/animation/tracks/StringKeyframeTrack.js","../src/animation/tracks/BooleanKeyframeTrack.js","../src/animation/tracks/ColorKeyframeTrack.js","../src/animation/KeyframeTrack.js","../src/animation/AnimationClip.js","../src/loaders/MaterialLoader.js","../src/loaders/BufferGeometryLoader.js","../src/loaders/Loader.js","../src/loaders/JSONLoader.js","../src/loaders/ObjectLoader.js","../src/extras/core/Curve.js","../src/extras/curves/LineCurve.js","../src/extras/core/CurvePath.js","../src/extras/curves/EllipseCurve.js","../src/extras/CurveUtils.js","../src/extras/curves/SplineCurve.js","../src/extras/curves/CubicBezierCurve.js","../src/extras/curves/QuadraticBezierCurve.js","../src/extras/core/PathPrototype.js","../src/extras/core/Shape.js","../src/extras/core/Path.js","../src/extras/core/Font.js","../src/loaders/FontLoader.js","../src/audio/AudioContext.js","../src/loaders/AudioLoader.js","../src/cameras/StereoCamera.js","../src/cameras/CubeCamera.js","../src/audio/AudioListener.js","../src/audio/Audio.js","../src/audio/PositionalAudio.js","../src/audio/AudioAnalyser.js","../src/animation/PropertyMixer.js","../src/animation/PropertyBinding.js","../src/animation/AnimationObjectGroup.js","../src/animation/AnimationAction.js","../src/animation/AnimationMixer.js","../src/core/Uniform.js","../src/core/InstancedBufferGeometry.js","../src/core/InterleavedBufferAttribute.js","../src/core/InterleavedBuffer.js","../src/core/InstancedInterleavedBuffer.js","../src/core/InstancedBufferAttribute.js","../src/core/Raycaster.js","../src/core/Clock.js","../src/math/Spline.js","../src/math/Spherical.js","../src/extras/objects/MorphBlendMesh.js","../src/extras/objects/ImmediateRenderObject.js","../src/extras/helpers/VertexNormalsHelper.js","../src/extras/helpers/SpotLightHelper.js","../src/extras/helpers/SkeletonHelper.js","../src/extras/helpers/PointLightHelper.js","../src/extras/helpers/HemisphereLightHelper.js","../src/extras/helpers/GridHelper.js","../src/extras/helpers/FaceNormalsHelper.js","../src/extras/helpers/DirectionalLightHelper.js","../src/extras/helpers/CameraHelper.js","../src/extras/helpers/BoundingBoxHelper.js","../src/extras/helpers/BoxHelper.js","../src/extras/helpers/ArrowHelper.js","../src/extras/helpers/AxisHelper.js","../src/extras/curves/CatmullRomCurve3.js","../src/extras/curves/ClosedSplineCurve3.js","../src/extras/curves/SplineCurve3.js","../src/extras/curves/CubicBezierCurve3.js","../src/extras/curves/QuadraticBezierCurve3.js","../src/extras/curves/LineCurve3.js","../src/extras/curves/ArcCurve.js","../src/extras/SceneUtils.js","../src/Three.Legacy.js"],"sourcesContent":["// Polyfills\n\nif ( Number.EPSILON === undefined ) {\n\n\tNumber.EPSILON = Math.pow( 2, - 52 );\n\n}\n\n//\n\nif ( Math.sign === undefined ) {\n\n\t// https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Math/sign\n\n\tMath.sign = function ( x ) {\n\n\t\treturn ( x < 0 ) ? - 1 : ( x > 0 ) ? 1 : + x;\n\n\t};\n\n}\n\nif ( Function.prototype.name === undefined ) {\n\n\t// Missing in IE9-11.\n\t// https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Function/name\n\n\tObject.defineProperty( Function.prototype, 'name', {\n\n\t\tget: function () {\n\n\t\t\treturn this.toString().match( /^\\s*function\\s*(\\S*)\\s*\\(/ )[ 1 ];\n\n\t\t}\n\n\t} );\n\n}\n\nif ( Object.assign === undefined ) {\n\n\t// Missing in IE.\n\t// https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Object/assign\n\n\t( function () {\n\n\t\tObject.assign = function ( target ) {\n\n\t\t\t'use strict';\n\n\t\t\tif ( target === undefined || target === null ) {\n\n\t\t\t\tthrow new TypeError( 'Cannot convert undefined or null to object' );\n\n\t\t\t}\n\n\t\t\tvar output = Object( target );\n\n\t\t\tfor ( var index = 1; index < arguments.length; index ++ ) {\n\n\t\t\t\tvar source = arguments[ index ];\n\n\t\t\t\tif ( source !== undefined && source !== null ) {\n\n\t\t\t\t\tfor ( var nextKey in source ) {\n\n\t\t\t\t\t\tif ( Object.prototype.hasOwnProperty.call( source, nextKey ) ) {\n\n\t\t\t\t\t\t\toutput[ nextKey ] = source[ nextKey ];\n\n\t\t\t\t\t\t}\n\n\t\t\t\t\t}\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t\treturn output;\n\n\t\t};\n\n\t} )();\n\n}\n","/**\n * https://github.com/mrdoob/eventdispatcher.js/\n */\n\nfunction EventDispatcher() {}\n\nObject.assign( EventDispatcher.prototype, {\n\n\taddEventListener: function ( type, listener ) {\n\n\t\tif ( this._listeners === undefined ) this._listeners = {};\n\n\t\tvar listeners = this._listeners;\n\n\t\tif ( listeners[ type ] === undefined ) {\n\n\t\t\tlisteners[ type ] = [];\n\n\t\t}\n\n\t\tif ( listeners[ type ].indexOf( listener ) === - 1 ) {\n\n\t\t\tlisteners[ type ].push( listener );\n\n\t\t}\n\n\t},\n\n\thasEventListener: function ( type, listener ) {\n\n\t\tif ( this._listeners === undefined ) return false;\n\n\t\tvar listeners = this._listeners;\n\n\t\tif ( listeners[ type ] !== undefined && listeners[ type ].indexOf( listener ) !== - 1 ) {\n\n\t\t\treturn true;\n\n\t\t}\n\n\t\treturn false;\n\n\t},\n\n\tremoveEventListener: function ( type, listener ) {\n\n\t\tif ( this._listeners === undefined ) return;\n\n\t\tvar listeners = this._listeners;\n\t\tvar listenerArray = listeners[ type ];\n\n\t\tif ( listenerArray !== undefined ) {\n\n\t\t\tvar index = listenerArray.indexOf( listener );\n\n\t\t\tif ( index !== - 1 ) {\n\n\t\t\t\tlistenerArray.splice( index, 1 );\n\n\t\t\t}\n\n\t\t}\n\n\t},\n\n\tdispatchEvent: function ( event ) {\n\n\t\tif ( this._listeners === undefined ) return;\n\n\t\tvar listeners = this._listeners;\n\t\tvar listenerArray = listeners[ event.type ];\n\n\t\tif ( listenerArray !== undefined ) {\n\n\t\t\tevent.target = this;\n\n\t\t\tvar array = [], i = 0;\n\t\t\tvar length = listenerArray.length;\n\n\t\t\tfor ( i = 0; i < length; i ++ ) {\n\n\t\t\t\tarray[ i ] = listenerArray[ i ];\n\n\t\t\t}\n\n\t\t\tfor ( i = 0; i < length; i ++ ) {\n\n\t\t\t\tarray[ i ].call( this, event );\n\n\t\t\t}\n\n\t\t}\n\n\t}\n\n} );\n\n\nexport { EventDispatcher };\n","export var REVISION = '83dev';\nexport var MOUSE = { LEFT: 0, MIDDLE: 1, RIGHT: 2 };\nexport var CullFaceNone = 0;\nexport var CullFaceBack = 1;\nexport var CullFaceFront = 2;\nexport var CullFaceFrontBack = 3;\nexport var FrontFaceDirectionCW = 0;\nexport var FrontFaceDirectionCCW = 1;\nexport var BasicShadowMap = 0;\nexport var PCFShadowMap = 1;\nexport var PCFSoftShadowMap = 2;\nexport var FrontSide = 0;\nexport var BackSide = 1;\nexport var DoubleSide = 2;\nexport var FlatShading = 1;\nexport var SmoothShading = 2;\nexport var NoColors = 0;\nexport var FaceColors = 1;\nexport var VertexColors = 2;\nexport var NoBlending = 0;\nexport var NormalBlending = 1;\nexport var AdditiveBlending = 2;\nexport var SubtractiveBlending = 3;\nexport var MultiplyBlending = 4;\nexport var CustomBlending = 5;\nexport var BlendingMode = {\n\tNoBlending: NoBlending,\n\tNormalBlending: NormalBlending,\n\tAdditiveBlending: AdditiveBlending,\n\tSubtractiveBlending: SubtractiveBlending,\n\tMultiplyBlending: MultiplyBlending,\n\tCustomBlending: CustomBlending\n};\nexport var AddEquation = 100;\nexport var SubtractEquation = 101;\nexport var ReverseSubtractEquation = 102;\nexport var MinEquation = 103;\nexport var MaxEquation = 104;\nexport var ZeroFactor = 200;\nexport var OneFactor = 201;\nexport var SrcColorFactor = 202;\nexport var OneMinusSrcColorFactor = 203;\nexport var SrcAlphaFactor = 204;\nexport var OneMinusSrcAlphaFactor = 205;\nexport var DstAlphaFactor = 206;\nexport var OneMinusDstAlphaFactor = 207;\nexport var DstColorFactor = 208;\nexport var OneMinusDstColorFactor = 209;\nexport var SrcAlphaSaturateFactor = 210;\nexport var NeverDepth = 0;\nexport var AlwaysDepth = 1;\nexport var LessDepth = 2;\nexport var LessEqualDepth = 3;\nexport var EqualDepth = 4;\nexport var GreaterEqualDepth = 5;\nexport var GreaterDepth = 6;\nexport var NotEqualDepth = 7;\nexport var MultiplyOperation = 0;\nexport var MixOperation = 1;\nexport var AddOperation = 2;\nexport var NoToneMapping = 0;\nexport var LinearToneMapping = 1;\nexport var ReinhardToneMapping = 2;\nexport var Uncharted2ToneMapping = 3;\nexport var CineonToneMapping = 4;\nexport var UVMapping = 300;\nexport var CubeReflectionMapping = 301;\nexport var CubeRefractionMapping = 302;\nexport var EquirectangularReflectionMapping = 303;\nexport var EquirectangularRefractionMapping = 304;\nexport var SphericalReflectionMapping = 305;\nexport var CubeUVReflectionMapping = 306;\nexport var CubeUVRefractionMapping = 307;\nexport var TextureMapping = {\n\tUVMapping: UVMapping,\n\tCubeReflectionMapping: CubeReflectionMapping,\n\tCubeRefractionMapping: CubeRefractionMapping,\n\tEquirectangularReflectionMapping: EquirectangularReflectionMapping,\n\tEquirectangularRefractionMapping: EquirectangularRefractionMapping,\n\tSphericalReflectionMapping: SphericalReflectionMapping,\n\tCubeUVReflectionMapping: CubeUVReflectionMapping,\n\tCubeUVRefractionMapping: CubeUVRefractionMapping\n};\nexport var RepeatWrapping = 1000;\nexport var ClampToEdgeWrapping = 1001;\nexport var MirroredRepeatWrapping = 1002;\nexport var TextureWrapping = {\n\tRepeatWrapping: RepeatWrapping,\n\tClampToEdgeWrapping: ClampToEdgeWrapping,\n\tMirroredRepeatWrapping: MirroredRepeatWrapping\n};\nexport var NearestFilter = 1003;\nexport var NearestMipMapNearestFilter = 1004;\nexport var NearestMipMapLinearFilter = 1005;\nexport var LinearFilter = 1006;\nexport var LinearMipMapNearestFilter = 1007;\nexport var LinearMipMapLinearFilter = 1008;\nexport var TextureFilter = {\n\tNearestFilter: NearestFilter,\n\tNearestMipMapNearestFilter: NearestMipMapNearestFilter,\n\tNearestMipMapLinearFilter: NearestMipMapLinearFilter,\n\tLinearFilter: LinearFilter,\n\tLinearMipMapNearestFilter: LinearMipMapNearestFilter,\n\tLinearMipMapLinearFilter: LinearMipMapLinearFilter\n};\nexport var UnsignedByteType = 1009;\nexport var ByteType = 1010;\nexport var ShortType = 1011;\nexport var UnsignedShortType = 1012;\nexport var IntType = 1013;\nexport var UnsignedIntType = 1014;\nexport var FloatType = 1015;\nexport var HalfFloatType = 1016;\nexport var UnsignedShort4444Type = 1017;\nexport var UnsignedShort5551Type = 1018;\nexport var UnsignedShort565Type = 1019;\nexport var UnsignedInt248Type = 1020;\nexport var AlphaFormat = 1021;\nexport var RGBFormat = 1022;\nexport var RGBAFormat = 1023;\nexport var LuminanceFormat = 1024;\nexport var LuminanceAlphaFormat = 1025;\nexport var RGBEFormat = RGBAFormat;\nexport var DepthFormat = 1026;\nexport var DepthStencilFormat = 1027;\nexport var RGB_S3TC_DXT1_Format = 2001;\nexport var RGBA_S3TC_DXT1_Format = 2002;\nexport var RGBA_S3TC_DXT3_Format = 2003;\nexport var RGBA_S3TC_DXT5_Format = 2004;\nexport var RGB_PVRTC_4BPPV1_Format = 2100;\nexport var RGB_PVRTC_2BPPV1_Format = 2101;\nexport var RGBA_PVRTC_4BPPV1_Format = 2102;\nexport var RGBA_PVRTC_2BPPV1_Format = 2103;\nexport var RGB_ETC1_Format = 2151;\nexport var LoopOnce = 2200;\nexport var LoopRepeat = 2201;\nexport var LoopPingPong = 2202;\nexport var InterpolateDiscrete = 2300;\nexport var InterpolateLinear = 2301;\nexport var InterpolateSmooth = 2302;\nexport var ZeroCurvatureEnding = 2400;\nexport var ZeroSlopeEnding = 2401;\nexport var WrapAroundEnding = 2402;\nexport var TrianglesDrawMode = 0;\nexport var TriangleStripDrawMode = 1;\nexport var TriangleFanDrawMode = 2;\nexport var LinearEncoding = 3000;\nexport var sRGBEncoding = 3001;\nexport var GammaEncoding = 3007;\nexport var RGBEEncoding = 3002;\nexport var LogLuvEncoding = 3003;\nexport var RGBM7Encoding = 3004;\nexport var RGBM16Encoding = 3005;\nexport var RGBDEncoding = 3006;\nexport var BasicDepthPacking = 3200;\nexport var RGBADepthPacking = 3201;\n","/**\n * @author alteredq / http://alteredqualia.com/\n * @author mrdoob / http://mrdoob.com/\n */\n\nvar _Math = {\n\n\tDEG2RAD: Math.PI / 180,\n\tRAD2DEG: 180 / Math.PI,\n\n\tgenerateUUID: function () {\n\n\t\t// http://www.broofa.com/Tools/Math.uuid.htm\n\n\t\tvar chars = '0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz'.split( '' );\n\t\tvar uuid = new Array( 36 );\n\t\tvar rnd = 0, r;\n\n\t\treturn function generateUUID() {\n\n\t\t\tfor ( var i = 0; i < 36; i ++ ) {\n\n\t\t\t\tif ( i === 8 || i === 13 || i === 18 || i === 23 ) {\n\n\t\t\t\t\tuuid[ i ] = '-';\n\n\t\t\t\t} else if ( i === 14 ) {\n\n\t\t\t\t\tuuid[ i ] = '4';\n\n\t\t\t\t} else {\n\n\t\t\t\t\tif ( rnd <= 0x02 ) rnd = 0x2000000 + ( Math.random() * 0x1000000 ) | 0;\n\t\t\t\t\tr = rnd & 0xf;\n\t\t\t\t\trnd = rnd >> 4;\n\t\t\t\t\tuuid[ i ] = chars[ ( i === 19 ) ? ( r & 0x3 ) | 0x8 : r ];\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t\treturn uuid.join( '' );\n\n\t\t};\n\n\t}(),\n\n\tclamp: function ( value, min, max ) {\n\n\t\treturn Math.max( min, Math.min( max, value ) );\n\n\t},\n\n\t// compute euclidian modulo of m % n\n\t// https://en.wikipedia.org/wiki/Modulo_operation\n\n\teuclideanModulo: function ( n, m ) {\n\n\t\treturn ( ( n % m ) + m ) % m;\n\n\t},\n\n\t// Linear mapping from range to range \n\n\tmapLinear: function ( x, a1, a2, b1, b2 ) {\n\n\t\treturn b1 + ( x - a1 ) * ( b2 - b1 ) / ( a2 - a1 );\n\n\t},\n\n\t// https://en.wikipedia.org/wiki/Linear_interpolation\n\n\tlerp: function ( x, y, t ) {\n\n\t\treturn ( 1 - t ) * x + t * y;\n\n\t},\n\n\t// http://en.wikipedia.org/wiki/Smoothstep\n\n\tsmoothstep: function ( x, min, max ) {\n\n\t\tif ( x <= min ) return 0;\n\t\tif ( x >= max ) return 1;\n\n\t\tx = ( x - min ) / ( max - min );\n\n\t\treturn x * x * ( 3 - 2 * x );\n\n\t},\n\n\tsmootherstep: function ( x, min, max ) {\n\n\t\tif ( x <= min ) return 0;\n\t\tif ( x >= max ) return 1;\n\n\t\tx = ( x - min ) / ( max - min );\n\n\t\treturn x * x * x * ( x * ( x * 6 - 15 ) + 10 );\n\n\t},\n\n\trandom16: function () {\n\n\t\tconsole.warn( 'THREE.Math.random16() has been deprecated. Use Math.random() instead.' );\n\t\treturn Math.random();\n\n\t},\n\n\t// Random integer from interval\n\n\trandInt: function ( low, high ) {\n\n\t\treturn low + Math.floor( Math.random() * ( high - low + 1 ) );\n\n\t},\n\n\t// Random float from interval\n\n\trandFloat: function ( low, high ) {\n\n\t\treturn low + Math.random() * ( high - low );\n\n\t},\n\n\t// Random float from <-range/2, range/2> interval\n\n\trandFloatSpread: function ( range ) {\n\n\t\treturn range * ( 0.5 - Math.random() );\n\n\t},\n\n\tdegToRad: function ( degrees ) {\n\n\t\treturn degrees * _Math.DEG2RAD;\n\n\t},\n\n\tradToDeg: function ( radians ) {\n\n\t\treturn radians * _Math.RAD2DEG;\n\n\t},\n\n\tisPowerOfTwo: function ( value ) {\n\n\t\treturn ( value & ( value - 1 ) ) === 0 && value !== 0;\n\n\t},\n\n\tnearestPowerOfTwo: function ( value ) {\n\n\t\treturn Math.pow( 2, Math.round( Math.log( value ) / Math.LN2 ) );\n\n\t},\n\n\tnextPowerOfTwo: function ( value ) {\n\n\t\tvalue --;\n\t\tvalue |= value >> 1;\n\t\tvalue |= value >> 2;\n\t\tvalue |= value >> 4;\n\t\tvalue |= value >> 8;\n\t\tvalue |= value >> 16;\n\t\tvalue ++;\n\n\t\treturn value;\n\n\t}\n\n};\n\n\nexport { _Math };\n","/**\n * @author mrdoob / http://mrdoob.com/\n * @author philogb / http://blog.thejit.org/\n * @author egraether / http://egraether.com/\n * @author zz85 / http://www.lab4games.net/zz85/blog\n */\n\nfunction Vector2( x, y ) {\n\n\tthis.x = x || 0;\n\tthis.y = y || 0;\n\n}\n\nVector2.prototype = {\n\n\tconstructor: Vector2,\n\n\tisVector2: true,\n\n\tget width() {\n\n\t\treturn this.x;\n\n\t},\n\n\tset width( value ) {\n\n\t\tthis.x = value;\n\n\t},\n\n\tget height() {\n\n\t\treturn this.y;\n\n\t},\n\n\tset height( value ) {\n\n\t\tthis.y = value;\n\n\t},\n\n\t//\n\n\tset: function ( x, y ) {\n\n\t\tthis.x = x;\n\t\tthis.y = y;\n\n\t\treturn this;\n\n\t},\n\n\tsetScalar: function ( scalar ) {\n\n\t\tthis.x = scalar;\n\t\tthis.y = scalar;\n\n\t\treturn this;\n\n\t},\n\n\tsetX: function ( x ) {\n\n\t\tthis.x = x;\n\n\t\treturn this;\n\n\t},\n\n\tsetY: function ( y ) {\n\n\t\tthis.y = y;\n\n\t\treturn this;\n\n\t},\n\n\tsetComponent: function ( index, value ) {\n\n\t\tswitch ( index ) {\n\n\t\t\tcase 0: this.x = value; break;\n\t\t\tcase 1: this.y = value; break;\n\t\t\tdefault: throw new Error( 'index is out of range: ' + index );\n\n\t\t}\n\t\t\n\t\treturn this;\n\n\t},\n\n\tgetComponent: function ( index ) {\n\n\t\tswitch ( index ) {\n\n\t\t\tcase 0: return this.x;\n\t\t\tcase 1: return this.y;\n\t\t\tdefault: throw new Error( 'index is out of range: ' + index );\n\n\t\t}\n\n\t},\n\n\tclone: function () {\n\n\t\treturn new this.constructor( this.x, this.y );\n\n\t},\n\n\tcopy: function ( v ) {\n\n\t\tthis.x = v.x;\n\t\tthis.y = v.y;\n\n\t\treturn this;\n\n\t},\n\n\tadd: function ( v, w ) {\n\n\t\tif ( w !== undefined ) {\n\n\t\t\tconsole.warn( 'THREE.Vector2: .add() now only accepts one argument. Use .addVectors( a, b ) instead.' );\n\t\t\treturn this.addVectors( v, w );\n\n\t\t}\n\n\t\tthis.x += v.x;\n\t\tthis.y += v.y;\n\n\t\treturn this;\n\n\t},\n\n\taddScalar: function ( s ) {\n\n\t\tthis.x += s;\n\t\tthis.y += s;\n\n\t\treturn this;\n\n\t},\n\n\taddVectors: function ( a, b ) {\n\n\t\tthis.x = a.x + b.x;\n\t\tthis.y = a.y + b.y;\n\n\t\treturn this;\n\n\t},\n\n\taddScaledVector: function ( v, s ) {\n\n\t\tthis.x += v.x * s;\n\t\tthis.y += v.y * s;\n\n\t\treturn this;\n\n\t},\n\n\tsub: function ( v, w ) {\n\n\t\tif ( w !== undefined ) {\n\n\t\t\tconsole.warn( 'THREE.Vector2: .sub() now only accepts one argument. Use .subVectors( a, b ) instead.' );\n\t\t\treturn this.subVectors( v, w );\n\n\t\t}\n\n\t\tthis.x -= v.x;\n\t\tthis.y -= v.y;\n\n\t\treturn this;\n\n\t},\n\n\tsubScalar: function ( s ) {\n\n\t\tthis.x -= s;\n\t\tthis.y -= s;\n\n\t\treturn this;\n\n\t},\n\n\tsubVectors: function ( a, b ) {\n\n\t\tthis.x = a.x - b.x;\n\t\tthis.y = a.y - b.y;\n\n\t\treturn this;\n\n\t},\n\n\tmultiply: function ( v ) {\n\n\t\tthis.x *= v.x;\n\t\tthis.y *= v.y;\n\n\t\treturn this;\n\n\t},\n\n\tmultiplyScalar: function ( scalar ) {\n\n\t\tif ( isFinite( scalar ) ) {\n\n\t\t\tthis.x *= scalar;\n\t\t\tthis.y *= scalar;\n\n\t\t} else {\n\n\t\t\tthis.x = 0;\n\t\t\tthis.y = 0;\n\n\t\t}\n\n\t\treturn this;\n\n\t},\n\n\tdivide: function ( v ) {\n\n\t\tthis.x /= v.x;\n\t\tthis.y /= v.y;\n\n\t\treturn this;\n\n\t},\n\n\tdivideScalar: function ( scalar ) {\n\n\t\treturn this.multiplyScalar( 1 / scalar );\n\n\t},\n\n\tmin: function ( v ) {\n\n\t\tthis.x = Math.min( this.x, v.x );\n\t\tthis.y = Math.min( this.y, v.y );\n\n\t\treturn this;\n\n\t},\n\n\tmax: function ( v ) {\n\n\t\tthis.x = Math.max( this.x, v.x );\n\t\tthis.y = Math.max( this.y, v.y );\n\n\t\treturn this;\n\n\t},\n\n\tclamp: function ( min, max ) {\n\n\t\t// This function assumes min < max, if this assumption isn't true it will not operate correctly\n\n\t\tthis.x = Math.max( min.x, Math.min( max.x, this.x ) );\n\t\tthis.y = Math.max( min.y, Math.min( max.y, this.y ) );\n\n\t\treturn this;\n\n\t},\n\n\tclampScalar: function () {\n\n\t\tvar min, max;\n\n\t\treturn function clampScalar( minVal, maxVal ) {\n\n\t\t\tif ( min === undefined ) {\n\n\t\t\t\tmin = new Vector2();\n\t\t\t\tmax = new Vector2();\n\n\t\t\t}\n\n\t\t\tmin.set( minVal, minVal );\n\t\t\tmax.set( maxVal, maxVal );\n\n\t\t\treturn this.clamp( min, max );\n\n\t\t};\n\n\t}(),\n\n\tclampLength: function ( min, max ) {\n\n\t\tvar length = this.length();\n\n\t\treturn this.multiplyScalar( Math.max( min, Math.min( max, length ) ) / length );\n\n\t},\n\n\tfloor: function () {\n\n\t\tthis.x = Math.floor( this.x );\n\t\tthis.y = Math.floor( this.y );\n\n\t\treturn this;\n\n\t},\n\n\tceil: function () {\n\n\t\tthis.x = Math.ceil( this.x );\n\t\tthis.y = Math.ceil( this.y );\n\n\t\treturn this;\n\n\t},\n\n\tround: function () {\n\n\t\tthis.x = Math.round( this.x );\n\t\tthis.y = Math.round( this.y );\n\n\t\treturn this;\n\n\t},\n\n\troundToZero: function () {\n\n\t\tthis.x = ( this.x < 0 ) ? Math.ceil( this.x ) : Math.floor( this.x );\n\t\tthis.y = ( this.y < 0 ) ? Math.ceil( this.y ) : Math.floor( this.y );\n\n\t\treturn this;\n\n\t},\n\n\tnegate: function () {\n\n\t\tthis.x = - this.x;\n\t\tthis.y = - this.y;\n\n\t\treturn this;\n\n\t},\n\n\tdot: function ( v ) {\n\n\t\treturn this.x * v.x + this.y * v.y;\n\n\t},\n\n\tlengthSq: function () {\n\n\t\treturn this.x * this.x + this.y * this.y;\n\n\t},\n\n\tlength: function () {\n\n\t\treturn Math.sqrt( this.x * this.x + this.y * this.y );\n\n\t},\n\n\tlengthManhattan: function() {\n\n\t\treturn Math.abs( this.x ) + Math.abs( this.y );\n\n\t},\n\n\tnormalize: function () {\n\n\t\treturn this.divideScalar( this.length() );\n\n\t},\n\n\tangle: function () {\n\n\t\t// computes the angle in radians with respect to the positive x-axis\n\n\t\tvar angle = Math.atan2( this.y, this.x );\n\n\t\tif ( angle < 0 ) angle += 2 * Math.PI;\n\n\t\treturn angle;\n\n\t},\n\n\tdistanceTo: function ( v ) {\n\n\t\treturn Math.sqrt( this.distanceToSquared( v ) );\n\n\t},\n\n\tdistanceToSquared: function ( v ) {\n\n\t\tvar dx = this.x - v.x, dy = this.y - v.y;\n\t\treturn dx * dx + dy * dy;\n\n\t},\n\n\tdistanceToManhattan: function ( v ) {\n\n\t\treturn Math.abs( this.x - v.x ) + Math.abs( this.y - v.y );\n\n\t},\n\n\tsetLength: function ( length ) {\n\n\t\treturn this.multiplyScalar( length / this.length() );\n\n\t},\n\n\tlerp: function ( v, alpha ) {\n\n\t\tthis.x += ( v.x - this.x ) * alpha;\n\t\tthis.y += ( v.y - this.y ) * alpha;\n\n\t\treturn this;\n\n\t},\n\n\tlerpVectors: function ( v1, v2, alpha ) {\n\n\t\treturn this.subVectors( v2, v1 ).multiplyScalar( alpha ).add( v1 );\n\n\t},\n\n\tequals: function ( v ) {\n\n\t\treturn ( ( v.x === this.x ) && ( v.y === this.y ) );\n\n\t},\n\n\tfromArray: function ( array, offset ) {\n\n\t\tif ( offset === undefined ) offset = 0;\n\n\t\tthis.x = array[ offset ];\n\t\tthis.y = array[ offset + 1 ];\n\n\t\treturn this;\n\n\t},\n\n\ttoArray: function ( array, offset ) {\n\n\t\tif ( array === undefined ) array = [];\n\t\tif ( offset === undefined ) offset = 0;\n\n\t\tarray[ offset ] = this.x;\n\t\tarray[ offset + 1 ] = this.y;\n\n\t\treturn array;\n\n\t},\n\n\tfromAttribute: function ( attribute, index, offset ) {\n\n\t\tif ( offset === undefined ) offset = 0;\n\n\t\tindex = index * attribute.itemSize + offset;\n\n\t\tthis.x = attribute.array[ index ];\n\t\tthis.y = attribute.array[ index + 1 ];\n\n\t\treturn this;\n\n\t},\n\n\trotateAround: function ( center, angle ) {\n\n\t\tvar c = Math.cos( angle ), s = Math.sin( angle );\n\n\t\tvar x = this.x - center.x;\n\t\tvar y = this.y - center.y;\n\n\t\tthis.x = x * c - y * s + center.x;\n\t\tthis.y = x * s + y * c + center.y;\n\n\t\treturn this;\n\n\t}\n\n};\n\n\nexport { Vector2 };\n","import { EventDispatcher } from '../core/EventDispatcher';\nimport { UVMapping } from '../constants';\nimport { MirroredRepeatWrapping, ClampToEdgeWrapping, RepeatWrapping, LinearEncoding, UnsignedByteType, RGBAFormat, LinearMipMapLinearFilter, LinearFilter } from '../constants';\nimport { _Math } from '../math/Math';\nimport { Vector2 } from '../math/Vector2';\n\n/**\n * @author mrdoob / http://mrdoob.com/\n * @author alteredq / http://alteredqualia.com/\n * @author szimek / https://github.com/szimek/\n */\n\nfunction Texture( image, mapping, wrapS, wrapT, magFilter, minFilter, format, type, anisotropy, encoding ) {\n\n\tObject.defineProperty( this, 'id', { value: TextureIdCount() } );\n\n\tthis.uuid = _Math.generateUUID();\n\n\tthis.name = '';\n\tthis.sourceFile = '';\n\n\tthis.image = image !== undefined ? image : Texture.DEFAULT_IMAGE;\n\tthis.mipmaps = [];\n\n\tthis.mapping = mapping !== undefined ? mapping : Texture.DEFAULT_MAPPING;\n\n\tthis.wrapS = wrapS !== undefined ? wrapS : ClampToEdgeWrapping;\n\tthis.wrapT = wrapT !== undefined ? wrapT : ClampToEdgeWrapping;\n\n\tthis.magFilter = magFilter !== undefined ? magFilter : LinearFilter;\n\tthis.minFilter = minFilter !== undefined ? minFilter : LinearMipMapLinearFilter;\n\n\tthis.anisotropy = anisotropy !== undefined ? anisotropy : 1;\n\n\tthis.format = format !== undefined ? format : RGBAFormat;\n\tthis.type = type !== undefined ? type : UnsignedByteType;\n\n\tthis.offset = new Vector2( 0, 0 );\n\tthis.repeat = new Vector2( 1, 1 );\n\n\tthis.generateMipmaps = true;\n\tthis.premultiplyAlpha = false;\n\tthis.flipY = true;\n\tthis.unpackAlignment = 4;\t// valid values: 1, 2, 4, 8 (see http://www.khronos.org/opengles/sdk/docs/man/xhtml/glPixelStorei.xml)\n\n\n\t// Values of encoding !== THREE.LinearEncoding only supported on map, envMap and emissiveMap.\n\t//\n\t// Also changing the encoding after already used by a Material will not automatically make the Material\n\t// update. You need to explicitly call Material.needsUpdate to trigger it to recompile.\n\tthis.encoding = encoding !== undefined ? encoding : LinearEncoding;\n\n\tthis.version = 0;\n\tthis.onUpdate = null;\n\n}\n\nTexture.DEFAULT_IMAGE = undefined;\nTexture.DEFAULT_MAPPING = UVMapping;\n\nTexture.prototype = {\n\n\tconstructor: Texture,\n\n\tisTexture: true,\n\n\tset needsUpdate( value ) {\n\n\t\tif ( value === true ) this.version ++;\n\n\t},\n\n\tclone: function () {\n\n\t\treturn new this.constructor().copy( this );\n\n\t},\n\n\tcopy: function ( source ) {\n\n\t\tthis.image = source.image;\n\t\tthis.mipmaps = source.mipmaps.slice( 0 );\n\n\t\tthis.mapping = source.mapping;\n\n\t\tthis.wrapS = source.wrapS;\n\t\tthis.wrapT = source.wrapT;\n\n\t\tthis.magFilter = source.magFilter;\n\t\tthis.minFilter = source.minFilter;\n\n\t\tthis.anisotropy = source.anisotropy;\n\n\t\tthis.format = source.format;\n\t\tthis.type = source.type;\n\n\t\tthis.offset.copy( source.offset );\n\t\tthis.repeat.copy( source.repeat );\n\n\t\tthis.generateMipmaps = source.generateMipmaps;\n\t\tthis.premultiplyAlpha = source.premultiplyAlpha;\n\t\tthis.flipY = source.flipY;\n\t\tthis.unpackAlignment = source.unpackAlignment;\n\t\tthis.encoding = source.encoding;\n\n\t\treturn this;\n\n\t},\n\n\ttoJSON: function ( meta ) {\n\n\t\tif ( meta.textures[ this.uuid ] !== undefined ) {\n\n\t\t\treturn meta.textures[ this.uuid ];\n\n\t\t}\n\n\t\tfunction getDataURL( image ) {\n\n\t\t\tvar canvas;\n\n\t\t\tif ( image.toDataURL !== undefined ) {\n\n\t\t\t\tcanvas = image;\n\n\t\t\t} else {\n\n\t\t\t\tcanvas = document.createElementNS( 'http://www.w3.org/1999/xhtml', 'canvas' );\n\t\t\t\tcanvas.width = image.width;\n\t\t\t\tcanvas.height = image.height;\n\n\t\t\t\tcanvas.getContext( '2d' ).drawImage( image, 0, 0, image.width, image.height );\n\n\t\t\t}\n\n\t\t\tif ( canvas.width > 2048 || canvas.height > 2048 ) {\n\n\t\t\t\treturn canvas.toDataURL( 'image/jpeg', 0.6 );\n\n\t\t\t} else {\n\n\t\t\t\treturn canvas.toDataURL( 'image/png' );\n\n\t\t\t}\n\n\t\t}\n\n\t\tvar output = {\n\t\t\tmetadata: {\n\t\t\t\tversion: 4.4,\n\t\t\t\ttype: 'Texture',\n\t\t\t\tgenerator: 'Texture.toJSON'\n\t\t\t},\n\n\t\t\tuuid: this.uuid,\n\t\t\tname: this.name,\n\n\t\t\tmapping: this.mapping,\n\n\t\t\trepeat: [ this.repeat.x, this.repeat.y ],\n\t\t\toffset: [ this.offset.x, this.offset.y ],\n\t\t\twrap: [ this.wrapS, this.wrapT ],\n\n\t\t\tminFilter: this.minFilter,\n\t\t\tmagFilter: this.magFilter,\n\t\t\tanisotropy: this.anisotropy,\n\n\t\t\tflipY: this.flipY\n\t\t};\n\n\t\tif ( this.image !== undefined ) {\n\n\t\t\t// TODO: Move to THREE.Image\n\n\t\t\tvar image = this.image;\n\n\t\t\tif ( image.uuid === undefined ) {\n\n\t\t\t\timage.uuid = _Math.generateUUID(); // UGH\n\n\t\t\t}\n\n\t\t\tif ( meta.images[ image.uuid ] === undefined ) {\n\n\t\t\t\tmeta.images[ image.uuid ] = {\n\t\t\t\t\tuuid: image.uuid,\n\t\t\t\t\turl: getDataURL( image )\n\t\t\t\t};\n\n\t\t\t}\n\n\t\t\toutput.image = image.uuid;\n\n\t\t}\n\n\t\tmeta.textures[ this.uuid ] = output;\n\n\t\treturn output;\n\n\t},\n\n\tdispose: function () {\n\n\t\tthis.dispatchEvent( { type: 'dispose' } );\n\n\t},\n\n\ttransformUv: function ( uv ) {\n\n\t\tif ( this.mapping !== UVMapping ) return;\n\n\t\tuv.multiply( this.repeat );\n\t\tuv.add( this.offset );\n\n\t\tif ( uv.x < 0 || uv.x > 1 ) {\n\n\t\t\tswitch ( this.wrapS ) {\n\n\t\t\t\tcase RepeatWrapping:\n\n\t\t\t\t\tuv.x = uv.x - Math.floor( uv.x );\n\t\t\t\t\tbreak;\n\n\t\t\t\tcase ClampToEdgeWrapping:\n\n\t\t\t\t\tuv.x = uv.x < 0 ? 0 : 1;\n\t\t\t\t\tbreak;\n\n\t\t\t\tcase MirroredRepeatWrapping:\n\n\t\t\t\t\tif ( Math.abs( Math.floor( uv.x ) % 2 ) === 1 ) {\n\n\t\t\t\t\t\tuv.x = Math.ceil( uv.x ) - uv.x;\n\n\t\t\t\t\t} else {\n\n\t\t\t\t\t\tuv.x = uv.x - Math.floor( uv.x );\n\n\t\t\t\t\t}\n\t\t\t\t\tbreak;\n\n\t\t\t}\n\n\t\t}\n\n\t\tif ( uv.y < 0 || uv.y > 1 ) {\n\n\t\t\tswitch ( this.wrapT ) {\n\n\t\t\t\tcase RepeatWrapping:\n\n\t\t\t\t\tuv.y = uv.y - Math.floor( uv.y );\n\t\t\t\t\tbreak;\n\n\t\t\t\tcase ClampToEdgeWrapping:\n\n\t\t\t\t\tuv.y = uv.y < 0 ? 0 : 1;\n\t\t\t\t\tbreak;\n\n\t\t\t\tcase MirroredRepeatWrapping:\n\n\t\t\t\t\tif ( Math.abs( Math.floor( uv.y ) % 2 ) === 1 ) {\n\n\t\t\t\t\t\tuv.y = Math.ceil( uv.y ) - uv.y;\n\n\t\t\t\t\t} else {\n\n\t\t\t\t\t\tuv.y = uv.y - Math.floor( uv.y );\n\n\t\t\t\t\t}\n\t\t\t\t\tbreak;\n\n\t\t\t}\n\n\t\t}\n\n\t\tif ( this.flipY ) {\n\n\t\t\tuv.y = 1 - uv.y;\n\n\t\t}\n\n\t}\n\n};\n\nObject.assign( Texture.prototype, EventDispatcher.prototype );\n\nvar count = 0;\nfunction TextureIdCount() { return count++; };\n\n\nexport { TextureIdCount, Texture };\n","/**\n * @author supereggbert / http://www.paulbrunt.co.uk/\n * @author philogb / http://blog.thejit.org/\n * @author mikael emtinger / http://gomo.se/\n * @author egraether / http://egraether.com/\n * @author WestLangley / http://github.com/WestLangley\n */\n\nfunction Vector4( x, y, z, w ) {\n\n\tthis.x = x || 0;\n\tthis.y = y || 0;\n\tthis.z = z || 0;\n\tthis.w = ( w !== undefined ) ? w : 1;\n\n}\n\nVector4.prototype = {\n\n\tconstructor: Vector4,\n\n\tisVector4: true,\n\n\tset: function ( x, y, z, w ) {\n\n\t\tthis.x = x;\n\t\tthis.y = y;\n\t\tthis.z = z;\n\t\tthis.w = w;\n\n\t\treturn this;\n\n\t},\n\n\tsetScalar: function ( scalar ) {\n\n\t\tthis.x = scalar;\n\t\tthis.y = scalar;\n\t\tthis.z = scalar;\n\t\tthis.w = scalar;\n\n\t\treturn this;\n\n\t},\n\n\tsetX: function ( x ) {\n\n\t\tthis.x = x;\n\n\t\treturn this;\n\n\t},\n\n\tsetY: function ( y ) {\n\n\t\tthis.y = y;\n\n\t\treturn this;\n\n\t},\n\n\tsetZ: function ( z ) {\n\n\t\tthis.z = z;\n\n\t\treturn this;\n\n\t},\n\n\tsetW: function ( w ) {\n\n\t\tthis.w = w;\n\n\t\treturn this;\n\n\t},\n\n\tsetComponent: function ( index, value ) {\n\n\t\tswitch ( index ) {\n\n\t\t\tcase 0: this.x = value; break;\n\t\t\tcase 1: this.y = value; break;\n\t\t\tcase 2: this.z = value; break;\n\t\t\tcase 3: this.w = value; break;\n\t\t\tdefault: throw new Error( 'index is out of range: ' + index );\n\n\t\t}\n\t\t\n\t\treturn this;\n\n\t},\n\n\tgetComponent: function ( index ) {\n\n\t\tswitch ( index ) {\n\n\t\t\tcase 0: return this.x;\n\t\t\tcase 1: return this.y;\n\t\t\tcase 2: return this.z;\n\t\t\tcase 3: return this.w;\n\t\t\tdefault: throw new Error( 'index is out of range: ' + index );\n\n\t\t}\n\n\t},\n\n\tclone: function () {\n\n\t\treturn new this.constructor( this.x, this.y, this.z, this.w );\n\n\t},\n\n\tcopy: function ( v ) {\n\n\t\tthis.x = v.x;\n\t\tthis.y = v.y;\n\t\tthis.z = v.z;\n\t\tthis.w = ( v.w !== undefined ) ? v.w : 1;\n\n\t\treturn this;\n\n\t},\n\n\tadd: function ( v, w ) {\n\n\t\tif ( w !== undefined ) {\n\n\t\t\tconsole.warn( 'THREE.Vector4: .add() now only accepts one argument. Use .addVectors( a, b ) instead.' );\n\t\t\treturn this.addVectors( v, w );\n\n\t\t}\n\n\t\tthis.x += v.x;\n\t\tthis.y += v.y;\n\t\tthis.z += v.z;\n\t\tthis.w += v.w;\n\n\t\treturn this;\n\n\t},\n\n\taddScalar: function ( s ) {\n\n\t\tthis.x += s;\n\t\tthis.y += s;\n\t\tthis.z += s;\n\t\tthis.w += s;\n\n\t\treturn this;\n\n\t},\n\n\taddVectors: function ( a, b ) {\n\n\t\tthis.x = a.x + b.x;\n\t\tthis.y = a.y + b.y;\n\t\tthis.z = a.z + b.z;\n\t\tthis.w = a.w + b.w;\n\n\t\treturn this;\n\n\t},\n\n\taddScaledVector: function ( v, s ) {\n\n\t\tthis.x += v.x * s;\n\t\tthis.y += v.y * s;\n\t\tthis.z += v.z * s;\n\t\tthis.w += v.w * s;\n\n\t\treturn this;\n\n\t},\n\n\tsub: function ( v, w ) {\n\n\t\tif ( w !== undefined ) {\n\n\t\t\tconsole.warn( 'THREE.Vector4: .sub() now only accepts one argument. Use .subVectors( a, b ) instead.' );\n\t\t\treturn this.subVectors( v, w );\n\n\t\t}\n\n\t\tthis.x -= v.x;\n\t\tthis.y -= v.y;\n\t\tthis.z -= v.z;\n\t\tthis.w -= v.w;\n\n\t\treturn this;\n\n\t},\n\n\tsubScalar: function ( s ) {\n\n\t\tthis.x -= s;\n\t\tthis.y -= s;\n\t\tthis.z -= s;\n\t\tthis.w -= s;\n\n\t\treturn this;\n\n\t},\n\n\tsubVectors: function ( a, b ) {\n\n\t\tthis.x = a.x - b.x;\n\t\tthis.y = a.y - b.y;\n\t\tthis.z = a.z - b.z;\n\t\tthis.w = a.w - b.w;\n\n\t\treturn this;\n\n\t},\n\n\tmultiplyScalar: function ( scalar ) {\n\n\t\tif ( isFinite( scalar ) ) {\n\n\t\t\tthis.x *= scalar;\n\t\t\tthis.y *= scalar;\n\t\t\tthis.z *= scalar;\n\t\t\tthis.w *= scalar;\n\n\t\t} else {\n\n\t\t\tthis.x = 0;\n\t\t\tthis.y = 0;\n\t\t\tthis.z = 0;\n\t\t\tthis.w = 0;\n\n\t\t}\n\n\t\treturn this;\n\n\t},\n\n\tapplyMatrix4: function ( m ) {\n\n\t\tvar x = this.x, y = this.y, z = this.z, w = this.w;\n\t\tvar e = m.elements;\n\n\t\tthis.x = e[ 0 ] * x + e[ 4 ] * y + e[ 8 ] * z + e[ 12 ] * w;\n\t\tthis.y = e[ 1 ] * x + e[ 5 ] * y + e[ 9 ] * z + e[ 13 ] * w;\n\t\tthis.z = e[ 2 ] * x + e[ 6 ] * y + e[ 10 ] * z + e[ 14 ] * w;\n\t\tthis.w = e[ 3 ] * x + e[ 7 ] * y + e[ 11 ] * z + e[ 15 ] * w;\n\n\t\treturn this;\n\n\t},\n\n\tdivideScalar: function ( scalar ) {\n\n\t\treturn this.multiplyScalar( 1 / scalar );\n\n\t},\n\n\tsetAxisAngleFromQuaternion: function ( q ) {\n\n\t\t// http://www.euclideanspace.com/maths/geometry/rotations/conversions/quaternionToAngle/index.htm\n\n\t\t// q is assumed to be normalized\n\n\t\tthis.w = 2 * Math.acos( q.w );\n\n\t\tvar s = Math.sqrt( 1 - q.w * q.w );\n\n\t\tif ( s < 0.0001 ) {\n\n\t\t\t this.x = 1;\n\t\t\t this.y = 0;\n\t\t\t this.z = 0;\n\n\t\t} else {\n\n\t\t\t this.x = q.x / s;\n\t\t\t this.y = q.y / s;\n\t\t\t this.z = q.z / s;\n\n\t\t}\n\n\t\treturn this;\n\n\t},\n\n\tsetAxisAngleFromRotationMatrix: function ( m ) {\n\n\t\t// http://www.euclideanspace.com/maths/geometry/rotations/conversions/matrixToAngle/index.htm\n\n\t\t// assumes the upper 3x3 of m is a pure rotation matrix (i.e, unscaled)\n\n\t\tvar angle, x, y, z,\t\t// variables for result\n\t\t\tepsilon = 0.01,\t\t// margin to allow for rounding errors\n\t\t\tepsilon2 = 0.1,\t\t// margin to distinguish between 0 and 180 degrees\n\n\t\t\tte = m.elements,\n\n\t\t\tm11 = te[ 0 ], m12 = te[ 4 ], m13 = te[ 8 ],\n\t\t\tm21 = te[ 1 ], m22 = te[ 5 ], m23 = te[ 9 ],\n\t\t\tm31 = te[ 2 ], m32 = te[ 6 ], m33 = te[ 10 ];\n\n\t\tif ( ( Math.abs( m12 - m21 ) < epsilon ) &&\n\t\t ( Math.abs( m13 - m31 ) < epsilon ) &&\n\t\t ( Math.abs( m23 - m32 ) < epsilon ) ) {\n\n\t\t\t// singularity found\n\t\t\t// first check for identity matrix which must have +1 for all terms\n\t\t\t// in leading diagonal and zero in other terms\n\n\t\t\tif ( ( Math.abs( m12 + m21 ) < epsilon2 ) &&\n\t\t\t ( Math.abs( m13 + m31 ) < epsilon2 ) &&\n\t\t\t ( Math.abs( m23 + m32 ) < epsilon2 ) &&\n\t\t\t ( Math.abs( m11 + m22 + m33 - 3 ) < epsilon2 ) ) {\n\n\t\t\t\t// this singularity is identity matrix so angle = 0\n\n\t\t\t\tthis.set( 1, 0, 0, 0 );\n\n\t\t\t\treturn this; // zero angle, arbitrary axis\n\n\t\t\t}\n\n\t\t\t// otherwise this singularity is angle = 180\n\n\t\t\tangle = Math.PI;\n\n\t\t\tvar xx = ( m11 + 1 ) / 2;\n\t\t\tvar yy = ( m22 + 1 ) / 2;\n\t\t\tvar zz = ( m33 + 1 ) / 2;\n\t\t\tvar xy = ( m12 + m21 ) / 4;\n\t\t\tvar xz = ( m13 + m31 ) / 4;\n\t\t\tvar yz = ( m23 + m32 ) / 4;\n\n\t\t\tif ( ( xx > yy ) && ( xx > zz ) ) {\n\n\t\t\t\t// m11 is the largest diagonal term\n\n\t\t\t\tif ( xx < epsilon ) {\n\n\t\t\t\t\tx = 0;\n\t\t\t\t\ty = 0.707106781;\n\t\t\t\t\tz = 0.707106781;\n\n\t\t\t\t} else {\n\n\t\t\t\t\tx = Math.sqrt( xx );\n\t\t\t\t\ty = xy / x;\n\t\t\t\t\tz = xz / x;\n\n\t\t\t\t}\n\n\t\t\t} else if ( yy > zz ) {\n\n\t\t\t\t// m22 is the largest diagonal term\n\n\t\t\t\tif ( yy < epsilon ) {\n\n\t\t\t\t\tx = 0.707106781;\n\t\t\t\t\ty = 0;\n\t\t\t\t\tz = 0.707106781;\n\n\t\t\t\t} else {\n\n\t\t\t\t\ty = Math.sqrt( yy );\n\t\t\t\t\tx = xy / y;\n\t\t\t\t\tz = yz / y;\n\n\t\t\t\t}\n\n\t\t\t} else {\n\n\t\t\t\t// m33 is the largest diagonal term so base result on this\n\n\t\t\t\tif ( zz < epsilon ) {\n\n\t\t\t\t\tx = 0.707106781;\n\t\t\t\t\ty = 0.707106781;\n\t\t\t\t\tz = 0;\n\n\t\t\t\t} else {\n\n\t\t\t\t\tz = Math.sqrt( zz );\n\t\t\t\t\tx = xz / z;\n\t\t\t\t\ty = yz / z;\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t\tthis.set( x, y, z, angle );\n\n\t\t\treturn this; // return 180 deg rotation\n\n\t\t}\n\n\t\t// as we have reached here there are no singularities so we can handle normally\n\n\t\tvar s = Math.sqrt( ( m32 - m23 ) * ( m32 - m23 ) +\n\t\t ( m13 - m31 ) * ( m13 - m31 ) +\n\t\t ( m21 - m12 ) * ( m21 - m12 ) ); // used to normalize\n\n\t\tif ( Math.abs( s ) < 0.001 ) s = 1;\n\n\t\t// prevent divide by zero, should not happen if matrix is orthogonal and should be\n\t\t// caught by singularity test above, but I've left it in just in case\n\n\t\tthis.x = ( m32 - m23 ) / s;\n\t\tthis.y = ( m13 - m31 ) / s;\n\t\tthis.z = ( m21 - m12 ) / s;\n\t\tthis.w = Math.acos( ( m11 + m22 + m33 - 1 ) / 2 );\n\n\t\treturn this;\n\n\t},\n\n\tmin: function ( v ) {\n\n\t\tthis.x = Math.min( this.x, v.x );\n\t\tthis.y = Math.min( this.y, v.y );\n\t\tthis.z = Math.min( this.z, v.z );\n\t\tthis.w = Math.min( this.w, v.w );\n\n\t\treturn this;\n\n\t},\n\n\tmax: function ( v ) {\n\n\t\tthis.x = Math.max( this.x, v.x );\n\t\tthis.y = Math.max( this.y, v.y );\n\t\tthis.z = Math.max( this.z, v.z );\n\t\tthis.w = Math.max( this.w, v.w );\n\n\t\treturn this;\n\n\t},\n\n\tclamp: function ( min, max ) {\n\n\t\t// This function assumes min < max, if this assumption isn't true it will not operate correctly\n\n\t\tthis.x = Math.max( min.x, Math.min( max.x, this.x ) );\n\t\tthis.y = Math.max( min.y, Math.min( max.y, this.y ) );\n\t\tthis.z = Math.max( min.z, Math.min( max.z, this.z ) );\n\t\tthis.w = Math.max( min.w, Math.min( max.w, this.w ) );\n\n\t\treturn this;\n\n\t},\n\n\tclampScalar: function () {\n\n\t\tvar min, max;\n\n\t\treturn function clampScalar( minVal, maxVal ) {\n\n\t\t\tif ( min === undefined ) {\n\n\t\t\t\tmin = new Vector4();\n\t\t\t\tmax = new Vector4();\n\n\t\t\t}\n\n\t\t\tmin.set( minVal, minVal, minVal, minVal );\n\t\t\tmax.set( maxVal, maxVal, maxVal, maxVal );\n\n\t\t\treturn this.clamp( min, max );\n\n\t\t};\n\n\t}(),\n\n\tfloor: function () {\n\n\t\tthis.x = Math.floor( this.x );\n\t\tthis.y = Math.floor( this.y );\n\t\tthis.z = Math.floor( this.z );\n\t\tthis.w = Math.floor( this.w );\n\n\t\treturn this;\n\n\t},\n\n\tceil: function () {\n\n\t\tthis.x = Math.ceil( this.x );\n\t\tthis.y = Math.ceil( this.y );\n\t\tthis.z = Math.ceil( this.z );\n\t\tthis.w = Math.ceil( this.w );\n\n\t\treturn this;\n\n\t},\n\n\tround: function () {\n\n\t\tthis.x = Math.round( this.x );\n\t\tthis.y = Math.round( this.y );\n\t\tthis.z = Math.round( this.z );\n\t\tthis.w = Math.round( this.w );\n\n\t\treturn this;\n\n\t},\n\n\troundToZero: function () {\n\n\t\tthis.x = ( this.x < 0 ) ? Math.ceil( this.x ) : Math.floor( this.x );\n\t\tthis.y = ( this.y < 0 ) ? Math.ceil( this.y ) : Math.floor( this.y );\n\t\tthis.z = ( this.z < 0 ) ? Math.ceil( this.z ) : Math.floor( this.z );\n\t\tthis.w = ( this.w < 0 ) ? Math.ceil( this.w ) : Math.floor( this.w );\n\n\t\treturn this;\n\n\t},\n\n\tnegate: function () {\n\n\t\tthis.x = - this.x;\n\t\tthis.y = - this.y;\n\t\tthis.z = - this.z;\n\t\tthis.w = - this.w;\n\n\t\treturn this;\n\n\t},\n\n\tdot: function ( v ) {\n\n\t\treturn this.x * v.x + this.y * v.y + this.z * v.z + this.w * v.w;\n\n\t},\n\n\tlengthSq: function () {\n\n\t\treturn this.x * this.x + this.y * this.y + this.z * this.z + this.w * this.w;\n\n\t},\n\n\tlength: function () {\n\n\t\treturn Math.sqrt( this.x * this.x + this.y * this.y + this.z * this.z + this.w * this.w );\n\n\t},\n\n\tlengthManhattan: function () {\n\n\t\treturn Math.abs( this.x ) + Math.abs( this.y ) + Math.abs( this.z ) + Math.abs( this.w );\n\n\t},\n\n\tnormalize: function () {\n\n\t\treturn this.divideScalar( this.length() );\n\n\t},\n\n\tsetLength: function ( length ) {\n\n\t\treturn this.multiplyScalar( length / this.length() );\n\n\t},\n\n\tlerp: function ( v, alpha ) {\n\n\t\tthis.x += ( v.x - this.x ) * alpha;\n\t\tthis.y += ( v.y - this.y ) * alpha;\n\t\tthis.z += ( v.z - this.z ) * alpha;\n\t\tthis.w += ( v.w - this.w ) * alpha;\n\n\t\treturn this;\n\n\t},\n\n\tlerpVectors: function ( v1, v2, alpha ) {\n\n\t\treturn this.subVectors( v2, v1 ).multiplyScalar( alpha ).add( v1 );\n\n\t},\n\n\tequals: function ( v ) {\n\n\t\treturn ( ( v.x === this.x ) && ( v.y === this.y ) && ( v.z === this.z ) && ( v.w === this.w ) );\n\n\t},\n\n\tfromArray: function ( array, offset ) {\n\n\t\tif ( offset === undefined ) offset = 0;\n\n\t\tthis.x = array[ offset ];\n\t\tthis.y = array[ offset + 1 ];\n\t\tthis.z = array[ offset + 2 ];\n\t\tthis.w = array[ offset + 3 ];\n\n\t\treturn this;\n\n\t},\n\n\ttoArray: function ( array, offset ) {\n\n\t\tif ( array === undefined ) array = [];\n\t\tif ( offset === undefined ) offset = 0;\n\n\t\tarray[ offset ] = this.x;\n\t\tarray[ offset + 1 ] = this.y;\n\t\tarray[ offset + 2 ] = this.z;\n\t\tarray[ offset + 3 ] = this.w;\n\n\t\treturn array;\n\n\t},\n\n\tfromAttribute: function ( attribute, index, offset ) {\n\n\t\tif ( offset === undefined ) offset = 0;\n\n\t\tindex = index * attribute.itemSize + offset;\n\n\t\tthis.x = attribute.array[ index ];\n\t\tthis.y = attribute.array[ index + 1 ];\n\t\tthis.z = attribute.array[ index + 2 ];\n\t\tthis.w = attribute.array[ index + 3 ];\n\n\t\treturn this;\n\n\t}\n\n};\n\n\nexport { Vector4 };\n","import { EventDispatcher } from '../core/EventDispatcher';\nimport { Texture } from '../textures/Texture';\nimport { LinearFilter } from '../constants';\nimport { Vector4 } from '../math/Vector4';\nimport { _Math } from '../math/Math';\n\n/**\n * @author szimek / https://github.com/szimek/\n * @author alteredq / http://alteredqualia.com/\n * @author Marius Kintel / https://github.com/kintel\n */\n\n/*\n In options, we can specify:\n * Texture parameters for an auto-generated target texture\n * depthBuffer/stencilBuffer: Booleans to indicate if we should generate these buffers\n*/\nfunction WebGLRenderTarget( width, height, options ) {\n\n\tthis.uuid = _Math.generateUUID();\n\n\tthis.width = width;\n\tthis.height = height;\n\n\tthis.scissor = new Vector4( 0, 0, width, height );\n\tthis.scissorTest = false;\n\n\tthis.viewport = new Vector4( 0, 0, width, height );\n\n\toptions = options || {};\n\n\tif ( options.minFilter === undefined ) options.minFilter = LinearFilter;\n\n\tthis.texture = new Texture( undefined, undefined, options.wrapS, options.wrapT, options.magFilter, options.minFilter, options.format, options.type, options.anisotropy, options.encoding );\n\n\tthis.depthBuffer = options.depthBuffer !== undefined ? options.depthBuffer : true;\n\tthis.stencilBuffer = options.stencilBuffer !== undefined ? options.stencilBuffer : true;\n\tthis.depthTexture = options.depthTexture !== undefined ? options.depthTexture : null;\n\n}\n\nObject.assign( WebGLRenderTarget.prototype, EventDispatcher.prototype, {\n\n\tisWebGLRenderTarget: true,\n\n\tsetSize: function ( width, height ) {\n\n\t\tif ( this.width !== width || this.height !== height ) {\n\n\t\t\tthis.width = width;\n\t\t\tthis.height = height;\n\n\t\t\tthis.dispose();\n\n\t\t}\n\n\t\tthis.viewport.set( 0, 0, width, height );\n\t\tthis.scissor.set( 0, 0, width, height );\n\n\t},\n\n\tclone: function () {\n\n\t\treturn new this.constructor().copy( this );\n\n\t},\n\n\tcopy: function ( source ) {\n\n\t\tthis.width = source.width;\n\t\tthis.height = source.height;\n\n\t\tthis.viewport.copy( source.viewport );\n\n\t\tthis.texture = source.texture.clone();\n\n\t\tthis.depthBuffer = source.depthBuffer;\n\t\tthis.stencilBuffer = source.stencilBuffer;\n\t\tthis.depthTexture = source.depthTexture;\n\n\t\treturn this;\n\n\t},\n\n\tdispose: function () {\n\n\t\tthis.dispatchEvent( { type: 'dispose' } );\n\n\t}\n\n} );\n\n\nexport { WebGLRenderTarget };\n","import { WebGLRenderTarget } from './WebGLRenderTarget';\n\n/**\n * @author alteredq / http://alteredqualia.com\n */\n\nfunction WebGLRenderTargetCube( width, height, options ) {\n\n\tWebGLRenderTarget.call( this, width, height, options );\n\n\tthis.activeCubeFace = 0; // PX 0, NX 1, PY 2, NY 3, PZ 4, NZ 5\n\tthis.activeMipMapLevel = 0;\n\n}\n\nWebGLRenderTargetCube.prototype = Object.create( WebGLRenderTarget.prototype );\nWebGLRenderTargetCube.prototype.constructor = WebGLRenderTargetCube;\n\nWebGLRenderTargetCube.prototype.isWebGLRenderTargetCube = true;\n\n\nexport { WebGLRenderTargetCube };\n","import { Vector3 } from './Vector3';\n\n/**\n * @author mikael emtinger / http://gomo.se/\n * @author alteredq / http://alteredqualia.com/\n * @author WestLangley / http://github.com/WestLangley\n * @author bhouston / http://clara.io\n */\n\nfunction Quaternion( x, y, z, w ) {\n\n\tthis._x = x || 0;\n\tthis._y = y || 0;\n\tthis._z = z || 0;\n\tthis._w = ( w !== undefined ) ? w : 1;\n\n}\n\nQuaternion.prototype = {\n\n\tconstructor: Quaternion,\n\n\tget x () {\n\n\t\treturn this._x;\n\n\t},\n\n\tset x ( value ) {\n\n\t\tthis._x = value;\n\t\tthis.onChangeCallback();\n\n\t},\n\n\tget y () {\n\n\t\treturn this._y;\n\n\t},\n\n\tset y ( value ) {\n\n\t\tthis._y = value;\n\t\tthis.onChangeCallback();\n\n\t},\n\n\tget z () {\n\n\t\treturn this._z;\n\n\t},\n\n\tset z ( value ) {\n\n\t\tthis._z = value;\n\t\tthis.onChangeCallback();\n\n\t},\n\n\tget w () {\n\n\t\treturn this._w;\n\n\t},\n\n\tset w ( value ) {\n\n\t\tthis._w = value;\n\t\tthis.onChangeCallback();\n\n\t},\n\n\tset: function ( x, y, z, w ) {\n\n\t\tthis._x = x;\n\t\tthis._y = y;\n\t\tthis._z = z;\n\t\tthis._w = w;\n\n\t\tthis.onChangeCallback();\n\n\t\treturn this;\n\n\t},\n\n\tclone: function () {\n\n\t\treturn new this.constructor( this._x, this._y, this._z, this._w );\n\n\t},\n\n\tcopy: function ( quaternion ) {\n\n\t\tthis._x = quaternion.x;\n\t\tthis._y = quaternion.y;\n\t\tthis._z = quaternion.z;\n\t\tthis._w = quaternion.w;\n\n\t\tthis.onChangeCallback();\n\n\t\treturn this;\n\n\t},\n\n\tsetFromEuler: function ( euler, update ) {\n\n\t\tif ( (euler && euler.isEuler) === false ) {\n\n\t\t\tthrow new Error( 'THREE.Quaternion: .setFromEuler() now expects an Euler rotation rather than a Vector3 and order.' );\n\n\t\t}\n\n\t\t// http://www.mathworks.com/matlabcentral/fileexchange/\n\t\t// \t20696-function-to-convert-between-dcm-euler-angles-quaternions-and-euler-vectors/\n\t\t//\tcontent/SpinCalc.m\n\n\t\tvar c1 = Math.cos( euler._x / 2 );\n\t\tvar c2 = Math.cos( euler._y / 2 );\n\t\tvar c3 = Math.cos( euler._z / 2 );\n\t\tvar s1 = Math.sin( euler._x / 2 );\n\t\tvar s2 = Math.sin( euler._y / 2 );\n\t\tvar s3 = Math.sin( euler._z / 2 );\n\n\t\tvar order = euler.order;\n\n\t\tif ( order === 'XYZ' ) {\n\n\t\t\tthis._x = s1 * c2 * c3 + c1 * s2 * s3;\n\t\t\tthis._y = c1 * s2 * c3 - s1 * c2 * s3;\n\t\t\tthis._z = c1 * c2 * s3 + s1 * s2 * c3;\n\t\t\tthis._w = c1 * c2 * c3 - s1 * s2 * s3;\n\n\t\t} else if ( order === 'YXZ' ) {\n\n\t\t\tthis._x = s1 * c2 * c3 + c1 * s2 * s3;\n\t\t\tthis._y = c1 * s2 * c3 - s1 * c2 * s3;\n\t\t\tthis._z = c1 * c2 * s3 - s1 * s2 * c3;\n\t\t\tthis._w = c1 * c2 * c3 + s1 * s2 * s3;\n\n\t\t} else if ( order === 'ZXY' ) {\n\n\t\t\tthis._x = s1 * c2 * c3 - c1 * s2 * s3;\n\t\t\tthis._y = c1 * s2 * c3 + s1 * c2 * s3;\n\t\t\tthis._z = c1 * c2 * s3 + s1 * s2 * c3;\n\t\t\tthis._w = c1 * c2 * c3 - s1 * s2 * s3;\n\n\t\t} else if ( order === 'ZYX' ) {\n\n\t\t\tthis._x = s1 * c2 * c3 - c1 * s2 * s3;\n\t\t\tthis._y = c1 * s2 * c3 + s1 * c2 * s3;\n\t\t\tthis._z = c1 * c2 * s3 - s1 * s2 * c3;\n\t\t\tthis._w = c1 * c2 * c3 + s1 * s2 * s3;\n\n\t\t} else if ( order === 'YZX' ) {\n\n\t\t\tthis._x = s1 * c2 * c3 + c1 * s2 * s3;\n\t\t\tthis._y = c1 * s2 * c3 + s1 * c2 * s3;\n\t\t\tthis._z = c1 * c2 * s3 - s1 * s2 * c3;\n\t\t\tthis._w = c1 * c2 * c3 - s1 * s2 * s3;\n\n\t\t} else if ( order === 'XZY' ) {\n\n\t\t\tthis._x = s1 * c2 * c3 - c1 * s2 * s3;\n\t\t\tthis._y = c1 * s2 * c3 - s1 * c2 * s3;\n\t\t\tthis._z = c1 * c2 * s3 + s1 * s2 * c3;\n\t\t\tthis._w = c1 * c2 * c3 + s1 * s2 * s3;\n\n\t\t}\n\n\t\tif ( update !== false ) this.onChangeCallback();\n\n\t\treturn this;\n\n\t},\n\n\tsetFromAxisAngle: function ( axis, angle ) {\n\n\t\t// http://www.euclideanspace.com/maths/geometry/rotations/conversions/angleToQuaternion/index.htm\n\n\t\t// assumes axis is normalized\n\n\t\tvar halfAngle = angle / 2, s = Math.sin( halfAngle );\n\n\t\tthis._x = axis.x * s;\n\t\tthis._y = axis.y * s;\n\t\tthis._z = axis.z * s;\n\t\tthis._w = Math.cos( halfAngle );\n\n\t\tthis.onChangeCallback();\n\n\t\treturn this;\n\n\t},\n\n\tsetFromRotationMatrix: function ( m ) {\n\n\t\t// http://www.euclideanspace.com/maths/geometry/rotations/conversions/matrixToQuaternion/index.htm\n\n\t\t// assumes the upper 3x3 of m is a pure rotation matrix (i.e, unscaled)\n\n\t\tvar te = m.elements,\n\n\t\t\tm11 = te[ 0 ], m12 = te[ 4 ], m13 = te[ 8 ],\n\t\t\tm21 = te[ 1 ], m22 = te[ 5 ], m23 = te[ 9 ],\n\t\t\tm31 = te[ 2 ], m32 = te[ 6 ], m33 = te[ 10 ],\n\n\t\t\ttrace = m11 + m22 + m33,\n\t\t\ts;\n\n\t\tif ( trace > 0 ) {\n\n\t\t\ts = 0.5 / Math.sqrt( trace + 1.0 );\n\n\t\t\tthis._w = 0.25 / s;\n\t\t\tthis._x = ( m32 - m23 ) * s;\n\t\t\tthis._y = ( m13 - m31 ) * s;\n\t\t\tthis._z = ( m21 - m12 ) * s;\n\n\t\t} else if ( m11 > m22 && m11 > m33 ) {\n\n\t\t\ts = 2.0 * Math.sqrt( 1.0 + m11 - m22 - m33 );\n\n\t\t\tthis._w = ( m32 - m23 ) / s;\n\t\t\tthis._x = 0.25 * s;\n\t\t\tthis._y = ( m12 + m21 ) / s;\n\t\t\tthis._z = ( m13 + m31 ) / s;\n\n\t\t} else if ( m22 > m33 ) {\n\n\t\t\ts = 2.0 * Math.sqrt( 1.0 + m22 - m11 - m33 );\n\n\t\t\tthis._w = ( m13 - m31 ) / s;\n\t\t\tthis._x = ( m12 + m21 ) / s;\n\t\t\tthis._y = 0.25 * s;\n\t\t\tthis._z = ( m23 + m32 ) / s;\n\n\t\t} else {\n\n\t\t\ts = 2.0 * Math.sqrt( 1.0 + m33 - m11 - m22 );\n\n\t\t\tthis._w = ( m21 - m12 ) / s;\n\t\t\tthis._x = ( m13 + m31 ) / s;\n\t\t\tthis._y = ( m23 + m32 ) / s;\n\t\t\tthis._z = 0.25 * s;\n\n\t\t}\n\n\t\tthis.onChangeCallback();\n\n\t\treturn this;\n\n\t},\n\n\tsetFromUnitVectors: function () {\n\n\t\t// http://lolengine.net/blog/2014/02/24/quaternion-from-two-vectors-final\n\n\t\t// assumes direction vectors vFrom and vTo are normalized\n\n\t\tvar v1, r;\n\n\t\tvar EPS = 0.000001;\n\n\t\treturn function setFromUnitVectors( vFrom, vTo ) {\n\n\t\t\tif ( v1 === undefined ) v1 = new Vector3();\n\n\t\t\tr = vFrom.dot( vTo ) + 1;\n\n\t\t\tif ( r < EPS ) {\n\n\t\t\t\tr = 0;\n\n\t\t\t\tif ( Math.abs( vFrom.x ) > Math.abs( vFrom.z ) ) {\n\n\t\t\t\t\tv1.set( - vFrom.y, vFrom.x, 0 );\n\n\t\t\t\t} else {\n\n\t\t\t\t\tv1.set( 0, - vFrom.z, vFrom.y );\n\n\t\t\t\t}\n\n\t\t\t} else {\n\n\t\t\t\tv1.crossVectors( vFrom, vTo );\n\n\t\t\t}\n\n\t\t\tthis._x = v1.x;\n\t\t\tthis._y = v1.y;\n\t\t\tthis._z = v1.z;\n\t\t\tthis._w = r;\n\n\t\t\treturn this.normalize();\n\n\t\t};\n\n\t}(),\n\n\tinverse: function () {\n\n\t\treturn this.conjugate().normalize();\n\n\t},\n\n\tconjugate: function () {\n\n\t\tthis._x *= - 1;\n\t\tthis._y *= - 1;\n\t\tthis._z *= - 1;\n\n\t\tthis.onChangeCallback();\n\n\t\treturn this;\n\n\t},\n\n\tdot: function ( v ) {\n\n\t\treturn this._x * v._x + this._y * v._y + this._z * v._z + this._w * v._w;\n\n\t},\n\n\tlengthSq: function () {\n\n\t\treturn this._x * this._x + this._y * this._y + this._z * this._z + this._w * this._w;\n\n\t},\n\n\tlength: function () {\n\n\t\treturn Math.sqrt( this._x * this._x + this._y * this._y + this._z * this._z + this._w * this._w );\n\n\t},\n\n\tnormalize: function () {\n\n\t\tvar l = this.length();\n\n\t\tif ( l === 0 ) {\n\n\t\t\tthis._x = 0;\n\t\t\tthis._y = 0;\n\t\t\tthis._z = 0;\n\t\t\tthis._w = 1;\n\n\t\t} else {\n\n\t\t\tl = 1 / l;\n\n\t\t\tthis._x = this._x * l;\n\t\t\tthis._y = this._y * l;\n\t\t\tthis._z = this._z * l;\n\t\t\tthis._w = this._w * l;\n\n\t\t}\n\n\t\tthis.onChangeCallback();\n\n\t\treturn this;\n\n\t},\n\n\tmultiply: function ( q, p ) {\n\n\t\tif ( p !== undefined ) {\n\n\t\t\tconsole.warn( 'THREE.Quaternion: .multiply() now only accepts one argument. Use .multiplyQuaternions( a, b ) instead.' );\n\t\t\treturn this.multiplyQuaternions( q, p );\n\n\t\t}\n\n\t\treturn this.multiplyQuaternions( this, q );\n\n\t},\n\n\tpremultiply: function ( q ) {\n\n\t\treturn this.multiplyQuaternions( q, this );\n\n\t},\n\n\tmultiplyQuaternions: function ( a, b ) {\n\n\t\t// from http://www.euclideanspace.com/maths/algebra/realNormedAlgebra/quaternions/code/index.htm\n\n\t\tvar qax = a._x, qay = a._y, qaz = a._z, qaw = a._w;\n\t\tvar qbx = b._x, qby = b._y, qbz = b._z, qbw = b._w;\n\n\t\tthis._x = qax * qbw + qaw * qbx + qay * qbz - qaz * qby;\n\t\tthis._y = qay * qbw + qaw * qby + qaz * qbx - qax * qbz;\n\t\tthis._z = qaz * qbw + qaw * qbz + qax * qby - qay * qbx;\n\t\tthis._w = qaw * qbw - qax * qbx - qay * qby - qaz * qbz;\n\n\t\tthis.onChangeCallback();\n\n\t\treturn this;\n\n\t},\n\n\tslerp: function ( qb, t ) {\n\n\t\tif ( t === 0 ) return this;\n\t\tif ( t === 1 ) return this.copy( qb );\n\n\t\tvar x = this._x, y = this._y, z = this._z, w = this._w;\n\n\t\t// http://www.euclideanspace.com/maths/algebra/realNormedAlgebra/quaternions/slerp/\n\n\t\tvar cosHalfTheta = w * qb._w + x * qb._x + y * qb._y + z * qb._z;\n\n\t\tif ( cosHalfTheta < 0 ) {\n\n\t\t\tthis._w = - qb._w;\n\t\t\tthis._x = - qb._x;\n\t\t\tthis._y = - qb._y;\n\t\t\tthis._z = - qb._z;\n\n\t\t\tcosHalfTheta = - cosHalfTheta;\n\n\t\t} else {\n\n\t\t\tthis.copy( qb );\n\n\t\t}\n\n\t\tif ( cosHalfTheta >= 1.0 ) {\n\n\t\t\tthis._w = w;\n\t\t\tthis._x = x;\n\t\t\tthis._y = y;\n\t\t\tthis._z = z;\n\n\t\t\treturn this;\n\n\t\t}\n\n\t\tvar sinHalfTheta = Math.sqrt( 1.0 - cosHalfTheta * cosHalfTheta );\n\n\t\tif ( Math.abs( sinHalfTheta ) < 0.001 ) {\n\n\t\t\tthis._w = 0.5 * ( w + this._w );\n\t\t\tthis._x = 0.5 * ( x + this._x );\n\t\t\tthis._y = 0.5 * ( y + this._y );\n\t\t\tthis._z = 0.5 * ( z + this._z );\n\n\t\t\treturn this;\n\n\t\t}\n\n\t\tvar halfTheta = Math.atan2( sinHalfTheta, cosHalfTheta );\n\t\tvar ratioA = Math.sin( ( 1 - t ) * halfTheta ) / sinHalfTheta,\n\t\tratioB = Math.sin( t * halfTheta ) / sinHalfTheta;\n\n\t\tthis._w = ( w * ratioA + this._w * ratioB );\n\t\tthis._x = ( x * ratioA + this._x * ratioB );\n\t\tthis._y = ( y * ratioA + this._y * ratioB );\n\t\tthis._z = ( z * ratioA + this._z * ratioB );\n\n\t\tthis.onChangeCallback();\n\n\t\treturn this;\n\n\t},\n\n\tequals: function ( quaternion ) {\n\n\t\treturn ( quaternion._x === this._x ) && ( quaternion._y === this._y ) && ( quaternion._z === this._z ) && ( quaternion._w === this._w );\n\n\t},\n\n\tfromArray: function ( array, offset ) {\n\n\t\tif ( offset === undefined ) offset = 0;\n\n\t\tthis._x = array[ offset ];\n\t\tthis._y = array[ offset + 1 ];\n\t\tthis._z = array[ offset + 2 ];\n\t\tthis._w = array[ offset + 3 ];\n\n\t\tthis.onChangeCallback();\n\n\t\treturn this;\n\n\t},\n\n\ttoArray: function ( array, offset ) {\n\n\t\tif ( array === undefined ) array = [];\n\t\tif ( offset === undefined ) offset = 0;\n\n\t\tarray[ offset ] = this._x;\n\t\tarray[ offset + 1 ] = this._y;\n\t\tarray[ offset + 2 ] = this._z;\n\t\tarray[ offset + 3 ] = this._w;\n\n\t\treturn array;\n\n\t},\n\n\tonChange: function ( callback ) {\n\n\t\tthis.onChangeCallback = callback;\n\n\t\treturn this;\n\n\t},\n\n\tonChangeCallback: function () {}\n\n};\n\nObject.assign( Quaternion, {\n\n\tslerp: function( qa, qb, qm, t ) {\n\n\t\treturn qm.copy( qa ).slerp( qb, t );\n\n\t},\n\n\tslerpFlat: function(\n\t\t\tdst, dstOffset, src0, srcOffset0, src1, srcOffset1, t ) {\n\n\t\t// fuzz-free, array-based Quaternion SLERP operation\n\n\t\tvar x0 = src0[ srcOffset0 + 0 ],\n\t\t\ty0 = src0[ srcOffset0 + 1 ],\n\t\t\tz0 = src0[ srcOffset0 + 2 ],\n\t\t\tw0 = src0[ srcOffset0 + 3 ],\n\n\t\t\tx1 = src1[ srcOffset1 + 0 ],\n\t\t\ty1 = src1[ srcOffset1 + 1 ],\n\t\t\tz1 = src1[ srcOffset1 + 2 ],\n\t\t\tw1 = src1[ srcOffset1 + 3 ];\n\n\t\tif ( w0 !== w1 || x0 !== x1 || y0 !== y1 || z0 !== z1 ) {\n\n\t\t\tvar s = 1 - t,\n\n\t\t\t\tcos = x0 * x1 + y0 * y1 + z0 * z1 + w0 * w1,\n\n\t\t\t\tdir = ( cos >= 0 ? 1 : - 1 ),\n\t\t\t\tsqrSin = 1 - cos * cos;\n\n\t\t\t// Skip the Slerp for tiny steps to avoid numeric problems:\n\t\t\tif ( sqrSin > Number.EPSILON ) {\n\n\t\t\t\tvar sin = Math.sqrt( sqrSin ),\n\t\t\t\t\tlen = Math.atan2( sin, cos * dir );\n\n\t\t\t\ts = Math.sin( s * len ) / sin;\n\t\t\t\tt = Math.sin( t * len ) / sin;\n\n\t\t\t}\n\n\t\t\tvar tDir = t * dir;\n\n\t\t\tx0 = x0 * s + x1 * tDir;\n\t\t\ty0 = y0 * s + y1 * tDir;\n\t\t\tz0 = z0 * s + z1 * tDir;\n\t\t\tw0 = w0 * s + w1 * tDir;\n\n\t\t\t// Normalize in case we just did a lerp:\n\t\t\tif ( s === 1 - t ) {\n\n\t\t\t\tvar f = 1 / Math.sqrt( x0 * x0 + y0 * y0 + z0 * z0 + w0 * w0 );\n\n\t\t\t\tx0 *= f;\n\t\t\t\ty0 *= f;\n\t\t\t\tz0 *= f;\n\t\t\t\tw0 *= f;\n\n\t\t\t}\n\n\t\t}\n\n\t\tdst[ dstOffset ] = x0;\n\t\tdst[ dstOffset + 1 ] = y0;\n\t\tdst[ dstOffset + 2 ] = z0;\n\t\tdst[ dstOffset + 3 ] = w0;\n\n\t}\n\n} );\n\n\nexport { Quaternion };\n","import { _Math } from './Math';\nimport { Matrix4 } from './Matrix4';\nimport { Quaternion } from './Quaternion';\n\n/**\n * @author mrdoob / http://mrdoob.com/\n * @author *kile / http://kile.stravaganza.org/\n * @author philogb / http://blog.thejit.org/\n * @author mikael emtinger / http://gomo.se/\n * @author egraether / http://egraether.com/\n * @author WestLangley / http://github.com/WestLangley\n */\n\nfunction Vector3( x, y, z ) {\n\n\tthis.x = x || 0;\n\tthis.y = y || 0;\n\tthis.z = z || 0;\n\n}\n\nVector3.prototype = {\n\n\tconstructor: Vector3,\n\n\tisVector3: true,\n\n\tset: function ( x, y, z ) {\n\n\t\tthis.x = x;\n\t\tthis.y = y;\n\t\tthis.z = z;\n\n\t\treturn this;\n\n\t},\n\n\tsetScalar: function ( scalar ) {\n\n\t\tthis.x = scalar;\n\t\tthis.y = scalar;\n\t\tthis.z = scalar;\n\n\t\treturn this;\n\n\t},\n\n\tsetX: function ( x ) {\n\n\t\tthis.x = x;\n\n\t\treturn this;\n\n\t},\n\n\tsetY: function ( y ) {\n\n\t\tthis.y = y;\n\n\t\treturn this;\n\n\t},\n\n\tsetZ: function ( z ) {\n\n\t\tthis.z = z;\n\n\t\treturn this;\n\n\t},\n\n\tsetComponent: function ( index, value ) {\n\n\t\tswitch ( index ) {\n\n\t\t\tcase 0: this.x = value; break;\n\t\t\tcase 1: this.y = value; break;\n\t\t\tcase 2: this.z = value; break;\n\t\t\tdefault: throw new Error( 'index is out of range: ' + index );\n\n\t\t}\n\t\t\n\t\treturn this;\n\n\t},\n\n\tgetComponent: function ( index ) {\n\n\t\tswitch ( index ) {\n\n\t\t\tcase 0: return this.x;\n\t\t\tcase 1: return this.y;\n\t\t\tcase 2: return this.z;\n\t\t\tdefault: throw new Error( 'index is out of range: ' + index );\n\n\t\t}\n\n\t},\n\n\tclone: function () {\n\n\t\treturn new this.constructor( this.x, this.y, this.z );\n\n\t},\n\n\tcopy: function ( v ) {\n\n\t\tthis.x = v.x;\n\t\tthis.y = v.y;\n\t\tthis.z = v.z;\n\n\t\treturn this;\n\n\t},\n\n\tadd: function ( v, w ) {\n\n\t\tif ( w !== undefined ) {\n\n\t\t\tconsole.warn( 'THREE.Vector3: .add() now only accepts one argument. Use .addVectors( a, b ) instead.' );\n\t\t\treturn this.addVectors( v, w );\n\n\t\t}\n\n\t\tthis.x += v.x;\n\t\tthis.y += v.y;\n\t\tthis.z += v.z;\n\n\t\treturn this;\n\n\t},\n\n\taddScalar: function ( s ) {\n\n\t\tthis.x += s;\n\t\tthis.y += s;\n\t\tthis.z += s;\n\n\t\treturn this;\n\n\t},\n\n\taddVectors: function ( a, b ) {\n\n\t\tthis.x = a.x + b.x;\n\t\tthis.y = a.y + b.y;\n\t\tthis.z = a.z + b.z;\n\n\t\treturn this;\n\n\t},\n\n\taddScaledVector: function ( v, s ) {\n\n\t\tthis.x += v.x * s;\n\t\tthis.y += v.y * s;\n\t\tthis.z += v.z * s;\n\n\t\treturn this;\n\n\t},\n\n\tsub: function ( v, w ) {\n\n\t\tif ( w !== undefined ) {\n\n\t\t\tconsole.warn( 'THREE.Vector3: .sub() now only accepts one argument. Use .subVectors( a, b ) instead.' );\n\t\t\treturn this.subVectors( v, w );\n\n\t\t}\n\n\t\tthis.x -= v.x;\n\t\tthis.y -= v.y;\n\t\tthis.z -= v.z;\n\n\t\treturn this;\n\n\t},\n\n\tsubScalar: function ( s ) {\n\n\t\tthis.x -= s;\n\t\tthis.y -= s;\n\t\tthis.z -= s;\n\n\t\treturn this;\n\n\t},\n\n\tsubVectors: function ( a, b ) {\n\n\t\tthis.x = a.x - b.x;\n\t\tthis.y = a.y - b.y;\n\t\tthis.z = a.z - b.z;\n\n\t\treturn this;\n\n\t},\n\n\tmultiply: function ( v, w ) {\n\n\t\tif ( w !== undefined ) {\n\n\t\t\tconsole.warn( 'THREE.Vector3: .multiply() now only accepts one argument. Use .multiplyVectors( a, b ) instead.' );\n\t\t\treturn this.multiplyVectors( v, w );\n\n\t\t}\n\n\t\tthis.x *= v.x;\n\t\tthis.y *= v.y;\n\t\tthis.z *= v.z;\n\n\t\treturn this;\n\n\t},\n\n\tmultiplyScalar: function ( scalar ) {\n\n\t\tif ( isFinite( scalar ) ) {\n\n\t\t\tthis.x *= scalar;\n\t\t\tthis.y *= scalar;\n\t\t\tthis.z *= scalar;\n\n\t\t} else {\n\n\t\t\tthis.x = 0;\n\t\t\tthis.y = 0;\n\t\t\tthis.z = 0;\n\n\t\t}\n\n\t\treturn this;\n\n\t},\n\n\tmultiplyVectors: function ( a, b ) {\n\n\t\tthis.x = a.x * b.x;\n\t\tthis.y = a.y * b.y;\n\t\tthis.z = a.z * b.z;\n\n\t\treturn this;\n\n\t},\n\n\tapplyEuler: function () {\n\n\t\tvar quaternion;\n\n\t\treturn function applyEuler( euler ) {\n\n\t\t\tif ( (euler && euler.isEuler) === false ) {\n\n\t\t\t\tconsole.error( 'THREE.Vector3: .applyEuler() now expects an Euler rotation rather than a Vector3 and order.' );\n\n\t\t\t}\n\n\t\t\tif ( quaternion === undefined ) quaternion = new Quaternion();\n\n\t\t\treturn this.applyQuaternion( quaternion.setFromEuler( euler ) );\n\n\t\t};\n\n\t}(),\n\n\tapplyAxisAngle: function () {\n\n\t\tvar quaternion;\n\n\t\treturn function applyAxisAngle( axis, angle ) {\n\n\t\t\tif ( quaternion === undefined ) quaternion = new Quaternion();\n\n\t\t\treturn this.applyQuaternion( quaternion.setFromAxisAngle( axis, angle ) );\n\n\t\t};\n\n\t}(),\n\n\tapplyMatrix3: function ( m ) {\n\n\t\tvar x = this.x, y = this.y, z = this.z;\n\t\tvar e = m.elements;\n\n\t\tthis.x = e[ 0 ] * x + e[ 3 ] * y + e[ 6 ] * z;\n\t\tthis.y = e[ 1 ] * x + e[ 4 ] * y + e[ 7 ] * z;\n\t\tthis.z = e[ 2 ] * x + e[ 5 ] * y + e[ 8 ] * z;\n\n\t\treturn this;\n\n\t},\n\n\tapplyMatrix4: function ( m ) {\n\n\t\t// input: THREE.Matrix4 affine matrix\n\n\t\tvar x = this.x, y = this.y, z = this.z;\n\t\tvar e = m.elements;\n\n\t\tthis.x = e[ 0 ] * x + e[ 4 ] * y + e[ 8 ] * z + e[ 12 ];\n\t\tthis.y = e[ 1 ] * x + e[ 5 ] * y + e[ 9 ] * z + e[ 13 ];\n\t\tthis.z = e[ 2 ] * x + e[ 6 ] * y + e[ 10 ] * z + e[ 14 ];\n\n\t\treturn this;\n\n\t},\n\n\tapplyProjection: function ( m ) {\n\n\t\t// input: THREE.Matrix4 projection matrix\n\n\t\tvar x = this.x, y = this.y, z = this.z;\n\t\tvar e = m.elements;\n\t\tvar d = 1 / ( e[ 3 ] * x + e[ 7 ] * y + e[ 11 ] * z + e[ 15 ] ); // perspective divide\n\n\t\tthis.x = ( e[ 0 ] * x + e[ 4 ] * y + e[ 8 ] * z + e[ 12 ] ) * d;\n\t\tthis.y = ( e[ 1 ] * x + e[ 5 ] * y + e[ 9 ] * z + e[ 13 ] ) * d;\n\t\tthis.z = ( e[ 2 ] * x + e[ 6 ] * y + e[ 10 ] * z + e[ 14 ] ) * d;\n\n\t\treturn this;\n\n\t},\n\n\tapplyQuaternion: function ( q ) {\n\n\t\tvar x = this.x, y = this.y, z = this.z;\n\t\tvar qx = q.x, qy = q.y, qz = q.z, qw = q.w;\n\n\t\t// calculate quat * vector\n\n\t\tvar ix = qw * x + qy * z - qz * y;\n\t\tvar iy = qw * y + qz * x - qx * z;\n\t\tvar iz = qw * z + qx * y - qy * x;\n\t\tvar iw = - qx * x - qy * y - qz * z;\n\n\t\t// calculate result * inverse quat\n\n\t\tthis.x = ix * qw + iw * - qx + iy * - qz - iz * - qy;\n\t\tthis.y = iy * qw + iw * - qy + iz * - qx - ix * - qz;\n\t\tthis.z = iz * qw + iw * - qz + ix * - qy - iy * - qx;\n\n\t\treturn this;\n\n\t},\n\n\tproject: function () {\n\n\t\tvar matrix;\n\n\t\treturn function project( camera ) {\n\n\t\t\tif ( matrix === undefined ) matrix = new Matrix4();\n\n\t\t\tmatrix.multiplyMatrices( camera.projectionMatrix, matrix.getInverse( camera.matrixWorld ) );\n\t\t\treturn this.applyProjection( matrix );\n\n\t\t};\n\n\t}(),\n\n\tunproject: function () {\n\n\t\tvar matrix;\n\n\t\treturn function unproject( camera ) {\n\n\t\t\tif ( matrix === undefined ) matrix = new Matrix4();\n\n\t\t\tmatrix.multiplyMatrices( camera.matrixWorld, matrix.getInverse( camera.projectionMatrix ) );\n\t\t\treturn this.applyProjection( matrix );\n\n\t\t};\n\n\t}(),\n\n\ttransformDirection: function ( m ) {\n\n\t\t// input: THREE.Matrix4 affine matrix\n\t\t// vector interpreted as a direction\n\n\t\tvar x = this.x, y = this.y, z = this.z;\n\t\tvar e = m.elements;\n\n\t\tthis.x = e[ 0 ] * x + e[ 4 ] * y + e[ 8 ] * z;\n\t\tthis.y = e[ 1 ] * x + e[ 5 ] * y + e[ 9 ] * z;\n\t\tthis.z = e[ 2 ] * x + e[ 6 ] * y + e[ 10 ] * z;\n\n\t\treturn this.normalize();\n\n\t},\n\n\tdivide: function ( v ) {\n\n\t\tthis.x /= v.x;\n\t\tthis.y /= v.y;\n\t\tthis.z /= v.z;\n\n\t\treturn this;\n\n\t},\n\n\tdivideScalar: function ( scalar ) {\n\n\t\treturn this.multiplyScalar( 1 / scalar );\n\n\t},\n\n\tmin: function ( v ) {\n\n\t\tthis.x = Math.min( this.x, v.x );\n\t\tthis.y = Math.min( this.y, v.y );\n\t\tthis.z = Math.min( this.z, v.z );\n\n\t\treturn this;\n\n\t},\n\n\tmax: function ( v ) {\n\n\t\tthis.x = Math.max( this.x, v.x );\n\t\tthis.y = Math.max( this.y, v.y );\n\t\tthis.z = Math.max( this.z, v.z );\n\n\t\treturn this;\n\n\t},\n\n\tclamp: function ( min, max ) {\n\n\t\t// This function assumes min < max, if this assumption isn't true it will not operate correctly\n\n\t\tthis.x = Math.max( min.x, Math.min( max.x, this.x ) );\n\t\tthis.y = Math.max( min.y, Math.min( max.y, this.y ) );\n\t\tthis.z = Math.max( min.z, Math.min( max.z, this.z ) );\n\n\t\treturn this;\n\n\t},\n\n\tclampScalar: function () {\n\n\t\tvar min, max;\n\n\t\treturn function clampScalar( minVal, maxVal ) {\n\n\t\t\tif ( min === undefined ) {\n\n\t\t\t\tmin = new Vector3();\n\t\t\t\tmax = new Vector3();\n\n\t\t\t}\n\n\t\t\tmin.set( minVal, minVal, minVal );\n\t\t\tmax.set( maxVal, maxVal, maxVal );\n\n\t\t\treturn this.clamp( min, max );\n\n\t\t};\n\n\t}(),\n\n\tclampLength: function ( min, max ) {\n\n\t\tvar length = this.length();\n\n\t\treturn this.multiplyScalar( Math.max( min, Math.min( max, length ) ) / length );\n\n\t},\n\n\tfloor: function () {\n\n\t\tthis.x = Math.floor( this.x );\n\t\tthis.y = Math.floor( this.y );\n\t\tthis.z = Math.floor( this.z );\n\n\t\treturn this;\n\n\t},\n\n\tceil: function () {\n\n\t\tthis.x = Math.ceil( this.x );\n\t\tthis.y = Math.ceil( this.y );\n\t\tthis.z = Math.ceil( this.z );\n\n\t\treturn this;\n\n\t},\n\n\tround: function () {\n\n\t\tthis.x = Math.round( this.x );\n\t\tthis.y = Math.round( this.y );\n\t\tthis.z = Math.round( this.z );\n\n\t\treturn this;\n\n\t},\n\n\troundToZero: function () {\n\n\t\tthis.x = ( this.x < 0 ) ? Math.ceil( this.x ) : Math.floor( this.x );\n\t\tthis.y = ( this.y < 0 ) ? Math.ceil( this.y ) : Math.floor( this.y );\n\t\tthis.z = ( this.z < 0 ) ? Math.ceil( this.z ) : Math.floor( this.z );\n\n\t\treturn this;\n\n\t},\n\n\tnegate: function () {\n\n\t\tthis.x = - this.x;\n\t\tthis.y = - this.y;\n\t\tthis.z = - this.z;\n\n\t\treturn this;\n\n\t},\n\n\tdot: function ( v ) {\n\n\t\treturn this.x * v.x + this.y * v.y + this.z * v.z;\n\n\t},\n\n\tlengthSq: function () {\n\n\t\treturn this.x * this.x + this.y * this.y + this.z * this.z;\n\n\t},\n\n\tlength: function () {\n\n\t\treturn Math.sqrt( this.x * this.x + this.y * this.y + this.z * this.z );\n\n\t},\n\n\tlengthManhattan: function () {\n\n\t\treturn Math.abs( this.x ) + Math.abs( this.y ) + Math.abs( this.z );\n\n\t},\n\n\tnormalize: function () {\n\n\t\treturn this.divideScalar( this.length() );\n\n\t},\n\n\tsetLength: function ( length ) {\n\n\t\treturn this.multiplyScalar( length / this.length() );\n\n\t},\n\n\tlerp: function ( v, alpha ) {\n\n\t\tthis.x += ( v.x - this.x ) * alpha;\n\t\tthis.y += ( v.y - this.y ) * alpha;\n\t\tthis.z += ( v.z - this.z ) * alpha;\n\n\t\treturn this;\n\n\t},\n\n\tlerpVectors: function ( v1, v2, alpha ) {\n\n\t\treturn this.subVectors( v2, v1 ).multiplyScalar( alpha ).add( v1 );\n\n\t},\n\n\tcross: function ( v, w ) {\n\n\t\tif ( w !== undefined ) {\n\n\t\t\tconsole.warn( 'THREE.Vector3: .cross() now only accepts one argument. Use .crossVectors( a, b ) instead.' );\n\t\t\treturn this.crossVectors( v, w );\n\n\t\t}\n\n\t\tvar x = this.x, y = this.y, z = this.z;\n\n\t\tthis.x = y * v.z - z * v.y;\n\t\tthis.y = z * v.x - x * v.z;\n\t\tthis.z = x * v.y - y * v.x;\n\n\t\treturn this;\n\n\t},\n\n\tcrossVectors: function ( a, b ) {\n\n\t\tvar ax = a.x, ay = a.y, az = a.z;\n\t\tvar bx = b.x, by = b.y, bz = b.z;\n\n\t\tthis.x = ay * bz - az * by;\n\t\tthis.y = az * bx - ax * bz;\n\t\tthis.z = ax * by - ay * bx;\n\n\t\treturn this;\n\n\t},\n\n\tprojectOnVector: function ( vector ) {\n\n\t\tvar scalar = vector.dot( this ) / vector.lengthSq();\n\n\t\treturn this.copy( vector ).multiplyScalar( scalar );\n\n\t},\n\n\tprojectOnPlane: function () {\n\n\t\tvar v1;\n\n\t\treturn function projectOnPlane( planeNormal ) {\n\n\t\t\tif ( v1 === undefined ) v1 = new Vector3();\n\n\t\t\tv1.copy( this ).projectOnVector( planeNormal );\n\n\t\t\treturn this.sub( v1 );\n\n\t\t};\n\n\t}(),\n\n\treflect: function () {\n\n\t\t// reflect incident vector off plane orthogonal to normal\n\t\t// normal is assumed to have unit length\n\n\t\tvar v1;\n\n\t\treturn function reflect( normal ) {\n\n\t\t\tif ( v1 === undefined ) v1 = new Vector3();\n\n\t\t\treturn this.sub( v1.copy( normal ).multiplyScalar( 2 * this.dot( normal ) ) );\n\n\t\t};\n\n\t}(),\n\n\tangleTo: function ( v ) {\n\n\t\tvar theta = this.dot( v ) / ( Math.sqrt( this.lengthSq() * v.lengthSq() ) );\n\n\t\t// clamp, to handle numerical problems\n\n\t\treturn Math.acos( _Math.clamp( theta, - 1, 1 ) );\n\n\t},\n\n\tdistanceTo: function ( v ) {\n\n\t\treturn Math.sqrt( this.distanceToSquared( v ) );\n\n\t},\n\n\tdistanceToSquared: function ( v ) {\n\n\t\tvar dx = this.x - v.x, dy = this.y - v.y, dz = this.z - v.z;\n\n\t\treturn dx * dx + dy * dy + dz * dz;\n\n\t},\n\n\tdistanceToManhattan: function ( v ) {\n\n\t\treturn Math.abs( this.x - v.x ) + Math.abs( this.y - v.y ) + Math.abs( this.z - v.z );\n\n\t},\n\n\tsetFromSpherical: function( s ) {\n\n\t\tvar sinPhiRadius = Math.sin( s.phi ) * s.radius;\n\n\t\tthis.x = sinPhiRadius * Math.sin( s.theta );\n\t\tthis.y = Math.cos( s.phi ) * s.radius;\n\t\tthis.z = sinPhiRadius * Math.cos( s.theta );\n\n\t\treturn this;\n\n\t},\n\n\tsetFromMatrixPosition: function ( m ) {\n\n\t\treturn this.setFromMatrixColumn( m, 3 );\n\n\t},\n\n\tsetFromMatrixScale: function ( m ) {\n\n\t\tvar sx = this.setFromMatrixColumn( m, 0 ).length();\n\t\tvar sy = this.setFromMatrixColumn( m, 1 ).length();\n\t\tvar sz = this.setFromMatrixColumn( m, 2 ).length();\n\n\t\tthis.x = sx;\n\t\tthis.y = sy;\n\t\tthis.z = sz;\n\n\t\treturn this;\n\n\t},\n\n\tsetFromMatrixColumn: function ( m, index ) {\n\n\t\tif ( typeof m === 'number' ) {\n\n\t\t\tconsole.warn( 'THREE.Vector3: setFromMatrixColumn now expects ( matrix, index ).' );\n\t\t\tvar temp = m\n\t\t\tm = index;\n\t\t\tindex = temp;\n\n\t\t}\n\n\t\treturn this.fromArray( m.elements, index * 4 );\n\n\t},\n\n\tequals: function ( v ) {\n\n\t\treturn ( ( v.x === this.x ) && ( v.y === this.y ) && ( v.z === this.z ) );\n\n\t},\n\n\tfromArray: function ( array, offset ) {\n\n\t\tif ( offset === undefined ) offset = 0;\n\n\t\tthis.x = array[ offset ];\n\t\tthis.y = array[ offset + 1 ];\n\t\tthis.z = array[ offset + 2 ];\n\n\t\treturn this;\n\n\t},\n\n\ttoArray: function ( array, offset ) {\n\n\t\tif ( array === undefined ) array = [];\n\t\tif ( offset === undefined ) offset = 0;\n\n\t\tarray[ offset ] = this.x;\n\t\tarray[ offset + 1 ] = this.y;\n\t\tarray[ offset + 2 ] = this.z;\n\n\t\treturn array;\n\n\t},\n\n\tfromAttribute: function ( attribute, index, offset ) {\n\n\t\tif ( offset === undefined ) offset = 0;\n\n\t\tindex = index * attribute.itemSize + offset;\n\n\t\tthis.x = attribute.array[ index ];\n\t\tthis.y = attribute.array[ index + 1 ];\n\t\tthis.z = attribute.array[ index + 2 ];\n\n\t\treturn this;\n\n\t}\n\n};\n\n\nexport { Vector3 };\n","import { _Math } from './Math';\nimport { Vector3 } from './Vector3';\n\n/**\n * @author mrdoob / http://mrdoob.com/\n * @author supereggbert / http://www.paulbrunt.co.uk/\n * @author philogb / http://blog.thejit.org/\n * @author jordi_ros / http://plattsoft.com\n * @author D1plo1d / http://github.com/D1plo1d\n * @author alteredq / http://alteredqualia.com/\n * @author mikael emtinger / http://gomo.se/\n * @author timknip / http://www.floorplanner.com/\n * @author bhouston / http://clara.io\n * @author WestLangley / http://github.com/WestLangley\n */\n\nfunction Matrix4() {\n\n\tthis.elements = new Float32Array( [\n\n\t\t1, 0, 0, 0,\n\t\t0, 1, 0, 0,\n\t\t0, 0, 1, 0,\n\t\t0, 0, 0, 1\n\n\t] );\n\n\tif ( arguments.length > 0 ) {\n\n\t\tconsole.error( 'THREE.Matrix4: the constructor no longer reads arguments. use .set() instead.' );\n\n\t}\n\n}\n\nMatrix4.prototype = {\n\n\tconstructor: Matrix4,\n\n\tisMatrix4: true,\n\n\tset: function ( n11, n12, n13, n14, n21, n22, n23, n24, n31, n32, n33, n34, n41, n42, n43, n44 ) {\n\n\t\tvar te = this.elements;\n\n\t\tte[ 0 ] = n11; te[ 4 ] = n12; te[ 8 ] = n13; te[ 12 ] = n14;\n\t\tte[ 1 ] = n21; te[ 5 ] = n22; te[ 9 ] = n23; te[ 13 ] = n24;\n\t\tte[ 2 ] = n31; te[ 6 ] = n32; te[ 10 ] = n33; te[ 14 ] = n34;\n\t\tte[ 3 ] = n41; te[ 7 ] = n42; te[ 11 ] = n43; te[ 15 ] = n44;\n\n\t\treturn this;\n\n\t},\n\n\tidentity: function () {\n\n\t\tthis.set(\n\n\t\t\t1, 0, 0, 0,\n\t\t\t0, 1, 0, 0,\n\t\t\t0, 0, 1, 0,\n\t\t\t0, 0, 0, 1\n\n\t\t);\n\n\t\treturn this;\n\n\t},\n\n\tclone: function () {\n\n\t\treturn new Matrix4().fromArray( this.elements );\n\n\t},\n\n\tcopy: function ( m ) {\n\n\t\tthis.elements.set( m.elements );\n\n\t\treturn this;\n\n\t},\n\n\tcopyPosition: function ( m ) {\n\n\t\tvar te = this.elements;\n\t\tvar me = m.elements;\n\n\t\tte[ 12 ] = me[ 12 ];\n\t\tte[ 13 ] = me[ 13 ];\n\t\tte[ 14 ] = me[ 14 ];\n\n\t\treturn this;\n\n\t},\n\n\textractBasis: function ( xAxis, yAxis, zAxis ) {\n\n\t\txAxis.setFromMatrixColumn( this, 0 );\n\t\tyAxis.setFromMatrixColumn( this, 1 );\n\t\tzAxis.setFromMatrixColumn( this, 2 );\n\n\t\treturn this;\n\n\t},\n\n\tmakeBasis: function ( xAxis, yAxis, zAxis ) {\n\n\t\tthis.set(\n\t\t\txAxis.x, yAxis.x, zAxis.x, 0,\n\t\t\txAxis.y, yAxis.y, zAxis.y, 0,\n\t\t\txAxis.z, yAxis.z, zAxis.z, 0,\n\t\t\t0, 0, 0, 1\n\t\t);\n\n\t\treturn this;\n\n\t},\n\n\textractRotation: function () {\n\n\t\tvar v1;\n\n\t\treturn function extractRotation( m ) {\n\n\t\t\tif ( v1 === undefined ) v1 = new Vector3();\n\n\t\t\tvar te = this.elements;\n\t\t\tvar me = m.elements;\n\n\t\t\tvar scaleX = 1 / v1.setFromMatrixColumn( m, 0 ).length();\n\t\t\tvar scaleY = 1 / v1.setFromMatrixColumn( m, 1 ).length();\n\t\t\tvar scaleZ = 1 / v1.setFromMatrixColumn( m, 2 ).length();\n\n\t\t\tte[ 0 ] = me[ 0 ] * scaleX;\n\t\t\tte[ 1 ] = me[ 1 ] * scaleX;\n\t\t\tte[ 2 ] = me[ 2 ] * scaleX;\n\n\t\t\tte[ 4 ] = me[ 4 ] * scaleY;\n\t\t\tte[ 5 ] = me[ 5 ] * scaleY;\n\t\t\tte[ 6 ] = me[ 6 ] * scaleY;\n\n\t\t\tte[ 8 ] = me[ 8 ] * scaleZ;\n\t\t\tte[ 9 ] = me[ 9 ] * scaleZ;\n\t\t\tte[ 10 ] = me[ 10 ] * scaleZ;\n\n\t\t\treturn this;\n\n\t\t};\n\n\t}(),\n\n\tmakeRotationFromEuler: function ( euler ) {\n\n\t\tif ( (euler && euler.isEuler) === false ) {\n\n\t\t\tconsole.error( 'THREE.Matrix: .makeRotationFromEuler() now expects a Euler rotation rather than a Vector3 and order.' );\n\n\t\t}\n\n\t\tvar te = this.elements;\n\n\t\tvar x = euler.x, y = euler.y, z = euler.z;\n\t\tvar a = Math.cos( x ), b = Math.sin( x );\n\t\tvar c = Math.cos( y ), d = Math.sin( y );\n\t\tvar e = Math.cos( z ), f = Math.sin( z );\n\n\t\tif ( euler.order === 'XYZ' ) {\n\n\t\t\tvar ae = a * e, af = a * f, be = b * e, bf = b * f;\n\n\t\t\tte[ 0 ] = c * e;\n\t\t\tte[ 4 ] = - c * f;\n\t\t\tte[ 8 ] = d;\n\n\t\t\tte[ 1 ] = af + be * d;\n\t\t\tte[ 5 ] = ae - bf * d;\n\t\t\tte[ 9 ] = - b * c;\n\n\t\t\tte[ 2 ] = bf - ae * d;\n\t\t\tte[ 6 ] = be + af * d;\n\t\t\tte[ 10 ] = a * c;\n\n\t\t} else if ( euler.order === 'YXZ' ) {\n\n\t\t\tvar ce = c * e, cf = c * f, de = d * e, df = d * f;\n\n\t\t\tte[ 0 ] = ce + df * b;\n\t\t\tte[ 4 ] = de * b - cf;\n\t\t\tte[ 8 ] = a * d;\n\n\t\t\tte[ 1 ] = a * f;\n\t\t\tte[ 5 ] = a * e;\n\t\t\tte[ 9 ] = - b;\n\n\t\t\tte[ 2 ] = cf * b - de;\n\t\t\tte[ 6 ] = df + ce * b;\n\t\t\tte[ 10 ] = a * c;\n\n\t\t} else if ( euler.order === 'ZXY' ) {\n\n\t\t\tvar ce = c * e, cf = c * f, de = d * e, df = d * f;\n\n\t\t\tte[ 0 ] = ce - df * b;\n\t\t\tte[ 4 ] = - a * f;\n\t\t\tte[ 8 ] = de + cf * b;\n\n\t\t\tte[ 1 ] = cf + de * b;\n\t\t\tte[ 5 ] = a * e;\n\t\t\tte[ 9 ] = df - ce * b;\n\n\t\t\tte[ 2 ] = - a * d;\n\t\t\tte[ 6 ] = b;\n\t\t\tte[ 10 ] = a * c;\n\n\t\t} else if ( euler.order === 'ZYX' ) {\n\n\t\t\tvar ae = a * e, af = a * f, be = b * e, bf = b * f;\n\n\t\t\tte[ 0 ] = c * e;\n\t\t\tte[ 4 ] = be * d - af;\n\t\t\tte[ 8 ] = ae * d + bf;\n\n\t\t\tte[ 1 ] = c * f;\n\t\t\tte[ 5 ] = bf * d + ae;\n\t\t\tte[ 9 ] = af * d - be;\n\n\t\t\tte[ 2 ] = - d;\n\t\t\tte[ 6 ] = b * c;\n\t\t\tte[ 10 ] = a * c;\n\n\t\t} else if ( euler.order === 'YZX' ) {\n\n\t\t\tvar ac = a * c, ad = a * d, bc = b * c, bd = b * d;\n\n\t\t\tte[ 0 ] = c * e;\n\t\t\tte[ 4 ] = bd - ac * f;\n\t\t\tte[ 8 ] = bc * f + ad;\n\n\t\t\tte[ 1 ] = f;\n\t\t\tte[ 5 ] = a * e;\n\t\t\tte[ 9 ] = - b * e;\n\n\t\t\tte[ 2 ] = - d * e;\n\t\t\tte[ 6 ] = ad * f + bc;\n\t\t\tte[ 10 ] = ac - bd * f;\n\n\t\t} else if ( euler.order === 'XZY' ) {\n\n\t\t\tvar ac = a * c, ad = a * d, bc = b * c, bd = b * d;\n\n\t\t\tte[ 0 ] = c * e;\n\t\t\tte[ 4 ] = - f;\n\t\t\tte[ 8 ] = d * e;\n\n\t\t\tte[ 1 ] = ac * f + bd;\n\t\t\tte[ 5 ] = a * e;\n\t\t\tte[ 9 ] = ad * f - bc;\n\n\t\t\tte[ 2 ] = bc * f - ad;\n\t\t\tte[ 6 ] = b * e;\n\t\t\tte[ 10 ] = bd * f + ac;\n\n\t\t}\n\n\t\t// last column\n\t\tte[ 3 ] = 0;\n\t\tte[ 7 ] = 0;\n\t\tte[ 11 ] = 0;\n\n\t\t// bottom row\n\t\tte[ 12 ] = 0;\n\t\tte[ 13 ] = 0;\n\t\tte[ 14 ] = 0;\n\t\tte[ 15 ] = 1;\n\n\t\treturn this;\n\n\t},\n\n\tmakeRotationFromQuaternion: function ( q ) {\n\n\t\tvar te = this.elements;\n\n\t\tvar x = q.x, y = q.y, z = q.z, w = q.w;\n\t\tvar x2 = x + x, y2 = y + y, z2 = z + z;\n\t\tvar xx = x * x2, xy = x * y2, xz = x * z2;\n\t\tvar yy = y * y2, yz = y * z2, zz = z * z2;\n\t\tvar wx = w * x2, wy = w * y2, wz = w * z2;\n\n\t\tte[ 0 ] = 1 - ( yy + zz );\n\t\tte[ 4 ] = xy - wz;\n\t\tte[ 8 ] = xz + wy;\n\n\t\tte[ 1 ] = xy + wz;\n\t\tte[ 5 ] = 1 - ( xx + zz );\n\t\tte[ 9 ] = yz - wx;\n\n\t\tte[ 2 ] = xz - wy;\n\t\tte[ 6 ] = yz + wx;\n\t\tte[ 10 ] = 1 - ( xx + yy );\n\n\t\t// last column\n\t\tte[ 3 ] = 0;\n\t\tte[ 7 ] = 0;\n\t\tte[ 11 ] = 0;\n\n\t\t// bottom row\n\t\tte[ 12 ] = 0;\n\t\tte[ 13 ] = 0;\n\t\tte[ 14 ] = 0;\n\t\tte[ 15 ] = 1;\n\n\t\treturn this;\n\n\t},\n\n\tlookAt: function () {\n\n\t\tvar x, y, z;\n\n\t\treturn function lookAt( eye, target, up ) {\n\n\t\t\tif ( x === undefined ) {\n\n\t\t\t\tx = new Vector3();\n\t\t\t\ty = new Vector3();\n\t\t\t\tz = new Vector3();\n\n\t\t\t}\n\n\t\t\tvar te = this.elements;\n\n\t\t\tz.subVectors( eye, target ).normalize();\n\n\t\t\tif ( z.lengthSq() === 0 ) {\n\n\t\t\t\tz.z = 1;\n\n\t\t\t}\n\n\t\t\tx.crossVectors( up, z ).normalize();\n\n\t\t\tif ( x.lengthSq() === 0 ) {\n\n\t\t\t\tz.z += 0.0001;\n\t\t\t\tx.crossVectors( up, z ).normalize();\n\n\t\t\t}\n\n\t\t\ty.crossVectors( z, x );\n\n\n\t\t\tte[ 0 ] = x.x; te[ 4 ] = y.x; te[ 8 ] = z.x;\n\t\t\tte[ 1 ] = x.y; te[ 5 ] = y.y; te[ 9 ] = z.y;\n\t\t\tte[ 2 ] = x.z; te[ 6 ] = y.z; te[ 10 ] = z.z;\n\n\t\t\treturn this;\n\n\t\t};\n\n\t}(),\n\n\tmultiply: function ( m, n ) {\n\n\t\tif ( n !== undefined ) {\n\n\t\t\tconsole.warn( 'THREE.Matrix4: .multiply() now only accepts one argument. Use .multiplyMatrices( a, b ) instead.' );\n\t\t\treturn this.multiplyMatrices( m, n );\n\n\t\t}\n\n\t\treturn this.multiplyMatrices( this, m );\n\n\t},\n\n\tpremultiply: function ( m ) {\n\n\t\treturn this.multiplyMatrices( m, this );\n\n\t},\n\n\tmultiplyMatrices: function ( a, b ) {\n\n\t\tvar ae = a.elements;\n\t\tvar be = b.elements;\n\t\tvar te = this.elements;\n\n\t\tvar a11 = ae[ 0 ], a12 = ae[ 4 ], a13 = ae[ 8 ], a14 = ae[ 12 ];\n\t\tvar a21 = ae[ 1 ], a22 = ae[ 5 ], a23 = ae[ 9 ], a24 = ae[ 13 ];\n\t\tvar a31 = ae[ 2 ], a32 = ae[ 6 ], a33 = ae[ 10 ], a34 = ae[ 14 ];\n\t\tvar a41 = ae[ 3 ], a42 = ae[ 7 ], a43 = ae[ 11 ], a44 = ae[ 15 ];\n\n\t\tvar b11 = be[ 0 ], b12 = be[ 4 ], b13 = be[ 8 ], b14 = be[ 12 ];\n\t\tvar b21 = be[ 1 ], b22 = be[ 5 ], b23 = be[ 9 ], b24 = be[ 13 ];\n\t\tvar b31 = be[ 2 ], b32 = be[ 6 ], b33 = be[ 10 ], b34 = be[ 14 ];\n\t\tvar b41 = be[ 3 ], b42 = be[ 7 ], b43 = be[ 11 ], b44 = be[ 15 ];\n\n\t\tte[ 0 ] = a11 * b11 + a12 * b21 + a13 * b31 + a14 * b41;\n\t\tte[ 4 ] = a11 * b12 + a12 * b22 + a13 * b32 + a14 * b42;\n\t\tte[ 8 ] = a11 * b13 + a12 * b23 + a13 * b33 + a14 * b43;\n\t\tte[ 12 ] = a11 * b14 + a12 * b24 + a13 * b34 + a14 * b44;\n\n\t\tte[ 1 ] = a21 * b11 + a22 * b21 + a23 * b31 + a24 * b41;\n\t\tte[ 5 ] = a21 * b12 + a22 * b22 + a23 * b32 + a24 * b42;\n\t\tte[ 9 ] = a21 * b13 + a22 * b23 + a23 * b33 + a24 * b43;\n\t\tte[ 13 ] = a21 * b14 + a22 * b24 + a23 * b34 + a24 * b44;\n\n\t\tte[ 2 ] = a31 * b11 + a32 * b21 + a33 * b31 + a34 * b41;\n\t\tte[ 6 ] = a31 * b12 + a32 * b22 + a33 * b32 + a34 * b42;\n\t\tte[ 10 ] = a31 * b13 + a32 * b23 + a33 * b33 + a34 * b43;\n\t\tte[ 14 ] = a31 * b14 + a32 * b24 + a33 * b34 + a34 * b44;\n\n\t\tte[ 3 ] = a41 * b11 + a42 * b21 + a43 * b31 + a44 * b41;\n\t\tte[ 7 ] = a41 * b12 + a42 * b22 + a43 * b32 + a44 * b42;\n\t\tte[ 11 ] = a41 * b13 + a42 * b23 + a43 * b33 + a44 * b43;\n\t\tte[ 15 ] = a41 * b14 + a42 * b24 + a43 * b34 + a44 * b44;\n\n\t\treturn this;\n\n\t},\n\n\tmultiplyToArray: function ( a, b, r ) {\n\n\t\tvar te = this.elements;\n\n\t\tthis.multiplyMatrices( a, b );\n\n\t\tr[ 0 ] = te[ 0 ]; r[ 1 ] = te[ 1 ]; r[ 2 ] = te[ 2 ]; r[ 3 ] = te[ 3 ];\n\t\tr[ 4 ] = te[ 4 ]; r[ 5 ] = te[ 5 ]; r[ 6 ] = te[ 6 ]; r[ 7 ] = te[ 7 ];\n\t\tr[ 8 ] = te[ 8 ]; r[ 9 ] = te[ 9 ]; r[ 10 ] = te[ 10 ]; r[ 11 ] = te[ 11 ];\n\t\tr[ 12 ] = te[ 12 ]; r[ 13 ] = te[ 13 ]; r[ 14 ] = te[ 14 ]; r[ 15 ] = te[ 15 ];\n\n\t\treturn this;\n\n\t},\n\n\tmultiplyScalar: function ( s ) {\n\n\t\tvar te = this.elements;\n\n\t\tte[ 0 ] *= s; te[ 4 ] *= s; te[ 8 ] *= s; te[ 12 ] *= s;\n\t\tte[ 1 ] *= s; te[ 5 ] *= s; te[ 9 ] *= s; te[ 13 ] *= s;\n\t\tte[ 2 ] *= s; te[ 6 ] *= s; te[ 10 ] *= s; te[ 14 ] *= s;\n\t\tte[ 3 ] *= s; te[ 7 ] *= s; te[ 11 ] *= s; te[ 15 ] *= s;\n\n\t\treturn this;\n\n\t},\n\n\tapplyToVector3Array: function () {\n\n\t\tvar v1;\n\n\t\treturn function applyToVector3Array( array, offset, length ) {\n\n\t\t\tif ( v1 === undefined ) v1 = new Vector3();\n\t\t\tif ( offset === undefined ) offset = 0;\n\t\t\tif ( length === undefined ) length = array.length;\n\n\t\t\tfor ( var i = 0, j = offset; i < length; i += 3, j += 3 ) {\n\n\t\t\t\tv1.fromArray( array, j );\n\t\t\t\tv1.applyMatrix4( this );\n\t\t\t\tv1.toArray( array, j );\n\n\t\t\t}\n\n\t\t\treturn array;\n\n\t\t};\n\n\t}(),\n\n\tapplyToBuffer: function () {\n\n\t\tvar v1;\n\n\t\treturn function applyToBuffer( buffer, offset, length ) {\n\n\t\t\tif ( v1 === undefined ) v1 = new Vector3();\n\t\t\tif ( offset === undefined ) offset = 0;\n\t\t\tif ( length === undefined ) length = buffer.length / buffer.itemSize;\n\n\t\t\tfor ( var i = 0, j = offset; i < length; i ++, j ++ ) {\n\n\t\t\t\tv1.x = buffer.getX( j );\n\t\t\t\tv1.y = buffer.getY( j );\n\t\t\t\tv1.z = buffer.getZ( j );\n\n\t\t\t\tv1.applyMatrix4( this );\n\n\t\t\t\tbuffer.setXYZ( j, v1.x, v1.y, v1.z );\n\n\t\t\t}\n\n\t\t\treturn buffer;\n\n\t\t};\n\n\t}(),\n\n\tdeterminant: function () {\n\n\t\tvar te = this.elements;\n\n\t\tvar n11 = te[ 0 ], n12 = te[ 4 ], n13 = te[ 8 ], n14 = te[ 12 ];\n\t\tvar n21 = te[ 1 ], n22 = te[ 5 ], n23 = te[ 9 ], n24 = te[ 13 ];\n\t\tvar n31 = te[ 2 ], n32 = te[ 6 ], n33 = te[ 10 ], n34 = te[ 14 ];\n\t\tvar n41 = te[ 3 ], n42 = te[ 7 ], n43 = te[ 11 ], n44 = te[ 15 ];\n\n\t\t//TODO: make this more efficient\n\t\t//( based on http://www.euclideanspace.com/maths/algebra/matrix/functions/inverse/fourD/index.htm )\n\n\t\treturn (\n\t\t\tn41 * (\n\t\t\t\t+ n14 * n23 * n32\n\t\t\t\t - n13 * n24 * n32\n\t\t\t\t - n14 * n22 * n33\n\t\t\t\t + n12 * n24 * n33\n\t\t\t\t + n13 * n22 * n34\n\t\t\t\t - n12 * n23 * n34\n\t\t\t) +\n\t\t\tn42 * (\n\t\t\t\t+ n11 * n23 * n34\n\t\t\t\t - n11 * n24 * n33\n\t\t\t\t + n14 * n21 * n33\n\t\t\t\t - n13 * n21 * n34\n\t\t\t\t + n13 * n24 * n31\n\t\t\t\t - n14 * n23 * n31\n\t\t\t) +\n\t\t\tn43 * (\n\t\t\t\t+ n11 * n24 * n32\n\t\t\t\t - n11 * n22 * n34\n\t\t\t\t - n14 * n21 * n32\n\t\t\t\t + n12 * n21 * n34\n\t\t\t\t + n14 * n22 * n31\n\t\t\t\t - n12 * n24 * n31\n\t\t\t) +\n\t\t\tn44 * (\n\t\t\t\t- n13 * n22 * n31\n\t\t\t\t - n11 * n23 * n32\n\t\t\t\t + n11 * n22 * n33\n\t\t\t\t + n13 * n21 * n32\n\t\t\t\t - n12 * n21 * n33\n\t\t\t\t + n12 * n23 * n31\n\t\t\t)\n\n\t\t);\n\n\t},\n\n\ttranspose: function () {\n\n\t\tvar te = this.elements;\n\t\tvar tmp;\n\n\t\ttmp = te[ 1 ]; te[ 1 ] = te[ 4 ]; te[ 4 ] = tmp;\n\t\ttmp = te[ 2 ]; te[ 2 ] = te[ 8 ]; te[ 8 ] = tmp;\n\t\ttmp = te[ 6 ]; te[ 6 ] = te[ 9 ]; te[ 9 ] = tmp;\n\n\t\ttmp = te[ 3 ]; te[ 3 ] = te[ 12 ]; te[ 12 ] = tmp;\n\t\ttmp = te[ 7 ]; te[ 7 ] = te[ 13 ]; te[ 13 ] = tmp;\n\t\ttmp = te[ 11 ]; te[ 11 ] = te[ 14 ]; te[ 14 ] = tmp;\n\n\t\treturn this;\n\n\t},\n\n\tflattenToArrayOffset: function ( array, offset ) {\n\n\t\tconsole.warn( \"THREE.Matrix3: .flattenToArrayOffset is deprecated \" +\n\t\t\t\t\"- just use .toArray instead.\" );\n\n\t\treturn this.toArray( array, offset );\n\n\t},\n\n\tgetPosition: function () {\n\n\t\tvar v1;\n\n\t\treturn function getPosition() {\n\n\t\t\tif ( v1 === undefined ) v1 = new Vector3();\n\t\t\tconsole.warn( 'THREE.Matrix4: .getPosition() has been removed. Use Vector3.setFromMatrixPosition( matrix ) instead.' );\n\n\t\t\treturn v1.setFromMatrixColumn( this, 3 );\n\n\t\t};\n\n\t}(),\n\n\tsetPosition: function ( v ) {\n\n\t\tvar te = this.elements;\n\n\t\tte[ 12 ] = v.x;\n\t\tte[ 13 ] = v.y;\n\t\tte[ 14 ] = v.z;\n\n\t\treturn this;\n\n\t},\n\n\tgetInverse: function ( m, throwOnDegenerate ) {\n\n\t\t// based on http://www.euclideanspace.com/maths/algebra/matrix/functions/inverse/fourD/index.htm\n\t\tvar te = this.elements,\n\t\t\tme = m.elements,\n\n\t\t\tn11 = me[ 0 ], n21 = me[ 1 ], n31 = me[ 2 ], n41 = me[ 3 ],\n\t\t\tn12 = me[ 4 ], n22 = me[ 5 ], n32 = me[ 6 ], n42 = me[ 7 ],\n\t\t\tn13 = me[ 8 ], n23 = me[ 9 ], n33 = me[ 10 ], n43 = me[ 11 ],\n\t\t\tn14 = me[ 12 ], n24 = me[ 13 ], n34 = me[ 14 ], n44 = me[ 15 ],\n\n\t\t\tt11 = n23 * n34 * n42 - n24 * n33 * n42 + n24 * n32 * n43 - n22 * n34 * n43 - n23 * n32 * n44 + n22 * n33 * n44,\n\t\t\tt12 = n14 * n33 * n42 - n13 * n34 * n42 - n14 * n32 * n43 + n12 * n34 * n43 + n13 * n32 * n44 - n12 * n33 * n44,\n\t\t\tt13 = n13 * n24 * n42 - n14 * n23 * n42 + n14 * n22 * n43 - n12 * n24 * n43 - n13 * n22 * n44 + n12 * n23 * n44,\n\t\t\tt14 = n14 * n23 * n32 - n13 * n24 * n32 - n14 * n22 * n33 + n12 * n24 * n33 + n13 * n22 * n34 - n12 * n23 * n34;\n\n\t\tvar det = n11 * t11 + n21 * t12 + n31 * t13 + n41 * t14;\n\n\t\tif ( det === 0 ) {\n\n\t\t\tvar msg = \"THREE.Matrix4.getInverse(): can't invert matrix, determinant is 0\";\n\n\t\t\tif ( throwOnDegenerate === true ) {\n\n\t\t\t\tthrow new Error( msg );\n\n\t\t\t} else {\n\n\t\t\t\tconsole.warn( msg );\n\n\t\t\t}\n\n\t\t\treturn this.identity();\n\n\t\t}\n\n\t\tvar detInv = 1 / det;\n\n\t\tte[ 0 ] = t11 * detInv;\n\t\tte[ 1 ] = ( n24 * n33 * n41 - n23 * n34 * n41 - n24 * n31 * n43 + n21 * n34 * n43 + n23 * n31 * n44 - n21 * n33 * n44 ) * detInv;\n\t\tte[ 2 ] = ( n22 * n34 * n41 - n24 * n32 * n41 + n24 * n31 * n42 - n21 * n34 * n42 - n22 * n31 * n44 + n21 * n32 * n44 ) * detInv;\n\t\tte[ 3 ] = ( n23 * n32 * n41 - n22 * n33 * n41 - n23 * n31 * n42 + n21 * n33 * n42 + n22 * n31 * n43 - n21 * n32 * n43 ) * detInv;\n\n\t\tte[ 4 ] = t12 * detInv;\n\t\tte[ 5 ] = ( n13 * n34 * n41 - n14 * n33 * n41 + n14 * n31 * n43 - n11 * n34 * n43 - n13 * n31 * n44 + n11 * n33 * n44 ) * detInv;\n\t\tte[ 6 ] = ( n14 * n32 * n41 - n12 * n34 * n41 - n14 * n31 * n42 + n11 * n34 * n42 + n12 * n31 * n44 - n11 * n32 * n44 ) * detInv;\n\t\tte[ 7 ] = ( n12 * n33 * n41 - n13 * n32 * n41 + n13 * n31 * n42 - n11 * n33 * n42 - n12 * n31 * n43 + n11 * n32 * n43 ) * detInv;\n\n\t\tte[ 8 ] = t13 * detInv;\n\t\tte[ 9 ] = ( n14 * n23 * n41 - n13 * n24 * n41 - n14 * n21 * n43 + n11 * n24 * n43 + n13 * n21 * n44 - n11 * n23 * n44 ) * detInv;\n\t\tte[ 10 ] = ( n12 * n24 * n41 - n14 * n22 * n41 + n14 * n21 * n42 - n11 * n24 * n42 - n12 * n21 * n44 + n11 * n22 * n44 ) * detInv;\n\t\tte[ 11 ] = ( n13 * n22 * n41 - n12 * n23 * n41 - n13 * n21 * n42 + n11 * n23 * n42 + n12 * n21 * n43 - n11 * n22 * n43 ) * detInv;\n\n\t\tte[ 12 ] = t14 * detInv;\n\t\tte[ 13 ] = ( n13 * n24 * n31 - n14 * n23 * n31 + n14 * n21 * n33 - n11 * n24 * n33 - n13 * n21 * n34 + n11 * n23 * n34 ) * detInv;\n\t\tte[ 14 ] = ( n14 * n22 * n31 - n12 * n24 * n31 - n14 * n21 * n32 + n11 * n24 * n32 + n12 * n21 * n34 - n11 * n22 * n34 ) * detInv;\n\t\tte[ 15 ] = ( n12 * n23 * n31 - n13 * n22 * n31 + n13 * n21 * n32 - n11 * n23 * n32 - n12 * n21 * n33 + n11 * n22 * n33 ) * detInv;\n\n\t\treturn this;\n\n\t},\n\n\tscale: function ( v ) {\n\n\t\tvar te = this.elements;\n\t\tvar x = v.x, y = v.y, z = v.z;\n\n\t\tte[ 0 ] *= x; te[ 4 ] *= y; te[ 8 ] *= z;\n\t\tte[ 1 ] *= x; te[ 5 ] *= y; te[ 9 ] *= z;\n\t\tte[ 2 ] *= x; te[ 6 ] *= y; te[ 10 ] *= z;\n\t\tte[ 3 ] *= x; te[ 7 ] *= y; te[ 11 ] *= z;\n\n\t\treturn this;\n\n\t},\n\n\tgetMaxScaleOnAxis: function () {\n\n\t\tvar te = this.elements;\n\n\t\tvar scaleXSq = te[ 0 ] * te[ 0 ] + te[ 1 ] * te[ 1 ] + te[ 2 ] * te[ 2 ];\n\t\tvar scaleYSq = te[ 4 ] * te[ 4 ] + te[ 5 ] * te[ 5 ] + te[ 6 ] * te[ 6 ];\n\t\tvar scaleZSq = te[ 8 ] * te[ 8 ] + te[ 9 ] * te[ 9 ] + te[ 10 ] * te[ 10 ];\n\n\t\treturn Math.sqrt( Math.max( scaleXSq, scaleYSq, scaleZSq ) );\n\n\t},\n\n\tmakeTranslation: function ( x, y, z ) {\n\n\t\tthis.set(\n\n\t\t\t1, 0, 0, x,\n\t\t\t0, 1, 0, y,\n\t\t\t0, 0, 1, z,\n\t\t\t0, 0, 0, 1\n\n\t\t);\n\n\t\treturn this;\n\n\t},\n\n\tmakeRotationX: function ( theta ) {\n\n\t\tvar c = Math.cos( theta ), s = Math.sin( theta );\n\n\t\tthis.set(\n\n\t\t\t1, 0, 0, 0,\n\t\t\t0, c, - s, 0,\n\t\t\t0, s, c, 0,\n\t\t\t0, 0, 0, 1\n\n\t\t);\n\n\t\treturn this;\n\n\t},\n\n\tmakeRotationY: function ( theta ) {\n\n\t\tvar c = Math.cos( theta ), s = Math.sin( theta );\n\n\t\tthis.set(\n\n\t\t\t c, 0, s, 0,\n\t\t\t 0, 1, 0, 0,\n\t\t\t- s, 0, c, 0,\n\t\t\t 0, 0, 0, 1\n\n\t\t);\n\n\t\treturn this;\n\n\t},\n\n\tmakeRotationZ: function ( theta ) {\n\n\t\tvar c = Math.cos( theta ), s = Math.sin( theta );\n\n\t\tthis.set(\n\n\t\t\tc, - s, 0, 0,\n\t\t\ts, c, 0, 0,\n\t\t\t0, 0, 1, 0,\n\t\t\t0, 0, 0, 1\n\n\t\t);\n\n\t\treturn this;\n\n\t},\n\n\tmakeRotationAxis: function ( axis, angle ) {\n\n\t\t// Based on http://www.gamedev.net/reference/articles/article1199.asp\n\n\t\tvar c = Math.cos( angle );\n\t\tvar s = Math.sin( angle );\n\t\tvar t = 1 - c;\n\t\tvar x = axis.x, y = axis.y, z = axis.z;\n\t\tvar tx = t * x, ty = t * y;\n\n\t\tthis.set(\n\n\t\t\ttx * x + c, tx * y - s * z, tx * z + s * y, 0,\n\t\t\ttx * y + s * z, ty * y + c, ty * z - s * x, 0,\n\t\t\ttx * z - s * y, ty * z + s * x, t * z * z + c, 0,\n\t\t\t0, 0, 0, 1\n\n\t\t);\n\n\t\t return this;\n\n\t},\n\n\tmakeScale: function ( x, y, z ) {\n\n\t\tthis.set(\n\n\t\t\tx, 0, 0, 0,\n\t\t\t0, y, 0, 0,\n\t\t\t0, 0, z, 0,\n\t\t\t0, 0, 0, 1\n\n\t\t);\n\n\t\treturn this;\n\n\t},\n\n\tcompose: function ( position, quaternion, scale ) {\n\n\t\tthis.makeRotationFromQuaternion( quaternion );\n\t\tthis.scale( scale );\n\t\tthis.setPosition( position );\n\n\t\treturn this;\n\n\t},\n\n\tdecompose: function () {\n\n\t\tvar vector, matrix;\n\n\t\treturn function decompose( position, quaternion, scale ) {\n\n\t\t\tif ( vector === undefined ) {\n\n\t\t\t\tvector = new Vector3();\n\t\t\t\tmatrix = new Matrix4();\n\n\t\t\t}\n\n\t\t\tvar te = this.elements;\n\n\t\t\tvar sx = vector.set( te[ 0 ], te[ 1 ], te[ 2 ] ).length();\n\t\t\tvar sy = vector.set( te[ 4 ], te[ 5 ], te[ 6 ] ).length();\n\t\t\tvar sz = vector.set( te[ 8 ], te[ 9 ], te[ 10 ] ).length();\n\n\t\t\t// if determine is negative, we need to invert one scale\n\t\t\tvar det = this.determinant();\n\t\t\tif ( det < 0 ) {\n\n\t\t\t\tsx = - sx;\n\n\t\t\t}\n\n\t\t\tposition.x = te[ 12 ];\n\t\t\tposition.y = te[ 13 ];\n\t\t\tposition.z = te[ 14 ];\n\n\t\t\t// scale the rotation part\n\n\t\t\tmatrix.elements.set( this.elements ); // at this point matrix is incomplete so we can't use .copy()\n\n\t\t\tvar invSX = 1 / sx;\n\t\t\tvar invSY = 1 / sy;\n\t\t\tvar invSZ = 1 / sz;\n\n\t\t\tmatrix.elements[ 0 ] *= invSX;\n\t\t\tmatrix.elements[ 1 ] *= invSX;\n\t\t\tmatrix.elements[ 2 ] *= invSX;\n\n\t\t\tmatrix.elements[ 4 ] *= invSY;\n\t\t\tmatrix.elements[ 5 ] *= invSY;\n\t\t\tmatrix.elements[ 6 ] *= invSY;\n\n\t\t\tmatrix.elements[ 8 ] *= invSZ;\n\t\t\tmatrix.elements[ 9 ] *= invSZ;\n\t\t\tmatrix.elements[ 10 ] *= invSZ;\n\n\t\t\tquaternion.setFromRotationMatrix( matrix );\n\n\t\t\tscale.x = sx;\n\t\t\tscale.y = sy;\n\t\t\tscale.z = sz;\n\n\t\t\treturn this;\n\n\t\t};\n\n\t}(),\n\n\tmakeFrustum: function ( left, right, bottom, top, near, far ) {\n\n\t\tvar te = this.elements;\n\t\tvar x = 2 * near / ( right - left );\n\t\tvar y = 2 * near / ( top - bottom );\n\n\t\tvar a = ( right + left ) / ( right - left );\n\t\tvar b = ( top + bottom ) / ( top - bottom );\n\t\tvar c = - ( far + near ) / ( far - near );\n\t\tvar d = - 2 * far * near / ( far - near );\n\n\t\tte[ 0 ] = x;\tte[ 4 ] = 0;\tte[ 8 ] = a;\tte[ 12 ] = 0;\n\t\tte[ 1 ] = 0;\tte[ 5 ] = y;\tte[ 9 ] = b;\tte[ 13 ] = 0;\n\t\tte[ 2 ] = 0;\tte[ 6 ] = 0;\tte[ 10 ] = c;\tte[ 14 ] = d;\n\t\tte[ 3 ] = 0;\tte[ 7 ] = 0;\tte[ 11 ] = - 1;\tte[ 15 ] = 0;\n\n\t\treturn this;\n\n\t},\n\n\tmakePerspective: function ( fov, aspect, near, far ) {\n\n\t\tvar ymax = near * Math.tan( _Math.DEG2RAD * fov * 0.5 );\n\t\tvar ymin = - ymax;\n\t\tvar xmin = ymin * aspect;\n\t\tvar xmax = ymax * aspect;\n\n\t\treturn this.makeFrustum( xmin, xmax, ymin, ymax, near, far );\n\n\t},\n\n\tmakeOrthographic: function ( left, right, top, bottom, near, far ) {\n\n\t\tvar te = this.elements;\n\t\tvar w = 1.0 / ( right - left );\n\t\tvar h = 1.0 / ( top - bottom );\n\t\tvar p = 1.0 / ( far - near );\n\n\t\tvar x = ( right + left ) * w;\n\t\tvar y = ( top + bottom ) * h;\n\t\tvar z = ( far + near ) * p;\n\n\t\tte[ 0 ] = 2 * w;\tte[ 4 ] = 0;\tte[ 8 ] = 0;\tte[ 12 ] = - x;\n\t\tte[ 1 ] = 0;\tte[ 5 ] = 2 * h;\tte[ 9 ] = 0;\tte[ 13 ] = - y;\n\t\tte[ 2 ] = 0;\tte[ 6 ] = 0;\tte[ 10 ] = - 2 * p;\tte[ 14 ] = - z;\n\t\tte[ 3 ] = 0;\tte[ 7 ] = 0;\tte[ 11 ] = 0;\tte[ 15 ] = 1;\n\n\t\treturn this;\n\n\t},\n\n\tequals: function ( matrix ) {\n\n\t\tvar te = this.elements;\n\t\tvar me = matrix.elements;\n\n\t\tfor ( var i = 0; i < 16; i ++ ) {\n\n\t\t\tif ( te[ i ] !== me[ i ] ) return false;\n\n\t\t}\n\n\t\treturn true;\n\n\t},\n\n\tfromArray: function ( array, offset ) {\n\n\t\tif ( offset === undefined ) offset = 0;\n\n\t\tfor( var i = 0; i < 16; i ++ ) {\n\n\t\t\tthis.elements[ i ] = array[ i + offset ];\n\n\t\t}\n\n\t\treturn this;\n\n\t},\n\n\ttoArray: function ( array, offset ) {\n\n\t\tif ( array === undefined ) array = [];\n\t\tif ( offset === undefined ) offset = 0;\n\n\t\tvar te = this.elements;\n\n\t\tarray[ offset ] = te[ 0 ];\n\t\tarray[ offset + 1 ] = te[ 1 ];\n\t\tarray[ offset + 2 ] = te[ 2 ];\n\t\tarray[ offset + 3 ] = te[ 3 ];\n\n\t\tarray[ offset + 4 ] = te[ 4 ];\n\t\tarray[ offset + 5 ] = te[ 5 ];\n\t\tarray[ offset + 6 ] = te[ 6 ];\n\t\tarray[ offset + 7 ] = te[ 7 ];\n\n\t\tarray[ offset + 8 ] = te[ 8 ];\n\t\tarray[ offset + 9 ] = te[ 9 ];\n\t\tarray[ offset + 10 ] = te[ 10 ];\n\t\tarray[ offset + 11 ] = te[ 11 ];\n\n\t\tarray[ offset + 12 ] = te[ 12 ];\n\t\tarray[ offset + 13 ] = te[ 13 ];\n\t\tarray[ offset + 14 ] = te[ 14 ];\n\t\tarray[ offset + 15 ] = te[ 15 ];\n\n\t\treturn array;\n\n\t}\n\n};\n\n\nexport { Matrix4 };\n","import { Texture } from './Texture';\nimport { CubeReflectionMapping } from '../constants';\n\n/**\n * @author mrdoob / http://mrdoob.com/\n */\n\nfunction CubeTexture( images, mapping, wrapS, wrapT, magFilter, minFilter, format, type, anisotropy, encoding ) {\n\n\timages = images !== undefined ? images : [];\n\tmapping = mapping !== undefined ? mapping : CubeReflectionMapping;\n\n\tTexture.call( this, images, mapping, wrapS, wrapT, magFilter, minFilter, format, type, anisotropy, encoding );\n\n\tthis.flipY = false;\n\n}\n\nCubeTexture.prototype = Object.create( Texture.prototype );\nCubeTexture.prototype.constructor = CubeTexture;\n\nCubeTexture.prototype.isCubeTexture = true;\n\nObject.defineProperty( CubeTexture.prototype, 'images', {\n\n\tget: function () {\n\n\t\treturn this.image;\n\n\t},\n\n\tset: function ( value ) {\n\n\t\tthis.image = value;\n\n\t}\n\n} );\n\n\nexport { CubeTexture };\n","/**\n * @author tschw\n *\n * Uniforms of a program.\n * Those form a tree structure with a special top-level container for the root,\n * which you get by calling 'new WebGLUniforms( gl, program, renderer )'.\n *\n *\n * Properties of inner nodes including the top-level container:\n *\n * .seq - array of nested uniforms\n * .map - nested uniforms by name\n *\n *\n * Methods of all nodes except the top-level container:\n *\n * .setValue( gl, value, [renderer] )\n *\n * \t\tuploads a uniform value(s)\n * \tthe 'renderer' parameter is needed for sampler uniforms\n *\n *\n * Static methods of the top-level container (renderer factorizations):\n *\n * .upload( gl, seq, values, renderer )\n *\n * \t\tsets uniforms in 'seq' to 'values[id].value'\n *\n * .seqWithValue( seq, values ) : filteredSeq\n *\n * \t\tfilters 'seq' entries with corresponding entry in values\n *\n *\n * Methods of the top-level container (renderer factorizations):\n *\n * .setValue( gl, name, value )\n *\n * \t\tsets uniform with name 'name' to 'value'\n *\n * .set( gl, obj, prop )\n *\n * \t\tsets uniform from object and property with same name than uniform\n *\n * .setOptional( gl, obj, prop )\n *\n * \t\tlike .set for an optional property of the object\n *\n */\n\nimport { CubeTexture } from '../../textures/CubeTexture';\nimport { Texture } from '../../textures/Texture';\n\nvar emptyTexture = new Texture();\nvar emptyCubeTexture = new CubeTexture();\n\n// --- Base for inner nodes (including the root) ---\n\nfunction UniformContainer() {\n\n\tthis.seq = [];\n\tthis.map = {};\n\n}\n\n// --- Utilities ---\n\n// Array Caches (provide typed arrays for temporary by size)\n\nvar arrayCacheF32 = [];\nvar arrayCacheI32 = [];\n\n// Flattening for arrays of vectors and matrices\n\nfunction flatten( array, nBlocks, blockSize ) {\n\n\tvar firstElem = array[ 0 ];\n\n\tif ( firstElem <= 0 || firstElem > 0 ) return array;\n\t// unoptimized: ! isNaN( firstElem )\n\t// see http://jacksondunstan.com/articles/983\n\n\tvar n = nBlocks * blockSize,\n\t\tr = arrayCacheF32[ n ];\n\n\tif ( r === undefined ) {\n\n\t\tr = new Float32Array( n );\n\t\tarrayCacheF32[ n ] = r;\n\n\t}\n\n\tif ( nBlocks !== 0 ) {\n\n\t\tfirstElem.toArray( r, 0 );\n\n\t\tfor ( var i = 1, offset = 0; i !== nBlocks; ++ i ) {\n\n\t\t\toffset += blockSize;\n\t\t\tarray[ i ].toArray( r, offset );\n\n\t\t}\n\n\t}\n\n\treturn r;\n\n}\n\n// Texture unit allocation\n\nfunction allocTexUnits( renderer, n ) {\n\n\tvar r = arrayCacheI32[ n ];\n\n\tif ( r === undefined ) {\n\n\t\tr = new Int32Array( n );\n\t\tarrayCacheI32[ n ] = r;\n\n\t}\n\n\tfor ( var i = 0; i !== n; ++ i )\n\t\tr[ i ] = renderer.allocTextureUnit();\n\n\treturn r;\n\n}\n\n// --- Setters ---\n\n// Note: Defining these methods externally, because they come in a bunch\n// and this way their names minify.\n\n// Single scalar\n\nfunction setValue1f( gl, v ) { gl.uniform1f( this.addr, v ); }\nfunction setValue1i( gl, v ) { gl.uniform1i( this.addr, v ); }\n\n// Single float vector (from flat array or THREE.VectorN)\n\nfunction setValue2fv( gl, v ) {\n\n\tif ( v.x === undefined ) gl.uniform2fv( this.addr, v );\n\telse gl.uniform2f( this.addr, v.x, v.y );\n\n}\n\nfunction setValue3fv( gl, v ) {\n\n\tif ( v.x !== undefined )\n\t\tgl.uniform3f( this.addr, v.x, v.y, v.z );\n\telse if ( v.r !== undefined )\n\t\tgl.uniform3f( this.addr, v.r, v.g, v.b );\n\telse\n\t\tgl.uniform3fv( this.addr, v );\n\n}\n\nfunction setValue4fv( gl, v ) {\n\n\tif ( v.x === undefined ) gl.uniform4fv( this.addr, v );\n\telse gl.uniform4f( this.addr, v.x, v.y, v.z, v.w );\n\n}\n\n// Single matrix (from flat array or MatrixN)\n\nfunction setValue2fm( gl, v ) {\n\n\tgl.uniformMatrix2fv( this.addr, false, v.elements || v );\n\n}\n\nfunction setValue3fm( gl, v ) {\n\n\tgl.uniformMatrix3fv( this.addr, false, v.elements || v );\n\n}\n\nfunction setValue4fm( gl, v ) {\n\n\tgl.uniformMatrix4fv( this.addr, false, v.elements || v );\n\n}\n\n// Single texture (2D / Cube)\n\nfunction setValueT1( gl, v, renderer ) {\n\n\tvar unit = renderer.allocTextureUnit();\n\tgl.uniform1i( this.addr, unit );\n\trenderer.setTexture2D( v || emptyTexture, unit );\n\n}\n\nfunction setValueT6( gl, v, renderer ) {\n\n\tvar unit = renderer.allocTextureUnit();\n\tgl.uniform1i( this.addr, unit );\n\trenderer.setTextureCube( v || emptyCubeTexture, unit );\n\n}\n\n// Integer / Boolean vectors or arrays thereof (always flat arrays)\n\nfunction setValue2iv( gl, v ) { gl.uniform2iv( this.addr, v ); }\nfunction setValue3iv( gl, v ) { gl.uniform3iv( this.addr, v ); }\nfunction setValue4iv( gl, v ) { gl.uniform4iv( this.addr, v ); }\n\n// Helper to pick the right setter for the singular case\n\nfunction getSingularSetter( type ) {\n\n\tswitch ( type ) {\n\n\t\tcase 0x1406: return setValue1f; // FLOAT\n\t\tcase 0x8b50: return setValue2fv; // _VEC2\n\t\tcase 0x8b51: return setValue3fv; // _VEC3\n\t\tcase 0x8b52: return setValue4fv; // _VEC4\n\n\t\tcase 0x8b5a: return setValue2fm; // _MAT2\n\t\tcase 0x8b5b: return setValue3fm; // _MAT3\n\t\tcase 0x8b5c: return setValue4fm; // _MAT4\n\n\t\tcase 0x8b5e: return setValueT1; // SAMPLER_2D\n\t\tcase 0x8b60: return setValueT6; // SAMPLER_CUBE\n\n\t\tcase 0x1404: case 0x8b56: return setValue1i; // INT, BOOL\n\t\tcase 0x8b53: case 0x8b57: return setValue2iv; // _VEC2\n\t\tcase 0x8b54: case 0x8b58: return setValue3iv; // _VEC3\n\t\tcase 0x8b55: case 0x8b59: return setValue4iv; // _VEC4\n\n\t}\n\n}\n\n// Array of scalars\n\nfunction setValue1fv( gl, v ) { gl.uniform1fv( this.addr, v ); }\nfunction setValue1iv( gl, v ) { gl.uniform1iv( this.addr, v ); }\n\n// Array of vectors (flat or from THREE classes)\n\nfunction setValueV2a( gl, v ) {\n\n\tgl.uniform2fv( this.addr, flatten( v, this.size, 2 ) );\n\n}\n\nfunction setValueV3a( gl, v ) {\n\n\tgl.uniform3fv( this.addr, flatten( v, this.size, 3 ) );\n\n}\n\nfunction setValueV4a( gl, v ) {\n\n\tgl.uniform4fv( this.addr, flatten( v, this.size, 4 ) );\n\n}\n\n// Array of matrices (flat or from THREE clases)\n\nfunction setValueM2a( gl, v ) {\n\n\tgl.uniformMatrix2fv( this.addr, false, flatten( v, this.size, 4 ) );\n\n}\n\nfunction setValueM3a( gl, v ) {\n\n\tgl.uniformMatrix3fv( this.addr, false, flatten( v, this.size, 9 ) );\n\n}\n\nfunction setValueM4a( gl, v ) {\n\n\tgl.uniformMatrix4fv( this.addr, false, flatten( v, this.size, 16 ) );\n\n}\n\n// Array of textures (2D / Cube)\n\nfunction setValueT1a( gl, v, renderer ) {\n\n\tvar n = v.length,\n\t\tunits = allocTexUnits( renderer, n );\n\n\tgl.uniform1iv( this.addr, units );\n\n\tfor ( var i = 0; i !== n; ++ i ) {\n\n\t\trenderer.setTexture2D( v[ i ] || emptyTexture, units[ i ] );\n\n\t}\n\n}\n\nfunction setValueT6a( gl, v, renderer ) {\n\n\tvar n = v.length,\n\t\tunits = allocTexUnits( renderer, n );\n\n\tgl.uniform1iv( this.addr, units );\n\n\tfor ( var i = 0; i !== n; ++ i ) {\n\n\t\trenderer.setTextureCube( v[ i ] || emptyCubeTexture, units[ i ] );\n\n\t}\n\n}\n\n// Helper to pick the right setter for a pure (bottom-level) array\n\nfunction getPureArraySetter( type ) {\n\n\tswitch ( type ) {\n\n\t\tcase 0x1406: return setValue1fv; // FLOAT\n\t\tcase 0x8b50: return setValueV2a; // _VEC2\n\t\tcase 0x8b51: return setValueV3a; // _VEC3\n\t\tcase 0x8b52: return setValueV4a; // _VEC4\n\n\t\tcase 0x8b5a: return setValueM2a; // _MAT2\n\t\tcase 0x8b5b: return setValueM3a; // _MAT3\n\t\tcase 0x8b5c: return setValueM4a; // _MAT4\n\n\t\tcase 0x8b5e: return setValueT1a; // SAMPLER_2D\n\t\tcase 0x8b60: return setValueT6a; // SAMPLER_CUBE\n\n\t\tcase 0x1404: case 0x8b56: return setValue1iv; // INT, BOOL\n\t\tcase 0x8b53: case 0x8b57: return setValue2iv; // _VEC2\n\t\tcase 0x8b54: case 0x8b58: return setValue3iv; // _VEC3\n\t\tcase 0x8b55: case 0x8b59: return setValue4iv; // _VEC4\n\n\t}\n\n}\n\n// --- Uniform Classes ---\n\nfunction SingleUniform( id, activeInfo, addr ) {\n\n\tthis.id = id;\n\tthis.addr = addr;\n\tthis.setValue = getSingularSetter( activeInfo.type );\n\n\t// this.path = activeInfo.name; // DEBUG\n\n}\n\nfunction PureArrayUniform( id, activeInfo, addr ) {\n\n\tthis.id = id;\n\tthis.addr = addr;\n\tthis.size = activeInfo.size;\n\tthis.setValue = getPureArraySetter( activeInfo.type );\n\n\t// this.path = activeInfo.name; // DEBUG\n\n}\n\nfunction StructuredUniform( id ) {\n\n\tthis.id = id;\n\n\tUniformContainer.call( this ); // mix-in\n\n}\n\nStructuredUniform.prototype.setValue = function( gl, value ) {\n\n\t// Note: Don't need an extra 'renderer' parameter, since samplers\n\t// are not allowed in structured uniforms.\n\n\tvar seq = this.seq;\n\n\tfor ( var i = 0, n = seq.length; i !== n; ++ i ) {\n\n\t\tvar u = seq[ i ];\n\t\tu.setValue( gl, value[ u.id ] );\n\n\t}\n\n};\n\n// --- Top-level ---\n\n// Parser - builds up the property tree from the path strings\n\nvar RePathPart = /([\\w\\d_]+)(\\])?(\\[|\\.)?/g;\n\n// extracts\n// \t- the identifier (member name or array index)\n// - followed by an optional right bracket (found when array index)\n// - followed by an optional left bracket or dot (type of subscript)\n//\n// Note: These portions can be read in a non-overlapping fashion and\n// allow straightforward parsing of the hierarchy that WebGL encodes\n// in the uniform names.\n\nfunction addUniform( container, uniformObject ) {\n\n\tcontainer.seq.push( uniformObject );\n\tcontainer.map[ uniformObject.id ] = uniformObject;\n\n}\n\nfunction parseUniform( activeInfo, addr, container ) {\n\n\tvar path = activeInfo.name,\n\t\tpathLength = path.length;\n\n\t// reset RegExp object, because of the early exit of a previous run\n\tRePathPart.lastIndex = 0;\n\n\tfor (; ;) {\n\n\t\tvar match = RePathPart.exec( path ),\n\t\t\tmatchEnd = RePathPart.lastIndex,\n\n\t\t\tid = match[ 1 ],\n\t\t\tidIsIndex = match[ 2 ] === ']',\n\t\t\tsubscript = match[ 3 ];\n\n\t\tif ( idIsIndex ) id = id | 0; // convert to integer\n\n\t\tif ( subscript === undefined ||\n\t\t\t\tsubscript === '[' && matchEnd + 2 === pathLength ) {\n\t\t\t// bare name or \"pure\" bottom-level array \"[0]\" suffix\n\n\t\t\taddUniform( container, subscript === undefined ?\n\t\t\t\t\tnew SingleUniform( id, activeInfo, addr ) :\n\t\t\t\t\tnew PureArrayUniform( id, activeInfo, addr ) );\n\n\t\t\tbreak;\n\n\t\t} else {\n\t\t\t// step into inner node / create it in case it doesn't exist\n\n\t\t\tvar map = container.map,\n\t\t\t\tnext = map[ id ];\n\n\t\t\tif ( next === undefined ) {\n\n\t\t\t\tnext = new StructuredUniform( id );\n\t\t\t\taddUniform( container, next );\n\n\t\t\t}\n\n\t\t\tcontainer = next;\n\n\t\t}\n\n\t}\n\n}\n\n// Root Container\n\nfunction WebGLUniforms( gl, program, renderer ) {\n\n\tUniformContainer.call( this );\n\n\tthis.renderer = renderer;\n\n\tvar n = gl.getProgramParameter( program, gl.ACTIVE_UNIFORMS );\n\n\tfor ( var i = 0; i !== n; ++ i ) {\n\n\t\tvar info = gl.getActiveUniform( program, i ),\n\t\t\tpath = info.name,\n\t\t\taddr = gl.getUniformLocation( program, path );\n\n\t\tparseUniform( info, addr, this );\n\n\t}\n\n}\n\nWebGLUniforms.prototype.setValue = function( gl, name, value ) {\n\n\tvar u = this.map[ name ];\n\n\tif ( u !== undefined ) u.setValue( gl, value, this.renderer );\n\n};\n\nWebGLUniforms.prototype.set = function( gl, object, name ) {\n\n\tvar u = this.map[ name ];\n\n\tif ( u !== undefined ) u.setValue( gl, object[ name ], this.renderer );\n\n};\n\nWebGLUniforms.prototype.setOptional = function( gl, object, name ) {\n\n\tvar v = object[ name ];\n\n\tif ( v !== undefined ) this.setValue( gl, name, v );\n\n};\n\n\n// Static interface\n\nWebGLUniforms.upload = function( gl, seq, values, renderer ) {\n\n\tfor ( var i = 0, n = seq.length; i !== n; ++ i ) {\n\n\t\tvar u = seq[ i ],\n\t\t\tv = values[ u.id ];\n\n\t\tif ( v.needsUpdate !== false ) {\n\t\t\t// note: always updating when .needsUpdate is undefined\n\n\t\t\tu.setValue( gl, v.value, renderer );\n\n\t\t}\n\n\t}\n\n};\n\nWebGLUniforms.seqWithValue = function( seq, values ) {\n\n\tvar r = [];\n\n\tfor ( var i = 0, n = seq.length; i !== n; ++ i ) {\n\n\t\tvar u = seq[ i ];\n\t\tif ( u.id in values ) r.push( u );\n\n\t}\n\n\treturn r;\n\n};\n\nexport { WebGLUniforms };\n","/**\n * Uniform Utilities\n */\n\nvar UniformsUtils = {\n\n\tmerge: function ( uniforms ) {\n\n\t\tvar merged = {};\n\n\t\tfor ( var u = 0; u < uniforms.length; u ++ ) {\n\n\t\t\tvar tmp = this.clone( uniforms[ u ] );\n\n\t\t\tfor ( var p in tmp ) {\n\n\t\t\t\tmerged[ p ] = tmp[ p ];\n\n\t\t\t}\n\n\t\t}\n\n\t\treturn merged;\n\n\t},\n\n\tclone: function ( uniforms_src ) {\n\n\t\tvar uniforms_dst = {};\n\n\t\tfor ( var u in uniforms_src ) {\n\n\t\t\tuniforms_dst[ u ] = {};\n\n\t\t\tfor ( var p in uniforms_src[ u ] ) {\n\n\t\t\t\tvar parameter_src = uniforms_src[ u ][ p ];\n\n\t\t\t\tif ( parameter_src && ( parameter_src.isColor ||\n\t\t\t\t\tparameter_src.isMatrix3 || parameter_src.isMatrix4 ||\n\t\t\t\t\tparameter_src.isVector2 || parameter_src.isVector3 || parameter_src.isVector4 ||\n\t\t\t\t\tparameter_src.isTexture ) ) {\n\n\t\t\t\t\tuniforms_dst[ u ][ p ] = parameter_src.clone();\n\n\t\t\t\t} else if ( Array.isArray( parameter_src ) ) {\n\n\t\t\t\t\tuniforms_dst[ u ][ p ] = parameter_src.slice();\n\n\t\t\t\t} else {\n\n\t\t\t\t\tuniforms_dst[ u ][ p ] = parameter_src;\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t}\n\n\t\treturn uniforms_dst;\n\n\t}\n\n};\n\n\nexport { UniformsUtils };\n","import alphamap_fragment from './ShaderChunk/alphamap_fragment.glsl';\nimport alphamap_pars_fragment from './ShaderChunk/alphamap_pars_fragment.glsl';\nimport alphatest_fragment from './ShaderChunk/alphatest_fragment.glsl';\nimport aomap_fragment from './ShaderChunk/aomap_fragment.glsl';\nimport aomap_pars_fragment from './ShaderChunk/aomap_pars_fragment.glsl';\nimport begin_vertex from './ShaderChunk/begin_vertex.glsl';\nimport beginnormal_vertex from './ShaderChunk/beginnormal_vertex.glsl';\nimport bsdfs from './ShaderChunk/bsdfs.glsl';\nimport bumpmap_pars_fragment from './ShaderChunk/bumpmap_pars_fragment.glsl';\nimport clipping_planes_fragment from './ShaderChunk/clipping_planes_fragment.glsl';\nimport clipping_planes_pars_fragment from './ShaderChunk/clipping_planes_pars_fragment.glsl';\nimport clipping_planes_pars_vertex from './ShaderChunk/clipping_planes_pars_vertex.glsl';\nimport clipping_planes_vertex from './ShaderChunk/clipping_planes_vertex.glsl';\nimport color_fragment from './ShaderChunk/color_fragment.glsl';\nimport color_pars_fragment from './ShaderChunk/color_pars_fragment.glsl';\nimport color_pars_vertex from './ShaderChunk/color_pars_vertex.glsl';\nimport color_vertex from './ShaderChunk/color_vertex.glsl';\nimport common from './ShaderChunk/common.glsl';\nimport cube_uv_reflection_fragment from './ShaderChunk/cube_uv_reflection_fragment.glsl';\nimport defaultnormal_vertex from './ShaderChunk/defaultnormal_vertex.glsl';\nimport displacementmap_pars_vertex from './ShaderChunk/displacementmap_pars_vertex.glsl';\nimport displacementmap_vertex from './ShaderChunk/displacementmap_vertex.glsl';\nimport emissivemap_fragment from './ShaderChunk/emissivemap_fragment.glsl';\nimport emissivemap_pars_fragment from './ShaderChunk/emissivemap_pars_fragment.glsl';\nimport encodings_fragment from './ShaderChunk/encodings_fragment.glsl';\nimport encodings_pars_fragment from './ShaderChunk/encodings_pars_fragment.glsl';\nimport envmap_fragment from './ShaderChunk/envmap_fragment.glsl';\nimport envmap_pars_fragment from './ShaderChunk/envmap_pars_fragment.glsl';\nimport envmap_pars_vertex from './ShaderChunk/envmap_pars_vertex.glsl';\nimport envmap_vertex from './ShaderChunk/envmap_vertex.glsl';\nimport fog_fragment from './ShaderChunk/fog_fragment.glsl';\nimport fog_pars_fragment from './ShaderChunk/fog_pars_fragment.glsl';\nimport lightmap_fragment from './ShaderChunk/lightmap_fragment.glsl';\nimport lightmap_pars_fragment from './ShaderChunk/lightmap_pars_fragment.glsl';\nimport lights_lambert_vertex from './ShaderChunk/lights_lambert_vertex.glsl';\nimport lights_pars from './ShaderChunk/lights_pars.glsl';\nimport lights_phong_fragment from './ShaderChunk/lights_phong_fragment.glsl';\nimport lights_phong_pars_fragment from './ShaderChunk/lights_phong_pars_fragment.glsl';\nimport lights_physical_fragment from './ShaderChunk/lights_physical_fragment.glsl';\nimport lights_physical_pars_fragment from './ShaderChunk/lights_physical_pars_fragment.glsl';\nimport lights_template from './ShaderChunk/lights_template.glsl';\nimport logdepthbuf_fragment from './ShaderChunk/logdepthbuf_fragment.glsl';\nimport logdepthbuf_pars_fragment from './ShaderChunk/logdepthbuf_pars_fragment.glsl';\nimport logdepthbuf_pars_vertex from './ShaderChunk/logdepthbuf_pars_vertex.glsl';\nimport logdepthbuf_vertex from './ShaderChunk/logdepthbuf_vertex.glsl';\nimport map_fragment from './ShaderChunk/map_fragment.glsl';\nimport map_pars_fragment from './ShaderChunk/map_pars_fragment.glsl';\nimport map_particle_fragment from './ShaderChunk/map_particle_fragment.glsl';\nimport map_particle_pars_fragment from './ShaderChunk/map_particle_pars_fragment.glsl';\nimport metalnessmap_fragment from './ShaderChunk/metalnessmap_fragment.glsl';\nimport metalnessmap_pars_fragment from './ShaderChunk/metalnessmap_pars_fragment.glsl';\nimport morphnormal_vertex from './ShaderChunk/morphnormal_vertex.glsl';\nimport morphtarget_pars_vertex from './ShaderChunk/morphtarget_pars_vertex.glsl';\nimport morphtarget_vertex from './ShaderChunk/morphtarget_vertex.glsl';\nimport normal_flip from './ShaderChunk/normal_flip.glsl';\nimport normal_fragment from './ShaderChunk/normal_fragment.glsl';\nimport normalmap_pars_fragment from './ShaderChunk/normalmap_pars_fragment.glsl';\nimport packing from './ShaderChunk/packing.glsl';\nimport premultiplied_alpha_fragment from './ShaderChunk/premultiplied_alpha_fragment.glsl';\nimport project_vertex from './ShaderChunk/project_vertex.glsl';\nimport roughnessmap_fragment from './ShaderChunk/roughnessmap_fragment.glsl';\nimport roughnessmap_pars_fragment from './ShaderChunk/roughnessmap_pars_fragment.glsl';\nimport shadowmap_pars_fragment from './ShaderChunk/shadowmap_pars_fragment.glsl';\nimport shadowmap_pars_vertex from './ShaderChunk/shadowmap_pars_vertex.glsl';\nimport shadowmap_vertex from './ShaderChunk/shadowmap_vertex.glsl';\nimport shadowmask_pars_fragment from './ShaderChunk/shadowmask_pars_fragment.glsl';\nimport skinbase_vertex from './ShaderChunk/skinbase_vertex.glsl';\nimport skinning_pars_vertex from './ShaderChunk/skinning_pars_vertex.glsl';\nimport skinning_vertex from './ShaderChunk/skinning_vertex.glsl';\nimport skinnormal_vertex from './ShaderChunk/skinnormal_vertex.glsl';\nimport specularmap_fragment from './ShaderChunk/specularmap_fragment.glsl';\nimport specularmap_pars_fragment from './ShaderChunk/specularmap_pars_fragment.glsl';\nimport tonemapping_fragment from './ShaderChunk/tonemapping_fragment.glsl';\nimport tonemapping_pars_fragment from './ShaderChunk/tonemapping_pars_fragment.glsl';\nimport uv_pars_fragment from './ShaderChunk/uv_pars_fragment.glsl';\nimport uv_pars_vertex from './ShaderChunk/uv_pars_vertex.glsl';\nimport uv_vertex from './ShaderChunk/uv_vertex.glsl';\nimport uv2_pars_fragment from './ShaderChunk/uv2_pars_fragment.glsl';\nimport uv2_pars_vertex from './ShaderChunk/uv2_pars_vertex.glsl';\nimport uv2_vertex from './ShaderChunk/uv2_vertex.glsl';\nimport worldpos_vertex from './ShaderChunk/worldpos_vertex.glsl';\n\nimport cube_frag from './ShaderLib/cube_frag.glsl';\nimport cube_vert from './ShaderLib/cube_vert.glsl';\nimport depth_frag from './ShaderLib/depth_frag.glsl';\nimport depth_vert from './ShaderLib/depth_vert.glsl';\nimport distanceRGBA_frag from './ShaderLib/distanceRGBA_frag.glsl';\nimport distanceRGBA_vert from './ShaderLib/distanceRGBA_vert.glsl';\nimport equirect_frag from './ShaderLib/equirect_frag.glsl';\nimport equirect_vert from './ShaderLib/equirect_vert.glsl';\nimport linedashed_frag from './ShaderLib/linedashed_frag.glsl';\nimport linedashed_vert from './ShaderLib/linedashed_vert.glsl';\nimport meshbasic_frag from './ShaderLib/meshbasic_frag.glsl';\nimport meshbasic_vert from './ShaderLib/meshbasic_vert.glsl';\nimport meshlambert_frag from './ShaderLib/meshlambert_frag.glsl';\nimport meshlambert_vert from './ShaderLib/meshlambert_vert.glsl';\nimport meshphong_frag from './ShaderLib/meshphong_frag.glsl';\nimport meshphong_vert from './ShaderLib/meshphong_vert.glsl';\nimport meshphysical_frag from './ShaderLib/meshphysical_frag.glsl';\nimport meshphysical_vert from './ShaderLib/meshphysical_vert.glsl';\nimport normal_frag from './ShaderLib/normal_frag.glsl';\nimport normal_vert from './ShaderLib/normal_vert.glsl';\nimport points_frag from './ShaderLib/points_frag.glsl';\nimport points_vert from './ShaderLib/points_vert.glsl';\nimport shadow_frag from './ShaderLib/shadow_frag.glsl';\nimport shadow_vert from './ShaderLib/shadow_vert.glsl';\n\nexport var ShaderChunk = {\n\talphamap_fragment: alphamap_fragment,\n\talphamap_pars_fragment: alphamap_pars_fragment,\n\talphatest_fragment: alphatest_fragment,\n\taomap_fragment: aomap_fragment,\n\taomap_pars_fragment: aomap_pars_fragment,\n\tbegin_vertex: begin_vertex,\n\tbeginnormal_vertex: beginnormal_vertex,\n\tbsdfs: bsdfs,\n\tbumpmap_pars_fragment: bumpmap_pars_fragment,\n\tclipping_planes_fragment: clipping_planes_fragment,\n\tclipping_planes_pars_fragment: clipping_planes_pars_fragment,\n\tclipping_planes_pars_vertex: clipping_planes_pars_vertex,\n\tclipping_planes_vertex: clipping_planes_vertex,\n\tcolor_fragment: color_fragment,\n\tcolor_pars_fragment: color_pars_fragment,\n\tcolor_pars_vertex: color_pars_vertex,\n\tcolor_vertex: color_vertex,\n\tcommon: common,\n\tcube_uv_reflection_fragment: cube_uv_reflection_fragment,\n\tdefaultnormal_vertex: defaultnormal_vertex,\n\tdisplacementmap_pars_vertex: displacementmap_pars_vertex,\n\tdisplacementmap_vertex: displacementmap_vertex,\n\temissivemap_fragment: emissivemap_fragment,\n\temissivemap_pars_fragment: emissivemap_pars_fragment,\n\tencodings_fragment: encodings_fragment,\n\tencodings_pars_fragment: encodings_pars_fragment,\n\tenvmap_fragment: envmap_fragment,\n\tenvmap_pars_fragment: envmap_pars_fragment,\n\tenvmap_pars_vertex: envmap_pars_vertex,\n\tenvmap_vertex: envmap_vertex,\n\tfog_fragment: fog_fragment,\n\tfog_pars_fragment: fog_pars_fragment,\n\tlightmap_fragment: lightmap_fragment,\n\tlightmap_pars_fragment: lightmap_pars_fragment,\n\tlights_lambert_vertex: lights_lambert_vertex,\n\tlights_pars: lights_pars,\n\tlights_phong_fragment: lights_phong_fragment,\n\tlights_phong_pars_fragment: lights_phong_pars_fragment,\n\tlights_physical_fragment: lights_physical_fragment,\n\tlights_physical_pars_fragment: lights_physical_pars_fragment,\n\tlights_template: lights_template,\n\tlogdepthbuf_fragment: logdepthbuf_fragment,\n\tlogdepthbuf_pars_fragment: logdepthbuf_pars_fragment,\n\tlogdepthbuf_pars_vertex: logdepthbuf_pars_vertex,\n\tlogdepthbuf_vertex: logdepthbuf_vertex,\n\tmap_fragment: map_fragment,\n\tmap_pars_fragment: map_pars_fragment,\n\tmap_particle_fragment: map_particle_fragment,\n\tmap_particle_pars_fragment: map_particle_pars_fragment,\n\tmetalnessmap_fragment: metalnessmap_fragment,\n\tmetalnessmap_pars_fragment: metalnessmap_pars_fragment,\n\tmorphnormal_vertex: morphnormal_vertex,\n\tmorphtarget_pars_vertex: morphtarget_pars_vertex,\n\tmorphtarget_vertex: morphtarget_vertex,\n\tnormal_flip: normal_flip,\n\tnormal_fragment: normal_fragment,\n\tnormalmap_pars_fragment: normalmap_pars_fragment,\n\tpacking: packing,\n\tpremultiplied_alpha_fragment: premultiplied_alpha_fragment,\n\tproject_vertex: project_vertex,\n\troughnessmap_fragment: roughnessmap_fragment,\n\troughnessmap_pars_fragment: roughnessmap_pars_fragment,\n\tshadowmap_pars_fragment: shadowmap_pars_fragment,\n\tshadowmap_pars_vertex: shadowmap_pars_vertex,\n\tshadowmap_vertex: shadowmap_vertex,\n\tshadowmask_pars_fragment: shadowmask_pars_fragment,\n\tskinbase_vertex: skinbase_vertex,\n\tskinning_pars_vertex: skinning_pars_vertex,\n\tskinning_vertex: skinning_vertex,\n\tskinnormal_vertex: skinnormal_vertex,\n\tspecularmap_fragment: specularmap_fragment,\n\tspecularmap_pars_fragment: specularmap_pars_fragment,\n\ttonemapping_fragment: tonemapping_fragment,\n\ttonemapping_pars_fragment: tonemapping_pars_fragment,\n\tuv_pars_fragment: uv_pars_fragment,\n\tuv_pars_vertex: uv_pars_vertex,\n\tuv_vertex: uv_vertex,\n\tuv2_pars_fragment: uv2_pars_fragment,\n\tuv2_pars_vertex: uv2_pars_vertex,\n\tuv2_vertex: uv2_vertex,\n\tworldpos_vertex: worldpos_vertex,\n\n\tcube_frag: cube_frag,\n\tcube_vert: cube_vert,\n\tdepth_frag: depth_frag,\n\tdepth_vert: depth_vert,\n\tdistanceRGBA_frag: distanceRGBA_frag,\n\tdistanceRGBA_vert: distanceRGBA_vert,\n\tequirect_frag: equirect_frag,\n\tequirect_vert: equirect_vert,\n\tlinedashed_frag: linedashed_frag,\n\tlinedashed_vert: linedashed_vert,\n\tmeshbasic_frag: meshbasic_frag,\n\tmeshbasic_vert: meshbasic_vert,\n\tmeshlambert_frag: meshlambert_frag,\n\tmeshlambert_vert: meshlambert_vert,\n\tmeshphong_frag: meshphong_frag,\n\tmeshphong_vert: meshphong_vert,\n\tmeshphysical_frag: meshphysical_frag,\n\tmeshphysical_vert: meshphysical_vert,\n\tnormal_frag: normal_frag,\n\tnormal_vert: normal_vert,\n\tpoints_frag: points_frag,\n\tpoints_vert: points_vert,\n\tshadow_frag: shadow_frag,\n\tshadow_vert: shadow_vert\n};\n","import { _Math } from './Math';\n\n/**\n * @author mrdoob / http://mrdoob.com/\n */\n\nfunction Color( r, g, b ) {\n\n\tif ( g === undefined && b === undefined ) {\n\n\t\t// r is THREE.Color, hex or string\n\t\treturn this.set( r );\n\n\t}\n\n\treturn this.setRGB( r, g, b );\n\n}\n\nColor.prototype = {\n\n\tconstructor: Color,\n\n\tisColor: true,\n\n\tr: 1, g: 1, b: 1,\n\n\tset: function ( value ) {\n\n\t\tif ( (value && value.isColor) ) {\n\n\t\t\tthis.copy( value );\n\n\t\t} else if ( typeof value === 'number' ) {\n\n\t\t\tthis.setHex( value );\n\n\t\t} else if ( typeof value === 'string' ) {\n\n\t\t\tthis.setStyle( value );\n\n\t\t}\n\n\t\treturn this;\n\n\t},\n\n\tsetScalar: function ( scalar ) {\n\n\t\tthis.r = scalar;\n\t\tthis.g = scalar;\n\t\tthis.b = scalar;\n\n\t\treturn this;\n\n\t},\n\n\tsetHex: function ( hex ) {\n\n\t\thex = Math.floor( hex );\n\n\t\tthis.r = ( hex >> 16 & 255 ) / 255;\n\t\tthis.g = ( hex >> 8 & 255 ) / 255;\n\t\tthis.b = ( hex & 255 ) / 255;\n\n\t\treturn this;\n\n\t},\n\n\tsetRGB: function ( r, g, b ) {\n\n\t\tthis.r = r;\n\t\tthis.g = g;\n\t\tthis.b = b;\n\n\t\treturn this;\n\n\t},\n\n\tsetHSL: function () {\n\n\t\tfunction hue2rgb( p, q, t ) {\n\n\t\t\tif ( t < 0 ) t += 1;\n\t\t\tif ( t > 1 ) t -= 1;\n\t\t\tif ( t < 1 / 6 ) return p + ( q - p ) * 6 * t;\n\t\t\tif ( t < 1 / 2 ) return q;\n\t\t\tif ( t < 2 / 3 ) return p + ( q - p ) * 6 * ( 2 / 3 - t );\n\t\t\treturn p;\n\n\t\t}\n\n\t\treturn function setHSL( h, s, l ) {\n\n\t\t\t// h,s,l ranges are in 0.0 - 1.0\n\t\t\th = _Math.euclideanModulo( h, 1 );\n\t\t\ts = _Math.clamp( s, 0, 1 );\n\t\t\tl = _Math.clamp( l, 0, 1 );\n\n\t\t\tif ( s === 0 ) {\n\n\t\t\t\tthis.r = this.g = this.b = l;\n\n\t\t\t} else {\n\n\t\t\t\tvar p = l <= 0.5 ? l * ( 1 + s ) : l + s - ( l * s );\n\t\t\t\tvar q = ( 2 * l ) - p;\n\n\t\t\t\tthis.r = hue2rgb( q, p, h + 1 / 3 );\n\t\t\t\tthis.g = hue2rgb( q, p, h );\n\t\t\t\tthis.b = hue2rgb( q, p, h - 1 / 3 );\n\n\t\t\t}\n\n\t\t\treturn this;\n\n\t\t};\n\n\t}(),\n\n\tsetStyle: function ( style ) {\n\n\t\tfunction handleAlpha( string ) {\n\n\t\t\tif ( string === undefined ) return;\n\n\t\t\tif ( parseFloat( string ) < 1 ) {\n\n\t\t\t\tconsole.warn( 'THREE.Color: Alpha component of ' + style + ' will be ignored.' );\n\n\t\t\t}\n\n\t\t}\n\n\n\t\tvar m;\n\n\t\tif ( m = /^((?:rgb|hsl)a?)\\(\\s*([^\\)]*)\\)/.exec( style ) ) {\n\n\t\t\t// rgb / hsl\n\n\t\t\tvar color;\n\t\t\tvar name = m[ 1 ];\n\t\t\tvar components = m[ 2 ];\n\n\t\t\tswitch ( name ) {\n\n\t\t\t\tcase 'rgb':\n\t\t\t\tcase 'rgba':\n\n\t\t\t\t\tif ( color = /^(\\d+)\\s*,\\s*(\\d+)\\s*,\\s*(\\d+)\\s*(,\\s*([0-9]*\\.?[0-9]+)\\s*)?$/.exec( components ) ) {\n\n\t\t\t\t\t\t// rgb(255,0,0) rgba(255,0,0,0.5)\n\t\t\t\t\t\tthis.r = Math.min( 255, parseInt( color[ 1 ], 10 ) ) / 255;\n\t\t\t\t\t\tthis.g = Math.min( 255, parseInt( color[ 2 ], 10 ) ) / 255;\n\t\t\t\t\t\tthis.b = Math.min( 255, parseInt( color[ 3 ], 10 ) ) / 255;\n\n\t\t\t\t\t\thandleAlpha( color[ 5 ] );\n\n\t\t\t\t\t\treturn this;\n\n\t\t\t\t\t}\n\n\t\t\t\t\tif ( color = /^(\\d+)\\%\\s*,\\s*(\\d+)\\%\\s*,\\s*(\\d+)\\%\\s*(,\\s*([0-9]*\\.?[0-9]+)\\s*)?$/.exec( components ) ) {\n\n\t\t\t\t\t\t// rgb(100%,0%,0%) rgba(100%,0%,0%,0.5)\n\t\t\t\t\t\tthis.r = Math.min( 100, parseInt( color[ 1 ], 10 ) ) / 100;\n\t\t\t\t\t\tthis.g = Math.min( 100, parseInt( color[ 2 ], 10 ) ) / 100;\n\t\t\t\t\t\tthis.b = Math.min( 100, parseInt( color[ 3 ], 10 ) ) / 100;\n\n\t\t\t\t\t\thandleAlpha( color[ 5 ] );\n\n\t\t\t\t\t\treturn this;\n\n\t\t\t\t\t}\n\n\t\t\t\t\tbreak;\n\n\t\t\t\tcase 'hsl':\n\t\t\t\tcase 'hsla':\n\n\t\t\t\t\tif ( color = /^([0-9]*\\.?[0-9]+)\\s*,\\s*(\\d+)\\%\\s*,\\s*(\\d+)\\%\\s*(,\\s*([0-9]*\\.?[0-9]+)\\s*)?$/.exec( components ) ) {\n\n\t\t\t\t\t\t// hsl(120,50%,50%) hsla(120,50%,50%,0.5)\n\t\t\t\t\t\tvar h = parseFloat( color[ 1 ] ) / 360;\n\t\t\t\t\t\tvar s = parseInt( color[ 2 ], 10 ) / 100;\n\t\t\t\t\t\tvar l = parseInt( color[ 3 ], 10 ) / 100;\n\n\t\t\t\t\t\thandleAlpha( color[ 5 ] );\n\n\t\t\t\t\t\treturn this.setHSL( h, s, l );\n\n\t\t\t\t\t}\n\n\t\t\t\t\tbreak;\n\n\t\t\t}\n\n\t\t} else if ( m = /^\\#([A-Fa-f0-9]+)$/.exec( style ) ) {\n\n\t\t\t// hex color\n\n\t\t\tvar hex = m[ 1 ];\n\t\t\tvar size = hex.length;\n\n\t\t\tif ( size === 3 ) {\n\n\t\t\t\t// #ff0\n\t\t\t\tthis.r = parseInt( hex.charAt( 0 ) + hex.charAt( 0 ), 16 ) / 255;\n\t\t\t\tthis.g = parseInt( hex.charAt( 1 ) + hex.charAt( 1 ), 16 ) / 255;\n\t\t\t\tthis.b = parseInt( hex.charAt( 2 ) + hex.charAt( 2 ), 16 ) / 255;\n\n\t\t\t\treturn this;\n\n\t\t\t} else if ( size === 6 ) {\n\n\t\t\t\t// #ff0000\n\t\t\t\tthis.r = parseInt( hex.charAt( 0 ) + hex.charAt( 1 ), 16 ) / 255;\n\t\t\t\tthis.g = parseInt( hex.charAt( 2 ) + hex.charAt( 3 ), 16 ) / 255;\n\t\t\t\tthis.b = parseInt( hex.charAt( 4 ) + hex.charAt( 5 ), 16 ) / 255;\n\n\t\t\t\treturn this;\n\n\t\t\t}\n\n\t\t}\n\n\t\tif ( style && style.length > 0 ) {\n\n\t\t\t// color keywords\n\t\t\tvar hex = ColorKeywords[ style ];\n\n\t\t\tif ( hex !== undefined ) {\n\n\t\t\t\t// red\n\t\t\t\tthis.setHex( hex );\n\n\t\t\t} else {\n\n\t\t\t\t// unknown color\n\t\t\t\tconsole.warn( 'THREE.Color: Unknown color ' + style );\n\n\t\t\t}\n\n\t\t}\n\n\t\treturn this;\n\n\t},\n\n\tclone: function () {\n\n\t\treturn new this.constructor( this.r, this.g, this.b );\n\n\t},\n\n\tcopy: function ( color ) {\n\n\t\tthis.r = color.r;\n\t\tthis.g = color.g;\n\t\tthis.b = color.b;\n\n\t\treturn this;\n\n\t},\n\n\tcopyGammaToLinear: function ( color, gammaFactor ) {\n\n\t\tif ( gammaFactor === undefined ) gammaFactor = 2.0;\n\n\t\tthis.r = Math.pow( color.r, gammaFactor );\n\t\tthis.g = Math.pow( color.g, gammaFactor );\n\t\tthis.b = Math.pow( color.b, gammaFactor );\n\n\t\treturn this;\n\n\t},\n\n\tcopyLinearToGamma: function ( color, gammaFactor ) {\n\n\t\tif ( gammaFactor === undefined ) gammaFactor = 2.0;\n\n\t\tvar safeInverse = ( gammaFactor > 0 ) ? ( 1.0 / gammaFactor ) : 1.0;\n\n\t\tthis.r = Math.pow( color.r, safeInverse );\n\t\tthis.g = Math.pow( color.g, safeInverse );\n\t\tthis.b = Math.pow( color.b, safeInverse );\n\n\t\treturn this;\n\n\t},\n\n\tconvertGammaToLinear: function () {\n\n\t\tvar r = this.r, g = this.g, b = this.b;\n\n\t\tthis.r = r * r;\n\t\tthis.g = g * g;\n\t\tthis.b = b * b;\n\n\t\treturn this;\n\n\t},\n\n\tconvertLinearToGamma: function () {\n\n\t\tthis.r = Math.sqrt( this.r );\n\t\tthis.g = Math.sqrt( this.g );\n\t\tthis.b = Math.sqrt( this.b );\n\n\t\treturn this;\n\n\t},\n\n\tgetHex: function () {\n\n\t\treturn ( this.r * 255 ) << 16 ^ ( this.g * 255 ) << 8 ^ ( this.b * 255 ) << 0;\n\n\t},\n\n\tgetHexString: function () {\n\n\t\treturn ( '000000' + this.getHex().toString( 16 ) ).slice( - 6 );\n\n\t},\n\n\tgetHSL: function ( optionalTarget ) {\n\n\t\t// h,s,l ranges are in 0.0 - 1.0\n\n\t\tvar hsl = optionalTarget || { h: 0, s: 0, l: 0 };\n\n\t\tvar r = this.r, g = this.g, b = this.b;\n\n\t\tvar max = Math.max( r, g, b );\n\t\tvar min = Math.min( r, g, b );\n\n\t\tvar hue, saturation;\n\t\tvar lightness = ( min + max ) / 2.0;\n\n\t\tif ( min === max ) {\n\n\t\t\thue = 0;\n\t\t\tsaturation = 0;\n\n\t\t} else {\n\n\t\t\tvar delta = max - min;\n\n\t\t\tsaturation = lightness <= 0.5 ? delta / ( max + min ) : delta / ( 2 - max - min );\n\n\t\t\tswitch ( max ) {\n\n\t\t\t\tcase r: hue = ( g - b ) / delta + ( g < b ? 6 : 0 ); break;\n\t\t\t\tcase g: hue = ( b - r ) / delta + 2; break;\n\t\t\t\tcase b: hue = ( r - g ) / delta + 4; break;\n\n\t\t\t}\n\n\t\t\thue /= 6;\n\n\t\t}\n\n\t\thsl.h = hue;\n\t\thsl.s = saturation;\n\t\thsl.l = lightness;\n\n\t\treturn hsl;\n\n\t},\n\n\tgetStyle: function () {\n\n\t\treturn 'rgb(' + ( ( this.r * 255 ) | 0 ) + ',' + ( ( this.g * 255 ) | 0 ) + ',' + ( ( this.b * 255 ) | 0 ) + ')';\n\n\t},\n\n\toffsetHSL: function ( h, s, l ) {\n\n\t\tvar hsl = this.getHSL();\n\n\t\thsl.h += h; hsl.s += s; hsl.l += l;\n\n\t\tthis.setHSL( hsl.h, hsl.s, hsl.l );\n\n\t\treturn this;\n\n\t},\n\n\tadd: function ( color ) {\n\n\t\tthis.r += color.r;\n\t\tthis.g += color.g;\n\t\tthis.b += color.b;\n\n\t\treturn this;\n\n\t},\n\n\taddColors: function ( color1, color2 ) {\n\n\t\tthis.r = color1.r + color2.r;\n\t\tthis.g = color1.g + color2.g;\n\t\tthis.b = color1.b + color2.b;\n\n\t\treturn this;\n\n\t},\n\n\taddScalar: function ( s ) {\n\n\t\tthis.r += s;\n\t\tthis.g += s;\n\t\tthis.b += s;\n\n\t\treturn this;\n\n\t},\n\n\tsub: function( color ) {\n\n\t\tthis.r = Math.max( 0, this.r - color.r );\n\t\tthis.g = Math.max( 0, this.g - color.g );\n\t\tthis.b = Math.max( 0, this.b - color.b );\n\n\t\treturn this;\n\n\t},\n\n\tmultiply: function ( color ) {\n\n\t\tthis.r *= color.r;\n\t\tthis.g *= color.g;\n\t\tthis.b *= color.b;\n\n\t\treturn this;\n\n\t},\n\n\tmultiplyScalar: function ( s ) {\n\n\t\tthis.r *= s;\n\t\tthis.g *= s;\n\t\tthis.b *= s;\n\n\t\treturn this;\n\n\t},\n\n\tlerp: function ( color, alpha ) {\n\n\t\tthis.r += ( color.r - this.r ) * alpha;\n\t\tthis.g += ( color.g - this.g ) * alpha;\n\t\tthis.b += ( color.b - this.b ) * alpha;\n\n\t\treturn this;\n\n\t},\n\n\tequals: function ( c ) {\n\n\t\treturn ( c.r === this.r ) && ( c.g === this.g ) && ( c.b === this.b );\n\n\t},\n\n\tfromArray: function ( array, offset ) {\n\n\t\tif ( offset === undefined ) offset = 0;\n\n\t\tthis.r = array[ offset ];\n\t\tthis.g = array[ offset + 1 ];\n\t\tthis.b = array[ offset + 2 ];\n\n\t\treturn this;\n\n\t},\n\n\ttoArray: function ( array, offset ) {\n\n\t\tif ( array === undefined ) array = [];\n\t\tif ( offset === undefined ) offset = 0;\n\n\t\tarray[ offset ] = this.r;\n\t\tarray[ offset + 1 ] = this.g;\n\t\tarray[ offset + 2 ] = this.b;\n\n\t\treturn array;\n\n\t},\n\n\ttoJSON: function () {\n\n\t\treturn this.getHex();\n\n\t}\n\n};\n\nvar ColorKeywords = { 'aliceblue': 0xF0F8FF, 'antiquewhite': 0xFAEBD7, 'aqua': 0x00FFFF, 'aquamarine': 0x7FFFD4, 'azure': 0xF0FFFF,\n'beige': 0xF5F5DC, 'bisque': 0xFFE4C4, 'black': 0x000000, 'blanchedalmond': 0xFFEBCD, 'blue': 0x0000FF, 'blueviolet': 0x8A2BE2,\n'brown': 0xA52A2A, 'burlywood': 0xDEB887, 'cadetblue': 0x5F9EA0, 'chartreuse': 0x7FFF00, 'chocolate': 0xD2691E, 'coral': 0xFF7F50,\n'cornflowerblue': 0x6495ED, 'cornsilk': 0xFFF8DC, 'crimson': 0xDC143C, 'cyan': 0x00FFFF, 'darkblue': 0x00008B, 'darkcyan': 0x008B8B,\n'darkgoldenrod': 0xB8860B, 'darkgray': 0xA9A9A9, 'darkgreen': 0x006400, 'darkgrey': 0xA9A9A9, 'darkkhaki': 0xBDB76B, 'darkmagenta': 0x8B008B,\n'darkolivegreen': 0x556B2F, 'darkorange': 0xFF8C00, 'darkorchid': 0x9932CC, 'darkred': 0x8B0000, 'darksalmon': 0xE9967A, 'darkseagreen': 0x8FBC8F,\n'darkslateblue': 0x483D8B, 'darkslategray': 0x2F4F4F, 'darkslategrey': 0x2F4F4F, 'darkturquoise': 0x00CED1, 'darkviolet': 0x9400D3,\n'deeppink': 0xFF1493, 'deepskyblue': 0x00BFFF, 'dimgray': 0x696969, 'dimgrey': 0x696969, 'dodgerblue': 0x1E90FF, 'firebrick': 0xB22222,\n'floralwhite': 0xFFFAF0, 'forestgreen': 0x228B22, 'fuchsia': 0xFF00FF, 'gainsboro': 0xDCDCDC, 'ghostwhite': 0xF8F8FF, 'gold': 0xFFD700,\n'goldenrod': 0xDAA520, 'gray': 0x808080, 'green': 0x008000, 'greenyellow': 0xADFF2F, 'grey': 0x808080, 'honeydew': 0xF0FFF0, 'hotpink': 0xFF69B4,\n'indianred': 0xCD5C5C, 'indigo': 0x4B0082, 'ivory': 0xFFFFF0, 'khaki': 0xF0E68C, 'lavender': 0xE6E6FA, 'lavenderblush': 0xFFF0F5, 'lawngreen': 0x7CFC00,\n'lemonchiffon': 0xFFFACD, 'lightblue': 0xADD8E6, 'lightcoral': 0xF08080, 'lightcyan': 0xE0FFFF, 'lightgoldenrodyellow': 0xFAFAD2, 'lightgray': 0xD3D3D3,\n'lightgreen': 0x90EE90, 'lightgrey': 0xD3D3D3, 'lightpink': 0xFFB6C1, 'lightsalmon': 0xFFA07A, 'lightseagreen': 0x20B2AA, 'lightskyblue': 0x87CEFA,\n'lightslategray': 0x778899, 'lightslategrey': 0x778899, 'lightsteelblue': 0xB0C4DE, 'lightyellow': 0xFFFFE0, 'lime': 0x00FF00, 'limegreen': 0x32CD32,\n'linen': 0xFAF0E6, 'magenta': 0xFF00FF, 'maroon': 0x800000, 'mediumaquamarine': 0x66CDAA, 'mediumblue': 0x0000CD, 'mediumorchid': 0xBA55D3,\n'mediumpurple': 0x9370DB, 'mediumseagreen': 0x3CB371, 'mediumslateblue': 0x7B68EE, 'mediumspringgreen': 0x00FA9A, 'mediumturquoise': 0x48D1CC,\n'mediumvioletred': 0xC71585, 'midnightblue': 0x191970, 'mintcream': 0xF5FFFA, 'mistyrose': 0xFFE4E1, 'moccasin': 0xFFE4B5, 'navajowhite': 0xFFDEAD,\n'navy': 0x000080, 'oldlace': 0xFDF5E6, 'olive': 0x808000, 'olivedrab': 0x6B8E23, 'orange': 0xFFA500, 'orangered': 0xFF4500, 'orchid': 0xDA70D6,\n'palegoldenrod': 0xEEE8AA, 'palegreen': 0x98FB98, 'paleturquoise': 0xAFEEEE, 'palevioletred': 0xDB7093, 'papayawhip': 0xFFEFD5, 'peachpuff': 0xFFDAB9,\n'peru': 0xCD853F, 'pink': 0xFFC0CB, 'plum': 0xDDA0DD, 'powderblue': 0xB0E0E6, 'purple': 0x800080, 'red': 0xFF0000, 'rosybrown': 0xBC8F8F,\n'royalblue': 0x4169E1, 'saddlebrown': 0x8B4513, 'salmon': 0xFA8072, 'sandybrown': 0xF4A460, 'seagreen': 0x2E8B57, 'seashell': 0xFFF5EE,\n'sienna': 0xA0522D, 'silver': 0xC0C0C0, 'skyblue': 0x87CEEB, 'slateblue': 0x6A5ACD, 'slategray': 0x708090, 'slategrey': 0x708090, 'snow': 0xFFFAFA,\n'springgreen': 0x00FF7F, 'steelblue': 0x4682B4, 'tan': 0xD2B48C, 'teal': 0x008080, 'thistle': 0xD8BFD8, 'tomato': 0xFF6347, 'turquoise': 0x40E0D0,\n'violet': 0xEE82EE, 'wheat': 0xF5DEB3, 'white': 0xFFFFFF, 'whitesmoke': 0xF5F5F5, 'yellow': 0xFFFF00, 'yellowgreen': 0x9ACD32 };\n\n\nexport { ColorKeywords, Color };\n","import { Vector4 } from '../../math/Vector4';\nimport { Color } from '../../math/Color';\nimport { Vector2 } from '../../math/Vector2';\n\n/**\n * Uniforms library for shared webgl shaders\n */\n\nvar UniformsLib = {\n\n\tcommon: {\n\n\t\tdiffuse: { value: new Color( 0xeeeeee ) },\n\t\topacity: { value: 1.0 },\n\n\t\tmap: { value: null },\n\t\toffsetRepeat: { value: new Vector4( 0, 0, 1, 1 ) },\n\n\t\tspecularMap: { value: null },\n\t\talphaMap: { value: null },\n\n\t\tenvMap: { value: null },\n\t\tflipEnvMap: { value: - 1 },\n\t\treflectivity: { value: 1.0 },\n\t\trefractionRatio: { value: 0.98 }\n\n\t},\n\n\taomap: {\n\n\t\taoMap: { value: null },\n\t\taoMapIntensity: { value: 1 }\n\n\t},\n\n\tlightmap: {\n\n\t\tlightMap: { value: null },\n\t\tlightMapIntensity: { value: 1 }\n\n\t},\n\n\temissivemap: {\n\n\t\temissiveMap: { value: null }\n\n\t},\n\n\tbumpmap: {\n\n\t\tbumpMap: { value: null },\n\t\tbumpScale: { value: 1 }\n\n\t},\n\n\tnormalmap: {\n\n\t\tnormalMap: { value: null },\n\t\tnormalScale: { value: new Vector2( 1, 1 ) }\n\n\t},\n\n\tdisplacementmap: {\n\n\t\tdisplacementMap: { value: null },\n\t\tdisplacementScale: { value: 1 },\n\t\tdisplacementBias: { value: 0 }\n\n\t},\n\n\troughnessmap: {\n\n\t\troughnessMap: { value: null }\n\n\t},\n\n\tmetalnessmap: {\n\n\t\tmetalnessMap: { value: null }\n\n\t},\n\n\tfog: {\n\n\t\tfogDensity: { value: 0.00025 },\n\t\tfogNear: { value: 1 },\n\t\tfogFar: { value: 2000 },\n\t\tfogColor: { value: new Color( 0xffffff ) }\n\n\t},\n\n\tlights: {\n\n\t\tambientLightColor: { value: [] },\n\n\t\tdirectionalLights: { value: [], properties: {\n\t\t\tdirection: {},\n\t\t\tcolor: {},\n\n\t\t\tshadow: {},\n\t\t\tshadowBias: {},\n\t\t\tshadowRadius: {},\n\t\t\tshadowMapSize: {}\n\t\t} },\n\n\t\tdirectionalShadowMap: { value: [] },\n\t\tdirectionalShadowMatrix: { value: [] },\n\n\t\tspotLights: { value: [], properties: {\n\t\t\tcolor: {},\n\t\t\tposition: {},\n\t\t\tdirection: {},\n\t\t\tdistance: {},\n\t\t\tconeCos: {},\n\t\t\tpenumbraCos: {},\n\t\t\tdecay: {},\n\n\t\t\tshadow: {},\n\t\t\tshadowBias: {},\n\t\t\tshadowRadius: {},\n\t\t\tshadowMapSize: {}\n\t\t} },\n\n\t\tspotShadowMap: { value: [] },\n\t\tspotShadowMatrix: { value: [] },\n\n\t\tpointLights: { value: [], properties: {\n\t\t\tcolor: {},\n\t\t\tposition: {},\n\t\t\tdecay: {},\n\t\t\tdistance: {},\n\n\t\t\tshadow: {},\n\t\t\tshadowBias: {},\n\t\t\tshadowRadius: {},\n\t\t\tshadowMapSize: {}\n\t\t} },\n\n\t\tpointShadowMap: { value: [] },\n\t\tpointShadowMatrix: { value: [] },\n\n\t\themisphereLights: { value: [], properties: {\n\t\t\tdirection: {},\n\t\t\tskyColor: {},\n\t\t\tgroundColor: {}\n\t\t} }\n\n\t},\n\n\tpoints: {\n\n\t\tdiffuse: { value: new Color( 0xeeeeee ) },\n\t\topacity: { value: 1.0 },\n\t\tsize: { value: 1.0 },\n\t\tscale: { value: 1.0 },\n\t\tmap: { value: null },\n\t\toffsetRepeat: { value: new Vector4( 0, 0, 1, 1 ) }\n\n\t}\n\n};\n\n\nexport { UniformsLib };\n","import { ShaderChunk } from './ShaderChunk';\nimport { UniformsUtils } from './UniformsUtils';\nimport { Vector3 } from '../../math/Vector3';\nimport { UniformsLib } from './UniformsLib';\nimport { Color } from '../../math/Color';\n\n/**\n * @author alteredq / http://alteredqualia.com/\n * @author mrdoob / http://mrdoob.com/\n * @author mikael emtinger / http://gomo.se/\n */\n\nvar ShaderLib = {\n\n\tbasic: {\n\n\t\tuniforms: UniformsUtils.merge( [\n\n\t\t\tUniformsLib.common,\n\t\t\tUniformsLib.aomap,\n\t\t\tUniformsLib.fog\n\n\t\t] ),\n\n\t\tvertexShader: ShaderChunk.meshbasic_vert,\n\t\tfragmentShader: ShaderChunk.meshbasic_frag\n\n\t},\n\n\tlambert: {\n\n\t\tuniforms: UniformsUtils.merge( [\n\n\t\t\tUniformsLib.common,\n\t\t\tUniformsLib.aomap,\n\t\t\tUniformsLib.lightmap,\n\t\t\tUniformsLib.emissivemap,\n\t\t\tUniformsLib.fog,\n\t\t\tUniformsLib.lights,\n\n\t\t\t{\n\t\t\t\temissive : { value: new Color( 0x000000 ) }\n\t\t\t}\n\n\t\t] ),\n\n\t\tvertexShader: ShaderChunk.meshlambert_vert,\n\t\tfragmentShader: ShaderChunk.meshlambert_frag\n\n\t},\n\n\tphong: {\n\n\t\tuniforms: UniformsUtils.merge( [\n\n\t\t\tUniformsLib.common,\n\t\t\tUniformsLib.aomap,\n\t\t\tUniformsLib.lightmap,\n\t\t\tUniformsLib.emissivemap,\n\t\t\tUniformsLib.bumpmap,\n\t\t\tUniformsLib.normalmap,\n\t\t\tUniformsLib.displacementmap,\n\t\t\tUniformsLib.fog,\n\t\t\tUniformsLib.lights,\n\n\t\t\t{\n\t\t\t\temissive : { value: new Color( 0x000000 ) },\n\t\t\t\tspecular : { value: new Color( 0x111111 ) },\n\t\t\t\tshininess: { value: 30 }\n\t\t\t}\n\n\t\t] ),\n\n\t\tvertexShader: ShaderChunk.meshphong_vert,\n\t\tfragmentShader: ShaderChunk.meshphong_frag\n\n\t},\n\n\tstandard: {\n\n\t\tuniforms: UniformsUtils.merge( [\n\n\t\t\tUniformsLib.common,\n\t\t\tUniformsLib.aomap,\n\t\t\tUniformsLib.lightmap,\n\t\t\tUniformsLib.emissivemap,\n\t\t\tUniformsLib.bumpmap,\n\t\t\tUniformsLib.normalmap,\n\t\t\tUniformsLib.displacementmap,\n\t\t\tUniformsLib.roughnessmap,\n\t\t\tUniformsLib.metalnessmap,\n\t\t\tUniformsLib.fog,\n\t\t\tUniformsLib.lights,\n\n\t\t\t{\n\t\t\t\temissive : { value: new Color( 0x000000 ) },\n\t\t\t\troughness: { value: 0.5 },\n\t\t\t\tmetalness: { value: 0 },\n\t\t\t\tenvMapIntensity : { value: 1 }, // temporary\n\t\t\t}\n\n\t\t] ),\n\n\t\tvertexShader: ShaderChunk.meshphysical_vert,\n\t\tfragmentShader: ShaderChunk.meshphysical_frag\n\n\t},\n\n\tpoints: {\n\n\t\tuniforms: UniformsUtils.merge( [\n\n\t\t\tUniformsLib.points,\n\t\t\tUniformsLib.fog\n\n\t\t] ),\n\n\t\tvertexShader: ShaderChunk.points_vert,\n\t\tfragmentShader: ShaderChunk.points_frag\n\n\t},\n\n\tdashed: {\n\n\t\tuniforms: UniformsUtils.merge( [\n\n\t\t\tUniformsLib.common,\n\t\t\tUniformsLib.fog,\n\n\t\t\t{\n\t\t\t\tscale : { value: 1 },\n\t\t\t\tdashSize : { value: 1 },\n\t\t\t\ttotalSize: { value: 2 }\n\t\t\t}\n\n\t\t] ),\n\n\t\tvertexShader: ShaderChunk.linedashed_vert,\n\t\tfragmentShader: ShaderChunk.linedashed_frag\n\n\t},\n\n\tdepth: {\n\n\t\tuniforms: UniformsUtils.merge( [\n\n\t\t\tUniformsLib.common,\n\t\t\tUniformsLib.displacementmap\n\n\t\t] ),\n\n\t\tvertexShader: ShaderChunk.depth_vert,\n\t\tfragmentShader: ShaderChunk.depth_frag\n\n\t},\n\n\tnormal: {\n\n\t\tuniforms: {\n\n\t\t\topacity : { value: 1.0 }\n\n\t\t},\n\n\t\tvertexShader: ShaderChunk.normal_vert,\n\t\tfragmentShader: ShaderChunk.normal_frag\n\n\t},\n\n\t/* -------------------------------------------------------------------------\n\t//\tCube map shader\n\t ------------------------------------------------------------------------- */\n\n\tcube: {\n\n\t\tuniforms: {\n\t\t\ttCube: { value: null },\n\t\t\ttFlip: { value: - 1 },\n\t\t\topacity: { value: 1.0 }\n\t\t},\n\n\t\tvertexShader: ShaderChunk.cube_vert,\n\t\tfragmentShader: ShaderChunk.cube_frag\n\n\t},\n\n\t/* -------------------------------------------------------------------------\n\t//\tCube map shader\n\t ------------------------------------------------------------------------- */\n\n\tequirect: {\n\n\t\tuniforms: {\n\t\t\ttEquirect: { value: null },\n\t\t\ttFlip: { value: - 1 }\n\t\t},\n\n\t\tvertexShader: ShaderChunk.equirect_vert,\n\t\tfragmentShader: ShaderChunk.equirect_frag\n\n\t},\n\n\tdistanceRGBA: {\n\n\t\tuniforms: {\n\n\t\t\tlightPos: { value: new Vector3() }\n\n\t\t},\n\n\t\tvertexShader: ShaderChunk.distanceRGBA_vert,\n\t\tfragmentShader: ShaderChunk.distanceRGBA_frag\n\n\t}\n\n};\n\nShaderLib.physical = {\n\n\tuniforms: UniformsUtils.merge( [\n\n\t\tShaderLib.standard.uniforms,\n\n\t\t{\n\t\t\tclearCoat: { value: 0 },\n\t\t\tclearCoatRoughness: { value: 0 }\n\t\t}\n\n\t] ),\n\n\tvertexShader: ShaderChunk.meshphysical_vert,\n\tfragmentShader: ShaderChunk.meshphysical_frag\n\n};\n\n\nexport { ShaderLib };\n","import { Vector2 } from './Vector2';\n\n/**\n * @author bhouston / http://clara.io\n */\n\nfunction Box2( min, max ) {\n\n\tthis.min = ( min !== undefined ) ? min : new Vector2( + Infinity, + Infinity );\n\tthis.max = ( max !== undefined ) ? max : new Vector2( - Infinity, - Infinity );\n\n}\n\nBox2.prototype = {\n\n\tconstructor: Box2,\n\n\tset: function ( min, max ) {\n\n\t\tthis.min.copy( min );\n\t\tthis.max.copy( max );\n\n\t\treturn this;\n\n\t},\n\n\tsetFromPoints: function ( points ) {\n\n\t\tthis.makeEmpty();\n\n\t\tfor ( var i = 0, il = points.length; i < il; i ++ ) {\n\n\t\t\tthis.expandByPoint( points[ i ] );\n\n\t\t}\n\n\t\treturn this;\n\n\t},\n\n\tsetFromCenterAndSize: function () {\n\n\t\tvar v1 = new Vector2();\n\n\t\treturn function setFromCenterAndSize( center, size ) {\n\n\t\t\tvar halfSize = v1.copy( size ).multiplyScalar( 0.5 );\n\t\t\tthis.min.copy( center ).sub( halfSize );\n\t\t\tthis.max.copy( center ).add( halfSize );\n\n\t\t\treturn this;\n\n\t\t};\n\n\t}(),\n\n\tclone: function () {\n\n\t\treturn new this.constructor().copy( this );\n\n\t},\n\n\tcopy: function ( box ) {\n\n\t\tthis.min.copy( box.min );\n\t\tthis.max.copy( box.max );\n\n\t\treturn this;\n\n\t},\n\n\tmakeEmpty: function () {\n\n\t\tthis.min.x = this.min.y = + Infinity;\n\t\tthis.max.x = this.max.y = - Infinity;\n\n\t\treturn this;\n\n\t},\n\n\tisEmpty: function () {\n\n\t\t// this is a more robust check for empty than ( volume <= 0 ) because volume can get positive with two negative axes\n\n\t\treturn ( this.max.x < this.min.x ) || ( this.max.y < this.min.y );\n\n\t},\n\n\tgetCenter: function ( optionalTarget ) {\n\n\t\tvar result = optionalTarget || new Vector2();\n\t\treturn this.isEmpty() ? result.set( 0, 0 ) : result.addVectors( this.min, this.max ).multiplyScalar( 0.5 );\n\n\t},\n\n\tgetSize: function ( optionalTarget ) {\n\n\t\tvar result = optionalTarget || new Vector2();\n\t\treturn this.isEmpty() ? result.set( 0, 0 ) : result.subVectors( this.max, this.min );\n\n\t},\n\n\texpandByPoint: function ( point ) {\n\n\t\tthis.min.min( point );\n\t\tthis.max.max( point );\n\n\t\treturn this;\n\n\t},\n\n\texpandByVector: function ( vector ) {\n\n\t\tthis.min.sub( vector );\n\t\tthis.max.add( vector );\n\n\t\treturn this;\n\n\t},\n\n\texpandByScalar: function ( scalar ) {\n\n\t\tthis.min.addScalar( - scalar );\n\t\tthis.max.addScalar( scalar );\n\n\t\treturn this;\n\n\t},\n\n\tcontainsPoint: function ( point ) {\n\n\t\tif ( point.x < this.min.x || point.x > this.max.x ||\n\t\t point.y < this.min.y || point.y > this.max.y ) {\n\n\t\t\treturn false;\n\n\t\t}\n\n\t\treturn true;\n\n\t},\n\n\tcontainsBox: function ( box ) {\n\n\t\tif ( ( this.min.x <= box.min.x ) && ( box.max.x <= this.max.x ) &&\n\t\t ( this.min.y <= box.min.y ) && ( box.max.y <= this.max.y ) ) {\n\n\t\t\treturn true;\n\n\t\t}\n\n\t\treturn false;\n\n\t},\n\n\tgetParameter: function ( point, optionalTarget ) {\n\n\t\t// This can potentially have a divide by zero if the box\n\t\t// has a size dimension of 0.\n\n\t\tvar result = optionalTarget || new Vector2();\n\n\t\treturn result.set(\n\t\t\t( point.x - this.min.x ) / ( this.max.x - this.min.x ),\n\t\t\t( point.y - this.min.y ) / ( this.max.y - this.min.y )\n\t\t);\n\n\t},\n\n\tintersectsBox: function ( box ) {\n\n\t\t// using 6 splitting planes to rule out intersections.\n\n\t\tif ( box.max.x < this.min.x || box.min.x > this.max.x ||\n\t\t box.max.y < this.min.y || box.min.y > this.max.y ) {\n\n\t\t\treturn false;\n\n\t\t}\n\n\t\treturn true;\n\n\t},\n\n\tclampPoint: function ( point, optionalTarget ) {\n\n\t\tvar result = optionalTarget || new Vector2();\n\t\treturn result.copy( point ).clamp( this.min, this.max );\n\n\t},\n\n\tdistanceToPoint: function () {\n\n\t\tvar v1 = new Vector2();\n\n\t\treturn function distanceToPoint( point ) {\n\n\t\t\tvar clampedPoint = v1.copy( point ).clamp( this.min, this.max );\n\t\t\treturn clampedPoint.sub( point ).length();\n\n\t\t};\n\n\t}(),\n\n\tintersect: function ( box ) {\n\n\t\tthis.min.max( box.min );\n\t\tthis.max.min( box.max );\n\n\t\treturn this;\n\n\t},\n\n\tunion: function ( box ) {\n\n\t\tthis.min.min( box.min );\n\t\tthis.max.max( box.max );\n\n\t\treturn this;\n\n\t},\n\n\ttranslate: function ( offset ) {\n\n\t\tthis.min.add( offset );\n\t\tthis.max.add( offset );\n\n\t\treturn this;\n\n\t},\n\n\tequals: function ( box ) {\n\n\t\treturn box.min.equals( this.min ) && box.max.equals( this.max );\n\n\t}\n\n};\n\n\nexport { Box2 };\n","import { Box2 } from '../../../math/Box2';\nimport { Vector2 } from '../../../math/Vector2';\nimport { Vector3 } from '../../../math/Vector3';\n\n/**\n * @author mikael emtinger / http://gomo.se/\n * @author alteredq / http://alteredqualia.com/\n */\n\nfunction LensFlarePlugin( renderer, flares ) {\n\n\tvar gl = renderer.context;\n\tvar state = renderer.state;\n\n\tvar vertexBuffer, elementBuffer;\n\tvar shader, program, attributes, uniforms;\n\n\tvar tempTexture, occlusionTexture;\n\n\tfunction init() {\n\n\t\tvar vertices = new Float32Array( [\n\t\t\t- 1, - 1, 0, 0,\n\t\t\t 1, - 1, 1, 0,\n\t\t\t 1, 1, 1, 1,\n\t\t\t- 1, 1, 0, 1\n\t\t] );\n\n\t\tvar faces = new Uint16Array( [\n\t\t\t0, 1, 2,\n\t\t\t0, 2, 3\n\t\t] );\n\n\t\t// buffers\n\n\t\tvertexBuffer = gl.createBuffer();\n\t\telementBuffer = gl.createBuffer();\n\n\t\tgl.bindBuffer( gl.ARRAY_BUFFER, vertexBuffer );\n\t\tgl.bufferData( gl.ARRAY_BUFFER, vertices, gl.STATIC_DRAW );\n\n\t\tgl.bindBuffer( gl.ELEMENT_ARRAY_BUFFER, elementBuffer );\n\t\tgl.bufferData( gl.ELEMENT_ARRAY_BUFFER, faces, gl.STATIC_DRAW );\n\n\t\t// textures\n\n\t\ttempTexture = gl.createTexture();\n\t\tocclusionTexture = gl.createTexture();\n\n\t\tstate.bindTexture( gl.TEXTURE_2D, tempTexture );\n\t\tgl.texImage2D( gl.TEXTURE_2D, 0, gl.RGB, 16, 16, 0, gl.RGB, gl.UNSIGNED_BYTE, null );\n\t\tgl.texParameteri( gl.TEXTURE_2D, gl.TEXTURE_WRAP_S, gl.CLAMP_TO_EDGE );\n\t\tgl.texParameteri( gl.TEXTURE_2D, gl.TEXTURE_WRAP_T, gl.CLAMP_TO_EDGE );\n\t\tgl.texParameteri( gl.TEXTURE_2D, gl.TEXTURE_MAG_FILTER, gl.NEAREST );\n\t\tgl.texParameteri( gl.TEXTURE_2D, gl.TEXTURE_MIN_FILTER, gl.NEAREST );\n\n\t\tstate.bindTexture( gl.TEXTURE_2D, occlusionTexture );\n\t\tgl.texImage2D( gl.TEXTURE_2D, 0, gl.RGBA, 16, 16, 0, gl.RGBA, gl.UNSIGNED_BYTE, null );\n\t\tgl.texParameteri( gl.TEXTURE_2D, gl.TEXTURE_WRAP_S, gl.CLAMP_TO_EDGE );\n\t\tgl.texParameteri( gl.TEXTURE_2D, gl.TEXTURE_WRAP_T, gl.CLAMP_TO_EDGE );\n\t\tgl.texParameteri( gl.TEXTURE_2D, gl.TEXTURE_MAG_FILTER, gl.NEAREST );\n\t\tgl.texParameteri( gl.TEXTURE_2D, gl.TEXTURE_MIN_FILTER, gl.NEAREST );\n\n\t\tshader = {\n\n\t\t\tvertexShader: [\n\n\t\t\t\t\"uniform lowp int renderType;\",\n\n\t\t\t\t\"uniform vec3 screenPosition;\",\n\t\t\t\t\"uniform vec2 scale;\",\n\t\t\t\t\"uniform float rotation;\",\n\n\t\t\t\t\"uniform sampler2D occlusionMap;\",\n\n\t\t\t\t\"attribute vec2 position;\",\n\t\t\t\t\"attribute vec2 uv;\",\n\n\t\t\t\t\"varying vec2 vUV;\",\n\t\t\t\t\"varying float vVisibility;\",\n\n\t\t\t\t\"void main() {\",\n\n\t\t\t\t\t\"vUV = uv;\",\n\n\t\t\t\t\t\"vec2 pos = position;\",\n\n\t\t\t\t\t\"if ( renderType == 2 ) {\",\n\n\t\t\t\t\t\t\"vec4 visibility = texture2D( occlusionMap, vec2( 0.1, 0.1 ) );\",\n\t\t\t\t\t\t\"visibility += texture2D( occlusionMap, vec2( 0.5, 0.1 ) );\",\n\t\t\t\t\t\t\"visibility += texture2D( occlusionMap, vec2( 0.9, 0.1 ) );\",\n\t\t\t\t\t\t\"visibility += texture2D( occlusionMap, vec2( 0.9, 0.5 ) );\",\n\t\t\t\t\t\t\"visibility += texture2D( occlusionMap, vec2( 0.9, 0.9 ) );\",\n\t\t\t\t\t\t\"visibility += texture2D( occlusionMap, vec2( 0.5, 0.9 ) );\",\n\t\t\t\t\t\t\"visibility += texture2D( occlusionMap, vec2( 0.1, 0.9 ) );\",\n\t\t\t\t\t\t\"visibility += texture2D( occlusionMap, vec2( 0.1, 0.5 ) );\",\n\t\t\t\t\t\t\"visibility += texture2D( occlusionMap, vec2( 0.5, 0.5 ) );\",\n\n\t\t\t\t\t\t\"vVisibility = visibility.r / 9.0;\",\n\t\t\t\t\t\t\"vVisibility *= 1.0 - visibility.g / 9.0;\",\n\t\t\t\t\t\t\"vVisibility *= visibility.b / 9.0;\",\n\t\t\t\t\t\t\"vVisibility *= 1.0 - visibility.a / 9.0;\",\n\n\t\t\t\t\t\t\"pos.x = cos( rotation ) * position.x - sin( rotation ) * position.y;\",\n\t\t\t\t\t\t\"pos.y = sin( rotation ) * position.x + cos( rotation ) * position.y;\",\n\n\t\t\t\t\t\"}\",\n\n\t\t\t\t\t\"gl_Position = vec4( ( pos * scale + screenPosition.xy ).xy, screenPosition.z, 1.0 );\",\n\n\t\t\t\t\"}\"\n\n\t\t\t].join( \"\\n\" ),\n\n\t\t\tfragmentShader: [\n\n\t\t\t\t\"uniform lowp int renderType;\",\n\n\t\t\t\t\"uniform sampler2D map;\",\n\t\t\t\t\"uniform float opacity;\",\n\t\t\t\t\"uniform vec3 color;\",\n\n\t\t\t\t\"varying vec2 vUV;\",\n\t\t\t\t\"varying float vVisibility;\",\n\n\t\t\t\t\"void main() {\",\n\n\t\t\t\t\t// pink square\n\n\t\t\t\t\t\"if ( renderType == 0 ) {\",\n\n\t\t\t\t\t\t\"gl_FragColor = vec4( 1.0, 0.0, 1.0, 0.0 );\",\n\n\t\t\t\t\t// restore\n\n\t\t\t\t\t\"} else if ( renderType == 1 ) {\",\n\n\t\t\t\t\t\t\"gl_FragColor = texture2D( map, vUV );\",\n\n\t\t\t\t\t// flare\n\n\t\t\t\t\t\"} else {\",\n\n\t\t\t\t\t\t\"vec4 texture = texture2D( map, vUV );\",\n\t\t\t\t\t\t\"texture.a *= opacity * vVisibility;\",\n\t\t\t\t\t\t\"gl_FragColor = texture;\",\n\t\t\t\t\t\t\"gl_FragColor.rgb *= color;\",\n\n\t\t\t\t\t\"}\",\n\n\t\t\t\t\"}\"\n\n\t\t\t].join( \"\\n\" )\n\n\t\t};\n\n\t\tprogram = createProgram( shader );\n\n\t\tattributes = {\n\t\t\tvertex: gl.getAttribLocation ( program, \"position\" ),\n\t\t\tuv: gl.getAttribLocation ( program, \"uv\" )\n\t\t};\n\n\t\tuniforms = {\n\t\t\trenderType: gl.getUniformLocation( program, \"renderType\" ),\n\t\t\tmap: gl.getUniformLocation( program, \"map\" ),\n\t\t\tocclusionMap: gl.getUniformLocation( program, \"occlusionMap\" ),\n\t\t\topacity: gl.getUniformLocation( program, \"opacity\" ),\n\t\t\tcolor: gl.getUniformLocation( program, \"color\" ),\n\t\t\tscale: gl.getUniformLocation( program, \"scale\" ),\n\t\t\trotation: gl.getUniformLocation( program, \"rotation\" ),\n\t\t\tscreenPosition: gl.getUniformLocation( program, \"screenPosition\" )\n\t\t};\n\n\t}\n\n\t/*\n\t * Render lens flares\n\t * Method: renders 16x16 0xff00ff-colored points scattered over the light source area,\n\t * reads these back and calculates occlusion.\n\t */\n\n\tthis.render = function ( scene, camera, viewport ) {\n\n\t\tif ( flares.length === 0 ) return;\n\n\t\tvar tempPosition = new Vector3();\n\n\t\tvar invAspect = viewport.w / viewport.z,\n\t\t\thalfViewportWidth = viewport.z * 0.5,\n\t\t\thalfViewportHeight = viewport.w * 0.5;\n\n\t\tvar size = 16 / viewport.w,\n\t\t\tscale = new Vector2( size * invAspect, size );\n\n\t\tvar screenPosition = new Vector3( 1, 1, 0 ),\n\t\t\tscreenPositionPixels = new Vector2( 1, 1 );\n\n\t\tvar validArea = new Box2();\n\n\t\tvalidArea.min.set( viewport.x, viewport.y );\n\t\tvalidArea.max.set( viewport.x + ( viewport.z - 16 ), viewport.y + ( viewport.w - 16 ) );\n\n\t\tif ( program === undefined ) {\n\n\t\t\tinit();\n\n\t\t}\n\n\t\tgl.useProgram( program );\n\n\t\tstate.initAttributes();\n\t\tstate.enableAttribute( attributes.vertex );\n\t\tstate.enableAttribute( attributes.uv );\n\t\tstate.disableUnusedAttributes();\n\n\t\t// loop through all lens flares to update their occlusion and positions\n\t\t// setup gl and common used attribs/uniforms\n\n\t\tgl.uniform1i( uniforms.occlusionMap, 0 );\n\t\tgl.uniform1i( uniforms.map, 1 );\n\n\t\tgl.bindBuffer( gl.ARRAY_BUFFER, vertexBuffer );\n\t\tgl.vertexAttribPointer( attributes.vertex, 2, gl.FLOAT, false, 2 * 8, 0 );\n\t\tgl.vertexAttribPointer( attributes.uv, 2, gl.FLOAT, false, 2 * 8, 8 );\n\n\t\tgl.bindBuffer( gl.ELEMENT_ARRAY_BUFFER, elementBuffer );\n\n\t\tstate.disable( gl.CULL_FACE );\n\t\tstate.setDepthWrite( false );\n\n\t\tfor ( var i = 0, l = flares.length; i < l; i ++ ) {\n\n\t\t\tsize = 16 / viewport.w;\n\t\t\tscale.set( size * invAspect, size );\n\n\t\t\t// calc object screen position\n\n\t\t\tvar flare = flares[ i ];\n\n\t\t\ttempPosition.set( flare.matrixWorld.elements[ 12 ], flare.matrixWorld.elements[ 13 ], flare.matrixWorld.elements[ 14 ] );\n\n\t\t\ttempPosition.applyMatrix4( camera.matrixWorldInverse );\n\t\t\ttempPosition.applyProjection( camera.projectionMatrix );\n\n\t\t\t// setup arrays for gl programs\n\n\t\t\tscreenPosition.copy( tempPosition );\n\n\t\t\t// horizontal and vertical coordinate of the lower left corner of the pixels to copy\n\n\t\t\tscreenPositionPixels.x = viewport.x + ( screenPosition.x * halfViewportWidth ) + halfViewportWidth - 8;\n\t\t\tscreenPositionPixels.y = viewport.y + ( screenPosition.y * halfViewportHeight ) + halfViewportHeight - 8;\n\n\t\t\t// screen cull\n\n\t\t\tif ( validArea.containsPoint( screenPositionPixels ) === true ) {\n\n\t\t\t\t// save current RGB to temp texture\n\n\t\t\t\tstate.activeTexture( gl.TEXTURE0 );\n\t\t\t\tstate.bindTexture( gl.TEXTURE_2D, null );\n\t\t\t\tstate.activeTexture( gl.TEXTURE1 );\n\t\t\t\tstate.bindTexture( gl.TEXTURE_2D, tempTexture );\n\t\t\t\tgl.copyTexImage2D( gl.TEXTURE_2D, 0, gl.RGB, screenPositionPixels.x, screenPositionPixels.y, 16, 16, 0 );\n\n\n\t\t\t\t// render pink quad\n\n\t\t\t\tgl.uniform1i( uniforms.renderType, 0 );\n\t\t\t\tgl.uniform2f( uniforms.scale, scale.x, scale.y );\n\t\t\t\tgl.uniform3f( uniforms.screenPosition, screenPosition.x, screenPosition.y, screenPosition.z );\n\n\t\t\t\tstate.disable( gl.BLEND );\n\t\t\t\tstate.enable( gl.DEPTH_TEST );\n\n\t\t\t\tgl.drawElements( gl.TRIANGLES, 6, gl.UNSIGNED_SHORT, 0 );\n\n\n\t\t\t\t// copy result to occlusionMap\n\n\t\t\t\tstate.activeTexture( gl.TEXTURE0 );\n\t\t\t\tstate.bindTexture( gl.TEXTURE_2D, occlusionTexture );\n\t\t\t\tgl.copyTexImage2D( gl.TEXTURE_2D, 0, gl.RGBA, screenPositionPixels.x, screenPositionPixels.y, 16, 16, 0 );\n\n\n\t\t\t\t// restore graphics\n\n\t\t\t\tgl.uniform1i( uniforms.renderType, 1 );\n\t\t\t\tstate.disable( gl.DEPTH_TEST );\n\n\t\t\t\tstate.activeTexture( gl.TEXTURE1 );\n\t\t\t\tstate.bindTexture( gl.TEXTURE_2D, tempTexture );\n\t\t\t\tgl.drawElements( gl.TRIANGLES, 6, gl.UNSIGNED_SHORT, 0 );\n\n\n\t\t\t\t// update object positions\n\n\t\t\t\tflare.positionScreen.copy( screenPosition );\n\n\t\t\t\tif ( flare.customUpdateCallback ) {\n\n\t\t\t\t\tflare.customUpdateCallback( flare );\n\n\t\t\t\t} else {\n\n\t\t\t\t\tflare.updateLensFlares();\n\n\t\t\t\t}\n\n\t\t\t\t// render flares\n\n\t\t\t\tgl.uniform1i( uniforms.renderType, 2 );\n\t\t\t\tstate.enable( gl.BLEND );\n\n\t\t\t\tfor ( var j = 0, jl = flare.lensFlares.length; j < jl; j ++ ) {\n\n\t\t\t\t\tvar sprite = flare.lensFlares[ j ];\n\n\t\t\t\t\tif ( sprite.opacity > 0.001 && sprite.scale > 0.001 ) {\n\n\t\t\t\t\t\tscreenPosition.x = sprite.x;\n\t\t\t\t\t\tscreenPosition.y = sprite.y;\n\t\t\t\t\t\tscreenPosition.z = sprite.z;\n\n\t\t\t\t\t\tsize = sprite.size * sprite.scale / viewport.w;\n\n\t\t\t\t\t\tscale.x = size * invAspect;\n\t\t\t\t\t\tscale.y = size;\n\n\t\t\t\t\t\tgl.uniform3f( uniforms.screenPosition, screenPosition.x, screenPosition.y, screenPosition.z );\n\t\t\t\t\t\tgl.uniform2f( uniforms.scale, scale.x, scale.y );\n\t\t\t\t\t\tgl.uniform1f( uniforms.rotation, sprite.rotation );\n\n\t\t\t\t\t\tgl.uniform1f( uniforms.opacity, sprite.opacity );\n\t\t\t\t\t\tgl.uniform3f( uniforms.color, sprite.color.r, sprite.color.g, sprite.color.b );\n\n\t\t\t\t\t\tstate.setBlending( sprite.blending, sprite.blendEquation, sprite.blendSrc, sprite.blendDst );\n\t\t\t\t\t\trenderer.setTexture2D( sprite.texture, 1 );\n\n\t\t\t\t\t\tgl.drawElements( gl.TRIANGLES, 6, gl.UNSIGNED_SHORT, 0 );\n\n\t\t\t\t\t}\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t}\n\n\t\t// restore gl\n\n\t\tstate.enable( gl.CULL_FACE );\n\t\tstate.enable( gl.DEPTH_TEST );\n\t\tstate.setDepthWrite( true );\n\n\t\trenderer.resetGLState();\n\n\t};\n\n\tfunction createProgram( shader ) {\n\n\t\tvar program = gl.createProgram();\n\n\t\tvar fragmentShader = gl.createShader( gl.FRAGMENT_SHADER );\n\t\tvar vertexShader = gl.createShader( gl.VERTEX_SHADER );\n\n\t\tvar prefix = \"precision \" + renderer.getPrecision() + \" float;\\n\";\n\n\t\tgl.shaderSource( fragmentShader, prefix + shader.fragmentShader );\n\t\tgl.shaderSource( vertexShader, prefix + shader.vertexShader );\n\n\t\tgl.compileShader( fragmentShader );\n\t\tgl.compileShader( vertexShader );\n\n\t\tgl.attachShader( program, fragmentShader );\n\t\tgl.attachShader( program, vertexShader );\n\n\t\tgl.linkProgram( program );\n\n\t\treturn program;\n\n\t}\n\n}\n\n\nexport { LensFlarePlugin };\n","import { Texture } from '../../../textures/Texture';\nimport { Vector3 } from '../../../math/Vector3';\nimport { Quaternion } from '../../../math/Quaternion';\n\n/**\n * @author mikael emtinger / http://gomo.se/\n * @author alteredq / http://alteredqualia.com/\n */\n\nfunction SpritePlugin( renderer, sprites ) {\n\n\tvar gl = renderer.context;\n\tvar state = renderer.state;\n\n\tvar vertexBuffer, elementBuffer;\n\tvar program, attributes, uniforms;\n\n\tvar texture;\n\n\t// decompose matrixWorld\n\n\tvar spritePosition = new Vector3();\n\tvar spriteRotation = new Quaternion();\n\tvar spriteScale = new Vector3();\n\n\tfunction init() {\n\n\t\tvar vertices = new Float32Array( [\n\t\t\t- 0.5, - 0.5, 0, 0,\n\t\t\t 0.5, - 0.5, 1, 0,\n\t\t\t 0.5, 0.5, 1, 1,\n\t\t\t- 0.5, 0.5, 0, 1\n\t\t] );\n\n\t\tvar faces = new Uint16Array( [\n\t\t\t0, 1, 2,\n\t\t\t0, 2, 3\n\t\t] );\n\n\t\tvertexBuffer = gl.createBuffer();\n\t\telementBuffer = gl.createBuffer();\n\n\t\tgl.bindBuffer( gl.ARRAY_BUFFER, vertexBuffer );\n\t\tgl.bufferData( gl.ARRAY_BUFFER, vertices, gl.STATIC_DRAW );\n\n\t\tgl.bindBuffer( gl.ELEMENT_ARRAY_BUFFER, elementBuffer );\n\t\tgl.bufferData( gl.ELEMENT_ARRAY_BUFFER, faces, gl.STATIC_DRAW );\n\n\t\tprogram = createProgram();\n\n\t\tattributes = {\n\t\t\tposition:\t\t\tgl.getAttribLocation ( program, 'position' ),\n\t\t\tuv:\t\t\t\t\tgl.getAttribLocation ( program, 'uv' )\n\t\t};\n\n\t\tuniforms = {\n\t\t\tuvOffset:\t\t\tgl.getUniformLocation( program, 'uvOffset' ),\n\t\t\tuvScale:\t\t\tgl.getUniformLocation( program, 'uvScale' ),\n\n\t\t\trotation:\t\t\tgl.getUniformLocation( program, 'rotation' ),\n\t\t\tscale:\t\t\t\tgl.getUniformLocation( program, 'scale' ),\n\n\t\t\tcolor:\t\t\t\tgl.getUniformLocation( program, 'color' ),\n\t\t\tmap:\t\t\t\tgl.getUniformLocation( program, 'map' ),\n\t\t\topacity:\t\t\tgl.getUniformLocation( program, 'opacity' ),\n\n\t\t\tmodelViewMatrix: \tgl.getUniformLocation( program, 'modelViewMatrix' ),\n\t\t\tprojectionMatrix:\tgl.getUniformLocation( program, 'projectionMatrix' ),\n\n\t\t\tfogType:\t\t\tgl.getUniformLocation( program, 'fogType' ),\n\t\t\tfogDensity:\t\t\tgl.getUniformLocation( program, 'fogDensity' ),\n\t\t\tfogNear:\t\t\tgl.getUniformLocation( program, 'fogNear' ),\n\t\t\tfogFar:\t\t\t\tgl.getUniformLocation( program, 'fogFar' ),\n\t\t\tfogColor:\t\t\tgl.getUniformLocation( program, 'fogColor' ),\n\n\t\t\talphaTest:\t\t\tgl.getUniformLocation( program, 'alphaTest' )\n\t\t};\n\n\t\tvar canvas = document.createElementNS( 'http://www.w3.org/1999/xhtml', 'canvas' );\n\t\tcanvas.width = 8;\n\t\tcanvas.height = 8;\n\n\t\tvar context = canvas.getContext( '2d' );\n\t\tcontext.fillStyle = 'white';\n\t\tcontext.fillRect( 0, 0, 8, 8 );\n\n\t\ttexture = new Texture( canvas );\n\t\ttexture.needsUpdate = true;\n\n\t}\n\n\tthis.render = function ( scene, camera ) {\n\n\t\tif ( sprites.length === 0 ) return;\n\n\t\t// setup gl\n\n\t\tif ( program === undefined ) {\n\n\t\t\tinit();\n\n\t\t}\n\n\t\tgl.useProgram( program );\n\n\t\tstate.initAttributes();\n\t\tstate.enableAttribute( attributes.position );\n\t\tstate.enableAttribute( attributes.uv );\n\t\tstate.disableUnusedAttributes();\n\n\t\tstate.disable( gl.CULL_FACE );\n\t\tstate.enable( gl.BLEND );\n\n\t\tgl.bindBuffer( gl.ARRAY_BUFFER, vertexBuffer );\n\t\tgl.vertexAttribPointer( attributes.position, 2, gl.FLOAT, false, 2 * 8, 0 );\n\t\tgl.vertexAttribPointer( attributes.uv, 2, gl.FLOAT, false, 2 * 8, 8 );\n\n\t\tgl.bindBuffer( gl.ELEMENT_ARRAY_BUFFER, elementBuffer );\n\n\t\tgl.uniformMatrix4fv( uniforms.projectionMatrix, false, camera.projectionMatrix.elements );\n\n\t\tstate.activeTexture( gl.TEXTURE0 );\n\t\tgl.uniform1i( uniforms.map, 0 );\n\n\t\tvar oldFogType = 0;\n\t\tvar sceneFogType = 0;\n\t\tvar fog = scene.fog;\n\n\t\tif ( fog ) {\n\n\t\t\tgl.uniform3f( uniforms.fogColor, fog.color.r, fog.color.g, fog.color.b );\n\n\t\t\tif ( (fog && fog.isFog) ) {\n\n\t\t\t\tgl.uniform1f( uniforms.fogNear, fog.near );\n\t\t\t\tgl.uniform1f( uniforms.fogFar, fog.far );\n\n\t\t\t\tgl.uniform1i( uniforms.fogType, 1 );\n\t\t\t\toldFogType = 1;\n\t\t\t\tsceneFogType = 1;\n\n\t\t\t} else if ( (fog && fog.isFogExp2) ) {\n\n\t\t\t\tgl.uniform1f( uniforms.fogDensity, fog.density );\n\n\t\t\t\tgl.uniform1i( uniforms.fogType, 2 );\n\t\t\t\toldFogType = 2;\n\t\t\t\tsceneFogType = 2;\n\n\t\t\t}\n\n\t\t} else {\n\n\t\t\tgl.uniform1i( uniforms.fogType, 0 );\n\t\t\toldFogType = 0;\n\t\t\tsceneFogType = 0;\n\n\t\t}\n\n\n\t\t// update positions and sort\n\n\t\tfor ( var i = 0, l = sprites.length; i < l; i ++ ) {\n\n\t\t\tvar sprite = sprites[ i ];\n\n\t\t\tsprite.modelViewMatrix.multiplyMatrices( camera.matrixWorldInverse, sprite.matrixWorld );\n\t\t\tsprite.z = - sprite.modelViewMatrix.elements[ 14 ];\n\n\t\t}\n\n\t\tsprites.sort( painterSortStable );\n\n\t\t// render all sprites\n\n\t\tvar scale = [];\n\n\t\tfor ( var i = 0, l = sprites.length; i < l; i ++ ) {\n\n\t\t\tvar sprite = sprites[ i ];\n\t\t\tvar material = sprite.material;\n\n\t\t\tif ( material.visible === false ) continue;\n\n\t\t\tgl.uniform1f( uniforms.alphaTest, material.alphaTest );\n\t\t\tgl.uniformMatrix4fv( uniforms.modelViewMatrix, false, sprite.modelViewMatrix.elements );\n\n\t\t\tsprite.matrixWorld.decompose( spritePosition, spriteRotation, spriteScale );\n\n\t\t\tscale[ 0 ] = spriteScale.x;\n\t\t\tscale[ 1 ] = spriteScale.y;\n\n\t\t\tvar fogType = 0;\n\n\t\t\tif ( scene.fog && material.fog ) {\n\n\t\t\t\tfogType = sceneFogType;\n\n\t\t\t}\n\n\t\t\tif ( oldFogType !== fogType ) {\n\n\t\t\t\tgl.uniform1i( uniforms.fogType, fogType );\n\t\t\t\toldFogType = fogType;\n\n\t\t\t}\n\n\t\t\tif ( material.map !== null ) {\n\n\t\t\t\tgl.uniform2f( uniforms.uvOffset, material.map.offset.x, material.map.offset.y );\n\t\t\t\tgl.uniform2f( uniforms.uvScale, material.map.repeat.x, material.map.repeat.y );\n\n\t\t\t} else {\n\n\t\t\t\tgl.uniform2f( uniforms.uvOffset, 0, 0 );\n\t\t\t\tgl.uniform2f( uniforms.uvScale, 1, 1 );\n\n\t\t\t}\n\n\t\t\tgl.uniform1f( uniforms.opacity, material.opacity );\n\t\t\tgl.uniform3f( uniforms.color, material.color.r, material.color.g, material.color.b );\n\n\t\t\tgl.uniform1f( uniforms.rotation, material.rotation );\n\t\t\tgl.uniform2fv( uniforms.scale, scale );\n\n\t\t\tstate.setBlending( material.blending, material.blendEquation, material.blendSrc, material.blendDst );\n\t\t\tstate.setDepthTest( material.depthTest );\n\t\t\tstate.setDepthWrite( material.depthWrite );\n\n\t\t\tif ( material.map ) {\n\n\t\t\t\trenderer.setTexture2D( material.map, 0 );\n\n\t\t\t} else {\n\n\t\t\t\trenderer.setTexture2D( texture, 0 );\n\n\t\t\t}\n\n\t\t\tgl.drawElements( gl.TRIANGLES, 6, gl.UNSIGNED_SHORT, 0 );\n\n\t\t}\n\n\t\t// restore gl\n\n\t\tstate.enable( gl.CULL_FACE );\n\n\t\trenderer.resetGLState();\n\n\t};\n\n\tfunction createProgram() {\n\n\t\tvar program = gl.createProgram();\n\n\t\tvar vertexShader = gl.createShader( gl.VERTEX_SHADER );\n\t\tvar fragmentShader = gl.createShader( gl.FRAGMENT_SHADER );\n\n\t\tgl.shaderSource( vertexShader, [\n\n\t\t\t'precision ' + renderer.getPrecision() + ' float;',\n\n\t\t\t'uniform mat4 modelViewMatrix;',\n\t\t\t'uniform mat4 projectionMatrix;',\n\t\t\t'uniform float rotation;',\n\t\t\t'uniform vec2 scale;',\n\t\t\t'uniform vec2 uvOffset;',\n\t\t\t'uniform vec2 uvScale;',\n\n\t\t\t'attribute vec2 position;',\n\t\t\t'attribute vec2 uv;',\n\n\t\t\t'varying vec2 vUV;',\n\n\t\t\t'void main() {',\n\n\t\t\t\t'vUV = uvOffset + uv * uvScale;',\n\n\t\t\t\t'vec2 alignedPosition = position * scale;',\n\n\t\t\t\t'vec2 rotatedPosition;',\n\t\t\t\t'rotatedPosition.x = cos( rotation ) * alignedPosition.x - sin( rotation ) * alignedPosition.y;',\n\t\t\t\t'rotatedPosition.y = sin( rotation ) * alignedPosition.x + cos( rotation ) * alignedPosition.y;',\n\n\t\t\t\t'vec4 finalPosition;',\n\n\t\t\t\t'finalPosition = modelViewMatrix * vec4( 0.0, 0.0, 0.0, 1.0 );',\n\t\t\t\t'finalPosition.xy += rotatedPosition;',\n\t\t\t\t'finalPosition = projectionMatrix * finalPosition;',\n\n\t\t\t\t'gl_Position = finalPosition;',\n\n\t\t\t'}'\n\n\t\t].join( '\\n' ) );\n\n\t\tgl.shaderSource( fragmentShader, [\n\n\t\t\t'precision ' + renderer.getPrecision() + ' float;',\n\n\t\t\t'uniform vec3 color;',\n\t\t\t'uniform sampler2D map;',\n\t\t\t'uniform float opacity;',\n\n\t\t\t'uniform int fogType;',\n\t\t\t'uniform vec3 fogColor;',\n\t\t\t'uniform float fogDensity;',\n\t\t\t'uniform float fogNear;',\n\t\t\t'uniform float fogFar;',\n\t\t\t'uniform float alphaTest;',\n\n\t\t\t'varying vec2 vUV;',\n\n\t\t\t'void main() {',\n\n\t\t\t\t'vec4 texture = texture2D( map, vUV );',\n\n\t\t\t\t'if ( texture.a < alphaTest ) discard;',\n\n\t\t\t\t'gl_FragColor = vec4( color * texture.xyz, texture.a * opacity );',\n\n\t\t\t\t'if ( fogType > 0 ) {',\n\n\t\t\t\t\t'float depth = gl_FragCoord.z / gl_FragCoord.w;',\n\t\t\t\t\t'float fogFactor = 0.0;',\n\n\t\t\t\t\t'if ( fogType == 1 ) {',\n\n\t\t\t\t\t\t'fogFactor = smoothstep( fogNear, fogFar, depth );',\n\n\t\t\t\t\t'} else {',\n\n\t\t\t\t\t\t'const float LOG2 = 1.442695;',\n\t\t\t\t\t\t'fogFactor = exp2( - fogDensity * fogDensity * depth * depth * LOG2 );',\n\t\t\t\t\t\t'fogFactor = 1.0 - clamp( fogFactor, 0.0, 1.0 );',\n\n\t\t\t\t\t'}',\n\n\t\t\t\t\t'gl_FragColor = mix( gl_FragColor, vec4( fogColor, gl_FragColor.w ), fogFactor );',\n\n\t\t\t\t'}',\n\n\t\t\t'}'\n\n\t\t].join( '\\n' ) );\n\n\t\tgl.compileShader( vertexShader );\n\t\tgl.compileShader( fragmentShader );\n\n\t\tgl.attachShader( program, vertexShader );\n\t\tgl.attachShader( program, fragmentShader );\n\n\t\tgl.linkProgram( program );\n\n\t\treturn program;\n\n\t}\n\n\tfunction painterSortStable( a, b ) {\n\n\t\tif ( a.renderOrder !== b.renderOrder ) {\n\n\t\t\treturn a.renderOrder - b.renderOrder;\n\n\t\t} else if ( a.z !== b.z ) {\n\n\t\t\treturn b.z - a.z;\n\n\t\t} else {\n\n\t\t\treturn b.id - a.id;\n\n\t\t}\n\n\t}\n\n}\n\n\nexport { SpritePlugin };\n","import { EventDispatcher } from '../core/EventDispatcher';\nimport { NoColors, FrontSide, SmoothShading, NormalBlending, LessEqualDepth, AddEquation, OneMinusSrcAlphaFactor, SrcAlphaFactor } from '../constants';\nimport { _Math } from '../math/Math';\n\n/**\n * @author mrdoob / http://mrdoob.com/\n * @author alteredq / http://alteredqualia.com/\n */\n\nfunction Material() {\n\n\tObject.defineProperty( this, 'id', { value: MaterialIdCount() } );\n\n\tthis.uuid = _Math.generateUUID();\n\n\tthis.name = '';\n\tthis.type = 'Material';\n\n\tthis.fog = true;\n\tthis.lights = true;\n\n\tthis.blending = NormalBlending;\n\tthis.side = FrontSide;\n\tthis.shading = SmoothShading; // THREE.FlatShading, THREE.SmoothShading\n\tthis.vertexColors = NoColors; // THREE.NoColors, THREE.VertexColors, THREE.FaceColors\n\n\tthis.opacity = 1;\n\tthis.transparent = false;\n\n\tthis.blendSrc = SrcAlphaFactor;\n\tthis.blendDst = OneMinusSrcAlphaFactor;\n\tthis.blendEquation = AddEquation;\n\tthis.blendSrcAlpha = null;\n\tthis.blendDstAlpha = null;\n\tthis.blendEquationAlpha = null;\n\n\tthis.depthFunc = LessEqualDepth;\n\tthis.depthTest = true;\n\tthis.depthWrite = true;\n\n\tthis.clippingPlanes = null;\n\tthis.clipIntersection = false;\n\tthis.clipShadows = false;\n\n\tthis.colorWrite = true;\n\n\tthis.precision = null; // override the renderer's default precision for this material\n\n\tthis.polygonOffset = false;\n\tthis.polygonOffsetFactor = 0;\n\tthis.polygonOffsetUnits = 0;\n\n\tthis.alphaTest = 0;\n\tthis.premultipliedAlpha = false;\n\n\tthis.overdraw = 0; // Overdrawn pixels (typically between 0 and 1) for fixing antialiasing gaps in CanvasRenderer\n\n\tthis.visible = true;\n\n\tthis._needsUpdate = true;\n\n}\n\nMaterial.prototype = {\n\n\tconstructor: Material,\n\n\tisMaterial: true,\n\n\tget needsUpdate() {\n\n\t\treturn this._needsUpdate;\n\n\t},\n\n\tset needsUpdate( value ) {\n\n\t\tif ( value === true ) this.update();\n\t\tthis._needsUpdate = value;\n\n\t},\n\n\tsetValues: function ( values ) {\n\n\t\tif ( values === undefined ) return;\n\n\t\tfor ( var key in values ) {\n\n\t\t\tvar newValue = values[ key ];\n\n\t\t\tif ( newValue === undefined ) {\n\n\t\t\t\tconsole.warn( \"THREE.Material: '\" + key + \"' parameter is undefined.\" );\n\t\t\t\tcontinue;\n\n\t\t\t}\n\n\t\t\tvar currentValue = this[ key ];\n\n\t\t\tif ( currentValue === undefined ) {\n\n\t\t\t\tconsole.warn( \"THREE.\" + this.type + \": '\" + key + \"' is not a property of this material.\" );\n\t\t\t\tcontinue;\n\n\t\t\t}\n\n\t\t\tif ( (currentValue && currentValue.isColor) ) {\n\n\t\t\t\tcurrentValue.set( newValue );\n\n\t\t\t} else if ( (currentValue && currentValue.isVector3) && (newValue && newValue.isVector3) ) {\n\n\t\t\t\tcurrentValue.copy( newValue );\n\n\t\t\t} else if ( key === 'overdraw' ) {\n\n\t\t\t\t// ensure overdraw is backwards-compatible with legacy boolean type\n\t\t\t\tthis[ key ] = Number( newValue );\n\n\t\t\t} else {\n\n\t\t\t\tthis[ key ] = newValue;\n\n\t\t\t}\n\n\t\t}\n\n\t},\n\n\ttoJSON: function ( meta ) {\n\n\t\tvar isRoot = meta === undefined;\n\n\t\tif ( isRoot ) {\n\n\t\t\tmeta = {\n\t\t\t\ttextures: {},\n\t\t\t\timages: {}\n\t\t\t};\n\n\t\t}\n\n\t\tvar data = {\n\t\t\tmetadata: {\n\t\t\t\tversion: 4.4,\n\t\t\t\ttype: 'Material',\n\t\t\t\tgenerator: 'Material.toJSON'\n\t\t\t}\n\t\t};\n\n\t\t// standard Material serialization\n\t\tdata.uuid = this.uuid;\n\t\tdata.type = this.type;\n\n\t\tif ( this.name !== '' ) data.name = this.name;\n\n\t\tif ( (this.color && this.color.isColor) ) data.color = this.color.getHex();\n\n\t\tif ( this.roughness !== undefined ) data.roughness = this.roughness;\n\t\tif ( this.metalness !== undefined ) data.metalness = this.metalness;\n\n\t\tif ( (this.emissive && this.emissive.isColor) ) data.emissive = this.emissive.getHex();\n\t\tif ( (this.specular && this.specular.isColor) ) data.specular = this.specular.getHex();\n\t\tif ( this.shininess !== undefined ) data.shininess = this.shininess;\n\n\t\tif ( (this.map && this.map.isTexture) ) data.map = this.map.toJSON( meta ).uuid;\n\t\tif ( (this.alphaMap && this.alphaMap.isTexture) ) data.alphaMap = this.alphaMap.toJSON( meta ).uuid;\n\t\tif ( (this.lightMap && this.lightMap.isTexture) ) data.lightMap = this.lightMap.toJSON( meta ).uuid;\n\t\tif ( (this.bumpMap && this.bumpMap.isTexture) ) {\n\n\t\t\tdata.bumpMap = this.bumpMap.toJSON( meta ).uuid;\n\t\t\tdata.bumpScale = this.bumpScale;\n\n\t\t}\n\t\tif ( (this.normalMap && this.normalMap.isTexture) ) {\n\n\t\t\tdata.normalMap = this.normalMap.toJSON( meta ).uuid;\n\t\t\tdata.normalScale = this.normalScale.toArray();\n\n\t\t}\n\t\tif ( (this.displacementMap && this.displacementMap.isTexture) ) {\n\n\t\t\tdata.displacementMap = this.displacementMap.toJSON( meta ).uuid;\n\t\t\tdata.displacementScale = this.displacementScale;\n\t\t\tdata.displacementBias = this.displacementBias;\n\n\t\t}\n\t\tif ( (this.roughnessMap && this.roughnessMap.isTexture) ) data.roughnessMap = this.roughnessMap.toJSON( meta ).uuid;\n\t\tif ( (this.metalnessMap && this.metalnessMap.isTexture) ) data.metalnessMap = this.metalnessMap.toJSON( meta ).uuid;\n\n\t\tif ( (this.emissiveMap && this.emissiveMap.isTexture) ) data.emissiveMap = this.emissiveMap.toJSON( meta ).uuid;\n\t\tif ( (this.specularMap && this.specularMap.isTexture) ) data.specularMap = this.specularMap.toJSON( meta ).uuid;\n\n\t\tif ( (this.envMap && this.envMap.isTexture) ) {\n\n\t\t\tdata.envMap = this.envMap.toJSON( meta ).uuid;\n\t\t\tdata.reflectivity = this.reflectivity; // Scale behind envMap\n\n\t\t}\n\n\t\tif ( this.size !== undefined ) data.size = this.size;\n\t\tif ( this.sizeAttenuation !== undefined ) data.sizeAttenuation = this.sizeAttenuation;\n\n\t\tif ( this.blending !== NormalBlending ) data.blending = this.blending;\n\t\tif ( this.shading !== SmoothShading ) data.shading = this.shading;\n\t\tif ( this.side !== FrontSide ) data.side = this.side;\n\t\tif ( this.vertexColors !== NoColors ) data.vertexColors = this.vertexColors;\n\n\t\tif ( this.opacity < 1 ) data.opacity = this.opacity;\n\t\tif ( this.transparent === true ) data.transparent = this.transparent;\n\n\t\tdata.depthFunc = this.depthFunc;\n\t\tdata.depthTest = this.depthTest;\n\t\tdata.depthWrite = this.depthWrite;\n\n\t\tif ( this.alphaTest > 0 ) data.alphaTest = this.alphaTest;\n\t\tif ( this.premultipliedAlpha === true ) data.premultipliedAlpha = this.premultipliedAlpha;\n\t\tif ( this.wireframe === true ) data.wireframe = this.wireframe;\n\t\tif ( this.wireframeLinewidth > 1 ) data.wireframeLinewidth = this.wireframeLinewidth;\n\t\tif ( this.wireframeLinecap !== 'round' ) data.wireframeLinecap = this.wireframeLinecap;\n\t\tif ( this.wireframeLinejoin !== 'round' ) data.wireframeLinejoin = this.wireframeLinejoin;\n\n\t\tdata.skinning = this.skinning;\n\t\tdata.morphTargets = this.morphTargets;\n\n\t\t// TODO: Copied from Object3D.toJSON\n\n\t\tfunction extractFromCache( cache ) {\n\n\t\t\tvar values = [];\n\n\t\t\tfor ( var key in cache ) {\n\n\t\t\t\tvar data = cache[ key ];\n\t\t\t\tdelete data.metadata;\n\t\t\t\tvalues.push( data );\n\n\t\t\t}\n\n\t\t\treturn values;\n\n\t\t}\n\n\t\tif ( isRoot ) {\n\n\t\t\tvar textures = extractFromCache( meta.textures );\n\t\t\tvar images = extractFromCache( meta.images );\n\n\t\t\tif ( textures.length > 0 ) data.textures = textures;\n\t\t\tif ( images.length > 0 ) data.images = images;\n\n\t\t}\n\n\t\treturn data;\n\n\t},\n\n\tclone: function () {\n\n\t\treturn new this.constructor().copy( this );\n\n\t},\n\n\tcopy: function ( source ) {\n\n\t\tthis.name = source.name;\n\n\t\tthis.fog = source.fog;\n\t\tthis.lights = source.lights;\n\n\t\tthis.blending = source.blending;\n\t\tthis.side = source.side;\n\t\tthis.shading = source.shading;\n\t\tthis.vertexColors = source.vertexColors;\n\n\t\tthis.opacity = source.opacity;\n\t\tthis.transparent = source.transparent;\n\n\t\tthis.blendSrc = source.blendSrc;\n\t\tthis.blendDst = source.blendDst;\n\t\tthis.blendEquation = source.blendEquation;\n\t\tthis.blendSrcAlpha = source.blendSrcAlpha;\n\t\tthis.blendDstAlpha = source.blendDstAlpha;\n\t\tthis.blendEquationAlpha = source.blendEquationAlpha;\n\n\t\tthis.depthFunc = source.depthFunc;\n\t\tthis.depthTest = source.depthTest;\n\t\tthis.depthWrite = source.depthWrite;\n\n\t\tthis.colorWrite = source.colorWrite;\n\n\t\tthis.precision = source.precision;\n\n\t\tthis.polygonOffset = source.polygonOffset;\n\t\tthis.polygonOffsetFactor = source.polygonOffsetFactor;\n\t\tthis.polygonOffsetUnits = source.polygonOffsetUnits;\n\n\t\tthis.alphaTest = source.alphaTest;\n\n\t\tthis.premultipliedAlpha = source.premultipliedAlpha;\n\n\t\tthis.overdraw = source.overdraw;\n\n\t\tthis.visible = source.visible;\n\t\tthis.clipShadows = source.clipShadows;\n\t\tthis.clipIntersection = source.clipIntersection;\n\n\t\tvar srcPlanes = source.clippingPlanes,\n\t\t\tdstPlanes = null;\n\n\t\tif ( srcPlanes !== null ) {\n\n\t\t\tvar n = srcPlanes.length;\n\t\t\tdstPlanes = new Array( n );\n\n\t\t\tfor ( var i = 0; i !== n; ++ i )\n\t\t\t\tdstPlanes[ i ] = srcPlanes[ i ].clone();\n\n\t\t}\n\n\t\tthis.clippingPlanes = dstPlanes;\n\n\t\treturn this;\n\n\t},\n\n\tupdate: function () {\n\n\t\tthis.dispatchEvent( { type: 'update' } );\n\n\t},\n\n\tdispose: function () {\n\n\t\tthis.dispatchEvent( { type: 'dispose' } );\n\n\t}\n\n};\n\nObject.assign( Material.prototype, EventDispatcher.prototype );\n\nvar count = 0;\nfunction MaterialIdCount() { return count++; };\n\n\nexport { MaterialIdCount, Material };\n","import { Material } from './Material';\nimport { UniformsUtils } from '../renderers/shaders/UniformsUtils';\n\n/**\n * @author alteredq / http://alteredqualia.com/\n *\n * parameters = {\n * defines: { \"label\" : \"value\" },\n * uniforms: { \"parameter1\": { value: 1.0 }, \"parameter2\": { value2: 2 } },\n *\n * fragmentShader: ,\n * vertexShader: ,\n *\n * wireframe: ,\n * wireframeLinewidth: ,\n *\n * lights: ,\n *\n * skinning: ,\n * morphTargets: ,\n * morphNormals: \n * }\n */\n\nfunction ShaderMaterial( parameters ) {\n\n\tMaterial.call( this );\n\n\tthis.type = 'ShaderMaterial';\n\n\tthis.defines = {};\n\tthis.uniforms = {};\n\n\tthis.vertexShader = 'void main() {\\n\\tgl_Position = projectionMatrix * modelViewMatrix * vec4( position, 1.0 );\\n}';\n\tthis.fragmentShader = 'void main() {\\n\\tgl_FragColor = vec4( 1.0, 0.0, 0.0, 1.0 );\\n}';\n\n\tthis.linewidth = 1;\n\n\tthis.wireframe = false;\n\tthis.wireframeLinewidth = 1;\n\n\tthis.fog = false; // set to use scene fog\n\tthis.lights = false; // set to use scene lights\n\tthis.clipping = false; // set to use user-defined clipping planes\n\n\tthis.skinning = false; // set to use skinning attribute streams\n\tthis.morphTargets = false; // set to use morph targets\n\tthis.morphNormals = false; // set to use morph normals\n\n\tthis.extensions = {\n\t\tderivatives: false, // set to use derivatives\n\t\tfragDepth: false, // set to use fragment depth values\n\t\tdrawBuffers: false, // set to use draw buffers\n\t\tshaderTextureLOD: false // set to use shader texture LOD\n\t};\n\n\t// When rendered geometry doesn't include these attributes but the material does,\n\t// use these default values in WebGL. This avoids errors when buffer data is missing.\n\tthis.defaultAttributeValues = {\n\t\t'color': [ 1, 1, 1 ],\n\t\t'uv': [ 0, 0 ],\n\t\t'uv2': [ 0, 0 ]\n\t};\n\n\tthis.index0AttributeName = undefined;\n\n\tif ( parameters !== undefined ) {\n\n\t\tif ( parameters.attributes !== undefined ) {\n\n\t\t\tconsole.error( 'THREE.ShaderMaterial: attributes should now be defined in THREE.BufferGeometry instead.' );\n\n\t\t}\n\n\t\tthis.setValues( parameters );\n\n\t}\n\n}\n\nShaderMaterial.prototype = Object.create( Material.prototype );\nShaderMaterial.prototype.constructor = ShaderMaterial;\n\nShaderMaterial.prototype.isShaderMaterial = true;\n\nShaderMaterial.prototype.copy = function ( source ) {\n\n\tMaterial.prototype.copy.call( this, source );\n\n\tthis.fragmentShader = source.fragmentShader;\n\tthis.vertexShader = source.vertexShader;\n\n\tthis.uniforms = UniformsUtils.clone( source.uniforms );\n\n\tthis.defines = source.defines;\n\n\tthis.wireframe = source.wireframe;\n\tthis.wireframeLinewidth = source.wireframeLinewidth;\n\n\tthis.lights = source.lights;\n\tthis.clipping = source.clipping;\n\n\tthis.skinning = source.skinning;\n\n\tthis.morphTargets = source.morphTargets;\n\tthis.morphNormals = source.morphNormals;\n\n\tthis.extensions = source.extensions;\n\n\treturn this;\n\n};\n\nShaderMaterial.prototype.toJSON = function ( meta ) {\n\n\tvar data = Material.prototype.toJSON.call( this, meta );\n\n\tdata.uniforms = this.uniforms;\n\tdata.vertexShader = this.vertexShader;\n\tdata.fragmentShader = this.fragmentShader;\n\n\treturn data;\n\n};\n\n\nexport { ShaderMaterial };\n","import { Material } from './Material';\nimport { BasicDepthPacking } from '../constants';\n\n/**\n * @author mrdoob / http://mrdoob.com/\n * @author alteredq / http://alteredqualia.com/\n * @author bhouston / https://clara.io\n * @author WestLangley / http://github.com/WestLangley\n *\n * parameters = {\n *\n * opacity: ,\n *\n * map: new THREE.Texture( ),\n *\n * alphaMap: new THREE.Texture( ),\n *\n * displacementMap: new THREE.Texture( ),\n * displacementScale: ,\n * displacementBias: ,\n *\n * wireframe: ,\n * wireframeLinewidth: \n * }\n */\n\nfunction MeshDepthMaterial( parameters ) {\n\n\tMaterial.call( this );\n\n\tthis.type = 'MeshDepthMaterial';\n\n\tthis.depthPacking = BasicDepthPacking;\n\n\tthis.skinning = false;\n\tthis.morphTargets = false;\n\n\tthis.map = null;\n\n\tthis.alphaMap = null;\n\n\tthis.displacementMap = null;\n\tthis.displacementScale = 1;\n\tthis.displacementBias = 0;\n\n\tthis.wireframe = false;\n\tthis.wireframeLinewidth = 1;\n\n\tthis.fog = false;\n\tthis.lights = false;\n\n\tthis.setValues( parameters );\n\n}\n\nMeshDepthMaterial.prototype = Object.create( Material.prototype );\nMeshDepthMaterial.prototype.constructor = MeshDepthMaterial;\n\nMeshDepthMaterial.prototype.isMeshDepthMaterial = true;\n\nMeshDepthMaterial.prototype.copy = function ( source ) {\n\n\tMaterial.prototype.copy.call( this, source );\n\n\tthis.depthPacking = source.depthPacking;\n\n\tthis.skinning = source.skinning;\n\tthis.morphTargets = source.morphTargets;\n\n\tthis.map = source.map;\n\n\tthis.alphaMap = source.alphaMap;\n\n\tthis.displacementMap = source.displacementMap;\n\tthis.displacementScale = source.displacementScale;\n\tthis.displacementBias = source.displacementBias;\n\n\tthis.wireframe = source.wireframe;\n\tthis.wireframeLinewidth = source.wireframeLinewidth;\n\n\treturn this;\n\n};\n\n\nexport { MeshDepthMaterial };\n","import { Vector3 } from './Vector3';\nimport { Sphere } from './Sphere';\n\n/**\n * @author bhouston / http://clara.io\n * @author WestLangley / http://github.com/WestLangley\n */\n\nfunction Box3( min, max ) {\n\n\tthis.min = ( min !== undefined ) ? min : new Vector3( + Infinity, + Infinity, + Infinity );\n\tthis.max = ( max !== undefined ) ? max : new Vector3( - Infinity, - Infinity, - Infinity );\n\n}\n\nBox3.prototype = {\n\n\tconstructor: Box3,\n\n\tisBox3: true,\n\n\tset: function ( min, max ) {\n\n\t\tthis.min.copy( min );\n\t\tthis.max.copy( max );\n\n\t\treturn this;\n\n\t},\n\n\tsetFromArray: function ( array ) {\n\n\t\tvar minX = + Infinity;\n\t\tvar minY = + Infinity;\n\t\tvar minZ = + Infinity;\n\n\t\tvar maxX = - Infinity;\n\t\tvar maxY = - Infinity;\n\t\tvar maxZ = - Infinity;\n\n\t\tfor ( var i = 0, l = array.length; i < l; i += 3 ) {\n\n\t\t\tvar x = array[ i ];\n\t\t\tvar y = array[ i + 1 ];\n\t\t\tvar z = array[ i + 2 ];\n\n\t\t\tif ( x < minX ) minX = x;\n\t\t\tif ( y < minY ) minY = y;\n\t\t\tif ( z < minZ ) minZ = z;\n\n\t\t\tif ( x > maxX ) maxX = x;\n\t\t\tif ( y > maxY ) maxY = y;\n\t\t\tif ( z > maxZ ) maxZ = z;\n\n\t\t}\n\n\t\tthis.min.set( minX, minY, minZ );\n\t\tthis.max.set( maxX, maxY, maxZ );\n\n\t},\n\n\tsetFromPoints: function ( points ) {\n\n\t\tthis.makeEmpty();\n\n\t\tfor ( var i = 0, il = points.length; i < il; i ++ ) {\n\n\t\t\tthis.expandByPoint( points[ i ] );\n\n\t\t}\n\n\t\treturn this;\n\n\t},\n\n\tsetFromCenterAndSize: function () {\n\n\t\tvar v1 = new Vector3();\n\n\t\treturn function setFromCenterAndSize( center, size ) {\n\n\t\t\tvar halfSize = v1.copy( size ).multiplyScalar( 0.5 );\n\n\t\t\tthis.min.copy( center ).sub( halfSize );\n\t\t\tthis.max.copy( center ).add( halfSize );\n\n\t\t\treturn this;\n\n\t\t};\n\n\t}(),\n\n\tsetFromObject: function () {\n\n\t\t// Computes the world-axis-aligned bounding box of an object (including its children),\n\t\t// accounting for both the object's, and children's, world transforms\n\n\t\tvar v1 = new Vector3();\n\n\t\treturn function setFromObject( object ) {\n\n\t\t\tvar scope = this;\n\n\t\t\tobject.updateMatrixWorld( true );\n\n\t\t\tthis.makeEmpty();\n\n\t\t\tobject.traverse( function ( node ) {\n\n\t\t\t\tvar geometry = node.geometry;\n\n\t\t\t\tif ( geometry !== undefined ) {\n\n\t\t\t\t\tif ( (geometry && geometry.isGeometry) ) {\n\n\t\t\t\t\t\tvar vertices = geometry.vertices;\n\n\t\t\t\t\t\tfor ( var i = 0, il = vertices.length; i < il; i ++ ) {\n\n\t\t\t\t\t\t\tv1.copy( vertices[ i ] );\n\t\t\t\t\t\t\tv1.applyMatrix4( node.matrixWorld );\n\n\t\t\t\t\t\t\tscope.expandByPoint( v1 );\n\n\t\t\t\t\t\t}\n\n\t\t\t\t\t} else if ( (geometry && geometry.isBufferGeometry) ) {\n\n\t\t\t\t\t\tvar attribute = geometry.attributes.position;\n\n\t\t\t\t\t\tif ( attribute !== undefined ) {\n\n\t\t\t\t\t\t\tvar array, offset, stride;\n\n\t\t\t\t\t\t\tif ( (attribute && attribute.isInterleavedBufferAttribute) ) {\n\n\t\t\t\t\t\t\t\tarray = attribute.data.array;\n\t\t\t\t\t\t\t\toffset = attribute.offset;\n\t\t\t\t\t\t\t\tstride = attribute.data.stride;\n\n\t\t\t\t\t\t\t} else {\n\n\t\t\t\t\t\t\t\tarray = attribute.array;\n\t\t\t\t\t\t\t\toffset = 0;\n\t\t\t\t\t\t\t\tstride = 3;\n\n\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\tfor ( var i = offset, il = array.length; i < il; i += stride ) {\n\n\t\t\t\t\t\t\t\tv1.fromArray( array, i );\n\t\t\t\t\t\t\t\tv1.applyMatrix4( node.matrixWorld );\n\n\t\t\t\t\t\t\t\tscope.expandByPoint( v1 );\n\n\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t}\n\n\t\t\t\t\t}\n\n\t\t\t\t}\n\n\t\t\t} );\n\n\t\t\treturn this;\n\n\t\t};\n\n\t}(),\n\n\tclone: function () {\n\n\t\treturn new this.constructor().copy( this );\n\n\t},\n\n\tcopy: function ( box ) {\n\n\t\tthis.min.copy( box.min );\n\t\tthis.max.copy( box.max );\n\n\t\treturn this;\n\n\t},\n\n\tmakeEmpty: function () {\n\n\t\tthis.min.x = this.min.y = this.min.z = + Infinity;\n\t\tthis.max.x = this.max.y = this.max.z = - Infinity;\n\n\t\treturn this;\n\n\t},\n\n\tisEmpty: function () {\n\n\t\t// this is a more robust check for empty than ( volume <= 0 ) because volume can get positive with two negative axes\n\n\t\treturn ( this.max.x < this.min.x ) || ( this.max.y < this.min.y ) || ( this.max.z < this.min.z );\n\n\t},\n\n\tgetCenter: function ( optionalTarget ) {\n\n\t\tvar result = optionalTarget || new Vector3();\n\t\treturn this.isEmpty() ? result.set( 0, 0, 0 ) : result.addVectors( this.min, this.max ).multiplyScalar( 0.5 );\n\n\t},\n\n\tgetSize: function ( optionalTarget ) {\n\n\t\tvar result = optionalTarget || new Vector3();\n\t\treturn this.isEmpty() ? result.set( 0, 0, 0 ) : result.subVectors( this.max, this.min );\n\n\t},\n\n\texpandByPoint: function ( point ) {\n\n\t\tthis.min.min( point );\n\t\tthis.max.max( point );\n\n\t\treturn this;\n\n\t},\n\n\texpandByVector: function ( vector ) {\n\n\t\tthis.min.sub( vector );\n\t\tthis.max.add( vector );\n\n\t\treturn this;\n\n\t},\n\n\texpandByScalar: function ( scalar ) {\n\n\t\tthis.min.addScalar( - scalar );\n\t\tthis.max.addScalar( scalar );\n\n\t\treturn this;\n\n\t},\n\n\tcontainsPoint: function ( point ) {\n\n\t\tif ( point.x < this.min.x || point.x > this.max.x ||\n\t\t\t\t point.y < this.min.y || point.y > this.max.y ||\n\t\t\t\t point.z < this.min.z || point.z > this.max.z ) {\n\n\t\t\treturn false;\n\n\t\t}\n\n\t\treturn true;\n\n\t},\n\n\tcontainsBox: function ( box ) {\n\n\t\tif ( ( this.min.x <= box.min.x ) && ( box.max.x <= this.max.x ) &&\n\t\t\t ( this.min.y <= box.min.y ) && ( box.max.y <= this.max.y ) &&\n\t\t\t ( this.min.z <= box.min.z ) && ( box.max.z <= this.max.z ) ) {\n\n\t\t\treturn true;\n\n\t\t}\n\n\t\treturn false;\n\n\t},\n\n\tgetParameter: function ( point, optionalTarget ) {\n\n\t\t// This can potentially have a divide by zero if the box\n\t\t// has a size dimension of 0.\n\n\t\tvar result = optionalTarget || new Vector3();\n\n\t\treturn result.set(\n\t\t\t( point.x - this.min.x ) / ( this.max.x - this.min.x ),\n\t\t\t( point.y - this.min.y ) / ( this.max.y - this.min.y ),\n\t\t\t( point.z - this.min.z ) / ( this.max.z - this.min.z )\n\t\t);\n\n\t},\n\n\tintersectsBox: function ( box ) {\n\n\t\t// using 6 splitting planes to rule out intersections.\n\n\t\tif ( box.max.x < this.min.x || box.min.x > this.max.x ||\n\t\t\t\t box.max.y < this.min.y || box.min.y > this.max.y ||\n\t\t\t\t box.max.z < this.min.z || box.min.z > this.max.z ) {\n\n\t\t\treturn false;\n\n\t\t}\n\n\t\treturn true;\n\n\t},\n\n\tintersectsSphere: ( function () {\n\n\t\tvar closestPoint;\n\n\t\treturn function intersectsSphere( sphere ) {\n\n\t\t\tif ( closestPoint === undefined ) closestPoint = new Vector3();\n\n\t\t\t// Find the point on the AABB closest to the sphere center.\n\t\t\tthis.clampPoint( sphere.center, closestPoint );\n\n\t\t\t// If that point is inside the sphere, the AABB and sphere intersect.\n\t\t\treturn closestPoint.distanceToSquared( sphere.center ) <= ( sphere.radius * sphere.radius );\n\n\t\t};\n\n\t} )(),\n\n\tintersectsPlane: function ( plane ) {\n\n\t\t// We compute the minimum and maximum dot product values. If those values\n\t\t// are on the same side (back or front) of the plane, then there is no intersection.\n\n\t\tvar min, max;\n\n\t\tif ( plane.normal.x > 0 ) {\n\n\t\t\tmin = plane.normal.x * this.min.x;\n\t\t\tmax = plane.normal.x * this.max.x;\n\n\t\t} else {\n\n\t\t\tmin = plane.normal.x * this.max.x;\n\t\t\tmax = plane.normal.x * this.min.x;\n\n\t\t}\n\n\t\tif ( plane.normal.y > 0 ) {\n\n\t\t\tmin += plane.normal.y * this.min.y;\n\t\t\tmax += plane.normal.y * this.max.y;\n\n\t\t} else {\n\n\t\t\tmin += plane.normal.y * this.max.y;\n\t\t\tmax += plane.normal.y * this.min.y;\n\n\t\t}\n\n\t\tif ( plane.normal.z > 0 ) {\n\n\t\t\tmin += plane.normal.z * this.min.z;\n\t\t\tmax += plane.normal.z * this.max.z;\n\n\t\t} else {\n\n\t\t\tmin += plane.normal.z * this.max.z;\n\t\t\tmax += plane.normal.z * this.min.z;\n\n\t\t}\n\n\t\treturn ( min <= plane.constant && max >= plane.constant );\n\n\t},\n\n\tclampPoint: function ( point, optionalTarget ) {\n\n\t\tvar result = optionalTarget || new Vector3();\n\t\treturn result.copy( point ).clamp( this.min, this.max );\n\n\t},\n\n\tdistanceToPoint: function () {\n\n\t\tvar v1 = new Vector3();\n\n\t\treturn function distanceToPoint( point ) {\n\n\t\t\tvar clampedPoint = v1.copy( point ).clamp( this.min, this.max );\n\t\t\treturn clampedPoint.sub( point ).length();\n\n\t\t};\n\n\t}(),\n\n\tgetBoundingSphere: function () {\n\n\t\tvar v1 = new Vector3();\n\n\t\treturn function getBoundingSphere( optionalTarget ) {\n\n\t\t\tvar result = optionalTarget || new Sphere();\n\n\t\t\tthis.getCenter( result.center );\n\n\t\t\tresult.radius = this.getSize( v1 ).length() * 0.5;\n\n\t\t\treturn result;\n\n\t\t};\n\n\t}(),\n\n\tintersect: function ( box ) {\n\n\t\tthis.min.max( box.min );\n\t\tthis.max.min( box.max );\n\n\t\t// ensure that if there is no overlap, the result is fully empty, not slightly empty with non-inf/+inf values that will cause subsequence intersects to erroneously return valid values.\n\t\tif( this.isEmpty() ) this.makeEmpty();\n\n\t\treturn this;\n\n\t},\n\n\tunion: function ( box ) {\n\n\t\tthis.min.min( box.min );\n\t\tthis.max.max( box.max );\n\n\t\treturn this;\n\n\t},\n\n\tapplyMatrix4: function () {\n\n\t\tvar points = [\n\t\t\tnew Vector3(),\n\t\t\tnew Vector3(),\n\t\t\tnew Vector3(),\n\t\t\tnew Vector3(),\n\t\t\tnew Vector3(),\n\t\t\tnew Vector3(),\n\t\t\tnew Vector3(),\n\t\t\tnew Vector3()\n\t\t];\n\n\t\treturn function applyMatrix4( matrix ) {\n\n\t\t\t// transform of empty box is an empty box.\n\t\t\tif( this.isEmpty() ) return this;\n\n\t\t\t// NOTE: I am using a binary pattern to specify all 2^3 combinations below\n\t\t\tpoints[ 0 ].set( this.min.x, this.min.y, this.min.z ).applyMatrix4( matrix ); // 000\n\t\t\tpoints[ 1 ].set( this.min.x, this.min.y, this.max.z ).applyMatrix4( matrix ); // 001\n\t\t\tpoints[ 2 ].set( this.min.x, this.max.y, this.min.z ).applyMatrix4( matrix ); // 010\n\t\t\tpoints[ 3 ].set( this.min.x, this.max.y, this.max.z ).applyMatrix4( matrix ); // 011\n\t\t\tpoints[ 4 ].set( this.max.x, this.min.y, this.min.z ).applyMatrix4( matrix ); // 100\n\t\t\tpoints[ 5 ].set( this.max.x, this.min.y, this.max.z ).applyMatrix4( matrix ); // 101\n\t\t\tpoints[ 6 ].set( this.max.x, this.max.y, this.min.z ).applyMatrix4( matrix ); // 110\n\t\t\tpoints[ 7 ].set( this.max.x, this.max.y, this.max.z ).applyMatrix4( matrix );\t// 111\n\n\t\t\tthis.setFromPoints( points );\n\n\t\t\treturn this;\n\n\t\t};\n\n\t}(),\n\n\ttranslate: function ( offset ) {\n\n\t\tthis.min.add( offset );\n\t\tthis.max.add( offset );\n\n\t\treturn this;\n\n\t},\n\n\tequals: function ( box ) {\n\n\t\treturn box.min.equals( this.min ) && box.max.equals( this.max );\n\n\t}\n\n};\n\n\nexport { Box3 };\n","import { Box3 } from './Box3';\nimport { Vector3 } from './Vector3';\n\n/**\n * @author bhouston / http://clara.io\n * @author mrdoob / http://mrdoob.com/\n */\n\nfunction Sphere( center, radius ) {\n\n\tthis.center = ( center !== undefined ) ? center : new Vector3();\n\tthis.radius = ( radius !== undefined ) ? radius : 0;\n\n}\n\nSphere.prototype = {\n\n\tconstructor: Sphere,\n\n\tset: function ( center, radius ) {\n\n\t\tthis.center.copy( center );\n\t\tthis.radius = radius;\n\n\t\treturn this;\n\n\t},\n\n\tsetFromPoints: function () {\n\n\t\tvar box = new Box3();\n\n\t\treturn function setFromPoints( points, optionalCenter ) {\n\n\t\t\tvar center = this.center;\n\n\t\t\tif ( optionalCenter !== undefined ) {\n\n\t\t\t\tcenter.copy( optionalCenter );\n\n\t\t\t} else {\n\n\t\t\t\tbox.setFromPoints( points ).getCenter( center );\n\n\t\t\t}\n\n\t\t\tvar maxRadiusSq = 0;\n\n\t\t\tfor ( var i = 0, il = points.length; i < il; i ++ ) {\n\n\t\t\t\tmaxRadiusSq = Math.max( maxRadiusSq, center.distanceToSquared( points[ i ] ) );\n\n\t\t\t}\n\n\t\t\tthis.radius = Math.sqrt( maxRadiusSq );\n\n\t\t\treturn this;\n\n\t\t};\n\n\t}(),\n\n\tclone: function () {\n\n\t\treturn new this.constructor().copy( this );\n\n\t},\n\n\tcopy: function ( sphere ) {\n\n\t\tthis.center.copy( sphere.center );\n\t\tthis.radius = sphere.radius;\n\n\t\treturn this;\n\n\t},\n\n\tempty: function () {\n\n\t\treturn ( this.radius <= 0 );\n\n\t},\n\n\tcontainsPoint: function ( point ) {\n\n\t\treturn ( point.distanceToSquared( this.center ) <= ( this.radius * this.radius ) );\n\n\t},\n\n\tdistanceToPoint: function ( point ) {\n\n\t\treturn ( point.distanceTo( this.center ) - this.radius );\n\n\t},\n\n\tintersectsSphere: function ( sphere ) {\n\n\t\tvar radiusSum = this.radius + sphere.radius;\n\n\t\treturn sphere.center.distanceToSquared( this.center ) <= ( radiusSum * radiusSum );\n\n\t},\n\n\tintersectsBox: function ( box ) {\n\n\t\treturn box.intersectsSphere( this );\n\n\t},\n\n\tintersectsPlane: function ( plane ) {\n\n\t\t// We use the following equation to compute the signed distance from\n\t\t// the center of the sphere to the plane.\n\t\t//\n\t\t// distance = q * n - d\n\t\t//\n\t\t// If this distance is greater than the radius of the sphere,\n\t\t// then there is no intersection.\n\n\t\treturn Math.abs( this.center.dot( plane.normal ) - plane.constant ) <= this.radius;\n\n\t},\n\n\tclampPoint: function ( point, optionalTarget ) {\n\n\t\tvar deltaLengthSq = this.center.distanceToSquared( point );\n\n\t\tvar result = optionalTarget || new Vector3();\n\n\t\tresult.copy( point );\n\n\t\tif ( deltaLengthSq > ( this.radius * this.radius ) ) {\n\n\t\t\tresult.sub( this.center ).normalize();\n\t\t\tresult.multiplyScalar( this.radius ).add( this.center );\n\n\t\t}\n\n\t\treturn result;\n\n\t},\n\n\tgetBoundingBox: function ( optionalTarget ) {\n\n\t\tvar box = optionalTarget || new Box3();\n\n\t\tbox.set( this.center, this.center );\n\t\tbox.expandByScalar( this.radius );\n\n\t\treturn box;\n\n\t},\n\n\tapplyMatrix4: function ( matrix ) {\n\n\t\tthis.center.applyMatrix4( matrix );\n\t\tthis.radius = this.radius * matrix.getMaxScaleOnAxis();\n\n\t\treturn this;\n\n\t},\n\n\ttranslate: function ( offset ) {\n\n\t\tthis.center.add( offset );\n\n\t\treturn this;\n\n\t},\n\n\tequals: function ( sphere ) {\n\n\t\treturn sphere.center.equals( this.center ) && ( sphere.radius === this.radius );\n\n\t}\n\n};\n\n\nexport { Sphere };\n","import { Vector3 } from './Vector3';\n\n/**\n * @author alteredq / http://alteredqualia.com/\n * @author WestLangley / http://github.com/WestLangley\n * @author bhouston / http://clara.io\n * @author tschw\n */\n\nfunction Matrix3() {\n\n\tthis.elements = new Float32Array( [\n\n\t\t1, 0, 0,\n\t\t0, 1, 0,\n\t\t0, 0, 1\n\n\t] );\n\n\tif ( arguments.length > 0 ) {\n\n\t\tconsole.error( 'THREE.Matrix3: the constructor no longer reads arguments. use .set() instead.' );\n\n\t}\n\n}\n\nMatrix3.prototype = {\n\n\tconstructor: Matrix3,\n\n\tisMatrix3: true,\n\n\tset: function ( n11, n12, n13, n21, n22, n23, n31, n32, n33 ) {\n\n\t\tvar te = this.elements;\n\n\t\tte[ 0 ] = n11; te[ 1 ] = n21; te[ 2 ] = n31;\n\t\tte[ 3 ] = n12; te[ 4 ] = n22; te[ 5 ] = n32;\n\t\tte[ 6 ] = n13; te[ 7 ] = n23; te[ 8 ] = n33;\n\n\t\treturn this;\n\n\t},\n\n\tidentity: function () {\n\n\t\tthis.set(\n\n\t\t\t1, 0, 0,\n\t\t\t0, 1, 0,\n\t\t\t0, 0, 1\n\n\t\t);\n\n\t\treturn this;\n\n\t},\n\n\tclone: function () {\n\n\t\treturn new this.constructor().fromArray( this.elements );\n\n\t},\n\n\tcopy: function ( m ) {\n\n\t\tvar me = m.elements;\n\n\t\tthis.set(\n\n\t\t\tme[ 0 ], me[ 3 ], me[ 6 ],\n\t\t\tme[ 1 ], me[ 4 ], me[ 7 ],\n\t\t\tme[ 2 ], me[ 5 ], me[ 8 ]\n\n\t\t);\n\n\t\treturn this;\n\n\t},\n\n\tsetFromMatrix4: function( m ) {\n\n\t\tvar me = m.elements;\n\n\t\tthis.set(\n\n\t\t\tme[ 0 ], me[ 4 ], me[ 8 ],\n\t\t\tme[ 1 ], me[ 5 ], me[ 9 ],\n\t\t\tme[ 2 ], me[ 6 ], me[ 10 ]\n\n\t\t);\n\n\t\treturn this;\n\n\t},\n\n\tapplyToVector3Array: function () {\n\n\t\tvar v1;\n\n\t\treturn function applyToVector3Array( array, offset, length ) {\n\n\t\t\tif ( v1 === undefined ) v1 = new Vector3();\n\t\t\tif ( offset === undefined ) offset = 0;\n\t\t\tif ( length === undefined ) length = array.length;\n\n\t\t\tfor ( var i = 0, j = offset; i < length; i += 3, j += 3 ) {\n\n\t\t\t\tv1.fromArray( array, j );\n\t\t\t\tv1.applyMatrix3( this );\n\t\t\t\tv1.toArray( array, j );\n\n\t\t\t}\n\n\t\t\treturn array;\n\n\t\t};\n\n\t}(),\n\n\tapplyToBuffer: function () {\n\n\t\tvar v1;\n\n\t\treturn function applyToBuffer( buffer, offset, length ) {\n\n\t\t\tif ( v1 === undefined ) v1 = new Vector3();\n\t\t\tif ( offset === undefined ) offset = 0;\n\t\t\tif ( length === undefined ) length = buffer.length / buffer.itemSize;\n\n\t\t\tfor ( var i = 0, j = offset; i < length; i ++, j ++ ) {\n\n\t\t\t\tv1.x = buffer.getX( j );\n\t\t\t\tv1.y = buffer.getY( j );\n\t\t\t\tv1.z = buffer.getZ( j );\n\n\t\t\t\tv1.applyMatrix3( this );\n\n\t\t\t\tbuffer.setXYZ( j, v1.x, v1.y, v1.z );\n\n\t\t\t}\n\n\t\t\treturn buffer;\n\n\t\t};\n\n\t}(),\n\n\tmultiplyScalar: function ( s ) {\n\n\t\tvar te = this.elements;\n\n\t\tte[ 0 ] *= s; te[ 3 ] *= s; te[ 6 ] *= s;\n\t\tte[ 1 ] *= s; te[ 4 ] *= s; te[ 7 ] *= s;\n\t\tte[ 2 ] *= s; te[ 5 ] *= s; te[ 8 ] *= s;\n\n\t\treturn this;\n\n\t},\n\n\tdeterminant: function () {\n\n\t\tvar te = this.elements;\n\n\t\tvar a = te[ 0 ], b = te[ 1 ], c = te[ 2 ],\n\t\t\td = te[ 3 ], e = te[ 4 ], f = te[ 5 ],\n\t\t\tg = te[ 6 ], h = te[ 7 ], i = te[ 8 ];\n\n\t\treturn a * e * i - a * f * h - b * d * i + b * f * g + c * d * h - c * e * g;\n\n\t},\n\n\tgetInverse: function ( matrix, throwOnDegenerate ) {\n\n\t\tif ( (matrix && matrix.isMatrix4) ) {\n\n\t\t\tconsole.error( \"THREE.Matrix3.getInverse no longer takes a Matrix4 argument.\" );\n\n\t\t}\n\n\t\tvar me = matrix.elements,\n\t\t\tte = this.elements,\n\n\t\t\tn11 = me[ 0 ], n21 = me[ 1 ], n31 = me[ 2 ],\n\t\t\tn12 = me[ 3 ], n22 = me[ 4 ], n32 = me[ 5 ],\n\t\t\tn13 = me[ 6 ], n23 = me[ 7 ], n33 = me[ 8 ],\n\n\t\t\tt11 = n33 * n22 - n32 * n23,\n\t\t\tt12 = n32 * n13 - n33 * n12,\n\t\t\tt13 = n23 * n12 - n22 * n13,\n\n\t\t\tdet = n11 * t11 + n21 * t12 + n31 * t13;\n\n\t\tif ( det === 0 ) {\n\n\t\t\tvar msg = \"THREE.Matrix3.getInverse(): can't invert matrix, determinant is 0\";\n\n\t\t\tif ( throwOnDegenerate === true ) {\n\n\t\t\t\tthrow new Error( msg );\n\n\t\t\t} else {\n\n\t\t\t\tconsole.warn( msg );\n\n\t\t\t}\n\n\t\t\treturn this.identity();\n\t\t}\n\n\t\tvar detInv = 1 / det;\n\n\t\tte[ 0 ] = t11 * detInv;\n\t\tte[ 1 ] = ( n31 * n23 - n33 * n21 ) * detInv;\n\t\tte[ 2 ] = ( n32 * n21 - n31 * n22 ) * detInv;\n\n\t\tte[ 3 ] = t12 * detInv;\n\t\tte[ 4 ] = ( n33 * n11 - n31 * n13 ) * detInv;\n\t\tte[ 5 ] = ( n31 * n12 - n32 * n11 ) * detInv;\n\n\t\tte[ 6 ] = t13 * detInv;\n\t\tte[ 7 ] = ( n21 * n13 - n23 * n11 ) * detInv;\n\t\tte[ 8 ] = ( n22 * n11 - n21 * n12 ) * detInv;\n\n\t\treturn this;\n\n\t},\n\n\ttranspose: function () {\n\n\t\tvar tmp, m = this.elements;\n\n\t\ttmp = m[ 1 ]; m[ 1 ] = m[ 3 ]; m[ 3 ] = tmp;\n\t\ttmp = m[ 2 ]; m[ 2 ] = m[ 6 ]; m[ 6 ] = tmp;\n\t\ttmp = m[ 5 ]; m[ 5 ] = m[ 7 ]; m[ 7 ] = tmp;\n\n\t\treturn this;\n\n\t},\n\n\tflattenToArrayOffset: function ( array, offset ) {\n\n\t\tconsole.warn( \"THREE.Matrix3: .flattenToArrayOffset is deprecated \" +\n\t\t\t\t\"- just use .toArray instead.\" );\n\n\t\treturn this.toArray( array, offset );\n\n\t},\n\n\tgetNormalMatrix: function ( matrix4 ) {\n\n\t\treturn this.setFromMatrix4( matrix4 ).getInverse( this ).transpose();\n\n\t},\n\n\ttransposeIntoArray: function ( r ) {\n\n\t\tvar m = this.elements;\n\n\t\tr[ 0 ] = m[ 0 ];\n\t\tr[ 1 ] = m[ 3 ];\n\t\tr[ 2 ] = m[ 6 ];\n\t\tr[ 3 ] = m[ 1 ];\n\t\tr[ 4 ] = m[ 4 ];\n\t\tr[ 5 ] = m[ 7 ];\n\t\tr[ 6 ] = m[ 2 ];\n\t\tr[ 7 ] = m[ 5 ];\n\t\tr[ 8 ] = m[ 8 ];\n\n\t\treturn this;\n\n\t},\n\n\tfromArray: function ( array, offset ) {\n\n\t\tif ( offset === undefined ) offset = 0;\n\n\t\tfor( var i = 0; i < 9; i ++ ) {\n\n\t\t\tthis.elements[ i ] = array[ i + offset ];\n\n\t\t}\n\n\t\treturn this;\n\n\t},\n\n\ttoArray: function ( array, offset ) {\n\n\t\tif ( array === undefined ) array = [];\n\t\tif ( offset === undefined ) offset = 0;\n\n\t\tvar te = this.elements;\n\n\t\tarray[ offset ] = te[ 0 ];\n\t\tarray[ offset + 1 ] = te[ 1 ];\n\t\tarray[ offset + 2 ] = te[ 2 ];\n\n\t\tarray[ offset + 3 ] = te[ 3 ];\n\t\tarray[ offset + 4 ] = te[ 4 ];\n\t\tarray[ offset + 5 ] = te[ 5 ];\n\n\t\tarray[ offset + 6 ] = te[ 6 ];\n\t\tarray[ offset + 7 ] = te[ 7 ];\n\t\tarray[ offset + 8 ] = te[ 8 ];\n\n\t\treturn array;\n\n\t}\n\n};\n\n\nexport { Matrix3 };\n","import { Matrix3 } from './Matrix3';\nimport { Vector3 } from './Vector3';\n\n/**\n * @author bhouston / http://clara.io\n */\n\nfunction Plane( normal, constant ) {\n\n\tthis.normal = ( normal !== undefined ) ? normal : new Vector3( 1, 0, 0 );\n\tthis.constant = ( constant !== undefined ) ? constant : 0;\n\n}\n\nPlane.prototype = {\n\n\tconstructor: Plane,\n\n\tset: function ( normal, constant ) {\n\n\t\tthis.normal.copy( normal );\n\t\tthis.constant = constant;\n\n\t\treturn this;\n\n\t},\n\n\tsetComponents: function ( x, y, z, w ) {\n\n\t\tthis.normal.set( x, y, z );\n\t\tthis.constant = w;\n\n\t\treturn this;\n\n\t},\n\n\tsetFromNormalAndCoplanarPoint: function ( normal, point ) {\n\n\t\tthis.normal.copy( normal );\n\t\tthis.constant = - point.dot( this.normal );\t// must be this.normal, not normal, as this.normal is normalized\n\n\t\treturn this;\n\n\t},\n\n\tsetFromCoplanarPoints: function () {\n\n\t\tvar v1 = new Vector3();\n\t\tvar v2 = new Vector3();\n\n\t\treturn function setFromCoplanarPoints( a, b, c ) {\n\n\t\t\tvar normal = v1.subVectors( c, b ).cross( v2.subVectors( a, b ) ).normalize();\n\n\t\t\t// Q: should an error be thrown if normal is zero (e.g. degenerate plane)?\n\n\t\t\tthis.setFromNormalAndCoplanarPoint( normal, a );\n\n\t\t\treturn this;\n\n\t\t};\n\n\t}(),\n\n\tclone: function () {\n\n\t\treturn new this.constructor().copy( this );\n\n\t},\n\n\tcopy: function ( plane ) {\n\n\t\tthis.normal.copy( plane.normal );\n\t\tthis.constant = plane.constant;\n\n\t\treturn this;\n\n\t},\n\n\tnormalize: function () {\n\n\t\t// Note: will lead to a divide by zero if the plane is invalid.\n\n\t\tvar inverseNormalLength = 1.0 / this.normal.length();\n\t\tthis.normal.multiplyScalar( inverseNormalLength );\n\t\tthis.constant *= inverseNormalLength;\n\n\t\treturn this;\n\n\t},\n\n\tnegate: function () {\n\n\t\tthis.constant *= - 1;\n\t\tthis.normal.negate();\n\n\t\treturn this;\n\n\t},\n\n\tdistanceToPoint: function ( point ) {\n\n\t\treturn this.normal.dot( point ) + this.constant;\n\n\t},\n\n\tdistanceToSphere: function ( sphere ) {\n\n\t\treturn this.distanceToPoint( sphere.center ) - sphere.radius;\n\n\t},\n\n\tprojectPoint: function ( point, optionalTarget ) {\n\n\t\treturn this.orthoPoint( point, optionalTarget ).sub( point ).negate();\n\n\t},\n\n\torthoPoint: function ( point, optionalTarget ) {\n\n\t\tvar perpendicularMagnitude = this.distanceToPoint( point );\n\n\t\tvar result = optionalTarget || new Vector3();\n\t\treturn result.copy( this.normal ).multiplyScalar( perpendicularMagnitude );\n\n\t},\n\n\tintersectLine: function () {\n\n\t\tvar v1 = new Vector3();\n\n\t\treturn function intersectLine( line, optionalTarget ) {\n\n\t\t\tvar result = optionalTarget || new Vector3();\n\n\t\t\tvar direction = line.delta( v1 );\n\n\t\t\tvar denominator = this.normal.dot( direction );\n\n\t\t\tif ( denominator === 0 ) {\n\n\t\t\t\t// line is coplanar, return origin\n\t\t\t\tif ( this.distanceToPoint( line.start ) === 0 ) {\n\n\t\t\t\t\treturn result.copy( line.start );\n\n\t\t\t\t}\n\n\t\t\t\t// Unsure if this is the correct method to handle this case.\n\t\t\t\treturn undefined;\n\n\t\t\t}\n\n\t\t\tvar t = - ( line.start.dot( this.normal ) + this.constant ) / denominator;\n\n\t\t\tif ( t < 0 || t > 1 ) {\n\n\t\t\t\treturn undefined;\n\n\t\t\t}\n\n\t\t\treturn result.copy( direction ).multiplyScalar( t ).add( line.start );\n\n\t\t};\n\n\t}(),\n\n\tintersectsLine: function ( line ) {\n\n\t\t// Note: this tests if a line intersects the plane, not whether it (or its end-points) are coplanar with it.\n\n\t\tvar startSign = this.distanceToPoint( line.start );\n\t\tvar endSign = this.distanceToPoint( line.end );\n\n\t\treturn ( startSign < 0 && endSign > 0 ) || ( endSign < 0 && startSign > 0 );\n\n\t},\n\n\tintersectsBox: function ( box ) {\n\n\t\treturn box.intersectsPlane( this );\n\n\t},\n\n\tintersectsSphere: function ( sphere ) {\n\n\t\treturn sphere.intersectsPlane( this );\n\n\t},\n\n\tcoplanarPoint: function ( optionalTarget ) {\n\n\t\tvar result = optionalTarget || new Vector3();\n\t\treturn result.copy( this.normal ).multiplyScalar( - this.constant );\n\n\t},\n\n\tapplyMatrix4: function () {\n\n\t\tvar v1 = new Vector3();\n\t\tvar m1 = new Matrix3();\n\n\t\treturn function applyMatrix4( matrix, optionalNormalMatrix ) {\n\n\t\t\tvar referencePoint = this.coplanarPoint( v1 ).applyMatrix4( matrix );\n\n\t\t\t// transform normal based on theory here:\n\t\t\t// http://www.songho.ca/opengl/gl_normaltransform.html\n\t\t\tvar normalMatrix = optionalNormalMatrix || m1.getNormalMatrix( matrix );\n\t\t\tvar normal = this.normal.applyMatrix3( normalMatrix ).normalize();\n\n\t\t\t// recalculate constant (like in setFromNormalAndCoplanarPoint)\n\t\t\tthis.constant = - referencePoint.dot( normal );\n\n\t\t\treturn this;\n\n\t\t};\n\n\t}(),\n\n\ttranslate: function ( offset ) {\n\n\t\tthis.constant = this.constant - offset.dot( this.normal );\n\n\t\treturn this;\n\n\t},\n\n\tequals: function ( plane ) {\n\n\t\treturn plane.normal.equals( this.normal ) && ( plane.constant === this.constant );\n\n\t}\n\n};\n\n\nexport { Plane };\n","import { Vector3 } from './Vector3';\nimport { Sphere } from './Sphere';\nimport { Plane } from './Plane';\n\n/**\n * @author mrdoob / http://mrdoob.com/\n * @author alteredq / http://alteredqualia.com/\n * @author bhouston / http://clara.io\n */\n\nfunction Frustum( p0, p1, p2, p3, p4, p5 ) {\n\n\tthis.planes = [\n\n\t\t( p0 !== undefined ) ? p0 : new Plane(),\n\t\t( p1 !== undefined ) ? p1 : new Plane(),\n\t\t( p2 !== undefined ) ? p2 : new Plane(),\n\t\t( p3 !== undefined ) ? p3 : new Plane(),\n\t\t( p4 !== undefined ) ? p4 : new Plane(),\n\t\t( p5 !== undefined ) ? p5 : new Plane()\n\n\t];\n\n}\n\nFrustum.prototype = {\n\n\tconstructor: Frustum,\n\n\tset: function ( p0, p1, p2, p3, p4, p5 ) {\n\n\t\tvar planes = this.planes;\n\n\t\tplanes[ 0 ].copy( p0 );\n\t\tplanes[ 1 ].copy( p1 );\n\t\tplanes[ 2 ].copy( p2 );\n\t\tplanes[ 3 ].copy( p3 );\n\t\tplanes[ 4 ].copy( p4 );\n\t\tplanes[ 5 ].copy( p5 );\n\n\t\treturn this;\n\n\t},\n\n\tclone: function () {\n\n\t\treturn new this.constructor().copy( this );\n\n\t},\n\n\tcopy: function ( frustum ) {\n\n\t\tvar planes = this.planes;\n\n\t\tfor ( var i = 0; i < 6; i ++ ) {\n\n\t\t\tplanes[ i ].copy( frustum.planes[ i ] );\n\n\t\t}\n\n\t\treturn this;\n\n\t},\n\n\tsetFromMatrix: function ( m ) {\n\n\t\tvar planes = this.planes;\n\t\tvar me = m.elements;\n\t\tvar me0 = me[ 0 ], me1 = me[ 1 ], me2 = me[ 2 ], me3 = me[ 3 ];\n\t\tvar me4 = me[ 4 ], me5 = me[ 5 ], me6 = me[ 6 ], me7 = me[ 7 ];\n\t\tvar me8 = me[ 8 ], me9 = me[ 9 ], me10 = me[ 10 ], me11 = me[ 11 ];\n\t\tvar me12 = me[ 12 ], me13 = me[ 13 ], me14 = me[ 14 ], me15 = me[ 15 ];\n\n\t\tplanes[ 0 ].setComponents( me3 - me0, me7 - me4, me11 - me8, me15 - me12 ).normalize();\n\t\tplanes[ 1 ].setComponents( me3 + me0, me7 + me4, me11 + me8, me15 + me12 ).normalize();\n\t\tplanes[ 2 ].setComponents( me3 + me1, me7 + me5, me11 + me9, me15 + me13 ).normalize();\n\t\tplanes[ 3 ].setComponents( me3 - me1, me7 - me5, me11 - me9, me15 - me13 ).normalize();\n\t\tplanes[ 4 ].setComponents( me3 - me2, me7 - me6, me11 - me10, me15 - me14 ).normalize();\n\t\tplanes[ 5 ].setComponents( me3 + me2, me7 + me6, me11 + me10, me15 + me14 ).normalize();\n\n\t\treturn this;\n\n\t},\n\n\tintersectsObject: function () {\n\n\t\tvar sphere = new Sphere();\n\n\t\treturn function intersectsObject( object ) {\n\n\t\t\tvar geometry = object.geometry;\n\n\t\t\tif ( geometry.boundingSphere === null )\n\t\t\t\tgeometry.computeBoundingSphere();\n\n\t\t\tsphere.copy( geometry.boundingSphere )\n\t\t\t\t.applyMatrix4( object.matrixWorld );\n\n\t\t\treturn this.intersectsSphere( sphere );\n\n\t\t};\n\n\t}(),\n\n\tintersectsSprite: function () {\n\n\t\tvar sphere = new Sphere();\n\n\t\treturn function intersectsSprite( sprite ) {\n\n\t\t\tsphere.center.set( 0, 0, 0 );\n\t\t\tsphere.radius = 0.7071067811865476;\n\t\t\tsphere.applyMatrix4( sprite.matrixWorld );\n\n\t\t\treturn this.intersectsSphere( sphere );\n\n\t\t};\n\n\t}(),\n\n\tintersectsSphere: function ( sphere ) {\n\n\t\tvar planes = this.planes;\n\t\tvar center = sphere.center;\n\t\tvar negRadius = - sphere.radius;\n\n\t\tfor ( var i = 0; i < 6; i ++ ) {\n\n\t\t\tvar distance = planes[ i ].distanceToPoint( center );\n\n\t\t\tif ( distance < negRadius ) {\n\n\t\t\t\treturn false;\n\n\t\t\t}\n\n\t\t}\n\n\t\treturn true;\n\n\t},\n\n\tintersectsBox: function () {\n\n\t\tvar p1 = new Vector3(),\n\t\t\tp2 = new Vector3();\n\n\t\treturn function intersectsBox( box ) {\n\n\t\t\tvar planes = this.planes;\n\n\t\t\tfor ( var i = 0; i < 6 ; i ++ ) {\n\n\t\t\t\tvar plane = planes[ i ];\n\n\t\t\t\tp1.x = plane.normal.x > 0 ? box.min.x : box.max.x;\n\t\t\t\tp2.x = plane.normal.x > 0 ? box.max.x : box.min.x;\n\t\t\t\tp1.y = plane.normal.y > 0 ? box.min.y : box.max.y;\n\t\t\t\tp2.y = plane.normal.y > 0 ? box.max.y : box.min.y;\n\t\t\t\tp1.z = plane.normal.z > 0 ? box.min.z : box.max.z;\n\t\t\t\tp2.z = plane.normal.z > 0 ? box.max.z : box.min.z;\n\n\t\t\t\tvar d1 = plane.distanceToPoint( p1 );\n\t\t\t\tvar d2 = plane.distanceToPoint( p2 );\n\n\t\t\t\t// if both outside plane, no intersection\n\n\t\t\t\tif ( d1 < 0 && d2 < 0 ) {\n\n\t\t\t\t\treturn false;\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t\treturn true;\n\n\t\t};\n\n\t}(),\n\n\n\tcontainsPoint: function ( point ) {\n\n\t\tvar planes = this.planes;\n\n\t\tfor ( var i = 0; i < 6; i ++ ) {\n\n\t\t\tif ( planes[ i ].distanceToPoint( point ) < 0 ) {\n\n\t\t\t\treturn false;\n\n\t\t\t}\n\n\t\t}\n\n\t\treturn true;\n\n\t}\n\n};\n\n\nexport { Frustum };\n","/**\n * @author alteredq / http://alteredqualia.com/\n * @author mrdoob / http://mrdoob.com/\n */\n\nimport { FrontSide, BackSide, DoubleSide, RGBAFormat, NearestFilter, PCFShadowMap, RGBADepthPacking } from '../../constants';\nimport { WebGLRenderTarget } from '../WebGLRenderTarget';\nimport { ShaderMaterial } from '../../materials/ShaderMaterial';\nimport { UniformsUtils } from '../shaders/UniformsUtils';\nimport { ShaderLib } from '../shaders/ShaderLib';\nimport { MeshDepthMaterial } from '../../materials/MeshDepthMaterial';\nimport { Vector4 } from '../../math/Vector4';\nimport { Vector3 } from '../../math/Vector3';\nimport { Vector2 } from '../../math/Vector2';\nimport { Matrix4 } from '../../math/Matrix4';\nimport { Frustum } from '../../math/Frustum';\n\nfunction WebGLShadowMap( _renderer, _lights, _objects, capabilities ) {\n\n\tvar _gl = _renderer.context,\n\t_state = _renderer.state,\n\t_frustum = new Frustum(),\n\t_projScreenMatrix = new Matrix4(),\n\n\t_lightShadows = _lights.shadows,\n\n\t_shadowMapSize = new Vector2(),\n\t_maxShadowMapSize = new Vector2( capabilities.maxTextureSize, capabilities.maxTextureSize ),\n\n\t_lookTarget = new Vector3(),\n\t_lightPositionWorld = new Vector3(),\n\n\t_renderList = [],\n\n\t_MorphingFlag = 1,\n\t_SkinningFlag = 2,\n\n\t_NumberOfMaterialVariants = ( _MorphingFlag | _SkinningFlag ) + 1,\n\n\t_depthMaterials = new Array( _NumberOfMaterialVariants ),\n\t_distanceMaterials = new Array( _NumberOfMaterialVariants ),\n\n\t_materialCache = {};\n\n\tvar cubeDirections = [\n\t\tnew Vector3( 1, 0, 0 ), new Vector3( - 1, 0, 0 ), new Vector3( 0, 0, 1 ),\n\t\tnew Vector3( 0, 0, - 1 ), new Vector3( 0, 1, 0 ), new Vector3( 0, - 1, 0 )\n\t];\n\n\tvar cubeUps = [\n\t\tnew Vector3( 0, 1, 0 ), new Vector3( 0, 1, 0 ), new Vector3( 0, 1, 0 ),\n\t\tnew Vector3( 0, 1, 0 ), new Vector3( 0, 0, 1 ),\tnew Vector3( 0, 0, - 1 )\n\t];\n\n\tvar cube2DViewPorts = [\n\t\tnew Vector4(), new Vector4(), new Vector4(),\n\t\tnew Vector4(), new Vector4(), new Vector4()\n\t];\n\n\t// init\n\n\tvar depthMaterialTemplate = new MeshDepthMaterial();\n\tdepthMaterialTemplate.depthPacking = RGBADepthPacking;\n\tdepthMaterialTemplate.clipping = true;\n\n\tvar distanceShader = ShaderLib[ \"distanceRGBA\" ];\n\tvar distanceUniforms = UniformsUtils.clone( distanceShader.uniforms );\n\n\tfor ( var i = 0; i !== _NumberOfMaterialVariants; ++ i ) {\n\n\t\tvar useMorphing = ( i & _MorphingFlag ) !== 0;\n\t\tvar useSkinning = ( i & _SkinningFlag ) !== 0;\n\n\t\tvar depthMaterial = depthMaterialTemplate.clone();\n\t\tdepthMaterial.morphTargets = useMorphing;\n\t\tdepthMaterial.skinning = useSkinning;\n\n\t\t_depthMaterials[ i ] = depthMaterial;\n\n\t\tvar distanceMaterial = new ShaderMaterial( {\n\t\t\tdefines: {\n\t\t\t\t'USE_SHADOWMAP': ''\n\t\t\t},\n\t\t\tuniforms: distanceUniforms,\n\t\t\tvertexShader: distanceShader.vertexShader,\n\t\t\tfragmentShader: distanceShader.fragmentShader,\n\t\t\tmorphTargets: useMorphing,\n\t\t\tskinning: useSkinning,\n\t\t\tclipping: true\n\t\t} );\n\n\t\t_distanceMaterials[ i ] = distanceMaterial;\n\n\t}\n\n\t//\n\n\tvar scope = this;\n\n\tthis.enabled = false;\n\n\tthis.autoUpdate = true;\n\tthis.needsUpdate = false;\n\n\tthis.type = PCFShadowMap;\n\n\tthis.renderReverseSided = true;\n\tthis.renderSingleSided = true;\n\n\tthis.render = function ( scene, camera ) {\n\n\t\tif ( scope.enabled === false ) return;\n\t\tif ( scope.autoUpdate === false && scope.needsUpdate === false ) return;\n\n\t\tif ( _lightShadows.length === 0 ) return;\n\n\t\t// Set GL state for depth map.\n\t\t_state.buffers.color.setClear( 1, 1, 1, 1 );\n\t\t_state.disable( _gl.BLEND );\n\t\t_state.setDepthTest( true );\n\t\t_state.setScissorTest( false );\n\n\t\t// render depth map\n\n\t\tvar faceCount, isPointLight;\n\n\t\tfor ( var i = 0, il = _lightShadows.length; i < il; i ++ ) {\n\n\t\t\tvar light = _lightShadows[ i ];\n\t\t\tvar shadow = light.shadow;\n\n\t\t\tif ( shadow === undefined ) {\n\n\t\t\t\tconsole.warn( 'THREE.WebGLShadowMap:', light, 'has no shadow.' );\n\t\t\t\tcontinue;\n\n\t\t\t}\n\n\t\t\tvar shadowCamera = shadow.camera;\n\n\t\t\t_shadowMapSize.copy( shadow.mapSize );\n\t\t\t_shadowMapSize.min( _maxShadowMapSize );\n\n\t\t\tif ( (light && light.isPointLight) ) {\n\n\t\t\t\tfaceCount = 6;\n\t\t\t\tisPointLight = true;\n\n\t\t\t\tvar vpWidth = _shadowMapSize.x;\n\t\t\t\tvar vpHeight = _shadowMapSize.y;\n\n\t\t\t\t// These viewports map a cube-map onto a 2D texture with the\n\t\t\t\t// following orientation:\n\t\t\t\t//\n\t\t\t\t// xzXZ\n\t\t\t\t// y Y\n\t\t\t\t//\n\t\t\t\t// X - Positive x direction\n\t\t\t\t// x - Negative x direction\n\t\t\t\t// Y - Positive y direction\n\t\t\t\t// y - Negative y direction\n\t\t\t\t// Z - Positive z direction\n\t\t\t\t// z - Negative z direction\n\n\t\t\t\t// positive X\n\t\t\t\tcube2DViewPorts[ 0 ].set( vpWidth * 2, vpHeight, vpWidth, vpHeight );\n\t\t\t\t// negative X\n\t\t\t\tcube2DViewPorts[ 1 ].set( 0, vpHeight, vpWidth, vpHeight );\n\t\t\t\t// positive Z\n\t\t\t\tcube2DViewPorts[ 2 ].set( vpWidth * 3, vpHeight, vpWidth, vpHeight );\n\t\t\t\t// negative Z\n\t\t\t\tcube2DViewPorts[ 3 ].set( vpWidth, vpHeight, vpWidth, vpHeight );\n\t\t\t\t// positive Y\n\t\t\t\tcube2DViewPorts[ 4 ].set( vpWidth * 3, 0, vpWidth, vpHeight );\n\t\t\t\t// negative Y\n\t\t\t\tcube2DViewPorts[ 5 ].set( vpWidth, 0, vpWidth, vpHeight );\n\n\t\t\t\t_shadowMapSize.x *= 4.0;\n\t\t\t\t_shadowMapSize.y *= 2.0;\n\n\t\t\t} else {\n\n\t\t\t\tfaceCount = 1;\n\t\t\t\tisPointLight = false;\n\n\t\t\t}\n\n\t\t\tif ( shadow.map === null ) {\n\n\t\t\t\tvar pars = { minFilter: NearestFilter, magFilter: NearestFilter, format: RGBAFormat };\n\n\t\t\t\tshadow.map = new WebGLRenderTarget( _shadowMapSize.x, _shadowMapSize.y, pars );\n\n\t\t\t\tshadowCamera.updateProjectionMatrix();\n\n\t\t\t}\n\n\t\t\tif ( (shadow && shadow.isSpotLightShadow) ) {\n\n\t\t\t\tshadow.update( light );\n\n\t\t\t}\n\n\t\t\tvar shadowMap = shadow.map;\n\t\t\tvar shadowMatrix = shadow.matrix;\n\n\t\t\t_lightPositionWorld.setFromMatrixPosition( light.matrixWorld );\n\t\t\tshadowCamera.position.copy( _lightPositionWorld );\n\n\t\t\t_renderer.setRenderTarget( shadowMap );\n\t\t\t_renderer.clear();\n\n\t\t\t// render shadow map for each cube face (if omni-directional) or\n\t\t\t// run a single pass if not\n\n\t\t\tfor ( var face = 0; face < faceCount; face ++ ) {\n\n\t\t\t\tif ( isPointLight ) {\n\n\t\t\t\t\t_lookTarget.copy( shadowCamera.position );\n\t\t\t\t\t_lookTarget.add( cubeDirections[ face ] );\n\t\t\t\t\tshadowCamera.up.copy( cubeUps[ face ] );\n\t\t\t\t\tshadowCamera.lookAt( _lookTarget );\n\n\t\t\t\t\tvar vpDimensions = cube2DViewPorts[ face ];\n\t\t\t\t\t_state.viewport( vpDimensions );\n\n\t\t\t\t} else {\n\n\t\t\t\t\t_lookTarget.setFromMatrixPosition( light.target.matrixWorld );\n\t\t\t\t\tshadowCamera.lookAt( _lookTarget );\n\n\t\t\t\t}\n\n\t\t\t\tshadowCamera.updateMatrixWorld();\n\t\t\t\tshadowCamera.matrixWorldInverse.getInverse( shadowCamera.matrixWorld );\n\n\t\t\t\t// compute shadow matrix\n\n\t\t\t\tshadowMatrix.set(\n\t\t\t\t\t0.5, 0.0, 0.0, 0.5,\n\t\t\t\t\t0.0, 0.5, 0.0, 0.5,\n\t\t\t\t\t0.0, 0.0, 0.5, 0.5,\n\t\t\t\t\t0.0, 0.0, 0.0, 1.0\n\t\t\t\t);\n\n\t\t\t\tshadowMatrix.multiply( shadowCamera.projectionMatrix );\n\t\t\t\tshadowMatrix.multiply( shadowCamera.matrixWorldInverse );\n\n\t\t\t\t// update camera matrices and frustum\n\n\t\t\t\t_projScreenMatrix.multiplyMatrices( shadowCamera.projectionMatrix, shadowCamera.matrixWorldInverse );\n\t\t\t\t_frustum.setFromMatrix( _projScreenMatrix );\n\n\t\t\t\t// set object matrices & frustum culling\n\n\t\t\t\t_renderList.length = 0;\n\n\t\t\t\tprojectObject( scene, camera, shadowCamera );\n\n\t\t\t\t// render shadow map\n\t\t\t\t// render regular objects\n\n\t\t\t\tfor ( var j = 0, jl = _renderList.length; j < jl; j ++ ) {\n\n\t\t\t\t\tvar object = _renderList[ j ];\n\t\t\t\t\tvar geometry = _objects.update( object );\n\t\t\t\t\tvar material = object.material;\n\n\t\t\t\t\tif ( (material && material.isMultiMaterial) ) {\n\n\t\t\t\t\t\tvar groups = geometry.groups;\n\t\t\t\t\t\tvar materials = material.materials;\n\n\t\t\t\t\t\tfor ( var k = 0, kl = groups.length; k < kl; k ++ ) {\n\n\t\t\t\t\t\t\tvar group = groups[ k ];\n\t\t\t\t\t\t\tvar groupMaterial = materials[ group.materialIndex ];\n\n\t\t\t\t\t\t\tif ( groupMaterial.visible === true ) {\n\n\t\t\t\t\t\t\t\tvar depthMaterial = getDepthMaterial( object, groupMaterial, isPointLight, _lightPositionWorld );\n\t\t\t\t\t\t\t\t_renderer.renderBufferDirect( shadowCamera, null, geometry, depthMaterial, object, group );\n\n\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t}\n\n\t\t\t\t\t} else {\n\n\t\t\t\t\t\tvar depthMaterial = getDepthMaterial( object, material, isPointLight, _lightPositionWorld );\n\t\t\t\t\t\t_renderer.renderBufferDirect( shadowCamera, null, geometry, depthMaterial, object, null );\n\n\t\t\t\t\t}\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t}\n\n\t\t// Restore GL state.\n\t\tvar clearColor = _renderer.getClearColor(),\n\t\tclearAlpha = _renderer.getClearAlpha();\n\t\t_renderer.setClearColor( clearColor, clearAlpha );\n\n\t\tscope.needsUpdate = false;\n\n\t};\n\n\tfunction getDepthMaterial( object, material, isPointLight, lightPositionWorld ) {\n\n\t\tvar geometry = object.geometry;\n\n\t\tvar result = null;\n\n\t\tvar materialVariants = _depthMaterials;\n\t\tvar customMaterial = object.customDepthMaterial;\n\n\t\tif ( isPointLight ) {\n\n\t\t\tmaterialVariants = _distanceMaterials;\n\t\t\tcustomMaterial = object.customDistanceMaterial;\n\n\t\t}\n\n\t\tif ( ! customMaterial ) {\n\n\t\t\tvar useMorphing = false;\n\n\t\t\tif ( material.morphTargets ) {\n\n\t\t\t\tif ( (geometry && geometry.isBufferGeometry) ) {\n\n\t\t\t\t\tuseMorphing = geometry.morphAttributes && geometry.morphAttributes.position && geometry.morphAttributes.position.length > 0;\n\n\t\t\t\t} else if ( (geometry && geometry.isGeometry) ) {\n\n\t\t\t\t\tuseMorphing = geometry.morphTargets && geometry.morphTargets.length > 0;\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t\tvar useSkinning = object.isSkinnedMesh && material.skinning;\n\n\t\t\tvar variantIndex = 0;\n\n\t\t\tif ( useMorphing ) variantIndex |= _MorphingFlag;\n\t\t\tif ( useSkinning ) variantIndex |= _SkinningFlag;\n\n\t\t\tresult = materialVariants[ variantIndex ];\n\n\t\t} else {\n\n\t\t\tresult = customMaterial;\n\n\t\t}\n\n\t\tif ( _renderer.localClippingEnabled &&\n\t\t\t material.clipShadows === true &&\n\t\t\t\tmaterial.clippingPlanes.length !== 0 ) {\n\n\t\t\t// in this case we need a unique material instance reflecting the\n\t\t\t// appropriate state\n\n\t\t\tvar keyA = result.uuid, keyB = material.uuid;\n\n\t\t\tvar materialsForVariant = _materialCache[ keyA ];\n\n\t\t\tif ( materialsForVariant === undefined ) {\n\n\t\t\t\tmaterialsForVariant = {};\n\t\t\t\t_materialCache[ keyA ] = materialsForVariant;\n\n\t\t\t}\n\n\t\t\tvar cachedMaterial = materialsForVariant[ keyB ];\n\n\t\t\tif ( cachedMaterial === undefined ) {\n\n\t\t\t\tcachedMaterial = result.clone();\n\t\t\t\tmaterialsForVariant[ keyB ] = cachedMaterial;\n\n\t\t\t}\n\n\t\t\tresult = cachedMaterial;\n\n\t\t}\n\n\t\tresult.visible = material.visible;\n\t\tresult.wireframe = material.wireframe;\n\n\t\tvar side = material.side;\n\n\t\tif ( scope.renderSingleSided && side == DoubleSide ) {\n\n\t\t\tside = FrontSide;\n\n\t\t}\n\n\t\tif ( scope.renderReverseSided ) {\n\n\t\t\tif ( side === FrontSide ) side = BackSide;\n\t\t\telse if ( side === BackSide ) side = FrontSide;\n\n\t\t}\n\n\t\tresult.side = side;\n\n\t\tresult.clipShadows = material.clipShadows;\n\t\tresult.clippingPlanes = material.clippingPlanes;\n\n\t\tresult.wireframeLinewidth = material.wireframeLinewidth;\n\t\tresult.linewidth = material.linewidth;\n\n\t\tif ( isPointLight && result.uniforms.lightPos !== undefined ) {\n\n\t\t\tresult.uniforms.lightPos.value.copy( lightPositionWorld );\n\n\t\t}\n\n\t\treturn result;\n\n\t}\n\n\tfunction projectObject( object, camera, shadowCamera ) {\n\n\t\tif ( object.visible === false ) return;\n\n\t\tvar visible = ( object.layers.mask & camera.layers.mask ) !== 0;\n\n\t\tif ( visible && ( object.isMesh || object.isLine || object.isPoints ) ) {\n\n\t\t\tif ( object.castShadow && ( object.frustumCulled === false || _frustum.intersectsObject( object ) === true ) ) {\n\n\t\t\t\tvar material = object.material;\n\n\t\t\t\tif ( material.visible === true ) {\n\n\t\t\t\t\tobject.modelViewMatrix.multiplyMatrices( shadowCamera.matrixWorldInverse, object.matrixWorld );\n\t\t\t\t\t_renderList.push( object );\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t}\n\n\t\tvar children = object.children;\n\n\t\tfor ( var i = 0, l = children.length; i < l; i ++ ) {\n\n\t\t\tprojectObject( children[ i ], camera, shadowCamera );\n\n\t\t}\n\n\t}\n\n}\n\n\nexport { WebGLShadowMap };\n","import { Vector3 } from './Vector3';\n\n/**\n * @author bhouston / http://clara.io\n */\n\nfunction Ray( origin, direction ) {\n\n\tthis.origin = ( origin !== undefined ) ? origin : new Vector3();\n\tthis.direction = ( direction !== undefined ) ? direction : new Vector3();\n\n}\n\nRay.prototype = {\n\n\tconstructor: Ray,\n\n\tset: function ( origin, direction ) {\n\n\t\tthis.origin.copy( origin );\n\t\tthis.direction.copy( direction );\n\n\t\treturn this;\n\n\t},\n\n\tclone: function () {\n\n\t\treturn new this.constructor().copy( this );\n\n\t},\n\n\tcopy: function ( ray ) {\n\n\t\tthis.origin.copy( ray.origin );\n\t\tthis.direction.copy( ray.direction );\n\n\t\treturn this;\n\n\t},\n\n\tat: function ( t, optionalTarget ) {\n\n\t\tvar result = optionalTarget || new Vector3();\n\n\t\treturn result.copy( this.direction ).multiplyScalar( t ).add( this.origin );\n\n\t},\n\n\tlookAt: function ( v ) {\n\n\t\tthis.direction.copy( v ).sub( this.origin ).normalize();\n\n\t\treturn this;\n\n\t},\n\n\trecast: function () {\n\n\t\tvar v1 = new Vector3();\n\n\t\treturn function recast( t ) {\n\n\t\t\tthis.origin.copy( this.at( t, v1 ) );\n\n\t\t\treturn this;\n\n\t\t};\n\n\t}(),\n\n\tclosestPointToPoint: function ( point, optionalTarget ) {\n\n\t\tvar result = optionalTarget || new Vector3();\n\t\tresult.subVectors( point, this.origin );\n\t\tvar directionDistance = result.dot( this.direction );\n\n\t\tif ( directionDistance < 0 ) {\n\n\t\t\treturn result.copy( this.origin );\n\n\t\t}\n\n\t\treturn result.copy( this.direction ).multiplyScalar( directionDistance ).add( this.origin );\n\n\t},\n\n\tdistanceToPoint: function ( point ) {\n\n\t\treturn Math.sqrt( this.distanceSqToPoint( point ) );\n\n\t},\n\n\tdistanceSqToPoint: function () {\n\n\t\tvar v1 = new Vector3();\n\n\t\treturn function distanceSqToPoint( point ) {\n\n\t\t\tvar directionDistance = v1.subVectors( point, this.origin ).dot( this.direction );\n\n\t\t\t// point behind the ray\n\n\t\t\tif ( directionDistance < 0 ) {\n\n\t\t\t\treturn this.origin.distanceToSquared( point );\n\n\t\t\t}\n\n\t\t\tv1.copy( this.direction ).multiplyScalar( directionDistance ).add( this.origin );\n\n\t\t\treturn v1.distanceToSquared( point );\n\n\t\t};\n\n\t}(),\n\n\tdistanceSqToSegment: function () {\n\n\t\tvar segCenter = new Vector3();\n\t\tvar segDir = new Vector3();\n\t\tvar diff = new Vector3();\n\n\t\treturn function distanceSqToSegment( v0, v1, optionalPointOnRay, optionalPointOnSegment ) {\n\n\t\t\t// from http://www.geometrictools.com/GTEngine/Include/Mathematics/GteDistRaySegment.h\n\t\t\t// It returns the min distance between the ray and the segment\n\t\t\t// defined by v0 and v1\n\t\t\t// It can also set two optional targets :\n\t\t\t// - The closest point on the ray\n\t\t\t// - The closest point on the segment\n\n\t\t\tsegCenter.copy( v0 ).add( v1 ).multiplyScalar( 0.5 );\n\t\t\tsegDir.copy( v1 ).sub( v0 ).normalize();\n\t\t\tdiff.copy( this.origin ).sub( segCenter );\n\n\t\t\tvar segExtent = v0.distanceTo( v1 ) * 0.5;\n\t\t\tvar a01 = - this.direction.dot( segDir );\n\t\t\tvar b0 = diff.dot( this.direction );\n\t\t\tvar b1 = - diff.dot( segDir );\n\t\t\tvar c = diff.lengthSq();\n\t\t\tvar det = Math.abs( 1 - a01 * a01 );\n\t\t\tvar s0, s1, sqrDist, extDet;\n\n\t\t\tif ( det > 0 ) {\n\n\t\t\t\t// The ray and segment are not parallel.\n\n\t\t\t\ts0 = a01 * b1 - b0;\n\t\t\t\ts1 = a01 * b0 - b1;\n\t\t\t\textDet = segExtent * det;\n\n\t\t\t\tif ( s0 >= 0 ) {\n\n\t\t\t\t\tif ( s1 >= - extDet ) {\n\n\t\t\t\t\t\tif ( s1 <= extDet ) {\n\n\t\t\t\t\t\t\t// region 0\n\t\t\t\t\t\t\t// Minimum at interior points of ray and segment.\n\n\t\t\t\t\t\t\tvar invDet = 1 / det;\n\t\t\t\t\t\t\ts0 *= invDet;\n\t\t\t\t\t\t\ts1 *= invDet;\n\t\t\t\t\t\t\tsqrDist = s0 * ( s0 + a01 * s1 + 2 * b0 ) + s1 * ( a01 * s0 + s1 + 2 * b1 ) + c;\n\n\t\t\t\t\t\t} else {\n\n\t\t\t\t\t\t\t// region 1\n\n\t\t\t\t\t\t\ts1 = segExtent;\n\t\t\t\t\t\t\ts0 = Math.max( 0, - ( a01 * s1 + b0 ) );\n\t\t\t\t\t\t\tsqrDist = - s0 * s0 + s1 * ( s1 + 2 * b1 ) + c;\n\n\t\t\t\t\t\t}\n\n\t\t\t\t\t} else {\n\n\t\t\t\t\t\t// region 5\n\n\t\t\t\t\t\ts1 = - segExtent;\n\t\t\t\t\t\ts0 = Math.max( 0, - ( a01 * s1 + b0 ) );\n\t\t\t\t\t\tsqrDist = - s0 * s0 + s1 * ( s1 + 2 * b1 ) + c;\n\n\t\t\t\t\t}\n\n\t\t\t\t} else {\n\n\t\t\t\t\tif ( s1 <= - extDet ) {\n\n\t\t\t\t\t\t// region 4\n\n\t\t\t\t\t\ts0 = Math.max( 0, - ( - a01 * segExtent + b0 ) );\n\t\t\t\t\t\ts1 = ( s0 > 0 ) ? - segExtent : Math.min( Math.max( - segExtent, - b1 ), segExtent );\n\t\t\t\t\t\tsqrDist = - s0 * s0 + s1 * ( s1 + 2 * b1 ) + c;\n\n\t\t\t\t\t} else if ( s1 <= extDet ) {\n\n\t\t\t\t\t\t// region 3\n\n\t\t\t\t\t\ts0 = 0;\n\t\t\t\t\t\ts1 = Math.min( Math.max( - segExtent, - b1 ), segExtent );\n\t\t\t\t\t\tsqrDist = s1 * ( s1 + 2 * b1 ) + c;\n\n\t\t\t\t\t} else {\n\n\t\t\t\t\t\t// region 2\n\n\t\t\t\t\t\ts0 = Math.max( 0, - ( a01 * segExtent + b0 ) );\n\t\t\t\t\t\ts1 = ( s0 > 0 ) ? segExtent : Math.min( Math.max( - segExtent, - b1 ), segExtent );\n\t\t\t\t\t\tsqrDist = - s0 * s0 + s1 * ( s1 + 2 * b1 ) + c;\n\n\t\t\t\t\t}\n\n\t\t\t\t}\n\n\t\t\t} else {\n\n\t\t\t\t// Ray and segment are parallel.\n\n\t\t\t\ts1 = ( a01 > 0 ) ? - segExtent : segExtent;\n\t\t\t\ts0 = Math.max( 0, - ( a01 * s1 + b0 ) );\n\t\t\t\tsqrDist = - s0 * s0 + s1 * ( s1 + 2 * b1 ) + c;\n\n\t\t\t}\n\n\t\t\tif ( optionalPointOnRay ) {\n\n\t\t\t\toptionalPointOnRay.copy( this.direction ).multiplyScalar( s0 ).add( this.origin );\n\n\t\t\t}\n\n\t\t\tif ( optionalPointOnSegment ) {\n\n\t\t\t\toptionalPointOnSegment.copy( segDir ).multiplyScalar( s1 ).add( segCenter );\n\n\t\t\t}\n\n\t\t\treturn sqrDist;\n\n\t\t};\n\n\t}(),\n\n\tintersectSphere: function () {\n\n\t\tvar v1 = new Vector3();\n\n\t\treturn function intersectSphere( sphere, optionalTarget ) {\n\n\t\t\tv1.subVectors( sphere.center, this.origin );\n\t\t\tvar tca = v1.dot( this.direction );\n\t\t\tvar d2 = v1.dot( v1 ) - tca * tca;\n\t\t\tvar radius2 = sphere.radius * sphere.radius;\n\n\t\t\tif ( d2 > radius2 ) return null;\n\n\t\t\tvar thc = Math.sqrt( radius2 - d2 );\n\n\t\t\t// t0 = first intersect point - entrance on front of sphere\n\t\t\tvar t0 = tca - thc;\n\n\t\t\t// t1 = second intersect point - exit point on back of sphere\n\t\t\tvar t1 = tca + thc;\n\n\t\t\t// test to see if both t0 and t1 are behind the ray - if so, return null\n\t\t\tif ( t0 < 0 && t1 < 0 ) return null;\n\n\t\t\t// test to see if t0 is behind the ray:\n\t\t\t// if it is, the ray is inside the sphere, so return the second exit point scaled by t1,\n\t\t\t// in order to always return an intersect point that is in front of the ray.\n\t\t\tif ( t0 < 0 ) return this.at( t1, optionalTarget );\n\n\t\t\t// else t0 is in front of the ray, so return the first collision point scaled by t0\n\t\t\treturn this.at( t0, optionalTarget );\n\n\t\t};\n\n\t}(),\n\n\tintersectsSphere: function ( sphere ) {\n\n\t\treturn this.distanceToPoint( sphere.center ) <= sphere.radius;\n\n\t},\n\n\tdistanceToPlane: function ( plane ) {\n\n\t\tvar denominator = plane.normal.dot( this.direction );\n\n\t\tif ( denominator === 0 ) {\n\n\t\t\t// line is coplanar, return origin\n\t\t\tif ( plane.distanceToPoint( this.origin ) === 0 ) {\n\n\t\t\t\treturn 0;\n\n\t\t\t}\n\n\t\t\t// Null is preferable to undefined since undefined means.... it is undefined\n\n\t\t\treturn null;\n\n\t\t}\n\n\t\tvar t = - ( this.origin.dot( plane.normal ) + plane.constant ) / denominator;\n\n\t\t// Return if the ray never intersects the plane\n\n\t\treturn t >= 0 ? t : null;\n\n\t},\n\n\tintersectPlane: function ( plane, optionalTarget ) {\n\n\t\tvar t = this.distanceToPlane( plane );\n\n\t\tif ( t === null ) {\n\n\t\t\treturn null;\n\n\t\t}\n\n\t\treturn this.at( t, optionalTarget );\n\n\t},\n\n\n\n\tintersectsPlane: function ( plane ) {\n\n\t\t// check if the ray lies on the plane first\n\n\t\tvar distToPoint = plane.distanceToPoint( this.origin );\n\n\t\tif ( distToPoint === 0 ) {\n\n\t\t\treturn true;\n\n\t\t}\n\n\t\tvar denominator = plane.normal.dot( this.direction );\n\n\t\tif ( denominator * distToPoint < 0 ) {\n\n\t\t\treturn true;\n\n\t\t}\n\n\t\t// ray origin is behind the plane (and is pointing behind it)\n\n\t\treturn false;\n\n\t},\n\n\tintersectBox: function ( box, optionalTarget ) {\n\n\t\tvar tmin, tmax, tymin, tymax, tzmin, tzmax;\n\n\t\tvar invdirx = 1 / this.direction.x,\n\t\t\tinvdiry = 1 / this.direction.y,\n\t\t\tinvdirz = 1 / this.direction.z;\n\n\t\tvar origin = this.origin;\n\n\t\tif ( invdirx >= 0 ) {\n\n\t\t\ttmin = ( box.min.x - origin.x ) * invdirx;\n\t\t\ttmax = ( box.max.x - origin.x ) * invdirx;\n\n\t\t} else {\n\n\t\t\ttmin = ( box.max.x - origin.x ) * invdirx;\n\t\t\ttmax = ( box.min.x - origin.x ) * invdirx;\n\n\t\t}\n\n\t\tif ( invdiry >= 0 ) {\n\n\t\t\ttymin = ( box.min.y - origin.y ) * invdiry;\n\t\t\ttymax = ( box.max.y - origin.y ) * invdiry;\n\n\t\t} else {\n\n\t\t\ttymin = ( box.max.y - origin.y ) * invdiry;\n\t\t\ttymax = ( box.min.y - origin.y ) * invdiry;\n\n\t\t}\n\n\t\tif ( ( tmin > tymax ) || ( tymin > tmax ) ) return null;\n\n\t\t// These lines also handle the case where tmin or tmax is NaN\n\t\t// (result of 0 * Infinity). x !== x returns true if x is NaN\n\n\t\tif ( tymin > tmin || tmin !== tmin ) tmin = tymin;\n\n\t\tif ( tymax < tmax || tmax !== tmax ) tmax = tymax;\n\n\t\tif ( invdirz >= 0 ) {\n\n\t\t\ttzmin = ( box.min.z - origin.z ) * invdirz;\n\t\t\ttzmax = ( box.max.z - origin.z ) * invdirz;\n\n\t\t} else {\n\n\t\t\ttzmin = ( box.max.z - origin.z ) * invdirz;\n\t\t\ttzmax = ( box.min.z - origin.z ) * invdirz;\n\n\t\t}\n\n\t\tif ( ( tmin > tzmax ) || ( tzmin > tmax ) ) return null;\n\n\t\tif ( tzmin > tmin || tmin !== tmin ) tmin = tzmin;\n\n\t\tif ( tzmax < tmax || tmax !== tmax ) tmax = tzmax;\n\n\t\t//return point closest to the ray (positive side)\n\n\t\tif ( tmax < 0 ) return null;\n\n\t\treturn this.at( tmin >= 0 ? tmin : tmax, optionalTarget );\n\n\t},\n\n\tintersectsBox: ( function () {\n\n\t\tvar v = new Vector3();\n\n\t\treturn function intersectsBox( box ) {\n\n\t\t\treturn this.intersectBox( box, v ) !== null;\n\n\t\t};\n\n\t} )(),\n\n\tintersectTriangle: function () {\n\n\t\t// Compute the offset origin, edges, and normal.\n\t\tvar diff = new Vector3();\n\t\tvar edge1 = new Vector3();\n\t\tvar edge2 = new Vector3();\n\t\tvar normal = new Vector3();\n\n\t\treturn function intersectTriangle( a, b, c, backfaceCulling, optionalTarget ) {\n\n\t\t\t// from http://www.geometrictools.com/GTEngine/Include/Mathematics/GteIntrRay3Triangle3.h\n\n\t\t\tedge1.subVectors( b, a );\n\t\t\tedge2.subVectors( c, a );\n\t\t\tnormal.crossVectors( edge1, edge2 );\n\n\t\t\t// Solve Q + t*D = b1*E1 + b2*E2 (Q = kDiff, D = ray direction,\n\t\t\t// E1 = kEdge1, E2 = kEdge2, N = Cross(E1,E2)) by\n\t\t\t// |Dot(D,N)|*b1 = sign(Dot(D,N))*Dot(D,Cross(Q,E2))\n\t\t\t// |Dot(D,N)|*b2 = sign(Dot(D,N))*Dot(D,Cross(E1,Q))\n\t\t\t// |Dot(D,N)|*t = -sign(Dot(D,N))*Dot(Q,N)\n\t\t\tvar DdN = this.direction.dot( normal );\n\t\t\tvar sign;\n\n\t\t\tif ( DdN > 0 ) {\n\n\t\t\t\tif ( backfaceCulling ) return null;\n\t\t\t\tsign = 1;\n\n\t\t\t} else if ( DdN < 0 ) {\n\n\t\t\t\tsign = - 1;\n\t\t\t\tDdN = - DdN;\n\n\t\t\t} else {\n\n\t\t\t\treturn null;\n\n\t\t\t}\n\n\t\t\tdiff.subVectors( this.origin, a );\n\t\t\tvar DdQxE2 = sign * this.direction.dot( edge2.crossVectors( diff, edge2 ) );\n\n\t\t\t// b1 < 0, no intersection\n\t\t\tif ( DdQxE2 < 0 ) {\n\n\t\t\t\treturn null;\n\n\t\t\t}\n\n\t\t\tvar DdE1xQ = sign * this.direction.dot( edge1.cross( diff ) );\n\n\t\t\t// b2 < 0, no intersection\n\t\t\tif ( DdE1xQ < 0 ) {\n\n\t\t\t\treturn null;\n\n\t\t\t}\n\n\t\t\t// b1+b2 > 1, no intersection\n\t\t\tif ( DdQxE2 + DdE1xQ > DdN ) {\n\n\t\t\t\treturn null;\n\n\t\t\t}\n\n\t\t\t// Line intersects triangle, check if ray does.\n\t\t\tvar QdN = - sign * diff.dot( normal );\n\n\t\t\t// t < 0, no intersection\n\t\t\tif ( QdN < 0 ) {\n\n\t\t\t\treturn null;\n\n\t\t\t}\n\n\t\t\t// Ray intersects triangle.\n\t\t\treturn this.at( QdN / DdN, optionalTarget );\n\n\t\t};\n\n\t}(),\n\n\tapplyMatrix4: function ( matrix4 ) {\n\n\t\tthis.direction.add( this.origin ).applyMatrix4( matrix4 );\n\t\tthis.origin.applyMatrix4( matrix4 );\n\t\tthis.direction.sub( this.origin );\n\t\tthis.direction.normalize();\n\n\t\treturn this;\n\n\t},\n\n\tequals: function ( ray ) {\n\n\t\treturn ray.origin.equals( this.origin ) && ray.direction.equals( this.direction );\n\n\t}\n\n};\n\n\nexport { Ray };\n","import { Quaternion } from './Quaternion';\nimport { Vector3 } from './Vector3';\nimport { Matrix4 } from './Matrix4';\nimport { _Math } from './Math';\n\n/**\n * @author mrdoob / http://mrdoob.com/\n * @author WestLangley / http://github.com/WestLangley\n * @author bhouston / http://clara.io\n */\n\nfunction Euler( x, y, z, order ) {\n\n\tthis._x = x || 0;\n\tthis._y = y || 0;\n\tthis._z = z || 0;\n\tthis._order = order || Euler.DefaultOrder;\n\n}\n\nEuler.RotationOrders = [ 'XYZ', 'YZX', 'ZXY', 'XZY', 'YXZ', 'ZYX' ];\n\nEuler.DefaultOrder = 'XYZ';\n\nEuler.prototype = {\n\n\tconstructor: Euler,\n\n\tisEuler: true,\n\n\tget x () {\n\n\t\treturn this._x;\n\n\t},\n\n\tset x ( value ) {\n\n\t\tthis._x = value;\n\t\tthis.onChangeCallback();\n\n\t},\n\n\tget y () {\n\n\t\treturn this._y;\n\n\t},\n\n\tset y ( value ) {\n\n\t\tthis._y = value;\n\t\tthis.onChangeCallback();\n\n\t},\n\n\tget z () {\n\n\t\treturn this._z;\n\n\t},\n\n\tset z ( value ) {\n\n\t\tthis._z = value;\n\t\tthis.onChangeCallback();\n\n\t},\n\n\tget order () {\n\n\t\treturn this._order;\n\n\t},\n\n\tset order ( value ) {\n\n\t\tthis._order = value;\n\t\tthis.onChangeCallback();\n\n\t},\n\n\tset: function ( x, y, z, order ) {\n\n\t\tthis._x = x;\n\t\tthis._y = y;\n\t\tthis._z = z;\n\t\tthis._order = order || this._order;\n\n\t\tthis.onChangeCallback();\n\n\t\treturn this;\n\n\t},\n\n\tclone: function () {\n\n\t\treturn new this.constructor( this._x, this._y, this._z, this._order );\n\n\t},\n\n\tcopy: function ( euler ) {\n\n\t\tthis._x = euler._x;\n\t\tthis._y = euler._y;\n\t\tthis._z = euler._z;\n\t\tthis._order = euler._order;\n\n\t\tthis.onChangeCallback();\n\n\t\treturn this;\n\n\t},\n\n\tsetFromRotationMatrix: function ( m, order, update ) {\n\n\t\tvar clamp = _Math.clamp;\n\n\t\t// assumes the upper 3x3 of m is a pure rotation matrix (i.e, unscaled)\n\n\t\tvar te = m.elements;\n\t\tvar m11 = te[ 0 ], m12 = te[ 4 ], m13 = te[ 8 ];\n\t\tvar m21 = te[ 1 ], m22 = te[ 5 ], m23 = te[ 9 ];\n\t\tvar m31 = te[ 2 ], m32 = te[ 6 ], m33 = te[ 10 ];\n\n\t\torder = order || this._order;\n\n\t\tif ( order === 'XYZ' ) {\n\n\t\t\tthis._y = Math.asin( clamp( m13, - 1, 1 ) );\n\n\t\t\tif ( Math.abs( m13 ) < 0.99999 ) {\n\n\t\t\t\tthis._x = Math.atan2( - m23, m33 );\n\t\t\t\tthis._z = Math.atan2( - m12, m11 );\n\n\t\t\t} else {\n\n\t\t\t\tthis._x = Math.atan2( m32, m22 );\n\t\t\t\tthis._z = 0;\n\n\t\t\t}\n\n\t\t} else if ( order === 'YXZ' ) {\n\n\t\t\tthis._x = Math.asin( - clamp( m23, - 1, 1 ) );\n\n\t\t\tif ( Math.abs( m23 ) < 0.99999 ) {\n\n\t\t\t\tthis._y = Math.atan2( m13, m33 );\n\t\t\t\tthis._z = Math.atan2( m21, m22 );\n\n\t\t\t} else {\n\n\t\t\t\tthis._y = Math.atan2( - m31, m11 );\n\t\t\t\tthis._z = 0;\n\n\t\t\t}\n\n\t\t} else if ( order === 'ZXY' ) {\n\n\t\t\tthis._x = Math.asin( clamp( m32, - 1, 1 ) );\n\n\t\t\tif ( Math.abs( m32 ) < 0.99999 ) {\n\n\t\t\t\tthis._y = Math.atan2( - m31, m33 );\n\t\t\t\tthis._z = Math.atan2( - m12, m22 );\n\n\t\t\t} else {\n\n\t\t\t\tthis._y = 0;\n\t\t\t\tthis._z = Math.atan2( m21, m11 );\n\n\t\t\t}\n\n\t\t} else if ( order === 'ZYX' ) {\n\n\t\t\tthis._y = Math.asin( - clamp( m31, - 1, 1 ) );\n\n\t\t\tif ( Math.abs( m31 ) < 0.99999 ) {\n\n\t\t\t\tthis._x = Math.atan2( m32, m33 );\n\t\t\t\tthis._z = Math.atan2( m21, m11 );\n\n\t\t\t} else {\n\n\t\t\t\tthis._x = 0;\n\t\t\t\tthis._z = Math.atan2( - m12, m22 );\n\n\t\t\t}\n\n\t\t} else if ( order === 'YZX' ) {\n\n\t\t\tthis._z = Math.asin( clamp( m21, - 1, 1 ) );\n\n\t\t\tif ( Math.abs( m21 ) < 0.99999 ) {\n\n\t\t\t\tthis._x = Math.atan2( - m23, m22 );\n\t\t\t\tthis._y = Math.atan2( - m31, m11 );\n\n\t\t\t} else {\n\n\t\t\t\tthis._x = 0;\n\t\t\t\tthis._y = Math.atan2( m13, m33 );\n\n\t\t\t}\n\n\t\t} else if ( order === 'XZY' ) {\n\n\t\t\tthis._z = Math.asin( - clamp( m12, - 1, 1 ) );\n\n\t\t\tif ( Math.abs( m12 ) < 0.99999 ) {\n\n\t\t\t\tthis._x = Math.atan2( m32, m22 );\n\t\t\t\tthis._y = Math.atan2( m13, m11 );\n\n\t\t\t} else {\n\n\t\t\t\tthis._x = Math.atan2( - m23, m33 );\n\t\t\t\tthis._y = 0;\n\n\t\t\t}\n\n\t\t} else {\n\n\t\t\tconsole.warn( 'THREE.Euler: .setFromRotationMatrix() given unsupported order: ' + order );\n\n\t\t}\n\n\t\tthis._order = order;\n\n\t\tif ( update !== false ) this.onChangeCallback();\n\n\t\treturn this;\n\n\t},\n\n\tsetFromQuaternion: function () {\n\n\t\tvar matrix;\n\n\t\treturn function setFromQuaternion( q, order, update ) {\n\n\t\t\tif ( matrix === undefined ) matrix = new Matrix4();\n\n\t\t\tmatrix.makeRotationFromQuaternion( q );\n\n\t\t\treturn this.setFromRotationMatrix( matrix, order, update );\n\n\t\t};\n\n\t}(),\n\n\tsetFromVector3: function ( v, order ) {\n\n\t\treturn this.set( v.x, v.y, v.z, order || this._order );\n\n\t},\n\n\treorder: function () {\n\n\t\t// WARNING: this discards revolution information -bhouston\n\n\t\tvar q = new Quaternion();\n\n\t\treturn function reorder( newOrder ) {\n\n\t\t\tq.setFromEuler( this );\n\n\t\t\treturn this.setFromQuaternion( q, newOrder );\n\n\t\t};\n\n\t}(),\n\n\tequals: function ( euler ) {\n\n\t\treturn ( euler._x === this._x ) && ( euler._y === this._y ) && ( euler._z === this._z ) && ( euler._order === this._order );\n\n\t},\n\n\tfromArray: function ( array ) {\n\n\t\tthis._x = array[ 0 ];\n\t\tthis._y = array[ 1 ];\n\t\tthis._z = array[ 2 ];\n\t\tif ( array[ 3 ] !== undefined ) this._order = array[ 3 ];\n\n\t\tthis.onChangeCallback();\n\n\t\treturn this;\n\n\t},\n\n\ttoArray: function ( array, offset ) {\n\n\t\tif ( array === undefined ) array = [];\n\t\tif ( offset === undefined ) offset = 0;\n\n\t\tarray[ offset ] = this._x;\n\t\tarray[ offset + 1 ] = this._y;\n\t\tarray[ offset + 2 ] = this._z;\n\t\tarray[ offset + 3 ] = this._order;\n\n\t\treturn array;\n\n\t},\n\n\ttoVector3: function ( optionalResult ) {\n\n\t\tif ( optionalResult ) {\n\n\t\t\treturn optionalResult.set( this._x, this._y, this._z );\n\n\t\t} else {\n\n\t\t\treturn new Vector3( this._x, this._y, this._z );\n\n\t\t}\n\n\t},\n\n\tonChange: function ( callback ) {\n\n\t\tthis.onChangeCallback = callback;\n\n\t\treturn this;\n\n\t},\n\n\tonChangeCallback: function () {}\n\n};\n\n\nexport { Euler };\n","/**\n * @author mrdoob / http://mrdoob.com/\n */\n\nfunction Layers() {\n\n\tthis.mask = 1;\n\n}\n\nLayers.prototype = {\n\n\tconstructor: Layers,\n\n\tset: function ( channel ) {\n\n\t\tthis.mask = 1 << channel;\n\n\t},\n\n\tenable: function ( channel ) {\n\n\t\tthis.mask |= 1 << channel;\n\n\t},\n\n\ttoggle: function ( channel ) {\n\n\t\tthis.mask ^= 1 << channel;\n\n\t},\n\n\tdisable: function ( channel ) {\n\n\t\tthis.mask &= ~ ( 1 << channel );\n\n\t},\n\n\ttest: function ( layers ) {\n\n\t\treturn ( this.mask & layers.mask ) !== 0;\n\n\t}\n\n};\n\n\nexport { Layers };\n","import { Quaternion } from '../math/Quaternion';\nimport { Vector3 } from '../math/Vector3';\nimport { Matrix4 } from '../math/Matrix4';\nimport { EventDispatcher } from './EventDispatcher';\nimport { Euler } from '../math/Euler';\nimport { Layers } from './Layers';\nimport { Matrix3 } from '../math/Matrix3';\nimport { _Math } from '../math/Math';\n\n/**\n * @author mrdoob / http://mrdoob.com/\n * @author mikael emtinger / http://gomo.se/\n * @author alteredq / http://alteredqualia.com/\n * @author WestLangley / http://github.com/WestLangley\n * @author elephantatwork / www.elephantatwork.ch\n */\n\nfunction Object3D() {\n\n\tObject.defineProperty( this, 'id', { value: Object3DIdCount() } );\n\n\tthis.uuid = _Math.generateUUID();\n\n\tthis.name = '';\n\tthis.type = 'Object3D';\n\n\tthis.parent = null;\n\tthis.children = [];\n\n\tthis.up = Object3D.DefaultUp.clone();\n\n\tvar position = new Vector3();\n\tvar rotation = new Euler();\n\tvar quaternion = new Quaternion();\n\tvar scale = new Vector3( 1, 1, 1 );\n\n\tfunction onRotationChange() {\n\n\t\tquaternion.setFromEuler( rotation, false );\n\n\t}\n\n\tfunction onQuaternionChange() {\n\n\t\trotation.setFromQuaternion( quaternion, undefined, false );\n\n\t}\n\n\trotation.onChange( onRotationChange );\n\tquaternion.onChange( onQuaternionChange );\n\n\tObject.defineProperties( this, {\n\t\tposition: {\n\t\t\tenumerable: true,\n\t\t\tvalue: position\n\t\t},\n\t\trotation: {\n\t\t\tenumerable: true,\n\t\t\tvalue: rotation\n\t\t},\n\t\tquaternion: {\n\t\t\tenumerable: true,\n\t\t\tvalue: quaternion\n\t\t},\n\t\tscale: {\n\t\t\tenumerable: true,\n\t\t\tvalue: scale\n\t\t},\n\t\tmodelViewMatrix: {\n\t\t\tvalue: new Matrix4()\n\t\t},\n\t\tnormalMatrix: {\n\t\t\tvalue: new Matrix3()\n\t\t}\n\t} );\n\n\tthis.matrix = new Matrix4();\n\tthis.matrixWorld = new Matrix4();\n\n\tthis.matrixAutoUpdate = Object3D.DefaultMatrixAutoUpdate;\n\tthis.matrixWorldNeedsUpdate = false;\n\n\tthis.layers = new Layers();\n\tthis.visible = true;\n\n\tthis.castShadow = false;\n\tthis.receiveShadow = false;\n\n\tthis.frustumCulled = true;\n\tthis.renderOrder = 0;\n\n\tthis.userData = {};\n\n\tthis.onBeforeRender = function(){}; \n\tthis.onAfterRender = function(){};\n\n}\n\nObject3D.DefaultUp = new Vector3( 0, 1, 0 );\nObject3D.DefaultMatrixAutoUpdate = true;\n\nObject.assign( Object3D.prototype, EventDispatcher.prototype, {\n\n\tisObject3D: true,\n\n\tapplyMatrix: function ( matrix ) {\n\n\t\tthis.matrix.multiplyMatrices( matrix, this.matrix );\n\n\t\tthis.matrix.decompose( this.position, this.quaternion, this.scale );\n\n\t},\n\n\tsetRotationFromAxisAngle: function ( axis, angle ) {\n\n\t\t// assumes axis is normalized\n\n\t\tthis.quaternion.setFromAxisAngle( axis, angle );\n\n\t},\n\n\tsetRotationFromEuler: function ( euler ) {\n\n\t\tthis.quaternion.setFromEuler( euler, true );\n\n\t},\n\n\tsetRotationFromMatrix: function ( m ) {\n\n\t\t// assumes the upper 3x3 of m is a pure rotation matrix (i.e, unscaled)\n\n\t\tthis.quaternion.setFromRotationMatrix( m );\n\n\t},\n\n\tsetRotationFromQuaternion: function ( q ) {\n\n\t\t// assumes q is normalized\n\n\t\tthis.quaternion.copy( q );\n\n\t},\n\n\trotateOnAxis: function () {\n\n\t\t// rotate object on axis in object space\n\t\t// axis is assumed to be normalized\n\n\t\tvar q1 = new Quaternion();\n\n\t\treturn function rotateOnAxis( axis, angle ) {\n\n\t\t\tq1.setFromAxisAngle( axis, angle );\n\n\t\t\tthis.quaternion.multiply( q1 );\n\n\t\t\treturn this;\n\n\t\t};\n\n\t}(),\n\n\trotateX: function () {\n\n\t\tvar v1 = new Vector3( 1, 0, 0 );\n\n\t\treturn function rotateX( angle ) {\n\n\t\t\treturn this.rotateOnAxis( v1, angle );\n\n\t\t};\n\n\t}(),\n\n\trotateY: function () {\n\n\t\tvar v1 = new Vector3( 0, 1, 0 );\n\n\t\treturn function rotateY( angle ) {\n\n\t\t\treturn this.rotateOnAxis( v1, angle );\n\n\t\t};\n\n\t}(),\n\n\trotateZ: function () {\n\n\t\tvar v1 = new Vector3( 0, 0, 1 );\n\n\t\treturn function rotateZ( angle ) {\n\n\t\t\treturn this.rotateOnAxis( v1, angle );\n\n\t\t};\n\n\t}(),\n\n\ttranslateOnAxis: function () {\n\n\t\t// translate object by distance along axis in object space\n\t\t// axis is assumed to be normalized\n\n\t\tvar v1 = new Vector3();\n\n\t\treturn function translateOnAxis( axis, distance ) {\n\n\t\t\tv1.copy( axis ).applyQuaternion( this.quaternion );\n\n\t\t\tthis.position.add( v1.multiplyScalar( distance ) );\n\n\t\t\treturn this;\n\n\t\t};\n\n\t}(),\n\n\ttranslateX: function () {\n\n\t\tvar v1 = new Vector3( 1, 0, 0 );\n\n\t\treturn function translateX( distance ) {\n\n\t\t\treturn this.translateOnAxis( v1, distance );\n\n\t\t};\n\n\t}(),\n\n\ttranslateY: function () {\n\n\t\tvar v1 = new Vector3( 0, 1, 0 );\n\n\t\treturn function translateY( distance ) {\n\n\t\t\treturn this.translateOnAxis( v1, distance );\n\n\t\t};\n\n\t}(),\n\n\ttranslateZ: function () {\n\n\t\tvar v1 = new Vector3( 0, 0, 1 );\n\n\t\treturn function translateZ( distance ) {\n\n\t\t\treturn this.translateOnAxis( v1, distance );\n\n\t\t};\n\n\t}(),\n\n\tlocalToWorld: function ( vector ) {\n\n\t\treturn vector.applyMatrix4( this.matrixWorld );\n\n\t},\n\n\tworldToLocal: function () {\n\n\t\tvar m1 = new Matrix4();\n\n\t\treturn function worldToLocal( vector ) {\n\n\t\t\treturn vector.applyMatrix4( m1.getInverse( this.matrixWorld ) );\n\n\t\t};\n\n\t}(),\n\n\tlookAt: function () {\n\n\t\t// This routine does not support objects with rotated and/or translated parent(s)\n\n\t\tvar m1 = new Matrix4();\n\n\t\treturn function lookAt( vector ) {\n\n\t\t\tm1.lookAt( vector, this.position, this.up );\n\n\t\t\tthis.quaternion.setFromRotationMatrix( m1 );\n\n\t\t};\n\n\t}(),\n\n\tadd: function ( object ) {\n\n\t\tif ( arguments.length > 1 ) {\n\n\t\t\tfor ( var i = 0; i < arguments.length; i ++ ) {\n\n\t\t\t\tthis.add( arguments[ i ] );\n\n\t\t\t}\n\n\t\t\treturn this;\n\n\t\t}\n\n\t\tif ( object === this ) {\n\n\t\t\tconsole.error( \"THREE.Object3D.add: object can't be added as a child of itself.\", object );\n\t\t\treturn this;\n\n\t\t}\n\n\t\tif ( (object && object.isObject3D) ) {\n\n\t\t\tif ( object.parent !== null ) {\n\n\t\t\t\tobject.parent.remove( object );\n\n\t\t\t}\n\n\t\t\tobject.parent = this;\n\t\t\tobject.dispatchEvent( { type: 'added' } );\n\n\t\t\tthis.children.push( object );\n\n\t\t} else {\n\n\t\t\tconsole.error( \"THREE.Object3D.add: object not an instance of THREE.Object3D.\", object );\n\n\t\t}\n\n\t\treturn this;\n\n\t},\n\n\tremove: function ( object ) {\n\n\t\tif ( arguments.length > 1 ) {\n\n\t\t\tfor ( var i = 0; i < arguments.length; i ++ ) {\n\n\t\t\t\tthis.remove( arguments[ i ] );\n\n\t\t\t}\n\n\t\t}\n\n\t\tvar index = this.children.indexOf( object );\n\n\t\tif ( index !== - 1 ) {\n\n\t\t\tobject.parent = null;\n\n\t\t\tobject.dispatchEvent( { type: 'removed' } );\n\n\t\t\tthis.children.splice( index, 1 );\n\n\t\t}\n\n\t},\n\n\tgetObjectById: function ( id ) {\n\n\t\treturn this.getObjectByProperty( 'id', id );\n\n\t},\n\n\tgetObjectByName: function ( name ) {\n\n\t\treturn this.getObjectByProperty( 'name', name );\n\n\t},\n\n\tgetObjectByProperty: function ( name, value ) {\n\n\t\tif ( this[ name ] === value ) return this;\n\n\t\tfor ( var i = 0, l = this.children.length; i < l; i ++ ) {\n\n\t\t\tvar child = this.children[ i ];\n\t\t\tvar object = child.getObjectByProperty( name, value );\n\n\t\t\tif ( object !== undefined ) {\n\n\t\t\t\treturn object;\n\n\t\t\t}\n\n\t\t}\n\n\t\treturn undefined;\n\n\t},\n\n\tgetWorldPosition: function ( optionalTarget ) {\n\n\t\tvar result = optionalTarget || new Vector3();\n\n\t\tthis.updateMatrixWorld( true );\n\n\t\treturn result.setFromMatrixPosition( this.matrixWorld );\n\n\t},\n\n\tgetWorldQuaternion: function () {\n\n\t\tvar position = new Vector3();\n\t\tvar scale = new Vector3();\n\n\t\treturn function getWorldQuaternion( optionalTarget ) {\n\n\t\t\tvar result = optionalTarget || new Quaternion();\n\n\t\t\tthis.updateMatrixWorld( true );\n\n\t\t\tthis.matrixWorld.decompose( position, result, scale );\n\n\t\t\treturn result;\n\n\t\t};\n\n\t}(),\n\n\tgetWorldRotation: function () {\n\n\t\tvar quaternion = new Quaternion();\n\n\t\treturn function getWorldRotation( optionalTarget ) {\n\n\t\t\tvar result = optionalTarget || new Euler();\n\n\t\t\tthis.getWorldQuaternion( quaternion );\n\n\t\t\treturn result.setFromQuaternion( quaternion, this.rotation.order, false );\n\n\t\t};\n\n\t}(),\n\n\tgetWorldScale: function () {\n\n\t\tvar position = new Vector3();\n\t\tvar quaternion = new Quaternion();\n\n\t\treturn function getWorldScale( optionalTarget ) {\n\n\t\t\tvar result = optionalTarget || new Vector3();\n\n\t\t\tthis.updateMatrixWorld( true );\n\n\t\t\tthis.matrixWorld.decompose( position, quaternion, result );\n\n\t\t\treturn result;\n\n\t\t};\n\n\t}(),\n\n\tgetWorldDirection: function () {\n\n\t\tvar quaternion = new Quaternion();\n\n\t\treturn function getWorldDirection( optionalTarget ) {\n\n\t\t\tvar result = optionalTarget || new Vector3();\n\n\t\t\tthis.getWorldQuaternion( quaternion );\n\n\t\t\treturn result.set( 0, 0, 1 ).applyQuaternion( quaternion );\n\n\t\t};\n\n\t}(),\n\n\traycast: function () {},\n\n\ttraverse: function ( callback ) {\n\n\t\tcallback( this );\n\n\t\tvar children = this.children;\n\n\t\tfor ( var i = 0, l = children.length; i < l; i ++ ) {\n\n\t\t\tchildren[ i ].traverse( callback );\n\n\t\t}\n\n\t},\n\n\ttraverseVisible: function ( callback ) {\n\n\t\tif ( this.visible === false ) return;\n\n\t\tcallback( this );\n\n\t\tvar children = this.children;\n\n\t\tfor ( var i = 0, l = children.length; i < l; i ++ ) {\n\n\t\t\tchildren[ i ].traverseVisible( callback );\n\n\t\t}\n\n\t},\n\n\ttraverseAncestors: function ( callback ) {\n\n\t\tvar parent = this.parent;\n\n\t\tif ( parent !== null ) {\n\n\t\t\tcallback( parent );\n\n\t\t\tparent.traverseAncestors( callback );\n\n\t\t}\n\n\t},\n\n\tupdateMatrix: function () {\n\n\t\tthis.matrix.compose( this.position, this.quaternion, this.scale );\n\n\t\tthis.matrixWorldNeedsUpdate = true;\n\n\t},\n\n\tupdateMatrixWorld: function ( force ) {\n\n\t\tif ( this.matrixAutoUpdate === true ) this.updateMatrix();\n\n\t\tif ( this.matrixWorldNeedsUpdate === true || force === true ) {\n\n\t\t\tif ( this.parent === null ) {\n\n\t\t\t\tthis.matrixWorld.copy( this.matrix );\n\n\t\t\t} else {\n\n\t\t\t\tthis.matrixWorld.multiplyMatrices( this.parent.matrixWorld, this.matrix );\n\n\t\t\t}\n\n\t\t\tthis.matrixWorldNeedsUpdate = false;\n\n\t\t\tforce = true;\n\n\t\t}\n\n\t\t// update children\n\n\t\tvar children = this.children;\n\n\t\tfor ( var i = 0, l = children.length; i < l; i ++ ) {\n\n\t\t\tchildren[ i ].updateMatrixWorld( force );\n\n\t\t}\n\n\t},\n\n\ttoJSON: function ( meta ) {\n\n\t\t// meta is '' when called from JSON.stringify\n\t\tvar isRootObject = ( meta === undefined || meta === '' );\n\n\t\tvar output = {};\n\n\t\t// meta is a hash used to collect geometries, materials.\n\t\t// not providing it implies that this is the root object\n\t\t// being serialized.\n\t\tif ( isRootObject ) {\n\n\t\t\t// initialize meta obj\n\t\t\tmeta = {\n\t\t\t\tgeometries: {},\n\t\t\t\tmaterials: {},\n\t\t\t\ttextures: {},\n\t\t\t\timages: {}\n\t\t\t};\n\n\t\t\toutput.metadata = {\n\t\t\t\tversion: 4.4,\n\t\t\t\ttype: 'Object',\n\t\t\t\tgenerator: 'Object3D.toJSON'\n\t\t\t};\n\n\t\t}\n\n\t\t// standard Object3D serialization\n\n\t\tvar object = {};\n\n\t\tobject.uuid = this.uuid;\n\t\tobject.type = this.type;\n\n\t\tif ( this.name !== '' ) object.name = this.name;\n\t\tif ( JSON.stringify( this.userData ) !== '{}' ) object.userData = this.userData;\n\t\tif ( this.castShadow === true ) object.castShadow = true;\n\t\tif ( this.receiveShadow === true ) object.receiveShadow = true;\n\t\tif ( this.visible === false ) object.visible = false;\n\n\t\tobject.matrix = this.matrix.toArray();\n\n\t\t//\n\n\t\tif ( this.geometry !== undefined ) {\n\n\t\t\tif ( meta.geometries[ this.geometry.uuid ] === undefined ) {\n\n\t\t\t\tmeta.geometries[ this.geometry.uuid ] = this.geometry.toJSON( meta );\n\n\t\t\t}\n\n\t\t\tobject.geometry = this.geometry.uuid;\n\n\t\t}\n\n\t\tif ( this.material !== undefined ) {\n\n\t\t\tif ( meta.materials[ this.material.uuid ] === undefined ) {\n\n\t\t\t\tmeta.materials[ this.material.uuid ] = this.material.toJSON( meta );\n\n\t\t\t}\n\n\t\t\tobject.material = this.material.uuid;\n\n\t\t}\n\n\t\t//\n\n\t\tif ( this.children.length > 0 ) {\n\n\t\t\tobject.children = [];\n\n\t\t\tfor ( var i = 0; i < this.children.length; i ++ ) {\n\n\t\t\t\tobject.children.push( this.children[ i ].toJSON( meta ).object );\n\n\t\t\t}\n\n\t\t}\n\n\t\tif ( isRootObject ) {\n\n\t\t\tvar geometries = extractFromCache( meta.geometries );\n\t\t\tvar materials = extractFromCache( meta.materials );\n\t\t\tvar textures = extractFromCache( meta.textures );\n\t\t\tvar images = extractFromCache( meta.images );\n\n\t\t\tif ( geometries.length > 0 ) output.geometries = geometries;\n\t\t\tif ( materials.length > 0 ) output.materials = materials;\n\t\t\tif ( textures.length > 0 ) output.textures = textures;\n\t\t\tif ( images.length > 0 ) output.images = images;\n\n\t\t}\n\n\t\toutput.object = object;\n\n\t\treturn output;\n\n\t\t// extract data from the cache hash\n\t\t// remove metadata on each item\n\t\t// and return as array\n\t\tfunction extractFromCache( cache ) {\n\n\t\t\tvar values = [];\n\t\t\tfor ( var key in cache ) {\n\n\t\t\t\tvar data = cache[ key ];\n\t\t\t\tdelete data.metadata;\n\t\t\t\tvalues.push( data );\n\n\t\t\t}\n\t\t\treturn values;\n\n\t\t}\n\n\t},\n\n\tclone: function ( recursive ) {\n\n\t\treturn new this.constructor().copy( this, recursive );\n\n\t},\n\n\tcopy: function ( source, recursive ) {\n\n\t\tif ( recursive === undefined ) recursive = true;\n\n\t\tthis.name = source.name;\n\n\t\tthis.up.copy( source.up );\n\n\t\tthis.position.copy( source.position );\n\t\tthis.quaternion.copy( source.quaternion );\n\t\tthis.scale.copy( source.scale );\n\n\t\tthis.matrix.copy( source.matrix );\n\t\tthis.matrixWorld.copy( source.matrixWorld );\n\n\t\tthis.matrixAutoUpdate = source.matrixAutoUpdate;\n\t\tthis.matrixWorldNeedsUpdate = source.matrixWorldNeedsUpdate;\n\n\t\tthis.visible = source.visible;\n\n\t\tthis.castShadow = source.castShadow;\n\t\tthis.receiveShadow = source.receiveShadow;\n\n\t\tthis.frustumCulled = source.frustumCulled;\n\t\tthis.renderOrder = source.renderOrder;\n\n\t\tthis.userData = JSON.parse( JSON.stringify( source.userData ) );\n\n\t\tif ( recursive === true ) {\n\n\t\t\tfor ( var i = 0; i < source.children.length; i ++ ) {\n\n\t\t\t\tvar child = source.children[ i ];\n\t\t\t\tthis.add( child.clone() );\n\n\t\t\t}\n\n\t\t}\n\n\t\treturn this;\n\n\t}\n\n} );\n\nvar count = 0;\nfunction Object3DIdCount() { return count++; };\n\n\nexport { Object3DIdCount, Object3D };\n","import { Vector3 } from './Vector3';\nimport { _Math } from './Math';\n\n/**\n * @author bhouston / http://clara.io\n */\n\nfunction Line3( start, end ) {\n\n\tthis.start = ( start !== undefined ) ? start : new Vector3();\n\tthis.end = ( end !== undefined ) ? end : new Vector3();\n\n}\n\nLine3.prototype = {\n\n\tconstructor: Line3,\n\n\tset: function ( start, end ) {\n\n\t\tthis.start.copy( start );\n\t\tthis.end.copy( end );\n\n\t\treturn this;\n\n\t},\n\n\tclone: function () {\n\n\t\treturn new this.constructor().copy( this );\n\n\t},\n\n\tcopy: function ( line ) {\n\n\t\tthis.start.copy( line.start );\n\t\tthis.end.copy( line.end );\n\n\t\treturn this;\n\n\t},\n\n\tgetCenter: function ( optionalTarget ) {\n\n\t\tvar result = optionalTarget || new Vector3();\n\t\treturn result.addVectors( this.start, this.end ).multiplyScalar( 0.5 );\n\n\t},\n\n\tdelta: function ( optionalTarget ) {\n\n\t\tvar result = optionalTarget || new Vector3();\n\t\treturn result.subVectors( this.end, this.start );\n\n\t},\n\n\tdistanceSq: function () {\n\n\t\treturn this.start.distanceToSquared( this.end );\n\n\t},\n\n\tdistance: function () {\n\n\t\treturn this.start.distanceTo( this.end );\n\n\t},\n\n\tat: function ( t, optionalTarget ) {\n\n\t\tvar result = optionalTarget || new Vector3();\n\n\t\treturn this.delta( result ).multiplyScalar( t ).add( this.start );\n\n\t},\n\n\tclosestPointToPointParameter: function () {\n\n\t\tvar startP = new Vector3();\n\t\tvar startEnd = new Vector3();\n\n\t\treturn function closestPointToPointParameter( point, clampToLine ) {\n\n\t\t\tstartP.subVectors( point, this.start );\n\t\t\tstartEnd.subVectors( this.end, this.start );\n\n\t\t\tvar startEnd2 = startEnd.dot( startEnd );\n\t\t\tvar startEnd_startP = startEnd.dot( startP );\n\n\t\t\tvar t = startEnd_startP / startEnd2;\n\n\t\t\tif ( clampToLine ) {\n\n\t\t\t\tt = _Math.clamp( t, 0, 1 );\n\n\t\t\t}\n\n\t\t\treturn t;\n\n\t\t};\n\n\t}(),\n\n\tclosestPointToPoint: function ( point, clampToLine, optionalTarget ) {\n\n\t\tvar t = this.closestPointToPointParameter( point, clampToLine );\n\n\t\tvar result = optionalTarget || new Vector3();\n\n\t\treturn this.delta( result ).multiplyScalar( t ).add( this.start );\n\n\t},\n\n\tapplyMatrix4: function ( matrix ) {\n\n\t\tthis.start.applyMatrix4( matrix );\n\t\tthis.end.applyMatrix4( matrix );\n\n\t\treturn this;\n\n\t},\n\n\tequals: function ( line ) {\n\n\t\treturn line.start.equals( this.start ) && line.end.equals( this.end );\n\n\t}\n\n};\n\n\nexport { Line3 };\n","import { Vector3 } from './Vector3';\nimport { Line3 } from './Line3';\nimport { Plane } from './Plane';\n\n/**\n * @author bhouston / http://clara.io\n * @author mrdoob / http://mrdoob.com/\n */\n\nfunction Triangle( a, b, c ) {\n\n\tthis.a = ( a !== undefined ) ? a : new Vector3();\n\tthis.b = ( b !== undefined ) ? b : new Vector3();\n\tthis.c = ( c !== undefined ) ? c : new Vector3();\n\n}\n\nTriangle.normal = function () {\n\n\tvar v0 = new Vector3();\n\n\treturn function normal( a, b, c, optionalTarget ) {\n\n\t\tvar result = optionalTarget || new Vector3();\n\n\t\tresult.subVectors( c, b );\n\t\tv0.subVectors( a, b );\n\t\tresult.cross( v0 );\n\n\t\tvar resultLengthSq = result.lengthSq();\n\t\tif ( resultLengthSq > 0 ) {\n\n\t\t\treturn result.multiplyScalar( 1 / Math.sqrt( resultLengthSq ) );\n\n\t\t}\n\n\t\treturn result.set( 0, 0, 0 );\n\n\t};\n\n}();\n\n// static/instance method to calculate barycentric coordinates\n// based on: http://www.blackpawn.com/texts/pointinpoly/default.html\nTriangle.barycoordFromPoint = function () {\n\n\tvar v0 = new Vector3();\n\tvar v1 = new Vector3();\n\tvar v2 = new Vector3();\n\n\treturn function barycoordFromPoint( point, a, b, c, optionalTarget ) {\n\n\t\tv0.subVectors( c, a );\n\t\tv1.subVectors( b, a );\n\t\tv2.subVectors( point, a );\n\n\t\tvar dot00 = v0.dot( v0 );\n\t\tvar dot01 = v0.dot( v1 );\n\t\tvar dot02 = v0.dot( v2 );\n\t\tvar dot11 = v1.dot( v1 );\n\t\tvar dot12 = v1.dot( v2 );\n\n\t\tvar denom = ( dot00 * dot11 - dot01 * dot01 );\n\n\t\tvar result = optionalTarget || new Vector3();\n\n\t\t// collinear or singular triangle\n\t\tif ( denom === 0 ) {\n\n\t\t\t// arbitrary location outside of triangle?\n\t\t\t// not sure if this is the best idea, maybe should be returning undefined\n\t\t\treturn result.set( - 2, - 1, - 1 );\n\n\t\t}\n\n\t\tvar invDenom = 1 / denom;\n\t\tvar u = ( dot11 * dot02 - dot01 * dot12 ) * invDenom;\n\t\tvar v = ( dot00 * dot12 - dot01 * dot02 ) * invDenom;\n\n\t\t// barycentric coordinates must always sum to 1\n\t\treturn result.set( 1 - u - v, v, u );\n\n\t};\n\n}();\n\nTriangle.containsPoint = function () {\n\n\tvar v1 = new Vector3();\n\n\treturn function containsPoint( point, a, b, c ) {\n\n\t\tvar result = Triangle.barycoordFromPoint( point, a, b, c, v1 );\n\n\t\treturn ( result.x >= 0 ) && ( result.y >= 0 ) && ( ( result.x + result.y ) <= 1 );\n\n\t};\n\n}();\n\nTriangle.prototype = {\n\n\tconstructor: Triangle,\n\n\tset: function ( a, b, c ) {\n\n\t\tthis.a.copy( a );\n\t\tthis.b.copy( b );\n\t\tthis.c.copy( c );\n\n\t\treturn this;\n\n\t},\n\n\tsetFromPointsAndIndices: function ( points, i0, i1, i2 ) {\n\n\t\tthis.a.copy( points[ i0 ] );\n\t\tthis.b.copy( points[ i1 ] );\n\t\tthis.c.copy( points[ i2 ] );\n\n\t\treturn this;\n\n\t},\n\n\tclone: function () {\n\n\t\treturn new this.constructor().copy( this );\n\n\t},\n\n\tcopy: function ( triangle ) {\n\n\t\tthis.a.copy( triangle.a );\n\t\tthis.b.copy( triangle.b );\n\t\tthis.c.copy( triangle.c );\n\n\t\treturn this;\n\n\t},\n\n\tarea: function () {\n\n\t\tvar v0 = new Vector3();\n\t\tvar v1 = new Vector3();\n\n\t\treturn function area() {\n\n\t\t\tv0.subVectors( this.c, this.b );\n\t\t\tv1.subVectors( this.a, this.b );\n\n\t\t\treturn v0.cross( v1 ).length() * 0.5;\n\n\t\t};\n\n\t}(),\n\n\tmidpoint: function ( optionalTarget ) {\n\n\t\tvar result = optionalTarget || new Vector3();\n\t\treturn result.addVectors( this.a, this.b ).add( this.c ).multiplyScalar( 1 / 3 );\n\n\t},\n\n\tnormal: function ( optionalTarget ) {\n\n\t\treturn Triangle.normal( this.a, this.b, this.c, optionalTarget );\n\n\t},\n\n\tplane: function ( optionalTarget ) {\n\n\t\tvar result = optionalTarget || new Plane();\n\n\t\treturn result.setFromCoplanarPoints( this.a, this.b, this.c );\n\n\t},\n\n\tbarycoordFromPoint: function ( point, optionalTarget ) {\n\n\t\treturn Triangle.barycoordFromPoint( point, this.a, this.b, this.c, optionalTarget );\n\n\t},\n\n\tcontainsPoint: function ( point ) {\n\n\t\treturn Triangle.containsPoint( point, this.a, this.b, this.c );\n\n\t},\n\n\tclosestPointToPoint: function () {\n\n\t\tvar plane, edgeList, projectedPoint, closestPoint;\n\n\t\treturn function closestPointToPoint( point, optionalTarget ) {\n\n\t\t\tif ( plane === undefined ) {\n\n\t\t\t\tplane = new Plane();\n\t\t\t\tedgeList = [ new Line3(), new Line3(), new Line3() ];\n\t\t\t\tprojectedPoint = new Vector3();\n\t\t\t\tclosestPoint = new Vector3();\n\n\t\t\t}\n\n\t\t\tvar result = optionalTarget || new Vector3();\n\t\t\tvar minDistance = Infinity;\n\n\t\t\t// project the point onto the plane of the triangle\n\n\t\t\tplane.setFromCoplanarPoints( this.a, this.b, this.c );\n\t\t\tplane.projectPoint( point, projectedPoint );\n\n\t\t\t// check if the projection lies within the triangle\n\n\t\t\tif( this.containsPoint( projectedPoint ) === true ) {\n\n\t\t\t\t// if so, this is the closest point\n\n\t\t\t\tresult.copy( projectedPoint );\n\n\t\t\t} else {\n\n\t\t\t\t// if not, the point falls outside the triangle. the result is the closest point to the triangle's edges or vertices\n\n\t\t\t\tedgeList[ 0 ].set( this.a, this.b );\n\t\t\t\tedgeList[ 1 ].set( this.b, this.c );\n\t\t\t\tedgeList[ 2 ].set( this.c, this.a );\n\n\t\t\t\tfor( var i = 0; i < edgeList.length; i ++ ) {\n\n\t\t\t\t\tedgeList[ i ].closestPointToPoint( projectedPoint, true, closestPoint );\n\n\t\t\t\t\tvar distance = projectedPoint.distanceToSquared( closestPoint );\n\n\t\t\t\t\tif( distance < minDistance ) {\n\n\t\t\t\t\t\tminDistance = distance;\n\n\t\t\t\t\t\tresult.copy( closestPoint );\n\n\t\t\t\t\t}\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t\treturn result;\n\n\t\t};\n\n\t}(),\n\n\tequals: function ( triangle ) {\n\n\t\treturn triangle.a.equals( this.a ) && triangle.b.equals( this.b ) && triangle.c.equals( this.c );\n\n\t}\n\n};\n\n\nexport { Triangle };\n","import { Color } from '../math/Color';\nimport { Vector3 } from '../math/Vector3';\n\n/**\n * @author mrdoob / http://mrdoob.com/\n * @author alteredq / http://alteredqualia.com/\n */\n\nfunction Face3( a, b, c, normal, color, materialIndex ) {\n\n\tthis.a = a;\n\tthis.b = b;\n\tthis.c = c;\n\n\tthis.normal = (normal && normal.isVector3) ? normal : new Vector3();\n\tthis.vertexNormals = Array.isArray( normal ) ? normal : [];\n\n\tthis.color = (color && color.isColor) ? color : new Color();\n\tthis.vertexColors = Array.isArray( color ) ? color : [];\n\n\tthis.materialIndex = materialIndex !== undefined ? materialIndex : 0;\n\n}\n\nFace3.prototype = {\n\n\tconstructor: Face3,\n\n\tclone: function () {\n\n\t\treturn new this.constructor().copy( this );\n\n\t},\n\n\tcopy: function ( source ) {\n\n\t\tthis.a = source.a;\n\t\tthis.b = source.b;\n\t\tthis.c = source.c;\n\n\t\tthis.normal.copy( source.normal );\n\t\tthis.color.copy( source.color );\n\n\t\tthis.materialIndex = source.materialIndex;\n\n\t\tfor ( var i = 0, il = source.vertexNormals.length; i < il; i ++ ) {\n\n\t\t\tthis.vertexNormals[ i ] = source.vertexNormals[ i ].clone();\n\n\t\t}\n\n\t\tfor ( var i = 0, il = source.vertexColors.length; i < il; i ++ ) {\n\n\t\t\tthis.vertexColors[ i ] = source.vertexColors[ i ].clone();\n\n\t\t}\n\n\t\treturn this;\n\n\t}\n\n};\n\n\nexport { Face3 };\n","import { Material } from './Material';\nimport { MultiplyOperation } from '../constants';\nimport { Color } from '../math/Color';\n\n/**\n * @author mrdoob / http://mrdoob.com/\n * @author alteredq / http://alteredqualia.com/\n *\n * parameters = {\n * color: ,\n * opacity: ,\n * map: new THREE.Texture( ),\n *\n * aoMap: new THREE.Texture( ),\n * aoMapIntensity: \n *\n * specularMap: new THREE.Texture( ),\n *\n * alphaMap: new THREE.Texture( ),\n *\n * envMap: new THREE.TextureCube( [posx, negx, posy, negy, posz, negz] ),\n * combine: THREE.Multiply,\n * reflectivity: ,\n * refractionRatio: ,\n *\n * shading: THREE.SmoothShading,\n * depthTest: ,\n * depthWrite: ,\n *\n * wireframe: ,\n * wireframeLinewidth: ,\n *\n * skinning: ,\n * morphTargets: \n * }\n */\n\nfunction MeshBasicMaterial( parameters ) {\n\n\tMaterial.call( this );\n\n\tthis.type = 'MeshBasicMaterial';\n\n\tthis.color = new Color( 0xffffff ); // emissive\n\n\tthis.map = null;\n\n\tthis.aoMap = null;\n\tthis.aoMapIntensity = 1.0;\n\n\tthis.specularMap = null;\n\n\tthis.alphaMap = null;\n\n\tthis.envMap = null;\n\tthis.combine = MultiplyOperation;\n\tthis.reflectivity = 1;\n\tthis.refractionRatio = 0.98;\n\n\tthis.wireframe = false;\n\tthis.wireframeLinewidth = 1;\n\tthis.wireframeLinecap = 'round';\n\tthis.wireframeLinejoin = 'round';\n\n\tthis.skinning = false;\n\tthis.morphTargets = false;\n\n\tthis.lights = false;\n\n\tthis.setValues( parameters );\n\n}\n\nMeshBasicMaterial.prototype = Object.create( Material.prototype );\nMeshBasicMaterial.prototype.constructor = MeshBasicMaterial;\n\nMeshBasicMaterial.prototype.isMeshBasicMaterial = true;\n\nMeshBasicMaterial.prototype.copy = function ( source ) {\n\n\tMaterial.prototype.copy.call( this, source );\n\n\tthis.color.copy( source.color );\n\n\tthis.map = source.map;\n\n\tthis.aoMap = source.aoMap;\n\tthis.aoMapIntensity = source.aoMapIntensity;\n\n\tthis.specularMap = source.specularMap;\n\n\tthis.alphaMap = source.alphaMap;\n\n\tthis.envMap = source.envMap;\n\tthis.combine = source.combine;\n\tthis.reflectivity = source.reflectivity;\n\tthis.refractionRatio = source.refractionRatio;\n\n\tthis.wireframe = source.wireframe;\n\tthis.wireframeLinewidth = source.wireframeLinewidth;\n\tthis.wireframeLinecap = source.wireframeLinecap;\n\tthis.wireframeLinejoin = source.wireframeLinejoin;\n\n\tthis.skinning = source.skinning;\n\tthis.morphTargets = source.morphTargets;\n\n\treturn this;\n\n};\n\n\nexport { MeshBasicMaterial };\n","import { Vector4 } from '../math/Vector4';\nimport { Vector3 } from '../math/Vector3';\nimport { Vector2 } from '../math/Vector2';\nimport { Color } from '../math/Color';\nimport { _Math } from '../math/Math';\n\n/**\n * @author mrdoob / http://mrdoob.com/\n */\n\nfunction BufferAttribute( array, itemSize, normalized ) {\n\n\tif ( Array.isArray( array ) ) {\n\n\t\tthrow new TypeError( 'THREE.BufferAttribute: array should be a Typed Array.' );\n\n\t}\n\n\tthis.uuid = _Math.generateUUID();\n\n\tthis.array = array;\n\tthis.itemSize = itemSize;\n\tthis.count = array !== undefined ? array.length / itemSize : 0;\n\tthis.normalized = normalized === true;\n\n\tthis.dynamic = false;\n\tthis.updateRange = { offset: 0, count: - 1 };\n\n\tthis.version = 0;\n\n}\n\nBufferAttribute.prototype = {\n\n\tconstructor: BufferAttribute,\n\n\tisBufferAttribute: true,\n\n\tset needsUpdate( value ) {\n\n\t\tif ( value === true ) this.version ++;\n\n\t},\n\n\tsetArray: function ( array ) {\n\n\t\tif ( Array.isArray( array ) ) {\n\n\t\t\tthrow new TypeError( 'THREE.BufferAttribute: array should be a Typed Array.' );\n\n\t\t}\n\n\t\tthis.count = array !== undefined ? array.length / this.itemSize : 0;\n\t\tthis.array = array;\n\n\t},\n\n\tsetDynamic: function ( value ) {\n\n\t\tthis.dynamic = value;\n\n\t\treturn this;\n\n\t},\n\n\tcopy: function ( source ) {\n\n\t\tthis.array = new source.array.constructor( source.array );\n\t\tthis.itemSize = source.itemSize;\n\t\tthis.count = source.count;\n\t\tthis.normalized = source.normalized;\n\n\t\tthis.dynamic = source.dynamic;\n\n\t\treturn this;\n\n\t},\n\n\tcopyAt: function ( index1, attribute, index2 ) {\n\n\t\tindex1 *= this.itemSize;\n\t\tindex2 *= attribute.itemSize;\n\n\t\tfor ( var i = 0, l = this.itemSize; i < l; i ++ ) {\n\n\t\t\tthis.array[ index1 + i ] = attribute.array[ index2 + i ];\n\n\t\t}\n\n\t\treturn this;\n\n\t},\n\n\tcopyArray: function ( array ) {\n\n\t\tthis.array.set( array );\n\n\t\treturn this;\n\n\t},\n\n\tcopyColorsArray: function ( colors ) {\n\n\t\tvar array = this.array, offset = 0;\n\n\t\tfor ( var i = 0, l = colors.length; i < l; i ++ ) {\n\n\t\t\tvar color = colors[ i ];\n\n\t\t\tif ( color === undefined ) {\n\n\t\t\t\tconsole.warn( 'THREE.BufferAttribute.copyColorsArray(): color is undefined', i );\n\t\t\t\tcolor = new Color();\n\n\t\t\t}\n\n\t\t\tarray[ offset ++ ] = color.r;\n\t\t\tarray[ offset ++ ] = color.g;\n\t\t\tarray[ offset ++ ] = color.b;\n\n\t\t}\n\n\t\treturn this;\n\n\t},\n\n\tcopyIndicesArray: function ( indices ) {\n\n\t\tvar array = this.array, offset = 0;\n\n\t\tfor ( var i = 0, l = indices.length; i < l; i ++ ) {\n\n\t\t\tvar index = indices[ i ];\n\n\t\t\tarray[ offset ++ ] = index.a;\n\t\t\tarray[ offset ++ ] = index.b;\n\t\t\tarray[ offset ++ ] = index.c;\n\n\t\t}\n\n\t\treturn this;\n\n\t},\n\n\tcopyVector2sArray: function ( vectors ) {\n\n\t\tvar array = this.array, offset = 0;\n\n\t\tfor ( var i = 0, l = vectors.length; i < l; i ++ ) {\n\n\t\t\tvar vector = vectors[ i ];\n\n\t\t\tif ( vector === undefined ) {\n\n\t\t\t\tconsole.warn( 'THREE.BufferAttribute.copyVector2sArray(): vector is undefined', i );\n\t\t\t\tvector = new Vector2();\n\n\t\t\t}\n\n\t\t\tarray[ offset ++ ] = vector.x;\n\t\t\tarray[ offset ++ ] = vector.y;\n\n\t\t}\n\n\t\treturn this;\n\n\t},\n\n\tcopyVector3sArray: function ( vectors ) {\n\n\t\tvar array = this.array, offset = 0;\n\n\t\tfor ( var i = 0, l = vectors.length; i < l; i ++ ) {\n\n\t\t\tvar vector = vectors[ i ];\n\n\t\t\tif ( vector === undefined ) {\n\n\t\t\t\tconsole.warn( 'THREE.BufferAttribute.copyVector3sArray(): vector is undefined', i );\n\t\t\t\tvector = new Vector3();\n\n\t\t\t}\n\n\t\t\tarray[ offset ++ ] = vector.x;\n\t\t\tarray[ offset ++ ] = vector.y;\n\t\t\tarray[ offset ++ ] = vector.z;\n\n\t\t}\n\n\t\treturn this;\n\n\t},\n\n\tcopyVector4sArray: function ( vectors ) {\n\n\t\tvar array = this.array, offset = 0;\n\n\t\tfor ( var i = 0, l = vectors.length; i < l; i ++ ) {\n\n\t\t\tvar vector = vectors[ i ];\n\n\t\t\tif ( vector === undefined ) {\n\n\t\t\t\tconsole.warn( 'THREE.BufferAttribute.copyVector4sArray(): vector is undefined', i );\n\t\t\t\tvector = new Vector4();\n\n\t\t\t}\n\n\t\t\tarray[ offset ++ ] = vector.x;\n\t\t\tarray[ offset ++ ] = vector.y;\n\t\t\tarray[ offset ++ ] = vector.z;\n\t\t\tarray[ offset ++ ] = vector.w;\n\n\t\t}\n\n\t\treturn this;\n\n\t},\n\n\tset: function ( value, offset ) {\n\n\t\tif ( offset === undefined ) offset = 0;\n\n\t\tthis.array.set( value, offset );\n\n\t\treturn this;\n\n\t},\n\n\tgetX: function ( index ) {\n\n\t\treturn this.array[ index * this.itemSize ];\n\n\t},\n\n\tsetX: function ( index, x ) {\n\n\t\tthis.array[ index * this.itemSize ] = x;\n\n\t\treturn this;\n\n\t},\n\n\tgetY: function ( index ) {\n\n\t\treturn this.array[ index * this.itemSize + 1 ];\n\n\t},\n\n\tsetY: function ( index, y ) {\n\n\t\tthis.array[ index * this.itemSize + 1 ] = y;\n\n\t\treturn this;\n\n\t},\n\n\tgetZ: function ( index ) {\n\n\t\treturn this.array[ index * this.itemSize + 2 ];\n\n\t},\n\n\tsetZ: function ( index, z ) {\n\n\t\tthis.array[ index * this.itemSize + 2 ] = z;\n\n\t\treturn this;\n\n\t},\n\n\tgetW: function ( index ) {\n\n\t\treturn this.array[ index * this.itemSize + 3 ];\n\n\t},\n\n\tsetW: function ( index, w ) {\n\n\t\tthis.array[ index * this.itemSize + 3 ] = w;\n\n\t\treturn this;\n\n\t},\n\n\tsetXY: function ( index, x, y ) {\n\n\t\tindex *= this.itemSize;\n\n\t\tthis.array[ index + 0 ] = x;\n\t\tthis.array[ index + 1 ] = y;\n\n\t\treturn this;\n\n\t},\n\n\tsetXYZ: function ( index, x, y, z ) {\n\n\t\tindex *= this.itemSize;\n\n\t\tthis.array[ index + 0 ] = x;\n\t\tthis.array[ index + 1 ] = y;\n\t\tthis.array[ index + 2 ] = z;\n\n\t\treturn this;\n\n\t},\n\n\tsetXYZW: function ( index, x, y, z, w ) {\n\n\t\tindex *= this.itemSize;\n\n\t\tthis.array[ index + 0 ] = x;\n\t\tthis.array[ index + 1 ] = y;\n\t\tthis.array[ index + 2 ] = z;\n\t\tthis.array[ index + 3 ] = w;\n\n\t\treturn this;\n\n\t},\n\n\tclone: function () {\n\n\t\treturn new this.constructor().copy( this );\n\n\t}\n\n};\n\n//\n\nfunction Int8Attribute( array, itemSize ) {\n\n\treturn new BufferAttribute( new Int8Array( array ), itemSize );\n\n}\n\nfunction Uint8Attribute( array, itemSize ) {\n\n\treturn new BufferAttribute( new Uint8Array( array ), itemSize );\n\n}\n\nfunction Uint8ClampedAttribute( array, itemSize ) {\n\n\treturn new BufferAttribute( new Uint8ClampedArray( array ), itemSize );\n\n}\n\nfunction Int16Attribute( array, itemSize ) {\n\n\treturn new BufferAttribute( new Int16Array( array ), itemSize );\n\n}\n\nfunction Uint16Attribute( array, itemSize ) {\n\n\treturn new BufferAttribute( new Uint16Array( array ), itemSize );\n\n}\n\nfunction Int32Attribute( array, itemSize ) {\n\n\treturn new BufferAttribute( new Int32Array( array ), itemSize );\n\n}\n\nfunction Uint32Attribute( array, itemSize ) {\n\n\treturn new BufferAttribute( new Uint32Array( array ), itemSize );\n\n}\n\nfunction Float32Attribute( array, itemSize ) {\n\n\treturn new BufferAttribute( new Float32Array( array ), itemSize );\n\n}\n\nfunction Float64Attribute( array, itemSize ) {\n\n\treturn new BufferAttribute( new Float64Array( array ), itemSize );\n\n}\n\n// Deprecated\n\nfunction DynamicBufferAttribute( array, itemSize ) {\n\n\tconsole.warn( 'THREE.DynamicBufferAttribute has been removed. Use new THREE.BufferAttribute().setDynamic( true ) instead.' );\n\treturn new BufferAttribute( array, itemSize ).setDynamic( true );\n\n}\n\n\nexport {\n DynamicBufferAttribute,\n Float64Attribute,\n Float32Attribute,\n Uint32Attribute,\n Int32Attribute,\n Uint16Attribute,\n Int16Attribute,\n Uint8ClampedAttribute,\n Uint8Attribute,\n Int8Attribute,\n BufferAttribute\n};\n","import { EventDispatcher } from './EventDispatcher';\nimport { Face3 } from './Face3';\nimport { Matrix3 } from '../math/Matrix3';\nimport { Sphere } from '../math/Sphere';\nimport { Box3 } from '../math/Box3';\nimport { Vector3 } from '../math/Vector3';\nimport { Matrix4 } from '../math/Matrix4';\nimport { Vector2 } from '../math/Vector2';\nimport { Color } from '../math/Color';\nimport { Object3D } from './Object3D';\nimport { _Math } from '../math/Math';\n\n/**\n * @author mrdoob / http://mrdoob.com/\n * @author kile / http://kile.stravaganza.org/\n * @author alteredq / http://alteredqualia.com/\n * @author mikael emtinger / http://gomo.se/\n * @author zz85 / http://www.lab4games.net/zz85/blog\n * @author bhouston / http://clara.io\n */\n\nfunction Geometry() {\n\n\tObject.defineProperty( this, 'id', { value: GeometryIdCount() } );\n\n\tthis.uuid = _Math.generateUUID();\n\n\tthis.name = '';\n\tthis.type = 'Geometry';\n\n\tthis.vertices = [];\n\tthis.colors = [];\n\tthis.faces = [];\n\tthis.faceVertexUvs = [ [] ];\n\n\tthis.morphTargets = [];\n\tthis.morphNormals = [];\n\n\tthis.skinWeights = [];\n\tthis.skinIndices = [];\n\n\tthis.lineDistances = [];\n\n\tthis.boundingBox = null;\n\tthis.boundingSphere = null;\n\n\t// update flags\n\n\tthis.elementsNeedUpdate = false;\n\tthis.verticesNeedUpdate = false;\n\tthis.uvsNeedUpdate = false;\n\tthis.normalsNeedUpdate = false;\n\tthis.colorsNeedUpdate = false;\n\tthis.lineDistancesNeedUpdate = false;\n\tthis.groupsNeedUpdate = false;\n\n}\n\nObject.assign( Geometry.prototype, EventDispatcher.prototype, {\n\n\tisGeometry: true,\n\n\tapplyMatrix: function ( matrix ) {\n\n\t\tvar normalMatrix = new Matrix3().getNormalMatrix( matrix );\n\n\t\tfor ( var i = 0, il = this.vertices.length; i < il; i ++ ) {\n\n\t\t\tvar vertex = this.vertices[ i ];\n\t\t\tvertex.applyMatrix4( matrix );\n\n\t\t}\n\n\t\tfor ( var i = 0, il = this.faces.length; i < il; i ++ ) {\n\n\t\t\tvar face = this.faces[ i ];\n\t\t\tface.normal.applyMatrix3( normalMatrix ).normalize();\n\n\t\t\tfor ( var j = 0, jl = face.vertexNormals.length; j < jl; j ++ ) {\n\n\t\t\t\tface.vertexNormals[ j ].applyMatrix3( normalMatrix ).normalize();\n\n\t\t\t}\n\n\t\t}\n\n\t\tif ( this.boundingBox !== null ) {\n\n\t\t\tthis.computeBoundingBox();\n\n\t\t}\n\n\t\tif ( this.boundingSphere !== null ) {\n\n\t\t\tthis.computeBoundingSphere();\n\n\t\t}\n\n\t\tthis.verticesNeedUpdate = true;\n\t\tthis.normalsNeedUpdate = true;\n\n\t\treturn this;\n\n\t},\n\n\trotateX: function () {\n\n\t\t// rotate geometry around world x-axis\n\n\t\tvar m1;\n\n\t\treturn function rotateX( angle ) {\n\n\t\t\tif ( m1 === undefined ) m1 = new Matrix4();\n\n\t\t\tm1.makeRotationX( angle );\n\n\t\t\tthis.applyMatrix( m1 );\n\n\t\t\treturn this;\n\n\t\t};\n\n\t}(),\n\n\trotateY: function () {\n\n\t\t// rotate geometry around world y-axis\n\n\t\tvar m1;\n\n\t\treturn function rotateY( angle ) {\n\n\t\t\tif ( m1 === undefined ) m1 = new Matrix4();\n\n\t\t\tm1.makeRotationY( angle );\n\n\t\t\tthis.applyMatrix( m1 );\n\n\t\t\treturn this;\n\n\t\t};\n\n\t}(),\n\n\trotateZ: function () {\n\n\t\t// rotate geometry around world z-axis\n\n\t\tvar m1;\n\n\t\treturn function rotateZ( angle ) {\n\n\t\t\tif ( m1 === undefined ) m1 = new Matrix4();\n\n\t\t\tm1.makeRotationZ( angle );\n\n\t\t\tthis.applyMatrix( m1 );\n\n\t\t\treturn this;\n\n\t\t};\n\n\t}(),\n\n\ttranslate: function () {\n\n\t\t// translate geometry\n\n\t\tvar m1;\n\n\t\treturn function translate( x, y, z ) {\n\n\t\t\tif ( m1 === undefined ) m1 = new Matrix4();\n\n\t\t\tm1.makeTranslation( x, y, z );\n\n\t\t\tthis.applyMatrix( m1 );\n\n\t\t\treturn this;\n\n\t\t};\n\n\t}(),\n\n\tscale: function () {\n\n\t\t// scale geometry\n\n\t\tvar m1;\n\n\t\treturn function scale( x, y, z ) {\n\n\t\t\tif ( m1 === undefined ) m1 = new Matrix4();\n\n\t\t\tm1.makeScale( x, y, z );\n\n\t\t\tthis.applyMatrix( m1 );\n\n\t\t\treturn this;\n\n\t\t};\n\n\t}(),\n\n\tlookAt: function () {\n\n\t\tvar obj;\n\n\t\treturn function lookAt( vector ) {\n\n\t\t\tif ( obj === undefined ) obj = new Object3D();\n\n\t\t\tobj.lookAt( vector );\n\n\t\t\tobj.updateMatrix();\n\n\t\t\tthis.applyMatrix( obj.matrix );\n\n\t\t};\n\n\t}(),\n\n\tfromBufferGeometry: function ( geometry ) {\n\n\t\tvar scope = this;\n\n\t\tvar indices = geometry.index !== null ? geometry.index.array : undefined;\n\t\tvar attributes = geometry.attributes;\n\n\t\tvar positions = attributes.position.array;\n\t\tvar normals = attributes.normal !== undefined ? attributes.normal.array : undefined;\n\t\tvar colors = attributes.color !== undefined ? attributes.color.array : undefined;\n\t\tvar uvs = attributes.uv !== undefined ? attributes.uv.array : undefined;\n\t\tvar uvs2 = attributes.uv2 !== undefined ? attributes.uv2.array : undefined;\n\n\t\tif ( uvs2 !== undefined ) this.faceVertexUvs[ 1 ] = [];\n\n\t\tvar tempNormals = [];\n\t\tvar tempUVs = [];\n\t\tvar tempUVs2 = [];\n\n\t\tfor ( var i = 0, j = 0; i < positions.length; i += 3, j += 2 ) {\n\n\t\t\tscope.vertices.push( new Vector3( positions[ i ], positions[ i + 1 ], positions[ i + 2 ] ) );\n\n\t\t\tif ( normals !== undefined ) {\n\n\t\t\t\ttempNormals.push( new Vector3( normals[ i ], normals[ i + 1 ], normals[ i + 2 ] ) );\n\n\t\t\t}\n\n\t\t\tif ( colors !== undefined ) {\n\n\t\t\t\tscope.colors.push( new Color( colors[ i ], colors[ i + 1 ], colors[ i + 2 ] ) );\n\n\t\t\t}\n\n\t\t\tif ( uvs !== undefined ) {\n\n\t\t\t\ttempUVs.push( new Vector2( uvs[ j ], uvs[ j + 1 ] ) );\n\n\t\t\t}\n\n\t\t\tif ( uvs2 !== undefined ) {\n\n\t\t\t\ttempUVs2.push( new Vector2( uvs2[ j ], uvs2[ j + 1 ] ) );\n\n\t\t\t}\n\n\t\t}\n\n\t\tfunction addFace( a, b, c, materialIndex ) {\n\n\t\t\tvar vertexNormals = normals !== undefined ? [ tempNormals[ a ].clone(), tempNormals[ b ].clone(), tempNormals[ c ].clone() ] : [];\n\t\t\tvar vertexColors = colors !== undefined ? [ scope.colors[ a ].clone(), scope.colors[ b ].clone(), scope.colors[ c ].clone() ] : [];\n\n\t\t\tvar face = new Face3( a, b, c, vertexNormals, vertexColors, materialIndex );\n\n\t\t\tscope.faces.push( face );\n\n\t\t\tif ( uvs !== undefined ) {\n\n\t\t\t\tscope.faceVertexUvs[ 0 ].push( [ tempUVs[ a ].clone(), tempUVs[ b ].clone(), tempUVs[ c ].clone() ] );\n\n\t\t\t}\n\n\t\t\tif ( uvs2 !== undefined ) {\n\n\t\t\t\tscope.faceVertexUvs[ 1 ].push( [ tempUVs2[ a ].clone(), tempUVs2[ b ].clone(), tempUVs2[ c ].clone() ] );\n\n\t\t\t}\n\n\t\t}\n\n\t\tif ( indices !== undefined ) {\n\n\t\t\tvar groups = geometry.groups;\n\n\t\t\tif ( groups.length > 0 ) {\n\n\t\t\t\tfor ( var i = 0; i < groups.length; i ++ ) {\n\n\t\t\t\t\tvar group = groups[ i ];\n\n\t\t\t\t\tvar start = group.start;\n\t\t\t\t\tvar count = group.count;\n\n\t\t\t\t\tfor ( var j = start, jl = start + count; j < jl; j += 3 ) {\n\n\t\t\t\t\t\taddFace( indices[ j ], indices[ j + 1 ], indices[ j + 2 ], group.materialIndex );\n\n\t\t\t\t\t}\n\n\t\t\t\t}\n\n\t\t\t} else {\n\n\t\t\t\tfor ( var i = 0; i < indices.length; i += 3 ) {\n\n\t\t\t\t\taddFace( indices[ i ], indices[ i + 1 ], indices[ i + 2 ] );\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t} else {\n\n\t\t\tfor ( var i = 0; i < positions.length / 3; i += 3 ) {\n\n\t\t\t\taddFace( i, i + 1, i + 2 );\n\n\t\t\t}\n\n\t\t}\n\n\t\tthis.computeFaceNormals();\n\n\t\tif ( geometry.boundingBox !== null ) {\n\n\t\t\tthis.boundingBox = geometry.boundingBox.clone();\n\n\t\t}\n\n\t\tif ( geometry.boundingSphere !== null ) {\n\n\t\t\tthis.boundingSphere = geometry.boundingSphere.clone();\n\n\t\t}\n\n\t\treturn this;\n\n\t},\n\n\tcenter: function () {\n\n\t\tthis.computeBoundingBox();\n\n\t\tvar offset = this.boundingBox.getCenter().negate();\n\n\t\tthis.translate( offset.x, offset.y, offset.z );\n\n\t\treturn offset;\n\n\t},\n\n\tnormalize: function () {\n\n\t\tthis.computeBoundingSphere();\n\n\t\tvar center = this.boundingSphere.center;\n\t\tvar radius = this.boundingSphere.radius;\n\n\t\tvar s = radius === 0 ? 1 : 1.0 / radius;\n\n\t\tvar matrix = new Matrix4();\n\t\tmatrix.set(\n\t\t\ts, 0, 0, - s * center.x,\n\t\t\t0, s, 0, - s * center.y,\n\t\t\t0, 0, s, - s * center.z,\n\t\t\t0, 0, 0, 1\n\t\t);\n\n\t\tthis.applyMatrix( matrix );\n\n\t\treturn this;\n\n\t},\n\n\tcomputeFaceNormals: function () {\n\n\t\tvar cb = new Vector3(), ab = new Vector3();\n\n\t\tfor ( var f = 0, fl = this.faces.length; f < fl; f ++ ) {\n\n\t\t\tvar face = this.faces[ f ];\n\n\t\t\tvar vA = this.vertices[ face.a ];\n\t\t\tvar vB = this.vertices[ face.b ];\n\t\t\tvar vC = this.vertices[ face.c ];\n\n\t\t\tcb.subVectors( vC, vB );\n\t\t\tab.subVectors( vA, vB );\n\t\t\tcb.cross( ab );\n\n\t\t\tcb.normalize();\n\n\t\t\tface.normal.copy( cb );\n\n\t\t}\n\n\t},\n\n\tcomputeVertexNormals: function ( areaWeighted ) {\n\n\t\tif ( areaWeighted === undefined ) areaWeighted = true;\n\n\t\tvar v, vl, f, fl, face, vertices;\n\n\t\tvertices = new Array( this.vertices.length );\n\n\t\tfor ( v = 0, vl = this.vertices.length; v < vl; v ++ ) {\n\n\t\t\tvertices[ v ] = new Vector3();\n\n\t\t}\n\n\t\tif ( areaWeighted ) {\n\n\t\t\t// vertex normals weighted by triangle areas\n\t\t\t// http://www.iquilezles.org/www/articles/normals/normals.htm\n\n\t\t\tvar vA, vB, vC;\n\t\t\tvar cb = new Vector3(), ab = new Vector3();\n\n\t\t\tfor ( f = 0, fl = this.faces.length; f < fl; f ++ ) {\n\n\t\t\t\tface = this.faces[ f ];\n\n\t\t\t\tvA = this.vertices[ face.a ];\n\t\t\t\tvB = this.vertices[ face.b ];\n\t\t\t\tvC = this.vertices[ face.c ];\n\n\t\t\t\tcb.subVectors( vC, vB );\n\t\t\t\tab.subVectors( vA, vB );\n\t\t\t\tcb.cross( ab );\n\n\t\t\t\tvertices[ face.a ].add( cb );\n\t\t\t\tvertices[ face.b ].add( cb );\n\t\t\t\tvertices[ face.c ].add( cb );\n\n\t\t\t}\n\n\t\t} else {\n\n\t\t\tthis.computeFaceNormals();\n\n\t\t\tfor ( f = 0, fl = this.faces.length; f < fl; f ++ ) {\n\n\t\t\t\tface = this.faces[ f ];\n\n\t\t\t\tvertices[ face.a ].add( face.normal );\n\t\t\t\tvertices[ face.b ].add( face.normal );\n\t\t\t\tvertices[ face.c ].add( face.normal );\n\n\t\t\t}\n\n\t\t}\n\n\t\tfor ( v = 0, vl = this.vertices.length; v < vl; v ++ ) {\n\n\t\t\tvertices[ v ].normalize();\n\n\t\t}\n\n\t\tfor ( f = 0, fl = this.faces.length; f < fl; f ++ ) {\n\n\t\t\tface = this.faces[ f ];\n\n\t\t\tvar vertexNormals = face.vertexNormals;\n\n\t\t\tif ( vertexNormals.length === 3 ) {\n\n\t\t\t\tvertexNormals[ 0 ].copy( vertices[ face.a ] );\n\t\t\t\tvertexNormals[ 1 ].copy( vertices[ face.b ] );\n\t\t\t\tvertexNormals[ 2 ].copy( vertices[ face.c ] );\n\n\t\t\t} else {\n\n\t\t\t\tvertexNormals[ 0 ] = vertices[ face.a ].clone();\n\t\t\t\tvertexNormals[ 1 ] = vertices[ face.b ].clone();\n\t\t\t\tvertexNormals[ 2 ] = vertices[ face.c ].clone();\n\n\t\t\t}\n\n\t\t}\n\n\t\tif ( this.faces.length > 0 ) {\n\n\t\t\tthis.normalsNeedUpdate = true;\n\n\t\t}\n\n\t},\n\n\tcomputeFlatVertexNormals: function () {\n\n\t\tvar f, fl, face;\n\n\t\tthis.computeFaceNormals();\n\n\t\tfor ( f = 0, fl = this.faces.length; f < fl; f ++ ) {\n\n\t\t\tface = this.faces[ f ];\n\n\t\t\tvar vertexNormals = face.vertexNormals;\n\n\t\t\tif ( vertexNormals.length === 3 ) {\n\n\t\t\t\tvertexNormals[ 0 ].copy( face.normal );\n\t\t\t\tvertexNormals[ 1 ].copy( face.normal );\n\t\t\t\tvertexNormals[ 2 ].copy( face.normal );\n\n\t\t\t} else {\n\n\t\t\t\tvertexNormals[ 0 ] = face.normal.clone();\n\t\t\t\tvertexNormals[ 1 ] = face.normal.clone();\n\t\t\t\tvertexNormals[ 2 ] = face.normal.clone();\n\n\t\t\t}\n\n\t\t}\n\n\t\tif ( this.faces.length > 0 ) {\n\n\t\t\tthis.normalsNeedUpdate = true;\n\n\t\t}\n\n\t},\n\n\tcomputeMorphNormals: function () {\n\n\t\tvar i, il, f, fl, face;\n\n\t\t// save original normals\n\t\t// - create temp variables on first access\n\t\t// otherwise just copy (for faster repeated calls)\n\n\t\tfor ( f = 0, fl = this.faces.length; f < fl; f ++ ) {\n\n\t\t\tface = this.faces[ f ];\n\n\t\t\tif ( ! face.__originalFaceNormal ) {\n\n\t\t\t\tface.__originalFaceNormal = face.normal.clone();\n\n\t\t\t} else {\n\n\t\t\t\tface.__originalFaceNormal.copy( face.normal );\n\n\t\t\t}\n\n\t\t\tif ( ! face.__originalVertexNormals ) face.__originalVertexNormals = [];\n\n\t\t\tfor ( i = 0, il = face.vertexNormals.length; i < il; i ++ ) {\n\n\t\t\t\tif ( ! face.__originalVertexNormals[ i ] ) {\n\n\t\t\t\t\tface.__originalVertexNormals[ i ] = face.vertexNormals[ i ].clone();\n\n\t\t\t\t} else {\n\n\t\t\t\t\tface.__originalVertexNormals[ i ].copy( face.vertexNormals[ i ] );\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t}\n\n\t\t// use temp geometry to compute face and vertex normals for each morph\n\n\t\tvar tmpGeo = new Geometry();\n\t\ttmpGeo.faces = this.faces;\n\n\t\tfor ( i = 0, il = this.morphTargets.length; i < il; i ++ ) {\n\n\t\t\t// create on first access\n\n\t\t\tif ( ! this.morphNormals[ i ] ) {\n\n\t\t\t\tthis.morphNormals[ i ] = {};\n\t\t\t\tthis.morphNormals[ i ].faceNormals = [];\n\t\t\t\tthis.morphNormals[ i ].vertexNormals = [];\n\n\t\t\t\tvar dstNormalsFace = this.morphNormals[ i ].faceNormals;\n\t\t\t\tvar dstNormalsVertex = this.morphNormals[ i ].vertexNormals;\n\n\t\t\t\tvar faceNormal, vertexNormals;\n\n\t\t\t\tfor ( f = 0, fl = this.faces.length; f < fl; f ++ ) {\n\n\t\t\t\t\tfaceNormal = new Vector3();\n\t\t\t\t\tvertexNormals = { a: new Vector3(), b: new Vector3(), c: new Vector3() };\n\n\t\t\t\t\tdstNormalsFace.push( faceNormal );\n\t\t\t\t\tdstNormalsVertex.push( vertexNormals );\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t\tvar morphNormals = this.morphNormals[ i ];\n\n\t\t\t// set vertices to morph target\n\n\t\t\ttmpGeo.vertices = this.morphTargets[ i ].vertices;\n\n\t\t\t// compute morph normals\n\n\t\t\ttmpGeo.computeFaceNormals();\n\t\t\ttmpGeo.computeVertexNormals();\n\n\t\t\t// store morph normals\n\n\t\t\tvar faceNormal, vertexNormals;\n\n\t\t\tfor ( f = 0, fl = this.faces.length; f < fl; f ++ ) {\n\n\t\t\t\tface = this.faces[ f ];\n\n\t\t\t\tfaceNormal = morphNormals.faceNormals[ f ];\n\t\t\t\tvertexNormals = morphNormals.vertexNormals[ f ];\n\n\t\t\t\tfaceNormal.copy( face.normal );\n\n\t\t\t\tvertexNormals.a.copy( face.vertexNormals[ 0 ] );\n\t\t\t\tvertexNormals.b.copy( face.vertexNormals[ 1 ] );\n\t\t\t\tvertexNormals.c.copy( face.vertexNormals[ 2 ] );\n\n\t\t\t}\n\n\t\t}\n\n\t\t// restore original normals\n\n\t\tfor ( f = 0, fl = this.faces.length; f < fl; f ++ ) {\n\n\t\t\tface = this.faces[ f ];\n\n\t\t\tface.normal = face.__originalFaceNormal;\n\t\t\tface.vertexNormals = face.__originalVertexNormals;\n\n\t\t}\n\n\t},\n\n\tcomputeTangents: function () {\n\n\t\tconsole.warn( 'THREE.Geometry: .computeTangents() has been removed.' );\n\n\t},\n\n\tcomputeLineDistances: function () {\n\n\t\tvar d = 0;\n\t\tvar vertices = this.vertices;\n\n\t\tfor ( var i = 0, il = vertices.length; i < il; i ++ ) {\n\n\t\t\tif ( i > 0 ) {\n\n\t\t\t\td += vertices[ i ].distanceTo( vertices[ i - 1 ] );\n\n\t\t\t}\n\n\t\t\tthis.lineDistances[ i ] = d;\n\n\t\t}\n\n\t},\n\n\tcomputeBoundingBox: function () {\n\n\t\tif ( this.boundingBox === null ) {\n\n\t\t\tthis.boundingBox = new Box3();\n\n\t\t}\n\n\t\tthis.boundingBox.setFromPoints( this.vertices );\n\n\t},\n\n\tcomputeBoundingSphere: function () {\n\n\t\tif ( this.boundingSphere === null ) {\n\n\t\t\tthis.boundingSphere = new Sphere();\n\n\t\t}\n\n\t\tthis.boundingSphere.setFromPoints( this.vertices );\n\n\t},\n\n\tmerge: function ( geometry, matrix, materialIndexOffset ) {\n\n\t\tif ( (geometry && geometry.isGeometry) === false ) {\n\n\t\t\tconsole.error( 'THREE.Geometry.merge(): geometry not an instance of THREE.Geometry.', geometry );\n\t\t\treturn;\n\n\t\t}\n\n\t\tvar normalMatrix,\n\t\tvertexOffset = this.vertices.length,\n\t\tvertices1 = this.vertices,\n\t\tvertices2 = geometry.vertices,\n\t\tfaces1 = this.faces,\n\t\tfaces2 = geometry.faces,\n\t\tuvs1 = this.faceVertexUvs[ 0 ],\n\t\tuvs2 = geometry.faceVertexUvs[ 0 ],\n\t\tcolors1 = this.colors,\n\t\tcolors2 = geometry.colors;\n\n\t\tif ( materialIndexOffset === undefined ) materialIndexOffset = 0;\n\n\t\tif ( matrix !== undefined ) {\n\n\t\t\tnormalMatrix = new Matrix3().getNormalMatrix( matrix );\n\n\t\t}\n\n\t\t// vertices\n\n\t\tfor ( var i = 0, il = vertices2.length; i < il; i ++ ) {\n\n\t\t\tvar vertex = vertices2[ i ];\n\n\t\t\tvar vertexCopy = vertex.clone();\n\n\t\t\tif ( matrix !== undefined ) vertexCopy.applyMatrix4( matrix );\n\n\t\t\tvertices1.push( vertexCopy );\n\n\t\t}\n\n\t\t// colors\n\n\t\tfor ( var i = 0, il = colors2.length; i < il; i ++ ) {\n\n\t\t\tcolors1.push( colors2[ i ].clone() );\n\n\t\t}\n\n\t\t// faces\n\n\t\tfor ( i = 0, il = faces2.length; i < il; i ++ ) {\n\n\t\t\tvar face = faces2[ i ], faceCopy, normal, color,\n\t\t\tfaceVertexNormals = face.vertexNormals,\n\t\t\tfaceVertexColors = face.vertexColors;\n\n\t\t\tfaceCopy = new Face3( face.a + vertexOffset, face.b + vertexOffset, face.c + vertexOffset );\n\t\t\tfaceCopy.normal.copy( face.normal );\n\n\t\t\tif ( normalMatrix !== undefined ) {\n\n\t\t\t\tfaceCopy.normal.applyMatrix3( normalMatrix ).normalize();\n\n\t\t\t}\n\n\t\t\tfor ( var j = 0, jl = faceVertexNormals.length; j < jl; j ++ ) {\n\n\t\t\t\tnormal = faceVertexNormals[ j ].clone();\n\n\t\t\t\tif ( normalMatrix !== undefined ) {\n\n\t\t\t\t\tnormal.applyMatrix3( normalMatrix ).normalize();\n\n\t\t\t\t}\n\n\t\t\t\tfaceCopy.vertexNormals.push( normal );\n\n\t\t\t}\n\n\t\t\tfaceCopy.color.copy( face.color );\n\n\t\t\tfor ( var j = 0, jl = faceVertexColors.length; j < jl; j ++ ) {\n\n\t\t\t\tcolor = faceVertexColors[ j ];\n\t\t\t\tfaceCopy.vertexColors.push( color.clone() );\n\n\t\t\t}\n\n\t\t\tfaceCopy.materialIndex = face.materialIndex + materialIndexOffset;\n\n\t\t\tfaces1.push( faceCopy );\n\n\t\t}\n\n\t\t// uvs\n\n\t\tfor ( i = 0, il = uvs2.length; i < il; i ++ ) {\n\n\t\t\tvar uv = uvs2[ i ], uvCopy = [];\n\n\t\t\tif ( uv === undefined ) {\n\n\t\t\t\tcontinue;\n\n\t\t\t}\n\n\t\t\tfor ( var j = 0, jl = uv.length; j < jl; j ++ ) {\n\n\t\t\t\tuvCopy.push( uv[ j ].clone() );\n\n\t\t\t}\n\n\t\t\tuvs1.push( uvCopy );\n\n\t\t}\n\n\t},\n\n\tmergeMesh: function ( mesh ) {\n\n\t\tif ( (mesh && mesh.isMesh) === false ) {\n\n\t\t\tconsole.error( 'THREE.Geometry.mergeMesh(): mesh not an instance of THREE.Mesh.', mesh );\n\t\t\treturn;\n\n\t\t}\n\n\t\tmesh.matrixAutoUpdate && mesh.updateMatrix();\n\n\t\tthis.merge( mesh.geometry, mesh.matrix );\n\n\t},\n\n\t/*\n\t * Checks for duplicate vertices with hashmap.\n\t * Duplicated vertices are removed\n\t * and faces' vertices are updated.\n\t */\n\n\tmergeVertices: function () {\n\n\t\tvar verticesMap = {}; // Hashmap for looking up vertices by position coordinates (and making sure they are unique)\n\t\tvar unique = [], changes = [];\n\n\t\tvar v, key;\n\t\tvar precisionPoints = 4; // number of decimal points, e.g. 4 for epsilon of 0.0001\n\t\tvar precision = Math.pow( 10, precisionPoints );\n\t\tvar i, il, face;\n\t\tvar indices, j, jl;\n\n\t\tfor ( i = 0, il = this.vertices.length; i < il; i ++ ) {\n\n\t\t\tv = this.vertices[ i ];\n\t\t\tkey = Math.round( v.x * precision ) + '_' + Math.round( v.y * precision ) + '_' + Math.round( v.z * precision );\n\n\t\t\tif ( verticesMap[ key ] === undefined ) {\n\n\t\t\t\tverticesMap[ key ] = i;\n\t\t\t\tunique.push( this.vertices[ i ] );\n\t\t\t\tchanges[ i ] = unique.length - 1;\n\n\t\t\t} else {\n\n\t\t\t\t//console.log('Duplicate vertex found. ', i, ' could be using ', verticesMap[key]);\n\t\t\t\tchanges[ i ] = changes[ verticesMap[ key ] ];\n\n\t\t\t}\n\n\t\t}\n\n\n\t\t// if faces are completely degenerate after merging vertices, we\n\t\t// have to remove them from the geometry.\n\t\tvar faceIndicesToRemove = [];\n\n\t\tfor ( i = 0, il = this.faces.length; i < il; i ++ ) {\n\n\t\t\tface = this.faces[ i ];\n\n\t\t\tface.a = changes[ face.a ];\n\t\t\tface.b = changes[ face.b ];\n\t\t\tface.c = changes[ face.c ];\n\n\t\t\tindices = [ face.a, face.b, face.c ];\n\n\t\t\tvar dupIndex = - 1;\n\n\t\t\t// if any duplicate vertices are found in a Face3\n\t\t\t// we have to remove the face as nothing can be saved\n\t\t\tfor ( var n = 0; n < 3; n ++ ) {\n\n\t\t\t\tif ( indices[ n ] === indices[ ( n + 1 ) % 3 ] ) {\n\n\t\t\t\t\tdupIndex = n;\n\t\t\t\t\tfaceIndicesToRemove.push( i );\n\t\t\t\t\tbreak;\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t}\n\n\t\tfor ( i = faceIndicesToRemove.length - 1; i >= 0; i -- ) {\n\n\t\t\tvar idx = faceIndicesToRemove[ i ];\n\n\t\t\tthis.faces.splice( idx, 1 );\n\n\t\t\tfor ( j = 0, jl = this.faceVertexUvs.length; j < jl; j ++ ) {\n\n\t\t\t\tthis.faceVertexUvs[ j ].splice( idx, 1 );\n\n\t\t\t}\n\n\t\t}\n\n\t\t// Use unique set of vertices\n\n\t\tvar diff = this.vertices.length - unique.length;\n\t\tthis.vertices = unique;\n\t\treturn diff;\n\n\t},\n\n\tsortFacesByMaterialIndex: function () {\n\n\t\tvar faces = this.faces;\n\t\tvar length = faces.length;\n\n\t\t// tag faces\n\n\t\tfor ( var i = 0; i < length; i ++ ) {\n\n\t\t\tfaces[ i ]._id = i;\n\n\t\t}\n\n\t\t// sort faces\n\n\t\tfunction materialIndexSort( a, b ) {\n\n\t\t\treturn a.materialIndex - b.materialIndex;\n\n\t\t}\n\n\t\tfaces.sort( materialIndexSort );\n\n\t\t// sort uvs\n\n\t\tvar uvs1 = this.faceVertexUvs[ 0 ];\n\t\tvar uvs2 = this.faceVertexUvs[ 1 ];\n\n\t\tvar newUvs1, newUvs2;\n\n\t\tif ( uvs1 && uvs1.length === length ) newUvs1 = [];\n\t\tif ( uvs2 && uvs2.length === length ) newUvs2 = [];\n\n\t\tfor ( var i = 0; i < length; i ++ ) {\n\n\t\t\tvar id = faces[ i ]._id;\n\n\t\t\tif ( newUvs1 ) newUvs1.push( uvs1[ id ] );\n\t\t\tif ( newUvs2 ) newUvs2.push( uvs2[ id ] );\n\n\t\t}\n\n\t\tif ( newUvs1 ) this.faceVertexUvs[ 0 ] = newUvs1;\n\t\tif ( newUvs2 ) this.faceVertexUvs[ 1 ] = newUvs2;\n\n\t},\n\n\ttoJSON: function () {\n\n\t\tvar data = {\n\t\t\tmetadata: {\n\t\t\t\tversion: 4.4,\n\t\t\t\ttype: 'Geometry',\n\t\t\t\tgenerator: 'Geometry.toJSON'\n\t\t\t}\n\t\t};\n\n\t\t// standard Geometry serialization\n\n\t\tdata.uuid = this.uuid;\n\t\tdata.type = this.type;\n\t\tif ( this.name !== '' ) data.name = this.name;\n\n\t\tif ( this.parameters !== undefined ) {\n\n\t\t\tvar parameters = this.parameters;\n\n\t\t\tfor ( var key in parameters ) {\n\n\t\t\t\tif ( parameters[ key ] !== undefined ) data[ key ] = parameters[ key ];\n\n\t\t\t}\n\n\t\t\treturn data;\n\n\t\t}\n\n\t\tvar vertices = [];\n\n\t\tfor ( var i = 0; i < this.vertices.length; i ++ ) {\n\n\t\t\tvar vertex = this.vertices[ i ];\n\t\t\tvertices.push( vertex.x, vertex.y, vertex.z );\n\n\t\t}\n\n\t\tvar faces = [];\n\t\tvar normals = [];\n\t\tvar normalsHash = {};\n\t\tvar colors = [];\n\t\tvar colorsHash = {};\n\t\tvar uvs = [];\n\t\tvar uvsHash = {};\n\n\t\tfor ( var i = 0; i < this.faces.length; i ++ ) {\n\n\t\t\tvar face = this.faces[ i ];\n\n\t\t\tvar hasMaterial = true;\n\t\t\tvar hasFaceUv = false; // deprecated\n\t\t\tvar hasFaceVertexUv = this.faceVertexUvs[ 0 ][ i ] !== undefined;\n\t\t\tvar hasFaceNormal = face.normal.length() > 0;\n\t\t\tvar hasFaceVertexNormal = face.vertexNormals.length > 0;\n\t\t\tvar hasFaceColor = face.color.r !== 1 || face.color.g !== 1 || face.color.b !== 1;\n\t\t\tvar hasFaceVertexColor = face.vertexColors.length > 0;\n\n\t\t\tvar faceType = 0;\n\n\t\t\tfaceType = setBit( faceType, 0, 0 ); // isQuad\n\t\t\tfaceType = setBit( faceType, 1, hasMaterial );\n\t\t\tfaceType = setBit( faceType, 2, hasFaceUv );\n\t\t\tfaceType = setBit( faceType, 3, hasFaceVertexUv );\n\t\t\tfaceType = setBit( faceType, 4, hasFaceNormal );\n\t\t\tfaceType = setBit( faceType, 5, hasFaceVertexNormal );\n\t\t\tfaceType = setBit( faceType, 6, hasFaceColor );\n\t\t\tfaceType = setBit( faceType, 7, hasFaceVertexColor );\n\n\t\t\tfaces.push( faceType );\n\t\t\tfaces.push( face.a, face.b, face.c );\n\t\t\tfaces.push( face.materialIndex );\n\n\t\t\tif ( hasFaceVertexUv ) {\n\n\t\t\t\tvar faceVertexUvs = this.faceVertexUvs[ 0 ][ i ];\n\n\t\t\t\tfaces.push(\n\t\t\t\t\tgetUvIndex( faceVertexUvs[ 0 ] ),\n\t\t\t\t\tgetUvIndex( faceVertexUvs[ 1 ] ),\n\t\t\t\t\tgetUvIndex( faceVertexUvs[ 2 ] )\n\t\t\t\t);\n\n\t\t\t}\n\n\t\t\tif ( hasFaceNormal ) {\n\n\t\t\t\tfaces.push( getNormalIndex( face.normal ) );\n\n\t\t\t}\n\n\t\t\tif ( hasFaceVertexNormal ) {\n\n\t\t\t\tvar vertexNormals = face.vertexNormals;\n\n\t\t\t\tfaces.push(\n\t\t\t\t\tgetNormalIndex( vertexNormals[ 0 ] ),\n\t\t\t\t\tgetNormalIndex( vertexNormals[ 1 ] ),\n\t\t\t\t\tgetNormalIndex( vertexNormals[ 2 ] )\n\t\t\t\t);\n\n\t\t\t}\n\n\t\t\tif ( hasFaceColor ) {\n\n\t\t\t\tfaces.push( getColorIndex( face.color ) );\n\n\t\t\t}\n\n\t\t\tif ( hasFaceVertexColor ) {\n\n\t\t\t\tvar vertexColors = face.vertexColors;\n\n\t\t\t\tfaces.push(\n\t\t\t\t\tgetColorIndex( vertexColors[ 0 ] ),\n\t\t\t\t\tgetColorIndex( vertexColors[ 1 ] ),\n\t\t\t\t\tgetColorIndex( vertexColors[ 2 ] )\n\t\t\t\t);\n\n\t\t\t}\n\n\t\t}\n\n\t\tfunction setBit( value, position, enabled ) {\n\n\t\t\treturn enabled ? value | ( 1 << position ) : value & ( ~ ( 1 << position ) );\n\n\t\t}\n\n\t\tfunction getNormalIndex( normal ) {\n\n\t\t\tvar hash = normal.x.toString() + normal.y.toString() + normal.z.toString();\n\n\t\t\tif ( normalsHash[ hash ] !== undefined ) {\n\n\t\t\t\treturn normalsHash[ hash ];\n\n\t\t\t}\n\n\t\t\tnormalsHash[ hash ] = normals.length / 3;\n\t\t\tnormals.push( normal.x, normal.y, normal.z );\n\n\t\t\treturn normalsHash[ hash ];\n\n\t\t}\n\n\t\tfunction getColorIndex( color ) {\n\n\t\t\tvar hash = color.r.toString() + color.g.toString() + color.b.toString();\n\n\t\t\tif ( colorsHash[ hash ] !== undefined ) {\n\n\t\t\t\treturn colorsHash[ hash ];\n\n\t\t\t}\n\n\t\t\tcolorsHash[ hash ] = colors.length;\n\t\t\tcolors.push( color.getHex() );\n\n\t\t\treturn colorsHash[ hash ];\n\n\t\t}\n\n\t\tfunction getUvIndex( uv ) {\n\n\t\t\tvar hash = uv.x.toString() + uv.y.toString();\n\n\t\t\tif ( uvsHash[ hash ] !== undefined ) {\n\n\t\t\t\treturn uvsHash[ hash ];\n\n\t\t\t}\n\n\t\t\tuvsHash[ hash ] = uvs.length / 2;\n\t\t\tuvs.push( uv.x, uv.y );\n\n\t\t\treturn uvsHash[ hash ];\n\n\t\t}\n\n\t\tdata.data = {};\n\n\t\tdata.data.vertices = vertices;\n\t\tdata.data.normals = normals;\n\t\tif ( colors.length > 0 ) data.data.colors = colors;\n\t\tif ( uvs.length > 0 ) data.data.uvs = [ uvs ]; // temporal backward compatibility\n\t\tdata.data.faces = faces;\n\n\t\treturn data;\n\n\t},\n\n\tclone: function () {\n\n\t\t/*\n\t\t// Handle primitives\n\n\t\tvar parameters = this.parameters;\n\n\t\tif ( parameters !== undefined ) {\n\n\t\t\tvar values = [];\n\n\t\t\tfor ( var key in parameters ) {\n\n\t\t\t\tvalues.push( parameters[ key ] );\n\n\t\t\t}\n\n\t\t\tvar geometry = Object.create( this.constructor.prototype );\n\t\t\tthis.constructor.apply( geometry, values );\n\t\t\treturn geometry;\n\n\t\t}\n\n\t\treturn new this.constructor().copy( this );\n\t\t*/\n\n\t\treturn new Geometry().copy( this );\n\n\t},\n\n\tcopy: function ( source ) {\n\n\t\tthis.vertices = [];\n\t\tthis.faces = [];\n\t\tthis.faceVertexUvs = [ [] ];\n\t\tthis.colors = [];\n\n\t\tvar vertices = source.vertices;\n\n\t\tfor ( var i = 0, il = vertices.length; i < il; i ++ ) {\n\n\t\t\tthis.vertices.push( vertices[ i ].clone() );\n\n\t\t}\n\n\t\tvar colors = source.colors;\n\n\t\tfor ( var i = 0, il = colors.length; i < il; i ++ ) {\n\n\t\t\tthis.colors.push( colors[ i ].clone() );\n\n\t\t}\n\n\t\tvar faces = source.faces;\n\n\t\tfor ( var i = 0, il = faces.length; i < il; i ++ ) {\n\n\t\t\tthis.faces.push( faces[ i ].clone() );\n\n\t\t}\n\n\t\tfor ( var i = 0, il = source.faceVertexUvs.length; i < il; i ++ ) {\n\n\t\t\tvar faceVertexUvs = source.faceVertexUvs[ i ];\n\n\t\t\tif ( this.faceVertexUvs[ i ] === undefined ) {\n\n\t\t\t\tthis.faceVertexUvs[ i ] = [];\n\n\t\t\t}\n\n\t\t\tfor ( var j = 0, jl = faceVertexUvs.length; j < jl; j ++ ) {\n\n\t\t\t\tvar uvs = faceVertexUvs[ j ], uvsCopy = [];\n\n\t\t\t\tfor ( var k = 0, kl = uvs.length; k < kl; k ++ ) {\n\n\t\t\t\t\tvar uv = uvs[ k ];\n\n\t\t\t\t\tuvsCopy.push( uv.clone() );\n\n\t\t\t\t}\n\n\t\t\t\tthis.faceVertexUvs[ i ].push( uvsCopy );\n\n\t\t\t}\n\n\t\t}\n\n\t\treturn this;\n\n\t},\n\n\tdispose: function () {\n\n\t\tthis.dispatchEvent( { type: 'dispose' } );\n\n\t}\n\n} );\n\nvar count = 0;\nfunction GeometryIdCount() { return count++; };\n\n\nexport { GeometryIdCount, Geometry };\n","import { Geometry } from './Geometry';\nimport { EventDispatcher } from './EventDispatcher';\nimport { Vector2 } from '../math/Vector2';\nimport { _Math } from '../math/Math';\nimport { GeometryIdCount } from './Geometry';\n\n/**\n * @author mrdoob / http://mrdoob.com/\n */\n\nfunction DirectGeometry() {\n\n\tObject.defineProperty( this, 'id', { value: GeometryIdCount() } );\n\n\tthis.uuid = _Math.generateUUID();\n\n\tthis.name = '';\n\tthis.type = 'DirectGeometry';\n\n\tthis.indices = [];\n\tthis.vertices = [];\n\tthis.normals = [];\n\tthis.colors = [];\n\tthis.uvs = [];\n\tthis.uvs2 = [];\n\n\tthis.groups = [];\n\n\tthis.morphTargets = {};\n\n\tthis.skinWeights = [];\n\tthis.skinIndices = [];\n\n\t// this.lineDistances = [];\n\n\tthis.boundingBox = null;\n\tthis.boundingSphere = null;\n\n\t// update flags\n\n\tthis.verticesNeedUpdate = false;\n\tthis.normalsNeedUpdate = false;\n\tthis.colorsNeedUpdate = false;\n\tthis.uvsNeedUpdate = false;\n\tthis.groupsNeedUpdate = false;\n\n}\n\nObject.assign( DirectGeometry.prototype, EventDispatcher.prototype, {\n\n\tcomputeBoundingBox: Geometry.prototype.computeBoundingBox,\n\tcomputeBoundingSphere: Geometry.prototype.computeBoundingSphere,\n\n\tcomputeFaceNormals: function () {\n\n\t\tconsole.warn( 'THREE.DirectGeometry: computeFaceNormals() is not a method of this type of geometry.' );\n\n\t},\n\n\tcomputeVertexNormals: function () {\n\n\t\tconsole.warn( 'THREE.DirectGeometry: computeVertexNormals() is not a method of this type of geometry.' );\n\n\t},\n\n\tcomputeGroups: function ( geometry ) {\n\n\t\tvar group;\n\t\tvar groups = [];\n\t\tvar materialIndex;\n\n\t\tvar faces = geometry.faces;\n\n\t\tfor ( var i = 0; i < faces.length; i ++ ) {\n\n\t\t\tvar face = faces[ i ];\n\n\t\t\t// materials\n\n\t\t\tif ( face.materialIndex !== materialIndex ) {\n\n\t\t\t\tmaterialIndex = face.materialIndex;\n\n\t\t\t\tif ( group !== undefined ) {\n\n\t\t\t\t\tgroup.count = ( i * 3 ) - group.start;\n\t\t\t\t\tgroups.push( group );\n\n\t\t\t\t}\n\n\t\t\t\tgroup = {\n\t\t\t\t\tstart: i * 3,\n\t\t\t\t\tmaterialIndex: materialIndex\n\t\t\t\t};\n\n\t\t\t}\n\n\t\t}\n\n\t\tif ( group !== undefined ) {\n\n\t\t\tgroup.count = ( i * 3 ) - group.start;\n\t\t\tgroups.push( group );\n\n\t\t}\n\n\t\tthis.groups = groups;\n\n\t},\n\n\tfromGeometry: function ( geometry ) {\n\n\t\tvar faces = geometry.faces;\n\t\tvar vertices = geometry.vertices;\n\t\tvar faceVertexUvs = geometry.faceVertexUvs;\n\n\t\tvar hasFaceVertexUv = faceVertexUvs[ 0 ] && faceVertexUvs[ 0 ].length > 0;\n\t\tvar hasFaceVertexUv2 = faceVertexUvs[ 1 ] && faceVertexUvs[ 1 ].length > 0;\n\n\t\t// morphs\n\n\t\tvar morphTargets = geometry.morphTargets;\n\t\tvar morphTargetsLength = morphTargets.length;\n\n\t\tvar morphTargetsPosition;\n\n\t\tif ( morphTargetsLength > 0 ) {\n\n\t\t\tmorphTargetsPosition = [];\n\n\t\t\tfor ( var i = 0; i < morphTargetsLength; i ++ ) {\n\n\t\t\t\tmorphTargetsPosition[ i ] = [];\n\n\t\t\t}\n\n\t\t\tthis.morphTargets.position = morphTargetsPosition;\n\n\t\t}\n\n\t\tvar morphNormals = geometry.morphNormals;\n\t\tvar morphNormalsLength = morphNormals.length;\n\n\t\tvar morphTargetsNormal;\n\n\t\tif ( morphNormalsLength > 0 ) {\n\n\t\t\tmorphTargetsNormal = [];\n\n\t\t\tfor ( var i = 0; i < morphNormalsLength; i ++ ) {\n\n\t\t\t\tmorphTargetsNormal[ i ] = [];\n\n\t\t\t}\n\n\t\t\tthis.morphTargets.normal = morphTargetsNormal;\n\n\t\t}\n\n\t\t// skins\n\n\t\tvar skinIndices = geometry.skinIndices;\n\t\tvar skinWeights = geometry.skinWeights;\n\n\t\tvar hasSkinIndices = skinIndices.length === vertices.length;\n\t\tvar hasSkinWeights = skinWeights.length === vertices.length;\n\n\t\t//\n\n\t\tfor ( var i = 0; i < faces.length; i ++ ) {\n\n\t\t\tvar face = faces[ i ];\n\n\t\t\tthis.vertices.push( vertices[ face.a ], vertices[ face.b ], vertices[ face.c ] );\n\n\t\t\tvar vertexNormals = face.vertexNormals;\n\n\t\t\tif ( vertexNormals.length === 3 ) {\n\n\t\t\t\tthis.normals.push( vertexNormals[ 0 ], vertexNormals[ 1 ], vertexNormals[ 2 ] );\n\n\t\t\t} else {\n\n\t\t\t\tvar normal = face.normal;\n\n\t\t\t\tthis.normals.push( normal, normal, normal );\n\n\t\t\t}\n\n\t\t\tvar vertexColors = face.vertexColors;\n\n\t\t\tif ( vertexColors.length === 3 ) {\n\n\t\t\t\tthis.colors.push( vertexColors[ 0 ], vertexColors[ 1 ], vertexColors[ 2 ] );\n\n\t\t\t} else {\n\n\t\t\t\tvar color = face.color;\n\n\t\t\t\tthis.colors.push( color, color, color );\n\n\t\t\t}\n\n\t\t\tif ( hasFaceVertexUv === true ) {\n\n\t\t\t\tvar vertexUvs = faceVertexUvs[ 0 ][ i ];\n\n\t\t\t\tif ( vertexUvs !== undefined ) {\n\n\t\t\t\t\tthis.uvs.push( vertexUvs[ 0 ], vertexUvs[ 1 ], vertexUvs[ 2 ] );\n\n\t\t\t\t} else {\n\n\t\t\t\t\tconsole.warn( 'THREE.DirectGeometry.fromGeometry(): Undefined vertexUv ', i );\n\n\t\t\t\t\tthis.uvs.push( new Vector2(), new Vector2(), new Vector2() );\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t\tif ( hasFaceVertexUv2 === true ) {\n\n\t\t\t\tvar vertexUvs = faceVertexUvs[ 1 ][ i ];\n\n\t\t\t\tif ( vertexUvs !== undefined ) {\n\n\t\t\t\t\tthis.uvs2.push( vertexUvs[ 0 ], vertexUvs[ 1 ], vertexUvs[ 2 ] );\n\n\t\t\t\t} else {\n\n\t\t\t\t\tconsole.warn( 'THREE.DirectGeometry.fromGeometry(): Undefined vertexUv2 ', i );\n\n\t\t\t\t\tthis.uvs2.push( new Vector2(), new Vector2(), new Vector2() );\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t\t// morphs\n\n\t\t\tfor ( var j = 0; j < morphTargetsLength; j ++ ) {\n\n\t\t\t\tvar morphTarget = morphTargets[ j ].vertices;\n\n\t\t\t\tmorphTargetsPosition[ j ].push( morphTarget[ face.a ], morphTarget[ face.b ], morphTarget[ face.c ] );\n\n\t\t\t}\n\n\t\t\tfor ( var j = 0; j < morphNormalsLength; j ++ ) {\n\n\t\t\t\tvar morphNormal = morphNormals[ j ].vertexNormals[ i ];\n\n\t\t\t\tmorphTargetsNormal[ j ].push( morphNormal.a, morphNormal.b, morphNormal.c );\n\n\t\t\t}\n\n\t\t\t// skins\n\n\t\t\tif ( hasSkinIndices ) {\n\n\t\t\t\tthis.skinIndices.push( skinIndices[ face.a ], skinIndices[ face.b ], skinIndices[ face.c ] );\n\n\t\t\t}\n\n\t\t\tif ( hasSkinWeights ) {\n\n\t\t\t\tthis.skinWeights.push( skinWeights[ face.a ], skinWeights[ face.b ], skinWeights[ face.c ] );\n\n\t\t\t}\n\n\t\t}\n\n\t\tthis.computeGroups( geometry );\n\n\t\tthis.verticesNeedUpdate = geometry.verticesNeedUpdate;\n\t\tthis.normalsNeedUpdate = geometry.normalsNeedUpdate;\n\t\tthis.colorsNeedUpdate = geometry.colorsNeedUpdate;\n\t\tthis.uvsNeedUpdate = geometry.uvsNeedUpdate;\n\t\tthis.groupsNeedUpdate = geometry.groupsNeedUpdate;\n\n\t\treturn this;\n\n\t},\n\n\tdispose: function () {\n\n\t\tthis.dispatchEvent( { type: 'dispose' } );\n\n\t}\n\n} );\n\n\nexport { DirectGeometry };\n","import { Vector3 } from '../math/Vector3';\nimport { Box3 } from '../math/Box3';\nimport { EventDispatcher } from './EventDispatcher';\nimport { BufferAttribute, Float32Attribute } from './BufferAttribute';\nimport { Sphere } from '../math/Sphere';\nimport { DirectGeometry } from './DirectGeometry';\nimport { Object3D } from './Object3D';\nimport { Matrix4 } from '../math/Matrix4';\nimport { Matrix3 } from '../math/Matrix3';\nimport { _Math } from '../math/Math';\nimport { GeometryIdCount } from './Geometry';\n\n/**\n * @author alteredq / http://alteredqualia.com/\n * @author mrdoob / http://mrdoob.com/\n */\n\nfunction BufferGeometry() {\n\n\tObject.defineProperty( this, 'id', { value: GeometryIdCount() } );\n\n\tthis.uuid = _Math.generateUUID();\n\n\tthis.name = '';\n\tthis.type = 'BufferGeometry';\n\n\tthis.index = null;\n\tthis.attributes = {};\n\n\tthis.morphAttributes = {};\n\n\tthis.groups = [];\n\n\tthis.boundingBox = null;\n\tthis.boundingSphere = null;\n\n\tthis.drawRange = { start: 0, count: Infinity };\n\n}\n\nObject.assign( BufferGeometry.prototype, EventDispatcher.prototype, {\n\n\tisBufferGeometry: true,\n\n\tgetIndex: function () {\n\n\t\treturn this.index;\n\n\t},\n\n\tsetIndex: function ( index ) {\n\n\t\tthis.index = index;\n\n\t},\n\n\taddAttribute: function ( name, attribute ) {\n\n\t\tif ( (attribute && attribute.isBufferAttribute) === false && (attribute && attribute.isInterleavedBufferAttribute) === false ) {\n\n\t\t\tconsole.warn( 'THREE.BufferGeometry: .addAttribute() now expects ( name, attribute ).' );\n\n\t\t\tthis.addAttribute( name, new BufferAttribute( arguments[ 1 ], arguments[ 2 ] ) );\n\n\t\t\treturn;\n\n\t\t}\n\n\t\tif ( name === 'index' ) {\n\n\t\t\tconsole.warn( 'THREE.BufferGeometry.addAttribute: Use .setIndex() for index attribute.' );\n\t\t\tthis.setIndex( attribute );\n\n\t\t\treturn;\n\n\t\t}\n\n\t\tthis.attributes[ name ] = attribute;\n\n\t\treturn this;\n\n\t},\n\n\tgetAttribute: function ( name ) {\n\n\t\treturn this.attributes[ name ];\n\n\t},\n\n\tremoveAttribute: function ( name ) {\n\n\t\tdelete this.attributes[ name ];\n\n\t\treturn this;\n\n\t},\n\n\taddGroup: function ( start, count, materialIndex ) {\n\n\t\tthis.groups.push( {\n\n\t\t\tstart: start,\n\t\t\tcount: count,\n\t\t\tmaterialIndex: materialIndex !== undefined ? materialIndex : 0\n\n\t\t} );\n\n\t},\n\n\tclearGroups: function () {\n\n\t\tthis.groups = [];\n\n\t},\n\n\tsetDrawRange: function ( start, count ) {\n\n\t\tthis.drawRange.start = start;\n\t\tthis.drawRange.count = count;\n\n\t},\n\n\tapplyMatrix: function ( matrix ) {\n\n\t\tvar position = this.attributes.position;\n\n\t\tif ( position !== undefined ) {\n\n\t\t\tmatrix.applyToVector3Array( position.array );\n\t\t\tposition.needsUpdate = true;\n\n\t\t}\n\n\t\tvar normal = this.attributes.normal;\n\n\t\tif ( normal !== undefined ) {\n\n\t\t\tvar normalMatrix = new Matrix3().getNormalMatrix( matrix );\n\n\t\t\tnormalMatrix.applyToVector3Array( normal.array );\n\t\t\tnormal.needsUpdate = true;\n\n\t\t}\n\n\t\tif ( this.boundingBox !== null ) {\n\n\t\t\tthis.computeBoundingBox();\n\n\t\t}\n\n\t\tif ( this.boundingSphere !== null ) {\n\n\t\t\tthis.computeBoundingSphere();\n\n\t\t}\n\n\t\treturn this;\n\n\t},\n\n\trotateX: function () {\n\n\t\t// rotate geometry around world x-axis\n\n\t\tvar m1;\n\n\t\treturn function rotateX( angle ) {\n\n\t\t\tif ( m1 === undefined ) m1 = new Matrix4();\n\n\t\t\tm1.makeRotationX( angle );\n\n\t\t\tthis.applyMatrix( m1 );\n\n\t\t\treturn this;\n\n\t\t};\n\n\t}(),\n\n\trotateY: function () {\n\n\t\t// rotate geometry around world y-axis\n\n\t\tvar m1;\n\n\t\treturn function rotateY( angle ) {\n\n\t\t\tif ( m1 === undefined ) m1 = new Matrix4();\n\n\t\t\tm1.makeRotationY( angle );\n\n\t\t\tthis.applyMatrix( m1 );\n\n\t\t\treturn this;\n\n\t\t};\n\n\t}(),\n\n\trotateZ: function () {\n\n\t\t// rotate geometry around world z-axis\n\n\t\tvar m1;\n\n\t\treturn function rotateZ( angle ) {\n\n\t\t\tif ( m1 === undefined ) m1 = new Matrix4();\n\n\t\t\tm1.makeRotationZ( angle );\n\n\t\t\tthis.applyMatrix( m1 );\n\n\t\t\treturn this;\n\n\t\t};\n\n\t}(),\n\n\ttranslate: function () {\n\n\t\t// translate geometry\n\n\t\tvar m1;\n\n\t\treturn function translate( x, y, z ) {\n\n\t\t\tif ( m1 === undefined ) m1 = new Matrix4();\n\n\t\t\tm1.makeTranslation( x, y, z );\n\n\t\t\tthis.applyMatrix( m1 );\n\n\t\t\treturn this;\n\n\t\t};\n\n\t}(),\n\n\tscale: function () {\n\n\t\t// scale geometry\n\n\t\tvar m1;\n\n\t\treturn function scale( x, y, z ) {\n\n\t\t\tif ( m1 === undefined ) m1 = new Matrix4();\n\n\t\t\tm1.makeScale( x, y, z );\n\n\t\t\tthis.applyMatrix( m1 );\n\n\t\t\treturn this;\n\n\t\t};\n\n\t}(),\n\n\tlookAt: function () {\n\n\t\tvar obj;\n\n\t\treturn function lookAt( vector ) {\n\n\t\t\tif ( obj === undefined ) obj = new Object3D();\n\n\t\t\tobj.lookAt( vector );\n\n\t\t\tobj.updateMatrix();\n\n\t\t\tthis.applyMatrix( obj.matrix );\n\n\t\t};\n\n\t}(),\n\n\tcenter: function () {\n\n\t\tthis.computeBoundingBox();\n\n\t\tvar offset = this.boundingBox.getCenter().negate();\n\n\t\tthis.translate( offset.x, offset.y, offset.z );\n\n\t\treturn offset;\n\n\t},\n\n\tsetFromObject: function ( object ) {\n\n\t\t// console.log( 'THREE.BufferGeometry.setFromObject(). Converting', object, this );\n\n\t\tvar geometry = object.geometry;\n\n\t\tif ( (object && object.isPoints) || (object && object.isLine) ) {\n\n\t\t\tvar positions = new Float32Attribute( geometry.vertices.length * 3, 3 );\n\t\t\tvar colors = new Float32Attribute( geometry.colors.length * 3, 3 );\n\n\t\t\tthis.addAttribute( 'position', positions.copyVector3sArray( geometry.vertices ) );\n\t\t\tthis.addAttribute( 'color', colors.copyColorsArray( geometry.colors ) );\n\n\t\t\tif ( geometry.lineDistances && geometry.lineDistances.length === geometry.vertices.length ) {\n\n\t\t\t\tvar lineDistances = new Float32Attribute( geometry.lineDistances.length, 1 );\n\n\t\t\t\tthis.addAttribute( 'lineDistance', lineDistances.copyArray( geometry.lineDistances ) );\n\n\t\t\t}\n\n\t\t\tif ( geometry.boundingSphere !== null ) {\n\n\t\t\t\tthis.boundingSphere = geometry.boundingSphere.clone();\n\n\t\t\t}\n\n\t\t\tif ( geometry.boundingBox !== null ) {\n\n\t\t\t\tthis.boundingBox = geometry.boundingBox.clone();\n\n\t\t\t}\n\n\t\t} else if ( (object && object.isMesh) ) {\n\n\t\t\tif ( (geometry && geometry.isGeometry) ) {\n\n\t\t\t\tthis.fromGeometry( geometry );\n\n\t\t\t}\n\n\t\t}\n\n\t\treturn this;\n\n\t},\n\n\tupdateFromObject: function ( object ) {\n\n\t\tvar geometry = object.geometry;\n\n\t\tif ( (object && object.isMesh) ) {\n\n\t\t\tvar direct = geometry.__directGeometry;\n\n\t\t\tif ( geometry.elementsNeedUpdate === true ) {\n\n\t\t\t\tdirect = undefined;\n\t\t\t\tgeometry.elementsNeedUpdate = false;\n\n\t\t\t}\n\n\t\t\tif ( direct === undefined ) {\n\n\t\t\t\treturn this.fromGeometry( geometry );\n\n\t\t\t}\n\n\t\t\tdirect.verticesNeedUpdate = geometry.verticesNeedUpdate;\n\t\t\tdirect.normalsNeedUpdate = geometry.normalsNeedUpdate;\n\t\t\tdirect.colorsNeedUpdate = geometry.colorsNeedUpdate;\n\t\t\tdirect.uvsNeedUpdate = geometry.uvsNeedUpdate;\n\t\t\tdirect.groupsNeedUpdate = geometry.groupsNeedUpdate;\n\n\t\t\tgeometry.verticesNeedUpdate = false;\n\t\t\tgeometry.normalsNeedUpdate = false;\n\t\t\tgeometry.colorsNeedUpdate = false;\n\t\t\tgeometry.uvsNeedUpdate = false;\n\t\t\tgeometry.groupsNeedUpdate = false;\n\n\t\t\tgeometry = direct;\n\n\t\t}\n\n\t\tvar attribute;\n\n\t\tif ( geometry.verticesNeedUpdate === true ) {\n\n\t\t\tattribute = this.attributes.position;\n\n\t\t\tif ( attribute !== undefined ) {\n\n\t\t\t\tattribute.copyVector3sArray( geometry.vertices );\n\t\t\t\tattribute.needsUpdate = true;\n\n\t\t\t}\n\n\t\t\tgeometry.verticesNeedUpdate = false;\n\n\t\t}\n\n\t\tif ( geometry.normalsNeedUpdate === true ) {\n\n\t\t\tattribute = this.attributes.normal;\n\n\t\t\tif ( attribute !== undefined ) {\n\n\t\t\t\tattribute.copyVector3sArray( geometry.normals );\n\t\t\t\tattribute.needsUpdate = true;\n\n\t\t\t}\n\n\t\t\tgeometry.normalsNeedUpdate = false;\n\n\t\t}\n\n\t\tif ( geometry.colorsNeedUpdate === true ) {\n\n\t\t\tattribute = this.attributes.color;\n\n\t\t\tif ( attribute !== undefined ) {\n\n\t\t\t\tattribute.copyColorsArray( geometry.colors );\n\t\t\t\tattribute.needsUpdate = true;\n\n\t\t\t}\n\n\t\t\tgeometry.colorsNeedUpdate = false;\n\n\t\t}\n\n\t\tif ( geometry.uvsNeedUpdate ) {\n\n\t\t\tattribute = this.attributes.uv;\n\n\t\t\tif ( attribute !== undefined ) {\n\n\t\t\t\tattribute.copyVector2sArray( geometry.uvs );\n\t\t\t\tattribute.needsUpdate = true;\n\n\t\t\t}\n\n\t\t\tgeometry.uvsNeedUpdate = false;\n\n\t\t}\n\n\t\tif ( geometry.lineDistancesNeedUpdate ) {\n\n\t\t\tattribute = this.attributes.lineDistance;\n\n\t\t\tif ( attribute !== undefined ) {\n\n\t\t\t\tattribute.copyArray( geometry.lineDistances );\n\t\t\t\tattribute.needsUpdate = true;\n\n\t\t\t}\n\n\t\t\tgeometry.lineDistancesNeedUpdate = false;\n\n\t\t}\n\n\t\tif ( geometry.groupsNeedUpdate ) {\n\n\t\t\tgeometry.computeGroups( object.geometry );\n\t\t\tthis.groups = geometry.groups;\n\n\t\t\tgeometry.groupsNeedUpdate = false;\n\n\t\t}\n\n\t\treturn this;\n\n\t},\n\n\tfromGeometry: function ( geometry ) {\n\n\t\tgeometry.__directGeometry = new DirectGeometry().fromGeometry( geometry );\n\n\t\treturn this.fromDirectGeometry( geometry.__directGeometry );\n\n\t},\n\n\tfromDirectGeometry: function ( geometry ) {\n\n\t\tvar positions = new Float32Array( geometry.vertices.length * 3 );\n\t\tthis.addAttribute( 'position', new BufferAttribute( positions, 3 ).copyVector3sArray( geometry.vertices ) );\n\n\t\tif ( geometry.normals.length > 0 ) {\n\n\t\t\tvar normals = new Float32Array( geometry.normals.length * 3 );\n\t\t\tthis.addAttribute( 'normal', new BufferAttribute( normals, 3 ).copyVector3sArray( geometry.normals ) );\n\n\t\t}\n\n\t\tif ( geometry.colors.length > 0 ) {\n\n\t\t\tvar colors = new Float32Array( geometry.colors.length * 3 );\n\t\t\tthis.addAttribute( 'color', new BufferAttribute( colors, 3 ).copyColorsArray( geometry.colors ) );\n\n\t\t}\n\n\t\tif ( geometry.uvs.length > 0 ) {\n\n\t\t\tvar uvs = new Float32Array( geometry.uvs.length * 2 );\n\t\t\tthis.addAttribute( 'uv', new BufferAttribute( uvs, 2 ).copyVector2sArray( geometry.uvs ) );\n\n\t\t}\n\n\t\tif ( geometry.uvs2.length > 0 ) {\n\n\t\t\tvar uvs2 = new Float32Array( geometry.uvs2.length * 2 );\n\t\t\tthis.addAttribute( 'uv2', new BufferAttribute( uvs2, 2 ).copyVector2sArray( geometry.uvs2 ) );\n\n\t\t}\n\n\t\tif ( geometry.indices.length > 0 ) {\n\n\t\t\tvar TypeArray = geometry.vertices.length > 65535 ? Uint32Array : Uint16Array;\n\t\t\tvar indices = new TypeArray( geometry.indices.length * 3 );\n\t\t\tthis.setIndex( new BufferAttribute( indices, 1 ).copyIndicesArray( geometry.indices ) );\n\n\t\t}\n\n\t\t// groups\n\n\t\tthis.groups = geometry.groups;\n\n\t\t// morphs\n\n\t\tfor ( var name in geometry.morphTargets ) {\n\n\t\t\tvar array = [];\n\t\t\tvar morphTargets = geometry.morphTargets[ name ];\n\n\t\t\tfor ( var i = 0, l = morphTargets.length; i < l; i ++ ) {\n\n\t\t\t\tvar morphTarget = morphTargets[ i ];\n\n\t\t\t\tvar attribute = new Float32Attribute( morphTarget.length * 3, 3 );\n\n\t\t\t\tarray.push( attribute.copyVector3sArray( morphTarget ) );\n\n\t\t\t}\n\n\t\t\tthis.morphAttributes[ name ] = array;\n\n\t\t}\n\n\t\t// skinning\n\n\t\tif ( geometry.skinIndices.length > 0 ) {\n\n\t\t\tvar skinIndices = new Float32Attribute( geometry.skinIndices.length * 4, 4 );\n\t\t\tthis.addAttribute( 'skinIndex', skinIndices.copyVector4sArray( geometry.skinIndices ) );\n\n\t\t}\n\n\t\tif ( geometry.skinWeights.length > 0 ) {\n\n\t\t\tvar skinWeights = new Float32Attribute( geometry.skinWeights.length * 4, 4 );\n\t\t\tthis.addAttribute( 'skinWeight', skinWeights.copyVector4sArray( geometry.skinWeights ) );\n\n\t\t}\n\n\t\t//\n\n\t\tif ( geometry.boundingSphere !== null ) {\n\n\t\t\tthis.boundingSphere = geometry.boundingSphere.clone();\n\n\t\t}\n\n\t\tif ( geometry.boundingBox !== null ) {\n\n\t\t\tthis.boundingBox = geometry.boundingBox.clone();\n\n\t\t}\n\n\t\treturn this;\n\n\t},\n\n\tcomputeBoundingBox: function () {\n\n\t\tif ( this.boundingBox === null ) {\n\n\t\t\tthis.boundingBox = new Box3();\n\n\t\t}\n\n\t\tvar positions = this.attributes.position.array;\n\n\t\tif ( positions !== undefined ) {\n\n\t\t\tthis.boundingBox.setFromArray( positions );\n\n\t\t} else {\n\n\t\t\tthis.boundingBox.makeEmpty();\n\n\t\t}\n\n\t\tif ( isNaN( this.boundingBox.min.x ) || isNaN( this.boundingBox.min.y ) || isNaN( this.boundingBox.min.z ) ) {\n\n\t\t\tconsole.error( 'THREE.BufferGeometry.computeBoundingBox: Computed min/max have NaN values. The \"position\" attribute is likely to have NaN values.', this );\n\n\t\t}\n\n\t},\n\n\tcomputeBoundingSphere: function () {\n\n\t\tvar box = new Box3();\n\t\tvar vector = new Vector3();\n\n\t\treturn function computeBoundingSphere() {\n\n\t\t\tif ( this.boundingSphere === null ) {\n\n\t\t\t\tthis.boundingSphere = new Sphere();\n\n\t\t\t}\n\n\t\t\tvar positions = this.attributes.position;\n\n\t\t\tif ( positions ) {\n\n\t\t\t\tvar array = positions.array;\n\t\t\t\tvar center = this.boundingSphere.center;\n\n\t\t\t\tbox.setFromArray( array );\n\t\t\t\tbox.getCenter( center );\n\n\t\t\t\t// hoping to find a boundingSphere with a radius smaller than the\n\t\t\t\t// boundingSphere of the boundingBox: sqrt(3) smaller in the best case\n\n\t\t\t\tvar maxRadiusSq = 0;\n\n\t\t\t\tfor ( var i = 0, il = array.length; i < il; i += 3 ) {\n\n\t\t\t\t\tvector.fromArray( array, i );\n\t\t\t\t\tmaxRadiusSq = Math.max( maxRadiusSq, center.distanceToSquared( vector ) );\n\n\t\t\t\t}\n\n\t\t\t\tthis.boundingSphere.radius = Math.sqrt( maxRadiusSq );\n\n\t\t\t\tif ( isNaN( this.boundingSphere.radius ) ) {\n\n\t\t\t\t\tconsole.error( 'THREE.BufferGeometry.computeBoundingSphere(): Computed radius is NaN. The \"position\" attribute is likely to have NaN values.', this );\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t};\n\n\t}(),\n\n\tcomputeFaceNormals: function () {\n\n\t\t// backwards compatibility\n\n\t},\n\n\tcomputeVertexNormals: function () {\n\n\t\tvar index = this.index;\n\t\tvar attributes = this.attributes;\n\t\tvar groups = this.groups;\n\n\t\tif ( attributes.position ) {\n\n\t\t\tvar positions = attributes.position.array;\n\n\t\t\tif ( attributes.normal === undefined ) {\n\n\t\t\t\tthis.addAttribute( 'normal', new BufferAttribute( new Float32Array( positions.length ), 3 ) );\n\n\t\t\t} else {\n\n\t\t\t\t// reset existing normals to zero\n\n\t\t\t\tvar array = attributes.normal.array;\n\n\t\t\t\tfor ( var i = 0, il = array.length; i < il; i ++ ) {\n\n\t\t\t\t\tarray[ i ] = 0;\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t\tvar normals = attributes.normal.array;\n\n\t\t\tvar vA, vB, vC,\n\n\t\t\tpA = new Vector3(),\n\t\t\tpB = new Vector3(),\n\t\t\tpC = new Vector3(),\n\n\t\t\tcb = new Vector3(),\n\t\t\tab = new Vector3();\n\n\t\t\t// indexed elements\n\n\t\t\tif ( index ) {\n\n\t\t\t\tvar indices = index.array;\n\n\t\t\t\tif ( groups.length === 0 ) {\n\n\t\t\t\t\tthis.addGroup( 0, indices.length );\n\n\t\t\t\t}\n\n\t\t\t\tfor ( var j = 0, jl = groups.length; j < jl; ++ j ) {\n\n\t\t\t\t\tvar group = groups[ j ];\n\n\t\t\t\t\tvar start = group.start;\n\t\t\t\t\tvar count = group.count;\n\n\t\t\t\t\tfor ( var i = start, il = start + count; i < il; i += 3 ) {\n\n\t\t\t\t\t\tvA = indices[ i + 0 ] * 3;\n\t\t\t\t\t\tvB = indices[ i + 1 ] * 3;\n\t\t\t\t\t\tvC = indices[ i + 2 ] * 3;\n\n\t\t\t\t\t\tpA.fromArray( positions, vA );\n\t\t\t\t\t\tpB.fromArray( positions, vB );\n\t\t\t\t\t\tpC.fromArray( positions, vC );\n\n\t\t\t\t\t\tcb.subVectors( pC, pB );\n\t\t\t\t\t\tab.subVectors( pA, pB );\n\t\t\t\t\t\tcb.cross( ab );\n\n\t\t\t\t\t\tnormals[ vA ] += cb.x;\n\t\t\t\t\t\tnormals[ vA + 1 ] += cb.y;\n\t\t\t\t\t\tnormals[ vA + 2 ] += cb.z;\n\n\t\t\t\t\t\tnormals[ vB ] += cb.x;\n\t\t\t\t\t\tnormals[ vB + 1 ] += cb.y;\n\t\t\t\t\t\tnormals[ vB + 2 ] += cb.z;\n\n\t\t\t\t\t\tnormals[ vC ] += cb.x;\n\t\t\t\t\t\tnormals[ vC + 1 ] += cb.y;\n\t\t\t\t\t\tnormals[ vC + 2 ] += cb.z;\n\n\t\t\t\t\t}\n\n\t\t\t\t}\n\n\t\t\t} else {\n\n\t\t\t\t// non-indexed elements (unconnected triangle soup)\n\n\t\t\t\tfor ( var i = 0, il = positions.length; i < il; i += 9 ) {\n\n\t\t\t\t\tpA.fromArray( positions, i );\n\t\t\t\t\tpB.fromArray( positions, i + 3 );\n\t\t\t\t\tpC.fromArray( positions, i + 6 );\n\n\t\t\t\t\tcb.subVectors( pC, pB );\n\t\t\t\t\tab.subVectors( pA, pB );\n\t\t\t\t\tcb.cross( ab );\n\n\t\t\t\t\tnormals[ i ] = cb.x;\n\t\t\t\t\tnormals[ i + 1 ] = cb.y;\n\t\t\t\t\tnormals[ i + 2 ] = cb.z;\n\n\t\t\t\t\tnormals[ i + 3 ] = cb.x;\n\t\t\t\t\tnormals[ i + 4 ] = cb.y;\n\t\t\t\t\tnormals[ i + 5 ] = cb.z;\n\n\t\t\t\t\tnormals[ i + 6 ] = cb.x;\n\t\t\t\t\tnormals[ i + 7 ] = cb.y;\n\t\t\t\t\tnormals[ i + 8 ] = cb.z;\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t\tthis.normalizeNormals();\n\n\t\t\tattributes.normal.needsUpdate = true;\n\n\t\t}\n\n\t},\n\n\tmerge: function ( geometry, offset ) {\n\n\t\tif ( (geometry && geometry.isBufferGeometry) === false ) {\n\n\t\t\tconsole.error( 'THREE.BufferGeometry.merge(): geometry not an instance of THREE.BufferGeometry.', geometry );\n\t\t\treturn;\n\n\t\t}\n\n\t\tif ( offset === undefined ) offset = 0;\n\n\t\tvar attributes = this.attributes;\n\n\t\tfor ( var key in attributes ) {\n\n\t\t\tif ( geometry.attributes[ key ] === undefined ) continue;\n\n\t\t\tvar attribute1 = attributes[ key ];\n\t\t\tvar attributeArray1 = attribute1.array;\n\n\t\t\tvar attribute2 = geometry.attributes[ key ];\n\t\t\tvar attributeArray2 = attribute2.array;\n\n\t\t\tvar attributeSize = attribute2.itemSize;\n\n\t\t\tfor ( var i = 0, j = attributeSize * offset; i < attributeArray2.length; i ++, j ++ ) {\n\n\t\t\t\tattributeArray1[ j ] = attributeArray2[ i ];\n\n\t\t\t}\n\n\t\t}\n\n\t\treturn this;\n\n\t},\n\n\tnormalizeNormals: function () {\n\n\t\tvar normals = this.attributes.normal.array;\n\n\t\tvar x, y, z, n;\n\n\t\tfor ( var i = 0, il = normals.length; i < il; i += 3 ) {\n\n\t\t\tx = normals[ i ];\n\t\t\ty = normals[ i + 1 ];\n\t\t\tz = normals[ i + 2 ];\n\n\t\t\tn = 1.0 / Math.sqrt( x * x + y * y + z * z );\n\n\t\t\tnormals[ i ] *= n;\n\t\t\tnormals[ i + 1 ] *= n;\n\t\t\tnormals[ i + 2 ] *= n;\n\n\t\t}\n\n\t},\n\n\ttoNonIndexed: function () {\n\n\t\tif ( this.index === null ) {\n\n\t\t\tconsole.warn( 'THREE.BufferGeometry.toNonIndexed(): Geometry is already non-indexed.' );\n\t\t\treturn this;\n\n\t\t}\n\n\t\tvar geometry2 = new BufferGeometry();\n\n\t\tvar indices = this.index.array;\n\t\tvar attributes = this.attributes;\n\n\t\tfor ( var name in attributes ) {\n\n\t\t\tvar attribute = attributes[ name ];\n\n\t\t\tvar array = attribute.array;\n\t\t\tvar itemSize = attribute.itemSize;\n\n\t\t\tvar array2 = new array.constructor( indices.length * itemSize );\n\n\t\t\tvar index = 0, index2 = 0;\n\n\t\t\tfor ( var i = 0, l = indices.length; i < l; i ++ ) {\n\n\t\t\t\tindex = indices[ i ] * itemSize;\n\n\t\t\t\tfor ( var j = 0; j < itemSize; j ++ ) {\n\n\t\t\t\t\tarray2[ index2 ++ ] = array[ index ++ ];\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t\tgeometry2.addAttribute( name, new BufferAttribute( array2, itemSize ) );\n\n\t\t}\n\n\t\treturn geometry2;\n\n\t},\n\n\ttoJSON: function () {\n\n\t\tvar data = {\n\t\t\tmetadata: {\n\t\t\t\tversion: 4.4,\n\t\t\t\ttype: 'BufferGeometry',\n\t\t\t\tgenerator: 'BufferGeometry.toJSON'\n\t\t\t}\n\t\t};\n\n\t\t// standard BufferGeometry serialization\n\n\t\tdata.uuid = this.uuid;\n\t\tdata.type = this.type;\n\t\tif ( this.name !== '' ) data.name = this.name;\n\n\t\tif ( this.parameters !== undefined ) {\n\n\t\t\tvar parameters = this.parameters;\n\n\t\t\tfor ( var key in parameters ) {\n\n\t\t\t\tif ( parameters[ key ] !== undefined ) data[ key ] = parameters[ key ];\n\n\t\t\t}\n\n\t\t\treturn data;\n\n\t\t}\n\n\t\tdata.data = { attributes: {} };\n\n\t\tvar index = this.index;\n\n\t\tif ( index !== null ) {\n\n\t\t\tvar array = Array.prototype.slice.call( index.array );\n\n\t\t\tdata.data.index = {\n\t\t\t\ttype: index.array.constructor.name,\n\t\t\t\tarray: array\n\t\t\t};\n\n\t\t}\n\n\t\tvar attributes = this.attributes;\n\n\t\tfor ( var key in attributes ) {\n\n\t\t\tvar attribute = attributes[ key ];\n\n\t\t\tvar array = Array.prototype.slice.call( attribute.array );\n\n\t\t\tdata.data.attributes[ key ] = {\n\t\t\t\titemSize: attribute.itemSize,\n\t\t\t\ttype: attribute.array.constructor.name,\n\t\t\t\tarray: array,\n\t\t\t\tnormalized: attribute.normalized\n\t\t\t};\n\n\t\t}\n\n\t\tvar groups = this.groups;\n\n\t\tif ( groups.length > 0 ) {\n\n\t\t\tdata.data.groups = JSON.parse( JSON.stringify( groups ) );\n\n\t\t}\n\n\t\tvar boundingSphere = this.boundingSphere;\n\n\t\tif ( boundingSphere !== null ) {\n\n\t\t\tdata.data.boundingSphere = {\n\t\t\t\tcenter: boundingSphere.center.toArray(),\n\t\t\t\tradius: boundingSphere.radius\n\t\t\t};\n\n\t\t}\n\n\t\treturn data;\n\n\t},\n\n\tclone: function () {\n\n\t\t/*\n\t\t// Handle primitives\n\n\t\tvar parameters = this.parameters;\n\n\t\tif ( parameters !== undefined ) {\n\n\t\t\tvar values = [];\n\n\t\t\tfor ( var key in parameters ) {\n\n\t\t\t\tvalues.push( parameters[ key ] );\n\n\t\t\t}\n\n\t\t\tvar geometry = Object.create( this.constructor.prototype );\n\t\t\tthis.constructor.apply( geometry, values );\n\t\t\treturn geometry;\n\n\t\t}\n\n\t\treturn new this.constructor().copy( this );\n\t\t*/\n\n\t\treturn new BufferGeometry().copy( this );\n\n\t},\n\n\tcopy: function ( source ) {\n\n\t\tvar index = source.index;\n\n\t\tif ( index !== null ) {\n\n\t\t\tthis.setIndex( index.clone() );\n\n\t\t}\n\n\t\tvar attributes = source.attributes;\n\n\t\tfor ( var name in attributes ) {\n\n\t\t\tvar attribute = attributes[ name ];\n\t\t\tthis.addAttribute( name, attribute.clone() );\n\n\t\t}\n\n\t\tvar groups = source.groups;\n\n\t\tfor ( var i = 0, l = groups.length; i < l; i ++ ) {\n\n\t\t\tvar group = groups[ i ];\n\t\t\tthis.addGroup( group.start, group.count, group.materialIndex );\n\n\t\t}\n\n\t\treturn this;\n\n\t},\n\n\tdispose: function () {\n\n\t\tthis.dispatchEvent( { type: 'dispose' } );\n\n\t}\n\n} );\n\nBufferGeometry.MaxIndex = 65535;\n\n\nexport { BufferGeometry };\n","import { Vector3 } from '../math/Vector3';\nimport { Vector2 } from '../math/Vector2';\nimport { Sphere } from '../math/Sphere';\nimport { Ray } from '../math/Ray';\nimport { Matrix4 } from '../math/Matrix4';\nimport { Object3D } from '../core/Object3D';\nimport { Triangle } from '../math/Triangle';\nimport { Face3 } from '../core/Face3';\nimport { DoubleSide, BackSide, TrianglesDrawMode } from '../constants';\nimport { MeshBasicMaterial } from '../materials/MeshBasicMaterial';\nimport { BufferGeometry } from '../core/BufferGeometry';\n\n/**\n * @author mrdoob / http://mrdoob.com/\n * @author alteredq / http://alteredqualia.com/\n * @author mikael emtinger / http://gomo.se/\n * @author jonobr1 / http://jonobr1.com/\n */\n\nfunction Mesh( geometry, material ) {\n\n\tObject3D.call( this );\n\n\tthis.type = 'Mesh';\n\n\tthis.geometry = geometry !== undefined ? geometry : new BufferGeometry();\n\tthis.material = material !== undefined ? material : new MeshBasicMaterial( { color: Math.random() * 0xffffff } );\n\n\tthis.drawMode = TrianglesDrawMode;\n\n\tthis.updateMorphTargets();\n\n}\n\nMesh.prototype = Object.assign( Object.create( Object3D.prototype ), {\n\n\tconstructor: Mesh,\n\n\tisMesh: true,\n\n\tsetDrawMode: function ( value ) {\n\n\t\tthis.drawMode = value;\n\n\t},\n\n\tcopy: function ( source ) {\n\n\t\tObject3D.prototype.copy.call( this, source );\n\n\t\tthis.drawMode = source.drawMode;\n\n\t\treturn this;\n\n\t},\n\n\tupdateMorphTargets: function () {\n\n\t\tvar morphTargets = this.geometry.morphTargets;\n\n\t\tif ( morphTargets !== undefined && morphTargets.length > 0 ) {\n\n\t\t\tthis.morphTargetInfluences = [];\n\t\t\tthis.morphTargetDictionary = {};\n\n\t\t\tfor ( var m = 0, ml = morphTargets.length; m < ml; m ++ ) {\n\n\t\t\t\tthis.morphTargetInfluences.push( 0 );\n\t\t\t\tthis.morphTargetDictionary[ morphTargets[ m ].name ] = m;\n\n\t\t\t}\n\n\t\t}\n\n\t},\n\n\traycast: ( function () {\n\n\t\tvar inverseMatrix = new Matrix4();\n\t\tvar ray = new Ray();\n\t\tvar sphere = new Sphere();\n\n\t\tvar vA = new Vector3();\n\t\tvar vB = new Vector3();\n\t\tvar vC = new Vector3();\n\n\t\tvar tempA = new Vector3();\n\t\tvar tempB = new Vector3();\n\t\tvar tempC = new Vector3();\n\n\t\tvar uvA = new Vector2();\n\t\tvar uvB = new Vector2();\n\t\tvar uvC = new Vector2();\n\n\t\tvar barycoord = new Vector3();\n\n\t\tvar intersectionPoint = new Vector3();\n\t\tvar intersectionPointWorld = new Vector3();\n\n\t\tfunction uvIntersection( point, p1, p2, p3, uv1, uv2, uv3 ) {\n\n\t\t\tTriangle.barycoordFromPoint( point, p1, p2, p3, barycoord );\n\n\t\t\tuv1.multiplyScalar( barycoord.x );\n\t\t\tuv2.multiplyScalar( barycoord.y );\n\t\t\tuv3.multiplyScalar( barycoord.z );\n\n\t\t\tuv1.add( uv2 ).add( uv3 );\n\n\t\t\treturn uv1.clone();\n\n\t\t}\n\n\t\tfunction checkIntersection( object, raycaster, ray, pA, pB, pC, point ) {\n\n\t\t\tvar intersect;\n\t\t\tvar material = object.material;\n\n\t\t\tif ( material.side === BackSide ) {\n\n\t\t\t\tintersect = ray.intersectTriangle( pC, pB, pA, true, point );\n\n\t\t\t} else {\n\n\t\t\t\tintersect = ray.intersectTriangle( pA, pB, pC, material.side !== DoubleSide, point );\n\n\t\t\t}\n\n\t\t\tif ( intersect === null ) return null;\n\n\t\t\tintersectionPointWorld.copy( point );\n\t\t\tintersectionPointWorld.applyMatrix4( object.matrixWorld );\n\n\t\t\tvar distance = raycaster.ray.origin.distanceTo( intersectionPointWorld );\n\n\t\t\tif ( distance < raycaster.near || distance > raycaster.far ) return null;\n\n\t\t\treturn {\n\t\t\t\tdistance: distance,\n\t\t\t\tpoint: intersectionPointWorld.clone(),\n\t\t\t\tobject: object\n\t\t\t};\n\n\t\t}\n\n\t\tfunction checkBufferGeometryIntersection( object, raycaster, ray, positions, uvs, a, b, c ) {\n\n\t\t\tvA.fromArray( positions, a * 3 );\n\t\t\tvB.fromArray( positions, b * 3 );\n\t\t\tvC.fromArray( positions, c * 3 );\n\n\t\t\tvar intersection = checkIntersection( object, raycaster, ray, vA, vB, vC, intersectionPoint );\n\n\t\t\tif ( intersection ) {\n\n\t\t\t\tif ( uvs ) {\n\n\t\t\t\t\tuvA.fromArray( uvs, a * 2 );\n\t\t\t\t\tuvB.fromArray( uvs, b * 2 );\n\t\t\t\t\tuvC.fromArray( uvs, c * 2 );\n\n\t\t\t\t\tintersection.uv = uvIntersection( intersectionPoint, vA, vB, vC, uvA, uvB, uvC );\n\n\t\t\t\t}\n\n\t\t\t\tintersection.face = new Face3( a, b, c, Triangle.normal( vA, vB, vC ) );\n\t\t\t\tintersection.faceIndex = a;\n\n\t\t\t}\n\n\t\t\treturn intersection;\n\n\t\t}\n\n\t\treturn function raycast( raycaster, intersects ) {\n\n\t\t\tvar geometry = this.geometry;\n\t\t\tvar material = this.material;\n\t\t\tvar matrixWorld = this.matrixWorld;\n\n\t\t\tif ( material === undefined ) return;\n\n\t\t\t// Checking boundingSphere distance to ray\n\n\t\t\tif ( geometry.boundingSphere === null ) geometry.computeBoundingSphere();\n\n\t\t\tsphere.copy( geometry.boundingSphere );\n\t\t\tsphere.applyMatrix4( matrixWorld );\n\n\t\t\tif ( raycaster.ray.intersectsSphere( sphere ) === false ) return;\n\n\t\t\t//\n\n\t\t\tinverseMatrix.getInverse( matrixWorld );\n\t\t\tray.copy( raycaster.ray ).applyMatrix4( inverseMatrix );\n\n\t\t\t// Check boundingBox before continuing\n\n\t\t\tif ( geometry.boundingBox !== null ) {\n\n\t\t\t\tif ( ray.intersectsBox( geometry.boundingBox ) === false ) return;\n\n\t\t\t}\n\n\t\t\tvar uvs, intersection;\n\n\t\t\tif ( (geometry && geometry.isBufferGeometry) ) {\n\n\t\t\t\tvar a, b, c;\n\t\t\t\tvar index = geometry.index;\n\t\t\t\tvar attributes = geometry.attributes;\n\t\t\t\tvar positions = attributes.position.array;\n\n\t\t\t\tif ( attributes.uv !== undefined ) {\n\n\t\t\t\t\tuvs = attributes.uv.array;\n\n\t\t\t\t}\n\n\t\t\t\tif ( index !== null ) {\n\n\t\t\t\t\tvar indices = index.array;\n\n\t\t\t\t\tfor ( var i = 0, l = indices.length; i < l; i += 3 ) {\n\n\t\t\t\t\t\ta = indices[ i ];\n\t\t\t\t\t\tb = indices[ i + 1 ];\n\t\t\t\t\t\tc = indices[ i + 2 ];\n\n\t\t\t\t\t\tintersection = checkBufferGeometryIntersection( this, raycaster, ray, positions, uvs, a, b, c );\n\n\t\t\t\t\t\tif ( intersection ) {\n\n\t\t\t\t\t\t\tintersection.faceIndex = Math.floor( i / 3 ); // triangle number in indices buffer semantics\n\t\t\t\t\t\t\tintersects.push( intersection );\n\n\t\t\t\t\t\t}\n\n\t\t\t\t\t}\n\n\t\t\t\t} else {\n\n\n\t\t\t\t\tfor ( var i = 0, l = positions.length; i < l; i += 9 ) {\n\n\t\t\t\t\t\ta = i / 3;\n\t\t\t\t\t\tb = a + 1;\n\t\t\t\t\t\tc = a + 2;\n\n\t\t\t\t\t\tintersection = checkBufferGeometryIntersection( this, raycaster, ray, positions, uvs, a, b, c );\n\n\t\t\t\t\t\tif ( intersection ) {\n\n\t\t\t\t\t\t\tintersection.index = a; // triangle number in positions buffer semantics\n\t\t\t\t\t\t\tintersects.push( intersection );\n\n\t\t\t\t\t\t}\n\n\t\t\t\t\t}\n\n\t\t\t\t}\n\n\t\t\t} else if ( (geometry && geometry.isGeometry) ) {\n\n\t\t\t\tvar fvA, fvB, fvC;\n\t\t\t\tvar isFaceMaterial = (material && material.isMultiMaterial);\n\t\t\t\tvar materials = isFaceMaterial === true ? material.materials : null;\n\n\t\t\t\tvar vertices = geometry.vertices;\n\t\t\t\tvar faces = geometry.faces;\n\t\t\t\tvar faceVertexUvs = geometry.faceVertexUvs[ 0 ];\n\t\t\t\tif ( faceVertexUvs.length > 0 ) uvs = faceVertexUvs;\n\n\t\t\t\tfor ( var f = 0, fl = faces.length; f < fl; f ++ ) {\n\n\t\t\t\t\tvar face = faces[ f ];\n\t\t\t\t\tvar faceMaterial = isFaceMaterial === true ? materials[ face.materialIndex ] : material;\n\n\t\t\t\t\tif ( faceMaterial === undefined ) continue;\n\n\t\t\t\t\tfvA = vertices[ face.a ];\n\t\t\t\t\tfvB = vertices[ face.b ];\n\t\t\t\t\tfvC = vertices[ face.c ];\n\n\t\t\t\t\tif ( faceMaterial.morphTargets === true ) {\n\n\t\t\t\t\t\tvar morphTargets = geometry.morphTargets;\n\t\t\t\t\t\tvar morphInfluences = this.morphTargetInfluences;\n\n\t\t\t\t\t\tvA.set( 0, 0, 0 );\n\t\t\t\t\t\tvB.set( 0, 0, 0 );\n\t\t\t\t\t\tvC.set( 0, 0, 0 );\n\n\t\t\t\t\t\tfor ( var t = 0, tl = morphTargets.length; t < tl; t ++ ) {\n\n\t\t\t\t\t\t\tvar influence = morphInfluences[ t ];\n\n\t\t\t\t\t\t\tif ( influence === 0 ) continue;\n\n\t\t\t\t\t\t\tvar targets = morphTargets[ t ].vertices;\n\n\t\t\t\t\t\t\tvA.addScaledVector( tempA.subVectors( targets[ face.a ], fvA ), influence );\n\t\t\t\t\t\t\tvB.addScaledVector( tempB.subVectors( targets[ face.b ], fvB ), influence );\n\t\t\t\t\t\t\tvC.addScaledVector( tempC.subVectors( targets[ face.c ], fvC ), influence );\n\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\tvA.add( fvA );\n\t\t\t\t\t\tvB.add( fvB );\n\t\t\t\t\t\tvC.add( fvC );\n\n\t\t\t\t\t\tfvA = vA;\n\t\t\t\t\t\tfvB = vB;\n\t\t\t\t\t\tfvC = vC;\n\n\t\t\t\t\t}\n\n\t\t\t\t\tintersection = checkIntersection( this, raycaster, ray, fvA, fvB, fvC, intersectionPoint );\n\n\t\t\t\t\tif ( intersection ) {\n\n\t\t\t\t\t\tif ( uvs ) {\n\n\t\t\t\t\t\t\tvar uvs_f = uvs[ f ];\n\t\t\t\t\t\t\tuvA.copy( uvs_f[ 0 ] );\n\t\t\t\t\t\t\tuvB.copy( uvs_f[ 1 ] );\n\t\t\t\t\t\t\tuvC.copy( uvs_f[ 2 ] );\n\n\t\t\t\t\t\t\tintersection.uv = uvIntersection( intersectionPoint, fvA, fvB, fvC, uvA, uvB, uvC );\n\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\tintersection.face = face;\n\t\t\t\t\t\tintersection.faceIndex = f;\n\t\t\t\t\t\tintersects.push( intersection );\n\n\t\t\t\t\t}\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t};\n\n\t}() ),\n\n\tclone: function () {\n\n\t\treturn new this.constructor( this.geometry, this.material ).copy( this );\n\n\t}\n\n} );\n\n\nexport { Mesh };\n","import { BufferGeometry } from '../core/BufferGeometry';\nimport { Vector3 } from '../math/Vector3';\nimport { BufferAttribute } from '../core/BufferAttribute';\n\n/**\n * @author Mugen87 / https://github.com/Mugen87\n */\n\nfunction BoxBufferGeometry( width, height, depth, widthSegments, heightSegments, depthSegments ) {\n\n\tBufferGeometry.call( this );\n\n\tthis.type = 'BoxBufferGeometry';\n\n\tthis.parameters = {\n\t\twidth: width,\n\t\theight: height,\n\t\tdepth: depth,\n\t\twidthSegments: widthSegments,\n\t\theightSegments: heightSegments,\n\t\tdepthSegments: depthSegments\n\t};\n\n\tvar scope = this;\n\n\t// segments\n\twidthSegments = Math.floor( widthSegments ) || 1;\n\theightSegments = Math.floor( heightSegments ) || 1;\n\tdepthSegments = Math.floor( depthSegments ) || 1;\n\n\t// these are used to calculate buffer length\n\tvar vertexCount = calculateVertexCount( widthSegments, heightSegments, depthSegments );\n\tvar indexCount = calculateIndexCount( widthSegments, heightSegments, depthSegments );\n\n\t// buffers\n\tvar indices = new ( indexCount > 65535 ? Uint32Array : Uint16Array )( indexCount );\n\tvar vertices = new Float32Array( vertexCount * 3 );\n\tvar normals = new Float32Array( vertexCount * 3 );\n\tvar uvs = new Float32Array( vertexCount * 2 );\n\n\t// offset variables\n\tvar vertexBufferOffset = 0;\n\tvar uvBufferOffset = 0;\n\tvar indexBufferOffset = 0;\n\tvar numberOfVertices = 0;\n\n\t// group variables\n\tvar groupStart = 0;\n\n\t// build each side of the box geometry\n\tbuildPlane( 'z', 'y', 'x', - 1, - 1, depth, height, width, depthSegments, heightSegments, 0 ); // px\n\tbuildPlane( 'z', 'y', 'x', 1, - 1, depth, height, - width, depthSegments, heightSegments, 1 ); // nx\n\tbuildPlane( 'x', 'z', 'y', 1, 1, width, depth, height, widthSegments, depthSegments, 2 ); // py\n\tbuildPlane( 'x', 'z', 'y', 1, - 1, width, depth, - height, widthSegments, depthSegments, 3 ); // ny\n\tbuildPlane( 'x', 'y', 'z', 1, - 1, width, height, depth, widthSegments, heightSegments, 4 ); // pz\n\tbuildPlane( 'x', 'y', 'z', - 1, - 1, width, height, - depth, widthSegments, heightSegments, 5 ); // nz\n\n\t// build geometry\n\tthis.setIndex( new BufferAttribute( indices, 1 ) );\n\tthis.addAttribute( 'position', new BufferAttribute( vertices, 3 ) );\n\tthis.addAttribute( 'normal', new BufferAttribute( normals, 3 ) );\n\tthis.addAttribute( 'uv', new BufferAttribute( uvs, 2 ) );\n\n\t// helper functions\n\n\tfunction calculateVertexCount( w, h, d ) {\n\n\t\tvar vertices = 0;\n\n\t\t// calculate the amount of vertices for each side (plane)\n\t\tvertices += (w + 1) * (h + 1) * 2; // xy\n\t\tvertices += (w + 1) * (d + 1) * 2; // xz\n\t\tvertices += (d + 1) * (h + 1) * 2; // zy\n\n\t\treturn vertices;\n\n\t}\n\n\tfunction calculateIndexCount( w, h, d ) {\n\n\t\tvar index = 0;\n\n\t\t// calculate the amount of squares for each side\n\t\tindex += w * h * 2; // xy\n\t\tindex += w * d * 2; // xz\n\t\tindex += d * h * 2; // zy\n\n\t\treturn index * 6; // two triangles per square => six vertices per square\n\n\t}\n\n\tfunction buildPlane( u, v, w, udir, vdir, width, height, depth, gridX, gridY, materialIndex ) {\n\n\t\tvar segmentWidth\t= width / gridX;\n\t\tvar segmentHeight = height / gridY;\n\n\t\tvar widthHalf = width / 2;\n\t\tvar heightHalf = height / 2;\n\t\tvar depthHalf = depth / 2;\n\n\t\tvar gridX1 = gridX + 1;\n\t\tvar gridY1 = gridY + 1;\n\n\t\tvar vertexCounter = 0;\n\t\tvar groupCount = 0;\n\n\t\tvar vector = new Vector3();\n\n\t\t// generate vertices, normals and uvs\n\n\t\tfor ( var iy = 0; iy < gridY1; iy ++ ) {\n\n\t\t\tvar y = iy * segmentHeight - heightHalf;\n\n\t\t\tfor ( var ix = 0; ix < gridX1; ix ++ ) {\n\n\t\t\t\tvar x = ix * segmentWidth - widthHalf;\n\n\t\t\t\t// set values to correct vector component\n\t\t\t\tvector[ u ] = x * udir;\n\t\t\t\tvector[ v ] = y * vdir;\n\t\t\t\tvector[ w ] = depthHalf;\n\n\t\t\t\t// now apply vector to vertex buffer\n\t\t\t\tvertices[ vertexBufferOffset ] = vector.x;\n\t\t\t\tvertices[ vertexBufferOffset + 1 ] = vector.y;\n\t\t\t\tvertices[ vertexBufferOffset + 2 ] = vector.z;\n\n\t\t\t\t// set values to correct vector component\n\t\t\t\tvector[ u ] = 0;\n\t\t\t\tvector[ v ] = 0;\n\t\t\t\tvector[ w ] = depth > 0 ? 1 : - 1;\n\n\t\t\t\t// now apply vector to normal buffer\n\t\t\t\tnormals[ vertexBufferOffset ] = vector.x;\n\t\t\t\tnormals[ vertexBufferOffset + 1 ] = vector.y;\n\t\t\t\tnormals[ vertexBufferOffset + 2 ] = vector.z;\n\n\t\t\t\t// uvs\n\t\t\t\tuvs[ uvBufferOffset ] = ix / gridX;\n\t\t\t\tuvs[ uvBufferOffset + 1 ] = 1 - ( iy / gridY );\n\n\t\t\t\t// update offsets and counters\n\t\t\t\tvertexBufferOffset += 3;\n\t\t\t\tuvBufferOffset += 2;\n\t\t\t\tvertexCounter += 1;\n\n\t\t\t}\n\n\t\t}\n\n\t\t// 1. you need three indices to draw a single face\n\t\t// 2. a single segment consists of two faces\n\t\t// 3. so we need to generate six (2*3) indices per segment\n\n\t\tfor ( iy = 0; iy < gridY; iy ++ ) {\n\n\t\t\tfor ( ix = 0; ix < gridX; ix ++ ) {\n\n\t\t\t\t// indices\n\t\t\t\tvar a = numberOfVertices + ix + gridX1 * iy;\n\t\t\t\tvar b = numberOfVertices + ix + gridX1 * ( iy + 1 );\n\t\t\t\tvar c = numberOfVertices + ( ix + 1 ) + gridX1 * ( iy + 1 );\n\t\t\t\tvar d = numberOfVertices + ( ix + 1 ) + gridX1 * iy;\n\n\t\t\t\t// face one\n\t\t\t\tindices[ indexBufferOffset ] = a;\n\t\t\t\tindices[ indexBufferOffset + 1 ] = b;\n\t\t\t\tindices[ indexBufferOffset + 2 ] = d;\n\n\t\t\t\t// face two\n\t\t\t\tindices[ indexBufferOffset + 3 ] = b;\n\t\t\t\tindices[ indexBufferOffset + 4 ] = c;\n\t\t\t\tindices[ indexBufferOffset + 5 ] = d;\n\n\t\t\t\t// update offsets and counters\n\t\t\t\tindexBufferOffset += 6;\n\t\t\t\tgroupCount += 6;\n\n\t\t\t}\n\n\t\t}\n\n\t\t// add a group to the geometry. this will ensure multi material support\n\t\tscope.addGroup( groupStart, groupCount, materialIndex );\n\n\t\t// calculate new start value for groups\n\t\tgroupStart += groupCount;\n\n\t\t// update total number of vertices\n\t\tnumberOfVertices += vertexCounter;\n\n\t}\n\n}\n\nBoxBufferGeometry.prototype = Object.create( BufferGeometry.prototype );\nBoxBufferGeometry.prototype.constructor = BoxBufferGeometry;\n\n\nexport { BoxBufferGeometry };\n","import { BufferGeometry } from '../core/BufferGeometry';\nimport { BufferAttribute } from '../core/BufferAttribute';\n\n/**\n * @author mrdoob / http://mrdoob.com/\n * based on http://papervision3d.googlecode.com/svn/trunk/as3/trunk/src/org/papervision3d/objects/primitives/Plane.as\n */\n\nfunction PlaneBufferGeometry( width, height, widthSegments, heightSegments ) {\n\n\tBufferGeometry.call( this );\n\n\tthis.type = 'PlaneBufferGeometry';\n\n\tthis.parameters = {\n\t\twidth: width,\n\t\theight: height,\n\t\twidthSegments: widthSegments,\n\t\theightSegments: heightSegments\n\t};\n\n\tvar width_half = width / 2;\n\tvar height_half = height / 2;\n\n\tvar gridX = Math.floor( widthSegments ) || 1;\n\tvar gridY = Math.floor( heightSegments ) || 1;\n\n\tvar gridX1 = gridX + 1;\n\tvar gridY1 = gridY + 1;\n\n\tvar segment_width = width / gridX;\n\tvar segment_height = height / gridY;\n\n\tvar vertices = new Float32Array( gridX1 * gridY1 * 3 );\n\tvar normals = new Float32Array( gridX1 * gridY1 * 3 );\n\tvar uvs = new Float32Array( gridX1 * gridY1 * 2 );\n\n\tvar offset = 0;\n\tvar offset2 = 0;\n\n\tfor ( var iy = 0; iy < gridY1; iy ++ ) {\n\n\t\tvar y = iy * segment_height - height_half;\n\n\t\tfor ( var ix = 0; ix < gridX1; ix ++ ) {\n\n\t\t\tvar x = ix * segment_width - width_half;\n\n\t\t\tvertices[ offset ] = x;\n\t\t\tvertices[ offset + 1 ] = - y;\n\n\t\t\tnormals[ offset + 2 ] = 1;\n\n\t\t\tuvs[ offset2 ] = ix / gridX;\n\t\t\tuvs[ offset2 + 1 ] = 1 - ( iy / gridY );\n\n\t\t\toffset += 3;\n\t\t\toffset2 += 2;\n\n\t\t}\n\n\t}\n\n\toffset = 0;\n\n\tvar indices = new ( ( vertices.length / 3 ) > 65535 ? Uint32Array : Uint16Array )( gridX * gridY * 6 );\n\n\tfor ( var iy = 0; iy < gridY; iy ++ ) {\n\n\t\tfor ( var ix = 0; ix < gridX; ix ++ ) {\n\n\t\t\tvar a = ix + gridX1 * iy;\n\t\t\tvar b = ix + gridX1 * ( iy + 1 );\n\t\t\tvar c = ( ix + 1 ) + gridX1 * ( iy + 1 );\n\t\t\tvar d = ( ix + 1 ) + gridX1 * iy;\n\n\t\t\tindices[ offset ] = a;\n\t\t\tindices[ offset + 1 ] = b;\n\t\t\tindices[ offset + 2 ] = d;\n\n\t\t\tindices[ offset + 3 ] = b;\n\t\t\tindices[ offset + 4 ] = c;\n\t\t\tindices[ offset + 5 ] = d;\n\n\t\t\toffset += 6;\n\n\t\t}\n\n\t}\n\n\tthis.setIndex( new BufferAttribute( indices, 1 ) );\n\tthis.addAttribute( 'position', new BufferAttribute( vertices, 3 ) );\n\tthis.addAttribute( 'normal', new BufferAttribute( normals, 3 ) );\n\tthis.addAttribute( 'uv', new BufferAttribute( uvs, 2 ) );\n\n}\n\nPlaneBufferGeometry.prototype = Object.create( BufferGeometry.prototype );\nPlaneBufferGeometry.prototype.constructor = PlaneBufferGeometry;\n\n\nexport { PlaneBufferGeometry };\n","import { Matrix4 } from '../math/Matrix4';\nimport { Quaternion } from '../math/Quaternion';\nimport { Object3D } from '../core/Object3D';\nimport { Vector3 } from '../math/Vector3';\n\n/**\n * @author mrdoob / http://mrdoob.com/\n * @author mikael emtinger / http://gomo.se/\n * @author WestLangley / http://github.com/WestLangley\n*/\n\nfunction Camera() {\n\n\tObject3D.call( this );\n\n\tthis.type = 'Camera';\n\n\tthis.matrixWorldInverse = new Matrix4();\n\tthis.projectionMatrix = new Matrix4();\n\n}\n\nCamera.prototype = Object.create( Object3D.prototype );\nCamera.prototype.constructor = Camera;\n\nCamera.prototype.isCamera = true;\n\nCamera.prototype.getWorldDirection = function () {\n\n\tvar quaternion = new Quaternion();\n\n\treturn function getWorldDirection( optionalTarget ) {\n\n\t\tvar result = optionalTarget || new Vector3();\n\n\t\tthis.getWorldQuaternion( quaternion );\n\n\t\treturn result.set( 0, 0, - 1 ).applyQuaternion( quaternion );\n\n\t};\n\n}();\n\nCamera.prototype.lookAt = function () {\n\n\t// This routine does not support cameras with rotated and/or translated parent(s)\n\n\tvar m1 = new Matrix4();\n\n\treturn function lookAt( vector ) {\n\n\t\tm1.lookAt( this.position, vector, this.up );\n\n\t\tthis.quaternion.setFromRotationMatrix( m1 );\n\n\t};\n\n}();\n\nCamera.prototype.clone = function () {\n\n\treturn new this.constructor().copy( this );\n\n};\n\nCamera.prototype.copy = function ( source ) {\n\n\tObject3D.prototype.copy.call( this, source );\n\n\tthis.matrixWorldInverse.copy( source.matrixWorldInverse );\n\tthis.projectionMatrix.copy( source.projectionMatrix );\n\n\treturn this;\n\n};\n\n\nexport { Camera };\n","import { Camera } from './Camera';\nimport { Object3D } from '../core/Object3D';\nimport { _Math } from '../math/Math';\n\n/**\n * @author mrdoob / http://mrdoob.com/\n * @author greggman / http://games.greggman.com/\n * @author zz85 / http://www.lab4games.net/zz85/blog\n * @author tschw\n */\n\nfunction PerspectiveCamera( fov, aspect, near, far ) {\n\n\tCamera.call( this );\n\n\tthis.type = 'PerspectiveCamera';\n\n\tthis.fov = fov !== undefined ? fov : 50;\n\tthis.zoom = 1;\n\n\tthis.near = near !== undefined ? near : 0.1;\n\tthis.far = far !== undefined ? far : 2000;\n\tthis.focus = 10;\n\n\tthis.aspect = aspect !== undefined ? aspect : 1;\n\tthis.view = null;\n\n\tthis.filmGauge = 35;\t// width of the film (default in millimeters)\n\tthis.filmOffset = 0;\t// horizontal film offset (same unit as gauge)\n\n\tthis.updateProjectionMatrix();\n\n}\n\nPerspectiveCamera.prototype = Object.assign( Object.create( Camera.prototype ), {\n\n\tconstructor: PerspectiveCamera,\n\n\tisPerspectiveCamera: true,\n\n\tcopy: function ( source ) {\n\n\t\tCamera.prototype.copy.call( this, source );\n\n\t\tthis.fov = source.fov;\n\t\tthis.zoom = source.zoom;\n\n\t\tthis.near = source.near;\n\t\tthis.far = source.far;\n\t\tthis.focus = source.focus;\n\n\t\tthis.aspect = source.aspect;\n\t\tthis.view = source.view === null ? null : Object.assign( {}, source.view );\n\n\t\tthis.filmGauge = source.filmGauge;\n\t\tthis.filmOffset = source.filmOffset;\n\n\t\treturn this;\n\n\t},\n\n\t/**\n\t * Sets the FOV by focal length in respect to the current .filmGauge.\n\t *\n\t * The default film gauge is 35, so that the focal length can be specified for\n\t * a 35mm (full frame) camera.\n\t *\n\t * Values for focal length and film gauge must have the same unit.\n\t */\n\tsetFocalLength: function ( focalLength ) {\n\n\t\t// see http://www.bobatkins.com/photography/technical/field_of_view.html\n\t\tvar vExtentSlope = 0.5 * this.getFilmHeight() / focalLength;\n\n\t\tthis.fov = _Math.RAD2DEG * 2 * Math.atan( vExtentSlope );\n\t\tthis.updateProjectionMatrix();\n\n\t},\n\n\t/**\n\t * Calculates the focal length from the current .fov and .filmGauge.\n\t */\n\tgetFocalLength: function () {\n\n\t\tvar vExtentSlope = Math.tan( _Math.DEG2RAD * 0.5 * this.fov );\n\n\t\treturn 0.5 * this.getFilmHeight() / vExtentSlope;\n\n\t},\n\n\tgetEffectiveFOV: function () {\n\n\t\treturn _Math.RAD2DEG * 2 * Math.atan(\n\t\t\t\tMath.tan( _Math.DEG2RAD * 0.5 * this.fov ) / this.zoom );\n\n\t},\n\n\tgetFilmWidth: function () {\n\n\t\t// film not completely covered in portrait format (aspect < 1)\n\t\treturn this.filmGauge * Math.min( this.aspect, 1 );\n\n\t},\n\n\tgetFilmHeight: function () {\n\n\t\t// film not completely covered in landscape format (aspect > 1)\n\t\treturn this.filmGauge / Math.max( this.aspect, 1 );\n\n\t},\n\n\t/**\n\t * Sets an offset in a larger frustum. This is useful for multi-window or\n\t * multi-monitor/multi-machine setups.\n\t *\n\t * For example, if you have 3x2 monitors and each monitor is 1920x1080 and\n\t * the monitors are in grid like this\n\t *\n\t * +---+---+---+\n\t * | A | B | C |\n\t * +---+---+---+\n\t * | D | E | F |\n\t * +---+---+---+\n\t *\n\t * then for each monitor you would call it like this\n\t *\n\t * var w = 1920;\n\t * var h = 1080;\n\t * var fullWidth = w * 3;\n\t * var fullHeight = h * 2;\n\t *\n\t * --A--\n\t * camera.setOffset( fullWidth, fullHeight, w * 0, h * 0, w, h );\n\t * --B--\n\t * camera.setOffset( fullWidth, fullHeight, w * 1, h * 0, w, h );\n\t * --C--\n\t * camera.setOffset( fullWidth, fullHeight, w * 2, h * 0, w, h );\n\t * --D--\n\t * camera.setOffset( fullWidth, fullHeight, w * 0, h * 1, w, h );\n\t * --E--\n\t * camera.setOffset( fullWidth, fullHeight, w * 1, h * 1, w, h );\n\t * --F--\n\t * camera.setOffset( fullWidth, fullHeight, w * 2, h * 1, w, h );\n\t *\n\t * Note there is no reason monitors have to be the same size or in a grid.\n\t */\n\tsetViewOffset: function ( fullWidth, fullHeight, x, y, width, height ) {\n\n\t\tthis.aspect = fullWidth / fullHeight;\n\n\t\tthis.view = {\n\t\t\tfullWidth: fullWidth,\n\t\t\tfullHeight: fullHeight,\n\t\t\toffsetX: x,\n\t\t\toffsetY: y,\n\t\t\twidth: width,\n\t\t\theight: height\n\t\t};\n\n\t\tthis.updateProjectionMatrix();\n\n\t},\n\n\tclearViewOffset: function() {\n\n\t\tthis.view = null;\n\t\tthis.updateProjectionMatrix();\n\n\t},\n\n\tupdateProjectionMatrix: function () {\n\n\t\tvar near = this.near,\n\t\t\ttop = near * Math.tan(\n\t\t\t\t\t_Math.DEG2RAD * 0.5 * this.fov ) / this.zoom,\n\t\t\theight = 2 * top,\n\t\t\twidth = this.aspect * height,\n\t\t\tleft = - 0.5 * width,\n\t\t\tview = this.view;\n\n\t\tif ( view !== null ) {\n\n\t\t\tvar fullWidth = view.fullWidth,\n\t\t\t\tfullHeight = view.fullHeight;\n\n\t\t\tleft += view.offsetX * width / fullWidth;\n\t\t\ttop -= view.offsetY * height / fullHeight;\n\t\t\twidth *= view.width / fullWidth;\n\t\t\theight *= view.height / fullHeight;\n\n\t\t}\n\n\t\tvar skew = this.filmOffset;\n\t\tif ( skew !== 0 ) left += near * skew / this.getFilmWidth();\n\n\t\tthis.projectionMatrix.makeFrustum(\n\t\t\t\tleft, left + width, top - height, top, near, this.far );\n\n\t},\n\n\ttoJSON: function ( meta ) {\n\n\t\tvar data = Object3D.prototype.toJSON.call( this, meta );\n\n\t\tdata.object.fov = this.fov;\n\t\tdata.object.zoom = this.zoom;\n\n\t\tdata.object.near = this.near;\n\t\tdata.object.far = this.far;\n\t\tdata.object.focus = this.focus;\n\n\t\tdata.object.aspect = this.aspect;\n\n\t\tif ( this.view !== null ) data.object.view = Object.assign( {}, this.view );\n\n\t\tdata.object.filmGauge = this.filmGauge;\n\t\tdata.object.filmOffset = this.filmOffset;\n\n\t\treturn data;\n\n\t}\n\n} );\n\n\nexport { PerspectiveCamera };\n","import { Camera } from './Camera';\nimport { Object3D } from '../core/Object3D';\n\n/**\n * @author alteredq / http://alteredqualia.com/\n * @author arose / http://github.com/arose\n */\n\nfunction OrthographicCamera( left, right, top, bottom, near, far ) {\n\n\tCamera.call( this );\n\n\tthis.type = 'OrthographicCamera';\n\n\tthis.zoom = 1;\n\tthis.view = null;\n\n\tthis.left = left;\n\tthis.right = right;\n\tthis.top = top;\n\tthis.bottom = bottom;\n\n\tthis.near = ( near !== undefined ) ? near : 0.1;\n\tthis.far = ( far !== undefined ) ? far : 2000;\n\n\tthis.updateProjectionMatrix();\n\n}\n\nOrthographicCamera.prototype = Object.assign( Object.create( Camera.prototype ), {\n\n\tconstructor: OrthographicCamera,\n\n\tisOrthographicCamera: true,\n\n\tcopy: function ( source ) {\n\n\t\tCamera.prototype.copy.call( this, source );\n\n\t\tthis.left = source.left;\n\t\tthis.right = source.right;\n\t\tthis.top = source.top;\n\t\tthis.bottom = source.bottom;\n\t\tthis.near = source.near;\n\t\tthis.far = source.far;\n\n\t\tthis.zoom = source.zoom;\n\t\tthis.view = source.view === null ? null : Object.assign( {}, source.view );\n\n\t\treturn this;\n\n\t},\n\n\tsetViewOffset: function( fullWidth, fullHeight, x, y, width, height ) {\n\n\t\tthis.view = {\n\t\t\tfullWidth: fullWidth,\n\t\t\tfullHeight: fullHeight,\n\t\t\toffsetX: x,\n\t\t\toffsetY: y,\n\t\t\twidth: width,\n\t\t\theight: height\n\t\t};\n\n\t\tthis.updateProjectionMatrix();\n\n\t},\n\n\tclearViewOffset: function() {\n\n\t\tthis.view = null;\n\t\tthis.updateProjectionMatrix();\n\n\t},\n\n\tupdateProjectionMatrix: function () {\n\n\t\tvar dx = ( this.right - this.left ) / ( 2 * this.zoom );\n\t\tvar dy = ( this.top - this.bottom ) / ( 2 * this.zoom );\n\t\tvar cx = ( this.right + this.left ) / 2;\n\t\tvar cy = ( this.top + this.bottom ) / 2;\n\n\t\tvar left = cx - dx;\n\t\tvar right = cx + dx;\n\t\tvar top = cy + dy;\n\t\tvar bottom = cy - dy;\n\n\t\tif ( this.view !== null ) {\n\n\t\t\tvar zoomW = this.zoom / ( this.view.width / this.view.fullWidth );\n\t\t\tvar zoomH = this.zoom / ( this.view.height / this.view.fullHeight );\n\t\t\tvar scaleW = ( this.right - this.left ) / this.view.width;\n\t\t\tvar scaleH = ( this.top - this.bottom ) / this.view.height;\n\n\t\t\tleft += scaleW * ( this.view.offsetX / zoomW );\n\t\t\tright = left + scaleW * ( this.view.width / zoomW );\n\t\t\ttop -= scaleH * ( this.view.offsetY / zoomH );\n\t\t\tbottom = top - scaleH * ( this.view.height / zoomH );\n\n\t\t}\n\n\t\tthis.projectionMatrix.makeOrthographic( left, right, top, bottom, this.near, this.far );\n\n\t},\n\n\ttoJSON: function ( meta ) {\n\n\t\tvar data = Object3D.prototype.toJSON.call( this, meta );\n\n\t\tdata.object.zoom = this.zoom;\n\t\tdata.object.left = this.left;\n\t\tdata.object.right = this.right;\n\t\tdata.object.top = this.top;\n\t\tdata.object.bottom = this.bottom;\n\t\tdata.object.near = this.near;\n\t\tdata.object.far = this.far;\n\n\t\tif ( this.view !== null ) data.object.view = Object.assign( {}, this.view );\n\n\t\treturn data;\n\n\t}\n\n} );\n\n\nexport { OrthographicCamera };\n","/**\n * @author mrdoob / http://mrdoob.com/\n */\n\nfunction WebGLIndexedBufferRenderer( gl, extensions, infoRender ) {\n\n\tvar mode;\n\n\tfunction setMode( value ) {\n\n\t\tmode = value;\n\n\t}\n\n\tvar type, size;\n\n\tfunction setIndex( index ) {\n\n\t\tif ( index.array instanceof Uint32Array && extensions.get( 'OES_element_index_uint' ) ) {\n\n\t\t\ttype = gl.UNSIGNED_INT;\n\t\t\tsize = 4;\n\n\t\t} else {\n\n\t\t\ttype = gl.UNSIGNED_SHORT;\n\t\t\tsize = 2;\n\n\t\t}\n\n\t}\n\n\tfunction render( start, count ) {\n\n\t\tgl.drawElements( mode, count, type, start * size );\n\n\t\tinfoRender.calls ++;\n\t\tinfoRender.vertices += count;\n\n\t\tif ( mode === gl.TRIANGLES ) infoRender.faces += count / 3;\n\n\t}\n\n\tfunction renderInstances( geometry, start, count ) {\n\n\t\tvar extension = extensions.get( 'ANGLE_instanced_arrays' );\n\n\t\tif ( extension === null ) {\n\n\t\t\tconsole.error( 'THREE.WebGLBufferRenderer: using THREE.InstancedBufferGeometry but hardware does not support extension ANGLE_instanced_arrays.' );\n\t\t\treturn;\n\n\t\t}\n\n\t\textension.drawElementsInstancedANGLE( mode, count, type, start * size, geometry.maxInstancedCount );\n\n\t\tinfoRender.calls ++;\n\t\tinfoRender.vertices += count * geometry.maxInstancedCount;\n\n\t\tif ( mode === gl.TRIANGLES ) infoRender.faces += geometry.maxInstancedCount * count / 3;\n\n\t}\n\n\treturn {\n\n\t\tsetMode: setMode,\n\t\tsetIndex: setIndex,\n\t\trender: render,\n\t\trenderInstances: renderInstances\n\n\t};\n\n}\n\n\nexport { WebGLIndexedBufferRenderer };\n","/**\n * @author mrdoob / http://mrdoob.com/\n */\n\nfunction WebGLBufferRenderer( gl, extensions, infoRender ) {\n\n\tvar mode;\n\n\tfunction setMode( value ) {\n\n\t\tmode = value;\n\n\t}\n\n\tfunction render( start, count ) {\n\n\t\tgl.drawArrays( mode, start, count );\n\n\t\tinfoRender.calls ++;\n\t\tinfoRender.vertices += count;\n\n\t\tif ( mode === gl.TRIANGLES ) infoRender.faces += count / 3;\n\n\t}\n\n\tfunction renderInstances( geometry ) {\n\n\t\tvar extension = extensions.get( 'ANGLE_instanced_arrays' );\n\n\t\tif ( extension === null ) {\n\n\t\t\tconsole.error( 'THREE.WebGLBufferRenderer: using THREE.InstancedBufferGeometry but hardware does not support extension ANGLE_instanced_arrays.' );\n\t\t\treturn;\n\n\t\t}\n\n\t\tvar position = geometry.attributes.position;\n\n\t\tvar count = 0;\n\n\t\tif ( (position && position.isInterleavedBufferAttribute) ) {\n\n\t\t\tcount = position.data.count;\n\n\t\t\textension.drawArraysInstancedANGLE( mode, 0, count, geometry.maxInstancedCount );\n\n\t\t} else {\n\n\t\t\tcount = position.count;\n\n\t\t\textension.drawArraysInstancedANGLE( mode, 0, count, geometry.maxInstancedCount );\n\n\t\t}\n\n\t\tinfoRender.calls ++;\n\t\tinfoRender.vertices += count * geometry.maxInstancedCount;\n\n\t\tif ( mode === gl.TRIANGLES ) infoRender.faces += geometry.maxInstancedCount * count / 3;\n\n\t}\n\n\treturn {\n\t\tsetMode: setMode,\n\t\trender: render,\n\t\trenderInstances: renderInstances\n\t};\n\n}\n\n\nexport { WebGLBufferRenderer };\n","/**\n * @author mrdoob / http://mrdoob.com/\n */\n\nimport { Color } from '../../math/Color';\nimport { Vector3 } from '../../math/Vector3';\nimport { Vector2 } from '../../math/Vector2';\n\nfunction WebGLLights() {\n\n\tvar lights = {};\n\n\treturn {\n\n\t\tget: function ( light ) {\n\n\t\t\tif ( lights[ light.id ] !== undefined ) {\n\n\t\t\t\treturn lights[ light.id ];\n\n\t\t\t}\n\n\t\t\tvar uniforms;\n\n\t\t\tswitch ( light.type ) {\n\n\t\t\t\tcase 'DirectionalLight':\n\t\t\t\t\tuniforms = {\n\t\t\t\t\t\tdirection: new Vector3(),\n\t\t\t\t\t\tcolor: new Color(),\n\n\t\t\t\t\t\tshadow: false,\n\t\t\t\t\t\tshadowBias: 0,\n\t\t\t\t\t\tshadowRadius: 1,\n\t\t\t\t\t\tshadowMapSize: new Vector2()\n\t\t\t\t\t};\n\t\t\t\t\tbreak;\n\n\t\t\t\tcase 'SpotLight':\n\t\t\t\t\tuniforms = {\n\t\t\t\t\t\tposition: new Vector3(),\n\t\t\t\t\t\tdirection: new Vector3(),\n\t\t\t\t\t\tcolor: new Color(),\n\t\t\t\t\t\tdistance: 0,\n\t\t\t\t\t\tconeCos: 0,\n\t\t\t\t\t\tpenumbraCos: 0,\n\t\t\t\t\t\tdecay: 0,\n\n\t\t\t\t\t\tshadow: false,\n\t\t\t\t\t\tshadowBias: 0,\n\t\t\t\t\t\tshadowRadius: 1,\n\t\t\t\t\t\tshadowMapSize: new Vector2()\n\t\t\t\t\t};\n\t\t\t\t\tbreak;\n\n\t\t\t\tcase 'PointLight':\n\t\t\t\t\tuniforms = {\n\t\t\t\t\t\tposition: new Vector3(),\n\t\t\t\t\t\tcolor: new Color(),\n\t\t\t\t\t\tdistance: 0,\n\t\t\t\t\t\tdecay: 0,\n\n\t\t\t\t\t\tshadow: false,\n\t\t\t\t\t\tshadowBias: 0,\n\t\t\t\t\t\tshadowRadius: 1,\n\t\t\t\t\t\tshadowMapSize: new Vector2()\n\t\t\t\t\t};\n\t\t\t\t\tbreak;\n\n\t\t\t\tcase 'HemisphereLight':\n\t\t\t\t\tuniforms = {\n\t\t\t\t\t\tdirection: new Vector3(),\n\t\t\t\t\t\tskyColor: new Color(),\n\t\t\t\t\t\tgroundColor: new Color()\n\t\t\t\t\t};\n\t\t\t\t\tbreak;\n\n\t\t\t}\n\n\t\t\tlights[ light.id ] = uniforms;\n\n\t\t\treturn uniforms;\n\n\t\t}\n\n\t};\n\n}\n\n\nexport { WebGLLights };\n","/**\n * @author mrdoob / http://mrdoob.com/\n */\n\nfunction addLineNumbers( string ) {\n\n\tvar lines = string.split( '\\n' );\n\n\tfor ( var i = 0; i < lines.length; i ++ ) {\n\n\t\tlines[ i ] = ( i + 1 ) + ': ' + lines[ i ];\n\n\t}\n\n\treturn lines.join( '\\n' );\n\n}\n\nfunction WebGLShader( gl, type, string ) {\n\n\tvar shader = gl.createShader( type );\n\n\tgl.shaderSource( shader, string );\n\tgl.compileShader( shader );\n\n\tif ( gl.getShaderParameter( shader, gl.COMPILE_STATUS ) === false ) {\n\n\t\tconsole.error( 'THREE.WebGLShader: Shader couldn\\'t compile.' );\n\n\t}\n\n\tif ( gl.getShaderInfoLog( shader ) !== '' ) {\n\n\t\tconsole.warn( 'THREE.WebGLShader: gl.getShaderInfoLog()', type === gl.VERTEX_SHADER ? 'vertex' : 'fragment', gl.getShaderInfoLog( shader ), addLineNumbers( string ) );\n\n\t}\n\n\t// --enable-privileged-webgl-extension\n\t// console.log( type, gl.getExtension( 'WEBGL_debug_shaders' ).getTranslatedShaderSource( shader ) );\n\n\treturn shader;\n\n}\n\nexport { WebGLShader };\n","/**\n * @author mrdoob / http://mrdoob.com/\n */\n\nimport { WebGLUniforms } from './WebGLUniforms';\nimport { WebGLShader } from './WebGLShader';\nimport { ShaderChunk } from '../shaders/ShaderChunk';\nimport { NoToneMapping, AddOperation, MixOperation, MultiplyOperation, EquirectangularRefractionMapping, CubeRefractionMapping, SphericalReflectionMapping, EquirectangularReflectionMapping, CubeUVRefractionMapping, CubeUVReflectionMapping, CubeReflectionMapping, PCFSoftShadowMap, PCFShadowMap, CineonToneMapping, Uncharted2ToneMapping, ReinhardToneMapping, LinearToneMapping, GammaEncoding, RGBDEncoding, RGBM16Encoding, RGBM7Encoding, RGBEEncoding, sRGBEncoding, LinearEncoding } from '../../constants';\n\nvar programIdCount = 0;\n\nfunction getEncodingComponents( encoding ) {\n\n\tswitch ( encoding ) {\n\n\t\tcase LinearEncoding:\n\t\t\treturn [ 'Linear','( value )' ];\n\t\tcase sRGBEncoding:\n\t\t\treturn [ 'sRGB','( value )' ];\n\t\tcase RGBEEncoding:\n\t\t\treturn [ 'RGBE','( value )' ];\n\t\tcase RGBM7Encoding:\n\t\t\treturn [ 'RGBM','( value, 7.0 )' ];\n\t\tcase RGBM16Encoding:\n\t\t\treturn [ 'RGBM','( value, 16.0 )' ];\n\t\tcase RGBDEncoding:\n\t\t\treturn [ 'RGBD','( value, 256.0 )' ];\n\t\tcase GammaEncoding:\n\t\t\treturn [ 'Gamma','( value, float( GAMMA_FACTOR ) )' ];\n\t\tdefault:\n\t\t\tthrow new Error( 'unsupported encoding: ' + encoding );\n\n\t}\n\n}\n\nfunction getTexelDecodingFunction( functionName, encoding ) {\n\n\tvar components = getEncodingComponents( encoding );\n\treturn \"vec4 \" + functionName + \"( vec4 value ) { return \" + components[ 0 ] + \"ToLinear\" + components[ 1 ] + \"; }\";\n\n}\n\nfunction getTexelEncodingFunction( functionName, encoding ) {\n\n\tvar components = getEncodingComponents( encoding );\n\treturn \"vec4 \" + functionName + \"( vec4 value ) { return LinearTo\" + components[ 0 ] + components[ 1 ] + \"; }\";\n\n}\n\nfunction getToneMappingFunction( functionName, toneMapping ) {\n\n\tvar toneMappingName;\n\n\tswitch ( toneMapping ) {\n\n\t\tcase LinearToneMapping:\n\t\t\ttoneMappingName = \"Linear\";\n\t\t\tbreak;\n\n\t\tcase ReinhardToneMapping:\n\t\t\ttoneMappingName = \"Reinhard\";\n\t\t\tbreak;\n\n\t\tcase Uncharted2ToneMapping:\n\t\t\ttoneMappingName = \"Uncharted2\";\n\t\t\tbreak;\n\n\t\tcase CineonToneMapping:\n\t\t\ttoneMappingName = \"OptimizedCineon\";\n\t\t\tbreak;\n\n\t\tdefault:\n\t\t\tthrow new Error( 'unsupported toneMapping: ' + toneMapping );\n\n\t}\n\n\treturn \"vec3 \" + functionName + \"( vec3 color ) { return \" + toneMappingName + \"ToneMapping( color ); }\";\n\n}\n\nfunction generateExtensions( extensions, parameters, rendererExtensions ) {\n\n\textensions = extensions || {};\n\n\tvar chunks = [\n\t\t( extensions.derivatives || parameters.envMapCubeUV || parameters.bumpMap || parameters.normalMap || parameters.flatShading ) ? '#extension GL_OES_standard_derivatives : enable' : '',\n\t\t( extensions.fragDepth || parameters.logarithmicDepthBuffer ) && rendererExtensions.get( 'EXT_frag_depth' ) ? '#extension GL_EXT_frag_depth : enable' : '',\n\t\t( extensions.drawBuffers ) && rendererExtensions.get( 'WEBGL_draw_buffers' ) ? '#extension GL_EXT_draw_buffers : require' : '',\n\t\t( extensions.shaderTextureLOD || parameters.envMap ) && rendererExtensions.get( 'EXT_shader_texture_lod' ) ? '#extension GL_EXT_shader_texture_lod : enable' : '',\n\t];\n\n\treturn chunks.filter( filterEmptyLine ).join( '\\n' );\n\n}\n\nfunction generateDefines( defines ) {\n\n\tvar chunks = [];\n\n\tfor ( var name in defines ) {\n\n\t\tvar value = defines[ name ];\n\n\t\tif ( value === false ) continue;\n\n\t\tchunks.push( '#define ' + name + ' ' + value );\n\n\t}\n\n\treturn chunks.join( '\\n' );\n\n}\n\nfunction fetchAttributeLocations( gl, program, identifiers ) {\n\n\tvar attributes = {};\n\n\tvar n = gl.getProgramParameter( program, gl.ACTIVE_ATTRIBUTES );\n\n\tfor ( var i = 0; i < n; i ++ ) {\n\n\t\tvar info = gl.getActiveAttrib( program, i );\n\t\tvar name = info.name;\n\n\t\t// console.log(\"THREE.WebGLProgram: ACTIVE VERTEX ATTRIBUTE:\", name, i );\n\n\t\tattributes[ name ] = gl.getAttribLocation( program, name );\n\n\t}\n\n\treturn attributes;\n\n}\n\nfunction filterEmptyLine( string ) {\n\n\treturn string !== '';\n\n}\n\nfunction replaceLightNums( string, parameters ) {\n\n\treturn string\n\t\t.replace( /NUM_DIR_LIGHTS/g, parameters.numDirLights )\n\t\t.replace( /NUM_SPOT_LIGHTS/g, parameters.numSpotLights )\n\t\t.replace( /NUM_POINT_LIGHTS/g, parameters.numPointLights )\n\t\t.replace( /NUM_HEMI_LIGHTS/g, parameters.numHemiLights );\n\n}\n\nfunction parseIncludes( string ) {\n\n\tvar pattern = /#include +<([\\w\\d.]+)>/g;\n\n\tfunction replace( match, include ) {\n\n\t\tvar replace = ShaderChunk[ include ];\n\n\t\tif ( replace === undefined ) {\n\n\t\t\tthrow new Error( 'Can not resolve #include <' + include + '>' );\n\n\t\t}\n\n\t\treturn parseIncludes( replace );\n\n\t}\n\n\treturn string.replace( pattern, replace );\n\n}\n\nfunction unrollLoops( string ) {\n\n\tvar pattern = /for \\( int i \\= (\\d+)\\; i < (\\d+)\\; i \\+\\+ \\) \\{([\\s\\S]+?)(?=\\})\\}/g;\n\n\tfunction replace( match, start, end, snippet ) {\n\n\t\tvar unroll = '';\n\n\t\tfor ( var i = parseInt( start ); i < parseInt( end ); i ++ ) {\n\n\t\t\tunroll += snippet.replace( /\\[ i \\]/g, '[ ' + i + ' ]' );\n\n\t\t}\n\n\t\treturn unroll;\n\n\t}\n\n\treturn string.replace( pattern, replace );\n\n}\n\nfunction WebGLProgram( renderer, code, material, parameters ) {\n\n\tvar gl = renderer.context;\n\n\tvar extensions = material.extensions;\n\tvar defines = material.defines;\n\n\tvar vertexShader = material.__webglShader.vertexShader;\n\tvar fragmentShader = material.__webglShader.fragmentShader;\n\n\tvar shadowMapTypeDefine = 'SHADOWMAP_TYPE_BASIC';\n\n\tif ( parameters.shadowMapType === PCFShadowMap ) {\n\n\t\tshadowMapTypeDefine = 'SHADOWMAP_TYPE_PCF';\n\n\t} else if ( parameters.shadowMapType === PCFSoftShadowMap ) {\n\n\t\tshadowMapTypeDefine = 'SHADOWMAP_TYPE_PCF_SOFT';\n\n\t}\n\n\tvar envMapTypeDefine = 'ENVMAP_TYPE_CUBE';\n\tvar envMapModeDefine = 'ENVMAP_MODE_REFLECTION';\n\tvar envMapBlendingDefine = 'ENVMAP_BLENDING_MULTIPLY';\n\n\tif ( parameters.envMap ) {\n\n\t\tswitch ( material.envMap.mapping ) {\n\n\t\t\tcase CubeReflectionMapping:\n\t\t\tcase CubeRefractionMapping:\n\t\t\t\tenvMapTypeDefine = 'ENVMAP_TYPE_CUBE';\n\t\t\t\tbreak;\n\n\t\t\tcase CubeUVReflectionMapping:\n\t\t\tcase CubeUVRefractionMapping:\n\t\t\t\tenvMapTypeDefine = 'ENVMAP_TYPE_CUBE_UV';\n\t\t\t\tbreak;\n\n\t\t\tcase EquirectangularReflectionMapping:\n\t\t\tcase EquirectangularRefractionMapping:\n\t\t\t\tenvMapTypeDefine = 'ENVMAP_TYPE_EQUIREC';\n\t\t\t\tbreak;\n\n\t\t\tcase SphericalReflectionMapping:\n\t\t\t\tenvMapTypeDefine = 'ENVMAP_TYPE_SPHERE';\n\t\t\t\tbreak;\n\n\t\t}\n\n\t\tswitch ( material.envMap.mapping ) {\n\n\t\t\tcase CubeRefractionMapping:\n\t\t\tcase EquirectangularRefractionMapping:\n\t\t\t\tenvMapModeDefine = 'ENVMAP_MODE_REFRACTION';\n\t\t\t\tbreak;\n\n\t\t}\n\n\t\tswitch ( material.combine ) {\n\n\t\t\tcase MultiplyOperation:\n\t\t\t\tenvMapBlendingDefine = 'ENVMAP_BLENDING_MULTIPLY';\n\t\t\t\tbreak;\n\n\t\t\tcase MixOperation:\n\t\t\t\tenvMapBlendingDefine = 'ENVMAP_BLENDING_MIX';\n\t\t\t\tbreak;\n\n\t\t\tcase AddOperation:\n\t\t\t\tenvMapBlendingDefine = 'ENVMAP_BLENDING_ADD';\n\t\t\t\tbreak;\n\n\t\t}\n\n\t}\n\n\tvar gammaFactorDefine = ( renderer.gammaFactor > 0 ) ? renderer.gammaFactor : 1.0;\n\n\t// console.log( 'building new program ' );\n\n\t//\n\n\tvar customExtensions = generateExtensions( extensions, parameters, renderer.extensions );\n\n\tvar customDefines = generateDefines( defines );\n\n\t//\n\n\tvar program = gl.createProgram();\n\n\tvar prefixVertex, prefixFragment;\n\n\tif ( material.isRawShaderMaterial ) {\n\n\t\tprefixVertex = [\n\n\t\t\tcustomDefines,\n\n\t\t\t'\\n'\n\n\t\t].filter( filterEmptyLine ).join( '\\n' );\n\n\t\tprefixFragment = [\n\n\t\t\tcustomExtensions,\n\t\t\tcustomDefines,\n\n\t\t\t'\\n'\n\n\t\t].filter( filterEmptyLine ).join( '\\n' );\n\n\t} else {\n\n\t\tprefixVertex = [\n\n\t\t\t'precision ' + parameters.precision + ' float;',\n\t\t\t'precision ' + parameters.precision + ' int;',\n\n\t\t\t'#define SHADER_NAME ' + material.__webglShader.name,\n\n\t\t\tcustomDefines,\n\n\t\t\tparameters.supportsVertexTextures ? '#define VERTEX_TEXTURES' : '',\n\n\t\t\t'#define GAMMA_FACTOR ' + gammaFactorDefine,\n\n\t\t\t'#define MAX_BONES ' + parameters.maxBones,\n\n\t\t\tparameters.map ? '#define USE_MAP' : '',\n\t\t\tparameters.envMap ? '#define USE_ENVMAP' : '',\n\t\t\tparameters.envMap ? '#define ' + envMapModeDefine : '',\n\t\t\tparameters.lightMap ? '#define USE_LIGHTMAP' : '',\n\t\t\tparameters.aoMap ? '#define USE_AOMAP' : '',\n\t\t\tparameters.emissiveMap ? '#define USE_EMISSIVEMAP' : '',\n\t\t\tparameters.bumpMap ? '#define USE_BUMPMAP' : '',\n\t\t\tparameters.normalMap ? '#define USE_NORMALMAP' : '',\n\t\t\tparameters.displacementMap && parameters.supportsVertexTextures ? '#define USE_DISPLACEMENTMAP' : '',\n\t\t\tparameters.specularMap ? '#define USE_SPECULARMAP' : '',\n\t\t\tparameters.roughnessMap ? '#define USE_ROUGHNESSMAP' : '',\n\t\t\tparameters.metalnessMap ? '#define USE_METALNESSMAP' : '',\n\t\t\tparameters.alphaMap ? '#define USE_ALPHAMAP' : '',\n\t\t\tparameters.vertexColors ? '#define USE_COLOR' : '',\n\n\t\t\tparameters.flatShading ? '#define FLAT_SHADED' : '',\n\n\t\t\tparameters.skinning ? '#define USE_SKINNING' : '',\n\t\t\tparameters.useVertexTexture ? '#define BONE_TEXTURE' : '',\n\n\t\t\tparameters.morphTargets ? '#define USE_MORPHTARGETS' : '',\n\t\t\tparameters.morphNormals && parameters.flatShading === false ? '#define USE_MORPHNORMALS' : '',\n\t\t\tparameters.doubleSided ? '#define DOUBLE_SIDED' : '',\n\t\t\tparameters.flipSided ? '#define FLIP_SIDED' : '',\n\n\t\t\t'#define NUM_CLIPPING_PLANES ' + parameters.numClippingPlanes,\n\n\t\t\tparameters.shadowMapEnabled ? '#define USE_SHADOWMAP' : '',\n\t\t\tparameters.shadowMapEnabled ? '#define ' + shadowMapTypeDefine : '',\n\n\t\t\tparameters.sizeAttenuation ? '#define USE_SIZEATTENUATION' : '',\n\n\t\t\tparameters.logarithmicDepthBuffer ? '#define USE_LOGDEPTHBUF' : '',\n\t\t\tparameters.logarithmicDepthBuffer && renderer.extensions.get( 'EXT_frag_depth' ) ? '#define USE_LOGDEPTHBUF_EXT' : '',\n\n\t\t\t'uniform mat4 modelMatrix;',\n\t\t\t'uniform mat4 modelViewMatrix;',\n\t\t\t'uniform mat4 projectionMatrix;',\n\t\t\t'uniform mat4 viewMatrix;',\n\t\t\t'uniform mat3 normalMatrix;',\n\t\t\t'uniform vec3 cameraPosition;',\n\n\t\t\t'attribute vec3 position;',\n\t\t\t'attribute vec3 normal;',\n\t\t\t'attribute vec2 uv;',\n\n\t\t\t'#ifdef USE_COLOR',\n\n\t\t\t'\tattribute vec3 color;',\n\n\t\t\t'#endif',\n\n\t\t\t'#ifdef USE_MORPHTARGETS',\n\n\t\t\t'\tattribute vec3 morphTarget0;',\n\t\t\t'\tattribute vec3 morphTarget1;',\n\t\t\t'\tattribute vec3 morphTarget2;',\n\t\t\t'\tattribute vec3 morphTarget3;',\n\n\t\t\t'\t#ifdef USE_MORPHNORMALS',\n\n\t\t\t'\t\tattribute vec3 morphNormal0;',\n\t\t\t'\t\tattribute vec3 morphNormal1;',\n\t\t\t'\t\tattribute vec3 morphNormal2;',\n\t\t\t'\t\tattribute vec3 morphNormal3;',\n\n\t\t\t'\t#else',\n\n\t\t\t'\t\tattribute vec3 morphTarget4;',\n\t\t\t'\t\tattribute vec3 morphTarget5;',\n\t\t\t'\t\tattribute vec3 morphTarget6;',\n\t\t\t'\t\tattribute vec3 morphTarget7;',\n\n\t\t\t'\t#endif',\n\n\t\t\t'#endif',\n\n\t\t\t'#ifdef USE_SKINNING',\n\n\t\t\t'\tattribute vec4 skinIndex;',\n\t\t\t'\tattribute vec4 skinWeight;',\n\n\t\t\t'#endif',\n\n\t\t\t'\\n'\n\n\t\t].filter( filterEmptyLine ).join( '\\n' );\n\n\t\tprefixFragment = [\n\n\t\t\tcustomExtensions,\n\n\t\t\t'precision ' + parameters.precision + ' float;',\n\t\t\t'precision ' + parameters.precision + ' int;',\n\n\t\t\t'#define SHADER_NAME ' + material.__webglShader.name,\n\n\t\t\tcustomDefines,\n\n\t\t\tparameters.alphaTest ? '#define ALPHATEST ' + parameters.alphaTest : '',\n\n\t\t\t'#define GAMMA_FACTOR ' + gammaFactorDefine,\n\n\t\t\t( parameters.useFog && parameters.fog ) ? '#define USE_FOG' : '',\n\t\t\t( parameters.useFog && parameters.fogExp ) ? '#define FOG_EXP2' : '',\n\n\t\t\tparameters.map ? '#define USE_MAP' : '',\n\t\t\tparameters.envMap ? '#define USE_ENVMAP' : '',\n\t\t\tparameters.envMap ? '#define ' + envMapTypeDefine : '',\n\t\t\tparameters.envMap ? '#define ' + envMapModeDefine : '',\n\t\t\tparameters.envMap ? '#define ' + envMapBlendingDefine : '',\n\t\t\tparameters.lightMap ? '#define USE_LIGHTMAP' : '',\n\t\t\tparameters.aoMap ? '#define USE_AOMAP' : '',\n\t\t\tparameters.emissiveMap ? '#define USE_EMISSIVEMAP' : '',\n\t\t\tparameters.bumpMap ? '#define USE_BUMPMAP' : '',\n\t\t\tparameters.normalMap ? '#define USE_NORMALMAP' : '',\n\t\t\tparameters.specularMap ? '#define USE_SPECULARMAP' : '',\n\t\t\tparameters.roughnessMap ? '#define USE_ROUGHNESSMAP' : '',\n\t\t\tparameters.metalnessMap ? '#define USE_METALNESSMAP' : '',\n\t\t\tparameters.alphaMap ? '#define USE_ALPHAMAP' : '',\n\t\t\tparameters.vertexColors ? '#define USE_COLOR' : '',\n\n\t\t\tparameters.flatShading ? '#define FLAT_SHADED' : '',\n\n\t\t\tparameters.doubleSided ? '#define DOUBLE_SIDED' : '',\n\t\t\tparameters.flipSided ? '#define FLIP_SIDED' : '',\n\n\t\t\t'#define NUM_CLIPPING_PLANES ' + parameters.numClippingPlanes,\n\t\t\t'#define UNION_CLIPPING_PLANES ' + (parameters.numClippingPlanes - parameters.numClipIntersection),\n\n\t\t\tparameters.shadowMapEnabled ? '#define USE_SHADOWMAP' : '',\n\t\t\tparameters.shadowMapEnabled ? '#define ' + shadowMapTypeDefine : '',\n\n\t\t\tparameters.premultipliedAlpha ? \"#define PREMULTIPLIED_ALPHA\" : '',\n\n\t\t\tparameters.physicallyCorrectLights ? \"#define PHYSICALLY_CORRECT_LIGHTS\" : '',\n\n\t\t\tparameters.logarithmicDepthBuffer ? '#define USE_LOGDEPTHBUF' : '',\n\t\t\tparameters.logarithmicDepthBuffer && renderer.extensions.get( 'EXT_frag_depth' ) ? '#define USE_LOGDEPTHBUF_EXT' : '',\n\n\t\t\tparameters.envMap && renderer.extensions.get( 'EXT_shader_texture_lod' ) ? '#define TEXTURE_LOD_EXT' : '',\n\n\t\t\t'uniform mat4 viewMatrix;',\n\t\t\t'uniform vec3 cameraPosition;',\n\n\t\t\t( parameters.toneMapping !== NoToneMapping ) ? \"#define TONE_MAPPING\" : '',\n\t\t\t( parameters.toneMapping !== NoToneMapping ) ? ShaderChunk[ 'tonemapping_pars_fragment' ] : '', // this code is required here because it is used by the toneMapping() function defined below\n\t\t\t( parameters.toneMapping !== NoToneMapping ) ? getToneMappingFunction( \"toneMapping\", parameters.toneMapping ) : '',\n\n\t\t\t( parameters.outputEncoding || parameters.mapEncoding || parameters.envMapEncoding || parameters.emissiveMapEncoding ) ? ShaderChunk[ 'encodings_pars_fragment' ] : '', // this code is required here because it is used by the various encoding/decoding function defined below\n\t\t\tparameters.mapEncoding ? getTexelDecodingFunction( 'mapTexelToLinear', parameters.mapEncoding ) : '',\n\t\t\tparameters.envMapEncoding ? getTexelDecodingFunction( 'envMapTexelToLinear', parameters.envMapEncoding ) : '',\n\t\t\tparameters.emissiveMapEncoding ? getTexelDecodingFunction( 'emissiveMapTexelToLinear', parameters.emissiveMapEncoding ) : '',\n\t\t\tparameters.outputEncoding ? getTexelEncodingFunction( \"linearToOutputTexel\", parameters.outputEncoding ) : '',\n\n\t\t\tparameters.depthPacking ? \"#define DEPTH_PACKING \" + material.depthPacking : '',\n\n\t\t\t'\\n'\n\n\t\t].filter( filterEmptyLine ).join( '\\n' );\n\n\t}\n\n\tvertexShader = parseIncludes( vertexShader, parameters );\n\tvertexShader = replaceLightNums( vertexShader, parameters );\n\n\tfragmentShader = parseIncludes( fragmentShader, parameters );\n\tfragmentShader = replaceLightNums( fragmentShader, parameters );\n\n\tif ( ! material.isShaderMaterial ) {\n\n\t\tvertexShader = unrollLoops( vertexShader );\n\t\tfragmentShader = unrollLoops( fragmentShader );\n\n\t}\n\n\tvar vertexGlsl = prefixVertex + vertexShader;\n\tvar fragmentGlsl = prefixFragment + fragmentShader;\n\n\t// console.log( '*VERTEX*', vertexGlsl );\n\t// console.log( '*FRAGMENT*', fragmentGlsl );\n\n\tvar glVertexShader = WebGLShader( gl, gl.VERTEX_SHADER, vertexGlsl );\n\tvar glFragmentShader = WebGLShader( gl, gl.FRAGMENT_SHADER, fragmentGlsl );\n\n\tgl.attachShader( program, glVertexShader );\n\tgl.attachShader( program, glFragmentShader );\n\n\t// Force a particular attribute to index 0.\n\n\tif ( material.index0AttributeName !== undefined ) {\n\n\t\tgl.bindAttribLocation( program, 0, material.index0AttributeName );\n\n\t} else if ( parameters.morphTargets === true ) {\n\n\t\t// programs with morphTargets displace position out of attribute 0\n\t\tgl.bindAttribLocation( program, 0, 'position' );\n\n\t}\n\n\tgl.linkProgram( program );\n\n\tvar programLog = gl.getProgramInfoLog( program );\n\tvar vertexLog = gl.getShaderInfoLog( glVertexShader );\n\tvar fragmentLog = gl.getShaderInfoLog( glFragmentShader );\n\n\tvar runnable = true;\n\tvar haveDiagnostics = true;\n\n\t// console.log( '**VERTEX**', gl.getExtension( 'WEBGL_debug_shaders' ).getTranslatedShaderSource( glVertexShader ) );\n\t// console.log( '**FRAGMENT**', gl.getExtension( 'WEBGL_debug_shaders' ).getTranslatedShaderSource( glFragmentShader ) );\n\n\tif ( gl.getProgramParameter( program, gl.LINK_STATUS ) === false ) {\n\n\t\trunnable = false;\n\n\t\tconsole.error( 'THREE.WebGLProgram: shader error: ', gl.getError(), 'gl.VALIDATE_STATUS', gl.getProgramParameter( program, gl.VALIDATE_STATUS ), 'gl.getProgramInfoLog', programLog, vertexLog, fragmentLog );\n\n\t} else if ( programLog !== '' ) {\n\n\t\tconsole.warn( 'THREE.WebGLProgram: gl.getProgramInfoLog()', programLog );\n\n\t} else if ( vertexLog === '' || fragmentLog === '' ) {\n\n\t\thaveDiagnostics = false;\n\n\t}\n\n\tif ( haveDiagnostics ) {\n\n\t\tthis.diagnostics = {\n\n\t\t\trunnable: runnable,\n\t\t\tmaterial: material,\n\n\t\t\tprogramLog: programLog,\n\n\t\t\tvertexShader: {\n\n\t\t\t\tlog: vertexLog,\n\t\t\t\tprefix: prefixVertex\n\n\t\t\t},\n\n\t\t\tfragmentShader: {\n\n\t\t\t\tlog: fragmentLog,\n\t\t\t\tprefix: prefixFragment\n\n\t\t\t}\n\n\t\t};\n\n\t}\n\n\t// clean up\n\n\tgl.deleteShader( glVertexShader );\n\tgl.deleteShader( glFragmentShader );\n\n\t// set up caching for uniform locations\n\n\tvar cachedUniforms;\n\n\tthis.getUniforms = function() {\n\n\t\tif ( cachedUniforms === undefined ) {\n\n\t\t\tcachedUniforms =\n\t\t\t\t\tnew WebGLUniforms( gl, program, renderer );\n\n\t\t}\n\n\t\treturn cachedUniforms;\n\n\t};\n\n\t// set up caching for attribute locations\n\n\tvar cachedAttributes;\n\n\tthis.getAttributes = function() {\n\n\t\tif ( cachedAttributes === undefined ) {\n\n\t\t\tcachedAttributes = fetchAttributeLocations( gl, program );\n\n\t\t}\n\n\t\treturn cachedAttributes;\n\n\t};\n\n\t// free resource\n\n\tthis.destroy = function() {\n\n\t\tgl.deleteProgram( program );\n\t\tthis.program = undefined;\n\n\t};\n\n\t// DEPRECATED\n\n\tObject.defineProperties( this, {\n\n\t\tuniforms: {\n\t\t\tget: function() {\n\n\t\t\t\tconsole.warn( 'THREE.WebGLProgram: .uniforms is now .getUniforms().' );\n\t\t\t\treturn this.getUniforms();\n\n\t\t\t}\n\t\t},\n\n\t\tattributes: {\n\t\t\tget: function() {\n\n\t\t\t\tconsole.warn( 'THREE.WebGLProgram: .attributes is now .getAttributes().' );\n\t\t\t\treturn this.getAttributes();\n\n\t\t\t}\n\t\t}\n\n\t} );\n\n\n\t//\n\n\tthis.id = programIdCount ++;\n\tthis.code = code;\n\tthis.usedTimes = 1;\n\tthis.program = program;\n\tthis.vertexShader = glVertexShader;\n\tthis.fragmentShader = glFragmentShader;\n\n\treturn this;\n\n}\n\nexport { WebGLProgram };\n","/**\n * @author mrdoob / http://mrdoob.com/\n */\n\nimport { WebGLProgram } from './WebGLProgram';\nimport { BackSide, DoubleSide, FlatShading, CubeUVRefractionMapping, CubeUVReflectionMapping, GammaEncoding, LinearEncoding } from '../../constants';\n\nfunction WebGLPrograms( renderer, capabilities ) {\n\n\tvar programs = [];\n\n\tvar shaderIDs = {\n\t\tMeshDepthMaterial: 'depth',\n\t\tMeshNormalMaterial: 'normal',\n\t\tMeshBasicMaterial: 'basic',\n\t\tMeshLambertMaterial: 'lambert',\n\t\tMeshPhongMaterial: 'phong',\n\t\tMeshStandardMaterial: 'physical',\n\t\tMeshPhysicalMaterial: 'physical',\n\t\tLineBasicMaterial: 'basic',\n\t\tLineDashedMaterial: 'dashed',\n\t\tPointsMaterial: 'points'\n\t};\n\n\tvar parameterNames = [\n\t\t\"precision\", \"supportsVertexTextures\", \"map\", \"mapEncoding\", \"envMap\", \"envMapMode\", \"envMapEncoding\",\n\t\t\"lightMap\", \"aoMap\", \"emissiveMap\", \"emissiveMapEncoding\", \"bumpMap\", \"normalMap\", \"displacementMap\", \"specularMap\",\n\t\t\"roughnessMap\", \"metalnessMap\",\n\t\t\"alphaMap\", \"combine\", \"vertexColors\", \"fog\", \"useFog\", \"fogExp\",\n\t\t\"flatShading\", \"sizeAttenuation\", \"logarithmicDepthBuffer\", \"skinning\",\n\t\t\"maxBones\", \"useVertexTexture\", \"morphTargets\", \"morphNormals\",\n\t\t\"maxMorphTargets\", \"maxMorphNormals\", \"premultipliedAlpha\",\n\t\t\"numDirLights\", \"numPointLights\", \"numSpotLights\", \"numHemiLights\",\n\t\t\"shadowMapEnabled\", \"shadowMapType\", \"toneMapping\", 'physicallyCorrectLights',\n\t\t\"alphaTest\", \"doubleSided\", \"flipSided\", \"numClippingPlanes\", \"numClipIntersection\", \"depthPacking\"\n\t];\n\n\n\tfunction allocateBones( object ) {\n\n\t\tif ( capabilities.floatVertexTextures && object && object.skeleton && object.skeleton.useVertexTexture ) {\n\n\t\t\treturn 1024;\n\n\t\t} else {\n\n\t\t\t// default for when object is not specified\n\t\t\t// ( for example when prebuilding shader to be used with multiple objects )\n\t\t\t//\n\t\t\t// - leave some extra space for other uniforms\n\t\t\t// - limit here is ANGLE's 254 max uniform vectors\n\t\t\t// (up to 54 should be safe)\n\n\t\t\tvar nVertexUniforms = capabilities.maxVertexUniforms;\n\t\t\tvar nVertexMatrices = Math.floor( ( nVertexUniforms - 20 ) / 4 );\n\n\t\t\tvar maxBones = nVertexMatrices;\n\n\t\t\tif ( object !== undefined && (object && object.isSkinnedMesh) ) {\n\n\t\t\t\tmaxBones = Math.min( object.skeleton.bones.length, maxBones );\n\n\t\t\t\tif ( maxBones < object.skeleton.bones.length ) {\n\n\t\t\t\t\tconsole.warn( 'WebGLRenderer: too many bones - ' + object.skeleton.bones.length + ', this GPU supports just ' + maxBones + ' (try OpenGL instead of ANGLE)' );\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t\treturn maxBones;\n\n\t\t}\n\n\t}\n\n\tfunction getTextureEncodingFromMap( map, gammaOverrideLinear ) {\n\n\t\tvar encoding;\n\n\t\tif ( ! map ) {\n\n\t\t\tencoding = LinearEncoding;\n\n\t\t} else if ( (map && map.isTexture) ) {\n\n\t\t\tencoding = map.encoding;\n\n\t\t} else if ( (map && map.isWebGLRenderTarget) ) {\n\n\t\t\tconsole.warn( \"THREE.WebGLPrograms.getTextureEncodingFromMap: don't use render targets as textures. Use their .texture property instead.\" );\n\t\t\tencoding = map.texture.encoding;\n\n\t\t}\n\n\t\t// add backwards compatibility for WebGLRenderer.gammaInput/gammaOutput parameter, should probably be removed at some point.\n\t\tif ( encoding === LinearEncoding && gammaOverrideLinear ) {\n\n\t\t\tencoding = GammaEncoding;\n\n\t\t}\n\n\t\treturn encoding;\n\n\t}\n\n\tthis.getParameters = function ( material, lights, fog, nClipPlanes, nClipIntersection, object ) {\n\n\t\tvar shaderID = shaderIDs[ material.type ];\n\n\t\t// heuristics to create shader parameters according to lights in the scene\n\t\t// (not to blow over maxLights budget)\n\n\t\tvar maxBones = allocateBones( object );\n\t\tvar precision = renderer.getPrecision();\n\n\t\tif ( material.precision !== null ) {\n\n\t\t\tprecision = capabilities.getMaxPrecision( material.precision );\n\n\t\t\tif ( precision !== material.precision ) {\n\n\t\t\t\tconsole.warn( 'THREE.WebGLProgram.getParameters:', material.precision, 'not supported, using', precision, 'instead.' );\n\n\t\t\t}\n\n\t\t}\n\n\t\tvar currentRenderTarget = renderer.getCurrentRenderTarget();\n\n\t\tvar parameters = {\n\n\t\t\tshaderID: shaderID,\n\n\t\t\tprecision: precision,\n\t\t\tsupportsVertexTextures: capabilities.vertexTextures,\n\t\t\toutputEncoding: getTextureEncodingFromMap( ( ! currentRenderTarget ) ? null : currentRenderTarget.texture, renderer.gammaOutput ),\n\t\t\tmap: !! material.map,\n\t\t\tmapEncoding: getTextureEncodingFromMap( material.map, renderer.gammaInput ),\n\t\t\tenvMap: !! material.envMap,\n\t\t\tenvMapMode: material.envMap && material.envMap.mapping,\n\t\t\tenvMapEncoding: getTextureEncodingFromMap( material.envMap, renderer.gammaInput ),\n\t\t\tenvMapCubeUV: ( !! material.envMap ) && ( ( material.envMap.mapping === CubeUVReflectionMapping ) || ( material.envMap.mapping === CubeUVRefractionMapping ) ),\n\t\t\tlightMap: !! material.lightMap,\n\t\t\taoMap: !! material.aoMap,\n\t\t\temissiveMap: !! material.emissiveMap,\n\t\t\temissiveMapEncoding: getTextureEncodingFromMap( material.emissiveMap, renderer.gammaInput ),\n\t\t\tbumpMap: !! material.bumpMap,\n\t\t\tnormalMap: !! material.normalMap,\n\t\t\tdisplacementMap: !! material.displacementMap,\n\t\t\troughnessMap: !! material.roughnessMap,\n\t\t\tmetalnessMap: !! material.metalnessMap,\n\t\t\tspecularMap: !! material.specularMap,\n\t\t\talphaMap: !! material.alphaMap,\n\n\t\t\tcombine: material.combine,\n\n\t\t\tvertexColors: material.vertexColors,\n\n\t\t\tfog: !! fog,\n\t\t\tuseFog: material.fog,\n\t\t\tfogExp: (fog && fog.isFogExp2),\n\n\t\t\tflatShading: material.shading === FlatShading,\n\n\t\t\tsizeAttenuation: material.sizeAttenuation,\n\t\t\tlogarithmicDepthBuffer: capabilities.logarithmicDepthBuffer,\n\n\t\t\tskinning: material.skinning,\n\t\t\tmaxBones: maxBones,\n\t\t\tuseVertexTexture: capabilities.floatVertexTextures && object && object.skeleton && object.skeleton.useVertexTexture,\n\n\t\t\tmorphTargets: material.morphTargets,\n\t\t\tmorphNormals: material.morphNormals,\n\t\t\tmaxMorphTargets: renderer.maxMorphTargets,\n\t\t\tmaxMorphNormals: renderer.maxMorphNormals,\n\n\t\t\tnumDirLights: lights.directional.length,\n\t\t\tnumPointLights: lights.point.length,\n\t\t\tnumSpotLights: lights.spot.length,\n\t\t\tnumHemiLights: lights.hemi.length,\n\n\t\t\tnumClippingPlanes: nClipPlanes,\n\t\t\tnumClipIntersection: nClipIntersection,\n\n\t\t\tshadowMapEnabled: renderer.shadowMap.enabled && object.receiveShadow && lights.shadows.length > 0,\n\t\t\tshadowMapType: renderer.shadowMap.type,\n\n\t\t\ttoneMapping: renderer.toneMapping,\n\t\t\tphysicallyCorrectLights: renderer.physicallyCorrectLights,\n\n\t\t\tpremultipliedAlpha: material.premultipliedAlpha,\n\n\t\t\talphaTest: material.alphaTest,\n\t\t\tdoubleSided: material.side === DoubleSide,\n\t\t\tflipSided: material.side === BackSide,\n\n\t\t\tdepthPacking: ( material.depthPacking !== undefined ) ? material.depthPacking : false\n\n\t\t};\n\n\t\treturn parameters;\n\n\t};\n\n\tthis.getProgramCode = function ( material, parameters ) {\n\n\t\tvar array = [];\n\n\t\tif ( parameters.shaderID ) {\n\n\t\t\tarray.push( parameters.shaderID );\n\n\t\t} else {\n\n\t\t\tarray.push( material.fragmentShader );\n\t\t\tarray.push( material.vertexShader );\n\n\t\t}\n\n\t\tif ( material.defines !== undefined ) {\n\n\t\t\tfor ( var name in material.defines ) {\n\n\t\t\t\tarray.push( name );\n\t\t\t\tarray.push( material.defines[ name ] );\n\n\t\t\t}\n\n\t\t}\n\n\t\tfor ( var i = 0; i < parameterNames.length; i ++ ) {\n\n\t\t\tarray.push( parameters[ parameterNames[ i ] ] );\n\n\t\t}\n\n\t\treturn array.join();\n\n\t};\n\n\tthis.acquireProgram = function ( material, parameters, code ) {\n\n\t\tvar program;\n\n\t\t// Check if code has been already compiled\n\t\tfor ( var p = 0, pl = programs.length; p < pl; p ++ ) {\n\n\t\t\tvar programInfo = programs[ p ];\n\n\t\t\tif ( programInfo.code === code ) {\n\n\t\t\t\tprogram = programInfo;\n\t\t\t\t++ program.usedTimes;\n\n\t\t\t\tbreak;\n\n\t\t\t}\n\n\t\t}\n\n\t\tif ( program === undefined ) {\n\n\t\t\tprogram = new WebGLProgram( renderer, code, material, parameters );\n\t\t\tprograms.push( program );\n\n\t\t}\n\n\t\treturn program;\n\n\t};\n\n\tthis.releaseProgram = function( program ) {\n\n\t\tif ( -- program.usedTimes === 0 ) {\n\n\t\t\t// Remove from unordered set\n\t\t\tvar i = programs.indexOf( program );\n\t\t\tprograms[ i ] = programs[ programs.length - 1 ];\n\t\t\tprograms.pop();\n\n\t\t\t// Free WebGL resources\n\t\t\tprogram.destroy();\n\n\t\t}\n\n\t};\n\n\t// Exposed for resource monitoring & error feedback via renderer.info:\n\tthis.programs = programs;\n\n}\n\n\nexport { WebGLPrograms };\n","/**\n * @author mrdoob / http://mrdoob.com/\n */\n\nimport { BufferGeometry } from '../../core/BufferGeometry';\n\nfunction WebGLGeometries( gl, properties, info ) {\n\n\tvar geometries = {};\n\n\tfunction onGeometryDispose( event ) {\n\n\t\tvar geometry = event.target;\n\t\tvar buffergeometry = geometries[ geometry.id ];\n\n\t\tif ( buffergeometry.index !== null ) {\n\n\t\t\tdeleteAttribute( buffergeometry.index );\n\n\t\t}\n\n\t\tdeleteAttributes( buffergeometry.attributes );\n\n\t\tgeometry.removeEventListener( 'dispose', onGeometryDispose );\n\n\t\tdelete geometries[ geometry.id ];\n\n\t\t// TODO\n\n\t\tvar property = properties.get( geometry );\n\n\t\tif ( property.wireframe ) {\n\n\t\t\tdeleteAttribute( property.wireframe );\n\n\t\t}\n\n\t\tproperties.delete( geometry );\n\n\t\tvar bufferproperty = properties.get( buffergeometry );\n\n\t\tif ( bufferproperty.wireframe ) {\n\n\t\t\tdeleteAttribute( bufferproperty.wireframe );\n\n\t\t}\n\n\t\tproperties.delete( buffergeometry );\n\n\t\t//\n\n\t\tinfo.memory.geometries --;\n\n\t}\n\n\tfunction getAttributeBuffer( attribute ) {\n\n\t\tif ( attribute.isInterleavedBufferAttribute ) {\n\n\t\t\treturn properties.get( attribute.data ).__webglBuffer;\n\n\t\t}\n\n\t\treturn properties.get( attribute ).__webglBuffer;\n\n\t}\n\n\tfunction deleteAttribute( attribute ) {\n\n\t\tvar buffer = getAttributeBuffer( attribute );\n\n\t\tif ( buffer !== undefined ) {\n\n\t\t\tgl.deleteBuffer( buffer );\n\t\t\tremoveAttributeBuffer( attribute );\n\n\t\t}\n\n\t}\n\n\tfunction deleteAttributes( attributes ) {\n\n\t\tfor ( var name in attributes ) {\n\n\t\t\tdeleteAttribute( attributes[ name ] );\n\n\t\t}\n\n\t}\n\n\tfunction removeAttributeBuffer( attribute ) {\n\n\t\tif ( attribute.isInterleavedBufferAttribute ) {\n\n\t\t\tproperties.delete( attribute.data );\n\n\t\t} else {\n\n\t\t\tproperties.delete( attribute );\n\n\t\t}\n\n\t}\n\n\treturn {\n\n\t\tget: function ( object ) {\n\n\t\t\tvar geometry = object.geometry;\n\n\t\t\tif ( geometries[ geometry.id ] !== undefined ) {\n\n\t\t\t\treturn geometries[ geometry.id ];\n\n\t\t\t}\n\n\t\t\tgeometry.addEventListener( 'dispose', onGeometryDispose );\n\n\t\t\tvar buffergeometry;\n\n\t\t\tif ( geometry.isBufferGeometry ) {\n\n\t\t\t\tbuffergeometry = geometry;\n\n\t\t\t} else if ( geometry.isGeometry ) {\n\n\t\t\t\tif ( geometry._bufferGeometry === undefined ) {\n\n\t\t\t\t\tgeometry._bufferGeometry = new BufferGeometry().setFromObject( object );\n\n\t\t\t\t}\n\n\t\t\t\tbuffergeometry = geometry._bufferGeometry;\n\n\t\t\t}\n\n\t\t\tgeometries[ geometry.id ] = buffergeometry;\n\n\t\t\tinfo.memory.geometries ++;\n\n\t\t\treturn buffergeometry;\n\n\t\t}\n\n\t};\n\n}\n\n\nexport { WebGLGeometries };\n","/**\n * @author mrdoob / http://mrdoob.com/\n */\n\nimport { BufferAttribute } from '../../core/BufferAttribute';\nimport { WebGLGeometries } from './WebGLGeometries';\n\nfunction WebGLObjects( gl, properties, info ) {\n\n\tvar geometries = new WebGLGeometries( gl, properties, info );\n\n\t//\n\n\tfunction update( object ) {\n\n\t\t// TODO: Avoid updating twice (when using shadowMap). Maybe add frame counter.\n\n\t\tvar geometry = geometries.get( object );\n\n\t\tif ( object.geometry.isGeometry ) {\n\n\t\t\tgeometry.updateFromObject( object );\n\n\t\t}\n\n\t\tvar index = geometry.index;\n\t\tvar attributes = geometry.attributes;\n\n\t\tif ( index !== null ) {\n\n\t\t\tupdateAttribute( index, gl.ELEMENT_ARRAY_BUFFER );\n\n\t\t}\n\n\t\tfor ( var name in attributes ) {\n\n\t\t\tupdateAttribute( attributes[ name ], gl.ARRAY_BUFFER );\n\n\t\t}\n\n\t\t// morph targets\n\n\t\tvar morphAttributes = geometry.morphAttributes;\n\n\t\tfor ( var name in morphAttributes ) {\n\n\t\t\tvar array = morphAttributes[ name ];\n\n\t\t\tfor ( var i = 0, l = array.length; i < l; i ++ ) {\n\n\t\t\t\tupdateAttribute( array[ i ], gl.ARRAY_BUFFER );\n\n\t\t\t}\n\n\t\t}\n\n\t\treturn geometry;\n\n\t}\n\n\tfunction updateAttribute( attribute, bufferType ) {\n\n\t\tvar data = ( attribute.isInterleavedBufferAttribute ) ? attribute.data : attribute;\n\n\t\tvar attributeProperties = properties.get( data );\n\n\t\tif ( attributeProperties.__webglBuffer === undefined ) {\n\n\t\t\tcreateBuffer( attributeProperties, data, bufferType );\n\n\t\t} else if ( attributeProperties.version !== data.version ) {\n\n\t\t\tupdateBuffer( attributeProperties, data, bufferType );\n\n\t\t}\n\n\t}\n\n\tfunction createBuffer( attributeProperties, data, bufferType ) {\n\n\t\tattributeProperties.__webglBuffer = gl.createBuffer();\n\t\tgl.bindBuffer( bufferType, attributeProperties.__webglBuffer );\n\n\t\tvar usage = data.dynamic ? gl.DYNAMIC_DRAW : gl.STATIC_DRAW;\n\n\t\tgl.bufferData( bufferType, data.array, usage );\n\n\t\tattributeProperties.version = data.version;\n\n\t}\n\n\tfunction updateBuffer( attributeProperties, data, bufferType ) {\n\n\t\tgl.bindBuffer( bufferType, attributeProperties.__webglBuffer );\n\n\t\tif ( data.dynamic === false ) {\n\n\t\t\tgl.bufferData( bufferType, data.array, gl.STATIC_DRAW );\n\n\t\t} else if ( data.updateRange.count === - 1 ) {\n\n\t\t\t// Not using update ranges\n\n\t\t\tgl.bufferSubData( bufferType, 0, data.array );\n\n\t\t} else if ( data.updateRange.count === 0 ) {\n\n\t\t\tconsole.error( 'THREE.WebGLObjects.updateBuffer: dynamic THREE.BufferAttribute marked as needsUpdate but updateRange.count is 0, ensure you are using set methods or updating manually.' );\n\n\t\t} else {\n\n\t\t\tgl.bufferSubData( bufferType, data.updateRange.offset * data.array.BYTES_PER_ELEMENT,\n\t\t\t\t\t\t\t data.array.subarray( data.updateRange.offset, data.updateRange.offset + data.updateRange.count ) );\n\n\t\t\tdata.updateRange.count = 0; // reset range\n\n\t\t}\n\n\t\tattributeProperties.version = data.version;\n\n\t}\n\n\tfunction getAttributeBuffer( attribute ) {\n\n\t\tif ( attribute.isInterleavedBufferAttribute ) {\n\n\t\t\treturn properties.get( attribute.data ).__webglBuffer;\n\n\t\t}\n\n\t\treturn properties.get( attribute ).__webglBuffer;\n\n\t}\n\n\tfunction getWireframeAttribute( geometry ) {\n\n\t\tvar property = properties.get( geometry );\n\n\t\tif ( property.wireframe !== undefined ) {\n\n\t\t\treturn property.wireframe;\n\n\t\t}\n\n\t\tvar indices = [];\n\n\t\tvar index = geometry.index;\n\t\tvar attributes = geometry.attributes;\n\t\tvar position = attributes.position;\n\n\t\t// console.time( 'wireframe' );\n\n\t\tif ( index !== null ) {\n\n\t\t\tvar edges = {};\n\t\t\tvar array = index.array;\n\n\t\t\tfor ( var i = 0, l = array.length; i < l; i += 3 ) {\n\n\t\t\t\tvar a = array[ i + 0 ];\n\t\t\t\tvar b = array[ i + 1 ];\n\t\t\t\tvar c = array[ i + 2 ];\n\n\t\t\t\tindices.push( a, b, b, c, c, a );\n\n\t\t\t}\n\n\t\t} else {\n\n\t\t\tvar array = attributes.position.array;\n\n\t\t\tfor ( var i = 0, l = ( array.length / 3 ) - 1; i < l; i += 3 ) {\n\n\t\t\t\tvar a = i + 0;\n\t\t\t\tvar b = i + 1;\n\t\t\t\tvar c = i + 2;\n\n\t\t\t\tindices.push( a, b, b, c, c, a );\n\n\t\t\t}\n\n\t\t}\n\n\t\t// console.timeEnd( 'wireframe' );\n\n\t\tvar TypeArray = position.count > 65535 ? Uint32Array : Uint16Array;\n\t\tvar attribute = new BufferAttribute( new TypeArray( indices ), 1 );\n\n\t\tupdateAttribute( attribute, gl.ELEMENT_ARRAY_BUFFER );\n\n\t\tproperty.wireframe = attribute;\n\n\t\treturn attribute;\n\n\t}\n\n\treturn {\n\n\t\tgetAttributeBuffer: getAttributeBuffer,\n\t\tgetWireframeAttribute: getWireframeAttribute,\n\n\t\tupdate: update\n\n\t};\n\n}\n\n\nexport { WebGLObjects };\n","/**\n * @author mrdoob / http://mrdoob.com/\n */\n\nimport { LinearFilter, NearestFilter, RGBFormat, RGBAFormat, DepthFormat, DepthStencilFormat, FloatType, HalfFloatType, ClampToEdgeWrapping, NearestMipMapLinearFilter, NearestMipMapNearestFilter } from '../../constants';\nimport { _Math } from '../../math/Math';\n\nfunction WebGLTextures( _gl, extensions, state, properties, capabilities, paramThreeToGL, info ) {\n\n\tvar _infoMemory = info.memory;\n\tvar _isWebGL2 = ( typeof WebGL2RenderingContext !== 'undefined' && _gl instanceof WebGL2RenderingContext );\n\n\t//\n\n\tfunction clampToMaxSize( image, maxSize ) {\n\n\t\tif ( image.width > maxSize || image.height > maxSize ) {\n\n\t\t\t// Warning: Scaling through the canvas will only work with images that use\n\t\t\t// premultiplied alpha.\n\n\t\t\tvar scale = maxSize / Math.max( image.width, image.height );\n\n\t\t\tvar canvas = document.createElementNS( 'http://www.w3.org/1999/xhtml', 'canvas' );\n\t\t\tcanvas.width = Math.floor( image.width * scale );\n\t\t\tcanvas.height = Math.floor( image.height * scale );\n\n\t\t\tvar context = canvas.getContext( '2d' );\n\t\t\tcontext.drawImage( image, 0, 0, image.width, image.height, 0, 0, canvas.width, canvas.height );\n\n\t\t\tconsole.warn( 'THREE.WebGLRenderer: image is too big (' + image.width + 'x' + image.height + '). Resized to ' + canvas.width + 'x' + canvas.height, image );\n\n\t\t\treturn canvas;\n\n\t\t}\n\n\t\treturn image;\n\n\t}\n\n\tfunction isPowerOfTwo( image ) {\n\n\t\treturn _Math.isPowerOfTwo( image.width ) && _Math.isPowerOfTwo( image.height );\n\n\t}\n\n\tfunction makePowerOfTwo( image ) {\n\n\t\tif ( image instanceof HTMLImageElement || image instanceof HTMLCanvasElement ) {\n\n\t\t\tvar canvas = document.createElementNS( 'http://www.w3.org/1999/xhtml', 'canvas' );\n\t\t\tcanvas.width = _Math.nearestPowerOfTwo( image.width );\n\t\t\tcanvas.height = _Math.nearestPowerOfTwo( image.height );\n\n\t\t\tvar context = canvas.getContext( '2d' );\n\t\t\tcontext.drawImage( image, 0, 0, canvas.width, canvas.height );\n\n\t\t\tconsole.warn( 'THREE.WebGLRenderer: image is not power of two (' + image.width + 'x' + image.height + '). Resized to ' + canvas.width + 'x' + canvas.height, image );\n\n\t\t\treturn canvas;\n\n\t\t}\n\n\t\treturn image;\n\n\t}\n\n\tfunction textureNeedsPowerOfTwo( texture ) {\n\n\t\tif ( texture.wrapS !== ClampToEdgeWrapping || texture.wrapT !== ClampToEdgeWrapping ) return true;\n\t\tif ( texture.minFilter !== NearestFilter && texture.minFilter !== LinearFilter ) return true;\n\n\t\treturn false;\n\n\t}\n\n\t// Fallback filters for non-power-of-2 textures\n\n\tfunction filterFallback( f ) {\n\n\t\tif ( f === NearestFilter || f === NearestMipMapNearestFilter || f === NearestMipMapLinearFilter ) {\n\n\t\t\treturn _gl.NEAREST;\n\n\t\t}\n\n\t\treturn _gl.LINEAR;\n\n\t}\n\n\t//\n\n\tfunction onTextureDispose( event ) {\n\n\t\tvar texture = event.target;\n\n\t\ttexture.removeEventListener( 'dispose', onTextureDispose );\n\n\t\tdeallocateTexture( texture );\n\n\t\t_infoMemory.textures --;\n\n\n\t}\n\n\tfunction onRenderTargetDispose( event ) {\n\n\t\tvar renderTarget = event.target;\n\n\t\trenderTarget.removeEventListener( 'dispose', onRenderTargetDispose );\n\n\t\tdeallocateRenderTarget( renderTarget );\n\n\t\t_infoMemory.textures --;\n\n\t}\n\n\t//\n\n\tfunction deallocateTexture( texture ) {\n\n\t\tvar textureProperties = properties.get( texture );\n\n\t\tif ( texture.image && textureProperties.__image__webglTextureCube ) {\n\n\t\t\t// cube texture\n\n\t\t\t_gl.deleteTexture( textureProperties.__image__webglTextureCube );\n\n\t\t} else {\n\n\t\t\t// 2D texture\n\n\t\t\tif ( textureProperties.__webglInit === undefined ) return;\n\n\t\t\t_gl.deleteTexture( textureProperties.__webglTexture );\n\n\t\t}\n\n\t\t// remove all webgl properties\n\t\tproperties.delete( texture );\n\n\t}\n\n\tfunction deallocateRenderTarget( renderTarget ) {\n\n\t\tvar renderTargetProperties = properties.get( renderTarget );\n\t\tvar textureProperties = properties.get( renderTarget.texture );\n\n\t\tif ( ! renderTarget ) return;\n\n\t\tif ( textureProperties.__webglTexture !== undefined ) {\n\n\t\t\t_gl.deleteTexture( textureProperties.__webglTexture );\n\n\t\t}\n\n\t\tif ( renderTarget.depthTexture ) {\n\n\t\t\trenderTarget.depthTexture.dispose();\n\n\t\t}\n\n\t\tif ( (renderTarget && renderTarget.isWebGLRenderTargetCube) ) {\n\n\t\t\tfor ( var i = 0; i < 6; i ++ ) {\n\n\t\t\t\t_gl.deleteFramebuffer( renderTargetProperties.__webglFramebuffer[ i ] );\n\t\t\t\tif ( renderTargetProperties.__webglDepthbuffer ) _gl.deleteRenderbuffer( renderTargetProperties.__webglDepthbuffer[ i ] );\n\n\t\t\t}\n\n\t\t} else {\n\n\t\t\t_gl.deleteFramebuffer( renderTargetProperties.__webglFramebuffer );\n\t\t\tif ( renderTargetProperties.__webglDepthbuffer ) _gl.deleteRenderbuffer( renderTargetProperties.__webglDepthbuffer );\n\n\t\t}\n\n\t\tproperties.delete( renderTarget.texture );\n\t\tproperties.delete( renderTarget );\n\n\t}\n\n\t//\n\n\n\n\tfunction setTexture2D( texture, slot ) {\n\n\t\tvar textureProperties = properties.get( texture );\n\n\t\tif ( texture.version > 0 && textureProperties.__version !== texture.version ) {\n\n\t\t\tvar image = texture.image;\n\n\t\t\tif ( image === undefined ) {\n\n\t\t\t\tconsole.warn( 'THREE.WebGLRenderer: Texture marked for update but image is undefined', texture );\n\n\t\t\t} else if ( image.complete === false ) {\n\n\t\t\t\tconsole.warn( 'THREE.WebGLRenderer: Texture marked for update but image is incomplete', texture );\n\n\t\t\t} else {\n\n\t\t\t\tuploadTexture( textureProperties, texture, slot );\n\t\t\t\treturn;\n\n\t\t\t}\n\n\t\t}\n\n\t\tstate.activeTexture( _gl.TEXTURE0 + slot );\n\t\tstate.bindTexture( _gl.TEXTURE_2D, textureProperties.__webglTexture );\n\n\t}\n\n\tfunction setTextureCube( texture, slot ) {\n\n\t\tvar textureProperties = properties.get( texture );\n\n\t\tif ( texture.image.length === 6 ) {\n\n\t\t\tif ( texture.version > 0 && textureProperties.__version !== texture.version ) {\n\n\t\t\t\tif ( ! textureProperties.__image__webglTextureCube ) {\n\n\t\t\t\t\ttexture.addEventListener( 'dispose', onTextureDispose );\n\n\t\t\t\t\ttextureProperties.__image__webglTextureCube = _gl.createTexture();\n\n\t\t\t\t\t_infoMemory.textures ++;\n\n\t\t\t\t}\n\n\t\t\t\tstate.activeTexture( _gl.TEXTURE0 + slot );\n\t\t\t\tstate.bindTexture( _gl.TEXTURE_CUBE_MAP, textureProperties.__image__webglTextureCube );\n\n\t\t\t\t_gl.pixelStorei( _gl.UNPACK_FLIP_Y_WEBGL, texture.flipY );\n\n\t\t\t\tvar isCompressed = (texture && texture.isCompressedTexture);\n\t\t\t\tvar isDataTexture = (texture.image[ 0 ] && texture.image[ 0 ].isDataTexture);\n\n\t\t\t\tvar cubeImage = [];\n\n\t\t\t\tfor ( var i = 0; i < 6; i ++ ) {\n\n\t\t\t\t\tif ( ! isCompressed && ! isDataTexture ) {\n\n\t\t\t\t\t\tcubeImage[ i ] = clampToMaxSize( texture.image[ i ], capabilities.maxCubemapSize );\n\n\t\t\t\t\t} else {\n\n\t\t\t\t\t\tcubeImage[ i ] = isDataTexture ? texture.image[ i ].image : texture.image[ i ];\n\n\t\t\t\t\t}\n\n\t\t\t\t}\n\n\t\t\t\tvar image = cubeImage[ 0 ],\n\t\t\t\tisPowerOfTwoImage = isPowerOfTwo( image ),\n\t\t\t\tglFormat = paramThreeToGL( texture.format ),\n\t\t\t\tglType = paramThreeToGL( texture.type );\n\n\t\t\t\tsetTextureParameters( _gl.TEXTURE_CUBE_MAP, texture, isPowerOfTwoImage );\n\n\t\t\t\tfor ( var i = 0; i < 6; i ++ ) {\n\n\t\t\t\t\tif ( ! isCompressed ) {\n\n\t\t\t\t\t\tif ( isDataTexture ) {\n\n\t\t\t\t\t\t\tstate.texImage2D( _gl.TEXTURE_CUBE_MAP_POSITIVE_X + i, 0, glFormat, cubeImage[ i ].width, cubeImage[ i ].height, 0, glFormat, glType, cubeImage[ i ].data );\n\n\t\t\t\t\t\t} else {\n\n\t\t\t\t\t\t\tstate.texImage2D( _gl.TEXTURE_CUBE_MAP_POSITIVE_X + i, 0, glFormat, glFormat, glType, cubeImage[ i ] );\n\n\t\t\t\t\t\t}\n\n\t\t\t\t\t} else {\n\n\t\t\t\t\t\tvar mipmap, mipmaps = cubeImage[ i ].mipmaps;\n\n\t\t\t\t\t\tfor ( var j = 0, jl = mipmaps.length; j < jl; j ++ ) {\n\n\t\t\t\t\t\t\tmipmap = mipmaps[ j ];\n\n\t\t\t\t\t\t\tif ( texture.format !== RGBAFormat && texture.format !== RGBFormat ) {\n\n\t\t\t\t\t\t\t\tif ( state.getCompressedTextureFormats().indexOf( glFormat ) > - 1 ) {\n\n\t\t\t\t\t\t\t\t\tstate.compressedTexImage2D( _gl.TEXTURE_CUBE_MAP_POSITIVE_X + i, j, glFormat, mipmap.width, mipmap.height, 0, mipmap.data );\n\n\t\t\t\t\t\t\t\t} else {\n\n\t\t\t\t\t\t\t\t\tconsole.warn( \"THREE.WebGLRenderer: Attempt to load unsupported compressed texture format in .setTextureCube()\" );\n\n\t\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\t} else {\n\n\t\t\t\t\t\t\t\tstate.texImage2D( _gl.TEXTURE_CUBE_MAP_POSITIVE_X + i, j, glFormat, mipmap.width, mipmap.height, 0, glFormat, glType, mipmap.data );\n\n\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t}\n\n\t\t\t\t\t}\n\n\t\t\t\t}\n\n\t\t\t\tif ( texture.generateMipmaps && isPowerOfTwoImage ) {\n\n\t\t\t\t\t_gl.generateMipmap( _gl.TEXTURE_CUBE_MAP );\n\n\t\t\t\t}\n\n\t\t\t\ttextureProperties.__version = texture.version;\n\n\t\t\t\tif ( texture.onUpdate ) texture.onUpdate( texture );\n\n\t\t\t} else {\n\n\t\t\t\tstate.activeTexture( _gl.TEXTURE0 + slot );\n\t\t\t\tstate.bindTexture( _gl.TEXTURE_CUBE_MAP, textureProperties.__image__webglTextureCube );\n\n\t\t\t}\n\n\t\t}\n\n\t}\n\n\tfunction setTextureCubeDynamic( texture, slot ) {\n\n\t\tstate.activeTexture( _gl.TEXTURE0 + slot );\n\t\tstate.bindTexture( _gl.TEXTURE_CUBE_MAP, properties.get( texture ).__webglTexture );\n\n\t}\n\n\tfunction setTextureParameters( textureType, texture, isPowerOfTwoImage ) {\n\n\t\tvar extension;\n\n\t\tif ( isPowerOfTwoImage ) {\n\n\t\t\t_gl.texParameteri( textureType, _gl.TEXTURE_WRAP_S, paramThreeToGL( texture.wrapS ) );\n\t\t\t_gl.texParameteri( textureType, _gl.TEXTURE_WRAP_T, paramThreeToGL( texture.wrapT ) );\n\n\t\t\t_gl.texParameteri( textureType, _gl.TEXTURE_MAG_FILTER, paramThreeToGL( texture.magFilter ) );\n\t\t\t_gl.texParameteri( textureType, _gl.TEXTURE_MIN_FILTER, paramThreeToGL( texture.minFilter ) );\n\n\t\t} else {\n\n\t\t\t_gl.texParameteri( textureType, _gl.TEXTURE_WRAP_S, _gl.CLAMP_TO_EDGE );\n\t\t\t_gl.texParameteri( textureType, _gl.TEXTURE_WRAP_T, _gl.CLAMP_TO_EDGE );\n\n\t\t\tif ( texture.wrapS !== ClampToEdgeWrapping || texture.wrapT !== ClampToEdgeWrapping ) {\n\n\t\t\t\tconsole.warn( 'THREE.WebGLRenderer: Texture is not power of two. Texture.wrapS and Texture.wrapT should be set to THREE.ClampToEdgeWrapping.', texture );\n\n\t\t\t}\n\n\t\t\t_gl.texParameteri( textureType, _gl.TEXTURE_MAG_FILTER, filterFallback( texture.magFilter ) );\n\t\t\t_gl.texParameteri( textureType, _gl.TEXTURE_MIN_FILTER, filterFallback( texture.minFilter ) );\n\n\t\t\tif ( texture.minFilter !== NearestFilter && texture.minFilter !== LinearFilter ) {\n\n\t\t\t\tconsole.warn( 'THREE.WebGLRenderer: Texture is not power of two. Texture.minFilter should be set to THREE.NearestFilter or THREE.LinearFilter.', texture );\n\n\t\t\t}\n\n\t\t}\n\n\t\textension = extensions.get( 'EXT_texture_filter_anisotropic' );\n\n\t\tif ( extension ) {\n\n\t\t\tif ( texture.type === FloatType && extensions.get( 'OES_texture_float_linear' ) === null ) return;\n\t\t\tif ( texture.type === HalfFloatType && extensions.get( 'OES_texture_half_float_linear' ) === null ) return;\n\n\t\t\tif ( texture.anisotropy > 1 || properties.get( texture ).__currentAnisotropy ) {\n\n\t\t\t\t_gl.texParameterf( textureType, extension.TEXTURE_MAX_ANISOTROPY_EXT, Math.min( texture.anisotropy, capabilities.getMaxAnisotropy() ) );\n\t\t\t\tproperties.get( texture ).__currentAnisotropy = texture.anisotropy;\n\n\t\t\t}\n\n\t\t}\n\n\t}\n\n\tfunction uploadTexture( textureProperties, texture, slot ) {\n\n\t\tif ( textureProperties.__webglInit === undefined ) {\n\n\t\t\ttextureProperties.__webglInit = true;\n\n\t\t\ttexture.addEventListener( 'dispose', onTextureDispose );\n\n\t\t\ttextureProperties.__webglTexture = _gl.createTexture();\n\n\t\t\t_infoMemory.textures ++;\n\n\t\t}\n\n\t\tstate.activeTexture( _gl.TEXTURE0 + slot );\n\t\tstate.bindTexture( _gl.TEXTURE_2D, textureProperties.__webglTexture );\n\n\t\t_gl.pixelStorei( _gl.UNPACK_FLIP_Y_WEBGL, texture.flipY );\n\t\t_gl.pixelStorei( _gl.UNPACK_PREMULTIPLY_ALPHA_WEBGL, texture.premultiplyAlpha );\n\t\t_gl.pixelStorei( _gl.UNPACK_ALIGNMENT, texture.unpackAlignment );\n\n\t\tvar image = clampToMaxSize( texture.image, capabilities.maxTextureSize );\n\n\t\tif ( textureNeedsPowerOfTwo( texture ) && isPowerOfTwo( image ) === false ) {\n\n\t\t\timage = makePowerOfTwo( image );\n\n\t\t}\n\n\t\tvar isPowerOfTwoImage = isPowerOfTwo( image ),\n\t\tglFormat = paramThreeToGL( texture.format ),\n\t\tglType = paramThreeToGL( texture.type );\n\n\t\tsetTextureParameters( _gl.TEXTURE_2D, texture, isPowerOfTwoImage );\n\n\t\tvar mipmap, mipmaps = texture.mipmaps;\n\n\t\tif ( (texture && texture.isDepthTexture) ) {\n\n\t\t\t// populate depth texture with dummy data\n\n\t\t\tvar internalFormat = _gl.DEPTH_COMPONENT;\n\n\t\t\tif ( texture.type === FloatType ) {\n\n\t\t\t\tif ( !_isWebGL2 ) throw new Error('Float Depth Texture only supported in WebGL2.0');\n\t\t\t\tinternalFormat = _gl.DEPTH_COMPONENT32F;\n\n\t\t\t} else if ( _isWebGL2 ) {\n\n\t\t\t\t// WebGL 2.0 requires signed internalformat for glTexImage2D\n\t\t\t\tinternalFormat = _gl.DEPTH_COMPONENT16;\n\n\t\t\t}\n\n\t\t\t// Depth stencil textures need the DEPTH_STENCIL internal format\n\t\t\t// (https://www.khronos.org/registry/webgl/extensions/WEBGL_depth_texture/)\n\t\t\tif ( texture.format === DepthStencilFormat ) {\n\n\t\t\t\tinternalFormat = _gl.DEPTH_STENCIL;\n\n\t\t\t}\n\n\t\t\tstate.texImage2D( _gl.TEXTURE_2D, 0, internalFormat, image.width, image.height, 0, glFormat, glType, null );\n\n\t\t} else if ( (texture && texture.isDataTexture) ) {\n\n\t\t\t// use manually created mipmaps if available\n\t\t\t// if there are no manual mipmaps\n\t\t\t// set 0 level mipmap and then use GL to generate other mipmap levels\n\n\t\t\tif ( mipmaps.length > 0 && isPowerOfTwoImage ) {\n\n\t\t\t\tfor ( var i = 0, il = mipmaps.length; i < il; i ++ ) {\n\n\t\t\t\t\tmipmap = mipmaps[ i ];\n\t\t\t\t\tstate.texImage2D( _gl.TEXTURE_2D, i, glFormat, mipmap.width, mipmap.height, 0, glFormat, glType, mipmap.data );\n\n\t\t\t\t}\n\n\t\t\t\ttexture.generateMipmaps = false;\n\n\t\t\t} else {\n\n\t\t\t\tstate.texImage2D( _gl.TEXTURE_2D, 0, glFormat, image.width, image.height, 0, glFormat, glType, image.data );\n\n\t\t\t}\n\n\t\t} else if ( (texture && texture.isCompressedTexture) ) {\n\n\t\t\tfor ( var i = 0, il = mipmaps.length; i < il; i ++ ) {\n\n\t\t\t\tmipmap = mipmaps[ i ];\n\n\t\t\t\tif ( texture.format !== RGBAFormat && texture.format !== RGBFormat ) {\n\n\t\t\t\t\tif ( state.getCompressedTextureFormats().indexOf( glFormat ) > - 1 ) {\n\n\t\t\t\t\t\tstate.compressedTexImage2D( _gl.TEXTURE_2D, i, glFormat, mipmap.width, mipmap.height, 0, mipmap.data );\n\n\t\t\t\t\t} else {\n\n\t\t\t\t\t\tconsole.warn( \"THREE.WebGLRenderer: Attempt to load unsupported compressed texture format in .uploadTexture()\" );\n\n\t\t\t\t\t}\n\n\t\t\t\t} else {\n\n\t\t\t\t\tstate.texImage2D( _gl.TEXTURE_2D, i, glFormat, mipmap.width, mipmap.height, 0, glFormat, glType, mipmap.data );\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t} else {\n\n\t\t\t// regular Texture (image, video, canvas)\n\n\t\t\t// use manually created mipmaps if available\n\t\t\t// if there are no manual mipmaps\n\t\t\t// set 0 level mipmap and then use GL to generate other mipmap levels\n\n\t\t\tif ( mipmaps.length > 0 && isPowerOfTwoImage ) {\n\n\t\t\t\tfor ( var i = 0, il = mipmaps.length; i < il; i ++ ) {\n\n\t\t\t\t\tmipmap = mipmaps[ i ];\n\t\t\t\t\tstate.texImage2D( _gl.TEXTURE_2D, i, glFormat, glFormat, glType, mipmap );\n\n\t\t\t\t}\n\n\t\t\t\ttexture.generateMipmaps = false;\n\n\t\t\t} else {\n\n\t\t\t\tstate.texImage2D( _gl.TEXTURE_2D, 0, glFormat, glFormat, glType, image );\n\n\t\t\t}\n\n\t\t}\n\n\t\tif ( texture.generateMipmaps && isPowerOfTwoImage ) _gl.generateMipmap( _gl.TEXTURE_2D );\n\n\t\ttextureProperties.__version = texture.version;\n\n\t\tif ( texture.onUpdate ) texture.onUpdate( texture );\n\n\t}\n\n\t// Render targets\n\n\t// Setup storage for target texture and bind it to correct framebuffer\n\tfunction setupFrameBufferTexture( framebuffer, renderTarget, attachment, textureTarget ) {\n\n\t\tvar glFormat = paramThreeToGL( renderTarget.texture.format );\n\t\tvar glType = paramThreeToGL( renderTarget.texture.type );\n\t\tstate.texImage2D( textureTarget, 0, glFormat, renderTarget.width, renderTarget.height, 0, glFormat, glType, null );\n\t\t_gl.bindFramebuffer( _gl.FRAMEBUFFER, framebuffer );\n\t\t_gl.framebufferTexture2D( _gl.FRAMEBUFFER, attachment, textureTarget, properties.get( renderTarget.texture ).__webglTexture, 0 );\n\t\t_gl.bindFramebuffer( _gl.FRAMEBUFFER, null );\n\n\t}\n\n\t// Setup storage for internal depth/stencil buffers and bind to correct framebuffer\n\tfunction setupRenderBufferStorage( renderbuffer, renderTarget ) {\n\n\t\t_gl.bindRenderbuffer( _gl.RENDERBUFFER, renderbuffer );\n\n\t\tif ( renderTarget.depthBuffer && ! renderTarget.stencilBuffer ) {\n\n\t\t\t_gl.renderbufferStorage( _gl.RENDERBUFFER, _gl.DEPTH_COMPONENT16, renderTarget.width, renderTarget.height );\n\t\t\t_gl.framebufferRenderbuffer( _gl.FRAMEBUFFER, _gl.DEPTH_ATTACHMENT, _gl.RENDERBUFFER, renderbuffer );\n\n\t\t} else if ( renderTarget.depthBuffer && renderTarget.stencilBuffer ) {\n\n\t\t\t_gl.renderbufferStorage( _gl.RENDERBUFFER, _gl.DEPTH_STENCIL, renderTarget.width, renderTarget.height );\n\t\t\t_gl.framebufferRenderbuffer( _gl.FRAMEBUFFER, _gl.DEPTH_STENCIL_ATTACHMENT, _gl.RENDERBUFFER, renderbuffer );\n\n\t\t} else {\n\n\t\t\t// FIXME: We don't support !depth !stencil\n\t\t\t_gl.renderbufferStorage( _gl.RENDERBUFFER, _gl.RGBA4, renderTarget.width, renderTarget.height );\n\n\t\t}\n\n\t\t_gl.bindRenderbuffer( _gl.RENDERBUFFER, null );\n\n\t}\n\n\t// Setup resources for a Depth Texture for a FBO (needs an extension)\n\tfunction setupDepthTexture( framebuffer, renderTarget ) {\n\n\t\tvar isCube = ( (renderTarget && renderTarget.isWebGLRenderTargetCube) );\n\t\tif ( isCube ) throw new Error('Depth Texture with cube render targets is not supported!');\n\n\t\t_gl.bindFramebuffer( _gl.FRAMEBUFFER, framebuffer );\n\n\t\tif ( !( (renderTarget.depthTexture && renderTarget.depthTexture.isDepthTexture) ) ) {\n\n\t\t\tthrow new Error('renderTarget.depthTexture must be an instance of THREE.DepthTexture');\n\n\t\t}\n\n\t\t// upload an empty depth texture with framebuffer size\n\t\tif ( !properties.get( renderTarget.depthTexture ).__webglTexture ||\n\t\t\t\trenderTarget.depthTexture.image.width !== renderTarget.width ||\n\t\t\t\trenderTarget.depthTexture.image.height !== renderTarget.height ) {\n\t\t\trenderTarget.depthTexture.image.width = renderTarget.width;\n\t\t\trenderTarget.depthTexture.image.height = renderTarget.height;\n\t\t\trenderTarget.depthTexture.needsUpdate = true;\n\t\t}\n\n\t\tsetTexture2D( renderTarget.depthTexture, 0 );\n\n\t\tvar webglDepthTexture = properties.get( renderTarget.depthTexture ).__webglTexture;\n\n\t\tif ( renderTarget.depthTexture.format === DepthFormat ) {\n\n\t\t\t_gl.framebufferTexture2D( _gl.FRAMEBUFFER, _gl.DEPTH_ATTACHMENT, _gl.TEXTURE_2D, webglDepthTexture, 0 );\n\n\t\t} else if ( renderTarget.depthTexture.format === DepthStencilFormat ) {\n\n\t\t\t_gl.framebufferTexture2D( _gl.FRAMEBUFFER, _gl.DEPTH_STENCIL_ATTACHMENT, _gl.TEXTURE_2D, webglDepthTexture, 0 );\n\n\t\t} else {\n\n\t\t\tthrow new Error('Unknown depthTexture format')\n\n\t\t}\n\n\t}\n\n\t// Setup GL resources for a non-texture depth buffer\n\tfunction setupDepthRenderbuffer( renderTarget ) {\n\n\t\tvar renderTargetProperties = properties.get( renderTarget );\n\n\t\tvar isCube = ( (renderTarget && renderTarget.isWebGLRenderTargetCube) );\n\n\t\tif ( renderTarget.depthTexture ) {\n\n\t\t\tif ( isCube ) throw new Error('target.depthTexture not supported in Cube render targets');\n\n\t\t\tsetupDepthTexture( renderTargetProperties.__webglFramebuffer, renderTarget );\n\n\t\t} else {\n\n\t\t\tif ( isCube ) {\n\n\t\t\t\trenderTargetProperties.__webglDepthbuffer = [];\n\n\t\t\t\tfor ( var i = 0; i < 6; i ++ ) {\n\n\t\t\t\t\t_gl.bindFramebuffer( _gl.FRAMEBUFFER, renderTargetProperties.__webglFramebuffer[ i ] );\n\t\t\t\t\trenderTargetProperties.__webglDepthbuffer[ i ] = _gl.createRenderbuffer();\n\t\t\t\t\tsetupRenderBufferStorage( renderTargetProperties.__webglDepthbuffer[ i ], renderTarget );\n\n\t\t\t\t}\n\n\t\t\t} else {\n\n\t\t\t\t_gl.bindFramebuffer( _gl.FRAMEBUFFER, renderTargetProperties.__webglFramebuffer );\n\t\t\t\trenderTargetProperties.__webglDepthbuffer = _gl.createRenderbuffer();\n\t\t\t\tsetupRenderBufferStorage( renderTargetProperties.__webglDepthbuffer, renderTarget );\n\n\t\t\t}\n\n\t\t}\n\n\t\t_gl.bindFramebuffer( _gl.FRAMEBUFFER, null );\n\n\t}\n\n\t// Set up GL resources for the render target\n\tfunction setupRenderTarget( renderTarget ) {\n\n\t\tvar renderTargetProperties = properties.get( renderTarget );\n\t\tvar textureProperties = properties.get( renderTarget.texture );\n\n\t\trenderTarget.addEventListener( 'dispose', onRenderTargetDispose );\n\n\t\ttextureProperties.__webglTexture = _gl.createTexture();\n\n\t\t_infoMemory.textures ++;\n\n\t\tvar isCube = ( (renderTarget && renderTarget.isWebGLRenderTargetCube) );\n\t\tvar isTargetPowerOfTwo = isPowerOfTwo( renderTarget );\n\n\t\t// Setup framebuffer\n\n\t\tif ( isCube ) {\n\n\t\t\trenderTargetProperties.__webglFramebuffer = [];\n\n\t\t\tfor ( var i = 0; i < 6; i ++ ) {\n\n\t\t\t\trenderTargetProperties.__webglFramebuffer[ i ] = _gl.createFramebuffer();\n\n\t\t\t}\n\n\t\t} else {\n\n\t\t\trenderTargetProperties.__webglFramebuffer = _gl.createFramebuffer();\n\n\t\t}\n\n\t\t// Setup color buffer\n\n\t\tif ( isCube ) {\n\n\t\t\tstate.bindTexture( _gl.TEXTURE_CUBE_MAP, textureProperties.__webglTexture );\n\t\t\tsetTextureParameters( _gl.TEXTURE_CUBE_MAP, renderTarget.texture, isTargetPowerOfTwo );\n\n\t\t\tfor ( var i = 0; i < 6; i ++ ) {\n\n\t\t\t\tsetupFrameBufferTexture( renderTargetProperties.__webglFramebuffer[ i ], renderTarget, _gl.COLOR_ATTACHMENT0, _gl.TEXTURE_CUBE_MAP_POSITIVE_X + i );\n\n\t\t\t}\n\n\t\t\tif ( renderTarget.texture.generateMipmaps && isTargetPowerOfTwo ) _gl.generateMipmap( _gl.TEXTURE_CUBE_MAP );\n\t\t\tstate.bindTexture( _gl.TEXTURE_CUBE_MAP, null );\n\n\t\t} else {\n\n\t\t\tstate.bindTexture( _gl.TEXTURE_2D, textureProperties.__webglTexture );\n\t\t\tsetTextureParameters( _gl.TEXTURE_2D, renderTarget.texture, isTargetPowerOfTwo );\n\t\t\tsetupFrameBufferTexture( renderTargetProperties.__webglFramebuffer, renderTarget, _gl.COLOR_ATTACHMENT0, _gl.TEXTURE_2D );\n\n\t\t\tif ( renderTarget.texture.generateMipmaps && isTargetPowerOfTwo ) _gl.generateMipmap( _gl.TEXTURE_2D );\n\t\t\tstate.bindTexture( _gl.TEXTURE_2D, null );\n\n\t\t}\n\n\t\t// Setup depth and stencil buffers\n\n\t\tif ( renderTarget.depthBuffer ) {\n\n\t\t\tsetupDepthRenderbuffer( renderTarget );\n\n\t\t}\n\n\t}\n\n\tfunction updateRenderTargetMipmap( renderTarget ) {\n\n\t\tvar texture = renderTarget.texture;\n\n\t\tif ( texture.generateMipmaps && isPowerOfTwo( renderTarget ) &&\n\t\t\t\ttexture.minFilter !== NearestFilter &&\n\t\t\t\ttexture.minFilter !== LinearFilter ) {\n\n\t\t\tvar target = (renderTarget && renderTarget.isWebGLRenderTargetCube) ? _gl.TEXTURE_CUBE_MAP : _gl.TEXTURE_2D;\n\t\t\tvar webglTexture = properties.get( texture ).__webglTexture;\n\n\t\t\tstate.bindTexture( target, webglTexture );\n\t\t\t_gl.generateMipmap( target );\n\t\t\tstate.bindTexture( target, null );\n\n\t\t}\n\n\t}\n\n\tthis.setTexture2D = setTexture2D;\n\tthis.setTextureCube = setTextureCube;\n\tthis.setTextureCubeDynamic = setTextureCubeDynamic;\n\tthis.setupRenderTarget = setupRenderTarget;\n\tthis.updateRenderTargetMipmap = updateRenderTargetMipmap;\n\n}\n\n\nexport { WebGLTextures };\n","/**\n * @author fordacious / fordacious.github.io\n */\n\nfunction WebGLProperties() {\n\n\tvar properties = {};\n\n\treturn {\n\n\t\tget: function ( object ) {\n\n\t\t\tvar uuid = object.uuid;\n\t\t\tvar map = properties[ uuid ];\n\n\t\t\tif ( map === undefined ) {\n\n\t\t\t\tmap = {};\n\t\t\t\tproperties[ uuid ] = map;\n\n\t\t\t}\n\n\t\t\treturn map;\n\n\t\t},\n\n\t\tdelete: function ( object ) {\n\n\t\t\tdelete properties[ object.uuid ];\n\n\t\t},\n\n\t\tclear: function () {\n\n\t\t\tproperties = {};\n\n\t\t}\n\n\t};\n\n}\n\nexport { WebGLProperties };\n","/**\n * @author mrdoob / http://mrdoob.com/\n */\n\nimport { NotEqualDepth, GreaterDepth, GreaterEqualDepth, EqualDepth, LessEqualDepth, LessDepth, AlwaysDepth, NeverDepth, CullFaceFront, CullFaceBack, CullFaceNone, CustomBlending, MultiplyBlending, SubtractiveBlending, AdditiveBlending, NoBlending, NormalBlending } from '../../constants';\nimport { Vector4 } from '../../math/Vector4';\n\nfunction WebGLState( gl, extensions, paramThreeToGL ) {\n\n\tfunction ColorBuffer() {\n\n\t\tvar locked = false;\n\n\t\tvar color = new Vector4();\n\t\tvar currentColorMask = null;\n\t\tvar currentColorClear = new Vector4();\n\n\t\treturn {\n\n\t\t\tsetMask: function ( colorMask ) {\n\n\t\t\t\tif ( currentColorMask !== colorMask && ! locked ) {\n\n\t\t\t\t\tgl.colorMask( colorMask, colorMask, colorMask, colorMask );\n\t\t\t\t\tcurrentColorMask = colorMask;\n\n\t\t\t\t}\n\n\t\t\t},\n\n\t\t\tsetLocked: function ( lock ) {\n\n\t\t\t\tlocked = lock;\n\n\t\t\t},\n\n\t\t\tsetClear: function ( r, g, b, a, premultipliedAlpha ) {\n\n\t\t\t\tif ( premultipliedAlpha === true ) {\n\n\t\t\t\t\tr *= a; g *= a; b *= a;\n\n\t\t\t\t}\n\n\t\t\t\tcolor.set( r, g, b, a );\n\n\t\t\t\tif ( currentColorClear.equals( color ) === false ) {\n\n\t\t\t\t\tgl.clearColor( r, g, b, a );\n\t\t\t\t\tcurrentColorClear.copy( color );\n\n\t\t\t\t}\n\n\t\t\t},\n\n\t\t\treset: function () {\n\n\t\t\t\tlocked = false;\n\n\t\t\t\tcurrentColorMask = null;\n\t\t\t\tcurrentColorClear.set( 0, 0, 0, 1 );\n\n\t\t\t}\n\n\t\t};\n\n\t}\n\n\tfunction DepthBuffer() {\n\n\t\tvar locked = false;\n\n\t\tvar currentDepthMask = null;\n\t\tvar currentDepthFunc = null;\n\t\tvar currentDepthClear = null;\n\n\t\treturn {\n\n\t\t\tsetTest: function ( depthTest ) {\n\n\t\t\t\tif ( depthTest ) {\n\n\t\t\t\t\tenable( gl.DEPTH_TEST );\n\n\t\t\t\t} else {\n\n\t\t\t\t\tdisable( gl.DEPTH_TEST );\n\n\t\t\t\t}\n\n\t\t\t},\n\n\t\t\tsetMask: function ( depthMask ) {\n\n\t\t\t\tif ( currentDepthMask !== depthMask && ! locked ) {\n\n\t\t\t\t\tgl.depthMask( depthMask );\n\t\t\t\t\tcurrentDepthMask = depthMask;\n\n\t\t\t\t}\n\n\t\t\t},\n\n\t\t\tsetFunc: function ( depthFunc ) {\n\n\t\t\t\tif ( currentDepthFunc !== depthFunc ) {\n\n\t\t\t\t\tif ( depthFunc ) {\n\n\t\t\t\t\t\tswitch ( depthFunc ) {\n\n\t\t\t\t\t\t\tcase NeverDepth:\n\n\t\t\t\t\t\t\t\tgl.depthFunc( gl.NEVER );\n\t\t\t\t\t\t\t\tbreak;\n\n\t\t\t\t\t\t\tcase AlwaysDepth:\n\n\t\t\t\t\t\t\t\tgl.depthFunc( gl.ALWAYS );\n\t\t\t\t\t\t\t\tbreak;\n\n\t\t\t\t\t\t\tcase LessDepth:\n\n\t\t\t\t\t\t\t\tgl.depthFunc( gl.LESS );\n\t\t\t\t\t\t\t\tbreak;\n\n\t\t\t\t\t\t\tcase LessEqualDepth:\n\n\t\t\t\t\t\t\t\tgl.depthFunc( gl.LEQUAL );\n\t\t\t\t\t\t\t\tbreak;\n\n\t\t\t\t\t\t\tcase EqualDepth:\n\n\t\t\t\t\t\t\t\tgl.depthFunc( gl.EQUAL );\n\t\t\t\t\t\t\t\tbreak;\n\n\t\t\t\t\t\t\tcase GreaterEqualDepth:\n\n\t\t\t\t\t\t\t\tgl.depthFunc( gl.GEQUAL );\n\t\t\t\t\t\t\t\tbreak;\n\n\t\t\t\t\t\t\tcase GreaterDepth:\n\n\t\t\t\t\t\t\t\tgl.depthFunc( gl.GREATER );\n\t\t\t\t\t\t\t\tbreak;\n\n\t\t\t\t\t\t\tcase NotEqualDepth:\n\n\t\t\t\t\t\t\t\tgl.depthFunc( gl.NOTEQUAL );\n\t\t\t\t\t\t\t\tbreak;\n\n\t\t\t\t\t\t\tdefault:\n\n\t\t\t\t\t\t\t\tgl.depthFunc( gl.LEQUAL );\n\n\t\t\t\t\t\t}\n\n\t\t\t\t\t} else {\n\n\t\t\t\t\t\tgl.depthFunc( gl.LEQUAL );\n\n\t\t\t\t\t}\n\n\t\t\t\t\tcurrentDepthFunc = depthFunc;\n\n\t\t\t\t}\n\n\t\t\t},\n\n\t\t\tsetLocked: function ( lock ) {\n\n\t\t\t\tlocked = lock;\n\n\t\t\t},\n\n\t\t\tsetClear: function ( depth ) {\n\n\t\t\t\tif ( currentDepthClear !== depth ) {\n\n\t\t\t\t\tgl.clearDepth( depth );\n\t\t\t\t\tcurrentDepthClear = depth;\n\n\t\t\t\t}\n\n\t\t\t},\n\n\t\t\treset: function () {\n\n\t\t\t\tlocked = false;\n\n\t\t\t\tcurrentDepthMask = null;\n\t\t\t\tcurrentDepthFunc = null;\n\t\t\t\tcurrentDepthClear = null;\n\n\t\t\t}\n\n\t\t};\n\n\t}\n\n\tfunction StencilBuffer() {\n\n\t\tvar locked = false;\n\n\t\tvar currentStencilMask = null;\n\t\tvar currentStencilFunc = null;\n\t\tvar currentStencilRef = null;\n\t\tvar currentStencilFuncMask = null;\n\t\tvar currentStencilFail = null;\n\t\tvar currentStencilZFail = null;\n\t\tvar currentStencilZPass = null;\n\t\tvar currentStencilClear = null;\n\n\t\treturn {\n\n\t\t\tsetTest: function ( stencilTest ) {\n\n\t\t\t\tif ( stencilTest ) {\n\n\t\t\t\t\tenable( gl.STENCIL_TEST );\n\n\t\t\t\t} else {\n\n\t\t\t\t\tdisable( gl.STENCIL_TEST );\n\n\t\t\t\t}\n\n\t\t\t},\n\n\t\t\tsetMask: function ( stencilMask ) {\n\n\t\t\t\tif ( currentStencilMask !== stencilMask && ! locked ) {\n\n\t\t\t\t\tgl.stencilMask( stencilMask );\n\t\t\t\t\tcurrentStencilMask = stencilMask;\n\n\t\t\t\t}\n\n\t\t\t},\n\n\t\t\tsetFunc: function ( stencilFunc, stencilRef, stencilMask ) {\n\n\t\t\t\tif ( currentStencilFunc !== stencilFunc ||\n\t\t\t\t currentStencilRef \t!== stencilRef \t||\n\t\t\t\t currentStencilFuncMask !== stencilMask ) {\n\n\t\t\t\t\tgl.stencilFunc( stencilFunc, stencilRef, stencilMask );\n\n\t\t\t\t\tcurrentStencilFunc = stencilFunc;\n\t\t\t\t\tcurrentStencilRef = stencilRef;\n\t\t\t\t\tcurrentStencilFuncMask = stencilMask;\n\n\t\t\t\t}\n\n\t\t\t},\n\n\t\t\tsetOp: function ( stencilFail, stencilZFail, stencilZPass ) {\n\n\t\t\t\tif ( currentStencilFail\t !== stencilFail \t||\n\t\t\t\t currentStencilZFail !== stencilZFail ||\n\t\t\t\t currentStencilZPass !== stencilZPass ) {\n\n\t\t\t\t\tgl.stencilOp( stencilFail, stencilZFail, stencilZPass );\n\n\t\t\t\t\tcurrentStencilFail = stencilFail;\n\t\t\t\t\tcurrentStencilZFail = stencilZFail;\n\t\t\t\t\tcurrentStencilZPass = stencilZPass;\n\n\t\t\t\t}\n\n\t\t\t},\n\n\t\t\tsetLocked: function ( lock ) {\n\n\t\t\t\tlocked = lock;\n\n\t\t\t},\n\n\t\t\tsetClear: function ( stencil ) {\n\n\t\t\t\tif ( currentStencilClear !== stencil ) {\n\n\t\t\t\t\tgl.clearStencil( stencil );\n\t\t\t\t\tcurrentStencilClear = stencil;\n\n\t\t\t\t}\n\n\t\t\t},\n\n\t\t\treset: function () {\n\n\t\t\t\tlocked = false;\n\n\t\t\t\tcurrentStencilMask = null;\n\t\t\t\tcurrentStencilFunc = null;\n\t\t\t\tcurrentStencilRef = null;\n\t\t\t\tcurrentStencilFuncMask = null;\n\t\t\t\tcurrentStencilFail = null;\n\t\t\t\tcurrentStencilZFail = null;\n\t\t\t\tcurrentStencilZPass = null;\n\t\t\t\tcurrentStencilClear = null;\n\n\t\t\t}\n\n\t\t};\n\n\t}\n\n\t//\n\n\tvar colorBuffer = new ColorBuffer();\n\tvar depthBuffer = new DepthBuffer();\n\tvar stencilBuffer = new StencilBuffer();\n\n\tvar maxVertexAttributes = gl.getParameter( gl.MAX_VERTEX_ATTRIBS );\n\tvar newAttributes = new Uint8Array( maxVertexAttributes );\n\tvar enabledAttributes = new Uint8Array( maxVertexAttributes );\n\tvar attributeDivisors = new Uint8Array( maxVertexAttributes );\n\n\tvar capabilities = {};\n\n\tvar compressedTextureFormats = null;\n\n\tvar currentBlending = null;\n\tvar currentBlendEquation = null;\n\tvar currentBlendSrc = null;\n\tvar currentBlendDst = null;\n\tvar currentBlendEquationAlpha = null;\n\tvar currentBlendSrcAlpha = null;\n\tvar currentBlendDstAlpha = null;\n\tvar currentPremultipledAlpha = false;\n\n\tvar currentFlipSided = null;\n\tvar currentCullFace = null;\n\n\tvar currentLineWidth = null;\n\n\tvar currentPolygonOffsetFactor = null;\n\tvar currentPolygonOffsetUnits = null;\n\n\tvar currentScissorTest = null;\n\n\tvar maxTextures = gl.getParameter( gl.MAX_TEXTURE_IMAGE_UNITS );\n\n\tvar currentTextureSlot = null;\n\tvar currentBoundTextures = {};\n\n\tvar currentScissor = new Vector4();\n\tvar currentViewport = new Vector4();\n\n\tfunction createTexture( type, target, count ) {\n\n\t\tvar data = new Uint8Array( 4 ); // 4 is required to match default unpack alignment of 4.\n\t\tvar texture = gl.createTexture();\n\n\t\tgl.bindTexture( type, texture );\n\t\tgl.texParameteri( type, gl.TEXTURE_MIN_FILTER, gl.NEAREST );\n\t\tgl.texParameteri( type, gl.TEXTURE_MAG_FILTER, gl.NEAREST );\n\n\t\tfor ( var i = 0; i < count; i ++ ) {\n\n\t\t\tgl.texImage2D( target + i, 0, gl.RGBA, 1, 1, 0, gl.RGBA, gl.UNSIGNED_BYTE, data );\n\n\t\t}\n\n\t\treturn texture;\n\n\t}\n\n\tvar emptyTextures = {};\n\temptyTextures[ gl.TEXTURE_2D ] = createTexture( gl.TEXTURE_2D, gl.TEXTURE_2D, 1 );\n\temptyTextures[ gl.TEXTURE_CUBE_MAP ] = createTexture( gl.TEXTURE_CUBE_MAP, gl.TEXTURE_CUBE_MAP_POSITIVE_X, 6 );\n\n\t//\n\n\tfunction init() {\n\n\t\tcolorBuffer.setClear( 0, 0, 0, 1 );\n\t\tdepthBuffer.setClear( 1 );\n\t\tstencilBuffer.setClear( 0 );\n\n\t\tenable( gl.DEPTH_TEST );\n\t\tsetDepthFunc( LessEqualDepth );\n\n\t\tsetFlipSided( false );\n\t\tsetCullFace( CullFaceBack );\n\t\tenable( gl.CULL_FACE );\n\n\t\tenable( gl.BLEND );\n\t\tsetBlending( NormalBlending );\n\n\t}\n\n\tfunction initAttributes() {\n\n\t\tfor ( var i = 0, l = newAttributes.length; i < l; i ++ ) {\n\n\t\t\tnewAttributes[ i ] = 0;\n\n\t\t}\n\n\t}\n\n\tfunction enableAttribute( attribute ) {\n\n\t\tnewAttributes[ attribute ] = 1;\n\n\t\tif ( enabledAttributes[ attribute ] === 0 ) {\n\n\t\t\tgl.enableVertexAttribArray( attribute );\n\t\t\tenabledAttributes[ attribute ] = 1;\n\n\t\t}\n\n\t\tif ( attributeDivisors[ attribute ] !== 0 ) {\n\n\t\t\tvar extension = extensions.get( 'ANGLE_instanced_arrays' );\n\n\t\t\textension.vertexAttribDivisorANGLE( attribute, 0 );\n\t\t\tattributeDivisors[ attribute ] = 0;\n\n\t\t}\n\n\t}\n\n\tfunction enableAttributeAndDivisor( attribute, meshPerAttribute, extension ) {\n\n\t\tnewAttributes[ attribute ] = 1;\n\n\t\tif ( enabledAttributes[ attribute ] === 0 ) {\n\n\t\t\tgl.enableVertexAttribArray( attribute );\n\t\t\tenabledAttributes[ attribute ] = 1;\n\n\t\t}\n\n\t\tif ( attributeDivisors[ attribute ] !== meshPerAttribute ) {\n\n\t\t\textension.vertexAttribDivisorANGLE( attribute, meshPerAttribute );\n\t\t\tattributeDivisors[ attribute ] = meshPerAttribute;\n\n\t\t}\n\n\t}\n\n\tfunction disableUnusedAttributes() {\n\n\t\tfor ( var i = 0, l = enabledAttributes.length; i !== l; ++ i ) {\n\n\t\t\tif ( enabledAttributes[ i ] !== newAttributes[ i ] ) {\n\n\t\t\t\tgl.disableVertexAttribArray( i );\n\t\t\t\tenabledAttributes[ i ] = 0;\n\n\t\t\t}\n\n\t\t}\n\n\t}\n\n\tfunction enable( id ) {\n\n\t\tif ( capabilities[ id ] !== true ) {\n\n\t\t\tgl.enable( id );\n\t\t\tcapabilities[ id ] = true;\n\n\t\t}\n\n\t}\n\n\tfunction disable( id ) {\n\n\t\tif ( capabilities[ id ] !== false ) {\n\n\t\t\tgl.disable( id );\n\t\t\tcapabilities[ id ] = false;\n\n\t\t}\n\n\t}\n\n\tfunction getCompressedTextureFormats() {\n\n\t\tif ( compressedTextureFormats === null ) {\n\n\t\t\tcompressedTextureFormats = [];\n\n\t\t\tif ( extensions.get( 'WEBGL_compressed_texture_pvrtc' ) ||\n\t\t\t extensions.get( 'WEBGL_compressed_texture_s3tc' ) ||\n\t\t\t extensions.get( 'WEBGL_compressed_texture_etc1' ) ) {\n\n\t\t\t\tvar formats = gl.getParameter( gl.COMPRESSED_TEXTURE_FORMATS );\n\n\t\t\t\tfor ( var i = 0; i < formats.length; i ++ ) {\n\n\t\t\t\t\tcompressedTextureFormats.push( formats[ i ] );\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t}\n\n\t\treturn compressedTextureFormats;\n\n\t}\n\n\tfunction setBlending( blending, blendEquation, blendSrc, blendDst, blendEquationAlpha, blendSrcAlpha, blendDstAlpha, premultipliedAlpha ) {\n\n\t\tif ( blending !== NoBlending ) {\n\n\t\t\tenable( gl.BLEND );\n\n\t\t} else {\n\n\t\t\tdisable( gl.BLEND );\n\n\t\t}\n\n\t\tif ( blending !== currentBlending || premultipliedAlpha !== currentPremultipledAlpha ) {\n\n\t\t\tif ( blending === AdditiveBlending ) {\n\n\t\t\t\tif ( premultipliedAlpha ) {\n\n\t\t\t\t\tgl.blendEquationSeparate( gl.FUNC_ADD, gl.FUNC_ADD );\n\t\t\t\t\tgl.blendFuncSeparate( gl.ONE, gl.ONE, gl.ONE, gl.ONE );\n\n\t\t\t\t} else {\n\n\t\t\t\t\tgl.blendEquation( gl.FUNC_ADD );\n\t\t\t\t\tgl.blendFunc( gl.SRC_ALPHA, gl.ONE );\n\n\t\t\t\t}\n\n\t\t\t} else if ( blending === SubtractiveBlending ) {\n\n\t\t\t\tif ( premultipliedAlpha ) {\n\n\t\t\t\t\tgl.blendEquationSeparate( gl.FUNC_ADD, gl.FUNC_ADD );\n\t\t\t\t\tgl.blendFuncSeparate( gl.ZERO, gl.ZERO, gl.ONE_MINUS_SRC_COLOR, gl.ONE_MINUS_SRC_ALPHA );\n\n\t\t\t\t} else {\n\n\t\t\t\t\tgl.blendEquation( gl.FUNC_ADD );\n\t\t\t\t\tgl.blendFunc( gl.ZERO, gl.ONE_MINUS_SRC_COLOR );\n\n\t\t\t\t}\n\n\t\t\t} else if ( blending === MultiplyBlending ) {\n\n\t\t\t\tif ( premultipliedAlpha ) {\n\n\t\t\t\t\tgl.blendEquationSeparate( gl.FUNC_ADD, gl.FUNC_ADD );\n\t\t\t\t\tgl.blendFuncSeparate( gl.ZERO, gl.SRC_COLOR, gl.ZERO, gl.SRC_ALPHA );\n\n\t\t\t\t} else {\n\n\t\t\t\t\tgl.blendEquation( gl.FUNC_ADD );\n\t\t\t\t\tgl.blendFunc( gl.ZERO, gl.SRC_COLOR );\n\n\t\t\t\t}\n\n\t\t\t} else {\n\n\t\t\t\tif ( premultipliedAlpha ) {\n\n\t\t\t\t\tgl.blendEquationSeparate( gl.FUNC_ADD, gl.FUNC_ADD );\n\t\t\t\t\tgl.blendFuncSeparate( gl.ONE, gl.ONE_MINUS_SRC_ALPHA, gl.ONE, gl.ONE_MINUS_SRC_ALPHA );\n\n\t\t\t\t} else {\n\n\t\t\t\t\tgl.blendEquationSeparate( gl.FUNC_ADD, gl.FUNC_ADD );\n\t\t\t\t\tgl.blendFuncSeparate( gl.SRC_ALPHA, gl.ONE_MINUS_SRC_ALPHA, gl.ONE, gl.ONE_MINUS_SRC_ALPHA );\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t\tcurrentBlending = blending;\n\t\t\tcurrentPremultipledAlpha = premultipliedAlpha;\n\n\t\t}\n\n\t\tif ( blending === CustomBlending ) {\n\n\t\t\tblendEquationAlpha = blendEquationAlpha || blendEquation;\n\t\t\tblendSrcAlpha = blendSrcAlpha || blendSrc;\n\t\t\tblendDstAlpha = blendDstAlpha || blendDst;\n\n\t\t\tif ( blendEquation !== currentBlendEquation || blendEquationAlpha !== currentBlendEquationAlpha ) {\n\n\t\t\t\tgl.blendEquationSeparate( paramThreeToGL( blendEquation ), paramThreeToGL( blendEquationAlpha ) );\n\n\t\t\t\tcurrentBlendEquation = blendEquation;\n\t\t\t\tcurrentBlendEquationAlpha = blendEquationAlpha;\n\n\t\t\t}\n\n\t\t\tif ( blendSrc !== currentBlendSrc || blendDst !== currentBlendDst || blendSrcAlpha !== currentBlendSrcAlpha || blendDstAlpha !== currentBlendDstAlpha ) {\n\n\t\t\t\tgl.blendFuncSeparate( paramThreeToGL( blendSrc ), paramThreeToGL( blendDst ), paramThreeToGL( blendSrcAlpha ), paramThreeToGL( blendDstAlpha ) );\n\n\t\t\t\tcurrentBlendSrc = blendSrc;\n\t\t\t\tcurrentBlendDst = blendDst;\n\t\t\t\tcurrentBlendSrcAlpha = blendSrcAlpha;\n\t\t\t\tcurrentBlendDstAlpha = blendDstAlpha;\n\n\t\t\t}\n\n\t\t} else {\n\n\t\t\tcurrentBlendEquation = null;\n\t\t\tcurrentBlendSrc = null;\n\t\t\tcurrentBlendDst = null;\n\t\t\tcurrentBlendEquationAlpha = null;\n\t\t\tcurrentBlendSrcAlpha = null;\n\t\t\tcurrentBlendDstAlpha = null;\n\n\t\t}\n\n\t}\n\n\t// TODO Deprecate\n\n\tfunction setColorWrite( colorWrite ) {\n\n\t\tcolorBuffer.setMask( colorWrite );\n\n\t}\n\n\tfunction setDepthTest( depthTest ) {\n\n\t\tdepthBuffer.setTest( depthTest );\n\n\t}\n\n\tfunction setDepthWrite( depthWrite ) {\n\n\t\tdepthBuffer.setMask( depthWrite );\n\n\t}\n\n\tfunction setDepthFunc( depthFunc ) {\n\n\t\tdepthBuffer.setFunc( depthFunc );\n\n\t}\n\n\tfunction setStencilTest( stencilTest ) {\n\n\t\tstencilBuffer.setTest( stencilTest );\n\n\t}\n\n\tfunction setStencilWrite( stencilWrite ) {\n\n\t\tstencilBuffer.setMask( stencilWrite );\n\n\t}\n\n\tfunction setStencilFunc( stencilFunc, stencilRef, stencilMask ) {\n\n\t\tstencilBuffer.setFunc( stencilFunc, stencilRef, stencilMask );\n\n\t}\n\n\tfunction setStencilOp( stencilFail, stencilZFail, stencilZPass ) {\n\n\t\tstencilBuffer.setOp( stencilFail, stencilZFail, stencilZPass );\n\n\t}\n\n\t//\n\n\tfunction setFlipSided( flipSided ) {\n\n\t\tif ( currentFlipSided !== flipSided ) {\n\n\t\t\tif ( flipSided ) {\n\n\t\t\t\tgl.frontFace( gl.CW );\n\n\t\t\t} else {\n\n\t\t\t\tgl.frontFace( gl.CCW );\n\n\t\t\t}\n\n\t\t\tcurrentFlipSided = flipSided;\n\n\t\t}\n\n\t}\n\n\tfunction setCullFace( cullFace ) {\n\n\t\tif ( cullFace !== CullFaceNone ) {\n\n\t\t\tenable( gl.CULL_FACE );\n\n\t\t\tif ( cullFace !== currentCullFace ) {\n\n\t\t\t\tif ( cullFace === CullFaceBack ) {\n\n\t\t\t\t\tgl.cullFace( gl.BACK );\n\n\t\t\t\t} else if ( cullFace === CullFaceFront ) {\n\n\t\t\t\t\tgl.cullFace( gl.FRONT );\n\n\t\t\t\t} else {\n\n\t\t\t\t\tgl.cullFace( gl.FRONT_AND_BACK );\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t} else {\n\n\t\t\tdisable( gl.CULL_FACE );\n\n\t\t}\n\n\t\tcurrentCullFace = cullFace;\n\n\t}\n\n\tfunction setLineWidth( width ) {\n\n\t\tif ( width !== currentLineWidth ) {\n\n\t\t\tgl.lineWidth( width );\n\n\t\t\tcurrentLineWidth = width;\n\n\t\t}\n\n\t}\n\n\tfunction setPolygonOffset( polygonOffset, factor, units ) {\n\n\t\tif ( polygonOffset ) {\n\n\t\t\tenable( gl.POLYGON_OFFSET_FILL );\n\n\t\t\tif ( currentPolygonOffsetFactor !== factor || currentPolygonOffsetUnits !== units ) {\n\n\t\t\t\tgl.polygonOffset( factor, units );\n\n\t\t\t\tcurrentPolygonOffsetFactor = factor;\n\t\t\t\tcurrentPolygonOffsetUnits = units;\n\n\t\t\t}\n\n\t\t} else {\n\n\t\t\tdisable( gl.POLYGON_OFFSET_FILL );\n\n\t\t}\n\n\t}\n\n\tfunction getScissorTest() {\n\n\t\treturn currentScissorTest;\n\n\t}\n\n\tfunction setScissorTest( scissorTest ) {\n\n\t\tcurrentScissorTest = scissorTest;\n\n\t\tif ( scissorTest ) {\n\n\t\t\tenable( gl.SCISSOR_TEST );\n\n\t\t} else {\n\n\t\t\tdisable( gl.SCISSOR_TEST );\n\n\t\t}\n\n\t}\n\n\t// texture\n\n\tfunction activeTexture( webglSlot ) {\n\n\t\tif ( webglSlot === undefined ) webglSlot = gl.TEXTURE0 + maxTextures - 1;\n\n\t\tif ( currentTextureSlot !== webglSlot ) {\n\n\t\t\tgl.activeTexture( webglSlot );\n\t\t\tcurrentTextureSlot = webglSlot;\n\n\t\t}\n\n\t}\n\n\tfunction bindTexture( webglType, webglTexture ) {\n\n\t\tif ( currentTextureSlot === null ) {\n\n\t\t\tactiveTexture();\n\n\t\t}\n\n\t\tvar boundTexture = currentBoundTextures[ currentTextureSlot ];\n\n\t\tif ( boundTexture === undefined ) {\n\n\t\t\tboundTexture = { type: undefined, texture: undefined };\n\t\t\tcurrentBoundTextures[ currentTextureSlot ] = boundTexture;\n\n\t\t}\n\n\t\tif ( boundTexture.type !== webglType || boundTexture.texture !== webglTexture ) {\n\n\t\t\tgl.bindTexture( webglType, webglTexture || emptyTextures[ webglType ] );\n\n\t\t\tboundTexture.type = webglType;\n\t\t\tboundTexture.texture = webglTexture;\n\n\t\t}\n\n\t}\n\n\tfunction compressedTexImage2D() {\n\n\t\ttry {\n\n\t\t\tgl.compressedTexImage2D.apply( gl, arguments );\n\n\t\t} catch ( error ) {\n\n\t\t\tconsole.error( error );\n\n\t\t}\n\n\t}\n\n\tfunction texImage2D() {\n\n\t\ttry {\n\n\t\t\tgl.texImage2D.apply( gl, arguments );\n\n\t\t} catch ( error ) {\n\n\t\t\tconsole.error( error );\n\n\t\t}\n\n\t}\n\n\t//\n\n\tfunction scissor( scissor ) {\n\n\t\tif ( currentScissor.equals( scissor ) === false ) {\n\n\t\t\tgl.scissor( scissor.x, scissor.y, scissor.z, scissor.w );\n\t\t\tcurrentScissor.copy( scissor );\n\n\t\t}\n\n\t}\n\n\tfunction viewport( viewport ) {\n\n\t\tif ( currentViewport.equals( viewport ) === false ) {\n\n\t\t\tgl.viewport( viewport.x, viewport.y, viewport.z, viewport.w );\n\t\t\tcurrentViewport.copy( viewport );\n\n\t\t}\n\n\t}\n\n\t//\n\n\tfunction reset() {\n\n\t\tfor ( var i = 0; i < enabledAttributes.length; i ++ ) {\n\n\t\t\tif ( enabledAttributes[ i ] === 1 ) {\n\n\t\t\t\tgl.disableVertexAttribArray( i );\n\t\t\t\tenabledAttributes[ i ] = 0;\n\n\t\t\t}\n\n\t\t}\n\n\t\tcapabilities = {};\n\n\t\tcompressedTextureFormats = null;\n\n\t\tcurrentTextureSlot = null;\n\t\tcurrentBoundTextures = {};\n\n\t\tcurrentBlending = null;\n\n\t\tcurrentFlipSided = null;\n\t\tcurrentCullFace = null;\n\n\t\tcolorBuffer.reset();\n\t\tdepthBuffer.reset();\n\t\tstencilBuffer.reset();\n\n\t}\n\n\treturn {\n\n\t\tbuffers: {\n\t\t\tcolor: colorBuffer,\n\t\t\tdepth: depthBuffer,\n\t\t\tstencil: stencilBuffer\n\t\t},\n\n\t\tinit: init,\n\t\tinitAttributes: initAttributes,\n\t\tenableAttribute: enableAttribute,\n\t\tenableAttributeAndDivisor: enableAttributeAndDivisor,\n\t\tdisableUnusedAttributes: disableUnusedAttributes,\n\t\tenable: enable,\n\t\tdisable: disable,\n\t\tgetCompressedTextureFormats: getCompressedTextureFormats,\n\n\t\tsetBlending: setBlending,\n\n\t\tsetColorWrite: setColorWrite,\n\t\tsetDepthTest: setDepthTest,\n\t\tsetDepthWrite: setDepthWrite,\n\t\tsetDepthFunc: setDepthFunc,\n\t\tsetStencilTest: setStencilTest,\n\t\tsetStencilWrite: setStencilWrite,\n\t\tsetStencilFunc: setStencilFunc,\n\t\tsetStencilOp: setStencilOp,\n\n\t\tsetFlipSided: setFlipSided,\n\t\tsetCullFace: setCullFace,\n\n\t\tsetLineWidth: setLineWidth,\n\t\tsetPolygonOffset: setPolygonOffset,\n\n\t\tgetScissorTest: getScissorTest,\n\t\tsetScissorTest: setScissorTest,\n\n\t\tactiveTexture: activeTexture,\n\t\tbindTexture: bindTexture,\n\t\tcompressedTexImage2D: compressedTexImage2D,\n\t\ttexImage2D: texImage2D,\n\n\t\tscissor: scissor,\n\t\tviewport: viewport,\n\n\t\treset: reset\n\n\t};\n\n}\n\n\nexport { WebGLState };\n","/**\n * @author mrdoob / http://mrdoob.com/\n */\n\nfunction WebGLCapabilities( gl, extensions, parameters ) {\n\n\tvar maxAnisotropy;\n\n\tfunction getMaxAnisotropy() {\n\n\t\tif ( maxAnisotropy !== undefined ) return maxAnisotropy;\n\n\t\tvar extension = extensions.get( 'EXT_texture_filter_anisotropic' );\n\n\t\tif ( extension !== null ) {\n\n\t\t\tmaxAnisotropy = gl.getParameter( extension.MAX_TEXTURE_MAX_ANISOTROPY_EXT );\n\n\t\t} else {\n\n\t\t\tmaxAnisotropy = 0;\n\n\t\t}\n\n\t\treturn maxAnisotropy;\n\n\t}\n\n\tfunction getMaxPrecision( precision ) {\n\n\t\tif ( precision === 'highp' ) {\n\n\t\t\tif ( gl.getShaderPrecisionFormat( gl.VERTEX_SHADER, gl.HIGH_FLOAT ).precision > 0 &&\n\t\t\t gl.getShaderPrecisionFormat( gl.FRAGMENT_SHADER, gl.HIGH_FLOAT ).precision > 0 ) {\n\n\t\t\t\treturn 'highp';\n\n\t\t\t}\n\n\t\t\tprecision = 'mediump';\n\n\t\t}\n\n\t\tif ( precision === 'mediump' ) {\n\n\t\t\tif ( gl.getShaderPrecisionFormat( gl.VERTEX_SHADER, gl.MEDIUM_FLOAT ).precision > 0 &&\n\t\t\t gl.getShaderPrecisionFormat( gl.FRAGMENT_SHADER, gl.MEDIUM_FLOAT ).precision > 0 ) {\n\n\t\t\t\treturn 'mediump';\n\n\t\t\t}\n\n\t\t}\n\n\t\treturn 'lowp';\n\n\t}\n\n\tvar precision = parameters.precision !== undefined ? parameters.precision : 'highp';\n\tvar maxPrecision = getMaxPrecision( precision );\n\n\tif ( maxPrecision !== precision ) {\n\n\t\tconsole.warn( 'THREE.WebGLRenderer:', precision, 'not supported, using', maxPrecision, 'instead.' );\n\t\tprecision = maxPrecision;\n\n\t}\n\n\tvar logarithmicDepthBuffer = parameters.logarithmicDepthBuffer === true && !! extensions.get( 'EXT_frag_depth' );\n\n\tvar maxTextures = gl.getParameter( gl.MAX_TEXTURE_IMAGE_UNITS );\n\tvar maxVertexTextures = gl.getParameter( gl.MAX_VERTEX_TEXTURE_IMAGE_UNITS );\n\tvar maxTextureSize = gl.getParameter( gl.MAX_TEXTURE_SIZE );\n\tvar maxCubemapSize = gl.getParameter( gl.MAX_CUBE_MAP_TEXTURE_SIZE );\n\n\tvar maxAttributes = gl.getParameter( gl.MAX_VERTEX_ATTRIBS );\n\tvar maxVertexUniforms = gl.getParameter( gl.MAX_VERTEX_UNIFORM_VECTORS );\n\tvar maxVaryings = gl.getParameter( gl.MAX_VARYING_VECTORS );\n\tvar maxFragmentUniforms = gl.getParameter( gl.MAX_FRAGMENT_UNIFORM_VECTORS );\n\n\tvar vertexTextures = maxVertexTextures > 0;\n\tvar floatFragmentTextures = !! extensions.get( 'OES_texture_float' );\n\tvar floatVertexTextures = vertexTextures && floatFragmentTextures;\n\n\treturn {\n\n\t\tgetMaxAnisotropy: getMaxAnisotropy,\n\t\tgetMaxPrecision: getMaxPrecision,\n\n\t\tprecision: precision,\n\t\tlogarithmicDepthBuffer: logarithmicDepthBuffer,\n\n\t\tmaxTextures: maxTextures,\n\t\tmaxVertexTextures: maxVertexTextures,\n\t\tmaxTextureSize: maxTextureSize,\n\t\tmaxCubemapSize: maxCubemapSize,\n\n\t\tmaxAttributes: maxAttributes,\n\t\tmaxVertexUniforms: maxVertexUniforms,\n\t\tmaxVaryings: maxVaryings,\n\t\tmaxFragmentUniforms: maxFragmentUniforms,\n\n\t\tvertexTextures: vertexTextures,\n\t\tfloatFragmentTextures: floatFragmentTextures,\n\t\tfloatVertexTextures: floatVertexTextures\n\n\t};\n\n}\n\n\nexport { WebGLCapabilities };\n","/**\n * @author mrdoob / http://mrdoob.com/\n */\n\nfunction WebGLExtensions( gl ) {\n\n\tvar extensions = {};\n\n\treturn {\n\n\t\tget: function ( name ) {\n\n\t\t\tif ( extensions[ name ] !== undefined ) {\n\n\t\t\t\treturn extensions[ name ];\n\n\t\t\t}\n\n\t\t\tvar extension;\n\n\t\t\tswitch ( name ) {\n\n\t\t\t\tcase 'WEBGL_depth_texture':\n\t\t\t\t\textension = gl.getExtension( 'WEBGL_depth_texture' ) || gl.getExtension( 'MOZ_WEBGL_depth_texture' ) || gl.getExtension( 'WEBKIT_WEBGL_depth_texture' );\n\t\t\t\t\tbreak;\n\n\t\t\t\tcase 'EXT_texture_filter_anisotropic':\n\t\t\t\t\textension = gl.getExtension( 'EXT_texture_filter_anisotropic' ) || gl.getExtension( 'MOZ_EXT_texture_filter_anisotropic' ) || gl.getExtension( 'WEBKIT_EXT_texture_filter_anisotropic' );\n\t\t\t\t\tbreak;\n\n\t\t\t\tcase 'WEBGL_compressed_texture_s3tc':\n\t\t\t\t\textension = gl.getExtension( 'WEBGL_compressed_texture_s3tc' ) || gl.getExtension( 'MOZ_WEBGL_compressed_texture_s3tc' ) || gl.getExtension( 'WEBKIT_WEBGL_compressed_texture_s3tc' );\n\t\t\t\t\tbreak;\n\n\t\t\t\tcase 'WEBGL_compressed_texture_pvrtc':\n\t\t\t\t\textension = gl.getExtension( 'WEBGL_compressed_texture_pvrtc' ) || gl.getExtension( 'WEBKIT_WEBGL_compressed_texture_pvrtc' );\n\t\t\t\t\tbreak;\n\n\t\t\t\tcase 'WEBGL_compressed_texture_etc1':\n\t\t\t\t\textension = gl.getExtension( 'WEBGL_compressed_texture_etc1' );\n\t\t\t\t\tbreak;\n\n\t\t\t\tdefault:\n\t\t\t\t\textension = gl.getExtension( name );\n\n\t\t\t}\n\n\t\t\tif ( extension === null ) {\n\n\t\t\t\tconsole.warn( 'THREE.WebGLRenderer: ' + name + ' extension not supported.' );\n\n\t\t\t}\n\n\t\t\textensions[ name ] = extension;\n\n\t\t\treturn extension;\n\n\t\t}\n\n\t};\n\n}\n\n\nexport { WebGLExtensions };\n","/**\n * @author tschw\n */\n\nimport { Matrix3 } from '../../math/Matrix3';\nimport { Plane } from '../../math/Plane';\n\nfunction WebGLClipping() {\n\n\tvar scope = this,\n\n\t\tglobalState = null,\n\t\tnumGlobalPlanes = 0,\n\t\tlocalClippingEnabled = false,\n\t\trenderingShadows = false,\n\n\t\tplane = new Plane(),\n\t\tviewNormalMatrix = new Matrix3(),\n\n\t\tuniform = { value: null, needsUpdate: false };\n\n\tthis.uniform = uniform;\n\tthis.numPlanes = 0;\n\tthis.numIntersection = 0;\n\n\tthis.init = function( planes, enableLocalClipping, camera ) {\n\n\t\tvar enabled =\n\t\t\tplanes.length !== 0 ||\n\t\t\tenableLocalClipping ||\n\t\t\t// enable state of previous frame - the clipping code has to\n\t\t\t// run another frame in order to reset the state:\n\t\t\tnumGlobalPlanes !== 0 ||\n\t\t\tlocalClippingEnabled;\n\n\t\tlocalClippingEnabled = enableLocalClipping;\n\n\t\tglobalState = projectPlanes( planes, camera, 0 );\n\t\tnumGlobalPlanes = planes.length;\n\n\t\treturn enabled;\n\n\t};\n\n\tthis.beginShadows = function() {\n\n\t\trenderingShadows = true;\n\t\tprojectPlanes( null );\n\n\t};\n\n\tthis.endShadows = function() {\n\n\t\trenderingShadows = false;\n\t\tresetGlobalState();\n\n\t};\n\n\tthis.setState = function( planes, clipIntersection, clipShadows, camera, cache, fromCache ) {\n\n\t\tif ( ! localClippingEnabled ||\n\t\t\t\tplanes === null || planes.length === 0 ||\n\t\t\t\trenderingShadows && ! clipShadows ) {\n\t\t\t// there's no local clipping\n\n\t\t\tif ( renderingShadows ) {\n\t\t\t\t// there's no global clipping\n\n\t\t\t\tprojectPlanes( null );\n\n\t\t\t} else {\n\n\t\t\t\tresetGlobalState();\n\t\t\t}\n\n\t\t} else {\n\n\t\t\tvar nGlobal = renderingShadows ? 0 : numGlobalPlanes,\n\t\t\t\tlGlobal = nGlobal * 4,\n\n\t\t\t\tdstArray = cache.clippingState || null;\n\n\t\t\tuniform.value = dstArray; // ensure unique state\n\n\t\t\tdstArray = projectPlanes( planes, camera, lGlobal, fromCache );\n\n\t\t\tfor ( var i = 0; i !== lGlobal; ++ i ) {\n\n\t\t\t\tdstArray[ i ] = globalState[ i ];\n\n\t\t\t}\n\n\t\t\tcache.clippingState = dstArray;\n\t\t\tthis.numIntersection = clipIntersection ? this.numPlanes : 0;\n\t\t\tthis.numPlanes += nGlobal;\n\n\t\t}\n\n\n\t};\n\n\tfunction resetGlobalState() {\n\n\t\tif ( uniform.value !== globalState ) {\n\n\t\t\tuniform.value = globalState;\n\t\t\tuniform.needsUpdate = numGlobalPlanes > 0;\n\n\t\t}\n\n\t\tscope.numPlanes = numGlobalPlanes;\n\t\tscope.numIntersection = 0;\n\n\t}\n\n\tfunction projectPlanes( planes, camera, dstOffset, skipTransform ) {\n\n\t\tvar nPlanes = planes !== null ? planes.length : 0,\n\t\t\tdstArray = null;\n\n\t\tif ( nPlanes !== 0 ) {\n\n\t\t\tdstArray = uniform.value;\n\n\t\t\tif ( skipTransform !== true || dstArray === null ) {\n\n\t\t\t\tvar flatSize = dstOffset + nPlanes * 4,\n\t\t\t\t\tviewMatrix = camera.matrixWorldInverse;\n\n\t\t\t\tviewNormalMatrix.getNormalMatrix( viewMatrix );\n\n\t\t\t\tif ( dstArray === null || dstArray.length < flatSize ) {\n\n\t\t\t\t\tdstArray = new Float32Array( flatSize );\n\n\t\t\t\t}\n\n\t\t\t\tfor ( var i = 0, i4 = dstOffset;\n\t\t\t\t\t\t\t\t\ti !== nPlanes; ++ i, i4 += 4 ) {\n\n\t\t\t\t\tplane.copy( planes[ i ] ).\n\t\t\t\t\t\t\tapplyMatrix4( viewMatrix, viewNormalMatrix );\n\n\t\t\t\t\tplane.normal.toArray( dstArray, i4 );\n\t\t\t\t\tdstArray[ i4 + 3 ] = plane.constant;\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t\tuniform.value = dstArray;\n\t\t\tuniform.needsUpdate = true;\n\n\t\t}\n\n\t\tscope.numPlanes = nPlanes;\n\t\t\n\t\treturn dstArray;\n\n\t}\n\n}\n\nexport { WebGLClipping };\n","import { REVISION, MaxEquation, MinEquation, RGB_ETC1_Format, RGBA_PVRTC_2BPPV1_Format, RGBA_PVRTC_4BPPV1_Format, RGB_PVRTC_2BPPV1_Format, RGB_PVRTC_4BPPV1_Format, RGBA_S3TC_DXT5_Format, RGBA_S3TC_DXT3_Format, RGBA_S3TC_DXT1_Format, RGB_S3TC_DXT1_Format, SrcAlphaSaturateFactor, OneMinusDstColorFactor, DstColorFactor, OneMinusDstAlphaFactor, DstAlphaFactor, OneMinusSrcAlphaFactor, SrcAlphaFactor, OneMinusSrcColorFactor, SrcColorFactor, OneFactor, ZeroFactor, ReverseSubtractEquation, SubtractEquation, AddEquation, DepthFormat, DepthStencilFormat, LuminanceAlphaFormat, LuminanceFormat, RGBAFormat, RGBFormat, AlphaFormat, HalfFloatType, FloatType, UnsignedIntType, IntType, UnsignedShortType, ShortType, ByteType, UnsignedInt248Type, UnsignedShort565Type, UnsignedShort5551Type, UnsignedShort4444Type, UnsignedByteType, LinearMipMapLinearFilter, LinearMipMapNearestFilter, LinearFilter, NearestMipMapLinearFilter, NearestMipMapNearestFilter, NearestFilter, MirroredRepeatWrapping, ClampToEdgeWrapping, RepeatWrapping, FrontFaceDirectionCW, NoBlending, BackSide, DoubleSide, TriangleFanDrawMode, TriangleStripDrawMode, TrianglesDrawMode, NoColors, FlatShading, LinearToneMapping } from '../constants';\nimport { Matrix4 } from '../math/Matrix4';\nimport { WebGLUniforms } from './webgl/WebGLUniforms';\nimport { UniformsUtils } from './shaders/UniformsUtils';\nimport { ShaderLib } from './shaders/ShaderLib';\nimport { LensFlarePlugin } from './webgl/plugins/LensFlarePlugin';\nimport { SpritePlugin } from './webgl/plugins/SpritePlugin';\nimport { WebGLShadowMap } from './webgl/WebGLShadowMap';\nimport { ShaderMaterial } from '../materials/ShaderMaterial';\nimport { Mesh } from '../objects/Mesh';\nimport { BoxBufferGeometry } from '../geometries/BoxBufferGeometry';\nimport { PlaneBufferGeometry } from '../geometries/PlaneBufferGeometry';\nimport { MeshBasicMaterial } from '../materials/MeshBasicMaterial';\nimport { PerspectiveCamera } from '../cameras/PerspectiveCamera';\nimport { OrthographicCamera } from '../cameras/OrthographicCamera';\nimport { WebGLIndexedBufferRenderer } from './webgl/WebGLIndexedBufferRenderer';\nimport { WebGLBufferRenderer } from './webgl/WebGLBufferRenderer';\nimport { WebGLLights } from './webgl/WebGLLights';\nimport { WebGLPrograms } from './webgl/WebGLPrograms';\nimport { WebGLObjects } from './webgl/WebGLObjects';\nimport { WebGLTextures } from './webgl/WebGLTextures';\nimport { WebGLProperties } from './webgl/WebGLProperties';\nimport { WebGLState } from './webgl/WebGLState';\nimport { WebGLCapabilities } from './webgl/WebGLCapabilities';\nimport { BufferGeometry } from '../core/BufferGeometry';\nimport { WebGLExtensions } from './webgl/WebGLExtensions';\nimport { Vector3 } from '../math/Vector3';\nimport { Sphere } from '../math/Sphere';\nimport { WebGLClipping } from './webgl/WebGLClipping';\nimport { Frustum } from '../math/Frustum';\nimport { Vector4 } from '../math/Vector4';\nimport { Color } from '../math/Color';\n\n/**\n * @author supereggbert / http://www.paulbrunt.co.uk/\n * @author mrdoob / http://mrdoob.com/\n * @author alteredq / http://alteredqualia.com/\n * @author szimek / https://github.com/szimek/\n * @author tschw\n */\n\nfunction WebGLRenderer( parameters ) {\n\n\tconsole.log( 'THREE.WebGLRenderer', REVISION );\n\n\tparameters = parameters || {};\n\n\tvar _canvas = parameters.canvas !== undefined ? parameters.canvas : document.createElementNS( 'http://www.w3.org/1999/xhtml', 'canvas' ),\n\t_context = parameters.context !== undefined ? parameters.context : null,\n\n\t_alpha = parameters.alpha !== undefined ? parameters.alpha : false,\n\t_depth = parameters.depth !== undefined ? parameters.depth : true,\n\t_stencil = parameters.stencil !== undefined ? parameters.stencil : true,\n\t_antialias = parameters.antialias !== undefined ? parameters.antialias : false,\n\t_premultipliedAlpha = parameters.premultipliedAlpha !== undefined ? parameters.premultipliedAlpha : true,\n\t_preserveDrawingBuffer = parameters.preserveDrawingBuffer !== undefined ? parameters.preserveDrawingBuffer : false;\n\n\tvar lights = [];\n\n\tvar opaqueObjects = [];\n\tvar opaqueObjectsLastIndex = - 1;\n\tvar transparentObjects = [];\n\tvar transparentObjectsLastIndex = - 1;\n\n\tvar morphInfluences = new Float32Array( 8 );\n\n\tvar sprites = [];\n\tvar lensFlares = [];\n\n\t// public properties\n\n\tthis.domElement = _canvas;\n\tthis.context = null;\n\n\t// clearing\n\n\tthis.autoClear = true;\n\tthis.autoClearColor = true;\n\tthis.autoClearDepth = true;\n\tthis.autoClearStencil = true;\n\n\t// scene graph\n\n\tthis.sortObjects = true;\n\n\t// user-defined clipping\n\n\tthis.clippingPlanes = [];\n\tthis.localClippingEnabled = false;\n\n\t// physically based shading\n\n\tthis.gammaFactor = 2.0;\t// for backwards compatibility\n\tthis.gammaInput = false;\n\tthis.gammaOutput = false;\n\n\t// physical lights\n\n\tthis.physicallyCorrectLights = false;\n\n\t// tone mapping\n\n\tthis.toneMapping = LinearToneMapping;\n\tthis.toneMappingExposure = 1.0;\n\tthis.toneMappingWhitePoint = 1.0;\n\n\t// morphs\n\n\tthis.maxMorphTargets = 8;\n\tthis.maxMorphNormals = 4;\n\n\t// internal properties\n\n\tvar _this = this,\n\n\t// internal state cache\n\n\t_currentProgram = null,\n\t_currentRenderTarget = null,\n\t_currentFramebuffer = null,\n\t_currentMaterialId = - 1,\n\t_currentGeometryProgram = '',\n\t_currentCamera = null,\n\n\t_currentScissor = new Vector4(),\n\t_currentScissorTest = null,\n\n\t_currentViewport = new Vector4(),\n\n\t//\n\n\t_usedTextureUnits = 0,\n\n\t//\n\n\t_clearColor = new Color( 0x000000 ),\n\t_clearAlpha = 0,\n\n\t_width = _canvas.width,\n\t_height = _canvas.height,\n\n\t_pixelRatio = 1,\n\n\t_scissor = new Vector4( 0, 0, _width, _height ),\n\t_scissorTest = false,\n\n\t_viewport = new Vector4( 0, 0, _width, _height ),\n\n\t// frustum\n\n\t_frustum = new Frustum(),\n\n\t// clipping\n\n\t_clipping = new WebGLClipping(),\n\t_clippingEnabled = false,\n\t_localClippingEnabled = false,\n\n\t_sphere = new Sphere(),\n\n\t// camera matrices cache\n\n\t_projScreenMatrix = new Matrix4(),\n\n\t_vector3 = new Vector3(),\n\n\t// light arrays cache\n\n\t_lights = {\n\n\t\thash: '',\n\n\t\tambient: [ 0, 0, 0 ],\n\t\tdirectional: [],\n\t\tdirectionalShadowMap: [],\n\t\tdirectionalShadowMatrix: [],\n\t\tspot: [],\n\t\tspotShadowMap: [],\n\t\tspotShadowMatrix: [],\n\t\tpoint: [],\n\t\tpointShadowMap: [],\n\t\tpointShadowMatrix: [],\n\t\themi: [],\n\n\t\tshadows: []\n\n\t},\n\n\t// info\n\n\t_infoRender = {\n\n\t\tcalls: 0,\n\t\tvertices: 0,\n\t\tfaces: 0,\n\t\tpoints: 0\n\n\t};\n\n\tthis.info = {\n\n\t\trender: _infoRender,\n\t\tmemory: {\n\n\t\t\tgeometries: 0,\n\t\t\ttextures: 0\n\n\t\t},\n\t\tprograms: null\n\n\t};\n\n\n\t// initialize\n\n\tvar _gl;\n\n\ttry {\n\n\t\tvar attributes = {\n\t\t\talpha: _alpha,\n\t\t\tdepth: _depth,\n\t\t\tstencil: _stencil,\n\t\t\tantialias: _antialias,\n\t\t\tpremultipliedAlpha: _premultipliedAlpha,\n\t\t\tpreserveDrawingBuffer: _preserveDrawingBuffer\n\t\t};\n\n\t\t_gl = _context || _canvas.getContext( 'webgl', attributes ) || _canvas.getContext( 'experimental-webgl', attributes );\n\n\t\tif ( _gl === null ) {\n\n\t\t\tif ( _canvas.getContext( 'webgl' ) !== null ) {\n\n\t\t\t\tthrow 'Error creating WebGL context with your selected attributes.';\n\n\t\t\t} else {\n\n\t\t\t\tthrow 'Error creating WebGL context.';\n\n\t\t\t}\n\n\t\t}\n\n\t\t// Some experimental-webgl implementations do not have getShaderPrecisionFormat\n\n\t\tif ( _gl.getShaderPrecisionFormat === undefined ) {\n\n\t\t\t_gl.getShaderPrecisionFormat = function () {\n\n\t\t\t\treturn { 'rangeMin': 1, 'rangeMax': 1, 'precision': 1 };\n\n\t\t\t};\n\n\t\t}\n\n\t\t_canvas.addEventListener( 'webglcontextlost', onContextLost, false );\n\n\t} catch ( error ) {\n\n\t\tconsole.error( 'THREE.WebGLRenderer: ' + error );\n\n\t}\n\n\tvar extensions = new WebGLExtensions( _gl );\n\n\textensions.get( 'WEBGL_depth_texture' );\n\textensions.get( 'OES_texture_float' );\n\textensions.get( 'OES_texture_float_linear' );\n\textensions.get( 'OES_texture_half_float' );\n\textensions.get( 'OES_texture_half_float_linear' );\n\textensions.get( 'OES_standard_derivatives' );\n\textensions.get( 'ANGLE_instanced_arrays' );\n\n\tif ( extensions.get( 'OES_element_index_uint' ) ) {\n\n\t\tBufferGeometry.MaxIndex = 4294967296;\n\n\t}\n\n\tvar capabilities = new WebGLCapabilities( _gl, extensions, parameters );\n\n\tvar state = new WebGLState( _gl, extensions, paramThreeToGL );\n\tvar properties = new WebGLProperties();\n\tvar textures = new WebGLTextures( _gl, extensions, state, properties, capabilities, paramThreeToGL, this.info );\n\tvar objects = new WebGLObjects( _gl, properties, this.info );\n\tvar programCache = new WebGLPrograms( this, capabilities );\n\tvar lightCache = new WebGLLights();\n\n\tthis.info.programs = programCache.programs;\n\n\tvar bufferRenderer = new WebGLBufferRenderer( _gl, extensions, _infoRender );\n\tvar indexedBufferRenderer = new WebGLIndexedBufferRenderer( _gl, extensions, _infoRender );\n\n\t//\n\n\tvar backgroundCamera = new OrthographicCamera( - 1, 1, 1, - 1, 0, 1 );\n\tvar backgroundCamera2 = new PerspectiveCamera();\n\tvar backgroundPlaneMesh = new Mesh(\n\t\tnew PlaneBufferGeometry( 2, 2 ),\n\t\tnew MeshBasicMaterial( { depthTest: false, depthWrite: false, fog: false } )\n\t);\n\tvar backgroundBoxShader = ShaderLib[ 'cube' ];\n\tvar backgroundBoxMesh = new Mesh(\n\t\tnew BoxBufferGeometry( 5, 5, 5 ),\n\t\tnew ShaderMaterial( {\n\t\t\tuniforms: backgroundBoxShader.uniforms,\n\t\t\tvertexShader: backgroundBoxShader.vertexShader,\n\t\t\tfragmentShader: backgroundBoxShader.fragmentShader,\n\t\t\tside: BackSide,\n\t\t\tdepthTest: false,\n\t\t\tdepthWrite: false,\n\t\t\tfog: false\n\t\t} )\n\t);\n\n\t//\n\n\tfunction getTargetPixelRatio() {\n\n\t\treturn _currentRenderTarget === null ? _pixelRatio : 1;\n\n\t}\n\n\tfunction setDefaultGLState() {\n\n\t\tstate.init();\n\n\t\tstate.scissor( _currentScissor.copy( _scissor ).multiplyScalar( _pixelRatio ) );\n\t\tstate.viewport( _currentViewport.copy( _viewport ).multiplyScalar( _pixelRatio ) );\n\n\t\tstate.buffers.color.setClear( _clearColor.r, _clearColor.g, _clearColor.b, _clearAlpha, _premultipliedAlpha );\n\n\t}\n\n\tfunction resetGLState() {\n\n\t\t_currentProgram = null;\n\t\t_currentCamera = null;\n\n\t\t_currentGeometryProgram = '';\n\t\t_currentMaterialId = - 1;\n\n\t\tstate.reset();\n\n\t}\n\n\tsetDefaultGLState();\n\n\tthis.context = _gl;\n\tthis.capabilities = capabilities;\n\tthis.extensions = extensions;\n\tthis.properties = properties;\n\tthis.state = state;\n\n\t// shadow map\n\n\tvar shadowMap = new WebGLShadowMap( this, _lights, objects, capabilities );\n\n\tthis.shadowMap = shadowMap;\n\n\n\t// Plugins\n\n\tvar spritePlugin = new SpritePlugin( this, sprites );\n\tvar lensFlarePlugin = new LensFlarePlugin( this, lensFlares );\n\n\t// API\n\n\tthis.getContext = function () {\n\n\t\treturn _gl;\n\n\t};\n\n\tthis.getContextAttributes = function () {\n\n\t\treturn _gl.getContextAttributes();\n\n\t};\n\n\tthis.forceContextLoss = function () {\n\n\t\textensions.get( 'WEBGL_lose_context' ).loseContext();\n\n\t};\n\n\tthis.getMaxAnisotropy = function () {\n\n\t\treturn capabilities.getMaxAnisotropy();\n\n\t};\n\n\tthis.getPrecision = function () {\n\n\t\treturn capabilities.precision;\n\n\t};\n\n\tthis.getPixelRatio = function () {\n\n\t\treturn _pixelRatio;\n\n\t};\n\n\tthis.setPixelRatio = function ( value ) {\n\n\t\tif ( value === undefined ) return;\n\n\t\t_pixelRatio = value;\n\n\t\tthis.setSize( _viewport.z, _viewport.w, false );\n\n\t};\n\n\tthis.getSize = function () {\n\n\t\treturn {\n\t\t\twidth: _width,\n\t\t\theight: _height\n\t\t};\n\n\t};\n\n\tthis.setSize = function ( width, height, updateStyle ) {\n\n\t\t_width = width;\n\t\t_height = height;\n\n\t\t_canvas.width = width * _pixelRatio;\n\t\t_canvas.height = height * _pixelRatio;\n\n\t\tif ( updateStyle !== false ) {\n\n\t\t\t_canvas.style.width = width + 'px';\n\t\t\t_canvas.style.height = height + 'px';\n\n\t\t}\n\n\t\tthis.setViewport( 0, 0, width, height );\n\n\t};\n\n\tthis.setViewport = function ( x, y, width, height ) {\n\n\t\tstate.viewport( _viewport.set( x, y, width, height ) );\n\n\t};\n\n\tthis.setScissor = function ( x, y, width, height ) {\n\n\t\tstate.scissor( _scissor.set( x, y, width, height ) );\n\n\t};\n\n\tthis.setScissorTest = function ( boolean ) {\n\n\t\tstate.setScissorTest( _scissorTest = boolean );\n\n\t};\n\n\t// Clearing\n\n\tthis.getClearColor = function () {\n\n\t\treturn _clearColor;\n\n\t};\n\n\tthis.setClearColor = function ( color, alpha ) {\n\n\t\t_clearColor.set( color );\n\n\t\t_clearAlpha = alpha !== undefined ? alpha : 1;\n\n\t\tstate.buffers.color.setClear( _clearColor.r, _clearColor.g, _clearColor.b, _clearAlpha, _premultipliedAlpha );\n\n\t};\n\n\tthis.getClearAlpha = function () {\n\n\t\treturn _clearAlpha;\n\n\t};\n\n\tthis.setClearAlpha = function ( alpha ) {\n\n\t\t_clearAlpha = alpha;\n\n\t\tstate.buffers.color.setClear( _clearColor.r, _clearColor.g, _clearColor.b, _clearAlpha, _premultipliedAlpha );\n\n\t};\n\n\tthis.clear = function ( color, depth, stencil ) {\n\n\t\tvar bits = 0;\n\n\t\tif ( color === undefined || color ) bits |= _gl.COLOR_BUFFER_BIT;\n\t\tif ( depth === undefined || depth ) bits |= _gl.DEPTH_BUFFER_BIT;\n\t\tif ( stencil === undefined || stencil ) bits |= _gl.STENCIL_BUFFER_BIT;\n\n\t\t_gl.clear( bits );\n\n\t};\n\n\tthis.clearColor = function () {\n\n\t\tthis.clear( true, false, false );\n\n\t};\n\n\tthis.clearDepth = function () {\n\n\t\tthis.clear( false, true, false );\n\n\t};\n\n\tthis.clearStencil = function () {\n\n\t\tthis.clear( false, false, true );\n\n\t};\n\n\tthis.clearTarget = function ( renderTarget, color, depth, stencil ) {\n\n\t\tthis.setRenderTarget( renderTarget );\n\t\tthis.clear( color, depth, stencil );\n\n\t};\n\n\t// Reset\n\n\tthis.resetGLState = resetGLState;\n\n\tthis.dispose = function() {\n\n\t\ttransparentObjects = [];\n\t\ttransparentObjectsLastIndex = -1;\n\t\topaqueObjects = [];\n\t\topaqueObjectsLastIndex = -1;\n\n\t\t_canvas.removeEventListener( 'webglcontextlost', onContextLost, false );\n\n\t};\n\n\t// Events\n\n\tfunction onContextLost( event ) {\n\n\t\tevent.preventDefault();\n\n\t\tresetGLState();\n\t\tsetDefaultGLState();\n\n\t\tproperties.clear();\n\n\t}\n\n\tfunction onMaterialDispose( event ) {\n\n\t\tvar material = event.target;\n\n\t\tmaterial.removeEventListener( 'dispose', onMaterialDispose );\n\n\t\tdeallocateMaterial( material );\n\n\t}\n\n\t// Buffer deallocation\n\n\tfunction deallocateMaterial( material ) {\n\n\t\treleaseMaterialProgramReference( material );\n\n\t\tproperties.delete( material );\n\n\t}\n\n\n\tfunction releaseMaterialProgramReference( material ) {\n\n\t\tvar programInfo = properties.get( material ).program;\n\n\t\tmaterial.program = undefined;\n\n\t\tif ( programInfo !== undefined ) {\n\n\t\t\tprogramCache.releaseProgram( programInfo );\n\n\t\t}\n\n\t}\n\n\t// Buffer rendering\n\n\tthis.renderBufferImmediate = function ( object, program, material ) {\n\n\t\tstate.initAttributes();\n\n\t\tvar buffers = properties.get( object );\n\n\t\tif ( object.hasPositions && ! buffers.position ) buffers.position = _gl.createBuffer();\n\t\tif ( object.hasNormals && ! buffers.normal ) buffers.normal = _gl.createBuffer();\n\t\tif ( object.hasUvs && ! buffers.uv ) buffers.uv = _gl.createBuffer();\n\t\tif ( object.hasColors && ! buffers.color ) buffers.color = _gl.createBuffer();\n\n\t\tvar attributes = program.getAttributes();\n\n\t\tif ( object.hasPositions ) {\n\n\t\t\t_gl.bindBuffer( _gl.ARRAY_BUFFER, buffers.position );\n\t\t\t_gl.bufferData( _gl.ARRAY_BUFFER, object.positionArray, _gl.DYNAMIC_DRAW );\n\n\t\t\tstate.enableAttribute( attributes.position );\n\t\t\t_gl.vertexAttribPointer( attributes.position, 3, _gl.FLOAT, false, 0, 0 );\n\n\t\t}\n\n\t\tif ( object.hasNormals ) {\n\n\t\t\t_gl.bindBuffer( _gl.ARRAY_BUFFER, buffers.normal );\n\n\t\t\tif ( ! material.isMeshPhongMaterial &&\n\t\t\t ! material.isMeshStandardMaterial &&\n\t\t\t material.shading === FlatShading ) {\n\n\t\t\t\tfor ( var i = 0, l = object.count * 3; i < l; i += 9 ) {\n\n\t\t\t\t\tvar array = object.normalArray;\n\n\t\t\t\t\tvar nx = ( array[ i + 0 ] + array[ i + 3 ] + array[ i + 6 ] ) / 3;\n\t\t\t\t\tvar ny = ( array[ i + 1 ] + array[ i + 4 ] + array[ i + 7 ] ) / 3;\n\t\t\t\t\tvar nz = ( array[ i + 2 ] + array[ i + 5 ] + array[ i + 8 ] ) / 3;\n\n\t\t\t\t\tarray[ i + 0 ] = nx;\n\t\t\t\t\tarray[ i + 1 ] = ny;\n\t\t\t\t\tarray[ i + 2 ] = nz;\n\n\t\t\t\t\tarray[ i + 3 ] = nx;\n\t\t\t\t\tarray[ i + 4 ] = ny;\n\t\t\t\t\tarray[ i + 5 ] = nz;\n\n\t\t\t\t\tarray[ i + 6 ] = nx;\n\t\t\t\t\tarray[ i + 7 ] = ny;\n\t\t\t\t\tarray[ i + 8 ] = nz;\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t\t_gl.bufferData( _gl.ARRAY_BUFFER, object.normalArray, _gl.DYNAMIC_DRAW );\n\n\t\t\tstate.enableAttribute( attributes.normal );\n\n\t\t\t_gl.vertexAttribPointer( attributes.normal, 3, _gl.FLOAT, false, 0, 0 );\n\n\t\t}\n\n\t\tif ( object.hasUvs && material.map ) {\n\n\t\t\t_gl.bindBuffer( _gl.ARRAY_BUFFER, buffers.uv );\n\t\t\t_gl.bufferData( _gl.ARRAY_BUFFER, object.uvArray, _gl.DYNAMIC_DRAW );\n\n\t\t\tstate.enableAttribute( attributes.uv );\n\n\t\t\t_gl.vertexAttribPointer( attributes.uv, 2, _gl.FLOAT, false, 0, 0 );\n\n\t\t}\n\n\t\tif ( object.hasColors && material.vertexColors !== NoColors ) {\n\n\t\t\t_gl.bindBuffer( _gl.ARRAY_BUFFER, buffers.color );\n\t\t\t_gl.bufferData( _gl.ARRAY_BUFFER, object.colorArray, _gl.DYNAMIC_DRAW );\n\n\t\t\tstate.enableAttribute( attributes.color );\n\n\t\t\t_gl.vertexAttribPointer( attributes.color, 3, _gl.FLOAT, false, 0, 0 );\n\n\t\t}\n\n\t\tstate.disableUnusedAttributes();\n\n\t\t_gl.drawArrays( _gl.TRIANGLES, 0, object.count );\n\n\t\tobject.count = 0;\n\n\t};\n\n\tthis.renderBufferDirect = function ( camera, fog, geometry, material, object, group ) {\n\n\t\tsetMaterial( material );\n\n\t\tvar program = setProgram( camera, fog, material, object );\n\n\t\tvar updateBuffers = false;\n\t\tvar geometryProgram = geometry.id + '_' + program.id + '_' + material.wireframe;\n\n\t\tif ( geometryProgram !== _currentGeometryProgram ) {\n\n\t\t\t_currentGeometryProgram = geometryProgram;\n\t\t\tupdateBuffers = true;\n\n\t\t}\n\n\t\t// morph targets\n\n\t\tvar morphTargetInfluences = object.morphTargetInfluences;\n\n\t\tif ( morphTargetInfluences !== undefined ) {\n\n\t\t\tvar activeInfluences = [];\n\n\t\t\tfor ( var i = 0, l = morphTargetInfluences.length; i < l; i ++ ) {\n\n\t\t\t\tvar influence = morphTargetInfluences[ i ];\n\t\t\t\tactiveInfluences.push( [ influence, i ] );\n\n\t\t\t}\n\n\t\t\tactiveInfluences.sort( absNumericalSort );\n\n\t\t\tif ( activeInfluences.length > 8 ) {\n\n\t\t\t\tactiveInfluences.length = 8;\n\n\t\t\t}\n\n\t\t\tvar morphAttributes = geometry.morphAttributes;\n\n\t\t\tfor ( var i = 0, l = activeInfluences.length; i < l; i ++ ) {\n\n\t\t\t\tvar influence = activeInfluences[ i ];\n\t\t\t\tmorphInfluences[ i ] = influence[ 0 ];\n\n\t\t\t\tif ( influence[ 0 ] !== 0 ) {\n\n\t\t\t\t\tvar index = influence[ 1 ];\n\n\t\t\t\t\tif ( material.morphTargets === true && morphAttributes.position ) geometry.addAttribute( 'morphTarget' + i, morphAttributes.position[ index ] );\n\t\t\t\t\tif ( material.morphNormals === true && morphAttributes.normal ) geometry.addAttribute( 'morphNormal' + i, morphAttributes.normal[ index ] );\n\n\t\t\t\t} else {\n\n\t\t\t\t\tif ( material.morphTargets === true ) geometry.removeAttribute( 'morphTarget' + i );\n\t\t\t\t\tif ( material.morphNormals === true ) geometry.removeAttribute( 'morphNormal' + i );\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t\tfor ( var i = activeInfluences.length, il = morphInfluences.length; i < il; i ++ ) {\n\n\t\t\t\tmorphInfluences[ i ] = 0.0;\n\n\t\t\t}\n\n\t\t\tprogram.getUniforms().setValue(\n\t\t\t\t\t_gl, 'morphTargetInfluences', morphInfluences );\n\n\t\t\tupdateBuffers = true;\n\n\t\t}\n\n\t\t//\n\n\t\tvar index = geometry.index;\n\t\tvar position = geometry.attributes.position;\n\t\tvar rangeFactor = 1;\n\n\t\tif ( material.wireframe === true ) {\n\n\t\t\tindex = objects.getWireframeAttribute( geometry );\n\t\t\trangeFactor = 2;\n\n\t\t}\n\n\t\tvar renderer;\n\n\t\tif ( index !== null ) {\n\n\t\t\trenderer = indexedBufferRenderer;\n\t\t\trenderer.setIndex( index );\n\n\t\t} else {\n\n\t\t\trenderer = bufferRenderer;\n\n\t\t}\n\n\t\tif ( updateBuffers ) {\n\n\t\t\tsetupVertexAttributes( material, program, geometry );\n\n\t\t\tif ( index !== null ) {\n\n\t\t\t\t_gl.bindBuffer( _gl.ELEMENT_ARRAY_BUFFER, objects.getAttributeBuffer( index ) );\n\n\t\t\t}\n\n\t\t}\n\n\t\t//\n\n\t\tvar dataCount = 0;\n\n\t\tif ( index !== null ) {\n\n\t\t\tdataCount = index.count;\n\n\t\t} else if ( position !== undefined ) {\n\n\t\t\tdataCount = position.count;\n\n\t\t}\n\n\t\tvar rangeStart = geometry.drawRange.start * rangeFactor;\n\t\tvar rangeCount = geometry.drawRange.count * rangeFactor;\n\n\t\tvar groupStart = group !== null ? group.start * rangeFactor : 0;\n\t\tvar groupCount = group !== null ? group.count * rangeFactor : Infinity;\n\n\t\tvar drawStart = Math.max( rangeStart, groupStart );\n\t\tvar drawEnd = Math.min( dataCount, rangeStart + rangeCount, groupStart + groupCount ) - 1;\n\n\t\tvar drawCount = Math.max( 0, drawEnd - drawStart + 1 );\n\n\t\tif ( drawCount === 0 ) return;\n\n\t\t//\n\n\t\tif ( object.isMesh ) {\n\n\t\t\tif ( material.wireframe === true ) {\n\n\t\t\t\tstate.setLineWidth( material.wireframeLinewidth * getTargetPixelRatio() );\n\t\t\t\trenderer.setMode( _gl.LINES );\n\n\t\t\t} else {\n\n\t\t\t\tswitch ( object.drawMode ) {\n\n\t\t\t\t\tcase TrianglesDrawMode:\n\t\t\t\t\t\trenderer.setMode( _gl.TRIANGLES );\n\t\t\t\t\t\tbreak;\n\n\t\t\t\t\tcase TriangleStripDrawMode:\n\t\t\t\t\t\trenderer.setMode( _gl.TRIANGLE_STRIP );\n\t\t\t\t\t\tbreak;\n\n\t\t\t\t\tcase TriangleFanDrawMode:\n\t\t\t\t\t\trenderer.setMode( _gl.TRIANGLE_FAN );\n\t\t\t\t\t\tbreak;\n\n\t\t\t\t}\n\n\t\t\t}\n\n\n\t\t} else if ( object.isLine ) {\n\n\t\t\tvar lineWidth = material.linewidth;\n\n\t\t\tif ( lineWidth === undefined ) lineWidth = 1; // Not using Line*Material\n\n\t\t\tstate.setLineWidth( lineWidth * getTargetPixelRatio() );\n\n\t\t\tif ( object.isLineSegments ) {\n\n\t\t\t\trenderer.setMode( _gl.LINES );\n\n\t\t\t} else {\n\n\t\t\t\trenderer.setMode( _gl.LINE_STRIP );\n\n\t\t\t}\n\n\t\t} else if ( object.isPoints ) {\n\n\t\t\trenderer.setMode( _gl.POINTS );\n\n\t\t}\n\n\t\tif ( geometry && geometry.isInstancedBufferGeometry ) {\n\n\t\t\tif ( geometry.maxInstancedCount > 0 ) {\n\n\t\t\t\trenderer.renderInstances( geometry, drawStart, drawCount );\n\n\t\t\t}\n\n\t\t} else {\n\n\t\t\trenderer.render( drawStart, drawCount );\n\n\t\t}\n\n\t};\n\n\tfunction setupVertexAttributes( material, program, geometry, startIndex ) {\n\n\t\tvar extension;\n\n\t\tif ( geometry && geometry.isInstancedBufferGeometry ) {\n\n\t\t\textension = extensions.get( 'ANGLE_instanced_arrays' );\n\n\t\t\tif ( extension === null ) {\n\n\t\t\t\tconsole.error( 'THREE.WebGLRenderer.setupVertexAttributes: using THREE.InstancedBufferGeometry but hardware does not support extension ANGLE_instanced_arrays.' );\n\t\t\t\treturn;\n\n\t\t\t}\n\n\t\t}\n\n\t\tif ( startIndex === undefined ) startIndex = 0;\n\n\t\tstate.initAttributes();\n\n\t\tvar geometryAttributes = geometry.attributes;\n\n\t\tvar programAttributes = program.getAttributes();\n\n\t\tvar materialDefaultAttributeValues = material.defaultAttributeValues;\n\n\t\tfor ( var name in programAttributes ) {\n\n\t\t\tvar programAttribute = programAttributes[ name ];\n\n\t\t\tif ( programAttribute >= 0 ) {\n\n\t\t\t\tvar geometryAttribute = geometryAttributes[ name ];\n\n\t\t\t\tif ( geometryAttribute !== undefined ) {\n\n\t\t\t\t\tvar type = _gl.FLOAT;\n\t\t\t\t\tvar array = geometryAttribute.array;\n\t\t\t\t\tvar normalized = geometryAttribute.normalized;\n\n\t\t\t\t\tif ( array instanceof Float32Array ) {\n\n\t\t\t\t\t\ttype = _gl.FLOAT;\n\n\t\t\t\t\t} else if ( array instanceof Float64Array ) {\n\n\t\t\t\t\t\tconsole.warn( \"Unsupported data buffer format: Float64Array\" );\n\n\t\t\t\t\t} else if ( array instanceof Uint16Array ) {\n\n\t\t\t\t\t\ttype = _gl.UNSIGNED_SHORT;\n\n\t\t\t\t\t} else if ( array instanceof Int16Array ) {\n\n\t\t\t\t\t\ttype = _gl.SHORT;\n\n\t\t\t\t\t} else if ( array instanceof Uint32Array ) {\n\n\t\t\t\t\t\ttype = _gl.UNSIGNED_INT;\n\n\t\t\t\t\t} else if ( array instanceof Int32Array ) {\n\n\t\t\t\t\t\ttype = _gl.INT;\n\n\t\t\t\t\t} else if ( array instanceof Int8Array ) {\n\n\t\t\t\t\t\ttype = _gl.BYTE;\n\n\t\t\t\t\t} else if ( array instanceof Uint8Array ) {\n\n\t\t\t\t\t\ttype = _gl.UNSIGNED_BYTE;\n\n\t\t\t\t\t}\n\n\t\t\t\t\tvar size = geometryAttribute.itemSize;\n\t\t\t\t\tvar buffer = objects.getAttributeBuffer( geometryAttribute );\n\n\t\t\t\t\tif ( geometryAttribute.isInterleavedBufferAttribute ) {\n\n\t\t\t\t\t\tvar data = geometryAttribute.data;\n\t\t\t\t\t\tvar stride = data.stride;\n\t\t\t\t\t\tvar offset = geometryAttribute.offset;\n\n\t\t\t\t\t\tif ( data && data.isInstancedInterleavedBuffer ) {\n\n\t\t\t\t\t\t\tstate.enableAttributeAndDivisor( programAttribute, data.meshPerAttribute, extension );\n\n\t\t\t\t\t\t\tif ( geometry.maxInstancedCount === undefined ) {\n\n\t\t\t\t\t\t\t\tgeometry.maxInstancedCount = data.meshPerAttribute * data.count;\n\n\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t} else {\n\n\t\t\t\t\t\t\tstate.enableAttribute( programAttribute );\n\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\t_gl.bindBuffer( _gl.ARRAY_BUFFER, buffer );\n\t\t\t\t\t\t_gl.vertexAttribPointer( programAttribute, size, type, normalized, stride * data.array.BYTES_PER_ELEMENT, ( startIndex * stride + offset ) * data.array.BYTES_PER_ELEMENT );\n\n\t\t\t\t\t} else {\n\n\t\t\t\t\t\tif ( geometryAttribute.isInstancedBufferAttribute ) {\n\n\t\t\t\t\t\t\tstate.enableAttributeAndDivisor( programAttribute, geometryAttribute.meshPerAttribute, extension );\n\n\t\t\t\t\t\t\tif ( geometry.maxInstancedCount === undefined ) {\n\n\t\t\t\t\t\t\t\tgeometry.maxInstancedCount = geometryAttribute.meshPerAttribute * geometryAttribute.count;\n\n\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t} else {\n\n\t\t\t\t\t\t\tstate.enableAttribute( programAttribute );\n\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\t_gl.bindBuffer( _gl.ARRAY_BUFFER, buffer );\n\t\t\t\t\t\t_gl.vertexAttribPointer( programAttribute, size, type, normalized, 0, startIndex * size * geometryAttribute.array.BYTES_PER_ELEMENT );\n\n\t\t\t\t\t}\n\n\t\t\t\t} else if ( materialDefaultAttributeValues !== undefined ) {\n\n\t\t\t\t\tvar value = materialDefaultAttributeValues[ name ];\n\n\t\t\t\t\tif ( value !== undefined ) {\n\n\t\t\t\t\t\tswitch ( value.length ) {\n\n\t\t\t\t\t\t\tcase 2:\n\t\t\t\t\t\t\t\t_gl.vertexAttrib2fv( programAttribute, value );\n\t\t\t\t\t\t\t\tbreak;\n\n\t\t\t\t\t\t\tcase 3:\n\t\t\t\t\t\t\t\t_gl.vertexAttrib3fv( programAttribute, value );\n\t\t\t\t\t\t\t\tbreak;\n\n\t\t\t\t\t\t\tcase 4:\n\t\t\t\t\t\t\t\t_gl.vertexAttrib4fv( programAttribute, value );\n\t\t\t\t\t\t\t\tbreak;\n\n\t\t\t\t\t\t\tdefault:\n\t\t\t\t\t\t\t\t_gl.vertexAttrib1fv( programAttribute, value );\n\n\t\t\t\t\t\t}\n\n\t\t\t\t\t}\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t}\n\n\t\tstate.disableUnusedAttributes();\n\n\t}\n\n\t// Sorting\n\n\tfunction absNumericalSort( a, b ) {\n\n\t\treturn Math.abs( b[ 0 ] ) - Math.abs( a[ 0 ] );\n\n\t}\n\n\tfunction painterSortStable( a, b ) {\n\n\t\tif ( a.object.renderOrder !== b.object.renderOrder ) {\n\n\t\t\treturn a.object.renderOrder - b.object.renderOrder;\n\n\t\t} else if ( a.material.program && b.material.program && a.material.program !== b.material.program ) {\n\n\t\t\treturn a.material.program.id - b.material.program.id;\n\n\t\t} else if ( a.material.id !== b.material.id ) {\n\n\t\t\treturn a.material.id - b.material.id;\n\n\t\t} else if ( a.z !== b.z ) {\n\n\t\t\treturn a.z - b.z;\n\n\t\t} else {\n\n\t\t\treturn a.id - b.id;\n\n\t\t}\n\n\t}\n\n\tfunction reversePainterSortStable( a, b ) {\n\n\t\tif ( a.object.renderOrder !== b.object.renderOrder ) {\n\n\t\t\treturn a.object.renderOrder - b.object.renderOrder;\n\n\t\t} if ( a.z !== b.z ) {\n\n\t\t\treturn b.z - a.z;\n\n\t\t} else {\n\n\t\t\treturn a.id - b.id;\n\n\t\t}\n\n\t}\n\n\t// Rendering\n\n\tthis.render = function ( scene, camera, renderTarget, forceClear ) {\n\n\t\tif ( camera !== undefined && camera.isCamera !== true ) {\n\n\t\t\tconsole.error( 'THREE.WebGLRenderer.render: camera is not an instance of THREE.Camera.' );\n\t\t\treturn;\n\n\t\t}\n\n\t\t// reset caching for this frame\n\n\t\t_currentGeometryProgram = '';\n\t\t_currentMaterialId = - 1;\n\t\t_currentCamera = null;\n\n\t\t// update scene graph\n\n\t\tif ( scene.autoUpdate === true ) scene.updateMatrixWorld();\n\n\t\t// update camera matrices and frustum\n\n\t\tif ( camera.parent === null ) camera.updateMatrixWorld();\n\n\t\tcamera.matrixWorldInverse.getInverse( camera.matrixWorld );\n\n\t\t_projScreenMatrix.multiplyMatrices( camera.projectionMatrix, camera.matrixWorldInverse );\n\t\t_frustum.setFromMatrix( _projScreenMatrix );\n\n\t\tlights.length = 0;\n\n\t\topaqueObjectsLastIndex = - 1;\n\t\ttransparentObjectsLastIndex = - 1;\n\n\t\tsprites.length = 0;\n\t\tlensFlares.length = 0;\n\n\t\t_localClippingEnabled = this.localClippingEnabled;\n\t\t_clippingEnabled = _clipping.init( this.clippingPlanes, _localClippingEnabled, camera );\n\n\t\tprojectObject( scene, camera );\n\n\t\topaqueObjects.length = opaqueObjectsLastIndex + 1;\n\t\ttransparentObjects.length = transparentObjectsLastIndex + 1;\n\n\t\tif ( _this.sortObjects === true ) {\n\n\t\t\topaqueObjects.sort( painterSortStable );\n\t\t\ttransparentObjects.sort( reversePainterSortStable );\n\n\t\t}\n\n\t\t//\n\n\t\tif ( _clippingEnabled ) _clipping.beginShadows();\n\n\t\tsetupShadows( lights );\n\n\t\tshadowMap.render( scene, camera );\n\n\t\tsetupLights( lights, camera );\n\n\t\tif ( _clippingEnabled ) _clipping.endShadows();\n\n\t\t//\n\n\t\t_infoRender.calls = 0;\n\t\t_infoRender.vertices = 0;\n\t\t_infoRender.faces = 0;\n\t\t_infoRender.points = 0;\n\n\t\tif ( renderTarget === undefined ) {\n\n\t\t\trenderTarget = null;\n\n\t\t}\n\n\t\tthis.setRenderTarget( renderTarget );\n\n\t\t//\n\n\t\tvar background = scene.background;\n\n\t\tif ( background === null ) {\n\n\t\t\tstate.buffers.color.setClear( _clearColor.r, _clearColor.g, _clearColor.b, _clearAlpha, _premultipliedAlpha );\n\n\t\t} else if ( background && background.isColor ) {\n\n\t\t\tstate.buffers.color.setClear( background.r, background.g, background.b, 1, _premultipliedAlpha );\n\t\t\tforceClear = true;\n\n\t\t}\n\n\t\tif ( this.autoClear || forceClear ) {\n\n\t\t\tthis.clear( this.autoClearColor, this.autoClearDepth, this.autoClearStencil );\n\n\t\t}\n\n\t\tif ( background && background.isCubeTexture ) {\n\n\t\t\tbackgroundCamera2.projectionMatrix.copy( camera.projectionMatrix );\n\n\t\t\tbackgroundCamera2.matrixWorld.extractRotation( camera.matrixWorld );\n\t\t\tbackgroundCamera2.matrixWorldInverse.getInverse( backgroundCamera2.matrixWorld );\n\n\t\t\tbackgroundBoxMesh.material.uniforms[ \"tCube\" ].value = background;\n\t\t\tbackgroundBoxMesh.modelViewMatrix.multiplyMatrices( backgroundCamera2.matrixWorldInverse, backgroundBoxMesh.matrixWorld );\n\n\t\t\tobjects.update( backgroundBoxMesh );\n\n\t\t\t_this.renderBufferDirect( backgroundCamera2, null, backgroundBoxMesh.geometry, backgroundBoxMesh.material, backgroundBoxMesh, null );\n\n\t\t} else if ( background && background.isTexture ) {\n\n\t\t\tbackgroundPlaneMesh.material.map = background;\n\n\t\t\tobjects.update( backgroundPlaneMesh );\n\n\t\t\t_this.renderBufferDirect( backgroundCamera, null, backgroundPlaneMesh.geometry, backgroundPlaneMesh.material, backgroundPlaneMesh, null );\n\n\t\t}\n\n\t\t//\n\n\t\tif ( scene.overrideMaterial ) {\n\n\t\t\tvar overrideMaterial = scene.overrideMaterial;\n\n\t\t\trenderObjects( opaqueObjects, scene, camera, overrideMaterial );\n\t\t\trenderObjects( transparentObjects, scene, camera, overrideMaterial );\n\n\t\t} else {\n\n\t\t\t// opaque pass (front-to-back order)\n\n\t\t\tstate.setBlending( NoBlending );\n\t\t\trenderObjects( opaqueObjects, scene, camera );\n\n\t\t\t// transparent pass (back-to-front order)\n\n\t\t\trenderObjects( transparentObjects, scene, camera );\n\n\t\t}\n\n\t\t// custom render plugins (post pass)\n\n\t\tspritePlugin.render( scene, camera );\n\t\tlensFlarePlugin.render( scene, camera, _currentViewport );\n\n\t\t// Generate mipmap if we're using any kind of mipmap filtering\n\n\t\tif ( renderTarget ) {\n\n\t\t\ttextures.updateRenderTargetMipmap( renderTarget );\n\n\t\t}\n\n\t\t// Ensure depth buffer writing is enabled so it can be cleared on next render\n\n\t\tstate.setDepthTest( true );\n\t\tstate.setDepthWrite( true );\n\t\tstate.setColorWrite( true );\n\n\t\t// _gl.finish();\n\n\t};\n\n\tfunction pushRenderItem( object, geometry, material, z, group ) {\n\n\t\tvar array, index;\n\n\t\t// allocate the next position in the appropriate array\n\n\t\tif ( material.transparent ) {\n\n\t\t\tarray = transparentObjects;\n\t\t\tindex = ++ transparentObjectsLastIndex;\n\n\t\t} else {\n\n\t\t\tarray = opaqueObjects;\n\t\t\tindex = ++ opaqueObjectsLastIndex;\n\n\t\t}\n\n\t\t// recycle existing render item or grow the array\n\n\t\tvar renderItem = array[ index ];\n\n\t\tif ( renderItem !== undefined ) {\n\n\t\t\trenderItem.id = object.id;\n\t\t\trenderItem.object = object;\n\t\t\trenderItem.geometry = geometry;\n\t\t\trenderItem.material = material;\n\t\t\trenderItem.z = _vector3.z;\n\t\t\trenderItem.group = group;\n\n\t\t} else {\n\n\t\t\trenderItem = {\n\t\t\t\tid: object.id,\n\t\t\t\tobject: object,\n\t\t\t\tgeometry: geometry,\n\t\t\t\tmaterial: material,\n\t\t\t\tz: _vector3.z,\n\t\t\t\tgroup: group\n\t\t\t};\n\n\t\t\t// assert( index === array.length );\n\t\t\tarray.push( renderItem );\n\n\t\t}\n\n\t}\n\n\t// TODO Duplicated code (Frustum)\n\n\tfunction isObjectViewable( object ) {\n\n\t\tvar geometry = object.geometry;\n\n\t\tif ( geometry.boundingSphere === null )\n\t\t\tgeometry.computeBoundingSphere();\n\n\t\t_sphere.copy( geometry.boundingSphere ).\n\t\t\tapplyMatrix4( object.matrixWorld );\n\n\t\treturn isSphereViewable( _sphere );\n\n\t}\n\n\tfunction isSpriteViewable( sprite ) {\n\n\t\t_sphere.center.set( 0, 0, 0 );\n\t\t_sphere.radius = 0.7071067811865476;\n\t\t_sphere.applyMatrix4( sprite.matrixWorld );\n\n\t\treturn isSphereViewable( _sphere );\n\n\t}\n\n\tfunction isSphereViewable( sphere ) {\n\n\t\tif ( ! _frustum.intersectsSphere( sphere ) ) return false;\n\n\t\tvar numPlanes = _clipping.numPlanes;\n\n\t\tif ( numPlanes === 0 ) return true;\n\n\t\tvar planes = _this.clippingPlanes,\n\n\t\t\tcenter = sphere.center,\n\t\t\tnegRad = - sphere.radius,\n\t\t\ti = 0;\n\n\t\tdo {\n\n\t\t\t// out when deeper than radius in the negative halfspace\n\t\t\tif ( planes[ i ].distanceToPoint( center ) < negRad ) return false;\n\n\t\t} while ( ++ i !== numPlanes );\n\n\t\treturn true;\n\n\t}\n\n\tfunction projectObject( object, camera ) {\n\n\t\tif ( object.visible === false ) return;\n\n\t\tvar visible = ( object.layers.mask & camera.layers.mask ) !== 0;\n\n\t\tif ( visible ) {\n\n\t\t\tif ( object.isLight ) {\n\n\t\t\t\tlights.push( object );\n\n\t\t\t} else if ( object.isSprite ) {\n\n\t\t\t\tif ( object.frustumCulled === false || isSpriteViewable( object ) === true ) {\n\n\t\t\t\t\tsprites.push( object );\n\n\t\t\t\t}\n\n\t\t\t} else if ( object.isLensFlare ) {\n\n\t\t\t\tlensFlares.push( object );\n\n\t\t\t} else if ( object.isImmediateRenderObject ) {\n\n\t\t\t\tif ( _this.sortObjects === true ) {\n\n\t\t\t\t\t_vector3.setFromMatrixPosition( object.matrixWorld );\n\t\t\t\t\t_vector3.applyProjection( _projScreenMatrix );\n\n\t\t\t\t}\n\n\t\t\t\tpushRenderItem( object, null, object.material, _vector3.z, null );\n\n\t\t\t} else if ( object.isMesh || object.isLine || object.isPoints ) {\n\n\t\t\t\tif ( object.isSkinnedMesh ) {\n\n\t\t\t\t\tobject.skeleton.update();\n\n\t\t\t\t}\n\n\t\t\t\tif ( object.frustumCulled === false || isObjectViewable( object ) === true ) {\n\n\t\t\t\t\tvar material = object.material;\n\n\t\t\t\t\tif ( material.visible === true ) {\n\n\t\t\t\t\t\tif ( _this.sortObjects === true ) {\n\n\t\t\t\t\t\t\t_vector3.setFromMatrixPosition( object.matrixWorld );\n\t\t\t\t\t\t\t_vector3.applyProjection( _projScreenMatrix );\n\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\tvar geometry = objects.update( object );\n\n\t\t\t\t\t\tif ( material.isMultiMaterial ) {\n\n\t\t\t\t\t\t\tvar groups = geometry.groups;\n\t\t\t\t\t\t\tvar materials = material.materials;\n\n\t\t\t\t\t\t\tfor ( var i = 0, l = groups.length; i < l; i ++ ) {\n\n\t\t\t\t\t\t\t\tvar group = groups[ i ];\n\t\t\t\t\t\t\t\tvar groupMaterial = materials[ group.materialIndex ];\n\n\t\t\t\t\t\t\t\tif ( groupMaterial.visible === true ) {\n\n\t\t\t\t\t\t\t\t\tpushRenderItem( object, geometry, groupMaterial, _vector3.z, group );\n\n\t\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t} else {\n\n\t\t\t\t\t\t\tpushRenderItem( object, geometry, material, _vector3.z, null );\n\n\t\t\t\t\t\t}\n\n\t\t\t\t\t}\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t}\n\n\t\tvar children = object.children;\n\n\t\tfor ( var i = 0, l = children.length; i < l; i ++ ) {\n\n\t\t\tprojectObject( children[ i ], camera );\n\n\t\t}\n\n\t}\n\n\tfunction renderObjects( renderList, scene, camera, overrideMaterial ) {\n\n\t\tfor ( var i = 0, l = renderList.length; i < l; i ++ ) {\n\n\t\t\tvar renderItem = renderList[ i ];\n\n\t\t\tvar object = renderItem.object;\n\t\t\tvar geometry = renderItem.geometry;\n\t\t\tvar material = overrideMaterial === undefined ? renderItem.material : overrideMaterial;\n\t\t\tvar group = renderItem.group;\n\n\t\t\tobject.modelViewMatrix.multiplyMatrices( camera.matrixWorldInverse, object.matrixWorld );\n\t\t\tobject.normalMatrix.getNormalMatrix( object.modelViewMatrix );\n\n\t\t\tobject.onBeforeRender( _this, scene, camera, geometry, material, group );\n\n\t\t\tif ( object.isImmediateRenderObject ) {\n\n\t\t\t\tsetMaterial( material );\n\n\t\t\t\tvar program = setProgram( camera, scene.fog, material, object );\n\n\t\t\t\t_currentGeometryProgram = '';\n\n\t\t\t\tobject.render( function ( object ) {\n\n\t\t\t\t\t_this.renderBufferImmediate( object, program, material );\n\n\t\t\t\t} );\n\n\t\t\t} else {\n\n\t\t\t\t_this.renderBufferDirect( camera, scene.fog, geometry, material, object, group );\n\n\t\t\t}\n\n\t\t\tobject.onAfterRender( _this, scene, camera, geometry, material, group );\n\n\n\t\t}\n\n\t}\n\n\tfunction initMaterial( material, fog, object ) {\n\n\t\tvar materialProperties = properties.get( material );\n\n\t\tvar parameters = programCache.getParameters(\n\t\t\t\tmaterial, _lights, fog, _clipping.numPlanes, _clipping.numIntersection, object );\n\n\t\tvar code = programCache.getProgramCode( material, parameters );\n\n\t\tvar program = materialProperties.program;\n\t\tvar programChange = true;\n\n\t\tif ( program === undefined ) {\n\n\t\t\t// new material\n\t\t\tmaterial.addEventListener( 'dispose', onMaterialDispose );\n\n\t\t} else if ( program.code !== code ) {\n\n\t\t\t// changed glsl or parameters\n\t\t\treleaseMaterialProgramReference( material );\n\n\t\t} else if ( parameters.shaderID !== undefined ) {\n\n\t\t\t// same glsl and uniform list\n\t\t\treturn;\n\n\t\t} else {\n\n\t\t\t// only rebuild uniform list\n\t\t\tprogramChange = false;\n\n\t\t}\n\n\t\tif ( programChange ) {\n\n\t\t\tif ( parameters.shaderID ) {\n\n\t\t\t\tvar shader = ShaderLib[ parameters.shaderID ];\n\n\t\t\t\tmaterialProperties.__webglShader = {\n\t\t\t\t\tname: material.type,\n\t\t\t\t\tuniforms: UniformsUtils.clone( shader.uniforms ),\n\t\t\t\t\tvertexShader: shader.vertexShader,\n\t\t\t\t\tfragmentShader: shader.fragmentShader\n\t\t\t\t};\n\n\t\t\t} else {\n\n\t\t\t\tmaterialProperties.__webglShader = {\n\t\t\t\t\tname: material.type,\n\t\t\t\t\tuniforms: material.uniforms,\n\t\t\t\t\tvertexShader: material.vertexShader,\n\t\t\t\t\tfragmentShader: material.fragmentShader\n\t\t\t\t};\n\n\t\t\t}\n\n\t\t\tmaterial.__webglShader = materialProperties.__webglShader;\n\n\t\t\tprogram = programCache.acquireProgram( material, parameters, code );\n\n\t\t\tmaterialProperties.program = program;\n\t\t\tmaterial.program = program;\n\n\t\t}\n\n\t\tvar attributes = program.getAttributes();\n\n\t\tif ( material.morphTargets ) {\n\n\t\t\tmaterial.numSupportedMorphTargets = 0;\n\n\t\t\tfor ( var i = 0; i < _this.maxMorphTargets; i ++ ) {\n\n\t\t\t\tif ( attributes[ 'morphTarget' + i ] >= 0 ) {\n\n\t\t\t\t\tmaterial.numSupportedMorphTargets ++;\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t}\n\n\t\tif ( material.morphNormals ) {\n\n\t\t\tmaterial.numSupportedMorphNormals = 0;\n\n\t\t\tfor ( var i = 0; i < _this.maxMorphNormals; i ++ ) {\n\n\t\t\t\tif ( attributes[ 'morphNormal' + i ] >= 0 ) {\n\n\t\t\t\t\tmaterial.numSupportedMorphNormals ++;\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t}\n\n\t\tvar uniforms = materialProperties.__webglShader.uniforms;\n\n\t\tif ( ! material.isShaderMaterial &&\n\t\t ! material.isRawShaderMaterial ||\n\t\t material.clipping === true ) {\n\n\t\t\tmaterialProperties.numClippingPlanes = _clipping.numPlanes;\n\t\t\tmaterialProperties.numIntersection = _clipping.numIntersection;\n\t\t\tuniforms.clippingPlanes = _clipping.uniform;\n\n\t\t}\n\n\t\tmaterialProperties.fog = fog;\n\n\t\t// store the light setup it was created for\n\n\t\tmaterialProperties.lightsHash = _lights.hash;\n\n\t\tif ( material.lights ) {\n\n\t\t\t// wire up the material to this renderer's lighting state\n\n\t\t\tuniforms.ambientLightColor.value = _lights.ambient;\n\t\t\tuniforms.directionalLights.value = _lights.directional;\n\t\t\tuniforms.spotLights.value = _lights.spot;\n\t\t\tuniforms.pointLights.value = _lights.point;\n\t\t\tuniforms.hemisphereLights.value = _lights.hemi;\n\n\t\t\tuniforms.directionalShadowMap.value = _lights.directionalShadowMap;\n\t\t\tuniforms.directionalShadowMatrix.value = _lights.directionalShadowMatrix;\n\t\t\tuniforms.spotShadowMap.value = _lights.spotShadowMap;\n\t\t\tuniforms.spotShadowMatrix.value = _lights.spotShadowMatrix;\n\t\t\tuniforms.pointShadowMap.value = _lights.pointShadowMap;\n\t\t\tuniforms.pointShadowMatrix.value = _lights.pointShadowMatrix;\n\n\t\t}\n\n\t\tvar progUniforms = materialProperties.program.getUniforms(),\n\t\t\tuniformsList =\n\t\t\t\t\tWebGLUniforms.seqWithValue( progUniforms.seq, uniforms );\n\n\t\tmaterialProperties.uniformsList = uniformsList;\n\n\t}\n\n\tfunction setMaterial( material ) {\n\n\t\tmaterial.side === DoubleSide\n\t\t\t? state.disable( _gl.CULL_FACE )\n\t\t\t: state.enable( _gl.CULL_FACE );\n\n\t\tstate.setFlipSided( material.side === BackSide );\n\n\t\tmaterial.transparent === true\n\t\t\t? state.setBlending( material.blending, material.blendEquation, material.blendSrc, material.blendDst, material.blendEquationAlpha, material.blendSrcAlpha, material.blendDstAlpha, material.premultipliedAlpha )\n\t\t\t: state.setBlending( NoBlending );\n\n\t\tstate.setDepthFunc( material.depthFunc );\n\t\tstate.setDepthTest( material.depthTest );\n\t\tstate.setDepthWrite( material.depthWrite );\n\t\tstate.setColorWrite( material.colorWrite );\n\t\tstate.setPolygonOffset( material.polygonOffset, material.polygonOffsetFactor, material.polygonOffsetUnits );\n\n\t}\n\n\tfunction setProgram( camera, fog, material, object ) {\n\n\t\t_usedTextureUnits = 0;\n\n\t\tvar materialProperties = properties.get( material );\n\n\t\tif ( _clippingEnabled ) {\n\n\t\t\tif ( _localClippingEnabled || camera !== _currentCamera ) {\n\n\t\t\t\tvar useCache =\n\t\t\t\t\t\tcamera === _currentCamera &&\n\t\t\t\t\t\tmaterial.id === _currentMaterialId;\n\n\t\t\t\t// we might want to call this function with some ClippingGroup\n\t\t\t\t// object instead of the material, once it becomes feasible\n\t\t\t\t// (#8465, #8379)\n\t\t\t\t_clipping.setState(\n\t\t\t\t\t\tmaterial.clippingPlanes, material.clipIntersection, material.clipShadows,\n\t\t\t\t\t\tcamera, materialProperties, useCache );\n\n\t\t\t}\n\n\t\t}\n\n\t\tif ( material.needsUpdate === false ) {\n\n\t\t\tif ( materialProperties.program === undefined ) {\n\n\t\t\t\tmaterial.needsUpdate = true;\n\n\t\t\t} else if ( material.fog && materialProperties.fog !== fog ) {\n\n\t\t\t\tmaterial.needsUpdate = true;\n\n\t\t\t} else if ( material.lights && materialProperties.lightsHash !== _lights.hash ) {\n\n\t\t\t\tmaterial.needsUpdate = true;\n\n\t\t\t} else if ( materialProperties.numClippingPlanes !== undefined &&\n\t\t\t\t( materialProperties.numClippingPlanes !== _clipping.numPlanes ||\n \t\t\t\t materialProperties.numIntersection !== _clipping.numIntersection ) ) {\n\n\t\t\t\tmaterial.needsUpdate = true;\n\n\t\t\t}\n\n\t\t}\n\n\t\tif ( material.needsUpdate ) {\n\n\t\t\tinitMaterial( material, fog, object );\n\t\t\tmaterial.needsUpdate = false;\n\n\t\t}\n\n\t\tvar refreshProgram = false;\n\t\tvar refreshMaterial = false;\n\t\tvar refreshLights = false;\n\n\t\tvar program = materialProperties.program,\n\t\t\tp_uniforms = program.getUniforms(),\n\t\t\tm_uniforms = materialProperties.__webglShader.uniforms;\n\n\t\tif ( program.id !== _currentProgram ) {\n\n\t\t\t_gl.useProgram( program.program );\n\t\t\t_currentProgram = program.id;\n\n\t\t\trefreshProgram = true;\n\t\t\trefreshMaterial = true;\n\t\t\trefreshLights = true;\n\n\t\t}\n\n\t\tif ( material.id !== _currentMaterialId ) {\n\n\t\t\t_currentMaterialId = material.id;\n\n\t\t\trefreshMaterial = true;\n\n\t\t}\n\n\t\tif ( refreshProgram || camera !== _currentCamera ) {\n\n\t\t\tp_uniforms.set( _gl, camera, 'projectionMatrix' );\n\n\t\t\tif ( capabilities.logarithmicDepthBuffer ) {\n\n\t\t\t\tp_uniforms.setValue( _gl, 'logDepthBufFC',\n\t\t\t\t\t\t2.0 / ( Math.log( camera.far + 1.0 ) / Math.LN2 ) );\n\n\t\t\t}\n\n\n\t\t\tif ( camera !== _currentCamera ) {\n\n\t\t\t\t_currentCamera = camera;\n\n\t\t\t\t// lighting uniforms depend on the camera so enforce an update\n\t\t\t\t// now, in case this material supports lights - or later, when\n\t\t\t\t// the next material that does gets activated:\n\n\t\t\t\trefreshMaterial = true;\t\t// set to true on material change\n\t\t\t\trefreshLights = true;\t\t// remains set until update done\n\n\t\t\t}\n\n\t\t\t// load material specific uniforms\n\t\t\t// (shader material also gets them for the sake of genericity)\n\n\t\t\tif ( material.isShaderMaterial ||\n\t\t\t material.isMeshPhongMaterial ||\n\t\t\t material.isMeshStandardMaterial ||\n\t\t\t material.envMap ) {\n\n\t\t\t\tvar uCamPos = p_uniforms.map.cameraPosition;\n\n\t\t\t\tif ( uCamPos !== undefined ) {\n\n\t\t\t\t\tuCamPos.setValue( _gl,\n\t\t\t\t\t\t\t_vector3.setFromMatrixPosition( camera.matrixWorld ) );\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t\tif ( material.isMeshPhongMaterial ||\n\t\t\t material.isMeshLambertMaterial ||\n\t\t\t material.isMeshBasicMaterial ||\n\t\t\t material.isMeshStandardMaterial ||\n\t\t\t material.isShaderMaterial ||\n\t\t\t material.skinning ) {\n\n\t\t\t\tp_uniforms.setValue( _gl, 'viewMatrix', camera.matrixWorldInverse );\n\n\t\t\t}\n\n\t\t\tp_uniforms.set( _gl, _this, 'toneMappingExposure' );\n\t\t\tp_uniforms.set( _gl, _this, 'toneMappingWhitePoint' );\n\n\t\t}\n\n\t\t// skinning uniforms must be set even if material didn't change\n\t\t// auto-setting of texture unit for bone texture must go before other textures\n\t\t// not sure why, but otherwise weird things happen\n\n\t\tif ( material.skinning ) {\n\n\t\t\tp_uniforms.setOptional( _gl, object, 'bindMatrix' );\n\t\t\tp_uniforms.setOptional( _gl, object, 'bindMatrixInverse' );\n\n\t\t\tvar skeleton = object.skeleton;\n\n\t\t\tif ( skeleton ) {\n\n\t\t\t\tif ( capabilities.floatVertexTextures && skeleton.useVertexTexture ) {\n\n\t\t\t\t\tp_uniforms.set( _gl, skeleton, 'boneTexture' );\n\t\t\t\t\tp_uniforms.set( _gl, skeleton, 'boneTextureWidth' );\n\t\t\t\t\tp_uniforms.set( _gl, skeleton, 'boneTextureHeight' );\n\n\t\t\t\t} else {\n\n\t\t\t\t\tp_uniforms.setOptional( _gl, skeleton, 'boneMatrices' );\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t}\n\n\t\tif ( refreshMaterial ) {\n\n\t\t\tif ( material.lights ) {\n\n\t\t\t\t// the current material requires lighting info\n\n\t\t\t\t// note: all lighting uniforms are always set correctly\n\t\t\t\t// they simply reference the renderer's state for their\n\t\t\t\t// values\n\t\t\t\t//\n\t\t\t\t// use the current material's .needsUpdate flags to set\n\t\t\t\t// the GL state when required\n\n\t\t\t\tmarkUniformsLightsNeedsUpdate( m_uniforms, refreshLights );\n\n\t\t\t}\n\n\t\t\t// refresh uniforms common to several materials\n\n\t\t\tif ( fog && material.fog ) {\n\n\t\t\t\trefreshUniformsFog( m_uniforms, fog );\n\n\t\t\t}\n\n\t\t\tif ( material.isMeshBasicMaterial ||\n\t\t\t material.isMeshLambertMaterial ||\n\t\t\t material.isMeshPhongMaterial ||\n\t\t\t material.isMeshStandardMaterial ||\n\t\t\t material.isMeshDepthMaterial ) {\n\n\t\t\t\trefreshUniformsCommon( m_uniforms, material );\n\n\t\t\t}\n\n\t\t\t// refresh single material specific uniforms\n\n\t\t\tif ( material.isLineBasicMaterial ) {\n\n\t\t\t\trefreshUniformsLine( m_uniforms, material );\n\n\t\t\t} else if ( material.isLineDashedMaterial ) {\n\n\t\t\t\trefreshUniformsLine( m_uniforms, material );\n\t\t\t\trefreshUniformsDash( m_uniforms, material );\n\n\t\t\t} else if ( material.isPointsMaterial ) {\n\n\t\t\t\trefreshUniformsPoints( m_uniforms, material );\n\n\t\t\t} else if ( material.isMeshLambertMaterial ) {\n\n\t\t\t\trefreshUniformsLambert( m_uniforms, material );\n\n\t\t\t} else if ( material.isMeshPhongMaterial ) {\n\n\t\t\t\trefreshUniformsPhong( m_uniforms, material );\n\n\t\t\t} else if ( material.isMeshPhysicalMaterial ) {\n\n\t\t\t\trefreshUniformsPhysical( m_uniforms, material );\n\n\t\t\t} else if ( material.isMeshStandardMaterial ) {\n\n\t\t\t\trefreshUniformsStandard( m_uniforms, material );\n\n\t\t\t} else if ( material.isMeshDepthMaterial ) {\n\n\t\t\t\tif ( material.displacementMap ) {\n\n\t\t\t\t\tm_uniforms.displacementMap.value = material.displacementMap;\n\t\t\t\t\tm_uniforms.displacementScale.value = material.displacementScale;\n\t\t\t\t\tm_uniforms.displacementBias.value = material.displacementBias;\n\n\t\t\t\t}\n\n\t\t\t} else if ( material.isMeshNormalMaterial ) {\n\n\t\t\t\tm_uniforms.opacity.value = material.opacity;\n\n\t\t\t}\n\n\t\t\tWebGLUniforms.upload(\n\t\t\t\t\t_gl, materialProperties.uniformsList, m_uniforms, _this );\n\n\t\t}\n\n\n\t\t// common matrices\n\n\t\tp_uniforms.set( _gl, object, 'modelViewMatrix' );\n\t\tp_uniforms.set( _gl, object, 'normalMatrix' );\n\t\tp_uniforms.setValue( _gl, 'modelMatrix', object.matrixWorld );\n\n\t\treturn program;\n\n\t}\n\n\t// Uniforms (refresh uniforms objects)\n\n\tfunction refreshUniformsCommon( uniforms, material ) {\n\n\t\tuniforms.opacity.value = material.opacity;\n\n\t\tuniforms.diffuse.value = material.color;\n\n\t\tif ( material.emissive ) {\n\n\t\t\tuniforms.emissive.value.copy( material.emissive ).multiplyScalar( material.emissiveIntensity );\n\n\t\t}\n\n\t\tuniforms.map.value = material.map;\n\t\tuniforms.specularMap.value = material.specularMap;\n\t\tuniforms.alphaMap.value = material.alphaMap;\n\n\t\tif ( material.aoMap ) {\n\n\t\t\tuniforms.aoMap.value = material.aoMap;\n\t\t\tuniforms.aoMapIntensity.value = material.aoMapIntensity;\n\n\t\t}\n\n\t\t// uv repeat and offset setting priorities\n\t\t// 1. color map\n\t\t// 2. specular map\n\t\t// 3. normal map\n\t\t// 4. bump map\n\t\t// 5. alpha map\n\t\t// 6. emissive map\n\n\t\tvar uvScaleMap;\n\n\t\tif ( material.map ) {\n\n\t\t\tuvScaleMap = material.map;\n\n\t\t} else if ( material.specularMap ) {\n\n\t\t\tuvScaleMap = material.specularMap;\n\n\t\t} else if ( material.displacementMap ) {\n\n\t\t\tuvScaleMap = material.displacementMap;\n\n\t\t} else if ( material.normalMap ) {\n\n\t\t\tuvScaleMap = material.normalMap;\n\n\t\t} else if ( material.bumpMap ) {\n\n\t\t\tuvScaleMap = material.bumpMap;\n\n\t\t} else if ( material.roughnessMap ) {\n\n\t\t\tuvScaleMap = material.roughnessMap;\n\n\t\t} else if ( material.metalnessMap ) {\n\n\t\t\tuvScaleMap = material.metalnessMap;\n\n\t\t} else if ( material.alphaMap ) {\n\n\t\t\tuvScaleMap = material.alphaMap;\n\n\t\t} else if ( material.emissiveMap ) {\n\n\t\t\tuvScaleMap = material.emissiveMap;\n\n\t\t}\n\n\t\tif ( uvScaleMap !== undefined ) {\n\n\t\t\t// backwards compatibility\n\t\t\tif ( uvScaleMap.isWebGLRenderTarget ) {\n\n\t\t\t\tuvScaleMap = uvScaleMap.texture;\n\n\t\t\t}\n\n\t\t\tvar offset = uvScaleMap.offset;\n\t\t\tvar repeat = uvScaleMap.repeat;\n\n\t\t\tuniforms.offsetRepeat.value.set( offset.x, offset.y, repeat.x, repeat.y );\n\n\t\t}\n\n\t\tuniforms.envMap.value = material.envMap;\n\n\t\t// don't flip CubeTexture envMaps, flip everything else:\n\t\t// WebGLRenderTargetCube will be flipped for backwards compatibility\n\t\t// WebGLRenderTargetCube.texture will be flipped because it's a Texture and NOT a CubeTexture\n\t\t// this check must be handled differently, or removed entirely, if WebGLRenderTargetCube uses a CubeTexture in the future\n\t\tuniforms.flipEnvMap.value = ( ! ( material.envMap && material.envMap.isCubeTexture ) ) ? 1 : - 1;\n\n\t\tuniforms.reflectivity.value = material.reflectivity;\n\t\tuniforms.refractionRatio.value = material.refractionRatio;\n\n\t}\n\n\tfunction refreshUniformsLine( uniforms, material ) {\n\n\t\tuniforms.diffuse.value = material.color;\n\t\tuniforms.opacity.value = material.opacity;\n\n\t}\n\n\tfunction refreshUniformsDash( uniforms, material ) {\n\n\t\tuniforms.dashSize.value = material.dashSize;\n\t\tuniforms.totalSize.value = material.dashSize + material.gapSize;\n\t\tuniforms.scale.value = material.scale;\n\n\t}\n\n\tfunction refreshUniformsPoints( uniforms, material ) {\n\n\t\tuniforms.diffuse.value = material.color;\n\t\tuniforms.opacity.value = material.opacity;\n\t\tuniforms.size.value = material.size * _pixelRatio;\n\t\tuniforms.scale.value = _height * 0.5;\n\n\t\tuniforms.map.value = material.map;\n\n\t\tif ( material.map !== null ) {\n\n\t\t\tvar offset = material.map.offset;\n\t\t\tvar repeat = material.map.repeat;\n\n\t\t\tuniforms.offsetRepeat.value.set( offset.x, offset.y, repeat.x, repeat.y );\n\n\t\t}\n\n\t}\n\n\tfunction refreshUniformsFog( uniforms, fog ) {\n\n\t\tuniforms.fogColor.value = fog.color;\n\n\t\tif ( fog.isFog ) {\n\n\t\t\tuniforms.fogNear.value = fog.near;\n\t\t\tuniforms.fogFar.value = fog.far;\n\n\t\t} else if ( fog.isFogExp2 ) {\n\n\t\t\tuniforms.fogDensity.value = fog.density;\n\n\t\t}\n\n\t}\n\n\tfunction refreshUniformsLambert( uniforms, material ) {\n\n\t\tif ( material.lightMap ) {\n\n\t\t\tuniforms.lightMap.value = material.lightMap;\n\t\t\tuniforms.lightMapIntensity.value = material.lightMapIntensity;\n\n\t\t}\n\n\t\tif ( material.emissiveMap ) {\n\n\t\t\tuniforms.emissiveMap.value = material.emissiveMap;\n\n\t\t}\n\n\t}\n\n\tfunction refreshUniformsPhong( uniforms, material ) {\n\n\t\tuniforms.specular.value = material.specular;\n\t\tuniforms.shininess.value = Math.max( material.shininess, 1e-4 ); // to prevent pow( 0.0, 0.0 )\n\n\t\tif ( material.lightMap ) {\n\n\t\t\tuniforms.lightMap.value = material.lightMap;\n\t\t\tuniforms.lightMapIntensity.value = material.lightMapIntensity;\n\n\t\t}\n\n\t\tif ( material.emissiveMap ) {\n\n\t\t\tuniforms.emissiveMap.value = material.emissiveMap;\n\n\t\t}\n\n\t\tif ( material.bumpMap ) {\n\n\t\t\tuniforms.bumpMap.value = material.bumpMap;\n\t\t\tuniforms.bumpScale.value = material.bumpScale;\n\n\t\t}\n\n\t\tif ( material.normalMap ) {\n\n\t\t\tuniforms.normalMap.value = material.normalMap;\n\t\t\tuniforms.normalScale.value.copy( material.normalScale );\n\n\t\t}\n\n\t\tif ( material.displacementMap ) {\n\n\t\t\tuniforms.displacementMap.value = material.displacementMap;\n\t\t\tuniforms.displacementScale.value = material.displacementScale;\n\t\t\tuniforms.displacementBias.value = material.displacementBias;\n\n\t\t}\n\n\t}\n\n\tfunction refreshUniformsStandard( uniforms, material ) {\n\n\t\tuniforms.roughness.value = material.roughness;\n\t\tuniforms.metalness.value = material.metalness;\n\n\t\tif ( material.roughnessMap ) {\n\n\t\t\tuniforms.roughnessMap.value = material.roughnessMap;\n\n\t\t}\n\n\t\tif ( material.metalnessMap ) {\n\n\t\t\tuniforms.metalnessMap.value = material.metalnessMap;\n\n\t\t}\n\n\t\tif ( material.lightMap ) {\n\n\t\t\tuniforms.lightMap.value = material.lightMap;\n\t\t\tuniforms.lightMapIntensity.value = material.lightMapIntensity;\n\n\t\t}\n\n\t\tif ( material.emissiveMap ) {\n\n\t\t\tuniforms.emissiveMap.value = material.emissiveMap;\n\n\t\t}\n\n\t\tif ( material.bumpMap ) {\n\n\t\t\tuniforms.bumpMap.value = material.bumpMap;\n\t\t\tuniforms.bumpScale.value = material.bumpScale;\n\n\t\t}\n\n\t\tif ( material.normalMap ) {\n\n\t\t\tuniforms.normalMap.value = material.normalMap;\n\t\t\tuniforms.normalScale.value.copy( material.normalScale );\n\n\t\t}\n\n\t\tif ( material.displacementMap ) {\n\n\t\t\tuniforms.displacementMap.value = material.displacementMap;\n\t\t\tuniforms.displacementScale.value = material.displacementScale;\n\t\t\tuniforms.displacementBias.value = material.displacementBias;\n\n\t\t}\n\n\t\tif ( material.envMap ) {\n\n\t\t\t//uniforms.envMap.value = material.envMap; // part of uniforms common\n\t\t\tuniforms.envMapIntensity.value = material.envMapIntensity;\n\n\t\t}\n\n\t}\n\n\tfunction refreshUniformsPhysical( uniforms, material ) {\n\n\t\tuniforms.clearCoat.value = material.clearCoat;\n\t\tuniforms.clearCoatRoughness.value = material.clearCoatRoughness;\n\n\t\trefreshUniformsStandard( uniforms, material );\n\n\t}\n\n\t// If uniforms are marked as clean, they don't need to be loaded to the GPU.\n\n\tfunction markUniformsLightsNeedsUpdate( uniforms, value ) {\n\n\t\tuniforms.ambientLightColor.needsUpdate = value;\n\n\t\tuniforms.directionalLights.needsUpdate = value;\n\t\tuniforms.pointLights.needsUpdate = value;\n\t\tuniforms.spotLights.needsUpdate = value;\n\t\tuniforms.hemisphereLights.needsUpdate = value;\n\n\t}\n\n\t// Lighting\n\n\tfunction setupShadows( lights ) {\n\n\t\tvar lightShadowsLength = 0;\n\n\t\tfor ( var i = 0, l = lights.length; i < l; i ++ ) {\n\n\t\t\tvar light = lights[ i ];\n\n\t\t\tif ( light.castShadow ) {\n\n\t\t\t\t_lights.shadows[ lightShadowsLength ++ ] = light;\n\n\t\t\t}\n\n\t\t}\n\n\t\t_lights.shadows.length = lightShadowsLength;\n\n\t}\n\n\tfunction setupLights( lights, camera ) {\n\n\t\tvar l, ll, light,\n\t\tr = 0, g = 0, b = 0,\n\t\tcolor,\n\t\tintensity,\n\t\tdistance,\n\t\tshadowMap,\n\n\t\tviewMatrix = camera.matrixWorldInverse,\n\n\t\tdirectionalLength = 0,\n\t\tpointLength = 0,\n\t\tspotLength = 0,\n\t\themiLength = 0;\n\n\t\tfor ( l = 0, ll = lights.length; l < ll; l ++ ) {\n\n\t\t\tlight = lights[ l ];\n\n\t\t\tcolor = light.color;\n\t\t\tintensity = light.intensity;\n\t\t\tdistance = light.distance;\n\n\t\t\tshadowMap = ( light.shadow && light.shadow.map ) ? light.shadow.map.texture : null;\n\n\t\t\tif ( light.isAmbientLight ) {\n\n\t\t\t\tr += color.r * intensity;\n\t\t\t\tg += color.g * intensity;\n\t\t\t\tb += color.b * intensity;\n\n\t\t\t} else if ( light.isDirectionalLight ) {\n\n\t\t\t\tvar uniforms = lightCache.get( light );\n\n\t\t\t\tuniforms.color.copy( light.color ).multiplyScalar( light.intensity );\n\t\t\t\tuniforms.direction.setFromMatrixPosition( light.matrixWorld );\n\t\t\t\t_vector3.setFromMatrixPosition( light.target.matrixWorld );\n\t\t\t\tuniforms.direction.sub( _vector3 );\n\t\t\t\tuniforms.direction.transformDirection( viewMatrix );\n\n\t\t\t\tuniforms.shadow = light.castShadow;\n\n\t\t\t\tif ( light.castShadow ) {\n\n\t\t\t\t\tuniforms.shadowBias = light.shadow.bias;\n\t\t\t\t\tuniforms.shadowRadius = light.shadow.radius;\n\t\t\t\t\tuniforms.shadowMapSize = light.shadow.mapSize;\n\n\t\t\t\t}\n\n\t\t\t\t_lights.directionalShadowMap[ directionalLength ] = shadowMap;\n\t\t\t\t_lights.directionalShadowMatrix[ directionalLength ] = light.shadow.matrix;\n\t\t\t\t_lights.directional[ directionalLength ++ ] = uniforms;\n\n\t\t\t} else if ( light.isSpotLight ) {\n\n\t\t\t\tvar uniforms = lightCache.get( light );\n\n\t\t\t\tuniforms.position.setFromMatrixPosition( light.matrixWorld );\n\t\t\t\tuniforms.position.applyMatrix4( viewMatrix );\n\n\t\t\t\tuniforms.color.copy( color ).multiplyScalar( intensity );\n\t\t\t\tuniforms.distance = distance;\n\n\t\t\t\tuniforms.direction.setFromMatrixPosition( light.matrixWorld );\n\t\t\t\t_vector3.setFromMatrixPosition( light.target.matrixWorld );\n\t\t\t\tuniforms.direction.sub( _vector3 );\n\t\t\t\tuniforms.direction.transformDirection( viewMatrix );\n\n\t\t\t\tuniforms.coneCos = Math.cos( light.angle );\n\t\t\t\tuniforms.penumbraCos = Math.cos( light.angle * ( 1 - light.penumbra ) );\n\t\t\t\tuniforms.decay = ( light.distance === 0 ) ? 0.0 : light.decay;\n\n\t\t\t\tuniforms.shadow = light.castShadow;\n\n\t\t\t\tif ( light.castShadow ) {\n\n\t\t\t\t\tuniforms.shadowBias = light.shadow.bias;\n\t\t\t\t\tuniforms.shadowRadius = light.shadow.radius;\n\t\t\t\t\tuniforms.shadowMapSize = light.shadow.mapSize;\n\n\t\t\t\t}\n\n\t\t\t\t_lights.spotShadowMap[ spotLength ] = shadowMap;\n\t\t\t\t_lights.spotShadowMatrix[ spotLength ] = light.shadow.matrix;\n\t\t\t\t_lights.spot[ spotLength ++ ] = uniforms;\n\n\t\t\t} else if ( light.isPointLight ) {\n\n\t\t\t\tvar uniforms = lightCache.get( light );\n\n\t\t\t\tuniforms.position.setFromMatrixPosition( light.matrixWorld );\n\t\t\t\tuniforms.position.applyMatrix4( viewMatrix );\n\n\t\t\t\tuniforms.color.copy( light.color ).multiplyScalar( light.intensity );\n\t\t\t\tuniforms.distance = light.distance;\n\t\t\t\tuniforms.decay = ( light.distance === 0 ) ? 0.0 : light.decay;\n\n\t\t\t\tuniforms.shadow = light.castShadow;\n\n\t\t\t\tif ( light.castShadow ) {\n\n\t\t\t\t\tuniforms.shadowBias = light.shadow.bias;\n\t\t\t\t\tuniforms.shadowRadius = light.shadow.radius;\n\t\t\t\t\tuniforms.shadowMapSize = light.shadow.mapSize;\n\n\t\t\t\t}\n\n\t\t\t\t_lights.pointShadowMap[ pointLength ] = shadowMap;\n\n\t\t\t\tif ( _lights.pointShadowMatrix[ pointLength ] === undefined ) {\n\n\t\t\t\t\t_lights.pointShadowMatrix[ pointLength ] = new Matrix4();\n\n\t\t\t\t}\n\n\t\t\t\t// for point lights we set the shadow matrix to be a translation-only matrix\n\t\t\t\t// equal to inverse of the light's position\n\t\t\t\t_vector3.setFromMatrixPosition( light.matrixWorld ).negate();\n\t\t\t\t_lights.pointShadowMatrix[ pointLength ].identity().setPosition( _vector3 );\n\n\t\t\t\t_lights.point[ pointLength ++ ] = uniforms;\n\n\t\t\t} else if ( light.isHemisphereLight ) {\n\n\t\t\t\tvar uniforms = lightCache.get( light );\n\n\t\t\t\tuniforms.direction.setFromMatrixPosition( light.matrixWorld );\n\t\t\t\tuniforms.direction.transformDirection( viewMatrix );\n\t\t\t\tuniforms.direction.normalize();\n\n\t\t\t\tuniforms.skyColor.copy( light.color ).multiplyScalar( intensity );\n\t\t\t\tuniforms.groundColor.copy( light.groundColor ).multiplyScalar( intensity );\n\n\t\t\t\t_lights.hemi[ hemiLength ++ ] = uniforms;\n\n\t\t\t}\n\n\t\t}\n\n\t\t_lights.ambient[ 0 ] = r;\n\t\t_lights.ambient[ 1 ] = g;\n\t\t_lights.ambient[ 2 ] = b;\n\n\t\t_lights.directional.length = directionalLength;\n\t\t_lights.spot.length = spotLength;\n\t\t_lights.point.length = pointLength;\n\t\t_lights.hemi.length = hemiLength;\n\n\t\t_lights.hash = directionalLength + ',' + pointLength + ',' + spotLength + ',' + hemiLength + ',' + _lights.shadows.length;\n\n\t}\n\n\t// GL state setting\n\n\tthis.setFaceCulling = function ( cullFace, frontFaceDirection ) {\n\n\t\tstate.setCullFace( cullFace );\n\t\tstate.setFlipSided( frontFaceDirection === FrontFaceDirectionCW );\n\n\t};\n\n\t// Textures\n\n\tfunction allocTextureUnit() {\n\n\t\tvar textureUnit = _usedTextureUnits;\n\n\t\tif ( textureUnit >= capabilities.maxTextures ) {\n\n\t\t\tconsole.warn( 'WebGLRenderer: trying to use ' + textureUnit + ' texture units while this GPU supports only ' + capabilities.maxTextures );\n\n\t\t}\n\n\t\t_usedTextureUnits += 1;\n\n\t\treturn textureUnit;\n\n\t}\n\n\tthis.allocTextureUnit = allocTextureUnit;\n\n\t// this.setTexture2D = setTexture2D;\n\tthis.setTexture2D = ( function() {\n\n\t\tvar warned = false;\n\n\t\t// backwards compatibility: peel texture.texture\n\t\treturn function setTexture2D( texture, slot ) {\n\n\t\t\tif ( texture && texture.isWebGLRenderTarget ) {\n\n\t\t\t\tif ( ! warned ) {\n\n\t\t\t\t\tconsole.warn( \"THREE.WebGLRenderer.setTexture2D: don't use render targets as textures. Use their .texture property instead.\" );\n\t\t\t\t\twarned = true;\n\n\t\t\t\t}\n\n\t\t\t\ttexture = texture.texture;\n\n\t\t\t}\n\n\t\t\ttextures.setTexture2D( texture, slot );\n\n\t\t};\n\n\t}() );\n\n\tthis.setTexture = ( function() {\n\n\t\tvar warned = false;\n\n\t\treturn function setTexture( texture, slot ) {\n\n\t\t\tif ( ! warned ) {\n\n\t\t\t\tconsole.warn( \"THREE.WebGLRenderer: .setTexture is deprecated, use setTexture2D instead.\" );\n\t\t\t\twarned = true;\n\n\t\t\t}\n\n\t\t\ttextures.setTexture2D( texture, slot );\n\n\t\t};\n\n\t}() );\n\n\tthis.setTextureCube = ( function() {\n\n\t\tvar warned = false;\n\n\t\treturn function setTextureCube( texture, slot ) {\n\n\t\t\t// backwards compatibility: peel texture.texture\n\t\t\tif ( texture && texture.isWebGLRenderTargetCube ) {\n\n\t\t\t\tif ( ! warned ) {\n\n\t\t\t\t\tconsole.warn( \"THREE.WebGLRenderer.setTextureCube: don't use cube render targets as textures. Use their .texture property instead.\" );\n\t\t\t\t\twarned = true;\n\n\t\t\t\t}\n\n\t\t\t\ttexture = texture.texture;\n\n\t\t\t}\n\n\t\t\t// currently relying on the fact that WebGLRenderTargetCube.texture is a Texture and NOT a CubeTexture\n\t\t\t// TODO: unify these code paths\n\t\t\tif ( ( texture && texture.isCubeTexture ) ||\n\t\t\t\t ( Array.isArray( texture.image ) && texture.image.length === 6 ) ) {\n\n\t\t\t\t// CompressedTexture can have Array in image :/\n\n\t\t\t\t// this function alone should take care of cube textures\n\t\t\t\ttextures.setTextureCube( texture, slot );\n\n\t\t\t} else {\n\n\t\t\t\t// assumed: texture property of THREE.WebGLRenderTargetCube\n\n\t\t\t\ttextures.setTextureCubeDynamic( texture, slot );\n\n\t\t\t}\n\n\t\t};\n\n\t}() );\n\n\tthis.getCurrentRenderTarget = function() {\n\n\t\treturn _currentRenderTarget;\n\n\t};\n\n\tthis.setRenderTarget = function ( renderTarget ) {\n\n\t\t_currentRenderTarget = renderTarget;\n\n\t\tif ( renderTarget && properties.get( renderTarget ).__webglFramebuffer === undefined ) {\n\n\t\t\ttextures.setupRenderTarget( renderTarget );\n\n\t\t}\n\n\t\tvar isCube = ( renderTarget && renderTarget.isWebGLRenderTargetCube );\n\t\tvar framebuffer;\n\n\t\tif ( renderTarget ) {\n\n\t\t\tvar renderTargetProperties = properties.get( renderTarget );\n\n\t\t\tif ( isCube ) {\n\n\t\t\t\tframebuffer = renderTargetProperties.__webglFramebuffer[ renderTarget.activeCubeFace ];\n\n\t\t\t} else {\n\n\t\t\t\tframebuffer = renderTargetProperties.__webglFramebuffer;\n\n\t\t\t}\n\n\t\t\t_currentScissor.copy( renderTarget.scissor );\n\t\t\t_currentScissorTest = renderTarget.scissorTest;\n\n\t\t\t_currentViewport.copy( renderTarget.viewport );\n\n\t\t} else {\n\n\t\t\tframebuffer = null;\n\n\t\t\t_currentScissor.copy( _scissor ).multiplyScalar( _pixelRatio );\n\t\t\t_currentScissorTest = _scissorTest;\n\n\t\t\t_currentViewport.copy( _viewport ).multiplyScalar( _pixelRatio );\n\n\t\t}\n\n\t\tif ( _currentFramebuffer !== framebuffer ) {\n\n\t\t\t_gl.bindFramebuffer( _gl.FRAMEBUFFER, framebuffer );\n\t\t\t_currentFramebuffer = framebuffer;\n\n\t\t}\n\n\t\tstate.scissor( _currentScissor );\n\t\tstate.setScissorTest( _currentScissorTest );\n\n\t\tstate.viewport( _currentViewport );\n\n\t\tif ( isCube ) {\n\n\t\t\tvar textureProperties = properties.get( renderTarget.texture );\n\t\t\t_gl.framebufferTexture2D( _gl.FRAMEBUFFER, _gl.COLOR_ATTACHMENT0, _gl.TEXTURE_CUBE_MAP_POSITIVE_X + renderTarget.activeCubeFace, textureProperties.__webglTexture, renderTarget.activeMipMapLevel );\n\n\t\t}\n\n\t};\n\n\tthis.readRenderTargetPixels = function ( renderTarget, x, y, width, height, buffer ) {\n\n\t\tif ( ( renderTarget && renderTarget.isWebGLRenderTarget ) === false ) {\n\n\t\t\tconsole.error( 'THREE.WebGLRenderer.readRenderTargetPixels: renderTarget is not THREE.WebGLRenderTarget.' );\n\t\t\treturn;\n\n\t\t}\n\n\t\tvar framebuffer = properties.get( renderTarget ).__webglFramebuffer;\n\n\t\tif ( framebuffer ) {\n\n\t\t\tvar restore = false;\n\n\t\t\tif ( framebuffer !== _currentFramebuffer ) {\n\n\t\t\t\t_gl.bindFramebuffer( _gl.FRAMEBUFFER, framebuffer );\n\n\t\t\t\trestore = true;\n\n\t\t\t}\n\n\t\t\ttry {\n\n\t\t\t\tvar texture = renderTarget.texture;\n\t\t\t\tvar textureFormat = texture.format;\n\t\t\t\tvar textureType = texture.type;\n\n\t\t\t\tif ( textureFormat !== RGBAFormat && paramThreeToGL( textureFormat ) !== _gl.getParameter( _gl.IMPLEMENTATION_COLOR_READ_FORMAT ) ) {\n\n\t\t\t\t\tconsole.error( 'THREE.WebGLRenderer.readRenderTargetPixels: renderTarget is not in RGBA or implementation defined format.' );\n\t\t\t\t\treturn;\n\n\t\t\t\t}\n\n\t\t\t\tif ( textureType !== UnsignedByteType && paramThreeToGL( textureType ) !== _gl.getParameter( _gl.IMPLEMENTATION_COLOR_READ_TYPE ) && // IE11, Edge and Chrome Mac < 52 (#9513)\n\t\t\t\t ! ( textureType === FloatType && ( extensions.get( 'OES_texture_float' ) || extensions.get( 'WEBGL_color_buffer_float' ) ) ) && // Chrome Mac >= 52 and Firefox\n\t\t\t\t ! ( textureType === HalfFloatType && extensions.get( 'EXT_color_buffer_half_float' ) ) ) {\n\n\t\t\t\t\tconsole.error( 'THREE.WebGLRenderer.readRenderTargetPixels: renderTarget is not in UnsignedByteType or implementation defined type.' );\n\t\t\t\t\treturn;\n\n\t\t\t\t}\n\n\t\t\t\tif ( _gl.checkFramebufferStatus( _gl.FRAMEBUFFER ) === _gl.FRAMEBUFFER_COMPLETE ) {\n\n\t\t\t\t\t// the following if statement ensures valid read requests (no out-of-bounds pixels, see #8604)\n\n\t\t\t\t\tif ( ( x >= 0 && x <= ( renderTarget.width - width ) ) && ( y >= 0 && y <= ( renderTarget.height - height ) ) ) {\n\n\t\t\t\t\t\t_gl.readPixels( x, y, width, height, paramThreeToGL( textureFormat ), paramThreeToGL( textureType ), buffer );\n\n\t\t\t\t\t}\n\n\t\t\t\t} else {\n\n\t\t\t\t\tconsole.error( 'THREE.WebGLRenderer.readRenderTargetPixels: readPixels from renderTarget failed. Framebuffer not complete.' );\n\n\t\t\t\t}\n\n\t\t\t} finally {\n\n\t\t\t\tif ( restore ) {\n\n\t\t\t\t\t_gl.bindFramebuffer( _gl.FRAMEBUFFER, _currentFramebuffer );\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t}\n\n\t};\n\n\t// Map three.js constants to WebGL constants\n\n\tfunction paramThreeToGL( p ) {\n\n\t\tvar extension;\n\n\t\tif ( p === RepeatWrapping ) return _gl.REPEAT;\n\t\tif ( p === ClampToEdgeWrapping ) return _gl.CLAMP_TO_EDGE;\n\t\tif ( p === MirroredRepeatWrapping ) return _gl.MIRRORED_REPEAT;\n\n\t\tif ( p === NearestFilter ) return _gl.NEAREST;\n\t\tif ( p === NearestMipMapNearestFilter ) return _gl.NEAREST_MIPMAP_NEAREST;\n\t\tif ( p === NearestMipMapLinearFilter ) return _gl.NEAREST_MIPMAP_LINEAR;\n\n\t\tif ( p === LinearFilter ) return _gl.LINEAR;\n\t\tif ( p === LinearMipMapNearestFilter ) return _gl.LINEAR_MIPMAP_NEAREST;\n\t\tif ( p === LinearMipMapLinearFilter ) return _gl.LINEAR_MIPMAP_LINEAR;\n\n\t\tif ( p === UnsignedByteType ) return _gl.UNSIGNED_BYTE;\n\t\tif ( p === UnsignedShort4444Type ) return _gl.UNSIGNED_SHORT_4_4_4_4;\n\t\tif ( p === UnsignedShort5551Type ) return _gl.UNSIGNED_SHORT_5_5_5_1;\n\t\tif ( p === UnsignedShort565Type ) return _gl.UNSIGNED_SHORT_5_6_5;\n\n\t\tif ( p === ByteType ) return _gl.BYTE;\n\t\tif ( p === ShortType ) return _gl.SHORT;\n\t\tif ( p === UnsignedShortType ) return _gl.UNSIGNED_SHORT;\n\t\tif ( p === IntType ) return _gl.INT;\n\t\tif ( p === UnsignedIntType ) return _gl.UNSIGNED_INT;\n\t\tif ( p === FloatType ) return _gl.FLOAT;\n\n\t\tif ( p === HalfFloatType ) {\n\n\t\t\textension = extensions.get( 'OES_texture_half_float' );\n\n\t\t\tif ( extension !== null ) return extension.HALF_FLOAT_OES;\n\n\t\t}\n\n\t\tif ( p === AlphaFormat ) return _gl.ALPHA;\n\t\tif ( p === RGBFormat ) return _gl.RGB;\n\t\tif ( p === RGBAFormat ) return _gl.RGBA;\n\t\tif ( p === LuminanceFormat ) return _gl.LUMINANCE;\n\t\tif ( p === LuminanceAlphaFormat ) return _gl.LUMINANCE_ALPHA;\n\t\tif ( p === DepthFormat ) return _gl.DEPTH_COMPONENT;\n\t\tif ( p === DepthStencilFormat ) return _gl.DEPTH_STENCIL;\n\n\t\tif ( p === AddEquation ) return _gl.FUNC_ADD;\n\t\tif ( p === SubtractEquation ) return _gl.FUNC_SUBTRACT;\n\t\tif ( p === ReverseSubtractEquation ) return _gl.FUNC_REVERSE_SUBTRACT;\n\n\t\tif ( p === ZeroFactor ) return _gl.ZERO;\n\t\tif ( p === OneFactor ) return _gl.ONE;\n\t\tif ( p === SrcColorFactor ) return _gl.SRC_COLOR;\n\t\tif ( p === OneMinusSrcColorFactor ) return _gl.ONE_MINUS_SRC_COLOR;\n\t\tif ( p === SrcAlphaFactor ) return _gl.SRC_ALPHA;\n\t\tif ( p === OneMinusSrcAlphaFactor ) return _gl.ONE_MINUS_SRC_ALPHA;\n\t\tif ( p === DstAlphaFactor ) return _gl.DST_ALPHA;\n\t\tif ( p === OneMinusDstAlphaFactor ) return _gl.ONE_MINUS_DST_ALPHA;\n\n\t\tif ( p === DstColorFactor ) return _gl.DST_COLOR;\n\t\tif ( p === OneMinusDstColorFactor ) return _gl.ONE_MINUS_DST_COLOR;\n\t\tif ( p === SrcAlphaSaturateFactor ) return _gl.SRC_ALPHA_SATURATE;\n\n\t\tif ( p === RGB_S3TC_DXT1_Format || p === RGBA_S3TC_DXT1_Format ||\n\t\t\tp === RGBA_S3TC_DXT3_Format || p === RGBA_S3TC_DXT5_Format ) {\n\n\t\t\textension = extensions.get( 'WEBGL_compressed_texture_s3tc' );\n\n\t\t\tif ( extension !== null ) {\n\n\t\t\t\tif ( p === RGB_S3TC_DXT1_Format ) return extension.COMPRESSED_RGB_S3TC_DXT1_EXT;\n\t\t\t\tif ( p === RGBA_S3TC_DXT1_Format ) return extension.COMPRESSED_RGBA_S3TC_DXT1_EXT;\n\t\t\t\tif ( p === RGBA_S3TC_DXT3_Format ) return extension.COMPRESSED_RGBA_S3TC_DXT3_EXT;\n\t\t\t\tif ( p === RGBA_S3TC_DXT5_Format ) return extension.COMPRESSED_RGBA_S3TC_DXT5_EXT;\n\n\t\t\t}\n\n\t\t}\n\n\t\tif ( p === RGB_PVRTC_4BPPV1_Format || p === RGB_PVRTC_2BPPV1_Format ||\n\t\t\t p === RGBA_PVRTC_4BPPV1_Format || p === RGBA_PVRTC_2BPPV1_Format ) {\n\n\t\t\textension = extensions.get( 'WEBGL_compressed_texture_pvrtc' );\n\n\t\t\tif ( extension !== null ) {\n\n\t\t\t\tif ( p === RGB_PVRTC_4BPPV1_Format ) return extension.COMPRESSED_RGB_PVRTC_4BPPV1_IMG;\n\t\t\t\tif ( p === RGB_PVRTC_2BPPV1_Format ) return extension.COMPRESSED_RGB_PVRTC_2BPPV1_IMG;\n\t\t\t\tif ( p === RGBA_PVRTC_4BPPV1_Format ) return extension.COMPRESSED_RGBA_PVRTC_4BPPV1_IMG;\n\t\t\t\tif ( p === RGBA_PVRTC_2BPPV1_Format ) return extension.COMPRESSED_RGBA_PVRTC_2BPPV1_IMG;\n\n\t\t\t}\n\n\t\t}\n\n\t\tif ( p === RGB_ETC1_Format ) {\n\n\t\t\textension = extensions.get( 'WEBGL_compressed_texture_etc1' );\n\n\t\t\tif ( extension !== null ) return extension.COMPRESSED_RGB_ETC1_WEBGL;\n\n\t\t}\n\n\t\tif ( p === MinEquation || p === MaxEquation ) {\n\n\t\t\textension = extensions.get( 'EXT_blend_minmax' );\n\n\t\t\tif ( extension !== null ) {\n\n\t\t\t\tif ( p === MinEquation ) return extension.MIN_EXT;\n\t\t\t\tif ( p === MaxEquation ) return extension.MAX_EXT;\n\n\t\t\t}\n\n\t\t}\n\n\t\tif ( p === UnsignedInt248Type ) {\n\n\t\t\textension = extensions.get( 'WEBGL_depth_texture' );\n\n\t\t\tif ( extension !== null ) return extension.UNSIGNED_INT_24_8_WEBGL;\n\n\t\t}\n\n\t\treturn 0;\n\n\t}\n\n}\n\nexport { WebGLRenderer };\n","/**\n * @author mrdoob / http://mrdoob.com/\n */\n\nimport { REVISION } from '../constants';\nimport { WebGLExtensions } from './webgl/WebGLExtensions';\nimport { WebGLState } from './webgl/WebGLState';\nimport { Color } from '../math/Color';\nimport { Vector4 } from '../math/Vector4';\n\nfunction WebGL2Renderer( parameters ) {\n\n\tconsole.log( 'THREE.WebGL2Renderer', REVISION );\n\n\tparameters = parameters || {};\n\n\tvar _canvas = parameters.canvas !== undefined ? parameters.canvas : document.createElementNS( 'http://www.w3.org/1999/xhtml', 'canvas' ),\n\t_context = parameters.context !== undefined ? parameters.context : null,\n\n\t_alpha = parameters.alpha !== undefined ? parameters.alpha : false,\n\t_depth = parameters.depth !== undefined ? parameters.depth : true,\n\t_stencil = parameters.stencil !== undefined ? parameters.stencil : true,\n\t_antialias = parameters.antialias !== undefined ? parameters.antialias : false,\n\t_premultipliedAlpha = parameters.premultipliedAlpha !== undefined ? parameters.premultipliedAlpha : true,\n\t_preserveDrawingBuffer = parameters.preserveDrawingBuffer !== undefined ? parameters.preserveDrawingBuffer : false;\n\n\t// initialize\n\n\tvar gl;\n\n\ttry {\n\n\t\tvar attributes = {\n\t\t\talpha: _alpha,\n\t\t\tdepth: _depth,\n\t\t\tstencil: _stencil,\n\t\t\tantialias: _antialias,\n\t\t\tpremultipliedAlpha: _premultipliedAlpha,\n\t\t\tpreserveDrawingBuffer: _preserveDrawingBuffer\n\t\t};\n\n\t\tgl = _context || _canvas.getContext( 'webgl2', attributes );\n\n\t\tif ( gl === null ) {\n\n\t\t\tif ( _canvas.getContext( 'webgl2' ) !== null ) {\n\n\t\t\t\tthrow 'Error creating WebGL2 context with your selected attributes.';\n\n\t\t\t} else {\n\n\t\t\t\tthrow 'Error creating WebGL2 context.';\n\n\t\t\t}\n\n\t\t}\n\n\t\t_canvas.addEventListener( 'webglcontextlost', onContextLost, false );\n\n\t} catch ( error ) {\n\n\t\tconsole.error( 'THREE.WebGL2Renderer: ' + error );\n\n\t}\n\n\t//\n\n\tvar _this = this,\n\n\t\t_autoClear = true,\n\t\t_autoClearColor = true,\n\t\t_autoClearDepth = true,\n\t\t_autoClearStencil = true,\n\n\t\t_clearColor = new Color( 0x000000 ),\n\t\t_clearAlpha = 0,\n\n\t\t_width = _canvas.width,\n\t\t_height = _canvas.height,\n\n\t\t_pixelRatio = 1,\n\n\t\t_viewport = new Vector4( 0, 0, _width, _height );\n\n\tvar extensions = new WebGLExtensions( gl );\n\tvar state = new WebGLState( gl, extensions, function () {} );\n\n\t//\n\n\tfunction clear( color, depth, stencil ) {\n\n\t\tvar bits = 0;\n\n\t\tif ( color === undefined || color ) bits |= gl.COLOR_BUFFER_BIT;\n\t\tif ( depth === undefined || depth ) bits |= gl.DEPTH_BUFFER_BIT;\n\t\tif ( stencil === undefined || stencil ) bits |= gl.STENCIL_BUFFER_BIT;\n\n\t\tgl.clear( bits );\n\n\t}\n\n\tfunction setPixelRatio( value ) {\n\n\t\tif ( value === undefined ) return;\n\n\t\t_pixelRatio = value;\n\n\t\tsetSize( _viewport.z, _viewport.w, false );\n\n\t}\n\n\tfunction setSize( width, height, updateStyle ) {\n\n\t\t_width = width;\n\t\t_height = height;\n\n\t\t_canvas.width = width * _pixelRatio;\n\t\t_canvas.height = height * _pixelRatio;\n\n\t\tif ( updateStyle !== false ) {\n\n\t\t\t_canvas.style.width = width + 'px';\n\t\t\t_canvas.style.height = height + 'px';\n\n\t\t}\n\n\t\tsetViewport( 0, 0, width, height );\n\n\t}\n\n\tfunction setViewport( x, y, width, height ) {\n\n\t\tstate.viewport( _viewport.set( x, y, width, height ) );\n\n\t}\n\n\tfunction render( scene, camera ) {\n\n\t\tif ( camera !== undefined && camera.isCamera !== true ) {\n\n\t\t\tconsole.error( 'THREE.WebGL2Renderer.render: camera is not an instance of THREE.Camera.' );\n\t\t\treturn;\n\n\t\t}\n\n\t\tvar background = scene.background;\n\t\tvar forceClear = false;\n\n\t\tif ( background === null ) {\n\n\t\t\tstate.buffers.color.setClear( _clearColor.r, _clearColor.g, _clearColor.b, _clearAlpha, _premultipliedAlpha );\n\n\t\t} else if ( background && background.isColor ) {\n\n\t\t\tstate.buffers.color.setClear( background.r, background.g, background.b, 1, _premultipliedAlpha );\n\t\t\tforceClear = true;\n\n\t\t}\n\n\t\tif ( _autoClear || forceClear ) {\n\n\t\t\tthis.clear( _autoClearColor, _autoClearDepth, _autoClearStencil );\n\n\t\t}\n\n\t}\n\n\tfunction onContextLost( event ) {\n\n\t\tevent.preventDefault();\n\n\t}\n\n\treturn {\n\t\tdomElement: _canvas,\n\n\t\tclear: clear,\n\t\tsetPixelRatio: setPixelRatio,\n\t\tsetSize: setSize,\n\t\trender: render\n\t}\n\n}\n\nexport { WebGL2Renderer };\n","import { Color } from '../math/Color';\n\n/**\n * @author mrdoob / http://mrdoob.com/\n * @author alteredq / http://alteredqualia.com/\n */\n\nfunction FogExp2 ( color, density ) {\n\n\tthis.name = '';\n\n\tthis.color = new Color( color );\n\tthis.density = ( density !== undefined ) ? density : 0.00025;\n\n}\n\nFogExp2.prototype.isFogExp2 = true;\n\nFogExp2.prototype.clone = function () {\n\n\treturn new FogExp2( this.color.getHex(), this.density );\n\n};\n\nFogExp2.prototype.toJSON = function ( meta ) {\n\n\treturn {\n\t\ttype: 'FogExp2',\n\t\tcolor: this.color.getHex(),\n\t\tdensity: this.density\n\t};\n\n};\n\nexport { FogExp2 };\n","import { Color } from '../math/Color';\n\n/**\n * @author mrdoob / http://mrdoob.com/\n * @author alteredq / http://alteredqualia.com/\n */\n\nfunction Fog ( color, near, far ) {\n\n\tthis.name = '';\n\n\tthis.color = new Color( color );\n\n\tthis.near = ( near !== undefined ) ? near : 1;\n\tthis.far = ( far !== undefined ) ? far : 1000;\n\n}\n\nFog.prototype.isFog = true;\n\nFog.prototype.clone = function () {\n\n\treturn new Fog( this.color.getHex(), this.near, this.far );\n\n};\n\nFog.prototype.toJSON = function ( meta ) {\n\n\treturn {\n\t\ttype: 'Fog',\n\t\tcolor: this.color.getHex(),\n\t\tnear: this.near,\n\t\tfar: this.far\n\t};\n\n};\n\nexport { Fog };\n","import { Object3D } from '../core/Object3D';\n\n/**\n * @author mrdoob / http://mrdoob.com/\n */\n\nfunction Scene () {\n\n\tObject3D.call( this );\n\n\tthis.type = 'Scene';\n\n\tthis.background = null;\n\tthis.fog = null;\n\tthis.overrideMaterial = null;\n\n\tthis.autoUpdate = true; // checked by the renderer\n\n}\n\nScene.prototype = Object.create( Object3D.prototype );\n\nScene.prototype.constructor = Scene;\n\nScene.prototype.copy = function ( source, recursive ) {\n\n\tObject3D.prototype.copy.call( this, source, recursive );\n\n\tif ( source.background !== null ) this.background = source.background.clone();\n\tif ( source.fog !== null ) this.fog = source.fog.clone();\n\tif ( source.overrideMaterial !== null ) this.overrideMaterial = source.overrideMaterial.clone();\n\n\tthis.autoUpdate = source.autoUpdate;\n\tthis.matrixAutoUpdate = source.matrixAutoUpdate;\n\n\treturn this;\n\n};\n\nScene.prototype.toJSON = function ( meta ) {\n\n\tvar data = Object3D.prototype.toJSON.call( this, meta );\n\n\tif ( this.background !== null ) data.object.background = this.background.toJSON( meta );\n\tif ( this.fog !== null ) data.object.fog = this.fog.toJSON();\n\n\treturn data;\n\n};\n\nexport { Scene };\n","import { Object3D } from '../core/Object3D';\nimport { NormalBlending } from '../constants';\nimport { Color } from '../math/Color';\nimport { Vector3 } from '../math/Vector3';\n\n/**\n * @author mikael emtinger / http://gomo.se/\n * @author alteredq / http://alteredqualia.com/\n */\n\nfunction LensFlare( texture, size, distance, blending, color ) {\n\n\tObject3D.call( this );\n\n\tthis.lensFlares = [];\n\n\tthis.positionScreen = new Vector3();\n\tthis.customUpdateCallback = undefined;\n\n\tif ( texture !== undefined ) {\n\n\t\tthis.add( texture, size, distance, blending, color );\n\n\t}\n\n}\n\nLensFlare.prototype = Object.assign( Object.create( Object3D.prototype ), {\n\n\tconstructor: LensFlare,\n\n\tisLensFlare: true,\n\n\tcopy: function ( source ) {\n\n\t\tObject3D.prototype.copy.call( this, source );\n\n\t\tthis.positionScreen.copy( source.positionScreen );\n\t\tthis.customUpdateCallback = source.customUpdateCallback;\n\n\t\tfor ( var i = 0, l = source.lensFlares.length; i < l; i ++ ) {\n\n\t\t\tthis.lensFlares.push( source.lensFlares[ i ] );\n\n\t\t}\n\n\t\treturn this;\n\n\t},\n\n\tadd: function ( texture, size, distance, blending, color, opacity ) {\n\n\t\tif ( size === undefined ) size = - 1;\n\t\tif ( distance === undefined ) distance = 0;\n\t\tif ( opacity === undefined ) opacity = 1;\n\t\tif ( color === undefined ) color = new Color( 0xffffff );\n\t\tif ( blending === undefined ) blending = NormalBlending;\n\n\t\tdistance = Math.min( distance, Math.max( 0, distance ) );\n\n\t\tthis.lensFlares.push( {\n\t\t\ttexture: texture,\t// THREE.Texture\n\t\t\tsize: size, \t\t// size in pixels (-1 = use texture.width)\n\t\t\tdistance: distance, \t// distance (0-1) from light source (0=at light source)\n\t\t\tx: 0, y: 0, z: 0,\t// screen position (-1 => 1) z = 0 is in front z = 1 is back\n\t\t\tscale: 1, \t\t// scale\n\t\t\trotation: 0, \t\t// rotation\n\t\t\topacity: opacity,\t// opacity\n\t\t\tcolor: color,\t\t// color\n\t\t\tblending: blending\t// blending\n\t\t} );\n\n\t},\n\n\t/*\n\t * Update lens flares update positions on all flares based on the screen position\n\t * Set myLensFlare.customUpdateCallback to alter the flares in your project specific way.\n\t */\n\n\tupdateLensFlares: function () {\n\n\t\tvar f, fl = this.lensFlares.length;\n\t\tvar flare;\n\t\tvar vecX = - this.positionScreen.x * 2;\n\t\tvar vecY = - this.positionScreen.y * 2;\n\n\t\tfor ( f = 0; f < fl; f ++ ) {\n\n\t\t\tflare = this.lensFlares[ f ];\n\n\t\t\tflare.x = this.positionScreen.x + vecX * flare.distance;\n\t\t\tflare.y = this.positionScreen.y + vecY * flare.distance;\n\n\t\t\tflare.wantedRotation = flare.x * Math.PI * 0.25;\n\t\t\tflare.rotation += ( flare.wantedRotation - flare.rotation ) * 0.25;\n\n\t\t}\n\n\t}\n\n} );\n\n\nexport { LensFlare };\n","import { Material } from './Material';\nimport { Color } from '../math/Color';\n\n/**\n * @author alteredq / http://alteredqualia.com/\n *\n * parameters = {\n * color: ,\n * opacity: ,\n * map: new THREE.Texture( ),\n *\n *\tuvOffset: new THREE.Vector2(),\n *\tuvScale: new THREE.Vector2()\n * }\n */\n\nfunction SpriteMaterial( parameters ) {\n\n\tMaterial.call( this );\n\n\tthis.type = 'SpriteMaterial';\n\n\tthis.color = new Color( 0xffffff );\n\tthis.map = null;\n\n\tthis.rotation = 0;\n\n\tthis.fog = false;\n\tthis.lights = false;\n\n\tthis.setValues( parameters );\n\n}\n\nSpriteMaterial.prototype = Object.create( Material.prototype );\nSpriteMaterial.prototype.constructor = SpriteMaterial;\n\nSpriteMaterial.prototype.copy = function ( source ) {\n\n\tMaterial.prototype.copy.call( this, source );\n\n\tthis.color.copy( source.color );\n\tthis.map = source.map;\n\n\tthis.rotation = source.rotation;\n\n\treturn this;\n\n};\n\n\nexport { SpriteMaterial };\n","import { Vector3 } from '../math/Vector3';\nimport { Object3D } from '../core/Object3D';\nimport { SpriteMaterial } from '../materials/SpriteMaterial';\n\n/**\n * @author mikael emtinger / http://gomo.se/\n * @author alteredq / http://alteredqualia.com/\n */\n\nfunction Sprite( material ) {\n\n\tObject3D.call( this );\n\n\tthis.type = 'Sprite';\n\n\tthis.material = ( material !== undefined ) ? material : new SpriteMaterial();\n\n}\n\nSprite.prototype = Object.assign( Object.create( Object3D.prototype ), {\n\n\tconstructor: Sprite,\n\n\tisSprite: true,\n\n\traycast: ( function () {\n\n\t\tvar matrixPosition = new Vector3();\n\n\t\treturn function raycast( raycaster, intersects ) {\n\n\t\t\tmatrixPosition.setFromMatrixPosition( this.matrixWorld );\n\n\t\t\tvar distanceSq = raycaster.ray.distanceSqToPoint( matrixPosition );\n\t\t\tvar guessSizeSq = this.scale.x * this.scale.y / 4;\n\n\t\t\tif ( distanceSq > guessSizeSq ) {\n\n\t\t\t\treturn;\n\n\t\t\t}\n\n\t\t\tintersects.push( {\n\n\t\t\t\tdistance: Math.sqrt( distanceSq ),\n\t\t\t\tpoint: this.position,\n\t\t\t\tface: null,\n\t\t\t\tobject: this\n\n\t\t\t} );\n\n\t\t};\n\n\t}() ),\n\n\tclone: function () {\n\n\t\treturn new this.constructor( this.material ).copy( this );\n\n\t}\n\n} );\n\n\nexport { Sprite };\n","import { Vector3 } from '../math/Vector3';\nimport { Object3D } from '../core/Object3D';\n\n/**\n * @author mikael emtinger / http://gomo.se/\n * @author alteredq / http://alteredqualia.com/\n * @author mrdoob / http://mrdoob.com/\n */\n\nfunction LOD() {\n\n\tObject3D.call( this );\n\n\tthis.type = 'LOD';\n\n\tObject.defineProperties( this, {\n\t\tlevels: {\n\t\t\tenumerable: true,\n\t\t\tvalue: []\n\t\t}\n\t} );\n\n}\n\n\nLOD.prototype = Object.assign( Object.create( Object3D.prototype ), {\n\n\tconstructor: LOD,\n\n\tcopy: function ( source ) {\n\n\t\tObject3D.prototype.copy.call( this, source, false );\n\n\t\tvar levels = source.levels;\n\n\t\tfor ( var i = 0, l = levels.length; i < l; i ++ ) {\n\n\t\t\tvar level = levels[ i ];\n\n\t\t\tthis.addLevel( level.object.clone(), level.distance );\n\n\t\t}\n\n\t\treturn this;\n\n\t},\n\n\taddLevel: function ( object, distance ) {\n\n\t\tif ( distance === undefined ) distance = 0;\n\n\t\tdistance = Math.abs( distance );\n\n\t\tvar levels = this.levels;\n\n\t\tfor ( var l = 0; l < levels.length; l ++ ) {\n\n\t\t\tif ( distance < levels[ l ].distance ) {\n\n\t\t\t\tbreak;\n\n\t\t\t}\n\n\t\t}\n\n\t\tlevels.splice( l, 0, { distance: distance, object: object } );\n\n\t\tthis.add( object );\n\n\t},\n\n\tgetObjectForDistance: function ( distance ) {\n\n\t\tvar levels = this.levels;\n\n\t\tfor ( var i = 1, l = levels.length; i < l; i ++ ) {\n\n\t\t\tif ( distance < levels[ i ].distance ) {\n\n\t\t\t\tbreak;\n\n\t\t\t}\n\n\t\t}\n\n\t\treturn levels[ i - 1 ].object;\n\n\t},\n\n\traycast: ( function () {\n\n\t\tvar matrixPosition = new Vector3();\n\n\t\treturn function raycast( raycaster, intersects ) {\n\n\t\t\tmatrixPosition.setFromMatrixPosition( this.matrixWorld );\n\n\t\t\tvar distance = raycaster.ray.origin.distanceTo( matrixPosition );\n\n\t\t\tthis.getObjectForDistance( distance ).raycast( raycaster, intersects );\n\n\t\t};\n\n\t}() ),\n\n\tupdate: function () {\n\n\t\tvar v1 = new Vector3();\n\t\tvar v2 = new Vector3();\n\n\t\treturn function update( camera ) {\n\n\t\t\tvar levels = this.levels;\n\n\t\t\tif ( levels.length > 1 ) {\n\n\t\t\t\tv1.setFromMatrixPosition( camera.matrixWorld );\n\t\t\t\tv2.setFromMatrixPosition( this.matrixWorld );\n\n\t\t\t\tvar distance = v1.distanceTo( v2 );\n\n\t\t\t\tlevels[ 0 ].object.visible = true;\n\n\t\t\t\tfor ( var i = 1, l = levels.length; i < l; i ++ ) {\n\n\t\t\t\t\tif ( distance >= levels[ i ].distance ) {\n\n\t\t\t\t\t\tlevels[ i - 1 ].object.visible = false;\n\t\t\t\t\t\tlevels[ i ].object.visible = true;\n\n\t\t\t\t\t} else {\n\n\t\t\t\t\t\tbreak;\n\n\t\t\t\t\t}\n\n\t\t\t\t}\n\n\t\t\t\tfor ( ; i < l; i ++ ) {\n\n\t\t\t\t\tlevels[ i ].object.visible = false;\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t};\n\n\t}(),\n\n\ttoJSON: function ( meta ) {\n\n\t\tvar data = Object3D.prototype.toJSON.call( this, meta );\n\n\t\tdata.object.levels = [];\n\n\t\tvar levels = this.levels;\n\n\t\tfor ( var i = 0, l = levels.length; i < l; i ++ ) {\n\n\t\t\tvar level = levels[ i ];\n\n\t\t\tdata.object.levels.push( {\n\t\t\t\tobject: level.object.uuid,\n\t\t\t\tdistance: level.distance\n\t\t\t} );\n\n\t\t}\n\n\t\treturn data;\n\n\t}\n\n} );\n\n\nexport { LOD };\n","import { Texture } from './Texture';\nimport { NearestFilter } from '../constants';\n\n/**\n * @author alteredq / http://alteredqualia.com/\n */\n\nfunction DataTexture( data, width, height, format, type, mapping, wrapS, wrapT, magFilter, minFilter, anisotropy, encoding ) {\n\n\tTexture.call( this, null, mapping, wrapS, wrapT, magFilter, minFilter, format, type, anisotropy, encoding );\n\n\tthis.image = { data: data, width: width, height: height };\n\n\tthis.magFilter = magFilter !== undefined ? magFilter : NearestFilter;\n\tthis.minFilter = minFilter !== undefined ? minFilter : NearestFilter;\n\n\tthis.generateMipmaps = false;\n\tthis.flipY = false;\n\tthis.unpackAlignment = 1;\n\n}\n\nDataTexture.prototype = Object.create( Texture.prototype );\nDataTexture.prototype.constructor = DataTexture;\n\nDataTexture.prototype.isDataTexture = true;\n\n\nexport { DataTexture };\n","import { Matrix4 } from '../math/Matrix4';\nimport { FloatType, RGBAFormat } from '../constants';\nimport { DataTexture } from '../textures/DataTexture';\nimport { _Math } from '../math/Math';\n\n/**\n * @author mikael emtinger / http://gomo.se/\n * @author alteredq / http://alteredqualia.com/\n * @author michael guerrero / http://realitymeltdown.com\n * @author ikerr / http://verold.com\n */\n\nfunction Skeleton( bones, boneInverses, useVertexTexture ) {\n\n\tthis.useVertexTexture = useVertexTexture !== undefined ? useVertexTexture : true;\n\n\tthis.identityMatrix = new Matrix4();\n\n\t// copy the bone array\n\n\tbones = bones || [];\n\n\tthis.bones = bones.slice( 0 );\n\n\t// create a bone texture or an array of floats\n\n\tif ( this.useVertexTexture ) {\n\n\t\t// layout (1 matrix = 4 pixels)\n\t\t// RGBA RGBA RGBA RGBA (=> column1, column2, column3, column4)\n\t\t// with 8x8 pixel texture max 16 bones * 4 pixels = (8 * 8)\n\t\t// 16x16 pixel texture max 64 bones * 4 pixels = (16 * 16)\n\t\t// 32x32 pixel texture max 256 bones * 4 pixels = (32 * 32)\n\t\t// 64x64 pixel texture max 1024 bones * 4 pixels = (64 * 64)\n\n\n\t\tvar size = Math.sqrt( this.bones.length * 4 ); // 4 pixels needed for 1 matrix\n\t\tsize = _Math.nextPowerOfTwo( Math.ceil( size ) );\n\t\tsize = Math.max( size, 4 );\n\n\t\tthis.boneTextureWidth = size;\n\t\tthis.boneTextureHeight = size;\n\n\t\tthis.boneMatrices = new Float32Array( this.boneTextureWidth * this.boneTextureHeight * 4 ); // 4 floats per RGBA pixel\n\t\tthis.boneTexture = new DataTexture( this.boneMatrices, this.boneTextureWidth, this.boneTextureHeight, RGBAFormat, FloatType );\n\n\t} else {\n\n\t\tthis.boneMatrices = new Float32Array( 16 * this.bones.length );\n\n\t}\n\n\t// use the supplied bone inverses or calculate the inverses\n\n\tif ( boneInverses === undefined ) {\n\n\t\tthis.calculateInverses();\n\n\t} else {\n\n\t\tif ( this.bones.length === boneInverses.length ) {\n\n\t\t\tthis.boneInverses = boneInverses.slice( 0 );\n\n\t\t} else {\n\n\t\t\tconsole.warn( 'THREE.Skeleton bonInverses is the wrong length.' );\n\n\t\t\tthis.boneInverses = [];\n\n\t\t\tfor ( var b = 0, bl = this.bones.length; b < bl; b ++ ) {\n\n\t\t\t\tthis.boneInverses.push( new Matrix4() );\n\n\t\t\t}\n\n\t\t}\n\n\t}\n\n}\n\nObject.assign( Skeleton.prototype, {\n\n\tcalculateInverses: function () {\n\n\t\tthis.boneInverses = [];\n\n\t\tfor ( var b = 0, bl = this.bones.length; b < bl; b ++ ) {\n\n\t\t\tvar inverse = new Matrix4();\n\n\t\t\tif ( this.bones[ b ] ) {\n\n\t\t\t\tinverse.getInverse( this.bones[ b ].matrixWorld );\n\n\t\t\t}\n\n\t\t\tthis.boneInverses.push( inverse );\n\n\t\t}\n\n\t},\n\n\tpose: function () {\n\n\t\tvar bone;\n\n\t\t// recover the bind-time world matrices\n\n\t\tfor ( var b = 0, bl = this.bones.length; b < bl; b ++ ) {\n\n\t\t\tbone = this.bones[ b ];\n\n\t\t\tif ( bone ) {\n\n\t\t\t\tbone.matrixWorld.getInverse( this.boneInverses[ b ] );\n\n\t\t\t}\n\n\t\t}\n\n\t\t// compute the local matrices, positions, rotations and scales\n\n\t\tfor ( var b = 0, bl = this.bones.length; b < bl; b ++ ) {\n\n\t\t\tbone = this.bones[ b ];\n\n\t\t\tif ( bone ) {\n\n\t\t\t\tif ( (bone.parent && bone.parent.isBone) ) {\n\n\t\t\t\t\tbone.matrix.getInverse( bone.parent.matrixWorld );\n\t\t\t\t\tbone.matrix.multiply( bone.matrixWorld );\n\n\t\t\t\t} else {\n\n\t\t\t\t\tbone.matrix.copy( bone.matrixWorld );\n\n\t\t\t\t}\n\n\t\t\t\tbone.matrix.decompose( bone.position, bone.quaternion, bone.scale );\n\n\t\t\t}\n\n\t\t}\n\n\t},\n\n\tupdate: ( function () {\n\n\t\tvar offsetMatrix = new Matrix4();\n\n\t\treturn function update() {\n\n\t\t\t// flatten bone matrices to array\n\n\t\t\tfor ( var b = 0, bl = this.bones.length; b < bl; b ++ ) {\n\n\t\t\t\t// compute the offset between the current and the original transform\n\n\t\t\t\tvar matrix = this.bones[ b ] ? this.bones[ b ].matrixWorld : this.identityMatrix;\n\n\t\t\t\toffsetMatrix.multiplyMatrices( matrix, this.boneInverses[ b ] );\n\t\t\t\toffsetMatrix.toArray( this.boneMatrices, b * 16 );\n\n\t\t\t}\n\n\t\t\tif ( this.useVertexTexture ) {\n\n\t\t\t\tthis.boneTexture.needsUpdate = true;\n\n\t\t\t}\n\n\t\t};\n\n\t} )(),\n\n\tclone: function () {\n\n\t\treturn new Skeleton( this.bones, this.boneInverses, this.useVertexTexture );\n\n\t}\n\n} );\n\n\nexport { Skeleton };\n","import { Object3D } from '../core/Object3D';\n\n/**\n * @author mikael emtinger / http://gomo.se/\n * @author alteredq / http://alteredqualia.com/\n * @author ikerr / http://verold.com\n */\n\nfunction Bone() {\n\n\tObject3D.call( this );\n\n\tthis.type = 'Bone';\n\n}\n\nBone.prototype = Object.assign( Object.create( Object3D.prototype ), {\n\n\tconstructor: Bone,\n\n\tisBone: true\n\n} );\n\n\nexport { Bone };\n","import { Mesh } from './Mesh';\nimport { Vector4 } from '../math/Vector4';\nimport { Skeleton } from './Skeleton';\nimport { Bone } from './Bone';\nimport { Matrix4 } from '../math/Matrix4';\n\n/**\n * @author mikael emtinger / http://gomo.se/\n * @author alteredq / http://alteredqualia.com/\n * @author ikerr / http://verold.com\n */\n\nfunction SkinnedMesh( geometry, material, useVertexTexture ) {\n\n\tMesh.call( this, geometry, material );\n\n\tthis.type = 'SkinnedMesh';\n\n\tthis.bindMode = \"attached\";\n\tthis.bindMatrix = new Matrix4();\n\tthis.bindMatrixInverse = new Matrix4();\n\n\t// init bones\n\n\t// TODO: remove bone creation as there is no reason (other than\n\t// convenience) for THREE.SkinnedMesh to do this.\n\n\tvar bones = [];\n\n\tif ( this.geometry && this.geometry.bones !== undefined ) {\n\n\t\tvar bone, gbone;\n\n\t\tfor ( var b = 0, bl = this.geometry.bones.length; b < bl; ++ b ) {\n\n\t\t\tgbone = this.geometry.bones[ b ];\n\n\t\t\tbone = new Bone();\n\t\t\tbones.push( bone );\n\n\t\t\tbone.name = gbone.name;\n\t\t\tbone.position.fromArray( gbone.pos );\n\t\t\tbone.quaternion.fromArray( gbone.rotq );\n\t\t\tif ( gbone.scl !== undefined ) bone.scale.fromArray( gbone.scl );\n\n\t\t}\n\n\t\tfor ( var b = 0, bl = this.geometry.bones.length; b < bl; ++ b ) {\n\n\t\t\tgbone = this.geometry.bones[ b ];\n\n\t\t\tif ( gbone.parent !== - 1 && gbone.parent !== null &&\n\t\t\t\t\tbones[ gbone.parent ] !== undefined ) {\n\n\t\t\t\tbones[ gbone.parent ].add( bones[ b ] );\n\n\t\t\t} else {\n\n\t\t\t\tthis.add( bones[ b ] );\n\n\t\t\t}\n\n\t\t}\n\n\t}\n\n\tthis.normalizeSkinWeights();\n\n\tthis.updateMatrixWorld( true );\n\tthis.bind( new Skeleton( bones, undefined, useVertexTexture ), this.matrixWorld );\n\n}\n\n\nSkinnedMesh.prototype = Object.assign( Object.create( Mesh.prototype ), {\n\n\tconstructor: SkinnedMesh,\n\n\tisSkinnedMesh: true,\n\n\tbind: function( skeleton, bindMatrix ) {\n\n\t\tthis.skeleton = skeleton;\n\n\t\tif ( bindMatrix === undefined ) {\n\n\t\t\tthis.updateMatrixWorld( true );\n\n\t\t\tthis.skeleton.calculateInverses();\n\n\t\t\tbindMatrix = this.matrixWorld;\n\n\t\t}\n\n\t\tthis.bindMatrix.copy( bindMatrix );\n\t\tthis.bindMatrixInverse.getInverse( bindMatrix );\n\n\t},\n\n\tpose: function () {\n\n\t\tthis.skeleton.pose();\n\n\t},\n\n\tnormalizeSkinWeights: function () {\n\n\t\tif ( (this.geometry && this.geometry.isGeometry) ) {\n\n\t\t\tfor ( var i = 0; i < this.geometry.skinWeights.length; i ++ ) {\n\n\t\t\t\tvar sw = this.geometry.skinWeights[ i ];\n\n\t\t\t\tvar scale = 1.0 / sw.lengthManhattan();\n\n\t\t\t\tif ( scale !== Infinity ) {\n\n\t\t\t\t\tsw.multiplyScalar( scale );\n\n\t\t\t\t} else {\n\n\t\t\t\t\tsw.set( 1, 0, 0, 0 ); // do something reasonable\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t} else if ( (this.geometry && this.geometry.isBufferGeometry) ) {\n\n\t\t\tvar vec = new Vector4();\n\n\t\t\tvar skinWeight = this.geometry.attributes.skinWeight;\n\n\t\t\tfor ( var i = 0; i < skinWeight.count; i ++ ) {\n\n\t\t\t\tvec.x = skinWeight.getX( i );\n\t\t\t\tvec.y = skinWeight.getY( i );\n\t\t\t\tvec.z = skinWeight.getZ( i );\n\t\t\t\tvec.w = skinWeight.getW( i );\n\n\t\t\t\tvar scale = 1.0 / vec.lengthManhattan();\n\n\t\t\t\tif ( scale !== Infinity ) {\n\n\t\t\t\t\tvec.multiplyScalar( scale );\n\n\t\t\t\t} else {\n\n\t\t\t\t\tvec.set( 1, 0, 0, 0 ); // do something reasonable\n\n\t\t\t\t}\n\n\t\t\t\tskinWeight.setXYZW( i, vec.x, vec.y, vec.z, vec.w );\n\n\t\t\t}\n\n\t\t}\n\n\t},\n\n\tupdateMatrixWorld: function( force ) {\n\n\t\tMesh.prototype.updateMatrixWorld.call( this, true );\n\n\t\tif ( this.bindMode === \"attached\" ) {\n\n\t\t\tthis.bindMatrixInverse.getInverse( this.matrixWorld );\n\n\t\t} else if ( this.bindMode === \"detached\" ) {\n\n\t\t\tthis.bindMatrixInverse.getInverse( this.bindMatrix );\n\n\t\t} else {\n\n\t\t\tconsole.warn( 'THREE.SkinnedMesh unrecognized bindMode: ' + this.bindMode );\n\n\t\t}\n\n\t},\n\n\tclone: function() {\n\n\t\treturn new this.constructor( this.geometry, this.material, this.skeleton.useVertexTexture ).copy( this );\n\n\t}\n\n} );\n\n\nexport { SkinnedMesh };\n","import { Material } from './Material';\nimport { Color } from '../math/Color';\n\n/**\n * @author mrdoob / http://mrdoob.com/\n * @author alteredq / http://alteredqualia.com/\n *\n * parameters = {\n * color: ,\n * opacity: ,\n *\n * linewidth: ,\n * linecap: \"round\",\n * linejoin: \"round\"\n * }\n */\n\nfunction LineBasicMaterial( parameters ) {\n\n\tMaterial.call( this );\n\n\tthis.type = 'LineBasicMaterial';\n\n\tthis.color = new Color( 0xffffff );\n\n\tthis.linewidth = 1;\n\tthis.linecap = 'round';\n\tthis.linejoin = 'round';\n\n\tthis.lights = false;\n\n\tthis.setValues( parameters );\n\n}\n\nLineBasicMaterial.prototype = Object.create( Material.prototype );\nLineBasicMaterial.prototype.constructor = LineBasicMaterial;\n\nLineBasicMaterial.prototype.isLineBasicMaterial = true;\n\nLineBasicMaterial.prototype.copy = function ( source ) {\n\n\tMaterial.prototype.copy.call( this, source );\n\n\tthis.color.copy( source.color );\n\n\tthis.linewidth = source.linewidth;\n\tthis.linecap = source.linecap;\n\tthis.linejoin = source.linejoin;\n\n\treturn this;\n\n};\n\n\nexport { LineBasicMaterial };\n","import { Sphere } from '../math/Sphere';\nimport { Ray } from '../math/Ray';\nimport { Matrix4 } from '../math/Matrix4';\nimport { Object3D } from '../core/Object3D';\nimport { Vector3 } from '../math/Vector3';\nimport { LineBasicMaterial } from '../materials/LineBasicMaterial';\nimport { BufferGeometry } from '../core/BufferGeometry';\nimport { LineSegments } from './LineSegments';\n\n/**\n * @author mrdoob / http://mrdoob.com/\n */\n\nfunction Line( geometry, material, mode ) {\n\n\tif ( mode === 1 ) {\n\n\t\tconsole.warn( 'THREE.Line: parameter THREE.LinePieces no longer supported. Created THREE.LineSegments instead.' );\n\t\treturn new LineSegments( geometry, material );\n\n\t}\n\n\tObject3D.call( this );\n\n\tthis.type = 'Line';\n\n\tthis.geometry = geometry !== undefined ? geometry : new BufferGeometry();\n\tthis.material = material !== undefined ? material : new LineBasicMaterial( { color: Math.random() * 0xffffff } );\n\n}\n\nLine.prototype = Object.assign( Object.create( Object3D.prototype ), {\n\n\tconstructor: Line,\n\n\tisLine: true,\n\n\traycast: ( function () {\n\n\t\tvar inverseMatrix = new Matrix4();\n\t\tvar ray = new Ray();\n\t\tvar sphere = new Sphere();\n\n\t\treturn function raycast( raycaster, intersects ) {\n\n\t\t\tvar precision = raycaster.linePrecision;\n\t\t\tvar precisionSq = precision * precision;\n\n\t\t\tvar geometry = this.geometry;\n\t\t\tvar matrixWorld = this.matrixWorld;\n\n\t\t\t// Checking boundingSphere distance to ray\n\n\t\t\tif ( geometry.boundingSphere === null ) geometry.computeBoundingSphere();\n\n\t\t\tsphere.copy( geometry.boundingSphere );\n\t\t\tsphere.applyMatrix4( matrixWorld );\n\n\t\t\tif ( raycaster.ray.intersectsSphere( sphere ) === false ) return;\n\n\t\t\t//\n\n\t\t\tinverseMatrix.getInverse( matrixWorld );\n\t\t\tray.copy( raycaster.ray ).applyMatrix4( inverseMatrix );\n\n\t\t\tvar vStart = new Vector3();\n\t\t\tvar vEnd = new Vector3();\n\t\t\tvar interSegment = new Vector3();\n\t\t\tvar interRay = new Vector3();\n\t\t\tvar step = (this && this.isLineSegments) ? 2 : 1;\n\n\t\t\tif ( (geometry && geometry.isBufferGeometry) ) {\n\n\t\t\t\tvar index = geometry.index;\n\t\t\t\tvar attributes = geometry.attributes;\n\t\t\t\tvar positions = attributes.position.array;\n\n\t\t\t\tif ( index !== null ) {\n\n\t\t\t\t\tvar indices = index.array;\n\n\t\t\t\t\tfor ( var i = 0, l = indices.length - 1; i < l; i += step ) {\n\n\t\t\t\t\t\tvar a = indices[ i ];\n\t\t\t\t\t\tvar b = indices[ i + 1 ];\n\n\t\t\t\t\t\tvStart.fromArray( positions, a * 3 );\n\t\t\t\t\t\tvEnd.fromArray( positions, b * 3 );\n\n\t\t\t\t\t\tvar distSq = ray.distanceSqToSegment( vStart, vEnd, interRay, interSegment );\n\n\t\t\t\t\t\tif ( distSq > precisionSq ) continue;\n\n\t\t\t\t\t\tinterRay.applyMatrix4( this.matrixWorld ); //Move back to world space for distance calculation\n\n\t\t\t\t\t\tvar distance = raycaster.ray.origin.distanceTo( interRay );\n\n\t\t\t\t\t\tif ( distance < raycaster.near || distance > raycaster.far ) continue;\n\n\t\t\t\t\t\tintersects.push( {\n\n\t\t\t\t\t\t\tdistance: distance,\n\t\t\t\t\t\t\t// What do we want? intersection point on the ray or on the segment??\n\t\t\t\t\t\t\t// point: raycaster.ray.at( distance ),\n\t\t\t\t\t\t\tpoint: interSegment.clone().applyMatrix4( this.matrixWorld ),\n\t\t\t\t\t\t\tindex: i,\n\t\t\t\t\t\t\tface: null,\n\t\t\t\t\t\t\tfaceIndex: null,\n\t\t\t\t\t\t\tobject: this\n\n\t\t\t\t\t\t} );\n\n\t\t\t\t\t}\n\n\t\t\t\t} else {\n\n\t\t\t\t\tfor ( var i = 0, l = positions.length / 3 - 1; i < l; i += step ) {\n\n\t\t\t\t\t\tvStart.fromArray( positions, 3 * i );\n\t\t\t\t\t\tvEnd.fromArray( positions, 3 * i + 3 );\n\n\t\t\t\t\t\tvar distSq = ray.distanceSqToSegment( vStart, vEnd, interRay, interSegment );\n\n\t\t\t\t\t\tif ( distSq > precisionSq ) continue;\n\n\t\t\t\t\t\tinterRay.applyMatrix4( this.matrixWorld ); //Move back to world space for distance calculation\n\n\t\t\t\t\t\tvar distance = raycaster.ray.origin.distanceTo( interRay );\n\n\t\t\t\t\t\tif ( distance < raycaster.near || distance > raycaster.far ) continue;\n\n\t\t\t\t\t\tintersects.push( {\n\n\t\t\t\t\t\t\tdistance: distance,\n\t\t\t\t\t\t\t// What do we want? intersection point on the ray or on the segment??\n\t\t\t\t\t\t\t// point: raycaster.ray.at( distance ),\n\t\t\t\t\t\t\tpoint: interSegment.clone().applyMatrix4( this.matrixWorld ),\n\t\t\t\t\t\t\tindex: i,\n\t\t\t\t\t\t\tface: null,\n\t\t\t\t\t\t\tfaceIndex: null,\n\t\t\t\t\t\t\tobject: this\n\n\t\t\t\t\t\t} );\n\n\t\t\t\t\t}\n\n\t\t\t\t}\n\n\t\t\t} else if ( (geometry && geometry.isGeometry) ) {\n\n\t\t\t\tvar vertices = geometry.vertices;\n\t\t\t\tvar nbVertices = vertices.length;\n\n\t\t\t\tfor ( var i = 0; i < nbVertices - 1; i += step ) {\n\n\t\t\t\t\tvar distSq = ray.distanceSqToSegment( vertices[ i ], vertices[ i + 1 ], interRay, interSegment );\n\n\t\t\t\t\tif ( distSq > precisionSq ) continue;\n\n\t\t\t\t\tinterRay.applyMatrix4( this.matrixWorld ); //Move back to world space for distance calculation\n\n\t\t\t\t\tvar distance = raycaster.ray.origin.distanceTo( interRay );\n\n\t\t\t\t\tif ( distance < raycaster.near || distance > raycaster.far ) continue;\n\n\t\t\t\t\tintersects.push( {\n\n\t\t\t\t\t\tdistance: distance,\n\t\t\t\t\t\t// What do we want? intersection point on the ray or on the segment??\n\t\t\t\t\t\t// point: raycaster.ray.at( distance ),\n\t\t\t\t\t\tpoint: interSegment.clone().applyMatrix4( this.matrixWorld ),\n\t\t\t\t\t\tindex: i,\n\t\t\t\t\t\tface: null,\n\t\t\t\t\t\tfaceIndex: null,\n\t\t\t\t\t\tobject: this\n\n\t\t\t\t\t} );\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t};\n\n\t}() ),\n\n\tclone: function () {\n\n\t\treturn new this.constructor( this.geometry, this.material ).copy( this );\n\n\t}\n\n} );\n\n\nexport { Line };\n","import { Line } from './Line';\n\n/**\n * @author mrdoob / http://mrdoob.com/\n */\n\nfunction LineSegments( geometry, material ) {\n\n\tLine.call( this, geometry, material );\n\n\tthis.type = 'LineSegments';\n\n}\n\nLineSegments.prototype = Object.assign( Object.create( Line.prototype ), {\n\n\tconstructor: LineSegments,\n\n\tisLineSegments: true\n\n} );\n\n\nexport { LineSegments };\n","import { Material } from './Material';\nimport { Color } from '../math/Color';\n\n/**\n * @author mrdoob / http://mrdoob.com/\n * @author alteredq / http://alteredqualia.com/\n *\n * parameters = {\n * color: ,\n * opacity: ,\n * map: new THREE.Texture( ),\n *\n * size: ,\n * sizeAttenuation: \n * }\n */\n\nfunction PointsMaterial( parameters ) {\n\n\tMaterial.call( this );\n\n\tthis.type = 'PointsMaterial';\n\n\tthis.color = new Color( 0xffffff );\n\n\tthis.map = null;\n\n\tthis.size = 1;\n\tthis.sizeAttenuation = true;\n\n\tthis.lights = false;\n\n\tthis.setValues( parameters );\n\n}\n\nPointsMaterial.prototype = Object.create( Material.prototype );\nPointsMaterial.prototype.constructor = PointsMaterial;\n\nPointsMaterial.prototype.isPointsMaterial = true;\n\nPointsMaterial.prototype.copy = function ( source ) {\n\n\tMaterial.prototype.copy.call( this, source );\n\n\tthis.color.copy( source.color );\n\n\tthis.map = source.map;\n\n\tthis.size = source.size;\n\tthis.sizeAttenuation = source.sizeAttenuation;\n\n\treturn this;\n\n};\n\n\nexport { PointsMaterial };\n","import { Sphere } from '../math/Sphere';\nimport { Ray } from '../math/Ray';\nimport { Matrix4 } from '../math/Matrix4';\nimport { Object3D } from '../core/Object3D';\nimport { Vector3 } from '../math/Vector3';\nimport { PointsMaterial } from '../materials/PointsMaterial';\nimport { BufferGeometry } from '../core/BufferGeometry';\n\n/**\n * @author alteredq / http://alteredqualia.com/\n */\n\nfunction Points( geometry, material ) {\n\n\tObject3D.call( this );\n\n\tthis.type = 'Points';\n\n\tthis.geometry = geometry !== undefined ? geometry : new BufferGeometry();\n\tthis.material = material !== undefined ? material : new PointsMaterial( { color: Math.random() * 0xffffff } );\n\n}\n\nPoints.prototype = Object.assign( Object.create( Object3D.prototype ), {\n\n\tconstructor: Points,\n\n\tisPoints: true,\n\n\traycast: ( function () {\n\n\t\tvar inverseMatrix = new Matrix4();\n\t\tvar ray = new Ray();\n\t\tvar sphere = new Sphere();\n\n\t\treturn function raycast( raycaster, intersects ) {\n\n\t\t\tvar object = this;\n\t\t\tvar geometry = this.geometry;\n\t\t\tvar matrixWorld = this.matrixWorld;\n\t\t\tvar threshold = raycaster.params.Points.threshold;\n\n\t\t\t// Checking boundingSphere distance to ray\n\n\t\t\tif ( geometry.boundingSphere === null ) geometry.computeBoundingSphere();\n\n\t\t\tsphere.copy( geometry.boundingSphere );\n\t\t\tsphere.applyMatrix4( matrixWorld );\n\n\t\t\tif ( raycaster.ray.intersectsSphere( sphere ) === false ) return;\n\n\t\t\t//\n\n\t\t\tinverseMatrix.getInverse( matrixWorld );\n\t\t\tray.copy( raycaster.ray ).applyMatrix4( inverseMatrix );\n\n\t\t\tvar localThreshold = threshold / ( ( this.scale.x + this.scale.y + this.scale.z ) / 3 );\n\t\t\tvar localThresholdSq = localThreshold * localThreshold;\n\t\t\tvar position = new Vector3();\n\n\t\t\tfunction testPoint( point, index ) {\n\n\t\t\t\tvar rayPointDistanceSq = ray.distanceSqToPoint( point );\n\n\t\t\t\tif ( rayPointDistanceSq < localThresholdSq ) {\n\n\t\t\t\t\tvar intersectPoint = ray.closestPointToPoint( point );\n\t\t\t\t\tintersectPoint.applyMatrix4( matrixWorld );\n\n\t\t\t\t\tvar distance = raycaster.ray.origin.distanceTo( intersectPoint );\n\n\t\t\t\t\tif ( distance < raycaster.near || distance > raycaster.far ) return;\n\n\t\t\t\t\tintersects.push( {\n\n\t\t\t\t\t\tdistance: distance,\n\t\t\t\t\t\tdistanceToRay: Math.sqrt( rayPointDistanceSq ),\n\t\t\t\t\t\tpoint: intersectPoint.clone(),\n\t\t\t\t\t\tindex: index,\n\t\t\t\t\t\tface: null,\n\t\t\t\t\t\tobject: object\n\n\t\t\t\t\t} );\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t\tif ( (geometry && geometry.isBufferGeometry) ) {\n\n\t\t\t\tvar index = geometry.index;\n\t\t\t\tvar attributes = geometry.attributes;\n\t\t\t\tvar positions = attributes.position.array;\n\n\t\t\t\tif ( index !== null ) {\n\n\t\t\t\t\tvar indices = index.array;\n\n\t\t\t\t\tfor ( var i = 0, il = indices.length; i < il; i ++ ) {\n\n\t\t\t\t\t\tvar a = indices[ i ];\n\n\t\t\t\t\t\tposition.fromArray( positions, a * 3 );\n\n\t\t\t\t\t\ttestPoint( position, a );\n\n\t\t\t\t\t}\n\n\t\t\t\t} else {\n\n\t\t\t\t\tfor ( var i = 0, l = positions.length / 3; i < l; i ++ ) {\n\n\t\t\t\t\t\tposition.fromArray( positions, i * 3 );\n\n\t\t\t\t\t\ttestPoint( position, i );\n\n\t\t\t\t\t}\n\n\t\t\t\t}\n\n\t\t\t} else {\n\n\t\t\t\tvar vertices = geometry.vertices;\n\n\t\t\t\tfor ( var i = 0, l = vertices.length; i < l; i ++ ) {\n\n\t\t\t\t\ttestPoint( vertices[ i ], i );\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t};\n\n\t}() ),\n\n\tclone: function () {\n\n\t\treturn new this.constructor( this.geometry, this.material ).copy( this );\n\n\t}\n\n} );\n\n\nexport { Points };\n","import { Object3D } from '../core/Object3D';\n\n/**\n * @author mrdoob / http://mrdoob.com/\n */\n\nfunction Group() {\n\n\tObject3D.call( this );\n\n\tthis.type = 'Group';\n\n}\n\nGroup.prototype = Object.assign( Object.create( Object3D.prototype ), {\n\n\tconstructor: Group\n\n} );\n\n\nexport { Group };\n","import { Texture } from './Texture';\n\n/**\n * @author mrdoob / http://mrdoob.com/\n */\n\nfunction VideoTexture( video, mapping, wrapS, wrapT, magFilter, minFilter, format, type, anisotropy ) {\n\n\tTexture.call( this, video, mapping, wrapS, wrapT, magFilter, minFilter, format, type, anisotropy );\n\n\tthis.generateMipmaps = false;\n\n\tvar scope = this;\n\n\tfunction update() {\n\n\t\trequestAnimationFrame( update );\n\n\t\tif ( video.readyState >= video.HAVE_CURRENT_DATA ) {\n\n\t\t\tscope.needsUpdate = true;\n\n\t\t}\n\n\t}\n\n\tupdate();\n\n}\n\nVideoTexture.prototype = Object.create( Texture.prototype );\nVideoTexture.prototype.constructor = VideoTexture;\n\n\nexport { VideoTexture };\n","import { Texture } from './Texture';\n\n/**\n * @author alteredq / http://alteredqualia.com/\n */\n\nfunction CompressedTexture( mipmaps, width, height, format, type, mapping, wrapS, wrapT, magFilter, minFilter, anisotropy, encoding ) {\n\n\tTexture.call( this, null, mapping, wrapS, wrapT, magFilter, minFilter, format, type, anisotropy, encoding );\n\n\tthis.image = { width: width, height: height };\n\tthis.mipmaps = mipmaps;\n\n\t// no flipping for cube textures\n\t// (also flipping doesn't work for compressed textures )\n\n\tthis.flipY = false;\n\n\t// can't generate mipmaps for compressed textures\n\t// mips must be embedded in DDS files\n\n\tthis.generateMipmaps = false;\n\n}\n\nCompressedTexture.prototype = Object.create( Texture.prototype );\nCompressedTexture.prototype.constructor = CompressedTexture;\n\nCompressedTexture.prototype.isCompressedTexture = true;\n\n\nexport { CompressedTexture };\n","import { Texture } from './Texture';\n\n/**\n * @author mrdoob / http://mrdoob.com/\n */\n\nfunction CanvasTexture( canvas, mapping, wrapS, wrapT, magFilter, minFilter, format, type, anisotropy ) {\n\n\tTexture.call( this, canvas, mapping, wrapS, wrapT, magFilter, minFilter, format, type, anisotropy );\n\n\tthis.needsUpdate = true;\n\n}\n\nCanvasTexture.prototype = Object.create( Texture.prototype );\nCanvasTexture.prototype.constructor = CanvasTexture;\n\n\nexport { CanvasTexture };\n","import { Texture } from './Texture';\nimport { NearestFilter, UnsignedShortType, DepthFormat, DepthStencilFormat } from '../constants';\n\n/**\n * @author Matt DesLauriers / @mattdesl\n * @author atix / arthursilber.de\n */\n\nfunction DepthTexture( width, height, type, mapping, wrapS, wrapT, magFilter, minFilter, anisotropy, format ) {\n\n\tformat = format !== undefined ? format : DepthFormat;\n\n\tif ( format !== DepthFormat && format !== DepthStencilFormat ) {\n\n\t\tthrow new Error( 'DepthTexture format must be either THREE.DepthFormat or THREE.DepthStencilFormat' )\n\n\t}\n\n\tTexture.call( this, null, mapping, wrapS, wrapT, magFilter, minFilter, format, type, anisotropy );\n\n\tthis.image = { width: width, height: height };\n\n\tthis.type = type !== undefined ? type : UnsignedShortType;\n\n\tthis.magFilter = magFilter !== undefined ? magFilter : NearestFilter;\n\tthis.minFilter = minFilter !== undefined ? minFilter : NearestFilter;\n\n\tthis.flipY = false;\n\tthis.generateMipmaps\t= false;\n\n}\n\nDepthTexture.prototype = Object.create( Texture.prototype );\nDepthTexture.prototype.constructor = DepthTexture;\nDepthTexture.prototype.isDepthTexture = true;\n\nexport { DepthTexture };\n","import { BufferGeometry } from '../core/BufferGeometry';\nimport { BufferAttribute } from '../core/BufferAttribute';\n\n/**\n * @author mrdoob / http://mrdoob.com/\n */\n\nfunction WireframeGeometry( geometry ) {\n\n\tBufferGeometry.call( this );\n\n\tvar edge = [ 0, 0 ], hash = {};\n\n\tfunction sortFunction( a, b ) {\n\n\t\treturn a - b;\n\n\t}\n\n\tvar keys = [ 'a', 'b', 'c' ];\n\n\tif ( (geometry && geometry.isGeometry) ) {\n\n\t\tvar vertices = geometry.vertices;\n\t\tvar faces = geometry.faces;\n\t\tvar numEdges = 0;\n\n\t\t// allocate maximal size\n\t\tvar edges = new Uint32Array( 6 * faces.length );\n\n\t\tfor ( var i = 0, l = faces.length; i < l; i ++ ) {\n\n\t\t\tvar face = faces[ i ];\n\n\t\t\tfor ( var j = 0; j < 3; j ++ ) {\n\n\t\t\t\tedge[ 0 ] = face[ keys[ j ] ];\n\t\t\t\tedge[ 1 ] = face[ keys[ ( j + 1 ) % 3 ] ];\n\t\t\t\tedge.sort( sortFunction );\n\n\t\t\t\tvar key = edge.toString();\n\n\t\t\t\tif ( hash[ key ] === undefined ) {\n\n\t\t\t\t\tedges[ 2 * numEdges ] = edge[ 0 ];\n\t\t\t\t\tedges[ 2 * numEdges + 1 ] = edge[ 1 ];\n\t\t\t\t\thash[ key ] = true;\n\t\t\t\t\tnumEdges ++;\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t}\n\n\t\tvar coords = new Float32Array( numEdges * 2 * 3 );\n\n\t\tfor ( var i = 0, l = numEdges; i < l; i ++ ) {\n\n\t\t\tfor ( var j = 0; j < 2; j ++ ) {\n\n\t\t\t\tvar vertex = vertices[ edges [ 2 * i + j ] ];\n\n\t\t\t\tvar index = 6 * i + 3 * j;\n\t\t\t\tcoords[ index + 0 ] = vertex.x;\n\t\t\t\tcoords[ index + 1 ] = vertex.y;\n\t\t\t\tcoords[ index + 2 ] = vertex.z;\n\n\t\t\t}\n\n\t\t}\n\n\t\tthis.addAttribute( 'position', new BufferAttribute( coords, 3 ) );\n\n\t} else if ( (geometry && geometry.isBufferGeometry) ) {\n\n\t\tif ( geometry.index !== null ) {\n\n\t\t\t// Indexed BufferGeometry\n\n\t\t\tvar indices = geometry.index.array;\n\t\t\tvar vertices = geometry.attributes.position;\n\t\t\tvar groups = geometry.groups;\n\t\t\tvar numEdges = 0;\n\n\t\t\tif ( groups.length === 0 ) {\n\n\t\t\t\tgeometry.addGroup( 0, indices.length );\n\n\t\t\t}\n\n\t\t\t// allocate maximal size\n\t\t\tvar edges = new Uint32Array( 2 * indices.length );\n\n\t\t\tfor ( var o = 0, ol = groups.length; o < ol; ++ o ) {\n\n\t\t\t\tvar group = groups[ o ];\n\n\t\t\t\tvar start = group.start;\n\t\t\t\tvar count = group.count;\n\n\t\t\t\tfor ( var i = start, il = start + count; i < il; i += 3 ) {\n\n\t\t\t\t\tfor ( var j = 0; j < 3; j ++ ) {\n\n\t\t\t\t\t\tedge[ 0 ] = indices[ i + j ];\n\t\t\t\t\t\tedge[ 1 ] = indices[ i + ( j + 1 ) % 3 ];\n\t\t\t\t\t\tedge.sort( sortFunction );\n\n\t\t\t\t\t\tvar key = edge.toString();\n\n\t\t\t\t\t\tif ( hash[ key ] === undefined ) {\n\n\t\t\t\t\t\t\tedges[ 2 * numEdges ] = edge[ 0 ];\n\t\t\t\t\t\t\tedges[ 2 * numEdges + 1 ] = edge[ 1 ];\n\t\t\t\t\t\t\thash[ key ] = true;\n\t\t\t\t\t\t\tnumEdges ++;\n\n\t\t\t\t\t\t}\n\n\t\t\t\t\t}\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t\tvar coords = new Float32Array( numEdges * 2 * 3 );\n\n\t\t\tfor ( var i = 0, l = numEdges; i < l; i ++ ) {\n\n\t\t\t\tfor ( var j = 0; j < 2; j ++ ) {\n\n\t\t\t\t\tvar index = 6 * i + 3 * j;\n\t\t\t\t\tvar index2 = edges[ 2 * i + j ];\n\n\t\t\t\t\tcoords[ index + 0 ] = vertices.getX( index2 );\n\t\t\t\t\tcoords[ index + 1 ] = vertices.getY( index2 );\n\t\t\t\t\tcoords[ index + 2 ] = vertices.getZ( index2 );\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t\tthis.addAttribute( 'position', new BufferAttribute( coords, 3 ) );\n\n\t\t} else {\n\n\t\t\t// non-indexed BufferGeometry\n\n\t\t\tvar vertices = geometry.attributes.position.array;\n\t\t\tvar numEdges = vertices.length / 3;\n\t\t\tvar numTris = numEdges / 3;\n\n\t\t\tvar coords = new Float32Array( numEdges * 2 * 3 );\n\n\t\t\tfor ( var i = 0, l = numTris; i < l; i ++ ) {\n\n\t\t\t\tfor ( var j = 0; j < 3; j ++ ) {\n\n\t\t\t\t\tvar index = 18 * i + 6 * j;\n\n\t\t\t\t\tvar index1 = 9 * i + 3 * j;\n\t\t\t\t\tcoords[ index + 0 ] = vertices[ index1 ];\n\t\t\t\t\tcoords[ index + 1 ] = vertices[ index1 + 1 ];\n\t\t\t\t\tcoords[ index + 2 ] = vertices[ index1 + 2 ];\n\n\t\t\t\t\tvar index2 = 9 * i + 3 * ( ( j + 1 ) % 3 );\n\t\t\t\t\tcoords[ index + 3 ] = vertices[ index2 ];\n\t\t\t\t\tcoords[ index + 4 ] = vertices[ index2 + 1 ];\n\t\t\t\t\tcoords[ index + 5 ] = vertices[ index2 + 2 ];\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t\tthis.addAttribute( 'position', new BufferAttribute( coords, 3 ) );\n\n\t\t}\n\n\t}\n\n}\n\nWireframeGeometry.prototype = Object.create( BufferGeometry.prototype );\nWireframeGeometry.prototype.constructor = WireframeGeometry;\n\n\nexport { WireframeGeometry };\n","import { BufferGeometry } from '../core/BufferGeometry';\nimport { Float32Attribute, Uint16Attribute, Uint32Attribute } from '../core/BufferAttribute';\n\n/**\n * @author Mugen87 / https://github.com/Mugen87\n *\n * Parametric Surfaces Geometry\n * based on the brilliant article by @prideout http://prideout.net/blog/?p=44\n */\n\nfunction ParametricBufferGeometry( func, slices, stacks ) {\n\n\tBufferGeometry.call( this );\n\n\tthis.type = 'ParametricBufferGeometry';\n\n\tthis.parameters = {\n\t\tfunc: func,\n\t\tslices: slices,\n\t\tstacks: stacks\n\t};\n\n\t// generate vertices and uvs\n\n\tvar vertices = [];\n\tvar uvs = [];\n\n\tvar i, j, p;\n\tvar u, v;\n\n\tvar sliceCount = slices + 1;\n\n\tfor ( i = 0; i <= stacks; i ++ ) {\n\n\t\tv = i / stacks;\n\n\t\tfor ( j = 0; j <= slices; j ++ ) {\n\n\t\t\tu = j / slices;\n\n\t\t\tp = func( u, v );\n\t\t\tvertices.push( p.x, p.y, p.z );\n\n\t\t\tuvs.push( u, v );\n\n\t\t}\n\n\t}\n\n\t// generate indices\n\n\tvar indices = [];\n\tvar a, b, c, d;\n\n\tfor ( i = 0; i < stacks; i ++ ) {\n\n\t\tfor ( j = 0; j < slices; j ++ ) {\n\n\t\t\ta = i * sliceCount + j;\n\t\t\tb = i * sliceCount + j + 1;\n\t\t\tc = ( i + 1 ) * sliceCount + j + 1;\n\t\t\td = ( i + 1 ) * sliceCount + j;\n\n\t\t\t// faces one and two\n\n\t\t\tindices.push( a, b, d );\n\t\t\tindices.push( b, c, d );\n\n\t\t}\n\n\t}\n\n\t// build geometry\n\n\tthis.setIndex( ( indices.length > 65535 ? Uint32Attribute : Uint16Attribute )( indices, 1 ) );\n\tthis.addAttribute( 'position', Float32Attribute( vertices, 3 ) );\n\tthis.addAttribute( 'uv', Float32Attribute( uvs, 2 ) );\n\n\t// generate normals\n\n\tthis.computeVertexNormals();\n\n}\n\nParametricBufferGeometry.prototype = Object.create( BufferGeometry.prototype );\nParametricBufferGeometry.prototype.constructor = ParametricBufferGeometry;\n\n\nexport { ParametricBufferGeometry };\n","import { Geometry } from '../core/Geometry';\nimport { ParametricBufferGeometry } from './ParametricBufferGeometry';\n\n/**\n * @author zz85 / https://github.com/zz85\n *\n * Parametric Surfaces Geometry\n * based on the brilliant article by @prideout http://prideout.net/blog/?p=44\n */\n\nfunction ParametricGeometry( func, slices, stacks ) {\n\n\tGeometry.call( this );\n\n\tthis.type = 'ParametricGeometry';\n\n\tthis.parameters = {\n\t\tfunc: func,\n\t\tslices: slices,\n\t\tstacks: stacks\n\t};\n\n\tthis.fromBufferGeometry( new ParametricBufferGeometry( func, slices, stacks ) );\n\tthis.mergeVertices();\n\n}\n\nParametricGeometry.prototype = Object.create( Geometry.prototype );\nParametricGeometry.prototype.constructor = ParametricGeometry;\n\n\nexport { ParametricGeometry };\n","import { BufferGeometry } from '../core/BufferGeometry';\nimport { Float32Attribute } from '../core/BufferAttribute';\nimport { Vector3 } from '../math/Vector3';\nimport { Vector2 } from '../math/Vector2';\nimport { Sphere } from '../math/Sphere';\n\n/**\n * @author Mugen87 / https://github.com/Mugen87\n */\n\nfunction PolyhedronBufferGeometry( vertices, indices, radius, detail ) {\n\n\tBufferGeometry.call( this );\n\n\tthis.type = 'PolyhedronBufferGeometry';\n\n\tthis.parameters = {\n\t\tvertices: vertices,\n\t\tindices: indices,\n\t\tradius: radius,\n\t\tdetail: detail\n\t};\n\n\tradius = radius || 1;\n\tdetail = detail || 0;\n\n\t// default buffer data\n\n\tvar vertexBuffer = [];\n\tvar uvBuffer = [];\n\n\t// the subdivision creates the vertex buffer data\n\n\tsubdivide( detail );\n\n\t// all vertices should lie on a conceptual sphere with a given radius\n\n\tappplyRadius( radius );\n\n\t// finally, create the uv data\n\n\tgenerateUVs();\n\n\t// build non-indexed geometry\n\n\tthis.addAttribute( 'position', Float32Attribute( vertexBuffer, 3 ) );\n\tthis.addAttribute( 'normal', Float32Attribute( vertexBuffer.slice(), 3 ) );\n\tthis.addAttribute( 'uv', Float32Attribute( uvBuffer, 2 ) );\n\tthis.normalizeNormals();\n\n\tthis.boundingSphere = new Sphere( new Vector3(), radius );\n\n\t// helper functions\n\n\tfunction subdivide( detail ) {\n\n\t\tvar a = new Vector3();\n\t\tvar b = new Vector3();\n\t\tvar c = new Vector3();\n\n\t\t// iterate over all faces and apply a subdivison with the given detail value\n\n\t\tfor ( var i = 0; i < indices.length; i += 3 ) {\n\n\t\t\t// get the vertices of the face\n\n\t\t\tgetVertexByIndex( indices[ i + 0 ], a );\n\t\t\tgetVertexByIndex( indices[ i + 1 ], b );\n\t\t\tgetVertexByIndex( indices[ i + 2 ], c );\n\n\t\t\t// perform subdivision\n\n\t\t\tsubdivideFace( a, b, c, detail );\n\n\t\t}\n\n\t}\n\n\tfunction subdivideFace( a, b, c, detail ) {\n\n\t\tvar cols = Math.pow( 2, detail );\n\n\t\t// we use this multidimensional array as a data structure for creating the subdivision\n\n\t\tvar v = [];\n\n\t\tvar i, j;\n\n\t\t// construct all of the vertices for this subdivision\n\n\t\tfor ( i = 0 ; i <= cols; i ++ ) {\n\n\t\t\tv[ i ] = [];\n\n\t\t\tvar aj = a.clone().lerp( c, i / cols );\n\t\t\tvar bj = b.clone().lerp( c, i / cols );\n\n\t\t\tvar rows = cols - i;\n\n\t\t\tfor ( j = 0; j <= rows; j ++ ) {\n\n\t\t\t\tif ( j === 0 && i === cols ) {\n\n\t\t\t\t\tv[ i ][ j ] = aj;\n\n\t\t\t\t} else {\n\n\t\t\t\t\tv[ i ][ j ] = aj.clone().lerp( bj, j / rows );\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t}\n\n\t\t// construct all of the faces\n\n\t\tfor ( i = 0; i < cols ; i ++ ) {\n\n\t\t\tfor ( j = 0; j < 2 * ( cols - i ) - 1; j ++ ) {\n\n\t\t\t\tvar k = Math.floor( j / 2 );\n\n\t\t\t\tif ( j % 2 === 0 ) {\n\n\t\t\t\t\tpushVertex( v[ i ][ k + 1 ] );\n\t\t\t\t\tpushVertex( v[ i + 1 ][ k ] );\n\t\t\t\t\tpushVertex( v[ i ][ k ] );\n\n\t\t\t\t} else {\n\n\t\t\t\t\tpushVertex( v[ i ][ k + 1 ] );\n\t\t\t\t\tpushVertex( v[ i + 1 ][ k + 1 ] );\n\t\t\t\t\tpushVertex( v[ i + 1 ][ k ] );\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t}\n\n\t}\n\n\tfunction appplyRadius( radius ) {\n\n\t\tvar vertex = new Vector3();\n\n\t\t// iterate over the entire buffer and apply the radius to each vertex\n\n\t\tfor ( var i = 0; i < vertexBuffer.length; i += 3 ) {\n\n\t\t\tvertex.x = vertexBuffer[ i + 0 ];\n\t\t\tvertex.y = vertexBuffer[ i + 1 ];\n\t\t\tvertex.z = vertexBuffer[ i + 2 ];\n\n\t\t\tvertex.normalize().multiplyScalar( radius );\n\n\t\t\tvertexBuffer[ i + 0 ] = vertex.x;\n\t\t\tvertexBuffer[ i + 1 ] = vertex.y;\n\t\t\tvertexBuffer[ i + 2 ] = vertex.z;\n\n\t\t}\n\n\t}\n\n\tfunction generateUVs() {\n\n\t\tvar vertex = new Vector3();\n\n\t\tfor ( var i = 0; i < vertexBuffer.length; i += 3 ) {\n\n\t\t\tvertex.x = vertexBuffer[ i + 0 ];\n\t\t\tvertex.y = vertexBuffer[ i + 1 ];\n\t\t\tvertex.z = vertexBuffer[ i + 2 ];\n\n\t\t\tvar u = azimuth( vertex ) / 2 / Math.PI + 0.5;\n\t\t\tvar v = inclination( vertex ) / Math.PI + 0.5;\n\t\t\tuvBuffer.push( u, 1 - v );\n\n\t\t}\n\n\t\tcorrectUVs();\n\n\t\tcorrectSeam();\n\n\t}\n\n\tfunction correctSeam() {\n\n\t\t// handle case when face straddles the seam, see #3269\n\n\t\tfor ( var i = 0; i < uvBuffer.length; i += 6 ) {\n\n\t\t\t// uv data of a single face\n\n\t\t\tvar x0 = uvBuffer[ i + 0 ];\n\t\t\tvar x1 = uvBuffer[ i + 2 ];\n\t\t\tvar x2 = uvBuffer[ i + 4 ];\n\n\t\t\tvar max = Math.max( x0, x1, x2 );\n\t\t\tvar min = Math.min( x0, x1, x2 );\n\n\t\t\t// 0.9 is somewhat arbitrary\n\n\t\t\tif ( max > 0.9 && min < 0.1 ) {\n\n\t\t\t\tif ( x0 < 0.2 ) uvBuffer[ i + 0 ] += 1;\n\t\t\t\tif ( x1 < 0.2 ) uvBuffer[ i + 2 ] += 1;\n\t\t\t\tif ( x2 < 0.2 ) uvBuffer[ i + 4 ] += 1;\n\n\t\t\t}\n\n\t\t}\n\n\t}\n\n\tfunction pushVertex( vertex ) {\n\n\t\tvertexBuffer.push( vertex.x, vertex.y, vertex.z );\n\n\t}\n\n\tfunction getVertexByIndex( index, vertex ) {\n\n\t\tvar stride = index * 3;\n\n\t\tvertex.x = vertices[ stride + 0 ];\n\t\tvertex.y = vertices[ stride + 1 ];\n\t\tvertex.z = vertices[ stride + 2 ];\n\n\t}\n\n\tfunction correctUVs() {\n\n\t\tvar a = new Vector3();\n\t\tvar b = new Vector3();\n\t\tvar c = new Vector3();\n\n\t\tvar centroid = new Vector3();\n\n\t\tvar uvA = new Vector2();\n\t\tvar uvB = new Vector2();\n\t\tvar uvC = new Vector2();\n\n\t\tfor ( var i = 0, j = 0; i < vertexBuffer.length; i += 9, j += 6 ) {\n\n\t\t\ta.set( vertexBuffer[ i + 0 ], vertexBuffer[ i + 1 ], vertexBuffer[ i + 2 ] );\n\t\t\tb.set( vertexBuffer[ i + 3 ], vertexBuffer[ i + 4 ], vertexBuffer[ i + 5 ] );\n\t\t\tc.set( vertexBuffer[ i + 6 ], vertexBuffer[ i + 7 ], vertexBuffer[ i + 8 ] );\n\n\t\t\tuvA.set( uvBuffer[ j + 0 ], uvBuffer[ j + 1 ] );\n\t\t\tuvB.set( uvBuffer[ j + 2 ], uvBuffer[ j + 3 ] );\n\t\t\tuvC.set( uvBuffer[ j + 4 ], uvBuffer[ j + 5 ] );\n\n\t\t\tcentroid.copy( a ).add( b ).add( c ).divideScalar( 3 );\n\n\t\t\tvar azi = azimuth( centroid );\n\n\t\t\tcorrectUV( uvA, j + 0, a, azi );\n\t\t\tcorrectUV( uvB, j + 2, b, azi );\n\t\t\tcorrectUV( uvC, j + 4, c, azi );\n\n\t\t}\n\n\t}\n\n\tfunction correctUV( uv, stride, vector, azimuth ) {\n\n\t\tif ( ( azimuth < 0 ) && ( uv.x === 1 ) ) {\n\n\t\t\tuvBuffer[ stride ] = uv.x - 1;\n\n\t\t}\n\n\t\tif ( ( vector.x === 0 ) && ( vector.z === 0 ) ) {\n\n\t\t\tuvBuffer[ stride ] = azimuth / 2 / Math.PI + 0.5;\n\n\t\t}\n\n\t}\n\n\t// Angle around the Y axis, counter-clockwise when looking from above.\n\n\tfunction azimuth( vector ) {\n\n\t\treturn Math.atan2( vector.z, - vector.x );\n\n\t}\n\n\n\t// Angle above the XZ plane.\n\n\tfunction inclination( vector ) {\n\n\t\treturn Math.atan2( - vector.y, Math.sqrt( ( vector.x * vector.x ) + ( vector.z * vector.z ) ) );\n\n\t}\n\n}\n\nPolyhedronBufferGeometry.prototype = Object.create( BufferGeometry.prototype );\nPolyhedronBufferGeometry.prototype.constructor = PolyhedronBufferGeometry;\n\n\nexport { PolyhedronBufferGeometry };\n","import { PolyhedronBufferGeometry } from './PolyhedronBufferGeometry';\n\n/**\n * @author Mugen87 / https://github.com/Mugen87\n */\n\nfunction TetrahedronBufferGeometry( radius, detail ) {\n\n\tvar vertices = [\n\t\t1, 1, 1, - 1, - 1, 1, - 1, 1, - 1, 1, - 1, - 1\n\t];\n\n\tvar indices = [\n\t\t2, 1, 0, 0, 3, 2, 1, 3, 0, 2, 3, 1\n\t];\n\n\tPolyhedronBufferGeometry.call( this, vertices, indices, radius, detail );\n\n\tthis.type = 'TetrahedronBufferGeometry';\n\n\tthis.parameters = {\n\t\tradius: radius,\n\t\tdetail: detail\n\t};\n\n}\n\nTetrahedronBufferGeometry.prototype = Object.create( PolyhedronBufferGeometry.prototype );\nTetrahedronBufferGeometry.prototype.constructor = TetrahedronBufferGeometry;\n\n\nexport { TetrahedronBufferGeometry };\n","import { Geometry } from '../core/Geometry';\nimport { TetrahedronBufferGeometry } from './TetrahedronBufferGeometry';\n\n/**\n * @author timothypratley / https://github.com/timothypratley\n */\n\nfunction TetrahedronGeometry( radius, detail ) {\n\n\tGeometry.call( this );\n\n\tthis.type = 'TetrahedronGeometry';\n\n\tthis.parameters = {\n\t\tradius: radius,\n\t\tdetail: detail\n\t};\n\n\tthis.fromBufferGeometry( new TetrahedronBufferGeometry( radius, detail ) );\n\tthis.mergeVertices();\n\n}\n\nTetrahedronGeometry.prototype = Object.create( Geometry.prototype );\nTetrahedronGeometry.prototype.constructor = TetrahedronGeometry;\n\n\nexport { TetrahedronGeometry };\n","import { PolyhedronBufferGeometry } from './PolyhedronBufferGeometry';\n\n/**\n * @author Mugen87 / https://github.com/Mugen87\n */\n\nfunction OctahedronBufferGeometry( radius,detail ) {\n\n\tvar vertices = [\n\t\t1, 0, 0, - 1, 0, 0, 0, 1, 0, 0, - 1, 0, 0, 0, 1, 0, 0, - 1\n\t];\n\n\tvar indices = [\n\t\t0, 2, 4, 0, 4, 3, 0, 3, 5, 0, 5, 2, 1, 2, 5, 1, 5, 3, 1, 3, 4, 1, 4, 2\n\t];\n\n\tPolyhedronBufferGeometry.call( this, vertices, indices, radius, detail );\n\n\tthis.type = 'OctahedronBufferGeometry';\n\n\tthis.parameters = {\n\t\tradius: radius,\n\t\tdetail: detail\n\t};\n\n}\n\nOctahedronBufferGeometry.prototype = Object.create( PolyhedronBufferGeometry.prototype );\nOctahedronBufferGeometry.prototype.constructor = OctahedronBufferGeometry;\n\n\nexport { OctahedronBufferGeometry };\n","import { Geometry } from '../core/Geometry';\nimport { OctahedronBufferGeometry } from './OctahedronBufferGeometry';\n\n/**\n * @author timothypratley / https://github.com/timothypratley\n */\n\nfunction OctahedronGeometry( radius, detail ) {\n\n\tGeometry.call( this );\n\n\tthis.type = 'OctahedronGeometry';\n\n\tthis.parameters = {\n\t\tradius: radius,\n\t\tdetail: detail\n\t};\n\n\tthis.fromBufferGeometry( new OctahedronBufferGeometry( radius, detail ) );\n\tthis.mergeVertices();\n\n}\n\nOctahedronGeometry.prototype = Object.create( Geometry.prototype );\nOctahedronGeometry.prototype.constructor = OctahedronGeometry;\n\n\nexport { OctahedronGeometry };\n","import { PolyhedronBufferGeometry } from './PolyhedronBufferGeometry';\n\n/**\n * @author Mugen87 / https://github.com/Mugen87\n */\n\nfunction IcosahedronBufferGeometry( radius, detail ) {\n\n\tvar t = ( 1 + Math.sqrt( 5 ) ) / 2;\n\n\tvar vertices = [\n\t\t- 1, t, 0, 1, t, 0, - 1, - t, 0, 1, - t, 0,\n\t\t 0, - 1, t, 0, 1, t, 0, - 1, - t, 0, 1, - t,\n\t\t t, 0, - 1, t, 0, 1, - t, 0, - 1, - t, 0, 1\n\t];\n\n\tvar indices = [\n\t\t 0, 11, 5, 0, 5, 1, 0, 1, 7, 0, 7, 10, 0, 10, 11,\n\t\t 1, 5, 9, 5, 11, 4, 11, 10, 2, 10, 7, 6, 7, 1, 8,\n\t\t 3, 9, 4, 3, 4, 2, 3, 2, 6, 3, 6, 8, 3, 8, 9,\n\t\t 4, 9, 5, 2, 4, 11, 6, 2, 10, 8, 6, 7, 9, 8, 1\n\t];\n\n\tPolyhedronBufferGeometry.call( this, vertices, indices, radius, detail );\n\n\tthis.type = 'IcosahedronBufferGeometry';\n\n\tthis.parameters = {\n\t\tradius: radius,\n\t\tdetail: detail\n\t};\n\n}\n\nIcosahedronBufferGeometry.prototype = Object.create( PolyhedronBufferGeometry.prototype );\nIcosahedronBufferGeometry.prototype.constructor = IcosahedronBufferGeometry;\n\n\nexport { IcosahedronBufferGeometry };\n","import { Geometry } from '../core/Geometry';\nimport { IcosahedronBufferGeometry } from './IcosahedronBufferGeometry';\n\n/**\n * @author timothypratley / https://github.com/timothypratley\n */\n\nfunction IcosahedronGeometry( radius, detail ) {\n\n \tGeometry.call( this );\n\n\tthis.type = 'IcosahedronGeometry';\n\n\tthis.parameters = {\n\t\tradius: radius,\n\t\tdetail: detail\n\t};\n\n\tthis.fromBufferGeometry( new IcosahedronBufferGeometry( radius, detail ) );\n\tthis.mergeVertices();\n\n}\n\nIcosahedronGeometry.prototype = Object.create( Geometry.prototype );\nIcosahedronGeometry.prototype.constructor = IcosahedronGeometry;\n\n\nexport { IcosahedronGeometry };\n","import { PolyhedronBufferGeometry } from './PolyhedronBufferGeometry';\n\n/**\n * @author Mugen87 / https://github.com/Mugen87\n */\n\nfunction DodecahedronBufferGeometry( radius, detail ) {\n\n\tvar t = ( 1 + Math.sqrt( 5 ) ) / 2;\n\tvar r = 1 / t;\n\n\tvar vertices = [\n\n\t\t// (±1, ±1, ±1)\n\t\t- 1, - 1, - 1, - 1, - 1, 1,\n\t\t- 1, 1, - 1, - 1, 1, 1,\n\t\t 1, - 1, - 1, 1, - 1, 1,\n\t\t 1, 1, - 1, 1, 1, 1,\n\n\t\t// (0, ±1/φ, ±φ)\n\t\t 0, - r, - t, 0, - r, t,\n\t\t 0, r, - t, 0, r, t,\n\n\t\t// (±1/φ, ±φ, 0)\n\t\t- r, - t, 0, - r, t, 0,\n\t\t r, - t, 0, r, t, 0,\n\n\t\t// (±φ, 0, ±1/φ)\n\t\t- t, 0, - r, t, 0, - r,\n\t\t- t, 0, r, t, 0, r\n\t];\n\n\tvar indices = [\n\t\t 3, 11, 7, 3, 7, 15, 3, 15, 13,\n\t\t 7, 19, 17, 7, 17, 6, 7, 6, 15,\n\t\t17, 4, 8, 17, 8, 10, 17, 10, 6,\n\t\t 8, 0, 16, 8, 16, 2, 8, 2, 10,\n\t\t 0, 12, 1, 0, 1, 18, 0, 18, 16,\n\t\t 6, 10, 2, 6, 2, 13, 6, 13, 15,\n\t\t 2, 16, 18, 2, 18, 3, 2, 3, 13,\n\t\t18, 1, 9, 18, 9, 11, 18, 11, 3,\n\t\t 4, 14, 12, 4, 12, 0, 4, 0, 8,\n\t\t11, 9, 5, 11, 5, 19, 11, 19, 7,\n\t\t19, 5, 14, 19, 14, 4, 19, 4, 17,\n\t\t 1, 12, 14, 1, 14, 5, 1, 5, 9\n\t];\n\n\tPolyhedronBufferGeometry.call( this, vertices, indices, radius, detail );\n\n\tthis.type = 'DodecahedronBufferGeometry';\n\n\tthis.parameters = {\n\t\tradius: radius,\n\t\tdetail: detail\n\t};\n\n}\n\nDodecahedronBufferGeometry.prototype = Object.create( PolyhedronBufferGeometry.prototype );\nDodecahedronBufferGeometry.prototype.constructor = DodecahedronBufferGeometry;\n\n\nexport { DodecahedronBufferGeometry };\n","import { Geometry } from '../core/Geometry';\nimport { DodecahedronBufferGeometry } from './DodecahedronBufferGeometry';\n\n/**\n * @author Abe Pazos / https://hamoid.com\n */\n\nfunction DodecahedronGeometry( radius, detail ) {\n\n\tGeometry.call( this );\n\n\tthis.type = 'DodecahedronGeometry';\n\n\tthis.parameters = {\n\t\tradius: radius,\n\t\tdetail: detail\n\t};\n\n\tthis.fromBufferGeometry( new DodecahedronBufferGeometry( radius, detail ) );\n\tthis.mergeVertices();\n\n}\n\nDodecahedronGeometry.prototype = Object.create( Geometry.prototype );\nDodecahedronGeometry.prototype.constructor = DodecahedronGeometry;\n\n\nexport { DodecahedronGeometry };\n","import { Geometry } from '../core/Geometry';\nimport { PolyhedronBufferGeometry } from './PolyhedronBufferGeometry';\n\n/**\n * @author clockworkgeek / https://github.com/clockworkgeek\n * @author timothypratley / https://github.com/timothypratley\n * @author WestLangley / http://github.com/WestLangley\n*/\n\nfunction PolyhedronGeometry( vertices, indices, radius, detail ) {\n\n\tGeometry.call( this );\n\n\tthis.type = 'PolyhedronGeometry';\n\n\tthis.parameters = {\n\t\tvertices: vertices,\n\t\tindices: indices,\n\t\tradius: radius,\n\t\tdetail: detail\n\t};\n\n\tthis.fromBufferGeometry( new PolyhedronBufferGeometry( vertices, indices, radius, detail ) );\n\tthis.mergeVertices();\n\n}\n\nPolyhedronGeometry.prototype = Object.create( Geometry.prototype );\nPolyhedronGeometry.prototype.constructor = PolyhedronGeometry;\n\n\nexport { PolyhedronGeometry };\n","import { BufferGeometry } from '../core/BufferGeometry';\nimport { Float32Attribute, Uint16Attribute, Uint32Attribute } from '../core/BufferAttribute';\nimport { Vector2 } from '../math/Vector2';\nimport { Vector3 } from '../math/Vector3';\n\n/**\n * @author Mugen87 / https://github.com/Mugen87\n *\n * Creates a tube which extrudes along a 3d spline.\n *\n */\n\nfunction TubeBufferGeometry( path, tubularSegments, radius, radialSegments, closed ) {\n\n\tBufferGeometry.call( this );\n\n\tthis.type = 'TubeBufferGeometry';\n\n\tthis.parameters = {\n\t\tpath: path,\n\t\ttubularSegments: tubularSegments,\n\t\tradius: radius,\n\t\tradialSegments: radialSegments,\n\t\tclosed: closed\n\t};\n\n\ttubularSegments = tubularSegments || 64;\n\tradius = radius || 1;\n\tradialSegments = radialSegments || 8;\n\tclosed = closed || false;\n\n\tvar frames = path.computeFrenetFrames( tubularSegments, closed );\n\n\t// expose internals\n\n\tthis.tangents = frames.tangents;\n\tthis.normals = frames.normals;\n\tthis.binormals = frames.binormals;\n\n\t// helper variables\n\n\tvar vertex = new Vector3();\n\tvar normal = new Vector3();\n\tvar uv = new Vector2();\n\n\tvar i, j;\n\n\t// buffer\n\n\tvar vertices = [];\n\tvar normals = [];\n\tvar uvs = [];\n\tvar indices = [];\n\n\t// create buffer data\n\n\tgenerateBufferData();\n\n\t// build geometry\n\n\tthis.setIndex( ( indices.length > 65535 ? Uint32Attribute : Uint16Attribute )( indices, 1 ) );\n\tthis.addAttribute( 'position', Float32Attribute( vertices, 3 ) );\n\tthis.addAttribute( 'normal', Float32Attribute( normals, 3 ) );\n\tthis.addAttribute( 'uv', Float32Attribute( uvs, 2 ) );\n\n\t// functions\n\n\tfunction generateBufferData() {\n\n\t\tfor ( i = 0; i < tubularSegments; i ++ ) {\n\n\t\t\tgenerateSegment( i );\n\n\t\t}\n\n\t\t// if the geometry is not closed, generate the last row of vertices and normals\n\t\t// at the regular position on the given path\n\t\t//\n\t\t// if the geometry is closed, duplicate the first row of vertices and normals (uvs will differ)\n\n\t\tgenerateSegment( ( closed === false ) ? tubularSegments : 0 );\n\n\t\t// uvs are generated in a separate function.\n\t\t// this makes it easy compute correct values for closed geometries\n\n\t\tgenerateUVs();\n\n\t\t// finally create faces\n\n\t\tgenerateIndices();\n\n\t}\n\n\tfunction generateSegment( i ) {\n\n\t\t// we use getPointAt to sample evenly distributed points from the given path\n\n\t\tvar P = path.getPointAt( i / tubularSegments );\n\n\t\t// retrieve corresponding normal and binormal\n\n\t\tvar N = frames.normals[ i ];\n\t\tvar B = frames.binormals[ i ];\n\n\t\t// generate normals and vertices for the current segment\n\n\t\tfor ( j = 0; j <= radialSegments; j ++ ) {\n\n\t\t\tvar v = j / radialSegments * Math.PI * 2;\n\n\t\t\tvar sin = Math.sin( v );\n\t\t\tvar cos = - Math.cos( v );\n\n\t\t\t// normal\n\n\t\t\tnormal.x = ( cos * N.x + sin * B.x );\n\t\t\tnormal.y = ( cos * N.y + sin * B.y );\n\t\t\tnormal.z = ( cos * N.z + sin * B.z );\n\t\t\tnormal.normalize();\n\n\t\t\tnormals.push( normal.x, normal.y, normal.z );\n\n\t\t\t// vertex\n\n\t\t\tvertex.x = P.x + radius * normal.x;\n\t\t\tvertex.y = P.y + radius * normal.y;\n\t\t\tvertex.z = P.z + radius * normal.z;\n\n\t\t\tvertices.push( vertex.x, vertex.y, vertex.z );\n\n\t\t}\n\n\t}\n\n\tfunction generateIndices() {\n\n\t\tfor ( j = 1; j <= tubularSegments; j ++ ) {\n\n\t\t\tfor ( i = 1; i <= radialSegments; i ++ ) {\n\n\t\t\t\tvar a = ( radialSegments + 1 ) * ( j - 1 ) + ( i - 1 );\n\t\t\t\tvar b = ( radialSegments + 1 ) * j + ( i - 1 );\n\t\t\t\tvar c = ( radialSegments + 1 ) * j + i;\n\t\t\t\tvar d = ( radialSegments + 1 ) * ( j - 1 ) + i;\n\n\t\t\t\t// faces\n\n\t\t\t\tindices.push( a, b, d );\n\t\t\t\tindices.push( b, c, d );\n\n\t\t\t}\n\n\t\t}\n\n\t}\n\n\tfunction generateUVs() {\n\n\t\tfor ( i = 0; i <= tubularSegments; i ++ ) {\n\n\t\t\tfor ( j = 0; j <= radialSegments; j ++ ) {\n\n\t\t\t\tuv.x = i / tubularSegments;\n\t\t\t\tuv.y = j / radialSegments;\n\n\t\t\t\tuvs.push( uv.x, uv.y );\n\n\t\t\t}\n\n\t\t}\n\n\t}\n\n}\n\nTubeBufferGeometry.prototype = Object.create( BufferGeometry.prototype );\nTubeBufferGeometry.prototype.constructor = TubeBufferGeometry;\n\n\nexport { TubeBufferGeometry };\n","import { Geometry } from '../core/Geometry';\nimport { TubeBufferGeometry } from './TubeBufferGeometry';\n\n/**\n * @author oosmoxiecode / https://github.com/oosmoxiecode\n * @author WestLangley / https://github.com/WestLangley\n * @author zz85 / https://github.com/zz85\n * @author miningold / https://github.com/miningold\n * @author jonobr1 / https://github.com/jonobr1\n *\n * Creates a tube which extrudes along a 3d spline.\n */\n\nfunction TubeGeometry( path, tubularSegments, radius, radialSegments, closed, taper ) {\n\n\tGeometry.call( this );\n\n\tthis.type = 'TubeGeometry';\n\n\tthis.parameters = {\n\t\tpath: path,\n\t\ttubularSegments: tubularSegments,\n\t\tradius: radius,\n\t\tradialSegments: radialSegments,\n\t\tclosed: closed\n\t};\n\n\tif ( taper !== undefined ) console.warn( 'THREE.TubeGeometry: taper has been removed.' );\n\n\tvar bufferGeometry = new TubeBufferGeometry( path, tubularSegments, radius, radialSegments, closed );\n\n\t// expose internals\n\n\tthis.tangents = bufferGeometry.tangents;\n\tthis.normals = bufferGeometry.normals;\n\tthis.binormals = bufferGeometry.binormals;\n\n\t// create geometry\n\n\tthis.fromBufferGeometry( bufferGeometry );\n\tthis.mergeVertices();\n\n}\n\nTubeGeometry.prototype = Object.create( Geometry.prototype );\nTubeGeometry.prototype.constructor = TubeGeometry;\n\n\nexport { TubeGeometry };\n","import { BufferGeometry } from '../core/BufferGeometry';\nimport { Vector3 } from '../math/Vector3';\nimport { Vector2 } from '../math/Vector2';\nimport { BufferAttribute } from '../core/BufferAttribute';\n\n/**\n * @author Mugen87 / https://github.com/Mugen87\n *\n * see: http://www.blackpawn.com/texts/pqtorus/\n */\nfunction TorusKnotBufferGeometry( radius, tube, tubularSegments, radialSegments, p, q ) {\n\n\tBufferGeometry.call( this );\n\n\tthis.type = 'TorusKnotBufferGeometry';\n\n\tthis.parameters = {\n\t\tradius: radius,\n\t\ttube: tube,\n\t\ttubularSegments: tubularSegments,\n\t\tradialSegments: radialSegments,\n\t\tp: p,\n\t\tq: q\n\t};\n\n\tradius = radius || 100;\n\ttube = tube || 40;\n\ttubularSegments = Math.floor( tubularSegments ) || 64;\n\tradialSegments = Math.floor( radialSegments ) || 8;\n\tp = p || 2;\n\tq = q || 3;\n\n\t// used to calculate buffer length\n\tvar vertexCount = ( ( radialSegments + 1 ) * ( tubularSegments + 1 ) );\n\tvar indexCount = radialSegments * tubularSegments * 2 * 3;\n\n\t// buffers\n\tvar indices = new BufferAttribute( new ( indexCount > 65535 ? Uint32Array : Uint16Array )( indexCount ) , 1 );\n\tvar vertices = new BufferAttribute( new Float32Array( vertexCount * 3 ), 3 );\n\tvar normals = new BufferAttribute( new Float32Array( vertexCount * 3 ), 3 );\n\tvar uvs = new BufferAttribute( new Float32Array( vertexCount * 2 ), 2 );\n\n\t// helper variables\n\tvar i, j, index = 0, indexOffset = 0;\n\n\tvar vertex = new Vector3();\n\tvar normal = new Vector3();\n\tvar uv = new Vector2();\n\n\tvar P1 = new Vector3();\n\tvar P2 = new Vector3();\n\n\tvar B = new Vector3();\n\tvar T = new Vector3();\n\tvar N = new Vector3();\n\n\t// generate vertices, normals and uvs\n\n\tfor ( i = 0; i <= tubularSegments; ++ i ) {\n\n\t\t// the radian \"u\" is used to calculate the position on the torus curve of the current tubular segement\n\n\t\tvar u = i / tubularSegments * p * Math.PI * 2;\n\n\t\t// now we calculate two points. P1 is our current position on the curve, P2 is a little farther ahead.\n\t\t// these points are used to create a special \"coordinate space\", which is necessary to calculate the correct vertex positions\n\n\t\tcalculatePositionOnCurve( u, p, q, radius, P1 );\n\t\tcalculatePositionOnCurve( u + 0.01, p, q, radius, P2 );\n\n\t\t// calculate orthonormal basis\n\n\t\tT.subVectors( P2, P1 );\n\t\tN.addVectors( P2, P1 );\n\t\tB.crossVectors( T, N );\n\t\tN.crossVectors( B, T );\n\n\t\t// normalize B, N. T can be ignored, we don't use it\n\n\t\tB.normalize();\n\t\tN.normalize();\n\n\t\tfor ( j = 0; j <= radialSegments; ++ j ) {\n\n\t\t\t// now calculate the vertices. they are nothing more than an extrusion of the torus curve.\n\t\t\t// because we extrude a shape in the xy-plane, there is no need to calculate a z-value.\n\n\t\t\tvar v = j / radialSegments * Math.PI * 2;\n\t\t\tvar cx = - tube * Math.cos( v );\n\t\t\tvar cy = tube * Math.sin( v );\n\n\t\t\t// now calculate the final vertex position.\n\t\t\t// first we orient the extrusion with our basis vectos, then we add it to the current position on the curve\n\n\t\t\tvertex.x = P1.x + ( cx * N.x + cy * B.x );\n\t\t\tvertex.y = P1.y + ( cx * N.y + cy * B.y );\n\t\t\tvertex.z = P1.z + ( cx * N.z + cy * B.z );\n\n\t\t\t// vertex\n\t\t\tvertices.setXYZ( index, vertex.x, vertex.y, vertex.z );\n\n\t\t\t// normal (P1 is always the center/origin of the extrusion, thus we can use it to calculate the normal)\n\t\t\tnormal.subVectors( vertex, P1 ).normalize();\n\t\t\tnormals.setXYZ( index, normal.x, normal.y, normal.z );\n\n\t\t\t// uv\n\t\t\tuv.x = i / tubularSegments;\n\t\t\tuv.y = j / radialSegments;\n\t\t\tuvs.setXY( index, uv.x, uv.y );\n\n\t\t\t// increase index\n\t\t\tindex ++;\n\n\t\t}\n\n\t}\n\n\t// generate indices\n\n\tfor ( j = 1; j <= tubularSegments; j ++ ) {\n\n\t\tfor ( i = 1; i <= radialSegments; i ++ ) {\n\n\t\t\t// indices\n\t\t\tvar a = ( radialSegments + 1 ) * ( j - 1 ) + ( i - 1 );\n\t\t\tvar b = ( radialSegments + 1 ) * j + ( i - 1 );\n\t\t\tvar c = ( radialSegments + 1 ) * j + i;\n\t\t\tvar d = ( radialSegments + 1 ) * ( j - 1 ) + i;\n\n\t\t\t// face one\n\t\t\tindices.setX( indexOffset, a ); indexOffset++;\n\t\t\tindices.setX( indexOffset, b ); indexOffset++;\n\t\t\tindices.setX( indexOffset, d ); indexOffset++;\n\n\t\t\t// face two\n\t\t\tindices.setX( indexOffset, b ); indexOffset++;\n\t\t\tindices.setX( indexOffset, c ); indexOffset++;\n\t\t\tindices.setX( indexOffset, d ); indexOffset++;\n\n\t\t}\n\n\t}\n\n\t// build geometry\n\n\tthis.setIndex( indices );\n\tthis.addAttribute( 'position', vertices );\n\tthis.addAttribute( 'normal', normals );\n\tthis.addAttribute( 'uv', uvs );\n\n\t// this function calculates the current position on the torus curve\n\n\tfunction calculatePositionOnCurve( u, p, q, radius, position ) {\n\n\t\tvar cu = Math.cos( u );\n\t\tvar su = Math.sin( u );\n\t\tvar quOverP = q / p * u;\n\t\tvar cs = Math.cos( quOverP );\n\n\t\tposition.x = radius * ( 2 + cs ) * 0.5 * cu;\n\t\tposition.y = radius * ( 2 + cs ) * su * 0.5;\n\t\tposition.z = radius * Math.sin( quOverP ) * 0.5;\n\n\t}\n\n}\n\nTorusKnotBufferGeometry.prototype = Object.create( BufferGeometry.prototype );\nTorusKnotBufferGeometry.prototype.constructor = TorusKnotBufferGeometry;\n\n\nexport { TorusKnotBufferGeometry };\n","import { Geometry } from '../core/Geometry';\nimport { TorusKnotBufferGeometry } from './TorusKnotBufferGeometry';\n\n/**\n * @author oosmoxiecode\n */\n\nfunction TorusKnotGeometry( radius, tube, tubularSegments, radialSegments, p, q, heightScale ) {\n\n\tGeometry.call( this );\n\n\tthis.type = 'TorusKnotGeometry';\n\n\tthis.parameters = {\n\t\tradius: radius,\n\t\ttube: tube,\n\t\ttubularSegments: tubularSegments,\n\t\tradialSegments: radialSegments,\n\t\tp: p,\n\t\tq: q\n\t};\n\n\tif( heightScale !== undefined ) console.warn( 'THREE.TorusKnotGeometry: heightScale has been deprecated. Use .scale( x, y, z ) instead.' );\n\n\tthis.fromBufferGeometry( new TorusKnotBufferGeometry( radius, tube, tubularSegments, radialSegments, p, q ) );\n\tthis.mergeVertices();\n\n}\n\nTorusKnotGeometry.prototype = Object.create( Geometry.prototype );\nTorusKnotGeometry.prototype.constructor = TorusKnotGeometry;\n\n\nexport { TorusKnotGeometry };\n","import { BufferGeometry } from '../core/BufferGeometry';\nimport { BufferAttribute } from '../core/BufferAttribute';\nimport { Vector3 } from '../math/Vector3';\n\n/**\n * @author Mugen87 / https://github.com/Mugen87\n */\n\nfunction TorusBufferGeometry( radius, tube, radialSegments, tubularSegments, arc ) {\n\n\tBufferGeometry.call( this );\n\n\tthis.type = 'TorusBufferGeometry';\n\n\tthis.parameters = {\n\t\tradius: radius,\n\t\ttube: tube,\n\t\tradialSegments: radialSegments,\n\t\ttubularSegments: tubularSegments,\n\t\tarc: arc\n\t};\n\n\tradius = radius || 100;\n\ttube = tube || 40;\n\tradialSegments = Math.floor( radialSegments ) || 8;\n\ttubularSegments = Math.floor( tubularSegments ) || 6;\n\tarc = arc || Math.PI * 2;\n\n\t// used to calculate buffer length\n\tvar vertexCount = ( ( radialSegments + 1 ) * ( tubularSegments + 1 ) );\n\tvar indexCount = radialSegments * tubularSegments * 2 * 3;\n\n\t// buffers\n\tvar indices = new ( indexCount > 65535 ? Uint32Array : Uint16Array )( indexCount );\n\tvar vertices = new Float32Array( vertexCount * 3 );\n\tvar normals = new Float32Array( vertexCount * 3 );\n\tvar uvs = new Float32Array( vertexCount * 2 );\n\n\t// offset variables\n\tvar vertexBufferOffset = 0;\n\tvar uvBufferOffset = 0;\n\tvar indexBufferOffset = 0;\n\n\t// helper variables\n\tvar center = new Vector3();\n\tvar vertex = new Vector3();\n\tvar normal = new Vector3();\n\n\tvar j, i;\n\n\t// generate vertices, normals and uvs\n\n\tfor ( j = 0; j <= radialSegments; j ++ ) {\n\n\t\tfor ( i = 0; i <= tubularSegments; i ++ ) {\n\n\t\t\tvar u = i / tubularSegments * arc;\n\t\t\tvar v = j / radialSegments * Math.PI * 2;\n\n\t\t\t// vertex\n\t\t\tvertex.x = ( radius + tube * Math.cos( v ) ) * Math.cos( u );\n\t\t\tvertex.y = ( radius + tube * Math.cos( v ) ) * Math.sin( u );\n\t\t\tvertex.z = tube * Math.sin( v );\n\n\t\t\tvertices[ vertexBufferOffset ] = vertex.x;\n\t\t\tvertices[ vertexBufferOffset + 1 ] = vertex.y;\n\t\t\tvertices[ vertexBufferOffset + 2 ] = vertex.z;\n\n\t\t\t// this vector is used to calculate the normal\n\t\t\tcenter.x = radius * Math.cos( u );\n\t\t\tcenter.y = radius * Math.sin( u );\n\n\t\t\t// normal\n\t\t\tnormal.subVectors( vertex, center ).normalize();\n\n\t\t\tnormals[ vertexBufferOffset ] = normal.x;\n\t\t\tnormals[ vertexBufferOffset + 1 ] = normal.y;\n\t\t\tnormals[ vertexBufferOffset + 2 ] = normal.z;\n\n\t\t\t// uv\n\t\t\tuvs[ uvBufferOffset ] = i / tubularSegments;\n\t\t\tuvs[ uvBufferOffset + 1 ] = j / radialSegments;\n\n\t\t\t// update offsets\n\t\t\tvertexBufferOffset += 3;\n\t\t\tuvBufferOffset += 2;\n\n\t\t}\n\n\t}\n\n\t// generate indices\n\n\tfor ( j = 1; j <= radialSegments; j ++ ) {\n\n\t\tfor ( i = 1; i <= tubularSegments; i ++ ) {\n\n\t\t\t// indices\n\t\t\tvar a = ( tubularSegments + 1 ) * j + i - 1;\n\t\t\tvar b = ( tubularSegments + 1 ) * ( j - 1 ) + i - 1;\n\t\t\tvar c = ( tubularSegments + 1 ) * ( j - 1 ) + i;\n\t\t\tvar d = ( tubularSegments + 1 ) * j + i;\n\n\t\t\t// face one\n\t\t\tindices[ indexBufferOffset ] = a;\n\t\t\tindices[ indexBufferOffset + 1 ] = b;\n\t\t\tindices[ indexBufferOffset + 2 ] = d;\n\n\t\t\t// face two\n\t\t\tindices[ indexBufferOffset + 3 ] = b;\n\t\t\tindices[ indexBufferOffset + 4 ] = c;\n\t\t\tindices[ indexBufferOffset + 5 ] = d;\n\n\t\t\t// update offset\n\t\t\tindexBufferOffset += 6;\n\n\t\t}\n\n\t}\n\n\t// build geometry\n\tthis.setIndex( new BufferAttribute( indices, 1 ) );\n\tthis.addAttribute( 'position', new BufferAttribute( vertices, 3 ) );\n\tthis.addAttribute( 'normal', new BufferAttribute( normals, 3 ) );\n\tthis.addAttribute( 'uv', new BufferAttribute( uvs, 2 ) );\n\n}\n\nTorusBufferGeometry.prototype = Object.create( BufferGeometry.prototype );\nTorusBufferGeometry.prototype.constructor = TorusBufferGeometry;\n\n\nexport { TorusBufferGeometry };\n","import { Geometry } from '../core/Geometry';\nimport { TorusBufferGeometry } from './TorusBufferGeometry';\n\n/**\n * @author oosmoxiecode\n * @author mrdoob / http://mrdoob.com/\n * based on http://code.google.com/p/away3d/source/browse/trunk/fp10/Away3DLite/src/away3dlite/primitives/Torus.as?r=2888\n */\n\nfunction TorusGeometry( radius, tube, radialSegments, tubularSegments, arc ) {\n\n\tGeometry.call( this );\n\n\tthis.type = 'TorusGeometry';\n\n\tthis.parameters = {\n\t\tradius: radius,\n\t\ttube: tube,\n\t\tradialSegments: radialSegments,\n\t\ttubularSegments: tubularSegments,\n\t\tarc: arc\n\t};\n\n\tthis.fromBufferGeometry( new TorusBufferGeometry( radius, tube, radialSegments, tubularSegments, arc ) );\n\n}\n\nTorusGeometry.prototype = Object.create( Geometry.prototype );\nTorusGeometry.prototype.constructor = TorusGeometry;\n\n\nexport { TorusGeometry };\n","/**\n * @author zz85 / http://www.lab4games.net/zz85/blog\n */\n\nvar ShapeUtils = {\n\n\t// calculate area of the contour polygon\n\n\tarea: function ( contour ) {\n\n\t\tvar n = contour.length;\n\t\tvar a = 0.0;\n\n\t\tfor ( var p = n - 1, q = 0; q < n; p = q ++ ) {\n\n\t\t\ta += contour[ p ].x * contour[ q ].y - contour[ q ].x * contour[ p ].y;\n\n\t\t}\n\n\t\treturn a * 0.5;\n\n\t},\n\n\ttriangulate: ( function () {\n\n\t\t/**\n\t\t * This code is a quick port of code written in C++ which was submitted to\n\t\t * flipcode.com by John W. Ratcliff // July 22, 2000\n\t\t * See original code and more information here:\n\t\t * http://www.flipcode.com/archives/Efficient_Polygon_Triangulation.shtml\n\t\t *\n\t\t * ported to actionscript by Zevan Rosser\n\t\t * www.actionsnippet.com\n\t\t *\n\t\t * ported to javascript by Joshua Koo\n\t\t * http://www.lab4games.net/zz85/blog\n\t\t *\n\t\t */\n\n\t\tfunction snip( contour, u, v, w, n, verts ) {\n\n\t\t\tvar p;\n\t\t\tvar ax, ay, bx, by;\n\t\t\tvar cx, cy, px, py;\n\n\t\t\tax = contour[ verts[ u ] ].x;\n\t\t\tay = contour[ verts[ u ] ].y;\n\n\t\t\tbx = contour[ verts[ v ] ].x;\n\t\t\tby = contour[ verts[ v ] ].y;\n\n\t\t\tcx = contour[ verts[ w ] ].x;\n\t\t\tcy = contour[ verts[ w ] ].y;\n\n\t\t\tif ( ( bx - ax ) * ( cy - ay ) - ( by - ay ) * ( cx - ax ) <= 0 ) return false;\n\n\t\t\tvar aX, aY, bX, bY, cX, cY;\n\t\t\tvar apx, apy, bpx, bpy, cpx, cpy;\n\t\t\tvar cCROSSap, bCROSScp, aCROSSbp;\n\n\t\t\taX = cx - bx; aY = cy - by;\n\t\t\tbX = ax - cx; bY = ay - cy;\n\t\t\tcX = bx - ax; cY = by - ay;\n\n\t\t\tfor ( p = 0; p < n; p ++ ) {\n\n\t\t\t\tpx = contour[ verts[ p ] ].x;\n\t\t\t\tpy = contour[ verts[ p ] ].y;\n\n\t\t\t\tif ( ( ( px === ax ) && ( py === ay ) ) ||\n\t\t\t\t\t ( ( px === bx ) && ( py === by ) ) ||\n\t\t\t\t\t ( ( px === cx ) && ( py === cy ) ) )\tcontinue;\n\n\t\t\t\tapx = px - ax; apy = py - ay;\n\t\t\t\tbpx = px - bx; bpy = py - by;\n\t\t\t\tcpx = px - cx; cpy = py - cy;\n\n\t\t\t\t// see if p is inside triangle abc\n\n\t\t\t\taCROSSbp = aX * bpy - aY * bpx;\n\t\t\t\tcCROSSap = cX * apy - cY * apx;\n\t\t\t\tbCROSScp = bX * cpy - bY * cpx;\n\n\t\t\t\tif ( ( aCROSSbp >= - Number.EPSILON ) && ( bCROSScp >= - Number.EPSILON ) && ( cCROSSap >= - Number.EPSILON ) ) return false;\n\n\t\t\t}\n\n\t\t\treturn true;\n\n\t\t}\n\n\t\t// takes in an contour array and returns\n\n\t\treturn function triangulate( contour, indices ) {\n\n\t\t\tvar n = contour.length;\n\n\t\t\tif ( n < 3 ) return null;\n\n\t\t\tvar result = [],\n\t\t\t\tverts = [],\n\t\t\t\tvertIndices = [];\n\n\t\t\t/* we want a counter-clockwise polygon in verts */\n\n\t\t\tvar u, v, w;\n\n\t\t\tif ( ShapeUtils.area( contour ) > 0.0 ) {\n\n\t\t\t\tfor ( v = 0; v < n; v ++ ) verts[ v ] = v;\n\n\t\t\t} else {\n\n\t\t\t\tfor ( v = 0; v < n; v ++ ) verts[ v ] = ( n - 1 ) - v;\n\n\t\t\t}\n\n\t\t\tvar nv = n;\n\n\t\t\t/* remove nv - 2 vertices, creating 1 triangle every time */\n\n\t\t\tvar count = 2 * nv; /* error detection */\n\n\t\t\tfor ( v = nv - 1; nv > 2; ) {\n\n\t\t\t\t/* if we loop, it is probably a non-simple polygon */\n\n\t\t\t\tif ( ( count -- ) <= 0 ) {\n\n\t\t\t\t\t//** Triangulate: ERROR - probable bad polygon!\n\n\t\t\t\t\t//throw ( \"Warning, unable to triangulate polygon!\" );\n\t\t\t\t\t//return null;\n\t\t\t\t\t// Sometimes warning is fine, especially polygons are triangulated in reverse.\n\t\t\t\t\tconsole.warn( 'THREE.ShapeUtils: Unable to triangulate polygon! in triangulate()' );\n\n\t\t\t\t\tif ( indices ) return vertIndices;\n\t\t\t\t\treturn result;\n\n\t\t\t\t}\n\n\t\t\t\t/* three consecutive vertices in current polygon, */\n\n\t\t\t\tu = v; \t \tif ( nv <= u ) u = 0; /* previous */\n\t\t\t\tv = u + 1; if ( nv <= v ) v = 0; /* new v */\n\t\t\t\tw = v + 1; if ( nv <= w ) w = 0; /* next */\n\n\t\t\t\tif ( snip( contour, u, v, w, nv, verts ) ) {\n\n\t\t\t\t\tvar a, b, c, s, t;\n\n\t\t\t\t\t/* true names of the vertices */\n\n\t\t\t\t\ta = verts[ u ];\n\t\t\t\t\tb = verts[ v ];\n\t\t\t\t\tc = verts[ w ];\n\n\t\t\t\t\t/* output Triangle */\n\n\t\t\t\t\tresult.push( [ contour[ a ],\n\t\t\t\t\t\tcontour[ b ],\n\t\t\t\t\t\tcontour[ c ] ] );\n\n\n\t\t\t\t\tvertIndices.push( [ verts[ u ], verts[ v ], verts[ w ] ] );\n\n\t\t\t\t\t/* remove v from the remaining polygon */\n\n\t\t\t\t\tfor ( s = v, t = v + 1; t < nv; s ++, t ++ ) {\n\n\t\t\t\t\t\tverts[ s ] = verts[ t ];\n\n\t\t\t\t\t}\n\n\t\t\t\t\tnv --;\n\n\t\t\t\t\t/* reset error detection counter */\n\n\t\t\t\t\tcount = 2 * nv;\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t\tif ( indices ) return vertIndices;\n\t\t\treturn result;\n\n\t\t}\n\n\t} )(),\n\n\ttriangulateShape: function ( contour, holes ) {\n\n\t\tfunction removeDupEndPts(points) {\n\n\t\t\tvar l = points.length;\n\n\t\t\tif ( l > 2 && points[ l - 1 ].equals( points[ 0 ] ) ) {\n\n\t\t\t\tpoints.pop();\n\n\t\t\t}\n\n\t\t}\n\n\t\tremoveDupEndPts( contour );\n\t\tholes.forEach( removeDupEndPts );\n\n\t\tfunction point_in_segment_2D_colin( inSegPt1, inSegPt2, inOtherPt ) {\n\n\t\t\t// inOtherPt needs to be collinear to the inSegment\n\t\t\tif ( inSegPt1.x !== inSegPt2.x ) {\n\n\t\t\t\tif ( inSegPt1.x < inSegPt2.x ) {\n\n\t\t\t\t\treturn\t( ( inSegPt1.x <= inOtherPt.x ) && ( inOtherPt.x <= inSegPt2.x ) );\n\n\t\t\t\t} else {\n\n\t\t\t\t\treturn\t( ( inSegPt2.x <= inOtherPt.x ) && ( inOtherPt.x <= inSegPt1.x ) );\n\n\t\t\t\t}\n\n\t\t\t} else {\n\n\t\t\t\tif ( inSegPt1.y < inSegPt2.y ) {\n\n\t\t\t\t\treturn\t( ( inSegPt1.y <= inOtherPt.y ) && ( inOtherPt.y <= inSegPt2.y ) );\n\n\t\t\t\t} else {\n\n\t\t\t\t\treturn\t( ( inSegPt2.y <= inOtherPt.y ) && ( inOtherPt.y <= inSegPt1.y ) );\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t}\n\n\t\tfunction intersect_segments_2D( inSeg1Pt1, inSeg1Pt2, inSeg2Pt1, inSeg2Pt2, inExcludeAdjacentSegs ) {\n\n\t\t\tvar seg1dx = inSeg1Pt2.x - inSeg1Pt1.x, seg1dy = inSeg1Pt2.y - inSeg1Pt1.y;\n\t\t\tvar seg2dx = inSeg2Pt2.x - inSeg2Pt1.x, seg2dy = inSeg2Pt2.y - inSeg2Pt1.y;\n\n\t\t\tvar seg1seg2dx = inSeg1Pt1.x - inSeg2Pt1.x;\n\t\t\tvar seg1seg2dy = inSeg1Pt1.y - inSeg2Pt1.y;\n\n\t\t\tvar limit\t\t= seg1dy * seg2dx - seg1dx * seg2dy;\n\t\t\tvar perpSeg1\t= seg1dy * seg1seg2dx - seg1dx * seg1seg2dy;\n\n\t\t\tif ( Math.abs( limit ) > Number.EPSILON ) {\n\n\t\t\t\t// not parallel\n\n\t\t\t\tvar perpSeg2;\n\t\t\t\tif ( limit > 0 ) {\n\n\t\t\t\t\tif ( ( perpSeg1 < 0 ) || ( perpSeg1 > limit ) ) \t\treturn [];\n\t\t\t\t\tperpSeg2 = seg2dy * seg1seg2dx - seg2dx * seg1seg2dy;\n\t\t\t\t\tif ( ( perpSeg2 < 0 ) || ( perpSeg2 > limit ) ) \t\treturn [];\n\n\t\t\t\t} else {\n\n\t\t\t\t\tif ( ( perpSeg1 > 0 ) || ( perpSeg1 < limit ) ) \t\treturn [];\n\t\t\t\t\tperpSeg2 = seg2dy * seg1seg2dx - seg2dx * seg1seg2dy;\n\t\t\t\t\tif ( ( perpSeg2 > 0 ) || ( perpSeg2 < limit ) ) \t\treturn [];\n\n\t\t\t\t}\n\n\t\t\t\t// i.e. to reduce rounding errors\n\t\t\t\t// intersection at endpoint of segment#1?\n\t\t\t\tif ( perpSeg2 === 0 ) {\n\n\t\t\t\t\tif ( ( inExcludeAdjacentSegs ) &&\n\t\t\t\t\t\t ( ( perpSeg1 === 0 ) || ( perpSeg1 === limit ) ) )\t\treturn [];\n\t\t\t\t\treturn [ inSeg1Pt1 ];\n\n\t\t\t\t}\n\t\t\t\tif ( perpSeg2 === limit ) {\n\n\t\t\t\t\tif ( ( inExcludeAdjacentSegs ) &&\n\t\t\t\t\t\t ( ( perpSeg1 === 0 ) || ( perpSeg1 === limit ) ) )\t\treturn [];\n\t\t\t\t\treturn [ inSeg1Pt2 ];\n\n\t\t\t\t}\n\t\t\t\t// intersection at endpoint of segment#2?\n\t\t\t\tif ( perpSeg1 === 0 )\t\treturn [ inSeg2Pt1 ];\n\t\t\t\tif ( perpSeg1 === limit )\treturn [ inSeg2Pt2 ];\n\n\t\t\t\t// return real intersection point\n\t\t\t\tvar factorSeg1 = perpSeg2 / limit;\n\t\t\t\treturn\t[ { x: inSeg1Pt1.x + factorSeg1 * seg1dx,\n\t\t\t\t\t\t\ty: inSeg1Pt1.y + factorSeg1 * seg1dy } ];\n\n\t\t\t} else {\n\n\t\t\t\t// parallel or collinear\n\t\t\t\tif ( ( perpSeg1 !== 0 ) ||\n\t\t\t\t\t ( seg2dy * seg1seg2dx !== seg2dx * seg1seg2dy ) ) \t\t\treturn [];\n\n\t\t\t\t// they are collinear or degenerate\n\t\t\t\tvar seg1Pt = ( ( seg1dx === 0 ) && ( seg1dy === 0 ) );\t// segment1 is just a point?\n\t\t\t\tvar seg2Pt = ( ( seg2dx === 0 ) && ( seg2dy === 0 ) );\t// segment2 is just a point?\n\t\t\t\t// both segments are points\n\t\t\t\tif ( seg1Pt && seg2Pt ) {\n\n\t\t\t\t\tif ( ( inSeg1Pt1.x !== inSeg2Pt1.x ) ||\n\t\t\t\t\t\t ( inSeg1Pt1.y !== inSeg2Pt1.y ) )\t\treturn [];\t// they are distinct points\n\t\t\t\t\treturn [ inSeg1Pt1 ]; \t\t\t\t\t\t// they are the same point\n\n\t\t\t\t}\n\t\t\t\t// segment#1 is a single point\n\t\t\t\tif ( seg1Pt ) {\n\n\t\t\t\t\tif ( ! point_in_segment_2D_colin( inSeg2Pt1, inSeg2Pt2, inSeg1Pt1 ) )\t\treturn [];\t\t// but not in segment#2\n\t\t\t\t\treturn [ inSeg1Pt1 ];\n\n\t\t\t\t}\n\t\t\t\t// segment#2 is a single point\n\t\t\t\tif ( seg2Pt ) {\n\n\t\t\t\t\tif ( ! point_in_segment_2D_colin( inSeg1Pt1, inSeg1Pt2, inSeg2Pt1 ) )\t\treturn [];\t\t// but not in segment#1\n\t\t\t\t\treturn [ inSeg2Pt1 ];\n\n\t\t\t\t}\n\n\t\t\t\t// they are collinear segments, which might overlap\n\t\t\t\tvar seg1min, seg1max, seg1minVal, seg1maxVal;\n\t\t\t\tvar seg2min, seg2max, seg2minVal, seg2maxVal;\n\t\t\t\tif ( seg1dx !== 0 ) {\n\n\t\t\t\t\t// the segments are NOT on a vertical line\n\t\t\t\t\tif ( inSeg1Pt1.x < inSeg1Pt2.x ) {\n\n\t\t\t\t\t\tseg1min = inSeg1Pt1; seg1minVal = inSeg1Pt1.x;\n\t\t\t\t\t\tseg1max = inSeg1Pt2; seg1maxVal = inSeg1Pt2.x;\n\n\t\t\t\t\t} else {\n\n\t\t\t\t\t\tseg1min = inSeg1Pt2; seg1minVal = inSeg1Pt2.x;\n\t\t\t\t\t\tseg1max = inSeg1Pt1; seg1maxVal = inSeg1Pt1.x;\n\n\t\t\t\t\t}\n\t\t\t\t\tif ( inSeg2Pt1.x < inSeg2Pt2.x ) {\n\n\t\t\t\t\t\tseg2min = inSeg2Pt1; seg2minVal = inSeg2Pt1.x;\n\t\t\t\t\t\tseg2max = inSeg2Pt2; seg2maxVal = inSeg2Pt2.x;\n\n\t\t\t\t\t} else {\n\n\t\t\t\t\t\tseg2min = inSeg2Pt2; seg2minVal = inSeg2Pt2.x;\n\t\t\t\t\t\tseg2max = inSeg2Pt1; seg2maxVal = inSeg2Pt1.x;\n\n\t\t\t\t\t}\n\n\t\t\t\t} else {\n\n\t\t\t\t\t// the segments are on a vertical line\n\t\t\t\t\tif ( inSeg1Pt1.y < inSeg1Pt2.y ) {\n\n\t\t\t\t\t\tseg1min = inSeg1Pt1; seg1minVal = inSeg1Pt1.y;\n\t\t\t\t\t\tseg1max = inSeg1Pt2; seg1maxVal = inSeg1Pt2.y;\n\n\t\t\t\t\t} else {\n\n\t\t\t\t\t\tseg1min = inSeg1Pt2; seg1minVal = inSeg1Pt2.y;\n\t\t\t\t\t\tseg1max = inSeg1Pt1; seg1maxVal = inSeg1Pt1.y;\n\n\t\t\t\t\t}\n\t\t\t\t\tif ( inSeg2Pt1.y < inSeg2Pt2.y ) {\n\n\t\t\t\t\t\tseg2min = inSeg2Pt1; seg2minVal = inSeg2Pt1.y;\n\t\t\t\t\t\tseg2max = inSeg2Pt2; seg2maxVal = inSeg2Pt2.y;\n\n\t\t\t\t\t} else {\n\n\t\t\t\t\t\tseg2min = inSeg2Pt2; seg2minVal = inSeg2Pt2.y;\n\t\t\t\t\t\tseg2max = inSeg2Pt1; seg2maxVal = inSeg2Pt1.y;\n\n\t\t\t\t\t}\n\n\t\t\t\t}\n\t\t\t\tif ( seg1minVal <= seg2minVal ) {\n\n\t\t\t\t\tif ( seg1maxVal < seg2minVal )\treturn [];\n\t\t\t\t\tif ( seg1maxVal === seg2minVal )\t{\n\n\t\t\t\t\t\tif ( inExcludeAdjacentSegs )\t\treturn [];\n\t\t\t\t\t\treturn [ seg2min ];\n\n\t\t\t\t\t}\n\t\t\t\t\tif ( seg1maxVal <= seg2maxVal )\treturn [ seg2min, seg1max ];\n\t\t\t\t\treturn\t[ seg2min, seg2max ];\n\n\t\t\t\t} else {\n\n\t\t\t\t\tif ( seg1minVal > seg2maxVal )\treturn [];\n\t\t\t\t\tif ( seg1minVal === seg2maxVal )\t{\n\n\t\t\t\t\t\tif ( inExcludeAdjacentSegs )\t\treturn [];\n\t\t\t\t\t\treturn [ seg1min ];\n\n\t\t\t\t\t}\n\t\t\t\t\tif ( seg1maxVal <= seg2maxVal )\treturn [ seg1min, seg1max ];\n\t\t\t\t\treturn\t[ seg1min, seg2max ];\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t}\n\n\t\tfunction isPointInsideAngle( inVertex, inLegFromPt, inLegToPt, inOtherPt ) {\n\n\t\t\t// The order of legs is important\n\n\t\t\t// translation of all points, so that Vertex is at (0,0)\n\t\t\tvar legFromPtX\t= inLegFromPt.x - inVertex.x, legFromPtY\t= inLegFromPt.y - inVertex.y;\n\t\t\tvar legToPtX\t= inLegToPt.x\t- inVertex.x, legToPtY\t\t= inLegToPt.y\t- inVertex.y;\n\t\t\tvar otherPtX\t= inOtherPt.x\t- inVertex.x, otherPtY\t\t= inOtherPt.y\t- inVertex.y;\n\n\t\t\t// main angle >0: < 180 deg.; 0: 180 deg.; <0: > 180 deg.\n\t\t\tvar from2toAngle\t= legFromPtX * legToPtY - legFromPtY * legToPtX;\n\t\t\tvar from2otherAngle\t= legFromPtX * otherPtY - legFromPtY * otherPtX;\n\n\t\t\tif ( Math.abs( from2toAngle ) > Number.EPSILON ) {\n\n\t\t\t\t// angle != 180 deg.\n\n\t\t\t\tvar other2toAngle\t\t= otherPtX * legToPtY - otherPtY * legToPtX;\n\t\t\t\t// console.log( \"from2to: \" + from2toAngle + \", from2other: \" + from2otherAngle + \", other2to: \" + other2toAngle );\n\n\t\t\t\tif ( from2toAngle > 0 ) {\n\n\t\t\t\t\t// main angle < 180 deg.\n\t\t\t\t\treturn\t( ( from2otherAngle >= 0 ) && ( other2toAngle >= 0 ) );\n\n\t\t\t\t} else {\n\n\t\t\t\t\t// main angle > 180 deg.\n\t\t\t\t\treturn\t( ( from2otherAngle >= 0 ) || ( other2toAngle >= 0 ) );\n\n\t\t\t\t}\n\n\t\t\t} else {\n\n\t\t\t\t// angle == 180 deg.\n\t\t\t\t// console.log( \"from2to: 180 deg., from2other: \" + from2otherAngle );\n\t\t\t\treturn\t( from2otherAngle > 0 );\n\n\t\t\t}\n\n\t\t}\n\n\n\t\tfunction removeHoles( contour, holes ) {\n\n\t\t\tvar shape = contour.concat(); // work on this shape\n\t\t\tvar hole;\n\n\t\t\tfunction isCutLineInsideAngles( inShapeIdx, inHoleIdx ) {\n\n\t\t\t\t// Check if hole point lies within angle around shape point\n\t\t\t\tvar lastShapeIdx = shape.length - 1;\n\n\t\t\t\tvar prevShapeIdx = inShapeIdx - 1;\n\t\t\t\tif ( prevShapeIdx < 0 )\t\t\tprevShapeIdx = lastShapeIdx;\n\n\t\t\t\tvar nextShapeIdx = inShapeIdx + 1;\n\t\t\t\tif ( nextShapeIdx > lastShapeIdx )\tnextShapeIdx = 0;\n\n\t\t\t\tvar insideAngle = isPointInsideAngle( shape[ inShapeIdx ], shape[ prevShapeIdx ], shape[ nextShapeIdx ], hole[ inHoleIdx ] );\n\t\t\t\tif ( ! insideAngle ) {\n\n\t\t\t\t\t// console.log( \"Vertex (Shape): \" + inShapeIdx + \", Point: \" + hole[inHoleIdx].x + \"/\" + hole[inHoleIdx].y );\n\t\t\t\t\treturn\tfalse;\n\n\t\t\t\t}\n\n\t\t\t\t// Check if shape point lies within angle around hole point\n\t\t\t\tvar lastHoleIdx = hole.length - 1;\n\n\t\t\t\tvar prevHoleIdx = inHoleIdx - 1;\n\t\t\t\tif ( prevHoleIdx < 0 )\t\t\tprevHoleIdx = lastHoleIdx;\n\n\t\t\t\tvar nextHoleIdx = inHoleIdx + 1;\n\t\t\t\tif ( nextHoleIdx > lastHoleIdx )\tnextHoleIdx = 0;\n\n\t\t\t\tinsideAngle = isPointInsideAngle( hole[ inHoleIdx ], hole[ prevHoleIdx ], hole[ nextHoleIdx ], shape[ inShapeIdx ] );\n\t\t\t\tif ( ! insideAngle ) {\n\n\t\t\t\t\t// console.log( \"Vertex (Hole): \" + inHoleIdx + \", Point: \" + shape[inShapeIdx].x + \"/\" + shape[inShapeIdx].y );\n\t\t\t\t\treturn\tfalse;\n\n\t\t\t\t}\n\n\t\t\t\treturn\ttrue;\n\n\t\t\t}\n\n\t\t\tfunction intersectsShapeEdge( inShapePt, inHolePt ) {\n\n\t\t\t\t// checks for intersections with shape edges\n\t\t\t\tvar sIdx, nextIdx, intersection;\n\t\t\t\tfor ( sIdx = 0; sIdx < shape.length; sIdx ++ ) {\n\n\t\t\t\t\tnextIdx = sIdx + 1; nextIdx %= shape.length;\n\t\t\t\t\tintersection = intersect_segments_2D( inShapePt, inHolePt, shape[ sIdx ], shape[ nextIdx ], true );\n\t\t\t\t\tif ( intersection.length > 0 )\t\treturn\ttrue;\n\n\t\t\t\t}\n\n\t\t\t\treturn\tfalse;\n\n\t\t\t}\n\n\t\t\tvar indepHoles = [];\n\n\t\t\tfunction intersectsHoleEdge( inShapePt, inHolePt ) {\n\n\t\t\t\t// checks for intersections with hole edges\n\t\t\t\tvar ihIdx, chkHole,\n\t\t\t\t\thIdx, nextIdx, intersection;\n\t\t\t\tfor ( ihIdx = 0; ihIdx < indepHoles.length; ihIdx ++ ) {\n\n\t\t\t\t\tchkHole = holes[ indepHoles[ ihIdx ]];\n\t\t\t\t\tfor ( hIdx = 0; hIdx < chkHole.length; hIdx ++ ) {\n\n\t\t\t\t\t\tnextIdx = hIdx + 1; nextIdx %= chkHole.length;\n\t\t\t\t\t\tintersection = intersect_segments_2D( inShapePt, inHolePt, chkHole[ hIdx ], chkHole[ nextIdx ], true );\n\t\t\t\t\t\tif ( intersection.length > 0 )\t\treturn\ttrue;\n\n\t\t\t\t\t}\n\n\t\t\t\t}\n\t\t\t\treturn\tfalse;\n\n\t\t\t}\n\n\t\t\tvar holeIndex, shapeIndex,\n\t\t\t\tshapePt, holePt,\n\t\t\t\tholeIdx, cutKey, failedCuts = [],\n\t\t\t\ttmpShape1, tmpShape2,\n\t\t\t\ttmpHole1, tmpHole2;\n\n\t\t\tfor ( var h = 0, hl = holes.length; h < hl; h ++ ) {\n\n\t\t\t\tindepHoles.push( h );\n\n\t\t\t}\n\n\t\t\tvar minShapeIndex = 0;\n\t\t\tvar counter = indepHoles.length * 2;\n\t\t\twhile ( indepHoles.length > 0 ) {\n\n\t\t\t\tcounter --;\n\t\t\t\tif ( counter < 0 ) {\n\n\t\t\t\t\tconsole.log( \"Infinite Loop! Holes left:\" + indepHoles.length + \", Probably Hole outside Shape!\" );\n\t\t\t\t\tbreak;\n\n\t\t\t\t}\n\n\t\t\t\t// search for shape-vertex and hole-vertex,\n\t\t\t\t// which can be connected without intersections\n\t\t\t\tfor ( shapeIndex = minShapeIndex; shapeIndex < shape.length; shapeIndex ++ ) {\n\n\t\t\t\t\tshapePt = shape[ shapeIndex ];\n\t\t\t\t\tholeIndex\t= - 1;\n\n\t\t\t\t\t// search for hole which can be reached without intersections\n\t\t\t\t\tfor ( var h = 0; h < indepHoles.length; h ++ ) {\n\n\t\t\t\t\t\tholeIdx = indepHoles[ h ];\n\n\t\t\t\t\t\t// prevent multiple checks\n\t\t\t\t\t\tcutKey = shapePt.x + \":\" + shapePt.y + \":\" + holeIdx;\n\t\t\t\t\t\tif ( failedCuts[ cutKey ] !== undefined )\t\t\tcontinue;\n\n\t\t\t\t\t\thole = holes[ holeIdx ];\n\t\t\t\t\t\tfor ( var h2 = 0; h2 < hole.length; h2 ++ ) {\n\n\t\t\t\t\t\t\tholePt = hole[ h2 ];\n\t\t\t\t\t\t\tif ( ! isCutLineInsideAngles( shapeIndex, h2 ) )\t\tcontinue;\n\t\t\t\t\t\t\tif ( intersectsShapeEdge( shapePt, holePt ) )\t\tcontinue;\n\t\t\t\t\t\t\tif ( intersectsHoleEdge( shapePt, holePt ) )\t\tcontinue;\n\n\t\t\t\t\t\t\tholeIndex = h2;\n\t\t\t\t\t\t\tindepHoles.splice( h, 1 );\n\n\t\t\t\t\t\t\ttmpShape1 = shape.slice( 0, shapeIndex + 1 );\n\t\t\t\t\t\t\ttmpShape2 = shape.slice( shapeIndex );\n\t\t\t\t\t\t\ttmpHole1 = hole.slice( holeIndex );\n\t\t\t\t\t\t\ttmpHole2 = hole.slice( 0, holeIndex + 1 );\n\n\t\t\t\t\t\t\tshape = tmpShape1.concat( tmpHole1 ).concat( tmpHole2 ).concat( tmpShape2 );\n\n\t\t\t\t\t\t\tminShapeIndex = shapeIndex;\n\n\t\t\t\t\t\t\t// Debug only, to show the selected cuts\n\t\t\t\t\t\t\t// glob_CutLines.push( [ shapePt, holePt ] );\n\n\t\t\t\t\t\t\tbreak;\n\n\t\t\t\t\t\t}\n\t\t\t\t\t\tif ( holeIndex >= 0 )\tbreak;\t\t// hole-vertex found\n\n\t\t\t\t\t\tfailedCuts[ cutKey ] = true;\t\t\t// remember failure\n\n\t\t\t\t\t}\n\t\t\t\t\tif ( holeIndex >= 0 )\tbreak;\t\t// hole-vertex found\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t\treturn shape; \t\t\t/* shape with no holes */\n\n\t\t}\n\n\n\t\tvar i, il, f, face,\n\t\t\tkey, index,\n\t\t\tallPointsMap = {};\n\n\t\t// To maintain reference to old shape, one must match coordinates, or offset the indices from original arrays. It's probably easier to do the first.\n\n\t\tvar allpoints = contour.concat();\n\n\t\tfor ( var h = 0, hl = holes.length; h < hl; h ++ ) {\n\n\t\t\tArray.prototype.push.apply( allpoints, holes[ h ] );\n\n\t\t}\n\n\t\t//console.log( \"allpoints\",allpoints, allpoints.length );\n\n\t\t// prepare all points map\n\n\t\tfor ( i = 0, il = allpoints.length; i < il; i ++ ) {\n\n\t\t\tkey = allpoints[ i ].x + \":\" + allpoints[ i ].y;\n\n\t\t\tif ( allPointsMap[ key ] !== undefined ) {\n\n\t\t\t\tconsole.warn( \"THREE.ShapeUtils: Duplicate point\", key, i );\n\n\t\t\t}\n\n\t\t\tallPointsMap[ key ] = i;\n\n\t\t}\n\n\t\t// remove holes by cutting paths to holes and adding them to the shape\n\t\tvar shapeWithoutHoles = removeHoles( contour, holes );\n\n\t\tvar triangles = ShapeUtils.triangulate( shapeWithoutHoles, false ); // True returns indices for points of spooled shape\n\t\t//console.log( \"triangles\",triangles, triangles.length );\n\n\t\t// check all face vertices against all points map\n\n\t\tfor ( i = 0, il = triangles.length; i < il; i ++ ) {\n\n\t\t\tface = triangles[ i ];\n\n\t\t\tfor ( f = 0; f < 3; f ++ ) {\n\n\t\t\t\tkey = face[ f ].x + \":\" + face[ f ].y;\n\n\t\t\t\tindex = allPointsMap[ key ];\n\n\t\t\t\tif ( index !== undefined ) {\n\n\t\t\t\t\tface[ f ] = index;\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t}\n\n\t\treturn triangles.concat();\n\n\t},\n\n\tisClockWise: function ( pts ) {\n\n\t\treturn ShapeUtils.area( pts ) < 0;\n\n\t},\n\n\t// Bezier Curves formulas obtained from\n\t// http://en.wikipedia.org/wiki/B%C3%A9zier_curve\n\n\t// Quad Bezier Functions\n\n\tb2: ( function () {\n\n\t\tfunction b2p0( t, p ) {\n\n\t\t\tvar k = 1 - t;\n\t\t\treturn k * k * p;\n\n\t\t}\n\n\t\tfunction b2p1( t, p ) {\n\n\t\t\treturn 2 * ( 1 - t ) * t * p;\n\n\t\t}\n\n\t\tfunction b2p2( t, p ) {\n\n\t\t\treturn t * t * p;\n\n\t\t}\n\n\t\treturn function b2( t, p0, p1, p2 ) {\n\n\t\t\treturn b2p0( t, p0 ) + b2p1( t, p1 ) + b2p2( t, p2 );\n\n\t\t};\n\n\t} )(),\n\n\t// Cubic Bezier Functions\n\n\tb3: ( function () {\n\n\t\tfunction b3p0( t, p ) {\n\n\t\t\tvar k = 1 - t;\n\t\t\treturn k * k * k * p;\n\n\t\t}\n\n\t\tfunction b3p1( t, p ) {\n\n\t\t\tvar k = 1 - t;\n\t\t\treturn 3 * k * k * t * p;\n\n\t\t}\n\n\t\tfunction b3p2( t, p ) {\n\n\t\t\tvar k = 1 - t;\n\t\t\treturn 3 * k * t * t * p;\n\n\t\t}\n\n\t\tfunction b3p3( t, p ) {\n\n\t\t\treturn t * t * t * p;\n\n\t\t}\n\n\t\treturn function b3( t, p0, p1, p2, p3 ) {\n\n\t\t\treturn b3p0( t, p0 ) + b3p1( t, p1 ) + b3p2( t, p2 ) + b3p3( t, p3 );\n\n\t\t};\n\n\t} )()\n\n};\n\n\nexport { ShapeUtils };\n","import { Geometry } from '../core/Geometry';\nimport { Vector2 } from '../math/Vector2';\nimport { Face3 } from '../core/Face3';\nimport { Vector3 } from '../math/Vector3';\nimport { ShapeUtils } from '../extras/ShapeUtils';\n\n/**\n * @author zz85 / http://www.lab4games.net/zz85/blog\n *\n * Creates extruded geometry from a path shape.\n *\n * parameters = {\n *\n * curveSegments: , // number of points on the curves\n * steps: , // number of points for z-side extrusions / used for subdividing segments of extrude spline too\n * amount: , // Depth to extrude the shape\n *\n * bevelEnabled: , // turn on bevel\n * bevelThickness: , // how deep into the original shape bevel goes\n * bevelSize: , // how far from shape outline is bevel\n * bevelSegments: , // number of bevel layers\n *\n * extrudePath: // 3d spline path to extrude shape along. (creates Frames if .frames aren't defined)\n * frames: // containing arrays of tangents, normals, binormals\n *\n * uvGenerator: // object that provides UV generator functions\n *\n * }\n **/\n\nfunction ExtrudeGeometry( shapes, options ) {\n\n\tif ( typeof( shapes ) === \"undefined\" ) {\n\n\t\tshapes = [];\n\t\treturn;\n\n\t}\n\n\tGeometry.call( this );\n\n\tthis.type = 'ExtrudeGeometry';\n\n\tshapes = Array.isArray( shapes ) ? shapes : [ shapes ];\n\n\tthis.addShapeList( shapes, options );\n\n\tthis.computeFaceNormals();\n\n\t// can't really use automatic vertex normals\n\t// as then front and back sides get smoothed too\n\t// should do separate smoothing just for sides\n\n\t//this.computeVertexNormals();\n\n\t//console.log( \"took\", ( Date.now() - startTime ) );\n\n}\n\nExtrudeGeometry.prototype = Object.create( Geometry.prototype );\nExtrudeGeometry.prototype.constructor = ExtrudeGeometry;\n\nExtrudeGeometry.prototype.addShapeList = function ( shapes, options ) {\n\n\tvar sl = shapes.length;\n\n\tfor ( var s = 0; s < sl; s ++ ) {\n\n\t\tvar shape = shapes[ s ];\n\t\tthis.addShape( shape, options );\n\n\t}\n\n};\n\nExtrudeGeometry.prototype.addShape = function ( shape, options ) {\n\n\tvar amount = options.amount !== undefined ? options.amount : 100;\n\n\tvar bevelThickness = options.bevelThickness !== undefined ? options.bevelThickness : 6; // 10\n\tvar bevelSize = options.bevelSize !== undefined ? options.bevelSize : bevelThickness - 2; // 8\n\tvar bevelSegments = options.bevelSegments !== undefined ? options.bevelSegments : 3;\n\n\tvar bevelEnabled = options.bevelEnabled !== undefined ? options.bevelEnabled : true; // false\n\n\tvar curveSegments = options.curveSegments !== undefined ? options.curveSegments : 12;\n\n\tvar steps = options.steps !== undefined ? options.steps : 1;\n\n\tvar extrudePath = options.extrudePath;\n\tvar extrudePts, extrudeByPath = false;\n\n\t// Use default WorldUVGenerator if no UV generators are specified.\n\tvar uvgen = options.UVGenerator !== undefined ? options.UVGenerator : ExtrudeGeometry.WorldUVGenerator;\n\n\tvar splineTube, binormal, normal, position2;\n\tif ( extrudePath ) {\n\n\t\textrudePts = extrudePath.getSpacedPoints( steps );\n\n\t\textrudeByPath = true;\n\t\tbevelEnabled = false; // bevels not supported for path extrusion\n\n\t\t// SETUP TNB variables\n\n\t\t// TODO1 - have a .isClosed in spline?\n\n\t\tsplineTube = options.frames !== undefined ? options.frames : extrudePath.computeFrenetFrames( steps, false );\n\n\t\t// console.log(splineTube, 'splineTube', splineTube.normals.length, 'steps', steps, 'extrudePts', extrudePts.length);\n\n\t\tbinormal = new Vector3();\n\t\tnormal = new Vector3();\n\t\tposition2 = new Vector3();\n\n\t}\n\n\t// Safeguards if bevels are not enabled\n\n\tif ( ! bevelEnabled ) {\n\n\t\tbevelSegments = 0;\n\t\tbevelThickness = 0;\n\t\tbevelSize = 0;\n\n\t}\n\n\t// Variables initialization\n\n\tvar ahole, h, hl; // looping of holes\n\tvar scope = this;\n\n\tvar shapesOffset = this.vertices.length;\n\n\tvar shapePoints = shape.extractPoints( curveSegments );\n\n\tvar vertices = shapePoints.shape;\n\tvar holes = shapePoints.holes;\n\n\tvar reverse = ! ShapeUtils.isClockWise( vertices );\n\n\tif ( reverse ) {\n\n\t\tvertices = vertices.reverse();\n\n\t\t// Maybe we should also check if holes are in the opposite direction, just to be safe ...\n\n\t\tfor ( h = 0, hl = holes.length; h < hl; h ++ ) {\n\n\t\t\tahole = holes[ h ];\n\n\t\t\tif ( ShapeUtils.isClockWise( ahole ) ) {\n\n\t\t\t\tholes[ h ] = ahole.reverse();\n\n\t\t\t}\n\n\t\t}\n\n\t\treverse = false; // If vertices are in order now, we shouldn't need to worry about them again (hopefully)!\n\n\t}\n\n\n\tvar faces = ShapeUtils.triangulateShape( vertices, holes );\n\n\t/* Vertices */\n\n\tvar contour = vertices; // vertices has all points but contour has only points of circumference\n\n\tfor ( h = 0, hl = holes.length; h < hl; h ++ ) {\n\n\t\tahole = holes[ h ];\n\n\t\tvertices = vertices.concat( ahole );\n\n\t}\n\n\n\tfunction scalePt2( pt, vec, size ) {\n\n\t\tif ( ! vec ) console.error( \"THREE.ExtrudeGeometry: vec does not exist\" );\n\n\t\treturn vec.clone().multiplyScalar( size ).add( pt );\n\n\t}\n\n\tvar b, bs, t, z,\n\t\tvert, vlen = vertices.length,\n\t\tface, flen = faces.length;\n\n\n\t// Find directions for point movement\n\n\n\tfunction getBevelVec( inPt, inPrev, inNext ) {\n\n\t\t// computes for inPt the corresponding point inPt' on a new contour\n\t\t// shifted by 1 unit (length of normalized vector) to the left\n\t\t// if we walk along contour clockwise, this new contour is outside the old one\n\t\t//\n\t\t// inPt' is the intersection of the two lines parallel to the two\n\t\t// adjacent edges of inPt at a distance of 1 unit on the left side.\n\n\t\tvar v_trans_x, v_trans_y, shrink_by = 1;\t\t// resulting translation vector for inPt\n\n\t\t// good reading for geometry algorithms (here: line-line intersection)\n\t\t// http://geomalgorithms.com/a05-_intersect-1.html\n\n\t\tvar v_prev_x = inPt.x - inPrev.x, v_prev_y = inPt.y - inPrev.y;\n\t\tvar v_next_x = inNext.x - inPt.x, v_next_y = inNext.y - inPt.y;\n\n\t\tvar v_prev_lensq = ( v_prev_x * v_prev_x + v_prev_y * v_prev_y );\n\n\t\t// check for collinear edges\n\t\tvar collinear0 = ( v_prev_x * v_next_y - v_prev_y * v_next_x );\n\n\t\tif ( Math.abs( collinear0 ) > Number.EPSILON ) {\n\n\t\t\t// not collinear\n\n\t\t\t// length of vectors for normalizing\n\n\t\t\tvar v_prev_len = Math.sqrt( v_prev_lensq );\n\t\t\tvar v_next_len = Math.sqrt( v_next_x * v_next_x + v_next_y * v_next_y );\n\n\t\t\t// shift adjacent points by unit vectors to the left\n\n\t\t\tvar ptPrevShift_x = ( inPrev.x - v_prev_y / v_prev_len );\n\t\t\tvar ptPrevShift_y = ( inPrev.y + v_prev_x / v_prev_len );\n\n\t\t\tvar ptNextShift_x = ( inNext.x - v_next_y / v_next_len );\n\t\t\tvar ptNextShift_y = ( inNext.y + v_next_x / v_next_len );\n\n\t\t\t// scaling factor for v_prev to intersection point\n\n\t\t\tvar sf = ( ( ptNextShift_x - ptPrevShift_x ) * v_next_y -\n\t\t\t\t\t\t( ptNextShift_y - ptPrevShift_y ) * v_next_x ) /\n\t\t\t\t\t ( v_prev_x * v_next_y - v_prev_y * v_next_x );\n\n\t\t\t// vector from inPt to intersection point\n\n\t\t\tv_trans_x = ( ptPrevShift_x + v_prev_x * sf - inPt.x );\n\t\t\tv_trans_y = ( ptPrevShift_y + v_prev_y * sf - inPt.y );\n\n\t\t\t// Don't normalize!, otherwise sharp corners become ugly\n\t\t\t// but prevent crazy spikes\n\t\t\tvar v_trans_lensq = ( v_trans_x * v_trans_x + v_trans_y * v_trans_y );\n\t\t\tif ( v_trans_lensq <= 2 ) {\n\n\t\t\t\treturn\tnew Vector2( v_trans_x, v_trans_y );\n\n\t\t\t} else {\n\n\t\t\t\tshrink_by = Math.sqrt( v_trans_lensq / 2 );\n\n\t\t\t}\n\n\t\t} else {\n\n\t\t\t// handle special case of collinear edges\n\n\t\t\tvar direction_eq = false;\t\t// assumes: opposite\n\t\t\tif ( v_prev_x > Number.EPSILON ) {\n\n\t\t\t\tif ( v_next_x > Number.EPSILON ) {\n\n\t\t\t\t\tdirection_eq = true;\n\n\t\t\t\t}\n\n\t\t\t} else {\n\n\t\t\t\tif ( v_prev_x < - Number.EPSILON ) {\n\n\t\t\t\t\tif ( v_next_x < - Number.EPSILON ) {\n\n\t\t\t\t\t\tdirection_eq = true;\n\n\t\t\t\t\t}\n\n\t\t\t\t} else {\n\n\t\t\t\t\tif ( Math.sign( v_prev_y ) === Math.sign( v_next_y ) ) {\n\n\t\t\t\t\t\tdirection_eq = true;\n\n\t\t\t\t\t}\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t\tif ( direction_eq ) {\n\n\t\t\t\t// console.log(\"Warning: lines are a straight sequence\");\n\t\t\t\tv_trans_x = - v_prev_y;\n\t\t\t\tv_trans_y = v_prev_x;\n\t\t\t\tshrink_by = Math.sqrt( v_prev_lensq );\n\n\t\t\t} else {\n\n\t\t\t\t// console.log(\"Warning: lines are a straight spike\");\n\t\t\t\tv_trans_x = v_prev_x;\n\t\t\t\tv_trans_y = v_prev_y;\n\t\t\t\tshrink_by = Math.sqrt( v_prev_lensq / 2 );\n\n\t\t\t}\n\n\t\t}\n\n\t\treturn\tnew Vector2( v_trans_x / shrink_by, v_trans_y / shrink_by );\n\n\t}\n\n\n\tvar contourMovements = [];\n\n\tfor ( var i = 0, il = contour.length, j = il - 1, k = i + 1; i < il; i ++, j ++, k ++ ) {\n\n\t\tif ( j === il ) j = 0;\n\t\tif ( k === il ) k = 0;\n\n\t\t// (j)---(i)---(k)\n\t\t// console.log('i,j,k', i, j , k)\n\n\t\tcontourMovements[ i ] = getBevelVec( contour[ i ], contour[ j ], contour[ k ] );\n\n\t}\n\n\tvar holesMovements = [], oneHoleMovements, verticesMovements = contourMovements.concat();\n\n\tfor ( h = 0, hl = holes.length; h < hl; h ++ ) {\n\n\t\tahole = holes[ h ];\n\n\t\toneHoleMovements = [];\n\n\t\tfor ( i = 0, il = ahole.length, j = il - 1, k = i + 1; i < il; i ++, j ++, k ++ ) {\n\n\t\t\tif ( j === il ) j = 0;\n\t\t\tif ( k === il ) k = 0;\n\n\t\t\t// (j)---(i)---(k)\n\t\t\toneHoleMovements[ i ] = getBevelVec( ahole[ i ], ahole[ j ], ahole[ k ] );\n\n\t\t}\n\n\t\tholesMovements.push( oneHoleMovements );\n\t\tverticesMovements = verticesMovements.concat( oneHoleMovements );\n\n\t}\n\n\n\t// Loop bevelSegments, 1 for the front, 1 for the back\n\n\tfor ( b = 0; b < bevelSegments; b ++ ) {\n\n\t\t//for ( b = bevelSegments; b > 0; b -- ) {\n\n\t\tt = b / bevelSegments;\n\t\tz = bevelThickness * Math.cos( t * Math.PI / 2 );\n\t\tbs = bevelSize * Math.sin( t * Math.PI / 2 );\n\n\t\t// contract shape\n\n\t\tfor ( i = 0, il = contour.length; i < il; i ++ ) {\n\n\t\t\tvert = scalePt2( contour[ i ], contourMovements[ i ], bs );\n\n\t\t\tv( vert.x, vert.y, - z );\n\n\t\t}\n\n\t\t// expand holes\n\n\t\tfor ( h = 0, hl = holes.length; h < hl; h ++ ) {\n\n\t\t\tahole = holes[ h ];\n\t\t\toneHoleMovements = holesMovements[ h ];\n\n\t\t\tfor ( i = 0, il = ahole.length; i < il; i ++ ) {\n\n\t\t\t\tvert = scalePt2( ahole[ i ], oneHoleMovements[ i ], bs );\n\n\t\t\t\tv( vert.x, vert.y, - z );\n\n\t\t\t}\n\n\t\t}\n\n\t}\n\n\tbs = bevelSize;\n\n\t// Back facing vertices\n\n\tfor ( i = 0; i < vlen; i ++ ) {\n\n\t\tvert = bevelEnabled ? scalePt2( vertices[ i ], verticesMovements[ i ], bs ) : vertices[ i ];\n\n\t\tif ( ! extrudeByPath ) {\n\n\t\t\tv( vert.x, vert.y, 0 );\n\n\t\t} else {\n\n\t\t\t// v( vert.x, vert.y + extrudePts[ 0 ].y, extrudePts[ 0 ].x );\n\n\t\t\tnormal.copy( splineTube.normals[ 0 ] ).multiplyScalar( vert.x );\n\t\t\tbinormal.copy( splineTube.binormals[ 0 ] ).multiplyScalar( vert.y );\n\n\t\t\tposition2.copy( extrudePts[ 0 ] ).add( normal ).add( binormal );\n\n\t\t\tv( position2.x, position2.y, position2.z );\n\n\t\t}\n\n\t}\n\n\t// Add stepped vertices...\n\t// Including front facing vertices\n\n\tvar s;\n\n\tfor ( s = 1; s <= steps; s ++ ) {\n\n\t\tfor ( i = 0; i < vlen; i ++ ) {\n\n\t\t\tvert = bevelEnabled ? scalePt2( vertices[ i ], verticesMovements[ i ], bs ) : vertices[ i ];\n\n\t\t\tif ( ! extrudeByPath ) {\n\n\t\t\t\tv( vert.x, vert.y, amount / steps * s );\n\n\t\t\t} else {\n\n\t\t\t\t// v( vert.x, vert.y + extrudePts[ s - 1 ].y, extrudePts[ s - 1 ].x );\n\n\t\t\t\tnormal.copy( splineTube.normals[ s ] ).multiplyScalar( vert.x );\n\t\t\t\tbinormal.copy( splineTube.binormals[ s ] ).multiplyScalar( vert.y );\n\n\t\t\t\tposition2.copy( extrudePts[ s ] ).add( normal ).add( binormal );\n\n\t\t\t\tv( position2.x, position2.y, position2.z );\n\n\t\t\t}\n\n\t\t}\n\n\t}\n\n\n\t// Add bevel segments planes\n\n\t//for ( b = 1; b <= bevelSegments; b ++ ) {\n\tfor ( b = bevelSegments - 1; b >= 0; b -- ) {\n\n\t\tt = b / bevelSegments;\n\t\tz = bevelThickness * Math.cos ( t * Math.PI / 2 );\n\t\tbs = bevelSize * Math.sin( t * Math.PI / 2 );\n\n\t\t// contract shape\n\n\t\tfor ( i = 0, il = contour.length; i < il; i ++ ) {\n\n\t\t\tvert = scalePt2( contour[ i ], contourMovements[ i ], bs );\n\t\t\tv( vert.x, vert.y, amount + z );\n\n\t\t}\n\n\t\t// expand holes\n\n\t\tfor ( h = 0, hl = holes.length; h < hl; h ++ ) {\n\n\t\t\tahole = holes[ h ];\n\t\t\toneHoleMovements = holesMovements[ h ];\n\n\t\t\tfor ( i = 0, il = ahole.length; i < il; i ++ ) {\n\n\t\t\t\tvert = scalePt2( ahole[ i ], oneHoleMovements[ i ], bs );\n\n\t\t\t\tif ( ! extrudeByPath ) {\n\n\t\t\t\t\tv( vert.x, vert.y, amount + z );\n\n\t\t\t\t} else {\n\n\t\t\t\t\tv( vert.x, vert.y + extrudePts[ steps - 1 ].y, extrudePts[ steps - 1 ].x + z );\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t}\n\n\t}\n\n\t/* Faces */\n\n\t// Top and bottom faces\n\n\tbuildLidFaces();\n\n\t// Sides faces\n\n\tbuildSideFaces();\n\n\n\t///// Internal functions\n\n\tfunction buildLidFaces() {\n\n\t\tif ( bevelEnabled ) {\n\n\t\t\tvar layer = 0; // steps + 1\n\t\t\tvar offset = vlen * layer;\n\n\t\t\t// Bottom faces\n\n\t\t\tfor ( i = 0; i < flen; i ++ ) {\n\n\t\t\t\tface = faces[ i ];\n\t\t\t\tf3( face[ 2 ] + offset, face[ 1 ] + offset, face[ 0 ] + offset );\n\n\t\t\t}\n\n\t\t\tlayer = steps + bevelSegments * 2;\n\t\t\toffset = vlen * layer;\n\n\t\t\t// Top faces\n\n\t\t\tfor ( i = 0; i < flen; i ++ ) {\n\n\t\t\t\tface = faces[ i ];\n\t\t\t\tf3( face[ 0 ] + offset, face[ 1 ] + offset, face[ 2 ] + offset );\n\n\t\t\t}\n\n\t\t} else {\n\n\t\t\t// Bottom faces\n\n\t\t\tfor ( i = 0; i < flen; i ++ ) {\n\n\t\t\t\tface = faces[ i ];\n\t\t\t\tf3( face[ 2 ], face[ 1 ], face[ 0 ] );\n\n\t\t\t}\n\n\t\t\t// Top faces\n\n\t\t\tfor ( i = 0; i < flen; i ++ ) {\n\n\t\t\t\tface = faces[ i ];\n\t\t\t\tf3( face[ 0 ] + vlen * steps, face[ 1 ] + vlen * steps, face[ 2 ] + vlen * steps );\n\n\t\t\t}\n\n\t\t}\n\n\t}\n\n\t// Create faces for the z-sides of the shape\n\n\tfunction buildSideFaces() {\n\n\t\tvar layeroffset = 0;\n\t\tsidewalls( contour, layeroffset );\n\t\tlayeroffset += contour.length;\n\n\t\tfor ( h = 0, hl = holes.length; h < hl; h ++ ) {\n\n\t\t\tahole = holes[ h ];\n\t\t\tsidewalls( ahole, layeroffset );\n\n\t\t\t//, true\n\t\t\tlayeroffset += ahole.length;\n\n\t\t}\n\n\t}\n\n\tfunction sidewalls( contour, layeroffset ) {\n\n\t\tvar j, k;\n\t\ti = contour.length;\n\n\t\twhile ( -- i >= 0 ) {\n\n\t\t\tj = i;\n\t\t\tk = i - 1;\n\t\t\tif ( k < 0 ) k = contour.length - 1;\n\n\t\t\t//console.log('b', i,j, i-1, k,vertices.length);\n\n\t\t\tvar s = 0, sl = steps + bevelSegments * 2;\n\n\t\t\tfor ( s = 0; s < sl; s ++ ) {\n\n\t\t\t\tvar slen1 = vlen * s;\n\t\t\t\tvar slen2 = vlen * ( s + 1 );\n\n\t\t\t\tvar a = layeroffset + j + slen1,\n\t\t\t\t\tb = layeroffset + k + slen1,\n\t\t\t\t\tc = layeroffset + k + slen2,\n\t\t\t\t\td = layeroffset + j + slen2;\n\n\t\t\t\tf4( a, b, c, d, contour, s, sl, j, k );\n\n\t\t\t}\n\n\t\t}\n\n\t}\n\n\n\tfunction v( x, y, z ) {\n\n\t\tscope.vertices.push( new Vector3( x, y, z ) );\n\n\t}\n\n\tfunction f3( a, b, c ) {\n\n\t\ta += shapesOffset;\n\t\tb += shapesOffset;\n\t\tc += shapesOffset;\n\n\t\tscope.faces.push( new Face3( a, b, c, null, null, 0 ) );\n\n\t\tvar uvs = uvgen.generateTopUV( scope, a, b, c );\n\n\t\tscope.faceVertexUvs[ 0 ].push( uvs );\n\n\t}\n\n\tfunction f4( a, b, c, d, wallContour, stepIndex, stepsLength, contourIndex1, contourIndex2 ) {\n\n\t\ta += shapesOffset;\n\t\tb += shapesOffset;\n\t\tc += shapesOffset;\n\t\td += shapesOffset;\n\n\t\tscope.faces.push( new Face3( a, b, d, null, null, 1 ) );\n\t\tscope.faces.push( new Face3( b, c, d, null, null, 1 ) );\n\n\t\tvar uvs = uvgen.generateSideWallUV( scope, a, b, c, d );\n\n\t\tscope.faceVertexUvs[ 0 ].push( [ uvs[ 0 ], uvs[ 1 ], uvs[ 3 ] ] );\n\t\tscope.faceVertexUvs[ 0 ].push( [ uvs[ 1 ], uvs[ 2 ], uvs[ 3 ] ] );\n\n\t}\n\n};\n\nExtrudeGeometry.WorldUVGenerator = {\n\n\tgenerateTopUV: function ( geometry, indexA, indexB, indexC ) {\n\n\t\tvar vertices = geometry.vertices;\n\n\t\tvar a = vertices[ indexA ];\n\t\tvar b = vertices[ indexB ];\n\t\tvar c = vertices[ indexC ];\n\n\t\treturn [\n\t\t\tnew Vector2( a.x, a.y ),\n\t\t\tnew Vector2( b.x, b.y ),\n\t\t\tnew Vector2( c.x, c.y )\n\t\t];\n\n\t},\n\n\tgenerateSideWallUV: function ( geometry, indexA, indexB, indexC, indexD ) {\n\n\t\tvar vertices = geometry.vertices;\n\n\t\tvar a = vertices[ indexA ];\n\t\tvar b = vertices[ indexB ];\n\t\tvar c = vertices[ indexC ];\n\t\tvar d = vertices[ indexD ];\n\n\t\tif ( Math.abs( a.y - b.y ) < 0.01 ) {\n\n\t\t\treturn [\n\t\t\t\tnew Vector2( a.x, 1 - a.z ),\n\t\t\t\tnew Vector2( b.x, 1 - b.z ),\n\t\t\t\tnew Vector2( c.x, 1 - c.z ),\n\t\t\t\tnew Vector2( d.x, 1 - d.z )\n\t\t\t];\n\n\t\t} else {\n\n\t\t\treturn [\n\t\t\t\tnew Vector2( a.y, 1 - a.z ),\n\t\t\t\tnew Vector2( b.y, 1 - b.z ),\n\t\t\t\tnew Vector2( c.y, 1 - c.z ),\n\t\t\t\tnew Vector2( d.y, 1 - d.z )\n\t\t\t];\n\n\t\t}\n\n\t}\n};\n\n\nexport { ExtrudeGeometry };\n","import { ExtrudeGeometry } from './ExtrudeGeometry';\nimport { Geometry } from '../core/Geometry';\n\n/**\n * @author zz85 / http://www.lab4games.net/zz85/blog\n * @author alteredq / http://alteredqualia.com/\n *\n * Text = 3D Text\n *\n * parameters = {\n * font: , // font\n *\n * size: , // size of the text\n * height: , // thickness to extrude text\n * curveSegments: , // number of points on the curves\n *\n * bevelEnabled: , // turn on bevel\n * bevelThickness: , // how deep into text bevel goes\n * bevelSize: // how far from text outline is bevel\n * }\n */\n\nfunction TextGeometry( text, parameters ) {\n\n\tparameters = parameters || {};\n\n\tvar font = parameters.font;\n\n\tif ( (font && font.isFont) === false ) {\n\n\t\tconsole.error( 'THREE.TextGeometry: font parameter is not an instance of THREE.Font.' );\n\t\treturn new Geometry();\n\n\t}\n\n\tvar shapes = font.generateShapes( text, parameters.size, parameters.curveSegments );\n\n\t// translate parameters to ExtrudeGeometry API\n\n\tparameters.amount = parameters.height !== undefined ? parameters.height : 50;\n\n\t// defaults\n\n\tif ( parameters.bevelThickness === undefined ) parameters.bevelThickness = 10;\n\tif ( parameters.bevelSize === undefined ) parameters.bevelSize = 8;\n\tif ( parameters.bevelEnabled === undefined ) parameters.bevelEnabled = false;\n\n\tExtrudeGeometry.call( this, shapes, parameters );\n\n\tthis.type = 'TextGeometry';\n\n}\n\nTextGeometry.prototype = Object.create( ExtrudeGeometry.prototype );\nTextGeometry.prototype.constructor = TextGeometry;\n\n\nexport { TextGeometry };\n","import { BufferGeometry } from '../core/BufferGeometry';\nimport { Vector3 } from '../math/Vector3';\nimport { Sphere } from '../math/Sphere';\nimport { Uint16Attribute, Uint32Attribute, BufferAttribute } from '../core/BufferAttribute';\n\n/**\n * @author benaadams / https://twitter.com/ben_a_adams\n * based on THREE.SphereGeometry\n */\n\nfunction SphereBufferGeometry( radius, widthSegments, heightSegments, phiStart, phiLength, thetaStart, thetaLength ) {\n\n\tBufferGeometry.call( this );\n\n\tthis.type = 'SphereBufferGeometry';\n\n\tthis.parameters = {\n\t\tradius: radius,\n\t\twidthSegments: widthSegments,\n\t\theightSegments: heightSegments,\n\t\tphiStart: phiStart,\n\t\tphiLength: phiLength,\n\t\tthetaStart: thetaStart,\n\t\tthetaLength: thetaLength\n\t};\n\n\tradius = radius || 50;\n\n\twidthSegments = Math.max( 3, Math.floor( widthSegments ) || 8 );\n\theightSegments = Math.max( 2, Math.floor( heightSegments ) || 6 );\n\n\tphiStart = phiStart !== undefined ? phiStart : 0;\n\tphiLength = phiLength !== undefined ? phiLength : Math.PI * 2;\n\n\tthetaStart = thetaStart !== undefined ? thetaStart : 0;\n\tthetaLength = thetaLength !== undefined ? thetaLength : Math.PI;\n\n\tvar thetaEnd = thetaStart + thetaLength;\n\n\tvar vertexCount = ( ( widthSegments + 1 ) * ( heightSegments + 1 ) );\n\n\tvar positions = new BufferAttribute( new Float32Array( vertexCount * 3 ), 3 );\n\tvar normals = new BufferAttribute( new Float32Array( vertexCount * 3 ), 3 );\n\tvar uvs = new BufferAttribute( new Float32Array( vertexCount * 2 ), 2 );\n\n\tvar index = 0, vertices = [], normal = new Vector3();\n\n\tfor ( var y = 0; y <= heightSegments; y ++ ) {\n\n\t\tvar verticesRow = [];\n\n\t\tvar v = y / heightSegments;\n\n\t\tfor ( var x = 0; x <= widthSegments; x ++ ) {\n\n\t\t\tvar u = x / widthSegments;\n\n\t\t\tvar px = - radius * Math.cos( phiStart + u * phiLength ) * Math.sin( thetaStart + v * thetaLength );\n\t\t\tvar py = radius * Math.cos( thetaStart + v * thetaLength );\n\t\t\tvar pz = radius * Math.sin( phiStart + u * phiLength ) * Math.sin( thetaStart + v * thetaLength );\n\n\t\t\tnormal.set( px, py, pz ).normalize();\n\n\t\t\tpositions.setXYZ( index, px, py, pz );\n\t\t\tnormals.setXYZ( index, normal.x, normal.y, normal.z );\n\t\t\tuvs.setXY( index, u, 1 - v );\n\n\t\t\tverticesRow.push( index );\n\n\t\t\tindex ++;\n\n\t\t}\n\n\t\tvertices.push( verticesRow );\n\n\t}\n\n\tvar indices = [];\n\n\tfor ( var y = 0; y < heightSegments; y ++ ) {\n\n\t\tfor ( var x = 0; x < widthSegments; x ++ ) {\n\n\t\t\tvar v1 = vertices[ y ][ x + 1 ];\n\t\t\tvar v2 = vertices[ y ][ x ];\n\t\t\tvar v3 = vertices[ y + 1 ][ x ];\n\t\t\tvar v4 = vertices[ y + 1 ][ x + 1 ];\n\n\t\t\tif ( y !== 0 || thetaStart > 0 ) indices.push( v1, v2, v4 );\n\t\t\tif ( y !== heightSegments - 1 || thetaEnd < Math.PI ) indices.push( v2, v3, v4 );\n\n\t\t}\n\n\t}\n\n\tthis.setIndex( new ( positions.count > 65535 ? Uint32Attribute : Uint16Attribute )( indices, 1 ) );\n\tthis.addAttribute( 'position', positions );\n\tthis.addAttribute( 'normal', normals );\n\tthis.addAttribute( 'uv', uvs );\n\n\tthis.boundingSphere = new Sphere( new Vector3(), radius );\n\n}\n\nSphereBufferGeometry.prototype = Object.create( BufferGeometry.prototype );\nSphereBufferGeometry.prototype.constructor = SphereBufferGeometry;\n\n\nexport { SphereBufferGeometry };\n","import { Geometry } from '../core/Geometry';\nimport { SphereBufferGeometry } from './SphereBufferGeometry';\n\n/**\n * @author mrdoob / http://mrdoob.com/\n */\n\nfunction SphereGeometry( radius, widthSegments, heightSegments, phiStart, phiLength, thetaStart, thetaLength ) {\n\n\tGeometry.call( this );\n\n\tthis.type = 'SphereGeometry';\n\n\tthis.parameters = {\n\t\tradius: radius,\n\t\twidthSegments: widthSegments,\n\t\theightSegments: heightSegments,\n\t\tphiStart: phiStart,\n\t\tphiLength: phiLength,\n\t\tthetaStart: thetaStart,\n\t\tthetaLength: thetaLength\n\t};\n\n\tthis.fromBufferGeometry( new SphereBufferGeometry( radius, widthSegments, heightSegments, phiStart, phiLength, thetaStart, thetaLength ) );\n\n}\n\nSphereGeometry.prototype = Object.create( Geometry.prototype );\nSphereGeometry.prototype.constructor = SphereGeometry;\n\n\nexport { SphereGeometry };\n","import { BufferGeometry } from '../core/BufferGeometry';\nimport { Vector2 } from '../math/Vector2';\nimport { Vector3 } from '../math/Vector3';\nimport { BufferAttribute } from '../core/BufferAttribute';\n\n/**\n * @author Mugen87 / https://github.com/Mugen87\n */\n\nfunction RingBufferGeometry( innerRadius, outerRadius, thetaSegments, phiSegments, thetaStart, thetaLength ) {\n\n\tBufferGeometry.call( this );\n\n\tthis.type = 'RingBufferGeometry';\n\n\tthis.parameters = {\n\t\tinnerRadius: innerRadius,\n\t\touterRadius: outerRadius,\n\t\tthetaSegments: thetaSegments,\n\t\tphiSegments: phiSegments,\n\t\tthetaStart: thetaStart,\n\t\tthetaLength: thetaLength\n\t};\n\n\tinnerRadius = innerRadius || 20;\n\touterRadius = outerRadius || 50;\n\n\tthetaStart = thetaStart !== undefined ? thetaStart : 0;\n\tthetaLength = thetaLength !== undefined ? thetaLength : Math.PI * 2;\n\n\tthetaSegments = thetaSegments !== undefined ? Math.max( 3, thetaSegments ) : 8;\n\tphiSegments = phiSegments !== undefined ? Math.max( 1, phiSegments ) : 1;\n\n\t// these are used to calculate buffer length\n\tvar vertexCount = ( thetaSegments + 1 ) * ( phiSegments + 1 );\n\tvar indexCount = thetaSegments * phiSegments * 2 * 3;\n\n\t// buffers\n\tvar indices = new BufferAttribute( new ( indexCount > 65535 ? Uint32Array : Uint16Array )( indexCount ) , 1 );\n\tvar vertices = new BufferAttribute( new Float32Array( vertexCount * 3 ), 3 );\n\tvar normals = new BufferAttribute( new Float32Array( vertexCount * 3 ), 3 );\n\tvar uvs = new BufferAttribute( new Float32Array( vertexCount * 2 ), 2 );\n\n\t// some helper variables\n\tvar index = 0, indexOffset = 0, segment;\n\tvar radius = innerRadius;\n\tvar radiusStep = ( ( outerRadius - innerRadius ) / phiSegments );\n\tvar vertex = new Vector3();\n\tvar uv = new Vector2();\n\tvar j, i;\n\n\t// generate vertices, normals and uvs\n\n\t// values are generate from the inside of the ring to the outside\n\n\tfor ( j = 0; j <= phiSegments; j ++ ) {\n\n\t\tfor ( i = 0; i <= thetaSegments; i ++ ) {\n\n\t\t\tsegment = thetaStart + i / thetaSegments * thetaLength;\n\n\t\t\t// vertex\n\t\t\tvertex.x = radius * Math.cos( segment );\n\t\t\tvertex.y = radius * Math.sin( segment );\n\t\t\tvertices.setXYZ( index, vertex.x, vertex.y, vertex.z );\n\n\t\t\t// normal\n\t\t\tnormals.setXYZ( index, 0, 0, 1 );\n\n\t\t\t// uv\n\t\t\tuv.x = ( vertex.x / outerRadius + 1 ) / 2;\n\t\t\tuv.y = ( vertex.y / outerRadius + 1 ) / 2;\n\t\t\tuvs.setXY( index, uv.x, uv.y );\n\n\t\t\t// increase index\n\t\t\tindex++;\n\n\t\t}\n\n\t\t// increase the radius for next row of vertices\n\t\tradius += radiusStep;\n\n\t}\n\n\t// generate indices\n\n\tfor ( j = 0; j < phiSegments; j ++ ) {\n\n\t\tvar thetaSegmentLevel = j * ( thetaSegments + 1 );\n\n\t\tfor ( i = 0; i < thetaSegments; i ++ ) {\n\n\t\t\tsegment = i + thetaSegmentLevel;\n\n\t\t\t// indices\n\t\t\tvar a = segment;\n\t\t\tvar b = segment + thetaSegments + 1;\n\t\t\tvar c = segment + thetaSegments + 2;\n\t\t\tvar d = segment + 1;\n\n\t\t\t// face one\n\t\t\tindices.setX( indexOffset, a ); indexOffset++;\n\t\t\tindices.setX( indexOffset, b ); indexOffset++;\n\t\t\tindices.setX( indexOffset, c ); indexOffset++;\n\n\t\t\t// face two\n\t\t\tindices.setX( indexOffset, a ); indexOffset++;\n\t\t\tindices.setX( indexOffset, c ); indexOffset++;\n\t\t\tindices.setX( indexOffset, d ); indexOffset++;\n\n\t\t}\n\n\t}\n\n\t// build geometry\n\n\tthis.setIndex( indices );\n\tthis.addAttribute( 'position', vertices );\n\tthis.addAttribute( 'normal', normals );\n\tthis.addAttribute( 'uv', uvs );\n\n}\n\nRingBufferGeometry.prototype = Object.create( BufferGeometry.prototype );\nRingBufferGeometry.prototype.constructor = RingBufferGeometry;\n\n\nexport { RingBufferGeometry };\n","import { Geometry } from '../core/Geometry';\nimport { RingBufferGeometry } from './RingBufferGeometry';\n\n/**\n * @author Kaleb Murphy\n */\n\nfunction RingGeometry( innerRadius, outerRadius, thetaSegments, phiSegments, thetaStart, thetaLength ) {\n\n\tGeometry.call( this );\n\n\tthis.type = 'RingGeometry';\n\n\tthis.parameters = {\n\t\tinnerRadius: innerRadius,\n\t\touterRadius: outerRadius,\n\t\tthetaSegments: thetaSegments,\n\t\tphiSegments: phiSegments,\n\t\tthetaStart: thetaStart,\n\t\tthetaLength: thetaLength\n\t};\n\n\tthis.fromBufferGeometry( new RingBufferGeometry( innerRadius, outerRadius, thetaSegments, phiSegments, thetaStart, thetaLength ) );\n\n}\n\nRingGeometry.prototype = Object.create( Geometry.prototype );\nRingGeometry.prototype.constructor = RingGeometry;\n\n\nexport { RingGeometry };\n","import { Geometry } from '../core/Geometry';\nimport { PlaneBufferGeometry } from './PlaneBufferGeometry';\n\n/**\n * @author mrdoob / http://mrdoob.com/\n * based on http://papervision3d.googlecode.com/svn/trunk/as3/trunk/src/org/papervision3d/objects/primitives/Plane.as\n */\n\nfunction PlaneGeometry( width, height, widthSegments, heightSegments ) {\n\n\tGeometry.call( this );\n\n\tthis.type = 'PlaneGeometry';\n\n\tthis.parameters = {\n\t\twidth: width,\n\t\theight: height,\n\t\twidthSegments: widthSegments,\n\t\theightSegments: heightSegments\n\t};\n\n\tthis.fromBufferGeometry( new PlaneBufferGeometry( width, height, widthSegments, heightSegments ) );\n\n}\n\nPlaneGeometry.prototype = Object.create( Geometry.prototype );\nPlaneGeometry.prototype.constructor = PlaneGeometry;\n\n\nexport { PlaneGeometry };\n","import { BufferGeometry } from '../core/BufferGeometry';\nimport { Vector3 } from '../math/Vector3';\nimport { Vector2 } from '../math/Vector2';\nimport { BufferAttribute } from '../core/BufferAttribute';\nimport { _Math } from '../math/Math';\n\n/**\n * @author Mugen87 / https://github.com/Mugen87\n */\n\n // points - to create a closed torus, one must use a set of points\n // like so: [ a, b, c, d, a ], see first is the same as last.\n // segments - the number of circumference segments to create\n // phiStart - the starting radian\n // phiLength - the radian (0 to 2PI) range of the lathed section\n // 2PI is a closed lathe, less than 2PI is a portion.\n\nfunction LatheBufferGeometry( points, segments, phiStart, phiLength ) {\n\n\tBufferGeometry.call( this );\n\n\tthis.type = 'LatheBufferGeometry';\n\n\tthis.parameters = {\n\t\tpoints: points,\n\t\tsegments: segments,\n\t\tphiStart: phiStart,\n\t\tphiLength: phiLength\n\t};\n\n\tsegments = Math.floor( segments ) || 12;\n\tphiStart = phiStart || 0;\n\tphiLength = phiLength || Math.PI * 2;\n\n\t// clamp phiLength so it's in range of [ 0, 2PI ]\n\tphiLength = _Math.clamp( phiLength, 0, Math.PI * 2 );\n\n\t// these are used to calculate buffer length\n\tvar vertexCount = ( segments + 1 ) * points.length;\n\tvar indexCount = segments * points.length * 2 * 3;\n\n\t// buffers\n\tvar indices = new BufferAttribute( new ( indexCount > 65535 ? Uint32Array : Uint16Array )( indexCount ) , 1 );\n\tvar vertices = new BufferAttribute( new Float32Array( vertexCount * 3 ), 3 );\n\tvar uvs = new BufferAttribute( new Float32Array( vertexCount * 2 ), 2 );\n\n\t// helper variables\n\tvar index = 0, indexOffset = 0, base;\n\tvar inverseSegments = 1.0 / segments;\n\tvar vertex = new Vector3();\n\tvar uv = new Vector2();\n\tvar i, j;\n\n\t// generate vertices and uvs\n\n\tfor ( i = 0; i <= segments; i ++ ) {\n\n\t\tvar phi = phiStart + i * inverseSegments * phiLength;\n\n\t\tvar sin = Math.sin( phi );\n\t\tvar cos = Math.cos( phi );\n\n\t\tfor ( j = 0; j <= ( points.length - 1 ); j ++ ) {\n\n\t\t\t// vertex\n\t\t\tvertex.x = points[ j ].x * sin;\n\t\t\tvertex.y = points[ j ].y;\n\t\t\tvertex.z = points[ j ].x * cos;\n\t\t\tvertices.setXYZ( index, vertex.x, vertex.y, vertex.z );\n\n\t\t\t// uv\n\t\t\tuv.x = i / segments;\n\t\t\tuv.y = j / ( points.length - 1 );\n\t\t\tuvs.setXY( index, uv.x, uv.y );\n\n\t\t\t// increase index\n\t\t\tindex ++;\n\n\t\t}\n\n\t}\n\n\t// generate indices\n\n\tfor ( i = 0; i < segments; i ++ ) {\n\n\t\tfor ( j = 0; j < ( points.length - 1 ); j ++ ) {\n\n\t\t\tbase = j + i * points.length;\n\n\t\t\t// indices\n\t\t\tvar a = base;\n\t\t\tvar b = base + points.length;\n\t\t\tvar c = base + points.length + 1;\n\t\t\tvar d = base + 1;\n\n\t\t\t// face one\n\t\t\tindices.setX( indexOffset, a ); indexOffset++;\n\t\t\tindices.setX( indexOffset, b ); indexOffset++;\n\t\t\tindices.setX( indexOffset, d ); indexOffset++;\n\n\t\t\t// face two\n\t\t\tindices.setX( indexOffset, b ); indexOffset++;\n\t\t\tindices.setX( indexOffset, c ); indexOffset++;\n\t\t\tindices.setX( indexOffset, d ); indexOffset++;\n\n\t\t}\n\n\t}\n\n\t// build geometry\n\n\tthis.setIndex( indices );\n\tthis.addAttribute( 'position', vertices );\n\tthis.addAttribute( 'uv', uvs );\n\n\t// generate normals\n\n\tthis.computeVertexNormals();\n\n\t// if the geometry is closed, we need to average the normals along the seam.\n\t// because the corresponding vertices are identical (but still have different UVs).\n\n\tif( phiLength === Math.PI * 2 ) {\n\n\t\tvar normals = this.attributes.normal.array;\n\t\tvar n1 = new Vector3();\n\t\tvar n2 = new Vector3();\n\t\tvar n = new Vector3();\n\n\t\t// this is the buffer offset for the last line of vertices\n\t\tbase = segments * points.length * 3;\n\n\t\tfor( i = 0, j = 0; i < points.length; i ++, j += 3 ) {\n\n\t\t\t// select the normal of the vertex in the first line\n\t\t\tn1.x = normals[ j + 0 ];\n\t\t\tn1.y = normals[ j + 1 ];\n\t\t\tn1.z = normals[ j + 2 ];\n\n\t\t\t// select the normal of the vertex in the last line\n\t\t\tn2.x = normals[ base + j + 0 ];\n\t\t\tn2.y = normals[ base + j + 1 ];\n\t\t\tn2.z = normals[ base + j + 2 ];\n\n\t\t\t// average normals\n\t\t\tn.addVectors( n1, n2 ).normalize();\n\n\t\t\t// assign the new values to both normals\n\t\t\tnormals[ j + 0 ] = normals[ base + j + 0 ] = n.x;\n\t\t\tnormals[ j + 1 ] = normals[ base + j + 1 ] = n.y;\n\t\t\tnormals[ j + 2 ] = normals[ base + j + 2 ] = n.z;\n\n\t\t} // next row\n\n\t}\n\n}\n\nLatheBufferGeometry.prototype = Object.create( BufferGeometry.prototype );\nLatheBufferGeometry.prototype.constructor = LatheBufferGeometry;\n\n\nexport { LatheBufferGeometry };\n","import { Geometry } from '../core/Geometry';\nimport { LatheBufferGeometry } from './LatheBufferGeometry';\n\n/**\n * @author astrodud / http://astrodud.isgreat.org/\n * @author zz85 / https://github.com/zz85\n * @author bhouston / http://clara.io\n */\n\n// points - to create a closed torus, one must use a set of points\n// like so: [ a, b, c, d, a ], see first is the same as last.\n// segments - the number of circumference segments to create\n// phiStart - the starting radian\n// phiLength - the radian (0 to 2PI) range of the lathed section\n// 2PI is a closed lathe, less than 2PI is a portion.\n\nfunction LatheGeometry( points, segments, phiStart, phiLength ) {\n\n\tGeometry.call( this );\n\n\tthis.type = 'LatheGeometry';\n\n\tthis.parameters = {\n\t\tpoints: points,\n\t\tsegments: segments,\n\t\tphiStart: phiStart,\n\t\tphiLength: phiLength\n\t};\n\n\tthis.fromBufferGeometry( new LatheBufferGeometry( points, segments, phiStart, phiLength ) );\n\tthis.mergeVertices();\n\n}\n\nLatheGeometry.prototype = Object.create( Geometry.prototype );\nLatheGeometry.prototype.constructor = LatheGeometry;\n\n\nexport { LatheGeometry };\n","import { BufferGeometry } from '../core/BufferGeometry';\nimport { Float32Attribute, Uint16Attribute, Uint32Attribute } from '../core/BufferAttribute';\nimport { ShapeUtils } from '../extras/ShapeUtils';\n\n/**\n * @author Mugen87 / https://github.com/Mugen87\n *\n * Creates a one-sided polygonal geometry from one or more shapes.\n *\n **/\n\nfunction ShapeBufferGeometry( shapes, curveSegments ) {\n\n\tBufferGeometry.call( this );\n\n\tthis.type = 'ShapeBufferGeometry';\n\n\tthis.parameters = {\n\t\tshapes: shapes,\n\t\tcurveSegments: curveSegments\n\t};\n\n\tcurveSegments = curveSegments || 12;\n\n\tvar vertices = [];\n\tvar normals = [];\n\tvar uvs = [];\n\tvar indices = [];\n\n\tvar groupStart = 0;\n\tvar groupCount = 0;\n\n\t// allow single and array values for \"shapes\" parameter\n\n\tif ( Array.isArray( shapes ) === false ) {\n\n\t\taddShape( shapes );\n\n\t} else {\n\n\t\tfor ( var i = 0; i < shapes.length; i++ ) {\n\n\t\t\taddShape( shapes[ i ] );\n\n\t\t\tthis.addGroup( groupStart, groupCount, i ); // enables MultiMaterial support\n\n\t\t\tgroupStart += groupCount;\n\t\t\tgroupCount = 0;\n\n\t\t}\n\n\t}\n\n\t// build geometry\n\n\tthis.setIndex( ( indices.length > 65535 ? Uint32Attribute : Uint16Attribute )( indices, 1 ) );\n\tthis.addAttribute( 'position', Float32Attribute( vertices, 3 ) );\n\tthis.addAttribute( 'normal', Float32Attribute( normals, 3 ) );\n\tthis.addAttribute( 'uv', Float32Attribute( uvs, 2 ) );\n\n\n\t// helper functions\n\n\tfunction addShape( shape ) {\n\n\t\tvar i, l, shapeHole;\n\n\t\tvar indexOffset = vertices.length / 3;\n\t\tvar points = shape.extractPoints( curveSegments );\n\n\t\tvar shapeVertices = points.shape;\n\t\tvar shapeHoles = points.holes;\n\n\t\t// check direction of vertices\n\n\t\tif ( ShapeUtils.isClockWise( shapeVertices ) === false ) {\n\n\t\t\tshapeVertices = shapeVertices.reverse();\n\n\t\t\t// also check if holes are in the opposite direction\n\n\t\t\tfor ( i = 0, l = shapeHoles.length; i < l; i ++ ) {\n\n\t\t\t\tshapeHole = shapeHoles[ i ];\n\n\t\t\t\tif ( ShapeUtils.isClockWise( shapeHole ) === true ) {\n\n\t\t\t\t\tshapeHoles[ i ] = shapeHole.reverse();\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t}\n\n\t\tvar faces = ShapeUtils.triangulateShape( shapeVertices, shapeHoles );\n\n\t\t// join vertices of inner and outer paths to a single array\n\n\t\tfor ( i = 0, l = shapeHoles.length; i < l; i ++ ) {\n\n\t\t\tshapeHole = shapeHoles[ i ];\n\t\t\tshapeVertices = shapeVertices.concat( shapeHole );\n\n\t\t}\n\n\t\t// vertices, normals, uvs\n\n\t\tfor ( i = 0, l = shapeVertices.length; i < l; i ++ ) {\n\n\t\t\tvar vertex = shapeVertices[ i ];\n\n\t\t\tvertices.push( vertex.x, vertex.y, 0 );\n\t\t\tnormals.push( 0, 0, 1 );\n\t\t\tuvs.push( vertex.x, vertex.y ); // world uvs\n\n\t\t}\n\n\t\t// incides\n\n\t\tfor ( i = 0, l = faces.length; i < l; i ++ ) {\n\n\t\t\tvar face = faces[ i ];\n\n\t\t\tvar a = face[ 0 ] + indexOffset;\n\t\t\tvar b = face[ 1 ] + indexOffset;\n\t\t\tvar c = face[ 2 ] + indexOffset;\n\n\t\t\tindices.push( a, b, c );\n\t\t\tgroupCount += 3;\n\n\t\t}\n\n\t}\n\n}\n\nShapeBufferGeometry.prototype = Object.create( BufferGeometry.prototype );\nShapeBufferGeometry.prototype.constructor = ShapeBufferGeometry;\n\n\nexport { ShapeBufferGeometry };\n","import { Geometry } from '../core/Geometry';\nimport { ShapeBufferGeometry } from './ShapeBufferGeometry';\n\n/**\n * @author jonobr1 / http://jonobr1.com\n *\n * Creates a one-sided polygonal geometry from a path shape.\n *\n **/\n\nfunction ShapeGeometry( shapes, curveSegments ) {\n\n\tGeometry.call( this );\n\n\tthis.type = 'ShapeGeometry';\n\n\tif ( typeof curveSegments === 'object' ) {\n\n\t\tconsole.warn( 'THREE.ShapeGeometry: Options parameter has been removed.' );\n\n\t\tcurveSegments = curveSegments.curveSegments;\n\n\t}\n\n\tthis.parameters = {\n\t\tshapes: shapes,\n\t\tcurveSegments: curveSegments\n\t};\n\n\tthis.fromBufferGeometry( new ShapeBufferGeometry( shapes, curveSegments ) );\n\tthis.mergeVertices();\n\n}\n\nShapeGeometry.prototype = Object.create( Geometry.prototype );\nShapeGeometry.prototype.constructor = ShapeGeometry;\n\n\nexport { ShapeGeometry };\n","import { BufferGeometry } from '../core/BufferGeometry';\nimport { BufferAttribute } from '../core/BufferAttribute';\nimport { Geometry } from '../core/Geometry';\nimport { _Math } from '../math/Math';\n\n/**\n * @author WestLangley / http://github.com/WestLangley\n */\n\nfunction EdgesGeometry( geometry, thresholdAngle ) {\n\n\tBufferGeometry.call( this );\n\n\tthresholdAngle = ( thresholdAngle !== undefined ) ? thresholdAngle : 1;\n\n\tvar thresholdDot = Math.cos( _Math.DEG2RAD * thresholdAngle );\n\n\tvar edge = [ 0, 0 ], hash = {};\n\n\tfunction sortFunction( a, b ) {\n\n\t\treturn a - b;\n\n\t}\n\n\tvar keys = [ 'a', 'b', 'c' ];\n\n\tvar geometry2;\n\n\tif ( (geometry && geometry.isBufferGeometry) ) {\n\n\t\tgeometry2 = new Geometry();\n\t\tgeometry2.fromBufferGeometry( geometry );\n\n\t} else {\n\n\t\tgeometry2 = geometry.clone();\n\n\t}\n\n\tgeometry2.mergeVertices();\n\tgeometry2.computeFaceNormals();\n\n\tvar vertices = geometry2.vertices;\n\tvar faces = geometry2.faces;\n\n\tfor ( var i = 0, l = faces.length; i < l; i ++ ) {\n\n\t\tvar face = faces[ i ];\n\n\t\tfor ( var j = 0; j < 3; j ++ ) {\n\n\t\t\tedge[ 0 ] = face[ keys[ j ] ];\n\t\t\tedge[ 1 ] = face[ keys[ ( j + 1 ) % 3 ] ];\n\t\t\tedge.sort( sortFunction );\n\n\t\t\tvar key = edge.toString();\n\n\t\t\tif ( hash[ key ] === undefined ) {\n\n\t\t\t\thash[ key ] = { vert1: edge[ 0 ], vert2: edge[ 1 ], face1: i, face2: undefined };\n\n\t\t\t} else {\n\n\t\t\t\thash[ key ].face2 = i;\n\n\t\t\t}\n\n\t\t}\n\n\t}\n\n\tvar coords = [];\n\n\tfor ( var key in hash ) {\n\n\t\tvar h = hash[ key ];\n\n\t\tif ( h.face2 === undefined || faces[ h.face1 ].normal.dot( faces[ h.face2 ].normal ) <= thresholdDot ) {\n\n\t\t\tvar vertex = vertices[ h.vert1 ];\n\t\t\tcoords.push( vertex.x );\n\t\t\tcoords.push( vertex.y );\n\t\t\tcoords.push( vertex.z );\n\n\t\t\tvertex = vertices[ h.vert2 ];\n\t\t\tcoords.push( vertex.x );\n\t\t\tcoords.push( vertex.y );\n\t\t\tcoords.push( vertex.z );\n\n\t\t}\n\n\t}\n\n\tthis.addAttribute( 'position', new BufferAttribute( new Float32Array( coords ), 3 ) );\n\n}\n\nEdgesGeometry.prototype = Object.create( BufferGeometry.prototype );\nEdgesGeometry.prototype.constructor = EdgesGeometry;\n\n\nexport { EdgesGeometry };\n","import { BufferGeometry } from '../core/BufferGeometry';\nimport { Vector3 } from '../math/Vector3';\nimport { Vector2 } from '../math/Vector2';\nimport { BufferAttribute } from '../core/BufferAttribute';\n\n/**\n * @author Mugen87 / https://github.com/Mugen87\n */\n\nfunction CylinderBufferGeometry( radiusTop, radiusBottom, height, radialSegments, heightSegments, openEnded, thetaStart, thetaLength ) {\n\n\tBufferGeometry.call( this );\n\n\tthis.type = 'CylinderBufferGeometry';\n\n\tthis.parameters = {\n\t\tradiusTop: radiusTop,\n\t\tradiusBottom: radiusBottom,\n\t\theight: height,\n\t\tradialSegments: radialSegments,\n\t\theightSegments: heightSegments,\n\t\topenEnded: openEnded,\n\t\tthetaStart: thetaStart,\n\t\tthetaLength: thetaLength\n\t};\n\n\tvar scope = this;\n\n\tradiusTop = radiusTop !== undefined ? radiusTop : 20;\n\tradiusBottom = radiusBottom !== undefined ? radiusBottom : 20;\n\theight = height !== undefined ? height : 100;\n\n\tradialSegments = Math.floor( radialSegments ) || 8;\n\theightSegments = Math.floor( heightSegments ) || 1;\n\n\topenEnded = openEnded !== undefined ? openEnded : false;\n\tthetaStart = thetaStart !== undefined ? thetaStart : 0.0;\n\tthetaLength = thetaLength !== undefined ? thetaLength : 2.0 * Math.PI;\n\n\t// used to calculate buffer length\n\n\tvar nbCap = 0;\n\n\tif ( openEnded === false ) {\n\n\t\tif ( radiusTop > 0 ) nbCap ++;\n\t\tif ( radiusBottom > 0 ) nbCap ++;\n\n\t}\n\n\tvar vertexCount = calculateVertexCount();\n\tvar indexCount = calculateIndexCount();\n\n\t// buffers\n\n\tvar indices = new BufferAttribute( new ( indexCount > 65535 ? Uint32Array : Uint16Array )( indexCount ), 1 );\n\tvar vertices = new BufferAttribute( new Float32Array( vertexCount * 3 ), 3 );\n\tvar normals = new BufferAttribute( new Float32Array( vertexCount * 3 ), 3 );\n\tvar uvs = new BufferAttribute( new Float32Array( vertexCount * 2 ), 2 );\n\n\t// helper variables\n\n\tvar index = 0,\n\t indexOffset = 0,\n\t indexArray = [],\n\t halfHeight = height / 2;\n\n\t// group variables\n\tvar groupStart = 0;\n\n\t// generate geometry\n\n\tgenerateTorso();\n\n\tif ( openEnded === false ) {\n\n\t\tif ( radiusTop > 0 ) generateCap( true );\n\t\tif ( radiusBottom > 0 ) generateCap( false );\n\n\t}\n\n\t// build geometry\n\n\tthis.setIndex( indices );\n\tthis.addAttribute( 'position', vertices );\n\tthis.addAttribute( 'normal', normals );\n\tthis.addAttribute( 'uv', uvs );\n\n\t// helper functions\n\n\tfunction calculateVertexCount() {\n\n\t\tvar count = ( radialSegments + 1 ) * ( heightSegments + 1 );\n\n\t\tif ( openEnded === false ) {\n\n\t\t\tcount += ( ( radialSegments + 1 ) * nbCap ) + ( radialSegments * nbCap );\n\n\t\t}\n\n\t\treturn count;\n\n\t}\n\n\tfunction calculateIndexCount() {\n\n\t\tvar count = radialSegments * heightSegments * 2 * 3;\n\n\t\tif ( openEnded === false ) {\n\n\t\t\tcount += radialSegments * nbCap * 3;\n\n\t\t}\n\n\t\treturn count;\n\n\t}\n\n\tfunction generateTorso() {\n\n\t\tvar x, y;\n\t\tvar normal = new Vector3();\n\t\tvar vertex = new Vector3();\n\n\t\tvar groupCount = 0;\n\n\t\t// this will be used to calculate the normal\n\t\tvar slope = ( radiusBottom - radiusTop ) / height;\n\n\t\t// generate vertices, normals and uvs\n\n\t\tfor ( y = 0; y <= heightSegments; y ++ ) {\n\n\t\t\tvar indexRow = [];\n\n\t\t\tvar v = y / heightSegments;\n\n\t\t\t// calculate the radius of the current row\n\t\t\tvar radius = v * ( radiusBottom - radiusTop ) + radiusTop;\n\n\t\t\tfor ( x = 0; x <= radialSegments; x ++ ) {\n\n\t\t\t\tvar u = x / radialSegments;\n\n\t\t\t\tvar theta = u * thetaLength + thetaStart;\n\n\t\t\t\tvar sinTheta = Math.sin( theta );\n\t\t\t\tvar cosTheta = Math.cos( theta );\n\n\t\t\t\t// vertex\n\t\t\t\tvertex.x = radius * sinTheta;\n\t\t\t\tvertex.y = - v * height + halfHeight;\n\t\t\t\tvertex.z = radius * cosTheta;\n\t\t\t\tvertices.setXYZ( index, vertex.x, vertex.y, vertex.z );\n\n\t\t\t\t// normal\n\t\t\t\tnormal.set( sinTheta, slope, cosTheta ).normalize();\n\t\t\t\tnormals.setXYZ( index, normal.x, normal.y, normal.z );\n\n\t\t\t\t// uv\n\t\t\t\tuvs.setXY( index, u, 1 - v );\n\n\t\t\t\t// save index of vertex in respective row\n\t\t\t\tindexRow.push( index );\n\n\t\t\t\t// increase index\n\t\t\t\tindex ++;\n\n\t\t\t}\n\n\t\t\t// now save vertices of the row in our index array\n\t\t\tindexArray.push( indexRow );\n\n\t\t}\n\n\t\t// generate indices\n\n\t\tfor ( x = 0; x < radialSegments; x ++ ) {\n\n\t\t\tfor ( y = 0; y < heightSegments; y ++ ) {\n\n\t\t\t\t// we use the index array to access the correct indices\n\t\t\t\tvar i1 = indexArray[ y ][ x ];\n\t\t\t\tvar i2 = indexArray[ y + 1 ][ x ];\n\t\t\t\tvar i3 = indexArray[ y + 1 ][ x + 1 ];\n\t\t\t\tvar i4 = indexArray[ y ][ x + 1 ];\n\n\t\t\t\t// face one\n\t\t\t\tindices.setX( indexOffset, i1 ); indexOffset ++;\n\t\t\t\tindices.setX( indexOffset, i2 ); indexOffset ++;\n\t\t\t\tindices.setX( indexOffset, i4 ); indexOffset ++;\n\n\t\t\t\t// face two\n\t\t\t\tindices.setX( indexOffset, i2 ); indexOffset ++;\n\t\t\t\tindices.setX( indexOffset, i3 ); indexOffset ++;\n\t\t\t\tindices.setX( indexOffset, i4 ); indexOffset ++;\n\n\t\t\t\t// update counters\n\t\t\t\tgroupCount += 6;\n\n\t\t\t}\n\n\t\t}\n\n\t\t// add a group to the geometry. this will ensure multi material support\n\t\tscope.addGroup( groupStart, groupCount, 0 );\n\n\t\t// calculate new start value for groups\n\t\tgroupStart += groupCount;\n\n\t}\n\n\tfunction generateCap( top ) {\n\n\t\tvar x, centerIndexStart, centerIndexEnd;\n\n\t\tvar uv = new Vector2();\n\t\tvar vertex = new Vector3();\n\n\t\tvar groupCount = 0;\n\n\t\tvar radius = ( top === true ) ? radiusTop : radiusBottom;\n\t\tvar sign = ( top === true ) ? 1 : - 1;\n\n\t\t// save the index of the first center vertex\n\t\tcenterIndexStart = index;\n\n\t\t// first we generate the center vertex data of the cap.\n\t\t// because the geometry needs one set of uvs per face,\n\t\t// we must generate a center vertex per face/segment\n\n\t\tfor ( x = 1; x <= radialSegments; x ++ ) {\n\n\t\t\t// vertex\n\t\t\tvertices.setXYZ( index, 0, halfHeight * sign, 0 );\n\n\t\t\t// normal\n\t\t\tnormals.setXYZ( index, 0, sign, 0 );\n\n\t\t\t// uv\n\t\t\tuv.x = 0.5;\n\t\t\tuv.y = 0.5;\n\n\t\t\tuvs.setXY( index, uv.x, uv.y );\n\n\t\t\t// increase index\n\t\t\tindex ++;\n\n\t\t}\n\n\t\t// save the index of the last center vertex\n\t\tcenterIndexEnd = index;\n\n\t\t// now we generate the surrounding vertices, normals and uvs\n\n\t\tfor ( x = 0; x <= radialSegments; x ++ ) {\n\n\t\t\tvar u = x / radialSegments;\n\t\t\tvar theta = u * thetaLength + thetaStart;\n\n\t\t\tvar cosTheta = Math.cos( theta );\n\t\t\tvar sinTheta = Math.sin( theta );\n\n\t\t\t// vertex\n\t\t\tvertex.x = radius * sinTheta;\n\t\t\tvertex.y = halfHeight * sign;\n\t\t\tvertex.z = radius * cosTheta;\n\t\t\tvertices.setXYZ( index, vertex.x, vertex.y, vertex.z );\n\n\t\t\t// normal\n\t\t\tnormals.setXYZ( index, 0, sign, 0 );\n\n\t\t\t// uv\n\t\t\tuv.x = ( cosTheta * 0.5 ) + 0.5;\n\t\t\tuv.y = ( sinTheta * 0.5 * sign ) + 0.5;\n\t\t\tuvs.setXY( index, uv.x, uv.y );\n\n\t\t\t// increase index\n\t\t\tindex ++;\n\n\t\t}\n\n\t\t// generate indices\n\n\t\tfor ( x = 0; x < radialSegments; x ++ ) {\n\n\t\t\tvar c = centerIndexStart + x;\n\t\t\tvar i = centerIndexEnd + x;\n\n\t\t\tif ( top === true ) {\n\n\t\t\t\t// face top\n\t\t\t\tindices.setX( indexOffset, i ); indexOffset ++;\n\t\t\t\tindices.setX( indexOffset, i + 1 ); indexOffset ++;\n\t\t\t\tindices.setX( indexOffset, c ); indexOffset ++;\n\n\t\t\t} else {\n\n\t\t\t\t// face bottom\n\t\t\t\tindices.setX( indexOffset, i + 1 ); indexOffset ++;\n\t\t\t\tindices.setX( indexOffset, i ); indexOffset ++;\n\t\t\t\tindices.setX( indexOffset, c ); indexOffset ++;\n\n\t\t\t}\n\n\t\t\t// update counters\n\t\t\tgroupCount += 3;\n\n\t\t}\n\n\t\t// add a group to the geometry. this will ensure multi material support\n\t\tscope.addGroup( groupStart, groupCount, top === true ? 1 : 2 );\n\n\t\t// calculate new start value for groups\n\t\tgroupStart += groupCount;\n\n\t}\n\n}\n\nCylinderBufferGeometry.prototype = Object.create( BufferGeometry.prototype );\nCylinderBufferGeometry.prototype.constructor = CylinderBufferGeometry;\n\n\nexport { CylinderBufferGeometry };\n","import { Geometry } from '../core/Geometry';\nimport { CylinderBufferGeometry } from './CylinderBufferGeometry';\n\n/**\n * @author mrdoob / http://mrdoob.com/\n */\n\nfunction CylinderGeometry( radiusTop, radiusBottom, height, radialSegments, heightSegments, openEnded, thetaStart, thetaLength ) {\n\n\tGeometry.call( this );\n\n\tthis.type = 'CylinderGeometry';\n\n\tthis.parameters = {\n\t\tradiusTop: radiusTop,\n\t\tradiusBottom: radiusBottom,\n\t\theight: height,\n\t\tradialSegments: radialSegments,\n\t\theightSegments: heightSegments,\n\t\topenEnded: openEnded,\n\t\tthetaStart: thetaStart,\n\t\tthetaLength: thetaLength\n\t};\n\n\tthis.fromBufferGeometry( new CylinderBufferGeometry( radiusTop, radiusBottom, height, radialSegments, heightSegments, openEnded, thetaStart, thetaLength ) );\n\tthis.mergeVertices();\n\n}\n\nCylinderGeometry.prototype = Object.create( Geometry.prototype );\nCylinderGeometry.prototype.constructor = CylinderGeometry;\n\n\nexport { CylinderGeometry };\n","import { CylinderGeometry } from './CylinderGeometry';\n\n/**\n * @author abelnation / http://github.com/abelnation\n */\n\nfunction ConeGeometry( radius, height, radialSegments, heightSegments, openEnded, thetaStart, thetaLength ) {\n\n\tCylinderGeometry.call( this, 0, radius, height, radialSegments, heightSegments, openEnded, thetaStart, thetaLength );\n\n\tthis.type = 'ConeGeometry';\n\n\tthis.parameters = {\n\t\tradius: radius,\n\t\theight: height,\n\t\tradialSegments: radialSegments,\n\t\theightSegments: heightSegments,\n\t\topenEnded: openEnded,\n\t\tthetaStart: thetaStart,\n\t\tthetaLength: thetaLength\n\t};\n\n}\n\nConeGeometry.prototype = Object.create( CylinderGeometry.prototype );\nConeGeometry.prototype.constructor = ConeGeometry;\n\n\nexport { ConeGeometry };\n","import { CylinderBufferGeometry } from './CylinderBufferGeometry';\n\n/**\n * @author: abelnation / http://github.com/abelnation\n */\n\nfunction ConeBufferGeometry( radius, height, radialSegments, heightSegments, openEnded, thetaStart, thetaLength ) {\n\n\tCylinderBufferGeometry.call( this, 0, radius, height, radialSegments, heightSegments, openEnded, thetaStart, thetaLength );\n\n\tthis.type = 'ConeBufferGeometry';\n\n\tthis.parameters = {\n\t\tradius: radius,\n\t\theight: height,\n\t\tradialSegments: radialSegments,\n\t\theightSegments: heightSegments,\n\t\topenEnded: openEnded,\n\t\tthetaStart: thetaStart,\n\t\tthetaLength: thetaLength\n\t};\n\n}\n\nConeBufferGeometry.prototype = Object.create( CylinderBufferGeometry.prototype );\nConeBufferGeometry.prototype.constructor = ConeBufferGeometry;\n\n\nexport { ConeBufferGeometry };\n","import { BufferGeometry } from '../core/BufferGeometry';\nimport { Vector3 } from '../math/Vector3';\nimport { Sphere } from '../math/Sphere';\nimport { BufferAttribute } from '../core/BufferAttribute';\n\n/**\n * @author benaadams / https://twitter.com/ben_a_adams\n */\n\nfunction CircleBufferGeometry( radius, segments, thetaStart, thetaLength ) {\n\n\tBufferGeometry.call( this );\n\n\tthis.type = 'CircleBufferGeometry';\n\n\tthis.parameters = {\n\t\tradius: radius,\n\t\tsegments: segments,\n\t\tthetaStart: thetaStart,\n\t\tthetaLength: thetaLength\n\t};\n\n\tradius = radius || 50;\n\tsegments = segments !== undefined ? Math.max( 3, segments ) : 8;\n\n\tthetaStart = thetaStart !== undefined ? thetaStart : 0;\n\tthetaLength = thetaLength !== undefined ? thetaLength : Math.PI * 2;\n\n\tvar vertices = segments + 2;\n\n\tvar positions = new Float32Array( vertices * 3 );\n\tvar normals = new Float32Array( vertices * 3 );\n\tvar uvs = new Float32Array( vertices * 2 );\n\n\t// center data is already zero, but need to set a few extras\n\tnormals[ 2 ] = 1.0;\n\tuvs[ 0 ] = 0.5;\n\tuvs[ 1 ] = 0.5;\n\n\tfor ( var s = 0, i = 3, ii = 2 ; s <= segments; s ++, i += 3, ii += 2 ) {\n\n\t\tvar segment = thetaStart + s / segments * thetaLength;\n\n\t\tpositions[ i ] = radius * Math.cos( segment );\n\t\tpositions[ i + 1 ] = radius * Math.sin( segment );\n\n\t\tnormals[ i + 2 ] = 1; // normal z\n\n\t\tuvs[ ii ] = ( positions[ i ] / radius + 1 ) / 2;\n\t\tuvs[ ii + 1 ] = ( positions[ i + 1 ] / radius + 1 ) / 2;\n\n\t}\n\n\tvar indices = [];\n\n\tfor ( var i = 1; i <= segments; i ++ ) {\n\n\t\tindices.push( i, i + 1, 0 );\n\n\t}\n\n\tthis.setIndex( new BufferAttribute( new Uint16Array( indices ), 1 ) );\n\tthis.addAttribute( 'position', new BufferAttribute( positions, 3 ) );\n\tthis.addAttribute( 'normal', new BufferAttribute( normals, 3 ) );\n\tthis.addAttribute( 'uv', new BufferAttribute( uvs, 2 ) );\n\n\tthis.boundingSphere = new Sphere( new Vector3(), radius );\n\n}\n\nCircleBufferGeometry.prototype = Object.create( BufferGeometry.prototype );\nCircleBufferGeometry.prototype.constructor = CircleBufferGeometry;\n\n\nexport { CircleBufferGeometry };\n","import { Geometry } from '../core/Geometry';\nimport { CircleBufferGeometry } from './CircleBufferGeometry';\n\n/**\n * @author hughes\n */\n\nfunction CircleGeometry( radius, segments, thetaStart, thetaLength ) {\n\n\tGeometry.call( this );\n\n\tthis.type = 'CircleGeometry';\n\n\tthis.parameters = {\n\t\tradius: radius,\n\t\tsegments: segments,\n\t\tthetaStart: thetaStart,\n\t\tthetaLength: thetaLength\n\t};\n\n\tthis.fromBufferGeometry( new CircleBufferGeometry( radius, segments, thetaStart, thetaLength ) );\n\n}\n\nCircleGeometry.prototype = Object.create( Geometry.prototype );\nCircleGeometry.prototype.constructor = CircleGeometry;\n\n\nexport { CircleGeometry };\n","import { Geometry } from '../core/Geometry';\nimport { BoxBufferGeometry } from './BoxBufferGeometry';\n\n/**\n * @author mrdoob / http://mrdoob.com/\n * based on http://papervision3d.googlecode.com/svn/trunk/as3/trunk/src/org/papervision3d/objects/primitives/Cube.as\n */\n\nfunction BoxGeometry( width, height, depth, widthSegments, heightSegments, depthSegments ) {\n\n\tGeometry.call( this );\n\n\tthis.type = 'BoxGeometry';\n\n\tthis.parameters = {\n\t\twidth: width,\n\t\theight: height,\n\t\tdepth: depth,\n\t\twidthSegments: widthSegments,\n\t\theightSegments: heightSegments,\n\t\tdepthSegments: depthSegments\n\t};\n\n\tthis.fromBufferGeometry( new BoxBufferGeometry( width, height, depth, widthSegments, heightSegments, depthSegments ) );\n\tthis.mergeVertices();\n\n}\n\nBoxGeometry.prototype = Object.create( Geometry.prototype );\nBoxGeometry.prototype.constructor = BoxGeometry;\n\n\nexport { BoxGeometry };\n","import { ShaderMaterial } from './ShaderMaterial';\nimport { ShaderChunk } from '../renderers/shaders/ShaderChunk';\nimport { UniformsLib } from '../renderers/shaders/UniformsLib';\nimport { UniformsUtils } from '../renderers/shaders/UniformsUtils';\n\n/**\n * @author mrdoob / http://mrdoob.com/\n */\n\nfunction ShadowMaterial() {\n\n\tShaderMaterial.call( this, {\n\t\tuniforms: UniformsUtils.merge( [\n\t\t\tUniformsLib[ \"lights\" ],\n\t\t\t{\n\t\t\t\topacity: { value: 1.0 }\n\t\t\t}\n\t\t] ),\n\t\tvertexShader: ShaderChunk[ 'shadow_vert' ],\n\t\tfragmentShader: ShaderChunk[ 'shadow_frag' ]\n\t} );\n\n\tthis.lights = true;\n\tthis.transparent = true;\n\n\tObject.defineProperties( this, {\n\t\topacity: {\n\t\t\tenumerable: true,\n\t\t\tget: function () {\n\t\t\t\treturn this.uniforms.opacity.value;\n\t\t\t},\n\t\t\tset: function ( value ) {\n\t\t\t\tthis.uniforms.opacity.value = value;\n\t\t\t}\n\t\t}\n\t} );\n\n}\n\nShadowMaterial.prototype = Object.create( ShaderMaterial.prototype );\nShadowMaterial.prototype.constructor = ShadowMaterial;\n\nShadowMaterial.prototype.isShadowMaterial = true;\n\n\nexport { ShadowMaterial };\n","import { ShaderMaterial } from './ShaderMaterial';\n\n/**\n * @author mrdoob / http://mrdoob.com/\n */\n\nfunction RawShaderMaterial( parameters ) {\n\n\tShaderMaterial.call( this, parameters );\n\n\tthis.type = 'RawShaderMaterial';\n\n}\n\nRawShaderMaterial.prototype = Object.create( ShaderMaterial.prototype );\nRawShaderMaterial.prototype.constructor = RawShaderMaterial;\n\nRawShaderMaterial.prototype.isRawShaderMaterial = true;\n\n\nexport { RawShaderMaterial };\n","import { _Math } from '../math/Math';\n\n/**\n * @author mrdoob / http://mrdoob.com/\n */\n\nfunction MultiMaterial( materials ) {\n\n\tthis.uuid = _Math.generateUUID();\n\n\tthis.type = 'MultiMaterial';\n\n\tthis.materials = materials instanceof Array ? materials : [];\n\n\tthis.visible = true;\n\n}\n\nMultiMaterial.prototype = {\n\n\tconstructor: MultiMaterial,\n\n\tisMultiMaterial: true,\n\n\ttoJSON: function ( meta ) {\n\n\t\tvar output = {\n\t\t\tmetadata: {\n\t\t\t\tversion: 4.2,\n\t\t\t\ttype: 'material',\n\t\t\t\tgenerator: 'MaterialExporter'\n\t\t\t},\n\t\t\tuuid: this.uuid,\n\t\t\ttype: this.type,\n\t\t\tmaterials: []\n\t\t};\n\n\t\tvar materials = this.materials;\n\n\t\tfor ( var i = 0, l = materials.length; i < l; i ++ ) {\n\n\t\t\tvar material = materials[ i ].toJSON( meta );\n\t\t\tdelete material.metadata;\n\n\t\t\toutput.materials.push( material );\n\n\t\t}\n\n\t\toutput.visible = this.visible;\n\n\t\treturn output;\n\n\t},\n\n\tclone: function () {\n\n\t\tvar material = new this.constructor();\n\n\t\tfor ( var i = 0; i < this.materials.length; i ++ ) {\n\n\t\t\tmaterial.materials.push( this.materials[ i ].clone() );\n\n\t\t}\n\n\t\tmaterial.visible = this.visible;\n\n\t\treturn material;\n\n\t}\n\n};\n\n\nexport { MultiMaterial };\n","import { Material } from './Material';\nimport { Vector2 } from '../math/Vector2';\nimport { Color } from '../math/Color';\n\n/**\n * @author WestLangley / http://github.com/WestLangley\n *\n * parameters = {\n * color: ,\n * roughness: ,\n * metalness: ,\n * opacity: ,\n *\n * map: new THREE.Texture( ),\n *\n * lightMap: new THREE.Texture( ),\n * lightMapIntensity: \n *\n * aoMap: new THREE.Texture( ),\n * aoMapIntensity: \n *\n * emissive: ,\n * emissiveIntensity: \n * emissiveMap: new THREE.Texture( ),\n *\n * bumpMap: new THREE.Texture( ),\n * bumpScale: ,\n *\n * normalMap: new THREE.Texture( ),\n * normalScale: ,\n *\n * displacementMap: new THREE.Texture( ),\n * displacementScale: ,\n * displacementBias: ,\n *\n * roughnessMap: new THREE.Texture( ),\n *\n * metalnessMap: new THREE.Texture( ),\n *\n * alphaMap: new THREE.Texture( ),\n *\n * envMap: new THREE.CubeTexture( [posx, negx, posy, negy, posz, negz] ),\n * envMapIntensity: \n *\n * refractionRatio: ,\n *\n * wireframe: ,\n * wireframeLinewidth: ,\n *\n * skinning: ,\n * morphTargets: ,\n * morphNormals: \n * }\n */\n\nfunction MeshStandardMaterial( parameters ) {\n\n\tMaterial.call( this );\n\n\tthis.defines = { 'STANDARD': '' };\n\n\tthis.type = 'MeshStandardMaterial';\n\n\tthis.color = new Color( 0xffffff ); // diffuse\n\tthis.roughness = 0.5;\n\tthis.metalness = 0.5;\n\n\tthis.map = null;\n\n\tthis.lightMap = null;\n\tthis.lightMapIntensity = 1.0;\n\n\tthis.aoMap = null;\n\tthis.aoMapIntensity = 1.0;\n\n\tthis.emissive = new Color( 0x000000 );\n\tthis.emissiveIntensity = 1.0;\n\tthis.emissiveMap = null;\n\n\tthis.bumpMap = null;\n\tthis.bumpScale = 1;\n\n\tthis.normalMap = null;\n\tthis.normalScale = new Vector2( 1, 1 );\n\n\tthis.displacementMap = null;\n\tthis.displacementScale = 1;\n\tthis.displacementBias = 0;\n\n\tthis.roughnessMap = null;\n\n\tthis.metalnessMap = null;\n\n\tthis.alphaMap = null;\n\n\tthis.envMap = null;\n\tthis.envMapIntensity = 1.0;\n\n\tthis.refractionRatio = 0.98;\n\n\tthis.wireframe = false;\n\tthis.wireframeLinewidth = 1;\n\tthis.wireframeLinecap = 'round';\n\tthis.wireframeLinejoin = 'round';\n\n\tthis.skinning = false;\n\tthis.morphTargets = false;\n\tthis.morphNormals = false;\n\n\tthis.setValues( parameters );\n\n}\n\nMeshStandardMaterial.prototype = Object.create( Material.prototype );\nMeshStandardMaterial.prototype.constructor = MeshStandardMaterial;\n\nMeshStandardMaterial.prototype.isMeshStandardMaterial = true;\n\nMeshStandardMaterial.prototype.copy = function ( source ) {\n\n\tMaterial.prototype.copy.call( this, source );\n\n\tthis.defines = { 'STANDARD': '' };\n\n\tthis.color.copy( source.color );\n\tthis.roughness = source.roughness;\n\tthis.metalness = source.metalness;\n\n\tthis.map = source.map;\n\n\tthis.lightMap = source.lightMap;\n\tthis.lightMapIntensity = source.lightMapIntensity;\n\n\tthis.aoMap = source.aoMap;\n\tthis.aoMapIntensity = source.aoMapIntensity;\n\n\tthis.emissive.copy( source.emissive );\n\tthis.emissiveMap = source.emissiveMap;\n\tthis.emissiveIntensity = source.emissiveIntensity;\n\n\tthis.bumpMap = source.bumpMap;\n\tthis.bumpScale = source.bumpScale;\n\n\tthis.normalMap = source.normalMap;\n\tthis.normalScale.copy( source.normalScale );\n\n\tthis.displacementMap = source.displacementMap;\n\tthis.displacementScale = source.displacementScale;\n\tthis.displacementBias = source.displacementBias;\n\n\tthis.roughnessMap = source.roughnessMap;\n\n\tthis.metalnessMap = source.metalnessMap;\n\n\tthis.alphaMap = source.alphaMap;\n\n\tthis.envMap = source.envMap;\n\tthis.envMapIntensity = source.envMapIntensity;\n\n\tthis.refractionRatio = source.refractionRatio;\n\n\tthis.wireframe = source.wireframe;\n\tthis.wireframeLinewidth = source.wireframeLinewidth;\n\tthis.wireframeLinecap = source.wireframeLinecap;\n\tthis.wireframeLinejoin = source.wireframeLinejoin;\n\n\tthis.skinning = source.skinning;\n\tthis.morphTargets = source.morphTargets;\n\tthis.morphNormals = source.morphNormals;\n\n\treturn this;\n\n};\n\n\nexport { MeshStandardMaterial };\n","import { MeshStandardMaterial } from './MeshStandardMaterial';\n\n/**\n * @author WestLangley / http://github.com/WestLangley\n *\n * parameters = {\n * reflectivity: \n * }\n */\n\nfunction MeshPhysicalMaterial( parameters ) {\n\n\tMeshStandardMaterial.call( this );\n\n\tthis.defines = { 'PHYSICAL': '' };\n\n\tthis.type = 'MeshPhysicalMaterial';\n\n\tthis.reflectivity = 0.5; // maps to F0 = 0.04\n\n\tthis.clearCoat = 0.0;\n\tthis.clearCoatRoughness = 0.0;\n\n\tthis.setValues( parameters );\n\n}\n\nMeshPhysicalMaterial.prototype = Object.create( MeshStandardMaterial.prototype );\nMeshPhysicalMaterial.prototype.constructor = MeshPhysicalMaterial;\n\nMeshPhysicalMaterial.prototype.isMeshPhysicalMaterial = true;\n\nMeshPhysicalMaterial.prototype.copy = function ( source ) {\n\n\tMeshStandardMaterial.prototype.copy.call( this, source );\n\n\tthis.defines = { 'PHYSICAL': '' };\n\n\tthis.reflectivity = source.reflectivity;\n\n\tthis.clearCoat = source.clearCoat;\n\tthis.clearCoatRoughness = source.clearCoatRoughness;\n\n\treturn this;\n\n};\n\n\nexport { MeshPhysicalMaterial };\n","import { Material } from './Material';\nimport { MultiplyOperation } from '../constants';\nimport { Vector2 } from '../math/Vector2';\nimport { Color } from '../math/Color';\n\n/**\n * @author mrdoob / http://mrdoob.com/\n * @author alteredq / http://alteredqualia.com/\n *\n * parameters = {\n * color: ,\n * specular: ,\n * shininess: ,\n * opacity: ,\n *\n * map: new THREE.Texture( ),\n *\n * lightMap: new THREE.Texture( ),\n * lightMapIntensity: \n *\n * aoMap: new THREE.Texture( ),\n * aoMapIntensity: \n *\n * emissive: ,\n * emissiveIntensity: \n * emissiveMap: new THREE.Texture( ),\n *\n * bumpMap: new THREE.Texture( ),\n * bumpScale: ,\n *\n * normalMap: new THREE.Texture( ),\n * normalScale: ,\n *\n * displacementMap: new THREE.Texture( ),\n * displacementScale: ,\n * displacementBias: ,\n *\n * specularMap: new THREE.Texture( ),\n *\n * alphaMap: new THREE.Texture( ),\n *\n * envMap: new THREE.TextureCube( [posx, negx, posy, negy, posz, negz] ),\n * combine: THREE.Multiply,\n * reflectivity: ,\n * refractionRatio: ,\n *\n * wireframe: ,\n * wireframeLinewidth: ,\n *\n * skinning: ,\n * morphTargets: ,\n * morphNormals: \n * }\n */\n\nfunction MeshPhongMaterial( parameters ) {\n\n\tMaterial.call( this );\n\n\tthis.type = 'MeshPhongMaterial';\n\n\tthis.color = new Color( 0xffffff ); // diffuse\n\tthis.specular = new Color( 0x111111 );\n\tthis.shininess = 30;\n\n\tthis.map = null;\n\n\tthis.lightMap = null;\n\tthis.lightMapIntensity = 1.0;\n\n\tthis.aoMap = null;\n\tthis.aoMapIntensity = 1.0;\n\n\tthis.emissive = new Color( 0x000000 );\n\tthis.emissiveIntensity = 1.0;\n\tthis.emissiveMap = null;\n\n\tthis.bumpMap = null;\n\tthis.bumpScale = 1;\n\n\tthis.normalMap = null;\n\tthis.normalScale = new Vector2( 1, 1 );\n\n\tthis.displacementMap = null;\n\tthis.displacementScale = 1;\n\tthis.displacementBias = 0;\n\n\tthis.specularMap = null;\n\n\tthis.alphaMap = null;\n\n\tthis.envMap = null;\n\tthis.combine = MultiplyOperation;\n\tthis.reflectivity = 1;\n\tthis.refractionRatio = 0.98;\n\n\tthis.wireframe = false;\n\tthis.wireframeLinewidth = 1;\n\tthis.wireframeLinecap = 'round';\n\tthis.wireframeLinejoin = 'round';\n\n\tthis.skinning = false;\n\tthis.morphTargets = false;\n\tthis.morphNormals = false;\n\n\tthis.setValues( parameters );\n\n}\n\nMeshPhongMaterial.prototype = Object.create( Material.prototype );\nMeshPhongMaterial.prototype.constructor = MeshPhongMaterial;\n\nMeshPhongMaterial.prototype.isMeshPhongMaterial = true;\n\nMeshPhongMaterial.prototype.copy = function ( source ) {\n\n\tMaterial.prototype.copy.call( this, source );\n\n\tthis.color.copy( source.color );\n\tthis.specular.copy( source.specular );\n\tthis.shininess = source.shininess;\n\n\tthis.map = source.map;\n\n\tthis.lightMap = source.lightMap;\n\tthis.lightMapIntensity = source.lightMapIntensity;\n\n\tthis.aoMap = source.aoMap;\n\tthis.aoMapIntensity = source.aoMapIntensity;\n\n\tthis.emissive.copy( source.emissive );\n\tthis.emissiveMap = source.emissiveMap;\n\tthis.emissiveIntensity = source.emissiveIntensity;\n\n\tthis.bumpMap = source.bumpMap;\n\tthis.bumpScale = source.bumpScale;\n\n\tthis.normalMap = source.normalMap;\n\tthis.normalScale.copy( source.normalScale );\n\n\tthis.displacementMap = source.displacementMap;\n\tthis.displacementScale = source.displacementScale;\n\tthis.displacementBias = source.displacementBias;\n\n\tthis.specularMap = source.specularMap;\n\n\tthis.alphaMap = source.alphaMap;\n\n\tthis.envMap = source.envMap;\n\tthis.combine = source.combine;\n\tthis.reflectivity = source.reflectivity;\n\tthis.refractionRatio = source.refractionRatio;\n\n\tthis.wireframe = source.wireframe;\n\tthis.wireframeLinewidth = source.wireframeLinewidth;\n\tthis.wireframeLinecap = source.wireframeLinecap;\n\tthis.wireframeLinejoin = source.wireframeLinejoin;\n\n\tthis.skinning = source.skinning;\n\tthis.morphTargets = source.morphTargets;\n\tthis.morphNormals = source.morphNormals;\n\n\treturn this;\n\n};\n\n\nexport { MeshPhongMaterial };\n","import { Material } from './Material';\n\n/**\n * @author mrdoob / http://mrdoob.com/\n *\n * parameters = {\n * opacity: ,\n *\n * wireframe: ,\n * wireframeLinewidth: \n * }\n */\n\nfunction MeshNormalMaterial( parameters ) {\n\n\tMaterial.call( this, parameters );\n\n\tthis.type = 'MeshNormalMaterial';\n\n\tthis.wireframe = false;\n\tthis.wireframeLinewidth = 1;\n\n\tthis.fog = false;\n\tthis.lights = false;\n\tthis.morphTargets = false;\n\n\tthis.setValues( parameters );\n\n}\n\nMeshNormalMaterial.prototype = Object.create( Material.prototype );\nMeshNormalMaterial.prototype.constructor = MeshNormalMaterial;\n\nMeshNormalMaterial.prototype.isMeshNormalMaterial = true;\n\nMeshNormalMaterial.prototype.copy = function ( source ) {\n\n\tMaterial.prototype.copy.call( this, source );\n\n\tthis.wireframe = source.wireframe;\n\tthis.wireframeLinewidth = source.wireframeLinewidth;\n\n\treturn this;\n\n};\n\n\nexport { MeshNormalMaterial };\n","import { Material } from './Material';\nimport { MultiplyOperation } from '../constants';\nimport { Color } from '../math/Color';\n\n/**\n * @author mrdoob / http://mrdoob.com/\n * @author alteredq / http://alteredqualia.com/\n *\n * parameters = {\n * color: ,\n * opacity: ,\n *\n * map: new THREE.Texture( ),\n *\n * lightMap: new THREE.Texture( ),\n * lightMapIntensity: \n *\n * aoMap: new THREE.Texture( ),\n * aoMapIntensity: \n *\n * emissive: ,\n * emissiveIntensity: \n * emissiveMap: new THREE.Texture( ),\n *\n * specularMap: new THREE.Texture( ),\n *\n * alphaMap: new THREE.Texture( ),\n *\n * envMap: new THREE.TextureCube( [posx, negx, posy, negy, posz, negz] ),\n * combine: THREE.Multiply,\n * reflectivity: ,\n * refractionRatio: ,\n *\n * wireframe: ,\n * wireframeLinewidth: ,\n *\n * skinning: ,\n * morphTargets: ,\n * morphNormals: \n * }\n */\n\nfunction MeshLambertMaterial( parameters ) {\n\n\tMaterial.call( this );\n\n\tthis.type = 'MeshLambertMaterial';\n\n\tthis.color = new Color( 0xffffff ); // diffuse\n\n\tthis.map = null;\n\n\tthis.lightMap = null;\n\tthis.lightMapIntensity = 1.0;\n\n\tthis.aoMap = null;\n\tthis.aoMapIntensity = 1.0;\n\n\tthis.emissive = new Color( 0x000000 );\n\tthis.emissiveIntensity = 1.0;\n\tthis.emissiveMap = null;\n\n\tthis.specularMap = null;\n\n\tthis.alphaMap = null;\n\n\tthis.envMap = null;\n\tthis.combine = MultiplyOperation;\n\tthis.reflectivity = 1;\n\tthis.refractionRatio = 0.98;\n\n\tthis.wireframe = false;\n\tthis.wireframeLinewidth = 1;\n\tthis.wireframeLinecap = 'round';\n\tthis.wireframeLinejoin = 'round';\n\n\tthis.skinning = false;\n\tthis.morphTargets = false;\n\tthis.morphNormals = false;\n\n\tthis.setValues( parameters );\n\n}\n\nMeshLambertMaterial.prototype = Object.create( Material.prototype );\nMeshLambertMaterial.prototype.constructor = MeshLambertMaterial;\n\nMeshLambertMaterial.prototype.isMeshLambertMaterial = true;\n\nMeshLambertMaterial.prototype.copy = function ( source ) {\n\n\tMaterial.prototype.copy.call( this, source );\n\n\tthis.color.copy( source.color );\n\n\tthis.map = source.map;\n\n\tthis.lightMap = source.lightMap;\n\tthis.lightMapIntensity = source.lightMapIntensity;\n\n\tthis.aoMap = source.aoMap;\n\tthis.aoMapIntensity = source.aoMapIntensity;\n\n\tthis.emissive.copy( source.emissive );\n\tthis.emissiveMap = source.emissiveMap;\n\tthis.emissiveIntensity = source.emissiveIntensity;\n\n\tthis.specularMap = source.specularMap;\n\n\tthis.alphaMap = source.alphaMap;\n\n\tthis.envMap = source.envMap;\n\tthis.combine = source.combine;\n\tthis.reflectivity = source.reflectivity;\n\tthis.refractionRatio = source.refractionRatio;\n\n\tthis.wireframe = source.wireframe;\n\tthis.wireframeLinewidth = source.wireframeLinewidth;\n\tthis.wireframeLinecap = source.wireframeLinecap;\n\tthis.wireframeLinejoin = source.wireframeLinejoin;\n\n\tthis.skinning = source.skinning;\n\tthis.morphTargets = source.morphTargets;\n\tthis.morphNormals = source.morphNormals;\n\n\treturn this;\n\n};\n\n\nexport { MeshLambertMaterial };\n","import { Material } from './Material';\nimport { Color } from '../math/Color';\n\n/**\n * @author alteredq / http://alteredqualia.com/\n *\n * parameters = {\n * color: ,\n * opacity: ,\n *\n * linewidth: ,\n *\n * scale: ,\n * dashSize: ,\n * gapSize: \n * }\n */\n\nfunction LineDashedMaterial( parameters ) {\n\n\tMaterial.call( this );\n\n\tthis.type = 'LineDashedMaterial';\n\n\tthis.color = new Color( 0xffffff );\n\n\tthis.linewidth = 1;\n\n\tthis.scale = 1;\n\tthis.dashSize = 3;\n\tthis.gapSize = 1;\n\n\tthis.lights = false;\n\n\tthis.setValues( parameters );\n\n}\n\nLineDashedMaterial.prototype = Object.create( Material.prototype );\nLineDashedMaterial.prototype.constructor = LineDashedMaterial;\n\nLineDashedMaterial.prototype.isLineDashedMaterial = true;\n\nLineDashedMaterial.prototype.copy = function ( source ) {\n\n\tMaterial.prototype.copy.call( this, source );\n\n\tthis.color.copy( source.color );\n\n\tthis.linewidth = source.linewidth;\n\n\tthis.scale = source.scale;\n\tthis.dashSize = source.dashSize;\n\tthis.gapSize = source.gapSize;\n\n\treturn this;\n\n};\n\n\nexport { LineDashedMaterial };\n","/**\n * @author mrdoob / http://mrdoob.com/\n */\n\nvar Cache = {\n\n\tenabled: false,\n\n\tfiles: {},\n\n\tadd: function ( key, file ) {\n\n\t\tif ( this.enabled === false ) return;\n\n\t\t// console.log( 'THREE.Cache', 'Adding key:', key );\n\n\t\tthis.files[ key ] = file;\n\n\t},\n\n\tget: function ( key ) {\n\n\t\tif ( this.enabled === false ) return;\n\n\t\t// console.log( 'THREE.Cache', 'Checking key:', key );\n\n\t\treturn this.files[ key ];\n\n\t},\n\n\tremove: function ( key ) {\n\n\t\tdelete this.files[ key ];\n\n\t},\n\n\tclear: function () {\n\n\t\tthis.files = {};\n\n\t}\n\n};\n\n\nexport { Cache };\n","/**\n * @author mrdoob / http://mrdoob.com/\n */\n\nfunction LoadingManager( onLoad, onProgress, onError ) {\n\n\tvar scope = this;\n\n\tvar isLoading = false, itemsLoaded = 0, itemsTotal = 0;\n\n\tthis.onStart = undefined;\n\tthis.onLoad = onLoad;\n\tthis.onProgress = onProgress;\n\tthis.onError = onError;\n\n\tthis.itemStart = function ( url ) {\n\n\t\titemsTotal ++;\n\n\t\tif ( isLoading === false ) {\n\n\t\t\tif ( scope.onStart !== undefined ) {\n\n\t\t\t\tscope.onStart( url, itemsLoaded, itemsTotal );\n\n\t\t\t}\n\n\t\t}\n\n\t\tisLoading = true;\n\n\t};\n\n\tthis.itemEnd = function ( url ) {\n\n\t\titemsLoaded ++;\n\n\t\tif ( scope.onProgress !== undefined ) {\n\n\t\t\tscope.onProgress( url, itemsLoaded, itemsTotal );\n\n\t\t}\n\n\t\tif ( itemsLoaded === itemsTotal ) {\n\n\t\t\tisLoading = false;\n\n\t\t\tif ( scope.onLoad !== undefined ) {\n\n\t\t\t\tscope.onLoad();\n\n\t\t\t}\n\n\t\t}\n\n\t};\n\n\tthis.itemError = function ( url ) {\n\n\t\tif ( scope.onError !== undefined ) {\n\n\t\t\tscope.onError( url );\n\n\t\t}\n\n\t};\n\n}\n\nvar DefaultLoadingManager = new LoadingManager();\n\n\nexport { DefaultLoadingManager, LoadingManager };\n","/**\n * @author mrdoob / http://mrdoob.com/\n */\n\nimport { Cache } from './Cache';\nimport { DefaultLoadingManager } from './LoadingManager';\n\nfunction FileLoader( manager ) {\n\n\tthis.manager = ( manager !== undefined ) ? manager : DefaultLoadingManager;\n\n}\n\nObject.assign( FileLoader.prototype, {\n\n\tload: function ( url, onLoad, onProgress, onError ) {\n\n\t\tif ( url === undefined ) url = '';\n\n\t\tif ( this.path !== undefined ) url = this.path + url;\n\n\t\tvar scope = this;\n\n\t\tvar cached = Cache.get( url );\n\n\t\tif ( cached !== undefined ) {\n\n\t\t\tscope.manager.itemStart( url );\n\n\t\t\tsetTimeout( function () {\n\n\t\t\t\tif ( onLoad ) onLoad( cached );\n\n\t\t\t\tscope.manager.itemEnd( url );\n\n\t\t\t}, 0 );\n\n\t\t\treturn cached;\n\n\t\t}\n\n\t\t// Check for data: URI\n\t\tvar dataUriRegex = /^data:(.*?)(;base64)?,(.*)$/;\n\t\tvar dataUriRegexResult = url.match( dataUriRegex );\n\n\t\t// Safari can not handle Data URIs through XMLHttpRequest so process manually\n\t\tif ( dataUriRegexResult ) {\n\n\t\t\tvar mimeType = dataUriRegexResult[1];\n\t\t\tvar isBase64 = !!dataUriRegexResult[2];\n\t\t\tvar data = dataUriRegexResult[3];\n\n\t\t\tdata = window.decodeURIComponent(data);\n\n\t\t\tif( isBase64 ) {\n\t\t\t\tdata = window.atob(data);\n\t\t\t}\n\n\t\t\ttry {\n\n\t\t\t\tvar response;\n\t\t\t\tvar responseType = ( this.responseType || '' ).toLowerCase();\n\n\t\t\t\tswitch ( responseType ) {\n\n\t\t\t\t\tcase 'arraybuffer':\n\t\t\t\t\tcase 'blob':\n\n\t\t\t\t\t \tresponse = new ArrayBuffer( data.length );\n\t\t\t\t\t\tvar view = new Uint8Array( response );\n\t\t\t\t\t\tfor ( var i = 0; i < data.length; i ++ ) {\n\n\t\t\t\t\t\t\t\tview[ i ] = data.charCodeAt( i );\n\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\tif ( responseType === 'blob' ) {\n\n\t\t\t\t\t\t\tresponse = new Blob( [ response ], { \"type\" : mimeType } );\n\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\tbreak;\n\n\t\t\t\t\tcase 'document':\n\n\t\t\t\t\t\tvar parser = new DOMParser();\n\t\t\t\t\t\tresponse = parser.parseFromString( data, mimeType );\n\n\t\t\t\t\t\tbreak;\n\n\t\t\t\t\tcase 'json':\n\n\t\t\t\t\t\tresponse = JSON.parse( data );\n\n\t\t\t\t\t\tbreak;\n\n\t\t\t\t\tdefault: // 'text' or other\n\n\t\t\t\t\t\tresponse = data;\n\n\t\t\t\t\t\tbreak;\n\n\t\t\t\t}\n\n\t\t\t\t// Wait for next browser tick\n\t\t\t\twindow.setTimeout( function() {\n\n\t\t\t\t\tif ( onLoad ) onLoad( response );\n\n\t\t\t\t\tscope.manager.itemEnd( url );\n\n\t\t\t\t}, 0);\n\n\t\t\t} catch ( error ) {\n\n\t\t\t\t// Wait for next browser tick\n\t\t\t\twindow.setTimeout( function() {\n\n\t\t\t\t\tif ( onError ) onError( error );\n\n\t\t\t\t\tscope.manager.itemError( url );\n\n\t\t\t\t}, 0);\n\n\t\t\t}\n\n\t\t} else {\n\n\t\t\tvar request = new XMLHttpRequest();\n\t\t\trequest.open( 'GET', url, true );\n\n\t\t\trequest.addEventListener( 'load', function ( event ) {\n\n\t\t\t\tvar response = event.target.response;\n\n\t\t\t\tCache.add( url, response );\n\n\t\t\t\tif ( this.status === 200 ) {\n\n\t\t\t\t\tif ( onLoad ) onLoad( response );\n\n\t\t\t\t\tscope.manager.itemEnd( url );\n\n\t\t\t\t} else if ( this.status === 0 ) {\n\n\t\t\t\t\t// Some browsers return HTTP Status 0 when using non-http protocol\n\t\t\t\t\t// e.g. 'file://' or 'data://'. Handle as success.\n\n\t\t\t\t\tconsole.warn( 'THREE.FileLoader: HTTP Status 0 received.' );\n\n\t\t\t\t\tif ( onLoad ) onLoad( response );\n\n\t\t\t\t\tscope.manager.itemEnd( url );\n\n\t\t\t\t} else {\n\n\t\t\t\t\tif ( onError ) onError( event );\n\n\t\t\t\t\tscope.manager.itemError( url );\n\n\t\t\t\t}\n\n\t\t\t}, false );\n\n\t\t\tif ( onProgress !== undefined ) {\n\n\t\t\t\trequest.addEventListener( 'progress', function ( event ) {\n\n\t\t\t\t\tonProgress( event );\n\n\t\t\t\t}, false );\n\n\t\t\t}\n\n\t\t\trequest.addEventListener( 'error', function ( event ) {\n\n\t\t\t\tif ( onError ) onError( event );\n\n\t\t\t\tscope.manager.itemError( url );\n\n\t\t\t}, false );\n\n\t\t\tif ( this.responseType !== undefined ) request.responseType = this.responseType;\n\t\t\tif ( this.withCredentials !== undefined ) request.withCredentials = this.withCredentials;\n\n\t\t\tif ( request.overrideMimeType ) request.overrideMimeType( this.mimeType !== undefined ? this.mimeType : 'text/plain' );\n\n\t\t\trequest.send( null );\n\n\t\t}\n\n\t\tscope.manager.itemStart( url );\n\n\t\treturn request;\n\n\t},\n\n\tsetPath: function ( value ) {\n\n\t\tthis.path = value;\n\t\treturn this;\n\n\t},\n\n\tsetResponseType: function ( value ) {\n\n\t\tthis.responseType = value;\n\t\treturn this;\n\n\t},\n\n\tsetWithCredentials: function ( value ) {\n\n\t\tthis.withCredentials = value;\n\t\treturn this;\n\n\t},\n\n\tsetMimeType: function ( value ) {\n\n\t\tthis.mimeType = value;\n\t\treturn this;\n\n\t}\n\n} );\n\n\nexport { FileLoader };\n","import { LinearFilter } from '../constants';\nimport { FileLoader } from './FileLoader';\nimport { CompressedTexture } from '../textures/CompressedTexture';\nimport { DefaultLoadingManager } from './LoadingManager';\n\n/**\n * @author mrdoob / http://mrdoob.com/\n *\n * Abstract Base class to block based textures loader (dds, pvr, ...)\n */\n\nfunction CompressedTextureLoader( manager ) {\n\n\tthis.manager = ( manager !== undefined ) ? manager : DefaultLoadingManager;\n\n\t// override in sub classes\n\tthis._parser = null;\n\n}\n\nObject.assign( CompressedTextureLoader.prototype, {\n\n\tload: function ( url, onLoad, onProgress, onError ) {\n\n\t\tvar scope = this;\n\n\t\tvar images = [];\n\n\t\tvar texture = new CompressedTexture();\n\t\ttexture.image = images;\n\n\t\tvar loader = new FileLoader( this.manager );\n\t\tloader.setPath( this.path );\n\t\tloader.setResponseType( 'arraybuffer' );\n\n\t\tfunction loadTexture( i ) {\n\n\t\t\tloader.load( url[ i ], function ( buffer ) {\n\n\t\t\t\tvar texDatas = scope._parser( buffer, true );\n\n\t\t\t\timages[ i ] = {\n\t\t\t\t\twidth: texDatas.width,\n\t\t\t\t\theight: texDatas.height,\n\t\t\t\t\tformat: texDatas.format,\n\t\t\t\t\tmipmaps: texDatas.mipmaps\n\t\t\t\t};\n\n\t\t\t\tloaded += 1;\n\n\t\t\t\tif ( loaded === 6 ) {\n\n\t\t\t\t\tif ( texDatas.mipmapCount === 1 )\n\t\t\t\t\t\ttexture.minFilter = LinearFilter;\n\n\t\t\t\t\ttexture.format = texDatas.format;\n\t\t\t\t\ttexture.needsUpdate = true;\n\n\t\t\t\t\tif ( onLoad ) onLoad( texture );\n\n\t\t\t\t}\n\n\t\t\t}, onProgress, onError );\n\n\t\t}\n\n\t\tif ( Array.isArray( url ) ) {\n\n\t\t\tvar loaded = 0;\n\n\t\t\tfor ( var i = 0, il = url.length; i < il; ++ i ) {\n\n\t\t\t\tloadTexture( i );\n\n\t\t\t}\n\n\t\t} else {\n\n\t\t\t// compressed cubemap texture stored in a single DDS file\n\n\t\t\tloader.load( url, function ( buffer ) {\n\n\t\t\t\tvar texDatas = scope._parser( buffer, true );\n\n\t\t\t\tif ( texDatas.isCubemap ) {\n\n\t\t\t\t\tvar faces = texDatas.mipmaps.length / texDatas.mipmapCount;\n\n\t\t\t\t\tfor ( var f = 0; f < faces; f ++ ) {\n\n\t\t\t\t\t\timages[ f ] = { mipmaps : [] };\n\n\t\t\t\t\t\tfor ( var i = 0; i < texDatas.mipmapCount; i ++ ) {\n\n\t\t\t\t\t\t\timages[ f ].mipmaps.push( texDatas.mipmaps[ f * texDatas.mipmapCount + i ] );\n\t\t\t\t\t\t\timages[ f ].format = texDatas.format;\n\t\t\t\t\t\t\timages[ f ].width = texDatas.width;\n\t\t\t\t\t\t\timages[ f ].height = texDatas.height;\n\n\t\t\t\t\t\t}\n\n\t\t\t\t\t}\n\n\t\t\t\t} else {\n\n\t\t\t\t\ttexture.image.width = texDatas.width;\n\t\t\t\t\ttexture.image.height = texDatas.height;\n\t\t\t\t\ttexture.mipmaps = texDatas.mipmaps;\n\n\t\t\t\t}\n\n\t\t\t\tif ( texDatas.mipmapCount === 1 ) {\n\n\t\t\t\t\ttexture.minFilter = LinearFilter;\n\n\t\t\t\t}\n\n\t\t\t\ttexture.format = texDatas.format;\n\t\t\t\ttexture.needsUpdate = true;\n\n\t\t\t\tif ( onLoad ) onLoad( texture );\n\n\t\t\t}, onProgress, onError );\n\n\t\t}\n\n\t\treturn texture;\n\n\t},\n\n\tsetPath: function ( value ) {\n\n\t\tthis.path = value;\n\t\treturn this;\n\n\t}\n\n} );\n\n\nexport { CompressedTextureLoader };\n","import { LinearFilter, LinearMipMapLinearFilter, ClampToEdgeWrapping } from '../constants';\nimport { FileLoader } from './FileLoader';\nimport { DataTexture } from '../textures/DataTexture';\nimport { DefaultLoadingManager } from './LoadingManager';\n\n/**\n * @author Nikos M. / https://github.com/foo123/\n *\n * Abstract Base class to load generic binary textures formats (rgbe, hdr, ...)\n */\n\nvar DataTextureLoader = BinaryTextureLoader;\nfunction BinaryTextureLoader( manager ) {\n\n\tthis.manager = ( manager !== undefined ) ? manager : DefaultLoadingManager;\n\n\t// override in sub classes\n\tthis._parser = null;\n\n}\n\nObject.assign( BinaryTextureLoader.prototype, {\n\n\tload: function ( url, onLoad, onProgress, onError ) {\n\n\t\tvar scope = this;\n\n\t\tvar texture = new DataTexture();\n\n\t\tvar loader = new FileLoader( this.manager );\n\t\tloader.setResponseType( 'arraybuffer' );\n\n\t\tloader.load( url, function ( buffer ) {\n\n\t\t\tvar texData = scope._parser( buffer );\n\n\t\t\tif ( ! texData ) return;\n\n\t\t\tif ( undefined !== texData.image ) {\n\n\t\t\t\ttexture.image = texData.image;\n\n\t\t\t} else if ( undefined !== texData.data ) {\n\n\t\t\t\ttexture.image.width = texData.width;\n\t\t\t\ttexture.image.height = texData.height;\n\t\t\t\ttexture.image.data = texData.data;\n\n\t\t\t}\n\n\t\t\ttexture.wrapS = undefined !== texData.wrapS ? texData.wrapS : ClampToEdgeWrapping;\n\t\t\ttexture.wrapT = undefined !== texData.wrapT ? texData.wrapT : ClampToEdgeWrapping;\n\n\t\t\ttexture.magFilter = undefined !== texData.magFilter ? texData.magFilter : LinearFilter;\n\t\t\ttexture.minFilter = undefined !== texData.minFilter ? texData.minFilter : LinearMipMapLinearFilter;\n\n\t\t\ttexture.anisotropy = undefined !== texData.anisotropy ? texData.anisotropy : 1;\n\n\t\t\tif ( undefined !== texData.format ) {\n\n\t\t\t\ttexture.format = texData.format;\n\n\t\t\t}\n\t\t\tif ( undefined !== texData.type ) {\n\n\t\t\t\ttexture.type = texData.type;\n\n\t\t\t}\n\n\t\t\tif ( undefined !== texData.mipmaps ) {\n\n\t\t\t\ttexture.mipmaps = texData.mipmaps;\n\n\t\t\t}\n\n\t\t\tif ( 1 === texData.mipmapCount ) {\n\n\t\t\t\ttexture.minFilter = LinearFilter;\n\n\t\t\t}\n\n\t\t\ttexture.needsUpdate = true;\n\n\t\t\tif ( onLoad ) onLoad( texture, texData );\n\n\t\t}, onProgress, onError );\n\n\n\t\treturn texture;\n\n\t}\n\n} );\n\n\nexport { BinaryTextureLoader, DataTextureLoader };\n","import { FileLoader } from './FileLoader';\nimport { DefaultLoadingManager } from './LoadingManager';\n\n/**\n * @author mrdoob / http://mrdoob.com/\n */\n\nfunction ImageLoader( manager ) {\n\n\tthis.manager = ( manager !== undefined ) ? manager : DefaultLoadingManager;\n\n}\n\nObject.assign( ImageLoader.prototype, {\n\n\tload: function ( url, onLoad, onProgress, onError ) {\n\n\t\tvar scope = this;\n\n\t\tvar image = document.createElementNS( 'http://www.w3.org/1999/xhtml', 'img' );\n\t\timage.onload = function () {\n\n\t\t\timage.onload = null;\n\n\t\t\tURL.revokeObjectURL( image.src );\n\n\t\t\tif ( onLoad ) onLoad( image );\n\n\t\t\tscope.manager.itemEnd( url );\n\n\t\t};\n\t\timage.onerror = onError;\n\n\t\tif ( url.indexOf( 'data:' ) === 0 ) {\n\n\t\t\timage.src = url;\n\n\t\t} else {\n\n\t\t\tvar loader = new FileLoader();\n\t\t\tloader.setPath( this.path );\n\t\t\tloader.setResponseType( 'blob' );\n\t\t\tloader.setWithCredentials( this.withCredentials );\n\t\t\tloader.load( url, function ( blob ) {\n\n\t\t\t\timage.src = URL.createObjectURL( blob );\n\n\t\t\t}, onProgress, onError );\n\n\t\t}\n\n\t\tscope.manager.itemStart( url );\n\n\t\treturn image;\n\n\t},\n\n\tsetCrossOrigin: function ( value ) {\n\n\t\tthis.crossOrigin = value;\n\t\treturn this;\n\n\t},\n\n\tsetWithCredentials: function ( value ) {\n\n\t\tthis.withCredentials = value;\n\t\treturn this;\n\n\t},\n\n\tsetPath: function ( value ) {\n\n\t\tthis.path = value;\n\t\treturn this;\n\n\t}\n\n} );\n\n\nexport { ImageLoader };\n","import { ImageLoader } from './ImageLoader';\nimport { CubeTexture } from '../textures/CubeTexture';\nimport { DefaultLoadingManager } from './LoadingManager';\n\n/**\n * @author mrdoob / http://mrdoob.com/\n */\n\nfunction CubeTextureLoader( manager ) {\n\n\tthis.manager = ( manager !== undefined ) ? manager : DefaultLoadingManager;\n\n}\n\nObject.assign( CubeTextureLoader.prototype, {\n\n\tload: function ( urls, onLoad, onProgress, onError ) {\n\n\t\tvar texture = new CubeTexture();\n\n\t\tvar loader = new ImageLoader( this.manager );\n\t\tloader.setCrossOrigin( this.crossOrigin );\n\t\tloader.setPath( this.path );\n\n\t\tvar loaded = 0;\n\n\t\tfunction loadTexture( i ) {\n\n\t\t\tloader.load( urls[ i ], function ( image ) {\n\n\t\t\t\ttexture.images[ i ] = image;\n\n\t\t\t\tloaded ++;\n\n\t\t\t\tif ( loaded === 6 ) {\n\n\t\t\t\t\ttexture.needsUpdate = true;\n\n\t\t\t\t\tif ( onLoad ) onLoad( texture );\n\n\t\t\t\t}\n\n\t\t\t}, undefined, onError );\n\n\t\t}\n\n\t\tfor ( var i = 0; i < urls.length; ++ i ) {\n\n\t\t\tloadTexture( i );\n\n\t\t}\n\n\t\treturn texture;\n\n\t},\n\n\tsetCrossOrigin: function ( value ) {\n\n\t\tthis.crossOrigin = value;\n\t\treturn this;\n\n\t},\n\n\tsetPath: function ( value ) {\n\n\t\tthis.path = value;\n\t\treturn this;\n\n\t}\n\n} );\n\n\nexport { CubeTextureLoader };\n","import { RGBAFormat, RGBFormat } from '../constants';\nimport { ImageLoader } from './ImageLoader';\nimport { Texture } from '../textures/Texture';\nimport { DefaultLoadingManager } from './LoadingManager';\n\n/**\n * @author mrdoob / http://mrdoob.com/\n */\n\nfunction TextureLoader( manager ) {\n\n\tthis.manager = ( manager !== undefined ) ? manager : DefaultLoadingManager;\n\n}\n\nObject.assign( TextureLoader.prototype, {\n\n\tload: function ( url, onLoad, onProgress, onError ) {\n\n\t\tvar texture = new Texture();\n\n\t\tvar loader = new ImageLoader( this.manager );\n\t\tloader.setCrossOrigin( this.crossOrigin );\n\t\tloader.setWithCredentials( this.withCredentials );\n\t\tloader.setPath( this.path );\n\t\tloader.load( url, function ( image ) {\n\n\t\t\t// JPEGs can't have an alpha channel, so memory can be saved by storing them as RGB.\n\t\t\tvar isJPEG = url.search( /\\.(jpg|jpeg)$/ ) > 0 || url.search( /^data\\:image\\/jpeg/ ) === 0;\n\n\t\t\ttexture.format = isJPEG ? RGBFormat : RGBAFormat;\n\t\t\ttexture.image = image;\n\t\t\ttexture.needsUpdate = true;\n\n\t\t\tif ( onLoad !== undefined ) {\n\n\t\t\t\tonLoad( texture );\n\n\t\t\t}\n\n\t\t}, onProgress, onError );\n\n\t\treturn texture;\n\n\t},\n\n\tsetCrossOrigin: function ( value ) {\n\n\t\tthis.crossOrigin = value;\n\t\treturn this;\n\n\t},\n\n\tsetWithCredentials: function ( value ) {\n\n\t\tthis.withCredentials = value;\n\t\treturn this;\n\n\t},\n\n\tsetPath: function ( value ) {\n\n\t\tthis.path = value;\n\t\treturn this;\n\n\t}\n\n\n\n} );\n\n\nexport { TextureLoader };\n","import { Object3D } from '../core/Object3D';\nimport { Color } from '../math/Color';\n\n/**\n * @author mrdoob / http://mrdoob.com/\n * @author alteredq / http://alteredqualia.com/\n */\n\nfunction Light( color, intensity ) {\n\n\tObject3D.call( this );\n\n\tthis.type = 'Light';\n\n\tthis.color = new Color( color );\n\tthis.intensity = intensity !== undefined ? intensity : 1;\n\n\tthis.receiveShadow = undefined;\n\n}\n\nLight.prototype = Object.assign( Object.create( Object3D.prototype ), {\n\n\tconstructor: Light,\n\n\tisLight: true,\n\n\tcopy: function ( source ) {\n\n\t\tObject3D.prototype.copy.call( this, source );\n\n\t\tthis.color.copy( source.color );\n\t\tthis.intensity = source.intensity;\n\n\t\treturn this;\n\n\t},\n\n\ttoJSON: function ( meta ) {\n\n\t\tvar data = Object3D.prototype.toJSON.call( this, meta );\n\n\t\tdata.object.color = this.color.getHex();\n\t\tdata.object.intensity = this.intensity;\n\n\t\tif ( this.groundColor !== undefined ) data.object.groundColor = this.groundColor.getHex();\n\n\t\tif ( this.distance !== undefined ) data.object.distance = this.distance;\n\t\tif ( this.angle !== undefined ) data.object.angle = this.angle;\n\t\tif ( this.decay !== undefined ) data.object.decay = this.decay;\n\t\tif ( this.penumbra !== undefined ) data.object.penumbra = this.penumbra;\n\n\t\tif ( this.shadow !== undefined ) data.object.shadow = this.shadow.toJSON();\n\n\t\treturn data;\n\n\t}\n\n} );\n\n\nexport { Light };\n","import { Light } from './Light';\nimport { Color } from '../math/Color';\nimport { Object3D } from '../core/Object3D';\n\n/**\n * @author alteredq / http://alteredqualia.com/\n */\n\nfunction HemisphereLight( skyColor, groundColor, intensity ) {\n\n\tLight.call( this, skyColor, intensity );\n\n\tthis.type = 'HemisphereLight';\n\n\tthis.castShadow = undefined;\n\n\tthis.position.copy( Object3D.DefaultUp );\n\tthis.updateMatrix();\n\n\tthis.groundColor = new Color( groundColor );\n\n}\n\nHemisphereLight.prototype = Object.assign( Object.create( Light.prototype ), {\n\n\tconstructor: HemisphereLight,\n\n\tisHemisphereLight: true,\n\n\tcopy: function ( source ) {\n\n\t\tLight.prototype.copy.call( this, source );\n\n\t\tthis.groundColor.copy( source.groundColor );\n\n\t\treturn this;\n\n\t}\n\n} );\n\n\nexport { HemisphereLight };\n","import { Matrix4 } from '../math/Matrix4';\nimport { Vector2 } from '../math/Vector2';\n\n/**\n * @author mrdoob / http://mrdoob.com/\n */\n\nfunction LightShadow( camera ) {\n\n\tthis.camera = camera;\n\n\tthis.bias = 0;\n\tthis.radius = 1;\n\n\tthis.mapSize = new Vector2( 512, 512 );\n\n\tthis.map = null;\n\tthis.matrix = new Matrix4();\n\n}\n\nObject.assign( LightShadow.prototype, {\n\n\tcopy: function ( source ) {\n\n\t\tthis.camera = source.camera.clone();\n\n\t\tthis.bias = source.bias;\n\t\tthis.radius = source.radius;\n\n\t\tthis.mapSize.copy( source.mapSize );\n\n\t\treturn this;\n\n\t},\n\n\tclone: function () {\n\n\t\treturn new this.constructor().copy( this );\n\n\t},\n\n\ttoJSON: function () {\n\n\t\tvar object = {};\n\n\t\tif ( this.bias !== 0 ) object.bias = this.bias;\n\t\tif ( this.radius !== 1 ) object.radius = this.radius;\n\t\tif ( this.mapSize.x !== 512 || this.mapSize.y !== 512 ) object.mapSize = this.mapSize.toArray();\n\n\t\tobject.camera = this.camera.toJSON( false ).object;\n\t\tdelete object.camera.matrix;\n\n\t\treturn object;\n\n\t}\n\n} );\n\n\nexport { LightShadow };\n","import { LightShadow } from './LightShadow';\nimport { _Math } from '../math/Math';\nimport { PerspectiveCamera } from '../cameras/PerspectiveCamera';\n\n/**\n * @author mrdoob / http://mrdoob.com/\n */\n\nfunction SpotLightShadow() {\n\n\tLightShadow.call( this, new PerspectiveCamera( 50, 1, 0.5, 500 ) );\n\n}\n\nSpotLightShadow.prototype = Object.assign( Object.create( LightShadow.prototype ), {\n\n\tconstructor: SpotLightShadow,\n\n\tisSpotLightShadow: true,\n\n\tupdate: function ( light ) {\n\n\t\tvar fov = _Math.RAD2DEG * 2 * light.angle;\n\t\tvar aspect = this.mapSize.width / this.mapSize.height;\n\t\tvar far = light.distance || 500;\n\n\t\tvar camera = this.camera;\n\n\t\tif ( fov !== camera.fov || aspect !== camera.aspect || far !== camera.far ) {\n\n\t\t\tcamera.fov = fov;\n\t\t\tcamera.aspect = aspect;\n\t\t\tcamera.far = far;\n\t\t\tcamera.updateProjectionMatrix();\n\n\t\t}\n\n\t}\n\n} );\n\n\nexport { SpotLightShadow };\n","import { Light } from './Light';\nimport { SpotLightShadow } from './SpotLightShadow';\nimport { Object3D } from '../core/Object3D';\n\n/**\n * @author alteredq / http://alteredqualia.com/\n */\n\nfunction SpotLight( color, intensity, distance, angle, penumbra, decay ) {\n\n\tLight.call( this, color, intensity );\n\n\tthis.type = 'SpotLight';\n\n\tthis.position.copy( Object3D.DefaultUp );\n\tthis.updateMatrix();\n\n\tthis.target = new Object3D();\n\n\tObject.defineProperty( this, 'power', {\n\t\tget: function () {\n\t\t\t// intensity = power per solid angle.\n\t\t\t// ref: equation (17) from http://www.frostbite.com/wp-content/uploads/2014/11/course_notes_moving_frostbite_to_pbr.pdf\n\t\t\treturn this.intensity * Math.PI;\n\t\t},\n\t\tset: function ( power ) {\n\t\t\t// intensity = power per solid angle.\n\t\t\t// ref: equation (17) from http://www.frostbite.com/wp-content/uploads/2014/11/course_notes_moving_frostbite_to_pbr.pdf\n\t\t\tthis.intensity = power / Math.PI;\n\t\t}\n\t} );\n\n\tthis.distance = ( distance !== undefined ) ? distance : 0;\n\tthis.angle = ( angle !== undefined ) ? angle : Math.PI / 3;\n\tthis.penumbra = ( penumbra !== undefined ) ? penumbra : 0;\n\tthis.decay = ( decay !== undefined ) ? decay : 1;\t// for physically correct lights, should be 2.\n\n\tthis.shadow = new SpotLightShadow();\n\n}\n\nSpotLight.prototype = Object.assign( Object.create( Light.prototype ), {\n\n\tconstructor: SpotLight,\n\n\tisSpotLight: true,\n\n\tcopy: function ( source ) {\n\n\t\tLight.prototype.copy.call( this, source );\n\n\t\tthis.distance = source.distance;\n\t\tthis.angle = source.angle;\n\t\tthis.penumbra = source.penumbra;\n\t\tthis.decay = source.decay;\n\n\t\tthis.target = source.target.clone();\n\n\t\tthis.shadow = source.shadow.clone();\n\n\t\treturn this;\n\n\t}\n\n} );\n\n\nexport { SpotLight };\n","import { Light } from './Light';\nimport { PerspectiveCamera } from '../cameras/PerspectiveCamera';\nimport { LightShadow } from './LightShadow';\n\n/**\n * @author mrdoob / http://mrdoob.com/\n */\n\n\nfunction PointLight( color, intensity, distance, decay ) {\n\n\tLight.call( this, color, intensity );\n\n\tthis.type = 'PointLight';\n\n\tObject.defineProperty( this, 'power', {\n\t\tget: function () {\n\t\t\t// intensity = power per solid angle.\n\t\t\t// ref: equation (15) from http://www.frostbite.com/wp-content/uploads/2014/11/course_notes_moving_frostbite_to_pbr.pdf\n\t\t\treturn this.intensity * 4 * Math.PI;\n\n\t\t},\n\t\tset: function ( power ) {\n\t\t\t// intensity = power per solid angle.\n\t\t\t// ref: equation (15) from http://www.frostbite.com/wp-content/uploads/2014/11/course_notes_moving_frostbite_to_pbr.pdf\n\t\t\tthis.intensity = power / ( 4 * Math.PI );\n\t\t}\n\t} );\n\n\tthis.distance = ( distance !== undefined ) ? distance : 0;\n\tthis.decay = ( decay !== undefined ) ? decay : 1;\t// for physically correct lights, should be 2.\n\n\tthis.shadow = new LightShadow( new PerspectiveCamera( 90, 1, 0.5, 500 ) );\n\n}\n\nPointLight.prototype = Object.assign( Object.create( Light.prototype ), {\n\n\tconstructor: PointLight,\n\n\tisPointLight: true,\n\n\tcopy: function ( source ) {\n\n\t\tLight.prototype.copy.call( this, source );\n\n\t\tthis.distance = source.distance;\n\t\tthis.decay = source.decay;\n\n\t\tthis.shadow = source.shadow.clone();\n\n\t\treturn this;\n\n\t}\n\n} );\n\n\nexport { PointLight };\n","import { LightShadow } from './LightShadow';\nimport { OrthographicCamera } from '../cameras/OrthographicCamera';\n\n/**\n * @author mrdoob / http://mrdoob.com/\n */\n\nfunction DirectionalLightShadow( light ) {\n\n\tLightShadow.call( this, new OrthographicCamera( - 5, 5, 5, - 5, 0.5, 500 ) );\n\n}\n\nDirectionalLightShadow.prototype = Object.assign( Object.create( LightShadow.prototype ), {\n\n\tconstructor: DirectionalLightShadow\n\n} );\n\n\nexport { DirectionalLightShadow };\n","import { Light } from './Light';\nimport { DirectionalLightShadow } from './DirectionalLightShadow';\nimport { Object3D } from '../core/Object3D';\n\n/**\n * @author mrdoob / http://mrdoob.com/\n * @author alteredq / http://alteredqualia.com/\n */\n\nfunction DirectionalLight( color, intensity ) {\n\n\tLight.call( this, color, intensity );\n\n\tthis.type = 'DirectionalLight';\n\n\tthis.position.copy( Object3D.DefaultUp );\n\tthis.updateMatrix();\n\n\tthis.target = new Object3D();\n\n\tthis.shadow = new DirectionalLightShadow();\n\n}\n\nDirectionalLight.prototype = Object.assign( Object.create( Light.prototype ), {\n\n\tconstructor: DirectionalLight,\n\n\tisDirectionalLight: true,\n\n\tcopy: function ( source ) {\n\n\t\tLight.prototype.copy.call( this, source );\n\n\t\tthis.target = source.target.clone();\n\n\t\tthis.shadow = source.shadow.clone();\n\n\t\treturn this;\n\n\t}\n\n} );\n\n\nexport { DirectionalLight };\n","import { Light } from './Light';\n\n/**\n * @author mrdoob / http://mrdoob.com/\n */\n\nfunction AmbientLight( color, intensity ) {\n\n\tLight.call( this, color, intensity );\n\n\tthis.type = 'AmbientLight';\n\n\tthis.castShadow = undefined;\n\n}\n\nAmbientLight.prototype = Object.assign( Object.create( Light.prototype ), {\n\n\tconstructor: AmbientLight,\n\n\tisAmbientLight: true,\n\n} );\n\n\nexport { AmbientLight };\n","/**\n * @author tschw\n * @author Ben Houston / http://clara.io/\n * @author David Sarno / http://lighthaus.us/\n */\n\nvar AnimationUtils = {\n\n\t// same as Array.prototype.slice, but also works on typed arrays\n\tarraySlice: function( array, from, to ) {\n\n\t\tif ( AnimationUtils.isTypedArray( array ) ) {\n\n\t\t\treturn new array.constructor( array.subarray( from, to ) );\n\n\t\t}\n\n\t\treturn array.slice( from, to );\n\n\t},\n\n\t// converts an array to a specific type\n\tconvertArray: function( array, type, forceClone ) {\n\n\t\tif ( ! array || // let 'undefined' and 'null' pass\n\t\t\t\t! forceClone && array.constructor === type ) return array;\n\n\t\tif ( typeof type.BYTES_PER_ELEMENT === 'number' ) {\n\n\t\t\treturn new type( array ); // create typed array\n\n\t\t}\n\n\t\treturn Array.prototype.slice.call( array ); // create Array\n\n\t},\n\n\tisTypedArray: function( object ) {\n\n\t\treturn ArrayBuffer.isView( object ) &&\n\t\t\t\t! ( object instanceof DataView );\n\n\t},\n\n\t// returns an array by which times and values can be sorted\n\tgetKeyframeOrder: function( times ) {\n\n\t\tfunction compareTime( i, j ) {\n\n\t\t\treturn times[ i ] - times[ j ];\n\n\t\t}\n\n\t\tvar n = times.length;\n\t\tvar result = new Array( n );\n\t\tfor ( var i = 0; i !== n; ++ i ) result[ i ] = i;\n\n\t\tresult.sort( compareTime );\n\n\t\treturn result;\n\n\t},\n\n\t// uses the array previously returned by 'getKeyframeOrder' to sort data\n\tsortedArray: function( values, stride, order ) {\n\n\t\tvar nValues = values.length;\n\t\tvar result = new values.constructor( nValues );\n\n\t\tfor ( var i = 0, dstOffset = 0; dstOffset !== nValues; ++ i ) {\n\n\t\t\tvar srcOffset = order[ i ] * stride;\n\n\t\t\tfor ( var j = 0; j !== stride; ++ j ) {\n\n\t\t\t\tresult[ dstOffset ++ ] = values[ srcOffset + j ];\n\n\t\t\t}\n\n\t\t}\n\n\t\treturn result;\n\n\t},\n\n\t// function for parsing AOS keyframe formats\n\tflattenJSON: function( jsonKeys, times, values, valuePropertyName ) {\n\n\t\tvar i = 1, key = jsonKeys[ 0 ];\n\n\t\twhile ( key !== undefined && key[ valuePropertyName ] === undefined ) {\n\n\t\t\tkey = jsonKeys[ i ++ ];\n\n\t\t}\n\n\t\tif ( key === undefined ) return; // no data\n\n\t\tvar value = key[ valuePropertyName ];\n\t\tif ( value === undefined ) return; // no data\n\n\t\tif ( Array.isArray( value ) ) {\n\n\t\t\tdo {\n\n\t\t\t\tvalue = key[ valuePropertyName ];\n\n\t\t\t\tif ( value !== undefined ) {\n\n\t\t\t\t\ttimes.push( key.time );\n\t\t\t\t\tvalues.push.apply( values, value ); // push all elements\n\n\t\t\t\t}\n\n\t\t\t\tkey = jsonKeys[ i ++ ];\n\n\t\t\t} while ( key !== undefined );\n\n\t\t} else if ( value.toArray !== undefined ) {\n\t\t\t// ...assume THREE.Math-ish\n\n\t\t\tdo {\n\n\t\t\t\tvalue = key[ valuePropertyName ];\n\n\t\t\t\tif ( value !== undefined ) {\n\n\t\t\t\t\ttimes.push( key.time );\n\t\t\t\t\tvalue.toArray( values, values.length );\n\n\t\t\t\t}\n\n\t\t\t\tkey = jsonKeys[ i ++ ];\n\n\t\t\t} while ( key !== undefined );\n\n\t\t} else {\n\t\t\t// otherwise push as-is\n\n\t\t\tdo {\n\n\t\t\t\tvalue = key[ valuePropertyName ];\n\n\t\t\t\tif ( value !== undefined ) {\n\n\t\t\t\t\ttimes.push( key.time );\n\t\t\t\t\tvalues.push( value );\n\n\t\t\t\t}\n\n\t\t\t\tkey = jsonKeys[ i ++ ];\n\n\t\t\t} while ( key !== undefined );\n\n\t\t}\n\n\t}\n\n};\n\n\nexport { AnimationUtils };\n","/**\n * Abstract base class of interpolants over parametric samples.\n *\n * The parameter domain is one dimensional, typically the time or a path\n * along a curve defined by the data.\n *\n * The sample values can have any dimensionality and derived classes may\n * apply special interpretations to the data.\n *\n * This class provides the interval seek in a Template Method, deferring\n * the actual interpolation to derived classes.\n *\n * Time complexity is O(1) for linear access crossing at most two points\n * and O(log N) for random access, where N is the number of positions.\n *\n * References:\n *\n * \t\thttp://www.oodesign.com/template-method-pattern.html\n *\n * @author tschw\n */\n\nfunction Interpolant(\n\t\tparameterPositions, sampleValues, sampleSize, resultBuffer ) {\n\n\tthis.parameterPositions = parameterPositions;\n\tthis._cachedIndex = 0;\n\n\tthis.resultBuffer = resultBuffer !== undefined ?\n\t\t\tresultBuffer : new sampleValues.constructor( sampleSize );\n\tthis.sampleValues = sampleValues;\n\tthis.valueSize = sampleSize;\n\n}\n\nInterpolant.prototype = {\n\n\tconstructor: Interpolant,\n\n\tevaluate: function( t ) {\n\n\t\tvar pp = this.parameterPositions,\n\t\t\ti1 = this._cachedIndex,\n\n\t\t\tt1 = pp[ i1 ],\n\t\t\tt0 = pp[ i1 - 1 ];\n\n\t\tvalidate_interval: {\n\n\t\t\tseek: {\n\n\t\t\t\tvar right;\n\n\t\t\t\tlinear_scan: {\n//- See http://jsperf.com/comparison-to-undefined/3\n//- slower code:\n//-\n//- \t\t\t\tif ( t >= t1 || t1 === undefined ) {\n\t\t\t\t\tforward_scan: if ( ! ( t < t1 ) ) {\n\n\t\t\t\t\t\tfor ( var giveUpAt = i1 + 2; ;) {\n\n\t\t\t\t\t\t\tif ( t1 === undefined ) {\n\n\t\t\t\t\t\t\t\tif ( t < t0 ) break forward_scan;\n\n\t\t\t\t\t\t\t\t// after end\n\n\t\t\t\t\t\t\t\ti1 = pp.length;\n\t\t\t\t\t\t\t\tthis._cachedIndex = i1;\n\t\t\t\t\t\t\t\treturn this.afterEnd_( i1 - 1, t, t0 );\n\n\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\tif ( i1 === giveUpAt ) break; // this loop\n\n\t\t\t\t\t\t\tt0 = t1;\n\t\t\t\t\t\t\tt1 = pp[ ++ i1 ];\n\n\t\t\t\t\t\t\tif ( t < t1 ) {\n\n\t\t\t\t\t\t\t\t// we have arrived at the sought interval\n\t\t\t\t\t\t\t\tbreak seek;\n\n\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\t// prepare binary search on the right side of the index\n\t\t\t\t\t\tright = pp.length;\n\t\t\t\t\t\tbreak linear_scan;\n\n\t\t\t\t\t}\n\n//- slower code:\n//-\t\t\t\t\tif ( t < t0 || t0 === undefined ) {\n\t\t\t\t\tif ( ! ( t >= t0 ) ) {\n\n\t\t\t\t\t\t// looping?\n\n\t\t\t\t\t\tvar t1global = pp[ 1 ];\n\n\t\t\t\t\t\tif ( t < t1global ) {\n\n\t\t\t\t\t\t\ti1 = 2; // + 1, using the scan for the details\n\t\t\t\t\t\t\tt0 = t1global;\n\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\t// linear reverse scan\n\n\t\t\t\t\t\tfor ( var giveUpAt = i1 - 2; ;) {\n\n\t\t\t\t\t\t\tif ( t0 === undefined ) {\n\n\t\t\t\t\t\t\t\t// before start\n\n\t\t\t\t\t\t\t\tthis._cachedIndex = 0;\n\t\t\t\t\t\t\t\treturn this.beforeStart_( 0, t, t1 );\n\n\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\tif ( i1 === giveUpAt ) break; // this loop\n\n\t\t\t\t\t\t\tt1 = t0;\n\t\t\t\t\t\t\tt0 = pp[ -- i1 - 1 ];\n\n\t\t\t\t\t\t\tif ( t >= t0 ) {\n\n\t\t\t\t\t\t\t\t// we have arrived at the sought interval\n\t\t\t\t\t\t\t\tbreak seek;\n\n\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\t// prepare binary search on the left side of the index\n\t\t\t\t\t\tright = i1;\n\t\t\t\t\t\ti1 = 0;\n\t\t\t\t\t\tbreak linear_scan;\n\n\t\t\t\t\t}\n\n\t\t\t\t\t// the interval is valid\n\n\t\t\t\t\tbreak validate_interval;\n\n\t\t\t\t} // linear scan\n\n\t\t\t\t// binary search\n\n\t\t\t\twhile ( i1 < right ) {\n\n\t\t\t\t\tvar mid = ( i1 + right ) >>> 1;\n\n\t\t\t\t\tif ( t < pp[ mid ] ) {\n\n\t\t\t\t\t\tright = mid;\n\n\t\t\t\t\t} else {\n\n\t\t\t\t\t\ti1 = mid + 1;\n\n\t\t\t\t\t}\n\n\t\t\t\t}\n\n\t\t\t\tt1 = pp[ i1 ];\n\t\t\t\tt0 = pp[ i1 - 1 ];\n\n\t\t\t\t// check boundary cases, again\n\n\t\t\t\tif ( t0 === undefined ) {\n\n\t\t\t\t\tthis._cachedIndex = 0;\n\t\t\t\t\treturn this.beforeStart_( 0, t, t1 );\n\n\t\t\t\t}\n\n\t\t\t\tif ( t1 === undefined ) {\n\n\t\t\t\t\ti1 = pp.length;\n\t\t\t\t\tthis._cachedIndex = i1;\n\t\t\t\t\treturn this.afterEnd_( i1 - 1, t0, t );\n\n\t\t\t\t}\n\n\t\t\t} // seek\n\n\t\t\tthis._cachedIndex = i1;\n\n\t\t\tthis.intervalChanged_( i1, t0, t1 );\n\n\t\t} // validate_interval\n\n\t\treturn this.interpolate_( i1, t0, t, t1 );\n\n\t},\n\n\tsettings: null, // optional, subclass-specific settings structure\n\t// Note: The indirection allows central control of many interpolants.\n\n\t// --- Protected interface\n\n\tDefaultSettings_: {},\n\n\tgetSettings_: function() {\n\n\t\treturn this.settings || this.DefaultSettings_;\n\n\t},\n\n\tcopySampleValue_: function( index ) {\n\n\t\t// copies a sample value to the result buffer\n\n\t\tvar result = this.resultBuffer,\n\t\t\tvalues = this.sampleValues,\n\t\t\tstride = this.valueSize,\n\t\t\toffset = index * stride;\n\n\t\tfor ( var i = 0; i !== stride; ++ i ) {\n\n\t\t\tresult[ i ] = values[ offset + i ];\n\n\t\t}\n\n\t\treturn result;\n\n\t},\n\n\t// Template methods for derived classes:\n\n\tinterpolate_: function( i1, t0, t, t1 ) {\n\n\t\tthrow new Error( \"call to abstract method\" );\n\t\t// implementations shall return this.resultBuffer\n\n\t},\n\n\tintervalChanged_: function( i1, t0, t1 ) {\n\n\t\t// empty\n\n\t}\n\n};\n\nObject.assign( Interpolant.prototype, {\n\n\tbeforeStart_: //( 0, t, t0 ), returns this.resultBuffer\n\t\tInterpolant.prototype.copySampleValue_,\n\n\tafterEnd_: //( N-1, tN-1, t ), returns this.resultBuffer\n\t\tInterpolant.prototype.copySampleValue_\n\n} );\n\n\nexport { Interpolant };\n","import { ZeroCurvatureEnding } from '../../constants';\nimport { Interpolant } from '../Interpolant';\nimport { WrapAroundEnding, ZeroSlopeEnding } from '../../constants';\n\n/**\n * Fast and simple cubic spline interpolant.\n *\n * It was derived from a Hermitian construction setting the first derivative\n * at each sample position to the linear slope between neighboring positions\n * over their parameter interval.\n *\n * @author tschw\n */\n\nfunction CubicInterpolant(\n\t\tparameterPositions, sampleValues, sampleSize, resultBuffer ) {\n\n\tInterpolant.call(\n\t\t\tthis, parameterPositions, sampleValues, sampleSize, resultBuffer );\n\n\tthis._weightPrev = -0;\n\tthis._offsetPrev = -0;\n\tthis._weightNext = -0;\n\tthis._offsetNext = -0;\n\n}\n\nCubicInterpolant.prototype =\n\t\tObject.assign( Object.create( Interpolant.prototype ), {\n\n\tconstructor: CubicInterpolant,\n\n\tDefaultSettings_: {\n\n\t\tendingStart: \tZeroCurvatureEnding,\n\t\tendingEnd:\t\tZeroCurvatureEnding\n\n\t},\n\n\tintervalChanged_: function( i1, t0, t1 ) {\n\n\t\tvar pp = this.parameterPositions,\n\t\t\tiPrev = i1 - 2,\n\t\t\tiNext = i1 + 1,\n\n\t\t\ttPrev = pp[ iPrev ],\n\t\t\ttNext = pp[ iNext ];\n\n\t\tif ( tPrev === undefined ) {\n\n\t\t\tswitch ( this.getSettings_().endingStart ) {\n\n\t\t\t\tcase ZeroSlopeEnding:\n\n\t\t\t\t\t// f'(t0) = 0\n\t\t\t\t\tiPrev = i1;\n\t\t\t\t\ttPrev = 2 * t0 - t1;\n\n\t\t\t\t\tbreak;\n\n\t\t\t\tcase WrapAroundEnding:\n\n\t\t\t\t\t// use the other end of the curve\n\t\t\t\t\tiPrev = pp.length - 2;\n\t\t\t\t\ttPrev = t0 + pp[ iPrev ] - pp[ iPrev + 1 ];\n\n\t\t\t\t\tbreak;\n\n\t\t\t\tdefault: // ZeroCurvatureEnding\n\n\t\t\t\t\t// f''(t0) = 0 a.k.a. Natural Spline\n\t\t\t\t\tiPrev = i1;\n\t\t\t\t\ttPrev = t1;\n\n\t\t\t}\n\n\t\t}\n\n\t\tif ( tNext === undefined ) {\n\n\t\t\tswitch ( this.getSettings_().endingEnd ) {\n\n\t\t\t\tcase ZeroSlopeEnding:\n\n\t\t\t\t\t// f'(tN) = 0\n\t\t\t\t\tiNext = i1;\n\t\t\t\t\ttNext = 2 * t1 - t0;\n\n\t\t\t\t\tbreak;\n\n\t\t\t\tcase WrapAroundEnding:\n\n\t\t\t\t\t// use the other end of the curve\n\t\t\t\t\tiNext = 1;\n\t\t\t\t\ttNext = t1 + pp[ 1 ] - pp[ 0 ];\n\n\t\t\t\t\tbreak;\n\n\t\t\t\tdefault: // ZeroCurvatureEnding\n\n\t\t\t\t\t// f''(tN) = 0, a.k.a. Natural Spline\n\t\t\t\t\tiNext = i1 - 1;\n\t\t\t\t\ttNext = t0;\n\n\t\t\t}\n\n\t\t}\n\n\t\tvar halfDt = ( t1 - t0 ) * 0.5,\n\t\t\tstride = this.valueSize;\n\n\t\tthis._weightPrev = halfDt / ( t0 - tPrev );\n\t\tthis._weightNext = halfDt / ( tNext - t1 );\n\t\tthis._offsetPrev = iPrev * stride;\n\t\tthis._offsetNext = iNext * stride;\n\n\t},\n\n\tinterpolate_: function( i1, t0, t, t1 ) {\n\n\t\tvar result = this.resultBuffer,\n\t\t\tvalues = this.sampleValues,\n\t\t\tstride = this.valueSize,\n\n\t\t\to1 = i1 * stride,\t\to0 = o1 - stride,\n\t\t\toP = this._offsetPrev, \toN = this._offsetNext,\n\t\t\twP = this._weightPrev,\twN = this._weightNext,\n\n\t\t\tp = ( t - t0 ) / ( t1 - t0 ),\n\t\t\tpp = p * p,\n\t\t\tppp = pp * p;\n\n\t\t// evaluate polynomials\n\n\t\tvar sP = - wP * ppp + 2 * wP * pp - wP * p;\n\t\tvar s0 = ( 1 + wP ) * ppp + (-1.5 - 2 * wP ) * pp + ( -0.5 + wP ) * p + 1;\n\t\tvar s1 = (-1 - wN ) * ppp + ( 1.5 + wN ) * pp + 0.5 * p;\n\t\tvar sN = wN * ppp - wN * pp;\n\n\t\t// combine data linearly\n\n\t\tfor ( var i = 0; i !== stride; ++ i ) {\n\n\t\t\tresult[ i ] =\n\t\t\t\t\tsP * values[ oP + i ] +\n\t\t\t\t\ts0 * values[ o0 + i ] +\n\t\t\t\t\ts1 * values[ o1 + i ] +\n\t\t\t\t\tsN * values[ oN + i ];\n\n\t\t}\n\n\t\treturn result;\n\n\t}\n\n} );\n\n\nexport { CubicInterpolant };\n","import { Interpolant } from '../Interpolant';\n\n/**\n * @author tschw\n */\n\nfunction LinearInterpolant(\n\t\tparameterPositions, sampleValues, sampleSize, resultBuffer ) {\n\n\tInterpolant.call(\n\t\t\tthis, parameterPositions, sampleValues, sampleSize, resultBuffer );\n\n}\n\nLinearInterpolant.prototype =\n\t\tObject.assign( Object.create( Interpolant.prototype ), {\n\n\tconstructor: LinearInterpolant,\n\n\tinterpolate_: function( i1, t0, t, t1 ) {\n\n\t\tvar result = this.resultBuffer,\n\t\t\tvalues = this.sampleValues,\n\t\t\tstride = this.valueSize,\n\n\t\t\toffset1 = i1 * stride,\n\t\t\toffset0 = offset1 - stride,\n\n\t\t\tweight1 = ( t - t0 ) / ( t1 - t0 ),\n\t\t\tweight0 = 1 - weight1;\n\n\t\tfor ( var i = 0; i !== stride; ++ i ) {\n\n\t\t\tresult[ i ] =\n\t\t\t\t\tvalues[ offset0 + i ] * weight0 +\n\t\t\t\t\tvalues[ offset1 + i ] * weight1;\n\n\t\t}\n\n\t\treturn result;\n\n\t}\n\n} );\n\n\nexport { LinearInterpolant };\n","import { Interpolant } from '../Interpolant';\n\n/**\n *\n * Interpolant that evaluates to the sample value at the position preceeding\n * the parameter.\n *\n * @author tschw\n */\n\nfunction DiscreteInterpolant(\n\t\tparameterPositions, sampleValues, sampleSize, resultBuffer ) {\n\n\tInterpolant.call(\n\t\t\tthis, parameterPositions, sampleValues, sampleSize, resultBuffer );\n\n}\n\nDiscreteInterpolant.prototype =\n\t\tObject.assign( Object.create( Interpolant.prototype ), {\n\n\tconstructor: DiscreteInterpolant,\n\n\tinterpolate_: function( i1, t0, t, t1 ) {\n\n\t\treturn this.copySampleValue_( i1 - 1 );\n\n\t}\n\n} );\n\n\nexport { DiscreteInterpolant };\n","import { InterpolateLinear } from '../constants';\nimport { AnimationUtils } from './AnimationUtils';\nimport { InterpolateSmooth, InterpolateDiscrete } from '../constants';\nimport { CubicInterpolant } from '../math/interpolants/CubicInterpolant';\nimport { LinearInterpolant } from '../math/interpolants/LinearInterpolant';\nimport { DiscreteInterpolant } from '../math/interpolants/DiscreteInterpolant';\n\nvar KeyframeTrackPrototype;\n\nKeyframeTrackPrototype = {\n\n\tTimeBufferType: Float32Array,\n\tValueBufferType: Float32Array,\n\n\tDefaultInterpolation: InterpolateLinear,\n\n\tInterpolantFactoryMethodDiscrete: function( result ) {\n\n\t\treturn new DiscreteInterpolant(\n\t\t\t\tthis.times, this.values, this.getValueSize(), result );\n\n\t},\n\n\tInterpolantFactoryMethodLinear: function( result ) {\n\n\t\treturn new LinearInterpolant(\n\t\t\t\tthis.times, this.values, this.getValueSize(), result );\n\n\t},\n\n\tInterpolantFactoryMethodSmooth: function( result ) {\n\n\t\treturn new CubicInterpolant(\n\t\t\t\tthis.times, this.values, this.getValueSize(), result );\n\n\t},\n\n\tsetInterpolation: function( interpolation ) {\n\n\t\tvar factoryMethod;\n\n\t\tswitch ( interpolation ) {\n\n\t\t\tcase InterpolateDiscrete:\n\n\t\t\t\tfactoryMethod = this.InterpolantFactoryMethodDiscrete;\n\n\t\t\t\tbreak;\n\n\t\t\tcase InterpolateLinear:\n\n\t\t\t\tfactoryMethod = this.InterpolantFactoryMethodLinear;\n\n\t\t\t\tbreak;\n\n\t\t\tcase InterpolateSmooth:\n\n\t\t\t\tfactoryMethod = this.InterpolantFactoryMethodSmooth;\n\n\t\t\t\tbreak;\n\n\t\t}\n\n\t\tif ( factoryMethod === undefined ) {\n\n\t\t\tvar message = \"unsupported interpolation for \" +\n\t\t\t\t\tthis.ValueTypeName + \" keyframe track named \" + this.name;\n\n\t\t\tif ( this.createInterpolant === undefined ) {\n\n\t\t\t\t// fall back to default, unless the default itself is messed up\n\t\t\t\tif ( interpolation !== this.DefaultInterpolation ) {\n\n\t\t\t\t\tthis.setInterpolation( this.DefaultInterpolation );\n\n\t\t\t\t} else {\n\n\t\t\t\t\tthrow new Error( message ); // fatal, in this case\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t\tconsole.warn( message );\n\t\t\treturn;\n\n\t\t}\n\n\t\tthis.createInterpolant = factoryMethod;\n\n\t},\n\n\tgetInterpolation: function() {\n\n\t\tswitch ( this.createInterpolant ) {\n\n\t\t\tcase this.InterpolantFactoryMethodDiscrete:\n\n\t\t\t\treturn InterpolateDiscrete;\n\n\t\t\tcase this.InterpolantFactoryMethodLinear:\n\n\t\t\t\treturn InterpolateLinear;\n\n\t\t\tcase this.InterpolantFactoryMethodSmooth:\n\n\t\t\t\treturn InterpolateSmooth;\n\n\t\t}\n\n\t},\n\n\tgetValueSize: function() {\n\n\t\treturn this.values.length / this.times.length;\n\n\t},\n\n\t// move all keyframes either forwards or backwards in time\n\tshift: function( timeOffset ) {\n\n\t\tif( timeOffset !== 0.0 ) {\n\n\t\t\tvar times = this.times;\n\n\t\t\tfor( var i = 0, n = times.length; i !== n; ++ i ) {\n\n\t\t\t\ttimes[ i ] += timeOffset;\n\n\t\t\t}\n\n\t\t}\n\n\t\treturn this;\n\n\t},\n\n\t// scale all keyframe times by a factor (useful for frame <-> seconds conversions)\n\tscale: function( timeScale ) {\n\n\t\tif( timeScale !== 1.0 ) {\n\n\t\t\tvar times = this.times;\n\n\t\t\tfor( var i = 0, n = times.length; i !== n; ++ i ) {\n\n\t\t\t\ttimes[ i ] *= timeScale;\n\n\t\t\t}\n\n\t\t}\n\n\t\treturn this;\n\n\t},\n\n\t// removes keyframes before and after animation without changing any values within the range [startTime, endTime].\n\t// IMPORTANT: We do not shift around keys to the start of the track time, because for interpolated keys this will change their values\n\ttrim: function( startTime, endTime ) {\n\n\t\tvar times = this.times,\n\t\t\tnKeys = times.length,\n\t\t\tfrom = 0,\n\t\t\tto = nKeys - 1;\n\n\t\twhile ( from !== nKeys && times[ from ] < startTime ) ++ from;\n\t\twhile ( to !== -1 && times[ to ] > endTime ) -- to;\n\n\t\t++ to; // inclusive -> exclusive bound\n\n\t\tif( from !== 0 || to !== nKeys ) {\n\n\t\t\t// empty tracks are forbidden, so keep at least one keyframe\n\t\t\tif ( from >= to ) to = Math.max( to , 1 ), from = to - 1;\n\n\t\t\tvar stride = this.getValueSize();\n\t\t\tthis.times = AnimationUtils.arraySlice( times, from, to );\n\t\t\tthis.values = AnimationUtils.\n\t\t\t\t\tarraySlice( this.values, from * stride, to * stride );\n\n\t\t}\n\n\t\treturn this;\n\n\t},\n\n\t// ensure we do not get a GarbageInGarbageOut situation, make sure tracks are at least minimally viable\n\tvalidate: function() {\n\n\t\tvar valid = true;\n\n\t\tvar valueSize = this.getValueSize();\n\t\tif ( valueSize - Math.floor( valueSize ) !== 0 ) {\n\n\t\t\tconsole.error( \"invalid value size in track\", this );\n\t\t\tvalid = false;\n\n\t\t}\n\n\t\tvar times = this.times,\n\t\t\tvalues = this.values,\n\n\t\t\tnKeys = times.length;\n\n\t\tif( nKeys === 0 ) {\n\n\t\t\tconsole.error( \"track is empty\", this );\n\t\t\tvalid = false;\n\n\t\t}\n\n\t\tvar prevTime = null;\n\n\t\tfor( var i = 0; i !== nKeys; i ++ ) {\n\n\t\t\tvar currTime = times[ i ];\n\n\t\t\tif ( typeof currTime === 'number' && isNaN( currTime ) ) {\n\n\t\t\t\tconsole.error( \"time is not a valid number\", this, i, currTime );\n\t\t\t\tvalid = false;\n\t\t\t\tbreak;\n\n\t\t\t}\n\n\t\t\tif( prevTime !== null && prevTime > currTime ) {\n\n\t\t\t\tconsole.error( \"out of order keys\", this, i, currTime, prevTime );\n\t\t\t\tvalid = false;\n\t\t\t\tbreak;\n\n\t\t\t}\n\n\t\t\tprevTime = currTime;\n\n\t\t}\n\n\t\tif ( values !== undefined ) {\n\n\t\t\tif ( AnimationUtils.isTypedArray( values ) ) {\n\n\t\t\t\tfor ( var i = 0, n = values.length; i !== n; ++ i ) {\n\n\t\t\t\t\tvar value = values[ i ];\n\n\t\t\t\t\tif ( isNaN( value ) ) {\n\n\t\t\t\t\t\tconsole.error( \"value is not a valid number\", this, i, value );\n\t\t\t\t\t\tvalid = false;\n\t\t\t\t\t\tbreak;\n\n\t\t\t\t\t}\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t}\n\n\t\treturn valid;\n\n\t},\n\n\t// removes equivalent sequential keys as common in morph target sequences\n\t// (0,0,0,0,1,1,1,0,0,0,0,0,0,0) --> (0,0,1,1,0,0)\n\toptimize: function() {\n\n\t\tvar times = this.times,\n\t\t\tvalues = this.values,\n\t\t\tstride = this.getValueSize(),\n\n\t\t\tsmoothInterpolation = this.getInterpolation() === InterpolateSmooth,\n\n\t\t\twriteIndex = 1,\n\t\t\tlastIndex = times.length - 1;\n\n\t\tfor( var i = 1; i < lastIndex; ++ i ) {\n\n\t\t\tvar keep = false;\n\n\t\t\tvar time = times[ i ];\n\t\t\tvar timeNext = times[ i + 1 ];\n\n\t\t\t// remove adjacent keyframes scheduled at the same time\n\n\t\t\tif ( time !== timeNext && ( i !== 1 || time !== time[ 0 ] ) ) {\n\n\t\t\t\tif ( ! smoothInterpolation ) {\n\n\t\t\t\t\t// remove unnecessary keyframes same as their neighbors\n\n\t\t\t\t\tvar offset = i * stride,\n\t\t\t\t\t\toffsetP = offset - stride,\n\t\t\t\t\t\toffsetN = offset + stride;\n\n\t\t\t\t\tfor ( var j = 0; j !== stride; ++ j ) {\n\n\t\t\t\t\t\tvar value = values[ offset + j ];\n\n\t\t\t\t\t\tif ( value !== values[ offsetP + j ] ||\n\t\t\t\t\t\t\t\tvalue !== values[ offsetN + j ] ) {\n\n\t\t\t\t\t\t\tkeep = true;\n\t\t\t\t\t\t\tbreak;\n\n\t\t\t\t\t\t}\n\n\t\t\t\t\t}\n\n\t\t\t\t} else keep = true;\n\n\t\t\t}\n\n\t\t\t// in-place compaction\n\n\t\t\tif ( keep ) {\n\n\t\t\t\tif ( i !== writeIndex ) {\n\n\t\t\t\t\ttimes[ writeIndex ] = times[ i ];\n\n\t\t\t\t\tvar readOffset = i * stride,\n\t\t\t\t\t\twriteOffset = writeIndex * stride;\n\n\t\t\t\t\tfor ( var j = 0; j !== stride; ++ j )\n\n\t\t\t\t\t\tvalues[ writeOffset + j ] = values[ readOffset + j ];\n\n\t\t\t\t}\n\n\t\t\t\t++ writeIndex;\n\n\t\t\t}\n\n\t\t}\n\n\t\t// flush last keyframe (compaction looks ahead)\n\n\t\tif ( lastIndex > 0 ) {\n\n\t\t\ttimes[ writeIndex ] = times[ lastIndex ];\n\n\t\t\tfor ( var readOffset = lastIndex * stride, writeOffset = writeIndex * stride, j = 0; j !== stride; ++ j )\n\n\t\t\t\tvalues[ writeOffset + j ] = values[ readOffset + j ];\n\n\t\t\t++ writeIndex;\n\n\t\t}\n\n\t\tif ( writeIndex !== times.length ) {\n\n\t\t\tthis.times = AnimationUtils.arraySlice( times, 0, writeIndex );\n\t\t\tthis.values = AnimationUtils.arraySlice( values, 0, writeIndex * stride );\n\n\t\t}\n\n\t\treturn this;\n\n\t}\n\n}\n\nexport { KeyframeTrackPrototype };\n","import { AnimationUtils } from './AnimationUtils';\n\nfunction KeyframeTrackConstructor( name, times, values, interpolation ) {\n\n\tif( name === undefined ) throw new Error( \"track name is undefined\" );\n\n\tif( times === undefined || times.length === 0 ) {\n\n\t\tthrow new Error( \"no keyframes in track named \" + name );\n\n\t}\n\n\tthis.name = name;\n\n\tthis.times = AnimationUtils.convertArray( times, this.TimeBufferType );\n\tthis.values = AnimationUtils.convertArray( values, this.ValueBufferType );\n\n\tthis.setInterpolation( interpolation || this.DefaultInterpolation );\n\n\tthis.validate();\n\tthis.optimize();\n\n}\n\nexport { KeyframeTrackConstructor };\n","import { KeyframeTrackPrototype } from '../KeyframeTrackPrototype';\nimport { KeyframeTrackConstructor } from '../KeyframeTrackConstructor';\n\n/**\n *\n * A Track of vectored keyframe values.\n *\n *\n * @author Ben Houston / http://clara.io/\n * @author David Sarno / http://lighthaus.us/\n * @author tschw\n */\n\nfunction VectorKeyframeTrack( name, times, values, interpolation ) {\n\n\tKeyframeTrackConstructor.call( this, name, times, values, interpolation );\n\n}\n\nVectorKeyframeTrack.prototype =\n\t\tObject.assign( Object.create( KeyframeTrackPrototype ), {\n\n\tconstructor: VectorKeyframeTrack,\n\n\tValueTypeName: 'vector'\n\n\t// ValueBufferType is inherited\n\n\t// DefaultInterpolation is inherited\n\n} );\n\n\nexport { VectorKeyframeTrack };\n","import { Interpolant } from '../Interpolant';\nimport { Quaternion } from '../Quaternion';\n\n/**\n * Spherical linear unit quaternion interpolant.\n *\n * @author tschw\n */\n\nfunction QuaternionLinearInterpolant(\n\t\tparameterPositions, sampleValues, sampleSize, resultBuffer ) {\n\n\tInterpolant.call(\n\t\t\tthis, parameterPositions, sampleValues, sampleSize, resultBuffer );\n\n}\n\nQuaternionLinearInterpolant.prototype =\n\t\tObject.assign( Object.create( Interpolant.prototype ), {\n\n\tconstructor: QuaternionLinearInterpolant,\n\n\tinterpolate_: function( i1, t0, t, t1 ) {\n\n\t\tvar result = this.resultBuffer,\n\t\t\tvalues = this.sampleValues,\n\t\t\tstride = this.valueSize,\n\n\t\t\toffset = i1 * stride,\n\n\t\t\talpha = ( t - t0 ) / ( t1 - t0 );\n\n\t\tfor ( var end = offset + stride; offset !== end; offset += 4 ) {\n\n\t\t\tQuaternion.slerpFlat( result, 0,\n\t\t\t\t\tvalues, offset - stride, values, offset, alpha );\n\n\t\t}\n\n\t\treturn result;\n\n\t}\n\n} );\n\n\nexport { QuaternionLinearInterpolant };\n","import { InterpolateLinear } from '../../constants';\nimport { KeyframeTrackPrototype } from '../KeyframeTrackPrototype';\nimport { QuaternionLinearInterpolant } from '../../math/interpolants/QuaternionLinearInterpolant';\nimport { KeyframeTrackConstructor } from '../KeyframeTrackConstructor';\n\n/**\n *\n * A Track of quaternion keyframe values.\n *\n * @author Ben Houston / http://clara.io/\n * @author David Sarno / http://lighthaus.us/\n * @author tschw\n */\n\nfunction QuaternionKeyframeTrack( name, times, values, interpolation ) {\n\n\tKeyframeTrackConstructor.call( this, name, times, values, interpolation );\n\n}\n\nQuaternionKeyframeTrack.prototype =\n\t\tObject.assign( Object.create( KeyframeTrackPrototype ), {\n\n\tconstructor: QuaternionKeyframeTrack,\n\n\tValueTypeName: 'quaternion',\n\n\t// ValueBufferType is inherited\n\n\tDefaultInterpolation: InterpolateLinear,\n\n\tInterpolantFactoryMethodLinear: function( result ) {\n\n\t\treturn new QuaternionLinearInterpolant(\n\t\t\t\tthis.times, this.values, this.getValueSize(), result );\n\n\t},\n\n\tInterpolantFactoryMethodSmooth: undefined // not yet implemented\n\n} );\n\n\nexport { QuaternionKeyframeTrack };\n","import { KeyframeTrackPrototype } from '../KeyframeTrackPrototype';\nimport { KeyframeTrackConstructor } from '../KeyframeTrackConstructor';\n\n/**\n *\n * A Track of numeric keyframe values.\n *\n * @author Ben Houston / http://clara.io/\n * @author David Sarno / http://lighthaus.us/\n * @author tschw\n */\n\nfunction NumberKeyframeTrack( name, times, values, interpolation ) {\n\n\tKeyframeTrackConstructor.call( this, name, times, values, interpolation );\n\n}\n\nNumberKeyframeTrack.prototype =\n\t\tObject.assign( Object.create( KeyframeTrackPrototype ), {\n\n\tconstructor: NumberKeyframeTrack,\n\n\tValueTypeName: 'number',\n\n\t// ValueBufferType is inherited\n\n\t// DefaultInterpolation is inherited\n\n} );\n\n\nexport { NumberKeyframeTrack };\n","import { InterpolateDiscrete } from '../../constants';\nimport { KeyframeTrackPrototype } from '../KeyframeTrackPrototype';\nimport { KeyframeTrackConstructor } from '../KeyframeTrackConstructor';\n\n/**\n *\n * A Track that interpolates Strings\n *\n *\n * @author Ben Houston / http://clara.io/\n * @author David Sarno / http://lighthaus.us/\n * @author tschw\n */\n\nfunction StringKeyframeTrack( name, times, values, interpolation ) {\n\n\tKeyframeTrackConstructor.call( this, name, times, values, interpolation );\n\n}\n\nStringKeyframeTrack.prototype =\n\t\tObject.assign( Object.create( KeyframeTrackPrototype ), {\n\n\tconstructor: StringKeyframeTrack,\n\n\tValueTypeName: 'string',\n\tValueBufferType: Array,\n\n\tDefaultInterpolation: InterpolateDiscrete,\n\n\tInterpolantFactoryMethodLinear: undefined,\n\n\tInterpolantFactoryMethodSmooth: undefined\n\n} );\n\n\nexport { StringKeyframeTrack };\n","import { InterpolateDiscrete } from '../../constants';\nimport { KeyframeTrackPrototype } from '../KeyframeTrackPrototype';\nimport { KeyframeTrackConstructor } from '../KeyframeTrackConstructor';\n\n/**\n *\n * A Track of Boolean keyframe values.\n *\n *\n * @author Ben Houston / http://clara.io/\n * @author David Sarno / http://lighthaus.us/\n * @author tschw\n */\n\nfunction BooleanKeyframeTrack( name, times, values ) {\n\n\tKeyframeTrackConstructor.call( this, name, times, values );\n\n}\n\nBooleanKeyframeTrack.prototype =\n\t\tObject.assign( Object.create( KeyframeTrackPrototype ), {\n\n\tconstructor: BooleanKeyframeTrack,\n\n\tValueTypeName: 'bool',\n\tValueBufferType: Array,\n\n\tDefaultInterpolation: InterpolateDiscrete,\n\n\tInterpolantFactoryMethodLinear: undefined,\n\tInterpolantFactoryMethodSmooth: undefined\n\n\t// Note: Actually this track could have a optimized / compressed\n\t// representation of a single value and a custom interpolant that\n\t// computes \"firstValue ^ isOdd( index )\".\n\n} );\n\n\nexport { BooleanKeyframeTrack };\n","import { KeyframeTrackPrototype } from '../KeyframeTrackPrototype';\nimport { KeyframeTrackConstructor } from '../KeyframeTrackConstructor';\n\n/**\n *\n * A Track of keyframe values that represent color.\n *\n *\n * @author Ben Houston / http://clara.io/\n * @author David Sarno / http://lighthaus.us/\n * @author tschw\n */\n\nfunction ColorKeyframeTrack( name, times, values, interpolation ) {\n\n\tKeyframeTrackConstructor.call( this, name, times, values, interpolation );\n\n}\n\nColorKeyframeTrack.prototype =\n\t\tObject.assign( Object.create( KeyframeTrackPrototype ), {\n\n\tconstructor: ColorKeyframeTrack,\n\n\tValueTypeName: 'color'\n\n\t// ValueBufferType is inherited\n\n\t// DefaultInterpolation is inherited\n\n\n\t// Note: Very basic implementation and nothing special yet.\n\t// However, this is the place for color space parameterization.\n\n} );\n\n\nexport { ColorKeyframeTrack };\n","import { KeyframeTrackPrototype } from './KeyframeTrackPrototype';\nimport { StringKeyframeTrack } from './tracks/StringKeyframeTrack';\nimport { BooleanKeyframeTrack } from './tracks/BooleanKeyframeTrack';\nimport { QuaternionKeyframeTrack } from './tracks/QuaternionKeyframeTrack';\nimport { ColorKeyframeTrack } from './tracks/ColorKeyframeTrack';\nimport { VectorKeyframeTrack } from './tracks/VectorKeyframeTrack';\nimport { NumberKeyframeTrack } from './tracks/NumberKeyframeTrack';\nimport { AnimationUtils } from './AnimationUtils';\nimport { KeyframeTrackConstructor } from './KeyframeTrackConstructor';\n\n/**\n *\n * A timed sequence of keyframes for a specific property.\n *\n *\n * @author Ben Houston / http://clara.io/\n * @author David Sarno / http://lighthaus.us/\n * @author tschw\n */\n\nfunction KeyframeTrack( name, times, values, interpolation ) {\n\n\tKeyframeTrackConstructor.apply( this, arguments );\n\n}\n\nKeyframeTrack.prototype = KeyframeTrackPrototype;\nKeyframeTrackPrototype.constructor = KeyframeTrack;\n\n// Static methods:\n\nObject.assign( KeyframeTrack, {\n\n\t// Serialization (in static context, because of constructor invocation\n\t// and automatic invocation of .toJSON):\n\n\tparse: function( json ) {\n\n\t\tif( json.type === undefined ) {\n\n\t\t\tthrow new Error( \"track type undefined, can not parse\" );\n\n\t\t}\n\n\t\tvar trackType = KeyframeTrack._getTrackTypeForValueTypeName( json.type );\n\n\t\tif ( json.times === undefined ) {\n\n\t\t\tvar times = [], values = [];\n\n\t\t\tAnimationUtils.flattenJSON( json.keys, times, values, 'value' );\n\n\t\t\tjson.times = times;\n\t\t\tjson.values = values;\n\n\t\t}\n\n\t\t// derived classes can define a static parse method\n\t\tif ( trackType.parse !== undefined ) {\n\n\t\t\treturn trackType.parse( json );\n\n\t\t} else {\n\n\t\t\t// by default, we asssume a constructor compatible with the base\n\t\t\treturn new trackType(\n\t\t\t\t\tjson.name, json.times, json.values, json.interpolation );\n\n\t\t}\n\n\t},\n\n\ttoJSON: function( track ) {\n\n\t\tvar trackType = track.constructor;\n\n\t\tvar json;\n\n\t\t// derived classes can define a static toJSON method\n\t\tif ( trackType.toJSON !== undefined ) {\n\n\t\t\tjson = trackType.toJSON( track );\n\n\t\t} else {\n\n\t\t\t// by default, we assume the data can be serialized as-is\n\t\t\tjson = {\n\n\t\t\t\t'name': track.name,\n\t\t\t\t'times': AnimationUtils.convertArray( track.times, Array ),\n\t\t\t\t'values': AnimationUtils.convertArray( track.values, Array )\n\n\t\t\t};\n\n\t\t\tvar interpolation = track.getInterpolation();\n\n\t\t\tif ( interpolation !== track.DefaultInterpolation ) {\n\n\t\t\t\tjson.interpolation = interpolation;\n\n\t\t\t}\n\n\t\t}\n\n\t\tjson.type = track.ValueTypeName; // mandatory\n\n\t\treturn json;\n\n\t},\n\n\t_getTrackTypeForValueTypeName: function( typeName ) {\n\n\t\tswitch( typeName.toLowerCase() ) {\n\n\t\t\tcase \"scalar\":\n\t\t\tcase \"double\":\n\t\t\tcase \"float\":\n\t\t\tcase \"number\":\n\t\t\tcase \"integer\":\n\n\t\t\t\treturn NumberKeyframeTrack;\n\n\t\t\tcase \"vector\":\n\t\t\tcase \"vector2\":\n\t\t\tcase \"vector3\":\n\t\t\tcase \"vector4\":\n\n\t\t\t\treturn VectorKeyframeTrack;\n\n\t\t\tcase \"color\":\n\n\t\t\t\treturn ColorKeyframeTrack;\n\n\t\t\tcase \"quaternion\":\n\n\t\t\t\treturn QuaternionKeyframeTrack;\n\n\t\t\tcase \"bool\":\n\t\t\tcase \"boolean\":\n\n\t\t\t\treturn BooleanKeyframeTrack;\n\n\t\t\tcase \"string\":\n\n\t\t\t\treturn StringKeyframeTrack;\n\n\t\t}\n\n\t\tthrow new Error( \"Unsupported typeName: \" + typeName );\n\n\t}\n\n} );\n\n\nexport { KeyframeTrack };\n","import { VectorKeyframeTrack } from './tracks/VectorKeyframeTrack';\nimport { QuaternionKeyframeTrack } from './tracks/QuaternionKeyframeTrack';\nimport { NumberKeyframeTrack } from './tracks/NumberKeyframeTrack';\nimport { AnimationUtils } from './AnimationUtils';\nimport { KeyframeTrack } from './KeyframeTrack';\nimport { _Math } from '../math/Math';\n\n/**\n *\n * Reusable set of Tracks that represent an animation.\n *\n * @author Ben Houston / http://clara.io/\n * @author David Sarno / http://lighthaus.us/\n */\n\nfunction AnimationClip( name, duration, tracks ) {\n\n\tthis.name = name;\n\tthis.tracks = tracks;\n\tthis.duration = ( duration !== undefined ) ? duration : -1;\n\n\tthis.uuid = _Math.generateUUID();\n\n\t// this means it should figure out its duration by scanning the tracks\n\tif ( this.duration < 0 ) {\n\n\t\tthis.resetDuration();\n\n\t}\n\n\tthis.optimize();\n\n}\n\nAnimationClip.prototype = {\n\n\tconstructor: AnimationClip,\n\n\tresetDuration: function() {\n\n\t\tvar tracks = this.tracks,\n\t\t\tduration = 0;\n\n\t\tfor ( var i = 0, n = tracks.length; i !== n; ++ i ) {\n\n\t\t\tvar track = this.tracks[ i ];\n\n\t\t\tduration = Math.max(\n\t\t\t\t\tduration, track.times[ track.times.length - 1 ] );\n\n\t\t}\n\n\t\tthis.duration = duration;\n\n\t},\n\n\ttrim: function() {\n\n\t\tfor ( var i = 0; i < this.tracks.length; i ++ ) {\n\n\t\t\tthis.tracks[ i ].trim( 0, this.duration );\n\n\t\t}\n\n\t\treturn this;\n\n\t},\n\n\toptimize: function() {\n\n\t\tfor ( var i = 0; i < this.tracks.length; i ++ ) {\n\n\t\t\tthis.tracks[ i ].optimize();\n\n\t\t}\n\n\t\treturn this;\n\n\t}\n\n};\n\n// Static methods:\n\nObject.assign( AnimationClip, {\n\n\tparse: function( json ) {\n\n\t\tvar tracks = [],\n\t\t\tjsonTracks = json.tracks,\n\t\t\tframeTime = 1.0 / ( json.fps || 1.0 );\n\n\t\tfor ( var i = 0, n = jsonTracks.length; i !== n; ++ i ) {\n\n\t\t\ttracks.push( KeyframeTrack.parse( jsonTracks[ i ] ).scale( frameTime ) );\n\n\t\t}\n\n\t\treturn new AnimationClip( json.name, json.duration, tracks );\n\n\t},\n\n\n\ttoJSON: function( clip ) {\n\n\t\tvar tracks = [],\n\t\t\tclipTracks = clip.tracks;\n\n\t\tvar json = {\n\n\t\t\t'name': clip.name,\n\t\t\t'duration': clip.duration,\n\t\t\t'tracks': tracks\n\n\t\t};\n\n\t\tfor ( var i = 0, n = clipTracks.length; i !== n; ++ i ) {\n\n\t\t\ttracks.push( KeyframeTrack.toJSON( clipTracks[ i ] ) );\n\n\t\t}\n\n\t\treturn json;\n\n\t},\n\n\n\tCreateFromMorphTargetSequence: function( name, morphTargetSequence, fps, noLoop ) {\n\n\t\tvar numMorphTargets = morphTargetSequence.length;\n\t\tvar tracks = [];\n\n\t\tfor ( var i = 0; i < numMorphTargets; i ++ ) {\n\n\t\t\tvar times = [];\n\t\t\tvar values = [];\n\n\t\t\ttimes.push(\n\t\t\t\t\t( i + numMorphTargets - 1 ) % numMorphTargets,\n\t\t\t\t\ti,\n\t\t\t\t\t( i + 1 ) % numMorphTargets );\n\n\t\t\tvalues.push( 0, 1, 0 );\n\n\t\t\tvar order = AnimationUtils.getKeyframeOrder( times );\n\t\t\ttimes = AnimationUtils.sortedArray( times, 1, order );\n\t\t\tvalues = AnimationUtils.sortedArray( values, 1, order );\n\n\t\t\t// if there is a key at the first frame, duplicate it as the\n\t\t\t// last frame as well for perfect loop.\n\t\t\tif ( ! noLoop && times[ 0 ] === 0 ) {\n\n\t\t\t\ttimes.push( numMorphTargets );\n\t\t\t\tvalues.push( values[ 0 ] );\n\n\t\t\t}\n\n\t\t\ttracks.push(\n\t\t\t\t\tnew NumberKeyframeTrack(\n\t\t\t\t\t\t'.morphTargetInfluences[' + morphTargetSequence[ i ].name + ']',\n\t\t\t\t\t\ttimes, values\n\t\t\t\t\t).scale( 1.0 / fps ) );\n\t\t}\n\n\t\treturn new AnimationClip( name, -1, tracks );\n\n\t},\n\n\tfindByName: function( objectOrClipArray, name ) {\n\n\t\tvar clipArray = objectOrClipArray;\n\n\t\tif ( ! Array.isArray( objectOrClipArray ) ) {\n\n\t\t\tvar o = objectOrClipArray;\n\t\t\tclipArray = o.geometry && o.geometry.animations || o.animations;\n\n\t\t}\n\n\t\tfor ( var i = 0; i < clipArray.length; i ++ ) {\n\n\t\t\tif ( clipArray[ i ].name === name ) {\n\n\t\t\t\treturn clipArray[ i ];\n\n\t\t\t}\n\t\t}\n\n\t\treturn null;\n\n\t},\n\n\tCreateClipsFromMorphTargetSequences: function( morphTargets, fps, noLoop ) {\n\n\t\tvar animationToMorphTargets = {};\n\n\t\t// tested with https://regex101.com/ on trick sequences\n\t\t// such flamingo_flyA_003, flamingo_run1_003, crdeath0059\n\t\tvar pattern = /^([\\w-]*?)([\\d]+)$/;\n\n\t\t// sort morph target names into animation groups based\n\t\t// patterns like Walk_001, Walk_002, Run_001, Run_002\n\t\tfor ( var i = 0, il = morphTargets.length; i < il; i ++ ) {\n\n\t\t\tvar morphTarget = morphTargets[ i ];\n\t\t\tvar parts = morphTarget.name.match( pattern );\n\n\t\t\tif ( parts && parts.length > 1 ) {\n\n\t\t\t\tvar name = parts[ 1 ];\n\n\t\t\t\tvar animationMorphTargets = animationToMorphTargets[ name ];\n\t\t\t\tif ( ! animationMorphTargets ) {\n\n\t\t\t\t\tanimationToMorphTargets[ name ] = animationMorphTargets = [];\n\n\t\t\t\t}\n\n\t\t\t\tanimationMorphTargets.push( morphTarget );\n\n\t\t\t}\n\n\t\t}\n\n\t\tvar clips = [];\n\n\t\tfor ( var name in animationToMorphTargets ) {\n\n\t\t\tclips.push( AnimationClip.CreateFromMorphTargetSequence( name, animationToMorphTargets[ name ], fps, noLoop ) );\n\n\t\t}\n\n\t\treturn clips;\n\n\t},\n\n\t// parse the animation.hierarchy format\n\tparseAnimation: function( animation, bones ) {\n\n\t\tif ( ! animation ) {\n\n\t\t\tconsole.error( \" no animation in JSONLoader data\" );\n\t\t\treturn null;\n\n\t\t}\n\n\t\tvar addNonemptyTrack = function(\n\t\t\t\ttrackType, trackName, animationKeys, propertyName, destTracks ) {\n\n\t\t\t// only return track if there are actually keys.\n\t\t\tif ( animationKeys.length !== 0 ) {\n\n\t\t\t\tvar times = [];\n\t\t\t\tvar values = [];\n\n\t\t\t\tAnimationUtils.flattenJSON(\n\t\t\t\t\t\tanimationKeys, times, values, propertyName );\n\n\t\t\t\t// empty keys are filtered out, so check again\n\t\t\t\tif ( times.length !== 0 ) {\n\n\t\t\t\t\tdestTracks.push( new trackType( trackName, times, values ) );\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t};\n\n\t\tvar tracks = [];\n\n\t\tvar clipName = animation.name || 'default';\n\t\t// automatic length determination in AnimationClip.\n\t\tvar duration = animation.length || -1;\n\t\tvar fps = animation.fps || 30;\n\n\t\tvar hierarchyTracks = animation.hierarchy || [];\n\n\t\tfor ( var h = 0; h < hierarchyTracks.length; h ++ ) {\n\n\t\t\tvar animationKeys = hierarchyTracks[ h ].keys;\n\n\t\t\t// skip empty tracks\n\t\t\tif ( ! animationKeys || animationKeys.length === 0 ) continue;\n\n\t\t\t// process morph targets in a way exactly compatible\n\t\t\t// with AnimationHandler.init( animation )\n\t\t\tif ( animationKeys[0].morphTargets ) {\n\n\t\t\t\t// figure out all morph targets used in this track\n\t\t\t\tvar morphTargetNames = {};\n\t\t\t\tfor ( var k = 0; k < animationKeys.length; k ++ ) {\n\n\t\t\t\t\tif ( animationKeys[k].morphTargets ) {\n\n\t\t\t\t\t\tfor ( var m = 0; m < animationKeys[k].morphTargets.length; m ++ ) {\n\n\t\t\t\t\t\t\tmorphTargetNames[ animationKeys[k].morphTargets[m] ] = -1;\n\t\t\t\t\t\t}\n\n\t\t\t\t\t}\n\n\t\t\t\t}\n\n\t\t\t\t// create a track for each morph target with all zero\n\t\t\t\t// morphTargetInfluences except for the keys in which\n\t\t\t\t// the morphTarget is named.\n\t\t\t\tfor ( var morphTargetName in morphTargetNames ) {\n\n\t\t\t\t\tvar times = [];\n\t\t\t\t\tvar values = [];\n\n\t\t\t\t\tfor ( var m = 0;\n\t\t\t\t\t\t\tm !== animationKeys[k].morphTargets.length; ++ m ) {\n\n\t\t\t\t\t\tvar animationKey = animationKeys[k];\n\n\t\t\t\t\t\ttimes.push( animationKey.time );\n\t\t\t\t\t\tvalues.push( ( animationKey.morphTarget === morphTargetName ) ? 1 : 0 );\n\n\t\t\t\t\t}\n\n\t\t\t\t\ttracks.push( new NumberKeyframeTrack(\n\t\t\t\t\t\t\t'.morphTargetInfluence[' + morphTargetName + ']', times, values ) );\n\n\t\t\t\t}\n\n\t\t\t\tduration = morphTargetNames.length * ( fps || 1.0 );\n\n\t\t\t} else {\n\t\t\t\t// ...assume skeletal animation\n\n\t\t\t\tvar boneName = '.bones[' + bones[ h ].name + ']';\n\n\t\t\t\taddNonemptyTrack(\n\t\t\t\t\t\tVectorKeyframeTrack, boneName + '.position',\n\t\t\t\t\t\tanimationKeys, 'pos', tracks );\n\n\t\t\t\taddNonemptyTrack(\n\t\t\t\t\t\tQuaternionKeyframeTrack, boneName + '.quaternion',\n\t\t\t\t\t\tanimationKeys, 'rot', tracks );\n\n\t\t\t\taddNonemptyTrack(\n\t\t\t\t\t\tVectorKeyframeTrack, boneName + '.scale',\n\t\t\t\t\t\tanimationKeys, 'scl', tracks );\n\n\t\t\t}\n\n\t\t}\n\n\t\tif ( tracks.length === 0 ) {\n\n\t\t\treturn null;\n\n\t\t}\n\n\t\tvar clip = new AnimationClip( clipName, duration, tracks );\n\n\t\treturn clip;\n\n\t}\n\n} );\n\n\nexport { AnimationClip };\n","import { Vector2 } from '../math/Vector2';\nimport { FileLoader } from './FileLoader';\nimport { DefaultLoadingManager } from './LoadingManager';\nimport * as Materials from '../materials/Materials';\n\n/**\n * @author mrdoob / http://mrdoob.com/\n */\n\nfunction MaterialLoader( manager ) {\n\n\tthis.manager = ( manager !== undefined ) ? manager : DefaultLoadingManager;\n\tthis.textures = {};\n\n}\n\nObject.assign( MaterialLoader.prototype, {\n\n\tload: function ( url, onLoad, onProgress, onError ) {\n\n\t\tvar scope = this;\n\n\t\tvar loader = new FileLoader( scope.manager );\n\t\tloader.load( url, function ( text ) {\n\n\t\t\tonLoad( scope.parse( JSON.parse( text ) ) );\n\n\t\t}, onProgress, onError );\n\n\t},\n\n\tsetTextures: function ( value ) {\n\n\t\tthis.textures = value;\n\n\t},\n\n\tparse: function ( json ) {\n\n\t\tvar textures = this.textures;\n\n\t\tfunction getTexture( name ) {\n\n\t\t\tif ( textures[ name ] === undefined ) {\n\n\t\t\t\tconsole.warn( 'THREE.MaterialLoader: Undefined texture', name );\n\n\t\t\t}\n\n\t\t\treturn textures[ name ];\n\n\t\t}\n\n\t\tvar material = new Materials[ json.type ]();\n\n\t\tif ( json.uuid !== undefined ) material.uuid = json.uuid;\n\t\tif ( json.name !== undefined ) material.name = json.name;\n\t\tif ( json.color !== undefined ) material.color.setHex( json.color );\n\t\tif ( json.roughness !== undefined ) material.roughness = json.roughness;\n\t\tif ( json.metalness !== undefined ) material.metalness = json.metalness;\n\t\tif ( json.emissive !== undefined ) material.emissive.setHex( json.emissive );\n\t\tif ( json.specular !== undefined ) material.specular.setHex( json.specular );\n\t\tif ( json.shininess !== undefined ) material.shininess = json.shininess;\n\t\tif ( json.uniforms !== undefined ) material.uniforms = json.uniforms;\n\t\tif ( json.vertexShader !== undefined ) material.vertexShader = json.vertexShader;\n\t\tif ( json.fragmentShader !== undefined ) material.fragmentShader = json.fragmentShader;\n\t\tif ( json.vertexColors !== undefined ) material.vertexColors = json.vertexColors;\n\t\tif ( json.fog !== undefined ) material.fog = json.fog;\n\t\tif ( json.shading !== undefined ) material.shading = json.shading;\n\t\tif ( json.blending !== undefined ) material.blending = json.blending;\n\t\tif ( json.side !== undefined ) material.side = json.side;\n\t\tif ( json.opacity !== undefined ) material.opacity = json.opacity;\n\t\tif ( json.transparent !== undefined ) material.transparent = json.transparent;\n\t\tif ( json.alphaTest !== undefined ) material.alphaTest = json.alphaTest;\n\t\tif ( json.depthTest !== undefined ) material.depthTest = json.depthTest;\n\t\tif ( json.depthWrite !== undefined ) material.depthWrite = json.depthWrite;\n\t\tif ( json.colorWrite !== undefined ) material.colorWrite = json.colorWrite;\n\t\tif ( json.wireframe !== undefined ) material.wireframe = json.wireframe;\n\t\tif ( json.wireframeLinewidth !== undefined ) material.wireframeLinewidth = json.wireframeLinewidth;\n\t\tif ( json.wireframeLinecap !== undefined ) material.wireframeLinecap = json.wireframeLinecap;\n\t\tif ( json.wireframeLinejoin !== undefined ) material.wireframeLinejoin = json.wireframeLinejoin;\n\t\tif ( json.skinning !== undefined ) material.skinning = json.skinning;\n\t\tif ( json.morphTargets !== undefined ) material.morphTargets = json.morphTargets;\n\n\t\t// for PointsMaterial\n\n\t\tif ( json.size !== undefined ) material.size = json.size;\n\t\tif ( json.sizeAttenuation !== undefined ) material.sizeAttenuation = json.sizeAttenuation;\n\n\t\t// maps\n\n\t\tif ( json.map !== undefined ) material.map = getTexture( json.map );\n\n\t\tif ( json.alphaMap !== undefined ) {\n\n\t\t\tmaterial.alphaMap = getTexture( json.alphaMap );\n\t\t\tmaterial.transparent = true;\n\n\t\t}\n\n\t\tif ( json.bumpMap !== undefined ) material.bumpMap = getTexture( json.bumpMap );\n\t\tif ( json.bumpScale !== undefined ) material.bumpScale = json.bumpScale;\n\n\t\tif ( json.normalMap !== undefined ) material.normalMap = getTexture( json.normalMap );\n\t\tif ( json.normalScale !== undefined ) {\n\n\t\t\tvar normalScale = json.normalScale;\n\n\t\t\tif ( Array.isArray( normalScale ) === false ) {\n\n\t\t\t\t// Blender exporter used to export a scalar. See #7459\n\n\t\t\t\tnormalScale = [ normalScale, normalScale ];\n\n\t\t\t}\n\n\t\t\tmaterial.normalScale = new Vector2().fromArray( normalScale );\n\n\t\t}\n\n\t\tif ( json.displacementMap !== undefined ) material.displacementMap = getTexture( json.displacementMap );\n\t\tif ( json.displacementScale !== undefined ) material.displacementScale = json.displacementScale;\n\t\tif ( json.displacementBias !== undefined ) material.displacementBias = json.displacementBias;\n\n\t\tif ( json.roughnessMap !== undefined ) material.roughnessMap = getTexture( json.roughnessMap );\n\t\tif ( json.metalnessMap !== undefined ) material.metalnessMap = getTexture( json.metalnessMap );\n\n\t\tif ( json.emissiveMap !== undefined ) material.emissiveMap = getTexture( json.emissiveMap );\n\t\tif ( json.emissiveIntensity !== undefined ) material.emissiveIntensity = json.emissiveIntensity;\n\n\t\tif ( json.specularMap !== undefined ) material.specularMap = getTexture( json.specularMap );\n\n\t\tif ( json.envMap !== undefined ) material.envMap = getTexture( json.envMap );\n\n\t\tif ( json.reflectivity !== undefined ) material.reflectivity = json.reflectivity;\n\n\t\tif ( json.lightMap !== undefined ) material.lightMap = getTexture( json.lightMap );\n\t\tif ( json.lightMapIntensity !== undefined ) material.lightMapIntensity = json.lightMapIntensity;\n\n\t\tif ( json.aoMap !== undefined ) material.aoMap = getTexture( json.aoMap );\n\t\tif ( json.aoMapIntensity !== undefined ) material.aoMapIntensity = json.aoMapIntensity;\n\n\t\t// MultiMaterial\n\n\t\tif ( json.materials !== undefined ) {\n\n\t\t\tfor ( var i = 0, l = json.materials.length; i < l; i ++ ) {\n\n\t\t\t\tmaterial.materials.push( this.parse( json.materials[ i ] ) );\n\n\t\t\t}\n\n\t\t}\n\n\t\treturn material;\n\n\t}\n\n} );\n\n\nexport { MaterialLoader };\n","import { Sphere } from '../math/Sphere';\nimport { Vector3 } from '../math/Vector3';\nimport { BufferAttribute } from '../core/BufferAttribute';\nimport { BufferGeometry } from '../core/BufferGeometry';\nimport { FileLoader } from './FileLoader';\nimport { DefaultLoadingManager } from './LoadingManager';\n\n/**\n * @author mrdoob / http://mrdoob.com/\n */\n\nfunction BufferGeometryLoader( manager ) {\n\n\tthis.manager = ( manager !== undefined ) ? manager : DefaultLoadingManager;\n\n}\n\nObject.assign( BufferGeometryLoader.prototype, {\n\n\tload: function ( url, onLoad, onProgress, onError ) {\n\n\t\tvar scope = this;\n\n\t\tvar loader = new FileLoader( scope.manager );\n\t\tloader.load( url, function ( text ) {\n\n\t\t\tonLoad( scope.parse( JSON.parse( text ) ) );\n\n\t\t}, onProgress, onError );\n\n\t},\n\n\tparse: function ( json ) {\n\n\t\tvar geometry = new BufferGeometry();\n\n\t\tvar index = json.data.index;\n\n\t\tvar TYPED_ARRAYS = {\n\t\t\t'Int8Array': Int8Array,\n\t\t\t'Uint8Array': Uint8Array,\n\t\t\t'Uint8ClampedArray': Uint8ClampedArray,\n\t\t\t'Int16Array': Int16Array,\n\t\t\t'Uint16Array': Uint16Array,\n\t\t\t'Int32Array': Int32Array,\n\t\t\t'Uint32Array': Uint32Array,\n\t\t\t'Float32Array': Float32Array,\n\t\t\t'Float64Array': Float64Array\n\t\t};\n\n\t\tif ( index !== undefined ) {\n\n\t\t\tvar typedArray = new TYPED_ARRAYS[ index.type ]( index.array );\n\t\t\tgeometry.setIndex( new BufferAttribute( typedArray, 1 ) );\n\n\t\t}\n\n\t\tvar attributes = json.data.attributes;\n\n\t\tfor ( var key in attributes ) {\n\n\t\t\tvar attribute = attributes[ key ];\n\t\t\tvar typedArray = new TYPED_ARRAYS[ attribute.type ]( attribute.array );\n\n\t\t\tgeometry.addAttribute( key, new BufferAttribute( typedArray, attribute.itemSize, attribute.normalized ) );\n\n\t\t}\n\n\t\tvar groups = json.data.groups || json.data.drawcalls || json.data.offsets;\n\n\t\tif ( groups !== undefined ) {\n\n\t\t\tfor ( var i = 0, n = groups.length; i !== n; ++ i ) {\n\n\t\t\t\tvar group = groups[ i ];\n\n\t\t\t\tgeometry.addGroup( group.start, group.count, group.materialIndex );\n\n\t\t\t}\n\n\t\t}\n\n\t\tvar boundingSphere = json.data.boundingSphere;\n\n\t\tif ( boundingSphere !== undefined ) {\n\n\t\t\tvar center = new Vector3();\n\n\t\t\tif ( boundingSphere.center !== undefined ) {\n\n\t\t\t\tcenter.fromArray( boundingSphere.center );\n\n\t\t\t}\n\n\t\t\tgeometry.boundingSphere = new Sphere( center, boundingSphere.radius );\n\n\t\t}\n\n\t\treturn geometry;\n\n\t}\n\n} );\n\n\nexport { BufferGeometryLoader };\n","import { FaceColors, VertexColors, DoubleSide, BackSide, MirroredRepeatWrapping, RepeatWrapping, BlendingMode } from '../constants';\nimport { _Math } from '../math/Math';\nimport { MaterialLoader } from './MaterialLoader';\nimport { TextureLoader } from './TextureLoader';\nimport { Color } from '../math/Color';\n\n/**\n * @author alteredq / http://alteredqualia.com/\n */\n\nfunction Loader() {\n\n\tthis.onLoadStart = function () {};\n\tthis.onLoadProgress = function () {};\n\tthis.onLoadComplete = function () {};\n\n}\n\nLoader.prototype = {\n\n\tconstructor: Loader,\n\n\tcrossOrigin: undefined,\n\n\textractUrlBase: function ( url ) {\n\n\t\tvar parts = url.split( '/' );\n\n\t\tif ( parts.length === 1 ) return './';\n\n\t\tparts.pop();\n\n\t\treturn parts.join( '/' ) + '/';\n\n\t},\n\n\tinitMaterials: function ( materials, texturePath, crossOrigin ) {\n\n\t\tvar array = [];\n\n\t\tfor ( var i = 0; i < materials.length; ++ i ) {\n\n\t\t\tarray[ i ] = this.createMaterial( materials[ i ], texturePath, crossOrigin );\n\n\t\t}\n\n\t\treturn array;\n\n\t},\n\n\tcreateMaterial: ( function () {\n\n\t\tvar color, textureLoader, materialLoader;\n\n\t\treturn function createMaterial( m, texturePath, crossOrigin ) {\n\n\t\t\tif ( color === undefined ) color = new Color();\n\t\t\tif ( textureLoader === undefined ) textureLoader = new TextureLoader();\n\t\t\tif ( materialLoader === undefined ) materialLoader = new MaterialLoader();\n\n\t\t\t// convert from old material format\n\n\t\t\tvar textures = {};\n\n\t\t\tfunction loadTexture( path, repeat, offset, wrap, anisotropy ) {\n\n\t\t\t\tvar fullPath = texturePath + path;\n\t\t\t\tvar loader = Loader.Handlers.get( fullPath );\n\n\t\t\t\tvar texture;\n\n\t\t\t\tif ( loader !== null ) {\n\n\t\t\t\t\ttexture = loader.load( fullPath );\n\n\t\t\t\t} else {\n\n\t\t\t\t\ttextureLoader.setCrossOrigin( crossOrigin );\n\t\t\t\t\ttexture = textureLoader.load( fullPath );\n\n\t\t\t\t}\n\n\t\t\t\tif ( repeat !== undefined ) {\n\n\t\t\t\t\ttexture.repeat.fromArray( repeat );\n\n\t\t\t\t\tif ( repeat[ 0 ] !== 1 ) texture.wrapS = RepeatWrapping;\n\t\t\t\t\tif ( repeat[ 1 ] !== 1 ) texture.wrapT = RepeatWrapping;\n\n\t\t\t\t}\n\n\t\t\t\tif ( offset !== undefined ) {\n\n\t\t\t\t\ttexture.offset.fromArray( offset );\n\n\t\t\t\t}\n\n\t\t\t\tif ( wrap !== undefined ) {\n\n\t\t\t\t\tif ( wrap[ 0 ] === 'repeat' ) texture.wrapS = RepeatWrapping;\n\t\t\t\t\tif ( wrap[ 0 ] === 'mirror' ) texture.wrapS = MirroredRepeatWrapping;\n\n\t\t\t\t\tif ( wrap[ 1 ] === 'repeat' ) texture.wrapT = RepeatWrapping;\n\t\t\t\t\tif ( wrap[ 1 ] === 'mirror' ) texture.wrapT = MirroredRepeatWrapping;\n\n\t\t\t\t}\n\n\t\t\t\tif ( anisotropy !== undefined ) {\n\n\t\t\t\t\ttexture.anisotropy = anisotropy;\n\n\t\t\t\t}\n\n\t\t\t\tvar uuid = _Math.generateUUID();\n\n\t\t\t\ttextures[ uuid ] = texture;\n\n\t\t\t\treturn uuid;\n\n\t\t\t}\n\n\t\t\t//\n\n\t\t\tvar json = {\n\t\t\t\tuuid: _Math.generateUUID(),\n\t\t\t\ttype: 'MeshLambertMaterial'\n\t\t\t};\n\n\t\t\tfor ( var name in m ) {\n\n\t\t\t\tvar value = m[ name ];\n\n\t\t\t\tswitch ( name ) {\n\t\t\t\t\tcase 'DbgColor':\n\t\t\t\t\tcase 'DbgIndex':\n\t\t\t\t\tcase 'opticalDensity':\n\t\t\t\t\tcase 'illumination':\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tcase 'DbgName':\n\t\t\t\t\t\tjson.name = value;\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tcase 'blending':\n\t\t\t\t\t\tjson.blending = BlendingMode[ value ];\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tcase 'colorAmbient':\n\t\t\t\t\tcase 'mapAmbient':\n\t\t\t\t\t\tconsole.warn( 'THREE.Loader.createMaterial:', name, 'is no longer supported.' );\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tcase 'colorDiffuse':\n\t\t\t\t\t\tjson.color = color.fromArray( value ).getHex();\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tcase 'colorSpecular':\n\t\t\t\t\t\tjson.specular = color.fromArray( value ).getHex();\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tcase 'colorEmissive':\n\t\t\t\t\t\tjson.emissive = color.fromArray( value ).getHex();\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tcase 'specularCoef':\n\t\t\t\t\t\tjson.shininess = value;\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tcase 'shading':\n\t\t\t\t\t\tif ( value.toLowerCase() === 'basic' ) json.type = 'MeshBasicMaterial';\n\t\t\t\t\t\tif ( value.toLowerCase() === 'phong' ) json.type = 'MeshPhongMaterial';\n\t\t\t\t\t\tif ( value.toLowerCase() === 'standard' ) json.type = 'MeshStandardMaterial';\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tcase 'mapDiffuse':\n\t\t\t\t\t\tjson.map = loadTexture( value, m.mapDiffuseRepeat, m.mapDiffuseOffset, m.mapDiffuseWrap, m.mapDiffuseAnisotropy );\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tcase 'mapDiffuseRepeat':\n\t\t\t\t\tcase 'mapDiffuseOffset':\n\t\t\t\t\tcase 'mapDiffuseWrap':\n\t\t\t\t\tcase 'mapDiffuseAnisotropy':\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tcase 'mapEmissive':\n\t\t\t\t\t\tjson.emissiveMap = loadTexture( value, m.mapEmissiveRepeat, m.mapEmissiveOffset, m.mapEmissiveWrap, m.mapEmissiveAnisotropy );\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tcase 'mapEmissiveRepeat':\n\t\t\t\t\tcase 'mapEmissiveOffset':\n\t\t\t\t\tcase 'mapEmissiveWrap':\n\t\t\t\t\tcase 'mapEmissiveAnisotropy':\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tcase 'mapLight':\n\t\t\t\t\t\tjson.lightMap = loadTexture( value, m.mapLightRepeat, m.mapLightOffset, m.mapLightWrap, m.mapLightAnisotropy );\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tcase 'mapLightRepeat':\n\t\t\t\t\tcase 'mapLightOffset':\n\t\t\t\t\tcase 'mapLightWrap':\n\t\t\t\t\tcase 'mapLightAnisotropy':\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tcase 'mapAO':\n\t\t\t\t\t\tjson.aoMap = loadTexture( value, m.mapAORepeat, m.mapAOOffset, m.mapAOWrap, m.mapAOAnisotropy );\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tcase 'mapAORepeat':\n\t\t\t\t\tcase 'mapAOOffset':\n\t\t\t\t\tcase 'mapAOWrap':\n\t\t\t\t\tcase 'mapAOAnisotropy':\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tcase 'mapBump':\n\t\t\t\t\t\tjson.bumpMap = loadTexture( value, m.mapBumpRepeat, m.mapBumpOffset, m.mapBumpWrap, m.mapBumpAnisotropy );\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tcase 'mapBumpScale':\n\t\t\t\t\t\tjson.bumpScale = value;\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tcase 'mapBumpRepeat':\n\t\t\t\t\tcase 'mapBumpOffset':\n\t\t\t\t\tcase 'mapBumpWrap':\n\t\t\t\t\tcase 'mapBumpAnisotropy':\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tcase 'mapNormal':\n\t\t\t\t\t\tjson.normalMap = loadTexture( value, m.mapNormalRepeat, m.mapNormalOffset, m.mapNormalWrap, m.mapNormalAnisotropy );\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tcase 'mapNormalFactor':\n\t\t\t\t\t\tjson.normalScale = [ value, value ];\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tcase 'mapNormalRepeat':\n\t\t\t\t\tcase 'mapNormalOffset':\n\t\t\t\t\tcase 'mapNormalWrap':\n\t\t\t\t\tcase 'mapNormalAnisotropy':\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tcase 'mapSpecular':\n\t\t\t\t\t\tjson.specularMap = loadTexture( value, m.mapSpecularRepeat, m.mapSpecularOffset, m.mapSpecularWrap, m.mapSpecularAnisotropy );\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tcase 'mapSpecularRepeat':\n\t\t\t\t\tcase 'mapSpecularOffset':\n\t\t\t\t\tcase 'mapSpecularWrap':\n\t\t\t\t\tcase 'mapSpecularAnisotropy':\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tcase 'mapMetalness':\n\t\t\t\t\t\tjson.metalnessMap = loadTexture( value, m.mapMetalnessRepeat, m.mapMetalnessOffset, m.mapMetalnessWrap, m.mapMetalnessAnisotropy );\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tcase 'mapMetalnessRepeat':\n\t\t\t\t\tcase 'mapMetalnessOffset':\n\t\t\t\t\tcase 'mapMetalnessWrap':\n\t\t\t\t\tcase 'mapMetalnessAnisotropy':\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tcase 'mapRoughness':\n\t\t\t\t\t\tjson.roughnessMap = loadTexture( value, m.mapRoughnessRepeat, m.mapRoughnessOffset, m.mapRoughnessWrap, m.mapRoughnessAnisotropy );\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tcase 'mapRoughnessRepeat':\n\t\t\t\t\tcase 'mapRoughnessOffset':\n\t\t\t\t\tcase 'mapRoughnessWrap':\n\t\t\t\t\tcase 'mapRoughnessAnisotropy':\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tcase 'mapAlpha':\n\t\t\t\t\t\tjson.alphaMap = loadTexture( value, m.mapAlphaRepeat, m.mapAlphaOffset, m.mapAlphaWrap, m.mapAlphaAnisotropy );\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tcase 'mapAlphaRepeat':\n\t\t\t\t\tcase 'mapAlphaOffset':\n\t\t\t\t\tcase 'mapAlphaWrap':\n\t\t\t\t\tcase 'mapAlphaAnisotropy':\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tcase 'flipSided':\n\t\t\t\t\t\tjson.side = BackSide;\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tcase 'doubleSided':\n\t\t\t\t\t\tjson.side = DoubleSide;\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tcase 'transparency':\n\t\t\t\t\t\tconsole.warn( 'THREE.Loader.createMaterial: transparency has been renamed to opacity' );\n\t\t\t\t\t\tjson.opacity = value;\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tcase 'depthTest':\n\t\t\t\t\tcase 'depthWrite':\n\t\t\t\t\tcase 'colorWrite':\n\t\t\t\t\tcase 'opacity':\n\t\t\t\t\tcase 'reflectivity':\n\t\t\t\t\tcase 'transparent':\n\t\t\t\t\tcase 'visible':\n\t\t\t\t\tcase 'wireframe':\n\t\t\t\t\t\tjson[ name ] = value;\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tcase 'vertexColors':\n\t\t\t\t\t\tif ( value === true ) json.vertexColors = VertexColors;\n\t\t\t\t\t\tif ( value === 'face' ) json.vertexColors = FaceColors;\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tdefault:\n\t\t\t\t\t\tconsole.error( 'THREE.Loader.createMaterial: Unsupported', name, value );\n\t\t\t\t\t\tbreak;\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t\tif ( json.type === 'MeshBasicMaterial' ) delete json.emissive;\n\t\t\tif ( json.type !== 'MeshPhongMaterial' ) delete json.specular;\n\n\t\t\tif ( json.opacity < 1 ) json.transparent = true;\n\n\t\t\tmaterialLoader.setTextures( textures );\n\n\t\t\treturn materialLoader.parse( json );\n\n\t\t};\n\n\t} )()\n\n};\n\nLoader.Handlers = {\n\n\thandlers: [],\n\n\tadd: function ( regex, loader ) {\n\n\t\tthis.handlers.push( regex, loader );\n\n\t},\n\n\tget: function ( file ) {\n\n\t\tvar handlers = this.handlers;\n\n\t\tfor ( var i = 0, l = handlers.length; i < l; i += 2 ) {\n\n\t\t\tvar regex = handlers[ i ];\n\t\t\tvar loader = handlers[ i + 1 ];\n\n\t\t\tif ( regex.test( file ) ) {\n\n\t\t\t\treturn loader;\n\n\t\t\t}\n\n\t\t}\n\n\t\treturn null;\n\n\t}\n\n};\n\n\nexport { Loader };\n","import { Loader } from './Loader';\nimport { AnimationClip } from '../animation/AnimationClip';\nimport { Vector3 } from '../math/Vector3';\nimport { Vector4 } from '../math/Vector4';\nimport { Color } from '../math/Color';\nimport { Vector2 } from '../math/Vector2';\nimport { Face3 } from '../core/Face3';\nimport { Geometry } from '../core/Geometry';\nimport { FileLoader } from './FileLoader';\nimport { DefaultLoadingManager } from './LoadingManager';\n\n/**\n * @author mrdoob / http://mrdoob.com/\n * @author alteredq / http://alteredqualia.com/\n */\n\nfunction JSONLoader( manager ) {\n\n\tif ( typeof manager === 'boolean' ) {\n\n\t\tconsole.warn( 'THREE.JSONLoader: showStatus parameter has been removed from constructor.' );\n\t\tmanager = undefined;\n\n\t}\n\n\tthis.manager = ( manager !== undefined ) ? manager : DefaultLoadingManager;\n\n\tthis.withCredentials = false;\n\n}\n\nObject.assign( JSONLoader.prototype, {\n\n\tload: function( url, onLoad, onProgress, onError ) {\n\n\t\tvar scope = this;\n\n\t\tvar texturePath = this.texturePath && ( typeof this.texturePath === \"string\" ) ? this.texturePath : Loader.prototype.extractUrlBase( url );\n\n\t\tvar loader = new FileLoader( this.manager );\n\t\tloader.setWithCredentials( this.withCredentials );\n\t\tloader.load( url, function ( text ) {\n\n\t\t\tvar json = JSON.parse( text );\n\t\t\tvar metadata = json.metadata;\n\n\t\t\tif ( metadata !== undefined ) {\n\n\t\t\t\tvar type = metadata.type;\n\n\t\t\t\tif ( type !== undefined ) {\n\n\t\t\t\t\tif ( type.toLowerCase() === 'object' ) {\n\n\t\t\t\t\t\tconsole.error( 'THREE.JSONLoader: ' + url + ' should be loaded with THREE.ObjectLoader instead.' );\n\t\t\t\t\t\treturn;\n\n\t\t\t\t\t}\n\n\t\t\t\t\tif ( type.toLowerCase() === 'scene' ) {\n\n\t\t\t\t\t\tconsole.error( 'THREE.JSONLoader: ' + url + ' should be loaded with THREE.SceneLoader instead.' );\n\t\t\t\t\t\treturn;\n\n\t\t\t\t\t}\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t\tvar object = scope.parse( json, texturePath );\n\t\t\tonLoad( object.geometry, object.materials );\n\n\t\t}, onProgress, onError );\n\n\t},\n\n\tsetTexturePath: function ( value ) {\n\n\t\tthis.texturePath = value;\n\n\t},\n\n\tparse: function ( json, texturePath ) {\n\n\t\tvar geometry = new Geometry(),\n\t\tscale = ( json.scale !== undefined ) ? 1.0 / json.scale : 1.0;\n\n\t\tparseModel( scale );\n\n\t\tparseSkin();\n\t\tparseMorphing( scale );\n\t\tparseAnimations();\n\n\t\tgeometry.computeFaceNormals();\n\t\tgeometry.computeBoundingSphere();\n\n\t\tfunction parseModel( scale ) {\n\n\t\t\tfunction isBitSet( value, position ) {\n\n\t\t\t\treturn value & ( 1 << position );\n\n\t\t\t}\n\n\t\t\tvar i, j, fi,\n\n\t\t\toffset, zLength,\n\n\t\tcolorIndex, normalIndex, uvIndex, materialIndex,\n\n\t\t\ttype,\n\t\t\tisQuad,\n\t\t\thasMaterial,\n\t\t\thasFaceVertexUv,\n\t\t\thasFaceNormal, hasFaceVertexNormal,\n\t\t\thasFaceColor, hasFaceVertexColor,\n\n\t\tvertex, face, faceA, faceB, hex, normal,\n\n\t\t\tuvLayer, uv, u, v,\n\n\t\t\tfaces = json.faces,\n\t\t\tvertices = json.vertices,\n\t\t\tnormals = json.normals,\n\t\t\tcolors = json.colors,\n\n\t\t\tnUvLayers = 0;\n\n\t\t\tif ( json.uvs !== undefined ) {\n\n\t\t\t\t// disregard empty arrays\n\n\t\t\t\tfor ( i = 0; i < json.uvs.length; i ++ ) {\n\n\t\t\t\t\tif ( json.uvs[ i ].length ) nUvLayers ++;\n\n\t\t\t\t}\n\n\t\t\t\tfor ( i = 0; i < nUvLayers; i ++ ) {\n\n\t\t\t\t\tgeometry.faceVertexUvs[ i ] = [];\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t\toffset = 0;\n\t\t\tzLength = vertices.length;\n\n\t\t\twhile ( offset < zLength ) {\n\n\t\t\t\tvertex = new Vector3();\n\n\t\t\t\tvertex.x = vertices[ offset ++ ] * scale;\n\t\t\t\tvertex.y = vertices[ offset ++ ] * scale;\n\t\t\t\tvertex.z = vertices[ offset ++ ] * scale;\n\n\t\t\t\tgeometry.vertices.push( vertex );\n\n\t\t\t}\n\n\t\t\toffset = 0;\n\t\t\tzLength = faces.length;\n\n\t\t\twhile ( offset < zLength ) {\n\n\t\t\t\ttype = faces[ offset ++ ];\n\n\n\t\t\t\tisQuad = isBitSet( type, 0 );\n\t\t\t\thasMaterial = isBitSet( type, 1 );\n\t\t\t\thasFaceVertexUv = isBitSet( type, 3 );\n\t\t\t\thasFaceNormal = isBitSet( type, 4 );\n\t\t\t\thasFaceVertexNormal = isBitSet( type, 5 );\n\t\t\t\thasFaceColor\t = isBitSet( type, 6 );\n\t\t\t\thasFaceVertexColor = isBitSet( type, 7 );\n\n\t\t\t\t// console.log(\"type\", type, \"bits\", isQuad, hasMaterial, hasFaceVertexUv, hasFaceNormal, hasFaceVertexNormal, hasFaceColor, hasFaceVertexColor);\n\n\t\t\t\tif ( isQuad ) {\n\n\t\t\t\t\tfaceA = new Face3();\n\t\t\t\t\tfaceA.a = faces[ offset ];\n\t\t\t\t\tfaceA.b = faces[ offset + 1 ];\n\t\t\t\t\tfaceA.c = faces[ offset + 3 ];\n\n\t\t\t\t\tfaceB = new Face3();\n\t\t\t\t\tfaceB.a = faces[ offset + 1 ];\n\t\t\t\t\tfaceB.b = faces[ offset + 2 ];\n\t\t\t\t\tfaceB.c = faces[ offset + 3 ];\n\n\t\t\t\t\toffset += 4;\n\n\t\t\t\t\tif ( hasMaterial ) {\n\n\t\t\t\t\t\tmaterialIndex = faces[ offset ++ ];\n\t\t\t\t\t\tfaceA.materialIndex = materialIndex;\n\t\t\t\t\t\tfaceB.materialIndex = materialIndex;\n\n\t\t\t\t\t}\n\n\t\t\t\t\t// to get face <=> uv index correspondence\n\n\t\t\t\t\tfi = geometry.faces.length;\n\n\t\t\t\t\tif ( hasFaceVertexUv ) {\n\n\t\t\t\t\t\tfor ( i = 0; i < nUvLayers; i ++ ) {\n\n\t\t\t\t\t\t\tuvLayer = json.uvs[ i ];\n\n\t\t\t\t\t\t\tgeometry.faceVertexUvs[ i ][ fi ] = [];\n\t\t\t\t\t\t\tgeometry.faceVertexUvs[ i ][ fi + 1 ] = [];\n\n\t\t\t\t\t\t\tfor ( j = 0; j < 4; j ++ ) {\n\n\t\t\t\t\t\t\t\tuvIndex = faces[ offset ++ ];\n\n\t\t\t\t\t\t\t\tu = uvLayer[ uvIndex * 2 ];\n\t\t\t\t\t\t\t\tv = uvLayer[ uvIndex * 2 + 1 ];\n\n\t\t\t\t\t\t\t\tuv = new Vector2( u, v );\n\n\t\t\t\t\t\t\t\tif ( j !== 2 ) geometry.faceVertexUvs[ i ][ fi ].push( uv );\n\t\t\t\t\t\t\t\tif ( j !== 0 ) geometry.faceVertexUvs[ i ][ fi + 1 ].push( uv );\n\n\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t}\n\n\t\t\t\t\t}\n\n\t\t\t\t\tif ( hasFaceNormal ) {\n\n\t\t\t\t\t\tnormalIndex = faces[ offset ++ ] * 3;\n\n\t\t\t\t\t\tfaceA.normal.set(\n\t\t\t\t\t\t\tnormals[ normalIndex ++ ],\n\t\t\t\t\t\t\tnormals[ normalIndex ++ ],\n\t\t\t\t\t\t\tnormals[ normalIndex ]\n\t\t\t\t\t\t);\n\n\t\t\t\t\t\tfaceB.normal.copy( faceA.normal );\n\n\t\t\t\t\t}\n\n\t\t\t\t\tif ( hasFaceVertexNormal ) {\n\n\t\t\t\t\t\tfor ( i = 0; i < 4; i ++ ) {\n\n\t\t\t\t\t\t\tnormalIndex = faces[ offset ++ ] * 3;\n\n\t\t\t\t\t\t\tnormal = new Vector3(\n\t\t\t\t\t\t\t\tnormals[ normalIndex ++ ],\n\t\t\t\t\t\t\t\tnormals[ normalIndex ++ ],\n\t\t\t\t\t\t\t\tnormals[ normalIndex ]\n\t\t\t\t\t\t\t);\n\n\n\t\t\t\t\t\t\tif ( i !== 2 ) faceA.vertexNormals.push( normal );\n\t\t\t\t\t\t\tif ( i !== 0 ) faceB.vertexNormals.push( normal );\n\n\t\t\t\t\t\t}\n\n\t\t\t\t\t}\n\n\n\t\t\t\t\tif ( hasFaceColor ) {\n\n\t\t\t\t\t\tcolorIndex = faces[ offset ++ ];\n\t\t\t\t\t\thex = colors[ colorIndex ];\n\n\t\t\t\t\t\tfaceA.color.setHex( hex );\n\t\t\t\t\t\tfaceB.color.setHex( hex );\n\n\t\t\t\t\t}\n\n\n\t\t\t\t\tif ( hasFaceVertexColor ) {\n\n\t\t\t\t\t\tfor ( i = 0; i < 4; i ++ ) {\n\n\t\t\t\t\t\t\tcolorIndex = faces[ offset ++ ];\n\t\t\t\t\t\t\thex = colors[ colorIndex ];\n\n\t\t\t\t\t\t\tif ( i !== 2 ) faceA.vertexColors.push( new Color( hex ) );\n\t\t\t\t\t\t\tif ( i !== 0 ) faceB.vertexColors.push( new Color( hex ) );\n\n\t\t\t\t\t\t}\n\n\t\t\t\t\t}\n\n\t\t\t\t\tgeometry.faces.push( faceA );\n\t\t\t\t\tgeometry.faces.push( faceB );\n\n\t\t\t\t} else {\n\n\t\t\t\t\tface = new Face3();\n\t\t\t\t\tface.a = faces[ offset ++ ];\n\t\t\t\t\tface.b = faces[ offset ++ ];\n\t\t\t\t\tface.c = faces[ offset ++ ];\n\n\t\t\t\t\tif ( hasMaterial ) {\n\n\t\t\t\t\t\tmaterialIndex = faces[ offset ++ ];\n\t\t\t\t\t\tface.materialIndex = materialIndex;\n\n\t\t\t\t\t}\n\n\t\t\t\t\t// to get face <=> uv index correspondence\n\n\t\t\t\t\tfi = geometry.faces.length;\n\n\t\t\t\t\tif ( hasFaceVertexUv ) {\n\n\t\t\t\t\t\tfor ( i = 0; i < nUvLayers; i ++ ) {\n\n\t\t\t\t\t\t\tuvLayer = json.uvs[ i ];\n\n\t\t\t\t\t\t\tgeometry.faceVertexUvs[ i ][ fi ] = [];\n\n\t\t\t\t\t\t\tfor ( j = 0; j < 3; j ++ ) {\n\n\t\t\t\t\t\t\t\tuvIndex = faces[ offset ++ ];\n\n\t\t\t\t\t\t\t\tu = uvLayer[ uvIndex * 2 ];\n\t\t\t\t\t\t\t\tv = uvLayer[ uvIndex * 2 + 1 ];\n\n\t\t\t\t\t\t\t\tuv = new Vector2( u, v );\n\n\t\t\t\t\t\t\t\tgeometry.faceVertexUvs[ i ][ fi ].push( uv );\n\n\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t}\n\n\t\t\t\t\t}\n\n\t\t\t\t\tif ( hasFaceNormal ) {\n\n\t\t\t\t\t\tnormalIndex = faces[ offset ++ ] * 3;\n\n\t\t\t\t\t\tface.normal.set(\n\t\t\t\t\t\t\tnormals[ normalIndex ++ ],\n\t\t\t\t\t\t\tnormals[ normalIndex ++ ],\n\t\t\t\t\t\t\tnormals[ normalIndex ]\n\t\t\t\t\t\t);\n\n\t\t\t\t\t}\n\n\t\t\t\t\tif ( hasFaceVertexNormal ) {\n\n\t\t\t\t\t\tfor ( i = 0; i < 3; i ++ ) {\n\n\t\t\t\t\t\t\tnormalIndex = faces[ offset ++ ] * 3;\n\n\t\t\t\t\t\t\tnormal = new Vector3(\n\t\t\t\t\t\t\t\tnormals[ normalIndex ++ ],\n\t\t\t\t\t\t\t\tnormals[ normalIndex ++ ],\n\t\t\t\t\t\t\t\tnormals[ normalIndex ]\n\t\t\t\t\t\t\t);\n\n\t\t\t\t\t\t\tface.vertexNormals.push( normal );\n\n\t\t\t\t\t\t}\n\n\t\t\t\t\t}\n\n\n\t\t\t\t\tif ( hasFaceColor ) {\n\n\t\t\t\t\t\tcolorIndex = faces[ offset ++ ];\n\t\t\t\t\t\tface.color.setHex( colors[ colorIndex ] );\n\n\t\t\t\t\t}\n\n\n\t\t\t\t\tif ( hasFaceVertexColor ) {\n\n\t\t\t\t\t\tfor ( i = 0; i < 3; i ++ ) {\n\n\t\t\t\t\t\t\tcolorIndex = faces[ offset ++ ];\n\t\t\t\t\t\t\tface.vertexColors.push( new Color( colors[ colorIndex ] ) );\n\n\t\t\t\t\t\t}\n\n\t\t\t\t\t}\n\n\t\t\t\t\tgeometry.faces.push( face );\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t}\n\n\t\tfunction parseSkin() {\n\n\t\t\tvar influencesPerVertex = ( json.influencesPerVertex !== undefined ) ? json.influencesPerVertex : 2;\n\n\t\t\tif ( json.skinWeights ) {\n\n\t\t\t\tfor ( var i = 0, l = json.skinWeights.length; i < l; i += influencesPerVertex ) {\n\n\t\t\t\t\tvar x = json.skinWeights[ i ];\n\t\t\t\t\tvar y = ( influencesPerVertex > 1 ) ? json.skinWeights[ i + 1 ] : 0;\n\t\t\t\t\tvar z = ( influencesPerVertex > 2 ) ? json.skinWeights[ i + 2 ] : 0;\n\t\t\t\t\tvar w = ( influencesPerVertex > 3 ) ? json.skinWeights[ i + 3 ] : 0;\n\n\t\t\t\t\tgeometry.skinWeights.push( new Vector4( x, y, z, w ) );\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t\tif ( json.skinIndices ) {\n\n\t\t\t\tfor ( var i = 0, l = json.skinIndices.length; i < l; i += influencesPerVertex ) {\n\n\t\t\t\t\tvar a = json.skinIndices[ i ];\n\t\t\t\t\tvar b = ( influencesPerVertex > 1 ) ? json.skinIndices[ i + 1 ] : 0;\n\t\t\t\t\tvar c = ( influencesPerVertex > 2 ) ? json.skinIndices[ i + 2 ] : 0;\n\t\t\t\t\tvar d = ( influencesPerVertex > 3 ) ? json.skinIndices[ i + 3 ] : 0;\n\n\t\t\t\t\tgeometry.skinIndices.push( new Vector4( a, b, c, d ) );\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t\tgeometry.bones = json.bones;\n\n\t\t\tif ( geometry.bones && geometry.bones.length > 0 && ( geometry.skinWeights.length !== geometry.skinIndices.length || geometry.skinIndices.length !== geometry.vertices.length ) ) {\n\n\t\t\t\tconsole.warn( 'When skinning, number of vertices (' + geometry.vertices.length + '), skinIndices (' +\n\t\t\t\t\tgeometry.skinIndices.length + '), and skinWeights (' + geometry.skinWeights.length + ') should match.' );\n\n\t\t\t}\n\n\t\t}\n\n\t\tfunction parseMorphing( scale ) {\n\n\t\t\tif ( json.morphTargets !== undefined ) {\n\n\t\t\t\tfor ( var i = 0, l = json.morphTargets.length; i < l; i ++ ) {\n\n\t\t\t\t\tgeometry.morphTargets[ i ] = {};\n\t\t\t\t\tgeometry.morphTargets[ i ].name = json.morphTargets[ i ].name;\n\t\t\t\t\tgeometry.morphTargets[ i ].vertices = [];\n\n\t\t\t\t\tvar dstVertices = geometry.morphTargets[ i ].vertices;\n\t\t\t\t\tvar srcVertices = json.morphTargets[ i ].vertices;\n\n\t\t\t\t\tfor ( var v = 0, vl = srcVertices.length; v < vl; v += 3 ) {\n\n\t\t\t\t\t\tvar vertex = new Vector3();\n\t\t\t\t\t\tvertex.x = srcVertices[ v ] * scale;\n\t\t\t\t\t\tvertex.y = srcVertices[ v + 1 ] * scale;\n\t\t\t\t\t\tvertex.z = srcVertices[ v + 2 ] * scale;\n\n\t\t\t\t\t\tdstVertices.push( vertex );\n\n\t\t\t\t\t}\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t\tif ( json.morphColors !== undefined && json.morphColors.length > 0 ) {\n\n\t\t\t\tconsole.warn( 'THREE.JSONLoader: \"morphColors\" no longer supported. Using them as face colors.' );\n\n\t\t\t\tvar faces = geometry.faces;\n\t\t\t\tvar morphColors = json.morphColors[ 0 ].colors;\n\n\t\t\t\tfor ( var i = 0, l = faces.length; i < l; i ++ ) {\n\n\t\t\t\t\tfaces[ i ].color.fromArray( morphColors, i * 3 );\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t}\n\n\t\tfunction parseAnimations() {\n\n\t\t\tvar outputAnimations = [];\n\n\t\t\t// parse old style Bone/Hierarchy animations\n\t\t\tvar animations = [];\n\n\t\t\tif ( json.animation !== undefined ) {\n\n\t\t\t\tanimations.push( json.animation );\n\n\t\t\t}\n\n\t\t\tif ( json.animations !== undefined ) {\n\n\t\t\t\tif ( json.animations.length ) {\n\n\t\t\t\t\tanimations = animations.concat( json.animations );\n\n\t\t\t\t} else {\n\n\t\t\t\t\tanimations.push( json.animations );\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t\tfor ( var i = 0; i < animations.length; i ++ ) {\n\n\t\t\t\tvar clip = AnimationClip.parseAnimation( animations[ i ], geometry.bones );\n\t\t\t\tif ( clip ) outputAnimations.push( clip );\n\n\t\t\t}\n\n\t\t\t// parse implicit morph animations\n\t\t\tif ( geometry.morphTargets ) {\n\n\t\t\t\t// TODO: Figure out what an appropraite FPS is for morph target animations -- defaulting to 10, but really it is completely arbitrary.\n\t\t\t\tvar morphAnimationClips = AnimationClip.CreateClipsFromMorphTargetSequences( geometry.morphTargets, 10 );\n\t\t\t\toutputAnimations = outputAnimations.concat( morphAnimationClips );\n\n\t\t\t}\n\n\t\t\tif ( outputAnimations.length > 0 ) geometry.animations = outputAnimations;\n\n\t\t}\n\n\t\tif ( json.materials === undefined || json.materials.length === 0 ) {\n\n\t\t\treturn { geometry: geometry };\n\n\t\t} else {\n\n\t\t\tvar materials = Loader.prototype.initMaterials( json.materials, texturePath, this.crossOrigin );\n\n\t\t\treturn { geometry: geometry, materials: materials };\n\n\t\t}\n\n\t}\n\n} );\n\n\nexport { JSONLoader };\n","import { TextureMapping, TextureWrapping, TextureFilter } from '../constants';\nimport { Color } from '../math/Color';\nimport { Matrix4 } from '../math/Matrix4';\nimport { Object3D } from '../core/Object3D';\nimport { Group } from '../objects/Group';\nimport { Sprite } from '../objects/Sprite';\nimport { Points } from '../objects/Points';\nimport { Line } from '../objects/Line';\nimport { LineSegments } from '../objects/LineSegments';\nimport { LOD } from '../objects/LOD';\nimport { Mesh } from '../objects/Mesh';\nimport { SkinnedMesh } from '../objects/SkinnedMesh';\nimport { Fog } from '../scenes/Fog';\nimport { FogExp2 } from '../scenes/FogExp2';\nimport { HemisphereLight } from '../lights/HemisphereLight';\nimport { SpotLight } from '../lights/SpotLight';\nimport { PointLight } from '../lights/PointLight';\nimport { DirectionalLight } from '../lights/DirectionalLight';\nimport { AmbientLight } from '../lights/AmbientLight';\nimport { OrthographicCamera } from '../cameras/OrthographicCamera';\nimport { PerspectiveCamera } from '../cameras/PerspectiveCamera';\nimport { Scene } from '../scenes/Scene';\nimport { Texture } from '../textures/Texture';\nimport { ImageLoader } from './ImageLoader';\nimport { LoadingManager, DefaultLoadingManager } from './LoadingManager';\nimport { AnimationClip } from '../animation/AnimationClip';\nimport { MaterialLoader } from './MaterialLoader';\nimport { BufferGeometryLoader } from './BufferGeometryLoader';\nimport { JSONLoader } from './JSONLoader';\nimport { FileLoader } from './FileLoader';\nimport * as Geometries from '../geometries/Geometries';\n\n/**\n * @author mrdoob / http://mrdoob.com/\n */\n\nfunction ObjectLoader ( manager ) {\n\n\tthis.manager = ( manager !== undefined ) ? manager : DefaultLoadingManager;\n\tthis.texturePath = '';\n\n}\n\nObject.assign( ObjectLoader.prototype, {\n\n\tload: function ( url, onLoad, onProgress, onError ) {\n\n\t\tif ( this.texturePath === '' ) {\n\n\t\t\tthis.texturePath = url.substring( 0, url.lastIndexOf( '/' ) + 1 );\n\n\t\t}\n\n\t\tvar scope = this;\n\n\t\tvar loader = new FileLoader( scope.manager );\n\t\tloader.load( url, function ( text ) {\n\n\t\t\tvar json = null;\n\n\t\t\ttry {\n\n\t\t\t\tjson = JSON.parse( text );\n\n\t\t\t} catch ( error ) {\n\n\t\t\t\tconsole.error( 'THREE:ObjectLoader: Can\\'t parse ' + url + '.', error.message );\n\t\t\t\treturn;\n\n\t\t\t}\n\n\t\t\tvar metadata = json.metadata;\n\n\t\t\tif ( metadata === undefined || metadata.type === undefined || metadata.type.toLowerCase() === 'geometry' ) {\n\n\t\t\t\tconsole.error( 'THREE.ObjectLoader: Can\\'t load ' + url + '. Use THREE.JSONLoader instead.' );\n\t\t\t\treturn;\n\n\t\t\t}\n\n\t\t\tscope.parse( json, onLoad );\n\n\t\t}, onProgress, onError );\n\n\t},\n\n\tsetTexturePath: function ( value ) {\n\n\t\tthis.texturePath = value;\n\n\t},\n\n\tsetCrossOrigin: function ( value ) {\n\n\t\tthis.crossOrigin = value;\n\n\t},\n\n\tparse: function ( json, onLoad ) {\n\n\t\tvar geometries = this.parseGeometries( json.geometries );\n\n\t\tvar images = this.parseImages( json.images, function () {\n\n\t\t\tif ( onLoad !== undefined ) onLoad( object );\n\n\t\t} );\n\n\t\tvar textures = this.parseTextures( json.textures, images );\n\t\tvar materials = this.parseMaterials( json.materials, textures );\n\n\t\tvar object = this.parseObject( json.object, geometries, materials );\n\n\t\tif ( json.animations ) {\n\n\t\t\tobject.animations = this.parseAnimations( json.animations );\n\n\t\t}\n\n\t\tif ( json.images === undefined || json.images.length === 0 ) {\n\n\t\t\tif ( onLoad !== undefined ) onLoad( object );\n\n\t\t}\n\n\t\treturn object;\n\n\t},\n\n\tparseGeometries: function ( json ) {\n\n\t\tvar geometries = {};\n\n\t\tif ( json !== undefined ) {\n\n\t\t\tvar geometryLoader = new JSONLoader();\n\t\t\tvar bufferGeometryLoader = new BufferGeometryLoader();\n\n\t\t\tfor ( var i = 0, l = json.length; i < l; i ++ ) {\n\n\t\t\t\tvar geometry;\n\t\t\t\tvar data = json[ i ];\n\n\t\t\t\tswitch ( data.type ) {\n\n\t\t\t\t\tcase 'PlaneGeometry':\n\t\t\t\t\tcase 'PlaneBufferGeometry':\n\n\t\t\t\t\t\tgeometry = new Geometries[ data.type ](\n\t\t\t\t\t\t\tdata.width,\n\t\t\t\t\t\t\tdata.height,\n\t\t\t\t\t\t\tdata.widthSegments,\n\t\t\t\t\t\t\tdata.heightSegments\n\t\t\t\t\t\t);\n\n\t\t\t\t\t\tbreak;\n\n\t\t\t\t\tcase 'BoxGeometry':\n\t\t\t\t\tcase 'BoxBufferGeometry':\n\t\t\t\t\tcase 'CubeGeometry': // backwards compatible\n\n\t\t\t\t\t\tgeometry = new Geometries[ data.type ](\n\t\t\t\t\t\t\tdata.width,\n\t\t\t\t\t\t\tdata.height,\n\t\t\t\t\t\t\tdata.depth,\n\t\t\t\t\t\t\tdata.widthSegments,\n\t\t\t\t\t\t\tdata.heightSegments,\n\t\t\t\t\t\t\tdata.depthSegments\n\t\t\t\t\t\t);\n\n\t\t\t\t\t\tbreak;\n\n\t\t\t\t\tcase 'CircleGeometry':\n\t\t\t\t\tcase 'CircleBufferGeometry':\n\n\t\t\t\t\t\tgeometry = new Geometries[ data.type ](\n\t\t\t\t\t\t\tdata.radius,\n\t\t\t\t\t\t\tdata.segments,\n\t\t\t\t\t\t\tdata.thetaStart,\n\t\t\t\t\t\t\tdata.thetaLength\n\t\t\t\t\t\t);\n\n\t\t\t\t\t\tbreak;\n\n\t\t\t\t\tcase 'CylinderGeometry':\n\t\t\t\t\tcase 'CylinderBufferGeometry':\n\n\t\t\t\t\t\tgeometry = new Geometries[ data.type ](\n\t\t\t\t\t\t\tdata.radiusTop,\n\t\t\t\t\t\t\tdata.radiusBottom,\n\t\t\t\t\t\t\tdata.height,\n\t\t\t\t\t\t\tdata.radialSegments,\n\t\t\t\t\t\t\tdata.heightSegments,\n\t\t\t\t\t\t\tdata.openEnded,\n\t\t\t\t\t\t\tdata.thetaStart,\n\t\t\t\t\t\t\tdata.thetaLength\n\t\t\t\t\t\t);\n\n\t\t\t\t\t\tbreak;\n\n\t\t\t\t\tcase 'ConeGeometry':\n\t\t\t\t\tcase 'ConeBufferGeometry':\n\n\t\t\t\t\t\tgeometry = new Geometries[ data.type ](\n\t\t\t\t\t\t\tdata.radius,\n\t\t\t\t\t\t\tdata.height,\n\t\t\t\t\t\t\tdata.radialSegments,\n\t\t\t\t\t\t\tdata.heightSegments,\n\t\t\t\t\t\t\tdata.openEnded,\n\t\t\t\t\t\t\tdata.thetaStart,\n\t\t\t\t\t\t\tdata.thetaLength\n\t\t\t\t\t\t);\n\n\t\t\t\t\t\tbreak;\n\n\t\t\t\t\tcase 'SphereGeometry':\n\t\t\t\t\tcase 'SphereBufferGeometry':\n\n\t\t\t\t\t\tgeometry = new Geometries[ data.type ](\n\t\t\t\t\t\t\tdata.radius,\n\t\t\t\t\t\t\tdata.widthSegments,\n\t\t\t\t\t\t\tdata.heightSegments,\n\t\t\t\t\t\t\tdata.phiStart,\n\t\t\t\t\t\t\tdata.phiLength,\n\t\t\t\t\t\t\tdata.thetaStart,\n\t\t\t\t\t\t\tdata.thetaLength\n\t\t\t\t\t\t);\n\n\t\t\t\t\t\tbreak;\n\n\t\t\t\t\tcase 'DodecahedronGeometry':\n\t\t\t\t\tcase 'IcosahedronGeometry':\n\t\t\t\t\tcase 'OctahedronGeometry':\n\t\t\t\t\tcase 'TetrahedronGeometry':\n\n\t\t\t\t\t\tgeometry = new Geometries[ data.type ](\n\t\t\t\t\t\t\tdata.radius,\n\t\t\t\t\t\t\tdata.detail\n\t\t\t\t\t\t);\n\n\t\t\t\t\t\tbreak;\n\n\t\t\t\t\tcase 'RingGeometry':\n\t\t\t\t\tcase 'RingBufferGeometry':\n\n\t\t\t\t\t\tgeometry = new Geometries[ data.type ](\n\t\t\t\t\t\t\tdata.innerRadius,\n\t\t\t\t\t\t\tdata.outerRadius,\n\t\t\t\t\t\t\tdata.thetaSegments,\n\t\t\t\t\t\t\tdata.phiSegments,\n\t\t\t\t\t\t\tdata.thetaStart,\n\t\t\t\t\t\t\tdata.thetaLength\n\t\t\t\t\t\t);\n\n\t\t\t\t\t\tbreak;\n\n\t\t\t\t\tcase 'TorusGeometry':\n\t\t\t\t\tcase 'TorusBufferGeometry':\n\n\t\t\t\t\t\tgeometry = new Geometries[ data.type ](\n\t\t\t\t\t\t\tdata.radius,\n\t\t\t\t\t\t\tdata.tube,\n\t\t\t\t\t\t\tdata.radialSegments,\n\t\t\t\t\t\t\tdata.tubularSegments,\n\t\t\t\t\t\t\tdata.arc\n\t\t\t\t\t\t);\n\n\t\t\t\t\t\tbreak;\n\n\t\t\t\t\tcase 'TorusKnotGeometry':\n\t\t\t\t\tcase 'TorusKnotBufferGeometry':\n\n\t\t\t\t\t\tgeometry = new Geometries[ data.type ](\n\t\t\t\t\t\t\tdata.radius,\n\t\t\t\t\t\t\tdata.tube,\n\t\t\t\t\t\t\tdata.tubularSegments,\n\t\t\t\t\t\t\tdata.radialSegments,\n\t\t\t\t\t\t\tdata.p,\n\t\t\t\t\t\t\tdata.q\n\t\t\t\t\t\t);\n\n\t\t\t\t\t\tbreak;\n\n\t\t\t\t\tcase 'LatheGeometry':\n\t\t\t\t\tcase 'LatheBufferGeometry':\n\n\t\t\t\t\t\tgeometry = new Geometries[ data.type ](\n\t\t\t\t\t\t\tdata.points,\n\t\t\t\t\t\t\tdata.segments,\n\t\t\t\t\t\t\tdata.phiStart,\n\t\t\t\t\t\t\tdata.phiLength\n\t\t\t\t\t\t);\n\n\t\t\t\t\t\tbreak;\n\n\t\t\t\t\tcase 'BufferGeometry':\n\n\t\t\t\t\t\tgeometry = bufferGeometryLoader.parse( data );\n\n\t\t\t\t\t\tbreak;\n\n\t\t\t\t\tcase 'Geometry':\n\n\t\t\t\t\t\tgeometry = geometryLoader.parse( data.data, this.texturePath ).geometry;\n\n\t\t\t\t\t\tbreak;\n\n\t\t\t\t\tdefault:\n\n\t\t\t\t\t\tconsole.warn( 'THREE.ObjectLoader: Unsupported geometry type \"' + data.type + '\"' );\n\n\t\t\t\t\t\tcontinue;\n\n\t\t\t\t}\n\n\t\t\t\tgeometry.uuid = data.uuid;\n\n\t\t\t\tif ( data.name !== undefined ) geometry.name = data.name;\n\n\t\t\t\tgeometries[ data.uuid ] = geometry;\n\n\t\t\t}\n\n\t\t}\n\n\t\treturn geometries;\n\n\t},\n\n\tparseMaterials: function ( json, textures ) {\n\n\t\tvar materials = {};\n\n\t\tif ( json !== undefined ) {\n\n\t\t\tvar loader = new MaterialLoader();\n\t\t\tloader.setTextures( textures );\n\n\t\t\tfor ( var i = 0, l = json.length; i < l; i ++ ) {\n\n\t\t\t\tvar material = loader.parse( json[ i ] );\n\t\t\t\tmaterials[ material.uuid ] = material;\n\n\t\t\t}\n\n\t\t}\n\n\t\treturn materials;\n\n\t},\n\n\tparseAnimations: function ( json ) {\n\n\t\tvar animations = [];\n\n\t\tfor ( var i = 0; i < json.length; i ++ ) {\n\n\t\t\tvar clip = AnimationClip.parse( json[ i ] );\n\n\t\t\tanimations.push( clip );\n\n\t\t}\n\n\t\treturn animations;\n\n\t},\n\n\tparseImages: function ( json, onLoad ) {\n\n\t\tvar scope = this;\n\t\tvar images = {};\n\n\t\tfunction loadImage( url ) {\n\n\t\t\tscope.manager.itemStart( url );\n\n\t\t\treturn loader.load( url, function () {\n\n\t\t\t\tscope.manager.itemEnd( url );\n\n\t\t\t}, undefined, function () {\n\n\t\t\t\tscope.manager.itemError( url );\n\n\t\t\t} );\n\n\t\t}\n\n\t\tif ( json !== undefined && json.length > 0 ) {\n\n\t\t\tvar manager = new LoadingManager( onLoad );\n\n\t\t\tvar loader = new ImageLoader( manager );\n\t\t\tloader.setCrossOrigin( this.crossOrigin );\n\n\t\t\tfor ( var i = 0, l = json.length; i < l; i ++ ) {\n\n\t\t\t\tvar image = json[ i ];\n\t\t\t\tvar path = /^(\\/\\/)|([a-z]+:(\\/\\/)?)/i.test( image.url ) ? image.url : scope.texturePath + image.url;\n\n\t\t\t\timages[ image.uuid ] = loadImage( path );\n\n\t\t\t}\n\n\t\t}\n\n\t\treturn images;\n\n\t},\n\n\tparseTextures: function ( json, images ) {\n\n\t\tfunction parseConstant( value, type ) {\n\n\t\t\tif ( typeof( value ) === 'number' ) return value;\n\n\t\t\tconsole.warn( 'THREE.ObjectLoader.parseTexture: Constant should be in numeric form.', value );\n\n\t\t\treturn type[ value ];\n\n\t\t}\n\n\t\tvar textures = {};\n\n\t\tif ( json !== undefined ) {\n\n\t\t\tfor ( var i = 0, l = json.length; i < l; i ++ ) {\n\n\t\t\t\tvar data = json[ i ];\n\n\t\t\t\tif ( data.image === undefined ) {\n\n\t\t\t\t\tconsole.warn( 'THREE.ObjectLoader: No \"image\" specified for', data.uuid );\n\n\t\t\t\t}\n\n\t\t\t\tif ( images[ data.image ] === undefined ) {\n\n\t\t\t\t\tconsole.warn( 'THREE.ObjectLoader: Undefined image', data.image );\n\n\t\t\t\t}\n\n\t\t\t\tvar texture = new Texture( images[ data.image ] );\n\t\t\t\ttexture.needsUpdate = true;\n\n\t\t\t\ttexture.uuid = data.uuid;\n\n\t\t\t\tif ( data.name !== undefined ) texture.name = data.name;\n\n\t\t\t\tif ( data.mapping !== undefined ) texture.mapping = parseConstant( data.mapping, TextureMapping );\n\n\t\t\t\tif ( data.offset !== undefined ) texture.offset.fromArray( data.offset );\n\t\t\t\tif ( data.repeat !== undefined ) texture.repeat.fromArray( data.repeat );\n\t\t\t\tif ( data.wrap !== undefined ) {\n\n\t\t\t\t\ttexture.wrapS = parseConstant( data.wrap[ 0 ], TextureWrapping );\n\t\t\t\t\ttexture.wrapT = parseConstant( data.wrap[ 1 ], TextureWrapping );\n\n\t\t\t\t}\n\n\t\t\t\tif ( data.minFilter !== undefined ) texture.minFilter = parseConstant( data.minFilter, TextureFilter );\n\t\t\t\tif ( data.magFilter !== undefined ) texture.magFilter = parseConstant( data.magFilter, TextureFilter );\n\t\t\t\tif ( data.anisotropy !== undefined ) texture.anisotropy = data.anisotropy;\n\n\t\t\t\tif ( data.flipY !== undefined ) texture.flipY = data.flipY;\n\n\t\t\t\ttextures[ data.uuid ] = texture;\n\n\t\t\t}\n\n\t\t}\n\n\t\treturn textures;\n\n\t},\n\n\tparseObject: function () {\n\n\t\tvar matrix = new Matrix4();\n\n\t\treturn function parseObject( data, geometries, materials ) {\n\n\t\t\tvar object;\n\n\t\t\tfunction getGeometry( name ) {\n\n\t\t\t\tif ( geometries[ name ] === undefined ) {\n\n\t\t\t\t\tconsole.warn( 'THREE.ObjectLoader: Undefined geometry', name );\n\n\t\t\t\t}\n\n\t\t\t\treturn geometries[ name ];\n\n\t\t\t}\n\n\t\t\tfunction getMaterial( name ) {\n\n\t\t\t\tif ( name === undefined ) return undefined;\n\n\t\t\t\tif ( materials[ name ] === undefined ) {\n\n\t\t\t\t\tconsole.warn( 'THREE.ObjectLoader: Undefined material', name );\n\n\t\t\t\t}\n\n\t\t\t\treturn materials[ name ];\n\n\t\t\t}\n\n\t\t\tswitch ( data.type ) {\n\n\t\t\t\tcase 'Scene':\n\n\t\t\t\t\tobject = new Scene();\n\n\t\t\t\t\tif ( data.background !== undefined ) {\n\n\t\t\t\t\t\tif ( Number.isInteger( data.background ) ) {\n\n\t\t\t\t\t\t\tobject.background = new Color( data.background );\n\n\t\t\t\t\t\t}\n\n\t\t\t\t\t}\n\n\t\t\t\t\tif ( data.fog !== undefined ) {\n\n\t\t\t\t\t\tif ( data.fog.type === 'Fog' ) {\n\n\t\t\t\t\t\t\tobject.fog = new Fog( data.fog.color, data.fog.near, data.fog.far );\n\n\t\t\t\t\t\t} else if ( data.fog.type === 'FogExp2' ) {\n\n\t\t\t\t\t\t\tobject.fog = new FogExp2( data.fog.color, data.fog.density );\n\n\t\t\t\t\t\t}\n\n\t\t\t\t\t}\n\n\t\t\t\t\tbreak;\n\n\t\t\t\tcase 'PerspectiveCamera':\n\n\t\t\t\t\tobject = new PerspectiveCamera( data.fov, data.aspect, data.near, data.far );\n\n\t\t\t\t\tif ( data.focus !== undefined ) object.focus = data.focus;\n\t\t\t\t\tif ( data.zoom !== undefined ) object.zoom = data.zoom;\n\t\t\t\t\tif ( data.filmGauge !== undefined ) object.filmGauge = data.filmGauge;\n\t\t\t\t\tif ( data.filmOffset !== undefined ) object.filmOffset = data.filmOffset;\n\t\t\t\t\tif ( data.view !== undefined ) object.view = Object.assign( {}, data.view );\n\n\t\t\t\t\tbreak;\n\n\t\t\t\tcase 'OrthographicCamera':\n\n\t\t\t\t\tobject = new OrthographicCamera( data.left, data.right, data.top, data.bottom, data.near, data.far );\n\n\t\t\t\t\tbreak;\n\n\t\t\t\tcase 'AmbientLight':\n\n\t\t\t\t\tobject = new AmbientLight( data.color, data.intensity );\n\n\t\t\t\t\tbreak;\n\n\t\t\t\tcase 'DirectionalLight':\n\n\t\t\t\t\tobject = new DirectionalLight( data.color, data.intensity );\n\n\t\t\t\t\tbreak;\n\n\t\t\t\tcase 'PointLight':\n\n\t\t\t\t\tobject = new PointLight( data.color, data.intensity, data.distance, data.decay );\n\n\t\t\t\t\tbreak;\n\n\t\t\t\tcase 'SpotLight':\n\n\t\t\t\t\tobject = new SpotLight( data.color, data.intensity, data.distance, data.angle, data.penumbra, data.decay );\n\n\t\t\t\t\tbreak;\n\n\t\t\t\tcase 'HemisphereLight':\n\n\t\t\t\t\tobject = new HemisphereLight( data.color, data.groundColor, data.intensity );\n\n\t\t\t\t\tbreak;\n\n\t\t\t\tcase 'Mesh':\n\n\t\t\t\t\tvar geometry = getGeometry( data.geometry );\n\t\t\t\t\tvar material = getMaterial( data.material );\n\n\t\t\t\t\tif ( geometry.bones && geometry.bones.length > 0 ) {\n\n\t\t\t\t\t\tobject = new SkinnedMesh( geometry, material );\n\n\t\t\t\t\t} else {\n\n\t\t\t\t\t\tobject = new Mesh( geometry, material );\n\n\t\t\t\t\t}\n\n\t\t\t\t\tbreak;\n\n\t\t\t\tcase 'LOD':\n\n\t\t\t\t\tobject = new LOD();\n\n\t\t\t\t\tbreak;\n\n\t\t\t\tcase 'Line':\n\n\t\t\t\t\tobject = new Line( getGeometry( data.geometry ), getMaterial( data.material ), data.mode );\n\n\t\t\t\t\tbreak;\n\n\t\t\t\tcase 'LineSegments':\n\n\t\t\t\t\tobject = new LineSegments( getGeometry( data.geometry ), getMaterial( data.material ) );\n\n\t\t\t\t\tbreak;\n\n\t\t\t\tcase 'PointCloud':\n\t\t\t\tcase 'Points':\n\n\t\t\t\t\tobject = new Points( getGeometry( data.geometry ), getMaterial( data.material ) );\n\n\t\t\t\t\tbreak;\n\n\t\t\t\tcase 'Sprite':\n\n\t\t\t\t\tobject = new Sprite( getMaterial( data.material ) );\n\n\t\t\t\t\tbreak;\n\n\t\t\t\tcase 'Group':\n\n\t\t\t\t\tobject = new Group();\n\n\t\t\t\t\tbreak;\n\n\t\t\t\tdefault:\n\n\t\t\t\t\tobject = new Object3D();\n\n\t\t\t}\n\n\t\t\tobject.uuid = data.uuid;\n\n\t\t\tif ( data.name !== undefined ) object.name = data.name;\n\t\t\tif ( data.matrix !== undefined ) {\n\n\t\t\t\tmatrix.fromArray( data.matrix );\n\t\t\t\tmatrix.decompose( object.position, object.quaternion, object.scale );\n\n\t\t\t} else {\n\n\t\t\t\tif ( data.position !== undefined ) object.position.fromArray( data.position );\n\t\t\t\tif ( data.rotation !== undefined ) object.rotation.fromArray( data.rotation );\n\t\t\t\tif ( data.quaternion !== undefined ) object.quaternion.fromArray( data.quaternion );\n\t\t\t\tif ( data.scale !== undefined ) object.scale.fromArray( data.scale );\n\n\t\t\t}\n\n\t\t\tif ( data.castShadow !== undefined ) object.castShadow = data.castShadow;\n\t\t\tif ( data.receiveShadow !== undefined ) object.receiveShadow = data.receiveShadow;\n\n\t\t\tif ( data.shadow ) {\n\n\t\t\t\tif ( data.shadow.bias !== undefined ) object.shadow.bias = data.shadow.bias;\n\t\t\t\tif ( data.shadow.radius !== undefined ) object.shadow.radius = data.shadow.radius;\n\t\t\t\tif ( data.shadow.mapSize !== undefined ) object.shadow.mapSize.fromArray( data.shadow.mapSize );\n\t\t\t\tif ( data.shadow.camera !== undefined ) object.shadow.camera = this.parseObject( data.shadow.camera );\n\n\t\t\t}\n\n\t\t\tif ( data.visible !== undefined ) object.visible = data.visible;\n\t\t\tif ( data.userData !== undefined ) object.userData = data.userData;\n\n\t\t\tif ( data.children !== undefined ) {\n\n\t\t\t\tfor ( var child in data.children ) {\n\n\t\t\t\t\tobject.add( this.parseObject( data.children[ child ], geometries, materials ) );\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t\tif ( data.type === 'LOD' ) {\n\n\t\t\t\tvar levels = data.levels;\n\n\t\t\t\tfor ( var l = 0; l < levels.length; l ++ ) {\n\n\t\t\t\t\tvar level = levels[ l ];\n\t\t\t\t\tvar child = object.getObjectByProperty( 'uuid', level.object );\n\n\t\t\t\t\tif ( child !== undefined ) {\n\n\t\t\t\t\t\tobject.addLevel( child, level.distance );\n\n\t\t\t\t\t}\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t\treturn object;\n\n\t\t};\n\n\t}()\n\n} );\n\n\nexport { ObjectLoader };\n","import { _Math } from '../../math/Math';\nimport { Vector3 } from '../../math/Vector3';\nimport { Matrix4 } from '../../math/Matrix4';\n\n/**\n * @author zz85 / http://www.lab4games.net/zz85/blog\n * Extensible curve object\n *\n * Some common of Curve methods\n * .getPoint(t), getTangent(t)\n * .getPointAt(u), getTangentAt(u)\n * .getPoints(), .getSpacedPoints()\n * .getLength()\n * .updateArcLengths()\n *\n * This following classes subclasses THREE.Curve:\n *\n * -- 2d classes --\n * THREE.LineCurve\n * THREE.QuadraticBezierCurve\n * THREE.CubicBezierCurve\n * THREE.SplineCurve\n * THREE.ArcCurve\n * THREE.EllipseCurve\n *\n * -- 3d classes --\n * THREE.LineCurve3\n * THREE.QuadraticBezierCurve3\n * THREE.CubicBezierCurve3\n * THREE.SplineCurve3\n *\n * A series of curves can be represented as a THREE.CurvePath\n *\n **/\n\n/**************************************************************\n *\tAbstract Curve base class\n **************************************************************/\n\nfunction Curve() {}\n\nCurve.prototype = {\n\n\tconstructor: Curve,\n\n\t// Virtual base class method to overwrite and implement in subclasses\n\t//\t- t [0 .. 1]\n\n\tgetPoint: function ( t ) {\n\n\t\tconsole.warn( \"THREE.Curve: Warning, getPoint() not implemented!\" );\n\t\treturn null;\n\n\t},\n\n\t// Get point at relative position in curve according to arc length\n\t// - u [0 .. 1]\n\n\tgetPointAt: function ( u ) {\n\n\t\tvar t = this.getUtoTmapping( u );\n\t\treturn this.getPoint( t );\n\n\t},\n\n\t// Get sequence of points using getPoint( t )\n\n\tgetPoints: function ( divisions ) {\n\n\t\tif ( ! divisions ) divisions = 5;\n\n\t\tvar points = [];\n\n\t\tfor ( var d = 0; d <= divisions; d ++ ) {\n\n\t\t\tpoints.push( this.getPoint( d / divisions ) );\n\n\t\t}\n\n\t\treturn points;\n\n\t},\n\n\t// Get sequence of points using getPointAt( u )\n\n\tgetSpacedPoints: function ( divisions ) {\n\n\t\tif ( ! divisions ) divisions = 5;\n\n\t\tvar points = [];\n\n\t\tfor ( var d = 0; d <= divisions; d ++ ) {\n\n\t\t\tpoints.push( this.getPointAt( d / divisions ) );\n\n\t\t}\n\n\t\treturn points;\n\n\t},\n\n\t// Get total curve arc length\n\n\tgetLength: function () {\n\n\t\tvar lengths = this.getLengths();\n\t\treturn lengths[ lengths.length - 1 ];\n\n\t},\n\n\t// Get list of cumulative segment lengths\n\n\tgetLengths: function ( divisions ) {\n\n\t\tif ( ! divisions ) divisions = ( this.__arcLengthDivisions ) ? ( this.__arcLengthDivisions ) : 200;\n\n\t\tif ( this.cacheArcLengths\n\t\t\t&& ( this.cacheArcLengths.length === divisions + 1 )\n\t\t\t&& ! this.needsUpdate ) {\n\n\t\t\t//console.log( \"cached\", this.cacheArcLengths );\n\t\t\treturn this.cacheArcLengths;\n\n\t\t}\n\n\t\tthis.needsUpdate = false;\n\n\t\tvar cache = [];\n\t\tvar current, last = this.getPoint( 0 );\n\t\tvar p, sum = 0;\n\n\t\tcache.push( 0 );\n\n\t\tfor ( p = 1; p <= divisions; p ++ ) {\n\n\t\t\tcurrent = this.getPoint ( p / divisions );\n\t\t\tsum += current.distanceTo( last );\n\t\t\tcache.push( sum );\n\t\t\tlast = current;\n\n\t\t}\n\n\t\tthis.cacheArcLengths = cache;\n\n\t\treturn cache; // { sums: cache, sum:sum }; Sum is in the last element.\n\n\t},\n\n\tupdateArcLengths: function() {\n\n\t\tthis.needsUpdate = true;\n\t\tthis.getLengths();\n\n\t},\n\n\t// Given u ( 0 .. 1 ), get a t to find p. This gives you points which are equidistant\n\n\tgetUtoTmapping: function ( u, distance ) {\n\n\t\tvar arcLengths = this.getLengths();\n\n\t\tvar i = 0, il = arcLengths.length;\n\n\t\tvar targetArcLength; // The targeted u distance value to get\n\n\t\tif ( distance ) {\n\n\t\t\ttargetArcLength = distance;\n\n\t\t} else {\n\n\t\t\ttargetArcLength = u * arcLengths[ il - 1 ];\n\n\t\t}\n\n\t\t//var time = Date.now();\n\n\t\t// binary search for the index with largest value smaller than target u distance\n\n\t\tvar low = 0, high = il - 1, comparison;\n\n\t\twhile ( low <= high ) {\n\n\t\t\ti = Math.floor( low + ( high - low ) / 2 ); // less likely to overflow, though probably not issue here, JS doesn't really have integers, all numbers are floats\n\n\t\t\tcomparison = arcLengths[ i ] - targetArcLength;\n\n\t\t\tif ( comparison < 0 ) {\n\n\t\t\t\tlow = i + 1;\n\n\t\t\t} else if ( comparison > 0 ) {\n\n\t\t\t\thigh = i - 1;\n\n\t\t\t} else {\n\n\t\t\t\thigh = i;\n\t\t\t\tbreak;\n\n\t\t\t\t// DONE\n\n\t\t\t}\n\n\t\t}\n\n\t\ti = high;\n\n\t\t//console.log('b' , i, low, high, Date.now()- time);\n\n\t\tif ( arcLengths[ i ] === targetArcLength ) {\n\n\t\t\tvar t = i / ( il - 1 );\n\t\t\treturn t;\n\n\t\t}\n\n\t\t// we could get finer grain at lengths, or use simple interpolation between two points\n\n\t\tvar lengthBefore = arcLengths[ i ];\n\t\tvar lengthAfter = arcLengths[ i + 1 ];\n\n\t\tvar segmentLength = lengthAfter - lengthBefore;\n\n\t\t// determine where we are between the 'before' and 'after' points\n\n\t\tvar segmentFraction = ( targetArcLength - lengthBefore ) / segmentLength;\n\n\t\t// add that fractional amount to t\n\n\t\tvar t = ( i + segmentFraction ) / ( il - 1 );\n\n\t\treturn t;\n\n\t},\n\n\t// Returns a unit vector tangent at t\n\t// In case any sub curve does not implement its tangent derivation,\n\t// 2 points a small delta apart will be used to find its gradient\n\t// which seems to give a reasonable approximation\n\n\tgetTangent: function( t ) {\n\n\t\tvar delta = 0.0001;\n\t\tvar t1 = t - delta;\n\t\tvar t2 = t + delta;\n\n\t\t// Capping in case of danger\n\n\t\tif ( t1 < 0 ) t1 = 0;\n\t\tif ( t2 > 1 ) t2 = 1;\n\n\t\tvar pt1 = this.getPoint( t1 );\n\t\tvar pt2 = this.getPoint( t2 );\n\n\t\tvar vec = pt2.clone().sub( pt1 );\n\t\treturn vec.normalize();\n\n\t},\n\n\tgetTangentAt: function ( u ) {\n\n\t\tvar t = this.getUtoTmapping( u );\n\t\treturn this.getTangent( t );\n\n\t},\n\n\tcomputeFrenetFrames: function ( segments, closed ) {\n\n\t\t// see http://www.cs.indiana.edu/pub/techreports/TR425.pdf\n\n\t\tvar normal = new Vector3();\n\n\t\tvar tangents = [];\n\t\tvar normals = [];\n\t\tvar binormals = [];\n\n\t\tvar vec = new Vector3();\n\t\tvar mat = new Matrix4();\n\n\t\tvar i, u, theta;\n\n\t\t// compute the tangent vectors for each segment on the curve\n\n\t\tfor ( i = 0; i <= segments; i ++ ) {\n\n\t\t\tu = i / segments;\n\n\t\t\ttangents[ i ] = this.getTangentAt( u );\n\t\t\ttangents[ i ].normalize();\n\n\t\t}\n\n\t\t// select an initial normal vector perpendicular to the first tangent vector,\n\t\t// and in the direction of the minimum tangent xyz component\n\n\t\tnormals[ 0 ] = new Vector3();\n\t\tbinormals[ 0 ] = new Vector3();\n\t\tvar min = Number.MAX_VALUE;\n\t\tvar tx = Math.abs( tangents[ 0 ].x );\n\t\tvar ty = Math.abs( tangents[ 0 ].y );\n\t\tvar tz = Math.abs( tangents[ 0 ].z );\n\n\t\tif ( tx <= min ) {\n\n\t\t\tmin = tx;\n\t\t\tnormal.set( 1, 0, 0 );\n\n\t\t}\n\n\t\tif ( ty <= min ) {\n\n\t\t\tmin = ty;\n\t\t\tnormal.set( 0, 1, 0 );\n\n\t\t}\n\n\t\tif ( tz <= min ) {\n\n\t\t\tnormal.set( 0, 0, 1 );\n\n\t\t}\n\n\t\tvec.crossVectors( tangents[ 0 ], normal ).normalize();\n\n\t\tnormals[ 0 ].crossVectors( tangents[ 0 ], vec );\n\t\tbinormals[ 0 ].crossVectors( tangents[ 0 ], normals[ 0 ] );\n\n\n\t\t// compute the slowly-varying normal and binormal vectors for each segment on the curve\n\n\t\tfor ( i = 1; i <= segments; i ++ ) {\n\n\t\t\tnormals[ i ] = normals[ i - 1 ].clone();\n\n\t\t\tbinormals[ i ] = binormals[ i - 1 ].clone();\n\n\t\t\tvec.crossVectors( tangents[ i - 1 ], tangents[ i ] );\n\n\t\t\tif ( vec.length() > Number.EPSILON ) {\n\n\t\t\t\tvec.normalize();\n\n\t\t\t\ttheta = Math.acos( _Math.clamp( tangents[ i - 1 ].dot( tangents[ i ] ), - 1, 1 ) ); // clamp for floating pt errors\n\n\t\t\t\tnormals[ i ].applyMatrix4( mat.makeRotationAxis( vec, theta ) );\n\n\t\t\t}\n\n\t\t\tbinormals[ i ].crossVectors( tangents[ i ], normals[ i ] );\n\n\t\t}\n\n\t\t// if the curve is closed, postprocess the vectors so the first and last normal vectors are the same\n\n\t\tif ( closed === true ) {\n\n\t\t\ttheta = Math.acos( _Math.clamp( normals[ 0 ].dot( normals[ segments ] ), - 1, 1 ) );\n\t\t\ttheta /= segments;\n\n\t\t\tif ( tangents[ 0 ].dot( vec.crossVectors( normals[ 0 ], normals[ segments ] ) ) > 0 ) {\n\n\t\t\t\ttheta = - theta;\n\n\t\t\t}\n\n\t\t\tfor ( i = 1; i <= segments; i ++ ) {\n\n\t\t\t\t// twist a little...\n\t\t\t\tnormals[ i ].applyMatrix4( mat.makeRotationAxis( tangents[ i ], theta * i ) );\n\t\t\t\tbinormals[ i ].crossVectors( tangents[ i ], normals[ i ] );\n\n\t\t\t}\n\n\t\t}\n\n\t\treturn {\n\t\t\ttangents: tangents,\n\t\t\tnormals: normals,\n\t\t\tbinormals: binormals\n\t\t};\n\n\t}\n\n};\n\n// TODO: Transformation for Curves?\n\n/**************************************************************\n *\t3D Curves\n **************************************************************/\n\n// A Factory method for creating new curve subclasses\n\nCurve.create = function ( constructor, getPointFunc ) {\n\n\tconstructor.prototype = Object.create( Curve.prototype );\n\tconstructor.prototype.constructor = constructor;\n\tconstructor.prototype.getPoint = getPointFunc;\n\n\treturn constructor;\n\n};\n\n\nexport { Curve };\n","import { Curve } from '../core/Curve';\n\n/**************************************************************\n *\tLine\n **************************************************************/\n\nfunction LineCurve( v1, v2 ) {\n\n\tthis.v1 = v1;\n\tthis.v2 = v2;\n\n}\n\nLineCurve.prototype = Object.create( Curve.prototype );\nLineCurve.prototype.constructor = LineCurve;\n\nLineCurve.prototype.isLineCurve = true;\n\nLineCurve.prototype.getPoint = function ( t ) {\n\n\tif ( t === 1 ) {\n\n\t\treturn this.v2.clone();\n\n\t}\n\n\tvar point = this.v2.clone().sub( this.v1 );\n\tpoint.multiplyScalar( t ).add( this.v1 );\n\n\treturn point;\n\n};\n\n// Line curve is linear, so we can overwrite default getPointAt\n\nLineCurve.prototype.getPointAt = function ( u ) {\n\n\treturn this.getPoint( u );\n\n};\n\nLineCurve.prototype.getTangent = function( t ) {\n\n\tvar tangent = this.v2.clone().sub( this.v1 );\n\n\treturn tangent.normalize();\n\n};\n\n\nexport { LineCurve };\n","import { Curve } from './Curve';\nimport { Vector3 } from '../../math/Vector3';\nimport { Geometry } from '../../core/Geometry';\nimport { LineCurve } from '../curves/LineCurve';\n\n/**\n * @author zz85 / http://www.lab4games.net/zz85/blog\n *\n **/\n\n/**************************************************************\n *\tCurved Path - a curve path is simply a array of connected\n * curves, but retains the api of a curve\n **************************************************************/\n\nfunction CurvePath() {\n\n\tthis.curves = [];\n\n\tthis.autoClose = false; // Automatically closes the path\n\n}\n\nCurvePath.prototype = Object.assign( Object.create( Curve.prototype ), {\n\n\tconstructor: CurvePath,\n\n\tadd: function ( curve ) {\n\n\t\tthis.curves.push( curve );\n\n\t},\n\n\tclosePath: function () {\n\n\t\t// Add a line curve if start and end of lines are not connected\n\t\tvar startPoint = this.curves[ 0 ].getPoint( 0 );\n\t\tvar endPoint = this.curves[ this.curves.length - 1 ].getPoint( 1 );\n\n\t\tif ( ! startPoint.equals( endPoint ) ) {\n\n\t\t\tthis.curves.push( new LineCurve( endPoint, startPoint ) );\n\n\t\t}\n\n\t},\n\n\t// To get accurate point with reference to\n\t// entire path distance at time t,\n\t// following has to be done:\n\n\t// 1. Length of each sub path have to be known\n\t// 2. Locate and identify type of curve\n\t// 3. Get t for the curve\n\t// 4. Return curve.getPointAt(t')\n\n\tgetPoint: function ( t ) {\n\n\t\tvar d = t * this.getLength();\n\t\tvar curveLengths = this.getCurveLengths();\n\t\tvar i = 0;\n\n\t\t// To think about boundaries points.\n\n\t\twhile ( i < curveLengths.length ) {\n\n\t\t\tif ( curveLengths[ i ] >= d ) {\n\n\t\t\t\tvar diff = curveLengths[ i ] - d;\n\t\t\t\tvar curve = this.curves[ i ];\n\n\t\t\t\tvar segmentLength = curve.getLength();\n\t\t\t\tvar u = segmentLength === 0 ? 0 : 1 - diff / segmentLength;\n\n\t\t\t\treturn curve.getPointAt( u );\n\n\t\t\t}\n\n\t\t\ti ++;\n\n\t\t}\n\n\t\treturn null;\n\n\t\t// loop where sum != 0, sum > d , sum+1 1 && !points[ points.length - 1 ].equals( points[ 0 ] ) ) {\n\n\t\t\tpoints.push( points[ 0 ] );\n\n\t\t}\n\n\t\treturn points;\n\n\t},\n\n\t/**************************************************************\n\t *\tCreate Geometries Helpers\n\t **************************************************************/\n\n\t/// Generate geometry from path points (for Line or Points objects)\n\n\tcreatePointsGeometry: function ( divisions ) {\n\n\t\tvar pts = this.getPoints( divisions );\n\t\treturn this.createGeometry( pts );\n\n\t},\n\n\t// Generate geometry from equidistant sampling along the path\n\n\tcreateSpacedPointsGeometry: function ( divisions ) {\n\n\t\tvar pts = this.getSpacedPoints( divisions );\n\t\treturn this.createGeometry( pts );\n\n\t},\n\n\tcreateGeometry: function ( points ) {\n\n\t\tvar geometry = new Geometry();\n\n\t\tfor ( var i = 0, l = points.length; i < l; i ++ ) {\n\n\t\t\tvar point = points[ i ];\n\t\t\tgeometry.vertices.push( new Vector3( point.x, point.y, point.z || 0 ) );\n\n\t\t}\n\n\t\treturn geometry;\n\n\t}\n\n} );\n\n\nexport { CurvePath };\n","import { Curve } from '../core/Curve';\nimport { Vector2 } from '../../math/Vector2';\n\n/**************************************************************\n *\tEllipse curve\n **************************************************************/\n\nfunction EllipseCurve( aX, aY, xRadius, yRadius, aStartAngle, aEndAngle, aClockwise, aRotation ) {\n\n\tthis.aX = aX;\n\tthis.aY = aY;\n\n\tthis.xRadius = xRadius;\n\tthis.yRadius = yRadius;\n\n\tthis.aStartAngle = aStartAngle;\n\tthis.aEndAngle = aEndAngle;\n\n\tthis.aClockwise = aClockwise;\n\n\tthis.aRotation = aRotation || 0;\n\n}\n\nEllipseCurve.prototype = Object.create( Curve.prototype );\nEllipseCurve.prototype.constructor = EllipseCurve;\n\nEllipseCurve.prototype.isEllipseCurve = true;\n\nEllipseCurve.prototype.getPoint = function( t ) {\n\n\tvar twoPi = Math.PI * 2;\n\tvar deltaAngle = this.aEndAngle - this.aStartAngle;\n\tvar samePoints = Math.abs( deltaAngle ) < Number.EPSILON;\n\n\t// ensures that deltaAngle is 0 .. 2 PI\n\twhile ( deltaAngle < 0 ) deltaAngle += twoPi;\n\twhile ( deltaAngle > twoPi ) deltaAngle -= twoPi;\n\n\tif ( deltaAngle < Number.EPSILON ) {\n\n\t\tif ( samePoints ) {\n\n\t\t\tdeltaAngle = 0;\n\n\t\t} else {\n\n\t\t\tdeltaAngle = twoPi;\n\n\t\t}\n\n\t}\n\n\tif ( this.aClockwise === true && ! samePoints ) {\n\n\t\tif ( deltaAngle === twoPi ) {\n\n\t\t\tdeltaAngle = - twoPi;\n\n\t\t} else {\n\n\t\t\tdeltaAngle = deltaAngle - twoPi;\n\n\t\t}\n\n\t}\n\n\tvar angle = this.aStartAngle + t * deltaAngle;\n\tvar x = this.aX + this.xRadius * Math.cos( angle );\n\tvar y = this.aY + this.yRadius * Math.sin( angle );\n\n\tif ( this.aRotation !== 0 ) {\n\n\t\tvar cos = Math.cos( this.aRotation );\n\t\tvar sin = Math.sin( this.aRotation );\n\n\t\tvar tx = x - this.aX;\n\t\tvar ty = y - this.aY;\n\n\t\t// Rotate the point about the center of the ellipse.\n\t\tx = tx * cos - ty * sin + this.aX;\n\t\ty = tx * sin + ty * cos + this.aY;\n\n\t}\n\n\treturn new Vector2( x, y );\n\n};\n\n\nexport { EllipseCurve };\n","/**\n * @author zz85 / http://www.lab4games.net/zz85/blog\n */\n\nvar CurveUtils = {\n\n\ttangentQuadraticBezier: function ( t, p0, p1, p2 ) {\n\n\t\treturn 2 * ( 1 - t ) * ( p1 - p0 ) + 2 * t * ( p2 - p1 );\n\n\t},\n\n\t// Puay Bing, thanks for helping with this derivative!\n\n\ttangentCubicBezier: function ( t, p0, p1, p2, p3 ) {\n\n\t\treturn - 3 * p0 * ( 1 - t ) * ( 1 - t ) +\n\t\t\t3 * p1 * ( 1 - t ) * ( 1 - t ) - 6 * t * p1 * ( 1 - t ) +\n\t\t\t6 * t * p2 * ( 1 - t ) - 3 * t * t * p2 +\n\t\t\t3 * t * t * p3;\n\n\t},\n\n\ttangentSpline: function ( t, p0, p1, p2, p3 ) {\n\n\t\t// To check if my formulas are correct\n\n\t\tvar h00 = 6 * t * t - 6 * t; \t// derived from 2t^3 − 3t^2 + 1\n\t\tvar h10 = 3 * t * t - 4 * t + 1; // t^3 − 2t^2 + t\n\t\tvar h01 = - 6 * t * t + 6 * t; \t// − 2t3 + 3t2\n\t\tvar h11 = 3 * t * t - 2 * t;\t// t3 − t2\n\n\t\treturn h00 + h10 + h01 + h11;\n\n\t},\n\n\t// Catmull-Rom\n\n\tinterpolate: function( p0, p1, p2, p3, t ) {\n\n\t\tvar v0 = ( p2 - p0 ) * 0.5;\n\t\tvar v1 = ( p3 - p1 ) * 0.5;\n\t\tvar t2 = t * t;\n\t\tvar t3 = t * t2;\n\t\treturn ( 2 * p1 - 2 * p2 + v0 + v1 ) * t3 + ( - 3 * p1 + 3 * p2 - 2 * v0 - v1 ) * t2 + v0 * t + p1;\n\n\t}\n\n};\n\n\nexport { CurveUtils };\n","import { Curve } from '../core/Curve';\nimport { Vector2 } from '../../math/Vector2';\nimport { CurveUtils } from '../CurveUtils';\n\n/**************************************************************\n *\tSpline curve\n **************************************************************/\n\nfunction SplineCurve( points /* array of Vector2 */ ) {\n\n\tthis.points = ( points === undefined ) ? [] : points;\n\n}\n\nSplineCurve.prototype = Object.create( Curve.prototype );\nSplineCurve.prototype.constructor = SplineCurve;\n\nSplineCurve.prototype.isSplineCurve = true;\n\nSplineCurve.prototype.getPoint = function ( t ) {\n\n\tvar points = this.points;\n\tvar point = ( points.length - 1 ) * t;\n\n\tvar intPoint = Math.floor( point );\n\tvar weight = point - intPoint;\n\n\tvar point0 = points[ intPoint === 0 ? intPoint : intPoint - 1 ];\n\tvar point1 = points[ intPoint ];\n\tvar point2 = points[ intPoint > points.length - 2 ? points.length - 1 : intPoint + 1 ];\n\tvar point3 = points[ intPoint > points.length - 3 ? points.length - 1 : intPoint + 2 ];\n\n\tvar interpolate = CurveUtils.interpolate;\n\n\treturn new Vector2(\n\t\tinterpolate( point0.x, point1.x, point2.x, point3.x, weight ),\n\t\tinterpolate( point0.y, point1.y, point2.y, point3.y, weight )\n\t);\n\n};\n\n\nexport { SplineCurve };\n","import { Curve } from '../core/Curve';\nimport { Vector2 } from '../../math/Vector2';\nimport { CurveUtils } from '../CurveUtils';\nimport { ShapeUtils } from '../ShapeUtils';\n\n/**************************************************************\n *\tCubic Bezier curve\n **************************************************************/\n\nfunction CubicBezierCurve( v0, v1, v2, v3 ) {\n\n\tthis.v0 = v0;\n\tthis.v1 = v1;\n\tthis.v2 = v2;\n\tthis.v3 = v3;\n\n}\n\nCubicBezierCurve.prototype = Object.create( Curve.prototype );\nCubicBezierCurve.prototype.constructor = CubicBezierCurve;\n\nCubicBezierCurve.prototype.getPoint = function ( t ) {\n\n\tvar b3 = ShapeUtils.b3;\n\n\treturn new Vector2(\n\t\tb3( t, this.v0.x, this.v1.x, this.v2.x, this.v3.x ),\n\t\tb3( t, this.v0.y, this.v1.y, this.v2.y, this.v3.y )\n\t);\n\n};\n\nCubicBezierCurve.prototype.getTangent = function( t ) {\n\n\tvar tangentCubicBezier = CurveUtils.tangentCubicBezier;\n\n\treturn new Vector2(\n\t\ttangentCubicBezier( t, this.v0.x, this.v1.x, this.v2.x, this.v3.x ),\n\t\ttangentCubicBezier( t, this.v0.y, this.v1.y, this.v2.y, this.v3.y )\n\t).normalize();\n\n};\n\n\nexport { CubicBezierCurve };\n","import { Curve } from '../core/Curve';\nimport { Vector2 } from '../../math/Vector2';\nimport { CurveUtils } from '../CurveUtils';\nimport { ShapeUtils } from '../ShapeUtils';\n\n/**************************************************************\n *\tQuadratic Bezier curve\n **************************************************************/\n\n\nfunction QuadraticBezierCurve( v0, v1, v2 ) {\n\n\tthis.v0 = v0;\n\tthis.v1 = v1;\n\tthis.v2 = v2;\n\n}\n\nQuadraticBezierCurve.prototype = Object.create( Curve.prototype );\nQuadraticBezierCurve.prototype.constructor = QuadraticBezierCurve;\n\n\nQuadraticBezierCurve.prototype.getPoint = function ( t ) {\n\n\tvar b2 = ShapeUtils.b2;\n\n\treturn new Vector2(\n\t\tb2( t, this.v0.x, this.v1.x, this.v2.x ),\n\t\tb2( t, this.v0.y, this.v1.y, this.v2.y )\n\t);\n\n};\n\n\nQuadraticBezierCurve.prototype.getTangent = function( t ) {\n\n\tvar tangentQuadraticBezier = CurveUtils.tangentQuadraticBezier;\n\n\treturn new Vector2(\n\t\ttangentQuadraticBezier( t, this.v0.x, this.v1.x, this.v2.x ),\n\t\ttangentQuadraticBezier( t, this.v0.y, this.v1.y, this.v2.y )\n\t).normalize();\n\n};\n\n\nexport { QuadraticBezierCurve };\n","import { CurvePath } from './CurvePath';\nimport { EllipseCurve } from '../curves/EllipseCurve';\nimport { SplineCurve } from '../curves/SplineCurve';\nimport { Vector2 } from '../../math/Vector2';\nimport { CubicBezierCurve } from '../curves/CubicBezierCurve';\nimport { QuadraticBezierCurve } from '../curves/QuadraticBezierCurve';\nimport { LineCurve } from '../curves/LineCurve';\n\nvar PathPrototype = Object.assign( Object.create( CurvePath.prototype ), {\n\n\tfromPoints: function ( vectors ) {\n\n\t\tthis.moveTo( vectors[ 0 ].x, vectors[ 0 ].y );\n\n\t\tfor ( var i = 1, l = vectors.length; i < l; i ++ ) {\n\n\t\t\tthis.lineTo( vectors[ i ].x, vectors[ i ].y );\n\n\t\t}\n\n\t},\n\n\tmoveTo: function ( x, y ) {\n\n\t\tthis.currentPoint.set( x, y ); // TODO consider referencing vectors instead of copying?\n\n\t},\n\n\tlineTo: function ( x, y ) {\n\n\t\tvar curve = new LineCurve( this.currentPoint.clone(), new Vector2( x, y ) );\n\t\tthis.curves.push( curve );\n\n\t\tthis.currentPoint.set( x, y );\n\n\t},\n\n\tquadraticCurveTo: function ( aCPx, aCPy, aX, aY ) {\n\n\t\tvar curve = new QuadraticBezierCurve(\n\t\t\tthis.currentPoint.clone(),\n\t\t\tnew Vector2( aCPx, aCPy ),\n\t\t\tnew Vector2( aX, aY )\n\t\t);\n\n\t\tthis.curves.push( curve );\n\n\t\tthis.currentPoint.set( aX, aY );\n\n\t},\n\n\tbezierCurveTo: function ( aCP1x, aCP1y, aCP2x, aCP2y, aX, aY ) {\n\n\t\tvar curve = new CubicBezierCurve(\n\t\t\tthis.currentPoint.clone(),\n\t\t\tnew Vector2( aCP1x, aCP1y ),\n\t\t\tnew Vector2( aCP2x, aCP2y ),\n\t\t\tnew Vector2( aX, aY )\n\t\t);\n\n\t\tthis.curves.push( curve );\n\n\t\tthis.currentPoint.set( aX, aY );\n\n\t},\n\n\tsplineThru: function ( pts /*Array of Vector*/ ) {\n\n\t\tvar npts = [ this.currentPoint.clone() ].concat( pts );\n\n\t\tvar curve = new SplineCurve( npts );\n\t\tthis.curves.push( curve );\n\n\t\tthis.currentPoint.copy( pts[ pts.length - 1 ] );\n\n\t},\n\n\tarc: function ( aX, aY, aRadius, aStartAngle, aEndAngle, aClockwise ) {\n\n\t\tvar x0 = this.currentPoint.x;\n\t\tvar y0 = this.currentPoint.y;\n\n\t\tthis.absarc( aX + x0, aY + y0, aRadius,\n\t\t\taStartAngle, aEndAngle, aClockwise );\n\n\t},\n\n\tabsarc: function ( aX, aY, aRadius, aStartAngle, aEndAngle, aClockwise ) {\n\n\t\tthis.absellipse( aX, aY, aRadius, aRadius, aStartAngle, aEndAngle, aClockwise );\n\n\t},\n\n\tellipse: function ( aX, aY, xRadius, yRadius, aStartAngle, aEndAngle, aClockwise, aRotation ) {\n\n\t\tvar x0 = this.currentPoint.x;\n\t\tvar y0 = this.currentPoint.y;\n\n\t\tthis.absellipse( aX + x0, aY + y0, xRadius, yRadius, aStartAngle, aEndAngle, aClockwise, aRotation );\n\n\t},\n\n\tabsellipse: function ( aX, aY, xRadius, yRadius, aStartAngle, aEndAngle, aClockwise, aRotation ) {\n\n\t\tvar curve = new EllipseCurve( aX, aY, xRadius, yRadius, aStartAngle, aEndAngle, aClockwise, aRotation );\n\n\t\tif ( this.curves.length > 0 ) {\n\n\t\t\t// if a previous curve is present, attempt to join\n\t\t\tvar firstPoint = curve.getPoint( 0 );\n\n\t\t\tif ( ! firstPoint.equals( this.currentPoint ) ) {\n\n\t\t\t\tthis.lineTo( firstPoint.x, firstPoint.y );\n\n\t\t\t}\n\n\t\t}\n\n\t\tthis.curves.push( curve );\n\n\t\tvar lastPoint = curve.getPoint( 1 );\n\t\tthis.currentPoint.copy( lastPoint );\n\n\t}\n\n} );\n\nexport { PathPrototype };\n","import { PathPrototype } from './PathPrototype';\nimport { Path } from './Path';\n\n/**\n * @author zz85 / http://www.lab4games.net/zz85/blog\n * Defines a 2d shape plane using paths.\n **/\n\n// STEP 1 Create a path.\n// STEP 2 Turn path into shape.\n// STEP 3 ExtrudeGeometry takes in Shape/Shapes\n// STEP 3a - Extract points from each shape, turn to vertices\n// STEP 3b - Triangulate each shape, add faces.\n\nfunction Shape() {\n\n\tPath.apply( this, arguments );\n\n\tthis.holes = [];\n\n}\n\nShape.prototype = Object.assign( Object.create( PathPrototype ), {\n\n\tconstructor: Shape,\n\n\tgetPointsHoles: function ( divisions ) {\n\n\t\tvar holesPts = [];\n\n\t\tfor ( var i = 0, l = this.holes.length; i < l; i ++ ) {\n\n\t\t\tholesPts[ i ] = this.holes[ i ].getPoints( divisions );\n\n\t\t}\n\n\t\treturn holesPts;\n\n\t},\n\n\t// Get points of shape and holes (keypoints based on segments parameter)\n\n\textractAllPoints: function ( divisions ) {\n\n\t\treturn {\n\n\t\t\tshape: this.getPoints( divisions ),\n\t\t\tholes: this.getPointsHoles( divisions )\n\n\t\t};\n\n\t},\n\n\textractPoints: function ( divisions ) {\n\n\t\treturn this.extractAllPoints( divisions );\n\n\t}\n\n} );\n\n\nexport { Shape };\n","import { PathPrototype } from './PathPrototype';\nimport { Shape } from './Shape';\nimport { ShapeUtils } from '../ShapeUtils';\nimport { Vector2 } from '../../math/Vector2';\nimport { CurvePath } from './CurvePath';\n\n/**\n * @author zz85 / http://www.lab4games.net/zz85/blog\n * Creates free form 2d path using series of points, lines or curves.\n *\n **/\n\nfunction Path( points ) {\n\n\tCurvePath.call( this );\n\tthis.currentPoint = new Vector2();\n\n\tif ( points ) {\n\n\t\tthis.fromPoints( points );\n\n\t}\n\n}\n\nPath.prototype = PathPrototype;\nPathPrototype.constructor = Path;\n\n\n// minimal class for proxing functions to Path. Replaces old \"extractSubpaths()\"\nfunction ShapePath() {\n\tthis.subPaths = [];\n\tthis.currentPath = null;\n}\n\nShapePath.prototype = {\n\tmoveTo: function ( x, y ) {\n\t\tthis.currentPath = new Path();\n\t\tthis.subPaths.push(this.currentPath);\n\t\tthis.currentPath.moveTo( x, y );\n\t},\n\tlineTo: function ( x, y ) {\n\t\tthis.currentPath.lineTo( x, y );\n\t},\n\tquadraticCurveTo: function ( aCPx, aCPy, aX, aY ) {\n\t\tthis.currentPath.quadraticCurveTo( aCPx, aCPy, aX, aY );\n\t},\n\tbezierCurveTo: function ( aCP1x, aCP1y, aCP2x, aCP2y, aX, aY ) {\n\t\tthis.currentPath.bezierCurveTo( aCP1x, aCP1y, aCP2x, aCP2y, aX, aY );\n\t},\n\tsplineThru: function ( pts ) {\n\t\tthis.currentPath.splineThru( pts );\n\t},\n\n\ttoShapes: function ( isCCW, noHoles ) {\n\n\t\tfunction toShapesNoHoles( inSubpaths ) {\n\n\t\t\tvar shapes = [];\n\n\t\t\tfor ( var i = 0, l = inSubpaths.length; i < l; i ++ ) {\n\n\t\t\t\tvar tmpPath = inSubpaths[ i ];\n\n\t\t\t\tvar tmpShape = new Shape();\n\t\t\t\ttmpShape.curves = tmpPath.curves;\n\n\t\t\t\tshapes.push( tmpShape );\n\n\t\t\t}\n\n\t\t\treturn shapes;\n\n\t\t}\n\n\t\tfunction isPointInsidePolygon( inPt, inPolygon ) {\n\n\t\t\tvar polyLen = inPolygon.length;\n\n\t\t\t// inPt on polygon contour => immediate success or\n\t\t\t// toggling of inside/outside at every single! intersection point of an edge\n\t\t\t// with the horizontal line through inPt, left of inPt\n\t\t\t// not counting lowerY endpoints of edges and whole edges on that line\n\t\t\tvar inside = false;\n\t\t\tfor ( var p = polyLen - 1, q = 0; q < polyLen; p = q ++ ) {\n\n\t\t\t\tvar edgeLowPt = inPolygon[ p ];\n\t\t\t\tvar edgeHighPt = inPolygon[ q ];\n\n\t\t\t\tvar edgeDx = edgeHighPt.x - edgeLowPt.x;\n\t\t\t\tvar edgeDy = edgeHighPt.y - edgeLowPt.y;\n\n\t\t\t\tif ( Math.abs( edgeDy ) > Number.EPSILON ) {\n\n\t\t\t\t\t// not parallel\n\t\t\t\t\tif ( edgeDy < 0 ) {\n\n\t\t\t\t\t\tedgeLowPt = inPolygon[ q ]; edgeDx = - edgeDx;\n\t\t\t\t\t\tedgeHighPt = inPolygon[ p ]; edgeDy = - edgeDy;\n\n\t\t\t\t\t}\n\t\t\t\t\tif ( ( inPt.y < edgeLowPt.y ) || ( inPt.y > edgeHighPt.y ) ) \t\tcontinue;\n\n\t\t\t\t\tif ( inPt.y === edgeLowPt.y ) {\n\n\t\t\t\t\t\tif ( inPt.x === edgeLowPt.x )\t\treturn\ttrue;\t\t// inPt is on contour ?\n\t\t\t\t\t\t// continue;\t\t\t\t// no intersection or edgeLowPt => doesn't count !!!\n\n\t\t\t\t\t} else {\n\n\t\t\t\t\t\tvar perpEdge = edgeDy * ( inPt.x - edgeLowPt.x ) - edgeDx * ( inPt.y - edgeLowPt.y );\n\t\t\t\t\t\tif ( perpEdge === 0 )\t\t\t\treturn\ttrue;\t\t// inPt is on contour ?\n\t\t\t\t\t\tif ( perpEdge < 0 ) \t\t\t\tcontinue;\n\t\t\t\t\t\tinside = ! inside;\t\t// true intersection left of inPt\n\n\t\t\t\t\t}\n\n\t\t\t\t} else {\n\n\t\t\t\t\t// parallel or collinear\n\t\t\t\t\tif ( inPt.y !== edgeLowPt.y ) \t\tcontinue;\t\t\t// parallel\n\t\t\t\t\t// edge lies on the same horizontal line as inPt\n\t\t\t\t\tif ( ( ( edgeHighPt.x <= inPt.x ) && ( inPt.x <= edgeLowPt.x ) ) ||\n\t\t\t\t\t\t ( ( edgeLowPt.x <= inPt.x ) && ( inPt.x <= edgeHighPt.x ) ) )\t\treturn\ttrue;\t// inPt: Point on contour !\n\t\t\t\t\t// continue;\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t\treturn\tinside;\n\n\t\t}\n\n\t\tvar isClockWise = ShapeUtils.isClockWise;\n\n\t\tvar subPaths = this.subPaths;\n\t\tif ( subPaths.length === 0 ) return [];\n\n\t\tif ( noHoles === true )\treturn\ttoShapesNoHoles( subPaths );\n\n\n\t\tvar solid, tmpPath, tmpShape, shapes = [];\n\n\t\tif ( subPaths.length === 1 ) {\n\n\t\t\ttmpPath = subPaths[ 0 ];\n\t\t\ttmpShape = new Shape();\n\t\t\ttmpShape.curves = tmpPath.curves;\n\t\t\tshapes.push( tmpShape );\n\t\t\treturn shapes;\n\n\t\t}\n\n\t\tvar holesFirst = ! isClockWise( subPaths[ 0 ].getPoints() );\n\t\tholesFirst = isCCW ? ! holesFirst : holesFirst;\n\n\t\t// console.log(\"Holes first\", holesFirst);\n\n\t\tvar betterShapeHoles = [];\n\t\tvar newShapes = [];\n\t\tvar newShapeHoles = [];\n\t\tvar mainIdx = 0;\n\t\tvar tmpPoints;\n\n\t\tnewShapes[ mainIdx ] = undefined;\n\t\tnewShapeHoles[ mainIdx ] = [];\n\n\t\tfor ( var i = 0, l = subPaths.length; i < l; i ++ ) {\n\n\t\t\ttmpPath = subPaths[ i ];\n\t\t\ttmpPoints = tmpPath.getPoints();\n\t\t\tsolid = isClockWise( tmpPoints );\n\t\t\tsolid = isCCW ? ! solid : solid;\n\n\t\t\tif ( solid ) {\n\n\t\t\t\tif ( ( ! holesFirst ) && ( newShapes[ mainIdx ] ) )\tmainIdx ++;\n\n\t\t\t\tnewShapes[ mainIdx ] = { s: new Shape(), p: tmpPoints };\n\t\t\t\tnewShapes[ mainIdx ].s.curves = tmpPath.curves;\n\n\t\t\t\tif ( holesFirst )\tmainIdx ++;\n\t\t\t\tnewShapeHoles[ mainIdx ] = [];\n\n\t\t\t\t//console.log('cw', i);\n\n\t\t\t} else {\n\n\t\t\t\tnewShapeHoles[ mainIdx ].push( { h: tmpPath, p: tmpPoints[ 0 ] } );\n\n\t\t\t\t//console.log('ccw', i);\n\n\t\t\t}\n\n\t\t}\n\n\t\t// only Holes? -> probably all Shapes with wrong orientation\n\t\tif ( ! newShapes[ 0 ] )\treturn\ttoShapesNoHoles( subPaths );\n\n\n\t\tif ( newShapes.length > 1 ) {\n\n\t\t\tvar ambiguous = false;\n\t\t\tvar toChange = [];\n\n\t\t\tfor ( var sIdx = 0, sLen = newShapes.length; sIdx < sLen; sIdx ++ ) {\n\n\t\t\t\tbetterShapeHoles[ sIdx ] = [];\n\n\t\t\t}\n\n\t\t\tfor ( var sIdx = 0, sLen = newShapes.length; sIdx < sLen; sIdx ++ ) {\n\n\t\t\t\tvar sho = newShapeHoles[ sIdx ];\n\n\t\t\t\tfor ( var hIdx = 0; hIdx < sho.length; hIdx ++ ) {\n\n\t\t\t\t\tvar ho = sho[ hIdx ];\n\t\t\t\t\tvar hole_unassigned = true;\n\n\t\t\t\t\tfor ( var s2Idx = 0; s2Idx < newShapes.length; s2Idx ++ ) {\n\n\t\t\t\t\t\tif ( isPointInsidePolygon( ho.p, newShapes[ s2Idx ].p ) ) {\n\n\t\t\t\t\t\t\tif ( sIdx !== s2Idx )\ttoChange.push( { froms: sIdx, tos: s2Idx, hole: hIdx } );\n\t\t\t\t\t\t\tif ( hole_unassigned ) {\n\n\t\t\t\t\t\t\t\thole_unassigned = false;\n\t\t\t\t\t\t\t\tbetterShapeHoles[ s2Idx ].push( ho );\n\n\t\t\t\t\t\t\t} else {\n\n\t\t\t\t\t\t\t\tambiguous = true;\n\n\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t}\n\n\t\t\t\t\t}\n\t\t\t\t\tif ( hole_unassigned ) {\n\n\t\t\t\t\t\tbetterShapeHoles[ sIdx ].push( ho );\n\n\t\t\t\t\t}\n\n\t\t\t\t}\n\n\t\t\t}\n\t\t\t// console.log(\"ambiguous: \", ambiguous);\n\t\t\tif ( toChange.length > 0 ) {\n\n\t\t\t\t// console.log(\"to change: \", toChange);\n\t\t\t\tif ( ! ambiguous )\tnewShapeHoles = betterShapeHoles;\n\n\t\t\t}\n\n\t\t}\n\n\t\tvar tmpHoles;\n\n\t\tfor ( var i = 0, il = newShapes.length; i < il; i ++ ) {\n\n\t\t\ttmpShape = newShapes[ i ].s;\n\t\t\tshapes.push( tmpShape );\n\t\t\ttmpHoles = newShapeHoles[ i ];\n\n\t\t\tfor ( var j = 0, jl = tmpHoles.length; j < jl; j ++ ) {\n\n\t\t\t\ttmpShape.holes.push( tmpHoles[ j ].h );\n\n\t\t\t}\n\n\t\t}\n\n\t\t//console.log(\"shape\", shapes);\n\n\t\treturn shapes;\n\n\t}\n}\n\n\nexport { ShapePath, Path };\n","import { ShapeUtils } from '../ShapeUtils';\nimport { ShapePath } from './Path';\n\n/**\n * @author zz85 / http://www.lab4games.net/zz85/blog\n * @author mrdoob / http://mrdoob.com/\n */\n\nfunction Font( data ) {\n\n\tthis.data = data;\n\n}\n\nObject.assign( Font.prototype, {\n\n\tisFont: true,\n\n\tgenerateShapes: function ( text, size, divisions ) {\n\n\t\tfunction createPaths( text ) {\n\n\t\t\tvar chars = String( text ).split( '' );\n\t\t\tvar scale = size / data.resolution;\n\t\t\tvar offset = 0;\n\n\t\t\tvar paths = [];\n\n\t\t\tfor ( var i = 0; i < chars.length; i ++ ) {\n\n\t\t\t\tvar ret = createPath( chars[ i ], scale, offset );\n\t\t\t\toffset += ret.offset;\n\n\t\t\t\tpaths.push( ret.path );\n\n\t\t\t}\n\n\t\t\treturn paths;\n\n\t\t}\n\n\t\tfunction createPath( c, scale, offset ) {\n\n\t\t\tvar glyph = data.glyphs[ c ] || data.glyphs[ '?' ];\n\n\t\t\tif ( ! glyph ) return;\n\n\t\t\tvar path = new ShapePath();\n\n\t\t\tvar pts = [], b2 = ShapeUtils.b2, b3 = ShapeUtils.b3;\n\t\t\tvar x, y, cpx, cpy, cpx0, cpy0, cpx1, cpy1, cpx2, cpy2, laste;\n\n\t\t\tif ( glyph.o ) {\n\n\t\t\t\tvar outline = glyph._cachedOutline || ( glyph._cachedOutline = glyph.o.split( ' ' ) );\n\n\t\t\t\tfor ( var i = 0, l = outline.length; i < l; ) {\n\n\t\t\t\t\tvar action = outline[ i ++ ];\n\n\t\t\t\t\tswitch ( action ) {\n\n\t\t\t\t\t\tcase 'm': // moveTo\n\n\t\t\t\t\t\t\tx = outline[ i ++ ] * scale + offset;\n\t\t\t\t\t\t\ty = outline[ i ++ ] * scale;\n\n\t\t\t\t\t\t\tpath.moveTo( x, y );\n\n\t\t\t\t\t\t\tbreak;\n\n\t\t\t\t\t\tcase 'l': // lineTo\n\n\t\t\t\t\t\t\tx = outline[ i ++ ] * scale + offset;\n\t\t\t\t\t\t\ty = outline[ i ++ ] * scale;\n\n\t\t\t\t\t\t\tpath.lineTo( x, y );\n\n\t\t\t\t\t\t\tbreak;\n\n\t\t\t\t\t\tcase 'q': // quadraticCurveTo\n\n\t\t\t\t\t\t\tcpx = outline[ i ++ ] * scale + offset;\n\t\t\t\t\t\t\tcpy = outline[ i ++ ] * scale;\n\t\t\t\t\t\t\tcpx1 = outline[ i ++ ] * scale + offset;\n\t\t\t\t\t\t\tcpy1 = outline[ i ++ ] * scale;\n\n\t\t\t\t\t\t\tpath.quadraticCurveTo( cpx1, cpy1, cpx, cpy );\n\n\t\t\t\t\t\t\tlaste = pts[ pts.length - 1 ];\n\n\t\t\t\t\t\t\tif ( laste ) {\n\n\t\t\t\t\t\t\t\tcpx0 = laste.x;\n\t\t\t\t\t\t\t\tcpy0 = laste.y;\n\n\t\t\t\t\t\t\t\tfor ( var i2 = 1; i2 <= divisions; i2 ++ ) {\n\n\t\t\t\t\t\t\t\t\tvar t = i2 / divisions;\n\t\t\t\t\t\t\t\t\tb2( t, cpx0, cpx1, cpx );\n\t\t\t\t\t\t\t\t\tb2( t, cpy0, cpy1, cpy );\n\n\t\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\tbreak;\n\n\t\t\t\t\t\tcase 'b': // bezierCurveTo\n\n\t\t\t\t\t\t\tcpx = outline[ i ++ ] * scale + offset;\n\t\t\t\t\t\t\tcpy = outline[ i ++ ] * scale;\n\t\t\t\t\t\t\tcpx1 = outline[ i ++ ] * scale + offset;\n\t\t\t\t\t\t\tcpy1 = outline[ i ++ ] * scale;\n\t\t\t\t\t\t\tcpx2 = outline[ i ++ ] * scale + offset;\n\t\t\t\t\t\t\tcpy2 = outline[ i ++ ] * scale;\n\n\t\t\t\t\t\t\tpath.bezierCurveTo( cpx1, cpy1, cpx2, cpy2, cpx, cpy );\n\n\t\t\t\t\t\t\tlaste = pts[ pts.length - 1 ];\n\n\t\t\t\t\t\t\tif ( laste ) {\n\n\t\t\t\t\t\t\t\tcpx0 = laste.x;\n\t\t\t\t\t\t\t\tcpy0 = laste.y;\n\n\t\t\t\t\t\t\t\tfor ( var i2 = 1; i2 <= divisions; i2 ++ ) {\n\n\t\t\t\t\t\t\t\t\tvar t = i2 / divisions;\n\t\t\t\t\t\t\t\t\tb3( t, cpx0, cpx1, cpx2, cpx );\n\t\t\t\t\t\t\t\t\tb3( t, cpy0, cpy1, cpy2, cpy );\n\n\t\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\tbreak;\n\n\t\t\t\t\t}\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t\treturn { offset: glyph.ha * scale, path: path };\n\n\t\t}\n\n\t\t//\n\n\t\tif ( size === undefined ) size = 100;\n\t\tif ( divisions === undefined ) divisions = 4;\n\n\t\tvar data = this.data;\n\n\t\tvar paths = createPaths( text );\n\t\tvar shapes = [];\n\n\t\tfor ( var p = 0, pl = paths.length; p < pl; p ++ ) {\n\n\t\t\tArray.prototype.push.apply( shapes, paths[ p ].toShapes() );\n\n\t\t}\n\n\t\treturn shapes;\n\n\t}\n\n} );\n\n\nexport { Font };\n","import { Font } from '../extras/core/Font';\nimport { FileLoader } from './FileLoader';\nimport { DefaultLoadingManager } from './LoadingManager';\n\n/**\n * @author mrdoob / http://mrdoob.com/\n */\n\nfunction FontLoader( manager ) {\n\n\tthis.manager = ( manager !== undefined ) ? manager : DefaultLoadingManager;\n\n}\n\nObject.assign( FontLoader.prototype, {\n\n\tload: function ( url, onLoad, onProgress, onError ) {\n\n\t\tvar scope = this;\n\n\t\tvar loader = new FileLoader( this.manager );\n\t\tloader.load( url, function ( text ) {\n\n\t\t\tvar json;\n\n\t\t\ttry {\n\n\t\t\t\tjson = JSON.parse( text );\n\n\t\t\t} catch ( e ) {\n\n\t\t\t\tconsole.warn( 'THREE.FontLoader: typeface.js support is being deprecated. Use typeface.json instead.' );\n\t\t\t\tjson = JSON.parse( text.substring( 65, text.length - 2 ) );\n\n\t\t\t}\n\n\t\t\tvar font = scope.parse( json );\n\n\t\t\tif ( onLoad ) onLoad( font );\n\n\t\t}, onProgress, onError );\n\n\t},\n\n\tparse: function ( json ) {\n\n\t\treturn new Font( json );\n\n\t}\n\n} );\n\n\nexport { FontLoader };\n","var context;\n\nexport function getAudioContext() {\n\n\tif ( context === undefined ) {\n\n\t\tcontext = new ( window.AudioContext || window.webkitAudioContext )();\n\n\t}\n\n\treturn context;\n\n}\n","import { getAudioContext } from '../audio/AudioContext';\nimport { FileLoader } from './FileLoader';\nimport { DefaultLoadingManager } from './LoadingManager';\n\n/**\n * @author Reece Aaron Lecrivain / http://reecenotes.com/\n */\n\nfunction AudioLoader( manager ) {\n\n\tthis.manager = ( manager !== undefined ) ? manager : DefaultLoadingManager;\n\n}\n\nObject.assign( AudioLoader.prototype, {\n\n\tload: function ( url, onLoad, onProgress, onError ) {\n\n\t\tvar loader = new FileLoader( this.manager );\n\t\tloader.setResponseType( 'arraybuffer' );\n\t\tloader.load( url, function ( buffer ) {\n\n\t\t\tvar context = getAudioContext();\n\n\t\t\tcontext.decodeAudioData( buffer, function ( audioBuffer ) {\n\n\t\t\t\tonLoad( audioBuffer );\n\n\t\t\t} );\n\n\t\t}, onProgress, onError );\n\n\t}\n\n} );\n\n\nexport { AudioLoader };\n","import { Matrix4 } from '../math/Matrix4';\nimport { _Math } from '../math/Math';\nimport { PerspectiveCamera } from './PerspectiveCamera';\n\n/**\n * @author mrdoob / http://mrdoob.com/\n */\n\nfunction StereoCamera() {\n\n\tthis.type = 'StereoCamera';\n\n\tthis.aspect = 1;\n\n\tthis.eyeSep = 0.064;\n\n\tthis.cameraL = new PerspectiveCamera();\n\tthis.cameraL.layers.enable( 1 );\n\tthis.cameraL.matrixAutoUpdate = false;\n\n\tthis.cameraR = new PerspectiveCamera();\n\tthis.cameraR.layers.enable( 2 );\n\tthis.cameraR.matrixAutoUpdate = false;\n\n}\n\nObject.assign( StereoCamera.prototype, {\n\n\tupdate: ( function () {\n\n\t\tvar instance, focus, fov, aspect, near, far, zoom;\n\n\t\tvar eyeRight = new Matrix4();\n\t\tvar eyeLeft = new Matrix4();\n\n\t\treturn function update( camera ) {\n\n\t\t\tvar needsUpdate = instance !== this || focus !== camera.focus || fov !== camera.fov ||\n\t\t\t\t\t\t\t\t\t\t\t\taspect !== camera.aspect * this.aspect || near !== camera.near ||\n\t\t\t\t\t\t\t\t\t\t\t\tfar !== camera.far || zoom !== camera.zoom;\n\n\t\t\tif ( needsUpdate ) {\n\n\t\t\t\tinstance = this;\n\t\t\t\tfocus = camera.focus;\n\t\t\t\tfov = camera.fov;\n\t\t\t\taspect = camera.aspect * this.aspect;\n\t\t\t\tnear = camera.near;\n\t\t\t\tfar = camera.far;\n\t\t\t\tzoom = camera.zoom;\n\n\t\t\t\t// Off-axis stereoscopic effect based on\n\t\t\t\t// http://paulbourke.net/stereographics/stereorender/\n\n\t\t\t\tvar projectionMatrix = camera.projectionMatrix.clone();\n\t\t\t\tvar eyeSep = this.eyeSep / 2;\n\t\t\t\tvar eyeSepOnProjection = eyeSep * near / focus;\n\t\t\t\tvar ymax = ( near * Math.tan( _Math.DEG2RAD * fov * 0.5 ) ) / zoom;\n\t\t\t\tvar xmin, xmax;\n\n\t\t\t\t// translate xOffset\n\n\t\t\t\teyeLeft.elements[ 12 ] = - eyeSep;\n\t\t\t\teyeRight.elements[ 12 ] = eyeSep;\n\n\t\t\t\t// for left eye\n\n\t\t\t\txmin = - ymax * aspect + eyeSepOnProjection;\n\t\t\t\txmax = ymax * aspect + eyeSepOnProjection;\n\n\t\t\t\tprojectionMatrix.elements[ 0 ] = 2 * near / ( xmax - xmin );\n\t\t\t\tprojectionMatrix.elements[ 8 ] = ( xmax + xmin ) / ( xmax - xmin );\n\n\t\t\t\tthis.cameraL.projectionMatrix.copy( projectionMatrix );\n\n\t\t\t\t// for right eye\n\n\t\t\t\txmin = - ymax * aspect - eyeSepOnProjection;\n\t\t\t\txmax = ymax * aspect - eyeSepOnProjection;\n\n\t\t\t\tprojectionMatrix.elements[ 0 ] = 2 * near / ( xmax - xmin );\n\t\t\t\tprojectionMatrix.elements[ 8 ] = ( xmax + xmin ) / ( xmax - xmin );\n\n\t\t\t\tthis.cameraR.projectionMatrix.copy( projectionMatrix );\n\n\t\t\t}\n\n\t\t\tthis.cameraL.matrixWorld.copy( camera.matrixWorld ).multiply( eyeLeft );\n\t\t\tthis.cameraR.matrixWorld.copy( camera.matrixWorld ).multiply( eyeRight );\n\n\t\t};\n\n\t} )()\n\n} );\n\n\nexport { StereoCamera };\n","import { Object3D } from '../core/Object3D';\nimport { WebGLRenderTargetCube } from '../renderers/WebGLRenderTargetCube';\nimport { LinearFilter, RGBFormat } from '../constants';\nimport { Vector3 } from '../math/Vector3';\nimport { PerspectiveCamera } from './PerspectiveCamera';\n\n/**\n * Camera for rendering cube maps\n *\t- renders scene into axis-aligned cube\n *\n * @author alteredq / http://alteredqualia.com/\n */\n\nfunction CubeCamera( near, far, cubeResolution ) {\n\n\tObject3D.call( this );\n\n\tthis.type = 'CubeCamera';\n\n\tvar fov = 90, aspect = 1;\n\n\tvar cameraPX = new PerspectiveCamera( fov, aspect, near, far );\n\tcameraPX.up.set( 0, - 1, 0 );\n\tcameraPX.lookAt( new Vector3( 1, 0, 0 ) );\n\tthis.add( cameraPX );\n\n\tvar cameraNX = new PerspectiveCamera( fov, aspect, near, far );\n\tcameraNX.up.set( 0, - 1, 0 );\n\tcameraNX.lookAt( new Vector3( - 1, 0, 0 ) );\n\tthis.add( cameraNX );\n\n\tvar cameraPY = new PerspectiveCamera( fov, aspect, near, far );\n\tcameraPY.up.set( 0, 0, 1 );\n\tcameraPY.lookAt( new Vector3( 0, 1, 0 ) );\n\tthis.add( cameraPY );\n\n\tvar cameraNY = new PerspectiveCamera( fov, aspect, near, far );\n\tcameraNY.up.set( 0, 0, - 1 );\n\tcameraNY.lookAt( new Vector3( 0, - 1, 0 ) );\n\tthis.add( cameraNY );\n\n\tvar cameraPZ = new PerspectiveCamera( fov, aspect, near, far );\n\tcameraPZ.up.set( 0, - 1, 0 );\n\tcameraPZ.lookAt( new Vector3( 0, 0, 1 ) );\n\tthis.add( cameraPZ );\n\n\tvar cameraNZ = new PerspectiveCamera( fov, aspect, near, far );\n\tcameraNZ.up.set( 0, - 1, 0 );\n\tcameraNZ.lookAt( new Vector3( 0, 0, - 1 ) );\n\tthis.add( cameraNZ );\n\n\tvar options = { format: RGBFormat, magFilter: LinearFilter, minFilter: LinearFilter };\n\n\tthis.renderTarget = new WebGLRenderTargetCube( cubeResolution, cubeResolution, options );\n\n\tthis.updateCubeMap = function ( renderer, scene ) {\n\n\t\tif ( this.parent === null ) this.updateMatrixWorld();\n\n\t\tvar renderTarget = this.renderTarget;\n\t\tvar generateMipmaps = renderTarget.texture.generateMipmaps;\n\n\t\trenderTarget.texture.generateMipmaps = false;\n\n\t\trenderTarget.activeCubeFace = 0;\n\t\trenderer.render( scene, cameraPX, renderTarget );\n\n\t\trenderTarget.activeCubeFace = 1;\n\t\trenderer.render( scene, cameraNX, renderTarget );\n\n\t\trenderTarget.activeCubeFace = 2;\n\t\trenderer.render( scene, cameraPY, renderTarget );\n\n\t\trenderTarget.activeCubeFace = 3;\n\t\trenderer.render( scene, cameraNY, renderTarget );\n\n\t\trenderTarget.activeCubeFace = 4;\n\t\trenderer.render( scene, cameraPZ, renderTarget );\n\n\t\trenderTarget.texture.generateMipmaps = generateMipmaps;\n\n\t\trenderTarget.activeCubeFace = 5;\n\t\trenderer.render( scene, cameraNZ, renderTarget );\n\n\t\trenderer.setRenderTarget( null );\n\n\t};\n\n}\n\nCubeCamera.prototype = Object.create( Object3D.prototype );\nCubeCamera.prototype.constructor = CubeCamera;\n\n\nexport { CubeCamera };\n","/**\n * @author mrdoob / http://mrdoob.com/\n */\n\nimport { Vector3 } from '../math/Vector3';\nimport { Quaternion } from '../math/Quaternion';\nimport { Object3D } from '../core/Object3D';\nimport { getAudioContext } from './AudioContext';\n\nfunction AudioListener() {\n\n\tObject3D.call( this );\n\n\tthis.type = 'AudioListener';\n\n\tthis.context = getAudioContext();\n\n\tthis.gain = this.context.createGain();\n\tthis.gain.connect( this.context.destination );\n\n\tthis.filter = null;\n\n}\n\nAudioListener.prototype = Object.assign( Object.create( Object3D.prototype ), {\n\n\tconstructor: AudioListener,\n\n\tgetInput: function () {\n\n\t\treturn this.gain;\n\n\t},\n\n\tremoveFilter: function ( ) {\n\n\t\tif ( this.filter !== null ) {\n\n\t\t\tthis.gain.disconnect( this.filter );\n\t\t\tthis.filter.disconnect( this.context.destination );\n\t\t\tthis.gain.connect( this.context.destination );\n\t\t\tthis.filter = null;\n\n\t\t}\n\n\t},\n\n\tgetFilter: function () {\n\n\t\treturn this.filter;\n\n\t},\n\n\tsetFilter: function ( value ) {\n\n\t\tif ( this.filter !== null ) {\n\n\t\t\tthis.gain.disconnect( this.filter );\n\t\t\tthis.filter.disconnect( this.context.destination );\n\n\t\t} else {\n\n\t\t\tthis.gain.disconnect( this.context.destination );\n\n\t\t}\n\n\t\tthis.filter = value;\n\t\tthis.gain.connect( this.filter );\n\t\tthis.filter.connect( this.context.destination );\n\n\t},\n\n\tgetMasterVolume: function () {\n\n\t\treturn this.gain.gain.value;\n\n\t},\n\n\tsetMasterVolume: function ( value ) {\n\n\t\tthis.gain.gain.value = value;\n\n\t},\n\n\tupdateMatrixWorld: ( function () {\n\n\t\tvar position = new Vector3();\n\t\tvar quaternion = new Quaternion();\n\t\tvar scale = new Vector3();\n\n\t\tvar orientation = new Vector3();\n\n\t\treturn function updateMatrixWorld( force ) {\n\n\t\t\tObject3D.prototype.updateMatrixWorld.call( this, force );\n\n\t\t\tvar listener = this.context.listener;\n\t\t\tvar up = this.up;\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, up.x, up.y, up.z );\n\n\t\t};\n\n\t} )()\n\n} );\n\nexport { AudioListener };\n","/**\n * @author mrdoob / http://mrdoob.com/\n * @author Reece Aaron Lecrivain / http://reecenotes.com/\n */\n\nimport { Object3D } from '../core/Object3D';\n\nfunction Audio( listener ) {\n\n\tObject3D.call( this );\n\n\tthis.type = 'Audio';\n\n\tthis.context = listener.context;\n\tthis.source = this.context.createBufferSource();\n\tthis.source.onended = this.onEnded.bind( this );\n\n\tthis.gain = this.context.createGain();\n\tthis.gain.connect( listener.getInput() );\n\n\tthis.autoplay = false;\n\n\tthis.startTime = 0;\n\tthis.playbackRate = 1;\n\tthis.isPlaying = false;\n\tthis.hasPlaybackControl = true;\n\tthis.sourceType = 'empty';\n\n\tthis.filters = [];\n\n}\n\nAudio.prototype = Object.assign( Object.create( Object3D.prototype ), {\n\n\tconstructor: Audio,\n\n\tgetOutput: function () {\n\n\t\treturn this.gain;\n\n\t},\n\n\tsetNodeSource: function ( audioNode ) {\n\n\t\tthis.hasPlaybackControl = false;\n\t\tthis.sourceType = 'audioNode';\n\t\tthis.source = audioNode;\n\t\tthis.connect();\n\n\t\treturn this;\n\n\t},\n\n\tsetBuffer: function ( audioBuffer ) {\n\n\t\tthis.source.buffer = audioBuffer;\n\t\tthis.sourceType = 'buffer';\n\n\t\tif ( this.autoplay ) this.play();\n\n\t\treturn this;\n\n\t},\n\n\tplay: function () {\n\n\t\tif ( this.isPlaying === true ) {\n\n\t\t\tconsole.warn( 'THREE.Audio: Audio is already playing.' );\n\t\t\treturn;\n\n\t\t}\n\n\t\tif ( this.hasPlaybackControl === false ) {\n\n\t\t\tconsole.warn( 'THREE.Audio: this Audio has no playback control.' );\n\t\t\treturn;\n\n\t\t}\n\n\t\tvar source = this.context.createBufferSource();\n\n\t\tsource.buffer = this.source.buffer;\n\t\tsource.loop = this.source.loop;\n\t\tsource.onended = this.source.onended;\n\t\tsource.start( 0, this.startTime );\n\t\tsource.playbackRate.value = this.playbackRate;\n\n\t\tthis.isPlaying = true;\n\n\t\tthis.source = source;\n\n\t\treturn this.connect();\n\n\t},\n\n\tpause: function () {\n\n\t\tif ( this.hasPlaybackControl === false ) {\n\n\t\t\tconsole.warn( 'THREE.Audio: this Audio has no playback control.' );\n\t\t\treturn;\n\n\t\t}\n\n\t\tthis.source.stop();\n\t\tthis.startTime = this.context.currentTime;\n\t\tthis.isPlaying = false;\n\n\t\treturn this;\n\n\t},\n\n\tstop: function () {\n\n\t\tif ( this.hasPlaybackControl === false ) {\n\n\t\t\tconsole.warn( 'THREE.Audio: this Audio has no playback control.' );\n\t\t\treturn;\n\n\t\t}\n\n\t\tthis.source.stop();\n\t\tthis.startTime = 0;\n\t\tthis.isPlaying = false;\n\n\t\treturn this;\n\n\t},\n\n\tconnect: function () {\n\n\t\tif ( this.filters.length > 0 ) {\n\n\t\t\tthis.source.connect( this.filters[ 0 ] );\n\n\t\t\tfor ( var i = 1, l = this.filters.length; i < l; i ++ ) {\n\n\t\t\t\tthis.filters[ i - 1 ].connect( this.filters[ i ] );\n\n\t\t\t}\n\n\t\t\tthis.filters[ this.filters.length - 1 ].connect( this.getOutput() );\n\n\t\t} else {\n\n\t\t\tthis.source.connect( this.getOutput() );\n\n\t\t}\n\n\t\treturn this;\n\n\t},\n\n\tdisconnect: function () {\n\n\t\tif ( this.filters.length > 0 ) {\n\n\t\t\tthis.source.disconnect( this.filters[ 0 ] );\n\n\t\t\tfor ( var i = 1, l = this.filters.length; i < l; i ++ ) {\n\n\t\t\t\tthis.filters[ i - 1 ].disconnect( this.filters[ i ] );\n\n\t\t\t}\n\n\t\t\tthis.filters[ this.filters.length - 1 ].disconnect( this.getOutput() );\n\n\t\t} else {\n\n\t\t\tthis.source.disconnect( this.getOutput() );\n\n\t\t}\n\n\t\treturn this;\n\n\t},\n\n\tgetFilters: function () {\n\n\t\treturn this.filters;\n\n\t},\n\n\tsetFilters: function ( value ) {\n\n\t\tif ( ! value ) value = [];\n\n\t\tif ( this.isPlaying === true ) {\n\n\t\t\tthis.disconnect();\n\t\t\tthis.filters = value;\n\t\t\tthis.connect();\n\n\t\t} else {\n\n\t\t\tthis.filters = value;\n\n\t\t}\n\n\t\treturn this;\n\n\t},\n\n\tgetFilter: function () {\n\n\t\treturn this.getFilters()[ 0 ];\n\n\t},\n\n\tsetFilter: function ( filter ) {\n\n\t\treturn this.setFilters( filter ? [ filter ] : [] );\n\n\t},\n\n\tsetPlaybackRate: function ( value ) {\n\n\t\tif ( this.hasPlaybackControl === false ) {\n\n\t\t\tconsole.warn( 'THREE.Audio: this Audio has no playback control.' );\n\t\t\treturn;\n\n\t\t}\n\n\t\tthis.playbackRate = value;\n\n\t\tif ( this.isPlaying === true ) {\n\n\t\t\tthis.source.playbackRate.value = this.playbackRate;\n\n\t\t}\n\n\t\treturn this;\n\n\t},\n\n\tgetPlaybackRate: function () {\n\n\t\treturn this.playbackRate;\n\n\t},\n\n\tonEnded: function () {\n\n\t\tthis.isPlaying = false;\n\n\t},\n\n\tgetLoop: function () {\n\n\t\tif ( this.hasPlaybackControl === false ) {\n\n\t\t\tconsole.warn( 'THREE.Audio: this Audio has no playback control.' );\n\t\t\treturn false;\n\n\t\t}\n\n\t\treturn this.source.loop;\n\n\t},\n\n\tsetLoop: function ( value ) {\n\n\t\tif ( this.hasPlaybackControl === false ) {\n\n\t\t\tconsole.warn( 'THREE.Audio: this Audio has no playback control.' );\n\t\t\treturn;\n\n\t\t}\n\n\t\tthis.source.loop = value;\n\n\t},\n\n\tgetVolume: function () {\n\n\t\treturn this.gain.gain.value;\n\n\t},\n\n\n\tsetVolume: function ( value ) {\n\n\t\tthis.gain.gain.value = value;\n\n\t\treturn this;\n\n\t}\n\n} );\n\nexport { Audio };\n","/**\n * @author mrdoob / http://mrdoob.com/\n */\n\nimport { Vector3 } from '../math/Vector3';\nimport { Audio } from './Audio';\nimport { Object3D } from '../core/Object3D';\n\nfunction PositionalAudio( listener ) {\n\n\tAudio.call( this, listener );\n\n\tthis.panner = this.context.createPanner();\n\tthis.panner.connect( this.gain );\n\n}\n\nPositionalAudio.prototype = Object.assign( Object.create( Audio.prototype ), {\n\n\tconstructor: PositionalAudio,\n\n\tgetOutput: function () {\n\n\t\treturn this.panner;\n\n\t},\n\n\tgetRefDistance: function () {\n\n\t\treturn this.panner.refDistance;\n\n\t},\n\n\tsetRefDistance: function ( value ) {\n\n\t\tthis.panner.refDistance = value;\n\n\t},\n\n\tgetRolloffFactor: function () {\n\n\t\treturn this.panner.rolloffFactor;\n\n\t},\n\n\tsetRolloffFactor: function ( value ) {\n\n\t\tthis.panner.rolloffFactor = value;\n\n\t},\n\n\tgetDistanceModel: function () {\n\n\t\treturn this.panner.distanceModel;\n\n\t},\n\n\tsetDistanceModel: function ( value ) {\n\n\t\tthis.panner.distanceModel = value;\n\n\t},\n\n\tgetMaxDistance: function () {\n\n\t\treturn this.panner.maxDistance;\n\n\t},\n\n\tsetMaxDistance: function ( value ) {\n\n\t\tthis.panner.maxDistance = value;\n\n\t},\n\n\tupdateMatrixWorld: ( function () {\n\n\t\tvar position = new Vector3();\n\n\t\treturn function updateMatrixWorld( force ) {\n\n\t\t\tObject3D.prototype.updateMatrixWorld.call( this, force );\n\n\t\t\tposition.setFromMatrixPosition( this.matrixWorld );\n\n\t\t\tthis.panner.setPosition( position.x, position.y, position.z );\n\n\t\t};\n\n\t} )()\n\n\n} );\n\nexport { PositionalAudio };\n","/**\n * @author mrdoob / http://mrdoob.com/\n */\n\nfunction AudioAnalyser( audio, fftSize ) {\n\n\tthis.analyser = audio.context.createAnalyser();\n\tthis.analyser.fftSize = fftSize !== undefined ? fftSize : 2048;\n\n\tthis.data = new Uint8Array( this.analyser.frequencyBinCount );\n\n\taudio.getOutput().connect( this.analyser );\n\n}\n\nObject.assign( AudioAnalyser.prototype, {\n\n\tgetFrequencyData: function () {\n\n\t\tthis.analyser.getByteFrequencyData( this.data );\n\n\t\treturn this.data;\n\n\t},\n\n\tgetAverageFrequency: function () {\n\n\t\tvar value = 0, data = this.getFrequencyData();\n\n\t\tfor ( var i = 0; i < data.length; i ++ ) {\n\n\t\t\tvalue += data[ i ];\n\n\t\t}\n\n\t\treturn value / data.length;\n\n\t}\n\n} );\n\nexport { AudioAnalyser };\n","import { Quaternion } from '../math/Quaternion';\n\n/**\n *\n * Buffered scene graph property that allows weighted accumulation.\n *\n *\n * @author Ben Houston / http://clara.io/\n * @author David Sarno / http://lighthaus.us/\n * @author tschw\n */\n\nfunction PropertyMixer( binding, typeName, valueSize ) {\n\n\tthis.binding = binding;\n\tthis.valueSize = valueSize;\n\n\tvar bufferType = Float64Array,\n\t\tmixFunction;\n\n\tswitch ( typeName ) {\n\n\t\tcase 'quaternion':\t\t\tmixFunction = this._slerp;\t\tbreak;\n\n\t\tcase 'string':\n\t\tcase 'bool':\n\n\t\t\tbufferType = Array,\t\tmixFunction = this._select;\t\tbreak;\n\n\t\tdefault:\t\t\t\t\tmixFunction = this._lerp;\n\n\t}\n\n\tthis.buffer = new bufferType( valueSize * 4 );\n\t// layout: [ incoming | accu0 | accu1 | orig ]\n\t//\n\t// interpolators can use .buffer as their .result\n\t// the data then goes to 'incoming'\n\t//\n\t// 'accu0' and 'accu1' are used frame-interleaved for\n\t// the cumulative result and are compared to detect\n\t// changes\n\t//\n\t// 'orig' stores the original state of the property\n\n\tthis._mixBufferRegion = mixFunction;\n\n\tthis.cumulativeWeight = 0;\n\n\tthis.useCount = 0;\n\tthis.referenceCount = 0;\n\n}\n\nPropertyMixer.prototype = {\n\n\tconstructor: PropertyMixer,\n\n\t// accumulate data in the 'incoming' region into 'accu'\n\taccumulate: function( accuIndex, weight ) {\n\n\t\t// note: happily accumulating nothing when weight = 0, the caller knows\n\t\t// the weight and shouldn't have made the call in the first place\n\n\t\tvar buffer = this.buffer,\n\t\t\tstride = this.valueSize,\n\t\t\toffset = accuIndex * stride + stride,\n\n\t\t\tcurrentWeight = this.cumulativeWeight;\n\n\t\tif ( currentWeight === 0 ) {\n\n\t\t\t// accuN := incoming * weight\n\n\t\t\tfor ( var i = 0; i !== stride; ++ i ) {\n\n\t\t\t\tbuffer[ offset + i ] = buffer[ i ];\n\n\t\t\t}\n\n\t\t\tcurrentWeight = weight;\n\n\t\t} else {\n\n\t\t\t// accuN := accuN + incoming * weight\n\n\t\t\tcurrentWeight += weight;\n\t\t\tvar mix = weight / currentWeight;\n\t\t\tthis._mixBufferRegion( buffer, offset, 0, mix, stride );\n\n\t\t}\n\n\t\tthis.cumulativeWeight = currentWeight;\n\n\t},\n\n\t// apply the state of 'accu' to the binding when accus differ\n\tapply: function( accuIndex ) {\n\n\t\tvar stride = this.valueSize,\n\t\t\tbuffer = this.buffer,\n\t\t\toffset = accuIndex * stride + stride,\n\n\t\t\tweight = this.cumulativeWeight,\n\n\t\t\tbinding = this.binding;\n\n\t\tthis.cumulativeWeight = 0;\n\n\t\tif ( weight < 1 ) {\n\n\t\t\t// accuN := accuN + original * ( 1 - cumulativeWeight )\n\n\t\t\tvar originalValueOffset = stride * 3;\n\n\t\t\tthis._mixBufferRegion(\n\t\t\t\t\tbuffer, offset, originalValueOffset, 1 - weight, stride );\n\n\t\t}\n\n\t\tfor ( var i = stride, e = stride + stride; i !== e; ++ i ) {\n\n\t\t\tif ( buffer[ i ] !== buffer[ i + stride ] ) {\n\n\t\t\t\t// value has changed -> update scene graph\n\n\t\t\t\tbinding.setValue( buffer, offset );\n\t\t\t\tbreak;\n\n\t\t\t}\n\n\t\t}\n\n\t},\n\n\t// remember the state of the bound property and copy it to both accus\n\tsaveOriginalState: function() {\n\n\t\tvar binding = this.binding;\n\n\t\tvar buffer = this.buffer,\n\t\t\tstride = this.valueSize,\n\n\t\t\toriginalValueOffset = stride * 3;\n\n\t\tbinding.getValue( buffer, originalValueOffset );\n\n\t\t// accu[0..1] := orig -- initially detect changes against the original\n\t\tfor ( var i = stride, e = originalValueOffset; i !== e; ++ i ) {\n\n\t\t\tbuffer[ i ] = buffer[ originalValueOffset + ( i % stride ) ];\n\n\t\t}\n\n\t\tthis.cumulativeWeight = 0;\n\n\t},\n\n\t// apply the state previously taken via 'saveOriginalState' to the binding\n\trestoreOriginalState: function() {\n\n\t\tvar originalValueOffset = this.valueSize * 3;\n\t\tthis.binding.setValue( this.buffer, originalValueOffset );\n\n\t},\n\n\n\t// mix functions\n\n\t_select: function( buffer, dstOffset, srcOffset, t, stride ) {\n\n\t\tif ( t >= 0.5 ) {\n\n\t\t\tfor ( var i = 0; i !== stride; ++ i ) {\n\n\t\t\t\tbuffer[ dstOffset + i ] = buffer[ srcOffset + i ];\n\n\t\t\t}\n\n\t\t}\n\n\t},\n\n\t_slerp: function( buffer, dstOffset, srcOffset, t, stride ) {\n\n\t\tQuaternion.slerpFlat( buffer, dstOffset,\n\t\t\t\tbuffer, dstOffset, buffer, srcOffset, t );\n\n\t},\n\n\t_lerp: function( buffer, dstOffset, srcOffset, t, stride ) {\n\n\t\tvar s = 1 - t;\n\n\t\tfor ( var i = 0; i !== stride; ++ i ) {\n\n\t\t\tvar j = dstOffset + i;\n\n\t\t\tbuffer[ j ] = buffer[ j ] * s + buffer[ srcOffset + i ] * t;\n\n\t\t}\n\n\t}\n\n};\n\n\nexport { PropertyMixer };\n","/**\n *\n * A reference to a real property in the scene graph.\n *\n *\n * @author Ben Houston / http://clara.io/\n * @author David Sarno / http://lighthaus.us/\n * @author tschw\n */\n\nfunction PropertyBinding( rootNode, path, parsedPath ) {\n\n\tthis.path = path;\n\tthis.parsedPath = parsedPath ||\n\t\t\tPropertyBinding.parseTrackName( path );\n\n\tthis.node = PropertyBinding.findNode(\n\t\t\trootNode, this.parsedPath.nodeName ) || rootNode;\n\n\tthis.rootNode = rootNode;\n\n}\n\nPropertyBinding.prototype = {\n\n\tconstructor: PropertyBinding,\n\n\tgetValue: function getValue_unbound( targetArray, offset ) {\n\n\t\tthis.bind();\n\t\tthis.getValue( targetArray, offset );\n\n\t\t// Note: This class uses a State pattern on a per-method basis:\n\t\t// 'bind' sets 'this.getValue' / 'setValue' and shadows the\n\t\t// prototype version of these methods with one that represents\n\t\t// the bound state. When the property is not found, the methods\n\t\t// become no-ops.\n\n\t},\n\n\tsetValue: function getValue_unbound( sourceArray, offset ) {\n\n\t\tthis.bind();\n\t\tthis.setValue( sourceArray, offset );\n\n\t},\n\n\t// create getter / setter pair for a property in the scene graph\n\tbind: function() {\n\n\t\tvar targetObject = this.node,\n\t\t\tparsedPath = this.parsedPath,\n\n\t\t\tobjectName = parsedPath.objectName,\n\t\t\tpropertyName = parsedPath.propertyName,\n\t\t\tpropertyIndex = parsedPath.propertyIndex;\n\n\t\tif ( ! targetObject ) {\n\n\t\t\ttargetObject = PropertyBinding.findNode(\n\t\t\t\t\tthis.rootNode, parsedPath.nodeName ) || this.rootNode;\n\n\t\t\tthis.node = targetObject;\n\n\t\t}\n\n\t\t// set fail state so we can just 'return' on error\n\t\tthis.getValue = this._getValue_unavailable;\n\t\tthis.setValue = this._setValue_unavailable;\n\n \t\t// ensure there is a value node\n\t\tif ( ! targetObject ) {\n\n\t\t\tconsole.error( \" trying to update node for track: \" + this.path + \" but it wasn't found.\" );\n\t\t\treturn;\n\n\t\t}\n\n\t\tif ( objectName ) {\n\n\t\t\tvar objectIndex = parsedPath.objectIndex;\n\n\t\t\t// special cases were we need to reach deeper into the hierarchy to get the face materials....\n\t\t\tswitch ( objectName ) {\n\n\t\t\t\tcase 'materials':\n\n\t\t\t\t\tif ( ! targetObject.material ) {\n\n\t\t\t\t\t\tconsole.error( ' can not bind to material as node does not have a material', this );\n\t\t\t\t\t\treturn;\n\n\t\t\t\t\t}\n\n\t\t\t\t\tif ( ! targetObject.material.materials ) {\n\n\t\t\t\t\t\tconsole.error( ' can not bind to material.materials as node.material does not have a materials array', this );\n\t\t\t\t\t\treturn;\n\n\t\t\t\t\t}\n\n\t\t\t\t\ttargetObject = targetObject.material.materials;\n\n\t\t\t\t\tbreak;\n\n\t\t\t\tcase 'bones':\n\n\t\t\t\t\tif ( ! targetObject.skeleton ) {\n\n\t\t\t\t\t\tconsole.error( ' can not bind to bones as node does not have a skeleton', this );\n\t\t\t\t\t\treturn;\n\n\t\t\t\t\t}\n\n\t\t\t\t\t// potential future optimization: skip this if propertyIndex is already an integer\n\t\t\t\t\t// and convert the integer string to a true integer.\n\n\t\t\t\t\ttargetObject = targetObject.skeleton.bones;\n\n\t\t\t\t\t// support resolving morphTarget names into indices.\n\t\t\t\t\tfor ( var i = 0; i < targetObject.length; i ++ ) {\n\n\t\t\t\t\t\tif ( targetObject[ i ].name === objectIndex ) {\n\n\t\t\t\t\t\t\tobjectIndex = i;\n\t\t\t\t\t\t\tbreak;\n\n\t\t\t\t\t\t}\n\n\t\t\t\t\t}\n\n\t\t\t\t\tbreak;\n\n\t\t\t\tdefault:\n\n\t\t\t\t\tif ( targetObject[ objectName ] === undefined ) {\n\n\t\t\t\t\t\tconsole.error( ' can not bind to objectName of node, undefined', this );\n\t\t\t\t\t\treturn;\n\n\t\t\t\t\t}\n\n\t\t\t\t\ttargetObject = targetObject[ objectName ];\n\n\t\t\t}\n\n\n\t\t\tif ( objectIndex !== undefined ) {\n\n\t\t\t\tif ( targetObject[ objectIndex ] === undefined ) {\n\n\t\t\t\t\tconsole.error( \" trying to bind to objectIndex of objectName, but is undefined:\", this, targetObject );\n\t\t\t\t\treturn;\n\n\t\t\t\t}\n\n\t\t\t\ttargetObject = targetObject[ objectIndex ];\n\n\t\t\t}\n\n\t\t}\n\n\t\t// resolve property\n\t\tvar nodeProperty = targetObject[ propertyName ];\n\n\t\tif ( nodeProperty === undefined ) {\n\n\t\t\tvar nodeName = parsedPath.nodeName;\n\n\t\t\tconsole.error( \" trying to update property for track: \" + nodeName +\n\t\t\t\t\t'.' + propertyName + \" but it wasn't found.\", targetObject );\n\t\t\treturn;\n\n\t\t}\n\n\t\t// determine versioning scheme\n\t\tvar versioning = this.Versioning.None;\n\n\t\tif ( targetObject.needsUpdate !== undefined ) { // material\n\n\t\t\tversioning = this.Versioning.NeedsUpdate;\n\t\t\tthis.targetObject = targetObject;\n\n\t\t} else if ( targetObject.matrixWorldNeedsUpdate !== undefined ) { // node transform\n\n\t\t\tversioning = this.Versioning.MatrixWorldNeedsUpdate;\n\t\t\tthis.targetObject = targetObject;\n\n\t\t}\n\n\t\t// determine how the property gets bound\n\t\tvar bindingType = this.BindingType.Direct;\n\n\t\tif ( propertyIndex !== undefined ) {\n\t\t\t// access a sub element of the property array (only primitives are supported right now)\n\n\t\t\tif ( propertyName === \"morphTargetInfluences\" ) {\n\t\t\t\t// potential optimization, skip this if propertyIndex is already an integer, and convert the integer string to a true integer.\n\n\t\t\t\t// support resolving morphTarget names into indices.\n\t\t\t\tif ( ! targetObject.geometry ) {\n\n\t\t\t\t\tconsole.error( ' can not bind to morphTargetInfluences becasuse node does not have a geometry', this );\n\t\t\t\t\treturn;\n\n\t\t\t\t}\n\n\t\t\t\tif ( ! targetObject.geometry.morphTargets ) {\n\n\t\t\t\t\tconsole.error( ' can not bind to morphTargetInfluences becasuse node does not have a geometry.morphTargets', this );\n\t\t\t\t\treturn;\n\n\t\t\t\t}\n\n\t\t\t\tfor ( var i = 0; i < this.node.geometry.morphTargets.length; i ++ ) {\n\n\t\t\t\t\tif ( targetObject.geometry.morphTargets[ i ].name === propertyIndex ) {\n\n\t\t\t\t\t\tpropertyIndex = i;\n\t\t\t\t\t\tbreak;\n\n\t\t\t\t\t}\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t\tbindingType = this.BindingType.ArrayElement;\n\n\t\t\tthis.resolvedProperty = nodeProperty;\n\t\t\tthis.propertyIndex = propertyIndex;\n\n\t\t} else if ( nodeProperty.fromArray !== undefined && nodeProperty.toArray !== undefined ) {\n\t\t\t// must use copy for Object3D.Euler/Quaternion\n\n\t\t\tbindingType = this.BindingType.HasFromToArray;\n\n\t\t\tthis.resolvedProperty = nodeProperty;\n\n\t\t} else if ( nodeProperty.length !== undefined ) {\n\n\t\t\tbindingType = this.BindingType.EntireArray;\n\n\t\t\tthis.resolvedProperty = nodeProperty;\n\n\t\t} else {\n\n\t\t\tthis.propertyName = propertyName;\n\n\t\t}\n\n\t\t// select getter / setter\n\t\tthis.getValue = this.GetterByBindingType[ bindingType ];\n\t\tthis.setValue = this.SetterByBindingTypeAndVersioning[ bindingType ][ versioning ];\n\n\t},\n\n\tunbind: function() {\n\n\t\tthis.node = null;\n\n\t\t// back to the prototype version of getValue / setValue\n\t\t// note: avoiding to mutate the shape of 'this' via 'delete'\n\t\tthis.getValue = this._getValue_unbound;\n\t\tthis.setValue = this._setValue_unbound;\n\n\t}\n\n};\n\nObject.assign( PropertyBinding.prototype, { // prototype, continued\n\n\t// these are used to \"bind\" a nonexistent property\n\t_getValue_unavailable: function() {},\n\t_setValue_unavailable: function() {},\n\n\t// initial state of these methods that calls 'bind'\n\t_getValue_unbound: PropertyBinding.prototype.getValue,\n\t_setValue_unbound: PropertyBinding.prototype.setValue,\n\n\tBindingType: {\n\t\tDirect: 0,\n\t\tEntireArray: 1,\n\t\tArrayElement: 2,\n\t\tHasFromToArray: 3\n\t},\n\n\tVersioning: {\n\t\tNone: 0,\n\t\tNeedsUpdate: 1,\n\t\tMatrixWorldNeedsUpdate: 2\n\t},\n\n\tGetterByBindingType: [\n\n\t\tfunction getValue_direct( buffer, offset ) {\n\n\t\t\tbuffer[ offset ] = this.node[ this.propertyName ];\n\n\t\t},\n\n\t\tfunction getValue_array( buffer, offset ) {\n\n\t\t\tvar source = this.resolvedProperty;\n\n\t\t\tfor ( var i = 0, n = source.length; i !== n; ++ i ) {\n\n\t\t\t\tbuffer[ offset ++ ] = source[ i ];\n\n\t\t\t}\n\n\t\t},\n\n\t\tfunction getValue_arrayElement( buffer, offset ) {\n\n\t\t\tbuffer[ offset ] = this.resolvedProperty[ this.propertyIndex ];\n\n\t\t},\n\n\t\tfunction getValue_toArray( buffer, offset ) {\n\n\t\t\tthis.resolvedProperty.toArray( buffer, offset );\n\n\t\t}\n\n\t],\n\n\tSetterByBindingTypeAndVersioning: [\n\n\t\t[\n\t\t\t// Direct\n\n\t\t\tfunction setValue_direct( buffer, offset ) {\n\n\t\t\t\tthis.node[ this.propertyName ] = buffer[ offset ];\n\n\t\t\t},\n\n\t\t\tfunction setValue_direct_setNeedsUpdate( buffer, offset ) {\n\n\t\t\t\tthis.node[ this.propertyName ] = buffer[ offset ];\n\t\t\t\tthis.targetObject.needsUpdate = true;\n\n\t\t\t},\n\n\t\t\tfunction setValue_direct_setMatrixWorldNeedsUpdate( buffer, offset ) {\n\n\t\t\t\tthis.node[ this.propertyName ] = buffer[ offset ];\n\t\t\t\tthis.targetObject.matrixWorldNeedsUpdate = true;\n\n\t\t\t}\n\n\t\t], [\n\n\t\t\t// EntireArray\n\n\t\t\tfunction setValue_array( buffer, offset ) {\n\n\t\t\t\tvar dest = this.resolvedProperty;\n\n\t\t\t\tfor ( var i = 0, n = dest.length; i !== n; ++ i ) {\n\n\t\t\t\t\tdest[ i ] = buffer[ offset ++ ];\n\n\t\t\t\t}\n\n\t\t\t},\n\n\t\t\tfunction setValue_array_setNeedsUpdate( buffer, offset ) {\n\n\t\t\t\tvar dest = this.resolvedProperty;\n\n\t\t\t\tfor ( var i = 0, n = dest.length; i !== n; ++ i ) {\n\n\t\t\t\t\tdest[ i ] = buffer[ offset ++ ];\n\n\t\t\t\t}\n\n\t\t\t\tthis.targetObject.needsUpdate = true;\n\n\t\t\t},\n\n\t\t\tfunction setValue_array_setMatrixWorldNeedsUpdate( buffer, offset ) {\n\n\t\t\t\tvar dest = this.resolvedProperty;\n\n\t\t\t\tfor ( var i = 0, n = dest.length; i !== n; ++ i ) {\n\n\t\t\t\t\tdest[ i ] = buffer[ offset ++ ];\n\n\t\t\t\t}\n\n\t\t\t\tthis.targetObject.matrixWorldNeedsUpdate = true;\n\n\t\t\t}\n\n\t\t], [\n\n\t\t\t// ArrayElement\n\n\t\t\tfunction setValue_arrayElement( buffer, offset ) {\n\n\t\t\t\tthis.resolvedProperty[ this.propertyIndex ] = buffer[ offset ];\n\n\t\t\t},\n\n\t\t\tfunction setValue_arrayElement_setNeedsUpdate( buffer, offset ) {\n\n\t\t\t\tthis.resolvedProperty[ this.propertyIndex ] = buffer[ offset ];\n\t\t\t\tthis.targetObject.needsUpdate = true;\n\n\t\t\t},\n\n\t\t\tfunction setValue_arrayElement_setMatrixWorldNeedsUpdate( buffer, offset ) {\n\n\t\t\t\tthis.resolvedProperty[ this.propertyIndex ] = buffer[ offset ];\n\t\t\t\tthis.targetObject.matrixWorldNeedsUpdate = true;\n\n\t\t\t}\n\n\t\t], [\n\n\t\t\t// HasToFromArray\n\n\t\t\tfunction setValue_fromArray( buffer, offset ) {\n\n\t\t\t\tthis.resolvedProperty.fromArray( buffer, offset );\n\n\t\t\t},\n\n\t\t\tfunction setValue_fromArray_setNeedsUpdate( buffer, offset ) {\n\n\t\t\t\tthis.resolvedProperty.fromArray( buffer, offset );\n\t\t\t\tthis.targetObject.needsUpdate = true;\n\n\t\t\t},\n\n\t\t\tfunction setValue_fromArray_setMatrixWorldNeedsUpdate( buffer, offset ) {\n\n\t\t\t\tthis.resolvedProperty.fromArray( buffer, offset );\n\t\t\t\tthis.targetObject.matrixWorldNeedsUpdate = true;\n\n\t\t\t}\n\n\t\t]\n\n\t]\n\n} );\n\nPropertyBinding.Composite =\n\t\tfunction( targetGroup, path, optionalParsedPath ) {\n\n\tvar parsedPath = optionalParsedPath ||\n\t\t\tPropertyBinding.parseTrackName( path );\n\n\tthis._targetGroup = targetGroup;\n\tthis._bindings = targetGroup.subscribe_( path, parsedPath );\n\n};\n\nPropertyBinding.Composite.prototype = {\n\n\tconstructor: PropertyBinding.Composite,\n\n\tgetValue: function( array, offset ) {\n\n\t\tthis.bind(); // bind all binding\n\n\t\tvar firstValidIndex = this._targetGroup.nCachedObjects_,\n\t\t\tbinding = this._bindings[ firstValidIndex ];\n\n\t\t// and only call .getValue on the first\n\t\tif ( binding !== undefined ) binding.getValue( array, offset );\n\n\t},\n\n\tsetValue: function( array, offset ) {\n\n\t\tvar bindings = this._bindings;\n\n\t\tfor ( var i = this._targetGroup.nCachedObjects_,\n\t\t\t\tn = bindings.length; i !== n; ++ i ) {\n\n\t\t\tbindings[ i ].setValue( array, offset );\n\n\t\t}\n\n\t},\n\n\tbind: function() {\n\n\t\tvar bindings = this._bindings;\n\n\t\tfor ( var i = this._targetGroup.nCachedObjects_,\n\t\t\t\tn = bindings.length; i !== n; ++ i ) {\n\n\t\t\tbindings[ i ].bind();\n\n\t\t}\n\n\t},\n\n\tunbind: function() {\n\n\t\tvar bindings = this._bindings;\n\n\t\tfor ( var i = this._targetGroup.nCachedObjects_,\n\t\t\t\tn = bindings.length; i !== n; ++ i ) {\n\n\t\t\tbindings[ i ].unbind();\n\n\t\t}\n\n\t}\n\n};\n\nPropertyBinding.create = function( root, path, parsedPath ) {\n\n\tif ( ! ( (root && root.isAnimationObjectGroup) ) ) {\n\n\t\treturn new PropertyBinding( root, path, parsedPath );\n\n\t} else {\n\n\t\treturn new PropertyBinding.Composite( root, path, parsedPath );\n\n\t}\n\n};\n\nPropertyBinding.parseTrackName = function( trackName ) {\n\n\t// matches strings in the form of:\n\t// nodeName.property\n\t// nodeName.property[accessor]\n\t// nodeName.material.property[accessor]\n\t// uuid.property[accessor]\n\t// uuid.objectName[objectIndex].propertyName[propertyIndex]\n\t// parentName/nodeName.property\n\t// parentName/parentName/nodeName.property[index]\n\t// .bone[Armature.DEF_cog].position\n\t// scene:helium_balloon_model:helium_balloon_model.position\n\t// created and tested via https://regex101.com/#javascript\n\n\tvar re = /^((?:\\w+[\\/:])*)(\\w+)?(?:\\.(\\w+)(?:\\[(.+)\\])?)?\\.(\\w+)(?:\\[(.+)\\])?$/;\n\tvar matches = re.exec( trackName );\n\n\tif ( ! matches ) {\n\n\t\tthrow new Error( \"cannot parse trackName at all: \" + trackName );\n\n\t}\n\n\tvar results = {\n\t\t// directoryName: matches[ 1 ], // (tschw) currently unused\n\t\tnodeName: matches[ 2 ], \t// allowed to be null, specified root node.\n\t\tobjectName: matches[ 3 ],\n\t\tobjectIndex: matches[ 4 ],\n\t\tpropertyName: matches[ 5 ],\n\t\tpropertyIndex: matches[ 6 ]\t// allowed to be null, specifies that the whole property is set.\n\t};\n\n\tif ( results.propertyName === null || results.propertyName.length === 0 ) {\n\n\t\tthrow new Error( \"can not parse propertyName from trackName: \" + trackName );\n\n\t}\n\n\treturn results;\n\n};\n\nPropertyBinding.findNode = function( root, nodeName ) {\n\n\tif ( ! nodeName || nodeName === \"\" || nodeName === \"root\" || nodeName === \".\" || nodeName === -1 || nodeName === root.name || nodeName === root.uuid ) {\n\n\t\treturn root;\n\n\t}\n\n\t// search into skeleton bones.\n\tif ( root.skeleton ) {\n\n\t\tvar searchSkeleton = function( skeleton ) {\n\n\t\t\tfor( var i = 0; i < skeleton.bones.length; i ++ ) {\n\n\t\t\t\tvar bone = skeleton.bones[ i ];\n\n\t\t\t\tif ( bone.name === nodeName ) {\n\n\t\t\t\t\treturn bone;\n\n\t\t\t\t}\n\t\t\t}\n\n\t\t\treturn null;\n\n\t\t};\n\n\t\tvar bone = searchSkeleton( root.skeleton );\n\n\t\tif ( bone ) {\n\n\t\t\treturn bone;\n\n\t\t}\n\t}\n\n\t// search into node subtree.\n\tif ( root.children ) {\n\n\t\tvar searchNodeSubtree = function( children ) {\n\n\t\t\tfor( var i = 0; i < children.length; i ++ ) {\n\n\t\t\t\tvar childNode = children[ i ];\n\n\t\t\t\tif ( childNode.name === nodeName || childNode.uuid === nodeName ) {\n\n\t\t\t\t\treturn childNode;\n\n\t\t\t\t}\n\n\t\t\t\tvar result = searchNodeSubtree( childNode.children );\n\n\t\t\t\tif ( result ) return result;\n\n\t\t\t}\n\n\t\t\treturn null;\n\n\t\t};\n\n\t\tvar subTreeNode = searchNodeSubtree( root.children );\n\n\t\tif ( subTreeNode ) {\n\n\t\t\treturn subTreeNode;\n\n\t\t}\n\n\t}\n\n\treturn null;\n\n};\n\n\nexport { PropertyBinding };\n","import { PropertyBinding } from './PropertyBinding';\nimport { _Math } from '../math/Math';\n\n/**\n *\n * A group of objects that receives a shared animation state.\n *\n * Usage:\n *\n * \t-\tAdd objects you would otherwise pass as 'root' to the\n * \t\tconstructor or the .clipAction method of AnimationMixer.\n *\n * \t-\tInstead pass this object as 'root'.\n *\n * \t-\tYou can also add and remove objects later when the mixer\n * \t\tis running.\n *\n * Note:\n *\n * \tObjects of this class appear as one object to the mixer,\n * \tso cache control of the individual objects must be done\n * \ton the group.\n *\n * Limitation:\n *\n * \t- \tThe animated properties must be compatible among the\n * \t\tall objects in the group.\n *\n * -\tA single property can either be controlled through a\n * \ttarget group or directly, but not both.\n *\n * @author tschw\n */\n\nfunction AnimationObjectGroup( var_args ) {\n\n\tthis.uuid = _Math.generateUUID();\n\n\t// cached objects followed by the active ones\n\tthis._objects = Array.prototype.slice.call( arguments );\n\n\tthis.nCachedObjects_ = 0;\t\t\t// threshold\n\t// note: read by PropertyBinding.Composite\n\n\tvar indices = {};\n\tthis._indicesByUUID = indices;\t\t// for bookkeeping\n\n\tfor ( var i = 0, n = arguments.length; i !== n; ++ i ) {\n\n\t\tindices[ arguments[ i ].uuid ] = i;\n\n\t}\n\n\tthis._paths = [];\t\t\t\t\t// inside: string\n\tthis._parsedPaths = [];\t\t\t\t// inside: { we don't care, here }\n\tthis._bindings = []; \t\t\t\t// inside: Array< PropertyBinding >\n\tthis._bindingsIndicesByPath = {}; \t// inside: indices in these arrays\n\n\tvar scope = this;\n\n\tthis.stats = {\n\n\t\tobjects: {\n\t\t\tget total() { return scope._objects.length; },\n\t\t\tget inUse() { return this.total - scope.nCachedObjects_; }\n\t\t},\n\n\t\tget bindingsPerObject() { return scope._bindings.length; }\n\n\t};\n\n}\n\nAnimationObjectGroup.prototype = {\n\n\tconstructor: AnimationObjectGroup,\n\n\tisAnimationObjectGroup: true,\n\n\tadd: function( var_args ) {\n\n\t\tvar objects = this._objects,\n\t\t\tnObjects = objects.length,\n\t\t\tnCachedObjects = this.nCachedObjects_,\n\t\t\tindicesByUUID = this._indicesByUUID,\n\t\t\tpaths = this._paths,\n\t\t\tparsedPaths = this._parsedPaths,\n\t\t\tbindings = this._bindings,\n\t\t\tnBindings = bindings.length;\n\n\t\tfor ( var i = 0, n = arguments.length; i !== n; ++ i ) {\n\n\t\t\tvar object = arguments[ i ],\n\t\t\t\tuuid = object.uuid,\n\t\t\t\tindex = indicesByUUID[ uuid ];\n\n\t\t\tif ( index === undefined ) {\n\n\t\t\t\t// unknown object -> add it to the ACTIVE region\n\n\t\t\t\tindex = nObjects ++;\n\t\t\t\tindicesByUUID[ uuid ] = index;\n\t\t\t\tobjects.push( object );\n\n\t\t\t\t// accounting is done, now do the same for all bindings\n\n\t\t\t\tfor ( var j = 0, m = nBindings; j !== m; ++ j ) {\n\n\t\t\t\t\tbindings[ j ].push(\n\t\t\t\t\t\t\tnew PropertyBinding(\n\t\t\t\t\t\t\t\tobject, paths[ j ], parsedPaths[ j ] ) );\n\n\t\t\t\t}\n\n\t\t\t} else if ( index < nCachedObjects ) {\n\n\t\t\t\tvar knownObject = objects[ index ];\n\n\t\t\t\t// move existing object to the ACTIVE region\n\n\t\t\t\tvar firstActiveIndex = -- nCachedObjects,\n\t\t\t\t\tlastCachedObject = objects[ firstActiveIndex ];\n\n\t\t\t\tindicesByUUID[ lastCachedObject.uuid ] = index;\n\t\t\t\tobjects[ index ] = lastCachedObject;\n\n\t\t\t\tindicesByUUID[ uuid ] = firstActiveIndex;\n\t\t\t\tobjects[ firstActiveIndex ] = object;\n\n\t\t\t\t// accounting is done, now do the same for all bindings\n\n\t\t\t\tfor ( var j = 0, m = nBindings; j !== m; ++ j ) {\n\n\t\t\t\t\tvar bindingsForPath = bindings[ j ],\n\t\t\t\t\t\tlastCached = bindingsForPath[ firstActiveIndex ],\n\t\t\t\t\t\tbinding = bindingsForPath[ index ];\n\n\t\t\t\t\tbindingsForPath[ index ] = lastCached;\n\n\t\t\t\t\tif ( binding === undefined ) {\n\n\t\t\t\t\t\t// since we do not bother to create new bindings\n\t\t\t\t\t\t// for objects that are cached, the binding may\n\t\t\t\t\t\t// or may not exist\n\n\t\t\t\t\t\tbinding = new PropertyBinding(\n\t\t\t\t\t\t\t\tobject, paths[ j ], parsedPaths[ j ] );\n\n\t\t\t\t\t}\n\n\t\t\t\t\tbindingsForPath[ firstActiveIndex ] = binding;\n\n\t\t\t\t}\n\n\t\t\t} else if ( objects[ index ] !== knownObject) {\n\n\t\t\t\tconsole.error( \"Different objects with the same UUID \" +\n\t\t\t\t\t\t\"detected. Clean the caches or recreate your \" +\n\t\t\t\t\t\t\"infrastructure when reloading scenes...\" );\n\n\t\t\t} // else the object is already where we want it to be\n\n\t\t} // for arguments\n\n\t\tthis.nCachedObjects_ = nCachedObjects;\n\n\t},\n\n\tremove: function( var_args ) {\n\n\t\tvar objects = this._objects,\n\t\t\tnCachedObjects = this.nCachedObjects_,\n\t\t\tindicesByUUID = this._indicesByUUID,\n\t\t\tbindings = this._bindings,\n\t\t\tnBindings = bindings.length;\n\n\t\tfor ( var i = 0, n = arguments.length; i !== n; ++ i ) {\n\n\t\t\tvar object = arguments[ i ],\n\t\t\t\tuuid = object.uuid,\n\t\t\t\tindex = indicesByUUID[ uuid ];\n\n\t\t\tif ( index !== undefined && index >= nCachedObjects ) {\n\n\t\t\t\t// move existing object into the CACHED region\n\n\t\t\t\tvar lastCachedIndex = nCachedObjects ++,\n\t\t\t\t\tfirstActiveObject = objects[ lastCachedIndex ];\n\n\t\t\t\tindicesByUUID[ firstActiveObject.uuid ] = index;\n\t\t\t\tobjects[ index ] = firstActiveObject;\n\n\t\t\t\tindicesByUUID[ uuid ] = lastCachedIndex;\n\t\t\t\tobjects[ lastCachedIndex ] = object;\n\n\t\t\t\t// accounting is done, now do the same for all bindings\n\n\t\t\t\tfor ( var j = 0, m = nBindings; j !== m; ++ j ) {\n\n\t\t\t\t\tvar bindingsForPath = bindings[ j ],\n\t\t\t\t\t\tfirstActive = bindingsForPath[ lastCachedIndex ],\n\t\t\t\t\t\tbinding = bindingsForPath[ index ];\n\n\t\t\t\t\tbindingsForPath[ index ] = firstActive;\n\t\t\t\t\tbindingsForPath[ lastCachedIndex ] = binding;\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t} // for arguments\n\n\t\tthis.nCachedObjects_ = nCachedObjects;\n\n\t},\n\n\t// remove & forget\n\tuncache: function( var_args ) {\n\n\t\tvar objects = this._objects,\n\t\t\tnObjects = objects.length,\n\t\t\tnCachedObjects = this.nCachedObjects_,\n\t\t\tindicesByUUID = this._indicesByUUID,\n\t\t\tbindings = this._bindings,\n\t\t\tnBindings = bindings.length;\n\n\t\tfor ( var i = 0, n = arguments.length; i !== n; ++ i ) {\n\n\t\t\tvar object = arguments[ i ],\n\t\t\t\tuuid = object.uuid,\n\t\t\t\tindex = indicesByUUID[ uuid ];\n\n\t\t\tif ( index !== undefined ) {\n\n\t\t\t\tdelete indicesByUUID[ uuid ];\n\n\t\t\t\tif ( index < nCachedObjects ) {\n\n\t\t\t\t\t// object is cached, shrink the CACHED region\n\n\t\t\t\t\tvar firstActiveIndex = -- nCachedObjects,\n\t\t\t\t\t\tlastCachedObject = objects[ firstActiveIndex ],\n\t\t\t\t\t\tlastIndex = -- nObjects,\n\t\t\t\t\t\tlastObject = objects[ lastIndex ];\n\n\t\t\t\t\t// last cached object takes this object's place\n\t\t\t\t\tindicesByUUID[ lastCachedObject.uuid ] = index;\n\t\t\t\t\tobjects[ index ] = lastCachedObject;\n\n\t\t\t\t\t// last object goes to the activated slot and pop\n\t\t\t\t\tindicesByUUID[ lastObject.uuid ] = firstActiveIndex;\n\t\t\t\t\tobjects[ firstActiveIndex ] = lastObject;\n\t\t\t\t\tobjects.pop();\n\n\t\t\t\t\t// accounting is done, now do the same for all bindings\n\n\t\t\t\t\tfor ( var j = 0, m = nBindings; j !== m; ++ j ) {\n\n\t\t\t\t\t\tvar bindingsForPath = bindings[ j ],\n\t\t\t\t\t\t\tlastCached = bindingsForPath[ firstActiveIndex ],\n\t\t\t\t\t\t\tlast = bindingsForPath[ lastIndex ];\n\n\t\t\t\t\t\tbindingsForPath[ index ] = lastCached;\n\t\t\t\t\t\tbindingsForPath[ firstActiveIndex ] = last;\n\t\t\t\t\t\tbindingsForPath.pop();\n\n\t\t\t\t\t}\n\n\t\t\t\t} else {\n\n\t\t\t\t\t// object is active, just swap with the last and pop\n\n\t\t\t\t\tvar lastIndex = -- nObjects,\n\t\t\t\t\t\tlastObject = objects[ lastIndex ];\n\n\t\t\t\t\tindicesByUUID[ lastObject.uuid ] = index;\n\t\t\t\t\tobjects[ index ] = lastObject;\n\t\t\t\t\tobjects.pop();\n\n\t\t\t\t\t// accounting is done, now do the same for all bindings\n\n\t\t\t\t\tfor ( var j = 0, m = nBindings; j !== m; ++ j ) {\n\n\t\t\t\t\t\tvar bindingsForPath = bindings[ j ];\n\n\t\t\t\t\t\tbindingsForPath[ index ] = bindingsForPath[ lastIndex ];\n\t\t\t\t\t\tbindingsForPath.pop();\n\n\t\t\t\t\t}\n\n\t\t\t\t} // cached or active\n\n\t\t\t} // if object is known\n\n\t\t} // for arguments\n\n\t\tthis.nCachedObjects_ = nCachedObjects;\n\n\t},\n\n\t// Internal interface used by befriended PropertyBinding.Composite:\n\n\tsubscribe_: function( path, parsedPath ) {\n\t\t// returns an array of bindings for the given path that is changed\n\t\t// according to the contained objects in the group\n\n\t\tvar indicesByPath = this._bindingsIndicesByPath,\n\t\t\tindex = indicesByPath[ path ],\n\t\t\tbindings = this._bindings;\n\n\t\tif ( index !== undefined ) return bindings[ index ];\n\n\t\tvar paths = this._paths,\n\t\t\tparsedPaths = this._parsedPaths,\n\t\t\tobjects = this._objects,\n\t\t\tnObjects = objects.length,\n\t\t\tnCachedObjects = this.nCachedObjects_,\n\t\t\tbindingsForPath = new Array( nObjects );\n\n\t\tindex = bindings.length;\n\n\t\tindicesByPath[ path ] = index;\n\n\t\tpaths.push( path );\n\t\tparsedPaths.push( parsedPath );\n\t\tbindings.push( bindingsForPath );\n\n\t\tfor ( var i = nCachedObjects,\n\t\t\t\tn = objects.length; i !== n; ++ i ) {\n\n\t\t\tvar object = objects[ i ];\n\n\t\t\tbindingsForPath[ i ] =\n\t\t\t\t\tnew PropertyBinding( object, path, parsedPath );\n\n\t\t}\n\n\t\treturn bindingsForPath;\n\n\t},\n\n\tunsubscribe_: function( path ) {\n\t\t// tells the group to forget about a property path and no longer\n\t\t// update the array previously obtained with 'subscribe_'\n\n\t\tvar indicesByPath = this._bindingsIndicesByPath,\n\t\t\tindex = indicesByPath[ path ];\n\n\t\tif ( index !== undefined ) {\n\n\t\t\tvar paths = this._paths,\n\t\t\t\tparsedPaths = this._parsedPaths,\n\t\t\t\tbindings = this._bindings,\n\t\t\t\tlastBindingsIndex = bindings.length - 1,\n\t\t\t\tlastBindings = bindings[ lastBindingsIndex ],\n\t\t\t\tlastBindingsPath = path[ lastBindingsIndex ];\n\n\t\t\tindicesByPath[ lastBindingsPath ] = index;\n\n\t\t\tbindings[ index ] = lastBindings;\n\t\t\tbindings.pop();\n\n\t\t\tparsedPaths[ index ] = parsedPaths[ lastBindingsIndex ];\n\t\t\tparsedPaths.pop();\n\n\t\t\tpaths[ index ] = paths[ lastBindingsIndex ];\n\t\t\tpaths.pop();\n\n\t\t}\n\n\t}\n\n};\n\n\n\nexport { AnimationObjectGroup };\n","import { WrapAroundEnding, ZeroCurvatureEnding, ZeroSlopeEnding, LoopPingPong, LoopOnce, LoopRepeat } from '../constants';\n\n/**\n *\n * Action provided by AnimationMixer for scheduling clip playback on specific\n * objects.\n *\n * @author Ben Houston / http://clara.io/\n * @author David Sarno / http://lighthaus.us/\n * @author tschw\n *\n */\n\nfunction AnimationAction( mixer, clip, localRoot ) {\n\n\tthis._mixer = mixer;\n\tthis._clip = clip;\n\tthis._localRoot = localRoot || null;\n\n\tvar tracks = clip.tracks,\n\t\tnTracks = tracks.length,\n\t\tinterpolants = new Array( nTracks );\n\n\tvar interpolantSettings = {\n\t\t\tendingStart: \tZeroCurvatureEnding,\n\t\t\tendingEnd:\t\tZeroCurvatureEnding\n\t};\n\n\tfor ( var i = 0; i !== nTracks; ++ i ) {\n\n\t\tvar interpolant = tracks[ i ].createInterpolant( null );\n\t\tinterpolants[ i ] = interpolant;\n\t\tinterpolant.settings = interpolantSettings;\n\n\t}\n\n\tthis._interpolantSettings = interpolantSettings;\n\n\tthis._interpolants = interpolants;\t// bound by the mixer\n\n\t// inside: PropertyMixer (managed by the mixer)\n\tthis._propertyBindings = new Array( nTracks );\n\n\tthis._cacheIndex = null;\t\t\t// for the memory manager\n\tthis._byClipCacheIndex = null;\t\t// for the memory manager\n\n\tthis._timeScaleInterpolant = null;\n\tthis._weightInterpolant = null;\n\n\tthis.loop = LoopRepeat;\n\tthis._loopCount = -1;\n\n\t// global mixer time when the action is to be started\n\t// it's set back to 'null' upon start of the action\n\tthis._startTime = null;\n\n\t// scaled local time of the action\n\t// gets clamped or wrapped to 0..clip.duration according to loop\n\tthis.time = 0;\n\n\tthis.timeScale = 1;\n\tthis._effectiveTimeScale = 1;\n\n\tthis.weight = 1;\n\tthis._effectiveWeight = 1;\n\n\tthis.repetitions = Infinity; \t\t// no. of repetitions when looping\n\n\tthis.paused = false;\t\t\t\t// false -> zero effective time scale\n\tthis.enabled = true;\t\t\t\t// true -> zero effective weight\n\n\tthis.clampWhenFinished \t= false;\t// keep feeding the last frame?\n\n\tthis.zeroSlopeAtStart \t= true;\t\t// for smooth interpolation w/o separate\n\tthis.zeroSlopeAtEnd\t\t= true;\t\t// clips for start, loop and end\n\n};\n\nAnimationAction.prototype = {\n\n\tconstructor: AnimationAction,\n\n\t// State & Scheduling\n\n\tplay: function() {\n\n\t\tthis._mixer._activateAction( this );\n\n\t\treturn this;\n\n\t},\n\n\tstop: function() {\n\n\t\tthis._mixer._deactivateAction( this );\n\n\t\treturn this.reset();\n\n\t},\n\n\treset: function() {\n\n\t\tthis.paused = false;\n\t\tthis.enabled = true;\n\n\t\tthis.time = 0;\t\t\t// restart clip\n\t\tthis._loopCount = -1;\t// forget previous loops\n\t\tthis._startTime = null;\t// forget scheduling\n\n\t\treturn this.stopFading().stopWarping();\n\n\t},\n\n\tisRunning: function() {\n\n\t\treturn this.enabled && ! this.paused && this.timeScale !== 0 &&\n\t\t\t\tthis._startTime === null && this._mixer._isActiveAction( this );\n\n\t},\n\n\t// return true when play has been called\n\tisScheduled: function() {\n\n\t\treturn this._mixer._isActiveAction( this );\n\n\t},\n\n\tstartAt: function( time ) {\n\n\t\tthis._startTime = time;\n\n\t\treturn this;\n\n\t},\n\n\tsetLoop: function( mode, repetitions ) {\n\n\t\tthis.loop = mode;\n\t\tthis.repetitions = repetitions;\n\n\t\treturn this;\n\n\t},\n\n\t// Weight\n\n\t// set the weight stopping any scheduled fading\n\t// although .enabled = false yields an effective weight of zero, this\n\t// method does *not* change .enabled, because it would be confusing\n\tsetEffectiveWeight: function( weight ) {\n\n\t\tthis.weight = weight;\n\n\t\t// note: same logic as when updated at runtime\n\t\tthis._effectiveWeight = this.enabled ? weight : 0;\n\n\t\treturn this.stopFading();\n\n\t},\n\n\t// return the weight considering fading and .enabled\n\tgetEffectiveWeight: function() {\n\n\t\treturn this._effectiveWeight;\n\n\t},\n\n\tfadeIn: function( duration ) {\n\n\t\treturn this._scheduleFading( duration, 0, 1 );\n\n\t},\n\n\tfadeOut: function( duration ) {\n\n\t\treturn this._scheduleFading( duration, 1, 0 );\n\n\t},\n\n\tcrossFadeFrom: function( fadeOutAction, duration, warp ) {\n\n\t\tfadeOutAction.fadeOut( duration );\n\t\tthis.fadeIn( duration );\n\n\t\tif( warp ) {\n\n\t\t\tvar fadeInDuration = this._clip.duration,\n\t\t\t\tfadeOutDuration = fadeOutAction._clip.duration,\n\n\t\t\t\tstartEndRatio = fadeOutDuration / fadeInDuration,\n\t\t\t\tendStartRatio = fadeInDuration / fadeOutDuration;\n\n\t\t\tfadeOutAction.warp( 1.0, startEndRatio, duration );\n\t\t\tthis.warp( endStartRatio, 1.0, duration );\n\n\t\t}\n\n\t\treturn this;\n\n\t},\n\n\tcrossFadeTo: function( fadeInAction, duration, warp ) {\n\n\t\treturn fadeInAction.crossFadeFrom( this, duration, warp );\n\n\t},\n\n\tstopFading: function() {\n\n\t\tvar weightInterpolant = this._weightInterpolant;\n\n\t\tif ( weightInterpolant !== null ) {\n\n\t\t\tthis._weightInterpolant = null;\n\t\t\tthis._mixer._takeBackControlInterpolant( weightInterpolant );\n\n\t\t}\n\n\t\treturn this;\n\n\t},\n\n\t// Time Scale Control\n\n\t// set the weight stopping any scheduled warping\n\t// although .paused = true yields an effective time scale of zero, this\n\t// method does *not* change .paused, because it would be confusing\n\tsetEffectiveTimeScale: function( timeScale ) {\n\n\t\tthis.timeScale = timeScale;\n\t\tthis._effectiveTimeScale = this.paused ? 0 :timeScale;\n\n\t\treturn this.stopWarping();\n\n\t},\n\n\t// return the time scale considering warping and .paused\n\tgetEffectiveTimeScale: function() {\n\n\t\treturn this._effectiveTimeScale;\n\n\t},\n\n\tsetDuration: function( duration ) {\n\n\t\tthis.timeScale = this._clip.duration / duration;\n\n\t\treturn this.stopWarping();\n\n\t},\n\n\tsyncWith: function( action ) {\n\n\t\tthis.time = action.time;\n\t\tthis.timeScale = action.timeScale;\n\n\t\treturn this.stopWarping();\n\n\t},\n\n\thalt: function( duration ) {\n\n\t\treturn this.warp( this._effectiveTimeScale, 0, duration );\n\n\t},\n\n\twarp: function( startTimeScale, endTimeScale, duration ) {\n\n\t\tvar mixer = this._mixer, now = mixer.time,\n\t\t\tinterpolant = this._timeScaleInterpolant,\n\n\t\t\ttimeScale = this.timeScale;\n\n\t\tif ( interpolant === null ) {\n\n\t\t\tinterpolant = mixer._lendControlInterpolant(),\n\t\t\tthis._timeScaleInterpolant = interpolant;\n\n\t\t}\n\n\t\tvar times = interpolant.parameterPositions,\n\t\t\tvalues = interpolant.sampleValues;\n\n\t\ttimes[ 0 ] = now;\n\t\ttimes[ 1 ] = now + duration;\n\n\t\tvalues[ 0 ] = startTimeScale / timeScale;\n\t\tvalues[ 1 ] = endTimeScale / timeScale;\n\n\t\treturn this;\n\n\t},\n\n\tstopWarping: function() {\n\n\t\tvar timeScaleInterpolant = this._timeScaleInterpolant;\n\n\t\tif ( timeScaleInterpolant !== null ) {\n\n\t\t\tthis._timeScaleInterpolant = null;\n\t\t\tthis._mixer._takeBackControlInterpolant( timeScaleInterpolant );\n\n\t\t}\n\n\t\treturn this;\n\n\t},\n\n\t// Object Accessors\n\n\tgetMixer: function() {\n\n\t\treturn this._mixer;\n\n\t},\n\n\tgetClip: function() {\n\n\t\treturn this._clip;\n\n\t},\n\n\tgetRoot: function() {\n\n\t\treturn this._localRoot || this._mixer._root;\n\n\t},\n\n\t// Interna\n\n\t_update: function( time, deltaTime, timeDirection, accuIndex ) {\n\t\t// called by the mixer\n\n\t\tvar startTime = this._startTime;\n\n\t\tif ( startTime !== null ) {\n\n\t\t\t// check for scheduled start of action\n\n\t\t\tvar timeRunning = ( time - startTime ) * timeDirection;\n\t\t\tif ( timeRunning < 0 || timeDirection === 0 ) {\n\n\t\t\t\treturn; // yet to come / don't decide when delta = 0\n\n\t\t\t}\n\n\t\t\t// start\n\n\t\t\tthis._startTime = null; // unschedule\n\t\t\tdeltaTime = timeDirection * timeRunning;\n\n\t\t}\n\n\t\t// apply time scale and advance time\n\n\t\tdeltaTime *= this._updateTimeScale( time );\n\t\tvar clipTime = this._updateTime( deltaTime );\n\n\t\t// note: _updateTime may disable the action resulting in\n\t\t// an effective weight of 0\n\n\t\tvar weight = this._updateWeight( time );\n\n\t\tif ( weight > 0 ) {\n\n\t\t\tvar interpolants = this._interpolants;\n\t\t\tvar propertyMixers = this._propertyBindings;\n\n\t\t\tfor ( var j = 0, m = interpolants.length; j !== m; ++ j ) {\n\n\t\t\t\tinterpolants[ j ].evaluate( clipTime );\n\t\t\t\tpropertyMixers[ j ].accumulate( accuIndex, weight );\n\n\t\t\t}\n\n\t\t}\n\n\t},\n\n\t_updateWeight: function( time ) {\n\n\t\tvar weight = 0;\n\n\t\tif ( this.enabled ) {\n\n\t\t\tweight = this.weight;\n\t\t\tvar interpolant = this._weightInterpolant;\n\n\t\t\tif ( interpolant !== null ) {\n\n\t\t\t\tvar interpolantValue = interpolant.evaluate( time )[ 0 ];\n\n\t\t\t\tweight *= interpolantValue;\n\n\t\t\t\tif ( time > interpolant.parameterPositions[ 1 ] ) {\n\n\t\t\t\t\tthis.stopFading();\n\n\t\t\t\t\tif ( interpolantValue === 0 ) {\n\n\t\t\t\t\t\t// faded out, disable\n\t\t\t\t\t\tthis.enabled = false;\n\n\t\t\t\t\t}\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t}\n\n\t\tthis._effectiveWeight = weight;\n\t\treturn weight;\n\n\t},\n\n\t_updateTimeScale: function( time ) {\n\n\t\tvar timeScale = 0;\n\n\t\tif ( ! this.paused ) {\n\n\t\t\ttimeScale = this.timeScale;\n\n\t\t\tvar interpolant = this._timeScaleInterpolant;\n\n\t\t\tif ( interpolant !== null ) {\n\n\t\t\t\tvar interpolantValue = interpolant.evaluate( time )[ 0 ];\n\n\t\t\t\ttimeScale *= interpolantValue;\n\n\t\t\t\tif ( time > interpolant.parameterPositions[ 1 ] ) {\n\n\t\t\t\t\tthis.stopWarping();\n\n\t\t\t\t\tif ( timeScale === 0 ) {\n\n\t\t\t\t\t\t// motion has halted, pause\n\t\t\t\t\t\tthis.paused = true;\n\n\t\t\t\t\t} else {\n\n\t\t\t\t\t\t// warp done - apply final time scale\n\t\t\t\t\t\tthis.timeScale = timeScale;\n\n\t\t\t\t\t}\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t}\n\n\t\tthis._effectiveTimeScale = timeScale;\n\t\treturn timeScale;\n\n\t},\n\n\t_updateTime: function( deltaTime ) {\n\n\t\tvar time = this.time + deltaTime;\n\n\t\tif ( deltaTime === 0 ) return time;\n\n\t\tvar duration = this._clip.duration,\n\n\t\t\tloop = this.loop,\n\t\t\tloopCount = this._loopCount;\n\n\t\tif ( loop === LoopOnce ) {\n\n\t\t\tif ( loopCount === -1 ) {\n\t\t\t\t// just started\n\n\t\t\t\tthis.loopCount = 0;\n\t\t\t\tthis._setEndings( true, true, false );\n\n\t\t\t}\n\n\t\t\thandle_stop: {\n\n\t\t\t\tif ( time >= duration ) {\n\n\t\t\t\t\ttime = duration;\n\n\t\t\t\t} else if ( time < 0 ) {\n\n\t\t\t\t\ttime = 0;\n\n\t\t\t\t} else break handle_stop;\n\n\t\t\t\tif ( this.clampWhenFinished ) this.paused = true;\n\t\t\t\telse this.enabled = false;\n\n\t\t\t\tthis._mixer.dispatchEvent( {\n\t\t\t\t\ttype: 'finished', action: this,\n\t\t\t\t\tdirection: deltaTime < 0 ? -1 : 1\n\t\t\t\t} );\n\n\t\t\t}\n\n\t\t} else { // repetitive Repeat or PingPong\n\n\t\t\tvar pingPong = ( loop === LoopPingPong );\n\n\t\t\tif ( loopCount === -1 ) {\n\t\t\t\t// just started\n\n\t\t\t\tif ( deltaTime >= 0 ) {\n\n\t\t\t\t\tloopCount = 0;\n\n\t\t\t\t\tthis._setEndings(\n\t\t\t\t\t\t\ttrue, this.repetitions === 0, pingPong );\n\n\t\t\t\t} else {\n\n\t\t\t\t\t// when looping in reverse direction, the initial\n\t\t\t\t\t// transition through zero counts as a repetition,\n\t\t\t\t\t// so leave loopCount at -1\n\n\t\t\t\t\tthis._setEndings(\n\t\t\t\t\t\t\tthis.repetitions === 0, true, pingPong );\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t\tif ( time >= duration || time < 0 ) {\n\t\t\t\t// wrap around\n\n\t\t\t\tvar loopDelta = Math.floor( time / duration ); // signed\n\t\t\t\ttime -= duration * loopDelta;\n\n\t\t\t\tloopCount += Math.abs( loopDelta );\n\n\t\t\t\tvar pending = this.repetitions - loopCount;\n\n\t\t\t\tif ( pending < 0 ) {\n\t\t\t\t\t// have to stop (switch state, clamp time, fire event)\n\n\t\t\t\t\tif ( this.clampWhenFinished ) this.paused = true;\n\t\t\t\t\telse this.enabled = false;\n\n\t\t\t\t\ttime = deltaTime > 0 ? duration : 0;\n\n\t\t\t\t\tthis._mixer.dispatchEvent( {\n\t\t\t\t\t\ttype: 'finished', action: this,\n\t\t\t\t\t\tdirection: deltaTime > 0 ? 1 : -1\n\t\t\t\t\t} );\n\n\t\t\t\t} else {\n\t\t\t\t\t// keep running\n\n\t\t\t\t\tif ( pending === 0 ) {\n\t\t\t\t\t\t// entering the last round\n\n\t\t\t\t\t\tvar atStart = deltaTime < 0;\n\t\t\t\t\t\tthis._setEndings( atStart, ! atStart, pingPong );\n\n\t\t\t\t\t} else {\n\n\t\t\t\t\t\tthis._setEndings( false, false, pingPong );\n\n\t\t\t\t\t}\n\n\t\t\t\t\tthis._loopCount = loopCount;\n\n\t\t\t\t\tthis._mixer.dispatchEvent( {\n\t\t\t\t\t\ttype: 'loop', action: this, loopDelta: loopDelta\n\t\t\t\t\t} );\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t\tif ( pingPong && ( loopCount & 1 ) === 1 ) {\n\t\t\t\t// invert time for the \"pong round\"\n\n\t\t\t\tthis.time = time;\n\t\t\t\treturn duration - time;\n\n\t\t\t}\n\n\t\t}\n\n\t\tthis.time = time;\n\t\treturn time;\n\n\t},\n\n\t_setEndings: function( atStart, atEnd, pingPong ) {\n\n\t\tvar settings = this._interpolantSettings;\n\n\t\tif ( pingPong ) {\n\n\t\t\tsettings.endingStart \t= ZeroSlopeEnding;\n\t\t\tsettings.endingEnd\t\t= ZeroSlopeEnding;\n\n\t\t} else {\n\n\t\t\t// assuming for LoopOnce atStart == atEnd == true\n\n\t\t\tif ( atStart ) {\n\n\t\t\t\tsettings.endingStart = this.zeroSlopeAtStart ?\n\t\t\t\t\t\tZeroSlopeEnding : ZeroCurvatureEnding;\n\n\t\t\t} else {\n\n\t\t\t\tsettings.endingStart = WrapAroundEnding;\n\n\t\t\t}\n\n\t\t\tif ( atEnd ) {\n\n\t\t\t\tsettings.endingEnd = this.zeroSlopeAtEnd ?\n\t\t\t\t\t\tZeroSlopeEnding : ZeroCurvatureEnding;\n\n\t\t\t} else {\n\n\t\t\t\tsettings.endingEnd \t = WrapAroundEnding;\n\n\t\t\t}\n\n\t\t}\n\n\t},\n\n\t_scheduleFading: function( duration, weightNow, weightThen ) {\n\n\t\tvar mixer = this._mixer, now = mixer.time,\n\t\t\tinterpolant = this._weightInterpolant;\n\n\t\tif ( interpolant === null ) {\n\n\t\t\tinterpolant = mixer._lendControlInterpolant(),\n\t\t\tthis._weightInterpolant = interpolant;\n\n\t\t}\n\n\t\tvar times = interpolant.parameterPositions,\n\t\t\tvalues = interpolant.sampleValues;\n\n\t\ttimes[ 0 ] = now; \t\t\t\tvalues[ 0 ] = weightNow;\n\t\ttimes[ 1 ] = now + duration;\tvalues[ 1 ] = weightThen;\n\n\t\treturn this;\n\n\t}\n\n};\n\n\nexport { AnimationAction };\n","import { AnimationAction } from './AnimationAction';\nimport { EventDispatcher } from '../core/EventDispatcher';\nimport { LinearInterpolant } from '../math/interpolants/LinearInterpolant';\nimport { PropertyBinding } from './PropertyBinding';\nimport { PropertyMixer } from './PropertyMixer';\nimport { AnimationClip } from './AnimationClip';\n\n/**\n *\n * Player for AnimationClips.\n *\n *\n * @author Ben Houston / http://clara.io/\n * @author David Sarno / http://lighthaus.us/\n * @author tschw\n */\n\nfunction AnimationMixer( root ) {\n\n\tthis._root = root;\n\tthis._initMemoryManager();\n\tthis._accuIndex = 0;\n\n\tthis.time = 0;\n\n\tthis.timeScale = 1.0;\n\n}\n\nObject.assign( AnimationMixer.prototype, EventDispatcher.prototype, {\n\n\t// return an action for a clip optionally using a custom root target\n\t// object (this method allocates a lot of dynamic memory in case a\n\t// previously unknown clip/root combination is specified)\n\tclipAction: function( clip, optionalRoot ) {\n\n\t\tvar root = optionalRoot || this._root,\n\t\t\trootUuid = root.uuid,\n\n\t\t\tclipObject = typeof clip === 'string' ?\n\t\t\t\t\tAnimationClip.findByName( root, clip ) : clip,\n\n\t\t\tclipUuid = clipObject !== null ? clipObject.uuid : clip,\n\n\t\t\tactionsForClip = this._actionsByClip[ clipUuid ],\n\t\t\tprototypeAction = null;\n\n\t\tif ( actionsForClip !== undefined ) {\n\n\t\t\tvar existingAction =\n\t\t\t\t\tactionsForClip.actionByRoot[ rootUuid ];\n\n\t\t\tif ( existingAction !== undefined ) {\n\n\t\t\t\treturn existingAction;\n\n\t\t\t}\n\n\t\t\t// we know the clip, so we don't have to parse all\n\t\t\t// the bindings again but can just copy\n\t\t\tprototypeAction = actionsForClip.knownActions[ 0 ];\n\n\t\t\t// also, take the clip from the prototype action\n\t\t\tif ( clipObject === null )\n\t\t\t\tclipObject = prototypeAction._clip;\n\n\t\t}\n\n\t\t// clip must be known when specified via string\n\t\tif ( clipObject === null ) return null;\n\n\t\t// allocate all resources required to run it\n\t\tvar newAction = new AnimationAction( this, clipObject, optionalRoot );\n\n\t\tthis._bindAction( newAction, prototypeAction );\n\n\t\t// and make the action known to the memory manager\n\t\tthis._addInactiveAction( newAction, clipUuid, rootUuid );\n\n\t\treturn newAction;\n\n\t},\n\n\t// get an existing action\n\texistingAction: function( clip, optionalRoot ) {\n\n\t\tvar root = optionalRoot || this._root,\n\t\t\trootUuid = root.uuid,\n\n\t\t\tclipObject = typeof clip === 'string' ?\n\t\t\t\t\tAnimationClip.findByName( root, clip ) : clip,\n\n\t\t\tclipUuid = clipObject ? clipObject.uuid : clip,\n\n\t\t\tactionsForClip = this._actionsByClip[ clipUuid ];\n\n\t\tif ( actionsForClip !== undefined ) {\n\n\t\t\treturn actionsForClip.actionByRoot[ rootUuid ] || null;\n\n\t\t}\n\n\t\treturn null;\n\n\t},\n\n\t// deactivates all previously scheduled actions\n\tstopAllAction: function() {\n\n\t\tvar actions = this._actions,\n\t\t\tnActions = this._nActiveActions,\n\t\t\tbindings = this._bindings,\n\t\t\tnBindings = this._nActiveBindings;\n\n\t\tthis._nActiveActions = 0;\n\t\tthis._nActiveBindings = 0;\n\n\t\tfor ( var i = 0; i !== nActions; ++ i ) {\n\n\t\t\tactions[ i ].reset();\n\n\t\t}\n\n\t\tfor ( var i = 0; i !== nBindings; ++ i ) {\n\n\t\t\tbindings[ i ].useCount = 0;\n\n\t\t}\n\n\t\treturn this;\n\n\t},\n\n\t// advance the time and update apply the animation\n\tupdate: function( deltaTime ) {\n\n\t\tdeltaTime *= this.timeScale;\n\n\t\tvar actions = this._actions,\n\t\t\tnActions = this._nActiveActions,\n\n\t\t\ttime = this.time += deltaTime,\n\t\t\ttimeDirection = Math.sign( deltaTime ),\n\n\t\t\taccuIndex = this._accuIndex ^= 1;\n\n\t\t// run active actions\n\n\t\tfor ( var i = 0; i !== nActions; ++ i ) {\n\n\t\t\tvar action = actions[ i ];\n\n\t\t\tif ( action.enabled ) {\n\n\t\t\t\taction._update( time, deltaTime, timeDirection, accuIndex );\n\n\t\t\t}\n\n\t\t}\n\n\t\t// update scene graph\n\n\t\tvar bindings = this._bindings,\n\t\t\tnBindings = this._nActiveBindings;\n\n\t\tfor ( var i = 0; i !== nBindings; ++ i ) {\n\n\t\t\tbindings[ i ].apply( accuIndex );\n\n\t\t}\n\n\t\treturn this;\n\n\t},\n\n\t// return this mixer's root target object\n\tgetRoot: function() {\n\n\t\treturn this._root;\n\n\t},\n\n\t// free all resources specific to a particular clip\n\tuncacheClip: function( clip ) {\n\n\t\tvar actions = this._actions,\n\t\t\tclipUuid = clip.uuid,\n\t\t\tactionsByClip = this._actionsByClip,\n\t\t\tactionsForClip = actionsByClip[ clipUuid ];\n\n\t\tif ( actionsForClip !== undefined ) {\n\n\t\t\t// note: just calling _removeInactiveAction would mess up the\n\t\t\t// iteration state and also require updating the state we can\n\t\t\t// just throw away\n\n\t\t\tvar actionsToRemove = actionsForClip.knownActions;\n\n\t\t\tfor ( var i = 0, n = actionsToRemove.length; i !== n; ++ i ) {\n\n\t\t\t\tvar action = actionsToRemove[ i ];\n\n\t\t\t\tthis._deactivateAction( action );\n\n\t\t\t\tvar cacheIndex = action._cacheIndex,\n\t\t\t\t\tlastInactiveAction = actions[ actions.length - 1 ];\n\n\t\t\t\taction._cacheIndex = null;\n\t\t\t\taction._byClipCacheIndex = null;\n\n\t\t\t\tlastInactiveAction._cacheIndex = cacheIndex;\n\t\t\t\tactions[ cacheIndex ] = lastInactiveAction;\n\t\t\t\tactions.pop();\n\n\t\t\t\tthis._removeInactiveBindingsForAction( action );\n\n\t\t\t}\n\n\t\t\tdelete actionsByClip[ clipUuid ];\n\n\t\t}\n\n\t},\n\n\t// free all resources specific to a particular root target object\n\tuncacheRoot: function( root ) {\n\n\t\tvar rootUuid = root.uuid,\n\t\t\tactionsByClip = this._actionsByClip;\n\n\t\tfor ( var clipUuid in actionsByClip ) {\n\n\t\t\tvar actionByRoot = actionsByClip[ clipUuid ].actionByRoot,\n\t\t\t\taction = actionByRoot[ rootUuid ];\n\n\t\t\tif ( action !== undefined ) {\n\n\t\t\t\tthis._deactivateAction( action );\n\t\t\t\tthis._removeInactiveAction( action );\n\n\t\t\t}\n\n\t\t}\n\n\t\tvar bindingsByRoot = this._bindingsByRootAndName,\n\t\t\tbindingByName = bindingsByRoot[ rootUuid ];\n\n\t\tif ( bindingByName !== undefined ) {\n\n\t\t\tfor ( var trackName in bindingByName ) {\n\n\t\t\t\tvar binding = bindingByName[ trackName ];\n\t\t\t\tbinding.restoreOriginalState();\n\t\t\t\tthis._removeInactiveBinding( binding );\n\n\t\t\t}\n\n\t\t}\n\n\t},\n\n\t// remove a targeted clip from the cache\n\tuncacheAction: function( clip, optionalRoot ) {\n\n\t\tvar action = this.existingAction( clip, optionalRoot );\n\n\t\tif ( action !== null ) {\n\n\t\t\tthis._deactivateAction( action );\n\t\t\tthis._removeInactiveAction( action );\n\n\t\t}\n\n\t}\n\n} );\n\n// Implementation details:\n\nObject.assign( AnimationMixer.prototype, {\n\n\t_bindAction: function( action, prototypeAction ) {\n\n\t\tvar root = action._localRoot || this._root,\n\t\t\ttracks = action._clip.tracks,\n\t\t\tnTracks = tracks.length,\n\t\t\tbindings = action._propertyBindings,\n\t\t\tinterpolants = action._interpolants,\n\t\t\trootUuid = root.uuid,\n\t\t\tbindingsByRoot = this._bindingsByRootAndName,\n\t\t\tbindingsByName = bindingsByRoot[ rootUuid ];\n\n\t\tif ( bindingsByName === undefined ) {\n\n\t\t\tbindingsByName = {};\n\t\t\tbindingsByRoot[ rootUuid ] = bindingsByName;\n\n\t\t}\n\n\t\tfor ( var i = 0; i !== nTracks; ++ i ) {\n\n\t\t\tvar track = tracks[ i ],\n\t\t\t\ttrackName = track.name,\n\t\t\t\tbinding = bindingsByName[ trackName ];\n\n\t\t\tif ( binding !== undefined ) {\n\n\t\t\t\tbindings[ i ] = binding;\n\n\t\t\t} else {\n\n\t\t\t\tbinding = bindings[ i ];\n\n\t\t\t\tif ( binding !== undefined ) {\n\n\t\t\t\t\t// existing binding, make sure the cache knows\n\n\t\t\t\t\tif ( binding._cacheIndex === null ) {\n\n\t\t\t\t\t\t++ binding.referenceCount;\n\t\t\t\t\t\tthis._addInactiveBinding( binding, rootUuid, trackName );\n\n\t\t\t\t\t}\n\n\t\t\t\t\tcontinue;\n\n\t\t\t\t}\n\n\t\t\t\tvar path = prototypeAction && prototypeAction.\n\t\t\t\t\t\t_propertyBindings[ i ].binding.parsedPath;\n\n\t\t\t\tbinding = new PropertyMixer(\n\t\t\t\t\t\tPropertyBinding.create( root, trackName, path ),\n\t\t\t\t\t\ttrack.ValueTypeName, track.getValueSize() );\n\n\t\t\t\t++ binding.referenceCount;\n\t\t\t\tthis._addInactiveBinding( binding, rootUuid, trackName );\n\n\t\t\t\tbindings[ i ] = binding;\n\n\t\t\t}\n\n\t\t\tinterpolants[ i ].resultBuffer = binding.buffer;\n\n\t\t}\n\n\t},\n\n\t_activateAction: function( action ) {\n\n\t\tif ( ! this._isActiveAction( action ) ) {\n\n\t\t\tif ( action._cacheIndex === null ) {\n\n\t\t\t\t// this action has been forgotten by the cache, but the user\n\t\t\t\t// appears to be still using it -> rebind\n\n\t\t\t\tvar rootUuid = ( action._localRoot || this._root ).uuid,\n\t\t\t\t\tclipUuid = action._clip.uuid,\n\t\t\t\t\tactionsForClip = this._actionsByClip[ clipUuid ];\n\n\t\t\t\tthis._bindAction( action,\n\t\t\t\t\t\tactionsForClip && actionsForClip.knownActions[ 0 ] );\n\n\t\t\t\tthis._addInactiveAction( action, clipUuid, rootUuid );\n\n\t\t\t}\n\n\t\t\tvar bindings = action._propertyBindings;\n\n\t\t\t// increment reference counts / sort out state\n\t\t\tfor ( var i = 0, n = bindings.length; i !== n; ++ i ) {\n\n\t\t\t\tvar binding = bindings[ i ];\n\n\t\t\t\tif ( binding.useCount ++ === 0 ) {\n\n\t\t\t\t\tthis._lendBinding( binding );\n\t\t\t\t\tbinding.saveOriginalState();\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t\tthis._lendAction( action );\n\n\t\t}\n\n\t},\n\n\t_deactivateAction: function( action ) {\n\n\t\tif ( this._isActiveAction( action ) ) {\n\n\t\t\tvar bindings = action._propertyBindings;\n\n\t\t\t// decrement reference counts / sort out state\n\t\t\tfor ( var i = 0, n = bindings.length; i !== n; ++ i ) {\n\n\t\t\t\tvar binding = bindings[ i ];\n\n\t\t\t\tif ( -- binding.useCount === 0 ) {\n\n\t\t\t\t\tbinding.restoreOriginalState();\n\t\t\t\t\tthis._takeBackBinding( binding );\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t\tthis._takeBackAction( action );\n\n\t\t}\n\n\t},\n\n\t// Memory manager\n\n\t_initMemoryManager: function() {\n\n\t\tthis._actions = []; // 'nActiveActions' followed by inactive ones\n\t\tthis._nActiveActions = 0;\n\n\t\tthis._actionsByClip = {};\n\t\t// inside:\n\t\t// {\n\t\t// \t\tknownActions: Array< AnimationAction >\t- used as prototypes\n\t\t// \t\tactionByRoot: AnimationAction\t\t\t- lookup\n\t\t// }\n\n\n\t\tthis._bindings = []; // 'nActiveBindings' followed by inactive ones\n\t\tthis._nActiveBindings = 0;\n\n\t\tthis._bindingsByRootAndName = {}; // inside: Map< name, PropertyMixer >\n\n\n\t\tthis._controlInterpolants = []; // same game as above\n\t\tthis._nActiveControlInterpolants = 0;\n\n\t\tvar scope = this;\n\n\t\tthis.stats = {\n\n\t\t\tactions: {\n\t\t\t\tget total() { return scope._actions.length; },\n\t\t\t\tget inUse() { return scope._nActiveActions; }\n\t\t\t},\n\t\t\tbindings: {\n\t\t\t\tget total() { return scope._bindings.length; },\n\t\t\t\tget inUse() { return scope._nActiveBindings; }\n\t\t\t},\n\t\t\tcontrolInterpolants: {\n\t\t\t\tget total() { return scope._controlInterpolants.length; },\n\t\t\t\tget inUse() { return scope._nActiveControlInterpolants; }\n\t\t\t}\n\n\t\t};\n\n\t},\n\n\t// Memory management for AnimationAction objects\n\n\t_isActiveAction: function( action ) {\n\n\t\tvar index = action._cacheIndex;\n\t\treturn index !== null && index < this._nActiveActions;\n\n\t},\n\n\t_addInactiveAction: function( action, clipUuid, rootUuid ) {\n\n\t\tvar actions = this._actions,\n\t\t\tactionsByClip = this._actionsByClip,\n\t\t\tactionsForClip = actionsByClip[ clipUuid ];\n\n\t\tif ( actionsForClip === undefined ) {\n\n\t\t\tactionsForClip = {\n\n\t\t\t\tknownActions: [ action ],\n\t\t\t\tactionByRoot: {}\n\n\t\t\t};\n\n\t\t\taction._byClipCacheIndex = 0;\n\n\t\t\tactionsByClip[ clipUuid ] = actionsForClip;\n\n\t\t} else {\n\n\t\t\tvar knownActions = actionsForClip.knownActions;\n\n\t\t\taction._byClipCacheIndex = knownActions.length;\n\t\t\tknownActions.push( action );\n\n\t\t}\n\n\t\taction._cacheIndex = actions.length;\n\t\tactions.push( action );\n\n\t\tactionsForClip.actionByRoot[ rootUuid ] = action;\n\n\t},\n\n\t_removeInactiveAction: function( action ) {\n\n\t\tvar actions = this._actions,\n\t\t\tlastInactiveAction = actions[ actions.length - 1 ],\n\t\t\tcacheIndex = action._cacheIndex;\n\n\t\tlastInactiveAction._cacheIndex = cacheIndex;\n\t\tactions[ cacheIndex ] = lastInactiveAction;\n\t\tactions.pop();\n\n\t\taction._cacheIndex = null;\n\n\n\t\tvar clipUuid = action._clip.uuid,\n\t\t\tactionsByClip = this._actionsByClip,\n\t\t\tactionsForClip = actionsByClip[ clipUuid ],\n\t\t\tknownActionsForClip = actionsForClip.knownActions,\n\n\t\t\tlastKnownAction =\n\t\t\t\tknownActionsForClip[ knownActionsForClip.length - 1 ],\n\n\t\t\tbyClipCacheIndex = action._byClipCacheIndex;\n\n\t\tlastKnownAction._byClipCacheIndex = byClipCacheIndex;\n\t\tknownActionsForClip[ byClipCacheIndex ] = lastKnownAction;\n\t\tknownActionsForClip.pop();\n\n\t\taction._byClipCacheIndex = null;\n\n\n\t\tvar actionByRoot = actionsForClip.actionByRoot,\n\t\t\trootUuid = ( actions._localRoot || this._root ).uuid;\n\n\t\tdelete actionByRoot[ rootUuid ];\n\n\t\tif ( knownActionsForClip.length === 0 ) {\n\n\t\t\tdelete actionsByClip[ clipUuid ];\n\n\t\t}\n\n\t\tthis._removeInactiveBindingsForAction( action );\n\n\t},\n\n\t_removeInactiveBindingsForAction: function( action ) {\n\n\t\tvar bindings = action._propertyBindings;\n\t\tfor ( var i = 0, n = bindings.length; i !== n; ++ i ) {\n\n\t\t\tvar binding = bindings[ i ];\n\n\t\t\tif ( -- binding.referenceCount === 0 ) {\n\n\t\t\t\tthis._removeInactiveBinding( binding );\n\n\t\t\t}\n\n\t\t}\n\n\t},\n\n\t_lendAction: function( action ) {\n\n\t\t// [ active actions | inactive actions ]\n\t\t// [ active actions >| inactive actions ]\n\t\t// s a\n\t\t// <-swap->\n\t\t// a s\n\n\t\tvar actions = this._actions,\n\t\t\tprevIndex = action._cacheIndex,\n\n\t\t\tlastActiveIndex = this._nActiveActions ++,\n\n\t\t\tfirstInactiveAction = actions[ lastActiveIndex ];\n\n\t\taction._cacheIndex = lastActiveIndex;\n\t\tactions[ lastActiveIndex ] = action;\n\n\t\tfirstInactiveAction._cacheIndex = prevIndex;\n\t\tactions[ prevIndex ] = firstInactiveAction;\n\n\t},\n\n\t_takeBackAction: function( action ) {\n\n\t\t// [ active actions | inactive actions ]\n\t\t// [ active actions |< inactive actions ]\n\t\t// a s\n\t\t// <-swap->\n\t\t// s a\n\n\t\tvar actions = this._actions,\n\t\t\tprevIndex = action._cacheIndex,\n\n\t\t\tfirstInactiveIndex = -- this._nActiveActions,\n\n\t\t\tlastActiveAction = actions[ firstInactiveIndex ];\n\n\t\taction._cacheIndex = firstInactiveIndex;\n\t\tactions[ firstInactiveIndex ] = action;\n\n\t\tlastActiveAction._cacheIndex = prevIndex;\n\t\tactions[ prevIndex ] = lastActiveAction;\n\n\t},\n\n\t// Memory management for PropertyMixer objects\n\n\t_addInactiveBinding: function( binding, rootUuid, trackName ) {\n\n\t\tvar bindingsByRoot = this._bindingsByRootAndName,\n\t\t\tbindingByName = bindingsByRoot[ rootUuid ],\n\n\t\t\tbindings = this._bindings;\n\n\t\tif ( bindingByName === undefined ) {\n\n\t\t\tbindingByName = {};\n\t\t\tbindingsByRoot[ rootUuid ] = bindingByName;\n\n\t\t}\n\n\t\tbindingByName[ trackName ] = binding;\n\n\t\tbinding._cacheIndex = bindings.length;\n\t\tbindings.push( binding );\n\n\t},\n\n\t_removeInactiveBinding: function( binding ) {\n\n\t\tvar bindings = this._bindings,\n\t\t\tpropBinding = binding.binding,\n\t\t\trootUuid = propBinding.rootNode.uuid,\n\t\t\ttrackName = propBinding.path,\n\t\t\tbindingsByRoot = this._bindingsByRootAndName,\n\t\t\tbindingByName = bindingsByRoot[ rootUuid ],\n\n\t\t\tlastInactiveBinding = bindings[ bindings.length - 1 ],\n\t\t\tcacheIndex = binding._cacheIndex;\n\n\t\tlastInactiveBinding._cacheIndex = cacheIndex;\n\t\tbindings[ cacheIndex ] = lastInactiveBinding;\n\t\tbindings.pop();\n\n\t\tdelete bindingByName[ trackName ];\n\n\t\tremove_empty_map: {\n\n\t\t\tfor ( var _ in bindingByName ) break remove_empty_map;\n\n\t\t\tdelete bindingsByRoot[ rootUuid ];\n\n\t\t}\n\n\t},\n\n\t_lendBinding: function( binding ) {\n\n\t\tvar bindings = this._bindings,\n\t\t\tprevIndex = binding._cacheIndex,\n\n\t\t\tlastActiveIndex = this._nActiveBindings ++,\n\n\t\t\tfirstInactiveBinding = bindings[ lastActiveIndex ];\n\n\t\tbinding._cacheIndex = lastActiveIndex;\n\t\tbindings[ lastActiveIndex ] = binding;\n\n\t\tfirstInactiveBinding._cacheIndex = prevIndex;\n\t\tbindings[ prevIndex ] = firstInactiveBinding;\n\n\t},\n\n\t_takeBackBinding: function( binding ) {\n\n\t\tvar bindings = this._bindings,\n\t\t\tprevIndex = binding._cacheIndex,\n\n\t\t\tfirstInactiveIndex = -- this._nActiveBindings,\n\n\t\t\tlastActiveBinding = bindings[ firstInactiveIndex ];\n\n\t\tbinding._cacheIndex = firstInactiveIndex;\n\t\tbindings[ firstInactiveIndex ] = binding;\n\n\t\tlastActiveBinding._cacheIndex = prevIndex;\n\t\tbindings[ prevIndex ] = lastActiveBinding;\n\n\t},\n\n\n\t// Memory management of Interpolants for weight and time scale\n\n\t_lendControlInterpolant: function() {\n\n\t\tvar interpolants = this._controlInterpolants,\n\t\t\tlastActiveIndex = this._nActiveControlInterpolants ++,\n\t\t\tinterpolant = interpolants[ lastActiveIndex ];\n\n\t\tif ( interpolant === undefined ) {\n\n\t\t\tinterpolant = new LinearInterpolant(\n\t\t\t\t\tnew Float32Array( 2 ), new Float32Array( 2 ),\n\t\t\t\t\t\t1, this._controlInterpolantsResultBuffer );\n\n\t\t\tinterpolant.__cacheIndex = lastActiveIndex;\n\t\t\tinterpolants[ lastActiveIndex ] = interpolant;\n\n\t\t}\n\n\t\treturn interpolant;\n\n\t},\n\n\t_takeBackControlInterpolant: function( interpolant ) {\n\n\t\tvar interpolants = this._controlInterpolants,\n\t\t\tprevIndex = interpolant.__cacheIndex,\n\n\t\t\tfirstInactiveIndex = -- this._nActiveControlInterpolants,\n\n\t\t\tlastActiveInterpolant = interpolants[ firstInactiveIndex ];\n\n\t\tinterpolant.__cacheIndex = firstInactiveIndex;\n\t\tinterpolants[ firstInactiveIndex ] = interpolant;\n\n\t\tlastActiveInterpolant.__cacheIndex = prevIndex;\n\t\tinterpolants[ prevIndex ] = lastActiveInterpolant;\n\n\t},\n\n\t_controlInterpolantsResultBuffer: new Float32Array( 1 )\n\n} );\n\n\nexport { AnimationMixer };\n","/**\n * @author mrdoob / http://mrdoob.com/\n */\n\nfunction Uniform( value ) {\n\n\tif ( typeof value === 'string' ) {\n\n\t\tconsole.warn( 'THREE.Uniform: Type parameter is no longer needed.' );\n\t\tvalue = arguments[ 1 ];\n\n\t}\n\n\tthis.value = value;\n\n}\n\nexport { Uniform };\n","import { BufferGeometry } from './BufferGeometry';\n\n/**\n * @author benaadams / https://twitter.com/ben_a_adams\n */\n\nfunction InstancedBufferGeometry() {\n\n\tBufferGeometry.call( this );\n\n\tthis.type = 'InstancedBufferGeometry';\n\tthis.maxInstancedCount = undefined;\n\n}\n\nInstancedBufferGeometry.prototype = Object.create( BufferGeometry.prototype );\nInstancedBufferGeometry.prototype.constructor = InstancedBufferGeometry;\n\nInstancedBufferGeometry.prototype.isInstancedBufferGeometry = true;\n\nInstancedBufferGeometry.prototype.addGroup = function ( start, count, materialIndex ) {\n\n\tthis.groups.push( {\n\n\t\tstart: start,\n\t\tcount: count,\n\t\tmaterialIndex: materialIndex\n\n\t} );\n\n};\n\nInstancedBufferGeometry.prototype.copy = function ( source ) {\n\n\tvar index = source.index;\n\n\tif ( index !== null ) {\n\n\t\tthis.setIndex( index.clone() );\n\n\t}\n\n\tvar attributes = source.attributes;\n\n\tfor ( var name in attributes ) {\n\n\t\tvar attribute = attributes[ name ];\n\t\tthis.addAttribute( name, attribute.clone() );\n\n\t}\n\n\tvar groups = source.groups;\n\n\tfor ( var i = 0, l = groups.length; i < l; i ++ ) {\n\n\t\tvar group = groups[ i ];\n\t\tthis.addGroup( group.start, group.count, group.materialIndex );\n\n\t}\n\n\treturn this;\n\n};\n\n\nexport { InstancedBufferGeometry };\n","import { _Math } from '../math/Math';\n\n/**\n * @author benaadams / https://twitter.com/ben_a_adams\n */\n\nfunction InterleavedBufferAttribute( interleavedBuffer, itemSize, offset, normalized ) {\n\n\tthis.uuid = _Math.generateUUID();\n\n\tthis.data = interleavedBuffer;\n\tthis.itemSize = itemSize;\n\tthis.offset = offset;\n\n\tthis.normalized = normalized === true;\n\n}\n\n\nInterleavedBufferAttribute.prototype = {\n\n\tconstructor: InterleavedBufferAttribute,\n\n\tisInterleavedBufferAttribute: true,\n\n\tget count() {\n\n\t\treturn this.data.count;\n\n\t},\n\n\tget array() {\n\n\t\treturn this.data.array;\n\n\t},\n\n\tsetX: function ( index, x ) {\n\n\t\tthis.data.array[ index * this.data.stride + this.offset ] = x;\n\n\t\treturn this;\n\n\t},\n\n\tsetY: function ( index, y ) {\n\n\t\tthis.data.array[ index * this.data.stride + this.offset + 1 ] = y;\n\n\t\treturn this;\n\n\t},\n\n\tsetZ: function ( index, z ) {\n\n\t\tthis.data.array[ index * this.data.stride + this.offset + 2 ] = z;\n\n\t\treturn this;\n\n\t},\n\n\tsetW: function ( index, w ) {\n\n\t\tthis.data.array[ index * this.data.stride + this.offset + 3 ] = w;\n\n\t\treturn this;\n\n\t},\n\n\tgetX: function ( index ) {\n\n\t\treturn this.data.array[ index * this.data.stride + this.offset ];\n\n\t},\n\n\tgetY: function ( index ) {\n\n\t\treturn this.data.array[ index * this.data.stride + this.offset + 1 ];\n\n\t},\n\n\tgetZ: function ( index ) {\n\n\t\treturn this.data.array[ index * this.data.stride + this.offset + 2 ];\n\n\t},\n\n\tgetW: function ( index ) {\n\n\t\treturn this.data.array[ index * this.data.stride + this.offset + 3 ];\n\n\t},\n\n\tsetXY: function ( index, x, y ) {\n\n\t\tindex = index * this.data.stride + this.offset;\n\n\t\tthis.data.array[ index + 0 ] = x;\n\t\tthis.data.array[ index + 1 ] = y;\n\n\t\treturn this;\n\n\t},\n\n\tsetXYZ: function ( index, x, y, z ) {\n\n\t\tindex = index * this.data.stride + this.offset;\n\n\t\tthis.data.array[ index + 0 ] = x;\n\t\tthis.data.array[ index + 1 ] = y;\n\t\tthis.data.array[ index + 2 ] = z;\n\n\t\treturn this;\n\n\t},\n\n\tsetXYZW: function ( index, x, y, z, w ) {\n\n\t\tindex = index * this.data.stride + this.offset;\n\n\t\tthis.data.array[ index + 0 ] = x;\n\t\tthis.data.array[ index + 1 ] = y;\n\t\tthis.data.array[ index + 2 ] = z;\n\t\tthis.data.array[ index + 3 ] = w;\n\n\t\treturn this;\n\n\t}\n\n};\n\n\nexport { InterleavedBufferAttribute };\n","import { _Math } from '../math/Math';\n\n/**\n * @author benaadams / https://twitter.com/ben_a_adams\n */\n\nfunction InterleavedBuffer( array, stride ) {\n\n\tthis.uuid = _Math.generateUUID();\n\n\tthis.array = array;\n\tthis.stride = stride;\n\tthis.count = array !== undefined ? array.length / stride : 0;\n\n\tthis.dynamic = false;\n\tthis.updateRange = { offset: 0, count: - 1 };\n\n\tthis.version = 0;\n\n}\n\nInterleavedBuffer.prototype = {\n\n\tconstructor: InterleavedBuffer,\n\n\tisInterleavedBuffer: true,\n\n\tset needsUpdate( value ) {\n\n\t\tif ( value === true ) this.version ++;\n\n\t},\n\n\tsetArray: function ( array ) {\n\n\t\tif ( Array.isArray( array ) ) {\n\n\t\t\tthrow new TypeError( 'THREE.BufferAttribute: array should be a Typed Array.' );\n\n\t\t}\n\n\t\tthis.count = array !== undefined ? array.length / this.stride : 0;\n\t\tthis.array = array;\n\n\t},\n\n\tsetDynamic: function ( value ) {\n\n\t\tthis.dynamic = value;\n\n\t\treturn this;\n\n\t},\n\n\tcopy: function ( source ) {\n\n\t\tthis.array = new source.array.constructor( source.array );\n\t\tthis.count = source.count;\n\t\tthis.stride = source.stride;\n\t\tthis.dynamic = source.dynamic;\n\n\t\treturn this;\n\n\t},\n\n\tcopyAt: function ( index1, attribute, index2 ) {\n\n\t\tindex1 *= this.stride;\n\t\tindex2 *= attribute.stride;\n\n\t\tfor ( var i = 0, l = this.stride; i < l; i ++ ) {\n\n\t\t\tthis.array[ index1 + i ] = attribute.array[ index2 + i ];\n\n\t\t}\n\n\t\treturn this;\n\n\t},\n\n\tset: function ( value, offset ) {\n\n\t\tif ( offset === undefined ) offset = 0;\n\n\t\tthis.array.set( value, offset );\n\n\t\treturn this;\n\n\t},\n\n\tclone: function () {\n\n\t\treturn new this.constructor().copy( this );\n\n\t}\n\n};\n\n\nexport { InterleavedBuffer };\n","import { InterleavedBuffer } from './InterleavedBuffer';\n\n/**\n * @author benaadams / https://twitter.com/ben_a_adams\n */\n\nfunction InstancedInterleavedBuffer( array, stride, meshPerAttribute ) {\n\n\tInterleavedBuffer.call( this, array, stride );\n\n\tthis.meshPerAttribute = meshPerAttribute || 1;\n\n}\n\nInstancedInterleavedBuffer.prototype = Object.create( InterleavedBuffer.prototype );\nInstancedInterleavedBuffer.prototype.constructor = InstancedInterleavedBuffer;\n\nInstancedInterleavedBuffer.prototype.isInstancedInterleavedBuffer = true;\n\nInstancedInterleavedBuffer.prototype.copy = function ( source ) {\n\n\tInterleavedBuffer.prototype.copy.call( this, source );\n\n\tthis.meshPerAttribute = source.meshPerAttribute;\n\n\treturn this;\n\n};\n\n\nexport { InstancedInterleavedBuffer };\n","import { BufferAttribute } from './BufferAttribute';\n\n/**\n * @author benaadams / https://twitter.com/ben_a_adams\n */\n\nfunction InstancedBufferAttribute( array, itemSize, meshPerAttribute ) {\n\n\tBufferAttribute.call( this, array, itemSize );\n\n\tthis.meshPerAttribute = meshPerAttribute || 1;\n\n}\n\nInstancedBufferAttribute.prototype = Object.create( BufferAttribute.prototype );\nInstancedBufferAttribute.prototype.constructor = InstancedBufferAttribute;\n\nInstancedBufferAttribute.prototype.isInstancedBufferAttribute = true;\n\nInstancedBufferAttribute.prototype.copy = function ( source ) {\n\n\tBufferAttribute.prototype.copy.call( this, source );\n\n\tthis.meshPerAttribute = source.meshPerAttribute;\n\n\treturn this;\n\n};\n\n\nexport { InstancedBufferAttribute };\n","import { Ray } from '../math/Ray';\n\n/**\n * @author mrdoob / http://mrdoob.com/\n * @author bhouston / http://clara.io/\n * @author stephomi / http://stephaneginier.com/\n */\n\nfunction Raycaster( origin, direction, near, far ) {\n\n\tthis.ray = new Ray( origin, direction );\n\t// direction is assumed to be normalized (for accurate distance calculations)\n\n\tthis.near = near || 0;\n\tthis.far = far || Infinity;\n\n\tthis.params = {\n\t\tMesh: {},\n\t\tLine: {},\n\t\tLOD: {},\n\t\tPoints: { threshold: 1 },\n\t\tSprite: {}\n\t};\n\n\tObject.defineProperties( this.params, {\n\t\tPointCloud: {\n\t\t\tget: function () {\n\t\t\t\tconsole.warn( 'THREE.Raycaster: params.PointCloud has been renamed to params.Points.' );\n\t\t\t\treturn this.Points;\n\t\t\t}\n\t\t}\n\t} );\n\n}\n\nfunction ascSort( a, b ) {\n\n\treturn a.distance - b.distance;\n\n}\n\nfunction intersectObject( object, raycaster, intersects, recursive ) {\n\n\tif ( object.visible === false ) return;\n\n\tobject.raycast( raycaster, intersects );\n\n\tif ( recursive === true ) {\n\n\t\tvar children = object.children;\n\n\t\tfor ( var i = 0, l = children.length; i < l; i ++ ) {\n\n\t\t\tintersectObject( children[ i ], raycaster, intersects, true );\n\n\t\t}\n\n\t}\n\n}\n\n//\n\nRaycaster.prototype = {\n\n\tconstructor: Raycaster,\n\n\tlinePrecision: 1,\n\n\tset: function ( origin, direction ) {\n\n\t\t// direction is assumed to be normalized (for accurate distance calculations)\n\n\t\tthis.ray.set( origin, direction );\n\n\t},\n\n\tsetFromCamera: function ( coords, camera ) {\n\n\t\tif ( (camera && camera.isPerspectiveCamera) ) {\n\n\t\t\tthis.ray.origin.setFromMatrixPosition( camera.matrixWorld );\n\t\t\tthis.ray.direction.set( coords.x, coords.y, 0.5 ).unproject( camera ).sub( this.ray.origin ).normalize();\n\n\t\t} else if ( (camera && camera.isOrthographicCamera) ) {\n\n\t\t\tthis.ray.origin.set( coords.x, coords.y, ( camera.near + camera.far ) / ( camera.near - camera.far ) ).unproject( camera ); // set origin in plane of camera\n\t\t\tthis.ray.direction.set( 0, 0, - 1 ).transformDirection( camera.matrixWorld );\n\n\t\t} else {\n\n\t\t\tconsole.error( 'THREE.Raycaster: Unsupported camera type.' );\n\n\t\t}\n\n\t},\n\n\tintersectObject: function ( object, recursive ) {\n\n\t\tvar intersects = [];\n\n\t\tintersectObject( object, this, intersects, recursive );\n\n\t\tintersects.sort( ascSort );\n\n\t\treturn intersects;\n\n\t},\n\n\tintersectObjects: function ( objects, recursive ) {\n\n\t\tvar intersects = [];\n\n\t\tif ( Array.isArray( objects ) === false ) {\n\n\t\t\tconsole.warn( 'THREE.Raycaster.intersectObjects: objects is not an Array.' );\n\t\t\treturn intersects;\n\n\t\t}\n\n\t\tfor ( var i = 0, l = objects.length; i < l; i ++ ) {\n\n\t\t\tintersectObject( objects[ i ], this, intersects, recursive );\n\n\t\t}\n\n\t\tintersects.sort( ascSort );\n\n\t\treturn intersects;\n\n\t}\n\n};\n\n\nexport { Raycaster };\n","/**\n * @author alteredq / http://alteredqualia.com/\n */\n\nfunction Clock( autoStart ) {\n\n\tthis.autoStart = ( autoStart !== undefined ) ? autoStart : true;\n\n\tthis.startTime = 0;\n\tthis.oldTime = 0;\n\tthis.elapsedTime = 0;\n\n\tthis.running = false;\n\n}\n\nClock.prototype = {\n\n\tconstructor: Clock,\n\n\tstart: function () {\n\n\t\tthis.startTime = ( performance || Date ).now();\n\n\t\tthis.oldTime = this.startTime;\n\t\tthis.elapsedTime = 0;\n\t\tthis.running = true;\n\n\t},\n\n\tstop: function () {\n\n\t\tthis.getElapsedTime();\n\t\tthis.running = false;\n\n\t},\n\n\tgetElapsedTime: function () {\n\n\t\tthis.getDelta();\n\t\treturn this.elapsedTime;\n\n\t},\n\n\tgetDelta: function () {\n\n\t\tvar diff = 0;\n\n\t\tif ( this.autoStart && ! this.running ) {\n\n\t\t\tthis.start();\n\n\t\t}\n\n\t\tif ( this.running ) {\n\n\t\t\tvar newTime = ( performance || Date ).now();\n\n\t\t\tdiff = ( newTime - this.oldTime ) / 1000;\n\t\t\tthis.oldTime = newTime;\n\n\t\t\tthis.elapsedTime += diff;\n\n\t\t}\n\n\t\treturn diff;\n\n\t}\n\n};\n\n\nexport { Clock };\n","import { Vector3 } from './Vector3';\n\n/**\n * Spline from Tween.js, slightly optimized (and trashed)\n * http://sole.github.com/tween.js/examples/05_spline.html\n *\n * @author mrdoob / http://mrdoob.com/\n * @author alteredq / http://alteredqualia.com/\n */\n\nfunction Spline( points ) {\n\n\tthis.points = points;\n\n\tvar c = [], v3 = { x: 0, y: 0, z: 0 },\n\tpoint, intPoint, weight, w2, w3,\n\tpa, pb, pc, pd;\n\n\tthis.initFromArray = function ( a ) {\n\n\t\tthis.points = [];\n\n\t\tfor ( var i = 0; i < a.length; i ++ ) {\n\n\t\t\tthis.points[ i ] = { x: a[ i ][ 0 ], y: a[ i ][ 1 ], z: a[ i ][ 2 ] };\n\n\t\t}\n\n\t};\n\n\tthis.getPoint = function ( k ) {\n\n\t\tpoint = ( this.points.length - 1 ) * k;\n\t\tintPoint = Math.floor( point );\n\t\tweight = point - intPoint;\n\n\t\tc[ 0 ] = intPoint === 0 ? intPoint : intPoint - 1;\n\t\tc[ 1 ] = intPoint;\n\t\tc[ 2 ] = intPoint > this.points.length - 2 ? this.points.length - 1 : intPoint + 1;\n\t\tc[ 3 ] = intPoint > this.points.length - 3 ? this.points.length - 1 : intPoint + 2;\n\n\t\tpa = this.points[ c[ 0 ] ];\n\t\tpb = this.points[ c[ 1 ] ];\n\t\tpc = this.points[ c[ 2 ] ];\n\t\tpd = this.points[ c[ 3 ] ];\n\n\t\tw2 = weight * weight;\n\t\tw3 = weight * w2;\n\n\t\tv3.x = interpolate( pa.x, pb.x, pc.x, pd.x, weight, w2, w3 );\n\t\tv3.y = interpolate( pa.y, pb.y, pc.y, pd.y, weight, w2, w3 );\n\t\tv3.z = interpolate( pa.z, pb.z, pc.z, pd.z, weight, w2, w3 );\n\n\t\treturn v3;\n\n\t};\n\n\tthis.getControlPointsArray = function () {\n\n\t\tvar i, p, l = this.points.length,\n\t\t\tcoords = [];\n\n\t\tfor ( i = 0; i < l; i ++ ) {\n\n\t\t\tp = this.points[ i ];\n\t\t\tcoords[ i ] = [ p.x, p.y, p.z ];\n\n\t\t}\n\n\t\treturn coords;\n\n\t};\n\n\t// approximate length by summing linear segments\n\n\tthis.getLength = function ( nSubDivisions ) {\n\n\t\tvar i, index, nSamples, position,\n\t\t\tpoint = 0, intPoint = 0, oldIntPoint = 0,\n\t\t\toldPosition = new Vector3(),\n\t\t\ttmpVec = new Vector3(),\n\t\t\tchunkLengths = [],\n\t\t\ttotalLength = 0;\n\n\t\t// first point has 0 length\n\n\t\tchunkLengths[ 0 ] = 0;\n\n\t\tif ( ! nSubDivisions ) nSubDivisions = 100;\n\n\t\tnSamples = this.points.length * nSubDivisions;\n\n\t\toldPosition.copy( this.points[ 0 ] );\n\n\t\tfor ( i = 1; i < nSamples; i ++ ) {\n\n\t\t\tindex = i / nSamples;\n\n\t\t\tposition = this.getPoint( index );\n\t\t\ttmpVec.copy( position );\n\n\t\t\ttotalLength += tmpVec.distanceTo( oldPosition );\n\n\t\t\toldPosition.copy( position );\n\n\t\t\tpoint = ( this.points.length - 1 ) * index;\n\t\t\tintPoint = Math.floor( point );\n\n\t\t\tif ( intPoint !== oldIntPoint ) {\n\n\t\t\t\tchunkLengths[ intPoint ] = totalLength;\n\t\t\t\toldIntPoint = intPoint;\n\n\t\t\t}\n\n\t\t}\n\n\t\t// last point ends with total length\n\n\t\tchunkLengths[ chunkLengths.length ] = totalLength;\n\n\t\treturn { chunks: chunkLengths, total: totalLength };\n\n\t};\n\n\tthis.reparametrizeByArcLength = function ( samplingCoef ) {\n\n\t\tvar i, j,\n\t\t\tindex, indexCurrent, indexNext,\n\t\t\trealDistance,\n\t\t\tsampling, position,\n\t\t\tnewpoints = [],\n\t\t\ttmpVec = new Vector3(),\n\t\t\tsl = this.getLength();\n\n\t\tnewpoints.push( tmpVec.copy( this.points[ 0 ] ).clone() );\n\n\t\tfor ( i = 1; i < this.points.length; i ++ ) {\n\n\t\t\t//tmpVec.copy( this.points[ i - 1 ] );\n\t\t\t//linearDistance = tmpVec.distanceTo( this.points[ i ] );\n\n\t\t\trealDistance = sl.chunks[ i ] - sl.chunks[ i - 1 ];\n\n\t\t\tsampling = Math.ceil( samplingCoef * realDistance / sl.total );\n\n\t\t\tindexCurrent = ( i - 1 ) / ( this.points.length - 1 );\n\t\t\tindexNext = i / ( this.points.length - 1 );\n\n\t\t\tfor ( j = 1; j < sampling - 1; j ++ ) {\n\n\t\t\t\tindex = indexCurrent + j * ( 1 / sampling ) * ( indexNext - indexCurrent );\n\n\t\t\t\tposition = this.getPoint( index );\n\t\t\t\tnewpoints.push( tmpVec.copy( position ).clone() );\n\n\t\t\t}\n\n\t\t\tnewpoints.push( tmpVec.copy( this.points[ i ] ).clone() );\n\n\t\t}\n\n\t\tthis.points = newpoints;\n\n\t};\n\n\t// Catmull-Rom\n\n\tfunction interpolate( p0, p1, p2, p3, t, t2, t3 ) {\n\n\t\tvar v0 = ( p2 - p0 ) * 0.5,\n\t\t\tv1 = ( p3 - p1 ) * 0.5;\n\n\t\treturn ( 2 * ( p1 - p2 ) + v0 + v1 ) * t3 + ( - 3 * ( p1 - p2 ) - 2 * v0 - v1 ) * t2 + v0 * t + p1;\n\n\t}\n\n}\n\n\nexport { Spline };\n","import { _Math } from './Math';\n\n/**\n * @author bhouston / http://clara.io\n * @author WestLangley / http://github.com/WestLangley\n *\n * Ref: https://en.wikipedia.org/wiki/Spherical_coordinate_system\n *\n * The poles (phi) are at the positive and negative y axis.\n * The equator starts at positive z.\n */\n\nfunction Spherical( radius, phi, theta ) {\n\n\tthis.radius = ( radius !== undefined ) ? radius : 1.0;\n\tthis.phi = ( phi !== undefined ) ? phi : 0; // up / down towards top and bottom pole\n\tthis.theta = ( theta !== undefined ) ? theta : 0; // around the equator of the sphere\n\n\treturn this;\n\n}\n\nSpherical.prototype = {\n\n\tconstructor: Spherical,\n\n\tset: function ( radius, phi, theta ) {\n\n\t\tthis.radius = radius;\n\t\tthis.phi = phi;\n\t\tthis.theta = theta;\n\n\t\treturn this;\n\n\t},\n\n\tclone: function () {\n\n\t\treturn new this.constructor().copy( this );\n\n\t},\n\n\tcopy: function ( other ) {\n\n\t\tthis.radius = other.radius;\n\t\tthis.phi = other.phi;\n\t\tthis.theta = other.theta;\n\n\t\treturn this;\n\n\t},\n\n\t// restrict phi to be betwee EPS and PI-EPS\n\tmakeSafe: function() {\n\n\t\tvar EPS = 0.000001;\n\t\tthis.phi = Math.max( EPS, Math.min( Math.PI - EPS, this.phi ) );\n\n\t\treturn this;\n\n\t},\n\n\tsetFromVector3: function( vec3 ) {\n\n\t\tthis.radius = vec3.length();\n\n\t\tif ( this.radius === 0 ) {\n\n\t\t\tthis.theta = 0;\n\t\t\tthis.phi = 0;\n\n\t\t} else {\n\n\t\t\tthis.theta = Math.atan2( vec3.x, vec3.z ); // equator angle around y-up axis\n\t\t\tthis.phi = Math.acos( _Math.clamp( vec3.y / this.radius, - 1, 1 ) ); // polar angle\n\n\t\t}\n\n\t\treturn this;\n\n\t},\n\n};\n\n\nexport { Spherical };\n","import { Mesh } from '../../objects/Mesh';\nimport { _Math } from '../../math/Math';\n\n/**\r\n * @author alteredq / http://alteredqualia.com/\r\n */\r\n\r\nfunction MorphBlendMesh( geometry, material ) {\n\r\n\tMesh.call( this, geometry, material );\r\n\r\n\tthis.animationsMap = {};\r\n\tthis.animationsList = [];\r\n\r\n\t// prepare default animation\r\n\t// (all frames played together in 1 second)\r\n\r\n\tvar numFrames = this.geometry.morphTargets.length;\r\n\r\n\tvar name = \"__default\";\r\n\r\n\tvar startFrame = 0;\r\n\tvar endFrame = numFrames - 1;\r\n\r\n\tvar fps = numFrames / 1;\r\n\r\n\tthis.createAnimation( name, startFrame, endFrame, fps );\r\n\tthis.setAnimationWeight( name, 1 );\r\n\r\n}\r\n\r\nMorphBlendMesh.prototype = Object.create( Mesh.prototype );\r\nMorphBlendMesh.prototype.constructor = MorphBlendMesh;\r\n\r\nMorphBlendMesh.prototype.createAnimation = function ( name, start, end, fps ) {\r\n\r\n\tvar animation = {\r\n\r\n\t\tstart: start,\r\n\t\tend: end,\r\n\r\n\t\tlength: end - start + 1,\r\n\r\n\t\tfps: fps,\r\n\t\tduration: ( end - start ) / fps,\r\n\r\n\t\tlastFrame: 0,\r\n\t\tcurrentFrame: 0,\r\n\r\n\t\tactive: false,\r\n\r\n\t\ttime: 0,\r\n\t\tdirection: 1,\r\n\t\tweight: 1,\r\n\r\n\t\tdirectionBackwards: false,\r\n\t\tmirroredLoop: false\r\n\r\n\t};\r\n\r\n\tthis.animationsMap[ name ] = animation;\r\n\tthis.animationsList.push( animation );\r\n\r\n};\r\n\r\nMorphBlendMesh.prototype.autoCreateAnimations = function ( fps ) {\r\n\r\n\tvar pattern = /([a-z]+)_?(\\d+)/i;\r\n\r\n\tvar firstAnimation, frameRanges = {};\r\n\r\n\tvar geometry = this.geometry;\r\n\r\n\tfor ( var i = 0, il = geometry.morphTargets.length; i < il; i ++ ) {\r\n\r\n\t\tvar morph = geometry.morphTargets[ i ];\r\n\t\tvar chunks = morph.name.match( pattern );\r\n\r\n\t\tif ( chunks && chunks.length > 1 ) {\r\n\r\n\t\t\tvar name = chunks[ 1 ];\r\n\r\n\t\t\tif ( ! frameRanges[ name ] ) frameRanges[ name ] = { start: Infinity, end: - Infinity };\r\n\r\n\t\t\tvar range = frameRanges[ name ];\r\n\r\n\t\t\tif ( i < range.start ) range.start = i;\r\n\t\t\tif ( i > range.end ) range.end = i;\r\n\r\n\t\t\tif ( ! firstAnimation ) firstAnimation = name;\r\n\r\n\t\t}\r\n\r\n\t}\r\n\r\n\tfor ( var name in frameRanges ) {\r\n\r\n\t\tvar range = frameRanges[ name ];\r\n\t\tthis.createAnimation( name, range.start, range.end, fps );\r\n\r\n\t}\r\n\r\n\tthis.firstAnimation = firstAnimation;\r\n\r\n};\r\n\r\nMorphBlendMesh.prototype.setAnimationDirectionForward = function ( name ) {\r\n\r\n\tvar animation = this.animationsMap[ name ];\r\n\r\n\tif ( animation ) {\r\n\r\n\t\tanimation.direction = 1;\r\n\t\tanimation.directionBackwards = false;\r\n\r\n\t}\r\n\r\n};\r\n\r\nMorphBlendMesh.prototype.setAnimationDirectionBackward = function ( name ) {\r\n\r\n\tvar animation = this.animationsMap[ name ];\r\n\r\n\tif ( animation ) {\r\n\r\n\t\tanimation.direction = - 1;\r\n\t\tanimation.directionBackwards = true;\r\n\r\n\t}\r\n\r\n};\r\n\r\nMorphBlendMesh.prototype.setAnimationFPS = function ( name, fps ) {\r\n\r\n\tvar animation = this.animationsMap[ name ];\r\n\r\n\tif ( animation ) {\r\n\r\n\t\tanimation.fps = fps;\r\n\t\tanimation.duration = ( animation.end - animation.start ) / animation.fps;\r\n\r\n\t}\r\n\r\n};\r\n\r\nMorphBlendMesh.prototype.setAnimationDuration = function ( name, duration ) {\r\n\r\n\tvar animation = this.animationsMap[ name ];\r\n\r\n\tif ( animation ) {\r\n\r\n\t\tanimation.duration = duration;\r\n\t\tanimation.fps = ( animation.end - animation.start ) / animation.duration;\r\n\r\n\t}\r\n\r\n};\r\n\r\nMorphBlendMesh.prototype.setAnimationWeight = function ( name, weight ) {\r\n\r\n\tvar animation = this.animationsMap[ name ];\r\n\r\n\tif ( animation ) {\r\n\r\n\t\tanimation.weight = weight;\r\n\r\n\t}\r\n\r\n};\r\n\r\nMorphBlendMesh.prototype.setAnimationTime = function ( name, time ) {\r\n\r\n\tvar animation = this.animationsMap[ name ];\r\n\r\n\tif ( animation ) {\r\n\r\n\t\tanimation.time = time;\r\n\r\n\t}\r\n\r\n};\r\n\r\nMorphBlendMesh.prototype.getAnimationTime = function ( name ) {\r\n\r\n\tvar time = 0;\r\n\r\n\tvar animation = this.animationsMap[ name ];\r\n\r\n\tif ( animation ) {\r\n\r\n\t\ttime = animation.time;\r\n\r\n\t}\r\n\r\n\treturn time;\r\n\r\n};\r\n\r\nMorphBlendMesh.prototype.getAnimationDuration = function ( name ) {\r\n\r\n\tvar duration = - 1;\r\n\r\n\tvar animation = this.animationsMap[ name ];\r\n\r\n\tif ( animation ) {\r\n\r\n\t\tduration = animation.duration;\r\n\r\n\t}\r\n\r\n\treturn duration;\r\n\r\n};\r\n\r\nMorphBlendMesh.prototype.playAnimation = function ( name ) {\r\n\r\n\tvar animation = this.animationsMap[ name ];\r\n\r\n\tif ( animation ) {\r\n\r\n\t\tanimation.time = 0;\r\n\t\tanimation.active = true;\r\n\r\n\t} else {\r\n\r\n\t\tconsole.warn( \"THREE.MorphBlendMesh: animation[\" + name + \"] undefined in .playAnimation()\" );\r\n\r\n\t}\r\n\r\n};\r\n\r\nMorphBlendMesh.prototype.stopAnimation = function ( name ) {\r\n\r\n\tvar animation = this.animationsMap[ name ];\r\n\r\n\tif ( animation ) {\r\n\r\n\t\tanimation.active = false;\r\n\r\n\t}\r\n\r\n};\r\n\r\nMorphBlendMesh.prototype.update = function ( delta ) {\r\n\r\n\tfor ( var i = 0, il = this.animationsList.length; i < il; i ++ ) {\r\n\r\n\t\tvar animation = this.animationsList[ i ];\r\n\r\n\t\tif ( ! animation.active ) continue;\r\n\r\n\t\tvar frameTime = animation.duration / animation.length;\r\n\r\n\t\tanimation.time += animation.direction * delta;\r\n\r\n\t\tif ( animation.mirroredLoop ) {\r\n\r\n\t\t\tif ( animation.time > animation.duration || animation.time < 0 ) {\r\n\r\n\t\t\t\tanimation.direction *= - 1;\r\n\r\n\t\t\t\tif ( animation.time > animation.duration ) {\r\n\r\n\t\t\t\t\tanimation.time = animation.duration;\r\n\t\t\t\t\tanimation.directionBackwards = true;\r\n\r\n\t\t\t\t}\r\n\r\n\t\t\t\tif ( animation.time < 0 ) {\r\n\r\n\t\t\t\t\tanimation.time = 0;\r\n\t\t\t\t\tanimation.directionBackwards = false;\r\n\r\n\t\t\t\t}\r\n\r\n\t\t\t}\r\n\r\n\t\t} else {\r\n\r\n\t\t\tanimation.time = animation.time % animation.duration;\r\n\r\n\t\t\tif ( animation.time < 0 ) animation.time += animation.duration;\r\n\r\n\t\t}\r\n\r\n\t\tvar keyframe = animation.start + _Math.clamp( Math.floor( animation.time / frameTime ), 0, animation.length - 1 );\r\n\t\tvar weight = animation.weight;\r\n\r\n\t\tif ( keyframe !== animation.currentFrame ) {\r\n\r\n\t\t\tthis.morphTargetInfluences[ animation.lastFrame ] = 0;\r\n\t\t\tthis.morphTargetInfluences[ animation.currentFrame ] = 1 * weight;\r\n\r\n\t\t\tthis.morphTargetInfluences[ keyframe ] = 0;\r\n\r\n\t\t\tanimation.lastFrame = animation.currentFrame;\r\n\t\t\tanimation.currentFrame = keyframe;\r\n\r\n\t\t}\r\n\r\n\t\tvar mix = ( animation.time % frameTime ) / frameTime;\r\n\r\n\t\tif ( animation.directionBackwards ) mix = 1 - mix;\r\n\r\n\t\tif ( animation.currentFrame !== animation.lastFrame ) {\r\n\r\n\t\t\tthis.morphTargetInfluences[ animation.currentFrame ] = mix * weight;\r\n\t\t\tthis.morphTargetInfluences[ animation.lastFrame ] = ( 1 - mix ) * weight;\r\n\r\n\t\t} else {\r\n\r\n\t\t\tthis.morphTargetInfluences[ animation.currentFrame ] = weight;\r\n\r\n\t\t}\r\n\r\n\t}\r\n\r\n};\r\n\n\nexport { MorphBlendMesh };\n","import { Object3D } from '../../core/Object3D';\n\n/**\n * @author alteredq / http://alteredqualia.com/\n */\n\nfunction ImmediateRenderObject( material ) {\n\n\tObject3D.call( this );\n\n\tthis.material = material;\n\tthis.render = function ( renderCallback ) {};\n\n}\n\nImmediateRenderObject.prototype = Object.create( Object3D.prototype );\nImmediateRenderObject.prototype.constructor = ImmediateRenderObject;\n\nImmediateRenderObject.prototype.isImmediateRenderObject = true;\n\n\nexport { ImmediateRenderObject };\n","import { Matrix3 } from '../../math/Matrix3';\nimport { Vector3 } from '../../math/Vector3';\nimport { LineSegments } from '../../objects/LineSegments';\nimport { LineBasicMaterial } from '../../materials/LineBasicMaterial';\nimport { Float32Attribute } from '../../core/BufferAttribute';\nimport { BufferGeometry } from '../../core/BufferGeometry';\n\n/**\n * @author mrdoob / http://mrdoob.com/\n * @author WestLangley / http://github.com/WestLangley\n*/\n\nfunction VertexNormalsHelper( object, size, hex, linewidth ) {\n\n\tthis.object = object;\n\n\tthis.size = ( size !== undefined ) ? size : 1;\n\n\tvar color = ( hex !== undefined ) ? hex : 0xff0000;\n\n\tvar width = ( linewidth !== undefined ) ? linewidth : 1;\n\n\t//\n\n\tvar nNormals = 0;\n\n\tvar objGeometry = this.object.geometry;\n\n\tif ( (objGeometry && objGeometry.isGeometry) ) {\n\n\t\tnNormals = objGeometry.faces.length * 3;\n\n\t} else if ( (objGeometry && objGeometry.isBufferGeometry) ) {\n\n\t\tnNormals = objGeometry.attributes.normal.count;\n\n\t}\n\n\t//\n\n\tvar geometry = new BufferGeometry();\n\n\tvar positions = new Float32Attribute( nNormals * 2 * 3, 3 );\n\n\tgeometry.addAttribute( 'position', positions );\n\n\tLineSegments.call( this, geometry, new LineBasicMaterial( { color: color, linewidth: width } ) );\n\n\t//\n\n\tthis.matrixAutoUpdate = false;\n\n\tthis.update();\n\n}\n\nVertexNormalsHelper.prototype = Object.create( LineSegments.prototype );\nVertexNormalsHelper.prototype.constructor = VertexNormalsHelper;\n\nVertexNormalsHelper.prototype.update = ( function () {\n\n\tvar v1 = new Vector3();\n\tvar v2 = new Vector3();\n\tvar normalMatrix = new Matrix3();\n\n\treturn function update() {\n\n\t\tvar keys = [ 'a', 'b', 'c' ];\n\n\t\tthis.object.updateMatrixWorld( true );\n\n\t\tnormalMatrix.getNormalMatrix( this.object.matrixWorld );\n\n\t\tvar matrixWorld = this.object.matrixWorld;\n\n\t\tvar position = this.geometry.attributes.position;\n\n\t\t//\n\n\t\tvar objGeometry = this.object.geometry;\n\n\t\tif ( (objGeometry && objGeometry.isGeometry) ) {\n\n\t\t\tvar vertices = objGeometry.vertices;\n\n\t\t\tvar faces = objGeometry.faces;\n\n\t\t\tvar idx = 0;\n\n\t\t\tfor ( var i = 0, l = faces.length; i < l; i ++ ) {\n\n\t\t\t\tvar face = faces[ i ];\n\n\t\t\t\tfor ( var j = 0, jl = face.vertexNormals.length; j < jl; j ++ ) {\n\n\t\t\t\t\tvar vertex = vertices[ face[ keys[ j ] ] ];\n\n\t\t\t\t\tvar normal = face.vertexNormals[ j ];\n\n\t\t\t\t\tv1.copy( vertex ).applyMatrix4( matrixWorld );\n\n\t\t\t\t\tv2.copy( normal ).applyMatrix3( normalMatrix ).normalize().multiplyScalar( this.size ).add( v1 );\n\n\t\t\t\t\tposition.setXYZ( idx, v1.x, v1.y, v1.z );\n\n\t\t\t\t\tidx = idx + 1;\n\n\t\t\t\t\tposition.setXYZ( idx, v2.x, v2.y, v2.z );\n\n\t\t\t\t\tidx = idx + 1;\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t} else if ( (objGeometry && objGeometry.isBufferGeometry) ) {\n\n\t\t\tvar objPos = objGeometry.attributes.position;\n\n\t\t\tvar objNorm = objGeometry.attributes.normal;\n\n\t\t\tvar idx = 0;\n\n\t\t\t// for simplicity, ignore index and drawcalls, and render every normal\n\n\t\t\tfor ( var j = 0, jl = objPos.count; j < jl; j ++ ) {\n\n\t\t\t\tv1.set( objPos.getX( j ), objPos.getY( j ), objPos.getZ( j ) ).applyMatrix4( matrixWorld );\n\n\t\t\t\tv2.set( objNorm.getX( j ), objNorm.getY( j ), objNorm.getZ( j ) );\n\n\t\t\t\tv2.applyMatrix3( normalMatrix ).normalize().multiplyScalar( this.size ).add( v1 );\n\n\t\t\t\tposition.setXYZ( idx, v1.x, v1.y, v1.z );\n\n\t\t\t\tidx = idx + 1;\n\n\t\t\t\tposition.setXYZ( idx, v2.x, v2.y, v2.z );\n\n\t\t\t\tidx = idx + 1;\n\n\t\t\t}\n\n\t\t}\n\n\t\tposition.needsUpdate = true;\n\n\t\treturn this;\n\n\t};\n\n}() );\n\n\nexport { VertexNormalsHelper };\n","import { Vector3 } from '../../math/Vector3';\nimport { Object3D } from '../../core/Object3D';\nimport { LineSegments } from '../../objects/LineSegments';\nimport { LineBasicMaterial } from '../../materials/LineBasicMaterial';\nimport { Float32Attribute } from '../../core/BufferAttribute';\nimport { BufferGeometry } from '../../core/BufferGeometry';\n\n/**\n * @author alteredq / http://alteredqualia.com/\n * @author mrdoob / http://mrdoob.com/\n * @author WestLangley / http://github.com/WestLangley\n*/\n\nfunction SpotLightHelper( light ) {\n\n\tObject3D.call( this );\n\n\tthis.light = light;\n\tthis.light.updateMatrixWorld();\n\n\tthis.matrix = light.matrixWorld;\n\tthis.matrixAutoUpdate = false;\n\n\tvar geometry = new BufferGeometry();\n\n\tvar positions = [\n\t\t0, 0, 0, 0, 0, 1,\n\t\t0, 0, 0, 1, 0, 1,\n\t\t0, 0, 0, - 1, 0, 1,\n\t\t0, 0, 0, 0, 1, 1,\n\t\t0, 0, 0, 0, - 1, 1\n\t];\n\n\tfor ( var i = 0, j = 1, l = 32; i < l; i ++, j ++ ) {\n\n\t\tvar p1 = ( i / l ) * Math.PI * 2;\n\t\tvar p2 = ( j / l ) * Math.PI * 2;\n\n\t\tpositions.push(\n\t\t\tMath.cos( p1 ), Math.sin( p1 ), 1,\n\t\t\tMath.cos( p2 ), Math.sin( p2 ), 1\n\t\t);\n\n\t}\n\n\tgeometry.addAttribute( 'position', new Float32Attribute( positions, 3 ) );\n\n\tvar material = new LineBasicMaterial( { fog: false } );\n\n\tthis.cone = new LineSegments( geometry, material );\n\tthis.add( this.cone );\n\n\tthis.update();\n\n}\n\nSpotLightHelper.prototype = Object.create( Object3D.prototype );\nSpotLightHelper.prototype.constructor = SpotLightHelper;\n\nSpotLightHelper.prototype.dispose = function () {\n\n\tthis.cone.geometry.dispose();\n\tthis.cone.material.dispose();\n\n};\n\nSpotLightHelper.prototype.update = function () {\n\n\tvar vector = new Vector3();\n\tvar vector2 = new Vector3();\n\n\treturn function update() {\n\n\t\tvar coneLength = this.light.distance ? this.light.distance : 1000;\n\t\tvar coneWidth = coneLength * Math.tan( this.light.angle );\n\n\t\tthis.cone.scale.set( coneWidth, coneWidth, coneLength );\n\n\t\tvector.setFromMatrixPosition( this.light.matrixWorld );\n\t\tvector2.setFromMatrixPosition( this.light.target.matrixWorld );\n\n\t\tthis.cone.lookAt( vector2.sub( vector ) );\n\n\t\tthis.cone.material.color.copy( this.light.color ).multiplyScalar( this.light.intensity );\n\n\t};\n\n}();\n\n\nexport { SpotLightHelper };\n","import { LineSegments } from '../../objects/LineSegments';\nimport { Matrix4 } from '../../math/Matrix4';\nimport { VertexColors } from '../../constants';\nimport { LineBasicMaterial } from '../../materials/LineBasicMaterial';\nimport { Color } from '../../math/Color';\nimport { Vector3 } from '../../math/Vector3';\nimport { Geometry } from '../../core/Geometry';\n\n/**\n * @author Sean Griffin / http://twitter.com/sgrif\n * @author Michael Guerrero / http://realitymeltdown.com\n * @author mrdoob / http://mrdoob.com/\n * @author ikerr / http://verold.com\n */\n\nfunction SkeletonHelper( object ) {\n\n\tthis.bones = this.getBoneList( object );\n\n\tvar geometry = new Geometry();\n\n\tfor ( var i = 0; i < this.bones.length; i ++ ) {\n\n\t\tvar bone = this.bones[ i ];\n\n\t\tif ( (bone.parent && bone.parent.isBone) ) {\n\n\t\t\tgeometry.vertices.push( new Vector3() );\n\t\t\tgeometry.vertices.push( new Vector3() );\n\t\t\tgeometry.colors.push( new Color( 0, 0, 1 ) );\n\t\t\tgeometry.colors.push( new Color( 0, 1, 0 ) );\n\n\t\t}\n\n\t}\n\n\tgeometry.dynamic = true;\n\n\tvar material = new LineBasicMaterial( { vertexColors: VertexColors, depthTest: false, depthWrite: false, transparent: true } );\n\n\tLineSegments.call( this, geometry, material );\n\n\tthis.root = object;\n\n\tthis.matrix = object.matrixWorld;\n\tthis.matrixAutoUpdate = false;\n\n\tthis.update();\n\n}\n\n\nSkeletonHelper.prototype = Object.create( LineSegments.prototype );\nSkeletonHelper.prototype.constructor = SkeletonHelper;\n\nSkeletonHelper.prototype.getBoneList = function( object ) {\n\n\tvar boneList = [];\n\n\tif ( (object && object.isBone) ) {\n\n\t\tboneList.push( object );\n\n\t}\n\n\tfor ( var i = 0; i < object.children.length; i ++ ) {\n\n\t\tboneList.push.apply( boneList, this.getBoneList( object.children[ i ] ) );\n\n\t}\n\n\treturn boneList;\n\n};\n\nSkeletonHelper.prototype.update = function () {\n\n\tvar geometry = this.geometry;\n\n\tvar matrixWorldInv = new Matrix4().getInverse( this.root.matrixWorld );\n\n\tvar boneMatrix = new Matrix4();\n\n\tvar j = 0;\n\n\tfor ( var i = 0; i < this.bones.length; i ++ ) {\n\n\t\tvar bone = this.bones[ i ];\n\n\t\tif ( (bone.parent && bone.parent.isBone) ) {\n\n\t\t\tboneMatrix.multiplyMatrices( matrixWorldInv, bone.matrixWorld );\n\t\t\tgeometry.vertices[ j ].setFromMatrixPosition( boneMatrix );\n\n\t\t\tboneMatrix.multiplyMatrices( matrixWorldInv, bone.parent.matrixWorld );\n\t\t\tgeometry.vertices[ j + 1 ].setFromMatrixPosition( boneMatrix );\n\n\t\t\tj += 2;\n\n\t\t}\n\n\t}\n\n\tgeometry.verticesNeedUpdate = true;\n\n\tgeometry.computeBoundingSphere();\n\n};\n\n\nexport { SkeletonHelper };\n","import { Mesh } from '../../objects/Mesh';\nimport { MeshBasicMaterial } from '../../materials/MeshBasicMaterial';\nimport { SphereBufferGeometry } from '../../geometries/SphereBufferGeometry';\n\n/**\n * @author alteredq / http://alteredqualia.com/\n * @author mrdoob / http://mrdoob.com/\n */\n\nfunction PointLightHelper( light, sphereSize ) {\n\n\tthis.light = light;\n\tthis.light.updateMatrixWorld();\n\n\tvar geometry = new SphereBufferGeometry( sphereSize, 4, 2 );\n\tvar material = new MeshBasicMaterial( { wireframe: true, fog: false } );\n\tmaterial.color.copy( this.light.color ).multiplyScalar( this.light.intensity );\n\n\tMesh.call( this, geometry, material );\n\n\tthis.matrix = this.light.matrixWorld;\n\tthis.matrixAutoUpdate = false;\n\n\t/*\n\tvar distanceGeometry = new THREE.IcosahedronGeometry( 1, 2 );\n\tvar distanceMaterial = new THREE.MeshBasicMaterial( { color: hexColor, fog: false, wireframe: true, opacity: 0.1, transparent: true } );\n\n\tthis.lightSphere = new THREE.Mesh( bulbGeometry, bulbMaterial );\n\tthis.lightDistance = new THREE.Mesh( distanceGeometry, distanceMaterial );\n\n\tvar d = light.distance;\n\n\tif ( d === 0.0 ) {\n\n\t\tthis.lightDistance.visible = false;\n\n\t} else {\n\n\t\tthis.lightDistance.scale.set( d, d, d );\n\n\t}\n\n\tthis.add( this.lightDistance );\n\t*/\n\n}\n\nPointLightHelper.prototype = Object.create( Mesh.prototype );\nPointLightHelper.prototype.constructor = PointLightHelper;\n\nPointLightHelper.prototype.dispose = function () {\n\n\tthis.geometry.dispose();\n\tthis.material.dispose();\n\n};\n\nPointLightHelper.prototype.update = function () {\n\n\tthis.material.color.copy( this.light.color ).multiplyScalar( this.light.intensity );\n\n\t/*\n\tvar d = this.light.distance;\n\n\tif ( d === 0.0 ) {\n\n\t\tthis.lightDistance.visible = false;\n\n\t} else {\n\n\t\tthis.lightDistance.visible = true;\n\t\tthis.lightDistance.scale.set( d, d, d );\n\n\t}\n\t*/\n\n};\n\n\nexport { PointLightHelper };\n","import { Vector3 } from '../../math/Vector3';\nimport { Object3D } from '../../core/Object3D';\nimport { Mesh } from '../../objects/Mesh';\nimport { FaceColors } from '../../constants';\nimport { MeshBasicMaterial } from '../../materials/MeshBasicMaterial';\nimport { SphereGeometry } from '../../geometries/SphereGeometry';\nimport { Color } from '../../math/Color';\n\n/**\n * @author alteredq / http://alteredqualia.com/\n * @author mrdoob / http://mrdoob.com/\n */\n\nfunction HemisphereLightHelper( light, sphereSize ) {\n\n\tObject3D.call( this );\n\n\tthis.light = light;\n\tthis.light.updateMatrixWorld();\n\n\tthis.matrix = light.matrixWorld;\n\tthis.matrixAutoUpdate = false;\n\n\tthis.colors = [ new Color(), new Color() ];\n\n\tvar geometry = new SphereGeometry( sphereSize, 4, 2 );\n\tgeometry.rotateX( - Math.PI / 2 );\n\n\tfor ( var i = 0, il = 8; i < il; i ++ ) {\n\n\t\tgeometry.faces[ i ].color = this.colors[ i < 4 ? 0 : 1 ];\n\n\t}\n\n\tvar material = new MeshBasicMaterial( { vertexColors: FaceColors, wireframe: true } );\n\n\tthis.lightSphere = new Mesh( geometry, material );\n\tthis.add( this.lightSphere );\n\n\tthis.update();\n\n}\n\nHemisphereLightHelper.prototype = Object.create( Object3D.prototype );\nHemisphereLightHelper.prototype.constructor = HemisphereLightHelper;\n\nHemisphereLightHelper.prototype.dispose = function () {\n\n\tthis.lightSphere.geometry.dispose();\n\tthis.lightSphere.material.dispose();\n\n};\n\nHemisphereLightHelper.prototype.update = function () {\n\n\tvar vector = new Vector3();\n\n\treturn function update() {\n\n\t\tthis.colors[ 0 ].copy( this.light.color ).multiplyScalar( this.light.intensity );\n\t\tthis.colors[ 1 ].copy( this.light.groundColor ).multiplyScalar( this.light.intensity );\n\n\t\tthis.lightSphere.lookAt( vector.setFromMatrixPosition( this.light.matrixWorld ).negate() );\n\t\tthis.lightSphere.geometry.colorsNeedUpdate = true;\n\n\t};\n\n}();\n\n\nexport { HemisphereLightHelper };\n","import { LineSegments } from '../../objects/LineSegments';\nimport { VertexColors } from '../../constants';\nimport { LineBasicMaterial } from '../../materials/LineBasicMaterial';\nimport { Float32Attribute } from '../../core/BufferAttribute';\nimport { BufferGeometry } from '../../core/BufferGeometry';\nimport { Color } from '../../math/Color';\n\n/**\n * @author mrdoob / http://mrdoob.com/\n */\n\nfunction GridHelper( size, divisions, color1, color2 ) {\n\n\tdivisions = divisions || 1;\n\tcolor1 = new Color( color1 !== undefined ? color1 : 0x444444 );\n\tcolor2 = new Color( color2 !== undefined ? color2 : 0x888888 );\n\n\tvar center = divisions / 2;\n\tvar step = ( size * 2 ) / divisions;\n\tvar vertices = [], colors = [];\n\n\tfor ( var i = 0, j = 0, k = - size; i <= divisions; i ++, k += step ) {\n\n\t\tvertices.push( - size, 0, k, size, 0, k );\n\t\tvertices.push( k, 0, - size, k, 0, size );\n\n\t\tvar color = i === center ? color1 : color2;\n\n\t\tcolor.toArray( colors, j ); j += 3;\n\t\tcolor.toArray( colors, j ); j += 3;\n\t\tcolor.toArray( colors, j ); j += 3;\n\t\tcolor.toArray( colors, j ); j += 3;\n\n\t}\n\n\tvar geometry = new BufferGeometry();\n\tgeometry.addAttribute( 'position', new Float32Attribute( vertices, 3 ) );\n\tgeometry.addAttribute( 'color', new Float32Attribute( colors, 3 ) );\n\n\tvar material = new LineBasicMaterial( { vertexColors: VertexColors } );\n\n\tLineSegments.call( this, geometry, material );\n\n}\n\nGridHelper.prototype = Object.create( LineSegments.prototype );\nGridHelper.prototype.constructor = GridHelper;\n\nGridHelper.prototype.setColors = function () {\n\n\tconsole.error( 'THREE.GridHelper: setColors() has been deprecated, pass them in the constructor instead.' );\n\n};\n\n\nexport { GridHelper };\n","import { Matrix3 } from '../../math/Matrix3';\nimport { Vector3 } from '../../math/Vector3';\nimport { LineSegments } from '../../objects/LineSegments';\nimport { LineBasicMaterial } from '../../materials/LineBasicMaterial';\nimport { Float32Attribute } from '../../core/BufferAttribute';\nimport { BufferGeometry } from '../../core/BufferGeometry';\n\n/**\n * @author mrdoob / http://mrdoob.com/\n * @author WestLangley / http://github.com/WestLangley\n*/\n\nfunction FaceNormalsHelper( object, size, hex, linewidth ) {\n\n\t// FaceNormalsHelper only supports THREE.Geometry\n\n\tthis.object = object;\n\n\tthis.size = ( size !== undefined ) ? size : 1;\n\n\tvar color = ( hex !== undefined ) ? hex : 0xffff00;\n\n\tvar width = ( linewidth !== undefined ) ? linewidth : 1;\n\n\t//\n\n\tvar nNormals = 0;\n\n\tvar objGeometry = this.object.geometry;\n\n\tif ( (objGeometry && objGeometry.isGeometry) ) {\n\n\t\tnNormals = objGeometry.faces.length;\n\n\t} else {\n\n\t\tconsole.warn( 'THREE.FaceNormalsHelper: only THREE.Geometry is supported. Use THREE.VertexNormalsHelper, instead.' );\n\n\t}\n\n\t//\n\n\tvar geometry = new BufferGeometry();\n\n\tvar positions = new Float32Attribute( nNormals * 2 * 3, 3 );\n\n\tgeometry.addAttribute( 'position', positions );\n\n\tLineSegments.call( this, geometry, new LineBasicMaterial( { color: color, linewidth: width } ) );\n\n\t//\n\n\tthis.matrixAutoUpdate = false;\n\tthis.update();\n\n}\n\nFaceNormalsHelper.prototype = Object.create( LineSegments.prototype );\nFaceNormalsHelper.prototype.constructor = FaceNormalsHelper;\n\nFaceNormalsHelper.prototype.update = ( function () {\n\n\tvar v1 = new Vector3();\n\tvar v2 = new Vector3();\n\tvar normalMatrix = new Matrix3();\n\n\treturn function update() {\n\n\t\tthis.object.updateMatrixWorld( true );\n\n\t\tnormalMatrix.getNormalMatrix( this.object.matrixWorld );\n\n\t\tvar matrixWorld = this.object.matrixWorld;\n\n\t\tvar position = this.geometry.attributes.position;\n\n\t\t//\n\n\t\tvar objGeometry = this.object.geometry;\n\n\t\tvar vertices = objGeometry.vertices;\n\n\t\tvar faces = objGeometry.faces;\n\n\t\tvar idx = 0;\n\n\t\tfor ( var i = 0, l = faces.length; i < l; i ++ ) {\n\n\t\t\tvar face = faces[ i ];\n\n\t\t\tvar normal = face.normal;\n\n\t\t\tv1.copy( vertices[ face.a ] )\n\t\t\t\t.add( vertices[ face.b ] )\n\t\t\t\t.add( vertices[ face.c ] )\n\t\t\t\t.divideScalar( 3 )\n\t\t\t\t.applyMatrix4( matrixWorld );\n\n\t\t\tv2.copy( normal ).applyMatrix3( normalMatrix ).normalize().multiplyScalar( this.size ).add( v1 );\n\n\t\t\tposition.setXYZ( idx, v1.x, v1.y, v1.z );\n\n\t\t\tidx = idx + 1;\n\n\t\t\tposition.setXYZ( idx, v2.x, v2.y, v2.z );\n\n\t\t\tidx = idx + 1;\n\n\t\t}\n\n\t\tposition.needsUpdate = true;\n\n\t\treturn this;\n\n\t};\n\n}() );\n\n\nexport { FaceNormalsHelper };\n","import { Vector3 } from '../../math/Vector3';\nimport { Object3D } from '../../core/Object3D';\nimport { Line } from '../../objects/Line';\nimport { Float32Attribute } from '../../core/BufferAttribute';\nimport { BufferGeometry } from '../../core/BufferGeometry';\nimport { LineBasicMaterial } from '../../materials/LineBasicMaterial';\n\n/**\n * @author alteredq / http://alteredqualia.com/\n * @author mrdoob / http://mrdoob.com/\n * @author WestLangley / http://github.com/WestLangley\n */\n\nfunction DirectionalLightHelper( light, size ) {\n\n\tObject3D.call( this );\n\n\tthis.light = light;\n\tthis.light.updateMatrixWorld();\n\n\tthis.matrix = light.matrixWorld;\n\tthis.matrixAutoUpdate = false;\n\n\tif ( size === undefined ) size = 1;\n\n\tvar geometry = new BufferGeometry();\n\tgeometry.addAttribute( 'position', new Float32Attribute( [\n\t\t- size, size, 0,\n\t\t size, size, 0,\n\t\t size, - size, 0,\n\t\t- size, - size, 0,\n\t\t- size, size, 0\n\t], 3 ) );\n\n\tvar material = new LineBasicMaterial( { fog: false } );\n\n\tthis.add( new Line( geometry, material ) );\n\n\tgeometry = new BufferGeometry();\n\tgeometry.addAttribute( 'position', new Float32Attribute( [ 0, 0, 0, 0, 0, 1 ], 3 ) );\n\n\tthis.add( new Line( geometry, material ));\n\n\tthis.update();\n\n}\n\nDirectionalLightHelper.prototype = Object.create( Object3D.prototype );\nDirectionalLightHelper.prototype.constructor = DirectionalLightHelper;\n\nDirectionalLightHelper.prototype.dispose = function () {\n\n\tvar lightPlane = this.children[ 0 ];\n\tvar targetLine = this.children[ 1 ];\n\n\tlightPlane.geometry.dispose();\n\tlightPlane.material.dispose();\n\ttargetLine.geometry.dispose();\n\ttargetLine.material.dispose();\n\n};\n\nDirectionalLightHelper.prototype.update = function () {\n\n\tvar v1 = new Vector3();\n\tvar v2 = new Vector3();\n\tvar v3 = new Vector3();\n\n\treturn function update() {\n\n\t\tv1.setFromMatrixPosition( this.light.matrixWorld );\n\t\tv2.setFromMatrixPosition( this.light.target.matrixWorld );\n\t\tv3.subVectors( v2, v1 );\n\n\t\tvar lightPlane = this.children[ 0 ];\n\t\tvar targetLine = this.children[ 1 ];\n\n\t\tlightPlane.lookAt( v3 );\n\t\tlightPlane.material.color.copy( this.light.color ).multiplyScalar( this.light.intensity );\n\n\t\ttargetLine.lookAt( v3 );\n\t\ttargetLine.scale.z = v3.length();\n\n\t};\n\n}();\n\n\nexport { DirectionalLightHelper };\n","import { Camera } from '../../cameras/Camera';\nimport { Vector3 } from '../../math/Vector3';\nimport { LineSegments } from '../../objects/LineSegments';\nimport { Color } from '../../math/Color';\nimport { FaceColors } from '../../constants';\nimport { LineBasicMaterial } from '../../materials/LineBasicMaterial';\nimport { Geometry } from '../../core/Geometry';\n\n/**\n * @author alteredq / http://alteredqualia.com/\n *\n *\t- shows frustum, line of sight and up of the camera\n *\t- suitable for fast updates\n * \t- based on frustum visualization in lightgl.js shadowmap example\n *\t\thttp://evanw.github.com/lightgl.js/tests/shadowmap.html\n */\n\nfunction CameraHelper( camera ) {\n\n\tvar geometry = new Geometry();\n\tvar material = new LineBasicMaterial( { color: 0xffffff, vertexColors: FaceColors } );\n\n\tvar pointMap = {};\n\n\t// colors\n\n\tvar hexFrustum = 0xffaa00;\n\tvar hexCone = 0xff0000;\n\tvar hexUp = 0x00aaff;\n\tvar hexTarget = 0xffffff;\n\tvar hexCross = 0x333333;\n\n\t// near\n\n\taddLine( \"n1\", \"n2\", hexFrustum );\n\taddLine( \"n2\", \"n4\", hexFrustum );\n\taddLine( \"n4\", \"n3\", hexFrustum );\n\taddLine( \"n3\", \"n1\", hexFrustum );\n\n\t// far\n\n\taddLine( \"f1\", \"f2\", hexFrustum );\n\taddLine( \"f2\", \"f4\", hexFrustum );\n\taddLine( \"f4\", \"f3\", hexFrustum );\n\taddLine( \"f3\", \"f1\", hexFrustum );\n\n\t// sides\n\n\taddLine( \"n1\", \"f1\", hexFrustum );\n\taddLine( \"n2\", \"f2\", hexFrustum );\n\taddLine( \"n3\", \"f3\", hexFrustum );\n\taddLine( \"n4\", \"f4\", hexFrustum );\n\n\t// cone\n\n\taddLine( \"p\", \"n1\", hexCone );\n\taddLine( \"p\", \"n2\", hexCone );\n\taddLine( \"p\", \"n3\", hexCone );\n\taddLine( \"p\", \"n4\", hexCone );\n\n\t// up\n\n\taddLine( \"u1\", \"u2\", hexUp );\n\taddLine( \"u2\", \"u3\", hexUp );\n\taddLine( \"u3\", \"u1\", hexUp );\n\n\t// target\n\n\taddLine( \"c\", \"t\", hexTarget );\n\taddLine( \"p\", \"c\", hexCross );\n\n\t// cross\n\n\taddLine( \"cn1\", \"cn2\", hexCross );\n\taddLine( \"cn3\", \"cn4\", hexCross );\n\n\taddLine( \"cf1\", \"cf2\", hexCross );\n\taddLine( \"cf3\", \"cf4\", hexCross );\n\n\tfunction addLine( a, b, hex ) {\n\n\t\taddPoint( a, hex );\n\t\taddPoint( b, hex );\n\n\t}\n\n\tfunction addPoint( id, hex ) {\n\n\t\tgeometry.vertices.push( new Vector3() );\n\t\tgeometry.colors.push( new Color( hex ) );\n\n\t\tif ( pointMap[ id ] === undefined ) {\n\n\t\t\tpointMap[ id ] = [];\n\n\t\t}\n\n\t\tpointMap[ id ].push( geometry.vertices.length - 1 );\n\n\t}\n\n\tLineSegments.call( this, geometry, material );\n\n\tthis.camera = camera;\n\tif( this.camera.updateProjectionMatrix ) this.camera.updateProjectionMatrix();\n\n\tthis.matrix = camera.matrixWorld;\n\tthis.matrixAutoUpdate = false;\n\n\tthis.pointMap = pointMap;\n\n\tthis.update();\n\n}\n\nCameraHelper.prototype = Object.create( LineSegments.prototype );\nCameraHelper.prototype.constructor = CameraHelper;\n\nCameraHelper.prototype.update = function () {\n\n\tvar geometry, pointMap;\n\n\tvar vector = new Vector3();\n\tvar camera = new Camera();\n\n\tfunction setPoint( point, x, y, z ) {\n\n\t\tvector.set( x, y, z ).unproject( camera );\n\n\t\tvar points = pointMap[ point ];\n\n\t\tif ( points !== undefined ) {\n\n\t\t\tfor ( var i = 0, il = points.length; i < il; i ++ ) {\n\n\t\t\t\tgeometry.vertices[ points[ i ] ].copy( vector );\n\n\t\t\t}\n\n\t\t}\n\n\t}\n\n\treturn function update() {\n\n\t\tgeometry = this.geometry;\n\t\tpointMap = this.pointMap;\n\n\t\tvar w = 1, h = 1;\n\n\t\t// we need just camera projection matrix\n\t\t// world matrix must be identity\n\n\t\tcamera.projectionMatrix.copy( this.camera.projectionMatrix );\n\n\t\t// center / target\n\n\t\tsetPoint( \"c\", 0, 0, - 1 );\n\t\tsetPoint( \"t\", 0, 0, 1 );\n\n\t\t// near\n\n\t\tsetPoint( \"n1\", - w, - h, - 1 );\n\t\tsetPoint( \"n2\", w, - h, - 1 );\n\t\tsetPoint( \"n3\", - w, h, - 1 );\n\t\tsetPoint( \"n4\", w, h, - 1 );\n\n\t\t// far\n\n\t\tsetPoint( \"f1\", - w, - h, 1 );\n\t\tsetPoint( \"f2\", w, - h, 1 );\n\t\tsetPoint( \"f3\", - w, h, 1 );\n\t\tsetPoint( \"f4\", w, h, 1 );\n\n\t\t// up\n\n\t\tsetPoint( \"u1\", w * 0.7, h * 1.1, - 1 );\n\t\tsetPoint( \"u2\", - w * 0.7, h * 1.1, - 1 );\n\t\tsetPoint( \"u3\", 0, h * 2, - 1 );\n\n\t\t// cross\n\n\t\tsetPoint( \"cf1\", - w, 0, 1 );\n\t\tsetPoint( \"cf2\", w, 0, 1 );\n\t\tsetPoint( \"cf3\", 0, - h, 1 );\n\t\tsetPoint( \"cf4\", 0, h, 1 );\n\n\t\tsetPoint( \"cn1\", - w, 0, - 1 );\n\t\tsetPoint( \"cn2\", w, 0, - 1 );\n\t\tsetPoint( \"cn3\", 0, - h, - 1 );\n\t\tsetPoint( \"cn4\", 0, h, - 1 );\n\n\t\tgeometry.verticesNeedUpdate = true;\n\n\t};\n\n}();\n\n\nexport { CameraHelper };\n","import { Mesh } from '../../objects/Mesh';\nimport { MeshBasicMaterial } from '../../materials/MeshBasicMaterial';\nimport { BoxGeometry } from '../../geometries/BoxGeometry';\nimport { Box3 } from '../../math/Box3';\n\n/**\n * @author WestLangley / http://github.com/WestLangley\n */\n\n// a helper to show the world-axis-aligned bounding box for an object\n\nfunction BoundingBoxHelper( object, hex ) {\n\n\tvar color = ( hex !== undefined ) ? hex : 0x888888;\n\n\tthis.object = object;\n\n\tthis.box = new Box3();\n\n\tMesh.call( this, new BoxGeometry( 1, 1, 1 ), new MeshBasicMaterial( { color: color, wireframe: true } ) );\n\n}\n\nBoundingBoxHelper.prototype = Object.create( Mesh.prototype );\nBoundingBoxHelper.prototype.constructor = BoundingBoxHelper;\n\nBoundingBoxHelper.prototype.update = function () {\n\n\tthis.box.setFromObject( this.object );\n\n\tthis.box.getSize( this.scale );\n\n\tthis.box.getCenter( this.position );\n\n};\n\n\nexport { BoundingBoxHelper };\n","import { Box3 } from '../../math/Box3';\nimport { LineSegments } from '../../objects/LineSegments';\nimport { LineBasicMaterial } from '../../materials/LineBasicMaterial';\nimport { BufferAttribute } from '../../core/BufferAttribute';\nimport { BufferGeometry } from '../../core/BufferGeometry';\n\n/**\n * @author mrdoob / http://mrdoob.com/\n */\n\nfunction BoxHelper( object, color ) {\n\n\tif ( color === undefined ) color = 0xffff00;\n\n\tvar indices = new Uint16Array( [ 0, 1, 1, 2, 2, 3, 3, 0, 4, 5, 5, 6, 6, 7, 7, 4, 0, 4, 1, 5, 2, 6, 3, 7 ] );\n\tvar positions = new Float32Array( 8 * 3 );\n\n\tvar geometry = new BufferGeometry();\n\tgeometry.setIndex( new BufferAttribute( indices, 1 ) );\n\tgeometry.addAttribute( 'position', new BufferAttribute( positions, 3 ) );\n\n\tLineSegments.call( this, geometry, new LineBasicMaterial( { color: color } ) );\n\n\tif ( object !== undefined ) {\n\n\t\tthis.update( object );\n\n\t}\n\n}\n\nBoxHelper.prototype = Object.create( LineSegments.prototype );\nBoxHelper.prototype.constructor = BoxHelper;\n\nBoxHelper.prototype.update = ( function () {\n\n\tvar box = new Box3();\n\n\treturn function update( object ) {\n\n\t\tif ( (object && object.isBox3) ) {\n\n\t\t\tbox.copy( object );\n\n\t\t} else {\n\n\t\t\tbox.setFromObject( object );\n\n\t\t}\n\n\t\tif ( box.isEmpty() ) return;\n\n\t\tvar min = box.min;\n\t\tvar max = box.max;\n\n\t\t/*\n\t\t 5____4\n\t\t1/___0/|\n\t\t| 6__|_7\n\t\t2/___3/\n\n\t\t0: max.x, max.y, max.z\n\t\t1: min.x, max.y, max.z\n\t\t2: min.x, min.y, max.z\n\t\t3: max.x, min.y, max.z\n\t\t4: max.x, max.y, min.z\n\t\t5: min.x, max.y, min.z\n\t\t6: min.x, min.y, min.z\n\t\t7: max.x, min.y, min.z\n\t\t*/\n\n\t\tvar position = this.geometry.attributes.position;\n\t\tvar array = position.array;\n\n\t\tarray[ 0 ] = max.x; array[ 1 ] = max.y; array[ 2 ] = max.z;\n\t\tarray[ 3 ] = min.x; array[ 4 ] = max.y; array[ 5 ] = max.z;\n\t\tarray[ 6 ] = min.x; array[ 7 ] = min.y; array[ 8 ] = max.z;\n\t\tarray[ 9 ] = max.x; array[ 10 ] = min.y; array[ 11 ] = max.z;\n\t\tarray[ 12 ] = max.x; array[ 13 ] = max.y; array[ 14 ] = min.z;\n\t\tarray[ 15 ] = min.x; array[ 16 ] = max.y; array[ 17 ] = min.z;\n\t\tarray[ 18 ] = min.x; array[ 19 ] = min.y; array[ 20 ] = min.z;\n\t\tarray[ 21 ] = max.x; array[ 22 ] = min.y; array[ 23 ] = min.z;\n\n\t\tposition.needsUpdate = true;\n\n\t\tthis.geometry.computeBoundingSphere();\n\n\t};\n\n} )();\n\n\nexport { BoxHelper };\n","/**\n * @author WestLangley / http://github.com/WestLangley\n * @author zz85 / http://github.com/zz85\n * @author bhouston / http://clara.io\n *\n * Creates an arrow for visualizing directions\n *\n * Parameters:\n * dir - Vector3\n * origin - Vector3\n * length - Number\n * color - color in hex value\n * headLength - Number\n * headWidth - Number\n */\n\nimport { Vector3 } from '../../math/Vector3';\nimport { Object3D } from '../../core/Object3D';\nimport { CylinderBufferGeometry } from '../../geometries/CylinderBufferGeometry';\nimport { Float32Attribute } from '../../core/BufferAttribute';\nimport { BufferGeometry } from '../../core/BufferGeometry';\nimport { MeshBasicMaterial } from '../../materials/MeshBasicMaterial';\nimport { Mesh } from '../../objects/Mesh';\nimport { LineBasicMaterial } from '../../materials/LineBasicMaterial';\nimport { Line } from '../../objects/Line';\n\nvar lineGeometry = new BufferGeometry();\nlineGeometry.addAttribute( 'position', new Float32Attribute( [ 0, 0, 0, 0, 1, 0 ], 3 ) );\n\nvar coneGeometry = new CylinderBufferGeometry( 0, 0.5, 1, 5, 1 );\nconeGeometry.translate( 0, - 0.5, 0 );\n\nfunction ArrowHelper( dir, origin, length, color, headLength, headWidth ) {\n\n\t// dir is assumed to be normalized\n\n\tObject3D.call( this );\n\n\tif ( color === undefined ) color = 0xffff00;\n\tif ( length === undefined ) length = 1;\n\tif ( headLength === undefined ) headLength = 0.2 * length;\n\tif ( headWidth === undefined ) headWidth = 0.2 * headLength;\n\n\tthis.position.copy( origin );\n\n\tthis.line = new Line( lineGeometry, new LineBasicMaterial( { color: color } ) );\n\tthis.line.matrixAutoUpdate = false;\n\tthis.add( this.line );\n\n\tthis.cone = new Mesh( coneGeometry, new MeshBasicMaterial( { color: color } ) );\n\tthis.cone.matrixAutoUpdate = false;\n\tthis.add( this.cone );\n\n\tthis.setDirection( dir );\n\tthis.setLength( length, headLength, headWidth );\n\n}\n\nArrowHelper.prototype = Object.create( Object3D.prototype );\nArrowHelper.prototype.constructor = ArrowHelper;\n\nArrowHelper.prototype.setDirection = ( function () {\n\n\tvar axis = new Vector3();\n\tvar radians;\n\n\treturn function setDirection( dir ) {\n\n\t\t// dir is assumed to be normalized\n\n\t\tif ( dir.y > 0.99999 ) {\n\n\t\t\tthis.quaternion.set( 0, 0, 0, 1 );\n\n\t\t} else if ( dir.y < - 0.99999 ) {\n\n\t\t\tthis.quaternion.set( 1, 0, 0, 0 );\n\n\t\t} else {\n\n\t\t\taxis.set( dir.z, 0, - dir.x ).normalize();\n\n\t\t\tradians = Math.acos( dir.y );\n\n\t\t\tthis.quaternion.setFromAxisAngle( axis, radians );\n\n\t\t}\n\n\t};\n\n}() );\n\nArrowHelper.prototype.setLength = function ( length, headLength, headWidth ) {\n\n\tif ( headLength === undefined ) headLength = 0.2 * length;\n\tif ( headWidth === undefined ) headWidth = 0.2 * headLength;\n\n\tthis.line.scale.set( 1, Math.max( 0, length - headLength ), 1 );\n\tthis.line.updateMatrix();\n\n\tthis.cone.scale.set( headWidth, headLength, headWidth );\n\tthis.cone.position.y = length;\n\tthis.cone.updateMatrix();\n\n};\n\nArrowHelper.prototype.setColor = function ( color ) {\n\n\tthis.line.material.color.copy( color );\n\tthis.cone.material.color.copy( color );\n\n};\n\n\nexport { ArrowHelper };\n","import { LineSegments } from '../../objects/LineSegments';\nimport { VertexColors } from '../../constants';\nimport { LineBasicMaterial } from '../../materials/LineBasicMaterial';\nimport { BufferAttribute } from '../../core/BufferAttribute';\nimport { BufferGeometry } from '../../core/BufferGeometry';\n\n/**\n * @author sroucheray / http://sroucheray.org/\n * @author mrdoob / http://mrdoob.com/\n */\n\nfunction AxisHelper( size ) {\n\n\tsize = size || 1;\n\n\tvar vertices = new Float32Array( [\n\t\t0, 0, 0, size, 0, 0,\n\t\t0, 0, 0, 0, size, 0,\n\t\t0, 0, 0, 0, 0, size\n\t] );\n\n\tvar colors = new Float32Array( [\n\t\t1, 0, 0, 1, 0.6, 0,\n\t\t0, 1, 0, 0.6, 1, 0,\n\t\t0, 0, 1, 0, 0.6, 1\n\t] );\n\n\tvar geometry = new BufferGeometry();\n\tgeometry.addAttribute( 'position', new BufferAttribute( vertices, 3 ) );\n\tgeometry.addAttribute( 'color', new BufferAttribute( colors, 3 ) );\n\n\tvar material = new LineBasicMaterial( { vertexColors: VertexColors } );\n\n\tLineSegments.call( this, geometry, material );\n\n}\n\nAxisHelper.prototype = Object.create( LineSegments.prototype );\nAxisHelper.prototype.constructor = AxisHelper;\n\n\nexport { AxisHelper };\n","import { Vector3 } from '../../math/Vector3';\nimport { Curve } from '../core/Curve';\n\n/**\n * @author zz85 https://github.com/zz85\n *\n * Centripetal CatmullRom Curve - which is useful for avoiding\n * cusps and self-intersections in non-uniform catmull rom curves.\n * http://www.cemyuksel.com/research/catmullrom_param/catmullrom.pdf\n *\n * curve.type accepts centripetal(default), chordal and catmullrom\n * curve.tension is used for catmullrom which defaults to 0.5\n */\n\nvar CatmullRomCurve3 = ( function() {\n\n\tvar\n\t\ttmp = new Vector3(),\n\t\tpx = new CubicPoly(),\n\t\tpy = new CubicPoly(),\n\t\tpz = new CubicPoly();\n\n\t/*\n\tBased on an optimized c++ solution in\n\t - http://stackoverflow.com/questions/9489736/catmull-rom-curve-with-no-cusps-and-no-self-intersections/\n\t - http://ideone.com/NoEbVM\n\n\tThis CubicPoly class could be used for reusing some variables and calculations,\n\tbut for three.js curve use, it could be possible inlined and flatten into a single function call\n\twhich can be placed in CurveUtils.\n\t*/\n\n\tfunction CubicPoly() {}\n\n\t/*\n\t * Compute coefficients for a cubic polynomial\n\t * p(s) = c0 + c1*s + c2*s^2 + c3*s^3\n\t * such that\n\t * p(0) = x0, p(1) = x1\n\t * and\n\t * p'(0) = t0, p'(1) = t1.\n\t */\n\tCubicPoly.prototype.init = function( x0, x1, t0, t1 ) {\n\n\t\tthis.c0 = x0;\n\t\tthis.c1 = t0;\n\t\tthis.c2 = - 3 * x0 + 3 * x1 - 2 * t0 - t1;\n\t\tthis.c3 = 2 * x0 - 2 * x1 + t0 + t1;\n\n\t};\n\n\tCubicPoly.prototype.initNonuniformCatmullRom = function( x0, x1, x2, x3, dt0, dt1, dt2 ) {\n\n\t\t// compute tangents when parameterized in [t1,t2]\n\t\tvar t1 = ( x1 - x0 ) / dt0 - ( x2 - x0 ) / ( dt0 + dt1 ) + ( x2 - x1 ) / dt1;\n\t\tvar t2 = ( x2 - x1 ) / dt1 - ( x3 - x1 ) / ( dt1 + dt2 ) + ( x3 - x2 ) / dt2;\n\n\t\t// rescale tangents for parametrization in [0,1]\n\t\tt1 *= dt1;\n\t\tt2 *= dt1;\n\n\t\t// initCubicPoly\n\t\tthis.init( x1, x2, t1, t2 );\n\n\t};\n\n\t// standard Catmull-Rom spline: interpolate between x1 and x2 with previous/following points x1/x4\n\tCubicPoly.prototype.initCatmullRom = function( x0, x1, x2, x3, tension ) {\n\n\t\tthis.init( x1, x2, tension * ( x2 - x0 ), tension * ( x3 - x1 ) );\n\n\t};\n\n\tCubicPoly.prototype.calc = function( t ) {\n\n\t\tvar t2 = t * t;\n\t\tvar t3 = t2 * t;\n\t\treturn this.c0 + this.c1 * t + this.c2 * t2 + this.c3 * t3;\n\n\t};\n\n\t// Subclass Three.js curve\n\treturn Curve.create(\n\n\t\tfunction ( p /* array of Vector3 */ ) {\n\n\t\t\tthis.points = p || [];\n\t\t\tthis.closed = false;\n\n\t\t},\n\n\t\tfunction ( t ) {\n\n\t\t\tvar points = this.points,\n\t\t\t\tpoint, intPoint, weight, l;\n\n\t\t\tl = points.length;\n\n\t\t\tif ( l < 2 ) console.log( 'duh, you need at least 2 points' );\n\n\t\t\tpoint = ( l - ( this.closed ? 0 : 1 ) ) * t;\n\t\t\tintPoint = Math.floor( point );\n\t\t\tweight = point - intPoint;\n\n\t\t\tif ( this.closed ) {\n\n\t\t\t\tintPoint += intPoint > 0 ? 0 : ( Math.floor( Math.abs( intPoint ) / points.length ) + 1 ) * points.length;\n\n\t\t\t} else if ( weight === 0 && intPoint === l - 1 ) {\n\n\t\t\t\tintPoint = l - 2;\n\t\t\t\tweight = 1;\n\n\t\t\t}\n\n\t\t\tvar p0, p1, p2, p3; // 4 points\n\n\t\t\tif ( this.closed || intPoint > 0 ) {\n\n\t\t\t\tp0 = points[ ( intPoint - 1 ) % l ];\n\n\t\t\t} else {\n\n\t\t\t\t// extrapolate first point\n\t\t\t\ttmp.subVectors( points[ 0 ], points[ 1 ] ).add( points[ 0 ] );\n\t\t\t\tp0 = tmp;\n\n\t\t\t}\n\n\t\t\tp1 = points[ intPoint % l ];\n\t\t\tp2 = points[ ( intPoint + 1 ) % l ];\n\n\t\t\tif ( this.closed || intPoint + 2 < l ) {\n\n\t\t\t\tp3 = points[ ( intPoint + 2 ) % l ];\n\n\t\t\t} else {\n\n\t\t\t\t// extrapolate last point\n\t\t\t\ttmp.subVectors( points[ l - 1 ], points[ l - 2 ] ).add( points[ l - 1 ] );\n\t\t\t\tp3 = tmp;\n\n\t\t\t}\n\n\t\t\tif ( this.type === undefined || this.type === 'centripetal' || this.type === 'chordal' ) {\n\n\t\t\t\t// init Centripetal / Chordal Catmull-Rom\n\t\t\t\tvar pow = this.type === 'chordal' ? 0.5 : 0.25;\n\t\t\t\tvar dt0 = Math.pow( p0.distanceToSquared( p1 ), pow );\n\t\t\t\tvar dt1 = Math.pow( p1.distanceToSquared( p2 ), pow );\n\t\t\t\tvar dt2 = Math.pow( p2.distanceToSquared( p3 ), pow );\n\n\t\t\t\t// safety check for repeated points\n\t\t\t\tif ( dt1 < 1e-4 ) dt1 = 1.0;\n\t\t\t\tif ( dt0 < 1e-4 ) dt0 = dt1;\n\t\t\t\tif ( dt2 < 1e-4 ) dt2 = dt1;\n\n\t\t\t\tpx.initNonuniformCatmullRom( p0.x, p1.x, p2.x, p3.x, dt0, dt1, dt2 );\n\t\t\t\tpy.initNonuniformCatmullRom( p0.y, p1.y, p2.y, p3.y, dt0, dt1, dt2 );\n\t\t\t\tpz.initNonuniformCatmullRom( p0.z, p1.z, p2.z, p3.z, dt0, dt1, dt2 );\n\n\t\t\t} else if ( this.type === 'catmullrom' ) {\n\n\t\t\t\tvar tension = this.tension !== undefined ? this.tension : 0.5;\n\t\t\t\tpx.initCatmullRom( p0.x, p1.x, p2.x, p3.x, tension );\n\t\t\t\tpy.initCatmullRom( p0.y, p1.y, p2.y, p3.y, tension );\n\t\t\t\tpz.initCatmullRom( p0.z, p1.z, p2.z, p3.z, tension );\n\n\t\t\t}\n\n\t\t\tvar v = new Vector3(\n\t\t\t\tpx.calc( weight ),\n\t\t\t\tpy.calc( weight ),\n\t\t\t\tpz.calc( weight )\n\t\t\t);\n\n\t\t\treturn v;\n\n\t\t}\n\n\t);\n\n} )();\n\n\nexport { CatmullRomCurve3 };\n","import { CatmullRomCurve3 } from './CatmullRomCurve3';\n\n/**************************************************************\n *\tClosed Spline 3D curve\n **************************************************************/\n\n\nfunction ClosedSplineCurve3( points ) {\n\n\tconsole.warn( 'THREE.ClosedSplineCurve3 has been deprecated. Please use THREE.CatmullRomCurve3.' );\n\n\tCatmullRomCurve3.call( this, points );\n\tthis.type = 'catmullrom';\n\tthis.closed = true;\n\n}\n\nClosedSplineCurve3.prototype = Object.create( CatmullRomCurve3.prototype );\n\n\nexport { ClosedSplineCurve3 };\n","import { Vector3 } from '../../math/Vector3';\nimport { CurveUtils } from '../CurveUtils';\nimport { Curve } from '../core/Curve';\n\n/**************************************************************\n *\tSpline 3D curve\n **************************************************************/\n\n\nvar SplineCurve3 = Curve.create(\n\n\tfunction ( points /* array of Vector3 */ ) {\n\n\t\tconsole.warn( 'THREE.SplineCurve3 will be deprecated. Please use THREE.CatmullRomCurve3' );\n\t\tthis.points = ( points === undefined ) ? [] : points;\n\n\t},\n\n\tfunction ( t ) {\n\n\t\tvar points = this.points;\n\t\tvar point = ( points.length - 1 ) * t;\n\n\t\tvar intPoint = Math.floor( point );\n\t\tvar weight = point - intPoint;\n\n\t\tvar point0 = points[ intPoint == 0 ? intPoint : intPoint - 1 ];\n\t\tvar point1 = points[ intPoint ];\n\t\tvar point2 = points[ intPoint > points.length - 2 ? points.length - 1 : intPoint + 1 ];\n\t\tvar point3 = points[ intPoint > points.length - 3 ? points.length - 1 : intPoint + 2 ];\n\n\t\tvar interpolate = CurveUtils.interpolate;\n\n\t\treturn new Vector3(\n\t\t\tinterpolate( point0.x, point1.x, point2.x, point3.x, weight ),\n\t\t\tinterpolate( point0.y, point1.y, point2.y, point3.y, weight ),\n\t\t\tinterpolate( point0.z, point1.z, point2.z, point3.z, weight )\n\t\t);\n\n\t}\n\n);\n\n\nexport { SplineCurve3 };\n","import { Vector3 } from '../../math/Vector3';\nimport { ShapeUtils } from '../ShapeUtils';\nimport { Curve } from '../core/Curve';\n\n/**************************************************************\n *\tCubic Bezier 3D curve\n **************************************************************/\n\nvar CubicBezierCurve3 = Curve.create(\n\n\tfunction ( v0, v1, v2, v3 ) {\n\n\t\tthis.v0 = v0;\n\t\tthis.v1 = v1;\n\t\tthis.v2 = v2;\n\t\tthis.v3 = v3;\n\n\t},\n\n\tfunction ( t ) {\n\n\t\tvar b3 = ShapeUtils.b3;\n\n\t\treturn new Vector3(\n\t\t\tb3( t, this.v0.x, this.v1.x, this.v2.x, this.v3.x ),\n\t\t\tb3( t, this.v0.y, this.v1.y, this.v2.y, this.v3.y ),\n\t\t\tb3( t, this.v0.z, this.v1.z, this.v2.z, this.v3.z )\n\t\t);\n\n\t}\n\n);\n\n\nexport { CubicBezierCurve3 };\n","import { Vector3 } from '../../math/Vector3';\nimport { ShapeUtils } from '../ShapeUtils';\nimport { Curve } from '../core/Curve';\n\n/**************************************************************\n *\tQuadratic Bezier 3D curve\n **************************************************************/\n\nvar QuadraticBezierCurve3 = Curve.create(\n\n\tfunction ( v0, v1, v2 ) {\n\n\t\tthis.v0 = v0;\n\t\tthis.v1 = v1;\n\t\tthis.v2 = v2;\n\n\t},\n\n\tfunction ( t ) {\n\n\t\tvar b2 = ShapeUtils.b2;\n\n\t\treturn new Vector3(\n\t\t\tb2( t, this.v0.x, this.v1.x, this.v2.x ),\n\t\t\tb2( t, this.v0.y, this.v1.y, this.v2.y ),\n\t\t\tb2( t, this.v0.z, this.v1.z, this.v2.z )\n\t\t);\n\n\t}\n\n);\n\n\nexport { QuadraticBezierCurve3 };\n","import { Vector3 } from '../../math/Vector3';\nimport { Curve } from '../core/Curve';\n\n/**************************************************************\n *\tLine3D\n **************************************************************/\n\nvar LineCurve3 = Curve.create(\n\n\tfunction ( v1, v2 ) {\n\n\t\tthis.v1 = v1;\n\t\tthis.v2 = v2;\n\n\t},\n\n\tfunction ( t ) {\n\n\t\tif ( t === 1 ) {\n\n\t\t\treturn this.v2.clone();\n\n\t\t}\n\n\t\tvar vector = new Vector3();\n\n\t\tvector.subVectors( this.v2, this.v1 ); // diff\n\t\tvector.multiplyScalar( t );\n\t\tvector.add( this.v1 );\n\n\t\treturn vector;\n\n\t}\n\n);\n\n\nexport { LineCurve3 };\n","import { EllipseCurve } from './EllipseCurve';\n\n/**************************************************************\n *\tArc curve\n **************************************************************/\n\nfunction ArcCurve( aX, aY, aRadius, aStartAngle, aEndAngle, aClockwise ) {\n\n\tEllipseCurve.call( this, aX, aY, aRadius, aRadius, aStartAngle, aEndAngle, aClockwise );\n\n}\n\nArcCurve.prototype = Object.create( EllipseCurve.prototype );\nArcCurve.prototype.constructor = ArcCurve;\n\n\nexport { ArcCurve };\n","import { Matrix4 } from '../math/Matrix4';\nimport { Mesh } from '../objects/Mesh';\nimport { Group } from '../objects/Group';\n\n/**\n * @author alteredq / http://alteredqualia.com/\n */\n\nvar SceneUtils = {\n\n\tcreateMultiMaterialObject: function ( geometry, materials ) {\n\n\t\tvar group = new Group();\n\n\t\tfor ( var i = 0, l = materials.length; i < l; i ++ ) {\n\n\t\t\tgroup.add( new Mesh( geometry, materials[ i ] ) );\n\n\t\t}\n\n\t\treturn group;\n\n\t},\n\n\tdetach: function ( child, parent, scene ) {\n\n\t\tchild.applyMatrix( parent.matrixWorld );\n\t\tparent.remove( child );\n\t\tscene.add( child );\n\n\t},\n\n\tattach: function ( child, scene, parent ) {\n\n\t\tvar matrixWorldInverse = new Matrix4();\n\t\tmatrixWorldInverse.getInverse( parent.matrixWorld );\n\t\tchild.applyMatrix( matrixWorldInverse );\n\n\t\tscene.remove( child );\n\t\tparent.add( child );\n\n\t}\n\n};\n\n\nexport { SceneUtils };\n","/**\n * @author mrdoob / http://mrdoob.com/\n */\n\nimport { Audio } from './audio/Audio.js';\nimport { AudioAnalyser } from './audio/AudioAnalyser.js';\nimport { PerspectiveCamera } from './cameras/PerspectiveCamera.js';\nimport { CullFaceFront, CullFaceBack } from './constants.js';\nimport { BufferAttribute } from './core/BufferAttribute.js';\nimport { BufferGeometry } from './core/BufferGeometry.js';\nimport { EventDispatcher } from './core/EventDispatcher.js';\nimport { Face3 } from './core/Face3.js';\nimport { Object3D } from './core/Object3D.js';\nimport { Uniform } from './core/Uniform';\nimport { BoxGeometry } from './geometries/BoxGeometry.js';\nimport { EdgesGeometry } from './geometries/EdgesGeometry.js';\nimport { ExtrudeGeometry } from './geometries/ExtrudeGeometry.js';\nimport { ShapeGeometry } from './geometries/ShapeGeometry.js';\nimport { WireframeGeometry } from './geometries/WireframeGeometry.js';\nimport { Light } from './lights/Light.js';\nimport { FileLoader } from './loaders/FileLoader.js';\nimport { AudioLoader } from './loaders/AudioLoader.js';\nimport { CubeTextureLoader } from './loaders/CubeTextureLoader.js';\nimport { TextureLoader } from './loaders/TextureLoader.js';\nimport { Material } from './materials/Material.js';\nimport { LineBasicMaterial } from './materials/LineBasicMaterial.js';\nimport { MeshPhongMaterial } from './materials/MeshPhongMaterial.js';\nimport { MultiMaterial } from './materials/MultiMaterial.js';\nimport { PointsMaterial } from './materials/PointsMaterial.js';\nimport { ShaderMaterial } from './materials/ShaderMaterial.js';\nimport { Box2 } from './math/Box2.js';\nimport { Box3 } from './math/Box3.js';\nimport { Color } from './math/Color.js';\nimport { Line3 } from './math/Line3.js';\nimport { Matrix3 } from './math/Matrix3.js';\nimport { Matrix4 } from './math/Matrix4.js';\nimport { Plane } from './math/Plane.js';\nimport { Quaternion } from './math/Quaternion.js';\nimport { Ray } from './math/Ray.js';\nimport { Vector3 } from './math/Vector3.js';\nimport { LineSegments } from './objects/LineSegments.js';\nimport { LOD } from './objects/LOD.js';\nimport { Points } from './objects/Points.js';\nimport { Sprite } from './objects/Sprite.js';\nimport { WebGLRenderer } from './renderers/WebGLRenderer.js';\nimport { WebGLRenderTarget } from './renderers/WebGLRenderTarget.js';\nimport { WebGLShadowMap } from './renderers/webgl/WebGLShadowMap.js';\nimport { Shape } from './extras/core/Shape.js';\n\nexport { BoxGeometry as CubeGeometry };\n\nexport function Face4 ( a, b, c, d, normal, color, materialIndex ) {\n\tconsole.warn( 'THREE.Face4 has been removed. A THREE.Face3 will be created instead.' );\n\treturn new Face3( a, b, c, normal, color, materialIndex );\n}\n\nexport var LineStrip = 0;\n\nexport var LinePieces = 1;\n\nexport { MultiMaterial as MeshFaceMaterial };\n\nexport function PointCloud ( geometry, material ) {\n\tconsole.warn( 'THREE.PointCloud has been renamed to THREE.Points.' );\n\treturn new Points( geometry, material );\n}\n\nexport { Sprite as Particle };\n\nexport function ParticleSystem ( geometry, material ) {\n\tconsole.warn( 'THREE.ParticleSystem has been renamed to THREE.Points.' );\n\treturn new Points( geometry, material );\n}\n\nexport function PointCloudMaterial ( parameters ) {\n\tconsole.warn( 'THREE.PointCloudMaterial has been renamed to THREE.PointsMaterial.' );\n\treturn new PointsMaterial( parameters );\n}\n\nexport function ParticleBasicMaterial ( parameters ) {\n\tconsole.warn( 'THREE.ParticleBasicMaterial has been renamed to THREE.PointsMaterial.' );\n\treturn new PointsMaterial( parameters );\n}\n\nexport function ParticleSystemMaterial ( parameters ) {\n\tconsole.warn( 'THREE.ParticleSystemMaterial has been renamed to THREE.PointsMaterial.' );\n\treturn new PointsMaterial( parameters );\n}\n\nexport function Vertex ( x, y, z ) {\n\tconsole.warn( 'THREE.Vertex has been removed. Use THREE.Vector3 instead.' );\n\treturn new Vector3( x, y, z );\n}\n\n//\n\nexport function EdgesHelper( object, hex ) {\n\tconsole.warn( 'THREE.EdgesHelper has been removed. Use THREE.EdgesGeometry instead.' );\n\treturn new LineSegments( new EdgesGeometry( object.geometry ), new LineBasicMaterial( { color: hex !== undefined ? hex : 0xffffff } ) );\n}\n\nexport function WireframeHelper( object, hex ) {\n\tconsole.warn( 'THREE.WireframeHelper has been removed. Use THREE.WireframeGeometry instead.' );\n\treturn new LineSegments( new WireframeGeometry( object.geometry ), new LineBasicMaterial( { color: hex !== undefined ? hex : 0xffffff } ) );\n}\n\n//\n\nexport function XHRLoader( manager ) {\n\tconsole.warn( 'THREE.XHRLoader has been renamed to THREE.FileLoader.' );\n\treturn new FileLoader( manager );\n}\n\n//\n\nObject.assign( Box2.prototype, {\n\tcenter: function ( optionalTarget ) {\n\t\tconsole.warn( 'THREE.Box2: .center() has been renamed to .getCenter().' );\n\t\treturn this.getCenter( optionalTarget );\n\t},\n\tempty: function () {\n\t\tconsole.warn( 'THREE.Box2: .empty() has been renamed to .isEmpty().' );\n\t\treturn this.isEmpty();\n\t},\n\tisIntersectionBox: function ( box ) {\n\t\tconsole.warn( 'THREE.Box2: .isIntersectionBox() has been renamed to .intersectsBox().' );\n\t\treturn this.intersectsBox( box );\n\t},\n\tsize: function ( optionalTarget ) {\n\t\tconsole.warn( 'THREE.Box2: .size() has been renamed to .getSize().' );\n\t\treturn this.getSize( optionalTarget );\n\t}\n} );\n\nObject.assign( Box3.prototype, {\n\tcenter: function ( optionalTarget ) {\n\t\tconsole.warn( 'THREE.Box3: .center() has been renamed to .getCenter().' );\n\t\treturn this.getCenter( optionalTarget );\n\t},\n\tempty: function () {\n\t\tconsole.warn( 'THREE.Box3: .empty() has been renamed to .isEmpty().' );\n\t\treturn this.isEmpty();\n\t},\n\tisIntersectionBox: function ( box ) {\n\t\tconsole.warn( 'THREE.Box3: .isIntersectionBox() has been renamed to .intersectsBox().' );\n\t\treturn this.intersectsBox( box );\n\t},\n\tisIntersectionSphere: function ( sphere ) {\n\t\tconsole.warn( 'THREE.Box3: .isIntersectionSphere() has been renamed to .intersectsSphere().' );\n\t\treturn this.intersectsSphere( sphere );\n\t},\n\tsize: function ( optionalTarget ) {\n\t\tconsole.warn( 'THREE.Box3: .size() has been renamed to .getSize().' );\n\t\treturn this.getSize( optionalTarget );\n\t}\n} );\n\nObject.assign( Line3.prototype, {\n\tcenter: function ( optionalTarget ) {\n\t\tconsole.warn( 'THREE.Line3: .center() has been renamed to .getCenter().' );\n\t\treturn this.getCenter( optionalTarget );\n\t}\n} );\n\nObject.assign( Matrix3.prototype, {\n\tmultiplyVector3: function ( vector ) {\n\t\tconsole.warn( 'THREE.Matrix3: .multiplyVector3() has been removed. Use vector.applyMatrix3( matrix ) instead.' );\n\t\treturn vector.applyMatrix3( this );\n\t},\n\tmultiplyVector3Array: function ( a ) {\n\t\tconsole.warn( 'THREE.Matrix3: .multiplyVector3Array() has been renamed. Use matrix.applyToVector3Array( array ) instead.' );\n\t\treturn this.applyToVector3Array( a );\n\t}\n} );\n\nObject.assign( Matrix4.prototype, {\n\textractPosition: function ( m ) {\n\t\tconsole.warn( 'THREE.Matrix4: .extractPosition() has been renamed to .copyPosition().' );\n\t\treturn this.copyPosition( m );\n\t},\n\tsetRotationFromQuaternion: function ( q ) {\n\t\tconsole.warn( 'THREE.Matrix4: .setRotationFromQuaternion() has been renamed to .makeRotationFromQuaternion().' );\n\t\treturn this.makeRotationFromQuaternion( q );\n\t},\n\tmultiplyVector3: function ( vector ) {\n\t\tconsole.warn( 'THREE.Matrix4: .multiplyVector3() has been removed. Use vector.applyMatrix4( matrix ) or vector.applyProjection( matrix ) instead.' );\n\t\treturn vector.applyProjection( this );\n\t},\n\tmultiplyVector4: function ( vector ) {\n\t\tconsole.warn( 'THREE.Matrix4: .multiplyVector4() has been removed. Use vector.applyMatrix4( matrix ) instead.' );\n\t\treturn vector.applyMatrix4( this );\n\t},\n\tmultiplyVector3Array: function ( a ) {\n\t\tconsole.warn( 'THREE.Matrix4: .multiplyVector3Array() has been renamed. Use matrix.applyToVector3Array( array ) instead.' );\n\t\treturn this.applyToVector3Array( a );\n\t},\n\trotateAxis: function ( v ) {\n\t\tconsole.warn( 'THREE.Matrix4: .rotateAxis() has been removed. Use Vector3.transformDirection( matrix ) instead.' );\n\t\tv.transformDirection( this );\n\t},\n\tcrossVector: function ( vector ) {\n\t\tconsole.warn( 'THREE.Matrix4: .crossVector() has been removed. Use vector.applyMatrix4( matrix ) instead.' );\n\t\treturn vector.applyMatrix4( this );\n\t},\n\ttranslate: function ( v ) {\n\t\tconsole.error( 'THREE.Matrix4: .translate() has been removed.' );\n\t},\n\trotateX: function ( angle ) {\n\t\tconsole.error( 'THREE.Matrix4: .rotateX() has been removed.' );\n\t},\n\trotateY: function ( angle ) {\n\t\tconsole.error( 'THREE.Matrix4: .rotateY() has been removed.' );\n\t},\n\trotateZ: function ( angle ) {\n\t\tconsole.error( 'THREE.Matrix4: .rotateZ() has been removed.' );\n\t},\n\trotateByAxis: function ( axis, angle ) {\n\t\tconsole.error( 'THREE.Matrix4: .rotateByAxis() has been removed.' );\n\t}\n} );\n\nObject.assign( Plane.prototype, {\n\tisIntersectionLine: function ( line ) {\n\t\tconsole.warn( 'THREE.Plane: .isIntersectionLine() has been renamed to .intersectsLine().' );\n\t\treturn this.intersectsLine( line );\n\t}\n} );\n\nObject.assign( Quaternion.prototype, {\n\tmultiplyVector3: function ( vector ) {\n\t\tconsole.warn( 'THREE.Quaternion: .multiplyVector3() has been removed. Use is now vector.applyQuaternion( quaternion ) instead.' );\n\t\treturn vector.applyQuaternion( this );\n\t}\n} );\n\nObject.assign( Ray.prototype, {\n\tisIntersectionBox: function ( box ) {\n\t\tconsole.warn( 'THREE.Ray: .isIntersectionBox() has been renamed to .intersectsBox().' );\n\t\treturn this.intersectsBox( box );\n\t},\n\tisIntersectionPlane: function ( plane ) {\n\t\tconsole.warn( 'THREE.Ray: .isIntersectionPlane() has been renamed to .intersectsPlane().' );\n\t\treturn this.intersectsPlane( plane );\n\t},\n\tisIntersectionSphere: function ( sphere ) {\n\t\tconsole.warn( 'THREE.Ray: .isIntersectionSphere() has been renamed to .intersectsSphere().' );\n\t\treturn this.intersectsSphere( sphere );\n\t}\n} );\n\nObject.assign( Shape.prototype, {\n\textrude: function ( options ) {\n\t\tconsole.warn( 'THREE.Shape: .extrude() has been removed. Use ExtrudeGeometry() instead.' );\n\t\treturn new ExtrudeGeometry( this, options );\n\t},\n\tmakeGeometry: function ( options ) {\n\t\tconsole.warn( 'THREE.Shape: .makeGeometry() has been removed. Use ShapeGeometry() instead.' );\n\t\treturn new ShapeGeometry( this, options );\n\t}\n} );\n\nObject.assign( Vector3.prototype, {\n\tsetEulerFromRotationMatrix: function () {\n\t\tconsole.error( 'THREE.Vector3: .setEulerFromRotationMatrix() has been removed. Use Euler.setFromRotationMatrix() instead.' );\n\t},\n\tsetEulerFromQuaternion: function () {\n\t\tconsole.error( 'THREE.Vector3: .setEulerFromQuaternion() has been removed. Use Euler.setFromQuaternion() instead.' );\n\t},\n\tgetPositionFromMatrix: function ( m ) {\n\t\tconsole.warn( 'THREE.Vector3: .getPositionFromMatrix() has been renamed to .setFromMatrixPosition().' );\n\t\treturn this.setFromMatrixPosition( m );\n\t},\n\tgetScaleFromMatrix: function ( m ) {\n\t\tconsole.warn( 'THREE.Vector3: .getScaleFromMatrix() has been renamed to .setFromMatrixScale().' );\n\t\treturn this.setFromMatrixScale( m );\n\t},\n\tgetColumnFromMatrix: function ( index, matrix ) {\n\t\tconsole.warn( 'THREE.Vector3: .getColumnFromMatrix() has been renamed to .setFromMatrixColumn().' );\n\t\treturn this.setFromMatrixColumn( matrix, index );\n\t}\n} );\n\n//\n\nObject.assign( Object3D.prototype, {\n\tgetChildByName: function ( name ) {\n\t\tconsole.warn( 'THREE.Object3D: .getChildByName() has been renamed to .getObjectByName().' );\n\t\treturn this.getObjectByName( name );\n\t},\n\trenderDepth: function ( value ) {\n\t\tconsole.warn( 'THREE.Object3D: .renderDepth has been removed. Use .renderOrder, instead.' );\n\t},\n\ttranslate: function ( distance, axis ) {\n\t\tconsole.warn( 'THREE.Object3D: .translate() has been removed. Use .translateOnAxis( axis, distance ) instead.' );\n\t\treturn this.translateOnAxis( axis, distance );\n\t}\n} );\n\nObject.defineProperties( Object3D.prototype, {\n\teulerOrder: {\n\t\tget: function () {\n\t\t\tconsole.warn( 'THREE.Object3D: .eulerOrder is now .rotation.order.' );\n\t\t\treturn this.rotation.order;\n\t\t},\n\t\tset: function ( value ) {\n\t\t\tconsole.warn( 'THREE.Object3D: .eulerOrder is now .rotation.order.' );\n\t\t\tthis.rotation.order = value;\n\t\t}\n\t},\n\tuseQuaternion: {\n\t\tget: function () {\n\t\t\tconsole.warn( 'THREE.Object3D: .useQuaternion has been removed. The library now uses quaternions by default.' );\n\t\t},\n\t\tset: function ( value ) {\n\t\t\tconsole.warn( 'THREE.Object3D: .useQuaternion has been removed. The library now uses quaternions by default.' );\n\t\t}\n\t}\n} );\n\nObject.defineProperties( LOD.prototype, {\n\tobjects: {\n\t\tget: function () {\n\t\t\tconsole.warn( 'THREE.LOD: .objects has been renamed to .levels.' );\n\t\t\treturn this.levels;\n\t\t}\n\t}\n} );\n\n//\n\nPerspectiveCamera.prototype.setLens = function ( focalLength, filmGauge ) {\n\n\tconsole.warn( \"THREE.PerspectiveCamera.setLens is deprecated. \" +\n\t\t\t\"Use .setFocalLength and .filmGauge for a photographic setup.\" );\n\n\tif ( filmGauge !== undefined ) this.filmGauge = filmGauge;\n\tthis.setFocalLength( focalLength );\n\n};\n\n//\n\nObject.defineProperties( Light.prototype, {\n\tonlyShadow: {\n\t\tset: function ( value ) {\n\t\t\tconsole.warn( 'THREE.Light: .onlyShadow has been removed.' );\n\t\t}\n\t},\n\tshadowCameraFov: {\n\t\tset: function ( value ) {\n\t\t\tconsole.warn( 'THREE.Light: .shadowCameraFov is now .shadow.camera.fov.' );\n\t\t\tthis.shadow.camera.fov = value;\n\t\t}\n\t},\n\tshadowCameraLeft: {\n\t\tset: function ( value ) {\n\t\t\tconsole.warn( 'THREE.Light: .shadowCameraLeft is now .shadow.camera.left.' );\n\t\t\tthis.shadow.camera.left = value;\n\t\t}\n\t},\n\tshadowCameraRight: {\n\t\tset: function ( value ) {\n\t\t\tconsole.warn( 'THREE.Light: .shadowCameraRight is now .shadow.camera.right.' );\n\t\t\tthis.shadow.camera.right = value;\n\t\t}\n\t},\n\tshadowCameraTop: {\n\t\tset: function ( value ) {\n\t\t\tconsole.warn( 'THREE.Light: .shadowCameraTop is now .shadow.camera.top.' );\n\t\t\tthis.shadow.camera.top = value;\n\t\t}\n\t},\n\tshadowCameraBottom: {\n\t\tset: function ( value ) {\n\t\t\tconsole.warn( 'THREE.Light: .shadowCameraBottom is now .shadow.camera.bottom.' );\n\t\t\tthis.shadow.camera.bottom = value;\n\t\t}\n\t},\n\tshadowCameraNear: {\n\t\tset: function ( value ) {\n\t\t\tconsole.warn( 'THREE.Light: .shadowCameraNear is now .shadow.camera.near.' );\n\t\t\tthis.shadow.camera.near = value;\n\t\t}\n\t},\n\tshadowCameraFar: {\n\t\tset: function ( value ) {\n\t\t\tconsole.warn( 'THREE.Light: .shadowCameraFar is now .shadow.camera.far.' );\n\t\t\tthis.shadow.camera.far = value;\n\t\t}\n\t},\n\tshadowCameraVisible: {\n\t\tset: function ( value ) {\n\t\t\tconsole.warn( 'THREE.Light: .shadowCameraVisible has been removed. Use new THREE.CameraHelper( light.shadow.camera ) instead.' );\n\t\t}\n\t},\n\tshadowBias: {\n\t\tset: function ( value ) {\n\t\t\tconsole.warn( 'THREE.Light: .shadowBias is now .shadow.bias.' );\n\t\t\tthis.shadow.bias = value;\n\t\t}\n\t},\n\tshadowDarkness: {\n\t\tset: function ( value ) {\n\t\t\tconsole.warn( 'THREE.Light: .shadowDarkness has been removed.' );\n\t\t}\n\t},\n\tshadowMapWidth: {\n\t\tset: function ( value ) {\n\t\t\tconsole.warn( 'THREE.Light: .shadowMapWidth is now .shadow.mapSize.width.' );\n\t\t\tthis.shadow.mapSize.width = value;\n\t\t}\n\t},\n\tshadowMapHeight: {\n\t\tset: function ( value ) {\n\t\t\tconsole.warn( 'THREE.Light: .shadowMapHeight is now .shadow.mapSize.height.' );\n\t\t\tthis.shadow.mapSize.height = value;\n\t\t}\n\t}\n} );\n\n//\n\nObject.defineProperties( BufferAttribute.prototype, {\n\tlength: {\n\t\tget: function () {\n\t\t\tconsole.warn( 'THREE.BufferAttribute: .length has been deprecated. Please use .count.' );\n\t\t\treturn this.array.length;\n\t\t}\n\t}\n} );\n\nObject.assign( BufferGeometry.prototype, {\n\taddIndex: function ( index ) {\n\t\tconsole.warn( 'THREE.BufferGeometry: .addIndex() has been renamed to .setIndex().' );\n\t\tthis.setIndex( index );\n\t},\n\taddDrawCall: function ( start, count, indexOffset ) {\n\t\tif ( indexOffset !== undefined ) {\n\t\t\tconsole.warn( 'THREE.BufferGeometry: .addDrawCall() no longer supports indexOffset.' );\n\t\t}\n\t\tconsole.warn( 'THREE.BufferGeometry: .addDrawCall() is now .addGroup().' );\n\t\tthis.addGroup( start, count );\n\t},\n\tclearDrawCalls: function () {\n\t\tconsole.warn( 'THREE.BufferGeometry: .clearDrawCalls() is now .clearGroups().' );\n\t\tthis.clearGroups();\n\t},\n\tcomputeTangents: function () {\n\t\tconsole.warn( 'THREE.BufferGeometry: .computeTangents() has been removed.' );\n\t},\n\tcomputeOffsets: function () {\n\t\tconsole.warn( 'THREE.BufferGeometry: .computeOffsets() has been removed.' );\n\t}\n} );\n\nObject.defineProperties( BufferGeometry.prototype, {\n\tdrawcalls: {\n\t\tget: function () {\n\t\t\tconsole.error( 'THREE.BufferGeometry: .drawcalls has been renamed to .groups.' );\n\t\t\treturn this.groups;\n\t\t}\n\t},\n\toffsets: {\n\t\tget: function () {\n\t\t\tconsole.warn( 'THREE.BufferGeometry: .offsets has been renamed to .groups.' );\n\t\t\treturn this.groups;\n\t\t}\n\t}\n} );\n\n//\n\nObject.defineProperties( Uniform.prototype, {\n\tdynamic: {\n\t\tset: function ( value ) {\n\t\t\tconsole.warn( 'THREE.Uniform: .dynamic has been removed. Use object.onBeforeRender() instead.' );\n\t\t}\n\t},\n\tonUpdate: {\n\t\tvalue: function () {\n\t\t\tconsole.warn( 'THREE.Uniform: .onUpdate() has been removed. Use object.onBeforeRender() instead.' );\n\t\t\treturn this;\n\t\t}\n\t}\n} );\n\n//\n\nObject.defineProperties( Material.prototype, {\n\twrapAround: {\n\t\tget: function () {\n\t\t\tconsole.warn( 'THREE.' + this.type + ': .wrapAround has been removed.' );\n\t\t},\n\t\tset: function ( value ) {\n\t\t\tconsole.warn( 'THREE.' + this.type + ': .wrapAround has been removed.' );\n\t\t}\n\t},\n\twrapRGB: {\n\t\tget: function () {\n\t\t\tconsole.warn( 'THREE.' + this.type + ': .wrapRGB has been removed.' );\n\t\t\treturn new Color();\n\t\t}\n\t}\n} );\n\nObject.defineProperties( MeshPhongMaterial.prototype, {\n\tmetal: {\n\t\tget: function () {\n\t\t\tconsole.warn( 'THREE.MeshPhongMaterial: .metal has been removed. Use THREE.MeshStandardMaterial instead.' );\n\t\t\treturn false;\n\t\t},\n\t\tset: function ( value ) {\n\t\t\tconsole.warn( 'THREE.MeshPhongMaterial: .metal has been removed. Use THREE.MeshStandardMaterial instead' );\n\t\t}\n\t}\n} );\n\nObject.defineProperties( ShaderMaterial.prototype, {\n\tderivatives: {\n\t\tget: function () {\n\t\t\tconsole.warn( 'THREE.ShaderMaterial: .derivatives has been moved to .extensions.derivatives.' );\n\t\t\treturn this.extensions.derivatives;\n\t\t},\n\t\tset: function ( value ) {\n\t\t\tconsole.warn( 'THREE. ShaderMaterial: .derivatives has been moved to .extensions.derivatives.' );\n\t\t\tthis.extensions.derivatives = value;\n\t\t}\n\t}\n} );\n\n//\n\nEventDispatcher.prototype = Object.assign( Object.create( {\n\n\t// Note: Extra base ensures these properties are not 'assign'ed.\n\n\tconstructor: EventDispatcher,\n\n\tapply: function ( target ) {\n\n\t\tconsole.warn( \"THREE.EventDispatcher: .apply is deprecated, \" +\n\t\t\t\t\"just inherit or Object.assign the prototype to mix-in.\" );\n\n\t\tObject.assign( target, this );\n\n\t}\n\n} ), EventDispatcher.prototype );\n\n//\n\nObject.assign( WebGLRenderer.prototype, {\n\tsupportsFloatTextures: function () {\n\t\tconsole.warn( 'THREE.WebGLRenderer: .supportsFloatTextures() is now .extensions.get( \\'OES_texture_float\\' ).' );\n\t\treturn this.extensions.get( 'OES_texture_float' );\n\t},\n\tsupportsHalfFloatTextures: function () {\n\t\tconsole.warn( 'THREE.WebGLRenderer: .supportsHalfFloatTextures() is now .extensions.get( \\'OES_texture_half_float\\' ).' );\n\t\treturn this.extensions.get( 'OES_texture_half_float' );\n\t},\n\tsupportsStandardDerivatives: function () {\n\t\tconsole.warn( 'THREE.WebGLRenderer: .supportsStandardDerivatives() is now .extensions.get( \\'OES_standard_derivatives\\' ).' );\n\t\treturn this.extensions.get( 'OES_standard_derivatives' );\n\t},\n\tsupportsCompressedTextureS3TC: function () {\n\t\tconsole.warn( 'THREE.WebGLRenderer: .supportsCompressedTextureS3TC() is now .extensions.get( \\'WEBGL_compressed_texture_s3tc\\' ).' );\n\t\treturn this.extensions.get( 'WEBGL_compressed_texture_s3tc' );\n\t},\n\tsupportsCompressedTexturePVRTC: function () {\n\t\tconsole.warn( 'THREE.WebGLRenderer: .supportsCompressedTexturePVRTC() is now .extensions.get( \\'WEBGL_compressed_texture_pvrtc\\' ).' );\n\t\treturn this.extensions.get( 'WEBGL_compressed_texture_pvrtc' );\n\t},\n\tsupportsBlendMinMax: function () {\n\t\tconsole.warn( 'THREE.WebGLRenderer: .supportsBlendMinMax() is now .extensions.get( \\'EXT_blend_minmax\\' ).' );\n\t\treturn this.extensions.get( 'EXT_blend_minmax' );\n\t},\n\tsupportsVertexTextures: function () {\n\t\treturn this.capabilities.vertexTextures;\n\t},\n\tsupportsInstancedArrays: function () {\n\t\tconsole.warn( 'THREE.WebGLRenderer: .supportsInstancedArrays() is now .extensions.get( \\'ANGLE_instanced_arrays\\' ).' );\n\t\treturn this.extensions.get( 'ANGLE_instanced_arrays' );\n\t},\n\tenableScissorTest: function ( boolean ) {\n\t\tconsole.warn( 'THREE.WebGLRenderer: .enableScissorTest() is now .setScissorTest().' );\n\t\tthis.setScissorTest( boolean );\n\t},\n\tinitMaterial: function () {\n\t\tconsole.warn( 'THREE.WebGLRenderer: .initMaterial() has been removed.' );\n\t},\n\taddPrePlugin: function () {\n\t\tconsole.warn( 'THREE.WebGLRenderer: .addPrePlugin() has been removed.' );\n\t},\n\taddPostPlugin: function () {\n\t\tconsole.warn( 'THREE.WebGLRenderer: .addPostPlugin() has been removed.' );\n\t},\n\tupdateShadowMap: function () {\n\t\tconsole.warn( 'THREE.WebGLRenderer: .updateShadowMap() has been removed.' );\n\t}\n} );\n\nObject.defineProperties( WebGLRenderer.prototype, {\n\tshadowMapEnabled: {\n\t\tget: function () {\n\t\t\treturn this.shadowMap.enabled;\n\t\t},\n\t\tset: function ( value ) {\n\t\t\tconsole.warn( 'THREE.WebGLRenderer: .shadowMapEnabled is now .shadowMap.enabled.' );\n\t\t\tthis.shadowMap.enabled = value;\n\t\t}\n\t},\n\tshadowMapType: {\n\t\tget: function () {\n\t\t\treturn this.shadowMap.type;\n\t\t},\n\t\tset: function ( value ) {\n\t\t\tconsole.warn( 'THREE.WebGLRenderer: .shadowMapType is now .shadowMap.type.' );\n\t\t\tthis.shadowMap.type = value;\n\t\t}\n\t},\n\tshadowMapCullFace: {\n\t\tget: function () {\n\t\t\treturn this.shadowMap.cullFace;\n\t\t},\n\t\tset: function ( value ) {\n\t\t\tconsole.warn( 'THREE.WebGLRenderer: .shadowMapCullFace is now .shadowMap.cullFace.' );\n\t\t\tthis.shadowMap.cullFace = value;\n\t\t}\n\t}\n} );\n\nObject.defineProperties( WebGLShadowMap.prototype, {\n\tcullFace: {\n\t\tget: function () {\n\t\t\treturn this.renderReverseSided ? CullFaceFront : CullFaceBack;\n\t\t},\n\t\tset: function ( cullFace ) {\n\t\t\tvar value = ( cullFace !== CullFaceBack );\n\t\t\tconsole.warn( \"WebGLRenderer: .shadowMap.cullFace is deprecated. Set .shadowMap.renderReverseSided to \" + value + \".\" );\n\t\t\tthis.renderReverseSided = value;\n\t\t}\n\t}\n} );\n\n//\n\nObject.defineProperties( WebGLRenderTarget.prototype, {\n\twrapS: {\n\t\tget: function () {\n\t\t\tconsole.warn( 'THREE.WebGLRenderTarget: .wrapS is now .texture.wrapS.' );\n\t\t\treturn this.texture.wrapS;\n\t\t},\n\t\tset: function ( value ) {\n\t\t\tconsole.warn( 'THREE.WebGLRenderTarget: .wrapS is now .texture.wrapS.' );\n\t\t\tthis.texture.wrapS = value;\n\t\t}\n\t},\n\twrapT: {\n\t\tget: function () {\n\t\t\tconsole.warn( 'THREE.WebGLRenderTarget: .wrapT is now .texture.wrapT.' );\n\t\t\treturn this.texture.wrapT;\n\t\t},\n\t\tset: function ( value ) {\n\t\t\tconsole.warn( 'THREE.WebGLRenderTarget: .wrapT is now .texture.wrapT.' );\n\t\t\tthis.texture.wrapT = value;\n\t\t}\n\t},\n\tmagFilter: {\n\t\tget: function () {\n\t\t\tconsole.warn( 'THREE.WebGLRenderTarget: .magFilter is now .texture.magFilter.' );\n\t\t\treturn this.texture.magFilter;\n\t\t},\n\t\tset: function ( value ) {\n\t\t\tconsole.warn( 'THREE.WebGLRenderTarget: .magFilter is now .texture.magFilter.' );\n\t\t\tthis.texture.magFilter = value;\n\t\t}\n\t},\n\tminFilter: {\n\t\tget: function () {\n\t\t\tconsole.warn( 'THREE.WebGLRenderTarget: .minFilter is now .texture.minFilter.' );\n\t\t\treturn this.texture.minFilter;\n\t\t},\n\t\tset: function ( value ) {\n\t\t\tconsole.warn( 'THREE.WebGLRenderTarget: .minFilter is now .texture.minFilter.' );\n\t\t\tthis.texture.minFilter = value;\n\t\t}\n\t},\n\tanisotropy: {\n\t\tget: function () {\n\t\t\tconsole.warn( 'THREE.WebGLRenderTarget: .anisotropy is now .texture.anisotropy.' );\n\t\t\treturn this.texture.anisotropy;\n\t\t},\n\t\tset: function ( value ) {\n\t\t\tconsole.warn( 'THREE.WebGLRenderTarget: .anisotropy is now .texture.anisotropy.' );\n\t\t\tthis.texture.anisotropy = value;\n\t\t}\n\t},\n\toffset: {\n\t\tget: function () {\n\t\t\tconsole.warn( 'THREE.WebGLRenderTarget: .offset is now .texture.offset.' );\n\t\t\treturn this.texture.offset;\n\t\t},\n\t\tset: function ( value ) {\n\t\t\tconsole.warn( 'THREE.WebGLRenderTarget: .offset is now .texture.offset.' );\n\t\t\tthis.texture.offset = value;\n\t\t}\n\t},\n\trepeat: {\n\t\tget: function () {\n\t\t\tconsole.warn( 'THREE.WebGLRenderTarget: .repeat is now .texture.repeat.' );\n\t\t\treturn this.texture.repeat;\n\t\t},\n\t\tset: function ( value ) {\n\t\t\tconsole.warn( 'THREE.WebGLRenderTarget: .repeat is now .texture.repeat.' );\n\t\t\tthis.texture.repeat = value;\n\t\t}\n\t},\n\tformat: {\n\t\tget: function () {\n\t\t\tconsole.warn( 'THREE.WebGLRenderTarget: .format is now .texture.format.' );\n\t\t\treturn this.texture.format;\n\t\t},\n\t\tset: function ( value ) {\n\t\t\tconsole.warn( 'THREE.WebGLRenderTarget: .format is now .texture.format.' );\n\t\t\tthis.texture.format = value;\n\t\t}\n\t},\n\ttype: {\n\t\tget: function () {\n\t\t\tconsole.warn( 'THREE.WebGLRenderTarget: .type is now .texture.type.' );\n\t\t\treturn this.texture.type;\n\t\t},\n\t\tset: function ( value ) {\n\t\t\tconsole.warn( 'THREE.WebGLRenderTarget: .type is now .texture.type.' );\n\t\t\tthis.texture.type = value;\n\t\t}\n\t},\n\tgenerateMipmaps: {\n\t\tget: function () {\n\t\t\tconsole.warn( 'THREE.WebGLRenderTarget: .generateMipmaps is now .texture.generateMipmaps.' );\n\t\t\treturn this.texture.generateMipmaps;\n\t\t},\n\t\tset: function ( value ) {\n\t\t\tconsole.warn( 'THREE.WebGLRenderTarget: .generateMipmaps is now .texture.generateMipmaps.' );\n\t\t\tthis.texture.generateMipmaps = value;\n\t\t}\n\t}\n} );\n\n//\n\nObject.assign( Audio.prototype, {\n\tload: function ( file ) {\n\t\tconsole.warn( 'THREE.Audio: .load has been deprecated. Please use THREE.AudioLoader.' );\n\t\tvar scope = this;\n\t\tvar audioLoader = new AudioLoader();\n\t\taudioLoader.load( file, function ( buffer ) {\n\t\t\tscope.setBuffer( buffer );\n\t\t} );\n\t\treturn this;\n\t}\n} );\n\nObject.assign( AudioAnalyser.prototype, {\n\tgetData: function ( file ) {\n\t\tconsole.warn( 'THREE.AudioAnalyser: .getData() is now .getFrequencyData().' );\n\t\treturn this.getFrequencyData();\n\t}\n} );\n\n//\n\nexport var GeometryUtils = {\n\n\tmerge: function ( geometry1, geometry2, materialIndexOffset ) {\n\n\t\tconsole.warn( 'THREE.GeometryUtils: .merge() has been moved to Geometry. Use geometry.merge( geometry2, matrix, materialIndexOffset ) instead.' );\n\n\t\tvar matrix;\n\n\t\tif ( geometry2.isMesh ) {\n\n\t\t\tgeometry2.matrixAutoUpdate && geometry2.updateMatrix();\n\n\t\t\tmatrix = geometry2.matrix;\n\t\t\tgeometry2 = geometry2.geometry;\n\n\t\t}\n\n\t\tgeometry1.merge( geometry2, matrix, materialIndexOffset );\n\n\t},\n\n\tcenter: function ( geometry ) {\n\n\t\tconsole.warn( 'THREE.GeometryUtils: .center() has been moved to Geometry. Use geometry.center() instead.' );\n\t\treturn geometry.center();\n\n\t}\n\n};\n\nexport var ImageUtils = {\n\n\tcrossOrigin: undefined,\n\n\tloadTexture: function ( url, mapping, onLoad, onError ) {\n\n\t\tconsole.warn( 'THREE.ImageUtils.loadTexture has been deprecated. Use THREE.TextureLoader() instead.' );\n\n\t\tvar loader = new TextureLoader();\n\t\tloader.setCrossOrigin( this.crossOrigin );\n\n\t\tvar texture = loader.load( url, onLoad, undefined, onError );\n\n\t\tif ( mapping ) texture.mapping = mapping;\n\n\t\treturn texture;\n\n\t},\n\n\tloadTextureCube: function ( urls, mapping, onLoad, onError ) {\n\n\t\tconsole.warn( 'THREE.ImageUtils.loadTextureCube has been deprecated. Use THREE.CubeTextureLoader() instead.' );\n\n\t\tvar loader = new CubeTextureLoader();\n\t\tloader.setCrossOrigin( this.crossOrigin );\n\n\t\tvar texture = loader.load( urls, onLoad, undefined, onError );\n\n\t\tif ( mapping ) texture.mapping = mapping;\n\n\t\treturn texture;\n\n\t},\n\n\tloadCompressedTexture: function () {\n\n\t\tconsole.error( 'THREE.ImageUtils.loadCompressedTexture has been removed. Use THREE.DDSLoader instead.' );\n\n\t},\n\n\tloadCompressedTextureCube: function () {\n\n\t\tconsole.error( 'THREE.ImageUtils.loadCompressedTextureCube has been removed. Use THREE.DDSLoader instead.' );\n\n\t}\n\n};\n\n//\n\nexport function Projector () {\n\n\tconsole.error( 'THREE.Projector has been moved to /examples/js/renderers/Projector.js.' );\n\n\tthis.projectVector = function ( vector, camera ) {\n\n\t\tconsole.warn( 'THREE.Projector: .projectVector() is now vector.project().' );\n\t\tvector.project( camera );\n\n\t};\n\n\tthis.unprojectVector = function ( vector, camera ) {\n\n\t\tconsole.warn( 'THREE.Projector: .unprojectVector() is now vector.unproject().' );\n\t\tvector.unproject( camera );\n\n\t};\n\n\tthis.pickingRay = function ( vector, camera ) {\n\n\t\tconsole.error( 'THREE.Projector: .pickingRay() is now raycaster.setFromCamera().' );\n\n\t};\n\n}\n\n//\n\nexport function CanvasRenderer () {\n\n\tconsole.error( 'THREE.CanvasRenderer has been moved to /examples/js/renderers/CanvasRenderer.js' );\n\n\tthis.domElement = document.createElementNS( 'http://www.w3.org/1999/xhtml', 'canvas' );\n\tthis.clear = function () {};\n\tthis.render = function () {};\n\tthis.setClearColor = function () {};\n\tthis.setSize = function () {};\n\n}\n"],"names":["count"],"mappings":"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E,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,CAAC;GACtC,IAAI,CAAC,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,CAAC;GACtC,IAAI,CAAC,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,CAAC;;GAEtC,MAAM,KAAK,KAAK,KAAK,KAAK,GAAG;;GAE7B,IAAI,CAAC,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,CAAC;GACtC,IAAI,CAAC,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,CAAC;GACtC,IAAI,CAAC,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,CAAC;GACtC,IAAI,CAAC,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,CAAC;;GAEtC,MAAM,KAAK,KAAK,KAAK,KAAK,GAAG;;GAE7B,IAAI,CAAC,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,CAAC;GACtC,IAAI,CAAC,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,CAAC;GACtC,IAAI,CAAC,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,CAAC;GACtC,IAAI,CAAC,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,CAAC;;GAEtC,MAAM,KAAK,KAAK,KAAK,KAAK,GAAG;;GAE7B,IAAI,CAAC,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,CAAC;GACtC,IAAI,CAAC,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,CA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AAE,CAAC,EAAE,EAAE,GAAG,GAAG,EAAE,EAAE,CAAC,EAAE,EAAE,GAAG,GAAG,EAAE,EAAE,EAAE,EAAE,EAAE,GAAG,GAAG,EAAE,EAAE,EAAE,EAAE,CAAC;;EAEjE,EAAE,EAAE,CAAC,EAAE,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,CAAC;EACxD,EAAE,EAAE,CAAC,EAAE,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,CAAC;EACxD,EAAE,EAAE,CAAC,EAAE,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,CAAC;EACxD,EAAE,EAAE,EAAE,EAAE,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,CAAC;;EAEzD,EAAE,EAAE,CAAC,EAAE,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,CAAC;EACxD,EAAE,EAAE,CAAC,EAAE,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,CAAC;EACxD,EAAE,EAAE,CAAC,EAAE,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,CAAC;EACxD,EAAE,EAAE,EAAE,EAAE,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,CAAC;;EAEzD,EAAE,EAAE,CAAC,EAAE,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,CAAC;EACxD,EAAE,EAAE,CAAC,EAAE,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAA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E,CAAC,EAAE,EAAE,GAAG,GAAG,EAAE,EAAE,CAAC,EAAE,EAAE,GAAG,GAAG,EAAE,EAAE,CAAC,EAAE;GAC1D,GAAG,GAAG,EAAE,EAAE,CAAC,EAAE,EAAE,GAAG,GAAG,EAAE,EAAE,CAAC,EAAE,EAAE,GAAG,GAAG,EAAE,EAAE,CAAC,EAAE,EAAE,GAAG,GAAG,EAAE,EAAE,CAAC,EAAE;GAC1D,GAAG,GAAG,EAAE,EAAE,CAAC,EAAE,EAAE,GAAG,GAAG,EAAE,EAAE,CAAC,EAAE,EAAE,GAAG,GAAG,EAAE,EAAE,EAAE,EAAE,EAAE,GAAG,GAAG,EAAE,EAAE,EAAE,EAAE;GAC5D,GAAG,GAAG,EAAE,EAAE,EAAE,EAAE,EAAE,GAAG,GAAG,EAAE,EAAE,EAAE,EAAE,EAAE,GAAG,GAAG,EAAE,EAAE,EAAE,EAAE,EAAE,GAAG,GAAG,EAAE,EAAE,EAAE,EAAE;;GAE9D,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG;GAC/G,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG;GAC/G,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG;GAC/G,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,CAAC;;EAEjH,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,CAAC;;EAExD,KAAK,GAAG,KAAK,CAAC,GAAG;;GAEhB,IAAI,GAAG,GAAG,mEAAmE,CAAC;;GAE9E,KAAK,iBAAiB,KAAK,IAAI,GAAG;;IAEjC,MAAM,IAAI,KAAK,EAAE,GAAG,EAAE,CAAC;;IAEvB,MAAM;;IAEN,OAAO,CAAC,IAAI,EAAE,GAAG,EAAE,CAAC;;IAEpB;;GAED,OAAO,IAAI,CAAC,QAAQ,EAAE,CAAC;;GAEvB;;EAED,IAAI,MAAM,GAAG,CAAC,GAAG,GAAG,CAAC;;EAErB,EAAE,EAAE,CAAC,EAAE,GAAG,GAAG,GAAG,MAAM,CAAC;EACvB,EAAE,EAAE,CAAC,EAAE,GAAG,EAAE,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,EAAE,GAAG,MAAM,CAAC;EACjI,EAAE,EAAE,CAAC,EAAE,GAAG,EAAE,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,EAAE,GAAG,MAAM,CAAC;EACjI,EAAE,EAAE,CAAC,EAAE,GAAG,EAAE,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,EAAE,GAAG,MAAM,CAAC;;EAEjI,EAAE,EAAE,CAAC,EAAE,GAAG,GAAG,GAAG,MAAM,CAAC;EACvB,EAAE,EAAE,CAAC,EAAE,GAAG,EAAE,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,EAAE,GAAG,MAAM,CAAC;EACjI,EAAE,EAAE,CAAC,EAAE,GAAG,EAAE,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,EAAE,GAAG,MAAM,CAAC;EACjI,EAAE,EAAE,CAAC,EAAE,GAAG,EAAE,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,EAAE,GAAG,MAAM,CAAC;;EAEjI,EAAE,EAAE,CAAC,EAAE,GAAG,GAAG,GAAG,MAAM,CAAC;EACvB,EAAE,EAAE,CAAC,EAAE,GAAG,EAAE,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,EAAE,GAAG,MAAM,CAAC;EACjI,EAAE,EAAE,EAAE,EAAE,GAAG,EAAE,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAA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"} \ No newline at end of file