2
0
Эх сурвалжийг харах

increase scope of connections variable

Lewy Blue 7 жил өмнө
parent
commit
24e47535ac

+ 27 - 35
examples/js/loaders/FBXLoader.js

@@ -22,6 +22,7 @@
 THREE.FBXLoader = ( function () {
 
 	var FBXTree;
+	var connections;
 
 	function FBXLoader( manager ) {
 
@@ -122,13 +123,13 @@ THREE.FBXLoader = ( function () {
 
 		parse: function () {
 
-			this.connections = this.parseConnections();
+			connections = this.parseConnections();
 
 			var images = this.parseImages();
 			var textures = this.parseTextures( images );
 			var materials = this.parseMaterials( textures );
 			var deformers = this.parseDeformers();
-			var geometryMap = new GeometryParser( this.connections ).parse( deformers );
+			var geometryMap = new GeometryParser().parse( deformers );
 
 			return this.parseScene( deformers, geometryMap, materials );
 
@@ -371,7 +372,7 @@ THREE.FBXLoader = ( function () {
 
 			var currentPath = this.textureLoader.path;
 
-			var children = this.connections.get( textureNode.id ).children;
+			var children = connections.get( textureNode.id ).children;
 
 			if ( children !== undefined && children.length > 0 && images[ children[ 0 ].ID ] !== undefined ) {
 
@@ -443,7 +444,7 @@ THREE.FBXLoader = ( function () {
 			}
 
 			// Ignore unused materials which don't have any connections.
-			if ( ! this.connections.has( ID ) ) return null;
+			if ( ! connections.has( ID ) ) return null;
 
 			var parameters = this.parseParameters( materialNode, textureMap, ID );
 
@@ -544,7 +545,7 @@ THREE.FBXLoader = ( function () {
 			}
 
 			var self = this;
-			this.connections.get( ID ).children.forEach( function ( child ) {
+			connections.get( ID ).children.forEach( function ( child ) {
 
 				var type = child.relationship;
 
@@ -608,7 +609,7 @@ THREE.FBXLoader = ( function () {
 			if ( 'LayeredTexture' in FBXTree.Objects && id in FBXTree.Objects.LayeredTexture ) {
 
 				console.warn( 'THREE.FBXLoader: layered textures are not supported in three.js. Discarding all but first layer.' );
-				id = this.connections.get( id ).children[ 0 ].ID;
+				id = connections.get( id ).children[ 0 ].ID;
 
 			}
 
@@ -632,7 +633,7 @@ THREE.FBXLoader = ( function () {
 
 					var deformerNode = DeformerNodes[ nodeID ];
 
-					var relationships = this.connections.get( parseInt( nodeID ) );
+					var relationships = connections.get( parseInt( nodeID ) );
 
 					if ( deformerNode.attrType === 'Skin' ) {
 
@@ -746,7 +747,7 @@ THREE.FBXLoader = ( function () {
 
 				if ( morphTargetNode.attrType !== 'BlendShapeChannel' ) return;
 
-				var targetRelationships = this.connections.get( parseInt( child.ID ) );
+				var targetRelationships = connections.get( parseInt( child.ID ) );
 
 				targetRelationships.children.forEach( function ( child ) {
 
@@ -778,7 +779,7 @@ THREE.FBXLoader = ( function () {
 				var modelNode = modelNodes[ model.ID ];
 				self.setLookAtProperties( model, modelNode, sceneGraph );
 
-				var parentConnections = self.connections.get( model.ID ).parents;
+				var parentConnections = connections.get( model.ID ).parents;
 
 				parentConnections.forEach( function ( connection ) {
 
@@ -825,7 +826,7 @@ THREE.FBXLoader = ( function () {
 
 				var id = parseInt( nodeID );
 				var node = modelNodes[ nodeID ];
-				var relationships = this.connections.get( id );
+				var relationships = connections.get( id );
 
 				var model = this.buildSkeleton( relationships, skeletons, id, node.attrName );
 
@@ -1234,7 +1235,7 @@ THREE.FBXLoader = ( function () {
 
 			if ( 'LookAtProperty' in modelNode ) {
 
-				var children = this.connections.get( model.ID ).children;
+				var children = connections.get( model.ID ).children;
 
 				children.forEach( function ( child ) {
 
@@ -1276,15 +1277,14 @@ THREE.FBXLoader = ( function () {
 
 				var skeleton = skeletons[ ID ];
 
-				var parents = this.connections.get( parseInt( skeleton.ID ) ).parents;
+				var parents = connections.get( parseInt( skeleton.ID ) ).parents;
 
-				var self = this;
 				parents.forEach( function ( parent ) {
 
 					if ( geometryMap.has( parent.ID ) ) {
 
 						var geoID = parent.ID;
-						var geoRelationships = self.connections.get( geoID );
+						var geoRelationships = connections.get( geoID );
 
 						geoRelationships.parents.forEach( function ( geoConnParent ) {
 
@@ -1349,7 +1349,7 @@ THREE.FBXLoader = ( function () {
 
 			sceneGraph.animations = [];
 
-			var rawClips = new AnimationParser( this.connections ).parse();
+			var rawClips = new AnimationParser( connections ).parse();
 
 			if ( rawClips === undefined ) return;
 
@@ -1708,11 +1708,7 @@ THREE.FBXLoader = ( function () {
 	};
 
 	// parse Geometry data from FBXTree and return map of BufferGeometries and nurbs curves
-	function GeometryParser( connections ) {
-
-		this.connections = connections;
-
-	}
+	function GeometryParser() {}
 
 	GeometryParser.prototype = {
 
@@ -1729,7 +1725,7 @@ THREE.FBXLoader = ( function () {
 
 				for ( var nodeID in geoNodes ) {
 
-					var relationships = this.connections.get( parseInt( nodeID ) );
+					var relationships = connections.get( parseInt( nodeID ) );
 					var geo = this.parseGeometry( relationships, geoNodes[ nodeID ], deformers );
 
 					geometryMap.set( parseInt( nodeID ), geo );
@@ -2542,11 +2538,7 @@ THREE.FBXLoader = ( function () {
 	};
 
 	// parse animation data from FBXTree
-	function AnimationParser( connections ) {
-
-		this.connections = connections;
-
-	}
+	function AnimationParser() {}
 
 	AnimationParser.prototype = {
 
@@ -2626,7 +2618,7 @@ THREE.FBXLoader = ( function () {
 
 				};
 
-				var relationships = this.connections.get( animationCurve.id );
+				var relationships = connections.get( animationCurve.id );
 
 				if ( relationships !== undefined ) {
 
@@ -2670,7 +2662,7 @@ THREE.FBXLoader = ( function () {
 
 				var layerCurveNodes = [];
 
-				var connection = this.connections.get( parseInt( nodeID ) );
+				var connection = connections.get( parseInt( nodeID ) );
 
 				if ( connection !== undefined ) {
 
@@ -2691,7 +2683,7 @@ THREE.FBXLoader = ( function () {
 
 									var modelID;
 
-									self.connections.get( child.ID ).parents.forEach( function ( parent ) {
+									connections.get( child.ID ).parents.forEach( function ( parent ) {
 
 										if ( parent.relationship !== undefined ) modelID = parent.ID;
 
@@ -2726,17 +2718,17 @@ THREE.FBXLoader = ( function () {
 
 									var deformerID;
 
-									self.connections.get( child.ID ).parents.forEach( function ( parent ) {
+									connections.get( child.ID ).parents.forEach( function ( parent ) {
 
 										if ( parent.relationship !== undefined ) deformerID = parent.ID;
 
 									} );
 
-									var morpherID = self.connections.get( deformerID ).parents[ 0 ].ID;
-									var geoID = self.connections.get( morpherID ).parents[ 0 ].ID;
+									var morpherID = connections.get( deformerID ).parents[ 0 ].ID;
+									var geoID = connections.get( morpherID ).parents[ 0 ].ID;
 
 									// assuming geometry is not used in more than one model
-									var modelID = self.connections.get( geoID ).parents[ 0 ].ID;
+									var modelID = connections.get( geoID ).parents[ 0 ].ID;
 
 									var rawModel = FBXTree.Objects.Model[ modelID ];
 
@@ -2800,7 +2792,7 @@ THREE.FBXLoader = ( function () {
 
 			for ( var nodeID in rawStacks ) {
 
-				var children = this.connections.get( parseInt( nodeID ) ).children;
+				var children = connections.get( parseInt( nodeID ) ).children;
 
 				if ( children.length > 1 ) {
 
@@ -3997,4 +3989,4 @@ THREE.FBXLoader = ( function () {
 
 	return FBXLoader;
 
-} )();
+} )();