Browse Source

Updated examples builds

Mr.doob 4 years ago
parent
commit
38954eff2b

+ 8 - 6
examples/js/controls/OrbitControls.js

@@ -258,8 +258,8 @@
 				scope.domElement.removeEventListener( 'pointerdown', onPointerDown );
 				scope.domElement.removeEventListener( 'pointercancel', onPointerCancel );
 				scope.domElement.removeEventListener( 'wheel', onMouseWheel );
-				scope.domElement.ownerDocument.removeEventListener( 'pointermove', onPointerMove );
-				scope.domElement.ownerDocument.removeEventListener( 'pointerup', onPointerUp );
+				scope.domElement.removeEventListener( 'pointermove', onPointerMove );
+				scope.domElement.removeEventListener( 'pointerup', onPointerUp );
 
 				if ( scope._domElementKeyEvents !== null ) {
 
@@ -704,8 +704,9 @@
 
 				if ( pointers.length === 0 ) {
 
-					scope.domElement.ownerDocument.addEventListener( 'pointermove', onPointerMove );
-					scope.domElement.ownerDocument.addEventListener( 'pointerup', onPointerUp );
+					scope.domElement.setPointerCapture( event.pointerId );
+					scope.domElement.addEventListener( 'pointermove', onPointerMove );
+					scope.domElement.addEventListener( 'pointerup', onPointerUp );
 
 				} //
 
@@ -758,8 +759,9 @@
 
 				if ( pointers.length === 0 ) {
 
-					scope.domElement.ownerDocument.removeEventListener( 'pointermove', onPointerMove );
-					scope.domElement.ownerDocument.removeEventListener( 'pointerup', onPointerUp );
+					scope.domElement.releasePointerCapture( event.pointerId );
+					scope.domElement.removeEventListener( 'pointermove', onPointerMove );
+					scope.domElement.removeEventListener( 'pointerup', onPointerUp );
 
 				}
 

+ 17 - 8
examples/js/controls/TrackballControls.js

@@ -389,8 +389,9 @@
 
 				if ( _pointers.length === 0 ) {
 
-					scope.domElement.ownerDocument.addEventListener( 'pointermove', onPointerMove );
-					scope.domElement.ownerDocument.addEventListener( 'pointerup', onPointerUp );
+					scope.domElement.setPointerCapture( event.pointerId );
+					scope.domElement.addEventListener( 'pointermove', onPointerMove );
+					scope.domElement.addEventListener( 'pointerup', onPointerUp );
 
 				} //
 
@@ -444,8 +445,9 @@
 
 				if ( _pointers.length === 0 ) {
 
-					scope.domElement.ownerDocument.removeEventListener( 'pointermove', onPointerMove );
-					scope.domElement.ownerDocument.removeEventListener( 'pointerup', onPointerUp );
+					scope.domElement.releasePointerCapture( event.pointerId );
+					scope.domElement.removeEventListener( 'pointermove', onPointerMove );
+					scope.domElement.removeEventListener( 'pointerup', onPointerUp );
 
 				}
 
@@ -537,8 +539,6 @@
 
 				}
 
-				scope.domElement.ownerDocument.addEventListener( 'pointermove', onPointerMove );
-				scope.domElement.ownerDocument.addEventListener( 'pointerup', onPointerUp );
 				scope.dispatchEvent( _startEvent );
 
 			}
@@ -568,8 +568,6 @@
 			function onMouseUp() {
 
 				_state = STATE.NONE;
-				scope.domElement.ownerDocument.removeEventListener( 'pointermove', onPointerMove );
-				scope.domElement.ownerDocument.removeEventListener( 'pointerup', onPointerUp );
 				scope.dispatchEvent( _endEvent );
 
 			}
@@ -687,6 +685,15 @@
 
 						break;
 
+					case 2:
+						_state = STATE.TOUCH_ZOOM_PAN;
+
+						_moveCurr.copy( getMouseOnCircle( event.pageX - _movePrev.pageX, event.pageY - _movePrev.pageY ) );
+
+						_movePrev.copy( _moveCurr );
+
+						break;
+
 				}
 
 				scope.dispatchEvent( _endEvent );
