Browse Source

Merge pull request #1 from mrdoob/dev

Getting updates
Hassan Muhamad 5 years ago
parent
commit
08397c7ff9
100 changed files with 2062 additions and 1517 deletions
  1. 459 475
      build/three.js
  2. 97 602
      build/three.min.js
  3. 203 229
      build/three.module.js
  4. 1 1
      docs/api/en/renderers/WebGLCubeRenderTarget.html
  5. 2 2
      docs/api/en/renderers/WebGLRenderTarget.html
  6. 1 1
      docs/api/zh/renderers/WebGLCubeRenderTarget.html
  7. 2 2
      docs/api/zh/renderers/WebGLRenderTarget.html
  8. 6 0
      docs/index.html
  9. 3 1
      docs/list.js
  10. 2 13
      docs/manual/ar/introduction/Browser-support.html
  11. 2 11
      docs/manual/ar/introduction/Creating-a-scene.html
  12. 3 13
      docs/manual/ar/introduction/How-to-run-things-locally.html
  13. 3 12
      docs/manual/ar/introduction/Installation.html
  14. 2 11
      docs/manual/ar/introduction/Typescript-setup.html
  15. 2 11
      docs/manual/ar/introduction/WebGL-compatibility-check.html
  16. 10 0
      docs/page.css
  17. 21 1
      examples/css3d_orthographic.html
  18. 14 0
      examples/css3d_sandbox.html
  19. 0 7
      examples/js/lights/RectAreaLightUniformsLib.js
  20. 2 12
      examples/js/renderers/CSS3DRenderer.js
  21. 0 8
      examples/jsm/lights/RectAreaLightUniformsLib.js
  22. 25 25
      examples/jsm/loaders/3DMLoader.js
  23. 1 1
      examples/jsm/loaders/VOXLoader.js
  24. 2 12
      examples/jsm/renderers/CSS3DRenderer.js
  25. 3 4
      examples/webgl2_volume_perlin.html
  26. 1 2
      examples/webgl_loader_3dm.html
  27. 3 1
      examples/webgl_loader_vox.html
  28. 23 15
      examples/webgl_materials_cubemap_dynamic.html
  29. 40 0
      src/animation/AnimationAction.d.ts
  30. 8 0
      src/animation/AnimationClip.d.ts
  31. 7 0
      src/animation/AnimationMixer.d.ts
  32. 15 0
      src/animation/AnimationUtils.d.ts
  33. 33 14
      src/animation/AnimationUtils.js
  34. 9 0
      src/animation/KeyframeTrack.d.ts
  35. 1 1
      src/animation/PropertyMixer.js
  36. 5 0
      src/animation/tracks/BooleanKeyframeTrack.d.ts
  37. 5 0
      src/animation/tracks/ColorKeyframeTrack.d.ts
  38. 5 0
      src/animation/tracks/NumberKeyframeTrack.d.ts
  39. 5 0
      src/animation/tracks/QuaternionKeyframeTrack.d.ts
  40. 5 0
      src/animation/tracks/StringKeyframeTrack.d.ts
  41. 5 0
      src/animation/tracks/VectorKeyframeTrack.d.ts
  42. 49 1
      src/audio/Audio.d.ts
  43. 1 0
      src/audio/Audio.js
  44. 5 1
      src/audio/AudioAnalyser.d.ts
  45. 8 0
      src/audio/AudioListener.d.ts
  46. 3 0
      src/cameras/ArrayCamera.d.ts
  47. 3 0
      src/cameras/Camera.d.ts
  48. 15 2
      src/cameras/OrthographicCamera.d.ts
  49. 26 4
      src/cameras/PerspectiveCamera.d.ts
  50. 8 0
      src/cameras/StereoCamera.d.ts
  51. 23 0
      src/core/BufferAttribute.d.ts
  52. 44 0
      src/core/BufferGeometry.d.ts
  53. 6 1
      src/core/Clock.d.ts
  54. 68 0
      src/core/DirectGeometry.d.ts
  55. 5 0
      src/core/Face3.d.ts
  56. 22 1
      src/core/Geometry.d.ts
  57. 3 0
      src/core/InstancedBufferAttribute.d.ts
  58. 9 0
      src/core/InstancedBufferGeometry.d.ts
  59. 3 0
      src/core/InstancedInterleavedBuffer.d.ts
  60. 17 0
      src/core/InterleavedBuffer.d.ts
  61. 7 0
      src/core/InterleavedBufferAttribute.d.ts
  62. 3 0
      src/core/Layers.d.ts
  63. 30 0
      src/core/Object3D.d.ts
  64. 6 0
      src/core/Raycaster.d.ts
  65. 6 1
      src/extras/core/Curve.d.ts
  66. 12 0
      src/extras/core/CurvePath.d.ts
  67. 5 0
      src/extras/core/Font.d.ts
  68. 8 0
      src/extras/core/Path.d.ts
  69. 8 0
      src/extras/core/Shape.d.ts
  70. 18 0
      src/extras/core/ShapePath.d.ts
  71. 5 0
      src/extras/curves/ArcCurve.d.ts
  72. 14 0
      src/extras/curves/CatmullRomCurve3.d.ts
  73. 20 0
      src/extras/curves/CubicBezierCurve.d.ts
  74. 20 0
      src/extras/curves/CubicBezierCurve3.d.ts
  75. 36 0
      src/extras/curves/EllipseCurve.d.ts
  76. 13 0
      src/extras/curves/LineCurve.d.ts
  77. 13 0
      src/extras/curves/LineCurve3.d.ts
  78. 16 0
      src/extras/curves/QuadraticBezierCurve.d.ts
  79. 16 0
      src/extras/curves/QuadraticBezierCurve3.d.ts
  80. 8 0
      src/extras/curves/SplineCurve.d.ts
  81. 33 0
      src/extras/objects/ImmediateRenderObject.d.ts
  82. 24 6
      src/geometries/BoxGeometry.d.ts
  83. 22 0
      src/geometries/CircleGeometry.d.ts
  84. 30 0
      src/geometries/ConeGeometry.d.ts
  85. 28 6
      src/geometries/CylinderGeometry.d.ts
  86. 18 0
      src/geometries/DodecahedronGeometry.d.ts
  87. 13 0
      src/geometries/EdgesGeometry.d.ts
  88. 31 0
      src/geometries/ExtrudeGeometry.d.ts
  89. 18 0
      src/geometries/IcosahedronGeometry.d.ts
  90. 23 0
      src/geometries/LatheGeometry.d.ts
  91. 18 0
      src/geometries/OctahedronGeometry.d.ts
  92. 10 0
      src/geometries/ParametricGeometry.d.ts
  93. 22 0
      src/geometries/PlaneGeometry.d.ts
  94. 22 0
      src/geometries/PolyhedronGeometry.d.ts
  95. 26 0
      src/geometries/RingGeometry.d.ts
  96. 14 0
      src/geometries/ShapeGeometry.d.ts
  97. 28 7
      src/geometries/SphereGeometry.d.ts
  98. 18 0
      src/geometries/TetrahedronGeometry.d.ts
  99. 22 0
      src/geometries/TextGeometry.d.ts
  100. 24 0
      src/geometries/TorusGeometry.d.ts

File diff suppressed because it is too large
+ 459 - 475
build/three.js


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


File diff suppressed because it is too large
+ 203 - 229
build/three.module.js


+ 1 - 1
docs/api/en/renderers/WebGLCubeRenderTarget.html

@@ -42,7 +42,7 @@
 		[page:Number anisotropy] - default is *1*. See [page:Texture.anistropy]<br />
 		[page:Number anisotropy] - default is *1*. See [page:Texture.anistropy]<br />
 		[page:Constant encoding] - default is [page:Textures LinearEncoding]. <br />
 		[page:Constant encoding] - default is [page:Textures LinearEncoding]. <br />
 		[page:Boolean depthBuffer] - default is *true*. Set this to false if you don't need it. <br />
 		[page:Boolean depthBuffer] - default is *true*. Set this to false if you don't need it. <br />
-		[page:Boolean stencilBuffer] - default is *true*. Set this to false if you don't need it.<br /><br />
+		[page:Boolean stencilBuffer] - default is *false*. Set this to true if you need it.<br /><br />
 
 
 		Creates a new [name]
 		Creates a new [name]
 		</p>
 		</p>

+ 2 - 2
docs/api/en/renderers/WebGLRenderTarget.html

@@ -41,7 +41,7 @@
 		[page:Number anisotropy] - default is *1*. See [page:Texture.anisotropy]<br />
 		[page:Number anisotropy] - default is *1*. See [page:Texture.anisotropy]<br />
 		[page:Constant encoding] - default is [page:Textures LinearEncoding]. <br />
 		[page:Constant encoding] - default is [page:Textures LinearEncoding]. <br />
 		[page:Boolean depthBuffer] - default is *true*. Set this to false if you don't need it. <br />
 		[page:Boolean depthBuffer] - default is *true*. Set this to false if you don't need it. <br />
-		[page:Boolean stencilBuffer] - default is *true*. Set this to false if you don't need it.<br /><br />
+		[page:Boolean stencilBuffer] - default is *false*. Set this to true if you need it.<br /><br />
 
 
 		Creates a new [name]
 		Creates a new [name]
 		</p>
 		</p>
@@ -85,7 +85,7 @@
 
 
 		<h3>[property:boolean stencilBuffer]</h3>
 		<h3>[property:boolean stencilBuffer]</h3>
 		<p>
 		<p>
-		Renders to the stencil buffer. Default is true.
+		Renders to the stencil buffer. Default is false.
 		</p>
 		</p>
 
 
 		<h3>[property:DepthTexture depthTexture]</h3>
 		<h3>[property:DepthTexture depthTexture]</h3>

+ 1 - 1
docs/api/zh/renderers/WebGLCubeRenderTarget.html

@@ -39,7 +39,7 @@
 		[page:Number anisotropy] - 默认是 *1*. 参见[page:Texture.anistropy]<br />
 		[page:Number anisotropy] - 默认是 *1*. 参见[page:Texture.anistropy]<br />
 		[page:Constant encoding] - 默认是[page:Textures LinearEncoding]. <br />
 		[page:Constant encoding] - 默认是[page:Textures LinearEncoding]. <br />
 		[page:Boolean depthBuffer] - 默认是*true*.如果不需要就设为false <br />
 		[page:Boolean depthBuffer] - 默认是*true*.如果不需要就设为false <br />
-		[page:Boolean stencilBuffer] - 默认是*true*.如果不需要就设为false<br /><br />
+		[page:Boolean stencilBuffer] - default is *false*. Set this to true if you need it.<br /><br />
 
 
 		创建一个新[name]
 		创建一个新[name]
 		</p>
 		</p>

+ 2 - 2
docs/api/zh/renderers/WebGLRenderTarget.html

@@ -37,7 +37,7 @@
 		[page:Number anisotropy] - 默认是*1*. 参见[page:Texture.anistropy]<br />
 		[page:Number anisotropy] - 默认是*1*. 参见[page:Texture.anistropy]<br />
 		[page:Constant encoding] - 默认是[page:Textures LinearEncoding]. <br />
 		[page:Constant encoding] - 默认是[page:Textures LinearEncoding]. <br />
 		[page:Boolean depthBuffer] - 默认是*true*. 如果不需要就设为false <br />
 		[page:Boolean depthBuffer] - 默认是*true*. 如果不需要就设为false <br />
-		[page:Boolean stencilBuffer] - 默认是*true*. 如果不需要就设为false <br /><br />
+		[page:Boolean stencilBuffer] - default is *false*. Set this to true if you need it.<br /><br />
 
 
 		创建一个新[name]
 		创建一个新[name]
 		</p>
 		</p>
@@ -81,7 +81,7 @@
 
 
 		<h3>[property:boolean stencilBuffer]</h3>
 		<h3>[property:boolean stencilBuffer]</h3>
 		<p>
 		<p>
-		渲染到模板缓冲区。默认true.
+		Renders to the stencil buffer. Default is false.
 		</p>
 		</p>
 
 
 		<h3>[property:DepthTexture depthTexture]</h3>
 		<h3>[property:DepthTexture depthTexture]</h3>

+ 6 - 0
docs/index.html

@@ -204,6 +204,12 @@
 				navigation = document.createElement( 'div' );
 				navigation = document.createElement( 'div' );
 				content.appendChild( navigation );
 				content.appendChild( navigation );
 
 
