import { BufferAttribute } from './BufferAttribute'; import { Box3 } from './../math/Box3'; import { Sphere } from './../math/Sphere'; import { Matrix4 } from './../math/Matrix4'; import { Vector2 } from './../math/Vector2'; import { Vector3 } from './../math/Vector3'; import { Object3D } from './Object3D'; import { Geometry } from './Geometry'; import { DirectGeometry } from './DirectGeometry'; import { EventDispatcher } from './EventDispatcher'; import { InterleavedBufferAttribute } from './InterleavedBufferAttribute'; /** * @deprecated Use {@link BufferAttribute#setDynamic THREE.BufferAttribute().setDynamic( true )} instead. */ /** * 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. * It is mainly interesting when working with static objects. * * @see src/core/BufferGeometry.js */ export class BufferGeometry extends EventDispatcher { /** * This creates a new BufferGeometry. It also sets several properties to an default value. */ constructor(); static MaxIndex: number; /** * Unique number of this buffergeometry instance */ id: number; uuid: string; name: string; type: string; index: BufferAttribute; attributes: { [name: string]: BufferAttribute | InterleavedBufferAttribute; }; morphAttributes: any; groups: { start: number; count: number; materialIndex?: number }[]; boundingBox: Box3; boundingSphere: Sphere; drawRange: { start: number; count: number }; userData: {[key: string]: any}; getIndex(): BufferAttribute; setIndex(index: BufferAttribute | number[]): void; addAttribute( name: string, attribute: BufferAttribute | InterleavedBufferAttribute ): BufferGeometry; getAttribute(name: string): BufferAttribute | InterleavedBufferAttribute; removeAttribute(name: string): BufferGeometry; addGroup(start: number, count: number, materialIndex?: number): void; clearGroups(): void; setDrawRange(start: number, count: number): void; /** * Bakes matrix transform directly into vertex coordinates. */ applyMatrix(matrix: Matrix4): BufferGeometry; rotateX(angle: number): BufferGeometry; rotateY(angle: number): BufferGeometry; rotateZ(angle: number): BufferGeometry; translate(x: number, y: number, z: number): BufferGeometry; scale(x: number, y: number, z: number): BufferGeometry; lookAt(v: Vector3): void; center(): BufferGeometry; setFromObject(object: Object3D): BufferGeometry; setFromPoints(points: Vector3[] | Vector2[]): BufferGeometry; updateFromObject(object: Object3D): void; fromGeometry(geometry: Geometry, settings?: any): BufferGeometry; fromDirectGeometry(geometry: DirectGeometry): BufferGeometry; /** * Computes bounding box of the geometry, updating Geometry.boundingBox attribute. * Bounding boxes aren't computed by default. They need to be explicitly computed, otherwise they are null. */ computeBoundingBox(): void; /** * Computes bounding sphere of the geometry, updating Geometry.boundingSphere attribute. * Bounding spheres aren't' computed by default. They need to be explicitly computed, otherwise they are null. */ computeBoundingSphere(): void; /** * Computes vertex normals by averaging face normals. */ computeVertexNormals(): void; merge(geometry: BufferGeometry, offset: number): BufferGeometry; normalizeNormals(): void; toNonIndexed(): BufferGeometry; toJSON(): any; clone(): this; copy(source: BufferGeometry): this; /** * Disposes the object from memory. * You need to call this when you want the bufferGeometry removed while the application is running. */ dispose(): void; /** * @deprecated Use {@link BufferGeometry#groups .groups} instead. */ drawcalls: any; /** * @deprecated Use {@link BufferGeometry#groups .groups} instead. */ offsets: any; /** * @deprecated Use {@link BufferGeometry#setIndex .setIndex()} instead. */ addIndex(index: any): void; /** * @deprecated Use {@link BufferGeometry#addGroup .addGroup()} instead. */ addDrawCall(start: any, count: any, indexOffset?: any): void; /** * @deprecated Use {@link BufferGeometry#clearGroups .clearGroups()} instead. */ clearDrawCalls(): void; addAttribute(name: any, array: any, itemSize: any): any; }