@speckle/viewer
Version:
A 3d viewer for Speckle, based on threejs.
58 lines (57 loc) • 2.48 kB
TypeScript
import { Material, Object3D, BufferGeometry, BufferAttribute, Box3 } from 'three';
import { NodeRenderView } from '../../index.js';
import { type Batch, type BatchUpdateRange, GeometryType } from './Batch.js';
import { type DrawGroup } from './Batch.js';
export declare abstract class Primitive<TGeometry extends BufferGeometry = BufferGeometry, TMaterial extends Material | Material[] = Material | Material[]> extends Object3D {
geometry: TGeometry;
material: TMaterial;
visible: boolean;
}
export declare abstract class PrimitiveBatch implements Batch {
id: string;
subtreeId: string;
renderViews: NodeRenderView[];
batchMaterial: Material;
protected abstract primitive: Primitive;
protected gradientIndexBuffer: BufferAttribute;
protected needsShuffle: boolean;
abstract get geometryType(): GeometryType;
abstract get bounds(): Box3;
abstract get minDrawCalls(): number;
abstract get triCount(): number;
abstract get pointCount(): number;
abstract get lineCount(): number;
get materials(): Material[];
get groups(): DrawGroup[];
set groups(value: DrawGroup[]);
get renderObject(): Object3D;
get drawCalls(): number;
get vertCount(): number;
getCount(): number;
setBatchMaterial(material: Material): void;
onUpdate(): void;
setVisibleRange(ranges: BatchUpdateRange[]): void;
getVisibleRange(): BatchUpdateRange;
getOpaque(): BatchUpdateRange;
getDepth(): BatchUpdateRange;
getTransparent(): BatchUpdateRange;
getStencil(): BatchUpdateRange;
setBatchBuffers(ranges: BatchUpdateRange[]): void;
protected cleanMaterials(): void;
protected abstract getCurrentIndexBuffer(): BufferAttribute;
protected abstract getNextIndexBuffer(): BufferAttribute;
protected abstract shuffleMaterialOrder(a: DrawGroup, b: DrawGroup): number;
private shuffleDrawGroups;
protected abstract updateGradientIndexBufferData(start: number, end: number, value: number): {
minIndex: number;
maxIndex: number;
};
protected updateGradientIndexBuffer(rangeMin?: number, rangeMax?: number): void;
abstract setDrawRanges(ranges: BatchUpdateRange[]): void;
resetDrawRanges(): void;
abstract buildBatch(): Promise<void>;
abstract getRenderView(index: number): NodeRenderView | null;
abstract getMaterialAtIndex(index: number): Material | null;
getMaterial(rv: NodeRenderView): Material | null;
purge(): void;
}