+				if ( language === 'ar' ) {
+
+					navigation.style.direction = 'rtl';
+
+				}
+
 				var localList = list[ language ];
 				var localList = list[ language ];
 
 
 				for ( var section in localList ) {
 				for ( var section in localList ) {

+ 3 - 1
docs/list.js

@@ -462,6 +462,7 @@ var list = {
 	},
 	},
 
 
 	"ar": {
 	"ar": {
+
 		"الكتيب": {
 		"الكتيب": {
 
 
 			"البدء": {
 			"البدء": {
@@ -470,10 +471,11 @@ var list = {
 				"دعم المتصفح": "manual/ar/introduction/Browser-support",
 				"دعم المتصفح": "manual/ar/introduction/Browser-support",
 				"WebGL فحص توافق": "manual/ar/introduction/WebGL-compatibility-check",
 				"WebGL فحص توافق": "manual/ar/introduction/WebGL-compatibility-check",
 				"كيف تدير الأشياء محليًا": "manual/ar/introduction/How-to-run-things-locally",
 				"كيف تدير الأشياء محليًا": "manual/ar/introduction/How-to-run-things-locally",
-				"Typescript إعدادات": "manual/ar/introduction/Typescript-setup",
+				"Typescript إعدادات": "manual/ar/introduction/Typescript-setup"
 			},
 			},
 
 
 		},
 		},
+
 	},
 	},
 
 
 	"zh": {
 	"zh": {

+ 2 - 13
docs/manual/ar/introduction/Browser-support.html

@@ -1,24 +1,13 @@
 <!DOCTYPE html>
 <!DOCTYPE html>
-<html lang="en">
+<html lang="ar">
 	<head>
 	<head>
 		<meta charset="utf-8">
 		<meta charset="utf-8">
 		<base href="../../../" />
 		<base href="../../../" />
 		<script src="list.js"></script>
 		<script src="list.js"></script>
 		<script src="page.js"></script>
 		<script src="page.js"></script>
 		<link type="text/css" rel="stylesheet" href="page.css" />
 		<link type="text/css" rel="stylesheet" href="page.css" />
-		<style>
-			h1,
-			h2,
-			h3,
-			h4,
-			p,
-			ul,
-			table {
-				direction: rtl !important;
-			}
-		</style>
 	</head>
 	</head>
-	<body>
+	<body class="rtl">
 		<h1>([name]) دعم المتصفح</h1>
 		<h1>([name]) دعم المتصفح</h1>
 
 
 		<h2>نظرة عامة</h2>
 		<h2>نظرة عامة</h2>

+ 2 - 11
docs/manual/ar/introduction/Creating-a-scene.html

@@ -1,22 +1,13 @@
 <!DOCTYPE html>
 <!DOCTYPE html>
-<html lang="en">
+<html lang="ar">
 	<head>
 	<head>
 		<meta charset="utf-8">
 		<meta charset="utf-8">
 		<base href="../../../" />
 		<base href="../../../" />
 		<script src="list.js"></script>
 		<script src="list.js"></script>
 		<script src="page.js"></script>
 		<script src="page.js"></script>
 		<link type="text/css" rel="stylesheet" href="page.css" />
 		<link type="text/css" rel="stylesheet" href="page.css" />
-		<style>
-			h1,
-			h2,
-			h3,
-			h4,
-			p {
-				direction: rtl !important;
-			}
-		</style>
 	</head>
 	</head>
-	<body>
+	<body class="rtl">
 		<h1>إنشاء مشهد([name])</h1>
 		<h1>إنشاء مشهد([name])</h1>
 
 
 		<p>الهدف من هذا القسم هو تقديم لمحة وجيزة عن كيفية عمل المكتبة. سنبدأ بتحضير مشهد يتمثل في مكعب ثلاثي الأبعاد .الصفحة مرفوقة بمثال أسفلها في حالة واجهتك بعض المشاكل وإحتجت إلى المساعدة.</p>
 		<p>الهدف من هذا القسم هو تقديم لمحة وجيزة عن كيفية عمل المكتبة. سنبدأ بتحضير مشهد يتمثل في مكعب ثلاثي الأبعاد .الصفحة مرفوقة بمثال أسفلها في حالة واجهتك بعض المشاكل وإحتجت إلى المساعدة.</p>

+ 3 - 13
docs/manual/ar/introduction/How-to-run-things-locally.html

@@ -1,23 +1,13 @@
 <!DOCTYPE html>
 <!DOCTYPE html>
-<html lang="en">
+<html lang="ar">
 	<head>
 	<head>
 		<meta charset="utf-8">
 		<meta charset="utf-8">
 		<base href="../../../" />
 		<base href="../../../" />
 		<script src="list.js"></script>
 		<script src="list.js"></script>
 		<script src="page.js"></script>
 		<script src="page.js"></script>
 		<link type="text/css" rel="stylesheet" href="page.css" />
 		<link type="text/css" rel="stylesheet" href="page.css" />
-		<style>
-			h1,
-			h2,
-			h3,
-			h4,
-			p,
-			div {
-				direction: rtl !important;
-			}
-		</style>
 	</head>
 	</head>
-	<body>
+	<body class="rtl">
 		<h1>كيف تدير الأشياء محليًا</h1>
 		<h1>كيف تدير الأشياء محليًا</h1>
 		<p>
 		<p>
 			إذا كنت تستخدم الأشكال الهندسية الإجرائية فقط ولا تقوم بتحميل أي مواد ، فيجب أن تعمل صفحات الويب مباشرة من نظام الملفات ، فقط انقر نقرًا مزدوجًا فوق ملف HTML في مدير الملفات
 			إذا كنت تستخدم الأشكال الهندسية الإجرائية فقط ولا تقوم بتحميل أي مواد ، فيجب أن تعمل صفحات الويب مباشرة من نظام الملفات ، فقط انقر نقرًا مزدوجًا فوق ملف HTML في مدير الملفات
@@ -52,7 +42,7 @@
 			<p>
 			<p>
 				تحتوي العديد من لغات البرمجة على خوادم HTTP بسيطة مضمنة فيها. فهي ليست كاملة الميزات مثل خوادم الإنتاج مثل [link:https://www.apache.org/ Apache] أو [link:https://nginx.org NGINX] ، ولكن يجب أن تكون كافية لاختبار تطبيق three.js الخاص بك.
 				تحتوي العديد من لغات البرمجة على خوادم HTTP بسيطة مضمنة فيها. فهي ليست كاملة الميزات مثل خوادم الإنتاج مثل [link:https://www.apache.org/ Apache] أو [link:https://nginx.org NGINX] ، ولكن يجب أن تكون كافية لاختبار تطبيق three.js الخاص بك.
 			</p>
 			</p>
-			
+
 			<h3>إضافات لمحررات الأكواد الأكثر إستعمالا</h3>
 			<h3>إضافات لمحررات الأكواد الأكثر إستعمالا</h3>
 			<div>
 			<div>
 				<p>تحتوي بعض برامج تحرير الأكواد على مكونات إضافية والتي ستنتج خادمًا بسيطًا عند الطلب.</p>
 				<p>تحتوي بعض برامج تحرير الأكواد على مكونات إضافية والتي ستنتج خادمًا بسيطًا عند الطلب.</p>

+ 3 - 12
docs/manual/ar/introduction/Installation.html

@@ -1,22 +1,13 @@
 <!DOCTYPE html>
 <!DOCTYPE html>
-<html lang="en">
+<html lang="ar">
 	<head>
 	<head>
 		<meta charset="utf-8">
 		<meta charset="utf-8">
 		<base href="../../../" />
 		<base href="../../../" />
 		<script src="list.js"></script>
 		<script src="list.js"></script>
 		<script src="page.js"></script>
 		<script src="page.js"></script>
 		<link type="text/css" rel="stylesheet" href="page.css" />
 		<link type="text/css" rel="stylesheet" href="page.css" />
-		<style>
-			h1,
-			h2,
-			h3,
-			h4,
-			p {
-				direction: rtl !important;
-			}
-		</style>
 	</head>
 	</head>
-	<body>
+	<body class="rtl">
 		<h1>التثبيت ([name])</h1>
 		<h1>التثبيت ([name])</h1>
 
 
 		<p>
 		<p>
@@ -163,7 +154,7 @@
 		<h3>خرائط الإستيراد</h3>
 		<h3>خرائط الإستيراد</h3>
 
 
 		<p>
 		<p>
-			تختلف المسارات المستوردة عند التثبيت من npm ، مقارنة بالتثبيت من استضافة ثابتة أو CDN. نحن ندرك أن هذه مشكلة مريحة لكلا مجموعتي المستخدمين. 
+			تختلف المسارات المستوردة عند التثبيت من npm ، مقارنة بالتثبيت من استضافة ثابتة أو CDN. نحن ندرك أن هذه مشكلة مريحة لكلا مجموعتي المستخدمين.
 			يفضل المطورون الذين لديهم أدوات إنشاء وحزم محددات الحزم المجردة (على سبيل المثال "three") بدلاً من المسارات النسبية ، وتستخدم الملفات في المجلد <em>examples/</em> مراجع نسبية إلى <em> three.module.js </em > التي لا تتبع هذا التوقع.
 			يفضل المطورون الذين لديهم أدوات إنشاء وحزم محددات الحزم المجردة (على سبيل المثال "three") بدلاً من المسارات النسبية ، وتستخدم الملفات في المجلد <em>examples/</em> مراجع نسبية إلى <em> three.module.js </em > التي لا تتبع هذا التوقع.
 				أولئك الذين لا يستخدمون أدوات الإنشاء - للنماذج الأولية السريعة أو التعلم أو التفضيل الشخصي - قد يكرهون بالمثل تلك الواردات النسبية ، والتي تتطلب هياكل مجلدات معينة وتكون أقل تسامحًا من مساحة الاسم <em> THREE. * </em> العام.
 				أولئك الذين لا يستخدمون أدوات الإنشاء - للنماذج الأولية السريعة أو التعلم أو التفضيل الشخصي - قد يكرهون بالمثل تلك الواردات النسبية ، والتي تتطلب هياكل مجلدات معينة وتكون أقل تسامحًا من مساحة الاسم <em> THREE. * </em> العام.
 		</p>
 		</p>

+ 2 - 11
docs/manual/ar/introduction/Typescript-setup.html

@@ -1,22 +1,13 @@
 <!DOCTYPE html>
 <!DOCTYPE html>
-<html lang="en">
+<html lang="ar">
 	<head>
 	<head>
 		<meta charset="utf-8">
 		<meta charset="utf-8">
 		<base href="../../../" />
 		<base href="../../../" />
 		<script src="list.js"></script>
 		<script src="list.js"></script>
 		<script src="page.js"></script>
 		<script src="page.js"></script>
 		<link type="text/css" rel="stylesheet" href="page.css" />
 		<link type="text/css" rel="stylesheet" href="page.css" />
-		<style>
-			h1,
-			h2,
-			h3,
-			h4,
-			p {
-				direction: rtl !important;
-			}
-		</style>
 	</head>
 	</head>
-	<body>
+	<body class="rtl">
 		<h1>Typescript إعدادات</h1>
 		<h1>Typescript إعدادات</h1>
 
 
 		<p>
 		<p>

+ 2 - 11
docs/manual/ar/introduction/WebGL-compatibility-check.html

@@ -1,22 +1,13 @@
 <!DOCTYPE html>
 <!DOCTYPE html>
-<html lang="en">
+<html lang="ar">
 	<head>
 	<head>
 		<meta charset="utf-8">
 		<meta charset="utf-8">
 		<base href="../../../" />
 		<base href="../../../" />
 		<script src="list.js"></script>
 		<script src="list.js"></script>
 		<script src="page.js"></script>
 		<script src="page.js"></script>
 		<link type="text/css" rel="stylesheet" href="page.css" />
 		<link type="text/css" rel="stylesheet" href="page.css" />
-		<style>
-			h1,
-			h2,
-			h3,
-			h4,
-			p {
-				direction: rtl !important;
-			}
-		</style>
 	</head>
 	</head>
-	<body>
+	<body class="rtl">
 		<h1>فحص توافق WebGL</h1>
 		<h1>فحص توافق WebGL</h1>
 		<p>
 		<p>
 			على الرغم من أن هذه المشكلة أصبحت أقل وأقل ، إلا أن بعض الأجهزة أو المتصفحات قد لا تدعم WebGL.
 			على الرغم من أن هذه المشكلة أصبحت أقل وأقل ، إلا أن بعض الأجهزة أو المتصفحات قد لا تدعم WebGL.

+ 10 - 0
docs/page.css

@@ -64,6 +64,16 @@ body {
 	word-break: break-word;
 	word-break: break-word;
 }
 }
 
 
+body.rtl h1,
+body.rtl h2,
+body.rtl h3,
+body.rtl h4,
+body.rtl p,
+body.rtl ul,
+body.rtl table {
+	direction: rtl !important;
+}
+
 a {
 a {
 	color: var(--color-blue);
 	color: var(--color-blue);
 	cursor: pointer;
 	cursor: pointer;

+ 21 - 1
examples/css3d_orthographic.html

@@ -31,12 +31,13 @@
 
 
 			var scene2, renderer2;
 			var scene2, renderer2;
 
 
+			var frustumSize = 500;
+
 			init();
 			init();
 			animate();
 			animate();
 
 
 			function init() {
 			function init() {
 
 
-				var frustumSize = 500;
 				var aspect = window.innerWidth / window.innerHeight;
 				var aspect = window.innerWidth / window.innerHeight;
 				camera = new THREE.OrthographicCamera( frustumSize * aspect / - 2, frustumSize * aspect / 2, frustumSize / 2, frustumSize / - 2, 1, 1000 );
 				camera = new THREE.OrthographicCamera( frustumSize * aspect / - 2, frustumSize * aspect / 2, frustumSize / 2, frustumSize / - 2, 1, 1000 );
 
 
@@ -116,6 +117,25 @@
 
 
 				}
 				}
 
 
+				window.addEventListener( 'resize', onWindowResize, false );
+
+			}
+
+			function onWindowResize() {
+
+				var aspect = window.innerWidth / window.innerHeight;
+
+				camera.left = - frustumSize * aspect / 2;
+				camera.right = frustumSize * aspect / 2;
+				camera.top = frustumSize / 2;
+				camera.bottom = - frustumSize / 2;
+
+				camera.updateProjectionMatrix();
+
+				renderer.setSize( window.innerWidth, window.innerHeight );
+
+				renderer2.setSize( window.innerWidth, window.innerHeight );
+
 			}
 			}
 
 
 			function animate() {
 			function animate() {

+ 14 - 0
examples/css3d_sandbox.html

@@ -89,6 +89,20 @@
 
 
 				controls = new TrackballControls( camera, renderer2.domElement );
 				controls = new TrackballControls( camera, renderer2.domElement );
 
 
+				window.addEventListener( 'resize', onWindowResize, false );
+
+			}
+
+			function onWindowResize() {
+
+				camera.aspect = window.innerWidth / window.innerHeight;
+
+				camera.updateProjectionMatrix();
+
+				renderer.setSize( window.innerWidth, window.innerHeight );
+
+				renderer2.setSize( window.innerWidth, window.innerHeight );
+
 			}
 			}
 
 
 			function animate() {
 			function animate() {

+ 0 - 7
examples/js/lights/RectAreaLightUniformsLib.js

@@ -34,13 +34,6 @@ THREE.RectAreaLightUniformsLib = {
 		THREE.UniformsLib.LTC_1 = ltc_1;
 		THREE.UniformsLib.LTC_1 = ltc_1;
 		THREE.UniformsLib.LTC_2 = ltc_2;
 		THREE.UniformsLib.LTC_2 = ltc_2;
 
 
-		// add ltc data textures to material uniforms
-
-		var ltc = { ltc_1: { value: null }, ltc_2: { value: null } };
-
-		Object.assign( THREE.ShaderLib.standard.uniforms, ltc );
-		Object.assign( THREE.ShaderLib.physical.uniforms, ltc );
-
 	}
 	}
 
 
 };
 };

+ 2 - 12
examples/js/renderers/CSS3DRenderer.js

@@ -82,7 +82,6 @@ THREE.CSS3DRenderer = function () {
 	domElement.appendChild( cameraElement );
 	domElement.appendChild( cameraElement );
 
 
 	var isIE = /Trident/i.test( navigator.userAgent );
 	var isIE = /Trident/i.test( navigator.userAgent );
-	var isSafari = /Safari/.test( navigator.userAgent ) && ! /Chrome/.test( navigator.userAgent );
 
 
 	this.getSize = function () {
 	this.getSize = function () {
 
 
@@ -331,17 +330,8 @@ THREE.CSS3DRenderer = function () {
 			'scale(' + fov + ')' + 'translate(' + epsilon( tx ) + 'px,' + epsilon( ty ) + 'px)' + getCameraCSSMatrix( camera.matrixWorldInverse ) :
 			'scale(' + fov + ')' + 'translate(' + epsilon( tx ) + 'px,' + epsilon( ty ) + 'px)' + getCameraCSSMatrix( camera.matrixWorldInverse ) :
 			'translateZ(' + fov + 'px)' + getCameraCSSMatrix( camera.matrixWorldInverse );
 			'translateZ(' + fov + 'px)' + getCameraCSSMatrix( camera.matrixWorldInverse );
 
 
-		var cameraTranslateX = _widthHalf;
-		var cameraTranslateY = _heightHalf;
-
-		if ( isSafari && camera.isOrthographicCamera ) {
-
-			cameraTranslateX = Math.round( cameraTranslateX );
-			cameraTranslateY = Math.round( cameraTranslateY );
-
-		}
-
-		var style = cameraCSSMatrix + 'translate(' + cameraTranslateX + 'px,' + cameraTranslateY + 'px)';
+		var style = cameraCSSMatrix +
+			'translate(' + _widthHalf + 'px,' + _heightHalf + 'px)';
 
 
 		if ( cache.camera.style !== style && ! isIE ) {
 		if ( cache.camera.style !== style && ! isIE ) {
 
 

+ 0 - 8
examples/jsm/lights/RectAreaLightUniformsLib.js

@@ -5,7 +5,6 @@ import {
 	LinearFilter,
 	LinearFilter,
 	NearestFilter,
 	NearestFilter,
 	RGBAFormat,
 	RGBAFormat,
-	ShaderLib,
 	UVMapping,
 	UVMapping,
 	UniformsLib
 	UniformsLib
 } from "../../../build/three.module.js";
 } from "../../../build/three.module.js";
@@ -44,13 +43,6 @@ var RectAreaLightUniformsLib = {
 		UniformsLib.LTC_1 = ltc_1;
 		UniformsLib.LTC_1 = ltc_1;
 		UniformsLib.LTC_2 = ltc_2;
 		UniformsLib.LTC_2 = ltc_2;
 
 
-		// add ltc data textures to material uniforms
-
-		var ltc = { ltc_1: { value: null }, ltc_2: { value: null } };
-
-		Object.assign( ShaderLib.standard.uniforms, ltc );
-		Object.assign( ShaderLib.physical.uniforms, ltc );
-
 	}
 	}
 
 
 };
 };

+ 25 - 25
examples/jsm/loaders/3DMLoader.js

@@ -587,7 +587,6 @@ Rhino3dmLoader.Rhino3dmWorker = function () {
 		var views = [];
 		var views = [];
 		var namedViews = [];
 		var namedViews = [];
 		var groups = [];
 		var groups = [];
-		var strings = [];
 
 
 		//Handle objects
 		//Handle objects
 
 
@@ -780,7 +779,7 @@ Rhino3dmLoader.Rhino3dmWorker = function () {
 				position.type = 'Float32Array';
 				position.type = 'Float32Array';
 				position.array = [ pt[ 0 ], pt[ 1 ], pt[ 2 ] ];
 				position.array = [ pt[ 0 ], pt[ 1 ], pt[ 2 ] ];
 
 
-				_color = _attributes.drawColor( doc );
+				var _color = _attributes.drawColor( doc );
 
 
 				color.itemSize = 3;
 				color.itemSize = 3;
 				color.type = 'Float32Array';
 				color.type = 'Float32Array';
@@ -918,28 +917,28 @@ Rhino3dmLoader.Rhino3dmWorker = function () {
 
 
 		if ( curve instanceof rhino.LineCurve ) {
 		if ( curve instanceof rhino.LineCurve ) {
 
 
-		  	return [ curve.pointAtStart, curve.pointAtEnd ];
+			return [ curve.pointAtStart, curve.pointAtEnd ];
 
 
 		}
 		}
 
 
 		if ( curve instanceof rhino.PolylineCurve ) {
 		if ( curve instanceof rhino.PolylineCurve ) {
 
 
-		  	pointCount = curve.pointCount;
-		  	for ( var i = 0; i < pointCount; i ++ ) {
+			pointCount = curve.pointCount;
+			for ( var i = 0; i < pointCount; i ++ ) {
 
 
 				rc.push( curve.point( i ) );
 				rc.push( curve.point( i ) );
 
 
-		  	}
+			}
 
 
-		  	return rc;
+			return rc;
 
 
 		}
 		}
 
 
 		if ( curve instanceof rhino.PolyCurve ) {
 		if ( curve instanceof rhino.PolyCurve ) {
 
 
-		  	var segmentCount = curve.segmentCount;
+			var segmentCount = curve.segmentCount;
 
 
-		  	for ( var i = 0; i < segmentCount; i ++ ) {
+			for ( var i = 0; i < segmentCount; i ++ ) {
 
 
 				var segment = curve.segmentCurve( i );
 				var segment = curve.segmentCurve( i );
 				var segmentArray = curveToPoints( segment );
 				var segmentArray = curveToPoints( segment );
@@ -948,13 +947,13 @@ Rhino3dmLoader.Rhino3dmWorker = function () {
 
 
 			}
 			}
 
 
-		  	return rc;
+			return rc;
 
 
 		}
 		}
 
 
 		if ( curve instanceof rhino.NurbsCurve && curve.degree === 1 ) {
 		if ( curve instanceof rhino.NurbsCurve && curve.degree === 1 ) {
 
 
-		  	// console.info( 'degree 1 curve' );
+			// console.info( 'degree 1 curve' );
 
 
 		}
 		}
 
 
@@ -970,34 +969,35 @@ Rhino3dmLoader.Rhino3dmWorker = function () {
 				ts.push( t );
 				ts.push( t );
 				continue;
 				continue;
 
 
-		  	}
+			}
 
 
-		  	var tan = curve.tangentAt( t );
-		  	var prevTan = curve.tangentAt( ts.slice( - 1 )[ 0 ] );
+			var tan = curve.tangentAt( t );
+			var prevTan = curve.tangentAt( ts.slice( - 1 )[ 0 ] );
 
 
-		  	// Duplicaated from THREE.Vector3
-		  	// How to pass imports to worker?
+			// Duplicaated from THREE.Vector3
+			// How to pass imports to worker?
 
 
-		  	tS = tan[ 0 ] * tan[ 0 ] + tan[ 1 ] * tan[ 1 ] + tan[ 2 ] * tan[ 2 ];
-		  	ptS = prevTan[ 0 ] * prevTan[ 0 ] + prevTan[ 1 ] * prevTan[ 1 ] + prevTan[ 2 ] * prevTan[ 2 ];
+			var tS = tan[ 0 ] * tan[ 0 ] + tan[ 1 ] * tan[ 1 ] + tan[ 2 ] * tan[ 2 ];
+			var ptS = prevTan[ 0 ] * prevTan[ 0 ] + prevTan[ 1 ] * prevTan[ 1 ] + prevTan[ 2 ] * prevTan[ 2 ];
 
 
-		  	var denominator = Math.sqrt( tS * ptS );
+			var denominator = Math.sqrt( tS * ptS );
 
 
-		  	var angle;
+			var angle;
 
 
-		  	if ( denominator === 0 ) {
+			if ( denominator === 0 ) {
 
 
 				angle = Math.PI / 2;
 				angle = Math.PI / 2;
 
 
-		  	} else {
+			} else {
 
 
 				var theta = ( tan.x * prevTan.x + tan.y * prevTan.y + tan.z * prevTan.z ) / denominator;
 				var theta = ( tan.x * prevTan.x + tan.y * prevTan.y + tan.z * prevTan.z ) / denominator;
 				angle = Math.acos( Math.max( - 1, Math.min( 1, theta ) ) );
 				angle = Math.acos( Math.max( - 1, Math.min( 1, theta ) ) );
 
 
-		  	}
+			}
+
+			if ( angle < 0.1 ) continue;
 
 
-		  	if ( angle < 0.1 ) continue;
-		  	ts.push( t );
+			ts.push( t );
 
 
 		}
 		}
 
 

+ 1 - 1
examples/jsm/loaders/VOXLoader.js

@@ -112,7 +112,7 @@ VOXLoader.prototype = Object.assign( Object.create( Loader.prototype ), {
 			}
 			}
 
 
 			const chunkSize = data.getInt32( i, true ); i += 4;
 			const chunkSize = data.getInt32( i, true ); i += 4;
-			const childChunks = data.getInt32( i, true ); i += 4;
+			data.getInt32( i, true ); i += 4; // childChunks
 
 
 			if ( id === 'SIZE' ) {
 			if ( id === 'SIZE' ) {
 
 

+ 2 - 12
examples/jsm/renderers/CSS3DRenderer.js

@@ -86,7 +86,6 @@ var CSS3DRenderer = function () {
 	domElement.appendChild( cameraElement );
 	domElement.appendChild( cameraElement );
 
 
 	var isIE = /Trident/i.test( navigator.userAgent );
 	var isIE = /Trident/i.test( navigator.userAgent );
-	var isSafari = /Safari/.test( navigator.userAgent ) && ! /Chrome/.test( navigator.userAgent );
 
 
 	this.getSize = function () {
 	this.getSize = function () {
 
 
@@ -335,17 +334,8 @@ var CSS3DRenderer = function () {
 			'scale(' + fov + ')' + 'translate(' + epsilon( tx ) + 'px,' + epsilon( ty ) + 'px)' + getCameraCSSMatrix( camera.matrixWorldInverse ) :
 			'scale(' + fov + ')' + 'translate(' + epsilon( tx ) + 'px,' + epsilon( ty ) + 'px)' + getCameraCSSMatrix( camera.matrixWorldInverse ) :
 			'translateZ(' + fov + 'px)' + getCameraCSSMatrix( camera.matrixWorldInverse );
 			'translateZ(' + fov + 'px)' + getCameraCSSMatrix( camera.matrixWorldInverse );
 
 
-		var cameraTranslateX = _widthHalf;
-		var cameraTranslateY = _heightHalf;
-
-		if ( isSafari && camera.isOrthographicCamera ) {
-
-			cameraTranslateX = Math.round( cameraTranslateX );
-			cameraTranslateY = Math.round( cameraTranslateY );
-
-		}
-
-		var style = cameraCSSMatrix + 'translate(' + cameraTranslateX + 'px,' + cameraTranslateY + 'px)';
+		var style = cameraCSSMatrix +
+			'translate(' + _widthHalf + 'px,' + _heightHalf + 'px)';
 
 
 		if ( cache.camera.style !== style && ! isIE ) {
 		if ( cache.camera.style !== style && ! isIE ) {
 
 

+ 3 - 4
examples/webgl2_volume_perlin.html

@@ -49,7 +49,7 @@
 				// Texture
 				// Texture
 
 
 				const size = 128;
 				const size = 128;
-				const data = new Float32Array( size * size * size );
+				const data = new Uint8Array( size * size * size );
 
 
 				let i = 0;
 				let i = 0;
 				const scale = 0.051;
 				const scale = 0.051;
@@ -61,7 +61,7 @@
 
 
 						for ( let x = 0; x < size; x ++ ) {
 						for ( let x = 0; x < size; x ++ ) {
 
 
-							data[ i ] = 0.5 + 0.5 * perlin.noise( x * scale, y * scale, z * scale );
+							data[ i ] = 128 + 128 * perlin.noise( x * scale, y * scale, z * scale );
 							i ++;
 							i ++;
 
 
 						}
 						}
@@ -72,7 +72,6 @@
 
 
 				const texture = new THREE.DataTexture3D( data, size, size, size );
 				const texture = new THREE.DataTexture3D( data, size, size, size );
 				texture.format = THREE.RedFormat;
 				texture.format = THREE.RedFormat;
-				texture.type = THREE.FloatType;
 				texture.minFilter = THREE.LinearFilter;
 				texture.minFilter = THREE.LinearFilter;
 				texture.magFilter = THREE.LinearFilter;
 				texture.magFilter = THREE.LinearFilter;
 				texture.unpackAlignment = 1;
 				texture.unpackAlignment = 1;
@@ -216,7 +215,7 @@
 
 
 				const gui = new GUI();
 				const gui = new GUI();
 				gui.add( parameters, 'threshold', 0, 1, 0.01 ).onChange( update );
 				gui.add( parameters, 'threshold', 0, 1, 0.01 ).onChange( update );
-				gui.add( parameters, 'steps', 0, 200, 1 ).onChange( update );
+				gui.add( parameters, 'steps', 0, 300, 1 ).onChange( update );
 
 
 				window.addEventListener( 'resize', onWindowResize, false );
 				window.addEventListener( 'resize', onWindowResize, false );
 
 

+ 1 - 2
examples/webgl_loader_3dm.html

@@ -53,7 +53,6 @@
 
 
 				loader.load( 'models/3dm/Rhino_Logo.3dm', function ( object ) {
 				loader.load( 'models/3dm/Rhino_Logo.3dm', function ( object ) {
 
 
-					console.log( object );
 					scene.add( object );
 					scene.add( object );
 					initGUI( object.userData.layers );
 					initGUI( object.userData.layers );
 
 
@@ -124,7 +123,7 @@
 									var layerName = layers[ child.userData.attributes.layerIndex ].name;
 									var layerName = layers[ child.userData.attributes.layerIndex ].name;
 
 
 									if ( layerName === name ) {
 									if ( layerName === name ) {
-										
+
 										child.visible = val;
 										child.visible = val;
 										layer.visible = val;
 										layer.visible = val;
 
 

+ 3 - 1
examples/webgl_loader_vox.html

@@ -109,6 +109,7 @@
 
 
 			}
 			}
 
 
+			/*
 			function displayPalette( palette ) {
 			function displayPalette( palette ) {
 
 
 				const canvas = document.createElement( 'canvas' );
 				const canvas = document.createElement( 'canvas' );
@@ -116,7 +117,7 @@
 				canvas.height = 32;
 				canvas.height = 32;
 				canvas.style.position = 'absolute';
 				canvas.style.position = 'absolute';
 				canvas.style.top = '0';
 				canvas.style.top = '0';
-				canvas.style.width = 100 + 'px';
+				canvas.style.width = '100px';
 				canvas.style.imageRendering = 'pixelated';
 				canvas.style.imageRendering = 'pixelated';
 				document.body.appendChild( canvas );
 				document.body.appendChild( canvas );
 
 
@@ -137,6 +138,7 @@
 				}
 				}
 
 
 			}
 			}
+			*/
 
 
 			function onWindowResize() {
 			function onWindowResize() {
 
 

+ 23 - 15
examples/webgl_materials_cubemap_dynamic.html

@@ -28,7 +28,7 @@
 
 
 			textureLoader.load( 'textures/2294472375_24a3b8ef46_o.jpg', function ( texture ) {
 			textureLoader.load( 'textures/2294472375_24a3b8ef46_o.jpg', function ( texture ) {
 
 
-				texture.mapping = THREE.UVMapping;
+				texture.encoding = THREE.sRGBEncoding;
 
 
 				init( texture );
 				init( texture );
 				animate();
 				animate();
@@ -40,6 +40,9 @@
 				renderer = new THREE.WebGLRenderer( { antialias: true } );
 				renderer = new THREE.WebGLRenderer( { antialias: true } );
 				renderer.setPixelRatio( window.devicePixelRatio );
 				renderer.setPixelRatio( window.devicePixelRatio );
 				renderer.setSize( window.innerWidth, window.innerHeight );
 				renderer.setSize( window.innerWidth, window.innerHeight );
+				document.body.appendChild( renderer.domElement );
+
+				renderer.outputEncoding = THREE.sRGBEncoding;
 
 
 				scene = new THREE.Scene();
 				scene = new THREE.Scene();
 
 
@@ -47,30 +50,35 @@
 
 
 				// background
 				// background
 
 
-				var options = {
-					generateMipmaps: true,
-					minFilter: THREE.LinearMipmapLinearFilter,
-					magFilter: THREE.LinearFilter
-				};
-
+				var options = {}; // none required
 				scene.background = new THREE.WebGLCubeRenderTarget( 1024, options ).fromEquirectangularTexture( renderer, texture );
 				scene.background = new THREE.WebGLCubeRenderTarget( 1024, options ).fromEquirectangularTexture( renderer, texture );
 
 
 				//
 				//
 
 
-				cubeRenderTarget1 = new THREE.WebGLCubeRenderTarget( 256, { format: THREE.RGBFormat, generateMipmaps: true, minFilter: THREE.LinearMipmapLinearFilter } );
+				cubeRenderTarget1 = new THREE.WebGLCubeRenderTarget( 256, {
+					format: THREE.RGBFormat,
+					generateMipmaps: true,
+					minFilter: THREE.LinearMipmapLinearFilter,
+					encoding: THREE.sRGBEncoding // temporary -- to prevent the material's shader from recompiling every frame
+				} );
+
 				cubeCamera1 = new THREE.CubeCamera( 1, 1000, cubeRenderTarget1 );
 				cubeCamera1 = new THREE.CubeCamera( 1, 1000, cubeRenderTarget1 );
-				scene.add( cubeCamera1 );
 
 
-				cubeRenderTarget2 = new THREE.WebGLCubeRenderTarget( 256, { format: THREE.RGBFormat, generateMipmaps: true, minFilter: THREE.LinearMipmapLinearFilter } );
-				cubeCamera2 = new THREE.CubeCamera( 1, 1000, cubeRenderTarget2 );
-				scene.add( cubeCamera2 );
+				cubeRenderTarget2 = new THREE.WebGLCubeRenderTarget( 256, {
+					format: THREE.RGBFormat,
+					generateMipmaps: true,
+					minFilter: THREE.LinearMipmapLinearFilter,
+					encoding: THREE.sRGBEncoding
+				} );
 
 
-				document.body.appendChild( renderer.domElement );
+				cubeCamera2 = new THREE.CubeCamera( 1, 1000, cubeRenderTarget2 );
 
 
 				//
 				//
 
 
 				material = new THREE.MeshBasicMaterial( {
 				material = new THREE.MeshBasicMaterial( {
-					envMap: cubeRenderTarget2.texture
+					envMap: cubeRenderTarget2.texture,
+					combine: THREE.MultiplyOperation,
+					reflectivity: 1
 				} );
 				} );
 
 
 				sphere = new THREE.Mesh( new THREE.IcosahedronBufferGeometry( 20, 3 ), material );
 				sphere = new THREE.Mesh( new THREE.IcosahedronBufferGeometry( 20, 3 ), material );
@@ -79,7 +87,7 @@
 				cube = new THREE.Mesh( new THREE.BoxBufferGeometry( 20, 20, 20 ), material );
 				cube = new THREE.Mesh( new THREE.BoxBufferGeometry( 20, 20, 20 ), material );
 				scene.add( cube );
 				scene.add( cube );
 
 
-				torus = new THREE.Mesh( new THREE.TorusKnotBufferGeometry( 10, 5, 100, 25 ), material );
+				torus = new THREE.Mesh( new THREE.TorusKnotBufferGeometry( 10, 5, 128, 16 ), material );
 				scene.add( torus );
 				scene.add( torus );
 
 
 				//
 				//

+ 40 - 0
src/animation/AnimationAction.d.ts

@@ -9,15 +9,55 @@ export class AnimationAction {
 	constructor( mixer: AnimationMixer, clip: AnimationClip, localRoot?: Object3D, blendMode?: AnimationBlendMode );
 	constructor( mixer: AnimationMixer, clip: AnimationClip, localRoot?: Object3D, blendMode?: AnimationBlendMode );
 
 
 	blendMode: AnimationBlendMode;
 	blendMode: AnimationBlendMode;
+
+	/**
+	 * @default THREE.LoopRepeat
+	 */
 	loop: AnimationActionLoopStyles;
 	loop: AnimationActionLoopStyles;
+
+	/**
+	 * @default 0
+	 */
 	time: number;
 	time: number;
+
+	/**
+	 * @default 1
+	 */
 	timeScale: number;
 	timeScale: number;
+
+	/**
+	 * @default 1
+	 */
 	weight: number;
 	weight: number;
+
+	/**
+	 * @default Infinity
+	 */
 	repetitions: number;
 	repetitions: number;
+
+	/**
+	 * @default false
+	 */
 	paused: boolean;
 	paused: boolean;
+
+	/**
+	 * @default true
+	 */
 	enabled: boolean;
 	enabled: boolean;
+
+	/**
+	 * @default false
+	 */
 	clampWhenFinished: boolean;
 	clampWhenFinished: boolean;
+
+	/**
+	 * @default true
+	 */
 	zeroSlopeAtStart: boolean;
 	zeroSlopeAtStart: boolean;
+
+	/**
+	 * @default true
+	 */
 	zeroSlopeAtEnd: boolean;
 	zeroSlopeAtEnd: boolean;
 
 
 	play(): AnimationAction;
 	play(): AnimationAction;

+ 8 - 0
src/animation/AnimationClip.d.ts

@@ -9,7 +9,15 @@ export class AnimationClip {
 
 
 	name: string;
 	name: string;
 	tracks: KeyframeTrack[];
 	tracks: KeyframeTrack[];
+
+	/**
+	 * @default THREE.NormalAnimationBlendMode
+	 */
 	blendMode: AnimationBlendMode;
 	blendMode: AnimationBlendMode;
+
+	/**
+	 * @default -1
+	 */
 	duration: number;
 	duration: number;
 	uuid: string;
 	uuid: string;
 	results: any[];
 	results: any[];

+ 7 - 0
src/animation/AnimationMixer.d.ts

@@ -9,7 +9,14 @@ export class AnimationMixer extends EventDispatcher {
 
 
 	constructor( root: Object3D | AnimationObjectGroup );
 	constructor( root: Object3D | AnimationObjectGroup );
 
 
+	/**
+	 * @default 0
+	 */
 	time: number;
 	time: number;
+
+	/**
+	 * @default 1.0
+	 */
 	timeScale: number;
 	timeScale: number;
 
 
 	clipAction( clip: AnimationClip, root?: Object3D | AnimationObjectGroup, blendMode?: AnimationBlendMode ): AnimationAction;
 	clipAction( clip: AnimationClip, root?: Object3D | AnimationObjectGroup, blendMode?: AnimationBlendMode ): AnimationAction;

+ 15 - 0
src/animation/AnimationUtils.d.ts

@@ -16,6 +16,14 @@ export namespace AnimationUtils {
 		values: any[],
 		values: any[],
 		valuePropertyName: string
 		valuePropertyName: string
 	): void;
 	): void;
+
+	/**
+	 * @param sourceClip
+	 * @param name
+	 * @param startFrame
+	 * @param endFrame
+	 * @param [fps=30]
+	 */
 	export function subclip(
 	export function subclip(
 		sourceClip: AnimationClip,
 		sourceClip: AnimationClip,
 		name: string,
 		name: string,
@@ -23,6 +31,13 @@ export namespace AnimationUtils {
 		endFrame: number,
 		endFrame: number,
 		fps?: number
 		fps?: number
 	): AnimationClip;
 	): AnimationClip;
+
+	/**
+	 * @param targetClip
+	 * @param [referenceFrame=0]
+	 * @param [referenceClip=targetClip]
+	 * @param [fps=30]
+	 */
 	export function makeClipAdditive(
 	export function makeClipAdditive(
 		targetClip: AnimationClip,
 		targetClip: AnimationClip,
 		referenceFrame?: number,
 		referenceFrame?: number,

+ 33 - 14
src/animation/AnimationUtils.js

@@ -252,13 +252,30 @@ const AnimationUtils = {
 			const targetTrack = targetClip.tracks.find( function ( track ) {
 			const targetTrack = targetClip.tracks.find( function ( track ) {
 
 
 				return track.name === referenceTrack.name
 				return track.name === referenceTrack.name
-				&& track.ValueTypeName === referenceTrackType;
+					&& track.ValueTypeName === referenceTrackType;
 
 
 			} );
 			} );
 
 
 			if ( targetTrack === undefined ) continue;
 			if ( targetTrack === undefined ) continue;
 
 
-			const valueSize = referenceTrack.getValueSize();
+			let referenceOffset = 0;
+			const referenceValueSize = referenceTrack.getValueSize();
+
+			if ( referenceTrack.createInterpolant.isInterpolantFactoryMethodGLTFCubicSpline ) {
+
+				referenceOffset = referenceValueSize / 3;
+
+			}
+
+			let targetOffset = 0;
+			const targetValueSize = targetTrack.getValueSize();
+
+			if ( targetTrack.createInterpolant.isInterpolantFactoryMethodGLTFCubicSpline ) {
+
+				targetOffset = targetValueSize / 3;
+
+			}
+
 			const lastIndex = referenceTrack.times.length - 1;
 			const lastIndex = referenceTrack.times.length - 1;
 			let referenceValue;
 			let referenceValue;
 
 
@@ -266,32 +283,32 @@ const AnimationUtils = {
 			if ( referenceTime <= referenceTrack.times[ 0 ] ) {
 			if ( referenceTime <= referenceTrack.times[ 0 ] ) {
 
 
 				// Reference frame is earlier than the first keyframe, so just use the first keyframe
 				// Reference frame is earlier than the first keyframe, so just use the first keyframe
-				referenceValue = AnimationUtils.arraySlice( referenceTrack.values, 0, referenceTrack.valueSize );
+				const startIndex = referenceOffset;
+				const endIndex = referenceValueSize - referenceOffset;
+				referenceValue = AnimationUtils.arraySlice( referenceTrack.values, startIndex, endIndex );
 
 
 			} else if ( referenceTime >= referenceTrack.times[ lastIndex ] ) {
 			} else if ( referenceTime >= referenceTrack.times[ lastIndex ] ) {
 
 
 				// Reference frame is after the last keyframe, so just use the last keyframe
 				// Reference frame is after the last keyframe, so just use the last keyframe
-				const startIndex = lastIndex * valueSize;
-				referenceValue = AnimationUtils.arraySlice( referenceTrack.values, startIndex );
+				const startIndex = lastIndex * referenceValueSize + referenceOffset;
+				const endIndex = startIndex + referenceValueSize - referenceOffset;
+				referenceValue = AnimationUtils.arraySlice( referenceTrack.values, startIndex, endIndex );
 
 
 			} else {
 			} else {
 
 
 				// Interpolate to the reference value
 				// Interpolate to the reference value
 				const interpolant = referenceTrack.createInterpolant();
 				const interpolant = referenceTrack.createInterpolant();
+				const startIndex = referenceOffset;
+				const endIndex = referenceValueSize - referenceOffset;
 				interpolant.evaluate( referenceTime );
 				interpolant.evaluate( referenceTime );
-				referenceValue = interpolant.resultBuffer;
+				referenceValue = AnimationUtils.arraySlice( interpolant.resultBuffer, startIndex, endIndex );
 
 
 			}
 			}
 
 
 			// Conjugate the quaternion
 			// Conjugate the quaternion
 			if ( referenceTrackType === 'quaternion' ) {
 			if ( referenceTrackType === 'quaternion' ) {
 
 
-				const referenceQuat = new Quaternion(
-					referenceValue[ 0 ],
-					referenceValue[ 1 ],
-					referenceValue[ 2 ],
-					referenceValue[ 3 ]
-				).normalize().conjugate();
+				const referenceQuat = new Quaternion().fromArray( referenceValue ).normalize().conjugate();
 				referenceQuat.toArray( referenceValue );
 				referenceQuat.toArray( referenceValue );
 
 
 			}
 			}
@@ -301,7 +318,7 @@ const AnimationUtils = {
 			const numTimes = targetTrack.times.length;
 			const numTimes = targetTrack.times.length;
 			for ( let j = 0; j < numTimes; ++ j ) {
 			for ( let j = 0; j < numTimes; ++ j ) {
 
 
-				const valueStart = j * valueSize;
+				const valueStart = j * targetValueSize + targetOffset;
 
 
 				if ( referenceTrackType === 'quaternion' ) {
 				if ( referenceTrackType === 'quaternion' ) {
 
 
@@ -317,8 +334,10 @@ const AnimationUtils = {
 
 
 				} else {
 				} else {
 
 
+					const valueEnd = targetValueSize - targetOffset * 2;
+
 					// Subtract each value for all other numeric track types
 					// Subtract each value for all other numeric track types
-					for ( let k = 0; k < valueSize; ++ k ) {
+					for ( let k = 0; k < valueEnd; ++ k ) {
 
 
 						targetTrack.values[ valueStart + k ] -= referenceValue[ k ];
 						targetTrack.values[ valueStart + k ] -= referenceValue[ k ];
 
 

+ 9 - 0
src/animation/KeyframeTrack.d.ts

@@ -5,6 +5,12 @@ import { InterpolationModes } from '../constants';
 
 
 export class KeyframeTrack {
 export class KeyframeTrack {
 
 
+	/**
+	 * @param name
+	 * @param times
+	 * @param values
+	 * @param [interpolation=THREE.InterpolateLinear]
+	 */
 	constructor(
 	constructor(
 		name: string,
 		name: string,
 		times: any[],
 		times: any[],
@@ -20,6 +26,9 @@ export class KeyframeTrack {
 	TimeBufferType: Float32Array;
 	TimeBufferType: Float32Array;
 	ValueBufferType: Float32Array;
 	ValueBufferType: Float32Array;
 
 
+	/**
+	 * @default THREE.InterpolateLinear
+	 */
 	DefaultInterpolation: InterpolationModes;
 	DefaultInterpolation: InterpolationModes;
 
 
 	InterpolantFactoryMethodDiscrete( result: any ): DiscreteInterpolant;
 	InterpolantFactoryMethodDiscrete( result: any ): DiscreteInterpolant;

+ 1 - 1
src/animation/PropertyMixer.js

@@ -234,7 +234,7 @@ Object.assign( PropertyMixer.prototype, {
 	_setAdditiveIdentityQuaternion: function () {
 	_setAdditiveIdentityQuaternion: function () {
 
 
 		this._setAdditiveIdentityNumeric();
 		this._setAdditiveIdentityNumeric();
-		this.buffer[ this._addIndex * 4 + 3 ] = 1;
+		this.buffer[ this._addIndex * this.valueSize + 3 ] = 1;
 
 
 	},
 	},
 
 

+ 5 - 0
src/animation/tracks/BooleanKeyframeTrack.d.ts

@@ -4,4 +4,9 @@ export class BooleanKeyframeTrack extends KeyframeTrack {
 
 
 	constructor( name: string, times: any[], values: any[] );
 	constructor( name: string, times: any[], values: any[] );
 
 
+	/**
+	 * @default 'bool'
+	 */
+	ValueTypeName: string;
+
 }
 }

+ 5 - 0
src/animation/tracks/ColorKeyframeTrack.d.ts

@@ -10,4 +10,9 @@ export class ColorKeyframeTrack extends KeyframeTrack {
 		interpolation?: InterpolationModes
 		interpolation?: InterpolationModes
 	);
 	);
 
 
+	/**
+	 * @default 'color'
+	 */
+	ValueTypeName: string;
+
 }
 }

+ 5 - 0
src/animation/tracks/NumberKeyframeTrack.d.ts

@@ -10,4 +10,9 @@ export class NumberKeyframeTrack extends KeyframeTrack {
 		interpolation?: InterpolationModes
 		interpolation?: InterpolationModes
 	);
 	);
 
 
+	/**
+	 * @default 'number'
+	 */
+	ValueTypeName: string;
+
 }
 }

+ 5 - 0
src/animation/tracks/QuaternionKeyframeTrack.d.ts

@@ -10,4 +10,9 @@ export class QuaternionKeyframeTrack extends KeyframeTrack {
 		interpolation?: InterpolationModes
 		interpolation?: InterpolationModes
 	);
 	);
 
 
+	/**
+	 * @default 'quaternion'
+	 */
+	ValueTypeName: string;
+
 }
 }

+ 5 - 0
src/animation/tracks/StringKeyframeTrack.d.ts

@@ -10,4 +10,9 @@ export class StringKeyframeTrack extends KeyframeTrack {
 		interpolation?: InterpolationModes
 		interpolation?: InterpolationModes
 	);
 	);
 
 
+	/**
+	 * @default 'string'
+	 */
+	ValueTypeName: string;
+
 }
 }

+ 5 - 0
src/animation/tracks/VectorKeyframeTrack.d.ts

@@ -10,4 +10,9 @@ export class VectorKeyframeTrack extends KeyframeTrack {
 		interpolation?: InterpolationModes
 		interpolation?: InterpolationModes
 	);
 	);
 
 
+	/**
+	 * @default 'vector'
+	 */
+	ValueTypeName: string;
+
 }
 }

+ 49 - 1
src/audio/Audio.d.ts

@@ -12,19 +12,67 @@ export class Audio<NodeType extends AudioNode = GainNode> extends Object3D {
 	listener: AudioListener;
 	listener: AudioListener;
 	context: AudioContext;
 	context: AudioContext;
 	gain: GainNode;
 	gain: GainNode;
+
+	/**
+	 * @default false
+	 */
 	autoplay: boolean;
 	autoplay: boolean;
 	buffer: null | AudioBuffer;
 	buffer: null | AudioBuffer;
+
+	/**
+	 * @default 0
+	 */
 	detune: number;
 	detune: number;
+
+	/**
+	 * @default false
+	 */
 	loop: boolean;
 	loop: boolean;
+
+	/**
+	 * @default 0
+	 */
 	loopStart: number;
 	loopStart: number;
+
+	/**
+	 * @default 0
+	 */
 	loopEnd: number;
 	loopEnd: number;
+
+	/**
+	 * @default 0
+	 */
 	offset: number;
 	offset: number;
+
+	/**
+	 * @default undefined
+	 */
 	duration: number | undefined;
 	duration: number | undefined;
+
+	/**
+	 * @default 1
+	 */
 	playbackRate: number;
 	playbackRate: number;
+
+	/**
+	 * @default false
+	 */
 	isPlaying: boolean;
 	isPlaying: boolean;
+
+	/**
+	 * @default true
+	 */
 	hasPlaybackControl: boolean;
 	hasPlaybackControl: boolean;
+
+	/**
+	 * @default 'empty'
+	 */
 	sourceType: string;
 	sourceType: string;
-	source: AudioBufferSourceNode;
+	source: null | AudioBufferSourceNode;
+
+	/**
+	 * @default []
+	 */
 	filters: any[];
 	filters: any[];
 
 
 	getOutput(): NodeType;
 	getOutput(): NodeType;

+ 1 - 0
src/audio/Audio.js

@@ -26,6 +26,7 @@ class Audio extends Object3D {
 		this.playbackRate = 1;
 		this.playbackRate = 1;
 		this.isPlaying = false;
 		this.isPlaying = false;
 		this.hasPlaybackControl = true;
 		this.hasPlaybackControl = true;
+		this.source = null;
 		this.sourceType = 'empty';
 		this.sourceType = 'empty';
 
 
 		this._startedAt = 0;
 		this._startedAt = 0;

+ 5 - 1
src/audio/AudioAnalyser.d.ts

@@ -2,7 +2,11 @@ import { Audio } from './Audio';
 
 
 export class AudioAnalyser {
 export class AudioAnalyser {
 
 
-	constructor( audio: Audio<AudioNode>, fftSize: number );
+	/**
+	 * @param audio
+	 * @param [fftSize=2048]
+	 */
+	constructor( audio: Audio<AudioNode>, fftSize?: number );
 
 
 	analyser: AnalyserNode;
 	analyser: AnalyserNode;
 	data: Uint8Array;
 	data: Uint8Array;

+ 8 - 0
src/audio/AudioListener.d.ts

@@ -8,7 +8,15 @@ export class AudioListener extends Object3D {
 	type: 'AudioListener';
 	type: 'AudioListener';
 	context: AudioContext;
 	context: AudioContext;
 	gain: GainNode;
 	gain: GainNode;
+
+	/**
+	 * @default null
+	 */
 	filter: null | any;
 	filter: null | any;
+
+	/**
+	 * @default 0
+	 */
 	timeDelta: number;
 	timeDelta: number;
 
 
 	getInput(): GainNode;
 	getInput(): GainNode;

+ 3 - 0
src/cameras/ArrayCamera.d.ts

@@ -4,6 +4,9 @@ export class ArrayCamera extends PerspectiveCamera {
 
 
 	constructor( cameras?: PerspectiveCamera[] );
 	constructor( cameras?: PerspectiveCamera[] );
 
 
+	/**
+	 * @default []
+	 */
 	cameras: PerspectiveCamera[];
 	cameras: PerspectiveCamera[];
 	readonly isArrayCamera: true;
 	readonly isArrayCamera: true;
 
 

+ 3 - 0
src/cameras/Camera.d.ts

@@ -16,16 +16,19 @@ export class Camera extends Object3D {
 
 
 	/**
 	/**
 	 * This is the inverse of matrixWorld. MatrixWorld contains the Matrix which has the world transform of the Camera.
 	 * This is the inverse of matrixWorld. MatrixWorld contains the Matrix which has the world transform of the Camera.
+	 * @default new THREE.Matrix4()
 	 */
 	 */
 	matrixWorldInverse: Matrix4;
 	matrixWorldInverse: Matrix4;
 
 
 	/**
 	/**
 	 * This is the matrix which contains the projection.
 	 * This is the matrix which contains the projection.
+	 * @default new THREE.Matrix4()
 	 */
 	 */
 	projectionMatrix: Matrix4;
 	projectionMatrix: Matrix4;
 
 
 	/**
 	/**
 	 * This is the inverse of projectionMatrix.
 	 * This is the inverse of projectionMatrix.
+	 * @default new THREE.Matrix4()
 	 */
 	 */
 	projectionMatrixInverse: Matrix4;
 	projectionMatrixInverse: Matrix4;
 
 

+ 15 - 2
src/cameras/OrthographicCamera.d.ts

@@ -16,8 +16,8 @@ export class OrthographicCamera extends Camera {
 	 * @param right Camera frustum right plane.
 	 * @param right Camera frustum right plane.
 	 * @param top Camera frustum top plane.
 	 * @param top Camera frustum top plane.
 	 * @param bottom Camera frustum bottom plane.
 	 * @param bottom Camera frustum bottom plane.
-	 * @param near Camera frustum near plane.
-	 * @param far Camera frustum far plane.
+	 * @param [near=0.1] Camera frustum near plane.
+	 * @param [far=2000] Camera frustum far plane.
 	 */
 	 */
 	constructor(
 	constructor(
 		left: number,
 		left: number,
@@ -32,7 +32,14 @@ export class OrthographicCamera extends Camera {
 
 
 	readonly isOrthographicCamera: true;
 	readonly isOrthographicCamera: true;
 
 
+	/**
+	 * @default 1
+	 */
 	zoom: number;
 	zoom: number;
+
+	/**
+	 * @default null
+	 */
 	view: null | {
 	view: null | {
 		enabled: boolean;
 		enabled: boolean;
 		fullWidth: number;
 		fullWidth: number;
@@ -45,31 +52,37 @@ export class OrthographicCamera extends Camera {
 
 
 	/**
 	/**
 	 * Camera frustum left plane.
 	 * Camera frustum left plane.
+	 * @default -1
 	 */
 	 */
 	left: number;
 	left: number;
 
 
 	/**
 	/**
 	 * Camera frustum right plane.
 	 * Camera frustum right plane.
+	 * @default 1
 	 */
 	 */
 	right: number;
 	right: number;
 
 
 	/**
 	/**
 	 * Camera frustum top plane.
 	 * Camera frustum top plane.
+	 * @default 1
 	 */
 	 */
 	top: number;
 	top: number;
 
 
 	/**
 	/**
 	 * Camera frustum bottom plane.
 	 * Camera frustum bottom plane.
+	 * @default -1
 	 */
 	 */
 	bottom: number;
 	bottom: number;
 
 
 	/**
 	/**
 	 * Camera frustum near plane.
 	 * Camera frustum near plane.
+	 * @default 0.1
 	 */
 	 */
 	near: number;
 	near: number;
 
 
 	/**
 	/**
 	 * Camera frustum far plane.
 	 * Camera frustum far plane.
+	 * @default 2000
 	 */
 	 */
 	far: number;
 	far: number;
 
 

+ 26 - 4
src/cameras/PerspectiveCamera.d.ts

@@ -8,10 +8,10 @@ import { Camera } from './Camera';
 export class PerspectiveCamera extends Camera {
 export class PerspectiveCamera extends Camera {
 
 
 	/**
 	/**
-	 * @param fov Camera frustum vertical field of view. Default value is 50.
-	 * @param aspect Camera frustum aspect ratio. Default value is 1.
-	 * @param near Camera frustum near plane. Default value is 0.1.
-	 * @param far Camera frustum far plane. Default value is 2000.
+	 * @param [fov=50] Camera frustum vertical field of view. Default value is 50.
+	 * @param [aspect=1] Camera frustum aspect ratio. Default value is 1.
+	 * @param [near=0.1] Camera frustum near plane. Default value is 0.1.
+	 * @param [far=2000] Camera frustum far plane. Default value is 2000.
 	 */
 	 */
 	constructor( fov?: number, aspect?: number, near?: number, far?: number );
 	constructor( fov?: number, aspect?: number, near?: number, far?: number );
 
 
@@ -19,29 +19,43 @@ export class PerspectiveCamera extends Camera {
 
 
 	readonly isPerspectiveCamera: true;
 	readonly isPerspectiveCamera: true;
 
 
+	/**
+	 * @default 1
+	 */
 	zoom: number;
 	zoom: number;
 
 
 	/**
 	/**
 	 * Camera frustum vertical field of view, from bottom to top of view, in degrees.
 	 * Camera frustum vertical field of view, from bottom to top of view, in degrees.
+	 * @default 50
 	 */
 	 */
 	fov: number;
 	fov: number;
 
 
 	/**
 	/**
 	 * Camera frustum aspect ratio, window width divided by window height.
 	 * Camera frustum aspect ratio, window width divided by window height.
+	 * @default 1
 	 */
 	 */
 	aspect: number;
 	aspect: number;
 
 
 	/**
 	/**
 	 * Camera frustum near plane.
 	 * Camera frustum near plane.
+	 * @default 0.1
 	 */
 	 */
 	near: number;
 	near: number;
 
 
 	/**
 	/**
 	 * Camera frustum far plane.
 	 * Camera frustum far plane.
+	 * @default 2000
 	 */
 	 */
 	far: number;
 	far: number;
 
 
+	/**
+	 * @default 10
+	 */
 	focus: number;
 	focus: number;
+
+	/**
+	 * @default null
+	 */
 	view: null | {
 	view: null | {
 		enabled: boolean;
 		enabled: boolean;
 		fullWidth: number;
 		fullWidth: number;
@@ -51,7 +65,15 @@ export class PerspectiveCamera extends Camera {
 		width: number;
 		width: number;
 		height: number;
 		height: number;
 	};
 	};
+
+	/**
+	 * @default 35
+	 */
 	filmGauge: number;
 	filmGauge: number;
+
+	/**
+	 * @default 0
+	 */
 	filmOffset: number;
 	filmOffset: number;
 
 
 	setFocalLength( focalLength: number ): void;
 	setFocalLength( focalLength: number ): void;

+ 8 - 0
src/cameras/StereoCamera.d.ts

@@ -7,8 +7,16 @@ export class StereoCamera extends Camera {
 
 
 	type: 'StereoCamera';
 	type: 'StereoCamera';
 
 
+	/**
+	 * @default 1
+	 */
 	aspect: number;
 	aspect: number;
+
+	/**
+	 * @default 0.064
+	 */
 	eyeSep: number;
 	eyeSep: number;
+
 	cameraL: PerspectiveCamera;
 	cameraL: PerspectiveCamera;
 	cameraR: PerspectiveCamera;
 	cameraR: PerspectiveCamera;
 
 

+ 23 - 0
src/core/BufferAttribute.d.ts

@@ -9,13 +9,36 @@ export class BufferAttribute {
 
 
 	constructor( array: ArrayLike<number>, itemSize: number, normalized?: boolean ); // array parameter should be TypedArray.
 	constructor( array: ArrayLike<number>, itemSize: number, normalized?: boolean ); // array parameter should be TypedArray.
 
 
+	/**
+	 * @default ''
+	 */
 	name: string;
 	name: string;
 	array: ArrayLike<number>;
 	array: ArrayLike<number>;
 	itemSize: number;
 	itemSize: number;
+
+	/**
+	 * @default THREE.StaticDrawUsage
+	 */
 	usage: Usage;
 	usage: Usage;
+
+	/**
+	 * @default { offset: number; count: number }
+	 */
 	updateRange: { offset: number; count: number };
 	updateRange: { offset: number; count: number };
+
+	/**
+	 * @default 0
+	 */
 	version: number;
 	version: number;
+
+	/**
+	 * @default false
+	 */
 	normalized: boolean;
 	normalized: boolean;
+
+	/**
+	 * @default 0
+	 */
 	count: number;
 	count: number;
 
 
 	set needsUpdate( value: boolean );
 	set needsUpdate( value: boolean );

+ 44 - 0
src/core/BufferGeometry.d.ts

@@ -31,20 +31,64 @@ export class BufferGeometry extends EventDispatcher {
 	 */
 	 */
 	id: number;
 	id: number;
 	uuid: string;
 	uuid: string;
+
+	/**
+	 * @default ''
+	 */
 	name: string;
 	name: string;
+
+	/**
+	 * @default 'BufferGeometry'
+	 */
 	type: string;
 	type: string;
+
+	/**
+	 * @default null
+	 */
 	index: BufferAttribute | null;
 	index: BufferAttribute | null;
+
+	/**
+	 * @default {}
+	 */
 	attributes: {
 	attributes: {
 		[name: string]: BufferAttribute | InterleavedBufferAttribute;
 		[name: string]: BufferAttribute | InterleavedBufferAttribute;
 	};
 	};
+
+	/**
+	 * @default {}
+	 */
 	morphAttributes: {
 	morphAttributes: {
 		[name: string]: ( BufferAttribute | InterleavedBufferAttribute )[];
 		[name: string]: ( BufferAttribute | InterleavedBufferAttribute )[];
 	};
 	};
+
+	/**
+	 * @default false
+	 */
 	morphTargetsRelative: boolean;
 	morphTargetsRelative: boolean;
+
+	/**
+	 * @default []
+	 */
 	groups: { start: number; count: number; materialIndex?: number }[];
 	groups: { start: number; count: number; materialIndex?: number }[];
+
+	/**
+	 * @default null
+	 */
 	boundingBox: Box3 | null;
 	boundingBox: Box3 | null;
+
+	/**
+	 * @default null
+	 */
 	boundingSphere: Sphere | null;
 	boundingSphere: Sphere | null;
+
+	/**
+	 * @default { start: 0, count: Infinity }
+	 */
 	drawRange: { start: number; count: number };
 	drawRange: { start: number; count: number };
+
+	/**
+	 * @default {}
+	 */
 	userData: {[key: string]: any};
 	userData: {[key: string]: any};
 	readonly isBufferGeometry: true;
 	readonly isBufferGeometry: true;
 
 

+ 6 - 1
src/core/Clock.d.ts

@@ -6,35 +6,40 @@
 export class Clock {
 export class Clock {
 
 
 	/**
 	/**
-	 * @param autoStart Automatically start the clock.
+	 * @param [autoStart=true] Automatically start the clock.
 	 */
 	 */
 	constructor( autoStart?: boolean );
 	constructor( autoStart?: boolean );
 
 
 	/**
 	/**
 	 * If set, starts the clock automatically when the first update is called.
 	 * If set, starts the clock automatically when the first update is called.
+	 * @default true
 	 */
 	 */
 	autoStart: boolean;
 	autoStart: boolean;
 
 
 	/**
 	/**
 	 * When the clock is running, It holds the starttime of the clock.
 	 * When the clock is running, It holds the starttime of the clock.
 	 * This counted from the number of milliseconds elapsed since 1 January 1970 00:00:00 UTC.
 	 * This counted from the number of milliseconds elapsed since 1 January 1970 00:00:00 UTC.
+	 * @default 0
 	 */
 	 */
 	startTime: number;
 	startTime: number;
 
 
 	/**
 	/**
 	 * When the clock is running, It holds the previous time from a update.
 	 * When the clock is running, It holds the previous time from a update.
 	 * This counted from the number of milliseconds elapsed since 1 January 1970 00:00:00 UTC.
 	 * This counted from the number of milliseconds elapsed since 1 January 1970 00:00:00 UTC.
+	 * @default 0
 	 */
 	 */
 	oldTime: number;
 	oldTime: number;
 
 
 	/**
 	/**
 	 * When the clock is running, It holds the time elapsed between the start of the clock to the previous update.
 	 * When the clock is running, It holds the time elapsed between the start of the clock to the previous update.
 	 * This parameter is in seconds of three decimal places.
 	 * This parameter is in seconds of three decimal places.
+	 * @default 0
 	 */
 	 */
 	elapsedTime: number;
 	elapsedTime: number;
 
 
 	/**
 	/**
 	 * This property keeps track whether the clock is running or not.
 	 * This property keeps track whether the clock is running or not.
+	 * @default false
 	 */
 	 */
 	running: boolean;
 	running: boolean;
 
 

+ 68 - 0
src/core/DirectGeometry.d.ts

@@ -18,22 +18,90 @@ export class DirectGeometry {
 	uuid: string;
 	uuid: string;
 	name: string;
 	name: string;
 	type: string;
 	type: string;
+
+	/**
+	 * @default []
+	 */
 	indices: number[];
 	indices: number[];
+
+	/**
+	 * @default []
+	 */
 	vertices: Vector3[];
 	vertices: Vector3[];
+
+	/**
+	 * @default []
+	 */
 	normals: Vector3[];
 	normals: Vector3[];
+
+	/**
+	 * @default []
+	 */
 	colors: Color[];
 	colors: Color[];
+
+	/**
+	 * @default []
+	 */
 	uvs: Vector2[];
 	uvs: Vector2[];
+
+	/**
+	 * @default []
+	 */
 	uvs2: Vector2[];
 	uvs2: Vector2[];
+
+	/**
+	 * @default []
+	 */
 	groups: { start: number; materialIndex: number }[];
 	groups: { start: number; materialIndex: number }[];
+
+	/**
+	 * @default {}
+	 */
 	morphTargets: MorphTarget[];
 	morphTargets: MorphTarget[];
+
+	/**
+	 * @default []
+	 */
 	skinWeights: Vector4[];
 	skinWeights: Vector4[];
+
+	/**
+	 * @default []
+	 */
 	skinIndices: Vector4[];
 	skinIndices: Vector4[];
+
+	/**
+	 * @default null
+	 */
 	boundingBox: Box3 | null;
 	boundingBox: Box3 | null;
+
+	/**
+	 * @default null
+	 */
 	boundingSphere: Sphere | null;
 	boundingSphere: Sphere | null;
+
+	/**
+	 * @default false
+	 */
 	verticesNeedUpdate: boolean;
 	verticesNeedUpdate: boolean;
+
+	/**
+	 * @default false
+	 */
 	normalsNeedUpdate: boolean;
 	normalsNeedUpdate: boolean;
+
+	/**
+	 * @default false
+	 */
 	colorsNeedUpdate: boolean;
 	colorsNeedUpdate: boolean;
+
+	/**
+	 * @default false
+	 */
 	uvsNeedUpdate: boolean;
 	uvsNeedUpdate: boolean;
+
+	/**
+	 * @default false
+	 */
 	groupsNeedUpdate: boolean;
 	groupsNeedUpdate: boolean;
 
 
 	computeBoundingBox(): void;
 	computeBoundingBox(): void;

+ 5 - 0
src/core/Face3.d.ts

@@ -66,26 +66,31 @@ export class Face3 {
 
 
 	/**
 	/**
 	 * Face normal.
 	 * Face normal.
+	 * @default new THREE.Vector3()
 	 */
 	 */
 	normal: Vector3;
 	normal: Vector3;
 
 
 	/**
 	/**
 	 * Array of 3 vertex normals.
 	 * Array of 3 vertex normals.
+	 * @default []
 	 */
 	 */
 	vertexNormals: Vector3[];
 	vertexNormals: Vector3[];
 
 
 	/**
 	/**
 	 * Face color.
 	 * Face color.
+	 * @default new THREE.Color()
 	 */
 	 */
 	color: Color;
 	color: Color;
 
 
 	/**
 	/**
 	 * Array of 3 vertex colors.
 	 * Array of 3 vertex colors.
+	 * @default []
 	 */
 	 */
 	vertexColors: Color[];
 	vertexColors: Color[];
 
 
 	/**
 	/**
 	 * Material index (points to {@link Geometry.materials}).
 	 * Material index (points to {@link Geometry.materials}).
+	 * @default 0
 	 */
 	 */
 	materialIndex: number;
 	materialIndex: number;
 
 

+ 22 - 1
src/core/Geometry.d.ts

@@ -54,14 +54,19 @@ export class Geometry extends EventDispatcher {
 
 
 	/**
 	/**
 	 * Name for this geometry. Default is an empty string.
 	 * Name for this geometry. Default is an empty string.
+	 * @default ''
 	 */
 	 */
 	name: string;
 	name: string;
 
 
+	/**
+	 * @default 'Geometry'
+	 */
 	type: string;
 	type: string;
 
 
 	/**
 	/**
 	 * The array of vertices hold every position of points of the model.
 	 * The array of vertices hold every position of points of the model.
 	 * To signal an update in this array, Geometry.verticesNeedUpdate needs to be set to true.
 	 * To signal an update in this array, Geometry.verticesNeedUpdate needs to be set to true.
+	 * @default []
 	 */
 	 */
 	vertices: Vector3[];
 	vertices: Vector3[];
 
 
@@ -70,6 +75,7 @@ export class Geometry extends EventDispatcher {
 	 * Used in ParticleSystem, Line and Ribbon.
 	 * Used in ParticleSystem, Line and Ribbon.
 	 * Meshes use per-face-use-of-vertex colors embedded directly in faces.
 	 * Meshes use per-face-use-of-vertex colors embedded directly in faces.
 	 * To signal an update in this array, Geometry.colorsNeedUpdate needs to be set to true.
 	 * To signal an update in this array, Geometry.colorsNeedUpdate needs to be set to true.
+	 * @default []
 	 */
 	 */
 	colors: Color[];
 	colors: Color[];
 
 
@@ -77,6 +83,7 @@ export class Geometry extends EventDispatcher {
 	 * Array of triangles or/and quads.
 	 * Array of triangles or/and quads.
 	 * The array of faces describe how each vertex in the model is connected with each other.
 	 * The array of faces describe how each vertex in the model is connected with each other.
 	 * To signal an update in this array, Geometry.elementsNeedUpdate needs to be set to true.
 	 * To signal an update in this array, Geometry.elementsNeedUpdate needs to be set to true.
+	 * @default []
 	 */
 	 */
 	faces: Face3[];
 	faces: Face3[];
 
 
@@ -84,6 +91,7 @@ export class Geometry extends EventDispatcher {
 	 * Array of face UV layers.
 	 * Array of face UV layers.
 	 * Each UV layer is an array of UV matching order and number of vertices in faces.
 	 * Each UV layer is an array of UV matching order and number of vertices in faces.
 	 * To signal an update in this array, Geometry.uvsNeedUpdate needs to be set to true.
 	 * To signal an update in this array, Geometry.uvsNeedUpdate needs to be set to true.
+	 * @default [[]]
 	 */
 	 */
 	faceVertexUvs: Vector2[][][];
 	faceVertexUvs: Vector2[][][];
 
 
@@ -93,6 +101,7 @@ export class Geometry extends EventDispatcher {
 	 *		 { name: "targetName", vertices: [ new THREE.Vector3(), ... ] }
 	 *		 { name: "targetName", vertices: [ new THREE.Vector3(), ... ] }
 	 *
 	 *
 	 * Morph vertices match number and order of primary vertices.
 	 * Morph vertices match number and order of primary vertices.
+	 * @default []
 	 */
 	 */
 	morphTargets: MorphTarget[];
 	morphTargets: MorphTarget[];
 
 
@@ -100,66 +109,78 @@ export class Geometry extends EventDispatcher {
 	 * Array of morph normals. Morph normals have similar structure as morph targets, each normal set is a Javascript object:
 	 * Array of morph normals. Morph normals have similar structure as morph targets, each normal set is a Javascript object:
 	 *
 	 *
 	 *		 morphNormal = { name: "NormalName", normals: [ new THREE.Vector3(), ... ] }
 	 *		 morphNormal = { name: "NormalName", normals: [ new THREE.Vector3(), ... ] }
+	 * @default []
 	 */
 	 */
 	morphNormals: MorphNormals[];
 	morphNormals: MorphNormals[];
 
 
 	/**
 	/**
 	 * Array of skinning weights, matching number and order of vertices.
 	 * Array of skinning weights, matching number and order of vertices.
+	 * @default []
 	 */
 	 */
 	skinWeights: Vector4[];
 	skinWeights: Vector4[];
 
 
 	/**
 	/**
 	 * Array of skinning indices, matching number and order of vertices.
 	 * Array of skinning indices, matching number and order of vertices.
+	 * @default []
 	 */
 	 */
 	skinIndices: Vector4[];
 	skinIndices: Vector4[];
 
 
 	/**
 	/**
-	 *
+	 * @default []
 	 */
 	 */
 	lineDistances: number[];
 	lineDistances: number[];
 
 
 	/**
 	/**
 	 * Bounding box.
 	 * Bounding box.
+	 * @default null
 	 */
 	 */
 	boundingBox: Box3 | null;
 	boundingBox: Box3 | null;
 
 
 	/**
 	/**
 	 * Bounding sphere.
 	 * Bounding sphere.
+	 * @default null
 	 */
 	 */
 	boundingSphere: Sphere | null;
 	boundingSphere: Sphere | null;
 
 
 	/**
 	/**
 	 * Set to true if the vertices array has been updated.
 	 * Set to true if the vertices array has been updated.
+	 * @default false
 	 */
 	 */
 	verticesNeedUpdate: boolean;
 	verticesNeedUpdate: boolean;
 
 
 	/**
 	/**
 	 * Set to true if the faces array has been updated.
 	 * Set to true if the faces array has been updated.
+	 * @default false
 	 */
 	 */
 	elementsNeedUpdate: boolean;
 	elementsNeedUpdate: boolean;
 
 
 	/**
 	/**
 	 * Set to true if the uvs array has been updated.
 	 * Set to true if the uvs array has been updated.
+	 * @default false
 	 */
 	 */
 	uvsNeedUpdate: boolean;
 	uvsNeedUpdate: boolean;
 
 
 	/**
 	/**
 	 * Set to true if the normals array has been updated.
 	 * Set to true if the normals array has been updated.
+	 * @default false
 	 */
 	 */
 	normalsNeedUpdate: boolean;
 	normalsNeedUpdate: boolean;
 
 
 	/**
 	/**
 	 * Set to true if the colors array has been updated.
 	 * Set to true if the colors array has been updated.
+	 * @default false
 	 */
 	 */
 	colorsNeedUpdate: boolean;
 	colorsNeedUpdate: boolean;
 
 
 	/**
 	/**
 	 * Set to true if the linedistances array has been updated.
 	 * Set to true if the linedistances array has been updated.
+	 * @default false
 	 */
 	 */
 	lineDistancesNeedUpdate: boolean;
 	lineDistancesNeedUpdate: boolean;
 
 
 	/**
 	/**
 	 *
 	 *
+	 * @default false
 	 */
 	 */
 	groupsNeedUpdate: boolean;
 	groupsNeedUpdate: boolean;
 
 

+ 3 - 0
src/core/InstancedBufferAttribute.d.ts

@@ -44,6 +44,9 @@ export class InstancedBufferAttribute extends BufferAttribute {
 		meshPerAttribute?: number
 		meshPerAttribute?: number
 	);
 	);
 
 
+	/**
+	 * @default 1
+	 */
 	meshPerAttribute: number;
 	meshPerAttribute: number;
 
 
 }
 }

+ 9 - 0
src/core/InstancedBufferGeometry.d.ts

@@ -7,7 +7,16 @@ export class InstancedBufferGeometry extends BufferGeometry {
 
 
 	constructor();
 	constructor();
 
 
+	/**
+	 * @default 'InstancedBufferGeometry
+	 */
+	type: string;
+
 	groups: { start: number; count: number; instances: number }[];
 	groups: { start: number; count: number; instances: number }[];
+
+	/**
+	 * @default Infinity
+	 */
 	instanceCount: number;
 	instanceCount: number;
 
 
 	addGroup( start: number, count: number, instances: number ): void;
 	addGroup( start: number, count: number, instances: number ): void;

+ 3 - 0
src/core/InstancedInterleavedBuffer.d.ts

@@ -11,6 +11,9 @@ export class InstancedInterleavedBuffer extends InterleavedBuffer {
 		meshPerAttribute?: number
 		meshPerAttribute?: number
 	);
 	);
 
 
+	/**
+	 * @default 1
+	 */
 	meshPerAttribute: number;
 	meshPerAttribute: number;
 
 
 }
 }

+ 17 - 0
src/core/InterleavedBuffer.d.ts

@@ -10,10 +10,27 @@ export class InterleavedBuffer {
 
 
 	array: ArrayLike<number>;
 	array: ArrayLike<number>;
 	stride: number;
 	stride: number;
+
+	/**
+	 * @default THREE.StaticDrawUsage
+	 */
 	usage: Usage;
 	usage: Usage;
+
+	/**
+	 * @default { offset: number; count: number }
+	 */
 	updateRange: { offset: number; count: number };
 	updateRange: { offset: number; count: number };
+
+	/**
+	 * @default 0
+	 */
 	version: number;
 	version: number;
+
 	length: number;
 	length: number;
+
+	/**
+	 * @default 0
+	 */
 	count: number;
 	count: number;
 	needsUpdate: boolean;
 	needsUpdate: boolean;
 	uuid: string;
 	uuid: string;

+ 7 - 0
src/core/InterleavedBufferAttribute.d.ts

@@ -13,10 +13,17 @@ export class InterleavedBufferAttribute {
 		normalized?: boolean
 		normalized?: boolean
 	);
 	);
 
 
+	/**
+	 * @default ''
+	 */
 	name: string;
 	name: string;
 	data: InterleavedBuffer;
 	data: InterleavedBuffer;
 	itemSize: number;
 	itemSize: number;
 	offset: number;
 	offset: number;
+
+	/**
+	 * @default false
+	 */
 	normalized: boolean;
 	normalized: boolean;
 
 
 	get count(): number;
 	get count(): number;

+ 3 - 0
src/core/Layers.d.ts

@@ -2,6 +2,9 @@ export class Layers {
 
 
 	constructor();
 	constructor();
 
 
+	/**
+	 * @default 1 | 0
+	 */
 	mask: number;
 	mask: number;
 
 
 	set( channel: number ): void;
 	set( channel: number ): void;

+ 30 - 0
src/core/Object3D.d.ts

@@ -36,98 +36,128 @@ export class Object3D extends EventDispatcher {
 
 
 	/**
 	/**
 	 * Optional name of the object (doesn't need to be unique).
 	 * Optional name of the object (doesn't need to be unique).
+	 * @default ''
 	 */
 	 */
 	name: string;
 	name: string;
 
 
+	/**
+	 * @default 'Object3D'
+	 */
 	type: string;
 	type: string;
 
 
 	/**
 	/**
 	 * Object's parent in the scene graph.
 	 * Object's parent in the scene graph.
+	 * @default null
 	 */
 	 */
 	parent: Object3D | null;
 	parent: Object3D | null;
 
 
 	/**
 	/**
 	 * Array with object's children.
 	 * Array with object's children.
+	 * @default []
 	 */
 	 */
 	children: Object3D[];
 	children: Object3D[];
 
 
 	/**
 	/**
 	 * Up direction.
 	 * Up direction.
+	 * @default THREE.Object3D.DefaultUp.clone()
 	 */
 	 */
 	up: Vector3;
 	up: Vector3;
 
 
 	/**
 	/**
 	 * Object's local position.
 	 * Object's local position.
+	 * @default new THREE.Vector3()
 	 */
 	 */
 	readonly position: Vector3;
 	readonly position: Vector3;
 
 
 	/**
 	/**
 	 * Object's local rotation (Euler angles), in radians.
 	 * Object's local rotation (Euler angles), in radians.
+	 * @default new THREE.Euler()
 	 */
 	 */
 	readonly rotation: Euler;
 	readonly rotation: Euler;
 
 
 	/**
 	/**
 	 * Global rotation.
 	 * Global rotation.
+	 * @default new THREE.Quaternion()
 	 */
 	 */
 	readonly quaternion: Quaternion;
 	readonly quaternion: Quaternion;
 
 
 	/**
 	/**
 	 * Object's local scale.
 	 * Object's local scale.
+	 * @default new THREE.Vector3()
 	 */
 	 */
 	readonly scale: Vector3;
 	readonly scale: Vector3;
 
 
+	/**
+	 * @default new THREE.Matrix4()
+	 */
 	readonly modelViewMatrix: Matrix4;
 	readonly modelViewMatrix: Matrix4;
 
 
+	/**
+	 * @default new THREE.Matrix3()
+	 */
 	readonly normalMatrix: Matrix3;
 	readonly normalMatrix: Matrix3;
 
 
 	/**
 	/**
 	 * Local transform.
 	 * Local transform.
+	 * @default new THREE.Matrix4()
 	 */
 	 */
 	matrix: Matrix4;
 	matrix: Matrix4;
 
 
 	/**
 	/**
 	 * The global transform of the object. If the Object3d has no parent, then it's identical to the local transform.
 	 * The global transform of the object. If the Object3d has no parent, then it's identical to the local transform.
+	 * @default new THREE.Matrix4()
 	 */
 	 */
 	matrixWorld: Matrix4;
 	matrixWorld: Matrix4;
 
 
 	/**
 	/**
 	 * When this is set, it calculates the matrix of position, (rotation or quaternion) and scale every frame and also recalculates the matrixWorld property.
 	 * When this is set, it calculates the matrix of position, (rotation or quaternion) and scale every frame and also recalculates the matrixWorld property.
+	 * @default THREE.Object3D.DefaultMatrixAutoUpdate
 	 */
 	 */
 	matrixAutoUpdate: boolean;
 	matrixAutoUpdate: boolean;
 
 
 	/**
 	/**
 	 * When this is set, it calculates the matrixWorld in that frame and resets this property to false.
 	 * When this is set, it calculates the matrixWorld in that frame and resets this property to false.
+	 * @default false
 	 */
 	 */
 	matrixWorldNeedsUpdate: boolean;
 	matrixWorldNeedsUpdate: boolean;
 
 
+	/**
+	 * @default new THREE.Layers()
+	 */
 	layers: Layers;
 	layers: Layers;
 	/**
 	/**
 	 * Object gets rendered if true.
 	 * Object gets rendered if true.
+	 * @default true
 	 */
 	 */
 	visible: boolean;
 	visible: boolean;
 
 
 	/**
 	/**
 	 * Gets rendered into shadow map.
 	 * Gets rendered into shadow map.
+	 * @default false
 	 */
 	 */
 	castShadow: boolean;
 	castShadow: boolean;
 
 
 	/**
 	/**
 	 * Material gets baked in shadow receiving.
 	 * Material gets baked in shadow receiving.
+	 * @default false
 	 */
 	 */
 	receiveShadow: boolean;
 	receiveShadow: boolean;
 
 
 	/**
 	/**
 	 * When this is set, it checks every frame if the object is in the frustum of the camera. Otherwise the object gets drawn every frame even if it isn't visible.
 	 * When this is set, it checks every frame if the object is in the frustum of the camera. Otherwise the object gets drawn every frame even if it isn't visible.
+	 * @default true
 	 */
 	 */
 	frustumCulled: boolean;
 	frustumCulled: boolean;
 
 
 	/**
 	/**
 	 * Overrides the default rendering order of scene graph objects, from lowest to highest renderOrder. Opaque and transparent objects remain sorted independently though. When this property is set for an instance of Group, all descendants objects will be sorted and rendered together.
 	 * Overrides the default rendering order of scene graph objects, from lowest to highest renderOrder. Opaque and transparent objects remain sorted independently though. When this property is set for an instance of Group, all descendants objects will be sorted and rendered together.
+	 * @default 0
 	 */
 	 */
 	renderOrder: number;
 	renderOrder: number;
 
 
 	/**
 	/**
 	 * An object that can be used to store custom data about the Object3d. It should not hold references to functions as these will not be cloned.
 	 * An object that can be used to store custom data about the Object3d. It should not hold references to functions as these will not be cloned.
+	 * @default {}
 	 */
 	 */
 	userData: { [key: string]: any };
 	userData: { [key: string]: any };
 
 

+ 6 - 0
src/core/Raycaster.d.ts

@@ -48,12 +48,14 @@ export class Raycaster {
 	/**
 	/**
 	 * The near factor of the raycaster. This value indicates which objects can be discarded based on the
 	 * The near factor of the raycaster. This value indicates which objects can be discarded based on the
 	 * distance. This value shouldn't be negative and should be smaller than the far property.
 	 * distance. This value shouldn't be negative and should be smaller than the far property.
+	 * @default 0
 	 */
 	 */
 	near: number;
 	near: number;
 
 
 	/**
 	/**
 	 * The far factor of the raycaster. This value indicates which objects can be discarded based on the
 	 * The far factor of the raycaster. This value indicates which objects can be discarded based on the
 	 * distance. This value shouldn't be negative and should be larger than the near property.
 	 * distance. This value shouldn't be negative and should be larger than the near property.
+	 * @default Infinity
 	 */
 	 */
 	far: number;
 	far: number;
 
 
@@ -65,9 +67,13 @@ export class Raycaster {
 
 
 	/**
 	/**
 	 * Used by Raycaster to selectively ignore 3D objects when performing intersection tests.
 	 * Used by Raycaster to selectively ignore 3D objects when performing intersection tests.
+	 * @default new THREE.Layers()
 	 */
 	 */
 	layers: Layers;
 	layers: Layers;
 
 
+	/**
+	 * @default { Mesh: {}, Line: { threshold: 1 }, LOD: {}, Points: { threshold: 1 }, Sprite: {} }
+	 */
 	params: RaycasterParameters;
 	params: RaycasterParameters;
 
 
 	/**
 	/**

+ 6 - 1
src/extras/core/Curve.d.ts

@@ -8,10 +8,15 @@ import { Vector } from './../../math/Vector2';
  */
  */
 export class Curve<T extends Vector> {
 export class Curve<T extends Vector> {
 
 
+	/**
+	 * @default 'Curve'
+	 */
+	type: string;
+
 	/**
 	/**
 	 * This value determines the amount of divisions when calculating the cumulative segment lengths of a curve via .getLengths.
 	 * This value determines the amount of divisions when calculating the cumulative segment lengths of a curve via .getLengths.
 	 * To ensure precision when using methods like .getSpacedPoints, it is recommended to increase .arcLengthDivisions if the curve is very large.
 	 * To ensure precision when using methods like .getSpacedPoints, it is recommended to increase .arcLengthDivisions if the curve is very large.
-	 * Default is 200.
+	 * @default 200
 	 */
 	 */
 	arcLengthDivisions: number;
 	arcLengthDivisions: number;
 
 

+ 12 - 0
src/extras/core/CurvePath.d.ts

@@ -6,7 +6,19 @@ export class CurvePath<T extends Vector> extends Curve<T> {
 
 
 	constructor();
 	constructor();
 
 
+	/**
+	 * @default 'CurvePath'
+	 */
+	type: string;
+
+	/**
+	 * @default []
+	 */
 	curves: Curve<T>[];
 	curves: Curve<T>[];
+
+	/**
+	 * @default false
+	 */
 	autoClose: boolean;
 	autoClose: boolean;
 
 
 	add( curve: Curve<T> ): void;
 	add( curve: Curve<T> ): void;

+ 5 - 0
src/extras/core/Font.d.ts

@@ -4,6 +4,11 @@ export class Font {
 
 
 	constructor( jsondata: any );
 	constructor( jsondata: any );
 
 
+	/**
+	 * @default 'Font'
+	 */
+	type: string;
+
 	data: string;
 	data: string;
 
 
 	generateShapes( text: string, size: number ): Shape[];
 	generateShapes( text: string, size: number ): Shape[];

+ 8 - 0
src/extras/core/Path.d.ts

@@ -8,6 +8,14 @@ export class Path extends CurvePath<Vector2> {
 
 
 	constructor( points?: Vector2[] );
 	constructor( points?: Vector2[] );
 
 
+	/**
+	 * @default 'Path'
+	 */
+	type: string;
+
+	/**
+	 * @default new THREE.Vector2()
+	 */
 	currentPoint: Vector2;
 	currentPoint: Vector2;
 
 
 	/**
 	/**

+ 8 - 0
src/extras/core/Shape.d.ts

@@ -10,6 +10,14 @@ export class Shape extends Path {
 
 
 	constructor( points?: Vector2[] );
 	constructor( points?: Vector2[] );
 
 
+	/**
+	 * @default 'Shape'
+	 */
+	type: string;
+
+	/**
+	 * @default []
+	 */
 	holes: Path[];
 	holes: Path[];
 
 
 	/**
 	/**

+ 18 - 0
src/extras/core/ShapePath.d.ts

@@ -1,11 +1,29 @@
 import { Vector2 } from './../../math/Vector2';
 import { Vector2 } from './../../math/Vector2';
 import { Shape } from './Shape';
 import { Shape } from './Shape';
+import { Color } from '../../math/Color';
 
 
 export class ShapePath {
 export class ShapePath {
 
 
 	constructor();
 	constructor();
 
 
+	/**
+	 * @default 'ShapePath'
+	 */
+	type: string;
+
+	/**
+	 * @default new THREE.Color()
+	 */
+	color: Color;
+
+	/**
+	 * @default []
+	 */
 	subPaths: any[];
 	subPaths: any[];
+
+	/**
+	 * @default null
+	 */
 	currentPath: any;
 	currentPath: any;
 
 
 	moveTo( x: number, y: number ): this;
 	moveTo( x: number, y: number ): this;

+ 5 - 0
src/extras/curves/ArcCurve.d.ts

@@ -10,4 +10,9 @@ export class ArcCurve extends EllipseCurve {
 		aClockwise: boolean
 		aClockwise: boolean
 	);
 	);
 
 
+	/**
+	 * @default 'ArcCurve'
+	 */
+	type: string;
+
 }
 }

+ 14 - 0
src/extras/curves/CatmullRomCurve3.d.ts

@@ -34,6 +34,12 @@ export namespace CurveUtils {
 
 
 export class CatmullRomCurve3 extends Curve<Vector3> {
 export class CatmullRomCurve3 extends Curve<Vector3> {
 
 
+	/**
+	 * @param [points=[]]
+	 * @param [closed=false]
+	 * @param [curveType='centripetal']
+	 * @param [tension=0.5]
+	 */
 	constructor(
 	constructor(
 		points?: Vector3[],
 		points?: Vector3[],
 		closed?: boolean,
 		closed?: boolean,
@@ -41,6 +47,14 @@ export class CatmullRomCurve3 extends Curve<Vector3> {
 		tension?: number
 		tension?: number
 	);
 	);
 
 
+	/**
+	 * @default 'CatmullRomCurve3'
+	 */
+	type: string;
+
+	/**
+	 * @default []
+	 */
 	points: Vector3[];
 	points: Vector3[];
 
 
 }
 }

+ 20 - 0
src/extras/curves/CubicBezierCurve.d.ts

@@ -5,9 +5,29 @@ export class CubicBezierCurve extends Curve<Vector2> {
 
 
 	constructor( v0: Vector2, v1: Vector2, v2: Vector2, v3: Vector2 );
 	constructor( v0: Vector2, v1: Vector2, v2: Vector2, v3: Vector2 );
 
 
+	/**
+	 * @default 'CubicBezierCurve'
+	 */
+	type: string;
+
+	/**
+	 * @default new THREE.Vector2()
+	 */
 	v0: Vector2;
 	v0: Vector2;
+
+	/**
+	 * @default new THREE.Vector2()
+	 */
 	v1: Vector2;
 	v1: Vector2;
+
+	/**
+	 * @default new THREE.Vector2()
+	 */
 	v2: Vector2;
 	v2: Vector2;
+
+	/**
+	 * @default new THREE.Vector2()
+	 */
 	v3: Vector2;
 	v3: Vector2;
 
 
 }
 }

+ 20 - 0
src/extras/curves/CubicBezierCurve3.d.ts

@@ -5,9 +5,29 @@ export class CubicBezierCurve3 extends Curve<Vector3> {
 
 
 	constructor( v0: Vector3, v1: Vector3, v2: Vector3, v3: Vector3 );
 	constructor( v0: Vector3, v1: Vector3, v2: Vector3, v3: Vector3 );
 
 
+	/**
+	 * @default 'CubicBezierCurve3'
+	 */
+	type: string;
+
+	/**
+	 * @default new THREE.Vector3()
+	 */
 	v0: Vector3;
 	v0: Vector3;
+
+	/**
+	 * @default new THREE.Vector3()
+	 */
 	v1: Vector3;
 	v1: Vector3;
+
+	/**
+	 * @default new THREE.Vector3()
+	 */
 	v2: Vector3;
 	v2: Vector3;
+
+	/**
+	 * @default new THREE.Vector3()
+	 */
 	v3: Vector3;
 	v3: Vector3;
 
 
 }
 }

+ 36 - 0
src/extras/curves/EllipseCurve.d.ts

@@ -14,13 +14,49 @@ export class EllipseCurve extends Curve<Vector2> {
 		aRotation: number
 		aRotation: number
 	);
 	);
 
 
+	/**
+	 * @default 'EllipseCurve'
+	 */
+	type: string;
+
+	/**
+	 * @default 0
+	 */
 	aX: number;
 	aX: number;
+
+	/**
+	 * @default 0
+	 */
 	aY: number;
 	aY: number;
+
+	/**
+	 * @default 1
+	 */
 	xRadius: number;
 	xRadius: number;
+
+	/**
+	 * @default 1
+	 */
 	yRadius: number;
 	yRadius: number;
+
+	/**
+	 * @default 0
+	 */
 	aStartAngle: number;
 	aStartAngle: number;
+
+	/**
+	 * @default 2 * Math.PI
+	 */
 	aEndAngle: number;
 	aEndAngle: number;
+
+	/**
+	 * @default false
+	 */
 	aClockwise: boolean;
 	aClockwise: boolean;
+
+	/**
+	 * @default 0
+	 */
 	aRotation: number;
 	aRotation: number;
 
 
 }
 }

+ 13 - 0
src/extras/curves/LineCurve.d.ts

@@ -5,7 +5,20 @@ export class LineCurve extends Curve<Vector2> {
 
 
 	constructor( v1: Vector2, v2: Vector2 );
 	constructor( v1: Vector2, v2: Vector2 );
 
 
+	/**
+	 * @default 'LineCurve'
+	 */
+	type: string;
+
+
+	/**
+	 * @default new THREE.Vector2()
+	 */
 	v1: Vector2;
 	v1: Vector2;
+
+	/**
+	 * @default new THREE.Vector2()
+	 */
 	v2: Vector2;
 	v2: Vector2;
 
 
 }
 }

+ 13 - 0
src/extras/curves/LineCurve3.d.ts

@@ -5,7 +5,20 @@ export class LineCurve3 extends Curve<Vector3> {
 
 
 	constructor( v1: Vector3, v2: Vector3 );
 	constructor( v1: Vector3, v2: Vector3 );
 
 
+	/**
+	 * @default 'LineCurve3'
+	 */
+	type: string;
+
+
+	/**
+	 * @default new THREE.Vector3()
+	 */
 	v1: Vector3;
 	v1: Vector3;
+
+	/**
+	 * @default new THREE.Vector3()
+	 */
 	v2: Vector3;
 	v2: Vector3;
 
 
 }
 }

+ 16 - 0
src/extras/curves/QuadraticBezierCurve.d.ts

@@ -5,8 +5,24 @@ export class QuadraticBezierCurve extends Curve<Vector2> {
 
 
 	constructor( v0: Vector2, v1: Vector2, v2: Vector2 );
 	constructor( v0: Vector2, v1: Vector2, v2: Vector2 );
 
 
+	/**
+	 * @default 'QuadraticBezierCurve'
+	 */
+	type: string;
+
+	/**
+	 * @default new THREE.Vector2()
+	 */
 	v0: Vector2;
 	v0: Vector2;
+
+	/**
+	 * @default new THREE.Vector2()
+	 */
 	v1: Vector2;
 	v1: Vector2;
+
+	/**
+	 * @default new THREE.Vector2()
+	 */
 	v2: Vector2;
 	v2: Vector2;
 
 
 }
 }

+ 16 - 0
src/extras/curves/QuadraticBezierCurve3.d.ts

@@ -5,8 +5,24 @@ export class QuadraticBezierCurve3 extends Curve<Vector3> {
 
 
 	constructor( v0: Vector3, v1: Vector3, v2: Vector3 );
 	constructor( v0: Vector3, v1: Vector3, v2: Vector3 );
 
 
+	/**
+	 * @default 'QuadraticBezierCurve3'
+	 */
+	type: string;
+
+	/**
+	 * @default new THREE.Vector3()
+	 */
 	v0: Vector3;
 	v0: Vector3;
+
+	/**
+	 * @default new THREE.Vector3()
+	 */
 	v1: Vector3;
 	v1: Vector3;
+
+	/**
+	 * @default new THREE.Vector3()
+	 */
 	v2: Vector3;
 	v2: Vector3;
 
 
 }
 }

+ 8 - 0
src/extras/curves/SplineCurve.d.ts

@@ -5,6 +5,14 @@ export class SplineCurve extends Curve<Vector2> {
 
 
 	constructor( points?: Vector2[] );
 	constructor( points?: Vector2[] );
 
 
+	/**
+	 * @default 'SplineCurve'
+	 */
+	type: string;
+
+	/**
+	 * @default []
+	 */
 	points: Vector2[];
 	points: Vector2[];
 
 
 }
 }

+ 33 - 0
src/extras/objects/ImmediateRenderObject.d.ts

@@ -11,16 +11,49 @@ export class ImmediateRenderObject extends Object3D {
 
 
 	material: Material;
 	material: Material;
 
 
+	/**
+	 * @default false
+	 */
 	hasPositions: boolean;
 	hasPositions: boolean;
+
+	/**
+	 * @default false
+	 */
 	hasNormals: boolean;
 	hasNormals: boolean;
+
+	/**
+	 * @default false
+	 */
 	hasColors: boolean;
 	hasColors: boolean;
+
+	/**
+	 * @default false
+	 */
 	hasUvs: boolean;
 	hasUvs: boolean;
 
 
+	/**
+	 * @default null
+	 */
 	positionArray: null | Float32Array;
 	positionArray: null | Float32Array;
+
+	/**
+	 * @default null
+	 */
 	normalArray: null | Float32Array;
 	normalArray: null | Float32Array;
+
+	/**
+	 * @default null
+	 */
 	colorArray: null | Float32Array;
 	colorArray: null | Float32Array;
+
+	/**
+	 * @default null
+	 */
 	uvArray: null | Float32Array;
 	uvArray: null | Float32Array;
 
 
+	/**
+	 * @default 0
+	 */
 	count: number;
 	count: number;
 
 
 	render( renderCallback: Function ): void;
 	render( renderCallback: Function ): void;

+ 24 - 6
src/geometries/BoxGeometry.d.ts

@@ -4,6 +4,14 @@ import { BufferGeometry } from '../core/BufferGeometry';
 // Extras / Geometries /////////////////////////////////////////////////////////////////////
 // Extras / Geometries /////////////////////////////////////////////////////////////////////
 export class BoxBufferGeometry extends BufferGeometry {
 export class BoxBufferGeometry extends BufferGeometry {
 
 
+	/**
+	 * @param [width=1] — Width of the sides on the X axis.
+	 * @param [height=1] — Height of the sides on the Y axis.
+	 * @param [depth=1] — Depth of the sides on the Z axis.
+	 * @param [widthSegments=1] — Number of segmented faces along the width of the sides.
+	 * @param [heightSegments=1] — Number of segmented faces along the height of the sides.
+	 * @param [depthSegments=1] — Number of segmented faces along the depth of the sides.
+	 */
 	constructor(
 	constructor(
 		width?: number,
 		width?: number,
 		height?: number,
 		height?: number,
@@ -13,6 +21,11 @@ export class BoxBufferGeometry extends BufferGeometry {
 		depthSegments?: number
 		depthSegments?: number
 	);
 	);
 
 
+	/**
+	 * @default 'BoxBufferGeometry'
+	 */
+	type: string;
+
 	parameters: {
 	parameters: {
 		width: number;
 		width: number;
 		height: number;
 		height: number;
@@ -30,12 +43,12 @@ export class BoxBufferGeometry extends BufferGeometry {
 export class BoxGeometry extends Geometry {
 export class BoxGeometry extends Geometry {
 
 
 	/**
 	/**
-	 * @param width — Width of the sides on the X axis.
-	 * @param height — Height of the sides on the Y axis.
-	 * @param depth — Depth of the sides on the Z axis.
-	 * @param widthSegments — Number of segmented faces along the width of the sides.
-	 * @param heightSegments — Number of segmented faces along the height of the sides.
-	 * @param depthSegments — Number of segmented faces along the depth of the sides.
+	 * @param [width=1] — Width of the sides on the X axis.
+	 * @param [height=1] — Height of the sides on the Y axis.
+	 * @param [depth=1] — Depth of the sides on the Z axis.
+	 * @param [widthSegments=1] — Number of segmented faces along the width of the sides.
+	 * @param [heightSegments=1] — Number of segmented faces along the height of the sides.
+	 * @param [depthSegments=1] — Number of segmented faces along the depth of the sides.
 	 */
 	 */
 	constructor(
 	constructor(
 		width?: number,
 		width?: number,
@@ -46,6 +59,11 @@ export class BoxGeometry extends Geometry {
 		depthSegments?: number
 		depthSegments?: number
 	);
 	);
 
 
+	/**
+	 * @default 'BoxGeometry'
+	 */
+	type: string;
+
 	parameters: {
 	parameters: {
 		width: number;
 		width: number;
 		height: number;
 		height: number;

+ 22 - 0
src/geometries/CircleGeometry.d.ts

@@ -3,6 +3,12 @@ import { BufferGeometry } from '../core/BufferGeometry';
 
 
 export class CircleBufferGeometry extends BufferGeometry {
 export class CircleBufferGeometry extends BufferGeometry {
 
 
+	/**
+	 * @param [radius=1]
+	 * @param [segments=8]
+	 * @param [thetaStart=0]
+	 * @param [widthSegments=Math.PI * 2]
+	 */
 	constructor(
 	constructor(
 		radius?: number,
 		radius?: number,
 		segments?: number,
 		segments?: number,
@@ -10,6 +16,11 @@ export class CircleBufferGeometry extends BufferGeometry {
 		thetaLength?: number
 		thetaLength?: number
 	);
 	);
 
 
+	/**
+	 * @default 'CircleBufferGeometry'
+	 */
+	type: string;
+
 	parameters: {
 	parameters: {
 		radius: number;
 		radius: number;
 		segments: number;
 		segments: number;
@@ -21,6 +32,12 @@ export class CircleBufferGeometry extends BufferGeometry {
 
 
 export class CircleGeometry extends Geometry {
 export class CircleGeometry extends Geometry {
 
 
+	/**
+	 * @param [radius=1]
+	 * @param [segments=8]
+	 * @param [thetaStart=0]
+	 * @param [widthSegments=Math.PI * 2]
+	 */
 	constructor(
 	constructor(
 		radius?: number,
 		radius?: number,
 		segments?: number,
 		segments?: number,
@@ -28,6 +45,11 @@ export class CircleGeometry extends Geometry {
 		thetaLength?: number
 		thetaLength?: number
 	);
 	);
 
 
+	/**
+	 * @default 'CircleGeometry'
+	 */
+	type: string;
+
 	parameters: {
 	parameters: {
 		radius: number;
 		radius: number;
 		segments: number;
 		segments: number;

+ 30 - 0
src/geometries/ConeGeometry.d.ts

@@ -3,6 +3,16 @@ import { CylinderBufferGeometry } from './CylinderGeometry';
 
 
 export class ConeBufferGeometry extends CylinderBufferGeometry {
 export class ConeBufferGeometry extends CylinderBufferGeometry {
 
 
+	/**
+	 * @param [radiusTop=0] — Radius of the cylinder at the top.
+	 * @param [radiusBottom=1] — Radius of the cylinder at the bottom.
+	 * @param [height=1] — Height of the cylinder.
+	 * @param [radiusSegments=8] — Number of segmented faces around the circumference of the cylinder.
+	 * @param [heightSegments=1] — Number of rows of faces along the height of the cylinder.
+	 * @param [openEnded=false] - A Boolean indicating whether or not to cap the ends of the cylinder.
+	 * @param [thetaStart=0]
+	 * @param [widthSegments=Math.PI * 2]
+	 */
 	constructor(
 	constructor(
 		radius?: number,
 		radius?: number,
 		height?: number,
 		height?: number,
@@ -13,10 +23,25 @@ export class ConeBufferGeometry extends CylinderBufferGeometry {
 		thetaLength?: number
 		thetaLength?: number
 	);
 	);
 
 
+	/**
+	 * @default 'ConeBufferGeometry'
+	 */
+	type: string;
+
 }
 }
 
 
 export class ConeGeometry extends CylinderGeometry {
 export class ConeGeometry extends CylinderGeometry {
 
 
+	/**
+	 * @param [radiusTop=0] — Radius of the cylinder at the top.
+	 * @param [radiusBottom=1] — Radius of the cylinder at the bottom.
+	 * @param [height=1] — Height of the cylinder.
+	 * @param [radiusSegments=8] — Number of segmented faces around the circumference of the cylinder.
+	 * @param [heightSegments=1] — Number of rows of faces along the height of the cylinder.
+	 * @param [openEnded=false] - A Boolean indicating whether or not to cap the ends of the cylinder.
+	 * @param [thetaStart=0]
+	 * @param [widthSegments=Math.PI * 2]
+	 */
 	constructor(
 	constructor(
 		radius?: number,
 		radius?: number,
 		height?: number,
 		height?: number,
@@ -27,4 +52,9 @@ export class ConeGeometry extends CylinderGeometry {
 		thetaLength?: number
 		thetaLength?: number
 	);
 	);
 
 
+	/**
+	 * @default 'ConeGeometry'
+	 */
+	type: string;
+
 }
 }

+ 28 - 6
src/geometries/CylinderGeometry.d.ts

@@ -3,6 +3,16 @@ import { BufferGeometry } from '../core/BufferGeometry';
 
 
 export class CylinderBufferGeometry extends BufferGeometry {
 export class CylinderBufferGeometry extends BufferGeometry {
 
 
+	/**
+	 * @param [radiusTop=1] — Radius of the cylinder at the top.
+	 * @param [radiusBottom=1] — Radius of the cylinder at the bottom.
+	 * @param [height=1] — Height of the cylinder.
+	 * @param [radiusSegments=8] — Number of segmented faces around the circumference of the cylinder.
+	 * @param [heightSegments=1] — Number of rows of faces along the height of the cylinder.
+	 * @param [openEnded=false] - A Boolean indicating whether or not to cap the ends of the cylinder.
+	 * @param [thetaStart=0]
+	 * @param [widthSegments=Math.PI * 2]
+	 */
 	constructor(
 	constructor(
 		radiusTop?: number,
 		radiusTop?: number,
 		radiusBottom?: number,
 		radiusBottom?: number,
@@ -14,6 +24,11 @@ export class CylinderBufferGeometry extends BufferGeometry {
 		thetaLength?: number
 		thetaLength?: number
 	);
 	);
 
 
+	/**
+	 * @default 'CylinderBufferGeometry'
+	 */
+	type: string;
+
 	parameters: {
 	parameters: {
 		radiusTop: number;
 		radiusTop: number;
 		radiusBottom: number;
 		radiusBottom: number;
@@ -30,12 +45,14 @@ export class CylinderBufferGeometry extends BufferGeometry {
 export class CylinderGeometry extends Geometry {
 export class CylinderGeometry extends Geometry {
 
 
 	/**
 	/**
-	 * @param radiusTop — Radius of the cylinder at the top.
-	 * @param radiusBottom — Radius of the cylinder at the bottom.
-	 * @param height — Height of the cylinder.
-	 * @param radiusSegments — Number of segmented faces around the circumference of the cylinder.
-	 * @param heightSegments — Number of rows of faces along the height of the cylinder.
-	 * @param openEnded - A Boolean indicating whether or not to cap the ends of the cylinder.
+	 * @param [radiusTop=1] — Radius of the cylinder at the top.
+	 * @param [radiusBottom=1] — Radius of the cylinder at the bottom.
+	 * @param [height=1] — Height of the cylinder.
+	 * @param [radiusSegments=8] — Number of segmented faces around the circumference of the cylinder.
+	 * @param [heightSegments=1] — Number of rows of faces along the height of the cylinder.
+	 * @param [openEnded=false] - A Boolean indicating whether or not to cap the ends of the cylinder.
+	 * @param [thetaStart=0]
+	 * @param [widthSegments=Math.PI * 2]
 	 */
 	 */
 	constructor(
 	constructor(
 		radiusTop?: number,
 		radiusTop?: number,
@@ -48,6 +65,11 @@ export class CylinderGeometry extends Geometry {
 		thetaLength?: number
 		thetaLength?: number
 	);
 	);
 
 
+	/**
+	 * @default 'CylinderGeometry'
+	 */
+	type: string;
+
 	parameters: {
 	parameters: {
 		radiusTop: number;
 		radiusTop: number;
 		radiusBottom: number;
 		radiusBottom: number;

+ 18 - 0
src/geometries/DodecahedronGeometry.d.ts

@@ -3,14 +3,32 @@ import { PolyhedronBufferGeometry } from './PolyhedronGeometry';
 
 
 export class DodecahedronBufferGeometry extends PolyhedronBufferGeometry {
 export class DodecahedronBufferGeometry extends PolyhedronBufferGeometry {
 
 
+	/**
+	 * @param [radius=1]
+	 * @param [detail=0]
+	 */
 	constructor( radius?: number, detail?: number );
 	constructor( radius?: number, detail?: number );
 
 
+	/**
+	 * @default 'DodecahedronBufferGeometry'
+	 */
+	type: string;
+
 }
 }
 
 
 export class DodecahedronGeometry extends Geometry {
 export class DodecahedronGeometry extends Geometry {
 
 
+	/**
+	 * @param [radius=1]
+	 * @param [detail=0]
+	 */
 	constructor( radius?: number, detail?: number );
 	constructor( radius?: number, detail?: number );
 
 
+	/**
+	 * @default 'DodecahedronGeometry'
+	 */
+	type: string;
+
 	parameters: {
 	parameters: {
 		radius: number;
 		radius: number;
 		detail: number;
 		detail: number;

+ 13 - 0
src/geometries/EdgesGeometry.d.ts

@@ -3,6 +3,19 @@ import { Geometry } from '../core/Geometry';
 
 
 export class EdgesGeometry extends BufferGeometry {
 export class EdgesGeometry extends BufferGeometry {
 
 
+	/**
+	 * @param geometry
+	 * @param [thresholdAngle=1]
+	 */
 	constructor( geometry: BufferGeometry | Geometry, thresholdAngle?: number );
 	constructor( geometry: BufferGeometry | Geometry, thresholdAngle?: number );
 
 
+	/**
+	 * @default 'EdgesGeometry'
+	 */
+	type: string;
+
+	parameters: {
+		thresholdAngle: number;
+	};
+
 }
 }

+ 31 - 0
src/geometries/ExtrudeGeometry.d.ts

@@ -6,13 +6,34 @@ import { Geometry } from './../core/Geometry';
 import { BufferGeometry } from './../core/BufferGeometry';
 import { BufferGeometry } from './../core/BufferGeometry';
 
 
 export interface ExtrudeGeometryOptions {
 export interface ExtrudeGeometryOptions {
+	/**
+	 * @default 12
+	 */
 	curveSegments?: number;
 	curveSegments?: number;
+	/**
+	 * @default 1
+	 */
 	steps?: number;
 	steps?: number;
+	/**
+	 * @default 100
+	 */
 	depth?: number;
 	depth?: number;
+	/**
+	 * @default true
+	 */
 	bevelEnabled?: boolean;
 	bevelEnabled?: boolean;
+	/**
+	 * @default 6
+	 */
 	bevelThickness?: number;
 	bevelThickness?: number;
 	bevelSize?: number;
 	bevelSize?: number;
+	/**
+	 * @default 0
+	 */
 	bevelOffset?: number;
 	bevelOffset?: number;
+	/**
+	 * @default 3
+	 */
 	bevelSegments?: number;
 	bevelSegments?: number;
 	extrudePath?: Curve<Vector3>;
 	extrudePath?: Curve<Vector3>;
 	UVGenerator?: UVGenerator;
 	UVGenerator?: UVGenerator;
@@ -42,6 +63,11 @@ export class ExtrudeBufferGeometry extends BufferGeometry {
 
 
 	static WorldUVGenerator: UVGenerator;
 	static WorldUVGenerator: UVGenerator;
 
 
+	/**
+	 * @default 'ExtrudeBufferGeometry'
+	 */
+	type: string;
+
 	addShapeList( shapes: Shape[], options?: any ): void;
 	addShapeList( shapes: Shape[], options?: any ): void;
 	addShape( shape: Shape, options?: any ): void;
 	addShape( shape: Shape, options?: any ): void;
 
 
@@ -53,6 +79,11 @@ export class ExtrudeGeometry extends Geometry {
 
 
 	static WorldUVGenerator: UVGenerator;
 	static WorldUVGenerator: UVGenerator;
 
 
+	/**
+	 * @default 'ExtrudeGeometry'
+	 */
+	type: string;
+
 	addShapeList( shapes: Shape[], options?: any ): void;
 	addShapeList( shapes: Shape[], options?: any ): void;
 	addShape( shape: Shape, options?: any ): void;
 	addShape( shape: Shape, options?: any ): void;
 
 

+ 18 - 0
src/geometries/IcosahedronGeometry.d.ts

@@ -5,12 +5,30 @@ import {
 
 
 export class IcosahedronBufferGeometry extends PolyhedronBufferGeometry {
 export class IcosahedronBufferGeometry extends PolyhedronBufferGeometry {
 
 
+	/**
+	 * @param [radius=1]
+	 * @param [detail=0]
+	 */
 	constructor( radius?: number, detail?: number );
 	constructor( radius?: number, detail?: number );
 
 
+	/**
+	 * @default 'IcosahedronBufferGeometry'
+	 */
+	type: string;
+
 }
 }
 
 
 export class IcosahedronGeometry extends PolyhedronGeometry {
 export class IcosahedronGeometry extends PolyhedronGeometry {
 
 
+	/**
+	 * @param [radius=1]
+	 * @param [detail=0]
+	 */
 	constructor( radius?: number, detail?: number );
 	constructor( radius?: number, detail?: number );
 
 
+	/**
+	 * @default 'IcosahedronGeometry'
+	 */
+	type: string;
+
 }
 }

+ 23 - 0
src/geometries/LatheGeometry.d.ts

@@ -4,6 +4,12 @@ import { BufferGeometry } from './../core/BufferGeometry';
 
 
 export class LatheBufferGeometry extends BufferGeometry {
 export class LatheBufferGeometry extends BufferGeometry {
 
 
+	/**
+	 * @param points
+	 * @param [segments=12]
+	 * @param [phiStart=0]
+	 * @param [phiLength=Math.PI * 2]
+	 */
 	constructor(
 	constructor(
 		points: Vector2[],
 		points: Vector2[],
 		segments?: number,
 		segments?: number,
@@ -11,6 +17,11 @@ export class LatheBufferGeometry extends BufferGeometry {
 		phiLength?: number
 		phiLength?: number
 	);
 	);
 
 
+	/**
+	 * @default 'LatheBufferGeometry'
+	 */
+	type: string;
+
 	parameters: {
 	parameters: {
 		points: Vector2[];
 		points: Vector2[];
 		segments: number;
 		segments: number;
@@ -22,6 +33,12 @@ export class LatheBufferGeometry extends BufferGeometry {
 
 
 export class LatheGeometry extends Geometry {
 export class LatheGeometry extends Geometry {
 
 
+	/**
+	 * @param points
+	 * @param [segments=12]
+	 * @param [phiStart=0]
+	 * @param [phiLength=Math.PI * 2]
+	 */
 	constructor(
 	constructor(
 		points: Vector2[],
 		points: Vector2[],
 		segments?: number,
 		segments?: number,
@@ -29,6 +46,12 @@ export class LatheGeometry extends Geometry {
 		phiLength?: number
 		phiLength?: number
 	);
 	);
 
 
+
+	/**
+	 * @default 'LatheGeometry'
+	 */
+	type: string;
+
 	parameters: {
 	parameters: {
 		points: Vector2[];
 		points: Vector2[];
 		segments: number;
 		segments: number;

+ 18 - 0
src/geometries/OctahedronGeometry.d.ts

@@ -5,12 +5,30 @@ import {
 
 
 export class OctahedronBufferGeometry extends PolyhedronBufferGeometry {
 export class OctahedronBufferGeometry extends PolyhedronBufferGeometry {
 
 
+	/**
+	 * @param [radius=1]
+	 * @param [detail=0]
+	 */
 	constructor( radius?: number, detail?: number );
 	constructor( radius?: number, detail?: number );
 
 
+	/**
+	 * @default 'OctahedronBufferGeometry'
+	 */
+	type: string;
+
 }
 }
 
 
 export class OctahedronGeometry extends PolyhedronGeometry {
 export class OctahedronGeometry extends PolyhedronGeometry {
 
 
+	/**
+	 * @param [radius=1]
+	 * @param [detail=0]
+	 */
 	constructor( radius?: number, detail?: number );
 	constructor( radius?: number, detail?: number );
 
 
+	/**
+	 * @default 'OctahedronGeometry'
+	 */
+	type: string;
+
 }
 }

+ 10 - 0
src/geometries/ParametricGeometry.d.ts

@@ -10,6 +10,11 @@ export class ParametricBufferGeometry extends BufferGeometry {
 		stacks: number
 		stacks: number
 	);
 	);
 
 
+	/**
+	 * @default 'ParametricBufferGeometry'
+	 */
+	type: string;
+
 	parameters: {
 	parameters: {
 		func: ( u: number, v: number, dest: Vector3 ) => void;
 		func: ( u: number, v: number, dest: Vector3 ) => void;
 		slices: number;
 		slices: number;
@@ -26,6 +31,11 @@ export class ParametricGeometry extends Geometry {
 		stacks: number
 		stacks: number
 	);
 	);
 
 
+	/**
+	 * @default 'ParametricGeometry'
+	 */
+	type: string;
+
 	parameters: {
 	parameters: {
 		func: ( u: number, v: number, dest: Vector3 ) => void;
 		func: ( u: number, v: number, dest: Vector3 ) => void;
 		slices: number;
 		slices: number;

+ 22 - 0
src/geometries/PlaneGeometry.d.ts

@@ -3,6 +3,12 @@ import { BufferGeometry } from './../core/BufferGeometry';
 
 
 export class PlaneBufferGeometry extends BufferGeometry {
 export class PlaneBufferGeometry extends BufferGeometry {
 
 
+	/**
+	 * @param [width=1] — Width of the sides on the X axis.
+	 * @param [height=1] — Height of the sides on the Y axis.
+	 * @param [widthSegments=1] — Number of segmented faces along the width of the sides.
+	 * @param [heightSegments=1] — Number of segmented faces along the height of the sides.
+	 */
 	constructor(
 	constructor(
 		width?: number,
 		width?: number,
 		height?: number,
 		height?: number,
@@ -10,6 +16,11 @@ export class PlaneBufferGeometry extends BufferGeometry {
 		heightSegments?: number
 		heightSegments?: number
 	);
 	);
 
 
+	/**
+	 * @default 'PlaneBufferGeometry'
+	 */
+	type: string;
+
 	parameters: {
 	parameters: {
 		width: number;
 		width: number;
 		height: number;
 		height: number;
@@ -21,6 +32,12 @@ export class PlaneBufferGeometry extends BufferGeometry {
 
 
 export class PlaneGeometry extends Geometry {
 export class PlaneGeometry extends Geometry {
 
 
+	/**
+	 * @param [width=1] — Width of the sides on the X axis.
+	 * @param [height=1] — Height of the sides on the Y axis.
+	 * @param [widthSegments=1] — Number of segmented faces along the width of the sides.
+	 * @param [heightSegments=1] — Number of segmented faces along the height of the sides.
+	 */
 	constructor(
 	constructor(
 		width?: number,
 		width?: number,
 		height?: number,
 		height?: number,
@@ -28,6 +45,11 @@ export class PlaneGeometry extends Geometry {
 		heightSegments?: number
 		heightSegments?: number
 	);
 	);
 
 
+	/**
+	 * @default 'PlaneGeometry'
+	 */
+	type: string;
+
 	parameters: {
 	parameters: {
 		width: number;
 		width: number;
 		height: number;
 		height: number;

+ 22 - 0
src/geometries/PolyhedronGeometry.d.ts

@@ -4,6 +4,12 @@ import { BufferGeometry } from './../core/BufferGeometry';
 
 
 export class PolyhedronBufferGeometry extends BufferGeometry {
 export class PolyhedronBufferGeometry extends BufferGeometry {
 
 
+	/**
+	 * @param vertices
+	 * @param indices
+	 * @param [radius=1]
+	 * @param [detail=0]
+	 */
 	constructor(
 	constructor(
 		vertices: number[],
 		vertices: number[],
 		indices: number[],
 		indices: number[],
@@ -11,6 +17,11 @@ export class PolyhedronBufferGeometry extends BufferGeometry {
 		detail?: number
 		detail?: number
 	);
 	);
 
 
+	/**
+	 * @default 'PolyhedronBufferGeometry'
+	 */
+	type: string;
+
 	parameters: {
 	parameters: {
 		vertices: number[];
 		vertices: number[];
 		indices: number[];
 		indices: number[];
@@ -22,6 +33,12 @@ export class PolyhedronBufferGeometry extends BufferGeometry {
 
 
 export class PolyhedronGeometry extends Geometry {
 export class PolyhedronGeometry extends Geometry {
 
 
+	/**
+	 * @param vertices
+	 * @param indices
+	 * @param [radius=1]
+	 * @param [detail=0]
+	 */
 	constructor(
 	constructor(
 		vertices: number[],
 		vertices: number[],
 		indices: number[],
 		indices: number[],
@@ -29,6 +46,11 @@ export class PolyhedronGeometry extends Geometry {
 		detail?: number
 		detail?: number
 	);
 	);
 
 
+	/**
+	 * @default 'PolyhedronGeometry'
+	 */
+	type: string;
+
 	parameters: {
 	parameters: {
 		vertices: number[];
 		vertices: number[];
 		indices: number[];
 		indices: number[];

+ 26 - 0
src/geometries/RingGeometry.d.ts

@@ -3,6 +3,14 @@ import { BufferGeometry } from './../core/BufferGeometry';
 
 
 export class RingBufferGeometry extends BufferGeometry {
 export class RingBufferGeometry extends BufferGeometry {
 
 
+	/**
+	 * @param [innerRadius=0.5]
+	 * @param [outerRadius=1]
+	 * @param [thetaSegments=8]
+	 * @param [phiSegments=1]
+	 * @param [thetaStart=0]
+	 * @param [thetaLength=Math.PI * 2]
+	 */
 	constructor(
 	constructor(
 		innerRadius?: number,
 		innerRadius?: number,
 		outerRadius?: number,
 		outerRadius?: number,
@@ -12,6 +20,11 @@ export class RingBufferGeometry extends BufferGeometry {
 		thetaLength?: number
 		thetaLength?: number
 	);
 	);
 
 
+	/**
+	 * @default 'RingBufferGeometry'
+	 */
+	type: string;
+
 	parameters: {
 	parameters: {
 		innerRadius: number;
 		innerRadius: number;
 		outerRadius: number;
 		outerRadius: number;
@@ -25,6 +38,14 @@ export class RingBufferGeometry extends BufferGeometry {
 
 
 export class RingGeometry extends Geometry {
 export class RingGeometry extends Geometry {
 
 
+	/**
+	 * @param [innerRadius=0.5]
+	 * @param [outerRadius=1]
+	 * @param [thetaSegments=8]
+	 * @param [phiSegments=1]
+	 * @param [thetaStart=0]
+	 * @param [thetaLength=Math.PI * 2]
+	 */
 	constructor(
 	constructor(
 		innerRadius?: number,
 		innerRadius?: number,
 		outerRadius?: number,
 		outerRadius?: number,
@@ -34,6 +55,11 @@ export class RingGeometry extends Geometry {
 		thetaLength?: number
 		thetaLength?: number
 	);
 	);
 
 
+	/**
+	 * @default 'RingGeometry'
+	 */
+	type: string;
+
 	parameters: {
 	parameters: {
 		innerRadius: number;
 		innerRadius: number;
 		outerRadius: number;
 		outerRadius: number;

+ 14 - 0
src/geometries/ShapeGeometry.d.ts

@@ -4,14 +4,28 @@ import { BufferGeometry } from './../core/BufferGeometry';
 
 
 export class ShapeBufferGeometry extends BufferGeometry {
 export class ShapeBufferGeometry extends BufferGeometry {
 
 
+	/**
+	 * @default 'ShapeBufferGeometry'
+	 */
+	type: string;
+
 	constructor( shapes: Shape | Shape[], curveSegments?: number );
 	constructor( shapes: Shape | Shape[], curveSegments?: number );
 
 
 }
 }
 
 
 export class ShapeGeometry extends Geometry {
 export class ShapeGeometry extends Geometry {
 
 
+	/**
+	 * @param shapes
+	 * @param [curveSegments=12]
+	 */
 	constructor( shapes: Shape | Shape[], curveSegments?: number );
 	constructor( shapes: Shape | Shape[], curveSegments?: number );
 
 
+	/**
+	 * @default 'ShapeGeometry'
+	 */
+	type: string;
+
 	addShapeList( shapes: Shape[], options: any ): ShapeGeometry;
 	addShapeList( shapes: Shape[], options: any ): ShapeGeometry;
 	addShape( shape: Shape, options?: any ): void;
 	addShape( shape: Shape, options?: any ): void;
 
 

+ 28 - 7
src/geometries/SphereGeometry.d.ts

@@ -3,6 +3,17 @@ import { BufferGeometry } from './../core/BufferGeometry';
 
 
 export class SphereBufferGeometry extends BufferGeometry {
 export class SphereBufferGeometry extends BufferGeometry {
 
 
+	/**
+	 * The geometry is created by sweeping and calculating vertexes around the Y axis (horizontal sweep) and the Z axis (vertical sweep). Thus, incomplete spheres (akin to 'sphere slices') can be created through the use of different values of phiStart, phiLength, thetaStart and thetaLength, in order to define the points in which we start (or end) calculating those vertices.
+	 *
+	 * @param [radius=50] — sphere radius. Default is 50.
+	 * @param [widthSegments=8] — number of horizontal segments. Minimum value is 3, and the default is 8.
+	 * @param [heightSegments=6] — number of vertical segments. Minimum value is 2, and the default is 6.
+	 * @param [phiStart=0] — specify horizontal starting angle. Default is 0.
+	 * @param [phiLength=Math.PI * 2] — specify horizontal sweep angle size. Default is Math.PI * 2.
+	 * @param [thetaStart=0] — specify vertical starting angle. Default is 0.
+	 * @param [thetaLength=Math.PI * 2] — specify vertical sweep angle size. Default is Math.PI.
+	 */
 	constructor(
 	constructor(
 		radius?: number,
 		radius?: number,
 		widthSegments?: number,
 		widthSegments?: number,
@@ -13,6 +24,11 @@ export class SphereBufferGeometry extends BufferGeometry {
 		thetaLength?: number
 		thetaLength?: number
 	);
 	);
 
 
+	/**
+	 * @default 'SphereBufferGeometry'
+	 */
+	type: string;
+
 	parameters: {
 	parameters: {
 		radius: number;
 		radius: number;
 		widthSegments: number;
 		widthSegments: number;
@@ -33,13 +49,13 @@ export class SphereGeometry extends Geometry {
 	/**
 	/**
 	 * The geometry is created by sweeping and calculating vertexes around the Y axis (horizontal sweep) and the Z axis (vertical sweep). Thus, incomplete spheres (akin to 'sphere slices') can be created through the use of different values of phiStart, phiLength, thetaStart and thetaLength, in order to define the points in which we start (or end) calculating those vertices.
 	 * The geometry is created by sweeping and calculating vertexes around the Y axis (horizontal sweep) and the Z axis (vertical sweep). Thus, incomplete spheres (akin to 'sphere slices') can be created through the use of different values of phiStart, phiLength, thetaStart and thetaLength, in order to define the points in which we start (or end) calculating those vertices.
 	 *
 	 *
-	 * @param radius — sphere radius. Default is 50.
-	 * @param widthSegments — number of horizontal segments. Minimum value is 3, and the default is 8.
-	 * @param heightSegments — number of vertical segments. Minimum value is 2, and the default is 6.
-	 * @param phiStart — specify horizontal starting angle. Default is 0.
-	 * @param phiLength — specify horizontal sweep angle size. Default is Math.PI * 2.
-	 * @param thetaStart — specify vertical starting angle. Default is 0.
-	 * @param thetaLength — specify vertical sweep angle size. Default is Math.PI.
+	 * @param [radius=50] — sphere radius. Default is 50.
+	 * @param [widthSegments=8] — number of horizontal segments. Minimum value is 3, and the default is 8.
+	 * @param [heightSegments=6] — number of vertical segments. Minimum value is 2, and the default is 6.
+	 * @param [phiStart=0] — specify horizontal starting angle. Default is 0.
+	 * @param [phiLength=Math.PI * 2] — specify horizontal sweep angle size. Default is Math.PI * 2.
+	 * @param [thetaStart=0] — specify vertical starting angle. Default is 0.
+	 * @param [thetaLength=Math.PI * 2] — specify vertical sweep angle size. Default is Math.PI.
 	 */
 	 */
 	constructor(
 	constructor(
 		radius?: number,
 		radius?: number,
@@ -51,6 +67,11 @@ export class SphereGeometry extends Geometry {
 		thetaLength?: number
 		thetaLength?: number
 	);
 	);
 
 
+	/**
+	 * @default 'SphereGeometry'
+	 */
+	type: string;
+
 	parameters: {
 	parameters: {
 		radius: number;
 		radius: number;
 		widthSegments: number;
 		widthSegments: number;

+ 18 - 0
src/geometries/TetrahedronGeometry.d.ts

@@ -2,12 +2,30 @@ import { PolyhedronGeometry, PolyhedronBufferGeometry } from './PolyhedronGeomet
 
 
 export class TetrahedronBufferGeometry extends PolyhedronBufferGeometry {
 export class TetrahedronBufferGeometry extends PolyhedronBufferGeometry {
 
 
+	/**
+	 * @param [radius=1]
+	 * @param [detail=0]
+	 */
 	constructor( radius?: number, detail?: number );
 	constructor( radius?: number, detail?: number );
 
 
+	/**
+	 * @default 'TetrahedronBufferGeometry'
+	 */
+	type: string;
+
 }
 }
 
 
 export class TetrahedronGeometry extends PolyhedronGeometry {
 export class TetrahedronGeometry extends PolyhedronGeometry {
 
 
+	/**
+	 * @param [radius=1]
+	 * @param [detail=0]
+	 */
 	constructor( radius?: number, detail?: number );
 	constructor( radius?: number, detail?: number );
 
 
+	/**
+	 * @default 'TetrahedronGeometry'
+	 */
+	type: string;
+
 }
 }

+ 22 - 0
src/geometries/TextGeometry.d.ts

@@ -15,6 +15,11 @@ export interface TextGeometryParameters {
 
 
 export class TextBufferGeometry extends ExtrudeBufferGeometry {
 export class TextBufferGeometry extends ExtrudeBufferGeometry {
 
 
+	/**
+	 * @default 'TextBufferGeometry'
+	 */
+	type: string;
+
 	constructor( text: string, parameters: TextGeometryParameters );
 	constructor( text: string, parameters: TextGeometryParameters );
 
 
 	parameters: {
 	parameters: {
@@ -35,13 +40,30 @@ export class TextGeometry extends ExtrudeGeometry {
 
 
 	constructor( text: string, parameters: TextGeometryParameters );
 	constructor( text: string, parameters: TextGeometryParameters );
 
 
+	/**
+	 * @default 'TextGeometry'
+	 */
+	type: string;
+
 	parameters: {
 	parameters: {
 		font: Font;
 		font: Font;
 		size: number;
 		size: number;
+		/**
+		 * @default 50
+		 */
 		height: number;
 		height: number;
 		curveSegments: number;
 		curveSegments: number;
+		/**
+		 * @default false
+		 */
 		bevelEnabled: boolean;
 		bevelEnabled: boolean;
+		/**
+		 * @default 10
+		 */
 		bevelThickness: number;
 		bevelThickness: number;
+		/**
+		 * @default 8
+		 */
 		bevelSize: number;
 		bevelSize: number;
 		bevelOffset: number;
 		bevelOffset: number;
 		bevelSegments: number;
 		bevelSegments: number;

+ 24 - 0
src/geometries/TorusGeometry.d.ts

@@ -3,6 +3,13 @@ import { BufferGeometry } from './../core/BufferGeometry';
 
 
 export class TorusBufferGeometry extends BufferGeometry {
 export class TorusBufferGeometry extends BufferGeometry {
 
 
+	/**
+	 * @param [radius=1]
+	 * @param [tube=0.4]
+	 * @param [radialSegments=8]
+	 * @param [tubularSegments=6]
+	 * @param [arc=Math.PI * 2]
+	 */
 	constructor(
 	constructor(
 		radius?: number,
 		radius?: number,
 		tube?: number,
 		tube?: number,
@@ -11,6 +18,11 @@ export class TorusBufferGeometry extends BufferGeometry {
 		arc?: number
 		arc?: number
 	);
 	);
 
 
+	/**
+	 * @default 'TorusBufferGeometry'
+	 */
+	type: string;
+
 	parameters: {
 	parameters: {
 		radius: number;
 		radius: number;
 		tube: number;
 		tube: number;
@@ -23,6 +35,13 @@ export class TorusBufferGeometry extends BufferGeometry {
 
 
 export class TorusGeometry extends Geometry {
 export class TorusGeometry extends Geometry {
 
 
+	/**
+	 * @param [radius=1]
+	 * @param [tube=0.4]
+	 * @param [radialSegments=8]
+	 * @param [tubularSegments=6]
+	 * @param [arc=Math.PI * 2]
+	 */
 	constructor(
 	constructor(
 		radius?: number,
 		radius?: number,
 		tube?: number,
 		tube?: number,
@@ -31,6 +50,11 @@ export class TorusGeometry extends Geometry {
 		arc?: number
 		arc?: number
 	);
 	);
 
 
+	/**
+	 * @default 'TorusGeometry'
+	 */
+	type: string;
+
 	parameters: {
 	parameters: {
 		radius: number;
 		radius: number;
 		tube: number;
 		tube: number;

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