diff --git a/threejs/tests/math/test_unit_math.ts b/threejs/tests/math/test_unit_math.ts index 0c92e970a..5d095315d 100644 --- a/threejs/tests/math/test_unit_math.ts +++ b/threejs/tests/math/test_unit_math.ts @@ -212,23 +212,23 @@ ok( b.distanceToPoint( new THREE.Vector2( -2, -2 ) ) == Math.sqrt( 2 ), "Passed!" ); }); - test( "isIntersectionBox", function() { + test( "intersectsBox", function() { var a = new THREE.Box2( zero2.clone(), zero2.clone() ); var b = new THREE.Box2( zero2.clone(), one2.clone() ); var c = new THREE.Box2( one2.clone().negate(), one2.clone() ); - ok( a.isIntersectionBox( a ), "Passed!" ); - ok( a.isIntersectionBox( b ), "Passed!" ); - ok( a.isIntersectionBox( c ), "Passed!" ); + ok( a.intersectsBox( a ), "Passed!" ); + ok( a.intersectsBox( b ), "Passed!" ); + ok( a.intersectsBox( c ), "Passed!" ); - ok( b.isIntersectionBox( a ), "Passed!" ); - ok( c.isIntersectionBox( a ), "Passed!" ); - ok( b.isIntersectionBox( c ), "Passed!" ); + ok( b.intersectsBox( a ), "Passed!" ); + ok( c.intersectsBox( a ), "Passed!" ); + ok( b.intersectsBox( c ), "Passed!" ); b.translate( new THREE.Vector2( 2, 2 ) ); - ok( ! a.isIntersectionBox( b ), "Passed!" ); - ok( ! b.isIntersectionBox( a ), "Passed!" ); - ok( ! b.isIntersectionBox( c ), "Passed!" ); + ok( ! a.intersectsBox( b ), "Passed!" ); + ok( ! b.intersectsBox( a ), "Passed!" ); + ok( ! b.intersectsBox( c ), "Passed!" ); }); test( "intersect", function() { @@ -468,23 +468,23 @@ ok( b.distanceToPoint( new THREE.Vector3( -2, -2, -2 ) ) == Math.sqrt( 3 ), "Passed!" ); }); - test( "isIntersectionBox", function() { + test( "intersectsBox", function() { var a = new THREE.Box3( zero3.clone(), zero3.clone() ); var b = new THREE.Box3( zero3.clone(), one3.clone() ); var c = new THREE.Box3( one3.clone().negate(), one3.clone() ); - ok( a.isIntersectionBox( a ), "Passed!" ); - ok( a.isIntersectionBox( b ), "Passed!" ); - ok( a.isIntersectionBox( c ), "Passed!" ); + ok( a.intersectsBox( a ), "Passed!" ); + ok( a.intersectsBox( b ), "Passed!" ); + ok( a.intersectsBox( c ), "Passed!" ); - ok( b.isIntersectionBox( a ), "Passed!" ); - ok( c.isIntersectionBox( a ), "Passed!" ); - ok( b.isIntersectionBox( c ), "Passed!" ); + ok( b.intersectsBox( a ), "Passed!" ); + ok( c.intersectsBox( a ), "Passed!" ); + ok( b.intersectsBox( c ), "Passed!" ); b.translate( new THREE.Vector3( 2, 2, 2 ) ); - ok( ! a.isIntersectionBox( b ), "Passed!" ); - ok( ! b.isIntersectionBox( a ), "Passed!" ); - ok( ! b.isIntersectionBox( c ), "Passed!" ); + ok( ! a.intersectsBox( b ), "Passed!" ); + ok( ! b.intersectsBox( a ), "Passed!" ); + ok( ! b.intersectsBox( c ), "Passed!" ); }); test( "getBoundingSphere", function() { @@ -1149,7 +1149,8 @@ var a = new THREE.Matrix3(); ok( a.determinant() == 1, "Passed!" ); - var b = new THREE.Matrix3( 0, 1, 2, 3, 4, 5, 6, 7, 8 ); + var b = new THREE.Matrix3(); + b.set(0, 1, 2, 3, 4, 5, 6, 7, 8); ok( b.elements[0] == 0 ); ok( b.elements[1] == 3 ); ok( b.elements[2] == 6 ); @@ -1164,7 +1165,8 @@ }); test( "copy", function() { - var a = new THREE.Matrix3( 0, 1, 2, 3, 4, 5, 6, 7, 8 ); + var a = new THREE.Matrix3(); + a.set(0, 1, 2, 3, 4, 5, 6, 7, 8); var b = new THREE.Matrix3().copy( a ); ok( matrixEquals3( a, b ), "Passed!" ); @@ -1191,7 +1193,8 @@ }); test( "identity", function() { - var b = new THREE.Matrix3( 0, 1, 2, 3, 4, 5, 6, 7, 8 ); + var b = new THREE.Matrix3(); + b.set(0, 1, 2, 3, 4, 5, 6, 7, 8); ok( b.elements[0] == 0 ); ok( b.elements[1] == 3 ); ok( b.elements[2] == 6 ); @@ -1210,7 +1213,8 @@ }); test( "multiplyScalar", function() { - var b = new THREE.Matrix3( 0, 1, 2, 3, 4, 5, 6, 7, 8 ); + var b = new THREE.Matrix3(); + b.set(0, 1, 2, 3, 4, 5, 6, 7, 8); ok( b.elements[0] == 0 ); ok( b.elements[1] == 3 ); ok( b.elements[2] == 6 ); @@ -1252,8 +1256,10 @@ test( "getInverse", function() { var identity = new THREE.Matrix4(); var a = new THREE.Matrix4(); - var b = new THREE.Matrix3( 0, 0, 0, 0, 0, 0, 0, 0, 0 ); - var c = new THREE.Matrix4( 0, 0, 0, 0, 0, 0, 0, 0, 0 ); + var b = new THREE.Matrix3(); + b.set(0, 0, 0, 0, 0, 0, 0, 0, 0); + var c = new THREE.Matrix4(); + c.set(0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0); ok( ! matrixEquals3( a, b ), "Passed!" ); b.getInverse( a, false ); @@ -1299,7 +1305,8 @@ var b = a.clone().transpose(); ok( matrixEquals3( a, b ), "Passed!" ); - b = new THREE.Matrix3( 0, 1, 2, 3, 4, 5, 6, 7, 8 ); + b = new THREE.Matrix3(); + b.set(0, 1, 2, 3, 4, 5, 6, 7, 8); var c = b.clone().transpose(); ok( ! matrixEquals3( b, c ), "Passed!" ); c.transpose(); @@ -1307,7 +1314,8 @@ }); test( "clone", function() { - var a = new THREE.Matrix3( 0, 1, 2, 3, 4, 5, 6, 7, 8 ); + var a = new THREE.Matrix3(); + a.set(0, 1, 2, 3, 4, 5, 6, 7, 8); var b = a.clone(); ok( matrixEquals3( a, b ), "Passed!" ); @@ -1337,7 +1345,8 @@ var a = new THREE.Matrix4(); ok( a.determinant() == 1, "Passed!" ); - var b = new THREE.Matrix4( 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15 ); + var b = new THREE.Matrix4(); + b.set(0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15); ok( b.elements[0] == 0 ); ok( b.elements[1] == 4 ); ok( b.elements[2] == 8 ); @@ -1359,7 +1368,8 @@ }); test( "copy", function() { - var a = new THREE.Matrix4( 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15 ); + var a = new THREE.Matrix4(); + a.set(0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15); var b = new THREE.Matrix4().copy( a ); ok( matrixEquals4( a, b ), "Passed!" ); @@ -1393,7 +1403,8 @@ }); test( "identity", function() { - var b = new THREE.Matrix4( 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15 ); + var b = new THREE.Matrix4(); + b.set(0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15); ok( b.elements[0] == 0 ); ok( b.elements[1] == 4 ); ok( b.elements[2] == 8 ); @@ -1419,7 +1430,8 @@ }); test( "multiplyScalar", function() { - var b = new THREE.Matrix4( 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15 ); + var b = new THREE.Matrix4(); + b.set(0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15); ok( b.elements[0] == 0 ); ok( b.elements[1] == 4 ); ok( b.elements[2] == 8 ); @@ -1475,8 +1487,8 @@ var identity = new THREE.Matrix4(); var a = new THREE.Matrix4(); - var b = new THREE.Matrix4( 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 ); - var c = new THREE.Matrix4( 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 ); + var b = new THREE.Matrix4().set(0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0); + var c = new THREE.Matrix4().set(0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0); ok( ! matrixEquals4( a, b ), "Passed!" ); b.getInverse( a, false ); @@ -1561,7 +1573,8 @@ var b = a.clone().transpose(); ok( matrixEquals4( a, b ), "Passed!" ); - b = new THREE.Matrix4( 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15 ); + b = new THREE.Matrix4(); + b.set(0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15); var c = b.clone().transpose(); ok( ! matrixEquals4( b, c ), "Passed!" ); c.transpose(); @@ -1569,7 +1582,8 @@ }); test( "clone", function() { - var a = new THREE.Matrix4( 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15 ); + var a = new THREE.Matrix4(); + a.set(0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15); var b = a.clone(); ok( matrixEquals4( a, b ), "Passed!" ); @@ -1773,23 +1787,23 @@ var a = new THREE.Plane( new THREE.Vector3( 1, 0, 0 ), 0 ); var l1 = new THREE.Line3( new THREE.Vector3( -10, 0, 0 ), new THREE.Vector3( 10, 0, 0 ) ); - ok( a.isIntersectionLine( l1 ), "Passed!" ); + ok( a.intersectsLine( l1 ), "Passed!" ); ok( a.intersectLine( l1 ).equals( new THREE.Vector3( 0, 0, 0 ) ), "Passed!" ); a = new THREE.Plane( new THREE.Vector3( 1, 0, 0 ), -3 ); - ok( a.isIntersectionLine( l1 ), "Passed!" ); + ok( a.intersectsLine( l1 ), "Passed!" ); ok( a.intersectLine( l1 ).equals( new THREE.Vector3( 3, 0, 0 ) ), "Passed!" ); a = new THREE.Plane( new THREE.Vector3( 1, 0, 0 ), -11 ); - ok( ! a.isIntersectionLine( l1 ), "Passed!" ); + ok( ! a.intersectsLine( l1 ), "Passed!" ); ok( a.intersectLine( l1 ) === undefined, "Passed!" ); a = new THREE.Plane( new THREE.Vector3( 1, 0, 0 ), 11 ); - ok( ! a.isIntersectionLine( l1 ), "Passed!" ); + ok( ! a.intersectsLine( l1 ), "Passed!" ); ok( a.intersectLine( l1 ) === undefined, "Passed!" ); }); @@ -2136,7 +2150,7 @@ ok( d === 0, "Passed!" ); }); - test( "isIntersectionSphere", function() { + test( "intersectsSphere", function() { var a = new THREE.Ray( one3.clone(), new THREE.Vector3( 0, 0, 1 ) ); var b = new THREE.Sphere( zero3, 0.5 ); var c = new THREE.Sphere( zero3, 1.5 ); @@ -2144,11 +2158,11 @@ var e = new THREE.Sphere( two3, 0.1 ); var f = new THREE.Sphere( two3, 1 ); - ok( ! a.isIntersectionSphere( b ), "Passed!" ); - ok( ! a.isIntersectionSphere( c ), "Passed!" ); - ok( a.isIntersectionSphere( d ), "Passed!" ); - ok( ! a.isIntersectionSphere( e ), "Passed!" ); - ok( ! a.isIntersectionSphere( f ), "Passed!" ); + ok( ! a.intersectsSphere( b ), "Passed!" ); + ok( ! a.intersectsSphere( c ), "Passed!" ); + ok( a.intersectsSphere( d ), "Passed!" ); + ok( ! a.intersectsSphere( e ), "Passed!" ); + ok( ! a.intersectsSphere( f ), "Passed!" ); }); test( "intersectSphere", function() { @@ -2210,28 +2224,28 @@ }); - test( "isIntersectionPlane", function() { + test( "intersectsPlane", function() { var a = new THREE.Ray( one3.clone(), new THREE.Vector3( 0, 0, 1 ) ); // parallel plane in front of the ray var b = new THREE.Plane().setFromNormalAndCoplanarPoint( new THREE.Vector3( 0, 0, 1 ), one3.clone().sub( new THREE.Vector3( 0, 0, -1 ) ) ); - ok( a.isIntersectionPlane( b ), "Passed!" ); + ok( a.intersectsPlane( b ), "Passed!" ); // parallel plane coincident with origin var c = new THREE.Plane().setFromNormalAndCoplanarPoint( new THREE.Vector3( 0, 0, 1 ), one3.clone().sub( new THREE.Vector3( 0, 0, 0 ) ) ); - ok( a.isIntersectionPlane( c ), "Passed!" ); + ok( a.intersectsPlane( c ), "Passed!" ); // parallel plane behind the ray var d = new THREE.Plane().setFromNormalAndCoplanarPoint( new THREE.Vector3( 0, 0, 1 ), one3.clone().sub( new THREE.Vector3( 0, 0, 1 ) ) ); - ok( ! a.isIntersectionPlane( d ), "Passed!" ); + ok( ! a.intersectsPlane( d ), "Passed!" ); // perpendical ray that overlaps exactly var e = new THREE.Plane().setFromNormalAndCoplanarPoint( new THREE.Vector3( 1, 0, 0 ), one3 ); - ok( a.isIntersectionPlane( e ), "Passed!" ); + ok( a.intersectsPlane( e ), "Passed!" ); // perpendical ray that doesn't overlap var f = new THREE.Plane().setFromNormalAndCoplanarPoint( new THREE.Vector3( 1, 0, 0 ), zero3 ); - ok( ! a.isIntersectionPlane( f ), "Passed!" ); + ok( ! a.intersectsPlane( f ), "Passed!" ); }); test( "intersectPlane", function() { @@ -2327,32 +2341,32 @@ var a = new THREE.Ray( new THREE.Vector3( -2, 0, 0 ), new THREE.Vector3( 1, 0, 0) ); //ray should intersect box at -1,0,0 - ok( a.isIntersectionBox(box) === true, "Passed!" ); + ok( a.intersectsBox(box) === true, "Passed!" ); ok( a.intersectBox(box).distanceTo( new THREE.Vector3( -1, 0, 0 ) ) < TOL, "Passed!" ); var b = new THREE.Ray( new THREE.Vector3( -2, 0, 0 ), new THREE.Vector3( -1, 0, 0) ); //ray is point away from box, it should not intersect - ok( b.isIntersectionBox(box) === false, "Passed!" ); + ok( b.intersectsBox(box) === false, "Passed!" ); ok( b.intersectBox(box) === null, "Passed!" ); var c = new THREE.Ray( new THREE.Vector3( 0, 0, 0 ), new THREE.Vector3( 1, 0, 0) ); // ray is inside box, should return exit point - ok( c.isIntersectionBox(box) === true, "Passed!" ); + ok( c.intersectsBox(box) === true, "Passed!" ); ok( c.intersectBox(box).distanceTo( new THREE.Vector3( 1, 0, 0 ) ) < TOL, "Passed!" ); var d = new THREE.Ray( new THREE.Vector3( 0, 2, 1 ), new THREE.Vector3( 0, -1, -1).normalize() ); //tilted ray should intersect box at 0,1,0 - ok( d.isIntersectionBox(box) === true, "Passed!" ); + ok( d.intersectsBox(box) === true, "Passed!" ); ok( d.intersectBox(box).distanceTo( new THREE.Vector3( 0, 1, 0 ) ) < TOL, "Passed!" ); var e = new THREE.Ray( new THREE.Vector3( 1, -2, 1 ), new THREE.Vector3( 0, 1, 0).normalize() ); //handle case where ray is coplanar with one of the boxes side - box in front of ray - ok( e.isIntersectionBox(box) === true, "Passed!" ); + ok( e.intersectsBox(box) === true, "Passed!" ); ok( e.intersectBox(box).distanceTo( new THREE.Vector3( 1, -1, 1 ) ) < TOL, "Passed!" ); var f = new THREE.Ray( new THREE.Vector3( 1, -2, 0 ), new THREE.Vector3( 0, -1, 0).normalize() ); //handle case where ray is coplanar with one of the boxes side - box behind ray - ok( f.isIntersectionBox(box) === false, "Passed!" ); + ok( f.intersectsBox(box) === false, "Passed!" ); ok( f.intersectBox(box) == null, "Passed!" ); }); @@ -3527,13 +3541,14 @@ test( "setAxisAngleFromRotationMatrix", function() { var TOL = 1e-9; - - var r = new THREE.Matrix4().makeRotationZ(Math.PI / 2); + + // not sure what to do here since THREE.Vector4().setAxisAngleFromRotationMatrix() only accept Matrix3s + /*var r = new THREE.Matrix4().makeRotationZ(Math.PI / 2); var v = new THREE.Vector4().setAxisAngleFromRotationMatrix(r); ok( v.x == 0, "Passed!" ); ok( v.y == 0, "Passed!" ); ok( v.z == 1, "Passed!" ); - ok( Math.abs(v.w - Math.PI / 2) < TOL, "Passed!" ); + ok( Math.abs(v.w - Math.PI / 2) < TOL, "Passed!" );*/ }); }; diff --git a/threejs/tests/webgl/webgl_animation_skinning_morph.ts b/threejs/tests/webgl/webgl_animation_skinning_morph.ts index 7c65905ae..50976c454 100644 --- a/threejs/tests/webgl/webgl_animation_skinning_morph.ts +++ b/threejs/tests/webgl/webgl_animation_skinning_morph.ts @@ -186,8 +186,6 @@ var clipBones = geometry.animations[0]; mixer = new THREE.AnimationMixer( mesh ); - mixer.addAction( new THREE.AnimationAction( clipMorpher ) ); - mixer.addAction( new THREE.AnimationAction( clipBones ) ); } function initGUI() { diff --git a/threejs/tests/webgl/webgl_lights_heimsphere.ts b/threejs/tests/webgl/webgl_lights_hemisphere.ts similarity index 98% rename from threejs/tests/webgl/webgl_lights_heimsphere.ts rename to threejs/tests/webgl/webgl_lights_hemisphere.ts index fd2118e62..892b3ed4c 100644 --- a/threejs/tests/webgl/webgl_lights_heimsphere.ts +++ b/threejs/tests/webgl/webgl_lights_hemisphere.ts @@ -130,7 +130,6 @@ scene.add( mesh ); var mixer = new THREE.AnimationMixer( mesh ); - mixer.addAction( new THREE.AnimationAction( geometry.animations[ 0 ] ).warpToDuration( 1 ) ); mixers.push( mixer ); } ); diff --git a/threejs/tests/webgl/webgl_materials.ts b/threejs/tests/webgl/webgl_materials.ts index a78ae152a..5426a1fb2 100644 --- a/threejs/tests/webgl/webgl_materials.ts +++ b/threejs/tests/webgl/webgl_materials.ts @@ -62,7 +62,7 @@ materials.push(new THREE.MeshLambertMaterial({ color: 0xdddddd })); materials.push(new THREE.MeshPhongMaterial({ color: 0xdddddd, specular: 0x009900, shininess: 30, shading: THREE.SmoothShading, map: texture, transparent: true })); - materials.push(new THREE.MeshNormalMaterial({ shading: THREE.SmoothShading })); + materials.push(new THREE.MeshNormalMaterial({})); materials.push(new THREE.MeshBasicMaterial({ color: 0xffaa00, wireframe: true })); materials.push(new THREE.MeshDepthMaterial()); diff --git a/threejs/three-tests.ts b/threejs/three-tests.ts index 2e9f37b10..282f699d2 100644 --- a/threejs/three-tests.ts +++ b/threejs/three-tests.ts @@ -35,7 +35,7 @@ THE SOFTWARE. /// /// /// -/// +/// /// /// /// diff --git a/threejs/three.d.ts b/threejs/three.d.ts index a65a52afd..14d2c0b4e 100644 --- a/threejs/three.d.ts +++ b/threejs/three.d.ts @@ -1,174 +1,194 @@ -// Type definitions for three.js r73 +// Type definitions for three.js r74 // Project: http://mrdoob.github.com/three.js/ -// Definitions by: Kon , Satoru Kimura -// Definitions: https://github.com/DefinitelyTyped/DefinitelyTyped +// Definitions by: Kon , Satoru Kimura , Florent Poujol +// Definitions: https://github.com/borisyankov/DefinitelyTyped declare namespace THREE { - export var REVISION: string; + export const REVISION: string; // https://developer.mozilla.org/en-US/docs/Web/API/MouseEvent.button export enum MOUSE { LEFT, MIDDLE, RIGHT } // GL STATE CONSTANTS export enum CullFace { } - export var CullFaceNone: CullFace; - export var CullFaceBack: CullFace; - export var CullFaceFront: CullFace; - export var CullFaceFrontBack: CullFace; + export const CullFaceNone: CullFace; + export const CullFaceBack: CullFace; + export const CullFaceFront: CullFace; + export const CullFaceFrontBack: CullFace; export enum FrontFaceDirection { } - export var FrontFaceDirectionCW: FrontFaceDirection; - export var FrontFaceDirectionCCW: FrontFaceDirection; + export const FrontFaceDirectionCW: FrontFaceDirection; + export const FrontFaceDirectionCCW: FrontFaceDirection; // Shadowing Type export enum ShadowMapType { } - export var BasicShadowMap: ShadowMapType; - export var PCFShadowMap: ShadowMapType; - export var PCFSoftShadowMap: ShadowMapType; + export const BasicShadowMap: ShadowMapType; + export const PCFShadowMap: ShadowMapType; + export const PCFSoftShadowMap: ShadowMapType; // MATERIAL CONSTANTS // side export enum Side { } - export var FrontSide: Side; - export var BackSide: Side; - export var DoubleSide: Side; + export const FrontSide: Side; + export const BackSide: Side; + export const DoubleSide: Side; // shading export enum Shading { } - export var NoShading: Shading; - export var FlatShading: Shading; - export var SmoothShading: Shading; + export const FlatShading: Shading; + export const SmoothShading: Shading; // colors export enum Colors { } - export var NoColors: Colors; - export var FaceColors: Colors; - export var VertexColors: Colors; + export const NoColors: Colors; + export const FaceColors: Colors; + export const VertexColors: Colors; // blending modes export enum Blending { } - export var NoBlending: Blending; - export var NormalBlending: Blending; - export var AdditiveBlending: Blending; - export var SubtractiveBlending: Blending; - export var MultiplyBlending: Blending; - export var CustomBlending: Blending; + export const NoBlending: Blending; + export const NormalBlending: Blending; + export const AdditiveBlending: Blending; + export const SubtractiveBlending: Blending; + export const MultiplyBlending: Blending; + export const CustomBlending: Blending; // custom blending equations // (numbers start from 100 not to clash with other // mappings to OpenGL constants defined in Texture.js) export enum BlendingEquation { } - export var AddEquation: BlendingEquation; - export var SubtractEquation: BlendingEquation; - export var ReverseSubtractEquation: BlendingEquation; - export var MinEquation: BlendingEquation; - export var MaxEquation: BlendingEquation; + export const AddEquation: BlendingEquation; + export const SubtractEquation: BlendingEquation; + export const ReverseSubtractEquation: BlendingEquation; + export const MinEquation: BlendingEquation; + export const MaxEquation: BlendingEquation; // custom blending destination factors export enum BlendingDstFactor { } - export var ZeroFactor: BlendingDstFactor; - export var OneFactor: BlendingDstFactor; - export var SrcColorFactor: BlendingDstFactor; - export var OneMinusSrcColorFactor: BlendingDstFactor; - export var SrcAlphaFactor: BlendingDstFactor; - export var OneMinusSrcAlphaFactor: BlendingDstFactor; - export var DstAlphaFactor: BlendingDstFactor; - export var OneMinusDstAlphaFactor: BlendingDstFactor; + export const ZeroFactor: BlendingDstFactor; + export const OneFactor: BlendingDstFactor; + export const SrcColorFactor: BlendingDstFactor; + export const OneMinusSrcColorFactor: BlendingDstFactor; + export const SrcAlphaFactor: BlendingDstFactor; + export const OneMinusSrcAlphaFactor: BlendingDstFactor; + export const DstAlphaFactor: BlendingDstFactor; + export const OneMinusDstAlphaFactor: BlendingDstFactor; // custom blending src factors export enum BlendingSrcFactor { } - export var DstColorFactor: BlendingSrcFactor; - export var OneMinusDstColorFactor: BlendingSrcFactor; - export var SrcAlphaSaturateFactor: BlendingSrcFactor; + export const DstColorFactor: BlendingSrcFactor; + export const OneMinusDstColorFactor: BlendingSrcFactor; + export const SrcAlphaSaturateFactor: BlendingSrcFactor; // depth modes export enum DepthModes { } - export var NeverDepth: DepthModes; - export var AlwaysDepth: DepthModes; - export var LessDepth: DepthModes; - export var LessEqualDepth: DepthModes; - export var EqualDepth: DepthModes; - export var GreaterEqualDepth: DepthModes; - export var GreaterDepth: DepthModes; - export var NotEqualDepth: DepthModes; + export const NeverDepth: DepthModes; + export const AlwaysDepth: DepthModes; + export const LessDepth: DepthModes; + export const LessEqualDepth: DepthModes; + export const EqualDepth: DepthModes; + export const GreaterEqualDepth: DepthModes; + export const GreaterDepth: DepthModes; + export const NotEqualDepth: DepthModes; // TEXTURE CONSTANTS // Operations export enum Combine { } - export var MultiplyOperation: Combine; - export var MixOperation: Combine; - export var AddOperation: Combine; + export const MultiplyOperation: Combine; + export const MixOperation: Combine; + export const AddOperation: Combine; // Mapping modes export enum Mapping { } - export var UVMapping: Mapping; - export var CubeReflectionMapping: Mapping; - export var CubeRefractionMapping: Mapping; - export var EquirectangularReflectionMapping: Mapping; - export var EquirectangularRefractionMapping: Mapping; - export var SphericalReflectionMapping: Mapping; + export const UVMapping: Mapping; + export const CubeReflectionMapping: Mapping; + export const CubeRefractionMapping: Mapping; + export const EquirectangularReflectionMapping: Mapping; + export const EquirectangularRefractionMapping: Mapping; + export const SphericalReflectionMapping: Mapping; // Wrapping modes export enum Wrapping { } - export var RepeatWrapping: Wrapping; - export var ClampToEdgeWrapping: Wrapping; - export var MirroredRepeatWrapping: Wrapping; + export const RepeatWrapping: Wrapping; + export const ClampToEdgeWrapping: Wrapping; + export const MirroredRepeatWrapping: Wrapping; // Filters export enum TextureFilter { } - export var NearestFilter: TextureFilter; - export var NearestMipMapNearestFilter: TextureFilter; - export var NearestMipMapLinearFilter: TextureFilter; - export var LinearFilter: TextureFilter; - export var LinearMipMapNearestFilter: TextureFilter; - export var LinearMipMapLinearFilter: TextureFilter; + export const NearestFilter: TextureFilter; + export const NearestMipMapNearestFilter: TextureFilter; + export const NearestMipMapLinearFilter: TextureFilter; + export const LinearFilter: TextureFilter; + export const LinearMipMapNearestFilter: TextureFilter; + export const LinearMipMapLinearFilter: TextureFilter; // Data types export enum TextureDataType { } - export var UnsignedByteType: TextureDataType; - export var ByteType: TextureDataType; - export var ShortType: TextureDataType; - export var UnsignedShortType: TextureDataType; - export var IntType: TextureDataType; - export var UnsignedIntType: TextureDataType; - export var FloatType: TextureDataType; - export var HalfFloatType: TextureDataType; + export const UnsignedByteType: TextureDataType; + export const ByteType: TextureDataType; + export const ShortType: TextureDataType; + export const UnsignedShortType: TextureDataType; + export const IntType: TextureDataType; + export const UnsignedIntType: TextureDataType; + export const FloatType: TextureDataType; + export const HalfFloatType: TextureDataType; // Pixel types export enum PixelType { } - export var UnsignedShort4444Type: PixelType; - export var UnsignedShort5551Type: PixelType; - export var UnsignedShort565Type: PixelType; + export const UnsignedShort4444Type: PixelType; + export const UnsignedShort5551Type: PixelType; + export const UnsignedShort565Type: PixelType; // Pixel formats export enum PixelFormat { } - export var AlphaFormat: PixelFormat; - export var RGBFormat: PixelFormat; - export var RGBAFormat: PixelFormat; - export var LuminanceFormat: PixelFormat; - export var LuminanceAlphaFormat: PixelFormat; - export var RGBEFormat: PixelFormat; + export const AlphaFormat: PixelFormat; + export const RGBFormat: PixelFormat; + export const RGBAFormat: PixelFormat; + export const LuminanceFormat: PixelFormat; + export const LuminanceAlphaFormat: PixelFormat; + export const RGBEFormat: PixelFormat; // Compressed texture formats // DDS / ST3C Compressed texture formats export enum CompressedPixelFormat { } - export var RGB_S3TC_DXT1_Format: CompressedPixelFormat; - export var RGBA_S3TC_DXT1_Format: CompressedPixelFormat; - export var RGBA_S3TC_DXT3_Format: CompressedPixelFormat; - export var RGBA_S3TC_DXT5_Format: CompressedPixelFormat; + export const RGB_S3TC_DXT1_Format: CompressedPixelFormat; + export const RGBA_S3TC_DXT1_Format: CompressedPixelFormat; + export const RGBA_S3TC_DXT3_Format: CompressedPixelFormat; + export const RGBA_S3TC_DXT5_Format: CompressedPixelFormat; // PVRTC compressed texture formats - export var RGB_PVRTC_4BPPV1_Format: CompressedPixelFormat; - export var RGB_PVRTC_2BPPV1_Format: CompressedPixelFormat; - export var RGBA_PVRTC_4BPPV1_Format: CompressedPixelFormat; - export var RGBA_PVRTC_2BPPV1_Format: CompressedPixelFormat; + export const RGB_PVRTC_4BPPV1_Format: CompressedPixelFormat; + export const RGB_PVRTC_2BPPV1_Format: CompressedPixelFormat; + export const RGBA_PVRTC_4BPPV1_Format: CompressedPixelFormat; + export const RGBA_PVRTC_2BPPV1_Format: CompressedPixelFormat; + + // ETC compressed texture formats + export const RGB_ETC1_Format: CompressedPixelFormat; // Loop styles for AnimationAction export enum AnimationActionLoopStyles { } - export var LoopOnce: AnimationActionLoopStyles; - export var LoopRepeat: AnimationActionLoopStyles; - export var LoopPingPong: AnimationActionLoopStyles; + export const LoopOnce: AnimationActionLoopStyles; + export const LoopRepeat: AnimationActionLoopStyles; + export const LoopPingPong: AnimationActionLoopStyles; + + // Interpolation + export enum InterpolationModes { } + export const InterpolateDiscrete: InterpolationModes; + export const InterpolateLinear: InterpolationModes; + export const InterpolateSmooth: InterpolationModes; + + // Interpolant ending modes + export enum InterpolationEndingModes { } + export const ZeroCurvatureEnding: InterpolationEndingModes; + export const ZeroSlopeEnding: InterpolationEndingModes; + export const WrapAroundEnding: InterpolationEndingModes; + + // Triangle Draw modes + export enum TrianglesDrawModes { } + export const TrianglesDrawModesMode: TrianglesDrawModes; + export const TriangleStripDrawMode: TrianglesDrawModes; + export const TriangleFanDrawMode: TrianglesDrawModes; // log handlers export function warn(message?: any, ...optionalParams: any[]): void; @@ -176,188 +196,170 @@ declare namespace THREE { export function log(message?: any, ...optionalParams: any[]): void; // Animation //////////////////////////////////////////////////////////////////////////////////////// - export class AnimationAction { - constructor(clip: AnimationClip, startTime?: number, timeScale?: number, weight?: number, loop?: boolean); - - clip: AnimationClip - localRoot: Mesh; - startTime: number; - timeScale: number; - weight: number; - loop: AnimationActionLoopStyles; - loopCount: number; - enabled: boolean; - actionTime: number; - clipTime: number; - propertyBindings: PropertyBinding[]; - - setLocalRoot( localRoot: Mesh ): AnimationAction; - updateTime( clipDeltaTime: number ): number; - syncWith( action: AnimationAction ): AnimationAction; - warpToDuration( duration: number ): AnimationAction; - init( time: number ): AnimationAction; - update( clipDeltaTime: number ): any[]; - getTimeScaleAt( time: number ): number; - getWeightAt( time: number ): number; - } export class AnimationClip { - constructor( name: string, duration?: number, tracks?: KeyframeTrack[] ); + constructor( name?: string, duration?: number, tracks?: KeyframeTrack[] ); name: string; tracks: KeyframeTrack[]; duration: number; results: any[]; - getAt(clipTime: number): any[]; + resetDuration(): void; trim(): AnimationClip; optimize(): AnimationClip; static CreateFromMorphTargetSequence( name: string, morphTargetSequence: MorphTarget[], fps: number ): AnimationClip; - findByName( clipArray: AnimationClip, name: string ): AnimationClip; + static findByName( clipArray: AnimationClip, name: string ): AnimationClip; static CreateClipsFromMorphTargetSequences( morphTargets: MorphTarget[], fps: number ): AnimationClip[]; - parse( json: any ): AnimationClip; - parseAnimation( animation: any, bones: Bone[], nodeName: string ): AnimationClip; + static parse( json: any ): AnimationClip; + static parseAnimation( animation: any, bones: Bone[], nodeName: string ): AnimationClip; + static toJSON(): any; } export class AnimationMixer { - constructor( root: any ); + constructor(root: any); - root: any; time: number; timeScale: number; - actions: AnimationAction; - propertyBindingMap: any; - addAction( action: AnimationAction ): void; - removeAllActions(): AnimationMixer; - removeAction( action: AnimationAction ): AnimationMixer; - findActionByName( name: string ): AnimationAction; - play( action: AnimationAction, optionalFadeInDuration?: number ): AnimationMixer; - fadeOut( action: AnimationAction, duration: number ): AnimationMixer; - fadeIn( action: AnimationAction, duration: number ): AnimationMixer; - warp( action: AnimationAction, startTimeScale: NumberKeyframeTrack, endTimeScale: NumberKeyframeTrack, duration: number ): AnimationMixer; - crossFade( fadeOutAction: AnimationAction, fadeInAction: AnimationAction, duration: number, warp: boolean ): AnimationMixer; - update( deltaTime: number ): AnimationMixer; + clipAction(clip: AnimationClip, root?: any): any; // returns THREE.AnimationMixer._Action + existingAction(clip: AnimationClip, root?: any): any; /// returns THREE.AnimationMixer._Action + stopAllAction(clip: AnimationClip, root?: any): AnimationMixer; + update(deltaTime: number): AnimationMixer; + getRoot(): any; + uncacheClip(clip: AnimationClip): void; + uncacheRoot(root: any): void; + uncazcheAction(clip: AnimationClip, root?: any): void; } - export var AnimationUtils: { - getEqualsFunc( exemplarValue: any ): boolean; - clone(exemplarValue: T): T; - lerp( a: any, b: any, alpha: number, interTrack: boolean ): any; - lerp_object( a: any, b: any, alpha: number ): any; - slerp_object( a: any, b: any, alpha: number ): any; - lerp_number( a: any, b: any, alpha: number ): any; - lerp_boolean( a: any, b: any, alpha: number ): any; - lerp_boolean_immediate( a: any, b: any, alpha: number ): any; - lerp_string( a: any, b: any, alpha: number ): any; - lerp_string_immediate( a: any, b: any, alpha: number ): any; - getLerpFunc( exemplarValue: any, interTrack: boolean ): Function; - }; + export class AnimationObjectGroup { + constructor(...args: any[]); + + uuid: string; + stats: { + bindingsPerObject: number; + objects: { + total: number; + inUse: number; + } + }; + + add(...args: any[]): void; + remove(...args: any[]): void; + uncache(...args: any[]): void; + } + + export namespace AnimationUtils { + export function arraySlice(array: any, from: number, to: number): any; + export function convertArray(array: any, type: any, forceClone: boolean): any; + export function isTypedArray(object: any): boolean; + export function getKeyFrameOrder(times: number): number[]; + export function sortedArray(values: any[], stride: number, order: number[]): any[]; + export function flattenJSON(jsonKeys: string[], times: any[], values: any[], valuePropertyName: string): void; + } export class KeyframeTrack { - constructor(name: string, keys: any[]); + constructor(name: string, times: any[], values: any[], interpolation: InterpolationModes); name: string; - keys: any[]; - lastIndex: number; + times: any[]; + values: any[]; + + ValueTypeName: string; + TimeBufferType: Float32Array; + ValueBufferType: Float32Array; + + DefaultInterpolation: InterpolationModes; + + InterpolantFactoryMethodDiscrete(result: any): DiscreteInterpolant; + InterpolantFactoryMethodLinear(result: any): LinearInterpolant; + InterpolantFactoryMethodSmooth(result: any): CubicInterpolant; + + setInterpolation(interpolation: InterpolationModes): void; + getInterpolation(): InterpolationModes; + + getValuesize(): number; - getAt( time: number ): any; shift( timeOffset: number ): KeyframeTrack; scale( timeScale: number ): KeyframeTrack; trim( startTime: number, endTime: number ): KeyframeTrack; - validate(): KeyframeTrack; + validate(): boolean; optimize(): KeyframeTrack; - keyComparator(key0: KeyframeTrack, key1: KeyframeTrack): number; - parse( json: any ): KeyframeTrack; - GetTrackTypeForTypeName( typeName: string ): any; + static parse(json: any): KeyframeTrack; + static toJSON(track: KeyframeTrack): any; } export class PropertyBinding { - constructor( rootNode: any, trackName: string ); + constructor(rootNode: any, path: string, parsedPath?: any); - rootNode: any; - trackName: string; - referenceCount: number; - originalValue: any; - directoryName: string; - nodeName: string; - objectName: string; - objectIndex: number; - propertyName: string; - propertyIndex: number; + path: string; + parsedPath: any; node: any; - cumulativeValue: number; - cumulativeWeight: number; + rootNode: any; - reset(): void; - accumulate( value: any, weight: number ): void; - unbind(): void; + getValue(targetArray: any, offset: number): any; + setValue(sourceArray: any, offset: number): void; bind(): void; - apply(): void; - parseTrackName( trackName: string ): any; - findNode( root: any, nodeName: string ): any; + unbind(): void; + + BindingType: { [bindingType: string]: number }; + Versioning: { [versioning: string]: number }; + + GetterByBindingType: Function[]; + SetterByBindingTypeAndVersioning: Array; + + static create(root: any, path: any, parsedPath?: any): PropertyBinding|PropertyBinding.Composite; + static parseTrackName(trackName: string): any; + static findNode(root: any, nodeName: string): any; + } + + export namespace PropertyBinding { + export class Composite { + constructor(targetGroup: any, path: any, parsedPath?: any); + + getValue(array: any, offset: number): any; + setValue(array: any, offset: number): void; + bind(): void; + unbind(): void; + } + } + + export class PropertyMixer { + constructor(binding: any, typeName: string, valueSize: number); + + binding: any; + valueSize: number; + buffer: any; + cumulativeWeight: number; + useCount: number; + referenceCount: number; + + accumulate(accuIndex: number, weight: number): void; + apply(accuIndex: number): void; + saveOriginalState(): void; + restoreOriginalState(): void; } export class BooleanKeyframeTrack extends KeyframeTrack { - constructor(name: string, keys: any[]); - - result: any; - - setResult( value: any ): void; - lerpValues( value0: any, value1: any, alpha: number ): any; - compareValues( value0: any, value1: any ): boolean; - clone(): BooleanKeyframeTrack; - parse( json: any ): BooleanKeyframeTrack; + constructor(name: string, times: any[], values: any[]); } - export class NumberKeyframeTrack { - constructor(); - - result: any; - - setResult( value: any ): void; - lerpValues( value0: any, value1: any, alpha: number ): any; - compareValues( value0: any, value1: any ): boolean; - clone(): NumberKeyframeTrack; - parse( json: any ): NumberKeyframeTrack; + export class NumberKeyframeTrack extends KeyframeTrack { + constructor(name: string, times: any[], values: any[], interpolation: InterpolationModes); } - export class QuaternionKeyframeTrack { - constructor(); - - result: any; - - setResult( value: any ): void; - lerpValues( value0: any, value1: any, alpha: number ): any; - compareValues( value0: any, value1: any ): boolean; - clone(): QuaternionKeyframeTrack; - parse( json: any ): QuaternionKeyframeTrack; + export class QuaternionKeyframeTrack extends KeyframeTrack { + constructor(name: string, times: any[], values: any[], interpolation: InterpolationModes); } - export class StringKeyframeTrack { - constructor(); - - result: any; - - setResult( value: any ): void; - lerpValues( value0: any, value1: any, alpha: number ): any; - compareValues( value0: any, value1: any ): boolean; - clone(): StringKeyframeTrack; - parse( json: any ): StringKeyframeTrack; + export class StringKeyframeTrack extends KeyframeTrack { + constructor(name: string, times: any[], values: any[], interpolation: InterpolationModes); } - export class VectorKeyframeTrack { - constructor(); - - result: any; - - setResult( value: any ): void; - lerpValues( value0: any, value1: any, alpha: number ): any; - compareValues( value0: any, value1: any ): boolean; - clone(): VectorKeyframeTrack; - parse( json: any ): VectorKeyframeTrack; + export class VectorKeyframeTrack extends KeyframeTrack { + constructor(name: string, times: any[], values: any[], interpolation: InterpolationModes); } // Cameras //////////////////////////////////////////////////////////////////////////////////////// @@ -394,12 +396,11 @@ declare namespace THREE { } export class CubeCamera extends Object3D { - constructor( near?: number, far?: number, cubeResolution?: number); + constructor(near?: number, far?: number, cubeResolution?: number); renderTarget: WebGLRenderTargetCube; - updateCubeMap( renderer: Renderer, scene: Scene ): void; - + updateCubeMap(renderer: Renderer, scene: Scene): void; } /** @@ -459,8 +460,8 @@ declare namespace THREE { */ updateProjectionMatrix(): void; clone(): OrthographicCamera; - copy( source: OrthographicCamera ): OrthographicCamera; - toJSON( meta?: any ): any; + copy(source: OrthographicCamera): OrthographicCamera; + toJSON(meta?: any): any; } /** @@ -481,6 +482,7 @@ declare namespace THREE { */ constructor(fov?: number, aspect?: number, near?: number, far?: number); + focalLength: number; zoom: number; /** @@ -555,8 +557,18 @@ declare namespace THREE { */ updateProjectionMatrix(): void; clone(): PerspectiveCamera; - copy( source: PerspectiveCamera ): PerspectiveCamera; - toJSON( meta?: any ): any; + copy(source: PerspectiveCamera): PerspectiveCamera; + toJSON(meta?: any): any; + } + + export class StereoCamera extends Camera { + constructor(); + + aspect: number; + cameraL: PerspectiveCamera; + cameraR: PerspectiveCamera; + + update(camera: PerspectiveCamera): void; } // Core /////////////////////////////////////////////////////////////////////////////////////////////// @@ -573,10 +585,7 @@ declare namespace THREE { dynamic: boolean; updateRange: {offset:number, count:number}; version: number; - needsUpdate: boolean; - /** Deprecated, use count instead */ - length: number; count: number; setDynamic(dynamic: boolean): BufferAttribute; @@ -602,53 +611,49 @@ declare namespace THREE { setXYZ(index: number, x: number, y: number, z: number): BufferAttribute; setXYZW(index: number, x: number, y: number, z: number, w: number): BufferAttribute; clone(): BufferAttribute; + + length: number; // deprecated, use count } - // deprecated (are these actually deprecated?) - export class Int8Attribute extends BufferAttribute{ + export class Int8Attribute extends BufferAttribute { constructor(array: any, itemSize: number); } - // deprecated export class Uint8Attribute extends BufferAttribute { constructor(array: any, itemSize: number); } - // deprecated export class Uint8ClampedAttribute extends BufferAttribute { constructor(array: any, itemSize: number); } - // deprecated export class Int16Attribute extends BufferAttribute { constructor(array: any, itemSize: number); } - // deprecated export class Uint16Attribute extends BufferAttribute { constructor(array: any, itemSize: number); } - // deprecated export class Int32Attribute extends BufferAttribute { constructor(array: any, itemSize: number); } - // deprecated export class Uint32Attribute extends BufferAttribute { constructor(array: any, itemSize: number); } - // deprecated export class Float32Attribute extends BufferAttribute { constructor(array: any, itemSize: number); } - // deprecated export class Float64Attribute extends BufferAttribute { constructor(array: any, itemSize: number); } + // deprecated, use new THREE.BufferAttribute().setDynamic( true ) + export class DynamicBufferAttribute extends BufferAttribute {} + /** * This is a superefficent class for geometries because it saves all data in buffers. * It reduces memory costs and cpu cycles. But it is not as easy to work with because of all the nessecary buffer calculations. @@ -674,32 +679,21 @@ declare namespace THREE { index: BufferAttribute; attributes: BufferAttribute|InterleavedBufferAttribute[]; morphAttributes: any; + drawcalls: any; // deprecated, use groups + offsets: any; // deprecated, use groups groups: {start: number, count: number, materialIndex?: number}[]; boundingBox: Box3; boundingSphere: BoundingSphere; drawRange: { start: number, count: number }; - /** Deprecated. */ - addIndex( index: BufferAttribute ): void; - getIndex(): BufferAttribute; setIndex( index: BufferAttribute ): void; - /** Deprecated. This overloaded method is deprecated. */ - addAttribute(name: string, array: any, itemSize: number): any; - addAttribute(name: string, attribute: BufferAttribute|InterleavedBufferAttribute): void; + addAttribute(name: string, attribute: BufferAttribute|InterleavedBufferAttribute): BufferGeometry; + getAttribute(name: string): BufferAttribute|InterleavedBufferAttribute; - removeAttribute(name: string): void; + removeAttribute(name: string): BufferGeometry; - /** Deprecated. */ - drawcalls(): any; - /** Deprecated. */ - offsets(): any; - - /** Deprecated. Use addGroup */ - addDrawCall(start: number, count: number, index?: number): void; - /** Deprecated. */ - clearDrawCalls(): void; addGroup(start: number, count: number, materialIndex?: number): void; clearGroups(): void; @@ -724,7 +718,7 @@ declare namespace THREE { fromGeometry(geometry: Geometry, settings?: any): BufferGeometry; - fromDirectGeometry( geometry: DirectGeometry ): BufferGeometry; + fromDirectGeometry(geometry: DirectGeometry): BufferGeometry; /** * Computes bounding box of the geometry, updating Geometry.boundingBox attribute. @@ -738,17 +732,16 @@ declare namespace THREE { */ computeBoundingSphere(): void; - // deprecated - computeFaceNormals(): void; - /** * Computes vertex normals by averaging face normals. */ computeVertexNormals(): void; - computeOffsets(size: number): void; merge(geometry: BufferGeometry, offset: number): BufferGeometry; normalizeNormals(): void; + + toNonIndexed(): BufferGeometry; + toJSON(): any; clone(): BufferGeometry; copy(source: BufferGeometry): BufferGeometry; @@ -759,23 +752,17 @@ declare namespace THREE { */ dispose(): void; - // EventDispatcher mixins addEventListener(type: string, listener: (event: any) => void ): void; hasEventListener(type: string, listener: (event: any) => void): void; removeEventListener(type: string, listener: (event: any) => void): void; dispatchEvent(event: { type: string; target: any; }): void; - } - export class Channels { - constructor(); - - mask: number; - - set( channel: number ): void; - enable( channel: number ): void; - toggle( channel: number ): void; - disable( channel: number ): void; + addIndex(index: any): void; // deprecated, use setIndex() + addAttribute(name: any, array: any, itemSize: any): any; // deprecated + addDrawCall(start: any, count: any, indexOffset?: any): void; // deprecated, use addGroup() + clearDrawCalls(): void; // deprecated, use clearGroups() + computeFaceNormals(): void; // deprecated } /** @@ -879,6 +866,7 @@ declare namespace THREE { dispatchEvent(event: { type: string; target: any; }): void; } + /** * JavaScript events for custom objects * @@ -910,6 +898,8 @@ declare namespace THREE { */ constructor(); + apply(object: any): void; + /** * Adds a listener to an event type. * @param type The type of the listener that gets removed. @@ -997,19 +987,17 @@ declare namespace THREE { */ vertexColors: Color[]; - /** - * Array of 4 vertex tangets. - */ - vertexTangents: number[]; - /** * Material index (points to {@link Geometry.materials}). */ materialIndex: number; clone(): Face3; + copy(source: Face3): Face3; } + export class Face4 extends Face3 {} // deprecated, use Face3 + export interface MorphTarget { name: string; vertices: Vector3[]; @@ -1029,6 +1017,8 @@ declare namespace THREE { radius: number; } + export let GeometryIdCount: number; + /** * Base class for geometries * @@ -1085,7 +1075,7 @@ declare namespace THREE { * 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. */ - faceVertexUvs: Vector2[][][]; + faceVertexUvs: Vector2[][]; /** * Array of morph targets. Each morph target is a Javascript object: @@ -1176,12 +1166,8 @@ declare namespace THREE { scale(x: number, y: number, z: number): Geometry; lookAt( vector: Vector3 ): void; - fromBufferGeometry(geometry: BufferGeometry): Geometry; - /** - * - */ center(): Vector3; normalize(): Geometry; @@ -1215,9 +1201,9 @@ declare namespace THREE { */ computeBoundingSphere(): void; - merge( geometry: Geometry, matrix: Matrix, materialIndexOffset?: number): void; + merge(geometry: Geometry, matrix: Matrix, materialIndexOffset?: number): void; - mergeMesh( mesh: Mesh ): void; + mergeMesh(mesh: Mesh): void; /** * Checks for duplicate vertices using hashmap. @@ -1255,11 +1241,17 @@ declare namespace THREE { dispatchEvent(event: { type: string; target: any; }): void; } + export namespace GeometryUtils { // deprecated + export function merge(goemetry1: any, goemetry2: any, materialIndexOffset?: any): any; // deprecated, use geometry.merge( geometry2, matrix, materialIndexOffset ) + export function center(geometry: any): any; // deprecated, use geometry.center() + } + /** * @see src/core/InstancedBufferAttribute.js */ export class InstancedBufferAttribute extends BufferAttribute { constructor(data: ArrayLike, itemSize: number, meshPerAttribute?: number); + meshPerAttribute: number; clone(): InstancedBufferAttribute; @@ -1271,33 +1263,25 @@ declare namespace THREE { */ export class InstancedBufferGeometry extends BufferGeometry { constructor(); - groups: {start:number, count:number, instances:number}[]; - addGroup(start: number, count: number, instances: number): void; + groups: {start:number, count:number, instances:number}[]; + maxInstancedCount: number; + + addGroup(start: number, count: number, instances: number): void; clone(): InstancedBufferGeometry; copy(source: InstancedBufferGeometry): InstancedBufferGeometry; } - /** - * @see src/core/InstancedInterleavedBuffer.js - */ - export class InstancedInterleavedBuffer extends InterleavedBuffer { - constructor(array: ArrayLike, stride: number, meshPerAttribute?: number); - meshPerAttribute: number; - - clone(): InstancedInterleavedBuffer; - copy(source: InstancedInterleavedBuffer): InstancedInterleavedBuffer; - } - /** * @see src/core/InterleavedBuffer.js */ export class InterleavedBuffer { constructor(array: ArrayLike, stride: number); + array: ArrayLike; stride: number; dynamic: boolean; - updateRange: {offset:number, count:number}; + updateRange: { offset: number; count: number }; version: number; length: number; count: number; @@ -1311,6 +1295,18 @@ declare namespace THREE { clone(): InterleavedBuffer; } + /** + * @see src/core/InstancedInterleavedBuffer.js + */ + export class InstancedInterleavedBuffer extends InterleavedBuffer { + constructor(array: ArrayLike, stride: number, meshPerAttribute?: number); + + meshPerAttribute: number; + + clone(): InstancedInterleavedBuffer; + copy(source: InstancedInterleavedBuffer): InstancedInterleavedBuffer; + } + /** * @see src/core/InterleavedBufferAttribute.js */ @@ -1321,8 +1317,6 @@ declare namespace THREE { data: InterleavedBuffer; itemSize: number; offset: number; - /** Deprecated, use count instead */ - length: number; count: number; getX(index: number): number; @@ -1336,8 +1330,12 @@ declare namespace THREE { setXY(index: number, x: number, y: number): InterleavedBufferAttribute; setXYZ(index: number, x: number, y: number, z: number): InterleavedBufferAttribute; setXYZW(index: number, x: number, y: number, z: number, w: number): InterleavedBufferAttribute; + + length: number; // deprecated, use count instead } + export let Object3DIdCount: number; + /** * Base class for scene graph objects */ @@ -1366,8 +1364,6 @@ declare namespace THREE { */ parent: Object3D; - channels: Channels; - /** * Array with object's children. */ @@ -1387,6 +1383,7 @@ declare namespace THREE { * Object's local rotation (Euler angles), in radians. */ rotation: Euler; + eulerOrder: string; // deprecated, use rotation.order /** * Global rotation. @@ -1427,6 +1424,7 @@ declare namespace THREE { */ matrixWorldNeedsUpdate: boolean; + layers: Layers; /** * Object gets rendered if true. */ @@ -1458,7 +1456,7 @@ declare namespace THREE { * */ static DefaultUp: Vector3; - static DefaultMatrixAutoUpdate: Vector3; + static DefaultMatrixAutoUpdate: boolean; /** * This updates the position, rotation and scale with the matrix. @@ -1473,7 +1471,7 @@ declare namespace THREE { /** * */ - setRotationFromEuler(euler: Euler ): void; + setRotationFromEuler(euler: Euler): void; /** * @@ -1483,7 +1481,7 @@ declare namespace THREE { /** * */ - setRotationFromQuaternion( q: Quaternion ): void; + setRotationFromQuaternion(q: Quaternion): void; /** * Rotate an object along an axis in object space. The axis is assumed to be normalized. @@ -1515,13 +1513,7 @@ declare namespace THREE { * @param distance The distance to translate. */ translateOnAxis(axis: Vector3, distance: number): Object3D; - - /** - * - * @param distance - * @param axis - */ - translate( distance: number, axis: Vector3 ): Object3D; + translate(distance: number, axis: Vector3): Object3D; // deprecated, use translateOnAxis(axis, distance) /** * Translates object along x axis by distance. @@ -1569,9 +1561,6 @@ declare namespace THREE { */ remove(object: Object3D): void; - /* deprecated */ - getChildByName( name: string ): Object3D; - /** * Searches through the object's children and returns the first with a matching id, optionally recursive. * @param id Unique number of the object instance @@ -1594,11 +1583,11 @@ declare namespace THREE { raycast(raycaster: Raycaster, intersects: any): void; - traverse(callback: (object: Object3D) => void): void; + traverse(callback: (object: Object3D) => any): void; - traverseVisible(callback: (object: Object3D) => void): void; + traverseVisible(callback: (object: Object3D) => any): void; - traverseAncestors(callback: (object: Object3D) => void): void; + traverseAncestors(callback: (object: Object3D) => any): void; /** * Updates local transform. @@ -1610,7 +1599,7 @@ declare namespace THREE { */ updateMatrixWorld(force: boolean): void; - toJSON(meta?: any): any; + toJSON(meta?: { geometries: any, materials: any, textures: any, images: any }): any; clone(recursive?: boolean): Object3D; @@ -1627,6 +1616,7 @@ declare namespace THREE { removeEventListener(type: string, listener: (event: any) => void): void; dispatchEvent(event: { type: string; target: any; }): void; + getChildByName(name: string): Object3D; // deprecated, use getObjectByName() } export interface Intersection { @@ -1643,7 +1633,7 @@ declare namespace THREE { Mesh?: any; Line?: any; LOD?: any; - Points?: any; + Points?: { threshold: number }; Sprite?: any; } @@ -1656,38 +1646,58 @@ declare namespace THREE { params: RaycasterParameters; precision: number; linePrecision: number; + set(origin: Vector3, direction: Vector3): void; setFromCamera(coords: { x: number; y: number;}, camera: Camera ): void; intersectObject(object: Object3D, recursive?: boolean): Intersection[]; intersectObjects(objects: Object3D[], recursive?: boolean): Intersection[]; } + export class Layers { + constructor(); + + mask: number; + + set(channel: number): void; + enable(channel: number): void; + toggle(channel: number): void; + disable(channel: number): void; + test(layers: Layers): boolean; + } + + export class Font { + constructor(data: any); + + data: any; + + generateShapes(text: string, size: number, divisions: number): any[]; + } + // Lights ////////////////////////////////////////////////////////////////////////////////// /** * Abstract base class for lights. */ export class Light extends Object3D { - constructor(hex?: number|string); + constructor(hex?: number|string, intensity?: number); color: Color; + intensity: number; receiveShadow: boolean; + shadow: LightShadow; + shadowCameraFov: any; // deprecated, use shadow.camera.fov + shadowCameraLeft: any; // deprecated, use shadow.camera.left + shadowCameraRight: any; // deprecated, use shadow.camera.right + shadowCameraTop: any; // deprecated, use shadow.camera.top + shadowCameraBottom: any; // deprecated, use shadow.camera.bottom + shadowCameraNear: any; // deprecated, use shadow.camera.near + shadowCameraFar: any; // deprecated, use shadow.camera.far + shadowBias: any; // deprecated, use shadow.bias + shadowMapWidth: any; // deprecated, use shadow.mapSize.width + shadowMapHeight: any; // deprecated, use shadow.mapSize.height - shadowCameraFov: number; - shadowCameraLeft: number; - shadowCameraRight: number; - shadowCameraTop: number; - shadowCameraBottom: number; - shadowCameraNear: number; - shadowCameraFar: number; - shadowBias: number; - shadowDarkness: number; - shadowMapWidth: number; - shadowMapHeight: number; - + copy(source: Light): Light; clone(recursive?: boolean): Light; - copy( source: Light ): Light; - toJSON( meta: any ): any; } export class LightShadow { @@ -1695,13 +1705,13 @@ declare namespace THREE { camera: Camera; bias: number; - darkness: number; + radius: number; mapSize: Vector2; map: RenderTarget; matrix: Matrix4; - copy(source: LightShadow): void; - clone(): LightShadow; + copy(source: LightShadow): LightShadow; + clone(recursive?: boolean): LightShadow; } /** @@ -1718,10 +1728,12 @@ declare namespace THREE { * This creates a Ambientlight with a color. * @param hex Numeric value of the RGB component of the color. */ - constructor(hex?: number|string); + constructor(hex?: number|string, intensity?: number); + + castShadow: boolean; - clone(recursive?: boolean): AmbientLight; copy(source: AmbientLight): AmbientLight; + clone(recursive?: boolean): AmbientLight; } /** @@ -1736,7 +1748,6 @@ declare namespace THREE { * @see src/lights/DirectionalLight.js */ export class DirectionalLight extends Light { - constructor(hex?: number|string, intensity?: number); /** @@ -1752,8 +1763,8 @@ declare namespace THREE { shadow: LightShadow; - clone(recursive?: boolean): DirectionalLight; copy(source: DirectionalLight): DirectionalLight; + clone(recursive?: boolean): HemisphereLight; } export class HemisphereLight extends Light { @@ -1762,8 +1773,8 @@ declare namespace THREE { groundColor: Color; intensity: number; - clone(recursive?: boolean): HemisphereLight; copy(source: HemisphereLight): HemisphereLight; + clone(recursive?: boolean): HemisphereLight; } /** @@ -1793,8 +1804,8 @@ declare namespace THREE { shadow: LightShadow; - clone(recursive?: boolean): PointLight; copy(source: PointLight): PointLight; + clone(recursive?: boolean): PointLight; } /** @@ -1843,11 +1854,6 @@ declare namespace THREE { // Loaders ////////////////////////////////////////////////////////////////////////////////// - export interface Progress { - total: number; - loaded: number; - } - /** * Base class for implementing loaders. * @@ -1896,54 +1902,32 @@ declare namespace THREE { } export interface LoaderHandler{ - handlers:any[]; - add(regex:string, loader:Loader):void; - get(file: string):Loader; + handlers: any[]; + + add(regex: string, loader: Loader): void; + get(file: string): Loader; } - export class BinaryTextureLoader { + export class XHRLoader { constructor(manager?: LoadingManager); manager: LoadingManager; - load(url: string, onLoad: (dataTexture: DataTexture) => void, onProgress?: (event: any) => void, onError?: (event: any) => void): void; - setCrossOrigin(crossOrigin: string): void; + path: string; + responseType: string; + withCredentials: boolean; + + load(url: string, onLoad?: (responseText: string) => void, onProgress?: (event: any) => void, onError?: (event: any) => void): any; + setPath(path: string): void; + setResponseType(responseType: string): void; + setWithCredentials(withCredentials: boolean): void; } - export class BufferGeometryLoader { + export class FontLoader { constructor(manager?: LoadingManager); manager: LoadingManager; - load(url: string, onLoad: (bufferGeometry: BufferGeometry) => void, onProgress?: (event: any) => void, onError?: (event: any) => void): void; - setCrossOrigin(crossOrigin: string): void; - parse(json: any): BufferGeometry; - } - - export interface Cache { - enabled: boolean; - files: any[]; - - add(key: string, file: any): void; - get(key: string): any; - remove(key: string): void; - clear(): void; - } - export var Cache: Cache; - - export class CompressedTextureLoader{ - constructor(manager?: LoadingManager); - - manager: LoadingManager; - load(url: string, onLoad: (texture: CompressedTexture) => void, onProgress?: (event: any) => void, onError?: (event: any) => void): void; - setCrossOrigin(crossOrigin: string): void; - } - - export class CubeTextureLoader { - constructor(manager?: LoadingManager); - - manager: LoadingManager; - load(urls: Array, onLoad?: (texture: CubeTexture) => void, onProgress?: (event: any) => void, onError?: (event: any) => void): void; - setCrossOrigin(crossOrigin: string): void; + load(url: string, onLoad?: (responseText: string) => void, onProgress?: (event: any) => void, onError?: (event: any) => void): void; } /** @@ -1953,17 +1937,17 @@ declare namespace THREE { export class ImageLoader { constructor(manager?: LoadingManager); - cache: Cache; manager: LoadingManager; crossOrigin: string; + path: string; /** * Begin loading from url * @param url */ load(url: string, onLoad?: (image: HTMLImageElement) => void, onProgress?: (event: any) => void, onError?: (event: any) => void): HTMLImageElement; - setCrossOrigin(crossOrigin: string): void; + setPath(value: any): void; } /** @@ -1971,12 +1955,12 @@ declare namespace THREE { */ export class JSONLoader extends Loader { constructor(manager?: LoadingManager); + manager: LoadingManager; withCredentials: boolean; + statusDomElement: HTMLElement; // readonly and deprecated load(url: string, onLoad?: (geometry: Geometry, materials: Material[]) => void, onProgress?: (event: any) => void, onError?: (event: any) => void): void; - - setCrossOrigin(crossOrigin: string): void; setTexturePath( value: string ): void; parse(json: any, texturePath?: string): { geometry: Geometry; materials?: Material[] }; } @@ -2012,18 +1996,26 @@ declare namespace THREE { itemError(url: string): void; } - export var DefaultLoadingManager: LoadingManager; + export const DefaultLoadingManager: LoadingManager; + + export class BufferGeometryLoader { + constructor(manager?: LoadingManager); + + manager: LoadingManager; + + load(url: string, onLoad: (bufferGeometry: BufferGeometry) => void, onProgress?: (event: any) => void, onError?: (event: any) => void): void; + parse(json: any): BufferGeometry; + } export class MaterialLoader { constructor(manager?: LoadingManager); manager: LoadingManager; - textures: { [key:string]:Texture }; + textures: { [key: string]: Texture }; load(url: string, onLoad: (material: Material) => void): void; - setCrossOrigin(crossOrigin: string): void; - setTextures(textures: { [key:string]:Texture }): void; - getTexture( name: string ):Texture; + setTextures(textures: { [key: string]: Texture }): void; + getTexture(name: string): Texture; parse(json: any): Material; } @@ -2032,6 +2024,7 @@ declare namespace THREE { manager: LoadingManager; texturePass: string; + crossOrigin: string; load(url: string, onLoad?: (object: Object3D) => void): void; setTexturePath( value: string ): void; @@ -2039,10 +2032,10 @@ declare namespace THREE { parse(json: any, onLoad?: (object: Object3D) => void): T; parseGeometries(json: any): any[]; // Array of BufferGeometry or Geometry or Geometry2. parseMaterials(json: any, textures: Texture[]): Material[]; // Array of Classes that inherits from Matrial. - parseImages( json: any, onLoad: () => void ): any[]; - parseTextures( json: any, images: any ): Texture[]; + parseAnimations(json: any): AnimationClip[]; + parseImages(json: any, onLoad: () => void): any[]; + parseTextures(json: any, images: any): Texture[]; parseObject(data: any, geometries: any[], materials: Material[]): T; - } /** @@ -2054,6 +2047,7 @@ declare namespace THREE { manager: LoadingManager; crossOrigin: string; + path: string; /** * Begin loading from url @@ -2062,23 +2056,53 @@ declare namespace THREE { */ load(url: string, onLoad?: (texture: Texture) => void): Texture; setCrossOrigin(crossOrigin: string): void; + setPath(path: string): void; } - export class XHRLoader { + export class CubeTextureLoader { constructor(manager?: LoadingManager); - cache: Cache; manager: LoadingManager; - responseType: string; - crossOrigin: string; + corssOrigin: string; + path: string; - load(url: string, onLoad?: (responseText: string) => void, onProgress?: (event: any) => void, onError?: (event: any) => void): any; - setResponseType(responseType: string): void; + load(urls: Array, onLoad?: (texture: CubeTexture) => void, onProgress?: (event: any) => void, onError?: (event: any) => void): void; setCrossOrigin(crossOrigin: string): void; - setWithCredentials( withCredentials: string ): void; + setPath(path: string): void; + } + + export class BinaryTextureLoader { + constructor(manager?: LoadingManager); + + manager: LoadingManager; + + load(url: string, onLoad: (dataTexture: DataTexture) => void, onProgress?: (event: any) => void, onError?: (event: any) => void): void; + } + export class DataTextureLoader extends BinaryTextureLoader {} + + export class CompressedTextureLoader { + constructor(manager?: LoadingManager); + + manager: LoadingManager; + path: string; + + load(url: string, onLoad: (texture: CompressedTexture) => void, onProgress?: (event: any) => void, onError?: (event: any) => void): void; + setPath(path: string): void; + } + + export namespace Cache { + export let enabled: boolean; + export let files: any; + + export function add(key: string, file: any): void; + export function get(key: string): any; + export function remove(key: string): void; + export function clear(): void; } // Materials ////////////////////////////////////////////////////////////////////////////////// + export let MaterialIdCount: number; + export interface MaterialParameters { name?: string; side?: Side; @@ -2088,15 +2112,20 @@ declare namespace THREE { blendSrc?: BlendingDstFactor; blendDst?: BlendingSrcFactor; blendEquation?: BlendingEquation; + blendSrcAlpha?: number; + blendDstAlpha?: number; + blendEquationAlpha?: number; + depthFunc?: DepthModes; depthTest?: boolean; depthWrite?: boolean; + colorWrite?: boolean; + precision?: number; polygonOffset?: boolean; polygonOffsetFactor?: number; polygonOffsetUnits?: number; alphaTest?: number; overdraw?: number; visible?: boolean; - needsUpdate?: boolean; } /** @@ -2213,10 +2242,12 @@ declare namespace THREE { */ needsUpdate: boolean; - setValues(values: Object): void; + warpRGB: Color; // deprecated, returns a new Color intance + + setValues(parameters: MaterialParameters): void; toJSON(meta?: any): any; clone(): Material; - clone(source?:Material): Material; + copy(source: Material): Material; update(): void; dispose(): void; @@ -2246,6 +2277,7 @@ declare namespace THREE { vertexColors: Colors; fog: boolean; + setValues(parameters: LineBasicMaterialParameters): void; clone(): LineBasicMaterial; copy(source: LineBasicMaterial): LineBasicMaterial; } @@ -2271,6 +2303,7 @@ declare namespace THREE { vertexColors: Colors; fog: boolean; + setValues(parameters: LineDashedMaterialParameters): void; clone(): LineDashedMaterial; copy(source: LineDashedMaterial): LineDashedMaterial; } @@ -2278,7 +2311,7 @@ declare namespace THREE { /** * parameters is an object with one or more properties defining the material's appearance. */ - export interface MeshBasicMaterialParameters extends MaterialParameters{ + export interface MeshBasicMaterialParameters extends MaterialParameters { color?: number|string; opacity?: number; map?: Texture; @@ -2296,6 +2329,8 @@ declare namespace THREE { depthWrite?: boolean; wireframe?: boolean; wireframeLinewidth?: number; + wireframeLinecap?: string; + wireframeLinejoin?: string; vertexColors?: Colors; skinning?: boolean; morphTargets?: boolean; @@ -2325,11 +2360,12 @@ declare namespace THREE { skinning: boolean; morphTargets: boolean; + setValues(parameters: MeshBasicMaterialParameters): void; clone(): MeshBasicMaterial; copy(source: MeshBasicMaterial): MeshBasicMaterial; } - export interface MeshDepthMaterialParameters extends MaterialParameters{ + export interface MeshDepthMaterialParameters extends MaterialParameters { wireframe?: boolean; wireframeLinewidth?: number; } @@ -2340,15 +2376,21 @@ declare namespace THREE { wireframe: boolean; wireframeLinewidth: number; + setValues(parameters: MeshDepthMaterialParameters): void; clone(): MeshDepthMaterial; copy(source: MeshDepthMaterial): MeshDepthMaterial; } - export interface MeshLambertMaterialParameters extends MaterialParameters{ + export interface MeshLambertMaterialParameters extends MaterialParameters { color?: number|string; - emissive?: number; - opacity?: number; + emissive?: number|string; + emissiveIntensity?: number; + emissiveMap?: Texture; map?: Texture; + lighhtMap?: Texture; + lightMapIntensity?: number; + aoMap?: Texture; + aoMapIntensity?: number; specularMap?: Texture; alphaMap?: Texture; envMap?: Texture; @@ -2358,6 +2400,8 @@ declare namespace THREE { fog?: boolean; wireframe?: boolean; wireframeLinewidth?: number; + wireframeLinecap?: string; + wireframeLinejoin?: string; vertexColors?: Colors; skinning?: boolean; morphTargets?: boolean; @@ -2368,8 +2412,14 @@ declare namespace THREE { constructor(parameters?: MeshLambertMaterialParameters); color: Color; - emissive: Color; + emissive: number|string; + emissiveIntensity: number; + emissiveMap: Texture; map: Texture; + lighhtMap: Texture; + lightMapIntensity: number; + aoMap: Texture; + aoMapIntensity: number; specularMap: Texture; alphaMap: Texture; envMap: Texture; @@ -2386,22 +2436,94 @@ declare namespace THREE { morphTargets: boolean; morphNormals: boolean; + setValues(parameters: MeshLambertMaterialParameters): void; clone(): MeshLambertMaterial; copy(source: MeshLambertMaterial): MeshLambertMaterial; } - export interface MeshNormalMaterialParameters extends MaterialParameters{ - opacity?: number; + export interface MeshStandardMaterialParameters extends MaterialParameters { + color?: number|string; + roughtness?: number; + metalness?: number; + lighhtMap?: Texture; + lightMapIntensity?: number; + aoMap?: Texture; + aoMapIntensity?: number; + emissive?: Color; + emissiveIntensity?: number; + emissiveMap?: Texture; + bumpMap?: Texture; + bumpScale?: number; + normalMap?: Texture; + normalScale?: number; + displacementMap?: Texture; + displacementScale?: number; + displacementBias?: number; + roughtnessMap?: Texture; + metalMap?: Texture; + alphaMap?: Texture; + envMap?: Texture; + envMapIntensity?: number; + refractionRatio?: number; shading?: Shading; - blending?: Blending; - depthTest?: boolean; - depthWrite?: boolean; + blending: Blending; + wireframe?: boolean; + wireframeLinewidth?: number; + vertexColors?: Colors; + skinning?: boolean; + morphTargets?: boolean; + morphNormals?: boolean; + fog?: boolean; + } + export class MeshStandardMaterial extends Material { + constructor(parameters?: MeshStandardMaterialParameters); + + color: Color; + roughtness: number; + metalness: number; + map: Texture; + lighhtMap: Texture; + lightMapIntensity: number; + aoMap: Texture; + aoMapIntensity: number; + emissive: Color; + emissiveIntensity: number; + emissiveMap: Texture; + bumpMap: Texture; + bumpScale: number; + normalMap: Texture; + normalScale: number; + displacementMap: Texture; + displacementScale: number; + displacementBias: number; + roughtnessMap: Texture; + metalMap: Texture; + alphaMap: Texture; + envMap: Texture; + envMapIntensity: number; + refractionRatio: number; + shading: Shading; + blending: Blending; + wireframe: boolean; + wireframeLinewidth: number; + vertexColors: Colors; + skinning: boolean; + morphTargets: boolean; + morphNormals: boolean; + fog: boolean; + + setValues(parameters: MeshStandardMaterialParameters): void; + clone(): MeshStandardMaterial; + copy(source: MeshStandardMaterial): MeshStandardMaterial; + } + + export interface MeshNormalMaterialParameters extends MaterialParameters { /** Render geometry as wireframe. Default is false (i.e. render as smooth shaded). */ wireframe?: boolean; /** Controls wireframe thickness. Default is 1. */ wireframeLinewidth?: number; - + morphTargets?: boolean; } export class MeshNormalMaterial extends Material { @@ -2411,14 +2533,14 @@ declare namespace THREE { wireframeLinewidth: number; morphTargets: boolean; + setValues(parameters: MeshNormalMaterialParameters): void; clone(): MeshNormalMaterial; copy(source: MeshNormalMaterial): MeshNormalMaterial; } export interface MeshPhongMaterialParameters extends MaterialParameters { /** geometry color in hexadecimal. Default is 0xffffff. */ - color?: number | string; - emissive?: number; + color?: number|string; specular?: number; shininess?: number; opacity?: number; @@ -2427,6 +2549,8 @@ declare namespace THREE { lightMapIntensity?: number; aoMap?: Texture; aoMapIntensity?: number; + emissive?: number; + emissiveIntensity?: number; emissiveMap?: Texture; bumpMap?: Texture; bumpScale?: number; @@ -2447,6 +2571,8 @@ declare namespace THREE { depthWrite?: boolean; wireframe?: boolean; wireframeLinewidth?: number; + wireframeLinecap?: string; + wireframeLinejoin?: string; vertexColors?: Colors; skinning?: boolean; morphTargets?: boolean; @@ -2458,15 +2584,15 @@ declare namespace THREE { constructor(parameters?: MeshPhongMaterialParameters); color: Color; // diffuse - emissive: Color; specular: Color; shininess: number; - metal: boolean; map: Texture; lightMap: Texture; lightMapIntensity: number; aoMap: Texture; aoMapIntensity: number; + emissive: Color; + emissiveIntensity: number; emissiveMap: Texture; bumpMap: Texture; bumpScale: number; @@ -2491,7 +2617,9 @@ declare namespace THREE { skinning: boolean; morphTargets: boolean; morphNormals: boolean; + metal: boolean; // deprecated + setValues(parameters: MeshPhongMaterialParameters): void; clone(): MeshPhongMaterial; copy(source: MeshPhongMaterial): MeshPhongMaterial; } @@ -2500,18 +2628,16 @@ declare namespace THREE { // See tests/canvas/canvas_materials.ts. export class MultiMaterial extends Material { constructor(materials?: Material[]); + materials: Material[]; - toJSON(): any; + toJSON(meta: any): any; clone(): MultiMaterial; } - // deprecated - export class MeshFaceMaterial extends MultiMaterial { + export class MeshFaceMaterial extends MultiMaterial {} // deprecated, use MultiMaterial - } - - export interface PointsMaterialParameters extends MaterialParameters{ + export interface PointsMaterialParameters extends MaterialParameters { color?: number|string; opacity?: number; map?: Texture; @@ -2534,13 +2660,14 @@ declare namespace THREE { vertexColors: boolean; fog: boolean; + setValues(parameters: PointsMaterialParameters): void; clone(): PointsMaterial; copy(source: PointsMaterial): PointsMaterial; } - export class RawShaderMaterial extends ShaderMaterial { - constructor(parameters?: ShaderMaterialParameters); - } + export class PointCloudMaterial extends PointsMaterial {} // deprecated, use PointsMaterial + export class ParticleBasicMaterial extends PointsMaterial {} // deprecated, use PointsMaterial + export class ParticleSystemMaterial extends PointsMaterial {} // deprecated, use PointsMaterial export interface ShaderMaterialParameters extends MaterialParameters { defines?: any; @@ -2548,6 +2675,7 @@ declare namespace THREE { fragmentShader?: string; vertexShader?: string; shading?: Shading; + lineWidth?: number; blending?: Blending; depthTest?: boolean; depthWrite?: boolean; @@ -2578,15 +2706,21 @@ declare namespace THREE { skinning: boolean; morphTargets: boolean; morphNormals: boolean; - derivatives: boolean; + derivatives: any; // deprecated, use extensions.derivatives + extensions: { derivatives: boolean; fragDepth: boolean; drawBuffers: boolean; shaderTextureLOD: boolean }; defaultAttributeValues: any; index0AttributeName: string; + setValues(parameters: ShaderMaterialParameters): void; clone(): ShaderMaterial; copy(source: ShaderMaterial): ShaderMaterial; toJSON(meta: any): any; } + export class RawShaderMaterial extends ShaderMaterial { + constructor(parameters?: ShaderMaterialParameters); + } + export interface SpriteMaterialParameters extends MaterialParameters { color?: number|string; opacity?: number; @@ -2607,6 +2741,7 @@ declare namespace THREE { rotation: number; fog: boolean; + setValues(parameters: SpriteMaterialParameters): void; clone(): SpriteMaterial; copy(source: SpriteMaterial): SpriteMaterial; } @@ -2625,7 +2760,8 @@ declare namespace THREE { clone(): Box2; copy(box: Box2): Box2; makeEmpty(): Box2; - empty(): boolean; + empty(): any; // deprecated, use isEmpty() + isEmpty(): boolean; center(optionalTarget?: Vector2): Vector2; size(optionalTarget?: Vector2): Vector2; expandByPoint(point: Vector2): Box2; @@ -2634,13 +2770,15 @@ declare namespace THREE { containsPoint(point: Vector2): boolean; containsBox(box: Box2): boolean; getParameter(point: Vector2): Vector2; - isIntersectionBox(box: Box2): boolean; + intersectsBox(box: Box2): boolean; clampPoint(point: Vector2, optionalTarget?: Vector2): Vector2; distanceToPoint(point: Vector2): number; intersect(box: Box2): Box2; union(box: Box2): Box2; translate(offset: Vector2): Box2; equals(box: Box2): boolean; + + isIntersectionBox(b: any): any; // deprecated, use intersectsBox() } export class Box3 { @@ -2650,13 +2788,14 @@ declare namespace THREE { min: Vector3; set(min: Vector3, max: Vector3): Box3; + setFromArray(array: number[]): Box3; setFromPoints(points: Vector3[]): Box3; setFromCenterAndSize(center: Vector3, size: Vector3): Box3; setFromObject(object: Object3D): Box3; clone(): Box3; copy(box: Box3): Box3; makeEmpty(): Box3; - empty(): boolean; + isEmpty(): boolean; center(optionalTarget?: Vector3): Vector3; size(optionalTarget?: Vector3): Vector3; expandByPoint(point: Vector3): Box3; @@ -2665,7 +2804,9 @@ declare namespace THREE { containsPoint(point: Vector3): boolean; containsBox(box: Box3): boolean; getParameter(point: Vector3): Vector3; - isIntersectionBox(box: Box3): boolean; + intersectsBox(box: Box3): boolean; + intersectsSphere(sphere: Sphere): boolean; + intersectsPlane(plane: Plane): boolean; clampPoint(point: Vector3, optionalTarget?: Vector3): Vector3; distanceToPoint(point: Vector3): number; getBoundingSphere(optionalTarget?: Sphere): Sphere; @@ -2674,6 +2815,10 @@ declare namespace THREE { applyMatrix4(matrix: Matrix4): Box3; translate(offset: Vector3): Box3; equals(box: Box3): boolean; + + empty(): any; // deprecated, use isEmpty() + isIntersectionBox(b: any): any; // deprecated, use intersectsBox() + isIntersectionSphere(s: any): any; // deprecated, use intersectsSphere() } export interface HSL { @@ -2714,6 +2859,7 @@ declare namespace THREE { set(color: Color): Color; set(color: number): Color; set(color: string): Color; + setScalar(scalar: number): Color; setHex(hex: number): Color; /** @@ -2804,165 +2950,164 @@ declare namespace THREE { toArray(array?: number[], offset?: number): number[]; } - export class ColorKeywords { - static aliceblue: number; - static antiquewhite: number; - static aqua: number; - static aquamarine: number; - static azure: number; - static beige: number; - static bisque: number; - static black: number; - static blanchedalmond: number; - static blue: number; - static blueviolet: number; - static brown: number; - static burlywood: number; - static cadetblue: number; - static chartreuse: number; - static chocolate: number; - static coral: number; - static cornflowerblue: number; - static cornsilk: number; - static crimson: number; - static cyan: number; - static darkblue: number; - static darkcyan: number; - static darkgoldenrod: number; - static darkgray: number; - static darkgreen: number; - static darkgrey: number; - static darkkhaki: number; - static darkmagenta: number; - static darkolivegreen: number; - static darkorange: number; - static darkorchid: number; - static darkred: number; - static darksalmon: number; - static darkseagreen: number; - static darkslateblue: number; - static darkslategray: number; - static darkslategrey: number; - static darkturquoise: number; - static darkviolet: number; - static deeppink: number; - static deepskyblue: number; - static dimgray: number; - static dimgrey: number; - static dodgerblue: number; - static firebrick: number; - static floralwhite: number; - static forestgreen: number; - static fuchsia: number; - static gainsboro: number; - static ghostwhite: number; - static gold: number; - static goldenrod: number; - static gray: number; - static green: number; - static greenyellow: number; - static grey: number; - static honeydew: number; - static hotpink: number; - static indianred: number; - static indigo: number; - static ivory: number; - static khaki: number; - static lavender: number; - static lavenderblush: number; - static lawngreen: number; - static lemonchiffon: number; - static lightblue: number; - static lightcoral: number; - static lightcyan: number; - static lightgoldenrodyellow: number; - static lightgray: number; - static lightgreen: number; - static lightgrey: number; - static lightpink: number; - static lightsalmon: number; - static lightseagreen: number; - static lightskyblue: number; - static lightslategray: number; - static lightslategrey: number; - static lightsteelblue: number; - static lightyellow: number; - static lime: number; - static limegreen: number; - static linen: number; - static magenta: number; - static maroon: number; - static mediumaquamarine: number; - static mediumblue: number; - static mediumorchid: number; - static mediumpurple: number; - static mediumseagreen: number; - static mediumslateblue: number; - static mediumspringgreen: number; - static mediumturquoise: number; - static mediumvioletred: number; - static midnightblue: number; - static mintcream: number; - static mistyrose: number; - static moccasin: number; - static navajowhite: number; - static navy: number; - static oldlace: number; - static olive: number; - static olivedrab: number; - static orange: number; - static orangered: number; - static orchid: number; - static palegoldenrod: number; - static palegreen: number; - static paleturquoise: number; - static palevioletred: number; - static papayawhip: number; - static peachpuff: number; - static peru: number; - static pink: number; - static plum: number; - static powderblue: number; - static purple: number; - static red: number; - static rosybrown: number; - static royalblue: number; - static saddlebrown: number; - static salmon: number; - static sandybrown: number; - static seagreen: number; - static seashell: number; - static sienna: number; - static silver: number; - static skyblue: number; - static slateblue: number; - static slategray: number; - static slategrey: number; - static snow: number; - static springgreen: number; - static steelblue: number; - static tan: number; - static teal: number; - static thistle: number; - static tomato: number; - static turquoise: number; - static violet: number; - static wheat: number; - static white: number; - static whitesmoke: number; - static yellow: number; - static yellowgreen: number; + export namespace ColorKeywords { + export const aliceblue: number; + export const antiquewhite: number; + export const aqua: number; + export const aquamarine: number; + export const azure: number; + export const beige: number; + export const bisque: number; + export const black: number; + export const blanchedalmond: number; + export const blue: number; + export const blueviolet: number; + export const brown: number; + export const burlywood: number; + export const cadetblue: number; + export const chartreuse: number; + export const chocolate: number; + export const coral: number; + export const cornflowerblue: number; + export const cornsilk: number; + export const crimson: number; + export const cyan: number; + export const darkblue: number; + export const darkcyan: number; + export const darkgoldenrod: number; + export const darkgray: number; + export const darkgreen: number; + export const darkgrey: number; + export const darkkhaki: number; + export const darkmagenta: number; + export const darkolivegreen: number; + export const darkorange: number; + export const darkorchid: number; + export const darkred: number; + export const darksalmon: number; + export const darkseagreen: number; + export const darkslateblue: number; + export const darkslategray: number; + export const darkslategrey: number; + export const darkturquoise: number; + export const darkviolet: number; + export const deeppink: number; + export const deepskyblue: number; + export const dimgray: number; + export const dimgrey: number; + export const dodgerblue: number; + export const firebrick: number; + export const floralwhite: number; + export const forestgreen: number; + export const fuchsia: number; + export const gainsboro: number; + export const ghostwhite: number; + export const gold: number; + export const goldenrod: number; + export const gray: number; + export const green: number; + export const greenyellow: number; + export const grey: number; + export const honeydew: number; + export const hotpink: number; + export const indianred: number; + export const indigo: number; + export const ivory: number; + export const khaki: number; + export const lavender: number; + export const lavenderblush: number; + export const lawngreen: number; + export const lemonchiffon: number; + export const lightblue: number; + export const lightcoral: number; + export const lightcyan: number; + export const lightgoldenrodyellow: number; + export const lightgray: number; + export const lightgreen: number; + export const lightgrey: number; + export const lightpink: number; + export const lightsalmon: number; + export const lightseagreen: number; + export const lightskyblue: number; + export const lightslategray: number; + export const lightslategrey: number; + export const lightsteelblue: number; + export const lightyellow: number; + export const lime: number; + export const limegreen: number; + export const linen: number; + export const magenta: number; + export const maroon: number; + export const mediumaquamarine: number; + export const mediumblue: number; + export const mediumorchid: number; + export const mediumpurple: number; + export const mediumseagreen: number; + export const mediumslateblue: number; + export const mediumspringgreen: number; + export const mediumturquoise: number; + export const mediumvioletred: number; + export const midnightblue: number; + export const mintcream: number; + export const mistyrose: number; + export const moccasin: number; + export const navajowhite: number; + export const navy: number; + export const oldlace: number; + export const olive: number; + export const olivedrab: number; + export const orange: number; + export const orangered: number; + export const orchid: number; + export const palegoldenrod: number; + export const palegreen: number; + export const paleturquoise: number; + export const palevioletred: number; + export const papayawhip: number; + export const peachpuff: number; + export const peru: number; + export const pink: number; + export const plum: number; + export const powderblue: number; + export const purple: number; + export const red: number; + export const rosybrown: number; + export const royalblue: number; + export const saddlebrown: number; + export const salmon: number; + export const sandybrown: number; + export const seagreen: number; + export const seashell: number; + export const sienna: number; + export const silver: number; + export const skyblue: number; + export const slateblue: number; + export const slategray: number; + export const slategrey: number; + export const snow: number; + export const springgreen: number; + export const steelblue: number; + export const tan: number; + export const teal: number; + export const thistle: number; + export const tomato: number; + export const turquoise: number; + export const violet: number; + export const wheat: number; + export const white: number; + export const whitesmoke: number; + export const yellow: number; + export const yellowgreen: number; } export class Euler { - static DefaultOrder: string; - constructor(x?: number, y?: number, z?: number, order?: string); - + x: number; y: number; z: number; order: string; + onChangeCallback: Function; set(x: number, y: number, z: number, order?: string): Euler; clone(): Euler; @@ -2975,7 +3120,10 @@ declare namespace THREE { fromArray(xyzo: any[]): Euler; toArray(array?: number[], offset?: number): number[]; toVector3(optionalResult?: Vector3): Vector3; - onChange: () => void; + onChange(callback: Function): void; + + static RotationOrders: string[]; + static DefautlOrder: string; } /** @@ -3001,6 +3149,7 @@ declare namespace THREE { export class Line3 { constructor(start?: Vector3, end?: Vector3); + start: Vector3; end: Vector3; @@ -3018,8 +3167,12 @@ declare namespace THREE { equals(line: Line3): boolean; } - interface Math { - generateUUID(): string; + /** + * + * @see src/math/Math.js + */ + export namespace Math { + export function generateUUID(): string; /** * Clamps the x to be between a and b. @@ -3028,8 +3181,8 @@ declare namespace THREE { * @param min Minimum value * @param max Maximum value. */ - clamp(value: number, min: number, max: number): number; - euclideanModulo( n: number, m: number ): number; + export function clamp(value: number, min: number, max: number): number; + export function euclideanModulo( n: number, m: number ): number; /** * Linear mapping of x from range [a1, a2] to range [b1, b2]. @@ -3040,50 +3193,44 @@ declare namespace THREE { * @param b1 Minimum value for range B. * @param b2 Maximum value for range B. */ - mapLinear(x: number, a1: number, a2: number, b1: number, b2: number): number; + export function mapLinear(x: number, a1: number, a2: number, b1: number, b2: number): number; - smoothstep(x: number, min: number, max: number): number; + export function smoothstep(x: number, min: number, max: number): number; - smootherstep(x: number, min: number, max: number): number; + export function smootherstep(x: number, min: number, max: number): number; /** * Random float from 0 to 1 with 16 bits of randomness. * Standard Math.random() creates repetitive patterns when applied over larger space. */ - random16(): number; + export function random16(): number; // deprecated, use Math.random() /** * Random integer from low to high interval. */ - randInt(low: number, high: number): number; + export function randInt(low: number, high: number): number; /** * Random float from low to high interval. */ - randFloat(low: number, high: number): number; + export function randFloat(low: number, high: number): number; /** * Random float from - range / 2 to range / 2 interval. */ - randFloatSpread(range: number): number; + export function randFloatSpread(range: number): number; - degToRad(degrees: number): number; + export function degToRad(degrees: number): number; - radToDeg(radians: number): number; + export function radToDeg(radians: number): number; - isPowerOfTwo(value: number): boolean; + export function isPowerOfTwo(value: number): boolean; - nearestPowerOfTwo(value: number): number; + export function nearestPowerOfTwo(value: number): number; - nextPowerOfTwo(value: number): number; + export function nextPowerOfTwo(value: number): number; } - /** - * - * @see src/math/Math.js - */ - export var Math: Math; - /** * ( interface Matrix<T> ) */ @@ -3135,11 +3282,6 @@ declare namespace THREE { */ constructor(); - /** - * Initialises the matrix with the supplied n11..n33 values. - */ - constructor(n11: number, n12: number, n13: number, n21: number, n22: number, n23: number, n31: number, n32: number, n33: number); - /** * Float32Array with matrix values. */ @@ -3149,12 +3291,13 @@ declare namespace THREE { identity(): Matrix3; clone(): Matrix3; copy(m: Matrix3): Matrix3; + multiplyVector3Array(a: any): any; // deprecated, use applyToVector3Array() applyToVector3Array(array: number[], offset?: number, length?: number): number[]; - applyToBuffer( buffer: BufferAttribute, offset?: number, length?: number): BufferAttribute; + applyToBuffer(buffer: BufferAttribute, offset?: number, length?: number): BufferAttribute; multiplyScalar(s: number): Matrix3; determinant(): number; - getInverse(matrix: Matrix3, throwOnInvertible?: boolean): Matrix3; - getInverse(matrix: Matrix4, throwOnInvertible?: boolean): Matrix3; + getInverse(matrix: Matrix3, throwOnDegenerate?: boolean): Matrix3; + getInverse(matrix: Matrix4, throwOnDegenerate?: boolean): Matrix3; /** * Transposes this matrix in place. @@ -3170,6 +3313,7 @@ declare namespace THREE { fromArray(array: number[]): Matrix3; toArray(): number[]; + multiplyVector3(vector: Vector3): any; // deprecated, use vector.applyMatrix3( matrix ) } /** @@ -3191,10 +3335,7 @@ declare namespace THREE { * m.multiply( m3 ); */ export class Matrix4 implements Matrix { - /** - * Initialises the matrix with the supplied n11..n44 values. - */ - constructor(n11?: number, n12?: number, n13?: number, n14?: number, n21?: number, n22?: number, n23?: number, n24?: number, n31?: number, n32?: number, n33?: number, n34?: number, n41?: number, n42?: number, n43?: number, n44?: number); + constructor(); /** * Float32Array with matrix values. @@ -3212,6 +3353,7 @@ declare namespace THREE { identity(): Matrix4; clone(): Matrix4; copy(m: Matrix4): Matrix4; + extractPosition(m: Matrix4): Matrix4; // deprecated, use copyPosition() copyPosition(m: Matrix4): Matrix4; extractBasis( xAxis: Vector3, yAxis: Vector3, zAxis: Vector3): Matrix4; makeBasis( xAxis: Vector3, yAxis: Vector3, zAxis: Vector3): Matrix4; @@ -3221,6 +3363,7 @@ declare namespace THREE { */ extractRotation(m: Matrix4): Matrix4; makeRotationFromEuler(euler: Euler): Matrix4; + setRotationFromQuaternion(q: Quaternion): Matrix4; // deprecated, use makeRotationFromQuaternion() makeRotationFromQuaternion(q: Quaternion): Matrix4; /** * Constructs a rotation matrix, looking from eye towards center with defined up vector. @@ -3247,6 +3390,7 @@ declare namespace THREE { * Multiplies this matrix by s. */ multiplyScalar(s: number): Matrix4; + multiplyVector3Array(array: number[]): number[]; // deprecated, use applyToVector3Array() applyToVector3Array(array: number[], offset?: number, length?: number): number[]; applyToBuffer( buffer: BufferAttribute, offset?: number, length?: number): BufferAttribute; /** @@ -3268,7 +3412,8 @@ declare namespace THREE { /** * Sets the position component for this matrix from vector v. */ - setPosition(v: Vector3): Vector3; + setPosition(v: Vector3): Matrix4; + /** * Sets this matrix to the inverse of matrix m. @@ -3350,6 +3495,12 @@ declare namespace THREE { equals( matrix: Matrix4 ): boolean; fromArray(array: number[]): Matrix4; toArray(): number[]; + + getPosition(): any; // deprecated, use Vector3.setFromMatrixPosition( matrix ) + multiplyVector3(v: any): any; // deprecated, use vector.applyMatrix4( matrix ) or vector.applyProjection( matrix ) + multiplyVector4(v: any): any; // deprecated, use vector.applyMatrix4( matrix ) + rotateAxis(v: any): void; // deprecated, use Vector3.transformDirection( matrix ) + crossVector(v: any): void; // deprecated, use vector.applyMatrix( matrix ) } export class Plane { @@ -3370,12 +3521,15 @@ declare namespace THREE { distanceToSphere(sphere: Sphere): number; projectPoint(point: Vector3, optionalTarget?: Vector3): Vector3; orthoPoint(point: Vector3, optionalTarget?: Vector3): Vector3; - isIntersectionLine(line: Line3): boolean; intersectLine(line: Line3, optionalTarget?: Vector3): Vector3; + intersectsLine(line: Line3): boolean; + intersectsBox(box: Box3): boolean; coplanarPoint(optionalTarget?: boolean): Vector3; applyMatrix4(matrix: Matrix4, optionalNormalMatrix?: Matrix3): Plane; translate(offset: Vector3): Plane; equals(plane: Plane): boolean; + + isIntersectionLine(l: any): any; // deprecated, use instersectsLine() } /** @@ -3463,10 +3617,8 @@ declare namespace THREE { */ multiplyQuaternions(a: Quaternion, b: Quaternion): Quaternion; - /** - * Deprecated. Use Vector3.applyQuaternion instead - */ - multiplyVector3(vector: Vector3): Vector3; + multiplyVector3(v: any): any; // deprecated, use vector.applyQuaternion( quaternion ) + slerp(qb: Quaternion, t: number): Quaternion; equals(v: Quaternion): boolean; fromArray(n: number[]): Quaternion; @@ -3475,12 +3627,15 @@ declare namespace THREE { fromArray(xyzw: number[], offset?: number): Quaternion; toArray(xyzw?: number[], offset?: number): number[]; - onChange: () => void; + onChange(callback: Function): Quaternion; + onChangeCallback: Function; /** * Adapted from http://www.euclideanspace.com/maths/algebra/realNormedAlgebra/quaternions/slerp/. */ static slerp(qa: Quaternion, qb: Quaternion, qm: Quaternion, t: number): Quaternion; + + static slerpFlat(dst: number[], dstOffset: number, src0: number[], srcOffset: number, src1: number[], stcOffset1: number, t: number): Quaternion; } export class Ray { @@ -3493,21 +3648,26 @@ declare namespace THREE { clone(): Ray; copy(ray: Ray): Ray; at(t: number, optionalTarget?: Vector3): Vector3; + lookAt(v: Vector3): Vector3; recast(t: number): Ray; closestPointToPoint(point: Vector3, optionalTarget?: Vector3): Vector3; distanceToPoint(point: Vector3): number; distanceSqToPoint(point: Vector3): number; distanceSqToSegment(v0: Vector3, v1: Vector3, optionalPointOnRay?: Vector3, optionalPointOnSegment?: Vector3): number; - isIntersectionSphere(sphere: Sphere): boolean; intersectSphere(sphere: Sphere, optionalTarget?: Vector3): Vector3; - isIntersectionPlane(plane: Plane): boolean; + intersectsSphere(sphere: Sphere): boolean; distanceToPlane(plane: Plane): number; intersectPlane(plane: Plane, optionalTarget?: Vector3): Vector3; - isIntersectionBox(box: Box3): boolean; + intersectsPlane(plane: Plane): boolean; intersectBox(box: Box3, optionalTarget?: Vector3): Vector3; + intersectsBox(box: Box3): boolean; intersectTriangle(a: Vector3, b: Vector3, c: Vector3, backfaceCulling: boolean, optionalTarget?: Vector3): Vector3; applyMatrix4(matrix4: Matrix4): Ray; equals(ray: Ray): boolean; + + isIntersectionSphere(s: any): any; // deprecated, use intersectsSphere() + isIntersectionPlane(p: any): any; // deprecated, use intersectsPlane() + isIntersectionBox(b: any): any; // deprecated, use intersectsBox() } export class Sphere { @@ -3524,6 +3684,8 @@ declare namespace THREE { containsPoint(point: Vector3): boolean; distanceToPoint(point: Vector3): number; intersectsSphere(sphere: Sphere): boolean; + intersectsBox(box: Box3): boolean; + intersectsPlane(plane: Plane): boolean; clampPoint(point: Vector3, optionalTarget?: Vector3): Vector3; getBoundingBox(optionalTarget?: Box3): Box3; applyMatrix4(matrix: Matrix4): Sphere; @@ -3608,7 +3770,6 @@ declare namespace THREE { static containsPoint(point: Vector3, a: Vector3, b: Vector3, c: Vector3): boolean; } - /** * ( interface Vector<T> ) * @@ -3730,7 +3891,6 @@ declare namespace THREE { x: number; y: number; - width: number; height: number; @@ -3739,6 +3899,8 @@ declare namespace THREE { */ set(x: number, y: number): Vector2; + setScalar(scalar: number): Vector2; + /** * Sets X component of this vector. */ @@ -3838,6 +4000,11 @@ declare namespace THREE { */ normalize(): Vector2; + /** + * computes the angle in radians with respect to the positive x-axis + */ + angle(): number; + /** * Computes distance of this vector to v. */ @@ -3885,7 +4052,6 @@ declare namespace THREE { * ( class Vector3 implements Vector ) */ export class Vector3 implements Vector { - constructor(x?: number, y?: number, z?: number); x: number; @@ -3897,6 +4063,11 @@ declare namespace THREE { */ set(x: number, y: number, z: number): Vector3; + /** + * Sets all values of this vector. + */ + setScalar(scalar: number): Vector3; + /** * Sets x value of this vector. */ @@ -3934,7 +4105,6 @@ declare namespace THREE { * Sets this vector to a + b. */ addVectors(a: Vector3, b: Vector3): Vector3; - addScaledVector( v: Vector3, s: number ): Vector3; /** * Subtracts v from this vector. @@ -4043,8 +4213,11 @@ declare namespace THREE { */ distanceToSquared(v: Vector3): number; + getPositionFromMatrix(m: Matrix4): Vector3; // deprecated, use setFromMatrixPosition() setFromMatrixPosition(m: Matrix4): Vector3; + getScaleFromMatrix(m: Matrix4): Vector3; // deprecated, use setFromMatrixScale() setFromMatrixScale(m: Matrix4): Vector3; + getColumnFromMatrixColumn(index: number, matrix: Matrix4): Vector3; // deprecated, use setFromMatrixColumn() setFromMatrixColumn(index: number, matrix: Matrix4): Vector3; /** @@ -4066,6 +4239,7 @@ declare namespace THREE { */ export class Vector4 implements Vector { constructor(x?: number, y?: number, z?: number, w?: number); + x: number; y: number; z: number; @@ -4076,6 +4250,11 @@ declare namespace THREE { */ set(x: number, y: number, z: number, w: number): Vector4; + /** + * Sets all values of this vector. + */ + setScalar(scalar: number): Vector4; + /** * Sets X component of this vector. */ @@ -4152,7 +4331,7 @@ declare namespace THREE { * http://www.euclideanspace.com/maths/geometry/rotations/conversions/matrixToAngle/index.htm * @param m assumes the upper 3x3 of m is a pure rotation matrix (i.e, unscaled) */ - setAxisAngleFromRotationMatrix(m: Matrix4): Vector4; + setAxisAngleFromRotationMatrix(m: Matrix3): Vector4; min(v: Vector4): Vector4; max(v: Vector4): Vector4; @@ -4212,6 +4391,41 @@ declare namespace THREE { fromAttribute( attribute: BufferAttribute, index: number, offset?: number): Vector4; } + export abstract class Interpolant { + constructor(parameterPositions: any, samplesValues: any, sampleSize: number, resultBuffer?: any); + + parameterPositions: any; + samplesValues: any; + valueSize: number; + resultBuffer: any; + + evaluate(time: number): any; + } + + export class CubicInterpolant extends Interpolant { + constructor(parameterPositions: any, samplesValues: any, sampleSize: number, resultBuffer?: any); + + interpolate_(i1: number, t0: number, t: number, t1: number): any; + } + + export class DiscreteInterpolant extends Interpolant { + constructor(parameterPositions: any, samplesValues: any, sampleSize: number, resultBuffer?: any); + + interpolate_(i1: number, t0: number, t: number, t1: number): any; + } + + export class LinearInterpolant extends Interpolant { + constructor(parameterPositions: any, samplesValues: any, sampleSize: number, resultBuffer?: any); + + interpolate_(i1: number, t0: number, t: number, t1: number): any; + } + + export class QuaternionLinearInterpolant extends Interpolant { + constructor(parameterPositions: any, samplesValues: any, sampleSize: number, resultBuffer?: any); + + interpolate_(i1: number, t0: number, t: number, t1: number): any; + } + // Objects ////////////////////////////////////////////////////////////////////////////////// export class Bone extends Object3D { @@ -4231,6 +4445,7 @@ declare namespace THREE { constructor(); levels: any[]; + objects: any[]; // deprecated, use .levels addLevel(object: Object3D, distance?: number): void; getObjectForDistance(distance: number): Object3D; @@ -4263,11 +4478,9 @@ declare namespace THREE { positionScreen: Vector3; customUpdateCallback: (object: LensFlare) => void; + add(object: Object3D): void; add(texture: Texture, size?: number, distance?: number, blending?: Blending, color?: Color): void; - add(obj: Object3D): void; - updateLensFlares(): void; - clone(): LensFlare; copy(source: LensFlare): LensFlare; } @@ -4298,9 +4511,9 @@ declare namespace THREE { copy(source: LineSegments): LineSegments; } - enum LineMode{} - var LineStrip: LineMode; - var LinePieces: LineMode; + enum LineMode {} + var LineStrip: LineMode; // deprecated + var LinePieces: LineMode; // deprecated export class Mesh extends Object3D { constructor(geometry?: Geometry, material?: Material); @@ -4308,7 +4521,9 @@ declare namespace THREE { geometry: Geometry|BufferGeometry; material: Material; + drawMode: TrianglesDrawModes; + setDrawMode(drawMode: TrianglesDrawModes): void; updateMorphTargets(): void; getMorphTargetIndexByName(name: string): number; raycast(raycaster: Raycaster, intersects: any): void; @@ -4338,7 +4553,7 @@ declare namespace THREE { geometry: Geometry; /** - * An instance of Material, defining the object's appearance. Default is a ParticleBasicMaterial with randomised colour. + * An instance of Material, defining the object's appearance. Default is a PointsMaterial with randomised colour. */ material: Material; @@ -4347,6 +4562,9 @@ declare namespace THREE { copy(source: Points): Points; } + export class PointCloud extends Points {} // deprecated, use Points + export class ParticleSystem extends Points {} // deprecated, use Points + export class Skeleton { constructor(bones: Bone[], boneInverses?: Matrix4[], useVertexTexture?: boolean); @@ -4363,13 +4581,12 @@ declare namespace THREE { pose(): void; update(): void; clone(): Skeleton; - } export class SkinnedMesh extends Mesh { constructor(geometry?: Geometry|BufferGeometry, material?: MeshBasicMaterial, useVertexTexture?: boolean); constructor(geometry?: Geometry|BufferGeometry, material?: MeshDepthMaterial, useVertexTexture?: boolean); - constructor(geometry?: Geometry|BufferGeometry, material?: MeshFaceMaterial, useVertexTexture?: boolean); + constructor(geometry?: Geometry|BufferGeometry, material?: MultiMaterial, useVertexTexture?: boolean); constructor(geometry?: Geometry|BufferGeometry, material?: MeshLambertMaterial, useVertexTexture?: boolean); constructor(geometry?: Geometry|BufferGeometry, material?: MeshNormalMaterial, useVertexTexture?: boolean); constructor(geometry?: Geometry|BufferGeometry, material?: MeshPhongMaterial, useVertexTexture?: boolean); @@ -4378,15 +4595,14 @@ declare namespace THREE { bindMode: string; bindMatrix: Matrix4; bindMatrixInverse: Matrix4; + skeleton: Skeleton; bind( skeleton: Skeleton, bindMatrix?: Matrix4 ): void; pose(): void; normalizeSkinWeights(): void; updateMatrixWorld(force?: boolean): void; clone(): SkinnedMesh; - copy(source?: SkinnedMesh): SkinnedMesh; - - skeleton: Skeleton; + copy(source: SkinnedMesh): SkinnedMesh; } export class Sprite extends Object3D { @@ -4397,9 +4613,11 @@ declare namespace THREE { raycast(raycaster: Raycaster, intersects: any): void; clone(): Sprite; - copy(source?: Sprite): Sprite; + copy(source: Sprite): Sprite; } + export class Particle extends Sprite {} // deprecated, use Sprite + // Renderers ////////////////////////////////////////////////////////////////////////////////// @@ -4514,7 +4732,7 @@ declare namespace THREE { extensions: WebGLExtensions; - gammaFactor: number; + gammaFactor: number; // deprecated /** * Default is false. @@ -4526,22 +4744,6 @@ declare namespace THREE { */ gammaOutput: boolean; - /** - * Default is false. - */ - shadowMapEnabled: boolean; - - /** - * Defines shadow map type (unfiltered, percentage close filtering, percentage close filtering with bilinear filtering in shader) - * Options are THREE.BasicShadowMap, THREE.PCFShadowMap, THREE.PCFSoftShadowMap. Default is THREE.PCFShadowMap. - */ - shadowMapType: ShadowMapType; - - /** - * Default is true - */ - shadowMapCullFace: CullFace; - /** * Default is false. */ @@ -4567,7 +4769,6 @@ declare namespace THREE { */ info: { memory: { - programs: number; geometries: number; textures: number; }; @@ -4577,32 +4778,32 @@ declare namespace THREE { faces: number; points: number; }; + programs: number; }; - shadowMap: WebGLShadowMapInstance; + shadowMap: WebGLShadowMap; + shadowMapType: ShadowMapType; // deprecated, use shadowMap.type + shadowMapEnabled: boolean; // deprecated, use shadowMap.enabled + shadowMapCullFace: CullFace; // deprecated, use shadowMap.cullFace + + pixelRation: number; + + capabilities: WebGLCapabilities; + properties: WebGLProperties; + state: WebGLState; /** * Return the WebGL context. */ getContext(): WebGLRenderingContext; - + getContextAttributes(): any; forceContextLoss(): void; - capabilities: WebGLCapabilities; - - /** Deprecated, use capabilities instead */ - supportsVertexTextures(): boolean; - supportsFloatTextures(): boolean; - supportsStandardDerivatives(): boolean; - supportsCompressedTextureS3TC(): boolean; - supportsCompressedTexturePVRTC(): boolean; - supportsBlendMinMax(): boolean; - getPrecision(): string; - getMaxAnisotropy(): number; + getPrecision(): string; getPixelRatio(): number; setPixelRatio(value: number): void; - + getSize(): { width: number; height: number; }; /** @@ -4623,37 +4824,26 @@ declare namespace THREE { /** * Enable the scissor test. When this is enabled, only the pixels within the defined scissor area will be affected by further renderer actions. */ - enableScissorTest(enable: boolean): void; - - /** - * Sets the clear color, using color for the color and alpha for the opacity. - */ - setClearColor(color: Color, alpha?: number): void; - setClearColor(color: string, alpha?: number): void; - setClearColor(color: number, alpha?: number): void; - - setClearAlpha(alpha: number): void; - - /** - * Sets the clear color, using hex for the color and alpha for the opacity. - * - * @example - * // Creates a renderer with black background - * var renderer = new THREE.WebGLRenderer(); - * renderer.setSize(200, 100); - * renderer.setClearColorHex(0x000000, 1); - */ - setClearColorHex(hex: number, alpha: number): void; + setScissorTest(enable: boolean): void; /** * Returns a THREE.Color instance with the current clear color. */ getClearColor(): Color; + /** + * Sets the clear color, using color for the color and alpha for the opacity. + */ + setClearColor(color: Color, alpha?: number): void; + setClearColor(color: string, alpha?: number): void; + setClearColor(color: number, alpha?: number): void; + /** * Returns a float with the current clear alpha. Ranges from 0 to 1. */ getClearAlpha(): number; + + setClearAlpha(alpha: number): void; /** * Tells the renderer to clear its color, depth or stencil drawing buffer(s). @@ -4674,13 +4864,9 @@ declare namespace THREE { * @param scene an instance of Scene * @param camera — an instance of Camera */ - updateShadowMap(scene: Scene, camera: Camera): void; - renderBufferImmediate(object: Object3D, program: Object, material: Material): void; - renderBufferDirect(camera: Camera, lights: Light[], fog: Fog, material: Material, geometryGroup: any, object: Object3D): void; - - renderBuffer(camera: Camera, lights: Light[], fog: Fog, material: Material, geometryGroup: any, object: Object3D): void; + renderBufferDirect(camera: Camera, fog: Fog, material: Material, geometryGroup: any, object: Object3D): void; /** * Render a scene using a camera. @@ -4688,7 +4874,6 @@ declare namespace THREE { * If forceClear is true, the canvas will be cleared before rendering, even if the renderer's autoClear property is false. */ render(scene: Scene, camera: Camera, renderTarget?: RenderTarget, forceClear?: boolean): void; - renderImmediateObject(camera: Camera, lights: Light[], fog: Fog, material: Material, object: Object3D): void; /** * Used for setting the gl frontFace, cullFace states in the GPU, thus enabling/disabling face culling when rendering. @@ -4697,14 +4882,19 @@ declare namespace THREE { * @param frontFace "ccw" or "cw */ setFaceCulling(cullFace?: CullFace, frontFace?: FrontFaceDirection): void; - setMaterialFaces(material: Material): void; - setDepthTest(depthTest: boolean): void; - setDepthWrite(depthWrite: boolean): void; - setBlending(blending: Blending, blendEquation: BlendingEquation, blendSrc: BlendingSrcFactor, blendDst: BlendingDstFactor): void; - uploadTexture(texture: Texture): void; setTexture(texture: Texture, slot: number): void; setRenderTarget(renderTarget: RenderTarget): void; readRenderTargetPixels( renderTarget: RenderTarget, x: number, y: number, width: number, height: number, buffer: any ): void; + + supportsFloatTextures(): any; // deprecated + supportsHalfFloatTextures(): any; // deprecated + supportsStandardDerivatives(): any; // deprecated + supportsCompressedTextureS3TC(): any; // deprecated + supportsCompressedTexturePVRTC(): any; // deprecated + supportsBlendMinMax(): any; // deprecated + supportsVertexTextures(): any; // deprecated + supportsInstancedArrays(): any; // deprecated + enableScissorTest(boolean: any): any; // deprecated } export interface RenderTarget { @@ -4715,9 +4905,9 @@ declare namespace THREE { wrapT?: Wrapping; magFilter?: TextureFilter; minFilter?: TextureFilter; - anisotropy?: number; // 1; format?: number; // RGBAFormat; type?: TextureDataType; // UnsignedByteType; + anisotropy?: number; // 1; depthBuffer?: boolean; // true; stencilBuffer?: boolean; // true; } @@ -4728,26 +4918,29 @@ declare namespace THREE { uuid: string; width: number; height: number; - wrapS: Wrapping; - wrapT: Wrapping; - magFilter: TextureFilter; - minFilter: TextureFilter; - anisotropy: number; - offset: Vector2; - repeat: Vector2; - format: number; - type: number; + scissor: Vector4; + scissorTest: boolean; + viewpport: Vector4; + texture: Texture; depthBuffer: boolean; stencilBuffer: boolean; - generateMipmaps: boolean; shareDepthFrom: any; + wrapS: any; // deprecated, use texture.wrapS + wrapT: any; // deprecated, use texture.wrapT + magFilter: any; // deprecated, use texture.magFilter + minFilter: any; // deprecated, use texture.minFilter + anisotropy: any; // deprecated, use texture.anisotropy + offset: any; // deprecated, use texture.offset + repeat: any; // deprecated, use texture.repeat + format: any; // deprecated, use texture.format + type: any; // deprecated, use texture.type + generateMipmaps: any; // deprecated, use texture.generateMipmaps setSize(width: number, height: number): void; clone(): WebGLRenderTarget; copy(source: WebGLRenderTarget): WebGLRenderTarget; dispose(): void; - // EventDispatcher mixins addEventListener(type: string, listener: (event: any) => void ): void; hasEventListener(type: string, listener: (event: any) => void): void; @@ -4762,26 +4955,27 @@ declare namespace THREE { } // Renderers / Shaders ///////////////////////////////////////////////////////////////////// - export interface ShaderChunk { + export let ShaderChunk: { [name: string]: string; - common: string; - alphamap_fragment: string; alphamap_pars_fragment: string; alphatest_fragment: string; + ambient_pars: string; aomap_fragment: string; aomap_pars_fragment: string; begin_vertex: string; beginnormal_vertex: string; + bsdfs: string; bumpmap_pars_fragment: string; color_fragment: string; color_pars_fragment: string; color_pars_vertex: string; color_vertex: string; + common: string; defaultnormal_vertex: string; - displacementmap_pars_vertex: string; displacementmap_vertex: string; + displacementmap_pars_vertex: string; emissivemap_fragment: string; emissivemap_pars_fragment: string; envmap_fragment: string; @@ -4790,15 +4984,17 @@ declare namespace THREE { envmap_vertex: string; fog_fragment: string; fog_pars_fragment: string; - hemilight_fragment: string; lightmap_fragment: string; lightmap_pars_fragment: string; - lights_lambert_pars_vertex: string; lights_lambert_vertex: string; + lights_pars: string; lights_phong_fragment: string; lights_phong_pars_fragment: string; lights_phong_pars_vertex: string; lights_phong_vertex: string; + lights_standard_fragment: string; + lights_standard_pars_fragment: string; + lights_template: string; linear_to_gamma_fragment: string; logdepthbuf_fragment: string; logdepthbuf_pars_fragment: string; @@ -4808,16 +5004,20 @@ declare namespace THREE { map_pars_fragment: string; map_particle_fragment: string; map_particle_pars_fragment: string; + metalnessmap_fragment: string; + metalnessmap_pars_fragment: string; morphnormal_vertex: string; morphtarget_pars_vertex: string; morphtarget_vertex: string; - normal_phong_fragment: string; + normal_fragment: string; normalmap_pars_fragment: string; project_vertex: string; - shadowmap_fragment: string; + roughtnessmap_fragment: string; + roughtnessmap_pars_fragment: string; shadowmap_pars_fragment: string; shadowmap_pars_vertex: string; shadowmap_vertex: string; + shadowmask_pars_fragment: string; skinbase_vertex: string; skinning_pars_vertex: string; skinning_vertex: string; @@ -4833,62 +5033,134 @@ declare namespace THREE { worldpos_vertex: string; } - export var ShaderChunk: ShaderChunk; - export interface Shader { uniforms: any; vertexShader: string; fragmentShader: string; } - export var ShaderLib: { + export let ShaderLib: { [name: string]: Shader; basic: Shader; lambert: Shader; phong: Shader; - particle_basic: Shader; + standard: Shader; + points: Shader; dashed: Shader; depth: Shader; normal: Shader; - normalmap: Shader; cube: Shader; equirect: Shader; depthRGBA: Shader; + distanceRGBA: Shader; }; - export var UniformsLib: { - common: any; - aomap: any; - lightmap: any; - emissivemap: any; - bumpmap: any; - normalmap: any; - displacementmap: any; - fog: any; - lights: any; - points: any; - shadowmap: any; - }; - - export var UniformsUtils: { - merge(uniforms: any[]): any; - clone(uniforms_src: any): any; - }; - - // Renderers / WebGL ///////////////////////////////////////////////////////////////////// - export class WebGLBufferRenderer{ - constructor(_gl: any, extensions: any, _infoRender: any); // WebGLRenderingContext - - setMode( value: any ): void; - render( start: any, count: any ): void; - renderInstances( geometry: any ): void; + export interface IUniform { + type: string; + value: any; } - export class WebGLCapabilities{ - constructor(gl: any, extensions: any, parameters: any); // WebGLRenderingContext + export let UniformsLib: { + common: { + diffuse: IUniform; + opacity: IUniform; + map: IUniform; + offsetRepeat: IUniform; + specularMap: IUniform; + alphaMap: IUniform; + envMap: IUniform; + flipEnvMap: IUniform; + reflectivity: IUniform; + refractionRation: IUniform; + }; + aomap: { + aoMap: IUniform; + aoMapIntensity: IUniform; + }; + lightmap: { + lightMap: IUniform; + lightMapIntensity: IUniform; + }; + emissivemap: { emissiveMap: IUniform }; + bumpmap: { + bumpMap: IUniform; + bumpScale: IUniform; + }; + normalmap: { + normalMap: IUniform; + normalScale: IUniform; + }; + displacementmap: { + displacementMap: IUniform; + displacementScale: IUniform; + displacementBias: IUniform; + }; + roughtnessmap: { roughtnessMap: IUniform }; + metalnessmap: { metalnessMap: IUniform }; + fog: { + fogDensity: IUniform; + fogNear: IUniform; + fogFar: IUniform; + fogColor: IUniform; + }; + ambient: { ambientLightColor: IUniform }; + lights: { + directionalLights: any; + directionalShadowMap: IUniform; + directionalShadowMatrix: IUniform; + spotLights: any; + spotShadowMap: IUniform; + spotShadowMatrix: IUniform; + pointLights: any; + pointShadowMap: IUniform; + pointShadowMatrix: IUniform; + hemisphereLigtts: any; + }; + points: { + diffuse: IUniform; + opacity: IUniform; + size: IUniform; + scale: IUniform; + map: IUniform; + offsetRepeat: IUniform; + }; + }; + + export namespace UniformsUtils { + export function merge(uniforms: any[]): any; + export function clone(uniforms_src: any): any; + } + + export class Uniform { + constructor(type: string, value: string); + + type: string; + value: string; + dynamic: boolean; + onUpdateCallback: Function; + + onUpdate(callback: Function): Uniform; + } + + // Renderers / WebGL ///////////////////////////////////////////////////////////////////// + export class WebGLBufferRenderer { + constructor(_gl: any, extensions: any, _infoRender: any); // WebGLRenderingContext + + setMode(value: any): void; + render(start: any, count: any): void; + renderInstances(geometry: any): void; + } + + export interface WebGLCapabilitiesParameters { + precision?: any; + logarithmicDepthBuffer?: any; + } + + export class WebGLCapabilities { + constructor(gl: any, extensions: any, parameters: WebGLCapabilitiesParameters); // WebGLRenderingContext - getMaxPrecision: any; precision: any; + logarithmicDepthBuffer: any; maxTextures: any; maxVertexTextures: any; maxTextureSize: any; @@ -4900,154 +5172,168 @@ declare namespace THREE { vertexTextures: any; floatFragmentTextures: any; floatVertexTextures: any; + + getMaxPrecision(precision: any): any; } - export class WebGLExtensions{ + export class WebGLExtensions { constructor(gl: any); // WebGLRenderingContext get(name: string): any; } - interface WebGLGeometriesInstance { - get( object: any ): any; - } - interface WebGLGeometriesStatic{ - new (gl: any, properties: any, info: any): WebGLGeometriesInstance; - } - export var WebGLGeometries: WebGLGeometriesStatic; + export class WebGLGeometries { + constructor(_gl: any, extensions: any, _infoRender: any); - - interface WebGLIndexedBufferRendererInstance { - setMode( value: any ): void; - setIndex( index: any ): void; - render( start: any, count: any ): void; - renderInstances( geometry: any ): void; + get(object: any): any; } - interface WebGLIndexedBufferRendererStatic{ - new (gl: any, properties: any, info: any): WebGLIndexedBufferRendererInstance; + + export class WebGLLights { + constructor(gl: any, properties: any, info: any); + + get(light: any): any; } - export var WebGLIndexedBufferRenderer: WebGLIndexedBufferRendererStatic; + export class WebGLIndexedBufferRenderer { + constructor(gl: any, properties: any, info: any); - interface WebGLObjectsInstance { - getAttributeBuffer( attribute: any ): any; + setMode(value: any): void; + setIndex(index: any): void; + render(start: any, count: number): void; + renderInstances(geometry: any, start: any, count: number): void; + } + + export class WebGLObjects { + constructor(gl: any, properties: any, info: any); + + getAttributeBuffer(attribute: any): any; getWireframeAttribute(geometry: any): any; update(object: any): void; } - interface WebGLObjectsStatic{ - new (gl: any, properties: any, info: any): WebGLObjectsInstance; - } - export var WebGLObjects: WebGLObjectsStatic; - export class WebGLProgram{ + export class WebGLProgram { constructor(renderer: WebGLRenderer, code: string, material: ShaderMaterial, parameters: WebGLRendererParameters); - - getUniforms(): any; - getAttributes(): any; - - /** Deprecated, use getUniforms */ - uniforms: any; - /** Deprecated, use getAttributes */ - attributes: any; - + id: number; code: string; usedTimes: number; program: any; vertexShader: WebGLShader; fragmentShader: WebGLShader; + uniforms: any; // deprecated, use getUniforms() + attributes: any; // deprecated, use getAttributes() + + getUniforms(): any; + getAttributes(): any; + destroy(): void; } - interface WebGLProgramsInstance { - getParameters( material: any, lights: any, fog: any, object: any ): any[]; - getProgramCode( material: any, parameters: any ): any; - acquireProgram( material: any, parameters: any, code: any ): any; - releaseProgram( program: any ): void; + export class WebGLPrograms { + constructor(renderer: WebGLRenderer, capabilities: any); + + programs: any[]; + + getParameters(material: ShaderMaterial, lights: any, fog: any, object: any): any[]; + getProgramCode(material: ShaderMaterial, parameters: any): string; + acquireProgram(material: ShaderMaterial, parameters: any, code: string): WebGLProgram; + releaseProgram(program: WebGLProgram): void; } - interface WebGLProgramsStatic{ - new (renderer: WebGLRenderer, capabilities: any): WebGLProgramsInstance; - } - export var WebGLPrograms: WebGLProgramsStatic; + + export class WebGLProperties { + constructor(); - interface WebGLPropertiesInstance { get(object: any): any; delete(object: any): void; clear(): void; } - interface WebGLPropertiesStatic{ - new (): WebGLPropertiesInstance; - } - export var WebGLProperties: WebGLPropertiesStatic; - export class WebGLShader{ + export class WebGLShader { constructor(gl: any, type: string, string: string); } - interface WebGLShadowMapInstance{ + export class WebGLShadowMap { + constructor(_renderer: Renderer, _lights: any[], _objects: any[]); + enabled: boolean; autoUpdate: boolean; needsUpdate: boolean; type: ShadowMapType; cullFace: CullFace; - render( scene: Scene ): void; + render(scene: Scene, camera: Camera): void; } - interface WebGLShadowMapStatic{ - new ( _renderer: Renderer, _lights: any[], _objects: any[] ): WebGLStateInstance; - } - export var WebGLShadowMap: WebGLShadowMapStatic; + + export class WebGLState { + constructor(gl: any, extensions: any, paramThreeToGL: Function); - interface WebGLStateInstance{ init(): void; initAttributes(): void; enableAttribute(attribute: string): void; - enableAttributeAndDivisor( attribute: string, meshPerAttribute: any, extension: any ): void; + enableAttributeAndDivisor(attribute: string, meshPerAttribute: any, extension: any): void; disableUnusedAttributes(): void; - enable( id: string ): void; - disable( id: string ): void; - getCompressedTextureFormats(): any; - setBlending( blending: number, blendEquation: number, blendSrc: number, blendDst: number, blendEquationAlpha: number, blendSrcAlpha: number, blendDstAlpha: number ): void; - setDepthFunc( func: Function): void; - setDepthTest( depthTest: number ): void; - setDepthWrite( depthWrite: number ): void; - setColorWrite( colorWrite: number ): void; - setFlipSided( flipSided: number ): void; - setLineWidth( width: number ): void; + enable(id: string): void; + disable(id: string): void; + getCompressedTextureFormats(): any[]; + setBlending(blending: number, blendEquation: number, blendSrc: number, blendDst: number, blendEquationAlpha: number, blendSrcAlpha: number, blendDstAlpha: number): void; + setDepthFunc(func: Function): void; + setDepthTest(depthTest: number): void; + setDepthWrite(depthWrite: number): void; + setColorWrite(colorWrite: number): void; + setStencilFunc(stencilFunc: Function, stencilRef: any, stencilMask: any): void; + setStencilOp(stencilFail: any, stencilZFail: any, stencilZPass: any): void; + setStencilTest(stencilTest: boolean): void; + setStencilWrite(stencilWrite: any): void; + setFlipSided(flipSided: number): void; + setLineWidth(width: number): void; setPolygonOffset(polygonoffset: number, factor: number, units: number): void; - setScissorTest( scissorTest: boolean ): void; - activeTexture( webglSlot: any ): void; - bindTexture( webglType: any, webglTexture: any ): void; + setScissorTest(scissorTest: boolean): void; + getScissorTest(): boolean; + activeTexture(webglSlot: any): void; + bindTexture(webglType: any, webglTexture: any): void; compressedTexImage2D(): void; texImage2D(): void; + clearColor(r: number, g: number, b: number, a: number): void; + clearDepth(depth: number): void; + clearStencil(stencil: any): void; + scissor(scissor: any): void; + viewport(viewport: any): void; reset(): void; } - interface WebGLStateStatic{ - new ( gl: any, extensions: any, paramThreeToGL: Function ): WebGLStateInstance; - } - export var WebGLState: WebGLStateStatic; - // Renderers / WebGL / Plugins ///////////////////////////////////////////////////////////////////// - export interface RendererPlugin { - init(renderer: WebGLRenderer): void; - render(scene: Scene, camera: Camera, currentWidth: number, currentHeight: number): void; - } - - export class LensFlarePlugin implements RendererPlugin { - constructor(); - - init(renderer: Renderer): void; + export class LensFlarePlugin { + constructor(renderer: WebGLRenderer, flares: any[]); + render(scene: Scene, camera: Camera, viewportWidth: number, viewportHeight: number): void; } - export class SpritePlugin implements RendererPlugin { - constructor(); + export class SpritePlugin { + constructor(renderer: WebGLRenderer, sprites: any[]); - init(renderer: Renderer): void; render(scene: Scene, camera: Camera, viewportWidth: number, viewportHeight: number): void; } // Scenes ///////////////////////////////////////////////////////////////////// + + /** + * Scenes allow you to set up what and where is to be rendered by three.js. This is where you place objects, lights and cameras. + */ + export class Scene extends Object3D { + constructor(); + + /** + * A fog instance defining the type of fog that affects everything rendered in the scene. Default is null. + */ + fog: IFog; + + /** + * If not null, it will force everything in the scene to be rendered with that material. Default is null. + */ + overrideMaterial: Material; + autoUpdate: boolean; + + copy(source: Scene, recursive?: boolean): Scene; + } export interface IFog { name:string; @@ -5055,7 +5341,6 @@ declare namespace THREE { clone():IFog; } - /** * This class contains the parameters that define linear fog, i.e., that grows linearly denser with the distance. */ @@ -5101,103 +5386,8 @@ declare namespace THREE { clone(): FogExp2; } - /** - * Scenes allow you to set up what and where is to be rendered by three.js. This is where you place objects, lights and cameras. - */ - export class Scene extends Object3D { - constructor(); - - /** - * A fog instance defining the type of fog that affects everything rendered in the scene. Default is null. - */ - fog: IFog; - - /** - * If not null, it will force everything in the scene to be rendered with that material. Default is null. - */ - overrideMaterial: Material; - autoUpdate: boolean; - - copy(source: Scene): Scene; - } - // Textures ///////////////////////////////////////////////////////////////////// - export class CanvasTexture extends Texture { - constructor( - canvas: HTMLImageElement | HTMLCanvasElement | HTMLVideoElement, - mapping?: Mapping, - wrapS?: Wrapping, - wrapT?: Wrapping, - magFilter?: TextureFilter, - minFilter?: TextureFilter, - format?: PixelFormat, - type?: TextureDataType, - anisotropy?: number - ); - - needsUpdate: boolean; - } - - export class CompressedTexture extends Texture { - constructor( - mipmaps: ImageData[], - width: number, - height: number, - format?: PixelFormat, - type?: TextureDataType, - mapping?: Mapping, - wrapS?: Wrapping, - wrapT?: Wrapping, - magFilter?: TextureFilter, - minFilter?: TextureFilter, - anisotropy?: number - ); - - image: { width: number; height: number; }; - mipmaps: ImageData[]; - flipY: boolean; - generateMipmaps: boolean; - } - - export class CubeTexture extends Texture { - constructor( - images: any[], // HTMLImageElement or HTMLCanvasElement - mapping?: Mapping, - wrapS?: Wrapping, - wrapT?: Wrapping, - magFilter?: TextureFilter, - minFilter?: TextureFilter, - format?: PixelFormat, - type?: TextureDataType, - anisotropy?: number - ); - - images: any[]; - - copy(source: CubeTexture): CubeTexture; - } - - export class DataTexture extends Texture { - constructor( - data: ImageData, - width: number, - height: number, - format: PixelFormat, - type: TextureDataType, - mapping: Mapping, - wrapS: Wrapping, - wrapT: Wrapping, - magFilter: TextureFilter, - minFilter: TextureFilter, - anisotropy?: number - ); - - image: { data: ImageData; width: number; height: number; }; - magFilter: TextureFilter; - minFilter: TextureFilter; - flipY: boolean; - generateMipmaps: boolean; - } + export let TextureIdCount: number; export class Texture { constructor( @@ -5242,7 +5432,7 @@ declare namespace THREE { copy(source: Texture): Texture; toJSON(meta: any): any; dispose(): void; - transformUv( uv: Vector ): void; + transformUv(uv: Vector): void; // EventDispatcher mixins addEventListener(type: string, listener: (event: any) => void ): void; @@ -5251,7 +5441,84 @@ declare namespace THREE { dispatchEvent(event: { type: string; target: any; }): void; } - class VideoTexture extends Texture { + export class CanvasTexture extends Texture { + constructor( + canvas: HTMLImageElement | HTMLCanvasElement | HTMLVideoElement, + mapping?: Mapping, + wrapS?: Wrapping, + wrapT?: Wrapping, + magFilter?: TextureFilter, + minFilter?: TextureFilter, + format?: PixelFormat, + type?: TextureDataType, + anisotropy?: number + ); + + clone(): CanvasTexture; + copy(source: CanvasTexture): CanvasTexture; + } + + export class CubeTexture extends Texture { + constructor( + images: any[], // HTMLImageElement or HTMLCanvasElement + mapping?: Mapping, + wrapS?: Wrapping, + wrapT?: Wrapping, + magFilter?: TextureFilter, + minFilter?: TextureFilter, + format?: PixelFormat, + type?: TextureDataType, + anisotropy?: number + ); + + images: any[]; + + copy(source: CubeTexture): CubeTexture; + } + + export class CompressedTexture extends Texture { + constructor( + mipmaps: ImageData[], + width: number, + height: number, + format?: PixelFormat, + type?: TextureDataType, + mapping?: Mapping, + wrapS?: Wrapping, + wrapT?: Wrapping, + magFilter?: TextureFilter, + minFilter?: TextureFilter, + anisotropy?: number + ); + + image: { width: number; height: number; }; + + clone(): CompressedTexture; + copy(source: CompressedTexture): CompressedTexture; + } + + export class DataTexture extends Texture { + constructor( + data: ImageData, + width: number, + height: number, + format: PixelFormat, + type: TextureDataType, + mapping: Mapping, + wrapS: Wrapping, + wrapT: Wrapping, + magFilter: TextureFilter, + minFilter: TextureFilter, + anisotropy?: number + ); + + image: { data: ImageData; width: number; height: number; }; + + clone(): DataTexture; + copy(source: DataTexture): DataTexture; + } + + export class VideoTexture extends Texture { constructor( video: HTMLVideoElement, mapping?: Mapping, @@ -5264,64 +5531,61 @@ declare namespace THREE { anisotropy?: number ); - generateMipmaps: boolean; + clone(): VideoTexture; + copy(source: VideoTexture): VideoTexture; } // Extras ///////////////////////////////////////////////////////////////////// - export var CurveUtils: { - tangentQuadraticBezier(t: number, p0: number, p1: number, p2: number): number; - tangentCubicBezier(t: number, p0: number, p1: number, p2: number, p3: number): number; - tangentSpline(t: number, p0: number, p1: number, p2: number, p3: number): number; - interpolate(p0: number, p1: number, p2: number, p3: number, t: number): number; + export namespace CurveUtils { + export function tangentQuadraticBezier(t: number, p0: number, p1: number, p2: number): number; + export function tangentCubicBezier(t: number, p0: number, p1: number, p2: number, p3: number): number; + export function tangentSpline(t: number, p0: number, p1: number, p2: number, p3: number): number; + export function interpolate(p0: number, p1: number, p2: number, p3: number, t: number): number; } - // deprecated. - export var ImageUtils: { - crossOrigin: string; + export namespace ImageUtils { // deprecated + export let crossOrigin: string; - // deprecated. - loadTexture(url: string, mapping?: Mapping, onLoad?: (texture: Texture) => void, onError?: (message: string) => void): Texture; + export function loadTexture(url: string, mapping?: Mapping, onLoad?: (texture: Texture) => void, onError?: (message: string) => void): Texture; + export function loadTextureCube(array: string[], mapping?: Mapping, onLoad?: (texture: Texture) => void , onError?: (message: string) => void ): Texture; + } - // deprecated. - loadTextureCube(array: string[], mapping?: Mapping, onLoad?: (texture: Texture) => void , onError?: (message: string) => void ): Texture; + export namespace SceneUtils { + export function createMultiMaterialObject(geometry: Geometry, materials: Material[]): Object3D; + export function detach(child: Object3D, parent: Object3D, scene: Scene): void; + export function attach(child: Object3D, scene: Scene, parent: Object3D): void; + } - // deprecated. - getNormalMap(image: HTMLImageElement, depth?: number): HTMLCanvasElement; - - // deprecated. - generateDataTexture(width: number, height: number, color: Color): DataTexture; - }; - - export var SceneUtils: { - createMultiMaterialObject(geometry: Geometry, materials: Material[]): Object3D; - detach(child: Object3D, parent: Object3D, scene: Scene): void; - attach(child: Object3D, scene: Scene, parent: Object3D): void; - }; - - export var ShapeUtils: { - area( contour: number[] ): number; - triangulate( contour: number[], indices: boolean ): number[]; - triangulateShape( contour: number[], holes: any[] ): number[]; - isClockWise( pts: number[] ): boolean; - b2( t: number, p0: number, p1: number, p2: number ): number; - b3( t: number, p0: number, p1: number, p2: number, p3: number ): number; - }; + export namespace ShapeUtils { + export function area(contour: number[]): number; + export function triangulate(contour: number[], indices: boolean): number[]; + export function triangulateShape(contour: number[], holes: any[]): number[]; + export function isClockWise(pts: number[]): boolean; + export function b2(t: number, p0: number, p1: number, p2: number): number; + export function b3(t: number, p0: number, p1: number, p2: number, p3: number): number; + } // Extras / Audio ///////////////////////////////////////////////////////////////////// export class Audio extends Object3D { constructor(listener: AudioListener); + type: string; context: AudioContext; source: AudioBufferSourceNode; gain: GainNode; - panner: PannerNode; autoplay: boolean; startTime: number; playbackRate: number; + hasPlaybackControl: boolean; isPlaying: boolean; + sourceType: string; + filter: any; + getOutput(): GainNode; load(file: string): Audio; + setNodeSource(audioNode: AudioBufferSourceNode): Audio; + setBuffer(audioBuffer: AudioBuffer): Audio; play(): void; pause(): void; stop(): void; @@ -5331,16 +5595,46 @@ declare namespace THREE { getFilter(): any; setPlaybackRate(value: number): void; getPlaybackRate(): number; - + onEnded(): void; setLoop(value: boolean): void; getLoop(): boolean; + setVolume(value: number): void; + getVolume(): number; + } + + export class AudioAnalyser { + constructor(audio: any, fftSize: number); + + analyser: any; + data: Uint8Array; + + getData(): Uint8Array; + } + + export class AudioBuffer { + constructor(context: any); + + context: any; + ready: boolean; + readyCallbacks: Function[]; + + load(file: string): AudioBuffer; + onReady(callback: Function): void; + } + + export class PositionalAudio extends Audio { + constructor(listener: AudioListener); + + panner: PannerNode; + setRefDistance(value: number): void; getRefDistance(): number; setRolloffFactor(value: number): void; getRolloffFactor(): number; - setVolume(value: number): void; - getVolume(): number; - updateMatrixWorld(force?: boolean): void; + setDistanceModel(value: number): void; + getDistanceModel(): number; + setMaxDistance(value: number): void; + getMaxDistance(): number; } export class AudioListener extends Object3D { @@ -5348,8 +5642,14 @@ declare namespace THREE { type: string; context: AudioContext; + gain: GainNode; - updateMatrixWorld(force?: boolean): void; + getInput(): GainNode; + removeFilter(): void; + setFilter(value: any): void; + getFilter(): any; + setMasterVolume(value: number): void; + getMasterVolume(): number; } // Extras / Core ///////////////////////////////////////////////////////////////////// @@ -5418,22 +5718,6 @@ declare namespace THREE { static create(constructorFunc: Function, getPointFunc: Function): Function; } - export var CurveUtils: { - tangentQuadraticBezier(t: number, p0: number, p1: number, p2: number): number; - tangentCubicBezier(t: number, p0: number, p1: number, p2: number, p3: number): number; - tangentSpline(t: number, p0: number, p1: number, p2: number, p3: number): number; - interpolate(p0: number, p1: number, p2: number, p3: number, t: number): number; - }; - - export interface BoundingBox { - minX: number; - minY: number; - minZ?: number; - maxX: number; - maxY: number; - maxZ?: number; - } - export class CurvePath extends Curve { constructor(); @@ -5484,9 +5768,9 @@ declare namespace THREE { absarc(aX: number, aY: number, aRadius: number, aStartAngle: number, aEndAngle: number, aClockwise: boolean): void; ellipse(aX: number, aY: number, xRadius: number, yRadius: number, aStartAngle: number, aEndAngle: number, aClockwise: boolean, aRotation: number): void; absellipse(aX: number, aY: number, xRadius: number, yRadius: number, aStartAngle: number, aEndAngle: number, aClockwise: boolean, aRotation: number): void; - getSpacedPoints(divisions?: number, closedPath?: boolean): Vector2[]; + getSpacedPoints(divisions?: number): Vector2[]; getPoints(divisions?: number, closedPath?: boolean): Vector2[]; - toShapes(): Shape[]; + toShapes(isCCW: boolean, noHoles: any): Shape[]; } /** @@ -5505,24 +5789,20 @@ declare namespace THREE { holes: Vector2[][]; }; extractPoints(divisions: number): Vector2[]; - } // Extras / Curves ///////////////////////////////////////////////////////////////////// - export class ArcCurve extends EllipseCurve { - constructor(aX: number, aY: number, aRadius: number, aStartAngle: number, aEndAngle: number, aClockwise: boolean ); - } - export class CatmullRomCurve3 extends Curve { - constructor(); - } - - export class ClosedSplineCurve3 extends Curve { constructor(points?: Vector3[]); points: Vector3[]; + + getPoint(t: number): Vector3; } + export class ClosedSplineCurve3 extends CatmullRomCurve3 {} // deprecated, use CatmullRomCurve3 + export class SplineCurve3 extends CatmullRomCurve3 {} // will be deprecated, use CatmullRomCurve3 + export class CubicBezierCurve extends Curve { constructor(v0: Vector2, v1: Vector2, v2: Vector2, v3: Vector2); @@ -5531,6 +5811,7 @@ declare namespace THREE { v2: Vector2; v3: Vector2; } + export class CubicBezierCurve3 extends Curve { constructor(v0: Vector3, v1: Vector3, v2: Vector3, v3: Vector3); @@ -5538,7 +5819,10 @@ declare namespace THREE { v1: Vector3; v2: Vector3; v3: Vector3; + + getPoint(t: number): Vector3; } + export class EllipseCurve extends Curve { constructor(aX: number, aY: number, xRadius: number, yRadius: number, aStartAngle: number, aEndAngle: number, aClockwise: boolean, aRotation: number); @@ -5551,19 +5835,26 @@ declare namespace THREE { aClockwise: boolean; aRotation: number; } + export class ArcCurve extends EllipseCurve { + constructor(aX: number, aY: number, aRadius: number, aStartAngle: number, aEndAngle: number, aClockwise: boolean ); + } + export class LineCurve extends Curve { constructor( v1: Vector2, v2: Vector2 ); v1: Vector2; v2: Vector2; - } + export class LineCurve3 extends Curve { - constructor( v1: Vector3, v2: Vector3 ); + constructor(v1: Vector3, v2: Vector3); v1: Vector3; v2: Vector3; + + getPoint(t: number): Vector3; } + export class QuadraticBezierCurve extends Curve { constructor( v0: Vector2, v1: Vector2, v2: Vector2 ); @@ -5571,23 +5862,23 @@ declare namespace THREE { v1: Vector2; v2: Vector2; } + export class QuadraticBezierCurve3 extends Curve { - constructor( v0: Vector3, v1: Vector3, v2: Vector3 ); + constructor(v0: Vector3, v1: Vector3, v2: Vector3); v0: Vector3; v1: Vector3; v2: Vector3; + + getPoint(t: number): Vector3; } + export class SplineCurve extends Curve { - constructor( points?: Vector2[] ); + constructor(points?: Vector2[]); - points:Vector2[]; - } - export class SplineCurve3 extends Curve { - constructor( points?: Vector3[] ); - - points:Vector3[]; + points: Vector2[]; } + // Extras / Geomerties ///////////////////////////////////////////////////////////////////// /** @@ -5612,10 +5903,26 @@ declare namespace THREE { heightSegments: number; depthSegments: number; }; + widthSegments: number + heightSegments: number; + depthSegments: number; clone(): BoxGeometry; } + export class CubeGeometry extends BoxGeometry {} // deprecated, use BoxGeometry + + export class CircleGeometry extends Geometry { + constructor(radius?: number, segments?: number, thetaStart?: number, thetaLength?: number); + + parameters: { + radius: number; + segments: number; + thetaStart: number; + thetaLength: number; + }; + } + export class CircleBufferGeometry extends Geometry { constructor(radius?: number, segments?: number, thetaStart?: number, thetaLength?: number); @@ -5625,25 +5932,6 @@ declare namespace THREE { thetaStart: number; thetaLength: number; }; - - clone(): CircleBufferGeometry; - } - - export class CircleGeometry extends Geometry { - constructor(radius?: number, segments?: number, thetaStart?: number, thetaLength?: number); - - parameters: { - radius: number; - segments: number; - thetaStart: number; - thetaLength: number; - }; - - clone(): CircleGeometry; - } - - // deprecated - export class CubeGeometry extends BoxGeometry { } export class CylinderGeometry extends Geometry { @@ -5667,8 +5955,6 @@ declare namespace THREE { thetaStart: number; thetaLength: number; }; - - clone(): CylinderGeometry; } export class DodecahedronGeometry extends Geometry { @@ -5678,8 +5964,6 @@ declare namespace THREE { radius: number; detail: number; }; - - clone(): DodecahedronGeometry; } export class EdgesGeometry extends BufferGeometry { @@ -5703,8 +5987,6 @@ declare namespace THREE { export class IcosahedronGeometry extends PolyhedronGeometry { constructor(radius: number, detail: number); - - clone(): IcosahedronGeometry; } export class LatheGeometry extends Geometry { @@ -5720,8 +6002,6 @@ declare namespace THREE { export class OctahedronGeometry extends PolyhedronGeometry { constructor(radius: number, detail: number); - - clone(): OctahedronGeometry; } export class ParametricGeometry extends Geometry { @@ -5743,8 +6023,6 @@ declare namespace THREE { widthSegments: number; heightSegments: number; }; - - clone(): PlaneBufferGeometry; } export class PlaneGeometry extends Geometry { @@ -5756,8 +6034,6 @@ declare namespace THREE { widthSegments: number; heightSegments: number; }; - - clone(): PlaneGeometry; } export class PolyhedronGeometry extends Geometry { @@ -5769,8 +6045,7 @@ declare namespace THREE { radius: number; detail: number; }; - - clone(): PolyhedronGeometry; + boundingSphere: Sphere; } export class RingGeometry extends Geometry { @@ -5784,20 +6059,16 @@ declare namespace THREE { thetaStart: number; thetaLength: number; }; - - clone(): RingGeometry; } export class ShapeGeometry extends Geometry { constructor(shape: Shape, options?: any); constructor(shapes: Shape[], options?: any); - addShapeList(shapes: Shape[], options: any): ShapeGeometry; addShape(shape: Shape, options?: any): void; } - export class SphereBufferGeometry extends BufferGeometry { constructor(radius: number, widthSegments?: number, heightSegments?: number, phiStart?: number, phiLength?: number, thetaStart?: number, thetaLength?: number); @@ -5810,8 +6081,6 @@ declare namespace THREE { thetaStart: number; thetaLength: number; }; - - clone(): SphereBufferGeometry; } /** @@ -5844,8 +6113,30 @@ declare namespace THREE { export class TetrahedronGeometry extends PolyhedronGeometry { constructor(radius?: number, detail?: number); + } - clone(): TetrahedronGeometry; + export interface TextGeometryParameters { + font: Font; + site: number; + height: number; + curveSegments: number; + bevelEnabled: boolean; + bevelThickness: number; + bevelSize: number; + } + + export class TextGeometry extends ExtrudeGeometry { + constructor(text: string, parameters?: TextGeometryParameters); + + parameters: { + font: Font; + site: number; + height: number; + curveSegments: number; + bevelEnabled: boolean; + bevelThickness: number; + bevelSize: number; + } } export class TorusGeometry extends Geometry { @@ -5858,8 +6149,6 @@ declare namespace THREE { tubularSegments: number; arc: number; }; - - clone(): TorusGeometry; } export class TorusKnotGeometry extends Geometry { @@ -5874,11 +6163,8 @@ declare namespace THREE { q: number; heightScale: number; }; - - clone(): TorusKnotGeometry; } - export class TubeGeometry extends Geometry { constructor(path: Path, segments?: number, radius?: number, radiusSegments?: number, closed?: boolean, taper?: (u: number) => number); @@ -5897,11 +6183,9 @@ declare namespace THREE { static NoTaper(u?: number): number; static SinusoidalTaper(u: number): number; static FrenetFrames(path: Path, segments: number, closed: boolean): void; - - clone(): TubeGeometry; } - export class WireframeGeometry extends BufferGeometry{ + export class WireframeGeometry extends BufferGeometry { constructor(geometry: Geometry | BufferGeometry); } @@ -5959,7 +6243,6 @@ declare namespace THREE { export class EdgesHelper extends LineSegments { constructor(object: Object3D, hex?: number, thresholdAngle?: number); - } export class FaceNormalsHelper extends LineSegments { @@ -5979,6 +6262,7 @@ declare namespace THREE { setColors(colorCenterLine: number, colorGrid: number): void; } + export class HemisphereLightHelper extends Object3D { constructor(light: Light, sphereSize: number); @@ -6030,7 +6314,6 @@ declare namespace THREE { export class WireframeHelper extends LineSegments { constructor(object: Object3D, hex?: number); - } // Extras / Objects ///////////////////////////////////////////////////////////////////// @@ -6039,7 +6322,7 @@ declare namespace THREE { constructor(material: Material); material: Material; - render(renderCallback:Function): void; + render(renderCallback: Function): void; } export interface MorphBlendMeshAnimation {