Browse Source

ColladaLoader2: Moved material creation to buildMaterial().

Mr.doob 9 years ago
parent
commit
8937806aa7
1 changed files with 48 additions and 44 deletions
  1. 48 44
      examples/js/loaders/ColladaLoader2.js

+ 48 - 44
examples/js/loaders/ColladaLoader2.js

@@ -417,8 +417,50 @@ THREE.ColladaLoader.prototype = {
 
 		function buildEffect( data ) {
 
+			return data;
+
+		}
+
+		function getEffect( id ) {
+
+			return getBuild( library.effects[ id ], buildEffect );
+
+		}
+
+		// material
+
+		function parseMaterial( xml ) {
+
+			var data = {
+				name: xml.getAttribute( 'name' )
+			};
+
+			for ( var i = 0, l = xml.childNodes.length; i < l; i ++ ) {
+
+				var child = xml.childNodes[ i ];
+
+				if ( child.nodeType !== 1 ) continue;
+
+				switch ( child.nodeName ) {
+
+					case 'instance_effect':
+						data.url = parseId( child.getAttribute( 'url' ) );
+						break;
+
+				}
+
+			}
+
+			library.materials[ xml.getAttribute( 'id' ) ] = data;
+
+		}
+
+		function buildMaterial( data ) {
+
+			var effect = getEffect( data.url );
+			var technique = effect.profile.technique;
+
 			var material;
-			var technique = data.profile.technique;
 
 			switch ( technique.type ) {
 
@@ -437,12 +479,12 @@ THREE.ColladaLoader.prototype = {
 
 			}
 
-			var parameters = technique.parameters;
+			material.name = data.name;
 
 			function getTexture( sid ) {
 
-				var sampler = data.profile.samplers[ sid ];
-				var surface = data.profile.surfaces[ sampler.source ];
+				var sampler = effect.profile.samplers[ sid ];
+				var surface = effect.profile.surfaces[ sampler.source ];
 
 				var texture = new THREE.Texture( getImage( surface.init_from ) );
 				texture.wrapS = THREE.RepeatWrapping;
@@ -453,6 +495,8 @@ THREE.ColladaLoader.prototype = {
 
 			}
 
+			var parameters = technique.parameters;
+
 			for ( var key in parameters ) {
 
 				var parameter = parameters[ key ];
@@ -478,46 +522,6 @@ THREE.ColladaLoader.prototype = {
 
 		}
 
-		function getEffect( id ) {
-
-			return getBuild( library.effects[ id ], buildEffect );
-
-		}
-
-		// material
-
-		function parseMaterial( xml ) {
-
-			var data = {
-				name: xml.getAttribute( 'name' )
-			};
-
-			for ( var i = 0, l = xml.childNodes.length; i < l; i ++ ) {
-
-				var child = xml.childNodes[ i ];
-
-				if ( child.nodeType !== 1 ) continue;
-
-				switch ( child.nodeName ) {
-
-					case 'instance_effect':
-						data.url = parseId( child.getAttribute( 'url' ) );
-						break;
-
-				}
-
-			}
-
-			library.materials[ xml.getAttribute( 'id' ) ] = data;
-
-		}
-
-		function buildMaterial( data ) {
-
-			return getEffect( data.url );
-
-		}
-
 		function getMaterial( id ) {
 
 			return getBuild( library.materials[ id ], buildMaterial );