@@ -752,6 +759,8 @@
 				scope.domElement.removeEventListener( 'pointerdown', onPointerDown );
 				scope.domElement.removeEventListener( 'pointercancel', onPointerCancel );
 				scope.domElement.removeEventListener( 'wheel', onMouseWheel );
+				scope.domElement.removeEventListener( 'pointermove', onPointerMove );
+				scope.domElement.removeEventListener( 'pointerup', onPointerUp );
 				window.removeEventListener( 'keydown', keydown );
 				window.removeEventListener( 'keyup', keyup );
 

+ 7 - 5
examples/js/controls/TransformControls.js

@@ -149,7 +149,7 @@
 			this._onPointerUp = onPointerUp.bind( this );
 			this.domElement.addEventListener( 'pointerdown', this._onPointerDown );
 			this.domElement.addEventListener( 'pointermove', this._onPointerHover );
-			this.domElement.ownerDocument.addEventListener( 'pointerup', this._onPointerUp );
+			this.domElement.addEventListener( 'pointerup', this._onPointerUp );
 
 		} // updateMatrixWorld  updates key transformation variables
 
@@ -523,8 +523,8 @@
 
 			this.domElement.removeEventListener( 'pointerdown', this._onPointerDown );
 			this.domElement.removeEventListener( 'pointermove', this._onPointerHover );
