Bladeren bron

Updated builds.

Mr.doob 12 jaren geleden
bovenliggende
commit
57feb8f504
2 gewijzigde bestanden met toevoegingen van 496 en 202 verwijderingen
  1. 291 4
      build/three.js
  2. 205 198
      build/three.min.js

+ 291 - 4
build/three.js

@@ -10603,8 +10603,7 @@ THREE.GeometryLoader.prototype = {
 
 			if ( callback !== undefined ) {
 
-				var geometry = scope.parse( JSON.parse( event.target.responseText ) );
-				callback( geometry );
+				callback( scope.parse( JSON.parse( event.target.responseText ) ) );
 
 			}
 
@@ -10642,8 +10641,7 @@ THREE.MaterialLoader.prototype = {
 
 			if ( callback !== undefined ) {
 
-				var material = scope.parse( JSON.parse( event.target.responseText ) );
-				callback( material );
+				callback( scope.parse( JSON.parse( event.target.responseText ) ) );
 
 			}
 
@@ -10734,6 +10732,295 @@ THREE.MaterialLoader.prototype = {
 
 };
 
+/**
+ * @author mrdoob / http://mrdoob.com/
+ */
+
+THREE.ObjectLoader = function ( manager ) {
+
+	this.manager = ( manager !== undefined ) ? manager : THREE.DefaultLoadingManager;
+
+};
+
+THREE.ObjectLoader.prototype = {
+
+	constructor: THREE.ObjectLoader,
+
+	load: function ( url, callback ) {
+
+		var scope = this;
+
+		this.manager.add( url, 'text', function ( event ) {
+
+			if ( callback !== undefined ) {
+
+				callback( scope.parse( JSON.parse( event.target.responseText ) ) );
+
+			}
+
+		} );
+
+	},
+
+	parse: function ( json ) {
+
+		var geometries = this.parseGeometries( json.geometries );
+		var materials = this.parseMaterials( json.materials );
+		var object = this.parseObject( json.object, geometries, materials );
+
+		return object;
+
+	},
+
+	parseGeometries: function ( json ) {
+
+		var geometries = {};
+
+		if ( json !== undefined ) {
+
+			var loader = new THREE.JSONLoader();
+
+			for ( var i = 0, l = json.length; i < l; i ++ ) {
+
+				var geometry;
+				var data = json[ i ];
+
+				switch ( data.type ) {
+
+					case 'PlaneGeometry':
+
+						geometry = new THREE.PlaneGeometry(
+							data.width,
+							data.height,
+							data.widthSegments,
+							data.heightSegments
+						);
+
+						break;
+
+					case 'CubeGeometry':
+
+						geometry = new THREE.CubeGeometry(
+							data.width,
+							data.height,
+							data.depth,
+							data.widthSegments,
+							data.heightSegments,
+							data.depthSegments
+						);
+
+						break;
+
+					case 'CylinderGeometry':
+
+						geometry = new THREE.CylinderGeometry(
+							data.radiusTop,
+							data.radiusBottom,
+							data.height,
+							data.radiusSegments,
+							data.heightSegments,
+							data.openEnded
+						);
+
+						break;
+
+					case 'SphereGeometry':
+
+						geometry = new THREE.SphereGeometry(
+							data.radius,
+							data.widthSegments,
+							data.heightSegments,
+							data.phiStart,
+							data.phiLength,
+							data.thetaStart,
+							data.thetaLength
+						);
+
+						break;
+
+					case 'IcosahedronGeometry':
+
+						geometry = new THREE.IcosahedronGeometry(
+							data.radius,
+							data.detail
+						);
+
+						break;
+
+					case 'TorusGeometry':
+
+						geometry = new THREE.TorusGeometry(
+							data.radius,
+							data.tube,
+							data.radialSegments,
+							data.tubularSegments,
+							data.arc
+						);
+
+						break;
+
+					case 'TorusKnotGeometry':
+
+						geometry = new THREE.TorusKnotGeometry(
+							data.radius,
+							data.tube,
+							data.radialSegments,
+							data.tubularSegments,
+							data.p,
+							data.q,
+							data.heightScale
+						);
+
+						break;
+
+					case 'Geometry':
+
+						geometry = loader.parse( data.data ).geometry;
+
+						break;
+
+				}
+
+				if ( data.id !== undefined ) geometry.id = data.id;
+				if ( data.name !== undefined ) geometry.name = data.name;
+
+				geometries[ data.id ] = geometry;
+
+			}
+
+		}
+
+		return geometries;
+
+	},
+
+	parseMaterials: function ( json ) {
+
+		var materials = {};
+
+		if ( json !== undefined ) {
+
+			var loader = new THREE.MaterialLoader();
+
+			for ( var i = 0, l = json.length; i < l; i ++ ) {
+
+				var data = json[ i ];
+				var material = loader.parse( data );
+
+				if ( data.id !== undefined ) material.id = data.id;
+				if ( data.name !== undefined ) material.name = data.name;
+
+				materials[ data.id ] = material;
+
+			}
+
+		}
+
+		return materials;
+
+	},
+
+	parseObject: function ( data, geometries, materials ) {
+
+		var object;
+
+		switch ( data.type ) {
+
+			case 'Scene':
+
+				object = new THREE.Scene();
+
+				break;
+
+			case 'PerspectiveCamera':
+
+				object = new THREE.PerspectiveCamera( data.fov, data.aspect, data.near, data.far );
+				object.position.fromArray( data.position );
+				object.rotation.fromArray( data.rotation );
+
+				break;
+
+			case 'OrthographicCamera':
+
+				object = new THREE.OrthographicCamera( data.left, data.right, data.top, data.bottom, data.near, data.far );
+				object.position.fromArray( data.position );
+				object.rotation.fromArray( data.rotation );
+
+				break;
+
+			case 'AmbientLight':
+
+				object = new THREE.AmbientLight( data.color );
+
+				break;
+
+			case 'DirectionalLight':
+
+				object = new THREE.DirectionalLight( data.color, data.intensity );
+				object.position.fromArray( data.position );
+
+				break;
+
+			case 'PointLight':
+
+				object = new THREE.PointLight( data.color, data.intensity, data.distance );
+				object.position.fromArray( data.position );
+
+				break;
+
+			case 'SpotLight':
+
+				object = new THREE.SpotLight( data.color, data.intensity, data.distance, data.angle, data.exponent );
+				object.position.fromArray( data.position );
+
+				break;
+
+			case 'HemisphereLight':
+
+				object = new THREE.HemisphereLight( data.color, data.groundColor, data.intensity );
+				object.position.fromArray( data.position );
+
+				break;
+
+			case 'Mesh':
+
+				object = new THREE.Mesh( geometries[ data.geometry ], materials[ data.material ] );
+				object.position.fromArray( data.position );
+				object.rotation.fromArray( data.rotation );
+				object.scale.fromArray( data.scale );
+
+				break;
+
+			default:
+
+				object = new THREE.Object3D();
+				object.position.fromArray( data.position );
+				object.rotation.fromArray( data.rotation );
+				object.scale.fromArray( data.scale );
+
+		}
+
+		if ( data.id !== undefined ) object.id = data.id;
+		if ( data.name !== undefined ) object.name = data.name;
+		if ( data.visible !== undefined ) object.visible = data.visible;
+		if ( data.userData !== undefined ) object.userData = data.userData;
+
+		if ( data.children !== undefined ) {
+
+			for ( var child in data.children ) {
+
+				object.add( this.parseObject( data.children[ child ], geometries, materials ) );
+
+			}
+
+		}
+
+		return object;
+
+	}
+
+};
+
 /**
  * @author alteredq / http://alteredqualia.com/
  */

File diff suppressed because it is too large
+ 205 - 198
build/three.min.js


Some files were not shown because too many files changed in this diff