@itwin/core-frontend
Version:
iTwin.js frontend components
108 lines • 4.63 kB
TypeScript
/** @packageDocumentation
* @module Rendering
*/
import { IndexedPolyface, Point3d, Polyface, PolyfaceVisitor, Range3d } from "@itwin/core-geometry";
import { Feature, TextureMapping } from "@itwin/core-common";
import { DisplayParams } from "./DisplayParams";
import { Triangle, TriangleSet } from "./Primitives";
import { StrokesPrimitivePointLists } from "./Strokes";
import { VertexKeyProps, VertexMap } from "./VertexKey";
import { Mesh } from "./MeshPrimitives";
type VertexKeyPropsWithIndex = VertexKeyProps & {
sourceIndex: number;
};
/** @internal */
export declare class MeshBuilder {
readonly vertexMap: VertexMap;
private _triangleSet?;
private _currentPolyface?;
readonly mesh: Mesh;
readonly tolerance: number;
readonly areaTolerance: number;
readonly tileRange: Range3d;
get currentPolyface(): MeshBuilderPolyface | undefined;
get displayParams(): DisplayParams;
set displayParams(params: DisplayParams);
/** create reference for triangleSet on demand */
get triangleSet(): TriangleSet;
private constructor();
/** create a new MeshBuilder */
static create(props: MeshBuilder.Props): MeshBuilder;
/**
* iterate through each point list of the strokes primitive and either load the point string or polyline into builder
* @param strokes lists of stroke primitive point lists to iterate
* @param isDisjoint if true add point string, else add polyline
* @param fillColor
*/
addStrokePointLists(strokes: StrokesPrimitivePointLists, isDisjoint: boolean, fillColor: number, feature: Feature | undefined): void;
/**
* add data from polyface into mesh builder
* @param polyface the indexed polyface to iterate the facets of to load each facet's triangles' vertices
* @param props the properties required for this operation
*/
addFromPolyface(polyface: IndexedPolyface, props: MeshBuilder.PolyfaceOptions, feature: Feature | undefined): void;
/**
* @param visitor the PolyfaceVisitor containing the face data to be added
* @param props the properties required for this operation:
*/
addFromPolyfaceVisitor(visitor: PolyfaceVisitor, options: MeshBuilder.PolyfaceOptions, feature: Feature | undefined): void;
createTriangleVertices(triangleIndex: number, visitor: PolyfaceVisitor, options: MeshBuilder.PolyfaceVisitorOptions, feature: Feature | undefined): VertexKeyPropsWithIndex[] | undefined;
createTriangle(triangleIndex: number, visitor: PolyfaceVisitor, options: MeshBuilder.PolyfaceVisitorOptions, feature: Feature | undefined): Triangle | undefined;
/** removed Feature for now */
addPolyline(points: Point3d[], fillColor: number, feature: Feature | undefined): void;
/** removed Feature for now */
addPointString(points: Point3d[], fillColor: number, feature: Feature | undefined): void;
beginPolyface(polyface: Polyface, options: MeshEdgeCreationOptions): void;
endPolyface(): void;
addVertex(vertex: VertexKeyProps, addToMeshOnInsert?: boolean): number;
addTriangle(triangle: Triangle): void;
}
/** @internal */
export declare namespace MeshBuilder {
interface Props extends Mesh.Props {
tolerance: number;
areaTolerance: number;
}
interface PolyfaceOptions {
includeParams: boolean;
fillColor: number;
mappedTexture?: TextureMapping;
edgeOptions: MeshEdgeCreationOptions;
}
interface PolyfaceVisitorOptions extends PolyfaceOptions {
triangleCount: number;
haveParam: boolean;
}
}
/** @internal */
export declare class MeshEdgeCreationOptions {
readonly type: MeshEdgeCreationOptions.Type;
readonly minCreaseAngle: number;
get generateAllEdges(): boolean;
get generateNoEdges(): boolean;
get generateCreaseEdges(): boolean;
/** Create edge chains for polyfaces that do not already have them. */
get createEdgeChains(): boolean;
constructor(type?: MeshEdgeCreationOptions.Type);
}
/** @internal */
export declare namespace MeshEdgeCreationOptions {
enum Type {
NoEdges = 0,
CreaseEdges = 2,
SmoothEdges = 4,
CreateChains = 8,
DefaultEdges = 2,
AllEdges = 6
}
}
/** @internal */
export declare class MeshBuilderPolyface {
readonly polyface: Polyface;
readonly edgeOptions: MeshEdgeCreationOptions;
readonly vertexIndexMap: Map<number, number>;
readonly baseTriangleIndex: number;
constructor(polyface: Polyface, edgeOptions: MeshEdgeCreationOptions, baseTriangleIndex: number);
}
export {};
//# sourceMappingURL=MeshBuilder.d.ts.map