-			this.domElement.ownerDocument.removeEventListener( 'pointermove', this._onPointerMove );
-			this.domElement.ownerDocument.removeEventListener( 'pointerup', this._onPointerUp );
+			this.domElement.removeEventListener( 'pointermove', this._onPointerMove );
+			this.domElement.removeEventListener( 'pointerup', this._onPointerUp );
 			this.traverse( function ( child ) {
 
 				if ( child.geometry ) child.geometry.dispose();
@@ -653,7 +653,8 @@
 	function onPointerDown( event ) {
 
 		if ( ! this.enabled ) return;
-		this.domElement.ownerDocument.addEventListener( 'pointermove', this._onPointerMove );
+		this.domElement.setPointerCapture( event.pointerId );
+		this.domElement.addEventListener( 'pointermove', this._onPointerMove );
 		this.pointerHover( this._getPointer( event ) );
 		this.pointerDown( this._getPointer( event ) );
 
@@ -669,7 +670,8 @@
 	function onPointerUp( event ) {
 
 		if ( ! this.enabled ) return;
-		this.domElement.ownerDocument.removeEventListener( 'pointermove', this._onPointerMove );
+		this.domElement.releasePointerCapture( event.pointerId );
+		this.domElement.removeEventListener( 'pointermove', this._onPointerMove );
 		this.pointerUp( this._getPointer( event ) );
 
 	}

+ 109 - 0
examples/js/loaders/GLTFLoader.js

@@ -28,6 +28,16 @@
 
 				return new GLTFMaterialsTransmissionExtension( parser );
 
+			} );
+			this.register( function ( parser ) {
+
+				return new GLTFMaterialsVolumeExtension( parser );
+
+			} );
+			this.register( function ( parser ) {
+
+				return new GLTFMaterialsIorExtension( parser );
+
 			} );
 			this.register( function ( parser ) {
 
@@ -319,9 +329,11 @@
 		KHR_DRACO_MESH_COMPRESSION: 'KHR_draco_mesh_compression',
 		KHR_LIGHTS_PUNCTUAL: 'KHR_lights_punctual',
 		KHR_MATERIALS_CLEARCOAT: 'KHR_materials_clearcoat',
+		KHR_MATERIALS_IOR: 'KHR_materials_ior',
 		KHR_MATERIALS_PBR_SPECULAR_GLOSSINESS: 'KHR_materials_pbrSpecularGlossiness',
 		KHR_MATERIALS_TRANSMISSION: 'KHR_materials_transmission',
 		KHR_MATERIALS_UNLIT: 'KHR_materials_unlit',
+		KHR_MATERIALS_VOLUME: 'KHR_materials_volume',
 		KHR_TEXTURE_BASISU: 'KHR_texture_basisu',
 		KHR_TEXTURE_TRANSFORM: 'KHR_texture_transform',
 		KHR_MESH_QUANTIZATION: 'KHR_mesh_quantization',
@@ -632,6 +644,103 @@
 
 		}
 
+	}
+	/**
+ * Materials Volume Extension
+ *
+ * Specification: https://github.com/KhronosGroup/glTF/tree/master/extensions/2.0/Khronos/KHR_materials_volume
+ */
+
+
+	class GLTFMaterialsVolumeExtension {
+
+		constructor( parser ) {
+
+			this.parser = parser;
+			this.name = EXTENSIONS.KHR_MATERIALS_VOLUME;
+
+		}
+
+		getMaterialType( materialIndex ) {
+
+			const parser = this.parser;
+			const materialDef = parser.json.materials[ materialIndex ];
+			if ( ! materialDef.extensions || ! materialDef.extensions[ this.name ] ) return null;
+			return THREE.MeshPhysicalMaterial;
+
+		}
+
+		extendMaterialParams( materialIndex, materialParams ) {
+
+			const parser = this.parser;
+			const materialDef = parser.json.materials[ materialIndex ];
+
+			if ( ! materialDef.extensions || ! materialDef.extensions[ this.name ] ) {
+
+				return Promise.resolve();
+
+			}
+
+			const pending = [];
+			const extension = materialDef.extensions[ this.name ];
+			materialParams.thickness = extension.thicknessFactor !== undefined ? extension.thicknessFactor : 0;
+
+			if ( extension.thicknessTexture !== undefined ) {
+
+				pending.push( parser.assignTexture( materialParams, 'thicknessMap', extension.thicknessTexture ) );
+
+			}
+
+			materialParams.attenuationDistance = extension.attenuationDistance || 0;
+			const colorArray = extension.attenuationColor || [ 1, 1, 1 ];
+			materialParams.attenuationColor = new THREE.Color( colorArray[ 0 ], colorArray[ 1 ], colorArray[ 2 ] );
+			return Promise.all( pending );
+
+		}
+
+	}
+	/**
+ * Materials ior Extension
+ *
+ * Specification: https://github.com/KhronosGroup/glTF/tree/master/extensions/2.0/Khronos/KHR_materials_ior
+ */
+
+
+	class GLTFMaterialsIorExtension {
+
+		constructor( parser ) {
+
+			this.parser = parser;
+			this.name = EXTENSIONS.KHR_MATERIALS_IOR;
+
+		}
+
+		getMaterialType( materialIndex ) {
+
+			const parser = this.parser;
+			const materialDef = parser.json.materials[ materialIndex ];
+			if ( ! materialDef.extensions || ! materialDef.extensions[ this.name ] ) return null;
+			return THREE.MeshPhysicalMaterial;
+
+		}
+
+		extendMaterialParams( materialIndex, materialParams ) {
+
+			const parser = this.parser;
+			const materialDef = parser.json.materials[ materialIndex ];
+
+			if ( ! materialDef.extensions || ! materialDef.extensions[ this.name ] ) {
+
+				return Promise.resolve();
+
+			}
+
+			const extension = materialDef.extensions[ this.name ];
+			materialParams.ior = extension.ior !== undefined ? extension.ior : 1.5;
+			return Promise.resolve();
+
+		}
+
 	}
 	/**
  * BasisU THREE.Texture Extension

+ 2 - 0
examples/js/renderers/CSS2DRenderer.js

@@ -7,6 +7,8 @@
 			super();
 			this.element = element || document.createElement( 'div' );
 			this.element.style.position = 'absolute';
+			this.element.style.userSelect = 'none';
+			this.element.setAttribute( 'draggable', false );
 			this.addEventListener( 'removed', function () {
 
 				this.traverse( function ( object ) {

+ 2 - 0
examples/js/renderers/CSS3DRenderer.js

@@ -12,6 +12,8 @@
 			this.element = element || document.createElement( 'div' );
 			this.element.style.position = 'absolute';
 			this.element.style.pointerEvents = 'auto';
+			this.element.style.userSelect = 'none';
+			this.element.setAttribute( 'draggable', false );
 			this.addEventListener( 'removed', function () {
 
 				this.traverse( function ( object ) {