@itwin/core-frontend
Version:
iTwin.js frontend components
162 lines • 7.27 kB
TypeScript
/** @packageDocumentation
* @module Tiles
*/
import { Id64String } from "@itwin/core-bentley";
import { Range3d, Transform } from "@itwin/core-geometry";
import { ViewFlagOverrides } from "@itwin/core-common";
import { GeoConverter } from "../GeoServices";
import { GraphicBuilder } from "../render/GraphicBuilder";
import { SceneContext } from "../ViewContext";
import { RealityTile, RealityTileLoader, RealityTileParams, Tile, TileDrawArgs, TileGeometryCollector, TileParams, TileTree, TileTreeParams } from "./internal";
/** @internal */
export declare class TraversalDetails {
queuedChildren: Tile[];
childrenSelected: boolean;
shouldSelectParent: boolean;
initialize(): void;
}
/** @internal */
export declare class TraversalChildrenDetails {
private _childDetails;
initialize(): void;
getChildDetail(index: number): TraversalDetails;
combine(parentDetails: TraversalDetails): void;
}
/** @internal */
export declare class TraversalSelectionContext {
selected: Tile[];
displayedDescendants: Tile[][];
preloadDebugBuilder?: GraphicBuilder | undefined;
private _maxSelectionCount?;
preloaded: Set<RealityTile>;
missing: RealityTile[];
get selectionCountExceeded(): boolean;
constructor(selected: Tile[], displayedDescendants: Tile[][], preloadDebugBuilder?: GraphicBuilder | undefined, _maxSelectionCount?: number | undefined);
selectOrQueue(tile: RealityTile, args: TileDrawArgs, traversalDetails: TraversalDetails): void;
preload(tile: RealityTile, args: TileDrawArgs): void;
select(tiles: RealityTile[], args: TileDrawArgs): void;
}
/** Provides access to per-feature properties within a [[RealityTileTree]].
* A [[RealityTileTree]] may refer to a tileset in one of the [3D Tiles 1.0](https://docs.ogc.org/cs/18-053r2/18-053r2.html).
* Tiles within such tilesets may include a [batch table](https://github.com/CesiumGS/3d-tiles/tree/main/specification/TileFormats/BatchTable) describing subcomponents ("features") within the tile.
* For example, a tileset representing a building may encode each door, window, and wall as separate features.
* The batch table may additionally contain metadata in JSON format describing each feature.
*
* During tile decoding, iTwin.js assigns unique, transient [Id64String]($bentley)s to each unique feature within the tileset.
* When interacting with tileset features (e.g., via a [[SelectionSet]] or [[HitDetail]]), the features are identified by these transient Ids.
* The tile tree's BatchTableProperties maintains the mapping between the transient Ids and the per-feature properties.
*
* The following example illustrates one way to obtain the properties of a specific feature within a reality model's batch table:
* ```ts
* [[include:GetBatchTableFeatureProperties]]
* ```
*
* @see [[RealityTileTree.batchTableProperties]] to obtain the batch table properties for a TileTree.
* @beta
*/
export interface BatchTableProperties {
/** Obtain the JSON properties associated with the specified transient Id.
* @param id The transient Id mapped to the feature of interest.
* @returns A corresponding JSON object representing the feature's properties, or `undefined` if no such properties exist.
* @note Treat the JSON properties as read-only - do not modify them.
*/
getFeatureProperties(id: Id64String): Record<string, any> | undefined;
/** Obtain an iterator over all of the features in the batch table and their properties. */
entries(): Iterable<{
id: Id64String;
properties: Record<string, any>;
}>;
}
/** @internal */
export interface RealityTileTreeParams extends TileTreeParams {
readonly loader: RealityTileLoader;
readonly yAxisUp?: boolean;
readonly rootTile: RealityTileParams;
readonly rootToEcef?: Transform;
readonly gcsConverterAvailable: boolean;
readonly baseUrl?: string;
readonly reprojectGeometry?: boolean;
}
/** Base class for a [[TileTree]] representing a reality model (e.g., a point cloud or photogrammetry mesh) or 3d terrain with map imagery.
* The tiles within the tree are instances of [[RealityTile]]s.
* @public
*/
export declare class RealityTileTree extends TileTree {
/** @internal */
traversalChildrenByDepth: TraversalChildrenDetails[];
/** @internal */
readonly loader: RealityTileLoader;
/** @internal */
readonly yAxisUp: boolean;
/** @internal */
cartesianRange: Range3d;
/** @internal */
cartesianTransitionDistance: number;
/** @internal */
protected _gcsConverter: GeoConverter | undefined;
/** @internal */
protected _rootTile: RealityTile;
/** @internal */
protected _rootToEcef?: Transform;
/** @internal */
protected _ecefToDb?: Transform;
/** @internal */
readonly baseUrl?: string;
/** If set to true, tile geometry will be reprojected using the tile's reprojection transform when geometry is collected.
* @internal */
reprojectGeometry?: boolean;
/** @internal */
constructor(params: RealityTileTreeParams);
/** The mapping of per-feature JSON properties from this tile tree's batch table, if one is defined.
* @beta
*/
get batchTableProperties(): BatchTableProperties | undefined;
/** @internal */
get rootTile(): RealityTile;
/** @internal */
get is3d(): boolean;
/** @internal */
get maxDepth(): number;
/** @internal */
get minDepth(): number;
/** @internal */
get isContentUnbounded(): boolean;
/** @internal */
get isTransparent(): boolean;
/** @internal */
protected _selectTiles(args: TileDrawArgs): Tile[];
/** @internal */
get viewFlagOverrides(): ViewFlagOverrides;
/** @internal */
get parentsAndChildrenExclusive(): boolean;
/** @internal */
createTile(props: TileParams): RealityTile;
/** Collect tiles from this tile tree based on the criteria implemented by `collector`.
* @internal
*/
collectTileGeometry(collector: TileGeometryCollector): void;
/** @internal */
prune(): void;
/** @internal */
draw(args: TileDrawArgs): void;
/** @internal */
protected collectClassifierGraphics(args: TileDrawArgs, selectedTiles: RealityTile[]): void;
/** @internal */
getTraversalChildren(depth: number): TraversalChildrenDetails;
/** @internal */
doReprojectChildren(tile: Tile): boolean;
/** @internal */
reprojectAndResolveChildren(parent: Tile, children: Tile[], resolve: (children: Tile[] | undefined) => void): void;
/** @internal */
getBaseRealityDepth(_sceneContext: SceneContext): number;
/** Scan the list of currently selected reality tiles, and fire the viewport's 'onMapLayerScaleRangeVisibilityChanged ' event
* if any scale range visibility change is detected for one more map-layer definition.
* @internal
*/
reportTileVisibility(_args: TileDrawArgs, _selected: RealityTile[]): void;
/** @internal */
selectRealityTiles(args: TileDrawArgs, displayedDescendants: RealityTile[][], preloadDebugBuilder?: GraphicBuilder): RealityTile[];
/** @internal */
protected logTiles(label: string, tiles: IterableIterator<Tile>): void;
}
//# sourceMappingURL=RealityTileTree.d.ts.map