From a2d21ca54e0979124b9295b35deb54a7bc8e527c Mon Sep 17 00:00:00 2001 From: ASkupek Date: Sun, 2 Dec 2018 20:02:22 +0100 Subject: [PATCH] Formation the code. --- RG/FlyControls.js | 283 - RG/OrbitControls.js | 1051 - RG/desert.html | 23 - RG/object/MTLLoader.js | 551 - RG/object/ObjectLoader.js | 670 - RG/park.html | 23 - RG_WebPage_Visualization/FlyControls.js | 283 + RG_WebPage_Visualization/OrbitControls.js | 1051 + RG_WebPage_Visualization/desert.html | 26 + {RG => RG_WebPage_Visualization}/desert.js | 9 +- .../dron2/Drone_obj.mtl | 0 RG_WebPage_Visualization/dron2/MTLLoader.js | 551 + .../dron2/ObjectLoader.js | 670 + .../dron2/textures/Flying drone_Ao_2.jpg | Bin .../dron2/textures/Flying drone_Nor_2.jpg | Bin .../dron2/textures/Flying drone_col.jpg | Bin .../dron2/textures/Ground_Ao.jpg | Bin .../dron2/textures/Ground_Col.jpg | Bin .../dron2/textures/Ground_Detail.jpg | Bin .../dron2/textures/Ground_Nor.jpg | Bin .../images/negx.jpg | Bin .../images/negy.jpg | Bin .../images/negz.jpg | Bin .../images/posx.jpg | Bin .../images/posy.jpg | Bin .../images/posz.jpg | Bin .../images1/back.png | Bin .../images1/down.png | Bin .../images1/front.png | Bin .../images1/left.png | Bin .../images1/right.png | Bin .../images1/up.png | Bin {RG => RG_WebPage_Visualization}/index.html | 62 +- {RG => RG_WebPage_Visualization}/index.php | 0 .../loadModel1.js | 4 +- .../object/Drone_obj.mtl | 0 .../object}/MTLLoader.js | 0 .../object}/ObjectLoader.js | 0 .../object/textures/Flying drone_Ao_2.jpg | Bin .../object/textures/Flying drone_Nor_2.jpg | Bin .../object/textures/Flying drone_col.jpg | Bin .../object/textures/Ground_Ao.jpg | Bin .../object/textures/Ground_Col.jpg | Bin .../object/textures/Ground_Detail.jpg | Bin .../object/textures/Ground_Nor.jpg | Bin RG_WebPage_Visualization/park.html | 26 + {RG => RG_WebPage_Visualization}/park.js | 17 +- {RG => RG_WebPage_Visualization}/three.js | 22997 ++++++++-------- 48 files changed, 14164 insertions(+), 14133 deletions(-) delete mode 100644 RG/FlyControls.js delete mode 100644 RG/OrbitControls.js delete mode 100644 RG/desert.html delete mode 100644 RG/object/MTLLoader.js delete mode 100644 RG/object/ObjectLoader.js delete mode 100644 RG/park.html create mode 100644 RG_WebPage_Visualization/FlyControls.js create mode 100644 RG_WebPage_Visualization/OrbitControls.js create mode 100644 RG_WebPage_Visualization/desert.html rename {RG => RG_WebPage_Visualization}/desert.js (95%) rename {RG => RG_WebPage_Visualization}/dron2/Drone_obj.mtl (100%) create mode 100644 RG_WebPage_Visualization/dron2/MTLLoader.js create mode 100644 RG_WebPage_Visualization/dron2/ObjectLoader.js rename {RG => RG_WebPage_Visualization}/dron2/textures/Flying drone_Ao_2.jpg (100%) rename {RG => RG_WebPage_Visualization}/dron2/textures/Flying drone_Nor_2.jpg (100%) rename {RG => RG_WebPage_Visualization}/dron2/textures/Flying drone_col.jpg (100%) rename {RG => RG_WebPage_Visualization}/dron2/textures/Ground_Ao.jpg (100%) rename {RG => RG_WebPage_Visualization}/dron2/textures/Ground_Col.jpg (100%) rename {RG => RG_WebPage_Visualization}/dron2/textures/Ground_Detail.jpg (100%) rename {RG => RG_WebPage_Visualization}/dron2/textures/Ground_Nor.jpg (100%) rename {RG => RG_WebPage_Visualization}/images/negx.jpg (100%) rename {RG => RG_WebPage_Visualization}/images/negy.jpg (100%) rename {RG => RG_WebPage_Visualization}/images/negz.jpg (100%) rename {RG => RG_WebPage_Visualization}/images/posx.jpg (100%) rename {RG => RG_WebPage_Visualization}/images/posy.jpg (100%) rename {RG => RG_WebPage_Visualization}/images/posz.jpg (100%) rename {RG => RG_WebPage_Visualization}/images1/back.png (100%) rename {RG => RG_WebPage_Visualization}/images1/down.png (100%) rename {RG => RG_WebPage_Visualization}/images1/front.png (100%) rename {RG => RG_WebPage_Visualization}/images1/left.png (100%) rename {RG => RG_WebPage_Visualization}/images1/right.png (100%) rename {RG => RG_WebPage_Visualization}/images1/up.png (100%) rename {RG => RG_WebPage_Visualization}/index.html (50%) rename {RG => RG_WebPage_Visualization}/index.php (100%) rename {RG => RG_WebPage_Visualization}/loadModel1.js (94%) rename {RG => RG_WebPage_Visualization}/object/Drone_obj.mtl (100%) rename {RG/dron2 => RG_WebPage_Visualization/object}/MTLLoader.js (100%) rename {RG/dron2 => RG_WebPage_Visualization/object}/ObjectLoader.js (100%) rename {RG => RG_WebPage_Visualization}/object/textures/Flying drone_Ao_2.jpg (100%) rename {RG => RG_WebPage_Visualization}/object/textures/Flying drone_Nor_2.jpg (100%) rename {RG => RG_WebPage_Visualization}/object/textures/Flying drone_col.jpg (100%) rename {RG => RG_WebPage_Visualization}/object/textures/Ground_Ao.jpg (100%) rename {RG => RG_WebPage_Visualization}/object/textures/Ground_Col.jpg (100%) rename {RG => RG_WebPage_Visualization}/object/textures/Ground_Detail.jpg (100%) rename {RG => RG_WebPage_Visualization}/object/textures/Ground_Nor.jpg (100%) create mode 100644 RG_WebPage_Visualization/park.html rename {RG => RG_WebPage_Visualization}/park.js (93%) rename {RG => RG_WebPage_Visualization}/three.js (52%) diff --git a/RG/FlyControls.js b/RG/FlyControls.js deleted file mode 100644 index 1cc6c60..0000000 --- a/RG/FlyControls.js +++ /dev/null @@ -1,283 +0,0 @@ -/** - * @author James Baicoianu / http://www.baicoianu.com/ - */ - -THREE.FlyControls = function ( object, domElement ) { - - this.object = object; - - this.domElement = ( domElement !== undefined ) ? domElement : document; - if ( domElement ) this.domElement.setAttribute( 'tabindex', - 1 ); - - // API - - this.movementSpeed = 1.0; - this.rollSpeed = 0.005; - - this.dragToLook = false; - this.autoForward = false; - - // disable default target object behavior - - // internals - - this.tmpQuaternion = new THREE.Quaternion(); - - this.mouseStatus = 0; - - this.moveState = { up: 0, down: 0, left: 0, right: 0, forward: 0, back: 0, pitchUp: 0, pitchDown: 0, yawLeft: 0, yawRight: 0, rollLeft: 0, rollRight: 0 }; - this.moveVector = new THREE.Vector3( 0, 0, 0 ); - this.rotationVector = new THREE.Vector3( 0, 0, 0 ); - - this.keydown = function ( event ) { - - if ( event.altKey ) { - - return; - - } - - //event.preventDefault(); - - switch ( event.keyCode ) { - - case 16: /* shift */ this.movementSpeedMultiplier = .1; break; - - case 87: /*W*/ this.moveState.forward = 1; break; - case 83: /*S*/ this.moveState.back = 1; break; - - case 65: /*A*/ this.moveState.left = 1; break; - case 68: /*D*/ this.moveState.right = 1; break; - - case 82: /*R*/ this.moveState.up = 1; break; - case 70: /*F*/ this.moveState.down = 1; break; - - case 38: /*up*/ this.moveState.pitchUp = 1; break; - case 40: /*down*/ this.moveState.pitchDown = 1; break; - - case 37: /*left*/ this.moveState.yawLeft = 1; break; - case 39: /*right*/ this.moveState.yawRight = 1; break; - - case 81: /*Q*/ this.moveState.rollLeft = 1; break; - case 69: /*E*/ this.moveState.rollRight = 1; break; - - } - - this.updateMovementVector(); - this.updateRotationVector(); - - }; - - this.keyup = function ( event ) { - - switch ( event.keyCode ) { - - case 16: /* shift */ this.movementSpeedMultiplier = 1; break; - - case 87: /*W*/ this.moveState.forward = 0; break; - case 83: /*S*/ this.moveState.back = 0; break; - - case 65: /*A*/ this.moveState.left = 0; break; - case 68: /*D*/ this.moveState.right = 0; break; - - case 82: /*R*/ this.moveState.up = 0; break; - case 70: /*F*/ this.moveState.down = 0; break; - - case 38: /*up*/ this.moveState.pitchUp = 0; break; - case 40: /*down*/ this.moveState.pitchDown = 0; break; - - case 37: /*left*/ this.moveState.yawLeft = 0; break; - case 39: /*right*/ this.moveState.yawRight = 0; break; - - case 81: /*Q*/ this.moveState.rollLeft = 0; break; - case 69: /*E*/ this.moveState.rollRight = 0; break; - - } - - this.updateMovementVector(); - this.updateRotationVector(); - - }; - - this.mousedown = function ( event ) { - - if ( this.domElement !== document ) { - - this.domElement.focus(); - - } - - event.preventDefault(); - event.stopPropagation(); - - if ( this.dragToLook ) { - - this.mouseStatus ++; - - } else { - - switch ( event.button ) { - - case 0: this.moveState.forward = 1; break; - case 2: this.moveState.back = 1; break; - - } - - this.updateMovementVector(); - - } - - }; - - this.mousemove = function ( event ) { - - if ( ! this.dragToLook || this.mouseStatus > 0 ) { - - var container = this.getContainerDimensions(); - var halfWidth = container.size[ 0 ] / 2; - var halfHeight = container.size[ 1 ] / 2; - - this.moveState.yawLeft = - ( ( event.pageX - container.offset[ 0 ] ) - halfWidth ) / halfWidth; - this.moveState.pitchDown = ( ( event.pageY - container.offset[ 1 ] ) - halfHeight ) / halfHeight; - - this.updateRotationVector(); - - } - - }; - - this.mouseup = function ( event ) { - - event.preventDefault(); - event.stopPropagation(); - - if ( this.dragToLook ) { - - this.mouseStatus --; - - this.moveState.yawLeft = this.moveState.pitchDown = 0; - - } else { - - switch ( event.button ) { - - case 0: this.moveState.forward = 0; break; - case 2: this.moveState.back = 0; break; - - } - - this.updateMovementVector(); - - } - - this.updateRotationVector(); - - }; - - this.update = function ( delta ) { - - var moveMult = delta * this.movementSpeed; - var rotMult = delta * this.rollSpeed; - - this.object.translateX( this.moveVector.x * moveMult ); - this.object.translateY( this.moveVector.y * moveMult ); - this.object.translateZ( this.moveVector.z * moveMult ); - - this.tmpQuaternion.set( this.rotationVector.x * rotMult, this.rotationVector.y * rotMult, this.rotationVector.z * rotMult, 1 ).normalize(); - this.object.quaternion.multiply( this.tmpQuaternion ); - - // expose the rotation vector for convenience - this.object.rotation.setFromQuaternion( this.object.quaternion, this.object.rotation.order ); - - - }; - - this.updateMovementVector = function () { - - var forward = ( this.moveState.forward || ( this.autoForward && ! this.moveState.back ) ) ? 1 : 0; - - this.moveVector.x = ( - this.moveState.left + this.moveState.right ); - this.moveVector.y = ( - this.moveState.down + this.moveState.up ); - this.moveVector.z = ( - forward + this.moveState.back ); - - //console.log( 'move:', [ this.moveVector.x, this.moveVector.y, this.moveVector.z ] ); - - }; - - this.updateRotationVector = function () { - - this.rotationVector.x = ( - this.moveState.pitchDown + this.moveState.pitchUp ); - this.rotationVector.y = ( - this.moveState.yawRight + this.moveState.yawLeft ); - this.rotationVector.z = ( - this.moveState.rollRight + this.moveState.rollLeft ); - - //console.log( 'rotate:', [ this.rotationVector.x, this.rotationVector.y, this.rotationVector.z ] ); - - }; - - this.getContainerDimensions = function () { - - if ( this.domElement != document ) { - - return { - size: [ this.domElement.offsetWidth, this.domElement.offsetHeight ], - offset: [ this.domElement.offsetLeft, this.domElement.offsetTop ] - }; - - } else { - - return { - size: [ window.innerWidth, window.innerHeight ], - offset: [ 0, 0 ] - }; - - } - - }; - - function bind( scope, fn ) { - - return function () { - - fn.apply( scope, arguments ); - - }; - - } - - function contextmenu( event ) { - - event.preventDefault(); - - } - - this.dispose = function () { - - this.domElement.removeEventListener( 'contextmenu', contextmenu, false ); - this.domElement.removeEventListener( 'mousedown', _mousedown, false ); - this.domElement.removeEventListener( 'mousemove', _mousemove, false ); - this.domElement.removeEventListener( 'mouseup', _mouseup, false ); - - window.removeEventListener( 'keydown', _keydown, false ); - window.removeEventListener( 'keyup', _keyup, false ); - - }; - - var _mousemove = bind( this, this.mousemove ); - var _mousedown = bind( this, this.mousedown ); - var _mouseup = bind( this, this.mouseup ); - var _keydown = bind( this, this.keydown ); - var _keyup = bind( this, this.keyup ); - - this.domElement.addEventListener( 'contextmenu', contextmenu, false ); - - this.domElement.addEventListener( 'mousemove', _mousemove, false ); - this.domElement.addEventListener( 'mousedown', _mousedown, false ); - this.domElement.addEventListener( 'mouseup', _mouseup, false ); - - window.addEventListener( 'keydown', _keydown, false ); - window.addEventListener( 'keyup', _keyup, false ); - - this.updateMovementVector(); - this.updateRotationVector(); - -}; diff --git a/RG/OrbitControls.js b/RG/OrbitControls.js deleted file mode 100644 index 001dc53..0000000 --- a/RG/OrbitControls.js +++ /dev/null @@ -1,1051 +0,0 @@ -/** - * @author qiao / https://github.com/qiao - * @author mrdoob / http://mrdoob.com - * @author alteredq / http://alteredqualia.com/ - * @author WestLangley / http://github.com/WestLangley - * @author erich666 / http://erichaines.com - */ - -// This set of controls performs orbiting, dollying (zooming), and panning. -// Unlike TrackballControls, it maintains the "up" direction object.up (+Y by default). -// -// Orbit - left mouse / touch: one-finger move -// Zoom - middle mouse, or mousewheel / touch: two-finger spread or squish -// Pan - right mouse, or left mouse + ctrl/meta/shiftKey, or arrow keys / touch: two-finger move - -THREE.OrbitControls = function ( object, domElement ) { - - this.object = object; - - this.domElement = ( domElement !== undefined ) ? domElement : document; - - // Set to false to disable this control - this.enabled = true; - - // "target" sets the location of focus, where the object orbits around - this.target = new THREE.Vector3(); - - // How far you can dolly in and out ( PerspectiveCamera only ) - this.minDistance = 0; - this.maxDistance = Infinity; - - // How far you can zoom in and out ( OrthographicCamera only ) - this.minZoom = 0; - this.maxZoom = Infinity; - - // How far you can orbit vertically, upper and lower limits. - // Range is 0 to Math.PI radians. - this.minPolarAngle = 0; // radians - this.maxPolarAngle = Math.PI; // radians - - // How far you can orbit horizontally, upper and lower limits. - // If set, must be a sub-interval of the interval [ - Math.PI, Math.PI ]. - this.minAzimuthAngle = - Infinity; // radians - this.maxAzimuthAngle = Infinity; // radians - - // Set to true to enable damping (inertia) - // If damping is enabled, you must call controls.update() in your animation loop - this.enableDamping = false; - this.dampingFactor = 0.25; - - // This option actually enables dollying in and out; left as "zoom" for backwards compatibility. - // Set to false to disable zooming - this.enableZoom = true; - this.zoomSpeed = 1.0; - - // Set to false to disable rotating - this.enableRotate = true; - this.rotateSpeed = 1.0; - - // Set to false to disable panning - this.enablePan = true; - this.panSpeed = 1.0; - this.screenSpacePanning = false; // if true, pan in screen-space - this.keyPanSpeed = 7.0; // pixels moved per arrow key push - - // Set to true to automatically rotate around the target - // If auto-rotate is enabled, you must call controls.update() in your animation loop - this.autoRotate = false; - this.autoRotateSpeed = 2.0; // 30 seconds per round when fps is 60 - - // Set to false to disable use of the keys - this.enableKeys = true; - - // The four arrow keys - this.keys = { LEFT: 37, UP: 38, RIGHT: 39, BOTTOM: 40 }; - - // Mouse buttons - this.mouseButtons = { LEFT: THREE.MOUSE.LEFT, MIDDLE: THREE.MOUSE.MIDDLE, RIGHT: THREE.MOUSE.RIGHT }; - - // for reset - this.target0 = this.target.clone(); - this.position0 = this.object.position.clone(); - this.zoom0 = this.object.zoom; - - // - // public methods - // - - this.getPolarAngle = function () { - - return spherical.phi; - - }; - - this.getAzimuthalAngle = function () { - - return spherical.theta; - - }; - - this.saveState = function () { - - scope.target0.copy( scope.target ); - scope.position0.copy( scope.object.position ); - scope.zoom0 = scope.object.zoom; - - }; - - this.reset = function () { - - scope.target.copy( scope.target0 ); - scope.object.position.copy( scope.position0 ); - scope.object.zoom = scope.zoom0; - - scope.object.updateProjectionMatrix(); - scope.dispatchEvent( changeEvent ); - - scope.update(); - - state = STATE.NONE; - - }; - - // this method is exposed, but perhaps it would be better if we can make it private... - this.update = function () { - - var offset = new THREE.Vector3(); - - // so camera.up is the orbit axis - var quat = new THREE.Quaternion().setFromUnitVectors( object.up, new THREE.Vector3( 0, 1, 0 ) ); - var quatInverse = quat.clone().inverse(); - - var lastPosition = new THREE.Vector3(); - var lastQuaternion = new THREE.Quaternion(); - - return function update() { - - var position = scope.object.position; - - offset.copy( position ).sub( scope.target ); - - // rotate offset to "y-axis-is-up" space - offset.applyQuaternion( quat ); - - // angle from z-axis around y-axis - spherical.setFromVector3( offset ); - - if ( scope.autoRotate && state === STATE.NONE ) { - - rotateLeft( getAutoRotationAngle() ); - - } - - spherical.theta += sphericalDelta.theta; - spherical.phi += sphericalDelta.phi; - - // restrict theta to be between desired limits - spherical.theta = Math.max( scope.minAzimuthAngle, Math.min( scope.maxAzimuthAngle, spherical.theta ) ); - - // restrict phi to be between desired limits - spherical.phi = Math.max( scope.minPolarAngle, Math.min( scope.maxPolarAngle, spherical.phi ) ); - - spherical.makeSafe(); - - - spherical.radius *= scale; - - // restrict radius to be between desired limits - spherical.radius = Math.max( scope.minDistance, Math.min( scope.maxDistance, spherical.radius ) ); - - // move target to panned location - scope.target.add( panOffset ); - - offset.setFromSpherical( spherical ); - - // rotate offset back to "camera-up-vector-is-up" space - offset.applyQuaternion( quatInverse ); - - position.copy( scope.target ).add( offset ); - - scope.object.lookAt( scope.target ); - - if ( scope.enableDamping === true ) { - - sphericalDelta.theta *= ( 1 - scope.dampingFactor ); - sphericalDelta.phi *= ( 1 - scope.dampingFactor ); - - panOffset.multiplyScalar( 1 - scope.dampingFactor ); - - } else { - - sphericalDelta.set( 0, 0, 0 ); - - panOffset.set( 0, 0, 0 ); - - } - - scale = 1; - - // update condition is: - // min(camera displacement, camera rotation in radians)^2 > EPS - // using small-angle approximation cos(x/2) = 1 - x^2 / 8 - - if ( zoomChanged || - lastPosition.distanceToSquared( scope.object.position ) > EPS || - 8 * ( 1 - lastQuaternion.dot( scope.object.quaternion ) ) > EPS ) { - - scope.dispatchEvent( changeEvent ); - - lastPosition.copy( scope.object.position ); - lastQuaternion.copy( scope.object.quaternion ); - zoomChanged = false; - - return true; - - } - - return false; - - }; - - }(); - - this.dispose = function () { - - scope.domElement.removeEventListener( 'contextmenu', onContextMenu, false ); - scope.domElement.removeEventListener( 'mousedown', onMouseDown, false ); - scope.domElement.removeEventListener( 'wheel', onMouseWheel, false ); - - scope.domElement.removeEventListener( 'touchstart', onTouchStart, false ); - scope.domElement.removeEventListener( 'touchend', onTouchEnd, false ); - scope.domElement.removeEventListener( 'touchmove', onTouchMove, false ); - - document.removeEventListener( 'mousemove', onMouseMove, false ); - document.removeEventListener( 'mouseup', onMouseUp, false ); - - window.removeEventListener( 'keydown', onKeyDown, false ); - - //scope.dispatchEvent( { type: 'dispose' } ); // should this be added here? - - }; - - // - // internals - // - - var scope = this; - - var changeEvent = { type: 'change' }; - var startEvent = { type: 'start' }; - var endEvent = { type: 'end' }; - - var STATE = { NONE: - 1, ROTATE: 0, DOLLY: 1, PAN: 2, TOUCH_ROTATE: 3, TOUCH_DOLLY_PAN: 4 }; - - var state = STATE.NONE; - - var EPS = 0.000001; - - // current position in spherical coordinates - var spherical = new THREE.Spherical(); - var sphericalDelta = new THREE.Spherical(); - - var scale = 1; - var panOffset = new THREE.Vector3(); - var zoomChanged = false; - - var rotateStart = new THREE.Vector2(); - var rotateEnd = new THREE.Vector2(); - var rotateDelta = new THREE.Vector2(); - - var panStart = new THREE.Vector2(); - var panEnd = new THREE.Vector2(); - var panDelta = new THREE.Vector2(); - - var dollyStart = new THREE.Vector2(); - var dollyEnd = new THREE.Vector2(); - var dollyDelta = new THREE.Vector2(); - - function getAutoRotationAngle() { - - return 2 * Math.PI / 60 / 60 * scope.autoRotateSpeed; - - } - - function getZoomScale() { - - return Math.pow( 0.95, scope.zoomSpeed ); - - } - - function rotateLeft( angle ) { - - sphericalDelta.theta -= angle; - - } - - function rotateUp( angle ) { - - sphericalDelta.phi -= angle; - - } - - var panLeft = function () { - - var v = new THREE.Vector3(); - - return function panLeft( distance, objectMatrix ) { - - v.setFromMatrixColumn( objectMatrix, 0 ); // get X column of objectMatrix - v.multiplyScalar( - distance ); - - panOffset.add( v ); - - }; - - }(); - - var panUp = function () { - - var v = new THREE.Vector3(); - - return function panUp( distance, objectMatrix ) { - - if ( scope.screenSpacePanning === true ) { - - v.setFromMatrixColumn( objectMatrix, 1 ); - - } else { - - v.setFromMatrixColumn( objectMatrix, 0 ); - v.crossVectors( scope.object.up, v ); - - } - - v.multiplyScalar( distance ); - - panOffset.add( v ); - - }; - - }(); - - // deltaX and deltaY are in pixels; right and down are positive - var pan = function () { - - var offset = new THREE.Vector3(); - - return function pan( deltaX, deltaY ) { - - var element = scope.domElement === document ? scope.domElement.body : scope.domElement; - - if ( scope.object.isPerspectiveCamera ) { - - // perspective - var position = scope.object.position; - offset.copy( position ).sub( scope.target ); - var targetDistance = offset.length(); - - // half of the fov is center to top of screen - targetDistance *= Math.tan( ( scope.object.fov / 2 ) * Math.PI / 180.0 ); - - // we use only clientHeight here so aspect ratio does not distort speed - panLeft( 2 * deltaX * targetDistance / element.clientHeight, scope.object.matrix ); - panUp( 2 * deltaY * targetDistance / element.clientHeight, scope.object.matrix ); - - } else if ( scope.object.isOrthographicCamera ) { - - // orthographic - panLeft( deltaX * ( scope.object.right - scope.object.left ) / scope.object.zoom / element.clientWidth, scope.object.matrix ); - panUp( deltaY * ( scope.object.top - scope.object.bottom ) / scope.object.zoom / element.clientHeight, scope.object.matrix ); - - } else { - - // camera neither orthographic nor perspective - console.warn( 'WARNING: OrbitControls.js encountered an unknown camera type - pan disabled.' ); - scope.enablePan = false; - - } - - }; - - }(); - - function dollyIn( dollyScale ) { - - if ( scope.object.isPerspectiveCamera ) { - - scale /= dollyScale; - - } else if ( scope.object.isOrthographicCamera ) { - - scope.object.zoom = Math.max( scope.minZoom, Math.min( scope.maxZoom, scope.object.zoom * dollyScale ) ); - scope.object.updateProjectionMatrix(); - zoomChanged = true; - - } else { - - console.warn( 'WARNING: OrbitControls.js encountered an unknown camera type - dolly/zoom disabled.' ); - scope.enableZoom = false; - - } - - } - - function dollyOut( dollyScale ) { - - if ( scope.object.isPerspectiveCamera ) { - - scale *= dollyScale; - - } else if ( scope.object.isOrthographicCamera ) { - - scope.object.zoom = Math.max( scope.minZoom, Math.min( scope.maxZoom, scope.object.zoom / dollyScale ) ); - scope.object.updateProjectionMatrix(); - zoomChanged = true; - - } else { - - console.warn( 'WARNING: OrbitControls.js encountered an unknown camera type - dolly/zoom disabled.' ); - scope.enableZoom = false; - - } - - } - - // - // event callbacks - update the object state - // - - function handleMouseDownRotate( event ) { - - //console.log( 'handleMouseDownRotate' ); - - rotateStart.set( event.clientX, event.clientY ); - - } - - function handleMouseDownDolly( event ) { - - //console.log( 'handleMouseDownDolly' ); - - dollyStart.set( event.clientX, event.clientY ); - - } - - function handleMouseDownPan( event ) { - - //console.log( 'handleMouseDownPan' ); - - panStart.set( event.clientX, event.clientY ); - - } - - function handleMouseMoveRotate( event ) { - - //console.log( 'handleMouseMoveRotate' ); - - rotateEnd.set( event.clientX, event.clientY ); - - rotateDelta.subVectors( rotateEnd, rotateStart ).multiplyScalar( scope.rotateSpeed ); - - var element = scope.domElement === document ? scope.domElement.body : scope.domElement; - - rotateLeft( 2 * Math.PI * rotateDelta.x / element.clientHeight ); // yes, height - - rotateUp( 2 * Math.PI * rotateDelta.y / element.clientHeight ); - - rotateStart.copy( rotateEnd ); - - scope.update(); - - } - - function handleMouseMoveDolly( event ) { - - //console.log( 'handleMouseMoveDolly' ); - - dollyEnd.set( event.clientX, event.clientY ); - - dollyDelta.subVectors( dollyEnd, dollyStart ); - - if ( dollyDelta.y > 0 ) { - - dollyIn( getZoomScale() ); - - } else if ( dollyDelta.y < 0 ) { - - dollyOut( getZoomScale() ); - - } - - dollyStart.copy( dollyEnd ); - - scope.update(); - - } - - function handleMouseMovePan( event ) { - - //console.log( 'handleMouseMovePan' ); - - panEnd.set( event.clientX, event.clientY ); - - panDelta.subVectors( panEnd, panStart ).multiplyScalar( scope.panSpeed ); - - pan( panDelta.x, panDelta.y ); - - panStart.copy( panEnd ); - - scope.update(); - - } - - function handleMouseUp( event ) { - - // console.log( 'handleMouseUp' ); - - } - - function handleMouseWheel( event ) { - - // console.log( 'handleMouseWheel' ); - - if ( event.deltaY < 0 ) { - - dollyOut( getZoomScale() ); - - } else if ( event.deltaY > 0 ) { - - dollyIn( getZoomScale() ); - - } - - scope.update(); - - } - - function handleKeyDown( event ) { - - //console.log( 'handleKeyDown' ); - - switch ( event.keyCode ) { - - case scope.keys.UP: - pan( 0, scope.keyPanSpeed ); - scope.update(); - break; - - case scope.keys.BOTTOM: - pan( 0, - scope.keyPanSpeed ); - scope.update(); - break; - - case scope.keys.LEFT: - pan( scope.keyPanSpeed, 0 ); - scope.update(); - break; - - case scope.keys.RIGHT: - pan( - scope.keyPanSpeed, 0 ); - scope.update(); - break; - - } - - } - - function handleTouchStartRotate( event ) { - - //console.log( 'handleTouchStartRotate' ); - - rotateStart.set( event.touches[ 0 ].pageX, event.touches[ 0 ].pageY ); - - } - - function handleTouchStartDollyPan( event ) { - - //console.log( 'handleTouchStartDollyPan' ); - - if ( scope.enableZoom ) { - - var dx = event.touches[ 0 ].pageX - event.touches[ 1 ].pageX; - var dy = event.touches[ 0 ].pageY - event.touches[ 1 ].pageY; - - var distance = Math.sqrt( dx * dx + dy * dy ); - - dollyStart.set( 0, distance ); - - } - - if ( scope.enablePan ) { - - var x = 0.5 * ( event.touches[ 0 ].pageX + event.touches[ 1 ].pageX ); - var y = 0.5 * ( event.touches[ 0 ].pageY + event.touches[ 1 ].pageY ); - - panStart.set( x, y ); - - } - - } - - function handleTouchMoveRotate( event ) { - - //console.log( 'handleTouchMoveRotate' ); - - rotateEnd.set( event.touches[ 0 ].pageX, event.touches[ 0 ].pageY ); - - rotateDelta.subVectors( rotateEnd, rotateStart ).multiplyScalar( scope.rotateSpeed ); - - var element = scope.domElement === document ? scope.domElement.body : scope.domElement; - - rotateLeft( 2 * Math.PI * rotateDelta.x / element.clientHeight ); // yes, height - - rotateUp( 2 * Math.PI * rotateDelta.y / element.clientHeight ); - - rotateStart.copy( rotateEnd ); - - scope.update(); - - } - - function handleTouchMoveDollyPan( event ) { - - //console.log( 'handleTouchMoveDollyPan' ); - - if ( scope.enableZoom ) { - - var dx = event.touches[ 0 ].pageX - event.touches[ 1 ].pageX; - var dy = event.touches[ 0 ].pageY - event.touches[ 1 ].pageY; - - var distance = Math.sqrt( dx * dx + dy * dy ); - - dollyEnd.set( 0, distance ); - - dollyDelta.set( 0, Math.pow( dollyEnd.y / dollyStart.y, scope.zoomSpeed ) ); - - dollyIn( dollyDelta.y ); - - dollyStart.copy( dollyEnd ); - - } - - if ( scope.enablePan ) { - - var x = 0.5 * ( event.touches[ 0 ].pageX + event.touches[ 1 ].pageX ); - var y = 0.5 * ( event.touches[ 0 ].pageY + event.touches[ 1 ].pageY ); - - panEnd.set( x, y ); - - panDelta.subVectors( panEnd, panStart ).multiplyScalar( scope.panSpeed ); - - pan( panDelta.x, panDelta.y ); - - panStart.copy( panEnd ); - - } - - scope.update(); - - } - - function handleTouchEnd( event ) { - - //console.log( 'handleTouchEnd' ); - - } - - // - // event handlers - FSM: listen for events and reset state - // - - function onMouseDown( event ) { - - if ( scope.enabled === false ) return; - - event.preventDefault(); - - switch ( event.button ) { - - case scope.mouseButtons.LEFT: - - if ( event.ctrlKey || event.metaKey || event.shiftKey ) { - - if ( scope.enablePan === false ) return; - - handleMouseDownPan( event ); - - state = STATE.PAN; - - } else { - - if ( scope.enableRotate === false ) return; - - handleMouseDownRotate( event ); - - state = STATE.ROTATE; - - } - - break; - - case scope.mouseButtons.MIDDLE: - - if ( scope.enableZoom === false ) return; - - handleMouseDownDolly( event ); - - state = STATE.DOLLY; - - break; - - case scope.mouseButtons.RIGHT: - - if ( scope.enablePan === false ) return; - - handleMouseDownPan( event ); - - state = STATE.PAN; - - break; - - } - - if ( state !== STATE.NONE ) { - - document.addEventListener( 'mousemove', onMouseMove, false ); - document.addEventListener( 'mouseup', onMouseUp, false ); - - scope.dispatchEvent( startEvent ); - - } - - } - - function onMouseMove( event ) { - - if ( scope.enabled === false ) return; - - event.preventDefault(); - - switch ( state ) { - - case STATE.ROTATE: - - if ( scope.enableRotate === false ) return; - - handleMouseMoveRotate( event ); - - break; - - case STATE.DOLLY: - - if ( scope.enableZoom === false ) return; - - handleMouseMoveDolly( event ); - - break; - - case STATE.PAN: - - if ( scope.enablePan === false ) return; - - handleMouseMovePan( event ); - - break; - - } - - } - - function onMouseUp( event ) { - - if ( scope.enabled === false ) return; - - handleMouseUp( event ); - - document.removeEventListener( 'mousemove', onMouseMove, false ); - document.removeEventListener( 'mouseup', onMouseUp, false ); - - scope.dispatchEvent( endEvent ); - - state = STATE.NONE; - - } - - function onMouseWheel( event ) { - - if ( scope.enabled === false || scope.enableZoom === false || ( state !== STATE.NONE && state !== STATE.ROTATE ) ) return; - - event.preventDefault(); - event.stopPropagation(); - - scope.dispatchEvent( startEvent ); - - handleMouseWheel( event ); - - scope.dispatchEvent( endEvent ); - - } - - function onKeyDown( event ) { - - if ( scope.enabled === false || scope.enableKeys === false || scope.enablePan === false ) return; - - handleKeyDown( event ); - - } - - function onTouchStart( event ) { - - if ( scope.enabled === false ) return; - - event.preventDefault(); - - switch ( event.touches.length ) { - - case 1: // one-fingered touch: rotate - - if ( scope.enableRotate === false ) return; - - handleTouchStartRotate( event ); - - state = STATE.TOUCH_ROTATE; - - break; - - case 2: // two-fingered touch: dolly-pan - - if ( scope.enableZoom === false && scope.enablePan === false ) return; - - handleTouchStartDollyPan( event ); - - state = STATE.TOUCH_DOLLY_PAN; - - break; - - default: - - state = STATE.NONE; - - } - - if ( state !== STATE.NONE ) { - - scope.dispatchEvent( startEvent ); - - } - - } - - function onTouchMove( event ) { - - if ( scope.enabled === false ) return; - - event.preventDefault(); - event.stopPropagation(); - - switch ( event.touches.length ) { - - case 1: // one-fingered touch: rotate - - if ( scope.enableRotate === false ) return; - if ( state !== STATE.TOUCH_ROTATE ) return; // is this needed? - - handleTouchMoveRotate( event ); - - break; - - case 2: // two-fingered touch: dolly-pan - - if ( scope.enableZoom === false && scope.enablePan === false ) return; - if ( state !== STATE.TOUCH_DOLLY_PAN ) return; // is this needed? - - handleTouchMoveDollyPan( event ); - - break; - - default: - - state = STATE.NONE; - - } - - } - - function onTouchEnd( event ) { - - if ( scope.enabled === false ) return; - - handleTouchEnd( event ); - - scope.dispatchEvent( endEvent ); - - state = STATE.NONE; - - } - - function onContextMenu( event ) { - - if ( scope.enabled === false ) return; - - event.preventDefault(); - - } - - // - - scope.domElement.addEventListener( 'contextmenu', onContextMenu, false ); - - scope.domElement.addEventListener( 'mousedown', onMouseDown, false ); - scope.domElement.addEventListener( 'wheel', onMouseWheel, false ); - - scope.domElement.addEventListener( 'touchstart', onTouchStart, false ); - scope.domElement.addEventListener( 'touchend', onTouchEnd, false ); - scope.domElement.addEventListener( 'touchmove', onTouchMove, false ); - - window.addEventListener( 'keydown', onKeyDown, false ); - - // force an update at start - - this.update(); - -}; - -THREE.OrbitControls.prototype = Object.create( THREE.EventDispatcher.prototype ); -THREE.OrbitControls.prototype.constructor = THREE.OrbitControls; - -Object.defineProperties( THREE.OrbitControls.prototype, { - - center: { - - get: function () { - - console.warn( 'THREE.OrbitControls: .center has been renamed to .target' ); - return this.target; - - } - - }, - - // backward compatibility - - noZoom: { - - get: function () { - - console.warn( 'THREE.OrbitControls: .noZoom has been deprecated. Use .enableZoom instead.' ); - return ! this.enableZoom; - - }, - - set: function ( value ) { - - console.warn( 'THREE.OrbitControls: .noZoom has been deprecated. Use .enableZoom instead.' ); - this.enableZoom = ! value; - - } - - }, - - noRotate: { - - get: function () { - - console.warn( 'THREE.OrbitControls: .noRotate has been deprecated. Use .enableRotate instead.' ); - return ! this.enableRotate; - - }, - - set: function ( value ) { - - console.warn( 'THREE.OrbitControls: .noRotate has been deprecated. Use .enableRotate instead.' ); - this.enableRotate = ! value; - - } - - }, - - noPan: { - - get: function () { - - console.warn( 'THREE.OrbitControls: .noPan has been deprecated. Use .enablePan instead.' ); - return ! this.enablePan; - - }, - - set: function ( value ) { - - console.warn( 'THREE.OrbitControls: .noPan has been deprecated. Use .enablePan instead.' ); - this.enablePan = ! value; - - } - - }, - - noKeys: { - - get: function () { - - console.warn( 'THREE.OrbitControls: .noKeys has been deprecated. Use .enableKeys instead.' ); - return ! this.enableKeys; - - }, - - set: function ( value ) { - - console.warn( 'THREE.OrbitControls: .noKeys has been deprecated. Use .enableKeys instead.' ); - this.enableKeys = ! value; - - } - - }, - - staticMoving: { - - get: function () { - - console.warn( 'THREE.OrbitControls: .staticMoving has been deprecated. Use .enableDamping instead.' ); - return ! this.enableDamping; - - }, - - set: function ( value ) { - - console.warn( 'THREE.OrbitControls: .staticMoving has been deprecated. Use .enableDamping instead.' ); - this.enableDamping = ! value; - - } - - }, - - dynamicDampingFactor: { - - get: function () { - - console.warn( 'THREE.OrbitControls: .dynamicDampingFactor has been renamed. Use .dampingFactor instead.' ); - return this.dampingFactor; - - }, - - set: function ( value ) { - - console.warn( 'THREE.OrbitControls: .dynamicDampingFactor has been renamed. Use .dampingFactor instead.' ); - this.dampingFactor = value; - - } - - } - -} ); diff --git a/RG/desert.html b/RG/desert.html deleted file mode 100644 index 2c79fa0..0000000 --- a/RG/desert.html +++ /dev/null @@ -1,23 +0,0 @@ - - - Team13 - - - - - - - - - - - - - - - \ No newline at end of file diff --git a/RG/object/MTLLoader.js b/RG/object/MTLLoader.js deleted file mode 100644 index 3ca020c..0000000 --- a/RG/object/MTLLoader.js +++ /dev/null @@ -1,551 +0,0 @@ -/** - * Loads a Wavefront .mtl file specifying materials - * - * @author angelxuanchang - */ - -THREE.MTLLoader = function ( manager ) { - - this.manager = ( manager !== undefined ) ? manager : THREE.DefaultLoadingManager; - -}; - -THREE.MTLLoader.prototype = { - - constructor: THREE.MTLLoader, - - /** - * Loads and parses a MTL asset from a URL. - * - * @param {String} url - URL to the MTL file. - * @param {Function} [onLoad] - Callback invoked with the loaded object. - * @param {Function} [onProgress] - Callback for download progress. - * @param {Function} [onError] - Callback for download errors. - * - * @see setPath setTexturePath - * - * @note In order for relative texture references to resolve correctly - * you must call setPath and/or setTexturePath explicitly prior to load. - */ - load: function ( url, onLoad, onProgress, onError ) { - - var scope = this; - - var loader = new THREE.FileLoader( this.manager ); - loader.setPath( this.path ); - loader.load( url, function ( text ) { - - onLoad( scope.parse( text ) ); - - }, onProgress, onError ); - - }, - - /** - * Set base path for resolving references. - * If set this path will be prepended to each loaded and found reference. - * - * @see setTexturePath - * @param {String} path - * - * @example - * mtlLoader.setPath( 'assets/obj/' ); - * mtlLoader.load( 'my.mtl', ... ); - */ - setPath: function ( path ) { - - this.path = path; - - }, - - /** - * Set base path for resolving texture references. - * If set this path will be prepended found texture reference. - * If not set and setPath is, it will be used as texture base path. - * - * @see setPath - * @param {String} path - * - * @example - * mtlLoader.setPath( 'assets/obj/' ); - * mtlLoader.setTexturePath( 'assets/textures/' ); - * mtlLoader.load( 'my.mtl', ... ); - */ - setTexturePath: function ( path ) { - - this.texturePath = path; - - }, - - setBaseUrl: function ( path ) { - - console.warn( 'THREE.MTLLoader: .setBaseUrl() is deprecated. Use .setTexturePath( path ) for texture path or .setPath( path ) for general base path instead.' ); - - this.setTexturePath( path ); - - }, - - setCrossOrigin: function ( value ) { - - this.crossOrigin = value; - - }, - - setMaterialOptions: function ( value ) { - - this.materialOptions = value; - - }, - - /** - * Parses a MTL file. - * - * @param {String} text - Content of MTL file - * @return {THREE.MTLLoader.MaterialCreator} - * - * @see setPath setTexturePath - * - * @note In order for relative texture references to resolve correctly - * you must call setPath and/or setTexturePath explicitly prior to parse. - */ - parse: function ( text ) { - - var lines = text.split( '\n' ); - var info = {}; - var delimiter_pattern = /\s+/; - var materialsInfo = {}; - - for ( var i = 0; i < lines.length; i ++ ) { - - var line = lines[ i ]; - line = line.trim(); - - if ( line.length === 0 || line.charAt( 0 ) === '#' ) { - - // Blank line or comment ignore - continue; - - } - - var pos = line.indexOf( ' ' ); - - var key = ( pos >= 0 ) ? line.substring( 0, pos ) : line; - key = key.toLowerCase(); - - var value = ( pos >= 0 ) ? line.substring( pos + 1 ) : ''; - value = value.trim(); - - if ( key === 'newmtl' ) { - - // New material - - info = { name: value }; - materialsInfo[ value ] = info; - - } else if ( info ) { - - if ( key === 'ka' || key === 'kd' || key === 'ks' ) { - - var ss = value.split( delimiter_pattern, 3 ); - info[ key ] = [ parseFloat( ss[ 0 ] ), parseFloat( ss[ 1 ] ), parseFloat( ss[ 2 ] ) ]; - - } else { - - info[ key ] = value; - - } - - } - - } - - var materialCreator = new THREE.MTLLoader.MaterialCreator( this.texturePath || this.path, this.materialOptions ); - materialCreator.setCrossOrigin( this.crossOrigin ); - materialCreator.setManager( this.manager ); - materialCreator.setMaterials( materialsInfo ); - return materialCreator; - - } - -}; - -/** - * Create a new THREE-MTLLoader.MaterialCreator - * @param baseUrl - Url relative to which textures are loaded - * @param options - Set of options on how to construct the materials - * side: Which side to apply the material - * THREE.FrontSide (default), THREE.BackSide, THREE.DoubleSide - * wrap: What type of wrapping to apply for textures - * THREE.RepeatWrapping (default), THREE.ClampToEdgeWrapping, THREE.MirroredRepeatWrapping - * normalizeRGB: RGBs need to be normalized to 0-1 from 0-255 - * Default: false, assumed to be already normalized - * ignoreZeroRGBs: Ignore values of RGBs (Ka,Kd,Ks) that are all 0's - * Default: false - * @constructor - */ - -THREE.MTLLoader.MaterialCreator = function ( baseUrl, options ) { - - this.baseUrl = baseUrl || ''; - this.options = options; - this.materialsInfo = {}; - this.materials = {}; - this.materialsArray = []; - this.nameLookup = {}; - - this.side = ( this.options && this.options.side ) ? this.options.side : THREE.FrontSide; - this.wrap = ( this.options && this.options.wrap ) ? this.options.wrap : THREE.RepeatWrapping; - -}; - -THREE.MTLLoader.MaterialCreator.prototype = { - - constructor: THREE.MTLLoader.MaterialCreator, - - crossOrigin: 'Anonymous', - - setCrossOrigin: function ( value ) { - - this.crossOrigin = value; - - }, - - setManager: function ( value ) { - - this.manager = value; - - }, - - setMaterials: function ( materialsInfo ) { - - this.materialsInfo = this.convert( materialsInfo ); - this.materials = {}; - this.materialsArray = []; - this.nameLookup = {}; - - }, - - convert: function ( materialsInfo ) { - - if ( ! this.options ) return materialsInfo; - - var converted = {}; - - for ( var mn in materialsInfo ) { - - // Convert materials info into normalized form based on options - - var mat = materialsInfo[ mn ]; - - var covmat = {}; - - converted[ mn ] = covmat; - - for ( var prop in mat ) { - - var save = true; - var value = mat[ prop ]; - var lprop = prop.toLowerCase(); - - switch ( lprop ) { - - case 'kd': - case 'ka': - case 'ks': - - // Diffuse color (color under white light) using RGB values - - if ( this.options && this.options.normalizeRGB ) { - - value = [ value[ 0 ] / 255, value[ 1 ] / 255, value[ 2 ] / 255 ]; - - } - - if ( this.options && this.options.ignoreZeroRGBs ) { - - if ( value[ 0 ] === 0 && value[ 1 ] === 0 && value[ 2 ] === 0 ) { - - // ignore - - save = false; - - } - - } - - break; - - default: - - break; - - } - - if ( save ) { - - covmat[ lprop ] = value; - - } - - } - - } - - return converted; - - }, - - preload: function () { - - for ( var mn in this.materialsInfo ) { - - this.create( mn ); - - } - - }, - - getIndex: function ( materialName ) { - - return this.nameLookup[ materialName ]; - - }, - - getAsArray: function () { - - var index = 0; - - for ( var mn in this.materialsInfo ) { - - this.materialsArray[ index ] = this.create( mn ); - this.nameLookup[ mn ] = index; - index ++; - - } - - return this.materialsArray; - - }, - - create: function ( materialName ) { - - if ( this.materials[ materialName ] === undefined ) { - - this.createMaterial_( materialName ); - - } - - return this.materials[ materialName ]; - - }, - - createMaterial_: function ( materialName ) { - - // Create material - - var scope = this; - var mat = this.materialsInfo[ materialName ]; - var params = { - - name: materialName, - side: this.side - - }; - - function resolveURL( baseUrl, url ) { - - if ( typeof url !== 'string' || url === '' ) - return ''; - - // Absolute URL - if ( /^https?:\/\//i.test( url ) ) return url; - - return baseUrl + url; - - } - - function setMapForType( mapType, value ) { - - if ( params[ mapType ] ) return; // Keep the first encountered texture - - var texParams = scope.getTextureParams( value, params ); - var map = scope.loadTexture( resolveURL( scope.baseUrl, texParams.url ) ); - - map.repeat.copy( texParams.scale ); - map.offset.copy( texParams.offset ); - - map.wrapS = scope.wrap; - map.wrapT = scope.wrap; - - params[ mapType ] = map; - - } - - for ( var prop in mat ) { - - var value = mat[ prop ]; - var n; - - if ( value === '' ) continue; - - switch ( prop.toLowerCase() ) { - - // Ns is material specular exponent - - case 'kd': - - // Diffuse color (color under white light) using RGB values - - params.color = new THREE.Color().fromArray( value ); - - break; - - case 'ks': - - // Specular color (color when light is reflected from shiny surface) using RGB values - params.specular = new THREE.Color().fromArray( value ); - - break; - - case 'map_kd': - - // Diffuse texture map - - setMapForType( "map", value ); - - break; - - case 'map_ks': - - // Specular map - - setMapForType( "specularMap", value ); - - break; - - case 'norm': - - setMapForType( "normalMap", value ); - - break; - - case 'map_bump': - case 'bump': - - // Bump texture map - - setMapForType( "bumpMap", value ); - - break; - - case 'ns': - - // The specular exponent (defines the focus of the specular highlight) - // A high exponent results in a tight, concentrated highlight. Ns values normally range from 0 to 1000. - - params.shininess = parseFloat( value ); - - break; - - case 'd': - n = parseFloat(value); - - if ( n < 1 ) { - - params.opacity = n; - params.transparent = true; - - } - - break; - - case 'tr': - n = parseFloat(value); - - if ( n > 0 ) { - - params.opacity = 1 - n; - params.transparent = true; - - } - - break; - - default: - break; - - } - - } - - this.materials[ materialName ] = new THREE.MeshPhongMaterial( params ); - return this.materials[ materialName ]; - - }, - - getTextureParams: function ( value, matParams ) { - - var texParams = { - - scale: new THREE.Vector2( 1, 1 ), - offset: new THREE.Vector2( 0, 0 ) - - }; - - var items = value.split( /\s+/ ); - var pos; - - pos = items.indexOf( '-bm' ); - - if ( pos >= 0 ) { - - matParams.bumpScale = parseFloat( items[ pos + 1 ] ); - items.splice( pos, 2 ); - - } - - pos = items.indexOf( '-s' ); - - if ( pos >= 0 ) { - - texParams.scale.set( parseFloat( items[ pos + 1 ] ), parseFloat( items[ pos + 2 ] ) ); - items.splice( pos, 4 ); // we expect 3 parameters here! - - } - - pos = items.indexOf( '-o' ); - - if ( pos >= 0 ) { - - texParams.offset.set( parseFloat( items[ pos + 1 ] ), parseFloat( items[ pos + 2 ] ) ); - items.splice( pos, 4 ); // we expect 3 parameters here! - - } - - texParams.url = items.join( ' ' ).trim(); - return texParams; - - }, - - loadTexture: function ( url, mapping, onLoad, onProgress, onError ) { - - var texture; - var loader = THREE.Loader.Handlers.get( url ); - var manager = ( this.manager !== undefined ) ? this.manager : THREE.DefaultLoadingManager; - - if ( loader === null ) { - - loader = new THREE.TextureLoader( manager ); - - } - - if ( loader.setCrossOrigin ) loader.setCrossOrigin( this.crossOrigin ); - texture = loader.load( url, onLoad, onProgress, onError ); - - if ( mapping !== undefined ) texture.mapping = mapping; - - return texture; - - } - -}; \ No newline at end of file diff --git a/RG/object/ObjectLoader.js b/RG/object/ObjectLoader.js deleted file mode 100644 index d621510..0000000 --- a/RG/object/ObjectLoader.js +++ /dev/null @@ -1,670 +0,0 @@ -/** - * @author mrdoob / http://mrdoob.com/ - */ - -THREE.OBJLoader = ( function () { - - // o object_name | g group_name - var object_pattern = /^[og]\s*(.+)?/; - // mtllib file_reference - var material_library_pattern = /^mtllib /; - // usemtl material_name - var material_use_pattern = /^usemtl /; - - function ParserState() { - - var state = { - objects : [], - object : {}, - - vertices : [], - normals : [], - uvs : [], - - materialLibraries : [], - - startObject: function ( name, fromDeclaration ) { - - // If the current object (initial from reset) is not from a g/o declaration in the parsed - // file. We need to use it for the first parsed g/o to keep things in sync. - if ( this.object && this.object.fromDeclaration === false ) { - - this.object.name = name; - this.object.fromDeclaration = ( fromDeclaration !== false ); - return; - - } - - var previousMaterial = ( this.object && typeof this.object.currentMaterial === 'function' ? this.object.currentMaterial() : undefined ); - - if ( this.object && typeof this.object._finalize === 'function' ) { - - this.object._finalize( true ); - - } - - this.object = { - name : name || '', - fromDeclaration : ( fromDeclaration !== false ), - - geometry : { - vertices : [], - normals : [], - uvs : [] - }, - materials : [], - smooth : true, - - startMaterial: function ( name, libraries ) { - - var previous = this._finalize( false ); - - // New usemtl declaration overwrites an inherited material, except if faces were declared - // after the material, then it must be preserved for proper MultiMaterial continuation. - if ( previous && ( previous.inherited || previous.groupCount <= 0 ) ) { - - this.materials.splice( previous.index, 1 ); - - } - - var material = { - index : this.materials.length, - name : name || '', - mtllib : ( Array.isArray( libraries ) && libraries.length > 0 ? libraries[ libraries.length - 1 ] : '' ), - smooth : ( previous !== undefined ? previous.smooth : this.smooth ), - groupStart : ( previous !== undefined ? previous.groupEnd : 0 ), - groupEnd : -1, - groupCount : -1, - inherited : false, - - clone: function ( index ) { - var cloned = { - index : ( typeof index === 'number' ? index : this.index ), - name : this.name, - mtllib : this.mtllib, - smooth : this.smooth, - groupStart : 0, - groupEnd : -1, - groupCount : -1, - inherited : false - }; - cloned.clone = this.clone.bind(cloned); - return cloned; - } - }; - - this.materials.push( material ); - - return material; - - }, - - currentMaterial: function () { - - if ( this.materials.length > 0 ) { - return this.materials[ this.materials.length - 1 ]; - } - - return undefined; - - }, - - _finalize: function ( end ) { - - var lastMultiMaterial = this.currentMaterial(); - if ( lastMultiMaterial && lastMultiMaterial.groupEnd === -1 ) { - - lastMultiMaterial.groupEnd = this.geometry.vertices.length / 3; - lastMultiMaterial.groupCount = lastMultiMaterial.groupEnd - lastMultiMaterial.groupStart; - lastMultiMaterial.inherited = false; - - } - - // Ignore objects tail materials if no face declarations followed them before a new o/g started. - if ( end && this.materials.length > 1 ) { - - for ( var mi = this.materials.length - 1; mi >= 0; mi-- ) { - if ( this.materials[ mi ].groupCount <= 0 ) { - this.materials.splice( mi, 1 ); - } - } - - } - - // Guarantee at least one empty material, this makes the creation later more straight forward. - if ( end && this.materials.length === 0 ) { - - this.materials.push({ - name : '', - smooth : this.smooth - }); - - } - - return lastMultiMaterial; - - } - }; - - // Inherit previous objects material. - // Spec tells us that a declared material must be set to all objects until a new material is declared. - // If a usemtl declaration is encountered while this new object is being parsed, it will - // overwrite the inherited material. Exception being that there was already face declarations - // to the inherited material, then it will be preserved for proper MultiMaterial continuation. - - if ( previousMaterial && previousMaterial.name && typeof previousMaterial.clone === 'function' ) { - - var declared = previousMaterial.clone( 0 ); - declared.inherited = true; - this.object.materials.push( declared ); - - } - - this.objects.push( this.object ); - - }, - - finalize: function () { - - if ( this.object && typeof this.object._finalize === 'function' ) { - - this.object._finalize( true ); - - } - - }, - - parseVertexIndex: function ( value, len ) { - - var index = parseInt( value, 10 ); - return ( index >= 0 ? index - 1 : index + len / 3 ) * 3; - - }, - - parseNormalIndex: function ( value, len ) { - - var index = parseInt( value, 10 ); - return ( index >= 0 ? index - 1 : index + len / 3 ) * 3; - - }, - - parseUVIndex: function ( value, len ) { - - var index = parseInt( value, 10 ); - return ( index >= 0 ? index - 1 : index + len / 2 ) * 2; - - }, - - addVertex: function ( a, b, c ) { - - var src = this.vertices; - var dst = this.object.geometry.vertices; - - dst.push( src[ a + 0 ], src[ a + 1 ], src[ a + 2 ] ); - dst.push( src[ b + 0 ], src[ b + 1 ], src[ b + 2 ] ); - dst.push( src[ c + 0 ], src[ c + 1 ], src[ c + 2 ] ); - - }, - - addVertexLine: function ( a ) { - - var src = this.vertices; - var dst = this.object.geometry.vertices; - - dst.push( src[ a + 0 ], src[ a + 1 ], src[ a + 2 ] ); - - }, - - addNormal: function ( a, b, c ) { - - var src = this.normals; - var dst = this.object.geometry.normals; - - dst.push( src[ a + 0 ], src[ a + 1 ], src[ a + 2 ] ); - dst.push( src[ b + 0 ], src[ b + 1 ], src[ b + 2 ] ); - dst.push( src[ c + 0 ], src[ c + 1 ], src[ c + 2 ] ); - - }, - - addUV: function ( a, b, c ) { - - var src = this.uvs; - var dst = this.object.geometry.uvs; - - dst.push( src[ a + 0 ], src[ a + 1 ] ); - dst.push( src[ b + 0 ], src[ b + 1 ] ); - dst.push( src[ c + 0 ], src[ c + 1 ] ); - - }, - - addUVLine: function ( a ) { - - var src = this.uvs; - var dst = this.object.geometry.uvs; - - dst.push( src[ a + 0 ], src[ a + 1 ] ); - - }, - - addFace: function ( a, b, c, ua, ub, uc, na, nb, nc ) { - - var vLen = this.vertices.length; - - var ia = this.parseVertexIndex( a, vLen ); - var ib = this.parseVertexIndex( b, vLen ); - var ic = this.parseVertexIndex( c, vLen ); - - this.addVertex( ia, ib, ic ); - - if ( ua !== undefined ) { - - var uvLen = this.uvs.length; - - ia = this.parseUVIndex( ua, uvLen ); - ib = this.parseUVIndex( ub, uvLen ); - ic = this.parseUVIndex( uc, uvLen ); - - this.addUV( ia, ib, ic ); - - } - - if ( na !== undefined ) { - - // Normals are many times the same. If so, skip function call and parseInt. - var nLen = this.normals.length; - ia = this.parseNormalIndex( na, nLen ); - - ib = na === nb ? ia : this.parseNormalIndex( nb, nLen ); - ic = na === nc ? ia : this.parseNormalIndex( nc, nLen ); - - this.addNormal( ia, ib, ic ); - - } - - }, - - addLineGeometry: function ( vertices, uvs ) { - - this.object.geometry.type = 'Line'; - - var vLen = this.vertices.length; - var uvLen = this.uvs.length; - - for ( var vi = 0, l = vertices.length; vi < l; vi ++ ) { - - this.addVertexLine( this.parseVertexIndex( vertices[ vi ], vLen ) ); - - } - - for ( var uvi = 0, l = uvs.length; uvi < l; uvi ++ ) { - - this.addUVLine( this.parseUVIndex( uvs[ uvi ], uvLen ) ); - - } - - } - - }; - - state.startObject( '', false ); - - return state; - - } - - // - - function OBJLoader( manager ) { - - this.manager = ( manager !== undefined ) ? manager : THREE.DefaultLoadingManager; - - this.materials = null; - - }; - - OBJLoader.prototype = { - - constructor: OBJLoader, - - load: function ( url, onLoad, onProgress, onError ) { - - var scope = this; - - var loader = new THREE.FileLoader( scope.manager ); - loader.setPath( this.path ); - loader.load( url, function ( text ) { - - onLoad( scope.parse( text ) ); - - }, onProgress, onError ); - - }, - - setPath: function ( value ) { - - this.path = value; - - }, - - setMaterials: function ( materials ) { - - this.materials = materials; - - return this; - - }, - - parse: function ( text ) { - - console.time( 'OBJLoader' ); - - var state = new ParserState(); - - if ( text.indexOf( '\r\n' ) !== - 1 ) { - - // This is faster than String.split with regex that splits on both - text = text.replace( /\r\n/g, '\n' ); - - } - - if ( text.indexOf( '\\\n' ) !== - 1) { - - // join lines separated by a line continuation character (\) - text = text.replace( /\\\n/g, '' ); - - } - - var lines = text.split( '\n' ); - var line = '', lineFirstChar = ''; - var lineLength = 0; - var result = []; - - // Faster to just trim left side of the line. Use if available. - var trimLeft = ( typeof ''.trimLeft === 'function' ); - - for ( var i = 0, l = lines.length; i < l; i ++ ) { - - line = lines[ i ]; - - line = trimLeft ? line.trimLeft() : line.trim(); - - lineLength = line.length; - - if ( lineLength === 0 ) continue; - - lineFirstChar = line.charAt( 0 ); - - // @todo invoke passed in handler if any - if ( lineFirstChar === '#' ) continue; - - if ( lineFirstChar === 'v' ) { - - var data = line.split( /\s+/ ); - - switch ( data[ 0 ] ) { - - case 'v': - state.vertices.push( - parseFloat( data[ 1 ] ), - parseFloat( data[ 2 ] ), - parseFloat( data[ 3 ] ) - ); - break; - case 'vn': - state.normals.push( - parseFloat( data[ 1 ] ), - parseFloat( data[ 2 ] ), - parseFloat( data[ 3 ] ) - ); - break; - case 'vt': - state.uvs.push( - parseFloat( data[ 1 ] ), - parseFloat( data[ 2 ] ) - ); - break; - } - - } else if ( lineFirstChar === 'f' ) { - - var lineData = line.substr( 1 ).trim(); - var vertexData = lineData.split( /\s+/ ); - var faceVertices = []; - - // Parse the face vertex data into an easy to work with format - - for ( var j = 0, jl = vertexData.length; j < jl; j ++ ) { - - var vertex = vertexData[ j ]; - - if ( vertex.length > 0 ) { - - var vertexParts = vertex.split( '/' ); - faceVertices.push( vertexParts ); - - } - - } - - // Draw an edge between the first vertex and all subsequent vertices to form an n-gon - - var v1 = faceVertices[ 0 ]; - - for ( var j = 1, jl = faceVertices.length - 1; j < jl; j ++ ) { - - var v2 = faceVertices[ j ]; - var v3 = faceVertices[ j + 1 ]; - - state.addFace( - v1[ 0 ], v2[ 0 ], v3[ 0 ], - v1[ 1 ], v2[ 1 ], v3[ 1 ], - v1[ 2 ], v2[ 2 ], v3[ 2 ] - ); - - } - - } else if ( lineFirstChar === 'l' ) { - - var lineParts = line.substring( 1 ).trim().split( " " ); - var lineVertices = [], lineUVs = []; - - if ( line.indexOf( "/" ) === - 1 ) { - - lineVertices = lineParts; - - } else { - - for ( var li = 0, llen = lineParts.length; li < llen; li ++ ) { - - var parts = lineParts[ li ].split( "/" ); - - if ( parts[ 0 ] !== "" ) lineVertices.push( parts[ 0 ] ); - if ( parts[ 1 ] !== "" ) lineUVs.push( parts[ 1 ] ); - - } - - } - state.addLineGeometry( lineVertices, lineUVs ); - - } else if ( ( result = object_pattern.exec( line ) ) !== null ) { - - // o object_name - // or - // g group_name - - // WORKAROUND: https://bugs.chromium.org/p/v8/issues/detail?id=2869 - // var name = result[ 0 ].substr( 1 ).trim(); - var name = ( " " + result[ 0 ].substr( 1 ).trim() ).substr( 1 ); - - state.startObject( name ); - - } else if ( material_use_pattern.test( line ) ) { - - // material - - state.object.startMaterial( line.substring( 7 ).trim(), state.materialLibraries ); - - } else if ( material_library_pattern.test( line ) ) { - - // mtl file - - state.materialLibraries.push( line.substring( 7 ).trim() ); - - } else if ( lineFirstChar === 's' ) { - - result = line.split( ' ' ); - - // smooth shading - - // @todo Handle files that have varying smooth values for a set of faces inside one geometry, - // but does not define a usemtl for each face set. - // This should be detected and a dummy material created (later MultiMaterial and geometry groups). - // This requires some care to not create extra material on each smooth value for "normal" obj files. - // where explicit usemtl defines geometry groups. - // Example asset: examples/models/obj/cerberus/Cerberus.obj - - /* - * http://paulbourke.net/dataformats/obj/ - * or - * http://www.cs.utah.edu/~boulos/cs3505/obj_spec.pdf - * - * From chapter "Grouping" Syntax explanation "s group_number": - * "group_number is the smoothing group number. To turn off smoothing groups, use a value of 0 or off. - * Polygonal elements use group numbers to put elements in different smoothing groups. For free-form - * surfaces, smoothing groups are either turned on or off; there is no difference between values greater - * than 0." - */ - if ( result.length > 1 ) { - - var value = result[ 1 ].trim().toLowerCase(); - state.object.smooth = ( value !== '0' && value !== 'off' ); - - } else { - - // ZBrush can produce "s" lines #11707 - state.object.smooth = true; - - } - var material = state.object.currentMaterial(); - if ( material ) material.smooth = state.object.smooth; - - } else { - - // Handle null terminated files without exception - if ( line === '\0' ) continue; - - throw new Error( "Unexpected line: '" + line + "'" ); - - } - - } - - state.finalize(); - - var container = new THREE.Group(); - container.materialLibraries = [].concat( state.materialLibraries ); - - for ( var i = 0, l = state.objects.length; i < l; i ++ ) { - - var object = state.objects[ i ]; - var geometry = object.geometry; - var materials = object.materials; - var isLine = ( geometry.type === 'Line' ); - - // Skip o/g line declarations that did not follow with any faces - if ( geometry.vertices.length === 0 ) continue; - - var buffergeometry = new THREE.BufferGeometry(); - - buffergeometry.addAttribute( 'position', new THREE.BufferAttribute( new Float32Array( geometry.vertices ), 3 ) ); - - if ( geometry.normals.length > 0 ) { - - buffergeometry.addAttribute( 'normal', new THREE.BufferAttribute( new Float32Array( geometry.normals ), 3 ) ); - - } else { - - buffergeometry.computeVertexNormals(); - - } - - if ( geometry.uvs.length > 0 ) { - - buffergeometry.addAttribute( 'uv', new THREE.BufferAttribute( new Float32Array( geometry.uvs ), 2 ) ); - - } - - // Create materials - - var createdMaterials = []; - - for ( var mi = 0, miLen = materials.length; mi < miLen ; mi++ ) { - - var sourceMaterial = materials[ mi ]; - var material = undefined; - - if ( this.materials !== null ) { - - material = this.materials.create( sourceMaterial.name ); - - // mtl etc. loaders probably can't create line materials correctly, copy properties to a line material. - if ( isLine && material && ! ( material instanceof THREE.LineBasicMaterial ) ) { - - var materialLine = new THREE.LineBasicMaterial(); - materialLine.copy( material ); - material = materialLine; - - } - - } - - if ( ! material ) { - - material = ( ! isLine ? new THREE.MeshPhongMaterial() : new THREE.LineBasicMaterial() ); - material.name = sourceMaterial.name; - - } - - material.flatShading = sourceMaterial.smooth ? false : true; - - createdMaterials.push(material); - - } - - // Create mesh - - var mesh; - - if ( createdMaterials.length > 1 ) { - - for ( var mi = 0, miLen = materials.length; mi < miLen ; mi++ ) { - - var sourceMaterial = materials[ mi ]; - buffergeometry.addGroup( sourceMaterial.groupStart, sourceMaterial.groupCount, mi ); - - } - - mesh = ( ! isLine ? new THREE.Mesh( buffergeometry, createdMaterials ) : new THREE.LineSegments( buffergeometry, createdMaterials ) ); - - } else { - - mesh = ( ! isLine ? new THREE.Mesh( buffergeometry, createdMaterials[ 0 ] ) : new THREE.LineSegments( buffergeometry, createdMaterials[ 0 ] ) ); - } - - mesh.name = object.name; - - container.add( mesh ); - - } - - console.timeEnd( 'OBJLoader' ); - - return container; - - } - - }; - - return OBJLoader; - -} )(); \ No newline at end of file diff --git a/RG/park.html b/RG/park.html deleted file mode 100644 index 4df2a9c..0000000 --- a/RG/park.html +++ /dev/null @@ -1,23 +0,0 @@ - - - Team13 - - - - - - - - - - - - - - - \ No newline at end of file diff --git a/RG_WebPage_Visualization/FlyControls.js b/RG_WebPage_Visualization/FlyControls.js new file mode 100644 index 0000000..3644e73 --- /dev/null +++ b/RG_WebPage_Visualization/FlyControls.js @@ -0,0 +1,283 @@ +/** + * @author James Baicoianu / http://www.baicoianu.com/ + */ + +THREE.FlyControls = function (object, domElement) { + + this.object = object; + + this.domElement = (domElement !== undefined) ? domElement : document; + if (domElement) this.domElement.setAttribute('tabindex', - 1); + + // API + + this.movementSpeed = 1.0; + this.rollSpeed = 0.005; + + this.dragToLook = false; + this.autoForward = false; + + // disable default target object behavior + + // internals + + this.tmpQuaternion = new THREE.Quaternion(); + + this.mouseStatus = 0; + + this.moveState = { up: 0, down: 0, left: 0, right: 0, forward: 0, back: 0, pitchUp: 0, pitchDown: 0, yawLeft: 0, yawRight: 0, rollLeft: 0, rollRight: 0 }; + this.moveVector = new THREE.Vector3(0, 0, 0); + this.rotationVector = new THREE.Vector3(0, 0, 0); + + this.keydown = function (event) { + + if (event.altKey) { + + return; + + } + + //event.preventDefault(); + + switch (event.keyCode) { + + case 16: /* shift */ this.movementSpeedMultiplier = .1; break; + + case 87: /*W*/ this.moveState.forward = 1; break; + case 83: /*S*/ this.moveState.back = 1; break; + + case 65: /*A*/ this.moveState.left = 1; break; + case 68: /*D*/ this.moveState.right = 1; break; + + case 82: /*R*/ this.moveState.up = 1; break; + case 70: /*F*/ this.moveState.down = 1; break; + + case 38: /*up*/ this.moveState.pitchUp = 1; break; + case 40: /*down*/ this.moveState.pitchDown = 1; break; + + case 37: /*left*/ this.moveState.yawLeft = 1; break; + case 39: /*right*/ this.moveState.yawRight = 1; break; + + case 81: /*Q*/ this.moveState.rollLeft = 1; break; + case 69: /*E*/ this.moveState.rollRight = 1; break; + + } + + this.updateMovementVector(); + this.updateRotationVector(); + + }; + + this.keyup = function (event) { + + switch (event.keyCode) { + + case 16: /* shift */ this.movementSpeedMultiplier = 1; break; + + case 87: /*W*/ this.moveState.forward = 0; break; + case 83: /*S*/ this.moveState.back = 0; break; + + case 65: /*A*/ this.moveState.left = 0; break; + case 68: /*D*/ this.moveState.right = 0; break; + + case 82: /*R*/ this.moveState.up = 0; break; + case 70: /*F*/ this.moveState.down = 0; break; + + case 38: /*up*/ this.moveState.pitchUp = 0; break; + case 40: /*down*/ this.moveState.pitchDown = 0; break; + + case 37: /*left*/ this.moveState.yawLeft = 0; break; + case 39: /*right*/ this.moveState.yawRight = 0; break; + + case 81: /*Q*/ this.moveState.rollLeft = 0; break; + case 69: /*E*/ this.moveState.rollRight = 0; break; + + } + + this.updateMovementVector(); + this.updateRotationVector(); + + }; + + this.mousedown = function (event) { + + if (this.domElement !== document) { + + this.domElement.focus(); + + } + + event.preventDefault(); + event.stopPropagation(); + + if (this.dragToLook) { + + this.mouseStatus++; + + } else { + + switch (event.button) { + + case 0: this.moveState.forward = 1; break; + case 2: this.moveState.back = 1; break; + + } + + this.updateMovementVector(); + + } + + }; + + this.mousemove = function (event) { + + if (!this.dragToLook || this.mouseStatus > 0) { + + var container = this.getContainerDimensions(); + var halfWidth = container.size[0] / 2; + var halfHeight = container.size[1] / 2; + + this.moveState.yawLeft = - ((event.pageX - container.offset[0]) - halfWidth) / halfWidth; + this.moveState.pitchDown = ((event.pageY - container.offset[1]) - halfHeight) / halfHeight; + + this.updateRotationVector(); + + } + + }; + + this.mouseup = function (event) { + + event.preventDefault(); + event.stopPropagation(); + + if (this.dragToLook) { + + this.mouseStatus--; + + this.moveState.yawLeft = this.moveState.pitchDown = 0; + + } else { + + switch (event.button) { + + case 0: this.moveState.forward = 0; break; + case 2: this.moveState.back = 0; break; + + } + + this.updateMovementVector(); + + } + + this.updateRotationVector(); + + }; + + this.update = function (delta) { + + var moveMult = delta * this.movementSpeed; + var rotMult = delta * this.rollSpeed; + + this.object.translateX(this.moveVector.x * moveMult); + this.object.translateY(this.moveVector.y * moveMult); + this.object.translateZ(this.moveVector.z * moveMult); + + this.tmpQuaternion.set(this.rotationVector.x * rotMult, this.rotationVector.y * rotMult, this.rotationVector.z * rotMult, 1).normalize(); + this.object.quaternion.multiply(this.tmpQuaternion); + + // expose the rotation vector for convenience + this.object.rotation.setFromQuaternion(this.object.quaternion, this.object.rotation.order); + + + }; + + this.updateMovementVector = function () { + + var forward = (this.moveState.forward || (this.autoForward && !this.moveState.back)) ? 1 : 0; + + this.moveVector.x = (- this.moveState.left + this.moveState.right); + this.moveVector.y = (- this.moveState.down + this.moveState.up); + this.moveVector.z = (- forward + this.moveState.back); + + //console.log( 'move:', [ this.moveVector.x, this.moveVector.y, this.moveVector.z ] ); + + }; + + this.updateRotationVector = function () { + + this.rotationVector.x = (- this.moveState.pitchDown + this.moveState.pitchUp); + this.rotationVector.y = (- this.moveState.yawRight + this.moveState.yawLeft); + this.rotationVector.z = (- this.moveState.rollRight + this.moveState.rollLeft); + + //console.log( 'rotate:', [ this.rotationVector.x, this.rotationVector.y, this.rotationVector.z ] ); + + }; + + this.getContainerDimensions = function () { + + if (this.domElement != document) { + + return { + size: [this.domElement.offsetWidth, this.domElement.offsetHeight], + offset: [this.domElement.offsetLeft, this.domElement.offsetTop] + }; + + } else { + + return { + size: [window.innerWidth, window.innerHeight], + offset: [0, 0] + }; + + } + + }; + + function bind(scope, fn) { + + return function () { + + fn.apply(scope, arguments); + + }; + + } + + function contextmenu(event) { + + event.preventDefault(); + + } + + this.dispose = function () { + + this.domElement.removeEventListener('contextmenu', contextmenu, false); + this.domElement.removeEventListener('mousedown', _mousedown, false); + this.domElement.removeEventListener('mousemove', _mousemove, false); + this.domElement.removeEventListener('mouseup', _mouseup, false); + + window.removeEventListener('keydown', _keydown, false); + window.removeEventListener('keyup', _keyup, false); + + }; + + var _mousemove = bind(this, this.mousemove); + var _mousedown = bind(this, this.mousedown); + var _mouseup = bind(this, this.mouseup); + var _keydown = bind(this, this.keydown); + var _keyup = bind(this, this.keyup); + + this.domElement.addEventListener('contextmenu', contextmenu, false); + + this.domElement.addEventListener('mousemove', _mousemove, false); + this.domElement.addEventListener('mousedown', _mousedown, false); + this.domElement.addEventListener('mouseup', _mouseup, false); + + window.addEventListener('keydown', _keydown, false); + window.addEventListener('keyup', _keyup, false); + + this.updateMovementVector(); + this.updateRotationVector(); + +}; diff --git a/RG_WebPage_Visualization/OrbitControls.js b/RG_WebPage_Visualization/OrbitControls.js new file mode 100644 index 0000000..3b473bc --- /dev/null +++ b/RG_WebPage_Visualization/OrbitControls.js @@ -0,0 +1,1051 @@ +/** + * @author qiao / https://github.com/qiao + * @author mrdoob / http://mrdoob.com + * @author alteredq / http://alteredqualia.com/ + * @author WestLangley / http://github.com/WestLangley + * @author erich666 / http://erichaines.com + */ + +// This set of controls performs orbiting, dollying (zooming), and panning. +// Unlike TrackballControls, it maintains the "up" direction object.up (+Y by default). +// +// Orbit - left mouse / touch: one-finger move +// Zoom - middle mouse, or mousewheel / touch: two-finger spread or squish +// Pan - right mouse, or left mouse + ctrl/meta/shiftKey, or arrow keys / touch: two-finger move + +THREE.OrbitControls = function (object, domElement) { + + this.object = object; + + this.domElement = (domElement !== undefined) ? domElement : document; + + // Set to false to disable this control + this.enabled = true; + + // "target" sets the location of focus, where the object orbits around + this.target = new THREE.Vector3(); + + // How far you can dolly in and out ( PerspectiveCamera only ) + this.minDistance = 0; + this.maxDistance = Infinity; + + // How far you can zoom in and out ( OrthographicCamera only ) + this.minZoom = 0; + this.maxZoom = Infinity; + + // How far you can orbit vertically, upper and lower limits. + // Range is 0 to Math.PI radians. + this.minPolarAngle = 0; // radians + this.maxPolarAngle = Math.PI; // radians + + // How far you can orbit horizontally, upper and lower limits. + // If set, must be a sub-interval of the interval [ - Math.PI, Math.PI ]. + this.minAzimuthAngle = - Infinity; // radians + this.maxAzimuthAngle = Infinity; // radians + + // Set to true to enable damping (inertia) + // If damping is enabled, you must call controls.update() in your animation loop + this.enableDamping = false; + this.dampingFactor = 0.25; + + // This option actually enables dollying in and out; left as "zoom" for backwards compatibility. + // Set to false to disable zooming + this.enableZoom = true; + this.zoomSpeed = 1.0; + + // Set to false to disable rotating + this.enableRotate = true; + this.rotateSpeed = 1.0; + + // Set to false to disable panning + this.enablePan = true; + this.panSpeed = 1.0; + this.screenSpacePanning = false; // if true, pan in screen-space + this.keyPanSpeed = 7.0; // pixels moved per arrow key push + + // Set to true to automatically rotate around the target + // If auto-rotate is enabled, you must call controls.update() in your animation loop + this.autoRotate = false; + this.autoRotateSpeed = 2.0; // 30 seconds per round when fps is 60 + + // Set to false to disable use of the keys + this.enableKeys = true; + + // The four arrow keys + this.keys = { LEFT: 37, UP: 38, RIGHT: 39, BOTTOM: 40 }; + + // Mouse buttons + this.mouseButtons = { LEFT: THREE.MOUSE.LEFT, MIDDLE: THREE.MOUSE.MIDDLE, RIGHT: THREE.MOUSE.RIGHT }; + + // for reset + this.target0 = this.target.clone(); + this.position0 = this.object.position.clone(); + this.zoom0 = this.object.zoom; + + // + // public methods + // + + this.getPolarAngle = function () { + + return spherical.phi; + + }; + + this.getAzimuthalAngle = function () { + + return spherical.theta; + + }; + + this.saveState = function () { + + scope.target0.copy(scope.target); + scope.position0.copy(scope.object.position); + scope.zoom0 = scope.object.zoom; + + }; + + this.reset = function () { + + scope.target.copy(scope.target0); + scope.object.position.copy(scope.position0); + scope.object.zoom = scope.zoom0; + + scope.object.updateProjectionMatrix(); + scope.dispatchEvent(changeEvent); + + scope.update(); + + state = STATE.NONE; + + }; + + // this method is exposed, but perhaps it would be better if we can make it private... + this.update = function () { + + var offset = new THREE.Vector3(); + + // so camera.up is the orbit axis + var quat = new THREE.Quaternion().setFromUnitVectors(object.up, new THREE.Vector3(0, 1, 0)); + var quatInverse = quat.clone().inverse(); + + var lastPosition = new THREE.Vector3(); + var lastQuaternion = new THREE.Quaternion(); + + return function update() { + + var position = scope.object.position; + + offset.copy(position).sub(scope.target); + + // rotate offset to "y-axis-is-up" space + offset.applyQuaternion(quat); + + // angle from z-axis around y-axis + spherical.setFromVector3(offset); + + if (scope.autoRotate && state === STATE.NONE) { + + rotateLeft(getAutoRotationAngle()); + + } + + spherical.theta += sphericalDelta.theta; + spherical.phi += sphericalDelta.phi; + + // restrict theta to be between desired limits + spherical.theta = Math.max(scope.minAzimuthAngle, Math.min(scope.maxAzimuthAngle, spherical.theta)); + + // restrict phi to be between desired limits + spherical.phi = Math.max(scope.minPolarAngle, Math.min(scope.maxPolarAngle, spherical.phi)); + + spherical.makeSafe(); + + + spherical.radius *= scale; + + // restrict radius to be between desired limits + spherical.radius = Math.max(scope.minDistance, Math.min(scope.maxDistance, spherical.radius)); + + // move target to panned location + scope.target.add(panOffset); + + offset.setFromSpherical(spherical); + + // rotate offset back to "camera-up-vector-is-up" space + offset.applyQuaternion(quatInverse); + + position.copy(scope.target).add(offset); + + scope.object.lookAt(scope.target); + + if (scope.enableDamping === true) { + + sphericalDelta.theta *= (1 - scope.dampingFactor); + sphericalDelta.phi *= (1 - scope.dampingFactor); + + panOffset.multiplyScalar(1 - scope.dampingFactor); + + } else { + + sphericalDelta.set(0, 0, 0); + + panOffset.set(0, 0, 0); + + } + + scale = 1; + + // update condition is: + // min(camera displacement, camera rotation in radians)^2 > EPS + // using small-angle approximation cos(x/2) = 1 - x^2 / 8 + + if (zoomChanged || + lastPosition.distanceToSquared(scope.object.position) > EPS || + 8 * (1 - lastQuaternion.dot(scope.object.quaternion)) > EPS) { + + scope.dispatchEvent(changeEvent); + + lastPosition.copy(scope.object.position); + lastQuaternion.copy(scope.object.quaternion); + zoomChanged = false; + + return true; + + } + + return false; + + }; + + }(); + + this.dispose = function () { + + scope.domElement.removeEventListener('contextmenu', onContextMenu, false); + scope.domElement.removeEventListener('mousedown', onMouseDown, false); + scope.domElement.removeEventListener('wheel', onMouseWheel, false); + + scope.domElement.removeEventListener('touchstart', onTouchStart, false); + scope.domElement.removeEventListener('touchend', onTouchEnd, false); + scope.domElement.removeEventListener('touchmove', onTouchMove, false); + + document.removeEventListener('mousemove', onMouseMove, false); + document.removeEventListener('mouseup', onMouseUp, false); + + window.removeEventListener('keydown', onKeyDown, false); + + //scope.dispatchEvent( { type: 'dispose' } ); // should this be added here? + + }; + + // + // internals + // + + var scope = this; + + var changeEvent = { type: 'change' }; + var startEvent = { type: 'start' }; + var endEvent = { type: 'end' }; + + var STATE = { NONE: - 1, ROTATE: 0, DOLLY: 1, PAN: 2, TOUCH_ROTATE: 3, TOUCH_DOLLY_PAN: 4 }; + + var state = STATE.NONE; + + var EPS = 0.000001; + + // current position in spherical coordinates + var spherical = new THREE.Spherical(); + var sphericalDelta = new THREE.Spherical(); + + var scale = 1; + var panOffset = new THREE.Vector3(); + var zoomChanged = false; + + var rotateStart = new THREE.Vector2(); + var rotateEnd = new THREE.Vector2(); + var rotateDelta = new THREE.Vector2(); + + var panStart = new THREE.Vector2(); + var panEnd = new THREE.Vector2(); + var panDelta = new THREE.Vector2(); + + var dollyStart = new THREE.Vector2(); + var dollyEnd = new THREE.Vector2(); + var dollyDelta = new THREE.Vector2(); + + function getAutoRotationAngle() { + + return 2 * Math.PI / 60 / 60 * scope.autoRotateSpeed; + + } + + function getZoomScale() { + + return Math.pow(0.95, scope.zoomSpeed); + + } + + function rotateLeft(angle) { + + sphericalDelta.theta -= angle; + + } + + function rotateUp(angle) { + + sphericalDelta.phi -= angle; + + } + + var panLeft = function () { + + var v = new THREE.Vector3(); + + return function panLeft(distance, objectMatrix) { + + v.setFromMatrixColumn(objectMatrix, 0); // get X column of objectMatrix + v.multiplyScalar(- distance); + + panOffset.add(v); + + }; + + }(); + + var panUp = function () { + + var v = new THREE.Vector3(); + + return function panUp(distance, objectMatrix) { + + if (scope.screenSpacePanning === true) { + + v.setFromMatrixColumn(objectMatrix, 1); + + } else { + + v.setFromMatrixColumn(objectMatrix, 0); + v.crossVectors(scope.object.up, v); + + } + + v.multiplyScalar(distance); + + panOffset.add(v); + + }; + + }(); + + // deltaX and deltaY are in pixels; right and down are positive + var pan = function () { + + var offset = new THREE.Vector3(); + + return function pan(deltaX, deltaY) { + + var element = scope.domElement === document ? scope.domElement.body : scope.domElement; + + if (scope.object.isPerspectiveCamera) { + + // perspective + var position = scope.object.position; + offset.copy(position).sub(scope.target); + var targetDistance = offset.length(); + + // half of the fov is center to top of screen + targetDistance *= Math.tan((scope.object.fov / 2) * Math.PI / 180.0); + + // we use only clientHeight here so aspect ratio does not distort speed + panLeft(2 * deltaX * targetDistance / element.clientHeight, scope.object.matrix); + panUp(2 * deltaY * targetDistance / element.clientHeight, scope.object.matrix); + + } else if (scope.object.isOrthographicCamera) { + + // orthographic + panLeft(deltaX * (scope.object.right - scope.object.left) / scope.object.zoom / element.clientWidth, scope.object.matrix); + panUp(deltaY * (scope.object.top - scope.object.bottom) / scope.object.zoom / element.clientHeight, scope.object.matrix); + + } else { + + // camera neither orthographic nor perspective + console.warn('WARNING: OrbitControls.js encountered an unknown camera type - pan disabled.'); + scope.enablePan = false; + + } + + }; + + }(); + + function dollyIn(dollyScale) { + + if (scope.object.isPerspectiveCamera) { + + scale /= dollyScale; + + } else if (scope.object.isOrthographicCamera) { + + scope.object.zoom = Math.max(scope.minZoom, Math.min(scope.maxZoom, scope.object.zoom * dollyScale)); + scope.object.updateProjectionMatrix(); + zoomChanged = true; + + } else { + + console.warn('WARNING: OrbitControls.js encountered an unknown camera type - dolly/zoom disabled.'); + scope.enableZoom = false; + + } + + } + + function dollyOut(dollyScale) { + + if (scope.object.isPerspectiveCamera) { + + scale *= dollyScale; + + } else if (scope.object.isOrthographicCamera) { + + scope.object.zoom = Math.max(scope.minZoom, Math.min(scope.maxZoom, scope.object.zoom / dollyScale)); + scope.object.updateProjectionMatrix(); + zoomChanged = true; + + } else { + + console.warn('WARNING: OrbitControls.js encountered an unknown camera type - dolly/zoom disabled.'); + scope.enableZoom = false; + + } + + } + + // + // event callbacks - update the object state + // + + function handleMouseDownRotate(event) { + + //console.log( 'handleMouseDownRotate' ); + + rotateStart.set(event.clientX, event.clientY); + + } + + function handleMouseDownDolly(event) { + + //console.log( 'handleMouseDownDolly' ); + + dollyStart.set(event.clientX, event.clientY); + + } + + function handleMouseDownPan(event) { + + //console.log( 'handleMouseDownPan' ); + + panStart.set(event.clientX, event.clientY); + + } + + function handleMouseMoveRotate(event) { + + //console.log( 'handleMouseMoveRotate' ); + + rotateEnd.set(event.clientX, event.clientY); + + rotateDelta.subVectors(rotateEnd, rotateStart).multiplyScalar(scope.rotateSpeed); + + var element = scope.domElement === document ? scope.domElement.body : scope.domElement; + + rotateLeft(2 * Math.PI * rotateDelta.x / element.clientHeight); // yes, height + + rotateUp(2 * Math.PI * rotateDelta.y / element.clientHeight); + + rotateStart.copy(rotateEnd); + + scope.update(); + + } + + function handleMouseMoveDolly(event) { + + //console.log( 'handleMouseMoveDolly' ); + + dollyEnd.set(event.clientX, event.clientY); + + dollyDelta.subVectors(dollyEnd, dollyStart); + + if (dollyDelta.y > 0) { + + dollyIn(getZoomScale()); + + } else if (dollyDelta.y < 0) { + + dollyOut(getZoomScale()); + + } + + dollyStart.copy(dollyEnd); + + scope.update(); + + } + + function handleMouseMovePan(event) { + + //console.log( 'handleMouseMovePan' ); + + panEnd.set(event.clientX, event.clientY); + + panDelta.subVectors(panEnd, panStart).multiplyScalar(scope.panSpeed); + + pan(panDelta.x, panDelta.y); + + panStart.copy(panEnd); + + scope.update(); + + } + + function handleMouseUp(event) { + + // console.log( 'handleMouseUp' ); + + } + + function handleMouseWheel(event) { + + // console.log( 'handleMouseWheel' ); + + if (event.deltaY < 0) { + + dollyOut(getZoomScale()); + + } else if (event.deltaY > 0) { + + dollyIn(getZoomScale()); + + } + + scope.update(); + + } + + function handleKeyDown(event) { + + //console.log( 'handleKeyDown' ); + + switch (event.keyCode) { + + case scope.keys.UP: + pan(0, scope.keyPanSpeed); + scope.update(); + break; + + case scope.keys.BOTTOM: + pan(0, - scope.keyPanSpeed); + scope.update(); + break; + + case scope.keys.LEFT: + pan(scope.keyPanSpeed, 0); + scope.update(); + break; + + case scope.keys.RIGHT: + pan(- scope.keyPanSpeed, 0); + scope.update(); + break; + + } + + } + + function handleTouchStartRotate(event) { + + //console.log( 'handleTouchStartRotate' ); + + rotateStart.set(event.touches[0].pageX, event.touches[0].pageY); + + } + + function handleTouchStartDollyPan(event) { + + //console.log( 'handleTouchStartDollyPan' ); + + if (scope.enableZoom) { + + var dx = event.touches[0].pageX - event.touches[1].pageX; + var dy = event.touches[0].pageY - event.touches[1].pageY; + + var distance = Math.sqrt(dx * dx + dy * dy); + + dollyStart.set(0, distance); + + } + + if (scope.enablePan) { + + var x = 0.5 * (event.touches[0].pageX + event.touches[1].pageX); + var y = 0.5 * (event.touches[0].pageY + event.touches[1].pageY); + + panStart.set(x, y); + + } + + } + + function handleTouchMoveRotate(event) { + + //console.log( 'handleTouchMoveRotate' ); + + rotateEnd.set(event.touches[0].pageX, event.touches[0].pageY); + + rotateDelta.subVectors(rotateEnd, rotateStart).multiplyScalar(scope.rotateSpeed); + + var element = scope.domElement === document ? scope.domElement.body : scope.domElement; + + rotateLeft(2 * Math.PI * rotateDelta.x / element.clientHeight); // yes, height + + rotateUp(2 * Math.PI * rotateDelta.y / element.clientHeight); + + rotateStart.copy(rotateEnd); + + scope.update(); + + } + + function handleTouchMoveDollyPan(event) { + + //console.log( 'handleTouchMoveDollyPan' ); + + if (scope.enableZoom) { + + var dx = event.touches[0].pageX - event.touches[1].pageX; + var dy = event.touches[0].pageY - event.touches[1].pageY; + + var distance = Math.sqrt(dx * dx + dy * dy); + + dollyEnd.set(0, distance); + + dollyDelta.set(0, Math.pow(dollyEnd.y / dollyStart.y, scope.zoomSpeed)); + + dollyIn(dollyDelta.y); + + dollyStart.copy(dollyEnd); + + } + + if (scope.enablePan) { + + var x = 0.5 * (event.touches[0].pageX + event.touches[1].pageX); + var y = 0.5 * (event.touches[0].pageY + event.touches[1].pageY); + + panEnd.set(x, y); + + panDelta.subVectors(panEnd, panStart).multiplyScalar(scope.panSpeed); + + pan(panDelta.x, panDelta.y); + + panStart.copy(panEnd); + + } + + scope.update(); + + } + + function handleTouchEnd(event) { + + //console.log( 'handleTouchEnd' ); + + } + + // + // event handlers - FSM: listen for events and reset state + // + + function onMouseDown(event) { + + if (scope.enabled === false) return; + + event.preventDefault(); + + switch (event.button) { + + case scope.mouseButtons.LEFT: + + if (event.ctrlKey || event.metaKey || event.shiftKey) { + + if (scope.enablePan === false) return; + + handleMouseDownPan(event); + + state = STATE.PAN; + + } else { + + if (scope.enableRotate === false) return; + + handleMouseDownRotate(event); + + state = STATE.ROTATE; + + } + + break; + + case scope.mouseButtons.MIDDLE: + + if (scope.enableZoom === false) return; + + handleMouseDownDolly(event); + + state = STATE.DOLLY; + + break; + + case scope.mouseButtons.RIGHT: + + if (scope.enablePan === false) return; + + handleMouseDownPan(event); + + state = STATE.PAN; + + break; + + } + + if (state !== STATE.NONE) { + + document.addEventListener('mousemove', onMouseMove, false); + document.addEventListener('mouseup', onMouseUp, false); + + scope.dispatchEvent(startEvent); + + } + + } + + function onMouseMove(event) { + + if (scope.enabled === false) return; + + event.preventDefault(); + + switch (state) { + + case STATE.ROTATE: + + if (scope.enableRotate === false) return; + + handleMouseMoveRotate(event); + + break; + + case STATE.DOLLY: + + if (scope.enableZoom === false) return; + + handleMouseMoveDolly(event); + + break; + + case STATE.PAN: + + if (scope.enablePan === false) return; + + handleMouseMovePan(event); + + break; + + } + + } + + function onMouseUp(event) { + + if (scope.enabled === false) return; + + handleMouseUp(event); + + document.removeEventListener('mousemove', onMouseMove, false); + document.removeEventListener('mouseup', onMouseUp, false); + + scope.dispatchEvent(endEvent); + + state = STATE.NONE; + + } + + function onMouseWheel(event) { + + if (scope.enabled === false || scope.enableZoom === false || (state !== STATE.NONE && state !== STATE.ROTATE)) return; + + event.preventDefault(); + event.stopPropagation(); + + scope.dispatchEvent(startEvent); + + handleMouseWheel(event); + + scope.dispatchEvent(endEvent); + + } + + function onKeyDown(event) { + + if (scope.enabled === false || scope.enableKeys === false || scope.enablePan === false) return; + + handleKeyDown(event); + + } + + function onTouchStart(event) { + + if (scope.enabled === false) return; + + event.preventDefault(); + + switch (event.touches.length) { + + case 1: // one-fingered touch: rotate + + if (scope.enableRotate === false) return; + + handleTouchStartRotate(event); + + state = STATE.TOUCH_ROTATE; + + break; + + case 2: // two-fingered touch: dolly-pan + + if (scope.enableZoom === false && scope.enablePan === false) return; + + handleTouchStartDollyPan(event); + + state = STATE.TOUCH_DOLLY_PAN; + + break; + + default: + + state = STATE.NONE; + + } + + if (state !== STATE.NONE) { + + scope.dispatchEvent(startEvent); + + } + + } + + function onTouchMove(event) { + + if (scope.enabled === false) return; + + event.preventDefault(); + event.stopPropagation(); + + switch (event.touches.length) { + + case 1: // one-fingered touch: rotate + + if (scope.enableRotate === false) return; + if (state !== STATE.TOUCH_ROTATE) return; // is this needed? + + handleTouchMoveRotate(event); + + break; + + case 2: // two-fingered touch: dolly-pan + + if (scope.enableZoom === false && scope.enablePan === false) return; + if (state !== STATE.TOUCH_DOLLY_PAN) return; // is this needed? + + handleTouchMoveDollyPan(event); + + break; + + default: + + state = STATE.NONE; + + } + + } + + function onTouchEnd(event) { + + if (scope.enabled === false) return; + + handleTouchEnd(event); + + scope.dispatchEvent(endEvent); + + state = STATE.NONE; + + } + + function onContextMenu(event) { + + if (scope.enabled === false) return; + + event.preventDefault(); + + } + + // + + scope.domElement.addEventListener('contextmenu', onContextMenu, false); + + scope.domElement.addEventListener('mousedown', onMouseDown, false); + scope.domElement.addEventListener('wheel', onMouseWheel, false); + + scope.domElement.addEventListener('touchstart', onTouchStart, false); + scope.domElement.addEventListener('touchend', onTouchEnd, false); + scope.domElement.addEventListener('touchmove', onTouchMove, false); + + window.addEventListener('keydown', onKeyDown, false); + + // force an update at start + + this.update(); + +}; + +THREE.OrbitControls.prototype = Object.create(THREE.EventDispatcher.prototype); +THREE.OrbitControls.prototype.constructor = THREE.OrbitControls; + +Object.defineProperties(THREE.OrbitControls.prototype, { + + center: { + + get: function () { + + console.warn('THREE.OrbitControls: .center has been renamed to .target'); + return this.target; + + } + + }, + + // backward compatibility + + noZoom: { + + get: function () { + + console.warn('THREE.OrbitControls: .noZoom has been deprecated. Use .enableZoom instead.'); + return !this.enableZoom; + + }, + + set: function (value) { + + console.warn('THREE.OrbitControls: .noZoom has been deprecated. Use .enableZoom instead.'); + this.enableZoom = !value; + + } + + }, + + noRotate: { + + get: function () { + + console.warn('THREE.OrbitControls: .noRotate has been deprecated. Use .enableRotate instead.'); + return !this.enableRotate; + + }, + + set: function (value) { + + console.warn('THREE.OrbitControls: .noRotate has been deprecated. Use .enableRotate instead.'); + this.enableRotate = !value; + + } + + }, + + noPan: { + + get: function () { + + console.warn('THREE.OrbitControls: .noPan has been deprecated. Use .enablePan instead.'); + return !this.enablePan; + + }, + + set: function (value) { + + console.warn('THREE.OrbitControls: .noPan has been deprecated. Use .enablePan instead.'); + this.enablePan = !value; + + } + + }, + + noKeys: { + + get: function () { + + console.warn('THREE.OrbitControls: .noKeys has been deprecated. Use .enableKeys instead.'); + return !this.enableKeys; + + }, + + set: function (value) { + + console.warn('THREE.OrbitControls: .noKeys has been deprecated. Use .enableKeys instead.'); + this.enableKeys = !value; + + } + + }, + + staticMoving: { + + get: function () { + + console.warn('THREE.OrbitControls: .staticMoving has been deprecated. Use .enableDamping instead.'); + return !this.enableDamping; + + }, + + set: function (value) { + + console.warn('THREE.OrbitControls: .staticMoving has been deprecated. Use .enableDamping instead.'); + this.enableDamping = !value; + + } + + }, + + dynamicDampingFactor: { + + get: function () { + + console.warn('THREE.OrbitControls: .dynamicDampingFactor has been renamed. Use .dampingFactor instead.'); + return this.dampingFactor; + + }, + + set: function (value) { + + console.warn('THREE.OrbitControls: .dynamicDampingFactor has been renamed. Use .dampingFactor instead.'); + this.dampingFactor = value; + + } + + } + +}); diff --git a/RG_WebPage_Visualization/desert.html b/RG_WebPage_Visualization/desert.html new file mode 100644 index 0000000..eae73b4 --- /dev/null +++ b/RG_WebPage_Visualization/desert.html @@ -0,0 +1,26 @@ + + + + Team13 + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/RG/desert.js b/RG_WebPage_Visualization/desert.js similarity index 95% rename from RG/desert.js rename to RG_WebPage_Visualization/desert.js index 322196d..969a08b 100644 --- a/RG/desert.js +++ b/RG_WebPage_Visualization/desert.js @@ -1,9 +1,9 @@ -$(document).keyup(function(e) { - if(e.keyCode== 27) { +$(document).keyup(function (e) { + if (e.keyCode == 27) { window.location = 'index.html'; - } + } }); var o; var scene = new THREE.Scene(); @@ -68,8 +68,7 @@ var update = function () { o.position.y += 0.01; o.position.z += 0.01; o.position.x += 0.01; - if(o.position.x > 5 || o.position.y > 5 || o.position.z > 5) - { + if (o.position.x > 5 || o.position.y > 5 || o.position.z > 5) { o.position.y = 0; o.position.z = 0; o.position.x = 0; diff --git a/RG/dron2/Drone_obj.mtl b/RG_WebPage_Visualization/dron2/Drone_obj.mtl similarity index 100% rename from RG/dron2/Drone_obj.mtl rename to RG_WebPage_Visualization/dron2/Drone_obj.mtl diff --git a/RG_WebPage_Visualization/dron2/MTLLoader.js b/RG_WebPage_Visualization/dron2/MTLLoader.js new file mode 100644 index 0000000..d3125c0 --- /dev/null +++ b/RG_WebPage_Visualization/dron2/MTLLoader.js @@ -0,0 +1,551 @@ +/** + * Loads a Wavefront .mtl file specifying materials + * + * @author angelxuanchang + */ + +THREE.MTLLoader = function (manager) { + + this.manager = (manager !== undefined) ? manager : THREE.DefaultLoadingManager; + +}; + +THREE.MTLLoader.prototype = { + + constructor: THREE.MTLLoader, + + /** + * Loads and parses a MTL asset from a URL. + * + * @param {String} url - URL to the MTL file. + * @param {Function} [onLoad] - Callback invoked with the loaded object. + * @param {Function} [onProgress] - Callback for download progress. + * @param {Function} [onError] - Callback for download errors. + * + * @see setPath setTexturePath + * + * @note In order for relative texture references to resolve correctly + * you must call setPath and/or setTexturePath explicitly prior to load. + */ + load: function (url, onLoad, onProgress, onError) { + + var scope = this; + + var loader = new THREE.FileLoader(this.manager); + loader.setPath(this.path); + loader.load(url, function (text) { + + onLoad(scope.parse(text)); + + }, onProgress, onError); + + }, + + /** + * Set base path for resolving references. + * If set this path will be prepended to each loaded and found reference. + * + * @see setTexturePath + * @param {String} path + * + * @example + * mtlLoader.setPath( 'assets/obj/' ); + * mtlLoader.load( 'my.mtl', ... ); + */ + setPath: function (path) { + + this.path = path; + + }, + + /** + * Set base path for resolving texture references. + * If set this path will be prepended found texture reference. + * If not set and setPath is, it will be used as texture base path. + * + * @see setPath + * @param {String} path + * + * @example + * mtlLoader.setPath( 'assets/obj/' ); + * mtlLoader.setTexturePath( 'assets/textures/' ); + * mtlLoader.load( 'my.mtl', ... ); + */ + setTexturePath: function (path) { + + this.texturePath = path; + + }, + + setBaseUrl: function (path) { + + console.warn('THREE.MTLLoader: .setBaseUrl() is deprecated. Use .setTexturePath( path ) for texture path or .setPath( path ) for general base path instead.'); + + this.setTexturePath(path); + + }, + + setCrossOrigin: function (value) { + + this.crossOrigin = value; + + }, + + setMaterialOptions: function (value) { + + this.materialOptions = value; + + }, + + /** + * Parses a MTL file. + * + * @param {String} text - Content of MTL file + * @return {THREE.MTLLoader.MaterialCreator} + * + * @see setPath setTexturePath + * + * @note In order for relative texture references to resolve correctly + * you must call setPath and/or setTexturePath explicitly prior to parse. + */ + parse: function (text) { + + var lines = text.split('\n'); + var info = {}; + var delimiter_pattern = /\s+/; + var materialsInfo = {}; + + for (var i = 0; i < lines.length; i++) { + + var line = lines[i]; + line = line.trim(); + + if (line.length === 0 || line.charAt(0) === '#') { + + // Blank line or comment ignore + continue; + + } + + var pos = line.indexOf(' '); + + var key = (pos >= 0) ? line.substring(0, pos) : line; + key = key.toLowerCase(); + + var value = (pos >= 0) ? line.substring(pos + 1) : ''; + value = value.trim(); + + if (key === 'newmtl') { + + // New material + + info = { name: value }; + materialsInfo[value] = info; + + } else if (info) { + + if (key === 'ka' || key === 'kd' || key === 'ks') { + + var ss = value.split(delimiter_pattern, 3); + info[key] = [parseFloat(ss[0]), parseFloat(ss[1]), parseFloat(ss[2])]; + + } else { + + info[key] = value; + + } + + } + + } + + var materialCreator = new THREE.MTLLoader.MaterialCreator(this.texturePath || this.path, this.materialOptions); + materialCreator.setCrossOrigin(this.crossOrigin); + materialCreator.setManager(this.manager); + materialCreator.setMaterials(materialsInfo); + return materialCreator; + + } + +}; + +/** + * Create a new THREE-MTLLoader.MaterialCreator + * @param baseUrl - Url relative to which textures are loaded + * @param options - Set of options on how to construct the materials + * side: Which side to apply the material + * THREE.FrontSide (default), THREE.BackSide, THREE.DoubleSide + * wrap: What type of wrapping to apply for textures + * THREE.RepeatWrapping (default), THREE.ClampToEdgeWrapping, THREE.MirroredRepeatWrapping + * normalizeRGB: RGBs need to be normalized to 0-1 from 0-255 + * Default: false, assumed to be already normalized + * ignoreZeroRGBs: Ignore values of RGBs (Ka,Kd,Ks) that are all 0's + * Default: false + * @constructor + */ + +THREE.MTLLoader.MaterialCreator = function (baseUrl, options) { + + this.baseUrl = baseUrl || ''; + this.options = options; + this.materialsInfo = {}; + this.materials = {}; + this.materialsArray = []; + this.nameLookup = {}; + + this.side = (this.options && this.options.side) ? this.options.side : THREE.FrontSide; + this.wrap = (this.options && this.options.wrap) ? this.options.wrap : THREE.RepeatWrapping; + +}; + +THREE.MTLLoader.MaterialCreator.prototype = { + + constructor: THREE.MTLLoader.MaterialCreator, + + crossOrigin: 'Anonymous', + + setCrossOrigin: function (value) { + + this.crossOrigin = value; + + }, + + setManager: function (value) { + + this.manager = value; + + }, + + setMaterials: function (materialsInfo) { + + this.materialsInfo = this.convert(materialsInfo); + this.materials = {}; + this.materialsArray = []; + this.nameLookup = {}; + + }, + + convert: function (materialsInfo) { + + if (!this.options) return materialsInfo; + + var converted = {}; + + for (var mn in materialsInfo) { + + // Convert materials info into normalized form based on options + + var mat = materialsInfo[mn]; + + var covmat = {}; + + converted[mn] = covmat; + + for (var prop in mat) { + + var save = true; + var value = mat[prop]; + var lprop = prop.toLowerCase(); + + switch (lprop) { + + case 'kd': + case 'ka': + case 'ks': + + // Diffuse color (color under white light) using RGB values + + if (this.options && this.options.normalizeRGB) { + + value = [value[0] / 255, value[1] / 255, value[2] / 255]; + + } + + if (this.options && this.options.ignoreZeroRGBs) { + + if (value[0] === 0 && value[1] === 0 && value[2] === 0) { + + // ignore + + save = false; + + } + + } + + break; + + default: + + break; + + } + + if (save) { + + covmat[lprop] = value; + + } + + } + + } + + return converted; + + }, + + preload: function () { + + for (var mn in this.materialsInfo) { + + this.create(mn); + + } + + }, + + getIndex: function (materialName) { + + return this.nameLookup[materialName]; + + }, + + getAsArray: function () { + + var index = 0; + + for (var mn in this.materialsInfo) { + + this.materialsArray[index] = this.create(mn); + this.nameLookup[mn] = index; + index++; + + } + + return this.materialsArray; + + }, + + create: function (materialName) { + + if (this.materials[materialName] === undefined) { + + this.createMaterial_(materialName); + + } + + return this.materials[materialName]; + + }, + + createMaterial_: function (materialName) { + + // Create material + + var scope = this; + var mat = this.materialsInfo[materialName]; + var params = { + + name: materialName, + side: this.side + + }; + + function resolveURL(baseUrl, url) { + + if (typeof url !== 'string' || url === '') + return ''; + + // Absolute URL + if (/^https?:\/\//i.test(url)) return url; + + return baseUrl + url; + + } + + function setMapForType(mapType, value) { + + if (params[mapType]) return; // Keep the first encountered texture + + var texParams = scope.getTextureParams(value, params); + var map = scope.loadTexture(resolveURL(scope.baseUrl, texParams.url)); + + map.repeat.copy(texParams.scale); + map.offset.copy(texParams.offset); + + map.wrapS = scope.wrap; + map.wrapT = scope.wrap; + + params[mapType] = map; + + } + + for (var prop in mat) { + + var value = mat[prop]; + var n; + + if (value === '') continue; + + switch (prop.toLowerCase()) { + + // Ns is material specular exponent + + case 'kd': + + // Diffuse color (color under white light) using RGB values + + params.color = new THREE.Color().fromArray(value); + + break; + + case 'ks': + + // Specular color (color when light is reflected from shiny surface) using RGB values + params.specular = new THREE.Color().fromArray(value); + + break; + + case 'map_kd': + + // Diffuse texture map + + setMapForType("map", value); + + break; + + case 'map_ks': + + // Specular map + + setMapForType("specularMap", value); + + break; + + case 'norm': + + setMapForType("normalMap", value); + + break; + + case 'map_bump': + case 'bump': + + // Bump texture map + + setMapForType("bumpMap", value); + + break; + + case 'ns': + + // The specular exponent (defines the focus of the specular highlight) + // A high exponent results in a tight, concentrated highlight. Ns values normally range from 0 to 1000. + + params.shininess = parseFloat(value); + + break; + + case 'd': + n = parseFloat(value); + + if (n < 1) { + + params.opacity = n; + params.transparent = true; + + } + + break; + + case 'tr': + n = parseFloat(value); + + if (n > 0) { + + params.opacity = 1 - n; + params.transparent = true; + + } + + break; + + default: + break; + + } + + } + + this.materials[materialName] = new THREE.MeshPhongMaterial(params); + return this.materials[materialName]; + + }, + + getTextureParams: function (value, matParams) { + + var texParams = { + + scale: new THREE.Vector2(1, 1), + offset: new THREE.Vector2(0, 0) + + }; + + var items = value.split(/\s+/); + var pos; + + pos = items.indexOf('-bm'); + + if (pos >= 0) { + + matParams.bumpScale = parseFloat(items[pos + 1]); + items.splice(pos, 2); + + } + + pos = items.indexOf('-s'); + + if (pos >= 0) { + + texParams.scale.set(parseFloat(items[pos + 1]), parseFloat(items[pos + 2])); + items.splice(pos, 4); // we expect 3 parameters here! + + } + + pos = items.indexOf('-o'); + + if (pos >= 0) { + + texParams.offset.set(parseFloat(items[pos + 1]), parseFloat(items[pos + 2])); + items.splice(pos, 4); // we expect 3 parameters here! + + } + + texParams.url = items.join(' ').trim(); + return texParams; + + }, + + loadTexture: function (url, mapping, onLoad, onProgress, onError) { + + var texture; + var loader = THREE.Loader.Handlers.get(url); + var manager = (this.manager !== undefined) ? this.manager : THREE.DefaultLoadingManager; + + if (loader === null) { + + loader = new THREE.TextureLoader(manager); + + } + + if (loader.setCrossOrigin) loader.setCrossOrigin(this.crossOrigin); + texture = loader.load(url, onLoad, onProgress, onError); + + if (mapping !== undefined) texture.mapping = mapping; + + return texture; + + } + +}; \ No newline at end of file diff --git a/RG_WebPage_Visualization/dron2/ObjectLoader.js b/RG_WebPage_Visualization/dron2/ObjectLoader.js new file mode 100644 index 0000000..253b3bb --- /dev/null +++ b/RG_WebPage_Visualization/dron2/ObjectLoader.js @@ -0,0 +1,670 @@ +/** + * @author mrdoob / http://mrdoob.com/ + */ + +THREE.OBJLoader = (function () { + + // o object_name | g group_name + var object_pattern = /^[og]\s*(.+)?/; + // mtllib file_reference + var material_library_pattern = /^mtllib /; + // usemtl material_name + var material_use_pattern = /^usemtl /; + + function ParserState() { + + var state = { + objects: [], + object: {}, + + vertices: [], + normals: [], + uvs: [], + + materialLibraries: [], + + startObject: function (name, fromDeclaration) { + + // If the current object (initial from reset) is not from a g/o declaration in the parsed + // file. We need to use it for the first parsed g/o to keep things in sync. + if (this.object && this.object.fromDeclaration === false) { + + this.object.name = name; + this.object.fromDeclaration = (fromDeclaration !== false); + return; + + } + + var previousMaterial = (this.object && typeof this.object.currentMaterial === 'function' ? this.object.currentMaterial() : undefined); + + if (this.object && typeof this.object._finalize === 'function') { + + this.object._finalize(true); + + } + + this.object = { + name: name || '', + fromDeclaration: (fromDeclaration !== false), + + geometry: { + vertices: [], + normals: [], + uvs: [] + }, + materials: [], + smooth: true, + + startMaterial: function (name, libraries) { + + var previous = this._finalize(false); + + // New usemtl declaration overwrites an inherited material, except if faces were declared + // after the material, then it must be preserved for proper MultiMaterial continuation. + if (previous && (previous.inherited || previous.groupCount <= 0)) { + + this.materials.splice(previous.index, 1); + + } + + var material = { + index: this.materials.length, + name: name || '', + mtllib: (Array.isArray(libraries) && libraries.length > 0 ? libraries[libraries.length - 1] : ''), + smooth: (previous !== undefined ? previous.smooth : this.smooth), + groupStart: (previous !== undefined ? previous.groupEnd : 0), + groupEnd: -1, + groupCount: -1, + inherited: false, + + clone: function (index) { + var cloned = { + index: (typeof index === 'number' ? index : this.index), + name: this.name, + mtllib: this.mtllib, + smooth: this.smooth, + groupStart: 0, + groupEnd: -1, + groupCount: -1, + inherited: false + }; + cloned.clone = this.clone.bind(cloned); + return cloned; + } + }; + + this.materials.push(material); + + return material; + + }, + + currentMaterial: function () { + + if (this.materials.length > 0) { + return this.materials[this.materials.length - 1]; + } + + return undefined; + + }, + + _finalize: function (end) { + + var lastMultiMaterial = this.currentMaterial(); + if (lastMultiMaterial && lastMultiMaterial.groupEnd === -1) { + + lastMultiMaterial.groupEnd = this.geometry.vertices.length / 3; + lastMultiMaterial.groupCount = lastMultiMaterial.groupEnd - lastMultiMaterial.groupStart; + lastMultiMaterial.inherited = false; + + } + + // Ignore objects tail materials if no face declarations followed them before a new o/g started. + if (end && this.materials.length > 1) { + + for (var mi = this.materials.length - 1; mi >= 0; mi--) { + if (this.materials[mi].groupCount <= 0) { + this.materials.splice(mi, 1); + } + } + + } + + // Guarantee at least one empty material, this makes the creation later more straight forward. + if (end && this.materials.length === 0) { + + this.materials.push({ + name: '', + smooth: this.smooth + }); + + } + + return lastMultiMaterial; + + } + }; + + // Inherit previous objects material. + // Spec tells us that a declared material must be set to all objects until a new material is declared. + // If a usemtl declaration is encountered while this new object is being parsed, it will + // overwrite the inherited material. Exception being that there was already face declarations + // to the inherited material, then it will be preserved for proper MultiMaterial continuation. + + if (previousMaterial && previousMaterial.name && typeof previousMaterial.clone === 'function') { + + var declared = previousMaterial.clone(0); + declared.inherited = true; + this.object.materials.push(declared); + + } + + this.objects.push(this.object); + + }, + + finalize: function () { + + if (this.object && typeof this.object._finalize === 'function') { + + this.object._finalize(true); + + } + + }, + + parseVertexIndex: function (value, len) { + + var index = parseInt(value, 10); + return (index >= 0 ? index - 1 : index + len / 3) * 3; + + }, + + parseNormalIndex: function (value, len) { + + var index = parseInt(value, 10); + return (index >= 0 ? index - 1 : index + len / 3) * 3; + + }, + + parseUVIndex: function (value, len) { + + var index = parseInt(value, 10); + return (index >= 0 ? index - 1 : index + len / 2) * 2; + + }, + + addVertex: function (a, b, c) { + + var src = this.vertices; + var dst = this.object.geometry.vertices; + + dst.push(src[a + 0], src[a + 1], src[a + 2]); + dst.push(src[b + 0], src[b + 1], src[b + 2]); + dst.push(src[c + 0], src[c + 1], src[c + 2]); + + }, + + addVertexLine: function (a) { + + var src = this.vertices; + var dst = this.object.geometry.vertices; + + dst.push(src[a + 0], src[a + 1], src[a + 2]); + + }, + + addNormal: function (a, b, c) { + + var src = this.normals; + var dst = this.object.geometry.normals; + + dst.push(src[a + 0], src[a + 1], src[a + 2]); + dst.push(src[b + 0], src[b + 1], src[b + 2]); + dst.push(src[c + 0], src[c + 1], src[c + 2]); + + }, + + addUV: function (a, b, c) { + + var src = this.uvs; + var dst = this.object.geometry.uvs; + + dst.push(src[a + 0], src[a + 1]); + dst.push(src[b + 0], src[b + 1]); + dst.push(src[c + 0], src[c + 1]); + + }, + + addUVLine: function (a) { + + var src = this.uvs; + var dst = this.object.geometry.uvs; + + dst.push(src[a + 0], src[a + 1]); + + }, + + addFace: function (a, b, c, ua, ub, uc, na, nb, nc) { + + var vLen = this.vertices.length; + + var ia = this.parseVertexIndex(a, vLen); + var ib = this.parseVertexIndex(b, vLen); + var ic = this.parseVertexIndex(c, vLen); + + this.addVertex(ia, ib, ic); + + if (ua !== undefined) { + + var uvLen = this.uvs.length; + + ia = this.parseUVIndex(ua, uvLen); + ib = this.parseUVIndex(ub, uvLen); + ic = this.parseUVIndex(uc, uvLen); + + this.addUV(ia, ib, ic); + + } + + if (na !== undefined) { + + // Normals are many times the same. If so, skip function call and parseInt. + var nLen = this.normals.length; + ia = this.parseNormalIndex(na, nLen); + + ib = na === nb ? ia : this.parseNormalIndex(nb, nLen); + ic = na === nc ? ia : this.parseNormalIndex(nc, nLen); + + this.addNormal(ia, ib, ic); + + } + + }, + + addLineGeometry: function (vertices, uvs) { + + this.object.geometry.type = 'Line'; + + var vLen = this.vertices.length; + var uvLen = this.uvs.length; + + for (var vi = 0, l = vertices.length; vi < l; vi++) { + + this.addVertexLine(this.parseVertexIndex(vertices[vi], vLen)); + + } + + for (var uvi = 0, l = uvs.length; uvi < l; uvi++) { + + this.addUVLine(this.parseUVIndex(uvs[uvi], uvLen)); + + } + + } + + }; + + state.startObject('', false); + + return state; + + } + + // + + function OBJLoader(manager) { + + this.manager = (manager !== undefined) ? manager : THREE.DefaultLoadingManager; + + this.materials = null; + + }; + + OBJLoader.prototype = { + + constructor: OBJLoader, + + load: function (url, onLoad, onProgress, onError) { + + var scope = this; + + var loader = new THREE.FileLoader(scope.manager); + loader.setPath(this.path); + loader.load(url, function (text) { + + onLoad(scope.parse(text)); + + }, onProgress, onError); + + }, + + setPath: function (value) { + + this.path = value; + + }, + + setMaterials: function (materials) { + + this.materials = materials; + + return this; + + }, + + parse: function (text) { + + console.time('OBJLoader'); + + var state = new ParserState(); + + if (text.indexOf('\r\n') !== - 1) { + + // This is faster than String.split with regex that splits on both + text = text.replace(/\r\n/g, '\n'); + + } + + if (text.indexOf('\\\n') !== - 1) { + + // join lines separated by a line continuation character (\) + text = text.replace(/\\\n/g, ''); + + } + + var lines = text.split('\n'); + var line = '', lineFirstChar = ''; + var lineLength = 0; + var result = []; + + // Faster to just trim left side of the line. Use if available. + var trimLeft = (typeof ''.trimLeft === 'function'); + + for (var i = 0, l = lines.length; i < l; i++) { + + line = lines[i]; + + line = trimLeft ? line.trimLeft() : line.trim(); + + lineLength = line.length; + + if (lineLength === 0) continue; + + lineFirstChar = line.charAt(0); + + // @todo invoke passed in handler if any + if (lineFirstChar === '#') continue; + + if (lineFirstChar === 'v') { + + var data = line.split(/\s+/); + + switch (data[0]) { + + case 'v': + state.vertices.push( + parseFloat(data[1]), + parseFloat(data[2]), + parseFloat(data[3]) + ); + break; + case 'vn': + state.normals.push( + parseFloat(data[1]), + parseFloat(data[2]), + parseFloat(data[3]) + ); + break; + case 'vt': + state.uvs.push( + parseFloat(data[1]), + parseFloat(data[2]) + ); + break; + } + + } else if (lineFirstChar === 'f') { + + var lineData = line.substr(1).trim(); + var vertexData = lineData.split(/\s+/); + var faceVertices = []; + + // Parse the face vertex data into an easy to work with format + + for (var j = 0, jl = vertexData.length; j < jl; j++) { + + var vertex = vertexData[j]; + + if (vertex.length > 0) { + + var vertexParts = vertex.split('/'); + faceVertices.push(vertexParts); + + } + + } + + // Draw an edge between the first vertex and all subsequent vertices to form an n-gon + + var v1 = faceVertices[0]; + + for (var j = 1, jl = faceVertices.length - 1; j < jl; j++) { + + var v2 = faceVertices[j]; + var v3 = faceVertices[j + 1]; + + state.addFace( + v1[0], v2[0], v3[0], + v1[1], v2[1], v3[1], + v1[2], v2[2], v3[2] + ); + + } + + } else if (lineFirstChar === 'l') { + + var lineParts = line.substring(1).trim().split(" "); + var lineVertices = [], lineUVs = []; + + if (line.indexOf("/") === - 1) { + + lineVertices = lineParts; + + } else { + + for (var li = 0, llen = lineParts.length; li < llen; li++) { + + var parts = lineParts[li].split("/"); + + if (parts[0] !== "") lineVertices.push(parts[0]); + if (parts[1] !== "") lineUVs.push(parts[1]); + + } + + } + state.addLineGeometry(lineVertices, lineUVs); + + } else if ((result = object_pattern.exec(line)) !== null) { + + // o object_name + // or + // g group_name + + // WORKAROUND: https://bugs.chromium.org/p/v8/issues/detail?id=2869 + // var name = result[ 0 ].substr( 1 ).trim(); + var name = (" " + result[0].substr(1).trim()).substr(1); + + state.startObject(name); + + } else if (material_use_pattern.test(line)) { + + // material + + state.object.startMaterial(line.substring(7).trim(), state.materialLibraries); + + } else if (material_library_pattern.test(line)) { + + // mtl file + + state.materialLibraries.push(line.substring(7).trim()); + + } else if (lineFirstChar === 's') { + + result = line.split(' '); + + // smooth shading + + // @todo Handle files that have varying smooth values for a set of faces inside one geometry, + // but does not define a usemtl for each face set. + // This should be detected and a dummy material created (later MultiMaterial and geometry groups). + // This requires some care to not create extra material on each smooth value for "normal" obj files. + // where explicit usemtl defines geometry groups. + // Example asset: examples/models/obj/cerberus/Cerberus.obj + + /* + * http://paulbourke.net/dataformats/obj/ + * or + * http://www.cs.utah.edu/~boulos/cs3505/obj_spec.pdf + * + * From chapter "Grouping" Syntax explanation "s group_number": + * "group_number is the smoothing group number. To turn off smoothing groups, use a value of 0 or off. + * Polygonal elements use group numbers to put elements in different smoothing groups. For free-form + * surfaces, smoothing groups are either turned on or off; there is no difference between values greater + * than 0." + */ + if (result.length > 1) { + + var value = result[1].trim().toLowerCase(); + state.object.smooth = (value !== '0' && value !== 'off'); + + } else { + + // ZBrush can produce "s" lines #11707 + state.object.smooth = true; + + } + var material = state.object.currentMaterial(); + if (material) material.smooth = state.object.smooth; + + } else { + + // Handle null terminated files without exception + if (line === '\0') continue; + + throw new Error("Unexpected line: '" + line + "'"); + + } + + } + + state.finalize(); + + var container = new THREE.Group(); + container.materialLibraries = [].concat(state.materialLibraries); + + for (var i = 0, l = state.objects.length; i < l; i++) { + + var object = state.objects[i]; + var geometry = object.geometry; + var materials = object.materials; + var isLine = (geometry.type === 'Line'); + + // Skip o/g line declarations that did not follow with any faces + if (geometry.vertices.length === 0) continue; + + var buffergeometry = new THREE.BufferGeometry(); + + buffergeometry.addAttribute('position', new THREE.BufferAttribute(new Float32Array(geometry.vertices), 3)); + + if (geometry.normals.length > 0) { + + buffergeometry.addAttribute('normal', new THREE.BufferAttribute(new Float32Array(geometry.normals), 3)); + + } else { + + buffergeometry.computeVertexNormals(); + + } + + if (geometry.uvs.length > 0) { + + buffergeometry.addAttribute('uv', new THREE.BufferAttribute(new Float32Array(geometry.uvs), 2)); + + } + + // Create materials + + var createdMaterials = []; + + for (var mi = 0, miLen = materials.length; mi < miLen; mi++) { + + var sourceMaterial = materials[mi]; + var material = undefined; + + if (this.materials !== null) { + + material = this.materials.create(sourceMaterial.name); + + // mtl etc. loaders probably can't create line materials correctly, copy properties to a line material. + if (isLine && material && !(material instanceof THREE.LineBasicMaterial)) { + + var materialLine = new THREE.LineBasicMaterial(); + materialLine.copy(material); + material = materialLine; + + } + + } + + if (!material) { + + material = (!isLine ? new THREE.MeshPhongMaterial() : new THREE.LineBasicMaterial()); + material.name = sourceMaterial.name; + + } + + material.flatShading = sourceMaterial.smooth ? false : true; + + createdMaterials.push(material); + + } + + // Create mesh + + var mesh; + + if (createdMaterials.length > 1) { + + for (var mi = 0, miLen = materials.length; mi < miLen; mi++) { + + var sourceMaterial = materials[mi]; + buffergeometry.addGroup(sourceMaterial.groupStart, sourceMaterial.groupCount, mi); + + } + + mesh = (!isLine ? new THREE.Mesh(buffergeometry, createdMaterials) : new THREE.LineSegments(buffergeometry, createdMaterials)); + + } else { + + mesh = (!isLine ? new THREE.Mesh(buffergeometry, createdMaterials[0]) : new THREE.LineSegments(buffergeometry, createdMaterials[0])); + } + + mesh.name = object.name; + + container.add(mesh); + + } + + console.timeEnd('OBJLoader'); + + return container; + + } + + }; + + return OBJLoader; + +})(); \ No newline at end of file diff --git a/RG/dron2/textures/Flying drone_Ao_2.jpg b/RG_WebPage_Visualization/dron2/textures/Flying drone_Ao_2.jpg similarity index 100% rename from RG/dron2/textures/Flying drone_Ao_2.jpg rename to RG_WebPage_Visualization/dron2/textures/Flying drone_Ao_2.jpg diff --git a/RG/dron2/textures/Flying drone_Nor_2.jpg b/RG_WebPage_Visualization/dron2/textures/Flying drone_Nor_2.jpg similarity index 100% rename from RG/dron2/textures/Flying drone_Nor_2.jpg rename to RG_WebPage_Visualization/dron2/textures/Flying drone_Nor_2.jpg diff --git a/RG/dron2/textures/Flying drone_col.jpg b/RG_WebPage_Visualization/dron2/textures/Flying drone_col.jpg similarity index 100% rename from RG/dron2/textures/Flying drone_col.jpg rename to RG_WebPage_Visualization/dron2/textures/Flying drone_col.jpg diff --git a/RG/dron2/textures/Ground_Ao.jpg b/RG_WebPage_Visualization/dron2/textures/Ground_Ao.jpg similarity index 100% rename from RG/dron2/textures/Ground_Ao.jpg rename to RG_WebPage_Visualization/dron2/textures/Ground_Ao.jpg diff --git a/RG/dron2/textures/Ground_Col.jpg b/RG_WebPage_Visualization/dron2/textures/Ground_Col.jpg similarity index 100% rename from RG/dron2/textures/Ground_Col.jpg rename to RG_WebPage_Visualization/dron2/textures/Ground_Col.jpg diff --git a/RG/dron2/textures/Ground_Detail.jpg b/RG_WebPage_Visualization/dron2/textures/Ground_Detail.jpg similarity index 100% rename from RG/dron2/textures/Ground_Detail.jpg rename to RG_WebPage_Visualization/dron2/textures/Ground_Detail.jpg diff --git a/RG/dron2/textures/Ground_Nor.jpg b/RG_WebPage_Visualization/dron2/textures/Ground_Nor.jpg similarity index 100% rename from RG/dron2/textures/Ground_Nor.jpg rename to RG_WebPage_Visualization/dron2/textures/Ground_Nor.jpg diff --git a/RG/images/negx.jpg b/RG_WebPage_Visualization/images/negx.jpg similarity index 100% rename from RG/images/negx.jpg rename to RG_WebPage_Visualization/images/negx.jpg diff --git a/RG/images/negy.jpg b/RG_WebPage_Visualization/images/negy.jpg similarity index 100% rename from RG/images/negy.jpg rename to RG_WebPage_Visualization/images/negy.jpg diff --git a/RG/images/negz.jpg b/RG_WebPage_Visualization/images/negz.jpg similarity index 100% rename from RG/images/negz.jpg rename to RG_WebPage_Visualization/images/negz.jpg diff --git a/RG/images/posx.jpg b/RG_WebPage_Visualization/images/posx.jpg similarity index 100% rename from RG/images/posx.jpg rename to RG_WebPage_Visualization/images/posx.jpg diff --git a/RG/images/posy.jpg b/RG_WebPage_Visualization/images/posy.jpg similarity index 100% rename from RG/images/posy.jpg rename to RG_WebPage_Visualization/images/posy.jpg diff --git a/RG/images/posz.jpg b/RG_WebPage_Visualization/images/posz.jpg similarity index 100% rename from RG/images/posz.jpg rename to RG_WebPage_Visualization/images/posz.jpg diff --git a/RG/images1/back.png b/RG_WebPage_Visualization/images1/back.png similarity index 100% rename from RG/images1/back.png rename to RG_WebPage_Visualization/images1/back.png diff --git a/RG/images1/down.png b/RG_WebPage_Visualization/images1/down.png similarity index 100% rename from RG/images1/down.png rename to RG_WebPage_Visualization/images1/down.png diff --git a/RG/images1/front.png b/RG_WebPage_Visualization/images1/front.png similarity index 100% rename from RG/images1/front.png rename to RG_WebPage_Visualization/images1/front.png diff --git a/RG/images1/left.png b/RG_WebPage_Visualization/images1/left.png similarity index 100% rename from RG/images1/left.png rename to RG_WebPage_Visualization/images1/left.png diff --git a/RG/images1/right.png b/RG_WebPage_Visualization/images1/right.png similarity index 100% rename from RG/images1/right.png rename to RG_WebPage_Visualization/images1/right.png diff --git a/RG/images1/up.png b/RG_WebPage_Visualization/images1/up.png similarity index 100% rename from RG/images1/up.png rename to RG_WebPage_Visualization/images1/up.png diff --git a/RG/index.html b/RG_WebPage_Visualization/index.html similarity index 50% rename from RG/index.html rename to RG_WebPage_Visualization/index.html index 125f9e0..6236d76 100644 --- a/RG/index.html +++ b/RG_WebPage_Visualization/index.html @@ -2,14 +2,20 @@ Team13 - - - - - + + + + + @@ -34,34 +48,34 @@
  • Home
  • Real Time
  • + +
    -

    Follow the dron

    -

    This is a simple web site that allows you to track your dron, or look at the flying of others.

    +

    Follow the dron

    +

    This is a simple web site that allows you to track your dron, or look at the flying of others.

    -
    -

    Model1

    -
    -
    -
    -
    +
    +

    Model1

    +
    +
    +
    +
    diff --git a/RG/index.php b/RG_WebPage_Visualization/index.php similarity index 100% rename from RG/index.php rename to RG_WebPage_Visualization/index.php diff --git a/RG/loadModel1.js b/RG_WebPage_Visualization/loadModel1.js similarity index 94% rename from RG/loadModel1.js rename to RG_WebPage_Visualization/loadModel1.js index 4bdd930..31b3c4e 100644 --- a/RG/loadModel1.js +++ b/RG_WebPage_Visualization/loadModel1.js @@ -3,7 +3,7 @@ var camera = new THREE.PerspectiveCamera(75, 1, 0.1, 1000); camera.position.z = 3; var renderer = new THREE.WebGLRenderer(); renderer.setSize(240, 240); -container = document.getElementById( 'canvas1' ); +container = document.getElementById('canvas1'); container.appendChild(renderer.domElement); @@ -33,7 +33,7 @@ mtlLoader.load('Drone_obj.mtl', function (materials) { objLoader.load('Drone_obj.obj', function (object) { scene.add(object); object.position.z = 0; - object.scale.set( 3, 3, 3 ) + object.scale.set(3, 3, 3) }); }); diff --git a/RG/object/Drone_obj.mtl b/RG_WebPage_Visualization/object/Drone_obj.mtl similarity index 100% rename from RG/object/Drone_obj.mtl rename to RG_WebPage_Visualization/object/Drone_obj.mtl diff --git a/RG/dron2/MTLLoader.js b/RG_WebPage_Visualization/object/MTLLoader.js similarity index 100% rename from RG/dron2/MTLLoader.js rename to RG_WebPage_Visualization/object/MTLLoader.js diff --git a/RG/dron2/ObjectLoader.js b/RG_WebPage_Visualization/object/ObjectLoader.js similarity index 100% rename from RG/dron2/ObjectLoader.js rename to RG_WebPage_Visualization/object/ObjectLoader.js diff --git a/RG/object/textures/Flying drone_Ao_2.jpg b/RG_WebPage_Visualization/object/textures/Flying drone_Ao_2.jpg similarity index 100% rename from RG/object/textures/Flying drone_Ao_2.jpg rename to RG_WebPage_Visualization/object/textures/Flying drone_Ao_2.jpg diff --git a/RG/object/textures/Flying drone_Nor_2.jpg b/RG_WebPage_Visualization/object/textures/Flying drone_Nor_2.jpg similarity index 100% rename from RG/object/textures/Flying drone_Nor_2.jpg rename to RG_WebPage_Visualization/object/textures/Flying drone_Nor_2.jpg diff --git a/RG/object/textures/Flying drone_col.jpg b/RG_WebPage_Visualization/object/textures/Flying drone_col.jpg similarity index 100% rename from RG/object/textures/Flying drone_col.jpg rename to RG_WebPage_Visualization/object/textures/Flying drone_col.jpg diff --git a/RG/object/textures/Ground_Ao.jpg b/RG_WebPage_Visualization/object/textures/Ground_Ao.jpg similarity index 100% rename from RG/object/textures/Ground_Ao.jpg rename to RG_WebPage_Visualization/object/textures/Ground_Ao.jpg diff --git a/RG/object/textures/Ground_Col.jpg b/RG_WebPage_Visualization/object/textures/Ground_Col.jpg similarity index 100% rename from RG/object/textures/Ground_Col.jpg rename to RG_WebPage_Visualization/object/textures/Ground_Col.jpg diff --git a/RG/object/textures/Ground_Detail.jpg b/RG_WebPage_Visualization/object/textures/Ground_Detail.jpg similarity index 100% rename from RG/object/textures/Ground_Detail.jpg rename to RG_WebPage_Visualization/object/textures/Ground_Detail.jpg diff --git a/RG/object/textures/Ground_Nor.jpg b/RG_WebPage_Visualization/object/textures/Ground_Nor.jpg similarity index 100% rename from RG/object/textures/Ground_Nor.jpg rename to RG_WebPage_Visualization/object/textures/Ground_Nor.jpg diff --git a/RG_WebPage_Visualization/park.html b/RG_WebPage_Visualization/park.html new file mode 100644 index 0000000..a2c9a8e --- /dev/null +++ b/RG_WebPage_Visualization/park.html @@ -0,0 +1,26 @@ + + + + Team13 + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/RG/park.js b/RG_WebPage_Visualization/park.js similarity index 93% rename from RG/park.js rename to RG_WebPage_Visualization/park.js index f380698..56b2dc8 100644 --- a/RG/park.js +++ b/RG_WebPage_Visualization/park.js @@ -1,11 +1,11 @@ -$("a").click(function(event) { - alert(event.target.id); - }); +$("a").click(function (event) { + alert(event.target.id); +}); -$(document).keyup(function(e) { - if(e.keyCode== 27) { +$(document).keyup(function (e) { + if (e.keyCode == 27) { window.location = 'index.html'; - } + } }); var scene = new THREE.Scene(); var camera = new THREE.PerspectiveCamera(75, window.innerWidth / window.innerHeight, 0.1, 1000); @@ -61,7 +61,7 @@ mtlLoader.load('Drone_obj.mtl', function (materials) { objLoader.load('Drone_obj.obj', function (object) { scene.add(object); object.position.z = -3; - o= object; + o = object; //controls = new THREE.OrbitControls(object, renderer.domElement); }); }); @@ -70,8 +70,7 @@ var update = function () { o.position.y += 0.01; o.position.z += 0.01; o.position.x += 0.01; - if(o.position.x > 5 || o.position.y > 5 || o.position.z > 5) - { + if (o.position.x > 5 || o.position.y > 5 || o.position.z > 5) { o.position.y = 0; o.position.z = 0; o.position.x = 0; diff --git a/RG/three.js b/RG_WebPage_Visualization/three.js similarity index 52% rename from RG/three.js rename to RG_WebPage_Visualization/three.js index c09d737..c3bb8d0 100644 --- a/RG/three.js +++ b/RG_WebPage_Visualization/three.js @@ -1,25 +1,26 @@ (function (global, factory) { typeof exports === 'object' && typeof module !== 'undefined' ? factory(exports) : - typeof define === 'function' && define.amd ? define(['exports'], factory) : - (factory((global.THREE = {}))); -}(this, (function (exports) { 'use strict'; + typeof define === 'function' && define.amd ? define(['exports'], factory) : + (factory((global.THREE = {}))); +}(this, (function (exports) { + 'use strict'; // Polyfills - if ( Number.EPSILON === undefined ) { + if (Number.EPSILON === undefined) { - Number.EPSILON = Math.pow( 2, - 52 ); + Number.EPSILON = Math.pow(2, - 52); } - if ( Number.isInteger === undefined ) { + if (Number.isInteger === undefined) { // Missing in IE // https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Number/isInteger - Number.isInteger = function ( value ) { + Number.isInteger = function (value) { - return typeof value === 'number' && isFinite( value ) && Math.floor( value ) === value; + return typeof value === 'number' && isFinite(value) && Math.floor(value) === value; }; @@ -27,63 +28,63 @@ // - if ( Math.sign === undefined ) { + if (Math.sign === undefined) { // https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Math/sign - Math.sign = function ( x ) { + Math.sign = function (x) { - return ( x < 0 ) ? - 1 : ( x > 0 ) ? 1 : + x; + return (x < 0) ? - 1 : (x > 0) ? 1 : + x; }; } - if ( 'name' in Function.prototype === false ) { + if ('name' in Function.prototype === false) { // Missing in IE // https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Function/name - Object.defineProperty( Function.prototype, 'name', { + Object.defineProperty(Function.prototype, 'name', { get: function () { - return this.toString().match( /^\s*function\s*([^\(\s]*)/ )[ 1 ]; + return this.toString().match(/^\s*function\s*([^\(\s]*)/)[1]; } - } ); + }); } - if ( Object.assign === undefined ) { + if (Object.assign === undefined) { // Missing in IE // https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Object/assign - ( function () { + (function () { - Object.assign = function ( target ) { + Object.assign = function (target) { - if ( target === undefined || target === null ) { + if (target === undefined || target === null) { - throw new TypeError( 'Cannot convert undefined or null to object' ); + throw new TypeError('Cannot convert undefined or null to object'); } - var output = Object( target ); + var output = Object(target); - for ( var index = 1; index < arguments.length; index ++ ) { + for (var index = 1; index < arguments.length; index++) { - var source = arguments[ index ]; + var source = arguments[index]; - if ( source !== undefined && source !== null ) { + if (source !== undefined && source !== null) { - for ( var nextKey in source ) { + for (var nextKey in source) { - if ( Object.prototype.hasOwnProperty.call( source, nextKey ) ) { + if (Object.prototype.hasOwnProperty.call(source, nextKey)) { - output[ nextKey ] = source[ nextKey ]; + output[nextKey] = source[nextKey]; } @@ -97,7 +98,7 @@ }; - } )(); + })(); } @@ -105,54 +106,54 @@ * https://github.com/mrdoob/eventdispatcher.js/ */ - function EventDispatcher() {} + function EventDispatcher() { } - Object.assign( EventDispatcher.prototype, { + Object.assign(EventDispatcher.prototype, { - addEventListener: function ( type, listener ) { + addEventListener: function (type, listener) { - if ( this._listeners === undefined ) this._listeners = {}; + if (this._listeners === undefined) this._listeners = {}; var listeners = this._listeners; - if ( listeners[ type ] === undefined ) { + if (listeners[type] === undefined) { - listeners[ type ] = []; + listeners[type] = []; } - if ( listeners[ type ].indexOf( listener ) === - 1 ) { + if (listeners[type].indexOf(listener) === - 1) { - listeners[ type ].push( listener ); + listeners[type].push(listener); } }, - hasEventListener: function ( type, listener ) { + hasEventListener: function (type, listener) { - if ( this._listeners === undefined ) return false; + if (this._listeners === undefined) return false; var listeners = this._listeners; - return listeners[ type ] !== undefined && listeners[ type ].indexOf( listener ) !== - 1; + return listeners[type] !== undefined && listeners[type].indexOf(listener) !== - 1; }, - removeEventListener: function ( type, listener ) { + removeEventListener: function (type, listener) { - if ( this._listeners === undefined ) return; + if (this._listeners === undefined) return; var listeners = this._listeners; - var listenerArray = listeners[ type ]; + var listenerArray = listeners[type]; - if ( listenerArray !== undefined ) { + if (listenerArray !== undefined) { - var index = listenerArray.indexOf( listener ); + var index = listenerArray.indexOf(listener); - if ( index !== - 1 ) { + if (index !== - 1) { - listenerArray.splice( index, 1 ); + listenerArray.splice(index, 1); } @@ -160,22 +161,22 @@ }, - dispatchEvent: function ( event ) { + dispatchEvent: function (event) { - if ( this._listeners === undefined ) return; + if (this._listeners === undefined) return; var listeners = this._listeners; - var listenerArray = listeners[ event.type ]; + var listenerArray = listeners[event.type]; - if ( listenerArray !== undefined ) { + if (listenerArray !== undefined) { event.target = this; - var array = listenerArray.slice( 0 ); + var array = listenerArray.slice(0); - for ( var i = 0, l = array.length; i < l; i ++ ) { + for (var i = 0, l = array.length; i < l; i++) { - array[ i ].call( this, event ); + array[i].call(this, event); } @@ -183,7 +184,7 @@ } - } ); + }); var REVISION = '98'; var MOUSE = { LEFT: 0, MIDDLE: 1, RIGHT: 2 }; @@ -338,15 +339,15 @@ DEG2RAD: Math.PI / 180, RAD2DEG: 180 / Math.PI, - generateUUID: ( function () { + generateUUID: (function () { // http://stackoverflow.com/questions/105034/how-to-create-a-guid-uuid-in-javascript/21963136#21963136 var lut = []; - for ( var i = 0; i < 256; i ++ ) { + for (var i = 0; i < 256; i++) { - lut[ i ] = ( i < 16 ? '0' : '' ) + ( i ).toString( 16 ); + lut[i] = (i < 16 ? '0' : '') + (i).toString(16); } @@ -356,124 +357,124 @@ var d1 = Math.random() * 0xffffffff | 0; var d2 = Math.random() * 0xffffffff | 0; var d3 = Math.random() * 0xffffffff | 0; - var uuid = lut[ d0 & 0xff ] + lut[ d0 >> 8 & 0xff ] + lut[ d0 >> 16 & 0xff ] + lut[ d0 >> 24 & 0xff ] + '-' + - lut[ d1 & 0xff ] + lut[ d1 >> 8 & 0xff ] + '-' + lut[ d1 >> 16 & 0x0f | 0x40 ] + lut[ d1 >> 24 & 0xff ] + '-' + - lut[ d2 & 0x3f | 0x80 ] + lut[ d2 >> 8 & 0xff ] + '-' + lut[ d2 >> 16 & 0xff ] + lut[ d2 >> 24 & 0xff ] + - lut[ d3 & 0xff ] + lut[ d3 >> 8 & 0xff ] + lut[ d3 >> 16 & 0xff ] + lut[ d3 >> 24 & 0xff ]; + var uuid = lut[d0 & 0xff] + lut[d0 >> 8 & 0xff] + lut[d0 >> 16 & 0xff] + lut[d0 >> 24 & 0xff] + '-' + + lut[d1 & 0xff] + lut[d1 >> 8 & 0xff] + '-' + lut[d1 >> 16 & 0x0f | 0x40] + lut[d1 >> 24 & 0xff] + '-' + + lut[d2 & 0x3f | 0x80] + lut[d2 >> 8 & 0xff] + '-' + lut[d2 >> 16 & 0xff] + lut[d2 >> 24 & 0xff] + + lut[d3 & 0xff] + lut[d3 >> 8 & 0xff] + lut[d3 >> 16 & 0xff] + lut[d3 >> 24 & 0xff]; // .toUpperCase() here flattens concatenated strings to save heap memory space. return uuid.toUpperCase(); }; - } )(), + })(), - clamp: function ( value, min, max ) { + clamp: function (value, min, max) { - return Math.max( min, Math.min( max, value ) ); + return Math.max(min, Math.min(max, value)); }, // compute euclidian modulo of m % n // https://en.wikipedia.org/wiki/Modulo_operation - euclideanModulo: function ( n, m ) { + euclideanModulo: function (n, m) { - return ( ( n % m ) + m ) % m; + return ((n % m) + m) % m; }, // Linear mapping from range to range - mapLinear: function ( x, a1, a2, b1, b2 ) { + mapLinear: function (x, a1, a2, b1, b2) { - return b1 + ( x - a1 ) * ( b2 - b1 ) / ( a2 - a1 ); + return b1 + (x - a1) * (b2 - b1) / (a2 - a1); }, // https://en.wikipedia.org/wiki/Linear_interpolation - lerp: function ( x, y, t ) { + lerp: function (x, y, t) { - return ( 1 - t ) * x + t * y; + return (1 - t) * x + t * y; }, // http://en.wikipedia.org/wiki/Smoothstep - smoothstep: function ( x, min, max ) { + smoothstep: function (x, min, max) { - if ( x <= min ) return 0; - if ( x >= max ) return 1; + if (x <= min) return 0; + if (x >= max) return 1; - x = ( x - min ) / ( max - min ); + x = (x - min) / (max - min); - return x * x * ( 3 - 2 * x ); + return x * x * (3 - 2 * x); }, - smootherstep: function ( x, min, max ) { + smootherstep: function (x, min, max) { - if ( x <= min ) return 0; - if ( x >= max ) return 1; + if (x <= min) return 0; + if (x >= max) return 1; - x = ( x - min ) / ( max - min ); + x = (x - min) / (max - min); - return x * x * x * ( x * ( x * 6 - 15 ) + 10 ); + return x * x * x * (x * (x * 6 - 15) + 10); }, // Random integer from interval - randInt: function ( low, high ) { + randInt: function (low, high) { - return low + Math.floor( Math.random() * ( high - low + 1 ) ); + return low + Math.floor(Math.random() * (high - low + 1)); }, // Random float from interval - randFloat: function ( low, high ) { + randFloat: function (low, high) { - return low + Math.random() * ( high - low ); + return low + Math.random() * (high - low); }, // Random float from <-range/2, range/2> interval - randFloatSpread: function ( range ) { + randFloatSpread: function (range) { - return range * ( 0.5 - Math.random() ); + return range * (0.5 - Math.random()); }, - degToRad: function ( degrees ) { + degToRad: function (degrees) { return degrees * _Math.DEG2RAD; }, - radToDeg: function ( radians ) { + radToDeg: function (radians) { return radians * _Math.RAD2DEG; }, - isPowerOfTwo: function ( value ) { + isPowerOfTwo: function (value) { - return ( value & ( value - 1 ) ) === 0 && value !== 0; + return (value & (value - 1)) === 0 && value !== 0; }, - ceilPowerOfTwo: function ( value ) { + ceilPowerOfTwo: function (value) { - return Math.pow( 2, Math.ceil( Math.log( value ) / Math.LN2 ) ); + return Math.pow(2, Math.ceil(Math.log(value) / Math.LN2)); }, - floorPowerOfTwo: function ( value ) { + floorPowerOfTwo: function (value) { - return Math.pow( 2, Math.floor( Math.log( value ) / Math.LN2 ) ); + return Math.pow(2, Math.floor(Math.log(value) / Math.LN2)); } @@ -486,14 +487,14 @@ * @author zz85 / http://www.lab4games.net/zz85/blog */ - function Vector2( x, y ) { + function Vector2(x, y) { this.x = x || 0; this.y = y || 0; } - Object.defineProperties( Vector2.prototype, { + Object.defineProperties(Vector2.prototype, { "width": { @@ -503,7 +504,7 @@ }, - set: function ( value ) { + set: function (value) { this.x = value; @@ -519,7 +520,7 @@ }, - set: function ( value ) { + set: function (value) { this.y = value; @@ -527,13 +528,13 @@ } - } ); + }); - Object.assign( Vector2.prototype, { + Object.assign(Vector2.prototype, { isVector2: true, - set: function ( x, y ) { + set: function (x, y) { this.x = x; this.y = y; @@ -542,7 +543,7 @@ }, - setScalar: function ( scalar ) { + setScalar: function (scalar) { this.x = scalar; this.y = scalar; @@ -551,7 +552,7 @@ }, - setX: function ( x ) { + setX: function (x) { this.x = x; @@ -559,7 +560,7 @@ }, - setY: function ( y ) { + setY: function (y) { this.y = y; @@ -567,13 +568,13 @@ }, - setComponent: function ( index, value ) { + setComponent: function (index, value) { - switch ( index ) { + switch (index) { case 0: this.x = value; break; case 1: this.y = value; break; - default: throw new Error( 'index is out of range: ' + index ); + default: throw new Error('index is out of range: ' + index); } @@ -581,13 +582,13 @@ }, - getComponent: function ( index ) { + getComponent: function (index) { - switch ( index ) { + switch (index) { case 0: return this.x; case 1: return this.y; - default: throw new Error( 'index is out of range: ' + index ); + default: throw new Error('index is out of range: ' + index); } @@ -595,11 +596,11 @@ clone: function () { - return new this.constructor( this.x, this.y ); + return new this.constructor(this.x, this.y); }, - copy: function ( v ) { + copy: function (v) { this.x = v.x; this.y = v.y; @@ -608,12 +609,12 @@ }, - add: function ( v, w ) { + add: function (v, w) { - if ( w !== undefined ) { + if (w !== undefined) { - console.warn( 'THREE.Vector2: .add() now only accepts one argument. Use .addVectors( a, b ) instead.' ); - return this.addVectors( v, w ); + console.warn('THREE.Vector2: .add() now only accepts one argument. Use .addVectors( a, b ) instead.'); + return this.addVectors(v, w); } @@ -624,7 +625,7 @@ }, - addScalar: function ( s ) { + addScalar: function (s) { this.x += s; this.y += s; @@ -633,7 +634,7 @@ }, - addVectors: function ( a, b ) { + addVectors: function (a, b) { this.x = a.x + b.x; this.y = a.y + b.y; @@ -642,7 +643,7 @@ }, - addScaledVector: function ( v, s ) { + addScaledVector: function (v, s) { this.x += v.x * s; this.y += v.y * s; @@ -651,12 +652,12 @@ }, - sub: function ( v, w ) { + sub: function (v, w) { - if ( w !== undefined ) { + if (w !== undefined) { - console.warn( 'THREE.Vector2: .sub() now only accepts one argument. Use .subVectors( a, b ) instead.' ); - return this.subVectors( v, w ); + console.warn('THREE.Vector2: .sub() now only accepts one argument. Use .subVectors( a, b ) instead.'); + return this.subVectors(v, w); } @@ -667,7 +668,7 @@ }, - subScalar: function ( s ) { + subScalar: function (s) { this.x -= s; this.y -= s; @@ -676,7 +677,7 @@ }, - subVectors: function ( a, b ) { + subVectors: function (a, b) { this.x = a.x - b.x; this.y = a.y - b.y; @@ -685,7 +686,7 @@ }, - multiply: function ( v ) { + multiply: function (v) { this.x *= v.x; this.y *= v.y; @@ -694,7 +695,7 @@ }, - multiplyScalar: function ( scalar ) { + multiplyScalar: function (scalar) { this.x *= scalar; this.y *= scalar; @@ -703,7 +704,7 @@ }, - divide: function ( v ) { + divide: function (v) { this.x /= v.x; this.y /= v.y; @@ -712,48 +713,48 @@ }, - divideScalar: function ( scalar ) { + divideScalar: function (scalar) { - return this.multiplyScalar( 1 / scalar ); + return this.multiplyScalar(1 / scalar); }, - applyMatrix3: function ( m ) { + applyMatrix3: function (m) { var x = this.x, y = this.y; var e = m.elements; - this.x = e[ 0 ] * x + e[ 3 ] * y + e[ 6 ]; - this.y = e[ 1 ] * x + e[ 4 ] * y + e[ 7 ]; + this.x = e[0] * x + e[3] * y + e[6]; + this.y = e[1] * x + e[4] * y + e[7]; return this; }, - min: function ( v ) { + min: function (v) { - this.x = Math.min( this.x, v.x ); - this.y = Math.min( this.y, v.y ); + this.x = Math.min(this.x, v.x); + this.y = Math.min(this.y, v.y); return this; }, - max: function ( v ) { + max: function (v) { - this.x = Math.max( this.x, v.x ); - this.y = Math.max( this.y, v.y ); + this.x = Math.max(this.x, v.x); + this.y = Math.max(this.y, v.y); return this; }, - clamp: function ( min, max ) { + clamp: function (min, max) { // assumes min < max, componentwise - this.x = Math.max( min.x, Math.min( max.x, this.x ) ); - this.y = Math.max( min.y, Math.min( max.y, this.y ) ); + this.x = Math.max(min.x, Math.min(max.x, this.x)); + this.y = Math.max(min.y, Math.min(max.y, this.y)); return this; @@ -764,29 +765,29 @@ var min = new Vector2(); var max = new Vector2(); - return function clampScalar( minVal, maxVal ) { + return function clampScalar(minVal, maxVal) { - min.set( minVal, minVal ); - max.set( maxVal, maxVal ); + min.set(minVal, minVal); + max.set(maxVal, maxVal); - return this.clamp( min, max ); + return this.clamp(min, max); }; }(), - clampLength: function ( min, max ) { + clampLength: function (min, max) { var length = this.length(); - return this.divideScalar( length || 1 ).multiplyScalar( Math.max( min, Math.min( max, length ) ) ); + return this.divideScalar(length || 1).multiplyScalar(Math.max(min, Math.min(max, length))); }, floor: function () { - this.x = Math.floor( this.x ); - this.y = Math.floor( this.y ); + this.x = Math.floor(this.x); + this.y = Math.floor(this.y); return this; @@ -794,8 +795,8 @@ ceil: function () { - this.x = Math.ceil( this.x ); - this.y = Math.ceil( this.y ); + this.x = Math.ceil(this.x); + this.y = Math.ceil(this.y); return this; @@ -803,8 +804,8 @@ round: function () { - this.x = Math.round( this.x ); - this.y = Math.round( this.y ); + this.x = Math.round(this.x); + this.y = Math.round(this.y); return this; @@ -812,8 +813,8 @@ roundToZero: function () { - this.x = ( this.x < 0 ) ? Math.ceil( this.x ) : Math.floor( this.x ); - this.y = ( this.y < 0 ) ? Math.ceil( this.y ) : Math.floor( this.y ); + this.x = (this.x < 0) ? Math.ceil(this.x) : Math.floor(this.x); + this.y = (this.y < 0) ? Math.ceil(this.y) : Math.floor(this.y); return this; @@ -828,13 +829,13 @@ }, - dot: function ( v ) { + dot: function (v) { return this.x * v.x + this.y * v.y; }, - cross: function ( v ) { + cross: function (v) { return this.x * v.y - this.y * v.x; @@ -848,19 +849,19 @@ length: function () { - return Math.sqrt( this.x * this.x + this.y * this.y ); + return Math.sqrt(this.x * this.x + this.y * this.y); }, manhattanLength: function () { - return Math.abs( this.x ) + Math.abs( this.y ); + return Math.abs(this.x) + Math.abs(this.y); }, normalize: function () { - return this.divideScalar( this.length() || 1 ); + return this.divideScalar(this.length() || 1); }, @@ -868,101 +869,101 @@ // computes the angle in radians with respect to the positive x-axis - var angle = Math.atan2( this.y, this.x ); + var angle = Math.atan2(this.y, this.x); - if ( angle < 0 ) angle += 2 * Math.PI; + if (angle < 0) angle += 2 * Math.PI; return angle; }, - distanceTo: function ( v ) { + distanceTo: function (v) { - return Math.sqrt( this.distanceToSquared( v ) ); + return Math.sqrt(this.distanceToSquared(v)); }, - distanceToSquared: function ( v ) { + distanceToSquared: function (v) { var dx = this.x - v.x, dy = this.y - v.y; return dx * dx + dy * dy; }, - manhattanDistanceTo: function ( v ) { + manhattanDistanceTo: function (v) { - return Math.abs( this.x - v.x ) + Math.abs( this.y - v.y ); + return Math.abs(this.x - v.x) + Math.abs(this.y - v.y); }, - setLength: function ( length ) { + setLength: function (length) { - return this.normalize().multiplyScalar( length ); + return this.normalize().multiplyScalar(length); }, - lerp: function ( v, alpha ) { + lerp: function (v, alpha) { - this.x += ( v.x - this.x ) * alpha; - this.y += ( v.y - this.y ) * alpha; + this.x += (v.x - this.x) * alpha; + this.y += (v.y - this.y) * alpha; return this; }, - lerpVectors: function ( v1, v2, alpha ) { + lerpVectors: function (v1, v2, alpha) { - return this.subVectors( v2, v1 ).multiplyScalar( alpha ).add( v1 ); + return this.subVectors(v2, v1).multiplyScalar(alpha).add(v1); }, - equals: function ( v ) { + equals: function (v) { - return ( ( v.x === this.x ) && ( v.y === this.y ) ); + return ((v.x === this.x) && (v.y === this.y)); }, - fromArray: function ( array, offset ) { + fromArray: function (array, offset) { - if ( offset === undefined ) offset = 0; + if (offset === undefined) offset = 0; - this.x = array[ offset ]; - this.y = array[ offset + 1 ]; + this.x = array[offset]; + this.y = array[offset + 1]; return this; }, - toArray: function ( array, offset ) { + toArray: function (array, offset) { - if ( array === undefined ) array = []; - if ( offset === undefined ) offset = 0; + if (array === undefined) array = []; + if (offset === undefined) offset = 0; - array[ offset ] = this.x; - array[ offset + 1 ] = this.y; + array[offset] = this.x; + array[offset + 1] = this.y; return array; }, - fromBufferAttribute: function ( attribute, index, offset ) { + fromBufferAttribute: function (attribute, index, offset) { - if ( offset !== undefined ) { + if (offset !== undefined) { - console.warn( 'THREE.Vector2: offset has been removed from .fromBufferAttribute().' ); + console.warn('THREE.Vector2: offset has been removed from .fromBufferAttribute().'); } - this.x = attribute.getX( index ); - this.y = attribute.getY( index ); + this.x = attribute.getX(index); + this.y = attribute.getY(index); return this; }, - rotateAround: function ( center, angle ) { + rotateAround: function (center, angle) { - var c = Math.cos( angle ), s = Math.sin( angle ); + var c = Math.cos(angle), s = Math.sin(angle); var x = this.x - center.x; var y = this.y - center.y; @@ -974,7 +975,7 @@ } - } ); + }); /** * @author mrdoob / http://mrdoob.com/ @@ -1000,26 +1001,26 @@ ]; - if ( arguments.length > 0 ) { + if (arguments.length > 0) { - console.error( 'THREE.Matrix4: the constructor no longer reads arguments. use .set() instead.' ); + console.error('THREE.Matrix4: the constructor no longer reads arguments. use .set() instead.'); } } - Object.assign( Matrix4.prototype, { + Object.assign(Matrix4.prototype, { isMatrix4: true, - set: function ( n11, n12, n13, n14, n21, n22, n23, n24, n31, n32, n33, n34, n41, n42, n43, n44 ) { + set: function (n11, n12, n13, n14, n21, n22, n23, n24, n31, n32, n33, n34, n41, n42, n43, n44) { var te = this.elements; - te[ 0 ] = n11; te[ 4 ] = n12; te[ 8 ] = n13; te[ 12 ] = n14; - te[ 1 ] = n21; te[ 5 ] = n22; te[ 9 ] = n23; te[ 13 ] = n24; - te[ 2 ] = n31; te[ 6 ] = n32; te[ 10 ] = n33; te[ 14 ] = n34; - te[ 3 ] = n41; te[ 7 ] = n42; te[ 11 ] = n43; te[ 15 ] = n44; + te[0] = n11; te[4] = n12; te[8] = n13; te[12] = n14; + te[1] = n21; te[5] = n22; te[9] = n23; te[13] = n24; + te[2] = n31; te[6] = n32; te[10] = n33; te[14] = n34; + te[3] = n41; te[7] = n42; te[11] = n43; te[15] = n44; return this; @@ -1042,47 +1043,47 @@ clone: function () { - return new Matrix4().fromArray( this.elements ); + return new Matrix4().fromArray(this.elements); }, - copy: function ( m ) { + copy: function (m) { var te = this.elements; var me = m.elements; - te[ 0 ] = me[ 0 ]; te[ 1 ] = me[ 1 ]; te[ 2 ] = me[ 2 ]; te[ 3 ] = me[ 3 ]; - te[ 4 ] = me[ 4 ]; te[ 5 ] = me[ 5 ]; te[ 6 ] = me[ 6 ]; te[ 7 ] = me[ 7 ]; - te[ 8 ] = me[ 8 ]; te[ 9 ] = me[ 9 ]; te[ 10 ] = me[ 10 ]; te[ 11 ] = me[ 11 ]; - te[ 12 ] = me[ 12 ]; te[ 13 ] = me[ 13 ]; te[ 14 ] = me[ 14 ]; te[ 15 ] = me[ 15 ]; + te[0] = me[0]; te[1] = me[1]; te[2] = me[2]; te[3] = me[3]; + te[4] = me[4]; te[5] = me[5]; te[6] = me[6]; te[7] = me[7]; + te[8] = me[8]; te[9] = me[9]; te[10] = me[10]; te[11] = me[11]; + te[12] = me[12]; te[13] = me[13]; te[14] = me[14]; te[15] = me[15]; return this; }, - copyPosition: function ( m ) { + copyPosition: function (m) { var te = this.elements, me = m.elements; - te[ 12 ] = me[ 12 ]; - te[ 13 ] = me[ 13 ]; - te[ 14 ] = me[ 14 ]; + te[12] = me[12]; + te[13] = me[13]; + te[14] = me[14]; return this; }, - extractBasis: function ( xAxis, yAxis, zAxis ) { + extractBasis: function (xAxis, yAxis, zAxis) { - xAxis.setFromMatrixColumn( this, 0 ); - yAxis.setFromMatrixColumn( this, 1 ); - zAxis.setFromMatrixColumn( this, 2 ); + xAxis.setFromMatrixColumn(this, 0); + yAxis.setFromMatrixColumn(this, 1); + zAxis.setFromMatrixColumn(this, 2); return this; }, - makeBasis: function ( xAxis, yAxis, zAxis ) { + makeBasis: function (xAxis, yAxis, zAxis) { this.set( xAxis.x, yAxis.x, zAxis.x, 0, @@ -1099,36 +1100,36 @@ var v1 = new Vector3(); - return function extractRotation( m ) { + return function extractRotation(m) { // this method does not support reflection matrices var te = this.elements; var me = m.elements; - var scaleX = 1 / v1.setFromMatrixColumn( m, 0 ).length(); - var scaleY = 1 / v1.setFromMatrixColumn( m, 1 ).length(); - var scaleZ = 1 / v1.setFromMatrixColumn( m, 2 ).length(); + var scaleX = 1 / v1.setFromMatrixColumn(m, 0).length(); + var scaleY = 1 / v1.setFromMatrixColumn(m, 1).length(); + var scaleZ = 1 / v1.setFromMatrixColumn(m, 2).length(); - te[ 0 ] = me[ 0 ] * scaleX; - te[ 1 ] = me[ 1 ] * scaleX; - te[ 2 ] = me[ 2 ] * scaleX; - te[ 3 ] = 0; + te[0] = me[0] * scaleX; + te[1] = me[1] * scaleX; + te[2] = me[2] * scaleX; + te[3] = 0; - te[ 4 ] = me[ 4 ] * scaleY; - te[ 5 ] = me[ 5 ] * scaleY; - te[ 6 ] = me[ 6 ] * scaleY; - te[ 7 ] = 0; + te[4] = me[4] * scaleY; + te[5] = me[5] * scaleY; + te[6] = me[6] * scaleY; + te[7] = 0; - te[ 8 ] = me[ 8 ] * scaleZ; - te[ 9 ] = me[ 9 ] * scaleZ; - te[ 10 ] = me[ 10 ] * scaleZ; - te[ 11 ] = 0; + te[8] = me[8] * scaleZ; + te[9] = me[9] * scaleZ; + te[10] = me[10] * scaleZ; + te[11] = 0; - te[ 12 ] = 0; - te[ 13 ] = 0; - te[ 14 ] = 0; - te[ 15 ] = 1; + te[12] = 0; + te[13] = 0; + te[14] = 0; + te[15] = 1; return this; @@ -1136,129 +1137,129 @@ }(), - makeRotationFromEuler: function ( euler ) { + makeRotationFromEuler: function (euler) { - if ( ! ( euler && euler.isEuler ) ) { + if (!(euler && euler.isEuler)) { - console.error( 'THREE.Matrix4: .makeRotationFromEuler() now expects a Euler rotation rather than a Vector3 and order.' ); + console.error('THREE.Matrix4: .makeRotationFromEuler() now expects a Euler rotation rather than a Vector3 and order.'); } var te = this.elements; var x = euler.x, y = euler.y, z = euler.z; - var a = Math.cos( x ), b = Math.sin( x ); - var c = Math.cos( y ), d = Math.sin( y ); - var e = Math.cos( z ), f = Math.sin( z ); + var a = Math.cos(x), b = Math.sin(x); + var c = Math.cos(y), d = Math.sin(y); + var e = Math.cos(z), f = Math.sin(z); - if ( euler.order === 'XYZ' ) { + if (euler.order === 'XYZ') { var ae = a * e, af = a * f, be = b * e, bf = b * f; - te[ 0 ] = c * e; - te[ 4 ] = - c * f; - te[ 8 ] = d; + te[0] = c * e; + te[4] = - c * f; + te[8] = d; - te[ 1 ] = af + be * d; - te[ 5 ] = ae - bf * d; - te[ 9 ] = - b * c; + te[1] = af + be * d; + te[5] = ae - bf * d; + te[9] = - b * c; - te[ 2 ] = bf - ae * d; - te[ 6 ] = be + af * d; - te[ 10 ] = a * c; + te[2] = bf - ae * d; + te[6] = be + af * d; + te[10] = a * c; - } else if ( euler.order === 'YXZ' ) { + } else if (euler.order === 'YXZ') { var ce = c * e, cf = c * f, de = d * e, df = d * f; - te[ 0 ] = ce + df * b; - te[ 4 ] = de * b - cf; - te[ 8 ] = a * d; + te[0] = ce + df * b; + te[4] = de * b - cf; + te[8] = a * d; - te[ 1 ] = a * f; - te[ 5 ] = a * e; - te[ 9 ] = - b; + te[1] = a * f; + te[5] = a * e; + te[9] = - b; - te[ 2 ] = cf * b - de; - te[ 6 ] = df + ce * b; - te[ 10 ] = a * c; + te[2] = cf * b - de; + te[6] = df + ce * b; + te[10] = a * c; - } else if ( euler.order === 'ZXY' ) { + } else if (euler.order === 'ZXY') { var ce = c * e, cf = c * f, de = d * e, df = d * f; - te[ 0 ] = ce - df * b; - te[ 4 ] = - a * f; - te[ 8 ] = de + cf * b; + te[0] = ce - df * b; + te[4] = - a * f; + te[8] = de + cf * b; - te[ 1 ] = cf + de * b; - te[ 5 ] = a * e; - te[ 9 ] = df - ce * b; + te[1] = cf + de * b; + te[5] = a * e; + te[9] = df - ce * b; - te[ 2 ] = - a * d; - te[ 6 ] = b; - te[ 10 ] = a * c; + te[2] = - a * d; + te[6] = b; + te[10] = a * c; - } else if ( euler.order === 'ZYX' ) { + } else if (euler.order === 'ZYX') { var ae = a * e, af = a * f, be = b * e, bf = b * f; - te[ 0 ] = c * e; - te[ 4 ] = be * d - af; - te[ 8 ] = ae * d + bf; + te[0] = c * e; + te[4] = be * d - af; + te[8] = ae * d + bf; - te[ 1 ] = c * f; - te[ 5 ] = bf * d + ae; - te[ 9 ] = af * d - be; + te[1] = c * f; + te[5] = bf * d + ae; + te[9] = af * d - be; - te[ 2 ] = - d; - te[ 6 ] = b * c; - te[ 10 ] = a * c; + te[2] = - d; + te[6] = b * c; + te[10] = a * c; - } else if ( euler.order === 'YZX' ) { + } else if (euler.order === 'YZX') { var ac = a * c, ad = a * d, bc = b * c, bd = b * d; - te[ 0 ] = c * e; - te[ 4 ] = bd - ac * f; - te[ 8 ] = bc * f + ad; + te[0] = c * e; + te[4] = bd - ac * f; + te[8] = bc * f + ad; - te[ 1 ] = f; - te[ 5 ] = a * e; - te[ 9 ] = - b * e; + te[1] = f; + te[5] = a * e; + te[9] = - b * e; - te[ 2 ] = - d * e; - te[ 6 ] = ad * f + bc; - te[ 10 ] = ac - bd * f; + te[2] = - d * e; + te[6] = ad * f + bc; + te[10] = ac - bd * f; - } else if ( euler.order === 'XZY' ) { + } else if (euler.order === 'XZY') { var ac = a * c, ad = a * d, bc = b * c, bd = b * d; - te[ 0 ] = c * e; - te[ 4 ] = - f; - te[ 8 ] = d * e; + te[0] = c * e; + te[4] = - f; + te[8] = d * e; - te[ 1 ] = ac * f + bd; - te[ 5 ] = a * e; - te[ 9 ] = ad * f - bc; + te[1] = ac * f + bd; + te[5] = a * e; + te[9] = ad * f - bc; - te[ 2 ] = bc * f - ad; - te[ 6 ] = b * e; - te[ 10 ] = bd * f + ac; + te[2] = bc * f - ad; + te[6] = b * e; + te[10] = bd * f + ac; } // bottom row - te[ 3 ] = 0; - te[ 7 ] = 0; - te[ 11 ] = 0; + te[3] = 0; + te[7] = 0; + te[11] = 0; // last column - te[ 12 ] = 0; - te[ 13 ] = 0; - te[ 14 ] = 0; - te[ 15 ] = 1; + te[12] = 0; + te[13] = 0; + te[14] = 0; + te[15] = 1; return this; @@ -1266,12 +1267,12 @@ makeRotationFromQuaternion: function () { - var zero = new Vector3( 0, 0, 0 ); - var one = new Vector3( 1, 1, 1 ); + var zero = new Vector3(0, 0, 0); + var one = new Vector3(1, 1, 1); - return function makeRotationFromQuaternion( q ) { + return function makeRotationFromQuaternion(q) { - return this.compose( zero, q, one ); + return this.compose(zero, q, one); }; @@ -1283,13 +1284,13 @@ var y = new Vector3(); var z = new Vector3(); - return function lookAt( eye, target, up ) { + return function lookAt(eye, target, up) { var te = this.elements; - z.subVectors( eye, target ); + z.subVectors(eye, target); - if ( z.lengthSq() === 0 ) { + if (z.lengthSq() === 0) { // eye and target are in the same position @@ -1298,13 +1299,13 @@ } z.normalize(); - x.crossVectors( up, z ); + x.crossVectors(up, z); - if ( x.lengthSq() === 0 ) { + if (x.lengthSq() === 0) { // up and z are parallel - if ( Math.abs( up.z ) === 1 ) { + if (Math.abs(up.z) === 1) { z.x += 0.0001; @@ -1315,16 +1316,16 @@ } z.normalize(); - x.crossVectors( up, z ); + x.crossVectors(up, z); } x.normalize(); - y.crossVectors( z, x ); + y.crossVectors(z, x); - te[ 0 ] = x.x; te[ 4 ] = y.x; te[ 8 ] = z.x; - te[ 1 ] = x.y; te[ 5 ] = y.y; te[ 9 ] = z.y; - te[ 2 ] = x.z; te[ 6 ] = y.z; te[ 10 ] = z.z; + te[0] = x.x; te[4] = y.x; te[8] = z.x; + te[1] = x.y; te[5] = y.y; te[9] = z.y; + te[2] = x.z; te[6] = y.z; te[10] = z.z; return this; @@ -1332,73 +1333,73 @@ }(), - multiply: function ( m, n ) { + multiply: function (m, n) { - if ( n !== undefined ) { + if (n !== undefined) { - console.warn( 'THREE.Matrix4: .multiply() now only accepts one argument. Use .multiplyMatrices( a, b ) instead.' ); - return this.multiplyMatrices( m, n ); + console.warn('THREE.Matrix4: .multiply() now only accepts one argument. Use .multiplyMatrices( a, b ) instead.'); + return this.multiplyMatrices(m, n); } - return this.multiplyMatrices( this, m ); + return this.multiplyMatrices(this, m); }, - premultiply: function ( m ) { + premultiply: function (m) { - return this.multiplyMatrices( m, this ); + return this.multiplyMatrices(m, this); }, - multiplyMatrices: function ( a, b ) { + multiplyMatrices: function (a, b) { var ae = a.elements; var be = b.elements; var te = this.elements; - var a11 = ae[ 0 ], a12 = ae[ 4 ], a13 = ae[ 8 ], a14 = ae[ 12 ]; - var a21 = ae[ 1 ], a22 = ae[ 5 ], a23 = ae[ 9 ], a24 = ae[ 13 ]; - var a31 = ae[ 2 ], a32 = ae[ 6 ], a33 = ae[ 10 ], a34 = ae[ 14 ]; - var a41 = ae[ 3 ], a42 = ae[ 7 ], a43 = ae[ 11 ], a44 = ae[ 15 ]; + var a11 = ae[0], a12 = ae[4], a13 = ae[8], a14 = ae[12]; + var a21 = ae[1], a22 = ae[5], a23 = ae[9], a24 = ae[13]; + var a31 = ae[2], a32 = ae[6], a33 = ae[10], a34 = ae[14]; + var a41 = ae[3], a42 = ae[7], a43 = ae[11], a44 = ae[15]; - var b11 = be[ 0 ], b12 = be[ 4 ], b13 = be[ 8 ], b14 = be[ 12 ]; - var b21 = be[ 1 ], b22 = be[ 5 ], b23 = be[ 9 ], b24 = be[ 13 ]; - var b31 = be[ 2 ], b32 = be[ 6 ], b33 = be[ 10 ], b34 = be[ 14 ]; - var b41 = be[ 3 ], b42 = be[ 7 ], b43 = be[ 11 ], b44 = be[ 15 ]; + var b11 = be[0], b12 = be[4], b13 = be[8], b14 = be[12]; + var b21 = be[1], b22 = be[5], b23 = be[9], b24 = be[13]; + var b31 = be[2], b32 = be[6], b33 = be[10], b34 = be[14]; + var b41 = be[3], b42 = be[7], b43 = be[11], b44 = be[15]; - te[ 0 ] = a11 * b11 + a12 * b21 + a13 * b31 + a14 * b41; - te[ 4 ] = a11 * b12 + a12 * b22 + a13 * b32 + a14 * b42; - te[ 8 ] = a11 * b13 + a12 * b23 + a13 * b33 + a14 * b43; - te[ 12 ] = a11 * b14 + a12 * b24 + a13 * b34 + a14 * b44; + te[0] = a11 * b11 + a12 * b21 + a13 * b31 + a14 * b41; + te[4] = a11 * b12 + a12 * b22 + a13 * b32 + a14 * b42; + te[8] = a11 * b13 + a12 * b23 + a13 * b33 + a14 * b43; + te[12] = a11 * b14 + a12 * b24 + a13 * b34 + a14 * b44; - te[ 1 ] = a21 * b11 + a22 * b21 + a23 * b31 + a24 * b41; - te[ 5 ] = a21 * b12 + a22 * b22 + a23 * b32 + a24 * b42; - te[ 9 ] = a21 * b13 + a22 * b23 + a23 * b33 + a24 * b43; - te[ 13 ] = a21 * b14 + a22 * b24 + a23 * b34 + a24 * b44; + te[1] = a21 * b11 + a22 * b21 + a23 * b31 + a24 * b41; + te[5] = a21 * b12 + a22 * b22 + a23 * b32 + a24 * b42; + te[9] = a21 * b13 + a22 * b23 + a23 * b33 + a24 * b43; + te[13] = a21 * b14 + a22 * b24 + a23 * b34 + a24 * b44; - te[ 2 ] = a31 * b11 + a32 * b21 + a33 * b31 + a34 * b41; - te[ 6 ] = a31 * b12 + a32 * b22 + a33 * b32 + a34 * b42; - te[ 10 ] = a31 * b13 + a32 * b23 + a33 * b33 + a34 * b43; - te[ 14 ] = a31 * b14 + a32 * b24 + a33 * b34 + a34 * b44; + te[2] = a31 * b11 + a32 * b21 + a33 * b31 + a34 * b41; + te[6] = a31 * b12 + a32 * b22 + a33 * b32 + a34 * b42; + te[10] = a31 * b13 + a32 * b23 + a33 * b33 + a34 * b43; + te[14] = a31 * b14 + a32 * b24 + a33 * b34 + a34 * b44; - te[ 3 ] = a41 * b11 + a42 * b21 + a43 * b31 + a44 * b41; - te[ 7 ] = a41 * b12 + a42 * b22 + a43 * b32 + a44 * b42; - te[ 11 ] = a41 * b13 + a42 * b23 + a43 * b33 + a44 * b43; - te[ 15 ] = a41 * b14 + a42 * b24 + a43 * b34 + a44 * b44; + te[3] = a41 * b11 + a42 * b21 + a43 * b31 + a44 * b41; + te[7] = a41 * b12 + a42 * b22 + a43 * b32 + a44 * b42; + te[11] = a41 * b13 + a42 * b23 + a43 * b33 + a44 * b43; + te[15] = a41 * b14 + a42 * b24 + a43 * b34 + a44 * b44; return this; }, - multiplyScalar: function ( s ) { + multiplyScalar: function (s) { var te = this.elements; - te[ 0 ] *= s; te[ 4 ] *= s; te[ 8 ] *= s; te[ 12 ] *= s; - te[ 1 ] *= s; te[ 5 ] *= s; te[ 9 ] *= s; te[ 13 ] *= s; - te[ 2 ] *= s; te[ 6 ] *= s; te[ 10 ] *= s; te[ 14 ] *= s; - te[ 3 ] *= s; te[ 7 ] *= s; te[ 11 ] *= s; te[ 15 ] *= s; + te[0] *= s; te[4] *= s; te[8] *= s; te[12] *= s; + te[1] *= s; te[5] *= s; te[9] *= s; te[13] *= s; + te[2] *= s; te[6] *= s; te[10] *= s; te[14] *= s; + te[3] *= s; te[7] *= s; te[11] *= s; te[15] *= s; return this; @@ -1408,17 +1409,17 @@ var v1 = new Vector3(); - return function applyToBufferAttribute( attribute ) { + return function applyToBufferAttribute(attribute) { - for ( var i = 0, l = attribute.count; i < l; i ++ ) { + for (var i = 0, l = attribute.count; i < l; i++) { - v1.x = attribute.getX( i ); - v1.y = attribute.getY( i ); - v1.z = attribute.getZ( i ); + v1.x = attribute.getX(i); + v1.y = attribute.getY(i); + v1.z = attribute.getZ(i); - v1.applyMatrix4( this ); + v1.applyMatrix4(this); - attribute.setXYZ( i, v1.x, v1.y, v1.z ); + attribute.setXYZ(i, v1.x, v1.y, v1.z); } @@ -1432,10 +1433,10 @@ var te = this.elements; - var n11 = te[ 0 ], n12 = te[ 4 ], n13 = te[ 8 ], n14 = te[ 12 ]; - var n21 = te[ 1 ], n22 = te[ 5 ], n23 = te[ 9 ], n24 = te[ 13 ]; - var n31 = te[ 2 ], n32 = te[ 6 ], n33 = te[ 10 ], n34 = te[ 14 ]; - var n41 = te[ 3 ], n42 = te[ 7 ], n43 = te[ 11 ], n44 = te[ 15 ]; + var n11 = te[0], n12 = te[4], n13 = te[8], n14 = te[12]; + var n21 = te[1], n22 = te[5], n23 = te[9], n24 = te[13]; + var n31 = te[2], n32 = te[6], n33 = te[10], n34 = te[14]; + var n41 = te[3], n42 = te[7], n43 = te[11], n44 = te[15]; //TODO: make this more efficient //( based on http://www.euclideanspace.com/maths/algebra/matrix/functions/inverse/fourD/index.htm ) @@ -1443,35 +1444,35 @@ return ( n41 * ( + n14 * n23 * n32 - - n13 * n24 * n32 - - n14 * n22 * n33 - + n12 * n24 * n33 - + n13 * n22 * n34 - - n12 * n23 * n34 + - n13 * n24 * n32 + - n14 * n22 * n33 + + n12 * n24 * n33 + + n13 * n22 * n34 + - n12 * n23 * n34 ) + n42 * ( + n11 * n23 * n34 - - n11 * n24 * n33 - + n14 * n21 * n33 - - n13 * n21 * n34 - + n13 * n24 * n31 - - n14 * n23 * n31 + - n11 * n24 * n33 + + n14 * n21 * n33 + - n13 * n21 * n34 + + n13 * n24 * n31 + - n14 * n23 * n31 ) + n43 * ( + n11 * n24 * n32 - - n11 * n22 * n34 - - n14 * n21 * n32 - + n12 * n21 * n34 - + n14 * n22 * n31 - - n12 * n24 * n31 + - n11 * n22 * n34 + - n14 * n21 * n32 + + n12 * n21 * n34 + + n14 * n22 * n31 + - n12 * n24 * n31 ) + n44 * ( - n13 * n22 * n31 - - n11 * n23 * n32 - + n11 * n22 * n33 - + n13 * n21 * n32 - - n12 * n21 * n33 - + n12 * n23 * n31 + - n11 * n23 * n32 + + n11 * n22 * n33 + + n13 * n21 * n32 + - n12 * n21 * n33 + + n12 * n23 * n31 ) ); @@ -1483,40 +1484,40 @@ var te = this.elements; var tmp; - tmp = te[ 1 ]; te[ 1 ] = te[ 4 ]; te[ 4 ] = tmp; - tmp = te[ 2 ]; te[ 2 ] = te[ 8 ]; te[ 8 ] = tmp; - tmp = te[ 6 ]; te[ 6 ] = te[ 9 ]; te[ 9 ] = tmp; + tmp = te[1]; te[1] = te[4]; te[4] = tmp; + tmp = te[2]; te[2] = te[8]; te[8] = tmp; + tmp = te[6]; te[6] = te[9]; te[9] = tmp; - tmp = te[ 3 ]; te[ 3 ] = te[ 12 ]; te[ 12 ] = tmp; - tmp = te[ 7 ]; te[ 7 ] = te[ 13 ]; te[ 13 ] = tmp; - tmp = te[ 11 ]; te[ 11 ] = te[ 14 ]; te[ 14 ] = tmp; + tmp = te[3]; te[3] = te[12]; te[12] = tmp; + tmp = te[7]; te[7] = te[13]; te[13] = tmp; + tmp = te[11]; te[11] = te[14]; te[14] = tmp; return this; }, - setPosition: function ( v ) { + setPosition: function (v) { var te = this.elements; - te[ 12 ] = v.x; - te[ 13 ] = v.y; - te[ 14 ] = v.z; + te[12] = v.x; + te[13] = v.y; + te[14] = v.z; return this; }, - getInverse: function ( m, throwOnDegenerate ) { + getInverse: function (m, throwOnDegenerate) { // based on http://www.euclideanspace.com/maths/algebra/matrix/functions/inverse/fourD/index.htm var te = this.elements, me = m.elements, - n11 = me[ 0 ], n21 = me[ 1 ], n31 = me[ 2 ], n41 = me[ 3 ], - n12 = me[ 4 ], n22 = me[ 5 ], n32 = me[ 6 ], n42 = me[ 7 ], - n13 = me[ 8 ], n23 = me[ 9 ], n33 = me[ 10 ], n43 = me[ 11 ], - n14 = me[ 12 ], n24 = me[ 13 ], n34 = me[ 14 ], n44 = me[ 15 ], + n11 = me[0], n21 = me[1], n31 = me[2], n41 = me[3], + n12 = me[4], n22 = me[5], n32 = me[6], n42 = me[7], + n13 = me[8], n23 = me[9], n33 = me[10], n43 = me[11], + n14 = me[12], n24 = me[13], n34 = me[14], n44 = me[15], t11 = n23 * n34 * n42 - n24 * n33 * n42 + n24 * n32 * n43 - n22 * n34 * n43 - n23 * n32 * n44 + n22 * n33 * n44, t12 = n14 * n33 * n42 - n13 * n34 * n42 - n14 * n32 * n43 + n12 * n34 * n43 + n13 * n32 * n44 - n12 * n33 * n44, @@ -1525,17 +1526,17 @@ var det = n11 * t11 + n21 * t12 + n31 * t13 + n41 * t14; - if ( det === 0 ) { + if (det === 0) { var msg = "THREE.Matrix4: .getInverse() can't invert matrix, determinant is 0"; - if ( throwOnDegenerate === true ) { + if (throwOnDegenerate === true) { - throw new Error( msg ); + throw new Error(msg); } else { - console.warn( msg ); + console.warn(msg); } @@ -1545,39 +1546,39 @@ var detInv = 1 / det; - te[ 0 ] = t11 * detInv; - te[ 1 ] = ( n24 * n33 * n41 - n23 * n34 * n41 - n24 * n31 * n43 + n21 * n34 * n43 + n23 * n31 * n44 - n21 * n33 * n44 ) * detInv; - te[ 2 ] = ( n22 * n34 * n41 - n24 * n32 * n41 + n24 * n31 * n42 - n21 * n34 * n42 - n22 * n31 * n44 + n21 * n32 * n44 ) * detInv; - te[ 3 ] = ( n23 * n32 * n41 - n22 * n33 * n41 - n23 * n31 * n42 + n21 * n33 * n42 + n22 * n31 * n43 - n21 * n32 * n43 ) * detInv; + te[0] = t11 * detInv; + te[1] = (n24 * n33 * n41 - n23 * n34 * n41 - n24 * n31 * n43 + n21 * n34 * n43 + n23 * n31 * n44 - n21 * n33 * n44) * detInv; + te[2] = (n22 * n34 * n41 - n24 * n32 * n41 + n24 * n31 * n42 - n21 * n34 * n42 - n22 * n31 * n44 + n21 * n32 * n44) * detInv; + te[3] = (n23 * n32 * n41 - n22 * n33 * n41 - n23 * n31 * n42 + n21 * n33 * n42 + n22 * n31 * n43 - n21 * n32 * n43) * detInv; - te[ 4 ] = t12 * detInv; - te[ 5 ] = ( n13 * n34 * n41 - n14 * n33 * n41 + n14 * n31 * n43 - n11 * n34 * n43 - n13 * n31 * n44 + n11 * n33 * n44 ) * detInv; - te[ 6 ] = ( n14 * n32 * n41 - n12 * n34 * n41 - n14 * n31 * n42 + n11 * n34 * n42 + n12 * n31 * n44 - n11 * n32 * n44 ) * detInv; - te[ 7 ] = ( n12 * n33 * n41 - n13 * n32 * n41 + n13 * n31 * n42 - n11 * n33 * n42 - n12 * n31 * n43 + n11 * n32 * n43 ) * detInv; + te[4] = t12 * detInv; + te[5] = (n13 * n34 * n41 - n14 * n33 * n41 + n14 * n31 * n43 - n11 * n34 * n43 - n13 * n31 * n44 + n11 * n33 * n44) * detInv; + te[6] = (n14 * n32 * n41 - n12 * n34 * n41 - n14 * n31 * n42 + n11 * n34 * n42 + n12 * n31 * n44 - n11 * n32 * n44) * detInv; + te[7] = (n12 * n33 * n41 - n13 * n32 * n41 + n13 * n31 * n42 - n11 * n33 * n42 - n12 * n31 * n43 + n11 * n32 * n43) * detInv; - te[ 8 ] = t13 * detInv; - te[ 9 ] = ( n14 * n23 * n41 - n13 * n24 * n41 - n14 * n21 * n43 + n11 * n24 * n43 + n13 * n21 * n44 - n11 * n23 * n44 ) * detInv; - te[ 10 ] = ( n12 * n24 * n41 - n14 * n22 * n41 + n14 * n21 * n42 - n11 * n24 * n42 - n12 * n21 * n44 + n11 * n22 * n44 ) * detInv; - te[ 11 ] = ( n13 * n22 * n41 - n12 * n23 * n41 - n13 * n21 * n42 + n11 * n23 * n42 + n12 * n21 * n43 - n11 * n22 * n43 ) * detInv; + te[8] = t13 * detInv; + te[9] = (n14 * n23 * n41 - n13 * n24 * n41 - n14 * n21 * n43 + n11 * n24 * n43 + n13 * n21 * n44 - n11 * n23 * n44) * detInv; + te[10] = (n12 * n24 * n41 - n14 * n22 * n41 + n14 * n21 * n42 - n11 * n24 * n42 - n12 * n21 * n44 + n11 * n22 * n44) * detInv; + te[11] = (n13 * n22 * n41 - n12 * n23 * n41 - n13 * n21 * n42 + n11 * n23 * n42 + n12 * n21 * n43 - n11 * n22 * n43) * detInv; - te[ 12 ] = t14 * detInv; - te[ 13 ] = ( n13 * n24 * n31 - n14 * n23 * n31 + n14 * n21 * n33 - n11 * n24 * n33 - n13 * n21 * n34 + n11 * n23 * n34 ) * detInv; - te[ 14 ] = ( n14 * n22 * n31 - n12 * n24 * n31 - n14 * n21 * n32 + n11 * n24 * n32 + n12 * n21 * n34 - n11 * n22 * n34 ) * detInv; - te[ 15 ] = ( n12 * n23 * n31 - n13 * n22 * n31 + n13 * n21 * n32 - n11 * n23 * n32 - n12 * n21 * n33 + n11 * n22 * n33 ) * detInv; + te[12] = t14 * detInv; + te[13] = (n13 * n24 * n31 - n14 * n23 * n31 + n14 * n21 * n33 - n11 * n24 * n33 - n13 * n21 * n34 + n11 * n23 * n34) * detInv; + te[14] = (n14 * n22 * n31 - n12 * n24 * n31 - n14 * n21 * n32 + n11 * n24 * n32 + n12 * n21 * n34 - n11 * n22 * n34) * detInv; + te[15] = (n12 * n23 * n31 - n13 * n22 * n31 + n13 * n21 * n32 - n11 * n23 * n32 - n12 * n21 * n33 + n11 * n22 * n33) * detInv; return this; }, - scale: function ( v ) { + scale: function (v) { var te = this.elements; var x = v.x, y = v.y, z = v.z; - te[ 0 ] *= x; te[ 4 ] *= y; te[ 8 ] *= z; - te[ 1 ] *= x; te[ 5 ] *= y; te[ 9 ] *= z; - te[ 2 ] *= x; te[ 6 ] *= y; te[ 10 ] *= z; - te[ 3 ] *= x; te[ 7 ] *= y; te[ 11 ] *= z; + te[0] *= x; te[4] *= y; te[8] *= z; + te[1] *= x; te[5] *= y; te[9] *= z; + te[2] *= x; te[6] *= y; te[10] *= z; + te[3] *= x; te[7] *= y; te[11] *= z; return this; @@ -1587,15 +1588,15 @@ var te = this.elements; - var scaleXSq = te[ 0 ] * te[ 0 ] + te[ 1 ] * te[ 1 ] + te[ 2 ] * te[ 2 ]; - var scaleYSq = te[ 4 ] * te[ 4 ] + te[ 5 ] * te[ 5 ] + te[ 6 ] * te[ 6 ]; - var scaleZSq = te[ 8 ] * te[ 8 ] + te[ 9 ] * te[ 9 ] + te[ 10 ] * te[ 10 ]; + var scaleXSq = te[0] * te[0] + te[1] * te[1] + te[2] * te[2]; + var scaleYSq = te[4] * te[4] + te[5] * te[5] + te[6] * te[6]; + var scaleZSq = te[8] * te[8] + te[9] * te[9] + te[10] * te[10]; - return Math.sqrt( Math.max( scaleXSq, scaleYSq, scaleZSq ) ); + return Math.sqrt(Math.max(scaleXSq, scaleYSq, scaleZSq)); }, - makeTranslation: function ( x, y, z ) { + makeTranslation: function (x, y, z) { this.set( @@ -1610,9 +1611,9 @@ }, - makeRotationX: function ( theta ) { + makeRotationX: function (theta) { - var c = Math.cos( theta ), s = Math.sin( theta ); + var c = Math.cos(theta), s = Math.sin(theta); this.set( @@ -1627,16 +1628,16 @@ }, - makeRotationY: function ( theta ) { + makeRotationY: function (theta) { - var c = Math.cos( theta ), s = Math.sin( theta ); + var c = Math.cos(theta), s = Math.sin(theta); this.set( - c, 0, s, 0, - 0, 1, 0, 0, + c, 0, s, 0, + 0, 1, 0, 0, - s, 0, c, 0, - 0, 0, 0, 1 + 0, 0, 0, 1 ); @@ -1644,9 +1645,9 @@ }, - makeRotationZ: function ( theta ) { + makeRotationZ: function (theta) { - var c = Math.cos( theta ), s = Math.sin( theta ); + var c = Math.cos(theta), s = Math.sin(theta); this.set( @@ -1661,12 +1662,12 @@ }, - makeRotationAxis: function ( axis, angle ) { + makeRotationAxis: function (axis, angle) { // Based on http://www.gamedev.net/reference/articles/article1199.asp - var c = Math.cos( angle ); - var s = Math.sin( angle ); + var c = Math.cos(angle); + var s = Math.sin(angle); var t = 1 - c; var x = axis.x, y = axis.y, z = axis.z; var tx = t * x, ty = t * y; @@ -1680,11 +1681,11 @@ ); - return this; + return this; }, - makeScale: function ( x, y, z ) { + makeScale: function (x, y, z) { this.set( @@ -1699,7 +1700,7 @@ }, - makeShear: function ( x, y, z ) { + makeShear: function (x, y, z) { this.set( @@ -1714,39 +1715,39 @@ }, - compose: function ( position, quaternion, scale ) { + compose: function (position, quaternion, scale) { var te = this.elements; var x = quaternion._x, y = quaternion._y, z = quaternion._z, w = quaternion._w; - var x2 = x + x, y2 = y + y, z2 = z + z; + var x2 = x + x, y2 = y + y, z2 = z + z; var xx = x * x2, xy = x * y2, xz = x * z2; var yy = y * y2, yz = y * z2, zz = z * z2; var wx = w * x2, wy = w * y2, wz = w * z2; var sx = scale.x, sy = scale.y, sz = scale.z; - te[ 0 ] = ( 1 - ( yy + zz ) ) * sx; - te[ 1 ] = ( xy + wz ) * sx; - te[ 2 ] = ( xz - wy ) * sx; - te[ 3 ] = 0; + te[0] = (1 - (yy + zz)) * sx; + te[1] = (xy + wz) * sx; + te[2] = (xz - wy) * sx; + te[3] = 0; - te[ 4 ] = ( xy - wz ) * sy; - te[ 5 ] = ( 1 - ( xx + zz ) ) * sy; - te[ 6 ] = ( yz + wx ) * sy; - te[ 7 ] = 0; + te[4] = (xy - wz) * sy; + te[5] = (1 - (xx + zz)) * sy; + te[6] = (yz + wx) * sy; + te[7] = 0; - te[ 8 ] = ( xz + wy ) * sz; - te[ 9 ] = ( yz - wx ) * sz; - te[ 10 ] = ( 1 - ( xx + yy ) ) * sz; - te[ 11 ] = 0; + te[8] = (xz + wy) * sz; + te[9] = (yz - wx) * sz; + te[10] = (1 - (xx + yy)) * sz; + te[11] = 0; - te[ 12 ] = position.x; - te[ 13 ] = position.y; - te[ 14 ] = position.z; - te[ 15 ] = 1; + te[12] = position.x; + te[13] = position.y; + te[14] = position.z; + te[15] = 1; - return this; + return this; }, @@ -1755,42 +1756,42 @@ var vector = new Vector3(); var matrix = new Matrix4(); - return function decompose( position, quaternion, scale ) { + return function decompose(position, quaternion, scale) { var te = this.elements; - var sx = vector.set( te[ 0 ], te[ 1 ], te[ 2 ] ).length(); - var sy = vector.set( te[ 4 ], te[ 5 ], te[ 6 ] ).length(); - var sz = vector.set( te[ 8 ], te[ 9 ], te[ 10 ] ).length(); + var sx = vector.set(te[0], te[1], te[2]).length(); + var sy = vector.set(te[4], te[5], te[6]).length(); + var sz = vector.set(te[8], te[9], te[10]).length(); // if determine is negative, we need to invert one scale var det = this.determinant(); - if ( det < 0 ) sx = - sx; + if (det < 0) sx = - sx; - position.x = te[ 12 ]; - position.y = te[ 13 ]; - position.z = te[ 14 ]; + position.x = te[12]; + position.y = te[13]; + position.z = te[14]; // scale the rotation part - matrix.copy( this ); + matrix.copy(this); var invSX = 1 / sx; var invSY = 1 / sy; var invSZ = 1 / sz; - matrix.elements[ 0 ] *= invSX; - matrix.elements[ 1 ] *= invSX; - matrix.elements[ 2 ] *= invSX; + matrix.elements[0] *= invSX; + matrix.elements[1] *= invSX; + matrix.elements[2] *= invSX; - matrix.elements[ 4 ] *= invSY; - matrix.elements[ 5 ] *= invSY; - matrix.elements[ 6 ] *= invSY; + matrix.elements[4] *= invSY; + matrix.elements[5] *= invSY; + matrix.elements[6] *= invSY; - matrix.elements[ 8 ] *= invSZ; - matrix.elements[ 9 ] *= invSZ; - matrix.elements[ 10 ] *= invSZ; + matrix.elements[8] *= invSZ; + matrix.elements[9] *= invSZ; + matrix.elements[10] *= invSZ; - quaternion.setFromRotationMatrix( matrix ); + quaternion.setFromRotationMatrix(matrix); scale.x = sx; scale.y = sy; @@ -1802,60 +1803,60 @@ }(), - makePerspective: function ( left, right, top, bottom, near, far ) { + makePerspective: function (left, right, top, bottom, near, far) { - if ( far === undefined ) { + if (far === undefined) { - console.warn( 'THREE.Matrix4: .makePerspective() has been redefined and has a new signature. Please check the docs.' ); + console.warn('THREE.Matrix4: .makePerspective() has been redefined and has a new signature. Please check the docs.'); } var te = this.elements; - var x = 2 * near / ( right - left ); - var y = 2 * near / ( top - bottom ); + var x = 2 * near / (right - left); + var y = 2 * near / (top - bottom); - var a = ( right + left ) / ( right - left ); - var b = ( top + bottom ) / ( top - bottom ); - var c = - ( far + near ) / ( far - near ); - var d = - 2 * far * near / ( far - near ); + var a = (right + left) / (right - left); + var b = (top + bottom) / (top - bottom); + var c = - (far + near) / (far - near); + var d = - 2 * far * near / (far - near); - te[ 0 ] = x; te[ 4 ] = 0; te[ 8 ] = a; te[ 12 ] = 0; - te[ 1 ] = 0; te[ 5 ] = y; te[ 9 ] = b; te[ 13 ] = 0; - te[ 2 ] = 0; te[ 6 ] = 0; te[ 10 ] = c; te[ 14 ] = d; - te[ 3 ] = 0; te[ 7 ] = 0; te[ 11 ] = - 1; te[ 15 ] = 0; + te[0] = x; te[4] = 0; te[8] = a; te[12] = 0; + te[1] = 0; te[5] = y; te[9] = b; te[13] = 0; + te[2] = 0; te[6] = 0; te[10] = c; te[14] = d; + te[3] = 0; te[7] = 0; te[11] = - 1; te[15] = 0; return this; }, - makeOrthographic: function ( left, right, top, bottom, near, far ) { + makeOrthographic: function (left, right, top, bottom, near, far) { var te = this.elements; - var w = 1.0 / ( right - left ); - var h = 1.0 / ( top - bottom ); - var p = 1.0 / ( far - near ); + var w = 1.0 / (right - left); + var h = 1.0 / (top - bottom); + var p = 1.0 / (far - near); - var x = ( right + left ) * w; - var y = ( top + bottom ) * h; - var z = ( far + near ) * p; + var x = (right + left) * w; + var y = (top + bottom) * h; + var z = (far + near) * p; - te[ 0 ] = 2 * w; te[ 4 ] = 0; te[ 8 ] = 0; te[ 12 ] = - x; - te[ 1 ] = 0; te[ 5 ] = 2 * h; te[ 9 ] = 0; te[ 13 ] = - y; - te[ 2 ] = 0; te[ 6 ] = 0; te[ 10 ] = - 2 * p; te[ 14 ] = - z; - te[ 3 ] = 0; te[ 7 ] = 0; te[ 11 ] = 0; te[ 15 ] = 1; + te[0] = 2 * w; te[4] = 0; te[8] = 0; te[12] = - x; + te[1] = 0; te[5] = 2 * h; te[9] = 0; te[13] = - y; + te[2] = 0; te[6] = 0; te[10] = - 2 * p; te[14] = - z; + te[3] = 0; te[7] = 0; te[11] = 0; te[15] = 1; return this; }, - equals: function ( matrix ) { + equals: function (matrix) { var te = this.elements; var me = matrix.elements; - for ( var i = 0; i < 16; i ++ ) { + for (var i = 0; i < 16; i++) { - if ( te[ i ] !== me[ i ] ) return false; + if (te[i] !== me[i]) return false; } @@ -1863,13 +1864,13 @@ }, - fromArray: function ( array, offset ) { + fromArray: function (array, offset) { - if ( offset === undefined ) offset = 0; + if (offset === undefined) offset = 0; - for ( var i = 0; i < 16; i ++ ) { + for (var i = 0; i < 16; i++) { - this.elements[ i ] = array[ i + offset ]; + this.elements[i] = array[i + offset]; } @@ -1877,38 +1878,38 @@ }, - toArray: function ( array, offset ) { + toArray: function (array, offset) { - if ( array === undefined ) array = []; - if ( offset === undefined ) offset = 0; + if (array === undefined) array = []; + if (offset === undefined) offset = 0; var te = this.elements; - array[ offset ] = te[ 0 ]; - array[ offset + 1 ] = te[ 1 ]; - array[ offset + 2 ] = te[ 2 ]; - array[ offset + 3 ] = te[ 3 ]; + array[offset] = te[0]; + array[offset + 1] = te[1]; + array[offset + 2] = te[2]; + array[offset + 3] = te[3]; - array[ offset + 4 ] = te[ 4 ]; - array[ offset + 5 ] = te[ 5 ]; - array[ offset + 6 ] = te[ 6 ]; - array[ offset + 7 ] = te[ 7 ]; + array[offset + 4] = te[4]; + array[offset + 5] = te[5]; + array[offset + 6] = te[6]; + array[offset + 7] = te[7]; - array[ offset + 8 ] = te[ 8 ]; - array[ offset + 9 ] = te[ 9 ]; - array[ offset + 10 ] = te[ 10 ]; - array[ offset + 11 ] = te[ 11 ]; + array[offset + 8] = te[8]; + array[offset + 9] = te[9]; + array[offset + 10] = te[10]; + array[offset + 11] = te[11]; - array[ offset + 12 ] = te[ 12 ]; - array[ offset + 13 ] = te[ 13 ]; - array[ offset + 14 ] = te[ 14 ]; - array[ offset + 15 ] = te[ 15 ]; + array[offset + 12] = te[12]; + array[offset + 13] = te[13]; + array[offset + 14] = te[14]; + array[offset + 15] = te[15]; return array; } - } ); + }); /** * @author mikael emtinger / http://gomo.se/ @@ -1917,54 +1918,54 @@ * @author bhouston / http://clara.io */ - function Quaternion( x, y, z, w ) { + function Quaternion(x, y, z, w) { this._x = x || 0; this._y = y || 0; this._z = z || 0; - this._w = ( w !== undefined ) ? w : 1; + this._w = (w !== undefined) ? w : 1; } - Object.assign( Quaternion, { + Object.assign(Quaternion, { - slerp: function ( qa, qb, qm, t ) { + slerp: function (qa, qb, qm, t) { - return qm.copy( qa ).slerp( qb, t ); + return qm.copy(qa).slerp(qb, t); }, - slerpFlat: function ( dst, dstOffset, src0, srcOffset0, src1, srcOffset1, t ) { + slerpFlat: function (dst, dstOffset, src0, srcOffset0, src1, srcOffset1, t) { // fuzz-free, array-based Quaternion SLERP operation - var x0 = src0[ srcOffset0 + 0 ], - y0 = src0[ srcOffset0 + 1 ], - z0 = src0[ srcOffset0 + 2 ], - w0 = src0[ srcOffset0 + 3 ], + var x0 = src0[srcOffset0 + 0], + y0 = src0[srcOffset0 + 1], + z0 = src0[srcOffset0 + 2], + w0 = src0[srcOffset0 + 3], - x1 = src1[ srcOffset1 + 0 ], - y1 = src1[ srcOffset1 + 1 ], - z1 = src1[ srcOffset1 + 2 ], - w1 = src1[ srcOffset1 + 3 ]; + x1 = src1[srcOffset1 + 0], + y1 = src1[srcOffset1 + 1], + z1 = src1[srcOffset1 + 2], + w1 = src1[srcOffset1 + 3]; - if ( w0 !== w1 || x0 !== x1 || y0 !== y1 || z0 !== z1 ) { + if (w0 !== w1 || x0 !== x1 || y0 !== y1 || z0 !== z1) { var s = 1 - t, cos = x0 * x1 + y0 * y1 + z0 * z1 + w0 * w1, - dir = ( cos >= 0 ? 1 : - 1 ), + dir = (cos >= 0 ? 1 : - 1), sqrSin = 1 - cos * cos; // Skip the Slerp for tiny steps to avoid numeric problems: - if ( sqrSin > Number.EPSILON ) { + if (sqrSin > Number.EPSILON) { - var sin = Math.sqrt( sqrSin ), - len = Math.atan2( sin, cos * dir ); + var sin = Math.sqrt(sqrSin), + len = Math.atan2(sin, cos * dir); - s = Math.sin( s * len ) / sin; - t = Math.sin( t * len ) / sin; + s = Math.sin(s * len) / sin; + t = Math.sin(t * len) / sin; } @@ -1976,9 +1977,9 @@ w0 = w0 * s + w1 * tDir; // Normalize in case we just did a lerp: - if ( s === 1 - t ) { + if (s === 1 - t) { - var f = 1 / Math.sqrt( x0 * x0 + y0 * y0 + z0 * z0 + w0 * w0 ); + var f = 1 / Math.sqrt(x0 * x0 + y0 * y0 + z0 * z0 + w0 * w0); x0 *= f; y0 *= f; @@ -1989,16 +1990,16 @@ } - dst[ dstOffset ] = x0; - dst[ dstOffset + 1 ] = y0; - dst[ dstOffset + 2 ] = z0; - dst[ dstOffset + 3 ] = w0; + dst[dstOffset] = x0; + dst[dstOffset + 1] = y0; + dst[dstOffset + 2] = z0; + dst[dstOffset + 3] = w0; } - } ); + }); - Object.defineProperties( Quaternion.prototype, { + Object.defineProperties(Quaternion.prototype, { x: { @@ -2008,7 +2009,7 @@ }, - set: function ( value ) { + set: function (value) { this._x = value; this.onChangeCallback(); @@ -2025,7 +2026,7 @@ }, - set: function ( value ) { + set: function (value) { this._y = value; this.onChangeCallback(); @@ -2042,7 +2043,7 @@ }, - set: function ( value ) { + set: function (value) { this._z = value; this.onChangeCallback(); @@ -2059,7 +2060,7 @@ }, - set: function ( value ) { + set: function (value) { this._w = value; this.onChangeCallback(); @@ -2068,13 +2069,13 @@ } - } ); + }); - Object.assign( Quaternion.prototype, { + Object.assign(Quaternion.prototype, { isQuaternion: true, - set: function ( x, y, z, w ) { + set: function (x, y, z, w) { this._x = x; this._y = y; @@ -2089,11 +2090,11 @@ clone: function () { - return new this.constructor( this._x, this._y, this._z, this._w ); + return new this.constructor(this._x, this._y, this._z, this._w); }, - copy: function ( quaternion ) { + copy: function (quaternion) { this._x = quaternion.x; this._y = quaternion.y; @@ -2106,11 +2107,11 @@ }, - setFromEuler: function ( euler, update ) { + setFromEuler: function (euler, update) { - if ( ! ( euler && euler.isEuler ) ) { + if (!(euler && euler.isEuler)) { - throw new Error( 'THREE.Quaternion: .setFromEuler() now expects an Euler rotation rather than a Vector3 and order.' ); + throw new Error('THREE.Quaternion: .setFromEuler() now expects an Euler rotation rather than a Vector3 and order.'); } @@ -2123,50 +2124,50 @@ var cos = Math.cos; var sin = Math.sin; - var c1 = cos( x / 2 ); - var c2 = cos( y / 2 ); - var c3 = cos( z / 2 ); + var c1 = cos(x / 2); + var c2 = cos(y / 2); + var c3 = cos(z / 2); - var s1 = sin( x / 2 ); - var s2 = sin( y / 2 ); - var s3 = sin( z / 2 ); + var s1 = sin(x / 2); + var s2 = sin(y / 2); + var s3 = sin(z / 2); - if ( order === 'XYZ' ) { + if (order === 'XYZ') { this._x = s1 * c2 * c3 + c1 * s2 * s3; this._y = c1 * s2 * c3 - s1 * c2 * s3; this._z = c1 * c2 * s3 + s1 * s2 * c3; this._w = c1 * c2 * c3 - s1 * s2 * s3; - } else if ( order === 'YXZ' ) { + } else if (order === 'YXZ') { this._x = s1 * c2 * c3 + c1 * s2 * s3; this._y = c1 * s2 * c3 - s1 * c2 * s3; this._z = c1 * c2 * s3 - s1 * s2 * c3; this._w = c1 * c2 * c3 + s1 * s2 * s3; - } else if ( order === 'ZXY' ) { + } else if (order === 'ZXY') { this._x = s1 * c2 * c3 - c1 * s2 * s3; this._y = c1 * s2 * c3 + s1 * c2 * s3; this._z = c1 * c2 * s3 + s1 * s2 * c3; this._w = c1 * c2 * c3 - s1 * s2 * s3; - } else if ( order === 'ZYX' ) { + } else if (order === 'ZYX') { this._x = s1 * c2 * c3 - c1 * s2 * s3; this._y = c1 * s2 * c3 + s1 * c2 * s3; this._z = c1 * c2 * s3 - s1 * s2 * c3; this._w = c1 * c2 * c3 + s1 * s2 * s3; - } else if ( order === 'YZX' ) { + } else if (order === 'YZX') { this._x = s1 * c2 * c3 + c1 * s2 * s3; this._y = c1 * s2 * c3 + s1 * c2 * s3; this._z = c1 * c2 * s3 - s1 * s2 * c3; this._w = c1 * c2 * c3 - s1 * s2 * s3; - } else if ( order === 'XZY' ) { + } else if (order === 'XZY') { this._x = s1 * c2 * c3 - c1 * s2 * s3; this._y = c1 * s2 * c3 - s1 * c2 * s3; @@ -2175,24 +2176,24 @@ } - if ( update !== false ) this.onChangeCallback(); + if (update !== false) this.onChangeCallback(); return this; }, - setFromAxisAngle: function ( axis, angle ) { + setFromAxisAngle: function (axis, angle) { // http://www.euclideanspace.com/maths/geometry/rotations/conversions/angleToQuaternion/index.htm // assumes axis is normalized - var halfAngle = angle / 2, s = Math.sin( halfAngle ); + var halfAngle = angle / 2, s = Math.sin(halfAngle); this._x = axis.x * s; this._y = axis.y * s; this._z = axis.z * s; - this._w = Math.cos( halfAngle ); + this._w = Math.cos(halfAngle); this.onChangeCallback(); @@ -2200,7 +2201,7 @@ }, - setFromRotationMatrix: function ( m ) { + setFromRotationMatrix: function (m) { // http://www.euclideanspace.com/maths/geometry/rotations/conversions/matrixToQuaternion/index.htm @@ -2208,47 +2209,47 @@ var te = m.elements, - m11 = te[ 0 ], m12 = te[ 4 ], m13 = te[ 8 ], - m21 = te[ 1 ], m22 = te[ 5 ], m23 = te[ 9 ], - m31 = te[ 2 ], m32 = te[ 6 ], m33 = te[ 10 ], + m11 = te[0], m12 = te[4], m13 = te[8], + m21 = te[1], m22 = te[5], m23 = te[9], + m31 = te[2], m32 = te[6], m33 = te[10], trace = m11 + m22 + m33, s; - if ( trace > 0 ) { + if (trace > 0) { - s = 0.5 / Math.sqrt( trace + 1.0 ); + s = 0.5 / Math.sqrt(trace + 1.0); this._w = 0.25 / s; - this._x = ( m32 - m23 ) * s; - this._y = ( m13 - m31 ) * s; - this._z = ( m21 - m12 ) * s; + this._x = (m32 - m23) * s; + this._y = (m13 - m31) * s; + this._z = (m21 - m12) * s; - } else if ( m11 > m22 && m11 > m33 ) { + } else if (m11 > m22 && m11 > m33) { - s = 2.0 * Math.sqrt( 1.0 + m11 - m22 - m33 ); + s = 2.0 * Math.sqrt(1.0 + m11 - m22 - m33); - this._w = ( m32 - m23 ) / s; + this._w = (m32 - m23) / s; this._x = 0.25 * s; - this._y = ( m12 + m21 ) / s; - this._z = ( m13 + m31 ) / s; + this._y = (m12 + m21) / s; + this._z = (m13 + m31) / s; - } else if ( m22 > m33 ) { + } else if (m22 > m33) { - s = 2.0 * Math.sqrt( 1.0 + m22 - m11 - m33 ); + s = 2.0 * Math.sqrt(1.0 + m22 - m11 - m33); - this._w = ( m13 - m31 ) / s; - this._x = ( m12 + m21 ) / s; + this._w = (m13 - m31) / s; + this._x = (m12 + m21) / s; this._y = 0.25 * s; - this._z = ( m23 + m32 ) / s; + this._z = (m23 + m32) / s; } else { - s = 2.0 * Math.sqrt( 1.0 + m33 - m11 - m22 ); + s = 2.0 * Math.sqrt(1.0 + m33 - m11 - m22); - this._w = ( m21 - m12 ) / s; - this._x = ( m13 + m31 ) / s; - this._y = ( m23 + m32 ) / s; + this._w = (m21 - m12) / s; + this._x = (m13 + m31) / s; + this._y = (m23 + m32) / s; this._z = 0.25 * s; } @@ -2268,29 +2269,29 @@ var EPS = 0.000001; - return function setFromUnitVectors( vFrom, vTo ) { + return function setFromUnitVectors(vFrom, vTo) { - if ( v1 === undefined ) v1 = new Vector3(); + if (v1 === undefined) v1 = new Vector3(); - r = vFrom.dot( vTo ) + 1; + r = vFrom.dot(vTo) + 1; - if ( r < EPS ) { + if (r < EPS) { r = 0; - if ( Math.abs( vFrom.x ) > Math.abs( vFrom.z ) ) { + if (Math.abs(vFrom.x) > Math.abs(vFrom.z)) { - v1.set( - vFrom.y, vFrom.x, 0 ); + v1.set(- vFrom.y, vFrom.x, 0); } else { - v1.set( 0, - vFrom.z, vFrom.y ); + v1.set(0, - vFrom.z, vFrom.y); } } else { - v1.crossVectors( vFrom, vTo ); + v1.crossVectors(vFrom, vTo); } @@ -2305,21 +2306,21 @@ }(), - angleTo: function ( q ) { + angleTo: function (q) { - return 2 * Math.acos( Math.abs( _Math.clamp( this.dot( q ), - 1, 1 ) ) ); + return 2 * Math.acos(Math.abs(_Math.clamp(this.dot(q), - 1, 1))); }, - rotateTowards: function ( q, step ) { + rotateTowards: function (q, step) { - var angle = this.angleTo( q ); + var angle = this.angleTo(q); - if ( angle === 0 ) return this; + if (angle === 0) return this; - var t = Math.min( 1, step / angle ); + var t = Math.min(1, step / angle); - this.slerp( q, t ); + this.slerp(q, t); return this; @@ -2345,7 +2346,7 @@ }, - dot: function ( v ) { + dot: function (v) { return this._x * v._x + this._y * v._y + this._z * v._z + this._w * v._w; @@ -2359,7 +2360,7 @@ length: function () { - return Math.sqrt( this._x * this._x + this._y * this._y + this._z * this._z + this._w * this._w ); + return Math.sqrt(this._x * this._x + this._y * this._y + this._z * this._z + this._w * this._w); }, @@ -2367,7 +2368,7 @@ var l = this.length(); - if ( l === 0 ) { + if (l === 0) { this._x = 0; this._y = 0; @@ -2391,26 +2392,26 @@ }, - multiply: function ( q, p ) { + multiply: function (q, p) { - if ( p !== undefined ) { + if (p !== undefined) { - console.warn( 'THREE.Quaternion: .multiply() now only accepts one argument. Use .multiplyQuaternions( a, b ) instead.' ); - return this.multiplyQuaternions( q, p ); + console.warn('THREE.Quaternion: .multiply() now only accepts one argument. Use .multiplyQuaternions( a, b ) instead.'); + return this.multiplyQuaternions(q, p); } - return this.multiplyQuaternions( this, q ); + return this.multiplyQuaternions(this, q); }, - premultiply: function ( q ) { + premultiply: function (q) { - return this.multiplyQuaternions( q, this ); + return this.multiplyQuaternions(q, this); }, - multiplyQuaternions: function ( a, b ) { + multiplyQuaternions: function (a, b) { // from http://www.euclideanspace.com/maths/algebra/realNormedAlgebra/quaternions/code/index.htm @@ -2428,10 +2429,10 @@ }, - slerp: function ( qb, t ) { + slerp: function (qb, t) { - if ( t === 0 ) return this; - if ( t === 1 ) return this.copy( qb ); + if (t === 0) return this; + if (t === 1) return this.copy(qb); var x = this._x, y = this._y, z = this._z, w = this._w; @@ -2439,7 +2440,7 @@ var cosHalfTheta = w * qb._w + x * qb._x + y * qb._y + z * qb._z; - if ( cosHalfTheta < 0 ) { + if (cosHalfTheta < 0) { this._w = - qb._w; this._x = - qb._x; @@ -2450,11 +2451,11 @@ } else { - this.copy( qb ); + this.copy(qb); } - if ( cosHalfTheta >= 1.0 ) { + if (cosHalfTheta >= 1.0) { this._w = w; this._x = x; @@ -2467,7 +2468,7 @@ var sqrSinHalfTheta = 1.0 - cosHalfTheta * cosHalfTheta; - if ( sqrSinHalfTheta <= Number.EPSILON ) { + if (sqrSinHalfTheta <= Number.EPSILON) { var s = 1 - t; this._w = s * w + t * this._w; @@ -2479,15 +2480,15 @@ } - var sinHalfTheta = Math.sqrt( sqrSinHalfTheta ); - var halfTheta = Math.atan2( sinHalfTheta, cosHalfTheta ); - var ratioA = Math.sin( ( 1 - t ) * halfTheta ) / sinHalfTheta, - ratioB = Math.sin( t * halfTheta ) / sinHalfTheta; + var sinHalfTheta = Math.sqrt(sqrSinHalfTheta); + var halfTheta = Math.atan2(sinHalfTheta, cosHalfTheta); + var ratioA = Math.sin((1 - t) * halfTheta) / sinHalfTheta, + ratioB = Math.sin(t * halfTheta) / sinHalfTheta; - this._w = ( w * ratioA + this._w * ratioB ); - this._x = ( x * ratioA + this._x * ratioB ); - this._y = ( y * ratioA + this._y * ratioB ); - this._z = ( z * ratioA + this._z * ratioB ); + this._w = (w * ratioA + this._w * ratioB); + this._x = (x * ratioA + this._x * ratioB); + this._y = (y * ratioA + this._y * ratioB); + this._z = (z * ratioA + this._z * ratioB); this.onChangeCallback(); @@ -2495,20 +2496,20 @@ }, - equals: function ( quaternion ) { + equals: function (quaternion) { - return ( quaternion._x === this._x ) && ( quaternion._y === this._y ) && ( quaternion._z === this._z ) && ( quaternion._w === this._w ); + return (quaternion._x === this._x) && (quaternion._y === this._y) && (quaternion._z === this._z) && (quaternion._w === this._w); }, - fromArray: function ( array, offset ) { + fromArray: function (array, offset) { - if ( offset === undefined ) offset = 0; + if (offset === undefined) offset = 0; - this._x = array[ offset ]; - this._y = array[ offset + 1 ]; - this._z = array[ offset + 2 ]; - this._w = array[ offset + 3 ]; + this._x = array[offset]; + this._y = array[offset + 1]; + this._z = array[offset + 2]; + this._w = array[offset + 3]; this.onChangeCallback(); @@ -2516,21 +2517,21 @@ }, - toArray: function ( array, offset ) { + toArray: function (array, offset) { - if ( array === undefined ) array = []; - if ( offset === undefined ) offset = 0; + if (array === undefined) array = []; + if (offset === undefined) offset = 0; - array[ offset ] = this._x; - array[ offset + 1 ] = this._y; - array[ offset + 2 ] = this._z; - array[ offset + 3 ] = this._w; + array[offset] = this._x; + array[offset + 1] = this._y; + array[offset + 2] = this._z; + array[offset + 3] = this._w; return array; }, - onChange: function ( callback ) { + onChange: function (callback) { this.onChangeCallback = callback; @@ -2538,9 +2539,9 @@ }, - onChangeCallback: function () {} + onChangeCallback: function () { } - } ); + }); /** * @author mrdoob / http://mrdoob.com/ @@ -2551,7 +2552,7 @@ * @author WestLangley / http://github.com/WestLangley */ - function Vector3( x, y, z ) { + function Vector3(x, y, z) { this.x = x || 0; this.y = y || 0; @@ -2559,11 +2560,11 @@ } - Object.assign( Vector3.prototype, { + Object.assign(Vector3.prototype, { isVector3: true, - set: function ( x, y, z ) { + set: function (x, y, z) { this.x = x; this.y = y; @@ -2573,7 +2574,7 @@ }, - setScalar: function ( scalar ) { + setScalar: function (scalar) { this.x = scalar; this.y = scalar; @@ -2583,7 +2584,7 @@ }, - setX: function ( x ) { + setX: function (x) { this.x = x; @@ -2591,7 +2592,7 @@ }, - setY: function ( y ) { + setY: function (y) { this.y = y; @@ -2599,7 +2600,7 @@ }, - setZ: function ( z ) { + setZ: function (z) { this.z = z; @@ -2607,14 +2608,14 @@ }, - setComponent: function ( index, value ) { + setComponent: function (index, value) { - switch ( index ) { + switch (index) { case 0: this.x = value; break; case 1: this.y = value; break; case 2: this.z = value; break; - default: throw new Error( 'index is out of range: ' + index ); + default: throw new Error('index is out of range: ' + index); } @@ -2622,14 +2623,14 @@ }, - getComponent: function ( index ) { + getComponent: function (index) { - switch ( index ) { + switch (index) { case 0: return this.x; case 1: return this.y; case 2: return this.z; - default: throw new Error( 'index is out of range: ' + index ); + default: throw new Error('index is out of range: ' + index); } @@ -2637,11 +2638,11 @@ clone: function () { - return new this.constructor( this.x, this.y, this.z ); + return new this.constructor(this.x, this.y, this.z); }, - copy: function ( v ) { + copy: function (v) { this.x = v.x; this.y = v.y; @@ -2651,12 +2652,12 @@ }, - add: function ( v, w ) { + add: function (v, w) { - if ( w !== undefined ) { + if (w !== undefined) { - console.warn( 'THREE.Vector3: .add() now only accepts one argument. Use .addVectors( a, b ) instead.' ); - return this.addVectors( v, w ); + console.warn('THREE.Vector3: .add() now only accepts one argument. Use .addVectors( a, b ) instead.'); + return this.addVectors(v, w); } @@ -2668,7 +2669,7 @@ }, - addScalar: function ( s ) { + addScalar: function (s) { this.x += s; this.y += s; @@ -2678,7 +2679,7 @@ }, - addVectors: function ( a, b ) { + addVectors: function (a, b) { this.x = a.x + b.x; this.y = a.y + b.y; @@ -2688,7 +2689,7 @@ }, - addScaledVector: function ( v, s ) { + addScaledVector: function (v, s) { this.x += v.x * s; this.y += v.y * s; @@ -2698,12 +2699,12 @@ }, - sub: function ( v, w ) { + sub: function (v, w) { - if ( w !== undefined ) { + if (w !== undefined) { - console.warn( 'THREE.Vector3: .sub() now only accepts one argument. Use .subVectors( a, b ) instead.' ); - return this.subVectors( v, w ); + console.warn('THREE.Vector3: .sub() now only accepts one argument. Use .subVectors( a, b ) instead.'); + return this.subVectors(v, w); } @@ -2715,7 +2716,7 @@ }, - subScalar: function ( s ) { + subScalar: function (s) { this.x -= s; this.y -= s; @@ -2725,7 +2726,7 @@ }, - subVectors: function ( a, b ) { + subVectors: function (a, b) { this.x = a.x - b.x; this.y = a.y - b.y; @@ -2735,12 +2736,12 @@ }, - multiply: function ( v, w ) { + multiply: function (v, w) { - if ( w !== undefined ) { + if (w !== undefined) { - console.warn( 'THREE.Vector3: .multiply() now only accepts one argument. Use .multiplyVectors( a, b ) instead.' ); - return this.multiplyVectors( v, w ); + console.warn('THREE.Vector3: .multiply() now only accepts one argument. Use .multiplyVectors( a, b ) instead.'); + return this.multiplyVectors(v, w); } @@ -2752,7 +2753,7 @@ }, - multiplyScalar: function ( scalar ) { + multiplyScalar: function (scalar) { this.x *= scalar; this.y *= scalar; @@ -2762,7 +2763,7 @@ }, - multiplyVectors: function ( a, b ) { + multiplyVectors: function (a, b) { this.x = a.x * b.x; this.y = a.y * b.y; @@ -2776,15 +2777,15 @@ var quaternion = new Quaternion(); - return function applyEuler( euler ) { + return function applyEuler(euler) { - if ( ! ( euler && euler.isEuler ) ) { + if (!(euler && euler.isEuler)) { - console.error( 'THREE.Vector3: .applyEuler() now expects an Euler rotation rather than a Vector3 and order.' ); + console.error('THREE.Vector3: .applyEuler() now expects an Euler rotation rather than a Vector3 and order.'); } - return this.applyQuaternion( quaternion.setFromEuler( euler ) ); + return this.applyQuaternion(quaternion.setFromEuler(euler)); }; @@ -2794,43 +2795,43 @@ var quaternion = new Quaternion(); - return function applyAxisAngle( axis, angle ) { + return function applyAxisAngle(axis, angle) { - return this.applyQuaternion( quaternion.setFromAxisAngle( axis, angle ) ); + return this.applyQuaternion(quaternion.setFromAxisAngle(axis, angle)); }; }(), - applyMatrix3: function ( m ) { + applyMatrix3: function (m) { var x = this.x, y = this.y, z = this.z; var e = m.elements; - this.x = e[ 0 ] * x + e[ 3 ] * y + e[ 6 ] * z; - this.y = e[ 1 ] * x + e[ 4 ] * y + e[ 7 ] * z; - this.z = e[ 2 ] * x + e[ 5 ] * y + e[ 8 ] * z; + this.x = e[0] * x + e[3] * y + e[6] * z; + this.y = e[1] * x + e[4] * y + e[7] * z; + this.z = e[2] * x + e[5] * y + e[8] * z; return this; }, - applyMatrix4: function ( m ) { + applyMatrix4: function (m) { var x = this.x, y = this.y, z = this.z; var e = m.elements; - var w = 1 / ( e[ 3 ] * x + e[ 7 ] * y + e[ 11 ] * z + e[ 15 ] ); + var w = 1 / (e[3] * x + e[7] * y + e[11] * z + e[15]); - this.x = ( e[ 0 ] * x + e[ 4 ] * y + e[ 8 ] * z + e[ 12 ] ) * w; - this.y = ( e[ 1 ] * x + e[ 5 ] * y + e[ 9 ] * z + e[ 13 ] ) * w; - this.z = ( e[ 2 ] * x + e[ 6 ] * y + e[ 10 ] * z + e[ 14 ] ) * w; + this.x = (e[0] * x + e[4] * y + e[8] * z + e[12]) * w; + this.y = (e[1] * x + e[5] * y + e[9] * z + e[13]) * w; + this.z = (e[2] * x + e[6] * y + e[10] * z + e[14]) * w; return this; }, - applyQuaternion: function ( q ) { + applyQuaternion: function (q) { var x = this.x, y = this.y, z = this.z; var qx = q.x, qy = q.y, qz = q.z, qw = q.w; @@ -2852,9 +2853,9 @@ }, - project: function ( camera ) { + project: function (camera) { - return this.applyMatrix4( camera.matrixWorldInverse ).applyMatrix4( camera.projectionMatrix ); + return this.applyMatrix4(camera.matrixWorldInverse).applyMatrix4(camera.projectionMatrix); }, @@ -2862,15 +2863,15 @@ var matrix = new Matrix4(); - return function unproject( camera ) { + return function unproject(camera) { - return this.applyMatrix4( matrix.getInverse( camera.projectionMatrix ) ).applyMatrix4( camera.matrixWorld ); + return this.applyMatrix4(matrix.getInverse(camera.projectionMatrix)).applyMatrix4(camera.matrixWorld); }; }(), - transformDirection: function ( m ) { + transformDirection: function (m) { // input: THREE.Matrix4 affine matrix // vector interpreted as a direction @@ -2878,15 +2879,15 @@ var x = this.x, y = this.y, z = this.z; var e = m.elements; - this.x = e[ 0 ] * x + e[ 4 ] * y + e[ 8 ] * z; - this.y = e[ 1 ] * x + e[ 5 ] * y + e[ 9 ] * z; - this.z = e[ 2 ] * x + e[ 6 ] * y + e[ 10 ] * z; + this.x = e[0] * x + e[4] * y + e[8] * z; + this.y = e[1] * x + e[5] * y + e[9] * z; + this.z = e[2] * x + e[6] * y + e[10] * z; return this.normalize(); }, - divide: function ( v ) { + divide: function (v) { this.x /= v.x; this.y /= v.y; @@ -2896,39 +2897,39 @@ }, - divideScalar: function ( scalar ) { + divideScalar: function (scalar) { - return this.multiplyScalar( 1 / scalar ); + return this.multiplyScalar(1 / scalar); }, - min: function ( v ) { + min: function (v) { - this.x = Math.min( this.x, v.x ); - this.y = Math.min( this.y, v.y ); - this.z = Math.min( this.z, v.z ); + this.x = Math.min(this.x, v.x); + this.y = Math.min(this.y, v.y); + this.z = Math.min(this.z, v.z); return this; }, - max: function ( v ) { + max: function (v) { - this.x = Math.max( this.x, v.x ); - this.y = Math.max( this.y, v.y ); - this.z = Math.max( this.z, v.z ); + this.x = Math.max(this.x, v.x); + this.y = Math.max(this.y, v.y); + this.z = Math.max(this.z, v.z); return this; }, - clamp: function ( min, max ) { + clamp: function (min, max) { // assumes min < max, componentwise - this.x = Math.max( min.x, Math.min( max.x, this.x ) ); - this.y = Math.max( min.y, Math.min( max.y, this.y ) ); - this.z = Math.max( min.z, Math.min( max.z, this.z ) ); + this.x = Math.max(min.x, Math.min(max.x, this.x)); + this.y = Math.max(min.y, Math.min(max.y, this.y)); + this.z = Math.max(min.z, Math.min(max.z, this.z)); return this; @@ -2939,30 +2940,30 @@ var min = new Vector3(); var max = new Vector3(); - return function clampScalar( minVal, maxVal ) { + return function clampScalar(minVal, maxVal) { - min.set( minVal, minVal, minVal ); - max.set( maxVal, maxVal, maxVal ); + min.set(minVal, minVal, minVal); + max.set(maxVal, maxVal, maxVal); - return this.clamp( min, max ); + return this.clamp(min, max); }; }(), - clampLength: function ( min, max ) { + clampLength: function (min, max) { var length = this.length(); - return this.divideScalar( length || 1 ).multiplyScalar( Math.max( min, Math.min( max, length ) ) ); + return this.divideScalar(length || 1).multiplyScalar(Math.max(min, Math.min(max, length))); }, floor: function () { - this.x = Math.floor( this.x ); - this.y = Math.floor( this.y ); - this.z = Math.floor( this.z ); + this.x = Math.floor(this.x); + this.y = Math.floor(this.y); + this.z = Math.floor(this.z); return this; @@ -2970,9 +2971,9 @@ ceil: function () { - this.x = Math.ceil( this.x ); - this.y = Math.ceil( this.y ); - this.z = Math.ceil( this.z ); + this.x = Math.ceil(this.x); + this.y = Math.ceil(this.y); + this.z = Math.ceil(this.z); return this; @@ -2980,9 +2981,9 @@ round: function () { - this.x = Math.round( this.x ); - this.y = Math.round( this.y ); - this.z = Math.round( this.z ); + this.x = Math.round(this.x); + this.y = Math.round(this.y); + this.z = Math.round(this.z); return this; @@ -2990,9 +2991,9 @@ roundToZero: function () { - this.x = ( this.x < 0 ) ? Math.ceil( this.x ) : Math.floor( this.x ); - this.y = ( this.y < 0 ) ? Math.ceil( this.y ) : Math.floor( this.y ); - this.z = ( this.z < 0 ) ? Math.ceil( this.z ) : Math.floor( this.z ); + this.x = (this.x < 0) ? Math.ceil(this.x) : Math.floor(this.x); + this.y = (this.y < 0) ? Math.ceil(this.y) : Math.floor(this.y); + this.z = (this.z < 0) ? Math.ceil(this.z) : Math.floor(this.z); return this; @@ -3008,7 +3009,7 @@ }, - dot: function ( v ) { + dot: function (v) { return this.x * v.x + this.y * v.y + this.z * v.z; @@ -3024,58 +3025,58 @@ length: function () { - return Math.sqrt( this.x * this.x + this.y * this.y + this.z * this.z ); + return Math.sqrt(this.x * this.x + this.y * this.y + this.z * this.z); }, manhattanLength: function () { - return Math.abs( this.x ) + Math.abs( this.y ) + Math.abs( this.z ); + return Math.abs(this.x) + Math.abs(this.y) + Math.abs(this.z); }, normalize: function () { - return this.divideScalar( this.length() || 1 ); + return this.divideScalar(this.length() || 1); }, - setLength: function ( length ) { + setLength: function (length) { - return this.normalize().multiplyScalar( length ); + return this.normalize().multiplyScalar(length); }, - lerp: function ( v, alpha ) { + lerp: function (v, alpha) { - this.x += ( v.x - this.x ) * alpha; - this.y += ( v.y - this.y ) * alpha; - this.z += ( v.z - this.z ) * alpha; + this.x += (v.x - this.x) * alpha; + this.y += (v.y - this.y) * alpha; + this.z += (v.z - this.z) * alpha; return this; }, - lerpVectors: function ( v1, v2, alpha ) { + lerpVectors: function (v1, v2, alpha) { - return this.subVectors( v2, v1 ).multiplyScalar( alpha ).add( v1 ); + return this.subVectors(v2, v1).multiplyScalar(alpha).add(v1); }, - cross: function ( v, w ) { + cross: function (v, w) { - if ( w !== undefined ) { + if (w !== undefined) { - console.warn( 'THREE.Vector3: .cross() now only accepts one argument. Use .crossVectors( a, b ) instead.' ); - return this.crossVectors( v, w ); + console.warn('THREE.Vector3: .cross() now only accepts one argument. Use .crossVectors( a, b ) instead.'); + return this.crossVectors(v, w); } - return this.crossVectors( this, v ); + return this.crossVectors(this, v); }, - crossVectors: function ( a, b ) { + crossVectors: function (a, b) { var ax = a.x, ay = a.y, az = a.z; var bx = b.x, by = b.y, bz = b.z; @@ -3088,11 +3089,11 @@ }, - projectOnVector: function ( vector ) { + projectOnVector: function (vector) { - var scalar = vector.dot( this ) / vector.lengthSq(); + var scalar = vector.dot(this) / vector.lengthSq(); - return this.copy( vector ).multiplyScalar( scalar ); + return this.copy(vector).multiplyScalar(scalar); }, @@ -3100,11 +3101,11 @@ var v1 = new Vector3(); - return function projectOnPlane( planeNormal ) { + return function projectOnPlane(planeNormal) { - v1.copy( this ).projectOnVector( planeNormal ); + v1.copy(this).projectOnVector(planeNormal); - return this.sub( v1 ); + return this.sub(v1); }; @@ -3117,31 +3118,31 @@ var v1 = new Vector3(); - return function reflect( normal ) { + return function reflect(normal) { - return this.sub( v1.copy( normal ).multiplyScalar( 2 * this.dot( normal ) ) ); + return this.sub(v1.copy(normal).multiplyScalar(2 * this.dot(normal))); }; }(), - angleTo: function ( v ) { + angleTo: function (v) { - var theta = this.dot( v ) / ( Math.sqrt( this.lengthSq() * v.lengthSq() ) ); + var theta = this.dot(v) / (Math.sqrt(this.lengthSq() * v.lengthSq())); // clamp, to handle numerical problems - return Math.acos( _Math.clamp( theta, - 1, 1 ) ); + return Math.acos(_Math.clamp(theta, - 1, 1)); }, - distanceTo: function ( v ) { + distanceTo: function (v) { - return Math.sqrt( this.distanceToSquared( v ) ); + return Math.sqrt(this.distanceToSquared(v)); }, - distanceToSquared: function ( v ) { + distanceToSquared: function (v) { var dx = this.x - v.x, dy = this.y - v.y, dz = this.z - v.z; @@ -3149,63 +3150,63 @@ }, - manhattanDistanceTo: function ( v ) { + manhattanDistanceTo: function (v) { - return Math.abs( this.x - v.x ) + Math.abs( this.y - v.y ) + Math.abs( this.z - v.z ); + return Math.abs(this.x - v.x) + Math.abs(this.y - v.y) + Math.abs(this.z - v.z); }, - setFromSpherical: function ( s ) { + setFromSpherical: function (s) { - return this.setFromSphericalCoords( s.radius, s.phi, s.theta ); + return this.setFromSphericalCoords(s.radius, s.phi, s.theta); }, - setFromSphericalCoords: function ( radius, phi, theta ) { + setFromSphericalCoords: function (radius, phi, theta) { - var sinPhiRadius = Math.sin( phi ) * radius; + var sinPhiRadius = Math.sin(phi) * radius; - this.x = sinPhiRadius * Math.sin( theta ); - this.y = Math.cos( phi ) * radius; - this.z = sinPhiRadius * Math.cos( theta ); + this.x = sinPhiRadius * Math.sin(theta); + this.y = Math.cos(phi) * radius; + this.z = sinPhiRadius * Math.cos(theta); return this; }, - setFromCylindrical: function ( c ) { + setFromCylindrical: function (c) { - return this.setFromCylindricalCoords( c.radius, c.theta, c.y ); + return this.setFromCylindricalCoords(c.radius, c.theta, c.y); }, - setFromCylindricalCoords: function ( radius, theta, y ) { + setFromCylindricalCoords: function (radius, theta, y) { - this.x = radius * Math.sin( theta ); + this.x = radius * Math.sin(theta); this.y = y; - this.z = radius * Math.cos( theta ); + this.z = radius * Math.cos(theta); return this; }, - setFromMatrixPosition: function ( m ) { + setFromMatrixPosition: function (m) { var e = m.elements; - this.x = e[ 12 ]; - this.y = e[ 13 ]; - this.z = e[ 14 ]; + this.x = e[12]; + this.y = e[13]; + this.z = e[14]; return this; }, - setFromMatrixScale: function ( m ) { + setFromMatrixScale: function (m) { - var sx = this.setFromMatrixColumn( m, 0 ).length(); - var sy = this.setFromMatrixColumn( m, 1 ).length(); - var sz = this.setFromMatrixColumn( m, 2 ).length(); + var sx = this.setFromMatrixColumn(m, 0).length(); + var sy = this.setFromMatrixColumn(m, 1).length(); + var sz = this.setFromMatrixColumn(m, 2).length(); this.x = sx; this.y = sy; @@ -3215,60 +3216,60 @@ }, - setFromMatrixColumn: function ( m, index ) { + setFromMatrixColumn: function (m, index) { - return this.fromArray( m.elements, index * 4 ); + return this.fromArray(m.elements, index * 4); }, - equals: function ( v ) { + equals: function (v) { - return ( ( v.x === this.x ) && ( v.y === this.y ) && ( v.z === this.z ) ); + return ((v.x === this.x) && (v.y === this.y) && (v.z === this.z)); }, - fromArray: function ( array, offset ) { + fromArray: function (array, offset) { - if ( offset === undefined ) offset = 0; + if (offset === undefined) offset = 0; - this.x = array[ offset ]; - this.y = array[ offset + 1 ]; - this.z = array[ offset + 2 ]; + this.x = array[offset]; + this.y = array[offset + 1]; + this.z = array[offset + 2]; return this; }, - toArray: function ( array, offset ) { + toArray: function (array, offset) { - if ( array === undefined ) array = []; - if ( offset === undefined ) offset = 0; + if (array === undefined) array = []; + if (offset === undefined) offset = 0; - array[ offset ] = this.x; - array[ offset + 1 ] = this.y; - array[ offset + 2 ] = this.z; + array[offset] = this.x; + array[offset + 1] = this.y; + array[offset + 2] = this.z; return array; }, - fromBufferAttribute: function ( attribute, index, offset ) { + fromBufferAttribute: function (attribute, index, offset) { - if ( offset !== undefined ) { + if (offset !== undefined) { - console.warn( 'THREE.Vector3: offset has been removed from .fromBufferAttribute().' ); + console.warn('THREE.Vector3: offset has been removed from .fromBufferAttribute().'); } - this.x = attribute.getX( index ); - this.y = attribute.getY( index ); - this.z = attribute.getZ( index ); + this.x = attribute.getX(index); + this.y = attribute.getY(index); + this.z = attribute.getZ(index); return this; } - } ); + }); /** * @author alteredq / http://alteredqualia.com/ @@ -3287,25 +3288,25 @@ ]; - if ( arguments.length > 0 ) { + if (arguments.length > 0) { - console.error( 'THREE.Matrix3: the constructor no longer reads arguments. use .set() instead.' ); + console.error('THREE.Matrix3: the constructor no longer reads arguments. use .set() instead.'); } } - Object.assign( Matrix3.prototype, { + Object.assign(Matrix3.prototype, { isMatrix3: true, - set: function ( n11, n12, n13, n21, n22, n23, n31, n32, n33 ) { + set: function (n11, n12, n13, n21, n22, n23, n31, n32, n33) { var te = this.elements; - te[ 0 ] = n11; te[ 1 ] = n21; te[ 2 ] = n31; - te[ 3 ] = n12; te[ 4 ] = n22; te[ 5 ] = n32; - te[ 6 ] = n13; te[ 7 ] = n23; te[ 8 ] = n33; + te[0] = n11; te[1] = n21; te[2] = n31; + te[3] = n12; te[4] = n22; te[5] = n32; + te[6] = n13; te[7] = n23; te[8] = n33; return this; @@ -3327,32 +3328,32 @@ clone: function () { - return new this.constructor().fromArray( this.elements ); + return new this.constructor().fromArray(this.elements); }, - copy: function ( m ) { + copy: function (m) { var te = this.elements; var me = m.elements; - te[ 0 ] = me[ 0 ]; te[ 1 ] = me[ 1 ]; te[ 2 ] = me[ 2 ]; - te[ 3 ] = me[ 3 ]; te[ 4 ] = me[ 4 ]; te[ 5 ] = me[ 5 ]; - te[ 6 ] = me[ 6 ]; te[ 7 ] = me[ 7 ]; te[ 8 ] = me[ 8 ]; + te[0] = me[0]; te[1] = me[1]; te[2] = me[2]; + te[3] = me[3]; te[4] = me[4]; te[5] = me[5]; + te[6] = me[6]; te[7] = me[7]; te[8] = me[8]; return this; }, - setFromMatrix4: function ( m ) { + setFromMatrix4: function (m) { var me = m.elements; this.set( - me[ 0 ], me[ 4 ], me[ 8 ], - me[ 1 ], me[ 5 ], me[ 9 ], - me[ 2 ], me[ 6 ], me[ 10 ] + me[0], me[4], me[8], + me[1], me[5], me[9], + me[2], me[6], me[10] ); @@ -3364,17 +3365,17 @@ var v1 = new Vector3(); - return function applyToBufferAttribute( attribute ) { + return function applyToBufferAttribute(attribute) { - for ( var i = 0, l = attribute.count; i < l; i ++ ) { + for (var i = 0, l = attribute.count; i < l; i++) { - v1.x = attribute.getX( i ); - v1.y = attribute.getY( i ); - v1.z = attribute.getZ( i ); + v1.x = attribute.getX(i); + v1.y = attribute.getY(i); + v1.z = attribute.getZ(i); - v1.applyMatrix3( this ); + v1.applyMatrix3(this); - attribute.setXYZ( i, v1.x, v1.y, v1.z ); + attribute.setXYZ(i, v1.x, v1.y, v1.z); } @@ -3384,55 +3385,55 @@ }(), - multiply: function ( m ) { + multiply: function (m) { - return this.multiplyMatrices( this, m ); + return this.multiplyMatrices(this, m); }, - premultiply: function ( m ) { + premultiply: function (m) { - return this.multiplyMatrices( m, this ); + return this.multiplyMatrices(m, this); }, - multiplyMatrices: function ( a, b ) { + multiplyMatrices: function (a, b) { var ae = a.elements; var be = b.elements; var te = this.elements; - var a11 = ae[ 0 ], a12 = ae[ 3 ], a13 = ae[ 6 ]; - var a21 = ae[ 1 ], a22 = ae[ 4 ], a23 = ae[ 7 ]; - var a31 = ae[ 2 ], a32 = ae[ 5 ], a33 = ae[ 8 ]; + var a11 = ae[0], a12 = ae[3], a13 = ae[6]; + var a21 = ae[1], a22 = ae[4], a23 = ae[7]; + var a31 = ae[2], a32 = ae[5], a33 = ae[8]; - var b11 = be[ 0 ], b12 = be[ 3 ], b13 = be[ 6 ]; - var b21 = be[ 1 ], b22 = be[ 4 ], b23 = be[ 7 ]; - var b31 = be[ 2 ], b32 = be[ 5 ], b33 = be[ 8 ]; + var b11 = be[0], b12 = be[3], b13 = be[6]; + var b21 = be[1], b22 = be[4], b23 = be[7]; + var b31 = be[2], b32 = be[5], b33 = be[8]; - te[ 0 ] = a11 * b11 + a12 * b21 + a13 * b31; - te[ 3 ] = a11 * b12 + a12 * b22 + a13 * b32; - te[ 6 ] = a11 * b13 + a12 * b23 + a13 * b33; + te[0] = a11 * b11 + a12 * b21 + a13 * b31; + te[3] = a11 * b12 + a12 * b22 + a13 * b32; + te[6] = a11 * b13 + a12 * b23 + a13 * b33; - te[ 1 ] = a21 * b11 + a22 * b21 + a23 * b31; - te[ 4 ] = a21 * b12 + a22 * b22 + a23 * b32; - te[ 7 ] = a21 * b13 + a22 * b23 + a23 * b33; + te[1] = a21 * b11 + a22 * b21 + a23 * b31; + te[4] = a21 * b12 + a22 * b22 + a23 * b32; + te[7] = a21 * b13 + a22 * b23 + a23 * b33; - te[ 2 ] = a31 * b11 + a32 * b21 + a33 * b31; - te[ 5 ] = a31 * b12 + a32 * b22 + a33 * b32; - te[ 8 ] = a31 * b13 + a32 * b23 + a33 * b33; + te[2] = a31 * b11 + a32 * b21 + a33 * b31; + te[5] = a31 * b12 + a32 * b22 + a33 * b32; + te[8] = a31 * b13 + a32 * b23 + a33 * b33; return this; }, - multiplyScalar: function ( s ) { + multiplyScalar: function (s) { var te = this.elements; - te[ 0 ] *= s; te[ 3 ] *= s; te[ 6 ] *= s; - te[ 1 ] *= s; te[ 4 ] *= s; te[ 7 ] *= s; - te[ 2 ] *= s; te[ 5 ] *= s; te[ 8 ] *= s; + te[0] *= s; te[3] *= s; te[6] *= s; + te[1] *= s; te[4] *= s; te[7] *= s; + te[2] *= s; te[5] *= s; te[8] *= s; return this; @@ -3442,28 +3443,28 @@ var te = this.elements; - var a = te[ 0 ], b = te[ 1 ], c = te[ 2 ], - d = te[ 3 ], e = te[ 4 ], f = te[ 5 ], - g = te[ 6 ], h = te[ 7 ], i = te[ 8 ]; + var a = te[0], b = te[1], c = te[2], + d = te[3], e = te[4], f = te[5], + g = te[6], h = te[7], i = te[8]; return a * e * i - a * f * h - b * d * i + b * f * g + c * d * h - c * e * g; }, - getInverse: function ( matrix, throwOnDegenerate ) { + getInverse: function (matrix, throwOnDegenerate) { - if ( matrix && matrix.isMatrix4 ) { + if (matrix && matrix.isMatrix4) { - console.error( "THREE.Matrix3: .getInverse() no longer takes a Matrix4 argument." ); + console.error("THREE.Matrix3: .getInverse() no longer takes a Matrix4 argument."); } var me = matrix.elements, te = this.elements, - n11 = me[ 0 ], n21 = me[ 1 ], n31 = me[ 2 ], - n12 = me[ 3 ], n22 = me[ 4 ], n32 = me[ 5 ], - n13 = me[ 6 ], n23 = me[ 7 ], n33 = me[ 8 ], + n11 = me[0], n21 = me[1], n31 = me[2], + n12 = me[3], n22 = me[4], n32 = me[5], + n13 = me[6], n23 = me[7], n33 = me[8], t11 = n33 * n22 - n32 * n23, t12 = n32 * n13 - n33 * n12, @@ -3471,17 +3472,17 @@ det = n11 * t11 + n21 * t12 + n31 * t13; - if ( det === 0 ) { + if (det === 0) { var msg = "THREE.Matrix3: .getInverse() can't invert matrix, determinant is 0"; - if ( throwOnDegenerate === true ) { + if (throwOnDegenerate === true) { - throw new Error( msg ); + throw new Error(msg); } else { - console.warn( msg ); + console.warn(msg); } @@ -3491,17 +3492,17 @@ var detInv = 1 / det; - te[ 0 ] = t11 * detInv; - te[ 1 ] = ( n31 * n23 - n33 * n21 ) * detInv; - te[ 2 ] = ( n32 * n21 - n31 * n22 ) * detInv; + te[0] = t11 * detInv; + te[1] = (n31 * n23 - n33 * n21) * detInv; + te[2] = (n32 * n21 - n31 * n22) * detInv; - te[ 3 ] = t12 * detInv; - te[ 4 ] = ( n33 * n11 - n31 * n13 ) * detInv; - te[ 5 ] = ( n31 * n12 - n32 * n11 ) * detInv; + te[3] = t12 * detInv; + te[4] = (n33 * n11 - n31 * n13) * detInv; + te[5] = (n31 * n12 - n32 * n11) * detInv; - te[ 6 ] = t13 * detInv; - te[ 7 ] = ( n21 * n13 - n23 * n11 ) * detInv; - te[ 8 ] = ( n22 * n11 - n21 * n12 ) * detInv; + te[6] = t13 * detInv; + te[7] = (n21 * n13 - n23 * n11) * detInv; + te[8] = (n22 * n11 - n21 * n12) * detInv; return this; @@ -3511,103 +3512,103 @@ var tmp, m = this.elements; - tmp = m[ 1 ]; m[ 1 ] = m[ 3 ]; m[ 3 ] = tmp; - tmp = m[ 2 ]; m[ 2 ] = m[ 6 ]; m[ 6 ] = tmp; - tmp = m[ 5 ]; m[ 5 ] = m[ 7 ]; m[ 7 ] = tmp; + tmp = m[1]; m[1] = m[3]; m[3] = tmp; + tmp = m[2]; m[2] = m[6]; m[6] = tmp; + tmp = m[5]; m[5] = m[7]; m[7] = tmp; return this; }, - getNormalMatrix: function ( matrix4 ) { + getNormalMatrix: function (matrix4) { - return this.setFromMatrix4( matrix4 ).getInverse( this ).transpose(); + return this.setFromMatrix4(matrix4).getInverse(this).transpose(); }, - transposeIntoArray: function ( r ) { + transposeIntoArray: function (r) { var m = this.elements; - r[ 0 ] = m[ 0 ]; - r[ 1 ] = m[ 3 ]; - r[ 2 ] = m[ 6 ]; - r[ 3 ] = m[ 1 ]; - r[ 4 ] = m[ 4 ]; - r[ 5 ] = m[ 7 ]; - r[ 6 ] = m[ 2 ]; - r[ 7 ] = m[ 5 ]; - r[ 8 ] = m[ 8 ]; + r[0] = m[0]; + r[1] = m[3]; + r[2] = m[6]; + r[3] = m[1]; + r[4] = m[4]; + r[5] = m[7]; + r[6] = m[2]; + r[7] = m[5]; + r[8] = m[8]; return this; }, - setUvTransform: function ( tx, ty, sx, sy, rotation, cx, cy ) { + setUvTransform: function (tx, ty, sx, sy, rotation, cx, cy) { - var c = Math.cos( rotation ); - var s = Math.sin( rotation ); + var c = Math.cos(rotation); + var s = Math.sin(rotation); this.set( - sx * c, sx * s, - sx * ( c * cx + s * cy ) + cx + tx, - - sy * s, sy * c, - sy * ( - s * cx + c * cy ) + cy + ty, + sx * c, sx * s, - sx * (c * cx + s * cy) + cx + tx, + - sy * s, sy * c, - sy * (- s * cx + c * cy) + cy + ty, 0, 0, 1 ); }, - scale: function ( sx, sy ) { + scale: function (sx, sy) { var te = this.elements; - te[ 0 ] *= sx; te[ 3 ] *= sx; te[ 6 ] *= sx; - te[ 1 ] *= sy; te[ 4 ] *= sy; te[ 7 ] *= sy; + te[0] *= sx; te[3] *= sx; te[6] *= sx; + te[1] *= sy; te[4] *= sy; te[7] *= sy; return this; }, - rotate: function ( theta ) { + rotate: function (theta) { - var c = Math.cos( theta ); - var s = Math.sin( theta ); + var c = Math.cos(theta); + var s = Math.sin(theta); var te = this.elements; - var a11 = te[ 0 ], a12 = te[ 3 ], a13 = te[ 6 ]; - var a21 = te[ 1 ], a22 = te[ 4 ], a23 = te[ 7 ]; + var a11 = te[0], a12 = te[3], a13 = te[6]; + var a21 = te[1], a22 = te[4], a23 = te[7]; - te[ 0 ] = c * a11 + s * a21; - te[ 3 ] = c * a12 + s * a22; - te[ 6 ] = c * a13 + s * a23; + te[0] = c * a11 + s * a21; + te[3] = c * a12 + s * a22; + te[6] = c * a13 + s * a23; - te[ 1 ] = - s * a11 + c * a21; - te[ 4 ] = - s * a12 + c * a22; - te[ 7 ] = - s * a13 + c * a23; + te[1] = - s * a11 + c * a21; + te[4] = - s * a12 + c * a22; + te[7] = - s * a13 + c * a23; return this; }, - translate: function ( tx, ty ) { + translate: function (tx, ty) { var te = this.elements; - te[ 0 ] += tx * te[ 2 ]; te[ 3 ] += tx * te[ 5 ]; te[ 6 ] += tx * te[ 8 ]; - te[ 1 ] += ty * te[ 2 ]; te[ 4 ] += ty * te[ 5 ]; te[ 7 ] += ty * te[ 8 ]; + te[0] += tx * te[2]; te[3] += tx * te[5]; te[6] += tx * te[8]; + te[1] += ty * te[2]; te[4] += ty * te[5]; te[7] += ty * te[8]; return this; }, - equals: function ( matrix ) { + equals: function (matrix) { var te = this.elements; var me = matrix.elements; - for ( var i = 0; i < 9; i ++ ) { + for (var i = 0; i < 9; i++) { - if ( te[ i ] !== me[ i ] ) return false; + if (te[i] !== me[i]) return false; } @@ -3615,13 +3616,13 @@ }, - fromArray: function ( array, offset ) { + fromArray: function (array, offset) { - if ( offset === undefined ) offset = 0; + if (offset === undefined) offset = 0; - for ( var i = 0; i < 9; i ++ ) { + for (var i = 0; i < 9; i++) { - this.elements[ i ] = array[ i + offset ]; + this.elements[i] = array[i + offset]; } @@ -3629,30 +3630,30 @@ }, - toArray: function ( array, offset ) { + toArray: function (array, offset) { - if ( array === undefined ) array = []; - if ( offset === undefined ) offset = 0; + if (array === undefined) array = []; + if (offset === undefined) offset = 0; var te = this.elements; - array[ offset ] = te[ 0 ]; - array[ offset + 1 ] = te[ 1 ]; - array[ offset + 2 ] = te[ 2 ]; + array[offset] = te[0]; + array[offset + 1] = te[1]; + array[offset + 2] = te[2]; - array[ offset + 3 ] = te[ 3 ]; - array[ offset + 4 ] = te[ 4 ]; - array[ offset + 5 ] = te[ 5 ]; + array[offset + 3] = te[3]; + array[offset + 4] = te[4]; + array[offset + 5] = te[5]; - array[ offset + 6 ] = te[ 6 ]; - array[ offset + 7 ] = te[ 7 ]; - array[ offset + 8 ] = te[ 8 ]; + array[offset + 6] = te[6]; + array[offset + 7] = te[7]; + array[offset + 8] = te[8]; return array; } - } ); + }); /** * @author mrdoob / http://mrdoob.com/ @@ -3662,45 +3663,45 @@ var ImageUtils = { - getDataURL: function ( image ) { + getDataURL: function (image) { var canvas; - if ( typeof HTMLCanvasElement == 'undefined' ) { + if (typeof HTMLCanvasElement == 'undefined') { return image.src; - } else if ( image instanceof HTMLCanvasElement ) { + } else if (image instanceof HTMLCanvasElement) { canvas = image; } else { - canvas = document.createElementNS( 'http://www.w3.org/1999/xhtml', 'canvas' ); + canvas = document.createElementNS('http://www.w3.org/1999/xhtml', 'canvas'); canvas.width = image.width; canvas.height = image.height; - var context = canvas.getContext( '2d' ); + var context = canvas.getContext('2d'); - if ( image instanceof ImageData ) { + if (image instanceof ImageData) { - context.putImageData( image, 0, 0 ); + context.putImageData(image, 0, 0); } else { - context.drawImage( image, 0, 0, image.width, image.height ); + context.drawImage(image, 0, 0, image.width, image.height); } } - if ( canvas.width > 2048 || canvas.height > 2048 ) { + if (canvas.width > 2048 || canvas.height > 2048) { - return canvas.toDataURL( 'image/jpeg', 0.6 ); + return canvas.toDataURL('image/jpeg', 0.6); } else { - return canvas.toDataURL( 'image/png' ); + return canvas.toDataURL('image/png'); } @@ -3716,9 +3717,9 @@ var textureId = 0; - function Texture( image, mapping, wrapS, wrapT, magFilter, minFilter, format, type, anisotropy, encoding ) { + function Texture(image, mapping, wrapS, wrapT, magFilter, minFilter, format, type, anisotropy, encoding) { - Object.defineProperty( this, 'id', { value: textureId ++ } ); + Object.defineProperty(this, 'id', { value: textureId++ }); this.uuid = _Math.generateUUID(); @@ -3740,9 +3741,9 @@ this.format = format !== undefined ? format : RGBAFormat; this.type = type !== undefined ? type : UnsignedByteType; - this.offset = new Vector2( 0, 0 ); - this.repeat = new Vector2( 1, 1 ); - this.center = new Vector2( 0, 0 ); + this.offset = new Vector2(0, 0); + this.repeat = new Vector2(1, 1); + this.center = new Vector2(0, 0); this.rotation = 0; this.matrixAutoUpdate = true; @@ -3767,7 +3768,7 @@ Texture.DEFAULT_IMAGE = undefined; Texture.DEFAULT_MAPPING = UVMapping; - Texture.prototype = Object.assign( Object.create( EventDispatcher.prototype ), { + Texture.prototype = Object.assign(Object.create(EventDispatcher.prototype), { constructor: Texture, @@ -3775,22 +3776,22 @@ updateMatrix: function () { - this.matrix.setUvTransform( this.offset.x, this.offset.y, this.repeat.x, this.repeat.y, this.rotation, this.center.x, this.center.y ); + this.matrix.setUvTransform(this.offset.x, this.offset.y, this.repeat.x, this.repeat.y, this.rotation, this.center.x, this.center.y); }, clone: function () { - return new this.constructor().copy( this ); + return new this.constructor().copy(this); }, - copy: function ( source ) { + copy: function (source) { this.name = source.name; this.image = source.image; - this.mipmaps = source.mipmaps.slice( 0 ); + this.mipmaps = source.mipmaps.slice(0); this.mapping = source.mapping; @@ -3805,13 +3806,13 @@ this.format = source.format; this.type = source.type; - this.offset.copy( source.offset ); - this.repeat.copy( source.repeat ); - this.center.copy( source.center ); + this.offset.copy(source.offset); + this.repeat.copy(source.repeat); + this.center.copy(source.center); this.rotation = source.rotation; this.matrixAutoUpdate = source.matrixAutoUpdate; - this.matrix.copy( source.matrix ); + this.matrix.copy(source.matrix); this.generateMipmaps = source.generateMipmaps; this.premultiplyAlpha = source.premultiplyAlpha; @@ -3823,13 +3824,13 @@ }, - toJSON: function ( meta ) { + toJSON: function (meta) { - var isRootObject = ( meta === undefined || typeof meta === 'string' ); + var isRootObject = (meta === undefined || typeof meta === 'string'); - if ( ! isRootObject && meta.textures[ this.uuid ] !== undefined ) { + if (!isRootObject && meta.textures[this.uuid] !== undefined) { - return meta.textures[ this.uuid ]; + return meta.textures[this.uuid]; } @@ -3846,12 +3847,12 @@ mapping: this.mapping, - repeat: [ this.repeat.x, this.repeat.y ], - offset: [ this.offset.x, this.offset.y ], - center: [ this.center.x, this.center.y ], + repeat: [this.repeat.x, this.repeat.y], + offset: [this.offset.x, this.offset.y], + center: [this.center.x, this.center.y], rotation: this.rotation, - wrap: [ this.wrapS, this.wrapT ], + wrap: [this.wrapS, this.wrapT], format: this.format, minFilter: this.minFilter, @@ -3862,31 +3863,31 @@ }; - if ( this.image !== undefined ) { + if (this.image !== undefined) { // TODO: Move to THREE.Image var image = this.image; - if ( image.uuid === undefined ) { + if (image.uuid === undefined) { image.uuid = _Math.generateUUID(); // UGH } - if ( ! isRootObject && meta.images[ image.uuid ] === undefined ) { + if (!isRootObject && meta.images[image.uuid] === undefined) { var url; - if ( Array.isArray( image ) ) { + if (Array.isArray(image)) { // process array of images e.g. CubeTexture url = []; - for ( var i = 0, l = image.length; i < l; i ++ ) { + for (var i = 0, l = image.length; i < l; i++) { - url.push( ImageUtils.getDataURL( image[ i ] ) ); + url.push(ImageUtils.getDataURL(image[i])); } @@ -3894,11 +3895,11 @@ // process single image - url = ImageUtils.getDataURL( image ); + url = ImageUtils.getDataURL(image); } - meta.images[ image.uuid ] = { + meta.images[image.uuid] = { uuid: image.uuid, url: url }; @@ -3909,9 +3910,9 @@ } - if ( ! isRootObject ) { + if (!isRootObject) { - meta.textures[ this.uuid ] = output; + meta.textures[this.uuid] = output; } @@ -3921,23 +3922,23 @@ dispose: function () { - this.dispatchEvent( { type: 'dispose' } ); + this.dispatchEvent({ type: 'dispose' }); }, - transformUv: function ( uv ) { + transformUv: function (uv) { - if ( this.mapping !== UVMapping ) return uv; + if (this.mapping !== UVMapping) return uv; - uv.applyMatrix3( this.matrix ); + uv.applyMatrix3(this.matrix); - if ( uv.x < 0 || uv.x > 1 ) { + if (uv.x < 0 || uv.x > 1) { - switch ( this.wrapS ) { + switch (this.wrapS) { case RepeatWrapping: - uv.x = uv.x - Math.floor( uv.x ); + uv.x = uv.x - Math.floor(uv.x); break; case ClampToEdgeWrapping: @@ -3947,13 +3948,13 @@ case MirroredRepeatWrapping: - if ( Math.abs( Math.floor( uv.x ) % 2 ) === 1 ) { + if (Math.abs(Math.floor(uv.x) % 2) === 1) { - uv.x = Math.ceil( uv.x ) - uv.x; + uv.x = Math.ceil(uv.x) - uv.x; } else { - uv.x = uv.x - Math.floor( uv.x ); + uv.x = uv.x - Math.floor(uv.x); } break; @@ -3962,13 +3963,13 @@ } - if ( uv.y < 0 || uv.y > 1 ) { + if (uv.y < 0 || uv.y > 1) { - switch ( this.wrapT ) { + switch (this.wrapT) { case RepeatWrapping: - uv.y = uv.y - Math.floor( uv.y ); + uv.y = uv.y - Math.floor(uv.y); break; case ClampToEdgeWrapping: @@ -3978,13 +3979,13 @@ case MirroredRepeatWrapping: - if ( Math.abs( Math.floor( uv.y ) % 2 ) === 1 ) { + if (Math.abs(Math.floor(uv.y) % 2) === 1) { - uv.y = Math.ceil( uv.y ) - uv.y; + uv.y = Math.ceil(uv.y) - uv.y; } else { - uv.y = uv.y - Math.floor( uv.y ); + uv.y = uv.y - Math.floor(uv.y); } break; @@ -3993,7 +3994,7 @@ } - if ( this.flipY ) { + if (this.flipY) { uv.y = 1 - uv.y; @@ -4003,17 +4004,17 @@ } - } ); + }); - Object.defineProperty( Texture.prototype, "needsUpdate", { + Object.defineProperty(Texture.prototype, "needsUpdate", { - set: function ( value ) { + set: function (value) { - if ( value === true ) this.version ++; + if (value === true) this.version++; } - } ); + }); /** * @author supereggbert / http://www.paulbrunt.co.uk/ @@ -4023,20 +4024,20 @@ * @author WestLangley / http://github.com/WestLangley */ - function Vector4( x, y, z, w ) { + function Vector4(x, y, z, w) { this.x = x || 0; this.y = y || 0; this.z = z || 0; - this.w = ( w !== undefined ) ? w : 1; + this.w = (w !== undefined) ? w : 1; } - Object.assign( Vector4.prototype, { + Object.assign(Vector4.prototype, { isVector4: true, - set: function ( x, y, z, w ) { + set: function (x, y, z, w) { this.x = x; this.y = y; @@ -4047,7 +4048,7 @@ }, - setScalar: function ( scalar ) { + setScalar: function (scalar) { this.x = scalar; this.y = scalar; @@ -4058,7 +4059,7 @@ }, - setX: function ( x ) { + setX: function (x) { this.x = x; @@ -4066,7 +4067,7 @@ }, - setY: function ( y ) { + setY: function (y) { this.y = y; @@ -4074,7 +4075,7 @@ }, - setZ: function ( z ) { + setZ: function (z) { this.z = z; @@ -4082,7 +4083,7 @@ }, - setW: function ( w ) { + setW: function (w) { this.w = w; @@ -4090,15 +4091,15 @@ }, - setComponent: function ( index, value ) { + setComponent: function (index, value) { - switch ( index ) { + switch (index) { case 0: this.x = value; break; case 1: this.y = value; break; case 2: this.z = value; break; case 3: this.w = value; break; - default: throw new Error( 'index is out of range: ' + index ); + default: throw new Error('index is out of range: ' + index); } @@ -4106,15 +4107,15 @@ }, - getComponent: function ( index ) { + getComponent: function (index) { - switch ( index ) { + switch (index) { case 0: return this.x; case 1: return this.y; case 2: return this.z; case 3: return this.w; - default: throw new Error( 'index is out of range: ' + index ); + default: throw new Error('index is out of range: ' + index); } @@ -4122,27 +4123,27 @@ clone: function () { - return new this.constructor( this.x, this.y, this.z, this.w ); + return new this.constructor(this.x, this.y, this.z, this.w); }, - copy: function ( v ) { + copy: function (v) { this.x = v.x; this.y = v.y; this.z = v.z; - this.w = ( v.w !== undefined ) ? v.w : 1; + this.w = (v.w !== undefined) ? v.w : 1; return this; }, - add: function ( v, w ) { + add: function (v, w) { - if ( w !== undefined ) { + if (w !== undefined) { - console.warn( 'THREE.Vector4: .add() now only accepts one argument. Use .addVectors( a, b ) instead.' ); - return this.addVectors( v, w ); + console.warn('THREE.Vector4: .add() now only accepts one argument. Use .addVectors( a, b ) instead.'); + return this.addVectors(v, w); } @@ -4155,7 +4156,7 @@ }, - addScalar: function ( s ) { + addScalar: function (s) { this.x += s; this.y += s; @@ -4166,7 +4167,7 @@ }, - addVectors: function ( a, b ) { + addVectors: function (a, b) { this.x = a.x + b.x; this.y = a.y + b.y; @@ -4177,7 +4178,7 @@ }, - addScaledVector: function ( v, s ) { + addScaledVector: function (v, s) { this.x += v.x * s; this.y += v.y * s; @@ -4188,12 +4189,12 @@ }, - sub: function ( v, w ) { + sub: function (v, w) { - if ( w !== undefined ) { + if (w !== undefined) { - console.warn( 'THREE.Vector4: .sub() now only accepts one argument. Use .subVectors( a, b ) instead.' ); - return this.subVectors( v, w ); + console.warn('THREE.Vector4: .sub() now only accepts one argument. Use .subVectors( a, b ) instead.'); + return this.subVectors(v, w); } @@ -4206,7 +4207,7 @@ }, - subScalar: function ( s ) { + subScalar: function (s) { this.x -= s; this.y -= s; @@ -4217,7 +4218,7 @@ }, - subVectors: function ( a, b ) { + subVectors: function (a, b) { this.x = a.x - b.x; this.y = a.y - b.y; @@ -4228,7 +4229,7 @@ }, - multiplyScalar: function ( scalar ) { + multiplyScalar: function (scalar) { this.x *= scalar; this.y *= scalar; @@ -4239,37 +4240,37 @@ }, - applyMatrix4: function ( m ) { + applyMatrix4: function (m) { var x = this.x, y = this.y, z = this.z, w = this.w; var e = m.elements; - this.x = e[ 0 ] * x + e[ 4 ] * y + e[ 8 ] * z + e[ 12 ] * w; - this.y = e[ 1 ] * x + e[ 5 ] * y + e[ 9 ] * z + e[ 13 ] * w; - this.z = e[ 2 ] * x + e[ 6 ] * y + e[ 10 ] * z + e[ 14 ] * w; - this.w = e[ 3 ] * x + e[ 7 ] * y + e[ 11 ] * z + e[ 15 ] * w; + this.x = e[0] * x + e[4] * y + e[8] * z + e[12] * w; + this.y = e[1] * x + e[5] * y + e[9] * z + e[13] * w; + this.z = e[2] * x + e[6] * y + e[10] * z + e[14] * w; + this.w = e[3] * x + e[7] * y + e[11] * z + e[15] * w; return this; }, - divideScalar: function ( scalar ) { + divideScalar: function (scalar) { - return this.multiplyScalar( 1 / scalar ); + return this.multiplyScalar(1 / scalar); }, - setAxisAngleFromQuaternion: function ( q ) { + setAxisAngleFromQuaternion: function (q) { // http://www.euclideanspace.com/maths/geometry/rotations/conversions/quaternionToAngle/index.htm // q is assumed to be normalized - this.w = 2 * Math.acos( q.w ); + this.w = 2 * Math.acos(q.w); - var s = Math.sqrt( 1 - q.w * q.w ); + var s = Math.sqrt(1 - q.w * q.w); - if ( s < 0.0001 ) { + if (s < 0.0001) { this.x = 1; this.y = 0; @@ -4287,7 +4288,7 @@ }, - setAxisAngleFromRotationMatrix: function ( m ) { + setAxisAngleFromRotationMatrix: function (m) { // http://www.euclideanspace.com/maths/geometry/rotations/conversions/matrixToAngle/index.htm @@ -4299,26 +4300,26 @@ te = m.elements, - m11 = te[ 0 ], m12 = te[ 4 ], m13 = te[ 8 ], - m21 = te[ 1 ], m22 = te[ 5 ], m23 = te[ 9 ], - m31 = te[ 2 ], m32 = te[ 6 ], m33 = te[ 10 ]; + m11 = te[0], m12 = te[4], m13 = te[8], + m21 = te[1], m22 = te[5], m23 = te[9], + m31 = te[2], m32 = te[6], m33 = te[10]; - if ( ( Math.abs( m12 - m21 ) < epsilon ) && - ( Math.abs( m13 - m31 ) < epsilon ) && - ( Math.abs( m23 - m32 ) < epsilon ) ) { + if ((Math.abs(m12 - m21) < epsilon) && + (Math.abs(m13 - m31) < epsilon) && + (Math.abs(m23 - m32) < epsilon)) { // singularity found // first check for identity matrix which must have +1 for all terms // in leading diagonal and zero in other terms - if ( ( Math.abs( m12 + m21 ) < epsilon2 ) && - ( Math.abs( m13 + m31 ) < epsilon2 ) && - ( Math.abs( m23 + m32 ) < epsilon2 ) && - ( Math.abs( m11 + m22 + m33 - 3 ) < epsilon2 ) ) { + if ((Math.abs(m12 + m21) < epsilon2) && + (Math.abs(m13 + m31) < epsilon2) && + (Math.abs(m23 + m32) < epsilon2) && + (Math.abs(m11 + m22 + m33 - 3) < epsilon2)) { // this singularity is identity matrix so angle = 0 - this.set( 1, 0, 0, 0 ); + this.set(1, 0, 0, 0); return this; // zero angle, arbitrary axis @@ -4328,18 +4329,18 @@ angle = Math.PI; - var xx = ( m11 + 1 ) / 2; - var yy = ( m22 + 1 ) / 2; - var zz = ( m33 + 1 ) / 2; - var xy = ( m12 + m21 ) / 4; - var xz = ( m13 + m31 ) / 4; - var yz = ( m23 + m32 ) / 4; + var xx = (m11 + 1) / 2; + var yy = (m22 + 1) / 2; + var zz = (m33 + 1) / 2; + var xy = (m12 + m21) / 4; + var xz = (m13 + m31) / 4; + var yz = (m23 + m32) / 4; - if ( ( xx > yy ) && ( xx > zz ) ) { + if ((xx > yy) && (xx > zz)) { // m11 is the largest diagonal term - if ( xx < epsilon ) { + if (xx < epsilon) { x = 0; y = 0.707106781; @@ -4347,17 +4348,17 @@ } else { - x = Math.sqrt( xx ); + x = Math.sqrt(xx); y = xy / x; z = xz / x; } - } else if ( yy > zz ) { + } else if (yy > zz) { // m22 is the largest diagonal term - if ( yy < epsilon ) { + if (yy < epsilon) { x = 0.707106781; y = 0; @@ -4365,7 +4366,7 @@ } else { - y = Math.sqrt( yy ); + y = Math.sqrt(yy); x = xy / y; z = yz / y; @@ -4375,7 +4376,7 @@ // m33 is the largest diagonal term so base result on this - if ( zz < epsilon ) { + if (zz < epsilon) { x = 0.707106781; y = 0.707106781; @@ -4383,7 +4384,7 @@ } else { - z = Math.sqrt( zz ); + z = Math.sqrt(zz); x = xz / z; y = yz / z; @@ -4391,7 +4392,7 @@ } - this.set( x, y, z, angle ); + this.set(x, y, z, angle); return this; // return 180 deg rotation @@ -4399,54 +4400,54 @@ // as we have reached here there are no singularities so we can handle normally - var s = Math.sqrt( ( m32 - m23 ) * ( m32 - m23 ) + - ( m13 - m31 ) * ( m13 - m31 ) + - ( m21 - m12 ) * ( m21 - m12 ) ); // used to normalize + var s = Math.sqrt((m32 - m23) * (m32 - m23) + + (m13 - m31) * (m13 - m31) + + (m21 - m12) * (m21 - m12)); // used to normalize - if ( Math.abs( s ) < 0.001 ) s = 1; + if (Math.abs(s) < 0.001) s = 1; // prevent divide by zero, should not happen if matrix is orthogonal and should be // caught by singularity test above, but I've left it in just in case - this.x = ( m32 - m23 ) / s; - this.y = ( m13 - m31 ) / s; - this.z = ( m21 - m12 ) / s; - this.w = Math.acos( ( m11 + m22 + m33 - 1 ) / 2 ); + this.x = (m32 - m23) / s; + this.y = (m13 - m31) / s; + this.z = (m21 - m12) / s; + this.w = Math.acos((m11 + m22 + m33 - 1) / 2); return this; }, - min: function ( v ) { + min: function (v) { - this.x = Math.min( this.x, v.x ); - this.y = Math.min( this.y, v.y ); - this.z = Math.min( this.z, v.z ); - this.w = Math.min( this.w, v.w ); + this.x = Math.min(this.x, v.x); + this.y = Math.min(this.y, v.y); + this.z = Math.min(this.z, v.z); + this.w = Math.min(this.w, v.w); return this; }, - max: function ( v ) { + max: function (v) { - this.x = Math.max( this.x, v.x ); - this.y = Math.max( this.y, v.y ); - this.z = Math.max( this.z, v.z ); - this.w = Math.max( this.w, v.w ); + this.x = Math.max(this.x, v.x); + this.y = Math.max(this.y, v.y); + this.z = Math.max(this.z, v.z); + this.w = Math.max(this.w, v.w); return this; }, - clamp: function ( min, max ) { + clamp: function (min, max) { // assumes min < max, componentwise - this.x = Math.max( min.x, Math.min( max.x, this.x ) ); - this.y = Math.max( min.y, Math.min( max.y, this.y ) ); - this.z = Math.max( min.z, Math.min( max.z, this.z ) ); - this.w = Math.max( min.w, Math.min( max.w, this.w ) ); + this.x = Math.max(min.x, Math.min(max.x, this.x)); + this.y = Math.max(min.y, Math.min(max.y, this.y)); + this.z = Math.max(min.z, Math.min(max.z, this.z)); + this.w = Math.max(min.w, Math.min(max.w, this.w)); return this; @@ -4456,38 +4457,38 @@ var min, max; - return function clampScalar( minVal, maxVal ) { + return function clampScalar(minVal, maxVal) { - if ( min === undefined ) { + if (min === undefined) { min = new Vector4(); max = new Vector4(); } - min.set( minVal, minVal, minVal, minVal ); - max.set( maxVal, maxVal, maxVal, maxVal ); + min.set(minVal, minVal, minVal, minVal); + max.set(maxVal, maxVal, maxVal, maxVal); - return this.clamp( min, max ); + return this.clamp(min, max); }; }(), - clampLength: function ( min, max ) { + clampLength: function (min, max) { var length = this.length(); - return this.divideScalar( length || 1 ).multiplyScalar( Math.max( min, Math.min( max, length ) ) ); + return this.divideScalar(length || 1).multiplyScalar(Math.max(min, Math.min(max, length))); }, floor: function () { - this.x = Math.floor( this.x ); - this.y = Math.floor( this.y ); - this.z = Math.floor( this.z ); - this.w = Math.floor( this.w ); + this.x = Math.floor(this.x); + this.y = Math.floor(this.y); + this.z = Math.floor(this.z); + this.w = Math.floor(this.w); return this; @@ -4495,10 +4496,10 @@ ceil: function () { - this.x = Math.ceil( this.x ); - this.y = Math.ceil( this.y ); - this.z = Math.ceil( this.z ); - this.w = Math.ceil( this.w ); + this.x = Math.ceil(this.x); + this.y = Math.ceil(this.y); + this.z = Math.ceil(this.z); + this.w = Math.ceil(this.w); return this; @@ -4506,10 +4507,10 @@ round: function () { - this.x = Math.round( this.x ); - this.y = Math.round( this.y ); - this.z = Math.round( this.z ); - this.w = Math.round( this.w ); + this.x = Math.round(this.x); + this.y = Math.round(this.y); + this.z = Math.round(this.z); + this.w = Math.round(this.w); return this; @@ -4517,10 +4518,10 @@ roundToZero: function () { - this.x = ( this.x < 0 ) ? Math.ceil( this.x ) : Math.floor( this.x ); - this.y = ( this.y < 0 ) ? Math.ceil( this.y ) : Math.floor( this.y ); - this.z = ( this.z < 0 ) ? Math.ceil( this.z ) : Math.floor( this.z ); - this.w = ( this.w < 0 ) ? Math.ceil( this.w ) : Math.floor( this.w ); + this.x = (this.x < 0) ? Math.ceil(this.x) : Math.floor(this.x); + this.y = (this.y < 0) ? Math.ceil(this.y) : Math.floor(this.y); + this.z = (this.z < 0) ? Math.ceil(this.z) : Math.floor(this.z); + this.w = (this.w < 0) ? Math.ceil(this.w) : Math.floor(this.w); return this; @@ -4537,7 +4538,7 @@ }, - dot: function ( v ) { + dot: function (v) { return this.x * v.x + this.y * v.y + this.z * v.z + this.w * v.w; @@ -4551,96 +4552,96 @@ length: function () { - return Math.sqrt( this.x * this.x + this.y * this.y + this.z * this.z + this.w * this.w ); + return Math.sqrt(this.x * this.x + this.y * this.y + this.z * this.z + this.w * this.w); }, manhattanLength: function () { - return Math.abs( this.x ) + Math.abs( this.y ) + Math.abs( this.z ) + Math.abs( this.w ); + return Math.abs(this.x) + Math.abs(this.y) + Math.abs(this.z) + Math.abs(this.w); }, normalize: function () { - return this.divideScalar( this.length() || 1 ); + return this.divideScalar(this.length() || 1); }, - setLength: function ( length ) { + setLength: function (length) { - return this.normalize().multiplyScalar( length ); + return this.normalize().multiplyScalar(length); }, - lerp: function ( v, alpha ) { + lerp: function (v, alpha) { - this.x += ( v.x - this.x ) * alpha; - this.y += ( v.y - this.y ) * alpha; - this.z += ( v.z - this.z ) * alpha; - this.w += ( v.w - this.w ) * alpha; + this.x += (v.x - this.x) * alpha; + this.y += (v.y - this.y) * alpha; + this.z += (v.z - this.z) * alpha; + this.w += (v.w - this.w) * alpha; return this; }, - lerpVectors: function ( v1, v2, alpha ) { + lerpVectors: function (v1, v2, alpha) { - return this.subVectors( v2, v1 ).multiplyScalar( alpha ).add( v1 ); + return this.subVectors(v2, v1).multiplyScalar(alpha).add(v1); }, - equals: function ( v ) { + equals: function (v) { - return ( ( v.x === this.x ) && ( v.y === this.y ) && ( v.z === this.z ) && ( v.w === this.w ) ); + return ((v.x === this.x) && (v.y === this.y) && (v.z === this.z) && (v.w === this.w)); }, - fromArray: function ( array, offset ) { + fromArray: function (array, offset) { - if ( offset === undefined ) offset = 0; + if (offset === undefined) offset = 0; - this.x = array[ offset ]; - this.y = array[ offset + 1 ]; - this.z = array[ offset + 2 ]; - this.w = array[ offset + 3 ]; + this.x = array[offset]; + this.y = array[offset + 1]; + this.z = array[offset + 2]; + this.w = array[offset + 3]; return this; }, - toArray: function ( array, offset ) { + toArray: function (array, offset) { - if ( array === undefined ) array = []; - if ( offset === undefined ) offset = 0; + if (array === undefined) array = []; + if (offset === undefined) offset = 0; - array[ offset ] = this.x; - array[ offset + 1 ] = this.y; - array[ offset + 2 ] = this.z; - array[ offset + 3 ] = this.w; + array[offset] = this.x; + array[offset + 1] = this.y; + array[offset + 2] = this.z; + array[offset + 3] = this.w; return array; }, - fromBufferAttribute: function ( attribute, index, offset ) { + fromBufferAttribute: function (attribute, index, offset) { - if ( offset !== undefined ) { + if (offset !== undefined) { - console.warn( 'THREE.Vector4: offset has been removed from .fromBufferAttribute().' ); + console.warn('THREE.Vector4: offset has been removed from .fromBufferAttribute().'); } - this.x = attribute.getX( index ); - this.y = attribute.getY( index ); - this.z = attribute.getZ( index ); - this.w = attribute.getW( index ); + this.x = attribute.getX(index); + this.y = attribute.getY(index); + this.z = attribute.getZ(index); + this.w = attribute.getW(index); return this; } - } ); + }); /** * @author szimek / https://github.com/szimek/ @@ -4653,21 +4654,21 @@ * Texture parameters for an auto-generated target texture * depthBuffer/stencilBuffer: Booleans to indicate if we should generate these buffers */ - function WebGLRenderTarget( width, height, options ) { + function WebGLRenderTarget(width, height, options) { this.width = width; this.height = height; - this.scissor = new Vector4( 0, 0, width, height ); + this.scissor = new Vector4(0, 0, width, height); this.scissorTest = false; - this.viewport = new Vector4( 0, 0, width, height ); + this.viewport = new Vector4(0, 0, width, height); options = options || {}; - if ( options.minFilter === undefined ) options.minFilter = LinearFilter; + if (options.minFilter === undefined) options.minFilter = LinearFilter; - this.texture = new Texture( undefined, undefined, options.wrapS, options.wrapT, options.magFilter, options.minFilter, options.format, options.type, options.anisotropy, options.encoding ); + this.texture = new Texture(undefined, undefined, options.wrapS, options.wrapT, options.magFilter, options.minFilter, options.format, options.type, options.anisotropy, options.encoding); this.texture.generateMipmaps = options.generateMipmaps !== undefined ? options.generateMipmaps : true; @@ -4677,15 +4678,15 @@ } - WebGLRenderTarget.prototype = Object.assign( Object.create( EventDispatcher.prototype ), { + WebGLRenderTarget.prototype = Object.assign(Object.create(EventDispatcher.prototype), { constructor: WebGLRenderTarget, isWebGLRenderTarget: true, - setSize: function ( width, height ) { + setSize: function (width, height) { - if ( this.width !== width || this.height !== height ) { + if (this.width !== width || this.height !== height) { this.width = width; this.height = height; @@ -4694,23 +4695,23 @@ } - this.viewport.set( 0, 0, width, height ); - this.scissor.set( 0, 0, width, height ); + this.viewport.set(0, 0, width, height); + this.scissor.set(0, 0, width, height); }, clone: function () { - return new this.constructor().copy( this ); + return new this.constructor().copy(this); }, - copy: function ( source ) { + copy: function (source) { this.width = source.width; this.height = source.height; - this.viewport.copy( source.viewport ); + this.viewport.copy(source.viewport); this.texture = source.texture.clone(); @@ -4724,26 +4725,26 @@ dispose: function () { - this.dispatchEvent( { type: 'dispose' } ); + this.dispatchEvent({ type: 'dispose' }); } - } ); + }); /** * @author alteredq / http://alteredqualia.com */ - function WebGLRenderTargetCube( width, height, options ) { + function WebGLRenderTargetCube(width, height, options) { - WebGLRenderTarget.call( this, width, height, options ); + WebGLRenderTarget.call(this, width, height, options); this.activeCubeFace = 0; // PX 0, NX 1, PY 2, NY 3, PZ 4, NZ 5 this.activeMipMapLevel = 0; } - WebGLRenderTargetCube.prototype = Object.create( WebGLRenderTarget.prototype ); + WebGLRenderTargetCube.prototype = Object.create(WebGLRenderTarget.prototype); WebGLRenderTargetCube.prototype.constructor = WebGLRenderTargetCube; WebGLRenderTargetCube.prototype.isWebGLRenderTargetCube = true; @@ -4752,9 +4753,9 @@ * @author alteredq / http://alteredqualia.com/ */ - function DataTexture( data, width, height, format, type, mapping, wrapS, wrapT, magFilter, minFilter, anisotropy, encoding ) { + function DataTexture(data, width, height, format, type, mapping, wrapS, wrapT, magFilter, minFilter, anisotropy, encoding) { - Texture.call( this, null, mapping, wrapS, wrapT, magFilter, minFilter, format, type, anisotropy, encoding ); + Texture.call(this, null, mapping, wrapS, wrapT, magFilter, minFilter, format, type, anisotropy, encoding); this.image = { data: data, width: width, height: height }; @@ -4767,7 +4768,7 @@ } - DataTexture.prototype = Object.create( Texture.prototype ); + DataTexture.prototype = Object.create(Texture.prototype); DataTexture.prototype.constructor = DataTexture; DataTexture.prototype.isDataTexture = true; @@ -4777,27 +4778,27 @@ * @author WestLangley / http://github.com/WestLangley */ - function Box3( min, max ) { + function Box3(min, max) { - this.min = ( min !== undefined ) ? min : new Vector3( + Infinity, + Infinity, + Infinity ); - this.max = ( max !== undefined ) ? max : new Vector3( - Infinity, - Infinity, - Infinity ); + this.min = (min !== undefined) ? min : new Vector3(+ Infinity, + Infinity, + Infinity); + this.max = (max !== undefined) ? max : new Vector3(- Infinity, - Infinity, - Infinity); } - Object.assign( Box3.prototype, { + Object.assign(Box3.prototype, { isBox3: true, - set: function ( min, max ) { + set: function (min, max) { - this.min.copy( min ); - this.max.copy( max ); + this.min.copy(min); + this.max.copy(max); return this; }, - setFromArray: function ( array ) { + setFromArray: function (array) { var minX = + Infinity; var minY = + Infinity; @@ -4807,30 +4808,30 @@ var maxY = - Infinity; var maxZ = - Infinity; - for ( var i = 0, l = array.length; i < l; i += 3 ) { + for (var i = 0, l = array.length; i < l; i += 3) { - var x = array[ i ]; - var y = array[ i + 1 ]; - var z = array[ i + 2 ]; + var x = array[i]; + var y = array[i + 1]; + var z = array[i + 2]; - if ( x < minX ) minX = x; - if ( y < minY ) minY = y; - if ( z < minZ ) minZ = z; + if (x < minX) minX = x; + if (y < minY) minY = y; + if (z < minZ) minZ = z; - if ( x > maxX ) maxX = x; - if ( y > maxY ) maxY = y; - if ( z > maxZ ) maxZ = z; + if (x > maxX) maxX = x; + if (y > maxY) maxY = y; + if (z > maxZ) maxZ = z; } - this.min.set( minX, minY, minZ ); - this.max.set( maxX, maxY, maxZ ); + this.min.set(minX, minY, minZ); + this.max.set(maxX, maxY, maxZ); return this; }, - setFromBufferAttribute: function ( attribute ) { + setFromBufferAttribute: function (attribute) { var minX = + Infinity; var minY = + Infinity; @@ -4840,36 +4841,36 @@ var maxY = - Infinity; var maxZ = - Infinity; - for ( var i = 0, l = attribute.count; i < l; i ++ ) { + for (var i = 0, l = attribute.count; i < l; i++) { - var x = attribute.getX( i ); - var y = attribute.getY( i ); - var z = attribute.getZ( i ); + var x = attribute.getX(i); + var y = attribute.getY(i); + var z = attribute.getZ(i); - if ( x < minX ) minX = x; - if ( y < minY ) minY = y; - if ( z < minZ ) minZ = z; + if (x < minX) minX = x; + if (y < minY) minY = y; + if (z < minZ) minZ = z; - if ( x > maxX ) maxX = x; - if ( y > maxY ) maxY = y; - if ( z > maxZ ) maxZ = z; + if (x > maxX) maxX = x; + if (y > maxY) maxY = y; + if (z > maxZ) maxZ = z; } - this.min.set( minX, minY, minZ ); - this.max.set( maxX, maxY, maxZ ); + this.min.set(minX, minY, minZ); + this.max.set(maxX, maxY, maxZ); return this; }, - setFromPoints: function ( points ) { + setFromPoints: function (points) { this.makeEmpty(); - for ( var i = 0, il = points.length; i < il; i ++ ) { + for (var i = 0, il = points.length; i < il; i++) { - this.expandByPoint( points[ i ] ); + this.expandByPoint(points[i]); } @@ -4881,12 +4882,12 @@ var v1 = new Vector3(); - return function setFromCenterAndSize( center, size ) { + return function setFromCenterAndSize(center, size) { - var halfSize = v1.copy( size ).multiplyScalar( 0.5 ); + var halfSize = v1.copy(size).multiplyScalar(0.5); - this.min.copy( center ).sub( halfSize ); - this.max.copy( center ).add( halfSize ); + this.min.copy(center).sub(halfSize); + this.max.copy(center).add(halfSize); return this; @@ -4894,24 +4895,24 @@ }(), - setFromObject: function ( object ) { + setFromObject: function (object) { this.makeEmpty(); - return this.expandByObject( object ); + return this.expandByObject(object); }, clone: function () { - return new this.constructor().copy( this ); + return new this.constructor().copy(this); }, - copy: function ( box ) { + copy: function (box) { - this.min.copy( box.min ); - this.max.copy( box.max ); + this.min.copy(box.min); + this.max.copy(box.max); return this; @@ -4930,58 +4931,58 @@ // this is a more robust check for empty than ( volume <= 0 ) because volume can get positive with two negative axes - return ( this.max.x < this.min.x ) || ( this.max.y < this.min.y ) || ( this.max.z < this.min.z ); + return (this.max.x < this.min.x) || (this.max.y < this.min.y) || (this.max.z < this.min.z); }, - getCenter: function ( target ) { + getCenter: function (target) { - if ( target === undefined ) { + if (target === undefined) { - console.warn( 'THREE.Box3: .getCenter() target is now required' ); + console.warn('THREE.Box3: .getCenter() target is now required'); target = new Vector3(); } - return this.isEmpty() ? target.set( 0, 0, 0 ) : target.addVectors( this.min, this.max ).multiplyScalar( 0.5 ); + return this.isEmpty() ? target.set(0, 0, 0) : target.addVectors(this.min, this.max).multiplyScalar(0.5); }, - getSize: function ( target ) { + getSize: function (target) { - if ( target === undefined ) { + if (target === undefined) { - console.warn( 'THREE.Box3: .getSize() target is now required' ); + console.warn('THREE.Box3: .getSize() target is now required'); target = new Vector3(); } - return this.isEmpty() ? target.set( 0, 0, 0 ) : target.subVectors( this.max, this.min ); + return this.isEmpty() ? target.set(0, 0, 0) : target.subVectors(this.max, this.min); }, - expandByPoint: function ( point ) { + expandByPoint: function (point) { - this.min.min( point ); - this.max.max( point ); + this.min.min(point); + this.max.max(point); return this; }, - expandByVector: function ( vector ) { + expandByVector: function (vector) { - this.min.sub( vector ); - this.max.add( vector ); + this.min.sub(vector); + this.max.add(vector); return this; }, - expandByScalar: function ( scalar ) { + expandByScalar: function (scalar) { - this.min.addScalar( - scalar ); - this.max.addScalar( scalar ); + this.min.addScalar(- scalar); + this.max.addScalar(scalar); return this; @@ -4996,36 +4997,36 @@ var v1 = new Vector3(); - function traverse( node ) { + function traverse(node) { var geometry = node.geometry; - if ( geometry !== undefined ) { + if (geometry !== undefined) { - if ( geometry.isGeometry ) { + if (geometry.isGeometry) { var vertices = geometry.vertices; - for ( i = 0, l = vertices.length; i < l; i ++ ) { + for (i = 0, l = vertices.length; i < l; i++) { - v1.copy( vertices[ i ] ); - v1.applyMatrix4( node.matrixWorld ); + v1.copy(vertices[i]); + v1.applyMatrix4(node.matrixWorld); - scope.expandByPoint( v1 ); + scope.expandByPoint(v1); } - } else if ( geometry.isBufferGeometry ) { + } else if (geometry.isBufferGeometry) { var attribute = geometry.attributes.position; - if ( attribute !== undefined ) { + if (attribute !== undefined) { - for ( i = 0, l = attribute.count; i < l; i ++ ) { + for (i = 0, l = attribute.count; i < l; i++) { - v1.fromBufferAttribute( attribute, i ).applyMatrix4( node.matrixWorld ); + v1.fromBufferAttribute(attribute, i).applyMatrix4(node.matrixWorld); - scope.expandByPoint( v1 ); + scope.expandByPoint(v1); } @@ -5037,13 +5038,13 @@ } - return function expandByObject( object ) { + return function expandByObject(object) { scope = this; - object.updateMatrixWorld( true ); + object.updateMatrixWorld(true); - object.traverse( traverse ); + object.traverse(traverse); return this; @@ -5051,7 +5052,7 @@ }(), - containsPoint: function ( point ) { + containsPoint: function (point) { return point.x < this.min.x || point.x > this.max.x || point.y < this.min.y || point.y > this.max.y || @@ -5059,7 +5060,7 @@ }, - containsBox: function ( box ) { + containsBox: function (box) { return this.min.x <= box.min.x && box.max.x <= this.max.x && this.min.y <= box.min.y && box.max.y <= this.max.y && @@ -5067,27 +5068,27 @@ }, - getParameter: function ( point, target ) { + getParameter: function (point, target) { // This can potentially have a divide by zero if the box // has a size dimension of 0. - if ( target === undefined ) { + if (target === undefined) { - console.warn( 'THREE.Box3: .getParameter() target is now required' ); + console.warn('THREE.Box3: .getParameter() target is now required'); target = new Vector3(); } return target.set( - ( point.x - this.min.x ) / ( this.max.x - this.min.x ), - ( point.y - this.min.y ) / ( this.max.y - this.min.y ), - ( point.z - this.min.z ) / ( this.max.z - this.min.z ) + (point.x - this.min.x) / (this.max.x - this.min.x), + (point.y - this.min.y) / (this.max.y - this.min.y), + (point.z - this.min.z) / (this.max.z - this.min.z) ); }, - intersectsBox: function ( box ) { + intersectsBox: function (box) { // using 6 splitting planes to rule out intersections. return box.max.x < this.min.x || box.min.x > this.max.x || @@ -5096,30 +5097,30 @@ }, - intersectsSphere: ( function () { + intersectsSphere: (function () { var closestPoint = new Vector3(); - return function intersectsSphere( sphere ) { + return function intersectsSphere(sphere) { // Find the point on the AABB closest to the sphere center. - this.clampPoint( sphere.center, closestPoint ); + this.clampPoint(sphere.center, closestPoint); // If that point is inside the sphere, the AABB and sphere intersect. - return closestPoint.distanceToSquared( sphere.center ) <= ( sphere.radius * sphere.radius ); + return closestPoint.distanceToSquared(sphere.center) <= (sphere.radius * sphere.radius); }; - } )(), + })(), - intersectsPlane: function ( plane ) { + intersectsPlane: function (plane) { // We compute the minimum and maximum dot product values. If those values // are on the same side (back or front) of the plane, then there is no intersection. var min, max; - if ( plane.normal.x > 0 ) { + if (plane.normal.x > 0) { min = plane.normal.x * this.min.x; max = plane.normal.x * this.max.x; @@ -5131,7 +5132,7 @@ } - if ( plane.normal.y > 0 ) { + if (plane.normal.y > 0) { min += plane.normal.y * this.min.y; max += plane.normal.y * this.max.y; @@ -5143,7 +5144,7 @@ } - if ( plane.normal.z > 0 ) { + if (plane.normal.z > 0) { min += plane.normal.z * this.min.z; max += plane.normal.z * this.max.z; @@ -5155,11 +5156,11 @@ } - return ( min <= - plane.constant && max >= - plane.constant ); + return (min <= - plane.constant && max >= - plane.constant); }, - intersectsTriangle: ( function () { + intersectsTriangle: (function () { // triangle centered vertices var v0 = new Vector3(); @@ -5178,21 +5179,21 @@ var triangleNormal = new Vector3(); - function satForAxes( axes ) { + function satForAxes(axes) { var i, j; - for ( i = 0, j = axes.length - 3; i <= j; i += 3 ) { + for (i = 0, j = axes.length - 3; i <= j; i += 3) { - testAxis.fromArray( axes, i ); + testAxis.fromArray(axes, i); // project the aabb onto the seperating axis - var r = extents.x * Math.abs( testAxis.x ) + extents.y * Math.abs( testAxis.y ) + extents.z * Math.abs( testAxis.z ); + var r = extents.x * Math.abs(testAxis.x) + extents.y * Math.abs(testAxis.y) + extents.z * Math.abs(testAxis.z); // project all 3 vertices of the triangle onto the seperating axis - var p0 = v0.dot( testAxis ); - var p1 = v1.dot( testAxis ); - var p2 = v2.dot( testAxis ); + var p0 = v0.dot(testAxis); + var p1 = v1.dot(testAxis); + var p2 = v2.dot(testAxis); // actual test, basically see if either of the most extreme of the triangle points intersects r - if ( Math.max( - Math.max( p0, p1, p2 ), Math.min( p0, p1, p2 ) ) > r ) { + if (Math.max(- Math.max(p0, p1, p2), Math.min(p0, p1, p2)) > r) { // points of the projected triangle are outside the projected half-length of the aabb // the axis is seperating and we can exit @@ -5206,27 +5207,27 @@ } - return function intersectsTriangle( triangle ) { + return function intersectsTriangle(triangle) { - if ( this.isEmpty() ) { + if (this.isEmpty()) { return false; } // compute box center and extents - this.getCenter( center ); - extents.subVectors( this.max, center ); + this.getCenter(center); + extents.subVectors(this.max, center); // translate triangle to aabb origin - v0.subVectors( triangle.a, center ); - v1.subVectors( triangle.b, center ); - v2.subVectors( triangle.c, center ); + v0.subVectors(triangle.a, center); + v1.subVectors(triangle.b, center); + v2.subVectors(triangle.c, center); // compute edge vectors for triangle - f0.subVectors( v1, v0 ); - f1.subVectors( v2, v1 ); - f2.subVectors( v0, v2 ); + f0.subVectors(v1, v0); + f1.subVectors(v2, v1); + f2.subVectors(v0, v2); // test against axes that are given by cross product combinations of the edges of the triangle and the edges of the aabb // make an axis testing of each of the 3 sides of the aabb against each of the 3 sides of the triangle = 9 axis of separation @@ -5236,15 +5237,15 @@ f0.z, 0, - f0.x, f1.z, 0, - f1.x, f2.z, 0, - f2.x, - f0.y, f0.x, 0, - f1.y, f1.x, 0, - f2.y, f2.x, 0 ]; - if ( ! satForAxes( axes ) ) { + if (!satForAxes(axes)) { return false; } // test 3 face normals from the aabb - axes = [ 1, 0, 0, 0, 1, 0, 0, 0, 1 ]; - if ( ! satForAxes( axes ) ) { + axes = [1, 0, 0, 0, 1, 0, 0, 0, 1]; + if (!satForAxes(axes)) { return false; @@ -5252,24 +5253,24 @@ // finally testing the face normal of the triangle // use already existing triangle edge vectors here - triangleNormal.crossVectors( f0, f1 ); - axes = [ triangleNormal.x, triangleNormal.y, triangleNormal.z ]; - return satForAxes( axes ); + triangleNormal.crossVectors(f0, f1); + axes = [triangleNormal.x, triangleNormal.y, triangleNormal.z]; + return satForAxes(axes); }; - } )(), + })(), - clampPoint: function ( point, target ) { + clampPoint: function (point, target) { - if ( target === undefined ) { + if (target === undefined) { - console.warn( 'THREE.Box3: .clampPoint() target is now required' ); + console.warn('THREE.Box3: .clampPoint() target is now required'); target = new Vector3(); } - return target.copy( point ).clamp( this.min, this.max ); + return target.copy(point).clamp(this.min, this.max); }, @@ -5277,10 +5278,10 @@ var v1 = new Vector3(); - return function distanceToPoint( point ) { + return function distanceToPoint(point) { - var clampedPoint = v1.copy( point ).clamp( this.min, this.max ); - return clampedPoint.sub( point ).length(); + var clampedPoint = v1.copy(point).clamp(this.min, this.max); + return clampedPoint.sub(point).length(); }; @@ -5290,18 +5291,18 @@ var v1 = new Vector3(); - return function getBoundingSphere( target ) { + return function getBoundingSphere(target) { - if ( target === undefined ) { + if (target === undefined) { - console.warn( 'THREE.Box3: .getBoundingSphere() target is now required' ); + console.warn('THREE.Box3: .getBoundingSphere() target is now required'); target = new Sphere(); } - this.getCenter( target.center ); + this.getCenter(target.center); - target.radius = this.getSize( v1 ).length() * 0.5; + target.radius = this.getSize(v1).length() * 0.5; return target; @@ -5309,22 +5310,22 @@ }(), - intersect: function ( box ) { + intersect: function (box) { - this.min.max( box.min ); - this.max.min( box.max ); + this.min.max(box.min); + this.max.min(box.max); // 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. - if ( this.isEmpty() ) this.makeEmpty(); + if (this.isEmpty()) this.makeEmpty(); return this; }, - union: function ( box ) { + union: function (box) { - this.min.min( box.min ); - this.max.max( box.max ); + this.min.min(box.min); + this.max.max(box.max); return this; @@ -5343,22 +5344,22 @@ new Vector3() ]; - return function applyMatrix4( matrix ) { + return function applyMatrix4(matrix) { // transform of empty box is an empty box. - if ( this.isEmpty() ) return this; + if (this.isEmpty()) return this; // NOTE: I am using a binary pattern to specify all 2^3 combinations below - points[ 0 ].set( this.min.x, this.min.y, this.min.z ).applyMatrix4( matrix ); // 000 - points[ 1 ].set( this.min.x, this.min.y, this.max.z ).applyMatrix4( matrix ); // 001 - points[ 2 ].set( this.min.x, this.max.y, this.min.z ).applyMatrix4( matrix ); // 010 - points[ 3 ].set( this.min.x, this.max.y, this.max.z ).applyMatrix4( matrix ); // 011 - points[ 4 ].set( this.max.x, this.min.y, this.min.z ).applyMatrix4( matrix ); // 100 - points[ 5 ].set( this.max.x, this.min.y, this.max.z ).applyMatrix4( matrix ); // 101 - points[ 6 ].set( this.max.x, this.max.y, this.min.z ).applyMatrix4( matrix ); // 110 - points[ 7 ].set( this.max.x, this.max.y, this.max.z ).applyMatrix4( matrix ); // 111 + points[0].set(this.min.x, this.min.y, this.min.z).applyMatrix4(matrix); // 000 + points[1].set(this.min.x, this.min.y, this.max.z).applyMatrix4(matrix); // 001 + points[2].set(this.min.x, this.max.y, this.min.z).applyMatrix4(matrix); // 010 + points[3].set(this.min.x, this.max.y, this.max.z).applyMatrix4(matrix); // 011 + points[4].set(this.max.x, this.min.y, this.min.z).applyMatrix4(matrix); // 100 + points[5].set(this.max.x, this.min.y, this.max.z).applyMatrix4(matrix); // 101 + points[6].set(this.max.x, this.max.y, this.min.z).applyMatrix4(matrix); // 110 + points[7].set(this.max.x, this.max.y, this.max.z).applyMatrix4(matrix); // 111 - this.setFromPoints( points ); + this.setFromPoints(points); return this; @@ -5366,40 +5367,40 @@ }(), - translate: function ( offset ) { + translate: function (offset) { - this.min.add( offset ); - this.max.add( offset ); + this.min.add(offset); + this.max.add(offset); return this; }, - equals: function ( box ) { + equals: function (box) { - return box.min.equals( this.min ) && box.max.equals( this.max ); + return box.min.equals(this.min) && box.max.equals(this.max); } - } ); + }); /** * @author bhouston / http://clara.io * @author mrdoob / http://mrdoob.com/ */ - function Sphere( center, radius ) { + function Sphere(center, radius) { - this.center = ( center !== undefined ) ? center : new Vector3(); - this.radius = ( radius !== undefined ) ? radius : 0; + this.center = (center !== undefined) ? center : new Vector3(); + this.radius = (radius !== undefined) ? radius : 0; } - Object.assign( Sphere.prototype, { + Object.assign(Sphere.prototype, { - set: function ( center, radius ) { + set: function (center, radius) { - this.center.copy( center ); + this.center.copy(center); this.radius = radius; return this; @@ -5410,29 +5411,29 @@ var box = new Box3(); - return function setFromPoints( points, optionalCenter ) { + return function setFromPoints(points, optionalCenter) { var center = this.center; - if ( optionalCenter !== undefined ) { + if (optionalCenter !== undefined) { - center.copy( optionalCenter ); + center.copy(optionalCenter); } else { - box.setFromPoints( points ).getCenter( center ); + box.setFromPoints(points).getCenter(center); } var maxRadiusSq = 0; - for ( var i = 0, il = points.length; i < il; i ++ ) { + for (var i = 0, il = points.length; i < il; i++) { - maxRadiusSq = Math.max( maxRadiusSq, center.distanceToSquared( points[ i ] ) ); + maxRadiusSq = Math.max(maxRadiusSq, center.distanceToSquared(points[i])); } - this.radius = Math.sqrt( maxRadiusSq ); + this.radius = Math.sqrt(maxRadiusSq); return this; @@ -5442,13 +5443,13 @@ clone: function () { - return new this.constructor().copy( this ); + return new this.constructor().copy(this); }, - copy: function ( sphere ) { + copy: function (sphere) { - this.center.copy( sphere.center ); + this.center.copy(sphere.center); this.radius = sphere.radius; return this; @@ -5457,59 +5458,59 @@ empty: function () { - return ( this.radius <= 0 ); + return (this.radius <= 0); }, - containsPoint: function ( point ) { + containsPoint: function (point) { - return ( point.distanceToSquared( this.center ) <= ( this.radius * this.radius ) ); + return (point.distanceToSquared(this.center) <= (this.radius * this.radius)); }, - distanceToPoint: function ( point ) { + distanceToPoint: function (point) { - return ( point.distanceTo( this.center ) - this.radius ); + return (point.distanceTo(this.center) - this.radius); }, - intersectsSphere: function ( sphere ) { + intersectsSphere: function (sphere) { var radiusSum = this.radius + sphere.radius; - return sphere.center.distanceToSquared( this.center ) <= ( radiusSum * radiusSum ); + return sphere.center.distanceToSquared(this.center) <= (radiusSum * radiusSum); }, - intersectsBox: function ( box ) { + intersectsBox: function (box) { - return box.intersectsSphere( this ); + return box.intersectsSphere(this); }, - intersectsPlane: function ( plane ) { + intersectsPlane: function (plane) { - return Math.abs( plane.distanceToPoint( this.center ) ) <= this.radius; + return Math.abs(plane.distanceToPoint(this.center)) <= this.radius; }, - clampPoint: function ( point, target ) { + clampPoint: function (point, target) { - var deltaLengthSq = this.center.distanceToSquared( point ); + var deltaLengthSq = this.center.distanceToSquared(point); - if ( target === undefined ) { + if (target === undefined) { - console.warn( 'THREE.Sphere: .clampPoint() target is now required' ); + console.warn('THREE.Sphere: .clampPoint() target is now required'); target = new Vector3(); } - target.copy( point ); + target.copy(point); - if ( deltaLengthSq > ( this.radius * this.radius ) ) { + if (deltaLengthSq > (this.radius * this.radius)) { - target.sub( this.center ).normalize(); - target.multiplyScalar( this.radius ).add( this.center ); + target.sub(this.center).normalize(); + target.multiplyScalar(this.radius).add(this.center); } @@ -5517,84 +5518,84 @@ }, - getBoundingBox: function ( target ) { + getBoundingBox: function (target) { - if ( target === undefined ) { + if (target === undefined) { - console.warn( 'THREE.Sphere: .getBoundingBox() target is now required' ); + console.warn('THREE.Sphere: .getBoundingBox() target is now required'); target = new Box3(); } - target.set( this.center, this.center ); - target.expandByScalar( this.radius ); + target.set(this.center, this.center); + target.expandByScalar(this.radius); return target; }, - applyMatrix4: function ( matrix ) { + applyMatrix4: function (matrix) { - this.center.applyMatrix4( matrix ); + this.center.applyMatrix4(matrix); this.radius = this.radius * matrix.getMaxScaleOnAxis(); return this; }, - translate: function ( offset ) { + translate: function (offset) { - this.center.add( offset ); + this.center.add(offset); return this; }, - equals: function ( sphere ) { + equals: function (sphere) { - return sphere.center.equals( this.center ) && ( sphere.radius === this.radius ); + return sphere.center.equals(this.center) && (sphere.radius === this.radius); } - } ); + }); /** * @author bhouston / http://clara.io */ - function Plane( normal, constant ) { + function Plane(normal, constant) { // normal is assumed to be normalized - this.normal = ( normal !== undefined ) ? normal : new Vector3( 1, 0, 0 ); - this.constant = ( constant !== undefined ) ? constant : 0; + this.normal = (normal !== undefined) ? normal : new Vector3(1, 0, 0); + this.constant = (constant !== undefined) ? constant : 0; } - Object.assign( Plane.prototype, { + Object.assign(Plane.prototype, { - set: function ( normal, constant ) { + set: function (normal, constant) { - this.normal.copy( normal ); + this.normal.copy(normal); this.constant = constant; return this; }, - setComponents: function ( x, y, z, w ) { + setComponents: function (x, y, z, w) { - this.normal.set( x, y, z ); + this.normal.set(x, y, z); this.constant = w; return this; }, - setFromNormalAndCoplanarPoint: function ( normal, point ) { + setFromNormalAndCoplanarPoint: function (normal, point) { - this.normal.copy( normal ); - this.constant = - point.dot( this.normal ); + this.normal.copy(normal); + this.constant = - point.dot(this.normal); return this; @@ -5605,13 +5606,13 @@ var v1 = new Vector3(); var v2 = new Vector3(); - return function setFromCoplanarPoints( a, b, c ) { + return function setFromCoplanarPoints(a, b, c) { - var normal = v1.subVectors( c, b ).cross( v2.subVectors( a, b ) ).normalize(); + var normal = v1.subVectors(c, b).cross(v2.subVectors(a, b)).normalize(); // Q: should an error be thrown if normal is zero (e.g. degenerate plane)? - this.setFromNormalAndCoplanarPoint( normal, a ); + this.setFromNormalAndCoplanarPoint(normal, a); return this; @@ -5621,13 +5622,13 @@ clone: function () { - return new this.constructor().copy( this ); + return new this.constructor().copy(this); }, - copy: function ( plane ) { + copy: function (plane) { - this.normal.copy( plane.normal ); + this.normal.copy(plane.normal); this.constant = plane.constant; return this; @@ -5639,7 +5640,7 @@ // Note: will lead to a divide by zero if the plane is invalid. var inverseNormalLength = 1.0 / this.normal.length(); - this.normal.multiplyScalar( inverseNormalLength ); + this.normal.multiplyScalar(inverseNormalLength); this.constant *= inverseNormalLength; return this; @@ -5655,28 +5656,28 @@ }, - distanceToPoint: function ( point ) { + distanceToPoint: function (point) { - return this.normal.dot( point ) + this.constant; + return this.normal.dot(point) + this.constant; }, - distanceToSphere: function ( sphere ) { + distanceToSphere: function (sphere) { - return this.distanceToPoint( sphere.center ) - sphere.radius; + return this.distanceToPoint(sphere.center) - sphere.radius; }, - projectPoint: function ( point, target ) { + projectPoint: function (point, target) { - if ( target === undefined ) { + if (target === undefined) { - console.warn( 'THREE.Plane: .projectPoint() target is now required' ); + console.warn('THREE.Plane: .projectPoint() target is now required'); target = new Vector3(); } - return target.copy( this.normal ).multiplyScalar( - this.distanceToPoint( point ) ).add( point ); + return target.copy(this.normal).multiplyScalar(- this.distanceToPoint(point)).add(point); }, @@ -5684,25 +5685,25 @@ var v1 = new Vector3(); - return function intersectLine( line, target ) { + return function intersectLine(line, target) { - if ( target === undefined ) { + if (target === undefined) { - console.warn( 'THREE.Plane: .intersectLine() target is now required' ); + console.warn('THREE.Plane: .intersectLine() target is now required'); target = new Vector3(); } - var direction = line.delta( v1 ); + var direction = line.delta(v1); - var denominator = this.normal.dot( direction ); + var denominator = this.normal.dot(direction); - if ( denominator === 0 ) { + if (denominator === 0) { // line is coplanar, return origin - if ( this.distanceToPoint( line.start ) === 0 ) { + if (this.distanceToPoint(line.start) === 0) { - return target.copy( line.start ); + return target.copy(line.start); } @@ -5711,53 +5712,53 @@ } - var t = - ( line.start.dot( this.normal ) + this.constant ) / denominator; + var t = - (line.start.dot(this.normal) + this.constant) / denominator; - if ( t < 0 || t > 1 ) { + if (t < 0 || t > 1) { return undefined; } - return target.copy( direction ).multiplyScalar( t ).add( line.start ); + return target.copy(direction).multiplyScalar(t).add(line.start); }; }(), - intersectsLine: function ( line ) { + intersectsLine: function (line) { // Note: this tests if a line intersects the plane, not whether it (or its end-points) are coplanar with it. - var startSign = this.distanceToPoint( line.start ); - var endSign = this.distanceToPoint( line.end ); + var startSign = this.distanceToPoint(line.start); + var endSign = this.distanceToPoint(line.end); - return ( startSign < 0 && endSign > 0 ) || ( endSign < 0 && startSign > 0 ); + return (startSign < 0 && endSign > 0) || (endSign < 0 && startSign > 0); }, - intersectsBox: function ( box ) { + intersectsBox: function (box) { - return box.intersectsPlane( this ); + return box.intersectsPlane(this); }, - intersectsSphere: function ( sphere ) { + intersectsSphere: function (sphere) { - return sphere.intersectsPlane( this ); + return sphere.intersectsPlane(this); }, - coplanarPoint: function ( target ) { + coplanarPoint: function (target) { - if ( target === undefined ) { + if (target === undefined) { - console.warn( 'THREE.Plane: .coplanarPoint() target is now required' ); + console.warn('THREE.Plane: .coplanarPoint() target is now required'); target = new Vector3(); } - return target.copy( this.normal ).multiplyScalar( - this.constant ); + return target.copy(this.normal).multiplyScalar(- this.constant); }, @@ -5766,15 +5767,15 @@ var v1 = new Vector3(); var m1 = new Matrix3(); - return function applyMatrix4( matrix, optionalNormalMatrix ) { + return function applyMatrix4(matrix, optionalNormalMatrix) { - var normalMatrix = optionalNormalMatrix || m1.getNormalMatrix( matrix ); + var normalMatrix = optionalNormalMatrix || m1.getNormalMatrix(matrix); - var referencePoint = this.coplanarPoint( v1 ).applyMatrix4( matrix ); + var referencePoint = this.coplanarPoint(v1).applyMatrix4(matrix); - var normal = this.normal.applyMatrix3( normalMatrix ).normalize(); + var normal = this.normal.applyMatrix3(normalMatrix).normalize(); - this.constant = - referencePoint.dot( normal ); + this.constant = - referencePoint.dot(normal); return this; @@ -5782,21 +5783,21 @@ }(), - translate: function ( offset ) { + translate: function (offset) { - this.constant -= offset.dot( this.normal ); + this.constant -= offset.dot(this.normal); return this; }, - equals: function ( plane ) { + equals: function (plane) { - return plane.normal.equals( this.normal ) && ( plane.constant === this.constant ); + return plane.normal.equals(this.normal) && (plane.constant === this.constant); } - } ); + }); /** * @author mrdoob / http://mrdoob.com/ @@ -5804,33 +5805,33 @@ * @author bhouston / http://clara.io */ - function Frustum( p0, p1, p2, p3, p4, p5 ) { + function Frustum(p0, p1, p2, p3, p4, p5) { this.planes = [ - ( p0 !== undefined ) ? p0 : new Plane(), - ( p1 !== undefined ) ? p1 : new Plane(), - ( p2 !== undefined ) ? p2 : new Plane(), - ( p3 !== undefined ) ? p3 : new Plane(), - ( p4 !== undefined ) ? p4 : new Plane(), - ( p5 !== undefined ) ? p5 : new Plane() + (p0 !== undefined) ? p0 : new Plane(), + (p1 !== undefined) ? p1 : new Plane(), + (p2 !== undefined) ? p2 : new Plane(), + (p3 !== undefined) ? p3 : new Plane(), + (p4 !== undefined) ? p4 : new Plane(), + (p5 !== undefined) ? p5 : new Plane() ]; } - Object.assign( Frustum.prototype, { + Object.assign(Frustum.prototype, { - set: function ( p0, p1, p2, p3, p4, p5 ) { + set: function (p0, p1, p2, p3, p4, p5) { var planes = this.planes; - planes[ 0 ].copy( p0 ); - planes[ 1 ].copy( p1 ); - planes[ 2 ].copy( p2 ); - planes[ 3 ].copy( p3 ); - planes[ 4 ].copy( p4 ); - planes[ 5 ].copy( p5 ); + planes[0].copy(p0); + planes[1].copy(p1); + planes[2].copy(p2); + planes[3].copy(p3); + planes[4].copy(p4); + planes[5].copy(p5); return this; @@ -5838,17 +5839,17 @@ clone: function () { - return new this.constructor().copy( this ); + return new this.constructor().copy(this); }, - copy: function ( frustum ) { + copy: function (frustum) { var planes = this.planes; - for ( var i = 0; i < 6; i ++ ) { + for (var i = 0; i < 6; i++) { - planes[ i ].copy( frustum.planes[ i ] ); + planes[i].copy(frustum.planes[i]); } @@ -5856,21 +5857,21 @@ }, - setFromMatrix: function ( m ) { + setFromMatrix: function (m) { var planes = this.planes; var me = m.elements; - var me0 = me[ 0 ], me1 = me[ 1 ], me2 = me[ 2 ], me3 = me[ 3 ]; - var me4 = me[ 4 ], me5 = me[ 5 ], me6 = me[ 6 ], me7 = me[ 7 ]; - var me8 = me[ 8 ], me9 = me[ 9 ], me10 = me[ 10 ], me11 = me[ 11 ]; - var me12 = me[ 12 ], me13 = me[ 13 ], me14 = me[ 14 ], me15 = me[ 15 ]; + var me0 = me[0], me1 = me[1], me2 = me[2], me3 = me[3]; + var me4 = me[4], me5 = me[5], me6 = me[6], me7 = me[7]; + var me8 = me[8], me9 = me[9], me10 = me[10], me11 = me[11]; + var me12 = me[12], me13 = me[13], me14 = me[14], me15 = me[15]; - planes[ 0 ].setComponents( me3 - me0, me7 - me4, me11 - me8, me15 - me12 ).normalize(); - planes[ 1 ].setComponents( me3 + me0, me7 + me4, me11 + me8, me15 + me12 ).normalize(); - planes[ 2 ].setComponents( me3 + me1, me7 + me5, me11 + me9, me15 + me13 ).normalize(); - planes[ 3 ].setComponents( me3 - me1, me7 - me5, me11 - me9, me15 - me13 ).normalize(); - planes[ 4 ].setComponents( me3 - me2, me7 - me6, me11 - me10, me15 - me14 ).normalize(); - planes[ 5 ].setComponents( me3 + me2, me7 + me6, me11 + me10, me15 + me14 ).normalize(); + planes[0].setComponents(me3 - me0, me7 - me4, me11 - me8, me15 - me12).normalize(); + planes[1].setComponents(me3 + me0, me7 + me4, me11 + me8, me15 + me12).normalize(); + planes[2].setComponents(me3 + me1, me7 + me5, me11 + me9, me15 + me13).normalize(); + planes[3].setComponents(me3 - me1, me7 - me5, me11 - me9, me15 - me13).normalize(); + planes[4].setComponents(me3 - me2, me7 - me6, me11 - me10, me15 - me14).normalize(); + planes[5].setComponents(me3 + me2, me7 + me6, me11 + me10, me15 + me14).normalize(); return this; @@ -5880,17 +5881,17 @@ var sphere = new Sphere(); - return function intersectsObject( object ) { + return function intersectsObject(object) { var geometry = object.geometry; - if ( geometry.boundingSphere === null ) + if (geometry.boundingSphere === null) geometry.computeBoundingSphere(); - sphere.copy( geometry.boundingSphere ) - .applyMatrix4( object.matrixWorld ); + sphere.copy(geometry.boundingSphere) + .applyMatrix4(object.matrixWorld); - return this.intersectsSphere( sphere ); + return this.intersectsSphere(sphere); }; @@ -5900,29 +5901,29 @@ var sphere = new Sphere(); - return function intersectsSprite( sprite ) { + return function intersectsSprite(sprite) { - sphere.center.set( 0, 0, 0 ); + sphere.center.set(0, 0, 0); sphere.radius = 0.7071067811865476; - sphere.applyMatrix4( sprite.matrixWorld ); + sphere.applyMatrix4(sprite.matrixWorld); - return this.intersectsSphere( sphere ); + return this.intersectsSphere(sphere); }; }(), - intersectsSphere: function ( sphere ) { + intersectsSphere: function (sphere) { var planes = this.planes; var center = sphere.center; var negRadius = - sphere.radius; - for ( var i = 0; i < 6; i ++ ) { + for (var i = 0; i < 6; i++) { - var distance = planes[ i ].distanceToPoint( center ); + var distance = planes[i].distanceToPoint(center); - if ( distance < negRadius ) { + if (distance < negRadius) { return false; @@ -5938,13 +5939,13 @@ var p = new Vector3(); - return function intersectsBox( box ) { + return function intersectsBox(box) { var planes = this.planes; - for ( var i = 0; i < 6; i ++ ) { + for (var i = 0; i < 6; i++) { - var plane = planes[ i ]; + var plane = planes[i]; // corner at max distance @@ -5952,7 +5953,7 @@ p.y = plane.normal.y > 0 ? box.max.y : box.min.y; p.z = plane.normal.z > 0 ? box.max.z : box.min.z; - if ( plane.distanceToPoint( p ) < 0 ) { + if (plane.distanceToPoint(p) < 0) { return false; @@ -5966,13 +5967,13 @@ }(), - containsPoint: function ( point ) { + containsPoint: function (point) { var planes = this.planes; - for ( var i = 0; i < 6; i ++ ) { + for (var i = 0; i < 6; i++) { - if ( planes[ i ].distanceToPoint( point ) < 0 ) { + if (planes[i].distanceToPoint(point) < 0) { return false; @@ -5984,7 +5985,7 @@ } - } ); + }); var alphamap_fragment = "#ifdef USE_ALPHAMAP\n\tdiffuseColor.a *= texture2D( alphaMap, vUv ).g;\n#endif\n"; @@ -6353,17 +6354,17 @@ var UniformsUtils = { - merge: function ( uniforms ) { + merge: function (uniforms) { var merged = {}; - for ( var u = 0; u < uniforms.length; u ++ ) { + for (var u = 0; u < uniforms.length; u++) { - var tmp = this.clone( uniforms[ u ] ); + var tmp = this.clone(uniforms[u]); - for ( var p in tmp ) { + for (var p in tmp) { - merged[ p ] = tmp[ p ]; + merged[p] = tmp[p]; } @@ -6373,32 +6374,32 @@ }, - clone: function ( uniforms_src ) { + clone: function (uniforms_src) { var uniforms_dst = {}; - for ( var u in uniforms_src ) { + for (var u in uniforms_src) { - uniforms_dst[ u ] = {}; + uniforms_dst[u] = {}; - for ( var p in uniforms_src[ u ] ) { + for (var p in uniforms_src[u]) { - var parameter_src = uniforms_src[ u ][ p ]; + var parameter_src = uniforms_src[u][p]; - if ( parameter_src && ( parameter_src.isColor || + if (parameter_src && (parameter_src.isColor || parameter_src.isMatrix3 || parameter_src.isMatrix4 || parameter_src.isVector2 || parameter_src.isVector3 || parameter_src.isVector4 || - parameter_src.isTexture ) ) { + parameter_src.isTexture)) { - uniforms_dst[ u ][ p ] = parameter_src.clone(); + uniforms_dst[u][p] = parameter_src.clone(); - } else if ( Array.isArray( parameter_src ) ) { + } else if (Array.isArray(parameter_src)) { - uniforms_dst[ u ][ p ] = parameter_src.slice(); + uniforms_dst[u][p] = parameter_src.slice(); } else { - uniforms_dst[ u ][ p ] = parameter_src; + uniforms_dst[u][p] = parameter_src; } @@ -6416,7 +6417,8 @@ * @author mrdoob / http://mrdoob.com/ */ - var ColorKeywords = { 'aliceblue': 0xF0F8FF, 'antiquewhite': 0xFAEBD7, 'aqua': 0x00FFFF, 'aquamarine': 0x7FFFD4, 'azure': 0xF0FFFF, + var ColorKeywords = { + 'aliceblue': 0xF0F8FF, 'antiquewhite': 0xFAEBD7, 'aqua': 0x00FFFF, 'aquamarine': 0x7FFFD4, 'azure': 0xF0FFFF, 'beige': 0xF5F5DC, 'bisque': 0xFFE4C4, 'black': 0x000000, 'blanchedalmond': 0xFFEBCD, 'blue': 0x0000FF, 'blueviolet': 0x8A2BE2, 'brown': 0xA52A2A, 'burlywood': 0xDEB887, 'cadetblue': 0x5F9EA0, 'chartreuse': 0x7FFF00, 'chocolate': 0xD2691E, 'coral': 0xFF7F50, 'cornflowerblue': 0x6495ED, 'cornsilk': 0xFFF8DC, 'crimson': 0xDC143C, 'cyan': 0x00FFFF, 'darkblue': 0x00008B, 'darkcyan': 0x008B8B, @@ -6439,40 +6441,41 @@ 'royalblue': 0x4169E1, 'saddlebrown': 0x8B4513, 'salmon': 0xFA8072, 'sandybrown': 0xF4A460, 'seagreen': 0x2E8B57, 'seashell': 0xFFF5EE, 'sienna': 0xA0522D, 'silver': 0xC0C0C0, 'skyblue': 0x87CEEB, 'slateblue': 0x6A5ACD, 'slategray': 0x708090, 'slategrey': 0x708090, 'snow': 0xFFFAFA, 'springgreen': 0x00FF7F, 'steelblue': 0x4682B4, 'tan': 0xD2B48C, 'teal': 0x008080, 'thistle': 0xD8BFD8, 'tomato': 0xFF6347, 'turquoise': 0x40E0D0, - 'violet': 0xEE82EE, 'wheat': 0xF5DEB3, 'white': 0xFFFFFF, 'whitesmoke': 0xF5F5F5, 'yellow': 0xFFFF00, 'yellowgreen': 0x9ACD32 }; + 'violet': 0xEE82EE, 'wheat': 0xF5DEB3, 'white': 0xFFFFFF, 'whitesmoke': 0xF5F5F5, 'yellow': 0xFFFF00, 'yellowgreen': 0x9ACD32 + }; - function Color( r, g, b ) { + function Color(r, g, b) { - if ( g === undefined && b === undefined ) { + if (g === undefined && b === undefined) { // r is THREE.Color, hex or string - return this.set( r ); + return this.set(r); } - return this.setRGB( r, g, b ); + return this.setRGB(r, g, b); } - Object.assign( Color.prototype, { + Object.assign(Color.prototype, { isColor: true, r: 1, g: 1, b: 1, - set: function ( value ) { + set: function (value) { - if ( value && value.isColor ) { + if (value && value.isColor) { - this.copy( value ); + this.copy(value); - } else if ( typeof value === 'number' ) { + } else if (typeof value === 'number') { - this.setHex( value ); + this.setHex(value); - } else if ( typeof value === 'string' ) { + } else if (typeof value === 'string') { - this.setStyle( value ); + this.setStyle(value); } @@ -6480,7 +6483,7 @@ }, - setScalar: function ( scalar ) { + setScalar: function (scalar) { this.r = scalar; this.g = scalar; @@ -6490,19 +6493,19 @@ }, - setHex: function ( hex ) { + setHex: function (hex) { - hex = Math.floor( hex ); + hex = Math.floor(hex); - this.r = ( hex >> 16 & 255 ) / 255; - this.g = ( hex >> 8 & 255 ) / 255; - this.b = ( hex & 255 ) / 255; + this.r = (hex >> 16 & 255) / 255; + this.g = (hex >> 8 & 255) / 255; + this.b = (hex & 255) / 255; return this; }, - setRGB: function ( r, g, b ) { + setRGB: function (r, g, b) { this.r = r; this.g = g; @@ -6514,36 +6517,36 @@ setHSL: function () { - function hue2rgb( p, q, t ) { + function hue2rgb(p, q, t) { - if ( t < 0 ) t += 1; - if ( t > 1 ) t -= 1; - if ( t < 1 / 6 ) return p + ( q - p ) * 6 * t; - if ( t < 1 / 2 ) return q; - if ( t < 2 / 3 ) return p + ( q - p ) * 6 * ( 2 / 3 - t ); + if (t < 0) t += 1; + if (t > 1) t -= 1; + if (t < 1 / 6) return p + (q - p) * 6 * t; + if (t < 1 / 2) return q; + if (t < 2 / 3) return p + (q - p) * 6 * (2 / 3 - t); return p; } - return function setHSL( h, s, l ) { + return function setHSL(h, s, l) { // h,s,l ranges are in 0.0 - 1.0 - h = _Math.euclideanModulo( h, 1 ); - s = _Math.clamp( s, 0, 1 ); - l = _Math.clamp( l, 0, 1 ); + h = _Math.euclideanModulo(h, 1); + s = _Math.clamp(s, 0, 1); + l = _Math.clamp(l, 0, 1); - if ( s === 0 ) { + if (s === 0) { this.r = this.g = this.b = l; } else { - var p = l <= 0.5 ? l * ( 1 + s ) : l + s - ( l * s ); - var q = ( 2 * l ) - p; + var p = l <= 0.5 ? l * (1 + s) : l + s - (l * s); + var q = (2 * l) - p; - this.r = hue2rgb( q, p, h + 1 / 3 ); - this.g = hue2rgb( q, p, h ); - this.b = hue2rgb( q, p, h - 1 / 3 ); + this.r = hue2rgb(q, p, h + 1 / 3); + this.g = hue2rgb(q, p, h); + this.b = hue2rgb(q, p, h - 1 / 3); } @@ -6553,15 +6556,15 @@ }(), - setStyle: function ( style ) { + setStyle: function (style) { - function handleAlpha( string ) { + function handleAlpha(string) { - if ( string === undefined ) return; + if (string === undefined) return; - if ( parseFloat( string ) < 1 ) { + if (parseFloat(string) < 1) { - console.warn( 'THREE.Color: Alpha component of ' + style + ' will be ignored.' ); + console.warn('THREE.Color: Alpha component of ' + style + ' will be ignored.'); } @@ -6570,40 +6573,40 @@ var m; - if ( m = /^((?:rgb|hsl)a?)\(\s*([^\)]*)\)/.exec( style ) ) { + if (m = /^((?:rgb|hsl)a?)\(\s*([^\)]*)\)/.exec(style)) { // rgb / hsl var color; - var name = m[ 1 ]; - var components = m[ 2 ]; + var name = m[1]; + var components = m[2]; - switch ( name ) { + switch (name) { case 'rgb': case 'rgba': - if ( color = /^(\d+)\s*,\s*(\d+)\s*,\s*(\d+)\s*(,\s*([0-9]*\.?[0-9]+)\s*)?$/.exec( components ) ) { + if (color = /^(\d+)\s*,\s*(\d+)\s*,\s*(\d+)\s*(,\s*([0-9]*\.?[0-9]+)\s*)?$/.exec(components)) { // rgb(255,0,0) rgba(255,0,0,0.5) - this.r = Math.min( 255, parseInt( color[ 1 ], 10 ) ) / 255; - this.g = Math.min( 255, parseInt( color[ 2 ], 10 ) ) / 255; - this.b = Math.min( 255, parseInt( color[ 3 ], 10 ) ) / 255; + this.r = Math.min(255, parseInt(color[1], 10)) / 255; + this.g = Math.min(255, parseInt(color[2], 10)) / 255; + this.b = Math.min(255, parseInt(color[3], 10)) / 255; - handleAlpha( color[ 5 ] ); + handleAlpha(color[5]); return this; } - if ( color = /^(\d+)\%\s*,\s*(\d+)\%\s*,\s*(\d+)\%\s*(,\s*([0-9]*\.?[0-9]+)\s*)?$/.exec( components ) ) { + if (color = /^(\d+)\%\s*,\s*(\d+)\%\s*,\s*(\d+)\%\s*(,\s*([0-9]*\.?[0-9]+)\s*)?$/.exec(components)) { // rgb(100%,0%,0%) rgba(100%,0%,0%,0.5) - this.r = Math.min( 100, parseInt( color[ 1 ], 10 ) ) / 100; - this.g = Math.min( 100, parseInt( color[ 2 ], 10 ) ) / 100; - this.b = Math.min( 100, parseInt( color[ 3 ], 10 ) ) / 100; + this.r = Math.min(100, parseInt(color[1], 10)) / 100; + this.g = Math.min(100, parseInt(color[2], 10)) / 100; + this.b = Math.min(100, parseInt(color[3], 10)) / 100; - handleAlpha( color[ 5 ] ); + handleAlpha(color[5]); return this; @@ -6614,16 +6617,16 @@ case 'hsl': case 'hsla': - if ( color = /^([0-9]*\.?[0-9]+)\s*,\s*(\d+)\%\s*,\s*(\d+)\%\s*(,\s*([0-9]*\.?[0-9]+)\s*)?$/.exec( components ) ) { + if (color = /^([0-9]*\.?[0-9]+)\s*,\s*(\d+)\%\s*,\s*(\d+)\%\s*(,\s*([0-9]*\.?[0-9]+)\s*)?$/.exec(components)) { // hsl(120,50%,50%) hsla(120,50%,50%,0.5) - var h = parseFloat( color[ 1 ] ) / 360; - var s = parseInt( color[ 2 ], 10 ) / 100; - var l = parseInt( color[ 3 ], 10 ) / 100; + var h = parseFloat(color[1]) / 360; + var s = parseInt(color[2], 10) / 100; + var l = parseInt(color[3], 10) / 100; - handleAlpha( color[ 5 ] ); + handleAlpha(color[5]); - return this.setHSL( h, s, l ); + return this.setHSL(h, s, l); } @@ -6631,28 +6634,28 @@ } - } else if ( m = /^\#([A-Fa-f0-9]+)$/.exec( style ) ) { + } else if (m = /^\#([A-Fa-f0-9]+)$/.exec(style)) { // hex color - var hex = m[ 1 ]; + var hex = m[1]; var size = hex.length; - if ( size === 3 ) { + if (size === 3) { // #ff0 - this.r = parseInt( hex.charAt( 0 ) + hex.charAt( 0 ), 16 ) / 255; - this.g = parseInt( hex.charAt( 1 ) + hex.charAt( 1 ), 16 ) / 255; - this.b = parseInt( hex.charAt( 2 ) + hex.charAt( 2 ), 16 ) / 255; + this.r = parseInt(hex.charAt(0) + hex.charAt(0), 16) / 255; + this.g = parseInt(hex.charAt(1) + hex.charAt(1), 16) / 255; + this.b = parseInt(hex.charAt(2) + hex.charAt(2), 16) / 255; return this; - } else if ( size === 6 ) { + } else if (size === 6) { // #ff0000 - this.r = parseInt( hex.charAt( 0 ) + hex.charAt( 1 ), 16 ) / 255; - this.g = parseInt( hex.charAt( 2 ) + hex.charAt( 3 ), 16 ) / 255; - this.b = parseInt( hex.charAt( 4 ) + hex.charAt( 5 ), 16 ) / 255; + this.r = parseInt(hex.charAt(0) + hex.charAt(1), 16) / 255; + this.g = parseInt(hex.charAt(2) + hex.charAt(3), 16) / 255; + this.b = parseInt(hex.charAt(4) + hex.charAt(5), 16) / 255; return this; @@ -6660,20 +6663,20 @@ } - if ( style && style.length > 0 ) { + if (style && style.length > 0) { // color keywords - var hex = ColorKeywords[ style ]; + var hex = ColorKeywords[style]; - if ( hex !== undefined ) { + if (hex !== undefined) { // red - this.setHex( hex ); + this.setHex(hex); } else { // unknown color - console.warn( 'THREE.Color: Unknown color ' + style ); + console.warn('THREE.Color: Unknown color ' + style); } @@ -6685,11 +6688,11 @@ clone: function () { - return new this.constructor( this.r, this.g, this.b ); + return new this.constructor(this.r, this.g, this.b); }, - copy: function ( color ) { + copy: function (color) { this.r = color.r; this.g = color.g; @@ -6699,43 +6702,43 @@ }, - copyGammaToLinear: function ( color, gammaFactor ) { + copyGammaToLinear: function (color, gammaFactor) { - if ( gammaFactor === undefined ) gammaFactor = 2.0; + if (gammaFactor === undefined) gammaFactor = 2.0; - this.r = Math.pow( color.r, gammaFactor ); - this.g = Math.pow( color.g, gammaFactor ); - this.b = Math.pow( color.b, gammaFactor ); + this.r = Math.pow(color.r, gammaFactor); + this.g = Math.pow(color.g, gammaFactor); + this.b = Math.pow(color.b, gammaFactor); return this; }, - copyLinearToGamma: function ( color, gammaFactor ) { + copyLinearToGamma: function (color, gammaFactor) { - if ( gammaFactor === undefined ) gammaFactor = 2.0; + if (gammaFactor === undefined) gammaFactor = 2.0; - var safeInverse = ( gammaFactor > 0 ) ? ( 1.0 / gammaFactor ) : 1.0; + var safeInverse = (gammaFactor > 0) ? (1.0 / gammaFactor) : 1.0; - this.r = Math.pow( color.r, safeInverse ); - this.g = Math.pow( color.g, safeInverse ); - this.b = Math.pow( color.b, safeInverse ); + this.r = Math.pow(color.r, safeInverse); + this.g = Math.pow(color.g, safeInverse); + this.b = Math.pow(color.b, safeInverse); return this; }, - convertGammaToLinear: function ( gammaFactor ) { + convertGammaToLinear: function (gammaFactor) { - this.copyGammaToLinear( this, gammaFactor ); + this.copyGammaToLinear(this, gammaFactor); return this; }, - convertLinearToGamma: function ( gammaFactor ) { + convertLinearToGamma: function (gammaFactor) { - this.copyLinearToGamma( this, gammaFactor ); + this.copyLinearToGamma(this, gammaFactor); return this; @@ -6743,17 +6746,17 @@ copySRGBToLinear: function () { - function SRGBToLinear( c ) { + function SRGBToLinear(c) { - return ( c < 0.04045 ) ? c * 0.0773993808 : Math.pow( c * 0.9478672986 + 0.0521327014, 2.4 ); + return (c < 0.04045) ? c * 0.0773993808 : Math.pow(c * 0.9478672986 + 0.0521327014, 2.4); } - return function copySRGBToLinear( color ) { + return function copySRGBToLinear(color) { - this.r = SRGBToLinear( color.r ); - this.g = SRGBToLinear( color.g ); - this.b = SRGBToLinear( color.b ); + this.r = SRGBToLinear(color.r); + this.g = SRGBToLinear(color.g); + this.b = SRGBToLinear(color.b); return this; @@ -6763,17 +6766,17 @@ copyLinearToSRGB: function () { - function LinearToSRGB( c ) { + function LinearToSRGB(c) { - return ( c < 0.0031308 ) ? c * 12.92 : 1.055 * ( Math.pow( c, 0.41666 ) ) - 0.055; + return (c < 0.0031308) ? c * 12.92 : 1.055 * (Math.pow(c, 0.41666)) - 0.055; } - return function copyLinearToSRGB( color ) { + return function copyLinearToSRGB(color) { - this.r = LinearToSRGB( color.r ); - this.g = LinearToSRGB( color.g ); - this.b = LinearToSRGB( color.b ); + this.r = LinearToSRGB(color.r); + this.g = LinearToSRGB(color.g); + this.b = LinearToSRGB(color.b); return this; @@ -6783,7 +6786,7 @@ convertSRGBToLinear: function () { - this.copySRGBToLinear( this ); + this.copySRGBToLinear(this); return this; @@ -6791,7 +6794,7 @@ convertLinearToSRGB: function () { - this.copyLinearToSRGB( this ); + this.copyLinearToSRGB(this); return this; @@ -6799,36 +6802,36 @@ getHex: function () { - return ( this.r * 255 ) << 16 ^ ( this.g * 255 ) << 8 ^ ( this.b * 255 ) << 0; + return (this.r * 255) << 16 ^ (this.g * 255) << 8 ^ (this.b * 255) << 0; }, getHexString: function () { - return ( '000000' + this.getHex().toString( 16 ) ).slice( - 6 ); + return ('000000' + this.getHex().toString(16)).slice(- 6); }, - getHSL: function ( target ) { + getHSL: function (target) { // h,s,l ranges are in 0.0 - 1.0 - if ( target === undefined ) { + if (target === undefined) { - console.warn( 'THREE.Color: .getHSL() target is now required' ); + console.warn('THREE.Color: .getHSL() target is now required'); target = { h: 0, s: 0, l: 0 }; } var r = this.r, g = this.g, b = this.b; - var max = Math.max( r, g, b ); - var min = Math.min( r, g, b ); + var max = Math.max(r, g, b); + var min = Math.min(r, g, b); var hue, saturation; - var lightness = ( min + max ) / 2.0; + var lightness = (min + max) / 2.0; - if ( min === max ) { + if (min === max) { hue = 0; saturation = 0; @@ -6837,13 +6840,13 @@ var delta = max - min; - saturation = lightness <= 0.5 ? delta / ( max + min ) : delta / ( 2 - max - min ); + saturation = lightness <= 0.5 ? delta / (max + min) : delta / (2 - max - min); - switch ( max ) { + switch (max) { - case r: hue = ( g - b ) / delta + ( g < b ? 6 : 0 ); break; - case g: hue = ( b - r ) / delta + 2; break; - case b: hue = ( r - g ) / delta + 4; break; + case r: hue = (g - b) / delta + (g < b ? 6 : 0); break; + case g: hue = (b - r) / delta + 2; break; + case b: hue = (r - g) / delta + 4; break; } @@ -6861,7 +6864,7 @@ getStyle: function () { - return 'rgb(' + ( ( this.r * 255 ) | 0 ) + ',' + ( ( this.g * 255 ) | 0 ) + ',' + ( ( this.b * 255 ) | 0 ) + ')'; + return 'rgb(' + ((this.r * 255) | 0) + ',' + ((this.g * 255) | 0) + ',' + ((this.b * 255) | 0) + ')'; }, @@ -6869,13 +6872,13 @@ var hsl = {}; - return function ( h, s, l ) { + return function (h, s, l) { - this.getHSL( hsl ); + this.getHSL(hsl); hsl.h += h; hsl.s += s; hsl.l += l; - this.setHSL( hsl.h, hsl.s, hsl.l ); + this.setHSL(hsl.h, hsl.s, hsl.l); return this; @@ -6883,7 +6886,7 @@ }(), - add: function ( color ) { + add: function (color) { this.r += color.r; this.g += color.g; @@ -6893,7 +6896,7 @@ }, - addColors: function ( color1, color2 ) { + addColors: function (color1, color2) { this.r = color1.r + color2.r; this.g = color1.g + color2.g; @@ -6903,7 +6906,7 @@ }, - addScalar: function ( s ) { + addScalar: function (s) { this.r += s; this.g += s; @@ -6913,17 +6916,17 @@ }, - sub: function ( color ) { + sub: function (color) { - this.r = Math.max( 0, this.r - color.r ); - this.g = Math.max( 0, this.g - color.g ); - this.b = Math.max( 0, this.b - color.b ); + this.r = Math.max(0, this.r - color.r); + this.g = Math.max(0, this.g - color.g); + this.b = Math.max(0, this.b - color.b); return this; }, - multiply: function ( color ) { + multiply: function (color) { this.r *= color.r; this.g *= color.g; @@ -6933,7 +6936,7 @@ }, - multiplyScalar: function ( s ) { + multiplyScalar: function (s) { this.r *= s; this.g *= s; @@ -6943,11 +6946,11 @@ }, - lerp: function ( color, alpha ) { + lerp: function (color, alpha) { - this.r += ( color.r - this.r ) * alpha; - this.g += ( color.g - this.g ) * alpha; - this.b += ( color.b - this.b ) * alpha; + this.r += (color.r - this.r) * alpha; + this.g += (color.g - this.g) * alpha; + this.b += (color.b - this.b) * alpha; return this; @@ -6958,16 +6961,16 @@ var hslA = { h: 0, s: 0, l: 0 }; var hslB = { h: 0, s: 0, l: 0 }; - return function lerpHSL( color, alpha ) { + return function lerpHSL(color, alpha) { - this.getHSL( hslA ); - color.getHSL( hslB ); + this.getHSL(hslA); + color.getHSL(hslB); - var h = _Math.lerp( hslA.h, hslB.h, alpha ); - var s = _Math.lerp( hslA.s, hslB.s, alpha ); - var l = _Math.lerp( hslA.l, hslB.l, alpha ); + var h = _Math.lerp(hslA.h, hslB.h, alpha); + var s = _Math.lerp(hslA.s, hslB.s, alpha); + var l = _Math.lerp(hslA.l, hslB.l, alpha); - this.setHSL( h, s, l ); + this.setHSL(h, s, l); return this; @@ -6975,32 +6978,32 @@ }(), - equals: function ( c ) { + equals: function (c) { - return ( c.r === this.r ) && ( c.g === this.g ) && ( c.b === this.b ); + return (c.r === this.r) && (c.g === this.g) && (c.b === this.b); }, - fromArray: function ( array, offset ) { + fromArray: function (array, offset) { - if ( offset === undefined ) offset = 0; + if (offset === undefined) offset = 0; - this.r = array[ offset ]; - this.g = array[ offset + 1 ]; - this.b = array[ offset + 2 ]; + this.r = array[offset]; + this.g = array[offset + 1]; + this.b = array[offset + 2]; return this; }, - toArray: function ( array, offset ) { + toArray: function (array, offset) { - if ( array === undefined ) array = []; - if ( offset === undefined ) offset = 0; + if (array === undefined) array = []; + if (offset === undefined) offset = 0; - array[ offset ] = this.r; - array[ offset + 1 ] = this.g; - array[ offset + 2 ] = this.b; + array[offset] = this.r; + array[offset + 1] = this.g; + array[offset + 2] = this.b; return array; @@ -7012,7 +7015,7 @@ } - } ); + }); /** * Uniforms library for shared webgl shaders @@ -7022,7 +7025,7 @@ common: { - diffuse: { value: new Color( 0xeeeeee ) }, + diffuse: { value: new Color(0xeeeeee) }, opacity: { value: 1.0 }, map: { value: null }, @@ -7078,7 +7081,7 @@ normalmap: { normalMap: { value: null }, - normalScale: { value: new Vector2( 1, 1 ) } + normalScale: { value: new Vector2(1, 1) } }, @@ -7113,7 +7116,7 @@ fogDensity: { value: 0.00025 }, fogNear: { value: 1 }, fogFar: { value: 2000 }, - fogColor: { value: new Color( 0xffffff ) } + fogColor: { value: new Color(0xffffff) } }, @@ -7121,73 +7124,83 @@ ambientLightColor: { value: [] }, - directionalLights: { value: [], properties: { - direction: {}, - color: {}, + directionalLights: { + value: [], properties: { + direction: {}, + color: {}, - shadow: {}, - shadowBias: {}, - shadowRadius: {}, - shadowMapSize: {} - } }, + shadow: {}, + shadowBias: {}, + shadowRadius: {}, + shadowMapSize: {} + } + }, directionalShadowMap: { value: [] }, directionalShadowMatrix: { value: [] }, - spotLights: { value: [], properties: { - color: {}, - position: {}, - direction: {}, - distance: {}, - coneCos: {}, - penumbraCos: {}, - decay: {}, - - shadow: {}, - shadowBias: {}, - shadowRadius: {}, - shadowMapSize: {} - } }, + spotLights: { + value: [], properties: { + color: {}, + position: {}, + direction: {}, + distance: {}, + coneCos: {}, + penumbraCos: {}, + decay: {}, + + shadow: {}, + shadowBias: {}, + shadowRadius: {}, + shadowMapSize: {} + } + }, spotShadowMap: { value: [] }, spotShadowMatrix: { value: [] }, - pointLights: { value: [], properties: { - color: {}, - position: {}, - decay: {}, - distance: {}, + pointLights: { + value: [], properties: { + color: {}, + position: {}, + decay: {}, + distance: {}, - shadow: {}, - shadowBias: {}, - shadowRadius: {}, - shadowMapSize: {}, - shadowCameraNear: {}, - shadowCameraFar: {} - } }, + shadow: {}, + shadowBias: {}, + shadowRadius: {}, + shadowMapSize: {}, + shadowCameraNear: {}, + shadowCameraFar: {} + } + }, pointShadowMap: { value: [] }, pointShadowMatrix: { value: [] }, - hemisphereLights: { value: [], properties: { - direction: {}, - skyColor: {}, - groundColor: {} - } }, + hemisphereLights: { + value: [], properties: { + direction: {}, + skyColor: {}, + groundColor: {} + } + }, // TODO (abelnation): RectAreaLight BRDF data needs to be moved from example to main src - rectAreaLights: { value: [], properties: { - color: {}, - position: {}, - width: {}, - height: {} - } } + rectAreaLights: { + value: [], properties: { + color: {}, + position: {}, + width: {}, + height: {} + } + } }, points: { - diffuse: { value: new Color( 0xeeeeee ) }, + diffuse: { value: new Color(0xeeeeee) }, opacity: { value: 1.0 }, size: { value: 1.0 }, scale: { value: 1.0 }, @@ -7198,9 +7211,9 @@ sprite: { - diffuse: { value: new Color( 0xeeeeee ) }, + diffuse: { value: new Color(0xeeeeee) }, opacity: { value: 1.0 }, - center: { value: new Vector2( 0.5, 0.5 ) }, + center: { value: new Vector2(0.5, 0.5) }, rotation: { value: 0.0 }, map: { value: null }, uvTransform: { value: new Matrix3() } @@ -7219,14 +7232,14 @@ basic: { - uniforms: UniformsUtils.merge( [ + uniforms: UniformsUtils.merge([ UniformsLib.common, UniformsLib.specularmap, UniformsLib.envmap, UniformsLib.aomap, UniformsLib.lightmap, UniformsLib.fog - ] ), + ]), vertexShader: ShaderChunk.meshbasic_vert, fragmentShader: ShaderChunk.meshbasic_frag @@ -7235,7 +7248,7 @@ lambert: { - uniforms: UniformsUtils.merge( [ + uniforms: UniformsUtils.merge([ UniformsLib.common, UniformsLib.specularmap, UniformsLib.envmap, @@ -7245,9 +7258,9 @@ UniformsLib.fog, UniformsLib.lights, { - emissive: { value: new Color( 0x000000 ) } + emissive: { value: new Color(0x000000) } } - ] ), + ]), vertexShader: ShaderChunk.meshlambert_vert, fragmentShader: ShaderChunk.meshlambert_frag @@ -7256,7 +7269,7 @@ phong: { - uniforms: UniformsUtils.merge( [ + uniforms: UniformsUtils.merge([ UniformsLib.common, UniformsLib.specularmap, UniformsLib.envmap, @@ -7270,11 +7283,11 @@ UniformsLib.fog, UniformsLib.lights, { - emissive: { value: new Color( 0x000000 ) }, - specular: { value: new Color( 0x111111 ) }, + emissive: { value: new Color(0x000000) }, + specular: { value: new Color(0x111111) }, shininess: { value: 30 } } - ] ), + ]), vertexShader: ShaderChunk.meshphong_vert, fragmentShader: ShaderChunk.meshphong_frag @@ -7283,7 +7296,7 @@ standard: { - uniforms: UniformsUtils.merge( [ + uniforms: UniformsUtils.merge([ UniformsLib.common, UniformsLib.envmap, UniformsLib.aomap, @@ -7297,12 +7310,12 @@ UniformsLib.fog, UniformsLib.lights, { - emissive: { value: new Color( 0x000000 ) }, + emissive: { value: new Color(0x000000) }, roughness: { value: 0.5 }, metalness: { value: 0.5 }, envMapIntensity: { value: 1 } // temporary } - ] ), + ]), vertexShader: ShaderChunk.meshphysical_vert, fragmentShader: ShaderChunk.meshphysical_frag @@ -7311,7 +7324,7 @@ matcap: { - uniforms: UniformsUtils.merge( [ + uniforms: UniformsUtils.merge([ UniformsLib.common, UniformsLib.bumpmap, UniformsLib.normalmap, @@ -7320,7 +7333,7 @@ { matcap: { value: null } } - ] ), + ]), vertexShader: ShaderChunk.meshmatcap_vert, fragmentShader: ShaderChunk.meshmatcap_frag @@ -7329,10 +7342,10 @@ points: { - uniforms: UniformsUtils.merge( [ + uniforms: UniformsUtils.merge([ UniformsLib.points, UniformsLib.fog - ] ), + ]), vertexShader: ShaderChunk.points_vert, fragmentShader: ShaderChunk.points_frag @@ -7341,7 +7354,7 @@ dashed: { - uniforms: UniformsUtils.merge( [ + uniforms: UniformsUtils.merge([ UniformsLib.common, UniformsLib.fog, { @@ -7349,7 +7362,7 @@ dashSize: { value: 1 }, totalSize: { value: 2 } } - ] ), + ]), vertexShader: ShaderChunk.linedashed_vert, fragmentShader: ShaderChunk.linedashed_frag @@ -7358,10 +7371,10 @@ depth: { - uniforms: UniformsUtils.merge( [ + uniforms: UniformsUtils.merge([ UniformsLib.common, UniformsLib.displacementmap - ] ), + ]), vertexShader: ShaderChunk.depth_vert, fragmentShader: ShaderChunk.depth_frag @@ -7370,7 +7383,7 @@ normal: { - uniforms: UniformsUtils.merge( [ + uniforms: UniformsUtils.merge([ UniformsLib.common, UniformsLib.bumpmap, UniformsLib.normalmap, @@ -7378,7 +7391,7 @@ { opacity: { value: 1.0 } } - ] ), + ]), vertexShader: ShaderChunk.normal_vert, fragmentShader: ShaderChunk.normal_frag @@ -7387,10 +7400,10 @@ sprite: { - uniforms: UniformsUtils.merge( [ + uniforms: UniformsUtils.merge([ UniformsLib.sprite, UniformsLib.fog - ] ), + ]), vertexShader: ShaderChunk.sprite_vert, fragmentShader: ShaderChunk.sprite_frag @@ -7438,7 +7451,7 @@ distanceRGBA: { - uniforms: UniformsUtils.merge( [ + uniforms: UniformsUtils.merge([ UniformsLib.common, UniformsLib.displacementmap, { @@ -7446,7 +7459,7 @@ nearDistance: { value: 1 }, farDistance: { value: 1000 } } - ] ), + ]), vertexShader: ShaderChunk.distanceRGBA_vert, fragmentShader: ShaderChunk.distanceRGBA_frag @@ -7455,14 +7468,14 @@ shadow: { - uniforms: UniformsUtils.merge( [ + uniforms: UniformsUtils.merge([ UniformsLib.lights, UniformsLib.fog, { - color: { value: new Color( 0x00000 ) }, + color: { value: new Color(0x00000) }, opacity: { value: 1.0 } }, - ] ), + ]), vertexShader: ShaderChunk.shadow_vert, fragmentShader: ShaderChunk.shadow_frag @@ -7473,13 +7486,13 @@ ShaderLib.physical = { - uniforms: UniformsUtils.merge( [ + uniforms: UniformsUtils.merge([ ShaderLib.standard.uniforms, { clearCoat: { value: 0 }, clearCoatRoughness: { value: 0 } } - ] ), + ]), vertexShader: ShaderChunk.meshphysical_vert, fragmentShader: ShaderChunk.meshphysical_frag @@ -7496,13 +7509,13 @@ var isAnimating = false; var animationLoop = null; - function onAnimationFrame( time, frame ) { + function onAnimationFrame(time, frame) { - if ( isAnimating === false ) return; + if (isAnimating === false) return; - animationLoop( time, frame ); + animationLoop(time, frame); - context.requestAnimationFrame( onAnimationFrame ); + context.requestAnimationFrame(onAnimationFrame); } @@ -7510,10 +7523,10 @@ start: function () { - if ( isAnimating === true ) return; - if ( animationLoop === null ) return; + if (isAnimating === true) return; + if (animationLoop === null) return; - context.requestAnimationFrame( onAnimationFrame ); + context.requestAnimationFrame(onAnimationFrame); isAnimating = true; @@ -7525,13 +7538,13 @@ }, - setAnimationLoop: function ( callback ) { + setAnimationLoop: function (callback) { animationLoop = callback; }, - setContext: function ( value ) { + setContext: function (value) { context = value; @@ -7545,53 +7558,53 @@ * @author mrdoob / http://mrdoob.com/ */ - function WebGLAttributes( gl ) { + function WebGLAttributes(gl) { var buffers = new WeakMap(); - function createBuffer( attribute, bufferType ) { + function createBuffer(attribute, bufferType) { var array = attribute.array; var usage = attribute.dynamic ? 35048 : 35044; var buffer = gl.createBuffer(); - gl.bindBuffer( bufferType, buffer ); - gl.bufferData( bufferType, array, usage ); + gl.bindBuffer(bufferType, buffer); + gl.bufferData(bufferType, array, usage); attribute.onUploadCallback(); var type = 5126; - if ( array instanceof Float32Array ) { + if (array instanceof Float32Array) { type = 5126; - } else if ( array instanceof Float64Array ) { + } else if (array instanceof Float64Array) { - console.warn( 'THREE.WebGLAttributes: Unsupported data buffer format: Float64Array.' ); + console.warn('THREE.WebGLAttributes: Unsupported data buffer format: Float64Array.'); - } else if ( array instanceof Uint16Array ) { + } else if (array instanceof Uint16Array) { type = 5123; - } else if ( array instanceof Int16Array ) { + } else if (array instanceof Int16Array) { type = 5122; - } else if ( array instanceof Uint32Array ) { + } else if (array instanceof Uint32Array) { type = 5125; - } else if ( array instanceof Int32Array ) { + } else if (array instanceof Int32Array) { type = 5124; - } else if ( array instanceof Int8Array ) { + } else if (array instanceof Int8Array) { type = 5120; - } else if ( array instanceof Uint8Array ) { + } else if (array instanceof Uint8Array) { type = 5121; @@ -7606,31 +7619,31 @@ } - function updateBuffer( buffer, attribute, bufferType ) { + function updateBuffer(buffer, attribute, bufferType) { var array = attribute.array; var updateRange = attribute.updateRange; - gl.bindBuffer( bufferType, buffer ); + gl.bindBuffer(bufferType, buffer); - if ( attribute.dynamic === false ) { + if (attribute.dynamic === false) { - gl.bufferData( bufferType, array, 35044 ); + gl.bufferData(bufferType, array, 35044); - } else if ( updateRange.count === - 1 ) { + } else if (updateRange.count === - 1) { // Not using update ranges - gl.bufferSubData( bufferType, 0, array ); + gl.bufferSubData(bufferType, 0, array); - } else if ( updateRange.count === 0 ) { + } else if (updateRange.count === 0) { - console.error( 'THREE.WebGLObjects.updateBuffer: dynamic THREE.BufferAttribute marked as needsUpdate but updateRange.count is 0, ensure you are using set methods or updating manually.' ); + console.error('THREE.WebGLObjects.updateBuffer: dynamic THREE.BufferAttribute marked as needsUpdate but updateRange.count is 0, ensure you are using set methods or updating manually.'); } else { - gl.bufferSubData( bufferType, updateRange.offset * array.BYTES_PER_ELEMENT, - array.subarray( updateRange.offset, updateRange.offset + updateRange.count ) ); + gl.bufferSubData(bufferType, updateRange.offset * array.BYTES_PER_ELEMENT, + array.subarray(updateRange.offset, updateRange.offset + updateRange.count)); updateRange.count = - 1; // reset range @@ -7640,43 +7653,43 @@ // - function get( attribute ) { + function get(attribute) { - if ( attribute.isInterleavedBufferAttribute ) attribute = attribute.data; + if (attribute.isInterleavedBufferAttribute) attribute = attribute.data; - return buffers.get( attribute ); + return buffers.get(attribute); } - function remove( attribute ) { + function remove(attribute) { - if ( attribute.isInterleavedBufferAttribute ) attribute = attribute.data; + if (attribute.isInterleavedBufferAttribute) attribute = attribute.data; - var data = buffers.get( attribute ); + var data = buffers.get(attribute); - if ( data ) { + if (data) { - gl.deleteBuffer( data.buffer ); + gl.deleteBuffer(data.buffer); - buffers.delete( attribute ); + buffers.delete(attribute); } } - function update( attribute, bufferType ) { + function update(attribute, bufferType) { - if ( attribute.isInterleavedBufferAttribute ) attribute = attribute.data; + if (attribute.isInterleavedBufferAttribute) attribute = attribute.data; - var data = buffers.get( attribute ); + var data = buffers.get(attribute); - if ( data === undefined ) { + if (data === undefined) { - buffers.set( attribute, createBuffer( attribute, bufferType ) ); + buffers.set(attribute, createBuffer(attribute, bufferType)); - } else if ( data.version < attribute.version ) { + } else if (data.version < attribute.version) { - updateBuffer( data.buffer, attribute, bufferType ); + updateBuffer(data.buffer, attribute, bufferType); data.version = attribute.version; @@ -7699,50 +7712,50 @@ * @author alteredq / http://alteredqualia.com/ */ - function Face3( a, b, c, normal, color, materialIndex ) { + function Face3(a, b, c, normal, color, materialIndex) { this.a = a; this.b = b; this.c = c; - this.normal = ( normal && normal.isVector3 ) ? normal : new Vector3(); - this.vertexNormals = Array.isArray( normal ) ? normal : []; + this.normal = (normal && normal.isVector3) ? normal : new Vector3(); + this.vertexNormals = Array.isArray(normal) ? normal : []; - this.color = ( color && color.isColor ) ? color : new Color(); - this.vertexColors = Array.isArray( color ) ? color : []; + this.color = (color && color.isColor) ? color : new Color(); + this.vertexColors = Array.isArray(color) ? color : []; this.materialIndex = materialIndex !== undefined ? materialIndex : 0; } - Object.assign( Face3.prototype, { + Object.assign(Face3.prototype, { clone: function () { - return new this.constructor().copy( this ); + return new this.constructor().copy(this); }, - copy: function ( source ) { + copy: function (source) { this.a = source.a; this.b = source.b; this.c = source.c; - this.normal.copy( source.normal ); - this.color.copy( source.color ); + this.normal.copy(source.normal); + this.color.copy(source.color); this.materialIndex = source.materialIndex; - for ( var i = 0, il = source.vertexNormals.length; i < il; i ++ ) { + for (var i = 0, il = source.vertexNormals.length; i < il; i++) { - this.vertexNormals[ i ] = source.vertexNormals[ i ].clone(); + this.vertexNormals[i] = source.vertexNormals[i].clone(); } - for ( var i = 0, il = source.vertexColors.length; i < il; i ++ ) { + for (var i = 0, il = source.vertexColors.length; i < il; i++) { - this.vertexColors[ i ] = source.vertexColors[ i ].clone(); + this.vertexColors[i] = source.vertexColors[i].clone(); } @@ -7750,7 +7763,7 @@ } - } ); + }); /** * @author mrdoob / http://mrdoob.com/ @@ -7758,7 +7771,7 @@ * @author bhouston / http://clara.io */ - function Euler( x, y, z, order ) { + function Euler(x, y, z, order) { this._x = x || 0; this._y = y || 0; @@ -7767,11 +7780,11 @@ } - Euler.RotationOrders = [ 'XYZ', 'YZX', 'ZXY', 'XZY', 'YXZ', 'ZYX' ]; + Euler.RotationOrders = ['XYZ', 'YZX', 'ZXY', 'XZY', 'YXZ', 'ZYX']; Euler.DefaultOrder = 'XYZ'; - Object.defineProperties( Euler.prototype, { + Object.defineProperties(Euler.prototype, { x: { @@ -7781,7 +7794,7 @@ }, - set: function ( value ) { + set: function (value) { this._x = value; this.onChangeCallback(); @@ -7798,7 +7811,7 @@ }, - set: function ( value ) { + set: function (value) { this._y = value; this.onChangeCallback(); @@ -7815,7 +7828,7 @@ }, - set: function ( value ) { + set: function (value) { this._z = value; this.onChangeCallback(); @@ -7832,7 +7845,7 @@ }, - set: function ( value ) { + set: function (value) { this._order = value; this.onChangeCallback(); @@ -7841,13 +7854,13 @@ } - } ); + }); - Object.assign( Euler.prototype, { + Object.assign(Euler.prototype, { isEuler: true, - set: function ( x, y, z, order ) { + set: function (x, y, z, order) { this._x = x; this._y = y; @@ -7862,11 +7875,11 @@ clone: function () { - return new this.constructor( this._x, this._y, this._z, this._order ); + return new this.constructor(this._x, this._y, this._z, this._order); }, - copy: function ( euler ) { + copy: function (euler) { this._x = euler._x; this._y = euler._y; @@ -7879,124 +7892,124 @@ }, - setFromRotationMatrix: function ( m, order, update ) { + setFromRotationMatrix: function (m, order, update) { var clamp = _Math.clamp; // assumes the upper 3x3 of m is a pure rotation matrix (i.e, unscaled) var te = m.elements; - var m11 = te[ 0 ], m12 = te[ 4 ], m13 = te[ 8 ]; - var m21 = te[ 1 ], m22 = te[ 5 ], m23 = te[ 9 ]; - var m31 = te[ 2 ], m32 = te[ 6 ], m33 = te[ 10 ]; + var m11 = te[0], m12 = te[4], m13 = te[8]; + var m21 = te[1], m22 = te[5], m23 = te[9]; + var m31 = te[2], m32 = te[6], m33 = te[10]; order = order || this._order; - if ( order === 'XYZ' ) { + if (order === 'XYZ') { - this._y = Math.asin( clamp( m13, - 1, 1 ) ); + this._y = Math.asin(clamp(m13, - 1, 1)); - if ( Math.abs( m13 ) < 0.99999 ) { + if (Math.abs(m13) < 0.99999) { - this._x = Math.atan2( - m23, m33 ); - this._z = Math.atan2( - m12, m11 ); + this._x = Math.atan2(- m23, m33); + this._z = Math.atan2(- m12, m11); } else { - this._x = Math.atan2( m32, m22 ); + this._x = Math.atan2(m32, m22); this._z = 0; } - } else if ( order === 'YXZ' ) { + } else if (order === 'YXZ') { - this._x = Math.asin( - clamp( m23, - 1, 1 ) ); + this._x = Math.asin(- clamp(m23, - 1, 1)); - if ( Math.abs( m23 ) < 0.99999 ) { + if (Math.abs(m23) < 0.99999) { - this._y = Math.atan2( m13, m33 ); - this._z = Math.atan2( m21, m22 ); + this._y = Math.atan2(m13, m33); + this._z = Math.atan2(m21, m22); } else { - this._y = Math.atan2( - m31, m11 ); + this._y = Math.atan2(- m31, m11); this._z = 0; } - } else if ( order === 'ZXY' ) { + } else if (order === 'ZXY') { - this._x = Math.asin( clamp( m32, - 1, 1 ) ); + this._x = Math.asin(clamp(m32, - 1, 1)); - if ( Math.abs( m32 ) < 0.99999 ) { + if (Math.abs(m32) < 0.99999) { - this._y = Math.atan2( - m31, m33 ); - this._z = Math.atan2( - m12, m22 ); + this._y = Math.atan2(- m31, m33); + this._z = Math.atan2(- m12, m22); } else { this._y = 0; - this._z = Math.atan2( m21, m11 ); + this._z = Math.atan2(m21, m11); } - } else if ( order === 'ZYX' ) { + } else if (order === 'ZYX') { - this._y = Math.asin( - clamp( m31, - 1, 1 ) ); + this._y = Math.asin(- clamp(m31, - 1, 1)); - if ( Math.abs( m31 ) < 0.99999 ) { + if (Math.abs(m31) < 0.99999) { - this._x = Math.atan2( m32, m33 ); - this._z = Math.atan2( m21, m11 ); + this._x = Math.atan2(m32, m33); + this._z = Math.atan2(m21, m11); } else { this._x = 0; - this._z = Math.atan2( - m12, m22 ); + this._z = Math.atan2(- m12, m22); } - } else if ( order === 'YZX' ) { + } else if (order === 'YZX') { - this._z = Math.asin( clamp( m21, - 1, 1 ) ); + this._z = Math.asin(clamp(m21, - 1, 1)); - if ( Math.abs( m21 ) < 0.99999 ) { + if (Math.abs(m21) < 0.99999) { - this._x = Math.atan2( - m23, m22 ); - this._y = Math.atan2( - m31, m11 ); + this._x = Math.atan2(- m23, m22); + this._y = Math.atan2(- m31, m11); } else { this._x = 0; - this._y = Math.atan2( m13, m33 ); + this._y = Math.atan2(m13, m33); } - } else if ( order === 'XZY' ) { + } else if (order === 'XZY') { - this._z = Math.asin( - clamp( m12, - 1, 1 ) ); + this._z = Math.asin(- clamp(m12, - 1, 1)); - if ( Math.abs( m12 ) < 0.99999 ) { + if (Math.abs(m12) < 0.99999) { - this._x = Math.atan2( m32, m22 ); - this._y = Math.atan2( m13, m11 ); + this._x = Math.atan2(m32, m22); + this._y = Math.atan2(m13, m11); } else { - this._x = Math.atan2( - m23, m33 ); + this._x = Math.atan2(- m23, m33); this._y = 0; } } else { - console.warn( 'THREE.Euler: .setFromRotationMatrix() given unsupported order: ' + order ); + console.warn('THREE.Euler: .setFromRotationMatrix() given unsupported order: ' + order); } this._order = order; - if ( update !== false ) this.onChangeCallback(); + if (update !== false) this.onChangeCallback(); return this; @@ -8006,19 +8019,19 @@ var matrix = new Matrix4(); - return function setFromQuaternion( q, order, update ) { + return function setFromQuaternion(q, order, update) { - matrix.makeRotationFromQuaternion( q ); + matrix.makeRotationFromQuaternion(q); - return this.setFromRotationMatrix( matrix, order, update ); + return this.setFromRotationMatrix(matrix, order, update); }; }(), - setFromVector3: function ( v, order ) { + setFromVector3: function (v, order) { - return this.set( v.x, v.y, v.z, order || this._order ); + return this.set(v.x, v.y, v.z, order || this._order); }, @@ -8028,28 +8041,28 @@ var q = new Quaternion(); - return function reorder( newOrder ) { + return function reorder(newOrder) { - q.setFromEuler( this ); + q.setFromEuler(this); - return this.setFromQuaternion( q, newOrder ); + return this.setFromQuaternion(q, newOrder); }; }(), - equals: function ( euler ) { + equals: function (euler) { - return ( euler._x === this._x ) && ( euler._y === this._y ) && ( euler._z === this._z ) && ( euler._order === this._order ); + return (euler._x === this._x) && (euler._y === this._y) && (euler._z === this._z) && (euler._order === this._order); }, - fromArray: function ( array ) { + fromArray: function (array) { - this._x = array[ 0 ]; - this._y = array[ 1 ]; - this._z = array[ 2 ]; - if ( array[ 3 ] !== undefined ) this._order = array[ 3 ]; + this._x = array[0]; + this._y = array[1]; + this._z = array[2]; + if (array[3] !== undefined) this._order = array[3]; this.onChangeCallback(); @@ -8057,35 +8070,35 @@ }, - toArray: function ( array, offset ) { + toArray: function (array, offset) { - if ( array === undefined ) array = []; - if ( offset === undefined ) offset = 0; + if (array === undefined) array = []; + if (offset === undefined) offset = 0; - array[ offset ] = this._x; - array[ offset + 1 ] = this._y; - array[ offset + 2 ] = this._z; - array[ offset + 3 ] = this._order; + array[offset] = this._x; + array[offset + 1] = this._y; + array[offset + 2] = this._z; + array[offset + 3] = this._order; return array; }, - toVector3: function ( optionalResult ) { + toVector3: function (optionalResult) { - if ( optionalResult ) { + if (optionalResult) { - return optionalResult.set( this._x, this._y, this._z ); + return optionalResult.set(this._x, this._y, this._z); } else { - return new Vector3( this._x, this._y, this._z ); + return new Vector3(this._x, this._y, this._z); } }, - onChange: function ( callback ) { + onChange: function (callback) { this.onChangeCallback = callback; @@ -8093,9 +8106,9 @@ }, - onChangeCallback: function () {} + onChangeCallback: function () { } - } ); + }); /** * @author mrdoob / http://mrdoob.com/ @@ -8107,39 +8120,39 @@ } - Object.assign( Layers.prototype, { + Object.assign(Layers.prototype, { - set: function ( channel ) { + set: function (channel) { this.mask = 1 << channel | 0; }, - enable: function ( channel ) { + enable: function (channel) { this.mask |= 1 << channel | 0; }, - toggle: function ( channel ) { + toggle: function (channel) { this.mask ^= 1 << channel | 0; }, - disable: function ( channel ) { + disable: function (channel) { - this.mask &= ~ ( 1 << channel | 0 ); + this.mask &= ~(1 << channel | 0); }, - test: function ( layers ) { + test: function (layers) { - return ( this.mask & layers.mask ) !== 0; + return (this.mask & layers.mask) !== 0; } - } ); + }); /** * @author mrdoob / http://mrdoob.com/ @@ -8153,7 +8166,7 @@ function Object3D() { - Object.defineProperty( this, 'id', { value: object3DId ++ } ); + Object.defineProperty(this, 'id', { value: object3DId++ }); this.uuid = _Math.generateUUID(); @@ -8168,24 +8181,24 @@ var position = new Vector3(); var rotation = new Euler(); var quaternion = new Quaternion(); - var scale = new Vector3( 1, 1, 1 ); + var scale = new Vector3(1, 1, 1); function onRotationChange() { - quaternion.setFromEuler( rotation, false ); + quaternion.setFromEuler(rotation, false); } function onQuaternionChange() { - rotation.setFromQuaternion( quaternion, undefined, false ); + rotation.setFromQuaternion(quaternion, undefined, false); } - rotation.onChange( onRotationChange ); - quaternion.onChange( onQuaternionChange ); + rotation.onChange(onRotationChange); + quaternion.onChange(onQuaternionChange); - Object.defineProperties( this, { + Object.defineProperties(this, { position: { configurable: true, enumerable: true, @@ -8212,7 +8225,7 @@ normalMatrix: { value: new Matrix3() } - } ); + }); this.matrix = new Matrix4(); this.matrixWorld = new Matrix4(); @@ -8233,61 +8246,61 @@ } - Object3D.DefaultUp = new Vector3( 0, 1, 0 ); + Object3D.DefaultUp = new Vector3(0, 1, 0); Object3D.DefaultMatrixAutoUpdate = true; - Object3D.prototype = Object.assign( Object.create( EventDispatcher.prototype ), { + Object3D.prototype = Object.assign(Object.create(EventDispatcher.prototype), { constructor: Object3D, isObject3D: true, - onBeforeRender: function () {}, - onAfterRender: function () {}, + onBeforeRender: function () { }, + onAfterRender: function () { }, - applyMatrix: function ( matrix ) { + applyMatrix: function (matrix) { - this.matrix.multiplyMatrices( matrix, this.matrix ); + this.matrix.multiplyMatrices(matrix, this.matrix); - this.matrix.decompose( this.position, this.quaternion, this.scale ); + this.matrix.decompose(this.position, this.quaternion, this.scale); }, - applyQuaternion: function ( q ) { + applyQuaternion: function (q) { - this.quaternion.premultiply( q ); + this.quaternion.premultiply(q); return this; }, - setRotationFromAxisAngle: function ( axis, angle ) { + setRotationFromAxisAngle: function (axis, angle) { // assumes axis is normalized - this.quaternion.setFromAxisAngle( axis, angle ); + this.quaternion.setFromAxisAngle(axis, angle); }, - setRotationFromEuler: function ( euler ) { + setRotationFromEuler: function (euler) { - this.quaternion.setFromEuler( euler, true ); + this.quaternion.setFromEuler(euler, true); }, - setRotationFromMatrix: function ( m ) { + setRotationFromMatrix: function (m) { // assumes the upper 3x3 of m is a pure rotation matrix (i.e, unscaled) - this.quaternion.setFromRotationMatrix( m ); + this.quaternion.setFromRotationMatrix(m); }, - setRotationFromQuaternion: function ( q ) { + setRotationFromQuaternion: function (q) { // assumes q is normalized - this.quaternion.copy( q ); + this.quaternion.copy(q); }, @@ -8298,11 +8311,11 @@ var q1 = new Quaternion(); - return function rotateOnAxis( axis, angle ) { + return function rotateOnAxis(axis, angle) { - q1.setFromAxisAngle( axis, angle ); + q1.setFromAxisAngle(axis, angle); - this.quaternion.multiply( q1 ); + this.quaternion.multiply(q1); return this; @@ -8318,11 +8331,11 @@ var q1 = new Quaternion(); - return function rotateOnWorldAxis( axis, angle ) { + return function rotateOnWorldAxis(axis, angle) { - q1.setFromAxisAngle( axis, angle ); + q1.setFromAxisAngle(axis, angle); - this.quaternion.premultiply( q1 ); + this.quaternion.premultiply(q1); return this; @@ -8332,11 +8345,11 @@ rotateX: function () { - var v1 = new Vector3( 1, 0, 0 ); + var v1 = new Vector3(1, 0, 0); - return function rotateX( angle ) { + return function rotateX(angle) { - return this.rotateOnAxis( v1, angle ); + return this.rotateOnAxis(v1, angle); }; @@ -8344,11 +8357,11 @@ rotateY: function () { - var v1 = new Vector3( 0, 1, 0 ); + var v1 = new Vector3(0, 1, 0); - return function rotateY( angle ) { + return function rotateY(angle) { - return this.rotateOnAxis( v1, angle ); + return this.rotateOnAxis(v1, angle); }; @@ -8356,11 +8369,11 @@ rotateZ: function () { - var v1 = new Vector3( 0, 0, 1 ); + var v1 = new Vector3(0, 0, 1); - return function rotateZ( angle ) { + return function rotateZ(angle) { - return this.rotateOnAxis( v1, angle ); + return this.rotateOnAxis(v1, angle); }; @@ -8373,11 +8386,11 @@ var v1 = new Vector3(); - return function translateOnAxis( axis, distance ) { + return function translateOnAxis(axis, distance) { - v1.copy( axis ).applyQuaternion( this.quaternion ); + v1.copy(axis).applyQuaternion(this.quaternion); - this.position.add( v1.multiplyScalar( distance ) ); + this.position.add(v1.multiplyScalar(distance)); return this; @@ -8387,11 +8400,11 @@ translateX: function () { - var v1 = new Vector3( 1, 0, 0 ); + var v1 = new Vector3(1, 0, 0); - return function translateX( distance ) { + return function translateX(distance) { - return this.translateOnAxis( v1, distance ); + return this.translateOnAxis(v1, distance); }; @@ -8399,11 +8412,11 @@ translateY: function () { - var v1 = new Vector3( 0, 1, 0 ); + var v1 = new Vector3(0, 1, 0); - return function translateY( distance ) { + return function translateY(distance) { - return this.translateOnAxis( v1, distance ); + return this.translateOnAxis(v1, distance); }; @@ -8411,19 +8424,19 @@ translateZ: function () { - var v1 = new Vector3( 0, 0, 1 ); + var v1 = new Vector3(0, 0, 1); - return function translateZ( distance ) { + return function translateZ(distance) { - return this.translateOnAxis( v1, distance ); + return this.translateOnAxis(v1, distance); }; }(), - localToWorld: function ( vector ) { + localToWorld: function (vector) { - return vector.applyMatrix4( this.matrixWorld ); + return vector.applyMatrix4(this.matrixWorld); }, @@ -8431,9 +8444,9 @@ var m1 = new Matrix4(); - return function worldToLocal( vector ) { + return function worldToLocal(vector) { - return vector.applyMatrix4( m1.getInverse( this.matrixWorld ) ); + return vector.applyMatrix4(m1.getInverse(this.matrixWorld)); }; @@ -8448,41 +8461,41 @@ var target = new Vector3(); var position = new Vector3(); - return function lookAt( x, y, z ) { + return function lookAt(x, y, z) { - if ( x.isVector3 ) { + if (x.isVector3) { - target.copy( x ); + target.copy(x); } else { - target.set( x, y, z ); + target.set(x, y, z); } var parent = this.parent; - this.updateWorldMatrix( true, false ); + this.updateWorldMatrix(true, false); - position.setFromMatrixPosition( this.matrixWorld ); + position.setFromMatrixPosition(this.matrixWorld); - if ( this.isCamera ) { + if (this.isCamera) { - m1.lookAt( position, target, this.up ); + m1.lookAt(position, target, this.up); } else { - m1.lookAt( target, position, this.up ); + m1.lookAt(target, position, this.up); } - this.quaternion.setFromRotationMatrix( m1 ); + this.quaternion.setFromRotationMatrix(m1); - if ( parent ) { + if (parent) { - m1.extractRotation( parent.matrixWorld ); - q1.setFromRotationMatrix( m1 ); - this.quaternion.premultiply( q1.inverse() ); + m1.extractRotation(parent.matrixWorld); + q1.setFromRotationMatrix(m1); + this.quaternion.premultiply(q1.inverse()); } @@ -8490,13 +8503,13 @@ }(), - add: function ( object ) { + add: function (object) { - if ( arguments.length > 1 ) { + if (arguments.length > 1) { - for ( var i = 0; i < arguments.length; i ++ ) { + for (var i = 0; i < arguments.length; i++) { - this.add( arguments[ i ] ); + this.add(arguments[i]); } @@ -8504,29 +8517,29 @@ } - if ( object === this ) { + if (object === this) { - console.error( "THREE.Object3D.add: object can't be added as a child of itself.", object ); + console.error("THREE.Object3D.add: object can't be added as a child of itself.", object); return this; } - if ( ( object && object.isObject3D ) ) { + if ((object && object.isObject3D)) { - if ( object.parent !== null ) { + if (object.parent !== null) { - object.parent.remove( object ); + object.parent.remove(object); } object.parent = this; - object.dispatchEvent( { type: 'added' } ); + object.dispatchEvent({ type: 'added' }); - this.children.push( object ); + this.children.push(object); } else { - console.error( "THREE.Object3D.add: object not an instance of THREE.Object3D.", object ); + console.error("THREE.Object3D.add: object not an instance of THREE.Object3D.", object); } @@ -8534,13 +8547,13 @@ }, - remove: function ( object ) { + remove: function (object) { - if ( arguments.length > 1 ) { + if (arguments.length > 1) { - for ( var i = 0; i < arguments.length; i ++ ) { + for (var i = 0; i < arguments.length; i++) { - this.remove( arguments[ i ] ); + this.remove(arguments[i]); } @@ -8548,15 +8561,15 @@ } - var index = this.children.indexOf( object ); + var index = this.children.indexOf(object); - if ( index !== - 1 ) { + if (index !== - 1) { object.parent = null; - object.dispatchEvent( { type: 'removed' } ); + object.dispatchEvent({ type: 'removed' }); - this.children.splice( index, 1 ); + this.children.splice(index, 1); } @@ -8564,28 +8577,28 @@ }, - getObjectById: function ( id ) { + getObjectById: function (id) { - return this.getObjectByProperty( 'id', id ); + return this.getObjectByProperty('id', id); }, - getObjectByName: function ( name ) { + getObjectByName: function (name) { - return this.getObjectByProperty( 'name', name ); + return this.getObjectByProperty('name', name); }, - getObjectByProperty: function ( name, value ) { + getObjectByProperty: function (name, value) { - if ( this[ name ] === value ) return this; + if (this[name] === value) return this; - for ( var i = 0, l = this.children.length; i < l; i ++ ) { + for (var i = 0, l = this.children.length; i < l; i++) { - var child = this.children[ i ]; - var object = child.getObjectByProperty( name, value ); + var child = this.children[i]; + var object = child.getObjectByProperty(name, value); - if ( object !== undefined ) { + if (object !== undefined) { return object; @@ -8597,18 +8610,18 @@ }, - getWorldPosition: function ( target ) { + getWorldPosition: function (target) { - if ( target === undefined ) { + if (target === undefined) { - console.warn( 'THREE.Object3D: .getWorldPosition() target is now required' ); + console.warn('THREE.Object3D: .getWorldPosition() target is now required'); target = new Vector3(); } - this.updateMatrixWorld( true ); + this.updateMatrixWorld(true); - return target.setFromMatrixPosition( this.matrixWorld ); + return target.setFromMatrixPosition(this.matrixWorld); }, @@ -8617,18 +8630,18 @@ var position = new Vector3(); var scale = new Vector3(); - return function getWorldQuaternion( target ) { + return function getWorldQuaternion(target) { - if ( target === undefined ) { + if (target === undefined) { - console.warn( 'THREE.Object3D: .getWorldQuaternion() target is now required' ); + console.warn('THREE.Object3D: .getWorldQuaternion() target is now required'); target = new Quaternion(); } - this.updateMatrixWorld( true ); + this.updateMatrixWorld(true); - this.matrixWorld.decompose( position, target, scale ); + this.matrixWorld.decompose(position, target, scale); return target; @@ -8641,18 +8654,18 @@ var position = new Vector3(); var quaternion = new Quaternion(); - return function getWorldScale( target ) { + return function getWorldScale(target) { - if ( target === undefined ) { + if (target === undefined) { - console.warn( 'THREE.Object3D: .getWorldScale() target is now required' ); + console.warn('THREE.Object3D: .getWorldScale() target is now required'); target = new Vector3(); } - this.updateMatrixWorld( true ); + this.updateMatrixWorld(true); - this.matrixWorld.decompose( position, quaternion, target ); + this.matrixWorld.decompose(position, quaternion, target); return target; @@ -8660,64 +8673,64 @@ }(), - getWorldDirection: function ( target ) { + getWorldDirection: function (target) { - if ( target === undefined ) { + if (target === undefined) { - console.warn( 'THREE.Object3D: .getWorldDirection() target is now required' ); + console.warn('THREE.Object3D: .getWorldDirection() target is now required'); target = new Vector3(); } - this.updateMatrixWorld( true ); + this.updateMatrixWorld(true); var e = this.matrixWorld.elements; - return target.set( e[ 8 ], e[ 9 ], e[ 10 ] ).normalize(); + return target.set(e[8], e[9], e[10]).normalize(); }, - raycast: function () {}, + raycast: function () { }, - traverse: function ( callback ) { + traverse: function (callback) { - callback( this ); + callback(this); var children = this.children; - for ( var i = 0, l = children.length; i < l; i ++ ) { + for (var i = 0, l = children.length; i < l; i++) { - children[ i ].traverse( callback ); + children[i].traverse(callback); } }, - traverseVisible: function ( callback ) { + traverseVisible: function (callback) { - if ( this.visible === false ) return; + if (this.visible === false) return; - callback( this ); + callback(this); var children = this.children; - for ( var i = 0, l = children.length; i < l; i ++ ) { + for (var i = 0, l = children.length; i < l; i++) { - children[ i ].traverseVisible( callback ); + children[i].traverseVisible(callback); } }, - traverseAncestors: function ( callback ) { + traverseAncestors: function (callback) { var parent = this.parent; - if ( parent !== null ) { + if (parent !== null) { - callback( parent ); + callback(parent); - parent.traverseAncestors( callback ); + parent.traverseAncestors(callback); } @@ -8725,25 +8738,25 @@ updateMatrix: function () { - this.matrix.compose( this.position, this.quaternion, this.scale ); + this.matrix.compose(this.position, this.quaternion, this.scale); this.matrixWorldNeedsUpdate = true; }, - updateMatrixWorld: function ( force ) { + updateMatrixWorld: function (force) { - if ( this.matrixAutoUpdate ) this.updateMatrix(); + if (this.matrixAutoUpdate) this.updateMatrix(); - if ( this.matrixWorldNeedsUpdate || force ) { + if (this.matrixWorldNeedsUpdate || force) { - if ( this.parent === null ) { + if (this.parent === null) { - this.matrixWorld.copy( this.matrix ); + this.matrixWorld.copy(this.matrix); } else { - this.matrixWorld.multiplyMatrices( this.parent.matrixWorld, this.matrix ); + this.matrixWorld.multiplyMatrices(this.parent.matrixWorld, this.matrix); } @@ -8757,45 +8770,45 @@ var children = this.children; - for ( var i = 0, l = children.length; i < l; i ++ ) { + for (var i = 0, l = children.length; i < l; i++) { - children[ i ].updateMatrixWorld( force ); + children[i].updateMatrixWorld(force); } }, - updateWorldMatrix: function ( updateParents, updateChildren ) { + updateWorldMatrix: function (updateParents, updateChildren) { var parent = this.parent; - if ( updateParents === true && parent !== null ) { + if (updateParents === true && parent !== null) { - parent.updateWorldMatrix( true, false ); + parent.updateWorldMatrix(true, false); } - if ( this.matrixAutoUpdate ) this.updateMatrix(); + if (this.matrixAutoUpdate) this.updateMatrix(); - if ( this.parent === null ) { + if (this.parent === null) { - this.matrixWorld.copy( this.matrix ); + this.matrixWorld.copy(this.matrix); } else { - this.matrixWorld.multiplyMatrices( this.parent.matrixWorld, this.matrix ); + this.matrixWorld.multiplyMatrices(this.parent.matrixWorld, this.matrix); } // update children - if ( updateChildren === true ) { + if (updateChildren === true) { var children = this.children; - for ( var i = 0, l = children.length; i < l; i ++ ) { + for (var i = 0, l = children.length; i < l; i++) { - children[ i ].updateWorldMatrix( false, true ); + children[i].updateWorldMatrix(false, true); } @@ -8803,17 +8816,17 @@ }, - toJSON: function ( meta ) { + toJSON: function (meta) { // meta is a string when called from JSON.stringify - var isRootObject = ( meta === undefined || typeof meta === 'string' ); + var isRootObject = (meta === undefined || typeof meta === 'string'); var output = {}; // meta is a hash used to collect geometries, materials. // not providing it implies that this is the root object // being serialized. - if ( isRootObject ) { + if (isRootObject) { // initialize meta obj meta = { @@ -8839,26 +8852,26 @@ object.uuid = this.uuid; object.type = this.type; - if ( this.name !== '' ) object.name = this.name; - if ( this.castShadow === true ) object.castShadow = true; - if ( this.receiveShadow === true ) object.receiveShadow = true; - if ( this.visible === false ) object.visible = false; - if ( this.frustumCulled === false ) object.frustumCulled = false; - if ( this.renderOrder !== 0 ) object.renderOrder = this.renderOrder; - if ( JSON.stringify( this.userData ) !== '{}' ) object.userData = this.userData; + if (this.name !== '') object.name = this.name; + if (this.castShadow === true) object.castShadow = true; + if (this.receiveShadow === true) object.receiveShadow = true; + if (this.visible === false) object.visible = false; + if (this.frustumCulled === false) object.frustumCulled = false; + if (this.renderOrder !== 0) object.renderOrder = this.renderOrder; + if (JSON.stringify(this.userData) !== '{}') object.userData = this.userData; object.layers = this.layers.mask; object.matrix = this.matrix.toArray(); - if ( this.matrixAutoUpdate === false ) object.matrixAutoUpdate = false; + if (this.matrixAutoUpdate === false) object.matrixAutoUpdate = false; // - function serialize( library, element ) { + function serialize(library, element) { - if ( library[ element.uuid ] === undefined ) { + if (library[element.uuid] === undefined) { - library[ element.uuid ] = element.toJSON( meta ); + library[element.uuid] = element.toJSON(meta); } @@ -8866,29 +8879,29 @@ } - if ( this.isMesh || this.isLine || this.isPoints ) { + if (this.isMesh || this.isLine || this.isPoints) { - object.geometry = serialize( meta.geometries, this.geometry ); + object.geometry = serialize(meta.geometries, this.geometry); var parameters = this.geometry.parameters; - if ( parameters !== undefined && parameters.shapes !== undefined ) { + if (parameters !== undefined && parameters.shapes !== undefined) { var shapes = parameters.shapes; - if ( Array.isArray( shapes ) ) { + if (Array.isArray(shapes)) { - for ( var i = 0, l = shapes.length; i < l; i ++ ) { + for (var i = 0, l = shapes.length; i < l; i++) { - var shape = shapes[ i ]; + var shape = shapes[i]; - serialize( meta.shapes, shape ); + serialize(meta.shapes, shape); } } else { - serialize( meta.shapes, shapes ); + serialize(meta.shapes, shapes); } @@ -8896,15 +8909,15 @@ } - if ( this.material !== undefined ) { + if (this.material !== undefined) { - if ( Array.isArray( this.material ) ) { + if (Array.isArray(this.material)) { var uuids = []; - for ( var i = 0, l = this.material.length; i < l; i ++ ) { + for (var i = 0, l = this.material.length; i < l; i++) { - uuids.push( serialize( meta.materials, this.material[ i ] ) ); + uuids.push(serialize(meta.materials, this.material[i])); } @@ -8912,7 +8925,7 @@ } else { - object.material = serialize( meta.materials, this.material ); + object.material = serialize(meta.materials, this.material); } @@ -8920,31 +8933,31 @@ // - if ( this.children.length > 0 ) { + if (this.children.length > 0) { object.children = []; - for ( var i = 0; i < this.children.length; i ++ ) { + for (var i = 0; i < this.children.length; i++) { - object.children.push( this.children[ i ].toJSON( meta ).object ); + object.children.push(this.children[i].toJSON(meta).object); } } - if ( isRootObject ) { + if (isRootObject) { - var geometries = extractFromCache( meta.geometries ); - var materials = extractFromCache( meta.materials ); - var textures = extractFromCache( meta.textures ); - var images = extractFromCache( meta.images ); - var shapes = extractFromCache( meta.shapes ); + var geometries = extractFromCache(meta.geometries); + var materials = extractFromCache(meta.materials); + var textures = extractFromCache(meta.textures); + var images = extractFromCache(meta.images); + var shapes = extractFromCache(meta.shapes); - if ( geometries.length > 0 ) output.geometries = geometries; - if ( materials.length > 0 ) output.materials = materials; - if ( textures.length > 0 ) output.textures = textures; - if ( images.length > 0 ) output.images = images; - if ( shapes.length > 0 ) output.shapes = shapes; + if (geometries.length > 0) output.geometries = geometries; + if (materials.length > 0) output.materials = materials; + if (textures.length > 0) output.textures = textures; + if (images.length > 0) output.images = images; + if (shapes.length > 0) output.shapes = shapes; } @@ -8955,14 +8968,14 @@ // extract data from the cache hash // remove metadata on each item // and return as array - function extractFromCache( cache ) { + function extractFromCache(cache) { var values = []; - for ( var key in cache ) { + for (var key in cache) { - var data = cache[ key ]; + var data = cache[key]; delete data.metadata; - values.push( data ); + values.push(data); } return values; @@ -8971,26 +8984,26 @@ }, - clone: function ( recursive ) { + clone: function (recursive) { - return new this.constructor().copy( this, recursive ); + return new this.constructor().copy(this, recursive); }, - copy: function ( source, recursive ) { + copy: function (source, recursive) { - if ( recursive === undefined ) recursive = true; + if (recursive === undefined) recursive = true; this.name = source.name; - this.up.copy( source.up ); + this.up.copy(source.up); - this.position.copy( source.position ); - this.quaternion.copy( source.quaternion ); - this.scale.copy( source.scale ); + this.position.copy(source.position); + this.quaternion.copy(source.quaternion); + this.scale.copy(source.scale); - this.matrix.copy( source.matrix ); - this.matrixWorld.copy( source.matrixWorld ); + this.matrix.copy(source.matrix); + this.matrixWorld.copy(source.matrixWorld); this.matrixAutoUpdate = source.matrixAutoUpdate; this.matrixWorldNeedsUpdate = source.matrixWorldNeedsUpdate; @@ -9004,14 +9017,14 @@ this.frustumCulled = source.frustumCulled; this.renderOrder = source.renderOrder; - this.userData = JSON.parse( JSON.stringify( source.userData ) ); + this.userData = JSON.parse(JSON.stringify(source.userData)); - if ( recursive === true ) { + if (recursive === true) { - for ( var i = 0; i < source.children.length; i ++ ) { + for (var i = 0; i < source.children.length; i++) { - var child = source.children[ i ]; - this.add( child.clone() ); + var child = source.children[i]; + this.add(child.clone()); } @@ -9021,7 +9034,7 @@ } - } ); + }); /** * @author mrdoob / http://mrdoob.com/ @@ -9036,7 +9049,7 @@ function Geometry() { - Object.defineProperty( this, 'id', { value: geometryId += 2 } ); + Object.defineProperty(this, 'id', { value: geometryId += 2 }); this.uuid = _Math.generateUUID(); @@ -9071,43 +9084,43 @@ } - Geometry.prototype = Object.assign( Object.create( EventDispatcher.prototype ), { + Geometry.prototype = Object.assign(Object.create(EventDispatcher.prototype), { constructor: Geometry, isGeometry: true, - applyMatrix: function ( matrix ) { + applyMatrix: function (matrix) { - var normalMatrix = new Matrix3().getNormalMatrix( matrix ); + var normalMatrix = new Matrix3().getNormalMatrix(matrix); - for ( var i = 0, il = this.vertices.length; i < il; i ++ ) { + for (var i = 0, il = this.vertices.length; i < il; i++) { - var vertex = this.vertices[ i ]; - vertex.applyMatrix4( matrix ); + var vertex = this.vertices[i]; + vertex.applyMatrix4(matrix); } - for ( var i = 0, il = this.faces.length; i < il; i ++ ) { + for (var i = 0, il = this.faces.length; i < il; i++) { - var face = this.faces[ i ]; - face.normal.applyMatrix3( normalMatrix ).normalize(); + var face = this.faces[i]; + face.normal.applyMatrix3(normalMatrix).normalize(); - for ( var j = 0, jl = face.vertexNormals.length; j < jl; j ++ ) { + for (var j = 0, jl = face.vertexNormals.length; j < jl; j++) { - face.vertexNormals[ j ].applyMatrix3( normalMatrix ).normalize(); + face.vertexNormals[j].applyMatrix3(normalMatrix).normalize(); } } - if ( this.boundingBox !== null ) { + if (this.boundingBox !== null) { this.computeBoundingBox(); } - if ( this.boundingSphere !== null ) { + if (this.boundingSphere !== null) { this.computeBoundingSphere(); @@ -9126,11 +9139,11 @@ var m1 = new Matrix4(); - return function rotateX( angle ) { + return function rotateX(angle) { - m1.makeRotationX( angle ); + m1.makeRotationX(angle); - this.applyMatrix( m1 ); + this.applyMatrix(m1); return this; @@ -9144,11 +9157,11 @@ var m1 = new Matrix4(); - return function rotateY( angle ) { + return function rotateY(angle) { - m1.makeRotationY( angle ); + m1.makeRotationY(angle); - this.applyMatrix( m1 ); + this.applyMatrix(m1); return this; @@ -9162,11 +9175,11 @@ var m1 = new Matrix4(); - return function rotateZ( angle ) { + return function rotateZ(angle) { - m1.makeRotationZ( angle ); + m1.makeRotationZ(angle); - this.applyMatrix( m1 ); + this.applyMatrix(m1); return this; @@ -9180,11 +9193,11 @@ var m1 = new Matrix4(); - return function translate( x, y, z ) { + return function translate(x, y, z) { - m1.makeTranslation( x, y, z ); + m1.makeTranslation(x, y, z); - this.applyMatrix( m1 ); + this.applyMatrix(m1); return this; @@ -9198,11 +9211,11 @@ var m1 = new Matrix4(); - return function scale( x, y, z ) { + return function scale(x, y, z) { - m1.makeScale( x, y, z ); + m1.makeScale(x, y, z); - this.applyMatrix( m1 ); + this.applyMatrix(m1); return this; @@ -9214,19 +9227,19 @@ var obj = new Object3D(); - return function lookAt( vector ) { + return function lookAt(vector) { - obj.lookAt( vector ); + obj.lookAt(vector); obj.updateMatrix(); - this.applyMatrix( obj.matrix ); + this.applyMatrix(obj.matrix); }; }(), - fromBufferGeometry: function ( geometry ) { + fromBufferGeometry: function (geometry) { var scope = this; @@ -9239,54 +9252,54 @@ var uvs = attributes.uv !== undefined ? attributes.uv.array : undefined; var uvs2 = attributes.uv2 !== undefined ? attributes.uv2.array : undefined; - if ( uvs2 !== undefined ) this.faceVertexUvs[ 1 ] = []; + if (uvs2 !== undefined) this.faceVertexUvs[1] = []; - for ( var i = 0, j = 0; i < positions.length; i += 3, j += 2 ) { + for (var i = 0, j = 0; i < positions.length; i += 3, j += 2) { - scope.vertices.push( new Vector3().fromArray( positions, i ) ); + scope.vertices.push(new Vector3().fromArray(positions, i)); - if ( colors !== undefined ) { + if (colors !== undefined) { - scope.colors.push( new Color().fromArray( colors, i ) ); + scope.colors.push(new Color().fromArray(colors, i)); } } - function addFace( a, b, c, materialIndex ) { + function addFace(a, b, c, materialIndex) { - var vertexColors = ( colors === undefined ) ? [] : [ - scope.colors[ a ].clone(), - scope.colors[ b ].clone(), - scope.colors[ c ].clone() ]; + var vertexColors = (colors === undefined) ? [] : [ + scope.colors[a].clone(), + scope.colors[b].clone(), + scope.colors[c].clone()]; - var vertexNormals = ( normals === undefined ) ? [] : [ - new Vector3().fromArray( normals, a * 3 ), - new Vector3().fromArray( normals, b * 3 ), - new Vector3().fromArray( normals, c * 3 ) + var vertexNormals = (normals === undefined) ? [] : [ + new Vector3().fromArray(normals, a * 3), + new Vector3().fromArray(normals, b * 3), + new Vector3().fromArray(normals, c * 3) ]; - var face = new Face3( a, b, c, vertexNormals, vertexColors, materialIndex ); + var face = new Face3(a, b, c, vertexNormals, vertexColors, materialIndex); - scope.faces.push( face ); + scope.faces.push(face); - if ( uvs !== undefined ) { + if (uvs !== undefined) { - scope.faceVertexUvs[ 0 ].push( [ - new Vector2().fromArray( uvs, a * 2 ), - new Vector2().fromArray( uvs, b * 2 ), - new Vector2().fromArray( uvs, c * 2 ) - ] ); + scope.faceVertexUvs[0].push([ + new Vector2().fromArray(uvs, a * 2), + new Vector2().fromArray(uvs, b * 2), + new Vector2().fromArray(uvs, c * 2) + ]); } - if ( uvs2 !== undefined ) { + if (uvs2 !== undefined) { - scope.faceVertexUvs[ 1 ].push( [ - new Vector2().fromArray( uvs2, a * 2 ), - new Vector2().fromArray( uvs2, b * 2 ), - new Vector2().fromArray( uvs2, c * 2 ) - ] ); + scope.faceVertexUvs[1].push([ + new Vector2().fromArray(uvs2, a * 2), + new Vector2().fromArray(uvs2, b * 2), + new Vector2().fromArray(uvs2, c * 2) + ]); } @@ -9294,24 +9307,24 @@ var groups = geometry.groups; - if ( groups.length > 0 ) { + if (groups.length > 0) { - for ( var i = 0; i < groups.length; i ++ ) { + for (var i = 0; i < groups.length; i++) { - var group = groups[ i ]; + var group = groups[i]; var start = group.start; var count = group.count; - for ( var j = start, jl = start + count; j < jl; j += 3 ) { + for (var j = start, jl = start + count; j < jl; j += 3) { - if ( indices !== undefined ) { + if (indices !== undefined) { - addFace( indices[ j ], indices[ j + 1 ], indices[ j + 2 ], group.materialIndex ); + addFace(indices[j], indices[j + 1], indices[j + 2], group.materialIndex); } else { - addFace( j, j + 1, j + 2, group.materialIndex ); + addFace(j, j + 1, j + 2, group.materialIndex); } @@ -9321,19 +9334,19 @@ } else { - if ( indices !== undefined ) { + if (indices !== undefined) { - for ( var i = 0; i < indices.length; i += 3 ) { + for (var i = 0; i < indices.length; i += 3) { - addFace( indices[ i ], indices[ i + 1 ], indices[ i + 2 ] ); + addFace(indices[i], indices[i + 1], indices[i + 2]); } } else { - for ( var i = 0; i < positions.length / 3; i += 3 ) { + for (var i = 0; i < positions.length / 3; i += 3) { - addFace( i, i + 1, i + 2 ); + addFace(i, i + 1, i + 2); } @@ -9343,13 +9356,13 @@ this.computeFaceNormals(); - if ( geometry.boundingBox !== null ) { + if (geometry.boundingBox !== null) { this.boundingBox = geometry.boundingBox.clone(); } - if ( geometry.boundingSphere !== null ) { + if (geometry.boundingSphere !== null) { this.boundingSphere = geometry.boundingSphere.clone(); @@ -9367,9 +9380,9 @@ this.computeBoundingBox(); - this.boundingBox.getCenter( offset ).negate(); + this.boundingBox.getCenter(offset).negate(); - this.translate( offset.x, offset.y, offset.z ); + this.translate(offset.x, offset.y, offset.z); return this; @@ -9394,7 +9407,7 @@ 0, 0, 0, 1 ); - this.applyMatrix( matrix ); + this.applyMatrix(matrix); return this; @@ -9404,41 +9417,41 @@ var cb = new Vector3(), ab = new Vector3(); - for ( var f = 0, fl = this.faces.length; f < fl; f ++ ) { + for (var f = 0, fl = this.faces.length; f < fl; f++) { - var face = this.faces[ f ]; + var face = this.faces[f]; - var vA = this.vertices[ face.a ]; - var vB = this.vertices[ face.b ]; - var vC = this.vertices[ face.c ]; + var vA = this.vertices[face.a]; + var vB = this.vertices[face.b]; + var vC = this.vertices[face.c]; - cb.subVectors( vC, vB ); - ab.subVectors( vA, vB ); - cb.cross( ab ); + cb.subVectors(vC, vB); + ab.subVectors(vA, vB); + cb.cross(ab); cb.normalize(); - face.normal.copy( cb ); + face.normal.copy(cb); } }, - computeVertexNormals: function ( areaWeighted ) { + computeVertexNormals: function (areaWeighted) { - if ( areaWeighted === undefined ) areaWeighted = true; + if (areaWeighted === undefined) areaWeighted = true; var v, vl, f, fl, face, vertices; - vertices = new Array( this.vertices.length ); + vertices = new Array(this.vertices.length); - for ( v = 0, vl = this.vertices.length; v < vl; v ++ ) { + for (v = 0, vl = this.vertices.length; v < vl; v++) { - vertices[ v ] = new Vector3(); + vertices[v] = new Vector3(); } - if ( areaWeighted ) { + if (areaWeighted) { // vertex normals weighted by triangle areas // http://www.iquilezles.org/www/articles/normals/normals.htm @@ -9446,21 +9459,21 @@ var vA, vB, vC; var cb = new Vector3(), ab = new Vector3(); - for ( f = 0, fl = this.faces.length; f < fl; f ++ ) { + for (f = 0, fl = this.faces.length; f < fl; f++) { - face = this.faces[ f ]; + face = this.faces[f]; - vA = this.vertices[ face.a ]; - vB = this.vertices[ face.b ]; - vC = this.vertices[ face.c ]; + vA = this.vertices[face.a]; + vB = this.vertices[face.b]; + vC = this.vertices[face.c]; - cb.subVectors( vC, vB ); - ab.subVectors( vA, vB ); - cb.cross( ab ); + cb.subVectors(vC, vB); + ab.subVectors(vA, vB); + cb.cross(ab); - vertices[ face.a ].add( cb ); - vertices[ face.b ].add( cb ); - vertices[ face.c ].add( cb ); + vertices[face.a].add(cb); + vertices[face.b].add(cb); + vertices[face.c].add(cb); } @@ -9468,47 +9481,47 @@ this.computeFaceNormals(); - for ( f = 0, fl = this.faces.length; f < fl; f ++ ) { + for (f = 0, fl = this.faces.length; f < fl; f++) { - face = this.faces[ f ]; + face = this.faces[f]; - vertices[ face.a ].add( face.normal ); - vertices[ face.b ].add( face.normal ); - vertices[ face.c ].add( face.normal ); + vertices[face.a].add(face.normal); + vertices[face.b].add(face.normal); + vertices[face.c].add(face.normal); } } - for ( v = 0, vl = this.vertices.length; v < vl; v ++ ) { + for (v = 0, vl = this.vertices.length; v < vl; v++) { - vertices[ v ].normalize(); + vertices[v].normalize(); } - for ( f = 0, fl = this.faces.length; f < fl; f ++ ) { + for (f = 0, fl = this.faces.length; f < fl; f++) { - face = this.faces[ f ]; + face = this.faces[f]; var vertexNormals = face.vertexNormals; - if ( vertexNormals.length === 3 ) { + if (vertexNormals.length === 3) { - vertexNormals[ 0 ].copy( vertices[ face.a ] ); - vertexNormals[ 1 ].copy( vertices[ face.b ] ); - vertexNormals[ 2 ].copy( vertices[ face.c ] ); + vertexNormals[0].copy(vertices[face.a]); + vertexNormals[1].copy(vertices[face.b]); + vertexNormals[2].copy(vertices[face.c]); } else { - vertexNormals[ 0 ] = vertices[ face.a ].clone(); - vertexNormals[ 1 ] = vertices[ face.b ].clone(); - vertexNormals[ 2 ] = vertices[ face.c ].clone(); + vertexNormals[0] = vertices[face.a].clone(); + vertexNormals[1] = vertices[face.b].clone(); + vertexNormals[2] = vertices[face.c].clone(); } } - if ( this.faces.length > 0 ) { + if (this.faces.length > 0) { this.normalsNeedUpdate = true; @@ -9522,29 +9535,29 @@ this.computeFaceNormals(); - for ( f = 0, fl = this.faces.length; f < fl; f ++ ) { + for (f = 0, fl = this.faces.length; f < fl; f++) { - face = this.faces[ f ]; + face = this.faces[f]; var vertexNormals = face.vertexNormals; - if ( vertexNormals.length === 3 ) { + if (vertexNormals.length === 3) { - vertexNormals[ 0 ].copy( face.normal ); - vertexNormals[ 1 ].copy( face.normal ); - vertexNormals[ 2 ].copy( face.normal ); + vertexNormals[0].copy(face.normal); + vertexNormals[1].copy(face.normal); + vertexNormals[2].copy(face.normal); } else { - vertexNormals[ 0 ] = face.normal.clone(); - vertexNormals[ 1 ] = face.normal.clone(); - vertexNormals[ 2 ] = face.normal.clone(); + vertexNormals[0] = face.normal.clone(); + vertexNormals[1] = face.normal.clone(); + vertexNormals[2] = face.normal.clone(); } } - if ( this.faces.length > 0 ) { + if (this.faces.length > 0) { this.normalsNeedUpdate = true; @@ -9560,31 +9573,31 @@ // - create temp variables on first access // otherwise just copy (for faster repeated calls) - for ( f = 0, fl = this.faces.length; f < fl; f ++ ) { + for (f = 0, fl = this.faces.length; f < fl; f++) { - face = this.faces[ f ]; + face = this.faces[f]; - if ( ! face.__originalFaceNormal ) { + if (!face.__originalFaceNormal) { face.__originalFaceNormal = face.normal.clone(); } else { - face.__originalFaceNormal.copy( face.normal ); + face.__originalFaceNormal.copy(face.normal); } - if ( ! face.__originalVertexNormals ) face.__originalVertexNormals = []; + if (!face.__originalVertexNormals) face.__originalVertexNormals = []; - for ( i = 0, il = face.vertexNormals.length; i < il; i ++ ) { + for (i = 0, il = face.vertexNormals.length; i < il; i++) { - if ( ! face.__originalVertexNormals[ i ] ) { + if (!face.__originalVertexNormals[i]) { - face.__originalVertexNormals[ i ] = face.vertexNormals[ i ].clone(); + face.__originalVertexNormals[i] = face.vertexNormals[i].clone(); } else { - face.__originalVertexNormals[ i ].copy( face.vertexNormals[ i ] ); + face.__originalVertexNormals[i].copy(face.vertexNormals[i]); } @@ -9597,38 +9610,38 @@ var tmpGeo = new Geometry(); tmpGeo.faces = this.faces; - for ( i = 0, il = this.morphTargets.length; i < il; i ++ ) { + for (i = 0, il = this.morphTargets.length; i < il; i++) { // create on first access - if ( ! this.morphNormals[ i ] ) { + if (!this.morphNormals[i]) { - this.morphNormals[ i ] = {}; - this.morphNormals[ i ].faceNormals = []; - this.morphNormals[ i ].vertexNormals = []; + this.morphNormals[i] = {}; + this.morphNormals[i].faceNormals = []; + this.morphNormals[i].vertexNormals = []; - var dstNormalsFace = this.morphNormals[ i ].faceNormals; - var dstNormalsVertex = this.morphNormals[ i ].vertexNormals; + var dstNormalsFace = this.morphNormals[i].faceNormals; + var dstNormalsVertex = this.morphNormals[i].vertexNormals; var faceNormal, vertexNormals; - for ( f = 0, fl = this.faces.length; f < fl; f ++ ) { + for (f = 0, fl = this.faces.length; f < fl; f++) { faceNormal = new Vector3(); vertexNormals = { a: new Vector3(), b: new Vector3(), c: new Vector3() }; - dstNormalsFace.push( faceNormal ); - dstNormalsVertex.push( vertexNormals ); + dstNormalsFace.push(faceNormal); + dstNormalsVertex.push(vertexNormals); } } - var morphNormals = this.morphNormals[ i ]; + var morphNormals = this.morphNormals[i]; // set vertices to morph target - tmpGeo.vertices = this.morphTargets[ i ].vertices; + tmpGeo.vertices = this.morphTargets[i].vertices; // compute morph normals @@ -9639,18 +9652,18 @@ var faceNormal, vertexNormals; - for ( f = 0, fl = this.faces.length; f < fl; f ++ ) { + for (f = 0, fl = this.faces.length; f < fl; f++) { - face = this.faces[ f ]; + face = this.faces[f]; - faceNormal = morphNormals.faceNormals[ f ]; - vertexNormals = morphNormals.vertexNormals[ f ]; + faceNormal = morphNormals.faceNormals[f]; + vertexNormals = morphNormals.vertexNormals[f]; - faceNormal.copy( face.normal ); + faceNormal.copy(face.normal); - vertexNormals.a.copy( face.vertexNormals[ 0 ] ); - vertexNormals.b.copy( face.vertexNormals[ 1 ] ); - vertexNormals.c.copy( face.vertexNormals[ 2 ] ); + vertexNormals.a.copy(face.vertexNormals[0]); + vertexNormals.b.copy(face.vertexNormals[1]); + vertexNormals.c.copy(face.vertexNormals[2]); } @@ -9658,9 +9671,9 @@ // restore original normals - for ( f = 0, fl = this.faces.length; f < fl; f ++ ) { + for (f = 0, fl = this.faces.length; f < fl; f++) { - face = this.faces[ f ]; + face = this.faces[f]; face.normal = face.__originalFaceNormal; face.vertexNormals = face.__originalVertexNormals; @@ -9671,33 +9684,33 @@ computeBoundingBox: function () { - if ( this.boundingBox === null ) { + if (this.boundingBox === null) { this.boundingBox = new Box3(); } - this.boundingBox.setFromPoints( this.vertices ); + this.boundingBox.setFromPoints(this.vertices); }, computeBoundingSphere: function () { - if ( this.boundingSphere === null ) { + if (this.boundingSphere === null) { this.boundingSphere = new Sphere(); } - this.boundingSphere.setFromPoints( this.vertices ); + this.boundingSphere.setFromPoints(this.vertices); }, - merge: function ( geometry, matrix, materialIndexOffset ) { + merge: function (geometry, matrix, materialIndexOffset) { - if ( ! ( geometry && geometry.isGeometry ) ) { + if (!(geometry && geometry.isGeometry)) { - console.error( 'THREE.Geometry.merge(): geometry not an instance of THREE.Geometry.', geometry ); + console.error('THREE.Geometry.merge(): geometry not an instance of THREE.Geometry.', geometry); return; } @@ -9708,123 +9721,123 @@ vertices2 = geometry.vertices, faces1 = this.faces, faces2 = geometry.faces, - uvs1 = this.faceVertexUvs[ 0 ], - uvs2 = geometry.faceVertexUvs[ 0 ], + uvs1 = this.faceVertexUvs[0], + uvs2 = geometry.faceVertexUvs[0], colors1 = this.colors, colors2 = geometry.colors; - if ( materialIndexOffset === undefined ) materialIndexOffset = 0; + if (materialIndexOffset === undefined) materialIndexOffset = 0; - if ( matrix !== undefined ) { + if (matrix !== undefined) { - normalMatrix = new Matrix3().getNormalMatrix( matrix ); + normalMatrix = new Matrix3().getNormalMatrix(matrix); } // vertices - for ( var i = 0, il = vertices2.length; i < il; i ++ ) { + for (var i = 0, il = vertices2.length; i < il; i++) { - var vertex = vertices2[ i ]; + var vertex = vertices2[i]; var vertexCopy = vertex.clone(); - if ( matrix !== undefined ) vertexCopy.applyMatrix4( matrix ); + if (matrix !== undefined) vertexCopy.applyMatrix4(matrix); - vertices1.push( vertexCopy ); + vertices1.push(vertexCopy); } // colors - for ( var i = 0, il = colors2.length; i < il; i ++ ) { + for (var i = 0, il = colors2.length; i < il; i++) { - colors1.push( colors2[ i ].clone() ); + colors1.push(colors2[i].clone()); } // faces - for ( i = 0, il = faces2.length; i < il; i ++ ) { + for (i = 0, il = faces2.length; i < il; i++) { - var face = faces2[ i ], faceCopy, normal, color, + var face = faces2[i], faceCopy, normal, color, faceVertexNormals = face.vertexNormals, faceVertexColors = face.vertexColors; - faceCopy = new Face3( face.a + vertexOffset, face.b + vertexOffset, face.c + vertexOffset ); - faceCopy.normal.copy( face.normal ); + faceCopy = new Face3(face.a + vertexOffset, face.b + vertexOffset, face.c + vertexOffset); + faceCopy.normal.copy(face.normal); - if ( normalMatrix !== undefined ) { + if (normalMatrix !== undefined) { - faceCopy.normal.applyMatrix3( normalMatrix ).normalize(); + faceCopy.normal.applyMatrix3(normalMatrix).normalize(); } - for ( var j = 0, jl = faceVertexNormals.length; j < jl; j ++ ) { + for (var j = 0, jl = faceVertexNormals.length; j < jl; j++) { - normal = faceVertexNormals[ j ].clone(); + normal = faceVertexNormals[j].clone(); - if ( normalMatrix !== undefined ) { + if (normalMatrix !== undefined) { - normal.applyMatrix3( normalMatrix ).normalize(); + normal.applyMatrix3(normalMatrix).normalize(); } - faceCopy.vertexNormals.push( normal ); + faceCopy.vertexNormals.push(normal); } - faceCopy.color.copy( face.color ); + faceCopy.color.copy(face.color); - for ( var j = 0, jl = faceVertexColors.length; j < jl; j ++ ) { + for (var j = 0, jl = faceVertexColors.length; j < jl; j++) { - color = faceVertexColors[ j ]; - faceCopy.vertexColors.push( color.clone() ); + color = faceVertexColors[j]; + faceCopy.vertexColors.push(color.clone()); } faceCopy.materialIndex = face.materialIndex + materialIndexOffset; - faces1.push( faceCopy ); + faces1.push(faceCopy); } // uvs - for ( i = 0, il = uvs2.length; i < il; i ++ ) { + for (i = 0, il = uvs2.length; i < il; i++) { - var uv = uvs2[ i ], uvCopy = []; + var uv = uvs2[i], uvCopy = []; - if ( uv === undefined ) { + if (uv === undefined) { continue; } - for ( var j = 0, jl = uv.length; j < jl; j ++ ) { + for (var j = 0, jl = uv.length; j < jl; j++) { - uvCopy.push( uv[ j ].clone() ); + uvCopy.push(uv[j].clone()); } - uvs1.push( uvCopy ); + uvs1.push(uvCopy); } }, - mergeMesh: function ( mesh ) { + mergeMesh: function (mesh) { - if ( ! ( mesh && mesh.isMesh ) ) { + if (!(mesh && mesh.isMesh)) { - console.error( 'THREE.Geometry.mergeMesh(): mesh not an instance of THREE.Mesh.', mesh ); + console.error('THREE.Geometry.mergeMesh(): mesh not an instance of THREE.Mesh.', mesh); return; } - if ( mesh.matrixAutoUpdate ) mesh.updateMatrix(); + if (mesh.matrixAutoUpdate) mesh.updateMatrix(); - this.merge( mesh.geometry, mesh.matrix ); + this.merge(mesh.geometry, mesh.matrix); }, @@ -9841,25 +9854,25 @@ var v, key; var precisionPoints = 4; // number of decimal points, e.g. 4 for epsilon of 0.0001 - var precision = Math.pow( 10, precisionPoints ); + var precision = Math.pow(10, precisionPoints); var i, il, face; var indices, j, jl; - for ( i = 0, il = this.vertices.length; i < il; i ++ ) { + for (i = 0, il = this.vertices.length; i < il; i++) { - v = this.vertices[ i ]; - key = Math.round( v.x * precision ) + '_' + Math.round( v.y * precision ) + '_' + Math.round( v.z * precision ); + v = this.vertices[i]; + key = Math.round(v.x * precision) + '_' + Math.round(v.y * precision) + '_' + Math.round(v.z * precision); - if ( verticesMap[ key ] === undefined ) { + if (verticesMap[key] === undefined) { - verticesMap[ key ] = i; - unique.push( this.vertices[ i ] ); - changes[ i ] = unique.length - 1; + verticesMap[key] = i; + unique.push(this.vertices[i]); + changes[i] = unique.length - 1; } else { //console.log('Duplicate vertex found. ', i, ' could be using ', verticesMap[key]); - changes[ i ] = changes[ verticesMap[ key ] ]; + changes[i] = changes[verticesMap[key]]; } @@ -9870,23 +9883,23 @@ // have to remove them from the geometry. var faceIndicesToRemove = []; - for ( i = 0, il = this.faces.length; i < il; i ++ ) { + for (i = 0, il = this.faces.length; i < il; i++) { - face = this.faces[ i ]; + face = this.faces[i]; - face.a = changes[ face.a ]; - face.b = changes[ face.b ]; - face.c = changes[ face.c ]; + face.a = changes[face.a]; + face.b = changes[face.b]; + face.c = changes[face.c]; - indices = [ face.a, face.b, face.c ]; + indices = [face.a, face.b, face.c]; // if any duplicate vertices are found in a Face3 // we have to remove the face as nothing can be saved - for ( var n = 0; n < 3; n ++ ) { + for (var n = 0; n < 3; n++) { - if ( indices[ n ] === indices[ ( n + 1 ) % 3 ] ) { + if (indices[n] === indices[(n + 1) % 3]) { - faceIndicesToRemove.push( i ); + faceIndicesToRemove.push(i); break; } @@ -9895,15 +9908,15 @@ } - for ( i = faceIndicesToRemove.length - 1; i >= 0; i -- ) { + for (i = faceIndicesToRemove.length - 1; i >= 0; i--) { - var idx = faceIndicesToRemove[ i ]; + var idx = faceIndicesToRemove[i]; - this.faces.splice( idx, 1 ); + this.faces.splice(idx, 1); - for ( j = 0, jl = this.faceVertexUvs.length; j < jl; j ++ ) { + for (j = 0, jl = this.faceVertexUvs.length; j < jl; j++) { - this.faceVertexUvs[ j ].splice( idx, 1 ); + this.faceVertexUvs[j].splice(idx, 1); } @@ -9917,14 +9930,14 @@ }, - setFromPoints: function ( points ) { + setFromPoints: function (points) { this.vertices = []; - for ( var i = 0, l = points.length; i < l; i ++ ) { + for (var i = 0, l = points.length; i < l; i++) { - var point = points[ i ]; - this.vertices.push( new Vector3( point.x, point.y, point.z || 0 ) ); + var point = points[i]; + this.vertices.push(new Vector3(point.x, point.y, point.z || 0)); } @@ -9939,43 +9952,43 @@ // tag faces - for ( var i = 0; i < length; i ++ ) { + for (var i = 0; i < length; i++) { - faces[ i ]._id = i; + faces[i]._id = i; } // sort faces - function materialIndexSort( a, b ) { + function materialIndexSort(a, b) { return a.materialIndex - b.materialIndex; } - faces.sort( materialIndexSort ); + faces.sort(materialIndexSort); // sort uvs - var uvs1 = this.faceVertexUvs[ 0 ]; - var uvs2 = this.faceVertexUvs[ 1 ]; + var uvs1 = this.faceVertexUvs[0]; + var uvs2 = this.faceVertexUvs[1]; var newUvs1, newUvs2; - if ( uvs1 && uvs1.length === length ) newUvs1 = []; - if ( uvs2 && uvs2.length === length ) newUvs2 = []; + if (uvs1 && uvs1.length === length) newUvs1 = []; + if (uvs2 && uvs2.length === length) newUvs2 = []; - for ( var i = 0; i < length; i ++ ) { + for (var i = 0; i < length; i++) { - var id = faces[ i ]._id; + var id = faces[i]._id; - if ( newUvs1 ) newUvs1.push( uvs1[ id ] ); - if ( newUvs2 ) newUvs2.push( uvs2[ id ] ); + if (newUvs1) newUvs1.push(uvs1[id]); + if (newUvs2) newUvs2.push(uvs2[id]); } - if ( newUvs1 ) this.faceVertexUvs[ 0 ] = newUvs1; - if ( newUvs2 ) this.faceVertexUvs[ 1 ] = newUvs2; + if (newUvs1) this.faceVertexUvs[0] = newUvs1; + if (newUvs2) this.faceVertexUvs[1] = newUvs2; }, @@ -9993,15 +10006,15 @@ data.uuid = this.uuid; data.type = this.type; - if ( this.name !== '' ) data.name = this.name; + if (this.name !== '') data.name = this.name; - if ( this.parameters !== undefined ) { + if (this.parameters !== undefined) { var parameters = this.parameters; - for ( var key in parameters ) { + for (var key in parameters) { - if ( parameters[ key ] !== undefined ) data[ key ] = parameters[ key ]; + if (parameters[key] !== undefined) data[key] = parameters[key]; } @@ -10011,10 +10024,10 @@ var vertices = []; - for ( var i = 0; i < this.vertices.length; i ++ ) { + for (var i = 0; i < this.vertices.length; i++) { - var vertex = this.vertices[ i ]; - vertices.push( vertex.x, vertex.y, vertex.z ); + var vertex = this.vertices[i]; + vertices.push(vertex.x, vertex.y, vertex.z); } @@ -10026,13 +10039,13 @@ var uvs = []; var uvsHash = {}; - for ( var i = 0; i < this.faces.length; i ++ ) { + for (var i = 0; i < this.faces.length; i++) { - var face = this.faces[ i ]; + var face = this.faces[i]; var hasMaterial = true; var hasFaceUv = false; // deprecated - var hasFaceVertexUv = this.faceVertexUvs[ 0 ][ i ] !== undefined; + var hasFaceVertexUv = this.faceVertexUvs[0][i] !== undefined; var hasFaceNormal = face.normal.length() > 0; var hasFaceVertexNormal = face.vertexNormals.length > 0; var hasFaceColor = face.color.r !== 1 || face.color.g !== 1 || face.color.b !== 1; @@ -10040,123 +10053,123 @@ var faceType = 0; - faceType = setBit( faceType, 0, 0 ); // isQuad - faceType = setBit( faceType, 1, hasMaterial ); - faceType = setBit( faceType, 2, hasFaceUv ); - faceType = setBit( faceType, 3, hasFaceVertexUv ); - faceType = setBit( faceType, 4, hasFaceNormal ); - faceType = setBit( faceType, 5, hasFaceVertexNormal ); - faceType = setBit( faceType, 6, hasFaceColor ); - faceType = setBit( faceType, 7, hasFaceVertexColor ); + faceType = setBit(faceType, 0, 0); // isQuad + faceType = setBit(faceType, 1, hasMaterial); + faceType = setBit(faceType, 2, hasFaceUv); + faceType = setBit(faceType, 3, hasFaceVertexUv); + faceType = setBit(faceType, 4, hasFaceNormal); + faceType = setBit(faceType, 5, hasFaceVertexNormal); + faceType = setBit(faceType, 6, hasFaceColor); + faceType = setBit(faceType, 7, hasFaceVertexColor); - faces.push( faceType ); - faces.push( face.a, face.b, face.c ); - faces.push( face.materialIndex ); + faces.push(faceType); + faces.push(face.a, face.b, face.c); + faces.push(face.materialIndex); - if ( hasFaceVertexUv ) { + if (hasFaceVertexUv) { - var faceVertexUvs = this.faceVertexUvs[ 0 ][ i ]; + var faceVertexUvs = this.faceVertexUvs[0][i]; faces.push( - getUvIndex( faceVertexUvs[ 0 ] ), - getUvIndex( faceVertexUvs[ 1 ] ), - getUvIndex( faceVertexUvs[ 2 ] ) + getUvIndex(faceVertexUvs[0]), + getUvIndex(faceVertexUvs[1]), + getUvIndex(faceVertexUvs[2]) ); } - if ( hasFaceNormal ) { + if (hasFaceNormal) { - faces.push( getNormalIndex( face.normal ) ); + faces.push(getNormalIndex(face.normal)); } - if ( hasFaceVertexNormal ) { + if (hasFaceVertexNormal) { var vertexNormals = face.vertexNormals; faces.push( - getNormalIndex( vertexNormals[ 0 ] ), - getNormalIndex( vertexNormals[ 1 ] ), - getNormalIndex( vertexNormals[ 2 ] ) + getNormalIndex(vertexNormals[0]), + getNormalIndex(vertexNormals[1]), + getNormalIndex(vertexNormals[2]) ); } - if ( hasFaceColor ) { + if (hasFaceColor) { - faces.push( getColorIndex( face.color ) ); + faces.push(getColorIndex(face.color)); } - if ( hasFaceVertexColor ) { + if (hasFaceVertexColor) { var vertexColors = face.vertexColors; faces.push( - getColorIndex( vertexColors[ 0 ] ), - getColorIndex( vertexColors[ 1 ] ), - getColorIndex( vertexColors[ 2 ] ) + getColorIndex(vertexColors[0]), + getColorIndex(vertexColors[1]), + getColorIndex(vertexColors[2]) ); } } - function setBit( value, position, enabled ) { + function setBit(value, position, enabled) { - return enabled ? value | ( 1 << position ) : value & ( ~ ( 1 << position ) ); + return enabled ? value | (1 << position) : value & (~(1 << position)); } - function getNormalIndex( normal ) { + function getNormalIndex(normal) { var hash = normal.x.toString() + normal.y.toString() + normal.z.toString(); - if ( normalsHash[ hash ] !== undefined ) { + if (normalsHash[hash] !== undefined) { - return normalsHash[ hash ]; + return normalsHash[hash]; } - normalsHash[ hash ] = normals.length / 3; - normals.push( normal.x, normal.y, normal.z ); + normalsHash[hash] = normals.length / 3; + normals.push(normal.x, normal.y, normal.z); - return normalsHash[ hash ]; + return normalsHash[hash]; } - function getColorIndex( color ) { + function getColorIndex(color) { var hash = color.r.toString() + color.g.toString() + color.b.toString(); - if ( colorsHash[ hash ] !== undefined ) { + if (colorsHash[hash] !== undefined) { - return colorsHash[ hash ]; + return colorsHash[hash]; } - colorsHash[ hash ] = colors.length; - colors.push( color.getHex() ); + colorsHash[hash] = colors.length; + colors.push(color.getHex()); - return colorsHash[ hash ]; + return colorsHash[hash]; } - function getUvIndex( uv ) { + function getUvIndex(uv) { var hash = uv.x.toString() + uv.y.toString(); - if ( uvsHash[ hash ] !== undefined ) { + if (uvsHash[hash] !== undefined) { - return uvsHash[ hash ]; + return uvsHash[hash]; } - uvsHash[ hash ] = uvs.length / 2; - uvs.push( uv.x, uv.y ); + uvsHash[hash] = uvs.length / 2; + uvs.push(uv.x, uv.y); - return uvsHash[ hash ]; + return uvsHash[hash]; } @@ -10164,8 +10177,8 @@ data.data.vertices = vertices; data.data.normals = normals; - if ( colors.length > 0 ) data.data.colors = colors; - if ( uvs.length > 0 ) data.data.uvs = [ uvs ]; // temporal backward compatibility + if (colors.length > 0) data.data.colors = colors; + if (uvs.length > 0) data.data.uvs = [uvs]; // temporal backward compatibility data.data.faces = faces; return data; @@ -10198,11 +10211,11 @@ return new this.constructor().copy( this ); */ - return new Geometry().copy( this ); + return new Geometry().copy(this); }, - copy: function ( source ) { + copy: function (source) { var i, il, j, jl, k, kl; @@ -10228,9 +10241,9 @@ var vertices = source.vertices; - for ( i = 0, il = vertices.length; i < il; i ++ ) { + for (i = 0, il = vertices.length; i < il; i++) { - this.vertices.push( vertices[ i ].clone() ); + this.vertices.push(vertices[i].clone()); } @@ -10238,9 +10251,9 @@ var colors = source.colors; - for ( i = 0, il = colors.length; i < il; i ++ ) { + for (i = 0, il = colors.length; i < il; i++) { - this.colors.push( colors[ i ].clone() ); + this.colors.push(colors[i].clone()); } @@ -10248,37 +10261,37 @@ var faces = source.faces; - for ( i = 0, il = faces.length; i < il; i ++ ) { + for (i = 0, il = faces.length; i < il; i++) { - this.faces.push( faces[ i ].clone() ); + this.faces.push(faces[i].clone()); } // face vertex uvs - for ( i = 0, il = source.faceVertexUvs.length; i < il; i ++ ) { + for (i = 0, il = source.faceVertexUvs.length; i < il; i++) { - var faceVertexUvs = source.faceVertexUvs[ i ]; + var faceVertexUvs = source.faceVertexUvs[i]; - if ( this.faceVertexUvs[ i ] === undefined ) { + if (this.faceVertexUvs[i] === undefined) { - this.faceVertexUvs[ i ] = []; + this.faceVertexUvs[i] = []; } - for ( j = 0, jl = faceVertexUvs.length; j < jl; j ++ ) { + for (j = 0, jl = faceVertexUvs.length; j < jl; j++) { - var uvs = faceVertexUvs[ j ], uvsCopy = []; + var uvs = faceVertexUvs[j], uvsCopy = []; - for ( k = 0, kl = uvs.length; k < kl; k ++ ) { + for (k = 0, kl = uvs.length; k < kl; k++) { - var uv = uvs[ k ]; + var uv = uvs[k]; - uvsCopy.push( uv.clone() ); + uvsCopy.push(uv.clone()); } - this.faceVertexUvs[ i ].push( uvsCopy ); + this.faceVertexUvs[i].push(uvsCopy); } @@ -10288,20 +10301,20 @@ var morphTargets = source.morphTargets; - for ( i = 0, il = morphTargets.length; i < il; i ++ ) { + for (i = 0, il = morphTargets.length; i < il; i++) { var morphTarget = {}; - morphTarget.name = morphTargets[ i ].name; + morphTarget.name = morphTargets[i].name; // vertices - if ( morphTargets[ i ].vertices !== undefined ) { + if (morphTargets[i].vertices !== undefined) { morphTarget.vertices = []; - for ( j = 0, jl = morphTargets[ i ].vertices.length; j < jl; j ++ ) { + for (j = 0, jl = morphTargets[i].vertices.length; j < jl; j++) { - morphTarget.vertices.push( morphTargets[ i ].vertices[ j ].clone() ); + morphTarget.vertices.push(morphTargets[i].vertices[j].clone()); } @@ -10309,19 +10322,19 @@ // normals - if ( morphTargets[ i ].normals !== undefined ) { + if (morphTargets[i].normals !== undefined) { morphTarget.normals = []; - for ( j = 0, jl = morphTargets[ i ].normals.length; j < jl; j ++ ) { + for (j = 0, jl = morphTargets[i].normals.length; j < jl; j++) { - morphTarget.normals.push( morphTargets[ i ].normals[ j ].clone() ); + morphTarget.normals.push(morphTargets[i].normals[j].clone()); } } - this.morphTargets.push( morphTarget ); + this.morphTargets.push(morphTarget); } @@ -10329,26 +10342,26 @@ var morphNormals = source.morphNormals; - for ( i = 0, il = morphNormals.length; i < il; i ++ ) { + for (i = 0, il = morphNormals.length; i < il; i++) { var morphNormal = {}; // vertex normals - if ( morphNormals[ i ].vertexNormals !== undefined ) { + if (morphNormals[i].vertexNormals !== undefined) { morphNormal.vertexNormals = []; - for ( j = 0, jl = morphNormals[ i ].vertexNormals.length; j < jl; j ++ ) { + for (j = 0, jl = morphNormals[i].vertexNormals.length; j < jl; j++) { - var srcVertexNormal = morphNormals[ i ].vertexNormals[ j ]; + var srcVertexNormal = morphNormals[i].vertexNormals[j]; var destVertexNormal = {}; destVertexNormal.a = srcVertexNormal.a.clone(); destVertexNormal.b = srcVertexNormal.b.clone(); destVertexNormal.c = srcVertexNormal.c.clone(); - morphNormal.vertexNormals.push( destVertexNormal ); + morphNormal.vertexNormals.push(destVertexNormal); } @@ -10356,19 +10369,19 @@ // face normals - if ( morphNormals[ i ].faceNormals !== undefined ) { + if (morphNormals[i].faceNormals !== undefined) { morphNormal.faceNormals = []; - for ( j = 0, jl = morphNormals[ i ].faceNormals.length; j < jl; j ++ ) { + for (j = 0, jl = morphNormals[i].faceNormals.length; j < jl; j++) { - morphNormal.faceNormals.push( morphNormals[ i ].faceNormals[ j ].clone() ); + morphNormal.faceNormals.push(morphNormals[i].faceNormals[j].clone()); } } - this.morphNormals.push( morphNormal ); + this.morphNormals.push(morphNormal); } @@ -10376,9 +10389,9 @@ var skinWeights = source.skinWeights; - for ( i = 0, il = skinWeights.length; i < il; i ++ ) { + for (i = 0, il = skinWeights.length; i < il; i++) { - this.skinWeights.push( skinWeights[ i ].clone() ); + this.skinWeights.push(skinWeights[i].clone()); } @@ -10386,9 +10399,9 @@ var skinIndices = source.skinIndices; - for ( i = 0, il = skinIndices.length; i < il; i ++ ) { + for (i = 0, il = skinIndices.length; i < il; i++) { - this.skinIndices.push( skinIndices[ i ].clone() ); + this.skinIndices.push(skinIndices[i].clone()); } @@ -10396,9 +10409,9 @@ var lineDistances = source.lineDistances; - for ( i = 0, il = lineDistances.length; i < il; i ++ ) { + for (i = 0, il = lineDistances.length; i < il; i++) { - this.lineDistances.push( lineDistances[ i ] ); + this.lineDistances.push(lineDistances[i]); } @@ -10406,7 +10419,7 @@ var boundingBox = source.boundingBox; - if ( boundingBox !== null ) { + if (boundingBox !== null) { this.boundingBox = boundingBox.clone(); @@ -10416,7 +10429,7 @@ var boundingSphere = source.boundingSphere; - if ( boundingSphere !== null ) { + if (boundingSphere !== null) { this.boundingSphere = boundingSphere.clone(); @@ -10438,21 +10451,21 @@ dispose: function () { - this.dispatchEvent( { type: 'dispose' } ); + this.dispatchEvent({ type: 'dispose' }); } - } ); + }); /** * @author mrdoob / http://mrdoob.com/ */ - function BufferAttribute( array, itemSize, normalized ) { + function BufferAttribute(array, itemSize, normalized) { - if ( Array.isArray( array ) ) { + if (Array.isArray(array)) { - throw new TypeError( 'THREE.BufferAttribute: array should be a Typed Array.' ); + throw new TypeError('THREE.BufferAttribute: array should be a Typed Array.'); } @@ -10470,27 +10483,27 @@ } - Object.defineProperty( BufferAttribute.prototype, 'needsUpdate', { + Object.defineProperty(BufferAttribute.prototype, 'needsUpdate', { - set: function ( value ) { + set: function (value) { - if ( value === true ) this.version ++; + if (value === true) this.version++; } - } ); + }); - Object.assign( BufferAttribute.prototype, { + Object.assign(BufferAttribute.prototype, { isBufferAttribute: true, - onUploadCallback: function () {}, + onUploadCallback: function () { }, - setArray: function ( array ) { + setArray: function (array) { - if ( Array.isArray( array ) ) { + if (Array.isArray(array)) { - throw new TypeError( 'THREE.BufferAttribute: array should be a Typed Array.' ); + throw new TypeError('THREE.BufferAttribute: array should be a Typed Array.'); } @@ -10501,7 +10514,7 @@ }, - setDynamic: function ( value ) { + setDynamic: function (value) { this.dynamic = value; @@ -10509,10 +10522,10 @@ }, - copy: function ( source ) { + copy: function (source) { this.name = source.name; - this.array = new source.array.constructor( source.array ); + this.array = new source.array.constructor(source.array); this.itemSize = source.itemSize; this.count = source.count; this.normalized = source.normalized; @@ -10523,14 +10536,14 @@ }, - copyAt: function ( index1, attribute, index2 ) { + copyAt: function (index1, attribute, index2) { index1 *= this.itemSize; index2 *= attribute.itemSize; - for ( var i = 0, l = this.itemSize; i < l; i ++ ) { + for (var i = 0, l = this.itemSize; i < l; i++) { - this.array[ index1 + i ] = attribute.array[ index2 + i ]; + this.array[index1 + i] = attribute.array[index2 + i]; } @@ -10538,32 +10551,32 @@ }, - copyArray: function ( array ) { + copyArray: function (array) { - this.array.set( array ); + this.array.set(array); return this; }, - copyColorsArray: function ( colors ) { + copyColorsArray: function (colors) { var array = this.array, offset = 0; - for ( var i = 0, l = colors.length; i < l; i ++ ) { + for (var i = 0, l = colors.length; i < l; i++) { - var color = colors[ i ]; + var color = colors[i]; - if ( color === undefined ) { + if (color === undefined) { - console.warn( 'THREE.BufferAttribute.copyColorsArray(): color is undefined', i ); + console.warn('THREE.BufferAttribute.copyColorsArray(): color is undefined', i); color = new Color(); } - array[ offset ++ ] = color.r; - array[ offset ++ ] = color.g; - array[ offset ++ ] = color.b; + array[offset++] = color.r; + array[offset++] = color.g; + array[offset++] = color.b; } @@ -10571,23 +10584,23 @@ }, - copyVector2sArray: function ( vectors ) { + copyVector2sArray: function (vectors) { var array = this.array, offset = 0; - for ( var i = 0, l = vectors.length; i < l; i ++ ) { + for (var i = 0, l = vectors.length; i < l; i++) { - var vector = vectors[ i ]; + var vector = vectors[i]; - if ( vector === undefined ) { + if (vector === undefined) { - console.warn( 'THREE.BufferAttribute.copyVector2sArray(): vector is undefined', i ); + console.warn('THREE.BufferAttribute.copyVector2sArray(): vector is undefined', i); vector = new Vector2(); } - array[ offset ++ ] = vector.x; - array[ offset ++ ] = vector.y; + array[offset++] = vector.x; + array[offset++] = vector.y; } @@ -10595,24 +10608,24 @@ }, - copyVector3sArray: function ( vectors ) { + copyVector3sArray: function (vectors) { var array = this.array, offset = 0; - for ( var i = 0, l = vectors.length; i < l; i ++ ) { + for (var i = 0, l = vectors.length; i < l; i++) { - var vector = vectors[ i ]; + var vector = vectors[i]; - if ( vector === undefined ) { + if (vector === undefined) { - console.warn( 'THREE.BufferAttribute.copyVector3sArray(): vector is undefined', i ); + console.warn('THREE.BufferAttribute.copyVector3sArray(): vector is undefined', i); vector = new Vector3(); } - array[ offset ++ ] = vector.x; - array[ offset ++ ] = vector.y; - array[ offset ++ ] = vector.z; + array[offset++] = vector.x; + array[offset++] = vector.y; + array[offset++] = vector.z; } @@ -10620,25 +10633,25 @@ }, - copyVector4sArray: function ( vectors ) { + copyVector4sArray: function (vectors) { var array = this.array, offset = 0; - for ( var i = 0, l = vectors.length; i < l; i ++ ) { + for (var i = 0, l = vectors.length; i < l; i++) { - var vector = vectors[ i ]; + var vector = vectors[i]; - if ( vector === undefined ) { + if (vector === undefined) { - console.warn( 'THREE.BufferAttribute.copyVector4sArray(): vector is undefined', i ); + console.warn('THREE.BufferAttribute.copyVector4sArray(): vector is undefined', i); vector = new Vector4(); } - array[ offset ++ ] = vector.x; - array[ offset ++ ] = vector.y; - array[ offset ++ ] = vector.z; - array[ offset ++ ] = vector.w; + array[offset++] = vector.x; + array[offset++] = vector.y; + array[offset++] = vector.z; + array[offset++] = vector.w; } @@ -10646,109 +10659,109 @@ }, - set: function ( value, offset ) { + set: function (value, offset) { - if ( offset === undefined ) offset = 0; + if (offset === undefined) offset = 0; - this.array.set( value, offset ); + this.array.set(value, offset); return this; }, - getX: function ( index ) { + getX: function (index) { - return this.array[ index * this.itemSize ]; + return this.array[index * this.itemSize]; }, - setX: function ( index, x ) { + setX: function (index, x) { - this.array[ index * this.itemSize ] = x; + this.array[index * this.itemSize] = x; return this; }, - getY: function ( index ) { + getY: function (index) { - return this.array[ index * this.itemSize + 1 ]; + return this.array[index * this.itemSize + 1]; }, - setY: function ( index, y ) { + setY: function (index, y) { - this.array[ index * this.itemSize + 1 ] = y; + this.array[index * this.itemSize + 1] = y; return this; }, - getZ: function ( index ) { + getZ: function (index) { - return this.array[ index * this.itemSize + 2 ]; + return this.array[index * this.itemSize + 2]; }, - setZ: function ( index, z ) { + setZ: function (index, z) { - this.array[ index * this.itemSize + 2 ] = z; + this.array[index * this.itemSize + 2] = z; return this; }, - getW: function ( index ) { + getW: function (index) { - return this.array[ index * this.itemSize + 3 ]; + return this.array[index * this.itemSize + 3]; }, - setW: function ( index, w ) { + setW: function (index, w) { - this.array[ index * this.itemSize + 3 ] = w; + this.array[index * this.itemSize + 3] = w; return this; }, - setXY: function ( index, x, y ) { + setXY: function (index, x, y) { index *= this.itemSize; - this.array[ index + 0 ] = x; - this.array[ index + 1 ] = y; + this.array[index + 0] = x; + this.array[index + 1] = y; return this; }, - setXYZ: function ( index, x, y, z ) { + setXYZ: function (index, x, y, z) { index *= this.itemSize; - this.array[ index + 0 ] = x; - this.array[ index + 1 ] = y; - this.array[ index + 2 ] = z; + this.array[index + 0] = x; + this.array[index + 1] = y; + this.array[index + 2] = z; return this; }, - setXYZW: function ( index, x, y, z, w ) { + setXYZW: function (index, x, y, z, w) { index *= this.itemSize; - this.array[ index + 0 ] = x; - this.array[ index + 1 ] = y; - this.array[ index + 2 ] = z; - this.array[ index + 3 ] = w; + this.array[index + 0] = x; + this.array[index + 1] = y; + this.array[index + 2] = z; + this.array[index + 3] = w; return this; }, - onUpload: function ( callback ) { + onUpload: function (callback) { this.onUploadCallback = callback; @@ -10758,101 +10771,101 @@ clone: function () { - return new this.constructor( this.array, this.itemSize ).copy( this ); + return new this.constructor(this.array, this.itemSize).copy(this); } - } ); + }); // - function Int8BufferAttribute( array, itemSize, normalized ) { + function Int8BufferAttribute(array, itemSize, normalized) { - BufferAttribute.call( this, new Int8Array( array ), itemSize, normalized ); + BufferAttribute.call(this, new Int8Array(array), itemSize, normalized); } - Int8BufferAttribute.prototype = Object.create( BufferAttribute.prototype ); + Int8BufferAttribute.prototype = Object.create(BufferAttribute.prototype); Int8BufferAttribute.prototype.constructor = Int8BufferAttribute; - function Uint8BufferAttribute( array, itemSize, normalized ) { + function Uint8BufferAttribute(array, itemSize, normalized) { - BufferAttribute.call( this, new Uint8Array( array ), itemSize, normalized ); + BufferAttribute.call(this, new Uint8Array(array), itemSize, normalized); } - Uint8BufferAttribute.prototype = Object.create( BufferAttribute.prototype ); + Uint8BufferAttribute.prototype = Object.create(BufferAttribute.prototype); Uint8BufferAttribute.prototype.constructor = Uint8BufferAttribute; - function Uint8ClampedBufferAttribute( array, itemSize, normalized ) { + function Uint8ClampedBufferAttribute(array, itemSize, normalized) { - BufferAttribute.call( this, new Uint8ClampedArray( array ), itemSize, normalized ); + BufferAttribute.call(this, new Uint8ClampedArray(array), itemSize, normalized); } - Uint8ClampedBufferAttribute.prototype = Object.create( BufferAttribute.prototype ); + Uint8ClampedBufferAttribute.prototype = Object.create(BufferAttribute.prototype); Uint8ClampedBufferAttribute.prototype.constructor = Uint8ClampedBufferAttribute; - function Int16BufferAttribute( array, itemSize, normalized ) { + function Int16BufferAttribute(array, itemSize, normalized) { - BufferAttribute.call( this, new Int16Array( array ), itemSize, normalized ); + BufferAttribute.call(this, new Int16Array(array), itemSize, normalized); } - Int16BufferAttribute.prototype = Object.create( BufferAttribute.prototype ); + Int16BufferAttribute.prototype = Object.create(BufferAttribute.prototype); Int16BufferAttribute.prototype.constructor = Int16BufferAttribute; - function Uint16BufferAttribute( array, itemSize, normalized ) { + function Uint16BufferAttribute(array, itemSize, normalized) { - BufferAttribute.call( this, new Uint16Array( array ), itemSize, normalized ); + BufferAttribute.call(this, new Uint16Array(array), itemSize, normalized); } - Uint16BufferAttribute.prototype = Object.create( BufferAttribute.prototype ); + Uint16BufferAttribute.prototype = Object.create(BufferAttribute.prototype); Uint16BufferAttribute.prototype.constructor = Uint16BufferAttribute; - function Int32BufferAttribute( array, itemSize, normalized ) { + function Int32BufferAttribute(array, itemSize, normalized) { - BufferAttribute.call( this, new Int32Array( array ), itemSize, normalized ); + BufferAttribute.call(this, new Int32Array(array), itemSize, normalized); } - Int32BufferAttribute.prototype = Object.create( BufferAttribute.prototype ); + Int32BufferAttribute.prototype = Object.create(BufferAttribute.prototype); Int32BufferAttribute.prototype.constructor = Int32BufferAttribute; - function Uint32BufferAttribute( array, itemSize, normalized ) { + function Uint32BufferAttribute(array, itemSize, normalized) { - BufferAttribute.call( this, new Uint32Array( array ), itemSize, normalized ); + BufferAttribute.call(this, new Uint32Array(array), itemSize, normalized); } - Uint32BufferAttribute.prototype = Object.create( BufferAttribute.prototype ); + Uint32BufferAttribute.prototype = Object.create(BufferAttribute.prototype); Uint32BufferAttribute.prototype.constructor = Uint32BufferAttribute; - function Float32BufferAttribute( array, itemSize, normalized ) { + function Float32BufferAttribute(array, itemSize, normalized) { - BufferAttribute.call( this, new Float32Array( array ), itemSize, normalized ); + BufferAttribute.call(this, new Float32Array(array), itemSize, normalized); } - Float32BufferAttribute.prototype = Object.create( BufferAttribute.prototype ); + Float32BufferAttribute.prototype = Object.create(BufferAttribute.prototype); Float32BufferAttribute.prototype.constructor = Float32BufferAttribute; - function Float64BufferAttribute( array, itemSize, normalized ) { + function Float64BufferAttribute(array, itemSize, normalized) { - BufferAttribute.call( this, new Float64Array( array ), itemSize, normalized ); + BufferAttribute.call(this, new Float64Array(array), itemSize, normalized); } - Float64BufferAttribute.prototype = Object.create( BufferAttribute.prototype ); + Float64BufferAttribute.prototype = Object.create(BufferAttribute.prototype); Float64BufferAttribute.prototype.constructor = Float64BufferAttribute; /** @@ -10889,9 +10902,9 @@ } - Object.assign( DirectGeometry.prototype, { + Object.assign(DirectGeometry.prototype, { - computeGroups: function ( geometry ) { + computeGroups: function (geometry) { var group; var groups = []; @@ -10899,20 +10912,20 @@ var faces = geometry.faces; - for ( var i = 0; i < faces.length; i ++ ) { + for (var i = 0; i < faces.length; i++) { - var face = faces[ i ]; + var face = faces[i]; // materials - if ( face.materialIndex !== materialIndex ) { + if (face.materialIndex !== materialIndex) { materialIndex = face.materialIndex; - if ( group !== undefined ) { + if (group !== undefined) { - group.count = ( i * 3 ) - group.start; - groups.push( group ); + group.count = (i * 3) - group.start; + groups.push(group); } @@ -10925,10 +10938,10 @@ } - if ( group !== undefined ) { + if (group !== undefined) { - group.count = ( i * 3 ) - group.start; - groups.push( group ); + group.count = (i * 3) - group.start; + groups.push(group); } @@ -10936,14 +10949,14 @@ }, - fromGeometry: function ( geometry ) { + fromGeometry: function (geometry) { var faces = geometry.faces; var vertices = geometry.vertices; var faceVertexUvs = geometry.faceVertexUvs; - var hasFaceVertexUv = faceVertexUvs[ 0 ] && faceVertexUvs[ 0 ].length > 0; - var hasFaceVertexUv2 = faceVertexUvs[ 1 ] && faceVertexUvs[ 1 ].length > 0; + var hasFaceVertexUv = faceVertexUvs[0] && faceVertexUvs[0].length > 0; + var hasFaceVertexUv2 = faceVertexUvs[1] && faceVertexUvs[1].length > 0; // morphs @@ -10952,15 +10965,15 @@ var morphTargetsPosition; - if ( morphTargetsLength > 0 ) { + if (morphTargetsLength > 0) { morphTargetsPosition = []; - for ( var i = 0; i < morphTargetsLength; i ++ ) { + for (var i = 0; i < morphTargetsLength; i++) { - morphTargetsPosition[ i ] = { - name: morphTargets[ i ].name, - data: [] + morphTargetsPosition[i] = { + name: morphTargets[i].name, + data: [] }; } @@ -10974,15 +10987,15 @@ var morphTargetsNormal; - if ( morphNormalsLength > 0 ) { + if (morphNormalsLength > 0) { morphTargetsNormal = []; - for ( var i = 0; i < morphNormalsLength; i ++ ) { + for (var i = 0; i < morphNormalsLength; i++) { - morphTargetsNormal[ i ] = { - name: morphNormals[ i ].name, - data: [] + morphTargetsNormal[i] = { + name: morphNormals[i].name, + data: [] }; } @@ -11001,77 +11014,77 @@ // - if ( vertices.length > 0 && faces.length === 0 ) { + if (vertices.length > 0 && faces.length === 0) { - console.error( 'THREE.DirectGeometry: Faceless geometries are not supported.' ); + console.error('THREE.DirectGeometry: Faceless geometries are not supported.'); } - for ( var i = 0; i < faces.length; i ++ ) { + for (var i = 0; i < faces.length; i++) { - var face = faces[ i ]; + var face = faces[i]; - this.vertices.push( vertices[ face.a ], vertices[ face.b ], vertices[ face.c ] ); + this.vertices.push(vertices[face.a], vertices[face.b], vertices[face.c]); var vertexNormals = face.vertexNormals; - if ( vertexNormals.length === 3 ) { + if (vertexNormals.length === 3) { - this.normals.push( vertexNormals[ 0 ], vertexNormals[ 1 ], vertexNormals[ 2 ] ); + this.normals.push(vertexNormals[0], vertexNormals[1], vertexNormals[2]); } else { var normal = face.normal; - this.normals.push( normal, normal, normal ); + this.normals.push(normal, normal, normal); } var vertexColors = face.vertexColors; - if ( vertexColors.length === 3 ) { + if (vertexColors.length === 3) { - this.colors.push( vertexColors[ 0 ], vertexColors[ 1 ], vertexColors[ 2 ] ); + this.colors.push(vertexColors[0], vertexColors[1], vertexColors[2]); } else { var color = face.color; - this.colors.push( color, color, color ); + this.colors.push(color, color, color); } - if ( hasFaceVertexUv === true ) { + if (hasFaceVertexUv === true) { - var vertexUvs = faceVertexUvs[ 0 ][ i ]; + var vertexUvs = faceVertexUvs[0][i]; - if ( vertexUvs !== undefined ) { + if (vertexUvs !== undefined) { - this.uvs.push( vertexUvs[ 0 ], vertexUvs[ 1 ], vertexUvs[ 2 ] ); + this.uvs.push(vertexUvs[0], vertexUvs[1], vertexUvs[2]); } else { - console.warn( 'THREE.DirectGeometry.fromGeometry(): Undefined vertexUv ', i ); + console.warn('THREE.DirectGeometry.fromGeometry(): Undefined vertexUv ', i); - this.uvs.push( new Vector2(), new Vector2(), new Vector2() ); + this.uvs.push(new Vector2(), new Vector2(), new Vector2()); } } - if ( hasFaceVertexUv2 === true ) { + if (hasFaceVertexUv2 === true) { - var vertexUvs = faceVertexUvs[ 1 ][ i ]; + var vertexUvs = faceVertexUvs[1][i]; - if ( vertexUvs !== undefined ) { + if (vertexUvs !== undefined) { - this.uvs2.push( vertexUvs[ 0 ], vertexUvs[ 1 ], vertexUvs[ 2 ] ); + this.uvs2.push(vertexUvs[0], vertexUvs[1], vertexUvs[2]); } else { - console.warn( 'THREE.DirectGeometry.fromGeometry(): Undefined vertexUv2 ', i ); + console.warn('THREE.DirectGeometry.fromGeometry(): Undefined vertexUv2 ', i); - this.uvs2.push( new Vector2(), new Vector2(), new Vector2() ); + this.uvs2.push(new Vector2(), new Vector2(), new Vector2()); } @@ -11079,39 +11092,39 @@ // morphs - for ( var j = 0; j < morphTargetsLength; j ++ ) { + for (var j = 0; j < morphTargetsLength; j++) { - var morphTarget = morphTargets[ j ].vertices; + var morphTarget = morphTargets[j].vertices; - morphTargetsPosition[ j ].data.push( morphTarget[ face.a ], morphTarget[ face.b ], morphTarget[ face.c ] ); + morphTargetsPosition[j].data.push(morphTarget[face.a], morphTarget[face.b], morphTarget[face.c]); } - for ( var j = 0; j < morphNormalsLength; j ++ ) { + for (var j = 0; j < morphNormalsLength; j++) { - var morphNormal = morphNormals[ j ].vertexNormals[ i ]; + var morphNormal = morphNormals[j].vertexNormals[i]; - morphTargetsNormal[ j ].data.push( morphNormal.a, morphNormal.b, morphNormal.c ); + morphTargetsNormal[j].data.push(morphNormal.a, morphNormal.b, morphNormal.c); } // skins - if ( hasSkinIndices ) { + if (hasSkinIndices) { - this.skinIndices.push( skinIndices[ face.a ], skinIndices[ face.b ], skinIndices[ face.c ] ); + this.skinIndices.push(skinIndices[face.a], skinIndices[face.b], skinIndices[face.c]); } - if ( hasSkinWeights ) { + if (hasSkinWeights) { - this.skinWeights.push( skinWeights[ face.a ], skinWeights[ face.b ], skinWeights[ face.c ] ); + this.skinWeights.push(skinWeights[face.a], skinWeights[face.b], skinWeights[face.c]); } } - this.computeGroups( geometry ); + this.computeGroups(geometry); this.verticesNeedUpdate = geometry.verticesNeedUpdate; this.normalsNeedUpdate = geometry.normalsNeedUpdate; @@ -11123,21 +11136,21 @@ } - } ); + }); /** * @author mrdoob / http://mrdoob.com/ */ - function arrayMax( array ) { + function arrayMax(array) { - if ( array.length === 0 ) return - Infinity; + if (array.length === 0) return - Infinity; - var max = array[ 0 ]; + var max = array[0]; - for ( var i = 1, l = array.length; i < l; ++ i ) { + for (var i = 1, l = array.length; i < l; ++i) { - if ( array[ i ] > max ) max = array[ i ]; + if (array[i] > max) max = array[i]; } @@ -11154,7 +11167,7 @@ function BufferGeometry() { - Object.defineProperty( this, 'id', { value: bufferGeometryId += 2 } ); + Object.defineProperty(this, 'id', { value: bufferGeometryId += 2 }); this.uuid = _Math.generateUUID(); @@ -11177,7 +11190,7 @@ } - BufferGeometry.prototype = Object.assign( Object.create( EventDispatcher.prototype ), { + BufferGeometry.prototype = Object.assign(Object.create(EventDispatcher.prototype), { constructor: BufferGeometry, @@ -11189,11 +11202,11 @@ }, - setIndex: function ( index ) { + setIndex: function (index) { - if ( Array.isArray( index ) ) { + if (Array.isArray(index)) { - this.index = new ( arrayMax( index ) > 65535 ? Uint32BufferAttribute : Uint16BufferAttribute )( index, 1 ); + this.index = new (arrayMax(index) > 65535 ? Uint32BufferAttribute : Uint16BufferAttribute)(index, 1); } else { @@ -11203,54 +11216,54 @@ }, - addAttribute: function ( name, attribute ) { + addAttribute: function (name, attribute) { - if ( ! ( attribute && attribute.isBufferAttribute ) && ! ( attribute && attribute.isInterleavedBufferAttribute ) ) { + if (!(attribute && attribute.isBufferAttribute) && !(attribute && attribute.isInterleavedBufferAttribute)) { - console.warn( 'THREE.BufferGeometry: .addAttribute() now expects ( name, attribute ).' ); + console.warn('THREE.BufferGeometry: .addAttribute() now expects ( name, attribute ).'); - return this.addAttribute( name, new BufferAttribute( arguments[ 1 ], arguments[ 2 ] ) ); + return this.addAttribute(name, new BufferAttribute(arguments[1], arguments[2])); } - if ( name === 'index' ) { + if (name === 'index') { - console.warn( 'THREE.BufferGeometry.addAttribute: Use .setIndex() for index attribute.' ); - this.setIndex( attribute ); + console.warn('THREE.BufferGeometry.addAttribute: Use .setIndex() for index attribute.'); + this.setIndex(attribute); return this; } - this.attributes[ name ] = attribute; + this.attributes[name] = attribute; return this; }, - getAttribute: function ( name ) { + getAttribute: function (name) { - return this.attributes[ name ]; + return this.attributes[name]; }, - removeAttribute: function ( name ) { + removeAttribute: function (name) { - delete this.attributes[ name ]; + delete this.attributes[name]; return this; }, - addGroup: function ( start, count, materialIndex ) { + addGroup: function (start, count, materialIndex) { - this.groups.push( { + this.groups.push({ start: start, count: count, materialIndex: materialIndex !== undefined ? materialIndex : 0 - } ); + }); }, @@ -11260,42 +11273,42 @@ }, - setDrawRange: function ( start, count ) { + setDrawRange: function (start, count) { this.drawRange.start = start; this.drawRange.count = count; }, - applyMatrix: function ( matrix ) { + applyMatrix: function (matrix) { var position = this.attributes.position; - if ( position !== undefined ) { + if (position !== undefined) { - matrix.applyToBufferAttribute( position ); + matrix.applyToBufferAttribute(position); position.needsUpdate = true; } var normal = this.attributes.normal; - if ( normal !== undefined ) { + if (normal !== undefined) { - var normalMatrix = new Matrix3().getNormalMatrix( matrix ); + var normalMatrix = new Matrix3().getNormalMatrix(matrix); - normalMatrix.applyToBufferAttribute( normal ); + normalMatrix.applyToBufferAttribute(normal); normal.needsUpdate = true; } - if ( this.boundingBox !== null ) { + if (this.boundingBox !== null) { this.computeBoundingBox(); } - if ( this.boundingSphere !== null ) { + if (this.boundingSphere !== null) { this.computeBoundingSphere(); @@ -11311,11 +11324,11 @@ var m1 = new Matrix4(); - return function rotateX( angle ) { + return function rotateX(angle) { - m1.makeRotationX( angle ); + m1.makeRotationX(angle); - this.applyMatrix( m1 ); + this.applyMatrix(m1); return this; @@ -11329,11 +11342,11 @@ var m1 = new Matrix4(); - return function rotateY( angle ) { + return function rotateY(angle) { - m1.makeRotationY( angle ); + m1.makeRotationY(angle); - this.applyMatrix( m1 ); + this.applyMatrix(m1); return this; @@ -11347,11 +11360,11 @@ var m1 = new Matrix4(); - return function rotateZ( angle ) { + return function rotateZ(angle) { - m1.makeRotationZ( angle ); + m1.makeRotationZ(angle); - this.applyMatrix( m1 ); + this.applyMatrix(m1); return this; @@ -11365,11 +11378,11 @@ var m1 = new Matrix4(); - return function translate( x, y, z ) { + return function translate(x, y, z) { - m1.makeTranslation( x, y, z ); + m1.makeTranslation(x, y, z); - this.applyMatrix( m1 ); + this.applyMatrix(m1); return this; @@ -11383,11 +11396,11 @@ var m1 = new Matrix4(); - return function scale( x, y, z ) { + return function scale(x, y, z) { - m1.makeScale( x, y, z ); + m1.makeScale(x, y, z); - this.applyMatrix( m1 ); + this.applyMatrix(m1); return this; @@ -11399,13 +11412,13 @@ var obj = new Object3D(); - return function lookAt( vector ) { + return function lookAt(vector) { - obj.lookAt( vector ); + obj.lookAt(vector); obj.updateMatrix(); - this.applyMatrix( obj.matrix ); + this.applyMatrix(obj.matrix); }; @@ -11419,9 +11432,9 @@ this.computeBoundingBox(); - this.boundingBox.getCenter( offset ).negate(); + this.boundingBox.getCenter(offset).negate(); - this.translate( offset.x, offset.y, offset.z ); + this.translate(offset.x, offset.y, offset.z); return this; @@ -11429,45 +11442,45 @@ }(), - setFromObject: function ( object ) { + setFromObject: function (object) { // console.log( 'THREE.BufferGeometry.setFromObject(). Converting', object, this ); var geometry = object.geometry; - if ( object.isPoints || object.isLine ) { + if (object.isPoints || object.isLine) { - var positions = new Float32BufferAttribute( geometry.vertices.length * 3, 3 ); - var colors = new Float32BufferAttribute( geometry.colors.length * 3, 3 ); + var positions = new Float32BufferAttribute(geometry.vertices.length * 3, 3); + var colors = new Float32BufferAttribute(geometry.colors.length * 3, 3); - this.addAttribute( 'position', positions.copyVector3sArray( geometry.vertices ) ); - this.addAttribute( 'color', colors.copyColorsArray( geometry.colors ) ); + this.addAttribute('position', positions.copyVector3sArray(geometry.vertices)); + this.addAttribute('color', colors.copyColorsArray(geometry.colors)); - if ( geometry.lineDistances && geometry.lineDistances.length === geometry.vertices.length ) { + if (geometry.lineDistances && geometry.lineDistances.length === geometry.vertices.length) { - var lineDistances = new Float32BufferAttribute( geometry.lineDistances.length, 1 ); + var lineDistances = new Float32BufferAttribute(geometry.lineDistances.length, 1); - this.addAttribute( 'lineDistance', lineDistances.copyArray( geometry.lineDistances ) ); + this.addAttribute('lineDistance', lineDistances.copyArray(geometry.lineDistances)); } - if ( geometry.boundingSphere !== null ) { + if (geometry.boundingSphere !== null) { this.boundingSphere = geometry.boundingSphere.clone(); } - if ( geometry.boundingBox !== null ) { + if (geometry.boundingBox !== null) { this.boundingBox = geometry.boundingBox.clone(); } - } else if ( object.isMesh ) { + } else if (object.isMesh) { - if ( geometry && geometry.isGeometry ) { + if (geometry && geometry.isGeometry) { - this.fromGeometry( geometry ); + this.fromGeometry(geometry); } @@ -11477,41 +11490,41 @@ }, - setFromPoints: function ( points ) { + setFromPoints: function (points) { var position = []; - for ( var i = 0, l = points.length; i < l; i ++ ) { + for (var i = 0, l = points.length; i < l; i++) { - var point = points[ i ]; - position.push( point.x, point.y, point.z || 0 ); + var point = points[i]; + position.push(point.x, point.y, point.z || 0); } - this.addAttribute( 'position', new Float32BufferAttribute( position, 3 ) ); + this.addAttribute('position', new Float32BufferAttribute(position, 3)); return this; }, - updateFromObject: function ( object ) { + updateFromObject: function (object) { var geometry = object.geometry; - if ( object.isMesh ) { + if (object.isMesh) { var direct = geometry.__directGeometry; - if ( geometry.elementsNeedUpdate === true ) { + if (geometry.elementsNeedUpdate === true) { direct = undefined; geometry.elementsNeedUpdate = false; } - if ( direct === undefined ) { + if (direct === undefined) { - return this.fromGeometry( geometry ); + return this.fromGeometry(geometry); } @@ -11533,13 +11546,13 @@ var attribute; - if ( geometry.verticesNeedUpdate === true ) { + if (geometry.verticesNeedUpdate === true) { attribute = this.attributes.position; - if ( attribute !== undefined ) { + if (attribute !== undefined) { - attribute.copyVector3sArray( geometry.vertices ); + attribute.copyVector3sArray(geometry.vertices); attribute.needsUpdate = true; } @@ -11548,13 +11561,13 @@ } - if ( geometry.normalsNeedUpdate === true ) { + if (geometry.normalsNeedUpdate === true) { attribute = this.attributes.normal; - if ( attribute !== undefined ) { + if (attribute !== undefined) { - attribute.copyVector3sArray( geometry.normals ); + attribute.copyVector3sArray(geometry.normals); attribute.needsUpdate = true; } @@ -11563,13 +11576,13 @@ } - if ( geometry.colorsNeedUpdate === true ) { + if (geometry.colorsNeedUpdate === true) { attribute = this.attributes.color; - if ( attribute !== undefined ) { + if (attribute !== undefined) { - attribute.copyColorsArray( geometry.colors ); + attribute.copyColorsArray(geometry.colors); attribute.needsUpdate = true; } @@ -11578,13 +11591,13 @@ } - if ( geometry.uvsNeedUpdate ) { + if (geometry.uvsNeedUpdate) { attribute = this.attributes.uv; - if ( attribute !== undefined ) { + if (attribute !== undefined) { - attribute.copyVector2sArray( geometry.uvs ); + attribute.copyVector2sArray(geometry.uvs); attribute.needsUpdate = true; } @@ -11593,13 +11606,13 @@ } - if ( geometry.lineDistancesNeedUpdate ) { + if (geometry.lineDistancesNeedUpdate) { attribute = this.attributes.lineDistance; - if ( attribute !== undefined ) { + if (attribute !== undefined) { - attribute.copyArray( geometry.lineDistances ); + attribute.copyArray(geometry.lineDistances); attribute.needsUpdate = true; } @@ -11608,9 +11621,9 @@ } - if ( geometry.groupsNeedUpdate ) { + if (geometry.groupsNeedUpdate) { - geometry.computeGroups( object.geometry ); + geometry.computeGroups(object.geometry); this.groups = geometry.groups; geometry.groupsNeedUpdate = false; @@ -11621,44 +11634,44 @@ }, - fromGeometry: function ( geometry ) { + fromGeometry: function (geometry) { - geometry.__directGeometry = new DirectGeometry().fromGeometry( geometry ); + geometry.__directGeometry = new DirectGeometry().fromGeometry(geometry); - return this.fromDirectGeometry( geometry.__directGeometry ); + return this.fromDirectGeometry(geometry.__directGeometry); }, - fromDirectGeometry: function ( geometry ) { + fromDirectGeometry: function (geometry) { - var positions = new Float32Array( geometry.vertices.length * 3 ); - this.addAttribute( 'position', new BufferAttribute( positions, 3 ).copyVector3sArray( geometry.vertices ) ); + var positions = new Float32Array(geometry.vertices.length * 3); + this.addAttribute('position', new BufferAttribute(positions, 3).copyVector3sArray(geometry.vertices)); - if ( geometry.normals.length > 0 ) { + if (geometry.normals.length > 0) { - var normals = new Float32Array( geometry.normals.length * 3 ); - this.addAttribute( 'normal', new BufferAttribute( normals, 3 ).copyVector3sArray( geometry.normals ) ); + var normals = new Float32Array(geometry.normals.length * 3); + this.addAttribute('normal', new BufferAttribute(normals, 3).copyVector3sArray(geometry.normals)); } - if ( geometry.colors.length > 0 ) { + if (geometry.colors.length > 0) { - var colors = new Float32Array( geometry.colors.length * 3 ); - this.addAttribute( 'color', new BufferAttribute( colors, 3 ).copyColorsArray( geometry.colors ) ); + var colors = new Float32Array(geometry.colors.length * 3); + this.addAttribute('color', new BufferAttribute(colors, 3).copyColorsArray(geometry.colors)); } - if ( geometry.uvs.length > 0 ) { + if (geometry.uvs.length > 0) { - var uvs = new Float32Array( geometry.uvs.length * 2 ); - this.addAttribute( 'uv', new BufferAttribute( uvs, 2 ).copyVector2sArray( geometry.uvs ) ); + var uvs = new Float32Array(geometry.uvs.length * 2); + this.addAttribute('uv', new BufferAttribute(uvs, 2).copyVector2sArray(geometry.uvs)); } - if ( geometry.uvs2.length > 0 ) { + if (geometry.uvs2.length > 0) { - var uvs2 = new Float32Array( geometry.uvs2.length * 2 ); - this.addAttribute( 'uv2', new BufferAttribute( uvs2, 2 ).copyVector2sArray( geometry.uvs2 ) ); + var uvs2 = new Float32Array(geometry.uvs2.length * 2); + this.addAttribute('uv2', new BufferAttribute(uvs2, 2).copyVector2sArray(geometry.uvs2)); } @@ -11668,51 +11681,51 @@ // morphs - for ( var name in geometry.morphTargets ) { + for (var name in geometry.morphTargets) { var array = []; - var morphTargets = geometry.morphTargets[ name ]; + var morphTargets = geometry.morphTargets[name]; - for ( var i = 0, l = morphTargets.length; i < l; i ++ ) { + for (var i = 0, l = morphTargets.length; i < l; i++) { - var morphTarget = morphTargets[ i ]; + var morphTarget = morphTargets[i]; - var attribute = new Float32BufferAttribute( morphTarget.data.length * 3, 3 ); + var attribute = new Float32BufferAttribute(morphTarget.data.length * 3, 3); attribute.name = morphTarget.name; - array.push( attribute.copyVector3sArray( morphTarget.data ) ); + array.push(attribute.copyVector3sArray(morphTarget.data)); } - this.morphAttributes[ name ] = array; + this.morphAttributes[name] = array; } // skinning - if ( geometry.skinIndices.length > 0 ) { + if (geometry.skinIndices.length > 0) { - var skinIndices = new Float32BufferAttribute( geometry.skinIndices.length * 4, 4 ); - this.addAttribute( 'skinIndex', skinIndices.copyVector4sArray( geometry.skinIndices ) ); + var skinIndices = new Float32BufferAttribute(geometry.skinIndices.length * 4, 4); + this.addAttribute('skinIndex', skinIndices.copyVector4sArray(geometry.skinIndices)); } - if ( geometry.skinWeights.length > 0 ) { + if (geometry.skinWeights.length > 0) { - var skinWeights = new Float32BufferAttribute( geometry.skinWeights.length * 4, 4 ); - this.addAttribute( 'skinWeight', skinWeights.copyVector4sArray( geometry.skinWeights ) ); + var skinWeights = new Float32BufferAttribute(geometry.skinWeights.length * 4, 4); + this.addAttribute('skinWeight', skinWeights.copyVector4sArray(geometry.skinWeights)); } // - if ( geometry.boundingSphere !== null ) { + if (geometry.boundingSphere !== null) { this.boundingSphere = geometry.boundingSphere.clone(); } - if ( geometry.boundingBox !== null ) { + if (geometry.boundingBox !== null) { this.boundingBox = geometry.boundingBox.clone(); @@ -11724,7 +11737,7 @@ computeBoundingBox: function () { - if ( this.boundingBox === null ) { + if (this.boundingBox === null) { this.boundingBox = new Box3(); @@ -11732,9 +11745,9 @@ var position = this.attributes.position; - if ( position !== undefined ) { + if (position !== undefined) { - this.boundingBox.setFromBufferAttribute( position ); + this.boundingBox.setFromBufferAttribute(position); } else { @@ -11742,9 +11755,9 @@ } - if ( isNaN( this.boundingBox.min.x ) || isNaN( this.boundingBox.min.y ) || isNaN( this.boundingBox.min.z ) ) { + if (isNaN(this.boundingBox.min.x) || isNaN(this.boundingBox.min.y) || isNaN(this.boundingBox.min.z)) { - console.error( 'THREE.BufferGeometry.computeBoundingBox: Computed min/max have NaN values. The "position" attribute is likely to have NaN values.', this ); + console.error('THREE.BufferGeometry.computeBoundingBox: Computed min/max have NaN values. The "position" attribute is likely to have NaN values.', this); } @@ -11757,7 +11770,7 @@ return function computeBoundingSphere() { - if ( this.boundingSphere === null ) { + if (this.boundingSphere === null) { this.boundingSphere = new Sphere(); @@ -11765,32 +11778,32 @@ var position = this.attributes.position; - if ( position ) { + if (position) { var center = this.boundingSphere.center; - box.setFromBufferAttribute( position ); - box.getCenter( center ); + box.setFromBufferAttribute(position); + box.getCenter(center); // hoping to find a boundingSphere with a radius smaller than the // boundingSphere of the boundingBox: sqrt(3) smaller in the best case var maxRadiusSq = 0; - for ( var i = 0, il = position.count; i < il; i ++ ) { + for (var i = 0, il = position.count; i < il; i++) { - vector.x = position.getX( i ); - vector.y = position.getY( i ); - vector.z = position.getZ( i ); - maxRadiusSq = Math.max( maxRadiusSq, center.distanceToSquared( vector ) ); + vector.x = position.getX(i); + vector.y = position.getY(i); + vector.z = position.getZ(i); + maxRadiusSq = Math.max(maxRadiusSq, center.distanceToSquared(vector)); } - this.boundingSphere.radius = Math.sqrt( maxRadiusSq ); + this.boundingSphere.radius = Math.sqrt(maxRadiusSq); - if ( isNaN( this.boundingSphere.radius ) ) { + if (isNaN(this.boundingSphere.radius)) { - console.error( 'THREE.BufferGeometry.computeBoundingSphere(): Computed radius is NaN. The "position" attribute is likely to have NaN values.', this ); + console.error('THREE.BufferGeometry.computeBoundingSphere(): Computed radius is NaN. The "position" attribute is likely to have NaN values.', this); } @@ -11811,13 +11824,13 @@ var index = this.index; var attributes = this.attributes; - if ( attributes.position ) { + if (attributes.position) { var positions = attributes.position.array; - if ( attributes.normal === undefined ) { + if (attributes.normal === undefined) { - this.addAttribute( 'normal', new BufferAttribute( new Float32Array( positions.length ), 3 ) ); + this.addAttribute('normal', new BufferAttribute(new Float32Array(positions.length), 3)); } else { @@ -11825,9 +11838,9 @@ var array = attributes.normal.array; - for ( var i = 0, il = array.length; i < il; i ++ ) { + for (var i = 0, il = array.length; i < il; i++) { - array[ i ] = 0; + array[i] = 0; } @@ -11841,35 +11854,35 @@ // indexed elements - if ( index ) { + if (index) { var indices = index.array; - for ( var i = 0, il = index.count; i < il; i += 3 ) { + for (var i = 0, il = index.count; i < il; i += 3) { - vA = indices[ i + 0 ] * 3; - vB = indices[ i + 1 ] * 3; - vC = indices[ i + 2 ] * 3; + vA = indices[i + 0] * 3; + vB = indices[i + 1] * 3; + vC = indices[i + 2] * 3; - pA.fromArray( positions, vA ); - pB.fromArray( positions, vB ); - pC.fromArray( positions, vC ); + pA.fromArray(positions, vA); + pB.fromArray(positions, vB); + pC.fromArray(positions, vC); - cb.subVectors( pC, pB ); - ab.subVectors( pA, pB ); - cb.cross( ab ); + cb.subVectors(pC, pB); + ab.subVectors(pA, pB); + cb.cross(ab); - normals[ vA ] += cb.x; - normals[ vA + 1 ] += cb.y; - normals[ vA + 2 ] += cb.z; + normals[vA] += cb.x; + normals[vA + 1] += cb.y; + normals[vA + 2] += cb.z; - normals[ vB ] += cb.x; - normals[ vB + 1 ] += cb.y; - normals[ vB + 2 ] += cb.z; + normals[vB] += cb.x; + normals[vB + 1] += cb.y; + normals[vB + 2] += cb.z; - normals[ vC ] += cb.x; - normals[ vC + 1 ] += cb.y; - normals[ vC + 2 ] += cb.z; + normals[vC] += cb.x; + normals[vC + 1] += cb.y; + normals[vC + 2] += cb.z; } @@ -11877,27 +11890,27 @@ // non-indexed elements (unconnected triangle soup) - for ( var i = 0, il = positions.length; i < il; i += 9 ) { + for (var i = 0, il = positions.length; i < il; i += 9) { - pA.fromArray( positions, i ); - pB.fromArray( positions, i + 3 ); - pC.fromArray( positions, i + 6 ); + pA.fromArray(positions, i); + pB.fromArray(positions, i + 3); + pC.fromArray(positions, i + 6); - cb.subVectors( pC, pB ); - ab.subVectors( pA, pB ); - cb.cross( ab ); + cb.subVectors(pC, pB); + ab.subVectors(pA, pB); + cb.cross(ab); - normals[ i ] = cb.x; - normals[ i + 1 ] = cb.y; - normals[ i + 2 ] = cb.z; + normals[i] = cb.x; + normals[i + 1] = cb.y; + normals[i + 2] = cb.z; - normals[ i + 3 ] = cb.x; - normals[ i + 4 ] = cb.y; - normals[ i + 5 ] = cb.z; + normals[i + 3] = cb.x; + normals[i + 4] = cb.y; + normals[i + 5] = cb.z; - normals[ i + 6 ] = cb.x; - normals[ i + 7 ] = cb.y; - normals[ i + 8 ] = cb.z; + normals[i + 6] = cb.x; + normals[i + 7] = cb.y; + normals[i + 8] = cb.z; } @@ -11911,16 +11924,16 @@ }, - merge: function ( geometry, offset ) { + merge: function (geometry, offset) { - if ( ! ( geometry && geometry.isBufferGeometry ) ) { + if (!(geometry && geometry.isBufferGeometry)) { - console.error( 'THREE.BufferGeometry.merge(): geometry not an instance of THREE.BufferGeometry.', geometry ); + console.error('THREE.BufferGeometry.merge(): geometry not an instance of THREE.BufferGeometry.', geometry); return; } - if ( offset === undefined ) { + if (offset === undefined) { offset = 0; @@ -11933,21 +11946,21 @@ var attributes = this.attributes; - for ( var key in attributes ) { + for (var key in attributes) { - if ( geometry.attributes[ key ] === undefined ) continue; + if (geometry.attributes[key] === undefined) continue; - var attribute1 = attributes[ key ]; + var attribute1 = attributes[key]; var attributeArray1 = attribute1.array; - var attribute2 = geometry.attributes[ key ]; + var attribute2 = geometry.attributes[key]; var attributeArray2 = attribute2.array; var attributeSize = attribute2.itemSize; - for ( var i = 0, j = attributeSize * offset; i < attributeArray2.length; i ++, j ++ ) { + for (var i = 0, j = attributeSize * offset; i < attributeArray2.length; i++ , j++) { - attributeArray1[ j ] = attributeArray2[ i ]; + attributeArray1[j] = attributeArray2[i]; } @@ -11965,15 +11978,15 @@ var normals = this.attributes.normal; - for ( var i = 0, il = normals.count; i < il; i ++ ) { + for (var i = 0, il = normals.count; i < il; i++) { - vector.x = normals.getX( i ); - vector.y = normals.getY( i ); - vector.z = normals.getZ( i ); + vector.x = normals.getX(i); + vector.y = normals.getY(i); + vector.z = normals.getZ(i); vector.normalize(); - normals.setXYZ( i, vector.x, vector.y, vector.z ); + normals.setXYZ(i, vector.x, vector.y, vector.z); } @@ -11983,9 +11996,9 @@ toNonIndexed: function () { - if ( this.index === null ) { + if (this.index === null) { - console.warn( 'THREE.BufferGeometry.toNonIndexed(): Geometry is already non-indexed.' ); + console.warn('THREE.BufferGeometry.toNonIndexed(): Geometry is already non-indexed.'); return this; } @@ -11995,39 +12008,39 @@ var indices = this.index.array; var attributes = this.attributes; - for ( var name in attributes ) { + for (var name in attributes) { - var attribute = attributes[ name ]; + var attribute = attributes[name]; var array = attribute.array; var itemSize = attribute.itemSize; - var array2 = new array.constructor( indices.length * itemSize ); + var array2 = new array.constructor(indices.length * itemSize); var index = 0, index2 = 0; - for ( var i = 0, l = indices.length; i < l; i ++ ) { + for (var i = 0, l = indices.length; i < l; i++) { - index = indices[ i ] * itemSize; + index = indices[i] * itemSize; - for ( var j = 0; j < itemSize; j ++ ) { + for (var j = 0; j < itemSize; j++) { - array2[ index2 ++ ] = array[ index ++ ]; + array2[index2++] = array[index++]; } } - geometry2.addAttribute( name, new BufferAttribute( array2, itemSize ) ); + geometry2.addAttribute(name, new BufferAttribute(array2, itemSize)); } var groups = this.groups; - for ( var i = 0, l = groups.length; i < l; i ++ ) { + for (var i = 0, l = groups.length; i < l; i++) { - var group = groups[ i ]; - geometry2.addGroup( group.start, group.count, group.materialIndex ); + var group = groups[i]; + geometry2.addGroup(group.start, group.count, group.materialIndex); } @@ -12049,16 +12062,16 @@ data.uuid = this.uuid; data.type = this.type; - if ( this.name !== '' ) data.name = this.name; - if ( Object.keys( this.userData ).length > 0 ) data.userData = this.userData; + if (this.name !== '') data.name = this.name; + if (Object.keys(this.userData).length > 0) data.userData = this.userData; - if ( this.parameters !== undefined ) { + if (this.parameters !== undefined) { var parameters = this.parameters; - for ( var key in parameters ) { + for (var key in parameters) { - if ( parameters[ key ] !== undefined ) data[ key ] = parameters[ key ]; + if (parameters[key] !== undefined) data[key] = parameters[key]; } @@ -12070,9 +12083,9 @@ var index = this.index; - if ( index !== null ) { + if (index !== null) { - var array = Array.prototype.slice.call( index.array ); + var array = Array.prototype.slice.call(index.array); data.data.index = { type: index.array.constructor.name, @@ -12083,13 +12096,13 @@ var attributes = this.attributes; - for ( var key in attributes ) { + for (var key in attributes) { - var attribute = attributes[ key ]; + var attribute = attributes[key]; - var array = Array.prototype.slice.call( attribute.array ); + var array = Array.prototype.slice.call(attribute.array); - data.data.attributes[ key ] = { + data.data.attributes[key] = { itemSize: attribute.itemSize, type: attribute.array.constructor.name, array: array, @@ -12100,15 +12113,15 @@ var groups = this.groups; - if ( groups.length > 0 ) { + if (groups.length > 0) { - data.data.groups = JSON.parse( JSON.stringify( groups ) ); + data.data.groups = JSON.parse(JSON.stringify(groups)); } var boundingSphere = this.boundingSphere; - if ( boundingSphere !== null ) { + if (boundingSphere !== null) { data.data.boundingSphere = { center: boundingSphere.center.toArray(), @@ -12147,11 +12160,11 @@ return new this.constructor().copy( this ); */ - return new BufferGeometry().copy( this ); + return new BufferGeometry().copy(this); }, - copy: function ( source ) { + copy: function (source) { var name, i, l; @@ -12172,9 +12185,9 @@ var index = source.index; - if ( index !== null ) { + if (index !== null) { - this.setIndex( index.clone() ); + this.setIndex(index.clone()); } @@ -12182,10 +12195,10 @@ var attributes = source.attributes; - for ( name in attributes ) { + for (name in attributes) { - var attribute = attributes[ name ]; - this.addAttribute( name, attribute.clone() ); + var attribute = attributes[name]; + this.addAttribute(name, attribute.clone()); } @@ -12193,18 +12206,18 @@ var morphAttributes = source.morphAttributes; - for ( name in morphAttributes ) { + for (name in morphAttributes) { var array = []; - var morphAttribute = morphAttributes[ name ]; // morphAttribute: array of Float32BufferAttributes + var morphAttribute = morphAttributes[name]; // morphAttribute: array of Float32BufferAttributes - for ( i = 0, l = morphAttribute.length; i < l; i ++ ) { + for (i = 0, l = morphAttribute.length; i < l; i++) { - array.push( morphAttribute[ i ].clone() ); + array.push(morphAttribute[i].clone()); } - this.morphAttributes[ name ] = array; + this.morphAttributes[name] = array; } @@ -12212,10 +12225,10 @@ var groups = source.groups; - for ( i = 0, l = groups.length; i < l; i ++ ) { + for (i = 0, l = groups.length; i < l; i++) { - var group = groups[ i ]; - this.addGroup( group.start, group.count, group.materialIndex ); + var group = groups[i]; + this.addGroup(group.start, group.count, group.materialIndex); } @@ -12223,7 +12236,7 @@ var boundingBox = source.boundingBox; - if ( boundingBox !== null ) { + if (boundingBox !== null) { this.boundingBox = boundingBox.clone(); @@ -12233,7 +12246,7 @@ var boundingSphere = source.boundingSphere; - if ( boundingSphere !== null ) { + if (boundingSphere !== null) { this.boundingSphere = boundingSphere.clone(); @@ -12254,11 +12267,11 @@ dispose: function () { - this.dispatchEvent( { type: 'dispose' } ); + this.dispatchEvent({ type: 'dispose' }); } - } ); + }); /** * @author mrdoob / http://mrdoob.com/ @@ -12267,9 +12280,9 @@ // BoxGeometry - function BoxGeometry( width, height, depth, widthSegments, heightSegments, depthSegments ) { + function BoxGeometry(width, height, depth, widthSegments, heightSegments, depthSegments) { - Geometry.call( this ); + Geometry.call(this); this.type = 'BoxGeometry'; @@ -12282,19 +12295,19 @@ depthSegments: depthSegments }; - this.fromBufferGeometry( new BoxBufferGeometry( width, height, depth, widthSegments, heightSegments, depthSegments ) ); + this.fromBufferGeometry(new BoxBufferGeometry(width, height, depth, widthSegments, heightSegments, depthSegments)); this.mergeVertices(); } - BoxGeometry.prototype = Object.create( Geometry.prototype ); + BoxGeometry.prototype = Object.create(Geometry.prototype); BoxGeometry.prototype.constructor = BoxGeometry; // BoxBufferGeometry - function BoxBufferGeometry( width, height, depth, widthSegments, heightSegments, depthSegments ) { + function BoxBufferGeometry(width, height, depth, widthSegments, heightSegments, depthSegments) { - BufferGeometry.call( this ); + BufferGeometry.call(this); this.type = 'BoxBufferGeometry'; @@ -12315,9 +12328,9 @@ // segments - widthSegments = Math.floor( widthSegments ) || 1; - heightSegments = Math.floor( heightSegments ) || 1; - depthSegments = Math.floor( depthSegments ) || 1; + widthSegments = Math.floor(widthSegments) || 1; + heightSegments = Math.floor(heightSegments) || 1; + depthSegments = Math.floor(depthSegments) || 1; // buffers @@ -12333,21 +12346,21 @@ // build each side of the box geometry - buildPlane( 'z', 'y', 'x', - 1, - 1, depth, height, width, depthSegments, heightSegments, 0 ); // px - buildPlane( 'z', 'y', 'x', 1, - 1, depth, height, - width, depthSegments, heightSegments, 1 ); // nx - buildPlane( 'x', 'z', 'y', 1, 1, width, depth, height, widthSegments, depthSegments, 2 ); // py - buildPlane( 'x', 'z', 'y', 1, - 1, width, depth, - height, widthSegments, depthSegments, 3 ); // ny - buildPlane( 'x', 'y', 'z', 1, - 1, width, height, depth, widthSegments, heightSegments, 4 ); // pz - buildPlane( 'x', 'y', 'z', - 1, - 1, width, height, - depth, widthSegments, heightSegments, 5 ); // nz + buildPlane('z', 'y', 'x', - 1, - 1, depth, height, width, depthSegments, heightSegments, 0); // px + buildPlane('z', 'y', 'x', 1, - 1, depth, height, - width, depthSegments, heightSegments, 1); // nx + buildPlane('x', 'z', 'y', 1, 1, width, depth, height, widthSegments, depthSegments, 2); // py + buildPlane('x', 'z', 'y', 1, - 1, width, depth, - height, widthSegments, depthSegments, 3); // ny + buildPlane('x', 'y', 'z', 1, - 1, width, height, depth, widthSegments, heightSegments, 4); // pz + buildPlane('x', 'y', 'z', - 1, - 1, width, height, - depth, widthSegments, heightSegments, 5); // nz // build geometry - this.setIndex( indices ); - this.addAttribute( 'position', new Float32BufferAttribute( vertices, 3 ) ); - this.addAttribute( 'normal', new Float32BufferAttribute( normals, 3 ) ); - this.addAttribute( 'uv', new Float32BufferAttribute( uvs, 2 ) ); + this.setIndex(indices); + this.addAttribute('position', new Float32BufferAttribute(vertices, 3)); + this.addAttribute('normal', new Float32BufferAttribute(normals, 3)); + this.addAttribute('uv', new Float32BufferAttribute(uvs, 2)); - function buildPlane( u, v, w, udir, vdir, width, height, depth, gridX, gridY, materialIndex ) { + function buildPlane(u, v, w, udir, vdir, width, height, depth, gridX, gridY, materialIndex) { var segmentWidth = width / gridX; var segmentHeight = height / gridY; @@ -12368,38 +12381,38 @@ // generate vertices, normals and uvs - for ( iy = 0; iy < gridY1; iy ++ ) { + for (iy = 0; iy < gridY1; iy++) { var y = iy * segmentHeight - heightHalf; - for ( ix = 0; ix < gridX1; ix ++ ) { + for (ix = 0; ix < gridX1; ix++) { var x = ix * segmentWidth - widthHalf; // set values to correct vector component - vector[ u ] = x * udir; - vector[ v ] = y * vdir; - vector[ w ] = depthHalf; + vector[u] = x * udir; + vector[v] = y * vdir; + vector[w] = depthHalf; // now apply vector to vertex buffer - vertices.push( vector.x, vector.y, vector.z ); + vertices.push(vector.x, vector.y, vector.z); // set values to correct vector component - vector[ u ] = 0; - vector[ v ] = 0; - vector[ w ] = depth > 0 ? 1 : - 1; + vector[u] = 0; + vector[v] = 0; + vector[w] = depth > 0 ? 1 : - 1; // now apply vector to normal buffer - normals.push( vector.x, vector.y, vector.z ); + normals.push(vector.x, vector.y, vector.z); // uvs - uvs.push( ix / gridX ); - uvs.push( 1 - ( iy / gridY ) ); + uvs.push(ix / gridX); + uvs.push(1 - (iy / gridY)); // counters @@ -12415,19 +12428,19 @@ // 2. a single segment consists of two faces // 3. so we need to generate six (2*3) indices per segment - for ( iy = 0; iy < gridY; iy ++ ) { + for (iy = 0; iy < gridY; iy++) { - for ( ix = 0; ix < gridX; ix ++ ) { + for (ix = 0; ix < gridX; ix++) { var a = numberOfVertices + ix + gridX1 * iy; - var b = numberOfVertices + ix + gridX1 * ( iy + 1 ); - var c = numberOfVertices + ( ix + 1 ) + gridX1 * ( iy + 1 ); - var d = numberOfVertices + ( ix + 1 ) + gridX1 * iy; + var b = numberOfVertices + ix + gridX1 * (iy + 1); + var c = numberOfVertices + (ix + 1) + gridX1 * (iy + 1); + var d = numberOfVertices + (ix + 1) + gridX1 * iy; // faces - indices.push( a, b, d ); - indices.push( b, c, d ); + indices.push(a, b, d); + indices.push(b, c, d); // increase counter @@ -12439,7 +12452,7 @@ // add a group to the geometry. this will ensure multi material support - scope.addGroup( groupStart, groupCount, materialIndex ); + scope.addGroup(groupStart, groupCount, materialIndex); // calculate new start value for groups @@ -12453,7 +12466,7 @@ } - BoxBufferGeometry.prototype = Object.create( BufferGeometry.prototype ); + BoxBufferGeometry.prototype = Object.create(BufferGeometry.prototype); BoxBufferGeometry.prototype.constructor = BoxBufferGeometry; /** @@ -12463,9 +12476,9 @@ // PlaneGeometry - function PlaneGeometry( width, height, widthSegments, heightSegments ) { + function PlaneGeometry(width, height, widthSegments, heightSegments) { - Geometry.call( this ); + Geometry.call(this); this.type = 'PlaneGeometry'; @@ -12476,19 +12489,19 @@ heightSegments: heightSegments }; - this.fromBufferGeometry( new PlaneBufferGeometry( width, height, widthSegments, heightSegments ) ); + this.fromBufferGeometry(new PlaneBufferGeometry(width, height, widthSegments, heightSegments)); this.mergeVertices(); } - PlaneGeometry.prototype = Object.create( Geometry.prototype ); + PlaneGeometry.prototype = Object.create(Geometry.prototype); PlaneGeometry.prototype.constructor = PlaneGeometry; // PlaneBufferGeometry - function PlaneBufferGeometry( width, height, widthSegments, heightSegments ) { + function PlaneBufferGeometry(width, height, widthSegments, heightSegments) { - BufferGeometry.call( this ); + BufferGeometry.call(this); this.type = 'PlaneBufferGeometry'; @@ -12505,8 +12518,8 @@ var width_half = width / 2; var height_half = height / 2; - var gridX = Math.floor( widthSegments ) || 1; - var gridY = Math.floor( heightSegments ) || 1; + var gridX = Math.floor(widthSegments) || 1; + var gridY = Math.floor(heightSegments) || 1; var gridX1 = gridX + 1; var gridY1 = gridY + 1; @@ -12525,20 +12538,20 @@ // generate vertices, normals and uvs - for ( iy = 0; iy < gridY1; iy ++ ) { + for (iy = 0; iy < gridY1; iy++) { var y = iy * segment_height - height_half; - for ( ix = 0; ix < gridX1; ix ++ ) { + for (ix = 0; ix < gridX1; ix++) { var x = ix * segment_width - width_half; - vertices.push( x, - y, 0 ); + vertices.push(x, - y, 0); - normals.push( 0, 0, 1 ); + normals.push(0, 0, 1); - uvs.push( ix / gridX ); - uvs.push( 1 - ( iy / gridY ) ); + uvs.push(ix / gridX); + uvs.push(1 - (iy / gridY)); } @@ -12546,19 +12559,19 @@ // indices - for ( iy = 0; iy < gridY; iy ++ ) { + for (iy = 0; iy < gridY; iy++) { - for ( ix = 0; ix < gridX; ix ++ ) { + for (ix = 0; ix < gridX; ix++) { var a = ix + gridX1 * iy; - var b = ix + gridX1 * ( iy + 1 ); - var c = ( ix + 1 ) + gridX1 * ( iy + 1 ); - var d = ( ix + 1 ) + gridX1 * iy; + var b = ix + gridX1 * (iy + 1); + var c = (ix + 1) + gridX1 * (iy + 1); + var d = (ix + 1) + gridX1 * iy; // faces - indices.push( a, b, d ); - indices.push( b, c, d ); + indices.push(a, b, d); + indices.push(b, c, d); } @@ -12566,14 +12579,14 @@ // build geometry - this.setIndex( indices ); - this.addAttribute( 'position', new Float32BufferAttribute( vertices, 3 ) ); - this.addAttribute( 'normal', new Float32BufferAttribute( normals, 3 ) ); - this.addAttribute( 'uv', new Float32BufferAttribute( uvs, 2 ) ); + this.setIndex(indices); + this.addAttribute('position', new Float32BufferAttribute(vertices, 3)); + this.addAttribute('normal', new Float32BufferAttribute(normals, 3)); + this.addAttribute('uv', new Float32BufferAttribute(uvs, 2)); } - PlaneBufferGeometry.prototype = Object.create( BufferGeometry.prototype ); + PlaneBufferGeometry.prototype = Object.create(BufferGeometry.prototype); PlaneBufferGeometry.prototype.constructor = PlaneBufferGeometry; /** @@ -12585,7 +12598,7 @@ function Material() { - Object.defineProperty( this, 'id', { value: materialId ++ } ); + Object.defineProperty(this, 'id', { value: materialId++ }); this.uuid = _Math.generateUUID(); @@ -12641,58 +12654,58 @@ } - Material.prototype = Object.assign( Object.create( EventDispatcher.prototype ), { + Material.prototype = Object.assign(Object.create(EventDispatcher.prototype), { constructor: Material, isMaterial: true, - onBeforeCompile: function () {}, + onBeforeCompile: function () { }, - setValues: function ( values ) { + setValues: function (values) { - if ( values === undefined ) return; + if (values === undefined) return; - for ( var key in values ) { + for (var key in values) { - var newValue = values[ key ]; + var newValue = values[key]; - if ( newValue === undefined ) { + if (newValue === undefined) { - console.warn( "THREE.Material: '" + key + "' parameter is undefined." ); + console.warn("THREE.Material: '" + key + "' parameter is undefined."); continue; } // for backward compatability if shading is set in the constructor - if ( key === 'shading' ) { + if (key === 'shading') { - console.warn( 'THREE.' + this.type + ': .shading has been removed. Use the boolean .flatShading instead.' ); - this.flatShading = ( newValue === FlatShading ) ? true : false; + console.warn('THREE.' + this.type + ': .shading has been removed. Use the boolean .flatShading instead.'); + this.flatShading = (newValue === FlatShading) ? true : false; continue; } - var currentValue = this[ key ]; + var currentValue = this[key]; - if ( currentValue === undefined ) { + if (currentValue === undefined) { - console.warn( "THREE." + this.type + ": '" + key + "' is not a property of this material." ); + console.warn("THREE." + this.type + ": '" + key + "' is not a property of this material."); continue; } - if ( currentValue && currentValue.isColor ) { + if (currentValue && currentValue.isColor) { - currentValue.set( newValue ); + currentValue.set(newValue); - } else if ( ( currentValue && currentValue.isVector3 ) && ( newValue && newValue.isVector3 ) ) { + } else if ((currentValue && currentValue.isVector3) && (newValue && newValue.isVector3)) { - currentValue.copy( newValue ); + currentValue.copy(newValue); } else { - this[ key ] = newValue; + this[key] = newValue; } @@ -12700,11 +12713,11 @@ }, - toJSON: function ( meta ) { + toJSON: function (meta) { - var isRoot = ( meta === undefined || typeof meta === 'string' ); + var isRoot = (meta === undefined || typeof meta === 'string'); - if ( isRoot ) { + if (isRoot) { meta = { textures: {}, @@ -12725,131 +12738,131 @@ data.uuid = this.uuid; data.type = this.type; - if ( this.name !== '' ) data.name = this.name; + if (this.name !== '') data.name = this.name; - if ( this.color && this.color.isColor ) data.color = this.color.getHex(); + if (this.color && this.color.isColor) data.color = this.color.getHex(); - if ( this.roughness !== undefined ) data.roughness = this.roughness; - if ( this.metalness !== undefined ) data.metalness = this.metalness; + if (this.roughness !== undefined) data.roughness = this.roughness; + if (this.metalness !== undefined) data.metalness = this.metalness; - if ( this.emissive && this.emissive.isColor ) data.emissive = this.emissive.getHex(); - if ( this.emissiveIntensity !== 1 ) data.emissiveIntensity = this.emissiveIntensity; + if (this.emissive && this.emissive.isColor) data.emissive = this.emissive.getHex(); + if (this.emissiveIntensity !== 1) data.emissiveIntensity = this.emissiveIntensity; - if ( this.specular && this.specular.isColor ) data.specular = this.specular.getHex(); - if ( this.shininess !== undefined ) data.shininess = this.shininess; - if ( this.clearCoat !== undefined ) data.clearCoat = this.clearCoat; - if ( this.clearCoatRoughness !== undefined ) data.clearCoatRoughness = this.clearCoatRoughness; + if (this.specular && this.specular.isColor) data.specular = this.specular.getHex(); + if (this.shininess !== undefined) data.shininess = this.shininess; + if (this.clearCoat !== undefined) data.clearCoat = this.clearCoat; + if (this.clearCoatRoughness !== undefined) data.clearCoatRoughness = this.clearCoatRoughness; - if ( this.map && this.map.isTexture ) data.map = this.map.toJSON( meta ).uuid; - if ( this.alphaMap && this.alphaMap.isTexture ) data.alphaMap = this.alphaMap.toJSON( meta ).uuid; - if ( this.lightMap && this.lightMap.isTexture ) data.lightMap = this.lightMap.toJSON( meta ).uuid; + if (this.map && this.map.isTexture) data.map = this.map.toJSON(meta).uuid; + if (this.alphaMap && this.alphaMap.isTexture) data.alphaMap = this.alphaMap.toJSON(meta).uuid; + if (this.lightMap && this.lightMap.isTexture) data.lightMap = this.lightMap.toJSON(meta).uuid; - if ( this.aoMap && this.aoMap.isTexture ) { + if (this.aoMap && this.aoMap.isTexture) { - data.aoMap = this.aoMap.toJSON( meta ).uuid; + data.aoMap = this.aoMap.toJSON(meta).uuid; data.aoMapIntensity = this.aoMapIntensity; } - if ( this.bumpMap && this.bumpMap.isTexture ) { + if (this.bumpMap && this.bumpMap.isTexture) { - data.bumpMap = this.bumpMap.toJSON( meta ).uuid; + data.bumpMap = this.bumpMap.toJSON(meta).uuid; data.bumpScale = this.bumpScale; } - if ( this.normalMap && this.normalMap.isTexture ) { + if (this.normalMap && this.normalMap.isTexture) { - data.normalMap = this.normalMap.toJSON( meta ).uuid; + data.normalMap = this.normalMap.toJSON(meta).uuid; data.normalMapType = this.normalMapType; data.normalScale = this.normalScale.toArray(); } - if ( this.displacementMap && this.displacementMap.isTexture ) { + if (this.displacementMap && this.displacementMap.isTexture) { - data.displacementMap = this.displacementMap.toJSON( meta ).uuid; + data.displacementMap = this.displacementMap.toJSON(meta).uuid; data.displacementScale = this.displacementScale; data.displacementBias = this.displacementBias; } - if ( this.roughnessMap && this.roughnessMap.isTexture ) data.roughnessMap = this.roughnessMap.toJSON( meta ).uuid; - if ( this.metalnessMap && this.metalnessMap.isTexture ) data.metalnessMap = this.metalnessMap.toJSON( meta ).uuid; + if (this.roughnessMap && this.roughnessMap.isTexture) data.roughnessMap = this.roughnessMap.toJSON(meta).uuid; + if (this.metalnessMap && this.metalnessMap.isTexture) data.metalnessMap = this.metalnessMap.toJSON(meta).uuid; - if ( this.emissiveMap && this.emissiveMap.isTexture ) data.emissiveMap = this.emissiveMap.toJSON( meta ).uuid; - if ( this.specularMap && this.specularMap.isTexture ) data.specularMap = this.specularMap.toJSON( meta ).uuid; + if (this.emissiveMap && this.emissiveMap.isTexture) data.emissiveMap = this.emissiveMap.toJSON(meta).uuid; + if (this.specularMap && this.specularMap.isTexture) data.specularMap = this.specularMap.toJSON(meta).uuid; - if ( this.envMap && this.envMap.isTexture ) { + if (this.envMap && this.envMap.isTexture) { - data.envMap = this.envMap.toJSON( meta ).uuid; + data.envMap = this.envMap.toJSON(meta).uuid; data.reflectivity = this.reflectivity; // Scale behind envMap - if ( this.combine !== undefined ) data.combine = this.combine; - if ( this.envMapIntensity !== undefined ) data.envMapIntensity = this.envMapIntensity; + if (this.combine !== undefined) data.combine = this.combine; + if (this.envMapIntensity !== undefined) data.envMapIntensity = this.envMapIntensity; } - if ( this.gradientMap && this.gradientMap.isTexture ) { + if (this.gradientMap && this.gradientMap.isTexture) { - data.gradientMap = this.gradientMap.toJSON( meta ).uuid; + data.gradientMap = this.gradientMap.toJSON(meta).uuid; } - if ( this.size !== undefined ) data.size = this.size; - if ( this.sizeAttenuation !== undefined ) data.sizeAttenuation = this.sizeAttenuation; + if (this.size !== undefined) data.size = this.size; + if (this.sizeAttenuation !== undefined) data.sizeAttenuation = this.sizeAttenuation; - if ( this.blending !== NormalBlending ) data.blending = this.blending; - if ( this.flatShading === true ) data.flatShading = this.flatShading; - if ( this.side !== FrontSide ) data.side = this.side; - if ( this.vertexColors !== NoColors ) data.vertexColors = this.vertexColors; + if (this.blending !== NormalBlending) data.blending = this.blending; + if (this.flatShading === true) data.flatShading = this.flatShading; + if (this.side !== FrontSide) data.side = this.side; + if (this.vertexColors !== NoColors) data.vertexColors = this.vertexColors; - if ( this.opacity < 1 ) data.opacity = this.opacity; - if ( this.transparent === true ) data.transparent = this.transparent; + if (this.opacity < 1) data.opacity = this.opacity; + if (this.transparent === true) data.transparent = this.transparent; data.depthFunc = this.depthFunc; data.depthTest = this.depthTest; data.depthWrite = this.depthWrite; // rotation (SpriteMaterial) - if ( this.rotation !== 0 ) data.rotation = this.rotation; + if (this.rotation !== 0) data.rotation = this.rotation; - if ( this.polygonOffset === true ) data.polygonOffset = true; - if ( this.polygonOffsetFactor !== 0 ) data.polygonOffsetFactor = this.polygonOffsetFactor; - if ( this.polygonOffsetUnits !== 0 ) data.polygonOffsetUnits = this.polygonOffsetUnits; + if (this.polygonOffset === true) data.polygonOffset = true; + if (this.polygonOffsetFactor !== 0) data.polygonOffsetFactor = this.polygonOffsetFactor; + if (this.polygonOffsetUnits !== 0) data.polygonOffsetUnits = this.polygonOffsetUnits; - if ( this.linewidth !== 1 ) data.linewidth = this.linewidth; - if ( this.dashSize !== undefined ) data.dashSize = this.dashSize; - if ( this.gapSize !== undefined ) data.gapSize = this.gapSize; - if ( this.scale !== undefined ) data.scale = this.scale; + if (this.linewidth !== 1) data.linewidth = this.linewidth; + if (this.dashSize !== undefined) data.dashSize = this.dashSize; + if (this.gapSize !== undefined) data.gapSize = this.gapSize; + if (this.scale !== undefined) data.scale = this.scale; - if ( this.dithering === true ) data.dithering = true; + if (this.dithering === true) data.dithering = true; - if ( this.alphaTest > 0 ) data.alphaTest = this.alphaTest; - if ( this.premultipliedAlpha === true ) data.premultipliedAlpha = this.premultipliedAlpha; + if (this.alphaTest > 0) data.alphaTest = this.alphaTest; + if (this.premultipliedAlpha === true) data.premultipliedAlpha = this.premultipliedAlpha; - if ( this.wireframe === true ) data.wireframe = this.wireframe; - if ( this.wireframeLinewidth > 1 ) data.wireframeLinewidth = this.wireframeLinewidth; - if ( this.wireframeLinecap !== 'round' ) data.wireframeLinecap = this.wireframeLinecap; - if ( this.wireframeLinejoin !== 'round' ) data.wireframeLinejoin = this.wireframeLinejoin; + if (this.wireframe === true) data.wireframe = this.wireframe; + if (this.wireframeLinewidth > 1) data.wireframeLinewidth = this.wireframeLinewidth; + if (this.wireframeLinecap !== 'round') data.wireframeLinecap = this.wireframeLinecap; + if (this.wireframeLinejoin !== 'round') data.wireframeLinejoin = this.wireframeLinejoin; - if ( this.morphTargets === true ) data.morphTargets = true; - if ( this.skinning === true ) data.skinning = true; + if (this.morphTargets === true) data.morphTargets = true; + if (this.skinning === true) data.skinning = true; - if ( this.visible === false ) data.visible = false; - if ( JSON.stringify( this.userData ) !== '{}' ) data.userData = this.userData; + if (this.visible === false) data.visible = false; + if (JSON.stringify(this.userData) !== '{}') data.userData = this.userData; // TODO: Copied from Object3D.toJSON - function extractFromCache( cache ) { + function extractFromCache(cache) { var values = []; - for ( var key in cache ) { + for (var key in cache) { - var data = cache[ key ]; + var data = cache[key]; delete data.metadata; - values.push( data ); + values.push(data); } @@ -12857,13 +12870,13 @@ } - if ( isRoot ) { + if (isRoot) { - var textures = extractFromCache( meta.textures ); - var images = extractFromCache( meta.images ); + var textures = extractFromCache(meta.textures); + var images = extractFromCache(meta.images); - if ( textures.length > 0 ) data.textures = textures; - if ( images.length > 0 ) data.images = images; + if (textures.length > 0) data.textures = textures; + if (images.length > 0) data.images = images; } @@ -12873,11 +12886,11 @@ clone: function () { - return new this.constructor().copy( this ); + return new this.constructor().copy(this); }, - copy: function ( source ) { + copy: function (source) { this.name = source.name; @@ -12917,7 +12930,7 @@ this.premultipliedAlpha = source.premultipliedAlpha; this.visible = source.visible; - this.userData = JSON.parse( JSON.stringify( source.userData ) ); + this.userData = JSON.parse(JSON.stringify(source.userData)); this.clipShadows = source.clipShadows; this.clipIntersection = source.clipIntersection; @@ -12925,13 +12938,13 @@ var srcPlanes = source.clippingPlanes, dstPlanes = null; - if ( srcPlanes !== null ) { + if (srcPlanes !== null) { var n = srcPlanes.length; - dstPlanes = new Array( n ); + dstPlanes = new Array(n); - for ( var i = 0; i !== n; ++ i ) - dstPlanes[ i ] = srcPlanes[ i ].clone(); + for (var i = 0; i !== n; ++i) + dstPlanes[i] = srcPlanes[i].clone(); } @@ -12945,11 +12958,11 @@ dispose: function () { - this.dispatchEvent( { type: 'dispose' } ); + this.dispatchEvent({ type: 'dispose' }); } - } ); + }); /** * @author alteredq / http://alteredqualia.com/ @@ -12972,9 +12985,9 @@ * } */ - function ShaderMaterial( parameters ) { + function ShaderMaterial(parameters) { - Material.call( this ); + Material.call(this); this.type = 'ShaderMaterial'; @@ -13007,43 +13020,43 @@ // When rendered geometry doesn't include these attributes but the material does, // use these default values in WebGL. This avoids errors when buffer data is missing. this.defaultAttributeValues = { - 'color': [ 1, 1, 1 ], - 'uv': [ 0, 0 ], - 'uv2': [ 0, 0 ] + 'color': [1, 1, 1], + 'uv': [0, 0], + 'uv2': [0, 0] }; this.index0AttributeName = undefined; this.uniformsNeedUpdate = false; - if ( parameters !== undefined ) { + if (parameters !== undefined) { - if ( parameters.attributes !== undefined ) { + if (parameters.attributes !== undefined) { - console.error( 'THREE.ShaderMaterial: attributes should now be defined in THREE.BufferGeometry instead.' ); + console.error('THREE.ShaderMaterial: attributes should now be defined in THREE.BufferGeometry instead.'); } - this.setValues( parameters ); + this.setValues(parameters); } } - ShaderMaterial.prototype = Object.create( Material.prototype ); + ShaderMaterial.prototype = Object.create(Material.prototype); ShaderMaterial.prototype.constructor = ShaderMaterial; ShaderMaterial.prototype.isShaderMaterial = true; - ShaderMaterial.prototype.copy = function ( source ) { + ShaderMaterial.prototype.copy = function (source) { - Material.prototype.copy.call( this, source ); + Material.prototype.copy.call(this, source); this.fragmentShader = source.fragmentShader; this.vertexShader = source.vertexShader; - this.uniforms = UniformsUtils.clone( source.uniforms ); + this.uniforms = UniformsUtils.clone(source.uniforms); - this.defines = Object.assign( {}, source.defines ); + this.defines = Object.assign({}, source.defines); this.wireframe = source.wireframe; this.wireframeLinewidth = source.wireframeLinewidth; @@ -13062,62 +13075,62 @@ }; - ShaderMaterial.prototype.toJSON = function ( meta ) { + ShaderMaterial.prototype.toJSON = function (meta) { - var data = Material.prototype.toJSON.call( this, meta ); + var data = Material.prototype.toJSON.call(this, meta); data.uniforms = {}; - for ( var name in this.uniforms ) { + for (var name in this.uniforms) { - var uniform = this.uniforms[ name ]; + var uniform = this.uniforms[name]; var value = uniform.value; - if ( value.isTexture ) { + if (value.isTexture) { - data.uniforms[ name ] = { + data.uniforms[name] = { type: 't', - value: value.toJSON( meta ).uuid + value: value.toJSON(meta).uuid }; - } else if ( value.isColor ) { + } else if (value.isColor) { - data.uniforms[ name ] = { + data.uniforms[name] = { type: 'c', value: value.getHex() }; - } else if ( value.isVector2 ) { + } else if (value.isVector2) { - data.uniforms[ name ] = { + data.uniforms[name] = { type: 'v2', value: value.toArray() }; - } else if ( value.isVector3 ) { + } else if (value.isVector3) { - data.uniforms[ name ] = { + data.uniforms[name] = { type: 'v3', value: value.toArray() }; - } else if ( value.isVector4 ) { + } else if (value.isVector4) { - data.uniforms[ name ] = { + data.uniforms[name] = { type: 'v4', value: value.toArray() }; - } else if ( value.isMatrix4 ) { + } else if (value.isMatrix4) { - data.uniforms[ name ] = { + data.uniforms[name] = { type: 'm4', value: value.toArray() }; } else { - data.uniforms[ name ] = { + data.uniforms[name] = { value: value }; @@ -13127,7 +13140,7 @@ } - if ( Object.keys( this.defines ).length > 0 ) data.defines = this.defines; + if (Object.keys(this.defines).length > 0) data.defines = this.defines; data.vertexShader = this.vertexShader; data.fragmentShader = this.fragmentShader; @@ -13140,19 +13153,19 @@ * @author bhouston / http://clara.io */ - function Ray( origin, direction ) { + function Ray(origin, direction) { - this.origin = ( origin !== undefined ) ? origin : new Vector3(); - this.direction = ( direction !== undefined ) ? direction : new Vector3(); + this.origin = (origin !== undefined) ? origin : new Vector3(); + this.direction = (direction !== undefined) ? direction : new Vector3(); } - Object.assign( Ray.prototype, { + Object.assign(Ray.prototype, { - set: function ( origin, direction ) { + set: function (origin, direction) { - this.origin.copy( origin ); - this.direction.copy( direction ); + this.origin.copy(origin); + this.direction.copy(direction); return this; @@ -13160,35 +13173,35 @@ clone: function () { - return new this.constructor().copy( this ); + return new this.constructor().copy(this); }, - copy: function ( ray ) { + copy: function (ray) { - this.origin.copy( ray.origin ); - this.direction.copy( ray.direction ); + this.origin.copy(ray.origin); + this.direction.copy(ray.direction); return this; }, - at: function ( t, target ) { + at: function (t, target) { - if ( target === undefined ) { + if (target === undefined) { - console.warn( 'THREE.Ray: .at() target is now required' ); + console.warn('THREE.Ray: .at() target is now required'); target = new Vector3(); } - return target.copy( this.direction ).multiplyScalar( t ).add( this.origin ); + return target.copy(this.direction).multiplyScalar(t).add(this.origin); }, - lookAt: function ( v ) { + lookAt: function (v) { - this.direction.copy( v ).sub( this.origin ).normalize(); + this.direction.copy(v).sub(this.origin).normalize(); return this; @@ -13198,9 +13211,9 @@ var v1 = new Vector3(); - return function recast( t ) { + return function recast(t) { - this.origin.copy( this.at( t, v1 ) ); + this.origin.copy(this.at(t, v1)); return this; @@ -13208,32 +13221,32 @@ }(), - closestPointToPoint: function ( point, target ) { + closestPointToPoint: function (point, target) { - if ( target === undefined ) { + if (target === undefined) { - console.warn( 'THREE.Ray: .closestPointToPoint() target is now required' ); + console.warn('THREE.Ray: .closestPointToPoint() target is now required'); target = new Vector3(); } - target.subVectors( point, this.origin ); + target.subVectors(point, this.origin); - var directionDistance = target.dot( this.direction ); + var directionDistance = target.dot(this.direction); - if ( directionDistance < 0 ) { + if (directionDistance < 0) { - return target.copy( this.origin ); + return target.copy(this.origin); } - return target.copy( this.direction ).multiplyScalar( directionDistance ).add( this.origin ); + return target.copy(this.direction).multiplyScalar(directionDistance).add(this.origin); }, - distanceToPoint: function ( point ) { + distanceToPoint: function (point) { - return Math.sqrt( this.distanceSqToPoint( point ) ); + return Math.sqrt(this.distanceSqToPoint(point)); }, @@ -13241,21 +13254,21 @@ var v1 = new Vector3(); - return function distanceSqToPoint( point ) { + return function distanceSqToPoint(point) { - var directionDistance = v1.subVectors( point, this.origin ).dot( this.direction ); + var directionDistance = v1.subVectors(point, this.origin).dot(this.direction); // point behind the ray - if ( directionDistance < 0 ) { + if (directionDistance < 0) { - return this.origin.distanceToSquared( point ); + return this.origin.distanceToSquared(point); } - v1.copy( this.direction ).multiplyScalar( directionDistance ).add( this.origin ); + v1.copy(this.direction).multiplyScalar(directionDistance).add(this.origin); - return v1.distanceToSquared( point ); + return v1.distanceToSquared(point); }; @@ -13267,7 +13280,7 @@ var segDir = new Vector3(); var diff = new Vector3(); - return function distanceSqToSegment( v0, v1, optionalPointOnRay, optionalPointOnSegment ) { + return function distanceSqToSegment(v0, v1, optionalPointOnRay, optionalPointOnSegment) { // from http://www.geometrictools.com/GTEngine/Include/Mathematics/GteDistRaySegment.h // It returns the min distance between the ray and the segment @@ -13276,19 +13289,19 @@ // - The closest point on the ray // - The closest point on the segment - segCenter.copy( v0 ).add( v1 ).multiplyScalar( 0.5 ); - segDir.copy( v1 ).sub( v0 ).normalize(); - diff.copy( this.origin ).sub( segCenter ); + segCenter.copy(v0).add(v1).multiplyScalar(0.5); + segDir.copy(v1).sub(v0).normalize(); + diff.copy(this.origin).sub(segCenter); - var segExtent = v0.distanceTo( v1 ) * 0.5; - var a01 = - this.direction.dot( segDir ); - var b0 = diff.dot( this.direction ); - var b1 = - diff.dot( segDir ); + var segExtent = v0.distanceTo(v1) * 0.5; + var a01 = - this.direction.dot(segDir); + var b0 = diff.dot(this.direction); + var b1 = - diff.dot(segDir); var c = diff.lengthSq(); - var det = Math.abs( 1 - a01 * a01 ); + var det = Math.abs(1 - a01 * a01); var s0, s1, sqrDist, extDet; - if ( det > 0 ) { + if (det > 0) { // The ray and segment are not parallel. @@ -13296,11 +13309,11 @@ s1 = a01 * b0 - b1; extDet = segExtent * det; - if ( s0 >= 0 ) { + if (s0 >= 0) { - if ( s1 >= - extDet ) { + if (s1 >= - extDet) { - if ( s1 <= extDet ) { + if (s1 <= extDet) { // region 0 // Minimum at interior points of ray and segment. @@ -13308,15 +13321,15 @@ var invDet = 1 / det; s0 *= invDet; s1 *= invDet; - sqrDist = s0 * ( s0 + a01 * s1 + 2 * b0 ) + s1 * ( a01 * s0 + s1 + 2 * b1 ) + c; + sqrDist = s0 * (s0 + a01 * s1 + 2 * b0) + s1 * (a01 * s0 + s1 + 2 * b1) + c; } else { // region 1 s1 = segExtent; - s0 = Math.max( 0, - ( a01 * s1 + b0 ) ); - sqrDist = - s0 * s0 + s1 * ( s1 + 2 * b1 ) + c; + s0 = Math.max(0, - (a01 * s1 + b0)); + sqrDist = - s0 * s0 + s1 * (s1 + 2 * b1) + c; } @@ -13325,36 +13338,36 @@ // region 5 s1 = - segExtent; - s0 = Math.max( 0, - ( a01 * s1 + b0 ) ); - sqrDist = - s0 * s0 + s1 * ( s1 + 2 * b1 ) + c; + s0 = Math.max(0, - (a01 * s1 + b0)); + sqrDist = - s0 * s0 + s1 * (s1 + 2 * b1) + c; } } else { - if ( s1 <= - extDet ) { + if (s1 <= - extDet) { // region 4 - s0 = Math.max( 0, - ( - a01 * segExtent + b0 ) ); - s1 = ( s0 > 0 ) ? - segExtent : Math.min( Math.max( - segExtent, - b1 ), segExtent ); - sqrDist = - s0 * s0 + s1 * ( s1 + 2 * b1 ) + c; + s0 = Math.max(0, - (- a01 * segExtent + b0)); + s1 = (s0 > 0) ? - segExtent : Math.min(Math.max(- segExtent, - b1), segExtent); + sqrDist = - s0 * s0 + s1 * (s1 + 2 * b1) + c; - } else if ( s1 <= extDet ) { + } else if (s1 <= extDet) { // region 3 s0 = 0; - s1 = Math.min( Math.max( - segExtent, - b1 ), segExtent ); - sqrDist = s1 * ( s1 + 2 * b1 ) + c; + s1 = Math.min(Math.max(- segExtent, - b1), segExtent); + sqrDist = s1 * (s1 + 2 * b1) + c; } else { // region 2 - s0 = Math.max( 0, - ( a01 * segExtent + b0 ) ); - s1 = ( s0 > 0 ) ? segExtent : Math.min( Math.max( - segExtent, - b1 ), segExtent ); - sqrDist = - s0 * s0 + s1 * ( s1 + 2 * b1 ) + c; + s0 = Math.max(0, - (a01 * segExtent + b0)); + s1 = (s0 > 0) ? segExtent : Math.min(Math.max(- segExtent, - b1), segExtent); + sqrDist = - s0 * s0 + s1 * (s1 + 2 * b1) + c; } @@ -13364,21 +13377,21 @@ // Ray and segment are parallel. - s1 = ( a01 > 0 ) ? - segExtent : segExtent; - s0 = Math.max( 0, - ( a01 * s1 + b0 ) ); - sqrDist = - s0 * s0 + s1 * ( s1 + 2 * b1 ) + c; + s1 = (a01 > 0) ? - segExtent : segExtent; + s0 = Math.max(0, - (a01 * s1 + b0)); + sqrDist = - s0 * s0 + s1 * (s1 + 2 * b1) + c; } - if ( optionalPointOnRay ) { + if (optionalPointOnRay) { - optionalPointOnRay.copy( this.direction ).multiplyScalar( s0 ).add( this.origin ); + optionalPointOnRay.copy(this.direction).multiplyScalar(s0).add(this.origin); } - if ( optionalPointOnSegment ) { + if (optionalPointOnSegment) { - optionalPointOnSegment.copy( segDir ).multiplyScalar( s1 ).add( segCenter ); + optionalPointOnSegment.copy(segDir).multiplyScalar(s1).add(segCenter); } @@ -13392,16 +13405,16 @@ var v1 = new Vector3(); - return function intersectSphere( sphere, target ) { + return function intersectSphere(sphere, target) { - v1.subVectors( sphere.center, this.origin ); - var tca = v1.dot( this.direction ); - var d2 = v1.dot( v1 ) - tca * tca; + v1.subVectors(sphere.center, this.origin); + var tca = v1.dot(this.direction); + var d2 = v1.dot(v1) - tca * tca; var radius2 = sphere.radius * sphere.radius; - if ( d2 > radius2 ) return null; + if (d2 > radius2) return null; - var thc = Math.sqrt( radius2 - d2 ); + var thc = Math.sqrt(radius2 - d2); // t0 = first intersect point - entrance on front of sphere var t0 = tca - thc; @@ -13410,34 +13423,34 @@ var t1 = tca + thc; // test to see if both t0 and t1 are behind the ray - if so, return null - if ( t0 < 0 && t1 < 0 ) return null; + if (t0 < 0 && t1 < 0) return null; // test to see if t0 is behind the ray: // if it is, the ray is inside the sphere, so return the second exit point scaled by t1, // in order to always return an intersect point that is in front of the ray. - if ( t0 < 0 ) return this.at( t1, target ); + if (t0 < 0) return this.at(t1, target); // else t0 is in front of the ray, so return the first collision point scaled by t0 - return this.at( t0, target ); + return this.at(t0, target); }; }(), - intersectsSphere: function ( sphere ) { + intersectsSphere: function (sphere) { - return this.distanceSqToPoint( sphere.center ) <= ( sphere.radius * sphere.radius ); + return this.distanceSqToPoint(sphere.center) <= (sphere.radius * sphere.radius); }, - distanceToPlane: function ( plane ) { + distanceToPlane: function (plane) { - var denominator = plane.normal.dot( this.direction ); + var denominator = plane.normal.dot(this.direction); - if ( denominator === 0 ) { + if (denominator === 0) { // line is coplanar, return origin - if ( plane.distanceToPoint( this.origin ) === 0 ) { + if (plane.distanceToPoint(this.origin) === 0) { return 0; @@ -13449,7 +13462,7 @@ } - var t = - ( this.origin.dot( plane.normal ) + plane.constant ) / denominator; + var t = - (this.origin.dot(plane.normal) + plane.constant) / denominator; // Return if the ray never intersects the plane @@ -13457,35 +13470,35 @@ }, - intersectPlane: function ( plane, target ) { + intersectPlane: function (plane, target) { - var t = this.distanceToPlane( plane ); + var t = this.distanceToPlane(plane); - if ( t === null ) { + if (t === null) { return null; } - return this.at( t, target ); + return this.at(t, target); }, - intersectsPlane: function ( plane ) { + intersectsPlane: function (plane) { // check if the ray lies on the plane first - var distToPoint = plane.distanceToPoint( this.origin ); + var distToPoint = plane.distanceToPoint(this.origin); - if ( distToPoint === 0 ) { + if (distToPoint === 0) { return true; } - var denominator = plane.normal.dot( this.direction ); + var denominator = plane.normal.dot(this.direction); - if ( denominator * distToPoint < 0 ) { + if (denominator * distToPoint < 0) { return true; @@ -13497,7 +13510,7 @@ }, - intersectBox: function ( box, target ) { + intersectBox: function (box, target) { var tmin, tmax, tymin, tymax, tzmin, tzmax; @@ -13507,76 +13520,76 @@ var origin = this.origin; - if ( invdirx >= 0 ) { + if (invdirx >= 0) { - tmin = ( box.min.x - origin.x ) * invdirx; - tmax = ( box.max.x - origin.x ) * invdirx; + tmin = (box.min.x - origin.x) * invdirx; + tmax = (box.max.x - origin.x) * invdirx; } else { - tmin = ( box.max.x - origin.x ) * invdirx; - tmax = ( box.min.x - origin.x ) * invdirx; + tmin = (box.max.x - origin.x) * invdirx; + tmax = (box.min.x - origin.x) * invdirx; } - if ( invdiry >= 0 ) { + if (invdiry >= 0) { - tymin = ( box.min.y - origin.y ) * invdiry; - tymax = ( box.max.y - origin.y ) * invdiry; + tymin = (box.min.y - origin.y) * invdiry; + tymax = (box.max.y - origin.y) * invdiry; } else { - tymin = ( box.max.y - origin.y ) * invdiry; - tymax = ( box.min.y - origin.y ) * invdiry; + tymin = (box.max.y - origin.y) * invdiry; + tymax = (box.min.y - origin.y) * invdiry; } - if ( ( tmin > tymax ) || ( tymin > tmax ) ) return null; + if ((tmin > tymax) || (tymin > tmax)) return null; // These lines also handle the case where tmin or tmax is NaN // (result of 0 * Infinity). x !== x returns true if x is NaN - if ( tymin > tmin || tmin !== tmin ) tmin = tymin; + if (tymin > tmin || tmin !== tmin) tmin = tymin; - if ( tymax < tmax || tmax !== tmax ) tmax = tymax; + if (tymax < tmax || tmax !== tmax) tmax = tymax; - if ( invdirz >= 0 ) { + if (invdirz >= 0) { - tzmin = ( box.min.z - origin.z ) * invdirz; - tzmax = ( box.max.z - origin.z ) * invdirz; + tzmin = (box.min.z - origin.z) * invdirz; + tzmax = (box.max.z - origin.z) * invdirz; } else { - tzmin = ( box.max.z - origin.z ) * invdirz; - tzmax = ( box.min.z - origin.z ) * invdirz; + tzmin = (box.max.z - origin.z) * invdirz; + tzmax = (box.min.z - origin.z) * invdirz; } - if ( ( tmin > tzmax ) || ( tzmin > tmax ) ) return null; + if ((tmin > tzmax) || (tzmin > tmax)) return null; - if ( tzmin > tmin || tmin !== tmin ) tmin = tzmin; + if (tzmin > tmin || tmin !== tmin) tmin = tzmin; - if ( tzmax < tmax || tmax !== tmax ) tmax = tzmax; + if (tzmax < tmax || tmax !== tmax) tmax = tzmax; //return point closest to the ray (positive side) - if ( tmax < 0 ) return null; + if (tmax < 0) return null; - return this.at( tmin >= 0 ? tmin : tmax, target ); + return this.at(tmin >= 0 ? tmin : tmax, target); }, - intersectsBox: ( function () { + intersectsBox: (function () { var v = new Vector3(); - return function intersectsBox( box ) { + return function intersectsBox(box) { - return this.intersectBox( box, v ) !== null; + return this.intersectBox(box, v) !== null; }; - } )(), + })(), intersectTriangle: function () { @@ -13586,28 +13599,28 @@ var edge2 = new Vector3(); var normal = new Vector3(); - return function intersectTriangle( a, b, c, backfaceCulling, target ) { + return function intersectTriangle(a, b, c, backfaceCulling, target) { // from http://www.geometrictools.com/GTEngine/Include/Mathematics/GteIntrRay3Triangle3.h - edge1.subVectors( b, a ); - edge2.subVectors( c, a ); - normal.crossVectors( edge1, edge2 ); + edge1.subVectors(b, a); + edge2.subVectors(c, a); + normal.crossVectors(edge1, edge2); // Solve Q + t*D = b1*E1 + b2*E2 (Q = kDiff, D = ray direction, // E1 = kEdge1, E2 = kEdge2, N = Cross(E1,E2)) by // |Dot(D,N)|*b1 = sign(Dot(D,N))*Dot(D,Cross(Q,E2)) // |Dot(D,N)|*b2 = sign(Dot(D,N))*Dot(D,Cross(E1,Q)) // |Dot(D,N)|*t = -sign(Dot(D,N))*Dot(Q,N) - var DdN = this.direction.dot( normal ); + var DdN = this.direction.dot(normal); var sign; - if ( DdN > 0 ) { + if (DdN > 0) { - if ( backfaceCulling ) return null; + if (backfaceCulling) return null; sign = 1; - } else if ( DdN < 0 ) { + } else if (DdN < 0) { sign = - 1; DdN = - DdN; @@ -13618,106 +13631,106 @@ } - diff.subVectors( this.origin, a ); - var DdQxE2 = sign * this.direction.dot( edge2.crossVectors( diff, edge2 ) ); + diff.subVectors(this.origin, a); + var DdQxE2 = sign * this.direction.dot(edge2.crossVectors(diff, edge2)); // b1 < 0, no intersection - if ( DdQxE2 < 0 ) { + if (DdQxE2 < 0) { return null; } - var DdE1xQ = sign * this.direction.dot( edge1.cross( diff ) ); + var DdE1xQ = sign * this.direction.dot(edge1.cross(diff)); // b2 < 0, no intersection - if ( DdE1xQ < 0 ) { + if (DdE1xQ < 0) { return null; } // b1+b2 > 1, no intersection - if ( DdQxE2 + DdE1xQ > DdN ) { + if (DdQxE2 + DdE1xQ > DdN) { return null; } // Line intersects triangle, check if ray does. - var QdN = - sign * diff.dot( normal ); + var QdN = - sign * diff.dot(normal); // t < 0, no intersection - if ( QdN < 0 ) { + if (QdN < 0) { return null; } // Ray intersects triangle. - return this.at( QdN / DdN, target ); + return this.at(QdN / DdN, target); }; }(), - applyMatrix4: function ( matrix4 ) { + applyMatrix4: function (matrix4) { - this.origin.applyMatrix4( matrix4 ); - this.direction.transformDirection( matrix4 ); + this.origin.applyMatrix4(matrix4); + this.direction.transformDirection(matrix4); return this; }, - equals: function ( ray ) { + equals: function (ray) { - return ray.origin.equals( this.origin ) && ray.direction.equals( this.direction ); + return ray.origin.equals(this.origin) && ray.direction.equals(this.direction); } - } ); + }); /** * @author bhouston / http://clara.io * @author mrdoob / http://mrdoob.com/ */ - function Triangle( a, b, c ) { + function Triangle(a, b, c) { - this.a = ( a !== undefined ) ? a : new Vector3(); - this.b = ( b !== undefined ) ? b : new Vector3(); - this.c = ( c !== undefined ) ? c : new Vector3(); + this.a = (a !== undefined) ? a : new Vector3(); + this.b = (b !== undefined) ? b : new Vector3(); + this.c = (c !== undefined) ? c : new Vector3(); } - Object.assign( Triangle, { + Object.assign(Triangle, { getNormal: function () { var v0 = new Vector3(); - return function getNormal( a, b, c, target ) { + return function getNormal(a, b, c, target) { - if ( target === undefined ) { + if (target === undefined) { - console.warn( 'THREE.Triangle: .getNormal() target is now required' ); + console.warn('THREE.Triangle: .getNormal() target is now required'); target = new Vector3(); } - target.subVectors( c, b ); - v0.subVectors( a, b ); - target.cross( v0 ); + target.subVectors(c, b); + v0.subVectors(a, b); + target.cross(v0); var targetLengthSq = target.lengthSq(); - if ( targetLengthSq > 0 ) { + if (targetLengthSq > 0) { - return target.multiplyScalar( 1 / Math.sqrt( targetLengthSq ) ); + return target.multiplyScalar(1 / Math.sqrt(targetLengthSq)); } - return target.set( 0, 0, 0 ); + return target.set(0, 0, 0); }; @@ -13731,42 +13744,42 @@ var v1 = new Vector3(); var v2 = new Vector3(); - return function getBarycoord( point, a, b, c, target ) { + return function getBarycoord(point, a, b, c, target) { - v0.subVectors( c, a ); - v1.subVectors( b, a ); - v2.subVectors( point, a ); + v0.subVectors(c, a); + v1.subVectors(b, a); + v2.subVectors(point, a); - var dot00 = v0.dot( v0 ); - var dot01 = v0.dot( v1 ); - var dot02 = v0.dot( v2 ); - var dot11 = v1.dot( v1 ); - var dot12 = v1.dot( v2 ); + var dot00 = v0.dot(v0); + var dot01 = v0.dot(v1); + var dot02 = v0.dot(v2); + var dot11 = v1.dot(v1); + var dot12 = v1.dot(v2); - var denom = ( dot00 * dot11 - dot01 * dot01 ); + var denom = (dot00 * dot11 - dot01 * dot01); - if ( target === undefined ) { + if (target === undefined) { - console.warn( 'THREE.Triangle: .getBarycoord() target is now required' ); + console.warn('THREE.Triangle: .getBarycoord() target is now required'); target = new Vector3(); } // collinear or singular triangle - if ( denom === 0 ) { + if (denom === 0) { // arbitrary location outside of triangle? // not sure if this is the best idea, maybe should be returning undefined - return target.set( - 2, - 1, - 1 ); + return target.set(- 2, - 1, - 1); } var invDenom = 1 / denom; - var u = ( dot11 * dot02 - dot01 * dot12 ) * invDenom; - var v = ( dot00 * dot12 - dot01 * dot02 ) * invDenom; + var u = (dot11 * dot02 - dot01 * dot12) * invDenom; + var v = (dot00 * dot12 - dot01 * dot02) * invDenom; // barycentric coordinates must always sum to 1 - return target.set( 1 - u - v, v, u ); + return target.set(1 - u - v, v, u); }; @@ -13776,11 +13789,11 @@ var v1 = new Vector3(); - return function containsPoint( point, a, b, c ) { + return function containsPoint(point, a, b, c) { - Triangle.getBarycoord( point, a, b, c, v1 ); + Triangle.getBarycoord(point, a, b, c, v1); - return ( v1.x >= 0 ) && ( v1.y >= 0 ) && ( ( v1.x + v1.y ) <= 1 ); + return (v1.x >= 0) && (v1.y >= 0) && ((v1.x + v1.y) <= 1); }; @@ -13790,14 +13803,14 @@ var barycoord = new Vector3(); - return function getUV( point, p1, p2, p3, uv1, uv2, uv3, target ) { + return function getUV(point, p1, p2, p3, uv1, uv2, uv3, target) { - this.getBarycoord( point, p1, p2, p3, barycoord ); + this.getBarycoord(point, p1, p2, p3, barycoord); - target.set( 0, 0 ); - target.addScaledVector( uv1, barycoord.x ); - target.addScaledVector( uv2, barycoord.y ); - target.addScaledVector( uv3, barycoord.z ); + target.set(0, 0); + target.addScaledVector(uv1, barycoord.x); + target.addScaledVector(uv2, barycoord.y); + target.addScaledVector(uv3, barycoord.z); return target; @@ -13805,25 +13818,25 @@ }() - } ); + }); - Object.assign( Triangle.prototype, { + Object.assign(Triangle.prototype, { - set: function ( a, b, c ) { + set: function (a, b, c) { - this.a.copy( a ); - this.b.copy( b ); - this.c.copy( c ); + this.a.copy(a); + this.b.copy(b); + this.c.copy(c); return this; }, - setFromPointsAndIndices: function ( points, i0, i1, i2 ) { + setFromPointsAndIndices: function (points, i0, i1, i2) { - this.a.copy( points[ i0 ] ); - this.b.copy( points[ i1 ] ); - this.c.copy( points[ i2 ] ); + this.a.copy(points[i0]); + this.b.copy(points[i1]); + this.c.copy(points[i2]); return this; @@ -13831,15 +13844,15 @@ clone: function () { - return new this.constructor().copy( this ); + return new this.constructor().copy(this); }, - copy: function ( triangle ) { + copy: function (triangle) { - this.a.copy( triangle.a ); - this.b.copy( triangle.b ); - this.c.copy( triangle.c ); + this.a.copy(triangle.a); + this.b.copy(triangle.b); + this.c.copy(triangle.c); return this; @@ -13852,68 +13865,68 @@ return function getArea() { - v0.subVectors( this.c, this.b ); - v1.subVectors( this.a, this.b ); + v0.subVectors(this.c, this.b); + v1.subVectors(this.a, this.b); - return v0.cross( v1 ).length() * 0.5; + return v0.cross(v1).length() * 0.5; }; }(), - getMidpoint: function ( target ) { + getMidpoint: function (target) { - if ( target === undefined ) { + if (target === undefined) { - console.warn( 'THREE.Triangle: .getMidpoint() target is now required' ); + console.warn('THREE.Triangle: .getMidpoint() target is now required'); target = new Vector3(); } - return target.addVectors( this.a, this.b ).add( this.c ).multiplyScalar( 1 / 3 ); + return target.addVectors(this.a, this.b).add(this.c).multiplyScalar(1 / 3); }, - getNormal: function ( target ) { + getNormal: function (target) { - return Triangle.getNormal( this.a, this.b, this.c, target ); + return Triangle.getNormal(this.a, this.b, this.c, target); }, - getPlane: function ( target ) { + getPlane: function (target) { - if ( target === undefined ) { + if (target === undefined) { - console.warn( 'THREE.Triangle: .getPlane() target is now required' ); + console.warn('THREE.Triangle: .getPlane() target is now required'); target = new Vector3(); } - return target.setFromCoplanarPoints( this.a, this.b, this.c ); + return target.setFromCoplanarPoints(this.a, this.b, this.c); }, - getBarycoord: function ( point, target ) { + getBarycoord: function (point, target) { - return Triangle.getBarycoord( point, this.a, this.b, this.c, target ); + return Triangle.getBarycoord(point, this.a, this.b, this.c, target); }, - containsPoint: function ( point ) { + containsPoint: function (point) { - return Triangle.containsPoint( point, this.a, this.b, this.c ); + return Triangle.containsPoint(point, this.a, this.b, this.c); }, - getUV: function ( point, uv1, uv2, uv3, result ) { + getUV: function (point, uv1, uv2, uv3, result) { - return Triangle.getUV( point, this.a, this.b, this.c, uv1, uv2, uv3, result ); + return Triangle.getUV(point, this.a, this.b, this.c, uv1, uv2, uv3, result); }, - intersectsBox: function ( box ) { + intersectsBox: function (box) { - return box.intersectsTriangle( this ); + return box.intersectsTriangle(this); }, @@ -13926,11 +13939,11 @@ var vbp = new Vector3(); var vcp = new Vector3(); - return function closestPointToPoint( p, target ) { + return function closestPointToPoint(p, target) { - if ( target === undefined ) { + if (target === undefined) { - console.warn( 'THREE.Triangle: .closestPointToPoint() target is now required' ); + console.warn('THREE.Triangle: .closestPointToPoint() target is now required'); target = new Vector3(); } @@ -13944,84 +13957,84 @@ // basically, we're distinguishing which of the voronoi regions of the triangle // the point lies in with the minimum amount of redundant computation. - vab.subVectors( b, a ); - vac.subVectors( c, a ); - vap.subVectors( p, a ); - var d1 = vab.dot( vap ); - var d2 = vac.dot( vap ); - if ( d1 <= 0 && d2 <= 0 ) { + vab.subVectors(b, a); + vac.subVectors(c, a); + vap.subVectors(p, a); + var d1 = vab.dot(vap); + var d2 = vac.dot(vap); + if (d1 <= 0 && d2 <= 0) { // vertex region of A; barycentric coords (1, 0, 0) - return target.copy( a ); + return target.copy(a); } - vbp.subVectors( p, b ); - var d3 = vab.dot( vbp ); - var d4 = vac.dot( vbp ); - if ( d3 >= 0 && d4 <= d3 ) { + vbp.subVectors(p, b); + var d3 = vab.dot(vbp); + var d4 = vac.dot(vbp); + if (d3 >= 0 && d4 <= d3) { // vertex region of B; barycentric coords (0, 1, 0) - return target.copy( b ); + return target.copy(b); } var vc = d1 * d4 - d3 * d2; - if ( vc <= 0 && d1 >= 0 && d3 <= 0 ) { + if (vc <= 0 && d1 >= 0 && d3 <= 0) { - v = d1 / ( d1 - d3 ); + v = d1 / (d1 - d3); // edge region of AB; barycentric coords (1-v, v, 0) - return target.copy( a ).addScaledVector( vab, v ); + return target.copy(a).addScaledVector(vab, v); } - vcp.subVectors( p, c ); - var d5 = vab.dot( vcp ); - var d6 = vac.dot( vcp ); - if ( d6 >= 0 && d5 <= d6 ) { + vcp.subVectors(p, c); + var d5 = vab.dot(vcp); + var d6 = vac.dot(vcp); + if (d6 >= 0 && d5 <= d6) { // vertex region of C; barycentric coords (0, 0, 1) - return target.copy( c ); + return target.copy(c); } var vb = d5 * d2 - d1 * d6; - if ( vb <= 0 && d2 >= 0 && d6 <= 0 ) { + if (vb <= 0 && d2 >= 0 && d6 <= 0) { - w = d2 / ( d2 - d6 ); + w = d2 / (d2 - d6); // edge region of AC; barycentric coords (1-w, 0, w) - return target.copy( a ).addScaledVector( vac, w ); + return target.copy(a).addScaledVector(vac, w); } var va = d3 * d6 - d5 * d4; - if ( va <= 0 && ( d4 - d3 ) >= 0 && ( d5 - d6 ) >= 0 ) { + if (va <= 0 && (d4 - d3) >= 0 && (d5 - d6) >= 0) { - vbc.subVectors( c, b ); - w = ( d4 - d3 ) / ( ( d4 - d3 ) + ( d5 - d6 ) ); + vbc.subVectors(c, b); + w = (d4 - d3) / ((d4 - d3) + (d5 - d6)); // edge region of BC; barycentric coords (0, 1-w, w) - return target.copy( b ).addScaledVector( vbc, w ); // edge region of BC + return target.copy(b).addScaledVector(vbc, w); // edge region of BC } // face region - var denom = 1 / ( va + vb + vc ); + var denom = 1 / (va + vb + vc); // u = va * denom v = vb * denom; w = vc * denom; - return target.copy( a ).addScaledVector( vab, v ).addScaledVector( vac, w ); + return target.copy(a).addScaledVector(vab, v).addScaledVector(vac, w); }; }(), - equals: function ( triangle ) { + equals: function (triangle) { - return triangle.a.equals( this.a ) && triangle.b.equals( this.b ) && triangle.c.equals( this.c ); + return triangle.a.equals(this.a) && triangle.b.equals(this.b) && triangle.c.equals(this.c); } - } ); + }); /** * @author mrdoob / http://mrdoob.com/ @@ -14058,13 +14071,13 @@ * } */ - function MeshBasicMaterial( parameters ) { + function MeshBasicMaterial(parameters) { - Material.call( this ); + Material.call(this); this.type = 'MeshBasicMaterial'; - this.color = new Color( 0xffffff ); // emissive + this.color = new Color(0xffffff); // emissive this.map = null; @@ -14093,20 +14106,20 @@ this.lights = false; - this.setValues( parameters ); + this.setValues(parameters); } - MeshBasicMaterial.prototype = Object.create( Material.prototype ); + MeshBasicMaterial.prototype = Object.create(Material.prototype); MeshBasicMaterial.prototype.constructor = MeshBasicMaterial; MeshBasicMaterial.prototype.isMeshBasicMaterial = true; - MeshBasicMaterial.prototype.copy = function ( source ) { + MeshBasicMaterial.prototype.copy = function (source) { - Material.prototype.copy.call( this, source ); + Material.prototype.copy.call(this, source); - this.color.copy( source.color ); + this.color.copy(source.color); this.map = source.map; @@ -14144,14 +14157,14 @@ * @author jonobr1 / http://jonobr1.com/ */ - function Mesh( geometry, material ) { + function Mesh(geometry, material) { - Object3D.call( this ); + Object3D.call(this); this.type = 'Mesh'; this.geometry = geometry !== undefined ? geometry : new BufferGeometry(); - this.material = material !== undefined ? material : new MeshBasicMaterial( { color: Math.random() * 0xffffff } ); + this.material = material !== undefined ? material : new MeshBasicMaterial({ color: Math.random() * 0xffffff }); this.drawMode = TrianglesDrawMode; @@ -14159,33 +14172,33 @@ } - Mesh.prototype = Object.assign( Object.create( Object3D.prototype ), { + Mesh.prototype = Object.assign(Object.create(Object3D.prototype), { constructor: Mesh, isMesh: true, - setDrawMode: function ( value ) { + setDrawMode: function (value) { this.drawMode = value; }, - copy: function ( source ) { + copy: function (source) { - Object3D.prototype.copy.call( this, source ); + Object3D.prototype.copy.call(this, source); this.drawMode = source.drawMode; - if ( source.morphTargetInfluences !== undefined ) { + if (source.morphTargetInfluences !== undefined) { this.morphTargetInfluences = source.morphTargetInfluences.slice(); } - if ( source.morphTargetDictionary !== undefined ) { + if (source.morphTargetDictionary !== undefined) { - this.morphTargetDictionary = Object.assign( {}, source.morphTargetDictionary ); + this.morphTargetDictionary = Object.assign({}, source.morphTargetDictionary); } @@ -14198,26 +14211,26 @@ var geometry = this.geometry; var m, ml, name; - if ( geometry.isBufferGeometry ) { + if (geometry.isBufferGeometry) { var morphAttributes = geometry.morphAttributes; - var keys = Object.keys( morphAttributes ); + var keys = Object.keys(morphAttributes); - if ( keys.length > 0 ) { + if (keys.length > 0) { - var morphAttribute = morphAttributes[ keys[ 0 ] ]; + var morphAttribute = morphAttributes[keys[0]]; - if ( morphAttribute !== undefined ) { + if (morphAttribute !== undefined) { this.morphTargetInfluences = []; this.morphTargetDictionary = {}; - for ( m = 0, ml = morphAttribute.length; m < ml; m ++ ) { + for (m = 0, ml = morphAttribute.length; m < ml; m++) { - name = morphAttribute[ m ].name || String( m ); + name = morphAttribute[m].name || String(m); - this.morphTargetInfluences.push( 0 ); - this.morphTargetDictionary[ name ] = m; + this.morphTargetInfluences.push(0); + this.morphTargetDictionary[name] = m; } @@ -14229,17 +14242,17 @@ var morphTargets = geometry.morphTargets; - if ( morphTargets !== undefined && morphTargets.length > 0 ) { + if (morphTargets !== undefined && morphTargets.length > 0) { this.morphTargetInfluences = []; this.morphTargetDictionary = {}; - for ( m = 0, ml = morphTargets.length; m < ml; m ++ ) { + for (m = 0, ml = morphTargets.length; m < ml; m++) { - name = morphTargets[ m ].name || String( m ); + name = morphTargets[m].name || String(m); - this.morphTargetInfluences.push( 0 ); - this.morphTargetDictionary[ name ] = m; + this.morphTargetInfluences.push(0); + this.morphTargetDictionary[name] = m; } @@ -14249,7 +14262,7 @@ }, - raycast: ( function () { + raycast: (function () { var inverseMatrix = new Matrix4(); var ray = new Ray(); @@ -14270,28 +14283,28 @@ var intersectionPoint = new Vector3(); var intersectionPointWorld = new Vector3(); - function checkIntersection( object, material, raycaster, ray, pA, pB, pC, point ) { + function checkIntersection(object, material, raycaster, ray, pA, pB, pC, point) { var intersect; - if ( material.side === BackSide ) { + if (material.side === BackSide) { - intersect = ray.intersectTriangle( pC, pB, pA, true, point ); + intersect = ray.intersectTriangle(pC, pB, pA, true, point); } else { - intersect = ray.intersectTriangle( pA, pB, pC, material.side !== DoubleSide, point ); + intersect = ray.intersectTriangle(pA, pB, pC, material.side !== DoubleSide, point); } - if ( intersect === null ) return null; + if (intersect === null) return null; - intersectionPointWorld.copy( point ); - intersectionPointWorld.applyMatrix4( object.matrixWorld ); + intersectionPointWorld.copy(point); + intersectionPointWorld.applyMatrix4(object.matrixWorld); - var distance = raycaster.ray.origin.distanceTo( intersectionPointWorld ); + var distance = raycaster.ray.origin.distanceTo(intersectionPointWorld); - if ( distance < raycaster.near || distance > raycaster.far ) return null; + if (distance < raycaster.near || distance > raycaster.far) return null; return { distance: distance, @@ -14301,28 +14314,28 @@ } - function checkBufferGeometryIntersection( object, material, raycaster, ray, position, uv, a, b, c ) { + function checkBufferGeometryIntersection(object, material, raycaster, ray, position, uv, a, b, c) { - vA.fromBufferAttribute( position, a ); - vB.fromBufferAttribute( position, b ); - vC.fromBufferAttribute( position, c ); + vA.fromBufferAttribute(position, a); + vB.fromBufferAttribute(position, b); + vC.fromBufferAttribute(position, c); - var intersection = checkIntersection( object, material, raycaster, ray, vA, vB, vC, intersectionPoint ); + var intersection = checkIntersection(object, material, raycaster, ray, vA, vB, vC, intersectionPoint); - if ( intersection ) { + if (intersection) { - if ( uv ) { + if (uv) { - uvA.fromBufferAttribute( uv, a ); - uvB.fromBufferAttribute( uv, b ); - uvC.fromBufferAttribute( uv, c ); + uvA.fromBufferAttribute(uv, a); + uvB.fromBufferAttribute(uv, b); + uvC.fromBufferAttribute(uv, c); - intersection.uv = Triangle.getUV( intersectionPoint, vA, vB, vC, uvA, uvB, uvC, new Vector2() ); + intersection.uv = Triangle.getUV(intersectionPoint, vA, vB, vC, uvA, uvB, uvC, new Vector2()); } - var face = new Face3( a, b, c ); - Triangle.getNormal( vA, vB, vC, face.normal ); + var face = new Face3(a, b, c); + Triangle.getNormal(vA, vB, vC, face.normal); intersection.face = face; @@ -14332,39 +14345,39 @@ } - return function raycast( raycaster, intersects ) { + return function raycast(raycaster, intersects) { var geometry = this.geometry; var material = this.material; var matrixWorld = this.matrixWorld; - if ( material === undefined ) return; + if (material === undefined) return; // Checking boundingSphere distance to ray - if ( geometry.boundingSphere === null ) geometry.computeBoundingSphere(); + if (geometry.boundingSphere === null) geometry.computeBoundingSphere(); - sphere.copy( geometry.boundingSphere ); - sphere.applyMatrix4( matrixWorld ); + sphere.copy(geometry.boundingSphere); + sphere.applyMatrix4(matrixWorld); - if ( raycaster.ray.intersectsSphere( sphere ) === false ) return; + if (raycaster.ray.intersectsSphere(sphere) === false) return; // - inverseMatrix.getInverse( matrixWorld ); - ray.copy( raycaster.ray ).applyMatrix4( inverseMatrix ); + inverseMatrix.getInverse(matrixWorld); + ray.copy(raycaster.ray).applyMatrix4(inverseMatrix); // Check boundingBox before continuing - if ( geometry.boundingBox !== null ) { + if (geometry.boundingBox !== null) { - if ( ray.intersectsBox( geometry.boundingBox ) === false ) return; + if (ray.intersectsBox(geometry.boundingBox) === false) return; } var intersection; - if ( geometry.isBufferGeometry ) { + if (geometry.isBufferGeometry) { var a, b, c; var index = geometry.index; @@ -14376,32 +14389,32 @@ var group, groupMaterial; var start, end; - if ( index !== null ) { + if (index !== null) { // indexed buffer geometry - if ( Array.isArray( material ) ) { + if (Array.isArray(material)) { - for ( i = 0, il = groups.length; i < il; i ++ ) { + for (i = 0, il = groups.length; i < il; i++) { - group = groups[ i ]; - groupMaterial = material[ group.materialIndex ]; + group = groups[i]; + groupMaterial = material[group.materialIndex]; - start = Math.max( group.start, drawRange.start ); - end = Math.min( ( group.start + group.count ), ( drawRange.start + drawRange.count ) ); + start = Math.max(group.start, drawRange.start); + end = Math.min((group.start + group.count), (drawRange.start + drawRange.count)); - for ( j = start, jl = end; j < jl; j += 3 ) { + for (j = start, jl = end; j < jl; j += 3) { - a = index.getX( j ); - b = index.getX( j + 1 ); - c = index.getX( j + 2 ); + a = index.getX(j); + b = index.getX(j + 1); + c = index.getX(j + 2); - intersection = checkBufferGeometryIntersection( this, groupMaterial, raycaster, ray, position, uv, a, b, c ); + intersection = checkBufferGeometryIntersection(this, groupMaterial, raycaster, ray, position, uv, a, b, c); - if ( intersection ) { + if (intersection) { - intersection.faceIndex = Math.floor( j / 3 ); // triangle number in indexed buffer semantics - intersects.push( intersection ); + intersection.faceIndex = Math.floor(j / 3); // triangle number in indexed buffer semantics + intersects.push(intersection); } @@ -14411,21 +14424,21 @@ } else { - start = Math.max( 0, drawRange.start ); - end = Math.min( index.count, ( drawRange.start + drawRange.count ) ); + start = Math.max(0, drawRange.start); + end = Math.min(index.count, (drawRange.start + drawRange.count)); - for ( i = start, il = end; i < il; i += 3 ) { + for (i = start, il = end; i < il; i += 3) { - a = index.getX( i ); - b = index.getX( i + 1 ); - c = index.getX( i + 2 ); + a = index.getX(i); + b = index.getX(i + 1); + c = index.getX(i + 2); - intersection = checkBufferGeometryIntersection( this, material, raycaster, ray, position, uv, a, b, c ); + intersection = checkBufferGeometryIntersection(this, material, raycaster, ray, position, uv, a, b, c); - if ( intersection ) { + if (intersection) { - intersection.faceIndex = Math.floor( i / 3 ); // triangle number in indexed buffer semantics - intersects.push( intersection ); + intersection.faceIndex = Math.floor(i / 3); // triangle number in indexed buffer semantics + intersects.push(intersection); } @@ -14433,32 +14446,32 @@ } - } else if ( position !== undefined ) { + } else if (position !== undefined) { // non-indexed buffer geometry - if ( Array.isArray( material ) ) { + if (Array.isArray(material)) { - for ( i = 0, il = groups.length; i < il; i ++ ) { + for (i = 0, il = groups.length; i < il; i++) { - group = groups[ i ]; - groupMaterial = material[ group.materialIndex ]; + group = groups[i]; + groupMaterial = material[group.materialIndex]; - start = Math.max( group.start, drawRange.start ); - end = Math.min( ( group.start + group.count ), ( drawRange.start + drawRange.count ) ); + start = Math.max(group.start, drawRange.start); + end = Math.min((group.start + group.count), (drawRange.start + drawRange.count)); - for ( j = start, jl = end; j < jl; j += 3 ) { + for (j = start, jl = end; j < jl; j += 3) { a = j; b = j + 1; c = j + 2; - intersection = checkBufferGeometryIntersection( this, groupMaterial, raycaster, ray, position, uv, a, b, c ); + intersection = checkBufferGeometryIntersection(this, groupMaterial, raycaster, ray, position, uv, a, b, c); - if ( intersection ) { + if (intersection) { - intersection.faceIndex = Math.floor( j / 3 ); // triangle number in non-indexed buffer semantics - intersects.push( intersection ); + intersection.faceIndex = Math.floor(j / 3); // triangle number in non-indexed buffer semantics + intersects.push(intersection); } @@ -14468,21 +14481,21 @@ } else { - start = Math.max( 0, drawRange.start ); - end = Math.min( position.count, ( drawRange.start + drawRange.count ) ); + start = Math.max(0, drawRange.start); + end = Math.min(position.count, (drawRange.start + drawRange.count)); - for ( i = start, il = end; i < il; i += 3 ) { + for (i = start, il = end; i < il; i += 3) { a = i; b = i + 1; c = i + 2; - intersection = checkBufferGeometryIntersection( this, material, raycaster, ray, position, uv, a, b, c ); + intersection = checkBufferGeometryIntersection(this, material, raycaster, ray, position, uv, a, b, c); - if ( intersection ) { + if (intersection) { - intersection.faceIndex = Math.floor( i / 3 ); // triangle number in non-indexed buffer semantics - intersects.push( intersection ); + intersection.faceIndex = Math.floor(i / 3); // triangle number in non-indexed buffer semantics + intersects.push(intersection); } @@ -14492,55 +14505,55 @@ } - } else if ( geometry.isGeometry ) { + } else if (geometry.isGeometry) { var fvA, fvB, fvC; - var isMultiMaterial = Array.isArray( material ); + var isMultiMaterial = Array.isArray(material); var vertices = geometry.vertices; var faces = geometry.faces; var uvs; - var faceVertexUvs = geometry.faceVertexUvs[ 0 ]; - if ( faceVertexUvs.length > 0 ) uvs = faceVertexUvs; + var faceVertexUvs = geometry.faceVertexUvs[0]; + if (faceVertexUvs.length > 0) uvs = faceVertexUvs; - for ( var f = 0, fl = faces.length; f < fl; f ++ ) { + for (var f = 0, fl = faces.length; f < fl; f++) { - var face = faces[ f ]; - var faceMaterial = isMultiMaterial ? material[ face.materialIndex ] : material; + var face = faces[f]; + var faceMaterial = isMultiMaterial ? material[face.materialIndex] : material; - if ( faceMaterial === undefined ) continue; + if (faceMaterial === undefined) continue; - fvA = vertices[ face.a ]; - fvB = vertices[ face.b ]; - fvC = vertices[ face.c ]; + fvA = vertices[face.a]; + fvB = vertices[face.b]; + fvC = vertices[face.c]; - if ( faceMaterial.morphTargets === true ) { + if (faceMaterial.morphTargets === true) { var morphTargets = geometry.morphTargets; var morphInfluences = this.morphTargetInfluences; - vA.set( 0, 0, 0 ); - vB.set( 0, 0, 0 ); - vC.set( 0, 0, 0 ); + vA.set(0, 0, 0); + vB.set(0, 0, 0); + vC.set(0, 0, 0); - for ( var t = 0, tl = morphTargets.length; t < tl; t ++ ) { + for (var t = 0, tl = morphTargets.length; t < tl; t++) { - var influence = morphInfluences[ t ]; + var influence = morphInfluences[t]; - if ( influence === 0 ) continue; + if (influence === 0) continue; - var targets = morphTargets[ t ].vertices; + var targets = morphTargets[t].vertices; - vA.addScaledVector( tempA.subVectors( targets[ face.a ], fvA ), influence ); - vB.addScaledVector( tempB.subVectors( targets[ face.b ], fvB ), influence ); - vC.addScaledVector( tempC.subVectors( targets[ face.c ], fvC ), influence ); + vA.addScaledVector(tempA.subVectors(targets[face.a], fvA), influence); + vB.addScaledVector(tempB.subVectors(targets[face.b], fvB), influence); + vC.addScaledVector(tempC.subVectors(targets[face.c], fvC), influence); } - vA.add( fvA ); - vB.add( fvB ); - vC.add( fvC ); + vA.add(fvA); + vB.add(fvB); + vC.add(fvC); fvA = vA; fvB = vB; @@ -14548,24 +14561,24 @@ } - intersection = checkIntersection( this, faceMaterial, raycaster, ray, fvA, fvB, fvC, intersectionPoint ); + intersection = checkIntersection(this, faceMaterial, raycaster, ray, fvA, fvB, fvC, intersectionPoint); - if ( intersection ) { + if (intersection) { - if ( uvs && uvs[ f ] ) { + if (uvs && uvs[f]) { - var uvs_f = uvs[ f ]; - uvA.copy( uvs_f[ 0 ] ); - uvB.copy( uvs_f[ 1 ] ); - uvC.copy( uvs_f[ 2 ] ); + var uvs_f = uvs[f]; + uvA.copy(uvs_f[0]); + uvB.copy(uvs_f[1]); + uvC.copy(uvs_f[2]); - intersection.uv = Triangle.getUV( intersectionPoint, fvA, fvB, fvC, uvA, uvB, uvC, new Vector2() ); + intersection.uv = Triangle.getUV(intersectionPoint, fvA, fvB, fvC, uvA, uvB, uvC, new Vector2()); } intersection.face = face; intersection.faceIndex = f; - intersects.push( intersection ); + intersects.push(intersection); } @@ -14575,130 +14588,130 @@ }; - }() ), + }()), clone: function () { - return new this.constructor( this.geometry, this.material ).copy( this ); + return new this.constructor(this.geometry, this.material).copy(this); } - } ); + }); /** * @author mrdoob / http://mrdoob.com/ */ - function WebGLBackground( renderer, state, objects, premultipliedAlpha ) { + function WebGLBackground(renderer, state, objects, premultipliedAlpha) { - var clearColor = new Color( 0x000000 ); + var clearColor = new Color(0x000000); var clearAlpha = 0; var planeMesh; var boxMesh; - function render( renderList, scene, camera, forceClear ) { + function render(renderList, scene, camera, forceClear) { var background = scene.background; - if ( background === null ) { + if (background === null) { - setClear( clearColor, clearAlpha ); + setClear(clearColor, clearAlpha); - } else if ( background && background.isColor ) { + } else if (background && background.isColor) { - setClear( background, 1 ); + setClear(background, 1); forceClear = true; } - if ( renderer.autoClear || forceClear ) { + if (renderer.autoClear || forceClear) { - renderer.clear( renderer.autoClearColor, renderer.autoClearDepth, renderer.autoClearStencil ); + renderer.clear(renderer.autoClearColor, renderer.autoClearDepth, renderer.autoClearStencil); } - if ( background && ( background.isCubeTexture || background.isWebGLRenderTargetCube ) ) { + if (background && (background.isCubeTexture || background.isWebGLRenderTargetCube)) { - if ( boxMesh === undefined ) { + if (boxMesh === undefined) { boxMesh = new Mesh( - new BoxBufferGeometry( 1, 1, 1 ), - new ShaderMaterial( { + new BoxBufferGeometry(1, 1, 1), + new ShaderMaterial({ type: 'BackgroundCubeMaterial', - uniforms: UniformsUtils.clone( ShaderLib.cube.uniforms ), + uniforms: UniformsUtils.clone(ShaderLib.cube.uniforms), vertexShader: ShaderLib.cube.vertexShader, fragmentShader: ShaderLib.cube.fragmentShader, side: BackSide, depthTest: true, depthWrite: false, fog: false - } ) + }) ); - boxMesh.geometry.removeAttribute( 'normal' ); - boxMesh.geometry.removeAttribute( 'uv' ); + boxMesh.geometry.removeAttribute('normal'); + boxMesh.geometry.removeAttribute('uv'); - boxMesh.onBeforeRender = function ( renderer, scene, camera ) { + boxMesh.onBeforeRender = function (renderer, scene, camera) { - this.matrixWorld.copyPosition( camera.matrixWorld ); + this.matrixWorld.copyPosition(camera.matrixWorld); }; - objects.update( boxMesh ); + objects.update(boxMesh); } - boxMesh.material.uniforms.tCube.value = ( background.isWebGLRenderTargetCube ) ? background.texture : background; - boxMesh.material.uniforms.tFlip.value = ( background.isWebGLRenderTargetCube ) ? 1 : - 1; + boxMesh.material.uniforms.tCube.value = (background.isWebGLRenderTargetCube) ? background.texture : background; + boxMesh.material.uniforms.tFlip.value = (background.isWebGLRenderTargetCube) ? 1 : - 1; // push to the pre-sorted opaque render list - renderList.push( boxMesh, boxMesh.geometry, boxMesh.material, 0, null ); + renderList.push(boxMesh, boxMesh.geometry, boxMesh.material, 0, null); - } else if ( background && background.isTexture ) { + } else if (background && background.isTexture) { - if ( planeMesh === undefined ) { + if (planeMesh === undefined) { planeMesh = new Mesh( - new PlaneBufferGeometry( 2, 2 ), - new ShaderMaterial( { + new PlaneBufferGeometry(2, 2), + new ShaderMaterial({ type: 'BackgroundMaterial', - uniforms: UniformsUtils.clone( ShaderLib.background.uniforms ), + uniforms: UniformsUtils.clone(ShaderLib.background.uniforms), vertexShader: ShaderLib.background.vertexShader, fragmentShader: ShaderLib.background.fragmentShader, side: FrontSide, depthTest: true, depthWrite: false, fog: false - } ) + }) ); - planeMesh.geometry.removeAttribute( 'normal' ); + planeMesh.geometry.removeAttribute('normal'); - objects.update( planeMesh ); + objects.update(planeMesh); } planeMesh.material.uniforms.t2D.value = background; - if ( background.matrixAutoUpdate === true ) { + if (background.matrixAutoUpdate === true) { background.updateMatrix(); } - planeMesh.material.uniforms.uvTransform.value.copy( background.matrix ); + planeMesh.material.uniforms.uvTransform.value.copy(background.matrix); // push to the pre-sorted opaque render list - renderList.push( planeMesh, planeMesh.geometry, planeMesh.material, 0, null ); + renderList.push(planeMesh, planeMesh.geometry, planeMesh.material, 0, null); } } - function setClear( color, alpha ) { + function setClear(color, alpha) { - state.buffers.color.setClear( color.r, color.g, color.b, alpha, premultipliedAlpha ); + state.buffers.color.setClear(color.r, color.g, color.b, alpha, premultipliedAlpha); } @@ -14709,11 +14722,11 @@ return clearColor; }, - setClearColor: function ( color, alpha ) { + setClearColor: function (color, alpha) { - clearColor.set( color ); + clearColor.set(color); clearAlpha = alpha !== undefined ? alpha : 1; - setClear( clearColor, clearAlpha ); + setClear(clearColor, clearAlpha); }, getClearAlpha: function () { @@ -14721,10 +14734,10 @@ return clearAlpha; }, - setClearAlpha: function ( alpha ) { + setClearAlpha: function (alpha) { clearAlpha = alpha; - setClear( clearColor, clearAlpha ); + setClear(clearColor, clearAlpha); }, render: render @@ -14737,48 +14750,48 @@ * @author mrdoob / http://mrdoob.com/ */ - function WebGLBufferRenderer( gl, extensions, info, capabilities ) { + function WebGLBufferRenderer(gl, extensions, info, capabilities) { var mode; - function setMode( value ) { + function setMode(value) { mode = value; } - function render( start, count ) { + function render(start, count) { - gl.drawArrays( mode, start, count ); + gl.drawArrays(mode, start, count); - info.update( count, mode ); + info.update(count, mode); } - function renderInstances( geometry, start, count ) { + function renderInstances(geometry, start, count) { var extension; - if ( capabilities.isWebGL2 ) { + if (capabilities.isWebGL2) { extension = gl; } else { - extension = extensions.get( 'ANGLE_instanced_arrays' ); + extension = extensions.get('ANGLE_instanced_arrays'); - if ( extension === null ) { + if (extension === null) { - console.error( 'THREE.WebGLBufferRenderer: using THREE.InstancedBufferGeometry but hardware does not support extension ANGLE_instanced_arrays.' ); + console.error('THREE.WebGLBufferRenderer: using THREE.InstancedBufferGeometry but hardware does not support extension ANGLE_instanced_arrays.'); return; } } - extension[ capabilities.isWebGL2 ? 'drawArraysInstanced' : 'drawArraysInstancedANGLE' ]( mode, start, count, geometry.maxInstancedCount ); + extension[capabilities.isWebGL2 ? 'drawArraysInstanced' : 'drawArraysInstancedANGLE'](mode, start, count, geometry.maxInstancedCount); - info.update( count, mode, geometry.maxInstancedCount ); + info.update(count, mode, geometry.maxInstancedCount); } @@ -14794,19 +14807,19 @@ * @author mrdoob / http://mrdoob.com/ */ - function WebGLCapabilities( gl, extensions, parameters ) { + function WebGLCapabilities(gl, extensions, parameters) { var maxAnisotropy; function getMaxAnisotropy() { - if ( maxAnisotropy !== undefined ) return maxAnisotropy; + if (maxAnisotropy !== undefined) return maxAnisotropy; - var extension = extensions.get( 'EXT_texture_filter_anisotropic' ); + var extension = extensions.get('EXT_texture_filter_anisotropic'); - if ( extension !== null ) { + if (extension !== null) { - maxAnisotropy = gl.getParameter( extension.MAX_TEXTURE_MAX_ANISOTROPY_EXT ); + maxAnisotropy = gl.getParameter(extension.MAX_TEXTURE_MAX_ANISOTROPY_EXT); } else { @@ -14818,12 +14831,12 @@ } - function getMaxPrecision( precision ) { + function getMaxPrecision(precision) { - if ( precision === 'highp' ) { + if (precision === 'highp') { - if ( gl.getShaderPrecisionFormat( 35633, 36338 ).precision > 0 && - gl.getShaderPrecisionFormat( 35632, 36338 ).precision > 0 ) { + if (gl.getShaderPrecisionFormat(35633, 36338).precision > 0 && + gl.getShaderPrecisionFormat(35632, 36338).precision > 0) { return 'highp'; @@ -14833,10 +14846,10 @@ } - if ( precision === 'mediump' ) { + if (precision === 'mediump') { - if ( gl.getShaderPrecisionFormat( 35633, 36337 ).precision > 0 && - gl.getShaderPrecisionFormat( 35632, 36337 ).precision > 0 ) { + if (gl.getShaderPrecisionFormat(35633, 36337).precision > 0 && + gl.getShaderPrecisionFormat(35632, 36337).precision > 0) { return 'mediump'; @@ -14851,29 +14864,29 @@ var isWebGL2 = typeof WebGL2RenderingContext !== 'undefined' && gl instanceof WebGL2RenderingContext; var precision = parameters.precision !== undefined ? parameters.precision : 'highp'; - var maxPrecision = getMaxPrecision( precision ); + var maxPrecision = getMaxPrecision(precision); - if ( maxPrecision !== precision ) { + if (maxPrecision !== precision) { - console.warn( 'THREE.WebGLRenderer:', precision, 'not supported, using', maxPrecision, 'instead.' ); + console.warn('THREE.WebGLRenderer:', precision, 'not supported, using', maxPrecision, 'instead.'); precision = maxPrecision; } var logarithmicDepthBuffer = parameters.logarithmicDepthBuffer === true; - var maxTextures = gl.getParameter( 34930 ); - var maxVertexTextures = gl.getParameter( 35660 ); - var maxTextureSize = gl.getParameter( 3379 ); - var maxCubemapSize = gl.getParameter( 34076 ); + var maxTextures = gl.getParameter(34930); + var maxVertexTextures = gl.getParameter(35660); + var maxTextureSize = gl.getParameter(3379); + var maxCubemapSize = gl.getParameter(34076); - var maxAttributes = gl.getParameter( 34921 ); - var maxVertexUniforms = gl.getParameter( 36347 ); - var maxVaryings = gl.getParameter( 36348 ); - var maxFragmentUniforms = gl.getParameter( 36349 ); + var maxAttributes = gl.getParameter(34921); + var maxVertexUniforms = gl.getParameter(36347); + var maxVaryings = gl.getParameter(36348); + var maxFragmentUniforms = gl.getParameter(36349); var vertexTextures = maxVertexTextures > 0; - var floatFragmentTextures = isWebGL2 || !! extensions.get( 'OES_texture_float' ); + var floatFragmentTextures = isWebGL2 || !!extensions.get('OES_texture_float'); var floatVertexTextures = vertexTextures && floatFragmentTextures; return { @@ -14926,7 +14939,7 @@ this.numPlanes = 0; this.numIntersection = 0; - this.init = function ( planes, enableLocalClipping, camera ) { + this.init = function (planes, enableLocalClipping, camera) { var enabled = planes.length !== 0 || @@ -14938,7 +14951,7 @@ localClippingEnabled = enableLocalClipping; - globalState = projectPlanes( planes, camera, 0 ); + globalState = projectPlanes(planes, camera, 0); numGlobalPlanes = planes.length; return enabled; @@ -14948,7 +14961,7 @@ this.beginShadows = function () { renderingShadows = true; - projectPlanes( null ); + projectPlanes(null); }; @@ -14959,17 +14972,17 @@ }; - this.setState = function ( planes, clipIntersection, clipShadows, camera, cache, fromCache ) { + this.setState = function (planes, clipIntersection, clipShadows, camera, cache, fromCache) { - if ( ! localClippingEnabled || planes === null || planes.length === 0 || renderingShadows && ! clipShadows ) { + if (!localClippingEnabled || planes === null || planes.length === 0 || renderingShadows && !clipShadows) { // there's no local clipping - if ( renderingShadows ) { + if (renderingShadows) { // there's no global clipping - projectPlanes( null ); + projectPlanes(null); } else { @@ -14986,11 +14999,11 @@ uniform.value = dstArray; // ensure unique state - dstArray = projectPlanes( planes, camera, lGlobal, fromCache ); + dstArray = projectPlanes(planes, camera, lGlobal, fromCache); - for ( var i = 0; i !== lGlobal; ++ i ) { + for (var i = 0; i !== lGlobal; ++i) { - dstArray[ i ] = globalState[ i ]; + dstArray[i] = globalState[i]; } @@ -15005,7 +15018,7 @@ function resetGlobalState() { - if ( uniform.value !== globalState ) { + if (uniform.value !== globalState) { uniform.value = globalState; uniform.needsUpdate = numGlobalPlanes > 0; @@ -15017,34 +15030,34 @@ } - function projectPlanes( planes, camera, dstOffset, skipTransform ) { + function projectPlanes(planes, camera, dstOffset, skipTransform) { var nPlanes = planes !== null ? planes.length : 0, dstArray = null; - if ( nPlanes !== 0 ) { + if (nPlanes !== 0) { dstArray = uniform.value; - if ( skipTransform !== true || dstArray === null ) { + if (skipTransform !== true || dstArray === null) { var flatSize = dstOffset + nPlanes * 4, viewMatrix = camera.matrixWorldInverse; - viewNormalMatrix.getNormalMatrix( viewMatrix ); + viewNormalMatrix.getNormalMatrix(viewMatrix); - if ( dstArray === null || dstArray.length < flatSize ) { + if (dstArray === null || dstArray.length < flatSize) { - dstArray = new Float32Array( flatSize ); + dstArray = new Float32Array(flatSize); } - for ( var i = 0, i4 = dstOffset; i !== nPlanes; ++ i, i4 += 4 ) { + for (var i = 0, i4 = dstOffset; i !== nPlanes; ++i, i4 += 4) { - plane.copy( planes[ i ] ).applyMatrix4( viewMatrix, viewNormalMatrix ); + plane.copy(planes[i]).applyMatrix4(viewMatrix, viewNormalMatrix); - plane.normal.toArray( dstArray, i4 ); - dstArray[ i4 + 3 ] = plane.constant; + plane.normal.toArray(dstArray, i4); + dstArray[i4 + 3] = plane.constant; } @@ -15067,52 +15080,52 @@ * @author mrdoob / http://mrdoob.com/ */ - function WebGLExtensions( gl ) { + function WebGLExtensions(gl) { var extensions = {}; return { - get: function ( name ) { + get: function (name) { - if ( extensions[ name ] !== undefined ) { + if (extensions[name] !== undefined) { - return extensions[ name ]; + return extensions[name]; } var extension; - switch ( name ) { + switch (name) { case 'WEBGL_depth_texture': - extension = gl.getExtension( 'WEBGL_depth_texture' ) || gl.getExtension( 'MOZ_WEBGL_depth_texture' ) || gl.getExtension( 'WEBKIT_WEBGL_depth_texture' ); + extension = gl.getExtension('WEBGL_depth_texture') || gl.getExtension('MOZ_WEBGL_depth_texture') || gl.getExtension('WEBKIT_WEBGL_depth_texture'); break; case 'EXT_texture_filter_anisotropic': - extension = gl.getExtension( 'EXT_texture_filter_anisotropic' ) || gl.getExtension( 'MOZ_EXT_texture_filter_anisotropic' ) || gl.getExtension( 'WEBKIT_EXT_texture_filter_anisotropic' ); + extension = gl.getExtension('EXT_texture_filter_anisotropic') || gl.getExtension('MOZ_EXT_texture_filter_anisotropic') || gl.getExtension('WEBKIT_EXT_texture_filter_anisotropic'); break; case 'WEBGL_compressed_texture_s3tc': - extension = gl.getExtension( 'WEBGL_compressed_texture_s3tc' ) || gl.getExtension( 'MOZ_WEBGL_compressed_texture_s3tc' ) || gl.getExtension( 'WEBKIT_WEBGL_compressed_texture_s3tc' ); + extension = gl.getExtension('WEBGL_compressed_texture_s3tc') || gl.getExtension('MOZ_WEBGL_compressed_texture_s3tc') || gl.getExtension('WEBKIT_WEBGL_compressed_texture_s3tc'); break; case 'WEBGL_compressed_texture_pvrtc': - extension = gl.getExtension( 'WEBGL_compressed_texture_pvrtc' ) || gl.getExtension( 'WEBKIT_WEBGL_compressed_texture_pvrtc' ); + extension = gl.getExtension('WEBGL_compressed_texture_pvrtc') || gl.getExtension('WEBKIT_WEBGL_compressed_texture_pvrtc'); break; default: - extension = gl.getExtension( name ); + extension = gl.getExtension(name); } - if ( extension === null ) { + if (extension === null) { - console.warn( 'THREE.WebGLRenderer: ' + name + ' extension not supported.' ); + console.warn('THREE.WebGLRenderer: ' + name + ' extension not supported.'); } - extensions[ name ] = extension; + extensions[name] = extension; return extension; @@ -15126,64 +15139,64 @@ * @author mrdoob / http://mrdoob.com/ */ - function WebGLGeometries( gl, attributes, info ) { + function WebGLGeometries(gl, attributes, info) { var geometries = {}; var wireframeAttributes = {}; - function onGeometryDispose( event ) { + function onGeometryDispose(event) { var geometry = event.target; - var buffergeometry = geometries[ geometry.id ]; + var buffergeometry = geometries[geometry.id]; - if ( buffergeometry.index !== null ) { + if (buffergeometry.index !== null) { - attributes.remove( buffergeometry.index ); + attributes.remove(buffergeometry.index); } - for ( var name in buffergeometry.attributes ) { + for (var name in buffergeometry.attributes) { - attributes.remove( buffergeometry.attributes[ name ] ); + attributes.remove(buffergeometry.attributes[name]); } - geometry.removeEventListener( 'dispose', onGeometryDispose ); + geometry.removeEventListener('dispose', onGeometryDispose); - delete geometries[ geometry.id ]; + delete geometries[geometry.id]; - var attribute = wireframeAttributes[ buffergeometry.id ]; + var attribute = wireframeAttributes[buffergeometry.id]; - if ( attribute ) { + if (attribute) { - attributes.remove( attribute ); - delete wireframeAttributes[ buffergeometry.id ]; + attributes.remove(attribute); + delete wireframeAttributes[buffergeometry.id]; } // - info.memory.geometries --; + info.memory.geometries--; } - function get( object, geometry ) { + function get(object, geometry) { - var buffergeometry = geometries[ geometry.id ]; + var buffergeometry = geometries[geometry.id]; - if ( buffergeometry ) return buffergeometry; + if (buffergeometry) return buffergeometry; - geometry.addEventListener( 'dispose', onGeometryDispose ); + geometry.addEventListener('dispose', onGeometryDispose); - if ( geometry.isBufferGeometry ) { + if (geometry.isBufferGeometry) { buffergeometry = geometry; - } else if ( geometry.isGeometry ) { + } else if (geometry.isGeometry) { - if ( geometry._bufferGeometry === undefined ) { + if (geometry._bufferGeometry === undefined) { - geometry._bufferGeometry = new BufferGeometry().setFromObject( object ); + geometry._bufferGeometry = new BufferGeometry().setFromObject(object); } @@ -15191,28 +15204,28 @@ } - geometries[ geometry.id ] = buffergeometry; + geometries[geometry.id] = buffergeometry; - info.memory.geometries ++; + info.memory.geometries++; return buffergeometry; } - function update( geometry ) { + function update(geometry) { var index = geometry.index; var geometryAttributes = geometry.attributes; - if ( index !== null ) { + if (index !== null) { - attributes.update( index, 34963 ); + attributes.update(index, 34963); } - for ( var name in geometryAttributes ) { + for (var name in geometryAttributes) { - attributes.update( geometryAttributes[ name ], 34962 ); + attributes.update(geometryAttributes[name], 34962); } @@ -15220,13 +15233,13 @@ var morphAttributes = geometry.morphAttributes; - for ( var name in morphAttributes ) { + for (var name in morphAttributes) { - var array = morphAttributes[ name ]; + var array = morphAttributes[name]; - for ( var i = 0, l = array.length; i < l; i ++ ) { + for (var i = 0, l = array.length; i < l; i++) { - attributes.update( array[ i ], 34962 ); + attributes.update(array[i], 34962); } @@ -15234,11 +15247,11 @@ } - function getWireframeAttribute( geometry ) { + function getWireframeAttribute(geometry) { - var attribute = wireframeAttributes[ geometry.id ]; + var attribute = wireframeAttributes[geometry.id]; - if ( attribute ) return attribute; + if (attribute) return attribute; var indices = []; @@ -15247,17 +15260,17 @@ // console.time( 'wireframe' ); - if ( geometryIndex !== null ) { + if (geometryIndex !== null) { var array = geometryIndex.array; - for ( var i = 0, l = array.length; i < l; i += 3 ) { + for (var i = 0, l = array.length; i < l; i += 3) { - var a = array[ i + 0 ]; - var b = array[ i + 1 ]; - var c = array[ i + 2 ]; + var a = array[i + 0]; + var b = array[i + 1]; + var c = array[i + 2]; - indices.push( a, b, b, c, c, a ); + indices.push(a, b, b, c, c, a); } @@ -15265,13 +15278,13 @@ var array = geometryAttributes.position.array; - for ( var i = 0, l = ( array.length / 3 ) - 1; i < l; i += 3 ) { + for (var i = 0, l = (array.length / 3) - 1; i < l; i += 3) { var a = i + 0; var b = i + 1; var c = i + 2; - indices.push( a, b, b, c, c, a ); + indices.push(a, b, b, c, c, a); } @@ -15279,11 +15292,11 @@ // console.timeEnd( 'wireframe' ); - attribute = new ( arrayMax( indices ) > 65535 ? Uint32BufferAttribute : Uint16BufferAttribute )( indices, 1 ); + attribute = new (arrayMax(indices) > 65535 ? Uint32BufferAttribute : Uint16BufferAttribute)(indices, 1); - attributes.update( attribute, 34963 ); + attributes.update(attribute, 34963); - wireframeAttributes[ geometry.id ] = attribute; + wireframeAttributes[geometry.id] = attribute; return attribute; @@ -15304,11 +15317,11 @@ * @author mrdoob / http://mrdoob.com/ */ - function WebGLIndexedBufferRenderer( gl, extensions, info, capabilities ) { + function WebGLIndexedBufferRenderer(gl, extensions, info, capabilities) { var mode; - function setMode( value ) { + function setMode(value) { mode = value; @@ -15316,45 +15329,45 @@ var type, bytesPerElement; - function setIndex( value ) { + function setIndex(value) { type = value.type; bytesPerElement = value.bytesPerElement; } - function render( start, count ) { + function render(start, count) { - gl.drawElements( mode, count, type, start * bytesPerElement ); + gl.drawElements(mode, count, type, start * bytesPerElement); - info.update( count, mode ); + info.update(count, mode); } - function renderInstances( geometry, start, count ) { + function renderInstances(geometry, start, count) { var extension; - if ( capabilities.isWebGL2 ) { + if (capabilities.isWebGL2) { extension = gl; } else { - var extension = extensions.get( 'ANGLE_instanced_arrays' ); + var extension = extensions.get('ANGLE_instanced_arrays'); - if ( extension === null ) { + if (extension === null) { - console.error( 'THREE.WebGLIndexedBufferRenderer: using THREE.InstancedBufferGeometry but hardware does not support extension ANGLE_instanced_arrays.' ); + console.error('THREE.WebGLIndexedBufferRenderer: using THREE.InstancedBufferGeometry but hardware does not support extension ANGLE_instanced_arrays.'); return; } } - extension[ capabilities.isWebGL2 ? 'drawElementsInstanced' : 'drawElementsInstancedANGLE' ]( mode, count, type, start * bytesPerElement, geometry.maxInstancedCount ); + extension[capabilities.isWebGL2 ? 'drawElementsInstanced' : 'drawElementsInstancedANGLE'](mode, count, type, start * bytesPerElement, geometry.maxInstancedCount); - info.update( count, mode, geometry.maxInstancedCount ); + info.update(count, mode, geometry.maxInstancedCount); } @@ -15371,7 +15384,7 @@ * @author Mugen87 / https://github.com/Mugen87 */ - function WebGLInfo( gl ) { + function WebGLInfo(gl) { var memory = { geometries: 0, @@ -15386,29 +15399,29 @@ lines: 0 }; - function update( count, mode, instanceCount ) { + function update(count, mode, instanceCount) { instanceCount = instanceCount || 1; - render.calls ++; + render.calls++; - switch ( mode ) { + switch (mode) { case 4: - render.triangles += instanceCount * ( count / 3 ); + render.triangles += instanceCount * (count / 3); break; case 5: case 6: - render.triangles += instanceCount * ( count - 2 ); + render.triangles += instanceCount * (count - 2); break; case 1: - render.lines += instanceCount * ( count / 2 ); + render.lines += instanceCount * (count / 2); break; case 3: - render.lines += instanceCount * ( count - 1 ); + render.lines += instanceCount * (count - 1); break; case 2: @@ -15420,7 +15433,7 @@ break; default: - console.error( 'THREE.WebGLInfo: Unknown draw mode:', mode ); + console.error('THREE.WebGLInfo: Unknown draw mode:', mode); break; } @@ -15429,7 +15442,7 @@ function reset() { - render.frame ++; + render.frame++; render.calls = 0; render.triangles = 0; render.points = 0; @@ -15452,38 +15465,38 @@ * @author mrdoob / http://mrdoob.com/ */ - function absNumericalSort( a, b ) { + function absNumericalSort(a, b) { - return Math.abs( b[ 1 ] ) - Math.abs( a[ 1 ] ); + return Math.abs(b[1]) - Math.abs(a[1]); } - function WebGLMorphtargets( gl ) { + function WebGLMorphtargets(gl) { var influencesList = {}; - var morphInfluences = new Float32Array( 8 ); + var morphInfluences = new Float32Array(8); - function update( object, geometry, material, program ) { + function update(object, geometry, material, program) { var objectInfluences = object.morphTargetInfluences; var length = objectInfluences.length; - var influences = influencesList[ geometry.id ]; + var influences = influencesList[geometry.id]; - if ( influences === undefined ) { + if (influences === undefined) { // initialise list influences = []; - for ( var i = 0; i < length; i ++ ) { + for (var i = 0; i < length; i++) { - influences[ i ] = [ i, 0 ]; + influences[i] = [i, 0]; } - influencesList[ geometry.id ] = influences; + influencesList[geometry.id] = influences; } @@ -15492,14 +15505,14 @@ // Remove current morphAttributes - for ( var i = 0; i < length; i ++ ) { + for (var i = 0; i < length; i++) { - var influence = influences[ i ]; + var influence = influences[i]; - if ( influence[ 1 ] !== 0 ) { + if (influence[1] !== 0) { - if ( morphTargets ) geometry.removeAttribute( 'morphTarget' + i ); - if ( morphNormals ) geometry.removeAttribute( 'morphNormal' + i ); + if (morphTargets) geometry.removeAttribute('morphTarget' + i); + if (morphNormals) geometry.removeAttribute('morphNormal' + i); } @@ -15507,45 +15520,45 @@ // Collect influences - for ( var i = 0; i < length; i ++ ) { + for (var i = 0; i < length; i++) { - var influence = influences[ i ]; + var influence = influences[i]; - influence[ 0 ] = i; - influence[ 1 ] = objectInfluences[ i ]; + influence[0] = i; + influence[1] = objectInfluences[i]; } - influences.sort( absNumericalSort ); + influences.sort(absNumericalSort); // Add morphAttributes - for ( var i = 0; i < 8; i ++ ) { + for (var i = 0; i < 8; i++) { - var influence = influences[ i ]; + var influence = influences[i]; - if ( influence ) { + if (influence) { - var index = influence[ 0 ]; - var value = influence[ 1 ]; + var index = influence[0]; + var value = influence[1]; - if ( value ) { + if (value) { - if ( morphTargets ) geometry.addAttribute( 'morphTarget' + i, morphTargets[ index ] ); - if ( morphNormals ) geometry.addAttribute( 'morphNormal' + i, morphNormals[ index ] ); + if (morphTargets) geometry.addAttribute('morphTarget' + i, morphTargets[index]); + if (morphNormals) geometry.addAttribute('morphNormal' + i, morphNormals[index]); - morphInfluences[ i ] = value; + morphInfluences[i] = value; continue; } } - morphInfluences[ i ] = 0; + morphInfluences[i] = 0; } - program.getUniforms().setValue( gl, 'morphTargetInfluences', morphInfluences ); + program.getUniforms().setValue(gl, 'morphTargetInfluences', morphInfluences); } @@ -15561,30 +15574,30 @@ * @author mrdoob / http://mrdoob.com/ */ - function WebGLObjects( geometries, info ) { + function WebGLObjects(geometries, info) { var updateList = {}; - function update( object ) { + function update(object) { var frame = info.render.frame; var geometry = object.geometry; - var buffergeometry = geometries.get( object, geometry ); + var buffergeometry = geometries.get(object, geometry); // Update once per frame - if ( updateList[ buffergeometry.id ] !== frame ) { + if (updateList[buffergeometry.id] !== frame) { - if ( geometry.isGeometry ) { + if (geometry.isGeometry) { - buffergeometry.updateFromObject( object ); + buffergeometry.updateFromObject(object); } - geometries.update( buffergeometry ); + geometries.update(buffergeometry); - updateList[ buffergeometry.id ] = frame; + updateList[buffergeometry.id] = frame; } @@ -15611,23 +15624,23 @@ * @author mrdoob / http://mrdoob.com/ */ - function CubeTexture( images, mapping, wrapS, wrapT, magFilter, minFilter, format, type, anisotropy, encoding ) { + function CubeTexture(images, mapping, wrapS, wrapT, magFilter, minFilter, format, type, anisotropy, encoding) { images = images !== undefined ? images : []; mapping = mapping !== undefined ? mapping : CubeReflectionMapping; - Texture.call( this, images, mapping, wrapS, wrapT, magFilter, minFilter, format, type, anisotropy, encoding ); + Texture.call(this, images, mapping, wrapS, wrapT, magFilter, minFilter, format, type, anisotropy, encoding); this.flipY = false; } - CubeTexture.prototype = Object.create( Texture.prototype ); + CubeTexture.prototype = Object.create(Texture.prototype); CubeTexture.prototype.constructor = CubeTexture; CubeTexture.prototype.isCubeTexture = true; - Object.defineProperty( CubeTexture.prototype, 'images', { + Object.defineProperty(CubeTexture.prototype, 'images', { get: function () { @@ -15635,19 +15648,19 @@ }, - set: function ( value ) { + set: function (value) { this.image = value; } - } ); + }); /** * @author Artur Trzesiok */ - function DataTexture3D( data, width, height, depth ) { + function DataTexture3D(data, width, height, depth) { // We're going to add .setXXX() methods for setting properties later. // Users can still set in DataTexture3D directly. @@ -15657,7 +15670,7 @@ // // See #14839 - Texture.call( this, null ); + Texture.call(this, null); this.image = { data: data, width: width, height: height, depth: depth }; @@ -15669,7 +15682,7 @@ } - DataTexture3D.prototype = Object.create( Texture.prototype ); + DataTexture3D.prototype = Object.create(Texture.prototype); DataTexture3D.prototype.constructor = DataTexture3D; DataTexture3D.prototype.isDataTexture3D = true; @@ -15746,38 +15759,38 @@ // Float32Array caches used for uploading Matrix uniforms - var mat4array = new Float32Array( 16 ); - var mat3array = new Float32Array( 9 ); - var mat2array = new Float32Array( 4 ); + var mat4array = new Float32Array(16); + var mat3array = new Float32Array(9); + var mat2array = new Float32Array(4); // Flattening for arrays of vectors and matrices - function flatten( array, nBlocks, blockSize ) { + function flatten(array, nBlocks, blockSize) { - var firstElem = array[ 0 ]; + var firstElem = array[0]; - if ( firstElem <= 0 || firstElem > 0 ) return array; + if (firstElem <= 0 || firstElem > 0) return array; // unoptimized: ! isNaN( firstElem ) // see http://jacksondunstan.com/articles/983 var n = nBlocks * blockSize, - r = arrayCacheF32[ n ]; + r = arrayCacheF32[n]; - if ( r === undefined ) { + if (r === undefined) { - r = new Float32Array( n ); - arrayCacheF32[ n ] = r; + r = new Float32Array(n); + arrayCacheF32[n] = r; } - if ( nBlocks !== 0 ) { + if (nBlocks !== 0) { - firstElem.toArray( r, 0 ); + firstElem.toArray(r, 0); - for ( var i = 1, offset = 0; i !== nBlocks; ++ i ) { + for (var i = 1, offset = 0; i !== nBlocks; ++i) { offset += blockSize; - array[ i ].toArray( r, offset ); + array[i].toArray(r, offset); } @@ -15787,13 +15800,13 @@ } - function arraysEqual( a, b ) { + function arraysEqual(a, b) { - if ( a.length !== b.length ) return false; + if (a.length !== b.length) return false; - for ( var i = 0, l = a.length; i < l; i ++ ) { + for (var i = 0, l = a.length; i < l; i++) { - if ( a[ i ] !== b[ i ] ) return false; + if (a[i] !== b[i]) return false; } @@ -15801,11 +15814,11 @@ } - function copyArray( a, b ) { + function copyArray(a, b) { - for ( var i = 0, l = b.length; i < l; i ++ ) { + for (var i = 0, l = b.length; i < l; i++) { - a[ i ] = b[ i ]; + a[i] = b[i]; } @@ -15813,19 +15826,19 @@ // Texture unit allocation - function allocTexUnits( renderer, n ) { + function allocTexUnits(renderer, n) { - var r = arrayCacheI32[ n ]; + var r = arrayCacheI32[n]; - if ( r === undefined ) { + if (r === undefined) { - r = new Int32Array( n ); - arrayCacheI32[ n ] = r; + r = new Int32Array(n); + arrayCacheI32[n] = r; } - for ( var i = 0; i !== n; ++ i ) - r[ i ] = renderer.allocTextureUnit(); + for (var i = 0; i !== n; ++i) + r[i] = renderer.allocTextureUnit(); return r; @@ -15838,123 +15851,123 @@ // Single scalar - function setValue1f( gl, v ) { + function setValue1f(gl, v) { var cache = this.cache; - if ( cache[ 0 ] === v ) return; + if (cache[0] === v) return; - gl.uniform1f( this.addr, v ); + gl.uniform1f(this.addr, v); - cache[ 0 ] = v; + cache[0] = v; } - function setValue1i( gl, v ) { + function setValue1i(gl, v) { var cache = this.cache; - if ( cache[ 0 ] === v ) return; + if (cache[0] === v) return; - gl.uniform1i( this.addr, v ); + gl.uniform1i(this.addr, v); - cache[ 0 ] = v; + cache[0] = v; } // Single float vector (from flat array or THREE.VectorN) - function setValue2fv( gl, v ) { + function setValue2fv(gl, v) { var cache = this.cache; - if ( v.x !== undefined ) { + if (v.x !== undefined) { - if ( cache[ 0 ] !== v.x || cache[ 1 ] !== v.y ) { + if (cache[0] !== v.x || cache[1] !== v.y) { - gl.uniform2f( this.addr, v.x, v.y ); + gl.uniform2f(this.addr, v.x, v.y); - cache[ 0 ] = v.x; - cache[ 1 ] = v.y; + cache[0] = v.x; + cache[1] = v.y; } } else { - if ( arraysEqual( cache, v ) ) return; + if (arraysEqual(cache, v)) return; - gl.uniform2fv( this.addr, v ); + gl.uniform2fv(this.addr, v); - copyArray( cache, v ); + copyArray(cache, v); } } - function setValue3fv( gl, v ) { + function setValue3fv(gl, v) { var cache = this.cache; - if ( v.x !== undefined ) { + if (v.x !== undefined) { - if ( cache[ 0 ] !== v.x || cache[ 1 ] !== v.y || cache[ 2 ] !== v.z ) { + if (cache[0] !== v.x || cache[1] !== v.y || cache[2] !== v.z) { - gl.uniform3f( this.addr, v.x, v.y, v.z ); + gl.uniform3f(this.addr, v.x, v.y, v.z); - cache[ 0 ] = v.x; - cache[ 1 ] = v.y; - cache[ 2 ] = v.z; + cache[0] = v.x; + cache[1] = v.y; + cache[2] = v.z; } - } else if ( v.r !== undefined ) { + } else if (v.r !== undefined) { - if ( cache[ 0 ] !== v.r || cache[ 1 ] !== v.g || cache[ 2 ] !== v.b ) { + if (cache[0] !== v.r || cache[1] !== v.g || cache[2] !== v.b) { - gl.uniform3f( this.addr, v.r, v.g, v.b ); + gl.uniform3f(this.addr, v.r, v.g, v.b); - cache[ 0 ] = v.r; - cache[ 1 ] = v.g; - cache[ 2 ] = v.b; + cache[0] = v.r; + cache[1] = v.g; + cache[2] = v.b; } } else { - if ( arraysEqual( cache, v ) ) return; + if (arraysEqual(cache, v)) return; - gl.uniform3fv( this.addr, v ); + gl.uniform3fv(this.addr, v); - copyArray( cache, v ); + copyArray(cache, v); } } - function setValue4fv( gl, v ) { + function setValue4fv(gl, v) { var cache = this.cache; - if ( v.x !== undefined ) { + if (v.x !== undefined) { - if ( cache[ 0 ] !== v.x || cache[ 1 ] !== v.y || cache[ 2 ] !== v.z || cache[ 3 ] !== v.w ) { + if (cache[0] !== v.x || cache[1] !== v.y || cache[2] !== v.z || cache[3] !== v.w) { - gl.uniform4f( this.addr, v.x, v.y, v.z, v.w ); + gl.uniform4f(this.addr, v.x, v.y, v.z, v.w); - cache[ 0 ] = v.x; - cache[ 1 ] = v.y; - cache[ 2 ] = v.z; - cache[ 3 ] = v.w; + cache[0] = v.x; + cache[1] = v.y; + cache[2] = v.z; + cache[3] = v.w; } } else { - if ( arraysEqual( cache, v ) ) return; + if (arraysEqual(cache, v)) return; - gl.uniform4fv( this.addr, v ); + gl.uniform4fv(this.addr, v); - copyArray( cache, v ); + copyArray(cache, v); } @@ -15962,82 +15975,82 @@ // Single matrix (from flat array or MatrixN) - function setValue2fm( gl, v ) { + function setValue2fm(gl, v) { var cache = this.cache; var elements = v.elements; - if ( elements === undefined ) { + if (elements === undefined) { - if ( arraysEqual( cache, v ) ) return; + if (arraysEqual(cache, v)) return; - gl.uniformMatrix2fv( this.addr, false, v ); + gl.uniformMatrix2fv(this.addr, false, v); - copyArray( cache, v ); + copyArray(cache, v); } else { - if ( arraysEqual( cache, elements ) ) return; + if (arraysEqual(cache, elements)) return; - mat2array.set( elements ); + mat2array.set(elements); - gl.uniformMatrix2fv( this.addr, false, mat2array ); + gl.uniformMatrix2fv(this.addr, false, mat2array); - copyArray( cache, elements ); + copyArray(cache, elements); } } - function setValue3fm( gl, v ) { + function setValue3fm(gl, v) { var cache = this.cache; var elements = v.elements; - if ( elements === undefined ) { + if (elements === undefined) { - if ( arraysEqual( cache, v ) ) return; + if (arraysEqual(cache, v)) return; - gl.uniformMatrix3fv( this.addr, false, v ); + gl.uniformMatrix3fv(this.addr, false, v); - copyArray( cache, v ); + copyArray(cache, v); } else { - if ( arraysEqual( cache, elements ) ) return; + if (arraysEqual(cache, elements)) return; - mat3array.set( elements ); + mat3array.set(elements); - gl.uniformMatrix3fv( this.addr, false, mat3array ); + gl.uniformMatrix3fv(this.addr, false, mat3array); - copyArray( cache, elements ); + copyArray(cache, elements); } } - function setValue4fm( gl, v ) { + function setValue4fm(gl, v) { var cache = this.cache; var elements = v.elements; - if ( elements === undefined ) { + if (elements === undefined) { - if ( arraysEqual( cache, v ) ) return; + if (arraysEqual(cache, v)) return; - gl.uniformMatrix4fv( this.addr, false, v ); + gl.uniformMatrix4fv(this.addr, false, v); - copyArray( cache, v ); + copyArray(cache, v); } else { - if ( arraysEqual( cache, elements ) ) return; + if (arraysEqual(cache, elements)) return; - mat4array.set( elements ); + mat4array.set(elements); - gl.uniformMatrix4fv( this.addr, false, mat4array ); + gl.uniformMatrix4fv(this.addr, false, mat4array); - copyArray( cache, elements ); + copyArray(cache, elements); } @@ -16045,97 +16058,97 @@ // Single texture (2D / Cube) - function setValueT1( gl, v, renderer ) { + function setValueT1(gl, v, renderer) { var cache = this.cache; var unit = renderer.allocTextureUnit(); - if ( cache[ 0 ] !== unit ) { + if (cache[0] !== unit) { - gl.uniform1i( this.addr, unit ); - cache[ 0 ] = unit; + gl.uniform1i(this.addr, unit); + cache[0] = unit; } - renderer.setTexture2D( v || emptyTexture, unit ); + renderer.setTexture2D(v || emptyTexture, unit); } - function setValueT3D1( gl, v, renderer ) { + function setValueT3D1(gl, v, renderer) { var cache = this.cache; var unit = renderer.allocTextureUnit(); - if ( cache[ 0 ] !== unit ) { + if (cache[0] !== unit) { - gl.uniform1i( this.addr, unit ); - cache[ 0 ] = unit; + gl.uniform1i(this.addr, unit); + cache[0] = unit; } - renderer.setTexture3D( v || emptyTexture3d, unit ); + renderer.setTexture3D(v || emptyTexture3d, unit); } - function setValueT6( gl, v, renderer ) { + function setValueT6(gl, v, renderer) { var cache = this.cache; var unit = renderer.allocTextureUnit(); - if ( cache[ 0 ] !== unit ) { + if (cache[0] !== unit) { - gl.uniform1i( this.addr, unit ); - cache[ 0 ] = unit; + gl.uniform1i(this.addr, unit); + cache[0] = unit; } - renderer.setTextureCube( v || emptyCubeTexture, unit ); + renderer.setTextureCube(v || emptyCubeTexture, unit); } // Integer / Boolean vectors or arrays thereof (always flat arrays) - function setValue2iv( gl, v ) { + function setValue2iv(gl, v) { var cache = this.cache; - if ( arraysEqual( cache, v ) ) return; + if (arraysEqual(cache, v)) return; - gl.uniform2iv( this.addr, v ); + gl.uniform2iv(this.addr, v); - copyArray( cache, v ); + copyArray(cache, v); } - function setValue3iv( gl, v ) { + function setValue3iv(gl, v) { var cache = this.cache; - if ( arraysEqual( cache, v ) ) return; + if (arraysEqual(cache, v)) return; - gl.uniform3iv( this.addr, v ); + gl.uniform3iv(this.addr, v); - copyArray( cache, v ); + copyArray(cache, v); } - function setValue4iv( gl, v ) { + function setValue4iv(gl, v) { var cache = this.cache; - if ( arraysEqual( cache, v ) ) return; + if (arraysEqual(cache, v)) return; - gl.uniform4iv( this.addr, v ); + gl.uniform4iv(this.addr, v); - copyArray( cache, v ); + copyArray(cache, v); } // Helper to pick the right setter for the singular case - function getSingularSetter( type ) { + function getSingularSetter(type) { - switch ( type ) { + switch (type) { case 0x1406: return setValue1f; // FLOAT case 0x8b50: return setValue2fv; // _VEC2 @@ -16161,152 +16174,152 @@ // Array of scalars - function setValue1fv( gl, v ) { + function setValue1fv(gl, v) { var cache = this.cache; - if ( arraysEqual( cache, v ) ) return; + if (arraysEqual(cache, v)) return; - gl.uniform1fv( this.addr, v ); + gl.uniform1fv(this.addr, v); - copyArray( cache, v ); + copyArray(cache, v); } - function setValue1iv( gl, v ) { + function setValue1iv(gl, v) { var cache = this.cache; - if ( arraysEqual( cache, v ) ) return; + if (arraysEqual(cache, v)) return; - gl.uniform1iv( this.addr, v ); + gl.uniform1iv(this.addr, v); - copyArray( cache, v ); + copyArray(cache, v); } // Array of vectors (flat or from THREE classes) - function setValueV2a( gl, v ) { + function setValueV2a(gl, v) { var cache = this.cache; - var data = flatten( v, this.size, 2 ); + var data = flatten(v, this.size, 2); - if ( arraysEqual( cache, data ) ) return; + if (arraysEqual(cache, data)) return; - gl.uniform2fv( this.addr, data ); + gl.uniform2fv(this.addr, data); - this.updateCache( data ); + this.updateCache(data); } - function setValueV3a( gl, v ) { + function setValueV3a(gl, v) { var cache = this.cache; - var data = flatten( v, this.size, 3 ); + var data = flatten(v, this.size, 3); - if ( arraysEqual( cache, data ) ) return; + if (arraysEqual(cache, data)) return; - gl.uniform3fv( this.addr, data ); + gl.uniform3fv(this.addr, data); - this.updateCache( data ); + this.updateCache(data); } - function setValueV4a( gl, v ) { + function setValueV4a(gl, v) { var cache = this.cache; - var data = flatten( v, this.size, 4 ); + var data = flatten(v, this.size, 4); - if ( arraysEqual( cache, data ) ) return; + if (arraysEqual(cache, data)) return; - gl.uniform4fv( this.addr, data ); + gl.uniform4fv(this.addr, data); - this.updateCache( data ); + this.updateCache(data); } // Array of matrices (flat or from THREE clases) - function setValueM2a( gl, v ) { + function setValueM2a(gl, v) { var cache = this.cache; - var data = flatten( v, this.size, 4 ); + var data = flatten(v, this.size, 4); - if ( arraysEqual( cache, data ) ) return; + if (arraysEqual(cache, data)) return; - gl.uniformMatrix2fv( this.addr, false, data ); + gl.uniformMatrix2fv(this.addr, false, data); - this.updateCache( data ); + this.updateCache(data); } - function setValueM3a( gl, v ) { + function setValueM3a(gl, v) { var cache = this.cache; - var data = flatten( v, this.size, 9 ); + var data = flatten(v, this.size, 9); - if ( arraysEqual( cache, data ) ) return; + if (arraysEqual(cache, data)) return; - gl.uniformMatrix3fv( this.addr, false, data ); + gl.uniformMatrix3fv(this.addr, false, data); - this.updateCache( data ); + this.updateCache(data); } - function setValueM4a( gl, v ) { + function setValueM4a(gl, v) { var cache = this.cache; - var data = flatten( v, this.size, 16 ); + var data = flatten(v, this.size, 16); - if ( arraysEqual( cache, data ) ) return; + if (arraysEqual(cache, data)) return; - gl.uniformMatrix4fv( this.addr, false, data ); + gl.uniformMatrix4fv(this.addr, false, data); - this.updateCache( data ); + this.updateCache(data); } // Array of textures (2D / Cube) - function setValueT1a( gl, v, renderer ) { + function setValueT1a(gl, v, renderer) { var cache = this.cache; var n = v.length; - var units = allocTexUnits( renderer, n ); + var units = allocTexUnits(renderer, n); - if ( arraysEqual( cache, units ) === false ) { + if (arraysEqual(cache, units) === false) { - gl.uniform1iv( this.addr, units ); - copyArray( cache, units ); + gl.uniform1iv(this.addr, units); + copyArray(cache, units); } - for ( var i = 0; i !== n; ++ i ) { + for (var i = 0; i !== n; ++i) { - renderer.setTexture2D( v[ i ] || emptyTexture, units[ i ] ); + renderer.setTexture2D(v[i] || emptyTexture, units[i]); } } - function setValueT6a( gl, v, renderer ) { + function setValueT6a(gl, v, renderer) { var cache = this.cache; var n = v.length; - var units = allocTexUnits( renderer, n ); + var units = allocTexUnits(renderer, n); - if ( arraysEqual( cache, units ) === false ) { + if (arraysEqual(cache, units) === false) { - gl.uniform1iv( this.addr, units ); - copyArray( cache, units ); + gl.uniform1iv(this.addr, units); + copyArray(cache, units); } - for ( var i = 0; i !== n; ++ i ) { + for (var i = 0; i !== n; ++i) { - renderer.setTextureCube( v[ i ] || emptyCubeTexture, units[ i ] ); + renderer.setTextureCube(v[i] || emptyCubeTexture, units[i]); } @@ -16314,9 +16327,9 @@ // Helper to pick the right setter for a pure (bottom-level) array - function getPureArraySetter( type ) { + function getPureArraySetter(type) { - switch ( type ) { + switch (type) { case 0x1406: return setValue1fv; // FLOAT case 0x8b50: return setValueV2a; // _VEC2 @@ -16341,59 +16354,59 @@ // --- Uniform Classes --- - function SingleUniform( id, activeInfo, addr ) { + function SingleUniform(id, activeInfo, addr) { this.id = id; this.addr = addr; this.cache = []; - this.setValue = getSingularSetter( activeInfo.type ); + this.setValue = getSingularSetter(activeInfo.type); // this.path = activeInfo.name; // DEBUG } - function PureArrayUniform( id, activeInfo, addr ) { + function PureArrayUniform(id, activeInfo, addr) { this.id = id; this.addr = addr; this.cache = []; this.size = activeInfo.size; - this.setValue = getPureArraySetter( activeInfo.type ); + this.setValue = getPureArraySetter(activeInfo.type); // this.path = activeInfo.name; // DEBUG } - PureArrayUniform.prototype.updateCache = function ( data ) { + PureArrayUniform.prototype.updateCache = function (data) { var cache = this.cache; - if ( data instanceof Float32Array && cache.length !== data.length ) { + if (data instanceof Float32Array && cache.length !== data.length) { - this.cache = new Float32Array( data.length ); + this.cache = new Float32Array(data.length); } - copyArray( cache, data ); + copyArray(cache, data); }; - function StructuredUniform( id ) { + function StructuredUniform(id) { this.id = id; - UniformContainer.call( this ); // mix-in + UniformContainer.call(this); // mix-in } - StructuredUniform.prototype.setValue = function ( gl, value, renderer ) { + StructuredUniform.prototype.setValue = function (gl, value, renderer) { var seq = this.seq; - for ( var i = 0, n = seq.length; i !== n; ++ i ) { + for (var i = 0, n = seq.length; i !== n; ++i) { - var u = seq[ i ]; - u.setValue( gl, value[ u.id ], renderer ); + var u = seq[i]; + u.setValue(gl, value[u.id], renderer); } @@ -16414,14 +16427,14 @@ // allow straightforward parsing of the hierarchy that WebGL encodes // in the uniform names. - function addUniform( container, uniformObject ) { + function addUniform(container, uniformObject) { - container.seq.push( uniformObject ); - container.map[ uniformObject.id ] = uniformObject; + container.seq.push(uniformObject); + container.map[uniformObject.id] = uniformObject; } - function parseUniform( activeInfo, addr, container ) { + function parseUniform(activeInfo, addr, container) { var path = activeInfo.name, pathLength = path.length; @@ -16429,24 +16442,24 @@ // reset RegExp object, because of the early exit of a previous run RePathPart.lastIndex = 0; - while ( true ) { + while (true) { - var match = RePathPart.exec( path ), + var match = RePathPart.exec(path), matchEnd = RePathPart.lastIndex, - id = match[ 1 ], - idIsIndex = match[ 2 ] === ']', - subscript = match[ 3 ]; + id = match[1], + idIsIndex = match[2] === ']', + subscript = match[3]; - if ( idIsIndex ) id = id | 0; // convert to integer + if (idIsIndex) id = id | 0; // convert to integer - if ( subscript === undefined || subscript === '[' && matchEnd + 2 === pathLength ) { + if (subscript === undefined || subscript === '[' && matchEnd + 2 === pathLength) { // bare name or "pure" bottom-level array "[0]" suffix - addUniform( container, subscript === undefined ? - new SingleUniform( id, activeInfo, addr ) : - new PureArrayUniform( id, activeInfo, addr ) ); + addUniform(container, subscript === undefined ? + new SingleUniform(id, activeInfo, addr) : + new PureArrayUniform(id, activeInfo, addr)); break; @@ -16454,12 +16467,12 @@ // step into inner node / create it in case it doesn't exist - var map = container.map, next = map[ id ]; + var map = container.map, next = map[id]; - if ( next === undefined ) { + if (next === undefined) { - next = new StructuredUniform( id ); - addUniform( container, next ); + next = new StructuredUniform(id); + addUniform(container, next); } @@ -16473,55 +16486,55 @@ // Root Container - function WebGLUniforms( gl, program, renderer ) { + function WebGLUniforms(gl, program, renderer) { - UniformContainer.call( this ); + UniformContainer.call(this); this.renderer = renderer; - var n = gl.getProgramParameter( program, 35718 ); + var n = gl.getProgramParameter(program, 35718); - for ( var i = 0; i < n; ++ i ) { + for (var i = 0; i < n; ++i) { - var info = gl.getActiveUniform( program, i ), - addr = gl.getUniformLocation( program, info.name ); + var info = gl.getActiveUniform(program, i), + addr = gl.getUniformLocation(program, info.name); - parseUniform( info, addr, this ); + parseUniform(info, addr, this); } } - WebGLUniforms.prototype.setValue = function ( gl, name, value ) { + WebGLUniforms.prototype.setValue = function (gl, name, value) { - var u = this.map[ name ]; + var u = this.map[name]; - if ( u !== undefined ) u.setValue( gl, value, this.renderer ); + if (u !== undefined) u.setValue(gl, value, this.renderer); }; - WebGLUniforms.prototype.setOptional = function ( gl, object, name ) { + WebGLUniforms.prototype.setOptional = function (gl, object, name) { - var v = object[ name ]; + var v = object[name]; - if ( v !== undefined ) this.setValue( gl, name, v ); + if (v !== undefined) this.setValue(gl, name, v); }; // Static interface - WebGLUniforms.upload = function ( gl, seq, values, renderer ) { + WebGLUniforms.upload = function (gl, seq, values, renderer) { - for ( var i = 0, n = seq.length; i !== n; ++ i ) { + for (var i = 0, n = seq.length; i !== n; ++i) { - var u = seq[ i ], - v = values[ u.id ]; + var u = seq[i], + v = values[u.id]; - if ( v.needsUpdate !== false ) { + if (v.needsUpdate !== false) { // note: always updating when .needsUpdate is undefined - u.setValue( gl, v.value, renderer ); + u.setValue(gl, v.value, renderer); } @@ -16529,14 +16542,14 @@ }; - WebGLUniforms.seqWithValue = function ( seq, values ) { + WebGLUniforms.seqWithValue = function (seq, values) { var r = []; - for ( var i = 0, n = seq.length; i !== n; ++ i ) { + for (var i = 0, n = seq.length; i !== n; ++i) { - var u = seq[ i ]; - if ( u.id in values ) r.push( u ); + var u = seq[i]; + if (u.id in values) r.push(u); } @@ -16548,36 +16561,36 @@ * @author mrdoob / http://mrdoob.com/ */ - function addLineNumbers( string ) { + function addLineNumbers(string) { - var lines = string.split( '\n' ); + var lines = string.split('\n'); - for ( var i = 0; i < lines.length; i ++ ) { + for (var i = 0; i < lines.length; i++) { - lines[ i ] = ( i + 1 ) + ': ' + lines[ i ]; + lines[i] = (i + 1) + ': ' + lines[i]; } - return lines.join( '\n' ); + return lines.join('\n'); } - function WebGLShader( gl, type, string ) { + function WebGLShader(gl, type, string) { - var shader = gl.createShader( type ); + var shader = gl.createShader(type); - gl.shaderSource( shader, string ); - gl.compileShader( shader ); + gl.shaderSource(shader, string); + gl.compileShader(shader); - if ( gl.getShaderParameter( shader, 35713 ) === false ) { + if (gl.getShaderParameter(shader, 35713) === false) { - console.error( 'THREE.WebGLShader: Shader couldn\'t compile.' ); + console.error('THREE.WebGLShader: Shader couldn\'t compile.'); } - if ( gl.getShaderInfoLog( shader ) !== '' ) { + if (gl.getShaderInfoLog(shader) !== '') { - console.warn( 'THREE.WebGLShader: gl.getShaderInfoLog()', type === 35633 ? 'vertex' : 'fragment', gl.getShaderInfoLog( shader ), addLineNumbers( string ) ); + console.warn('THREE.WebGLShader: gl.getShaderInfoLog()', type === 35633 ? 'vertex' : 'fragment', gl.getShaderInfoLog(shader), addLineNumbers(string)); } @@ -16594,50 +16607,50 @@ var programIdCount = 0; - function getEncodingComponents( encoding ) { + function getEncodingComponents(encoding) { - switch ( encoding ) { + switch (encoding) { case LinearEncoding: - return [ 'Linear', '( value )' ]; + return ['Linear', '( value )']; case sRGBEncoding: - return [ 'sRGB', '( value )' ]; + return ['sRGB', '( value )']; case RGBEEncoding: - return [ 'RGBE', '( value )' ]; + return ['RGBE', '( value )']; case RGBM7Encoding: - return [ 'RGBM', '( value, 7.0 )' ]; + return ['RGBM', '( value, 7.0 )']; case RGBM16Encoding: - return [ 'RGBM', '( value, 16.0 )' ]; + return ['RGBM', '( value, 16.0 )']; case RGBDEncoding: - return [ 'RGBD', '( value, 256.0 )' ]; + return ['RGBD', '( value, 256.0 )']; case GammaEncoding: - return [ 'Gamma', '( value, float( GAMMA_FACTOR ) )' ]; + return ['Gamma', '( value, float( GAMMA_FACTOR ) )']; default: - throw new Error( 'unsupported encoding: ' + encoding ); + throw new Error('unsupported encoding: ' + encoding); } } - function getTexelDecodingFunction( functionName, encoding ) { + function getTexelDecodingFunction(functionName, encoding) { - var components = getEncodingComponents( encoding ); - return 'vec4 ' + functionName + '( vec4 value ) { return ' + components[ 0 ] + 'ToLinear' + components[ 1 ] + '; }'; + var components = getEncodingComponents(encoding); + return 'vec4 ' + functionName + '( vec4 value ) { return ' + components[0] + 'ToLinear' + components[1] + '; }'; } - function getTexelEncodingFunction( functionName, encoding ) { + function getTexelEncodingFunction(functionName, encoding) { - var components = getEncodingComponents( encoding ); - return 'vec4 ' + functionName + '( vec4 value ) { return LinearTo' + components[ 0 ] + components[ 1 ] + '; }'; + var components = getEncodingComponents(encoding); + return 'vec4 ' + functionName + '( vec4 value ) { return LinearTo' + components[0] + components[1] + '; }'; } - function getToneMappingFunction( functionName, toneMapping ) { + function getToneMappingFunction(functionName, toneMapping) { var toneMappingName; - switch ( toneMapping ) { + switch (toneMapping) { case LinearToneMapping: toneMappingName = 'Linear'; @@ -16656,7 +16669,7 @@ break; default: - throw new Error( 'unsupported toneMapping: ' + toneMapping ); + throw new Error('unsupported toneMapping: ' + toneMapping); } @@ -16664,53 +16677,53 @@ } - function generateExtensions( extensions, parameters, rendererExtensions ) { + function generateExtensions(extensions, parameters, rendererExtensions) { extensions = extensions || {}; var chunks = [ - ( extensions.derivatives || parameters.envMapCubeUV || parameters.bumpMap || ( parameters.normalMap && ! parameters.objectSpaceNormalMap ) || parameters.flatShading ) ? '#extension GL_OES_standard_derivatives : enable' : '', - ( extensions.fragDepth || parameters.logarithmicDepthBuffer ) && rendererExtensions.get( 'EXT_frag_depth' ) ? '#extension GL_EXT_frag_depth : enable' : '', - ( extensions.drawBuffers ) && rendererExtensions.get( 'WEBGL_draw_buffers' ) ? '#extension GL_EXT_draw_buffers : require' : '', - ( extensions.shaderTextureLOD || parameters.envMap ) && rendererExtensions.get( 'EXT_shader_texture_lod' ) ? '#extension GL_EXT_shader_texture_lod : enable' : '' + (extensions.derivatives || parameters.envMapCubeUV || parameters.bumpMap || (parameters.normalMap && !parameters.objectSpaceNormalMap) || parameters.flatShading) ? '#extension GL_OES_standard_derivatives : enable' : '', + (extensions.fragDepth || parameters.logarithmicDepthBuffer) && rendererExtensions.get('EXT_frag_depth') ? '#extension GL_EXT_frag_depth : enable' : '', + (extensions.drawBuffers) && rendererExtensions.get('WEBGL_draw_buffers') ? '#extension GL_EXT_draw_buffers : require' : '', + (extensions.shaderTextureLOD || parameters.envMap) && rendererExtensions.get('EXT_shader_texture_lod') ? '#extension GL_EXT_shader_texture_lod : enable' : '' ]; - return chunks.filter( filterEmptyLine ).join( '\n' ); + return chunks.filter(filterEmptyLine).join('\n'); } - function generateDefines( defines ) { + function generateDefines(defines) { var chunks = []; - for ( var name in defines ) { + for (var name in defines) { - var value = defines[ name ]; + var value = defines[name]; - if ( value === false ) continue; + if (value === false) continue; - chunks.push( '#define ' + name + ' ' + value ); + chunks.push('#define ' + name + ' ' + value); } - return chunks.join( '\n' ); + return chunks.join('\n'); } - function fetchAttributeLocations( gl, program ) { + function fetchAttributeLocations(gl, program) { var attributes = {}; - var n = gl.getProgramParameter( program, 35721 ); + var n = gl.getProgramParameter(program, 35721); - for ( var i = 0; i < n; i ++ ) { + for (var i = 0; i < n; i++) { - var info = gl.getActiveAttrib( program, i ); + var info = gl.getActiveAttrib(program, i); var name = info.name; // console.log( 'THREE.WebGLProgram: ACTIVE VERTEX ATTRIBUTE:', name, i ); - attributes[ name ] = gl.getAttribLocation( program, name ); + attributes[name] = gl.getAttribLocation(program, name); } @@ -16718,64 +16731,64 @@ } - function filterEmptyLine( string ) { + function filterEmptyLine(string) { return string !== ''; } - function replaceLightNums( string, parameters ) { + function replaceLightNums(string, parameters) { return string - .replace( /NUM_DIR_LIGHTS/g, parameters.numDirLights ) - .replace( /NUM_SPOT_LIGHTS/g, parameters.numSpotLights ) - .replace( /NUM_RECT_AREA_LIGHTS/g, parameters.numRectAreaLights ) - .replace( /NUM_POINT_LIGHTS/g, parameters.numPointLights ) - .replace( /NUM_HEMI_LIGHTS/g, parameters.numHemiLights ); + .replace(/NUM_DIR_LIGHTS/g, parameters.numDirLights) + .replace(/NUM_SPOT_LIGHTS/g, parameters.numSpotLights) + .replace(/NUM_RECT_AREA_LIGHTS/g, parameters.numRectAreaLights) + .replace(/NUM_POINT_LIGHTS/g, parameters.numPointLights) + .replace(/NUM_HEMI_LIGHTS/g, parameters.numHemiLights); } - function replaceClippingPlaneNums( string, parameters ) { + function replaceClippingPlaneNums(string, parameters) { return string - .replace( /NUM_CLIPPING_PLANES/g, parameters.numClippingPlanes ) - .replace( /UNION_CLIPPING_PLANES/g, ( parameters.numClippingPlanes - parameters.numClipIntersection ) ); + .replace(/NUM_CLIPPING_PLANES/g, parameters.numClippingPlanes) + .replace(/UNION_CLIPPING_PLANES/g, (parameters.numClippingPlanes - parameters.numClipIntersection)); } - function parseIncludes( string ) { + function parseIncludes(string) { var pattern = /^[ \t]*#include +<([\w\d./]+)>/gm; - function replace( match, include ) { + function replace(match, include) { - var replace = ShaderChunk[ include ]; + var replace = ShaderChunk[include]; - if ( replace === undefined ) { + if (replace === undefined) { - throw new Error( 'Can not resolve #include <' + include + '>' ); + throw new Error('Can not resolve #include <' + include + '>'); } - return parseIncludes( replace ); + return parseIncludes(replace); } - return string.replace( pattern, replace ); + return string.replace(pattern, replace); } - function unrollLoops( string ) { + function unrollLoops(string) { var pattern = /#pragma unroll_loop[\s]+?for \( int i \= (\d+)\; i < (\d+)\; i \+\+ \) \{([\s\S]+?)(?=\})\}/g; - function replace( match, start, end, snippet ) { + function replace(match, start, end, snippet) { var unroll = ''; - for ( var i = parseInt( start ); i < parseInt( end ); i ++ ) { + for (var i = parseInt(start); i < parseInt(end); i++) { - unroll += snippet.replace( /\[ i \]/g, '[ ' + i + ' ]' ); + unroll += snippet.replace(/\[ i \]/g, '[ ' + i + ' ]'); } @@ -16783,11 +16796,11 @@ } - return string.replace( pattern, replace ); + return string.replace(pattern, replace); } - function WebGLProgram( renderer, extensions, code, material, shader, parameters, capabilities ) { + function WebGLProgram(renderer, extensions, code, material, shader, parameters, capabilities) { var gl = renderer.context; @@ -16798,11 +16811,11 @@ var shadowMapTypeDefine = 'SHADOWMAP_TYPE_BASIC'; - if ( parameters.shadowMapType === PCFShadowMap ) { + if (parameters.shadowMapType === PCFShadowMap) { shadowMapTypeDefine = 'SHADOWMAP_TYPE_PCF'; - } else if ( parameters.shadowMapType === PCFSoftShadowMap ) { + } else if (parameters.shadowMapType === PCFSoftShadowMap) { shadowMapTypeDefine = 'SHADOWMAP_TYPE_PCF_SOFT'; @@ -16812,9 +16825,9 @@ var envMapModeDefine = 'ENVMAP_MODE_REFLECTION'; var envMapBlendingDefine = 'ENVMAP_BLENDING_MULTIPLY'; - if ( parameters.envMap ) { + if (parameters.envMap) { - switch ( material.envMap.mapping ) { + switch (material.envMap.mapping) { case CubeReflectionMapping: case CubeRefractionMapping: @@ -16837,7 +16850,7 @@ } - switch ( material.envMap.mapping ) { + switch (material.envMap.mapping) { case CubeRefractionMapping: case EquirectangularRefractionMapping: @@ -16846,7 +16859,7 @@ } - switch ( material.combine ) { + switch (material.combine) { case MultiplyOperation: envMapBlendingDefine = 'ENVMAP_BLENDING_MULTIPLY'; @@ -16864,15 +16877,15 @@ } - var gammaFactorDefine = ( renderer.gammaFactor > 0 ) ? renderer.gammaFactor : 1.0; + var gammaFactorDefine = (renderer.gammaFactor > 0) ? renderer.gammaFactor : 1.0; // console.log( 'building new program ' ); // - var customExtensions = capabilities.isWebGL2 ? '' : generateExtensions( material.extensions, parameters, extensions ); + var customExtensions = capabilities.isWebGL2 ? '' : generateExtensions(material.extensions, parameters, extensions); - var customDefines = generateDefines( defines ); + var customDefines = generateDefines(defines); // @@ -16880,15 +16893,15 @@ var prefixVertex, prefixFragment; - if ( material.isRawShaderMaterial ) { + if (material.isRawShaderMaterial) { prefixVertex = [ customDefines - ].filter( filterEmptyLine ).join( '\n' ); + ].filter(filterEmptyLine).join('\n'); - if ( prefixVertex.length > 0 ) { + if (prefixVertex.length > 0) { prefixVertex += '\n'; @@ -16899,9 +16912,9 @@ customExtensions, customDefines - ].filter( filterEmptyLine ).join( '\n' ); + ].filter(filterEmptyLine).join('\n'); - if ( prefixFragment.length > 0 ) { + if (prefixFragment.length > 0) { prefixFragment += '\n'; @@ -16923,8 +16936,8 @@ '#define GAMMA_FACTOR ' + gammaFactorDefine, '#define MAX_BONES ' + parameters.maxBones, - ( parameters.useFog && parameters.fog ) ? '#define USE_FOG' : '', - ( parameters.useFog && parameters.fogExp ) ? '#define FOG_EXP2' : '', + (parameters.useFog && parameters.fog) ? '#define USE_FOG' : '', + (parameters.useFog && parameters.fogExp) ? '#define FOG_EXP2' : '', parameters.map ? '#define USE_MAP' : '', parameters.envMap ? '#define USE_ENVMAP' : '', @@ -16934,7 +16947,7 @@ parameters.emissiveMap ? '#define USE_EMISSIVEMAP' : '', parameters.bumpMap ? '#define USE_BUMPMAP' : '', parameters.normalMap ? '#define USE_NORMALMAP' : '', - ( parameters.normalMap && parameters.objectSpaceNormalMap ) ? '#define OBJECTSPACE_NORMALMAP' : '', + (parameters.normalMap && parameters.objectSpaceNormalMap) ? '#define OBJECTSPACE_NORMALMAP' : '', parameters.displacementMap && parameters.supportsVertexTextures ? '#define USE_DISPLACEMENTMAP' : '', parameters.specularMap ? '#define USE_SPECULARMAP' : '', parameters.roughnessMap ? '#define USE_ROUGHNESSMAP' : '', @@ -16958,7 +16971,7 @@ parameters.sizeAttenuation ? '#define USE_SIZEATTENUATION' : '', parameters.logarithmicDepthBuffer ? '#define USE_LOGDEPTHBUF' : '', - parameters.logarithmicDepthBuffer && ( capabilities.isWebGL2 || extensions.get( 'EXT_frag_depth' ) ) ? '#define USE_LOGDEPTHBUF_EXT' : '', + parameters.logarithmicDepthBuffer && (capabilities.isWebGL2 || extensions.get('EXT_frag_depth')) ? '#define USE_LOGDEPTHBUF_EXT' : '', 'uniform mat4 modelMatrix;', 'uniform mat4 modelViewMatrix;', @@ -17011,7 +17024,7 @@ '\n' - ].filter( filterEmptyLine ).join( '\n' ); + ].filter(filterEmptyLine).join('\n'); prefixFragment = [ @@ -17024,12 +17037,12 @@ customDefines, - parameters.alphaTest ? '#define ALPHATEST ' + parameters.alphaTest + ( parameters.alphaTest % 1 ? '' : '.0' ) : '', // add '.0' if integer + parameters.alphaTest ? '#define ALPHATEST ' + parameters.alphaTest + (parameters.alphaTest % 1 ? '' : '.0') : '', // add '.0' if integer '#define GAMMA_FACTOR ' + gammaFactorDefine, - ( parameters.useFog && parameters.fog ) ? '#define USE_FOG' : '', - ( parameters.useFog && parameters.fogExp ) ? '#define FOG_EXP2' : '', + (parameters.useFog && parameters.fog) ? '#define USE_FOG' : '', + (parameters.useFog && parameters.fogExp) ? '#define FOG_EXP2' : '', parameters.map ? '#define USE_MAP' : '', parameters.envMap ? '#define USE_ENVMAP' : '', @@ -17041,7 +17054,7 @@ parameters.emissiveMap ? '#define USE_EMISSIVEMAP' : '', parameters.bumpMap ? '#define USE_BUMPMAP' : '', parameters.normalMap ? '#define USE_NORMALMAP' : '', - ( parameters.normalMap && parameters.objectSpaceNormalMap ) ? '#define OBJECTSPACE_NORMALMAP' : '', + (parameters.normalMap && parameters.objectSpaceNormalMap) ? '#define OBJECTSPACE_NORMALMAP' : '', parameters.specularMap ? '#define USE_SPECULARMAP' : '', parameters.roughnessMap ? '#define USE_ROUGHNESSMAP' : '', parameters.metalnessMap ? '#define USE_METALNESSMAP' : '', @@ -17063,60 +17076,60 @@ parameters.physicallyCorrectLights ? '#define PHYSICALLY_CORRECT_LIGHTS' : '', parameters.logarithmicDepthBuffer ? '#define USE_LOGDEPTHBUF' : '', - parameters.logarithmicDepthBuffer && ( capabilities.isWebGL2 || extensions.get( 'EXT_frag_depth' ) ) ? '#define USE_LOGDEPTHBUF_EXT' : '', + parameters.logarithmicDepthBuffer && (capabilities.isWebGL2 || extensions.get('EXT_frag_depth')) ? '#define USE_LOGDEPTHBUF_EXT' : '', - parameters.envMap && ( capabilities.isWebGL2 || extensions.get( 'EXT_shader_texture_lod' ) ) ? '#define TEXTURE_LOD_EXT' : '', + parameters.envMap && (capabilities.isWebGL2 || extensions.get('EXT_shader_texture_lod')) ? '#define TEXTURE_LOD_EXT' : '', 'uniform mat4 viewMatrix;', 'uniform vec3 cameraPosition;', - ( parameters.toneMapping !== NoToneMapping ) ? '#define TONE_MAPPING' : '', - ( parameters.toneMapping !== NoToneMapping ) ? ShaderChunk[ 'tonemapping_pars_fragment' ] : '', // this code is required here because it is used by the toneMapping() function defined below - ( parameters.toneMapping !== NoToneMapping ) ? getToneMappingFunction( 'toneMapping', parameters.toneMapping ) : '', + (parameters.toneMapping !== NoToneMapping) ? '#define TONE_MAPPING' : '', + (parameters.toneMapping !== NoToneMapping) ? ShaderChunk['tonemapping_pars_fragment'] : '', // this code is required here because it is used by the toneMapping() function defined below + (parameters.toneMapping !== NoToneMapping) ? getToneMappingFunction('toneMapping', parameters.toneMapping) : '', parameters.dithering ? '#define DITHERING' : '', - ( parameters.outputEncoding || parameters.mapEncoding || parameters.matcapEncoding || 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 - parameters.mapEncoding ? getTexelDecodingFunction( 'mapTexelToLinear', parameters.mapEncoding ) : '', - parameters.matcapEncoding ? getTexelDecodingFunction( 'matcapTexelToLinear', parameters.matcapEncoding ) : '', - parameters.envMapEncoding ? getTexelDecodingFunction( 'envMapTexelToLinear', parameters.envMapEncoding ) : '', - parameters.emissiveMapEncoding ? getTexelDecodingFunction( 'emissiveMapTexelToLinear', parameters.emissiveMapEncoding ) : '', - parameters.outputEncoding ? getTexelEncodingFunction( 'linearToOutputTexel', parameters.outputEncoding ) : '', + (parameters.outputEncoding || parameters.mapEncoding || parameters.matcapEncoding || 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 + parameters.mapEncoding ? getTexelDecodingFunction('mapTexelToLinear', parameters.mapEncoding) : '', + parameters.matcapEncoding ? getTexelDecodingFunction('matcapTexelToLinear', parameters.matcapEncoding) : '', + parameters.envMapEncoding ? getTexelDecodingFunction('envMapTexelToLinear', parameters.envMapEncoding) : '', + parameters.emissiveMapEncoding ? getTexelDecodingFunction('emissiveMapTexelToLinear', parameters.emissiveMapEncoding) : '', + parameters.outputEncoding ? getTexelEncodingFunction('linearToOutputTexel', parameters.outputEncoding) : '', parameters.depthPacking ? '#define DEPTH_PACKING ' + material.depthPacking : '', '\n' - ].filter( filterEmptyLine ).join( '\n' ); + ].filter(filterEmptyLine).join('\n'); } - vertexShader = parseIncludes( vertexShader ); - vertexShader = replaceLightNums( vertexShader, parameters ); - vertexShader = replaceClippingPlaneNums( vertexShader, parameters ); + vertexShader = parseIncludes(vertexShader); + vertexShader = replaceLightNums(vertexShader, parameters); + vertexShader = replaceClippingPlaneNums(vertexShader, parameters); - fragmentShader = parseIncludes( fragmentShader ); - fragmentShader = replaceLightNums( fragmentShader, parameters ); - fragmentShader = replaceClippingPlaneNums( fragmentShader, parameters ); + fragmentShader = parseIncludes(fragmentShader); + fragmentShader = replaceLightNums(fragmentShader, parameters); + fragmentShader = replaceClippingPlaneNums(fragmentShader, parameters); - vertexShader = unrollLoops( vertexShader ); - fragmentShader = unrollLoops( fragmentShader ); + vertexShader = unrollLoops(vertexShader); + fragmentShader = unrollLoops(fragmentShader); - if ( capabilities.isWebGL2 && ! material.isRawShaderMaterial ) { + if (capabilities.isWebGL2 && !material.isRawShaderMaterial) { var isGLSL3ShaderMaterial = false; var versionRegex = /^\s*#version\s+300\s+es\s*\n/; - if ( material.isShaderMaterial && - vertexShader.match( versionRegex ) !== null && - fragmentShader.match( versionRegex ) !== null ) { + if (material.isShaderMaterial && + vertexShader.match(versionRegex) !== null && + fragmentShader.match(versionRegex) !== null) { isGLSL3ShaderMaterial = true; - vertexShader = vertexShader.replace( versionRegex, '' ); - fragmentShader = fragmentShader.replace( versionRegex, '' ); + vertexShader = vertexShader.replace(versionRegex, ''); + fragmentShader = fragmentShader.replace(versionRegex, ''); } @@ -17126,7 +17139,7 @@ '#define attribute in', '#define varying out', '#define texture2D texture' - ].join( '\n' ) + '\n' + prefixVertex; + ].join('\n') + '\n' + prefixVertex; prefixFragment = [ '#version 300 es\n', @@ -17143,7 +17156,7 @@ '#define texture2DGradEXT textureGrad', '#define texture2DProjGradEXT textureProjGrad', '#define textureCubeGradEXT textureGrad' - ].join( '\n' ) + '\n' + prefixFragment; + ].join('\n') + '\n' + prefixFragment; } @@ -17153,30 +17166,30 @@ // console.log( '*VERTEX*', vertexGlsl ); // console.log( '*FRAGMENT*', fragmentGlsl ); - var glVertexShader = WebGLShader( gl, 35633, vertexGlsl ); - var glFragmentShader = WebGLShader( gl, 35632, fragmentGlsl ); + var glVertexShader = WebGLShader(gl, 35633, vertexGlsl); + var glFragmentShader = WebGLShader(gl, 35632, fragmentGlsl); - gl.attachShader( program, glVertexShader ); - gl.attachShader( program, glFragmentShader ); + gl.attachShader(program, glVertexShader); + gl.attachShader(program, glFragmentShader); // Force a particular attribute to index 0. - if ( material.index0AttributeName !== undefined ) { + if (material.index0AttributeName !== undefined) { - gl.bindAttribLocation( program, 0, material.index0AttributeName ); + gl.bindAttribLocation(program, 0, material.index0AttributeName); - } else if ( parameters.morphTargets === true ) { + } else if (parameters.morphTargets === true) { // programs with morphTargets displace position out of attribute 0 - gl.bindAttribLocation( program, 0, 'position' ); + gl.bindAttribLocation(program, 0, 'position'); } - gl.linkProgram( program ); + gl.linkProgram(program); - var programLog = gl.getProgramInfoLog( program ).trim(); - var vertexLog = gl.getShaderInfoLog( glVertexShader ).trim(); - var fragmentLog = gl.getShaderInfoLog( glFragmentShader ).trim(); + var programLog = gl.getProgramInfoLog(program).trim(); + var vertexLog = gl.getShaderInfoLog(glVertexShader).trim(); + var fragmentLog = gl.getShaderInfoLog(glFragmentShader).trim(); var runnable = true; var haveDiagnostics = true; @@ -17184,23 +17197,23 @@ // console.log( '**VERTEX**', gl.getExtension( 'WEBGL_debug_shaders' ).getTranslatedShaderSource( glVertexShader ) ); // console.log( '**FRAGMENT**', gl.getExtension( 'WEBGL_debug_shaders' ).getTranslatedShaderSource( glFragmentShader ) ); - if ( gl.getProgramParameter( program, 35714 ) === false ) { + if (gl.getProgramParameter(program, 35714) === false) { runnable = false; - console.error( 'THREE.WebGLProgram: shader error: ', gl.getError(), '35715', gl.getProgramParameter( program, 35715 ), 'gl.getProgramInfoLog', programLog, vertexLog, fragmentLog ); + console.error('THREE.WebGLProgram: shader error: ', gl.getError(), '35715', gl.getProgramParameter(program, 35715), 'gl.getProgramInfoLog', programLog, vertexLog, fragmentLog); - } else if ( programLog !== '' ) { + } else if (programLog !== '') { - console.warn( 'THREE.WebGLProgram: gl.getProgramInfoLog()', programLog ); + console.warn('THREE.WebGLProgram: gl.getProgramInfoLog()', programLog); - } else if ( vertexLog === '' || fragmentLog === '' ) { + } else if (vertexLog === '' || fragmentLog === '') { haveDiagnostics = false; } - if ( haveDiagnostics ) { + if (haveDiagnostics) { this.diagnostics = { @@ -17229,8 +17242,8 @@ // clean up - gl.deleteShader( glVertexShader ); - gl.deleteShader( glFragmentShader ); + gl.deleteShader(glVertexShader); + gl.deleteShader(glFragmentShader); // set up caching for uniform locations @@ -17238,9 +17251,9 @@ this.getUniforms = function () { - if ( cachedUniforms === undefined ) { + if (cachedUniforms === undefined) { - cachedUniforms = new WebGLUniforms( gl, program, renderer ); + cachedUniforms = new WebGLUniforms(gl, program, renderer); } @@ -17254,9 +17267,9 @@ this.getAttributes = function () { - if ( cachedAttributes === undefined ) { + if (cachedAttributes === undefined) { - cachedAttributes = fetchAttributeLocations( gl, program ); + cachedAttributes = fetchAttributeLocations(gl, program); } @@ -17268,19 +17281,19 @@ this.destroy = function () { - gl.deleteProgram( program ); + gl.deleteProgram(program); this.program = undefined; }; // DEPRECATED - Object.defineProperties( this, { + Object.defineProperties(this, { uniforms: { get: function () { - console.warn( 'THREE.WebGLProgram: .uniforms is now .getUniforms().' ); + console.warn('THREE.WebGLProgram: .uniforms is now .getUniforms().'); return this.getUniforms(); } @@ -17289,19 +17302,19 @@ attributes: { get: function () { - console.warn( 'THREE.WebGLProgram: .attributes is now .getAttributes().' ); + console.warn('THREE.WebGLProgram: .attributes is now .getAttributes().'); return this.getAttributes(); } } - } ); + }); // this.name = shader.name; - this.id = programIdCount ++; + this.id = programIdCount++; this.code = code; this.usedTimes = 1; this.program = program; @@ -17316,7 +17329,7 @@ * @author mrdoob / http://mrdoob.com/ */ - function WebGLPrograms( renderer, extensions, capabilities ) { + function WebGLPrograms(renderer, extensions, capabilities) { var programs = []; @@ -17352,12 +17365,12 @@ ]; - function allocateBones( object ) { + function allocateBones(object) { var skeleton = object.skeleton; var bones = skeleton.bones; - if ( capabilities.floatVertexTextures ) { + if (capabilities.floatVertexTextures) { return 1024; @@ -17371,13 +17384,13 @@ // (up to 54 should be safe) var nVertexUniforms = capabilities.maxVertexUniforms; - var nVertexMatrices = Math.floor( ( nVertexUniforms - 20 ) / 4 ); + var nVertexMatrices = Math.floor((nVertexUniforms - 20) / 4); - var maxBones = Math.min( nVertexMatrices, bones.length ); + var maxBones = Math.min(nVertexMatrices, bones.length); - if ( maxBones < bones.length ) { + if (maxBones < bones.length) { - console.warn( 'THREE.WebGLRenderer: Skeleton has ' + bones.length + ' bones. This GPU supports ' + maxBones + '.' ); + console.warn('THREE.WebGLRenderer: Skeleton has ' + bones.length + ' bones. This GPU supports ' + maxBones + '.'); return 0; } @@ -17388,27 +17401,27 @@ } - function getTextureEncodingFromMap( map, gammaOverrideLinear ) { + function getTextureEncodingFromMap(map, gammaOverrideLinear) { var encoding; - if ( ! map ) { + if (!map) { encoding = LinearEncoding; - } else if ( map.isTexture ) { + } else if (map.isTexture) { encoding = map.encoding; - } else if ( map.isWebGLRenderTarget ) { + } else if (map.isWebGLRenderTarget) { - console.warn( "THREE.WebGLPrograms.getTextureEncodingFromMap: don't use render targets as textures. Use their .texture property instead." ); + console.warn("THREE.WebGLPrograms.getTextureEncodingFromMap: don't use render targets as textures. Use their .texture property instead."); encoding = map.texture.encoding; } // add backwards compatibility for WebGLRenderer.gammaInput/gammaOutput parameter, should probably be removed at some point. - if ( encoding === LinearEncoding && gammaOverrideLinear ) { + if (encoding === LinearEncoding && gammaOverrideLinear) { encoding = GammaEncoding; @@ -17418,23 +17431,23 @@ } - this.getParameters = function ( material, lights, shadows, fog, nClipPlanes, nClipIntersection, object ) { + this.getParameters = function (material, lights, shadows, fog, nClipPlanes, nClipIntersection, object) { - var shaderID = shaderIDs[ material.type ]; + var shaderID = shaderIDs[material.type]; // heuristics to create shader parameters according to lights in the scene // (not to blow over maxLights budget) - var maxBones = object.isSkinnedMesh ? allocateBones( object ) : 0; + var maxBones = object.isSkinnedMesh ? allocateBones(object) : 0; var precision = capabilities.precision; - if ( material.precision !== null ) { + if (material.precision !== null) { - precision = capabilities.getMaxPrecision( material.precision ); + precision = capabilities.getMaxPrecision(material.precision); - if ( precision !== material.precision ) { + if (precision !== material.precision) { - console.warn( 'THREE.WebGLProgram.getParameters:', material.precision, 'not supported, using', precision, 'instead.' ); + console.warn('THREE.WebGLProgram.getParameters:', material.precision, 'not supported, using', precision, 'instead.'); } @@ -17448,37 +17461,37 @@ precision: precision, supportsVertexTextures: capabilities.vertexTextures, - outputEncoding: getTextureEncodingFromMap( ( ! currentRenderTarget ) ? null : currentRenderTarget.texture, renderer.gammaOutput ), - map: !! material.map, - mapEncoding: getTextureEncodingFromMap( material.map, renderer.gammaInput ), - matcap: !! material.matcap, - matcapEncoding: getTextureEncodingFromMap( material.matcap, renderer.gammaInput ), - envMap: !! material.envMap, + outputEncoding: getTextureEncodingFromMap((!currentRenderTarget) ? null : currentRenderTarget.texture, renderer.gammaOutput), + map: !!material.map, + mapEncoding: getTextureEncodingFromMap(material.map, renderer.gammaInput), + matcap: !!material.matcap, + matcapEncoding: getTextureEncodingFromMap(material.matcap, renderer.gammaInput), + envMap: !!material.envMap, envMapMode: material.envMap && material.envMap.mapping, - envMapEncoding: getTextureEncodingFromMap( material.envMap, renderer.gammaInput ), - envMapCubeUV: ( !! material.envMap ) && ( ( material.envMap.mapping === CubeUVReflectionMapping ) || ( material.envMap.mapping === CubeUVRefractionMapping ) ), - lightMap: !! material.lightMap, - aoMap: !! material.aoMap, - emissiveMap: !! material.emissiveMap, - emissiveMapEncoding: getTextureEncodingFromMap( material.emissiveMap, renderer.gammaInput ), - bumpMap: !! material.bumpMap, - normalMap: !! material.normalMap, + envMapEncoding: getTextureEncodingFromMap(material.envMap, renderer.gammaInput), + envMapCubeUV: (!!material.envMap) && ((material.envMap.mapping === CubeUVReflectionMapping) || (material.envMap.mapping === CubeUVRefractionMapping)), + lightMap: !!material.lightMap, + aoMap: !!material.aoMap, + emissiveMap: !!material.emissiveMap, + emissiveMapEncoding: getTextureEncodingFromMap(material.emissiveMap, renderer.gammaInput), + bumpMap: !!material.bumpMap, + normalMap: !!material.normalMap, objectSpaceNormalMap: material.normalMapType === ObjectSpaceNormalMap, - displacementMap: !! material.displacementMap, - roughnessMap: !! material.roughnessMap, - metalnessMap: !! material.metalnessMap, - specularMap: !! material.specularMap, - alphaMap: !! material.alphaMap, + displacementMap: !!material.displacementMap, + roughnessMap: !!material.roughnessMap, + metalnessMap: !!material.metalnessMap, + specularMap: !!material.specularMap, + alphaMap: !!material.alphaMap, - gradientMap: !! material.gradientMap, + gradientMap: !!material.gradientMap, combine: material.combine, vertexColors: material.vertexColors, - fog: !! fog, + fog: !!fog, useFog: material.fog, - fogExp: ( fog && fog.isFogExp2 ), + fogExp: (fog && fog.isFogExp2), flatShading: material.flatShading, @@ -17517,7 +17530,7 @@ doubleSided: material.side === DoubleSide, flipSided: material.side === BackSide, - depthPacking: ( material.depthPacking !== undefined ) ? material.depthPacking : false + depthPacking: (material.depthPacking !== undefined) ? material.depthPacking : false }; @@ -17525,61 +17538,61 @@ }; - this.getProgramCode = function ( material, parameters ) { + this.getProgramCode = function (material, parameters) { var array = []; - if ( parameters.shaderID ) { + if (parameters.shaderID) { - array.push( parameters.shaderID ); + array.push(parameters.shaderID); } else { - array.push( material.fragmentShader ); - array.push( material.vertexShader ); + array.push(material.fragmentShader); + array.push(material.vertexShader); } - if ( material.defines !== undefined ) { + if (material.defines !== undefined) { - for ( var name in material.defines ) { + for (var name in material.defines) { - array.push( name ); - array.push( material.defines[ name ] ); + array.push(name); + array.push(material.defines[name]); } } - for ( var i = 0; i < parameterNames.length; i ++ ) { + for (var i = 0; i < parameterNames.length; i++) { - array.push( parameters[ parameterNames[ i ] ] ); + array.push(parameters[parameterNames[i]]); } - array.push( material.onBeforeCompile.toString() ); + array.push(material.onBeforeCompile.toString()); - array.push( renderer.gammaOutput ); + array.push(renderer.gammaOutput); - array.push( renderer.gammaFactor ); + array.push(renderer.gammaFactor); return array.join(); }; - this.acquireProgram = function ( material, shader, parameters, code ) { + this.acquireProgram = function (material, shader, parameters, code) { var program; // Check if code has been already compiled - for ( var p = 0, pl = programs.length; p < pl; p ++ ) { + for (var p = 0, pl = programs.length; p < pl; p++) { - var programInfo = programs[ p ]; + var programInfo = programs[p]; - if ( programInfo.code === code ) { + if (programInfo.code === code) { program = programInfo; - ++ program.usedTimes; + ++program.usedTimes; break; @@ -17587,10 +17600,10 @@ } - if ( program === undefined ) { + if (program === undefined) { - program = new WebGLProgram( renderer, extensions, code, material, shader, parameters, capabilities ); - programs.push( program ); + program = new WebGLProgram(renderer, extensions, code, material, shader, parameters, capabilities); + programs.push(program); } @@ -17598,13 +17611,13 @@ }; - this.releaseProgram = function ( program ) { + this.releaseProgram = function (program) { - if ( -- program.usedTimes === 0 ) { + if (--program.usedTimes === 0) { // Remove from unordered set - var i = programs.indexOf( program ); - programs[ i ] = programs[ programs.length - 1 ]; + var i = programs.indexOf(program); + programs[i] = programs[programs.length - 1]; programs.pop(); // Free WebGL resources @@ -17627,14 +17640,14 @@ var properties = new WeakMap(); - function get( object ) { + function get(object) { - var map = properties.get( object ); + var map = properties.get(object); - if ( map === undefined ) { + if (map === undefined) { map = {}; - properties.set( object, map ); + properties.set(object, map); } @@ -17642,15 +17655,15 @@ } - function remove( object ) { + function remove(object) { - properties.delete( object ); + properties.delete(object); } - function update( object, key, value ) { + function update(object, key, value) { - properties.get( object )[ key ] = value; + properties.get(object)[key] = value; } @@ -17673,21 +17686,21 @@ * @author mrdoob / http://mrdoob.com/ */ - function painterSortStable( a, b ) { + function painterSortStable(a, b) { - if ( a.renderOrder !== b.renderOrder ) { + if (a.renderOrder !== b.renderOrder) { return a.renderOrder - b.renderOrder; - } else if ( a.program && b.program && a.program !== b.program ) { + } else if (a.program && b.program && a.program !== b.program) { return a.program.id - b.program.id; - } else if ( a.material.id !== b.material.id ) { + } else if (a.material.id !== b.material.id) { return a.material.id - b.material.id; - } else if ( a.z !== b.z ) { + } else if (a.z !== b.z) { return a.z - b.z; @@ -17699,13 +17712,13 @@ } - function reversePainterSortStable( a, b ) { + function reversePainterSortStable(a, b) { - if ( a.renderOrder !== b.renderOrder ) { + if (a.renderOrder !== b.renderOrder) { return a.renderOrder - b.renderOrder; - } if ( a.z !== b.z ) { + } if (a.z !== b.z) { return b.z - a.z; @@ -17735,11 +17748,11 @@ } - function push( object, geometry, material, z, group ) { + function push(object, geometry, material, z, group) { - var renderItem = renderItems[ renderItemsIndex ]; + var renderItem = renderItems[renderItemsIndex]; - if ( renderItem === undefined ) { + if (renderItem === undefined) { renderItem = { id: object.id, @@ -17752,7 +17765,7 @@ group: group }; - renderItems[ renderItemsIndex ] = renderItem; + renderItems[renderItemsIndex] = renderItem; } else { @@ -17768,16 +17781,16 @@ } - ( material.transparent === true ? transparent : opaque ).push( renderItem ); + (material.transparent === true ? transparent : opaque).push(renderItem); - renderItemsIndex ++; + renderItemsIndex++; } function sort() { - if ( opaque.length > 1 ) opaque.sort( painterSortStable ); - if ( transparent.length > 1 ) transparent.sort( reversePainterSortStable ); + if (opaque.length > 1) opaque.sort(painterSortStable); + if (transparent.length > 1) transparent.sort(reversePainterSortStable); } @@ -17797,17 +17810,17 @@ var lists = {}; - function get( scene, camera ) { + function get(scene, camera) { var hash = scene.id + ',' + camera.id; - var list = lists[ hash ]; + var list = lists[hash]; - if ( list === undefined ) { + if (list === undefined) { // console.log( 'THREE.WebGLRenderLists:', hash ); list = new WebGLRenderList(); - lists[ hash ] = list; + lists[hash] = list; } @@ -17838,17 +17851,17 @@ return { - get: function ( light ) { + get: function (light) { - if ( lights[ light.id ] !== undefined ) { + if (lights[light.id] !== undefined) { - return lights[ light.id ]; + return lights[light.id]; } var uniforms; - switch ( light.type ) { + switch (light.type) { case 'DirectionalLight': uniforms = { @@ -17915,7 +17928,7 @@ } - lights[ light.id ] = uniforms; + lights[light.id] = uniforms; return uniforms; @@ -17933,7 +17946,7 @@ var state = { - id: count ++, + id: count++, hash: { stateID: - 1, @@ -17945,7 +17958,7 @@ shadowsLength: - 1 }, - ambient: [ 0, 0, 0 ], + ambient: [0, 0, 0], directional: [], directionalShadowMap: [], directionalShadowMatrix: [], @@ -17964,7 +17977,7 @@ var matrix4 = new Matrix4(); var matrix42 = new Matrix4(); - function setup( lights, shadows, camera ) { + function setup(lights, shadows, camera) { var r = 0, g = 0, b = 0; @@ -17976,35 +17989,35 @@ var viewMatrix = camera.matrixWorldInverse; - for ( var i = 0, l = lights.length; i < l; i ++ ) { + for (var i = 0, l = lights.length; i < l; i++) { - var light = lights[ i ]; + var light = lights[i]; var color = light.color; var intensity = light.intensity; var distance = light.distance; - var shadowMap = ( light.shadow && light.shadow.map ) ? light.shadow.map.texture : null; + var shadowMap = (light.shadow && light.shadow.map) ? light.shadow.map.texture : null; - if ( light.isAmbientLight ) { + if (light.isAmbientLight) { r += color.r * intensity; g += color.g * intensity; b += color.b * intensity; - } else if ( light.isDirectionalLight ) { + } else if (light.isDirectionalLight) { - var uniforms = cache.get( light ); + var uniforms = cache.get(light); - uniforms.color.copy( light.color ).multiplyScalar( light.intensity ); - uniforms.direction.setFromMatrixPosition( light.matrixWorld ); - vector3.setFromMatrixPosition( light.target.matrixWorld ); - uniforms.direction.sub( vector3 ); - uniforms.direction.transformDirection( viewMatrix ); + uniforms.color.copy(light.color).multiplyScalar(light.intensity); + uniforms.direction.setFromMatrixPosition(light.matrixWorld); + vector3.setFromMatrixPosition(light.target.matrixWorld); + uniforms.direction.sub(vector3); + uniforms.direction.transformDirection(viewMatrix); uniforms.shadow = light.castShadow; - if ( light.castShadow ) { + if (light.castShadow) { var shadow = light.shadow; @@ -18014,34 +18027,34 @@ } - state.directionalShadowMap[ directionalLength ] = shadowMap; - state.directionalShadowMatrix[ directionalLength ] = light.shadow.matrix; - state.directional[ directionalLength ] = uniforms; + state.directionalShadowMap[directionalLength] = shadowMap; + state.directionalShadowMatrix[directionalLength] = light.shadow.matrix; + state.directional[directionalLength] = uniforms; - directionalLength ++; + directionalLength++; - } else if ( light.isSpotLight ) { + } else if (light.isSpotLight) { - var uniforms = cache.get( light ); + var uniforms = cache.get(light); - uniforms.position.setFromMatrixPosition( light.matrixWorld ); - uniforms.position.applyMatrix4( viewMatrix ); + uniforms.position.setFromMatrixPosition(light.matrixWorld); + uniforms.position.applyMatrix4(viewMatrix); - uniforms.color.copy( color ).multiplyScalar( intensity ); + uniforms.color.copy(color).multiplyScalar(intensity); uniforms.distance = distance; - uniforms.direction.setFromMatrixPosition( light.matrixWorld ); - vector3.setFromMatrixPosition( light.target.matrixWorld ); - uniforms.direction.sub( vector3 ); - uniforms.direction.transformDirection( viewMatrix ); + uniforms.direction.setFromMatrixPosition(light.matrixWorld); + vector3.setFromMatrixPosition(light.target.matrixWorld); + uniforms.direction.sub(vector3); + uniforms.direction.transformDirection(viewMatrix); - uniforms.coneCos = Math.cos( light.angle ); - uniforms.penumbraCos = Math.cos( light.angle * ( 1 - light.penumbra ) ); + uniforms.coneCos = Math.cos(light.angle); + uniforms.penumbraCos = Math.cos(light.angle * (1 - light.penumbra)); uniforms.decay = light.decay; uniforms.shadow = light.castShadow; - if ( light.castShadow ) { + if (light.castShadow) { var shadow = light.shadow; @@ -18051,58 +18064,58 @@ } - state.spotShadowMap[ spotLength ] = shadowMap; - state.spotShadowMatrix[ spotLength ] = light.shadow.matrix; - state.spot[ spotLength ] = uniforms; + state.spotShadowMap[spotLength] = shadowMap; + state.spotShadowMatrix[spotLength] = light.shadow.matrix; + state.spot[spotLength] = uniforms; - spotLength ++; + spotLength++; - } else if ( light.isRectAreaLight ) { + } else if (light.isRectAreaLight) { - var uniforms = cache.get( light ); + var uniforms = cache.get(light); // (a) intensity is the total visible light emitted //uniforms.color.copy( color ).multiplyScalar( intensity / ( light.width * light.height * Math.PI ) ); // (b) intensity is the brightness of the light - uniforms.color.copy( color ).multiplyScalar( intensity ); + uniforms.color.copy(color).multiplyScalar(intensity); - uniforms.position.setFromMatrixPosition( light.matrixWorld ); - uniforms.position.applyMatrix4( viewMatrix ); + uniforms.position.setFromMatrixPosition(light.matrixWorld); + uniforms.position.applyMatrix4(viewMatrix); // extract local rotation of light to derive width/height half vectors matrix42.identity(); - matrix4.copy( light.matrixWorld ); - matrix4.premultiply( viewMatrix ); - matrix42.extractRotation( matrix4 ); + matrix4.copy(light.matrixWorld); + matrix4.premultiply(viewMatrix); + matrix42.extractRotation(matrix4); - uniforms.halfWidth.set( light.width * 0.5, 0.0, 0.0 ); - uniforms.halfHeight.set( 0.0, light.height * 0.5, 0.0 ); + uniforms.halfWidth.set(light.width * 0.5, 0.0, 0.0); + uniforms.halfHeight.set(0.0, light.height * 0.5, 0.0); - uniforms.halfWidth.applyMatrix4( matrix42 ); - uniforms.halfHeight.applyMatrix4( matrix42 ); + uniforms.halfWidth.applyMatrix4(matrix42); + uniforms.halfHeight.applyMatrix4(matrix42); // TODO (abelnation): RectAreaLight distance? // uniforms.distance = distance; - state.rectArea[ rectAreaLength ] = uniforms; + state.rectArea[rectAreaLength] = uniforms; - rectAreaLength ++; + rectAreaLength++; - } else if ( light.isPointLight ) { + } else if (light.isPointLight) { - var uniforms = cache.get( light ); + var uniforms = cache.get(light); - uniforms.position.setFromMatrixPosition( light.matrixWorld ); - uniforms.position.applyMatrix4( viewMatrix ); + uniforms.position.setFromMatrixPosition(light.matrixWorld); + uniforms.position.applyMatrix4(viewMatrix); - uniforms.color.copy( light.color ).multiplyScalar( light.intensity ); + uniforms.color.copy(light.color).multiplyScalar(light.intensity); uniforms.distance = light.distance; uniforms.decay = light.decay; uniforms.shadow = light.castShadow; - if ( light.castShadow ) { + if (light.castShadow) { var shadow = light.shadow; @@ -18114,34 +18127,34 @@ } - state.pointShadowMap[ pointLength ] = shadowMap; - state.pointShadowMatrix[ pointLength ] = light.shadow.matrix; - state.point[ pointLength ] = uniforms; + state.pointShadowMap[pointLength] = shadowMap; + state.pointShadowMatrix[pointLength] = light.shadow.matrix; + state.point[pointLength] = uniforms; - pointLength ++; + pointLength++; - } else if ( light.isHemisphereLight ) { + } else if (light.isHemisphereLight) { - var uniforms = cache.get( light ); + var uniforms = cache.get(light); - uniforms.direction.setFromMatrixPosition( light.matrixWorld ); - uniforms.direction.transformDirection( viewMatrix ); + uniforms.direction.setFromMatrixPosition(light.matrixWorld); + uniforms.direction.transformDirection(viewMatrix); uniforms.direction.normalize(); - uniforms.skyColor.copy( light.color ).multiplyScalar( intensity ); - uniforms.groundColor.copy( light.groundColor ).multiplyScalar( intensity ); + uniforms.skyColor.copy(light.color).multiplyScalar(intensity); + uniforms.groundColor.copy(light.groundColor).multiplyScalar(intensity); - state.hemi[ hemiLength ] = uniforms; + state.hemi[hemiLength] = uniforms; - hemiLength ++; + hemiLength++; } } - state.ambient[ 0 ] = r; - state.ambient[ 1 ] = g; - state.ambient[ 2 ] = b; + state.ambient[0] = r; + state.ambient[1] = g; + state.ambient[2] = b; state.directional.length = directionalLength; state.spot.length = spotLength; @@ -18184,21 +18197,21 @@ } - function pushLight( light ) { + function pushLight(light) { - lightsArray.push( light ); + lightsArray.push(light); } - function pushShadow( shadowLight ) { + function pushShadow(shadowLight) { - shadowsArray.push( shadowLight ); + shadowsArray.push(shadowLight); } - function setupLights( camera ) { + function setupLights(camera) { - lights.setup( lightsArray, shadowsArray, camera ); + lights.setup(lightsArray, shadowsArray, camera); } @@ -18224,26 +18237,26 @@ var renderStates = {}; - function get( scene, camera ) { + function get(scene, camera) { var renderState; - if ( renderStates[ scene.id ] === undefined ) { + if (renderStates[scene.id] === undefined) { renderState = new WebGLRenderState(); - renderStates[ scene.id ] = {}; - renderStates[ scene.id ][ camera.id ] = renderState; + renderStates[scene.id] = {}; + renderStates[scene.id][camera.id] = renderState; } else { - if ( renderStates[ scene.id ][ camera.id ] === undefined ) { + if (renderStates[scene.id][camera.id] === undefined) { renderState = new WebGLRenderState(); - renderStates[ scene.id ][ camera.id ] = renderState; + renderStates[scene.id][camera.id] = renderState; } else { - renderState = renderStates[ scene.id ][ camera.id ]; + renderState = renderStates[scene.id][camera.id]; } @@ -18289,9 +18302,9 @@ * } */ - function MeshDepthMaterial( parameters ) { + function MeshDepthMaterial(parameters) { - Material.call( this ); + Material.call(this); this.type = 'MeshDepthMaterial'; @@ -18314,18 +18327,18 @@ this.fog = false; this.lights = false; - this.setValues( parameters ); + this.setValues(parameters); } - MeshDepthMaterial.prototype = Object.create( Material.prototype ); + MeshDepthMaterial.prototype = Object.create(Material.prototype); MeshDepthMaterial.prototype.constructor = MeshDepthMaterial; MeshDepthMaterial.prototype.isMeshDepthMaterial = true; - MeshDepthMaterial.prototype.copy = function ( source ) { + MeshDepthMaterial.prototype.copy = function (source) { - Material.prototype.copy.call( this, source ); + Material.prototype.copy.call(this, source); this.depthPacking = source.depthPacking; @@ -18370,9 +18383,9 @@ * } */ - function MeshDistanceMaterial( parameters ) { + function MeshDistanceMaterial(parameters) { - Material.call( this ); + Material.call(this); this.type = 'MeshDistanceMaterial'; @@ -18394,20 +18407,20 @@ this.fog = false; this.lights = false; - this.setValues( parameters ); + this.setValues(parameters); } - MeshDistanceMaterial.prototype = Object.create( Material.prototype ); + MeshDistanceMaterial.prototype = Object.create(Material.prototype); MeshDistanceMaterial.prototype.constructor = MeshDistanceMaterial; MeshDistanceMaterial.prototype.isMeshDistanceMaterial = true; - MeshDistanceMaterial.prototype.copy = function ( source ) { + MeshDistanceMaterial.prototype.copy = function (source) { - Material.prototype.copy.call( this, source ); + Material.prototype.copy.call(this, source); - this.referencePosition.copy( source.referencePosition ); + this.referencePosition.copy(source.referencePosition); this.nearDistance = source.nearDistance; this.farDistance = source.farDistance; @@ -18431,13 +18444,13 @@ * @author mrdoob / http://mrdoob.com/ */ - function WebGLShadowMap( _renderer, _objects, maxTextureSize ) { + function WebGLShadowMap(_renderer, _objects, maxTextureSize) { var _frustum = new Frustum(), _projScreenMatrix = new Matrix4(), _shadowMapSize = new Vector2(), - _maxShadowMapSize = new Vector2( maxTextureSize, maxTextureSize ), + _maxShadowMapSize = new Vector2(maxTextureSize, maxTextureSize), _lookTarget = new Vector3(), _lightPositionWorld = new Vector3(), @@ -18445,23 +18458,23 @@ _MorphingFlag = 1, _SkinningFlag = 2, - _NumberOfMaterialVariants = ( _MorphingFlag | _SkinningFlag ) + 1, + _NumberOfMaterialVariants = (_MorphingFlag | _SkinningFlag) + 1, - _depthMaterials = new Array( _NumberOfMaterialVariants ), - _distanceMaterials = new Array( _NumberOfMaterialVariants ), + _depthMaterials = new Array(_NumberOfMaterialVariants), + _distanceMaterials = new Array(_NumberOfMaterialVariants), _materialCache = {}; var shadowSide = { 0: BackSide, 1: FrontSide, 2: DoubleSide }; var cubeDirections = [ - new Vector3( 1, 0, 0 ), new Vector3( - 1, 0, 0 ), new Vector3( 0, 0, 1 ), - new Vector3( 0, 0, - 1 ), new Vector3( 0, 1, 0 ), new Vector3( 0, - 1, 0 ) + new Vector3(1, 0, 0), new Vector3(- 1, 0, 0), new Vector3(0, 0, 1), + new Vector3(0, 0, - 1), new Vector3(0, 1, 0), new Vector3(0, - 1, 0) ]; var cubeUps = [ - new Vector3( 0, 1, 0 ), new Vector3( 0, 1, 0 ), new Vector3( 0, 1, 0 ), - new Vector3( 0, 1, 0 ), new Vector3( 0, 0, 1 ), new Vector3( 0, 0, - 1 ) + new Vector3(0, 1, 0), new Vector3(0, 1, 0), new Vector3(0, 1, 0), + new Vector3(0, 1, 0), new Vector3(0, 0, 1), new Vector3(0, 0, - 1) ]; var cube2DViewPorts = [ @@ -18471,32 +18484,32 @@ // init - for ( var i = 0; i !== _NumberOfMaterialVariants; ++ i ) { + for (var i = 0; i !== _NumberOfMaterialVariants; ++i) { - var useMorphing = ( i & _MorphingFlag ) !== 0; - var useSkinning = ( i & _SkinningFlag ) !== 0; + var useMorphing = (i & _MorphingFlag) !== 0; + var useSkinning = (i & _SkinningFlag) !== 0; - var depthMaterial = new MeshDepthMaterial( { + var depthMaterial = new MeshDepthMaterial({ depthPacking: RGBADepthPacking, morphTargets: useMorphing, skinning: useSkinning - } ); + }); - _depthMaterials[ i ] = depthMaterial; + _depthMaterials[i] = depthMaterial; // - var distanceMaterial = new MeshDistanceMaterial( { + var distanceMaterial = new MeshDistanceMaterial({ morphTargets: useMorphing, skinning: useSkinning - } ); + }); - _distanceMaterials[ i ] = distanceMaterial; + _distanceMaterials[i] = distanceMaterial; } @@ -18511,46 +18524,46 @@ this.type = PCFShadowMap; - this.render = function ( lights, scene, camera ) { + this.render = function (lights, scene, camera) { - if ( scope.enabled === false ) return; - if ( scope.autoUpdate === false && scope.needsUpdate === false ) return; + if (scope.enabled === false) return; + if (scope.autoUpdate === false && scope.needsUpdate === false) return; - if ( lights.length === 0 ) return; + if (lights.length === 0) return; // TODO Clean up (needed in case of contextlost) var _gl = _renderer.context; var _state = _renderer.state; // Set GL state for depth map. - _state.disable( 3042 ); - _state.buffers.color.setClear( 1, 1, 1, 1 ); - _state.buffers.depth.setTest( true ); - _state.setScissorTest( false ); + _state.disable(3042); + _state.buffers.color.setClear(1, 1, 1, 1); + _state.buffers.depth.setTest(true); + _state.setScissorTest(false); // render depth map var faceCount; - for ( var i = 0, il = lights.length; i < il; i ++ ) { + for (var i = 0, il = lights.length; i < il; i++) { - var light = lights[ i ]; + var light = lights[i]; var shadow = light.shadow; var isPointLight = light && light.isPointLight; - if ( shadow === undefined ) { + if (shadow === undefined) { - console.warn( 'THREE.WebGLShadowMap:', light, 'has no shadow.' ); + console.warn('THREE.WebGLShadowMap:', light, 'has no shadow.'); continue; } var shadowCamera = shadow.camera; - _shadowMapSize.copy( shadow.mapSize ); - _shadowMapSize.min( _maxShadowMapSize ); + _shadowMapSize.copy(shadow.mapSize); + _shadowMapSize.min(_maxShadowMapSize); - if ( isPointLight ) { + if (isPointLight) { var vpWidth = _shadowMapSize.x; var vpHeight = _shadowMapSize.y; @@ -18569,61 +18582,61 @@ // z - Negative z direction // positive X - cube2DViewPorts[ 0 ].set( vpWidth * 2, vpHeight, vpWidth, vpHeight ); + cube2DViewPorts[0].set(vpWidth * 2, vpHeight, vpWidth, vpHeight); // negative X - cube2DViewPorts[ 1 ].set( 0, vpHeight, vpWidth, vpHeight ); + cube2DViewPorts[1].set(0, vpHeight, vpWidth, vpHeight); // positive Z - cube2DViewPorts[ 2 ].set( vpWidth * 3, vpHeight, vpWidth, vpHeight ); + cube2DViewPorts[2].set(vpWidth * 3, vpHeight, vpWidth, vpHeight); // negative Z - cube2DViewPorts[ 3 ].set( vpWidth, vpHeight, vpWidth, vpHeight ); + cube2DViewPorts[3].set(vpWidth, vpHeight, vpWidth, vpHeight); // positive Y - cube2DViewPorts[ 4 ].set( vpWidth * 3, 0, vpWidth, vpHeight ); + cube2DViewPorts[4].set(vpWidth * 3, 0, vpWidth, vpHeight); // negative Y - cube2DViewPorts[ 5 ].set( vpWidth, 0, vpWidth, vpHeight ); + cube2DViewPorts[5].set(vpWidth, 0, vpWidth, vpHeight); _shadowMapSize.x *= 4.0; _shadowMapSize.y *= 2.0; } - if ( shadow.map === null ) { + if (shadow.map === null) { var pars = { minFilter: NearestFilter, magFilter: NearestFilter, format: RGBAFormat }; - shadow.map = new WebGLRenderTarget( _shadowMapSize.x, _shadowMapSize.y, pars ); + shadow.map = new WebGLRenderTarget(_shadowMapSize.x, _shadowMapSize.y, pars); shadow.map.texture.name = light.name + ".shadowMap"; shadowCamera.updateProjectionMatrix(); } - if ( shadow.isSpotLightShadow ) { + if (shadow.isSpotLightShadow) { - shadow.update( light ); + shadow.update(light); } var shadowMap = shadow.map; var shadowMatrix = shadow.matrix; - _lightPositionWorld.setFromMatrixPosition( light.matrixWorld ); - shadowCamera.position.copy( _lightPositionWorld ); + _lightPositionWorld.setFromMatrixPosition(light.matrixWorld); + shadowCamera.position.copy(_lightPositionWorld); - if ( isPointLight ) { + if (isPointLight) { faceCount = 6; // for point lights we set the shadow matrix to be a translation-only matrix // equal to inverse of the light's position - shadowMatrix.makeTranslation( - _lightPositionWorld.x, - _lightPositionWorld.y, - _lightPositionWorld.z ); + shadowMatrix.makeTranslation(- _lightPositionWorld.x, - _lightPositionWorld.y, - _lightPositionWorld.z); } else { faceCount = 1; - _lookTarget.setFromMatrixPosition( light.target.matrixWorld ); - shadowCamera.lookAt( _lookTarget ); + _lookTarget.setFromMatrixPosition(light.target.matrixWorld); + shadowCamera.lookAt(_lookTarget); shadowCamera.updateMatrixWorld(); // compute shadow matrix @@ -18635,40 +18648,40 @@ 0.0, 0.0, 0.0, 1.0 ); - shadowMatrix.multiply( shadowCamera.projectionMatrix ); - shadowMatrix.multiply( shadowCamera.matrixWorldInverse ); + shadowMatrix.multiply(shadowCamera.projectionMatrix); + shadowMatrix.multiply(shadowCamera.matrixWorldInverse); } - _renderer.setRenderTarget( shadowMap ); + _renderer.setRenderTarget(shadowMap); _renderer.clear(); // render shadow map for each cube face (if omni-directional) or // run a single pass if not - for ( var face = 0; face < faceCount; face ++ ) { + for (var face = 0; face < faceCount; face++) { - if ( isPointLight ) { + if (isPointLight) { - _lookTarget.copy( shadowCamera.position ); - _lookTarget.add( cubeDirections[ face ] ); - shadowCamera.up.copy( cubeUps[ face ] ); - shadowCamera.lookAt( _lookTarget ); + _lookTarget.copy(shadowCamera.position); + _lookTarget.add(cubeDirections[face]); + shadowCamera.up.copy(cubeUps[face]); + shadowCamera.lookAt(_lookTarget); shadowCamera.updateMatrixWorld(); - var vpDimensions = cube2DViewPorts[ face ]; - _state.viewport( vpDimensions ); + var vpDimensions = cube2DViewPorts[face]; + _state.viewport(vpDimensions); } // update camera matrices and frustum - _projScreenMatrix.multiplyMatrices( shadowCamera.projectionMatrix, shadowCamera.matrixWorldInverse ); - _frustum.setFromMatrix( _projScreenMatrix ); + _projScreenMatrix.multiplyMatrices(shadowCamera.projectionMatrix, shadowCamera.matrixWorldInverse); + _frustum.setFromMatrix(_projScreenMatrix); // set object matrices & frustum culling - renderObject( scene, camera, shadowCamera, isPointLight ); + renderObject(scene, camera, shadowCamera, isPointLight); } @@ -18678,7 +18691,7 @@ }; - function getDepthMaterial( object, material, isPointLight, lightPositionWorld, shadowCameraNear, shadowCameraFar ) { + function getDepthMaterial(object, material, isPointLight, lightPositionWorld, shadowCameraNear, shadowCameraFar) { var geometry = object.geometry; @@ -18687,24 +18700,24 @@ var materialVariants = _depthMaterials; var customMaterial = object.customDepthMaterial; - if ( isPointLight ) { + if (isPointLight) { materialVariants = _distanceMaterials; customMaterial = object.customDistanceMaterial; } - if ( ! customMaterial ) { + if (!customMaterial) { var useMorphing = false; - if ( material.morphTargets ) { + if (material.morphTargets) { - if ( geometry && geometry.isBufferGeometry ) { + if (geometry && geometry.isBufferGeometry) { useMorphing = geometry.morphAttributes && geometry.morphAttributes.position && geometry.morphAttributes.position.length > 0; - } else if ( geometry && geometry.isGeometry ) { + } else if (geometry && geometry.isGeometry) { useMorphing = geometry.morphTargets && geometry.morphTargets.length > 0; @@ -18712,9 +18725,9 @@ } - if ( object.isSkinnedMesh && material.skinning === false ) { + if (object.isSkinnedMesh && material.skinning === false) { - console.warn( 'THREE.WebGLShadowMap: THREE.SkinnedMesh with material.skinning set to false:', object ); + console.warn('THREE.WebGLShadowMap: THREE.SkinnedMesh with material.skinning set to false:', object); } @@ -18722,10 +18735,10 @@ var variantIndex = 0; - if ( useMorphing ) variantIndex |= _MorphingFlag; - if ( useSkinning ) variantIndex |= _SkinningFlag; + if (useMorphing) variantIndex |= _MorphingFlag; + if (useSkinning) variantIndex |= _SkinningFlag; - result = materialVariants[ variantIndex ]; + result = materialVariants[variantIndex]; } else { @@ -18733,30 +18746,30 @@ } - if ( _renderer.localClippingEnabled && - material.clipShadows === true && - material.clippingPlanes.length !== 0 ) { + if (_renderer.localClippingEnabled && + material.clipShadows === true && + material.clippingPlanes.length !== 0) { // in this case we need a unique material instance reflecting the // appropriate state var keyA = result.uuid, keyB = material.uuid; - var materialsForVariant = _materialCache[ keyA ]; + var materialsForVariant = _materialCache[keyA]; - if ( materialsForVariant === undefined ) { + if (materialsForVariant === undefined) { materialsForVariant = {}; - _materialCache[ keyA ] = materialsForVariant; + _materialCache[keyA] = materialsForVariant; } - var cachedMaterial = materialsForVariant[ keyB ]; + var cachedMaterial = materialsForVariant[keyB]; - if ( cachedMaterial === undefined ) { + if (cachedMaterial === undefined) { cachedMaterial = result.clone(); - materialsForVariant[ keyB ] = cachedMaterial; + materialsForVariant[keyB] = cachedMaterial; } @@ -18767,7 +18780,7 @@ result.visible = material.visible; result.wireframe = material.wireframe; - result.side = ( material.shadowSide != null ) ? material.shadowSide : shadowSide[ material.side ]; + result.side = (material.shadowSide != null) ? material.shadowSide : shadowSide[material.side]; result.clipShadows = material.clipShadows; result.clippingPlanes = material.clippingPlanes; @@ -18776,9 +18789,9 @@ result.wireframeLinewidth = material.wireframeLinewidth; result.linewidth = material.linewidth; - if ( isPointLight && result.isMeshDistanceMaterial ) { + if (isPointLight && result.isMeshDistanceMaterial) { - result.referencePosition.copy( lightPositionWorld ); + result.referencePosition.copy(lightPositionWorld); result.nearDistance = shadowCameraNear; result.farDistance = shadowCameraFar; @@ -18788,43 +18801,43 @@ } - function renderObject( object, camera, shadowCamera, isPointLight ) { + function renderObject(object, camera, shadowCamera, isPointLight) { - if ( object.visible === false ) return; + if (object.visible === false) return; - var visible = object.layers.test( camera.layers ); + var visible = object.layers.test(camera.layers); - if ( visible && ( object.isMesh || object.isLine || object.isPoints ) ) { + if (visible && (object.isMesh || object.isLine || object.isPoints)) { - if ( object.castShadow && ( ! object.frustumCulled || _frustum.intersectsObject( object ) ) ) { + if (object.castShadow && (!object.frustumCulled || _frustum.intersectsObject(object))) { - object.modelViewMatrix.multiplyMatrices( shadowCamera.matrixWorldInverse, object.matrixWorld ); + object.modelViewMatrix.multiplyMatrices(shadowCamera.matrixWorldInverse, object.matrixWorld); - var geometry = _objects.update( object ); + var geometry = _objects.update(object); var material = object.material; - if ( Array.isArray( material ) ) { + if (Array.isArray(material)) { var groups = geometry.groups; - for ( var k = 0, kl = groups.length; k < kl; k ++ ) { + for (var k = 0, kl = groups.length; k < kl; k++) { - var group = groups[ k ]; - var groupMaterial = material[ group.materialIndex ]; + var group = groups[k]; + var groupMaterial = material[group.materialIndex]; - if ( groupMaterial && groupMaterial.visible ) { + if (groupMaterial && groupMaterial.visible) { - var depthMaterial = getDepthMaterial( object, groupMaterial, isPointLight, _lightPositionWorld, shadowCamera.near, shadowCamera.far ); - _renderer.renderBufferDirect( shadowCamera, null, geometry, depthMaterial, object, group ); + var depthMaterial = getDepthMaterial(object, groupMaterial, isPointLight, _lightPositionWorld, shadowCamera.near, shadowCamera.far); + _renderer.renderBufferDirect(shadowCamera, null, geometry, depthMaterial, object, group); } } - } else if ( material.visible ) { + } else if (material.visible) { - var depthMaterial = getDepthMaterial( object, material, isPointLight, _lightPositionWorld, shadowCamera.near, shadowCamera.far ); - _renderer.renderBufferDirect( shadowCamera, null, geometry, depthMaterial, object, null ); + var depthMaterial = getDepthMaterial(object, material, isPointLight, _lightPositionWorld, shadowCamera.near, shadowCamera.far); + _renderer.renderBufferDirect(shadowCamera, null, geometry, depthMaterial, object, null); } @@ -18834,9 +18847,9 @@ var children = object.children; - for ( var i = 0, l = children.length; i < l; i ++ ) { + for (var i = 0, l = children.length; i < l; i++) { - renderObject( children[ i ], camera, shadowCamera, isPointLight ); + renderObject(children[i], camera, shadowCamera, isPointLight); } @@ -18848,7 +18861,7 @@ * @author mrdoob / http://mrdoob.com/ */ - function WebGLState( gl, extensions, utils, capabilities ) { + function WebGLState(gl, extensions, utils, capabilities) { function ColorBuffer() { @@ -18856,41 +18869,41 @@ var color = new Vector4(); var currentColorMask = null; - var currentColorClear = new Vector4( 0, 0, 0, 0 ); + var currentColorClear = new Vector4(0, 0, 0, 0); return { - setMask: function ( colorMask ) { + setMask: function (colorMask) { - if ( currentColorMask !== colorMask && ! locked ) { + if (currentColorMask !== colorMask && !locked) { - gl.colorMask( colorMask, colorMask, colorMask, colorMask ); + gl.colorMask(colorMask, colorMask, colorMask, colorMask); currentColorMask = colorMask; } }, - setLocked: function ( lock ) { + setLocked: function (lock) { locked = lock; }, - setClear: function ( r, g, b, a, premultipliedAlpha ) { + setClear: function (r, g, b, a, premultipliedAlpha) { - if ( premultipliedAlpha === true ) { + if (premultipliedAlpha === true) { r *= a; g *= a; b *= a; } - color.set( r, g, b, a ); + color.set(r, g, b, a); - if ( currentColorClear.equals( color ) === false ) { + if (currentColorClear.equals(color) === false) { - gl.clearColor( r, g, b, a ); - currentColorClear.copy( color ); + gl.clearColor(r, g, b, a); + currentColorClear.copy(color); } @@ -18901,7 +18914,7 @@ locked = false; currentColorMask = null; - currentColorClear.set( - 1, 0, 0, 0 ); // set to invalid state + currentColorClear.set(- 1, 0, 0, 0); // set to invalid state } @@ -18919,88 +18932,88 @@ return { - setTest: function ( depthTest ) { + setTest: function (depthTest) { - if ( depthTest ) { + if (depthTest) { - enable( 2929 ); + enable(2929); } else { - disable( 2929 ); + disable(2929); } }, - setMask: function ( depthMask ) { + setMask: function (depthMask) { - if ( currentDepthMask !== depthMask && ! locked ) { + if (currentDepthMask !== depthMask && !locked) { - gl.depthMask( depthMask ); + gl.depthMask(depthMask); currentDepthMask = depthMask; } }, - setFunc: function ( depthFunc ) { + setFunc: function (depthFunc) { - if ( currentDepthFunc !== depthFunc ) { + if (currentDepthFunc !== depthFunc) { - if ( depthFunc ) { + if (depthFunc) { - switch ( depthFunc ) { + switch (depthFunc) { case NeverDepth: - gl.depthFunc( 512 ); + gl.depthFunc(512); break; case AlwaysDepth: - gl.depthFunc( 519 ); + gl.depthFunc(519); break; case LessDepth: - gl.depthFunc( 513 ); + gl.depthFunc(513); break; case LessEqualDepth: - gl.depthFunc( 515 ); + gl.depthFunc(515); break; case EqualDepth: - gl.depthFunc( 514 ); + gl.depthFunc(514); break; case GreaterEqualDepth: - gl.depthFunc( 518 ); + gl.depthFunc(518); break; case GreaterDepth: - gl.depthFunc( 516 ); + gl.depthFunc(516); break; case NotEqualDepth: - gl.depthFunc( 517 ); + gl.depthFunc(517); break; default: - gl.depthFunc( 515 ); + gl.depthFunc(515); } } else { - gl.depthFunc( 515 ); + gl.depthFunc(515); } @@ -19010,17 +19023,17 @@ }, - setLocked: function ( lock ) { + setLocked: function (lock) { locked = lock; }, - setClear: function ( depth ) { + setClear: function (depth) { - if ( currentDepthClear !== depth ) { + if (currentDepthClear !== depth) { - gl.clearDepth( depth ); + gl.clearDepth(depth); currentDepthClear = depth; } @@ -19056,38 +19069,38 @@ return { - setTest: function ( stencilTest ) { + setTest: function (stencilTest) { - if ( stencilTest ) { + if (stencilTest) { - enable( 2960 ); + enable(2960); } else { - disable( 2960 ); + disable(2960); } }, - setMask: function ( stencilMask ) { + setMask: function (stencilMask) { - if ( currentStencilMask !== stencilMask && ! locked ) { + if (currentStencilMask !== stencilMask && !locked) { - gl.stencilMask( stencilMask ); + gl.stencilMask(stencilMask); currentStencilMask = stencilMask; } }, - setFunc: function ( stencilFunc, stencilRef, stencilMask ) { + setFunc: function (stencilFunc, stencilRef, stencilMask) { - if ( currentStencilFunc !== stencilFunc || - currentStencilRef !== stencilRef || - currentStencilFuncMask !== stencilMask ) { + if (currentStencilFunc !== stencilFunc || + currentStencilRef !== stencilRef || + currentStencilFuncMask !== stencilMask) { - gl.stencilFunc( stencilFunc, stencilRef, stencilMask ); + gl.stencilFunc(stencilFunc, stencilRef, stencilMask); currentStencilFunc = stencilFunc; currentStencilRef = stencilRef; @@ -19097,13 +19110,13 @@ }, - setOp: function ( stencilFail, stencilZFail, stencilZPass ) { + setOp: function (stencilFail, stencilZFail, stencilZPass) { - if ( currentStencilFail !== stencilFail || - currentStencilZFail !== stencilZFail || - currentStencilZPass !== stencilZPass ) { + if (currentStencilFail !== stencilFail || + currentStencilZFail !== stencilZFail || + currentStencilZPass !== stencilZPass) { - gl.stencilOp( stencilFail, stencilZFail, stencilZPass ); + gl.stencilOp(stencilFail, stencilZFail, stencilZPass); currentStencilFail = stencilFail; currentStencilZFail = stencilZFail; @@ -19113,17 +19126,17 @@ }, - setLocked: function ( lock ) { + setLocked: function (lock) { locked = lock; }, - setClear: function ( stencil ) { + setClear: function (stencil) { - if ( currentStencilClear !== stencil ) { + if (currentStencilClear !== stencil) { - gl.clearStencil( stencil ); + gl.clearStencil(stencil); currentStencilClear = stencil; } @@ -19155,10 +19168,10 @@ var depthBuffer = new DepthBuffer(); var stencilBuffer = new StencilBuffer(); - var maxVertexAttributes = gl.getParameter( 34921 ); - var newAttributes = new Uint8Array( maxVertexAttributes ); - var enabledAttributes = new Uint8Array( maxVertexAttributes ); - var attributeDivisors = new Uint8Array( maxVertexAttributes ); + var maxVertexAttributes = gl.getParameter(34921); + var newAttributes = new Uint8Array(maxVertexAttributes); + var enabledAttributes = new Uint8Array(maxVertexAttributes); + var attributeDivisors = new Uint8Array(maxVertexAttributes); var enabledCapabilities = {}; @@ -19184,21 +19197,21 @@ var currentPolygonOffsetFactor = null; var currentPolygonOffsetUnits = null; - var maxTextures = gl.getParameter( 35661 ); + var maxTextures = gl.getParameter(35661); var lineWidthAvailable = false; var version = 0; - var glVersion = gl.getParameter( 7938 ); + var glVersion = gl.getParameter(7938); - if ( glVersion.indexOf( 'WebGL' ) !== - 1 ) { + if (glVersion.indexOf('WebGL') !== - 1) { - version = parseFloat( /^WebGL\ ([0-9])/.exec( glVersion )[ 1 ] ); - lineWidthAvailable = ( version >= 1.0 ); + version = parseFloat(/^WebGL\ ([0-9])/.exec(glVersion)[1]); + lineWidthAvailable = (version >= 1.0); - } else if ( glVersion.indexOf( 'OpenGL ES' ) !== - 1 ) { + } else if (glVersion.indexOf('OpenGL ES') !== - 1) { - version = parseFloat( /^OpenGL\ ES\ ([0-9])/.exec( glVersion )[ 1 ] ); - lineWidthAvailable = ( version >= 2.0 ); + version = parseFloat(/^OpenGL\ ES\ ([0-9])/.exec(glVersion)[1]); + lineWidthAvailable = (version >= 2.0); } @@ -19208,18 +19221,18 @@ var currentScissor = new Vector4(); var currentViewport = new Vector4(); - function createTexture( type, target, count ) { + function createTexture(type, target, count) { - var data = new Uint8Array( 4 ); // 4 is required to match default unpack alignment of 4. + var data = new Uint8Array(4); // 4 is required to match default unpack alignment of 4. var texture = gl.createTexture(); - gl.bindTexture( type, texture ); - gl.texParameteri( type, 10241, 9728 ); - gl.texParameteri( type, 10240, 9728 ); + gl.bindTexture(type, texture); + gl.texParameteri(type, 10241, 9728); + gl.texParameteri(type, 10240, 9728); - for ( var i = 0; i < count; i ++ ) { + for (var i = 0; i < count; i++) { - gl.texImage2D( target + i, 0, 6408, 1, 1, 0, 6408, 5121, data ); + gl.texImage2D(target + i, 0, 6408, 1, 1, 0, 6408, 5121, data); } @@ -19228,59 +19241,59 @@ } var emptyTextures = {}; - emptyTextures[ 3553 ] = createTexture( 3553, 3553, 1 ); - emptyTextures[ 34067 ] = createTexture( 34067, 34069, 6 ); + emptyTextures[3553] = createTexture(3553, 3553, 1); + emptyTextures[34067] = createTexture(34067, 34069, 6); // init - colorBuffer.setClear( 0, 0, 0, 1 ); - depthBuffer.setClear( 1 ); - stencilBuffer.setClear( 0 ); + colorBuffer.setClear(0, 0, 0, 1); + depthBuffer.setClear(1); + stencilBuffer.setClear(0); - enable( 2929 ); - depthBuffer.setFunc( LessEqualDepth ); + enable(2929); + depthBuffer.setFunc(LessEqualDepth); - setFlipSided( false ); - setCullFace( CullFaceBack ); - enable( 2884 ); + setFlipSided(false); + setCullFace(CullFaceBack); + enable(2884); - setBlending( NoBlending ); + setBlending(NoBlending); // function initAttributes() { - for ( var i = 0, l = newAttributes.length; i < l; i ++ ) { + for (var i = 0, l = newAttributes.length; i < l; i++) { - newAttributes[ i ] = 0; + newAttributes[i] = 0; } } - function enableAttribute( attribute ) { + function enableAttribute(attribute) { - enableAttributeAndDivisor( attribute, 0 ); + enableAttributeAndDivisor(attribute, 0); } - function enableAttributeAndDivisor( attribute, meshPerAttribute ) { + function enableAttributeAndDivisor(attribute, meshPerAttribute) { - newAttributes[ attribute ] = 1; + newAttributes[attribute] = 1; - if ( enabledAttributes[ attribute ] === 0 ) { + if (enabledAttributes[attribute] === 0) { - gl.enableVertexAttribArray( attribute ); - enabledAttributes[ attribute ] = 1; + gl.enableVertexAttribArray(attribute); + enabledAttributes[attribute] = 1; } - if ( attributeDivisors[ attribute ] !== meshPerAttribute ) { + if (attributeDivisors[attribute] !== meshPerAttribute) { - var extension = capabilities.isWebGL2 ? gl : extensions.get( 'ANGLE_instanced_arrays' ); + var extension = capabilities.isWebGL2 ? gl : extensions.get('ANGLE_instanced_arrays'); - extension[ capabilities.isWebGL2 ? 'vertexAttribDivisor' : 'vertexAttribDivisorANGLE' ]( attribute, meshPerAttribute ); - attributeDivisors[ attribute ] = meshPerAttribute; + extension[capabilities.isWebGL2 ? 'vertexAttribDivisor' : 'vertexAttribDivisorANGLE'](attribute, meshPerAttribute); + attributeDivisors[attribute] = meshPerAttribute; } @@ -19288,12 +19301,12 @@ function disableUnusedAttributes() { - for ( var i = 0, l = enabledAttributes.length; i !== l; ++ i ) { + for (var i = 0, l = enabledAttributes.length; i !== l; ++i) { - if ( enabledAttributes[ i ] !== newAttributes[ i ] ) { + if (enabledAttributes[i] !== newAttributes[i]) { - gl.disableVertexAttribArray( i ); - enabledAttributes[ i ] = 0; + gl.disableVertexAttribArray(i); + enabledAttributes[i] = 0; } @@ -19301,23 +19314,23 @@ } - function enable( id ) { + function enable(id) { - if ( enabledCapabilities[ id ] !== true ) { + if (enabledCapabilities[id] !== true) { - gl.enable( id ); - enabledCapabilities[ id ] = true; + gl.enable(id); + enabledCapabilities[id] = true; } } - function disable( id ) { + function disable(id) { - if ( enabledCapabilities[ id ] !== false ) { + if (enabledCapabilities[id] !== false) { - gl.disable( id ); - enabledCapabilities[ id ] = false; + gl.disable(id); + enabledCapabilities[id] = false; } @@ -19325,20 +19338,20 @@ function getCompressedTextureFormats() { - if ( compressedTextureFormats === null ) { + if (compressedTextureFormats === null) { compressedTextureFormats = []; - if ( extensions.get( 'WEBGL_compressed_texture_pvrtc' ) || - extensions.get( 'WEBGL_compressed_texture_s3tc' ) || - extensions.get( 'WEBGL_compressed_texture_etc1' ) || - extensions.get( 'WEBGL_compressed_texture_astc' ) ) { + if (extensions.get('WEBGL_compressed_texture_pvrtc') || + extensions.get('WEBGL_compressed_texture_s3tc') || + extensions.get('WEBGL_compressed_texture_etc1') || + extensions.get('WEBGL_compressed_texture_astc')) { - var formats = gl.getParameter( 34467 ); + var formats = gl.getParameter(34467); - for ( var i = 0; i < formats.length; i ++ ) { + for (var i = 0; i < formats.length; i++) { - compressedTextureFormats.push( formats[ i ] ); + compressedTextureFormats.push(formats[i]); } @@ -19350,11 +19363,11 @@ } - function useProgram( program ) { + function useProgram(program) { - if ( currentProgram !== program ) { + if (currentProgram !== program) { - gl.useProgram( program ); + gl.useProgram(program); currentProgram = program; @@ -19366,13 +19379,13 @@ } - function setBlending( blending, blendEquation, blendSrc, blendDst, blendEquationAlpha, blendSrcAlpha, blendDstAlpha, premultipliedAlpha ) { + function setBlending(blending, blendEquation, blendSrc, blendDst, blendEquationAlpha, blendSrcAlpha, blendDstAlpha, premultipliedAlpha) { - if ( blending === NoBlending ) { + if (blending === NoBlending) { - if ( currentBlendingEnabled ) { + if (currentBlendingEnabled) { - disable( 3042 ); + disable(3042); currentBlendingEnabled = false; } @@ -19381,74 +19394,74 @@ } - if ( ! currentBlendingEnabled ) { + if (!currentBlendingEnabled) { - enable( 3042 ); + enable(3042); currentBlendingEnabled = true; } - if ( blending !== CustomBlending ) { + if (blending !== CustomBlending) { - if ( blending !== currentBlending || premultipliedAlpha !== currentPremultipledAlpha ) { + if (blending !== currentBlending || premultipliedAlpha !== currentPremultipledAlpha) { - if ( currentBlendEquation !== AddEquation || currentBlendEquationAlpha !== AddEquation ) { + if (currentBlendEquation !== AddEquation || currentBlendEquationAlpha !== AddEquation) { - gl.blendEquation( 32774 ); + gl.blendEquation(32774); currentBlendEquation = AddEquation; currentBlendEquationAlpha = AddEquation; } - if ( premultipliedAlpha ) { + if (premultipliedAlpha) { - switch ( blending ) { + switch (blending) { case NormalBlending: - gl.blendFuncSeparate( 1, 771, 1, 771 ); + gl.blendFuncSeparate(1, 771, 1, 771); break; case AdditiveBlending: - gl.blendFunc( 1, 1 ); + gl.blendFunc(1, 1); break; case SubtractiveBlending: - gl.blendFuncSeparate( 0, 0, 769, 771 ); + gl.blendFuncSeparate(0, 0, 769, 771); break; case MultiplyBlending: - gl.blendFuncSeparate( 0, 768, 0, 770 ); + gl.blendFuncSeparate(0, 768, 0, 770); break; default: - console.error( 'THREE.WebGLState: Invalid blending: ', blending ); + console.error('THREE.WebGLState: Invalid blending: ', blending); break; } } else { - switch ( blending ) { + switch (blending) { case NormalBlending: - gl.blendFuncSeparate( 770, 771, 1, 771 ); + gl.blendFuncSeparate(770, 771, 1, 771); break; case AdditiveBlending: - gl.blendFunc( 770, 1 ); + gl.blendFunc(770, 1); break; case SubtractiveBlending: - gl.blendFunc( 0, 769 ); + gl.blendFunc(0, 769); break; case MultiplyBlending: - gl.blendFunc( 0, 768 ); + gl.blendFunc(0, 768); break; default: - console.error( 'THREE.WebGLState: Invalid blending: ', blending ); + console.error('THREE.WebGLState: Invalid blending: ', blending); break; } @@ -19475,18 +19488,18 @@ blendSrcAlpha = blendSrcAlpha || blendSrc; blendDstAlpha = blendDstAlpha || blendDst; - if ( blendEquation !== currentBlendEquation || blendEquationAlpha !== currentBlendEquationAlpha ) { + if (blendEquation !== currentBlendEquation || blendEquationAlpha !== currentBlendEquationAlpha) { - gl.blendEquationSeparate( utils.convert( blendEquation ), utils.convert( blendEquationAlpha ) ); + gl.blendEquationSeparate(utils.convert(blendEquation), utils.convert(blendEquationAlpha)); currentBlendEquation = blendEquation; currentBlendEquationAlpha = blendEquationAlpha; } - if ( blendSrc !== currentBlendSrc || blendDst !== currentBlendDst || blendSrcAlpha !== currentBlendSrcAlpha || blendDstAlpha !== currentBlendDstAlpha ) { + if (blendSrc !== currentBlendSrc || blendDst !== currentBlendDst || blendSrcAlpha !== currentBlendSrcAlpha || blendDstAlpha !== currentBlendDstAlpha) { - gl.blendFuncSeparate( utils.convert( blendSrc ), utils.convert( blendDst ), utils.convert( blendSrcAlpha ), utils.convert( blendDstAlpha ) ); + gl.blendFuncSeparate(utils.convert(blendSrc), utils.convert(blendDst), utils.convert(blendSrcAlpha), utils.convert(blendDstAlpha)); currentBlendSrc = blendSrc; currentBlendDst = blendDst; @@ -19500,43 +19513,43 @@ } - function setMaterial( material, frontFaceCW ) { + function setMaterial(material, frontFaceCW) { material.side === DoubleSide - ? disable( 2884 ) - : enable( 2884 ); + ? disable(2884) + : enable(2884); - var flipSided = ( material.side === BackSide ); - if ( frontFaceCW ) flipSided = ! flipSided; + var flipSided = (material.side === BackSide); + if (frontFaceCW) flipSided = !flipSided; - setFlipSided( flipSided ); + setFlipSided(flipSided); - ( material.blending === NormalBlending && material.transparent === false ) - ? setBlending( NoBlending ) - : setBlending( material.blending, material.blendEquation, material.blendSrc, material.blendDst, material.blendEquationAlpha, material.blendSrcAlpha, material.blendDstAlpha, material.premultipliedAlpha ); + (material.blending === NormalBlending && material.transparent === false) + ? setBlending(NoBlending) + : setBlending(material.blending, material.blendEquation, material.blendSrc, material.blendDst, material.blendEquationAlpha, material.blendSrcAlpha, material.blendDstAlpha, material.premultipliedAlpha); - depthBuffer.setFunc( material.depthFunc ); - depthBuffer.setTest( material.depthTest ); - depthBuffer.setMask( material.depthWrite ); - colorBuffer.setMask( material.colorWrite ); + depthBuffer.setFunc(material.depthFunc); + depthBuffer.setTest(material.depthTest); + depthBuffer.setMask(material.depthWrite); + colorBuffer.setMask(material.colorWrite); - setPolygonOffset( material.polygonOffset, material.polygonOffsetFactor, material.polygonOffsetUnits ); + setPolygonOffset(material.polygonOffset, material.polygonOffsetFactor, material.polygonOffsetUnits); } // - function setFlipSided( flipSided ) { + function setFlipSided(flipSided) { - if ( currentFlipSided !== flipSided ) { + if (currentFlipSided !== flipSided) { - if ( flipSided ) { + if (flipSided) { - gl.frontFace( 2304 ); + gl.frontFace(2304); } else { - gl.frontFace( 2305 ); + gl.frontFace(2305); } @@ -19546,25 +19559,25 @@ } - function setCullFace( cullFace ) { + function setCullFace(cullFace) { - if ( cullFace !== CullFaceNone ) { + if (cullFace !== CullFaceNone) { - enable( 2884 ); + enable(2884); - if ( cullFace !== currentCullFace ) { + if (cullFace !== currentCullFace) { - if ( cullFace === CullFaceBack ) { + if (cullFace === CullFaceBack) { - gl.cullFace( 1029 ); + gl.cullFace(1029); - } else if ( cullFace === CullFaceFront ) { + } else if (cullFace === CullFaceFront) { - gl.cullFace( 1028 ); + gl.cullFace(1028); } else { - gl.cullFace( 1032 ); + gl.cullFace(1032); } @@ -19572,7 +19585,7 @@ } else { - disable( 2884 ); + disable(2884); } @@ -19580,11 +19593,11 @@ } - function setLineWidth( width ) { + function setLineWidth(width) { - if ( width !== currentLineWidth ) { + if (width !== currentLineWidth) { - if ( lineWidthAvailable ) gl.lineWidth( width ); + if (lineWidthAvailable) gl.lineWidth(width); currentLineWidth = width; @@ -19592,15 +19605,15 @@ } - function setPolygonOffset( polygonOffset, factor, units ) { + function setPolygonOffset(polygonOffset, factor, units) { - if ( polygonOffset ) { + if (polygonOffset) { - enable( 32823 ); + enable(32823); - if ( currentPolygonOffsetFactor !== factor || currentPolygonOffsetUnits !== units ) { + if (currentPolygonOffsetFactor !== factor || currentPolygonOffsetUnits !== units) { - gl.polygonOffset( factor, units ); + gl.polygonOffset(factor, units); currentPolygonOffsetFactor = factor; currentPolygonOffsetUnits = units; @@ -19609,21 +19622,21 @@ } else { - disable( 32823 ); + disable(32823); } } - function setScissorTest( scissorTest ) { + function setScissorTest(scissorTest) { - if ( scissorTest ) { + if (scissorTest) { - enable( 3089 ); + enable(3089); } else { - disable( 3089 ); + disable(3089); } @@ -19631,39 +19644,39 @@ // texture - function activeTexture( webglSlot ) { + function activeTexture(webglSlot) { - if ( webglSlot === undefined ) webglSlot = 33984 + maxTextures - 1; + if (webglSlot === undefined) webglSlot = 33984 + maxTextures - 1; - if ( currentTextureSlot !== webglSlot ) { + if (currentTextureSlot !== webglSlot) { - gl.activeTexture( webglSlot ); + gl.activeTexture(webglSlot); currentTextureSlot = webglSlot; } } - function bindTexture( webglType, webglTexture ) { + function bindTexture(webglType, webglTexture) { - if ( currentTextureSlot === null ) { + if (currentTextureSlot === null) { activeTexture(); } - var boundTexture = currentBoundTextures[ currentTextureSlot ]; + var boundTexture = currentBoundTextures[currentTextureSlot]; - if ( boundTexture === undefined ) { + if (boundTexture === undefined) { boundTexture = { type: undefined, texture: undefined }; - currentBoundTextures[ currentTextureSlot ] = boundTexture; + currentBoundTextures[currentTextureSlot] = boundTexture; } - if ( boundTexture.type !== webglType || boundTexture.texture !== webglTexture ) { + if (boundTexture.type !== webglType || boundTexture.texture !== webglTexture) { - gl.bindTexture( webglType, webglTexture || emptyTextures[ webglType ] ); + gl.bindTexture(webglType, webglTexture || emptyTextures[webglType]); boundTexture.type = webglType; boundTexture.texture = webglTexture; @@ -19676,11 +19689,11 @@ try { - gl.compressedTexImage2D.apply( gl, arguments ); + gl.compressedTexImage2D.apply(gl, arguments); - } catch ( error ) { + } catch (error) { - console.error( 'THREE.WebGLState:', error ); + console.error('THREE.WebGLState:', error); } @@ -19690,11 +19703,11 @@ try { - gl.texImage2D.apply( gl, arguments ); + gl.texImage2D.apply(gl, arguments); - } catch ( error ) { + } catch (error) { - console.error( 'THREE.WebGLState:', error ); + console.error('THREE.WebGLState:', error); } @@ -19704,11 +19717,11 @@ try { - gl.texImage3D.apply( gl, arguments ); + gl.texImage3D.apply(gl, arguments); - } catch ( error ) { + } catch (error) { - console.error( 'THREE.WebGLState:', error ); + console.error('THREE.WebGLState:', error); } @@ -19716,23 +19729,23 @@ // - function scissor( scissor ) { + function scissor(scissor) { - if ( currentScissor.equals( scissor ) === false ) { + if (currentScissor.equals(scissor) === false) { - gl.scissor( scissor.x, scissor.y, scissor.z, scissor.w ); - currentScissor.copy( scissor ); + gl.scissor(scissor.x, scissor.y, scissor.z, scissor.w); + currentScissor.copy(scissor); } } - function viewport( viewport ) { + function viewport(viewport) { - if ( currentViewport.equals( viewport ) === false ) { + if (currentViewport.equals(viewport) === false) { - gl.viewport( viewport.x, viewport.y, viewport.z, viewport.w ); - currentViewport.copy( viewport ); + gl.viewport(viewport.x, viewport.y, viewport.z, viewport.w); + currentViewport.copy(viewport); } @@ -19742,12 +19755,12 @@ function reset() { - for ( var i = 0; i < enabledAttributes.length; i ++ ) { + for (var i = 0; i < enabledAttributes.length; i++) { - if ( enabledAttributes[ i ] === 1 ) { + if (enabledAttributes[i] === 1) { - gl.disableVertexAttribArray( i ); - enabledAttributes[ i ] = 0; + gl.disableVertexAttribArray(i); + enabledAttributes[i] = 0; } @@ -19821,20 +19834,20 @@ * @author mrdoob / http://mrdoob.com/ */ - function WebGLTextures( _gl, extensions, state, properties, capabilities, utils, info ) { + function WebGLTextures(_gl, extensions, state, properties, capabilities, utils, info) { var _videoTextures = {}; var _canvas; // - function clampToMaxSize( image, maxSize ) { + function clampToMaxSize(image, maxSize) { - if ( image.width > maxSize || image.height > maxSize ) { + if (image.width > maxSize || image.height > maxSize) { - if ( 'data' in image ) { + if ('data' in image) { - console.warn( 'THREE.WebGLRenderer: image in DataTexture is too big (' + image.width + 'x' + image.height + ').' ); + console.warn('THREE.WebGLRenderer: image in DataTexture is too big (' + image.width + 'x' + image.height + ').'); return; } @@ -19842,16 +19855,16 @@ // Warning: Scaling through the canvas will only work with images that use // premultiplied alpha. - var scale = maxSize / Math.max( image.width, image.height ); + var scale = maxSize / Math.max(image.width, image.height); - var canvas = document.createElementNS( 'http://www.w3.org/1999/xhtml', 'canvas' ); - canvas.width = Math.floor( image.width * scale ); - canvas.height = Math.floor( image.height * scale ); + var canvas = document.createElementNS('http://www.w3.org/1999/xhtml', 'canvas'); + canvas.width = Math.floor(image.width * scale); + canvas.height = Math.floor(image.height * scale); - var context = canvas.getContext( '2d' ); - context.drawImage( image, 0, 0, image.width, image.height, 0, 0, canvas.width, canvas.height ); + var context = canvas.getContext('2d'); + context.drawImage(image, 0, 0, image.width, image.height, 0, 0, canvas.width, canvas.height); - console.warn( 'THREE.WebGLRenderer: image is too big (' + image.width + 'x' + image.height + '). Resized to ' + canvas.width + 'x' + canvas.height ); + console.warn('THREE.WebGLRenderer: image is too big (' + image.width + 'x' + image.height + '). Resized to ' + canvas.width + 'x' + canvas.height); return canvas; @@ -19861,25 +19874,25 @@ } - function isPowerOfTwo( image ) { + function isPowerOfTwo(image) { - return _Math.isPowerOfTwo( image.width ) && _Math.isPowerOfTwo( image.height ); + return _Math.isPowerOfTwo(image.width) && _Math.isPowerOfTwo(image.height); } - function makePowerOfTwo( image ) { + function makePowerOfTwo(image) { - if ( image instanceof HTMLImageElement || image instanceof HTMLCanvasElement || image instanceof ImageBitmap ) { + if (image instanceof HTMLImageElement || image instanceof HTMLCanvasElement || image instanceof ImageBitmap) { - if ( _canvas === undefined ) _canvas = document.createElementNS( 'http://www.w3.org/1999/xhtml', 'canvas' ); + if (_canvas === undefined) _canvas = document.createElementNS('http://www.w3.org/1999/xhtml', 'canvas'); - _canvas.width = _Math.floorPowerOfTwo( image.width ); - _canvas.height = _Math.floorPowerOfTwo( image.height ); + _canvas.width = _Math.floorPowerOfTwo(image.width); + _canvas.height = _Math.floorPowerOfTwo(image.height); - var context = _canvas.getContext( '2d' ); - context.drawImage( image, 0, 0, _canvas.width, _canvas.height ); + var context = _canvas.getContext('2d'); + context.drawImage(image, 0, 0, _canvas.width, _canvas.height); - console.warn( 'THREE.WebGLRenderer: image is not power of two (' + image.width + 'x' + image.height + '). Resized to ' + _canvas.width + 'x' + _canvas.height ); + console.warn('THREE.WebGLRenderer: image is not power of two (' + image.width + 'x' + image.height + '). Resized to ' + _canvas.width + 'x' + _canvas.height); return _canvas; @@ -19889,58 +19902,58 @@ } - function textureNeedsPowerOfTwo( texture ) { + function textureNeedsPowerOfTwo(texture) { - if ( capabilities.isWebGL2 ) return false; + if (capabilities.isWebGL2) return false; - return ( texture.wrapS !== ClampToEdgeWrapping || texture.wrapT !== ClampToEdgeWrapping ) || - ( texture.minFilter !== NearestFilter && texture.minFilter !== LinearFilter ); + return (texture.wrapS !== ClampToEdgeWrapping || texture.wrapT !== ClampToEdgeWrapping) || + (texture.minFilter !== NearestFilter && texture.minFilter !== LinearFilter); } - function textureNeedsGenerateMipmaps( texture, isPowerOfTwo ) { + function textureNeedsGenerateMipmaps(texture, isPowerOfTwo) { return texture.generateMipmaps && isPowerOfTwo && texture.minFilter !== NearestFilter && texture.minFilter !== LinearFilter; } - function generateMipmap( target, texture, width, height ) { + function generateMipmap(target, texture, width, height) { - _gl.generateMipmap( target ); + _gl.generateMipmap(target); - var textureProperties = properties.get( texture ); + var textureProperties = properties.get(texture); // Note: Math.log( x ) * Math.LOG2E used instead of Math.log2( x ) which is not supported by IE11 - textureProperties.__maxMipLevel = Math.log( Math.max( width, height ) ) * Math.LOG2E; + textureProperties.__maxMipLevel = Math.log(Math.max(width, height)) * Math.LOG2E; } - function getInternalFormat( glFormat, glType ) { + function getInternalFormat(glFormat, glType) { - if ( ! capabilities.isWebGL2 ) return glFormat; + if (!capabilities.isWebGL2) return glFormat; - if ( glFormat === 6403 ) { + if (glFormat === 6403) { - if ( glType === 5126 ) return 33326; - if ( glType === 5131 ) return 33325; - if ( glType === 5121 ) return 33321; + if (glType === 5126) return 33326; + if (glType === 5131) return 33325; + if (glType === 5121) return 33321; } - if ( glFormat === 6407 ) { + if (glFormat === 6407) { - if ( glType === 5126 ) return 34837; - if ( glType === 5131 ) return 34843; - if ( glType === 5121 ) return 32849; + if (glType === 5126) return 34837; + if (glType === 5131) return 34843; + if (glType === 5121) return 32849; } - if ( glFormat === 6408 ) { + if (glFormat === 6408) { - if ( glType === 5126 ) return 34836; - if ( glType === 5131 ) return 34842; - if ( glType === 5121 ) return 32856; + if (glType === 5126) return 34836; + if (glType === 5131) return 34842; + if (glType === 5121) return 32856; } @@ -19950,9 +19963,9 @@ // Fallback filters for non-power-of-2 textures - function filterFallback( f ) { + function filterFallback(f) { - if ( f === NearestFilter || f === NearestMipMapNearestFilter || f === NearestMipMapLinearFilter ) { + if (f === NearestFilter || f === NearestMipMapNearestFilter || f === NearestMipMapLinearFilter) { return 9728; @@ -19964,100 +19977,100 @@ // - function onTextureDispose( event ) { + function onTextureDispose(event) { var texture = event.target; - texture.removeEventListener( 'dispose', onTextureDispose ); + texture.removeEventListener('dispose', onTextureDispose); - deallocateTexture( texture ); + deallocateTexture(texture); - if ( texture.isVideoTexture ) { + if (texture.isVideoTexture) { - delete _videoTextures[ texture.id ]; + delete _videoTextures[texture.id]; } - info.memory.textures --; + info.memory.textures--; } - function onRenderTargetDispose( event ) { + function onRenderTargetDispose(event) { var renderTarget = event.target; - renderTarget.removeEventListener( 'dispose', onRenderTargetDispose ); + renderTarget.removeEventListener('dispose', onRenderTargetDispose); - deallocateRenderTarget( renderTarget ); + deallocateRenderTarget(renderTarget); - info.memory.textures --; + info.memory.textures--; } // - function deallocateTexture( texture ) { + function deallocateTexture(texture) { - var textureProperties = properties.get( texture ); + var textureProperties = properties.get(texture); - if ( texture.image && textureProperties.__image__webglTextureCube ) { + if (texture.image && textureProperties.__image__webglTextureCube) { // cube texture - _gl.deleteTexture( textureProperties.__image__webglTextureCube ); + _gl.deleteTexture(textureProperties.__image__webglTextureCube); } else { // 2D texture - if ( textureProperties.__webglInit === undefined ) return; + if (textureProperties.__webglInit === undefined) return; - _gl.deleteTexture( textureProperties.__webglTexture ); + _gl.deleteTexture(textureProperties.__webglTexture); } // remove all webgl properties - properties.remove( texture ); + properties.remove(texture); } - function deallocateRenderTarget( renderTarget ) { + function deallocateRenderTarget(renderTarget) { - var renderTargetProperties = properties.get( renderTarget ); - var textureProperties = properties.get( renderTarget.texture ); + var renderTargetProperties = properties.get(renderTarget); + var textureProperties = properties.get(renderTarget.texture); - if ( ! renderTarget ) return; + if (!renderTarget) return; - if ( textureProperties.__webglTexture !== undefined ) { + if (textureProperties.__webglTexture !== undefined) { - _gl.deleteTexture( textureProperties.__webglTexture ); + _gl.deleteTexture(textureProperties.__webglTexture); } - if ( renderTarget.depthTexture ) { + if (renderTarget.depthTexture) { renderTarget.depthTexture.dispose(); } - if ( renderTarget.isWebGLRenderTargetCube ) { + if (renderTarget.isWebGLRenderTargetCube) { - for ( var i = 0; i < 6; i ++ ) { + for (var i = 0; i < 6; i++) { - _gl.deleteFramebuffer( renderTargetProperties.__webglFramebuffer[ i ] ); - if ( renderTargetProperties.__webglDepthbuffer ) _gl.deleteRenderbuffer( renderTargetProperties.__webglDepthbuffer[ i ] ); + _gl.deleteFramebuffer(renderTargetProperties.__webglFramebuffer[i]); + if (renderTargetProperties.__webglDepthbuffer) _gl.deleteRenderbuffer(renderTargetProperties.__webglDepthbuffer[i]); } } else { - _gl.deleteFramebuffer( renderTargetProperties.__webglFramebuffer ); - if ( renderTargetProperties.__webglDepthbuffer ) _gl.deleteRenderbuffer( renderTargetProperties.__webglDepthbuffer ); + _gl.deleteFramebuffer(renderTargetProperties.__webglFramebuffer); + if (renderTargetProperties.__webglDepthbuffer) _gl.deleteRenderbuffer(renderTargetProperties.__webglDepthbuffer); } - properties.remove( renderTarget.texture ); - properties.remove( renderTarget ); + properties.remove(renderTarget.texture); + properties.remove(renderTarget); } @@ -20065,142 +20078,142 @@ - function setTexture2D( texture, slot ) { + function setTexture2D(texture, slot) { - var textureProperties = properties.get( texture ); + var textureProperties = properties.get(texture); - if ( texture.isVideoTexture ) updateVideoTexture( texture ); + if (texture.isVideoTexture) updateVideoTexture(texture); - if ( texture.version > 0 && textureProperties.__version !== texture.version ) { + if (texture.version > 0 && textureProperties.__version !== texture.version) { var image = texture.image; - if ( image === undefined ) { + if (image === undefined) { - console.warn( 'THREE.WebGLRenderer: Texture marked for update but image is undefined' ); + console.warn('THREE.WebGLRenderer: Texture marked for update but image is undefined'); - } else if ( image.complete === false ) { + } else if (image.complete === false) { - console.warn( 'THREE.WebGLRenderer: Texture marked for update but image is incomplete' ); + console.warn('THREE.WebGLRenderer: Texture marked for update but image is incomplete'); } else { - uploadTexture( textureProperties, texture, slot ); + uploadTexture(textureProperties, texture, slot); return; } } - state.activeTexture( 33984 + slot ); - state.bindTexture( 3553, textureProperties.__webglTexture ); + state.activeTexture(33984 + slot); + state.bindTexture(3553, textureProperties.__webglTexture); } - function setTexture3D( texture, slot ) { + function setTexture3D(texture, slot) { - var textureProperties = properties.get( texture ); + var textureProperties = properties.get(texture); - if ( texture.version > 0 && textureProperties.__version !== texture.version ) { + if (texture.version > 0 && textureProperties.__version !== texture.version) { - uploadTexture( textureProperties, texture, slot ); + uploadTexture(textureProperties, texture, slot); return; } - state.activeTexture( 33984 + slot ); - state.bindTexture( 32879, textureProperties.__webglTexture ); + state.activeTexture(33984 + slot); + state.bindTexture(32879, textureProperties.__webglTexture); } - function setTextureCube( texture, slot ) { + function setTextureCube(texture, slot) { - var textureProperties = properties.get( texture ); + var textureProperties = properties.get(texture); - if ( texture.image.length === 6 ) { + if (texture.image.length === 6) { - if ( texture.version > 0 && textureProperties.__version !== texture.version ) { + if (texture.version > 0 && textureProperties.__version !== texture.version) { - if ( ! textureProperties.__image__webglTextureCube ) { + if (!textureProperties.__image__webglTextureCube) { - texture.addEventListener( 'dispose', onTextureDispose ); + texture.addEventListener('dispose', onTextureDispose); textureProperties.__image__webglTextureCube = _gl.createTexture(); - info.memory.textures ++; + info.memory.textures++; } - state.activeTexture( 33984 + slot ); - state.bindTexture( 34067, textureProperties.__image__webglTextureCube ); + state.activeTexture(33984 + slot); + state.bindTexture(34067, textureProperties.__image__webglTextureCube); - _gl.pixelStorei( 37440, texture.flipY ); + _gl.pixelStorei(37440, texture.flipY); - var isCompressed = ( texture && texture.isCompressedTexture ); - var isDataTexture = ( texture.image[ 0 ] && texture.image[ 0 ].isDataTexture ); + var isCompressed = (texture && texture.isCompressedTexture); + var isDataTexture = (texture.image[0] && texture.image[0].isDataTexture); var cubeImage = []; - for ( var i = 0; i < 6; i ++ ) { + for (var i = 0; i < 6; i++) { - if ( ! isCompressed && ! isDataTexture ) { + if (!isCompressed && !isDataTexture) { - cubeImage[ i ] = clampToMaxSize( texture.image[ i ], capabilities.maxCubemapSize ); + cubeImage[i] = clampToMaxSize(texture.image[i], capabilities.maxCubemapSize); } else { - cubeImage[ i ] = isDataTexture ? texture.image[ i ].image : texture.image[ i ]; + cubeImage[i] = isDataTexture ? texture.image[i].image : texture.image[i]; } } - var image = cubeImage[ 0 ], - isPowerOfTwoImage = isPowerOfTwo( image ), - glFormat = utils.convert( texture.format ), - glType = utils.convert( texture.type ), - glInternalFormat = getInternalFormat( glFormat, glType ); + var image = cubeImage[0], + isPowerOfTwoImage = isPowerOfTwo(image), + glFormat = utils.convert(texture.format), + glType = utils.convert(texture.type), + glInternalFormat = getInternalFormat(glFormat, glType); - setTextureParameters( 34067, texture, isPowerOfTwoImage ); + setTextureParameters(34067, texture, isPowerOfTwoImage); - for ( var i = 0; i < 6; i ++ ) { + for (var i = 0; i < 6; i++) { - if ( ! isCompressed ) { + if (!isCompressed) { - if ( isDataTexture ) { + if (isDataTexture) { - state.texImage2D( 34069 + i, 0, glInternalFormat, cubeImage[ i ].width, cubeImage[ i ].height, 0, glFormat, glType, cubeImage[ i ].data ); + state.texImage2D(34069 + i, 0, glInternalFormat, cubeImage[i].width, cubeImage[i].height, 0, glFormat, glType, cubeImage[i].data); } else { - state.texImage2D( 34069 + i, 0, glInternalFormat, glFormat, glType, cubeImage[ i ] ); + state.texImage2D(34069 + i, 0, glInternalFormat, glFormat, glType, cubeImage[i]); } } else { - var mipmap, mipmaps = cubeImage[ i ].mipmaps; + var mipmap, mipmaps = cubeImage[i].mipmaps; - for ( var j = 0, jl = mipmaps.length; j < jl; j ++ ) { + for (var j = 0, jl = mipmaps.length; j < jl; j++) { - mipmap = mipmaps[ j ]; + mipmap = mipmaps[j]; - if ( texture.format !== RGBAFormat && texture.format !== RGBFormat ) { + if (texture.format !== RGBAFormat && texture.format !== RGBFormat) { - if ( state.getCompressedTextureFormats().indexOf( glFormat ) > - 1 ) { + if (state.getCompressedTextureFormats().indexOf(glFormat) > - 1) { - state.compressedTexImage2D( 34069 + i, j, glInternalFormat, mipmap.width, mipmap.height, 0, mipmap.data ); + state.compressedTexImage2D(34069 + i, j, glInternalFormat, mipmap.width, mipmap.height, 0, mipmap.data); } else { - console.warn( 'THREE.WebGLRenderer: Attempt to load unsupported compressed texture format in .setTextureCube()' ); + console.warn('THREE.WebGLRenderer: Attempt to load unsupported compressed texture format in .setTextureCube()'); } } else { - state.texImage2D( 34069 + i, j, glInternalFormat, mipmap.width, mipmap.height, 0, glFormat, glType, mipmap.data ); + state.texImage2D(34069 + i, j, glInternalFormat, mipmap.width, mipmap.height, 0, glFormat, glType, mipmap.data); } @@ -20210,7 +20223,7 @@ } - if ( ! isCompressed ) { + if (!isCompressed) { textureProperties.__maxMipLevel = 0; @@ -20220,21 +20233,21 @@ } - if ( textureNeedsGenerateMipmaps( texture, isPowerOfTwoImage ) ) { + if (textureNeedsGenerateMipmaps(texture, isPowerOfTwoImage)) { // We assume images for cube map have the same size. - generateMipmap( 34067, texture, image.width, image.height ); + generateMipmap(34067, texture, image.width, image.height); } textureProperties.__version = texture.version; - if ( texture.onUpdate ) texture.onUpdate( texture ); + if (texture.onUpdate) texture.onUpdate(texture); } else { - state.activeTexture( 33984 + slot ); - state.bindTexture( 34067, textureProperties.__image__webglTextureCube ); + state.activeTexture(33984 + slot); + state.bindTexture(34067, textureProperties.__image__webglTextureCube); } @@ -20242,58 +20255,58 @@ } - function setTextureCubeDynamic( texture, slot ) { + function setTextureCubeDynamic(texture, slot) { - state.activeTexture( 33984 + slot ); - state.bindTexture( 34067, properties.get( texture ).__webglTexture ); + state.activeTexture(33984 + slot); + state.bindTexture(34067, properties.get(texture).__webglTexture); } - function setTextureParameters( textureType, texture, isPowerOfTwoImage ) { + function setTextureParameters(textureType, texture, isPowerOfTwoImage) { var extension; - if ( isPowerOfTwoImage ) { + if (isPowerOfTwoImage) { - _gl.texParameteri( textureType, 10242, utils.convert( texture.wrapS ) ); - _gl.texParameteri( textureType, 10243, utils.convert( texture.wrapT ) ); + _gl.texParameteri(textureType, 10242, utils.convert(texture.wrapS)); + _gl.texParameteri(textureType, 10243, utils.convert(texture.wrapT)); - _gl.texParameteri( textureType, 10240, utils.convert( texture.magFilter ) ); - _gl.texParameteri( textureType, 10241, utils.convert( texture.minFilter ) ); + _gl.texParameteri(textureType, 10240, utils.convert(texture.magFilter)); + _gl.texParameteri(textureType, 10241, utils.convert(texture.minFilter)); } else { - _gl.texParameteri( textureType, 10242, 33071 ); - _gl.texParameteri( textureType, 10243, 33071 ); + _gl.texParameteri(textureType, 10242, 33071); + _gl.texParameteri(textureType, 10243, 33071); - if ( texture.wrapS !== ClampToEdgeWrapping || texture.wrapT !== ClampToEdgeWrapping ) { + if (texture.wrapS !== ClampToEdgeWrapping || texture.wrapT !== ClampToEdgeWrapping) { - console.warn( 'THREE.WebGLRenderer: Texture is not power of two. Texture.wrapS and Texture.wrapT should be set to THREE.ClampToEdgeWrapping.' ); + console.warn('THREE.WebGLRenderer: Texture is not power of two. Texture.wrapS and Texture.wrapT should be set to THREE.ClampToEdgeWrapping.'); } - _gl.texParameteri( textureType, 10240, filterFallback( texture.magFilter ) ); - _gl.texParameteri( textureType, 10241, filterFallback( texture.minFilter ) ); + _gl.texParameteri(textureType, 10240, filterFallback(texture.magFilter)); + _gl.texParameteri(textureType, 10241, filterFallback(texture.minFilter)); - if ( texture.minFilter !== NearestFilter && texture.minFilter !== LinearFilter ) { + if (texture.minFilter !== NearestFilter && texture.minFilter !== LinearFilter) { - console.warn( 'THREE.WebGLRenderer: Texture is not power of two. Texture.minFilter should be set to THREE.NearestFilter or THREE.LinearFilter.' ); + console.warn('THREE.WebGLRenderer: Texture is not power of two. Texture.minFilter should be set to THREE.NearestFilter or THREE.LinearFilter.'); } } - extension = extensions.get( 'EXT_texture_filter_anisotropic' ); + extension = extensions.get('EXT_texture_filter_anisotropic'); - if ( extension ) { + if (extension) { - if ( texture.type === FloatType && extensions.get( 'OES_texture_float_linear' ) === null ) return; - if ( texture.type === HalfFloatType && ( capabilities.isWebGL2 || extensions.get( 'OES_texture_half_float_linear' ) ) === null ) return; + if (texture.type === FloatType && extensions.get('OES_texture_float_linear') === null) return; + if (texture.type === HalfFloatType && (capabilities.isWebGL2 || extensions.get('OES_texture_half_float_linear')) === null) return; - if ( texture.anisotropy > 1 || properties.get( texture ).__currentAnisotropy ) { + if (texture.anisotropy > 1 || properties.get(texture).__currentAnisotropy) { - _gl.texParameterf( textureType, extension.TEXTURE_MAX_ANISOTROPY_EXT, Math.min( texture.anisotropy, capabilities.getMaxAnisotropy() ) ); - properties.get( texture ).__currentAnisotropy = texture.anisotropy; + _gl.texParameterf(textureType, extension.TEXTURE_MAX_ANISOTROPY_EXT, Math.min(texture.anisotropy, capabilities.getMaxAnisotropy())); + properties.get(texture).__currentAnisotropy = texture.anisotropy; } @@ -20301,11 +20314,11 @@ } - function uploadTexture( textureProperties, texture, slot ) { + function uploadTexture(textureProperties, texture, slot) { var textureType; - if ( texture.isDataTexture3D ) { + if (texture.isDataTexture3D) { textureType = 32879; @@ -20316,74 +20329,74 @@ } - if ( textureProperties.__webglInit === undefined ) { + if (textureProperties.__webglInit === undefined) { textureProperties.__webglInit = true; - texture.addEventListener( 'dispose', onTextureDispose ); + texture.addEventListener('dispose', onTextureDispose); textureProperties.__webglTexture = _gl.createTexture(); - info.memory.textures ++; + info.memory.textures++; } - state.activeTexture( 33984 + slot ); + state.activeTexture(33984 + slot); - state.bindTexture( textureType, textureProperties.__webglTexture ); + state.bindTexture(textureType, textureProperties.__webglTexture); - _gl.pixelStorei( 37440, texture.flipY ); - _gl.pixelStorei( 37441, texture.premultiplyAlpha ); - _gl.pixelStorei( 3317, texture.unpackAlignment ); + _gl.pixelStorei(37440, texture.flipY); + _gl.pixelStorei(37441, texture.premultiplyAlpha); + _gl.pixelStorei(3317, texture.unpackAlignment); - var image = clampToMaxSize( texture.image, capabilities.maxTextureSize ); + var image = clampToMaxSize(texture.image, capabilities.maxTextureSize); - if ( textureNeedsPowerOfTwo( texture ) && isPowerOfTwo( image ) === false ) { + if (textureNeedsPowerOfTwo(texture) && isPowerOfTwo(image) === false) { - image = makePowerOfTwo( image ); + image = makePowerOfTwo(image); } - var isPowerOfTwoImage = isPowerOfTwo( image ), - glFormat = utils.convert( texture.format ), - glType = utils.convert( texture.type ), - glInternalFormat = getInternalFormat( glFormat, glType ); + var isPowerOfTwoImage = isPowerOfTwo(image), + glFormat = utils.convert(texture.format), + glType = utils.convert(texture.type), + glInternalFormat = getInternalFormat(glFormat, glType); - setTextureParameters( textureType, texture, isPowerOfTwoImage ); + setTextureParameters(textureType, texture, isPowerOfTwoImage); var mipmap, mipmaps = texture.mipmaps; - if ( texture.isDepthTexture ) { + if (texture.isDepthTexture) { // populate depth texture with dummy data glInternalFormat = 6402; - if ( texture.type === FloatType ) { + if (texture.type === FloatType) { - if ( ! capabilities.isWebGL2 ) throw new Error( 'Float Depth Texture only supported in WebGL2.0' ); + if (!capabilities.isWebGL2) throw new Error('Float Depth Texture only supported in WebGL2.0'); glInternalFormat = 36012; - } else if ( capabilities.isWebGL2 ) { + } else if (capabilities.isWebGL2) { // WebGL 2.0 requires signed internalformat for glTexImage2D glInternalFormat = 33189; } - if ( texture.format === DepthFormat && glInternalFormat === 6402 ) { + if (texture.format === DepthFormat && glInternalFormat === 6402) { // The error INVALID_OPERATION is generated by texImage2D if format and internalformat are // DEPTH_COMPONENT and type is not UNSIGNED_SHORT or UNSIGNED_INT // (https://www.khronos.org/registry/webgl/extensions/WEBGL_depth_texture/) - if ( texture.type !== UnsignedShortType && texture.type !== UnsignedIntType ) { + if (texture.type !== UnsignedShortType && texture.type !== UnsignedIntType) { - console.warn( 'THREE.WebGLRenderer: Use UnsignedShortType or UnsignedIntType for DepthFormat DepthTexture.' ); + console.warn('THREE.WebGLRenderer: Use UnsignedShortType or UnsignedIntType for DepthFormat DepthTexture.'); texture.type = UnsignedShortType; - glType = utils.convert( texture.type ); + glType = utils.convert(texture.type); } @@ -20391,38 +20404,38 @@ // Depth stencil textures need the DEPTH_STENCIL internal format // (https://www.khronos.org/registry/webgl/extensions/WEBGL_depth_texture/) - if ( texture.format === DepthStencilFormat ) { + if (texture.format === DepthStencilFormat) { glInternalFormat = 34041; // The error INVALID_OPERATION is generated by texImage2D if format and internalformat are // DEPTH_STENCIL and type is not UNSIGNED_INT_24_8_WEBGL. // (https://www.khronos.org/registry/webgl/extensions/WEBGL_depth_texture/) - if ( texture.type !== UnsignedInt248Type ) { + if (texture.type !== UnsignedInt248Type) { - console.warn( 'THREE.WebGLRenderer: Use UnsignedInt248Type for DepthStencilFormat DepthTexture.' ); + console.warn('THREE.WebGLRenderer: Use UnsignedInt248Type for DepthStencilFormat DepthTexture.'); texture.type = UnsignedInt248Type; - glType = utils.convert( texture.type ); + glType = utils.convert(texture.type); } } - state.texImage2D( 3553, 0, glInternalFormat, image.width, image.height, 0, glFormat, glType, null ); + state.texImage2D(3553, 0, glInternalFormat, image.width, image.height, 0, glFormat, glType, null); - } else if ( texture.isDataTexture ) { + } else if (texture.isDataTexture) { // use manually created mipmaps if available // if there are no manual mipmaps // set 0 level mipmap and then use GL to generate other mipmap levels - if ( mipmaps.length > 0 && isPowerOfTwoImage ) { + if (mipmaps.length > 0 && isPowerOfTwoImage) { - for ( var i = 0, il = mipmaps.length; i < il; i ++ ) { + for (var i = 0, il = mipmaps.length; i < il; i++) { - mipmap = mipmaps[ i ]; - state.texImage2D( 3553, i, glInternalFormat, mipmap.width, mipmap.height, 0, glFormat, glType, mipmap.data ); + mipmap = mipmaps[i]; + state.texImage2D(3553, i, glInternalFormat, mipmap.width, mipmap.height, 0, glFormat, glType, mipmap.data); } @@ -20431,32 +20444,32 @@ } else { - state.texImage2D( 3553, 0, glInternalFormat, image.width, image.height, 0, glFormat, glType, image.data ); + state.texImage2D(3553, 0, glInternalFormat, image.width, image.height, 0, glFormat, glType, image.data); textureProperties.__maxMipLevel = 0; } - } else if ( texture.isCompressedTexture ) { + } else if (texture.isCompressedTexture) { - for ( var i = 0, il = mipmaps.length; i < il; i ++ ) { + for (var i = 0, il = mipmaps.length; i < il; i++) { - mipmap = mipmaps[ i ]; + mipmap = mipmaps[i]; - if ( texture.format !== RGBAFormat && texture.format !== RGBFormat ) { + if (texture.format !== RGBAFormat && texture.format !== RGBFormat) { - if ( state.getCompressedTextureFormats().indexOf( glFormat ) > - 1 ) { + if (state.getCompressedTextureFormats().indexOf(glFormat) > - 1) { - state.compressedTexImage2D( 3553, i, glInternalFormat, mipmap.width, mipmap.height, 0, mipmap.data ); + state.compressedTexImage2D(3553, i, glInternalFormat, mipmap.width, mipmap.height, 0, mipmap.data); } else { - console.warn( 'THREE.WebGLRenderer: Attempt to load unsupported compressed texture format in .uploadTexture()' ); + console.warn('THREE.WebGLRenderer: Attempt to load unsupported compressed texture format in .uploadTexture()'); } } else { - state.texImage2D( 3553, i, glInternalFormat, mipmap.width, mipmap.height, 0, glFormat, glType, mipmap.data ); + state.texImage2D(3553, i, glInternalFormat, mipmap.width, mipmap.height, 0, glFormat, glType, mipmap.data); } @@ -20464,9 +20477,9 @@ textureProperties.__maxMipLevel = mipmaps.length - 1; - } else if ( texture.isDataTexture3D ) { + } else if (texture.isDataTexture3D) { - state.texImage3D( 32879, 0, glInternalFormat, image.width, image.height, image.depth, 0, glFormat, glType, image.data ); + state.texImage3D(32879, 0, glInternalFormat, image.width, image.height, image.depth, 0, glFormat, glType, image.data); textureProperties.__maxMipLevel = 0; } else { @@ -20477,12 +20490,12 @@ // if there are no manual mipmaps // set 0 level mipmap and then use GL to generate other mipmap levels - if ( mipmaps.length > 0 && isPowerOfTwoImage ) { + if (mipmaps.length > 0 && isPowerOfTwoImage) { - for ( var i = 0, il = mipmaps.length; i < il; i ++ ) { + for (var i = 0, il = mipmaps.length; i < il; i++) { - mipmap = mipmaps[ i ]; - state.texImage2D( 3553, i, glInternalFormat, glFormat, glType, mipmap ); + mipmap = mipmaps[i]; + state.texImage2D(3553, i, glInternalFormat, glFormat, glType, mipmap); } @@ -20491,84 +20504,84 @@ } else { - state.texImage2D( 3553, 0, glInternalFormat, glFormat, glType, image ); + state.texImage2D(3553, 0, glInternalFormat, glFormat, glType, image); textureProperties.__maxMipLevel = 0; } } - if ( textureNeedsGenerateMipmaps( texture, isPowerOfTwoImage ) ) { + if (textureNeedsGenerateMipmaps(texture, isPowerOfTwoImage)) { - generateMipmap( 3553, texture, image.width, image.height ); + generateMipmap(3553, texture, image.width, image.height); } textureProperties.__version = texture.version; - if ( texture.onUpdate ) texture.onUpdate( texture ); + if (texture.onUpdate) texture.onUpdate(texture); } // Render targets // Setup storage for target texture and bind it to correct framebuffer - function setupFrameBufferTexture( framebuffer, renderTarget, attachment, textureTarget ) { + function setupFrameBufferTexture(framebuffer, renderTarget, attachment, textureTarget) { - var glFormat = utils.convert( renderTarget.texture.format ); - var glType = utils.convert( renderTarget.texture.type ); - var glInternalFormat = getInternalFormat( glFormat, glType ); - state.texImage2D( textureTarget, 0, glInternalFormat, renderTarget.width, renderTarget.height, 0, glFormat, glType, null ); - _gl.bindFramebuffer( 36160, framebuffer ); - _gl.framebufferTexture2D( 36160, attachment, textureTarget, properties.get( renderTarget.texture ).__webglTexture, 0 ); - _gl.bindFramebuffer( 36160, null ); + var glFormat = utils.convert(renderTarget.texture.format); + var glType = utils.convert(renderTarget.texture.type); + var glInternalFormat = getInternalFormat(glFormat, glType); + state.texImage2D(textureTarget, 0, glInternalFormat, renderTarget.width, renderTarget.height, 0, glFormat, glType, null); + _gl.bindFramebuffer(36160, framebuffer); + _gl.framebufferTexture2D(36160, attachment, textureTarget, properties.get(renderTarget.texture).__webglTexture, 0); + _gl.bindFramebuffer(36160, null); } // Setup storage for internal depth/stencil buffers and bind to correct framebuffer - function setupRenderBufferStorage( renderbuffer, renderTarget ) { + function setupRenderBufferStorage(renderbuffer, renderTarget) { - _gl.bindRenderbuffer( 36161, renderbuffer ); + _gl.bindRenderbuffer(36161, renderbuffer); - if ( renderTarget.depthBuffer && ! renderTarget.stencilBuffer ) { + if (renderTarget.depthBuffer && !renderTarget.stencilBuffer) { - _gl.renderbufferStorage( 36161, 33189, renderTarget.width, renderTarget.height ); - _gl.framebufferRenderbuffer( 36160, 36096, 36161, renderbuffer ); + _gl.renderbufferStorage(36161, 33189, renderTarget.width, renderTarget.height); + _gl.framebufferRenderbuffer(36160, 36096, 36161, renderbuffer); - } else if ( renderTarget.depthBuffer && renderTarget.stencilBuffer ) { + } else if (renderTarget.depthBuffer && renderTarget.stencilBuffer) { - _gl.renderbufferStorage( 36161, 34041, renderTarget.width, renderTarget.height ); - _gl.framebufferRenderbuffer( 36160, 33306, 36161, renderbuffer ); + _gl.renderbufferStorage(36161, 34041, renderTarget.width, renderTarget.height); + _gl.framebufferRenderbuffer(36160, 33306, 36161, renderbuffer); } else { // FIXME: We don't support !depth !stencil - _gl.renderbufferStorage( 36161, 32854, renderTarget.width, renderTarget.height ); + _gl.renderbufferStorage(36161, 32854, renderTarget.width, renderTarget.height); } - _gl.bindRenderbuffer( 36161, null ); + _gl.bindRenderbuffer(36161, null); } // Setup resources for a Depth Texture for a FBO (needs an extension) - function setupDepthTexture( framebuffer, renderTarget ) { + function setupDepthTexture(framebuffer, renderTarget) { - var isCube = ( renderTarget && renderTarget.isWebGLRenderTargetCube ); - if ( isCube ) throw new Error( 'Depth Texture with cube render targets is not supported' ); + var isCube = (renderTarget && renderTarget.isWebGLRenderTargetCube); + if (isCube) throw new Error('Depth Texture with cube render targets is not supported'); - _gl.bindFramebuffer( 36160, framebuffer ); + _gl.bindFramebuffer(36160, framebuffer); - if ( ! ( renderTarget.depthTexture && renderTarget.depthTexture.isDepthTexture ) ) { + if (!(renderTarget.depthTexture && renderTarget.depthTexture.isDepthTexture)) { - throw new Error( 'renderTarget.depthTexture must be an instance of THREE.DepthTexture' ); + throw new Error('renderTarget.depthTexture must be an instance of THREE.DepthTexture'); } // upload an empty depth texture with framebuffer size - if ( ! properties.get( renderTarget.depthTexture ).__webglTexture || - renderTarget.depthTexture.image.width !== renderTarget.width || - renderTarget.depthTexture.image.height !== renderTarget.height ) { + if (!properties.get(renderTarget.depthTexture).__webglTexture || + renderTarget.depthTexture.image.width !== renderTarget.width || + renderTarget.depthTexture.image.height !== renderTarget.height) { renderTarget.depthTexture.image.width = renderTarget.width; renderTarget.depthTexture.image.height = renderTarget.height; @@ -20576,91 +20589,91 @@ } - setTexture2D( renderTarget.depthTexture, 0 ); + setTexture2D(renderTarget.depthTexture, 0); - var webglDepthTexture = properties.get( renderTarget.depthTexture ).__webglTexture; + var webglDepthTexture = properties.get(renderTarget.depthTexture).__webglTexture; - if ( renderTarget.depthTexture.format === DepthFormat ) { + if (renderTarget.depthTexture.format === DepthFormat) { - _gl.framebufferTexture2D( 36160, 36096, 3553, webglDepthTexture, 0 ); + _gl.framebufferTexture2D(36160, 36096, 3553, webglDepthTexture, 0); - } else if ( renderTarget.depthTexture.format === DepthStencilFormat ) { + } else if (renderTarget.depthTexture.format === DepthStencilFormat) { - _gl.framebufferTexture2D( 36160, 33306, 3553, webglDepthTexture, 0 ); + _gl.framebufferTexture2D(36160, 33306, 3553, webglDepthTexture, 0); } else { - throw new Error( 'Unknown depthTexture format' ); + throw new Error('Unknown depthTexture format'); } } // Setup GL resources for a non-texture depth buffer - function setupDepthRenderbuffer( renderTarget ) { + function setupDepthRenderbuffer(renderTarget) { - var renderTargetProperties = properties.get( renderTarget ); + var renderTargetProperties = properties.get(renderTarget); - var isCube = ( renderTarget.isWebGLRenderTargetCube === true ); + var isCube = (renderTarget.isWebGLRenderTargetCube === true); - if ( renderTarget.depthTexture ) { + if (renderTarget.depthTexture) { - if ( isCube ) throw new Error( 'target.depthTexture not supported in Cube render targets' ); + if (isCube) throw new Error('target.depthTexture not supported in Cube render targets'); - setupDepthTexture( renderTargetProperties.__webglFramebuffer, renderTarget ); + setupDepthTexture(renderTargetProperties.__webglFramebuffer, renderTarget); } else { - if ( isCube ) { + if (isCube) { renderTargetProperties.__webglDepthbuffer = []; - for ( var i = 0; i < 6; i ++ ) { + for (var i = 0; i < 6; i++) { - _gl.bindFramebuffer( 36160, renderTargetProperties.__webglFramebuffer[ i ] ); - renderTargetProperties.__webglDepthbuffer[ i ] = _gl.createRenderbuffer(); - setupRenderBufferStorage( renderTargetProperties.__webglDepthbuffer[ i ], renderTarget ); + _gl.bindFramebuffer(36160, renderTargetProperties.__webglFramebuffer[i]); + renderTargetProperties.__webglDepthbuffer[i] = _gl.createRenderbuffer(); + setupRenderBufferStorage(renderTargetProperties.__webglDepthbuffer[i], renderTarget); } } else { - _gl.bindFramebuffer( 36160, renderTargetProperties.__webglFramebuffer ); + _gl.bindFramebuffer(36160, renderTargetProperties.__webglFramebuffer); renderTargetProperties.__webglDepthbuffer = _gl.createRenderbuffer(); - setupRenderBufferStorage( renderTargetProperties.__webglDepthbuffer, renderTarget ); + setupRenderBufferStorage(renderTargetProperties.__webglDepthbuffer, renderTarget); } } - _gl.bindFramebuffer( 36160, null ); + _gl.bindFramebuffer(36160, null); } // Set up GL resources for the render target - function setupRenderTarget( renderTarget ) { + function setupRenderTarget(renderTarget) { - var renderTargetProperties = properties.get( renderTarget ); - var textureProperties = properties.get( renderTarget.texture ); + var renderTargetProperties = properties.get(renderTarget); + var textureProperties = properties.get(renderTarget.texture); - renderTarget.addEventListener( 'dispose', onRenderTargetDispose ); + renderTarget.addEventListener('dispose', onRenderTargetDispose); textureProperties.__webglTexture = _gl.createTexture(); - info.memory.textures ++; + info.memory.textures++; - var isCube = ( renderTarget.isWebGLRenderTargetCube === true ); - var isTargetPowerOfTwo = isPowerOfTwo( renderTarget ); + var isCube = (renderTarget.isWebGLRenderTargetCube === true); + var isTargetPowerOfTwo = isPowerOfTwo(renderTarget); // Setup framebuffer - if ( isCube ) { + if (isCube) { renderTargetProperties.__webglFramebuffer = []; - for ( var i = 0; i < 6; i ++ ) { + for (var i = 0; i < 6; i++) { - renderTargetProperties.__webglFramebuffer[ i ] = _gl.createFramebuffer(); + renderTargetProperties.__webglFramebuffer[i] = _gl.createFramebuffer(); } @@ -20672,79 +20685,79 @@ // Setup color buffer - if ( isCube ) { + if (isCube) { - state.bindTexture( 34067, textureProperties.__webglTexture ); - setTextureParameters( 34067, renderTarget.texture, isTargetPowerOfTwo ); + state.bindTexture(34067, textureProperties.__webglTexture); + setTextureParameters(34067, renderTarget.texture, isTargetPowerOfTwo); - for ( var i = 0; i < 6; i ++ ) { + for (var i = 0; i < 6; i++) { - setupFrameBufferTexture( renderTargetProperties.__webglFramebuffer[ i ], renderTarget, 36064, 34069 + i ); + setupFrameBufferTexture(renderTargetProperties.__webglFramebuffer[i], renderTarget, 36064, 34069 + i); } - if ( textureNeedsGenerateMipmaps( renderTarget.texture, isTargetPowerOfTwo ) ) { + if (textureNeedsGenerateMipmaps(renderTarget.texture, isTargetPowerOfTwo)) { - generateMipmap( 34067, renderTarget.texture, renderTarget.width, renderTarget.height ); + generateMipmap(34067, renderTarget.texture, renderTarget.width, renderTarget.height); } - state.bindTexture( 34067, null ); + state.bindTexture(34067, null); } else { - state.bindTexture( 3553, textureProperties.__webglTexture ); - setTextureParameters( 3553, renderTarget.texture, isTargetPowerOfTwo ); - setupFrameBufferTexture( renderTargetProperties.__webglFramebuffer, renderTarget, 36064, 3553 ); + state.bindTexture(3553, textureProperties.__webglTexture); + setTextureParameters(3553, renderTarget.texture, isTargetPowerOfTwo); + setupFrameBufferTexture(renderTargetProperties.__webglFramebuffer, renderTarget, 36064, 3553); - if ( textureNeedsGenerateMipmaps( renderTarget.texture, isTargetPowerOfTwo ) ) { + if (textureNeedsGenerateMipmaps(renderTarget.texture, isTargetPowerOfTwo)) { - generateMipmap( 3553, renderTarget.texture, renderTarget.width, renderTarget.height ); + generateMipmap(3553, renderTarget.texture, renderTarget.width, renderTarget.height); } - state.bindTexture( 3553, null ); + state.bindTexture(3553, null); } // Setup depth and stencil buffers - if ( renderTarget.depthBuffer ) { + if (renderTarget.depthBuffer) { - setupDepthRenderbuffer( renderTarget ); + setupDepthRenderbuffer(renderTarget); } } - function updateRenderTargetMipmap( renderTarget ) { + function updateRenderTargetMipmap(renderTarget) { var texture = renderTarget.texture; - var isTargetPowerOfTwo = isPowerOfTwo( renderTarget ); + var isTargetPowerOfTwo = isPowerOfTwo(renderTarget); - if ( textureNeedsGenerateMipmaps( texture, isTargetPowerOfTwo ) ) { + if (textureNeedsGenerateMipmaps(texture, isTargetPowerOfTwo)) { var target = renderTarget.isWebGLRenderTargetCube ? 34067 : 3553; - var webglTexture = properties.get( texture ).__webglTexture; + var webglTexture = properties.get(texture).__webglTexture; - state.bindTexture( target, webglTexture ); - generateMipmap( target, texture, renderTarget.width, renderTarget.height ); - state.bindTexture( target, null ); + state.bindTexture(target, webglTexture); + generateMipmap(target, texture, renderTarget.width, renderTarget.height); + state.bindTexture(target, null); } } - function updateVideoTexture( texture ) { + function updateVideoTexture(texture) { var id = texture.id; var frame = info.render.frame; // Check the last frame we updated the VideoTexture - if ( _videoTextures[ id ] !== frame ) { + if (_videoTextures[id] !== frame) { - _videoTextures[ id ] = frame; + _videoTextures[id] = frame; texture.update(); } @@ -20764,121 +20777,121 @@ * @author thespite / http://www.twitter.com/thespite */ - function WebGLUtils( gl, extensions, capabilities ) { + function WebGLUtils(gl, extensions, capabilities) { - function convert( p ) { + function convert(p) { var extension; - if ( p === RepeatWrapping ) return 10497; - if ( p === ClampToEdgeWrapping ) return 33071; - if ( p === MirroredRepeatWrapping ) return 33648; + if (p === RepeatWrapping) return 10497; + if (p === ClampToEdgeWrapping) return 33071; + if (p === MirroredRepeatWrapping) return 33648; - if ( p === NearestFilter ) return 9728; - if ( p === NearestMipMapNearestFilter ) return 9984; - if ( p === NearestMipMapLinearFilter ) return 9986; + if (p === NearestFilter) return 9728; + if (p === NearestMipMapNearestFilter) return 9984; + if (p === NearestMipMapLinearFilter) return 9986; - if ( p === LinearFilter ) return 9729; - if ( p === LinearMipMapNearestFilter ) return 9985; - if ( p === LinearMipMapLinearFilter ) return 9987; + if (p === LinearFilter) return 9729; + if (p === LinearMipMapNearestFilter) return 9985; + if (p === LinearMipMapLinearFilter) return 9987; - if ( p === UnsignedByteType ) return 5121; - if ( p === UnsignedShort4444Type ) return 32819; - if ( p === UnsignedShort5551Type ) return 32820; - if ( p === UnsignedShort565Type ) return 33635; + if (p === UnsignedByteType) return 5121; + if (p === UnsignedShort4444Type) return 32819; + if (p === UnsignedShort5551Type) return 32820; + if (p === UnsignedShort565Type) return 33635; - if ( p === ByteType ) return 5120; - if ( p === ShortType ) return 5122; - if ( p === UnsignedShortType ) return 5123; - if ( p === IntType ) return 5124; - if ( p === UnsignedIntType ) return 5125; - if ( p === FloatType ) return 5126; + if (p === ByteType) return 5120; + if (p === ShortType) return 5122; + if (p === UnsignedShortType) return 5123; + if (p === IntType) return 5124; + if (p === UnsignedIntType) return 5125; + if (p === FloatType) return 5126; - if ( p === HalfFloatType ) { + if (p === HalfFloatType) { - if ( capabilities.isWebGL2 ) return 5131; + if (capabilities.isWebGL2) return 5131; - extension = extensions.get( 'OES_texture_half_float' ); + extension = extensions.get('OES_texture_half_float'); - if ( extension !== null ) return extension.HALF_FLOAT_OES; + if (extension !== null) return extension.HALF_FLOAT_OES; } - if ( p === AlphaFormat ) return 6406; - if ( p === RGBFormat ) return 6407; - if ( p === RGBAFormat ) return 6408; - if ( p === LuminanceFormat ) return 6409; - if ( p === LuminanceAlphaFormat ) return 6410; - if ( p === DepthFormat ) return 6402; - if ( p === DepthStencilFormat ) return 34041; - if ( p === RedFormat ) return 6403; + if (p === AlphaFormat) return 6406; + if (p === RGBFormat) return 6407; + if (p === RGBAFormat) return 6408; + if (p === LuminanceFormat) return 6409; + if (p === LuminanceAlphaFormat) return 6410; + if (p === DepthFormat) return 6402; + if (p === DepthStencilFormat) return 34041; + if (p === RedFormat) return 6403; - if ( p === AddEquation ) return 32774; - if ( p === SubtractEquation ) return 32778; - if ( p === ReverseSubtractEquation ) return 32779; + if (p === AddEquation) return 32774; + if (p === SubtractEquation) return 32778; + if (p === ReverseSubtractEquation) return 32779; - if ( p === ZeroFactor ) return 0; - if ( p === OneFactor ) return 1; - if ( p === SrcColorFactor ) return 768; - if ( p === OneMinusSrcColorFactor ) return 769; - if ( p === SrcAlphaFactor ) return 770; - if ( p === OneMinusSrcAlphaFactor ) return 771; - if ( p === DstAlphaFactor ) return 772; - if ( p === OneMinusDstAlphaFactor ) return 773; + if (p === ZeroFactor) return 0; + if (p === OneFactor) return 1; + if (p === SrcColorFactor) return 768; + if (p === OneMinusSrcColorFactor) return 769; + if (p === SrcAlphaFactor) return 770; + if (p === OneMinusSrcAlphaFactor) return 771; + if (p === DstAlphaFactor) return 772; + if (p === OneMinusDstAlphaFactor) return 773; - if ( p === DstColorFactor ) return 774; - if ( p === OneMinusDstColorFactor ) return 775; - if ( p === SrcAlphaSaturateFactor ) return 776; + if (p === DstColorFactor) return 774; + if (p === OneMinusDstColorFactor) return 775; + if (p === SrcAlphaSaturateFactor) return 776; - if ( p === RGB_S3TC_DXT1_Format || p === RGBA_S3TC_DXT1_Format || - p === RGBA_S3TC_DXT3_Format || p === RGBA_S3TC_DXT5_Format ) { + if (p === RGB_S3TC_DXT1_Format || p === RGBA_S3TC_DXT1_Format || + p === RGBA_S3TC_DXT3_Format || p === RGBA_S3TC_DXT5_Format) { - extension = extensions.get( 'WEBGL_compressed_texture_s3tc' ); + extension = extensions.get('WEBGL_compressed_texture_s3tc'); - if ( extension !== null ) { + if (extension !== null) { - if ( p === RGB_S3TC_DXT1_Format ) return extension.COMPRESSED_RGB_S3TC_DXT1_EXT; - if ( p === RGBA_S3TC_DXT1_Format ) return extension.COMPRESSED_RGBA_S3TC_DXT1_EXT; - if ( p === RGBA_S3TC_DXT3_Format ) return extension.COMPRESSED_RGBA_S3TC_DXT3_EXT; - if ( p === RGBA_S3TC_DXT5_Format ) return extension.COMPRESSED_RGBA_S3TC_DXT5_EXT; + if (p === RGB_S3TC_DXT1_Format) return extension.COMPRESSED_RGB_S3TC_DXT1_EXT; + if (p === RGBA_S3TC_DXT1_Format) return extension.COMPRESSED_RGBA_S3TC_DXT1_EXT; + if (p === RGBA_S3TC_DXT3_Format) return extension.COMPRESSED_RGBA_S3TC_DXT3_EXT; + if (p === RGBA_S3TC_DXT5_Format) return extension.COMPRESSED_RGBA_S3TC_DXT5_EXT; } } - if ( p === RGB_PVRTC_4BPPV1_Format || p === RGB_PVRTC_2BPPV1_Format || - p === RGBA_PVRTC_4BPPV1_Format || p === RGBA_PVRTC_2BPPV1_Format ) { + if (p === RGB_PVRTC_4BPPV1_Format || p === RGB_PVRTC_2BPPV1_Format || + p === RGBA_PVRTC_4BPPV1_Format || p === RGBA_PVRTC_2BPPV1_Format) { - extension = extensions.get( 'WEBGL_compressed_texture_pvrtc' ); + extension = extensions.get('WEBGL_compressed_texture_pvrtc'); - if ( extension !== null ) { + if (extension !== null) { - if ( p === RGB_PVRTC_4BPPV1_Format ) return extension.COMPRESSED_RGB_PVRTC_4BPPV1_IMG; - if ( p === RGB_PVRTC_2BPPV1_Format ) return extension.COMPRESSED_RGB_PVRTC_2BPPV1_IMG; - if ( p === RGBA_PVRTC_4BPPV1_Format ) return extension.COMPRESSED_RGBA_PVRTC_4BPPV1_IMG; - if ( p === RGBA_PVRTC_2BPPV1_Format ) return extension.COMPRESSED_RGBA_PVRTC_2BPPV1_IMG; + if (p === RGB_PVRTC_4BPPV1_Format) return extension.COMPRESSED_RGB_PVRTC_4BPPV1_IMG; + if (p === RGB_PVRTC_2BPPV1_Format) return extension.COMPRESSED_RGB_PVRTC_2BPPV1_IMG; + if (p === RGBA_PVRTC_4BPPV1_Format) return extension.COMPRESSED_RGBA_PVRTC_4BPPV1_IMG; + if (p === RGBA_PVRTC_2BPPV1_Format) return extension.COMPRESSED_RGBA_PVRTC_2BPPV1_IMG; } } - if ( p === RGB_ETC1_Format ) { + if (p === RGB_ETC1_Format) { - extension = extensions.get( 'WEBGL_compressed_texture_etc1' ); + extension = extensions.get('WEBGL_compressed_texture_etc1'); - if ( extension !== null ) return extension.COMPRESSED_RGB_ETC1_WEBGL; + if (extension !== null) return extension.COMPRESSED_RGB_ETC1_WEBGL; } - if ( p === RGBA_ASTC_4x4_Format || p === RGBA_ASTC_5x4_Format || p === RGBA_ASTC_5x5_Format || + if (p === RGBA_ASTC_4x4_Format || p === RGBA_ASTC_5x4_Format || p === RGBA_ASTC_5x5_Format || p === RGBA_ASTC_6x5_Format || p === RGBA_ASTC_6x6_Format || p === RGBA_ASTC_8x5_Format || p === RGBA_ASTC_8x6_Format || p === RGBA_ASTC_8x8_Format || p === RGBA_ASTC_10x5_Format || p === RGBA_ASTC_10x6_Format || p === RGBA_ASTC_10x8_Format || p === RGBA_ASTC_10x10_Format || - p === RGBA_ASTC_12x10_Format || p === RGBA_ASTC_12x12_Format ) { + p === RGBA_ASTC_12x10_Format || p === RGBA_ASTC_12x12_Format) { - extension = extensions.get( 'WEBGL_compressed_texture_astc' ); + extension = extensions.get('WEBGL_compressed_texture_astc'); - if ( extension !== null ) { + if (extension !== null) { return p; @@ -20886,33 +20899,33 @@ } - if ( p === MinEquation || p === MaxEquation ) { + if (p === MinEquation || p === MaxEquation) { - if ( capabilities.isWebGL2 ) { + if (capabilities.isWebGL2) { - if ( p === MinEquation ) return 32775; - if ( p === MaxEquation ) return 32776; + if (p === MinEquation) return 32775; + if (p === MaxEquation) return 32776; } - extension = extensions.get( 'EXT_blend_minmax' ); + extension = extensions.get('EXT_blend_minmax'); - if ( extension !== null ) { + if (extension !== null) { - if ( p === MinEquation ) return extension.MIN_EXT; - if ( p === MaxEquation ) return extension.MAX_EXT; + if (p === MinEquation) return extension.MIN_EXT; + if (p === MaxEquation) return extension.MAX_EXT; } } - if ( p === UnsignedInt248Type ) { + if (p === UnsignedInt248Type) { - if ( capabilities.isWebGL2 ) return 34042; + if (capabilities.isWebGL2) return 34042; - extension = extensions.get( 'WEBGL_depth_texture' ); + extension = extensions.get('WEBGL_depth_texture'); - if ( extension !== null ) return extension.UNSIGNED_INT_24_8_WEBGL; + if (extension !== null) return extension.UNSIGNED_INT_24_8_WEBGL; } @@ -20930,19 +20943,19 @@ function Group() { - Object3D.call( this ); + Object3D.call(this); this.type = 'Group'; } - Group.prototype = Object.assign( Object.create( Object3D.prototype ), { + Group.prototype = Object.assign(Object.create(Object3D.prototype), { constructor: Group, isGroup: true - } ); + }); /** * @author mrdoob / http://mrdoob.com/ @@ -20952,7 +20965,7 @@ function Camera() { - Object3D.call( this ); + Object3D.call(this); this.type = 'Camera'; @@ -20963,57 +20976,57 @@ } - Camera.prototype = Object.assign( Object.create( Object3D.prototype ), { + Camera.prototype = Object.assign(Object.create(Object3D.prototype), { constructor: Camera, isCamera: true, - copy: function ( source, recursive ) { + copy: function (source, recursive) { - Object3D.prototype.copy.call( this, source, recursive ); + Object3D.prototype.copy.call(this, source, recursive); - this.matrixWorldInverse.copy( source.matrixWorldInverse ); + this.matrixWorldInverse.copy(source.matrixWorldInverse); - this.projectionMatrix.copy( source.projectionMatrix ); - this.projectionMatrixInverse.copy( source.projectionMatrixInverse ); + this.projectionMatrix.copy(source.projectionMatrix); + this.projectionMatrixInverse.copy(source.projectionMatrixInverse); return this; }, - getWorldDirection: function ( target ) { + getWorldDirection: function (target) { - if ( target === undefined ) { + if (target === undefined) { - console.warn( 'THREE.Camera: .getWorldDirection() target is now required' ); + console.warn('THREE.Camera: .getWorldDirection() target is now required'); target = new Vector3(); } - this.updateMatrixWorld( true ); + this.updateMatrixWorld(true); var e = this.matrixWorld.elements; - return target.set( - e[ 8 ], - e[ 9 ], - e[ 10 ] ).normalize(); + return target.set(- e[8], - e[9], - e[10]).normalize(); }, - updateMatrixWorld: function ( force ) { + updateMatrixWorld: function (force) { - Object3D.prototype.updateMatrixWorld.call( this, force ); + Object3D.prototype.updateMatrixWorld.call(this, force); - this.matrixWorldInverse.getInverse( this.matrixWorld ); + this.matrixWorldInverse.getInverse(this.matrixWorld); }, clone: function () { - return new this.constructor().copy( this ); + return new this.constructor().copy(this); } - } ); + }); /** * @author mrdoob / http://mrdoob.com/ @@ -21022,9 +21035,9 @@ * @author tschw */ - function PerspectiveCamera( fov, aspect, near, far ) { + function PerspectiveCamera(fov, aspect, near, far) { - Camera.call( this ); + Camera.call(this); this.type = 'PerspectiveCamera'; @@ -21045,15 +21058,15 @@ } - PerspectiveCamera.prototype = Object.assign( Object.create( Camera.prototype ), { + PerspectiveCamera.prototype = Object.assign(Object.create(Camera.prototype), { constructor: PerspectiveCamera, isPerspectiveCamera: true, - copy: function ( source, recursive ) { + copy: function (source, recursive) { - Camera.prototype.copy.call( this, source, recursive ); + Camera.prototype.copy.call(this, source, recursive); this.fov = source.fov; this.zoom = source.zoom; @@ -21063,7 +21076,7 @@ this.focus = source.focus; this.aspect = source.aspect; - this.view = source.view === null ? null : Object.assign( {}, source.view ); + this.view = source.view === null ? null : Object.assign({}, source.view); this.filmGauge = source.filmGauge; this.filmOffset = source.filmOffset; @@ -21080,12 +21093,12 @@ * * Values for focal length and film gauge must have the same unit. */ - setFocalLength: function ( focalLength ) { + setFocalLength: function (focalLength) { // see http://www.bobatkins.com/photography/technical/field_of_view.html var vExtentSlope = 0.5 * this.getFilmHeight() / focalLength; - this.fov = _Math.RAD2DEG * 2 * Math.atan( vExtentSlope ); + this.fov = _Math.RAD2DEG * 2 * Math.atan(vExtentSlope); this.updateProjectionMatrix(); }, @@ -21095,7 +21108,7 @@ */ getFocalLength: function () { - var vExtentSlope = Math.tan( _Math.DEG2RAD * 0.5 * this.fov ); + var vExtentSlope = Math.tan(_Math.DEG2RAD * 0.5 * this.fov); return 0.5 * this.getFilmHeight() / vExtentSlope; @@ -21104,21 +21117,21 @@ getEffectiveFOV: function () { return _Math.RAD2DEG * 2 * Math.atan( - Math.tan( _Math.DEG2RAD * 0.5 * this.fov ) / this.zoom ); + Math.tan(_Math.DEG2RAD * 0.5 * this.fov) / this.zoom); }, getFilmWidth: function () { // film not completely covered in portrait format (aspect < 1) - return this.filmGauge * Math.min( this.aspect, 1 ); + return this.filmGauge * Math.min(this.aspect, 1); }, getFilmHeight: function () { // film not completely covered in landscape format (aspect > 1) - return this.filmGauge / Math.max( this.aspect, 1 ); + return this.filmGauge / Math.max(this.aspect, 1); }, @@ -21157,11 +21170,11 @@ * * Note there is no reason monitors have to be the same size or in a grid. */ - setViewOffset: function ( fullWidth, fullHeight, x, y, width, height ) { + setViewOffset: function (fullWidth, fullHeight, x, y, width, height) { this.aspect = fullWidth / fullHeight; - if ( this.view === null ) { + if (this.view === null) { this.view = { enabled: true, @@ -21189,7 +21202,7 @@ clearViewOffset: function () { - if ( this.view !== null ) { + if (this.view !== null) { this.view.enabled = false; @@ -21202,13 +21215,13 @@ updateProjectionMatrix: function () { var near = this.near, - top = near * Math.tan( _Math.DEG2RAD * 0.5 * this.fov ) / this.zoom, + top = near * Math.tan(_Math.DEG2RAD * 0.5 * this.fov) / this.zoom, height = 2 * top, width = this.aspect * height, left = - 0.5 * width, view = this.view; - if ( this.view !== null && this.view.enabled ) { + if (this.view !== null && this.view.enabled) { var fullWidth = view.fullWidth, fullHeight = view.fullHeight; @@ -21221,17 +21234,17 @@ } var skew = this.filmOffset; - if ( skew !== 0 ) left += near * skew / this.getFilmWidth(); + if (skew !== 0) left += near * skew / this.getFilmWidth(); - this.projectionMatrix.makePerspective( left, left + width, top, top - height, near, this.far ); + this.projectionMatrix.makePerspective(left, left + width, top, top - height, near, this.far); - this.projectionMatrixInverse.getInverse( this.projectionMatrix ); + this.projectionMatrixInverse.getInverse(this.projectionMatrix); }, - toJSON: function ( meta ) { + toJSON: function (meta) { - var data = Object3D.prototype.toJSON.call( this, meta ); + var data = Object3D.prototype.toJSON.call(this, meta); data.object.fov = this.fov; data.object.zoom = this.zoom; @@ -21242,7 +21255,7 @@ data.object.aspect = this.aspect; - if ( this.view !== null ) data.object.view = Object.assign( {}, this.view ); + if (this.view !== null) data.object.view = Object.assign({}, this.view); data.object.filmGauge = this.filmGauge; data.object.filmOffset = this.filmOffset; @@ -21251,27 +21264,27 @@ } - } ); + }); /** * @author mrdoob / http://mrdoob.com/ */ - function ArrayCamera( array ) { + function ArrayCamera(array) { - PerspectiveCamera.call( this ); + PerspectiveCamera.call(this); this.cameras = array || []; } - ArrayCamera.prototype = Object.assign( Object.create( PerspectiveCamera.prototype ), { + ArrayCamera.prototype = Object.assign(Object.create(PerspectiveCamera.prototype), { constructor: ArrayCamera, isArrayCamera: true - } ); + }); /** * @author jsantell / https://www.jsantell.com/ @@ -21287,12 +21300,12 @@ * And that near and far planes are identical for both cameras. * Visualization of this technique: https://computergraphics.stackexchange.com/a/4765 */ - function setProjectionFromUnion( camera, cameraL, cameraR ) { + function setProjectionFromUnion(camera, cameraL, cameraR) { - cameraLPos.setFromMatrixPosition( cameraL.matrixWorld ); - cameraRPos.setFromMatrixPosition( cameraR.matrixWorld ); + cameraLPos.setFromMatrixPosition(cameraL.matrixWorld); + cameraRPos.setFromMatrixPosition(cameraR.matrixWorld); - var ipd = cameraLPos.distanceTo( cameraRPos ); + var ipd = cameraLPos.distanceTo(cameraRPos); var projL = cameraL.projectionMatrix.elements; var projR = cameraR.projectionMatrix.elements; @@ -21300,27 +21313,27 @@ // VR systems will have identical far and near planes, and // most likely identical top and bottom frustum extents. // Use the left camera for these values. - var near = projL[ 14 ] / ( projL[ 10 ] - 1 ); - var far = projL[ 14 ] / ( projL[ 10 ] + 1 ); - var topFov = ( projL[ 9 ] + 1 ) / projL[ 5 ]; - var bottomFov = ( projL[ 9 ] - 1 ) / projL[ 5 ]; + var near = projL[14] / (projL[10] - 1); + var far = projL[14] / (projL[10] + 1); + var topFov = (projL[9] + 1) / projL[5]; + var bottomFov = (projL[9] - 1) / projL[5]; - var leftFov = ( projL[ 8 ] - 1 ) / projL[ 0 ]; - var rightFov = ( projR[ 8 ] + 1 ) / projR[ 0 ]; + var leftFov = (projL[8] - 1) / projL[0]; + var rightFov = (projR[8] + 1) / projR[0]; var left = near * leftFov; var right = near * rightFov; // Calculate the new camera's position offset from the // left camera. xOffset should be roughly half `ipd`. - var zOffset = ipd / ( - leftFov + rightFov ); + var zOffset = ipd / (- leftFov + rightFov); var xOffset = zOffset * - leftFov; // TODO: Better way to apply this offset? - cameraL.matrixWorld.decompose( camera.position, camera.quaternion, camera.scale ); - camera.translateX( xOffset ); - camera.translateZ( zOffset ); - camera.matrixWorld.compose( camera.position, camera.quaternion, camera.scale ); - camera.matrixWorldInverse.getInverse( camera.matrixWorld ); + cameraL.matrixWorld.decompose(camera.position, camera.quaternion, camera.scale); + camera.translateX(xOffset); + camera.translateZ(zOffset); + camera.matrixWorld.compose(camera.position, camera.quaternion, camera.scale); + camera.matrixWorldInverse.getInverse(camera.matrixWorld); // Find the union of the frustum values of the cameras and scale // the values so that the near plane's position does not change in world space, @@ -21328,11 +21341,11 @@ var near2 = near + zOffset; var far2 = far + zOffset; var left2 = left - xOffset; - var right2 = right + ( ipd - xOffset ); + var right2 = right + (ipd - xOffset); var top2 = topFov * far / far2 * near2; var bottom2 = bottomFov * far / far2 * near2; - camera.projectionMatrix.makePerspective( left2, right2, top2, bottom2, near2, far2 ); + camera.projectionMatrix.makePerspective(left2, right2, top2, bottom2, near2, far2); } @@ -21340,7 +21353,7 @@ * @author mrdoob / http://mrdoob.com/ */ - function WebVRManager( renderer ) { + function WebVRManager(renderer) { var scope = this; @@ -21357,10 +21370,10 @@ var frameOfReferenceType = 'stage'; - if ( typeof window !== 'undefined' && 'VRFrameData' in window ) { + if (typeof window !== 'undefined' && 'VRFrameData' in window) { frameData = new window.VRFrameData(); - window.addEventListener( 'vrdisplaypresentchange', onVRDisplayPresentChange, false ); + window.addEventListener('vrdisplaypresentchange', onVRDisplayPresentChange, false); } @@ -21369,16 +21382,16 @@ var tempPosition = new Vector3(); var cameraL = new PerspectiveCamera(); - cameraL.bounds = new Vector4( 0.0, 0.0, 0.5, 1.0 ); - cameraL.layers.enable( 1 ); + cameraL.bounds = new Vector4(0.0, 0.0, 0.5, 1.0); + cameraL.layers.enable(1); var cameraR = new PerspectiveCamera(); - cameraR.bounds = new Vector4( 0.5, 0.0, 0.5, 1.0 ); - cameraR.layers.enable( 2 ); + cameraR.bounds = new Vector4(0.5, 0.0, 0.5, 1.0); + cameraR.layers.enable(2); - var cameraVR = new ArrayCamera( [ cameraL, cameraR ] ); - cameraVR.layers.enable( 1 ); - cameraVR.layers.enable( 2 ); + var cameraVR = new ArrayCamera([cameraL, cameraR]); + cameraVR.layers.enable(1); + cameraVR.layers.enable(2); // @@ -21392,24 +21405,24 @@ function onVRDisplayPresentChange() { - if ( isPresenting() ) { + if (isPresenting()) { - var eyeParameters = device.getEyeParameters( 'left' ); + var eyeParameters = device.getEyeParameters('left'); var renderWidth = eyeParameters.renderWidth * framebufferScaleFactor; var renderHeight = eyeParameters.renderHeight * framebufferScaleFactor; currentPixelRatio = renderer.getPixelRatio(); currentSize = renderer.getSize(); - renderer.setDrawingBufferSize( renderWidth * 2, renderHeight, 1 ); + renderer.setDrawingBufferSize(renderWidth * 2, renderHeight, 1); animation.start(); } else { - if ( scope.enabled ) { + if (scope.enabled) { - renderer.setDrawingBufferSize( currentSize.width, currentSize.height, currentPixelRatio ); + renderer.setDrawingBufferSize(currentSize.width, currentSize.height, currentPixelRatio); } @@ -21423,22 +21436,22 @@ var triggers = []; - function findGamepad( id ) { + function findGamepad(id) { var gamepads = navigator.getGamepads && navigator.getGamepads(); - for ( var i = 0, j = 0, l = gamepads.length; i < l; i ++ ) { + for (var i = 0, j = 0, l = gamepads.length; i < l; i++) { - var gamepad = gamepads[ i ]; + var gamepad = gamepads[i]; - if ( gamepad && ( gamepad.id === 'Daydream Controller' || + if (gamepad && (gamepad.id === 'Daydream Controller' || gamepad.id === 'Gear VR Controller' || gamepad.id === 'Oculus Go Controller' || - gamepad.id === 'OpenVR Gamepad' || gamepad.id.startsWith( 'Oculus Touch' ) || - gamepad.id.startsWith( 'Spatial Controller' ) ) ) { + gamepad.id === 'OpenVR Gamepad' || gamepad.id.startsWith('Oculus Touch') || + gamepad.id.startsWith('Spatial Controller'))) { - if ( j === id ) return gamepad; + if (j === id) return gamepad; - j ++; + j++; } @@ -21448,27 +21461,27 @@ function updateControllers() { - for ( var i = 0; i < controllers.length; i ++ ) { + for (var i = 0; i < controllers.length; i++) { - var controller = controllers[ i ]; + var controller = controllers[i]; - var gamepad = findGamepad( i ); + var gamepad = findGamepad(i); - if ( gamepad !== undefined && gamepad.pose !== undefined ) { + if (gamepad !== undefined && gamepad.pose !== undefined) { - if ( gamepad.pose === null ) return; + if (gamepad.pose === null) return; // Pose var pose = gamepad.pose; - if ( pose.hasPosition === false ) controller.position.set( 0.2, - 0.6, - 0.05 ); + if (pose.hasPosition === false) controller.position.set(0.2, - 0.6, - 0.05); - if ( pose.position !== null ) controller.position.fromArray( pose.position ); - if ( pose.orientation !== null ) controller.quaternion.fromArray( pose.orientation ); - controller.matrix.compose( controller.position, controller.quaternion, controller.scale ); - controller.matrix.premultiply( standingMatrix ); - controller.matrix.decompose( controller.position, controller.quaternion, controller.scale ); + if (pose.position !== null) controller.position.fromArray(pose.position); + if (pose.orientation !== null) controller.quaternion.fromArray(pose.orientation); + controller.matrix.compose(controller.position, controller.quaternion, controller.scale); + controller.matrix.premultiply(standingMatrix); + controller.matrix.decompose(controller.position, controller.quaternion, controller.scale); controller.matrixWorldNeedsUpdate = true; controller.visible = true; @@ -21476,18 +21489,18 @@ var buttonId = gamepad.id === 'Daydream Controller' ? 0 : 1; - if ( triggers[ i ] !== gamepad.buttons[ buttonId ].pressed ) { + if (triggers[i] !== gamepad.buttons[buttonId].pressed) { - triggers[ i ] = gamepad.buttons[ buttonId ].pressed; + triggers[i] = gamepad.buttons[buttonId].pressed; - if ( triggers[ i ] === true ) { + if (triggers[i] === true) { - controller.dispatchEvent( { type: 'selectstart' } ); + controller.dispatchEvent({ type: 'selectstart' }); } else { - controller.dispatchEvent( { type: 'selectend' } ); - controller.dispatchEvent( { type: 'select' } ); + controller.dispatchEvent({ type: 'selectend' }); + controller.dispatchEvent({ type: 'select' }); } @@ -21507,17 +21520,17 @@ this.enabled = false; - this.getController = function ( id ) { + this.getController = function (id) { - var controller = controllers[ id ]; + var controller = controllers[id]; - if ( controller === undefined ) { + if (controller === undefined) { controller = new Group(); controller.matrixAutoUpdate = false; controller.visible = false; - controllers[ id ] = controller; + controllers[id] = controller; } @@ -21531,39 +21544,39 @@ }; - this.setDevice = function ( value ) { + this.setDevice = function (value) { - if ( value !== undefined ) device = value; + if (value !== undefined) device = value; - animation.setContext( value ); + animation.setContext(value); }; - this.setFramebufferScaleFactor = function ( value ) { + this.setFramebufferScaleFactor = function (value) { framebufferScaleFactor = value; }; - this.setFrameOfReferenceType = function ( value ) { + this.setFrameOfReferenceType = function (value) { frameOfReferenceType = value; }; - this.setPoseTarget = function ( object ) { + this.setPoseTarget = function (object) { - if ( object !== undefined ) poseTarget = object; + if (object !== undefined) poseTarget = object; }; - this.getCamera = function ( camera ) { + this.getCamera = function (camera) { var userHeight = frameOfReferenceType === 'stage' ? 1.6 : 0; - if ( device === null ) { + if (device === null) { - camera.position.set( 0, userHeight, 0 ); + camera.position.set(0, userHeight, 0); return camera; } @@ -21571,21 +21584,21 @@ device.depthNear = camera.near; device.depthFar = camera.far; - device.getFrameData( frameData ); + device.getFrameData(frameData); // - if ( frameOfReferenceType === 'stage' ) { + if (frameOfReferenceType === 'stage') { var stageParameters = device.stageParameters; - if ( stageParameters ) { + if (stageParameters) { - standingMatrix.fromArray( stageParameters.sittingToStandingTransform ); + standingMatrix.fromArray(stageParameters.sittingToStandingTransform); } else { - standingMatrix.makeTranslation( 0, userHeight, 0 ); + standingMatrix.makeTranslation(0, userHeight, 0); } @@ -21596,28 +21609,28 @@ var poseObject = poseTarget !== null ? poseTarget : camera; // We want to manipulate poseObject by its position and quaternion components since users may rely on them. - poseObject.matrix.copy( standingMatrix ); - poseObject.matrix.decompose( poseObject.position, poseObject.quaternion, poseObject.scale ); + poseObject.matrix.copy(standingMatrix); + poseObject.matrix.decompose(poseObject.position, poseObject.quaternion, poseObject.scale); - if ( pose.orientation !== null ) { + if (pose.orientation !== null) { - tempQuaternion.fromArray( pose.orientation ); - poseObject.quaternion.multiply( tempQuaternion ); + tempQuaternion.fromArray(pose.orientation); + poseObject.quaternion.multiply(tempQuaternion); } - if ( pose.position !== null ) { + if (pose.position !== null) { - tempQuaternion.setFromRotationMatrix( standingMatrix ); - tempPosition.fromArray( pose.position ); - tempPosition.applyQuaternion( tempQuaternion ); - poseObject.position.add( tempPosition ); + tempQuaternion.setFromRotationMatrix(standingMatrix); + tempPosition.fromArray(pose.position); + tempPosition.applyQuaternion(tempQuaternion); + poseObject.position.add(tempPosition); } poseObject.updateMatrixWorld(); - if ( device.isPresenting === false ) return camera; + if (device.isPresenting === false) return camera; // @@ -21627,58 +21640,58 @@ cameraL.far = camera.far; cameraR.far = camera.far; - cameraL.matrixWorldInverse.fromArray( frameData.leftViewMatrix ); - cameraR.matrixWorldInverse.fromArray( frameData.rightViewMatrix ); + cameraL.matrixWorldInverse.fromArray(frameData.leftViewMatrix); + cameraR.matrixWorldInverse.fromArray(frameData.rightViewMatrix); // TODO (mrdoob) Double check this code - standingMatrixInverse.getInverse( standingMatrix ); + standingMatrixInverse.getInverse(standingMatrix); - if ( frameOfReferenceType === 'stage' ) { + if (frameOfReferenceType === 'stage') { - cameraL.matrixWorldInverse.multiply( standingMatrixInverse ); - cameraR.matrixWorldInverse.multiply( standingMatrixInverse ); + cameraL.matrixWorldInverse.multiply(standingMatrixInverse); + cameraR.matrixWorldInverse.multiply(standingMatrixInverse); } var parent = poseObject.parent; - if ( parent !== null ) { + if (parent !== null) { - matrixWorldInverse.getInverse( parent.matrixWorld ); + matrixWorldInverse.getInverse(parent.matrixWorld); - cameraL.matrixWorldInverse.multiply( matrixWorldInverse ); - cameraR.matrixWorldInverse.multiply( matrixWorldInverse ); + cameraL.matrixWorldInverse.multiply(matrixWorldInverse); + cameraR.matrixWorldInverse.multiply(matrixWorldInverse); } // envMap and Mirror needs camera.matrixWorld - cameraL.matrixWorld.getInverse( cameraL.matrixWorldInverse ); - cameraR.matrixWorld.getInverse( cameraR.matrixWorldInverse ); + cameraL.matrixWorld.getInverse(cameraL.matrixWorldInverse); + cameraR.matrixWorld.getInverse(cameraR.matrixWorldInverse); - cameraL.projectionMatrix.fromArray( frameData.leftProjectionMatrix ); - cameraR.projectionMatrix.fromArray( frameData.rightProjectionMatrix ); + cameraL.projectionMatrix.fromArray(frameData.leftProjectionMatrix); + cameraR.projectionMatrix.fromArray(frameData.rightProjectionMatrix); - setProjectionFromUnion( cameraVR, cameraL, cameraR ); + setProjectionFromUnion(cameraVR, cameraL, cameraR); // var layers = device.getLayers(); - if ( layers.length ) { + if (layers.length) { - var layer = layers[ 0 ]; + var layer = layers[0]; - if ( layer.leftBounds !== null && layer.leftBounds.length === 4 ) { + if (layer.leftBounds !== null && layer.leftBounds.length === 4) { - cameraL.bounds.fromArray( layer.leftBounds ); + cameraL.bounds.fromArray(layer.leftBounds); } - if ( layer.rightBounds !== null && layer.rightBounds.length === 4 ) { + if (layer.rightBounds !== null && layer.rightBounds.length === 4) { - cameraR.bounds.fromArray( layer.rightBounds ); + cameraR.bounds.fromArray(layer.rightBounds); } @@ -21702,23 +21715,23 @@ var animation = new WebGLAnimation(); - this.setAnimationLoop = function ( callback ) { + this.setAnimationLoop = function (callback) { - animation.setAnimationLoop( callback ); + animation.setAnimationLoop(callback); }; this.submitFrame = function () { - if ( isPresenting() ) device.submitFrame(); + if (isPresenting()) device.submitFrame(); }; this.dispose = function () { - if ( typeof window !== 'undefined' ) { + if (typeof window !== 'undefined') { - window.removeEventListener( 'vrdisplaypresentchange', onVRDisplayPresentChange ); + window.removeEventListener('vrdisplaypresentchange', onVRDisplayPresentChange); } @@ -21730,7 +21743,7 @@ * @author mrdoob / http://mrdoob.com/ */ - function WebXRManager( renderer ) { + function WebXRManager(renderer) { var gl = renderer.context; @@ -21756,32 +21769,32 @@ // var cameraL = new PerspectiveCamera(); - cameraL.layers.enable( 1 ); + cameraL.layers.enable(1); cameraL.viewport = new Vector4(); var cameraR = new PerspectiveCamera(); - cameraR.layers.enable( 2 ); + cameraR.layers.enable(2); cameraR.viewport = new Vector4(); - var cameraVR = new ArrayCamera( [ cameraL, cameraR ] ); - cameraVR.layers.enable( 1 ); - cameraVR.layers.enable( 2 ); + var cameraVR = new ArrayCamera([cameraL, cameraR]); + cameraVR.layers.enable(1); + cameraVR.layers.enable(2); // this.enabled = false; - this.getController = function ( id ) { + this.getController = function (id) { - var controller = controllers[ id ]; + var controller = controllers[id]; - if ( controller === undefined ) { + if (controller === undefined) { controller = new Group(); controller.matrixAutoUpdate = false; controller.visible = false; - controllers[ id ] = controller; + controllers[id] = controller; } @@ -21795,130 +21808,130 @@ }; - this.setDevice = function ( value ) { + this.setDevice = function (value) { - if ( value !== undefined ) device = value; - if ( value instanceof XRDevice ) gl.setCompatibleXRDevice( value ); + if (value !== undefined) device = value; + if (value instanceof XRDevice) gl.setCompatibleXRDevice(value); }; // - function onSessionEvent( event ) { + function onSessionEvent(event) { - var controller = controllers[ inputSources.indexOf( event.inputSource ) ]; - if ( controller ) controller.dispatchEvent( { type: event.type } ); + var controller = controllers[inputSources.indexOf(event.inputSource)]; + if (controller) controller.dispatchEvent({ type: event.type }); } function onSessionEnd() { - renderer.setFramebuffer( null ); + renderer.setFramebuffer(null); animation.stop(); } - this.setFramebufferScaleFactor = function ( value ) { + this.setFramebufferScaleFactor = function (value) { framebufferScaleFactor = value; }; - this.setFrameOfReferenceType = function ( value ) { + this.setFrameOfReferenceType = function (value) { frameOfReferenceType = value; }; - this.setSession = function ( value ) { + this.setSession = function (value) { session = value; - if ( session !== null ) { + if (session !== null) { - session.addEventListener( 'select', onSessionEvent ); - session.addEventListener( 'selectstart', onSessionEvent ); - session.addEventListener( 'selectend', onSessionEvent ); - session.addEventListener( 'end', onSessionEnd ); + session.addEventListener('select', onSessionEvent); + session.addEventListener('selectstart', onSessionEvent); + session.addEventListener('selectend', onSessionEvent); + session.addEventListener('end', onSessionEnd); - session.baseLayer = new XRWebGLLayer( session, gl, { framebufferScaleFactor: framebufferScaleFactor } ); - session.requestFrameOfReference( frameOfReferenceType ).then( function ( value ) { + session.baseLayer = new XRWebGLLayer(session, gl, { framebufferScaleFactor: framebufferScaleFactor }); + session.requestFrameOfReference(frameOfReferenceType).then(function (value) { frameOfReference = value; - renderer.setFramebuffer( session.baseLayer.framebuffer ); + renderer.setFramebuffer(session.baseLayer.framebuffer); - animation.setContext( session ); + animation.setContext(session); animation.start(); - } ); + }); // inputSources = session.getInputSources(); - session.addEventListener( 'inputsourceschange', function () { + session.addEventListener('inputsourceschange', function () { inputSources = session.getInputSources(); - console.log( inputSources ); + console.log(inputSources); - for ( var i = 0; i < controllers.length; i ++ ) { + for (var i = 0; i < controllers.length; i++) { - var controller = controllers[ i ]; - controller.userData.inputSource = inputSources[ i ]; + var controller = controllers[i]; + controller.userData.inputSource = inputSources[i]; } - } ); + }); } }; - function updateCamera( camera, parent ) { + function updateCamera(camera, parent) { - if ( parent === null ) { + if (parent === null) { - camera.matrixWorld.copy( camera.matrix ); + camera.matrixWorld.copy(camera.matrix); } else { - camera.matrixWorld.multiplyMatrices( parent.matrixWorld, camera.matrix ); + camera.matrixWorld.multiplyMatrices(parent.matrixWorld, camera.matrix); } - camera.matrixWorldInverse.getInverse( camera.matrixWorld ); + camera.matrixWorldInverse.getInverse(camera.matrixWorld); } - this.getCamera = function ( camera ) { + this.getCamera = function (camera) { - if ( isPresenting() ) { + if (isPresenting()) { var parent = camera.parent; var cameras = cameraVR.cameras; - updateCamera( cameraVR, parent ); + updateCamera(cameraVR, parent); - for ( var i = 0; i < cameras.length; i ++ ) { + for (var i = 0; i < cameras.length; i++) { - updateCamera( cameras[ i ], parent ); + updateCamera(cameras[i], parent); } // update camera and its children - camera.matrixWorld.copy( cameraVR.matrixWorld ); + camera.matrixWorld.copy(cameraVR.matrixWorld); var children = camera.children; - for ( var i = 0, l = children.length; i < l; i ++ ) { + for (var i = 0, l = children.length; i < l; i++) { - children[ i ].updateMatrixWorld( true ); + children[i].updateMatrixWorld(true); } - setProjectionFromUnion( cameraVR, cameraL, cameraR ); + setProjectionFromUnion(cameraVR, cameraL, cameraR); return cameraVR; @@ -21934,29 +21947,29 @@ var onAnimationFrameCallback = null; - function onAnimationFrame( time, frame ) { + function onAnimationFrame(time, frame) { - pose = frame.getDevicePose( frameOfReference ); + pose = frame.getDevicePose(frameOfReference); - if ( pose !== null ) { + if (pose !== null) { var layer = session.baseLayer; var views = frame.views; - for ( var i = 0; i < views.length; i ++ ) { + for (var i = 0; i < views.length; i++) { - var view = views[ i ]; - var viewport = layer.getViewport( view ); - var viewMatrix = pose.getViewMatrix( view ); + var view = views[i]; + var viewport = layer.getViewport(view); + var viewMatrix = pose.getViewMatrix(view); - var camera = cameraVR.cameras[ i ]; - camera.matrix.fromArray( viewMatrix ).getInverse( camera.matrix ); - camera.projectionMatrix.fromArray( view.projectionMatrix ); - camera.viewport.set( viewport.x, viewport.y, viewport.width, viewport.height ); + var camera = cameraVR.cameras[i]; + camera.matrix.fromArray(viewMatrix).getInverse(camera.matrix); + camera.projectionMatrix.fromArray(view.projectionMatrix); + camera.viewport.set(viewport.x, viewport.y, viewport.width, viewport.height); - if ( i === 0 ) { + if (i === 0) { - cameraVR.matrix.copy( camera.matrix ); + cameraVR.matrix.copy(camera.matrix); } @@ -21966,23 +21979,23 @@ // - for ( var i = 0; i < controllers.length; i ++ ) { + for (var i = 0; i < controllers.length; i++) { - var controller = controllers[ i ]; + var controller = controllers[i]; - var inputSource = inputSources[ i ]; + var inputSource = inputSources[i]; - if ( inputSource ) { + if (inputSource) { - var inputPose = frame.getInputPose( inputSource, frameOfReference ); + var inputPose = frame.getInputPose(inputSource, frameOfReference); - if ( inputPose !== null ) { + if (inputPose !== null) { - if ( 'targetRay' in inputPose ) { + if ('targetRay' in inputPose) { controller.matrix.elements = inputPose.targetRay.transformMatrix; - } else if ( 'pointerMatrix' in inputPose ) { + } else if ('pointerMatrix' in inputPose) { // DEPRECATED @@ -21990,7 +22003,7 @@ } - controller.matrix.decompose( controller.position, controller.rotation, controller.scale ); + controller.matrix.decompose(controller.position, controller.rotation, controller.scale); controller.visible = true; continue; @@ -22003,31 +22016,31 @@ } - if ( onAnimationFrameCallback ) onAnimationFrameCallback( time ); + if (onAnimationFrameCallback) onAnimationFrameCallback(time); } var animation = new WebGLAnimation(); - animation.setAnimationLoop( onAnimationFrame ); + animation.setAnimationLoop(onAnimationFrame); - this.setAnimationLoop = function ( callback ) { + this.setAnimationLoop = function (callback) { onAnimationFrameCallback = callback; }; - this.dispose = function () {}; + this.dispose = function () { }; // DEPRECATED this.getStandingMatrix = function () { - console.warn( 'THREE.WebXRManager: getStandingMatrix() is no longer needed.' ); + console.warn('THREE.WebXRManager: getStandingMatrix() is no longer needed.'); return new THREE.Matrix4(); }; - this.submitFrame = function () {}; + this.submitFrame = function () { }; } @@ -22039,13 +22052,13 @@ * @author tschw */ - function WebGLRenderer( parameters ) { + function WebGLRenderer(parameters) { - console.log( 'THREE.WebGLRenderer', REVISION ); + console.log('THREE.WebGLRenderer', REVISION); parameters = parameters || {}; - var _canvas = parameters.canvas !== undefined ? parameters.canvas : document.createElementNS( 'http://www.w3.org/1999/xhtml', 'canvas' ), + var _canvas = parameters.canvas !== undefined ? parameters.canvas : document.createElementNS('http://www.w3.org/1999/xhtml', 'canvas'), _context = parameters.context !== undefined ? parameters.context : null, _alpha = parameters.alpha !== undefined ? parameters.alpha : false, @@ -22141,8 +22154,8 @@ _pixelRatio = 1, - _viewport = new Vector4( 0, 0, _width, _height ), - _scissor = new Vector4( 0, 0, _width, _height ), + _viewport = new Vector4(0, 0, _width, _height), + _scissor = new Vector4(0, 0, _width, _height), _scissorTest = false, // frustum @@ -22185,20 +22198,20 @@ // event listeners must be registered before WebGL context is created, see #12753 - _canvas.addEventListener( 'webglcontextlost', onContextLost, false ); - _canvas.addEventListener( 'webglcontextrestored', onContextRestore, false ); + _canvas.addEventListener('webglcontextlost', onContextLost, false); + _canvas.addEventListener('webglcontextrestored', onContextRestore, false); - _gl = _context || _canvas.getContext( 'webgl', contextAttributes ) || _canvas.getContext( 'experimental-webgl', contextAttributes ); + _gl = _context || _canvas.getContext('webgl', contextAttributes) || _canvas.getContext('experimental-webgl', contextAttributes); - if ( _gl === null ) { + if (_gl === null) { - if ( _canvas.getContext( 'webgl' ) !== null ) { + if (_canvas.getContext('webgl') !== null) { - throw new Error( 'Error creating WebGL context with your selected attributes.' ); + throw new Error('Error creating WebGL context with your selected attributes.'); } else { - throw new Error( 'Error creating WebGL context.' ); + throw new Error('Error creating WebGL context.'); } @@ -22206,7 +22219,7 @@ // Some experimental-webgl implementations do not have getShaderPrecisionFormat - if ( _gl.getShaderPrecisionFormat === undefined ) { + if (_gl.getShaderPrecisionFormat === undefined) { _gl.getShaderPrecisionFormat = function () { @@ -22216,9 +22229,9 @@ } - } catch ( error ) { + } catch (error) { - console.error( 'THREE.WebGLRenderer: ' + error.message ); + console.error('THREE.WebGLRenderer: ' + error.message); } @@ -22232,45 +22245,45 @@ function initGLContext() { - extensions = new WebGLExtensions( _gl ); + extensions = new WebGLExtensions(_gl); - capabilities = new WebGLCapabilities( _gl, extensions, parameters ); + capabilities = new WebGLCapabilities(_gl, extensions, parameters); - if ( ! capabilities.isWebGL2 ) { + if (!capabilities.isWebGL2) { - extensions.get( 'WEBGL_depth_texture' ); - extensions.get( 'OES_texture_float' ); - extensions.get( 'OES_texture_half_float' ); - extensions.get( 'OES_texture_half_float_linear' ); - extensions.get( 'OES_standard_derivatives' ); - extensions.get( 'OES_element_index_uint' ); - extensions.get( 'ANGLE_instanced_arrays' ); + extensions.get('WEBGL_depth_texture'); + extensions.get('OES_texture_float'); + extensions.get('OES_texture_half_float'); + extensions.get('OES_texture_half_float_linear'); + extensions.get('OES_standard_derivatives'); + extensions.get('OES_element_index_uint'); + extensions.get('ANGLE_instanced_arrays'); } - extensions.get( 'OES_texture_float_linear' ); + extensions.get('OES_texture_float_linear'); - utils = new WebGLUtils( _gl, extensions, capabilities ); + utils = new WebGLUtils(_gl, extensions, capabilities); - state = new WebGLState( _gl, extensions, utils, capabilities ); - state.scissor( _currentScissor.copy( _scissor ).multiplyScalar( _pixelRatio ) ); - state.viewport( _currentViewport.copy( _viewport ).multiplyScalar( _pixelRatio ) ); + state = new WebGLState(_gl, extensions, utils, capabilities); + state.scissor(_currentScissor.copy(_scissor).multiplyScalar(_pixelRatio)); + state.viewport(_currentViewport.copy(_viewport).multiplyScalar(_pixelRatio)); - info = new WebGLInfo( _gl ); + info = new WebGLInfo(_gl); properties = new WebGLProperties(); - textures = new WebGLTextures( _gl, extensions, state, properties, capabilities, utils, info ); - attributes = new WebGLAttributes( _gl ); - geometries = new WebGLGeometries( _gl, attributes, info ); - objects = new WebGLObjects( geometries, info ); - morphtargets = new WebGLMorphtargets( _gl ); - programCache = new WebGLPrograms( _this, extensions, capabilities ); + textures = new WebGLTextures(_gl, extensions, state, properties, capabilities, utils, info); + attributes = new WebGLAttributes(_gl); + geometries = new WebGLGeometries(_gl, attributes, info); + objects = new WebGLObjects(geometries, info); + morphtargets = new WebGLMorphtargets(_gl); + programCache = new WebGLPrograms(_this, extensions, capabilities); renderLists = new WebGLRenderLists(); renderStates = new WebGLRenderStates(); - background = new WebGLBackground( _this, state, objects, _premultipliedAlpha ); + background = new WebGLBackground(_this, state, objects, _premultipliedAlpha); - bufferRenderer = new WebGLBufferRenderer( _gl, extensions, info, capabilities ); - indexedBufferRenderer = new WebGLIndexedBufferRenderer( _gl, extensions, info, capabilities ); + bufferRenderer = new WebGLBufferRenderer(_gl, extensions, info, capabilities); + indexedBufferRenderer = new WebGLIndexedBufferRenderer(_gl, extensions, info, capabilities); info.programs = programCache.programs; @@ -22290,9 +22303,9 @@ var vr = null; - if ( typeof navigator !== 'undefined' ) { + if (typeof navigator !== 'undefined') { - vr = ( 'xr' in navigator ) ? new WebXRManager( _this ) : new WebVRManager( _this ); + vr = ('xr' in navigator) ? new WebXRManager(_this) : new WebVRManager(_this); } @@ -22300,7 +22313,7 @@ // shadow map - var shadowMap = new WebGLShadowMap( _this, objects, capabilities.maxTextureSize ); + var shadowMap = new WebGLShadowMap(_this, objects, capabilities.maxTextureSize); this.shadowMap = shadowMap; @@ -22320,15 +22333,15 @@ this.forceContextLoss = function () { - var extension = extensions.get( 'WEBGL_lose_context' ); - if ( extension ) extension.loseContext(); + var extension = extensions.get('WEBGL_lose_context'); + if (extension) extension.loseContext(); }; this.forceContextRestore = function () { - var extension = extensions.get( 'WEBGL_lose_context' ); - if ( extension ) extension.restoreContext(); + var extension = extensions.get('WEBGL_lose_context'); + if (extension) extension.restoreContext(); }; @@ -22338,13 +22351,13 @@ }; - this.setPixelRatio = function ( value ) { + this.setPixelRatio = function (value) { - if ( value === undefined ) return; + if (value === undefined) return; _pixelRatio = value; - this.setSize( _width, _height, false ); + this.setSize(_width, _height, false); }; @@ -22357,11 +22370,11 @@ }; - this.setSize = function ( width, height, updateStyle ) { + this.setSize = function (width, height, updateStyle) { - if ( vr.isPresenting() ) { + if (vr.isPresenting()) { - console.warn( 'THREE.WebGLRenderer: Can\'t change size while VR device is presenting.' ); + console.warn('THREE.WebGLRenderer: Can\'t change size while VR device is presenting.'); return; } @@ -22372,14 +22385,14 @@ _canvas.width = width * _pixelRatio; _canvas.height = height * _pixelRatio; - if ( updateStyle !== false ) { + if (updateStyle !== false) { _canvas.style.width = width + 'px'; _canvas.style.height = height + 'px'; } - this.setViewport( 0, 0, width, height ); + this.setViewport(0, 0, width, height); }; @@ -22392,7 +22405,7 @@ }; - this.setDrawingBufferSize = function ( width, height, pixelRatio ) { + this.setDrawingBufferSize = function (width, height, pixelRatio) { _width = width; _height = height; @@ -22402,7 +22415,7 @@ _canvas.width = width * pixelRatio; _canvas.height = height * pixelRatio; - this.setViewport( 0, 0, width, height ); + this.setViewport(0, 0, width, height); }; @@ -22412,23 +22425,23 @@ }; - this.setViewport = function ( x, y, width, height ) { + this.setViewport = function (x, y, width, height) { - _viewport.set( x, _height - y - height, width, height ); - state.viewport( _currentViewport.copy( _viewport ).multiplyScalar( _pixelRatio ) ); + _viewport.set(x, _height - y - height, width, height); + state.viewport(_currentViewport.copy(_viewport).multiplyScalar(_pixelRatio)); }; - this.setScissor = function ( x, y, width, height ) { + this.setScissor = function (x, y, width, height) { - _scissor.set( x, _height - y - height, width, height ); - state.scissor( _currentScissor.copy( _scissor ).multiplyScalar( _pixelRatio ) ); + _scissor.set(x, _height - y - height, width, height); + state.scissor(_currentScissor.copy(_scissor).multiplyScalar(_pixelRatio)); }; - this.setScissorTest = function ( boolean ) { + this.setScissorTest = function (boolean) { - state.setScissorTest( _scissorTest = boolean ); + state.setScissorTest(_scissorTest = boolean); }; @@ -22442,7 +22455,7 @@ this.setClearColor = function () { - background.setClearColor.apply( background, arguments ); + background.setClearColor.apply(background, arguments); }; @@ -22454,37 +22467,37 @@ this.setClearAlpha = function () { - background.setClearAlpha.apply( background, arguments ); + background.setClearAlpha.apply(background, arguments); }; - this.clear = function ( color, depth, stencil ) { + this.clear = function (color, depth, stencil) { var bits = 0; - if ( color === undefined || color ) bits |= 16384; - if ( depth === undefined || depth ) bits |= 256; - if ( stencil === undefined || stencil ) bits |= 1024; + if (color === undefined || color) bits |= 16384; + if (depth === undefined || depth) bits |= 256; + if (stencil === undefined || stencil) bits |= 1024; - _gl.clear( bits ); + _gl.clear(bits); }; this.clearColor = function () { - this.clear( true, false, false ); + this.clear(true, false, false); }; this.clearDepth = function () { - this.clear( false, true, false ); + this.clear(false, true, false); }; this.clearStencil = function () { - this.clear( false, false, true ); + this.clear(false, false, true); }; @@ -22492,8 +22505,8 @@ this.dispose = function () { - _canvas.removeEventListener( 'webglcontextlost', onContextLost, false ); - _canvas.removeEventListener( 'webglcontextrestored', onContextRestore, false ); + _canvas.removeEventListener('webglcontextlost', onContextLost, false); + _canvas.removeEventListener('webglcontextrestored', onContextRestore, false); renderLists.dispose(); renderStates.dispose(); @@ -22508,19 +22521,19 @@ // Events - function onContextLost( event ) { + function onContextLost(event) { event.preventDefault(); - console.log( 'THREE.WebGLRenderer: Context Lost.' ); + console.log('THREE.WebGLRenderer: Context Lost.'); _isContextLost = true; } - function onContextRestore( /* event */ ) { + function onContextRestore( /* event */) { - console.log( 'THREE.WebGLRenderer: Context Restored.' ); + console.log('THREE.WebGLRenderer: Context Restored.'); _isContextLost = false; @@ -22528,36 +22541,36 @@ } - function onMaterialDispose( event ) { + function onMaterialDispose(event) { var material = event.target; - material.removeEventListener( 'dispose', onMaterialDispose ); + material.removeEventListener('dispose', onMaterialDispose); - deallocateMaterial( material ); + deallocateMaterial(material); } // Buffer deallocation - function deallocateMaterial( material ) { + function deallocateMaterial(material) { - releaseMaterialProgramReference( material ); + releaseMaterialProgramReference(material); - properties.remove( material ); + properties.remove(material); } - function releaseMaterialProgramReference( material ) { + function releaseMaterialProgramReference(material) { - var programInfo = properties.get( material ).program; + var programInfo = properties.get(material).program; material.program = undefined; - if ( programInfo !== undefined ) { + if (programInfo !== undefined) { - programCache.releaseProgram( programInfo ); + programCache.releaseProgram(programInfo); } @@ -22565,90 +22578,90 @@ // Buffer rendering - function renderObjectImmediate( object, program ) { + function renderObjectImmediate(object, program) { - object.render( function ( object ) { + object.render(function (object) { - _this.renderBufferImmediate( object, program ); + _this.renderBufferImmediate(object, program); - } ); + }); } - this.renderBufferImmediate = function ( object, program ) { + this.renderBufferImmediate = function (object, program) { state.initAttributes(); - var buffers = properties.get( object ); + var buffers = properties.get(object); - if ( object.hasPositions && ! buffers.position ) buffers.position = _gl.createBuffer(); - if ( object.hasNormals && ! buffers.normal ) buffers.normal = _gl.createBuffer(); - if ( object.hasUvs && ! buffers.uv ) buffers.uv = _gl.createBuffer(); - if ( object.hasColors && ! buffers.color ) buffers.color = _gl.createBuffer(); + if (object.hasPositions && !buffers.position) buffers.position = _gl.createBuffer(); + if (object.hasNormals && !buffers.normal) buffers.normal = _gl.createBuffer(); + if (object.hasUvs && !buffers.uv) buffers.uv = _gl.createBuffer(); + if (object.hasColors && !buffers.color) buffers.color = _gl.createBuffer(); var programAttributes = program.getAttributes(); - if ( object.hasPositions ) { + if (object.hasPositions) { - _gl.bindBuffer( 34962, buffers.position ); - _gl.bufferData( 34962, object.positionArray, 35048 ); + _gl.bindBuffer(34962, buffers.position); + _gl.bufferData(34962, object.positionArray, 35048); - state.enableAttribute( programAttributes.position ); - _gl.vertexAttribPointer( programAttributes.position, 3, 5126, false, 0, 0 ); + state.enableAttribute(programAttributes.position); + _gl.vertexAttribPointer(programAttributes.position, 3, 5126, false, 0, 0); } - if ( object.hasNormals ) { + if (object.hasNormals) { - _gl.bindBuffer( 34962, buffers.normal ); - _gl.bufferData( 34962, object.normalArray, 35048 ); + _gl.bindBuffer(34962, buffers.normal); + _gl.bufferData(34962, object.normalArray, 35048); - state.enableAttribute( programAttributes.normal ); - _gl.vertexAttribPointer( programAttributes.normal, 3, 5126, false, 0, 0 ); + state.enableAttribute(programAttributes.normal); + _gl.vertexAttribPointer(programAttributes.normal, 3, 5126, false, 0, 0); } - if ( object.hasUvs ) { + if (object.hasUvs) { - _gl.bindBuffer( 34962, buffers.uv ); - _gl.bufferData( 34962, object.uvArray, 35048 ); + _gl.bindBuffer(34962, buffers.uv); + _gl.bufferData(34962, object.uvArray, 35048); - state.enableAttribute( programAttributes.uv ); - _gl.vertexAttribPointer( programAttributes.uv, 2, 5126, false, 0, 0 ); + state.enableAttribute(programAttributes.uv); + _gl.vertexAttribPointer(programAttributes.uv, 2, 5126, false, 0, 0); } - if ( object.hasColors ) { + if (object.hasColors) { - _gl.bindBuffer( 34962, buffers.color ); - _gl.bufferData( 34962, object.colorArray, 35048 ); + _gl.bindBuffer(34962, buffers.color); + _gl.bufferData(34962, object.colorArray, 35048); - state.enableAttribute( programAttributes.color ); - _gl.vertexAttribPointer( programAttributes.color, 3, 5126, false, 0, 0 ); + state.enableAttribute(programAttributes.color); + _gl.vertexAttribPointer(programAttributes.color, 3, 5126, false, 0, 0); } state.disableUnusedAttributes(); - _gl.drawArrays( 4, 0, object.count ); + _gl.drawArrays(4, 0, object.count); object.count = 0; }; - this.renderBufferDirect = function ( camera, fog, geometry, material, object, group ) { + this.renderBufferDirect = function (camera, fog, geometry, material, object, group) { - var frontFaceCW = ( object.isMesh && object.normalMatrix.determinant() < 0 ); + var frontFaceCW = (object.isMesh && object.normalMatrix.determinant() < 0); - state.setMaterial( material, frontFaceCW ); + state.setMaterial(material, frontFaceCW); - var program = setProgram( camera, fog, material, object ); + var program = setProgram(camera, fog, material, object); var updateBuffers = false; - if ( _currentGeometryProgram.geometry !== geometry.id || + if (_currentGeometryProgram.geometry !== geometry.id || _currentGeometryProgram.program !== program.id || - _currentGeometryProgram.wireframe !== ( material.wireframe === true ) ) { + _currentGeometryProgram.wireframe !== (material.wireframe === true)) { _currentGeometryProgram.geometry = geometry.id; _currentGeometryProgram.program = program.id; @@ -22657,9 +22670,9 @@ } - if ( object.morphTargetInfluences ) { + if (object.morphTargetInfluences) { - morphtargets.update( object, geometry, material, program ); + morphtargets.update(object, geometry, material, program); updateBuffers = true; @@ -22671,9 +22684,9 @@ var position = geometry.attributes.position; var rangeFactor = 1; - if ( material.wireframe === true ) { + if (material.wireframe === true) { - index = geometries.getWireframeAttribute( geometry ); + index = geometries.getWireframeAttribute(geometry); rangeFactor = 2; } @@ -22681,22 +22694,22 @@ var attribute; var renderer = bufferRenderer; - if ( index !== null ) { + if (index !== null) { - attribute = attributes.get( index ); + attribute = attributes.get(index); renderer = indexedBufferRenderer; - renderer.setIndex( attribute ); + renderer.setIndex(attribute); } - if ( updateBuffers ) { + if (updateBuffers) { - setupVertexAttributes( material, program, geometry ); + setupVertexAttributes(material, program, geometry); - if ( index !== null ) { + if (index !== null) { - _gl.bindBuffer( 34963, attribute.buffer ); + _gl.bindBuffer(34963, attribute.buffer); } @@ -22706,11 +22719,11 @@ var dataCount = Infinity; - if ( index !== null ) { + if (index !== null) { dataCount = index.count; - } else if ( position !== undefined ) { + } else if (position !== undefined) { dataCount = position.count; @@ -22722,36 +22735,36 @@ var groupStart = group !== null ? group.start * rangeFactor : 0; var groupCount = group !== null ? group.count * rangeFactor : Infinity; - var drawStart = Math.max( rangeStart, groupStart ); - var drawEnd = Math.min( dataCount, rangeStart + rangeCount, groupStart + groupCount ) - 1; + var drawStart = Math.max(rangeStart, groupStart); + var drawEnd = Math.min(dataCount, rangeStart + rangeCount, groupStart + groupCount) - 1; - var drawCount = Math.max( 0, drawEnd - drawStart + 1 ); + var drawCount = Math.max(0, drawEnd - drawStart + 1); - if ( drawCount === 0 ) return; + if (drawCount === 0) return; // - if ( object.isMesh ) { + if (object.isMesh) { - if ( material.wireframe === true ) { + if (material.wireframe === true) { - state.setLineWidth( material.wireframeLinewidth * getTargetPixelRatio() ); - renderer.setMode( 1 ); + state.setLineWidth(material.wireframeLinewidth * getTargetPixelRatio()); + renderer.setMode(1); } else { - switch ( object.drawMode ) { + switch (object.drawMode) { case TrianglesDrawMode: - renderer.setMode( 4 ); + renderer.setMode(4); break; case TriangleStripDrawMode: - renderer.setMode( 5 ); + renderer.setMode(5); break; case TriangleFanDrawMode: - renderer.setMode( 6 ); + renderer.setMode(6); break; } @@ -22759,61 +22772,61 @@ } - } else if ( object.isLine ) { + } else if (object.isLine) { var lineWidth = material.linewidth; - if ( lineWidth === undefined ) lineWidth = 1; // Not using Line*Material + if (lineWidth === undefined) lineWidth = 1; // Not using Line*Material - state.setLineWidth( lineWidth * getTargetPixelRatio() ); + state.setLineWidth(lineWidth * getTargetPixelRatio()); - if ( object.isLineSegments ) { + if (object.isLineSegments) { - renderer.setMode( 1 ); + renderer.setMode(1); - } else if ( object.isLineLoop ) { + } else if (object.isLineLoop) { - renderer.setMode( 2 ); + renderer.setMode(2); } else { - renderer.setMode( 3 ); + renderer.setMode(3); } - } else if ( object.isPoints ) { + } else if (object.isPoints) { - renderer.setMode( 0 ); + renderer.setMode(0); - } else if ( object.isSprite ) { + } else if (object.isSprite) { - renderer.setMode( 4 ); + renderer.setMode(4); } - if ( geometry && geometry.isInstancedBufferGeometry ) { + if (geometry && geometry.isInstancedBufferGeometry) { - if ( geometry.maxInstancedCount > 0 ) { + if (geometry.maxInstancedCount > 0) { - renderer.renderInstances( geometry, drawStart, drawCount ); + renderer.renderInstances(geometry, drawStart, drawCount); } } else { - renderer.render( drawStart, drawCount ); + renderer.render(drawStart, drawCount); } }; - function setupVertexAttributes( material, program, geometry ) { + function setupVertexAttributes(material, program, geometry) { - if ( geometry && geometry.isInstancedBufferGeometry & ! capabilities.isWebGL2 ) { + if (geometry && geometry.isInstancedBufferGeometry & !capabilities.isWebGL2) { - if ( extensions.get( 'ANGLE_instanced_arrays' ) === null ) { + if (extensions.get('ANGLE_instanced_arrays') === null) { - console.error( 'THREE.WebGLRenderer.setupVertexAttributes: using THREE.InstancedBufferGeometry but hardware does not support extension ANGLE_instanced_arrays.' ); + console.error('THREE.WebGLRenderer.setupVertexAttributes: using THREE.InstancedBufferGeometry but hardware does not support extension ANGLE_instanced_arrays.'); return; } @@ -22828,40 +22841,40 @@ var materialDefaultAttributeValues = material.defaultAttributeValues; - for ( var name in programAttributes ) { + for (var name in programAttributes) { - var programAttribute = programAttributes[ name ]; + var programAttribute = programAttributes[name]; - if ( programAttribute >= 0 ) { + if (programAttribute >= 0) { - var geometryAttribute = geometryAttributes[ name ]; + var geometryAttribute = geometryAttributes[name]; - if ( geometryAttribute !== undefined ) { + if (geometryAttribute !== undefined) { var normalized = geometryAttribute.normalized; var size = geometryAttribute.itemSize; - var attribute = attributes.get( geometryAttribute ); + var attribute = attributes.get(geometryAttribute); // TODO Attribute may not be available on context restore - if ( attribute === undefined ) continue; + if (attribute === undefined) continue; var buffer = attribute.buffer; var type = attribute.type; var bytesPerElement = attribute.bytesPerElement; - if ( geometryAttribute.isInterleavedBufferAttribute ) { + if (geometryAttribute.isInterleavedBufferAttribute) { var data = geometryAttribute.data; var stride = data.stride; var offset = geometryAttribute.offset; - if ( data && data.isInstancedInterleavedBuffer ) { + if (data && data.isInstancedInterleavedBuffer) { - state.enableAttributeAndDivisor( programAttribute, data.meshPerAttribute ); + state.enableAttributeAndDivisor(programAttribute, data.meshPerAttribute); - if ( geometry.maxInstancedCount === undefined ) { + if (geometry.maxInstancedCount === undefined) { geometry.maxInstancedCount = data.meshPerAttribute * data.count; @@ -22869,20 +22882,20 @@ } else { - state.enableAttribute( programAttribute ); + state.enableAttribute(programAttribute); } - _gl.bindBuffer( 34962, buffer ); - _gl.vertexAttribPointer( programAttribute, size, type, normalized, stride * bytesPerElement, offset * bytesPerElement ); + _gl.bindBuffer(34962, buffer); + _gl.vertexAttribPointer(programAttribute, size, type, normalized, stride * bytesPerElement, offset * bytesPerElement); } else { - if ( geometryAttribute.isInstancedBufferAttribute ) { + if (geometryAttribute.isInstancedBufferAttribute) { - state.enableAttributeAndDivisor( programAttribute, geometryAttribute.meshPerAttribute ); + state.enableAttributeAndDivisor(programAttribute, geometryAttribute.meshPerAttribute); - if ( geometry.maxInstancedCount === undefined ) { + if (geometry.maxInstancedCount === undefined) { geometry.maxInstancedCount = geometryAttribute.meshPerAttribute * geometryAttribute.count; @@ -22890,37 +22903,37 @@ } else { - state.enableAttribute( programAttribute ); + state.enableAttribute(programAttribute); } - _gl.bindBuffer( 34962, buffer ); - _gl.vertexAttribPointer( programAttribute, size, type, normalized, 0, 0 ); + _gl.bindBuffer(34962, buffer); + _gl.vertexAttribPointer(programAttribute, size, type, normalized, 0, 0); } - } else if ( materialDefaultAttributeValues !== undefined ) { + } else if (materialDefaultAttributeValues !== undefined) { - var value = materialDefaultAttributeValues[ name ]; + var value = materialDefaultAttributeValues[name]; - if ( value !== undefined ) { + if (value !== undefined) { - switch ( value.length ) { + switch (value.length) { case 2: - _gl.vertexAttrib2fv( programAttribute, value ); + _gl.vertexAttrib2fv(programAttribute, value); break; case 3: - _gl.vertexAttrib3fv( programAttribute, value ); + _gl.vertexAttrib3fv(programAttribute, value); break; case 4: - _gl.vertexAttrib4fv( programAttribute, value ); + _gl.vertexAttrib4fv(programAttribute, value); break; default: - _gl.vertexAttrib1fv( programAttribute, value ); + _gl.vertexAttrib1fv(programAttribute, value); } @@ -22938,50 +22951,50 @@ // Compile - this.compile = function ( scene, camera ) { + this.compile = function (scene, camera) { - currentRenderState = renderStates.get( scene, camera ); + currentRenderState = renderStates.get(scene, camera); currentRenderState.init(); - scene.traverse( function ( object ) { + scene.traverse(function (object) { - if ( object.isLight ) { + if (object.isLight) { - currentRenderState.pushLight( object ); + currentRenderState.pushLight(object); - if ( object.castShadow ) { + if (object.castShadow) { - currentRenderState.pushShadow( object ); + currentRenderState.pushShadow(object); } } - } ); + }); - currentRenderState.setupLights( camera ); + currentRenderState.setupLights(camera); - scene.traverse( function ( object ) { + scene.traverse(function (object) { - if ( object.material ) { + if (object.material) { - if ( Array.isArray( object.material ) ) { + if (Array.isArray(object.material)) { - for ( var i = 0; i < object.material.length; i ++ ) { + for (var i = 0; i < object.material.length; i++) { - initMaterial( object.material[ i ], scene.fog, object ); + initMaterial(object.material[i], scene.fog, object); } } else { - initMaterial( object.material, scene.fog, object ); + initMaterial(object.material, scene.fog, object); } } - } ); + }); }; @@ -22989,22 +23002,22 @@ var onAnimationFrameCallback = null; - function onAnimationFrame( time ) { + function onAnimationFrame(time) { - if ( vr.isPresenting() ) return; - if ( onAnimationFrameCallback ) onAnimationFrameCallback( time ); + if (vr.isPresenting()) return; + if (onAnimationFrameCallback) onAnimationFrameCallback(time); } var animation = new WebGLAnimation(); - animation.setAnimationLoop( onAnimationFrame ); + animation.setAnimationLoop(onAnimationFrame); - if ( typeof window !== 'undefined' ) animation.setContext( window ); + if (typeof window !== 'undefined') animation.setContext(window); - this.setAnimationLoop = function ( callback ) { + this.setAnimationLoop = function (callback) { onAnimationFrameCallback = callback; - vr.setAnimationLoop( callback ); + vr.setAnimationLoop(callback); animation.start(); @@ -23012,16 +23025,16 @@ // Rendering - this.render = function ( scene, camera, renderTarget, forceClear ) { + this.render = function (scene, camera, renderTarget, forceClear) { - if ( ! ( camera && camera.isCamera ) ) { + if (!(camera && camera.isCamera)) { - console.error( 'THREE.WebGLRenderer.render: camera is not an instance of THREE.Camera.' ); + console.error('THREE.WebGLRenderer.render: camera is not an instance of THREE.Camera.'); return; } - if ( _isContextLost ) return; + if (_isContextLost) return; // reset caching for this frame @@ -23033,37 +23046,37 @@ // update scene graph - if ( scene.autoUpdate === true ) scene.updateMatrixWorld(); + if (scene.autoUpdate === true) scene.updateMatrixWorld(); // update camera matrices and frustum - if ( camera.parent === null ) camera.updateMatrixWorld(); + if (camera.parent === null) camera.updateMatrixWorld(); - if ( vr.enabled ) { + if (vr.enabled) { - camera = vr.getCamera( camera ); + camera = vr.getCamera(camera); } // - currentRenderState = renderStates.get( scene, camera ); + currentRenderState = renderStates.get(scene, camera); currentRenderState.init(); - scene.onBeforeRender( _this, scene, camera, renderTarget ); + scene.onBeforeRender(_this, scene, camera, renderTarget); - _projScreenMatrix.multiplyMatrices( camera.projectionMatrix, camera.matrixWorldInverse ); - _frustum.setFromMatrix( _projScreenMatrix ); + _projScreenMatrix.multiplyMatrices(camera.projectionMatrix, camera.matrixWorldInverse); + _frustum.setFromMatrix(_projScreenMatrix); _localClippingEnabled = this.localClippingEnabled; - _clippingEnabled = _clipping.init( this.clippingPlanes, _localClippingEnabled, camera ); + _clippingEnabled = _clipping.init(this.clippingPlanes, _localClippingEnabled, camera); - currentRenderList = renderLists.get( scene, camera ); + currentRenderList = renderLists.get(scene, camera); currentRenderList.init(); - projectObject( scene, camera, _this.sortObjects ); + projectObject(scene, camera, _this.sortObjects); - if ( _this.sortObjects === true ) { + if (_this.sortObjects === true) { currentRenderList.sort(); @@ -23071,75 +23084,75 @@ // - if ( _clippingEnabled ) _clipping.beginShadows(); + if (_clippingEnabled) _clipping.beginShadows(); var shadowsArray = currentRenderState.state.shadowsArray; - shadowMap.render( shadowsArray, scene, camera ); + shadowMap.render(shadowsArray, scene, camera); - currentRenderState.setupLights( camera ); + currentRenderState.setupLights(camera); - if ( _clippingEnabled ) _clipping.endShadows(); + if (_clippingEnabled) _clipping.endShadows(); // - if ( this.info.autoReset ) this.info.reset(); + if (this.info.autoReset) this.info.reset(); - if ( renderTarget === undefined ) { + if (renderTarget === undefined) { renderTarget = null; } - this.setRenderTarget( renderTarget ); + this.setRenderTarget(renderTarget); // - background.render( currentRenderList, scene, camera, forceClear ); + background.render(currentRenderList, scene, camera, forceClear); // render scene var opaqueObjects = currentRenderList.opaque; var transparentObjects = currentRenderList.transparent; - if ( scene.overrideMaterial ) { + if (scene.overrideMaterial) { var overrideMaterial = scene.overrideMaterial; - if ( opaqueObjects.length ) renderObjects( opaqueObjects, scene, camera, overrideMaterial ); - if ( transparentObjects.length ) renderObjects( transparentObjects, scene, camera, overrideMaterial ); + if (opaqueObjects.length) renderObjects(opaqueObjects, scene, camera, overrideMaterial); + if (transparentObjects.length) renderObjects(transparentObjects, scene, camera, overrideMaterial); } else { // opaque pass (front-to-back order) - if ( opaqueObjects.length ) renderObjects( opaqueObjects, scene, camera ); + if (opaqueObjects.length) renderObjects(opaqueObjects, scene, camera); // transparent pass (back-to-front order) - if ( transparentObjects.length ) renderObjects( transparentObjects, scene, camera ); + if (transparentObjects.length) renderObjects(transparentObjects, scene, camera); } // Generate mipmap if we're using any kind of mipmap filtering - if ( renderTarget ) { + if (renderTarget) { - textures.updateRenderTargetMipmap( renderTarget ); + textures.updateRenderTargetMipmap(renderTarget); } // Ensure depth buffer writing is enabled so it can be cleared on next render - state.buffers.depth.setTest( true ); - state.buffers.depth.setMask( true ); - state.buffers.color.setMask( true ); + state.buffers.depth.setTest(true); + state.buffers.depth.setMask(true); + state.buffers.color.setMask(true); - state.setPolygonOffset( false ); + state.setPolygonOffset(false); - scene.onAfterRender( _this, scene, camera ); + scene.onAfterRender(_this, scene, camera); - if ( vr.enabled ) { + if (vr.enabled) { vr.submitFrame(); @@ -23152,93 +23165,93 @@ }; - function projectObject( object, camera, sortObjects ) { + function projectObject(object, camera, sortObjects) { - if ( object.visible === false ) return; + if (object.visible === false) return; - var visible = object.layers.test( camera.layers ); + var visible = object.layers.test(camera.layers); - if ( visible ) { + if (visible) { - if ( object.isLight ) { + if (object.isLight) { - currentRenderState.pushLight( object ); + currentRenderState.pushLight(object); - if ( object.castShadow ) { + if (object.castShadow) { - currentRenderState.pushShadow( object ); + currentRenderState.pushShadow(object); } - } else if ( object.isSprite ) { + } else if (object.isSprite) { - if ( ! object.frustumCulled || _frustum.intersectsSprite( object ) ) { + if (!object.frustumCulled || _frustum.intersectsSprite(object)) { - if ( sortObjects ) { + if (sortObjects) { - _vector3.setFromMatrixPosition( object.matrixWorld ) - .applyMatrix4( _projScreenMatrix ); + _vector3.setFromMatrixPosition(object.matrixWorld) + .applyMatrix4(_projScreenMatrix); } - var geometry = objects.update( object ); + var geometry = objects.update(object); var material = object.material; - currentRenderList.push( object, geometry, material, _vector3.z, null ); + currentRenderList.push(object, geometry, material, _vector3.z, null); } - } else if ( object.isImmediateRenderObject ) { + } else if (object.isImmediateRenderObject) { - if ( sortObjects ) { + if (sortObjects) { - _vector3.setFromMatrixPosition( object.matrixWorld ) - .applyMatrix4( _projScreenMatrix ); + _vector3.setFromMatrixPosition(object.matrixWorld) + .applyMatrix4(_projScreenMatrix); } - currentRenderList.push( object, null, object.material, _vector3.z, null ); + currentRenderList.push(object, null, object.material, _vector3.z, null); - } else if ( object.isMesh || object.isLine || object.isPoints ) { + } else if (object.isMesh || object.isLine || object.isPoints) { - if ( object.isSkinnedMesh ) { + if (object.isSkinnedMesh) { object.skeleton.update(); } - if ( ! object.frustumCulled || _frustum.intersectsObject( object ) ) { + if (!object.frustumCulled || _frustum.intersectsObject(object)) { - if ( sortObjects ) { + if (sortObjects) { - _vector3.setFromMatrixPosition( object.matrixWorld ) - .applyMatrix4( _projScreenMatrix ); + _vector3.setFromMatrixPosition(object.matrixWorld) + .applyMatrix4(_projScreenMatrix); } - var geometry = objects.update( object ); + var geometry = objects.update(object); var material = object.material; - if ( Array.isArray( material ) ) { + if (Array.isArray(material)) { var groups = geometry.groups; - for ( var i = 0, l = groups.length; i < l; i ++ ) { + for (var i = 0, l = groups.length; i < l; i++) { - var group = groups[ i ]; - var groupMaterial = material[ group.materialIndex ]; + var group = groups[i]; + var groupMaterial = material[group.materialIndex]; - if ( groupMaterial && groupMaterial.visible ) { + if (groupMaterial && groupMaterial.visible) { - currentRenderList.push( object, geometry, groupMaterial, _vector3.z, group ); + currentRenderList.push(object, geometry, groupMaterial, _vector3.z, group); } } - } else if ( material.visible ) { + } else if (material.visible) { - currentRenderList.push( object, geometry, material, _vector3.z, null ); + currentRenderList.push(object, geometry, material, _vector3.z, null); } @@ -23250,40 +23263,40 @@ var children = object.children; - for ( var i = 0, l = children.length; i < l; i ++ ) { + for (var i = 0, l = children.length; i < l; i++) { - projectObject( children[ i ], camera, sortObjects ); + projectObject(children[i], camera, sortObjects); } } - function renderObjects( renderList, scene, camera, overrideMaterial ) { + function renderObjects(renderList, scene, camera, overrideMaterial) { - for ( var i = 0, l = renderList.length; i < l; i ++ ) { + for (var i = 0, l = renderList.length; i < l; i++) { - var renderItem = renderList[ i ]; + var renderItem = renderList[i]; var object = renderItem.object; var geometry = renderItem.geometry; var material = overrideMaterial === undefined ? renderItem.material : overrideMaterial; var group = renderItem.group; - if ( camera.isArrayCamera ) { + if (camera.isArrayCamera) { _currentArrayCamera = camera; var cameras = camera.cameras; - for ( var j = 0, jl = cameras.length; j < jl; j ++ ) { + for (var j = 0, jl = cameras.length; j < jl; j++) { - var camera2 = cameras[ j ]; + var camera2 = cameras[j]; - if ( object.layers.test( camera2.layers ) ) { + if (object.layers.test(camera2.layers)) { - if ( 'viewport' in camera2 ) { // XR + if ('viewport' in camera2) { // XR - state.viewport( _currentViewport.copy( camera2.viewport ) ); + state.viewport(_currentViewport.copy(camera2.viewport)); } else { @@ -23294,13 +23307,13 @@ var width = bounds.z * _width; var height = bounds.w * _height; - state.viewport( _currentViewport.set( x, y, width, height ).multiplyScalar( _pixelRatio ) ); + state.viewport(_currentViewport.set(x, y, width, height).multiplyScalar(_pixelRatio)); } - currentRenderState.setupLights( camera2 ); + currentRenderState.setupLights(camera2); - renderObject( object, scene, camera2, geometry, material, group ); + renderObject(object, scene, camera2, geometry, material, group); } @@ -23310,7 +23323,7 @@ _currentArrayCamera = null; - renderObject( object, scene, camera, geometry, material, group ); + renderObject(object, scene, camera, geometry, material, group); } @@ -23318,40 +23331,40 @@ } - function renderObject( object, scene, camera, geometry, material, group ) { + function renderObject(object, scene, camera, geometry, material, group) { - object.onBeforeRender( _this, scene, camera, geometry, material, group ); - currentRenderState = renderStates.get( scene, _currentArrayCamera || camera ); + object.onBeforeRender(_this, scene, camera, geometry, material, group); + currentRenderState = renderStates.get(scene, _currentArrayCamera || camera); - object.modelViewMatrix.multiplyMatrices( camera.matrixWorldInverse, object.matrixWorld ); - object.normalMatrix.getNormalMatrix( object.modelViewMatrix ); + object.modelViewMatrix.multiplyMatrices(camera.matrixWorldInverse, object.matrixWorld); + object.normalMatrix.getNormalMatrix(object.modelViewMatrix); - if ( object.isImmediateRenderObject ) { + if (object.isImmediateRenderObject) { - state.setMaterial( material ); + state.setMaterial(material); - var program = setProgram( camera, scene.fog, material, object ); + var program = setProgram(camera, scene.fog, material, object); _currentGeometryProgram.geometry = null; _currentGeometryProgram.program = null; _currentGeometryProgram.wireframe = false; - renderObjectImmediate( object, program ); + renderObjectImmediate(object, program); } else { - _this.renderBufferDirect( camera, scene.fog, geometry, material, object, group ); + _this.renderBufferDirect(camera, scene.fog, geometry, material, object, group); } - object.onAfterRender( _this, scene, camera, geometry, material, group ); - currentRenderState = renderStates.get( scene, _currentArrayCamera || camera ); + object.onAfterRender(_this, scene, camera, geometry, material, group); + currentRenderState = renderStates.get(scene, _currentArrayCamera || camera); } - function initMaterial( material, fog, object ) { + function initMaterial(material, fog, object) { - var materialProperties = properties.get( material ); + var materialProperties = properties.get(material); var lights = currentRenderState.state.lights; var shadowsArray = currentRenderState.state.shadowsArray; @@ -23360,30 +23373,30 @@ var lightsStateHash = lights.state.hash; var parameters = programCache.getParameters( - material, lights.state, shadowsArray, fog, _clipping.numPlanes, _clipping.numIntersection, object ); + material, lights.state, shadowsArray, fog, _clipping.numPlanes, _clipping.numIntersection, object); - var code = programCache.getProgramCode( material, parameters ); + var code = programCache.getProgramCode(material, parameters); var program = materialProperties.program; var programChange = true; - if ( program === undefined ) { + if (program === undefined) { // new material - material.addEventListener( 'dispose', onMaterialDispose ); + material.addEventListener('dispose', onMaterialDispose); - } else if ( program.code !== code ) { + } else if (program.code !== code) { // changed glsl or parameters - releaseMaterialProgramReference( material ); + releaseMaterialProgramReference(material); - } else if ( lightsHash.stateID !== lightsStateHash.stateID || + } else if (lightsHash.stateID !== lightsStateHash.stateID || lightsHash.directionalLength !== lightsStateHash.directionalLength || lightsHash.pointLength !== lightsStateHash.pointLength || lightsHash.spotLength !== lightsStateHash.spotLength || lightsHash.rectAreaLength !== lightsStateHash.rectAreaLength || lightsHash.hemiLength !== lightsStateHash.hemiLength || - lightsHash.shadowsLength !== lightsStateHash.shadowsLength ) { + lightsHash.shadowsLength !== lightsStateHash.shadowsLength) { lightsHash.stateID = lightsStateHash.stateID; lightsHash.directionalLength = lightsStateHash.directionalLength; @@ -23395,7 +23408,7 @@ programChange = false; - } else if ( parameters.shaderID !== undefined ) { + } else if (parameters.shaderID !== undefined) { // same glsl and uniform list return; @@ -23407,15 +23420,15 @@ } - if ( programChange ) { + if (programChange) { - if ( parameters.shaderID ) { + if (parameters.shaderID) { - var shader = ShaderLib[ parameters.shaderID ]; + var shader = ShaderLib[parameters.shaderID]; materialProperties.shader = { name: material.type, - uniforms: UniformsUtils.clone( shader.uniforms ), + uniforms: UniformsUtils.clone(shader.uniforms), vertexShader: shader.vertexShader, fragmentShader: shader.fragmentShader }; @@ -23431,12 +23444,12 @@ } - material.onBeforeCompile( materialProperties.shader, _this ); + material.onBeforeCompile(materialProperties.shader, _this); // Computing code again as onBeforeCompile may have changed the shaders - code = programCache.getProgramCode( material, parameters ); + code = programCache.getProgramCode(material, parameters); - program = programCache.acquireProgram( material, materialProperties.shader, parameters, code ); + program = programCache.acquireProgram(material, materialProperties.shader, parameters, code); materialProperties.program = program; material.program = program; @@ -23445,15 +23458,15 @@ var programAttributes = program.getAttributes(); - if ( material.morphTargets ) { + if (material.morphTargets) { material.numSupportedMorphTargets = 0; - for ( var i = 0; i < _this.maxMorphTargets; i ++ ) { + for (var i = 0; i < _this.maxMorphTargets; i++) { - if ( programAttributes[ 'morphTarget' + i ] >= 0 ) { + if (programAttributes['morphTarget' + i] >= 0) { - material.numSupportedMorphTargets ++; + material.numSupportedMorphTargets++; } @@ -23461,15 +23474,15 @@ } - if ( material.morphNormals ) { + if (material.morphNormals) { material.numSupportedMorphNormals = 0; - for ( var i = 0; i < _this.maxMorphNormals; i ++ ) { + for (var i = 0; i < _this.maxMorphNormals; i++) { - if ( programAttributes[ 'morphNormal' + i ] >= 0 ) { + if (programAttributes['morphNormal' + i] >= 0) { - material.numSupportedMorphNormals ++; + material.numSupportedMorphNormals++; } @@ -23479,9 +23492,9 @@ var uniforms = materialProperties.shader.uniforms; - if ( ! material.isShaderMaterial && - ! material.isRawShaderMaterial || - material.clipping === true ) { + if (!material.isShaderMaterial && + !material.isRawShaderMaterial || + material.clipping === true) { materialProperties.numClippingPlanes = _clipping.numPlanes; materialProperties.numIntersection = _clipping.numIntersection; @@ -23492,7 +23505,7 @@ materialProperties.fog = fog; // store the light setup it was created for - if ( lightsHash === undefined ) { + if (lightsHash === undefined) { materialProperties.lightsHash = lightsHash = {}; @@ -23506,7 +23519,7 @@ lightsHash.hemiLength = lightsStateHash.hemiLength; lightsHash.shadowsLength = lightsStateHash.shadowsLength; - if ( material.lights ) { + if (material.lights) { // wire up the material to this renderer's lighting state @@ -23529,25 +23542,25 @@ var progUniforms = materialProperties.program.getUniforms(), uniformsList = - WebGLUniforms.seqWithValue( progUniforms.seq, uniforms ); + WebGLUniforms.seqWithValue(progUniforms.seq, uniforms); materialProperties.uniformsList = uniformsList; } - function setProgram( camera, fog, material, object ) { + function setProgram(camera, fog, material, object) { _usedTextureUnits = 0; - var materialProperties = properties.get( material ); + var materialProperties = properties.get(material); var lights = currentRenderState.state.lights; var lightsHash = materialProperties.lightsHash; var lightsStateHash = lights.state.hash; - if ( _clippingEnabled ) { + if (_clippingEnabled) { - if ( _localClippingEnabled || camera !== _currentCamera ) { + if (_localClippingEnabled || camera !== _currentCamera) { var useCache = camera === _currentCamera && @@ -23558,35 +23571,35 @@ // (#8465, #8379) _clipping.setState( material.clippingPlanes, material.clipIntersection, material.clipShadows, - camera, materialProperties, useCache ); + camera, materialProperties, useCache); } } - if ( material.needsUpdate === false ) { + if (material.needsUpdate === false) { - if ( materialProperties.program === undefined ) { + if (materialProperties.program === undefined) { material.needsUpdate = true; - } else if ( material.fog && materialProperties.fog !== fog ) { + } else if (material.fog && materialProperties.fog !== fog) { material.needsUpdate = true; - } else if ( material.lights && ( lightsHash.stateID !== lightsStateHash.stateID || + } else if (material.lights && (lightsHash.stateID !== lightsStateHash.stateID || lightsHash.directionalLength !== lightsStateHash.directionalLength || lightsHash.pointLength !== lightsStateHash.pointLength || lightsHash.spotLength !== lightsStateHash.spotLength || lightsHash.rectAreaLength !== lightsStateHash.rectAreaLength || lightsHash.hemiLength !== lightsStateHash.hemiLength || - lightsHash.shadowsLength !== lightsStateHash.shadowsLength ) ) { + lightsHash.shadowsLength !== lightsStateHash.shadowsLength)) { material.needsUpdate = true; - } else if ( materialProperties.numClippingPlanes !== undefined && - ( materialProperties.numClippingPlanes !== _clipping.numPlanes || - materialProperties.numIntersection !== _clipping.numIntersection ) ) { + } else if (materialProperties.numClippingPlanes !== undefined && + (materialProperties.numClippingPlanes !== _clipping.numPlanes || + materialProperties.numIntersection !== _clipping.numIntersection)) { material.needsUpdate = true; @@ -23594,9 +23607,9 @@ } - if ( material.needsUpdate ) { + if (material.needsUpdate) { - initMaterial( material, fog, object ); + initMaterial(material, fog, object); material.needsUpdate = false; } @@ -23609,7 +23622,7 @@ p_uniforms = program.getUniforms(), m_uniforms = materialProperties.shader.uniforms; - if ( state.useProgram( program.program ) ) { + if (state.useProgram(program.program)) { refreshProgram = true; refreshMaterial = true; @@ -23617,7 +23630,7 @@ } - if ( material.id !== _currentMaterialId ) { + if (material.id !== _currentMaterialId) { _currentMaterialId = material.id; @@ -23625,18 +23638,18 @@ } - if ( refreshProgram || _currentCamera !== camera ) { + if (refreshProgram || _currentCamera !== camera) { - p_uniforms.setValue( _gl, 'projectionMatrix', camera.projectionMatrix ); + p_uniforms.setValue(_gl, 'projectionMatrix', camera.projectionMatrix); - if ( capabilities.logarithmicDepthBuffer ) { + if (capabilities.logarithmicDepthBuffer) { - p_uniforms.setValue( _gl, 'logDepthBufFC', - 2.0 / ( Math.log( camera.far + 1.0 ) / Math.LN2 ) ); + p_uniforms.setValue(_gl, 'logDepthBufFC', + 2.0 / (Math.log(camera.far + 1.0) / Math.LN2)); } - if ( _currentCamera !== camera ) { + if (_currentCamera !== camera) { _currentCamera = camera; @@ -23652,30 +23665,30 @@ // load material specific uniforms // (shader material also gets them for the sake of genericity) - if ( material.isShaderMaterial || + if (material.isShaderMaterial || material.isMeshPhongMaterial || material.isMeshStandardMaterial || - material.envMap ) { + material.envMap) { var uCamPos = p_uniforms.map.cameraPosition; - if ( uCamPos !== undefined ) { + if (uCamPos !== undefined) { - uCamPos.setValue( _gl, - _vector3.setFromMatrixPosition( camera.matrixWorld ) ); + uCamPos.setValue(_gl, + _vector3.setFromMatrixPosition(camera.matrixWorld)); } } - if ( material.isMeshPhongMaterial || + if (material.isMeshPhongMaterial || material.isMeshLambertMaterial || material.isMeshBasicMaterial || material.isMeshStandardMaterial || material.isShaderMaterial || - material.skinning ) { + material.skinning) { - p_uniforms.setValue( _gl, 'viewMatrix', camera.matrixWorldInverse ); + p_uniforms.setValue(_gl, 'viewMatrix', camera.matrixWorldInverse); } @@ -23685,20 +23698,20 @@ // auto-setting of texture unit for bone texture must go before other textures // not sure why, but otherwise weird things happen - if ( material.skinning ) { + if (material.skinning) { - p_uniforms.setOptional( _gl, object, 'bindMatrix' ); - p_uniforms.setOptional( _gl, object, 'bindMatrixInverse' ); + p_uniforms.setOptional(_gl, object, 'bindMatrix'); + p_uniforms.setOptional(_gl, object, 'bindMatrixInverse'); var skeleton = object.skeleton; - if ( skeleton ) { + if (skeleton) { var bones = skeleton.bones; - if ( capabilities.floatVertexTextures ) { + if (capabilities.floatVertexTextures) { - if ( skeleton.boneTexture === undefined ) { + if (skeleton.boneTexture === undefined) { // layout (1 matrix = 4 pixels) // RGBA RGBA RGBA RGBA (=> column1, column2, column3, column4) @@ -23708,14 +23721,14 @@ // 64x64 pixel texture max 1024 bones * 4 pixels = (64 * 64) - var size = Math.sqrt( bones.length * 4 ); // 4 pixels needed for 1 matrix - size = _Math.ceilPowerOfTwo( size ); - size = Math.max( size, 4 ); + var size = Math.sqrt(bones.length * 4); // 4 pixels needed for 1 matrix + size = _Math.ceilPowerOfTwo(size); + size = Math.max(size, 4); - var boneMatrices = new Float32Array( size * size * 4 ); // 4 floats per RGBA pixel - boneMatrices.set( skeleton.boneMatrices ); // copy current values + var boneMatrices = new Float32Array(size * size * 4); // 4 floats per RGBA pixel + boneMatrices.set(skeleton.boneMatrices); // copy current values - var boneTexture = new DataTexture( boneMatrices, size, size, RGBAFormat, FloatType ); + var boneTexture = new DataTexture(boneMatrices, size, size, RGBAFormat, FloatType); boneTexture.needsUpdate = true; skeleton.boneMatrices = boneMatrices; @@ -23724,12 +23737,12 @@ } - p_uniforms.setValue( _gl, 'boneTexture', skeleton.boneTexture ); - p_uniforms.setValue( _gl, 'boneTextureSize', skeleton.boneTextureSize ); + p_uniforms.setValue(_gl, 'boneTexture', skeleton.boneTexture); + p_uniforms.setValue(_gl, 'boneTextureSize', skeleton.boneTextureSize); } else { - p_uniforms.setOptional( _gl, skeleton, 'boneMatrices' ); + p_uniforms.setOptional(_gl, skeleton, 'boneMatrices'); } @@ -23737,12 +23750,12 @@ } - if ( refreshMaterial ) { + if (refreshMaterial) { - p_uniforms.setValue( _gl, 'toneMappingExposure', _this.toneMappingExposure ); - p_uniforms.setValue( _gl, 'toneMappingWhitePoint', _this.toneMappingWhitePoint ); + p_uniforms.setValue(_gl, 'toneMappingExposure', _this.toneMappingExposure); + p_uniforms.setValue(_gl, 'toneMappingWhitePoint', _this.toneMappingWhitePoint); - if ( material.lights ) { + if (material.lights) { // the current material requires lighting info @@ -23753,95 +23766,95 @@ // use the current material's .needsUpdate flags to set // the GL state when required - markUniformsLightsNeedsUpdate( m_uniforms, refreshLights ); + markUniformsLightsNeedsUpdate(m_uniforms, refreshLights); } // refresh uniforms common to several materials - if ( fog && material.fog ) { + if (fog && material.fog) { - refreshUniformsFog( m_uniforms, fog ); + refreshUniformsFog(m_uniforms, fog); } - if ( material.isMeshBasicMaterial ) { + if (material.isMeshBasicMaterial) { - refreshUniformsCommon( m_uniforms, material ); + refreshUniformsCommon(m_uniforms, material); - } else if ( material.isMeshLambertMaterial ) { + } else if (material.isMeshLambertMaterial) { - refreshUniformsCommon( m_uniforms, material ); - refreshUniformsLambert( m_uniforms, material ); + refreshUniformsCommon(m_uniforms, material); + refreshUniformsLambert(m_uniforms, material); - } else if ( material.isMeshPhongMaterial ) { + } else if (material.isMeshPhongMaterial) { - refreshUniformsCommon( m_uniforms, material ); + refreshUniformsCommon(m_uniforms, material); - if ( material.isMeshToonMaterial ) { + if (material.isMeshToonMaterial) { - refreshUniformsToon( m_uniforms, material ); + refreshUniformsToon(m_uniforms, material); } else { - refreshUniformsPhong( m_uniforms, material ); + refreshUniformsPhong(m_uniforms, material); } - } else if ( material.isMeshStandardMaterial ) { + } else if (material.isMeshStandardMaterial) { - refreshUniformsCommon( m_uniforms, material ); + refreshUniformsCommon(m_uniforms, material); - if ( material.isMeshPhysicalMaterial ) { + if (material.isMeshPhysicalMaterial) { - refreshUniformsPhysical( m_uniforms, material ); + refreshUniformsPhysical(m_uniforms, material); } else { - refreshUniformsStandard( m_uniforms, material ); + refreshUniformsStandard(m_uniforms, material); } - } else if ( material.isMeshMatcapMaterial ) { + } else if (material.isMeshMatcapMaterial) { - refreshUniformsCommon( m_uniforms, material ); + refreshUniformsCommon(m_uniforms, material); - refreshUniformsMatcap( m_uniforms, material ); + refreshUniformsMatcap(m_uniforms, material); - } else if ( material.isMeshDepthMaterial ) { + } else if (material.isMeshDepthMaterial) { - refreshUniformsCommon( m_uniforms, material ); - refreshUniformsDepth( m_uniforms, material ); + refreshUniformsCommon(m_uniforms, material); + refreshUniformsDepth(m_uniforms, material); - } else if ( material.isMeshDistanceMaterial ) { + } else if (material.isMeshDistanceMaterial) { - refreshUniformsCommon( m_uniforms, material ); - refreshUniformsDistance( m_uniforms, material ); + refreshUniformsCommon(m_uniforms, material); + refreshUniformsDistance(m_uniforms, material); - } else if ( material.isMeshNormalMaterial ) { + } else if (material.isMeshNormalMaterial) { - refreshUniformsCommon( m_uniforms, material ); - refreshUniformsNormal( m_uniforms, material ); + refreshUniformsCommon(m_uniforms, material); + refreshUniformsNormal(m_uniforms, material); - } else if ( material.isLineBasicMaterial ) { + } else if (material.isLineBasicMaterial) { - refreshUniformsLine( m_uniforms, material ); + refreshUniformsLine(m_uniforms, material); - if ( material.isLineDashedMaterial ) { + if (material.isLineDashedMaterial) { - refreshUniformsDash( m_uniforms, material ); + refreshUniformsDash(m_uniforms, material); } - } else if ( material.isPointsMaterial ) { + } else if (material.isPointsMaterial) { - refreshUniformsPoints( m_uniforms, material ); + refreshUniformsPoints(m_uniforms, material); - } else if ( material.isSpriteMaterial ) { + } else if (material.isSpriteMaterial) { - refreshUniformsSprites( m_uniforms, material ); + refreshUniformsSprites(m_uniforms, material); - } else if ( material.isShadowMaterial ) { + } else if (material.isShadowMaterial) { m_uniforms.color.value = material.color; m_uniforms.opacity.value = material.opacity; @@ -23851,31 +23864,31 @@ // RectAreaLight Texture // TODO (mrdoob): Find a nicer implementation - if ( m_uniforms.ltc_1 !== undefined ) m_uniforms.ltc_1.value = UniformsLib.LTC_1; - if ( m_uniforms.ltc_2 !== undefined ) m_uniforms.ltc_2.value = UniformsLib.LTC_2; + if (m_uniforms.ltc_1 !== undefined) m_uniforms.ltc_1.value = UniformsLib.LTC_1; + if (m_uniforms.ltc_2 !== undefined) m_uniforms.ltc_2.value = UniformsLib.LTC_2; - WebGLUniforms.upload( _gl, materialProperties.uniformsList, m_uniforms, _this ); + WebGLUniforms.upload(_gl, materialProperties.uniformsList, m_uniforms, _this); } - if ( material.isShaderMaterial && material.uniformsNeedUpdate === true ) { + if (material.isShaderMaterial && material.uniformsNeedUpdate === true) { - WebGLUniforms.upload( _gl, materialProperties.uniformsList, m_uniforms, _this ); + WebGLUniforms.upload(_gl, materialProperties.uniformsList, m_uniforms, _this); material.uniformsNeedUpdate = false; } - if ( material.isSpriteMaterial ) { + if (material.isSpriteMaterial) { - p_uniforms.setValue( _gl, 'center', object.center ); + p_uniforms.setValue(_gl, 'center', object.center); } // common matrices - p_uniforms.setValue( _gl, 'modelViewMatrix', object.modelViewMatrix ); - p_uniforms.setValue( _gl, 'normalMatrix', object.normalMatrix ); - p_uniforms.setValue( _gl, 'modelMatrix', object.matrixWorld ); + p_uniforms.setValue(_gl, 'modelViewMatrix', object.modelViewMatrix); + p_uniforms.setValue(_gl, 'normalMatrix', object.normalMatrix); + p_uniforms.setValue(_gl, 'modelMatrix', object.matrixWorld); return program; @@ -23883,41 +23896,41 @@ // Uniforms (refresh uniforms objects) - function refreshUniformsCommon( uniforms, material ) { + function refreshUniformsCommon(uniforms, material) { uniforms.opacity.value = material.opacity; - if ( material.color ) { + if (material.color) { uniforms.diffuse.value = material.color; } - if ( material.emissive ) { + if (material.emissive) { - uniforms.emissive.value.copy( material.emissive ).multiplyScalar( material.emissiveIntensity ); + uniforms.emissive.value.copy(material.emissive).multiplyScalar(material.emissiveIntensity); } - if ( material.map ) { + if (material.map) { uniforms.map.value = material.map; } - if ( material.alphaMap ) { + if (material.alphaMap) { uniforms.alphaMap.value = material.alphaMap; } - if ( material.specularMap ) { + if (material.specularMap) { uniforms.specularMap.value = material.specularMap; } - if ( material.envMap ) { + if (material.envMap) { uniforms.envMap.value = material.envMap; @@ -23925,23 +23938,23 @@ // WebGLRenderTargetCube will be flipped for backwards compatibility // WebGLRenderTargetCube.texture will be flipped because it's a Texture and NOT a CubeTexture // this check must be handled differently, or removed entirely, if WebGLRenderTargetCube uses a CubeTexture in the future - uniforms.flipEnvMap.value = ( ! ( material.envMap && material.envMap.isCubeTexture ) ) ? 1 : - 1; + uniforms.flipEnvMap.value = (!(material.envMap && material.envMap.isCubeTexture)) ? 1 : - 1; uniforms.reflectivity.value = material.reflectivity; uniforms.refractionRatio.value = material.refractionRatio; - uniforms.maxMipLevel.value = properties.get( material.envMap ).__maxMipLevel; + uniforms.maxMipLevel.value = properties.get(material.envMap).__maxMipLevel; } - if ( material.lightMap ) { + if (material.lightMap) { uniforms.lightMap.value = material.lightMap; uniforms.lightMapIntensity.value = material.lightMapIntensity; } - if ( material.aoMap ) { + if (material.aoMap) { uniforms.aoMap.value = material.aoMap; uniforms.aoMapIntensity.value = material.aoMapIntensity; @@ -23958,73 +23971,73 @@ var uvScaleMap; - if ( material.map ) { + if (material.map) { uvScaleMap = material.map; - } else if ( material.specularMap ) { + } else if (material.specularMap) { uvScaleMap = material.specularMap; - } else if ( material.displacementMap ) { + } else if (material.displacementMap) { uvScaleMap = material.displacementMap; - } else if ( material.normalMap ) { + } else if (material.normalMap) { uvScaleMap = material.normalMap; - } else if ( material.bumpMap ) { + } else if (material.bumpMap) { uvScaleMap = material.bumpMap; - } else if ( material.roughnessMap ) { + } else if (material.roughnessMap) { uvScaleMap = material.roughnessMap; - } else if ( material.metalnessMap ) { + } else if (material.metalnessMap) { uvScaleMap = material.metalnessMap; - } else if ( material.alphaMap ) { + } else if (material.alphaMap) { uvScaleMap = material.alphaMap; - } else if ( material.emissiveMap ) { + } else if (material.emissiveMap) { uvScaleMap = material.emissiveMap; } - if ( uvScaleMap !== undefined ) { + if (uvScaleMap !== undefined) { // backwards compatibility - if ( uvScaleMap.isWebGLRenderTarget ) { + if (uvScaleMap.isWebGLRenderTarget) { uvScaleMap = uvScaleMap.texture; } - if ( uvScaleMap.matrixAutoUpdate === true ) { + if (uvScaleMap.matrixAutoUpdate === true) { uvScaleMap.updateMatrix(); } - uniforms.uvTransform.value.copy( uvScaleMap.matrix ); + uniforms.uvTransform.value.copy(uvScaleMap.matrix); } } - function refreshUniformsLine( uniforms, material ) { + function refreshUniformsLine(uniforms, material) { uniforms.diffuse.value = material.color; uniforms.opacity.value = material.opacity; } - function refreshUniformsDash( uniforms, material ) { + function refreshUniformsDash(uniforms, material) { uniforms.dashSize.value = material.dashSize; uniforms.totalSize.value = material.dashSize + material.gapSize; @@ -24032,7 +24045,7 @@ } - function refreshUniformsPoints( uniforms, material ) { + function refreshUniformsPoints(uniforms, material) { uniforms.diffuse.value = material.color; uniforms.opacity.value = material.opacity; @@ -24041,51 +24054,51 @@ uniforms.map.value = material.map; - if ( material.map !== null ) { + if (material.map !== null) { - if ( material.map.matrixAutoUpdate === true ) { + if (material.map.matrixAutoUpdate === true) { material.map.updateMatrix(); } - uniforms.uvTransform.value.copy( material.map.matrix ); + uniforms.uvTransform.value.copy(material.map.matrix); } } - function refreshUniformsSprites( uniforms, material ) { + function refreshUniformsSprites(uniforms, material) { uniforms.diffuse.value = material.color; uniforms.opacity.value = material.opacity; uniforms.rotation.value = material.rotation; uniforms.map.value = material.map; - if ( material.map !== null ) { + if (material.map !== null) { - if ( material.map.matrixAutoUpdate === true ) { + if (material.map.matrixAutoUpdate === true) { material.map.updateMatrix(); } - uniforms.uvTransform.value.copy( material.map.matrix ); + uniforms.uvTransform.value.copy(material.map.matrix); } } - function refreshUniformsFog( uniforms, fog ) { + function refreshUniformsFog(uniforms, fog) { uniforms.fogColor.value = fog.color; - if ( fog.isFog ) { + if (fog.isFog) { uniforms.fogNear.value = fog.near; uniforms.fogFar.value = fog.far; - } else if ( fog.isFogExp2 ) { + } else if (fog.isFogExp2) { uniforms.fogDensity.value = fog.density; @@ -24093,9 +24106,9 @@ } - function refreshUniformsLambert( uniforms, material ) { + function refreshUniformsLambert(uniforms, material) { - if ( material.emissiveMap ) { + if (material.emissiveMap) { uniforms.emissiveMap.value = material.emissiveMap; @@ -24103,34 +24116,34 @@ } - function refreshUniformsPhong( uniforms, material ) { + function refreshUniformsPhong(uniforms, material) { uniforms.specular.value = material.specular; - uniforms.shininess.value = Math.max( material.shininess, 1e-4 ); // to prevent pow( 0.0, 0.0 ) + uniforms.shininess.value = Math.max(material.shininess, 1e-4); // to prevent pow( 0.0, 0.0 ) - if ( material.emissiveMap ) { + if (material.emissiveMap) { uniforms.emissiveMap.value = material.emissiveMap; } - if ( material.bumpMap ) { + if (material.bumpMap) { uniforms.bumpMap.value = material.bumpMap; uniforms.bumpScale.value = material.bumpScale; - if ( material.side === BackSide ) uniforms.bumpScale.value *= - 1; + if (material.side === BackSide) uniforms.bumpScale.value *= - 1; } - if ( material.normalMap ) { + if (material.normalMap) { uniforms.normalMap.value = material.normalMap; - uniforms.normalScale.value.copy( material.normalScale ); - if ( material.side === BackSide ) uniforms.normalScale.value.negate(); + uniforms.normalScale.value.copy(material.normalScale); + if (material.side === BackSide) uniforms.normalScale.value.negate(); } - if ( material.displacementMap ) { + if (material.displacementMap) { uniforms.displacementMap.value = material.displacementMap; uniforms.displacementScale.value = material.displacementScale; @@ -24140,11 +24153,11 @@ } - function refreshUniformsToon( uniforms, material ) { + function refreshUniformsToon(uniforms, material) { - refreshUniformsPhong( uniforms, material ); + refreshUniformsPhong(uniforms, material); - if ( material.gradientMap ) { + if (material.gradientMap) { uniforms.gradientMap.value = material.gradientMap; @@ -24152,46 +24165,46 @@ } - function refreshUniformsStandard( uniforms, material ) { + function refreshUniformsStandard(uniforms, material) { uniforms.roughness.value = material.roughness; uniforms.metalness.value = material.metalness; - if ( material.roughnessMap ) { + if (material.roughnessMap) { uniforms.roughnessMap.value = material.roughnessMap; } - if ( material.metalnessMap ) { + if (material.metalnessMap) { uniforms.metalnessMap.value = material.metalnessMap; } - if ( material.emissiveMap ) { + if (material.emissiveMap) { uniforms.emissiveMap.value = material.emissiveMap; } - if ( material.bumpMap ) { + if (material.bumpMap) { uniforms.bumpMap.value = material.bumpMap; uniforms.bumpScale.value = material.bumpScale; - if ( material.side === BackSide ) uniforms.bumpScale.value *= - 1; + if (material.side === BackSide) uniforms.bumpScale.value *= - 1; } - if ( material.normalMap ) { + if (material.normalMap) { uniforms.normalMap.value = material.normalMap; - uniforms.normalScale.value.copy( material.normalScale ); - if ( material.side === BackSide ) uniforms.normalScale.value.negate(); + uniforms.normalScale.value.copy(material.normalScale); + if (material.side === BackSide) uniforms.normalScale.value.negate(); } - if ( material.displacementMap ) { + if (material.displacementMap) { uniforms.displacementMap.value = material.displacementMap; uniforms.displacementScale.value = material.displacementScale; @@ -24199,7 +24212,7 @@ } - if ( material.envMap ) { + if (material.envMap) { //uniforms.envMap.value = material.envMap; // part of uniforms common uniforms.envMapIntensity.value = material.envMapIntensity; @@ -24208,9 +24221,9 @@ } - function refreshUniformsPhysical( uniforms, material ) { + function refreshUniformsPhysical(uniforms, material) { - refreshUniformsStandard( uniforms, material ); + refreshUniformsStandard(uniforms, material); uniforms.reflectivity.value = material.reflectivity; // also part of uniforms common @@ -24219,31 +24232,31 @@ } - function refreshUniformsMatcap( uniforms, material ) { + function refreshUniformsMatcap(uniforms, material) { - if ( material.matcap ) { + if (material.matcap) { uniforms.matcap.value = material.matcap; } - if ( material.bumpMap ) { + if (material.bumpMap) { uniforms.bumpMap.value = material.bumpMap; uniforms.bumpScale.value = material.bumpScale; - if ( material.side === BackSide ) uniforms.bumpScale.value *= - 1; + if (material.side === BackSide) uniforms.bumpScale.value *= - 1; } - if ( material.normalMap ) { + if (material.normalMap) { uniforms.normalMap.value = material.normalMap; - uniforms.normalScale.value.copy( material.normalScale ); - if ( material.side === BackSide ) uniforms.normalScale.value.negate(); + uniforms.normalScale.value.copy(material.normalScale); + if (material.side === BackSide) uniforms.normalScale.value.negate(); } - if ( material.displacementMap ) { + if (material.displacementMap) { uniforms.displacementMap.value = material.displacementMap; uniforms.displacementScale.value = material.displacementScale; @@ -24253,9 +24266,9 @@ } - function refreshUniformsDepth( uniforms, material ) { + function refreshUniformsDepth(uniforms, material) { - if ( material.displacementMap ) { + if (material.displacementMap) { uniforms.displacementMap.value = material.displacementMap; uniforms.displacementScale.value = material.displacementScale; @@ -24265,9 +24278,9 @@ } - function refreshUniformsDistance( uniforms, material ) { + function refreshUniformsDistance(uniforms, material) { - if ( material.displacementMap ) { + if (material.displacementMap) { uniforms.displacementMap.value = material.displacementMap; uniforms.displacementScale.value = material.displacementScale; @@ -24275,31 +24288,31 @@ } - uniforms.referencePosition.value.copy( material.referencePosition ); + uniforms.referencePosition.value.copy(material.referencePosition); uniforms.nearDistance.value = material.nearDistance; uniforms.farDistance.value = material.farDistance; } - function refreshUniformsNormal( uniforms, material ) { + function refreshUniformsNormal(uniforms, material) { - if ( material.bumpMap ) { + if (material.bumpMap) { uniforms.bumpMap.value = material.bumpMap; uniforms.bumpScale.value = material.bumpScale; - if ( material.side === BackSide ) uniforms.bumpScale.value *= - 1; + if (material.side === BackSide) uniforms.bumpScale.value *= - 1; } - if ( material.normalMap ) { + if (material.normalMap) { uniforms.normalMap.value = material.normalMap; - uniforms.normalScale.value.copy( material.normalScale ); - if ( material.side === BackSide ) uniforms.normalScale.value.negate(); + uniforms.normalScale.value.copy(material.normalScale); + if (material.side === BackSide) uniforms.normalScale.value.negate(); } - if ( material.displacementMap ) { + if (material.displacementMap) { uniforms.displacementMap.value = material.displacementMap; uniforms.displacementScale.value = material.displacementScale; @@ -24311,7 +24324,7 @@ // If uniforms are marked as clean, they don't need to be loaded to the GPU. - function markUniformsLightsNeedsUpdate( uniforms, value ) { + function markUniformsLightsNeedsUpdate(uniforms, value) { uniforms.ambientLightColor.needsUpdate = value; @@ -24329,9 +24342,9 @@ var textureUnit = _usedTextureUnits; - if ( textureUnit >= capabilities.maxTextures ) { + if (textureUnit >= capabilities.maxTextures) { - console.warn( 'THREE.WebGLRenderer: Trying to use ' + textureUnit + ' texture units while this GPU supports only ' + capabilities.maxTextures ); + console.warn('THREE.WebGLRenderer: Trying to use ' + textureUnit + ' texture units while this GPU supports only ' + capabilities.maxTextures); } @@ -24344,18 +24357,18 @@ this.allocTextureUnit = allocTextureUnit; // this.setTexture2D = setTexture2D; - this.setTexture2D = ( function () { + this.setTexture2D = (function () { var warned = false; // backwards compatibility: peel texture.texture - return function setTexture2D( texture, slot ) { + return function setTexture2D(texture, slot) { - if ( texture && texture.isWebGLRenderTarget ) { + if (texture && texture.isWebGLRenderTarget) { - if ( ! warned ) { + if (!warned) { - console.warn( "THREE.WebGLRenderer.setTexture2D: don't use render targets as textures. Use their .texture property instead." ); + console.warn("THREE.WebGLRenderer.setTexture2D: don't use render targets as textures. Use their .texture property instead."); warned = true; } @@ -24364,54 +24377,54 @@ } - textures.setTexture2D( texture, slot ); + textures.setTexture2D(texture, slot); }; - }() ); + }()); - this.setTexture3D = ( function () { + this.setTexture3D = (function () { // backwards compatibility: peel texture.texture - return function setTexture3D( texture, slot ) { + return function setTexture3D(texture, slot) { - textures.setTexture3D( texture, slot ); + textures.setTexture3D(texture, slot); }; - }() ); + }()); - this.setTexture = ( function () { + this.setTexture = (function () { var warned = false; - return function setTexture( texture, slot ) { + return function setTexture(texture, slot) { - if ( ! warned ) { + if (!warned) { - console.warn( "THREE.WebGLRenderer: .setTexture is deprecated, use setTexture2D instead." ); + console.warn("THREE.WebGLRenderer: .setTexture is deprecated, use setTexture2D instead."); warned = true; } - textures.setTexture2D( texture, slot ); + textures.setTexture2D(texture, slot); }; - }() ); + }()); - this.setTextureCube = ( function () { + this.setTextureCube = (function () { var warned = false; - return function setTextureCube( texture, slot ) { + return function setTextureCube(texture, slot) { // backwards compatibility: peel texture.texture - if ( texture && texture.isWebGLRenderTargetCube ) { + if (texture && texture.isWebGLRenderTargetCube) { - if ( ! warned ) { + if (!warned) { - console.warn( "THREE.WebGLRenderer.setTextureCube: don't use cube render targets as textures. Use their .texture property instead." ); + console.warn("THREE.WebGLRenderer.setTextureCube: don't use cube render targets as textures. Use their .texture property instead."); warned = true; } @@ -24422,29 +24435,29 @@ // currently relying on the fact that WebGLRenderTargetCube.texture is a Texture and NOT a CubeTexture // TODO: unify these code paths - if ( ( texture && texture.isCubeTexture ) || - ( Array.isArray( texture.image ) && texture.image.length === 6 ) ) { + if ((texture && texture.isCubeTexture) || + (Array.isArray(texture.image) && texture.image.length === 6)) { // CompressedTexture can have Array in image :/ // this function alone should take care of cube textures - textures.setTextureCube( texture, slot ); + textures.setTextureCube(texture, slot); } else { // assumed: texture property of THREE.WebGLRenderTargetCube - textures.setTextureCubeDynamic( texture, slot ); + textures.setTextureCubeDynamic(texture, slot); } }; - }() ); + }()); // - this.setFramebuffer = function ( value ) { + this.setFramebuffer = function (value) { _framebuffer = value; @@ -24456,26 +24469,26 @@ }; - this.setRenderTarget = function ( renderTarget ) { + this.setRenderTarget = function (renderTarget) { _currentRenderTarget = renderTarget; - if ( renderTarget && properties.get( renderTarget ).__webglFramebuffer === undefined ) { + if (renderTarget && properties.get(renderTarget).__webglFramebuffer === undefined) { - textures.setupRenderTarget( renderTarget ); + textures.setupRenderTarget(renderTarget); } var framebuffer = _framebuffer; var isCube = false; - if ( renderTarget ) { + if (renderTarget) { - var __webglFramebuffer = properties.get( renderTarget ).__webglFramebuffer; + var __webglFramebuffer = properties.get(renderTarget).__webglFramebuffer; - if ( renderTarget.isWebGLRenderTargetCube ) { + if (renderTarget.isWebGLRenderTargetCube) { - framebuffer = __webglFramebuffer[ renderTarget.activeCubeFace ]; + framebuffer = __webglFramebuffer[renderTarget.activeCubeFace]; isCube = true; } else { @@ -24484,56 +24497,56 @@ } - _currentViewport.copy( renderTarget.viewport ); - _currentScissor.copy( renderTarget.scissor ); + _currentViewport.copy(renderTarget.viewport); + _currentScissor.copy(renderTarget.scissor); _currentScissorTest = renderTarget.scissorTest; } else { - _currentViewport.copy( _viewport ).multiplyScalar( _pixelRatio ); - _currentScissor.copy( _scissor ).multiplyScalar( _pixelRatio ); + _currentViewport.copy(_viewport).multiplyScalar(_pixelRatio); + _currentScissor.copy(_scissor).multiplyScalar(_pixelRatio); _currentScissorTest = _scissorTest; } - if ( _currentFramebuffer !== framebuffer ) { + if (_currentFramebuffer !== framebuffer) { - _gl.bindFramebuffer( 36160, framebuffer ); + _gl.bindFramebuffer(36160, framebuffer); _currentFramebuffer = framebuffer; } - state.viewport( _currentViewport ); - state.scissor( _currentScissor ); - state.setScissorTest( _currentScissorTest ); + state.viewport(_currentViewport); + state.scissor(_currentScissor); + state.setScissorTest(_currentScissorTest); - if ( isCube ) { + if (isCube) { - var textureProperties = properties.get( renderTarget.texture ); - _gl.framebufferTexture2D( 36160, 36064, 34069 + renderTarget.activeCubeFace, textureProperties.__webglTexture, renderTarget.activeMipMapLevel ); + var textureProperties = properties.get(renderTarget.texture); + _gl.framebufferTexture2D(36160, 36064, 34069 + renderTarget.activeCubeFace, textureProperties.__webglTexture, renderTarget.activeMipMapLevel); } }; - this.readRenderTargetPixels = function ( renderTarget, x, y, width, height, buffer ) { + this.readRenderTargetPixels = function (renderTarget, x, y, width, height, buffer) { - if ( ! ( renderTarget && renderTarget.isWebGLRenderTarget ) ) { + if (!(renderTarget && renderTarget.isWebGLRenderTarget)) { - console.error( 'THREE.WebGLRenderer.readRenderTargetPixels: renderTarget is not THREE.WebGLRenderTarget.' ); + console.error('THREE.WebGLRenderer.readRenderTargetPixels: renderTarget is not THREE.WebGLRenderTarget.'); return; } - var framebuffer = properties.get( renderTarget ).__webglFramebuffer; + var framebuffer = properties.get(renderTarget).__webglFramebuffer; - if ( framebuffer ) { + if (framebuffer) { var restore = false; - if ( framebuffer !== _currentFramebuffer ) { + if (framebuffer !== _currentFramebuffer) { - _gl.bindFramebuffer( 36160, framebuffer ); + _gl.bindFramebuffer(36160, framebuffer); restore = true; @@ -24545,43 +24558,43 @@ var textureFormat = texture.format; var textureType = texture.type; - if ( textureFormat !== RGBAFormat && utils.convert( textureFormat ) !== _gl.getParameter( 35739 ) ) { + if (textureFormat !== RGBAFormat && utils.convert(textureFormat) !== _gl.getParameter(35739)) { - console.error( 'THREE.WebGLRenderer.readRenderTargetPixels: renderTarget is not in RGBA or implementation defined format.' ); + console.error('THREE.WebGLRenderer.readRenderTargetPixels: renderTarget is not in RGBA or implementation defined format.'); return; } - if ( textureType !== UnsignedByteType && utils.convert( textureType ) !== _gl.getParameter( 35738 ) && // IE11, Edge and Chrome Mac < 52 (#9513) - ! ( textureType === FloatType && ( capabilities.isWebGL2 || extensions.get( 'OES_texture_float' ) || extensions.get( 'WEBGL_color_buffer_float' ) ) ) && // Chrome Mac >= 52 and Firefox - ! ( textureType === HalfFloatType && ( capabilities.isWebGL2 ? extensions.get( 'EXT_color_buffer_float' ) : extensions.get( 'EXT_color_buffer_half_float' ) ) ) ) { + if (textureType !== UnsignedByteType && utils.convert(textureType) !== _gl.getParameter(35738) && // IE11, Edge and Chrome Mac < 52 (#9513) + !(textureType === FloatType && (capabilities.isWebGL2 || extensions.get('OES_texture_float') || extensions.get('WEBGL_color_buffer_float'))) && // Chrome Mac >= 52 and Firefox + !(textureType === HalfFloatType && (capabilities.isWebGL2 ? extensions.get('EXT_color_buffer_float') : extensions.get('EXT_color_buffer_half_float')))) { - console.error( 'THREE.WebGLRenderer.readRenderTargetPixels: renderTarget is not in UnsignedByteType or implementation defined type.' ); + console.error('THREE.WebGLRenderer.readRenderTargetPixels: renderTarget is not in UnsignedByteType or implementation defined type.'); return; } - if ( _gl.checkFramebufferStatus( 36160 ) === 36053 ) { + if (_gl.checkFramebufferStatus(36160) === 36053) { // the following if statement ensures valid read requests (no out-of-bounds pixels, see #8604) - if ( ( x >= 0 && x <= ( renderTarget.width - width ) ) && ( y >= 0 && y <= ( renderTarget.height - height ) ) ) { + if ((x >= 0 && x <= (renderTarget.width - width)) && (y >= 0 && y <= (renderTarget.height - height))) { - _gl.readPixels( x, y, width, height, utils.convert( textureFormat ), utils.convert( textureType ), buffer ); + _gl.readPixels(x, y, width, height, utils.convert(textureFormat), utils.convert(textureType), buffer); } } else { - console.error( 'THREE.WebGLRenderer.readRenderTargetPixels: readPixels from renderTarget failed. Framebuffer not complete.' ); + console.error('THREE.WebGLRenderer.readRenderTargetPixels: readPixels from renderTarget failed. Framebuffer not complete.'); } } finally { - if ( restore ) { + if (restore) { - _gl.bindFramebuffer( 36160, _currentFramebuffer ); + _gl.bindFramebuffer(36160, _currentFramebuffer); } @@ -24591,34 +24604,34 @@ }; - this.copyFramebufferToTexture = function ( position, texture, level ) { + this.copyFramebufferToTexture = function (position, texture, level) { var width = texture.image.width; var height = texture.image.height; - var glFormat = utils.convert( texture.format ); + var glFormat = utils.convert(texture.format); - this.setTexture2D( texture, 0 ); + this.setTexture2D(texture, 0); - _gl.copyTexImage2D( 3553, level || 0, glFormat, position.x, position.y, width, height, 0 ); + _gl.copyTexImage2D(3553, level || 0, glFormat, position.x, position.y, width, height, 0); }; - this.copyTextureToTexture = function ( position, srcTexture, dstTexture, level ) { + this.copyTextureToTexture = function (position, srcTexture, dstTexture, level) { var width = srcTexture.image.width; var height = srcTexture.image.height; - var glFormat = utils.convert( dstTexture.format ); - var glType = utils.convert( dstTexture.type ); + var glFormat = utils.convert(dstTexture.format); + var glType = utils.convert(dstTexture.type); - this.setTexture2D( dstTexture, 0 ); + this.setTexture2D(dstTexture, 0); - if ( srcTexture.isDataTexture ) { + if (srcTexture.isDataTexture) { - _gl.texSubImage2D( 3553, level || 0, position.x, position.y, width, height, glFormat, glType, srcTexture.image.data ); + _gl.texSubImage2D(3553, level || 0, position.x, position.y, width, height, glFormat, glType, srcTexture.image.data); } else { - _gl.texSubImage2D( 3553, level || 0, position.x, position.y, glFormat, glType, srcTexture.image ); + _gl.texSubImage2D(3553, level || 0, position.x, position.y, glFormat, glType, srcTexture.image); } @@ -24631,12 +24644,12 @@ * @author alteredq / http://alteredqualia.com/ */ - function FogExp2( color, density ) { + function FogExp2(color, density) { this.name = ''; - this.color = new Color( color ); - this.density = ( density !== undefined ) ? density : 0.00025; + this.color = new Color(color); + this.density = (density !== undefined) ? density : 0.00025; } @@ -24644,11 +24657,11 @@ FogExp2.prototype.clone = function () { - return new FogExp2( this.color, this.density ); + return new FogExp2(this.color, this.density); }; - FogExp2.prototype.toJSON = function ( /* meta */ ) { + FogExp2.prototype.toJSON = function ( /* meta */) { return { type: 'FogExp2', @@ -24663,14 +24676,14 @@ * @author alteredq / http://alteredqualia.com/ */ - function Fog( color, near, far ) { + function Fog(color, near, far) { this.name = ''; - this.color = new Color( color ); + this.color = new Color(color); - this.near = ( near !== undefined ) ? near : 1; - this.far = ( far !== undefined ) ? far : 1000; + this.near = (near !== undefined) ? near : 1; + this.far = (far !== undefined) ? far : 1000; } @@ -24678,11 +24691,11 @@ Fog.prototype.clone = function () { - return new Fog( this.color, this.near, this.far ); + return new Fog(this.color, this.near, this.far); }; - Fog.prototype.toJSON = function ( /* meta */ ) { + Fog.prototype.toJSON = function ( /* meta */) { return { type: 'Fog', @@ -24699,7 +24712,7 @@ function Scene() { - Object3D.call( this ); + Object3D.call(this); this.type = 'Scene'; @@ -24711,17 +24724,17 @@ } - Scene.prototype = Object.assign( Object.create( Object3D.prototype ), { + Scene.prototype = Object.assign(Object.create(Object3D.prototype), { constructor: Scene, - copy: function ( source, recursive ) { + copy: function (source, recursive) { - Object3D.prototype.copy.call( this, source, recursive ); + Object3D.prototype.copy.call(this, source, recursive); - if ( source.background !== null ) this.background = source.background.clone(); - if ( source.fog !== null ) this.fog = source.fog.clone(); - if ( source.overrideMaterial !== null ) this.overrideMaterial = source.overrideMaterial.clone(); + if (source.background !== null) this.background = source.background.clone(); + if (source.fog !== null) this.fog = source.fog.clone(); + if (source.overrideMaterial !== null) this.overrideMaterial = source.overrideMaterial.clone(); this.autoUpdate = source.autoUpdate; this.matrixAutoUpdate = source.matrixAutoUpdate; @@ -24730,24 +24743,24 @@ }, - toJSON: function ( meta ) { + toJSON: function (meta) { - var data = Object3D.prototype.toJSON.call( this, meta ); + var data = Object3D.prototype.toJSON.call(this, meta); - if ( this.background !== null ) data.object.background = this.background.toJSON( meta ); - if ( this.fog !== null ) data.object.fog = this.fog.toJSON(); + if (this.background !== null) data.object.background = this.background.toJSON(meta); + if (this.fog !== null) data.object.fog = this.fog.toJSON(); return data; } - } ); + }); /** * @author benaadams / https://twitter.com/ben_a_adams */ - function InterleavedBuffer( array, stride ) { + function InterleavedBuffer(array, stride) { this.array = array; this.stride = stride; @@ -24760,27 +24773,27 @@ } - Object.defineProperty( InterleavedBuffer.prototype, 'needsUpdate', { + Object.defineProperty(InterleavedBuffer.prototype, 'needsUpdate', { - set: function ( value ) { + set: function (value) { - if ( value === true ) this.version ++; + if (value === true) this.version++; } - } ); + }); - Object.assign( InterleavedBuffer.prototype, { + Object.assign(InterleavedBuffer.prototype, { isInterleavedBuffer: true, - onUploadCallback: function () {}, + onUploadCallback: function () { }, - setArray: function ( array ) { + setArray: function (array) { - if ( Array.isArray( array ) ) { + if (Array.isArray(array)) { - throw new TypeError( 'THREE.BufferAttribute: array should be a Typed Array.' ); + throw new TypeError('THREE.BufferAttribute: array should be a Typed Array.'); } @@ -24791,7 +24804,7 @@ }, - setDynamic: function ( value ) { + setDynamic: function (value) { this.dynamic = value; @@ -24799,9 +24812,9 @@ }, - copy: function ( source ) { + copy: function (source) { - this.array = new source.array.constructor( source.array ); + this.array = new source.array.constructor(source.array); this.count = source.count; this.stride = source.stride; this.dynamic = source.dynamic; @@ -24810,14 +24823,14 @@ }, - copyAt: function ( index1, attribute, index2 ) { + copyAt: function (index1, attribute, index2) { index1 *= this.stride; index2 *= attribute.stride; - for ( var i = 0, l = this.stride; i < l; i ++ ) { + for (var i = 0, l = this.stride; i < l; i++) { - this.array[ index1 + i ] = attribute.array[ index2 + i ]; + this.array[index1 + i] = attribute.array[index2 + i]; } @@ -24825,11 +24838,11 @@ }, - set: function ( value, offset ) { + set: function (value, offset) { - if ( offset === undefined ) offset = 0; + if (offset === undefined) offset = 0; - this.array.set( value, offset ); + this.array.set(value, offset); return this; @@ -24837,11 +24850,11 @@ clone: function () { - return new this.constructor().copy( this ); + return new this.constructor().copy(this); }, - onUpload: function ( callback ) { + onUpload: function (callback) { this.onUploadCallback = callback; @@ -24849,13 +24862,13 @@ } - } ); + }); /** * @author benaadams / https://twitter.com/ben_a_adams */ - function InterleavedBufferAttribute( interleavedBuffer, itemSize, offset, normalized ) { + function InterleavedBufferAttribute(interleavedBuffer, itemSize, offset, normalized) { this.data = interleavedBuffer; this.itemSize = itemSize; @@ -24865,7 +24878,7 @@ } - Object.defineProperties( InterleavedBufferAttribute.prototype, { + Object.defineProperties(InterleavedBufferAttribute.prototype, { count: { @@ -24887,105 +24900,105 @@ } - } ); + }); - Object.assign( InterleavedBufferAttribute.prototype, { + Object.assign(InterleavedBufferAttribute.prototype, { isInterleavedBufferAttribute: true, - setX: function ( index, x ) { + setX: function (index, x) { - this.data.array[ index * this.data.stride + this.offset ] = x; + this.data.array[index * this.data.stride + this.offset] = x; return this; }, - setY: function ( index, y ) { + setY: function (index, y) { - this.data.array[ index * this.data.stride + this.offset + 1 ] = y; + this.data.array[index * this.data.stride + this.offset + 1] = y; return this; }, - setZ: function ( index, z ) { + setZ: function (index, z) { - this.data.array[ index * this.data.stride + this.offset + 2 ] = z; + this.data.array[index * this.data.stride + this.offset + 2] = z; return this; }, - setW: function ( index, w ) { + setW: function (index, w) { - this.data.array[ index * this.data.stride + this.offset + 3 ] = w; + this.data.array[index * this.data.stride + this.offset + 3] = w; return this; }, - getX: function ( index ) { + getX: function (index) { - return this.data.array[ index * this.data.stride + this.offset ]; + return this.data.array[index * this.data.stride + this.offset]; }, - getY: function ( index ) { + getY: function (index) { - return this.data.array[ index * this.data.stride + this.offset + 1 ]; + return this.data.array[index * this.data.stride + this.offset + 1]; }, - getZ: function ( index ) { + getZ: function (index) { - return this.data.array[ index * this.data.stride + this.offset + 2 ]; + return this.data.array[index * this.data.stride + this.offset + 2]; }, - getW: function ( index ) { + getW: function (index) { - return this.data.array[ index * this.data.stride + this.offset + 3 ]; + return this.data.array[index * this.data.stride + this.offset + 3]; }, - setXY: function ( index, x, y ) { + setXY: function (index, x, y) { index = index * this.data.stride + this.offset; - this.data.array[ index + 0 ] = x; - this.data.array[ index + 1 ] = y; + this.data.array[index + 0] = x; + this.data.array[index + 1] = y; return this; }, - setXYZ: function ( index, x, y, z ) { + setXYZ: function (index, x, y, z) { index = index * this.data.stride + this.offset; - this.data.array[ index + 0 ] = x; - this.data.array[ index + 1 ] = y; - this.data.array[ index + 2 ] = z; + this.data.array[index + 0] = x; + this.data.array[index + 1] = y; + this.data.array[index + 2] = z; return this; }, - setXYZW: function ( index, x, y, z, w ) { + setXYZW: function (index, x, y, z, w) { index = index * this.data.stride + this.offset; - this.data.array[ index + 0 ] = x; - this.data.array[ index + 1 ] = y; - this.data.array[ index + 2 ] = z; - this.data.array[ index + 3 ] = w; + this.data.array[index + 0] = x; + this.data.array[index + 1] = y; + this.data.array[index + 2] = z; + this.data.array[index + 3] = w; return this; } - } ); + }); /** * @author alteredq / http://alteredqualia.com/ @@ -24998,13 +25011,13 @@ * } */ - function SpriteMaterial( parameters ) { + function SpriteMaterial(parameters) { - Material.call( this ); + Material.call(this); this.type = 'SpriteMaterial'; - this.color = new Color( 0xffffff ); + this.color = new Color(0xffffff); this.map = null; this.rotation = 0; @@ -25014,19 +25027,19 @@ this.lights = false; this.transparent = true; - this.setValues( parameters ); + this.setValues(parameters); } - SpriteMaterial.prototype = Object.create( Material.prototype ); + SpriteMaterial.prototype = Object.create(Material.prototype); SpriteMaterial.prototype.constructor = SpriteMaterial; SpriteMaterial.prototype.isSpriteMaterial = true; - SpriteMaterial.prototype.copy = function ( source ) { + SpriteMaterial.prototype.copy = function (source) { - Material.prototype.copy.call( this, source ); + Material.prototype.copy.call(this, source); - this.color.copy( source.color ); + this.color.copy(source.color); this.map = source.map; this.rotation = source.rotation; @@ -25044,45 +25057,45 @@ var geometry; - function Sprite( material ) { + function Sprite(material) { - Object3D.call( this ); + Object3D.call(this); this.type = 'Sprite'; - if ( geometry === undefined ) { + if (geometry === undefined) { geometry = new BufferGeometry(); - var float32Array = new Float32Array( [ + var float32Array = new Float32Array([ - 0.5, - 0.5, 0, 0, 0, 0.5, - 0.5, 0, 1, 0, 0.5, 0.5, 0, 1, 1, - 0.5, 0.5, 0, 0, 1 - ] ); + ]); - var interleavedBuffer = new InterleavedBuffer( float32Array, 5 ); + var interleavedBuffer = new InterleavedBuffer(float32Array, 5); - geometry.setIndex( [ 0, 1, 2, 0, 2, 3 ] ); - geometry.addAttribute( 'position', new InterleavedBufferAttribute( interleavedBuffer, 3, 0, false ) ); - geometry.addAttribute( 'uv', new InterleavedBufferAttribute( interleavedBuffer, 2, 3, false ) ); + geometry.setIndex([0, 1, 2, 0, 2, 3]); + geometry.addAttribute('position', new InterleavedBufferAttribute(interleavedBuffer, 3, 0, false)); + geometry.addAttribute('uv', new InterleavedBufferAttribute(interleavedBuffer, 2, 3, false)); } this.geometry = geometry; - this.material = ( material !== undefined ) ? material : new SpriteMaterial(); + this.material = (material !== undefined) ? material : new SpriteMaterial(); - this.center = new Vector2( 0.5, 0.5 ); + this.center = new Vector2(0.5, 0.5); } - Sprite.prototype = Object.assign( Object.create( Object3D.prototype ), { + Sprite.prototype = Object.assign(Object.create(Object3D.prototype), { constructor: Sprite, isSprite: true, - raycast: ( function () { + raycast: (function () { var intersectPoint = new Vector3(); var worldScale = new Vector3(); @@ -25100,69 +25113,69 @@ var uvB = new Vector2(); var uvC = new Vector2(); - function transformVertex( vertexPosition, mvPosition, center, scale, sin, cos ) { + function transformVertex(vertexPosition, mvPosition, center, scale, sin, cos) { // compute position in camera space - alignedPosition.subVectors( vertexPosition, center ).addScalar( 0.5 ).multiply( scale ); + alignedPosition.subVectors(vertexPosition, center).addScalar(0.5).multiply(scale); // to check if rotation is not zero - if ( sin !== undefined ) { + if (sin !== undefined) { - rotatedPosition.x = ( cos * alignedPosition.x ) - ( sin * alignedPosition.y ); - rotatedPosition.y = ( sin * alignedPosition.x ) + ( cos * alignedPosition.y ); + rotatedPosition.x = (cos * alignedPosition.x) - (sin * alignedPosition.y); + rotatedPosition.y = (sin * alignedPosition.x) + (cos * alignedPosition.y); } else { - rotatedPosition.copy( alignedPosition ); + rotatedPosition.copy(alignedPosition); } - vertexPosition.copy( mvPosition ); + vertexPosition.copy(mvPosition); vertexPosition.x += rotatedPosition.x; vertexPosition.y += rotatedPosition.y; // transform to world space - vertexPosition.applyMatrix4( viewWorldMatrix ); + vertexPosition.applyMatrix4(viewWorldMatrix); } - return function raycast( raycaster, intersects ) { + return function raycast(raycaster, intersects) { - worldScale.setFromMatrixScale( this.matrixWorld ); - viewWorldMatrix.getInverse( this.modelViewMatrix ).premultiply( this.matrixWorld ); - mvPosition.setFromMatrixPosition( this.modelViewMatrix ); + worldScale.setFromMatrixScale(this.matrixWorld); + viewWorldMatrix.getInverse(this.modelViewMatrix).premultiply(this.matrixWorld); + mvPosition.setFromMatrixPosition(this.modelViewMatrix); var rotation = this.material.rotation; var sin, cos; - if ( rotation !== 0 ) { + if (rotation !== 0) { - cos = Math.cos( rotation ); - sin = Math.sin( rotation ); + cos = Math.cos(rotation); + sin = Math.sin(rotation); } var center = this.center; - transformVertex( vA.set( - 0.5, - 0.5, 0 ), mvPosition, center, worldScale, sin, cos ); - transformVertex( vB.set( 0.5, - 0.5, 0 ), mvPosition, center, worldScale, sin, cos ); - transformVertex( vC.set( 0.5, 0.5, 0 ), mvPosition, center, worldScale, sin, cos ); + transformVertex(vA.set(- 0.5, - 0.5, 0), mvPosition, center, worldScale, sin, cos); + transformVertex(vB.set(0.5, - 0.5, 0), mvPosition, center, worldScale, sin, cos); + transformVertex(vC.set(0.5, 0.5, 0), mvPosition, center, worldScale, sin, cos); - uvA.set( 0, 0 ); - uvB.set( 1, 0 ); - uvC.set( 1, 1 ); + uvA.set(0, 0); + uvB.set(1, 0); + uvC.set(1, 1); // check first triangle - var intersect = raycaster.ray.intersectTriangle( vA, vB, vC, false, intersectPoint ); + var intersect = raycaster.ray.intersectTriangle(vA, vB, vC, false, intersectPoint); - if ( intersect === null ) { + if (intersect === null) { // check second triangle - transformVertex( vB.set( - 0.5, 0.5, 0 ), mvPosition, center, worldScale, sin, cos ); - uvB.set( 0, 1 ); + transformVertex(vB.set(- 0.5, 0.5, 0), mvPosition, center, worldScale, sin, cos); + uvB.set(0, 1); - intersect = raycaster.ray.intersectTriangle( vA, vC, vB, false, intersectPoint ); - if ( intersect === null ) { + intersect = raycaster.ray.intersectTriangle(vA, vC, vB, false, intersectPoint); + if (intersect === null) { return; @@ -25170,42 +25183,42 @@ } - var distance = raycaster.ray.origin.distanceTo( intersectPoint ); + var distance = raycaster.ray.origin.distanceTo(intersectPoint); - if ( distance < raycaster.near || distance > raycaster.far ) return; + if (distance < raycaster.near || distance > raycaster.far) return; - intersects.push( { + intersects.push({ distance: distance, point: intersectPoint.clone(), - uv: Triangle.getUV( intersectPoint, vA, vB, vC, uvA, uvB, uvC, new Vector2() ), + uv: Triangle.getUV(intersectPoint, vA, vB, vC, uvA, uvB, uvC, new Vector2()), face: null, object: this - } ); + }); }; - }() ), + }()), clone: function () { - return new this.constructor( this.material ).copy( this ); + return new this.constructor(this.material).copy(this); }, - copy: function ( source ) { + copy: function (source) { - Object3D.prototype.copy.call( this, source ); + Object3D.prototype.copy.call(this, source); - if ( source.center !== undefined ) this.center.copy( source.center ); + if (source.center !== undefined) this.center.copy(source.center); return this; } - } ); + }); /** * @author mikael emtinger / http://gomo.se/ @@ -25215,34 +25228,34 @@ function LOD() { - Object3D.call( this ); + Object3D.call(this); this.type = 'LOD'; - Object.defineProperties( this, { + Object.defineProperties(this, { levels: { enumerable: true, value: [] } - } ); + }); } - LOD.prototype = Object.assign( Object.create( Object3D.prototype ), { + LOD.prototype = Object.assign(Object.create(Object3D.prototype), { constructor: LOD, - copy: function ( source ) { + copy: function (source) { - Object3D.prototype.copy.call( this, source, false ); + Object3D.prototype.copy.call(this, source, false); var levels = source.levels; - for ( var i = 0, l = levels.length; i < l; i ++ ) { + for (var i = 0, l = levels.length; i < l; i++) { - var level = levels[ i ]; + var level = levels[i]; - this.addLevel( level.object.clone(), level.distance ); + this.addLevel(level.object.clone(), level.distance); } @@ -25250,17 +25263,17 @@ }, - addLevel: function ( object, distance ) { + addLevel: function (object, distance) { - if ( distance === undefined ) distance = 0; + if (distance === undefined) distance = 0; - distance = Math.abs( distance ); + distance = Math.abs(distance); var levels = this.levels; - for ( var l = 0; l < levels.length; l ++ ) { + for (var l = 0; l < levels.length; l++) { - if ( distance < levels[ l ].distance ) { + if (distance < levels[l].distance) { break; @@ -25268,19 +25281,19 @@ } - levels.splice( l, 0, { distance: distance, object: object } ); + levels.splice(l, 0, { distance: distance, object: object }); - this.add( object ); + this.add(object); }, - getObjectForDistance: function ( distance ) { + getObjectForDistance: function (distance) { var levels = this.levels; - for ( var i = 1, l = levels.length; i < l; i ++ ) { + for (var i = 1, l = levels.length; i < l; i++) { - if ( distance < levels[ i ].distance ) { + if (distance < levels[i].distance) { break; @@ -25288,50 +25301,50 @@ } - return levels[ i - 1 ].object; + return levels[i - 1].object; }, - raycast: ( function () { + raycast: (function () { var matrixPosition = new Vector3(); - return function raycast( raycaster, intersects ) { + return function raycast(raycaster, intersects) { - matrixPosition.setFromMatrixPosition( this.matrixWorld ); + matrixPosition.setFromMatrixPosition(this.matrixWorld); - var distance = raycaster.ray.origin.distanceTo( matrixPosition ); + var distance = raycaster.ray.origin.distanceTo(matrixPosition); - this.getObjectForDistance( distance ).raycast( raycaster, intersects ); + this.getObjectForDistance(distance).raycast(raycaster, intersects); }; - }() ), + }()), update: function () { var v1 = new Vector3(); var v2 = new Vector3(); - return function update( camera ) { + return function update(camera) { var levels = this.levels; - if ( levels.length > 1 ) { + if (levels.length > 1) { - v1.setFromMatrixPosition( camera.matrixWorld ); - v2.setFromMatrixPosition( this.matrixWorld ); + v1.setFromMatrixPosition(camera.matrixWorld); + v2.setFromMatrixPosition(this.matrixWorld); - var distance = v1.distanceTo( v2 ); + var distance = v1.distanceTo(v2); - levels[ 0 ].object.visible = true; + levels[0].object.visible = true; - for ( var i = 1, l = levels.length; i < l; i ++ ) { + for (var i = 1, l = levels.length; i < l; i++) { - if ( distance >= levels[ i ].distance ) { + if (distance >= levels[i].distance) { - levels[ i - 1 ].object.visible = false; - levels[ i ].object.visible = true; + levels[i - 1].object.visible = false; + levels[i].object.visible = true; } else { @@ -25341,9 +25354,9 @@ } - for ( ; i < l; i ++ ) { + for (; i < l; i++) { - levels[ i ].object.visible = false; + levels[i].object.visible = false; } @@ -25353,22 +25366,22 @@ }(), - toJSON: function ( meta ) { + toJSON: function (meta) { - var data = Object3D.prototype.toJSON.call( this, meta ); + var data = Object3D.prototype.toJSON.call(this, meta); data.object.levels = []; var levels = this.levels; - for ( var i = 0, l = levels.length; i < l; i ++ ) { + for (var i = 0, l = levels.length; i < l; i++) { - var level = levels[ i ]; + var level = levels[i]; - data.object.levels.push( { + data.object.levels.push({ object: level.object.uuid, distance: level.distance - } ); + }); } @@ -25376,7 +25389,7 @@ } - } ); + }); /** * @author mikael emtinger / http://gomo.se/ @@ -25385,36 +25398,36 @@ * @author ikerr / http://verold.com */ - function Skeleton( bones, boneInverses ) { + function Skeleton(bones, boneInverses) { // copy the bone array bones = bones || []; - this.bones = bones.slice( 0 ); - this.boneMatrices = new Float32Array( this.bones.length * 16 ); + this.bones = bones.slice(0); + this.boneMatrices = new Float32Array(this.bones.length * 16); // use the supplied bone inverses or calculate the inverses - if ( boneInverses === undefined ) { + if (boneInverses === undefined) { this.calculateInverses(); } else { - if ( this.bones.length === boneInverses.length ) { + if (this.bones.length === boneInverses.length) { - this.boneInverses = boneInverses.slice( 0 ); + this.boneInverses = boneInverses.slice(0); } else { - console.warn( 'THREE.Skeleton boneInverses is the wrong length.' ); + console.warn('THREE.Skeleton boneInverses is the wrong length.'); this.boneInverses = []; - for ( var i = 0, il = this.bones.length; i < il; i ++ ) { + for (var i = 0, il = this.bones.length; i < il; i++) { - this.boneInverses.push( new Matrix4() ); + this.boneInverses.push(new Matrix4()); } @@ -25424,23 +25437,23 @@ } - Object.assign( Skeleton.prototype, { + Object.assign(Skeleton.prototype, { calculateInverses: function () { this.boneInverses = []; - for ( var i = 0, il = this.bones.length; i < il; i ++ ) { + for (var i = 0, il = this.bones.length; i < il; i++) { var inverse = new Matrix4(); - if ( this.bones[ i ] ) { + if (this.bones[i]) { - inverse.getInverse( this.bones[ i ].matrixWorld ); + inverse.getInverse(this.bones[i].matrixWorld); } - this.boneInverses.push( inverse ); + this.boneInverses.push(inverse); } @@ -25452,13 +25465,13 @@ // recover the bind-time world matrices - for ( i = 0, il = this.bones.length; i < il; i ++ ) { + for (i = 0, il = this.bones.length; i < il; i++) { - bone = this.bones[ i ]; + bone = this.bones[i]; - if ( bone ) { + if (bone) { - bone.matrixWorld.getInverse( this.boneInverses[ i ] ); + bone.matrixWorld.getInverse(this.boneInverses[i]); } @@ -25466,24 +25479,24 @@ // compute the local matrices, positions, rotations and scales - for ( i = 0, il = this.bones.length; i < il; i ++ ) { + for (i = 0, il = this.bones.length; i < il; i++) { - bone = this.bones[ i ]; + bone = this.bones[i]; - if ( bone ) { + if (bone) { - if ( bone.parent && bone.parent.isBone ) { + if (bone.parent && bone.parent.isBone) { - bone.matrix.getInverse( bone.parent.matrixWorld ); - bone.matrix.multiply( bone.matrixWorld ); + bone.matrix.getInverse(bone.parent.matrixWorld); + bone.matrix.multiply(bone.matrixWorld); } else { - bone.matrix.copy( bone.matrixWorld ); + bone.matrix.copy(bone.matrixWorld); } - bone.matrix.decompose( bone.position, bone.quaternion, bone.scale ); + bone.matrix.decompose(bone.position, bone.quaternion, bone.scale); } @@ -25491,7 +25504,7 @@ }, - update: ( function () { + update: (function () { var offsetMatrix = new Matrix4(); var identityMatrix = new Matrix4(); @@ -25505,18 +25518,18 @@ // flatten bone matrices to array - for ( var i = 0, il = bones.length; i < il; i ++ ) { + for (var i = 0, il = bones.length; i < il; i++) { // compute the offset between the current and the original transform - var matrix = bones[ i ] ? bones[ i ].matrixWorld : identityMatrix; + var matrix = bones[i] ? bones[i].matrixWorld : identityMatrix; - offsetMatrix.multiplyMatrices( matrix, boneInverses[ i ] ); - offsetMatrix.toArray( boneMatrices, i * 16 ); + offsetMatrix.multiplyMatrices(matrix, boneInverses[i]); + offsetMatrix.toArray(boneMatrices, i * 16); } - if ( boneTexture !== undefined ) { + if (boneTexture !== undefined) { boneTexture.needsUpdate = true; @@ -25524,21 +25537,21 @@ }; - } )(), + })(), clone: function () { - return new Skeleton( this.bones, this.boneInverses ); + return new Skeleton(this.bones, this.boneInverses); }, - getBoneByName: function ( name ) { + getBoneByName: function (name) { - for ( var i = 0, il = this.bones.length; i < il; i ++ ) { + for (var i = 0, il = this.bones.length; i < il; i++) { - var bone = this.bones[ i ]; + var bone = this.bones[i]; - if ( bone.name === name ) { + if (bone.name === name) { return bone; @@ -25550,7 +25563,7 @@ } - } ); + }); /** * @author mikael emtinger / http://gomo.se/ @@ -25560,19 +25573,19 @@ function Bone() { - Object3D.call( this ); + Object3D.call(this); this.type = 'Bone'; } - Bone.prototype = Object.assign( Object.create( Object3D.prototype ), { + Bone.prototype = Object.assign(Object.create(Object3D.prototype), { constructor: Bone, isBone: true - } ); + }); /** * @author mikael emtinger / http://gomo.se/ @@ -25580,9 +25593,9 @@ * @author ikerr / http://verold.com */ - function SkinnedMesh( geometry, material ) { + function SkinnedMesh(geometry, material) { - Mesh.call( this, geometry, material ); + Mesh.call(this, geometry, material); this.type = 'SkinnedMesh'; @@ -25591,15 +25604,15 @@ this.bindMatrixInverse = new Matrix4(); var bones = this.initBones(); - var skeleton = new Skeleton( bones ); + var skeleton = new Skeleton(bones); - this.bind( skeleton, this.matrixWorld ); + this.bind(skeleton, this.matrixWorld); this.normalizeSkinWeights(); } - SkinnedMesh.prototype = Object.assign( Object.create( Mesh.prototype ), { + SkinnedMesh.prototype = Object.assign(Object.create(Mesh.prototype), { constructor: SkinnedMesh, @@ -25610,45 +25623,45 @@ var bones = [], bone, gbone; var i, il; - if ( this.geometry && this.geometry.bones !== undefined ) { + if (this.geometry && this.geometry.bones !== undefined) { // first, create array of 'Bone' objects from geometry data - for ( i = 0, il = this.geometry.bones.length; i < il; i ++ ) { + for (i = 0, il = this.geometry.bones.length; i < il; i++) { - gbone = this.geometry.bones[ i ]; + gbone = this.geometry.bones[i]; // create new 'Bone' object bone = new Bone(); - bones.push( bone ); + bones.push(bone); // apply values bone.name = gbone.name; - bone.position.fromArray( gbone.pos ); - bone.quaternion.fromArray( gbone.rotq ); - if ( gbone.scl !== undefined ) bone.scale.fromArray( gbone.scl ); + bone.position.fromArray(gbone.pos); + bone.quaternion.fromArray(gbone.rotq); + if (gbone.scl !== undefined) bone.scale.fromArray(gbone.scl); } // second, create bone hierarchy - for ( i = 0, il = this.geometry.bones.length; i < il; i ++ ) { + for (i = 0, il = this.geometry.bones.length; i < il; i++) { - gbone = this.geometry.bones[ i ]; + gbone = this.geometry.bones[i]; - if ( ( gbone.parent !== - 1 ) && ( gbone.parent !== null ) && ( bones[ gbone.parent ] !== undefined ) ) { + if ((gbone.parent !== - 1) && (gbone.parent !== null) && (bones[gbone.parent] !== undefined)) { // subsequent bones in the hierarchy - bones[ gbone.parent ].add( bones[ i ] ); + bones[gbone.parent].add(bones[i]); } else { // topmost bone, immediate child of the skinned mesh - this.add( bones[ i ] ); + this.add(bones[i]); } @@ -25659,19 +25672,19 @@ // now the bones are part of the scene graph and children of the skinned mesh. // let's update the corresponding matrices - this.updateMatrixWorld( true ); + this.updateMatrixWorld(true); return bones; }, - bind: function ( skeleton, bindMatrix ) { + bind: function (skeleton, bindMatrix) { this.skeleton = skeleton; - if ( bindMatrix === undefined ) { + if (bindMatrix === undefined) { - this.updateMatrixWorld( true ); + this.updateMatrixWorld(true); this.skeleton.calculateInverses(); @@ -25679,8 +25692,8 @@ } - this.bindMatrix.copy( bindMatrix ); - this.bindMatrixInverse.getInverse( bindMatrix ); + this.bindMatrix.copy(bindMatrix); + this.bindMatrixInverse.getInverse(bindMatrix); }, @@ -25694,52 +25707,52 @@ var scale, i; - if ( this.geometry && this.geometry.isGeometry ) { + if (this.geometry && this.geometry.isGeometry) { - for ( i = 0; i < this.geometry.skinWeights.length; i ++ ) { + for (i = 0; i < this.geometry.skinWeights.length; i++) { - var sw = this.geometry.skinWeights[ i ]; + var sw = this.geometry.skinWeights[i]; scale = 1.0 / sw.manhattanLength(); - if ( scale !== Infinity ) { + if (scale !== Infinity) { - sw.multiplyScalar( scale ); + sw.multiplyScalar(scale); } else { - sw.set( 1, 0, 0, 0 ); // do something reasonable + sw.set(1, 0, 0, 0); // do something reasonable } } - } else if ( this.geometry && this.geometry.isBufferGeometry ) { + } else if (this.geometry && this.geometry.isBufferGeometry) { var vec = new Vector4(); var skinWeight = this.geometry.attributes.skinWeight; - for ( i = 0; i < skinWeight.count; i ++ ) { + for (i = 0; i < skinWeight.count; i++) { - vec.x = skinWeight.getX( i ); - vec.y = skinWeight.getY( i ); - vec.z = skinWeight.getZ( i ); - vec.w = skinWeight.getW( i ); + vec.x = skinWeight.getX(i); + vec.y = skinWeight.getY(i); + vec.z = skinWeight.getZ(i); + vec.w = skinWeight.getW(i); scale = 1.0 / vec.manhattanLength(); - if ( scale !== Infinity ) { + if (scale !== Infinity) { - vec.multiplyScalar( scale ); + vec.multiplyScalar(scale); } else { - vec.set( 1, 0, 0, 0 ); // do something reasonable + vec.set(1, 0, 0, 0); // do something reasonable } - skinWeight.setXYZW( i, vec.x, vec.y, vec.z, vec.w ); + skinWeight.setXYZW(i, vec.x, vec.y, vec.z, vec.w); } @@ -25747,21 +25760,21 @@ }, - updateMatrixWorld: function ( force ) { + updateMatrixWorld: function (force) { - Mesh.prototype.updateMatrixWorld.call( this, force ); + Mesh.prototype.updateMatrixWorld.call(this, force); - if ( this.bindMode === 'attached' ) { + if (this.bindMode === 'attached') { - this.bindMatrixInverse.getInverse( this.matrixWorld ); + this.bindMatrixInverse.getInverse(this.matrixWorld); - } else if ( this.bindMode === 'detached' ) { + } else if (this.bindMode === 'detached') { - this.bindMatrixInverse.getInverse( this.bindMatrix ); + this.bindMatrixInverse.getInverse(this.bindMatrix); } else { - console.warn( 'THREE.SkinnedMesh: Unrecognized bindMode: ' + this.bindMode ); + console.warn('THREE.SkinnedMesh: Unrecognized bindMode: ' + this.bindMode); } @@ -25769,11 +25782,11 @@ clone: function () { - return new this.constructor( this.geometry, this.material ).copy( this ); + return new this.constructor(this.geometry, this.material).copy(this); } - } ); + }); /** * @author mrdoob / http://mrdoob.com/ @@ -25789,13 +25802,13 @@ * } */ - function LineBasicMaterial( parameters ) { + function LineBasicMaterial(parameters) { - Material.call( this ); + Material.call(this); this.type = 'LineBasicMaterial'; - this.color = new Color( 0xffffff ); + this.color = new Color(0xffffff); this.linewidth = 1; this.linecap = 'round'; @@ -25803,20 +25816,20 @@ this.lights = false; - this.setValues( parameters ); + this.setValues(parameters); } - LineBasicMaterial.prototype = Object.create( Material.prototype ); + LineBasicMaterial.prototype = Object.create(Material.prototype); LineBasicMaterial.prototype.constructor = LineBasicMaterial; LineBasicMaterial.prototype.isLineBasicMaterial = true; - LineBasicMaterial.prototype.copy = function ( source ) { + LineBasicMaterial.prototype.copy = function (source) { - Material.prototype.copy.call( this, source ); + Material.prototype.copy.call(this, source); - this.color.copy( source.color ); + this.color.copy(source.color); this.linewidth = source.linewidth; this.linecap = source.linecap; @@ -25830,30 +25843,30 @@ * @author mrdoob / http://mrdoob.com/ */ - function Line( geometry, material, mode ) { + function Line(geometry, material, mode) { - if ( mode === 1 ) { + if (mode === 1) { - console.error( 'THREE.Line: parameter THREE.LinePieces no longer supported. Use THREE.LineSegments instead.' ); + console.error('THREE.Line: parameter THREE.LinePieces no longer supported. Use THREE.LineSegments instead.'); } - Object3D.call( this ); + Object3D.call(this); this.type = 'Line'; this.geometry = geometry !== undefined ? geometry : new BufferGeometry(); - this.material = material !== undefined ? material : new LineBasicMaterial( { color: Math.random() * 0xffffff } ); + this.material = material !== undefined ? material : new LineBasicMaterial({ color: Math.random() * 0xffffff }); } - Line.prototype = Object.assign( Object.create( Object3D.prototype ), { + Line.prototype = Object.assign(Object.create(Object3D.prototype), { constructor: Line, isLine: true, - computeLineDistances: ( function () { + computeLineDistances: (function () { var start = new Vector3(); var end = new Vector3(); @@ -25862,44 +25875,44 @@ var geometry = this.geometry; - if ( geometry.isBufferGeometry ) { + if (geometry.isBufferGeometry) { // we assume non-indexed geometry - if ( geometry.index === null ) { + if (geometry.index === null) { var positionAttribute = geometry.attributes.position; - var lineDistances = [ 0 ]; + var lineDistances = [0]; - for ( var i = 1, l = positionAttribute.count; i < l; i ++ ) { + for (var i = 1, l = positionAttribute.count; i < l; i++) { - start.fromBufferAttribute( positionAttribute, i - 1 ); - end.fromBufferAttribute( positionAttribute, i ); + start.fromBufferAttribute(positionAttribute, i - 1); + end.fromBufferAttribute(positionAttribute, i); - lineDistances[ i ] = lineDistances[ i - 1 ]; - lineDistances[ i ] += start.distanceTo( end ); + lineDistances[i] = lineDistances[i - 1]; + lineDistances[i] += start.distanceTo(end); } - geometry.addAttribute( 'lineDistance', new Float32BufferAttribute( lineDistances, 1 ) ); + geometry.addAttribute('lineDistance', new Float32BufferAttribute(lineDistances, 1)); } else { - console.warn( 'THREE.Line.computeLineDistances(): Computation only possible with non-indexed BufferGeometry.' ); + console.warn('THREE.Line.computeLineDistances(): Computation only possible with non-indexed BufferGeometry.'); } - } else if ( geometry.isGeometry ) { + } else if (geometry.isGeometry) { var vertices = geometry.vertices; var lineDistances = geometry.lineDistances; - lineDistances[ 0 ] = 0; + lineDistances[0] = 0; - for ( var i = 1, l = vertices.length; i < l; i ++ ) { + for (var i = 1, l = vertices.length; i < l; i++) { - lineDistances[ i ] = lineDistances[ i - 1 ]; - lineDistances[ i ] += vertices[ i - 1 ].distanceTo( vertices[ i ] ); + lineDistances[i] = lineDistances[i - 1]; + lineDistances[i] += vertices[i - 1].distanceTo(vertices[i]); } @@ -25909,15 +25922,15 @@ }; - }() ), + }()), - raycast: ( function () { + raycast: (function () { var inverseMatrix = new Matrix4(); var ray = new Ray(); var sphere = new Sphere(); - return function raycast( raycaster, intersects ) { + return function raycast(raycaster, intersects) { var precision = raycaster.linePrecision; @@ -25926,134 +25939,134 @@ // Checking boundingSphere distance to ray - if ( geometry.boundingSphere === null ) geometry.computeBoundingSphere(); + if (geometry.boundingSphere === null) geometry.computeBoundingSphere(); - sphere.copy( geometry.boundingSphere ); - sphere.applyMatrix4( matrixWorld ); + sphere.copy(geometry.boundingSphere); + sphere.applyMatrix4(matrixWorld); sphere.radius += precision; - if ( raycaster.ray.intersectsSphere( sphere ) === false ) return; + if (raycaster.ray.intersectsSphere(sphere) === false) return; // - inverseMatrix.getInverse( matrixWorld ); - ray.copy( raycaster.ray ).applyMatrix4( inverseMatrix ); + inverseMatrix.getInverse(matrixWorld); + ray.copy(raycaster.ray).applyMatrix4(inverseMatrix); - var localPrecision = precision / ( ( this.scale.x + this.scale.y + this.scale.z ) / 3 ); + var localPrecision = precision / ((this.scale.x + this.scale.y + this.scale.z) / 3); var localPrecisionSq = localPrecision * localPrecision; var vStart = new Vector3(); var vEnd = new Vector3(); var interSegment = new Vector3(); var interRay = new Vector3(); - var step = ( this && this.isLineSegments ) ? 2 : 1; + var step = (this && this.isLineSegments) ? 2 : 1; - if ( geometry.isBufferGeometry ) { + if (geometry.isBufferGeometry) { var index = geometry.index; var attributes = geometry.attributes; var positions = attributes.position.array; - if ( index !== null ) { + if (index !== null) { var indices = index.array; - for ( var i = 0, l = indices.length - 1; i < l; i += step ) { + for (var i = 0, l = indices.length - 1; i < l; i += step) { - var a = indices[ i ]; - var b = indices[ i + 1 ]; + var a = indices[i]; + var b = indices[i + 1]; - vStart.fromArray( positions, a * 3 ); - vEnd.fromArray( positions, b * 3 ); + vStart.fromArray(positions, a * 3); + vEnd.fromArray(positions, b * 3); - var distSq = ray.distanceSqToSegment( vStart, vEnd, interRay, interSegment ); + var distSq = ray.distanceSqToSegment(vStart, vEnd, interRay, interSegment); - if ( distSq > localPrecisionSq ) continue; + if (distSq > localPrecisionSq) continue; - interRay.applyMatrix4( this.matrixWorld ); //Move back to world space for distance calculation + interRay.applyMatrix4(this.matrixWorld); //Move back to world space for distance calculation - var distance = raycaster.ray.origin.distanceTo( interRay ); + var distance = raycaster.ray.origin.distanceTo(interRay); - if ( distance < raycaster.near || distance > raycaster.far ) continue; + if (distance < raycaster.near || distance > raycaster.far) continue; - intersects.push( { + intersects.push({ distance: distance, // What do we want? intersection point on the ray or on the segment?? // point: raycaster.ray.at( distance ), - point: interSegment.clone().applyMatrix4( this.matrixWorld ), + point: interSegment.clone().applyMatrix4(this.matrixWorld), index: i, face: null, faceIndex: null, object: this - } ); + }); } } else { - for ( var i = 0, l = positions.length / 3 - 1; i < l; i += step ) { + for (var i = 0, l = positions.length / 3 - 1; i < l; i += step) { - vStart.fromArray( positions, 3 * i ); - vEnd.fromArray( positions, 3 * i + 3 ); + vStart.fromArray(positions, 3 * i); + vEnd.fromArray(positions, 3 * i + 3); - var distSq = ray.distanceSqToSegment( vStart, vEnd, interRay, interSegment ); + var distSq = ray.distanceSqToSegment(vStart, vEnd, interRay, interSegment); - if ( distSq > localPrecisionSq ) continue; + if (distSq > localPrecisionSq) continue; - interRay.applyMatrix4( this.matrixWorld ); //Move back to world space for distance calculation + interRay.applyMatrix4(this.matrixWorld); //Move back to world space for distance calculation - var distance = raycaster.ray.origin.distanceTo( interRay ); + var distance = raycaster.ray.origin.distanceTo(interRay); - if ( distance < raycaster.near || distance > raycaster.far ) continue; + if (distance < raycaster.near || distance > raycaster.far) continue; - intersects.push( { + intersects.push({ distance: distance, // What do we want? intersection point on the ray or on the segment?? // point: raycaster.ray.at( distance ), - point: interSegment.clone().applyMatrix4( this.matrixWorld ), + point: interSegment.clone().applyMatrix4(this.matrixWorld), index: i, face: null, faceIndex: null, object: this - } ); + }); } } - } else if ( geometry.isGeometry ) { + } else if (geometry.isGeometry) { var vertices = geometry.vertices; var nbVertices = vertices.length; - for ( var i = 0; i < nbVertices - 1; i += step ) { + for (var i = 0; i < nbVertices - 1; i += step) { - var distSq = ray.distanceSqToSegment( vertices[ i ], vertices[ i + 1 ], interRay, interSegment ); + var distSq = ray.distanceSqToSegment(vertices[i], vertices[i + 1], interRay, interSegment); - if ( distSq > localPrecisionSq ) continue; + if (distSq > localPrecisionSq) continue; - interRay.applyMatrix4( this.matrixWorld ); //Move back to world space for distance calculation + interRay.applyMatrix4(this.matrixWorld); //Move back to world space for distance calculation - var distance = raycaster.ray.origin.distanceTo( interRay ); + var distance = raycaster.ray.origin.distanceTo(interRay); - if ( distance < raycaster.near || distance > raycaster.far ) continue; + if (distance < raycaster.near || distance > raycaster.far) continue; - intersects.push( { + intersects.push({ distance: distance, // What do we want? intersection point on the ray or on the segment?? // point: raycaster.ray.at( distance ), - point: interSegment.clone().applyMatrix4( this.matrixWorld ), + point: interSegment.clone().applyMatrix4(this.matrixWorld), index: i, face: null, faceIndex: null, object: this - } ); + }); } @@ -26061,14 +26074,14 @@ }; - }() ), + }()), - copy: function ( source ) { + copy: function (source) { - Object3D.prototype.copy.call( this, source ); + Object3D.prototype.copy.call(this, source); - this.geometry.copy( source.geometry ); - this.material.copy( source.material ); + this.geometry.copy(source.geometry); + this.material.copy(source.material); return this; @@ -26076,31 +26089,31 @@ clone: function () { - return new this.constructor().copy( this ); + return new this.constructor().copy(this); } - } ); + }); /** * @author mrdoob / http://mrdoob.com/ */ - function LineSegments( geometry, material ) { + function LineSegments(geometry, material) { - Line.call( this, geometry, material ); + Line.call(this, geometry, material); this.type = 'LineSegments'; } - LineSegments.prototype = Object.assign( Object.create( Line.prototype ), { + LineSegments.prototype = Object.assign(Object.create(Line.prototype), { constructor: LineSegments, isLineSegments: true, - computeLineDistances: ( function () { + computeLineDistances: (function () { var start = new Vector3(); var end = new Vector3(); @@ -26109,45 +26122,45 @@ var geometry = this.geometry; - if ( geometry.isBufferGeometry ) { + if (geometry.isBufferGeometry) { // we assume non-indexed geometry - if ( geometry.index === null ) { + if (geometry.index === null) { var positionAttribute = geometry.attributes.position; var lineDistances = []; - for ( var i = 0, l = positionAttribute.count; i < l; i += 2 ) { + for (var i = 0, l = positionAttribute.count; i < l; i += 2) { - start.fromBufferAttribute( positionAttribute, i ); - end.fromBufferAttribute( positionAttribute, i + 1 ); + start.fromBufferAttribute(positionAttribute, i); + end.fromBufferAttribute(positionAttribute, i + 1); - lineDistances[ i ] = ( i === 0 ) ? 0 : lineDistances[ i - 1 ]; - lineDistances[ i + 1 ] = lineDistances[ i ] + start.distanceTo( end ); + lineDistances[i] = (i === 0) ? 0 : lineDistances[i - 1]; + lineDistances[i + 1] = lineDistances[i] + start.distanceTo(end); } - geometry.addAttribute( 'lineDistance', new Float32BufferAttribute( lineDistances, 1 ) ); + geometry.addAttribute('lineDistance', new Float32BufferAttribute(lineDistances, 1)); } else { - console.warn( 'THREE.LineSegments.computeLineDistances(): Computation only possible with non-indexed BufferGeometry.' ); + console.warn('THREE.LineSegments.computeLineDistances(): Computation only possible with non-indexed BufferGeometry.'); } - } else if ( geometry.isGeometry ) { + } else if (geometry.isGeometry) { var vertices = geometry.vertices; var lineDistances = geometry.lineDistances; - for ( var i = 0, l = vertices.length; i < l; i += 2 ) { + for (var i = 0, l = vertices.length; i < l; i += 2) { - start.copy( vertices[ i ] ); - end.copy( vertices[ i + 1 ] ); + start.copy(vertices[i]); + end.copy(vertices[i + 1]); - lineDistances[ i ] = ( i === 0 ) ? 0 : lineDistances[ i - 1 ]; - lineDistances[ i + 1 ] = lineDistances[ i ] + start.distanceTo( end ); + lineDistances[i] = (i === 0) ? 0 : lineDistances[i - 1]; + lineDistances[i + 1] = lineDistances[i] + start.distanceTo(end); } @@ -26157,29 +26170,29 @@ }; - }() ) + }()) - } ); + }); /** * @author mgreter / http://github.com/mgreter */ - function LineLoop( geometry, material ) { + function LineLoop(geometry, material) { - Line.call( this, geometry, material ); + Line.call(this, geometry, material); this.type = 'LineLoop'; } - LineLoop.prototype = Object.assign( Object.create( Line.prototype ), { + LineLoop.prototype = Object.assign(Object.create(Line.prototype), { constructor: LineLoop, isLineLoop: true, - } ); + }); /** * @author mrdoob / http://mrdoob.com/ @@ -26197,13 +26210,13 @@ * } */ - function PointsMaterial( parameters ) { + function PointsMaterial(parameters) { - Material.call( this ); + Material.call(this); this.type = 'PointsMaterial'; - this.color = new Color( 0xffffff ); + this.color = new Color(0xffffff); this.map = null; @@ -26214,20 +26227,20 @@ this.lights = false; - this.setValues( parameters ); + this.setValues(parameters); } - PointsMaterial.prototype = Object.create( Material.prototype ); + PointsMaterial.prototype = Object.create(Material.prototype); PointsMaterial.prototype.constructor = PointsMaterial; PointsMaterial.prototype.isPointsMaterial = true; - PointsMaterial.prototype.copy = function ( source ) { + PointsMaterial.prototype.copy = function (source) { - Material.prototype.copy.call( this, source ); + Material.prototype.copy.call(this, source); - this.color.copy( source.color ); + this.color.copy(source.color); this.map = source.map; @@ -26244,30 +26257,30 @@ * @author alteredq / http://alteredqualia.com/ */ - function Points( geometry, material ) { + function Points(geometry, material) { - Object3D.call( this ); + Object3D.call(this); this.type = 'Points'; this.geometry = geometry !== undefined ? geometry : new BufferGeometry(); - this.material = material !== undefined ? material : new PointsMaterial( { color: Math.random() * 0xffffff } ); + this.material = material !== undefined ? material : new PointsMaterial({ color: Math.random() * 0xffffff }); } - Points.prototype = Object.assign( Object.create( Object3D.prototype ), { + Points.prototype = Object.assign(Object.create(Object3D.prototype), { constructor: Points, isPoints: true, - raycast: ( function () { + raycast: (function () { var inverseMatrix = new Matrix4(); var ray = new Ray(); var sphere = new Sphere(); - return function raycast( raycaster, intersects ) { + return function raycast(raycaster, intersects) { var object = this; var geometry = this.geometry; @@ -26276,79 +26289,79 @@ // Checking boundingSphere distance to ray - if ( geometry.boundingSphere === null ) geometry.computeBoundingSphere(); + if (geometry.boundingSphere === null) geometry.computeBoundingSphere(); - sphere.copy( geometry.boundingSphere ); - sphere.applyMatrix4( matrixWorld ); + sphere.copy(geometry.boundingSphere); + sphere.applyMatrix4(matrixWorld); sphere.radius += threshold; - if ( raycaster.ray.intersectsSphere( sphere ) === false ) return; + if (raycaster.ray.intersectsSphere(sphere) === false) return; // - inverseMatrix.getInverse( matrixWorld ); - ray.copy( raycaster.ray ).applyMatrix4( inverseMatrix ); + inverseMatrix.getInverse(matrixWorld); + ray.copy(raycaster.ray).applyMatrix4(inverseMatrix); - var localThreshold = threshold / ( ( this.scale.x + this.scale.y + this.scale.z ) / 3 ); + var localThreshold = threshold / ((this.scale.x + this.scale.y + this.scale.z) / 3); var localThresholdSq = localThreshold * localThreshold; var position = new Vector3(); var intersectPoint = new Vector3(); - function testPoint( point, index ) { + function testPoint(point, index) { - var rayPointDistanceSq = ray.distanceSqToPoint( point ); + var rayPointDistanceSq = ray.distanceSqToPoint(point); - if ( rayPointDistanceSq < localThresholdSq ) { + if (rayPointDistanceSq < localThresholdSq) { - ray.closestPointToPoint( point, intersectPoint ); - intersectPoint.applyMatrix4( matrixWorld ); + ray.closestPointToPoint(point, intersectPoint); + intersectPoint.applyMatrix4(matrixWorld); - var distance = raycaster.ray.origin.distanceTo( intersectPoint ); + var distance = raycaster.ray.origin.distanceTo(intersectPoint); - if ( distance < raycaster.near || distance > raycaster.far ) return; + if (distance < raycaster.near || distance > raycaster.far) return; - intersects.push( { + intersects.push({ distance: distance, - distanceToRay: Math.sqrt( rayPointDistanceSq ), + distanceToRay: Math.sqrt(rayPointDistanceSq), point: intersectPoint.clone(), index: index, face: null, object: object - } ); + }); } } - if ( geometry.isBufferGeometry ) { + if (geometry.isBufferGeometry) { var index = geometry.index; var attributes = geometry.attributes; var positions = attributes.position.array; - if ( index !== null ) { + if (index !== null) { var indices = index.array; - for ( var i = 0, il = indices.length; i < il; i ++ ) { + for (var i = 0, il = indices.length; i < il; i++) { - var a = indices[ i ]; + var a = indices[i]; - position.fromArray( positions, a * 3 ); + position.fromArray(positions, a * 3); - testPoint( position, a ); + testPoint(position, a); } } else { - for ( var i = 0, l = positions.length / 3; i < l; i ++ ) { + for (var i = 0, l = positions.length / 3; i < l; i++) { - position.fromArray( positions, i * 3 ); + position.fromArray(positions, i * 3); - testPoint( position, i ); + testPoint(position, i); } @@ -26358,9 +26371,9 @@ var vertices = geometry.vertices; - for ( var i = 0, l = vertices.length; i < l; i ++ ) { + for (var i = 0, l = vertices.length; i < l; i++) { - testPoint( vertices[ i ], i ); + testPoint(vertices[i], i); } @@ -26368,29 +26381,29 @@ }; - }() ), + }()), clone: function () { - return new this.constructor( this.geometry, this.material ).copy( this ); + return new this.constructor(this.geometry, this.material).copy(this); } - } ); + }); /** * @author mrdoob / http://mrdoob.com/ */ - function VideoTexture( video, mapping, wrapS, wrapT, magFilter, minFilter, format, type, anisotropy ) { + function VideoTexture(video, mapping, wrapS, wrapT, magFilter, minFilter, format, type, anisotropy) { - Texture.call( this, video, mapping, wrapS, wrapT, magFilter, minFilter, format, type, anisotropy ); + Texture.call(this, video, mapping, wrapS, wrapT, magFilter, minFilter, format, type, anisotropy); this.generateMipmaps = false; } - VideoTexture.prototype = Object.assign( Object.create( Texture.prototype ), { + VideoTexture.prototype = Object.assign(Object.create(Texture.prototype), { constructor: VideoTexture, @@ -26400,7 +26413,7 @@ var video = this.image; - if ( video.readyState >= video.HAVE_CURRENT_DATA ) { + if (video.readyState >= video.HAVE_CURRENT_DATA) { this.needsUpdate = true; @@ -26408,15 +26421,15 @@ } - } ); + }); /** * @author alteredq / http://alteredqualia.com/ */ - function CompressedTexture( mipmaps, width, height, format, type, mapping, wrapS, wrapT, magFilter, minFilter, anisotropy, encoding ) { + function CompressedTexture(mipmaps, width, height, format, type, mapping, wrapS, wrapT, magFilter, minFilter, anisotropy, encoding) { - Texture.call( this, null, mapping, wrapS, wrapT, magFilter, minFilter, format, type, anisotropy, encoding ); + Texture.call(this, null, mapping, wrapS, wrapT, magFilter, minFilter, format, type, anisotropy, encoding); this.image = { width: width, height: height }; this.mipmaps = mipmaps; @@ -26433,7 +26446,7 @@ } - CompressedTexture.prototype = Object.create( Texture.prototype ); + CompressedTexture.prototype = Object.create(Texture.prototype); CompressedTexture.prototype.constructor = CompressedTexture; CompressedTexture.prototype.isCompressedTexture = true; @@ -26442,15 +26455,15 @@ * @author mrdoob / http://mrdoob.com/ */ - function CanvasTexture( canvas, mapping, wrapS, wrapT, magFilter, minFilter, format, type, anisotropy ) { + function CanvasTexture(canvas, mapping, wrapS, wrapT, magFilter, minFilter, format, type, anisotropy) { - Texture.call( this, canvas, mapping, wrapS, wrapT, magFilter, minFilter, format, type, anisotropy ); + Texture.call(this, canvas, mapping, wrapS, wrapT, magFilter, minFilter, format, type, anisotropy); this.needsUpdate = true; } - CanvasTexture.prototype = Object.create( Texture.prototype ); + CanvasTexture.prototype = Object.create(Texture.prototype); CanvasTexture.prototype.constructor = CanvasTexture; CanvasTexture.prototype.isCanvasTexture = true; @@ -26459,20 +26472,20 @@ * @author atix / arthursilber.de */ - function DepthTexture( width, height, type, mapping, wrapS, wrapT, magFilter, minFilter, anisotropy, format ) { + function DepthTexture(width, height, type, mapping, wrapS, wrapT, magFilter, minFilter, anisotropy, format) { format = format !== undefined ? format : DepthFormat; - if ( format !== DepthFormat && format !== DepthStencilFormat ) { + if (format !== DepthFormat && format !== DepthStencilFormat) { - throw new Error( 'DepthTexture format must be either THREE.DepthFormat or THREE.DepthStencilFormat' ); + throw new Error('DepthTexture format must be either THREE.DepthFormat or THREE.DepthStencilFormat'); } - if ( type === undefined && format === DepthFormat ) type = UnsignedShortType; - if ( type === undefined && format === DepthStencilFormat ) type = UnsignedInt248Type; + if (type === undefined && format === DepthFormat) type = UnsignedShortType; + if (type === undefined && format === DepthStencilFormat) type = UnsignedInt248Type; - Texture.call( this, null, mapping, wrapS, wrapT, magFilter, minFilter, format, type, anisotropy ); + Texture.call(this, null, mapping, wrapS, wrapT, magFilter, minFilter, format, type, anisotropy); this.image = { width: width, height: height }; @@ -26480,11 +26493,11 @@ this.minFilter = minFilter !== undefined ? minFilter : NearestFilter; this.flipY = false; - this.generateMipmaps = false; + this.generateMipmaps = false; } - DepthTexture.prototype = Object.create( Texture.prototype ); + DepthTexture.prototype = Object.create(Texture.prototype); DepthTexture.prototype.constructor = DepthTexture; DepthTexture.prototype.isDepthTexture = true; @@ -26493,9 +26506,9 @@ * @author Mugen87 / https://github.com/Mugen87 */ - function WireframeGeometry( geometry ) { + function WireframeGeometry(geometry) { - BufferGeometry.call( this ); + BufferGeometry.call(this); this.type = 'WireframeGeometry'; @@ -26506,34 +26519,34 @@ // helper variables var i, j, l, o, ol; - var edge = [ 0, 0 ], edges = {}, e, edge1, edge2; - var key, keys = [ 'a', 'b', 'c' ]; + var edge = [0, 0], edges = {}, e, edge1, edge2; + var key, keys = ['a', 'b', 'c']; var vertex; // different logic for Geometry and BufferGeometry - if ( geometry && geometry.isGeometry ) { + if (geometry && geometry.isGeometry) { // create a data structure that contains all edges without duplicates var faces = geometry.faces; - for ( i = 0, l = faces.length; i < l; i ++ ) { + for (i = 0, l = faces.length; i < l; i++) { - var face = faces[ i ]; + var face = faces[i]; - for ( j = 0; j < 3; j ++ ) { + for (j = 0; j < 3; j++) { - edge1 = face[ keys[ j ] ]; - edge2 = face[ keys[ ( j + 1 ) % 3 ] ]; - edge[ 0 ] = Math.min( edge1, edge2 ); // sorting prevents duplicates - edge[ 1 ] = Math.max( edge1, edge2 ); + edge1 = face[keys[j]]; + edge2 = face[keys[(j + 1) % 3]]; + edge[0] = Math.min(edge1, edge2); // sorting prevents duplicates + edge[1] = Math.max(edge1, edge2); - key = edge[ 0 ] + ',' + edge[ 1 ]; + key = edge[0] + ',' + edge[1]; - if ( edges[ key ] === undefined ) { + if (edges[key] === undefined) { - edges[ key ] = { index1: edge[ 0 ], index2: edge[ 1 ] }; + edges[key] = { index1: edge[0], index2: edge[1] }; } @@ -26543,19 +26556,19 @@ // generate vertices - for ( key in edges ) { + for (key in edges) { - e = edges[ key ]; + e = edges[key]; - vertex = geometry.vertices[ e.index1 ]; - vertices.push( vertex.x, vertex.y, vertex.z ); + vertex = geometry.vertices[e.index1]; + vertices.push(vertex.x, vertex.y, vertex.z); - vertex = geometry.vertices[ e.index2 ]; - vertices.push( vertex.x, vertex.y, vertex.z ); + vertex = geometry.vertices[e.index2]; + vertices.push(vertex.x, vertex.y, vertex.z); } - } else if ( geometry && geometry.isBufferGeometry ) { + } else if (geometry && geometry.isBufferGeometry) { var position, indices, groups; var group, start, count; @@ -26563,7 +26576,7 @@ vertex = new Vector3(); - if ( geometry.index !== null ) { + if (geometry.index !== null) { // indexed BufferGeometry @@ -26571,35 +26584,35 @@ indices = geometry.index; groups = geometry.groups; - if ( groups.length === 0 ) { + if (groups.length === 0) { - groups = [ { start: 0, count: indices.count, materialIndex: 0 } ]; + groups = [{ start: 0, count: indices.count, materialIndex: 0 }]; } // create a data structure that contains all eges without duplicates - for ( o = 0, ol = groups.length; o < ol; ++ o ) { + for (o = 0, ol = groups.length; o < ol; ++o) { - group = groups[ o ]; + group = groups[o]; start = group.start; count = group.count; - for ( i = start, l = ( start + count ); i < l; i += 3 ) { + for (i = start, l = (start + count); i < l; i += 3) { - for ( j = 0; j < 3; j ++ ) { + for (j = 0; j < 3; j++) { - edge1 = indices.getX( i + j ); - edge2 = indices.getX( i + ( j + 1 ) % 3 ); - edge[ 0 ] = Math.min( edge1, edge2 ); // sorting prevents duplicates - edge[ 1 ] = Math.max( edge1, edge2 ); + edge1 = indices.getX(i + j); + edge2 = indices.getX(i + (j + 1) % 3); + edge[0] = Math.min(edge1, edge2); // sorting prevents duplicates + edge[1] = Math.max(edge1, edge2); - key = edge[ 0 ] + ',' + edge[ 1 ]; + key = edge[0] + ',' + edge[1]; - if ( edges[ key ] === undefined ) { + if (edges[key] === undefined) { - edges[ key ] = { index1: edge[ 0 ], index2: edge[ 1 ] }; + edges[key] = { index1: edge[0], index2: edge[1] }; } @@ -26611,15 +26624,15 @@ // generate vertices - for ( key in edges ) { + for (key in edges) { - e = edges[ key ]; + e = edges[key]; - vertex.fromBufferAttribute( position, e.index1 ); - vertices.push( vertex.x, vertex.y, vertex.z ); + vertex.fromBufferAttribute(position, e.index1); + vertices.push(vertex.x, vertex.y, vertex.z); - vertex.fromBufferAttribute( position, e.index2 ); - vertices.push( vertex.x, vertex.y, vertex.z ); + vertex.fromBufferAttribute(position, e.index2); + vertices.push(vertex.x, vertex.y, vertex.z); } @@ -26629,20 +26642,20 @@ position = geometry.attributes.position; - for ( i = 0, l = ( position.count / 3 ); i < l; i ++ ) { + for (i = 0, l = (position.count / 3); i < l; i++) { - for ( j = 0; j < 3; j ++ ) { + for (j = 0; j < 3; j++) { // three edges per triangle, an edge is represented as (index1, index2) // e.g. the first triangle has the following edges: (0,1),(1,2),(2,0) index1 = 3 * i + j; - vertex.fromBufferAttribute( position, index1 ); - vertices.push( vertex.x, vertex.y, vertex.z ); + vertex.fromBufferAttribute(position, index1); + vertices.push(vertex.x, vertex.y, vertex.z); - index2 = 3 * i + ( ( j + 1 ) % 3 ); - vertex.fromBufferAttribute( position, index2 ); - vertices.push( vertex.x, vertex.y, vertex.z ); + index2 = 3 * i + ((j + 1) % 3); + vertex.fromBufferAttribute(position, index2); + vertices.push(vertex.x, vertex.y, vertex.z); } @@ -26654,11 +26667,11 @@ // build geometry - this.addAttribute( 'position', new Float32BufferAttribute( vertices, 3 ) ); + this.addAttribute('position', new Float32BufferAttribute(vertices, 3)); } - WireframeGeometry.prototype = Object.create( BufferGeometry.prototype ); + WireframeGeometry.prototype = Object.create(BufferGeometry.prototype); WireframeGeometry.prototype.constructor = WireframeGeometry; /** @@ -26671,9 +26684,9 @@ // ParametricGeometry - function ParametricGeometry( func, slices, stacks ) { + function ParametricGeometry(func, slices, stacks) { - Geometry.call( this ); + Geometry.call(this); this.type = 'ParametricGeometry'; @@ -26683,19 +26696,19 @@ stacks: stacks }; - this.fromBufferGeometry( new ParametricBufferGeometry( func, slices, stacks ) ); + this.fromBufferGeometry(new ParametricBufferGeometry(func, slices, stacks)); this.mergeVertices(); } - ParametricGeometry.prototype = Object.create( Geometry.prototype ); + ParametricGeometry.prototype = Object.create(Geometry.prototype); ParametricGeometry.prototype.constructor = ParametricGeometry; // ParametricBufferGeometry - function ParametricBufferGeometry( func, slices, stacks ) { + function ParametricBufferGeometry(func, slices, stacks) { - BufferGeometry.call( this ); + BufferGeometry.call(this); this.type = 'ParametricBufferGeometry'; @@ -26721,9 +26734,9 @@ var i, j; - if ( func.length < 3 ) { + if (func.length < 3) { - console.error( 'THREE.ParametricGeometry: Function must now modify a Vector3 as third parameter.' ); + console.error('THREE.ParametricGeometry: Function must now modify a Vector3 as third parameter.'); } @@ -26731,55 +26744,55 @@ var sliceCount = slices + 1; - for ( i = 0; i <= stacks; i ++ ) { + for (i = 0; i <= stacks; i++) { var v = i / stacks; - for ( j = 0; j <= slices; j ++ ) { + for (j = 0; j <= slices; j++) { var u = j / slices; // vertex - func( u, v, p0 ); - vertices.push( p0.x, p0.y, p0.z ); + func(u, v, p0); + vertices.push(p0.x, p0.y, p0.z); // normal // approximate tangent vectors via finite differences - if ( u - EPS >= 0 ) { + if (u - EPS >= 0) { - func( u - EPS, v, p1 ); - pu.subVectors( p0, p1 ); + func(u - EPS, v, p1); + pu.subVectors(p0, p1); } else { - func( u + EPS, v, p1 ); - pu.subVectors( p1, p0 ); + func(u + EPS, v, p1); + pu.subVectors(p1, p0); } - if ( v - EPS >= 0 ) { + if (v - EPS >= 0) { - func( u, v - EPS, p1 ); - pv.subVectors( p0, p1 ); + func(u, v - EPS, p1); + pv.subVectors(p0, p1); } else { - func( u, v + EPS, p1 ); - pv.subVectors( p1, p0 ); + func(u, v + EPS, p1); + pv.subVectors(p1, p0); } // cross product of tangent vectors returns surface normal - normal.crossVectors( pu, pv ).normalize(); - normals.push( normal.x, normal.y, normal.z ); + normal.crossVectors(pu, pv).normalize(); + normals.push(normal.x, normal.y, normal.z); // uv - uvs.push( u, v ); + uvs.push(u, v); } @@ -26787,19 +26800,19 @@ // generate indices - for ( i = 0; i < stacks; i ++ ) { + for (i = 0; i < stacks; i++) { - for ( j = 0; j < slices; j ++ ) { + for (j = 0; j < slices; j++) { var a = i * sliceCount + j; var b = i * sliceCount + j + 1; - var c = ( i + 1 ) * sliceCount + j + 1; - var d = ( i + 1 ) * sliceCount + j; + var c = (i + 1) * sliceCount + j + 1; + var d = (i + 1) * sliceCount + j; // faces one and two - indices.push( a, b, d ); - indices.push( b, c, d ); + indices.push(a, b, d); + indices.push(b, c, d); } @@ -26807,14 +26820,14 @@ // build geometry - this.setIndex( indices ); - this.addAttribute( 'position', new Float32BufferAttribute( vertices, 3 ) ); - this.addAttribute( 'normal', new Float32BufferAttribute( normals, 3 ) ); - this.addAttribute( 'uv', new Float32BufferAttribute( uvs, 2 ) ); + this.setIndex(indices); + this.addAttribute('position', new Float32BufferAttribute(vertices, 3)); + this.addAttribute('normal', new Float32BufferAttribute(normals, 3)); + this.addAttribute('uv', new Float32BufferAttribute(uvs, 2)); } - ParametricBufferGeometry.prototype = Object.create( BufferGeometry.prototype ); + ParametricBufferGeometry.prototype = Object.create(BufferGeometry.prototype); ParametricBufferGeometry.prototype.constructor = ParametricBufferGeometry; /** @@ -26826,9 +26839,9 @@ // PolyhedronGeometry - function PolyhedronGeometry( vertices, indices, radius, detail ) { + function PolyhedronGeometry(vertices, indices, radius, detail) { - Geometry.call( this ); + Geometry.call(this); this.type = 'PolyhedronGeometry'; @@ -26839,19 +26852,19 @@ detail: detail }; - this.fromBufferGeometry( new PolyhedronBufferGeometry( vertices, indices, radius, detail ) ); + this.fromBufferGeometry(new PolyhedronBufferGeometry(vertices, indices, radius, detail)); this.mergeVertices(); } - PolyhedronGeometry.prototype = Object.create( Geometry.prototype ); + PolyhedronGeometry.prototype = Object.create(Geometry.prototype); PolyhedronGeometry.prototype.constructor = PolyhedronGeometry; // PolyhedronBufferGeometry - function PolyhedronBufferGeometry( vertices, indices, radius, detail ) { + function PolyhedronBufferGeometry(vertices, indices, radius, detail) { - BufferGeometry.call( this ); + BufferGeometry.call(this); this.type = 'PolyhedronBufferGeometry'; @@ -26872,11 +26885,11 @@ // the subdivision creates the vertex buffer data - subdivide( detail ); + subdivide(detail); // all vertices should lie on a conceptual sphere with a given radius - appplyRadius( radius ); + appplyRadius(radius); // finally, create the uv data @@ -26884,11 +26897,11 @@ // build non-indexed geometry - this.addAttribute( 'position', new Float32BufferAttribute( vertexBuffer, 3 ) ); - this.addAttribute( 'normal', new Float32BufferAttribute( vertexBuffer.slice(), 3 ) ); - this.addAttribute( 'uv', new Float32BufferAttribute( uvBuffer, 2 ) ); + this.addAttribute('position', new Float32BufferAttribute(vertexBuffer, 3)); + this.addAttribute('normal', new Float32BufferAttribute(vertexBuffer.slice(), 3)); + this.addAttribute('uv', new Float32BufferAttribute(uvBuffer, 2)); - if ( detail === 0 ) { + if (detail === 0) { this.computeVertexNormals(); // flat normals @@ -26900,7 +26913,7 @@ // helper functions - function subdivide( detail ) { + function subdivide(detail) { var a = new Vector3(); var b = new Vector3(); @@ -26908,25 +26921,25 @@ // iterate over all faces and apply a subdivison with the given detail value - for ( var i = 0; i < indices.length; i += 3 ) { + for (var i = 0; i < indices.length; i += 3) { // get the vertices of the face - getVertexByIndex( indices[ i + 0 ], a ); - getVertexByIndex( indices[ i + 1 ], b ); - getVertexByIndex( indices[ i + 2 ], c ); + getVertexByIndex(indices[i + 0], a); + getVertexByIndex(indices[i + 1], b); + getVertexByIndex(indices[i + 2], c); // perform subdivision - subdivideFace( a, b, c, detail ); + subdivideFace(a, b, c, detail); } } - function subdivideFace( a, b, c, detail ) { + function subdivideFace(a, b, c, detail) { - var cols = Math.pow( 2, detail ); + var cols = Math.pow(2, detail); // we use this multidimensional array as a data structure for creating the subdivision @@ -26936,24 +26949,24 @@ // construct all of the vertices for this subdivision - for ( i = 0; i <= cols; i ++ ) { + for (i = 0; i <= cols; i++) { - v[ i ] = []; + v[i] = []; - var aj = a.clone().lerp( c, i / cols ); - var bj = b.clone().lerp( c, i / cols ); + var aj = a.clone().lerp(c, i / cols); + var bj = b.clone().lerp(c, i / cols); var rows = cols - i; - for ( j = 0; j <= rows; j ++ ) { + for (j = 0; j <= rows; j++) { - if ( j === 0 && i === cols ) { + if (j === 0 && i === cols) { - v[ i ][ j ] = aj; + v[i][j] = aj; } else { - v[ i ][ j ] = aj.clone().lerp( bj, j / rows ); + v[i][j] = aj.clone().lerp(bj, j / rows); } @@ -26963,23 +26976,23 @@ // construct all of the faces - for ( i = 0; i < cols; i ++ ) { + for (i = 0; i < cols; i++) { - for ( j = 0; j < 2 * ( cols - i ) - 1; j ++ ) { + for (j = 0; j < 2 * (cols - i) - 1; j++) { - var k = Math.floor( j / 2 ); + var k = Math.floor(j / 2); - if ( j % 2 === 0 ) { + if (j % 2 === 0) { - pushVertex( v[ i ][ k + 1 ] ); - pushVertex( v[ i + 1 ][ k ] ); - pushVertex( v[ i ][ k ] ); + pushVertex(v[i][k + 1]); + pushVertex(v[i + 1][k]); + pushVertex(v[i][k]); } else { - pushVertex( v[ i ][ k + 1 ] ); - pushVertex( v[ i + 1 ][ k + 1 ] ); - pushVertex( v[ i + 1 ][ k ] ); + pushVertex(v[i][k + 1]); + pushVertex(v[i + 1][k + 1]); + pushVertex(v[i + 1][k]); } @@ -26989,23 +27002,23 @@ } - function appplyRadius( radius ) { + function appplyRadius(radius) { var vertex = new Vector3(); // iterate over the entire buffer and apply the radius to each vertex - for ( var i = 0; i < vertexBuffer.length; i += 3 ) { + for (var i = 0; i < vertexBuffer.length; i += 3) { - vertex.x = vertexBuffer[ i + 0 ]; - vertex.y = vertexBuffer[ i + 1 ]; - vertex.z = vertexBuffer[ i + 2 ]; + vertex.x = vertexBuffer[i + 0]; + vertex.y = vertexBuffer[i + 1]; + vertex.z = vertexBuffer[i + 2]; - vertex.normalize().multiplyScalar( radius ); + vertex.normalize().multiplyScalar(radius); - vertexBuffer[ i + 0 ] = vertex.x; - vertexBuffer[ i + 1 ] = vertex.y; - vertexBuffer[ i + 2 ] = vertex.z; + vertexBuffer[i + 0] = vertex.x; + vertexBuffer[i + 1] = vertex.y; + vertexBuffer[i + 2] = vertex.z; } @@ -27015,15 +27028,15 @@ var vertex = new Vector3(); - for ( var i = 0; i < vertexBuffer.length; i += 3 ) { + for (var i = 0; i < vertexBuffer.length; i += 3) { - vertex.x = vertexBuffer[ i + 0 ]; - vertex.y = vertexBuffer[ i + 1 ]; - vertex.z = vertexBuffer[ i + 2 ]; + vertex.x = vertexBuffer[i + 0]; + vertex.y = vertexBuffer[i + 1]; + vertex.z = vertexBuffer[i + 2]; - var u = azimuth( vertex ) / 2 / Math.PI + 0.5; - var v = inclination( vertex ) / Math.PI + 0.5; - uvBuffer.push( u, 1 - v ); + var u = azimuth(vertex) / 2 / Math.PI + 0.5; + var v = inclination(vertex) / Math.PI + 0.5; + uvBuffer.push(u, 1 - v); } @@ -27037,24 +27050,24 @@ // handle case when face straddles the seam, see #3269 - for ( var i = 0; i < uvBuffer.length; i += 6 ) { + for (var i = 0; i < uvBuffer.length; i += 6) { // uv data of a single face - var x0 = uvBuffer[ i + 0 ]; - var x1 = uvBuffer[ i + 2 ]; - var x2 = uvBuffer[ i + 4 ]; + var x0 = uvBuffer[i + 0]; + var x1 = uvBuffer[i + 2]; + var x2 = uvBuffer[i + 4]; - var max = Math.max( x0, x1, x2 ); - var min = Math.min( x0, x1, x2 ); + var max = Math.max(x0, x1, x2); + var min = Math.min(x0, x1, x2); // 0.9 is somewhat arbitrary - if ( max > 0.9 && min < 0.1 ) { + if (max > 0.9 && min < 0.1) { - if ( x0 < 0.2 ) uvBuffer[ i + 0 ] += 1; - if ( x1 < 0.2 ) uvBuffer[ i + 2 ] += 1; - if ( x2 < 0.2 ) uvBuffer[ i + 4 ] += 1; + if (x0 < 0.2) uvBuffer[i + 0] += 1; + if (x1 < 0.2) uvBuffer[i + 2] += 1; + if (x2 < 0.2) uvBuffer[i + 4] += 1; } @@ -27062,19 +27075,19 @@ } - function pushVertex( vertex ) { + function pushVertex(vertex) { - vertexBuffer.push( vertex.x, vertex.y, vertex.z ); + vertexBuffer.push(vertex.x, vertex.y, vertex.z); } - function getVertexByIndex( index, vertex ) { + function getVertexByIndex(index, vertex) { var stride = index * 3; - vertex.x = vertices[ stride + 0 ]; - vertex.y = vertices[ stride + 1 ]; - vertex.z = vertices[ stride + 2 ]; + vertex.x = vertices[stride + 0]; + vertex.y = vertices[stride + 1]; + vertex.z = vertices[stride + 2]; } @@ -27090,39 +27103,39 @@ var uvB = new Vector2(); var uvC = new Vector2(); - for ( var i = 0, j = 0; i < vertexBuffer.length; i += 9, j += 6 ) { + for (var i = 0, j = 0; i < vertexBuffer.length; i += 9, j += 6) { - a.set( vertexBuffer[ i + 0 ], vertexBuffer[ i + 1 ], vertexBuffer[ i + 2 ] ); - b.set( vertexBuffer[ i + 3 ], vertexBuffer[ i + 4 ], vertexBuffer[ i + 5 ] ); - c.set( vertexBuffer[ i + 6 ], vertexBuffer[ i + 7 ], vertexBuffer[ i + 8 ] ); + a.set(vertexBuffer[i + 0], vertexBuffer[i + 1], vertexBuffer[i + 2]); + b.set(vertexBuffer[i + 3], vertexBuffer[i + 4], vertexBuffer[i + 5]); + c.set(vertexBuffer[i + 6], vertexBuffer[i + 7], vertexBuffer[i + 8]); - uvA.set( uvBuffer[ j + 0 ], uvBuffer[ j + 1 ] ); - uvB.set( uvBuffer[ j + 2 ], uvBuffer[ j + 3 ] ); - uvC.set( uvBuffer[ j + 4 ], uvBuffer[ j + 5 ] ); + uvA.set(uvBuffer[j + 0], uvBuffer[j + 1]); + uvB.set(uvBuffer[j + 2], uvBuffer[j + 3]); + uvC.set(uvBuffer[j + 4], uvBuffer[j + 5]); - centroid.copy( a ).add( b ).add( c ).divideScalar( 3 ); + centroid.copy(a).add(b).add(c).divideScalar(3); - var azi = azimuth( centroid ); + var azi = azimuth(centroid); - correctUV( uvA, j + 0, a, azi ); - correctUV( uvB, j + 2, b, azi ); - correctUV( uvC, j + 4, c, azi ); + correctUV(uvA, j + 0, a, azi); + correctUV(uvB, j + 2, b, azi); + correctUV(uvC, j + 4, c, azi); } } - function correctUV( uv, stride, vector, azimuth ) { + function correctUV(uv, stride, vector, azimuth) { - if ( ( azimuth < 0 ) && ( uv.x === 1 ) ) { + if ((azimuth < 0) && (uv.x === 1)) { - uvBuffer[ stride ] = uv.x - 1; + uvBuffer[stride] = uv.x - 1; } - if ( ( vector.x === 0 ) && ( vector.z === 0 ) ) { + if ((vector.x === 0) && (vector.z === 0)) { - uvBuffer[ stride ] = azimuth / 2 / Math.PI + 0.5; + uvBuffer[stride] = azimuth / 2 / Math.PI + 0.5; } @@ -27130,24 +27143,24 @@ // Angle around the Y axis, counter-clockwise when looking from above. - function azimuth( vector ) { + function azimuth(vector) { - return Math.atan2( vector.z, - vector.x ); + return Math.atan2(vector.z, - vector.x); } // Angle above the XZ plane. - function inclination( vector ) { + function inclination(vector) { - return Math.atan2( - vector.y, Math.sqrt( ( vector.x * vector.x ) + ( vector.z * vector.z ) ) ); + return Math.atan2(- vector.y, Math.sqrt((vector.x * vector.x) + (vector.z * vector.z))); } } - PolyhedronBufferGeometry.prototype = Object.create( BufferGeometry.prototype ); + PolyhedronBufferGeometry.prototype = Object.create(BufferGeometry.prototype); PolyhedronBufferGeometry.prototype.constructor = PolyhedronBufferGeometry; /** @@ -27157,9 +27170,9 @@ // TetrahedronGeometry - function TetrahedronGeometry( radius, detail ) { + function TetrahedronGeometry(radius, detail) { - Geometry.call( this ); + Geometry.call(this); this.type = 'TetrahedronGeometry'; @@ -27168,27 +27181,27 @@ detail: detail }; - this.fromBufferGeometry( new TetrahedronBufferGeometry( radius, detail ) ); + this.fromBufferGeometry(new TetrahedronBufferGeometry(radius, detail)); this.mergeVertices(); } - TetrahedronGeometry.prototype = Object.create( Geometry.prototype ); + TetrahedronGeometry.prototype = Object.create(Geometry.prototype); TetrahedronGeometry.prototype.constructor = TetrahedronGeometry; // TetrahedronBufferGeometry - function TetrahedronBufferGeometry( radius, detail ) { + function TetrahedronBufferGeometry(radius, detail) { var vertices = [ - 1, 1, 1, - 1, - 1, 1, - 1, 1, - 1, 1, - 1, - 1 + 1, 1, 1, - 1, - 1, 1, - 1, 1, - 1, 1, - 1, - 1 ]; var indices = [ - 2, 1, 0, 0, 3, 2, 1, 3, 0, 2, 3, 1 + 2, 1, 0, 0, 3, 2, 1, 3, 0, 2, 3, 1 ]; - PolyhedronBufferGeometry.call( this, vertices, indices, radius, detail ); + PolyhedronBufferGeometry.call(this, vertices, indices, radius, detail); this.type = 'TetrahedronBufferGeometry'; @@ -27199,7 +27212,7 @@ } - TetrahedronBufferGeometry.prototype = Object.create( PolyhedronBufferGeometry.prototype ); + TetrahedronBufferGeometry.prototype = Object.create(PolyhedronBufferGeometry.prototype); TetrahedronBufferGeometry.prototype.constructor = TetrahedronBufferGeometry; /** @@ -27209,9 +27222,9 @@ // OctahedronGeometry - function OctahedronGeometry( radius, detail ) { + function OctahedronGeometry(radius, detail) { - Geometry.call( this ); + Geometry.call(this); this.type = 'OctahedronGeometry'; @@ -27220,30 +27233,30 @@ detail: detail }; - this.fromBufferGeometry( new OctahedronBufferGeometry( radius, detail ) ); + this.fromBufferGeometry(new OctahedronBufferGeometry(radius, detail)); this.mergeVertices(); } - OctahedronGeometry.prototype = Object.create( Geometry.prototype ); + OctahedronGeometry.prototype = Object.create(Geometry.prototype); OctahedronGeometry.prototype.constructor = OctahedronGeometry; // OctahedronBufferGeometry - function OctahedronBufferGeometry( radius, detail ) { + function OctahedronBufferGeometry(radius, detail) { var vertices = [ - 1, 0, 0, - 1, 0, 0, 0, 1, 0, - 0, - 1, 0, 0, 0, 1, 0, 0, - 1 + 1, 0, 0, - 1, 0, 0, 0, 1, 0, + 0, - 1, 0, 0, 0, 1, 0, 0, - 1 ]; var indices = [ - 0, 2, 4, 0, 4, 3, 0, 3, 5, - 0, 5, 2, 1, 2, 5, 1, 5, 3, - 1, 3, 4, 1, 4, 2 + 0, 2, 4, 0, 4, 3, 0, 3, 5, + 0, 5, 2, 1, 2, 5, 1, 5, 3, + 1, 3, 4, 1, 4, 2 ]; - PolyhedronBufferGeometry.call( this, vertices, indices, radius, detail ); + PolyhedronBufferGeometry.call(this, vertices, indices, radius, detail); this.type = 'OctahedronBufferGeometry'; @@ -27254,7 +27267,7 @@ } - OctahedronBufferGeometry.prototype = Object.create( PolyhedronBufferGeometry.prototype ); + OctahedronBufferGeometry.prototype = Object.create(PolyhedronBufferGeometry.prototype); OctahedronBufferGeometry.prototype.constructor = OctahedronBufferGeometry; /** @@ -27264,9 +27277,9 @@ // IcosahedronGeometry - function IcosahedronGeometry( radius, detail ) { + function IcosahedronGeometry(radius, detail) { - Geometry.call( this ); + Geometry.call(this); this.type = 'IcosahedronGeometry'; @@ -27275,34 +27288,34 @@ detail: detail }; - this.fromBufferGeometry( new IcosahedronBufferGeometry( radius, detail ) ); + this.fromBufferGeometry(new IcosahedronBufferGeometry(radius, detail)); this.mergeVertices(); } - IcosahedronGeometry.prototype = Object.create( Geometry.prototype ); + IcosahedronGeometry.prototype = Object.create(Geometry.prototype); IcosahedronGeometry.prototype.constructor = IcosahedronGeometry; // IcosahedronBufferGeometry - function IcosahedronBufferGeometry( radius, detail ) { + function IcosahedronBufferGeometry(radius, detail) { - var t = ( 1 + Math.sqrt( 5 ) ) / 2; + var t = (1 + Math.sqrt(5)) / 2; var vertices = [ - - 1, t, 0, 1, t, 0, - 1, - t, 0, 1, - t, 0, - 0, - 1, t, 0, 1, t, 0, - 1, - t, 0, 1, - t, - t, 0, - 1, t, 0, 1, - t, 0, - 1, - t, 0, 1 + - 1, t, 0, 1, t, 0, - 1, - t, 0, 1, - t, 0, + 0, - 1, t, 0, 1, t, 0, - 1, - t, 0, 1, - t, + t, 0, - 1, t, 0, 1, - t, 0, - 1, - t, 0, 1 ]; var indices = [ - 0, 11, 5, 0, 5, 1, 0, 1, 7, 0, 7, 10, 0, 10, 11, - 1, 5, 9, 5, 11, 4, 11, 10, 2, 10, 7, 6, 7, 1, 8, - 3, 9, 4, 3, 4, 2, 3, 2, 6, 3, 6, 8, 3, 8, 9, - 4, 9, 5, 2, 4, 11, 6, 2, 10, 8, 6, 7, 9, 8, 1 + 0, 11, 5, 0, 5, 1, 0, 1, 7, 0, 7, 10, 0, 10, 11, + 1, 5, 9, 5, 11, 4, 11, 10, 2, 10, 7, 6, 7, 1, 8, + 3, 9, 4, 3, 4, 2, 3, 2, 6, 3, 6, 8, 3, 8, 9, + 4, 9, 5, 2, 4, 11, 6, 2, 10, 8, 6, 7, 9, 8, 1 ]; - PolyhedronBufferGeometry.call( this, vertices, indices, radius, detail ); + PolyhedronBufferGeometry.call(this, vertices, indices, radius, detail); this.type = 'IcosahedronBufferGeometry'; @@ -27313,7 +27326,7 @@ } - IcosahedronBufferGeometry.prototype = Object.create( PolyhedronBufferGeometry.prototype ); + IcosahedronBufferGeometry.prototype = Object.create(PolyhedronBufferGeometry.prototype); IcosahedronBufferGeometry.prototype.constructor = IcosahedronBufferGeometry; /** @@ -27323,9 +27336,9 @@ // DodecahedronGeometry - function DodecahedronGeometry( radius, detail ) { + function DodecahedronGeometry(radius, detail) { - Geometry.call( this ); + Geometry.call(this); this.type = 'DodecahedronGeometry'; @@ -27334,36 +27347,36 @@ detail: detail }; - this.fromBufferGeometry( new DodecahedronBufferGeometry( radius, detail ) ); + this.fromBufferGeometry(new DodecahedronBufferGeometry(radius, detail)); this.mergeVertices(); } - DodecahedronGeometry.prototype = Object.create( Geometry.prototype ); + DodecahedronGeometry.prototype = Object.create(Geometry.prototype); DodecahedronGeometry.prototype.constructor = DodecahedronGeometry; // DodecahedronBufferGeometry - function DodecahedronBufferGeometry( radius, detail ) { + function DodecahedronBufferGeometry(radius, detail) { - var t = ( 1 + Math.sqrt( 5 ) ) / 2; + var t = (1 + Math.sqrt(5)) / 2; var r = 1 / t; var vertices = [ // (±1, ±1, ±1) - - 1, - 1, - 1, - 1, - 1, 1, + - 1, - 1, - 1, - 1, - 1, 1, - 1, 1, - 1, - 1, 1, 1, 1, - 1, - 1, 1, - 1, 1, 1, 1, - 1, 1, 1, 1, // (0, ±1/φ, ±φ) - 0, - r, - t, 0, - r, t, - 0, r, - t, 0, r, t, + 0, - r, - t, 0, - r, t, + 0, r, - t, 0, r, t, // (±1/φ, ±φ, 0) - r, - t, 0, - r, t, 0, - r, - t, 0, r, t, 0, + r, - t, 0, r, t, 0, // (±φ, 0, ±1/φ) - t, 0, - r, t, 0, - r, @@ -27371,21 +27384,21 @@ ]; var indices = [ - 3, 11, 7, 3, 7, 15, 3, 15, 13, - 7, 19, 17, 7, 17, 6, 7, 6, 15, - 17, 4, 8, 17, 8, 10, 17, 10, 6, - 8, 0, 16, 8, 16, 2, 8, 2, 10, - 0, 12, 1, 0, 1, 18, 0, 18, 16, - 6, 10, 2, 6, 2, 13, 6, 13, 15, - 2, 16, 18, 2, 18, 3, 2, 3, 13, - 18, 1, 9, 18, 9, 11, 18, 11, 3, - 4, 14, 12, 4, 12, 0, 4, 0, 8, - 11, 9, 5, 11, 5, 19, 11, 19, 7, - 19, 5, 14, 19, 14, 4, 19, 4, 17, - 1, 12, 14, 1, 14, 5, 1, 5, 9 + 3, 11, 7, 3, 7, 15, 3, 15, 13, + 7, 19, 17, 7, 17, 6, 7, 6, 15, + 17, 4, 8, 17, 8, 10, 17, 10, 6, + 8, 0, 16, 8, 16, 2, 8, 2, 10, + 0, 12, 1, 0, 1, 18, 0, 18, 16, + 6, 10, 2, 6, 2, 13, 6, 13, 15, + 2, 16, 18, 2, 18, 3, 2, 3, 13, + 18, 1, 9, 18, 9, 11, 18, 11, 3, + 4, 14, 12, 4, 12, 0, 4, 0, 8, + 11, 9, 5, 11, 5, 19, 11, 19, 7, + 19, 5, 14, 19, 14, 4, 19, 4, 17, + 1, 12, 14, 1, 14, 5, 1, 5, 9 ]; - PolyhedronBufferGeometry.call( this, vertices, indices, radius, detail ); + PolyhedronBufferGeometry.call(this, vertices, indices, radius, detail); this.type = 'DodecahedronBufferGeometry'; @@ -27396,7 +27409,7 @@ } - DodecahedronBufferGeometry.prototype = Object.create( PolyhedronBufferGeometry.prototype ); + DodecahedronBufferGeometry.prototype = Object.create(PolyhedronBufferGeometry.prototype); DodecahedronBufferGeometry.prototype.constructor = DodecahedronBufferGeometry; /** @@ -27411,9 +27424,9 @@ // TubeGeometry - function TubeGeometry( path, tubularSegments, radius, radialSegments, closed, taper ) { + function TubeGeometry(path, tubularSegments, radius, radialSegments, closed, taper) { - Geometry.call( this ); + Geometry.call(this); this.type = 'TubeGeometry'; @@ -27425,9 +27438,9 @@ closed: closed }; - if ( taper !== undefined ) console.warn( 'THREE.TubeGeometry: taper has been removed.' ); + if (taper !== undefined) console.warn('THREE.TubeGeometry: taper has been removed.'); - var bufferGeometry = new TubeBufferGeometry( path, tubularSegments, radius, radialSegments, closed ); + var bufferGeometry = new TubeBufferGeometry(path, tubularSegments, radius, radialSegments, closed); // expose internals @@ -27437,19 +27450,19 @@ // create geometry - this.fromBufferGeometry( bufferGeometry ); + this.fromBufferGeometry(bufferGeometry); this.mergeVertices(); } - TubeGeometry.prototype = Object.create( Geometry.prototype ); + TubeGeometry.prototype = Object.create(Geometry.prototype); TubeGeometry.prototype.constructor = TubeGeometry; // TubeBufferGeometry - function TubeBufferGeometry( path, tubularSegments, radius, radialSegments, closed ) { + function TubeBufferGeometry(path, tubularSegments, radius, radialSegments, closed) { - BufferGeometry.call( this ); + BufferGeometry.call(this); this.type = 'TubeBufferGeometry'; @@ -27466,7 +27479,7 @@ radialSegments = radialSegments || 8; closed = closed || false; - var frames = path.computeFrenetFrames( tubularSegments, closed ); + var frames = path.computeFrenetFrames(tubularSegments, closed); // expose internals @@ -27496,18 +27509,18 @@ // build geometry - this.setIndex( indices ); - this.addAttribute( 'position', new Float32BufferAttribute( vertices, 3 ) ); - this.addAttribute( 'normal', new Float32BufferAttribute( normals, 3 ) ); - this.addAttribute( 'uv', new Float32BufferAttribute( uvs, 2 ) ); + this.setIndex(indices); + this.addAttribute('position', new Float32BufferAttribute(vertices, 3)); + this.addAttribute('normal', new Float32BufferAttribute(normals, 3)); + this.addAttribute('uv', new Float32BufferAttribute(uvs, 2)); // functions function generateBufferData() { - for ( i = 0; i < tubularSegments; i ++ ) { + for (i = 0; i < tubularSegments; i++) { - generateSegment( i ); + generateSegment(i); } @@ -27516,7 +27529,7 @@ // // if the geometry is closed, duplicate the first row of vertices and normals (uvs will differ) - generateSegment( ( closed === false ) ? tubularSegments : 0 ); + generateSegment((closed === false) ? tubularSegments : 0); // uvs are generated in a separate function. // this makes it easy compute correct values for closed geometries @@ -27529,34 +27542,34 @@ } - function generateSegment( i ) { + function generateSegment(i) { // we use getPointAt to sample evenly distributed points from the given path - P = path.getPointAt( i / tubularSegments, P ); + P = path.getPointAt(i / tubularSegments, P); // retrieve corresponding normal and binormal - var N = frames.normals[ i ]; - var B = frames.binormals[ i ]; + var N = frames.normals[i]; + var B = frames.binormals[i]; // generate normals and vertices for the current segment - for ( j = 0; j <= radialSegments; j ++ ) { + for (j = 0; j <= radialSegments; j++) { var v = j / radialSegments * Math.PI * 2; - var sin = Math.sin( v ); - var cos = - Math.cos( v ); + var sin = Math.sin(v); + var cos = - Math.cos(v); // normal - normal.x = ( cos * N.x + sin * B.x ); - normal.y = ( cos * N.y + sin * B.y ); - normal.z = ( cos * N.z + sin * B.z ); + normal.x = (cos * N.x + sin * B.x); + normal.y = (cos * N.y + sin * B.y); + normal.z = (cos * N.z + sin * B.z); normal.normalize(); - normals.push( normal.x, normal.y, normal.z ); + normals.push(normal.x, normal.y, normal.z); // vertex @@ -27564,7 +27577,7 @@ vertex.y = P.y + radius * normal.y; vertex.z = P.z + radius * normal.z; - vertices.push( vertex.x, vertex.y, vertex.z ); + vertices.push(vertex.x, vertex.y, vertex.z); } @@ -27572,19 +27585,19 @@ function generateIndices() { - for ( j = 1; j <= tubularSegments; j ++ ) { + for (j = 1; j <= tubularSegments; j++) { - for ( i = 1; i <= radialSegments; i ++ ) { + for (i = 1; i <= radialSegments; i++) { - var a = ( radialSegments + 1 ) * ( j - 1 ) + ( i - 1 ); - var b = ( radialSegments + 1 ) * j + ( i - 1 ); - var c = ( radialSegments + 1 ) * j + i; - var d = ( radialSegments + 1 ) * ( j - 1 ) + i; + var a = (radialSegments + 1) * (j - 1) + (i - 1); + var b = (radialSegments + 1) * j + (i - 1); + var c = (radialSegments + 1) * j + i; + var d = (radialSegments + 1) * (j - 1) + i; // faces - indices.push( a, b, d ); - indices.push( b, c, d ); + indices.push(a, b, d); + indices.push(b, c, d); } @@ -27594,14 +27607,14 @@ function generateUVs() { - for ( i = 0; i <= tubularSegments; i ++ ) { + for (i = 0; i <= tubularSegments; i++) { - for ( j = 0; j <= radialSegments; j ++ ) { + for (j = 0; j <= radialSegments; j++) { uv.x = i / tubularSegments; uv.y = j / radialSegments; - uvs.push( uv.x, uv.y ); + uvs.push(uv.x, uv.y); } @@ -27611,7 +27624,7 @@ } - TubeBufferGeometry.prototype = Object.create( BufferGeometry.prototype ); + TubeBufferGeometry.prototype = Object.create(BufferGeometry.prototype); TubeBufferGeometry.prototype.constructor = TubeBufferGeometry; /** @@ -27623,9 +27636,9 @@ // TorusKnotGeometry - function TorusKnotGeometry( radius, tube, tubularSegments, radialSegments, p, q, heightScale ) { + function TorusKnotGeometry(radius, tube, tubularSegments, radialSegments, p, q, heightScale) { - Geometry.call( this ); + Geometry.call(this); this.type = 'TorusKnotGeometry'; @@ -27638,21 +27651,21 @@ q: q }; - if ( heightScale !== undefined ) console.warn( 'THREE.TorusKnotGeometry: heightScale has been deprecated. Use .scale( x, y, z ) instead.' ); + if (heightScale !== undefined) console.warn('THREE.TorusKnotGeometry: heightScale has been deprecated. Use .scale( x, y, z ) instead.'); - this.fromBufferGeometry( new TorusKnotBufferGeometry( radius, tube, tubularSegments, radialSegments, p, q ) ); + this.fromBufferGeometry(new TorusKnotBufferGeometry(radius, tube, tubularSegments, radialSegments, p, q)); this.mergeVertices(); } - TorusKnotGeometry.prototype = Object.create( Geometry.prototype ); + TorusKnotGeometry.prototype = Object.create(Geometry.prototype); TorusKnotGeometry.prototype.constructor = TorusKnotGeometry; // TorusKnotBufferGeometry - function TorusKnotBufferGeometry( radius, tube, tubularSegments, radialSegments, p, q ) { + function TorusKnotBufferGeometry(radius, tube, tubularSegments, radialSegments, p, q) { - BufferGeometry.call( this ); + BufferGeometry.call(this); this.type = 'TorusKnotBufferGeometry'; @@ -27667,8 +27680,8 @@ radius = radius || 1; tube = tube || 0.4; - tubularSegments = Math.floor( tubularSegments ) || 64; - radialSegments = Math.floor( radialSegments ) || 8; + tubularSegments = Math.floor(tubularSegments) || 64; + radialSegments = Math.floor(radialSegments) || 8; p = p || 2; q = q || 3; @@ -27695,7 +27708,7 @@ // generate vertices, normals and uvs - for ( i = 0; i <= tubularSegments; ++ i ) { + for (i = 0; i <= tubularSegments; ++i) { // the radian "u" is used to calculate the position on the torus curve of the current tubular segement @@ -27704,49 +27717,49 @@ // now we calculate two points. P1 is our current position on the curve, P2 is a little farther ahead. // these points are used to create a special "coordinate space", which is necessary to calculate the correct vertex positions - calculatePositionOnCurve( u, p, q, radius, P1 ); - calculatePositionOnCurve( u + 0.01, p, q, radius, P2 ); + calculatePositionOnCurve(u, p, q, radius, P1); + calculatePositionOnCurve(u + 0.01, p, q, radius, P2); // calculate orthonormal basis - T.subVectors( P2, P1 ); - N.addVectors( P2, P1 ); - B.crossVectors( T, N ); - N.crossVectors( B, T ); + T.subVectors(P2, P1); + N.addVectors(P2, P1); + B.crossVectors(T, N); + N.crossVectors(B, T); // normalize B, N. T can be ignored, we don't use it B.normalize(); N.normalize(); - for ( j = 0; j <= radialSegments; ++ j ) { + for (j = 0; j <= radialSegments; ++j) { // now calculate the vertices. they are nothing more than an extrusion of the torus curve. // because we extrude a shape in the xy-plane, there is no need to calculate a z-value. var v = j / radialSegments * Math.PI * 2; - var cx = - tube * Math.cos( v ); - var cy = tube * Math.sin( v ); + var cx = - tube * Math.cos(v); + var cy = tube * Math.sin(v); // now calculate the final vertex position. // first we orient the extrusion with our basis vectos, then we add it to the current position on the curve - vertex.x = P1.x + ( cx * N.x + cy * B.x ); - vertex.y = P1.y + ( cx * N.y + cy * B.y ); - vertex.z = P1.z + ( cx * N.z + cy * B.z ); + vertex.x = P1.x + (cx * N.x + cy * B.x); + vertex.y = P1.y + (cx * N.y + cy * B.y); + vertex.z = P1.z + (cx * N.z + cy * B.z); - vertices.push( vertex.x, vertex.y, vertex.z ); + vertices.push(vertex.x, vertex.y, vertex.z); // normal (P1 is always the center/origin of the extrusion, thus we can use it to calculate the normal) - normal.subVectors( vertex, P1 ).normalize(); + normal.subVectors(vertex, P1).normalize(); - normals.push( normal.x, normal.y, normal.z ); + normals.push(normal.x, normal.y, normal.z); // uv - uvs.push( i / tubularSegments ); - uvs.push( j / radialSegments ); + uvs.push(i / tubularSegments); + uvs.push(j / radialSegments); } @@ -27754,21 +27767,21 @@ // generate indices - for ( j = 1; j <= tubularSegments; j ++ ) { + for (j = 1; j <= tubularSegments; j++) { - for ( i = 1; i <= radialSegments; i ++ ) { + for (i = 1; i <= radialSegments; i++) { // indices - var a = ( radialSegments + 1 ) * ( j - 1 ) + ( i - 1 ); - var b = ( radialSegments + 1 ) * j + ( i - 1 ); - var c = ( radialSegments + 1 ) * j + i; - var d = ( radialSegments + 1 ) * ( j - 1 ) + i; + var a = (radialSegments + 1) * (j - 1) + (i - 1); + var b = (radialSegments + 1) * j + (i - 1); + var c = (radialSegments + 1) * j + i; + var d = (radialSegments + 1) * (j - 1) + i; // faces - indices.push( a, b, d ); - indices.push( b, c, d ); + indices.push(a, b, d); + indices.push(b, c, d); } @@ -27776,29 +27789,29 @@ // build geometry - this.setIndex( indices ); - this.addAttribute( 'position', new Float32BufferAttribute( vertices, 3 ) ); - this.addAttribute( 'normal', new Float32BufferAttribute( normals, 3 ) ); - this.addAttribute( 'uv', new Float32BufferAttribute( uvs, 2 ) ); + this.setIndex(indices); + this.addAttribute('position', new Float32BufferAttribute(vertices, 3)); + this.addAttribute('normal', new Float32BufferAttribute(normals, 3)); + this.addAttribute('uv', new Float32BufferAttribute(uvs, 2)); // this function calculates the current position on the torus curve - function calculatePositionOnCurve( u, p, q, radius, position ) { + function calculatePositionOnCurve(u, p, q, radius, position) { - var cu = Math.cos( u ); - var su = Math.sin( u ); + var cu = Math.cos(u); + var su = Math.sin(u); var quOverP = q / p * u; - var cs = Math.cos( quOverP ); + var cs = Math.cos(quOverP); - position.x = radius * ( 2 + cs ) * 0.5 * cu; - position.y = radius * ( 2 + cs ) * su * 0.5; - position.z = radius * Math.sin( quOverP ) * 0.5; + position.x = radius * (2 + cs) * 0.5 * cu; + position.y = radius * (2 + cs) * su * 0.5; + position.z = radius * Math.sin(quOverP) * 0.5; } } - TorusKnotBufferGeometry.prototype = Object.create( BufferGeometry.prototype ); + TorusKnotBufferGeometry.prototype = Object.create(BufferGeometry.prototype); TorusKnotBufferGeometry.prototype.constructor = TorusKnotBufferGeometry; /** @@ -27809,9 +27822,9 @@ // TorusGeometry - function TorusGeometry( radius, tube, radialSegments, tubularSegments, arc ) { + function TorusGeometry(radius, tube, radialSegments, tubularSegments, arc) { - Geometry.call( this ); + Geometry.call(this); this.type = 'TorusGeometry'; @@ -27823,19 +27836,19 @@ arc: arc }; - this.fromBufferGeometry( new TorusBufferGeometry( radius, tube, radialSegments, tubularSegments, arc ) ); + this.fromBufferGeometry(new TorusBufferGeometry(radius, tube, radialSegments, tubularSegments, arc)); this.mergeVertices(); } - TorusGeometry.prototype = Object.create( Geometry.prototype ); + TorusGeometry.prototype = Object.create(Geometry.prototype); TorusGeometry.prototype.constructor = TorusGeometry; // TorusBufferGeometry - function TorusBufferGeometry( radius, tube, radialSegments, tubularSegments, arc ) { + function TorusBufferGeometry(radius, tube, radialSegments, tubularSegments, arc) { - BufferGeometry.call( this ); + BufferGeometry.call(this); this.type = 'TorusBufferGeometry'; @@ -27849,8 +27862,8 @@ radius = radius || 1; tube = tube || 0.4; - radialSegments = Math.floor( radialSegments ) || 8; - tubularSegments = Math.floor( tubularSegments ) || 6; + radialSegments = Math.floor(radialSegments) || 8; + tubularSegments = Math.floor(tubularSegments) || 6; arc = arc || Math.PI * 2; // buffers @@ -27870,33 +27883,33 @@ // generate vertices, normals and uvs - for ( j = 0; j <= radialSegments; j ++ ) { + for (j = 0; j <= radialSegments; j++) { - for ( i = 0; i <= tubularSegments; i ++ ) { + for (i = 0; i <= tubularSegments; i++) { var u = i / tubularSegments * arc; var v = j / radialSegments * Math.PI * 2; // vertex - vertex.x = ( radius + tube * Math.cos( v ) ) * Math.cos( u ); - vertex.y = ( radius + tube * Math.cos( v ) ) * Math.sin( u ); - vertex.z = tube * Math.sin( v ); + vertex.x = (radius + tube * Math.cos(v)) * Math.cos(u); + vertex.y = (radius + tube * Math.cos(v)) * Math.sin(u); + vertex.z = tube * Math.sin(v); - vertices.push( vertex.x, vertex.y, vertex.z ); + vertices.push(vertex.x, vertex.y, vertex.z); // normal - center.x = radius * Math.cos( u ); - center.y = radius * Math.sin( u ); - normal.subVectors( vertex, center ).normalize(); + center.x = radius * Math.cos(u); + center.y = radius * Math.sin(u); + normal.subVectors(vertex, center).normalize(); - normals.push( normal.x, normal.y, normal.z ); + normals.push(normal.x, normal.y, normal.z); // uv - uvs.push( i / tubularSegments ); - uvs.push( j / radialSegments ); + uvs.push(i / tubularSegments); + uvs.push(j / radialSegments); } @@ -27904,21 +27917,21 @@ // generate indices - for ( j = 1; j <= radialSegments; j ++ ) { + for (j = 1; j <= radialSegments; j++) { - for ( i = 1; i <= tubularSegments; i ++ ) { + for (i = 1; i <= tubularSegments; i++) { // indices - var a = ( tubularSegments + 1 ) * j + i - 1; - var b = ( tubularSegments + 1 ) * ( j - 1 ) + i - 1; - var c = ( tubularSegments + 1 ) * ( j - 1 ) + i; - var d = ( tubularSegments + 1 ) * j + i; + var a = (tubularSegments + 1) * j + i - 1; + var b = (tubularSegments + 1) * (j - 1) + i - 1; + var c = (tubularSegments + 1) * (j - 1) + i; + var d = (tubularSegments + 1) * j + i; // faces - indices.push( a, b, d ); - indices.push( b, c, d ); + indices.push(a, b, d); + indices.push(b, c, d); } @@ -27926,14 +27939,14 @@ // build geometry - this.setIndex( indices ); - this.addAttribute( 'position', new Float32BufferAttribute( vertices, 3 ) ); - this.addAttribute( 'normal', new Float32BufferAttribute( normals, 3 ) ); - this.addAttribute( 'uv', new Float32BufferAttribute( uvs, 2 ) ); + this.setIndex(indices); + this.addAttribute('position', new Float32BufferAttribute(vertices, 3)); + this.addAttribute('normal', new Float32BufferAttribute(normals, 3)); + this.addAttribute('uv', new Float32BufferAttribute(uvs, 2)); } - TorusBufferGeometry.prototype = Object.create( BufferGeometry.prototype ); + TorusBufferGeometry.prototype = Object.create(BufferGeometry.prototype); TorusBufferGeometry.prototype.constructor = TorusBufferGeometry; /** @@ -27943,47 +27956,47 @@ var Earcut = { - triangulate: function ( data, holeIndices, dim ) { + triangulate: function (data, holeIndices, dim) { dim = dim || 2; var hasHoles = holeIndices && holeIndices.length, - outerLen = hasHoles ? holeIndices[ 0 ] * dim : data.length, - outerNode = linkedList( data, 0, outerLen, dim, true ), + outerLen = hasHoles ? holeIndices[0] * dim : data.length, + outerNode = linkedList(data, 0, outerLen, dim, true), triangles = []; - if ( ! outerNode ) return triangles; + if (!outerNode) return triangles; var minX, minY, maxX, maxY, x, y, invSize; - if ( hasHoles ) outerNode = eliminateHoles( data, holeIndices, outerNode, dim ); + if (hasHoles) outerNode = eliminateHoles(data, holeIndices, outerNode, dim); // if the shape is not too simple, we'll use z-order curve hash later; calculate polygon bbox - if ( data.length > 80 * dim ) { + if (data.length > 80 * dim) { - minX = maxX = data[ 0 ]; - minY = maxY = data[ 1 ]; + minX = maxX = data[0]; + minY = maxY = data[1]; - for ( var i = dim; i < outerLen; i += dim ) { + for (var i = dim; i < outerLen; i += dim) { - x = data[ i ]; - y = data[ i + 1 ]; - if ( x < minX ) minX = x; - if ( y < minY ) minY = y; - if ( x > maxX ) maxX = x; - if ( y > maxY ) maxY = y; + x = data[i]; + y = data[i + 1]; + if (x < minX) minX = x; + if (y < minY) minY = y; + if (x > maxX) maxX = x; + if (y > maxY) maxY = y; } // minX, minY and invSize are later used to transform coords into integers for z-order calculation - invSize = Math.max( maxX - minX, maxY - minY ); + invSize = Math.max(maxX - minX, maxY - minY); invSize = invSize !== 0 ? 1 / invSize : 0; } - earcutLinked( outerNode, triangles, dim, minX, minY, invSize ); + earcutLinked(outerNode, triangles, dim, minX, minY, invSize); return triangles; @@ -27993,23 +28006,23 @@ // create a circular doubly linked list from polygon points in the specified winding order - function linkedList( data, start, end, dim, clockwise ) { + function linkedList(data, start, end, dim, clockwise) { var i, last; - if ( clockwise === ( signedArea( data, start, end, dim ) > 0 ) ) { + if (clockwise === (signedArea(data, start, end, dim) > 0)) { - for ( i = start; i < end; i += dim ) last = insertNode( i, data[ i ], data[ i + 1 ], last ); + for (i = start; i < end; i += dim) last = insertNode(i, data[i], data[i + 1], last); } else { - for ( i = end - dim; i >= start; i -= dim ) last = insertNode( i, data[ i ], data[ i + 1 ], last ); + for (i = end - dim; i >= start; i -= dim) last = insertNode(i, data[i], data[i + 1], last); } - if ( last && equals( last, last.next ) ) { + if (last && equals(last, last.next)) { - removeNode( last ); + removeNode(last); last = last.next; } @@ -28020,10 +28033,10 @@ // eliminate colinear or duplicate points - function filterPoints( start, end ) { + function filterPoints(start, end) { - if ( ! start ) return start; - if ( ! end ) end = start; + if (!start) return start; + if (!end) end = start; var p = start, again; @@ -28031,11 +28044,11 @@ again = false; - if ( ! p.steiner && ( equals( p, p.next ) || area( p.prev, p, p.next ) === 0 ) ) { + if (!p.steiner && (equals(p, p.next) || area(p.prev, p, p.next) === 0)) { - removeNode( p ); + removeNode(p); p = end = p.prev; - if ( p === p.next ) break; + if (p === p.next) break; again = true; } else { @@ -28044,7 +28057,7 @@ } - } while ( again || p !== end ); + } while (again || p !== end); return end; @@ -28052,31 +28065,31 @@ // main ear slicing loop which triangulates a polygon (given as a linked list) - function earcutLinked( ear, triangles, dim, minX, minY, invSize, pass ) { + function earcutLinked(ear, triangles, dim, minX, minY, invSize, pass) { - if ( ! ear ) return; + if (!ear) return; // interlink polygon nodes in z-order - if ( ! pass && invSize ) indexCurve( ear, minX, minY, invSize ); + if (!pass && invSize) indexCurve(ear, minX, minY, invSize); var stop = ear, prev, next; // iterate through ears, slicing them one by one - while ( ear.prev !== ear.next ) { + while (ear.prev !== ear.next) { prev = ear.prev; next = ear.next; - if ( invSize ? isEarHashed( ear, minX, minY, invSize ) : isEar( ear ) ) { + if (invSize ? isEarHashed(ear, minX, minY, invSize) : isEar(ear)) { // cut off the triangle - triangles.push( prev.i / dim ); - triangles.push( ear.i / dim ); - triangles.push( next.i / dim ); + triangles.push(prev.i / dim); + triangles.push(ear.i / dim); + triangles.push(next.i / dim); - removeNode( ear ); + removeNode(ear); // skipping the next vertice leads to less sliver triangles ear = next.next; @@ -28090,26 +28103,26 @@ // if we looped through the whole remaining polygon and can't find any more ears - if ( ear === stop ) { + if (ear === stop) { // try filtering points and slicing again - if ( ! pass ) { + if (!pass) { - earcutLinked( filterPoints( ear ), triangles, dim, minX, minY, invSize, 1 ); + earcutLinked(filterPoints(ear), triangles, dim, minX, minY, invSize, 1); // if this didn't work, try curing all small self-intersections locally - } else if ( pass === 1 ) { + } else if (pass === 1) { - ear = cureLocalIntersections( ear, triangles, dim ); - earcutLinked( ear, triangles, dim, minX, minY, invSize, 2 ); + ear = cureLocalIntersections(ear, triangles, dim); + earcutLinked(ear, triangles, dim, minX, minY, invSize, 2); // as a last resort, try splitting the remaining polygon into two - } else if ( pass === 2 ) { + } else if (pass === 2) { - splitEarcut( ear, triangles, dim, minX, minY, invSize ); + splitEarcut(ear, triangles, dim, minX, minY, invSize); } @@ -28123,20 +28136,20 @@ // check whether a polygon node forms a valid ear with adjacent nodes - function isEar( ear ) { + function isEar(ear) { var a = ear.prev, b = ear, c = ear.next; - if ( area( a, b, c ) >= 0 ) return false; // reflex, can't be an ear + if (area(a, b, c) >= 0) return false; // reflex, can't be an ear // now make sure we don't have other points inside the potential ear var p = ear.next.next; - while ( p !== ear.prev ) { + while (p !== ear.prev) { - if ( pointInTriangle( a.x, a.y, b.x, b.y, c.x, c.y, p.x, p.y ) && area( p.prev, p, p.next ) >= 0 ) { + if (pointInTriangle(a.x, a.y, b.x, b.y, c.x, c.y, p.x, p.y) && area(p.prev, p, p.next) >= 0) { return false; @@ -28150,35 +28163,35 @@ } - function isEarHashed( ear, minX, minY, invSize ) { + function isEarHashed(ear, minX, minY, invSize) { var a = ear.prev, b = ear, c = ear.next; - if ( area( a, b, c ) >= 0 ) return false; // reflex, can't be an ear + if (area(a, b, c) >= 0) return false; // reflex, can't be an ear // triangle bbox; min & max are calculated like this for speed - var minTX = a.x < b.x ? ( a.x < c.x ? a.x : c.x ) : ( b.x < c.x ? b.x : c.x ), - minTY = a.y < b.y ? ( a.y < c.y ? a.y : c.y ) : ( b.y < c.y ? b.y : c.y ), - maxTX = a.x > b.x ? ( a.x > c.x ? a.x : c.x ) : ( b.x > c.x ? b.x : c.x ), - maxTY = a.y > b.y ? ( a.y > c.y ? a.y : c.y ) : ( b.y > c.y ? b.y : c.y ); + var minTX = a.x < b.x ? (a.x < c.x ? a.x : c.x) : (b.x < c.x ? b.x : c.x), + minTY = a.y < b.y ? (a.y < c.y ? a.y : c.y) : (b.y < c.y ? b.y : c.y), + maxTX = a.x > b.x ? (a.x > c.x ? a.x : c.x) : (b.x > c.x ? b.x : c.x), + maxTY = a.y > b.y ? (a.y > c.y ? a.y : c.y) : (b.y > c.y ? b.y : c.y); // z-order range for the current triangle bbox; - var minZ = zOrder( minTX, minTY, minX, minY, invSize ), - maxZ = zOrder( maxTX, maxTY, minX, minY, invSize ); + var minZ = zOrder(minTX, minTY, minX, minY, invSize), + maxZ = zOrder(maxTX, maxTY, minX, minY, invSize); // first look for points inside the triangle in increasing z-order var p = ear.nextZ; - while ( p && p.z <= maxZ ) { + while (p && p.z <= maxZ) { - if ( p !== ear.prev && p !== ear.next && - pointInTriangle( a.x, a.y, b.x, b.y, c.x, c.y, p.x, p.y ) && - area( p.prev, p, p.next ) >= 0 ) return false; + if (p !== ear.prev && p !== ear.next && + pointInTriangle(a.x, a.y, b.x, b.y, c.x, c.y, p.x, p.y) && + area(p.prev, p, p.next) >= 0) return false; p = p.nextZ; } @@ -28187,11 +28200,11 @@ p = ear.prevZ; - while ( p && p.z >= minZ ) { + while (p && p.z >= minZ) { - if ( p !== ear.prev && p !== ear.next && - pointInTriangle( a.x, a.y, b.x, b.y, c.x, c.y, p.x, p.y ) && - area( p.prev, p, p.next ) >= 0 ) return false; + if (p !== ear.prev && p !== ear.next && + pointInTriangle(a.x, a.y, b.x, b.y, c.x, c.y, p.x, p.y) && + area(p.prev, p, p.next) >= 0) return false; p = p.prevZ; @@ -28203,7 +28216,7 @@ // go through all polygon nodes and cure small local self-intersections - function cureLocalIntersections( start, triangles, dim ) { + function cureLocalIntersections(start, triangles, dim) { var p = start; @@ -28211,16 +28224,16 @@ var a = p.prev, b = p.next.next; - if ( ! equals( a, b ) && intersects( a, p, p.next, b ) && locallyInside( a, b ) && locallyInside( b, a ) ) { + if (!equals(a, b) && intersects(a, p, p.next, b) && locallyInside(a, b) && locallyInside(b, a)) { - triangles.push( a.i / dim ); - triangles.push( p.i / dim ); - triangles.push( b.i / dim ); + triangles.push(a.i / dim); + triangles.push(p.i / dim); + triangles.push(b.i / dim); // remove two nodes involved - removeNode( p ); - removeNode( p.next ); + removeNode(p); + removeNode(p.next); p = start = b; @@ -28228,7 +28241,7 @@ p = p.next; - } while ( p !== start ); + } while (p !== start); return p; @@ -28236,7 +28249,7 @@ // try splitting polygon into two and triangulate them independently - function splitEarcut( start, triangles, dim, minX, minY, invSize ) { + function splitEarcut(start, triangles, dim, minX, minY, invSize) { // look for a valid diagonal that divides the polygon into two @@ -28246,23 +28259,23 @@ var b = a.next.next; - while ( b !== a.prev ) { + while (b !== a.prev) { - if ( a.i !== b.i && isValidDiagonal( a, b ) ) { + if (a.i !== b.i && isValidDiagonal(a, b)) { // split the polygon in two by the diagonal - var c = splitPolygon( a, b ); + var c = splitPolygon(a, b); // filter colinear points around the cuts - a = filterPoints( a, a.next ); - c = filterPoints( c, c.next ); + a = filterPoints(a, a.next); + c = filterPoints(c, c.next); // run earcut on each half - earcutLinked( a, triangles, dim, minX, minY, invSize ); - earcutLinked( c, triangles, dim, minX, minY, invSize ); + earcutLinked(a, triangles, dim, minX, minY, invSize); + earcutLinked(c, triangles, dim, minX, minY, invSize); return; } @@ -28273,34 +28286,34 @@ a = a.next; - } while ( a !== start ); + } while (a !== start); } // link every hole into the outer loop, producing a single-ring polygon without holes - function eliminateHoles( data, holeIndices, outerNode, dim ) { + function eliminateHoles(data, holeIndices, outerNode, dim) { var queue = [], i, len, start, end, list; - for ( i = 0, len = holeIndices.length; i < len; i ++ ) { + for (i = 0, len = holeIndices.length; i < len; i++) { - start = holeIndices[ i ] * dim; - end = i < len - 1 ? holeIndices[ i + 1 ] * dim : data.length; - list = linkedList( data, start, end, dim, false ); - if ( list === list.next ) list.steiner = true; - queue.push( getLeftmost( list ) ); + start = holeIndices[i] * dim; + end = i < len - 1 ? holeIndices[i + 1] * dim : data.length; + list = linkedList(data, start, end, dim, false); + if (list === list.next) list.steiner = true; + queue.push(getLeftmost(list)); } - queue.sort( compareX ); + queue.sort(compareX); // process holes from left to right - for ( i = 0; i < queue.length; i ++ ) { + for (i = 0; i < queue.length; i++) { - eliminateHole( queue[ i ], outerNode ); - outerNode = filterPoints( outerNode, outerNode.next ); + eliminateHole(queue[i], outerNode); + outerNode = filterPoints(outerNode, outerNode.next); } @@ -28308,7 +28321,7 @@ } - function compareX( a, b ) { + function compareX(a, b) { return a.x - b.x; @@ -28316,15 +28329,15 @@ // find a bridge between vertices that connects hole with an outer ring and and link it - function eliminateHole( hole, outerNode ) { + function eliminateHole(hole, outerNode) { - outerNode = findHoleBridge( hole, outerNode ); + outerNode = findHoleBridge(hole, outerNode); - if ( outerNode ) { + if (outerNode) { - var b = splitPolygon( outerNode, hole ); + var b = splitPolygon(outerNode, hole); - filterPoints( b, b.next ); + filterPoints(b, b.next); } @@ -28332,7 +28345,7 @@ // David Eberly's algorithm for finding a bridge between hole and outer polygon - function findHoleBridge( hole, outerNode ) { + function findHoleBridge(hole, outerNode) { var p = outerNode, hx = hole.x, @@ -28345,18 +28358,18 @@ do { - if ( hy <= p.y && hy >= p.next.y && p.next.y !== p.y ) { + if (hy <= p.y && hy >= p.next.y && p.next.y !== p.y) { - var x = p.x + ( hy - p.y ) * ( p.next.x - p.x ) / ( p.next.y - p.y ); + var x = p.x + (hy - p.y) * (p.next.x - p.x) / (p.next.y - p.y); - if ( x <= hx && x > qx ) { + if (x <= hx && x > qx) { qx = x; - if ( x === hx ) { + if (x === hx) { - if ( hy === p.y ) return p; - if ( hy === p.next.y ) return p.next; + if (hy === p.y) return p; + if (hy === p.next.y) return p.next; } @@ -28368,11 +28381,11 @@ p = p.next; - } while ( p !== outerNode ); + } while (p !== outerNode); - if ( ! m ) return null; + if (!m) return null; - if ( hx === qx ) return m.prev; // hole touches outer segment; pick lower endpoint + if (hx === qx) return m.prev; // hole touches outer segment; pick lower endpoint // look for points inside the triangle of hole point, segment intersection and endpoint; // if there are no points found, we have a valid connection; @@ -28386,14 +28399,14 @@ p = m.next; - while ( p !== stop ) { + while (p !== stop) { - if ( hx >= p.x && p.x >= mx && hx !== p.x && - pointInTriangle( hy < my ? hx : qx, hy, mx, my, hy < my ? qx : hx, hy, p.x, p.y ) ) { + if (hx >= p.x && p.x >= mx && hx !== p.x && + pointInTriangle(hy < my ? hx : qx, hy, mx, my, hy < my ? qx : hx, hy, p.x, p.y)) { - tan = Math.abs( hy - p.y ) / ( hx - p.x ); // tangential + tan = Math.abs(hy - p.y) / (hx - p.x); // tangential - if ( ( tan < tanMin || ( tan === tanMin && p.x > m.x ) ) && locallyInside( p, hole ) ) { + if ((tan < tanMin || (tan === tanMin && p.x > m.x)) && locallyInside(p, hole)) { m = p; tanMin = tan; @@ -28412,30 +28425,30 @@ // interlink polygon nodes in z-order - function indexCurve( start, minX, minY, invSize ) { + function indexCurve(start, minX, minY, invSize) { var p = start; do { - if ( p.z === null ) p.z = zOrder( p.x, p.y, minX, minY, invSize ); + if (p.z === null) p.z = zOrder(p.x, p.y, minX, minY, invSize); p.prevZ = p.prev; p.nextZ = p.next; p = p.next; - } while ( p !== start ); + } while (p !== start); p.prevZ.nextZ = null; p.prevZ = null; - sortLinked( p ); + sortLinked(p); } // Simon Tatham's linked list merge sort algorithm // http://www.chiark.greenend.org.uk/~sgtatham/algorithms/listsort.html - function sortLinked( list ) { + function sortLinked(list) { var i, p, q, e, tail, numMerges, pSize, qSize, inSize = 1; @@ -28446,39 +28459,39 @@ tail = null; numMerges = 0; - while ( p ) { + while (p) { - numMerges ++; + numMerges++; q = p; pSize = 0; - for ( i = 0; i < inSize; i ++ ) { + for (i = 0; i < inSize; i++) { - pSize ++; + pSize++; q = q.nextZ; - if ( ! q ) break; + if (!q) break; } qSize = inSize; - while ( pSize > 0 || ( qSize > 0 && q ) ) { + while (pSize > 0 || (qSize > 0 && q)) { - if ( pSize !== 0 && ( qSize === 0 || ! q || p.z <= q.z ) ) { + if (pSize !== 0 && (qSize === 0 || !q || p.z <= q.z)) { e = p; p = p.nextZ; - pSize --; + pSize--; } else { e = q; q = q.nextZ; - qSize --; + qSize--; } - if ( tail ) tail.nextZ = e; + if (tail) tail.nextZ = e; else list = e; e.prevZ = tail; @@ -28493,7 +28506,7 @@ tail.nextZ = null; inSize *= 2; - } while ( numMerges > 1 ); + } while (numMerges > 1); return list; @@ -28501,39 +28514,39 @@ // z-order of a point given coords and inverse of the longer side of data bbox - function zOrder( x, y, minX, minY, invSize ) { + function zOrder(x, y, minX, minY, invSize) { // coords are transformed into non-negative 15-bit integer range - x = 32767 * ( x - minX ) * invSize; - y = 32767 * ( y - minY ) * invSize; + x = 32767 * (x - minX) * invSize; + y = 32767 * (y - minY) * invSize; - x = ( x | ( x << 8 ) ) & 0x00FF00FF; - x = ( x | ( x << 4 ) ) & 0x0F0F0F0F; - x = ( x | ( x << 2 ) ) & 0x33333333; - x = ( x | ( x << 1 ) ) & 0x55555555; + x = (x | (x << 8)) & 0x00FF00FF; + x = (x | (x << 4)) & 0x0F0F0F0F; + x = (x | (x << 2)) & 0x33333333; + x = (x | (x << 1)) & 0x55555555; - y = ( y | ( y << 8 ) ) & 0x00FF00FF; - y = ( y | ( y << 4 ) ) & 0x0F0F0F0F; - y = ( y | ( y << 2 ) ) & 0x33333333; - y = ( y | ( y << 1 ) ) & 0x55555555; + y = (y | (y << 8)) & 0x00FF00FF; + y = (y | (y << 4)) & 0x0F0F0F0F; + y = (y | (y << 2)) & 0x33333333; + y = (y | (y << 1)) & 0x55555555; - return x | ( y << 1 ); + return x | (y << 1); } // find the leftmost node of a polygon ring - function getLeftmost( start ) { + function getLeftmost(start) { var p = start, leftmost = start; do { - if ( p.x < leftmost.x ) leftmost = p; + if (p.x < leftmost.x) leftmost = p; p = p.next; - } while ( p !== start ); + } while (p !== start); return leftmost; @@ -28541,34 +28554,34 @@ // check if a point lies within a convex triangle - function pointInTriangle( ax, ay, bx, by, cx, cy, px, py ) { + function pointInTriangle(ax, ay, bx, by, cx, cy, px, py) { - return ( cx - px ) * ( ay - py ) - ( ax - px ) * ( cy - py ) >= 0 && - ( ax - px ) * ( by - py ) - ( bx - px ) * ( ay - py ) >= 0 && - ( bx - px ) * ( cy - py ) - ( cx - px ) * ( by - py ) >= 0; + return (cx - px) * (ay - py) - (ax - px) * (cy - py) >= 0 && + (ax - px) * (by - py) - (bx - px) * (ay - py) >= 0 && + (bx - px) * (cy - py) - (cx - px) * (by - py) >= 0; } // check if a diagonal between two polygon nodes is valid (lies in polygon interior) - function isValidDiagonal( a, b ) { + function isValidDiagonal(a, b) { - return a.next.i !== b.i && a.prev.i !== b.i && ! intersectsPolygon( a, b ) && - locallyInside( a, b ) && locallyInside( b, a ) && middleInside( a, b ); + return a.next.i !== b.i && a.prev.i !== b.i && !intersectsPolygon(a, b) && + locallyInside(a, b) && locallyInside(b, a) && middleInside(a, b); } // signed area of a triangle - function area( p, q, r ) { + function area(p, q, r) { - return ( q.y - p.y ) * ( r.x - q.x ) - ( q.x - p.x ) * ( r.y - q.y ); + return (q.y - p.y) * (r.x - q.x) - (q.x - p.x) * (r.y - q.y); } // check if two points are equal - function equals( p1, p2 ) { + function equals(p1, p2) { return p1.x === p2.x && p1.y === p2.y; @@ -28576,26 +28589,26 @@ // check if two segments intersect - function intersects( p1, q1, p2, q2 ) { + function intersects(p1, q1, p2, q2) { - if ( ( equals( p1, q1 ) && equals( p2, q2 ) ) || - ( equals( p1, q2 ) && equals( p2, q1 ) ) ) return true; + if ((equals(p1, q1) && equals(p2, q2)) || + (equals(p1, q2) && equals(p2, q1))) return true; - return area( p1, q1, p2 ) > 0 !== area( p1, q1, q2 ) > 0 && - area( p2, q2, p1 ) > 0 !== area( p2, q2, q1 ) > 0; + return area(p1, q1, p2) > 0 !== area(p1, q1, q2) > 0 && + area(p2, q2, p1) > 0 !== area(p2, q2, q1) > 0; } // check if a polygon diagonal intersects any polygon segments - function intersectsPolygon( a, b ) { + function intersectsPolygon(a, b) { var p = a; do { - if ( p.i !== a.i && p.next.i !== a.i && p.i !== b.i && p.next.i !== b.i && - intersects( p, p.next, a, b ) ) { + if (p.i !== a.i && p.next.i !== a.i && p.i !== b.i && p.next.i !== b.i && + intersects(p, p.next, a, b)) { return true; @@ -28603,7 +28616,7 @@ p = p.next; - } while ( p !== a ); + } while (p !== a); return false; @@ -28611,35 +28624,35 @@ // check if a polygon diagonal is locally inside the polygon - function locallyInside( a, b ) { + function locallyInside(a, b) { - return area( a.prev, a, a.next ) < 0 ? - area( a, b, a.next ) >= 0 && area( a, a.prev, b ) >= 0 : - area( a, b, a.prev ) < 0 || area( a, a.next, b ) < 0; + return area(a.prev, a, a.next) < 0 ? + area(a, b, a.next) >= 0 && area(a, a.prev, b) >= 0 : + area(a, b, a.prev) < 0 || area(a, a.next, b) < 0; } // check if the middle point of a polygon diagonal is inside the polygon - function middleInside( a, b ) { + function middleInside(a, b) { var p = a, inside = false, - px = ( a.x + b.x ) / 2, - py = ( a.y + b.y ) / 2; + px = (a.x + b.x) / 2, + py = (a.y + b.y) / 2; do { - if ( ( ( p.y > py ) !== ( p.next.y > py ) ) && p.next.y !== p.y && - ( px < ( p.next.x - p.x ) * ( py - p.y ) / ( p.next.y - p.y ) + p.x ) ) { + if (((p.y > py) !== (p.next.y > py)) && p.next.y !== p.y && + (px < (p.next.x - p.x) * (py - p.y) / (p.next.y - p.y) + p.x)) { - inside = ! inside; + inside = !inside; } p = p.next; - } while ( p !== a ); + } while (p !== a); return inside; @@ -28648,10 +28661,10 @@ // link two polygon vertices with a bridge; if the vertices belong to the same ring, it splits polygon into two; // if one belongs to the outer ring and another to a hole, it merges it into a single ring - function splitPolygon( a, b ) { + function splitPolygon(a, b) { - var a2 = new Node( a.i, a.x, a.y ), - b2 = new Node( b.i, b.x, b.y ), + var a2 = new Node(a.i, a.x, a.y), + b2 = new Node(b.i, b.x, b.y), an = a.next, bp = b.prev; @@ -28673,11 +28686,11 @@ // create a node and optionally link it with previous one (in a circular doubly linked list) - function insertNode( i, x, y, last ) { + function insertNode(i, x, y, last) { - var p = new Node( i, x, y ); + var p = new Node(i, x, y); - if ( ! last ) { + if (!last) { p.prev = p; p.next = p; @@ -28695,17 +28708,17 @@ } - function removeNode( p ) { + function removeNode(p) { p.next.prev = p.prev; p.prev.next = p.next; - if ( p.prevZ ) p.prevZ.nextZ = p.nextZ; - if ( p.nextZ ) p.nextZ.prevZ = p.prevZ; + if (p.prevZ) p.prevZ.nextZ = p.nextZ; + if (p.nextZ) p.nextZ.prevZ = p.prevZ; } - function Node( i, x, y ) { + function Node(i, x, y) { // vertice index in coordinates array this.i = i; @@ -28730,13 +28743,13 @@ } - function signedArea( data, start, end, dim ) { + function signedArea(data, start, end, dim) { var sum = 0; - for ( var i = start, j = end - dim; i < end; i += dim ) { + for (var i = start, j = end - dim; i < end; i += dim) { - sum += ( data[ j ] - data[ i ] ) * ( data[ i + 1 ] + data[ j + 1 ] ); + sum += (data[j] - data[i]) * (data[i + 1] + data[j + 1]); j = i; } @@ -28753,14 +28766,14 @@ // calculate area of the contour polygon - area: function ( contour ) { + area: function (contour) { var n = contour.length; var a = 0.0; - for ( var p = n - 1, q = 0; q < n; p = q ++ ) { + for (var p = n - 1, q = 0; q < n; p = q++) { - a += contour[ p ].x * contour[ q ].y - contour[ q ].x * contour[ p ].y; + a += contour[p].x * contour[q].y - contour[q].x * contour[p].y; } @@ -28768,44 +28781,44 @@ }, - isClockWise: function ( pts ) { + isClockWise: function (pts) { - return ShapeUtils.area( pts ) < 0; + return ShapeUtils.area(pts) < 0; }, - triangulateShape: function ( contour, holes ) { + triangulateShape: function (contour, holes) { var vertices = []; // flat array of vertices like [ x0,y0, x1,y1, x2,y2, ... ] var holeIndices = []; // array of hole indices var faces = []; // final array of vertex indices like [ [ a,b,d ], [ b,c,d ] ] - removeDupEndPts( contour ); - addContour( vertices, contour ); + removeDupEndPts(contour); + addContour(vertices, contour); // var holeIndex = contour.length; - holes.forEach( removeDupEndPts ); + holes.forEach(removeDupEndPts); - for ( var i = 0; i < holes.length; i ++ ) { + for (var i = 0; i < holes.length; i++) { - holeIndices.push( holeIndex ); - holeIndex += holes[ i ].length; - addContour( vertices, holes[ i ] ); + holeIndices.push(holeIndex); + holeIndex += holes[i].length; + addContour(vertices, holes[i]); } // - var triangles = Earcut.triangulate( vertices, holeIndices ); + var triangles = Earcut.triangulate(vertices, holeIndices); // - for ( var i = 0; i < triangles.length; i += 3 ) { + for (var i = 0; i < triangles.length; i += 3) { - faces.push( triangles.slice( i, i + 3 ) ); + faces.push(triangles.slice(i, i + 3)); } @@ -28815,11 +28828,11 @@ }; - function removeDupEndPts( points ) { + function removeDupEndPts(points) { var l = points.length; - if ( l > 2 && points[ l - 1 ].equals( points[ 0 ] ) ) { + if (l > 2 && points[l - 1].equals(points[0])) { points.pop(); @@ -28827,12 +28840,12 @@ } - function addContour( vertices, contour ) { + function addContour(vertices, contour) { - for ( var i = 0; i < contour.length; i ++ ) { + for (var i = 0; i < contour.length; i++) { - vertices.push( contour[ i ].x ); - vertices.push( contour[ i ].y ); + vertices.push(contour[i].x); + vertices.push(contour[i].y); } @@ -28863,9 +28876,9 @@ // ExtrudeGeometry - function ExtrudeGeometry( shapes, options ) { + function ExtrudeGeometry(shapes, options) { - Geometry.call( this ); + Geometry.call(this); this.type = 'ExtrudeGeometry'; @@ -28874,30 +28887,30 @@ options: options }; - this.fromBufferGeometry( new ExtrudeBufferGeometry( shapes, options ) ); + this.fromBufferGeometry(new ExtrudeBufferGeometry(shapes, options)); this.mergeVertices(); } - ExtrudeGeometry.prototype = Object.create( Geometry.prototype ); + ExtrudeGeometry.prototype = Object.create(Geometry.prototype); ExtrudeGeometry.prototype.constructor = ExtrudeGeometry; ExtrudeGeometry.prototype.toJSON = function () { - var data = Geometry.prototype.toJSON.call( this ); + var data = Geometry.prototype.toJSON.call(this); var shapes = this.parameters.shapes; var options = this.parameters.options; - return toJSON( shapes, options, data ); + return toJSON(shapes, options, data); }; // ExtrudeBufferGeometry - function ExtrudeBufferGeometry( shapes, options ) { + function ExtrudeBufferGeometry(shapes, options) { - BufferGeometry.call( this ); + BufferGeometry.call(this); this.type = 'ExtrudeBufferGeometry'; @@ -28906,30 +28919,30 @@ options: options }; - shapes = Array.isArray( shapes ) ? shapes : [ shapes ]; + shapes = Array.isArray(shapes) ? shapes : [shapes]; var scope = this; var verticesArray = []; var uvArray = []; - for ( var i = 0, l = shapes.length; i < l; i ++ ) { + for (var i = 0, l = shapes.length; i < l; i++) { - var shape = shapes[ i ]; - addShape( shape ); + var shape = shapes[i]; + addShape(shape); } // build geometry - this.addAttribute( 'position', new Float32BufferAttribute( verticesArray, 3 ) ); - this.addAttribute( 'uv', new Float32BufferAttribute( uvArray, 2 ) ); + this.addAttribute('position', new Float32BufferAttribute(verticesArray, 3)); + this.addAttribute('uv', new Float32BufferAttribute(uvArray, 2)); this.computeVertexNormals(); // functions - function addShape( shape ) { + function addShape(shape) { var placeholder = []; @@ -28950,9 +28963,9 @@ // deprecated options - if ( options.amount !== undefined ) { + if (options.amount !== undefined) { - console.warn( 'THREE.ExtrudeBufferGeometry: amount has been renamed to depth.' ); + console.warn('THREE.ExtrudeBufferGeometry: amount has been renamed to depth.'); depth = options.amount; } @@ -28962,9 +28975,9 @@ var extrudePts, extrudeByPath = false; var splineTube, binormal, normal, position2; - if ( extrudePath ) { + if (extrudePath) { - extrudePts = extrudePath.getSpacedPoints( steps ); + extrudePts = extrudePath.getSpacedPoints(steps); extrudeByPath = true; bevelEnabled = false; // bevels not supported for path extrusion @@ -28973,7 +28986,7 @@ // TODO1 - have a .isClosed in spline? - splineTube = extrudePath.computeFrenetFrames( steps, false ); + splineTube = extrudePath.computeFrenetFrames(steps, false); // console.log(splineTube, 'splineTube', splineTube.normals.length, 'steps', steps, 'extrudePts', extrudePts.length); @@ -28985,7 +28998,7 @@ // Safeguards if bevels are not enabled - if ( ! bevelEnabled ) { + if (!bevelEnabled) { bevelSegments = 0; bevelThickness = 0; @@ -28997,26 +29010,26 @@ var ahole, h, hl; // looping of holes - var shapePoints = shape.extractPoints( curveSegments ); + var shapePoints = shape.extractPoints(curveSegments); var vertices = shapePoints.shape; var holes = shapePoints.holes; - var reverse = ! ShapeUtils.isClockWise( vertices ); + var reverse = !ShapeUtils.isClockWise(vertices); - if ( reverse ) { + if (reverse) { vertices = vertices.reverse(); // Maybe we should also check if holes are in the opposite direction, just to be safe ... - for ( h = 0, hl = holes.length; h < hl; h ++ ) { + for (h = 0, hl = holes.length; h < hl; h++) { - ahole = holes[ h ]; + ahole = holes[h]; - if ( ShapeUtils.isClockWise( ahole ) ) { + if (ShapeUtils.isClockWise(ahole)) { - holes[ h ] = ahole.reverse(); + holes[h] = ahole.reverse(); } @@ -29025,26 +29038,26 @@ } - var faces = ShapeUtils.triangulateShape( vertices, holes ); + var faces = ShapeUtils.triangulateShape(vertices, holes); /* Vertices */ var contour = vertices; // vertices has all points but contour has only points of circumference - for ( h = 0, hl = holes.length; h < hl; h ++ ) { + for (h = 0, hl = holes.length; h < hl; h++) { - ahole = holes[ h ]; + ahole = holes[h]; - vertices = vertices.concat( ahole ); + vertices = vertices.concat(ahole); } - function scalePt2( pt, vec, size ) { + function scalePt2(pt, vec, size) { - if ( ! vec ) console.error( "THREE.ExtrudeGeometry: vec does not exist" ); + if (!vec) console.error("THREE.ExtrudeGeometry: vec does not exist"); - return vec.clone().multiplyScalar( size ).add( pt ); + return vec.clone().multiplyScalar(size).add(pt); } @@ -29056,7 +29069,7 @@ // Find directions for point movement - function getBevelVec( inPt, inPrev, inNext ) { + function getBevelVec(inPt, inPrev, inNext) { // computes for inPt the corresponding point inPt' on a new contour // shifted by 1 unit (length of normalized vector) to the left @@ -29075,49 +29088,49 @@ var v_next_x = inNext.x - inPt.x, v_next_y = inNext.y - inPt.y; - var v_prev_lensq = ( v_prev_x * v_prev_x + v_prev_y * v_prev_y ); + var v_prev_lensq = (v_prev_x * v_prev_x + v_prev_y * v_prev_y); // check for collinear edges - var collinear0 = ( v_prev_x * v_next_y - v_prev_y * v_next_x ); + var collinear0 = (v_prev_x * v_next_y - v_prev_y * v_next_x); - if ( Math.abs( collinear0 ) > Number.EPSILON ) { + if (Math.abs(collinear0) > Number.EPSILON) { // not collinear // length of vectors for normalizing - var v_prev_len = Math.sqrt( v_prev_lensq ); - var v_next_len = Math.sqrt( v_next_x * v_next_x + v_next_y * v_next_y ); + var v_prev_len = Math.sqrt(v_prev_lensq); + var v_next_len = Math.sqrt(v_next_x * v_next_x + v_next_y * v_next_y); // shift adjacent points by unit vectors to the left - var ptPrevShift_x = ( inPrev.x - v_prev_y / v_prev_len ); - var ptPrevShift_y = ( inPrev.y + v_prev_x / v_prev_len ); + var ptPrevShift_x = (inPrev.x - v_prev_y / v_prev_len); + var ptPrevShift_y = (inPrev.y + v_prev_x / v_prev_len); - var ptNextShift_x = ( inNext.x - v_next_y / v_next_len ); - var ptNextShift_y = ( inNext.y + v_next_x / v_next_len ); + var ptNextShift_x = (inNext.x - v_next_y / v_next_len); + var ptNextShift_y = (inNext.y + v_next_x / v_next_len); // scaling factor for v_prev to intersection point - var sf = ( ( ptNextShift_x - ptPrevShift_x ) * v_next_y - - ( ptNextShift_y - ptPrevShift_y ) * v_next_x ) / - ( v_prev_x * v_next_y - v_prev_y * v_next_x ); + var sf = ((ptNextShift_x - ptPrevShift_x) * v_next_y - + (ptNextShift_y - ptPrevShift_y) * v_next_x) / + (v_prev_x * v_next_y - v_prev_y * v_next_x); // vector from inPt to intersection point - v_trans_x = ( ptPrevShift_x + v_prev_x * sf - inPt.x ); - v_trans_y = ( ptPrevShift_y + v_prev_y * sf - inPt.y ); + v_trans_x = (ptPrevShift_x + v_prev_x * sf - inPt.x); + v_trans_y = (ptPrevShift_y + v_prev_y * sf - inPt.y); // Don't normalize!, otherwise sharp corners become ugly // but prevent crazy spikes - var v_trans_lensq = ( v_trans_x * v_trans_x + v_trans_y * v_trans_y ); - if ( v_trans_lensq <= 2 ) { + var v_trans_lensq = (v_trans_x * v_trans_x + v_trans_y * v_trans_y); + if (v_trans_lensq <= 2) { - return new Vector2( v_trans_x, v_trans_y ); + return new Vector2(v_trans_x, v_trans_y); } else { - shrink_by = Math.sqrt( v_trans_lensq / 2 ); + shrink_by = Math.sqrt(v_trans_lensq / 2); } @@ -29126,9 +29139,9 @@ // handle special case of collinear edges var direction_eq = false; // assumes: opposite - if ( v_prev_x > Number.EPSILON ) { + if (v_prev_x > Number.EPSILON) { - if ( v_next_x > Number.EPSILON ) { + if (v_next_x > Number.EPSILON) { direction_eq = true; @@ -29136,9 +29149,9 @@ } else { - if ( v_prev_x < - Number.EPSILON ) { + if (v_prev_x < - Number.EPSILON) { - if ( v_next_x < - Number.EPSILON ) { + if (v_next_x < - Number.EPSILON) { direction_eq = true; @@ -29146,7 +29159,7 @@ } else { - if ( Math.sign( v_prev_y ) === Math.sign( v_next_y ) ) { + if (Math.sign(v_prev_y) === Math.sign(v_next_y)) { direction_eq = true; @@ -29156,100 +29169,100 @@ } - if ( direction_eq ) { + if (direction_eq) { // console.log("Warning: lines are a straight sequence"); v_trans_x = - v_prev_y; v_trans_y = v_prev_x; - shrink_by = Math.sqrt( v_prev_lensq ); + shrink_by = Math.sqrt(v_prev_lensq); } else { // console.log("Warning: lines are a straight spike"); v_trans_x = v_prev_x; v_trans_y = v_prev_y; - shrink_by = Math.sqrt( v_prev_lensq / 2 ); + shrink_by = Math.sqrt(v_prev_lensq / 2); } } - return new Vector2( v_trans_x / shrink_by, v_trans_y / shrink_by ); + return new Vector2(v_trans_x / shrink_by, v_trans_y / shrink_by); } var contourMovements = []; - for ( var i = 0, il = contour.length, j = il - 1, k = i + 1; i < il; i ++, j ++, k ++ ) { + for (var i = 0, il = contour.length, j = il - 1, k = i + 1; i < il; i++ , j++ , k++) { - if ( j === il ) j = 0; - if ( k === il ) k = 0; + if (j === il) j = 0; + if (k === il) k = 0; // (j)---(i)---(k) // console.log('i,j,k', i, j , k) - contourMovements[ i ] = getBevelVec( contour[ i ], contour[ j ], contour[ k ] ); + contourMovements[i] = getBevelVec(contour[i], contour[j], contour[k]); } var holesMovements = [], oneHoleMovements, verticesMovements = contourMovements.concat(); - for ( h = 0, hl = holes.length; h < hl; h ++ ) { + for (h = 0, hl = holes.length; h < hl; h++) { - ahole = holes[ h ]; + ahole = holes[h]; oneHoleMovements = []; - for ( i = 0, il = ahole.length, j = il - 1, k = i + 1; i < il; i ++, j ++, k ++ ) { + for (i = 0, il = ahole.length, j = il - 1, k = i + 1; i < il; i++ , j++ , k++) { - if ( j === il ) j = 0; - if ( k === il ) k = 0; + if (j === il) j = 0; + if (k === il) k = 0; // (j)---(i)---(k) - oneHoleMovements[ i ] = getBevelVec( ahole[ i ], ahole[ j ], ahole[ k ] ); + oneHoleMovements[i] = getBevelVec(ahole[i], ahole[j], ahole[k]); } - holesMovements.push( oneHoleMovements ); - verticesMovements = verticesMovements.concat( oneHoleMovements ); + holesMovements.push(oneHoleMovements); + verticesMovements = verticesMovements.concat(oneHoleMovements); } // Loop bevelSegments, 1 for the front, 1 for the back - for ( b = 0; b < bevelSegments; b ++ ) { + for (b = 0; b < bevelSegments; b++) { //for ( b = bevelSegments; b > 0; b -- ) { t = b / bevelSegments; - z = bevelThickness * Math.cos( t * Math.PI / 2 ); - bs = bevelSize * Math.sin( t * Math.PI / 2 ); + z = bevelThickness * Math.cos(t * Math.PI / 2); + bs = bevelSize * Math.sin(t * Math.PI / 2); // contract shape - for ( i = 0, il = contour.length; i < il; i ++ ) { + for (i = 0, il = contour.length; i < il; i++) { - vert = scalePt2( contour[ i ], contourMovements[ i ], bs ); + vert = scalePt2(contour[i], contourMovements[i], bs); - v( vert.x, vert.y, - z ); + v(vert.x, vert.y, - z); } // expand holes - for ( h = 0, hl = holes.length; h < hl; h ++ ) { + for (h = 0, hl = holes.length; h < hl; h++) { - ahole = holes[ h ]; - oneHoleMovements = holesMovements[ h ]; + ahole = holes[h]; + oneHoleMovements = holesMovements[h]; - for ( i = 0, il = ahole.length; i < il; i ++ ) { + for (i = 0, il = ahole.length; i < il; i++) { - vert = scalePt2( ahole[ i ], oneHoleMovements[ i ], bs ); + vert = scalePt2(ahole[i], oneHoleMovements[i], bs); - v( vert.x, vert.y, - z ); + v(vert.x, vert.y, - z); } @@ -29261,24 +29274,24 @@ // Back facing vertices - for ( i = 0; i < vlen; i ++ ) { + for (i = 0; i < vlen; i++) { - vert = bevelEnabled ? scalePt2( vertices[ i ], verticesMovements[ i ], bs ) : vertices[ i ]; + vert = bevelEnabled ? scalePt2(vertices[i], verticesMovements[i], bs) : vertices[i]; - if ( ! extrudeByPath ) { + if (!extrudeByPath) { - v( vert.x, vert.y, 0 ); + v(vert.x, vert.y, 0); } else { // v( vert.x, vert.y + extrudePts[ 0 ].y, extrudePts[ 0 ].x ); - normal.copy( splineTube.normals[ 0 ] ).multiplyScalar( vert.x ); - binormal.copy( splineTube.binormals[ 0 ] ).multiplyScalar( vert.y ); + normal.copy(splineTube.normals[0]).multiplyScalar(vert.x); + binormal.copy(splineTube.binormals[0]).multiplyScalar(vert.y); - position2.copy( extrudePts[ 0 ] ).add( normal ).add( binormal ); + position2.copy(extrudePts[0]).add(normal).add(binormal); - v( position2.x, position2.y, position2.z ); + v(position2.x, position2.y, position2.z); } @@ -29289,26 +29302,26 @@ var s; - for ( s = 1; s <= steps; s ++ ) { + for (s = 1; s <= steps; s++) { - for ( i = 0; i < vlen; i ++ ) { + for (i = 0; i < vlen; i++) { - vert = bevelEnabled ? scalePt2( vertices[ i ], verticesMovements[ i ], bs ) : vertices[ i ]; + vert = bevelEnabled ? scalePt2(vertices[i], verticesMovements[i], bs) : vertices[i]; - if ( ! extrudeByPath ) { + if (!extrudeByPath) { - v( vert.x, vert.y, depth / steps * s ); + v(vert.x, vert.y, depth / steps * s); } else { // v( vert.x, vert.y + extrudePts[ s - 1 ].y, extrudePts[ s - 1 ].x ); - normal.copy( splineTube.normals[ s ] ).multiplyScalar( vert.x ); - binormal.copy( splineTube.binormals[ s ] ).multiplyScalar( vert.y ); + normal.copy(splineTube.normals[s]).multiplyScalar(vert.x); + binormal.copy(splineTube.binormals[s]).multiplyScalar(vert.y); - position2.copy( extrudePts[ s ] ).add( normal ).add( binormal ); + position2.copy(extrudePts[s]).add(normal).add(binormal); - v( position2.x, position2.y, position2.z ); + v(position2.x, position2.y, position2.z); } @@ -29320,39 +29333,39 @@ // Add bevel segments planes //for ( b = 1; b <= bevelSegments; b ++ ) { - for ( b = bevelSegments - 1; b >= 0; b -- ) { + for (b = bevelSegments - 1; b >= 0; b--) { t = b / bevelSegments; - z = bevelThickness * Math.cos( t * Math.PI / 2 ); - bs = bevelSize * Math.sin( t * Math.PI / 2 ); + z = bevelThickness * Math.cos(t * Math.PI / 2); + bs = bevelSize * Math.sin(t * Math.PI / 2); // contract shape - for ( i = 0, il = contour.length; i < il; i ++ ) { + for (i = 0, il = contour.length; i < il; i++) { - vert = scalePt2( contour[ i ], contourMovements[ i ], bs ); - v( vert.x, vert.y, depth + z ); + vert = scalePt2(contour[i], contourMovements[i], bs); + v(vert.x, vert.y, depth + z); } // expand holes - for ( h = 0, hl = holes.length; h < hl; h ++ ) { + for (h = 0, hl = holes.length; h < hl; h++) { - ahole = holes[ h ]; - oneHoleMovements = holesMovements[ h ]; + ahole = holes[h]; + oneHoleMovements = holesMovements[h]; - for ( i = 0, il = ahole.length; i < il; i ++ ) { + for (i = 0, il = ahole.length; i < il; i++) { - vert = scalePt2( ahole[ i ], oneHoleMovements[ i ], bs ); + vert = scalePt2(ahole[i], oneHoleMovements[i], bs); - if ( ! extrudeByPath ) { + if (!extrudeByPath) { - v( vert.x, vert.y, depth + z ); + v(vert.x, vert.y, depth + z); } else { - v( vert.x, vert.y + extrudePts[ steps - 1 ].y, extrudePts[ steps - 1 ].x + z ); + v(vert.x, vert.y + extrudePts[steps - 1].y, extrudePts[steps - 1].x + z); } @@ -29379,17 +29392,17 @@ var start = verticesArray.length / 3; - if ( bevelEnabled ) { + if (bevelEnabled) { var layer = 0; // steps + 1 var offset = vlen * layer; // Bottom faces - for ( i = 0; i < flen; i ++ ) { + for (i = 0; i < flen; i++) { - face = faces[ i ]; - f3( face[ 2 ] + offset, face[ 1 ] + offset, face[ 0 ] + offset ); + face = faces[i]; + f3(face[2] + offset, face[1] + offset, face[0] + offset); } @@ -29398,10 +29411,10 @@ // Top faces - for ( i = 0; i < flen; i ++ ) { + for (i = 0; i < flen; i++) { - face = faces[ i ]; - f3( face[ 0 ] + offset, face[ 1 ] + offset, face[ 2 ] + offset ); + face = faces[i]; + f3(face[0] + offset, face[1] + offset, face[2] + offset); } @@ -29409,25 +29422,25 @@ // Bottom faces - for ( i = 0; i < flen; i ++ ) { + for (i = 0; i < flen; i++) { - face = faces[ i ]; - f3( face[ 2 ], face[ 1 ], face[ 0 ] ); + face = faces[i]; + f3(face[2], face[1], face[0]); } // Top faces - for ( i = 0; i < flen; i ++ ) { + for (i = 0; i < flen; i++) { - face = faces[ i ]; - f3( face[ 0 ] + vlen * steps, face[ 1 ] + vlen * steps, face[ 2 ] + vlen * steps ); + face = faces[i]; + f3(face[0] + vlen * steps, face[1] + vlen * steps, face[2] + vlen * steps); } } - scope.addGroup( start, verticesArray.length / 3 - start, 0 ); + scope.addGroup(start, verticesArray.length / 3 - start, 0); } @@ -29437,13 +29450,13 @@ var start = verticesArray.length / 3; var layeroffset = 0; - sidewalls( contour, layeroffset ); + sidewalls(contour, layeroffset); layeroffset += contour.length; - for ( h = 0, hl = holes.length; h < hl; h ++ ) { + for (h = 0, hl = holes.length; h < hl; h++) { - ahole = holes[ h ]; - sidewalls( ahole, layeroffset ); + ahole = holes[h]; + sidewalls(ahole, layeroffset); //, true layeroffset += ahole.length; @@ -29451,38 +29464,38 @@ } - scope.addGroup( start, verticesArray.length / 3 - start, 1 ); + scope.addGroup(start, verticesArray.length / 3 - start, 1); } - function sidewalls( contour, layeroffset ) { + function sidewalls(contour, layeroffset) { var j, k; i = contour.length; - while ( -- i >= 0 ) { + while (--i >= 0) { j = i; k = i - 1; - if ( k < 0 ) k = contour.length - 1; + if (k < 0) k = contour.length - 1; //console.log('b', i,j, i-1, k,vertices.length); var s = 0, sl = steps + bevelSegments * 2; - for ( s = 0; s < sl; s ++ ) { + for (s = 0; s < sl; s++) { var slen1 = vlen * s; - var slen2 = vlen * ( s + 1 ); + var slen2 = vlen * (s + 1); var a = layeroffset + j + slen1, b = layeroffset + k + slen1, c = layeroffset + k + slen2, d = layeroffset + j + slen2; - f4( a, b, c, d ); + f4(a, b, c, d); } @@ -29490,67 +29503,67 @@ } - function v( x, y, z ) { + function v(x, y, z) { - placeholder.push( x ); - placeholder.push( y ); - placeholder.push( z ); + placeholder.push(x); + placeholder.push(y); + placeholder.push(z); } - function f3( a, b, c ) { + function f3(a, b, c) { - addVertex( a ); - addVertex( b ); - addVertex( c ); + addVertex(a); + addVertex(b); + addVertex(c); var nextIndex = verticesArray.length / 3; - var uvs = uvgen.generateTopUV( scope, verticesArray, nextIndex - 3, nextIndex - 2, nextIndex - 1 ); + var uvs = uvgen.generateTopUV(scope, verticesArray, nextIndex - 3, nextIndex - 2, nextIndex - 1); - addUV( uvs[ 0 ] ); - addUV( uvs[ 1 ] ); - addUV( uvs[ 2 ] ); + addUV(uvs[0]); + addUV(uvs[1]); + addUV(uvs[2]); } - function f4( a, b, c, d ) { + function f4(a, b, c, d) { - addVertex( a ); - addVertex( b ); - addVertex( d ); + addVertex(a); + addVertex(b); + addVertex(d); - addVertex( b ); - addVertex( c ); - addVertex( d ); + addVertex(b); + addVertex(c); + addVertex(d); var nextIndex = verticesArray.length / 3; - var uvs = uvgen.generateSideWallUV( scope, verticesArray, nextIndex - 6, nextIndex - 3, nextIndex - 2, nextIndex - 1 ); + var uvs = uvgen.generateSideWallUV(scope, verticesArray, nextIndex - 6, nextIndex - 3, nextIndex - 2, nextIndex - 1); - addUV( uvs[ 0 ] ); - addUV( uvs[ 1 ] ); - addUV( uvs[ 3 ] ); + addUV(uvs[0]); + addUV(uvs[1]); + addUV(uvs[3]); - addUV( uvs[ 1 ] ); - addUV( uvs[ 2 ] ); - addUV( uvs[ 3 ] ); + addUV(uvs[1]); + addUV(uvs[2]); + addUV(uvs[3]); } - function addVertex( index ) { + function addVertex(index) { - verticesArray.push( placeholder[ index * 3 + 0 ] ); - verticesArray.push( placeholder[ index * 3 + 1 ] ); - verticesArray.push( placeholder[ index * 3 + 2 ] ); + verticesArray.push(placeholder[index * 3 + 0]); + verticesArray.push(placeholder[index * 3 + 1]); + verticesArray.push(placeholder[index * 3 + 2]); } - function addUV( vector2 ) { + function addUV(vector2) { - uvArray.push( vector2.x ); - uvArray.push( vector2.y ); + uvArray.push(vector2.x); + uvArray.push(vector2.y); } @@ -29558,17 +29571,17 @@ } - ExtrudeBufferGeometry.prototype = Object.create( BufferGeometry.prototype ); + ExtrudeBufferGeometry.prototype = Object.create(BufferGeometry.prototype); ExtrudeBufferGeometry.prototype.constructor = ExtrudeBufferGeometry; ExtrudeBufferGeometry.prototype.toJSON = function () { - var data = BufferGeometry.prototype.toJSON.call( this ); + var data = BufferGeometry.prototype.toJSON.call(this); var shapes = this.parameters.shapes; var options = this.parameters.options; - return toJSON( shapes, options, data ); + return toJSON(shapes, options, data); }; @@ -29576,54 +29589,54 @@ var WorldUVGenerator = { - generateTopUV: function ( geometry, vertices, indexA, indexB, indexC ) { + generateTopUV: function (geometry, vertices, indexA, indexB, indexC) { - var a_x = vertices[ indexA * 3 ]; - var a_y = vertices[ indexA * 3 + 1 ]; - var b_x = vertices[ indexB * 3 ]; - var b_y = vertices[ indexB * 3 + 1 ]; - var c_x = vertices[ indexC * 3 ]; - var c_y = vertices[ indexC * 3 + 1 ]; + var a_x = vertices[indexA * 3]; + var a_y = vertices[indexA * 3 + 1]; + var b_x = vertices[indexB * 3]; + var b_y = vertices[indexB * 3 + 1]; + var c_x = vertices[indexC * 3]; + var c_y = vertices[indexC * 3 + 1]; return [ - new Vector2( a_x, a_y ), - new Vector2( b_x, b_y ), - new Vector2( c_x, c_y ) + new Vector2(a_x, a_y), + new Vector2(b_x, b_y), + new Vector2(c_x, c_y) ]; }, - generateSideWallUV: function ( geometry, vertices, indexA, indexB, indexC, indexD ) { + generateSideWallUV: function (geometry, vertices, indexA, indexB, indexC, indexD) { - var a_x = vertices[ indexA * 3 ]; - var a_y = vertices[ indexA * 3 + 1 ]; - var a_z = vertices[ indexA * 3 + 2 ]; - var b_x = vertices[ indexB * 3 ]; - var b_y = vertices[ indexB * 3 + 1 ]; - var b_z = vertices[ indexB * 3 + 2 ]; - var c_x = vertices[ indexC * 3 ]; - var c_y = vertices[ indexC * 3 + 1 ]; - var c_z = vertices[ indexC * 3 + 2 ]; - var d_x = vertices[ indexD * 3 ]; - var d_y = vertices[ indexD * 3 + 1 ]; - var d_z = vertices[ indexD * 3 + 2 ]; + var a_x = vertices[indexA * 3]; + var a_y = vertices[indexA * 3 + 1]; + var a_z = vertices[indexA * 3 + 2]; + var b_x = vertices[indexB * 3]; + var b_y = vertices[indexB * 3 + 1]; + var b_z = vertices[indexB * 3 + 2]; + var c_x = vertices[indexC * 3]; + var c_y = vertices[indexC * 3 + 1]; + var c_z = vertices[indexC * 3 + 2]; + var d_x = vertices[indexD * 3]; + var d_y = vertices[indexD * 3 + 1]; + var d_z = vertices[indexD * 3 + 2]; - if ( Math.abs( a_y - b_y ) < 0.01 ) { + if (Math.abs(a_y - b_y) < 0.01) { return [ - new Vector2( a_x, 1 - a_z ), - new Vector2( b_x, 1 - b_z ), - new Vector2( c_x, 1 - c_z ), - new Vector2( d_x, 1 - d_z ) + new Vector2(a_x, 1 - a_z), + new Vector2(b_x, 1 - b_z), + new Vector2(c_x, 1 - c_z), + new Vector2(d_x, 1 - d_z) ]; } else { return [ - new Vector2( a_y, 1 - a_z ), - new Vector2( b_y, 1 - b_z ), - new Vector2( c_y, 1 - c_z ), - new Vector2( d_y, 1 - d_z ) + new Vector2(a_y, 1 - a_z), + new Vector2(b_y, 1 - b_z), + new Vector2(c_y, 1 - c_z), + new Vector2(d_y, 1 - d_z) ]; } @@ -29631,31 +29644,31 @@ } }; - function toJSON( shapes, options, data ) { + function toJSON(shapes, options, data) { // data.shapes = []; - if ( Array.isArray( shapes ) ) { + if (Array.isArray(shapes)) { - for ( var i = 0, l = shapes.length; i < l; i ++ ) { + for (var i = 0, l = shapes.length; i < l; i++) { - var shape = shapes[ i ]; + var shape = shapes[i]; - data.shapes.push( shape.uuid ); + data.shapes.push(shape.uuid); } } else { - data.shapes.push( shapes.uuid ); + data.shapes.push(shapes.uuid); } // - if ( options.extrudePath !== undefined ) data.options.extrudePath = options.extrudePath.toJSON(); + if (options.extrudePath !== undefined) data.options.extrudePath = options.extrudePath.toJSON(); return data; @@ -29682,9 +29695,9 @@ // TextGeometry - function TextGeometry( text, parameters ) { + function TextGeometry(text, parameters) { - Geometry.call( this ); + Geometry.call(this); this.type = 'TextGeometry'; @@ -29693,30 +29706,30 @@ parameters: parameters }; - this.fromBufferGeometry( new TextBufferGeometry( text, parameters ) ); + this.fromBufferGeometry(new TextBufferGeometry(text, parameters)); this.mergeVertices(); } - TextGeometry.prototype = Object.create( Geometry.prototype ); + TextGeometry.prototype = Object.create(Geometry.prototype); TextGeometry.prototype.constructor = TextGeometry; // TextBufferGeometry - function TextBufferGeometry( text, parameters ) { + function TextBufferGeometry(text, parameters) { parameters = parameters || {}; var font = parameters.font; - if ( ! ( font && font.isFont ) ) { + if (!(font && font.isFont)) { - console.error( 'THREE.TextGeometry: font parameter is not an instance of THREE.Font.' ); + console.error('THREE.TextGeometry: font parameter is not an instance of THREE.Font.'); return new Geometry(); } - var shapes = font.generateShapes( text, parameters.size ); + var shapes = font.generateShapes(text, parameters.size); // translate parameters to ExtrudeGeometry API @@ -29724,17 +29737,17 @@ // defaults - if ( parameters.bevelThickness === undefined ) parameters.bevelThickness = 10; - if ( parameters.bevelSize === undefined ) parameters.bevelSize = 8; - if ( parameters.bevelEnabled === undefined ) parameters.bevelEnabled = false; + if (parameters.bevelThickness === undefined) parameters.bevelThickness = 10; + if (parameters.bevelSize === undefined) parameters.bevelSize = 8; + if (parameters.bevelEnabled === undefined) parameters.bevelEnabled = false; - ExtrudeBufferGeometry.call( this, shapes, parameters ); + ExtrudeBufferGeometry.call(this, shapes, parameters); this.type = 'TextBufferGeometry'; } - TextBufferGeometry.prototype = Object.create( ExtrudeBufferGeometry.prototype ); + TextBufferGeometry.prototype = Object.create(ExtrudeBufferGeometry.prototype); TextBufferGeometry.prototype.constructor = TextBufferGeometry; /** @@ -29745,9 +29758,9 @@ // SphereGeometry - function SphereGeometry( radius, widthSegments, heightSegments, phiStart, phiLength, thetaStart, thetaLength ) { + function SphereGeometry(radius, widthSegments, heightSegments, phiStart, phiLength, thetaStart, thetaLength) { - Geometry.call( this ); + Geometry.call(this); this.type = 'SphereGeometry'; @@ -29761,19 +29774,19 @@ thetaLength: thetaLength }; - this.fromBufferGeometry( new SphereBufferGeometry( radius, widthSegments, heightSegments, phiStart, phiLength, thetaStart, thetaLength ) ); + this.fromBufferGeometry(new SphereBufferGeometry(radius, widthSegments, heightSegments, phiStart, phiLength, thetaStart, thetaLength)); this.mergeVertices(); } - SphereGeometry.prototype = Object.create( Geometry.prototype ); + SphereGeometry.prototype = Object.create(Geometry.prototype); SphereGeometry.prototype.constructor = SphereGeometry; // SphereBufferGeometry - function SphereBufferGeometry( radius, widthSegments, heightSegments, phiStart, phiLength, thetaStart, thetaLength ) { + function SphereBufferGeometry(radius, widthSegments, heightSegments, phiStart, phiLength, thetaStart, thetaLength) { - BufferGeometry.call( this ); + BufferGeometry.call(this); this.type = 'SphereBufferGeometry'; @@ -29789,8 +29802,8 @@ radius = radius || 1; - widthSegments = Math.max( 3, Math.floor( widthSegments ) || 8 ); - heightSegments = Math.max( 2, Math.floor( heightSegments ) || 6 ); + widthSegments = Math.max(3, Math.floor(widthSegments) || 8); + heightSegments = Math.max(2, Math.floor(heightSegments) || 6); phiStart = phiStart !== undefined ? phiStart : 0; phiLength = phiLength !== undefined ? phiLength : Math.PI * 2; @@ -29817,54 +29830,54 @@ // generate vertices, normals and uvs - for ( iy = 0; iy <= heightSegments; iy ++ ) { + for (iy = 0; iy <= heightSegments; iy++) { var verticesRow = []; var v = iy / heightSegments; - for ( ix = 0; ix <= widthSegments; ix ++ ) { + for (ix = 0; ix <= widthSegments; ix++) { var u = ix / widthSegments; // vertex - vertex.x = - radius * Math.cos( phiStart + u * phiLength ) * Math.sin( thetaStart + v * thetaLength ); - vertex.y = radius * Math.cos( thetaStart + v * thetaLength ); - vertex.z = radius * Math.sin( phiStart + u * phiLength ) * Math.sin( thetaStart + v * thetaLength ); + vertex.x = - radius * Math.cos(phiStart + u * phiLength) * Math.sin(thetaStart + v * thetaLength); + vertex.y = radius * Math.cos(thetaStart + v * thetaLength); + vertex.z = radius * Math.sin(phiStart + u * phiLength) * Math.sin(thetaStart + v * thetaLength); - vertices.push( vertex.x, vertex.y, vertex.z ); + vertices.push(vertex.x, vertex.y, vertex.z); // normal - normal.set( vertex.x, vertex.y, vertex.z ).normalize(); - normals.push( normal.x, normal.y, normal.z ); + normal.set(vertex.x, vertex.y, vertex.z).normalize(); + normals.push(normal.x, normal.y, normal.z); // uv - uvs.push( u, 1 - v ); + uvs.push(u, 1 - v); - verticesRow.push( index ++ ); + verticesRow.push(index++); } - grid.push( verticesRow ); + grid.push(verticesRow); } // indices - for ( iy = 0; iy < heightSegments; iy ++ ) { + for (iy = 0; iy < heightSegments; iy++) { - for ( ix = 0; ix < widthSegments; ix ++ ) { + for (ix = 0; ix < widthSegments; ix++) { - var a = grid[ iy ][ ix + 1 ]; - var b = grid[ iy ][ ix ]; - var c = grid[ iy + 1 ][ ix ]; - var d = grid[ iy + 1 ][ ix + 1 ]; + var a = grid[iy][ix + 1]; + var b = grid[iy][ix]; + var c = grid[iy + 1][ix]; + var d = grid[iy + 1][ix + 1]; - if ( iy !== 0 || thetaStart > 0 ) indices.push( a, b, d ); - if ( iy !== heightSegments - 1 || thetaEnd < Math.PI ) indices.push( b, c, d ); + if (iy !== 0 || thetaStart > 0) indices.push(a, b, d); + if (iy !== heightSegments - 1 || thetaEnd < Math.PI) indices.push(b, c, d); } @@ -29872,14 +29885,14 @@ // build geometry - this.setIndex( indices ); - this.addAttribute( 'position', new Float32BufferAttribute( vertices, 3 ) ); - this.addAttribute( 'normal', new Float32BufferAttribute( normals, 3 ) ); - this.addAttribute( 'uv', new Float32BufferAttribute( uvs, 2 ) ); + this.setIndex(indices); + this.addAttribute('position', new Float32BufferAttribute(vertices, 3)); + this.addAttribute('normal', new Float32BufferAttribute(normals, 3)); + this.addAttribute('uv', new Float32BufferAttribute(uvs, 2)); } - SphereBufferGeometry.prototype = Object.create( BufferGeometry.prototype ); + SphereBufferGeometry.prototype = Object.create(BufferGeometry.prototype); SphereBufferGeometry.prototype.constructor = SphereBufferGeometry; /** @@ -29889,9 +29902,9 @@ // RingGeometry - function RingGeometry( innerRadius, outerRadius, thetaSegments, phiSegments, thetaStart, thetaLength ) { + function RingGeometry(innerRadius, outerRadius, thetaSegments, phiSegments, thetaStart, thetaLength) { - Geometry.call( this ); + Geometry.call(this); this.type = 'RingGeometry'; @@ -29904,19 +29917,19 @@ thetaLength: thetaLength }; - this.fromBufferGeometry( new RingBufferGeometry( innerRadius, outerRadius, thetaSegments, phiSegments, thetaStart, thetaLength ) ); + this.fromBufferGeometry(new RingBufferGeometry(innerRadius, outerRadius, thetaSegments, phiSegments, thetaStart, thetaLength)); this.mergeVertices(); } - RingGeometry.prototype = Object.create( Geometry.prototype ); + RingGeometry.prototype = Object.create(Geometry.prototype); RingGeometry.prototype.constructor = RingGeometry; // RingBufferGeometry - function RingBufferGeometry( innerRadius, outerRadius, thetaSegments, phiSegments, thetaStart, thetaLength ) { + function RingBufferGeometry(innerRadius, outerRadius, thetaSegments, phiSegments, thetaStart, thetaLength) { - BufferGeometry.call( this ); + BufferGeometry.call(this); this.type = 'RingBufferGeometry'; @@ -29935,8 +29948,8 @@ thetaStart = thetaStart !== undefined ? thetaStart : 0; thetaLength = thetaLength !== undefined ? thetaLength : Math.PI * 2; - thetaSegments = thetaSegments !== undefined ? Math.max( 3, thetaSegments ) : 8; - phiSegments = phiSegments !== undefined ? Math.max( 1, phiSegments ) : 1; + thetaSegments = thetaSegments !== undefined ? Math.max(3, thetaSegments) : 8; + phiSegments = phiSegments !== undefined ? Math.max(1, phiSegments) : 1; // buffers @@ -29949,16 +29962,16 @@ var segment; var radius = innerRadius; - var radiusStep = ( ( outerRadius - innerRadius ) / phiSegments ); + var radiusStep = ((outerRadius - innerRadius) / phiSegments); var vertex = new Vector3(); var uv = new Vector2(); var j, i; // generate vertices, normals and uvs - for ( j = 0; j <= phiSegments; j ++ ) { + for (j = 0; j <= phiSegments; j++) { - for ( i = 0; i <= thetaSegments; i ++ ) { + for (i = 0; i <= thetaSegments; i++) { // values are generate from the inside of the ring to the outside @@ -29966,21 +29979,21 @@ // vertex - vertex.x = radius * Math.cos( segment ); - vertex.y = radius * Math.sin( segment ); + vertex.x = radius * Math.cos(segment); + vertex.y = radius * Math.sin(segment); - vertices.push( vertex.x, vertex.y, vertex.z ); + vertices.push(vertex.x, vertex.y, vertex.z); // normal - normals.push( 0, 0, 1 ); + normals.push(0, 0, 1); // uv - uv.x = ( vertex.x / outerRadius + 1 ) / 2; - uv.y = ( vertex.y / outerRadius + 1 ) / 2; + uv.x = (vertex.x / outerRadius + 1) / 2; + uv.y = (vertex.y / outerRadius + 1) / 2; - uvs.push( uv.x, uv.y ); + uvs.push(uv.x, uv.y); } @@ -29992,11 +30005,11 @@ // indices - for ( j = 0; j < phiSegments; j ++ ) { + for (j = 0; j < phiSegments; j++) { - var thetaSegmentLevel = j * ( thetaSegments + 1 ); + var thetaSegmentLevel = j * (thetaSegments + 1); - for ( i = 0; i < thetaSegments; i ++ ) { + for (i = 0; i < thetaSegments; i++) { segment = i + thetaSegmentLevel; @@ -30007,8 +30020,8 @@ // faces - indices.push( a, b, d ); - indices.push( b, c, d ); + indices.push(a, b, d); + indices.push(b, c, d); } @@ -30016,14 +30029,14 @@ // build geometry - this.setIndex( indices ); - this.addAttribute( 'position', new Float32BufferAttribute( vertices, 3 ) ); - this.addAttribute( 'normal', new Float32BufferAttribute( normals, 3 ) ); - this.addAttribute( 'uv', new Float32BufferAttribute( uvs, 2 ) ); + this.setIndex(indices); + this.addAttribute('position', new Float32BufferAttribute(vertices, 3)); + this.addAttribute('normal', new Float32BufferAttribute(normals, 3)); + this.addAttribute('uv', new Float32BufferAttribute(uvs, 2)); } - RingBufferGeometry.prototype = Object.create( BufferGeometry.prototype ); + RingBufferGeometry.prototype = Object.create(BufferGeometry.prototype); RingBufferGeometry.prototype.constructor = RingBufferGeometry; /** @@ -30034,9 +30047,9 @@ // LatheGeometry - function LatheGeometry( points, segments, phiStart, phiLength ) { + function LatheGeometry(points, segments, phiStart, phiLength) { - Geometry.call( this ); + Geometry.call(this); this.type = 'LatheGeometry'; @@ -30047,19 +30060,19 @@ phiLength: phiLength }; - this.fromBufferGeometry( new LatheBufferGeometry( points, segments, phiStart, phiLength ) ); + this.fromBufferGeometry(new LatheBufferGeometry(points, segments, phiStart, phiLength)); this.mergeVertices(); } - LatheGeometry.prototype = Object.create( Geometry.prototype ); + LatheGeometry.prototype = Object.create(Geometry.prototype); LatheGeometry.prototype.constructor = LatheGeometry; // LatheBufferGeometry - function LatheBufferGeometry( points, segments, phiStart, phiLength ) { + function LatheBufferGeometry(points, segments, phiStart, phiLength) { - BufferGeometry.call( this ); + BufferGeometry.call(this); this.type = 'LatheBufferGeometry'; @@ -30070,13 +30083,13 @@ phiLength: phiLength }; - segments = Math.floor( segments ) || 12; + segments = Math.floor(segments) || 12; phiStart = phiStart || 0; phiLength = phiLength || Math.PI * 2; // clamp phiLength so it's in range of [ 0, 2PI ] - phiLength = _Math.clamp( phiLength, 0, Math.PI * 2 ); + phiLength = _Math.clamp(phiLength, 0, Math.PI * 2); // buffers @@ -30095,29 +30108,29 @@ // generate vertices and uvs - for ( i = 0; i <= segments; i ++ ) { + for (i = 0; i <= segments; i++) { var phi = phiStart + i * inverseSegments * phiLength; - var sin = Math.sin( phi ); - var cos = Math.cos( phi ); + var sin = Math.sin(phi); + var cos = Math.cos(phi); - for ( j = 0; j <= ( points.length - 1 ); j ++ ) { + for (j = 0; j <= (points.length - 1); j++) { // vertex - vertex.x = points[ j ].x * sin; - vertex.y = points[ j ].y; - vertex.z = points[ j ].x * cos; + vertex.x = points[j].x * sin; + vertex.y = points[j].y; + vertex.z = points[j].x * cos; - vertices.push( vertex.x, vertex.y, vertex.z ); + vertices.push(vertex.x, vertex.y, vertex.z); // uv uv.x = i / segments; - uv.y = j / ( points.length - 1 ); + uv.y = j / (points.length - 1); - uvs.push( uv.x, uv.y ); + uvs.push(uv.x, uv.y); } @@ -30126,9 +30139,9 @@ // indices - for ( i = 0; i < segments; i ++ ) { + for (i = 0; i < segments; i++) { - for ( j = 0; j < ( points.length - 1 ); j ++ ) { + for (j = 0; j < (points.length - 1); j++) { base = j + i * points.length; @@ -30139,8 +30152,8 @@ // faces - indices.push( a, b, d ); - indices.push( b, c, d ); + indices.push(a, b, d); + indices.push(b, c, d); } @@ -30148,9 +30161,9 @@ // build geometry - this.setIndex( indices ); - this.addAttribute( 'position', new Float32BufferAttribute( vertices, 3 ) ); - this.addAttribute( 'uv', new Float32BufferAttribute( uvs, 2 ) ); + this.setIndex(indices); + this.addAttribute('position', new Float32BufferAttribute(vertices, 3)); + this.addAttribute('uv', new Float32BufferAttribute(uvs, 2)); // generate normals @@ -30159,7 +30172,7 @@ // if the geometry is closed, we need to average the normals along the seam. // because the corresponding vertices are identical (but still have different UVs). - if ( phiLength === Math.PI * 2 ) { + if (phiLength === Math.PI * 2) { var normals = this.attributes.normal.array; var n1 = new Vector3(); @@ -30170,29 +30183,29 @@ base = segments * points.length * 3; - for ( i = 0, j = 0; i < points.length; i ++, j += 3 ) { + for (i = 0, j = 0; i < points.length; i++ , j += 3) { // select the normal of the vertex in the first line - n1.x = normals[ j + 0 ]; - n1.y = normals[ j + 1 ]; - n1.z = normals[ j + 2 ]; + n1.x = normals[j + 0]; + n1.y = normals[j + 1]; + n1.z = normals[j + 2]; // select the normal of the vertex in the last line - n2.x = normals[ base + j + 0 ]; - n2.y = normals[ base + j + 1 ]; - n2.z = normals[ base + j + 2 ]; + n2.x = normals[base + j + 0]; + n2.y = normals[base + j + 1]; + n2.z = normals[base + j + 2]; // average normals - n.addVectors( n1, n2 ).normalize(); + n.addVectors(n1, n2).normalize(); // assign the new values to both normals - normals[ j + 0 ] = normals[ base + j + 0 ] = n.x; - normals[ j + 1 ] = normals[ base + j + 1 ] = n.y; - normals[ j + 2 ] = normals[ base + j + 2 ] = n.z; + normals[j + 0] = normals[base + j + 0] = n.x; + normals[j + 1] = normals[base + j + 1] = n.y; + normals[j + 2] = normals[base + j + 2] = n.z; } @@ -30200,7 +30213,7 @@ } - LatheBufferGeometry.prototype = Object.create( BufferGeometry.prototype ); + LatheBufferGeometry.prototype = Object.create(BufferGeometry.prototype); LatheBufferGeometry.prototype.constructor = LatheBufferGeometry; /** @@ -30210,15 +30223,15 @@ // ShapeGeometry - function ShapeGeometry( shapes, curveSegments ) { + function ShapeGeometry(shapes, curveSegments) { - Geometry.call( this ); + Geometry.call(this); this.type = 'ShapeGeometry'; - if ( typeof curveSegments === 'object' ) { + if (typeof curveSegments === 'object') { - console.warn( 'THREE.ShapeGeometry: Options parameter has been removed.' ); + console.warn('THREE.ShapeGeometry: Options parameter has been removed.'); curveSegments = curveSegments.curveSegments; @@ -30229,29 +30242,29 @@ curveSegments: curveSegments }; - this.fromBufferGeometry( new ShapeBufferGeometry( shapes, curveSegments ) ); + this.fromBufferGeometry(new ShapeBufferGeometry(shapes, curveSegments)); this.mergeVertices(); } - ShapeGeometry.prototype = Object.create( Geometry.prototype ); + ShapeGeometry.prototype = Object.create(Geometry.prototype); ShapeGeometry.prototype.constructor = ShapeGeometry; ShapeGeometry.prototype.toJSON = function () { - var data = Geometry.prototype.toJSON.call( this ); + var data = Geometry.prototype.toJSON.call(this); var shapes = this.parameters.shapes; - return toJSON$1( shapes, data ); + return toJSON$1(shapes, data); }; // ShapeBufferGeometry - function ShapeBufferGeometry( shapes, curveSegments ) { + function ShapeBufferGeometry(shapes, curveSegments) { - BufferGeometry.call( this ); + BufferGeometry.call(this); this.type = 'ShapeBufferGeometry'; @@ -30276,17 +30289,17 @@ // allow single and array values for "shapes" parameter - if ( Array.isArray( shapes ) === false ) { + if (Array.isArray(shapes) === false) { - addShape( shapes ); + addShape(shapes); } else { - for ( var i = 0; i < shapes.length; i ++ ) { + for (var i = 0; i < shapes.length; i++) { - addShape( shapes[ i ] ); + addShape(shapes[i]); - this.addGroup( groupStart, groupCount, i ); // enables MultiMaterial support + this.addGroup(groupStart, groupCount, i); // enables MultiMaterial support groupStart += groupCount; groupCount = 0; @@ -30297,39 +30310,39 @@ // build geometry - this.setIndex( indices ); - this.addAttribute( 'position', new Float32BufferAttribute( vertices, 3 ) ); - this.addAttribute( 'normal', new Float32BufferAttribute( normals, 3 ) ); - this.addAttribute( 'uv', new Float32BufferAttribute( uvs, 2 ) ); + this.setIndex(indices); + this.addAttribute('position', new Float32BufferAttribute(vertices, 3)); + this.addAttribute('normal', new Float32BufferAttribute(normals, 3)); + this.addAttribute('uv', new Float32BufferAttribute(uvs, 2)); // helper functions - function addShape( shape ) { + function addShape(shape) { var i, l, shapeHole; var indexOffset = vertices.length / 3; - var points = shape.extractPoints( curveSegments ); + var points = shape.extractPoints(curveSegments); var shapeVertices = points.shape; var shapeHoles = points.holes; // check direction of vertices - if ( ShapeUtils.isClockWise( shapeVertices ) === false ) { + if (ShapeUtils.isClockWise(shapeVertices) === false) { shapeVertices = shapeVertices.reverse(); // also check if holes are in the opposite direction - for ( i = 0, l = shapeHoles.length; i < l; i ++ ) { + for (i = 0, l = shapeHoles.length; i < l; i++) { - shapeHole = shapeHoles[ i ]; + shapeHole = shapeHoles[i]; - if ( ShapeUtils.isClockWise( shapeHole ) === true ) { + if (ShapeUtils.isClockWise(shapeHole) === true) { - shapeHoles[ i ] = shapeHole.reverse(); + shapeHoles[i] = shapeHole.reverse(); } @@ -30337,40 +30350,40 @@ } - var faces = ShapeUtils.triangulateShape( shapeVertices, shapeHoles ); + var faces = ShapeUtils.triangulateShape(shapeVertices, shapeHoles); // join vertices of inner and outer paths to a single array - for ( i = 0, l = shapeHoles.length; i < l; i ++ ) { + for (i = 0, l = shapeHoles.length; i < l; i++) { - shapeHole = shapeHoles[ i ]; - shapeVertices = shapeVertices.concat( shapeHole ); + shapeHole = shapeHoles[i]; + shapeVertices = shapeVertices.concat(shapeHole); } // vertices, normals, uvs - for ( i = 0, l = shapeVertices.length; i < l; i ++ ) { + for (i = 0, l = shapeVertices.length; i < l; i++) { - var vertex = shapeVertices[ i ]; + var vertex = shapeVertices[i]; - vertices.push( vertex.x, vertex.y, 0 ); - normals.push( 0, 0, 1 ); - uvs.push( vertex.x, vertex.y ); // world uvs + vertices.push(vertex.x, vertex.y, 0); + normals.push(0, 0, 1); + uvs.push(vertex.x, vertex.y); // world uvs } // incides - for ( i = 0, l = faces.length; i < l; i ++ ) { + for (i = 0, l = faces.length; i < l; i++) { - var face = faces[ i ]; + var face = faces[i]; - var a = face[ 0 ] + indexOffset; - var b = face[ 1 ] + indexOffset; - var c = face[ 2 ] + indexOffset; + var a = face[0] + indexOffset; + var b = face[1] + indexOffset; + var c = face[2] + indexOffset; - indices.push( a, b, c ); + indices.push(a, b, c); groupCount += 3; } @@ -30379,38 +30392,38 @@ } - ShapeBufferGeometry.prototype = Object.create( BufferGeometry.prototype ); + ShapeBufferGeometry.prototype = Object.create(BufferGeometry.prototype); ShapeBufferGeometry.prototype.constructor = ShapeBufferGeometry; ShapeBufferGeometry.prototype.toJSON = function () { - var data = BufferGeometry.prototype.toJSON.call( this ); + var data = BufferGeometry.prototype.toJSON.call(this); var shapes = this.parameters.shapes; - return toJSON$1( shapes, data ); + return toJSON$1(shapes, data); }; // - function toJSON$1( shapes, data ) { + function toJSON$1(shapes, data) { data.shapes = []; - if ( Array.isArray( shapes ) ) { + if (Array.isArray(shapes)) { - for ( var i = 0, l = shapes.length; i < l; i ++ ) { + for (var i = 0, l = shapes.length; i < l; i++) { - var shape = shapes[ i ]; + var shape = shapes[i]; - data.shapes.push( shape.uuid ); + data.shapes.push(shape.uuid); } } else { - data.shapes.push( shapes.uuid ); + data.shapes.push(shapes.uuid); } @@ -30423,9 +30436,9 @@ * @author Mugen87 / https://github.com/Mugen87 */ - function EdgesGeometry( geometry, thresholdAngle ) { + function EdgesGeometry(geometry, thresholdAngle) { - BufferGeometry.call( this ); + BufferGeometry.call(this); this.type = 'EdgesGeometry'; @@ -30433,7 +30446,7 @@ thresholdAngle: thresholdAngle }; - thresholdAngle = ( thresholdAngle !== undefined ) ? thresholdAngle : 1; + thresholdAngle = (thresholdAngle !== undefined) ? thresholdAngle : 1; // buffer @@ -30441,18 +30454,18 @@ // helper variables - var thresholdDot = Math.cos( _Math.DEG2RAD * thresholdAngle ); - var edge = [ 0, 0 ], edges = {}, edge1, edge2; - var key, keys = [ 'a', 'b', 'c' ]; + var thresholdDot = Math.cos(_Math.DEG2RAD * thresholdAngle); + var edge = [0, 0], edges = {}, edge1, edge2; + var key, keys = ['a', 'b', 'c']; // prepare source geometry var geometry2; - if ( geometry.isBufferGeometry ) { + if (geometry.isBufferGeometry) { geometry2 = new Geometry(); - geometry2.fromBufferGeometry( geometry ); + geometry2.fromBufferGeometry(geometry); } else { @@ -30468,26 +30481,26 @@ // now create a data structure where each entry represents an edge with its adjoining faces - for ( var i = 0, l = faces.length; i < l; i ++ ) { + for (var i = 0, l = faces.length; i < l; i++) { - var face = faces[ i ]; + var face = faces[i]; - for ( var j = 0; j < 3; j ++ ) { + for (var j = 0; j < 3; j++) { - edge1 = face[ keys[ j ] ]; - edge2 = face[ keys[ ( j + 1 ) % 3 ] ]; - edge[ 0 ] = Math.min( edge1, edge2 ); - edge[ 1 ] = Math.max( edge1, edge2 ); + edge1 = face[keys[j]]; + edge2 = face[keys[(j + 1) % 3]]; + edge[0] = Math.min(edge1, edge2); + edge[1] = Math.max(edge1, edge2); - key = edge[ 0 ] + ',' + edge[ 1 ]; + key = edge[0] + ',' + edge[1]; - if ( edges[ key ] === undefined ) { + if (edges[key] === undefined) { - edges[ key ] = { index1: edge[ 0 ], index2: edge[ 1 ], face1: i, face2: undefined }; + edges[key] = { index1: edge[0], index2: edge[1], face1: i, face2: undefined }; } else { - edges[ key ].face2 = i; + edges[key].face2 = i; } @@ -30497,19 +30510,19 @@ // generate vertices - for ( key in edges ) { + for (key in edges) { - var e = edges[ key ]; + var e = edges[key]; // an edge is only rendered if the angle (in degrees) between the face normals of the adjoining faces exceeds this value. default = 1 degree. - if ( e.face2 === undefined || faces[ e.face1 ].normal.dot( faces[ e.face2 ].normal ) <= thresholdDot ) { + if (e.face2 === undefined || faces[e.face1].normal.dot(faces[e.face2].normal) <= thresholdDot) { - var vertex = sourceVertices[ e.index1 ]; - vertices.push( vertex.x, vertex.y, vertex.z ); + var vertex = sourceVertices[e.index1]; + vertices.push(vertex.x, vertex.y, vertex.z); - vertex = sourceVertices[ e.index2 ]; - vertices.push( vertex.x, vertex.y, vertex.z ); + vertex = sourceVertices[e.index2]; + vertices.push(vertex.x, vertex.y, vertex.z); } @@ -30517,11 +30530,11 @@ // build geometry - this.addAttribute( 'position', new Float32BufferAttribute( vertices, 3 ) ); + this.addAttribute('position', new Float32BufferAttribute(vertices, 3)); } - EdgesGeometry.prototype = Object.create( BufferGeometry.prototype ); + EdgesGeometry.prototype = Object.create(BufferGeometry.prototype); EdgesGeometry.prototype.constructor = EdgesGeometry; /** @@ -30531,9 +30544,9 @@ // CylinderGeometry - function CylinderGeometry( radiusTop, radiusBottom, height, radialSegments, heightSegments, openEnded, thetaStart, thetaLength ) { + function CylinderGeometry(radiusTop, radiusBottom, height, radialSegments, heightSegments, openEnded, thetaStart, thetaLength) { - Geometry.call( this ); + Geometry.call(this); this.type = 'CylinderGeometry'; @@ -30548,19 +30561,19 @@ thetaLength: thetaLength }; - this.fromBufferGeometry( new CylinderBufferGeometry( radiusTop, radiusBottom, height, radialSegments, heightSegments, openEnded, thetaStart, thetaLength ) ); + this.fromBufferGeometry(new CylinderBufferGeometry(radiusTop, radiusBottom, height, radialSegments, heightSegments, openEnded, thetaStart, thetaLength)); this.mergeVertices(); } - CylinderGeometry.prototype = Object.create( Geometry.prototype ); + CylinderGeometry.prototype = Object.create(Geometry.prototype); CylinderGeometry.prototype.constructor = CylinderGeometry; // CylinderBufferGeometry - function CylinderBufferGeometry( radiusTop, radiusBottom, height, radialSegments, heightSegments, openEnded, thetaStart, thetaLength ) { + function CylinderBufferGeometry(radiusTop, radiusBottom, height, radialSegments, heightSegments, openEnded, thetaStart, thetaLength) { - BufferGeometry.call( this ); + BufferGeometry.call(this); this.type = 'CylinderBufferGeometry'; @@ -30581,8 +30594,8 @@ radiusBottom = radiusBottom !== undefined ? radiusBottom : 1; height = height || 1; - radialSegments = Math.floor( radialSegments ) || 8; - heightSegments = Math.floor( heightSegments ) || 1; + radialSegments = Math.floor(radialSegments) || 8; + heightSegments = Math.floor(heightSegments) || 1; openEnded = openEnded !== undefined ? openEnded : false; thetaStart = thetaStart !== undefined ? thetaStart : 0.0; @@ -30606,19 +30619,19 @@ generateTorso(); - if ( openEnded === false ) { + if (openEnded === false) { - if ( radiusTop > 0 ) generateCap( true ); - if ( radiusBottom > 0 ) generateCap( false ); + if (radiusTop > 0) generateCap(true); + if (radiusBottom > 0) generateCap(false); } // build geometry - this.setIndex( indices ); - this.addAttribute( 'position', new Float32BufferAttribute( vertices, 3 ) ); - this.addAttribute( 'normal', new Float32BufferAttribute( normals, 3 ) ); - this.addAttribute( 'uv', new Float32BufferAttribute( uvs, 2 ) ); + this.setIndex(indices); + this.addAttribute('position', new Float32BufferAttribute(vertices, 3)); + this.addAttribute('normal', new Float32BufferAttribute(normals, 3)); + this.addAttribute('uv', new Float32BufferAttribute(uvs, 2)); function generateTorso() { @@ -30629,11 +30642,11 @@ var groupCount = 0; // this will be used to calculate the normal - var slope = ( radiusBottom - radiusTop ) / height; + var slope = (radiusBottom - radiusTop) / height; // generate vertices, normals and uvs - for ( y = 0; y <= heightSegments; y ++ ) { + for (y = 0; y <= heightSegments; y++) { var indexRow = []; @@ -30641,62 +30654,62 @@ // calculate the radius of the current row - var radius = v * ( radiusBottom - radiusTop ) + radiusTop; + var radius = v * (radiusBottom - radiusTop) + radiusTop; - for ( x = 0; x <= radialSegments; x ++ ) { + for (x = 0; x <= radialSegments; x++) { var u = x / radialSegments; var theta = u * thetaLength + thetaStart; - var sinTheta = Math.sin( theta ); - var cosTheta = Math.cos( theta ); + var sinTheta = Math.sin(theta); + var cosTheta = Math.cos(theta); // vertex vertex.x = radius * sinTheta; vertex.y = - v * height + halfHeight; vertex.z = radius * cosTheta; - vertices.push( vertex.x, vertex.y, vertex.z ); + vertices.push(vertex.x, vertex.y, vertex.z); // normal - normal.set( sinTheta, slope, cosTheta ).normalize(); - normals.push( normal.x, normal.y, normal.z ); + normal.set(sinTheta, slope, cosTheta).normalize(); + normals.push(normal.x, normal.y, normal.z); // uv - uvs.push( u, 1 - v ); + uvs.push(u, 1 - v); // save index of vertex in respective row - indexRow.push( index ++ ); + indexRow.push(index++); } // now save vertices of the row in our index array - indexArray.push( indexRow ); + indexArray.push(indexRow); } // generate indices - for ( x = 0; x < radialSegments; x ++ ) { + for (x = 0; x < radialSegments; x++) { - for ( y = 0; y < heightSegments; y ++ ) { + for (y = 0; y < heightSegments; y++) { // we use the index array to access the correct indices - var a = indexArray[ y ][ x ]; - var b = indexArray[ y + 1 ][ x ]; - var c = indexArray[ y + 1 ][ x + 1 ]; - var d = indexArray[ y ][ x + 1 ]; + var a = indexArray[y][x]; + var b = indexArray[y + 1][x]; + var c = indexArray[y + 1][x + 1]; + var d = indexArray[y][x + 1]; // faces - indices.push( a, b, d ); - indices.push( b, c, d ); + indices.push(a, b, d); + indices.push(b, c, d); // update group counter @@ -30708,7 +30721,7 @@ // add a group to the geometry. this will ensure multi material support - scope.addGroup( groupStart, groupCount, 0 ); + scope.addGroup(groupStart, groupCount, 0); // calculate new start value for groups @@ -30716,7 +30729,7 @@ } - function generateCap( top ) { + function generateCap(top) { var x, centerIndexStart, centerIndexEnd; @@ -30725,8 +30738,8 @@ var groupCount = 0; - var radius = ( top === true ) ? radiusTop : radiusBottom; - var sign = ( top === true ) ? 1 : - 1; + var radius = (top === true) ? radiusTop : radiusBottom; + var sign = (top === true) ? 1 : - 1; // save the index of the first center vertex centerIndexStart = index; @@ -30735,23 +30748,23 @@ // because the geometry needs one set of uvs per face, // we must generate a center vertex per face/segment - for ( x = 1; x <= radialSegments; x ++ ) { + for (x = 1; x <= radialSegments; x++) { // vertex - vertices.push( 0, halfHeight * sign, 0 ); + vertices.push(0, halfHeight * sign, 0); // normal - normals.push( 0, sign, 0 ); + normals.push(0, sign, 0); // uv - uvs.push( 0.5, 0.5 ); + uvs.push(0.5, 0.5); // increase index - index ++; + index++; } @@ -30761,55 +30774,55 @@ // now we generate the surrounding vertices, normals and uvs - for ( x = 0; x <= radialSegments; x ++ ) { + for (x = 0; x <= radialSegments; x++) { var u = x / radialSegments; var theta = u * thetaLength + thetaStart; - var cosTheta = Math.cos( theta ); - var sinTheta = Math.sin( theta ); + var cosTheta = Math.cos(theta); + var sinTheta = Math.sin(theta); // vertex vertex.x = radius * sinTheta; vertex.y = halfHeight * sign; vertex.z = radius * cosTheta; - vertices.push( vertex.x, vertex.y, vertex.z ); + vertices.push(vertex.x, vertex.y, vertex.z); // normal - normals.push( 0, sign, 0 ); + normals.push(0, sign, 0); // uv - uv.x = ( cosTheta * 0.5 ) + 0.5; - uv.y = ( sinTheta * 0.5 * sign ) + 0.5; - uvs.push( uv.x, uv.y ); + uv.x = (cosTheta * 0.5) + 0.5; + uv.y = (sinTheta * 0.5 * sign) + 0.5; + uvs.push(uv.x, uv.y); // increase index - index ++; + index++; } // generate indices - for ( x = 0; x < radialSegments; x ++ ) { + for (x = 0; x < radialSegments; x++) { var c = centerIndexStart + x; var i = centerIndexEnd + x; - if ( top === true ) { + if (top === true) { // face top - indices.push( i, i + 1, c ); + indices.push(i, i + 1, c); } else { // face bottom - indices.push( i + 1, i, c ); + indices.push(i + 1, i, c); } @@ -30819,7 +30832,7 @@ // add a group to the geometry. this will ensure multi material support - scope.addGroup( groupStart, groupCount, top === true ? 1 : 2 ); + scope.addGroup(groupStart, groupCount, top === true ? 1 : 2); // calculate new start value for groups @@ -30829,7 +30842,7 @@ } - CylinderBufferGeometry.prototype = Object.create( BufferGeometry.prototype ); + CylinderBufferGeometry.prototype = Object.create(BufferGeometry.prototype); CylinderBufferGeometry.prototype.constructor = CylinderBufferGeometry; /** @@ -30838,9 +30851,9 @@ // ConeGeometry - function ConeGeometry( radius, height, radialSegments, heightSegments, openEnded, thetaStart, thetaLength ) { + function ConeGeometry(radius, height, radialSegments, heightSegments, openEnded, thetaStart, thetaLength) { - CylinderGeometry.call( this, 0, radius, height, radialSegments, heightSegments, openEnded, thetaStart, thetaLength ); + CylinderGeometry.call(this, 0, radius, height, radialSegments, heightSegments, openEnded, thetaStart, thetaLength); this.type = 'ConeGeometry'; @@ -30856,14 +30869,14 @@ } - ConeGeometry.prototype = Object.create( CylinderGeometry.prototype ); + ConeGeometry.prototype = Object.create(CylinderGeometry.prototype); ConeGeometry.prototype.constructor = ConeGeometry; // ConeBufferGeometry - function ConeBufferGeometry( radius, height, radialSegments, heightSegments, openEnded, thetaStart, thetaLength ) { + function ConeBufferGeometry(radius, height, radialSegments, heightSegments, openEnded, thetaStart, thetaLength) { - CylinderBufferGeometry.call( this, 0, radius, height, radialSegments, heightSegments, openEnded, thetaStart, thetaLength ); + CylinderBufferGeometry.call(this, 0, radius, height, radialSegments, heightSegments, openEnded, thetaStart, thetaLength); this.type = 'ConeBufferGeometry'; @@ -30879,7 +30892,7 @@ } - ConeBufferGeometry.prototype = Object.create( CylinderBufferGeometry.prototype ); + ConeBufferGeometry.prototype = Object.create(CylinderBufferGeometry.prototype); ConeBufferGeometry.prototype.constructor = ConeBufferGeometry; /** @@ -30890,9 +30903,9 @@ // CircleGeometry - function CircleGeometry( radius, segments, thetaStart, thetaLength ) { + function CircleGeometry(radius, segments, thetaStart, thetaLength) { - Geometry.call( this ); + Geometry.call(this); this.type = 'CircleGeometry'; @@ -30903,19 +30916,19 @@ thetaLength: thetaLength }; - this.fromBufferGeometry( new CircleBufferGeometry( radius, segments, thetaStart, thetaLength ) ); + this.fromBufferGeometry(new CircleBufferGeometry(radius, segments, thetaStart, thetaLength)); this.mergeVertices(); } - CircleGeometry.prototype = Object.create( Geometry.prototype ); + CircleGeometry.prototype = Object.create(Geometry.prototype); CircleGeometry.prototype.constructor = CircleGeometry; // CircleBufferGeometry - function CircleBufferGeometry( radius, segments, thetaStart, thetaLength ) { + function CircleBufferGeometry(radius, segments, thetaStart, thetaLength) { - BufferGeometry.call( this ); + BufferGeometry.call(this); this.type = 'CircleBufferGeometry'; @@ -30927,7 +30940,7 @@ }; radius = radius || 1; - segments = segments !== undefined ? Math.max( 3, segments ) : 8; + segments = segments !== undefined ? Math.max(3, segments) : 8; thetaStart = thetaStart !== undefined ? thetaStart : 0; thetaLength = thetaLength !== undefined ? thetaLength : Math.PI * 2; @@ -30947,52 +30960,52 @@ // center point - vertices.push( 0, 0, 0 ); - normals.push( 0, 0, 1 ); - uvs.push( 0.5, 0.5 ); + vertices.push(0, 0, 0); + normals.push(0, 0, 1); + uvs.push(0.5, 0.5); - for ( s = 0, i = 3; s <= segments; s ++, i += 3 ) { + for (s = 0, i = 3; s <= segments; s++ , i += 3) { var segment = thetaStart + s / segments * thetaLength; // vertex - vertex.x = radius * Math.cos( segment ); - vertex.y = radius * Math.sin( segment ); + vertex.x = radius * Math.cos(segment); + vertex.y = radius * Math.sin(segment); - vertices.push( vertex.x, vertex.y, vertex.z ); + vertices.push(vertex.x, vertex.y, vertex.z); // normal - normals.push( 0, 0, 1 ); + normals.push(0, 0, 1); // uvs - uv.x = ( vertices[ i ] / radius + 1 ) / 2; - uv.y = ( vertices[ i + 1 ] / radius + 1 ) / 2; + uv.x = (vertices[i] / radius + 1) / 2; + uv.y = (vertices[i + 1] / radius + 1) / 2; - uvs.push( uv.x, uv.y ); + uvs.push(uv.x, uv.y); } // indices - for ( i = 1; i <= segments; i ++ ) { + for (i = 1; i <= segments; i++) { - indices.push( i, i + 1, 0 ); + indices.push(i, i + 1, 0); } // build geometry - this.setIndex( indices ); - this.addAttribute( 'position', new Float32BufferAttribute( vertices, 3 ) ); - this.addAttribute( 'normal', new Float32BufferAttribute( normals, 3 ) ); - this.addAttribute( 'uv', new Float32BufferAttribute( uvs, 2 ) ); + this.setIndex(indices); + this.addAttribute('position', new Float32BufferAttribute(vertices, 3)); + this.addAttribute('normal', new Float32BufferAttribute(normals, 3)); + this.addAttribute('uv', new Float32BufferAttribute(uvs, 2)); } - CircleBufferGeometry.prototype = Object.create( BufferGeometry.prototype ); + CircleBufferGeometry.prototype = Object.create(BufferGeometry.prototype); CircleBufferGeometry.prototype.constructor = CircleBufferGeometry; @@ -31050,29 +31063,29 @@ * } */ - function ShadowMaterial( parameters ) { + function ShadowMaterial(parameters) { - Material.call( this ); + Material.call(this); this.type = 'ShadowMaterial'; - this.color = new Color( 0x000000 ); + this.color = new Color(0x000000); this.transparent = true; - this.setValues( parameters ); + this.setValues(parameters); } - ShadowMaterial.prototype = Object.create( Material.prototype ); + ShadowMaterial.prototype = Object.create(Material.prototype); ShadowMaterial.prototype.constructor = ShadowMaterial; ShadowMaterial.prototype.isShadowMaterial = true; - ShadowMaterial.prototype.copy = function ( source ) { + ShadowMaterial.prototype.copy = function (source) { - Material.prototype.copy.call( this, source ); + Material.prototype.copy.call(this, source); - this.color.copy( source.color ); + this.color.copy(source.color); return this; @@ -31082,15 +31095,15 @@ * @author mrdoob / http://mrdoob.com/ */ - function RawShaderMaterial( parameters ) { + function RawShaderMaterial(parameters) { - ShaderMaterial.call( this, parameters ); + ShaderMaterial.call(this, parameters); this.type = 'RawShaderMaterial'; } - RawShaderMaterial.prototype = Object.create( ShaderMaterial.prototype ); + RawShaderMaterial.prototype = Object.create(ShaderMaterial.prototype); RawShaderMaterial.prototype.constructor = RawShaderMaterial; RawShaderMaterial.prototype.isRawShaderMaterial = true; @@ -31147,15 +31160,15 @@ * } */ - function MeshStandardMaterial( parameters ) { + function MeshStandardMaterial(parameters) { - Material.call( this ); + Material.call(this); this.defines = { 'STANDARD': '' }; this.type = 'MeshStandardMaterial'; - this.color = new Color( 0xffffff ); // diffuse + this.color = new Color(0xffffff); // diffuse this.roughness = 0.5; this.metalness = 0.5; @@ -31167,7 +31180,7 @@ this.aoMap = null; this.aoMapIntensity = 1.0; - this.emissive = new Color( 0x000000 ); + this.emissive = new Color(0x000000); this.emissiveIntensity = 1.0; this.emissiveMap = null; @@ -31176,7 +31189,7 @@ this.normalMap = null; this.normalMapType = TangentSpaceNormalMap; - this.normalScale = new Vector2( 1, 1 ); + this.normalScale = new Vector2(1, 1); this.displacementMap = null; this.displacementScale = 1; @@ -31202,22 +31215,22 @@ this.morphTargets = false; this.morphNormals = false; - this.setValues( parameters ); + this.setValues(parameters); } - MeshStandardMaterial.prototype = Object.create( Material.prototype ); + MeshStandardMaterial.prototype = Object.create(Material.prototype); MeshStandardMaterial.prototype.constructor = MeshStandardMaterial; MeshStandardMaterial.prototype.isMeshStandardMaterial = true; - MeshStandardMaterial.prototype.copy = function ( source ) { + MeshStandardMaterial.prototype.copy = function (source) { - Material.prototype.copy.call( this, source ); + Material.prototype.copy.call(this, source); this.defines = { 'STANDARD': '' }; - this.color.copy( source.color ); + this.color.copy(source.color); this.roughness = source.roughness; this.metalness = source.metalness; @@ -31229,7 +31242,7 @@ this.aoMap = source.aoMap; this.aoMapIntensity = source.aoMapIntensity; - this.emissive.copy( source.emissive ); + this.emissive.copy(source.emissive); this.emissiveMap = source.emissiveMap; this.emissiveIntensity = source.emissiveIntensity; @@ -31238,7 +31251,7 @@ this.normalMap = source.normalMap; this.normalMapType = source.normalMapType; - this.normalScale.copy( source.normalScale ); + this.normalScale.copy(source.normalScale); this.displacementMap = source.displacementMap; this.displacementScale = source.displacementScale; @@ -31276,9 +31289,9 @@ * } */ - function MeshPhysicalMaterial( parameters ) { + function MeshPhysicalMaterial(parameters) { - MeshStandardMaterial.call( this ); + MeshStandardMaterial.call(this); this.defines = { 'PHYSICAL': '' }; @@ -31289,18 +31302,18 @@ this.clearCoat = 0.0; this.clearCoatRoughness = 0.0; - this.setValues( parameters ); + this.setValues(parameters); } - MeshPhysicalMaterial.prototype = Object.create( MeshStandardMaterial.prototype ); + MeshPhysicalMaterial.prototype = Object.create(MeshStandardMaterial.prototype); MeshPhysicalMaterial.prototype.constructor = MeshPhysicalMaterial; MeshPhysicalMaterial.prototype.isMeshPhysicalMaterial = true; - MeshPhysicalMaterial.prototype.copy = function ( source ) { + MeshPhysicalMaterial.prototype.copy = function (source) { - MeshStandardMaterial.prototype.copy.call( this, source ); + MeshStandardMaterial.prototype.copy.call(this, source); this.defines = { 'PHYSICAL': '' }; @@ -31364,14 +31377,14 @@ * } */ - function MeshPhongMaterial( parameters ) { + function MeshPhongMaterial(parameters) { - Material.call( this ); + Material.call(this); this.type = 'MeshPhongMaterial'; - this.color = new Color( 0xffffff ); // diffuse - this.specular = new Color( 0x111111 ); + this.color = new Color(0xffffff); // diffuse + this.specular = new Color(0x111111); this.shininess = 30; this.map = null; @@ -31382,7 +31395,7 @@ this.aoMap = null; this.aoMapIntensity = 1.0; - this.emissive = new Color( 0x000000 ); + this.emissive = new Color(0x000000); this.emissiveIntensity = 1.0; this.emissiveMap = null; @@ -31391,7 +31404,7 @@ this.normalMap = null; this.normalMapType = TangentSpaceNormalMap; - this.normalScale = new Vector2( 1, 1 ); + this.normalScale = new Vector2(1, 1); this.displacementMap = null; this.displacementScale = 1; @@ -31415,21 +31428,21 @@ this.morphTargets = false; this.morphNormals = false; - this.setValues( parameters ); + this.setValues(parameters); } - MeshPhongMaterial.prototype = Object.create( Material.prototype ); + MeshPhongMaterial.prototype = Object.create(Material.prototype); MeshPhongMaterial.prototype.constructor = MeshPhongMaterial; MeshPhongMaterial.prototype.isMeshPhongMaterial = true; - MeshPhongMaterial.prototype.copy = function ( source ) { + MeshPhongMaterial.prototype.copy = function (source) { - Material.prototype.copy.call( this, source ); + Material.prototype.copy.call(this, source); - this.color.copy( source.color ); - this.specular.copy( source.specular ); + this.color.copy(source.color); + this.specular.copy(source.specular); this.shininess = source.shininess; this.map = source.map; @@ -31440,7 +31453,7 @@ this.aoMap = source.aoMap; this.aoMapIntensity = source.aoMapIntensity; - this.emissive.copy( source.emissive ); + this.emissive.copy(source.emissive); this.emissiveMap = source.emissiveMap; this.emissiveIntensity = source.emissiveIntensity; @@ -31449,7 +31462,7 @@ this.normalMap = source.normalMap; this.normalMapType = source.normalMapType; - this.normalScale.copy( source.normalScale ); + this.normalScale.copy(source.normalScale); this.displacementMap = source.displacementMap; this.displacementScale = source.displacementScale; @@ -31485,9 +31498,9 @@ * } */ - function MeshToonMaterial( parameters ) { + function MeshToonMaterial(parameters) { - MeshPhongMaterial.call( this ); + MeshPhongMaterial.call(this); this.defines = { 'TOON': '' }; @@ -31495,18 +31508,18 @@ this.gradientMap = null; - this.setValues( parameters ); + this.setValues(parameters); } - MeshToonMaterial.prototype = Object.create( MeshPhongMaterial.prototype ); + MeshToonMaterial.prototype = Object.create(MeshPhongMaterial.prototype); MeshToonMaterial.prototype.constructor = MeshToonMaterial; MeshToonMaterial.prototype.isMeshToonMaterial = true; - MeshToonMaterial.prototype.copy = function ( source ) { + MeshToonMaterial.prototype.copy = function (source) { - MeshPhongMaterial.prototype.copy.call( this, source ); + MeshPhongMaterial.prototype.copy.call(this, source); this.gradientMap = source.gradientMap; @@ -31541,9 +31554,9 @@ * } */ - function MeshNormalMaterial( parameters ) { + function MeshNormalMaterial(parameters) { - Material.call( this ); + Material.call(this); this.type = 'MeshNormalMaterial'; @@ -31552,7 +31565,7 @@ this.normalMap = null; this.normalMapType = TangentSpaceNormalMap; - this.normalScale = new Vector2( 1, 1 ); + this.normalScale = new Vector2(1, 1); this.displacementMap = null; this.displacementScale = 1; @@ -31568,25 +31581,25 @@ this.morphTargets = false; this.morphNormals = false; - this.setValues( parameters ); + this.setValues(parameters); } - MeshNormalMaterial.prototype = Object.create( Material.prototype ); + MeshNormalMaterial.prototype = Object.create(Material.prototype); MeshNormalMaterial.prototype.constructor = MeshNormalMaterial; MeshNormalMaterial.prototype.isMeshNormalMaterial = true; - MeshNormalMaterial.prototype.copy = function ( source ) { + MeshNormalMaterial.prototype.copy = function (source) { - Material.prototype.copy.call( this, source ); + Material.prototype.copy.call(this, source); this.bumpMap = source.bumpMap; this.bumpScale = source.bumpScale; this.normalMap = source.normalMap; this.normalMapType = source.normalMapType; - this.normalScale.copy( source.normalScale ); + this.normalScale.copy(source.normalScale); this.displacementMap = source.displacementMap; this.displacementScale = source.displacementScale; @@ -31641,13 +31654,13 @@ * } */ - function MeshLambertMaterial( parameters ) { + function MeshLambertMaterial(parameters) { - Material.call( this ); + Material.call(this); this.type = 'MeshLambertMaterial'; - this.color = new Color( 0xffffff ); // diffuse + this.color = new Color(0xffffff); // diffuse this.map = null; @@ -31657,7 +31670,7 @@ this.aoMap = null; this.aoMapIntensity = 1.0; - this.emissive = new Color( 0x000000 ); + this.emissive = new Color(0x000000); this.emissiveIntensity = 1.0; this.emissiveMap = null; @@ -31679,20 +31692,20 @@ this.morphTargets = false; this.morphNormals = false; - this.setValues( parameters ); + this.setValues(parameters); } - MeshLambertMaterial.prototype = Object.create( Material.prototype ); + MeshLambertMaterial.prototype = Object.create(Material.prototype); MeshLambertMaterial.prototype.constructor = MeshLambertMaterial; MeshLambertMaterial.prototype.isMeshLambertMaterial = true; - MeshLambertMaterial.prototype.copy = function ( source ) { + MeshLambertMaterial.prototype.copy = function (source) { - Material.prototype.copy.call( this, source ); + Material.prototype.copy.call(this, source); - this.color.copy( source.color ); + this.color.copy(source.color); this.map = source.map; @@ -31702,7 +31715,7 @@ this.aoMap = source.aoMap; this.aoMapIntensity = source.aoMapIntensity; - this.emissive.copy( source.emissive ); + this.emissive.copy(source.emissive); this.emissiveMap = source.emissiveMap; this.emissiveIntensity = source.emissiveIntensity; @@ -31758,15 +31771,15 @@ * } */ - function MeshMatcapMaterial( parameters ) { + function MeshMatcapMaterial(parameters) { - Material.call( this ); + Material.call(this); this.defines = { 'MATCAP': '' }; this.type = 'MeshMatcapMaterial'; - this.color = new Color( 0xffffff ); // diffuse + this.color = new Color(0xffffff); // diffuse this.matcap = null; @@ -31777,7 +31790,7 @@ this.normalMap = null; this.normalMapType = TangentSpaceNormalMap; - this.normalScale = new Vector2( 1, 1 ); + this.normalScale = new Vector2(1, 1); this.displacementMap = null; this.displacementScale = 1; @@ -31791,39 +31804,39 @@ this.lights = false; - this.setValues( parameters ); + this.setValues(parameters); // a matcap is required - if ( this.matcap === null ) { + if (this.matcap === null) { - var canvas = document.createElement( 'canvas' ); + var canvas = document.createElement('canvas'); canvas.width = 1; canvas.height = 1; - var context = canvas.getContext( '2d' ); + var context = canvas.getContext('2d'); context.fillStyle = '#fff'; - context.fillRect( 0, 0, 1, 1 ); + context.fillRect(0, 0, 1, 1); - this.matcap = new THREE.CanvasTexture( canvas ); + this.matcap = new THREE.CanvasTexture(canvas); } } - MeshMatcapMaterial.prototype = Object.create( Material.prototype ); + MeshMatcapMaterial.prototype = Object.create(Material.prototype); MeshMatcapMaterial.prototype.constructor = MeshMatcapMaterial; MeshMatcapMaterial.prototype.isMeshMatcapMaterial = true; - MeshMatcapMaterial.prototype.copy = function ( source ) { + MeshMatcapMaterial.prototype.copy = function (source) { - Material.prototype.copy.call( this, source ); + Material.prototype.copy.call(this, source); this.defines = { 'MATCAP': '' }; - this.color.copy( source.color ); + this.color.copy(source.color); this.matcap = source.matcap; @@ -31834,7 +31847,7 @@ this.normalMap = source.normalMap; this.normalMapType = source.normalMapType; - this.normalScale.copy( source.normalScale ); + this.normalScale.copy(source.normalScale); this.displacementMap = source.displacementMap; this.displacementScale = source.displacementScale; @@ -31865,9 +31878,9 @@ * } */ - function LineDashedMaterial( parameters ) { + function LineDashedMaterial(parameters) { - LineBasicMaterial.call( this ); + LineBasicMaterial.call(this); this.type = 'LineDashedMaterial'; @@ -31875,18 +31888,18 @@ this.dashSize = 3; this.gapSize = 1; - this.setValues( parameters ); + this.setValues(parameters); } - LineDashedMaterial.prototype = Object.create( LineBasicMaterial.prototype ); + LineDashedMaterial.prototype = Object.create(LineBasicMaterial.prototype); LineDashedMaterial.prototype.constructor = LineDashedMaterial; LineDashedMaterial.prototype.isLineDashedMaterial = true; - LineDashedMaterial.prototype.copy = function ( source ) { + LineDashedMaterial.prototype.copy = function (source) { - LineBasicMaterial.prototype.copy.call( this, source ); + LineBasicMaterial.prototype.copy.call(this, source); this.scale = source.scale; this.dashSize = source.dashSize; @@ -31928,75 +31941,75 @@ var AnimationUtils = { // same as Array.prototype.slice, but also works on typed arrays - arraySlice: function ( array, from, to ) { + arraySlice: function (array, from, to) { - if ( AnimationUtils.isTypedArray( array ) ) { + if (AnimationUtils.isTypedArray(array)) { // in ios9 array.subarray(from, undefined) will return empty array // but array.subarray(from) or array.subarray(from, len) is correct - return new array.constructor( array.subarray( from, to !== undefined ? to : array.length ) ); + return new array.constructor(array.subarray(from, to !== undefined ? to : array.length)); } - return array.slice( from, to ); + return array.slice(from, to); }, // converts an array to a specific type - convertArray: function ( array, type, forceClone ) { + convertArray: function (array, type, forceClone) { - if ( ! array || // let 'undefined' and 'null' pass - ! forceClone && array.constructor === type ) return array; + if (!array || // let 'undefined' and 'null' pass + !forceClone && array.constructor === type) return array; - if ( typeof type.BYTES_PER_ELEMENT === 'number' ) { + if (typeof type.BYTES_PER_ELEMENT === 'number') { - return new type( array ); // create typed array + return new type(array); // create typed array } - return Array.prototype.slice.call( array ); // create Array + return Array.prototype.slice.call(array); // create Array }, - isTypedArray: function ( object ) { + isTypedArray: function (object) { - return ArrayBuffer.isView( object ) && - ! ( object instanceof DataView ); + return ArrayBuffer.isView(object) && + !(object instanceof DataView); }, // returns an array by which times and values can be sorted - getKeyframeOrder: function ( times ) { + getKeyframeOrder: function (times) { - function compareTime( i, j ) { + function compareTime(i, j) { - return times[ i ] - times[ j ]; + return times[i] - times[j]; } var n = times.length; - var result = new Array( n ); - for ( var i = 0; i !== n; ++ i ) result[ i ] = i; + var result = new Array(n); + for (var i = 0; i !== n; ++i) result[i] = i; - result.sort( compareTime ); + result.sort(compareTime); return result; }, // uses the array previously returned by 'getKeyframeOrder' to sort data - sortedArray: function ( values, stride, order ) { + sortedArray: function (values, stride, order) { var nValues = values.length; - var result = new values.constructor( nValues ); + var result = new values.constructor(nValues); - for ( var i = 0, dstOffset = 0; dstOffset !== nValues; ++ i ) { + for (var i = 0, dstOffset = 0; dstOffset !== nValues; ++i) { - var srcOffset = order[ i ] * stride; + var srcOffset = order[i] * stride; - for ( var j = 0; j !== stride; ++ j ) { + for (var j = 0; j !== stride; ++j) { - result[ dstOffset ++ ] = values[ srcOffset + j ]; + result[dstOffset++] = values[srcOffset + j]; } @@ -32007,56 +32020,56 @@ }, // function for parsing AOS keyframe formats - flattenJSON: function ( jsonKeys, times, values, valuePropertyName ) { + flattenJSON: function (jsonKeys, times, values, valuePropertyName) { - var i = 1, key = jsonKeys[ 0 ]; + var i = 1, key = jsonKeys[0]; - while ( key !== undefined && key[ valuePropertyName ] === undefined ) { + while (key !== undefined && key[valuePropertyName] === undefined) { - key = jsonKeys[ i ++ ]; + key = jsonKeys[i++]; } - if ( key === undefined ) return; // no data + if (key === undefined) return; // no data - var value = key[ valuePropertyName ]; - if ( value === undefined ) return; // no data + var value = key[valuePropertyName]; + if (value === undefined) return; // no data - if ( Array.isArray( value ) ) { + if (Array.isArray(value)) { do { - value = key[ valuePropertyName ]; + value = key[valuePropertyName]; - if ( value !== undefined ) { + if (value !== undefined) { - times.push( key.time ); - values.push.apply( values, value ); // push all elements + times.push(key.time); + values.push.apply(values, value); // push all elements } - key = jsonKeys[ i ++ ]; + key = jsonKeys[i++]; - } while ( key !== undefined ); + } while (key !== undefined); - } else if ( value.toArray !== undefined ) { + } else if (value.toArray !== undefined) { // ...assume THREE.Math-ish do { - value = key[ valuePropertyName ]; + value = key[valuePropertyName]; - if ( value !== undefined ) { + if (value !== undefined) { - times.push( key.time ); - value.toArray( values, values.length ); + times.push(key.time); + value.toArray(values, values.length); } - key = jsonKeys[ i ++ ]; + key = jsonKeys[i++]; - } while ( key !== undefined ); + } while (key !== undefined); } else { @@ -32064,18 +32077,18 @@ do { - value = key[ valuePropertyName ]; + value = key[valuePropertyName]; - if ( value !== undefined ) { + if (value !== undefined) { - times.push( key.time ); - values.push( value ); + times.push(key.time); + values.push(value); } - key = jsonKeys[ i ++ ]; + key = jsonKeys[i++]; - } while ( key !== undefined ); + } while (key !== undefined); } @@ -32105,27 +32118,27 @@ * @author tschw */ - function Interpolant( parameterPositions, sampleValues, sampleSize, resultBuffer ) { + function Interpolant(parameterPositions, sampleValues, sampleSize, resultBuffer) { this.parameterPositions = parameterPositions; this._cachedIndex = 0; this.resultBuffer = resultBuffer !== undefined ? - resultBuffer : new sampleValues.constructor( sampleSize ); + resultBuffer : new sampleValues.constructor(sampleSize); this.sampleValues = sampleValues; this.valueSize = sampleSize; } - Object.assign( Interpolant.prototype, { + Object.assign(Interpolant.prototype, { - evaluate: function ( t ) { + evaluate: function (t) { var pp = this.parameterPositions, i1 = this._cachedIndex, - t1 = pp[ i1 ], - t0 = pp[ i1 - 1 ]; + t1 = pp[i1], + t0 = pp[i1 - 1]; validate_interval: { @@ -32139,28 +32152,28 @@ //- slower code: //- //- if ( t >= t1 || t1 === undefined ) { - forward_scan: if ( ! ( t < t1 ) ) { + forward_scan: if (!(t < t1)) { - for ( var giveUpAt = i1 + 2; ; ) { + for (var giveUpAt = i1 + 2; ;) { - if ( t1 === undefined ) { + if (t1 === undefined) { - if ( t < t0 ) break forward_scan; + if (t < t0) break forward_scan; // after end i1 = pp.length; this._cachedIndex = i1; - return this.afterEnd_( i1 - 1, t, t0 ); + return this.afterEnd_(i1 - 1, t, t0); } - if ( i1 === giveUpAt ) break; // this loop + if (i1 === giveUpAt) break; // this loop t0 = t1; - t1 = pp[ ++ i1 ]; + t1 = pp[++i1]; - if ( t < t1 ) { + if (t < t1) { // we have arrived at the sought interval break seek; @@ -32177,13 +32190,13 @@ //- slower code: //- if ( t < t0 || t0 === undefined ) { - if ( ! ( t >= t0 ) ) { + if (!(t >= t0)) { // looping? - var t1global = pp[ 1 ]; + var t1global = pp[1]; - if ( t < t1global ) { + if (t < t1global) { i1 = 2; // + 1, using the scan for the details t0 = t1global; @@ -32192,23 +32205,23 @@ // linear reverse scan - for ( var giveUpAt = i1 - 2; ; ) { + for (var giveUpAt = i1 - 2; ;) { - if ( t0 === undefined ) { + if (t0 === undefined) { // before start this._cachedIndex = 0; - return this.beforeStart_( 0, t, t1 ); + return this.beforeStart_(0, t, t1); } - if ( i1 === giveUpAt ) break; // this loop + if (i1 === giveUpAt) break; // this loop t1 = t0; - t0 = pp[ -- i1 - 1 ]; + t0 = pp[--i1 - 1]; - if ( t >= t0 ) { + if (t >= t0) { // we have arrived at the sought interval break seek; @@ -32232,11 +32245,11 @@ // binary search - while ( i1 < right ) { + while (i1 < right) { - var mid = ( i1 + right ) >>> 1; + var mid = (i1 + right) >>> 1; - if ( t < pp[ mid ] ) { + if (t < pp[mid]) { right = mid; @@ -32248,23 +32261,23 @@ } - t1 = pp[ i1 ]; - t0 = pp[ i1 - 1 ]; + t1 = pp[i1]; + t0 = pp[i1 - 1]; // check boundary cases, again - if ( t0 === undefined ) { + if (t0 === undefined) { this._cachedIndex = 0; - return this.beforeStart_( 0, t, t1 ); + return this.beforeStart_(0, t, t1); } - if ( t1 === undefined ) { + if (t1 === undefined) { i1 = pp.length; this._cachedIndex = i1; - return this.afterEnd_( i1 - 1, t0, t ); + return this.afterEnd_(i1 - 1, t0, t); } @@ -32272,11 +32285,11 @@ this._cachedIndex = i1; - this.intervalChanged_( i1, t0, t1 ); + this.intervalChanged_(i1, t0, t1); } // validate_interval - return this.interpolate_( i1, t0, t, t1 ); + return this.interpolate_(i1, t0, t, t1); }, @@ -32293,7 +32306,7 @@ }, - copySampleValue_: function ( index ) { + copySampleValue_: function (index) { // copies a sample value to the result buffer @@ -32302,9 +32315,9 @@ stride = this.valueSize, offset = index * stride; - for ( var i = 0; i !== stride; ++ i ) { + for (var i = 0; i !== stride; ++i) { - result[ i ] = values[ offset + i ]; + result[i] = values[offset + i]; } @@ -32314,23 +32327,23 @@ // Template methods for derived classes: - interpolate_: function ( /* i1, t0, t, t1 */ ) { + interpolate_: function ( /* i1, t0, t, t1 */) { - throw new Error( 'call to abstract method' ); + throw new Error('call to abstract method'); // implementations shall return this.resultBuffer }, - intervalChanged_: function ( /* i1, t0, t1 */ ) { + intervalChanged_: function ( /* i1, t0, t1 */) { // empty } - } ); + }); //!\ DECLARE ALIAS AFTER assign prototype ! - Object.assign( Interpolant.prototype, { + Object.assign(Interpolant.prototype, { //( 0, t, t0 ), returns this.resultBuffer beforeStart_: Interpolant.prototype.copySampleValue_, @@ -32338,7 +32351,7 @@ //( N-1, tN-1, t ), returns this.resultBuffer afterEnd_: Interpolant.prototype.copySampleValue_, - } ); + }); /** * Fast and simple cubic spline interpolant. @@ -32350,9 +32363,9 @@ * @author tschw */ - function CubicInterpolant( parameterPositions, sampleValues, sampleSize, resultBuffer ) { + function CubicInterpolant(parameterPositions, sampleValues, sampleSize, resultBuffer) { - Interpolant.call( this, parameterPositions, sampleValues, sampleSize, resultBuffer ); + Interpolant.call(this, parameterPositions, sampleValues, sampleSize, resultBuffer); this._weightPrev = - 0; this._offsetPrev = - 0; @@ -32361,7 +32374,7 @@ } - CubicInterpolant.prototype = Object.assign( Object.create( Interpolant.prototype ), { + CubicInterpolant.prototype = Object.assign(Object.create(Interpolant.prototype), { constructor: CubicInterpolant, @@ -32372,18 +32385,18 @@ }, - intervalChanged_: function ( i1, t0, t1 ) { + intervalChanged_: function (i1, t0, t1) { var pp = this.parameterPositions, iPrev = i1 - 2, iNext = i1 + 1, - tPrev = pp[ iPrev ], - tNext = pp[ iNext ]; + tPrev = pp[iPrev], + tNext = pp[iNext]; - if ( tPrev === undefined ) { + if (tPrev === undefined) { - switch ( this.getSettings_().endingStart ) { + switch (this.getSettings_().endingStart) { case ZeroSlopeEnding: @@ -32397,7 +32410,7 @@ // use the other end of the curve iPrev = pp.length - 2; - tPrev = t0 + pp[ iPrev ] - pp[ iPrev + 1 ]; + tPrev = t0 + pp[iPrev] - pp[iPrev + 1]; break; @@ -32411,9 +32424,9 @@ } - if ( tNext === undefined ) { + if (tNext === undefined) { - switch ( this.getSettings_().endingEnd ) { + switch (this.getSettings_().endingEnd) { case ZeroSlopeEnding: @@ -32427,7 +32440,7 @@ // use the other end of the curve iNext = 1; - tNext = t1 + pp[ 1 ] - pp[ 0 ]; + tNext = t1 + pp[1] - pp[0]; break; @@ -32441,46 +32454,46 @@ } - var halfDt = ( t1 - t0 ) * 0.5, + var halfDt = (t1 - t0) * 0.5, stride = this.valueSize; - this._weightPrev = halfDt / ( t0 - tPrev ); - this._weightNext = halfDt / ( tNext - t1 ); + this._weightPrev = halfDt / (t0 - tPrev); + this._weightNext = halfDt / (tNext - t1); this._offsetPrev = iPrev * stride; this._offsetNext = iNext * stride; }, - interpolate_: function ( i1, t0, t, t1 ) { + interpolate_: function (i1, t0, t, t1) { var result = this.resultBuffer, values = this.sampleValues, stride = this.valueSize, - o1 = i1 * stride, o0 = o1 - stride, - oP = this._offsetPrev, oN = this._offsetNext, - wP = this._weightPrev, wN = this._weightNext, + o1 = i1 * stride, o0 = o1 - stride, + oP = this._offsetPrev, oN = this._offsetNext, + wP = this._weightPrev, wN = this._weightNext, - p = ( t - t0 ) / ( t1 - t0 ), + p = (t - t0) / (t1 - t0), pp = p * p, ppp = pp * p; // evaluate polynomials var sP = - wP * ppp + 2 * wP * pp - wP * p; - var s0 = ( 1 + wP ) * ppp + ( - 1.5 - 2 * wP ) * pp + ( - 0.5 + wP ) * p + 1; - var s1 = ( - 1 - wN ) * ppp + ( 1.5 + wN ) * pp + 0.5 * p; + var s0 = (1 + wP) * ppp + (- 1.5 - 2 * wP) * pp + (- 0.5 + wP) * p + 1; + var s1 = (- 1 - wN) * ppp + (1.5 + wN) * pp + 0.5 * p; var sN = wN * ppp - wN * pp; // combine data linearly - for ( var i = 0; i !== stride; ++ i ) { + for (var i = 0; i !== stride; ++i) { - result[ i ] = - sP * values[ oP + i ] + - s0 * values[ o0 + i ] + - s1 * values[ o1 + i ] + - sN * values[ oN + i ]; + result[i] = + sP * values[oP + i] + + s0 * values[o0 + i] + + s1 * values[o1 + i] + + sN * values[oN + i]; } @@ -32488,23 +32501,23 @@ } - } ); + }); /** * @author tschw */ - function LinearInterpolant( parameterPositions, sampleValues, sampleSize, resultBuffer ) { + function LinearInterpolant(parameterPositions, sampleValues, sampleSize, resultBuffer) { - Interpolant.call( this, parameterPositions, sampleValues, sampleSize, resultBuffer ); + Interpolant.call(this, parameterPositions, sampleValues, sampleSize, resultBuffer); } - LinearInterpolant.prototype = Object.assign( Object.create( Interpolant.prototype ), { + LinearInterpolant.prototype = Object.assign(Object.create(Interpolant.prototype), { constructor: LinearInterpolant, - interpolate_: function ( i1, t0, t, t1 ) { + interpolate_: function (i1, t0, t, t1) { var result = this.resultBuffer, values = this.sampleValues, @@ -32513,14 +32526,14 @@ offset1 = i1 * stride, offset0 = offset1 - stride, - weight1 = ( t - t0 ) / ( t1 - t0 ), + weight1 = (t - t0) / (t1 - t0), weight0 = 1 - weight1; - for ( var i = 0; i !== stride; ++ i ) { + for (var i = 0; i !== stride; ++i) { - result[ i ] = - values[ offset0 + i ] * weight0 + - values[ offset1 + i ] * weight1; + result[i] = + values[offset0 + i] * weight0 + + values[offset1 + i] * weight1; } @@ -32528,7 +32541,7 @@ } - } ); + }); /** * @@ -32538,23 +32551,23 @@ * @author tschw */ - function DiscreteInterpolant( parameterPositions, sampleValues, sampleSize, resultBuffer ) { + function DiscreteInterpolant(parameterPositions, sampleValues, sampleSize, resultBuffer) { - Interpolant.call( this, parameterPositions, sampleValues, sampleSize, resultBuffer ); + Interpolant.call(this, parameterPositions, sampleValues, sampleSize, resultBuffer); } - DiscreteInterpolant.prototype = Object.assign( Object.create( Interpolant.prototype ), { + DiscreteInterpolant.prototype = Object.assign(Object.create(Interpolant.prototype), { constructor: DiscreteInterpolant, - interpolate_: function ( i1 /*, t0, t, t1 */ ) { + interpolate_: function (i1 /*, t0, t, t1 */) { - return this.copySampleValue_( i1 - 1 ); + return this.copySampleValue_(i1 - 1); } - } ); + }); /** * @@ -32566,37 +32579,37 @@ * @author tschw */ - function KeyframeTrack( name, times, values, interpolation ) { + function KeyframeTrack(name, times, values, interpolation) { - if ( name === undefined ) throw new Error( 'THREE.KeyframeTrack: track name is undefined' ); - if ( times === undefined || times.length === 0 ) throw new Error( 'THREE.KeyframeTrack: no keyframes in track named ' + name ); + if (name === undefined) throw new Error('THREE.KeyframeTrack: track name is undefined'); + if (times === undefined || times.length === 0) throw new Error('THREE.KeyframeTrack: no keyframes in track named ' + name); this.name = name; - this.times = AnimationUtils.convertArray( times, this.TimeBufferType ); - this.values = AnimationUtils.convertArray( values, this.ValueBufferType ); + this.times = AnimationUtils.convertArray(times, this.TimeBufferType); + this.values = AnimationUtils.convertArray(values, this.ValueBufferType); - this.setInterpolation( interpolation || this.DefaultInterpolation ); + this.setInterpolation(interpolation || this.DefaultInterpolation); } // Static methods - Object.assign( KeyframeTrack, { + Object.assign(KeyframeTrack, { // Serialization (in static context, because of constructor invocation // and automatic invocation of .toJSON): - toJSON: function ( track ) { + toJSON: function (track) { var trackType = track.constructor; var json; // derived classes can define a static toJSON method - if ( trackType.toJSON !== undefined ) { + if (trackType.toJSON !== undefined) { - json = trackType.toJSON( track ); + json = trackType.toJSON(track); } else { @@ -32604,14 +32617,14 @@ json = { 'name': track.name, - 'times': AnimationUtils.convertArray( track.times, Array ), - 'values': AnimationUtils.convertArray( track.values, Array ) + 'times': AnimationUtils.convertArray(track.times, Array), + 'values': AnimationUtils.convertArray(track.values, Array) }; var interpolation = track.getInterpolation(); - if ( interpolation !== track.DefaultInterpolation ) { + if (interpolation !== track.DefaultInterpolation) { json.interpolation = interpolation; @@ -32625,9 +32638,9 @@ } - } ); + }); - Object.assign( KeyframeTrack.prototype, { + Object.assign(KeyframeTrack.prototype, { constructor: KeyframeTrack, @@ -32637,29 +32650,29 @@ DefaultInterpolation: InterpolateLinear, - InterpolantFactoryMethodDiscrete: function ( result ) { + InterpolantFactoryMethodDiscrete: function (result) { - return new DiscreteInterpolant( this.times, this.values, this.getValueSize(), result ); + return new DiscreteInterpolant(this.times, this.values, this.getValueSize(), result); }, - InterpolantFactoryMethodLinear: function ( result ) { + InterpolantFactoryMethodLinear: function (result) { - return new LinearInterpolant( this.times, this.values, this.getValueSize(), result ); + return new LinearInterpolant(this.times, this.values, this.getValueSize(), result); }, - InterpolantFactoryMethodSmooth: function ( result ) { + InterpolantFactoryMethodSmooth: function (result) { - return new CubicInterpolant( this.times, this.values, this.getValueSize(), result ); + return new CubicInterpolant(this.times, this.values, this.getValueSize(), result); }, - setInterpolation: function ( interpolation ) { + setInterpolation: function (interpolation) { var factoryMethod; - switch ( interpolation ) { + switch (interpolation) { case InterpolateDiscrete: @@ -32681,27 +32694,27 @@ } - if ( factoryMethod === undefined ) { + if (factoryMethod === undefined) { var message = "unsupported interpolation for " + this.ValueTypeName + " keyframe track named " + this.name; - if ( this.createInterpolant === undefined ) { + if (this.createInterpolant === undefined) { // fall back to default, unless the default itself is messed up - if ( interpolation !== this.DefaultInterpolation ) { + if (interpolation !== this.DefaultInterpolation) { - this.setInterpolation( this.DefaultInterpolation ); + this.setInterpolation(this.DefaultInterpolation); } else { - throw new Error( message ); // fatal, in this case + throw new Error(message); // fatal, in this case } } - console.warn( 'THREE.KeyframeTrack:', message ); + console.warn('THREE.KeyframeTrack:', message); return this; } @@ -32714,7 +32727,7 @@ getInterpolation: function () { - switch ( this.createInterpolant ) { + switch (this.createInterpolant) { case this.InterpolantFactoryMethodDiscrete: @@ -32739,15 +32752,15 @@ }, // move all keyframes either forwards or backwards in time - shift: function ( timeOffset ) { + shift: function (timeOffset) { - if ( timeOffset !== 0.0 ) { + if (timeOffset !== 0.0) { var times = this.times; - for ( var i = 0, n = times.length; i !== n; ++ i ) { + for (var i = 0, n = times.length; i !== n; ++i) { - times[ i ] += timeOffset; + times[i] += timeOffset; } @@ -32758,15 +32771,15 @@ }, // scale all keyframe times by a factor (useful for frame <-> seconds conversions) - scale: function ( timeScale ) { + scale: function (timeScale) { - if ( timeScale !== 1.0 ) { + if (timeScale !== 1.0) { var times = this.times; - for ( var i = 0, n = times.length; i !== n; ++ i ) { + for (var i = 0, n = times.length; i !== n; ++i) { - times[ i ] *= timeScale; + times[i] *= timeScale; } @@ -32778,35 +32791,35 @@ // removes keyframes before and after animation without changing any values within the range [startTime, endTime]. // IMPORTANT: We do not shift around keys to the start of the track time, because for interpolated keys this will change their values - trim: function ( startTime, endTime ) { + trim: function (startTime, endTime) { var times = this.times, nKeys = times.length, from = 0, to = nKeys - 1; - while ( from !== nKeys && times[ from ] < startTime ) { + while (from !== nKeys && times[from] < startTime) { - ++ from; + ++from; } - while ( to !== - 1 && times[ to ] > endTime ) { + while (to !== - 1 && times[to] > endTime) { - -- to; + --to; } - ++ to; // inclusive -> exclusive bound + ++to; // inclusive -> exclusive bound - if ( from !== 0 || to !== nKeys ) { + if (from !== 0 || to !== nKeys) { // empty tracks are forbidden, so keep at least one keyframe - if ( from >= to ) to = Math.max( to, 1 ), from = to - 1; + if (from >= to) to = Math.max(to, 1), from = to - 1; var stride = this.getValueSize(); - this.times = AnimationUtils.arraySlice( times, from, to ); - this.values = AnimationUtils.arraySlice( this.values, from * stride, to * stride ); + this.times = AnimationUtils.arraySlice(times, from, to); + this.values = AnimationUtils.arraySlice(this.values, from * stride, to * stride); } @@ -32820,9 +32833,9 @@ var valid = true; var valueSize = this.getValueSize(); - if ( valueSize - Math.floor( valueSize ) !== 0 ) { + if (valueSize - Math.floor(valueSize) !== 0) { - console.error( 'THREE.KeyframeTrack: Invalid value size in track.', this ); + console.error('THREE.KeyframeTrack: Invalid value size in track.', this); valid = false; } @@ -32832,30 +32845,30 @@ nKeys = times.length; - if ( nKeys === 0 ) { + if (nKeys === 0) { - console.error( 'THREE.KeyframeTrack: Track is empty.', this ); + console.error('THREE.KeyframeTrack: Track is empty.', this); valid = false; } var prevTime = null; - for ( var i = 0; i !== nKeys; i ++ ) { + for (var i = 0; i !== nKeys; i++) { - var currTime = times[ i ]; + var currTime = times[i]; - if ( typeof currTime === 'number' && isNaN( currTime ) ) { + if (typeof currTime === 'number' && isNaN(currTime)) { - console.error( 'THREE.KeyframeTrack: Time is not a valid number.', this, i, currTime ); + console.error('THREE.KeyframeTrack: Time is not a valid number.', this, i, currTime); valid = false; break; } - if ( prevTime !== null && prevTime > currTime ) { + if (prevTime !== null && prevTime > currTime) { - console.error( 'THREE.KeyframeTrack: Out of order keys.', this, i, currTime, prevTime ); + console.error('THREE.KeyframeTrack: Out of order keys.', this, i, currTime, prevTime); valid = false; break; @@ -32865,17 +32878,17 @@ } - if ( values !== undefined ) { + if (values !== undefined) { - if ( AnimationUtils.isTypedArray( values ) ) { + if (AnimationUtils.isTypedArray(values)) { - for ( var i = 0, n = values.length; i !== n; ++ i ) { + for (var i = 0, n = values.length; i !== n; ++i) { - var value = values[ i ]; + var value = values[i]; - if ( isNaN( value ) ) { + if (isNaN(value)) { - console.error( 'THREE.KeyframeTrack: Value is not a valid number.', this, i, value ); + console.error('THREE.KeyframeTrack: Value is not a valid number.', this, i, value); valid = false; break; @@ -32904,18 +32917,18 @@ writeIndex = 1, lastIndex = times.length - 1; - for ( var i = 1; i < lastIndex; ++ i ) { + for (var i = 1; i < lastIndex; ++i) { var keep = false; - var time = times[ i ]; - var timeNext = times[ i + 1 ]; + var time = times[i]; + var timeNext = times[i + 1]; // remove adjacent keyframes scheduled at the same time - if ( time !== timeNext && ( i !== 1 || time !== time[ 0 ] ) ) { + if (time !== timeNext && (i !== 1 || time !== time[0])) { - if ( ! smoothInterpolation ) { + if (!smoothInterpolation) { // remove unnecessary keyframes same as their neighbors @@ -32923,12 +32936,12 @@ offsetP = offset - stride, offsetN = offset + stride; - for ( var j = 0; j !== stride; ++ j ) { + for (var j = 0; j !== stride; ++j) { - var value = values[ offset + j ]; + var value = values[offset + j]; - if ( value !== values[ offsetP + j ] || - value !== values[ offsetN + j ] ) { + if (value !== values[offsetP + j] || + value !== values[offsetN + j]) { keep = true; break; @@ -32947,24 +32960,24 @@ // in-place compaction - if ( keep ) { + if (keep) { - if ( i !== writeIndex ) { + if (i !== writeIndex) { - times[ writeIndex ] = times[ i ]; + times[writeIndex] = times[i]; var readOffset = i * stride, writeOffset = writeIndex * stride; - for ( var j = 0; j !== stride; ++ j ) { + for (var j = 0; j !== stride; ++j) { - values[ writeOffset + j ] = values[ readOffset + j ]; + values[writeOffset + j] = values[readOffset + j]; } } - ++ writeIndex; + ++writeIndex; } @@ -32972,24 +32985,24 @@ // flush last keyframe (compaction looks ahead) - if ( lastIndex > 0 ) { + if (lastIndex > 0) { - times[ writeIndex ] = times[ lastIndex ]; + times[writeIndex] = times[lastIndex]; - for ( var readOffset = lastIndex * stride, writeOffset = writeIndex * stride, j = 0; j !== stride; ++ j ) { + for (var readOffset = lastIndex * stride, writeOffset = writeIndex * stride, j = 0; j !== stride; ++j) { - values[ writeOffset + j ] = values[ readOffset + j ]; + values[writeOffset + j] = values[readOffset + j]; } - ++ writeIndex; + ++writeIndex; } - if ( writeIndex !== times.length ) { + if (writeIndex !== times.length) { - this.times = AnimationUtils.arraySlice( times, 0, writeIndex ); - this.values = AnimationUtils.arraySlice( values, 0, writeIndex * stride ); + this.times = AnimationUtils.arraySlice(times, 0, writeIndex); + this.values = AnimationUtils.arraySlice(values, 0, writeIndex * stride); } @@ -32997,7 +33010,7 @@ } - } ); + }); /** * @@ -33009,13 +33022,13 @@ * @author tschw */ - function BooleanKeyframeTrack( name, times, values ) { + function BooleanKeyframeTrack(name, times, values) { - KeyframeTrack.call( this, name, times, values ); + KeyframeTrack.call(this, name, times, values); } - BooleanKeyframeTrack.prototype = Object.assign( Object.create( KeyframeTrack.prototype ), { + BooleanKeyframeTrack.prototype = Object.assign(Object.create(KeyframeTrack.prototype), { constructor: BooleanKeyframeTrack, @@ -33031,7 +33044,7 @@ // representation of a single value and a custom interpolant that // computes "firstValue ^ isOdd( index )". - } ); + }); /** * @@ -33043,13 +33056,13 @@ * @author tschw */ - function ColorKeyframeTrack( name, times, values, interpolation ) { + function ColorKeyframeTrack(name, times, values, interpolation) { - KeyframeTrack.call( this, name, times, values, interpolation ); + KeyframeTrack.call(this, name, times, values, interpolation); } - ColorKeyframeTrack.prototype = Object.assign( Object.create( KeyframeTrack.prototype ), { + ColorKeyframeTrack.prototype = Object.assign(Object.create(KeyframeTrack.prototype), { constructor: ColorKeyframeTrack, @@ -33062,7 +33075,7 @@ // Note: Very basic implementation and nothing special yet. // However, this is the place for color space parameterization. - } ); + }); /** * @@ -33073,13 +33086,13 @@ * @author tschw */ - function NumberKeyframeTrack( name, times, values, interpolation ) { + function NumberKeyframeTrack(name, times, values, interpolation) { - KeyframeTrack.call( this, name, times, values, interpolation ); + KeyframeTrack.call(this, name, times, values, interpolation); } - NumberKeyframeTrack.prototype = Object.assign( Object.create( KeyframeTrack.prototype ), { + NumberKeyframeTrack.prototype = Object.assign(Object.create(KeyframeTrack.prototype), { constructor: NumberKeyframeTrack, @@ -33089,7 +33102,7 @@ // DefaultInterpolation is inherited - } ); + }); /** * Spherical linear unit quaternion interpolant. @@ -33097,17 +33110,17 @@ * @author tschw */ - function QuaternionLinearInterpolant( parameterPositions, sampleValues, sampleSize, resultBuffer ) { + function QuaternionLinearInterpolant(parameterPositions, sampleValues, sampleSize, resultBuffer) { - Interpolant.call( this, parameterPositions, sampleValues, sampleSize, resultBuffer ); + Interpolant.call(this, parameterPositions, sampleValues, sampleSize, resultBuffer); } - QuaternionLinearInterpolant.prototype = Object.assign( Object.create( Interpolant.prototype ), { + QuaternionLinearInterpolant.prototype = Object.assign(Object.create(Interpolant.prototype), { constructor: QuaternionLinearInterpolant, - interpolate_: function ( i1, t0, t, t1 ) { + interpolate_: function (i1, t0, t, t1) { var result = this.resultBuffer, values = this.sampleValues, @@ -33115,11 +33128,11 @@ offset = i1 * stride, - alpha = ( t - t0 ) / ( t1 - t0 ); + alpha = (t - t0) / (t1 - t0); - for ( var end = offset + stride; offset !== end; offset += 4 ) { + for (var end = offset + stride; offset !== end; offset += 4) { - Quaternion.slerpFlat( result, 0, values, offset - stride, values, offset, alpha ); + Quaternion.slerpFlat(result, 0, values, offset - stride, values, offset, alpha); } @@ -33127,7 +33140,7 @@ } - } ); + }); /** * @@ -33138,13 +33151,13 @@ * @author tschw */ - function QuaternionKeyframeTrack( name, times, values, interpolation ) { + function QuaternionKeyframeTrack(name, times, values, interpolation) { - KeyframeTrack.call( this, name, times, values, interpolation ); + KeyframeTrack.call(this, name, times, values, interpolation); } - QuaternionKeyframeTrack.prototype = Object.assign( Object.create( KeyframeTrack.prototype ), { + QuaternionKeyframeTrack.prototype = Object.assign(Object.create(KeyframeTrack.prototype), { constructor: QuaternionKeyframeTrack, @@ -33154,15 +33167,15 @@ DefaultInterpolation: InterpolateLinear, - InterpolantFactoryMethodLinear: function ( result ) { + InterpolantFactoryMethodLinear: function (result) { - return new QuaternionLinearInterpolant( this.times, this.values, this.getValueSize(), result ); + return new QuaternionLinearInterpolant(this.times, this.values, this.getValueSize(), result); }, InterpolantFactoryMethodSmooth: undefined // not yet implemented - } ); + }); /** * @@ -33174,13 +33187,13 @@ * @author tschw */ - function StringKeyframeTrack( name, times, values, interpolation ) { + function StringKeyframeTrack(name, times, values, interpolation) { - KeyframeTrack.call( this, name, times, values, interpolation ); + KeyframeTrack.call(this, name, times, values, interpolation); } - StringKeyframeTrack.prototype = Object.assign( Object.create( KeyframeTrack.prototype ), { + StringKeyframeTrack.prototype = Object.assign(Object.create(KeyframeTrack.prototype), { constructor: StringKeyframeTrack, @@ -33193,7 +33206,7 @@ InterpolantFactoryMethodSmooth: undefined - } ); + }); /** * @@ -33205,13 +33218,13 @@ * @author tschw */ - function VectorKeyframeTrack( name, times, values, interpolation ) { + function VectorKeyframeTrack(name, times, values, interpolation) { - KeyframeTrack.call( this, name, times, values, interpolation ); + KeyframeTrack.call(this, name, times, values, interpolation); } - VectorKeyframeTrack.prototype = Object.assign( Object.create( KeyframeTrack.prototype ), { + VectorKeyframeTrack.prototype = Object.assign(Object.create(KeyframeTrack.prototype), { constructor: VectorKeyframeTrack, @@ -33221,7 +33234,7 @@ // DefaultInterpolation is inherited - } ); + }); /** * @@ -33231,16 +33244,16 @@ * @author David Sarno / http://lighthaus.us/ */ - function AnimationClip( name, duration, tracks ) { + function AnimationClip(name, duration, tracks) { this.name = name; this.tracks = tracks; - this.duration = ( duration !== undefined ) ? duration : - 1; + this.duration = (duration !== undefined) ? duration : - 1; this.uuid = _Math.generateUUID(); // this means it should figure out its duration by scanning the tracks - if ( this.duration < 0 ) { + if (this.duration < 0) { this.resetDuration(); @@ -33248,9 +33261,9 @@ } - function getTrackTypeForValueTypeName( typeName ) { + function getTrackTypeForValueTypeName(typeName) { - switch ( typeName.toLowerCase() ) { + switch (typeName.toLowerCase()) { case 'scalar': case 'double': @@ -33286,25 +33299,25 @@ } - throw new Error( 'THREE.KeyframeTrack: Unsupported typeName: ' + typeName ); + throw new Error('THREE.KeyframeTrack: Unsupported typeName: ' + typeName); } - function parseKeyframeTrack( json ) { + function parseKeyframeTrack(json) { - if ( json.type === undefined ) { + if (json.type === undefined) { - throw new Error( 'THREE.KeyframeTrack: track type undefined, can not parse' ); + throw new Error('THREE.KeyframeTrack: track type undefined, can not parse'); } - var trackType = getTrackTypeForValueTypeName( json.type ); + var trackType = getTrackTypeForValueTypeName(json.type); - if ( json.times === undefined ) { + if (json.times === undefined) { var times = [], values = []; - AnimationUtils.flattenJSON( json.keys, times, values, 'value' ); + AnimationUtils.flattenJSON(json.keys, times, values, 'value'); json.times = times; json.values = values; @@ -33312,38 +33325,38 @@ } // derived classes can define a static parse method - if ( trackType.parse !== undefined ) { + if (trackType.parse !== undefined) { - return trackType.parse( json ); + return trackType.parse(json); } else { // by default, we assume a constructor compatible with the base - return new trackType( json.name, json.times, json.values, json.interpolation ); + return new trackType(json.name, json.times, json.values, json.interpolation); } } - Object.assign( AnimationClip, { + Object.assign(AnimationClip, { - parse: function ( json ) { + parse: function (json) { var tracks = [], jsonTracks = json.tracks, - frameTime = 1.0 / ( json.fps || 1.0 ); + frameTime = 1.0 / (json.fps || 1.0); - for ( var i = 0, n = jsonTracks.length; i !== n; ++ i ) { + for (var i = 0, n = jsonTracks.length; i !== n; ++i) { - tracks.push( parseKeyframeTrack( jsonTracks[ i ] ).scale( frameTime ) ); + tracks.push(parseKeyframeTrack(jsonTracks[i]).scale(frameTime)); } - return new AnimationClip( json.name, json.duration, tracks ); + return new AnimationClip(json.name, json.duration, tracks); }, - toJSON: function ( clip ) { + toJSON: function (clip) { var tracks = [], clipTracks = clip.tracks; @@ -33357,9 +33370,9 @@ }; - for ( var i = 0, n = clipTracks.length; i !== n; ++ i ) { + for (var i = 0, n = clipTracks.length; i !== n; ++i) { - tracks.push( KeyframeTrack.toJSON( clipTracks[ i ] ) ); + tracks.push(KeyframeTrack.toJSON(clipTracks[i])); } @@ -33367,64 +33380,64 @@ }, - CreateFromMorphTargetSequence: function ( name, morphTargetSequence, fps, noLoop ) { + CreateFromMorphTargetSequence: function (name, morphTargetSequence, fps, noLoop) { var numMorphTargets = morphTargetSequence.length; var tracks = []; - for ( var i = 0; i < numMorphTargets; i ++ ) { + for (var i = 0; i < numMorphTargets; i++) { var times = []; var values = []; times.push( - ( i + numMorphTargets - 1 ) % numMorphTargets, + (i + numMorphTargets - 1) % numMorphTargets, i, - ( i + 1 ) % numMorphTargets ); + (i + 1) % numMorphTargets); - values.push( 0, 1, 0 ); + values.push(0, 1, 0); - var order = AnimationUtils.getKeyframeOrder( times ); - times = AnimationUtils.sortedArray( times, 1, order ); - values = AnimationUtils.sortedArray( values, 1, order ); + var order = AnimationUtils.getKeyframeOrder(times); + times = AnimationUtils.sortedArray(times, 1, order); + values = AnimationUtils.sortedArray(values, 1, order); // if there is a key at the first frame, duplicate it as the // last frame as well for perfect loop. - if ( ! noLoop && times[ 0 ] === 0 ) { + if (!noLoop && times[0] === 0) { - times.push( numMorphTargets ); - values.push( values[ 0 ] ); + times.push(numMorphTargets); + values.push(values[0]); } tracks.push( new NumberKeyframeTrack( - '.morphTargetInfluences[' + morphTargetSequence[ i ].name + ']', + '.morphTargetInfluences[' + morphTargetSequence[i].name + ']', times, values - ).scale( 1.0 / fps ) ); + ).scale(1.0 / fps)); } - return new AnimationClip( name, - 1, tracks ); + return new AnimationClip(name, - 1, tracks); }, - findByName: function ( objectOrClipArray, name ) { + findByName: function (objectOrClipArray, name) { var clipArray = objectOrClipArray; - if ( ! Array.isArray( objectOrClipArray ) ) { + if (!Array.isArray(objectOrClipArray)) { var o = objectOrClipArray; clipArray = o.geometry && o.geometry.animations || o.animations; } - for ( var i = 0; i < clipArray.length; i ++ ) { + for (var i = 0; i < clipArray.length; i++) { - if ( clipArray[ i ].name === name ) { + if (clipArray[i].name === name) { - return clipArray[ i ]; + return clipArray[i]; } @@ -33434,7 +33447,7 @@ }, - CreateClipsFromMorphTargetSequences: function ( morphTargets, fps, noLoop ) { + CreateClipsFromMorphTargetSequences: function (morphTargets, fps, noLoop) { var animationToMorphTargets = {}; @@ -33444,23 +33457,23 @@ // sort morph target names into animation groups based // patterns like Walk_001, Walk_002, Run_001, Run_002 - for ( var i = 0, il = morphTargets.length; i < il; i ++ ) { + for (var i = 0, il = morphTargets.length; i < il; i++) { - var morphTarget = morphTargets[ i ]; - var parts = morphTarget.name.match( pattern ); + var morphTarget = morphTargets[i]; + var parts = morphTarget.name.match(pattern); - if ( parts && parts.length > 1 ) { + if (parts && parts.length > 1) { - var name = parts[ 1 ]; + var name = parts[1]; - var animationMorphTargets = animationToMorphTargets[ name ]; - if ( ! animationMorphTargets ) { + var animationMorphTargets = animationToMorphTargets[name]; + if (!animationMorphTargets) { - animationToMorphTargets[ name ] = animationMorphTargets = []; + animationToMorphTargets[name] = animationMorphTargets = []; } - animationMorphTargets.push( morphTarget ); + animationMorphTargets.push(morphTarget); } @@ -33468,9 +33481,9 @@ var clips = []; - for ( var name in animationToMorphTargets ) { + for (var name in animationToMorphTargets) { - clips.push( AnimationClip.CreateFromMorphTargetSequence( name, animationToMorphTargets[ name ], fps, noLoop ) ); + clips.push(AnimationClip.CreateFromMorphTargetSequence(name, animationToMorphTargets[name], fps, noLoop)); } @@ -33479,29 +33492,29 @@ }, // parse the animation.hierarchy format - parseAnimation: function ( animation, bones ) { + parseAnimation: function (animation, bones) { - if ( ! animation ) { + if (!animation) { - console.error( 'THREE.AnimationClip: No animation in JSONLoader data.' ); + console.error('THREE.AnimationClip: No animation in JSONLoader data.'); return null; } - var addNonemptyTrack = function ( trackType, trackName, animationKeys, propertyName, destTracks ) { + var addNonemptyTrack = function (trackType, trackName, animationKeys, propertyName, destTracks) { // only return track if there are actually keys. - if ( animationKeys.length !== 0 ) { + if (animationKeys.length !== 0) { var times = []; var values = []; - AnimationUtils.flattenJSON( animationKeys, times, values, propertyName ); + AnimationUtils.flattenJSON(animationKeys, times, values, propertyName); // empty keys are filtered out, so check again - if ( times.length !== 0 ) { + if (times.length !== 0) { - destTracks.push( new trackType( trackName, times, values ) ); + destTracks.push(new trackType(trackName, times, values)); } @@ -33518,26 +33531,26 @@ var hierarchyTracks = animation.hierarchy || []; - for ( var h = 0; h < hierarchyTracks.length; h ++ ) { + for (var h = 0; h < hierarchyTracks.length; h++) { - var animationKeys = hierarchyTracks[ h ].keys; + var animationKeys = hierarchyTracks[h].keys; // skip empty tracks - if ( ! animationKeys || animationKeys.length === 0 ) continue; + if (!animationKeys || animationKeys.length === 0) continue; // process morph targets - if ( animationKeys[ 0 ].morphTargets ) { + if (animationKeys[0].morphTargets) { // figure out all morph targets used in this track var morphTargetNames = {}; - for ( var k = 0; k < animationKeys.length; k ++ ) { + for (var k = 0; k < animationKeys.length; k++) { - if ( animationKeys[ k ].morphTargets ) { + if (animationKeys[k].morphTargets) { - for ( var m = 0; m < animationKeys[ k ].morphTargets.length; m ++ ) { + for (var m = 0; m < animationKeys[k].morphTargets.length; m++) { - morphTargetNames[ animationKeys[ k ].morphTargets[ m ] ] = - 1; + morphTargetNames[animationKeys[k].morphTargets[m]] = - 1; } @@ -33548,73 +33561,73 @@ // create a track for each morph target with all zero // morphTargetInfluences except for the keys in which // the morphTarget is named. - for ( var morphTargetName in morphTargetNames ) { + for (var morphTargetName in morphTargetNames) { var times = []; var values = []; - for ( var m = 0; m !== animationKeys[ k ].morphTargets.length; ++ m ) { + for (var m = 0; m !== animationKeys[k].morphTargets.length; ++m) { - var animationKey = animationKeys[ k ]; + var animationKey = animationKeys[k]; - times.push( animationKey.time ); - values.push( ( animationKey.morphTarget === morphTargetName ) ? 1 : 0 ); + times.push(animationKey.time); + values.push((animationKey.morphTarget === morphTargetName) ? 1 : 0); } - tracks.push( new NumberKeyframeTrack( '.morphTargetInfluence[' + morphTargetName + ']', times, values ) ); + tracks.push(new NumberKeyframeTrack('.morphTargetInfluence[' + morphTargetName + ']', times, values)); } - duration = morphTargetNames.length * ( fps || 1.0 ); + duration = morphTargetNames.length * (fps || 1.0); } else { // ...assume skeletal animation - var boneName = '.bones[' + bones[ h ].name + ']'; + var boneName = '.bones[' + bones[h].name + ']'; addNonemptyTrack( VectorKeyframeTrack, boneName + '.position', - animationKeys, 'pos', tracks ); + animationKeys, 'pos', tracks); addNonemptyTrack( QuaternionKeyframeTrack, boneName + '.quaternion', - animationKeys, 'rot', tracks ); + animationKeys, 'rot', tracks); addNonemptyTrack( VectorKeyframeTrack, boneName + '.scale', - animationKeys, 'scl', tracks ); + animationKeys, 'scl', tracks); } } - if ( tracks.length === 0 ) { + if (tracks.length === 0) { return null; } - var clip = new AnimationClip( clipName, duration, tracks ); + var clip = new AnimationClip(clipName, duration, tracks); return clip; } - } ); + }); - Object.assign( AnimationClip.prototype, { + Object.assign(AnimationClip.prototype, { resetDuration: function () { var tracks = this.tracks, duration = 0; - for ( var i = 0, n = tracks.length; i !== n; ++ i ) { + for (var i = 0, n = tracks.length; i !== n; ++i) { - var track = this.tracks[ i ]; + var track = this.tracks[i]; - duration = Math.max( duration, track.times[ track.times.length - 1 ] ); + duration = Math.max(duration, track.times[track.times.length - 1]); } @@ -33626,9 +33639,9 @@ trim: function () { - for ( var i = 0; i < this.tracks.length; i ++ ) { + for (var i = 0; i < this.tracks.length; i++) { - this.tracks[ i ].trim( 0, this.duration ); + this.tracks[i].trim(0, this.duration); } @@ -33640,9 +33653,9 @@ var valid = true; - for ( var i = 0; i < this.tracks.length; i ++ ) { + for (var i = 0; i < this.tracks.length; i++) { - valid = valid && this.tracks[ i ].validate(); + valid = valid && this.tracks[i].validate(); } @@ -33652,9 +33665,9 @@ optimize: function () { - for ( var i = 0; i < this.tracks.length; i ++ ) { + for (var i = 0; i < this.tracks.length; i++) { - this.tracks[ i ].optimize(); + this.tracks[i].optimize(); } @@ -33662,7 +33675,7 @@ } - } ); + }); /** * @author mrdoob / http://mrdoob.com/ @@ -33674,29 +33687,29 @@ files: {}, - add: function ( key, file ) { + add: function (key, file) { - if ( this.enabled === false ) return; + if (this.enabled === false) return; // console.log( 'THREE.Cache', 'Adding key:', key ); - this.files[ key ] = file; + this.files[key] = file; }, - get: function ( key ) { + get: function (key) { - if ( this.enabled === false ) return; + if (this.enabled === false) return; // console.log( 'THREE.Cache', 'Checking key:', key ); - return this.files[ key ]; + return this.files[key]; }, - remove: function ( key ) { + remove: function (key) { - delete this.files[ key ]; + delete this.files[key]; }, @@ -33712,7 +33725,7 @@ * @author mrdoob / http://mrdoob.com/ */ - function LoadingManager( onLoad, onProgress, onError ) { + function LoadingManager(onLoad, onProgress, onError) { var scope = this; @@ -33729,15 +33742,15 @@ this.onProgress = onProgress; this.onError = onError; - this.itemStart = function ( url ) { + this.itemStart = function (url) { - itemsTotal ++; + itemsTotal++; - if ( isLoading === false ) { + if (isLoading === false) { - if ( scope.onStart !== undefined ) { + if (scope.onStart !== undefined) { - scope.onStart( url, itemsLoaded, itemsTotal ); + scope.onStart(url, itemsLoaded, itemsTotal); } @@ -33747,21 +33760,21 @@ }; - this.itemEnd = function ( url ) { + this.itemEnd = function (url) { - itemsLoaded ++; + itemsLoaded++; - if ( scope.onProgress !== undefined ) { + if (scope.onProgress !== undefined) { - scope.onProgress( url, itemsLoaded, itemsTotal ); + scope.onProgress(url, itemsLoaded, itemsTotal); } - if ( itemsLoaded === itemsTotal ) { + if (itemsLoaded === itemsTotal) { isLoading = false; - if ( scope.onLoad !== undefined ) { + if (scope.onLoad !== undefined) { scope.onLoad(); @@ -33771,21 +33784,21 @@ }; - this.itemError = function ( url ) { + this.itemError = function (url) { - if ( scope.onError !== undefined ) { + if (scope.onError !== undefined) { - scope.onError( url ); + scope.onError(url); } }; - this.resolveURL = function ( url ) { + this.resolveURL = function (url) { - if ( urlModifier ) { + if (urlModifier) { - return urlModifier( url ); + return urlModifier(url); } @@ -33793,7 +33806,7 @@ }; - this.setURLModifier = function ( transform ) { + this.setURLModifier = function (transform) { urlModifier = transform; return this; @@ -33810,37 +33823,37 @@ var loading = {}; - function FileLoader( manager ) { + function FileLoader(manager) { - this.manager = ( manager !== undefined ) ? manager : DefaultLoadingManager; + this.manager = (manager !== undefined) ? manager : DefaultLoadingManager; } - Object.assign( FileLoader.prototype, { + Object.assign(FileLoader.prototype, { - load: function ( url, onLoad, onProgress, onError ) { + load: function (url, onLoad, onProgress, onError) { - if ( url === undefined ) url = ''; + if (url === undefined) url = ''; - if ( this.path !== undefined ) url = this.path + url; + if (this.path !== undefined) url = this.path + url; - url = this.manager.resolveURL( url ); + url = this.manager.resolveURL(url); var scope = this; - var cached = Cache.get( url ); + var cached = Cache.get(url); - if ( cached !== undefined ) { + if (cached !== undefined) { - scope.manager.itemStart( url ); + scope.manager.itemStart(url); - setTimeout( function () { + setTimeout(function () { - if ( onLoad ) onLoad( cached ); + if (onLoad) onLoad(cached); - scope.manager.itemEnd( url ); + scope.manager.itemEnd(url); - }, 0 ); + }, 0); return cached; @@ -33848,15 +33861,15 @@ // Check if request is duplicate - if ( loading[ url ] !== undefined ) { + if (loading[url] !== undefined) { - loading[ url ].push( { + loading[url].push({ onLoad: onLoad, onProgress: onProgress, onError: onError - } ); + }); return; @@ -33864,40 +33877,40 @@ // Check for data: URI var dataUriRegex = /^data:(.*?)(;base64)?,(.*)$/; - var dataUriRegexResult = url.match( dataUriRegex ); + var dataUriRegexResult = url.match(dataUriRegex); // Safari can not handle Data URIs through XMLHttpRequest so process manually - if ( dataUriRegexResult ) { + if (dataUriRegexResult) { - var mimeType = dataUriRegexResult[ 1 ]; - var isBase64 = !! dataUriRegexResult[ 2 ]; - var data = dataUriRegexResult[ 3 ]; + var mimeType = dataUriRegexResult[1]; + var isBase64 = !!dataUriRegexResult[2]; + var data = dataUriRegexResult[3]; - data = decodeURIComponent( data ); + data = decodeURIComponent(data); - if ( isBase64 ) data = atob( data ); + if (isBase64) data = atob(data); try { var response; - var responseType = ( this.responseType || '' ).toLowerCase(); + var responseType = (this.responseType || '').toLowerCase(); - switch ( responseType ) { + switch (responseType) { case 'arraybuffer': case 'blob': - var view = new Uint8Array( data.length ); + var view = new Uint8Array(data.length); - for ( var i = 0; i < data.length; i ++ ) { + for (var i = 0; i < data.length; i++) { - view[ i ] = data.charCodeAt( i ); + view[i] = data.charCodeAt(i); } - if ( responseType === 'blob' ) { + if (responseType === 'blob') { - response = new Blob( [ view.buffer ], { type: mimeType } ); + response = new Blob([view.buffer], { type: mimeType }); } else { @@ -33910,13 +33923,13 @@ case 'document': var parser = new DOMParser(); - response = parser.parseFromString( data, mimeType ); + response = parser.parseFromString(data, mimeType); break; case 'json': - response = JSON.parse( data ); + response = JSON.parse(data); break; @@ -33929,25 +33942,25 @@ } // Wait for next browser tick like standard XMLHttpRequest event dispatching does - setTimeout( function () { + setTimeout(function () { - if ( onLoad ) onLoad( response ); + if (onLoad) onLoad(response); - scope.manager.itemEnd( url ); + scope.manager.itemEnd(url); - }, 0 ); + }, 0); - } catch ( error ) { + } catch (error) { // Wait for next browser tick like standard XMLHttpRequest event dispatching does - setTimeout( function () { + setTimeout(function () { - if ( onError ) onError( error ); + if (onError) onError(error); - scope.manager.itemError( url ); - scope.manager.itemEnd( url ); + scope.manager.itemError(url); + scope.manager.itemEnd(url); - }, 0 ); + }, 0); } @@ -33955,219 +33968,219 @@ // Initialise array for duplicate requests - loading[ url ] = []; + loading[url] = []; - loading[ url ].push( { + loading[url].push({ onLoad: onLoad, onProgress: onProgress, onError: onError - } ); + }); var request = new XMLHttpRequest(); - request.open( 'GET', url, true ); + request.open('GET', url, true); - request.addEventListener( 'load', function ( event ) { + request.addEventListener('load', function (event) { var response = this.response; - Cache.add( url, response ); + Cache.add(url, response); - var callbacks = loading[ url ]; + var callbacks = loading[url]; - delete loading[ url ]; + delete loading[url]; - if ( this.status === 200 || this.status === 0 ) { + if (this.status === 200 || this.status === 0) { // Some browsers return HTTP Status 0 when using non-http protocol // e.g. 'file://' or 'data://'. Handle as success. - if ( this.status === 0 ) console.warn( 'THREE.FileLoader: HTTP Status 0 received.' ); + if (this.status === 0) console.warn('THREE.FileLoader: HTTP Status 0 received.'); - for ( var i = 0, il = callbacks.length; i < il; i ++ ) { + for (var i = 0, il = callbacks.length; i < il; i++) { - var callback = callbacks[ i ]; - if ( callback.onLoad ) callback.onLoad( response ); + var callback = callbacks[i]; + if (callback.onLoad) callback.onLoad(response); } - scope.manager.itemEnd( url ); + scope.manager.itemEnd(url); } else { - for ( var i = 0, il = callbacks.length; i < il; i ++ ) { + for (var i = 0, il = callbacks.length; i < il; i++) { - var callback = callbacks[ i ]; - if ( callback.onError ) callback.onError( event ); + var callback = callbacks[i]; + if (callback.onError) callback.onError(event); } - scope.manager.itemError( url ); - scope.manager.itemEnd( url ); + scope.manager.itemError(url); + scope.manager.itemEnd(url); } - }, false ); + }, false); - request.addEventListener( 'progress', function ( event ) { + request.addEventListener('progress', function (event) { - var callbacks = loading[ url ]; + var callbacks = loading[url]; - for ( var i = 0, il = callbacks.length; i < il; i ++ ) { + for (var i = 0, il = callbacks.length; i < il; i++) { - var callback = callbacks[ i ]; - if ( callback.onProgress ) callback.onProgress( event ); + var callback = callbacks[i]; + if (callback.onProgress) callback.onProgress(event); } - }, false ); + }, false); - request.addEventListener( 'error', function ( event ) { + request.addEventListener('error', function (event) { - var callbacks = loading[ url ]; + var callbacks = loading[url]; - delete loading[ url ]; + delete loading[url]; - for ( var i = 0, il = callbacks.length; i < il; i ++ ) { + for (var i = 0, il = callbacks.length; i < il; i++) { - var callback = callbacks[ i ]; - if ( callback.onError ) callback.onError( event ); + var callback = callbacks[i]; + if (callback.onError) callback.onError(event); } - scope.manager.itemError( url ); - scope.manager.itemEnd( url ); + scope.manager.itemError(url); + scope.manager.itemEnd(url); - }, false ); + }, false); - request.addEventListener( 'abort', function ( event ) { + request.addEventListener('abort', function (event) { - var callbacks = loading[ url ]; + var callbacks = loading[url]; - delete loading[ url ]; + delete loading[url]; - for ( var i = 0, il = callbacks.length; i < il; i ++ ) { + for (var i = 0, il = callbacks.length; i < il; i++) { - var callback = callbacks[ i ]; - if ( callback.onError ) callback.onError( event ); + var callback = callbacks[i]; + if (callback.onError) callback.onError(event); } - scope.manager.itemError( url ); - scope.manager.itemEnd( url ); + scope.manager.itemError(url); + scope.manager.itemEnd(url); - }, false ); + }, false); - if ( this.responseType !== undefined ) request.responseType = this.responseType; - if ( this.withCredentials !== undefined ) request.withCredentials = this.withCredentials; + if (this.responseType !== undefined) request.responseType = this.responseType; + if (this.withCredentials !== undefined) request.withCredentials = this.withCredentials; - if ( request.overrideMimeType ) request.overrideMimeType( this.mimeType !== undefined ? this.mimeType : 'text/plain' ); + if (request.overrideMimeType) request.overrideMimeType(this.mimeType !== undefined ? this.mimeType : 'text/plain'); - for ( var header in this.requestHeader ) { + for (var header in this.requestHeader) { - request.setRequestHeader( header, this.requestHeader[ header ] ); + request.setRequestHeader(header, this.requestHeader[header]); } - request.send( null ); + request.send(null); } - scope.manager.itemStart( url ); + scope.manager.itemStart(url); return request; }, - setPath: function ( value ) { + setPath: function (value) { this.path = value; return this; }, - setResponseType: function ( value ) { + setResponseType: function (value) { this.responseType = value; return this; }, - setWithCredentials: function ( value ) { + setWithCredentials: function (value) { this.withCredentials = value; return this; }, - setMimeType: function ( value ) { + setMimeType: function (value) { this.mimeType = value; return this; }, - setRequestHeader: function ( value ) { + setRequestHeader: function (value) { this.requestHeader = value; return this; } - } ); + }); /** * @author bhouston / http://clara.io/ */ - function AnimationLoader( manager ) { + function AnimationLoader(manager) { - this.manager = ( manager !== undefined ) ? manager : DefaultLoadingManager; + this.manager = (manager !== undefined) ? manager : DefaultLoadingManager; } - Object.assign( AnimationLoader.prototype, { + Object.assign(AnimationLoader.prototype, { - load: function ( url, onLoad, onProgress, onError ) { + load: function (url, onLoad, onProgress, onError) { var scope = this; - var loader = new FileLoader( scope.manager ); - loader.setPath( scope.path ); - loader.load( url, function ( text ) { + var loader = new FileLoader(scope.manager); + loader.setPath(scope.path); + loader.load(url, function (text) { - onLoad( scope.parse( JSON.parse( text ) ) ); + onLoad(scope.parse(JSON.parse(text))); - }, onProgress, onError ); + }, onProgress, onError); }, - parse: function ( json, onLoad ) { + parse: function (json, onLoad) { var animations = []; - for ( var i = 0; i < json.length; i ++ ) { + for (var i = 0; i < json.length; i++) { - var clip = AnimationClip.parse( json[ i ] ); + var clip = AnimationClip.parse(json[i]); - animations.push( clip ); + animations.push(clip); } - onLoad( animations ); + onLoad(animations); }, - setPath: function ( value ) { + setPath: function (value) { this.path = value; return this; } - } ); + }); /** * @author mrdoob / http://mrdoob.com/ @@ -34175,18 +34188,18 @@ * Abstract Base class to block based textures loader (dds, pvr, ...) */ - function CompressedTextureLoader( manager ) { + function CompressedTextureLoader(manager) { - this.manager = ( manager !== undefined ) ? manager : DefaultLoadingManager; + this.manager = (manager !== undefined) ? manager : DefaultLoadingManager; // override in sub classes this._parser = null; } - Object.assign( CompressedTextureLoader.prototype, { + Object.assign(CompressedTextureLoader.prototype, { - load: function ( url, onLoad, onProgress, onError ) { + load: function (url, onLoad, onProgress, onError) { var scope = this; @@ -34195,17 +34208,17 @@ var texture = new CompressedTexture(); texture.image = images; - var loader = new FileLoader( this.manager ); - loader.setPath( this.path ); - loader.setResponseType( 'arraybuffer' ); + var loader = new FileLoader(this.manager); + loader.setPath(this.path); + loader.setResponseType('arraybuffer'); - function loadTexture( i ) { + function loadTexture(i) { - loader.load( url[ i ], function ( buffer ) { + loader.load(url[i], function (buffer) { - var texDatas = scope._parser( buffer, true ); + var texDatas = scope._parser(buffer, true); - images[ i ] = { + images[i] = { width: texDatas.width, height: texDatas.height, format: texDatas.format, @@ -34214,29 +34227,29 @@ loaded += 1; - if ( loaded === 6 ) { + if (loaded === 6) { - if ( texDatas.mipmapCount === 1 ) + if (texDatas.mipmapCount === 1) texture.minFilter = LinearFilter; texture.format = texDatas.format; texture.needsUpdate = true; - if ( onLoad ) onLoad( texture ); + if (onLoad) onLoad(texture); } - }, onProgress, onError ); + }, onProgress, onError); } - if ( Array.isArray( url ) ) { + if (Array.isArray(url)) { var loaded = 0; - for ( var i = 0, il = url.length; i < il; ++ i ) { + for (var i = 0, il = url.length; i < il; ++i) { - loadTexture( i ); + loadTexture(i); } @@ -34244,24 +34257,24 @@ // compressed cubemap texture stored in a single DDS file - loader.load( url, function ( buffer ) { + loader.load(url, function (buffer) { - var texDatas = scope._parser( buffer, true ); + var texDatas = scope._parser(buffer, true); - if ( texDatas.isCubemap ) { + if (texDatas.isCubemap) { var faces = texDatas.mipmaps.length / texDatas.mipmapCount; - for ( var f = 0; f < faces; f ++ ) { + for (var f = 0; f < faces; f++) { - images[ f ] = { mipmaps: [] }; + images[f] = { mipmaps: [] }; - for ( var i = 0; i < texDatas.mipmapCount; i ++ ) { + for (var i = 0; i < texDatas.mipmapCount; i++) { - images[ f ].mipmaps.push( texDatas.mipmaps[ f * texDatas.mipmapCount + i ] ); - images[ f ].format = texDatas.format; - images[ f ].width = texDatas.width; - images[ f ].height = texDatas.height; + images[f].mipmaps.push(texDatas.mipmaps[f * texDatas.mipmapCount + i]); + images[f].format = texDatas.format; + images[f].width = texDatas.width; + images[f].height = texDatas.height; } @@ -34275,7 +34288,7 @@ } - if ( texDatas.mipmapCount === 1 ) { + if (texDatas.mipmapCount === 1) { texture.minFilter = LinearFilter; @@ -34284,9 +34297,9 @@ texture.format = texDatas.format; texture.needsUpdate = true; - if ( onLoad ) onLoad( texture ); + if (onLoad) onLoad(texture); - }, onProgress, onError ); + }, onProgress, onError); } @@ -34294,14 +34307,14 @@ }, - setPath: function ( value ) { + setPath: function (value) { this.path = value; return this; } - } ); + }); /** * @author Nikos M. / https://github.com/foo123/ @@ -34309,37 +34322,37 @@ * Abstract Base class to load generic binary textures formats (rgbe, hdr, ...) */ - function DataTextureLoader( manager ) { + function DataTextureLoader(manager) { - this.manager = ( manager !== undefined ) ? manager : DefaultLoadingManager; + this.manager = (manager !== undefined) ? manager : DefaultLoadingManager; // override in sub classes this._parser = null; } - Object.assign( DataTextureLoader.prototype, { + Object.assign(DataTextureLoader.prototype, { - load: function ( url, onLoad, onProgress, onError ) { + load: function (url, onLoad, onProgress, onError) { var scope = this; var texture = new DataTexture(); - var loader = new FileLoader( this.manager ); - loader.setResponseType( 'arraybuffer' ); - loader.setPath( this.path ); - loader.load( url, function ( buffer ) { + var loader = new FileLoader(this.manager); + loader.setResponseType('arraybuffer'); + loader.setPath(this.path); + loader.load(url, function (buffer) { - var texData = scope._parser( buffer ); + var texData = scope._parser(buffer); - if ( ! texData ) return; + if (!texData) return; - if ( texData.image !== undefined ) { + if (texData.image !== undefined) { texture.image = texData.image; - } else if ( texData.data !== undefined ) { + } else if (texData.data !== undefined) { texture.image.width = texData.width; texture.image.height = texData.height; @@ -34355,24 +34368,24 @@ texture.anisotropy = texData.anisotropy !== undefined ? texData.anisotropy : 1; - if ( texData.format !== undefined ) { + if (texData.format !== undefined) { texture.format = texData.format; } - if ( texData.type !== undefined ) { + if (texData.type !== undefined) { texture.type = texData.type; } - if ( texData.mipmaps !== undefined ) { + if (texData.mipmaps !== undefined) { texture.mipmaps = texData.mipmaps; } - if ( texData.mipmapCount === 1 ) { + if (texData.mipmapCount === 1) { texture.minFilter = LinearFilter; @@ -34380,104 +34393,104 @@ texture.needsUpdate = true; - if ( onLoad ) onLoad( texture, texData ); + if (onLoad) onLoad(texture, texData); - }, onProgress, onError ); + }, onProgress, onError); return texture; }, - setPath: function ( value ) { + setPath: function (value) { this.path = value; return this; } - } ); + }); /** * @author mrdoob / http://mrdoob.com/ */ - function ImageLoader( manager ) { + function ImageLoader(manager) { - this.manager = ( manager !== undefined ) ? manager : DefaultLoadingManager; + this.manager = (manager !== undefined) ? manager : DefaultLoadingManager; } - Object.assign( ImageLoader.prototype, { + Object.assign(ImageLoader.prototype, { crossOrigin: 'anonymous', - load: function ( url, onLoad, onProgress, onError ) { + load: function (url, onLoad, onProgress, onError) { - if ( url === undefined ) url = ''; + if (url === undefined) url = ''; - if ( this.path !== undefined ) url = this.path + url; + if (this.path !== undefined) url = this.path + url; - url = this.manager.resolveURL( url ); + url = this.manager.resolveURL(url); var scope = this; - var cached = Cache.get( url ); + var cached = Cache.get(url); - if ( cached !== undefined ) { + if (cached !== undefined) { - scope.manager.itemStart( url ); + scope.manager.itemStart(url); - setTimeout( function () { + setTimeout(function () { - if ( onLoad ) onLoad( cached ); + if (onLoad) onLoad(cached); - scope.manager.itemEnd( url ); + scope.manager.itemEnd(url); - }, 0 ); + }, 0); return cached; } - var image = document.createElementNS( 'http://www.w3.org/1999/xhtml', 'img' ); + var image = document.createElementNS('http://www.w3.org/1999/xhtml', 'img'); function onImageLoad() { - image.removeEventListener( 'load', onImageLoad, false ); - image.removeEventListener( 'error', onImageError, false ); + image.removeEventListener('load', onImageLoad, false); + image.removeEventListener('error', onImageError, false); - Cache.add( url, this ); + Cache.add(url, this); - if ( onLoad ) onLoad( this ); + if (onLoad) onLoad(this); - scope.manager.itemEnd( url ); + scope.manager.itemEnd(url); } - function onImageError( event ) { + function onImageError(event) { - image.removeEventListener( 'load', onImageLoad, false ); - image.removeEventListener( 'error', onImageError, false ); + image.removeEventListener('load', onImageLoad, false); + image.removeEventListener('error', onImageError, false); - if ( onError ) onError( event ); + if (onError) onError(event); - scope.manager.itemError( url ); - scope.manager.itemEnd( url ); + scope.manager.itemError(url); + scope.manager.itemEnd(url); } - image.addEventListener( 'load', onImageLoad, false ); - image.addEventListener( 'error', onImageError, false ); + image.addEventListener('load', onImageLoad, false); + image.addEventListener('error', onImageError, false); - if ( url.substr( 0, 5 ) !== 'data:' ) { + if (url.substr(0, 5) !== 'data:') { - if ( this.crossOrigin !== undefined ) image.crossOrigin = this.crossOrigin; + if (this.crossOrigin !== undefined) image.crossOrigin = this.crossOrigin; } - scope.manager.itemStart( url ); + scope.manager.itemStart(url); image.src = url; @@ -34485,70 +34498,70 @@ }, - setCrossOrigin: function ( value ) { + setCrossOrigin: function (value) { this.crossOrigin = value; return this; }, - setPath: function ( value ) { + setPath: function (value) { this.path = value; return this; } - } ); + }); /** * @author mrdoob / http://mrdoob.com/ */ - function CubeTextureLoader( manager ) { + function CubeTextureLoader(manager) { - this.manager = ( manager !== undefined ) ? manager : DefaultLoadingManager; + this.manager = (manager !== undefined) ? manager : DefaultLoadingManager; } - Object.assign( CubeTextureLoader.prototype, { + Object.assign(CubeTextureLoader.prototype, { crossOrigin: 'anonymous', - load: function ( urls, onLoad, onProgress, onError ) { + load: function (urls, onLoad, onProgress, onError) { var texture = new CubeTexture(); - var loader = new ImageLoader( this.manager ); - loader.setCrossOrigin( this.crossOrigin ); - loader.setPath( this.path ); + var loader = new ImageLoader(this.manager); + loader.setCrossOrigin(this.crossOrigin); + loader.setPath(this.path); var loaded = 0; - function loadTexture( i ) { + function loadTexture(i) { - loader.load( urls[ i ], function ( image ) { + loader.load(urls[i], function (image) { - texture.images[ i ] = image; + texture.images[i] = image; - loaded ++; + loaded++; - if ( loaded === 6 ) { + if (loaded === 6) { texture.needsUpdate = true; - if ( onLoad ) onLoad( texture ); + if (onLoad) onLoad(texture); } - }, undefined, onError ); + }, undefined, onError); } - for ( var i = 0; i < urls.length; ++ i ) { + for (var i = 0; i < urls.length; ++i) { - loadTexture( i ); + loadTexture(i); } @@ -34556,82 +34569,82 @@ }, - setCrossOrigin: function ( value ) { + setCrossOrigin: function (value) { this.crossOrigin = value; return this; }, - setPath: function ( value ) { + setPath: function (value) { this.path = value; return this; } - } ); + }); /** * @author mrdoob / http://mrdoob.com/ */ - function TextureLoader( manager ) { + function TextureLoader(manager) { - this.manager = ( manager !== undefined ) ? manager : DefaultLoadingManager; + this.manager = (manager !== undefined) ? manager : DefaultLoadingManager; } - Object.assign( TextureLoader.prototype, { + Object.assign(TextureLoader.prototype, { crossOrigin: 'anonymous', - load: function ( url, onLoad, onProgress, onError ) { + load: function (url, onLoad, onProgress, onError) { var texture = new Texture(); - var loader = new ImageLoader( this.manager ); - loader.setCrossOrigin( this.crossOrigin ); - loader.setPath( this.path ); + var loader = new ImageLoader(this.manager); + loader.setCrossOrigin(this.crossOrigin); + loader.setPath(this.path); - loader.load( url, function ( image ) { + loader.load(url, function (image) { texture.image = image; // JPEGs can't have an alpha channel, so memory can be saved by storing them as RGB. - var isJPEG = url.search( /\.jpe?g$/i ) > 0 || url.search( /^data\:image\/jpeg/ ) === 0; + var isJPEG = url.search(/\.jpe?g$/i) > 0 || url.search(/^data\:image\/jpeg/) === 0; texture.format = isJPEG ? RGBFormat : RGBAFormat; texture.needsUpdate = true; - if ( onLoad !== undefined ) { + if (onLoad !== undefined) { - onLoad( texture ); + onLoad(texture); } - }, onProgress, onError ); + }, onProgress, onError); return texture; }, - setCrossOrigin: function ( value ) { + setCrossOrigin: function (value) { this.crossOrigin = value; return this; }, - setPath: function ( value ) { + setPath: function (value) { this.path = value; return this; } - } ); + }); /** * @author zz85 / http://www.lab4games.net/zz85/blog @@ -34676,14 +34689,14 @@ } - Object.assign( Curve.prototype, { + Object.assign(Curve.prototype, { // Virtual base class method to overwrite and implement in subclasses // - t [0 .. 1] - getPoint: function ( /* t, optionalTarget */ ) { + getPoint: function ( /* t, optionalTarget */) { - console.warn( 'THREE.Curve: .getPoint() not implemented.' ); + console.warn('THREE.Curve: .getPoint() not implemented.'); return null; }, @@ -34691,24 +34704,24 @@ // Get point at relative position in curve according to arc length // - u [0 .. 1] - getPointAt: function ( u, optionalTarget ) { + getPointAt: function (u, optionalTarget) { - var t = this.getUtoTmapping( u ); - return this.getPoint( t, optionalTarget ); + var t = this.getUtoTmapping(u); + return this.getPoint(t, optionalTarget); }, // Get sequence of points using getPoint( t ) - getPoints: function ( divisions ) { + getPoints: function (divisions) { - if ( divisions === undefined ) divisions = 5; + if (divisions === undefined) divisions = 5; var points = []; - for ( var d = 0; d <= divisions; d ++ ) { + for (var d = 0; d <= divisions; d++) { - points.push( this.getPoint( d / divisions ) ); + points.push(this.getPoint(d / divisions)); } @@ -34718,15 +34731,15 @@ // Get sequence of points using getPointAt( u ) - getSpacedPoints: function ( divisions ) { + getSpacedPoints: function (divisions) { - if ( divisions === undefined ) divisions = 5; + if (divisions === undefined) divisions = 5; var points = []; - for ( var d = 0; d <= divisions; d ++ ) { + for (var d = 0; d <= divisions; d++) { - points.push( this.getPointAt( d / divisions ) ); + points.push(this.getPointAt(d / divisions)); } @@ -34739,19 +34752,19 @@ getLength: function () { var lengths = this.getLengths(); - return lengths[ lengths.length - 1 ]; + return lengths[lengths.length - 1]; }, // Get list of cumulative segment lengths - getLengths: function ( divisions ) { + getLengths: function (divisions) { - if ( divisions === undefined ) divisions = this.arcLengthDivisions; + if (divisions === undefined) divisions = this.arcLengthDivisions; - if ( this.cacheArcLengths && - ( this.cacheArcLengths.length === divisions + 1 ) && - ! this.needsUpdate ) { + if (this.cacheArcLengths && + (this.cacheArcLengths.length === divisions + 1) && + !this.needsUpdate) { return this.cacheArcLengths; @@ -34760,16 +34773,16 @@ this.needsUpdate = false; var cache = []; - var current, last = this.getPoint( 0 ); + var current, last = this.getPoint(0); var p, sum = 0; - cache.push( 0 ); + cache.push(0); - for ( p = 1; p <= divisions; p ++ ) { + for (p = 1; p <= divisions; p++) { - current = this.getPoint( p / divisions ); - sum += current.distanceTo( last ); - cache.push( sum ); + current = this.getPoint(p / divisions); + sum += current.distanceTo(last); + cache.push(sum); last = current; } @@ -34789,7 +34802,7 @@ // Given u ( 0 .. 1 ), get a t to find p. This gives you points which are equidistant - getUtoTmapping: function ( u, distance ) { + getUtoTmapping: function (u, distance) { var arcLengths = this.getLengths(); @@ -34797,13 +34810,13 @@ var targetArcLength; // The targeted u distance value to get - if ( distance ) { + if (distance) { targetArcLength = distance; } else { - targetArcLength = u * arcLengths[ il - 1 ]; + targetArcLength = u * arcLengths[il - 1]; } @@ -34811,17 +34824,17 @@ var low = 0, high = il - 1, comparison; - while ( low <= high ) { + while (low <= high) { - i = 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 + i = 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 - comparison = arcLengths[ i ] - targetArcLength; + comparison = arcLengths[i] - targetArcLength; - if ( comparison < 0 ) { + if (comparison < 0) { low = i + 1; - } else if ( comparison > 0 ) { + } else if (comparison > 0) { high = i - 1; @@ -34838,26 +34851,26 @@ i = high; - if ( arcLengths[ i ] === targetArcLength ) { + if (arcLengths[i] === targetArcLength) { - return i / ( il - 1 ); + return i / (il - 1); } // we could get finer grain at lengths, or use simple interpolation between two points - var lengthBefore = arcLengths[ i ]; - var lengthAfter = arcLengths[ i + 1 ]; + var lengthBefore = arcLengths[i]; + var lengthAfter = arcLengths[i + 1]; var segmentLength = lengthAfter - lengthBefore; // determine where we are between the 'before' and 'after' points - var segmentFraction = ( targetArcLength - lengthBefore ) / segmentLength; + var segmentFraction = (targetArcLength - lengthBefore) / segmentLength; // add that fractional amount to t - var t = ( i + segmentFraction ) / ( il - 1 ); + var t = (i + segmentFraction) / (il - 1); return t; @@ -34868,7 +34881,7 @@ // 2 points a small delta apart will be used to find its gradient // which seems to give a reasonable approximation - getTangent: function ( t ) { + getTangent: function (t) { var delta = 0.0001; var t1 = t - delta; @@ -34876,25 +34889,25 @@ // Capping in case of danger - if ( t1 < 0 ) t1 = 0; - if ( t2 > 1 ) t2 = 1; + if (t1 < 0) t1 = 0; + if (t2 > 1) t2 = 1; - var pt1 = this.getPoint( t1 ); - var pt2 = this.getPoint( t2 ); + var pt1 = this.getPoint(t1); + var pt2 = this.getPoint(t2); - var vec = pt2.clone().sub( pt1 ); + var vec = pt2.clone().sub(pt1); return vec.normalize(); }, - getTangentAt: function ( u ) { + getTangentAt: function (u) { - var t = this.getUtoTmapping( u ); - return this.getTangent( t ); + var t = this.getUtoTmapping(u); + return this.getTangent(t); }, - computeFrenetFrames: function ( segments, closed ) { + computeFrenetFrames: function (segments, closed) { // see http://www.cs.indiana.edu/pub/techreports/TR425.pdf @@ -34911,93 +34924,93 @@ // compute the tangent vectors for each segment on the curve - for ( i = 0; i <= segments; i ++ ) { + for (i = 0; i <= segments; i++) { u = i / segments; - tangents[ i ] = this.getTangentAt( u ); - tangents[ i ].normalize(); + tangents[i] = this.getTangentAt(u); + tangents[i].normalize(); } // select an initial normal vector perpendicular to the first tangent vector, // and in the direction of the minimum tangent xyz component - normals[ 0 ] = new Vector3(); - binormals[ 0 ] = new Vector3(); + normals[0] = new Vector3(); + binormals[0] = new Vector3(); var min = Number.MAX_VALUE; - var tx = Math.abs( tangents[ 0 ].x ); - var ty = Math.abs( tangents[ 0 ].y ); - var tz = Math.abs( tangents[ 0 ].z ); + var tx = Math.abs(tangents[0].x); + var ty = Math.abs(tangents[0].y); + var tz = Math.abs(tangents[0].z); - if ( tx <= min ) { + if (tx <= min) { min = tx; - normal.set( 1, 0, 0 ); + normal.set(1, 0, 0); } - if ( ty <= min ) { + if (ty <= min) { min = ty; - normal.set( 0, 1, 0 ); + normal.set(0, 1, 0); } - if ( tz <= min ) { + if (tz <= min) { - normal.set( 0, 0, 1 ); + normal.set(0, 0, 1); } - vec.crossVectors( tangents[ 0 ], normal ).normalize(); + vec.crossVectors(tangents[0], normal).normalize(); - normals[ 0 ].crossVectors( tangents[ 0 ], vec ); - binormals[ 0 ].crossVectors( tangents[ 0 ], normals[ 0 ] ); + normals[0].crossVectors(tangents[0], vec); + binormals[0].crossVectors(tangents[0], normals[0]); // compute the slowly-varying normal and binormal vectors for each segment on the curve - for ( i = 1; i <= segments; i ++ ) { + for (i = 1; i <= segments; i++) { - normals[ i ] = normals[ i - 1 ].clone(); + normals[i] = normals[i - 1].clone(); - binormals[ i ] = binormals[ i - 1 ].clone(); + binormals[i] = binormals[i - 1].clone(); - vec.crossVectors( tangents[ i - 1 ], tangents[ i ] ); + vec.crossVectors(tangents[i - 1], tangents[i]); - if ( vec.length() > Number.EPSILON ) { + if (vec.length() > Number.EPSILON) { vec.normalize(); - theta = Math.acos( _Math.clamp( tangents[ i - 1 ].dot( tangents[ i ] ), - 1, 1 ) ); // clamp for floating pt errors + theta = Math.acos(_Math.clamp(tangents[i - 1].dot(tangents[i]), - 1, 1)); // clamp for floating pt errors - normals[ i ].applyMatrix4( mat.makeRotationAxis( vec, theta ) ); + normals[i].applyMatrix4(mat.makeRotationAxis(vec, theta)); } - binormals[ i ].crossVectors( tangents[ i ], normals[ i ] ); + binormals[i].crossVectors(tangents[i], normals[i]); } // if the curve is closed, postprocess the vectors so the first and last normal vectors are the same - if ( closed === true ) { + if (closed === true) { - theta = Math.acos( _Math.clamp( normals[ 0 ].dot( normals[ segments ] ), - 1, 1 ) ); + theta = Math.acos(_Math.clamp(normals[0].dot(normals[segments]), - 1, 1)); theta /= segments; - if ( tangents[ 0 ].dot( vec.crossVectors( normals[ 0 ], normals[ segments ] ) ) > 0 ) { + if (tangents[0].dot(vec.crossVectors(normals[0], normals[segments])) > 0) { theta = - theta; } - for ( i = 1; i <= segments; i ++ ) { + for (i = 1; i <= segments; i++) { // twist a little... - normals[ i ].applyMatrix4( mat.makeRotationAxis( tangents[ i ], theta * i ) ); - binormals[ i ].crossVectors( tangents[ i ], normals[ i ] ); + normals[i].applyMatrix4(mat.makeRotationAxis(tangents[i], theta * i)); + binormals[i].crossVectors(tangents[i], normals[i]); } @@ -35013,11 +35026,11 @@ clone: function () { - return new this.constructor().copy( this ); + return new this.constructor().copy(this); }, - copy: function ( source ) { + copy: function (source) { this.arcLengthDivisions = source.arcLengthDivisions; @@ -35042,7 +35055,7 @@ }, - fromJSON: function ( json ) { + fromJSON: function (json) { this.arcLengthDivisions = json.arcLengthDivisions; @@ -35050,11 +35063,11 @@ } - } ); + }); - function EllipseCurve( aX, aY, xRadius, yRadius, aStartAngle, aEndAngle, aClockwise, aRotation ) { + function EllipseCurve(aX, aY, xRadius, yRadius, aStartAngle, aEndAngle, aClockwise, aRotation) { - Curve.call( this ); + Curve.call(this); this.type = 'EllipseCurve'; @@ -35073,26 +35086,26 @@ } - EllipseCurve.prototype = Object.create( Curve.prototype ); + EllipseCurve.prototype = Object.create(Curve.prototype); EllipseCurve.prototype.constructor = EllipseCurve; EllipseCurve.prototype.isEllipseCurve = true; - EllipseCurve.prototype.getPoint = function ( t, optionalTarget ) { + EllipseCurve.prototype.getPoint = function (t, optionalTarget) { var point = optionalTarget || new Vector2(); var twoPi = Math.PI * 2; var deltaAngle = this.aEndAngle - this.aStartAngle; - var samePoints = Math.abs( deltaAngle ) < Number.EPSILON; + var samePoints = Math.abs(deltaAngle) < Number.EPSILON; // ensures that deltaAngle is 0 .. 2 PI - while ( deltaAngle < 0 ) deltaAngle += twoPi; - while ( deltaAngle > twoPi ) deltaAngle -= twoPi; + while (deltaAngle < 0) deltaAngle += twoPi; + while (deltaAngle > twoPi) deltaAngle -= twoPi; - if ( deltaAngle < Number.EPSILON ) { + if (deltaAngle < Number.EPSILON) { - if ( samePoints ) { + if (samePoints) { deltaAngle = 0; @@ -35104,9 +35117,9 @@ } - if ( this.aClockwise === true && ! samePoints ) { + if (this.aClockwise === true && !samePoints) { - if ( deltaAngle === twoPi ) { + if (deltaAngle === twoPi) { deltaAngle = - twoPi; @@ -35119,13 +35132,13 @@ } var angle = this.aStartAngle + t * deltaAngle; - var x = this.aX + this.xRadius * Math.cos( angle ); - var y = this.aY + this.yRadius * Math.sin( angle ); + var x = this.aX + this.xRadius * Math.cos(angle); + var y = this.aY + this.yRadius * Math.sin(angle); - if ( this.aRotation !== 0 ) { + if (this.aRotation !== 0) { - var cos = Math.cos( this.aRotation ); - var sin = Math.sin( this.aRotation ); + var cos = Math.cos(this.aRotation); + var sin = Math.sin(this.aRotation); var tx = x - this.aX; var ty = y - this.aY; @@ -35136,13 +35149,13 @@ } - return point.set( x, y ); + return point.set(x, y); }; - EllipseCurve.prototype.copy = function ( source ) { + EllipseCurve.prototype.copy = function (source) { - Curve.prototype.copy.call( this, source ); + Curve.prototype.copy.call(this, source); this.aX = source.aX; this.aY = source.aY; @@ -35164,7 +35177,7 @@ EllipseCurve.prototype.toJSON = function () { - var data = Curve.prototype.toJSON.call( this ); + var data = Curve.prototype.toJSON.call(this); data.aX = this.aX; data.aY = this.aY; @@ -35183,9 +35196,9 @@ }; - EllipseCurve.prototype.fromJSON = function ( json ) { + EllipseCurve.prototype.fromJSON = function (json) { - Curve.prototype.fromJSON.call( this, json ); + Curve.prototype.fromJSON.call(this, json); this.aX = json.aX; this.aY = json.aY; @@ -35204,15 +35217,15 @@ }; - function ArcCurve( aX, aY, aRadius, aStartAngle, aEndAngle, aClockwise ) { + function ArcCurve(aX, aY, aRadius, aStartAngle, aEndAngle, aClockwise) { - EllipseCurve.call( this, aX, aY, aRadius, aRadius, aStartAngle, aEndAngle, aClockwise ); + EllipseCurve.call(this, aX, aY, aRadius, aRadius, aStartAngle, aEndAngle, aClockwise); this.type = 'ArcCurve'; } - ArcCurve.prototype = Object.create( EllipseCurve.prototype ); + ArcCurve.prototype = Object.create(EllipseCurve.prototype); ArcCurve.prototype.constructor = ArcCurve; ArcCurve.prototype.isArcCurve = true; @@ -35251,7 +35264,7 @@ * and * p'(0) = t0, p'(1) = t1. */ - function init( x0, x1, t0, t1 ) { + function init(x0, x1, t0, t1) { c0 = x0; c1 = t0; @@ -35262,27 +35275,27 @@ return { - initCatmullRom: function ( x0, x1, x2, x3, tension ) { + initCatmullRom: function (x0, x1, x2, x3, tension) { - init( x1, x2, tension * ( x2 - x0 ), tension * ( x3 - x1 ) ); + init(x1, x2, tension * (x2 - x0), tension * (x3 - x1)); }, - initNonuniformCatmullRom: function ( x0, x1, x2, x3, dt0, dt1, dt2 ) { + initNonuniformCatmullRom: function (x0, x1, x2, x3, dt0, dt1, dt2) { // compute tangents when parameterized in [t1,t2] - var t1 = ( x1 - x0 ) / dt0 - ( x2 - x0 ) / ( dt0 + dt1 ) + ( x2 - x1 ) / dt1; - var t2 = ( x2 - x1 ) / dt1 - ( x3 - x1 ) / ( dt1 + dt2 ) + ( x3 - x2 ) / dt2; + var t1 = (x1 - x0) / dt0 - (x2 - x0) / (dt0 + dt1) + (x2 - x1) / dt1; + var t2 = (x2 - x1) / dt1 - (x3 - x1) / (dt1 + dt2) + (x3 - x2) / dt2; // rescale tangents for parametrization in [0,1] t1 *= dt1; t2 *= dt1; - init( x1, x2, t1, t2 ); + init(x1, x2, t1, t2); }, - calc: function ( t ) { + calc: function (t) { var t2 = t * t; var t3 = t2 * t; @@ -35299,9 +35312,9 @@ var tmp = new Vector3(); var px = new CubicPoly(), py = new CubicPoly(), pz = new CubicPoly(); - function CatmullRomCurve3( points, closed, curveType, tension ) { + function CatmullRomCurve3(points, closed, curveType, tension) { - Curve.call( this ); + Curve.call(this); this.type = 'CatmullRomCurve3'; @@ -35312,27 +35325,27 @@ } - CatmullRomCurve3.prototype = Object.create( Curve.prototype ); + CatmullRomCurve3.prototype = Object.create(Curve.prototype); CatmullRomCurve3.prototype.constructor = CatmullRomCurve3; CatmullRomCurve3.prototype.isCatmullRomCurve3 = true; - CatmullRomCurve3.prototype.getPoint = function ( t, optionalTarget ) { + CatmullRomCurve3.prototype.getPoint = function (t, optionalTarget) { var point = optionalTarget || new Vector3(); var points = this.points; var l = points.length; - var p = ( l - ( this.closed ? 0 : 1 ) ) * t; - var intPoint = Math.floor( p ); + var p = (l - (this.closed ? 0 : 1)) * t; + var intPoint = Math.floor(p); var weight = p - intPoint; - if ( this.closed ) { + if (this.closed) { - intPoint += intPoint > 0 ? 0 : ( Math.floor( Math.abs( intPoint ) / l ) + 1 ) * l; + intPoint += intPoint > 0 ? 0 : (Math.floor(Math.abs(intPoint) / l) + 1) * l; - } else if ( weight === 0 && intPoint === l - 1 ) { + } else if (weight === 0 && intPoint === l - 1) { intPoint = l - 2; weight = 1; @@ -35341,79 +35354,79 @@ var p0, p1, p2, p3; // 4 points - if ( this.closed || intPoint > 0 ) { + if (this.closed || intPoint > 0) { - p0 = points[ ( intPoint - 1 ) % l ]; + p0 = points[(intPoint - 1) % l]; } else { // extrapolate first point - tmp.subVectors( points[ 0 ], points[ 1 ] ).add( points[ 0 ] ); + tmp.subVectors(points[0], points[1]).add(points[0]); p0 = tmp; } - p1 = points[ intPoint % l ]; - p2 = points[ ( intPoint + 1 ) % l ]; + p1 = points[intPoint % l]; + p2 = points[(intPoint + 1) % l]; - if ( this.closed || intPoint + 2 < l ) { + if (this.closed || intPoint + 2 < l) { - p3 = points[ ( intPoint + 2 ) % l ]; + p3 = points[(intPoint + 2) % l]; } else { // extrapolate last point - tmp.subVectors( points[ l - 1 ], points[ l - 2 ] ).add( points[ l - 1 ] ); + tmp.subVectors(points[l - 1], points[l - 2]).add(points[l - 1]); p3 = tmp; } - if ( this.curveType === 'centripetal' || this.curveType === 'chordal' ) { + if (this.curveType === 'centripetal' || this.curveType === 'chordal') { // init Centripetal / Chordal Catmull-Rom var pow = this.curveType === 'chordal' ? 0.5 : 0.25; - var dt0 = Math.pow( p0.distanceToSquared( p1 ), pow ); - var dt1 = Math.pow( p1.distanceToSquared( p2 ), pow ); - var dt2 = Math.pow( p2.distanceToSquared( p3 ), pow ); + var dt0 = Math.pow(p0.distanceToSquared(p1), pow); + var dt1 = Math.pow(p1.distanceToSquared(p2), pow); + var dt2 = Math.pow(p2.distanceToSquared(p3), pow); // safety check for repeated points - if ( dt1 < 1e-4 ) dt1 = 1.0; - if ( dt0 < 1e-4 ) dt0 = dt1; - if ( dt2 < 1e-4 ) dt2 = dt1; + if (dt1 < 1e-4) dt1 = 1.0; + if (dt0 < 1e-4) dt0 = dt1; + if (dt2 < 1e-4) dt2 = dt1; - px.initNonuniformCatmullRom( p0.x, p1.x, p2.x, p3.x, dt0, dt1, dt2 ); - py.initNonuniformCatmullRom( p0.y, p1.y, p2.y, p3.y, dt0, dt1, dt2 ); - pz.initNonuniformCatmullRom( p0.z, p1.z, p2.z, p3.z, dt0, dt1, dt2 ); + px.initNonuniformCatmullRom(p0.x, p1.x, p2.x, p3.x, dt0, dt1, dt2); + py.initNonuniformCatmullRom(p0.y, p1.y, p2.y, p3.y, dt0, dt1, dt2); + pz.initNonuniformCatmullRom(p0.z, p1.z, p2.z, p3.z, dt0, dt1, dt2); - } else if ( this.curveType === 'catmullrom' ) { + } else if (this.curveType === 'catmullrom') { - px.initCatmullRom( p0.x, p1.x, p2.x, p3.x, this.tension ); - py.initCatmullRom( p0.y, p1.y, p2.y, p3.y, this.tension ); - pz.initCatmullRom( p0.z, p1.z, p2.z, p3.z, this.tension ); + px.initCatmullRom(p0.x, p1.x, p2.x, p3.x, this.tension); + py.initCatmullRom(p0.y, p1.y, p2.y, p3.y, this.tension); + pz.initCatmullRom(p0.z, p1.z, p2.z, p3.z, this.tension); } point.set( - px.calc( weight ), - py.calc( weight ), - pz.calc( weight ) + px.calc(weight), + py.calc(weight), + pz.calc(weight) ); return point; }; - CatmullRomCurve3.prototype.copy = function ( source ) { + CatmullRomCurve3.prototype.copy = function (source) { - Curve.prototype.copy.call( this, source ); + Curve.prototype.copy.call(this, source); this.points = []; - for ( var i = 0, l = source.points.length; i < l; i ++ ) { + for (var i = 0, l = source.points.length; i < l; i++) { - var point = source.points[ i ]; + var point = source.points[i]; - this.points.push( point.clone() ); + this.points.push(point.clone()); } @@ -35427,14 +35440,14 @@ CatmullRomCurve3.prototype.toJSON = function () { - var data = Curve.prototype.toJSON.call( this ); + var data = Curve.prototype.toJSON.call(this); data.points = []; - for ( var i = 0, l = this.points.length; i < l; i ++ ) { + for (var i = 0, l = this.points.length; i < l; i++) { - var point = this.points[ i ]; - data.points.push( point.toArray() ); + var point = this.points[i]; + data.points.push(point.toArray()); } @@ -35446,16 +35459,16 @@ }; - CatmullRomCurve3.prototype.fromJSON = function ( json ) { + CatmullRomCurve3.prototype.fromJSON = function (json) { - Curve.prototype.fromJSON.call( this, json ); + Curve.prototype.fromJSON.call(this, json); this.points = []; - for ( var i = 0, l = json.points.length; i < l; i ++ ) { + for (var i = 0, l = json.points.length; i < l; i++) { - var point = json.points[ i ]; - this.points.push( new Vector3().fromArray( point ) ); + var point = json.points[i]; + this.points.push(new Vector3().fromArray(point)); } @@ -35474,82 +35487,82 @@ * http://en.wikipedia.org/wiki/Bézier_curve */ - function CatmullRom( t, p0, p1, p2, p3 ) { + function CatmullRom(t, p0, p1, p2, p3) { - var v0 = ( p2 - p0 ) * 0.5; - var v1 = ( p3 - p1 ) * 0.5; + var v0 = (p2 - p0) * 0.5; + var v1 = (p3 - p1) * 0.5; var t2 = t * t; var t3 = t * t2; - return ( 2 * p1 - 2 * p2 + v0 + v1 ) * t3 + ( - 3 * p1 + 3 * p2 - 2 * v0 - v1 ) * t2 + v0 * t + p1; + return (2 * p1 - 2 * p2 + v0 + v1) * t3 + (- 3 * p1 + 3 * p2 - 2 * v0 - v1) * t2 + v0 * t + p1; } // - function QuadraticBezierP0( t, p ) { + function QuadraticBezierP0(t, p) { var k = 1 - t; return k * k * p; } - function QuadraticBezierP1( t, p ) { + function QuadraticBezierP1(t, p) { - return 2 * ( 1 - t ) * t * p; + return 2 * (1 - t) * t * p; } - function QuadraticBezierP2( t, p ) { + function QuadraticBezierP2(t, p) { return t * t * p; } - function QuadraticBezier( t, p0, p1, p2 ) { + function QuadraticBezier(t, p0, p1, p2) { - return QuadraticBezierP0( t, p0 ) + QuadraticBezierP1( t, p1 ) + - QuadraticBezierP2( t, p2 ); + return QuadraticBezierP0(t, p0) + QuadraticBezierP1(t, p1) + + QuadraticBezierP2(t, p2); } // - function CubicBezierP0( t, p ) { + function CubicBezierP0(t, p) { var k = 1 - t; return k * k * k * p; } - function CubicBezierP1( t, p ) { + function CubicBezierP1(t, p) { var k = 1 - t; return 3 * k * k * t * p; } - function CubicBezierP2( t, p ) { + function CubicBezierP2(t, p) { - return 3 * ( 1 - t ) * t * t * p; + return 3 * (1 - t) * t * t * p; } - function CubicBezierP3( t, p ) { + function CubicBezierP3(t, p) { return t * t * t * p; } - function CubicBezier( t, p0, p1, p2, p3 ) { + function CubicBezier(t, p0, p1, p2, p3) { - return CubicBezierP0( t, p0 ) + CubicBezierP1( t, p1 ) + CubicBezierP2( t, p2 ) + - CubicBezierP3( t, p3 ); + return CubicBezierP0(t, p0) + CubicBezierP1(t, p1) + CubicBezierP2(t, p2) + + CubicBezierP3(t, p3); } - function CubicBezierCurve( v0, v1, v2, v3 ) { + function CubicBezierCurve(v0, v1, v2, v3) { - Curve.call( this ); + Curve.call(this); this.type = 'CubicBezierCurve'; @@ -35560,34 +35573,34 @@ } - CubicBezierCurve.prototype = Object.create( Curve.prototype ); + CubicBezierCurve.prototype = Object.create(Curve.prototype); CubicBezierCurve.prototype.constructor = CubicBezierCurve; CubicBezierCurve.prototype.isCubicBezierCurve = true; - CubicBezierCurve.prototype.getPoint = function ( t, optionalTarget ) { + CubicBezierCurve.prototype.getPoint = function (t, optionalTarget) { var point = optionalTarget || new Vector2(); var v0 = this.v0, v1 = this.v1, v2 = this.v2, v3 = this.v3; point.set( - CubicBezier( t, v0.x, v1.x, v2.x, v3.x ), - CubicBezier( t, v0.y, v1.y, v2.y, v3.y ) + CubicBezier(t, v0.x, v1.x, v2.x, v3.x), + CubicBezier(t, v0.y, v1.y, v2.y, v3.y) ); return point; }; - CubicBezierCurve.prototype.copy = function ( source ) { + CubicBezierCurve.prototype.copy = function (source) { - Curve.prototype.copy.call( this, source ); + Curve.prototype.copy.call(this, source); - this.v0.copy( source.v0 ); - this.v1.copy( source.v1 ); - this.v2.copy( source.v2 ); - this.v3.copy( source.v3 ); + this.v0.copy(source.v0); + this.v1.copy(source.v1); + this.v2.copy(source.v2); + this.v3.copy(source.v3); return this; @@ -35595,7 +35608,7 @@ CubicBezierCurve.prototype.toJSON = function () { - var data = Curve.prototype.toJSON.call( this ); + var data = Curve.prototype.toJSON.call(this); data.v0 = this.v0.toArray(); data.v1 = this.v1.toArray(); @@ -35606,22 +35619,22 @@ }; - CubicBezierCurve.prototype.fromJSON = function ( json ) { + CubicBezierCurve.prototype.fromJSON = function (json) { - Curve.prototype.fromJSON.call( this, json ); + Curve.prototype.fromJSON.call(this, json); - this.v0.fromArray( json.v0 ); - this.v1.fromArray( json.v1 ); - this.v2.fromArray( json.v2 ); - this.v3.fromArray( json.v3 ); + this.v0.fromArray(json.v0); + this.v1.fromArray(json.v1); + this.v2.fromArray(json.v2); + this.v3.fromArray(json.v3); return this; }; - function CubicBezierCurve3( v0, v1, v2, v3 ) { + function CubicBezierCurve3(v0, v1, v2, v3) { - Curve.call( this ); + Curve.call(this); this.type = 'CubicBezierCurve3'; @@ -35632,35 +35645,35 @@ } - CubicBezierCurve3.prototype = Object.create( Curve.prototype ); + CubicBezierCurve3.prototype = Object.create(Curve.prototype); CubicBezierCurve3.prototype.constructor = CubicBezierCurve3; CubicBezierCurve3.prototype.isCubicBezierCurve3 = true; - CubicBezierCurve3.prototype.getPoint = function ( t, optionalTarget ) { + CubicBezierCurve3.prototype.getPoint = function (t, optionalTarget) { var point = optionalTarget || new Vector3(); var v0 = this.v0, v1 = this.v1, v2 = this.v2, v3 = this.v3; point.set( - CubicBezier( t, v0.x, v1.x, v2.x, v3.x ), - CubicBezier( t, v0.y, v1.y, v2.y, v3.y ), - CubicBezier( t, v0.z, v1.z, v2.z, v3.z ) + CubicBezier(t, v0.x, v1.x, v2.x, v3.x), + CubicBezier(t, v0.y, v1.y, v2.y, v3.y), + CubicBezier(t, v0.z, v1.z, v2.z, v3.z) ); return point; }; - CubicBezierCurve3.prototype.copy = function ( source ) { + CubicBezierCurve3.prototype.copy = function (source) { - Curve.prototype.copy.call( this, source ); + Curve.prototype.copy.call(this, source); - this.v0.copy( source.v0 ); - this.v1.copy( source.v1 ); - this.v2.copy( source.v2 ); - this.v3.copy( source.v3 ); + this.v0.copy(source.v0); + this.v1.copy(source.v1); + this.v2.copy(source.v2); + this.v3.copy(source.v3); return this; @@ -35668,7 +35681,7 @@ CubicBezierCurve3.prototype.toJSON = function () { - var data = Curve.prototype.toJSON.call( this ); + var data = Curve.prototype.toJSON.call(this); data.v0 = this.v0.toArray(); data.v1 = this.v1.toArray(); @@ -35679,22 +35692,22 @@ }; - CubicBezierCurve3.prototype.fromJSON = function ( json ) { + CubicBezierCurve3.prototype.fromJSON = function (json) { - Curve.prototype.fromJSON.call( this, json ); + Curve.prototype.fromJSON.call(this, json); - this.v0.fromArray( json.v0 ); - this.v1.fromArray( json.v1 ); - this.v2.fromArray( json.v2 ); - this.v3.fromArray( json.v3 ); + this.v0.fromArray(json.v0); + this.v1.fromArray(json.v1); + this.v2.fromArray(json.v2); + this.v3.fromArray(json.v3); return this; }; - function LineCurve( v1, v2 ) { + function LineCurve(v1, v2) { - Curve.call( this ); + Curve.call(this); this.type = 'LineCurve'; @@ -35703,23 +35716,23 @@ } - LineCurve.prototype = Object.create( Curve.prototype ); + LineCurve.prototype = Object.create(Curve.prototype); LineCurve.prototype.constructor = LineCurve; LineCurve.prototype.isLineCurve = true; - LineCurve.prototype.getPoint = function ( t, optionalTarget ) { + LineCurve.prototype.getPoint = function (t, optionalTarget) { var point = optionalTarget || new Vector2(); - if ( t === 1 ) { + if (t === 1) { - point.copy( this.v2 ); + point.copy(this.v2); } else { - point.copy( this.v2 ).sub( this.v1 ); - point.multiplyScalar( t ).add( this.v1 ); + point.copy(this.v2).sub(this.v1); + point.multiplyScalar(t).add(this.v1); } @@ -35729,26 +35742,26 @@ // Line curve is linear, so we can overwrite default getPointAt - LineCurve.prototype.getPointAt = function ( u, optionalTarget ) { + LineCurve.prototype.getPointAt = function (u, optionalTarget) { - return this.getPoint( u, optionalTarget ); + return this.getPoint(u, optionalTarget); }; - LineCurve.prototype.getTangent = function ( /* t */ ) { + LineCurve.prototype.getTangent = function ( /* t */) { - var tangent = this.v2.clone().sub( this.v1 ); + var tangent = this.v2.clone().sub(this.v1); return tangent.normalize(); }; - LineCurve.prototype.copy = function ( source ) { + LineCurve.prototype.copy = function (source) { - Curve.prototype.copy.call( this, source ); + Curve.prototype.copy.call(this, source); - this.v1.copy( source.v1 ); - this.v2.copy( source.v2 ); + this.v1.copy(source.v1); + this.v2.copy(source.v2); return this; @@ -35756,7 +35769,7 @@ LineCurve.prototype.toJSON = function () { - var data = Curve.prototype.toJSON.call( this ); + var data = Curve.prototype.toJSON.call(this); data.v1 = this.v1.toArray(); data.v2 = this.v2.toArray(); @@ -35765,20 +35778,20 @@ }; - LineCurve.prototype.fromJSON = function ( json ) { + LineCurve.prototype.fromJSON = function (json) { - Curve.prototype.fromJSON.call( this, json ); + Curve.prototype.fromJSON.call(this, json); - this.v1.fromArray( json.v1 ); - this.v2.fromArray( json.v2 ); + this.v1.fromArray(json.v1); + this.v2.fromArray(json.v2); return this; }; - function LineCurve3( v1, v2 ) { + function LineCurve3(v1, v2) { - Curve.call( this ); + Curve.call(this); this.type = 'LineCurve3'; @@ -35787,23 +35800,23 @@ } - LineCurve3.prototype = Object.create( Curve.prototype ); + LineCurve3.prototype = Object.create(Curve.prototype); LineCurve3.prototype.constructor = LineCurve3; LineCurve3.prototype.isLineCurve3 = true; - LineCurve3.prototype.getPoint = function ( t, optionalTarget ) { + LineCurve3.prototype.getPoint = function (t, optionalTarget) { var point = optionalTarget || new Vector3(); - if ( t === 1 ) { + if (t === 1) { - point.copy( this.v2 ); + point.copy(this.v2); } else { - point.copy( this.v2 ).sub( this.v1 ); - point.multiplyScalar( t ).add( this.v1 ); + point.copy(this.v2).sub(this.v1); + point.multiplyScalar(t).add(this.v1); } @@ -35813,18 +35826,18 @@ // Line curve is linear, so we can overwrite default getPointAt - LineCurve3.prototype.getPointAt = function ( u, optionalTarget ) { + LineCurve3.prototype.getPointAt = function (u, optionalTarget) { - return this.getPoint( u, optionalTarget ); + return this.getPoint(u, optionalTarget); }; - LineCurve3.prototype.copy = function ( source ) { + LineCurve3.prototype.copy = function (source) { - Curve.prototype.copy.call( this, source ); + Curve.prototype.copy.call(this, source); - this.v1.copy( source.v1 ); - this.v2.copy( source.v2 ); + this.v1.copy(source.v1); + this.v2.copy(source.v2); return this; @@ -35832,7 +35845,7 @@ LineCurve3.prototype.toJSON = function () { - var data = Curve.prototype.toJSON.call( this ); + var data = Curve.prototype.toJSON.call(this); data.v1 = this.v1.toArray(); data.v2 = this.v2.toArray(); @@ -35841,20 +35854,20 @@ }; - LineCurve3.prototype.fromJSON = function ( json ) { + LineCurve3.prototype.fromJSON = function (json) { - Curve.prototype.fromJSON.call( this, json ); + Curve.prototype.fromJSON.call(this, json); - this.v1.fromArray( json.v1 ); - this.v2.fromArray( json.v2 ); + this.v1.fromArray(json.v1); + this.v2.fromArray(json.v2); return this; }; - function QuadraticBezierCurve( v0, v1, v2 ) { + function QuadraticBezierCurve(v0, v1, v2) { - Curve.call( this ); + Curve.call(this); this.type = 'QuadraticBezierCurve'; @@ -35864,33 +35877,33 @@ } - QuadraticBezierCurve.prototype = Object.create( Curve.prototype ); + QuadraticBezierCurve.prototype = Object.create(Curve.prototype); QuadraticBezierCurve.prototype.constructor = QuadraticBezierCurve; QuadraticBezierCurve.prototype.isQuadraticBezierCurve = true; - QuadraticBezierCurve.prototype.getPoint = function ( t, optionalTarget ) { + QuadraticBezierCurve.prototype.getPoint = function (t, optionalTarget) { var point = optionalTarget || new Vector2(); var v0 = this.v0, v1 = this.v1, v2 = this.v2; point.set( - QuadraticBezier( t, v0.x, v1.x, v2.x ), - QuadraticBezier( t, v0.y, v1.y, v2.y ) + QuadraticBezier(t, v0.x, v1.x, v2.x), + QuadraticBezier(t, v0.y, v1.y, v2.y) ); return point; }; - QuadraticBezierCurve.prototype.copy = function ( source ) { + QuadraticBezierCurve.prototype.copy = function (source) { - Curve.prototype.copy.call( this, source ); + Curve.prototype.copy.call(this, source); - this.v0.copy( source.v0 ); - this.v1.copy( source.v1 ); - this.v2.copy( source.v2 ); + this.v0.copy(source.v0); + this.v1.copy(source.v1); + this.v2.copy(source.v2); return this; @@ -35898,7 +35911,7 @@ QuadraticBezierCurve.prototype.toJSON = function () { - var data = Curve.prototype.toJSON.call( this ); + var data = Curve.prototype.toJSON.call(this); data.v0 = this.v0.toArray(); data.v1 = this.v1.toArray(); @@ -35908,21 +35921,21 @@ }; - QuadraticBezierCurve.prototype.fromJSON = function ( json ) { + QuadraticBezierCurve.prototype.fromJSON = function (json) { - Curve.prototype.fromJSON.call( this, json ); + Curve.prototype.fromJSON.call(this, json); - this.v0.fromArray( json.v0 ); - this.v1.fromArray( json.v1 ); - this.v2.fromArray( json.v2 ); + this.v0.fromArray(json.v0); + this.v1.fromArray(json.v1); + this.v2.fromArray(json.v2); return this; }; - function QuadraticBezierCurve3( v0, v1, v2 ) { + function QuadraticBezierCurve3(v0, v1, v2) { - Curve.call( this ); + Curve.call(this); this.type = 'QuadraticBezierCurve3'; @@ -35932,34 +35945,34 @@ } - QuadraticBezierCurve3.prototype = Object.create( Curve.prototype ); + QuadraticBezierCurve3.prototype = Object.create(Curve.prototype); QuadraticBezierCurve3.prototype.constructor = QuadraticBezierCurve3; QuadraticBezierCurve3.prototype.isQuadraticBezierCurve3 = true; - QuadraticBezierCurve3.prototype.getPoint = function ( t, optionalTarget ) { + QuadraticBezierCurve3.prototype.getPoint = function (t, optionalTarget) { var point = optionalTarget || new Vector3(); var v0 = this.v0, v1 = this.v1, v2 = this.v2; point.set( - QuadraticBezier( t, v0.x, v1.x, v2.x ), - QuadraticBezier( t, v0.y, v1.y, v2.y ), - QuadraticBezier( t, v0.z, v1.z, v2.z ) + QuadraticBezier(t, v0.x, v1.x, v2.x), + QuadraticBezier(t, v0.y, v1.y, v2.y), + QuadraticBezier(t, v0.z, v1.z, v2.z) ); return point; }; - QuadraticBezierCurve3.prototype.copy = function ( source ) { + QuadraticBezierCurve3.prototype.copy = function (source) { - Curve.prototype.copy.call( this, source ); + Curve.prototype.copy.call(this, source); - this.v0.copy( source.v0 ); - this.v1.copy( source.v1 ); - this.v2.copy( source.v2 ); + this.v0.copy(source.v0); + this.v1.copy(source.v1); + this.v2.copy(source.v2); return this; @@ -35967,7 +35980,7 @@ QuadraticBezierCurve3.prototype.toJSON = function () { - var data = Curve.prototype.toJSON.call( this ); + var data = Curve.prototype.toJSON.call(this); data.v0 = this.v0.toArray(); data.v1 = this.v1.toArray(); @@ -35977,21 +35990,21 @@ }; - QuadraticBezierCurve3.prototype.fromJSON = function ( json ) { + QuadraticBezierCurve3.prototype.fromJSON = function (json) { - Curve.prototype.fromJSON.call( this, json ); + Curve.prototype.fromJSON.call(this, json); - this.v0.fromArray( json.v0 ); - this.v1.fromArray( json.v1 ); - this.v2.fromArray( json.v2 ); + this.v0.fromArray(json.v0); + this.v1.fromArray(json.v1); + this.v2.fromArray(json.v2); return this; }; - function SplineCurve( points /* array of Vector2 */ ) { + function SplineCurve(points /* array of Vector2 */) { - Curve.call( this ); + Curve.call(this); this.type = 'SplineCurve'; @@ -35999,46 +36012,46 @@ } - SplineCurve.prototype = Object.create( Curve.prototype ); + SplineCurve.prototype = Object.create(Curve.prototype); SplineCurve.prototype.constructor = SplineCurve; SplineCurve.prototype.isSplineCurve = true; - SplineCurve.prototype.getPoint = function ( t, optionalTarget ) { + SplineCurve.prototype.getPoint = function (t, optionalTarget) { var point = optionalTarget || new Vector2(); var points = this.points; - var p = ( points.length - 1 ) * t; + var p = (points.length - 1) * t; - var intPoint = Math.floor( p ); + var intPoint = Math.floor(p); var weight = p - intPoint; - var p0 = points[ intPoint === 0 ? intPoint : intPoint - 1 ]; - var p1 = points[ intPoint ]; - var p2 = points[ intPoint > points.length - 2 ? points.length - 1 : intPoint + 1 ]; - var p3 = points[ intPoint > points.length - 3 ? points.length - 1 : intPoint + 2 ]; + var p0 = points[intPoint === 0 ? intPoint : intPoint - 1]; + var p1 = points[intPoint]; + var p2 = points[intPoint > points.length - 2 ? points.length - 1 : intPoint + 1]; + var p3 = points[intPoint > points.length - 3 ? points.length - 1 : intPoint + 2]; point.set( - CatmullRom( weight, p0.x, p1.x, p2.x, p3.x ), - CatmullRom( weight, p0.y, p1.y, p2.y, p3.y ) + CatmullRom(weight, p0.x, p1.x, p2.x, p3.x), + CatmullRom(weight, p0.y, p1.y, p2.y, p3.y) ); return point; }; - SplineCurve.prototype.copy = function ( source ) { + SplineCurve.prototype.copy = function (source) { - Curve.prototype.copy.call( this, source ); + Curve.prototype.copy.call(this, source); this.points = []; - for ( var i = 0, l = source.points.length; i < l; i ++ ) { + for (var i = 0, l = source.points.length; i < l; i++) { - var point = source.points[ i ]; + var point = source.points[i]; - this.points.push( point.clone() ); + this.points.push(point.clone()); } @@ -36048,14 +36061,14 @@ SplineCurve.prototype.toJSON = function () { - var data = Curve.prototype.toJSON.call( this ); + var data = Curve.prototype.toJSON.call(this); data.points = []; - for ( var i = 0, l = this.points.length; i < l; i ++ ) { + for (var i = 0, l = this.points.length; i < l; i++) { - var point = this.points[ i ]; - data.points.push( point.toArray() ); + var point = this.points[i]; + data.points.push(point.toArray()); } @@ -36063,16 +36076,16 @@ }; - SplineCurve.prototype.fromJSON = function ( json ) { + SplineCurve.prototype.fromJSON = function (json) { - Curve.prototype.fromJSON.call( this, json ); + Curve.prototype.fromJSON.call(this, json); this.points = []; - for ( var i = 0, l = json.points.length; i < l; i ++ ) { + for (var i = 0, l = json.points.length; i < l; i++) { - var point = json.points[ i ]; - this.points.push( new Vector2().fromArray( point ) ); + var point = json.points[i]; + this.points.push(new Vector2().fromArray(point)); } @@ -36107,7 +36120,7 @@ function CurvePath() { - Curve.call( this ); + Curve.call(this); this.type = 'CurvePath'; @@ -36116,25 +36129,25 @@ } - CurvePath.prototype = Object.assign( Object.create( Curve.prototype ), { + CurvePath.prototype = Object.assign(Object.create(Curve.prototype), { constructor: CurvePath, - add: function ( curve ) { + add: function (curve) { - this.curves.push( curve ); + this.curves.push(curve); }, closePath: function () { // Add a line curve if start and end of lines are not connected - var startPoint = this.curves[ 0 ].getPoint( 0 ); - var endPoint = this.curves[ this.curves.length - 1 ].getPoint( 1 ); + var startPoint = this.curves[0].getPoint(0); + var endPoint = this.curves[this.curves.length - 1].getPoint(1); - if ( ! startPoint.equals( endPoint ) ) { + if (!startPoint.equals(endPoint)) { - this.curves.push( new LineCurve( endPoint, startPoint ) ); + this.curves.push(new LineCurve(endPoint, startPoint)); } @@ -36149,7 +36162,7 @@ // 3. Get t for the curve // 4. Return curve.getPointAt(t') - getPoint: function ( t ) { + getPoint: function (t) { var d = t * this.getLength(); var curveLengths = this.getCurveLengths(); @@ -36157,21 +36170,21 @@ // To think about boundaries points. - while ( i < curveLengths.length ) { + while (i < curveLengths.length) { - if ( curveLengths[ i ] >= d ) { + if (curveLengths[i] >= d) { - var diff = curveLengths[ i ] - d; - var curve = this.curves[ i ]; + var diff = curveLengths[i] - d; + var curve = this.curves[i]; var segmentLength = curve.getLength(); var u = segmentLength === 0 ? 0 : 1 - diff / segmentLength; - return curve.getPointAt( u ); + return curve.getPointAt(u); } - i ++; + i++; } @@ -36188,7 +36201,7 @@ getLength: function () { var lens = this.getCurveLengths(); - return lens[ lens.length - 1 ]; + return lens[lens.length - 1]; }, @@ -36208,7 +36221,7 @@ // We use cache values if curves and cache array are same length - if ( this.cacheLengths && this.cacheLengths.length === this.curves.length ) { + if (this.cacheLengths && this.cacheLengths.length === this.curves.length) { return this.cacheLengths; @@ -36219,10 +36232,10 @@ var lengths = [], sums = 0; - for ( var i = 0, l = this.curves.length; i < l; i ++ ) { + for (var i = 0, l = this.curves.length; i < l; i++) { - sums += this.curves[ i ].getLength(); - lengths.push( sums ); + sums += this.curves[i].getLength(); + lengths.push(sums); } @@ -36232,21 +36245,21 @@ }, - getSpacedPoints: function ( divisions ) { + getSpacedPoints: function (divisions) { - if ( divisions === undefined ) divisions = 40; + if (divisions === undefined) divisions = 40; var points = []; - for ( var i = 0; i <= divisions; i ++ ) { + for (var i = 0; i <= divisions; i++) { - points.push( this.getPoint( i / divisions ) ); + points.push(this.getPoint(i / divisions)); } - if ( this.autoClose ) { + if (this.autoClose) { - points.push( points[ 0 ] ); + points.push(points[0]); } @@ -36254,38 +36267,38 @@ }, - getPoints: function ( divisions ) { + getPoints: function (divisions) { divisions = divisions || 12; var points = [], last; - for ( var i = 0, curves = this.curves; i < curves.length; i ++ ) { + for (var i = 0, curves = this.curves; i < curves.length; i++) { - var curve = curves[ i ]; - var resolution = ( curve && curve.isEllipseCurve ) ? divisions * 2 - : ( curve && ( curve.isLineCurve || curve.isLineCurve3 ) ) ? 1 - : ( curve && curve.isSplineCurve ) ? divisions * curve.points.length + var curve = curves[i]; + var resolution = (curve && curve.isEllipseCurve) ? divisions * 2 + : (curve && (curve.isLineCurve || curve.isLineCurve3)) ? 1 + : (curve && curve.isSplineCurve) ? divisions * curve.points.length : divisions; - var pts = curve.getPoints( resolution ); + var pts = curve.getPoints(resolution); - for ( var j = 0; j < pts.length; j ++ ) { + for (var j = 0; j < pts.length; j++) { - var point = pts[ j ]; + var point = pts[j]; - if ( last && last.equals( point ) ) continue; // ensures no consecutive points are duplicates + if (last && last.equals(point)) continue; // ensures no consecutive points are duplicates - points.push( point ); + points.push(point); last = point; } } - if ( this.autoClose && points.length > 1 && ! points[ points.length - 1 ].equals( points[ 0 ] ) ) { + if (this.autoClose && points.length > 1 && !points[points.length - 1].equals(points[0])) { - points.push( points[ 0 ] ); + points.push(points[0]); } @@ -36293,17 +36306,17 @@ }, - copy: function ( source ) { + copy: function (source) { - Curve.prototype.copy.call( this, source ); + Curve.prototype.copy.call(this, source); this.curves = []; - for ( var i = 0, l = source.curves.length; i < l; i ++ ) { + for (var i = 0, l = source.curves.length; i < l; i++) { - var curve = source.curves[ i ]; + var curve = source.curves[i]; - this.curves.push( curve.clone() ); + this.curves.push(curve.clone()); } @@ -36315,15 +36328,15 @@ toJSON: function () { - var data = Curve.prototype.toJSON.call( this ); + var data = Curve.prototype.toJSON.call(this); data.autoClose = this.autoClose; data.curves = []; - for ( var i = 0, l = this.curves.length; i < l; i ++ ) { + for (var i = 0, l = this.curves.length; i < l; i++) { - var curve = this.curves[ i ]; - data.curves.push( curve.toJSON() ); + var curve = this.curves[i]; + data.curves.push(curve.toJSON()); } @@ -36331,17 +36344,17 @@ }, - fromJSON: function ( json ) { + fromJSON: function (json) { - Curve.prototype.fromJSON.call( this, json ); + Curve.prototype.fromJSON.call(this, json); this.autoClose = json.autoClose; this.curves = []; - for ( var i = 0, l = json.curves.length; i < l; i ++ ) { + for (var i = 0, l = json.curves.length; i < l; i++) { - var curve = json.curves[ i ]; - this.curves.push( new Curves[ curve.type ]().fromJSON( curve ) ); + var curve = json.curves[i]; + this.curves.push(new Curves[curve.type]().fromJSON(curve)); } @@ -36349,154 +36362,154 @@ } - } ); + }); /** * @author zz85 / http://www.lab4games.net/zz85/blog * Creates free form 2d path using series of points, lines or curves. **/ - function Path( points ) { + function Path(points) { - CurvePath.call( this ); + CurvePath.call(this); this.type = 'Path'; this.currentPoint = new Vector2(); - if ( points ) { + if (points) { - this.setFromPoints( points ); + this.setFromPoints(points); } } - Path.prototype = Object.assign( Object.create( CurvePath.prototype ), { + Path.prototype = Object.assign(Object.create(CurvePath.prototype), { constructor: Path, - setFromPoints: function ( points ) { + setFromPoints: function (points) { - this.moveTo( points[ 0 ].x, points[ 0 ].y ); + this.moveTo(points[0].x, points[0].y); - for ( var i = 1, l = points.length; i < l; i ++ ) { + for (var i = 1, l = points.length; i < l; i++) { - this.lineTo( points[ i ].x, points[ i ].y ); + this.lineTo(points[i].x, points[i].y); } }, - moveTo: function ( x, y ) { + moveTo: function (x, y) { - this.currentPoint.set( x, y ); // TODO consider referencing vectors instead of copying? + this.currentPoint.set(x, y); // TODO consider referencing vectors instead of copying? }, - lineTo: function ( x, y ) { + lineTo: function (x, y) { - var curve = new LineCurve( this.currentPoint.clone(), new Vector2( x, y ) ); - this.curves.push( curve ); + var curve = new LineCurve(this.currentPoint.clone(), new Vector2(x, y)); + this.curves.push(curve); - this.currentPoint.set( x, y ); + this.currentPoint.set(x, y); }, - quadraticCurveTo: function ( aCPx, aCPy, aX, aY ) { + quadraticCurveTo: function (aCPx, aCPy, aX, aY) { var curve = new QuadraticBezierCurve( this.currentPoint.clone(), - new Vector2( aCPx, aCPy ), - new Vector2( aX, aY ) + new Vector2(aCPx, aCPy), + new Vector2(aX, aY) ); - this.curves.push( curve ); + this.curves.push(curve); - this.currentPoint.set( aX, aY ); + this.currentPoint.set(aX, aY); }, - bezierCurveTo: function ( aCP1x, aCP1y, aCP2x, aCP2y, aX, aY ) { + bezierCurveTo: function (aCP1x, aCP1y, aCP2x, aCP2y, aX, aY) { var curve = new CubicBezierCurve( this.currentPoint.clone(), - new Vector2( aCP1x, aCP1y ), - new Vector2( aCP2x, aCP2y ), - new Vector2( aX, aY ) + new Vector2(aCP1x, aCP1y), + new Vector2(aCP2x, aCP2y), + new Vector2(aX, aY) ); - this.curves.push( curve ); + this.curves.push(curve); - this.currentPoint.set( aX, aY ); + this.currentPoint.set(aX, aY); }, - splineThru: function ( pts /*Array of Vector*/ ) { + splineThru: function (pts /*Array of Vector*/) { - var npts = [ this.currentPoint.clone() ].concat( pts ); + var npts = [this.currentPoint.clone()].concat(pts); - var curve = new SplineCurve( npts ); - this.curves.push( curve ); + var curve = new SplineCurve(npts); + this.curves.push(curve); - this.currentPoint.copy( pts[ pts.length - 1 ] ); + this.currentPoint.copy(pts[pts.length - 1]); }, - arc: function ( aX, aY, aRadius, aStartAngle, aEndAngle, aClockwise ) { + arc: function (aX, aY, aRadius, aStartAngle, aEndAngle, aClockwise) { var x0 = this.currentPoint.x; var y0 = this.currentPoint.y; - this.absarc( aX + x0, aY + y0, aRadius, - aStartAngle, aEndAngle, aClockwise ); + this.absarc(aX + x0, aY + y0, aRadius, + aStartAngle, aEndAngle, aClockwise); }, - absarc: function ( aX, aY, aRadius, aStartAngle, aEndAngle, aClockwise ) { + absarc: function (aX, aY, aRadius, aStartAngle, aEndAngle, aClockwise) { - this.absellipse( aX, aY, aRadius, aRadius, aStartAngle, aEndAngle, aClockwise ); + this.absellipse(aX, aY, aRadius, aRadius, aStartAngle, aEndAngle, aClockwise); }, - ellipse: function ( aX, aY, xRadius, yRadius, aStartAngle, aEndAngle, aClockwise, aRotation ) { + ellipse: function (aX, aY, xRadius, yRadius, aStartAngle, aEndAngle, aClockwise, aRotation) { var x0 = this.currentPoint.x; var y0 = this.currentPoint.y; - this.absellipse( aX + x0, aY + y0, xRadius, yRadius, aStartAngle, aEndAngle, aClockwise, aRotation ); + this.absellipse(aX + x0, aY + y0, xRadius, yRadius, aStartAngle, aEndAngle, aClockwise, aRotation); }, - absellipse: function ( aX, aY, xRadius, yRadius, aStartAngle, aEndAngle, aClockwise, aRotation ) { + absellipse: function (aX, aY, xRadius, yRadius, aStartAngle, aEndAngle, aClockwise, aRotation) { - var curve = new EllipseCurve( aX, aY, xRadius, yRadius, aStartAngle, aEndAngle, aClockwise, aRotation ); + var curve = new EllipseCurve(aX, aY, xRadius, yRadius, aStartAngle, aEndAngle, aClockwise, aRotation); - if ( this.curves.length > 0 ) { + if (this.curves.length > 0) { // if a previous curve is present, attempt to join - var firstPoint = curve.getPoint( 0 ); + var firstPoint = curve.getPoint(0); - if ( ! firstPoint.equals( this.currentPoint ) ) { + if (!firstPoint.equals(this.currentPoint)) { - this.lineTo( firstPoint.x, firstPoint.y ); + this.lineTo(firstPoint.x, firstPoint.y); } } - this.curves.push( curve ); + this.curves.push(curve); - var lastPoint = curve.getPoint( 1 ); - this.currentPoint.copy( lastPoint ); + var lastPoint = curve.getPoint(1); + this.currentPoint.copy(lastPoint); }, - copy: function ( source ) { + copy: function (source) { - CurvePath.prototype.copy.call( this, source ); + CurvePath.prototype.copy.call(this, source); - this.currentPoint.copy( source.currentPoint ); + this.currentPoint.copy(source.currentPoint); return this; @@ -36504,7 +36517,7 @@ toJSON: function () { - var data = CurvePath.prototype.toJSON.call( this ); + var data = CurvePath.prototype.toJSON.call(this); data.currentPoint = this.currentPoint.toArray(); @@ -36512,17 +36525,17 @@ }, - fromJSON: function ( json ) { + fromJSON: function (json) { - CurvePath.prototype.fromJSON.call( this, json ); + CurvePath.prototype.fromJSON.call(this, json); - this.currentPoint.fromArray( json.currentPoint ); + this.currentPoint.fromArray(json.currentPoint); return this; } - } ); + }); /** * @author zz85 / http://www.lab4games.net/zz85/blog @@ -36535,9 +36548,9 @@ // STEP 3a - Extract points from each shape, turn to vertices // STEP 3b - Triangulate each shape, add faces. - function Shape( points ) { + function Shape(points) { - Path.call( this, points ); + Path.call(this, points); this.uuid = _Math.generateUUID(); @@ -36547,17 +36560,17 @@ } - Shape.prototype = Object.assign( Object.create( Path.prototype ), { + Shape.prototype = Object.assign(Object.create(Path.prototype), { constructor: Shape, - getPointsHoles: function ( divisions ) { + getPointsHoles: function (divisions) { var holesPts = []; - for ( var i = 0, l = this.holes.length; i < l; i ++ ) { + for (var i = 0, l = this.holes.length; i < l; i++) { - holesPts[ i ] = this.holes[ i ].getPoints( divisions ); + holesPts[i] = this.holes[i].getPoints(divisions); } @@ -36567,28 +36580,28 @@ // get points of shape and holes (keypoints based on segments parameter) - extractPoints: function ( divisions ) { + extractPoints: function (divisions) { return { - shape: this.getPoints( divisions ), - holes: this.getPointsHoles( divisions ) + shape: this.getPoints(divisions), + holes: this.getPointsHoles(divisions) }; }, - copy: function ( source ) { + copy: function (source) { - Path.prototype.copy.call( this, source ); + Path.prototype.copy.call(this, source); this.holes = []; - for ( var i = 0, l = source.holes.length; i < l; i ++ ) { + for (var i = 0, l = source.holes.length; i < l; i++) { - var hole = source.holes[ i ]; + var hole = source.holes[i]; - this.holes.push( hole.clone() ); + this.holes.push(hole.clone()); } @@ -36598,15 +36611,15 @@ toJSON: function () { - var data = Path.prototype.toJSON.call( this ); + var data = Path.prototype.toJSON.call(this); data.uuid = this.uuid; data.holes = []; - for ( var i = 0, l = this.holes.length; i < l; i ++ ) { + for (var i = 0, l = this.holes.length; i < l; i++) { - var hole = this.holes[ i ]; - data.holes.push( hole.toJSON() ); + var hole = this.holes[i]; + data.holes.push(hole.toJSON()); } @@ -36614,17 +36627,17 @@ }, - fromJSON: function ( json ) { + fromJSON: function (json) { - Path.prototype.fromJSON.call( this, json ); + Path.prototype.fromJSON.call(this, json); this.uuid = json.uuid; this.holes = []; - for ( var i = 0, l = json.holes.length; i < l; i ++ ) { + for (var i = 0, l = json.holes.length; i < l; i++) { - var hole = json.holes[ i ]; - this.holes.push( new Path().fromJSON( hole ) ); + var hole = json.holes[i]; + this.holes.push(new Path().fromJSON(hole)); } @@ -36632,130 +36645,130 @@ } - } ); + }); /** * @author mrdoob / http://mrdoob.com/ * @author alteredq / http://alteredqualia.com/ */ - function Light( color, intensity ) { + function Light(color, intensity) { - Object3D.call( this ); + Object3D.call(this); this.type = 'Light'; - this.color = new Color( color ); + this.color = new Color(color); this.intensity = intensity !== undefined ? intensity : 1; this.receiveShadow = undefined; } - Light.prototype = Object.assign( Object.create( Object3D.prototype ), { + Light.prototype = Object.assign(Object.create(Object3D.prototype), { constructor: Light, isLight: true, - copy: function ( source ) { + copy: function (source) { - Object3D.prototype.copy.call( this, source ); + Object3D.prototype.copy.call(this, source); - this.color.copy( source.color ); + this.color.copy(source.color); this.intensity = source.intensity; return this; }, - toJSON: function ( meta ) { + toJSON: function (meta) { - var data = Object3D.prototype.toJSON.call( this, meta ); + var data = Object3D.prototype.toJSON.call(this, meta); data.object.color = this.color.getHex(); data.object.intensity = this.intensity; - if ( this.groundColor !== undefined ) data.object.groundColor = this.groundColor.getHex(); + if (this.groundColor !== undefined) data.object.groundColor = this.groundColor.getHex(); - if ( this.distance !== undefined ) data.object.distance = this.distance; - if ( this.angle !== undefined ) data.object.angle = this.angle; - if ( this.decay !== undefined ) data.object.decay = this.decay; - if ( this.penumbra !== undefined ) data.object.penumbra = this.penumbra; + if (this.distance !== undefined) data.object.distance = this.distance; + if (this.angle !== undefined) data.object.angle = this.angle; + if (this.decay !== undefined) data.object.decay = this.decay; + if (this.penumbra !== undefined) data.object.penumbra = this.penumbra; - if ( this.shadow !== undefined ) data.object.shadow = this.shadow.toJSON(); + if (this.shadow !== undefined) data.object.shadow = this.shadow.toJSON(); return data; } - } ); + }); /** * @author alteredq / http://alteredqualia.com/ */ - function HemisphereLight( skyColor, groundColor, intensity ) { + function HemisphereLight(skyColor, groundColor, intensity) { - Light.call( this, skyColor, intensity ); + Light.call(this, skyColor, intensity); this.type = 'HemisphereLight'; this.castShadow = undefined; - this.position.copy( Object3D.DefaultUp ); + this.position.copy(Object3D.DefaultUp); this.updateMatrix(); - this.groundColor = new Color( groundColor ); + this.groundColor = new Color(groundColor); } - HemisphereLight.prototype = Object.assign( Object.create( Light.prototype ), { + HemisphereLight.prototype = Object.assign(Object.create(Light.prototype), { constructor: HemisphereLight, isHemisphereLight: true, - copy: function ( source ) { + copy: function (source) { - Light.prototype.copy.call( this, source ); + Light.prototype.copy.call(this, source); - this.groundColor.copy( source.groundColor ); + this.groundColor.copy(source.groundColor); return this; } - } ); + }); /** * @author mrdoob / http://mrdoob.com/ */ - function LightShadow( camera ) { + function LightShadow(camera) { this.camera = camera; this.bias = 0; this.radius = 1; - this.mapSize = new Vector2( 512, 512 ); + this.mapSize = new Vector2(512, 512); this.map = null; this.matrix = new Matrix4(); } - Object.assign( LightShadow.prototype, { + Object.assign(LightShadow.prototype, { - copy: function ( source ) { + copy: function (source) { this.camera = source.camera.clone(); this.bias = source.bias; this.radius = source.radius; - this.mapSize.copy( source.mapSize ); + this.mapSize.copy(source.mapSize); return this; @@ -36763,7 +36776,7 @@ clone: function () { - return new this.constructor().copy( this ); + return new this.constructor().copy(this); }, @@ -36771,18 +36784,18 @@ var object = {}; - if ( this.bias !== 0 ) object.bias = this.bias; - if ( this.radius !== 1 ) object.radius = this.radius; - if ( this.mapSize.x !== 512 || this.mapSize.y !== 512 ) object.mapSize = this.mapSize.toArray(); + if (this.bias !== 0) object.bias = this.bias; + if (this.radius !== 1) object.radius = this.radius; + if (this.mapSize.x !== 512 || this.mapSize.y !== 512) object.mapSize = this.mapSize.toArray(); - object.camera = this.camera.toJSON( false ).object; + object.camera = this.camera.toJSON(false).object; delete object.camera.matrix; return object; } - } ); + }); /** * @author mrdoob / http://mrdoob.com/ @@ -36790,17 +36803,17 @@ function SpotLightShadow() { - LightShadow.call( this, new PerspectiveCamera( 50, 1, 0.5, 500 ) ); + LightShadow.call(this, new PerspectiveCamera(50, 1, 0.5, 500)); } - SpotLightShadow.prototype = Object.assign( Object.create( LightShadow.prototype ), { + SpotLightShadow.prototype = Object.assign(Object.create(LightShadow.prototype), { constructor: SpotLightShadow, isSpotLightShadow: true, - update: function ( light ) { + update: function (light) { var camera = this.camera; @@ -36808,7 +36821,7 @@ var aspect = this.mapSize.width / this.mapSize.height; var far = light.distance || camera.far; - if ( fov !== camera.fov || aspect !== camera.aspect || far !== camera.far ) { + if (fov !== camera.fov || aspect !== camera.aspect || far !== camera.far) { camera.fov = fov; camera.aspect = aspect; @@ -36819,24 +36832,24 @@ } - } ); + }); /** * @author alteredq / http://alteredqualia.com/ */ - function SpotLight( color, intensity, distance, angle, penumbra, decay ) { + function SpotLight(color, intensity, distance, angle, penumbra, decay) { - Light.call( this, color, intensity ); + Light.call(this, color, intensity); this.type = 'SpotLight'; - this.position.copy( Object3D.DefaultUp ); + this.position.copy(Object3D.DefaultUp); this.updateMatrix(); this.target = new Object3D(); - Object.defineProperty( this, 'power', { + Object.defineProperty(this, 'power', { get: function () { // intensity = power per solid angle. @@ -36844,33 +36857,33 @@ return this.intensity * Math.PI; }, - set: function ( power ) { + set: function (power) { // intensity = power per solid angle. // ref: equation (17) from https://seblagarde.files.wordpress.com/2015/07/course_notes_moving_frostbite_to_pbr_v32.pdf this.intensity = power / Math.PI; } - } ); + }); - this.distance = ( distance !== undefined ) ? distance : 0; - this.angle = ( angle !== undefined ) ? angle : Math.PI / 3; - this.penumbra = ( penumbra !== undefined ) ? penumbra : 0; - this.decay = ( decay !== undefined ) ? decay : 1; // for physically correct lights, should be 2. + this.distance = (distance !== undefined) ? distance : 0; + this.angle = (angle !== undefined) ? angle : Math.PI / 3; + this.penumbra = (penumbra !== undefined) ? penumbra : 0; + this.decay = (decay !== undefined) ? decay : 1; // for physically correct lights, should be 2. this.shadow = new SpotLightShadow(); } - SpotLight.prototype = Object.assign( Object.create( Light.prototype ), { + SpotLight.prototype = Object.assign(Object.create(Light.prototype), { constructor: SpotLight, isSpotLight: true, - copy: function ( source ) { + copy: function (source) { - Light.prototype.copy.call( this, source ); + Light.prototype.copy.call(this, source); this.distance = source.distance; this.angle = source.angle; @@ -36885,20 +36898,20 @@ } - } ); + }); /** * @author mrdoob / http://mrdoob.com/ */ - function PointLight( color, intensity, distance, decay ) { + function PointLight(color, intensity, distance, decay) { - Light.call( this, color, intensity ); + Light.call(this, color, intensity); this.type = 'PointLight'; - Object.defineProperty( this, 'power', { + Object.defineProperty(this, 'power', { get: function () { // intensity = power per solid angle. @@ -36906,31 +36919,31 @@ return this.intensity * 4 * Math.PI; }, - set: function ( power ) { + set: function (power) { // intensity = power per solid angle. // ref: equation (15) from https://seblagarde.files.wordpress.com/2015/07/course_notes_moving_frostbite_to_pbr_v32.pdf - this.intensity = power / ( 4 * Math.PI ); + this.intensity = power / (4 * Math.PI); } - } ); + }); - this.distance = ( distance !== undefined ) ? distance : 0; - this.decay = ( decay !== undefined ) ? decay : 1; // for physically correct lights, should be 2. + this.distance = (distance !== undefined) ? distance : 0; + this.decay = (decay !== undefined) ? decay : 1; // for physically correct lights, should be 2. - this.shadow = new LightShadow( new PerspectiveCamera( 90, 1, 0.5, 500 ) ); + this.shadow = new LightShadow(new PerspectiveCamera(90, 1, 0.5, 500)); } - PointLight.prototype = Object.assign( Object.create( Light.prototype ), { + PointLight.prototype = Object.assign(Object.create(Light.prototype), { constructor: PointLight, isPointLight: true, - copy: function ( source ) { + copy: function (source) { - Light.prototype.copy.call( this, source ); + Light.prototype.copy.call(this, source); this.distance = source.distance; this.decay = source.decay; @@ -36941,43 +36954,43 @@ } - } ); + }); /** * @author alteredq / http://alteredqualia.com/ * @author arose / http://github.com/arose */ - function OrthographicCamera( left, right, top, bottom, near, far ) { + function OrthographicCamera(left, right, top, bottom, near, far) { - Camera.call( this ); + Camera.call(this); this.type = 'OrthographicCamera'; this.zoom = 1; this.view = null; - this.left = ( left !== undefined ) ? left : - 1; - this.right = ( right !== undefined ) ? right : 1; - this.top = ( top !== undefined ) ? top : 1; - this.bottom = ( bottom !== undefined ) ? bottom : - 1; + this.left = (left !== undefined) ? left : - 1; + this.right = (right !== undefined) ? right : 1; + this.top = (top !== undefined) ? top : 1; + this.bottom = (bottom !== undefined) ? bottom : - 1; - this.near = ( near !== undefined ) ? near : 0.1; - this.far = ( far !== undefined ) ? far : 2000; + this.near = (near !== undefined) ? near : 0.1; + this.far = (far !== undefined) ? far : 2000; this.updateProjectionMatrix(); } - OrthographicCamera.prototype = Object.assign( Object.create( Camera.prototype ), { + OrthographicCamera.prototype = Object.assign(Object.create(Camera.prototype), { constructor: OrthographicCamera, isOrthographicCamera: true, - copy: function ( source, recursive ) { + copy: function (source, recursive) { - Camera.prototype.copy.call( this, source, recursive ); + Camera.prototype.copy.call(this, source, recursive); this.left = source.left; this.right = source.right; @@ -36987,15 +37000,15 @@ this.far = source.far; this.zoom = source.zoom; - this.view = source.view === null ? null : Object.assign( {}, source.view ); + this.view = source.view === null ? null : Object.assign({}, source.view); return this; }, - setViewOffset: function ( fullWidth, fullHeight, x, y, width, height ) { + setViewOffset: function (fullWidth, fullHeight, x, y, width, height) { - if ( this.view === null ) { + if (this.view === null) { this.view = { enabled: true, @@ -37023,7 +37036,7 @@ clearViewOffset: function () { - if ( this.view !== null ) { + if (this.view !== null) { this.view.enabled = false; @@ -37035,39 +37048,39 @@ updateProjectionMatrix: function () { - var dx = ( this.right - this.left ) / ( 2 * this.zoom ); - var dy = ( this.top - this.bottom ) / ( 2 * this.zoom ); - var cx = ( this.right + this.left ) / 2; - var cy = ( this.top + this.bottom ) / 2; + var dx = (this.right - this.left) / (2 * this.zoom); + var dy = (this.top - this.bottom) / (2 * this.zoom); + var cx = (this.right + this.left) / 2; + var cy = (this.top + this.bottom) / 2; var left = cx - dx; var right = cx + dx; var top = cy + dy; var bottom = cy - dy; - if ( this.view !== null && this.view.enabled ) { + if (this.view !== null && this.view.enabled) { - var zoomW = this.zoom / ( this.view.width / this.view.fullWidth ); - var zoomH = this.zoom / ( this.view.height / this.view.fullHeight ); - var scaleW = ( this.right - this.left ) / this.view.width; - var scaleH = ( this.top - this.bottom ) / this.view.height; + var zoomW = this.zoom / (this.view.width / this.view.fullWidth); + var zoomH = this.zoom / (this.view.height / this.view.fullHeight); + var scaleW = (this.right - this.left) / this.view.width; + var scaleH = (this.top - this.bottom) / this.view.height; - left += scaleW * ( this.view.offsetX / zoomW ); - right = left + scaleW * ( this.view.width / zoomW ); - top -= scaleH * ( this.view.offsetY / zoomH ); - bottom = top - scaleH * ( this.view.height / zoomH ); + left += scaleW * (this.view.offsetX / zoomW); + right = left + scaleW * (this.view.width / zoomW); + top -= scaleH * (this.view.offsetY / zoomH); + bottom = top - scaleH * (this.view.height / zoomH); } - this.projectionMatrix.makeOrthographic( left, right, top, bottom, this.near, this.far ); + this.projectionMatrix.makeOrthographic(left, right, top, bottom, this.near, this.far); - this.projectionMatrixInverse.getInverse( this.projectionMatrix ); + this.projectionMatrixInverse.getInverse(this.projectionMatrix); }, - toJSON: function ( meta ) { + toJSON: function (meta) { - var data = Object3D.prototype.toJSON.call( this, meta ); + var data = Object3D.prototype.toJSON.call(this, meta); data.object.zoom = this.zoom; data.object.left = this.left; @@ -37077,42 +37090,42 @@ data.object.near = this.near; data.object.far = this.far; - if ( this.view !== null ) data.object.view = Object.assign( {}, this.view ); + if (this.view !== null) data.object.view = Object.assign({}, this.view); return data; } - } ); + }); /** * @author mrdoob / http://mrdoob.com/ */ - function DirectionalLightShadow( ) { + function DirectionalLightShadow() { - LightShadow.call( this, new OrthographicCamera( - 5, 5, 5, - 5, 0.5, 500 ) ); + LightShadow.call(this, new OrthographicCamera(- 5, 5, 5, - 5, 0.5, 500)); } - DirectionalLightShadow.prototype = Object.assign( Object.create( LightShadow.prototype ), { + DirectionalLightShadow.prototype = Object.assign(Object.create(LightShadow.prototype), { constructor: DirectionalLightShadow - } ); + }); /** * @author mrdoob / http://mrdoob.com/ * @author alteredq / http://alteredqualia.com/ */ - function DirectionalLight( color, intensity ) { + function DirectionalLight(color, intensity) { - Light.call( this, color, intensity ); + Light.call(this, color, intensity); this.type = 'DirectionalLight'; - this.position.copy( Object3D.DefaultUp ); + this.position.copy(Object3D.DefaultUp); this.updateMatrix(); this.target = new Object3D(); @@ -37121,15 +37134,15 @@ } - DirectionalLight.prototype = Object.assign( Object.create( Light.prototype ), { + DirectionalLight.prototype = Object.assign(Object.create(Light.prototype), { constructor: DirectionalLight, isDirectionalLight: true, - copy: function ( source ) { + copy: function (source) { - Light.prototype.copy.call( this, source ); + Light.prototype.copy.call(this, source); this.target = source.target.clone(); @@ -37139,15 +37152,15 @@ } - } ); + }); /** * @author mrdoob / http://mrdoob.com/ */ - function AmbientLight( color, intensity ) { + function AmbientLight(color, intensity) { - Light.call( this, color, intensity ); + Light.call(this, color, intensity); this.type = 'AmbientLight'; @@ -37155,38 +37168,38 @@ } - AmbientLight.prototype = Object.assign( Object.create( Light.prototype ), { + AmbientLight.prototype = Object.assign(Object.create(Light.prototype), { constructor: AmbientLight, isAmbientLight: true - } ); + }); /** * @author abelnation / http://github.com/abelnation */ - function RectAreaLight( color, intensity, width, height ) { + function RectAreaLight(color, intensity, width, height) { - Light.call( this, color, intensity ); + Light.call(this, color, intensity); this.type = 'RectAreaLight'; - this.width = ( width !== undefined ) ? width : 10; - this.height = ( height !== undefined ) ? height : 10; + this.width = (width !== undefined) ? width : 10; + this.height = (height !== undefined) ? height : 10; } - RectAreaLight.prototype = Object.assign( Object.create( Light.prototype ), { + RectAreaLight.prototype = Object.assign(Object.create(Light.prototype), { constructor: RectAreaLight, isRectAreaLight: true, - copy: function ( source ) { + copy: function (source) { - Light.prototype.copy.call( this, source ); + Light.prototype.copy.call(this, source); this.width = source.width; this.height = source.height; @@ -37195,9 +37208,9 @@ }, - toJSON: function ( meta ) { + toJSON: function (meta) { - var data = Light.prototype.toJSON.call( this, meta ); + var data = Light.prototype.toJSON.call(this, meta); data.object.width = this.width; data.object.height = this.height; @@ -37206,136 +37219,136 @@ } - } ); + }); /** * @author mrdoob / http://mrdoob.com/ */ - function MaterialLoader( manager ) { + function MaterialLoader(manager) { - this.manager = ( manager !== undefined ) ? manager : DefaultLoadingManager; + this.manager = (manager !== undefined) ? manager : DefaultLoadingManager; this.textures = {}; } - Object.assign( MaterialLoader.prototype, { + Object.assign(MaterialLoader.prototype, { - load: function ( url, onLoad, onProgress, onError ) { + load: function (url, onLoad, onProgress, onError) { var scope = this; - var loader = new FileLoader( scope.manager ); - loader.setPath( scope.path ); - loader.load( url, function ( text ) { + var loader = new FileLoader(scope.manager); + loader.setPath(scope.path); + loader.load(url, function (text) { - onLoad( scope.parse( JSON.parse( text ) ) ); + onLoad(scope.parse(JSON.parse(text))); - }, onProgress, onError ); + }, onProgress, onError); }, - parse: function ( json ) { + parse: function (json) { var textures = this.textures; - function getTexture( name ) { + function getTexture(name) { - if ( textures[ name ] === undefined ) { + if (textures[name] === undefined) { - console.warn( 'THREE.MaterialLoader: Undefined texture', name ); + console.warn('THREE.MaterialLoader: Undefined texture', name); } - return textures[ name ]; + return textures[name]; } - var material = new Materials[ json.type ](); + var material = new Materials[json.type](); - if ( json.uuid !== undefined ) material.uuid = json.uuid; - if ( json.name !== undefined ) material.name = json.name; - if ( json.color !== undefined ) material.color.setHex( json.color ); - if ( json.roughness !== undefined ) material.roughness = json.roughness; - if ( json.metalness !== undefined ) material.metalness = json.metalness; - if ( json.emissive !== undefined ) material.emissive.setHex( json.emissive ); - if ( json.specular !== undefined ) material.specular.setHex( json.specular ); - if ( json.shininess !== undefined ) material.shininess = json.shininess; - if ( json.clearCoat !== undefined ) material.clearCoat = json.clearCoat; - if ( json.clearCoatRoughness !== undefined ) material.clearCoatRoughness = json.clearCoatRoughness; - if ( json.vertexColors !== undefined ) material.vertexColors = json.vertexColors; - if ( json.fog !== undefined ) material.fog = json.fog; - if ( json.flatShading !== undefined ) material.flatShading = json.flatShading; - if ( json.blending !== undefined ) material.blending = json.blending; - if ( json.combine !== undefined ) material.combine = json.combine; - if ( json.side !== undefined ) material.side = json.side; - if ( json.opacity !== undefined ) material.opacity = json.opacity; - if ( json.transparent !== undefined ) material.transparent = json.transparent; - if ( json.alphaTest !== undefined ) material.alphaTest = json.alphaTest; - if ( json.depthTest !== undefined ) material.depthTest = json.depthTest; - if ( json.depthWrite !== undefined ) material.depthWrite = json.depthWrite; - if ( json.colorWrite !== undefined ) material.colorWrite = json.colorWrite; - if ( json.wireframe !== undefined ) material.wireframe = json.wireframe; - if ( json.wireframeLinewidth !== undefined ) material.wireframeLinewidth = json.wireframeLinewidth; - if ( json.wireframeLinecap !== undefined ) material.wireframeLinecap = json.wireframeLinecap; - if ( json.wireframeLinejoin !== undefined ) material.wireframeLinejoin = json.wireframeLinejoin; + if (json.uuid !== undefined) material.uuid = json.uuid; + if (json.name !== undefined) material.name = json.name; + if (json.color !== undefined) material.color.setHex(json.color); + if (json.roughness !== undefined) material.roughness = json.roughness; + if (json.metalness !== undefined) material.metalness = json.metalness; + if (json.emissive !== undefined) material.emissive.setHex(json.emissive); + if (json.specular !== undefined) material.specular.setHex(json.specular); + if (json.shininess !== undefined) material.shininess = json.shininess; + if (json.clearCoat !== undefined) material.clearCoat = json.clearCoat; + if (json.clearCoatRoughness !== undefined) material.clearCoatRoughness = json.clearCoatRoughness; + if (json.vertexColors !== undefined) material.vertexColors = json.vertexColors; + if (json.fog !== undefined) material.fog = json.fog; + if (json.flatShading !== undefined) material.flatShading = json.flatShading; + if (json.blending !== undefined) material.blending = json.blending; + if (json.combine !== undefined) material.combine = json.combine; + if (json.side !== undefined) material.side = json.side; + if (json.opacity !== undefined) material.opacity = json.opacity; + if (json.transparent !== undefined) material.transparent = json.transparent; + if (json.alphaTest !== undefined) material.alphaTest = json.alphaTest; + if (json.depthTest !== undefined) material.depthTest = json.depthTest; + if (json.depthWrite !== undefined) material.depthWrite = json.depthWrite; + if (json.colorWrite !== undefined) material.colorWrite = json.colorWrite; + if (json.wireframe !== undefined) material.wireframe = json.wireframe; + if (json.wireframeLinewidth !== undefined) material.wireframeLinewidth = json.wireframeLinewidth; + if (json.wireframeLinecap !== undefined) material.wireframeLinecap = json.wireframeLinecap; + if (json.wireframeLinejoin !== undefined) material.wireframeLinejoin = json.wireframeLinejoin; - if ( json.rotation !== undefined ) material.rotation = json.rotation; + if (json.rotation !== undefined) material.rotation = json.rotation; - if ( json.linewidth !== 1 ) material.linewidth = json.linewidth; - if ( json.dashSize !== undefined ) material.dashSize = json.dashSize; - if ( json.gapSize !== undefined ) material.gapSize = json.gapSize; - if ( json.scale !== undefined ) material.scale = json.scale; + if (json.linewidth !== 1) material.linewidth = json.linewidth; + if (json.dashSize !== undefined) material.dashSize = json.dashSize; + if (json.gapSize !== undefined) material.gapSize = json.gapSize; + if (json.scale !== undefined) material.scale = json.scale; - if ( json.polygonOffset !== undefined ) material.polygonOffset = json.polygonOffset; - if ( json.polygonOffsetFactor !== undefined ) material.polygonOffsetFactor = json.polygonOffsetFactor; - if ( json.polygonOffsetUnits !== undefined ) material.polygonOffsetUnits = json.polygonOffsetUnits; + if (json.polygonOffset !== undefined) material.polygonOffset = json.polygonOffset; + if (json.polygonOffsetFactor !== undefined) material.polygonOffsetFactor = json.polygonOffsetFactor; + if (json.polygonOffsetUnits !== undefined) material.polygonOffsetUnits = json.polygonOffsetUnits; - if ( json.skinning !== undefined ) material.skinning = json.skinning; - if ( json.morphTargets !== undefined ) material.morphTargets = json.morphTargets; - if ( json.dithering !== undefined ) material.dithering = json.dithering; + if (json.skinning !== undefined) material.skinning = json.skinning; + if (json.morphTargets !== undefined) material.morphTargets = json.morphTargets; + if (json.dithering !== undefined) material.dithering = json.dithering; - if ( json.visible !== undefined ) material.visible = json.visible; - if ( json.userData !== undefined ) material.userData = json.userData; + if (json.visible !== undefined) material.visible = json.visible; + if (json.userData !== undefined) material.userData = json.userData; // Shader Material - if ( json.uniforms !== undefined ) { + if (json.uniforms !== undefined) { - for ( var name in json.uniforms ) { + for (var name in json.uniforms) { - var uniform = json.uniforms[ name ]; + var uniform = json.uniforms[name]; - material.uniforms[ name ] = {}; + material.uniforms[name] = {}; - switch ( uniform.type ) { + switch (uniform.type) { case 't': - material.uniforms[ name ].value = getTexture( uniform.value ); + material.uniforms[name].value = getTexture(uniform.value); break; case 'c': - material.uniforms[ name ].value = new Color().setHex( uniform.value ); + material.uniforms[name].value = new Color().setHex(uniform.value); break; case 'v2': - material.uniforms[ name ].value = new Vector2().fromArray( uniform.value ); + material.uniforms[name].value = new Vector2().fromArray(uniform.value); break; case 'v3': - material.uniforms[ name ].value = new Vector3().fromArray( uniform.value ); + material.uniforms[name].value = new Vector3().fromArray(uniform.value); break; case 'v4': - material.uniforms[ name ].value = new Vector4().fromArray( uniform.value ); + material.uniforms[name].value = new Vector4().fromArray(uniform.value); break; case 'm4': - material.uniforms[ name ].value = new Matrix4().fromArray( uniform.value ); + material.uniforms[name].value = new Matrix4().fromArray(uniform.value); break; default: - material.uniforms[ name ].value = uniform.value; + material.uniforms[name].value = uniform.value; } @@ -37343,95 +37356,95 @@ } - if ( json.defines !== undefined ) material.defines = json.defines; - if ( json.vertexShader !== undefined ) material.vertexShader = json.vertexShader; - if ( json.fragmentShader !== undefined ) material.fragmentShader = json.fragmentShader; + if (json.defines !== undefined) material.defines = json.defines; + if (json.vertexShader !== undefined) material.vertexShader = json.vertexShader; + if (json.fragmentShader !== undefined) material.fragmentShader = json.fragmentShader; // Deprecated - if ( json.shading !== undefined ) material.flatShading = json.shading === 1; // THREE.FlatShading + if (json.shading !== undefined) material.flatShading = json.shading === 1; // THREE.FlatShading // for PointsMaterial - if ( json.size !== undefined ) material.size = json.size; - if ( json.sizeAttenuation !== undefined ) material.sizeAttenuation = json.sizeAttenuation; + if (json.size !== undefined) material.size = json.size; + if (json.sizeAttenuation !== undefined) material.sizeAttenuation = json.sizeAttenuation; // maps - if ( json.map !== undefined ) material.map = getTexture( json.map ); + if (json.map !== undefined) material.map = getTexture(json.map); - if ( json.alphaMap !== undefined ) { + if (json.alphaMap !== undefined) { - material.alphaMap = getTexture( json.alphaMap ); + material.alphaMap = getTexture(json.alphaMap); material.transparent = true; } - if ( json.bumpMap !== undefined ) material.bumpMap = getTexture( json.bumpMap ); - if ( json.bumpScale !== undefined ) material.bumpScale = json.bumpScale; + if (json.bumpMap !== undefined) material.bumpMap = getTexture(json.bumpMap); + if (json.bumpScale !== undefined) material.bumpScale = json.bumpScale; - if ( json.normalMap !== undefined ) material.normalMap = getTexture( json.normalMap ); - if ( json.normalMapType !== undefined ) material.normalMapType = json.normalMapType; - if ( json.normalScale !== undefined ) { + if (json.normalMap !== undefined) material.normalMap = getTexture(json.normalMap); + if (json.normalMapType !== undefined) material.normalMapType = json.normalMapType; + if (json.normalScale !== undefined) { var normalScale = json.normalScale; - if ( Array.isArray( normalScale ) === false ) { + if (Array.isArray(normalScale) === false) { // Blender exporter used to export a scalar. See #7459 - normalScale = [ normalScale, normalScale ]; + normalScale = [normalScale, normalScale]; } - material.normalScale = new Vector2().fromArray( normalScale ); + material.normalScale = new Vector2().fromArray(normalScale); } - if ( json.displacementMap !== undefined ) material.displacementMap = getTexture( json.displacementMap ); - if ( json.displacementScale !== undefined ) material.displacementScale = json.displacementScale; - if ( json.displacementBias !== undefined ) material.displacementBias = json.displacementBias; + if (json.displacementMap !== undefined) material.displacementMap = getTexture(json.displacementMap); + if (json.displacementScale !== undefined) material.displacementScale = json.displacementScale; + if (json.displacementBias !== undefined) material.displacementBias = json.displacementBias; - if ( json.roughnessMap !== undefined ) material.roughnessMap = getTexture( json.roughnessMap ); - if ( json.metalnessMap !== undefined ) material.metalnessMap = getTexture( json.metalnessMap ); + if (json.roughnessMap !== undefined) material.roughnessMap = getTexture(json.roughnessMap); + if (json.metalnessMap !== undefined) material.metalnessMap = getTexture(json.metalnessMap); - if ( json.emissiveMap !== undefined ) material.emissiveMap = getTexture( json.emissiveMap ); - if ( json.emissiveIntensity !== undefined ) material.emissiveIntensity = json.emissiveIntensity; + if (json.emissiveMap !== undefined) material.emissiveMap = getTexture(json.emissiveMap); + if (json.emissiveIntensity !== undefined) material.emissiveIntensity = json.emissiveIntensity; - if ( json.specularMap !== undefined ) material.specularMap = getTexture( json.specularMap ); + if (json.specularMap !== undefined) material.specularMap = getTexture(json.specularMap); - if ( json.envMap !== undefined ) material.envMap = getTexture( json.envMap ); - if ( json.envMapIntensity !== undefined ) material.envMapIntensity = json.envMapIntensity; + if (json.envMap !== undefined) material.envMap = getTexture(json.envMap); + if (json.envMapIntensity !== undefined) material.envMapIntensity = json.envMapIntensity; - if ( json.reflectivity !== undefined ) material.reflectivity = json.reflectivity; + if (json.reflectivity !== undefined) material.reflectivity = json.reflectivity; - if ( json.lightMap !== undefined ) material.lightMap = getTexture( json.lightMap ); - if ( json.lightMapIntensity !== undefined ) material.lightMapIntensity = json.lightMapIntensity; + if (json.lightMap !== undefined) material.lightMap = getTexture(json.lightMap); + if (json.lightMapIntensity !== undefined) material.lightMapIntensity = json.lightMapIntensity; - if ( json.aoMap !== undefined ) material.aoMap = getTexture( json.aoMap ); - if ( json.aoMapIntensity !== undefined ) material.aoMapIntensity = json.aoMapIntensity; + if (json.aoMap !== undefined) material.aoMap = getTexture(json.aoMap); + if (json.aoMapIntensity !== undefined) material.aoMapIntensity = json.aoMapIntensity; - if ( json.gradientMap !== undefined ) material.gradientMap = getTexture( json.gradientMap ); + if (json.gradientMap !== undefined) material.gradientMap = getTexture(json.gradientMap); return material; }, - setPath: function ( value ) { + setPath: function (value) { this.path = value; return this; }, - setTextures: function ( value ) { + setTextures: function (value) { this.textures = value; return this; } - } ); + }); /** * @author Don McCurdy / https://www.donmccurdy.com @@ -37439,11 +37452,11 @@ var LoaderUtils = { - decodeText: function ( array ) { + decodeText: function (array) { - if ( typeof TextDecoder !== 'undefined' ) { + if (typeof TextDecoder !== 'undefined') { - return new TextDecoder().decode( array ); + return new TextDecoder().decode(array); } @@ -37452,25 +37465,25 @@ var s = ''; - for ( var i = 0, il = array.length; i < il; i ++ ) { + for (var i = 0, il = array.length; i < il; i++) { // Implicitly assumes little-endian. - s += String.fromCharCode( array[ i ] ); + s += String.fromCharCode(array[i]); } // Merges multi-byte utf-8 characters. - return decodeURIComponent( escape( s ) ); + return decodeURIComponent(escape(s)); }, - extractUrlBase: function ( url ) { + extractUrlBase: function (url) { - var index = url.lastIndexOf( '/' ); + var index = url.lastIndexOf('/'); - if ( index === - 1 ) return './'; + if (index === - 1) return './'; - return url.substr( 0, index + 1 ); + return url.substr(0, index + 1); } @@ -37480,61 +37493,61 @@ * @author mrdoob / http://mrdoob.com/ */ - function BufferGeometryLoader( manager ) { + function BufferGeometryLoader(manager) { - this.manager = ( manager !== undefined ) ? manager : DefaultLoadingManager; + this.manager = (manager !== undefined) ? manager : DefaultLoadingManager; } - Object.assign( BufferGeometryLoader.prototype, { + Object.assign(BufferGeometryLoader.prototype, { - load: function ( url, onLoad, onProgress, onError ) { + load: function (url, onLoad, onProgress, onError) { var scope = this; - var loader = new FileLoader( scope.manager ); - loader.setPath( scope.path ); - loader.load( url, function ( text ) { + var loader = new FileLoader(scope.manager); + loader.setPath(scope.path); + loader.load(url, function (text) { - onLoad( scope.parse( JSON.parse( text ) ) ); + onLoad(scope.parse(JSON.parse(text))); - }, onProgress, onError ); + }, onProgress, onError); }, - parse: function ( json ) { + parse: function (json) { var geometry = new BufferGeometry(); var index = json.data.index; - if ( index !== undefined ) { + if (index !== undefined) { - var typedArray = new TYPED_ARRAYS[ index.type ]( index.array ); - geometry.setIndex( new BufferAttribute( typedArray, 1 ) ); + var typedArray = new TYPED_ARRAYS[index.type](index.array); + geometry.setIndex(new BufferAttribute(typedArray, 1)); } var attributes = json.data.attributes; - for ( var key in attributes ) { + for (var key in attributes) { - var attribute = attributes[ key ]; - var typedArray = new TYPED_ARRAYS[ attribute.type ]( attribute.array ); + var attribute = attributes[key]; + var typedArray = new TYPED_ARRAYS[attribute.type](attribute.array); - geometry.addAttribute( key, new BufferAttribute( typedArray, attribute.itemSize, attribute.normalized ) ); + geometry.addAttribute(key, new BufferAttribute(typedArray, attribute.itemSize, attribute.normalized)); } var groups = json.data.groups || json.data.drawcalls || json.data.offsets; - if ( groups !== undefined ) { + if (groups !== undefined) { - for ( var i = 0, n = groups.length; i !== n; ++ i ) { + for (var i = 0, n = groups.length; i !== n; ++i) { - var group = groups[ i ]; + var group = groups[i]; - geometry.addGroup( group.start, group.count, group.materialIndex ); + geometry.addGroup(group.start, group.count, group.materialIndex); } @@ -37542,17 +37555,17 @@ var boundingSphere = json.data.boundingSphere; - if ( boundingSphere !== undefined ) { + if (boundingSphere !== undefined) { var center = new Vector3(); - if ( boundingSphere.center !== undefined ) { + if (boundingSphere.center !== undefined) { - center.fromArray( boundingSphere.center ); + center.fromArray(boundingSphere.center); } - geometry.boundingSphere = new Sphere( center, boundingSphere.radius ); + geometry.boundingSphere = new Sphere(center, boundingSphere.radius); } @@ -37560,14 +37573,14 @@ }, - setPath: function ( value ) { + setPath: function (value) { this.path = value; return this; } - } ); + }); var TYPED_ARRAYS = { Int8Array: Int8Array, @@ -37586,28 +37599,28 @@ * @author alteredq / http://alteredqualia.com/ */ - function Loader() {} + function Loader() { } Loader.Handlers = { handlers: [], - add: function ( regex, loader ) { + add: function (regex, loader) { - this.handlers.push( regex, loader ); + this.handlers.push(regex, loader); }, - get: function ( file ) { + get: function (file) { var handlers = this.handlers; - for ( var i = 0, l = handlers.length; i < l; i += 2 ) { + for (var i = 0, l = handlers.length; i < l; i += 2) { - var regex = handlers[ i ]; - var loader = handlers[ i + 1 ]; + var regex = handlers[i]; + var loader = handlers[i + 1]; - if ( regex.test( file ) ) { + if (regex.test(file)) { return loader; @@ -37621,23 +37634,23 @@ }; - Object.assign( Loader.prototype, { + Object.assign(Loader.prototype, { crossOrigin: 'anonymous', - onLoadStart: function () {}, + onLoadStart: function () { }, - onLoadProgress: function () {}, + onLoadProgress: function () { }, - onLoadComplete: function () {}, + onLoadComplete: function () { }, - initMaterials: function ( materials, texturePath, crossOrigin ) { + initMaterials: function (materials, texturePath, crossOrigin) { var array = []; - for ( var i = 0; i < materials.length; ++ i ) { + for (var i = 0; i < materials.length; ++i) { - array[ i ] = this.createMaterial( materials[ i ], texturePath, crossOrigin ); + array[i] = this.createMaterial(materials[i], texturePath, crossOrigin); } @@ -37645,7 +37658,7 @@ }, - createMaterial: ( function () { + createMaterial: (function () { var BlendingMode = { NoBlending: NoBlending, @@ -37660,56 +37673,56 @@ var textureLoader = new TextureLoader(); var materialLoader = new MaterialLoader(); - return function createMaterial( m, texturePath, crossOrigin ) { + return function createMaterial(m, texturePath, crossOrigin) { // convert from old material format var textures = {}; - function loadTexture( path, repeat, offset, wrap, anisotropy ) { + function loadTexture(path, repeat, offset, wrap, anisotropy) { var fullPath = texturePath + path; - var loader = Loader.Handlers.get( fullPath ); + var loader = Loader.Handlers.get(fullPath); var texture; - if ( loader !== null ) { + if (loader !== null) { - texture = loader.load( fullPath ); + texture = loader.load(fullPath); } else { - textureLoader.setCrossOrigin( crossOrigin ); - texture = textureLoader.load( fullPath ); + textureLoader.setCrossOrigin(crossOrigin); + texture = textureLoader.load(fullPath); } - if ( repeat !== undefined ) { + if (repeat !== undefined) { - texture.repeat.fromArray( repeat ); + texture.repeat.fromArray(repeat); - if ( repeat[ 0 ] !== 1 ) texture.wrapS = RepeatWrapping; - if ( repeat[ 1 ] !== 1 ) texture.wrapT = RepeatWrapping; + if (repeat[0] !== 1) texture.wrapS = RepeatWrapping; + if (repeat[1] !== 1) texture.wrapT = RepeatWrapping; } - if ( offset !== undefined ) { + if (offset !== undefined) { - texture.offset.fromArray( offset ); + texture.offset.fromArray(offset); } - if ( wrap !== undefined ) { + if (wrap !== undefined) { - if ( wrap[ 0 ] === 'repeat' ) texture.wrapS = RepeatWrapping; - if ( wrap[ 0 ] === 'mirror' ) texture.wrapS = MirroredRepeatWrapping; + if (wrap[0] === 'repeat') texture.wrapS = RepeatWrapping; + if (wrap[0] === 'mirror') texture.wrapS = MirroredRepeatWrapping; - if ( wrap[ 1 ] === 'repeat' ) texture.wrapT = RepeatWrapping; - if ( wrap[ 1 ] === 'mirror' ) texture.wrapT = MirroredRepeatWrapping; + if (wrap[1] === 'repeat') texture.wrapT = RepeatWrapping; + if (wrap[1] === 'mirror') texture.wrapT = MirroredRepeatWrapping; } - if ( anisotropy !== undefined ) { + if (anisotropy !== undefined) { texture.anisotropy = anisotropy; @@ -37717,7 +37730,7 @@ var uuid = _Math.generateUUID(); - textures[ uuid ] = texture; + textures[uuid] = texture; return uuid; @@ -37730,11 +37743,11 @@ type: 'MeshLambertMaterial' }; - for ( var name in m ) { + for (var name in m) { - var value = m[ name ]; + var value = m[name]; - switch ( name ) { + switch (name) { case 'DbgColor': case 'DbgIndex': @@ -37745,31 +37758,31 @@ json.name = value; break; case 'blending': - json.blending = BlendingMode[ value ]; + json.blending = BlendingMode[value]; break; case 'colorAmbient': case 'mapAmbient': - console.warn( 'THREE.Loader.createMaterial:', name, 'is no longer supported.' ); + console.warn('THREE.Loader.createMaterial:', name, 'is no longer supported.'); break; case 'colorDiffuse': - json.color = color.fromArray( value ).getHex(); + json.color = color.fromArray(value).getHex(); break; case 'colorSpecular': - json.specular = color.fromArray( value ).getHex(); + json.specular = color.fromArray(value).getHex(); break; case 'colorEmissive': - json.emissive = color.fromArray( value ).getHex(); + json.emissive = color.fromArray(value).getHex(); break; case 'specularCoef': json.shininess = value; break; case 'shading': - if ( value.toLowerCase() === 'basic' ) json.type = 'MeshBasicMaterial'; - if ( value.toLowerCase() === 'phong' ) json.type = 'MeshPhongMaterial'; - if ( value.toLowerCase() === 'standard' ) json.type = 'MeshStandardMaterial'; + if (value.toLowerCase() === 'basic') json.type = 'MeshBasicMaterial'; + if (value.toLowerCase() === 'phong') json.type = 'MeshPhongMaterial'; + if (value.toLowerCase() === 'standard') json.type = 'MeshStandardMaterial'; break; case 'mapDiffuse': - json.map = loadTexture( value, m.mapDiffuseRepeat, m.mapDiffuseOffset, m.mapDiffuseWrap, m.mapDiffuseAnisotropy ); + json.map = loadTexture(value, m.mapDiffuseRepeat, m.mapDiffuseOffset, m.mapDiffuseWrap, m.mapDiffuseAnisotropy); break; case 'mapDiffuseRepeat': case 'mapDiffuseOffset': @@ -37777,7 +37790,7 @@ case 'mapDiffuseAnisotropy': break; case 'mapEmissive': - json.emissiveMap = loadTexture( value, m.mapEmissiveRepeat, m.mapEmissiveOffset, m.mapEmissiveWrap, m.mapEmissiveAnisotropy ); + json.emissiveMap = loadTexture(value, m.mapEmissiveRepeat, m.mapEmissiveOffset, m.mapEmissiveWrap, m.mapEmissiveAnisotropy); break; case 'mapEmissiveRepeat': case 'mapEmissiveOffset': @@ -37785,7 +37798,7 @@ case 'mapEmissiveAnisotropy': break; case 'mapLight': - json.lightMap = loadTexture( value, m.mapLightRepeat, m.mapLightOffset, m.mapLightWrap, m.mapLightAnisotropy ); + json.lightMap = loadTexture(value, m.mapLightRepeat, m.mapLightOffset, m.mapLightWrap, m.mapLightAnisotropy); break; case 'mapLightRepeat': case 'mapLightOffset': @@ -37793,7 +37806,7 @@ case 'mapLightAnisotropy': break; case 'mapAO': - json.aoMap = loadTexture( value, m.mapAORepeat, m.mapAOOffset, m.mapAOWrap, m.mapAOAnisotropy ); + json.aoMap = loadTexture(value, m.mapAORepeat, m.mapAOOffset, m.mapAOWrap, m.mapAOAnisotropy); break; case 'mapAORepeat': case 'mapAOOffset': @@ -37801,7 +37814,7 @@ case 'mapAOAnisotropy': break; case 'mapBump': - json.bumpMap = loadTexture( value, m.mapBumpRepeat, m.mapBumpOffset, m.mapBumpWrap, m.mapBumpAnisotropy ); + json.bumpMap = loadTexture(value, m.mapBumpRepeat, m.mapBumpOffset, m.mapBumpWrap, m.mapBumpAnisotropy); break; case 'mapBumpScale': json.bumpScale = value; @@ -37812,7 +37825,7 @@ case 'mapBumpAnisotropy': break; case 'mapNormal': - json.normalMap = loadTexture( value, m.mapNormalRepeat, m.mapNormalOffset, m.mapNormalWrap, m.mapNormalAnisotropy ); + json.normalMap = loadTexture(value, m.mapNormalRepeat, m.mapNormalOffset, m.mapNormalWrap, m.mapNormalAnisotropy); break; case 'mapNormalFactor': json.normalScale = value; @@ -37823,7 +37836,7 @@ case 'mapNormalAnisotropy': break; case 'mapSpecular': - json.specularMap = loadTexture( value, m.mapSpecularRepeat, m.mapSpecularOffset, m.mapSpecularWrap, m.mapSpecularAnisotropy ); + json.specularMap = loadTexture(value, m.mapSpecularRepeat, m.mapSpecularOffset, m.mapSpecularWrap, m.mapSpecularAnisotropy); break; case 'mapSpecularRepeat': case 'mapSpecularOffset': @@ -37831,7 +37844,7 @@ case 'mapSpecularAnisotropy': break; case 'mapMetalness': - json.metalnessMap = loadTexture( value, m.mapMetalnessRepeat, m.mapMetalnessOffset, m.mapMetalnessWrap, m.mapMetalnessAnisotropy ); + json.metalnessMap = loadTexture(value, m.mapMetalnessRepeat, m.mapMetalnessOffset, m.mapMetalnessWrap, m.mapMetalnessAnisotropy); break; case 'mapMetalnessRepeat': case 'mapMetalnessOffset': @@ -37839,7 +37852,7 @@ case 'mapMetalnessAnisotropy': break; case 'mapRoughness': - json.roughnessMap = loadTexture( value, m.mapRoughnessRepeat, m.mapRoughnessOffset, m.mapRoughnessWrap, m.mapRoughnessAnisotropy ); + json.roughnessMap = loadTexture(value, m.mapRoughnessRepeat, m.mapRoughnessOffset, m.mapRoughnessWrap, m.mapRoughnessAnisotropy); break; case 'mapRoughnessRepeat': case 'mapRoughnessOffset': @@ -37847,7 +37860,7 @@ case 'mapRoughnessAnisotropy': break; case 'mapAlpha': - json.alphaMap = loadTexture( value, m.mapAlphaRepeat, m.mapAlphaOffset, m.mapAlphaWrap, m.mapAlphaAnisotropy ); + json.alphaMap = loadTexture(value, m.mapAlphaRepeat, m.mapAlphaOffset, m.mapAlphaWrap, m.mapAlphaAnisotropy); break; case 'mapAlphaRepeat': case 'mapAlphaOffset': @@ -37861,7 +37874,7 @@ json.side = DoubleSide; break; case 'transparency': - console.warn( 'THREE.Loader.createMaterial: transparency has been renamed to opacity' ); + console.warn('THREE.Loader.createMaterial: transparency has been renamed to opacity'); json.opacity = value; break; case 'depthTest': @@ -37872,82 +37885,82 @@ case 'transparent': case 'visible': case 'wireframe': - json[ name ] = value; + json[name] = value; break; case 'vertexColors': - if ( value === true ) json.vertexColors = VertexColors; - if ( value === 'face' ) json.vertexColors = FaceColors; + if (value === true) json.vertexColors = VertexColors; + if (value === 'face') json.vertexColors = FaceColors; break; default: - console.error( 'THREE.Loader.createMaterial: Unsupported', name, value ); + console.error('THREE.Loader.createMaterial: Unsupported', name, value); break; } } - if ( json.type === 'MeshBasicMaterial' ) delete json.emissive; - if ( json.type !== 'MeshPhongMaterial' ) delete json.specular; + if (json.type === 'MeshBasicMaterial') delete json.emissive; + if (json.type !== 'MeshPhongMaterial') delete json.specular; - if ( json.opacity < 1 ) json.transparent = true; + if (json.opacity < 1) json.transparent = true; - materialLoader.setTextures( textures ); + materialLoader.setTextures(textures); - return materialLoader.parse( json ); + return materialLoader.parse(json); }; - } )() + })() - } ); + }); /** * @author mrdoob / http://mrdoob.com/ * @author alteredq / http://alteredqualia.com/ */ - function JSONLoader( manager ) { + function JSONLoader(manager) { - if ( typeof manager === 'boolean' ) { + if (typeof manager === 'boolean') { - console.warn( 'THREE.JSONLoader: showStatus parameter has been removed from constructor.' ); + console.warn('THREE.JSONLoader: showStatus parameter has been removed from constructor.'); manager = undefined; } - this.manager = ( manager !== undefined ) ? manager : DefaultLoadingManager; + this.manager = (manager !== undefined) ? manager : DefaultLoadingManager; this.withCredentials = false; } - Object.assign( JSONLoader.prototype, { + Object.assign(JSONLoader.prototype, { crossOrigin: 'anonymous', - load: function ( url, onLoad, onProgress, onError ) { + load: function (url, onLoad, onProgress, onError) { var scope = this; - var path = ( this.path === undefined ) ? LoaderUtils.extractUrlBase( url ) : this.path; + var path = (this.path === undefined) ? LoaderUtils.extractUrlBase(url) : this.path; - var loader = new FileLoader( this.manager ); - loader.setPath( this.path ); - loader.setWithCredentials( this.withCredentials ); - loader.load( url, function ( text ) { + var loader = new FileLoader(this.manager); + loader.setPath(this.path); + loader.setWithCredentials(this.withCredentials); + loader.load(url, function (text) { - var json = JSON.parse( text ); + var json = JSON.parse(text); var metadata = json.metadata; - if ( metadata !== undefined ) { + if (metadata !== undefined) { var type = metadata.type; - if ( type !== undefined ) { + if (type !== undefined) { - if ( type.toLowerCase() === 'object' ) { + if (type.toLowerCase() === 'object') { - console.error( 'THREE.JSONLoader: ' + url + ' should be loaded with THREE.ObjectLoader instead.' ); + console.error('THREE.JSONLoader: ' + url + ' should be loaded with THREE.ObjectLoader instead.'); return; } @@ -37956,41 +37969,41 @@ } - var object = scope.parse( json, path ); - onLoad( object.geometry, object.materials ); + var object = scope.parse(json, path); + onLoad(object.geometry, object.materials); - }, onProgress, onError ); + }, onProgress, onError); }, - setPath: function ( value ) { + setPath: function (value) { this.path = value; return this; }, - setResourcePath: function ( value ) { + setResourcePath: function (value) { this.resourcePath = value; return this; }, - setCrossOrigin: function ( value ) { + setCrossOrigin: function (value) { this.crossOrigin = value; return this; }, - parse: ( function () { + parse: (function () { - function parseModel( json, geometry ) { + function parseModel(json, geometry) { - function isBitSet( value, position ) { + function isBitSet(value, position) { - return value & ( 1 << position ); + return value & (1 << position); } @@ -38021,19 +38034,19 @@ nUvLayers = 0; - if ( json.uvs !== undefined ) { + if (json.uvs !== undefined) { // disregard empty arrays - for ( i = 0; i < json.uvs.length; i ++ ) { + for (i = 0; i < json.uvs.length; i++) { - if ( json.uvs[ i ].length ) nUvLayers ++; + if (json.uvs[i].length) nUvLayers++; } - for ( i = 0; i < nUvLayers; i ++ ) { + for (i = 0; i < nUvLayers; i++) { - geometry.faceVertexUvs[ i ] = []; + geometry.faceVertexUvs[i] = []; } @@ -38042,52 +38055,52 @@ offset = 0; zLength = vertices.length; - while ( offset < zLength ) { + while (offset < zLength) { vertex = new Vector3(); - vertex.x = vertices[ offset ++ ] * scale; - vertex.y = vertices[ offset ++ ] * scale; - vertex.z = vertices[ offset ++ ] * scale; + vertex.x = vertices[offset++] * scale; + vertex.y = vertices[offset++] * scale; + vertex.z = vertices[offset++] * scale; - geometry.vertices.push( vertex ); + geometry.vertices.push(vertex); } offset = 0; zLength = faces.length; - while ( offset < zLength ) { + while (offset < zLength) { - type = faces[ offset ++ ]; + type = faces[offset++]; - isQuad = isBitSet( type, 0 ); - hasMaterial = isBitSet( type, 1 ); - hasFaceVertexUv = isBitSet( type, 3 ); - hasFaceNormal = isBitSet( type, 4 ); - hasFaceVertexNormal = isBitSet( type, 5 ); - hasFaceColor = isBitSet( type, 6 ); - hasFaceVertexColor = isBitSet( type, 7 ); + isQuad = isBitSet(type, 0); + hasMaterial = isBitSet(type, 1); + hasFaceVertexUv = isBitSet(type, 3); + hasFaceNormal = isBitSet(type, 4); + hasFaceVertexNormal = isBitSet(type, 5); + hasFaceColor = isBitSet(type, 6); + hasFaceVertexColor = isBitSet(type, 7); // console.log("type", type, "bits", isQuad, hasMaterial, hasFaceVertexUv, hasFaceNormal, hasFaceVertexNormal, hasFaceColor, hasFaceVertexColor); - if ( isQuad ) { + if (isQuad) { faceA = new Face3(); - faceA.a = faces[ offset ]; - faceA.b = faces[ offset + 1 ]; - faceA.c = faces[ offset + 3 ]; + faceA.a = faces[offset]; + faceA.b = faces[offset + 1]; + faceA.c = faces[offset + 3]; faceB = new Face3(); - faceB.a = faces[ offset + 1 ]; - faceB.b = faces[ offset + 2 ]; - faceB.c = faces[ offset + 3 ]; + faceB.a = faces[offset + 1]; + faceB.b = faces[offset + 2]; + faceB.c = faces[offset + 3]; offset += 4; - if ( hasMaterial ) { + if (hasMaterial) { - materialIndex = faces[ offset ++ ]; + materialIndex = faces[offset++]; faceA.materialIndex = materialIndex; faceB.materialIndex = materialIndex; @@ -38097,26 +38110,26 @@ fi = geometry.faces.length; - if ( hasFaceVertexUv ) { + if (hasFaceVertexUv) { - for ( i = 0; i < nUvLayers; i ++ ) { + for (i = 0; i < nUvLayers; i++) { - uvLayer = json.uvs[ i ]; + uvLayer = json.uvs[i]; - geometry.faceVertexUvs[ i ][ fi ] = []; - geometry.faceVertexUvs[ i ][ fi + 1 ] = []; + geometry.faceVertexUvs[i][fi] = []; + geometry.faceVertexUvs[i][fi + 1] = []; - for ( j = 0; j < 4; j ++ ) { + for (j = 0; j < 4; j++) { - uvIndex = faces[ offset ++ ]; + uvIndex = faces[offset++]; - u = uvLayer[ uvIndex * 2 ]; - v = uvLayer[ uvIndex * 2 + 1 ]; + u = uvLayer[uvIndex * 2]; + v = uvLayer[uvIndex * 2 + 1]; - uv = new Vector2( u, v ); + uv = new Vector2(u, v); - if ( j !== 2 ) geometry.faceVertexUvs[ i ][ fi ].push( uv ); - if ( j !== 0 ) geometry.faceVertexUvs[ i ][ fi + 1 ].push( uv ); + if (j !== 2) geometry.faceVertexUvs[i][fi].push(uv); + if (j !== 0) geometry.faceVertexUvs[i][fi + 1].push(uv); } @@ -38124,79 +38137,79 @@ } - if ( hasFaceNormal ) { + if (hasFaceNormal) { - normalIndex = faces[ offset ++ ] * 3; + normalIndex = faces[offset++] * 3; faceA.normal.set( - normals[ normalIndex ++ ], - normals[ normalIndex ++ ], - normals[ normalIndex ] + normals[normalIndex++], + normals[normalIndex++], + normals[normalIndex] ); - faceB.normal.copy( faceA.normal ); + faceB.normal.copy(faceA.normal); } - if ( hasFaceVertexNormal ) { + if (hasFaceVertexNormal) { - for ( i = 0; i < 4; i ++ ) { + for (i = 0; i < 4; i++) { - normalIndex = faces[ offset ++ ] * 3; + normalIndex = faces[offset++] * 3; normal = new Vector3( - normals[ normalIndex ++ ], - normals[ normalIndex ++ ], - normals[ normalIndex ] + normals[normalIndex++], + normals[normalIndex++], + normals[normalIndex] ); - if ( i !== 2 ) faceA.vertexNormals.push( normal ); - if ( i !== 0 ) faceB.vertexNormals.push( normal ); + if (i !== 2) faceA.vertexNormals.push(normal); + if (i !== 0) faceB.vertexNormals.push(normal); } } - if ( hasFaceColor ) { + if (hasFaceColor) { - colorIndex = faces[ offset ++ ]; - hex = colors[ colorIndex ]; + colorIndex = faces[offset++]; + hex = colors[colorIndex]; - faceA.color.setHex( hex ); - faceB.color.setHex( hex ); + faceA.color.setHex(hex); + faceB.color.setHex(hex); } - if ( hasFaceVertexColor ) { + if (hasFaceVertexColor) { - for ( i = 0; i < 4; i ++ ) { + for (i = 0; i < 4; i++) { - colorIndex = faces[ offset ++ ]; - hex = colors[ colorIndex ]; + colorIndex = faces[offset++]; + hex = colors[colorIndex]; - if ( i !== 2 ) faceA.vertexColors.push( new Color( hex ) ); - if ( i !== 0 ) faceB.vertexColors.push( new Color( hex ) ); + if (i !== 2) faceA.vertexColors.push(new Color(hex)); + if (i !== 0) faceB.vertexColors.push(new Color(hex)); } } - geometry.faces.push( faceA ); - geometry.faces.push( faceB ); + geometry.faces.push(faceA); + geometry.faces.push(faceB); } else { face = new Face3(); - face.a = faces[ offset ++ ]; - face.b = faces[ offset ++ ]; - face.c = faces[ offset ++ ]; + face.a = faces[offset++]; + face.b = faces[offset++]; + face.c = faces[offset++]; - if ( hasMaterial ) { + if (hasMaterial) { - materialIndex = faces[ offset ++ ]; + materialIndex = faces[offset++]; face.materialIndex = materialIndex; } @@ -38205,24 +38218,24 @@ fi = geometry.faces.length; - if ( hasFaceVertexUv ) { + if (hasFaceVertexUv) { - for ( i = 0; i < nUvLayers; i ++ ) { + for (i = 0; i < nUvLayers; i++) { - uvLayer = json.uvs[ i ]; + uvLayer = json.uvs[i]; - geometry.faceVertexUvs[ i ][ fi ] = []; + geometry.faceVertexUvs[i][fi] = []; - for ( j = 0; j < 3; j ++ ) { + for (j = 0; j < 3; j++) { - uvIndex = faces[ offset ++ ]; + uvIndex = faces[offset++]; - u = uvLayer[ uvIndex * 2 ]; - v = uvLayer[ uvIndex * 2 + 1 ]; + u = uvLayer[uvIndex * 2]; + v = uvLayer[uvIndex * 2 + 1]; - uv = new Vector2( u, v ); + uv = new Vector2(u, v); - geometry.faceVertexUvs[ i ][ fi ].push( uv ); + geometry.faceVertexUvs[i][fi].push(uv); } @@ -38230,57 +38243,57 @@ } - if ( hasFaceNormal ) { + if (hasFaceNormal) { - normalIndex = faces[ offset ++ ] * 3; + normalIndex = faces[offset++] * 3; face.normal.set( - normals[ normalIndex ++ ], - normals[ normalIndex ++ ], - normals[ normalIndex ] + normals[normalIndex++], + normals[normalIndex++], + normals[normalIndex] ); } - if ( hasFaceVertexNormal ) { + if (hasFaceVertexNormal) { - for ( i = 0; i < 3; i ++ ) { + for (i = 0; i < 3; i++) { - normalIndex = faces[ offset ++ ] * 3; + normalIndex = faces[offset++] * 3; normal = new Vector3( - normals[ normalIndex ++ ], - normals[ normalIndex ++ ], - normals[ normalIndex ] + normals[normalIndex++], + normals[normalIndex++], + normals[normalIndex] ); - face.vertexNormals.push( normal ); + face.vertexNormals.push(normal); } } - if ( hasFaceColor ) { + if (hasFaceColor) { - colorIndex = faces[ offset ++ ]; - face.color.setHex( colors[ colorIndex ] ); + colorIndex = faces[offset++]; + face.color.setHex(colors[colorIndex]); } - if ( hasFaceVertexColor ) { + if (hasFaceVertexColor) { - for ( i = 0; i < 3; i ++ ) { + for (i = 0; i < 3; i++) { - colorIndex = faces[ offset ++ ]; - face.vertexColors.push( new Color( colors[ colorIndex ] ) ); + colorIndex = faces[offset++]; + face.vertexColors.push(new Color(colors[colorIndex])); } } - geometry.faces.push( face ); + geometry.faces.push(face); } @@ -38288,35 +38301,35 @@ } - function parseSkin( json, geometry ) { + function parseSkin(json, geometry) { - var influencesPerVertex = ( json.influencesPerVertex !== undefined ) ? json.influencesPerVertex : 2; + var influencesPerVertex = (json.influencesPerVertex !== undefined) ? json.influencesPerVertex : 2; - if ( json.skinWeights ) { + if (json.skinWeights) { - for ( var i = 0, l = json.skinWeights.length; i < l; i += influencesPerVertex ) { + for (var i = 0, l = json.skinWeights.length; i < l; i += influencesPerVertex) { - var x = json.skinWeights[ i ]; - var y = ( influencesPerVertex > 1 ) ? json.skinWeights[ i + 1 ] : 0; - var z = ( influencesPerVertex > 2 ) ? json.skinWeights[ i + 2 ] : 0; - var w = ( influencesPerVertex > 3 ) ? json.skinWeights[ i + 3 ] : 0; + var x = json.skinWeights[i]; + var y = (influencesPerVertex > 1) ? json.skinWeights[i + 1] : 0; + var z = (influencesPerVertex > 2) ? json.skinWeights[i + 2] : 0; + var w = (influencesPerVertex > 3) ? json.skinWeights[i + 3] : 0; - geometry.skinWeights.push( new Vector4( x, y, z, w ) ); + geometry.skinWeights.push(new Vector4(x, y, z, w)); } } - if ( json.skinIndices ) { + if (json.skinIndices) { - for ( var i = 0, l = json.skinIndices.length; i < l; i += influencesPerVertex ) { + for (var i = 0, l = json.skinIndices.length; i < l; i += influencesPerVertex) { - var a = json.skinIndices[ i ]; - var b = ( influencesPerVertex > 1 ) ? json.skinIndices[ i + 1 ] : 0; - var c = ( influencesPerVertex > 2 ) ? json.skinIndices[ i + 2 ] : 0; - var d = ( influencesPerVertex > 3 ) ? json.skinIndices[ i + 3 ] : 0; + var a = json.skinIndices[i]; + var b = (influencesPerVertex > 1) ? json.skinIndices[i + 1] : 0; + var c = (influencesPerVertex > 2) ? json.skinIndices[i + 2] : 0; + var d = (influencesPerVertex > 3) ? json.skinIndices[i + 3] : 0; - geometry.skinIndices.push( new Vector4( a, b, c, d ) ); + geometry.skinIndices.push(new Vector4(a, b, c, d)); } @@ -38324,38 +38337,38 @@ geometry.bones = json.bones; - if ( geometry.bones && geometry.bones.length > 0 && ( geometry.skinWeights.length !== geometry.skinIndices.length || geometry.skinIndices.length !== geometry.vertices.length ) ) { + if (geometry.bones && geometry.bones.length > 0 && (geometry.skinWeights.length !== geometry.skinIndices.length || geometry.skinIndices.length !== geometry.vertices.length)) { - console.warn( 'When skinning, number of vertices (' + geometry.vertices.length + '), skinIndices (' + - geometry.skinIndices.length + '), and skinWeights (' + geometry.skinWeights.length + ') should match.' ); + console.warn('When skinning, number of vertices (' + geometry.vertices.length + '), skinIndices (' + + geometry.skinIndices.length + '), and skinWeights (' + geometry.skinWeights.length + ') should match.'); } } - function parseMorphing( json, geometry ) { + function parseMorphing(json, geometry) { var scale = json.scale; - if ( json.morphTargets !== undefined ) { + if (json.morphTargets !== undefined) { - for ( var i = 0, l = json.morphTargets.length; i < l; i ++ ) { + for (var i = 0, l = json.morphTargets.length; i < l; i++) { - geometry.morphTargets[ i ] = {}; - geometry.morphTargets[ i ].name = json.morphTargets[ i ].name; - geometry.morphTargets[ i ].vertices = []; + geometry.morphTargets[i] = {}; + geometry.morphTargets[i].name = json.morphTargets[i].name; + geometry.morphTargets[i].vertices = []; - var dstVertices = geometry.morphTargets[ i ].vertices; - var srcVertices = json.morphTargets[ i ].vertices; + var dstVertices = geometry.morphTargets[i].vertices; + var srcVertices = json.morphTargets[i].vertices; - for ( var v = 0, vl = srcVertices.length; v < vl; v += 3 ) { + for (var v = 0, vl = srcVertices.length; v < vl; v += 3) { var vertex = new Vector3(); - vertex.x = srcVertices[ v ] * scale; - vertex.y = srcVertices[ v + 1 ] * scale; - vertex.z = srcVertices[ v + 2 ] * scale; + vertex.x = srcVertices[v] * scale; + vertex.y = srcVertices[v + 1] * scale; + vertex.z = srcVertices[v + 2] * scale; - dstVertices.push( vertex ); + dstVertices.push(vertex); } @@ -38363,16 +38376,16 @@ } - if ( json.morphColors !== undefined && json.morphColors.length > 0 ) { + if (json.morphColors !== undefined && json.morphColors.length > 0) { - console.warn( 'THREE.JSONLoader: "morphColors" no longer supported. Using them as face colors.' ); + console.warn('THREE.JSONLoader: "morphColors" no longer supported. Using them as face colors.'); var faces = geometry.faces; - var morphColors = json.morphColors[ 0 ].colors; + var morphColors = json.morphColors[0].colors; - for ( var i = 0, l = faces.length; i < l; i ++ ) { + for (var i = 0, l = faces.length; i < l; i++) { - faces[ i ].color.fromArray( morphColors, i * 3 ); + faces[i].color.fromArray(morphColors, i * 3); } @@ -38380,63 +38393,63 @@ } - function parseAnimations( json, geometry ) { + function parseAnimations(json, geometry) { var outputAnimations = []; // parse old style Bone/Hierarchy animations var animations = []; - if ( json.animation !== undefined ) { + if (json.animation !== undefined) { - animations.push( json.animation ); + animations.push(json.animation); } - if ( json.animations !== undefined ) { + if (json.animations !== undefined) { - if ( json.animations.length ) { + if (json.animations.length) { - animations = animations.concat( json.animations ); + animations = animations.concat(json.animations); } else { - animations.push( json.animations ); + animations.push(json.animations); } } - for ( var i = 0; i < animations.length; i ++ ) { + for (var i = 0; i < animations.length; i++) { - var clip = AnimationClip.parseAnimation( animations[ i ], geometry.bones ); - if ( clip ) outputAnimations.push( clip ); + var clip = AnimationClip.parseAnimation(animations[i], geometry.bones); + if (clip) outputAnimations.push(clip); } // parse implicit morph animations - if ( geometry.morphTargets ) { + if (geometry.morphTargets) { // TODO: Figure out what an appropraite FPS is for morph target animations -- defaulting to 10, but really it is completely arbitrary. - var morphAnimationClips = AnimationClip.CreateClipsFromMorphTargetSequences( geometry.morphTargets, 10 ); - outputAnimations = outputAnimations.concat( morphAnimationClips ); + var morphAnimationClips = AnimationClip.CreateClipsFromMorphTargetSequences(geometry.morphTargets, 10); + outputAnimations = outputAnimations.concat(morphAnimationClips); } - if ( outputAnimations.length > 0 ) geometry.animations = outputAnimations; + if (outputAnimations.length > 0) geometry.animations = outputAnimations; } - return function parse( json, path ) { + return function parse(json, path) { - if ( json.data !== undefined ) { + if (json.data !== undefined) { // Geometry 4.0 spec json = json.data; } - if ( json.scale !== undefined ) { + if (json.scale !== undefined) { json.scale = 1.0 / json.scale; @@ -38448,21 +38461,21 @@ var geometry = new Geometry(); - parseModel( json, geometry ); - parseSkin( json, geometry ); - parseMorphing( json, geometry ); - parseAnimations( json, geometry ); + parseModel(json, geometry); + parseSkin(json, geometry); + parseMorphing(json, geometry); + parseAnimations(json, geometry); geometry.computeFaceNormals(); geometry.computeBoundingSphere(); - if ( json.materials === undefined || json.materials.length === 0 ) { + if (json.materials === undefined || json.materials.length === 0) { return { geometry: geometry }; } else { - var materials = Loader.prototype.initMaterials( json.materials, this.resourcePath || path, this.crossOrigin ); + var materials = Loader.prototype.initMaterials(json.materials, this.resourcePath || path, this.crossOrigin); return { geometry: geometry, materials: materials }; @@ -38470,47 +38483,47 @@ }; - } )() + })() - } ); + }); /** * @author mrdoob / http://mrdoob.com/ */ - function ObjectLoader( manager ) { + function ObjectLoader(manager) { - this.manager = ( manager !== undefined ) ? manager : DefaultLoadingManager; + this.manager = (manager !== undefined) ? manager : DefaultLoadingManager; this.resourcePath = ''; } - Object.assign( ObjectLoader.prototype, { + Object.assign(ObjectLoader.prototype, { crossOrigin: 'anonymous', - load: function ( url, onLoad, onProgress, onError ) { + load: function (url, onLoad, onProgress, onError) { var scope = this; - var path = ( this.path === undefined ) ? LoaderUtils.extractUrlBase( url ) : this.path; + var path = (this.path === undefined) ? LoaderUtils.extractUrlBase(url) : this.path; this.resourcePath = this.resourcePath || path; - var loader = new FileLoader( scope.manager ); - loader.setPath( this.path ); - loader.load( url, function ( text ) { + var loader = new FileLoader(scope.manager); + loader.setPath(this.path); + loader.load(url, function (text) { var json = null; try { - json = JSON.parse( text ); + json = JSON.parse(text); - } catch ( error ) { + } catch (error) { - if ( onError !== undefined ) onError( error ); + if (onError !== undefined) onError(error); - console.error( 'THREE:ObjectLoader: Can\'t parse ' + url + '.', error.message ); + console.error('THREE:ObjectLoader: Can\'t parse ' + url + '.', error.message); return; @@ -38518,65 +38531,65 @@ var metadata = json.metadata; - if ( metadata === undefined || metadata.type === undefined || metadata.type.toLowerCase() === 'geometry' ) { + if (metadata === undefined || metadata.type === undefined || metadata.type.toLowerCase() === 'geometry') { - console.error( 'THREE.ObjectLoader: Can\'t load ' + url + '. Use THREE.JSONLoader instead.' ); + console.error('THREE.ObjectLoader: Can\'t load ' + url + '. Use THREE.JSONLoader instead.'); return; } - scope.parse( json, onLoad ); + scope.parse(json, onLoad); - }, onProgress, onError ); + }, onProgress, onError); }, - setPath: function ( value ) { + setPath: function (value) { this.path = value; return this; }, - setResourcePath: function ( value ) { + setResourcePath: function (value) { this.resourcePath = value; return this; }, - setCrossOrigin: function ( value ) { + setCrossOrigin: function (value) { this.crossOrigin = value; return this; }, - parse: function ( json, onLoad ) { + parse: function (json, onLoad) { - var shapes = this.parseShape( json.shapes ); - var geometries = this.parseGeometries( json.geometries, shapes ); + var shapes = this.parseShape(json.shapes); + var geometries = this.parseGeometries(json.geometries, shapes); - var images = this.parseImages( json.images, function () { + var images = this.parseImages(json.images, function () { - if ( onLoad !== undefined ) onLoad( object ); + if (onLoad !== undefined) onLoad(object); - } ); + }); - var textures = this.parseTextures( json.textures, images ); - var materials = this.parseMaterials( json.materials, textures ); + var textures = this.parseTextures(json.textures, images); + var materials = this.parseMaterials(json.materials, textures); - var object = this.parseObject( json.object, geometries, materials ); + var object = this.parseObject(json.object, geometries, materials); - if ( json.animations ) { + if (json.animations) { - object.animations = this.parseAnimations( json.animations ); + object.animations = this.parseAnimations(json.animations); } - if ( json.images === undefined || json.images.length === 0 ) { + if (json.images === undefined || json.images.length === 0) { - if ( onLoad !== undefined ) onLoad( object ); + if (onLoad !== undefined) onLoad(object); } @@ -38584,17 +38597,17 @@ }, - parseShape: function ( json ) { + parseShape: function (json) { var shapes = {}; - if ( json !== undefined ) { + if (json !== undefined) { - for ( var i = 0, l = json.length; i < l; i ++ ) { + for (var i = 0, l = json.length; i < l; i++) { - var shape = new Shape().fromJSON( json[ i ] ); + var shape = new Shape().fromJSON(json[i]); - shapes[ shape.uuid ] = shape; + shapes[shape.uuid] = shape; } @@ -38604,26 +38617,26 @@ }, - parseGeometries: function ( json, shapes ) { + parseGeometries: function (json, shapes) { var geometries = {}; - if ( json !== undefined ) { + if (json !== undefined) { var geometryLoader = new JSONLoader(); var bufferGeometryLoader = new BufferGeometryLoader(); - for ( var i = 0, l = json.length; i < l; i ++ ) { + for (var i = 0, l = json.length; i < l; i++) { var geometry; - var data = json[ i ]; + var data = json[i]; - switch ( data.type ) { + switch (data.type) { case 'PlaneGeometry': case 'PlaneBufferGeometry': - geometry = new Geometries[ data.type ]( + geometry = new Geometries[data.type]( data.width, data.height, data.widthSegments, @@ -38636,7 +38649,7 @@ case 'BoxBufferGeometry': case 'CubeGeometry': // backwards compatible - geometry = new Geometries[ data.type ]( + geometry = new Geometries[data.type]( data.width, data.height, data.depth, @@ -38650,7 +38663,7 @@ case 'CircleGeometry': case 'CircleBufferGeometry': - geometry = new Geometries[ data.type ]( + geometry = new Geometries[data.type]( data.radius, data.segments, data.thetaStart, @@ -38662,7 +38675,7 @@ case 'CylinderGeometry': case 'CylinderBufferGeometry': - geometry = new Geometries[ data.type ]( + geometry = new Geometries[data.type]( data.radiusTop, data.radiusBottom, data.height, @@ -38678,7 +38691,7 @@ case 'ConeGeometry': case 'ConeBufferGeometry': - geometry = new Geometries[ data.type ]( + geometry = new Geometries[data.type]( data.radius, data.height, data.radialSegments, @@ -38693,7 +38706,7 @@ case 'SphereGeometry': case 'SphereBufferGeometry': - geometry = new Geometries[ data.type ]( + geometry = new Geometries[data.type]( data.radius, data.widthSegments, data.heightSegments, @@ -38714,7 +38727,7 @@ case 'TetrahedronGeometry': case 'TetrahedronBufferGeometry': - geometry = new Geometries[ data.type ]( + geometry = new Geometries[data.type]( data.radius, data.detail ); @@ -38724,7 +38737,7 @@ case 'RingGeometry': case 'RingBufferGeometry': - geometry = new Geometries[ data.type ]( + geometry = new Geometries[data.type]( data.innerRadius, data.outerRadius, data.thetaSegments, @@ -38738,7 +38751,7 @@ case 'TorusGeometry': case 'TorusBufferGeometry': - geometry = new Geometries[ data.type ]( + geometry = new Geometries[data.type]( data.radius, data.tube, data.radialSegments, @@ -38751,7 +38764,7 @@ case 'TorusKnotGeometry': case 'TorusKnotBufferGeometry': - geometry = new Geometries[ data.type ]( + geometry = new Geometries[data.type]( data.radius, data.tube, data.tubularSegments, @@ -38765,7 +38778,7 @@ case 'LatheGeometry': case 'LatheBufferGeometry': - geometry = new Geometries[ data.type ]( + geometry = new Geometries[data.type]( data.points, data.segments, data.phiStart, @@ -38777,7 +38790,7 @@ case 'PolyhedronGeometry': case 'PolyhedronBufferGeometry': - geometry = new Geometries[ data.type ]( + geometry = new Geometries[data.type]( data.vertices, data.indices, data.radius, @@ -38791,15 +38804,15 @@ var geometryShapes = []; - for ( var j = 0, jl = data.shapes.length; j < jl; j ++ ) { + for (var j = 0, jl = data.shapes.length; j < jl; j++) { - var shape = shapes[ data.shapes[ j ] ]; + var shape = shapes[data.shapes[j]]; - geometryShapes.push( shape ); + geometryShapes.push(shape); } - geometry = new Geometries[ data.type ]( + geometry = new Geometries[data.type]( geometryShapes, data.curveSegments ); @@ -38812,23 +38825,23 @@ var geometryShapes = []; - for ( var j = 0, jl = data.shapes.length; j < jl; j ++ ) { + for (var j = 0, jl = data.shapes.length; j < jl; j++) { - var shape = shapes[ data.shapes[ j ] ]; + var shape = shapes[data.shapes[j]]; - geometryShapes.push( shape ); + geometryShapes.push(shape); } var extrudePath = data.options.extrudePath; - if ( extrudePath !== undefined ) { + if (extrudePath !== undefined) { - data.options.extrudePath = new Curves[ extrudePath.type ]().fromJSON( extrudePath ); + data.options.extrudePath = new Curves[extrudePath.type]().fromJSON(extrudePath); } - geometry = new Geometries[ data.type ]( + geometry = new Geometries[data.type]( geometryShapes, data.options ); @@ -38837,19 +38850,19 @@ case 'BufferGeometry': - geometry = bufferGeometryLoader.parse( data ); + geometry = bufferGeometryLoader.parse(data); break; case 'Geometry': - geometry = geometryLoader.parse( data, this.resourcePath ).geometry; + geometry = geometryLoader.parse(data, this.resourcePath).geometry; break; default: - console.warn( 'THREE.ObjectLoader: Unsupported geometry type "' + data.type + '"' ); + console.warn('THREE.ObjectLoader: Unsupported geometry type "' + data.type + '"'); continue; @@ -38857,10 +38870,10 @@ geometry.uuid = data.uuid; - if ( data.name !== undefined ) geometry.name = data.name; - if ( geometry.isBufferGeometry === true && data.userData !== undefined ) geometry.userData = data.userData; + if (data.name !== undefined) geometry.name = data.name; + if (geometry.isBufferGeometry === true && data.userData !== undefined) geometry.userData = data.userData; - geometries[ data.uuid ] = geometry; + geometries[data.uuid] = geometry; } @@ -38870,46 +38883,46 @@ }, - parseMaterials: function ( json, textures ) { + parseMaterials: function (json, textures) { var cache = {}; // MultiMaterial var materials = {}; - if ( json !== undefined ) { + if (json !== undefined) { var loader = new MaterialLoader(); - loader.setTextures( textures ); + loader.setTextures(textures); - for ( var i = 0, l = json.length; i < l; i ++ ) { + for (var i = 0, l = json.length; i < l; i++) { - var data = json[ i ]; + var data = json[i]; - if ( data.type === 'MultiMaterial' ) { + if (data.type === 'MultiMaterial') { // Deprecated var array = []; - for ( var j = 0; j < data.materials.length; j ++ ) { + for (var j = 0; j < data.materials.length; j++) { - var material = data.materials[ j ]; + var material = data.materials[j]; - if ( cache[ material.uuid ] === undefined ) { + if (cache[material.uuid] === undefined) { - cache[ material.uuid ] = loader.parse( material ); + cache[material.uuid] = loader.parse(material); } - array.push( cache[ material.uuid ] ); + array.push(cache[material.uuid]); } - materials[ data.uuid ] = array; + materials[data.uuid] = array; } else { - materials[ data.uuid ] = loader.parse( data ); - cache[ data.uuid ] = materials[ data.uuid ]; + materials[data.uuid] = loader.parse(data); + cache[data.uuid] = materials[data.uuid]; } @@ -38921,19 +38934,19 @@ }, - parseAnimations: function ( json ) { + parseAnimations: function (json) { var animations = []; - for ( var i = 0; i < json.length; i ++ ) { + for (var i = 0; i < json.length; i++) { - var data = json[ i ]; + var data = json[i]; - var clip = AnimationClip.parse( data ); + var clip = AnimationClip.parse(data); - if ( data.uuid !== undefined ) clip.uuid = data.uuid; + if (data.uuid !== undefined) clip.uuid = data.uuid; - animations.push( clip ); + animations.push(clip); } @@ -38941,53 +38954,53 @@ }, - parseImages: function ( json, onLoad ) { + parseImages: function (json, onLoad) { var scope = this; var images = {}; - function loadImage( url ) { + function loadImage(url) { - scope.manager.itemStart( url ); + scope.manager.itemStart(url); - return loader.load( url, function () { + return loader.load(url, function () { - scope.manager.itemEnd( url ); + scope.manager.itemEnd(url); }, undefined, function () { - scope.manager.itemError( url ); - scope.manager.itemEnd( url ); + scope.manager.itemError(url); + scope.manager.itemEnd(url); - } ); + }); } - if ( json !== undefined && json.length > 0 ) { + if (json !== undefined && json.length > 0) { - var manager = new LoadingManager( onLoad ); + var manager = new LoadingManager(onLoad); - var loader = new ImageLoader( manager ); - loader.setCrossOrigin( this.crossOrigin ); + var loader = new ImageLoader(manager); + loader.setCrossOrigin(this.crossOrigin); - for ( var i = 0, il = json.length; i < il; i ++ ) { + for (var i = 0, il = json.length; i < il; i++) { - var image = json[ i ]; + var image = json[i]; var url = image.url; - if ( Array.isArray( url ) ) { + if (Array.isArray(url)) { // load array of images e.g CubeTexture - images[ image.uuid ] = []; + images[image.uuid] = []; - for ( var j = 0, jl = url.length; j < jl; j ++ ) { + for (var j = 0, jl = url.length; j < jl; j++) { - var currentUrl = url[ j ]; + var currentUrl = url[j]; - var path = /^(\/\/)|([a-z]+:(\/\/)?)/i.test( currentUrl ) ? currentUrl : scope.resourcePath + currentUrl; + var path = /^(\/\/)|([a-z]+:(\/\/)?)/i.test(currentUrl) ? currentUrl : scope.resourcePath + currentUrl; - images[ image.uuid ].push( loadImage( path ) ); + images[image.uuid].push(loadImage(path)); } @@ -38995,9 +39008,9 @@ // load single image - var path = /^(\/\/)|([a-z]+:(\/\/)?)/i.test( image.url ) ? image.url : scope.resourcePath + image.url; + var path = /^(\/\/)|([a-z]+:(\/\/)?)/i.test(image.url) ? image.url : scope.resourcePath + image.url; - images[ image.uuid ] = loadImage( path ); + images[image.uuid] = loadImage(path); } @@ -39009,47 +39022,47 @@ }, - parseTextures: function ( json, images ) { + parseTextures: function (json, images) { - function parseConstant( value, type ) { + function parseConstant(value, type) { - if ( typeof value === 'number' ) return value; + if (typeof value === 'number') return value; - console.warn( 'THREE.ObjectLoader.parseTexture: Constant should be in numeric form.', value ); + console.warn('THREE.ObjectLoader.parseTexture: Constant should be in numeric form.', value); - return type[ value ]; + return type[value]; } var textures = {}; - if ( json !== undefined ) { + if (json !== undefined) { - for ( var i = 0, l = json.length; i < l; i ++ ) { + for (var i = 0, l = json.length; i < l; i++) { - var data = json[ i ]; + var data = json[i]; - if ( data.image === undefined ) { + if (data.image === undefined) { - console.warn( 'THREE.ObjectLoader: No "image" specified for', data.uuid ); + console.warn('THREE.ObjectLoader: No "image" specified for', data.uuid); } - if ( images[ data.image ] === undefined ) { + if (images[data.image] === undefined) { - console.warn( 'THREE.ObjectLoader: Undefined image', data.image ); + console.warn('THREE.ObjectLoader: Undefined image', data.image); } var texture; - if ( Array.isArray( images[ data.image ] ) ) { + if (Array.isArray(images[data.image])) { - texture = new CubeTexture( images[ data.image ] ); + texture = new CubeTexture(images[data.image]); } else { - texture = new Texture( images[ data.image ] ); + texture = new Texture(images[data.image]); } @@ -39057,31 +39070,31 @@ texture.uuid = data.uuid; - if ( data.name !== undefined ) texture.name = data.name; + if (data.name !== undefined) texture.name = data.name; - if ( data.mapping !== undefined ) texture.mapping = parseConstant( data.mapping, TEXTURE_MAPPING ); + if (data.mapping !== undefined) texture.mapping = parseConstant(data.mapping, TEXTURE_MAPPING); - if ( data.offset !== undefined ) texture.offset.fromArray( data.offset ); - if ( data.repeat !== undefined ) texture.repeat.fromArray( data.repeat ); - if ( data.center !== undefined ) texture.center.fromArray( data.center ); - if ( data.rotation !== undefined ) texture.rotation = data.rotation; + if (data.offset !== undefined) texture.offset.fromArray(data.offset); + if (data.repeat !== undefined) texture.repeat.fromArray(data.repeat); + if (data.center !== undefined) texture.center.fromArray(data.center); + if (data.rotation !== undefined) texture.rotation = data.rotation; - if ( data.wrap !== undefined ) { + if (data.wrap !== undefined) { - texture.wrapS = parseConstant( data.wrap[ 0 ], TEXTURE_WRAPPING ); - texture.wrapT = parseConstant( data.wrap[ 1 ], TEXTURE_WRAPPING ); + texture.wrapS = parseConstant(data.wrap[0], TEXTURE_WRAPPING); + texture.wrapT = parseConstant(data.wrap[1], TEXTURE_WRAPPING); } - if ( data.format !== undefined ) texture.format = data.format; + if (data.format !== undefined) texture.format = data.format; - if ( data.minFilter !== undefined ) texture.minFilter = parseConstant( data.minFilter, TEXTURE_FILTER ); - if ( data.magFilter !== undefined ) texture.magFilter = parseConstant( data.magFilter, TEXTURE_FILTER ); - if ( data.anisotropy !== undefined ) texture.anisotropy = data.anisotropy; + if (data.minFilter !== undefined) texture.minFilter = parseConstant(data.minFilter, TEXTURE_FILTER); + if (data.magFilter !== undefined) texture.magFilter = parseConstant(data.magFilter, TEXTURE_FILTER); + if (data.anisotropy !== undefined) texture.anisotropy = data.anisotropy; - if ( data.flipY !== undefined ) texture.flipY = data.flipY; + if (data.flipY !== undefined) texture.flipY = data.flipY; - textures[ data.uuid ] = texture; + textures[data.uuid] = texture; } @@ -39091,41 +39104,41 @@ }, - parseObject: function ( data, geometries, materials ) { + parseObject: function (data, geometries, materials) { var object; - function getGeometry( name ) { + function getGeometry(name) { - if ( geometries[ name ] === undefined ) { + if (geometries[name] === undefined) { - console.warn( 'THREE.ObjectLoader: Undefined geometry', name ); + console.warn('THREE.ObjectLoader: Undefined geometry', name); } - return geometries[ name ]; + return geometries[name]; } - function getMaterial( name ) { + function getMaterial(name) { - if ( name === undefined ) return undefined; + if (name === undefined) return undefined; - if ( Array.isArray( name ) ) { + if (Array.isArray(name)) { var array = []; - for ( var i = 0, l = name.length; i < l; i ++ ) { + for (var i = 0, l = name.length; i < l; i++) { - var uuid = name[ i ]; + var uuid = name[i]; - if ( materials[ uuid ] === undefined ) { + if (materials[uuid] === undefined) { - console.warn( 'THREE.ObjectLoader: Undefined material', uuid ); + console.warn('THREE.ObjectLoader: Undefined material', uuid); } - array.push( materials[ uuid ] ); + array.push(materials[uuid]); } @@ -39133,41 +39146,41 @@ } - if ( materials[ name ] === undefined ) { + if (materials[name] === undefined) { - console.warn( 'THREE.ObjectLoader: Undefined material', name ); + console.warn('THREE.ObjectLoader: Undefined material', name); } - return materials[ name ]; + return materials[name]; } - switch ( data.type ) { + switch (data.type) { case 'Scene': object = new Scene(); - if ( data.background !== undefined ) { + if (data.background !== undefined) { - if ( Number.isInteger( data.background ) ) { + if (Number.isInteger(data.background)) { - object.background = new Color( data.background ); + object.background = new Color(data.background); } } - if ( data.fog !== undefined ) { + if (data.fog !== undefined) { - if ( data.fog.type === 'Fog' ) { + if (data.fog.type === 'Fog') { - object.fog = new Fog( data.fog.color, data.fog.near, data.fog.far ); + object.fog = new Fog(data.fog.color, data.fog.near, data.fog.far); - } else if ( data.fog.type === 'FogExp2' ) { + } else if (data.fog.type === 'FogExp2') { - object.fog = new FogExp2( data.fog.color, data.fog.density ); + object.fog = new FogExp2(data.fog.color, data.fog.density); } @@ -39177,77 +39190,77 @@ case 'PerspectiveCamera': - object = new PerspectiveCamera( data.fov, data.aspect, data.near, data.far ); + object = new PerspectiveCamera(data.fov, data.aspect, data.near, data.far); - if ( data.focus !== undefined ) object.focus = data.focus; - if ( data.zoom !== undefined ) object.zoom = data.zoom; - if ( data.filmGauge !== undefined ) object.filmGauge = data.filmGauge; - if ( data.filmOffset !== undefined ) object.filmOffset = data.filmOffset; - if ( data.view !== undefined ) object.view = Object.assign( {}, data.view ); + if (data.focus !== undefined) object.focus = data.focus; + if (data.zoom !== undefined) object.zoom = data.zoom; + if (data.filmGauge !== undefined) object.filmGauge = data.filmGauge; + if (data.filmOffset !== undefined) object.filmOffset = data.filmOffset; + if (data.view !== undefined) object.view = Object.assign({}, data.view); break; case 'OrthographicCamera': - object = new OrthographicCamera( data.left, data.right, data.top, data.bottom, data.near, data.far ); + object = new OrthographicCamera(data.left, data.right, data.top, data.bottom, data.near, data.far); - if ( data.zoom !== undefined ) object.zoom = data.zoom; - if ( data.view !== undefined ) object.view = Object.assign( {}, data.view ); + if (data.zoom !== undefined) object.zoom = data.zoom; + if (data.view !== undefined) object.view = Object.assign({}, data.view); break; case 'AmbientLight': - object = new AmbientLight( data.color, data.intensity ); + object = new AmbientLight(data.color, data.intensity); break; case 'DirectionalLight': - object = new DirectionalLight( data.color, data.intensity ); + object = new DirectionalLight(data.color, data.intensity); break; case 'PointLight': - object = new PointLight( data.color, data.intensity, data.distance, data.decay ); + object = new PointLight(data.color, data.intensity, data.distance, data.decay); break; case 'RectAreaLight': - object = new RectAreaLight( data.color, data.intensity, data.width, data.height ); + object = new RectAreaLight(data.color, data.intensity, data.width, data.height); break; case 'SpotLight': - object = new SpotLight( data.color, data.intensity, data.distance, data.angle, data.penumbra, data.decay ); + object = new SpotLight(data.color, data.intensity, data.distance, data.angle, data.penumbra, data.decay); break; case 'HemisphereLight': - object = new HemisphereLight( data.color, data.groundColor, data.intensity ); + object = new HemisphereLight(data.color, data.groundColor, data.intensity); break; case 'SkinnedMesh': - console.warn( 'THREE.ObjectLoader.parseObject() does not support SkinnedMesh yet.' ); + console.warn('THREE.ObjectLoader.parseObject() does not support SkinnedMesh yet.'); case 'Mesh': - var geometry = getGeometry( data.geometry ); - var material = getMaterial( data.material ); + var geometry = getGeometry(data.geometry); + var material = getMaterial(data.material); - if ( geometry.bones && geometry.bones.length > 0 ) { + if (geometry.bones && geometry.bones.length > 0) { - object = new SkinnedMesh( geometry, material ); + object = new SkinnedMesh(geometry, material); } else { - object = new Mesh( geometry, material ); + object = new Mesh(geometry, material); } @@ -39261,32 +39274,32 @@ case 'Line': - object = new Line( getGeometry( data.geometry ), getMaterial( data.material ), data.mode ); + object = new Line(getGeometry(data.geometry), getMaterial(data.material), data.mode); break; case 'LineLoop': - object = new LineLoop( getGeometry( data.geometry ), getMaterial( data.material ) ); + object = new LineLoop(getGeometry(data.geometry), getMaterial(data.material)); break; case 'LineSegments': - object = new LineSegments( getGeometry( data.geometry ), getMaterial( data.material ) ); + object = new LineSegments(getGeometry(data.geometry), getMaterial(data.material)); break; case 'PointCloud': case 'Points': - object = new Points( getGeometry( data.geometry ), getMaterial( data.material ) ); + object = new Points(getGeometry(data.geometry), getMaterial(data.material)); break; case 'Sprite': - object = new Sprite( getMaterial( data.material ) ); + object = new Sprite(getMaterial(data.material)); break; @@ -39304,66 +39317,66 @@ object.uuid = data.uuid; - if ( data.name !== undefined ) object.name = data.name; + if (data.name !== undefined) object.name = data.name; - if ( data.matrix !== undefined ) { + if (data.matrix !== undefined) { - object.matrix.fromArray( data.matrix ); + object.matrix.fromArray(data.matrix); - if ( data.matrixAutoUpdate !== undefined ) object.matrixAutoUpdate = data.matrixAutoUpdate; - if ( object.matrixAutoUpdate ) object.matrix.decompose( object.position, object.quaternion, object.scale ); + if (data.matrixAutoUpdate !== undefined) object.matrixAutoUpdate = data.matrixAutoUpdate; + if (object.matrixAutoUpdate) object.matrix.decompose(object.position, object.quaternion, object.scale); } else { - if ( data.position !== undefined ) object.position.fromArray( data.position ); - if ( data.rotation !== undefined ) object.rotation.fromArray( data.rotation ); - if ( data.quaternion !== undefined ) object.quaternion.fromArray( data.quaternion ); - if ( data.scale !== undefined ) object.scale.fromArray( data.scale ); + if (data.position !== undefined) object.position.fromArray(data.position); + if (data.rotation !== undefined) object.rotation.fromArray(data.rotation); + if (data.quaternion !== undefined) object.quaternion.fromArray(data.quaternion); + if (data.scale !== undefined) object.scale.fromArray(data.scale); } - if ( data.castShadow !== undefined ) object.castShadow = data.castShadow; - if ( data.receiveShadow !== undefined ) object.receiveShadow = data.receiveShadow; + if (data.castShadow !== undefined) object.castShadow = data.castShadow; + if (data.receiveShadow !== undefined) object.receiveShadow = data.receiveShadow; - if ( data.shadow ) { + if (data.shadow) { - if ( data.shadow.bias !== undefined ) object.shadow.bias = data.shadow.bias; - if ( data.shadow.radius !== undefined ) object.shadow.radius = data.shadow.radius; - if ( data.shadow.mapSize !== undefined ) object.shadow.mapSize.fromArray( data.shadow.mapSize ); - if ( data.shadow.camera !== undefined ) object.shadow.camera = this.parseObject( data.shadow.camera ); + if (data.shadow.bias !== undefined) object.shadow.bias = data.shadow.bias; + if (data.shadow.radius !== undefined) object.shadow.radius = data.shadow.radius; + if (data.shadow.mapSize !== undefined) object.shadow.mapSize.fromArray(data.shadow.mapSize); + if (data.shadow.camera !== undefined) object.shadow.camera = this.parseObject(data.shadow.camera); } - if ( data.visible !== undefined ) object.visible = data.visible; - if ( data.frustumCulled !== undefined ) object.frustumCulled = data.frustumCulled; - if ( data.renderOrder !== undefined ) object.renderOrder = data.renderOrder; - if ( data.userData !== undefined ) object.userData = data.userData; - if ( data.layers !== undefined ) object.layers.mask = data.layers; + if (data.visible !== undefined) object.visible = data.visible; + if (data.frustumCulled !== undefined) object.frustumCulled = data.frustumCulled; + if (data.renderOrder !== undefined) object.renderOrder = data.renderOrder; + if (data.userData !== undefined) object.userData = data.userData; + if (data.layers !== undefined) object.layers.mask = data.layers; - if ( data.children !== undefined ) { + if (data.children !== undefined) { var children = data.children; - for ( var i = 0; i < children.length; i ++ ) { + for (var i = 0; i < children.length; i++) { - object.add( this.parseObject( children[ i ], geometries, materials ) ); + object.add(this.parseObject(children[i], geometries, materials)); } } - if ( data.type === 'LOD' ) { + if (data.type === 'LOD') { var levels = data.levels; - for ( var l = 0; l < levels.length; l ++ ) { + for (var l = 0; l < levels.length; l++) { - var level = levels[ l ]; - var child = object.getObjectByProperty( 'uuid', level.object ); + var level = levels[l]; + var child = object.getObjectByProperty('uuid', level.object); - if ( child !== undefined ) { + if (child !== undefined) { - object.addLevel( child, level.distance ); + object.addLevel(child, level.distance); } @@ -39375,7 +39388,7 @@ } - } ); + }); var TEXTURE_MAPPING = { UVMapping: UVMapping, @@ -39408,17 +39421,17 @@ */ - function ImageBitmapLoader( manager ) { + function ImageBitmapLoader(manager) { - if ( typeof createImageBitmap === 'undefined' ) { + if (typeof createImageBitmap === 'undefined') { - console.warn( 'THREE.ImageBitmapLoader: createImageBitmap() not supported.' ); + console.warn('THREE.ImageBitmapLoader: createImageBitmap() not supported.'); } - if ( typeof fetch === 'undefined' ) { + if (typeof fetch === 'undefined') { - console.warn( 'THREE.ImageBitmapLoader: fetch() not supported.' ); + console.warn('THREE.ImageBitmapLoader: fetch() not supported.'); } @@ -39431,7 +39444,7 @@ constructor: ImageBitmapLoader, - setOptions: function setOptions( options ) { + setOptions: function setOptions(options) { this.options = options; @@ -39439,68 +39452,68 @@ }, - load: function ( url, onLoad, onProgress, onError ) { + load: function (url, onLoad, onProgress, onError) { - if ( url === undefined ) url = ''; + if (url === undefined) url = ''; - if ( this.path !== undefined ) url = this.path + url; + if (this.path !== undefined) url = this.path + url; - url = this.manager.resolveURL( url ); + url = this.manager.resolveURL(url); var scope = this; - var cached = Cache.get( url ); + var cached = Cache.get(url); - if ( cached !== undefined ) { + if (cached !== undefined) { - scope.manager.itemStart( url ); + scope.manager.itemStart(url); - setTimeout( function () { + setTimeout(function () { - if ( onLoad ) onLoad( cached ); + if (onLoad) onLoad(cached); - scope.manager.itemEnd( url ); + scope.manager.itemEnd(url); - }, 0 ); + }, 0); return cached; } - fetch( url ).then( function ( res ) { + fetch(url).then(function (res) { return res.blob(); - } ).then( function ( blob ) { + }).then(function (blob) { - return createImageBitmap( blob, scope.options ); + return createImageBitmap(blob, scope.options); - } ).then( function ( imageBitmap ) { + }).then(function (imageBitmap) { - Cache.add( url, imageBitmap ); + Cache.add(url, imageBitmap); - if ( onLoad ) onLoad( imageBitmap ); + if (onLoad) onLoad(imageBitmap); - scope.manager.itemEnd( url ); + scope.manager.itemEnd(url); - } ).catch( function ( e ) { + }).catch(function (e) { - if ( onError ) onError( e ); + if (onError) onError(e); - scope.manager.itemError( url ); - scope.manager.itemEnd( url ); + scope.manager.itemError(url); + scope.manager.itemEnd(url); - } ); + }); }, - setCrossOrigin: function ( /* value */ ) { + setCrossOrigin: function ( /* value */) { return this; }, - setPath: function ( value ) { + setPath: function (value) { this.path = value; return this; @@ -39525,54 +39538,54 @@ } - Object.assign( ShapePath.prototype, { + Object.assign(ShapePath.prototype, { - moveTo: function ( x, y ) { + moveTo: function (x, y) { this.currentPath = new Path(); - this.subPaths.push( this.currentPath ); - this.currentPath.moveTo( x, y ); + this.subPaths.push(this.currentPath); + this.currentPath.moveTo(x, y); }, - lineTo: function ( x, y ) { + lineTo: function (x, y) { - this.currentPath.lineTo( x, y ); + this.currentPath.lineTo(x, y); }, - quadraticCurveTo: function ( aCPx, aCPy, aX, aY ) { + quadraticCurveTo: function (aCPx, aCPy, aX, aY) { - this.currentPath.quadraticCurveTo( aCPx, aCPy, aX, aY ); + this.currentPath.quadraticCurveTo(aCPx, aCPy, aX, aY); }, - bezierCurveTo: function ( aCP1x, aCP1y, aCP2x, aCP2y, aX, aY ) { + bezierCurveTo: function (aCP1x, aCP1y, aCP2x, aCP2y, aX, aY) { - this.currentPath.bezierCurveTo( aCP1x, aCP1y, aCP2x, aCP2y, aX, aY ); + this.currentPath.bezierCurveTo(aCP1x, aCP1y, aCP2x, aCP2y, aX, aY); }, - splineThru: function ( pts ) { + splineThru: function (pts) { - this.currentPath.splineThru( pts ); + this.currentPath.splineThru(pts); }, - toShapes: function ( isCCW, noHoles ) { + toShapes: function (isCCW, noHoles) { - function toShapesNoHoles( inSubpaths ) { + function toShapesNoHoles(inSubpaths) { var shapes = []; - for ( var i = 0, l = inSubpaths.length; i < l; i ++ ) { + for (var i = 0, l = inSubpaths.length; i < l; i++) { - var tmpPath = inSubpaths[ i ]; + var tmpPath = inSubpaths[i]; var tmpShape = new Shape(); tmpShape.curves = tmpPath.curves; - shapes.push( tmpShape ); + shapes.push(tmpShape); } @@ -39580,7 +39593,7 @@ } - function isPointInsidePolygon( inPt, inPolygon ) { + function isPointInsidePolygon(inPt, inPolygon) { var polyLen = inPolygon.length; @@ -39589,78 +39602,78 @@ // with the horizontal line through inPt, left of inPt // not counting lowerY endpoints of edges and whole edges on that line var inside = false; - for ( var p = polyLen - 1, q = 0; q < polyLen; p = q ++ ) { + for (var p = polyLen - 1, q = 0; q < polyLen; p = q++) { - var edgeLowPt = inPolygon[ p ]; - var edgeHighPt = inPolygon[ q ]; + var edgeLowPt = inPolygon[p]; + var edgeHighPt = inPolygon[q]; var edgeDx = edgeHighPt.x - edgeLowPt.x; var edgeDy = edgeHighPt.y - edgeLowPt.y; - if ( Math.abs( edgeDy ) > Number.EPSILON ) { + if (Math.abs(edgeDy) > Number.EPSILON) { // not parallel - if ( edgeDy < 0 ) { + if (edgeDy < 0) { - edgeLowPt = inPolygon[ q ]; edgeDx = - edgeDx; - edgeHighPt = inPolygon[ p ]; edgeDy = - edgeDy; + edgeLowPt = inPolygon[q]; edgeDx = - edgeDx; + edgeHighPt = inPolygon[p]; edgeDy = - edgeDy; } - if ( ( inPt.y < edgeLowPt.y ) || ( inPt.y > edgeHighPt.y ) ) continue; + if ((inPt.y < edgeLowPt.y) || (inPt.y > edgeHighPt.y)) continue; - if ( inPt.y === edgeLowPt.y ) { + if (inPt.y === edgeLowPt.y) { - if ( inPt.x === edgeLowPt.x ) return true; // inPt is on contour ? + if (inPt.x === edgeLowPt.x) return true; // inPt is on contour ? // continue; // no intersection or edgeLowPt => doesn't count !!! } else { - var perpEdge = edgeDy * ( inPt.x - edgeLowPt.x ) - edgeDx * ( inPt.y - edgeLowPt.y ); - if ( perpEdge === 0 ) return true; // inPt is on contour ? - if ( perpEdge < 0 ) continue; - inside = ! inside; // true intersection left of inPt + var perpEdge = edgeDy * (inPt.x - edgeLowPt.x) - edgeDx * (inPt.y - edgeLowPt.y); + if (perpEdge === 0) return true; // inPt is on contour ? + if (perpEdge < 0) continue; + inside = !inside; // true intersection left of inPt } } else { // parallel or collinear - if ( inPt.y !== edgeLowPt.y ) continue; // parallel + if (inPt.y !== edgeLowPt.y) continue; // parallel // edge lies on the same horizontal line as inPt - if ( ( ( edgeHighPt.x <= inPt.x ) && ( inPt.x <= edgeLowPt.x ) ) || - ( ( edgeLowPt.x <= inPt.x ) && ( inPt.x <= edgeHighPt.x ) ) ) return true; // inPt: Point on contour ! + if (((edgeHighPt.x <= inPt.x) && (inPt.x <= edgeLowPt.x)) || + ((edgeLowPt.x <= inPt.x) && (inPt.x <= edgeHighPt.x))) return true; // inPt: Point on contour ! // continue; } } - return inside; + return inside; } var isClockWise = ShapeUtils.isClockWise; var subPaths = this.subPaths; - if ( subPaths.length === 0 ) return []; + if (subPaths.length === 0) return []; - if ( noHoles === true ) return toShapesNoHoles( subPaths ); + if (noHoles === true) return toShapesNoHoles(subPaths); var solid, tmpPath, tmpShape, shapes = []; - if ( subPaths.length === 1 ) { + if (subPaths.length === 1) { - tmpPath = subPaths[ 0 ]; + tmpPath = subPaths[0]; tmpShape = new Shape(); tmpShape.curves = tmpPath.curves; - shapes.push( tmpShape ); + shapes.push(tmpShape); return shapes; } - var holesFirst = ! isClockWise( subPaths[ 0 ].getPoints() ); - holesFirst = isCCW ? ! holesFirst : holesFirst; + var holesFirst = !isClockWise(subPaths[0].getPoints()); + holesFirst = isCCW ? !holesFirst : holesFirst; // console.log("Holes first", holesFirst); @@ -39670,31 +39683,31 @@ var mainIdx = 0; var tmpPoints; - newShapes[ mainIdx ] = undefined; - newShapeHoles[ mainIdx ] = []; + newShapes[mainIdx] = undefined; + newShapeHoles[mainIdx] = []; - for ( var i = 0, l = subPaths.length; i < l; i ++ ) { + for (var i = 0, l = subPaths.length; i < l; i++) { - tmpPath = subPaths[ i ]; + tmpPath = subPaths[i]; tmpPoints = tmpPath.getPoints(); - solid = isClockWise( tmpPoints ); - solid = isCCW ? ! solid : solid; + solid = isClockWise(tmpPoints); + solid = isCCW ? !solid : solid; - if ( solid ) { + if (solid) { - if ( ( ! holesFirst ) && ( newShapes[ mainIdx ] ) ) mainIdx ++; + if ((!holesFirst) && (newShapes[mainIdx])) mainIdx++; - newShapes[ mainIdx ] = { s: new Shape(), p: tmpPoints }; - newShapes[ mainIdx ].s.curves = tmpPath.curves; + newShapes[mainIdx] = { s: new Shape(), p: tmpPoints }; + newShapes[mainIdx].s.curves = tmpPath.curves; - if ( holesFirst ) mainIdx ++; - newShapeHoles[ mainIdx ] = []; + if (holesFirst) mainIdx++; + newShapeHoles[mainIdx] = []; //console.log('cw', i); } else { - newShapeHoles[ mainIdx ].push( { h: tmpPath, p: tmpPoints[ 0 ] } ); + newShapeHoles[mainIdx].push({ h: tmpPath, p: tmpPoints[0] }); //console.log('ccw', i); @@ -39703,38 +39716,38 @@ } // only Holes? -> probably all Shapes with wrong orientation - if ( ! newShapes[ 0 ] ) return toShapesNoHoles( subPaths ); + if (!newShapes[0]) return toShapesNoHoles(subPaths); - if ( newShapes.length > 1 ) { + if (newShapes.length > 1) { var ambiguous = false; var toChange = []; - for ( var sIdx = 0, sLen = newShapes.length; sIdx < sLen; sIdx ++ ) { + for (var sIdx = 0, sLen = newShapes.length; sIdx < sLen; sIdx++) { - betterShapeHoles[ sIdx ] = []; + betterShapeHoles[sIdx] = []; } - for ( var sIdx = 0, sLen = newShapes.length; sIdx < sLen; sIdx ++ ) { + for (var sIdx = 0, sLen = newShapes.length; sIdx < sLen; sIdx++) { - var sho = newShapeHoles[ sIdx ]; + var sho = newShapeHoles[sIdx]; - for ( var hIdx = 0; hIdx < sho.length; hIdx ++ ) { + for (var hIdx = 0; hIdx < sho.length; hIdx++) { - var ho = sho[ hIdx ]; + var ho = sho[hIdx]; var hole_unassigned = true; - for ( var s2Idx = 0; s2Idx < newShapes.length; s2Idx ++ ) { + for (var s2Idx = 0; s2Idx < newShapes.length; s2Idx++) { - if ( isPointInsidePolygon( ho.p, newShapes[ s2Idx ].p ) ) { + if (isPointInsidePolygon(ho.p, newShapes[s2Idx].p)) { - if ( sIdx !== s2Idx ) toChange.push( { froms: sIdx, tos: s2Idx, hole: hIdx } ); - if ( hole_unassigned ) { + if (sIdx !== s2Idx) toChange.push({ froms: sIdx, tos: s2Idx, hole: hIdx }); + if (hole_unassigned) { hole_unassigned = false; - betterShapeHoles[ s2Idx ].push( ho ); + betterShapeHoles[s2Idx].push(ho); } else { @@ -39745,9 +39758,9 @@ } } - if ( hole_unassigned ) { + if (hole_unassigned) { - betterShapeHoles[ sIdx ].push( ho ); + betterShapeHoles[sIdx].push(ho); } @@ -39755,10 +39768,10 @@ } // console.log("ambiguous: ", ambiguous); - if ( toChange.length > 0 ) { + if (toChange.length > 0) { // console.log("to change: ", toChange); - if ( ! ambiguous ) newShapeHoles = betterShapeHoles; + if (!ambiguous) newShapeHoles = betterShapeHoles; } @@ -39766,15 +39779,15 @@ var tmpHoles; - for ( var i = 0, il = newShapes.length; i < il; i ++ ) { + for (var i = 0, il = newShapes.length; i < il; i++) { - tmpShape = newShapes[ i ].s; - shapes.push( tmpShape ); - tmpHoles = newShapeHoles[ i ]; + tmpShape = newShapes[i].s; + shapes.push(tmpShape); + tmpHoles = newShapeHoles[i]; - for ( var j = 0, jl = tmpHoles.length; j < jl; j ++ ) { + for (var j = 0, jl = tmpHoles.length; j < jl; j++) { - tmpShape.holes.push( tmpHoles[ j ].h ); + tmpShape.holes.push(tmpHoles[j].h); } @@ -39786,7 +39799,7 @@ } - } ); + }); /** * @author zz85 / http://www.lab4games.net/zz85/blog @@ -39794,7 +39807,7 @@ */ - function Font( data ) { + function Font(data) { this.type = 'Font'; @@ -39802,20 +39815,20 @@ } - Object.assign( Font.prototype, { + Object.assign(Font.prototype, { isFont: true, - generateShapes: function ( text, size ) { + generateShapes: function (text, size) { - if ( size === undefined ) size = 100; + if (size === undefined) size = 100; var shapes = []; - var paths = createPaths( text, size, this.data ); + var paths = createPaths(text, size, this.data); - for ( var p = 0, pl = paths.length; p < pl; p ++ ) { + for (var p = 0, pl = paths.length; p < pl; p++) { - Array.prototype.push.apply( shapes, paths[ p ].toShapes() ); + Array.prototype.push.apply(shapes, paths[p].toShapes()); } @@ -39823,32 +39836,32 @@ } - } ); + }); - function createPaths( text, size, data ) { + function createPaths(text, size, data) { - var chars = Array.from ? Array.from( text ) : String( text ).split( '' ); // see #13988 + var chars = Array.from ? Array.from(text) : String(text).split(''); // see #13988 var scale = size / data.resolution; - var line_height = ( data.boundingBox.yMax - data.boundingBox.yMin + data.underlineThickness ) * scale; + var line_height = (data.boundingBox.yMax - data.boundingBox.yMin + data.underlineThickness) * scale; var paths = []; var offsetX = 0, offsetY = 0; - for ( var i = 0; i < chars.length; i ++ ) { + for (var i = 0; i < chars.length; i++) { - var char = chars[ i ]; + var char = chars[i]; - if ( char === '\n' ) { + if (char === '\n') { offsetX = 0; offsetY -= line_height; } else { - var ret = createPath( char, scale, offsetX, offsetY, data ); + var ret = createPath(char, scale, offsetX, offsetY, data); offsetX += ret.offsetX; - paths.push( ret.path ); + paths.push(ret.path); } @@ -39858,65 +39871,65 @@ } - function createPath( char, scale, offsetX, offsetY, data ) { + function createPath(char, scale, offsetX, offsetY, data) { - var glyph = data.glyphs[ char ] || data.glyphs[ '?' ]; + var glyph = data.glyphs[char] || data.glyphs['?']; - if ( ! glyph ) return; + if (!glyph) return; var path = new ShapePath(); var x, y, cpx, cpy, cpx1, cpy1, cpx2, cpy2; - if ( glyph.o ) { + if (glyph.o) { - var outline = glyph._cachedOutline || ( glyph._cachedOutline = glyph.o.split( ' ' ) ); + var outline = glyph._cachedOutline || (glyph._cachedOutline = glyph.o.split(' ')); - for ( var i = 0, l = outline.length; i < l; ) { + for (var i = 0, l = outline.length; i < l;) { - var action = outline[ i ++ ]; + var action = outline[i++]; - switch ( action ) { + switch (action) { case 'm': // moveTo - x = outline[ i ++ ] * scale + offsetX; - y = outline[ i ++ ] * scale + offsetY; + x = outline[i++] * scale + offsetX; + y = outline[i++] * scale + offsetY; - path.moveTo( x, y ); + path.moveTo(x, y); break; case 'l': // lineTo - x = outline[ i ++ ] * scale + offsetX; - y = outline[ i ++ ] * scale + offsetY; + x = outline[i++] * scale + offsetX; + y = outline[i++] * scale + offsetY; - path.lineTo( x, y ); + path.lineTo(x, y); break; case 'q': // quadraticCurveTo - cpx = outline[ i ++ ] * scale + offsetX; - cpy = outline[ i ++ ] * scale + offsetY; - cpx1 = outline[ i ++ ] * scale + offsetX; - cpy1 = outline[ i ++ ] * scale + offsetY; + cpx = outline[i++] * scale + offsetX; + cpy = outline[i++] * scale + offsetY; + cpx1 = outline[i++] * scale + offsetX; + cpy1 = outline[i++] * scale + offsetY; - path.quadraticCurveTo( cpx1, cpy1, cpx, cpy ); + path.quadraticCurveTo(cpx1, cpy1, cpx, cpy); break; case 'b': // bezierCurveTo - cpx = outline[ i ++ ] * scale + offsetX; - cpy = outline[ i ++ ] * scale + offsetY; - cpx1 = outline[ i ++ ] * scale + offsetX; - cpy1 = outline[ i ++ ] * scale + offsetY; - cpx2 = outline[ i ++ ] * scale + offsetX; - cpy2 = outline[ i ++ ] * scale + offsetY; + cpx = outline[i++] * scale + offsetX; + cpy = outline[i++] * scale + offsetY; + cpx1 = outline[i++] * scale + offsetX; + cpy1 = outline[i++] * scale + offsetY; + cpx2 = outline[i++] * scale + offsetX; + cpy2 = outline[i++] * scale + offsetY; - path.bezierCurveTo( cpx1, cpy1, cpx2, cpy2, cpx, cpy ); + path.bezierCurveTo(cpx1, cpy1, cpx2, cpy2, cpx, cpy); break; @@ -39934,57 +39947,57 @@ * @author mrdoob / http://mrdoob.com/ */ - function FontLoader( manager ) { + function FontLoader(manager) { - this.manager = ( manager !== undefined ) ? manager : DefaultLoadingManager; + this.manager = (manager !== undefined) ? manager : DefaultLoadingManager; } - Object.assign( FontLoader.prototype, { + Object.assign(FontLoader.prototype, { - load: function ( url, onLoad, onProgress, onError ) { + load: function (url, onLoad, onProgress, onError) { var scope = this; - var loader = new FileLoader( this.manager ); - loader.setPath( this.path ); - loader.load( url, function ( text ) { + var loader = new FileLoader(this.manager); + loader.setPath(this.path); + loader.load(url, function (text) { var json; try { - json = JSON.parse( text ); + json = JSON.parse(text); - } catch ( e ) { + } catch (e) { - console.warn( 'THREE.FontLoader: typeface.js support is being deprecated. Use typeface.json instead.' ); - json = JSON.parse( text.substring( 65, text.length - 2 ) ); + console.warn('THREE.FontLoader: typeface.js support is being deprecated. Use typeface.json instead.'); + json = JSON.parse(text.substring(65, text.length - 2)); } - var font = scope.parse( json ); + var font = scope.parse(json); - if ( onLoad ) onLoad( font ); + if (onLoad) onLoad(font); - }, onProgress, onError ); + }, onProgress, onError); }, - parse: function ( json ) { + parse: function (json) { - return new Font( json ); + return new Font(json); }, - setPath: function ( value ) { + setPath: function (value) { this.path = value; return this; } - } ); + }); /** * @author mrdoob / http://mrdoob.com/ @@ -39996,9 +40009,9 @@ getContext: function () { - if ( context === undefined ) { + if (context === undefined) { - context = new ( window.AudioContext || window.webkitAudioContext )(); + context = new (window.AudioContext || window.webkitAudioContext)(); } @@ -40006,7 +40019,7 @@ }, - setContext: function ( value ) { + setContext: function (value) { context = value; @@ -40018,44 +40031,44 @@ * @author Reece Aaron Lecrivain / http://reecenotes.com/ */ - function AudioLoader( manager ) { + function AudioLoader(manager) { - this.manager = ( manager !== undefined ) ? manager : DefaultLoadingManager; + this.manager = (manager !== undefined) ? manager : DefaultLoadingManager; } - Object.assign( AudioLoader.prototype, { + Object.assign(AudioLoader.prototype, { - load: function ( url, onLoad, onProgress, onError ) { + load: function (url, onLoad, onProgress, onError) { - var loader = new FileLoader( this.manager ); - loader.setResponseType( 'arraybuffer' ); - loader.setPath( this.path ); - loader.load( url, function ( buffer ) { + var loader = new FileLoader(this.manager); + loader.setResponseType('arraybuffer'); + loader.setPath(this.path); + loader.load(url, function (buffer) { // Create a copy of the buffer. The `decodeAudioData` method // detaches the buffer when complete, preventing reuse. - var bufferCopy = buffer.slice( 0 ); + var bufferCopy = buffer.slice(0); var context = AudioContext.getContext(); - context.decodeAudioData( bufferCopy, function ( audioBuffer ) { + context.decodeAudioData(bufferCopy, function (audioBuffer) { - onLoad( audioBuffer ); + onLoad(audioBuffer); - } ); + }); - }, onProgress, onError ); + }, onProgress, onError); }, - setPath: function ( value ) { + setPath: function (value) { this.path = value; return this; } - } ); + }); /** * @author mrdoob / http://mrdoob.com/ @@ -40070,31 +40083,31 @@ this.eyeSep = 0.064; this.cameraL = new PerspectiveCamera(); - this.cameraL.layers.enable( 1 ); + this.cameraL.layers.enable(1); this.cameraL.matrixAutoUpdate = false; this.cameraR = new PerspectiveCamera(); - this.cameraR.layers.enable( 2 ); + this.cameraR.layers.enable(2); this.cameraR.matrixAutoUpdate = false; } - Object.assign( StereoCamera.prototype, { + Object.assign(StereoCamera.prototype, { - update: ( function () { + update: (function () { var instance, focus, fov, aspect, near, far, zoom, eyeSep; var eyeRight = new Matrix4(); var eyeLeft = new Matrix4(); - return function update( camera ) { + return function update(camera) { var needsUpdate = instance !== this || focus !== camera.focus || fov !== camera.fov || - aspect !== camera.aspect * this.aspect || near !== camera.near || - far !== camera.far || zoom !== camera.zoom || eyeSep !== this.eyeSep; + aspect !== camera.aspect * this.aspect || near !== camera.near || + far !== camera.far || zoom !== camera.zoom || eyeSep !== this.eyeSep; - if ( needsUpdate ) { + if (needsUpdate) { instance = this; focus = camera.focus; @@ -40110,44 +40123,44 @@ var projectionMatrix = camera.projectionMatrix.clone(); eyeSep = this.eyeSep / 2; var eyeSepOnProjection = eyeSep * near / focus; - var ymax = ( near * Math.tan( _Math.DEG2RAD * fov * 0.5 ) ) / zoom; + var ymax = (near * Math.tan(_Math.DEG2RAD * fov * 0.5)) / zoom; var xmin, xmax; // translate xOffset - eyeLeft.elements[ 12 ] = - eyeSep; - eyeRight.elements[ 12 ] = eyeSep; + eyeLeft.elements[12] = - eyeSep; + eyeRight.elements[12] = eyeSep; // for left eye xmin = - ymax * aspect + eyeSepOnProjection; xmax = ymax * aspect + eyeSepOnProjection; - projectionMatrix.elements[ 0 ] = 2 * near / ( xmax - xmin ); - projectionMatrix.elements[ 8 ] = ( xmax + xmin ) / ( xmax - xmin ); + projectionMatrix.elements[0] = 2 * near / (xmax - xmin); + projectionMatrix.elements[8] = (xmax + xmin) / (xmax - xmin); - this.cameraL.projectionMatrix.copy( projectionMatrix ); + this.cameraL.projectionMatrix.copy(projectionMatrix); // for right eye xmin = - ymax * aspect - eyeSepOnProjection; xmax = ymax * aspect - eyeSepOnProjection; - projectionMatrix.elements[ 0 ] = 2 * near / ( xmax - xmin ); - projectionMatrix.elements[ 8 ] = ( xmax + xmin ) / ( xmax - xmin ); + projectionMatrix.elements[0] = 2 * near / (xmax - xmin); + projectionMatrix.elements[8] = (xmax + xmin) / (xmax - xmin); - this.cameraR.projectionMatrix.copy( projectionMatrix ); + this.cameraR.projectionMatrix.copy(projectionMatrix); } - this.cameraL.matrixWorld.copy( camera.matrixWorld ).multiply( eyeLeft ); - this.cameraR.matrixWorld.copy( camera.matrixWorld ).multiply( eyeRight ); + this.cameraL.matrixWorld.copy(camera.matrixWorld).multiply(eyeLeft); + this.cameraR.matrixWorld.copy(camera.matrixWorld).multiply(eyeRight); }; - } )() + })() - } ); + }); /** * Camera for rendering cube maps @@ -40156,52 +40169,52 @@ * @author alteredq / http://alteredqualia.com/ */ - function CubeCamera( near, far, cubeResolution, options ) { + function CubeCamera(near, far, cubeResolution, options) { - Object3D.call( this ); + Object3D.call(this); this.type = 'CubeCamera'; var fov = 90, aspect = 1; - var cameraPX = new PerspectiveCamera( fov, aspect, near, far ); - cameraPX.up.set( 0, - 1, 0 ); - cameraPX.lookAt( new Vector3( 1, 0, 0 ) ); - this.add( cameraPX ); + var cameraPX = new PerspectiveCamera(fov, aspect, near, far); + cameraPX.up.set(0, - 1, 0); + cameraPX.lookAt(new Vector3(1, 0, 0)); + this.add(cameraPX); - var cameraNX = new PerspectiveCamera( fov, aspect, near, far ); - cameraNX.up.set( 0, - 1, 0 ); - cameraNX.lookAt( new Vector3( - 1, 0, 0 ) ); - this.add( cameraNX ); + var cameraNX = new PerspectiveCamera(fov, aspect, near, far); + cameraNX.up.set(0, - 1, 0); + cameraNX.lookAt(new Vector3(- 1, 0, 0)); + this.add(cameraNX); - var cameraPY = new PerspectiveCamera( fov, aspect, near, far ); - cameraPY.up.set( 0, 0, 1 ); - cameraPY.lookAt( new Vector3( 0, 1, 0 ) ); - this.add( cameraPY ); + var cameraPY = new PerspectiveCamera(fov, aspect, near, far); + cameraPY.up.set(0, 0, 1); + cameraPY.lookAt(new Vector3(0, 1, 0)); + this.add(cameraPY); - var cameraNY = new PerspectiveCamera( fov, aspect, near, far ); - cameraNY.up.set( 0, 0, - 1 ); - cameraNY.lookAt( new Vector3( 0, - 1, 0 ) ); - this.add( cameraNY ); + var cameraNY = new PerspectiveCamera(fov, aspect, near, far); + cameraNY.up.set(0, 0, - 1); + cameraNY.lookAt(new Vector3(0, - 1, 0)); + this.add(cameraNY); - var cameraPZ = new PerspectiveCamera( fov, aspect, near, far ); - cameraPZ.up.set( 0, - 1, 0 ); - cameraPZ.lookAt( new Vector3( 0, 0, 1 ) ); - this.add( cameraPZ ); + var cameraPZ = new PerspectiveCamera(fov, aspect, near, far); + cameraPZ.up.set(0, - 1, 0); + cameraPZ.lookAt(new Vector3(0, 0, 1)); + this.add(cameraPZ); - var cameraNZ = new PerspectiveCamera( fov, aspect, near, far ); - cameraNZ.up.set( 0, - 1, 0 ); - cameraNZ.lookAt( new Vector3( 0, 0, - 1 ) ); - this.add( cameraNZ ); + var cameraNZ = new PerspectiveCamera(fov, aspect, near, far); + cameraNZ.up.set(0, - 1, 0); + cameraNZ.lookAt(new Vector3(0, 0, - 1)); + this.add(cameraNZ); options = options || { format: RGBFormat, magFilter: LinearFilter, minFilter: LinearFilter }; - this.renderTarget = new WebGLRenderTargetCube( cubeResolution, cubeResolution, options ); + this.renderTarget = new WebGLRenderTargetCube(cubeResolution, cubeResolution, options); this.renderTarget.texture.name = "CubeCamera"; - this.update = function ( renderer, scene ) { + this.update = function (renderer, scene) { - if ( this.parent === null ) this.updateMatrixWorld(); + if (this.parent === null) this.updateMatrixWorld(); var renderTarget = this.renderTarget; var generateMipmaps = renderTarget.texture.generateMipmaps; @@ -40209,58 +40222,58 @@ renderTarget.texture.generateMipmaps = false; renderTarget.activeCubeFace = 0; - renderer.render( scene, cameraPX, renderTarget ); + renderer.render(scene, cameraPX, renderTarget); renderTarget.activeCubeFace = 1; - renderer.render( scene, cameraNX, renderTarget ); + renderer.render(scene, cameraNX, renderTarget); renderTarget.activeCubeFace = 2; - renderer.render( scene, cameraPY, renderTarget ); + renderer.render(scene, cameraPY, renderTarget); renderTarget.activeCubeFace = 3; - renderer.render( scene, cameraNY, renderTarget ); + renderer.render(scene, cameraNY, renderTarget); renderTarget.activeCubeFace = 4; - renderer.render( scene, cameraPZ, renderTarget ); + renderer.render(scene, cameraPZ, renderTarget); renderTarget.texture.generateMipmaps = generateMipmaps; renderTarget.activeCubeFace = 5; - renderer.render( scene, cameraNZ, renderTarget ); + renderer.render(scene, cameraNZ, renderTarget); - renderer.setRenderTarget( null ); + renderer.setRenderTarget(null); }; - this.clear = function ( renderer, color, depth, stencil ) { + this.clear = function (renderer, color, depth, stencil) { var renderTarget = this.renderTarget; - for ( var i = 0; i < 6; i ++ ) { + for (var i = 0; i < 6; i++) { renderTarget.activeCubeFace = i; - renderer.setRenderTarget( renderTarget ); + renderer.setRenderTarget(renderTarget); - renderer.clear( color, depth, stencil ); + renderer.clear(color, depth, stencil); } - renderer.setRenderTarget( null ); + renderer.setRenderTarget(null); }; } - CubeCamera.prototype = Object.create( Object3D.prototype ); + CubeCamera.prototype = Object.create(Object3D.prototype); CubeCamera.prototype.constructor = CubeCamera; /** * @author alteredq / http://alteredqualia.com/ */ - function Clock( autoStart ) { + function Clock(autoStart) { - this.autoStart = ( autoStart !== undefined ) ? autoStart : true; + this.autoStart = (autoStart !== undefined) ? autoStart : true; this.startTime = 0; this.oldTime = 0; @@ -40270,11 +40283,11 @@ } - Object.assign( Clock.prototype, { + Object.assign(Clock.prototype, { start: function () { - this.startTime = ( typeof performance === 'undefined' ? Date : performance ).now(); // see #10732 + this.startTime = (typeof performance === 'undefined' ? Date : performance).now(); // see #10732 this.oldTime = this.startTime; this.elapsedTime = 0; @@ -40301,18 +40314,18 @@ var diff = 0; - if ( this.autoStart && ! this.running ) { + if (this.autoStart && !this.running) { this.start(); return 0; } - if ( this.running ) { + if (this.running) { - var newTime = ( typeof performance === 'undefined' ? Date : performance ).now(); + var newTime = (typeof performance === 'undefined' ? Date : performance).now(); - diff = ( newTime - this.oldTime ) / 1000; + diff = (newTime - this.oldTime) / 1000; this.oldTime = newTime; this.elapsedTime += diff; @@ -40323,7 +40336,7 @@ } - } ); + }); /** * @author mrdoob / http://mrdoob.com/ @@ -40331,14 +40344,14 @@ function AudioListener() { - Object3D.call( this ); + Object3D.call(this); this.type = 'AudioListener'; this.context = AudioContext.getContext(); this.gain = this.context.createGain(); - this.gain.connect( this.context.destination ); + this.gain.connect(this.context.destination); this.filter = null; @@ -40346,7 +40359,7 @@ } - AudioListener.prototype = Object.assign( Object.create( Object3D.prototype ), { + AudioListener.prototype = Object.assign(Object.create(Object3D.prototype), { constructor: AudioListener, @@ -40356,13 +40369,13 @@ }, - removeFilter: function ( ) { + removeFilter: function () { - if ( this.filter !== null ) { + if (this.filter !== null) { - this.gain.disconnect( this.filter ); - this.filter.disconnect( this.context.destination ); - this.gain.connect( this.context.destination ); + this.gain.disconnect(this.filter); + this.filter.disconnect(this.context.destination); + this.gain.connect(this.context.destination); this.filter = null; } @@ -40377,22 +40390,22 @@ }, - setFilter: function ( value ) { + setFilter: function (value) { - if ( this.filter !== null ) { + if (this.filter !== null) { - this.gain.disconnect( this.filter ); - this.filter.disconnect( this.context.destination ); + this.gain.disconnect(this.filter); + this.filter.disconnect(this.context.destination); } else { - this.gain.disconnect( this.context.destination ); + this.gain.disconnect(this.context.destination); } this.filter = value; - this.gain.connect( this.filter ); - this.filter.connect( this.context.destination ); + this.gain.connect(this.filter); + this.filter.connect(this.context.destination); return this; @@ -40404,15 +40417,15 @@ }, - setMasterVolume: function ( value ) { + setMasterVolume: function (value) { - this.gain.gain.setTargetAtTime( value, this.context.currentTime, 0.01 ); + this.gain.gain.setTargetAtTime(value, this.context.currentTime, 0.01); return this; }, - updateMatrixWorld: ( function () { + updateMatrixWorld: (function () { var position = new Vector3(); var quaternion = new Quaternion(); @@ -40421,56 +40434,56 @@ var orientation = new Vector3(); var clock = new Clock(); - return function updateMatrixWorld( force ) { + return function updateMatrixWorld(force) { - Object3D.prototype.updateMatrixWorld.call( this, force ); + Object3D.prototype.updateMatrixWorld.call(this, force); var listener = this.context.listener; var up = this.up; this.timeDelta = clock.getDelta(); - this.matrixWorld.decompose( position, quaternion, scale ); + this.matrixWorld.decompose(position, quaternion, scale); - orientation.set( 0, 0, - 1 ).applyQuaternion( quaternion ); + orientation.set(0, 0, - 1).applyQuaternion(quaternion); - if ( listener.positionX ) { + if (listener.positionX) { // code path for Chrome (see #14393) var endTime = this.context.currentTime + this.timeDelta; - listener.positionX.linearRampToValueAtTime( position.x, endTime ); - listener.positionY.linearRampToValueAtTime( position.y, endTime ); - listener.positionZ.linearRampToValueAtTime( position.z, endTime ); - listener.forwardX.linearRampToValueAtTime( orientation.x, endTime ); - listener.forwardY.linearRampToValueAtTime( orientation.y, endTime ); - listener.forwardZ.linearRampToValueAtTime( orientation.z, endTime ); - listener.upX.linearRampToValueAtTime( up.x, endTime ); - listener.upY.linearRampToValueAtTime( up.y, endTime ); - listener.upZ.linearRampToValueAtTime( up.z, endTime ); + listener.positionX.linearRampToValueAtTime(position.x, endTime); + listener.positionY.linearRampToValueAtTime(position.y, endTime); + listener.positionZ.linearRampToValueAtTime(position.z, endTime); + listener.forwardX.linearRampToValueAtTime(orientation.x, endTime); + listener.forwardY.linearRampToValueAtTime(orientation.y, endTime); + listener.forwardZ.linearRampToValueAtTime(orientation.z, endTime); + listener.upX.linearRampToValueAtTime(up.x, endTime); + listener.upY.linearRampToValueAtTime(up.y, endTime); + listener.upZ.linearRampToValueAtTime(up.z, endTime); } else { - listener.setPosition( position.x, position.y, position.z ); - listener.setOrientation( orientation.x, orientation.y, orientation.z, up.x, up.y, up.z ); + listener.setPosition(position.x, position.y, position.z); + listener.setOrientation(orientation.x, orientation.y, orientation.z, up.x, up.y, up.z); } }; - } )() + })() - } ); + }); /** * @author mrdoob / http://mrdoob.com/ * @author Reece Aaron Lecrivain / http://reecenotes.com/ */ - function Audio( listener ) { + function Audio(listener) { - Object3D.call( this ); + Object3D.call(this); this.type = 'Audio'; @@ -40478,7 +40491,7 @@ this.context = listener.context; this.gain = this.context.createGain(); - this.gain.connect( listener.getInput() ); + this.gain.connect(listener.getInput()); this.autoplay = false; @@ -40495,7 +40508,7 @@ } - Audio.prototype = Object.assign( Object.create( Object3D.prototype ), { + Audio.prototype = Object.assign(Object.create(Object3D.prototype), { constructor: Audio, @@ -40505,7 +40518,7 @@ }, - setNodeSource: function ( audioNode ) { + setNodeSource: function (audioNode) { this.hasPlaybackControl = false; this.sourceType = 'audioNode'; @@ -40516,23 +40529,23 @@ }, - setMediaElementSource: function ( mediaElement ) { + setMediaElementSource: function (mediaElement) { this.hasPlaybackControl = false; this.sourceType = 'mediaNode'; - this.source = this.context.createMediaElementSource( mediaElement ); + this.source = this.context.createMediaElementSource(mediaElement); this.connect(); return this; }, - setBuffer: function ( audioBuffer ) { + setBuffer: function (audioBuffer) { this.buffer = audioBuffer; this.sourceType = 'buffer'; - if ( this.autoplay ) this.play(); + if (this.autoplay) this.play(); return this; @@ -40540,16 +40553,16 @@ play: function () { - if ( this.isPlaying === true ) { + if (this.isPlaying === true) { - console.warn( 'THREE.Audio: Audio is already playing.' ); + console.warn('THREE.Audio: Audio is already playing.'); return; } - if ( this.hasPlaybackControl === false ) { + if (this.hasPlaybackControl === false) { - console.warn( 'THREE.Audio: this Audio has no playback control.' ); + console.warn('THREE.Audio: this Audio has no playback control.'); return; } @@ -40558,10 +40571,10 @@ source.buffer = this.buffer; source.loop = this.loop; - source.onended = this.onEnded.bind( this ); - source.playbackRate.setValueAtTime( this.playbackRate, this.startTime ); + source.onended = this.onEnded.bind(this); + source.playbackRate.setValueAtTime(this.playbackRate, this.startTime); this.startTime = this.context.currentTime; - source.start( this.startTime, this.offset ); + source.start(this.startTime, this.offset); this.isPlaying = true; @@ -40573,18 +40586,18 @@ pause: function () { - if ( this.hasPlaybackControl === false ) { + if (this.hasPlaybackControl === false) { - console.warn( 'THREE.Audio: this Audio has no playback control.' ); + console.warn('THREE.Audio: this Audio has no playback control.'); return; } - if ( this.isPlaying === true ) { + if (this.isPlaying === true) { this.source.stop(); this.source.onended = null; - this.offset += ( this.context.currentTime - this.startTime ) * this.playbackRate; + this.offset += (this.context.currentTime - this.startTime) * this.playbackRate; this.isPlaying = false; } @@ -40595,9 +40608,9 @@ stop: function () { - if ( this.hasPlaybackControl === false ) { + if (this.hasPlaybackControl === false) { - console.warn( 'THREE.Audio: this Audio has no playback control.' ); + console.warn('THREE.Audio: this Audio has no playback control.'); return; } @@ -40613,21 +40626,21 @@ connect: function () { - if ( this.filters.length > 0 ) { + if (this.filters.length > 0) { - this.source.connect( this.filters[ 0 ] ); + this.source.connect(this.filters[0]); - for ( var i = 1, l = this.filters.length; i < l; i ++ ) { + for (var i = 1, l = this.filters.length; i < l; i++) { - this.filters[ i - 1 ].connect( this.filters[ i ] ); + this.filters[i - 1].connect(this.filters[i]); } - this.filters[ this.filters.length - 1 ].connect( this.getOutput() ); + this.filters[this.filters.length - 1].connect(this.getOutput()); } else { - this.source.connect( this.getOutput() ); + this.source.connect(this.getOutput()); } @@ -40637,21 +40650,21 @@ disconnect: function () { - if ( this.filters.length > 0 ) { + if (this.filters.length > 0) { - this.source.disconnect( this.filters[ 0 ] ); + this.source.disconnect(this.filters[0]); - for ( var i = 1, l = this.filters.length; i < l; i ++ ) { + for (var i = 1, l = this.filters.length; i < l; i++) { - this.filters[ i - 1 ].disconnect( this.filters[ i ] ); + this.filters[i - 1].disconnect(this.filters[i]); } - this.filters[ this.filters.length - 1 ].disconnect( this.getOutput() ); + this.filters[this.filters.length - 1].disconnect(this.getOutput()); } else { - this.source.disconnect( this.getOutput() ); + this.source.disconnect(this.getOutput()); } @@ -40665,11 +40678,11 @@ }, - setFilters: function ( value ) { + setFilters: function (value) { - if ( ! value ) value = []; + if (!value) value = []; - if ( this.isPlaying === true ) { + if (this.isPlaying === true) { this.disconnect(); this.filters = value; @@ -40687,30 +40700,30 @@ getFilter: function () { - return this.getFilters()[ 0 ]; + return this.getFilters()[0]; }, - setFilter: function ( filter ) { + setFilter: function (filter) { - return this.setFilters( filter ? [ filter ] : [] ); + return this.setFilters(filter ? [filter] : []); }, - setPlaybackRate: function ( value ) { + setPlaybackRate: function (value) { - if ( this.hasPlaybackControl === false ) { + if (this.hasPlaybackControl === false) { - console.warn( 'THREE.Audio: this Audio has no playback control.' ); + console.warn('THREE.Audio: this Audio has no playback control.'); return; } this.playbackRate = value; - if ( this.isPlaying === true ) { + if (this.isPlaying === true) { - this.source.playbackRate.setValueAtTime( this.playbackRate, this.context.currentTime ); + this.source.playbackRate.setValueAtTime(this.playbackRate, this.context.currentTime); } @@ -40732,9 +40745,9 @@ getLoop: function () { - if ( this.hasPlaybackControl === false ) { + if (this.hasPlaybackControl === false) { - console.warn( 'THREE.Audio: this Audio has no playback control.' ); + console.warn('THREE.Audio: this Audio has no playback control.'); return false; } @@ -40743,18 +40756,18 @@ }, - setLoop: function ( value ) { + setLoop: function (value) { - if ( this.hasPlaybackControl === false ) { + if (this.hasPlaybackControl === false) { - console.warn( 'THREE.Audio: this Audio has no playback control.' ); + console.warn('THREE.Audio: this Audio has no playback control.'); return; } this.loop = value; - if ( this.isPlaying === true ) { + if (this.isPlaying === true) { this.source.loop = this.loop; @@ -40770,30 +40783,30 @@ }, - setVolume: function ( value ) { + setVolume: function (value) { - this.gain.gain.setTargetAtTime( value, this.context.currentTime, 0.01 ); + this.gain.gain.setTargetAtTime(value, this.context.currentTime, 0.01); return this; } - } ); + }); /** * @author mrdoob / http://mrdoob.com/ */ - function PositionalAudio( listener ) { + function PositionalAudio(listener) { - Audio.call( this, listener ); + Audio.call(this, listener); this.panner = this.context.createPanner(); - this.panner.connect( this.gain ); + this.panner.connect(this.gain); } - PositionalAudio.prototype = Object.assign( Object.create( Audio.prototype ), { + PositionalAudio.prototype = Object.assign(Object.create(Audio.prototype), { constructor: PositionalAudio, @@ -40809,7 +40822,7 @@ }, - setRefDistance: function ( value ) { + setRefDistance: function (value) { this.panner.refDistance = value; @@ -40823,7 +40836,7 @@ }, - setRolloffFactor: function ( value ) { + setRolloffFactor: function (value) { this.panner.rolloffFactor = value; @@ -40837,7 +40850,7 @@ }, - setDistanceModel: function ( value ) { + setDistanceModel: function (value) { this.panner.distanceModel = value; @@ -40851,7 +40864,7 @@ }, - setMaxDistance: function ( value ) { + setMaxDistance: function (value) { this.panner.maxDistance = value; @@ -40859,7 +40872,7 @@ }, - setDirectionalCone: function ( coneInnerAngle, coneOuterAngle, coneOuterGain ) { + setDirectionalCone: function (coneInnerAngle, coneOuterAngle, coneOuterGain) { this.panner.coneInnerAngle = coneInnerAngle; this.panner.coneOuterAngle = coneOuterAngle; @@ -40869,7 +40882,7 @@ }, - updateMatrixWorld: ( function () { + updateMatrixWorld: (function () { var position = new Vector3(); var quaternion = new Quaternion(); @@ -40877,62 +40890,62 @@ var orientation = new Vector3(); - return function updateMatrixWorld( force ) { + return function updateMatrixWorld(force) { - Object3D.prototype.updateMatrixWorld.call( this, force ); + Object3D.prototype.updateMatrixWorld.call(this, force); var panner = this.panner; - this.matrixWorld.decompose( position, quaternion, scale ); + this.matrixWorld.decompose(position, quaternion, scale); - orientation.set( 0, 0, 1 ).applyQuaternion( quaternion ); + orientation.set(0, 0, 1).applyQuaternion(quaternion); - if ( panner.positionX ) { + if (panner.positionX) { // code path for Chrome and Firefox (see #14393) var endTime = this.context.currentTime + this.listener.timeDelta; - panner.positionX.linearRampToValueAtTime( position.x, endTime ); - panner.positionY.linearRampToValueAtTime( position.y, endTime ); - panner.positionZ.linearRampToValueAtTime( position.z, endTime ); - panner.orientationX.linearRampToValueAtTime( orientation.x, endTime ); - panner.orientationY.linearRampToValueAtTime( orientation.y, endTime ); - panner.orientationZ.linearRampToValueAtTime( orientation.z, endTime ); + panner.positionX.linearRampToValueAtTime(position.x, endTime); + panner.positionY.linearRampToValueAtTime(position.y, endTime); + panner.positionZ.linearRampToValueAtTime(position.z, endTime); + panner.orientationX.linearRampToValueAtTime(orientation.x, endTime); + panner.orientationY.linearRampToValueAtTime(orientation.y, endTime); + panner.orientationZ.linearRampToValueAtTime(orientation.z, endTime); } else { - panner.setPosition( position.x, position.y, position.z ); - panner.setOrientation( orientation.x, orientation.y, orientation.z ); + panner.setPosition(position.x, position.y, position.z); + panner.setOrientation(orientation.x, orientation.y, orientation.z); } }; - } )() + })() - } ); + }); /** * @author mrdoob / http://mrdoob.com/ */ - function AudioAnalyser( audio, fftSize ) { + function AudioAnalyser(audio, fftSize) { this.analyser = audio.context.createAnalyser(); this.analyser.fftSize = fftSize !== undefined ? fftSize : 2048; - this.data = new Uint8Array( this.analyser.frequencyBinCount ); + this.data = new Uint8Array(this.analyser.frequencyBinCount); - audio.getOutput().connect( this.analyser ); + audio.getOutput().connect(this.analyser); } - Object.assign( AudioAnalyser.prototype, { + Object.assign(AudioAnalyser.prototype, { getFrequencyData: function () { - this.analyser.getByteFrequencyData( this.data ); + this.analyser.getByteFrequencyData(this.data); return this.data; @@ -40942,9 +40955,9 @@ var value = 0, data = this.getFrequencyData(); - for ( var i = 0; i < data.length; i ++ ) { + for (var i = 0; i < data.length; i++) { - value += data[ i ]; + value += data[i]; } @@ -40952,7 +40965,7 @@ } - } ); + }); /** * @@ -40964,7 +40977,7 @@ * @author tschw */ - function PropertyMixer( binding, typeName, valueSize ) { + function PropertyMixer(binding, typeName, valueSize) { this.binding = binding; this.valueSize = valueSize; @@ -40972,7 +40985,7 @@ var bufferType = Float64Array, mixFunction; - switch ( typeName ) { + switch (typeName) { case 'quaternion': mixFunction = this._slerp; @@ -40989,7 +41002,7 @@ } - this.buffer = new bufferType( valueSize * 4 ); + this.buffer = new bufferType(valueSize * 4); // layout: [ incoming | accu0 | accu1 | orig ] // // interpolators can use .buffer as their .result @@ -41010,10 +41023,10 @@ } - Object.assign( PropertyMixer.prototype, { + Object.assign(PropertyMixer.prototype, { // accumulate data in the 'incoming' region into 'accu' - accumulate: function ( accuIndex, weight ) { + accumulate: function (accuIndex, weight) { // note: happily accumulating nothing when weight = 0, the caller knows // the weight and shouldn't have made the call in the first place @@ -41024,13 +41037,13 @@ currentWeight = this.cumulativeWeight; - if ( currentWeight === 0 ) { + if (currentWeight === 0) { // accuN := incoming * weight - for ( var i = 0; i !== stride; ++ i ) { + for (var i = 0; i !== stride; ++i) { - buffer[ offset + i ] = buffer[ i ]; + buffer[offset + i] = buffer[i]; } @@ -41042,7 +41055,7 @@ currentWeight += weight; var mix = weight / currentWeight; - this._mixBufferRegion( buffer, offset, 0, mix, stride ); + this._mixBufferRegion(buffer, offset, 0, mix, stride); } @@ -41051,7 +41064,7 @@ }, // apply the state of 'accu' to the binding when accus differ - apply: function ( accuIndex ) { + apply: function (accuIndex) { var stride = this.valueSize, buffer = this.buffer, @@ -41063,24 +41076,24 @@ this.cumulativeWeight = 0; - if ( weight < 1 ) { + if (weight < 1) { // accuN := accuN + original * ( 1 - cumulativeWeight ) var originalValueOffset = stride * 3; this._mixBufferRegion( - buffer, offset, originalValueOffset, 1 - weight, stride ); + buffer, offset, originalValueOffset, 1 - weight, stride); } - for ( var i = stride, e = stride + stride; i !== e; ++ i ) { + for (var i = stride, e = stride + stride; i !== e; ++i) { - if ( buffer[ i ] !== buffer[ i + stride ] ) { + if (buffer[i] !== buffer[i + stride]) { // value has changed -> update scene graph - binding.setValue( buffer, offset ); + binding.setValue(buffer, offset); break; } @@ -41099,12 +41112,12 @@ originalValueOffset = stride * 3; - binding.getValue( buffer, originalValueOffset ); + binding.getValue(buffer, originalValueOffset); // accu[0..1] := orig -- initially detect changes against the original - for ( var i = stride, e = originalValueOffset; i !== e; ++ i ) { + for (var i = stride, e = originalValueOffset; i !== e; ++i) { - buffer[ i ] = buffer[ originalValueOffset + ( i % stride ) ]; + buffer[i] = buffer[originalValueOffset + (i % stride)]; } @@ -41116,20 +41129,20 @@ restoreOriginalState: function () { var originalValueOffset = this.valueSize * 3; - this.binding.setValue( this.buffer, originalValueOffset ); + this.binding.setValue(this.buffer, originalValueOffset); }, // mix functions - _select: function ( buffer, dstOffset, srcOffset, t, stride ) { + _select: function (buffer, dstOffset, srcOffset, t, stride) { - if ( t >= 0.5 ) { + if (t >= 0.5) { - for ( var i = 0; i !== stride; ++ i ) { + for (var i = 0; i !== stride; ++i) { - buffer[ dstOffset + i ] = buffer[ srcOffset + i ]; + buffer[dstOffset + i] = buffer[srcOffset + i]; } @@ -41137,27 +41150,27 @@ }, - _slerp: function ( buffer, dstOffset, srcOffset, t ) { + _slerp: function (buffer, dstOffset, srcOffset, t) { - Quaternion.slerpFlat( buffer, dstOffset, buffer, dstOffset, buffer, srcOffset, t ); + Quaternion.slerpFlat(buffer, dstOffset, buffer, dstOffset, buffer, srcOffset, t); }, - _lerp: function ( buffer, dstOffset, srcOffset, t, stride ) { + _lerp: function (buffer, dstOffset, srcOffset, t, stride) { var s = 1 - t; - for ( var i = 0; i !== stride; ++ i ) { + for (var i = 0; i !== stride; ++i) { var j = dstOffset + i; - buffer[ j ] = buffer[ j ] * s + buffer[ srcOffset + i ] * t; + buffer[j] = buffer[j] * s + buffer[srcOffset + i] * t; } } - } ); + }); /** * @@ -41172,37 +41185,37 @@ // Characters [].:/ are reserved for track binding syntax. var RESERVED_CHARS_RE = '\\[\\]\\.:\\/'; - function Composite( targetGroup, path, optionalParsedPath ) { + function Composite(targetGroup, path, optionalParsedPath) { - var parsedPath = optionalParsedPath || PropertyBinding.parseTrackName( path ); + var parsedPath = optionalParsedPath || PropertyBinding.parseTrackName(path); this._targetGroup = targetGroup; - this._bindings = targetGroup.subscribe_( path, parsedPath ); + this._bindings = targetGroup.subscribe_(path, parsedPath); } - Object.assign( Composite.prototype, { + Object.assign(Composite.prototype, { - getValue: function ( array, offset ) { + getValue: function (array, offset) { this.bind(); // bind all binding var firstValidIndex = this._targetGroup.nCachedObjects_, - binding = this._bindings[ firstValidIndex ]; + binding = this._bindings[firstValidIndex]; // and only call .getValue on the first - if ( binding !== undefined ) binding.getValue( array, offset ); + if (binding !== undefined) binding.getValue(array, offset); }, - setValue: function ( array, offset ) { + setValue: function (array, offset) { var bindings = this._bindings; - for ( var i = this._targetGroup.nCachedObjects_, - n = bindings.length; i !== n; ++ i ) { + for (var i = this._targetGroup.nCachedObjects_, + n = bindings.length; i !== n; ++i) { - bindings[ i ].setValue( array, offset ); + bindings[i].setValue(array, offset); } @@ -41212,10 +41225,10 @@ var bindings = this._bindings; - for ( var i = this._targetGroup.nCachedObjects_, - n = bindings.length; i !== n; ++ i ) { + for (var i = this._targetGroup.nCachedObjects_, + n = bindings.length; i !== n; ++i) { - bindings[ i ].bind(); + bindings[i].bind(); } @@ -41225,42 +41238,42 @@ var bindings = this._bindings; - for ( var i = this._targetGroup.nCachedObjects_, - n = bindings.length; i !== n; ++ i ) { + for (var i = this._targetGroup.nCachedObjects_, + n = bindings.length; i !== n; ++i) { - bindings[ i ].unbind(); + bindings[i].unbind(); } } - } ); + }); - function PropertyBinding( rootNode, path, parsedPath ) { + function PropertyBinding(rootNode, path, parsedPath) { this.path = path; - this.parsedPath = parsedPath || PropertyBinding.parseTrackName( path ); + this.parsedPath = parsedPath || PropertyBinding.parseTrackName(path); - this.node = PropertyBinding.findNode( rootNode, this.parsedPath.nodeName ) || rootNode; + this.node = PropertyBinding.findNode(rootNode, this.parsedPath.nodeName) || rootNode; this.rootNode = rootNode; } - Object.assign( PropertyBinding, { + Object.assign(PropertyBinding, { Composite: Composite, - create: function ( root, path, parsedPath ) { + create: function (root, path, parsedPath) { - if ( ! ( root && root.isAnimationObjectGroup ) ) { + if (!(root && root.isAnimationObjectGroup)) { - return new PropertyBinding( root, path, parsedPath ); + return new PropertyBinding(root, path, parsedPath); } else { - return new PropertyBinding.Composite( root, path, parsedPath ); + return new PropertyBinding.Composite(root, path, parsedPath); } @@ -41273,17 +41286,17 @@ * @param {string} name Node name to be sanitized. * @return {string} */ - sanitizeNodeName: ( function () { + sanitizeNodeName: (function () { - var reservedRe = new RegExp( '[' + RESERVED_CHARS_RE + ']', 'g' ); + var reservedRe = new RegExp('[' + RESERVED_CHARS_RE + ']', 'g'); - return function sanitizeNodeName( name ) { + return function sanitizeNodeName(name) { - return name.replace( /\s/g, '_' ).replace( reservedRe, '' ); + return name.replace(/\s/g, '_').replace(reservedRe, ''); }; - }() ), + }()), parseTrackName: function () { @@ -41291,24 +41304,24 @@ // only latin characters, and the unicode \p{L} is not yet supported. So // instead, we exclude reserved characters and match everything else. var wordChar = '[^' + RESERVED_CHARS_RE + ']'; - var wordCharOrDot = '[^' + RESERVED_CHARS_RE.replace( '\\.', '' ) + ']'; + var wordCharOrDot = '[^' + RESERVED_CHARS_RE.replace('\\.', '') + ']'; // Parent directories, delimited by '/' or ':'. Currently unused, but must // be matched to parse the rest of the track name. - var directoryRe = /((?:WC+[\/:])*)/.source.replace( 'WC', wordChar ); + var directoryRe = /((?:WC+[\/:])*)/.source.replace('WC', wordChar); // Target node. May contain word characters (a-zA-Z0-9_) and '.' or '-'. - var nodeRe = /(WCOD+)?/.source.replace( 'WCOD', wordCharOrDot ); + var nodeRe = /(WCOD+)?/.source.replace('WCOD', wordCharOrDot); // Object on target node, and accessor. May not contain reserved // characters. Accessor may contain any character except closing bracket. - var objectRe = /(?:\.(WC+)(?:\[(.+)\])?)?/.source.replace( 'WC', wordChar ); + var objectRe = /(?:\.(WC+)(?:\[(.+)\])?)?/.source.replace('WC', wordChar); // Property and accessor. May not contain reserved characters. Accessor may // contain any non-bracket characters. - var propertyRe = /\.(WC+)(?:\[(.+)\])?/.source.replace( 'WC', wordChar ); + var propertyRe = /\.(WC+)(?:\[(.+)\])?/.source.replace('WC', wordChar); - var trackRe = new RegExp( '' + var trackRe = new RegExp('' + '^' + directoryRe + nodeRe @@ -41317,49 +41330,49 @@ + '$' ); - var supportedObjectNames = [ 'material', 'materials', 'bones' ]; + var supportedObjectNames = ['material', 'materials', 'bones']; - return function parseTrackName( trackName ) { + return function parseTrackName(trackName) { - var matches = trackRe.exec( trackName ); + var matches = trackRe.exec(trackName); - if ( ! matches ) { + if (!matches) { - throw new Error( 'PropertyBinding: Cannot parse trackName: ' + trackName ); + throw new Error('PropertyBinding: Cannot parse trackName: ' + trackName); } var results = { // directoryName: matches[ 1 ], // (tschw) currently unused - nodeName: matches[ 2 ], - objectName: matches[ 3 ], - objectIndex: matches[ 4 ], - propertyName: matches[ 5 ], // required - propertyIndex: matches[ 6 ] + nodeName: matches[2], + objectName: matches[3], + objectIndex: matches[4], + propertyName: matches[5], // required + propertyIndex: matches[6] }; - var lastDot = results.nodeName && results.nodeName.lastIndexOf( '.' ); + var lastDot = results.nodeName && results.nodeName.lastIndexOf('.'); - if ( lastDot !== undefined && lastDot !== - 1 ) { + if (lastDot !== undefined && lastDot !== - 1) { - var objectName = results.nodeName.substring( lastDot + 1 ); + var objectName = results.nodeName.substring(lastDot + 1); // Object names must be checked against a whitelist. Otherwise, there // is no way to parse 'foo.bar.baz': 'baz' must be a property, but // 'bar' could be the objectName, or part of a nodeName (which can // include '.' characters). - if ( supportedObjectNames.indexOf( objectName ) !== - 1 ) { + if (supportedObjectNames.indexOf(objectName) !== - 1) { - results.nodeName = results.nodeName.substring( 0, lastDot ); + results.nodeName = results.nodeName.substring(0, lastDot); results.objectName = objectName; } } - if ( results.propertyName === null || results.propertyName.length === 0 ) { + if (results.propertyName === null || results.propertyName.length === 0) { - throw new Error( 'PropertyBinding: can not parse propertyName from trackName: ' + trackName ); + throw new Error('PropertyBinding: can not parse propertyName from trackName: ' + trackName); } @@ -41369,20 +41382,20 @@ }(), - findNode: function ( root, nodeName ) { + findNode: function (root, nodeName) { - if ( ! nodeName || nodeName === "" || nodeName === "root" || nodeName === "." || nodeName === - 1 || nodeName === root.name || nodeName === root.uuid ) { + if (!nodeName || nodeName === "" || nodeName === "root" || nodeName === "." || nodeName === - 1 || nodeName === root.name || nodeName === root.uuid) { return root; } // search into skeleton bones. - if ( root.skeleton ) { + if (root.skeleton) { - var bone = root.skeleton.getBoneByName( nodeName ); + var bone = root.skeleton.getBoneByName(nodeName); - if ( bone !== undefined ) { + if (bone !== undefined) { return bone; @@ -41391,23 +41404,23 @@ } // search into node subtree. - if ( root.children ) { + if (root.children) { - var searchNodeSubtree = function ( children ) { + var searchNodeSubtree = function (children) { - for ( var i = 0; i < children.length; i ++ ) { + for (var i = 0; i < children.length; i++) { - var childNode = children[ i ]; + var childNode = children[i]; - if ( childNode.name === nodeName || childNode.uuid === nodeName ) { + if (childNode.name === nodeName || childNode.uuid === nodeName) { return childNode; } - var result = searchNodeSubtree( childNode.children ); + var result = searchNodeSubtree(childNode.children); - if ( result ) return result; + if (result) return result; } @@ -41415,9 +41428,9 @@ }; - var subTreeNode = searchNodeSubtree( root.children ); + var subTreeNode = searchNodeSubtree(root.children); - if ( subTreeNode ) { + if (subTreeNode) { return subTreeNode; @@ -41429,13 +41442,13 @@ } - } ); + }); - Object.assign( PropertyBinding.prototype, { // prototype, continued + Object.assign(PropertyBinding.prototype, { // prototype, continued // these are used to "bind" a nonexistent property - _getValue_unavailable: function () {}, - _setValue_unavailable: function () {}, + _getValue_unavailable: function () { }, + _setValue_unavailable: function () { }, BindingType: { Direct: 0, @@ -41452,33 +41465,33 @@ GetterByBindingType: [ - function getValue_direct( buffer, offset ) { + function getValue_direct(buffer, offset) { - buffer[ offset ] = this.node[ this.propertyName ]; + buffer[offset] = this.node[this.propertyName]; }, - function getValue_array( buffer, offset ) { + function getValue_array(buffer, offset) { var source = this.resolvedProperty; - for ( var i = 0, n = source.length; i !== n; ++ i ) { + for (var i = 0, n = source.length; i !== n; ++i) { - buffer[ offset ++ ] = source[ i ]; + buffer[offset++] = source[i]; } }, - function getValue_arrayElement( buffer, offset ) { + function getValue_arrayElement(buffer, offset) { - buffer[ offset ] = this.resolvedProperty[ this.propertyIndex ]; + buffer[offset] = this.resolvedProperty[this.propertyIndex]; }, - function getValue_toArray( buffer, offset ) { + function getValue_toArray(buffer, offset) { - this.resolvedProperty.toArray( buffer, offset ); + this.resolvedProperty.toArray(buffer, offset); } @@ -41489,22 +41502,22 @@ [ // Direct - function setValue_direct( buffer, offset ) { + function setValue_direct(buffer, offset) { - this.targetObject[ this.propertyName ] = buffer[ offset ]; + this.targetObject[this.propertyName] = buffer[offset]; }, - function setValue_direct_setNeedsUpdate( buffer, offset ) { + function setValue_direct_setNeedsUpdate(buffer, offset) { - this.targetObject[ this.propertyName ] = buffer[ offset ]; + this.targetObject[this.propertyName] = buffer[offset]; this.targetObject.needsUpdate = true; }, - function setValue_direct_setMatrixWorldNeedsUpdate( buffer, offset ) { + function setValue_direct_setMatrixWorldNeedsUpdate(buffer, offset) { - this.targetObject[ this.propertyName ] = buffer[ offset ]; + this.targetObject[this.propertyName] = buffer[offset]; this.targetObject.matrixWorldNeedsUpdate = true; } @@ -41513,25 +41526,25 @@ // EntireArray - function setValue_array( buffer, offset ) { + function setValue_array(buffer, offset) { var dest = this.resolvedProperty; - for ( var i = 0, n = dest.length; i !== n; ++ i ) { + for (var i = 0, n = dest.length; i !== n; ++i) { - dest[ i ] = buffer[ offset ++ ]; + dest[i] = buffer[offset++]; } }, - function setValue_array_setNeedsUpdate( buffer, offset ) { + function setValue_array_setNeedsUpdate(buffer, offset) { var dest = this.resolvedProperty; - for ( var i = 0, n = dest.length; i !== n; ++ i ) { + for (var i = 0, n = dest.length; i !== n; ++i) { - dest[ i ] = buffer[ offset ++ ]; + dest[i] = buffer[offset++]; } @@ -41539,13 +41552,13 @@ }, - function setValue_array_setMatrixWorldNeedsUpdate( buffer, offset ) { + function setValue_array_setMatrixWorldNeedsUpdate(buffer, offset) { var dest = this.resolvedProperty; - for ( var i = 0, n = dest.length; i !== n; ++ i ) { + for (var i = 0, n = dest.length; i !== n; ++i) { - dest[ i ] = buffer[ offset ++ ]; + dest[i] = buffer[offset++]; } @@ -41557,22 +41570,22 @@ // ArrayElement - function setValue_arrayElement( buffer, offset ) { + function setValue_arrayElement(buffer, offset) { - this.resolvedProperty[ this.propertyIndex ] = buffer[ offset ]; + this.resolvedProperty[this.propertyIndex] = buffer[offset]; }, - function setValue_arrayElement_setNeedsUpdate( buffer, offset ) { + function setValue_arrayElement_setNeedsUpdate(buffer, offset) { - this.resolvedProperty[ this.propertyIndex ] = buffer[ offset ]; + this.resolvedProperty[this.propertyIndex] = buffer[offset]; this.targetObject.needsUpdate = true; }, - function setValue_arrayElement_setMatrixWorldNeedsUpdate( buffer, offset ) { + function setValue_arrayElement_setMatrixWorldNeedsUpdate(buffer, offset) { - this.resolvedProperty[ this.propertyIndex ] = buffer[ offset ]; + this.resolvedProperty[this.propertyIndex] = buffer[offset]; this.targetObject.matrixWorldNeedsUpdate = true; } @@ -41581,22 +41594,22 @@ // HasToFromArray - function setValue_fromArray( buffer, offset ) { + function setValue_fromArray(buffer, offset) { - this.resolvedProperty.fromArray( buffer, offset ); + this.resolvedProperty.fromArray(buffer, offset); }, - function setValue_fromArray_setNeedsUpdate( buffer, offset ) { + function setValue_fromArray_setNeedsUpdate(buffer, offset) { - this.resolvedProperty.fromArray( buffer, offset ); + this.resolvedProperty.fromArray(buffer, offset); this.targetObject.needsUpdate = true; }, - function setValue_fromArray_setMatrixWorldNeedsUpdate( buffer, offset ) { + function setValue_fromArray_setMatrixWorldNeedsUpdate(buffer, offset) { - this.resolvedProperty.fromArray( buffer, offset ); + this.resolvedProperty.fromArray(buffer, offset); this.targetObject.matrixWorldNeedsUpdate = true; } @@ -41605,10 +41618,10 @@ ], - getValue: function getValue_unbound( targetArray, offset ) { + getValue: function getValue_unbound(targetArray, offset) { this.bind(); - this.getValue( targetArray, offset ); + this.getValue(targetArray, offset); // Note: This class uses a State pattern on a per-method basis: // 'bind' sets 'this.getValue' / 'setValue' and shadows the @@ -41618,10 +41631,10 @@ }, - setValue: function getValue_unbound( sourceArray, offset ) { + setValue: function getValue_unbound(sourceArray, offset) { this.bind(); - this.setValue( sourceArray, offset ); + this.setValue(sourceArray, offset); }, @@ -41635,9 +41648,9 @@ propertyName = parsedPath.propertyName, propertyIndex = parsedPath.propertyIndex; - if ( ! targetObject ) { + if (!targetObject) { - targetObject = PropertyBinding.findNode( this.rootNode, parsedPath.nodeName ) || this.rootNode; + targetObject = PropertyBinding.findNode(this.rootNode, parsedPath.nodeName) || this.rootNode; this.node = targetObject; @@ -41648,32 +41661,32 @@ this.setValue = this._setValue_unavailable; // ensure there is a value node - if ( ! targetObject ) { + if (!targetObject) { - console.error( 'THREE.PropertyBinding: Trying to update node for track: ' + this.path + ' but it wasn\'t found.' ); + console.error('THREE.PropertyBinding: Trying to update node for track: ' + this.path + ' but it wasn\'t found.'); return; } - if ( objectName ) { + if (objectName) { var objectIndex = parsedPath.objectIndex; // special cases were we need to reach deeper into the hierarchy to get the face materials.... - switch ( objectName ) { + switch (objectName) { case 'materials': - if ( ! targetObject.material ) { + if (!targetObject.material) { - console.error( 'THREE.PropertyBinding: Can not bind to material as node does not have a material.', this ); + console.error('THREE.PropertyBinding: Can not bind to material as node does not have a material.', this); return; } - if ( ! targetObject.material.materials ) { + if (!targetObject.material.materials) { - console.error( 'THREE.PropertyBinding: Can not bind to material.materials as node.material does not have a materials array.', this ); + console.error('THREE.PropertyBinding: Can not bind to material.materials as node.material does not have a materials array.', this); return; } @@ -41684,9 +41697,9 @@ case 'bones': - if ( ! targetObject.skeleton ) { + if (!targetObject.skeleton) { - console.error( 'THREE.PropertyBinding: Can not bind to bones as node does not have a skeleton.', this ); + console.error('THREE.PropertyBinding: Can not bind to bones as node does not have a skeleton.', this); return; } @@ -41697,9 +41710,9 @@ targetObject = targetObject.skeleton.bones; // support resolving morphTarget names into indices. - for ( var i = 0; i < targetObject.length; i ++ ) { + for (var i = 0; i < targetObject.length; i++) { - if ( targetObject[ i ].name === objectIndex ) { + if (targetObject[i].name === objectIndex) { objectIndex = i; break; @@ -41712,42 +41725,42 @@ default: - if ( targetObject[ objectName ] === undefined ) { + if (targetObject[objectName] === undefined) { - console.error( 'THREE.PropertyBinding: Can not bind to objectName of node undefined.', this ); + console.error('THREE.PropertyBinding: Can not bind to objectName of node undefined.', this); return; } - targetObject = targetObject[ objectName ]; + targetObject = targetObject[objectName]; } - if ( objectIndex !== undefined ) { + if (objectIndex !== undefined) { - if ( targetObject[ objectIndex ] === undefined ) { + if (targetObject[objectIndex] === undefined) { - console.error( 'THREE.PropertyBinding: Trying to bind to objectIndex of objectName, but is undefined.', this, targetObject ); + console.error('THREE.PropertyBinding: Trying to bind to objectIndex of objectName, but is undefined.', this, targetObject); return; } - targetObject = targetObject[ objectIndex ]; + targetObject = targetObject[objectIndex]; } } // resolve property - var nodeProperty = targetObject[ propertyName ]; + var nodeProperty = targetObject[propertyName]; - if ( nodeProperty === undefined ) { + if (nodeProperty === undefined) { var nodeName = parsedPath.nodeName; - console.error( 'THREE.PropertyBinding: Trying to update property for track: ' + nodeName + - '.' + propertyName + ' but it wasn\'t found.', targetObject ); + console.error('THREE.PropertyBinding: Trying to update property for track: ' + nodeName + + '.' + propertyName + ' but it wasn\'t found.', targetObject); return; } @@ -41757,11 +41770,11 @@ this.targetObject = targetObject; - if ( targetObject.needsUpdate !== undefined ) { // material + if (targetObject.needsUpdate !== undefined) { // material versioning = this.Versioning.NeedsUpdate; - } else if ( targetObject.matrixWorldNeedsUpdate !== undefined ) { // node transform + } else if (targetObject.matrixWorldNeedsUpdate !== undefined) { // node transform versioning = this.Versioning.MatrixWorldNeedsUpdate; @@ -41770,34 +41783,34 @@ // determine how the property gets bound var bindingType = this.BindingType.Direct; - if ( propertyIndex !== undefined ) { + if (propertyIndex !== undefined) { // access a sub element of the property array (only primitives are supported right now) - if ( propertyName === "morphTargetInfluences" ) { + if (propertyName === "morphTargetInfluences") { // potential optimization, skip this if propertyIndex is already an integer, and convert the integer string to a true integer. // support resolving morphTarget names into indices. - if ( ! targetObject.geometry ) { + if (!targetObject.geometry) { - console.error( 'THREE.PropertyBinding: Can not bind to morphTargetInfluences because node does not have a geometry.', this ); + console.error('THREE.PropertyBinding: Can not bind to morphTargetInfluences because node does not have a geometry.', this); return; } - if ( targetObject.geometry.isBufferGeometry ) { + if (targetObject.geometry.isBufferGeometry) { - if ( ! targetObject.geometry.morphAttributes ) { + if (!targetObject.geometry.morphAttributes) { - console.error( 'THREE.PropertyBinding: Can not bind to morphTargetInfluences because node does not have a geometry.morphAttributes.', this ); + console.error('THREE.PropertyBinding: Can not bind to morphTargetInfluences because node does not have a geometry.morphAttributes.', this); return; } - for ( var i = 0; i < this.node.geometry.morphAttributes.position.length; i ++ ) { + for (var i = 0; i < this.node.geometry.morphAttributes.position.length; i++) { - if ( targetObject.geometry.morphAttributes.position[ i ].name === propertyIndex ) { + if (targetObject.geometry.morphAttributes.position[i].name === propertyIndex) { propertyIndex = i; break; @@ -41809,16 +41822,16 @@ } else { - if ( ! targetObject.geometry.morphTargets ) { + if (!targetObject.geometry.morphTargets) { - console.error( 'THREE.PropertyBinding: Can not bind to morphTargetInfluences because node does not have a geometry.morphTargets.', this ); + console.error('THREE.PropertyBinding: Can not bind to morphTargetInfluences because node does not have a geometry.morphTargets.', this); return; } - for ( var i = 0; i < this.node.geometry.morphTargets.length; i ++ ) { + for (var i = 0; i < this.node.geometry.morphTargets.length; i++) { - if ( targetObject.geometry.morphTargets[ i ].name === propertyIndex ) { + if (targetObject.geometry.morphTargets[i].name === propertyIndex) { propertyIndex = i; break; @@ -41836,7 +41849,7 @@ this.resolvedProperty = nodeProperty; this.propertyIndex = propertyIndex; - } else if ( nodeProperty.fromArray !== undefined && nodeProperty.toArray !== undefined ) { + } else if (nodeProperty.fromArray !== undefined && nodeProperty.toArray !== undefined) { // must use copy for Object3D.Euler/Quaternion @@ -41844,7 +41857,7 @@ this.resolvedProperty = nodeProperty; - } else if ( Array.isArray( nodeProperty ) ) { + } else if (Array.isArray(nodeProperty)) { bindingType = this.BindingType.EntireArray; @@ -41857,8 +41870,8 @@ } // select getter / setter - this.getValue = this.GetterByBindingType[ bindingType ]; - this.setValue = this.SetterByBindingTypeAndVersioning[ bindingType ][ versioning ]; + this.getValue = this.GetterByBindingType[bindingType]; + this.setValue = this.SetterByBindingTypeAndVersioning[bindingType][versioning]; }, @@ -41873,16 +41886,16 @@ } - } ); + }); //!\ DECLARE ALIAS AFTER assign prototype ! - Object.assign( PropertyBinding.prototype, { + Object.assign(PropertyBinding.prototype, { // initial state of these methods that calls 'bind' _getValue_unbound: PropertyBinding.prototype.getValue, _setValue_unbound: PropertyBinding.prototype.setValue, - } ); + }); /** * @@ -41920,7 +41933,7 @@ this.uuid = _Math.generateUUID(); // cached objects followed by the active ones - this._objects = Array.prototype.slice.call( arguments ); + this._objects = Array.prototype.slice.call(arguments); this.nCachedObjects_ = 0; // threshold // note: read by PropertyBinding.Composite @@ -41928,9 +41941,9 @@ var indices = {}; this._indicesByUUID = indices; // for bookkeeping - for ( var i = 0, n = arguments.length; i !== n; ++ i ) { + for (var i = 0, n = arguments.length; i !== n; ++i) { - indices[ arguments[ i ].uuid ] = i; + indices[arguments[i].uuid] = i; } @@ -41965,7 +41978,7 @@ } - Object.assign( AnimationObjectGroup.prototype, { + Object.assign(AnimationObjectGroup.prototype, { isAnimationObjectGroup: true, @@ -41981,71 +41994,71 @@ nBindings = bindings.length, knownObject = undefined; - for ( var i = 0, n = arguments.length; i !== n; ++ i ) { + for (var i = 0, n = arguments.length; i !== n; ++i) { - var object = arguments[ i ], + var object = arguments[i], uuid = object.uuid, - index = indicesByUUID[ uuid ]; + index = indicesByUUID[uuid]; - if ( index === undefined ) { + if (index === undefined) { // unknown object -> add it to the ACTIVE region - index = nObjects ++; - indicesByUUID[ uuid ] = index; - objects.push( object ); + index = nObjects++; + indicesByUUID[uuid] = index; + objects.push(object); // accounting is done, now do the same for all bindings - for ( var j = 0, m = nBindings; j !== m; ++ j ) { + for (var j = 0, m = nBindings; j !== m; ++j) { - bindings[ j ].push( new PropertyBinding( object, paths[ j ], parsedPaths[ j ] ) ); + bindings[j].push(new PropertyBinding(object, paths[j], parsedPaths[j])); } - } else if ( index < nCachedObjects ) { + } else if (index < nCachedObjects) { - knownObject = objects[ index ]; + knownObject = objects[index]; // move existing object to the ACTIVE region - var firstActiveIndex = -- nCachedObjects, - lastCachedObject = objects[ firstActiveIndex ]; + var firstActiveIndex = --nCachedObjects, + lastCachedObject = objects[firstActiveIndex]; - indicesByUUID[ lastCachedObject.uuid ] = index; - objects[ index ] = lastCachedObject; + indicesByUUID[lastCachedObject.uuid] = index; + objects[index] = lastCachedObject; - indicesByUUID[ uuid ] = firstActiveIndex; - objects[ firstActiveIndex ] = object; + indicesByUUID[uuid] = firstActiveIndex; + objects[firstActiveIndex] = object; // accounting is done, now do the same for all bindings - for ( var j = 0, m = nBindings; j !== m; ++ j ) { + for (var j = 0, m = nBindings; j !== m; ++j) { - var bindingsForPath = bindings[ j ], - lastCached = bindingsForPath[ firstActiveIndex ], - binding = bindingsForPath[ index ]; + var bindingsForPath = bindings[j], + lastCached = bindingsForPath[firstActiveIndex], + binding = bindingsForPath[index]; - bindingsForPath[ index ] = lastCached; + bindingsForPath[index] = lastCached; - if ( binding === undefined ) { + if (binding === undefined) { // since we do not bother to create new bindings // for objects that are cached, the binding may // or may not exist - binding = new PropertyBinding( object, paths[ j ], parsedPaths[ j ] ); + binding = new PropertyBinding(object, paths[j], parsedPaths[j]); } - bindingsForPath[ firstActiveIndex ] = binding; + bindingsForPath[firstActiveIndex] = binding; } - } else if ( objects[ index ] !== knownObject ) { + } else if (objects[index] !== knownObject) { - console.error( 'THREE.AnimationObjectGroup: Different objects with the same UUID ' + - 'detected. Clean the caches or recreate your infrastructure when reloading scenes.' ); + console.error('THREE.AnimationObjectGroup: Different objects with the same UUID ' + + 'detected. Clean the caches or recreate your infrastructure when reloading scenes.'); } // else the object is already where we want it to be @@ -42063,35 +42076,35 @@ bindings = this._bindings, nBindings = bindings.length; - for ( var i = 0, n = arguments.length; i !== n; ++ i ) { + for (var i = 0, n = arguments.length; i !== n; ++i) { - var object = arguments[ i ], + var object = arguments[i], uuid = object.uuid, - index = indicesByUUID[ uuid ]; + index = indicesByUUID[uuid]; - if ( index !== undefined && index >= nCachedObjects ) { + if (index !== undefined && index >= nCachedObjects) { // move existing object into the CACHED region - var lastCachedIndex = nCachedObjects ++, - firstActiveObject = objects[ lastCachedIndex ]; + var lastCachedIndex = nCachedObjects++, + firstActiveObject = objects[lastCachedIndex]; - indicesByUUID[ firstActiveObject.uuid ] = index; - objects[ index ] = firstActiveObject; + indicesByUUID[firstActiveObject.uuid] = index; + objects[index] = firstActiveObject; - indicesByUUID[ uuid ] = lastCachedIndex; - objects[ lastCachedIndex ] = object; + indicesByUUID[uuid] = lastCachedIndex; + objects[lastCachedIndex] = object; // accounting is done, now do the same for all bindings - for ( var j = 0, m = nBindings; j !== m; ++ j ) { + for (var j = 0, m = nBindings; j !== m; ++j) { - var bindingsForPath = bindings[ j ], - firstActive = bindingsForPath[ lastCachedIndex ], - binding = bindingsForPath[ index ]; + var bindingsForPath = bindings[j], + firstActive = bindingsForPath[lastCachedIndex], + binding = bindingsForPath[index]; - bindingsForPath[ index ] = firstActive; - bindingsForPath[ lastCachedIndex ] = binding; + bindingsForPath[index] = firstActive; + bindingsForPath[lastCachedIndex] = binding; } @@ -42113,44 +42126,44 @@ bindings = this._bindings, nBindings = bindings.length; - for ( var i = 0, n = arguments.length; i !== n; ++ i ) { + for (var i = 0, n = arguments.length; i !== n; ++i) { - var object = arguments[ i ], + var object = arguments[i], uuid = object.uuid, - index = indicesByUUID[ uuid ]; + index = indicesByUUID[uuid]; - if ( index !== undefined ) { + if (index !== undefined) { - delete indicesByUUID[ uuid ]; + delete indicesByUUID[uuid]; - if ( index < nCachedObjects ) { + if (index < nCachedObjects) { // object is cached, shrink the CACHED region - var firstActiveIndex = -- nCachedObjects, - lastCachedObject = objects[ firstActiveIndex ], - lastIndex = -- nObjects, - lastObject = objects[ lastIndex ]; + var firstActiveIndex = --nCachedObjects, + lastCachedObject = objects[firstActiveIndex], + lastIndex = --nObjects, + lastObject = objects[lastIndex]; // last cached object takes this object's place - indicesByUUID[ lastCachedObject.uuid ] = index; - objects[ index ] = lastCachedObject; + indicesByUUID[lastCachedObject.uuid] = index; + objects[index] = lastCachedObject; // last object goes to the activated slot and pop - indicesByUUID[ lastObject.uuid ] = firstActiveIndex; - objects[ firstActiveIndex ] = lastObject; + indicesByUUID[lastObject.uuid] = firstActiveIndex; + objects[firstActiveIndex] = lastObject; objects.pop(); // accounting is done, now do the same for all bindings - for ( var j = 0, m = nBindings; j !== m; ++ j ) { + for (var j = 0, m = nBindings; j !== m; ++j) { - var bindingsForPath = bindings[ j ], - lastCached = bindingsForPath[ firstActiveIndex ], - last = bindingsForPath[ lastIndex ]; + var bindingsForPath = bindings[j], + lastCached = bindingsForPath[firstActiveIndex], + last = bindingsForPath[lastIndex]; - bindingsForPath[ index ] = lastCached; - bindingsForPath[ firstActiveIndex ] = last; + bindingsForPath[index] = lastCached; + bindingsForPath[firstActiveIndex] = last; bindingsForPath.pop(); } @@ -42159,20 +42172,20 @@ // object is active, just swap with the last and pop - var lastIndex = -- nObjects, - lastObject = objects[ lastIndex ]; + var lastIndex = --nObjects, + lastObject = objects[lastIndex]; - indicesByUUID[ lastObject.uuid ] = index; - objects[ index ] = lastObject; + indicesByUUID[lastObject.uuid] = index; + objects[index] = lastObject; objects.pop(); // accounting is done, now do the same for all bindings - for ( var j = 0, m = nBindings; j !== m; ++ j ) { + for (var j = 0, m = nBindings; j !== m; ++j) { - var bindingsForPath = bindings[ j ]; + var bindingsForPath = bindings[j]; - bindingsForPath[ index ] = bindingsForPath[ lastIndex ]; + bindingsForPath[index] = bindingsForPath[lastIndex]; bindingsForPath.pop(); } @@ -42189,36 +42202,36 @@ // Internal interface used by befriended PropertyBinding.Composite: - subscribe_: function ( path, parsedPath ) { + subscribe_: function (path, parsedPath) { // returns an array of bindings for the given path that is changed // according to the contained objects in the group var indicesByPath = this._bindingsIndicesByPath, - index = indicesByPath[ path ], + index = indicesByPath[path], bindings = this._bindings; - if ( index !== undefined ) return bindings[ index ]; + if (index !== undefined) return bindings[index]; var paths = this._paths, parsedPaths = this._parsedPaths, objects = this._objects, nObjects = objects.length, nCachedObjects = this.nCachedObjects_, - bindingsForPath = new Array( nObjects ); + bindingsForPath = new Array(nObjects); index = bindings.length; - indicesByPath[ path ] = index; + indicesByPath[path] = index; - paths.push( path ); - parsedPaths.push( parsedPath ); - bindings.push( bindingsForPath ); + paths.push(path); + parsedPaths.push(parsedPath); + bindings.push(bindingsForPath); - for ( var i = nCachedObjects, n = objects.length; i !== n; ++ i ) { + for (var i = nCachedObjects, n = objects.length; i !== n; ++i) { - var object = objects[ i ]; - bindingsForPath[ i ] = new PropertyBinding( object, path, parsedPath ); + var object = objects[i]; + bindingsForPath[i] = new PropertyBinding(object, path, parsedPath); } @@ -42226,39 +42239,39 @@ }, - unsubscribe_: function ( path ) { + unsubscribe_: function (path) { // tells the group to forget about a property path and no longer // update the array previously obtained with 'subscribe_' var indicesByPath = this._bindingsIndicesByPath, - index = indicesByPath[ path ]; + index = indicesByPath[path]; - if ( index !== undefined ) { + if (index !== undefined) { var paths = this._paths, parsedPaths = this._parsedPaths, bindings = this._bindings, lastBindingsIndex = bindings.length - 1, - lastBindings = bindings[ lastBindingsIndex ], - lastBindingsPath = path[ lastBindingsIndex ]; + lastBindings = bindings[lastBindingsIndex], + lastBindingsPath = path[lastBindingsIndex]; - indicesByPath[ lastBindingsPath ] = index; + indicesByPath[lastBindingsPath] = index; - bindings[ index ] = lastBindings; + bindings[index] = lastBindings; bindings.pop(); - parsedPaths[ index ] = parsedPaths[ lastBindingsIndex ]; + parsedPaths[index] = parsedPaths[lastBindingsIndex]; parsedPaths.pop(); - paths[ index ] = paths[ lastBindingsIndex ]; + paths[index] = paths[lastBindingsIndex]; paths.pop(); } } - } ); + }); /** * @@ -42271,7 +42284,7 @@ * */ - function AnimationAction( mixer, clip, localRoot ) { + function AnimationAction(mixer, clip, localRoot) { this._mixer = mixer; this._clip = clip; @@ -42279,17 +42292,17 @@ var tracks = clip.tracks, nTracks = tracks.length, - interpolants = new Array( nTracks ); + interpolants = new Array(nTracks); var interpolantSettings = { endingStart: ZeroCurvatureEnding, endingEnd: ZeroCurvatureEnding }; - for ( var i = 0; i !== nTracks; ++ i ) { + for (var i = 0; i !== nTracks; ++i) { - var interpolant = tracks[ i ].createInterpolant( null ); - interpolants[ i ] = interpolant; + var interpolant = tracks[i].createInterpolant(null); + interpolants[i] = interpolant; interpolant.settings = interpolantSettings; } @@ -42299,7 +42312,7 @@ this._interpolants = interpolants; // bound by the mixer // inside: PropertyMixer (managed by the mixer) - this._propertyBindings = new Array( nTracks ); + this._propertyBindings = new Array(nTracks); this._cacheIndex = null; // for the memory manager this._byClipCacheIndex = null; // for the memory manager @@ -42329,20 +42342,20 @@ this.paused = false; // true -> zero effective time scale this.enabled = true; // false -> zero effective weight - this.clampWhenFinished = false; // keep feeding the last frame? + this.clampWhenFinished = false; // keep feeding the last frame? - this.zeroSlopeAtStart = true; // for smooth interpolation w/o separate - this.zeroSlopeAtEnd = true; // clips for start, loop and end + this.zeroSlopeAtStart = true; // for smooth interpolation w/o separate + this.zeroSlopeAtEnd = true; // clips for start, loop and end } - Object.assign( AnimationAction.prototype, { + Object.assign(AnimationAction.prototype, { // State & Scheduling play: function () { - this._mixer._activateAction( this ); + this._mixer._activateAction(this); return this; @@ -42350,7 +42363,7 @@ stop: function () { - this._mixer._deactivateAction( this ); + this._mixer._deactivateAction(this); return this.reset(); @@ -42371,19 +42384,19 @@ isRunning: function () { - return this.enabled && ! this.paused && this.timeScale !== 0 && - this._startTime === null && this._mixer._isActiveAction( this ); + return this.enabled && !this.paused && this.timeScale !== 0 && + this._startTime === null && this._mixer._isActiveAction(this); }, // return true when play has been called isScheduled: function () { - return this._mixer._isActiveAction( this ); + return this._mixer._isActiveAction(this); }, - startAt: function ( time ) { + startAt: function (time) { this._startTime = time; @@ -42391,7 +42404,7 @@ }, - setLoop: function ( mode, repetitions ) { + setLoop: function (mode, repetitions) { this.loop = mode; this.repetitions = repetitions; @@ -42405,7 +42418,7 @@ // set the weight stopping any scheduled fading // although .enabled = false yields an effective weight of zero, this // method does *not* change .enabled, because it would be confusing - setEffectiveWeight: function ( weight ) { + setEffectiveWeight: function (weight) { this.weight = weight; @@ -42423,24 +42436,24 @@ }, - fadeIn: function ( duration ) { + fadeIn: function (duration) { - return this._scheduleFading( duration, 0, 1 ); + return this._scheduleFading(duration, 0, 1); }, - fadeOut: function ( duration ) { + fadeOut: function (duration) { - return this._scheduleFading( duration, 1, 0 ); + return this._scheduleFading(duration, 1, 0); }, - crossFadeFrom: function ( fadeOutAction, duration, warp ) { + crossFadeFrom: function (fadeOutAction, duration, warp) { - fadeOutAction.fadeOut( duration ); - this.fadeIn( duration ); + fadeOutAction.fadeOut(duration); + this.fadeIn(duration); - if ( warp ) { + if (warp) { var fadeInDuration = this._clip.duration, fadeOutDuration = fadeOutAction._clip.duration, @@ -42448,8 +42461,8 @@ startEndRatio = fadeOutDuration / fadeInDuration, endStartRatio = fadeInDuration / fadeOutDuration; - fadeOutAction.warp( 1.0, startEndRatio, duration ); - this.warp( endStartRatio, 1.0, duration ); + fadeOutAction.warp(1.0, startEndRatio, duration); + this.warp(endStartRatio, 1.0, duration); } @@ -42457,9 +42470,9 @@ }, - crossFadeTo: function ( fadeInAction, duration, warp ) { + crossFadeTo: function (fadeInAction, duration, warp) { - return fadeInAction.crossFadeFrom( this, duration, warp ); + return fadeInAction.crossFadeFrom(this, duration, warp); }, @@ -42467,10 +42480,10 @@ var weightInterpolant = this._weightInterpolant; - if ( weightInterpolant !== null ) { + if (weightInterpolant !== null) { this._weightInterpolant = null; - this._mixer._takeBackControlInterpolant( weightInterpolant ); + this._mixer._takeBackControlInterpolant(weightInterpolant); } @@ -42483,7 +42496,7 @@ // set the time scale stopping any scheduled warping // although .paused = true yields an effective time scale of zero, this // method does *not* change .paused, because it would be confusing - setEffectiveTimeScale: function ( timeScale ) { + setEffectiveTimeScale: function (timeScale) { this.timeScale = timeScale; this._effectiveTimeScale = this.paused ? 0 : timeScale; @@ -42499,7 +42512,7 @@ }, - setDuration: function ( duration ) { + setDuration: function (duration) { this.timeScale = this._clip.duration / duration; @@ -42507,7 +42520,7 @@ }, - syncWith: function ( action ) { + syncWith: function (action) { this.time = action.time; this.timeScale = action.timeScale; @@ -42516,20 +42529,20 @@ }, - halt: function ( duration ) { + halt: function (duration) { - return this.warp( this._effectiveTimeScale, 0, duration ); + return this.warp(this._effectiveTimeScale, 0, duration); }, - warp: function ( startTimeScale, endTimeScale, duration ) { + warp: function (startTimeScale, endTimeScale, duration) { var mixer = this._mixer, now = mixer.time, interpolant = this._timeScaleInterpolant, timeScale = this.timeScale; - if ( interpolant === null ) { + if (interpolant === null) { interpolant = mixer._lendControlInterpolant(); this._timeScaleInterpolant = interpolant; @@ -42539,11 +42552,11 @@ var times = interpolant.parameterPositions, values = interpolant.sampleValues; - times[ 0 ] = now; - times[ 1 ] = now + duration; + times[0] = now; + times[1] = now + duration; - values[ 0 ] = startTimeScale / timeScale; - values[ 1 ] = endTimeScale / timeScale; + values[0] = startTimeScale / timeScale; + values[1] = endTimeScale / timeScale; return this; @@ -42553,10 +42566,10 @@ var timeScaleInterpolant = this._timeScaleInterpolant; - if ( timeScaleInterpolant !== null ) { + if (timeScaleInterpolant !== null) { this._timeScaleInterpolant = null; - this._mixer._takeBackControlInterpolant( timeScaleInterpolant ); + this._mixer._takeBackControlInterpolant(timeScaleInterpolant); } @@ -42586,27 +42599,27 @@ // Interna - _update: function ( time, deltaTime, timeDirection, accuIndex ) { + _update: function (time, deltaTime, timeDirection, accuIndex) { // called by the mixer - if ( ! this.enabled ) { + if (!this.enabled) { // call ._updateWeight() to update ._effectiveWeight - this._updateWeight( time ); + this._updateWeight(time); return; } var startTime = this._startTime; - if ( startTime !== null ) { + if (startTime !== null) { // check for scheduled start of action - var timeRunning = ( time - startTime ) * timeDirection; - if ( timeRunning < 0 || timeDirection === 0 ) { + var timeRunning = (time - startTime) * timeDirection; + if (timeRunning < 0 || timeDirection === 0) { return; // yet to come / don't decide when delta = 0 @@ -42621,23 +42634,23 @@ // apply time scale and advance time - deltaTime *= this._updateTimeScale( time ); - var clipTime = this._updateTime( deltaTime ); + deltaTime *= this._updateTimeScale(time); + var clipTime = this._updateTime(deltaTime); // note: _updateTime may disable the action resulting in // an effective weight of 0 - var weight = this._updateWeight( time ); + var weight = this._updateWeight(time); - if ( weight > 0 ) { + if (weight > 0) { var interpolants = this._interpolants; var propertyMixers = this._propertyBindings; - for ( var j = 0, m = interpolants.length; j !== m; ++ j ) { + for (var j = 0, m = interpolants.length; j !== m; ++j) { - interpolants[ j ].evaluate( clipTime ); - propertyMixers[ j ].accumulate( accuIndex, weight ); + interpolants[j].evaluate(clipTime); + propertyMixers[j].accumulate(accuIndex, weight); } @@ -42645,26 +42658,26 @@ }, - _updateWeight: function ( time ) { + _updateWeight: function (time) { var weight = 0; - if ( this.enabled ) { + if (this.enabled) { weight = this.weight; var interpolant = this._weightInterpolant; - if ( interpolant !== null ) { + if (interpolant !== null) { - var interpolantValue = interpolant.evaluate( time )[ 0 ]; + var interpolantValue = interpolant.evaluate(time)[0]; weight *= interpolantValue; - if ( time > interpolant.parameterPositions[ 1 ] ) { + if (time > interpolant.parameterPositions[1]) { this.stopFading(); - if ( interpolantValue === 0 ) { + if (interpolantValue === 0) { // faded out, disable this.enabled = false; @@ -42682,27 +42695,27 @@ }, - _updateTimeScale: function ( time ) { + _updateTimeScale: function (time) { var timeScale = 0; - if ( ! this.paused ) { + if (!this.paused) { timeScale = this.timeScale; var interpolant = this._timeScaleInterpolant; - if ( interpolant !== null ) { + if (interpolant !== null) { - var interpolantValue = interpolant.evaluate( time )[ 0 ]; + var interpolantValue = interpolant.evaluate(time)[0]; timeScale *= interpolantValue; - if ( time > interpolant.parameterPositions[ 1 ] ) { + if (time > interpolant.parameterPositions[1]) { this.stopWarping(); - if ( timeScale === 0 ) { + if (timeScale === 0) { // motion has halted, pause this.paused = true; @@ -42725,67 +42738,67 @@ }, - _updateTime: function ( deltaTime ) { + _updateTime: function (deltaTime) { var time = this.time + deltaTime; var duration = this._clip.duration; var loop = this.loop; var loopCount = this._loopCount; - var pingPong = ( loop === LoopPingPong ); + var pingPong = (loop === LoopPingPong); - if ( deltaTime === 0 ) { + if (deltaTime === 0) { - if ( loopCount === - 1 ) return time; + if (loopCount === - 1) return time; - return ( pingPong && ( loopCount & 1 ) === 1 ) ? duration - time : time; + return (pingPong && (loopCount & 1) === 1) ? duration - time : time; } - if ( loop === LoopOnce ) { + if (loop === LoopOnce) { - if ( loopCount === - 1 ) { + if (loopCount === - 1) { // just started this._loopCount = 0; - this._setEndings( true, true, false ); + this._setEndings(true, true, false); } handle_stop: { - if ( time >= duration ) { + if (time >= duration) { time = duration; - } else if ( time < 0 ) { + } else if (time < 0) { time = 0; } else break handle_stop; - if ( this.clampWhenFinished ) this.paused = true; + if (this.clampWhenFinished) this.paused = true; else this.enabled = false; - this._mixer.dispatchEvent( { + this._mixer.dispatchEvent({ type: 'finished', action: this, direction: deltaTime < 0 ? - 1 : 1 - } ); + }); } } else { // repetitive Repeat or PingPong - if ( loopCount === - 1 ) { + if (loopCount === - 1) { // just started - if ( deltaTime >= 0 ) { + if (deltaTime >= 0) { loopCount = 0; - this._setEndings( true, this.repetitions === 0, pingPong ); + this._setEndings(true, this.repetitions === 0, pingPong); } else { @@ -42793,65 +42806,65 @@ // transition through zero counts as a repetition, // so leave loopCount at -1 - this._setEndings( this.repetitions === 0, true, pingPong ); + this._setEndings(this.repetitions === 0, true, pingPong); } } - if ( time >= duration || time < 0 ) { + if (time >= duration || time < 0) { // wrap around - var loopDelta = Math.floor( time / duration ); // signed + var loopDelta = Math.floor(time / duration); // signed time -= duration * loopDelta; - loopCount += Math.abs( loopDelta ); + loopCount += Math.abs(loopDelta); var pending = this.repetitions - loopCount; - if ( pending <= 0 ) { + if (pending <= 0) { // have to stop (switch state, clamp time, fire event) - if ( this.clampWhenFinished ) this.paused = true; + if (this.clampWhenFinished) this.paused = true; else this.enabled = false; time = deltaTime > 0 ? duration : 0; - this._mixer.dispatchEvent( { + this._mixer.dispatchEvent({ type: 'finished', action: this, direction: deltaTime > 0 ? 1 : - 1 - } ); + }); } else { // keep running - if ( pending === 1 ) { + if (pending === 1) { // entering the last round var atStart = deltaTime < 0; - this._setEndings( atStart, ! atStart, pingPong ); + this._setEndings(atStart, !atStart, pingPong); } else { - this._setEndings( false, false, pingPong ); + this._setEndings(false, false, pingPong); } this._loopCount = loopCount; - this._mixer.dispatchEvent( { + this._mixer.dispatchEvent({ type: 'loop', action: this, loopDelta: loopDelta - } ); + }); } } - if ( pingPong && ( loopCount & 1 ) === 1 ) { + if (pingPong && (loopCount & 1) === 1) { // invert time for the "pong round" @@ -42867,20 +42880,20 @@ }, - _setEndings: function ( atStart, atEnd, pingPong ) { + _setEndings: function (atStart, atEnd, pingPong) { var settings = this._interpolantSettings; - if ( pingPong ) { + if (pingPong) { - settings.endingStart = ZeroSlopeEnding; - settings.endingEnd = ZeroSlopeEnding; + settings.endingStart = ZeroSlopeEnding; + settings.endingEnd = ZeroSlopeEnding; } else { // assuming for LoopOnce atStart == atEnd == true - if ( atStart ) { + if (atStart) { settings.endingStart = this.zeroSlopeAtStart ? ZeroSlopeEnding : ZeroCurvatureEnding; @@ -42890,13 +42903,13 @@ } - if ( atEnd ) { + if (atEnd) { settings.endingEnd = this.zeroSlopeAtEnd ? ZeroSlopeEnding : ZeroCurvatureEnding; } else { - settings.endingEnd = WrapAroundEnding; + settings.endingEnd = WrapAroundEnding; } @@ -42904,12 +42917,12 @@ }, - _scheduleFading: function ( duration, weightNow, weightThen ) { + _scheduleFading: function (duration, weightNow, weightThen) { var mixer = this._mixer, now = mixer.time, interpolant = this._weightInterpolant; - if ( interpolant === null ) { + if (interpolant === null) { interpolant = mixer._lendControlInterpolant(); this._weightInterpolant = interpolant; @@ -42919,14 +42932,14 @@ var times = interpolant.parameterPositions, values = interpolant.sampleValues; - times[ 0 ] = now; values[ 0 ] = weightNow; - times[ 1 ] = now + duration; values[ 1 ] = weightThen; + times[0] = now; values[0] = weightNow; + times[1] = now + duration; values[1] = weightThen; return this; } - } ); + }); /** * @@ -42938,7 +42951,7 @@ * @author tschw */ - function AnimationMixer( root ) { + function AnimationMixer(root) { this._root = root; this._initMemoryManager(); @@ -42950,11 +42963,11 @@ } - AnimationMixer.prototype = Object.assign( Object.create( EventDispatcher.prototype ), { + AnimationMixer.prototype = Object.assign(Object.create(EventDispatcher.prototype), { constructor: AnimationMixer, - _bindAction: function ( action, prototypeAction ) { + _bindAction: function (action, prototypeAction) { var root = action._localRoot || this._root, tracks = action._clip.tracks, @@ -42963,37 +42976,37 @@ interpolants = action._interpolants, rootUuid = root.uuid, bindingsByRoot = this._bindingsByRootAndName, - bindingsByName = bindingsByRoot[ rootUuid ]; + bindingsByName = bindingsByRoot[rootUuid]; - if ( bindingsByName === undefined ) { + if (bindingsByName === undefined) { bindingsByName = {}; - bindingsByRoot[ rootUuid ] = bindingsByName; + bindingsByRoot[rootUuid] = bindingsByName; } - for ( var i = 0; i !== nTracks; ++ i ) { + for (var i = 0; i !== nTracks; ++i) { - var track = tracks[ i ], + var track = tracks[i], trackName = track.name, - binding = bindingsByName[ trackName ]; + binding = bindingsByName[trackName]; - if ( binding !== undefined ) { + if (binding !== undefined) { - bindings[ i ] = binding; + bindings[i] = binding; } else { - binding = bindings[ i ]; + binding = bindings[i]; - if ( binding !== undefined ) { + if (binding !== undefined) { // existing binding, make sure the cache knows - if ( binding._cacheIndex === null ) { + if (binding._cacheIndex === null) { - ++ binding.referenceCount; - this._addInactiveBinding( binding, rootUuid, trackName ); + ++binding.referenceCount; + this._addInactiveBinding(binding, rootUuid, trackName); } @@ -43002,88 +43015,88 @@ } var path = prototypeAction && prototypeAction. - _propertyBindings[ i ].binding.parsedPath; + _propertyBindings[i].binding.parsedPath; binding = new PropertyMixer( - PropertyBinding.create( root, trackName, path ), - track.ValueTypeName, track.getValueSize() ); + PropertyBinding.create(root, trackName, path), + track.ValueTypeName, track.getValueSize()); - ++ binding.referenceCount; - this._addInactiveBinding( binding, rootUuid, trackName ); + ++binding.referenceCount; + this._addInactiveBinding(binding, rootUuid, trackName); - bindings[ i ] = binding; + bindings[i] = binding; } - interpolants[ i ].resultBuffer = binding.buffer; + interpolants[i].resultBuffer = binding.buffer; } }, - _activateAction: function ( action ) { + _activateAction: function (action) { - if ( ! this._isActiveAction( action ) ) { + if (!this._isActiveAction(action)) { - if ( action._cacheIndex === null ) { + if (action._cacheIndex === null) { // this action has been forgotten by the cache, but the user // appears to be still using it -> rebind - var rootUuid = ( action._localRoot || this._root ).uuid, + var rootUuid = (action._localRoot || this._root).uuid, clipUuid = action._clip.uuid, - actionsForClip = this._actionsByClip[ clipUuid ]; + actionsForClip = this._actionsByClip[clipUuid]; - this._bindAction( action, - actionsForClip && actionsForClip.knownActions[ 0 ] ); + this._bindAction(action, + actionsForClip && actionsForClip.knownActions[0]); - this._addInactiveAction( action, clipUuid, rootUuid ); + this._addInactiveAction(action, clipUuid, rootUuid); } var bindings = action._propertyBindings; // increment reference counts / sort out state - for ( var i = 0, n = bindings.length; i !== n; ++ i ) { + for (var i = 0, n = bindings.length; i !== n; ++i) { - var binding = bindings[ i ]; + var binding = bindings[i]; - if ( binding.useCount ++ === 0 ) { + if (binding.useCount++ === 0) { - this._lendBinding( binding ); + this._lendBinding(binding); binding.saveOriginalState(); } } - this._lendAction( action ); + this._lendAction(action); } }, - _deactivateAction: function ( action ) { + _deactivateAction: function (action) { - if ( this._isActiveAction( action ) ) { + if (this._isActiveAction(action)) { var bindings = action._propertyBindings; // decrement reference counts / sort out state - for ( var i = 0, n = bindings.length; i !== n; ++ i ) { + for (var i = 0, n = bindings.length; i !== n; ++i) { - var binding = bindings[ i ]; + var binding = bindings[i]; - if ( -- binding.useCount === 0 ) { + if (--binding.useCount === 0) { binding.restoreOriginalState(); - this._takeBackBinding( binding ); + this._takeBackBinding(binding); } } - this._takeBackAction( action ); + this._takeBackAction(action); } @@ -43160,56 +43173,56 @@ // Memory management for AnimationAction objects - _isActiveAction: function ( action ) { + _isActiveAction: function (action) { var index = action._cacheIndex; return index !== null && index < this._nActiveActions; }, - _addInactiveAction: function ( action, clipUuid, rootUuid ) { + _addInactiveAction: function (action, clipUuid, rootUuid) { var actions = this._actions, actionsByClip = this._actionsByClip, - actionsForClip = actionsByClip[ clipUuid ]; + actionsForClip = actionsByClip[clipUuid]; - if ( actionsForClip === undefined ) { + if (actionsForClip === undefined) { actionsForClip = { - knownActions: [ action ], + knownActions: [action], actionByRoot: {} }; action._byClipCacheIndex = 0; - actionsByClip[ clipUuid ] = actionsForClip; + actionsByClip[clipUuid] = actionsForClip; } else { var knownActions = actionsForClip.knownActions; action._byClipCacheIndex = knownActions.length; - knownActions.push( action ); + knownActions.push(action); } action._cacheIndex = actions.length; - actions.push( action ); + actions.push(action); - actionsForClip.actionByRoot[ rootUuid ] = action; + actionsForClip.actionByRoot[rootUuid] = action; }, - _removeInactiveAction: function ( action ) { + _removeInactiveAction: function (action) { var actions = this._actions, - lastInactiveAction = actions[ actions.length - 1 ], + lastInactiveAction = actions[actions.length - 1], cacheIndex = action._cacheIndex; lastInactiveAction._cacheIndex = cacheIndex; - actions[ cacheIndex ] = lastInactiveAction; + actions[cacheIndex] = lastInactiveAction; actions.pop(); action._cacheIndex = null; @@ -43217,46 +43230,46 @@ var clipUuid = action._clip.uuid, actionsByClip = this._actionsByClip, - actionsForClip = actionsByClip[ clipUuid ], + actionsForClip = actionsByClip[clipUuid], knownActionsForClip = actionsForClip.knownActions, lastKnownAction = - knownActionsForClip[ knownActionsForClip.length - 1 ], + knownActionsForClip[knownActionsForClip.length - 1], byClipCacheIndex = action._byClipCacheIndex; lastKnownAction._byClipCacheIndex = byClipCacheIndex; - knownActionsForClip[ byClipCacheIndex ] = lastKnownAction; + knownActionsForClip[byClipCacheIndex] = lastKnownAction; knownActionsForClip.pop(); action._byClipCacheIndex = null; var actionByRoot = actionsForClip.actionByRoot, - rootUuid = ( action._localRoot || this._root ).uuid; + rootUuid = (action._localRoot || this._root).uuid; - delete actionByRoot[ rootUuid ]; + delete actionByRoot[rootUuid]; - if ( knownActionsForClip.length === 0 ) { + if (knownActionsForClip.length === 0) { - delete actionsByClip[ clipUuid ]; + delete actionsByClip[clipUuid]; } - this._removeInactiveBindingsForAction( action ); + this._removeInactiveBindingsForAction(action); }, - _removeInactiveBindingsForAction: function ( action ) { + _removeInactiveBindingsForAction: function (action) { var bindings = action._propertyBindings; - for ( var i = 0, n = bindings.length; i !== n; ++ i ) { + for (var i = 0, n = bindings.length; i !== n; ++i) { - var binding = bindings[ i ]; + var binding = bindings[i]; - if ( -- binding.referenceCount === 0 ) { + if (--binding.referenceCount === 0) { - this._removeInactiveBinding( binding ); + this._removeInactiveBinding(binding); } @@ -43264,7 +43277,7 @@ }, - _lendAction: function ( action ) { + _lendAction: function (action) { // [ active actions | inactive actions ] // [ active actions >| inactive actions ] @@ -43275,19 +43288,19 @@ var actions = this._actions, prevIndex = action._cacheIndex, - lastActiveIndex = this._nActiveActions ++, + lastActiveIndex = this._nActiveActions++, - firstInactiveAction = actions[ lastActiveIndex ]; + firstInactiveAction = actions[lastActiveIndex]; action._cacheIndex = lastActiveIndex; - actions[ lastActiveIndex ] = action; + actions[lastActiveIndex] = action; firstInactiveAction._cacheIndex = prevIndex; - actions[ prevIndex ] = firstInactiveAction; + actions[prevIndex] = firstInactiveAction; }, - _takeBackAction: function ( action ) { + _takeBackAction: function (action) { // [ active actions | inactive actions ] // [ active actions |< inactive actions ] @@ -43298,100 +43311,100 @@ var actions = this._actions, prevIndex = action._cacheIndex, - firstInactiveIndex = -- this._nActiveActions, + firstInactiveIndex = --this._nActiveActions, - lastActiveAction = actions[ firstInactiveIndex ]; + lastActiveAction = actions[firstInactiveIndex]; action._cacheIndex = firstInactiveIndex; - actions[ firstInactiveIndex ] = action; + actions[firstInactiveIndex] = action; lastActiveAction._cacheIndex = prevIndex; - actions[ prevIndex ] = lastActiveAction; + actions[prevIndex] = lastActiveAction; }, // Memory management for PropertyMixer objects - _addInactiveBinding: function ( binding, rootUuid, trackName ) { + _addInactiveBinding: function (binding, rootUuid, trackName) { var bindingsByRoot = this._bindingsByRootAndName, - bindingByName = bindingsByRoot[ rootUuid ], + bindingByName = bindingsByRoot[rootUuid], bindings = this._bindings; - if ( bindingByName === undefined ) { + if (bindingByName === undefined) { bindingByName = {}; - bindingsByRoot[ rootUuid ] = bindingByName; + bindingsByRoot[rootUuid] = bindingByName; } - bindingByName[ trackName ] = binding; + bindingByName[trackName] = binding; binding._cacheIndex = bindings.length; - bindings.push( binding ); + bindings.push(binding); }, - _removeInactiveBinding: function ( binding ) { + _removeInactiveBinding: function (binding) { var bindings = this._bindings, propBinding = binding.binding, rootUuid = propBinding.rootNode.uuid, trackName = propBinding.path, bindingsByRoot = this._bindingsByRootAndName, - bindingByName = bindingsByRoot[ rootUuid ], + bindingByName = bindingsByRoot[rootUuid], - lastInactiveBinding = bindings[ bindings.length - 1 ], + lastInactiveBinding = bindings[bindings.length - 1], cacheIndex = binding._cacheIndex; lastInactiveBinding._cacheIndex = cacheIndex; - bindings[ cacheIndex ] = lastInactiveBinding; + bindings[cacheIndex] = lastInactiveBinding; bindings.pop(); - delete bindingByName[ trackName ]; + delete bindingByName[trackName]; remove_empty_map: { - for ( var _ in bindingByName ) break remove_empty_map; // eslint-disable-line no-unused-vars + for (var _ in bindingByName) break remove_empty_map; // eslint-disable-line no-unused-vars - delete bindingsByRoot[ rootUuid ]; + delete bindingsByRoot[rootUuid]; } }, - _lendBinding: function ( binding ) { + _lendBinding: function (binding) { var bindings = this._bindings, prevIndex = binding._cacheIndex, - lastActiveIndex = this._nActiveBindings ++, + lastActiveIndex = this._nActiveBindings++, - firstInactiveBinding = bindings[ lastActiveIndex ]; + firstInactiveBinding = bindings[lastActiveIndex]; binding._cacheIndex = lastActiveIndex; - bindings[ lastActiveIndex ] = binding; + bindings[lastActiveIndex] = binding; firstInactiveBinding._cacheIndex = prevIndex; - bindings[ prevIndex ] = firstInactiveBinding; + bindings[prevIndex] = firstInactiveBinding; }, - _takeBackBinding: function ( binding ) { + _takeBackBinding: function (binding) { var bindings = this._bindings, prevIndex = binding._cacheIndex, - firstInactiveIndex = -- this._nActiveBindings, + firstInactiveIndex = --this._nActiveBindings, - lastActiveBinding = bindings[ firstInactiveIndex ]; + lastActiveBinding = bindings[firstInactiveIndex]; binding._cacheIndex = firstInactiveIndex; - bindings[ firstInactiveIndex ] = binding; + bindings[firstInactiveIndex] = binding; lastActiveBinding._cacheIndex = prevIndex; - bindings[ prevIndex ] = lastActiveBinding; + bindings[prevIndex] = lastActiveBinding; }, @@ -43401,17 +43414,17 @@ _lendControlInterpolant: function () { var interpolants = this._controlInterpolants, - lastActiveIndex = this._nActiveControlInterpolants ++, - interpolant = interpolants[ lastActiveIndex ]; + lastActiveIndex = this._nActiveControlInterpolants++, + interpolant = interpolants[lastActiveIndex]; - if ( interpolant === undefined ) { + if (interpolant === undefined) { interpolant = new LinearInterpolant( - new Float32Array( 2 ), new Float32Array( 2 ), - 1, this._controlInterpolantsResultBuffer ); + new Float32Array(2), new Float32Array(2), + 1, this._controlInterpolantsResultBuffer); interpolant.__cacheIndex = lastActiveIndex; - interpolants[ lastActiveIndex ] = interpolant; + interpolants[lastActiveIndex] = interpolant; } @@ -43419,47 +43432,47 @@ }, - _takeBackControlInterpolant: function ( interpolant ) { + _takeBackControlInterpolant: function (interpolant) { var interpolants = this._controlInterpolants, prevIndex = interpolant.__cacheIndex, - firstInactiveIndex = -- this._nActiveControlInterpolants, + firstInactiveIndex = --this._nActiveControlInterpolants, - lastActiveInterpolant = interpolants[ firstInactiveIndex ]; + lastActiveInterpolant = interpolants[firstInactiveIndex]; interpolant.__cacheIndex = firstInactiveIndex; - interpolants[ firstInactiveIndex ] = interpolant; + interpolants[firstInactiveIndex] = interpolant; lastActiveInterpolant.__cacheIndex = prevIndex; - interpolants[ prevIndex ] = lastActiveInterpolant; + interpolants[prevIndex] = lastActiveInterpolant; }, - _controlInterpolantsResultBuffer: new Float32Array( 1 ), + _controlInterpolantsResultBuffer: new Float32Array(1), // return an action for a clip optionally using a custom root target // object (this method allocates a lot of dynamic memory in case a // previously unknown clip/root combination is specified) - clipAction: function ( clip, optionalRoot ) { + clipAction: function (clip, optionalRoot) { var root = optionalRoot || this._root, rootUuid = root.uuid, clipObject = typeof clip === 'string' ? - AnimationClip.findByName( root, clip ) : clip, + AnimationClip.findByName(root, clip) : clip, clipUuid = clipObject !== null ? clipObject.uuid : clip, - actionsForClip = this._actionsByClip[ clipUuid ], + actionsForClip = this._actionsByClip[clipUuid], prototypeAction = null; - if ( actionsForClip !== undefined ) { + if (actionsForClip !== undefined) { var existingAction = - actionsForClip.actionByRoot[ rootUuid ]; + actionsForClip.actionByRoot[rootUuid]; - if ( existingAction !== undefined ) { + if (existingAction !== undefined) { return existingAction; @@ -43467,45 +43480,45 @@ // we know the clip, so we don't have to parse all // the bindings again but can just copy - prototypeAction = actionsForClip.knownActions[ 0 ]; + prototypeAction = actionsForClip.knownActions[0]; // also, take the clip from the prototype action - if ( clipObject === null ) + if (clipObject === null) clipObject = prototypeAction._clip; } // clip must be known when specified via string - if ( clipObject === null ) return null; + if (clipObject === null) return null; // allocate all resources required to run it - var newAction = new AnimationAction( this, clipObject, optionalRoot ); + var newAction = new AnimationAction(this, clipObject, optionalRoot); - this._bindAction( newAction, prototypeAction ); + this._bindAction(newAction, prototypeAction); // and make the action known to the memory manager - this._addInactiveAction( newAction, clipUuid, rootUuid ); + this._addInactiveAction(newAction, clipUuid, rootUuid); return newAction; }, // get an existing action - existingAction: function ( clip, optionalRoot ) { + existingAction: function (clip, optionalRoot) { var root = optionalRoot || this._root, rootUuid = root.uuid, clipObject = typeof clip === 'string' ? - AnimationClip.findByName( root, clip ) : clip, + AnimationClip.findByName(root, clip) : clip, clipUuid = clipObject ? clipObject.uuid : clip, - actionsForClip = this._actionsByClip[ clipUuid ]; + actionsForClip = this._actionsByClip[clipUuid]; - if ( actionsForClip !== undefined ) { + if (actionsForClip !== undefined) { - return actionsForClip.actionByRoot[ rootUuid ] || null; + return actionsForClip.actionByRoot[rootUuid] || null; } @@ -43524,15 +43537,15 @@ this._nActiveActions = 0; this._nActiveBindings = 0; - for ( var i = 0; i !== nActions; ++ i ) { + for (var i = 0; i !== nActions; ++i) { - actions[ i ].reset(); + actions[i].reset(); } - for ( var i = 0; i !== nBindings; ++ i ) { + for (var i = 0; i !== nBindings; ++i) { - bindings[ i ].useCount = 0; + bindings[i].useCount = 0; } @@ -43541,7 +43554,7 @@ }, // advance the time and update apply the animation - update: function ( deltaTime ) { + update: function (deltaTime) { deltaTime *= this.timeScale; @@ -43549,17 +43562,17 @@ nActions = this._nActiveActions, time = this.time += deltaTime, - timeDirection = Math.sign( deltaTime ), + timeDirection = Math.sign(deltaTime), accuIndex = this._accuIndex ^= 1; // run active actions - for ( var i = 0; i !== nActions; ++ i ) { + for (var i = 0; i !== nActions; ++i) { - var action = actions[ i ]; + var action = actions[i]; - action._update( time, deltaTime, timeDirection, accuIndex ); + action._update(time, deltaTime, timeDirection, accuIndex); } @@ -43568,9 +43581,9 @@ var bindings = this._bindings, nBindings = this._nActiveBindings; - for ( var i = 0; i !== nBindings; ++ i ) { + for (var i = 0; i !== nBindings; ++i) { - bindings[ i ].apply( accuIndex ); + bindings[i].apply(accuIndex); } @@ -43586,14 +43599,14 @@ }, // free all resources specific to a particular clip - uncacheClip: function ( clip ) { + uncacheClip: function (clip) { var actions = this._actions, clipUuid = clip.uuid, actionsByClip = this._actionsByClip, - actionsForClip = actionsByClip[ clipUuid ]; + actionsForClip = actionsByClip[clipUuid]; - if ( actionsForClip !== undefined ) { + if (actionsForClip !== undefined) { // note: just calling _removeInactiveAction would mess up the // iteration state and also require updating the state we can @@ -43601,62 +43614,62 @@ var actionsToRemove = actionsForClip.knownActions; - for ( var i = 0, n = actionsToRemove.length; i !== n; ++ i ) { + for (var i = 0, n = actionsToRemove.length; i !== n; ++i) { - var action = actionsToRemove[ i ]; + var action = actionsToRemove[i]; - this._deactivateAction( action ); + this._deactivateAction(action); var cacheIndex = action._cacheIndex, - lastInactiveAction = actions[ actions.length - 1 ]; + lastInactiveAction = actions[actions.length - 1]; action._cacheIndex = null; action._byClipCacheIndex = null; lastInactiveAction._cacheIndex = cacheIndex; - actions[ cacheIndex ] = lastInactiveAction; + actions[cacheIndex] = lastInactiveAction; actions.pop(); - this._removeInactiveBindingsForAction( action ); + this._removeInactiveBindingsForAction(action); } - delete actionsByClip[ clipUuid ]; + delete actionsByClip[clipUuid]; } }, // free all resources specific to a particular root target object - uncacheRoot: function ( root ) { + uncacheRoot: function (root) { var rootUuid = root.uuid, actionsByClip = this._actionsByClip; - for ( var clipUuid in actionsByClip ) { + for (var clipUuid in actionsByClip) { - var actionByRoot = actionsByClip[ clipUuid ].actionByRoot, - action = actionByRoot[ rootUuid ]; + var actionByRoot = actionsByClip[clipUuid].actionByRoot, + action = actionByRoot[rootUuid]; - if ( action !== undefined ) { + if (action !== undefined) { - this._deactivateAction( action ); - this._removeInactiveAction( action ); + this._deactivateAction(action); + this._removeInactiveAction(action); } } var bindingsByRoot = this._bindingsByRootAndName, - bindingByName = bindingsByRoot[ rootUuid ]; + bindingByName = bindingsByRoot[rootUuid]; - if ( bindingByName !== undefined ) { + if (bindingByName !== undefined) { - for ( var trackName in bindingByName ) { + for (var trackName in bindingByName) { - var binding = bindingByName[ trackName ]; + var binding = bindingByName[trackName]; binding.restoreOriginalState(); - this._removeInactiveBinding( binding ); + this._removeInactiveBinding(binding); } @@ -43665,31 +43678,31 @@ }, // remove a targeted clip from the cache - uncacheAction: function ( clip, optionalRoot ) { + uncacheAction: function (clip, optionalRoot) { - var action = this.existingAction( clip, optionalRoot ); + var action = this.existingAction(clip, optionalRoot); - if ( action !== null ) { + if (action !== null) { - this._deactivateAction( action ); - this._removeInactiveAction( action ); + this._deactivateAction(action); + this._removeInactiveAction(action); } } - } ); + }); /** * @author mrdoob / http://mrdoob.com/ */ - function Uniform( value ) { + function Uniform(value) { - if ( typeof value === 'string' ) { + if (typeof value === 'string') { - console.warn( 'THREE.Uniform: Type parameter is no longer needed.' ); - value = arguments[ 1 ]; + console.warn('THREE.Uniform: Type parameter is no longer needed.'); + value = arguments[1]; } @@ -43699,7 +43712,7 @@ Uniform.prototype.clone = function () { - return new Uniform( this.value.clone === undefined ? this.value : this.value.clone() ); + return new Uniform(this.value.clone === undefined ? this.value : this.value.clone()); }; @@ -43709,22 +43722,22 @@ function InstancedBufferGeometry() { - BufferGeometry.call( this ); + BufferGeometry.call(this); this.type = 'InstancedBufferGeometry'; this.maxInstancedCount = undefined; } - InstancedBufferGeometry.prototype = Object.assign( Object.create( BufferGeometry.prototype ), { + InstancedBufferGeometry.prototype = Object.assign(Object.create(BufferGeometry.prototype), { constructor: InstancedBufferGeometry, isInstancedBufferGeometry: true, - copy: function ( source ) { + copy: function (source) { - BufferGeometry.prototype.copy.call( this, source ); + BufferGeometry.prototype.copy.call(this, source); this.maxInstancedCount = source.maxInstancedCount; @@ -43734,33 +43747,33 @@ clone: function () { - return new this.constructor().copy( this ); + return new this.constructor().copy(this); } - } ); + }); /** * @author benaadams / https://twitter.com/ben_a_adams */ - function InstancedInterleavedBuffer( array, stride, meshPerAttribute ) { + function InstancedInterleavedBuffer(array, stride, meshPerAttribute) { - InterleavedBuffer.call( this, array, stride ); + InterleavedBuffer.call(this, array, stride); this.meshPerAttribute = meshPerAttribute || 1; } - InstancedInterleavedBuffer.prototype = Object.assign( Object.create( InterleavedBuffer.prototype ), { + InstancedInterleavedBuffer.prototype = Object.assign(Object.create(InterleavedBuffer.prototype), { constructor: InstancedInterleavedBuffer, isInstancedInterleavedBuffer: true, - copy: function ( source ) { + copy: function (source) { - InterleavedBuffer.prototype.copy.call( this, source ); + InterleavedBuffer.prototype.copy.call(this, source); this.meshPerAttribute = source.meshPerAttribute; @@ -43768,39 +43781,39 @@ } - } ); + }); /** * @author benaadams / https://twitter.com/ben_a_adams */ - function InstancedBufferAttribute( array, itemSize, normalized, meshPerAttribute ) { + function InstancedBufferAttribute(array, itemSize, normalized, meshPerAttribute) { - if ( typeof ( normalized ) === 'number' ) { + if (typeof (normalized) === 'number') { meshPerAttribute = normalized; normalized = false; - console.error( 'THREE.InstancedBufferAttribute: The constructor now expects normalized as the third argument.' ); + console.error('THREE.InstancedBufferAttribute: The constructor now expects normalized as the third argument.'); } - BufferAttribute.call( this, array, itemSize, normalized ); + BufferAttribute.call(this, array, itemSize, normalized); this.meshPerAttribute = meshPerAttribute || 1; } - InstancedBufferAttribute.prototype = Object.assign( Object.create( BufferAttribute.prototype ), { + InstancedBufferAttribute.prototype = Object.assign(Object.create(BufferAttribute.prototype), { constructor: InstancedBufferAttribute, isInstancedBufferAttribute: true, - copy: function ( source ) { + copy: function (source) { - BufferAttribute.prototype.copy.call( this, source ); + BufferAttribute.prototype.copy.call(this, source); this.meshPerAttribute = source.meshPerAttribute; @@ -43808,7 +43821,7 @@ } - } ); + }); /** * @author mrdoob / http://mrdoob.com/ @@ -43816,9 +43829,9 @@ * @author stephomi / http://stephaneginier.com/ */ - function Raycaster( origin, direction, near, far ) { + function Raycaster(origin, direction, near, far) { - this.ray = new Ray( origin, direction ); + this.ray = new Ray(origin, direction); // direction is assumed to be normalized (for accurate distance calculations) this.near = near || 0; @@ -43832,38 +43845,38 @@ Sprite: {} }; - Object.defineProperties( this.params, { + Object.defineProperties(this.params, { PointCloud: { get: function () { - console.warn( 'THREE.Raycaster: params.PointCloud has been renamed to params.Points.' ); + console.warn('THREE.Raycaster: params.PointCloud has been renamed to params.Points.'); return this.Points; } } - } ); + }); } - function ascSort( a, b ) { + function ascSort(a, b) { return a.distance - b.distance; } - function intersectObject( object, raycaster, intersects, recursive ) { + function intersectObject(object, raycaster, intersects, recursive) { - if ( object.visible === false ) return; + if (object.visible === false) return; - object.raycast( raycaster, intersects ); + object.raycast(raycaster, intersects); - if ( recursive === true ) { + if (recursive === true) { var children = object.children; - for ( var i = 0, l = children.length; i < l; i ++ ) { + for (var i = 0, l = children.length; i < l; i++) { - intersectObject( children[ i ], raycaster, intersects, true ); + intersectObject(children[i], raycaster, intersects, true); } @@ -43871,74 +43884,74 @@ } - Object.assign( Raycaster.prototype, { + Object.assign(Raycaster.prototype, { linePrecision: 1, - set: function ( origin, direction ) { + set: function (origin, direction) { // direction is assumed to be normalized (for accurate distance calculations) - this.ray.set( origin, direction ); + this.ray.set(origin, direction); }, - setFromCamera: function ( coords, camera ) { + setFromCamera: function (coords, camera) { - if ( ( camera && camera.isPerspectiveCamera ) ) { + if ((camera && camera.isPerspectiveCamera)) { - this.ray.origin.setFromMatrixPosition( camera.matrixWorld ); - this.ray.direction.set( coords.x, coords.y, 0.5 ).unproject( camera ).sub( this.ray.origin ).normalize(); + this.ray.origin.setFromMatrixPosition(camera.matrixWorld); + this.ray.direction.set(coords.x, coords.y, 0.5).unproject(camera).sub(this.ray.origin).normalize(); - } else if ( ( camera && camera.isOrthographicCamera ) ) { + } else if ((camera && camera.isOrthographicCamera)) { - this.ray.origin.set( coords.x, coords.y, ( camera.near + camera.far ) / ( camera.near - camera.far ) ).unproject( camera ); // set origin in plane of camera - this.ray.direction.set( 0, 0, - 1 ).transformDirection( camera.matrixWorld ); + this.ray.origin.set(coords.x, coords.y, (camera.near + camera.far) / (camera.near - camera.far)).unproject(camera); // set origin in plane of camera + this.ray.direction.set(0, 0, - 1).transformDirection(camera.matrixWorld); } else { - console.error( 'THREE.Raycaster: Unsupported camera type.' ); + console.error('THREE.Raycaster: Unsupported camera type.'); } }, - intersectObject: function ( object, recursive, optionalTarget ) { + intersectObject: function (object, recursive, optionalTarget) { var intersects = optionalTarget || []; - intersectObject( object, this, intersects, recursive ); + intersectObject(object, this, intersects, recursive); - intersects.sort( ascSort ); + intersects.sort(ascSort); return intersects; }, - intersectObjects: function ( objects, recursive, optionalTarget ) { + intersectObjects: function (objects, recursive, optionalTarget) { var intersects = optionalTarget || []; - if ( Array.isArray( objects ) === false ) { + if (Array.isArray(objects) === false) { - console.warn( 'THREE.Raycaster.intersectObjects: objects is not an Array.' ); + console.warn('THREE.Raycaster.intersectObjects: objects is not an Array.'); return intersects; } - for ( var i = 0, l = objects.length; i < l; i ++ ) { + for (var i = 0, l = objects.length; i < l; i++) { - intersectObject( objects[ i ], this, intersects, recursive ); + intersectObject(objects[i], this, intersects, recursive); } - intersects.sort( ascSort ); + intersects.sort(ascSort); return intersects; } - } ); + }); /** * @author bhouston / http://clara.io @@ -43950,19 +43963,19 @@ * The azimuthal angle (theta) is measured from the positive z-axiz. */ - function Spherical( radius, phi, theta ) { + function Spherical(radius, phi, theta) { - this.radius = ( radius !== undefined ) ? radius : 1.0; - this.phi = ( phi !== undefined ) ? phi : 0; // polar angle - this.theta = ( theta !== undefined ) ? theta : 0; // azimuthal angle + this.radius = (radius !== undefined) ? radius : 1.0; + this.phi = (phi !== undefined) ? phi : 0; // polar angle + this.theta = (theta !== undefined) ? theta : 0; // azimuthal angle return this; } - Object.assign( Spherical.prototype, { + Object.assign(Spherical.prototype, { - set: function ( radius, phi, theta ) { + set: function (radius, phi, theta) { this.radius = radius; this.phi = phi; @@ -43974,11 +43987,11 @@ clone: function () { - return new this.constructor().copy( this ); + return new this.constructor().copy(this); }, - copy: function ( other ) { + copy: function (other) { this.radius = other.radius; this.phi = other.phi; @@ -43992,31 +44005,31 @@ makeSafe: function () { var EPS = 0.000001; - this.phi = Math.max( EPS, Math.min( Math.PI - EPS, this.phi ) ); + this.phi = Math.max(EPS, Math.min(Math.PI - EPS, this.phi)); return this; }, - setFromVector3: function ( v ) { + setFromVector3: function (v) { - return this.setFromCartesianCoords( v.x, v.y, v.z ); + return this.setFromCartesianCoords(v.x, v.y, v.z); }, - setFromCartesianCoords: function ( x, y, z ) { + setFromCartesianCoords: function (x, y, z) { - this.radius = Math.sqrt( x * x + y * y + z * z ); + this.radius = Math.sqrt(x * x + y * y + z * z); - if ( this.radius === 0 ) { + if (this.radius === 0) { this.theta = 0; this.phi = 0; } else { - this.theta = Math.atan2( x, z ); - this.phi = Math.acos( _Math.clamp( y / this.radius, - 1, 1 ) ); + this.theta = Math.atan2(x, z); + this.phi = Math.acos(_Math.clamp(y / this.radius, - 1, 1)); } @@ -44024,7 +44037,7 @@ } - } ); + }); /** * @author Mugen87 / https://github.com/Mugen87 @@ -44033,19 +44046,19 @@ * */ - function Cylindrical( radius, theta, y ) { + function Cylindrical(radius, theta, y) { - this.radius = ( radius !== undefined ) ? radius : 1.0; // distance from the origin to a point in the x-z plane - this.theta = ( theta !== undefined ) ? theta : 0; // counterclockwise angle in the x-z plane measured in radians from the positive z-axis - this.y = ( y !== undefined ) ? y : 0; // height above the x-z plane + this.radius = (radius !== undefined) ? radius : 1.0; // distance from the origin to a point in the x-z plane + this.theta = (theta !== undefined) ? theta : 0; // counterclockwise angle in the x-z plane measured in radians from the positive z-axis + this.y = (y !== undefined) ? y : 0; // height above the x-z plane return this; } - Object.assign( Cylindrical.prototype, { + Object.assign(Cylindrical.prototype, { - set: function ( radius, theta, y ) { + set: function (radius, theta, y) { this.radius = radius; this.theta = theta; @@ -44057,11 +44070,11 @@ clone: function () { - return new this.constructor().copy( this ); + return new this.constructor().copy(this); }, - copy: function ( other ) { + copy: function (other) { this.radius = other.radius; this.theta = other.theta; @@ -44071,53 +44084,53 @@ }, - setFromVector3: function ( v ) { + setFromVector3: function (v) { - return this.setFromCartesianCoords( v.x, v.y, v.z ); + return this.setFromCartesianCoords(v.x, v.y, v.z); }, - setFromCartesianCoords: function ( x, y, z ) { + setFromCartesianCoords: function (x, y, z) { - this.radius = Math.sqrt( x * x + z * z ); - this.theta = Math.atan2( x, z ); + this.radius = Math.sqrt(x * x + z * z); + this.theta = Math.atan2(x, z); this.y = y; return this; } - } ); + }); /** * @author bhouston / http://clara.io */ - function Box2( min, max ) { + function Box2(min, max) { - this.min = ( min !== undefined ) ? min : new Vector2( + Infinity, + Infinity ); - this.max = ( max !== undefined ) ? max : new Vector2( - Infinity, - Infinity ); + this.min = (min !== undefined) ? min : new Vector2(+ Infinity, + Infinity); + this.max = (max !== undefined) ? max : new Vector2(- Infinity, - Infinity); } - Object.assign( Box2.prototype, { + Object.assign(Box2.prototype, { - set: function ( min, max ) { + set: function (min, max) { - this.min.copy( min ); - this.max.copy( max ); + this.min.copy(min); + this.max.copy(max); return this; }, - setFromPoints: function ( points ) { + setFromPoints: function (points) { this.makeEmpty(); - for ( var i = 0, il = points.length; i < il; i ++ ) { + for (var i = 0, il = points.length; i < il; i++) { - this.expandByPoint( points[ i ] ); + this.expandByPoint(points[i]); } @@ -44129,11 +44142,11 @@ var v1 = new Vector2(); - return function setFromCenterAndSize( center, size ) { + return function setFromCenterAndSize(center, size) { - var halfSize = v1.copy( size ).multiplyScalar( 0.5 ); - this.min.copy( center ).sub( halfSize ); - this.max.copy( center ).add( halfSize ); + var halfSize = v1.copy(size).multiplyScalar(0.5); + this.min.copy(center).sub(halfSize); + this.max.copy(center).add(halfSize); return this; @@ -44143,14 +44156,14 @@ clone: function () { - return new this.constructor().copy( this ); + return new this.constructor().copy(this); }, - copy: function ( box ) { + copy: function (box) { - this.min.copy( box.min ); - this.max.copy( box.max ); + this.min.copy(box.min); + this.max.copy(box.max); return this; @@ -44169,97 +44182,97 @@ // this is a more robust check for empty than ( volume <= 0 ) because volume can get positive with two negative axes - return ( this.max.x < this.min.x ) || ( this.max.y < this.min.y ); + return (this.max.x < this.min.x) || (this.max.y < this.min.y); }, - getCenter: function ( target ) { + getCenter: function (target) { - if ( target === undefined ) { + if (target === undefined) { - console.warn( 'THREE.Box2: .getCenter() target is now required' ); + console.warn('THREE.Box2: .getCenter() target is now required'); target = new Vector2(); } - return this.isEmpty() ? target.set( 0, 0 ) : target.addVectors( this.min, this.max ).multiplyScalar( 0.5 ); + return this.isEmpty() ? target.set(0, 0) : target.addVectors(this.min, this.max).multiplyScalar(0.5); }, - getSize: function ( target ) { + getSize: function (target) { - if ( target === undefined ) { + if (target === undefined) { - console.warn( 'THREE.Box2: .getSize() target is now required' ); + console.warn('THREE.Box2: .getSize() target is now required'); target = new Vector2(); } - return this.isEmpty() ? target.set( 0, 0 ) : target.subVectors( this.max, this.min ); + return this.isEmpty() ? target.set(0, 0) : target.subVectors(this.max, this.min); }, - expandByPoint: function ( point ) { + expandByPoint: function (point) { - this.min.min( point ); - this.max.max( point ); + this.min.min(point); + this.max.max(point); return this; }, - expandByVector: function ( vector ) { + expandByVector: function (vector) { - this.min.sub( vector ); - this.max.add( vector ); + this.min.sub(vector); + this.max.add(vector); return this; }, - expandByScalar: function ( scalar ) { + expandByScalar: function (scalar) { - this.min.addScalar( - scalar ); - this.max.addScalar( scalar ); + this.min.addScalar(- scalar); + this.max.addScalar(scalar); return this; }, - containsPoint: function ( point ) { + containsPoint: function (point) { return point.x < this.min.x || point.x > this.max.x || point.y < this.min.y || point.y > this.max.y ? false : true; }, - containsBox: function ( box ) { + containsBox: function (box) { return this.min.x <= box.min.x && box.max.x <= this.max.x && this.min.y <= box.min.y && box.max.y <= this.max.y; }, - getParameter: function ( point, target ) { + getParameter: function (point, target) { // This can potentially have a divide by zero if the box // has a size dimension of 0. - if ( target === undefined ) { + if (target === undefined) { - console.warn( 'THREE.Box2: .getParameter() target is now required' ); + console.warn('THREE.Box2: .getParameter() target is now required'); target = new Vector2(); } return target.set( - ( point.x - this.min.x ) / ( this.max.x - this.min.x ), - ( point.y - this.min.y ) / ( this.max.y - this.min.y ) + (point.x - this.min.x) / (this.max.x - this.min.x), + (point.y - this.min.y) / (this.max.y - this.min.y) ); }, - intersectsBox: function ( box ) { + intersectsBox: function (box) { // using 4 splitting planes to rule out intersections @@ -44268,16 +44281,16 @@ }, - clampPoint: function ( point, target ) { + clampPoint: function (point, target) { - if ( target === undefined ) { + if (target === undefined) { - console.warn( 'THREE.Box2: .clampPoint() target is now required' ); + console.warn('THREE.Box2: .clampPoint() target is now required'); target = new Vector2(); } - return target.copy( point ).clamp( this.min, this.max ); + return target.copy(point).clamp(this.min, this.max); }, @@ -44285,67 +44298,67 @@ var v1 = new Vector2(); - return function distanceToPoint( point ) { + return function distanceToPoint(point) { - var clampedPoint = v1.copy( point ).clamp( this.min, this.max ); - return clampedPoint.sub( point ).length(); + var clampedPoint = v1.copy(point).clamp(this.min, this.max); + return clampedPoint.sub(point).length(); }; }(), - intersect: function ( box ) { + intersect: function (box) { - this.min.max( box.min ); - this.max.min( box.max ); + this.min.max(box.min); + this.max.min(box.max); return this; }, - union: function ( box ) { + union: function (box) { - this.min.min( box.min ); - this.max.max( box.max ); + this.min.min(box.min); + this.max.max(box.max); return this; }, - translate: function ( offset ) { + translate: function (offset) { - this.min.add( offset ); - this.max.add( offset ); + this.min.add(offset); + this.max.add(offset); return this; }, - equals: function ( box ) { + equals: function (box) { - return box.min.equals( this.min ) && box.max.equals( this.max ); + return box.min.equals(this.min) && box.max.equals(this.max); } - } ); + }); /** * @author bhouston / http://clara.io */ - function Line3( start, end ) { + function Line3(start, end) { - this.start = ( start !== undefined ) ? start : new Vector3(); - this.end = ( end !== undefined ) ? end : new Vector3(); + this.start = (start !== undefined) ? start : new Vector3(); + this.end = (end !== undefined) ? end : new Vector3(); } - Object.assign( Line3.prototype, { + Object.assign(Line3.prototype, { - set: function ( start, end ) { + set: function (start, end) { - this.start.copy( start ); - this.end.copy( end ); + this.start.copy(start); + this.end.copy(end); return this; @@ -44353,67 +44366,67 @@ clone: function () { - return new this.constructor().copy( this ); + return new this.constructor().copy(this); }, - copy: function ( line ) { + copy: function (line) { - this.start.copy( line.start ); - this.end.copy( line.end ); + this.start.copy(line.start); + this.end.copy(line.end); return this; }, - getCenter: function ( target ) { + getCenter: function (target) { - if ( target === undefined ) { + if (target === undefined) { - console.warn( 'THREE.Line3: .getCenter() target is now required' ); + console.warn('THREE.Line3: .getCenter() target is now required'); target = new Vector3(); } - return target.addVectors( this.start, this.end ).multiplyScalar( 0.5 ); + return target.addVectors(this.start, this.end).multiplyScalar(0.5); }, - delta: function ( target ) { + delta: function (target) { - if ( target === undefined ) { + if (target === undefined) { - console.warn( 'THREE.Line3: .delta() target is now required' ); + console.warn('THREE.Line3: .delta() target is now required'); target = new Vector3(); } - return target.subVectors( this.end, this.start ); + return target.subVectors(this.end, this.start); }, distanceSq: function () { - return this.start.distanceToSquared( this.end ); + return this.start.distanceToSquared(this.end); }, distance: function () { - return this.start.distanceTo( this.end ); + return this.start.distanceTo(this.end); }, - at: function ( t, target ) { + at: function (t, target) { - if ( target === undefined ) { + if (target === undefined) { - console.warn( 'THREE.Line3: .at() target is now required' ); + console.warn('THREE.Line3: .at() target is now required'); target = new Vector3(); } - return this.delta( target ).multiplyScalar( t ).add( this.start ); + return this.delta(target).multiplyScalar(t).add(this.start); }, @@ -44422,19 +44435,19 @@ var startP = new Vector3(); var startEnd = new Vector3(); - return function closestPointToPointParameter( point, clampToLine ) { + return function closestPointToPointParameter(point, clampToLine) { - startP.subVectors( point, this.start ); - startEnd.subVectors( this.end, this.start ); + startP.subVectors(point, this.start); + startEnd.subVectors(this.end, this.start); - var startEnd2 = startEnd.dot( startEnd ); - var startEnd_startP = startEnd.dot( startP ); + var startEnd2 = startEnd.dot(startEnd); + var startEnd_startP = startEnd.dot(startP); var t = startEnd_startP / startEnd2; - if ( clampToLine ) { + if (clampToLine) { - t = _Math.clamp( t, 0, 1 ); + t = _Math.clamp(t, 0, 1); } @@ -44444,52 +44457,52 @@ }(), - closestPointToPoint: function ( point, clampToLine, target ) { + closestPointToPoint: function (point, clampToLine, target) { - var t = this.closestPointToPointParameter( point, clampToLine ); + var t = this.closestPointToPointParameter(point, clampToLine); - if ( target === undefined ) { + if (target === undefined) { - console.warn( 'THREE.Line3: .closestPointToPoint() target is now required' ); + console.warn('THREE.Line3: .closestPointToPoint() target is now required'); target = new Vector3(); } - return this.delta( target ).multiplyScalar( t ).add( this.start ); + return this.delta(target).multiplyScalar(t).add(this.start); }, - applyMatrix4: function ( matrix ) { + applyMatrix4: function (matrix) { - this.start.applyMatrix4( matrix ); - this.end.applyMatrix4( matrix ); + this.start.applyMatrix4(matrix); + this.end.applyMatrix4(matrix); return this; }, - equals: function ( line ) { + equals: function (line) { - return line.start.equals( this.start ) && line.end.equals( this.end ); + return line.start.equals(this.start) && line.end.equals(this.end); } - } ); + }); /** * @author alteredq / http://alteredqualia.com/ */ - function ImmediateRenderObject( material ) { + function ImmediateRenderObject(material) { - Object3D.call( this ); + Object3D.call(this); this.material = material; - this.render = function ( /* renderCallback */ ) {}; + this.render = function ( /* renderCallback */) { }; } - ImmediateRenderObject.prototype = Object.create( Object3D.prototype ); + ImmediateRenderObject.prototype = Object.create(Object3D.prototype); ImmediateRenderObject.prototype.constructor = ImmediateRenderObject; ImmediateRenderObject.prototype.isImmediateRenderObject = true; @@ -44499,15 +44512,15 @@ * @author WestLangley / http://github.com/WestLangley */ - function VertexNormalsHelper( object, size, hex, linewidth ) { + function VertexNormalsHelper(object, size, hex, linewidth) { this.object = object; - this.size = ( size !== undefined ) ? size : 1; + this.size = (size !== undefined) ? size : 1; - var color = ( hex !== undefined ) ? hex : 0xff0000; + var color = (hex !== undefined) ? hex : 0xff0000; - var width = ( linewidth !== undefined ) ? linewidth : 1; + var width = (linewidth !== undefined) ? linewidth : 1; // @@ -44515,11 +44528,11 @@ var objGeometry = this.object.geometry; - if ( objGeometry && objGeometry.isGeometry ) { + if (objGeometry && objGeometry.isGeometry) { nNormals = objGeometry.faces.length * 3; - } else if ( objGeometry && objGeometry.isBufferGeometry ) { + } else if (objGeometry && objGeometry.isBufferGeometry) { nNormals = objGeometry.attributes.normal.count; @@ -44529,11 +44542,11 @@ var geometry = new BufferGeometry(); - var positions = new Float32BufferAttribute( nNormals * 2 * 3, 3 ); + var positions = new Float32BufferAttribute(nNormals * 2 * 3, 3); - geometry.addAttribute( 'position', positions ); + geometry.addAttribute('position', positions); - LineSegments.call( this, geometry, new LineBasicMaterial( { color: color, linewidth: width } ) ); + LineSegments.call(this, geometry, new LineBasicMaterial({ color: color, linewidth: width })); // @@ -44543,10 +44556,10 @@ } - VertexNormalsHelper.prototype = Object.create( LineSegments.prototype ); + VertexNormalsHelper.prototype = Object.create(LineSegments.prototype); VertexNormalsHelper.prototype.constructor = VertexNormalsHelper; - VertexNormalsHelper.prototype.update = ( function () { + VertexNormalsHelper.prototype.update = (function () { var v1 = new Vector3(); var v2 = new Vector3(); @@ -44554,11 +44567,11 @@ return function update() { - var keys = [ 'a', 'b', 'c' ]; + var keys = ['a', 'b', 'c']; - this.object.updateMatrixWorld( true ); + this.object.updateMatrixWorld(true); - normalMatrix.getNormalMatrix( this.object.matrixWorld ); + normalMatrix.getNormalMatrix(this.object.matrixWorld); var matrixWorld = this.object.matrixWorld; @@ -44568,7 +44581,7 @@ var objGeometry = this.object.geometry; - if ( objGeometry && objGeometry.isGeometry ) { + if (objGeometry && objGeometry.isGeometry) { var vertices = objGeometry.vertices; @@ -44576,25 +44589,25 @@ var idx = 0; - for ( var i = 0, l = faces.length; i < l; i ++ ) { + for (var i = 0, l = faces.length; i < l; i++) { - var face = faces[ i ]; + var face = faces[i]; - for ( var j = 0, jl = face.vertexNormals.length; j < jl; j ++ ) { + for (var j = 0, jl = face.vertexNormals.length; j < jl; j++) { - var vertex = vertices[ face[ keys[ j ] ] ]; + var vertex = vertices[face[keys[j]]]; - var normal = face.vertexNormals[ j ]; + var normal = face.vertexNormals[j]; - v1.copy( vertex ).applyMatrix4( matrixWorld ); + v1.copy(vertex).applyMatrix4(matrixWorld); - v2.copy( normal ).applyMatrix3( normalMatrix ).normalize().multiplyScalar( this.size ).add( v1 ); + v2.copy(normal).applyMatrix3(normalMatrix).normalize().multiplyScalar(this.size).add(v1); - position.setXYZ( idx, v1.x, v1.y, v1.z ); + position.setXYZ(idx, v1.x, v1.y, v1.z); idx = idx + 1; - position.setXYZ( idx, v2.x, v2.y, v2.z ); + position.setXYZ(idx, v2.x, v2.y, v2.z); idx = idx + 1; @@ -44602,7 +44615,7 @@ } - } else if ( objGeometry && objGeometry.isBufferGeometry ) { + } else if (objGeometry && objGeometry.isBufferGeometry) { var objPos = objGeometry.attributes.position; @@ -44612,19 +44625,19 @@ // for simplicity, ignore index and drawcalls, and render every normal - for ( var j = 0, jl = objPos.count; j < jl; j ++ ) { + for (var j = 0, jl = objPos.count; j < jl; j++) { - v1.set( objPos.getX( j ), objPos.getY( j ), objPos.getZ( j ) ).applyMatrix4( matrixWorld ); + v1.set(objPos.getX(j), objPos.getY(j), objPos.getZ(j)).applyMatrix4(matrixWorld); - v2.set( objNorm.getX( j ), objNorm.getY( j ), objNorm.getZ( j ) ); + v2.set(objNorm.getX(j), objNorm.getY(j), objNorm.getZ(j)); - v2.applyMatrix3( normalMatrix ).normalize().multiplyScalar( this.size ).add( v1 ); + v2.applyMatrix3(normalMatrix).normalize().multiplyScalar(this.size).add(v1); - position.setXYZ( idx, v1.x, v1.y, v1.z ); + position.setXYZ(idx, v1.x, v1.y, v1.z); idx = idx + 1; - position.setXYZ( idx, v2.x, v2.y, v2.z ); + position.setXYZ(idx, v2.x, v2.y, v2.z); idx = idx + 1; @@ -44636,7 +44649,7 @@ }; - }() ); + }()); /** * @author alteredq / http://alteredqualia.com/ @@ -44644,9 +44657,9 @@ * @author WestLangley / http://github.com/WestLangley */ - function SpotLightHelper( light, color ) { + function SpotLightHelper(light, color) { - Object3D.call( this ); + Object3D.call(this); this.light = light; this.light.updateMatrixWorld(); @@ -44659,37 +44672,37 @@ var geometry = new BufferGeometry(); var positions = [ - 0, 0, 0, 0, 0, 1, - 0, 0, 0, 1, 0, 1, - 0, 0, 0, - 1, 0, 1, - 0, 0, 0, 0, 1, 1, - 0, 0, 0, 0, - 1, 1 + 0, 0, 0, 0, 0, 1, + 0, 0, 0, 1, 0, 1, + 0, 0, 0, - 1, 0, 1, + 0, 0, 0, 0, 1, 1, + 0, 0, 0, 0, - 1, 1 ]; - for ( var i = 0, j = 1, l = 32; i < l; i ++, j ++ ) { + for (var i = 0, j = 1, l = 32; i < l; i++ , j++) { - var p1 = ( i / l ) * Math.PI * 2; - var p2 = ( j / l ) * Math.PI * 2; + var p1 = (i / l) * Math.PI * 2; + var p2 = (j / l) * Math.PI * 2; positions.push( - Math.cos( p1 ), Math.sin( p1 ), 1, - Math.cos( p2 ), Math.sin( p2 ), 1 + Math.cos(p1), Math.sin(p1), 1, + Math.cos(p2), Math.sin(p2), 1 ); } - geometry.addAttribute( 'position', new Float32BufferAttribute( positions, 3 ) ); + geometry.addAttribute('position', new Float32BufferAttribute(positions, 3)); - var material = new LineBasicMaterial( { fog: false } ); + var material = new LineBasicMaterial({ fog: false }); - this.cone = new LineSegments( geometry, material ); - this.add( this.cone ); + this.cone = new LineSegments(geometry, material); + this.add(this.cone); this.update(); } - SpotLightHelper.prototype = Object.create( Object3D.prototype ); + SpotLightHelper.prototype = Object.create(Object3D.prototype); SpotLightHelper.prototype.constructor = SpotLightHelper; SpotLightHelper.prototype.dispose = function () { @@ -44709,22 +44722,22 @@ this.light.updateMatrixWorld(); var coneLength = this.light.distance ? this.light.distance : 1000; - var coneWidth = coneLength * Math.tan( this.light.angle ); + var coneWidth = coneLength * Math.tan(this.light.angle); - this.cone.scale.set( coneWidth, coneWidth, coneLength ); + this.cone.scale.set(coneWidth, coneWidth, coneLength); - vector.setFromMatrixPosition( this.light.matrixWorld ); - vector2.setFromMatrixPosition( this.light.target.matrixWorld ); + vector.setFromMatrixPosition(this.light.matrixWorld); + vector2.setFromMatrixPosition(this.light.target.matrixWorld); - this.cone.lookAt( vector2.sub( vector ) ); + this.cone.lookAt(vector2.sub(vector)); - if ( this.color !== undefined ) { + if (this.color !== undefined) { - this.cone.material.color.set( this.color ); + this.cone.material.color.set(this.color); } else { - this.cone.material.color.copy( this.light.color ); + this.cone.material.color.copy(this.light.color); } @@ -44740,19 +44753,19 @@ * @author Mugen87 / https://github.com/Mugen87 */ - function getBoneList( object ) { + function getBoneList(object) { var boneList = []; - if ( object && object.isBone ) { + if (object && object.isBone) { - boneList.push( object ); + boneList.push(object); } - for ( var i = 0; i < object.children.length; i ++ ) { + for (var i = 0; i < object.children.length; i++) { - boneList.push.apply( boneList, getBoneList( object.children[ i ] ) ); + boneList.push.apply(boneList, getBoneList(object.children[i])); } @@ -44760,39 +44773,39 @@ } - function SkeletonHelper( object ) { + function SkeletonHelper(object) { - var bones = getBoneList( object ); + var bones = getBoneList(object); var geometry = new BufferGeometry(); var vertices = []; var colors = []; - var color1 = new Color( 0, 0, 1 ); - var color2 = new Color( 0, 1, 0 ); + var color1 = new Color(0, 0, 1); + var color2 = new Color(0, 1, 0); - for ( var i = 0; i < bones.length; i ++ ) { + for (var i = 0; i < bones.length; i++) { - var bone = bones[ i ]; + var bone = bones[i]; - if ( bone.parent && bone.parent.isBone ) { + if (bone.parent && bone.parent.isBone) { - vertices.push( 0, 0, 0 ); - vertices.push( 0, 0, 0 ); - colors.push( color1.r, color1.g, color1.b ); - colors.push( color2.r, color2.g, color2.b ); + vertices.push(0, 0, 0); + vertices.push(0, 0, 0); + colors.push(color1.r, color1.g, color1.b); + colors.push(color2.r, color2.g, color2.b); } } - geometry.addAttribute( 'position', new Float32BufferAttribute( vertices, 3 ) ); - geometry.addAttribute( 'color', new Float32BufferAttribute( colors, 3 ) ); + geometry.addAttribute('position', new Float32BufferAttribute(vertices, 3)); + geometry.addAttribute('color', new Float32BufferAttribute(colors, 3)); - var material = new LineBasicMaterial( { vertexColors: VertexColors, depthTest: false, depthWrite: false, transparent: true } ); + var material = new LineBasicMaterial({ vertexColors: VertexColors, depthTest: false, depthWrite: false, transparent: true }); - LineSegments.call( this, geometry, material ); + LineSegments.call(this, geometry, material); this.root = object; this.bones = bones; @@ -44802,7 +44815,7 @@ } - SkeletonHelper.prototype = Object.create( LineSegments.prototype ); + SkeletonHelper.prototype = Object.create(LineSegments.prototype); SkeletonHelper.prototype.constructor = SkeletonHelper; SkeletonHelper.prototype.updateMatrixWorld = function () { @@ -44812,28 +44825,28 @@ var boneMatrix = new Matrix4(); var matrixWorldInv = new Matrix4(); - return function updateMatrixWorld( force ) { + return function updateMatrixWorld(force) { var bones = this.bones; var geometry = this.geometry; - var position = geometry.getAttribute( 'position' ); + var position = geometry.getAttribute('position'); - matrixWorldInv.getInverse( this.root.matrixWorld ); + matrixWorldInv.getInverse(this.root.matrixWorld); - for ( var i = 0, j = 0; i < bones.length; i ++ ) { + for (var i = 0, j = 0; i < bones.length; i++) { - var bone = bones[ i ]; + var bone = bones[i]; - if ( bone.parent && bone.parent.isBone ) { + if (bone.parent && bone.parent.isBone) { - boneMatrix.multiplyMatrices( matrixWorldInv, bone.matrixWorld ); - vector.setFromMatrixPosition( boneMatrix ); - position.setXYZ( j, vector.x, vector.y, vector.z ); + boneMatrix.multiplyMatrices(matrixWorldInv, bone.matrixWorld); + vector.setFromMatrixPosition(boneMatrix); + position.setXYZ(j, vector.x, vector.y, vector.z); - boneMatrix.multiplyMatrices( matrixWorldInv, bone.parent.matrixWorld ); - vector.setFromMatrixPosition( boneMatrix ); - position.setXYZ( j + 1, vector.x, vector.y, vector.z ); + boneMatrix.multiplyMatrices(matrixWorldInv, bone.parent.matrixWorld); + vector.setFromMatrixPosition(boneMatrix); + position.setXYZ(j + 1, vector.x, vector.y, vector.z); j += 2; @@ -44841,9 +44854,9 @@ } - geometry.getAttribute( 'position' ).needsUpdate = true; + geometry.getAttribute('position').needsUpdate = true; - Object3D.prototype.updateMatrixWorld.call( this, force ); + Object3D.prototype.updateMatrixWorld.call(this, force); }; @@ -44854,17 +44867,17 @@ * @author mrdoob / http://mrdoob.com/ */ - function PointLightHelper( light, sphereSize, color ) { + function PointLightHelper(light, sphereSize, color) { this.light = light; this.light.updateMatrixWorld(); this.color = color; - var geometry = new SphereBufferGeometry( sphereSize, 4, 2 ); - var material = new MeshBasicMaterial( { wireframe: true, fog: false } ); + var geometry = new SphereBufferGeometry(sphereSize, 4, 2); + var material = new MeshBasicMaterial({ wireframe: true, fog: false }); - Mesh.call( this, geometry, material ); + Mesh.call(this, geometry, material); this.matrix = this.light.matrixWorld; this.matrixAutoUpdate = false; @@ -44896,7 +44909,7 @@ } - PointLightHelper.prototype = Object.create( Mesh.prototype ); + PointLightHelper.prototype = Object.create(Mesh.prototype); PointLightHelper.prototype.constructor = PointLightHelper; PointLightHelper.prototype.dispose = function () { @@ -44908,13 +44921,13 @@ PointLightHelper.prototype.update = function () { - if ( this.color !== undefined ) { + if (this.color !== undefined) { - this.material.color.set( this.color ); + this.material.color.set(this.color); } else { - this.material.color.copy( this.light.color ); + this.material.color.copy(this.light.color); } @@ -44941,9 +44954,9 @@ * @author WestLangley / http://github.com/WestLangley */ - function RectAreaLightHelper( light, color ) { + function RectAreaLightHelper(light, color) { - Object3D.call( this ); + Object3D.call(this); this.light = light; this.light.updateMatrixWorld(); @@ -44953,27 +44966,27 @@ this.color = color; - var material = new LineBasicMaterial( { fog: false } ); + var material = new LineBasicMaterial({ fog: false }); var geometry = new BufferGeometry(); - geometry.addAttribute( 'position', new BufferAttribute( new Float32Array( 5 * 3 ), 3 ) ); + geometry.addAttribute('position', new BufferAttribute(new Float32Array(5 * 3), 3)); - this.line = new Line( geometry, material ); - this.add( this.line ); + this.line = new Line(geometry, material); + this.add(this.line); this.update(); } - RectAreaLightHelper.prototype = Object.create( Object3D.prototype ); + RectAreaLightHelper.prototype = Object.create(Object3D.prototype); RectAreaLightHelper.prototype.constructor = RectAreaLightHelper; RectAreaLightHelper.prototype.dispose = function () { - this.children[ 0 ].geometry.dispose(); - this.children[ 0 ].material.dispose(); + this.children[0].geometry.dispose(); + this.children[0].material.dispose(); }; @@ -44989,21 +45002,21 @@ // update vertices - array[ 0 ] = hx; array[ 1 ] = - hy; array[ 2 ] = 0; - array[ 3 ] = hx; array[ 4 ] = hy; array[ 5 ] = 0; - array[ 6 ] = - hx; array[ 7 ] = hy; array[ 8 ] = 0; - array[ 9 ] = - hx; array[ 10 ] = - hy; array[ 11 ] = 0; - array[ 12 ] = hx; array[ 13 ] = - hy; array[ 14 ] = 0; + array[0] = hx; array[1] = - hy; array[2] = 0; + array[3] = hx; array[4] = hy; array[5] = 0; + array[6] = - hx; array[7] = hy; array[8] = 0; + array[9] = - hx; array[10] = - hy; array[11] = 0; + array[12] = hx; array[13] = - hy; array[14] = 0; position.needsUpdate = true; - if ( this.color !== undefined ) { + if (this.color !== undefined) { - this.line.material.color.set( this.color ); + this.line.material.color.set(this.color); } else { - this.line.material.color.copy( this.light.color ); + this.line.material.color.copy(this.light.color); } @@ -45015,9 +45028,9 @@ * @author Mugen87 / https://github.com/Mugen87 */ - function HemisphereLightHelper( light, size, color ) { + function HemisphereLightHelper(light, size, color) { - Object3D.call( this ); + Object3D.call(this); this.light = light; this.light.updateMatrixWorld(); @@ -45027,30 +45040,30 @@ this.color = color; - var geometry = new OctahedronBufferGeometry( size ); - geometry.rotateY( Math.PI * 0.5 ); + var geometry = new OctahedronBufferGeometry(size); + geometry.rotateY(Math.PI * 0.5); - this.material = new MeshBasicMaterial( { wireframe: true, fog: false } ); - if ( this.color === undefined ) this.material.vertexColors = VertexColors; + this.material = new MeshBasicMaterial({ wireframe: true, fog: false }); + if (this.color === undefined) this.material.vertexColors = VertexColors; - var position = geometry.getAttribute( 'position' ); - var colors = new Float32Array( position.count * 3 ); + var position = geometry.getAttribute('position'); + var colors = new Float32Array(position.count * 3); - geometry.addAttribute( 'color', new BufferAttribute( colors, 3 ) ); + geometry.addAttribute('color', new BufferAttribute(colors, 3)); - this.add( new Mesh( geometry, this.material ) ); + this.add(new Mesh(geometry, this.material)); this.update(); } - HemisphereLightHelper.prototype = Object.create( Object3D.prototype ); + HemisphereLightHelper.prototype = Object.create(Object3D.prototype); HemisphereLightHelper.prototype.constructor = HemisphereLightHelper; HemisphereLightHelper.prototype.dispose = function () { - this.children[ 0 ].geometry.dispose(); - this.children[ 0 ].material.dispose(); + this.children[0].geometry.dispose(); + this.children[0].material.dispose(); }; @@ -45063,24 +45076,24 @@ return function update() { - var mesh = this.children[ 0 ]; + var mesh = this.children[0]; - if ( this.color !== undefined ) { + if (this.color !== undefined) { - this.material.color.set( this.color ); + this.material.color.set(this.color); } else { - var colors = mesh.geometry.getAttribute( 'color' ); + var colors = mesh.geometry.getAttribute('color'); - color1.copy( this.light.color ); - color2.copy( this.light.groundColor ); + color1.copy(this.light.color); + color2.copy(this.light.groundColor); - for ( var i = 0, l = colors.count; i < l; i ++ ) { + for (var i = 0, l = colors.count; i < l; i++) { - var color = ( i < ( l / 2 ) ) ? color1 : color2; + var color = (i < (l / 2)) ? color1 : color2; - colors.setXYZ( i, color.r, color.g, color.b ); + colors.setXYZ(i, color.r, color.g, color.b); } @@ -45088,7 +45101,7 @@ } - mesh.lookAt( vector.setFromMatrixPosition( this.light.matrixWorld ).negate() ); + mesh.lookAt(vector.setFromMatrixPosition(this.light.matrixWorld).negate()); }; @@ -45098,12 +45111,12 @@ * @author mrdoob / http://mrdoob.com/ */ - function GridHelper( size, divisions, color1, color2 ) { + function GridHelper(size, divisions, color1, color2) { size = size || 10; divisions = divisions || 10; - color1 = new Color( color1 !== undefined ? color1 : 0x444444 ); - color2 = new Color( color2 !== undefined ? color2 : 0x888888 ); + color1 = new Color(color1 !== undefined ? color1 : 0x444444); + color2 = new Color(color2 !== undefined ? color2 : 0x888888); var center = divisions / 2; var step = size / divisions; @@ -45111,31 +45124,31 @@ var vertices = [], colors = []; - for ( var i = 0, j = 0, k = - halfSize; i <= divisions; i ++, k += step ) { + for (var i = 0, j = 0, k = - halfSize; i <= divisions; i++ , k += step) { - vertices.push( - halfSize, 0, k, halfSize, 0, k ); - vertices.push( k, 0, - halfSize, k, 0, halfSize ); + vertices.push(- halfSize, 0, k, halfSize, 0, k); + vertices.push(k, 0, - halfSize, k, 0, halfSize); var color = i === center ? color1 : color2; - color.toArray( colors, j ); j += 3; - color.toArray( colors, j ); j += 3; - color.toArray( colors, j ); j += 3; - color.toArray( colors, j ); j += 3; + color.toArray(colors, j); j += 3; + color.toArray(colors, j); j += 3; + color.toArray(colors, j); j += 3; + color.toArray(colors, j); j += 3; } var geometry = new BufferGeometry(); - geometry.addAttribute( 'position', new Float32BufferAttribute( vertices, 3 ) ); - geometry.addAttribute( 'color', new Float32BufferAttribute( colors, 3 ) ); + geometry.addAttribute('position', new Float32BufferAttribute(vertices, 3)); + geometry.addAttribute('color', new Float32BufferAttribute(colors, 3)); - var material = new LineBasicMaterial( { vertexColors: VertexColors } ); + var material = new LineBasicMaterial({ vertexColors: VertexColors }); - LineSegments.call( this, geometry, material ); + LineSegments.call(this, geometry, material); } - GridHelper.prototype = Object.create( LineSegments.prototype ); + GridHelper.prototype = Object.create(LineSegments.prototype); GridHelper.prototype.constructor = GridHelper; /** @@ -45144,14 +45157,14 @@ * @author Hectate / http://www.github.com/Hectate */ - function PolarGridHelper( radius, radials, circles, divisions, color1, color2 ) { + function PolarGridHelper(radius, radials, circles, divisions, color1, color2) { radius = radius || 10; radials = radials || 16; circles = circles || 8; divisions = divisions || 64; - color1 = new Color( color1 !== undefined ? color1 : 0x444444 ); - color2 = new Color( color2 !== undefined ? color2 : 0x888888 ); + color1 = new Color(color1 !== undefined ? color1 : 0x444444); + color2 = new Color(color2 !== undefined ? color2 : 0x888888); var vertices = []; var colors = []; @@ -45161,68 +45174,68 @@ // create the radials - for ( i = 0; i <= radials; i ++ ) { + for (i = 0; i <= radials; i++) { - v = ( i / radials ) * ( Math.PI * 2 ); + v = (i / radials) * (Math.PI * 2); - x = Math.sin( v ) * radius; - z = Math.cos( v ) * radius; + x = Math.sin(v) * radius; + z = Math.cos(v) * radius; - vertices.push( 0, 0, 0 ); - vertices.push( x, 0, z ); + vertices.push(0, 0, 0); + vertices.push(x, 0, z); - color = ( i & 1 ) ? color1 : color2; + color = (i & 1) ? color1 : color2; - colors.push( color.r, color.g, color.b ); - colors.push( color.r, color.g, color.b ); + colors.push(color.r, color.g, color.b); + colors.push(color.r, color.g, color.b); } // create the circles - for ( i = 0; i <= circles; i ++ ) { + for (i = 0; i <= circles; i++) { - color = ( i & 1 ) ? color1 : color2; + color = (i & 1) ? color1 : color2; - r = radius - ( radius / circles * i ); + r = radius - (radius / circles * i); - for ( j = 0; j < divisions; j ++ ) { + for (j = 0; j < divisions; j++) { // first vertex - v = ( j / divisions ) * ( Math.PI * 2 ); + v = (j / divisions) * (Math.PI * 2); - x = Math.sin( v ) * r; - z = Math.cos( v ) * r; + x = Math.sin(v) * r; + z = Math.cos(v) * r; - vertices.push( x, 0, z ); - colors.push( color.r, color.g, color.b ); + vertices.push(x, 0, z); + colors.push(color.r, color.g, color.b); // second vertex - v = ( ( j + 1 ) / divisions ) * ( Math.PI * 2 ); + v = ((j + 1) / divisions) * (Math.PI * 2); - x = Math.sin( v ) * r; - z = Math.cos( v ) * r; + x = Math.sin(v) * r; + z = Math.cos(v) * r; - vertices.push( x, 0, z ); - colors.push( color.r, color.g, color.b ); + vertices.push(x, 0, z); + colors.push(color.r, color.g, color.b); } } var geometry = new BufferGeometry(); - geometry.addAttribute( 'position', new Float32BufferAttribute( vertices, 3 ) ); - geometry.addAttribute( 'color', new Float32BufferAttribute( colors, 3 ) ); + geometry.addAttribute('position', new Float32BufferAttribute(vertices, 3)); + geometry.addAttribute('color', new Float32BufferAttribute(colors, 3)); - var material = new LineBasicMaterial( { vertexColors: VertexColors } ); + var material = new LineBasicMaterial({ vertexColors: VertexColors }); - LineSegments.call( this, geometry, material ); + LineSegments.call(this, geometry, material); } - PolarGridHelper.prototype = Object.create( LineSegments.prototype ); + PolarGridHelper.prototype = Object.create(LineSegments.prototype); PolarGridHelper.prototype.constructor = PolarGridHelper; /** @@ -45230,17 +45243,17 @@ * @author WestLangley / http://github.com/WestLangley */ - function FaceNormalsHelper( object, size, hex, linewidth ) { + function FaceNormalsHelper(object, size, hex, linewidth) { // FaceNormalsHelper only supports THREE.Geometry this.object = object; - this.size = ( size !== undefined ) ? size : 1; + this.size = (size !== undefined) ? size : 1; - var color = ( hex !== undefined ) ? hex : 0xffff00; + var color = (hex !== undefined) ? hex : 0xffff00; - var width = ( linewidth !== undefined ) ? linewidth : 1; + var width = (linewidth !== undefined) ? linewidth : 1; // @@ -45248,13 +45261,13 @@ var objGeometry = this.object.geometry; - if ( objGeometry && objGeometry.isGeometry ) { + if (objGeometry && objGeometry.isGeometry) { nNormals = objGeometry.faces.length; } else { - console.warn( 'THREE.FaceNormalsHelper: only THREE.Geometry is supported. Use THREE.VertexNormalsHelper, instead.' ); + console.warn('THREE.FaceNormalsHelper: only THREE.Geometry is supported. Use THREE.VertexNormalsHelper, instead.'); } @@ -45262,11 +45275,11 @@ var geometry = new BufferGeometry(); - var positions = new Float32BufferAttribute( nNormals * 2 * 3, 3 ); + var positions = new Float32BufferAttribute(nNormals * 2 * 3, 3); - geometry.addAttribute( 'position', positions ); + geometry.addAttribute('position', positions); - LineSegments.call( this, geometry, new LineBasicMaterial( { color: color, linewidth: width } ) ); + LineSegments.call(this, geometry, new LineBasicMaterial({ color: color, linewidth: width })); // @@ -45275,10 +45288,10 @@ } - FaceNormalsHelper.prototype = Object.create( LineSegments.prototype ); + FaceNormalsHelper.prototype = Object.create(LineSegments.prototype); FaceNormalsHelper.prototype.constructor = FaceNormalsHelper; - FaceNormalsHelper.prototype.update = ( function () { + FaceNormalsHelper.prototype.update = (function () { var v1 = new Vector3(); var v2 = new Vector3(); @@ -45286,9 +45299,9 @@ return function update() { - this.object.updateMatrixWorld( true ); + this.object.updateMatrixWorld(true); - normalMatrix.getNormalMatrix( this.object.matrixWorld ); + normalMatrix.getNormalMatrix(this.object.matrixWorld); var matrixWorld = this.object.matrixWorld; @@ -45304,25 +45317,25 @@ var idx = 0; - for ( var i = 0, l = faces.length; i < l; i ++ ) { + for (var i = 0, l = faces.length; i < l; i++) { - var face = faces[ i ]; + var face = faces[i]; var normal = face.normal; - v1.copy( vertices[ face.a ] ) - .add( vertices[ face.b ] ) - .add( vertices[ face.c ] ) - .divideScalar( 3 ) - .applyMatrix4( matrixWorld ); + v1.copy(vertices[face.a]) + .add(vertices[face.b]) + .add(vertices[face.c]) + .divideScalar(3) + .applyMatrix4(matrixWorld); - v2.copy( normal ).applyMatrix3( normalMatrix ).normalize().multiplyScalar( this.size ).add( v1 ); + v2.copy(normal).applyMatrix3(normalMatrix).normalize().multiplyScalar(this.size).add(v1); - position.setXYZ( idx, v1.x, v1.y, v1.z ); + position.setXYZ(idx, v1.x, v1.y, v1.z); idx = idx + 1; - position.setXYZ( idx, v2.x, v2.y, v2.z ); + position.setXYZ(idx, v2.x, v2.y, v2.z); idx = idx + 1; @@ -45332,7 +45345,7 @@ }; - }() ); + }()); /** * @author alteredq / http://alteredqualia.com/ @@ -45340,9 +45353,9 @@ * @author WestLangley / http://github.com/WestLangley */ - function DirectionalLightHelper( light, size, color ) { + function DirectionalLightHelper(light, size, color) { - Object3D.call( this ); + Object3D.call(this); this.light = light; this.light.updateMatrixWorld(); @@ -45352,33 +45365,33 @@ this.color = color; - if ( size === undefined ) size = 1; + if (size === undefined) size = 1; var geometry = new BufferGeometry(); - geometry.addAttribute( 'position', new Float32BufferAttribute( [ + geometry.addAttribute('position', new Float32BufferAttribute([ - size, size, 0, size, size, 0, size, - size, 0, - size, - size, 0, - size, size, 0 - ], 3 ) ); + ], 3)); - var material = new LineBasicMaterial( { fog: false } ); + var material = new LineBasicMaterial({ fog: false }); - this.lightPlane = new Line( geometry, material ); - this.add( this.lightPlane ); + this.lightPlane = new Line(geometry, material); + this.add(this.lightPlane); geometry = new BufferGeometry(); - geometry.addAttribute( 'position', new Float32BufferAttribute( [ 0, 0, 0, 0, 0, 1 ], 3 ) ); + geometry.addAttribute('position', new Float32BufferAttribute([0, 0, 0, 0, 0, 1], 3)); - this.targetLine = new Line( geometry, material ); - this.add( this.targetLine ); + this.targetLine = new Line(geometry, material); + this.add(this.targetLine); this.update(); } - DirectionalLightHelper.prototype = Object.create( Object3D.prototype ); + DirectionalLightHelper.prototype = Object.create(Object3D.prototype); DirectionalLightHelper.prototype.constructor = DirectionalLightHelper; DirectionalLightHelper.prototype.dispose = function () { @@ -45398,25 +45411,25 @@ return function update() { - v1.setFromMatrixPosition( this.light.matrixWorld ); - v2.setFromMatrixPosition( this.light.target.matrixWorld ); - v3.subVectors( v2, v1 ); + v1.setFromMatrixPosition(this.light.matrixWorld); + v2.setFromMatrixPosition(this.light.target.matrixWorld); + v3.subVectors(v2, v1); - this.lightPlane.lookAt( v3 ); + this.lightPlane.lookAt(v3); - if ( this.color !== undefined ) { + if (this.color !== undefined) { - this.lightPlane.material.color.set( this.color ); - this.targetLine.material.color.set( this.color ); + this.lightPlane.material.color.set(this.color); + this.targetLine.material.color.set(this.color); } else { - this.lightPlane.material.color.copy( this.light.color ); - this.targetLine.material.color.copy( this.light.color ); + this.lightPlane.material.color.copy(this.light.color); + this.targetLine.material.color.copy(this.light.color); } - this.targetLine.lookAt( v3 ); + this.targetLine.lookAt(v3); this.targetLine.scale.z = v3.length(); }; @@ -45433,10 +45446,10 @@ * http://evanw.github.com/lightgl.js/tests/shadowmap.html */ - function CameraHelper( camera ) { + function CameraHelper(camera) { var geometry = new BufferGeometry(); - var material = new LineBasicMaterial( { color: 0xffffff, vertexColors: FaceColors } ); + var material = new LineBasicMaterial({ color: 0xffffff, vertexColors: FaceColors }); var vertices = []; var colors = []; @@ -45445,88 +45458,88 @@ // colors - var colorFrustum = new Color( 0xffaa00 ); - var colorCone = new Color( 0xff0000 ); - var colorUp = new Color( 0x00aaff ); - var colorTarget = new Color( 0xffffff ); - var colorCross = new Color( 0x333333 ); + var colorFrustum = new Color(0xffaa00); + var colorCone = new Color(0xff0000); + var colorUp = new Color(0x00aaff); + var colorTarget = new Color(0xffffff); + var colorCross = new Color(0x333333); // near - addLine( 'n1', 'n2', colorFrustum ); - addLine( 'n2', 'n4', colorFrustum ); - addLine( 'n4', 'n3', colorFrustum ); - addLine( 'n3', 'n1', colorFrustum ); + addLine('n1', 'n2', colorFrustum); + addLine('n2', 'n4', colorFrustum); + addLine('n4', 'n3', colorFrustum); + addLine('n3', 'n1', colorFrustum); // far - addLine( 'f1', 'f2', colorFrustum ); - addLine( 'f2', 'f4', colorFrustum ); - addLine( 'f4', 'f3', colorFrustum ); - addLine( 'f3', 'f1', colorFrustum ); + addLine('f1', 'f2', colorFrustum); + addLine('f2', 'f4', colorFrustum); + addLine('f4', 'f3', colorFrustum); + addLine('f3', 'f1', colorFrustum); // sides - addLine( 'n1', 'f1', colorFrustum ); - addLine( 'n2', 'f2', colorFrustum ); - addLine( 'n3', 'f3', colorFrustum ); - addLine( 'n4', 'f4', colorFrustum ); + addLine('n1', 'f1', colorFrustum); + addLine('n2', 'f2', colorFrustum); + addLine('n3', 'f3', colorFrustum); + addLine('n4', 'f4', colorFrustum); // cone - addLine( 'p', 'n1', colorCone ); - addLine( 'p', 'n2', colorCone ); - addLine( 'p', 'n3', colorCone ); - addLine( 'p', 'n4', colorCone ); + addLine('p', 'n1', colorCone); + addLine('p', 'n2', colorCone); + addLine('p', 'n3', colorCone); + addLine('p', 'n4', colorCone); // up - addLine( 'u1', 'u2', colorUp ); - addLine( 'u2', 'u3', colorUp ); - addLine( 'u3', 'u1', colorUp ); + addLine('u1', 'u2', colorUp); + addLine('u2', 'u3', colorUp); + addLine('u3', 'u1', colorUp); // target - addLine( 'c', 't', colorTarget ); - addLine( 'p', 'c', colorCross ); + addLine('c', 't', colorTarget); + addLine('p', 'c', colorCross); // cross - addLine( 'cn1', 'cn2', colorCross ); - addLine( 'cn3', 'cn4', colorCross ); + addLine('cn1', 'cn2', colorCross); + addLine('cn3', 'cn4', colorCross); - addLine( 'cf1', 'cf2', colorCross ); - addLine( 'cf3', 'cf4', colorCross ); + addLine('cf1', 'cf2', colorCross); + addLine('cf3', 'cf4', colorCross); - function addLine( a, b, color ) { + function addLine(a, b, color) { - addPoint( a, color ); - addPoint( b, color ); + addPoint(a, color); + addPoint(b, color); } - function addPoint( id, color ) { + function addPoint(id, color) { - vertices.push( 0, 0, 0 ); - colors.push( color.r, color.g, color.b ); + vertices.push(0, 0, 0); + colors.push(color.r, color.g, color.b); - if ( pointMap[ id ] === undefined ) { + if (pointMap[id] === undefined) { - pointMap[ id ] = []; + pointMap[id] = []; } - pointMap[ id ].push( ( vertices.length / 3 ) - 1 ); + pointMap[id].push((vertices.length / 3) - 1); } - geometry.addAttribute( 'position', new Float32BufferAttribute( vertices, 3 ) ); - geometry.addAttribute( 'color', new Float32BufferAttribute( colors, 3 ) ); + geometry.addAttribute('position', new Float32BufferAttribute(vertices, 3)); + geometry.addAttribute('color', new Float32BufferAttribute(colors, 3)); - LineSegments.call( this, geometry, material ); + LineSegments.call(this, geometry, material); this.camera = camera; - if ( this.camera.updateProjectionMatrix ) this.camera.updateProjectionMatrix(); + if (this.camera.updateProjectionMatrix) this.camera.updateProjectionMatrix(); this.matrix = camera.matrixWorld; this.matrixAutoUpdate = false; @@ -45537,7 +45550,7 @@ } - CameraHelper.prototype = Object.create( LineSegments.prototype ); + CameraHelper.prototype = Object.create(LineSegments.prototype); CameraHelper.prototype.constructor = CameraHelper; CameraHelper.prototype.update = function () { @@ -45547,19 +45560,19 @@ var vector = new Vector3(); var camera = new Camera(); - function setPoint( point, x, y, z ) { + function setPoint(point, x, y, z) { - vector.set( x, y, z ).unproject( camera ); + vector.set(x, y, z).unproject(camera); - var points = pointMap[ point ]; + var points = pointMap[point]; - if ( points !== undefined ) { + if (points !== undefined) { - var position = geometry.getAttribute( 'position' ); + var position = geometry.getAttribute('position'); - for ( var i = 0, l = points.length; i < l; i ++ ) { + for (var i = 0, l = points.length; i < l; i++) { - position.setXYZ( points[ i ], vector.x, vector.y, vector.z ); + position.setXYZ(points[i], vector.x, vector.y, vector.z); } @@ -45577,46 +45590,46 @@ // we need just camera projection matrix // world matrix must be identity - camera.projectionMatrix.copy( this.camera.projectionMatrix ); + camera.projectionMatrix.copy(this.camera.projectionMatrix); // center / target - setPoint( 'c', 0, 0, - 1 ); - setPoint( 't', 0, 0, 1 ); + setPoint('c', 0, 0, - 1); + setPoint('t', 0, 0, 1); // near - setPoint( 'n1', - w, - h, - 1 ); - setPoint( 'n2', w, - h, - 1 ); - setPoint( 'n3', - w, h, - 1 ); - setPoint( 'n4', w, h, - 1 ); + setPoint('n1', - w, - h, - 1); + setPoint('n2', w, - h, - 1); + setPoint('n3', - w, h, - 1); + setPoint('n4', w, h, - 1); // far - setPoint( 'f1', - w, - h, 1 ); - setPoint( 'f2', w, - h, 1 ); - setPoint( 'f3', - w, h, 1 ); - setPoint( 'f4', w, h, 1 ); + setPoint('f1', - w, - h, 1); + setPoint('f2', w, - h, 1); + setPoint('f3', - w, h, 1); + setPoint('f4', w, h, 1); // up - setPoint( 'u1', w * 0.7, h * 1.1, - 1 ); - setPoint( 'u2', - w * 0.7, h * 1.1, - 1 ); - setPoint( 'u3', 0, h * 2, - 1 ); + setPoint('u1', w * 0.7, h * 1.1, - 1); + setPoint('u2', - w * 0.7, h * 1.1, - 1); + setPoint('u3', 0, h * 2, - 1); // cross - setPoint( 'cf1', - w, 0, 1 ); - setPoint( 'cf2', w, 0, 1 ); - setPoint( 'cf3', 0, - h, 1 ); - setPoint( 'cf4', 0, h, 1 ); + setPoint('cf1', - w, 0, 1); + setPoint('cf2', w, 0, 1); + setPoint('cf3', 0, - h, 1); + setPoint('cf4', 0, h, 1); - setPoint( 'cn1', - w, 0, - 1 ); - setPoint( 'cn2', w, 0, - 1 ); - setPoint( 'cn3', 0, - h, - 1 ); - setPoint( 'cn4', 0, h, - 1 ); + setPoint('cn1', - w, 0, - 1); + setPoint('cn2', w, 0, - 1); + setPoint('cn3', 0, - h, - 1); + setPoint('cn4', 0, h, - 1); - geometry.getAttribute( 'position' ).needsUpdate = true; + geometry.getAttribute('position').needsUpdate = true; }; @@ -45627,20 +45640,20 @@ * @author Mugen87 / http://github.com/Mugen87 */ - function BoxHelper( object, color ) { + function BoxHelper(object, color) { this.object = object; - if ( color === undefined ) color = 0xffff00; + if (color === undefined) color = 0xffff00; - var 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 ] ); - var positions = new Float32Array( 8 * 3 ); + var 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]); + var positions = new Float32Array(8 * 3); var geometry = new BufferGeometry(); - geometry.setIndex( new BufferAttribute( indices, 1 ) ); - geometry.addAttribute( 'position', new BufferAttribute( positions, 3 ) ); + geometry.setIndex(new BufferAttribute(indices, 1)); + geometry.addAttribute('position', new BufferAttribute(positions, 3)); - LineSegments.call( this, geometry, new LineBasicMaterial( { color: color } ) ); + LineSegments.call(this, geometry, new LineBasicMaterial({ color: color })); this.matrixAutoUpdate = false; @@ -45648,28 +45661,28 @@ } - BoxHelper.prototype = Object.create( LineSegments.prototype ); + BoxHelper.prototype = Object.create(LineSegments.prototype); BoxHelper.prototype.constructor = BoxHelper; - BoxHelper.prototype.update = ( function () { + BoxHelper.prototype.update = (function () { var box = new Box3(); - return function update( object ) { + return function update(object) { - if ( object !== undefined ) { + if (object !== undefined) { - console.warn( 'THREE.BoxHelper: .update() has no longer arguments.' ); + console.warn('THREE.BoxHelper: .update() has no longer arguments.'); } - if ( this.object !== undefined ) { + if (this.object !== undefined) { - box.setFromObject( this.object ); + box.setFromObject(this.object); } - if ( box.isEmpty() ) return; + if (box.isEmpty()) return; var min = box.min; var max = box.max; @@ -45693,14 +45706,14 @@ var position = this.geometry.attributes.position; var array = position.array; - array[ 0 ] = max.x; array[ 1 ] = max.y; array[ 2 ] = max.z; - array[ 3 ] = min.x; array[ 4 ] = max.y; array[ 5 ] = max.z; - array[ 6 ] = min.x; array[ 7 ] = min.y; array[ 8 ] = max.z; - array[ 9 ] = max.x; array[ 10 ] = min.y; array[ 11 ] = max.z; - array[ 12 ] = max.x; array[ 13 ] = max.y; array[ 14 ] = min.z; - array[ 15 ] = min.x; array[ 16 ] = max.y; array[ 17 ] = min.z; - array[ 18 ] = min.x; array[ 19 ] = min.y; array[ 20 ] = min.z; - array[ 21 ] = max.x; array[ 22 ] = min.y; array[ 23 ] = min.z; + array[0] = max.x; array[1] = max.y; array[2] = max.z; + array[3] = min.x; array[4] = max.y; array[5] = max.z; + array[6] = min.x; array[7] = min.y; array[8] = max.z; + array[9] = max.x; array[10] = min.y; array[11] = max.z; + array[12] = max.x; array[13] = max.y; array[14] = min.z; + array[15] = min.x; array[16] = max.y; array[17] = min.z; + array[18] = min.x; array[19] = min.y; array[20] = min.z; + array[21] = max.x; array[22] = min.y; array[23] = min.z; position.needsUpdate = true; @@ -45708,9 +45721,9 @@ }; - } )(); + })(); - BoxHelper.prototype.setFromObject = function ( object ) { + BoxHelper.prototype.setFromObject = function (object) { this.object = object; this.update(); @@ -45719,9 +45732,9 @@ }; - BoxHelper.prototype.copy = function ( source ) { + BoxHelper.prototype.copy = function (source) { - LineSegments.prototype.copy.call( this, source ); + LineSegments.prototype.copy.call(this, source); this.object = source.object; @@ -45731,7 +45744,7 @@ BoxHelper.prototype.clone = function () { - return new this.constructor().copy( this ); + return new this.constructor().copy(this); }; @@ -45739,46 +45752,46 @@ * @author WestLangley / http://github.com/WestLangley */ - function Box3Helper( box, hex ) { + function Box3Helper(box, hex) { this.type = 'Box3Helper'; this.box = box; - var color = ( hex !== undefined ) ? hex : 0xffff00; + var color = (hex !== undefined) ? hex : 0xffff00; - var 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 ] ); + var 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]); - var positions = [ 1, 1, 1, - 1, 1, 1, - 1, - 1, 1, 1, - 1, 1, 1, 1, - 1, - 1, 1, - 1, - 1, - 1, - 1, 1, - 1, - 1 ]; + var positions = [1, 1, 1, - 1, 1, 1, - 1, - 1, 1, 1, - 1, 1, 1, 1, - 1, - 1, 1, - 1, - 1, - 1, - 1, 1, - 1, - 1]; var geometry = new BufferGeometry(); - geometry.setIndex( new BufferAttribute( indices, 1 ) ); + geometry.setIndex(new BufferAttribute(indices, 1)); - geometry.addAttribute( 'position', new Float32BufferAttribute( positions, 3 ) ); + geometry.addAttribute('position', new Float32BufferAttribute(positions, 3)); - LineSegments.call( this, geometry, new LineBasicMaterial( { color: color } ) ); + LineSegments.call(this, geometry, new LineBasicMaterial({ color: color })); this.geometry.computeBoundingSphere(); } - Box3Helper.prototype = Object.create( LineSegments.prototype ); + Box3Helper.prototype = Object.create(LineSegments.prototype); Box3Helper.prototype.constructor = Box3Helper; - Box3Helper.prototype.updateMatrixWorld = function ( force ) { + Box3Helper.prototype.updateMatrixWorld = function (force) { var box = this.box; - if ( box.isEmpty() ) return; + if (box.isEmpty()) return; - box.getCenter( this.position ); + box.getCenter(this.position); - box.getSize( this.scale ); + box.getSize(this.scale); - this.scale.multiplyScalar( 0.5 ); + this.scale.multiplyScalar(0.5); - Object3D.prototype.updateMatrixWorld.call( this, force ); + Object3D.prototype.updateMatrixWorld.call(this, force); }; @@ -45786,52 +45799,52 @@ * @author WestLangley / http://github.com/WestLangley */ - function PlaneHelper( plane, size, hex ) { + function PlaneHelper(plane, size, hex) { this.type = 'PlaneHelper'; this.plane = plane; - this.size = ( size === undefined ) ? 1 : size; + this.size = (size === undefined) ? 1 : size; - var color = ( hex !== undefined ) ? hex : 0xffff00; + var color = (hex !== undefined) ? hex : 0xffff00; - var positions = [ 1, - 1, 1, - 1, 1, 1, - 1, - 1, 1, 1, 1, 1, - 1, 1, 1, - 1, - 1, 1, 1, - 1, 1, 1, 1, 1, 0, 0, 1, 0, 0, 0 ]; + var positions = [1, - 1, 1, - 1, 1, 1, - 1, - 1, 1, 1, 1, 1, - 1, 1, 1, - 1, - 1, 1, 1, - 1, 1, 1, 1, 1, 0, 0, 1, 0, 0, 0]; var geometry = new BufferGeometry(); - geometry.addAttribute( 'position', new Float32BufferAttribute( positions, 3 ) ); + geometry.addAttribute('position', new Float32BufferAttribute(positions, 3)); geometry.computeBoundingSphere(); - Line.call( this, geometry, new LineBasicMaterial( { color: color } ) ); + Line.call(this, geometry, new LineBasicMaterial({ color: color })); // - var positions2 = [ 1, 1, 1, - 1, 1, 1, - 1, - 1, 1, 1, 1, 1, - 1, - 1, 1, 1, - 1, 1 ]; + var positions2 = [1, 1, 1, - 1, 1, 1, - 1, - 1, 1, 1, 1, 1, - 1, - 1, 1, 1, - 1, 1]; var geometry2 = new BufferGeometry(); - geometry2.addAttribute( 'position', new Float32BufferAttribute( positions2, 3 ) ); + geometry2.addAttribute('position', new Float32BufferAttribute(positions2, 3)); geometry2.computeBoundingSphere(); - this.add( new Mesh( geometry2, new MeshBasicMaterial( { color: color, opacity: 0.2, transparent: true, depthWrite: false } ) ) ); + this.add(new Mesh(geometry2, new MeshBasicMaterial({ color: color, opacity: 0.2, transparent: true, depthWrite: false }))); } - PlaneHelper.prototype = Object.create( Line.prototype ); + PlaneHelper.prototype = Object.create(Line.prototype); PlaneHelper.prototype.constructor = PlaneHelper; - PlaneHelper.prototype.updateMatrixWorld = function ( force ) { + PlaneHelper.prototype.updateMatrixWorld = function (force) { var scale = - this.plane.constant; - if ( Math.abs( scale ) < 1e-8 ) scale = 1e-8; // sign does not matter + if (Math.abs(scale) < 1e-8) scale = 1e-8; // sign does not matter - this.scale.set( 0.5 * this.size, 0.5 * this.size, scale ); + this.scale.set(0.5 * this.size, 0.5 * this.size, scale); - this.children[ 0 ].material.side = ( scale < 0 ) ? BackSide : FrontSide; // renderer flips side when determinant < 0; flipping not wanted here + this.children[0].material.side = (scale < 0) ? BackSide : FrontSide; // renderer flips side when determinant < 0; flipping not wanted here - this.lookAt( this.plane.normal ); + this.lookAt(this.plane.normal); - Object3D.prototype.updateMatrixWorld.call( this, force ); + Object3D.prototype.updateMatrixWorld.call(this, force); }; @@ -45853,105 +45866,105 @@ var lineGeometry, coneGeometry; - function ArrowHelper( dir, origin, length, color, headLength, headWidth ) { + function ArrowHelper(dir, origin, length, color, headLength, headWidth) { // dir is assumed to be normalized - Object3D.call( this ); + Object3D.call(this); - if ( dir === undefined ) dir = new THREE.Vector3( 0, 0, 1 ); - if ( origin === undefined ) origin = new THREE.Vector3( 0, 0, 0 ); - if ( length === undefined ) length = 1; - if ( color === undefined ) color = 0xffff00; - if ( headLength === undefined ) headLength = 0.2 * length; - if ( headWidth === undefined ) headWidth = 0.2 * headLength; + if (dir === undefined) dir = new THREE.Vector3(0, 0, 1); + if (origin === undefined) origin = new THREE.Vector3(0, 0, 0); + if (length === undefined) length = 1; + if (color === undefined) color = 0xffff00; + if (headLength === undefined) headLength = 0.2 * length; + if (headWidth === undefined) headWidth = 0.2 * headLength; - if ( lineGeometry === undefined ) { + if (lineGeometry === undefined) { lineGeometry = new BufferGeometry(); - lineGeometry.addAttribute( 'position', new Float32BufferAttribute( [ 0, 0, 0, 0, 1, 0 ], 3 ) ); + lineGeometry.addAttribute('position', new Float32BufferAttribute([0, 0, 0, 0, 1, 0], 3)); - coneGeometry = new CylinderBufferGeometry( 0, 0.5, 1, 5, 1 ); - coneGeometry.translate( 0, - 0.5, 0 ); + coneGeometry = new CylinderBufferGeometry(0, 0.5, 1, 5, 1); + coneGeometry.translate(0, - 0.5, 0); } - this.position.copy( origin ); + this.position.copy(origin); - this.line = new Line( lineGeometry, new LineBasicMaterial( { color: color } ) ); + this.line = new Line(lineGeometry, new LineBasicMaterial({ color: color })); this.line.matrixAutoUpdate = false; - this.add( this.line ); + this.add(this.line); - this.cone = new Mesh( coneGeometry, new MeshBasicMaterial( { color: color } ) ); + this.cone = new Mesh(coneGeometry, new MeshBasicMaterial({ color: color })); this.cone.matrixAutoUpdate = false; - this.add( this.cone ); + this.add(this.cone); - this.setDirection( dir ); - this.setLength( length, headLength, headWidth ); + this.setDirection(dir); + this.setLength(length, headLength, headWidth); } - ArrowHelper.prototype = Object.create( Object3D.prototype ); + ArrowHelper.prototype = Object.create(Object3D.prototype); ArrowHelper.prototype.constructor = ArrowHelper; - ArrowHelper.prototype.setDirection = ( function () { + ArrowHelper.prototype.setDirection = (function () { var axis = new Vector3(); var radians; - return function setDirection( dir ) { + return function setDirection(dir) { // dir is assumed to be normalized - if ( dir.y > 0.99999 ) { + if (dir.y > 0.99999) { - this.quaternion.set( 0, 0, 0, 1 ); + this.quaternion.set(0, 0, 0, 1); - } else if ( dir.y < - 0.99999 ) { + } else if (dir.y < - 0.99999) { - this.quaternion.set( 1, 0, 0, 0 ); + this.quaternion.set(1, 0, 0, 0); } else { - axis.set( dir.z, 0, - dir.x ).normalize(); + axis.set(dir.z, 0, - dir.x).normalize(); - radians = Math.acos( dir.y ); + radians = Math.acos(dir.y); - this.quaternion.setFromAxisAngle( axis, radians ); + this.quaternion.setFromAxisAngle(axis, radians); } }; - }() ); + }()); - ArrowHelper.prototype.setLength = function ( length, headLength, headWidth ) { + ArrowHelper.prototype.setLength = function (length, headLength, headWidth) { - if ( headLength === undefined ) headLength = 0.2 * length; - if ( headWidth === undefined ) headWidth = 0.2 * headLength; + if (headLength === undefined) headLength = 0.2 * length; + if (headWidth === undefined) headWidth = 0.2 * headLength; - this.line.scale.set( 1, Math.max( 0, length - headLength ), 1 ); + this.line.scale.set(1, Math.max(0, length - headLength), 1); this.line.updateMatrix(); - this.cone.scale.set( headWidth, headLength, headWidth ); + this.cone.scale.set(headWidth, headLength, headWidth); this.cone.position.y = length; this.cone.updateMatrix(); }; - ArrowHelper.prototype.setColor = function ( color ) { + ArrowHelper.prototype.setColor = function (color) { - this.line.material.color.copy( color ); - this.cone.material.color.copy( color ); + this.line.material.color.copy(color); + this.cone.material.color.copy(color); }; - ArrowHelper.prototype.copy = function ( source ) { + ArrowHelper.prototype.copy = function (source) { - Object3D.prototype.copy.call( this, source, false ); + Object3D.prototype.copy.call(this, source, false); - this.line.copy( source.line ); - this.cone.copy( source.cone ); + this.line.copy(source.line); + this.cone.copy(source.cone); return this; @@ -45959,7 +45972,7 @@ ArrowHelper.prototype.clone = function () { - return new this.constructor().copy( this ); + return new this.constructor().copy(this); }; @@ -45968,43 +45981,43 @@ * @author mrdoob / http://mrdoob.com/ */ - function AxesHelper( size ) { + function AxesHelper(size) { size = size || 1; var vertices = [ - 0, 0, 0, size, 0, 0, - 0, 0, 0, 0, size, 0, - 0, 0, 0, 0, 0, size + 0, 0, 0, size, 0, 0, + 0, 0, 0, 0, size, 0, + 0, 0, 0, 0, 0, size ]; var colors = [ - 1, 0, 0, 1, 0.6, 0, - 0, 1, 0, 0.6, 1, 0, - 0, 0, 1, 0, 0.6, 1 + 1, 0, 0, 1, 0.6, 0, + 0, 1, 0, 0.6, 1, 0, + 0, 0, 1, 0, 0.6, 1 ]; var geometry = new BufferGeometry(); - geometry.addAttribute( 'position', new Float32BufferAttribute( vertices, 3 ) ); - geometry.addAttribute( 'color', new Float32BufferAttribute( colors, 3 ) ); + geometry.addAttribute('position', new Float32BufferAttribute(vertices, 3)); + geometry.addAttribute('color', new Float32BufferAttribute(colors, 3)); - var material = new LineBasicMaterial( { vertexColors: VertexColors } ); + var material = new LineBasicMaterial({ vertexColors: VertexColors }); - LineSegments.call( this, geometry, material ); + LineSegments.call(this, geometry, material); } - AxesHelper.prototype = Object.create( LineSegments.prototype ); + AxesHelper.prototype = Object.create(LineSegments.prototype); AxesHelper.prototype.constructor = AxesHelper; /** * @author mrdoob / http://mrdoob.com/ */ - function Face4( a, b, c, d, normal, color, materialIndex ) { + function Face4(a, b, c, d, normal, color, materialIndex) { - console.warn( 'THREE.Face4 has been removed. A THREE.Face3 will be created instead.' ); - return new Face3( a, b, c, normal, color, materialIndex ); + console.warn('THREE.Face4 has been removed. A THREE.Face3 will be created instead.'); + return new Face3(a, b, c, normal, color, materialIndex); } @@ -46012,18 +46025,18 @@ var LinePieces = 1; - function MeshFaceMaterial( materials ) { + function MeshFaceMaterial(materials) { - console.warn( 'THREE.MeshFaceMaterial has been removed. Use an Array instead.' ); + console.warn('THREE.MeshFaceMaterial has been removed. Use an Array instead.'); return materials; } - function MultiMaterial( materials ) { + function MultiMaterial(materials) { - if ( materials === undefined ) materials = []; + if (materials === undefined) materials = []; - console.warn( 'THREE.MultiMaterial has been removed. Use an Array instead.' ); + console.warn('THREE.MultiMaterial has been removed. Use an Array instead.'); materials.isMultiMaterial = true; materials.materials = materials; materials.clone = function () { @@ -46035,134 +46048,134 @@ } - function PointCloud( geometry, material ) { + function PointCloud(geometry, material) { - console.warn( 'THREE.PointCloud has been renamed to THREE.Points.' ); - return new Points( geometry, material ); + console.warn('THREE.PointCloud has been renamed to THREE.Points.'); + return new Points(geometry, material); } - function Particle( material ) { + function Particle(material) { - console.warn( 'THREE.Particle has been renamed to THREE.Sprite.' ); - return new Sprite( material ); + console.warn('THREE.Particle has been renamed to THREE.Sprite.'); + return new Sprite(material); } - function ParticleSystem( geometry, material ) { + function ParticleSystem(geometry, material) { - console.warn( 'THREE.ParticleSystem has been renamed to THREE.Points.' ); - return new Points( geometry, material ); + console.warn('THREE.ParticleSystem has been renamed to THREE.Points.'); + return new Points(geometry, material); } - function PointCloudMaterial( parameters ) { + function PointCloudMaterial(parameters) { - console.warn( 'THREE.PointCloudMaterial has been renamed to THREE.PointsMaterial.' ); - return new PointsMaterial( parameters ); + console.warn('THREE.PointCloudMaterial has been renamed to THREE.PointsMaterial.'); + return new PointsMaterial(parameters); } - function ParticleBasicMaterial( parameters ) { + function ParticleBasicMaterial(parameters) { - console.warn( 'THREE.ParticleBasicMaterial has been renamed to THREE.PointsMaterial.' ); - return new PointsMaterial( parameters ); + console.warn('THREE.ParticleBasicMaterial has been renamed to THREE.PointsMaterial.'); + return new PointsMaterial(parameters); } - function ParticleSystemMaterial( parameters ) { + function ParticleSystemMaterial(parameters) { - console.warn( 'THREE.ParticleSystemMaterial has been renamed to THREE.PointsMaterial.' ); - return new PointsMaterial( parameters ); + console.warn('THREE.ParticleSystemMaterial has been renamed to THREE.PointsMaterial.'); + return new PointsMaterial(parameters); } - function Vertex( x, y, z ) { + function Vertex(x, y, z) { - console.warn( 'THREE.Vertex has been removed. Use THREE.Vector3 instead.' ); - return new Vector3( x, y, z ); + console.warn('THREE.Vertex has been removed. Use THREE.Vector3 instead.'); + return new Vector3(x, y, z); } // - function DynamicBufferAttribute( array, itemSize ) { + function DynamicBufferAttribute(array, itemSize) { - console.warn( 'THREE.DynamicBufferAttribute has been removed. Use new THREE.BufferAttribute().setDynamic( true ) instead.' ); - return new BufferAttribute( array, itemSize ).setDynamic( true ); + console.warn('THREE.DynamicBufferAttribute has been removed. Use new THREE.BufferAttribute().setDynamic( true ) instead.'); + return new BufferAttribute(array, itemSize).setDynamic(true); } - function Int8Attribute( array, itemSize ) { + function Int8Attribute(array, itemSize) { - console.warn( 'THREE.Int8Attribute has been removed. Use new THREE.Int8BufferAttribute() instead.' ); - return new Int8BufferAttribute( array, itemSize ); + console.warn('THREE.Int8Attribute has been removed. Use new THREE.Int8BufferAttribute() instead.'); + return new Int8BufferAttribute(array, itemSize); } - function Uint8Attribute( array, itemSize ) { + function Uint8Attribute(array, itemSize) { - console.warn( 'THREE.Uint8Attribute has been removed. Use new THREE.Uint8BufferAttribute() instead.' ); - return new Uint8BufferAttribute( array, itemSize ); + console.warn('THREE.Uint8Attribute has been removed. Use new THREE.Uint8BufferAttribute() instead.'); + return new Uint8BufferAttribute(array, itemSize); } - function Uint8ClampedAttribute( array, itemSize ) { + function Uint8ClampedAttribute(array, itemSize) { - console.warn( 'THREE.Uint8ClampedAttribute has been removed. Use new THREE.Uint8ClampedBufferAttribute() instead.' ); - return new Uint8ClampedBufferAttribute( array, itemSize ); + console.warn('THREE.Uint8ClampedAttribute has been removed. Use new THREE.Uint8ClampedBufferAttribute() instead.'); + return new Uint8ClampedBufferAttribute(array, itemSize); } - function Int16Attribute( array, itemSize ) { + function Int16Attribute(array, itemSize) { - console.warn( 'THREE.Int16Attribute has been removed. Use new THREE.Int16BufferAttribute() instead.' ); - return new Int16BufferAttribute( array, itemSize ); + console.warn('THREE.Int16Attribute has been removed. Use new THREE.Int16BufferAttribute() instead.'); + return new Int16BufferAttribute(array, itemSize); } - function Uint16Attribute( array, itemSize ) { + function Uint16Attribute(array, itemSize) { - console.warn( 'THREE.Uint16Attribute has been removed. Use new THREE.Uint16BufferAttribute() instead.' ); - return new Uint16BufferAttribute( array, itemSize ); + console.warn('THREE.Uint16Attribute has been removed. Use new THREE.Uint16BufferAttribute() instead.'); + return new Uint16BufferAttribute(array, itemSize); } - function Int32Attribute( array, itemSize ) { + function Int32Attribute(array, itemSize) { - console.warn( 'THREE.Int32Attribute has been removed. Use new THREE.Int32BufferAttribute() instead.' ); - return new Int32BufferAttribute( array, itemSize ); + console.warn('THREE.Int32Attribute has been removed. Use new THREE.Int32BufferAttribute() instead.'); + return new Int32BufferAttribute(array, itemSize); } - function Uint32Attribute( array, itemSize ) { + function Uint32Attribute(array, itemSize) { - console.warn( 'THREE.Uint32Attribute has been removed. Use new THREE.Uint32BufferAttribute() instead.' ); - return new Uint32BufferAttribute( array, itemSize ); + console.warn('THREE.Uint32Attribute has been removed. Use new THREE.Uint32BufferAttribute() instead.'); + return new Uint32BufferAttribute(array, itemSize); } - function Float32Attribute( array, itemSize ) { + function Float32Attribute(array, itemSize) { - console.warn( 'THREE.Float32Attribute has been removed. Use new THREE.Float32BufferAttribute() instead.' ); - return new Float32BufferAttribute( array, itemSize ); + console.warn('THREE.Float32Attribute has been removed. Use new THREE.Float32BufferAttribute() instead.'); + return new Float32BufferAttribute(array, itemSize); } - function Float64Attribute( array, itemSize ) { + function Float64Attribute(array, itemSize) { - console.warn( 'THREE.Float64Attribute has been removed. Use new THREE.Float64BufferAttribute() instead.' ); - return new Float64BufferAttribute( array, itemSize ); + console.warn('THREE.Float64Attribute has been removed. Use new THREE.Float64BufferAttribute() instead.'); + return new Float64BufferAttribute(array, itemSize); } // - Curve.create = function ( construct, getPoint ) { + Curve.create = function (construct, getPoint) { - console.log( 'THREE.Curve.create() has been deprecated' ); + console.log('THREE.Curve.create() has been deprecated'); - construct.prototype = Object.create( Curve.prototype ); + construct.prototype = Object.create(Curve.prototype); construct.prototype.constructor = construct; construct.prototype.getPoint = getPoint; @@ -46172,40 +46185,40 @@ // - Object.assign( CurvePath.prototype, { + Object.assign(CurvePath.prototype, { - createPointsGeometry: function ( divisions ) { + createPointsGeometry: function (divisions) { - console.warn( 'THREE.CurvePath: .createPointsGeometry() has been removed. Use new THREE.Geometry().setFromPoints( points ) instead.' ); + console.warn('THREE.CurvePath: .createPointsGeometry() has been removed. Use new THREE.Geometry().setFromPoints( points ) instead.'); // generate geometry from path points (for Line or Points objects) - var pts = this.getPoints( divisions ); - return this.createGeometry( pts ); + var pts = this.getPoints(divisions); + return this.createGeometry(pts); }, - createSpacedPointsGeometry: function ( divisions ) { + createSpacedPointsGeometry: function (divisions) { - console.warn( 'THREE.CurvePath: .createSpacedPointsGeometry() has been removed. Use new THREE.Geometry().setFromPoints( points ) instead.' ); + console.warn('THREE.CurvePath: .createSpacedPointsGeometry() has been removed. Use new THREE.Geometry().setFromPoints( points ) instead.'); // generate geometry from equidistant sampling along the path - var pts = this.getSpacedPoints( divisions ); - return this.createGeometry( pts ); + var pts = this.getSpacedPoints(divisions); + return this.createGeometry(pts); }, - createGeometry: function ( points ) { + createGeometry: function (points) { - console.warn( 'THREE.CurvePath: .createGeometry() has been removed. Use new THREE.Geometry().setFromPoints( points ) instead.' ); + console.warn('THREE.CurvePath: .createGeometry() has been removed. Use new THREE.Geometry().setFromPoints( points ) instead.'); var geometry = new Geometry(); - for ( var i = 0, l = points.length; i < l; i ++ ) { + for (var i = 0, l = points.length; i < l; i++) { - var point = points[ i ]; - geometry.vertices.push( new Vector3( point.x, point.y, point.z || 0 ) ); + var point = points[i]; + geometry.vertices.push(new Vector3(point.x, point.y, point.z || 0)); } @@ -46213,313 +46226,313 @@ } - } ); + }); // - Object.assign( Path.prototype, { + Object.assign(Path.prototype, { - fromPoints: function ( points ) { + fromPoints: function (points) { - console.warn( 'THREE.Path: .fromPoints() has been renamed to .setFromPoints().' ); - this.setFromPoints( points ); + console.warn('THREE.Path: .fromPoints() has been renamed to .setFromPoints().'); + this.setFromPoints(points); } - } ); + }); // - function ClosedSplineCurve3( points ) { + function ClosedSplineCurve3(points) { - console.warn( 'THREE.ClosedSplineCurve3 has been deprecated. Use THREE.CatmullRomCurve3 instead.' ); + console.warn('THREE.ClosedSplineCurve3 has been deprecated. Use THREE.CatmullRomCurve3 instead.'); - CatmullRomCurve3.call( this, points ); + CatmullRomCurve3.call(this, points); this.type = 'catmullrom'; this.closed = true; } - ClosedSplineCurve3.prototype = Object.create( CatmullRomCurve3.prototype ); + ClosedSplineCurve3.prototype = Object.create(CatmullRomCurve3.prototype); // - function SplineCurve3( points ) { + function SplineCurve3(points) { - console.warn( 'THREE.SplineCurve3 has been deprecated. Use THREE.CatmullRomCurve3 instead.' ); + console.warn('THREE.SplineCurve3 has been deprecated. Use THREE.CatmullRomCurve3 instead.'); - CatmullRomCurve3.call( this, points ); + CatmullRomCurve3.call(this, points); this.type = 'catmullrom'; } - SplineCurve3.prototype = Object.create( CatmullRomCurve3.prototype ); + SplineCurve3.prototype = Object.create(CatmullRomCurve3.prototype); // - function Spline( points ) { + function Spline(points) { - console.warn( 'THREE.Spline has been removed. Use THREE.CatmullRomCurve3 instead.' ); + console.warn('THREE.Spline has been removed. Use THREE.CatmullRomCurve3 instead.'); - CatmullRomCurve3.call( this, points ); + CatmullRomCurve3.call(this, points); this.type = 'catmullrom'; } - Spline.prototype = Object.create( CatmullRomCurve3.prototype ); + Spline.prototype = Object.create(CatmullRomCurve3.prototype); - Object.assign( Spline.prototype, { + Object.assign(Spline.prototype, { - initFromArray: function ( /* a */ ) { + initFromArray: function ( /* a */) { - console.error( 'THREE.Spline: .initFromArray() has been removed.' ); + console.error('THREE.Spline: .initFromArray() has been removed.'); }, - getControlPointsArray: function ( /* optionalTarget */ ) { + getControlPointsArray: function ( /* optionalTarget */) { - console.error( 'THREE.Spline: .getControlPointsArray() has been removed.' ); + console.error('THREE.Spline: .getControlPointsArray() has been removed.'); }, - reparametrizeByArcLength: function ( /* samplingCoef */ ) { + reparametrizeByArcLength: function ( /* samplingCoef */) { - console.error( 'THREE.Spline: .reparametrizeByArcLength() has been removed.' ); + console.error('THREE.Spline: .reparametrizeByArcLength() has been removed.'); } - } ); + }); // - function AxisHelper( size ) { + function AxisHelper(size) { - console.warn( 'THREE.AxisHelper has been renamed to THREE.AxesHelper.' ); - return new AxesHelper( size ); + console.warn('THREE.AxisHelper has been renamed to THREE.AxesHelper.'); + return new AxesHelper(size); } - function BoundingBoxHelper( object, color ) { + function BoundingBoxHelper(object, color) { - console.warn( 'THREE.BoundingBoxHelper has been deprecated. Creating a THREE.BoxHelper instead.' ); - return new BoxHelper( object, color ); + console.warn('THREE.BoundingBoxHelper has been deprecated. Creating a THREE.BoxHelper instead.'); + return new BoxHelper(object, color); } - function EdgesHelper( object, hex ) { + function EdgesHelper(object, hex) { - console.warn( 'THREE.EdgesHelper has been removed. Use THREE.EdgesGeometry instead.' ); - return new LineSegments( new EdgesGeometry( object.geometry ), new LineBasicMaterial( { color: hex !== undefined ? hex : 0xffffff } ) ); + console.warn('THREE.EdgesHelper has been removed. Use THREE.EdgesGeometry instead.'); + return new LineSegments(new EdgesGeometry(object.geometry), new LineBasicMaterial({ color: hex !== undefined ? hex : 0xffffff })); } GridHelper.prototype.setColors = function () { - console.error( 'THREE.GridHelper: setColors() has been deprecated, pass them in the constructor instead.' ); + console.error('THREE.GridHelper: setColors() has been deprecated, pass them in the constructor instead.'); }; SkeletonHelper.prototype.update = function () { - console.error( 'THREE.SkeletonHelper: update() no longer needs to be called.' ); + console.error('THREE.SkeletonHelper: update() no longer needs to be called.'); }; - function WireframeHelper( object, hex ) { + function WireframeHelper(object, hex) { - console.warn( 'THREE.WireframeHelper has been removed. Use THREE.WireframeGeometry instead.' ); - return new LineSegments( new WireframeGeometry( object.geometry ), new LineBasicMaterial( { color: hex !== undefined ? hex : 0xffffff } ) ); + console.warn('THREE.WireframeHelper has been removed. Use THREE.WireframeGeometry instead.'); + return new LineSegments(new WireframeGeometry(object.geometry), new LineBasicMaterial({ color: hex !== undefined ? hex : 0xffffff })); } // - Object.assign( Loader.prototype, { + Object.assign(Loader.prototype, { - extractUrlBase: function ( url ) { + extractUrlBase: function (url) { - console.warn( 'THREE.Loader: .extractUrlBase() has been deprecated. Use THREE.LoaderUtils.extractUrlBase() instead.' ); - return LoaderUtils.extractUrlBase( url ); + console.warn('THREE.Loader: .extractUrlBase() has been deprecated. Use THREE.LoaderUtils.extractUrlBase() instead.'); + return LoaderUtils.extractUrlBase(url); } - } ); + }); - function XHRLoader( manager ) { + function XHRLoader(manager) { - console.warn( 'THREE.XHRLoader has been renamed to THREE.FileLoader.' ); - return new FileLoader( manager ); + console.warn('THREE.XHRLoader has been renamed to THREE.FileLoader.'); + return new FileLoader(manager); } - function BinaryTextureLoader( manager ) { + function BinaryTextureLoader(manager) { - console.warn( 'THREE.BinaryTextureLoader has been renamed to THREE.DataTextureLoader.' ); - return new DataTextureLoader( manager ); + console.warn('THREE.BinaryTextureLoader has been renamed to THREE.DataTextureLoader.'); + return new DataTextureLoader(manager); } - Object.assign( JSONLoader.prototype, { + Object.assign(JSONLoader.prototype, { - setTexturePath: function ( value ) { + setTexturePath: function (value) { - console.warn( 'THREE.JSONLoader: .setTexturePath() has been renamed to .setResourcePath().' ); - return this.setResourcePath( value ); + console.warn('THREE.JSONLoader: .setTexturePath() has been renamed to .setResourcePath().'); + return this.setResourcePath(value); } - } ); + }); - Object.assign( ObjectLoader.prototype, { + Object.assign(ObjectLoader.prototype, { - setTexturePath: function ( value ) { + setTexturePath: function (value) { - console.warn( 'THREE.ObjectLoader: .setTexturePath() has been renamed to .setResourcePath().' ); - return this.setResourcePath( value ); + console.warn('THREE.ObjectLoader: .setTexturePath() has been renamed to .setResourcePath().'); + return this.setResourcePath(value); } - } ); + }); // - Object.assign( Box2.prototype, { + Object.assign(Box2.prototype, { - center: function ( optionalTarget ) { + center: function (optionalTarget) { - console.warn( 'THREE.Box2: .center() has been renamed to .getCenter().' ); - return this.getCenter( optionalTarget ); + console.warn('THREE.Box2: .center() has been renamed to .getCenter().'); + return this.getCenter(optionalTarget); }, empty: function () { - console.warn( 'THREE.Box2: .empty() has been renamed to .isEmpty().' ); + console.warn('THREE.Box2: .empty() has been renamed to .isEmpty().'); return this.isEmpty(); }, - isIntersectionBox: function ( box ) { + isIntersectionBox: function (box) { - console.warn( 'THREE.Box2: .isIntersectionBox() has been renamed to .intersectsBox().' ); - return this.intersectsBox( box ); + console.warn('THREE.Box2: .isIntersectionBox() has been renamed to .intersectsBox().'); + return this.intersectsBox(box); }, - size: function ( optionalTarget ) { + size: function (optionalTarget) { - console.warn( 'THREE.Box2: .size() has been renamed to .getSize().' ); - return this.getSize( optionalTarget ); + console.warn('THREE.Box2: .size() has been renamed to .getSize().'); + return this.getSize(optionalTarget); } - } ); + }); - Object.assign( Box3.prototype, { + Object.assign(Box3.prototype, { - center: function ( optionalTarget ) { + center: function (optionalTarget) { - console.warn( 'THREE.Box3: .center() has been renamed to .getCenter().' ); - return this.getCenter( optionalTarget ); + console.warn('THREE.Box3: .center() has been renamed to .getCenter().'); + return this.getCenter(optionalTarget); }, empty: function () { - console.warn( 'THREE.Box3: .empty() has been renamed to .isEmpty().' ); + console.warn('THREE.Box3: .empty() has been renamed to .isEmpty().'); return this.isEmpty(); }, - isIntersectionBox: function ( box ) { + isIntersectionBox: function (box) { - console.warn( 'THREE.Box3: .isIntersectionBox() has been renamed to .intersectsBox().' ); - return this.intersectsBox( box ); + console.warn('THREE.Box3: .isIntersectionBox() has been renamed to .intersectsBox().'); + return this.intersectsBox(box); }, - isIntersectionSphere: function ( sphere ) { + isIntersectionSphere: function (sphere) { - console.warn( 'THREE.Box3: .isIntersectionSphere() has been renamed to .intersectsSphere().' ); - return this.intersectsSphere( sphere ); + console.warn('THREE.Box3: .isIntersectionSphere() has been renamed to .intersectsSphere().'); + return this.intersectsSphere(sphere); }, - size: function ( optionalTarget ) { + size: function (optionalTarget) { - console.warn( 'THREE.Box3: .size() has been renamed to .getSize().' ); - return this.getSize( optionalTarget ); + console.warn('THREE.Box3: .size() has been renamed to .getSize().'); + return this.getSize(optionalTarget); } - } ); + }); - Line3.prototype.center = function ( optionalTarget ) { + Line3.prototype.center = function (optionalTarget) { - console.warn( 'THREE.Line3: .center() has been renamed to .getCenter().' ); - return this.getCenter( optionalTarget ); + console.warn('THREE.Line3: .center() has been renamed to .getCenter().'); + return this.getCenter(optionalTarget); }; - Object.assign( _Math, { + Object.assign(_Math, { random16: function () { - console.warn( 'THREE.Math: .random16() has been deprecated. Use Math.random() instead.' ); + console.warn('THREE.Math: .random16() has been deprecated. Use Math.random() instead.'); return Math.random(); }, - nearestPowerOfTwo: function ( value ) { + nearestPowerOfTwo: function (value) { - console.warn( 'THREE.Math: .nearestPowerOfTwo() has been renamed to .floorPowerOfTwo().' ); - return _Math.floorPowerOfTwo( value ); + console.warn('THREE.Math: .nearestPowerOfTwo() has been renamed to .floorPowerOfTwo().'); + return _Math.floorPowerOfTwo(value); }, - nextPowerOfTwo: function ( value ) { + nextPowerOfTwo: function (value) { - console.warn( 'THREE.Math: .nextPowerOfTwo() has been renamed to .ceilPowerOfTwo().' ); - return _Math.ceilPowerOfTwo( value ); + console.warn('THREE.Math: .nextPowerOfTwo() has been renamed to .ceilPowerOfTwo().'); + return _Math.ceilPowerOfTwo(value); } - } ); + }); - Object.assign( Matrix3.prototype, { + Object.assign(Matrix3.prototype, { - flattenToArrayOffset: function ( array, offset ) { + flattenToArrayOffset: function (array, offset) { - console.warn( "THREE.Matrix3: .flattenToArrayOffset() has been deprecated. Use .toArray() instead." ); - return this.toArray( array, offset ); + console.warn("THREE.Matrix3: .flattenToArrayOffset() has been deprecated. Use .toArray() instead."); + return this.toArray(array, offset); }, - multiplyVector3: function ( vector ) { + multiplyVector3: function (vector) { - console.warn( 'THREE.Matrix3: .multiplyVector3() has been removed. Use vector.applyMatrix3( matrix ) instead.' ); - return vector.applyMatrix3( this ); + console.warn('THREE.Matrix3: .multiplyVector3() has been removed. Use vector.applyMatrix3( matrix ) instead.'); + return vector.applyMatrix3(this); }, - multiplyVector3Array: function ( /* a */ ) { + multiplyVector3Array: function ( /* a */) { - console.error( 'THREE.Matrix3: .multiplyVector3Array() has been removed.' ); + console.error('THREE.Matrix3: .multiplyVector3Array() has been removed.'); }, - applyToBuffer: function ( buffer /*, offset, length */ ) { + applyToBuffer: function (buffer /*, offset, length */) { - console.warn( 'THREE.Matrix3: .applyToBuffer() has been removed. Use matrix.applyToBufferAttribute( attribute ) instead.' ); - return this.applyToBufferAttribute( buffer ); + console.warn('THREE.Matrix3: .applyToBuffer() has been removed. Use matrix.applyToBufferAttribute( attribute ) instead.'); + return this.applyToBufferAttribute(buffer); }, - applyToVector3Array: function ( /* array, offset, length */ ) { + applyToVector3Array: function ( /* array, offset, length */) { - console.error( 'THREE.Matrix3: .applyToVector3Array() has been removed.' ); + console.error('THREE.Matrix3: .applyToVector3Array() has been removed.'); } - } ); + }); - Object.assign( Matrix4.prototype, { + Object.assign(Matrix4.prototype, { - extractPosition: function ( m ) { + extractPosition: function (m) { - console.warn( 'THREE.Matrix4: .extractPosition() has been renamed to .copyPosition().' ); - return this.copyPosition( m ); + console.warn('THREE.Matrix4: .extractPosition() has been renamed to .copyPosition().'); + return this.copyPosition(m); }, - flattenToArrayOffset: function ( array, offset ) { + flattenToArrayOffset: function (array, offset) { - console.warn( "THREE.Matrix4: .flattenToArrayOffset() has been deprecated. Use .toArray() instead." ); - return this.toArray( array, offset ); + console.warn("THREE.Matrix4: .flattenToArrayOffset() has been deprecated. Use .toArray() instead."); + return this.toArray(array, offset); }, getPosition: function () { @@ -46528,363 +46541,363 @@ return function getPosition() { - if ( v1 === undefined ) v1 = new Vector3(); - console.warn( 'THREE.Matrix4: .getPosition() has been removed. Use Vector3.setFromMatrixPosition( matrix ) instead.' ); - return v1.setFromMatrixColumn( this, 3 ); + if (v1 === undefined) v1 = new Vector3(); + console.warn('THREE.Matrix4: .getPosition() has been removed. Use Vector3.setFromMatrixPosition( matrix ) instead.'); + return v1.setFromMatrixColumn(this, 3); }; }(), - setRotationFromQuaternion: function ( q ) { + setRotationFromQuaternion: function (q) { - console.warn( 'THREE.Matrix4: .setRotationFromQuaternion() has been renamed to .makeRotationFromQuaternion().' ); - return this.makeRotationFromQuaternion( q ); + console.warn('THREE.Matrix4: .setRotationFromQuaternion() has been renamed to .makeRotationFromQuaternion().'); + return this.makeRotationFromQuaternion(q); }, multiplyToArray: function () { - console.warn( 'THREE.Matrix4: .multiplyToArray() has been removed.' ); + console.warn('THREE.Matrix4: .multiplyToArray() has been removed.'); }, - multiplyVector3: function ( vector ) { + multiplyVector3: function (vector) { - console.warn( 'THREE.Matrix4: .multiplyVector3() has been removed. Use vector.applyMatrix4( matrix ) instead.' ); - return vector.applyMatrix4( this ); + console.warn('THREE.Matrix4: .multiplyVector3() has been removed. Use vector.applyMatrix4( matrix ) instead.'); + return vector.applyMatrix4(this); }, - multiplyVector4: function ( vector ) { + multiplyVector4: function (vector) { - console.warn( 'THREE.Matrix4: .multiplyVector4() has been removed. Use vector.applyMatrix4( matrix ) instead.' ); - return vector.applyMatrix4( this ); + console.warn('THREE.Matrix4: .multiplyVector4() has been removed. Use vector.applyMatrix4( matrix ) instead.'); + return vector.applyMatrix4(this); }, - multiplyVector3Array: function ( /* a */ ) { + multiplyVector3Array: function ( /* a */) { - console.error( 'THREE.Matrix4: .multiplyVector3Array() has been removed.' ); + console.error('THREE.Matrix4: .multiplyVector3Array() has been removed.'); }, - rotateAxis: function ( v ) { + rotateAxis: function (v) { - console.warn( 'THREE.Matrix4: .rotateAxis() has been removed. Use Vector3.transformDirection( matrix ) instead.' ); - v.transformDirection( this ); + console.warn('THREE.Matrix4: .rotateAxis() has been removed. Use Vector3.transformDirection( matrix ) instead.'); + v.transformDirection(this); }, - crossVector: function ( vector ) { + crossVector: function (vector) { - console.warn( 'THREE.Matrix4: .crossVector() has been removed. Use vector.applyMatrix4( matrix ) instead.' ); - return vector.applyMatrix4( this ); + console.warn('THREE.Matrix4: .crossVector() has been removed. Use vector.applyMatrix4( matrix ) instead.'); + return vector.applyMatrix4(this); }, translate: function () { - console.error( 'THREE.Matrix4: .translate() has been removed.' ); + console.error('THREE.Matrix4: .translate() has been removed.'); }, rotateX: function () { - console.error( 'THREE.Matrix4: .rotateX() has been removed.' ); + console.error('THREE.Matrix4: .rotateX() has been removed.'); }, rotateY: function () { - console.error( 'THREE.Matrix4: .rotateY() has been removed.' ); + console.error('THREE.Matrix4: .rotateY() has been removed.'); }, rotateZ: function () { - console.error( 'THREE.Matrix4: .rotateZ() has been removed.' ); + console.error('THREE.Matrix4: .rotateZ() has been removed.'); }, rotateByAxis: function () { - console.error( 'THREE.Matrix4: .rotateByAxis() has been removed.' ); + console.error('THREE.Matrix4: .rotateByAxis() has been removed.'); }, - applyToBuffer: function ( buffer /*, offset, length */ ) { + applyToBuffer: function (buffer /*, offset, length */) { - console.warn( 'THREE.Matrix4: .applyToBuffer() has been removed. Use matrix.applyToBufferAttribute( attribute ) instead.' ); - return this.applyToBufferAttribute( buffer ); + console.warn('THREE.Matrix4: .applyToBuffer() has been removed. Use matrix.applyToBufferAttribute( attribute ) instead.'); + return this.applyToBufferAttribute(buffer); }, - applyToVector3Array: function ( /* array, offset, length */ ) { + applyToVector3Array: function ( /* array, offset, length */) { - console.error( 'THREE.Matrix4: .applyToVector3Array() has been removed.' ); + console.error('THREE.Matrix4: .applyToVector3Array() has been removed.'); }, - makeFrustum: function ( left, right, bottom, top, near, far ) { + makeFrustum: function (left, right, bottom, top, near, far) { - console.warn( 'THREE.Matrix4: .makeFrustum() has been removed. Use .makePerspective( left, right, top, bottom, near, far ) instead.' ); - return this.makePerspective( left, right, top, bottom, near, far ); + console.warn('THREE.Matrix4: .makeFrustum() has been removed. Use .makePerspective( left, right, top, bottom, near, far ) instead.'); + return this.makePerspective(left, right, top, bottom, near, far); } - } ); + }); - Plane.prototype.isIntersectionLine = function ( line ) { + Plane.prototype.isIntersectionLine = function (line) { - console.warn( 'THREE.Plane: .isIntersectionLine() has been renamed to .intersectsLine().' ); - return this.intersectsLine( line ); + console.warn('THREE.Plane: .isIntersectionLine() has been renamed to .intersectsLine().'); + return this.intersectsLine(line); }; - Quaternion.prototype.multiplyVector3 = function ( vector ) { + Quaternion.prototype.multiplyVector3 = function (vector) { - console.warn( 'THREE.Quaternion: .multiplyVector3() has been removed. Use is now vector.applyQuaternion( quaternion ) instead.' ); - return vector.applyQuaternion( this ); + console.warn('THREE.Quaternion: .multiplyVector3() has been removed. Use is now vector.applyQuaternion( quaternion ) instead.'); + return vector.applyQuaternion(this); }; - Object.assign( Ray.prototype, { + Object.assign(Ray.prototype, { - isIntersectionBox: function ( box ) { + isIntersectionBox: function (box) { - console.warn( 'THREE.Ray: .isIntersectionBox() has been renamed to .intersectsBox().' ); - return this.intersectsBox( box ); + console.warn('THREE.Ray: .isIntersectionBox() has been renamed to .intersectsBox().'); + return this.intersectsBox(box); }, - isIntersectionPlane: function ( plane ) { + isIntersectionPlane: function (plane) { - console.warn( 'THREE.Ray: .isIntersectionPlane() has been renamed to .intersectsPlane().' ); - return this.intersectsPlane( plane ); + console.warn('THREE.Ray: .isIntersectionPlane() has been renamed to .intersectsPlane().'); + return this.intersectsPlane(plane); }, - isIntersectionSphere: function ( sphere ) { + isIntersectionSphere: function (sphere) { - console.warn( 'THREE.Ray: .isIntersectionSphere() has been renamed to .intersectsSphere().' ); - return this.intersectsSphere( sphere ); + console.warn('THREE.Ray: .isIntersectionSphere() has been renamed to .intersectsSphere().'); + return this.intersectsSphere(sphere); } - } ); + }); - Object.assign( Triangle.prototype, { + Object.assign(Triangle.prototype, { area: function () { - console.warn( 'THREE.Triangle: .area() has been renamed to .getArea().' ); + console.warn('THREE.Triangle: .area() has been renamed to .getArea().'); return this.getArea(); }, - barycoordFromPoint: function ( point, target ) { + barycoordFromPoint: function (point, target) { - console.warn( 'THREE.Triangle: .barycoordFromPoint() has been renamed to .getBarycoord().' ); - return this.getBarycoord( point, target ); + console.warn('THREE.Triangle: .barycoordFromPoint() has been renamed to .getBarycoord().'); + return this.getBarycoord(point, target); }, - midpoint: function ( target ) { + midpoint: function (target) { - console.warn( 'THREE.Triangle: .midpoint() has been renamed to .getMidpoint().' ); - return this.getMidpoint( target ); + console.warn('THREE.Triangle: .midpoint() has been renamed to .getMidpoint().'); + return this.getMidpoint(target); }, - normal: function ( target ) { + normal: function (target) { - console.warn( 'THREE.Triangle: .normal() has been renamed to .getNormal().' ); - return this.getNormal( target ); + console.warn('THREE.Triangle: .normal() has been renamed to .getNormal().'); + return this.getNormal(target); }, - plane: function ( target ) { + plane: function (target) { - console.warn( 'THREE.Triangle: .plane() has been renamed to .getPlane().' ); - return this.getPlane( target ); + console.warn('THREE.Triangle: .plane() has been renamed to .getPlane().'); + return this.getPlane(target); } - } ); + }); - Object.assign( Triangle, { + Object.assign(Triangle, { - barycoordFromPoint: function ( point, a, b, c, target ) { + barycoordFromPoint: function (point, a, b, c, target) { - console.warn( 'THREE.Triangle: .barycoordFromPoint() has been renamed to .getBarycoord().' ); - return Triangle.getBarycoord( point, a, b, c, target ); + console.warn('THREE.Triangle: .barycoordFromPoint() has been renamed to .getBarycoord().'); + return Triangle.getBarycoord(point, a, b, c, target); }, - normal: function ( a, b, c, target ) { + normal: function (a, b, c, target) { - console.warn( 'THREE.Triangle: .normal() has been renamed to .getNormal().' ); - return Triangle.getNormal( a, b, c, target ); + console.warn('THREE.Triangle: .normal() has been renamed to .getNormal().'); + return Triangle.getNormal(a, b, c, target); } - } ); + }); - Object.assign( Shape.prototype, { + Object.assign(Shape.prototype, { - extractAllPoints: function ( divisions ) { + extractAllPoints: function (divisions) { - console.warn( 'THREE.Shape: .extractAllPoints() has been removed. Use .extractPoints() instead.' ); - return this.extractPoints( divisions ); + console.warn('THREE.Shape: .extractAllPoints() has been removed. Use .extractPoints() instead.'); + return this.extractPoints(divisions); }, - extrude: function ( options ) { + extrude: function (options) { - console.warn( 'THREE.Shape: .extrude() has been removed. Use ExtrudeGeometry() instead.' ); - return new ExtrudeGeometry( this, options ); + console.warn('THREE.Shape: .extrude() has been removed. Use ExtrudeGeometry() instead.'); + return new ExtrudeGeometry(this, options); }, - makeGeometry: function ( options ) { + makeGeometry: function (options) { - console.warn( 'THREE.Shape: .makeGeometry() has been removed. Use ShapeGeometry() instead.' ); - return new ShapeGeometry( this, options ); + console.warn('THREE.Shape: .makeGeometry() has been removed. Use ShapeGeometry() instead.'); + return new ShapeGeometry(this, options); } - } ); + }); - Object.assign( Vector2.prototype, { + Object.assign(Vector2.prototype, { - fromAttribute: function ( attribute, index, offset ) { + fromAttribute: function (attribute, index, offset) { - console.warn( 'THREE.Vector2: .fromAttribute() has been renamed to .fromBufferAttribute().' ); - return this.fromBufferAttribute( attribute, index, offset ); + console.warn('THREE.Vector2: .fromAttribute() has been renamed to .fromBufferAttribute().'); + return this.fromBufferAttribute(attribute, index, offset); }, - distanceToManhattan: function ( v ) { + distanceToManhattan: function (v) { - console.warn( 'THREE.Vector2: .distanceToManhattan() has been renamed to .manhattanDistanceTo().' ); - return this.manhattanDistanceTo( v ); + console.warn('THREE.Vector2: .distanceToManhattan() has been renamed to .manhattanDistanceTo().'); + return this.manhattanDistanceTo(v); }, lengthManhattan: function () { - console.warn( 'THREE.Vector2: .lengthManhattan() has been renamed to .manhattanLength().' ); + console.warn('THREE.Vector2: .lengthManhattan() has been renamed to .manhattanLength().'); return this.manhattanLength(); } - } ); + }); - Object.assign( Vector3.prototype, { + Object.assign(Vector3.prototype, { setEulerFromRotationMatrix: function () { - console.error( 'THREE.Vector3: .setEulerFromRotationMatrix() has been removed. Use Euler.setFromRotationMatrix() instead.' ); + console.error('THREE.Vector3: .setEulerFromRotationMatrix() has been removed. Use Euler.setFromRotationMatrix() instead.'); }, setEulerFromQuaternion: function () { - console.error( 'THREE.Vector3: .setEulerFromQuaternion() has been removed. Use Euler.setFromQuaternion() instead.' ); + console.error('THREE.Vector3: .setEulerFromQuaternion() has been removed. Use Euler.setFromQuaternion() instead.'); }, - getPositionFromMatrix: function ( m ) { + getPositionFromMatrix: function (m) { - console.warn( 'THREE.Vector3: .getPositionFromMatrix() has been renamed to .setFromMatrixPosition().' ); - return this.setFromMatrixPosition( m ); + console.warn('THREE.Vector3: .getPositionFromMatrix() has been renamed to .setFromMatrixPosition().'); + return this.setFromMatrixPosition(m); }, - getScaleFromMatrix: function ( m ) { + getScaleFromMatrix: function (m) { - console.warn( 'THREE.Vector3: .getScaleFromMatrix() has been renamed to .setFromMatrixScale().' ); - return this.setFromMatrixScale( m ); + console.warn('THREE.Vector3: .getScaleFromMatrix() has been renamed to .setFromMatrixScale().'); + return this.setFromMatrixScale(m); }, - getColumnFromMatrix: function ( index, matrix ) { + getColumnFromMatrix: function (index, matrix) { - console.warn( 'THREE.Vector3: .getColumnFromMatrix() has been renamed to .setFromMatrixColumn().' ); - return this.setFromMatrixColumn( matrix, index ); + console.warn('THREE.Vector3: .getColumnFromMatrix() has been renamed to .setFromMatrixColumn().'); + return this.setFromMatrixColumn(matrix, index); }, - applyProjection: function ( m ) { + applyProjection: function (m) { - console.warn( 'THREE.Vector3: .applyProjection() has been removed. Use .applyMatrix4( m ) instead.' ); - return this.applyMatrix4( m ); + console.warn('THREE.Vector3: .applyProjection() has been removed. Use .applyMatrix4( m ) instead.'); + return this.applyMatrix4(m); }, - fromAttribute: function ( attribute, index, offset ) { + fromAttribute: function (attribute, index, offset) { - console.warn( 'THREE.Vector3: .fromAttribute() has been renamed to .fromBufferAttribute().' ); - return this.fromBufferAttribute( attribute, index, offset ); + console.warn('THREE.Vector3: .fromAttribute() has been renamed to .fromBufferAttribute().'); + return this.fromBufferAttribute(attribute, index, offset); }, - distanceToManhattan: function ( v ) { + distanceToManhattan: function (v) { - console.warn( 'THREE.Vector3: .distanceToManhattan() has been renamed to .manhattanDistanceTo().' ); - return this.manhattanDistanceTo( v ); + console.warn('THREE.Vector3: .distanceToManhattan() has been renamed to .manhattanDistanceTo().'); + return this.manhattanDistanceTo(v); }, lengthManhattan: function () { - console.warn( 'THREE.Vector3: .lengthManhattan() has been renamed to .manhattanLength().' ); + console.warn('THREE.Vector3: .lengthManhattan() has been renamed to .manhattanLength().'); return this.manhattanLength(); } - } ); + }); - Object.assign( Vector4.prototype, { + Object.assign(Vector4.prototype, { - fromAttribute: function ( attribute, index, offset ) { + fromAttribute: function (attribute, index, offset) { - console.warn( 'THREE.Vector4: .fromAttribute() has been renamed to .fromBufferAttribute().' ); - return this.fromBufferAttribute( attribute, index, offset ); + console.warn('THREE.Vector4: .fromAttribute() has been renamed to .fromBufferAttribute().'); + return this.fromBufferAttribute(attribute, index, offset); }, lengthManhattan: function () { - console.warn( 'THREE.Vector4: .lengthManhattan() has been renamed to .manhattanLength().' ); + console.warn('THREE.Vector4: .lengthManhattan() has been renamed to .manhattanLength().'); return this.manhattanLength(); } - } ); + }); // - Object.assign( Geometry.prototype, { + Object.assign(Geometry.prototype, { computeTangents: function () { - console.error( 'THREE.Geometry: .computeTangents() has been removed.' ); + console.error('THREE.Geometry: .computeTangents() has been removed.'); }, computeLineDistances: function () { - console.error( 'THREE.Geometry: .computeLineDistances() has been removed. Use THREE.Line.computeLineDistances() instead.' ); + console.error('THREE.Geometry: .computeLineDistances() has been removed. Use THREE.Line.computeLineDistances() instead.'); } - } ); + }); - Object.assign( Object3D.prototype, { + Object.assign(Object3D.prototype, { - getChildByName: function ( name ) { + getChildByName: function (name) { - console.warn( 'THREE.Object3D: .getChildByName() has been renamed to .getObjectByName().' ); - return this.getObjectByName( name ); + console.warn('THREE.Object3D: .getChildByName() has been renamed to .getObjectByName().'); + return this.getObjectByName(name); }, renderDepth: function () { - console.warn( 'THREE.Object3D: .renderDepth has been removed. Use .renderOrder, instead.' ); + console.warn('THREE.Object3D: .renderDepth has been removed. Use .renderOrder, instead.'); }, - translate: function ( distance, axis ) { + translate: function (distance, axis) { - console.warn( 'THREE.Object3D: .translate() has been removed. Use .translateOnAxis( axis, distance ) instead.' ); - return this.translateOnAxis( axis, distance ); + console.warn('THREE.Object3D: .translate() has been removed. Use .translateOnAxis( axis, distance ) instead.'); + return this.translateOnAxis(axis, distance); }, getWorldRotation: function () { - console.error( 'THREE.Object3D: .getWorldRotation() has been removed. Use THREE.Object3D.getWorldQuaternion( target ) instead.' ); + console.error('THREE.Object3D: .getWorldRotation() has been removed. Use THREE.Object3D.getWorldQuaternion( target ) instead.'); } - } ); + }); - Object.defineProperties( Object3D.prototype, { + Object.defineProperties(Object3D.prototype, { eulerOrder: { get: function () { - console.warn( 'THREE.Object3D: .eulerOrder is now .rotation.order.' ); + console.warn('THREE.Object3D: .eulerOrder is now .rotation.order.'); return this.rotation.order; }, - set: function ( value ) { + set: function (value) { - console.warn( 'THREE.Object3D: .eulerOrder is now .rotation.order.' ); + console.warn('THREE.Object3D: .eulerOrder is now .rotation.order.'); this.rotation.order = value; } @@ -46892,137 +46905,137 @@ useQuaternion: { get: function () { - console.warn( 'THREE.Object3D: .useQuaternion has been removed. The library now uses quaternions by default.' ); + console.warn('THREE.Object3D: .useQuaternion has been removed. The library now uses quaternions by default.'); }, set: function () { - console.warn( 'THREE.Object3D: .useQuaternion has been removed. The library now uses quaternions by default.' ); + console.warn('THREE.Object3D: .useQuaternion has been removed. The library now uses quaternions by default.'); } } - } ); + }); - Object.defineProperties( LOD.prototype, { + Object.defineProperties(LOD.prototype, { objects: { get: function () { - console.warn( 'THREE.LOD: .objects has been renamed to .levels.' ); + console.warn('THREE.LOD: .objects has been renamed to .levels.'); return this.levels; } } - } ); + }); - Object.defineProperty( Skeleton.prototype, 'useVertexTexture', { + Object.defineProperty(Skeleton.prototype, 'useVertexTexture', { get: function () { - console.warn( 'THREE.Skeleton: useVertexTexture has been removed.' ); + console.warn('THREE.Skeleton: useVertexTexture has been removed.'); }, set: function () { - console.warn( 'THREE.Skeleton: useVertexTexture has been removed.' ); + console.warn('THREE.Skeleton: useVertexTexture has been removed.'); } - } ); + }); - Object.defineProperty( Curve.prototype, '__arcLengthDivisions', { + Object.defineProperty(Curve.prototype, '__arcLengthDivisions', { get: function () { - console.warn( 'THREE.Curve: .__arcLengthDivisions is now .arcLengthDivisions.' ); + console.warn('THREE.Curve: .__arcLengthDivisions is now .arcLengthDivisions.'); return this.arcLengthDivisions; }, - set: function ( value ) { + set: function (value) { - console.warn( 'THREE.Curve: .__arcLengthDivisions is now .arcLengthDivisions.' ); + console.warn('THREE.Curve: .__arcLengthDivisions is now .arcLengthDivisions.'); this.arcLengthDivisions = value; } - } ); + }); // - PerspectiveCamera.prototype.setLens = function ( focalLength, filmGauge ) { + PerspectiveCamera.prototype.setLens = function (focalLength, filmGauge) { - console.warn( "THREE.PerspectiveCamera.setLens is deprecated. " + - "Use .setFocalLength and .filmGauge for a photographic setup." ); + console.warn("THREE.PerspectiveCamera.setLens is deprecated. " + + "Use .setFocalLength and .filmGauge for a photographic setup."); - if ( filmGauge !== undefined ) this.filmGauge = filmGauge; - this.setFocalLength( focalLength ); + if (filmGauge !== undefined) this.filmGauge = filmGauge; + this.setFocalLength(focalLength); }; // - Object.defineProperties( Light.prototype, { + Object.defineProperties(Light.prototype, { onlyShadow: { set: function () { - console.warn( 'THREE.Light: .onlyShadow has been removed.' ); + console.warn('THREE.Light: .onlyShadow has been removed.'); } }, shadowCameraFov: { - set: function ( value ) { + set: function (value) { - console.warn( 'THREE.Light: .shadowCameraFov is now .shadow.camera.fov.' ); + console.warn('THREE.Light: .shadowCameraFov is now .shadow.camera.fov.'); this.shadow.camera.fov = value; } }, shadowCameraLeft: { - set: function ( value ) { + set: function (value) { - console.warn( 'THREE.Light: .shadowCameraLeft is now .shadow.camera.left.' ); + console.warn('THREE.Light: .shadowCameraLeft is now .shadow.camera.left.'); this.shadow.camera.left = value; } }, shadowCameraRight: { - set: function ( value ) { + set: function (value) { - console.warn( 'THREE.Light: .shadowCameraRight is now .shadow.camera.right.' ); + console.warn('THREE.Light: .shadowCameraRight is now .shadow.camera.right.'); this.shadow.camera.right = value; } }, shadowCameraTop: { - set: function ( value ) { + set: function (value) { - console.warn( 'THREE.Light: .shadowCameraTop is now .shadow.camera.top.' ); + console.warn('THREE.Light: .shadowCameraTop is now .shadow.camera.top.'); this.shadow.camera.top = value; } }, shadowCameraBottom: { - set: function ( value ) { + set: function (value) { - console.warn( 'THREE.Light: .shadowCameraBottom is now .shadow.camera.bottom.' ); + console.warn('THREE.Light: .shadowCameraBottom is now .shadow.camera.bottom.'); this.shadow.camera.bottom = value; } }, shadowCameraNear: { - set: function ( value ) { + set: function (value) { - console.warn( 'THREE.Light: .shadowCameraNear is now .shadow.camera.near.' ); + console.warn('THREE.Light: .shadowCameraNear is now .shadow.camera.near.'); this.shadow.camera.near = value; } }, shadowCameraFar: { - set: function ( value ) { + set: function (value) { - console.warn( 'THREE.Light: .shadowCameraFar is now .shadow.camera.far.' ); + console.warn('THREE.Light: .shadowCameraFar is now .shadow.camera.far.'); this.shadow.camera.far = value; } @@ -47030,14 +47043,14 @@ shadowCameraVisible: { set: function () { - console.warn( 'THREE.Light: .shadowCameraVisible has been removed. Use new THREE.CameraHelper( light.shadow.camera ) instead.' ); + console.warn('THREE.Light: .shadowCameraVisible has been removed. Use new THREE.CameraHelper( light.shadow.camera ) instead.'); } }, shadowBias: { - set: function ( value ) { + set: function (value) { - console.warn( 'THREE.Light: .shadowBias is now .shadow.bias.' ); + console.warn('THREE.Light: .shadowBias is now .shadow.bias.'); this.shadow.bias = value; } @@ -47045,92 +47058,92 @@ shadowDarkness: { set: function () { - console.warn( 'THREE.Light: .shadowDarkness has been removed.' ); + console.warn('THREE.Light: .shadowDarkness has been removed.'); } }, shadowMapWidth: { - set: function ( value ) { + set: function (value) { - console.warn( 'THREE.Light: .shadowMapWidth is now .shadow.mapSize.width.' ); + console.warn('THREE.Light: .shadowMapWidth is now .shadow.mapSize.width.'); this.shadow.mapSize.width = value; } }, shadowMapHeight: { - set: function ( value ) { + set: function (value) { - console.warn( 'THREE.Light: .shadowMapHeight is now .shadow.mapSize.height.' ); + console.warn('THREE.Light: .shadowMapHeight is now .shadow.mapSize.height.'); this.shadow.mapSize.height = value; } } - } ); + }); // - Object.defineProperties( BufferAttribute.prototype, { + Object.defineProperties(BufferAttribute.prototype, { length: { get: function () { - console.warn( 'THREE.BufferAttribute: .length has been deprecated. Use .count instead.' ); + console.warn('THREE.BufferAttribute: .length has been deprecated. Use .count instead.'); return this.array.length; } }, - copyIndicesArray: function ( /* indices */ ) { + copyIndicesArray: function ( /* indices */) { - console.error( 'THREE.BufferAttribute: .copyIndicesArray() has been removed.' ); + console.error('THREE.BufferAttribute: .copyIndicesArray() has been removed.'); } - } ); + }); - Object.assign( BufferGeometry.prototype, { + Object.assign(BufferGeometry.prototype, { - addIndex: function ( index ) { + addIndex: function (index) { - console.warn( 'THREE.BufferGeometry: .addIndex() has been renamed to .setIndex().' ); - this.setIndex( index ); + console.warn('THREE.BufferGeometry: .addIndex() has been renamed to .setIndex().'); + this.setIndex(index); }, - addDrawCall: function ( start, count, indexOffset ) { + addDrawCall: function (start, count, indexOffset) { - if ( indexOffset !== undefined ) { + if (indexOffset !== undefined) { - console.warn( 'THREE.BufferGeometry: .addDrawCall() no longer supports indexOffset.' ); + console.warn('THREE.BufferGeometry: .addDrawCall() no longer supports indexOffset.'); } - console.warn( 'THREE.BufferGeometry: .addDrawCall() is now .addGroup().' ); - this.addGroup( start, count ); + console.warn('THREE.BufferGeometry: .addDrawCall() is now .addGroup().'); + this.addGroup(start, count); }, clearDrawCalls: function () { - console.warn( 'THREE.BufferGeometry: .clearDrawCalls() is now .clearGroups().' ); + console.warn('THREE.BufferGeometry: .clearDrawCalls() is now .clearGroups().'); this.clearGroups(); }, computeTangents: function () { - console.warn( 'THREE.BufferGeometry: .computeTangents() has been removed.' ); + console.warn('THREE.BufferGeometry: .computeTangents() has been removed.'); }, computeOffsets: function () { - console.warn( 'THREE.BufferGeometry: .computeOffsets() has been removed.' ); + console.warn('THREE.BufferGeometry: .computeOffsets() has been removed.'); } - } ); + }); - Object.defineProperties( BufferGeometry.prototype, { + Object.defineProperties(BufferGeometry.prototype, { drawcalls: { get: function () { - console.error( 'THREE.BufferGeometry: .drawcalls has been renamed to .groups.' ); + console.error('THREE.BufferGeometry: .drawcalls has been renamed to .groups.'); return this.groups; } @@ -47138,73 +47151,73 @@ offsets: { get: function () { - console.warn( 'THREE.BufferGeometry: .offsets has been renamed to .groups.' ); + console.warn('THREE.BufferGeometry: .offsets has been renamed to .groups.'); return this.groups; } } - } ); + }); // - Object.assign( ExtrudeBufferGeometry.prototype, { + Object.assign(ExtrudeBufferGeometry.prototype, { getArrays: function () { - console.error( 'THREE.ExtrudeBufferGeometry: .getArrays() has been removed.' ); + console.error('THREE.ExtrudeBufferGeometry: .getArrays() has been removed.'); }, addShapeList: function () { - console.error( 'THREE.ExtrudeBufferGeometry: .addShapeList() has been removed.' ); + console.error('THREE.ExtrudeBufferGeometry: .addShapeList() has been removed.'); }, addShape: function () { - console.error( 'THREE.ExtrudeBufferGeometry: .addShape() has been removed.' ); + console.error('THREE.ExtrudeBufferGeometry: .addShape() has been removed.'); } - } ); + }); // - Object.defineProperties( Uniform.prototype, { + Object.defineProperties(Uniform.prototype, { dynamic: { set: function () { - console.warn( 'THREE.Uniform: .dynamic has been removed. Use object.onBeforeRender() instead.' ); + console.warn('THREE.Uniform: .dynamic has been removed. Use object.onBeforeRender() instead.'); } }, onUpdate: { value: function () { - console.warn( 'THREE.Uniform: .onUpdate() has been removed. Use object.onBeforeRender() instead.' ); + console.warn('THREE.Uniform: .onUpdate() has been removed. Use object.onBeforeRender() instead.'); return this; } } - } ); + }); // - Object.defineProperties( Material.prototype, { + Object.defineProperties(Material.prototype, { wrapAround: { get: function () { - console.warn( 'THREE.Material: .wrapAround has been removed.' ); + console.warn('THREE.Material: .wrapAround has been removed.'); }, set: function () { - console.warn( 'THREE.Material: .wrapAround has been removed.' ); + console.warn('THREE.Material: .wrapAround has been removed.'); } }, @@ -47212,12 +47225,12 @@ overdraw: { get: function () { - console.warn( 'THREE.Material: .overdraw has been removed.' ); + console.warn('THREE.Material: .overdraw has been removed.'); }, set: function () { - console.warn( 'THREE.Material: .overdraw has been removed.' ); + console.warn('THREE.Material: .overdraw has been removed.'); } }, @@ -47225,7 +47238,7 @@ wrapRGB: { get: function () { - console.warn( 'THREE.Material: .wrapRGB has been removed.' ); + console.warn('THREE.Material: .wrapRGB has been removed.'); return new Color(); } @@ -47234,186 +47247,186 @@ shading: { get: function () { - console.error( 'THREE.' + this.type + ': .shading has been removed. Use the boolean .flatShading instead.' ); + console.error('THREE.' + this.type + ': .shading has been removed. Use the boolean .flatShading instead.'); }, - set: function ( value ) { + set: function (value) { - console.warn( 'THREE.' + this.type + ': .shading has been removed. Use the boolean .flatShading instead.' ); - this.flatShading = ( value === FlatShading ); + console.warn('THREE.' + this.type + ': .shading has been removed. Use the boolean .flatShading instead.'); + this.flatShading = (value === FlatShading); } } - } ); + }); - Object.defineProperties( MeshPhongMaterial.prototype, { + Object.defineProperties(MeshPhongMaterial.prototype, { metal: { get: function () { - console.warn( 'THREE.MeshPhongMaterial: .metal has been removed. Use THREE.MeshStandardMaterial instead.' ); + console.warn('THREE.MeshPhongMaterial: .metal has been removed. Use THREE.MeshStandardMaterial instead.'); return false; }, set: function () { - console.warn( 'THREE.MeshPhongMaterial: .metal has been removed. Use THREE.MeshStandardMaterial instead' ); + console.warn('THREE.MeshPhongMaterial: .metal has been removed. Use THREE.MeshStandardMaterial instead'); } } - } ); + }); - Object.defineProperties( ShaderMaterial.prototype, { + Object.defineProperties(ShaderMaterial.prototype, { derivatives: { get: function () { - console.warn( 'THREE.ShaderMaterial: .derivatives has been moved to .extensions.derivatives.' ); + console.warn('THREE.ShaderMaterial: .derivatives has been moved to .extensions.derivatives.'); return this.extensions.derivatives; }, - set: function ( value ) { + set: function (value) { - console.warn( 'THREE. ShaderMaterial: .derivatives has been moved to .extensions.derivatives.' ); + console.warn('THREE. ShaderMaterial: .derivatives has been moved to .extensions.derivatives.'); this.extensions.derivatives = value; } } - } ); + }); // - Object.assign( WebGLRenderer.prototype, { + Object.assign(WebGLRenderer.prototype, { - clearTarget: function ( renderTarget, color, depth, stencil ) { + clearTarget: function (renderTarget, color, depth, stencil) { - console.warn( 'THREE.WebGLRenderer: .clearTarget() has been deprecated. Use .setRenderTarget() and .clear() instead.' ); - this.setRenderTarget( renderTarget ); - this.clear( color, depth, stencil ); + console.warn('THREE.WebGLRenderer: .clearTarget() has been deprecated. Use .setRenderTarget() and .clear() instead.'); + this.setRenderTarget(renderTarget); + this.clear(color, depth, stencil); }, - animate: function ( callback ) { + animate: function (callback) { - console.warn( 'THREE.WebGLRenderer: .animate() is now .setAnimationLoop().' ); - this.setAnimationLoop( callback ); + console.warn('THREE.WebGLRenderer: .animate() is now .setAnimationLoop().'); + this.setAnimationLoop(callback); }, getCurrentRenderTarget: function () { - console.warn( 'THREE.WebGLRenderer: .getCurrentRenderTarget() is now .getRenderTarget().' ); + console.warn('THREE.WebGLRenderer: .getCurrentRenderTarget() is now .getRenderTarget().'); return this.getRenderTarget(); }, getMaxAnisotropy: function () { - console.warn( 'THREE.WebGLRenderer: .getMaxAnisotropy() is now .capabilities.getMaxAnisotropy().' ); + console.warn('THREE.WebGLRenderer: .getMaxAnisotropy() is now .capabilities.getMaxAnisotropy().'); return this.capabilities.getMaxAnisotropy(); }, getPrecision: function () { - console.warn( 'THREE.WebGLRenderer: .getPrecision() is now .capabilities.precision.' ); + console.warn('THREE.WebGLRenderer: .getPrecision() is now .capabilities.precision.'); return this.capabilities.precision; }, resetGLState: function () { - console.warn( 'THREE.WebGLRenderer: .resetGLState() is now .state.reset().' ); + console.warn('THREE.WebGLRenderer: .resetGLState() is now .state.reset().'); return this.state.reset(); }, supportsFloatTextures: function () { - console.warn( 'THREE.WebGLRenderer: .supportsFloatTextures() is now .extensions.get( \'OES_texture_float\' ).' ); - return this.extensions.get( 'OES_texture_float' ); + console.warn('THREE.WebGLRenderer: .supportsFloatTextures() is now .extensions.get( \'OES_texture_float\' ).'); + return this.extensions.get('OES_texture_float'); }, supportsHalfFloatTextures: function () { - console.warn( 'THREE.WebGLRenderer: .supportsHalfFloatTextures() is now .extensions.get( \'OES_texture_half_float\' ).' ); - return this.extensions.get( 'OES_texture_half_float' ); + console.warn('THREE.WebGLRenderer: .supportsHalfFloatTextures() is now .extensions.get( \'OES_texture_half_float\' ).'); + return this.extensions.get('OES_texture_half_float'); }, supportsStandardDerivatives: function () { - console.warn( 'THREE.WebGLRenderer: .supportsStandardDerivatives() is now .extensions.get( \'OES_standard_derivatives\' ).' ); - return this.extensions.get( 'OES_standard_derivatives' ); + console.warn('THREE.WebGLRenderer: .supportsStandardDerivatives() is now .extensions.get( \'OES_standard_derivatives\' ).'); + return this.extensions.get('OES_standard_derivatives'); }, supportsCompressedTextureS3TC: function () { - console.warn( 'THREE.WebGLRenderer: .supportsCompressedTextureS3TC() is now .extensions.get( \'WEBGL_compressed_texture_s3tc\' ).' ); - return this.extensions.get( 'WEBGL_compressed_texture_s3tc' ); + console.warn('THREE.WebGLRenderer: .supportsCompressedTextureS3TC() is now .extensions.get( \'WEBGL_compressed_texture_s3tc\' ).'); + return this.extensions.get('WEBGL_compressed_texture_s3tc'); }, supportsCompressedTexturePVRTC: function () { - console.warn( 'THREE.WebGLRenderer: .supportsCompressedTexturePVRTC() is now .extensions.get( \'WEBGL_compressed_texture_pvrtc\' ).' ); - return this.extensions.get( 'WEBGL_compressed_texture_pvrtc' ); + console.warn('THREE.WebGLRenderer: .supportsCompressedTexturePVRTC() is now .extensions.get( \'WEBGL_compressed_texture_pvrtc\' ).'); + return this.extensions.get('WEBGL_compressed_texture_pvrtc'); }, supportsBlendMinMax: function () { - console.warn( 'THREE.WebGLRenderer: .supportsBlendMinMax() is now .extensions.get( \'EXT_blend_minmax\' ).' ); - return this.extensions.get( 'EXT_blend_minmax' ); + console.warn('THREE.WebGLRenderer: .supportsBlendMinMax() is now .extensions.get( \'EXT_blend_minmax\' ).'); + return this.extensions.get('EXT_blend_minmax'); }, supportsVertexTextures: function () { - console.warn( 'THREE.WebGLRenderer: .supportsVertexTextures() is now .capabilities.vertexTextures.' ); + console.warn('THREE.WebGLRenderer: .supportsVertexTextures() is now .capabilities.vertexTextures.'); return this.capabilities.vertexTextures; }, supportsInstancedArrays: function () { - console.warn( 'THREE.WebGLRenderer: .supportsInstancedArrays() is now .extensions.get( \'ANGLE_instanced_arrays\' ).' ); - return this.extensions.get( 'ANGLE_instanced_arrays' ); + console.warn('THREE.WebGLRenderer: .supportsInstancedArrays() is now .extensions.get( \'ANGLE_instanced_arrays\' ).'); + return this.extensions.get('ANGLE_instanced_arrays'); }, - enableScissorTest: function ( boolean ) { + enableScissorTest: function (boolean) { - console.warn( 'THREE.WebGLRenderer: .enableScissorTest() is now .setScissorTest().' ); - this.setScissorTest( boolean ); + console.warn('THREE.WebGLRenderer: .enableScissorTest() is now .setScissorTest().'); + this.setScissorTest(boolean); }, initMaterial: function () { - console.warn( 'THREE.WebGLRenderer: .initMaterial() has been removed.' ); + console.warn('THREE.WebGLRenderer: .initMaterial() has been removed.'); }, addPrePlugin: function () { - console.warn( 'THREE.WebGLRenderer: .addPrePlugin() has been removed.' ); + console.warn('THREE.WebGLRenderer: .addPrePlugin() has been removed.'); }, addPostPlugin: function () { - console.warn( 'THREE.WebGLRenderer: .addPostPlugin() has been removed.' ); + console.warn('THREE.WebGLRenderer: .addPostPlugin() has been removed.'); }, updateShadowMap: function () { - console.warn( 'THREE.WebGLRenderer: .updateShadowMap() has been removed.' ); + console.warn('THREE.WebGLRenderer: .updateShadowMap() has been removed.'); }, setFaceCulling: function () { - console.warn( 'THREE.WebGLRenderer: .setFaceCulling() has been removed.' ); + console.warn('THREE.WebGLRenderer: .setFaceCulling() has been removed.'); } - } ); + }); - Object.defineProperties( WebGLRenderer.prototype, { + Object.defineProperties(WebGLRenderer.prototype, { shadowMapEnabled: { get: function () { @@ -47421,9 +47434,9 @@ return this.shadowMap.enabled; }, - set: function ( value ) { + set: function (value) { - console.warn( 'THREE.WebGLRenderer: .shadowMapEnabled is now .shadowMap.enabled.' ); + console.warn('THREE.WebGLRenderer: .shadowMapEnabled is now .shadowMap.enabled.'); this.shadowMap.enabled = value; } @@ -47434,9 +47447,9 @@ return this.shadowMap.type; }, - set: function ( value ) { + set: function (value) { - console.warn( 'THREE.WebGLRenderer: .shadowMapType is now .shadowMap.type.' ); + console.warn('THREE.WebGLRenderer: .shadowMapType is now .shadowMap.type.'); this.shadowMap.type = value; } @@ -47444,76 +47457,76 @@ shadowMapCullFace: { get: function () { - console.warn( 'THREE.WebGLRenderer: .shadowMapCullFace has been removed. Set Material.shadowSide instead.' ); + console.warn('THREE.WebGLRenderer: .shadowMapCullFace has been removed. Set Material.shadowSide instead.'); return undefined; }, - set: function ( /* value */ ) { + set: function ( /* value */) { - console.warn( 'THREE.WebGLRenderer: .shadowMapCullFace has been removed. Set Material.shadowSide instead.' ); + console.warn('THREE.WebGLRenderer: .shadowMapCullFace has been removed. Set Material.shadowSide instead.'); } } - } ); + }); - Object.defineProperties( WebGLShadowMap.prototype, { + Object.defineProperties(WebGLShadowMap.prototype, { cullFace: { get: function () { - console.warn( 'THREE.WebGLRenderer: .shadowMap.cullFace has been removed. Set Material.shadowSide instead.' ); + console.warn('THREE.WebGLRenderer: .shadowMap.cullFace has been removed. Set Material.shadowSide instead.'); return undefined; }, - set: function ( /* cullFace */ ) { + set: function ( /* cullFace */) { - console.warn( 'THREE.WebGLRenderer: .shadowMap.cullFace has been removed. Set Material.shadowSide instead.' ); + console.warn('THREE.WebGLRenderer: .shadowMap.cullFace has been removed. Set Material.shadowSide instead.'); } }, renderReverseSided: { get: function () { - console.warn( 'THREE.WebGLRenderer: .shadowMap.renderReverseSided has been removed. Set Material.shadowSide instead.' ); + console.warn('THREE.WebGLRenderer: .shadowMap.renderReverseSided has been removed. Set Material.shadowSide instead.'); return undefined; }, set: function () { - console.warn( 'THREE.WebGLRenderer: .shadowMap.renderReverseSided has been removed. Set Material.shadowSide instead.' ); + console.warn('THREE.WebGLRenderer: .shadowMap.renderReverseSided has been removed. Set Material.shadowSide instead.'); } }, renderSingleSided: { get: function () { - console.warn( 'THREE.WebGLRenderer: .shadowMap.renderSingleSided has been removed. Set Material.shadowSide instead.' ); + console.warn('THREE.WebGLRenderer: .shadowMap.renderSingleSided has been removed. Set Material.shadowSide instead.'); return undefined; }, set: function () { - console.warn( 'THREE.WebGLRenderer: .shadowMap.renderSingleSided has been removed. Set Material.shadowSide instead.' ); + console.warn('THREE.WebGLRenderer: .shadowMap.renderSingleSided has been removed. Set Material.shadowSide instead.'); } } - } ); + }); // - Object.defineProperties( WebGLRenderTarget.prototype, { + Object.defineProperties(WebGLRenderTarget.prototype, { wrapS: { get: function () { - console.warn( 'THREE.WebGLRenderTarget: .wrapS is now .texture.wrapS.' ); + console.warn('THREE.WebGLRenderTarget: .wrapS is now .texture.wrapS.'); return this.texture.wrapS; }, - set: function ( value ) { + set: function (value) { - console.warn( 'THREE.WebGLRenderTarget: .wrapS is now .texture.wrapS.' ); + console.warn('THREE.WebGLRenderTarget: .wrapS is now .texture.wrapS.'); this.texture.wrapS = value; } @@ -47521,13 +47534,13 @@ wrapT: { get: function () { - console.warn( 'THREE.WebGLRenderTarget: .wrapT is now .texture.wrapT.' ); + console.warn('THREE.WebGLRenderTarget: .wrapT is now .texture.wrapT.'); return this.texture.wrapT; }, - set: function ( value ) { + set: function (value) { - console.warn( 'THREE.WebGLRenderTarget: .wrapT is now .texture.wrapT.' ); + console.warn('THREE.WebGLRenderTarget: .wrapT is now .texture.wrapT.'); this.texture.wrapT = value; } @@ -47535,13 +47548,13 @@ magFilter: { get: function () { - console.warn( 'THREE.WebGLRenderTarget: .magFilter is now .texture.magFilter.' ); + console.warn('THREE.WebGLRenderTarget: .magFilter is now .texture.magFilter.'); return this.texture.magFilter; }, - set: function ( value ) { + set: function (value) { - console.warn( 'THREE.WebGLRenderTarget: .magFilter is now .texture.magFilter.' ); + console.warn('THREE.WebGLRenderTarget: .magFilter is now .texture.magFilter.'); this.texture.magFilter = value; } @@ -47549,13 +47562,13 @@ minFilter: { get: function () { - console.warn( 'THREE.WebGLRenderTarget: .minFilter is now .texture.minFilter.' ); + console.warn('THREE.WebGLRenderTarget: .minFilter is now .texture.minFilter.'); return this.texture.minFilter; }, - set: function ( value ) { + set: function (value) { - console.warn( 'THREE.WebGLRenderTarget: .minFilter is now .texture.minFilter.' ); + console.warn('THREE.WebGLRenderTarget: .minFilter is now .texture.minFilter.'); this.texture.minFilter = value; } @@ -47563,13 +47576,13 @@ anisotropy: { get: function () { - console.warn( 'THREE.WebGLRenderTarget: .anisotropy is now .texture.anisotropy.' ); + console.warn('THREE.WebGLRenderTarget: .anisotropy is now .texture.anisotropy.'); return this.texture.anisotropy; }, - set: function ( value ) { + set: function (value) { - console.warn( 'THREE.WebGLRenderTarget: .anisotropy is now .texture.anisotropy.' ); + console.warn('THREE.WebGLRenderTarget: .anisotropy is now .texture.anisotropy.'); this.texture.anisotropy = value; } @@ -47577,13 +47590,13 @@ offset: { get: function () { - console.warn( 'THREE.WebGLRenderTarget: .offset is now .texture.offset.' ); + console.warn('THREE.WebGLRenderTarget: .offset is now .texture.offset.'); return this.texture.offset; }, - set: function ( value ) { + set: function (value) { - console.warn( 'THREE.WebGLRenderTarget: .offset is now .texture.offset.' ); + console.warn('THREE.WebGLRenderTarget: .offset is now .texture.offset.'); this.texture.offset = value; } @@ -47591,13 +47604,13 @@ repeat: { get: function () { - console.warn( 'THREE.WebGLRenderTarget: .repeat is now .texture.repeat.' ); + console.warn('THREE.WebGLRenderTarget: .repeat is now .texture.repeat.'); return this.texture.repeat; }, - set: function ( value ) { + set: function (value) { - console.warn( 'THREE.WebGLRenderTarget: .repeat is now .texture.repeat.' ); + console.warn('THREE.WebGLRenderTarget: .repeat is now .texture.repeat.'); this.texture.repeat = value; } @@ -47605,13 +47618,13 @@ format: { get: function () { - console.warn( 'THREE.WebGLRenderTarget: .format is now .texture.format.' ); + console.warn('THREE.WebGLRenderTarget: .format is now .texture.format.'); return this.texture.format; }, - set: function ( value ) { + set: function (value) { - console.warn( 'THREE.WebGLRenderTarget: .format is now .texture.format.' ); + console.warn('THREE.WebGLRenderTarget: .format is now .texture.format.'); this.texture.format = value; } @@ -47619,13 +47632,13 @@ type: { get: function () { - console.warn( 'THREE.WebGLRenderTarget: .type is now .texture.type.' ); + console.warn('THREE.WebGLRenderTarget: .type is now .texture.type.'); return this.texture.type; }, - set: function ( value ) { + set: function (value) { - console.warn( 'THREE.WebGLRenderTarget: .type is now .texture.type.' ); + console.warn('THREE.WebGLRenderTarget: .type is now .texture.type.'); this.texture.type = value; } @@ -47633,70 +47646,70 @@ generateMipmaps: { get: function () { - console.warn( 'THREE.WebGLRenderTarget: .generateMipmaps is now .texture.generateMipmaps.' ); + console.warn('THREE.WebGLRenderTarget: .generateMipmaps is now .texture.generateMipmaps.'); return this.texture.generateMipmaps; }, - set: function ( value ) { + set: function (value) { - console.warn( 'THREE.WebGLRenderTarget: .generateMipmaps is now .texture.generateMipmaps.' ); + console.warn('THREE.WebGLRenderTarget: .generateMipmaps is now .texture.generateMipmaps.'); this.texture.generateMipmaps = value; } } - } ); + }); // - Object.defineProperties( WebVRManager.prototype, { + Object.defineProperties(WebVRManager.prototype, { standing: { - set: function ( /* value */ ) { + set: function ( /* value */) { - console.warn( 'THREE.WebVRManager: .standing has been removed.' ); + console.warn('THREE.WebVRManager: .standing has been removed.'); } }, userHeight: { - set: function ( /* value */ ) { + set: function ( /* value */) { - console.warn( 'THREE.WebVRManager: .userHeight has been removed.' ); + console.warn('THREE.WebVRManager: .userHeight has been removed.'); } } - } ); + }); // - Audio.prototype.load = function ( file ) { + Audio.prototype.load = function (file) { - console.warn( 'THREE.Audio: .load has been deprecated. Use THREE.AudioLoader instead.' ); + console.warn('THREE.Audio: .load has been deprecated. Use THREE.AudioLoader instead.'); var scope = this; var audioLoader = new AudioLoader(); - audioLoader.load( file, function ( buffer ) { + audioLoader.load(file, function (buffer) { - scope.setBuffer( buffer ); + scope.setBuffer(buffer); - } ); + }); return this; }; AudioAnalyser.prototype.getData = function () { - console.warn( 'THREE.AudioAnalyser: .getData() is now .getFrequencyData().' ); + console.warn('THREE.AudioAnalyser: .getData() is now .getFrequencyData().'); return this.getFrequencyData(); }; // - CubeCamera.prototype.updateCubeMap = function ( renderer, scene ) { + CubeCamera.prototype.updateCubeMap = function (renderer, scene) { - console.warn( 'THREE.CubeCamera: .updateCubeMap() is now .update().' ); - return this.update( renderer, scene ); + console.warn('THREE.CubeCamera: .updateCubeMap() is now .update().'); + return this.update(renderer, scene); }; @@ -47704,12 +47717,12 @@ var GeometryUtils = { - merge: function ( geometry1, geometry2, materialIndexOffset ) { + merge: function (geometry1, geometry2, materialIndexOffset) { - console.warn( 'THREE.GeometryUtils: .merge() has been moved to Geometry. Use geometry.merge( geometry2, matrix, materialIndexOffset ) instead.' ); + console.warn('THREE.GeometryUtils: .merge() has been moved to Geometry. Use geometry.merge( geometry2, matrix, materialIndexOffset ) instead.'); var matrix; - if ( geometry2.isMesh ) { + if (geometry2.isMesh) { geometry2.matrixAutoUpdate && geometry2.updateMatrix(); @@ -47718,13 +47731,13 @@ } - geometry1.merge( geometry2, matrix, materialIndexOffset ); + geometry1.merge(geometry2, matrix, materialIndexOffset); }, - center: function ( geometry ) { + center: function (geometry) { - console.warn( 'THREE.GeometryUtils: .center() has been moved to Geometry. Use geometry.center() instead.' ); + console.warn('THREE.GeometryUtils: .center() has been moved to Geometry. Use geometry.center() instead.'); return geometry.center(); } @@ -47733,31 +47746,31 @@ ImageUtils.crossOrigin = undefined; - ImageUtils.loadTexture = function ( url, mapping, onLoad, onError ) { + ImageUtils.loadTexture = function (url, mapping, onLoad, onError) { - console.warn( 'THREE.ImageUtils.loadTexture has been deprecated. Use THREE.TextureLoader() instead.' ); + console.warn('THREE.ImageUtils.loadTexture has been deprecated. Use THREE.TextureLoader() instead.'); var loader = new TextureLoader(); - loader.setCrossOrigin( this.crossOrigin ); + loader.setCrossOrigin(this.crossOrigin); - var texture = loader.load( url, onLoad, undefined, onError ); + var texture = loader.load(url, onLoad, undefined, onError); - if ( mapping ) texture.mapping = mapping; + if (mapping) texture.mapping = mapping; return texture; }; - ImageUtils.loadTextureCube = function ( urls, mapping, onLoad, onError ) { + ImageUtils.loadTextureCube = function (urls, mapping, onLoad, onError) { - console.warn( 'THREE.ImageUtils.loadTextureCube has been deprecated. Use THREE.CubeTextureLoader() instead.' ); + console.warn('THREE.ImageUtils.loadTextureCube has been deprecated. Use THREE.CubeTextureLoader() instead.'); var loader = new CubeTextureLoader(); - loader.setCrossOrigin( this.crossOrigin ); + loader.setCrossOrigin(this.crossOrigin); - var texture = loader.load( urls, onLoad, undefined, onError ); + var texture = loader.load(urls, onLoad, undefined, onError); - if ( mapping ) texture.mapping = mapping; + if (mapping) texture.mapping = mapping; return texture; @@ -47765,13 +47778,13 @@ ImageUtils.loadCompressedTexture = function () { - console.error( 'THREE.ImageUtils.loadCompressedTexture has been removed. Use THREE.DDSLoader instead.' ); + console.error('THREE.ImageUtils.loadCompressedTexture has been removed. Use THREE.DDSLoader instead.'); }; ImageUtils.loadCompressedTextureCube = function () { - console.error( 'THREE.ImageUtils.loadCompressedTextureCube has been removed. Use THREE.DDSLoader instead.' ); + console.error('THREE.ImageUtils.loadCompressedTextureCube has been removed. Use THREE.DDSLoader instead.'); }; @@ -47779,25 +47792,25 @@ function Projector() { - console.error( 'THREE.Projector has been moved to /examples/js/renderers/Projector.js.' ); + console.error('THREE.Projector has been moved to /examples/js/renderers/Projector.js.'); - this.projectVector = function ( vector, camera ) { + this.projectVector = function (vector, camera) { - console.warn( 'THREE.Projector: .projectVector() is now vector.project().' ); - vector.project( camera ); + console.warn('THREE.Projector: .projectVector() is now vector.project().'); + vector.project(camera); }; - this.unprojectVector = function ( vector, camera ) { + this.unprojectVector = function (vector, camera) { - console.warn( 'THREE.Projector: .unprojectVector() is now vector.unproject().' ); - vector.unproject( camera ); + console.warn('THREE.Projector: .unprojectVector() is now vector.unproject().'); + vector.unproject(camera); }; this.pickingRay = function () { - console.error( 'THREE.Projector: .pickingRay() is now raycaster.setFromCamera().' ); + console.error('THREE.Projector: .pickingRay() is now raycaster.setFromCamera().'); }; @@ -47807,7 +47820,7 @@ function CanvasRenderer() { - console.error( 'THREE.CanvasRenderer has been removed' ); + console.error('THREE.CanvasRenderer has been removed'); } @@ -47815,21 +47828,21 @@ var SceneUtils = { - createMultiMaterialObject: function ( /* geometry, materials */ ) { + createMultiMaterialObject: function ( /* geometry, materials */) { - console.error( 'THREE.SceneUtils has been moved to /examples/js/utils/SceneUtils.js' ); + console.error('THREE.SceneUtils has been moved to /examples/js/utils/SceneUtils.js'); }, - detach: function ( /* child, parent, scene */ ) { + detach: function ( /* child, parent, scene */) { - console.error( 'THREE.SceneUtils has been moved to /examples/js/utils/SceneUtils.js' ); + console.error('THREE.SceneUtils has been moved to /examples/js/utils/SceneUtils.js'); }, - attach: function ( /* child, scene, parent */ ) { + attach: function ( /* child, scene, parent */) { - console.error( 'THREE.SceneUtils has been moved to /examples/js/utils/SceneUtils.js' ); + console.error('THREE.SceneUtils has been moved to /examples/js/utils/SceneUtils.js'); } @@ -47839,7 +47852,7 @@ function LensFlare() { - console.error( 'THREE.LensFlare has been moved to /examples/js/objects/Lensflare.js' ); + console.error('THREE.LensFlare has been moved to /examples/js/objects/Lensflare.js'); }