Browse Source

Remove JSONLoader from core

Mugen87 6 years ago
parent
commit
02d91338ea
42 changed files with 600 additions and 1989 deletions
  1. 1 4
      docs/api/en/animation/AnimationClip.html
  2. 0 122
      docs/api/en/loaders/JSONLoader.html
  3. 0 3
      docs/api/en/loaders/ObjectLoader.html
  4. 1 4
      docs/api/zh/animation/AnimationClip.html
  5. 0 119
      docs/api/zh/loaders/JSONLoader.html
  6. 0 3
      docs/api/zh/loaders/ObjectLoader.html
  7. 0 2
      docs/list.js
  8. 0 1
      docs/manual/en/introduction/Animation-system.html
  9. 1 1
      docs/manual/en/introduction/Loading-3D-models.html
  10. 2 3
      docs/manual/zh/introduction/Animation-system.html
  11. 1 44
      editor/js/Loader.js
  12. 1 49
      editor/js/libs/tern-threejs/threejs.js
  13. 0 1
      examples/files.js
  14. 578 0
      examples/js/loaders/deprecated/JSONLoader.js
  15. 0 179
      examples/webgl_loader_json.html
  16. 8 12
      src/Three.Legacy.js
  17. 0 1
      src/Three.js
  18. 0 587
      src/loaders/JSONLoader.js
  19. 2 4
      src/loaders/ObjectLoader.js
  20. 0 1
      test/three.source.unit.js
  21. 0 46
      test/unit/src/geometries/BoxGeometry.tests.js
  22. 0 46
      test/unit/src/geometries/CircleGeometry.tests.js
  23. 0 35
      test/unit/src/geometries/ConeGeometry.tests.js
  24. 0 54
      test/unit/src/geometries/CylinderGeometry.tests.js
  25. 0 42
      test/unit/src/geometries/DodecahedronGeometry.tests.js
  26. 1 19
      test/unit/src/geometries/ExtrudeGeometry.tests.js
  27. 0 42
      test/unit/src/geometries/IcosahedronGeometry.tests.js
  28. 0 43
      test/unit/src/geometries/LatheGeometry.tests.js
  29. 0 42
      test/unit/src/geometries/OctahedronGeometry.tests.js
  30. 0 35
      test/unit/src/geometries/ParametricGeometry.tests.js
  31. 0 46
      test/unit/src/geometries/PlaneGeometry.tests.js
  32. 0 43
      test/unit/src/geometries/PolyhedronGeometry.tests.js
  33. 0 50
      test/unit/src/geometries/RingGeometry.tests.js
  34. 0 40
      test/unit/src/geometries/ShapeGeometry.tests.js
  35. 0 52
      test/unit/src/geometries/SphereGeometry.tests.js
  36. 3 4
      test/unit/src/geometries/TetrahedronGeometry.tests.js
  37. 0 35
      test/unit/src/geometries/TextGeometry.tests.js
  38. 0 48
      test/unit/src/geometries/TorusGeometry.tests.js
  39. 0 49
      test/unit/src/geometries/TorusKnotGeometry.tests.js
  40. 0 37
      test/unit/src/geometries/TubeGeometry.tests.js
  41. 0 40
      test/unit/src/loaders/JSONLoader.tests.js
  42. 1 1
      utils/exporters/blender/README.md

+ 1 - 4
docs/api/en/animation/AnimationClip.html

@@ -96,10 +96,7 @@
 		<p>
 		<p>
 			Returns an array of new AnimationClips created from the [page:Geometry.morphTargets morph
 			Returns an array of new AnimationClips created from the [page:Geometry.morphTargets morph
 			target sequences] of a geometry, trying to sort morph target names into animation-group-based
 			target sequences] of a geometry, trying to sort morph target names into animation-group-based
-			patterns like "Walk_001, Walk_002, Run_001, Run_002 ..."<br /><br />
-
-			This method is called by the [page:JSONLoader] internally, and it uses
-			[page:.CreateFromMorphTargetSequence CreateFromMorphTargetSequence].
+			patterns like "Walk_001, Walk_002, Run_001, Run_002 ...".
 		</p>
 		</p>
 
 
 		<h3>[method:AnimationClip CreateFromMorphTargetSequence]( [param:String name], [param:Array morphTargetSequence], [param:Number fps], [param:Boolean noLoop] )</h3>
 		<h3>[method:AnimationClip CreateFromMorphTargetSequence]( [param:String name], [param:Array morphTargetSequence], [param:Number fps], [param:Boolean noLoop] )</h3>

+ 0 - 122
docs/api/en/loaders/JSONLoader.html

