Browse Source

GLTFLoader: Include extensions on scene, clean up.

Don McCurdy 7 years ago
parent
commit
27a5b9a172
1 changed files with 13 additions and 5 deletions
  1. 13 5
      examples/js/loaders/GLTFLoader.js

+ 13 - 5
examples/js/loaders/GLTFLoader.js

@@ -126,6 +126,7 @@ THREE.GLTFLoader = ( function () {
 				for ( var i = 0; i < json.extensionsUsed.length; ++ i ) {
 				for ( var i = 0; i < json.extensionsUsed.length; ++ i ) {
 
 
 					var extensionName = json.extensionsUsed[ i ];
 					var extensionName = json.extensionsUsed[ i ];
+					var extensionsRequired = json.extensionsRequired || [];
 
 
 					switch ( extensionName ) {
 					switch ( extensionName ) {
 
 
@@ -146,7 +147,12 @@ THREE.GLTFLoader = ( function () {
 							break;
 							break;
 
 
 						default:
 						default:
-							console.warn( 'THREE.GLTFLoader: Unknown extension "' + extensionName + '".' );
+
+							if ( extensionsRequired.indexOf( extensionName ) >= 0 ) {
+
+								console.warn( 'THREE.GLTFLoader: Unknown extension "' + extensionName + '".' );
+
+							}
 
 
 					}
 					}
 
 
@@ -1160,13 +1166,13 @@ THREE.GLTFLoader = ( function () {
 
 
 	}
 	}
 
 
-	function addExtensionUserData( extensionsUsed, object, objectDef ) {
+	function addUnknownExtensionsToUserData( object, objectDef ) {
 
 
 		// Add unknown glTF extensions to an object's userData.
 		// Add unknown glTF extensions to an object's userData.
 
 
 		for ( var name in objectDef.extensions ) {
 		for ( var name in objectDef.extensions ) {
 
 
-			if ( extensionsUsed[ name ] === undefined ) {
+			if ( EXTENSIONS[ name ] === undefined ) {
 
 
 				object.userData.gltfExtensions = object.userData.gltfExtensions || {};
 				object.userData.gltfExtensions = object.userData.gltfExtensions || {};
 				object.userData.gltfExtensions[ name ] = objectDef.extensions[ name ];
 				object.userData.gltfExtensions[ name ] = objectDef.extensions[ name ];
@@ -2136,7 +2142,7 @@ THREE.GLTFLoader = ( function () {
 
 
 			if ( materialDef.extras ) material.userData = materialDef.extras;
 			if ( materialDef.extras ) material.userData = materialDef.extras;
 
 
-			if ( materialDef.extensions ) addExtensionUserData( extensions, material, materialDef );
+			if ( materialDef.extensions ) addUnknownExtensionsToUserData( material, materialDef );
 
 
 			return material;
 			return material;
 
 
@@ -2758,7 +2764,7 @@ THREE.GLTFLoader = ( function () {
 
 
 			if ( nodeDef.extras ) node.userData = nodeDef.extras;
 			if ( nodeDef.extras ) node.userData = nodeDef.extras;
 
 
-			if ( nodeDef.extensions ) addExtensionUserData( extensions, node, nodeDef );
+			if ( nodeDef.extensions ) addUnknownExtensionsToUserData( node, nodeDef );
 
 
 			if ( nodeDef.matrix !== undefined ) {
 			if ( nodeDef.matrix !== undefined ) {
 
 
@@ -2892,6 +2898,8 @@ THREE.GLTFLoader = ( function () {
 
 
 				if ( sceneDef.extras ) scene.userData = sceneDef.extras;
 				if ( sceneDef.extras ) scene.userData = sceneDef.extras;
 
 
+				if ( sceneDef.extensions ) addUnknownExtensionsToUserData( scene, sceneDef );
+
 				var nodeIds = sceneDef.nodes || [];
 				var nodeIds = sceneDef.nodes || [];
 
 
 				for ( var i = 0, il = nodeIds.length; i < il; i ++ ) {
 				for ( var i = 0, il = nodeIds.length; i < il; i ++ ) {