diff --git a/physijs/tests/body.ts b/physijs/tests/body.ts index acf9df5004..649805c035 100644 --- a/physijs/tests/body.ts +++ b/physijs/tests/body.ts @@ -1,6 +1,6 @@ /// /// - +/// Physijs.scripts.worker = '../physijs_worker.js'; Physijs.scripts.ammo = 'examples/js/ammo.js'; diff --git a/physijs/tests/constraints_car.ts b/physijs/tests/constraints_car.ts index b74c444490..4202b0c041 100644 --- a/physijs/tests/constraints_car.ts +++ b/physijs/tests/constraints_car.ts @@ -1,6 +1,6 @@ /// /// - +/// Physijs.scripts.worker = '../physijs_worker.js'; Physijs.scripts.ammo = 'examples/js/ammo.js'; diff --git a/physijs/tests/jenga.ts b/physijs/tests/jenga.ts index 05bbd78613..e2eeecc94e 100644 --- a/physijs/tests/jenga.ts +++ b/physijs/tests/jenga.ts @@ -1,6 +1,6 @@ /// /// - +/// Physijs.scripts.worker = '../physijs_worker.js'; Physijs.scripts.ammo = 'examples/js/ammo.js'; diff --git a/physijs/tests/vehicle.ts b/physijs/tests/vehicle.ts index 1b11066fe0..ef064f0387 100644 --- a/physijs/tests/vehicle.ts +++ b/physijs/tests/vehicle.ts @@ -1,5 +1,6 @@ /// /// +/// var TWEEN: any; var SimplexNoise: any; diff --git a/threejs/tests/canvas/canvas_camera_orthographic.ts b/threejs/tests/canvas/canvas_camera_orthographic.ts index 7391d978b0..54ac792d2b 100644 --- a/threejs/tests/canvas/canvas_camera_orthographic.ts +++ b/threejs/tests/canvas/canvas_camera_orthographic.ts @@ -50,7 +50,7 @@ var material1 = new THREE.LineBasicMaterial({ color: 0x000000, opacity: 0.2 }); var line = new THREE.Line(geometry, material1); - line.type = THREE.LinePieces; + line.mode = THREE.LinePieces; scene.add(line); // Cubes diff --git a/threejs/tests/canvas/canvas_materials.ts b/threejs/tests/canvas/canvas_materials.ts index 0d8f8a631e..e65dfe3beb 100644 --- a/threejs/tests/canvas/canvas_materials.ts +++ b/threejs/tests/canvas/canvas_materials.ts @@ -45,7 +45,7 @@ var material = new THREE.LineBasicMaterial({ color: 0xffffff, opacity: 0.2 }); var line = new THREE.Line(geometry, material); - line.type = THREE.LinePieces; + line.mode = THREE.LinePieces; scene.add(line); // Spheres diff --git a/threejs/tests/three-tests-setup.ts b/threejs/tests/three-tests-setup.ts index 235dd631db..edb913a3d3 100644 --- a/threejs/tests/three-tests-setup.ts +++ b/threejs/tests/three-tests-setup.ts @@ -4,7 +4,9 @@ /// /// +/// /// +/// /// /// /// diff --git a/threejs/three-canvasrenderer.d.ts b/threejs/three-canvasrenderer.d.ts new file mode 100644 index 0000000000..c751d87228 --- /dev/null +++ b/threejs/three-canvasrenderer.d.ts @@ -0,0 +1,57 @@ +// Type definitions for CanvasRenderer.js +// Project: https://github.com/mrdoob/three.js/blob/master/examples/js/renderers/CanvasRenderer.js +// Definitions by: Satoru Kimura +// Definitions: https://github.com/borisyankov/DefinitelyTyped + +/// + +declare module THREE { + export interface SpriteCanvasMaterialParameters extends MaterialParameters{ + color?: number; + + } + + export class SpriteCanvasMaterial extends Material { + constructor(parameters?: SpriteCanvasMaterialParameters); + + color: Color; + + program(context: any, color: Color): void; + clone(): SpriteCanvasMaterial; + } + + export interface CanvasRendererParameters { + canvas?: HTMLCanvasElement; + devicePixelRatio?: number; + } + + export class CanvasRenderer implements Renderer { + constructor(parameters?: CanvasRendererParameters); + + domElement: HTMLCanvasElement; + devicePixelRatio: number; + autoClear: boolean; + sortObjects: boolean; + sortElements: boolean; + info: { render: { vertices: number; faces: number; }; }; + + supportsVertexTextures(): void; + setFaceCulling(): void; + setSize(width: number, height: number, updateStyle?: boolean): void; + setViewport(x: number, y: number, width: number, height: number): void; + setScissor(): void; + enableScissorTest(): void; + setClearColor(color: Color, opacity?: number): void; + setClearColor(color: string, opacity?: number): void; + setClearColor(color: number, opacity?: number): void; + setClearColorHex(hex: number, alpha?: number): void; + getClearColor(): Color; + getClearAlpha(): number; + getMaxAnisotropy(): number; + clear(): void; + clearColor(): void; + clearDepth(): void; + clearStencil(): void; + render(scene: Scene, camera: Camera): void; + } +} \ No newline at end of file diff --git a/threejs/three-projector.d.ts b/threejs/three-projector.d.ts new file mode 100644 index 0000000000..11d674188f --- /dev/null +++ b/threejs/three-projector.d.ts @@ -0,0 +1,97 @@ +// Type definitions for Projector.js +// Project: https://github.com/mrdoob/three.js/blob/master/examples/js/renderers/Projector.js +// Definitions by: Satoru Kimura +// Definitions: https://github.com/borisyankov/DefinitelyTyped + +/// + +declare module THREE { + // Renderers / Renderables ///////////////////////////////////////////////////////////////////// + export class RenderableObject { + constructor(); + + id: number; + object: Object; + z: number; + } + + export class RenderableFace { + constructor(); + + id: number; + v1: RenderableVertex; + v2: RenderableVertex; + v3: RenderableVertex; + normalModel: Vector3; + vertexNormalsModel: Vector3[]; + vertexNormalsLength: number; + color: Color; + material: Material; + uvs: Vector2[][]; + z: number; + + } + + export class RenderableVertex { + constructor(); + + position: Vector3; + positionWorld: Vector3; + positionScreen: Vector4; + visible: boolean; + + copy(vertex: RenderableVertex): void; + } + + export class RenderableLine { + constructor(); + + id: number; + v1: RenderableVertex; + v2: RenderableVertex; + vertexColors: Color[]; + material: Material; + z: number; + } + + export class RenderableSprite { + constructor(); + + id: number; + object: Object; + x: number; + y: number; + z: number; + rotation: number; + scale: Vector2; + material: Material; + } + + /** + * Projects points between spaces. + */ + export class Projector { + constructor(); + + // deprecated. + projectVector(vector: Vector3, camera: Camera): Vector3; + + // deprecated. + unprojectVector(vector: Vector3, camera: Camera): Vector3; + + /** + * Transforms a 3D scene object into 2D render data that can be rendered in a screen with your renderer of choice, projecting and clipping things out according to the used camera. + * If the scene were a real scene, this method would be the equivalent of taking a picture with the camera (and developing the film would be the next step, using a Renderer). + * + * @param scene scene to project. + * @param camera camera to use in the projection. + * @param sort select whether to sort elements using the Painter's algorithm. + */ + projectScene(scene: Scene, camera: Camera, sortObjects: boolean, sortElements?: boolean): { + objects: Object3D[]; // Mesh, Line or other object + sprites: Object3D[]; // Sprite or Particle + lights: Light[]; + elements: Face3[]; // Line, Particle, Face3 or Face4 + }; + } +} \ No newline at end of file diff --git a/threejs/three.d.ts b/threejs/three.d.ts index f114cd9583..2a5535cbb5 100644 --- a/threejs/three.d.ts +++ b/threejs/three.d.ts @@ -3,6 +3,8 @@ // Definitions by: Kon , Satoru Kimura // Definitions: https://github.com/borisyankov/DefinitelyTyped +/// + interface WebGLRenderingContext {} declare module THREE { @@ -67,6 +69,8 @@ declare module THREE { export var AddEquation: BlendingEquation; export var SubtractEquation: BlendingEquation; export var ReverseSubtractEquation: BlendingEquation; + export var MinEquation: BlendingEquation; + export var MaxEquation: BlendingEquation; // custom blending destination factors export enum BlendingDstFactor { } @@ -143,12 +147,18 @@ declare module THREE { export var LuminanceAlphaFormat: 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; + // 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; // Cameras //////////////////////////////////////////////////////////////////////////////////////// @@ -171,6 +181,8 @@ declare module THREE { */ projectionMatrix: Matrix4; + getWorldDirection(optionalTarget?: Vector3): Vector3; + /** * This make the camera look at the vector position in local space. * @param vector point to look at @@ -209,6 +221,8 @@ declare module THREE { */ constructor(left: number, right: number, top: number, bottom: number, near?: number, far?: number); + zoom: number; + /** * Camera frustum left plane. */ @@ -265,6 +279,8 @@ declare module THREE { */ constructor(fov?: number, aspect?: number, near?: number, far?: number); + zoom: number; + /** * Camera frustum vertical field of view, from bottom to top of view, in degrees. */ @@ -345,8 +361,10 @@ declare module THREE { array: number[]; itemSize: number; + needsUpdate: boolean; length: number; + copyAt(index1: number, attribute: BufferAttribute, index2: number): void; set(value: number): BufferAttribute; setX(index: number, x: number): BufferAttribute; setY(index: number, y: number): BufferAttribute; @@ -354,6 +372,7 @@ declare module THREE { setXY(index: number, x: number, y: number): BufferAttribute; setXYZ(index: number, x: number, y: number, z: number): BufferAttribute; setXYZW(index: number, x: number, y: number, z: number, w: number): BufferAttribute; + clone(): BufferAttribute; } // deprecated @@ -420,7 +439,9 @@ declare module THREE { id: number; uuid: string; name: string; + type: string; attributes: BufferAttribute[]; + attributesKeys: string[]; drawcalls: { start: number; count: number; index: number; }[]; offsets: { start: number; count: number; index: number; }[]; boundingBox: BoundingBox3D; @@ -436,6 +457,9 @@ declare module THREE { */ applyMatrix(matrix: Matrix4): void; + // this method is currently empty. + center(): void; + fromGeometry( geometry: Geometry, settings?: any ): BufferGeometry; /** @@ -469,6 +493,7 @@ declare module THREE { merge(): void; normalizeNormals(): void; reorderBuffers(indexBuffer: number, indexMap: number[], vertexCount: number): void; + toJSON(): any; clone(): BufferGeometry; /** @@ -729,6 +754,8 @@ declare module THREE { */ name: string; + type: string; + /** * The array of vertices hold every position of points of the model. * To signal an update in this array, Geometry.verticesNeedUpdate needs to be set to true. @@ -852,11 +879,6 @@ declare module THREE { */ lineDistancesNeedUpdate: boolean; - /** - * Set to true if an array has changed in length. - */ - buffersNeedUpdate: boolean; - /** * */ @@ -867,6 +889,8 @@ declare module THREE { */ applyMatrix(matrix: Matrix4): void; + fromBufferGeometry(geometry: BufferGeometry): Geometry; + /** * */ @@ -916,7 +940,7 @@ declare module THREE { */ mergeVertices(): number; - makeGroups(usesFaceMaterial: boolean, maxVerticesInGroup: number): void; + toJSON(): any; /** * Creates a new clone of the Geometry. @@ -929,6 +953,7 @@ declare module THREE { */ dispose(): void; + //These properties do not exist in a normal Geometry class, but if you use the instance that was passed by JSONLoader, it will be added. bones: Bone[]; animation: AnimationData; @@ -962,6 +987,8 @@ declare module THREE { */ name: string; + type: string; + /** * Object's parent in the scene graph. */ @@ -1174,17 +1201,7 @@ declare module THREE { */ remove(object: Object3D): void; - /** - * - */ - raycast(raycaster: Raycaster, intersects: any): void; - - /** - * Translates object along arbitrary axis by distance. - * @param distance Distance. - * @param axis Translation direction. - */ - traverse(callback: (object: Object3D) => any): void; + getChildByName( name: string, recursive?: boolean ): Object3D; /** * Searches through the object's children and returns the first with a matching id, optionally recursive. @@ -1193,7 +1210,6 @@ declare module THREE { */ getObjectById(id: string, recursive: boolean): Object3D; - /** * Searches through the object's children and returns the first with a matching name, optionally recursive. * @param name String to match to the children's Object3d.name property. @@ -1201,8 +1217,20 @@ declare module THREE { */ getObjectByName(name: string, recursive?: boolean): Object3D; + getWorldPosition(optionalTarget: Vector3): Vector3; + getWorldQuaternion(optionalTarget: Quaternion): Quaternion; + getWorldRotation(optionalTarget: Euler): Euler; + getWorldScale(optionalTarget: Vector3): Vector3; + getWorldDirection(optionalTarget: Vector3): Vector3; - getChildByName( name: string, recursive?: boolean ): Object3D; + /** + * Translates object along arbitrary axis by distance. + * @param distance Distance. + * @param axis Translation direction. + */ + traverse(callback: (object: Object3D) => any): void; + + traverseVisible(callback: (object: Object3D) => any): void; /** * Updates local transform. @@ -1214,6 +1242,8 @@ declare module THREE { */ updateMatrixWorld(force: boolean): void; + toJSON(): any; + /** * * @param object @@ -1229,37 +1259,6 @@ declare module THREE { } - /** - * Projects points between spaces. - */ - export class Projector { - constructor(); - - projectVector(vector: Vector3, camera: Camera): Vector3; - - unprojectVector(vector: Vector3, camera: Camera): Vector3; - - /** - * Translates a 2D point from NDC (Normalized Device Coordinates) to a Raycaster that can be used for picking. NDC range from [-1..1] in x (left to right) and [1.0 .. -1.0] in y (top to bottom). - */ - pickingRay(vector: Vector3, camera: Camera): Raycaster; - - /** - * Transforms a 3D scene object into 2D render data that can be rendered in a screen with your renderer of choice, projecting and clipping things out according to the used camera. - * If the scene were a real scene, this method would be the equivalent of taking a picture with the camera (and developing the film would be the next step, using a Renderer). - * - * @param scene scene to project. - * @param camera camera to use in the projection. - * @param sort select whether to sort elements using the Painter's algorithm. - */ - projectScene(scene: Scene, camera: Camera, sortObjects: boolean, sortElements?: boolean): { - objects: Object3D[]; // Mesh, Line or other object - sprites: Object3D[]; // Sprite or Particle - lights: Light[]; - elements: Face3[]; // Line, Particle, Face3 or Face4 - }; - } - export interface Intersection { distance: number; point: Vector3; @@ -1296,6 +1295,7 @@ declare module THREE { */ export class Light extends Object3D { constructor(hex?: number); + color: Color; clone(light?: Light): Light; @@ -1749,6 +1749,12 @@ declare module THREE { clear(): void; } + export class CompressedTextureLoader{ + constructor(); + + load(url: string, onLoad: (bufferGeometry: BufferGeometry) => void, onError?: (event: any) => void): void; + } + /* * GeometryLoader class is experimental, and it is not yet included in the compiled source code. * @@ -1909,6 +1915,8 @@ declare module THREE { */ name: string; + type: string; + /** * Defines which of the face sides will be rendered - front, back or both. * Default is THREE.FrontSide. Other options are THREE.BackSide and THREE.DoubleSide. @@ -1994,6 +2002,7 @@ declare module THREE { needsUpdate: boolean; setValues(values: Object): void; + toJSON(): any; clone(material?:Material): Material; dispose(): void; @@ -2119,6 +2128,7 @@ declare module THREE { constructor(materials?: Material[]); materials: Material[]; + toJSON(): any; clone(): MeshFaceMaterial; } @@ -2342,20 +2352,6 @@ declare module THREE { clone(): ShaderMaterial; } - export interface SpriteCanvasMaterialParameters extends MaterialParameters{ - color?: number; - - } - - export class SpriteCanvasMaterial extends Material { - constructor(parameters?: SpriteCanvasMaterialParameters); - - color: Color; - - program(context: any, color: Color): void; - clone(): SpriteCanvasMaterial; - } - export interface SpriteMaterialParameters extends MaterialParameters{ color?: number; map?: Texture; @@ -2835,11 +2831,6 @@ declare module THREE { */ randFloatSpread(range: number): number; - /** - * Returns -1 if x is less than 0, 1 if x is greater than 0, and 0 if x is zero. - */ - sign(x: number): number; - degToRad(degrees: number): number; radToDeg(radians: number): number; @@ -3237,6 +3228,10 @@ declare module THREE { equals(v: Quaternion): boolean; fromArray(n: number[]): Quaternion; toArray(): number[]; + + fromArray(xyzw: number[], offset?: number): Quaternion; + toArray(xyzw?: number[], offset?: number): number[]; + onChange: () => void; /** @@ -3617,9 +3612,10 @@ declare module THREE { * Checks for strict equality of this vector and v. */ equals(v: Vector2): boolean; - fromArray(xy: number[]): Vector2; - toArray(): number[]; + fromArray(xy: number[], offset?: number): Vector2; + + toArray(xy?: number[], offset?: number): number[]; /** * Clones this vector. */ @@ -3708,6 +3704,8 @@ declare module THREE { applyMatrix4(m: Matrix4): Vector3; applyProjection(m: Matrix4): Vector3; applyQuaternion(q: Quaternion): Vector3; + project(camrea: Camera): Vector3; + unproject(camera: Camera): Vector3; transformDirection(m: Matrix4): Vector3; divide(v: Vector3): Vector3; @@ -3794,8 +3792,10 @@ declare module THREE { * Checks for strict equality of this vector and v. */ equals(v: Vector3): boolean; - fromArray(xyz: number[]): Vector3; - toArray(): number[]; + + fromArray(xyz: number[], offset?: number): Vector3; + + toArray(xyz?: number[], offset?: number): number[]; /** * Clones this vector. @@ -3942,8 +3942,9 @@ declare module THREE { */ equals(v: Vector4): boolean; - fromArray(xyzw: number[]): number[]; - toArray(): number[]; + fromArray(xyzw: number[], offset?: number): Vector4; + + toArray(xyzw?: number[], offset?: number): number[]; /** * Clones this vector. @@ -3957,33 +3958,59 @@ declare module THREE { constructor(belongsToSkin: SkinnedMesh); skin: SkinnedMesh; + } - accumulatedRotWeight: number; - accumulatedPosWeight: number; - accumulatedSclWeight: number; + export class Group extends Object3D { + constructor(); + } - updateMatrixWorld(forceUpdate?: boolean): void; + export interface LensFlareProperty { + texture: Texture; // Texture + size: number; // size in pixels (-1 = use texture.width) + distance: number; // distance (0-1) from light source (0=at light source) + x: number; + y: number; + z: number; // screen position (-1 => 1) z = 0 is ontop z = 1 is back + scale: number; // scale + rotation: number; // rotation + opacity: number; // opacity + color: Color; // color + blending: Blending; + } + + export class LensFlare extends Object3D { + constructor(texture?: Texture, size?: number, distance?: number, blending?: Blending, color?: Color); + + lensFlares: LensFlareProperty[]; + positionScreen: Vector3; + customUpdateCallback: (object: LensFlare) => void; + + add(texture: Texture, size?: number, distance?: number, blending?: Blending, color?: Color): void; + add(obj: Object3D): void; + + + updateLensFlares(): void; } export class Line extends Object3D { - constructor(geometry?: Geometry, material?: LineDashedMaterial, type?: number); - constructor(geometry?: Geometry, material?: LineBasicMaterial, type?: number); - constructor(geometry?: Geometry, material?: ShaderMaterial, type?: number); - constructor(geometry?: BufferGeometry, material?: LineDashedMaterial, type?: number); - constructor(geometry?: BufferGeometry, material?: LineBasicMaterial, type?: number); - constructor(geometry?: BufferGeometry, material?: ShaderMaterial, type?: number); + constructor(geometry?: Geometry, material?: LineDashedMaterial, mode?: number); + constructor(geometry?: Geometry, material?: LineBasicMaterial, mode?: number); + constructor(geometry?: Geometry, material?: ShaderMaterial, mode?: number); + constructor(geometry?: BufferGeometry, material?: LineDashedMaterial, mode?: number); + constructor(geometry?: BufferGeometry, material?: LineBasicMaterial, mode?: number); + constructor(geometry?: BufferGeometry, material?: ShaderMaterial, mode?: number); geometry: Geometry; material: LineBasicMaterial; - type: LineType; + mode: LineMode; raycast(raycaster: Raycaster, intersects: any): void; clone(object?: Line): Line; } - enum LineType{} - var LineStrip: LineType; - var LinePieces: LineType; + enum LineMode{} + var LineStrip: LineMode; + var LinePieces: LineMode; export class LOD extends Object3D { constructor(); @@ -4119,7 +4146,6 @@ declare module THREE { material: SpriteMaterial; raycast(raycaster: Raycaster, intersects: any): void; - updateMatrix(): void; clone(object?: Sprite): Sprite; } @@ -4132,46 +4158,6 @@ declare module THREE { domElement: HTMLCanvasElement; } - export interface CanvasRendererParameters { - canvas?: HTMLCanvasElement; - devicePixelRatio?: number; - } - - export class CanvasRenderer implements Renderer { - constructor(parameters?: CanvasRendererParameters); - - domElement: HTMLCanvasElement; - devicePixelRatio: number; - autoClear: boolean; - sortObjects: boolean; - sortElements: boolean; - info: { render: { vertices: number; faces: number; }; }; - - supportsVertexTextures(): void; - setFaceCulling(): void; - setSize(width: number, height: number, updateStyle?: boolean): void; - setViewport(x: number, y: number, width: number, height: number): void; - setScissor(): void; - enableScissorTest(): void; - setClearColor(color: Color, opacity?: number): void; - setClearColor(color: string, opacity?: number): void; - setClearColor(color: number, opacity?: number): void; - setClearColorHex(hex: number, alpha?: number): void; - getClearColor(): Color; - getClearAlpha(): number; - getMaxAnisotropy(): number; - clear(): void; - clearColor(): void; - clearDepth(): void; - clearStencil(): void; - render(scene: Scene, camera: Camera): void; - } - - export interface RendererPlugin { - init(renderer: WebGLRenderer): void; - render(scene: Scene, camera: Camera, currentWidth: number, currentHeight: number): void; - } - export interface WebGLRendererParameters { /** * A Canvas where the renderer draws its output. @@ -4289,11 +4275,6 @@ declare module THREE { */ shadowMapEnabled: boolean; - /** - * Default is true. - */ - shadowMapAutoUpdate: 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. @@ -4330,18 +4311,6 @@ declare module THREE { */ autoScaleCubemaps: boolean; - /** - * An array with render plugins to be applied before rendering. - * Default is an empty array, or []. - */ - renderPluginsPre: RendererPlugin[]; - - /** - * An array with render plugins to be applied after rendering. - * Default is an empty array, or []. - */ - renderPluginsPost: RendererPlugin[]; - /** * An object with a series of statistical information about the graphics board memory and the rendering process. Useful for debugging or just for the sake of curiosity. The object contains the following fields: */ @@ -4373,6 +4342,8 @@ declare module THREE { supportsFloatTextures(): boolean; supportsStandardDerivatives(): boolean; supportsCompressedTextureS3TC(): boolean; + supportsCompressedTexturePVRTC(): boolean; + supportsBlendMinMax(): boolean; getMaxAnisotropy(): number; getPrecision(): string; @@ -4434,16 +4405,7 @@ declare module THREE { clearDepth(): void; clearStencil(): void; clearTarget(renderTarget:WebGLRenderTarget, color: boolean, depth: boolean, stencil: boolean): void; - - /** - * Initialises the postprocessing plugin, and adds it to the renderPluginsPost array. - */ - addPostPlugin(plugin: RendererPlugin): void; - - /** - * Initialises the preprocessing plugin, and adds it to the renderPluginsPre array. - */ - addPrePlugin(plugin: RendererPlugin): void; + resetGLState(): void; /** * Tells the shadow map plugin to update using the passed scene and camera parameters. @@ -4466,7 +4428,6 @@ declare module THREE { */ render(scene: Scene, camera: Camera, renderTarget?: RenderTarget, forceClear?: boolean): void; renderImmediateObject(camera: Camera, lights: Light[], fog: Fog, material: Material, object: Object3D): void; - initMaterial(material: Material, lights: Light[], fog: Fog, object: Object3D): void; /** * Used for setting the gl frontFace, cullFace states in the GPU, thus enabling/disabling face culling when rendering. @@ -4479,8 +4440,10 @@ declare module THREE { 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; + } export interface RenderTarget { @@ -4534,67 +4497,6 @@ declare module THREE { activeCubeFace: number; // PX 0, NX 1, PY 2, NY 3, PZ 4, NZ 5 } - // Renderers / Renderables ///////////////////////////////////////////////////////////////////// - export class RenderableFace { - constructor(); - - id: number; - v1: RenderableVertex; - v2: RenderableVertex; - v3: RenderableVertex; - normalModel: Vector3; - vertexNormalsModel: Vector3[]; - vertexNormalsLength: number; - color: Color; - material: Material; - uvs: Vector2[][]; - z: number; - - } - - export class RenderableLine { - constructor(); - - id: number; - v1: RenderableVertex; - v2: RenderableVertex; - vertexColors: Color[]; - material: Material; - z: number; - } - - export class RenderableObject { - constructor(); - - id: number; - object: Object; - z: number; - } - - export class RenderableSprite { - constructor(); - - id: number; - object: Object; - x: number; - y: number; - z: number; - rotation: number; - scale: Vector2; - material: Material; - } - - export class RenderableVertex { - constructor(); - - position: Vector3; - positionWorld: Vector3; - positionScreen: Vector4; - visible: boolean; - - copy(vertex: RenderableVertex): void; - } - // Renderers / Shaders ///////////////////////////////////////////////////////////////////// export interface ShaderChunk { [name: string]: string; @@ -4692,14 +4594,57 @@ declare module THREE { }; // Renderers / WebGL ///////////////////////////////////////////////////////////////////// + export class WebGLExtensions{ + constructor(gl: any); // WebGLRenderingContext + + get(name: string): any; + } + export class WebGLProgram{ constructor(renderer: WebGLRenderer, code: string, material: ShaderMaterial, parameters: WebGLRendererParameters); + + attributes: any; + attributesKeys: string[]; + id: number; + code: string; + usedTimes: number; + program: any; + vertexShader: WebGLShader; + fragmentShader: WebGLShader; } export class WebGLShader{ constructor(gl: any, type: string, string: string); } + // 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; + render(scene: Scene, camera: Camera, viewportWidth: number, viewportHeight: number): void; + } + + export class ShadowMapPlugin implements RendererPlugin { + constructor(); + + init(renderer: Renderer): void; + render(scene: Scene, camera: Camera): void; + update(scene: Scene, camera: Camera): void; + } + + export class SpritePlugin implements RendererPlugin { + constructor(); + + init(renderer: Renderer): void; + render(scene: Scene, camera: Camera, viewportWidth: number, viewportHeight: number): void; + } + // Scenes ///////////////////////////////////////////////////////////////////// export interface IFog { @@ -4771,10 +4716,7 @@ declare module THREE { overrideMaterial: Material; autoUpdate: boolean; - /** - * Default is false. - */ - matrixAutoUpdate: boolean; + clone(): Scene; } // Textures ///////////////////////////////////////////////////////////////////// @@ -4795,6 +4737,7 @@ declare module THREE { image: { width: number; height: number; }; mipmaps: ImageData[]; + flipY: boolean; generateMipmaps: boolean; clone(): CompressedTexture; @@ -4840,7 +4783,7 @@ declare module THREE { export class Texture { constructor( - image: any, // HTMLImageElement or HTMLCanvasElement + image: any, // HTMLImageElement or HTMLCanvasElement ( or HTMLVideoElement) mapping?: Mapping, wrapS?: Wrapping, wrapT?: Wrapping, @@ -4919,6 +4862,22 @@ declare module THREE { dispatchEvent(event: { type: string; target: any; }): void; } + class VideoTexture extends Texture { + constructor( + video: HTMLVideoElement, + mapping?: MappingConstructor, + wrapS?: Wrapping, + wrapT?: Wrapping, + magFilter?: TextureFilter, + minFilter?: TextureFilter, + format?: PixelFormat, + type?: TextureDataType, + anisotropy?: number + ); + + generateMipmaps: boolean; + } + // Extras ///////////////////////////////////////////////////////////////////// export interface TypefaceData { @@ -5012,6 +4971,7 @@ declare module THREE { play(startTime?: number, weight?: number): void; stop(): void; reset(): void; + resetBlendWeights(): void; update(deltaTimeMS: number): void; getNextKeyWith(type: string, h: number, key: number): KeyFrame; getPrevKeyWith(type: string, h: number, key: number): KeyFrame; @@ -5065,6 +5025,32 @@ declare module THREE { update(deltaTimeMS: number): void; } + // Extras / Audio ///////////////////////////////////////////////////////////////////// + + export class Audio extends Object3D { + constructor(listener: AudioListener); + type: string; + context: AudioContext; + source: AudioBufferSourceNode; + gain: GainNode; + panner: PannerNode; + + load(file: string): Audio; + setLoop(value: boolean): void; + setRefDistance(value: number): void; + setRolloffFactor(value: number): void; + updateMatrixWorld(force?: boolean): void; + } + + export class AudioListener extends Object3D { + constructor(); + + type: string; + context: AudioContext; + + updateMatrixWorld(force?: boolean): void; + } + // Extras / Core ///////////////////////////////////////////////////////////////////// /** @@ -5172,13 +5158,6 @@ declare module THREE { export class Gyroscope extends Object3D { constructor(); - translationWorld: Vector3; - translationObject: Vector3; - quaternionWorld: Quaternion; - quaternionObject: Quaternion; - scaleWorld: Vector3; - scaleObject: Vector3; - updateMatrixWorld(force?: boolean): void; } @@ -5366,9 +5345,6 @@ declare module THREE { heightSegments: number; depthSegments: number; }; - widthSegments: number; - heightSegments: number; - depthSegments: number; } export class CircleGeometry extends Geometry { @@ -5380,10 +5356,6 @@ declare module THREE { thetaStart: number; thetaLength: number; }; - radius: number; - segments: number; - thetaStart: number; - thetaLength: number; } // deprecated @@ -5409,54 +5381,60 @@ declare module THREE { heightSegments: number; openEnded: boolean; }; - radiusTop: number; - radiusBottom: number; - height: number; - radialSegments: number; - heightSegments: number; - openEnded: boolean; + } + + export class DodecahedronGeometry extends Geometry { + constructor(radius: number, detail: number); + + parameters: { + radius: number; + detail: number; + }; } export class ExtrudeGeometry extends Geometry { constructor(shape?: Shape, options?: any); constructor(shapes?: Shape[], options?: any); + WorldUVGenerator: { + generateTopUV(geometry: Geometry, indexA: number, indexB: number, indexC: number): Vector2[]; + generateSideWallUV(geometry: Geometry, indexA: number, indexB: number, indexC: number, indexD: number): Vector2[]; + }; + addShapeList(shapes: Shape[], options?: any): void; addShape(shape: Shape, options?: any): void; } export class IcosahedronGeometry extends PolyhedronGeometry { constructor(radius: number, detail: number); - - parameters: { - radius: number; - detail: number; - }; - radius: number; - detail: number; } export class LatheGeometry extends Geometry { constructor(points: Vector3[], segments?: number, phiStart?: number, phiLength?: number); - + + parameters: { + points: Vector3[]; + segments: number; + phiStart: number; + phiLength: number; + }; } export class OctahedronGeometry extends PolyhedronGeometry { constructor(radius: number, detail: number); - - parameters: { - radius: number; - detail: number; - }; - radius: number; - detail: number; } export class ParametricGeometry extends Geometry { - constructor(func: (u: number, v: number) => Vector3, slices: number, stacks: number, useTris?: boolean); + constructor(func: (u: number, v: number) => Vector3, slices: number, stacks: number); + + parameters: { + func: (u: number, v: number) => Vector3; + slices: number; + stacks: number; + }; } - export class PlaneGeometry extends Geometry { + export class PlaneBufferGeometry extends Geometry { constructor(width: number, height: number, widthSegments?: number, heightSegments?: number); parameters: { @@ -5465,24 +5443,40 @@ declare module THREE { widthSegments: number; heightSegments: number; }; - width: number; - height: number; - widthSegments: number; - heightSegments: number; + } + + export class PlaneGeometry extends PlaneBufferGeometry { } export class PolyhedronGeometry extends Geometry { constructor(vertices: Vector3[], faces: Face3[], radius?: number, detail?: number); + + parameters: { + vertices: Vector3[]; + faces: Face3[]; + radius: number; + detail: number; + }; } export class RingGeometry extends Geometry { constructor(innerRadius?: number, outerRadius?: number, thetaSegments?: number, phiSegments?: number, thetaStart?: number, thetaLength?: number); + + parameters: { + innerRadius: number; + outerRadius: number; + thetaSegments: number; + phiSegments: number; + thetaStart: number; + thetaLength: number; + }; } 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; } @@ -5513,13 +5507,6 @@ declare module THREE { thetaStart: number; thetaLength: number; }; - radius: number; - widthSegments: number; - heightSegments: number; - phiStart: number; - phiLength: number; - thetaStart: number; - thetaLength: number; } export class TetrahedronGeometry extends PolyhedronGeometry { @@ -5552,11 +5539,6 @@ declare module THREE { tubularSegments: number; arc: number; }; - radius: number; - tube: number; - radialSegments: number; - tubularSegments: number; - arc: number; } export class TorusKnotGeometry extends Geometry { @@ -5571,13 +5553,6 @@ declare module THREE { q: number; heightScale: number; }; - radius: number; - tube: number; - radialSegments: number; - tubularSegments: number; - p: number; - q: number; - heightScale: number; } export class TubeGeometry extends Geometry { @@ -5590,11 +5565,6 @@ declare module THREE { radialSegments: number; closed: boolean; }; - path: Path; - segments: number; - radius: number; - radialSegments: number; - closed: boolean; tangents: Vector3[]; normals: Vector3[]; binormals: Vector3[]; @@ -5749,34 +5719,6 @@ declare module THREE { render(renderCallback:Function): void; } - export interface LensFlareProperty { - texture: Texture; // Texture - size: number; // size in pixels (-1 = use texture.width) - distance: number; // distance (0-1) from light source (0=at light source) - x: number; - y: number; - z: number; // screen position (-1 => 1) z = 0 is ontop z = 1 is back - scale: number; // scale - rotation: number; // rotation - opacity: number; // opacity - color: Color; // color - blending: Blending; - } - - export class LensFlare extends Object3D { - constructor(texture?: Texture, size?: number, distance?: number, blending?: Blending, color?: Color); - - lensFlares: LensFlareProperty[]; - positionScreen: Vector3; - customUpdateCallback: (object: LensFlare) => void; - - add(texture: Texture, size?: number, distance?: number, blending?: Blending, color?: Color): void; - add(obj: Object3D): void; - - - updateLensFlares(): void; - } - export interface MorphBlendMeshAnimation { startFrame: number; endFrame: number; @@ -5813,54 +5755,6 @@ declare module THREE { stopAnimation(name: string): void; update(delta: number): void; } - - // Extras / Renderers / Plugins ///////////////////////////////////////////////////////////////////// - - export class DepthPassPlugin implements RendererPlugin { - constructor(); - - enabled: boolean; - renderTarget: RenderTarget; - - init(renderer: Renderer): void; - render(scene: Scene, camera: Camera): void; - update(scene: Scene, camera: Camera): void; - } - - export class LensFlarePlugin implements RendererPlugin { - constructor(); - - init(renderer: Renderer): void; - render(scene: Scene, camera: Camera, viewportWidth: number, viewportHeight: number): void; - } - - export class ShadowMapPlugin implements RendererPlugin { - constructor(); - - init(renderer: Renderer): void; - render(scene: Scene, camera: Camera): void; - update(scene: Scene, camera: Camera): void; - } - - export class SpritePlugin implements RendererPlugin { - constructor(); - - init(renderer: Renderer): void; - render(scene: Scene, camera: Camera, viewportWidth: number, viewportHeight: number): void; - } - - // Extras / Shaders ///////////////////////////////////////////////////////////////////// - - export var ShaderFlares: { - 'lensFlareVertexTexture': { - vertexShader: string; - fragmentShader: string; - }; - 'lensFlare': { - vertexShader: string; - fragmentShader: string; - }; - }; } declare module 'three' {