Mr.doob 7 anni fa
parent
commit
0154dfc300
3 ha cambiato i file con 481 aggiunte e 711 eliminazioni
  1. 177 170
      build/three.js
  2. 127 371
      build/three.min.js
  3. 177 170
      build/three.module.js

+ 177 - 170
build/three.js

@@ -7675,6 +7675,8 @@
 		this.clipIntersection = false;
 		this.clipShadows = false;
 
+		this.shadowSide = null;
+
 		this.colorWrite = true;
 
 		this.precision = null; // override the renderer's default precision for this material
@@ -7982,6 +7984,8 @@
 
 			this.clippingPlanes = dstPlanes;
 
+			this.shadowSide = source.shadowSide;
+
 			return this;
 
 		},
@@ -9247,6 +9251,8 @@
 
 			_materialCache = {};
 
+		var shadowSide = { 0: BackSide, 1: FrontSide, 2: DoubleSide };
+
 		var cubeDirections = [
 			new Vector3( 1, 0, 0 ), new Vector3( - 1, 0, 0 ), new Vector3( 0, 0, 1 ),
 			new Vector3( 0, 0, - 1 ), new Vector3( 0, 1, 0 ), new Vector3( 0, - 1, 0 )
@@ -9304,9 +9310,6 @@
 
 		this.type = PCFShadowMap;
 
-		this.renderReverseSided = true;
-		this.renderSingleSided = true;
-
 		this.render = function ( lights, scene, camera ) {
 
 			if ( scope.enabled === false ) return;
@@ -9563,22 +9566,7 @@
 			result.visible = material.visible;
 			result.wireframe = material.wireframe;
 
-			var side = material.side;
-
-			if ( scope.renderSingleSided && side == DoubleSide ) {
-
-				side = FrontSide;
-
-			}
-
-			if ( scope.renderReverseSided ) {
-
-				if ( side === FrontSide ) side = BackSide;
-				else if ( side === BackSide ) side = FrontSide;
-
-			}
-
-			result.side = side;
+			result.side = ( material.shadowSide != null ) ? material.shadowSide : shadowSide[ material.side ];
 
 			result.clipShadows = material.clipShadows;
 			result.clippingPlanes = material.clippingPlanes;
@@ -37288,286 +37276,280 @@
 
 		},
 
-		parseObject: function () {
-
-			var matrix = new Matrix4();
-
-			return function parseObject( data, geometries, materials ) {
+		parseObject: function ( data, geometries, materials ) {
 
-				var object;
+			var object;
 
-				function getGeometry( name ) {
+			function getGeometry( name ) {
 
-					if ( geometries[ name ] === undefined ) {
+				if ( geometries[ name ] === undefined ) {
 
-						console.warn( 'THREE.ObjectLoader: Undefined geometry', name );
-
-					}
-
-					return geometries[ name ];
+					console.warn( 'THREE.ObjectLoader: Undefined geometry', name );
 
 				}
 
-				function getMaterial( name ) {
+				return geometries[ name ];
 
-					if ( name === undefined ) return undefined;
+			}
 
-					if ( Array.isArray( name ) ) {
+			function getMaterial( name ) {
 
-						var array = [];
+				if ( name === undefined ) return undefined;
 
-						for ( var i = 0, l = name.length; i < l; i ++ ) {
+				if ( Array.isArray( name ) ) {
 
-							var uuid = name[ i ];
+					var array = [];
 
-							if ( materials[ uuid ] === undefined ) {
+					for ( var i = 0, l = name.length; i < l; i ++ ) {
 
-								console.warn( 'THREE.ObjectLoader: Undefined material', uuid );
+						var uuid = name[ i ];
 
-							}
+						if ( materials[ uuid ] === undefined ) {
 
-							array.push( materials[ uuid ] );
+							console.warn( 'THREE.ObjectLoader: Undefined material', uuid );
 
 						}
 
-						return array;
+						array.push( materials[ uuid ] );
 
 					}
 
-					if ( materials[ name ] === undefined ) {
+					return array;
 
-						console.warn( 'THREE.ObjectLoader: Undefined material', name );
+				}
 
-					}
+				if ( materials[ name ] === undefined ) {
 
-					return materials[ name ];
+					console.warn( 'THREE.ObjectLoader: Undefined material', name );
 
 				}
 
-				switch ( data.type ) {
+				return materials[ name ];
 
-					case 'Scene':
+			}
 
-						object = new Scene();
+			switch ( data.type ) {
 
-						if ( data.background !== undefined ) {
+				case 'Scene':
 
-							if ( Number.isInteger( data.background ) ) {
+					object = new Scene();
 
-								object.background = new Color( data.background );
+					if ( data.background !== undefined ) {
 
-							}
+						if ( Number.isInteger( data.background ) ) {
+
+							object.background = new Color( data.background );
 
 						}
 
-						if ( data.fog !== undefined ) {
+					}
 
-							if ( data.fog.type === 'Fog' ) {
+					if ( data.fog !== undefined ) {
 
-								object.fog = new Fog( data.fog.color, data.fog.near, data.fog.far );
+						if ( data.fog.type === 'Fog' ) {
 
-							} else if ( data.fog.type === 'FogExp2' ) {
+							object.fog = new Fog( data.fog.color, data.fog.near, data.fog.far );
 
-								object.fog = new FogExp2( data.fog.color, data.fog.density );
+						} else if ( data.fog.type === 'FogExp2' ) {
 
-							}
+							object.fog = new FogExp2( data.fog.color, data.fog.density );
 
 						}
 
-						break;
+					}
 
-					case 'PerspectiveCamera':
+					break;
 
-						object = new PerspectiveCamera( data.fov, data.aspect, data.near, data.far );
+				case 'PerspectiveCamera':
 
-						if ( data.focus !== undefined ) object.focus = data.focus;
-						if ( data.zoom !== undefined ) object.zoom = data.zoom;
-						if ( data.filmGauge !== undefined ) object.filmGauge = data.filmGauge;
-						if ( data.filmOffset !== undefined ) object.filmOffset = data.filmOffset;
-						if ( data.view !== undefined ) object.view = Object.assign( {}, data.view );
+					object = new PerspectiveCamera( data.fov, data.aspect, data.near, data.far );
 
-						break;
+					if ( data.focus !== undefined ) object.focus = data.focus;
+					if ( data.zoom !== undefined ) object.zoom = data.zoom;
+					if ( data.filmGauge !== undefined ) object.filmGauge = data.filmGauge;
+					if ( data.filmOffset !== undefined ) object.filmOffset = data.filmOffset;
+					if ( data.view !== undefined ) object.view = Object.assign( {}, data.view );
 
-					case 'OrthographicCamera':
+					break;
 
-						object = new OrthographicCamera( data.left, data.right, data.top, data.bottom, data.near, data.far );
+				case 'OrthographicCamera':
 
-						break;
+					object = new OrthographicCamera( data.left, data.right, data.top, data.bottom, data.near, data.far );
 
-					case 'AmbientLight':
+					break;
 
-						object = new AmbientLight( data.color, data.intensity );
+				case 'AmbientLight':
 
-						break;
+					object = new AmbientLight( data.color, data.intensity );
 
-					case 'DirectionalLight':
+					break;
 
-						object = new DirectionalLight( data.color, data.intensity );
+				case 'DirectionalLight':
 
-						break;
+					object = new DirectionalLight( data.color, data.intensity );
 
-					case 'PointLight':
+					break;
 
-						object = new PointLight( data.color, data.intensity, data.distance, data.decay );
+				case 'PointLight':
 
-						break;
+					object = new PointLight( data.color, data.intensity, data.distance, data.decay );
 
-					case 'RectAreaLight':
+					break;
 
-						object = new RectAreaLight( data.color, data.intensity, data.width, data.height );
+				case 'RectAreaLight':
 
-						break;
+					object = new RectAreaLight( data.color, data.intensity, data.width, data.height );
 
-					case 'SpotLight':
+					break;
 
-						object = new SpotLight( data.color, data.intensity, data.distance, data.angle, data.penumbra, data.decay );
+				case 'SpotLight':
 
-						break;
+					object = new SpotLight( data.color, data.intensity, data.distance, data.angle, data.penumbra, data.decay );
 
-					case 'HemisphereLight':
+					break;
 
-						object = new HemisphereLight( data.color, data.groundColor, data.intensity );
+				case 'HemisphereLight':
 
-						break;
+					object = new HemisphereLight( data.color, data.groundColor, data.intensity );
 
-					case 'SkinnedMesh':
+					break;
 
-						console.warn( 'THREE.ObjectLoader.parseObject() does not support SkinnedMesh yet.' );
+				case 'SkinnedMesh':
 
-					case 'Mesh':
+					console.warn( 'THREE.ObjectLoader.parseObject() does not support SkinnedMesh yet.' );
 
-						var geometry = getGeometry( data.geometry );
-						var material = getMaterial( data.material );
+				case 'Mesh':
 
-						if ( geometry.bones && geometry.bones.length > 0 ) {
+					var geometry = getGeometry( data.geometry );
+					var material = getMaterial( data.material );
 
-							object = new SkinnedMesh( geometry, material );
+					if ( geometry.bones && geometry.bones.length > 0 ) {
 
-						} else {
+						object = new SkinnedMesh( geometry, material );
 
-							object = new Mesh( geometry, material );
+					} else {
 
-						}
+						object = new Mesh( geometry, material );
 
-						break;
+					}
 
-					case 'LOD':
+					break;
 
-						object = new LOD();
+				case 'LOD':
 
-						break;
+					object = new LOD();
 
-					case 'Line':
+					break;
 
-						object = new Line( getGeometry( data.geometry ), getMaterial( data.material ), data.mode );
+				case 'Line':
 
-						break;
+					object = new Line( getGeometry( data.geometry ), getMaterial( data.material ), data.mode );
 
-					case 'LineLoop':
+					break;
 
-						object = new LineLoop( getGeometry( data.geometry ), getMaterial( data.material ) );
+				case 'LineLoop':
 
-						break;
+					object = new LineLoop( getGeometry( data.geometry ), getMaterial( data.material ) );
 
-					case 'LineSegments':
+					break;
 
-						object = new LineSegments( getGeometry( data.geometry ), getMaterial( data.material ) );
+				case 'LineSegments':
 
-						break;
+					object = new LineSegments( getGeometry( data.geometry ), getMaterial( data.material ) );
 
-					case 'PointCloud':
-					case 'Points':
+					break;
 
-						object = new Points( getGeometry( data.geometry ), getMaterial( data.material ) );
+				case 'PointCloud':
+				case 'Points':
 
-						break;
+					object = new Points( getGeometry( data.geometry ), getMaterial( data.material ) );
 
-					case 'Sprite':
+					break;
 
-						object = new Sprite( getMaterial( data.material ) );
+				case 'Sprite':
 
-						break;
+					object = new Sprite( getMaterial( data.material ) );
 
-					case 'Group':
+					break;
 
-						object = new Group();
+				case 'Group':
 
-						break;
+					object = new Group();
 
-					default:
+					break;
 
-						object = new Object3D();
+				default:
 
-				}
+					object = new Object3D();
 
-				object.uuid = data.uuid;
+			}
 
-				if ( data.name !== undefined ) object.name = data.name;
-				if ( data.matrix !== undefined ) {
+			object.uuid = data.uuid;
 
-					matrix.fromArray( data.matrix );
-					matrix.decompose( object.position, object.quaternion, object.scale );
+			if ( data.name !== undefined ) object.name = data.name;
+			if ( data.matrix !== undefined ) {
 
-				} else {
+				object.matrix.fromArray( data.matrix );
+				object.matrix.decompose( object.position, object.quaternion, object.scale );
 
-					if ( data.position !== undefined ) object.position.fromArray( data.position );
-					if ( data.rotation !== undefined ) object.rotation.fromArray( data.rotation );
-					if ( data.quaternion !== undefined ) object.quaternion.fromArray( data.quaternion );
-					if ( data.scale !== undefined ) object.scale.fromArray( data.scale );
+			} else {
 
-				}
+				if ( data.position !== undefined ) object.position.fromArray( data.position );
+				if ( data.rotation !== undefined ) object.rotation.fromArray( data.rotation );
+				if ( data.quaternion !== undefined ) object.quaternion.fromArray( data.quaternion );
+				if ( data.scale !== undefined ) object.scale.fromArray( data.scale );
 
-				if ( data.castShadow !== undefined ) object.castShadow = data.castShadow;
-				if ( data.receiveShadow !== undefined ) object.receiveShadow = data.receiveShadow;
+			}
 
-				if ( data.shadow ) {
+			if ( data.castShadow !== undefined ) object.castShadow = data.castShadow;
+			if ( data.receiveShadow !== undefined ) object.receiveShadow = data.receiveShadow;
 
-					if ( data.shadow.bias !== undefined ) object.shadow.bias = data.shadow.bias;
-					if ( data.shadow.radius !== undefined ) object.shadow.radius = data.shadow.radius;
-					if ( data.shadow.mapSize !== undefined ) object.shadow.mapSize.fromArray( data.shadow.mapSize );
-					if ( data.shadow.camera !== undefined ) object.shadow.camera = this.parseObject( data.shadow.camera );
+			if ( data.shadow ) {
 
-				}
+				if ( data.shadow.bias !== undefined ) object.shadow.bias = data.shadow.bias;
+				if ( data.shadow.radius !== undefined ) object.shadow.radius = data.shadow.radius;
+				if ( data.shadow.mapSize !== undefined ) object.shadow.mapSize.fromArray( data.shadow.mapSize );
+				if ( data.shadow.camera !== undefined ) object.shadow.camera = this.parseObject( data.shadow.camera );
 
-				if ( data.visible !== undefined ) object.visible = data.visible;
-				if ( data.userData !== undefined ) object.userData = data.userData;
+			}
 
-				if ( data.children !== undefined ) {
+			if ( data.visible !== undefined ) object.visible = data.visible;
+			if ( data.userData !== undefined ) object.userData = data.userData;
 
-					var children = data.children;
+			if ( data.children !== undefined ) {
 
-					for ( var i = 0; i < children.length; i ++ ) {
+				var children = data.children;
 
-						object.add( this.parseObject( children[ i ], geometries, materials ) );
+				for ( var i = 0; i < children.length; i ++ ) {
 
-					}
+					object.add( this.parseObject( children[ i ], geometries, materials ) );
 
 				}
 
-				if ( data.type === 'LOD' ) {
+			}
 
-					var levels = data.levels;
+			if ( data.type === 'LOD' ) {
 
-					for ( var l = 0; l < levels.length; l ++ ) {
+				var levels = data.levels;
 
-						var level = levels[ l ];
-						var child = object.getObjectByProperty( 'uuid', level.object );
+				for ( var l = 0; l < levels.length; l ++ ) {
 
-						if ( child !== undefined ) {
+					var level = levels[ l ];
+					var child = object.getObjectByProperty( 'uuid', level.object );
 
-							object.addLevel( child, level.distance );
+					if ( child !== undefined ) {
 
-						}
+						object.addLevel( child, level.distance );
 
 					}
 
 				}
 
-				return object;
+			}
 
-			};
+			return object;
 
-		}()
+		}
 
 	} );
 
@@ -45219,13 +45201,13 @@
 		shadowMapCullFace: {
 			get: function () {
 
-				return this.shadowMap.cullFace;
+				console.warn( 'THREE.WebGLRenderer: .shadowMapCullFace has been removed. Set Material.shadowSide instead.' );
+				return undefined;
 
 			},
 			set: function ( value ) {
 
-				console.warn( 'THREE.WebGLRenderer: .shadowMapCullFace is now .shadowMap.cullFace.' );
-				this.shadowMap.cullFace = value;
+				console.warn( 'THREE.WebGLRenderer: .shadowMapCullFace has been removed. Set Material.shadowSide instead.' );
 
 			}
 		}
@@ -45236,14 +45218,39 @@
 		cullFace: {
 			get: function () {
 
-				return this.renderReverseSided ? CullFaceFront : CullFaceBack;
+				console.warn( 'THREE.WebGLRenderer: .shadowMap.cullFace has been removed. Set Material.shadowSide instead.' );
+				return undefined;
 
 			},
 			set: function ( cullFace ) {
 
-				var value = ( cullFace !== CullFaceBack );
-				console.warn( "WebGLRenderer: .shadowMap.cullFace is deprecated. Set .shadowMap.renderReverseSided to " + value + "." );
-				this.renderReverseSided = value;
+				console.warn( 'THREE.WebGLRenderer: .shadowMap.cullFace has been removed. Set Material.shadowSide instead.' );
+
+			}
+		},
+		renderReverseSided: {
+			get: function () {
+
+				console.warn( 'THREE.WebGLRenderer: .shadowMap.renderReverseSided has been removed. Set Material.shadowSide instead.' );
+				return undefined;
+
+			},
+			set: function () {
+
+				console.warn( 'THREE.WebGLRenderer: .shadowMap.renderReverseSided has been removed. Set Material.shadowSide instead.' );
+
+			}
+		},
+		renderSingleSided: {
+			get: function () {
+
+				console.warn( 'THREE.WebGLRenderer: .shadowMap.renderSingleSided has been removed. Set Material.shadowSide instead.' );
+				return undefined;
+
+			},
+			set: function () {
+
+				console.warn( 'THREE.WebGLRenderer: .shadowMap.renderSingleSided has been removed. Set Material.shadowSide instead.' );
 
 			}
 		}

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


+ 177 - 170
build/three.module.js

@@ -7669,6 +7669,8 @@ function Material() {
 	this.clipIntersection = false;
 	this.clipShadows = false;
 
+	this.shadowSide = null;
+
 	this.colorWrite = true;
 
 	this.precision = null; // override the renderer's default precision for this material
@@ -7976,6 +7978,8 @@ Material.prototype = Object.assign( Object.create( EventDispatcher.prototype ),
 
 		this.clippingPlanes = dstPlanes;
 
+		this.shadowSide = source.shadowSide;
+
 		return this;
 
 	},
@@ -9241,6 +9245,8 @@ function WebGLShadowMap( _renderer, _objects, maxTextureSize ) {
 
 		_materialCache = {};
 
+	var shadowSide = { 0: BackSide, 1: FrontSide, 2: DoubleSide };
+
 	var cubeDirections = [
 		new Vector3( 1, 0, 0 ), new Vector3( - 1, 0, 0 ), new Vector3( 0, 0, 1 ),
 		new Vector3( 0, 0, - 1 ), new Vector3( 0, 1, 0 ), new Vector3( 0, - 1, 0 )
@@ -9298,9 +9304,6 @@ function WebGLShadowMap( _renderer, _objects, maxTextureSize ) {
 
 	this.type = PCFShadowMap;
 
-	this.renderReverseSided = true;
-	this.renderSingleSided = true;
-
 	this.render = function ( lights, scene, camera ) {
 
 		if ( scope.enabled === false ) return;
@@ -9557,22 +9560,7 @@ function WebGLShadowMap( _renderer, _objects, maxTextureSize ) {
 		result.visible = material.visible;
 		result.wireframe = material.wireframe;
 
-		var side = material.side;
-
-		if ( scope.renderSingleSided && side == DoubleSide ) {
-
-			side = FrontSide;
-
-		}
-
-		if ( scope.renderReverseSided ) {
-
-			if ( side === FrontSide ) side = BackSide;
-			else if ( side === BackSide ) side = FrontSide;
-
-		}
-
-		result.side = side;
+		result.side = ( material.shadowSide != null ) ? material.shadowSide : shadowSide[ material.side ];
 
 		result.clipShadows = material.clipShadows;
 		result.clippingPlanes = material.clippingPlanes;
@@ -37282,286 +37270,280 @@ Object.assign( ObjectLoader.prototype, {
 
 	},
 
-	parseObject: function () {
-
-		var matrix = new Matrix4();
-
-		return function parseObject( data, geometries, materials ) {
+	parseObject: function ( data, geometries, materials ) {
 
-			var object;
+		var object;
 
-			function getGeometry( name ) {
+		function getGeometry( name ) {
 
-				if ( geometries[ name ] === undefined ) {
+			if ( geometries[ name ] === undefined ) {
 
-					console.warn( 'THREE.ObjectLoader: Undefined geometry', name );
-
-				}
-
-				return geometries[ name ];
+				console.warn( 'THREE.ObjectLoader: Undefined geometry', name );
 
 			}
 
-			function getMaterial( name ) {
+			return geometries[ name ];
 
-				if ( name === undefined ) return undefined;
+		}
 
-				if ( Array.isArray( name ) ) {
+		function getMaterial( name ) {
 
-					var array = [];
+			if ( name === undefined ) return undefined;
 
-					for ( var i = 0, l = name.length; i < l; i ++ ) {
+			if ( Array.isArray( name ) ) {
 
-						var uuid = name[ i ];
+				var array = [];
 
-						if ( materials[ uuid ] === undefined ) {
+				for ( var i = 0, l = name.length; i < l; i ++ ) {
 
-							console.warn( 'THREE.ObjectLoader: Undefined material', uuid );
+					var uuid = name[ i ];
 
-						}
+					if ( materials[ uuid ] === undefined ) {
 
-						array.push( materials[ uuid ] );
+						console.warn( 'THREE.ObjectLoader: Undefined material', uuid );
 
 					}
 
-					return array;
+					array.push( materials[ uuid ] );
 
 				}
 
-				if ( materials[ name ] === undefined ) {
+				return array;
 
-					console.warn( 'THREE.ObjectLoader: Undefined material', name );
+			}
 
-				}
+			if ( materials[ name ] === undefined ) {
 
-				return materials[ name ];
+				console.warn( 'THREE.ObjectLoader: Undefined material', name );
 
 			}
 
-			switch ( data.type ) {
+			return materials[ name ];
 
-				case 'Scene':
+		}
 
-					object = new Scene();
+		switch ( data.type ) {
 
-					if ( data.background !== undefined ) {
+			case 'Scene':
 
-						if ( Number.isInteger( data.background ) ) {
+				object = new Scene();
 
-							object.background = new Color( data.background );
+				if ( data.background !== undefined ) {
 
-						}
+					if ( Number.isInteger( data.background ) ) {
+
+						object.background = new Color( data.background );
 
 					}
 
-					if ( data.fog !== undefined ) {
+				}
 
-						if ( data.fog.type === 'Fog' ) {
+				if ( data.fog !== undefined ) {
 
-							object.fog = new Fog( data.fog.color, data.fog.near, data.fog.far );
+					if ( data.fog.type === 'Fog' ) {
 
-						} else if ( data.fog.type === 'FogExp2' ) {
+						object.fog = new Fog( data.fog.color, data.fog.near, data.fog.far );
 
-							object.fog = new FogExp2( data.fog.color, data.fog.density );
+					} else if ( data.fog.type === 'FogExp2' ) {
 
-						}
+						object.fog = new FogExp2( data.fog.color, data.fog.density );
 
 					}
 
-					break;
+				}
 
-				case 'PerspectiveCamera':
+				break;
 
-					object = new PerspectiveCamera( data.fov, data.aspect, data.near, data.far );
+			case 'PerspectiveCamera':
 
-					if ( data.focus !== undefined ) object.focus = data.focus;
-					if ( data.zoom !== undefined ) object.zoom = data.zoom;
-					if ( data.filmGauge !== undefined ) object.filmGauge = data.filmGauge;
-					if ( data.filmOffset !== undefined ) object.filmOffset = data.filmOffset;
-					if ( data.view !== undefined ) object.view = Object.assign( {}, data.view );
+				object = new PerspectiveCamera( data.fov, data.aspect, data.near, data.far );
 
-					break;
+				if ( data.focus !== undefined ) object.focus = data.focus;
+				if ( data.zoom !== undefined ) object.zoom = data.zoom;
+				if ( data.filmGauge !== undefined ) object.filmGauge = data.filmGauge;
+				if ( data.filmOffset !== undefined ) object.filmOffset = data.filmOffset;
+				if ( data.view !== undefined ) object.view = Object.assign( {}, data.view );
 
-				case 'OrthographicCamera':
+				break;
 
-					object = new OrthographicCamera( data.left, data.right, data.top, data.bottom, data.near, data.far );
+			case 'OrthographicCamera':
 
-					break;
+				object = new OrthographicCamera( data.left, data.right, data.top, data.bottom, data.near, data.far );
 
-				case 'AmbientLight':
+				break;
 
-					object = new AmbientLight( data.color, data.intensity );
+			case 'AmbientLight':
 
-					break;
+				object = new AmbientLight( data.color, data.intensity );
 
-				case 'DirectionalLight':
+				break;
 
-					object = new DirectionalLight( data.color, data.intensity );
+			case 'DirectionalLight':
 
-					break;
+				object = new DirectionalLight( data.color, data.intensity );
 
-				case 'PointLight':
+				break;
 
-					object = new PointLight( data.color, data.intensity, data.distance, data.decay );
+			case 'PointLight':
 
-					break;
+				object = new PointLight( data.color, data.intensity, data.distance, data.decay );
 
-				case 'RectAreaLight':
+				break;
 
-					object = new RectAreaLight( data.color, data.intensity, data.width, data.height );
+			case 'RectAreaLight':
 
-					break;
+				object = new RectAreaLight( data.color, data.intensity, data.width, data.height );
 
-				case 'SpotLight':
+				break;
 
-					object = new SpotLight( data.color, data.intensity, data.distance, data.angle, data.penumbra, data.decay );
+			case 'SpotLight':
 
-					break;
+				object = new SpotLight( data.color, data.intensity, data.distance, data.angle, data.penumbra, data.decay );
 
-				case 'HemisphereLight':
+				break;
 
-					object = new HemisphereLight( data.color, data.groundColor, data.intensity );
+			case 'HemisphereLight':
 
-					break;
+				object = new HemisphereLight( data.color, data.groundColor, data.intensity );
 
-				case 'SkinnedMesh':
+				break;
 
-					console.warn( 'THREE.ObjectLoader.parseObject() does not support SkinnedMesh yet.' );
+			case 'SkinnedMesh':
 
-				case 'Mesh':
+				console.warn( 'THREE.ObjectLoader.parseObject() does not support SkinnedMesh yet.' );
 
-					var geometry = getGeometry( data.geometry );
-					var material = getMaterial( data.material );
+			case 'Mesh':
 
-					if ( geometry.bones && geometry.bones.length > 0 ) {
+				var geometry = getGeometry( data.geometry );
+				var material = getMaterial( data.material );
 
-						object = new SkinnedMesh( geometry, material );
+				if ( geometry.bones && geometry.bones.length > 0 ) {
 
-					} else {
+					object = new SkinnedMesh( geometry, material );
 
-						object = new Mesh( geometry, material );
+				} else {
 
-					}
+					object = new Mesh( geometry, material );
 
-					break;
+				}
 
-				case 'LOD':
+				break;
 
-					object = new LOD();
+			case 'LOD':
 
-					break;
+				object = new LOD();
 
-				case 'Line':
+				break;
 
-					object = new Line( getGeometry( data.geometry ), getMaterial( data.material ), data.mode );
+			case 'Line':
 
-					break;
+				object = new Line( getGeometry( data.geometry ), getMaterial( data.material ), data.mode );
 
-				case 'LineLoop':
+				break;
 
-					object = new LineLoop( getGeometry( data.geometry ), getMaterial( data.material ) );
+			case 'LineLoop':
 
-					break;
+				object = new LineLoop( getGeometry( data.geometry ), getMaterial( data.material ) );
 
-				case 'LineSegments':
+				break;
 
-					object = new LineSegments( getGeometry( data.geometry ), getMaterial( data.material ) );
+			case 'LineSegments':
 
-					break;
+				object = new LineSegments( getGeometry( data.geometry ), getMaterial( data.material ) );
 
-				case 'PointCloud':
-				case 'Points':
+				break;
 
-					object = new Points( getGeometry( data.geometry ), getMaterial( data.material ) );
+			case 'PointCloud':
+			case 'Points':
 
-					break;
+				object = new Points( getGeometry( data.geometry ), getMaterial( data.material ) );
 
-				case 'Sprite':
+				break;
 
-					object = new Sprite( getMaterial( data.material ) );
+			case 'Sprite':
 
-					break;
+				object = new Sprite( getMaterial( data.material ) );
 
-				case 'Group':
+				break;
 
-					object = new Group();
+			case 'Group':
 
-					break;
+				object = new Group();
 
-				default:
+				break;
 
-					object = new Object3D();
+			default:
 
-			}
+				object = new Object3D();
 
-			object.uuid = data.uuid;
+		}
 
-			if ( data.name !== undefined ) object.name = data.name;
-			if ( data.matrix !== undefined ) {
+		object.uuid = data.uuid;
 
-				matrix.fromArray( data.matrix );
-				matrix.decompose( object.position, object.quaternion, object.scale );
+		if ( data.name !== undefined ) object.name = data.name;
+		if ( data.matrix !== undefined ) {
 
-			} else {
+			object.matrix.fromArray( data.matrix );
+			object.matrix.decompose( object.position, object.quaternion, object.scale );
 
-				if ( data.position !== undefined ) object.position.fromArray( data.position );
-				if ( data.rotation !== undefined ) object.rotation.fromArray( data.rotation );
-				if ( data.quaternion !== undefined ) object.quaternion.fromArray( data.quaternion );
-				if ( data.scale !== undefined ) object.scale.fromArray( data.scale );
+		} else {
 
-			}
+			if ( data.position !== undefined ) object.position.fromArray( data.position );
+			if ( data.rotation !== undefined ) object.rotation.fromArray( data.rotation );
+			if ( data.quaternion !== undefined ) object.quaternion.fromArray( data.quaternion );
+			if ( data.scale !== undefined ) object.scale.fromArray( data.scale );
 
-			if ( data.castShadow !== undefined ) object.castShadow = data.castShadow;
-			if ( data.receiveShadow !== undefined ) object.receiveShadow = data.receiveShadow;
+		}
 
-			if ( data.shadow ) {
+		if ( data.castShadow !== undefined ) object.castShadow = data.castShadow;
+		if ( data.receiveShadow !== undefined ) object.receiveShadow = data.receiveShadow;
 
-				if ( data.shadow.bias !== undefined ) object.shadow.bias = data.shadow.bias;
-				if ( data.shadow.radius !== undefined ) object.shadow.radius = data.shadow.radius;
-				if ( data.shadow.mapSize !== undefined ) object.shadow.mapSize.fromArray( data.shadow.mapSize );
-				if ( data.shadow.camera !== undefined ) object.shadow.camera = this.parseObject( data.shadow.camera );
+		if ( data.shadow ) {
 
-			}
+			if ( data.shadow.bias !== undefined ) object.shadow.bias = data.shadow.bias;
+			if ( data.shadow.radius !== undefined ) object.shadow.radius = data.shadow.radius;
+			if ( data.shadow.mapSize !== undefined ) object.shadow.mapSize.fromArray( data.shadow.mapSize );
+			if ( data.shadow.camera !== undefined ) object.shadow.camera = this.parseObject( data.shadow.camera );
 
-			if ( data.visible !== undefined ) object.visible = data.visible;
-			if ( data.userData !== undefined ) object.userData = data.userData;
+		}
 
-			if ( data.children !== undefined ) {
+		if ( data.visible !== undefined ) object.visible = data.visible;
+		if ( data.userData !== undefined ) object.userData = data.userData;
 
-				var children = data.children;
+		if ( data.children !== undefined ) {
 
-				for ( var i = 0; i < children.length; i ++ ) {
+			var children = data.children;
 
-					object.add( this.parseObject( children[ i ], geometries, materials ) );
+			for ( var i = 0; i < children.length; i ++ ) {
 
-				}
+				object.add( this.parseObject( children[ i ], geometries, materials ) );
 
 			}
 
-			if ( data.type === 'LOD' ) {
+		}
 
-				var levels = data.levels;
+		if ( data.type === 'LOD' ) {
 
-				for ( var l = 0; l < levels.length; l ++ ) {
+			var levels = data.levels;
 
-					var level = levels[ l ];
-					var child = object.getObjectByProperty( 'uuid', level.object );
+			for ( var l = 0; l < levels.length; l ++ ) {
 
-					if ( child !== undefined ) {
+				var level = levels[ l ];
+				var child = object.getObjectByProperty( 'uuid', level.object );
 
-						object.addLevel( child, level.distance );
+				if ( child !== undefined ) {
 
-					}
+					object.addLevel( child, level.distance );
 
 				}
 
 			}
 
-			return object;
+		}
 
-		};
+		return object;
 
-	}()
+	}
 
 } );
 
@@ -45213,13 +45195,13 @@ Object.defineProperties( WebGLRenderer.prototype, {
 	shadowMapCullFace: {
 		get: function () {
 
-			return this.shadowMap.cullFace;
+			console.warn( 'THREE.WebGLRenderer: .shadowMapCullFace has been removed. Set Material.shadowSide instead.' );
+			return undefined;
 
 		},
 		set: function ( value ) {
 
-			console.warn( 'THREE.WebGLRenderer: .shadowMapCullFace is now .shadowMap.cullFace.' );
-			this.shadowMap.cullFace = value;
+			console.warn( 'THREE.WebGLRenderer: .shadowMapCullFace has been removed. Set Material.shadowSide instead.' );
 
 		}
 	}
@@ -45230,14 +45212,39 @@ Object.defineProperties( WebGLShadowMap.prototype, {
 	cullFace: {
 		get: function () {
 
-			return this.renderReverseSided ? CullFaceFront : CullFaceBack;
+			console.warn( 'THREE.WebGLRenderer: .shadowMap.cullFace has been removed. Set Material.shadowSide instead.' );
+			return undefined;
 
 		},
 		set: function ( cullFace ) {
 
-			var value = ( cullFace !== CullFaceBack );
-			console.warn( "WebGLRenderer: .shadowMap.cullFace is deprecated. Set .shadowMap.renderReverseSided to " + value + "." );
-			this.renderReverseSided = value;
+			console.warn( 'THREE.WebGLRenderer: .shadowMap.cullFace has been removed. Set Material.shadowSide instead.' );
+
+		}
+	},
+	renderReverseSided: {
+		get: function () {
+
+			console.warn( 'THREE.WebGLRenderer: .shadowMap.renderReverseSided has been removed. Set Material.shadowSide instead.' );
+			return undefined;
+
+		},
+		set: function () {
+
+			console.warn( 'THREE.WebGLRenderer: .shadowMap.renderReverseSided has been removed. Set Material.shadowSide instead.' );
+
+		}
+	},
+	renderSingleSided: {
+		get: function () {
+
+			console.warn( 'THREE.WebGLRenderer: .shadowMap.renderSingleSided has been removed. Set Material.shadowSide instead.' );
+			return undefined;
+
+		},
+		set: function () {
+
+			console.warn( 'THREE.WebGLRenderer: .shadowMap.renderSingleSided has been removed. Set Material.shadowSide instead.' );
 
 		}
 	}

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