@@ -1,122 +0,0 @@
-<!DOCTYPE html>
-<html lang="en">
-	<head>
-		<meta charset="utf-8" />
-		<base href="../../../" />
-		<script src="list.js"></script>
-		<script src="page.js"></script>
-		<link type="text/css" rel="stylesheet" href="page.css" />
-	</head>
-	<body>
-		<h1>[name]</h1>
-
-		<p class="desc">
-			A loader for loading objects in JSON format.
-			This uses the [page:FileLoader] internally for loading files.
-		</p>
-
-		<h2>Example</h2>
-
-		<p>
-		[example:webgl_loader_json WebGL / loader / json]
-		</p>
-
-		<code>
-		// instantiate a loader
-		var loader = new THREE.JSONLoader();
-
-		// load a resource
-		loader.load(
-			// resource URL
-			'models/animated/monster/monster.js',
-
-			// onLoad callback
-			function ( geometry, materials ) {
-				var material = materials[ 0 ];
-				var object = new THREE.Mesh( geometry, material );
-				scene.add( object );
-			},
-
-			// onProgress callback
-			function ( xhr ) {
-				console.log( (xhr.loaded / xhr.total * 100) + '% loaded' );
-			},
-
-			// onError callback
-			function( err ) {
-				console.log( 'An error happened' );
-			}
-		);
-		</code>
-
-		<h2>Constructor</h2>
-
-		<h3>[name]( [param:LoadingManager manager] )</h3>
-		<p>
-		[page:LoadingManager manager] — The [page:LoadingManager loadingManager] for the loader to use. Default is [page:LoadingManager THREE.DefaultLoadingManager].
-		</p>
-		<p>
-		Creates a new [name].
-		</p>
-
-		<h2>Properties</h2>
-
-		<h3>[property:String crossOrigin]</h3>
-		<p>
-		If set, assigns the [link:https://developer.mozilla.org/en-US/docs/Web/HTML/CORS_settings_attributes crossOrigin]
-	 attribute of the image to the value of *crossOrigin*, prior to starting the load. Default is *"anonymous"*.
-		</p>
-
-		<h3>[property:LoadingManager manager]</h3>
-		<p>
-			The [page:LoadingManager loadingManager]  the loader is using. Default is [page:DefaultLoadingManager].
-		</p>
-
-		<h3>[property:String withCredentials]</h3>
-		<p>
-			Whether the XMLHttpRequest uses credentials.
-			Default is *false*.
-		</p>
-
-		<h2>Methods</h2>
-
-		<h3>[method:null load]( [param:String url], [param:Function onLoad], [param:Function onProgress], [param:Function onError] )</h3>
-		<p>
-		[page:String url] — the path or URL to the file. This can also be a
-			[link:https://developer.mozilla.org/en-US/docs/Web/HTTP/Basics_of_HTTP/Data_URIs Data URI]..<br />
-		[page:Function onLoad] — Will be called when load completes. The argument will be the loaded text response.<br />
-		[page:Function onProgress] — Will be called while load progresses. The argument will be the XMLHttpRequest instance, which contains .[page:Integer total] and .[page:Integer loaded] bytes.<br />
-		[page:Function onError] — Will be called when load errors.<br />
-		</p>
-		<p>
-		Begin loading from url and pass the <em>JSON</em> to onLoad.
-		</p>
-
-		<h3>[method:Object3D parse]( [param:Object json], [param:String path] )</h3>
-		<p>
-		[page:String json] — JSON object to parse.<br />
-		[page:String path] — Base path for resources if no resource path is defined.<br /><br />
-
-		Parse a <em>JSON</em> structure and return an [page:object] containing the parsed [page:Geometry geometry] and [page:Array materials].
-		</p>
-
-		<h3>[method:JSONLoader setCrossOrigin]( [param:String value] )</h3>
-		<p>
-			Set the [page:.crossOrigin] attribute.
-		</p>
-
-		<h3>[method:JSONLoader setPath]( [param:String value] )</h3>
-		<p>
-			Set the base path for the original file.
-		</p>
-
-		<h3>[method:JSONLoader setResourcePath]( [param:String value] )</h3>
-		<p>
-			Set the base path for dependent resources like textures.
-		</p>
-
-		<h2>Source</h2>
-
-		[link:https://github.com/mrdoob/three.js/blob/master/src/[path].js src/[path].js]
-	</body>
-</html>

+ 0 - 3
docs/api/en/loaders/ObjectLoader.html

@@ -13,8 +13,6 @@
 		<p class="desc">
 		<p class="desc">
 			A loader for loading a JSON resource in the [link:https://github.com/mrdoob/three.js/wiki/JSON-Object-Scene-format-4 JSON Object/Scene format].<br /><br />
 			A loader for loading a JSON resource in the [link:https://github.com/mrdoob/three.js/wiki/JSON-Object-Scene-format-4 JSON Object/Scene format].<br /><br />
 
 
-			Note that this loader can't load geometries of type [page:Geometry]. Use [page:JSONLoader] instead for that.<br /><br />
-
 			This uses the [page:FileLoader] internally for loading files.
 			This uses the [page:FileLoader] internally for loading files.
 		</p>
 		</p>
 
 
@@ -119,7 +117,6 @@
 		[page:Object json] — required. The JSON source to parse.<br /><br />
 		[page:Object json] — required. The JSON source to parse.<br /><br />
 
 
 		This is used [page:.parse] to parse any [page:Geometry geometries] or [page:BufferGeometry buffer geometries]  in the JSON structure.
 		This is used [page:.parse] to parse any [page:Geometry geometries] or [page:BufferGeometry buffer geometries]  in the JSON structure.
-		Internally it uses [page:JSONLoader] for geometries and [page:BufferGeometryLoader] for buffer geometries.
 		</p>
 		</p>
 
 
 		<h3>[method:Object3D parseMaterials]( [param:Object json] )</h3>
 		<h3>[method:Object3D parseMaterials]( [param:Object json] )</h3>

+ 1 - 4
docs/api/zh/animation/AnimationClip.html

@@ -91,10 +91,7 @@
 		<h3>[method:Array CreateClipsFromMorphTargetSequences]( [param:String name], [param:Array morphTargetSequence], [param:Number fps], [param:Boolean noLoop] )</h3>
 		<h3>[method:Array CreateClipsFromMorphTargetSequences]( [param:String name], [param:Array morphTargetSequence], [param:Number fps], [param:Boolean noLoop] )</h3>
 		<p>
 		<p>
 			返回从几何体的变形目标序列([page:Geometry.morphTargets morph
 			返回从几何体的变形目标序列([page:Geometry.morphTargets morph
-			target sequences])创建的新动画剪辑(AnimationClip)数组,并尝试将变形目标名称分类为基于动画组的模式,如“Walk_001、Walk_002、Run_001、Run_002……”。<br /><br />
-
-			该方法被[page:JSONLoader]内部调用, 并且它使用了
-			[page:.CreateFromMorphTargetSequence CreateFromMorphTargetSequence].
+			target sequences])创建的新动画剪辑(AnimationClip)数组,并尝试将变形目标名称分类为基于动画组的模式,如“Walk_001、Walk_002、Run_001、Run_002……”。
 		</p>
 		</p>
 
 
 		<h3>[method:AnimationClip CreateFromMorphTargetSequence]( [param:String name], [param:Array morphTargetSequence], [param:Number fps], [param:Boolean noLoop] )</h3>
 		<h3>[method:AnimationClip CreateFromMorphTargetSequence]( [param:String name], [param:Array morphTargetSequence], [param:Number fps], [param:Boolean noLoop] )</h3>

+ 0 - 119
docs/api/zh/loaders/JSONLoader.html

@@ -1,119 +0,0 @@
-<!DOCTYPE html>
-<html lang="en">
-	<head>
-		<meta charset="utf-8" />
-		<base href="../../../" />
-		<script src="list.js"></script>
-		<script src="page.js"></script>
-		<link type="text/css" rel="stylesheet" href="page.css" />
-	</head>
-	<body>
-		<h1>[name]</h1>
-
-		<p class="desc">
-            以JSON格式来加载对象的加载器。
-			此加载器内部用 [page:FileLoader] 来加载文件。
-		</p>
-
-		<h2>例子</h2>
-
-		<p>
-		[example:webgl_loader_json WebGL / loader / json]<br />
-		[example:webgl_loader_json_objconverter WebGL / loader / json / objconverter]
-		</p>
-
-		<code>
-		// 初始化一个加载器
-		var loader = new THREE.JSONLoader();
-
-		// 加载一个资源
-		loader.load(
-			// 资源URL
-			'models/animated/monster/monster.js',
-
-			// onLoad的回调
-			function ( geometry, materials ) {
-				var material = materials[ 0 ];
-				var object = new THREE.Mesh( geometry, material );
-				scene.add( object );
-			},
-
-			// onProgress的回调
-			function ( xhr ) {
-				console.log( (xhr.loaded / xhr.total * 100) + '% loaded' );
-			},
-
-			// onError的回调
-			function( err ) {
-				console.log( 'An error happened' );
-			}
-		);
-		</code>
-
-		<h2>构造函数</h2>
-
-		<h3>[name]( [param:LoadingManager manager] )</h3>
-		<p>
-		[page:LoadingManager manager] — 加载器所使用的 [page:LoadingManager loadingManager]。 默认为 [page:LoadingManager THREE.DefaultLoadingManager].
-		</p>
-		<p>
-		创建一个新的 [name].
-		</p>
-
-		<h2>属性</h2>
-
-		<h3>[property:String crossOrigin]</h3>
-		<p>
-		如果设置了,在开始加载前, 将为图片分配 [link:https://developer.mozilla.org/en-US/docs/Web/HTML/CORS_settings_attributes crossOrigin]
-	 属性,其值为 *crossOrigin*,默认为"anonymous"。
-		</p>
-
-		<h3>[property:LoadingManager manager]</h3>
-		<p>
-			加载器正在使用的 [page:LoadingManager loadingManager] 。 默认为 [page:DefaultLoadingManager].
-		</p>
-
-		<h3>[property:String withCredentials]</h3>
-		<p>
-            XMLHttpRequest请求是否使用了证书。
-			默认为 *false*.
-		</p>
-
-		<h2>方法</h2>
-
-		<h3>[method:null load]( [param:String url], [param:Function onLoad], [param:Function onProgress], [param:Function onError] )</h3>
-		<p>
-		[page:String url] — 文件的URL或者路径,也可以为
-			[link:https://developer.mozilla.org/en-US/docs/Web/HTTP/Basics_of_HTTP/Data_URIs Data URI]..<br />
-		[page:Function onLoad] — 加载完成时将调用。回调参数将是加载的响应。<br />
-		[page:Function onProgress] — 将在加载过程中进行调用。参数为XMLHttpRequest实例,
-            其中包含 [page:Integer total] 和 [page:Integer loaded] 字节。<br />
-		[page:Function onError] — 在加载错误时被调用。<br />
-		</p>
-		<p>
-		从URL中进行加载并将 <em>JSON</em> 传递给 onLoad。
-		</p>
-
-		<h3>[method:JSONLoader setCrossOrigin]( [param:String value] )</h3>
-		<p>
-			设置 [page:.crossOrigin] 的属性。
-		</p>
-
-		<h3>[method:JSONLoader setTexturePath]( [param:String texturePath] )</h3>
-		<p>
-            设置加载文件的基本路径或URL。当加载同一目录中的许多模型,此方法将很有用。
-		</p>
-
-		<h3>[method:Object3D parse]( [param:Object json], [param:String texturePath] )</h3>
-		<p>
-		[page:String json] — 需要解析的JSON对象。<br />
-		[page:String texturePath] — 纹理的基本路径。<br /><br />
-
-		解析要给 <em>JSON</em> 结构并返回 [page:object] 包含 [page:Geometry geometry] 和 [page:Array materials] 的对象.
-		</p>
-
-		<h2>源</h2>
-
-		[link:https://github.com/mrdoob/three.js/blob/master/src/[path].js src/[path].js]
-	</body>
-</html>

+ 0 - 3
docs/api/zh/loaders/ObjectLoader.html

@@ -13,8 +13,6 @@
 		<p class="desc">
 		<p class="desc">
 			A loader for loading a JSON resource in the [link:https://github.com/mrdoob/three.js/wiki/JSON-Object-Scene-format-4 JSON Object/Scene format].<br /><br />
 			A loader for loading a JSON resource in the [link:https://github.com/mrdoob/three.js/wiki/JSON-Object-Scene-format-4 JSON Object/Scene format].<br /><br />
 
 
-			Note that this loader can't load geometries of type [page:Geometry]. Use [page:JSONLoader] instead for that.<br /><br />
-
 			此加载器内部使用[page:FileLoader]进行加载文件。
 			此加载器内部使用[page:FileLoader]进行加载文件。
 		</p>
 		</p>
 
 
@@ -118,7 +116,6 @@
 		[page:Object json] — 必选参数,需要被解析的JSON源。<br /><br />
 		[page:Object json] — 必选参数,需要被解析的JSON源。<br /><br />
 
 
             此函数以JSON结构,用[page:.parse]去解析[page:Geometry geometries]或[page:BufferGeometry buffer geometries]。
             此函数以JSON结构,用[page:.parse]去解析[page:Geometry geometries]或[page:BufferGeometry buffer geometries]。
-            在内部,它使用JSONLoader作为几何加载器,使用BufferGeometryLoader作为几何缓冲区加载器。
 		</p>
 		</p>
 
 
 		<h3>[method:Object3D parseMaterials]( [param:Object json] )</h3>
 		<h3>[method:Object3D parseMaterials]( [param:Object json] )</h3>

+ 0 - 2
docs/list.js

@@ -233,7 +233,6 @@ var list = {
 				"FontLoader": "api/en/loaders/FontLoader",
 				"FontLoader": "api/en/loaders/FontLoader",
 				"ImageBitmapLoader": "api/en/loaders/ImageBitmapLoader",
 				"ImageBitmapLoader": "api/en/loaders/ImageBitmapLoader",
 				"ImageLoader": "api/en/loaders/ImageLoader",
 				"ImageLoader": "api/en/loaders/ImageLoader",
-				"JSONLoader": "api/en/loaders/JSONLoader",
 				"Loader": "api/en/loaders/Loader",
 				"Loader": "api/en/loaders/Loader",
 				"LoaderUtils": "api/en/loaders/LoaderUtils",
 				"LoaderUtils": "api/en/loaders/LoaderUtils",
 				"MaterialLoader": "api/en/loaders/MaterialLoader",
 				"MaterialLoader": "api/en/loaders/MaterialLoader",
@@ -658,7 +657,6 @@ var list = {
 				"FontLoader": "api/zh/loaders/FontLoader",
 				"FontLoader": "api/zh/loaders/FontLoader",
 				"ImageBitmapLoader": "api/zh/loaders/ImageBitmapLoader",
 				"ImageBitmapLoader": "api/zh/loaders/ImageBitmapLoader",
 				"ImageLoader": "api/zh/loaders/ImageLoader",
 				"ImageLoader": "api/zh/loaders/ImageLoader",
-				"JSONLoader": "api/zh/loaders/JSONLoader",
 				"Loader": "api/zh/loaders/Loader",
 				"Loader": "api/zh/loaders/Loader",
 				"LoaderUtils": "api/zh/loaders/LoaderUtils",
 				"LoaderUtils": "api/zh/loaders/LoaderUtils",
 				"MaterialLoader": "api/zh/loaders/MaterialLoader",
 				"MaterialLoader": "api/zh/loaders/MaterialLoader",

+ 0 - 1
docs/manual/en/introduction/Animation-system.html

@@ -107,7 +107,6 @@
 		</p>
 		</p>
 
 
 			<ul>
 			<ul>
-				<li>[page:JSONLoader THREE.JSONLoader]</li>
 				<li>[page:ObjectLoader THREE.ObjectLoader]</li>
 				<li>[page:ObjectLoader THREE.ObjectLoader]</li>
 				<li>THREE.BVHLoader</li>
 				<li>THREE.BVHLoader</li>
 				<li>THREE.ColladaLoader</li>
 				<li>THREE.ColladaLoader</li>

+ 1 - 1
docs/manual/en/introduction/Loading-3D-models.html

@@ -79,7 +79,7 @@
 	<h2>Loading</h2>
 	<h2>Loading</h2>
 
 
 	<p>
 	<p>
-		Only a few loaders ([page:ObjectLoader] and [page:JSONLoader]) are included by default with
+		Only a few loaders (e.g. [page:ObjectLoader]) are included by default with
 		three.js — others should be added to your page individually. Depending on your
 		three.js — others should be added to your page individually. Depending on your
 		preference and comfort with build tools, choose one of the following:
 		preference and comfort with build tools, choose one of the following:
 	</p>
 	</p>

+ 2 - 3
docs/manual/zh/introduction/Animation-system.html

@@ -32,7 +32,7 @@
 			<br /><br />
 			<br /><br />
 			每个* AnimationClip *通常保存对象的某个活动的数据。 如果
 			每个* AnimationClip *通常保存对象的某个活动的数据。 如果
 			mesh是一个字符,例如,可以有一个用于walkcycle的动画片段,第二个
 			mesh是一个字符,例如,可以有一个用于walkcycle的动画片段,第二个
-			跳跃,三分之一的回避等等。		
+			跳跃,三分之一的回避等等。
 		</p>
 		</p>
 
 
 		<h3>Keyframe Tracks(关键帧轨道)</h3>
 		<h3>Keyframe Tracks(关键帧轨道)</h3>
@@ -83,11 +83,10 @@
 		<p class="desc">
 		<p class="desc">
 			请注意,并非所有模型格式都包含动画(尤其是OBJ,没有),而且只有一些
 			请注意,并非所有模型格式都包含动画(尤其是OBJ,没有),而且只有一些
 			three.js加载器支持[page:AnimationClip AnimationClip]序列。 以下几个<i>确实</ i>
 			three.js加载器支持[page:AnimationClip AnimationClip]序列。 以下几个<i>确实</ i>
-			支持此动画类型:		
+			支持此动画类型:
 		</p>
 		</p>
 
 
 			<ul>
 			<ul>
-				<li>[page:JSONLoader THREE.JSONLoader]</li>
 				<li>[page:ObjectLoader THREE.ObjectLoader]</li>
 				<li>[page:ObjectLoader THREE.ObjectLoader]</li>
 				<li>THREE.BVHLoader</li>
 				<li>THREE.BVHLoader</li>
 				<li>THREE.ColladaLoader</li>
 				<li>THREE.ColladaLoader</li>

+ 1 - 44
editor/js/Loader.js

@@ -576,50 +576,7 @@ var Loader = function ( editor ) {
 
 
 			case 'geometry':
 			case 'geometry':
 
 
-				var loader = new THREE.JSONLoader();
-				loader.setResourcePath( scope.texturePath );
-
-				var result = loader.parse( data );
-
-				var geometry = result.geometry;
-				var material;
-
-				if ( result.materials !== undefined ) {
-
-					if ( result.materials.length > 1 ) {
-
-						material = new THREE.MultiMaterial( result.materials );
-
-					} else {
-
-						material = result.materials[ 0 ];
-
-					}
-
-				} else {
-
-					material = new THREE.MeshStandardMaterial();
-
-				}
-
-				geometry.sourceType = "ascii";
-				geometry.sourceFile = file.name;
-
-				var mesh;
-
-				if ( geometry.animation && geometry.animation.hierarchy ) {
-
-					mesh = new THREE.SkinnedMesh( geometry, material );
-
-				} else {
-
-					mesh = new THREE.Mesh( geometry, material );
-
-				}
-
-				mesh.name = filename;
-
-				editor.execute( new AddObjectCommand( mesh ) );
+				console.error( 'Loader: "Geometry" is no longer supported.' );
 
 
 				break;
 				break;
 
 

+ 1 - 49
editor/js/libs/tern-threejs/threejs.js

@@ -1714,54 +1714,6 @@
       "!doc": "A loader for loading an [page:Image].",
       "!doc": "A loader for loading an [page:Image].",
       "!type": "fn(manager: +THREE.LoadingManager)"
       "!type": "fn(manager: +THREE.LoadingManager)"
     },
     },
-    "JSONLoader": {
-      "!url": "http://threejs.org/docs/#Reference/loaders/JSONLoader",
-      "prototype": {
-        "!proto": "THREE.Loader.prototype",
-        "withCredentials": {
-          "!type": "boolean",
-          "!doc": "If true, the ajax request will use cookies."
-        },
-        "onLoadStart": {
-          "!type": "function",
-          "!doc": "The default is a function with empty body."
-        },
-        "onLoadComplete": {
-          "!type": "function",
-          "!doc": "The default is a function with empty body."
-        },
-        "load": {
-          "!type": "fn(url: string, callback: function, texturePath: string)",
-          "!doc": "[page:String url] — required<br>\n\t\t[page:Function callback] — required. Will be called when load completes. The arguments will be the loaded [page:Object3D] and the loaded [page:Array materials].<br>\n\t\t[page:String texturePath] — optional. If not specified, textures will be assumed to be in the same folder as the Javascript model file."
-        },
-        "loadAjaxJSON": {
-          "!type": "fn(context: +THREE.JSONLoader, url: string, callback: function, texturePath: string, callbackProgress: function)",
-          "!doc": "Begin loading from url and call <em>callback</em> with the parsed response content."
-        },
-        "parse": {
-          "!type": "fn(json: object, texturePath: string) -> +THREE.Object3D",
-          "!doc": "Parse a <em>JSON</em> structure and return an [page:Object] containing the parsed .[page:Geometry] and .[page:Array materials]."
-        },
-        "updateProgress": {
-          "!type": "fn(progress: object)",
-          "!doc": "Updates the DOM object with the progress made."
-        },
-        "createMaterial": {
-          "!type": "fn(m: object, texturePath: string) -> +THREE.Material",
-          "!doc": "Creates the Material based on the parameters m."
-        },
-        "initMaterials": {
-          "!type": "fn(materials: [], texturePath: string) -> []",
-          "!doc": "Creates an array of [page:Material] based on the array of parameters m. The index of the parameters decide the correct index of the materials."
-        },
-        "extractUrlBase": {
-          "!type": "fn(url: string) -> string",
-          "!doc": "Extract the base from the URL."
-        }
-      },
-      "!doc": "A loader for loading objects in JSON format.",
-      "!type": "fn()"
-    },
     "Loader": {
     "Loader": {
       "!url": "http://threejs.org/docs/#Reference/loaders/Loader",
       "!url": "http://threejs.org/docs/#Reference/loaders/Loader",
       "prototype": {
       "prototype": {
@@ -1904,7 +1856,7 @@
           "!doc": "[page:String value] — The crossOrigin string to implement CORS for loading the url from a different domain that allows CORS."
           "!doc": "[page:String value] — The crossOrigin string to implement CORS for loading the url from a different domain that allows CORS."
         }
         }
       },
       },
-      "!doc": "A loader for loading a JSON resource. Unlike the [page:JSONLoader], this one make use of the <em>.type</em> attributes of objects to map them to their original classes.",
+      "!doc": "A loader for loading a JSON resource.",
       "!type": "fn(manager: +THREE.LoadingManager)"
       "!type": "fn(manager: +THREE.LoadingManager)"
     },
     },
     "PDBLoader": {
     "PDBLoader": {

+ 0 - 1
examples/files.js

@@ -90,7 +90,6 @@ var files = {
 		"webgl_loader_gltf",
 		"webgl_loader_gltf",
 		"webgl_loader_gltf_extensions",
 		"webgl_loader_gltf_extensions",
 		"webgl_loader_imagebitmap",
 		"webgl_loader_imagebitmap",
-		"webgl_loader_json",
 		"webgl_loader_json_claraio",
 		"webgl_loader_json_claraio",
 		"webgl_loader_kmz",
 		"webgl_loader_kmz",
 		"webgl_loader_md2",
 		"webgl_loader_md2",

+ 578 - 0
examples/js/loaders/deprecated/JSONLoader.js

@@ -0,0 +1,578 @@
+/**
+ * @author mrdoob / http://mrdoob.com/
+ * @author alteredq / http://alteredqualia.com/
+ */
+
+THREE.JSONLoader = ( function () {
+
+	function JSONLoader( manager ) {
+
+		if ( typeof manager === 'boolean' ) {
+
+			console.warn( 'THREE.JSONLoader: showStatus parameter has been removed from constructor.' );
+			manager = undefined;
+
+		}
+
+		this.manager = ( manager !== undefined ) ? manager : THREE.DefaultLoadingManager;
+
+		this.withCredentials = false;
+
+	}
+
+	Object.assign( JSONLoader.prototype, {
+
+		crossOrigin: 'anonymous',
+
+		load: function ( url, onLoad, onProgress, onError ) {
+
+			var scope = this;
+
+			var path = ( this.path === undefined ) ? THREE.LoaderUtils.extractUrlBase( url ) : this.path;
+
+			var loader = new THREE.FileLoader( this.manager );
+			loader.setPath( this.path );
+			loader.setWithCredentials( this.withCredentials );
+			loader.load( url, function ( text ) {
+
+				var json = JSON.parse( text );
+				var metadata = json.metadata;
+
+				if ( metadata !== undefined ) {
+
+					var type = metadata.type;
+
+					if ( type !== undefined ) {
+
+						if ( type.toLowerCase() === 'object' ) {
+
+							console.error( 'THREE.JSONLoader: ' + url + ' should be loaded with THREE.ObjectLoader instead.' );
+							return;
+
+						}
+
+					}
+
+				}
+
+				var object = scope.parse( json, path );
+				onLoad( object.geometry, object.materials );
+
+			}, onProgress, onError );
+
+		},
+
+		setPath: function ( value ) {
+
+			this.path = value;
+			return this;
+
+		},
+
+		setResourcePath: function ( value ) {
+
+			this.resourcePath = value;
+			return this;
+
+		},
+
+		setCrossOrigin: function ( value ) {
+
+			this.crossOrigin = value;
+			return this;
+
+		},
+
+		parse: ( function () {
+
+			function parseModel( json, geometry ) {
+
+				function isBitSet( value, position ) {
+
+					return value & ( 1 << position );
+
+				}
+
+				var i, j, fi,
+
+					offset, zLength,
+
+					colorIndex, normalIndex, uvIndex, materialIndex,
+
+					type,
+					isQuad,
+					hasMaterial,
+					hasFaceVertexUv,
+					hasFaceNormal, hasFaceVertexNormal,
+					hasFaceColor, hasFaceVertexColor,
+
+					vertex, face, faceA, faceB, hex, normal,
+
+					uvLayer, uv, u, v,
+
+					faces = json.faces,
+					vertices = json.vertices,
+					normals = json.normals,
+					colors = json.colors,
+
+					scale = json.scale,
+
+					nUvLayers = 0;
+
+
+				if ( json.uvs !== undefined ) {
+
+					// disregard empty arrays
+
+					for ( i = 0; i < json.uvs.length; i ++ ) {
+
+						if ( json.uvs[ i ].length ) nUvLayers ++;
+
+					}
+
+					for ( i = 0; i < nUvLayers; i ++ ) {
+
+						geometry.faceVertexUvs[ i ] = [];
+
+					}
+
+				}
+
+				offset = 0;
+				zLength = vertices.length;
+
+				while ( offset < zLength ) {
+
+					vertex = new THREE.Vector3();
+
+					vertex.x = vertices[ offset ++ ] * scale;
+					vertex.y = vertices[ offset ++ ] * scale;
+					vertex.z = vertices[ offset ++ ] * scale;
+
+					geometry.vertices.push( vertex );
+
+				}
+
+				offset = 0;
+				zLength = faces.length;
+
+				while ( offset < zLength ) {
+
+					type = faces[ offset ++ ];
+
+					isQuad = isBitSet( type, 0 );
+					hasMaterial = isBitSet( type, 1 );
+					hasFaceVertexUv = isBitSet( type, 3 );
+					hasFaceNormal = isBitSet( type, 4 );
+					hasFaceVertexNormal = isBitSet( type, 5 );
+					hasFaceColor = isBitSet( type, 6 );
+					hasFaceVertexColor = isBitSet( type, 7 );
+
+					// console.log("type", type, "bits", isQuad, hasMaterial, hasFaceVertexUv, hasFaceNormal, hasFaceVertexNormal, hasFaceColor, hasFaceVertexColor);
+
+					if ( isQuad ) {
+
+						faceA = new THREE.Face3();
+						faceA.a = faces[ offset ];
+						faceA.b = faces[ offset + 1 ];
+						faceA.c = faces[ offset + 3 ];
+
+						faceB = new THREE.Face3();
+						faceB.a = faces[ offset + 1 ];
+						faceB.b = faces[ offset + 2 ];
+						faceB.c = faces[ offset + 3 ];
+
+						offset += 4;
+
+						if ( hasMaterial ) {
+
+							materialIndex = faces[ offset ++ ];
+							faceA.materialIndex = materialIndex;
+							faceB.materialIndex = materialIndex;
+
+						}
+
+						// to get face <=> uv index correspondence
+
+						fi = geometry.faces.length;
+
+						if ( hasFaceVertexUv ) {
+
+							for ( i = 0; i < nUvLayers; i ++ ) {
+
+								uvLayer = json.uvs[ i ];
+
+								geometry.faceVertexUvs[ i ][ fi ] = [];
+								geometry.faceVertexUvs[ i ][ fi + 1 ] = [];
+
+								for ( j = 0; j < 4; j ++ ) {
+
+									uvIndex = faces[ offset ++ ];
+
+									u = uvLayer[ uvIndex * 2 ];
+									v = uvLayer[ uvIndex * 2 + 1 ];
+
+									uv = new THREE.Vector2( u, v );
+
+									if ( j !== 2 ) geometry.faceVertexUvs[ i ][ fi ].push( uv );
+									if ( j !== 0 ) geometry.faceVertexUvs[ i ][ fi + 1 ].push( uv );
+
+								}
+
+							}
+
+						}
+
+						if ( hasFaceNormal ) {
+
+							normalIndex = faces[ offset ++ ] * 3;
+
+							faceA.normal.set(
+								normals[ normalIndex ++ ],
+								normals[ normalIndex ++ ],
+								normals[ normalIndex ]
+							);
+
+							faceB.normal.copy( faceA.normal );
+
+						}
+
+						if ( hasFaceVertexNormal ) {
+
+							for ( i = 0; i < 4; i ++ ) {
+
+								normalIndex = faces[ offset ++ ] * 3;
+
+								normal = new THREE.Vector3(
+									normals[ normalIndex ++ ],
+									normals[ normalIndex ++ ],
+									normals[ normalIndex ]
+								);
+
+
+								if ( i !== 2 ) faceA.vertexNormals.push( normal );
+								if ( i !== 0 ) faceB.vertexNormals.push( normal );
+
+							}
+
+						}
+
+
+						if ( hasFaceColor ) {
+
+							colorIndex = faces[ offset ++ ];
+							hex = colors[ colorIndex ];
+
+							faceA.color.setHex( hex );
+							faceB.color.setHex( hex );
+
+						}
+
+
+						if ( hasFaceVertexColor ) {
+
+							for ( i = 0; i < 4; i ++ ) {
+
+								colorIndex = faces[ offset ++ ];
+								hex = colors[ colorIndex ];
+
+								if ( i !== 2 ) faceA.vertexColors.push( new THREE.Color( hex ) );
+								if ( i !== 0 ) faceB.vertexColors.push( new THREE.Color( hex ) );
+
+							}
+
+						}
+
+						geometry.faces.push( faceA );
+						geometry.faces.push( faceB );
+
+					} else {
+
+						face = new THREE.Face3();
+						face.a = faces[ offset ++ ];
+						face.b = faces[ offset ++ ];
+						face.c = faces[ offset ++ ];
+
+						if ( hasMaterial ) {
+
+							materialIndex = faces[ offset ++ ];
+							face.materialIndex = materialIndex;
+
+						}
+
+						// to get face <=> uv index correspondence
+
+						fi = geometry.faces.length;
+
+						if ( hasFaceVertexUv ) {
+
+							for ( i = 0; i < nUvLayers; i ++ ) {
+
+								uvLayer = json.uvs[ i ];
+
+								geometry.faceVertexUvs[ i ][ fi ] = [];
+
+								for ( j = 0; j < 3; j ++ ) {
+
+									uvIndex = faces[ offset ++ ];
+
+									u = uvLayer[ uvIndex * 2 ];
+									v = uvLayer[ uvIndex * 2 + 1 ];
+
+									uv = new THREE.Vector2( u, v );
+
+									geometry.faceVertexUvs[ i ][ fi ].push( uv );
+
+								}
+
+							}
+
+						}
+
+						if ( hasFaceNormal ) {
+
+							normalIndex = faces[ offset ++ ] * 3;
+
+							face.normal.set(
+								normals[ normalIndex ++ ],
+								normals[ normalIndex ++ ],
+								normals[ normalIndex ]
+							);
+
+						}
+
+						if ( hasFaceVertexNormal ) {
+
+							for ( i = 0; i < 3; i ++ ) {
+
+								normalIndex = faces[ offset ++ ] * 3;
+
+								normal = new THREE.Vector3(
+									normals[ normalIndex ++ ],
+									normals[ normalIndex ++ ],
+									normals[ normalIndex ]
+								);
+
+								face.vertexNormals.push( normal );
+
+							}
+
+						}
+
+
+						if ( hasFaceColor ) {
+
+							colorIndex = faces[ offset ++ ];
+							face.color.setHex( colors[ colorIndex ] );
+
+						}
+
+
+						if ( hasFaceVertexColor ) {
+
+							for ( i = 0; i < 3; i ++ ) {
+
+								colorIndex = faces[ offset ++ ];
+								face.vertexColors.push( new THREE.Color( colors[ colorIndex ] ) );
+
+							}
+
+						}
+
+						geometry.faces.push( face );
+
+					}
+
+				}
+
+			}
+
+			function parseSkin( json, geometry ) {
+
+				var influencesPerVertex = ( json.influencesPerVertex !== undefined ) ? json.influencesPerVertex : 2;
+
+				if ( json.skinWeights ) {
+
+					for ( var i = 0, l = json.skinWeights.length; i < l; i += influencesPerVertex ) {
+
+						var x = json.skinWeights[ i ];
+						var y = ( influencesPerVertex > 1 ) ? json.skinWeights[ i + 1 ] : 0;
+						var z = ( influencesPerVertex > 2 ) ? json.skinWeights[ i + 2 ] : 0;
+						var w = ( influencesPerVertex > 3 ) ? json.skinWeights[ i + 3 ] : 0;
+
+						geometry.skinWeights.push( new THREE.Vector4( x, y, z, w ) );
+
+					}
+
+				}
+
+				if ( json.skinIndices ) {
+
+					for ( var i = 0, l = json.skinIndices.length; i < l; i += influencesPerVertex ) {
+
+						var a = json.skinIndices[ i ];
+						var b = ( influencesPerVertex > 1 ) ? json.skinIndices[ i + 1 ] : 0;
+						var c = ( influencesPerVertex > 2 ) ? json.skinIndices[ i + 2 ] : 0;
+						var d = ( influencesPerVertex > 3 ) ? json.skinIndices[ i + 3 ] : 0;
+
+						geometry.skinIndices.push( new THREE.Vector4( a, b, c, d ) );
+
+					}
+
+				}
+
+				geometry.bones = json.bones;
+
+				if ( geometry.bones && geometry.bones.length > 0 && ( geometry.skinWeights.length !== geometry.skinIndices.length || geometry.skinIndices.length !== geometry.vertices.length ) ) {
+
+					console.warn( 'When skinning, number of vertices (' + geometry.vertices.length + '), skinIndices (' +
+						geometry.skinIndices.length + '), and skinWeights (' + geometry.skinWeights.length + ') should match.' );
+
+				}
+
+			}
+
+			function parseMorphing( json, geometry ) {
+
+				var scale = json.scale;
+
+				if ( json.morphTargets !== undefined ) {
+
+					for ( var i = 0, l = json.morphTargets.length; i < l; i ++ ) {
+
+						geometry.morphTargets[ i ] = {};
+						geometry.morphTargets[ i ].name = json.morphTargets[ i ].name;
+						geometry.morphTargets[ i ].vertices = [];
+
+						var dstVertices = geometry.morphTargets[ i ].vertices;
+						var srcVertices = json.morphTargets[ i ].vertices;
+
+						for ( var v = 0, vl = srcVertices.length; v < vl; v += 3 ) {
+
+							var vertex = new THREE.Vector3();
+							vertex.x = srcVertices[ v ] * scale;
+							vertex.y = srcVertices[ v + 1 ] * scale;
+							vertex.z = srcVertices[ v + 2 ] * scale;
+
+							dstVertices.push( vertex );
+
+						}
+
+					}
+
+				}
+
+				if ( json.morphColors !== undefined && json.morphColors.length > 0 ) {
+
+					console.warn( 'THREE.JSONLoader: "morphColors" no longer supported. Using them as face colors.' );
+
+					var faces = geometry.faces;
+					var morphColors = json.morphColors[ 0 ].colors;
+
+					for ( var i = 0, l = faces.length; i < l; i ++ ) {
+
+						faces[ i ].color.fromArray( morphColors, i * 3 );
+
+					}
+
+				}
+
+			}
+
+			function parseAnimations( json, geometry ) {
+
+				var outputAnimations = [];
+
+				// parse old style Bone/Hierarchy animations
+				var animations = [];
+
+				if ( json.animation !== undefined ) {
+
+					animations.push( json.animation );
+
+				}
+
+				if ( json.animations !== undefined ) {
+
+					if ( json.animations.length ) {
+
+						animations = animations.concat( json.animations );
+
+					} else {
+
+						animations.push( json.animations );
+
+					}
+
+				}
+
+				for ( var i = 0; i < animations.length; i ++ ) {
+
+					var clip = THREE.AnimationClip.parseAnimation( animations[ i ], geometry.bones );
+					if ( clip ) outputAnimations.push( clip );
+
+				}
+
+				// parse implicit morph animations
+				if ( geometry.morphTargets ) {
+
+					// TODO: Figure out what an appropraite FPS is for morph target animations -- defaulting to 10, but really it is completely arbitrary.
+					var morphAnimationClips = THREE.AnimationClip.CreateClipsFromMorphTargetSequences( geometry.morphTargets, 10 );
+					outputAnimations = outputAnimations.concat( morphAnimationClips );
+
+				}
+
+				if ( outputAnimations.length > 0 ) geometry.animations = outputAnimations;
+
+			}
+
+			return function parse( json, path ) {
+
+				if ( json.data !== undefined ) {
+
+					// Geometry 4.0 spec
+					json = json.data;
+
+				}
+
+				if ( json.scale !== undefined ) {
+
+					json.scale = 1.0 / json.scale;
+
+				} else {
+
+					json.scale = 1.0;
+
+				}
+
+				var geometry = new THREE.Geometry();
+
+				parseModel( json, geometry );
+				parseSkin( json, geometry );
+				parseMorphing( json, geometry );
+				parseAnimations( json, geometry );
+
+				geometry.computeFaceNormals();
+				geometry.computeBoundingSphere();
+
+				if ( json.materials === undefined || json.materials.length === 0 ) {
+
+					return { geometry: geometry };
+
+				} else {
+
+					var materials = THREE.Loader.prototype.initMaterials( json.materials, this.resourcePath || path, this.crossOrigin );
+
+					return { geometry: geometry, materials: materials };
+
+				}
+
+			};
+
+		} )()
+
+	} );
+
+	return JSONLoader;
+
+} )();

+ 0 - 179
examples/webgl_loader_json.html

@@ -1,179 +0,0 @@
-<!DOCTYPE html>
-<html lang="en">
-	<head>
-		<title>three.js webgl - loader -json</title>
-		<meta charset="utf-8">
-		<meta name="viewport" content="width=device-width, user-scalable=no, minimum-scale=1.0, maximum-scale=1.0">
-		<style>
-			body {
-				background:#777;
-				padding:0;
-				margin:0;
-				font-weight: bold;
-				overflow:hidden;
-			}
-
-			#info {
-				position: absolute;
-				top: 0px;
-				width: 100%;
-				color: #ffffff;
-				padding: 5px;
-				font-family:Monospace;
-				font-size:13px;
-				text-align:center;
-			}
-
-			a {
-				color: #ffffff;
-			}
-		</style>
-	</head>
-	<body>
-
-		<div id="container"></div>
-		<div id="info">
-			<a href="https://threejs.org" target="_blank" rel="noopener">three.js</a> -
-			monster by <a href="http://www.3drt.com/downloads.htm" target="_blank" rel="noopener">3drt</a>
-		</div>
-
-		<script src="../build/three.js"></script>
-
-		<script src="js/WebGL.js"></script>
-		<script src="js/libs/stats.min.js"></script>
-
-		<script>
-
-			if ( WEBGL.isWebGLAvailable() === false ) {
-
-				document.body.appendChild( WEBGL.getWebGLErrorMessage() );
-
-			}
-
-			var container, stats, clock, mixer;
-			var camera, scene, renderer;
-
-			init();
-			animate();
-
-			function init() {
-
-				container = document.getElementById( 'container' );
-
-				camera = new THREE.PerspectiveCamera( 50, window.innerWidth / window.innerHeight, 1, 2000 );
-				camera.position.set( 2, 4, 5 );
-
-				clock = new THREE.Clock();
-
-				scene = new THREE.Scene();
-				scene.fog = new THREE.FogExp2( 0x000000, 0.035 );
-
-				mixer = new THREE.AnimationMixer( scene );
-
-				var loader = new THREE.JSONLoader();
-				loader.load( 'models/json/legacy/monster/monster.js', function ( geometry, materials ) {
-
-					// adjust color a bit
-
-					var material = materials[ 0 ];
-					material.morphTargets = true;
-					material.color.setHex( 0xffaaaa );
-
-					for ( var i = 0; i < 729; i ++ ) {
-
-						var mesh = new THREE.Mesh( geometry, materials );
-
-						// random placement in a grid
-
-						var x = ( ( i % 27 ) - 13.5 ) * 2 + THREE.Math.randFloatSpread( 1 );
-						var z = ( Math.floor( i / 27 ) - 13.5 ) * 2 + THREE.Math.randFloatSpread( 1 );
-
-						mesh.position.set( x, 0, z );
-
-						var s = THREE.Math.randFloat( 0.00075, 0.001 );
-						mesh.scale.set( s, s, s );
-
-						mesh.rotation.y = THREE.Math.randFloat( - 0.25, 0.25 );
-
-						mesh.matrixAutoUpdate = false;
-						mesh.updateMatrix();
-
-						scene.add( mesh );
-
-						mixer.clipAction( geometry.animations[ 0 ], mesh )
-							.setDuration( 1 )			// one second
-							.startAt( - Math.random() )	// random phase (already running)
-							.play();					// let's go
-
-					}
-
-				} );
-
-				// lights
-
-				var ambientLight = new THREE.AmbientLight( 0xcccccc );
-				scene.add( ambientLight );
-
-				var pointLight = new THREE.PointLight( 0xff4400, 5, 30 );
-				pointLight.position.set( 5, 0, 0 );
-				scene.add( pointLight );
-
-				// renderer
-
-				renderer = new THREE.WebGLRenderer();
-				renderer.setPixelRatio( window.devicePixelRatio );
-				renderer.setSize( window.innerWidth, window.innerHeight );
-				container.appendChild( renderer.domElement );
-
-				// stats
-
-				stats = new Stats();
-				container.appendChild( stats.dom );
-
-				// events
-
-				window.addEventListener( 'resize', onWindowResize, false );
-
-			}
-
-			//
-
-			function onWindowResize() {
-
-				renderer.setSize( window.innerWidth, window.innerHeight );
-
-				camera.aspect = window.innerWidth / window.innerHeight;
-				camera.updateProjectionMatrix();
-
-			}
-
-			//
-
-			function animate() {
-
-				requestAnimationFrame( animate );
-
-				render();
-				stats.update();
-
-			}
-
-			function render() {
-
-				var timer = Date.now() * 0.0005;
-
-				camera.position.x = Math.cos( timer ) * 10;
-				camera.position.y = 4;
-				camera.position.z = Math.sin( timer ) * 10;
-
-				mixer.update( clock.getDelta() );
-
-				camera.lookAt( scene.position );
-
-				renderer.render( scene, camera );
-
-			}
-
-		</script>
-	</body>
-</html>

+ 8 - 12
src/Three.Legacy.js

@@ -44,7 +44,6 @@ import { FileLoader } from './loaders/FileLoader.js';
 import { AudioLoader } from './loaders/AudioLoader.js';
 import { AudioLoader } from './loaders/AudioLoader.js';
 import { CubeTextureLoader } from './loaders/CubeTextureLoader.js';
 import { CubeTextureLoader } from './loaders/CubeTextureLoader.js';
 import { DataTextureLoader } from './loaders/DataTextureLoader.js';
 import { DataTextureLoader } from './loaders/DataTextureLoader.js';
-import { JSONLoader } from './loaders/JSONLoader.js';
 import { ObjectLoader } from './loaders/ObjectLoader.js';
 import { ObjectLoader } from './loaders/ObjectLoader.js';
 import { TextureLoader } from './loaders/TextureLoader.js';
 import { TextureLoader } from './loaders/TextureLoader.js';
 import { Material } from './materials/Material.js';
 import { Material } from './materials/Material.js';
@@ -437,17 +436,6 @@ export function BinaryTextureLoader( manager ) {
 
 
 }
 }
 
 
-Object.assign( JSONLoader.prototype, {
-
-	setTexturePath: function ( value ) {
-
-		console.warn( 'THREE.JSONLoader: .setTexturePath() has been renamed to .setResourcePath().' );
-		return this.setResourcePath( value );
-
-	}
-
-} );
-
 Object.assign( ObjectLoader.prototype, {
 Object.assign( ObjectLoader.prototype, {
 
 
 	setTexturePath: function ( value ) {
 	setTexturePath: function ( value ) {
@@ -1893,6 +1881,14 @@ export function CanvasRenderer() {
 
 
 //
 //
 
 
+export function JSONLoader() {
+
+	console.error( 'THREE.JSONLoader has been removed.' );
+
+}
+
+//
+
 export var SceneUtils = {
 export var SceneUtils = {
 
 
 	createMultiMaterialObject: function ( /* geometry, materials */ ) {
 	createMultiMaterialObject: function ( /* geometry, materials */ ) {

+ 0 - 1
src/Three.js

@@ -40,7 +40,6 @@ export { ObjectLoader } from './loaders/ObjectLoader.js';
 export { MaterialLoader } from './loaders/MaterialLoader.js';
 export { MaterialLoader } from './loaders/MaterialLoader.js';
 export { BufferGeometryLoader } from './loaders/BufferGeometryLoader.js';
 export { BufferGeometryLoader } from './loaders/BufferGeometryLoader.js';
 export { DefaultLoadingManager, LoadingManager } from './loaders/LoadingManager.js';
 export { DefaultLoadingManager, LoadingManager } from './loaders/LoadingManager.js';
-export { JSONLoader } from './loaders/JSONLoader.js';
 export { ImageLoader } from './loaders/ImageLoader.js';
 export { ImageLoader } from './loaders/ImageLoader.js';
 export { ImageBitmapLoader } from './loaders/ImageBitmapLoader.js';
 export { ImageBitmapLoader } from './loaders/ImageBitmapLoader.js';
 export { FontLoader } from './loaders/FontLoader.js';
 export { FontLoader } from './loaders/FontLoader.js';

+ 0 - 587
src/loaders/JSONLoader.js

@@ -1,587 +0,0 @@
-import { Loader } from './Loader.js';
-import { LoaderUtils } from './LoaderUtils.js';
-import { AnimationClip } from '../animation/AnimationClip.js';
-import { Vector3 } from '../math/Vector3.js';
-import { Vector4 } from '../math/Vector4.js';
-import { Color } from '../math/Color.js';
-import { Vector2 } from '../math/Vector2.js';
-import { Face3 } from '../core/Face3.js';
-import { Geometry } from '../core/Geometry.js';
-import { FileLoader } from './FileLoader.js';
-import { DefaultLoadingManager } from './LoadingManager.js';
-
-/**
- * @author mrdoob / http://mrdoob.com/
- * @author alteredq / http://alteredqualia.com/
- */
-
-function JSONLoader( manager ) {
-
-	if ( typeof manager === 'boolean' ) {
-
-		console.warn( 'THREE.JSONLoader: showStatus parameter has been removed from constructor.' );
-		manager = undefined;
-
-	}
-
-	this.manager = ( manager !== undefined ) ? manager : DefaultLoadingManager;
-
-	this.withCredentials = false;
-
-}
-
-Object.assign( JSONLoader.prototype, {
-
-	crossOrigin: 'anonymous',
-
-	load: function ( url, onLoad, onProgress, onError ) {
-
-		var scope = this;
-
-		var path = ( this.path === undefined ) ? LoaderUtils.extractUrlBase( url ) : this.path;
-
-		var loader = new FileLoader( this.manager );
-		loader.setPath( this.path );
-		loader.setWithCredentials( this.withCredentials );
-		loader.load( url, function ( text ) {
-
-			var json = JSON.parse( text );
-			var metadata = json.metadata;
-
-			if ( metadata !== undefined ) {
-
-				var type = metadata.type;
-
-				if ( type !== undefined ) {
-
-					if ( type.toLowerCase() === 'object' ) {
-
-						console.error( 'THREE.JSONLoader: ' + url + ' should be loaded with THREE.ObjectLoader instead.' );
-						return;
-
-					}
-
-				}
-
-			}
-
-			var object = scope.parse( json, path );
-			onLoad( object.geometry, object.materials );
-
-		}, onProgress, onError );
-
-	},
-
-	setPath: function ( value ) {
-
-		this.path = value;
-		return this;
-
-	},
-
-	setResourcePath: function ( value ) {
-
-		this.resourcePath = value;
-		return this;
-
-	},
-
-	setCrossOrigin: function ( value ) {
-
-		this.crossOrigin = value;
-		return this;
-
-	},
-
-	parse: ( function () {
-
-		function parseModel( json, geometry ) {
-
-			function isBitSet( value, position ) {
-
-				return value & ( 1 << position );
-
-			}
-
-			var i, j, fi,
-
-				offset, zLength,
-
-				colorIndex, normalIndex, uvIndex, materialIndex,
-
-				type,
-				isQuad,
-				hasMaterial,
-				hasFaceVertexUv,
-				hasFaceNormal, hasFaceVertexNormal,
-				hasFaceColor, hasFaceVertexColor,
-
-				vertex, face, faceA, faceB, hex, normal,
-
-				uvLayer, uv, u, v,
-
-				faces = json.faces,
-				vertices = json.vertices,
-				normals = json.normals,
-				colors = json.colors,
-
-				scale = json.scale,
-
-				nUvLayers = 0;
-
-
-			if ( json.uvs !== undefined ) {
-
-				// disregard empty arrays
-
-				for ( i = 0; i < json.uvs.length; i ++ ) {
-
-					if ( json.uvs[ i ].length ) nUvLayers ++;
-
-				}
-
-				for ( i = 0; i < nUvLayers; i ++ ) {
-
-					geometry.faceVertexUvs[ i ] = [];
-
-				}
-
-			}
-
-			offset = 0;
-			zLength = vertices.length;
-
-			while ( offset < zLength ) {
-
-				vertex = new Vector3();
-
-				vertex.x = vertices[ offset ++ ] * scale;
-				vertex.y = vertices[ offset ++ ] * scale;
-				vertex.z = vertices[ offset ++ ] * scale;
-
-				geometry.vertices.push( vertex );
-
-			}
-
-			offset = 0;
-			zLength = faces.length;
-
-			while ( offset < zLength ) {
-
-				type = faces[ offset ++ ];
-
-				isQuad = isBitSet( type, 0 );
-				hasMaterial = isBitSet( type, 1 );
-				hasFaceVertexUv = isBitSet( type, 3 );
-				hasFaceNormal = isBitSet( type, 4 );
-				hasFaceVertexNormal = isBitSet( type, 5 );
-				hasFaceColor = isBitSet( type, 6 );
-				hasFaceVertexColor = isBitSet( type, 7 );
-
-				// console.log("type", type, "bits", isQuad, hasMaterial, hasFaceVertexUv, hasFaceNormal, hasFaceVertexNormal, hasFaceColor, hasFaceVertexColor);
-
-				if ( isQuad ) {
-
-					faceA = new Face3();
-					faceA.a = faces[ offset ];
-					faceA.b = faces[ offset + 1 ];
-					faceA.c = faces[ offset + 3 ];
-
-					faceB = new Face3();
-					faceB.a = faces[ offset + 1 ];
-					faceB.b = faces[ offset + 2 ];
-					faceB.c = faces[ offset + 3 ];
-
-					offset += 4;
-
-					if ( hasMaterial ) {
-
-						materialIndex = faces[ offset ++ ];
-						faceA.materialIndex = materialIndex;
-						faceB.materialIndex = materialIndex;
-
-					}
-
-					// to get face <=> uv index correspondence
-
-					fi = geometry.faces.length;
-
-					if ( hasFaceVertexUv ) {
-
-						for ( i = 0; i < nUvLayers; i ++ ) {
-
-							uvLayer = json.uvs[ i ];
-
-							geometry.faceVertexUvs[ i ][ fi ] = [];
-							geometry.faceVertexUvs[ i ][ fi + 1 ] = [];
-
-							for ( j = 0; j < 4; j ++ ) {
-
-								uvIndex = faces[ offset ++ ];
-
-								u = uvLayer[ uvIndex * 2 ];
-								v = uvLayer[ uvIndex * 2 + 1 ];
-
-								uv = new Vector2( u, v );
-
-								if ( j !== 2 ) geometry.faceVertexUvs[ i ][ fi ].push( uv );
-								if ( j !== 0 ) geometry.faceVertexUvs[ i ][ fi + 1 ].push( uv );
-
-							}
-
-						}
-
-					}
-
-					if ( hasFaceNormal ) {
-
-						normalIndex = faces[ offset ++ ] * 3;
-
-						faceA.normal.set(
-							normals[ normalIndex ++ ],
-							normals[ normalIndex ++ ],
-							normals[ normalIndex ]
-						);
-
-						faceB.normal.copy( faceA.normal );
-
-					}
-
-					if ( hasFaceVertexNormal ) {
-
-						for ( i = 0; i < 4; i ++ ) {
-
-							normalIndex = faces[ offset ++ ] * 3;
-
-							normal = new Vector3(
-								normals[ normalIndex ++ ],
-								normals[ normalIndex ++ ],
-								normals[ normalIndex ]
-							);
-
-
-							if ( i !== 2 ) faceA.vertexNormals.push( normal );
-							if ( i !== 0 ) faceB.vertexNormals.push( normal );
-
-						}
-
-					}
-
-
-					if ( hasFaceColor ) {
-
-						colorIndex = faces[ offset ++ ];
-						hex = colors[ colorIndex ];
-
-						faceA.color.setHex( hex );
-						faceB.color.setHex( hex );
-
-					}
-
-
-					if ( hasFaceVertexColor ) {
-
-						for ( i = 0; i < 4; i ++ ) {
-
-							colorIndex = faces[ offset ++ ];
-							hex = colors[ colorIndex ];
-
-							if ( i !== 2 ) faceA.vertexColors.push( new Color( hex ) );
-							if ( i !== 0 ) faceB.vertexColors.push( new Color( hex ) );
-
-						}
-
-					}
-
-					geometry.faces.push( faceA );
-					geometry.faces.push( faceB );
-
-				} else {
-
-					face = new Face3();
-					face.a = faces[ offset ++ ];
-					face.b = faces[ offset ++ ];
-					face.c = faces[ offset ++ ];
-
-					if ( hasMaterial ) {
-
-						materialIndex = faces[ offset ++ ];
-						face.materialIndex = materialIndex;
-
-					}
-
-					// to get face <=> uv index correspondence
-
-					fi = geometry.faces.length;
-
-					if ( hasFaceVertexUv ) {
-
-						for ( i = 0; i < nUvLayers; i ++ ) {
-
-							uvLayer = json.uvs[ i ];
-
-							geometry.faceVertexUvs[ i ][ fi ] = [];
-
-							for ( j = 0; j < 3; j ++ ) {
-
-								uvIndex = faces[ offset ++ ];
-
-								u = uvLayer[ uvIndex * 2 ];
-								v = uvLayer[ uvIndex * 2 + 1 ];
-
-								uv = new Vector2( u, v );
-
-								geometry.faceVertexUvs[ i ][ fi ].push( uv );
-
-							}
-
-						}
-
-					}
-
-					if ( hasFaceNormal ) {
-
-						normalIndex = faces[ offset ++ ] * 3;
-
-						face.normal.set(
-							normals[ normalIndex ++ ],
-							normals[ normalIndex ++ ],
-							normals[ normalIndex ]
-						);
-
-					}
-
-					if ( hasFaceVertexNormal ) {
-
-						for ( i = 0; i < 3; i ++ ) {
-
-							normalIndex = faces[ offset ++ ] * 3;
-
-							normal = new Vector3(
-								normals[ normalIndex ++ ],
-								normals[ normalIndex ++ ],
-								normals[ normalIndex ]
-							);
-
-							face.vertexNormals.push( normal );
-
-						}
-
-					}
-
-
-					if ( hasFaceColor ) {
-
-						colorIndex = faces[ offset ++ ];
-						face.color.setHex( colors[ colorIndex ] );
-
-					}
-
-
-					if ( hasFaceVertexColor ) {
-
-						for ( i = 0; i < 3; i ++ ) {
-
-							colorIndex = faces[ offset ++ ];
-							face.vertexColors.push( new Color( colors[ colorIndex ] ) );
-
-						}
-
-					}
-
-					geometry.faces.push( face );
-
-				}
-
-			}
-
-		}
-
-		function parseSkin( json, geometry ) {
-
-			var influencesPerVertex = ( json.influencesPerVertex !== undefined ) ? json.influencesPerVertex : 2;
-
-			if ( json.skinWeights ) {
-
-				for ( var i = 0, l = json.skinWeights.length; i < l; i += influencesPerVertex ) {
-
-					var x = json.skinWeights[ i ];
-					var y = ( influencesPerVertex > 1 ) ? json.skinWeights[ i + 1 ] : 0;
-					var z = ( influencesPerVertex > 2 ) ? json.skinWeights[ i + 2 ] : 0;
-					var w = ( influencesPerVertex > 3 ) ? json.skinWeights[ i + 3 ] : 0;
-
-					geometry.skinWeights.push( new Vector4( x, y, z, w ) );
-
-				}
-
-			}
-
-			if ( json.skinIndices ) {
-
-				for ( var i = 0, l = json.skinIndices.length; i < l; i += influencesPerVertex ) {
-
-					var a = json.skinIndices[ i ];
-					var b = ( influencesPerVertex > 1 ) ? json.skinIndices[ i + 1 ] : 0;
-					var c = ( influencesPerVertex > 2 ) ? json.skinIndices[ i + 2 ] : 0;
-					var d = ( influencesPerVertex > 3 ) ? json.skinIndices[ i + 3 ] : 0;
-
-					geometry.skinIndices.push( new Vector4( a, b, c, d ) );
-
-				}
-
-			}
-
-			geometry.bones = json.bones;
-
-			if ( geometry.bones && geometry.bones.length > 0 && ( geometry.skinWeights.length !== geometry.skinIndices.length || geometry.skinIndices.length !== geometry.vertices.length ) ) {
-
-				console.warn( 'When skinning, number of vertices (' + geometry.vertices.length + '), skinIndices (' +
-					geometry.skinIndices.length + '), and skinWeights (' + geometry.skinWeights.length + ') should match.' );
-
-			}
-
-		}
-
-		function parseMorphing( json, geometry ) {
-
-			var scale = json.scale;
-
-			if ( json.morphTargets !== undefined ) {
-
-				for ( var i = 0, l = json.morphTargets.length; i < l; i ++ ) {
-
-					geometry.morphTargets[ i ] = {};
-					geometry.morphTargets[ i ].name = json.morphTargets[ i ].name;
-					geometry.morphTargets[ i ].vertices = [];
-
-					var dstVertices = geometry.morphTargets[ i ].vertices;
-					var srcVertices = json.morphTargets[ i ].vertices;
-
-					for ( var v = 0, vl = srcVertices.length; v < vl; v += 3 ) {
-
-						var vertex = new Vector3();
-						vertex.x = srcVertices[ v ] * scale;
-						vertex.y = srcVertices[ v + 1 ] * scale;
-						vertex.z = srcVertices[ v + 2 ] * scale;
-
-						dstVertices.push( vertex );
-
-					}
-
-				}
-
-			}
-
-			if ( json.morphColors !== undefined && json.morphColors.length > 0 ) {
-
-				console.warn( 'THREE.JSONLoader: "morphColors" no longer supported. Using them as face colors.' );
-
-				var faces = geometry.faces;
-				var morphColors = json.morphColors[ 0 ].colors;
-
-				for ( var i = 0, l = faces.length; i < l; i ++ ) {
-
-					faces[ i ].color.fromArray( morphColors, i * 3 );
-
-				}
-
-			}
-
-		}
-
-		function parseAnimations( json, geometry ) {
-
-			var outputAnimations = [];
-
-			// parse old style Bone/Hierarchy animations
-			var animations = [];
-
-			if ( json.animation !== undefined ) {
-
-				animations.push( json.animation );
-
-			}
-
-			if ( json.animations !== undefined ) {
-
-				if ( json.animations.length ) {
-
-					animations = animations.concat( json.animations );
-
-				} else {
-
-					animations.push( json.animations );
-
-				}
-
-			}
-
-			for ( var i = 0; i < animations.length; i ++ ) {
-
-				var clip = AnimationClip.parseAnimation( animations[ i ], geometry.bones );
-				if ( clip ) outputAnimations.push( clip );
-
-			}
-
-			// parse implicit morph animations
-			if ( geometry.morphTargets ) {
-
-				// TODO: Figure out what an appropraite FPS is for morph target animations -- defaulting to 10, but really it is completely arbitrary.
-				var morphAnimationClips = AnimationClip.CreateClipsFromMorphTargetSequences( geometry.morphTargets, 10 );
-				outputAnimations = outputAnimations.concat( morphAnimationClips );
-
-			}
-
-			if ( outputAnimations.length > 0 ) geometry.animations = outputAnimations;
-
-		}
-
-		return function parse( json, path ) {
-
-			if ( json.data !== undefined ) {
-
-				// Geometry 4.0 spec
-				json = json.data;
-
-			}
-
-			if ( json.scale !== undefined ) {
-
-				json.scale = 1.0 / json.scale;
-
-			} else {
-
-				json.scale = 1.0;
-
-			}
-
-			var geometry = new Geometry();
-
-			parseModel( json, geometry );
-			parseSkin( json, geometry );
-			parseMorphing( json, geometry );
-			parseAnimations( json, geometry );
-
-			geometry.computeFaceNormals();
-			geometry.computeBoundingSphere();
-
-			if ( json.materials === undefined || json.materials.length === 0 ) {
-
-				return { geometry: geometry };
-
-			} else {
-
-				var materials = Loader.prototype.initMaterials( json.materials, this.resourcePath || path, this.crossOrigin );
-
-				return { geometry: geometry, materials: materials };
-
-			}
-
-		};
-
-	} )()
-
-} );
-
-
-export { JSONLoader };

+ 2 - 4
src/loaders/ObjectLoader.js

@@ -50,7 +50,6 @@ import { AnimationClip } from '../animation/AnimationClip.js';
 import { MaterialLoader } from './MaterialLoader.js';
 import { MaterialLoader } from './MaterialLoader.js';
 import { LoaderUtils } from './LoaderUtils.js';
 import { LoaderUtils } from './LoaderUtils.js';
 import { BufferGeometryLoader } from './BufferGeometryLoader.js';
 import { BufferGeometryLoader } from './BufferGeometryLoader.js';
-import { JSONLoader } from './JSONLoader.js';
 import { FileLoader } from './FileLoader.js';
 import { FileLoader } from './FileLoader.js';
 import * as Geometries from '../geometries/Geometries.js';
 import * as Geometries from '../geometries/Geometries.js';
 import * as Curves from '../extras/curves/Curves.js';
 import * as Curves from '../extras/curves/Curves.js';
@@ -101,7 +100,7 @@ Object.assign( ObjectLoader.prototype, {
 
 
 			if ( metadata === undefined || metadata.type === undefined || metadata.type.toLowerCase() === 'geometry' ) {
 			if ( metadata === undefined || metadata.type === undefined || metadata.type.toLowerCase() === 'geometry' ) {
 
 
-				console.error( 'THREE.ObjectLoader: Can\'t load ' + url + '. Use THREE.JSONLoader instead.' );
+				console.error( 'THREE.ObjectLoader: Can\'t load ' + url );
 				return;
 				return;
 
 
 			}
 			}
@@ -191,7 +190,6 @@ Object.assign( ObjectLoader.prototype, {
 
 
 		if ( json !== undefined ) {
 		if ( json !== undefined ) {
 
 
-			var geometryLoader = new JSONLoader();
 			var bufferGeometryLoader = new BufferGeometryLoader();
 			var bufferGeometryLoader = new BufferGeometryLoader();
 
 
 			for ( var i = 0, l = json.length; i < l; i ++ ) {
 			for ( var i = 0, l = json.length; i < l; i ++ ) {
@@ -424,7 +422,7 @@ Object.assign( ObjectLoader.prototype, {
 
 
 					case 'Geometry':
 					case 'Geometry':
 
 
-						geometry = geometryLoader.parse( data, this.resourcePath ).geometry;
+						console.error( 'THREE.ObjectLoader: "Geometry" is no longer supported.' );
 
 
 						break;
 						break;
 
 

+ 0 - 1
test/three.source.unit.js

@@ -161,7 +161,6 @@ import './unit/src/loaders/DataTextureLoader.tests';
 import './unit/src/loaders/FileLoader.tests';
 import './unit/src/loaders/FileLoader.tests';
 import './unit/src/loaders/FontLoader.tests';
 import './unit/src/loaders/FontLoader.tests';
 import './unit/src/loaders/ImageLoader.tests';
 import './unit/src/loaders/ImageLoader.tests';
-import './unit/src/loaders/JSONLoader.tests';
 import './unit/src/loaders/Loader.tests';
 import './unit/src/loaders/Loader.tests';
 import './unit/src/loaders/LoaderUtils.tests';
 import './unit/src/loaders/LoaderUtils.tests';
 import './unit/src/loaders/LoadingManager.tests';
 import './unit/src/loaders/LoadingManager.tests';

+ 0 - 46
test/unit/src/geometries/BoxGeometry.tests.js

@@ -6,57 +6,11 @@
 
 
 import { runStdGeometryTests } from '../../qunit-utils';
 import { runStdGeometryTests } from '../../qunit-utils';
 import {
 import {
-	BoxGeometry,
 	BoxBufferGeometry
 	BoxBufferGeometry
 } from '../../../../src/geometries/BoxGeometry';
 } from '../../../../src/geometries/BoxGeometry';
 
 
 export default QUnit.module( 'Geometries', () => {
 export default QUnit.module( 'Geometries', () => {
 
 
-	QUnit.module( 'BoxGeometry', ( hooks ) => {
-
-		var geometries = undefined;
-		hooks.beforeEach( function () {
-
-			const parameters = {
-				width: 10,
-				height: 20,
-				depth: 30,
-				widthSegments: 2,
-				heightSegments: 3,
-				depthSegments: 4
-			};
-
-			geometries = [
-				new BoxGeometry(),
-				new BoxGeometry( parameters.width, parameters.height, parameters.depth ),
-				new BoxGeometry( parameters.width, parameters.height, parameters.depth, parameters.widthSegments, parameters.heightSegments, parameters.depthSegments )
-			];
-
-		} );
-
-		// INHERITANCE
-		QUnit.todo( "Extending", ( assert ) => {
-
-			assert.ok( false, "everything's gonna be alright" );
-
-		} );
-
-		// INSTANCING
-		QUnit.todo( "Instancing", ( assert ) => {
-
-			assert.ok( false, "everything's gonna be alright" );
-
-		} );
-
-		// OTHERS
-		QUnit.test( 'Standard geometry tests', ( assert ) => {
-
-			runStdGeometryTests( assert, geometries );
-
-		} );
-
-	} );
-
 	QUnit.module( 'BoxBufferGeometry', ( hooks ) => {
 	QUnit.module( 'BoxBufferGeometry', ( hooks ) => {
 
 
 		var geometries = undefined;
 		var geometries = undefined;

+ 0 - 46
test/unit/src/geometries/CircleGeometry.tests.js

@@ -6,57 +6,11 @@
 
 
 import { runStdGeometryTests } from '../../qunit-utils';
 import { runStdGeometryTests } from '../../qunit-utils';
 import {
 import {
-	CircleGeometry,
 	CircleBufferGeometry
 	CircleBufferGeometry
 } from '../../../../src/geometries/CircleGeometry';
 } from '../../../../src/geometries/CircleGeometry';
 
 
 export default QUnit.module( 'Geometries', () => {
 export default QUnit.module( 'Geometries', () => {
 
 
-	QUnit.module( 'CircleGeometry', ( hooks ) => {
-
-		var geometries = undefined;
-		hooks.beforeEach( function () {
-
-			const parameters = {
-				radius: 10,
-				segments: 20,
-				thetaStart: 0.1,
-				thetaLength: 0.2
-			};
-
-			geometries = [
-				new CircleGeometry(),
-				new CircleGeometry( parameters.radius ),
-				new CircleGeometry( parameters.radius, parameters.segments ),
-				new CircleGeometry( parameters.radius, parameters.segments, parameters.thetaStart ),
-				new CircleGeometry( parameters.radius, parameters.segments, parameters.thetaStart, parameters.thetaLength ),
-			];
-
-		} );
-
-		// INHERITANCE
-		QUnit.todo( "Extending", ( assert ) => {
-
-			assert.ok( false, "everything's gonna be alright" );
-
-		} );
-
-		// INSTANCING
-		QUnit.todo( "Instancing", ( assert ) => {
-
-			assert.ok( false, "everything's gonna be alright" );
-
-		} );
-
-		// OTHERS
-		QUnit.test( 'Standard geometry tests', ( assert ) => {
-
-			runStdGeometryTests( assert, geometries );
-
-		} );
-
-	} );
-
 	QUnit.module( 'CircleBufferGeometry', ( hooks ) => {
 	QUnit.module( 'CircleBufferGeometry', ( hooks ) => {
 
 
 		var geometries = undefined;
 		var geometries = undefined;

+ 0 - 35
test/unit/src/geometries/ConeGeometry.tests.js

@@ -5,46 +5,11 @@
 
 
 import { runStdGeometryTests } from '../../qunit-utils';
 import { runStdGeometryTests } from '../../qunit-utils';
 import {
 import {
-	ConeGeometry,
 	ConeBufferGeometry
 	ConeBufferGeometry
 } from '../../../../src/geometries/ConeGeometry';
 } from '../../../../src/geometries/ConeGeometry';
 
 
 export default QUnit.module( 'Geometries', () => {
 export default QUnit.module( 'Geometries', () => {
 
 
-	QUnit.module( 'ConeGeometry', ( hooks ) => {
-
-		var geometries = undefined;
-		hooks.beforeEach( function () {
-
-			geometries = [
-				new ConeGeometry()
-			];
-
-		} );
-
-		// INHERITANCE
-		QUnit.todo( "Extending", ( assert ) => {
-
-			assert.ok( false, "everything's gonna be alright" );
-
-		} );
-
-		// INSTANCING
-		QUnit.todo( "Instancing", ( assert ) => {
-
-			assert.ok( false, "everything's gonna be alright" );
-
-		} );
-
-		// OTHERS
-		QUnit.test( 'Standard geometry tests', ( assert ) => {
-
-			runStdGeometryTests( assert, geometries );
-
-		} );
-
-	} );
-
 	QUnit.module( 'ConeBufferGeometry', ( hooks ) => {
 	QUnit.module( 'ConeBufferGeometry', ( hooks ) => {
 
 
 		var geometries = undefined;
 		var geometries = undefined;

+ 0 - 54
test/unit/src/geometries/CylinderGeometry.tests.js

@@ -6,65 +6,11 @@
 
 
 import { runStdGeometryTests } from '../../qunit-utils';
 import { runStdGeometryTests } from '../../qunit-utils';
 import {
 import {
-	CylinderGeometry,
 	CylinderBufferGeometry
 	CylinderBufferGeometry
 } from '../../../../src/geometries/CylinderGeometry';
 } from '../../../../src/geometries/CylinderGeometry';
 
 
 export default QUnit.module( 'Geometries', () => {
 export default QUnit.module( 'Geometries', () => {
 
 
-	QUnit.module( 'CylinderGeometry', ( hooks ) => {
-
-		var geometries = undefined;
-		hooks.beforeEach( function () {
-
-			const parameters = {
-				radiusTop: 10,
-				radiusBottom: 20,
-				height: 30,
-				radialSegments: 20,
-				heightSegments: 30,
-				openEnded: true,
-				thetaStart: 0.1,
-				thetaLength: 2.0,
-			};
-
-			geometries = [
-				new CylinderGeometry(),
-				new CylinderGeometry( parameters.radiusTop ),
-				new CylinderGeometry( parameters.radiusTop, parameters.radiusBottom ),
-				new CylinderGeometry( parameters.radiusTop, parameters.radiusBottom, parameters.height ),
-				new CylinderGeometry( parameters.radiusTop, parameters.radiusBottom, parameters.height, parameters.radialSegments ),
-				new CylinderGeometry( parameters.radiusTop, parameters.radiusBottom, parameters.height, parameters.radialSegments, parameters.heightSegments ),
-				new CylinderGeometry( parameters.radiusTop, parameters.radiusBottom, parameters.height, parameters.radialSegments, parameters.heightSegments, parameters.openEnded ),
-				new CylinderGeometry( parameters.radiusTop, parameters.radiusBottom, parameters.height, parameters.radialSegments, parameters.heightSegments, parameters.openEnded, parameters.thetaStart ),
-				new CylinderGeometry( parameters.radiusTop, parameters.radiusBottom, parameters.height, parameters.radialSegments, parameters.heightSegments, parameters.openEnded, parameters.thetaStart, parameters.thetaLength ),
-			];
-
-		} );
-
-		// INHERITANCE
-		QUnit.todo( "Extending", ( assert ) => {
-
-			assert.ok( false, "everything's gonna be alright" );
-
-		} );
-
-		// INSTANCING
-		QUnit.todo( "Instancing", ( assert ) => {
-
-			assert.ok( false, "everything's gonna be alright" );
-
-		} );
-
-		// OTHERS
-		QUnit.test( 'Standard geometry tests', ( assert ) => {
-
-			runStdGeometryTests( assert, geometries );
-
-		} );
-
-	} );
-
 	QUnit.module( 'CylinderBufferGeometry', ( hooks ) => {
 	QUnit.module( 'CylinderBufferGeometry', ( hooks ) => {
 
 
 		var geometries = undefined;
 		var geometries = undefined;

+ 0 - 42
test/unit/src/geometries/DodecahedronGeometry.tests.js

@@ -6,53 +6,11 @@
 
 
 import { runStdGeometryTests } from '../../qunit-utils';
 import { runStdGeometryTests } from '../../qunit-utils';
 import {
 import {
-	DodecahedronGeometry,
 	DodecahedronBufferGeometry
 	DodecahedronBufferGeometry
 } from '../../../../src/geometries/DodecahedronGeometry';
 } from '../../../../src/geometries/DodecahedronGeometry';
 
 
 export default QUnit.module( 'Geometries', () => {
 export default QUnit.module( 'Geometries', () => {
 
 
-	QUnit.module( 'CircleGeometry', ( hooks ) => {
-
-		var geometries = undefined;
-		hooks.beforeEach( function () {
-
-			const parameters = {
-				radius: 10,
-				detail: undefined
-			};
-
-			geometries = [
-				new DodecahedronGeometry(),
-				new DodecahedronGeometry( parameters.radius ),
-				new DodecahedronGeometry( parameters.radius, parameters.detail ),
-			];
-
-		} );
-
-		// INHERITANCE
-		QUnit.todo( "Extending", ( assert ) => {
-
-			assert.ok( false, "everything's gonna be alright" );
-
-		} );
-
-		// INSTANCING
-		QUnit.todo( "Instancing", ( assert ) => {
-
-			assert.ok( false, "everything's gonna be alright" );
-
-		} );
-
-		// OTHERS
-		QUnit.test( 'Standard geometry tests', ( assert ) => {
-
-			runStdGeometryTests( assert, geometries );
-
-		} );
-
-	} );
-
 	QUnit.module( 'CircleBufferGeometry', ( hooks ) => {
 	QUnit.module( 'CircleBufferGeometry', ( hooks ) => {
 
 
 		var geometries = undefined;
 		var geometries = undefined;

+ 1 - 19
test/unit/src/geometries/ExtrudeGeometry.tests.js

@@ -3,28 +3,10 @@
  */
  */
 /* global QUnit */
 /* global QUnit */
 
 
-import { ExtrudeGeometry, ExtrudeBufferGeometry } from '../../../../src/geometries/ExtrudeGeometry';
+import { ExtrudeBufferGeometry } from '../../../../src/geometries/ExtrudeGeometry';
 
 
 export default QUnit.module( 'Geometries', () => {
 export default QUnit.module( 'Geometries', () => {
 
 
-	QUnit.module( 'ExtrudeGeometry', () => {
-
-		// INHERITANCE
-		QUnit.todo( "Extending", ( assert ) => {
-
-			assert.ok( false, "everything's gonna be alright" );
-
-		} );
-
-		// INSTANCING
-		QUnit.todo( "Instancing", ( assert ) => {
-
-			assert.ok( false, "everything's gonna be alright" );
-
-		} );
-
-	} );
-
 	QUnit.module( 'ExtrudeBufferGeometry', () => {
 	QUnit.module( 'ExtrudeBufferGeometry', () => {
 
 
 		// INHERITANCE
 		// INHERITANCE

+ 0 - 42
test/unit/src/geometries/IcosahedronGeometry.tests.js

@@ -6,53 +6,11 @@
 
 
 import { runStdGeometryTests } from '../../qunit-utils';
 import { runStdGeometryTests } from '../../qunit-utils';
 import {
 import {
-	IcosahedronGeometry,
 	IcosahedronBufferGeometry
 	IcosahedronBufferGeometry
 } from '../../../../src/geometries/IcosahedronGeometry';
 } from '../../../../src/geometries/IcosahedronGeometry';
 
 
 export default QUnit.module( 'Geometries', () => {
 export default QUnit.module( 'Geometries', () => {
 
 
-	QUnit.module( 'IcosahedronGeometry', ( hooks ) => {
-
-		var geometries = undefined;
-		hooks.beforeEach( function () {
-
-			const parameters = {
-				radius: 10,
-				detail: undefined
-			};
-
-			geometries = [
-				new IcosahedronGeometry(),
-				new IcosahedronGeometry( parameters.radius ),
-				new IcosahedronGeometry( parameters.radius, parameters.detail ),
-			];
-
-		} );
-
-		// INHERITANCE
-		QUnit.todo( "Extending", ( assert ) => {
-
-			assert.ok( false, "everything's gonna be alright" );
-
-		} );
-
-		// INSTANCING
-		QUnit.todo( "Instancing", ( assert ) => {
-
-			assert.ok( false, "everything's gonna be alright" );
-
-		} );
-
-		// OTHERS
-		QUnit.test( 'Standard geometry tests', ( assert ) => {
-
-			runStdGeometryTests( assert, geometries );
-
-		} );
-
-	} );
-
 	QUnit.module( 'IcosahedronBufferGeometry', ( hooks ) => {
 	QUnit.module( 'IcosahedronBufferGeometry', ( hooks ) => {
 
 
 		var geometries = undefined;
 		var geometries = undefined;

+ 0 - 43
test/unit/src/geometries/LatheGeometry.tests.js

@@ -5,54 +5,11 @@
 
 
 import { runStdGeometryTests } from '../../qunit-utils';
 import { runStdGeometryTests } from '../../qunit-utils';
 import {
 import {
-	LatheGeometry,
 	LatheBufferGeometry
 	LatheBufferGeometry
 } from '../../../../src/geometries/LatheGeometry';
 } from '../../../../src/geometries/LatheGeometry';
 
 
 export default QUnit.module( 'Geometries', () => {
 export default QUnit.module( 'Geometries', () => {
 
 
-	QUnit.module( 'LatheGeometry', ( hooks ) => {
-
-		var geometries = undefined;
-		hooks.beforeEach( function () {
-
-			const parameters = {
-				points: [],
-				segments: 0,
-				phiStart: 0,
-				phiLength: 0
-			};
-
-			geometries = [
-				//				new LatheGeometry(), // Todo: error for undefined point
-				new LatheGeometry( parameters.points )
-			];
-
-		} );
-
-		// INHERITANCE
-		QUnit.todo( "Extending", ( assert ) => {
-
-			assert.ok( false, "everything's gonna be alright" );
-
-		} );
-
-		// INSTANCING
-		QUnit.todo( "Instancing", ( assert ) => {
-
-			assert.ok( false, "everything's gonna be alright" );
-
-		} );
-
-		// OTHERS
-		QUnit.test( 'Standard geometry tests', ( assert ) => {
-
-			runStdGeometryTests( assert, geometries );
-
-		} );
-
-	} );
-
 	QUnit.module( 'LatheBufferGeometry', ( hooks ) => {
 	QUnit.module( 'LatheBufferGeometry', ( hooks ) => {
 
 
 		var geometries = undefined;
 		var geometries = undefined;

+ 0 - 42
test/unit/src/geometries/OctahedronGeometry.tests.js

@@ -6,53 +6,11 @@
 
 
 import { runStdGeometryTests } from '../../qunit-utils';
 import { runStdGeometryTests } from '../../qunit-utils';
 import {
 import {
-	OctahedronGeometry,
 	OctahedronBufferGeometry
 	OctahedronBufferGeometry
 } from '../../../../src/geometries/OctahedronGeometry';
 } from '../../../../src/geometries/OctahedronGeometry';
 
 
 export default QUnit.module( 'Geometries', () => {
 export default QUnit.module( 'Geometries', () => {
 
 
-	QUnit.module( 'OctahedronGeometry', ( hooks ) => {
-
-		var geometries = undefined;
-		hooks.beforeEach( function () {
-
-			const parameters = {
-				radius: 10,
-				detail: undefined
-			};
-
-			geometries = [
-				new OctahedronGeometry(),
-				new OctahedronGeometry( parameters.radius ),
-				new OctahedronGeometry( parameters.radius, parameters.detail ),
-			];
-
-		} );
-
-		// INHERITANCE
-		QUnit.todo( "Extending", ( assert ) => {
-
-			assert.ok( false, "everything's gonna be alright" );
-
-		} );
-
-		// INSTANCING
-		QUnit.todo( "Instancing", ( assert ) => {
-
-			assert.ok( false, "everything's gonna be alright" );
-
-		} );
-
-		// OTHERS
-		QUnit.test( 'Standard geometry tests', ( assert ) => {
-
-			runStdGeometryTests( assert, geometries );
-
-		} );
-
-	} );
-
 	QUnit.module( 'OctahedronBufferGeometry', ( hooks ) => {
 	QUnit.module( 'OctahedronBufferGeometry', ( hooks ) => {
 
 
 		var geometries = undefined;
 		var geometries = undefined;

+ 0 - 35
test/unit/src/geometries/ParametricGeometry.tests.js

@@ -4,46 +4,11 @@
 /* global QUnit */
 /* global QUnit */
 
 
 import {
 import {
-	ParametricGeometry,
 	ParametricBufferGeometry
 	ParametricBufferGeometry
 } from '../../../../src/geometries/ParametricGeometry';
 } from '../../../../src/geometries/ParametricGeometry';
 
 
 export default QUnit.module( 'Geometries', () => {
 export default QUnit.module( 'Geometries', () => {
 
 
-	QUnit.module( 'ParametricGeometry', ( hooks ) => {
-
-		var geometries = undefined;
-		hooks.beforeEach( function () {
-
-			geometries = [
-				new ParametricGeometry()
-			];
-
-		} );
-
-		// INHERITANCE
-		QUnit.todo( "Extending", ( assert ) => {
-
-			assert.ok( false, "everything's gonna be alright" );
-
-		} );
-
-		// INSTANCING
-		QUnit.todo( "Instancing", ( assert ) => {
-
-			assert.ok( false, "everything's gonna be alright" );
-
-		} );
-
-		// OTHERS
-		QUnit.todo( 'Standard geometry tests', ( assert ) => {
-
-			assert.ok( false, "everything's gonna be alright" );
-
-		} );
-
-	} );
-
 	QUnit.module( 'ParametricBufferGeometry', ( hooks ) => {
 	QUnit.module( 'ParametricBufferGeometry', ( hooks ) => {
 
 
 		var geometries = undefined;
 		var geometries = undefined;

+ 0 - 46
test/unit/src/geometries/PlaneGeometry.tests.js

@@ -6,57 +6,11 @@
 
 
 import { runStdGeometryTests } from '../../qunit-utils';
 import { runStdGeometryTests } from '../../qunit-utils';
 import {
 import {
-	PlaneGeometry,
 	PlaneBufferGeometry
 	PlaneBufferGeometry
 } from '../../../../src/geometries/PlaneGeometry';
 } from '../../../../src/geometries/PlaneGeometry';
 
 
 export default QUnit.module( 'Geometries', () => {
 export default QUnit.module( 'Geometries', () => {
 
 
-	QUnit.module( 'PlaneGeometry', ( hooks ) => {
-
-		var geometries = undefined;
-		hooks.beforeEach( function () {
-
-			const parameters = {
-				width: 10,
-				height: 30,
-				widthSegments: 3,
-				heightSegments: 5
-			};
-
-			geometries = [
-				new PlaneGeometry(),
-				new PlaneGeometry( parameters.width ),
-				new PlaneGeometry( parameters.width, parameters.height ),
-				new PlaneGeometry( parameters.width, parameters.height, parameters.widthSegments ),
-				new PlaneGeometry( parameters.width, parameters.height, parameters.widthSegments, parameters.heightSegments ),
-			];
-
-		} );
-
-		// INHERITANCE
-		QUnit.todo( "Extending", ( assert ) => {
-
-			assert.ok( false, "everything's gonna be alright" );
-
-		} );
-
-		// INSTANCING
-		QUnit.todo( "Instancing", ( assert ) => {
-
-			assert.ok( false, "everything's gonna be alright" );
-
-		} );
-
-		// OTHERS
-		QUnit.test( 'Standard geometry tests', ( assert ) => {
-
-			runStdGeometryTests( assert, geometries );
-
-		} );
-
-	} );
-
 	QUnit.module( 'PlaneBufferGeometry', ( hooks ) => {
 	QUnit.module( 'PlaneBufferGeometry', ( hooks ) => {
 
 
 		var geometries = undefined;
 		var geometries = undefined;

+ 0 - 43
test/unit/src/geometries/PolyhedronGeometry.tests.js

@@ -5,54 +5,11 @@
 
 
 import { runStdGeometryTests } from '../../qunit-utils';
 import { runStdGeometryTests } from '../../qunit-utils';
 import {
 import {
-	PolyhedronGeometry,
 	PolyhedronBufferGeometry
 	PolyhedronBufferGeometry
 } from '../../../../src/geometries/PolyhedronGeometry';
 } from '../../../../src/geometries/PolyhedronGeometry';
 
 
 export default QUnit.module( 'Geometries', () => {
 export default QUnit.module( 'Geometries', () => {
 
 
-	QUnit.module( 'PolyhedronGeometry', ( hooks ) => {
-
-		var geometries = undefined;
-		hooks.beforeEach( function () {
-
-			var vertices = [
-				1, 1, 1, 	- 1, - 1, 1, 	- 1, 1, - 1, 	1, - 1, - 1
-			];
-
-			var indices = [
-				2, 1, 0, 	0, 3, 2,	1, 3, 0,	2, 3, 1
-			];
-
-			geometries = [
-				new PolyhedronGeometry( vertices, indices )
-			];
-
-		} );
-
-		// INHERITANCE
-		QUnit.todo( "Extending", ( assert ) => {
-
-			assert.ok( false, "everything's gonna be alright" );
-
-		} );
-
-		// INSTANCING
-		QUnit.todo( "Instancing", ( assert ) => {
-
-			assert.ok( false, "everything's gonna be alright" );
-
-		} );
-
-		// OTHERS
-		QUnit.test( 'Standard geometry tests', ( assert ) => {
-
-			runStdGeometryTests( assert, geometries );
-
-		} );
-
-	} );
-
 	QUnit.module( 'PolyhedronBufferGeometry', ( hooks ) => {
 	QUnit.module( 'PolyhedronBufferGeometry', ( hooks ) => {
 
 
 		var geometries = undefined;
 		var geometries = undefined;

+ 0 - 50
test/unit/src/geometries/RingGeometry.tests.js

@@ -6,61 +6,11 @@
 
 
 import { runStdGeometryTests } from '../../qunit-utils';
 import { runStdGeometryTests } from '../../qunit-utils';
 import {
 import {
-	RingGeometry,
 	RingBufferGeometry
 	RingBufferGeometry
 } from '../../../../src/geometries/RingGeometry';
 } from '../../../../src/geometries/RingGeometry';
 
 
 export default QUnit.module( 'Geometries', () => {
 export default QUnit.module( 'Geometries', () => {
 
 
-	QUnit.module( 'RingGeometry', ( hooks ) => {
-
-		var geometries = undefined;
-		hooks.beforeEach( function () {
-
-			const parameters = {
-				innerRadius: 10,
-				outerRadius: 60,
-				thetaSegments: 12,
-				phiSegments: 14,
-				thetaStart: 0.1,
-				thetaLength: 2.0
-			};
-
-			geometries = [
-				new RingGeometry(),
-				new RingGeometry( parameters.innerRadius ),
-				new RingGeometry( parameters.innerRadius, parameters.outerRadius ),
-				new RingGeometry( parameters.innerRadius, parameters.outerRadius, parameters.thetaSegments ),
-				new RingGeometry( parameters.innerRadius, parameters.outerRadius, parameters.thetaSegments, parameters.phiSegments ),
-				new RingGeometry( parameters.innerRadius, parameters.outerRadius, parameters.thetaSegments, parameters.phiSegments, parameters.thetaStart ),
-				new RingGeometry( parameters.innerRadius, parameters.outerRadius, parameters.thetaSegments, parameters.phiSegments, parameters.thetaStart, parameters.thetaLength ),
-			];
-
-		} );
-
-		// INHERITANCE
-		QUnit.todo( "Extending", ( assert ) => {
-
-			assert.ok( false, "everything's gonna be alright" );
-
-		} );
-
-		// INSTANCING
-		QUnit.todo( "Instancing", ( assert ) => {
-
-			assert.ok( false, "everything's gonna be alright" );
-
-		} );
-
-		// OTHERS
-		QUnit.test( 'Standard geometry tests', ( assert ) => {
-
-			runStdGeometryTests( assert, geometries );
-
-		} );
-
-	} );
-
 	QUnit.module( 'RingBufferGeometry', ( hooks ) => {
 	QUnit.module( 'RingBufferGeometry', ( hooks ) => {
 
 
 		var geometries = undefined;
 		var geometries = undefined;

+ 0 - 40
test/unit/src/geometries/ShapeGeometry.tests.js

@@ -4,7 +4,6 @@
 /* global QUnit */
 /* global QUnit */
 
 
 import {
 import {
-	ShapeGeometry,
 	ShapeBufferGeometry
 	ShapeBufferGeometry
 } from '../../../../src/geometries/ShapeGeometry';
 } from '../../../../src/geometries/ShapeGeometry';
 
 
@@ -12,45 +11,6 @@ import { Shape } from '../../../../src/extras/core/Shape';
 
 
 export default QUnit.module( 'Geometries', () => {
 export default QUnit.module( 'Geometries', () => {
 
 
-	QUnit.module( 'ShapeGeometry', ( hooks ) => {
-
-		var geometries = undefined;
-		hooks.beforeEach( function () {
-
-			var triangleShape = new Shape();
-			triangleShape.moveTo( 0, - 1 );
-			triangleShape.lineTo( 1, 1 );
-			triangleShape.lineTo( - 1, 1 );
-
-			geometries = [
-				new ShapeGeometry( triangleShape )
-			];
-
-		} );
-
-		// INHERITANCE
-		QUnit.todo( "Extending", ( assert ) => {
-
-			assert.ok( false, "everything's gonna be alright" );
-
-		} );
-
-		// INSTANCING
-		QUnit.todo( "Instancing", ( assert ) => {
-
-			assert.ok( false, "everything's gonna be alright" );
-
-		} );
-
-		// OTHERS
-		QUnit.todo( 'Standard geometry tests', ( assert ) => {
-
-			assert.ok( false, "everything's gonna be alright" );
-
-		} );
-
-	} );
-
 	QUnit.module( 'ShapeBufferGeometry', ( hooks ) => {
 	QUnit.module( 'ShapeBufferGeometry', ( hooks ) => {
 
 
 		var geometries = undefined;
 		var geometries = undefined;

+ 0 - 52
test/unit/src/geometries/SphereGeometry.tests.js

@@ -6,63 +6,11 @@
 
 
 import { runStdGeometryTests } from '../../qunit-utils';
 import { runStdGeometryTests } from '../../qunit-utils';
 import {
 import {
-	SphereGeometry,
 	SphereBufferGeometry
 	SphereBufferGeometry
 } from '../../../../src/geometries/SphereGeometry';
 } from '../../../../src/geometries/SphereGeometry';
 
 
 export default QUnit.module( 'Geometries', () => {
 export default QUnit.module( 'Geometries', () => {
 
 
-	QUnit.module( 'SphereGeometry', ( hooks ) => {
-
-		var geometries = undefined;
-		hooks.beforeEach( function () {
-
-			const parameters = {
-				radius: 10,
-				widthSegments: 20,
-				heightSegments: 30,
-				phiStart: 0.5,
-				phiLength: 1.0,
-				thetaStart: 0.4,
-				thetaLength: 2.0,
-			};
-
-			geometries = [
-				new SphereGeometry(),
-				new SphereGeometry( parameters.radius ),
-				new SphereGeometry( parameters.radius, parameters.widthSegments ),
-				new SphereGeometry( parameters.radius, parameters.widthSegments, parameters.heightSegments ),
-				new SphereGeometry( parameters.radius, parameters.widthSegments, parameters.heightSegments, parameters.phiStart ),
-				new SphereGeometry( parameters.radius, parameters.widthSegments, parameters.heightSegments, parameters.phiStart, parameters.phiLength ),
-				new SphereGeometry( parameters.radius, parameters.widthSegments, parameters.heightSegments, parameters.phiStart, parameters.phiLength, parameters.thetaStart ),
-				new SphereGeometry( parameters.radius, parameters.widthSegments, parameters.heightSegments, parameters.phiStart, parameters.phiLength, parameters.thetaStart, parameters.thetaLength ),
-			];
-
-		} );
-
-		// INHERITANCE
-		QUnit.todo( "Extending", ( assert ) => {
-
-			assert.ok( false, "everything's gonna be alright" );
-
-		} );
-
-		// INSTANCING
-		QUnit.todo( "Instancing", ( assert ) => {
-
-			assert.ok( false, "everything's gonna be alright" );
-
-		} );
-
-		// OTHERS
-		QUnit.test( 'Standard geometry tests', ( assert ) => {
-
-			runStdGeometryTests( assert, geometries );
-
-		} );
-
-	} );
-
 	QUnit.module( 'SphereBufferGeometry', ( hooks ) => {
 	QUnit.module( 'SphereBufferGeometry', ( hooks ) => {
 
 
 		var geometries = undefined;
 		var geometries = undefined;

+ 3 - 4
test/unit/src/geometries/TetrahedronGeometry.tests.js

@@ -6,7 +6,6 @@
 
 
 import { runStdGeometryTests } from '../../qunit-utils';
 import { runStdGeometryTests } from '../../qunit-utils';
 import {
 import {
-	TetrahedronGeometry,
 	TetrahedronBufferGeometry
 	TetrahedronBufferGeometry
 } from '../../../../src/geometries/TetrahedronGeometry';
 } from '../../../../src/geometries/TetrahedronGeometry';
 
 
@@ -23,9 +22,9 @@ export default QUnit.module( 'Geometries', () => {
 			};
 			};
 
 
 			geometries = [
 			geometries = [
-				new TetrahedronGeometry(),
-				new TetrahedronGeometry( parameters.radius ),
-				new TetrahedronGeometry( parameters.radius, parameters.detail )
+				new TetrahedronBufferGeometry(),
+				new TetrahedronBufferGeometry( parameters.radius ),
+				new TetrahedronBufferGeometry( parameters.radius, parameters.detail )
 			];
 			];
 
 
 		} );
 		} );

+ 0 - 35
test/unit/src/geometries/TextGeometry.tests.js

@@ -4,46 +4,11 @@
 /* global QUnit */
 /* global QUnit */
 
 
 import {
 import {
-	TextGeometry,
 	TextBufferGeometry
 	TextBufferGeometry
 } from '../../../../src/geometries/TextGeometry';
 } from '../../../../src/geometries/TextGeometry';
 
 
 export default QUnit.module( 'Geometries', () => {
 export default QUnit.module( 'Geometries', () => {
 
 
-	QUnit.module( 'TextGeometry', ( hooks ) => {
-
-		var geometries = undefined;
-		hooks.beforeEach( function () {
-
-			geometries = [
-				new TextGeometry()
-			];
-
-		} );
-
-		// INHERITANCE
-		QUnit.todo( "Extending", ( assert ) => {
-
-			assert.ok( false, "everything's gonna be alright" );
-
-		} );
-
-		// INSTANCING
-		QUnit.todo( "Instancing", ( assert ) => {
-
-			assert.ok( false, "everything's gonna be alright" );
-
-		} );
-
-		// OTHERS
-		QUnit.todo( 'Standard geometry tests', ( assert ) => {
-
-			assert.ok( false, "everything's gonna be alright" );
-
-		} );
-
-	} );
-
 	QUnit.module( 'TextBufferGeometry', ( hooks ) => {
 	QUnit.module( 'TextBufferGeometry', ( hooks ) => {
 
 
 		var geometries = undefined;
 		var geometries = undefined;

+ 0 - 48
test/unit/src/geometries/TorusGeometry.tests.js

@@ -6,59 +6,11 @@
 
 
 import { runStdGeometryTests } from '../../qunit-utils';
 import { runStdGeometryTests } from '../../qunit-utils';
 import {
 import {
-	TorusGeometry,
 	TorusBufferGeometry
 	TorusBufferGeometry
 } from '../../../../src/geometries/TorusGeometry';
 } from '../../../../src/geometries/TorusGeometry';
 
 
 export default QUnit.module( 'Geometries', () => {
 export default QUnit.module( 'Geometries', () => {
 
 
-	QUnit.module( 'TorusGeometry', ( hooks ) => {
-
-		var geometries = undefined;
-		hooks.beforeEach( function () {
-
-			const parameters = {
-				radius: 10,
-				tube: 20,
-				radialSegments: 30,
-				tubularSegments: 10,
-				arc: 2.0,
-			};
-
-			geometries = [
-				new TorusGeometry(),
-				new TorusGeometry( parameters.radius ),
-				new TorusGeometry( parameters.radius, parameters.tube ),
-				new TorusGeometry( parameters.radius, parameters.tube, parameters.radialSegments ),
-				new TorusGeometry( parameters.radius, parameters.tube, parameters.radialSegments, parameters.tubularSegments ),
-				new TorusGeometry( parameters.radius, parameters.tube, parameters.radialSegments, parameters.tubularSegments, parameters.arc ),
-			];
-
-		} );
-
-		// INHERITANCE
-		QUnit.todo( "Extending", ( assert ) => {
-
-			assert.ok( false, "everything's gonna be alright" );
-
-		} );
-
-		// INSTANCING
-		QUnit.todo( "Instancing", ( assert ) => {
-
-			assert.ok( false, "everything's gonna be alright" );
-
-		} );
-
-		// OTHERS
-		QUnit.test( 'Standard geometry tests', ( assert ) => {
-
-			runStdGeometryTests( assert, geometries );
-
-		} );
-
-	} );
-
 	QUnit.module( 'TorusBufferGeometry', ( hooks ) => {
 	QUnit.module( 'TorusBufferGeometry', ( hooks ) => {
 
 
 		var geometries = undefined;
 		var geometries = undefined;

+ 0 - 49
test/unit/src/geometries/TorusKnotGeometry.tests.js

@@ -6,60 +6,11 @@
 
 
 import { runStdGeometryTests } from '../../qunit-utils';
 import { runStdGeometryTests } from '../../qunit-utils';
 import {
 import {
-	TorusKnotGeometry,
 	TorusKnotBufferGeometry
 	TorusKnotBufferGeometry
 } from '../../../../src/geometries/TorusKnotGeometry';
 } from '../../../../src/geometries/TorusKnotGeometry';
 
 
 export default QUnit.module( 'Geometries', () => {
 export default QUnit.module( 'Geometries', () => {
 
 
-	QUnit.module( 'SphereGeometry', ( hooks ) => {
-
-		var geometries = undefined;
-		hooks.beforeEach( function () {
-
-			const parameters = {
-				radius: 10,
-				tube: 20,
-				tubularSegments: 30,
-				radialSegments: 10,
-				p: 3,
-				q: 2
-			};
-
-			geometries = [
-				new TorusKnotGeometry(),
-				new TorusKnotGeometry( parameters.radius ),
-				new TorusKnotGeometry( parameters.radius, parameters.tube ),
-				new TorusKnotGeometry( parameters.radius, parameters.tube, parameters.tubularSegments ),
-				new TorusKnotGeometry( parameters.radius, parameters.tube, parameters.tubularSegments, parameters.radialSegments ),
-				new TorusKnotGeometry( parameters.radius, parameters.tube, parameters.tubularSegments, parameters.radialSegments, parameters.p, parameters.q ),
-			];
-
-		} );
-
-		// INHERITANCE
-		QUnit.todo( "Extending", ( assert ) => {
-
-			assert.ok( false, "everything's gonna be alright" );
-
-		} );
-
-		// INSTANCING
-		QUnit.todo( "Instancing", ( assert ) => {
-
-			assert.ok( false, "everything's gonna be alright" );
-
-		} );
-
-		// OTHERS
-		QUnit.test( 'Standard geometry tests', ( assert ) => {
-
-			runStdGeometryTests( assert, geometries );
-
-		} );
-
-	} );
-
 	QUnit.module( 'TorusKnotBufferGeometry', ( hooks ) => {
 	QUnit.module( 'TorusKnotBufferGeometry', ( hooks ) => {
 
 
 		var geometries = undefined;
 		var geometries = undefined;

+ 0 - 37
test/unit/src/geometries/TubeGeometry.tests.js

@@ -4,7 +4,6 @@
 /* global QUnit */
 /* global QUnit */
 
 
 import {
 import {
-	TubeGeometry,
 	TubeBufferGeometry
 	TubeBufferGeometry
 } from '../../../../src/geometries/TubeGeometry';
 } from '../../../../src/geometries/TubeGeometry';
 
 
@@ -13,42 +12,6 @@ import { Vector3 } from '../../../../src/math/Vector3';
 
 
 export default QUnit.module( 'Geometries', () => {
 export default QUnit.module( 'Geometries', () => {
 
 
-	QUnit.module( 'TubeGeometry', ( hooks ) => {
-
-		var geometries = undefined;
-		hooks.beforeEach( function () {
-
-			var path = new LineCurve3( new Vector3( 0, 0, 0 ), new Vector3( 0, 1, 0 ) );
-
-			geometries = [
-				new TubeGeometry( path )
-			];
-
-		} );
-
-		// INHERITANCE
-		QUnit.todo( "Extending", ( assert ) => {
-
-			assert.ok( false, "everything's gonna be alright" );
-
-		} );
-
-		// INSTANCING
-		QUnit.todo( "Instancing", ( assert ) => {
-
-			assert.ok( false, "everything's gonna be alright" );
-
-		} );
-
-		// OTHERS
-		QUnit.todo( 'Standard geometry tests', ( assert ) => {
-
-			assert.ok( false, "everything's gonna be alright" );
-
-		} );
-
-	} );
-
 	QUnit.module( 'TubeBufferGeometry', ( hooks ) => {
 	QUnit.module( 'TubeBufferGeometry', ( hooks ) => {
 
 
 		var geometries = undefined;
 		var geometries = undefined;

+ 0 - 40
test/unit/src/loaders/JSONLoader.tests.js

@@ -1,40 +0,0 @@
-/**
- * @author TristanVALCKE / https://github.com/Itee
- */
-/* global QUnit */
-
-import { JSONLoader } from '../../../../src/loaders/JSONLoader';
-
-export default QUnit.module( 'Loaders', () => {
-
-	QUnit.module( 'JSONLoader', () => {
-
-		// INSTANCING
-		QUnit.todo( "Instancing", ( assert ) => {
-
-			assert.ok( false, "everything's gonna be alright" );
-
-		} );
-
-		// PUBLIC STUFF
-		QUnit.todo( "load", ( assert ) => {
-
-			assert.ok( false, "everything's gonna be alright" );
-
-		} );
-
-		QUnit.todo( "setTexturePath", ( assert ) => {
-
-			assert.ok( false, "everything's gonna be alright" );
-
-		} );
-
-		QUnit.todo( "parse", ( assert ) => {
-
-			assert.ok( false, "everything's gonna be alright" );
-
-		} );
-
-	} );
-
-} );

+ 1 - 1
utils/exporters/blender/README.md

@@ -1,3 +1,3 @@
 # Three.js Blender Export
 # Three.js Blender Export
 
 
-> **NOTICE:** The Blender exporter for the Three.js JSON format has been removed, to focus on better support for other workflows. For recommended alternatives, see [Loading 3D Models](https://threejs.org/docs/#manual/introduction/Loading-3D-models). The Three.js JSON format is still fully supported for use with [Object3D.toJSON](https://threejs.org/docs/#api/core/Object3D.toJSON), the [Editor](https://threejs.org/editor/), [THREE.ObjectLoader](https://threejs.org/docs/#api/loaders/ObjectLoader), [THREE.JSONLoader](https://threejs.org/docs/#api/loaders/JSONLoader), and [converters](https://github.com/mrdoob/three.js/tree/dev/utils/converters).
+> **NOTICE:** The Blender exporter for the Three.js JSON format has been removed, to focus on better support for other workflows. For recommended alternatives, see [Loading 3D Models](https://threejs.org/docs/#manual/introduction/Loading-3D-models). The Three.js Object/Scene JSON format is still fully supported for use with [Object3D.toJSON](https://threejs.org/docs/#api/core/Object3D.toJSON), the [Editor](https://threejs.org/editor/), [THREE.ObjectLoader](https://threejs.org/docs/#api/loaders/ObjectLoader) and [converters](https://github.com/mrdoob/three.js/tree/dev/utils/converters).