@itwin/core-frontend 5.1.0-dev.40 → 5.1.0-dev.41
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +52 -1
- package/lib/cjs/GraphicalEditingScope.d.ts +1 -1
- package/lib/cjs/GraphicalEditingScope.d.ts.map +1 -1
- package/lib/cjs/GraphicalEditingScope.js +1 -1
- package/lib/cjs/GraphicalEditingScope.js.map +1 -1
- package/lib/cjs/HitDetail.d.ts +1 -1
- package/lib/cjs/HitDetail.d.ts.map +1 -1
- package/lib/cjs/HitDetail.js.map +1 -1
- package/lib/cjs/IModelApp.d.ts +3 -3
- package/lib/cjs/IModelApp.d.ts.map +1 -1
- package/lib/cjs/IModelApp.js.map +1 -1
- package/lib/cjs/IModelConnection.d.ts +6 -6
- package/lib/cjs/IModelConnection.js +6 -6
- package/lib/cjs/IModelConnection.js.map +1 -1
- package/lib/cjs/IpcApp.d.ts +1 -1
- package/lib/cjs/IpcApp.js +1 -1
- package/lib/cjs/IpcApp.js.map +1 -1
- package/lib/cjs/SelectionSet.d.ts +7 -7
- package/lib/cjs/SelectionSet.js +3 -3
- package/lib/cjs/SelectionSet.js.map +1 -1
- package/lib/cjs/ViewState.d.ts +1 -1
- package/lib/cjs/ViewState.js +1 -1
- package/lib/cjs/ViewState.js.map +1 -1
- package/lib/cjs/Viewport.d.ts +4 -4
- package/lib/cjs/Viewport.d.ts.map +1 -1
- package/lib/cjs/Viewport.js +3 -3
- package/lib/cjs/Viewport.js.map +1 -1
- package/lib/cjs/internal/render/webgl/AtmosphereUniforms.d.ts +1 -1
- package/lib/cjs/internal/render/webgl/AtmosphereUniforms.d.ts.map +1 -1
- package/lib/cjs/internal/render/webgl/AtmosphereUniforms.js +1 -1
- package/lib/cjs/internal/render/webgl/AtmosphereUniforms.js.map +1 -1
- package/lib/cjs/internal/render/webgl/AttributeBuffers.d.ts +2 -2
- package/lib/cjs/internal/render/webgl/AttributeBuffers.d.ts.map +1 -1
- package/lib/cjs/internal/render/webgl/AttributeBuffers.js +2 -2
- package/lib/cjs/internal/render/webgl/AttributeBuffers.js.map +1 -1
- package/lib/cjs/internal/render/webgl/ClippingProgram.d.ts +1 -1
- package/lib/cjs/internal/render/webgl/ClippingProgram.d.ts.map +1 -1
- package/lib/cjs/internal/render/webgl/ClippingProgram.js +1 -1
- package/lib/cjs/internal/render/webgl/ClippingProgram.js.map +1 -1
- package/lib/cjs/internal/render/webgl/ShaderProgram.d.ts +2 -2
- package/lib/cjs/internal/render/webgl/ShaderProgram.d.ts.map +1 -1
- package/lib/cjs/internal/render/webgl/ShaderProgram.js +2 -2
- package/lib/cjs/internal/render/webgl/ShaderProgram.js.map +1 -1
- package/lib/cjs/internal/render/webgl/Technique.d.ts +3 -3
- package/lib/cjs/internal/render/webgl/Technique.d.ts.map +1 -1
- package/lib/cjs/internal/render/webgl/Technique.js +3 -3
- package/lib/cjs/internal/render/webgl/Technique.js.map +1 -1
- package/lib/cjs/internal/tile/RealityModelTileTree.d.ts +1 -1
- package/lib/cjs/internal/tile/RealityModelTileTree.d.ts.map +1 -1
- package/lib/cjs/internal/tile/RealityModelTileTree.js +1 -1
- package/lib/cjs/internal/tile/RealityModelTileTree.js.map +1 -1
- package/lib/cjs/internal/tile/map/ImageryProviders/ArcGISMapLayerImageryProvider.d.ts +1 -1
- package/lib/cjs/internal/tile/map/ImageryProviders/ArcGISMapLayerImageryProvider.d.ts.map +1 -1
- package/lib/cjs/internal/tile/map/ImageryProviders/ArcGISMapLayerImageryProvider.js +1 -1
- package/lib/cjs/internal/tile/map/ImageryProviders/ArcGISMapLayerImageryProvider.js.map +1 -1
- package/lib/cjs/internal/tile/map/ImageryProviders/AzureMapsLayerImageryProvider.d.ts +1 -1
- package/lib/cjs/internal/tile/map/ImageryProviders/AzureMapsLayerImageryProvider.d.ts.map +1 -1
- package/lib/cjs/internal/tile/map/ImageryProviders/AzureMapsLayerImageryProvider.js +1 -1
- package/lib/cjs/internal/tile/map/ImageryProviders/AzureMapsLayerImageryProvider.js.map +1 -1
- package/lib/cjs/internal/tile/map/ImageryProviders/BingImageryProvider.d.ts +1 -1
- package/lib/cjs/internal/tile/map/ImageryProviders/BingImageryProvider.d.ts.map +1 -1
- package/lib/cjs/internal/tile/map/ImageryProviders/BingImageryProvider.js +1 -1
- package/lib/cjs/internal/tile/map/ImageryProviders/BingImageryProvider.js.map +1 -1
- package/lib/cjs/internal/tile/map/ImageryProviders/MapBoxLayerImageryProvider.d.ts +1 -1
- package/lib/cjs/internal/tile/map/ImageryProviders/MapBoxLayerImageryProvider.d.ts.map +1 -1
- package/lib/cjs/internal/tile/map/ImageryProviders/MapBoxLayerImageryProvider.js +1 -1
- package/lib/cjs/internal/tile/map/ImageryProviders/MapBoxLayerImageryProvider.js.map +1 -1
- package/lib/cjs/properties/AngleDescription.d.ts +1 -1
- package/lib/cjs/properties/AngleDescription.js +1 -1
- package/lib/cjs/properties/AngleDescription.js.map +1 -1
- package/lib/cjs/properties/LengthDescription.d.ts +3 -3
- package/lib/cjs/properties/LengthDescription.js +3 -3
- package/lib/cjs/properties/LengthDescription.js.map +1 -1
- package/lib/cjs/render/Decorations.d.ts +1 -1
- package/lib/cjs/render/Decorations.d.ts.map +1 -1
- package/lib/cjs/render/Decorations.js +1 -1
- package/lib/cjs/render/Decorations.js.map +1 -1
- package/lib/cjs/render/GraphicBranch.d.ts +1 -1
- package/lib/cjs/render/GraphicBranch.d.ts.map +1 -1
- package/lib/cjs/render/GraphicBranch.js +1 -1
- package/lib/cjs/render/GraphicBranch.js.map +1 -1
- package/lib/cjs/render/RenderGraphic.d.ts +1 -1
- package/lib/cjs/render/RenderGraphic.d.ts.map +1 -1
- package/lib/cjs/render/RenderGraphic.js.map +1 -1
- package/lib/cjs/render/RenderSystem.d.ts +2 -2
- package/lib/cjs/render/RenderSystem.d.ts.map +1 -1
- package/lib/cjs/render/RenderSystem.js.map +1 -1
- package/lib/cjs/render/ScreenSpaceEffectBuilder.d.ts +1 -1
- package/lib/cjs/render/ScreenSpaceEffectBuilder.js.map +1 -1
- package/lib/cjs/request/Request.d.ts +2 -2
- package/lib/cjs/request/Request.js.map +1 -1
- package/lib/cjs/tile/Tile.d.ts +1 -1
- package/lib/cjs/tile/Tile.d.ts.map +1 -1
- package/lib/cjs/tile/Tile.js +1 -1
- package/lib/cjs/tile/Tile.js.map +1 -1
- package/lib/cjs/tile/TileTree.d.ts +1 -1
- package/lib/cjs/tile/TileTree.d.ts.map +1 -1
- package/lib/cjs/tile/TileTree.js +1 -1
- package/lib/cjs/tile/TileTree.js.map +1 -1
- package/lib/cjs/tile/TileTreeReference.d.ts +1 -1
- package/lib/cjs/tile/TileTreeReference.d.ts.map +1 -1
- package/lib/cjs/tile/TileTreeReference.js +1 -1
- package/lib/cjs/tile/TileTreeReference.js.map +1 -1
- package/lib/cjs/tile/map/CesiumTerrainProvider.js +1 -1
- package/lib/cjs/tile/map/CesiumTerrainProvider.js.map +1 -1
- package/lib/cjs/tile/map/ImageryTileTree.d.ts +2 -2
- package/lib/cjs/tile/map/ImageryTileTree.d.ts.map +1 -1
- package/lib/cjs/tile/map/ImageryTileTree.js +2 -2
- package/lib/cjs/tile/map/ImageryTileTree.js.map +1 -1
- package/lib/cjs/tile/map/MapLayerImageryProvider.d.ts +1 -1
- package/lib/cjs/tile/map/MapLayerImageryProvider.d.ts.map +1 -1
- package/lib/cjs/tile/map/MapLayerImageryProvider.js +1 -1
- package/lib/cjs/tile/map/MapLayerImageryProvider.js.map +1 -1
- package/lib/cjs/tile/map/MapTileTree.d.ts +1 -1
- package/lib/cjs/tile/map/MapTileTree.d.ts.map +1 -1
- package/lib/cjs/tile/map/MapTileTree.js +1 -1
- package/lib/cjs/tile/map/MapTileTree.js.map +1 -1
- package/lib/cjs/tile/map/TerrainMeshProvider.d.ts +1 -1
- package/lib/cjs/tile/map/TerrainMeshProvider.d.ts.map +1 -1
- package/lib/cjs/tile/map/TerrainMeshProvider.js +1 -1
- package/lib/cjs/tile/map/TerrainMeshProvider.js.map +1 -1
- package/lib/esm/GraphicalEditingScope.d.ts +1 -1
- package/lib/esm/GraphicalEditingScope.d.ts.map +1 -1
- package/lib/esm/GraphicalEditingScope.js +1 -1
- package/lib/esm/GraphicalEditingScope.js.map +1 -1
- package/lib/esm/HitDetail.d.ts +1 -1
- package/lib/esm/HitDetail.d.ts.map +1 -1
- package/lib/esm/HitDetail.js.map +1 -1
- package/lib/esm/IModelApp.d.ts +3 -3
- package/lib/esm/IModelApp.d.ts.map +1 -1
- package/lib/esm/IModelApp.js.map +1 -1
- package/lib/esm/IModelConnection.d.ts +6 -6
- package/lib/esm/IModelConnection.js +6 -6
- package/lib/esm/IModelConnection.js.map +1 -1
- package/lib/esm/IpcApp.d.ts +1 -1
- package/lib/esm/IpcApp.js +1 -1
- package/lib/esm/IpcApp.js.map +1 -1
- package/lib/esm/SelectionSet.d.ts +7 -7
- package/lib/esm/SelectionSet.js +3 -3
- package/lib/esm/SelectionSet.js.map +1 -1
- package/lib/esm/ViewState.d.ts +1 -1
- package/lib/esm/ViewState.js +1 -1
- package/lib/esm/ViewState.js.map +1 -1
- package/lib/esm/Viewport.d.ts +4 -4
- package/lib/esm/Viewport.d.ts.map +1 -1
- package/lib/esm/Viewport.js +3 -3
- package/lib/esm/Viewport.js.map +1 -1
- package/lib/esm/internal/render/webgl/AtmosphereUniforms.d.ts +1 -1
- package/lib/esm/internal/render/webgl/AtmosphereUniforms.d.ts.map +1 -1
- package/lib/esm/internal/render/webgl/AtmosphereUniforms.js +1 -1
- package/lib/esm/internal/render/webgl/AtmosphereUniforms.js.map +1 -1
- package/lib/esm/internal/render/webgl/AttributeBuffers.d.ts +2 -2
- package/lib/esm/internal/render/webgl/AttributeBuffers.d.ts.map +1 -1
- package/lib/esm/internal/render/webgl/AttributeBuffers.js +2 -2
- package/lib/esm/internal/render/webgl/AttributeBuffers.js.map +1 -1
- package/lib/esm/internal/render/webgl/ClippingProgram.d.ts +1 -1
- package/lib/esm/internal/render/webgl/ClippingProgram.d.ts.map +1 -1
- package/lib/esm/internal/render/webgl/ClippingProgram.js +1 -1
- package/lib/esm/internal/render/webgl/ClippingProgram.js.map +1 -1
- package/lib/esm/internal/render/webgl/ShaderProgram.d.ts +2 -2
- package/lib/esm/internal/render/webgl/ShaderProgram.d.ts.map +1 -1
- package/lib/esm/internal/render/webgl/ShaderProgram.js +2 -2
- package/lib/esm/internal/render/webgl/ShaderProgram.js.map +1 -1
- package/lib/esm/internal/render/webgl/Technique.d.ts +3 -3
- package/lib/esm/internal/render/webgl/Technique.d.ts.map +1 -1
- package/lib/esm/internal/render/webgl/Technique.js +3 -3
- package/lib/esm/internal/render/webgl/Technique.js.map +1 -1
- package/lib/esm/internal/tile/RealityModelTileTree.d.ts +1 -1
- package/lib/esm/internal/tile/RealityModelTileTree.d.ts.map +1 -1
- package/lib/esm/internal/tile/RealityModelTileTree.js +1 -1
- package/lib/esm/internal/tile/RealityModelTileTree.js.map +1 -1
- package/lib/esm/internal/tile/map/ImageryProviders/ArcGISMapLayerImageryProvider.d.ts +1 -1
- package/lib/esm/internal/tile/map/ImageryProviders/ArcGISMapLayerImageryProvider.d.ts.map +1 -1
- package/lib/esm/internal/tile/map/ImageryProviders/ArcGISMapLayerImageryProvider.js +1 -1
- package/lib/esm/internal/tile/map/ImageryProviders/ArcGISMapLayerImageryProvider.js.map +1 -1
- package/lib/esm/internal/tile/map/ImageryProviders/AzureMapsLayerImageryProvider.d.ts +1 -1
- package/lib/esm/internal/tile/map/ImageryProviders/AzureMapsLayerImageryProvider.d.ts.map +1 -1
- package/lib/esm/internal/tile/map/ImageryProviders/AzureMapsLayerImageryProvider.js +1 -1
- package/lib/esm/internal/tile/map/ImageryProviders/AzureMapsLayerImageryProvider.js.map +1 -1
- package/lib/esm/internal/tile/map/ImageryProviders/BingImageryProvider.d.ts +1 -1
- package/lib/esm/internal/tile/map/ImageryProviders/BingImageryProvider.d.ts.map +1 -1
- package/lib/esm/internal/tile/map/ImageryProviders/BingImageryProvider.js +1 -1
- package/lib/esm/internal/tile/map/ImageryProviders/BingImageryProvider.js.map +1 -1
- package/lib/esm/internal/tile/map/ImageryProviders/MapBoxLayerImageryProvider.d.ts +1 -1
- package/lib/esm/internal/tile/map/ImageryProviders/MapBoxLayerImageryProvider.d.ts.map +1 -1
- package/lib/esm/internal/tile/map/ImageryProviders/MapBoxLayerImageryProvider.js +1 -1
- package/lib/esm/internal/tile/map/ImageryProviders/MapBoxLayerImageryProvider.js.map +1 -1
- package/lib/esm/properties/AngleDescription.d.ts +1 -1
- package/lib/esm/properties/AngleDescription.js +1 -1
- package/lib/esm/properties/AngleDescription.js.map +1 -1
- package/lib/esm/properties/LengthDescription.d.ts +3 -3
- package/lib/esm/properties/LengthDescription.js +3 -3
- package/lib/esm/properties/LengthDescription.js.map +1 -1
- package/lib/esm/render/Decorations.d.ts +1 -1
- package/lib/esm/render/Decorations.d.ts.map +1 -1
- package/lib/esm/render/Decorations.js +1 -1
- package/lib/esm/render/Decorations.js.map +1 -1
- package/lib/esm/render/GraphicBranch.d.ts +1 -1
- package/lib/esm/render/GraphicBranch.d.ts.map +1 -1
- package/lib/esm/render/GraphicBranch.js +1 -1
- package/lib/esm/render/GraphicBranch.js.map +1 -1
- package/lib/esm/render/RenderGraphic.d.ts +1 -1
- package/lib/esm/render/RenderGraphic.d.ts.map +1 -1
- package/lib/esm/render/RenderGraphic.js.map +1 -1
- package/lib/esm/render/RenderSystem.d.ts +2 -2
- package/lib/esm/render/RenderSystem.d.ts.map +1 -1
- package/lib/esm/render/RenderSystem.js.map +1 -1
- package/lib/esm/render/ScreenSpaceEffectBuilder.d.ts +1 -1
- package/lib/esm/render/ScreenSpaceEffectBuilder.js.map +1 -1
- package/lib/esm/request/Request.d.ts +2 -2
- package/lib/esm/request/Request.js.map +1 -1
- package/lib/esm/tile/Tile.d.ts +1 -1
- package/lib/esm/tile/Tile.d.ts.map +1 -1
- package/lib/esm/tile/Tile.js +1 -1
- package/lib/esm/tile/Tile.js.map +1 -1
- package/lib/esm/tile/TileTree.d.ts +1 -1
- package/lib/esm/tile/TileTree.d.ts.map +1 -1
- package/lib/esm/tile/TileTree.js +1 -1
- package/lib/esm/tile/TileTree.js.map +1 -1
- package/lib/esm/tile/TileTreeReference.d.ts +1 -1
- package/lib/esm/tile/TileTreeReference.d.ts.map +1 -1
- package/lib/esm/tile/TileTreeReference.js +1 -1
- package/lib/esm/tile/TileTreeReference.js.map +1 -1
- package/lib/esm/tile/map/CesiumTerrainProvider.js +1 -1
- package/lib/esm/tile/map/CesiumTerrainProvider.js.map +1 -1
- package/lib/esm/tile/map/ImageryTileTree.d.ts +2 -2
- package/lib/esm/tile/map/ImageryTileTree.d.ts.map +1 -1
- package/lib/esm/tile/map/ImageryTileTree.js +2 -2
- package/lib/esm/tile/map/ImageryTileTree.js.map +1 -1
- package/lib/esm/tile/map/MapLayerImageryProvider.d.ts +1 -1
- package/lib/esm/tile/map/MapLayerImageryProvider.d.ts.map +1 -1
- package/lib/esm/tile/map/MapLayerImageryProvider.js +1 -1
- package/lib/esm/tile/map/MapLayerImageryProvider.js.map +1 -1
- package/lib/esm/tile/map/MapTileTree.d.ts +1 -1
- package/lib/esm/tile/map/MapTileTree.d.ts.map +1 -1
- package/lib/esm/tile/map/MapTileTree.js +1 -1
- package/lib/esm/tile/map/MapTileTree.js.map +1 -1
- package/lib/esm/tile/map/TerrainMeshProvider.d.ts +1 -1
- package/lib/esm/tile/map/TerrainMeshProvider.d.ts.map +1 -1
- package/lib/esm/tile/map/TerrainMeshProvider.js +1 -1
- package/lib/esm/tile/map/TerrainMeshProvider.js.map +1 -1
- package/package.json +20 -20
package/lib/esm/tile/Tile.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Tile.js","sourceRoot":"","sources":["../../../src/tile/Tile.ts"],"names":[],"mappings":"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","sourcesContent":["/*---------------------------------------------------------------------------------------------\n* Copyright (c) Bentley Systems, Incorporated. All rights reserved.\n* See LICENSE.md in the project root for license terms and full copyright notice.\n*--------------------------------------------------------------------------------------------*/\n/** @packageDocumentation\n * @module Tiles\n */\n\nimport { assert, dispose } from \"@itwin/core-bentley\";\nimport { Arc3d, ClipPlaneContainment, Matrix4d, Point2d, Point3d, Point4d, Range3d, Transform, Vector3d } from \"@itwin/core-geometry\";\nimport { BoundingSphere, ColorDef, ElementAlignedBox3d, Frustum, FrustumPlanes } from \"@itwin/core-common\";\nimport { IModelApp } from \"../IModelApp\";\nimport { IModelConnection } from \"../IModelConnection\";\nimport { GraphicBuilder } from \"../render/GraphicBuilder\";\nimport { RenderGraphic } from \"../render/RenderGraphic\";\nimport { RenderMemory } from \"../render/RenderMemory\";\nimport { RenderSystem } from \"../render/RenderSystem\";\nimport { SceneContext } from \"../ViewContext\";\nimport { Viewport } from \"../Viewport\";\nimport {\n LRUTileListNode, TileContent, TileDrawArgs, TileParams, TileRequest, TileRequestChannel, TileTree, TileTreeLoadStatus, TileUsageMarker, TileUser, TileUserIdSet,\n} from \"./internal\";\n\n// cSpell:ignore undisplayable bitfield\n\nconst scratchRange2d = [new Point2d(), new Point2d(), new Point2d(), new Point2d()];\n\n/** @internal */\nexport function addRangeGraphic(builder: GraphicBuilder, range: Range3d, is2d: boolean): void {\n if (!is2d) {\n builder.addRangeBox(range);\n return;\n }\n\n // 3d box is useless in 2d and will be clipped by near/far planes anyway\n const pts = scratchRange2d;\n pts[0].set(range.low.x, range.low.y);\n pts[1].set(range.high.x, range.low.y);\n pts[2].set(range.high.x, range.high.y);\n pts[3].set(range.low.x, range.high.y);\n builder.addLineString2d(pts, 0);\n}\n\nconst scratchWorldFrustum = new Frustum();\nconst scratchRootFrustum = new Frustum();\nconst scratchWorldSphere = new BoundingSphere();\nconst scratchPoint4d = Point4d.createZero();\nconst scratchFrustum = new Frustum();\n\n/** A 3d tile within a [[TileTree]].\n *\n * A tile represents the contents of some sub-volume of the tile tree's volume. It may produce graphics representing those contents, or may have no graphics.\n * A tile can have child tiles that further sub-divide its own volume, providing higher-resolution representations of its contents. A tile that has no children is\n * referred to as a \"leaf\" of the tile tree. A non-leaf tile's children are produced when they are needed, and discarded when no longer needed.\n * A tile's contents can be discarded at any time by [[TileAdmin]] when GPU memory needs to be reclaimed; or when the Tile itself is discarded via\n * [[Tile.dispose]].\n *\n * Several public [[Tile]] methods carry a warning that they should **not** be overridden by subclasses; typically a protected method exists that can be overridden instead.\n * For example, [[loadChildren]] should not be overridden, but it calls [[_loadChildren]], which must be overridden because it is abstract.\n * @public\n * @extensions\n */\nexport abstract class Tile {\n private _state: TileState = TileState.NotReady;\n private _children: Tile[] | undefined;\n private _rangeGraphic?: RenderGraphic;\n private _rangeGraphicType: TileBoundingBoxes = TileBoundingBoxes.None;\n /** This tile's renderable content. */\n protected _graphic?: RenderGraphic;\n /** True if this tile ever had graphics loaded. Used to determine when a tile's graphics were later freed to conserve memory. */\n protected _hadGraphics = false;\n /** Uniquely identifies this tile's content in the context of its tree. */\n protected _contentId: string;\n /** The current loading state of this tile's children. Child tiles are loaded on-demand, potentially asynchronously. */\n protected _childrenLoadStatus: TileTreeLoadStatus;\n /** @internal */\n protected _request?: TileRequest;\n /** @internal */\n protected _isLeaf: boolean;\n /** A volume no larger than this tile's `range`, and optionally more tightly encompassing its contents, used for more accurate culling.\n * [[contentRange]] uses this range if defined; otherwise it uses [[range]].\n */\n protected _contentRange?: ElementAlignedBox3d;\n /** The maximum size in pixels this tile can be drawn. If the size of the tile on screen exceeds this maximum, a higher-resolution tile should be drawn in its place. */\n protected _maximumSize: number;\n /** The [[TileTree]] to which this tile belongs. */\n public readonly tree: TileTree;\n /** The volume of space occupied by this tile. Its children are guaranteed to also be contained within this volume. */\n public readonly range: ElementAlignedBox3d;\n /** The parent of this tile, or undefined if it is the [[TileTree]]'s root tile. */\n public readonly parent: Tile | undefined;\n /** The depth of this tile within its [[TileTree]]. The root tile has a depth of zero. */\n public readonly depth: number;\n /** The bounding sphere for this tile. */\n public readonly boundingSphere: BoundingSphere;\n /** The point at the center of this tile's volume. */\n public get center(): Point3d { return this.boundingSphere.center; }\n /** The radius of a sphere fully encompassing this tile's volume - used for culling. */\n public get radius(): number { return this.boundingSphere.radius; }\n /** Tracks the usage of this tile. After a period of disuse, the tile may be [[prune]]d to free up memory. */\n public readonly usageMarker = new TileUsageMarker();\n\n /** Exclusively for use by LRUTileList. @internal */\n public previous?: LRUTileListNode;\n /** Exclusively for use by LRUTileList. @internal */\n public next?: LRUTileListNode;\n /** Exclusively for use by LRUTileList. @internal */\n public bytesUsed = 0;\n /** Exclusively for use by LRUTileList. @internal */\n public tileUserIds?: TileUserIdSet;\n\n /** Load this tile's children, possibly asynchronously. Pass them to `resolve`, or an error to `reject`. */\n protected abstract _loadChildren(resolve: (children: Tile[] | undefined) => void, reject: (error: Error) => void): void;\n\n /** Return the channel via which this tile's content should be requested.\n * @note The channel *must* be registered with `IModelApp.tileAdmin.channels`.\n * @see [[TileRequestChannels.getForHttp]] to create a channel that requests content over HTTP.\n * @see [[TileAdmin.channels]].\n * @public\n */\n public abstract get channel(): TileRequestChannel;\n\n /** Return a Promise that resolves to the raw data representing this tile's content. */\n public abstract requestContent(isCanceled: () => boolean): Promise<TileRequest.Response>;\n\n /** Return a Promise that deserializes this tile's content from raw format produced by [[requestContent]]. */\n public abstract readContent(data: TileRequest.ResponseData, system: RenderSystem, isCanceled?: () => boolean): Promise<TileContent>;\n\n /** Constructor */\n protected constructor(params: TileParams, tree: TileTree) {\n this.tree = tree;\n this.parent = params.parent;\n this.depth = undefined !== this.parent ? this.parent.depth + 1 : 0;\n this.range = params.range;\n this._maximumSize = params.maximumSize;\n this._contentRange = params.contentRange;\n this._contentId = params.contentId;\n\n const center = this.range.low.interpolate(0.5, this.range.high);\n const radius = 0.5 * this.range.low.distance(this.range.high);\n this.boundingSphere = new BoundingSphere(center, radius);\n\n if (params.maximumSize <= 0)\n this.setIsReady();\n\n this._isLeaf = true === params.isLeaf;\n this._childrenLoadStatus = (undefined === tree.maxDepth || this.depth < tree.maxDepth) ? TileTreeLoadStatus.NotLoaded : TileTreeLoadStatus.Loaded;\n }\n\n /** Free memory-consuming resources owned by this tile to reduce memory pressure.\n * By default, this calls [[disposeContents]]. Problematic subclasses (MapTile, ImageryMapTile) may opt out for now by overriding this method to do nothing.\n * That option may be removed in the future.\n * @alpha\n */\n public freeMemory(): void {\n this.disposeContents();\n }\n\n /** Dispose of resources held by this tile. */\n public disposeContents(): void {\n this._state = TileState.NotReady;\n this._graphic = dispose(this._graphic);\n this._rangeGraphic = dispose(this._rangeGraphic);\n this._rangeGraphicType = TileBoundingBoxes.None;\n IModelApp.tileAdmin.onTileContentDisposed(this);\n }\n\n /** Dispose of resources held by this tile and all of its children, marking it and all of its children as \"abandoned\". */\n public [Symbol.dispose](): void {\n this.disposeContents();\n this._state = TileState.Abandoned;\n this.disposeChildren();\n }\n\n /** @deprecated in 5.0 Use [Symbol.dispose] instead. */\n public dispose() {\n this[Symbol.dispose]();\n }\n\n /** This tile's child tiles, if they exist and are loaded. The children are fully contained within this tile's volume and provide higher-resolution graphics than this tile.\n * @see [[loadChildren]]\n */\n public get children(): Tile[] | undefined { return this._children; }\n /** The [[IModelConnection]] to which this tile belongs. */\n public get iModel(): IModelConnection { return this.tree.iModel; }\n /** Uniquely identifies this tile's content. */\n public get contentId(): string { return this._contentId; }\n\n /** True if this tile's content is currently being loaded. */\n public get isLoading(): boolean { return TileLoadStatus.Loading === this.loadStatus; }\n /** True if a request for this tile's content has been enqueued. */\n public get isQueued(): boolean { return TileLoadStatus.Queued === this.loadStatus; }\n /** True if an attempt to load this tile's content failed. */\n public get isNotFound(): boolean { return TileLoadStatus.NotFound === this.loadStatus; }\n /** True if this tile's content has been loaded and is ready to be drawn. */\n public get isReady(): boolean { return TileLoadStatus.Ready === this.loadStatus; }\n\n /** Indicates the tile should not be selected for display because it is out of the range of LODs supported by the tile provider.\n * @see [[ImageryMapTile.isOutOfLodRange]].\n * @alpha\n */\n public get isOutOfLodRange(): boolean { return false; }\n\n /** @public */\n public setNotFound(): void {\n this._state = TileState.NotFound;\n }\n\n /** @public */\n public setIsReady(): void {\n if (this.hasGraphics)\n this._hadGraphics = true;\n\n this._state = TileState.Ready;\n IModelApp.tileAdmin.onTileContentLoaded(this);\n }\n\n /** @public */\n public setLeaf(): void {\n // Don't potentially re-request the children later.\n this.disposeChildren();\n this._isLeaf = true;\n this._childrenLoadStatus = TileTreeLoadStatus.Loaded;\n }\n\n /** True if this tile has no child tiles. */\n public get isLeaf(): boolean { return this._isLeaf; }\n /** @internal */\n public get isEmpty(): boolean { return this.isReady && !this.hasGraphics && this.isLeaf; }\n /** @internal */\n public get isDisplayable(): boolean { return 0 < this.maximumSize; }\n /** The maximum size in pixels this tile can be drawn. If the size of the tile on screen exceeds this maximum, a higher-resolution tile should be drawn in its place. */\n public get maximumSize(): number { return this._maximumSize; }\n /** @internal */\n public get isParentDisplayable(): boolean { return undefined !== this.parent && this.parent.isDisplayable; }\n /** @internal */\n public get isUndisplayableRootTile(): boolean { return undefined === this.parent && !this.isDisplayable; }\n\n /** @internal */\n public get request(): TileRequest | undefined { return this._request; }\n public set request(request: TileRequest | undefined) {\n assert(undefined === request || undefined === this.request);\n this._request = request;\n }\n\n /** Compute the load priority of this tile. This determines which tiles' contents are requested first.\n * @param _viewports The subset of `users` that are [[Viewport]]s - typically, these viewports want to display the tile's content.\n * @param users The [[TileUser]]s that are currently using the tile for some purpose, such as displaying its content.\n * @returns The priority.\n * @see [[TileLoadPriority]] for suggested priority values.\n */\n public computeLoadPriority(_viewports: Iterable<Viewport>, _users: Iterable<TileUser>): number {\n return this.depth;\n }\n\n /** True if this tile has graphics ready to draw. */\n public get hasGraphics(): boolean { return undefined !== this._graphic; }\n /** True if this tile has a known volume tightly encompassing its graphics. */\n public get hasContentRange(): boolean { return undefined !== this._contentRange; }\n /** A volume no larger than this tile's `range`, and optionally more tightly encompassing its contents, used for more accurate culling. */\n public get contentRange(): ElementAlignedBox3d {\n if (undefined !== this._contentRange)\n return this._contentRange;\n else if (undefined === this.parent && undefined !== this.tree.contentRange)\n return this.tree.contentRange;\n else\n return this.range;\n }\n\n /** Tile contents are loaded asynchronously on demand. This member tracks the current loading status of this tile's contents. */\n public get loadStatus(): TileLoadStatus {\n switch (this._state) {\n case TileState.NotReady: {\n if (undefined === this.request)\n return TileLoadStatus.NotLoaded;\n else if (TileRequest.State.Loading === this.request.state)\n return TileLoadStatus.Loading;\n\n assert(TileRequest.State.Completed !== this.request.state && TileRequest.State.Failed !== this.request.state); // this.request should be undefined in these cases...\n return TileLoadStatus.Queued;\n }\n case TileState.Ready: {\n assert(undefined === this.request);\n return TileLoadStatus.Ready;\n }\n case TileState.NotFound: {\n assert(undefined === this.request);\n return TileLoadStatus.NotFound;\n }\n default: {\n assert(TileState.Abandoned === this._state);\n return TileLoadStatus.Abandoned;\n }\n }\n }\n\n /** Produce the graphics that should be drawn. */\n public produceGraphics(): RenderGraphic | undefined {\n return this._graphic;\n }\n\n protected setGraphic(graphic: RenderGraphic | undefined): void {\n dispose(this._graphic);\n this._graphic = graphic;\n this.setIsReady();\n }\n\n /** Set this tile's content to the result of [[readContent]] */\n public setContent(content: TileContent): void {\n const { graphic, isLeaf, contentRange } = content;\n this.setGraphic(graphic);\n\n if (undefined !== isLeaf && isLeaf !== this._isLeaf) {\n if (isLeaf)\n this.setLeaf();\n else\n this._isLeaf = false;\n }\n\n if (undefined !== contentRange)\n this._contentRange = contentRange;\n\n this.setIsReady();\n }\n\n /** Disclose any resources owned by this tile, other than its [[RenderGraphic]].\n * @internal\n */\n protected _collectStatistics(_stats: RenderMemory.Statistics): void { }\n\n /** Disclose resources owned by this tile and (by default) all of its child tiles.\n * @note Do not override this method! Override `_collectStatistics` instead.\n * @internal\n */\n public collectStatistics(stats: RenderMemory.Statistics, includeChildren = true): void {\n if (undefined !== this._graphic)\n this._graphic.collectStatistics(stats);\n\n this._collectStatistics(stats);\n if (!includeChildren)\n return;\n\n const children = this.children;\n if (undefined !== children)\n for (const child of children)\n child.collectStatistics(stats);\n }\n\n /** If this tile's child tiles have not yet been requested, enqueue an asynchronous request to load them.\n * @note This function itself is *not* asynchronous - it immediately returns the current loading status.\n * @note Do not override this method - implement [[_loadChildren]].\n */\n protected loadChildren(): TileTreeLoadStatus {\n if (this._childrenLoadStatus !== TileTreeLoadStatus.NotLoaded)\n return this._childrenLoadStatus;\n\n this._childrenLoadStatus = TileTreeLoadStatus.Loading;\n\n this._loadChildren((children: Tile[] | undefined) => {\n this._children = children;\n this._childrenLoadStatus = TileTreeLoadStatus.Loaded;\n\n if (undefined === children || 0 === children.length)\n this._isLeaf = true;\n\n IModelApp.tileAdmin.onTileChildrenLoad.raiseEvent(this);\n }, (_error: Error) => {\n this._isLeaf = true;\n this._childrenLoadStatus = TileTreeLoadStatus.NotFound;\n\n IModelApp.tileAdmin.onTileChildrenLoad.raiseEvent(this);\n });\n\n return this._childrenLoadStatus;\n }\n\n /** Dispose of this tile's child tiles and mark them as \"not loaded\". */\n protected disposeChildren(): void {\n const children = this.children;\n if (undefined === children)\n return;\n\n for (const child of children)\n child[Symbol.dispose]();\n\n this._childrenLoadStatus = TileTreeLoadStatus.NotLoaded;\n this._children = undefined;\n }\n\n /** Returns true if this tile's bounding volume is culled by the frustum or clip volumes specified by `args`. */\n protected isRegionCulled(args: TileDrawArgs): boolean {\n return this.isCulled(this.range, args, true, this.boundingSphere);\n }\n\n /** Returns true if this tile's content bounding volume is culled by the frustum or clip volumes specified by `args`. */\n protected isContentCulled(args: TileDrawArgs): boolean {\n return this.isCulled(this.contentRange, args, false);\n }\n\n private isCulled(range: ElementAlignedBox3d, args: TileDrawArgs, testClipIntersection: boolean, sphere?: BoundingSphere) {\n const box = Frustum.fromRange(range, scratchRootFrustum);\n return this.isFrustumCulled(box, args, testClipIntersection, sphere);\n }\n\n protected isFrustumCulled(box: Frustum, args: TileDrawArgs, testClipIntersection: boolean, sphere?: BoundingSphere) {\n const worldBox = box.transformBy(args.location, scratchWorldFrustum);\n const worldSphere = sphere?.transformBy(args.location, scratchWorldSphere);\n\n // Test against frustum.\n if (FrustumPlanes.Containment.Outside === args.frustumPlanes.computeFrustumContainment(worldBox, worldSphere))\n return true;\n\n // Test against TileTree's own clip volume, if any.\n if (undefined !== args.clip && ClipPlaneContainment.StronglyOutside === args.clip.classifyPointContainment(worldBox.points))\n return true;\n\n // Test against view clip, if any (will be undefined if TileTree does not want view clip applied to it).\n if (undefined !== args.viewClip && ClipPlaneContainment.StronglyOutside === args.viewClip.classifyPointContainment(worldBox.points))\n return true;\n\n // Test against intersection clip - reject if tile doesn't intersect (used for section-cut graphics).\n if (testClipIntersection && undefined !== args.intersectionClip && ClipPlaneContainment.Ambiguous !== args.intersectionClip.classifyPointContainment(worldBox.points))\n return true;\n\n return false;\n }\n\n /** Determine the visibility of this tile according to the specified args. */\n public computeVisibility(args: TileDrawArgs): TileVisibility {\n if (this.isEmpty)\n return TileVisibility.OutsideFrustum;\n\n if (args.boundingRange && !args.boundingRange.intersectsRange(this.range))\n return TileVisibility.OutsideFrustum;\n\n // NB: We test for region culling before isDisplayable - otherwise we will never unload children of undisplayed tiles when\n // they are outside frustum\n if (this.isRegionCulled(args))\n return TileVisibility.OutsideFrustum;\n\n // some nodes are merely for structure and don't have any geometry\n if (!this.isDisplayable)\n return TileVisibility.TooCoarse;\n\n if (this.isLeaf) {\n if (this.hasContentRange && this.isContentCulled(args))\n return TileVisibility.OutsideFrustum;\n else\n return TileVisibility.Visible;\n }\n\n return this.meetsScreenSpaceError(args) ? TileVisibility.Visible : TileVisibility.TooCoarse;\n }\n\n /** Returns true if this tile is of at least high enough resolution to be displayed, per the supplied [[TileDrawArgs]]; or false if\n * a higher-resolution tile should be substituted for it.\n * This method is called by [[computeVisibility]] if the tile has passed all culling checks.\n */\n protected meetsScreenSpaceError(args: TileDrawArgs): boolean {\n const pixelSize = args.getPixelSize(this) * args.pixelSizeScaleFactor;\n const maxSize = this.maximumSize * args.tileSizeModifier;\n return pixelSize <= maxSize;\n }\n\n /** @internal */\n public extendRangeForContent(range: Range3d, matrix: Matrix4d, treeTransform: Transform, frustumPlanes?: FrustumPlanes): void {\n if (this.isEmpty || this.contentRange.isNull)\n return;\n\n const box = Frustum.fromRange(this.contentRange, scratchFrustum);\n box.transformBy(treeTransform, box);\n if (frustumPlanes !== undefined && FrustumPlanes.Containment.Outside === frustumPlanes.computeFrustumContainment(box))\n return;\n\n if (this.children === undefined) {\n for (const boxPoint of box.points) {\n const pt = matrix.multiplyPoint3d(boxPoint, 1, scratchPoint4d);\n if (pt.w > .0001)\n range.extendXYZW(pt.x, pt.y, pt.z, pt.w);\n else\n range.high.z = Math.max(1.0, range.high.z); // behind eye plane...\n }\n } else {\n for (const child of this.children)\n child.extendRangeForContent(range, matrix, treeTransform, frustumPlanes);\n }\n }\n\n /** Primarily for debugging purposes, compute the number of tiles below this one in the [[TileTree]]. */\n public countDescendants(): number {\n const children = this.children;\n if (undefined === children || 0 === children.length)\n return 0;\n\n let count = 0;\n for (const child of children)\n count += child.countDescendants();\n\n return count;\n }\n\n /** Output this tile's graphics. */\n public drawGraphics(args: TileDrawArgs): void {\n const gfx = this.produceGraphics();\n if (undefined === gfx)\n return;\n\n args.graphics.add(gfx);\n const rangeGfx = this.getRangeGraphic(args.context);\n if (undefined !== rangeGfx)\n args.graphics.add(rangeGfx);\n }\n\n /** @internal */\n protected get rangeGraphicColor(): ColorDef {\n return this.isLeaf ? ColorDef.blue : ColorDef.green;\n }\n\n /** @internal */\n public getRangeGraphic(context: SceneContext): RenderGraphic | undefined {\n const type = context.viewport.debugBoundingBoxes;\n if (type === this._rangeGraphicType)\n return this._rangeGraphic;\n\n this._rangeGraphic = dispose(this._rangeGraphic);\n this._rangeGraphicType = type;\n if (TileBoundingBoxes.None !== type) {\n const builder = context.createSceneGraphicBuilder();\n this.addRangeGraphic(builder, type);\n this._rangeGraphic = builder.finish();\n }\n\n return this._rangeGraphic;\n }\n\n /** @internal */\n protected addRangeGraphic(builder: GraphicBuilder, type: TileBoundingBoxes): void {\n if (TileBoundingBoxes.Both === type) {\n builder.setSymbology(ColorDef.blue, ColorDef.blue, 1);\n addRangeGraphic(builder, this.range, this.tree.is2d);\n\n if (this.hasContentRange) {\n builder.setSymbology(ColorDef.red, ColorDef.red, 1);\n addRangeGraphic(builder, this.contentRange, this.tree.is2d);\n }\n } else if (TileBoundingBoxes.Sphere === type) {\n builder.setSymbology(ColorDef.green, ColorDef.green, 1);\n\n const x = new Vector3d(this.radius, 0, 0);\n const y = new Vector3d(0, this.radius, 0);\n const z = new Vector3d(0, 0, this.radius);\n\n builder.addArc(Arc3d.create(this.center, x, y), false, false);\n builder.addArc(Arc3d.create(this.center, x, z), false, false);\n builder.addArc(Arc3d.create(this.center, y, z), false, false);\n } else if (TileBoundingBoxes.SolidBox === type) {\n const range = this.range;\n let color = this.rangeGraphicColor;\n builder.setSymbology(color, color, 1);\n addRangeGraphic(builder, range, this.tree.is2d);\n color = color.withTransparency(0xcf);\n builder.setSymbology(color, color, 1);\n builder.addRangeBox(range, true);\n } else {\n const color = this.rangeGraphicColor;\n builder.setSymbology(color, color, 1);\n const range = TileBoundingBoxes.Content === type ? this.contentRange : this.range;\n addRangeGraphic(builder, range, this.tree.is2d);\n }\n }\n\n /** Optional corners used to compute the screen size of the tile. These are used, e.g., by reality tiles with oriented bounding boxes to\n * produce more accurate size calculation.\n */\n public getSizeProjectionCorners(): Point3d[] | undefined { return undefined; }\n\n /** @internal */\n public clearLayers() {\n this.disposeContents();\n if (this.children)\n for (const child of this.children)\n (child).clearLayers();\n }\n}\n\n/** Describes the current status of a [[Tile]]'s content. Tile content is loaded via an asynchronous [[TileRequest]].\n * @see [[Tile.loadStatus]].\n * @public\n * @extensions\n */\nexport enum TileLoadStatus {\n /** No attempt to load the tile's content has been made, or the tile has since been unloaded. It currently has no graphics. */\n NotLoaded = 0,\n /** A request has been dispatched to load the tile's contents, and a response is pending. */\n Queued = 1,\n /** A response has been received and the tile's graphics and other data are being loaded on the frontend. */\n Loading = 2,\n /** The tile has been loaded, and if the tile is displayable it has graphics. */\n Ready = 3,\n /** A request to load the tile's contents failed. */\n NotFound = 4,\n /** The tile has been disposed. */\n Abandoned = 5,\n}\n\n/**\n * Describes the visibility of a tile based on its size and a view frustum.\n * @public\n * @extensions\n */\nexport enum TileVisibility {\n /** The tile is entirely outside of the viewing frustum. */\n OutsideFrustum,\n /** The tile's graphics are of too low a resolution for the viewing frustum. */\n TooCoarse,\n /** The tile's graphics are of appropriate resolution for the viewing frustum. */\n Visible,\n}\n\n/**\n * Loosely describes the \"importance\" of a [[Tile]]. Requests for tiles of greater \"importance\" are prioritized for loading.\n * @note A lower priority value indicates higher importance.\n * @public\n * @extensions\n */\nexport enum TileLoadPriority {\n /** Contents of geometric models that are being interactively edited. */\n Dynamic = 5,\n /** Background map tiles. */\n Map = 15,\n /** Typically, tiles generated from the contents of geometric models. */\n Primary = 20,\n /** 3d terrain tiles onto which background map imagery is draped. */\n Terrain = 10,\n /** Typically, reality models. */\n Context = 40,\n /** Supplementary tiles used to classify the contents of geometric or reality models. */\n Classifier = 50,\n}\n\n/**\n * Options for displaying tile bounding boxes for debugging purposes.\n *\n * Bounding boxes are color-coded based on refinement strategy:\n * - Blue: A leaf tile (has no child tiles).\n * - Green: An ordinary tile (sub-divides into 4 or 8 child tiles).\n * - Red: A tile which refines to a single higher-resolution child occupying the same volume.\n * @see [[Viewport.debugBoundingBoxes]]\n * @public\n * @extensions\n */\nexport enum TileBoundingBoxes {\n /** Display no bounding boxes */\n None = 0,\n /** Display boxes representing the tile's full volume. */\n Volume,\n /** Display boxes representing the range of the tile's contents, which may be tighter than (but never larger than) the tile's full volume. */\n Content,\n /** Display both volume and content boxes. */\n Both,\n /** Display boxes for direct children, where blue boxes indicate empty volumes. */\n ChildVolumes,\n /** Display bounding sphere. */\n Sphere,\n /** Display a transparent solid box representing the tile's full volume.\n * @alpha To be replaced with a separate option that applies to any of the other TileBoundingBoxes modes.\n */\n SolidBox,\n}\n\n// TileLoadStatus is computed from the combination of Tile._state and, if Tile.request is defined, Tile.request.state.\nconst enum TileState {// eslint-disable-line no-restricted-syntax\n NotReady = TileLoadStatus.NotLoaded, // Tile requires loading, but no request has yet completed.\n Ready = TileLoadStatus.Ready, // request completed successfully, or no loading was required.\n NotFound = TileLoadStatus.NotFound, // request failed.\n Abandoned = TileLoadStatus.Abandoned, // tile was abandoned.\n}\n"]}
|
|
1
|
+
{"version":3,"file":"Tile.js","sourceRoot":"","sources":["../../../src/tile/Tile.ts"],"names":[],"mappings":"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","sourcesContent":["/*---------------------------------------------------------------------------------------------\n* Copyright (c) Bentley Systems, Incorporated. All rights reserved.\n* See LICENSE.md in the project root for license terms and full copyright notice.\n*--------------------------------------------------------------------------------------------*/\n/** @packageDocumentation\n * @module Tiles\n */\n\nimport { assert, dispose } from \"@itwin/core-bentley\";\nimport { Arc3d, ClipPlaneContainment, Matrix4d, Point2d, Point3d, Point4d, Range3d, Transform, Vector3d } from \"@itwin/core-geometry\";\nimport { BoundingSphere, ColorDef, ElementAlignedBox3d, Frustum, FrustumPlanes } from \"@itwin/core-common\";\nimport { IModelApp } from \"../IModelApp\";\nimport { IModelConnection } from \"../IModelConnection\";\nimport { GraphicBuilder } from \"../render/GraphicBuilder\";\nimport { RenderGraphic } from \"../render/RenderGraphic\";\nimport { RenderMemory } from \"../render/RenderMemory\";\nimport { RenderSystem } from \"../render/RenderSystem\";\nimport { SceneContext } from \"../ViewContext\";\nimport { Viewport } from \"../Viewport\";\nimport {\n LRUTileListNode, TileContent, TileDrawArgs, TileParams, TileRequest, TileRequestChannel, TileTree, TileTreeLoadStatus, TileUsageMarker, TileUser, TileUserIdSet,\n} from \"./internal\";\n\n// cSpell:ignore undisplayable bitfield\n\nconst scratchRange2d = [new Point2d(), new Point2d(), new Point2d(), new Point2d()];\n\n/** @internal */\nexport function addRangeGraphic(builder: GraphicBuilder, range: Range3d, is2d: boolean): void {\n if (!is2d) {\n builder.addRangeBox(range);\n return;\n }\n\n // 3d box is useless in 2d and will be clipped by near/far planes anyway\n const pts = scratchRange2d;\n pts[0].set(range.low.x, range.low.y);\n pts[1].set(range.high.x, range.low.y);\n pts[2].set(range.high.x, range.high.y);\n pts[3].set(range.low.x, range.high.y);\n builder.addLineString2d(pts, 0);\n}\n\nconst scratchWorldFrustum = new Frustum();\nconst scratchRootFrustum = new Frustum();\nconst scratchWorldSphere = new BoundingSphere();\nconst scratchPoint4d = Point4d.createZero();\nconst scratchFrustum = new Frustum();\n\n/** A 3d tile within a [[TileTree]].\n *\n * A tile represents the contents of some sub-volume of the tile tree's volume. It may produce graphics representing those contents, or may have no graphics.\n * A tile can have child tiles that further sub-divide its own volume, providing higher-resolution representations of its contents. A tile that has no children is\n * referred to as a \"leaf\" of the tile tree. A non-leaf tile's children are produced when they are needed, and discarded when no longer needed.\n * A tile's contents can be discarded at any time by [[TileAdmin]] when GPU memory needs to be reclaimed; or when the Tile itself is discarded via\n * [[Tile.dispose]].\n *\n * Several public [[Tile]] methods carry a warning that they should **not** be overridden by subclasses; typically a protected method exists that can be overridden instead.\n * For example, [[loadChildren]] should not be overridden, but it calls [[_loadChildren]], which must be overridden because it is abstract.\n * @public\n * @extensions\n */\nexport abstract class Tile {\n private _state: TileState = TileState.NotReady;\n private _children: Tile[] | undefined;\n private _rangeGraphic?: RenderGraphic;\n private _rangeGraphicType: TileBoundingBoxes = TileBoundingBoxes.None;\n /** This tile's renderable content. */\n protected _graphic?: RenderGraphic;\n /** True if this tile ever had graphics loaded. Used to determine when a tile's graphics were later freed to conserve memory. */\n protected _hadGraphics = false;\n /** Uniquely identifies this tile's content in the context of its tree. */\n protected _contentId: string;\n /** The current loading state of this tile's children. Child tiles are loaded on-demand, potentially asynchronously. */\n protected _childrenLoadStatus: TileTreeLoadStatus;\n /** @internal */\n protected _request?: TileRequest;\n /** @internal */\n protected _isLeaf: boolean;\n /** A volume no larger than this tile's `range`, and optionally more tightly encompassing its contents, used for more accurate culling.\n * [[contentRange]] uses this range if defined; otherwise it uses [[range]].\n */\n protected _contentRange?: ElementAlignedBox3d;\n /** The maximum size in pixels this tile can be drawn. If the size of the tile on screen exceeds this maximum, a higher-resolution tile should be drawn in its place. */\n protected _maximumSize: number;\n /** The [[TileTree]] to which this tile belongs. */\n public readonly tree: TileTree;\n /** The volume of space occupied by this tile. Its children are guaranteed to also be contained within this volume. */\n public readonly range: ElementAlignedBox3d;\n /** The parent of this tile, or undefined if it is the [[TileTree]]'s root tile. */\n public readonly parent: Tile | undefined;\n /** The depth of this tile within its [[TileTree]]. The root tile has a depth of zero. */\n public readonly depth: number;\n /** The bounding sphere for this tile. */\n public readonly boundingSphere: BoundingSphere;\n /** The point at the center of this tile's volume. */\n public get center(): Point3d { return this.boundingSphere.center; }\n /** The radius of a sphere fully encompassing this tile's volume - used for culling. */\n public get radius(): number { return this.boundingSphere.radius; }\n /** Tracks the usage of this tile. After a period of disuse, the tile may be [[prune]]d to free up memory. */\n public readonly usageMarker = new TileUsageMarker();\n\n /** Exclusively for use by LRUTileList. @internal */\n public previous?: LRUTileListNode;\n /** Exclusively for use by LRUTileList. @internal */\n public next?: LRUTileListNode;\n /** Exclusively for use by LRUTileList. @internal */\n public bytesUsed = 0;\n /** Exclusively for use by LRUTileList. @internal */\n public tileUserIds?: TileUserIdSet;\n\n /** Load this tile's children, possibly asynchronously. Pass them to `resolve`, or an error to `reject`. */\n protected abstract _loadChildren(resolve: (children: Tile[] | undefined) => void, reject: (error: Error) => void): void;\n\n /** Return the channel via which this tile's content should be requested.\n * @note The channel *must* be registered with `IModelApp.tileAdmin.channels`.\n * @see [[TileRequestChannels.getForHttp]] to create a channel that requests content over HTTP.\n * @see [[TileAdmin.channels]].\n * @public\n */\n public abstract get channel(): TileRequestChannel;\n\n /** Return a Promise that resolves to the raw data representing this tile's content. */\n public abstract requestContent(isCanceled: () => boolean): Promise<TileRequest.Response>;\n\n /** Return a Promise that deserializes this tile's content from raw format produced by [[requestContent]]. */\n public abstract readContent(data: TileRequest.ResponseData, system: RenderSystem, isCanceled?: () => boolean): Promise<TileContent>;\n\n /** Constructor */\n protected constructor(params: TileParams, tree: TileTree) {\n this.tree = tree;\n this.parent = params.parent;\n this.depth = undefined !== this.parent ? this.parent.depth + 1 : 0;\n this.range = params.range;\n this._maximumSize = params.maximumSize;\n this._contentRange = params.contentRange;\n this._contentId = params.contentId;\n\n const center = this.range.low.interpolate(0.5, this.range.high);\n const radius = 0.5 * this.range.low.distance(this.range.high);\n this.boundingSphere = new BoundingSphere(center, radius);\n\n if (params.maximumSize <= 0)\n this.setIsReady();\n\n this._isLeaf = true === params.isLeaf;\n this._childrenLoadStatus = (undefined === tree.maxDepth || this.depth < tree.maxDepth) ? TileTreeLoadStatus.NotLoaded : TileTreeLoadStatus.Loaded;\n }\n\n /** Free memory-consuming resources owned by this tile to reduce memory pressure.\n * By default, this calls [[disposeContents]]. Problematic subclasses (MapTile, ImageryMapTile) may opt out for now by overriding this method to do nothing.\n * That option may be removed in the future.\n * @alpha\n */\n public freeMemory(): void {\n this.disposeContents();\n }\n\n /** Dispose of resources held by this tile. */\n public disposeContents(): void {\n this._state = TileState.NotReady;\n this._graphic = dispose(this._graphic);\n this._rangeGraphic = dispose(this._rangeGraphic);\n this._rangeGraphicType = TileBoundingBoxes.None;\n IModelApp.tileAdmin.onTileContentDisposed(this);\n }\n\n /** Dispose of resources held by this tile and all of its children, marking it and all of its children as \"abandoned\". */\n public [Symbol.dispose](): void {\n this.disposeContents();\n this._state = TileState.Abandoned;\n this.disposeChildren();\n }\n\n /** @deprecated in 5.0 - will not be removed until after 2026-06-13. Use [Symbol.dispose] instead. */\n public dispose() {\n this[Symbol.dispose]();\n }\n\n /** This tile's child tiles, if they exist and are loaded. The children are fully contained within this tile's volume and provide higher-resolution graphics than this tile.\n * @see [[loadChildren]]\n */\n public get children(): Tile[] | undefined { return this._children; }\n /** The [[IModelConnection]] to which this tile belongs. */\n public get iModel(): IModelConnection { return this.tree.iModel; }\n /** Uniquely identifies this tile's content. */\n public get contentId(): string { return this._contentId; }\n\n /** True if this tile's content is currently being loaded. */\n public get isLoading(): boolean { return TileLoadStatus.Loading === this.loadStatus; }\n /** True if a request for this tile's content has been enqueued. */\n public get isQueued(): boolean { return TileLoadStatus.Queued === this.loadStatus; }\n /** True if an attempt to load this tile's content failed. */\n public get isNotFound(): boolean { return TileLoadStatus.NotFound === this.loadStatus; }\n /** True if this tile's content has been loaded and is ready to be drawn. */\n public get isReady(): boolean { return TileLoadStatus.Ready === this.loadStatus; }\n\n /** Indicates the tile should not be selected for display because it is out of the range of LODs supported by the tile provider.\n * @see [[ImageryMapTile.isOutOfLodRange]].\n * @alpha\n */\n public get isOutOfLodRange(): boolean { return false; }\n\n /** @public */\n public setNotFound(): void {\n this._state = TileState.NotFound;\n }\n\n /** @public */\n public setIsReady(): void {\n if (this.hasGraphics)\n this._hadGraphics = true;\n\n this._state = TileState.Ready;\n IModelApp.tileAdmin.onTileContentLoaded(this);\n }\n\n /** @public */\n public setLeaf(): void {\n // Don't potentially re-request the children later.\n this.disposeChildren();\n this._isLeaf = true;\n this._childrenLoadStatus = TileTreeLoadStatus.Loaded;\n }\n\n /** True if this tile has no child tiles. */\n public get isLeaf(): boolean { return this._isLeaf; }\n /** @internal */\n public get isEmpty(): boolean { return this.isReady && !this.hasGraphics && this.isLeaf; }\n /** @internal */\n public get isDisplayable(): boolean { return 0 < this.maximumSize; }\n /** The maximum size in pixels this tile can be drawn. If the size of the tile on screen exceeds this maximum, a higher-resolution tile should be drawn in its place. */\n public get maximumSize(): number { return this._maximumSize; }\n /** @internal */\n public get isParentDisplayable(): boolean { return undefined !== this.parent && this.parent.isDisplayable; }\n /** @internal */\n public get isUndisplayableRootTile(): boolean { return undefined === this.parent && !this.isDisplayable; }\n\n /** @internal */\n public get request(): TileRequest | undefined { return this._request; }\n public set request(request: TileRequest | undefined) {\n assert(undefined === request || undefined === this.request);\n this._request = request;\n }\n\n /** Compute the load priority of this tile. This determines which tiles' contents are requested first.\n * @param _viewports The subset of `users` that are [[Viewport]]s - typically, these viewports want to display the tile's content.\n * @param users The [[TileUser]]s that are currently using the tile for some purpose, such as displaying its content.\n * @returns The priority.\n * @see [[TileLoadPriority]] for suggested priority values.\n */\n public computeLoadPriority(_viewports: Iterable<Viewport>, _users: Iterable<TileUser>): number {\n return this.depth;\n }\n\n /** True if this tile has graphics ready to draw. */\n public get hasGraphics(): boolean { return undefined !== this._graphic; }\n /** True if this tile has a known volume tightly encompassing its graphics. */\n public get hasContentRange(): boolean { return undefined !== this._contentRange; }\n /** A volume no larger than this tile's `range`, and optionally more tightly encompassing its contents, used for more accurate culling. */\n public get contentRange(): ElementAlignedBox3d {\n if (undefined !== this._contentRange)\n return this._contentRange;\n else if (undefined === this.parent && undefined !== this.tree.contentRange)\n return this.tree.contentRange;\n else\n return this.range;\n }\n\n /** Tile contents are loaded asynchronously on demand. This member tracks the current loading status of this tile's contents. */\n public get loadStatus(): TileLoadStatus {\n switch (this._state) {\n case TileState.NotReady: {\n if (undefined === this.request)\n return TileLoadStatus.NotLoaded;\n else if (TileRequest.State.Loading === this.request.state)\n return TileLoadStatus.Loading;\n\n assert(TileRequest.State.Completed !== this.request.state && TileRequest.State.Failed !== this.request.state); // this.request should be undefined in these cases...\n return TileLoadStatus.Queued;\n }\n case TileState.Ready: {\n assert(undefined === this.request);\n return TileLoadStatus.Ready;\n }\n case TileState.NotFound: {\n assert(undefined === this.request);\n return TileLoadStatus.NotFound;\n }\n default: {\n assert(TileState.Abandoned === this._state);\n return TileLoadStatus.Abandoned;\n }\n }\n }\n\n /** Produce the graphics that should be drawn. */\n public produceGraphics(): RenderGraphic | undefined {\n return this._graphic;\n }\n\n protected setGraphic(graphic: RenderGraphic | undefined): void {\n dispose(this._graphic);\n this._graphic = graphic;\n this.setIsReady();\n }\n\n /** Set this tile's content to the result of [[readContent]] */\n public setContent(content: TileContent): void {\n const { graphic, isLeaf, contentRange } = content;\n this.setGraphic(graphic);\n\n if (undefined !== isLeaf && isLeaf !== this._isLeaf) {\n if (isLeaf)\n this.setLeaf();\n else\n this._isLeaf = false;\n }\n\n if (undefined !== contentRange)\n this._contentRange = contentRange;\n\n this.setIsReady();\n }\n\n /** Disclose any resources owned by this tile, other than its [[RenderGraphic]].\n * @internal\n */\n protected _collectStatistics(_stats: RenderMemory.Statistics): void { }\n\n /** Disclose resources owned by this tile and (by default) all of its child tiles.\n * @note Do not override this method! Override `_collectStatistics` instead.\n * @internal\n */\n public collectStatistics(stats: RenderMemory.Statistics, includeChildren = true): void {\n if (undefined !== this._graphic)\n this._graphic.collectStatistics(stats);\n\n this._collectStatistics(stats);\n if (!includeChildren)\n return;\n\n const children = this.children;\n if (undefined !== children)\n for (const child of children)\n child.collectStatistics(stats);\n }\n\n /** If this tile's child tiles have not yet been requested, enqueue an asynchronous request to load them.\n * @note This function itself is *not* asynchronous - it immediately returns the current loading status.\n * @note Do not override this method - implement [[_loadChildren]].\n */\n protected loadChildren(): TileTreeLoadStatus {\n if (this._childrenLoadStatus !== TileTreeLoadStatus.NotLoaded)\n return this._childrenLoadStatus;\n\n this._childrenLoadStatus = TileTreeLoadStatus.Loading;\n\n this._loadChildren((children: Tile[] | undefined) => {\n this._children = children;\n this._childrenLoadStatus = TileTreeLoadStatus.Loaded;\n\n if (undefined === children || 0 === children.length)\n this._isLeaf = true;\n\n IModelApp.tileAdmin.onTileChildrenLoad.raiseEvent(this);\n }, (_error: Error) => {\n this._isLeaf = true;\n this._childrenLoadStatus = TileTreeLoadStatus.NotFound;\n\n IModelApp.tileAdmin.onTileChildrenLoad.raiseEvent(this);\n });\n\n return this._childrenLoadStatus;\n }\n\n /** Dispose of this tile's child tiles and mark them as \"not loaded\". */\n protected disposeChildren(): void {\n const children = this.children;\n if (undefined === children)\n return;\n\n for (const child of children)\n child[Symbol.dispose]();\n\n this._childrenLoadStatus = TileTreeLoadStatus.NotLoaded;\n this._children = undefined;\n }\n\n /** Returns true if this tile's bounding volume is culled by the frustum or clip volumes specified by `args`. */\n protected isRegionCulled(args: TileDrawArgs): boolean {\n return this.isCulled(this.range, args, true, this.boundingSphere);\n }\n\n /** Returns true if this tile's content bounding volume is culled by the frustum or clip volumes specified by `args`. */\n protected isContentCulled(args: TileDrawArgs): boolean {\n return this.isCulled(this.contentRange, args, false);\n }\n\n private isCulled(range: ElementAlignedBox3d, args: TileDrawArgs, testClipIntersection: boolean, sphere?: BoundingSphere) {\n const box = Frustum.fromRange(range, scratchRootFrustum);\n return this.isFrustumCulled(box, args, testClipIntersection, sphere);\n }\n\n protected isFrustumCulled(box: Frustum, args: TileDrawArgs, testClipIntersection: boolean, sphere?: BoundingSphere) {\n const worldBox = box.transformBy(args.location, scratchWorldFrustum);\n const worldSphere = sphere?.transformBy(args.location, scratchWorldSphere);\n\n // Test against frustum.\n if (FrustumPlanes.Containment.Outside === args.frustumPlanes.computeFrustumContainment(worldBox, worldSphere))\n return true;\n\n // Test against TileTree's own clip volume, if any.\n if (undefined !== args.clip && ClipPlaneContainment.StronglyOutside === args.clip.classifyPointContainment(worldBox.points))\n return true;\n\n // Test against view clip, if any (will be undefined if TileTree does not want view clip applied to it).\n if (undefined !== args.viewClip && ClipPlaneContainment.StronglyOutside === args.viewClip.classifyPointContainment(worldBox.points))\n return true;\n\n // Test against intersection clip - reject if tile doesn't intersect (used for section-cut graphics).\n if (testClipIntersection && undefined !== args.intersectionClip && ClipPlaneContainment.Ambiguous !== args.intersectionClip.classifyPointContainment(worldBox.points))\n return true;\n\n return false;\n }\n\n /** Determine the visibility of this tile according to the specified args. */\n public computeVisibility(args: TileDrawArgs): TileVisibility {\n if (this.isEmpty)\n return TileVisibility.OutsideFrustum;\n\n if (args.boundingRange && !args.boundingRange.intersectsRange(this.range))\n return TileVisibility.OutsideFrustum;\n\n // NB: We test for region culling before isDisplayable - otherwise we will never unload children of undisplayed tiles when\n // they are outside frustum\n if (this.isRegionCulled(args))\n return TileVisibility.OutsideFrustum;\n\n // some nodes are merely for structure and don't have any geometry\n if (!this.isDisplayable)\n return TileVisibility.TooCoarse;\n\n if (this.isLeaf) {\n if (this.hasContentRange && this.isContentCulled(args))\n return TileVisibility.OutsideFrustum;\n else\n return TileVisibility.Visible;\n }\n\n return this.meetsScreenSpaceError(args) ? TileVisibility.Visible : TileVisibility.TooCoarse;\n }\n\n /** Returns true if this tile is of at least high enough resolution to be displayed, per the supplied [[TileDrawArgs]]; or false if\n * a higher-resolution tile should be substituted for it.\n * This method is called by [[computeVisibility]] if the tile has passed all culling checks.\n */\n protected meetsScreenSpaceError(args: TileDrawArgs): boolean {\n const pixelSize = args.getPixelSize(this) * args.pixelSizeScaleFactor;\n const maxSize = this.maximumSize * args.tileSizeModifier;\n return pixelSize <= maxSize;\n }\n\n /** @internal */\n public extendRangeForContent(range: Range3d, matrix: Matrix4d, treeTransform: Transform, frustumPlanes?: FrustumPlanes): void {\n if (this.isEmpty || this.contentRange.isNull)\n return;\n\n const box = Frustum.fromRange(this.contentRange, scratchFrustum);\n box.transformBy(treeTransform, box);\n if (frustumPlanes !== undefined && FrustumPlanes.Containment.Outside === frustumPlanes.computeFrustumContainment(box))\n return;\n\n if (this.children === undefined) {\n for (const boxPoint of box.points) {\n const pt = matrix.multiplyPoint3d(boxPoint, 1, scratchPoint4d);\n if (pt.w > .0001)\n range.extendXYZW(pt.x, pt.y, pt.z, pt.w);\n else\n range.high.z = Math.max(1.0, range.high.z); // behind eye plane...\n }\n } else {\n for (const child of this.children)\n child.extendRangeForContent(range, matrix, treeTransform, frustumPlanes);\n }\n }\n\n /** Primarily for debugging purposes, compute the number of tiles below this one in the [[TileTree]]. */\n public countDescendants(): number {\n const children = this.children;\n if (undefined === children || 0 === children.length)\n return 0;\n\n let count = 0;\n for (const child of children)\n count += child.countDescendants();\n\n return count;\n }\n\n /** Output this tile's graphics. */\n public drawGraphics(args: TileDrawArgs): void {\n const gfx = this.produceGraphics();\n if (undefined === gfx)\n return;\n\n args.graphics.add(gfx);\n const rangeGfx = this.getRangeGraphic(args.context);\n if (undefined !== rangeGfx)\n args.graphics.add(rangeGfx);\n }\n\n /** @internal */\n protected get rangeGraphicColor(): ColorDef {\n return this.isLeaf ? ColorDef.blue : ColorDef.green;\n }\n\n /** @internal */\n public getRangeGraphic(context: SceneContext): RenderGraphic | undefined {\n const type = context.viewport.debugBoundingBoxes;\n if (type === this._rangeGraphicType)\n return this._rangeGraphic;\n\n this._rangeGraphic = dispose(this._rangeGraphic);\n this._rangeGraphicType = type;\n if (TileBoundingBoxes.None !== type) {\n const builder = context.createSceneGraphicBuilder();\n this.addRangeGraphic(builder, type);\n this._rangeGraphic = builder.finish();\n }\n\n return this._rangeGraphic;\n }\n\n /** @internal */\n protected addRangeGraphic(builder: GraphicBuilder, type: TileBoundingBoxes): void {\n if (TileBoundingBoxes.Both === type) {\n builder.setSymbology(ColorDef.blue, ColorDef.blue, 1);\n addRangeGraphic(builder, this.range, this.tree.is2d);\n\n if (this.hasContentRange) {\n builder.setSymbology(ColorDef.red, ColorDef.red, 1);\n addRangeGraphic(builder, this.contentRange, this.tree.is2d);\n }\n } else if (TileBoundingBoxes.Sphere === type) {\n builder.setSymbology(ColorDef.green, ColorDef.green, 1);\n\n const x = new Vector3d(this.radius, 0, 0);\n const y = new Vector3d(0, this.radius, 0);\n const z = new Vector3d(0, 0, this.radius);\n\n builder.addArc(Arc3d.create(this.center, x, y), false, false);\n builder.addArc(Arc3d.create(this.center, x, z), false, false);\n builder.addArc(Arc3d.create(this.center, y, z), false, false);\n } else if (TileBoundingBoxes.SolidBox === type) {\n const range = this.range;\n let color = this.rangeGraphicColor;\n builder.setSymbology(color, color, 1);\n addRangeGraphic(builder, range, this.tree.is2d);\n color = color.withTransparency(0xcf);\n builder.setSymbology(color, color, 1);\n builder.addRangeBox(range, true);\n } else {\n const color = this.rangeGraphicColor;\n builder.setSymbology(color, color, 1);\n const range = TileBoundingBoxes.Content === type ? this.contentRange : this.range;\n addRangeGraphic(builder, range, this.tree.is2d);\n }\n }\n\n /** Optional corners used to compute the screen size of the tile. These are used, e.g., by reality tiles with oriented bounding boxes to\n * produce more accurate size calculation.\n */\n public getSizeProjectionCorners(): Point3d[] | undefined { return undefined; }\n\n /** @internal */\n public clearLayers() {\n this.disposeContents();\n if (this.children)\n for (const child of this.children)\n (child).clearLayers();\n }\n}\n\n/** Describes the current status of a [[Tile]]'s content. Tile content is loaded via an asynchronous [[TileRequest]].\n * @see [[Tile.loadStatus]].\n * @public\n * @extensions\n */\nexport enum TileLoadStatus {\n /** No attempt to load the tile's content has been made, or the tile has since been unloaded. It currently has no graphics. */\n NotLoaded = 0,\n /** A request has been dispatched to load the tile's contents, and a response is pending. */\n Queued = 1,\n /** A response has been received and the tile's graphics and other data are being loaded on the frontend. */\n Loading = 2,\n /** The tile has been loaded, and if the tile is displayable it has graphics. */\n Ready = 3,\n /** A request to load the tile's contents failed. */\n NotFound = 4,\n /** The tile has been disposed. */\n Abandoned = 5,\n}\n\n/**\n * Describes the visibility of a tile based on its size and a view frustum.\n * @public\n * @extensions\n */\nexport enum TileVisibility {\n /** The tile is entirely outside of the viewing frustum. */\n OutsideFrustum,\n /** The tile's graphics are of too low a resolution for the viewing frustum. */\n TooCoarse,\n /** The tile's graphics are of appropriate resolution for the viewing frustum. */\n Visible,\n}\n\n/**\n * Loosely describes the \"importance\" of a [[Tile]]. Requests for tiles of greater \"importance\" are prioritized for loading.\n * @note A lower priority value indicates higher importance.\n * @public\n * @extensions\n */\nexport enum TileLoadPriority {\n /** Contents of geometric models that are being interactively edited. */\n Dynamic = 5,\n /** Background map tiles. */\n Map = 15,\n /** Typically, tiles generated from the contents of geometric models. */\n Primary = 20,\n /** 3d terrain tiles onto which background map imagery is draped. */\n Terrain = 10,\n /** Typically, reality models. */\n Context = 40,\n /** Supplementary tiles used to classify the contents of geometric or reality models. */\n Classifier = 50,\n}\n\n/**\n * Options for displaying tile bounding boxes for debugging purposes.\n *\n * Bounding boxes are color-coded based on refinement strategy:\n * - Blue: A leaf tile (has no child tiles).\n * - Green: An ordinary tile (sub-divides into 4 or 8 child tiles).\n * - Red: A tile which refines to a single higher-resolution child occupying the same volume.\n * @see [[Viewport.debugBoundingBoxes]]\n * @public\n * @extensions\n */\nexport enum TileBoundingBoxes {\n /** Display no bounding boxes */\n None = 0,\n /** Display boxes representing the tile's full volume. */\n Volume,\n /** Display boxes representing the range of the tile's contents, which may be tighter than (but never larger than) the tile's full volume. */\n Content,\n /** Display both volume and content boxes. */\n Both,\n /** Display boxes for direct children, where blue boxes indicate empty volumes. */\n ChildVolumes,\n /** Display bounding sphere. */\n Sphere,\n /** Display a transparent solid box representing the tile's full volume.\n * @alpha To be replaced with a separate option that applies to any of the other TileBoundingBoxes modes.\n */\n SolidBox,\n}\n\n// TileLoadStatus is computed from the combination of Tile._state and, if Tile.request is defined, Tile.request.state.\nconst enum TileState {// eslint-disable-line no-restricted-syntax\n NotReady = TileLoadStatus.NotLoaded, // Tile requires loading, but no request has yet completed.\n Ready = TileLoadStatus.Ready, // request completed successfully, or no loading was required.\n NotFound = TileLoadStatus.NotFound, // request failed.\n Abandoned = TileLoadStatus.Abandoned, // tile was abandoned.\n}\n"]}
|
|
@@ -104,7 +104,7 @@ export declare abstract class TileTree {
|
|
|
104
104
|
get isDisposed(): boolean;
|
|
105
105
|
/** Dispose of this tree and any resources owned by it. This is typically invoked by a [[TileTreeOwner]]. */
|
|
106
106
|
[Symbol.dispose](): void;
|
|
107
|
-
/** @deprecated in 5.0 Use [Symbol.dispose] instead. */
|
|
107
|
+
/** @deprecated in 5.0 - will not be removed until after 2026-06-13. Use [Symbol.dispose] instead. */
|
|
108
108
|
dispose(): void;
|
|
109
109
|
/** @internal */
|
|
110
110
|
collectStatistics(stats: RenderMemory.Statistics): void;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"TileTree.d.ts","sourceRoot":"","sources":["../../../src/tile/TileTree.ts"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"TileTree.d.ts","sourceRoot":"","sources":["../../../src/tile/TileTree.ts"],"names":[],"mappings":"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"}
|
package/lib/esm/tile/TileTree.js
CHANGED
|
@@ -115,7 +115,7 @@ export class TileTree {
|
|
|
115
115
|
this._isDisposed = true;
|
|
116
116
|
dispose(this.rootTile);
|
|
117
117
|
}
|
|
118
|
-
/** @deprecated in 5.0 Use [Symbol.dispose] instead. */
|
|
118
|
+
/** @deprecated in 5.0 - will not be removed until after 2026-06-13. Use [Symbol.dispose] instead. */
|
|
119
119
|
dispose() {
|
|
120
120
|
this[Symbol.dispose]();
|
|
121
121
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"TileTree.js","sourceRoot":"","sources":["../../../src/tile/TileTree.ts"],"names":[],"mappings":"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","sourcesContent":["/*---------------------------------------------------------------------------------------------\n* Copyright (c) Bentley Systems, Incorporated. All rights reserved.\n* See LICENSE.md in the project root for license terms and full copyright notice.\n*--------------------------------------------------------------------------------------------*/\n/** @packageDocumentation\n * @module Tiles\n */\n\nimport { BeDuration, BeTimePoint, dispose, Id64String } from \"@itwin/core-bentley\";\nimport { Matrix4d, Range3d, Transform } from \"@itwin/core-geometry\";\nimport { ElementAlignedBox3d, FrustumPlanes, ViewFlagOverrides } from \"@itwin/core-common\";\nimport { calculateEcefToDbTransformAtLocation } from \"../BackgroundMapGeometry\";\nimport { IModelApp } from \"../IModelApp\";\nimport { IModelConnection } from \"../IModelConnection\";\nimport { RenderClipVolume } from \"../render/RenderClipVolume\";\nimport { RenderMemory } from \"../render/RenderMemory\";\nimport { LayerTileTreeHandler, Tile, TileDrawArgs, TileGeometryCollector, TileLoadPriority, TileTreeParams } from \"./internal\";\n\n/** Describes the current state of a [[TileTree]]. TileTrees are loaded asynchronously and may be unloaded after a period of disuse.\n * @see [[TileTreeOwner]].\n * @public\n * @extensions\n */\nexport enum TileTreeLoadStatus {\n /** No attempt to load the tile tree has yet been made. */\n NotLoaded,\n /** The tile tree is in the process of being loaded. */\n Loading,\n /** The tile tree has been successfully loaded. */\n Loaded,\n /** An attempt to load the tile tree failed. */\n NotFound,\n}\n\n/** A hierarchical level-of-detail tree of [3d Tiles](https://github.com/CesiumGS/3d-tiles) to be rendered in a [[Viewport]].\n * Tile trees originate from a variety of sources:\n * - Each [[GeometricModelState]] can supply its graphics as a tile tree;\n * - A [[DisplayStyleState]]'s map settings or reality models;\n * - [ViewAttachment]($backend)s in a [[SheetModelState]];\n * - [[TiledGraphicsProvider]]s associated with a viewport.\n *\n * The same TileTree can be displayed in any number of viewports using multiple [[TileTreeReference]]s.\n * A TileTree's lifetime is managed by a [[TileTreeOwner]].\n *\n * @note Some methods carry a warning that they should **not** be overridden by subclasses; typically a protected method exists that can be\n * overridden instead to customize the behavior. For example, [[selectTiles]] should not be overridden; instead, override the[[_selectTiles]] method\n * that it calls.\n * @public\n * @extensions\n */\nexport abstract class TileTree {\n private _isDisposed = false;\n /** @internal */\n protected _lastSelected = BeTimePoint.now();\n /** @internal */\n protected _clipVolume?: RenderClipVolume;\n public readonly iModel: IModelConnection;\n /** Transform from this tile tree's coordinate space to the iModel's coordinate space. */\n public readonly iModelTransform: Transform;\n /** Uniquely identifies this tree among all other tile trees associated with the iModel. */\n public readonly id: string;\n /** A 64-bit identifier for this tile tree, unique within the context of its [[IModelConnection]].\n * For a tile tree associated with a [[GeometricModelState]], this is the Id of the model. Other types of tile trees\n * typically use a transient Id obtained from [[IModelConnection.transientIds]].\n */\n public readonly modelId: Id64String;\n /** The length of time after which tiles belonging to this tree are considered elegible for disposal if they are no longer in use. */\n public readonly expirationTime: BeDuration;\n /** @internal */\n public get loadPriority(): TileLoadPriority { return this._loadPriority; }\n private readonly _loadPriority: TileLoadPriority;\n /** Optional tight bounding box around the entire contents of all of this tree's tiles. */\n public readonly contentRange?: ElementAlignedBox3d;\n\n /** The lowest-resolution tile in this tree. */\n public abstract get rootTile(): Tile;\n /** True if this tile tree contains 3d graphics. */\n public abstract get is3d(): boolean;\n /** Returns the maximum depth of this tree, if any. */\n public abstract get maxDepth(): number | undefined;\n\n /** The overrides that should be applied to the view's [ViewFlags]($common) when this tile tree is drawn. Can be overridden by individual [[TileTreeReference]]s. */\n public abstract get viewFlagOverrides(): ViewFlagOverrides;\n\n /** True if this tile tree has no bounds - e.g., a tile tree representing a globe is unbounded. */\n public get isContentUnbounded(): boolean {\n return false;\n }\n\n /** Implement this method to select tiles of appropriate resolution. */\n protected abstract _selectTiles(args: TileDrawArgs): Tile[];\n\n /** Produce graphics of appropriate resolution to be drawn in a [[Viewport]]. */\n public abstract draw(args: TileDrawArgs): void;\n\n /** Discard tiles and/or tile contents, presumably based on a least-recently-used and/or least-likely-to-be-needed criterion. */\n public abstract prune(): void;\n\n /** True if this tile tree contains 2d graphics. */\n public get is2d(): boolean { return !this.is3d; }\n /** @internal */\n public get isPointCloud(): boolean { return false; }\n /** @internal */\n public get clipVolume(): RenderClipVolume | undefined { return this._clipVolume; }\n\n /** The volume of space occupied by this tile tree. */\n public get range(): ElementAlignedBox3d { return this.rootTile.range; }\n /** The most recent time at which tiles [[selectTiles]] was called. */\n public get lastSelectedTime(): BeTimePoint { return this._lastSelected; }\n /** True if a tile and its child tiles should not be drawn simultaneously.\n * Default: true.\n */\n public get parentsAndChildrenExclusive(): boolean { return true; }\n\n /** @internal */\n public get layerHandler(): LayerTileTreeHandler | undefined { return undefined; }\n\n /** Constructor */\n protected constructor(params: TileTreeParams) {\n this._lastSelected = BeTimePoint.now();\n this.iModel = params.iModel;\n this.iModelTransform = params.location;\n this._clipVolume = params.clipVolume;\n this.modelId = params.modelId;\n this.id = params.id;\n this.contentRange = params.contentRange;\n\n const admin = IModelApp.tileAdmin;\n this._loadPriority = params.priority;\n this.expirationTime = params.expirationTime ?? admin.tileExpirationTime;\n }\n\n /** Selects tiles of appropriate resolution for some purpose like drawing to the screen, producing a shadow map, etc.\n * @note Do **not** override this method. Implement [[_selectTiles]].\n */\n public selectTiles(args: TileDrawArgs): Tile[] {\n this._lastSelected = BeTimePoint.now();\n const tiles = this._selectTiles(args);\n IModelApp.tileAdmin.addTilesForUser(args.context.viewport, tiles, args.readyTiles, args.touchedTiles);\n args.processSelectedTiles(tiles);\n return tiles;\n }\n\n /** True if [[dispose]] has been called on this tile tree. */\n public get isDisposed(): boolean { return this._isDisposed; }\n\n /** Dispose of this tree and any resources owned by it. This is typically invoked by a [[TileTreeOwner]]. */\n public [Symbol.dispose](): void {\n if (this.isDisposed)\n return;\n\n this._isDisposed = true;\n dispose(this.rootTile);\n }\n\n /** @deprecated in 5.0 Use [Symbol.dispose] instead. */\n public dispose() {\n this[Symbol.dispose]();\n }\n\n /** @internal */\n public collectStatistics(stats: RenderMemory.Statistics): void {\n this.rootTile.collectStatistics(stats);\n }\n\n /** Returns the number of [[Tile]]s currently in memory belonging to this tree, primarily for debugging. */\n public countTiles(): number {\n return 1 + this.rootTile.countDescendants();\n }\n\n /** @internal */\n public accumulateTransformedRange(range: Range3d, matrix: Matrix4d, location: Transform, frustumPlanes?: FrustumPlanes): void {\n this.rootTile.extendRangeForContent(range, matrix, location, frustumPlanes);\n }\n\n /**\n * Return the transform from the tile tree's coordinate space to [ECEF](https://en.wikipedia.org/wiki/ECEF) (Earth Centered Earth Fixed) coordinates.\n * If a geographic coordinate system is present then this transform will be calculated at the tile tree center.\n * @beta\n */\n public async getEcefTransform(): Promise<Transform | undefined> {\n if (!this.iModel.ecefLocation)\n return undefined;\n\n let dbToEcef: Transform | undefined;\n const range = this.contentRange ? this.contentRange : this.range;\n const center = range.localXYZToWorld(.5, .5, .5);\n if (center) {\n this.iModelTransform.multiplyPoint3d(center, center);\n const ecefToDb = await calculateEcefToDbTransformAtLocation(center, this.iModel);\n dbToEcef = ecefToDb?.inverse();\n }\n if (!dbToEcef)\n dbToEcef = this.iModel.ecefLocation.getTransform();\n\n return dbToEcef.multiplyTransformTransform(this.iModelTransform);\n }\n\n /** Populate [[TileGeometryCollector.polyfaces]] with geometry obtained from this tile tree's tiles satisfying the collector's criteria.\n * The base implementation does nothing.\n * @see [[TileTreeReference.createGeometryTreeReference]] to attempt to create a TileTree that can collect geometry.\n * @beta\n */\n public collectTileGeometry(_collector: TileGeometryCollector): void {\n }\n}\n\n"]}
|
|
1
|
+
{"version":3,"file":"TileTree.js","sourceRoot":"","sources":["../../../src/tile/TileTree.ts"],"names":[],"mappings":"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","sourcesContent":["/*---------------------------------------------------------------------------------------------\n* Copyright (c) Bentley Systems, Incorporated. All rights reserved.\n* See LICENSE.md in the project root for license terms and full copyright notice.\n*--------------------------------------------------------------------------------------------*/\n/** @packageDocumentation\n * @module Tiles\n */\n\nimport { BeDuration, BeTimePoint, dispose, Id64String } from \"@itwin/core-bentley\";\nimport { Matrix4d, Range3d, Transform } from \"@itwin/core-geometry\";\nimport { ElementAlignedBox3d, FrustumPlanes, ViewFlagOverrides } from \"@itwin/core-common\";\nimport { calculateEcefToDbTransformAtLocation } from \"../BackgroundMapGeometry\";\nimport { IModelApp } from \"../IModelApp\";\nimport { IModelConnection } from \"../IModelConnection\";\nimport { RenderClipVolume } from \"../render/RenderClipVolume\";\nimport { RenderMemory } from \"../render/RenderMemory\";\nimport { LayerTileTreeHandler, Tile, TileDrawArgs, TileGeometryCollector, TileLoadPriority, TileTreeParams } from \"./internal\";\n\n/** Describes the current state of a [[TileTree]]. TileTrees are loaded asynchronously and may be unloaded after a period of disuse.\n * @see [[TileTreeOwner]].\n * @public\n * @extensions\n */\nexport enum TileTreeLoadStatus {\n /** No attempt to load the tile tree has yet been made. */\n NotLoaded,\n /** The tile tree is in the process of being loaded. */\n Loading,\n /** The tile tree has been successfully loaded. */\n Loaded,\n /** An attempt to load the tile tree failed. */\n NotFound,\n}\n\n/** A hierarchical level-of-detail tree of [3d Tiles](https://github.com/CesiumGS/3d-tiles) to be rendered in a [[Viewport]].\n * Tile trees originate from a variety of sources:\n * - Each [[GeometricModelState]] can supply its graphics as a tile tree;\n * - A [[DisplayStyleState]]'s map settings or reality models;\n * - [ViewAttachment]($backend)s in a [[SheetModelState]];\n * - [[TiledGraphicsProvider]]s associated with a viewport.\n *\n * The same TileTree can be displayed in any number of viewports using multiple [[TileTreeReference]]s.\n * A TileTree's lifetime is managed by a [[TileTreeOwner]].\n *\n * @note Some methods carry a warning that they should **not** be overridden by subclasses; typically a protected method exists that can be\n * overridden instead to customize the behavior. For example, [[selectTiles]] should not be overridden; instead, override the[[_selectTiles]] method\n * that it calls.\n * @public\n * @extensions\n */\nexport abstract class TileTree {\n private _isDisposed = false;\n /** @internal */\n protected _lastSelected = BeTimePoint.now();\n /** @internal */\n protected _clipVolume?: RenderClipVolume;\n public readonly iModel: IModelConnection;\n /** Transform from this tile tree's coordinate space to the iModel's coordinate space. */\n public readonly iModelTransform: Transform;\n /** Uniquely identifies this tree among all other tile trees associated with the iModel. */\n public readonly id: string;\n /** A 64-bit identifier for this tile tree, unique within the context of its [[IModelConnection]].\n * For a tile tree associated with a [[GeometricModelState]], this is the Id of the model. Other types of tile trees\n * typically use a transient Id obtained from [[IModelConnection.transientIds]].\n */\n public readonly modelId: Id64String;\n /** The length of time after which tiles belonging to this tree are considered elegible for disposal if they are no longer in use. */\n public readonly expirationTime: BeDuration;\n /** @internal */\n public get loadPriority(): TileLoadPriority { return this._loadPriority; }\n private readonly _loadPriority: TileLoadPriority;\n /** Optional tight bounding box around the entire contents of all of this tree's tiles. */\n public readonly contentRange?: ElementAlignedBox3d;\n\n /** The lowest-resolution tile in this tree. */\n public abstract get rootTile(): Tile;\n /** True if this tile tree contains 3d graphics. */\n public abstract get is3d(): boolean;\n /** Returns the maximum depth of this tree, if any. */\n public abstract get maxDepth(): number | undefined;\n\n /** The overrides that should be applied to the view's [ViewFlags]($common) when this tile tree is drawn. Can be overridden by individual [[TileTreeReference]]s. */\n public abstract get viewFlagOverrides(): ViewFlagOverrides;\n\n /** True if this tile tree has no bounds - e.g., a tile tree representing a globe is unbounded. */\n public get isContentUnbounded(): boolean {\n return false;\n }\n\n /** Implement this method to select tiles of appropriate resolution. */\n protected abstract _selectTiles(args: TileDrawArgs): Tile[];\n\n /** Produce graphics of appropriate resolution to be drawn in a [[Viewport]]. */\n public abstract draw(args: TileDrawArgs): void;\n\n /** Discard tiles and/or tile contents, presumably based on a least-recently-used and/or least-likely-to-be-needed criterion. */\n public abstract prune(): void;\n\n /** True if this tile tree contains 2d graphics. */\n public get is2d(): boolean { return !this.is3d; }\n /** @internal */\n public get isPointCloud(): boolean { return false; }\n /** @internal */\n public get clipVolume(): RenderClipVolume | undefined { return this._clipVolume; }\n\n /** The volume of space occupied by this tile tree. */\n public get range(): ElementAlignedBox3d { return this.rootTile.range; }\n /** The most recent time at which tiles [[selectTiles]] was called. */\n public get lastSelectedTime(): BeTimePoint { return this._lastSelected; }\n /** True if a tile and its child tiles should not be drawn simultaneously.\n * Default: true.\n */\n public get parentsAndChildrenExclusive(): boolean { return true; }\n\n /** @internal */\n public get layerHandler(): LayerTileTreeHandler | undefined { return undefined; }\n\n /** Constructor */\n protected constructor(params: TileTreeParams) {\n this._lastSelected = BeTimePoint.now();\n this.iModel = params.iModel;\n this.iModelTransform = params.location;\n this._clipVolume = params.clipVolume;\n this.modelId = params.modelId;\n this.id = params.id;\n this.contentRange = params.contentRange;\n\n const admin = IModelApp.tileAdmin;\n this._loadPriority = params.priority;\n this.expirationTime = params.expirationTime ?? admin.tileExpirationTime;\n }\n\n /** Selects tiles of appropriate resolution for some purpose like drawing to the screen, producing a shadow map, etc.\n * @note Do **not** override this method. Implement [[_selectTiles]].\n */\n public selectTiles(args: TileDrawArgs): Tile[] {\n this._lastSelected = BeTimePoint.now();\n const tiles = this._selectTiles(args);\n IModelApp.tileAdmin.addTilesForUser(args.context.viewport, tiles, args.readyTiles, args.touchedTiles);\n args.processSelectedTiles(tiles);\n return tiles;\n }\n\n /** True if [[dispose]] has been called on this tile tree. */\n public get isDisposed(): boolean { return this._isDisposed; }\n\n /** Dispose of this tree and any resources owned by it. This is typically invoked by a [[TileTreeOwner]]. */\n public [Symbol.dispose](): void {\n if (this.isDisposed)\n return;\n\n this._isDisposed = true;\n dispose(this.rootTile);\n }\n\n /** @deprecated in 5.0 - will not be removed until after 2026-06-13. Use [Symbol.dispose] instead. */\n public dispose() {\n this[Symbol.dispose]();\n }\n\n /** @internal */\n public collectStatistics(stats: RenderMemory.Statistics): void {\n this.rootTile.collectStatistics(stats);\n }\n\n /** Returns the number of [[Tile]]s currently in memory belonging to this tree, primarily for debugging. */\n public countTiles(): number {\n return 1 + this.rootTile.countDescendants();\n }\n\n /** @internal */\n public accumulateTransformedRange(range: Range3d, matrix: Matrix4d, location: Transform, frustumPlanes?: FrustumPlanes): void {\n this.rootTile.extendRangeForContent(range, matrix, location, frustumPlanes);\n }\n\n /**\n * Return the transform from the tile tree's coordinate space to [ECEF](https://en.wikipedia.org/wiki/ECEF) (Earth Centered Earth Fixed) coordinates.\n * If a geographic coordinate system is present then this transform will be calculated at the tile tree center.\n * @beta\n */\n public async getEcefTransform(): Promise<Transform | undefined> {\n if (!this.iModel.ecefLocation)\n return undefined;\n\n let dbToEcef: Transform | undefined;\n const range = this.contentRange ? this.contentRange : this.range;\n const center = range.localXYZToWorld(.5, .5, .5);\n if (center) {\n this.iModelTransform.multiplyPoint3d(center, center);\n const ecefToDb = await calculateEcefToDbTransformAtLocation(center, this.iModel);\n dbToEcef = ecefToDb?.inverse();\n }\n if (!dbToEcef)\n dbToEcef = this.iModel.ecefLocation.getTransform();\n\n return dbToEcef.multiplyTransformTransform(this.iModelTransform);\n }\n\n /** Populate [[TileGeometryCollector.polyfaces]] with geometry obtained from this tile tree's tiles satisfying the collector's criteria.\n * The base implementation does nothing.\n * @see [[TileTreeReference.createGeometryTreeReference]] to attempt to create a TileTree that can collect geometry.\n * @beta\n */\n public collectTileGeometry(_collector: TileGeometryCollector): void {\n }\n}\n\n"]}
|
|
@@ -129,7 +129,7 @@ export declare abstract class TileTreeReference {
|
|
|
129
129
|
* @beta
|
|
130
130
|
*/
|
|
131
131
|
get planarClipMaskPriority(): number;
|
|
132
|
-
/** @deprecated in 5.0 Use [addAttributions] instead. */
|
|
132
|
+
/** @deprecated in 5.0 - will not be removed until after 2026-06-13. Use [addAttributions] instead. */
|
|
133
133
|
addLogoCards(_cards: HTMLTableElement, _vp: ScreenViewport): void;
|
|
134
134
|
/** Add attribution logo cards for the tile tree source logo cards to the viewport's logo div.
|
|
135
135
|
* @beta
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"TileTreeReference.d.ts","sourceRoot":"","sources":["../../../src/tile/TileTreeReference.ts"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"TileTreeReference.d.ts","sourceRoot":"","sources":["../../../src/tile/TileTreeReference.ts"],"names":[],"mappings":"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"}
|
|
@@ -216,7 +216,7 @@ export class TileTreeReference /* implements RenderMemory.Consumer */ {
|
|
|
216
216
|
* @beta
|
|
217
217
|
*/
|
|
218
218
|
get planarClipMaskPriority() { return PlanarClipMaskPriority.DesignModel; }
|
|
219
|
-
/** @deprecated in 5.0 Use [addAttributions] instead. */
|
|
219
|
+
/** @deprecated in 5.0 - will not be removed until after 2026-06-13. Use [addAttributions] instead. */
|
|
220
220
|
addLogoCards(_cards, _vp) { }
|
|
221
221
|
/** Add attribution logo cards for the tile tree source logo cards to the viewport's logo div.
|
|
222
222
|
* @beta
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"TileTreeReference.js","sourceRoot":"","sources":["../../../src/tile/TileTreeReference.ts"],"names":[],"mappings":"AAAA;;;+FAG+F;AAC/F;;GAEG;AAEH,OAAO,EAAE,MAAM,EAAE,WAAW,EAAE,MAAM,qBAAqB,CAAC;AAC1D,OAAO,EAAqB,OAAO,EAAa,MAAM,sBAAsB,CAAC;AAC7E,OAAO,EAA6E,sBAAsB,EAAqB,MAAM,oBAAoB,CAAC;AAO1J,OAAO,EACmH,YAAY,EAAmC,kBAAkB,EAAiB,kCAAkC,GAC7O,MAAM,YAAY,CAAC;AAEpB;;;GAGG;AACH,MAAM,CAAN,IAAY,eAOX;AAPD,WAAY,eAAe;IACzB,wDAAwD;IACxD,uEAAiB,CAAA;IACjB,2CAA2C;IAC3C,uDAAS,CAAA;IACT,+CAA+C;IAC/C,2DAAW,CAAA;AACb,CAAC,EAPW,eAAe,KAAf,eAAe,QAO1B;AAED;;;;;;;;;;GAUG;AACH,MAAM,OAAgB,iBAAiB,CAAC,sCAAsC;IAI5E;;OAEG;IACI,cAAc,KAAI,CAAC;IAE1B;;;OAGG;IACI,iBAAiB,CAAC,KAA2B;QAClD,MAAM,IAAI,GAAG,IAAI,CAAC,SAAS,CAAC,QAAQ,CAAC;QACrC,IAAI,SAAS,KAAK,IAAI;YACpB,KAAK,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;IACpB,CAAC;IAED,qFAAqF;IAC9E,UAAU,CAAC,OAAqB;QACrC,MAAM,IAAI,GAAG,IAAI,CAAC,cAAc,CAAC,OAAO,CAAC,CAAC;QAC1C,IAAI,SAAS,KAAK,IAAI;YACpB,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IACpB,CAAC;IAED,0IAA0I;IACnI,IAAI,CAAC,IAAkB;QAC5B,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IACvB,CAAC;IAED;;;;OAIG;IACI,KAAK,CAAC,UAAU,CAAC,IAAe,IAA+C,OAAO,SAAS,CAAC,CAAC,CAAC;IAEzG;;;OAGG;IACI,gBAAgB,CAAC,IAAe;QACrC,OAAO,IAAI,CAAC;IACd,CAAC;IAED,uIAAuI;IAChI,iBAAiB,CAAC,GAAc;QACrC,OAAO,IAAI,CAAC,gBAAgB,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,CAAC,KAAK,CAAC,GAAG,EAAE,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC;IAC9F,CAAC;IAED;;OAEG;IACI,KAAK,CAAC,iBAAiB,CAAC,IAAe,EAAE,QAAgC,IAAiD,OAAO,SAAS,CAAC,CAAC,CAAC;IAEpJ;;OAEG;IACI,QAAQ,CAAC,QAAyB,IAAU,CAAC;IAEpD;;OAEG;IACI,aAAa,CAAC,KAAc;QACjC,MAAM,YAAY,GAAG,IAAI,CAAC,wBAAwB,EAAE,CAAC;QACrD,IAAI,CAAC,YAAY,CAAC,MAAM;YACtB,KAAK,CAAC,WAAW,CAAC,YAAY,CAAC,CAAC;IACpC,CAAC;IAED,mEAAmE;IAC5D,iBAAiB,CAAC,KAA8B;QACrD,MAAM,IAAI,GAAG,IAAI,CAAC,SAAS,CAAC,QAAQ,CAAC;QACrC,IAAI,SAAS,KAAK,IAAI;YACpB,IAAI,CAAC,iBAAiB,CAAC,KAAK,CAAC,CAAC;IAClC,CAAC;IAED;;;;OAIG;IACH,IAAW,iBAAiB;QAC1B,QAAQ,IAAI,CAAC,SAAS,CAAC,UAAU,EAAE,CAAC;YAClC,KAAK,kBAAkB,CAAC,SAAS,CAAC;YAClC,KAAK,kBAAkB,CAAC,OAAO;gBAC7B,OAAO,KAAK,CAAC;YACf,KAAK,kBAAkB,CAAC,QAAQ;gBAC9B,OAAO,IAAI,CAAC,CAAC,iCAAiC;YAChD,KAAK,kBAAkB,CAAC,MAAM;gBAC5B,OAAO,IAAI,CAAC,kBAAkB,CAAC;QACnC,CAAC;IACH,CAAC;IAED;;OAEG;IACH,IAAc,kBAAkB;QAC9B,OAAO,IAAI,CAAC;IACd,CAAC;IAED;;;OAGG;IACI,cAAc,CAAC,OAAqB;QACzC,MAAM,IAAI,GAAG,IAAI,CAAC,SAAS,CAAC,IAAI,EAAE,CAAC;QACnC,IAAI,SAAS,KAAK,IAAI;YACpB,OAAO,SAAS,CAAC;QAEnB,OAAO,IAAI,YAAY,CAAC;YACtB,OAAO;YACP,IAAI;YACJ,GAAG,EAAE,WAAW,CAAC,GAAG,EAAE;YACtB,QAAQ,EAAE,IAAI,CAAC,gBAAgB,CAAC,IAAI,CAAC;YACrC,iBAAiB,EAAE,IAAI,CAAC,oBAAoB,CAAC,IAAI,CAAC;YAClD,UAAU,EAAE,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC;YACpC,2BAA2B,EAAE,IAAI,CAAC,2BAA2B;YAC7D,kBAAkB,EAAE,IAAI,CAAC,qBAAqB,CAAC,IAAI,CAAC;YACpD,kBAAkB,EAAE,IAAI,CAAC,qBAAqB,CAAC,IAAI,CAAC;YACpD,kBAAkB,EAAE,IAAI,CAAC,qBAAqB,CAAC,IAAI,CAAC;YACpD,wBAAwB,EAAE,IAAI,CAAC,2BAA2B,CAAC,IAAI,CAAC;YAChE,WAAW,EAAE,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC;YACtC,mBAAmB,EAAE,IAAI,CAAC,sBAAsB,EAAE;SACnD,CAAC,CAAC;IACL,CAAC;IAED,YAAY;IACL,sBAAsB,KAA4B,OAAO,SAAS,CAAC,CAAC,CAAC;IAE5E,gBAAgB;IACN,2BAA2B,CAAC,KAAe;QACnD,OAAO,SAAS,CAAC;IACnB,CAAC;IACD,gBAAgB;IACN,cAAc,CAAC,KAAe;QACtC,OAAO,SAAS,CAAC;IACnB,CAAC;IAED;;OAEG;IACI,WAAW;QAChB,MAAM,IAAI,GAAG,IAAI,CAAC,SAAS,CAAC,IAAI,EAAE,CAAC;QACnC,OAAO,SAAS,KAAK,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,gBAAgB,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC;IACtE,CAAC;IAED,2HAA2H;IACjH,gBAAgB,CAAC,IAAc;QACvC,OAAO,IAAI,CAAC,eAAe,CAAC,KAAK,EAAE,CAAC;IACtC,CAAC;IAED;;OAEG;IACI,wBAAwB;QAC7B,MAAM,KAAK,GAAG,IAAI,OAAO,EAAE,CAAC;QAC5B,MAAM,IAAI,GAAG,IAAI,CAAC,SAAS,CAAC,QAAQ,CAAC;QACrC,IAAI,SAAS,KAAK,IAAI,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,YAAY,CAAC,MAAM;YAC1D,IAAI,CAAC,gBAAgB,CAAC,IAAI,CAAC,CAAC,aAAa,CAAC,IAAI,CAAC,QAAQ,CAAC,YAAY,EAAE,KAAK,CAAC,CAAC;QAE/E,OAAO,KAAK,CAAC;IACf,CAAC;IAED,4EAA4E;IAClE,aAAa,CAAC,IAAc;QACpC,OAAO,IAAI,CAAC,UAAU,CAAC;IACzB,CAAC;IAED,iIAAiI;IACvH,oBAAoB,CAAC,IAAc;QAC3C,OAAO,IAAI,CAAC,iBAAiB,CAAC;IAChC,CAAC;IAED,gEAAgE;IACtD,qBAAqB,CAAC,KAAe;QAC7C,OAAO,SAAS,CAAC;IACnB,CAAC;IAED,4EAA4E;IAClE,qBAAqB,CAAC,KAAe;QAC7C,OAAO,SAAS,CAAC;IACnB,CAAC;IAED,yEAAyE;IAC/D,qBAAqB,CAAC,KAAe;QAC7C,OAAO,SAAS,CAAC;IACnB,CAAC;IAED;;OAEG;IACI,0BAA0B,CAAC,KAAc,EAAE,MAAgB,EAAE,aAA6B;QAC/F,MAAM,IAAI,GAAG,IAAI,CAAC,SAAS,CAAC,QAAQ,CAAC;QACrC,IAAI,SAAS,KAAK,IAAI;YACpB,OAAO;QAET,MAAM,QAAQ,GAAG,IAAI,CAAC,gBAAgB,CAAC,IAAI,CAAC,CAAC;QAC7C,IAAI,CAAC,0BAA0B,CAAC,KAAK,EAAE,MAAM,EAAE,QAAQ,EAAE,aAAa,CAAC,CAAC;IAC1E,CAAC;IAED,gBAAgB;IACT,gBAAgB,CAAC,eAAwB,IAAU,CAAC;IAE3D,6GAA6G;IAC7G,IAAW,YAAY;QACrB,OAAO,IAAI,CAAC;IACd,CAAC;IAED,iKAAiK;IACjK,IAAW,QAAQ,KAAc,OAAO,KAAK,CAAC,CAAC,CAAC;IAEhD;;;OAGG;IACH,IAAW,sBAAsB,KAAa,OAAO,sBAAsB,CAAC,WAAW,CAAC,CAAC,CAAC;IAE1F,wDAAwD;IACjD,YAAY,CAAC,MAAwB,EAAE,GAAmB,IAAU,CAAC;IAE5E;;MAEE;IACK,KAAK,CAAC,eAAe,CAAC,KAAuB,EAAE,EAAkB;QACtE,4DAA4D;QAC5D,OAAO,OAAO,CAAC,OAAO,CAAC,IAAI,CAAC,YAAY,CAAC,KAAK,EAAE,EAAE,CAAC,CAAC,CAAC;IACvD,CAAC;IAED;;;OAGG;IACO,4BAA4B;QACpC,OAAO,SAAS,CAAC;IACnB,CAAC;IAED;OACG;IACI,mBAAmB,CAA8C;IAExE;OACG;IACO,oBAAoB,CAAC,SAAgC;QAC7D,MAAM,IAAI,GAAG,IAAI,CAAC,SAAS,CAAC,IAAI,EAAE,CAAC;QACnC,QAAQ,IAAI,CAAC,SAAS,CAAC,UAAU,EAAE,CAAC;YAClC,KAAK,kBAAkB,CAAC,MAAM;gBAC5B,MAAM,CAAC,SAAS,KAAK,IAAI,CAAC,CAAC;gBAC3B,IAAI,CAAC,mBAAmB,CAAC,SAAS,CAAC,CAAC;gBACpC,MAAM;YACR,KAAK,kBAAkB,CAAC,OAAO;gBAC7B,SAAS,CAAC,WAAW,EAAE,CAAC;gBACxB,MAAM;QACV,CAAC;IACH,CAAC;IAED;;;;OAIG;IACI,2BAA2B;QAChC,IAAI,IAAI,CAAC,mBAAmB,EAAE,CAAC;YAC7B,0KAA0K;YAC1K,OAAO,IAAiC,CAAC;QAC3C,CAAC;QAED,OAAO,IAAI,CAAC,4BAA4B,EAAE,CAAC;IAC7C,CAAC;IAED;;;;;;;;;;;;;;OAcG;IACI,MAAM,CAAC,uBAAuB,CAAC,IAA+B;QACnE,OAAO,kCAAkC,CAAC,IAAI,CAAC,CAAC;IAClD,CAAC;CACF","sourcesContent":["/*---------------------------------------------------------------------------------------------\n* Copyright (c) Bentley Systems, Incorporated. All rights reserved.\n* See LICENSE.md in the project root for license terms and full copyright notice.\n*--------------------------------------------------------------------------------------------*/\n/** @packageDocumentation\n * @module Tiles\n */\n\nimport { assert, BeTimePoint } from \"@itwin/core-bentley\";\nimport { Matrix4d, Range1d, Range3d, Transform } from \"@itwin/core-geometry\";\nimport { ElementAlignedBox3d, FeatureAppearanceProvider, FrustumPlanes, HiddenLine, PlanarClipMaskPriority, ViewFlagOverrides } from \"@itwin/core-common\";\nimport { HitDetail } from \"../HitDetail\";\nimport { FeatureSymbology } from \"../render/FeatureSymbology\";\nimport { RenderClipVolume } from \"../render/RenderClipVolume\";\nimport { RenderMemory } from \"../render/RenderMemory\";\nimport { DecorateContext, SceneContext } from \"../ViewContext\";\nimport { ScreenViewport } from \"../Viewport\";\nimport {\n DisclosedTileTreeSet, GeometryTileTreeReference, MapFeatureInfoOptions, MapLayerFeatureInfo, RenderGraphicTileTreeArgs, TileDrawArgs, TileGeometryCollector, TileTree, TileTreeLoadStatus, TileTreeOwner, tileTreeReferenceFromRenderGraphic,\n} from \"./internal\";\n\n/** Describes the type of graphics produced by a [[TileTreeReference]].\n * @public\n * @extensions\n */\nexport enum TileGraphicType {\n /** Rendered behind all other geometry without depth. */\n BackgroundMap = 0,\n /** Rendered with normal scene graphics. */\n Scene = 1,\n /** Rendered in front of all other geometry. */\n Overlay = 2,\n}\n\n/** A reference to a [[TileTree]] suitable for drawing within a [[Viewport]]. The reference does not *own* its tile tree - it merely refers to it by\n * way of the tree's [[TileTreeOwner]].\n * The specific [[TileTree]] referenced by this object may change based on the current state of the Viewport in which it is drawn - for example,\n * as a result of changing the RenderMode, or animation settings, or classification settings, etc.\n * A reference to a TileTree is typically associated with a [[ViewState]], a [[DisplayStyleState]], or a [[Viewport]].\n * Multiple TileTreeReferences can refer to the same TileTree with different parameters and logic - for example, the same background map tiles can be displayed in two viewports with\n * differing levels of transparency.\n * @see [[TiledGraphicsProvider]] to supply custom [[TileTreeReference]]s to be drawn within a [[Viewport]].\n * @public\n * @extensions\n */\nexport abstract class TileTreeReference /* implements RenderMemory.Consumer */ {\n /** The owner of the currently-referenced [[TileTree]]. Do not store a direct reference to it, because it may change or become disposed at any time. */\n public abstract get treeOwner(): TileTreeOwner;\n\n /** Force a new tree owner / tile tree to be created for the current tile tree reference\n * @internal\n */\n public resetTreeOwner() {}\n\n /** Disclose *all* TileTrees use by this reference. This may include things like map tiles used for draping on terrain.\n * Override this and call super if you have such auxiliary trees.\n * @note Any tree *NOT* disclosed becomes a candidate for *purging* (being unloaded from memory along with all of its tiles and graphics).\n */\n public discloseTileTrees(trees: DisclosedTileTreeSet): void {\n const tree = this.treeOwner.tileTree;\n if (undefined !== tree)\n trees.add(tree);\n }\n\n /** Adds this reference's graphics to the scene. By default this invokes [[draw]]. */\n public addToScene(context: SceneContext): void {\n const args = this.createDrawArgs(context);\n if (undefined !== args)\n this.draw(args);\n }\n\n /** Adds this reference's graphics to the scene. By default this invokes [[TileTree.draw]] on the referenced TileTree, if it is loaded. */\n public draw(args: TileDrawArgs): void {\n args.tree.draw(args);\n }\n\n /** Return a tooltip describing the hit, or `undefined` if no tooltip can be supplied.\n * If you override this method, make sure to check that `hit` represents an entity belonging to your tile tree, e.g., by checking `hit.modelId` and `hit.sourceId`.\n * If you *don't* override this method, override [[canSupplyToolTip]] to return false.\n * Callers who want to obtain a tooltip should prefer [[getToolTipPromise]].\n */\n public async getToolTip(_hit: HitDetail): Promise<HTMLElement | string | undefined> { return undefined; }\n\n /** Return whether this TileTreeReference can supply a tooltip describing the entity represented by the specified hit.\n * [[getToolTipPromise]] calls [[getToolTip]] if and only if `canSupplyToolTip` returns `true`.\n * If your tile tree never supplies tooltips, override this to return `false`.\n */\n public canSupplyToolTip(_hit: HitDetail): boolean {\n return true;\n }\n\n /** Obtain a tooltip describing the specified `hit`, or `undefined` if this tile tree reference cannot supply a tooltip for the hit. */\n public getToolTipPromise(hit: HitDetail): Promise<HTMLElement | string | undefined> | undefined {\n return this.canSupplyToolTip(hit) ? this.getToolTip(hit).catch(() => undefined) : undefined;\n }\n\n /** Optionally return a MapLayerFeatureInfo object describing the hit.].\n * @alpha\n */\n public async getMapFeatureInfo(_hit: HitDetail, _options?: MapFeatureInfoOptions): Promise<MapLayerFeatureInfo[] | undefined> { return undefined; }\n\n /** Optionally add any decorations specific to this reference. For example, map tile trees may add a logo image and/or copyright attributions.\n * @note This is currently only invoked for background maps and TiledGraphicsProviders - others have no decorations, but if they did implement this it would not be called.\n */\n public decorate(_context: DecorateContext): void { }\n\n /** Unions this reference's range with the supplied range to help compute a volume in world space for fitting a viewport to its contents.\n * Override this function if a reference's range should not be included in the fit range, or a range different from its tile tree's range should be used.\n */\n public unionFitRange(union: Range3d): void {\n const contentRange = this.computeWorldContentRange();\n if (!contentRange.isNull)\n union.extendRange(contentRange);\n }\n\n /** Record graphics memory consumed by this tile tree reference. */\n public collectStatistics(stats: RenderMemory.Statistics): void {\n const tree = this.treeOwner.tileTree;\n if (undefined !== tree)\n tree.collectStatistics(stats);\n }\n\n /** Return true if the tile tree is fully loaded and ready to draw.\n * The default implementation returns true if the tile tree loading process completed (whether it resulted in success or failure).\n * @note Do *not* override this property - override [[_isLoadingComplete]] instead..\n * @public\n */\n public get isLoadingComplete(): boolean {\n switch (this.treeOwner.loadStatus) {\n case TileTreeLoadStatus.NotLoaded:\n case TileTreeLoadStatus.Loading:\n return false;\n case TileTreeLoadStatus.NotFound:\n return true; // we tried, and failed, to load.\n case TileTreeLoadStatus.Loaded:\n return this._isLoadingComplete;\n }\n }\n\n /** Override if additional asynchronous loading is required after the tile tree is successfully loaded, to indicate when that loading has completed.\n * @public\n */\n protected get _isLoadingComplete(): boolean {\n return true;\n }\n\n /** Create context for drawing the tile tree, if it is ready for drawing.\n * TileTreeReferences can override individual portions of the context, e.g. apply their own transform.\n * Returns undefined if, e.g., the tile tree is not yet loaded.\n */\n public createDrawArgs(context: SceneContext): TileDrawArgs | undefined {\n const tree = this.treeOwner.load();\n if (undefined === tree)\n return undefined;\n\n return new TileDrawArgs({\n context,\n tree,\n now: BeTimePoint.now(),\n location: this.computeTransform(tree),\n viewFlagOverrides: this.getViewFlagOverrides(tree),\n clipVolume: this.getClipVolume(tree),\n parentsAndChildrenExclusive: tree.parentsAndChildrenExclusive,\n symbologyOverrides: this.getSymbologyOverrides(tree),\n appearanceProvider: this.getAppearanceProvider(tree),\n hiddenLineSettings: this.getHiddenLineSettings(tree),\n animationTransformNodeId: this.getAnimationTransformNodeId(tree),\n groupNodeId: this.getGroupNodeId(tree),\n transformFromIModel: this.getTransformFromIModel(),\n });\n }\n\n /** @beta */\n public getTransformFromIModel(): Transform | undefined { return undefined; }\n\n /** @internal */\n protected getAnimationTransformNodeId(_tree: TileTree): number | undefined {\n return undefined;\n }\n /** @internal */\n protected getGroupNodeId(_tree: TileTree): number | undefined {\n return undefined;\n }\n\n /** Supply transform from this tile tree reference's location to iModel coordinate space.\n * @returns undefined if the TileTree is not yet loaded.\n */\n public getLocation(): Transform | undefined {\n const tree = this.treeOwner.load();\n return undefined !== tree ? this.computeTransform(tree) : undefined;\n }\n\n /** Compute a transform from this tile tree reference's coordinate space to the [[IModelConnection]]'s coordinate space. */\n protected computeTransform(tree: TileTree): Transform {\n return tree.iModelTransform.clone();\n }\n\n /** Compute the range of this tile tree's contents in world coordinates.\n * @returns The content range in world coodinates, or a null range if the tile tree is not loaded or has a null content range.\n */\n public computeWorldContentRange(): ElementAlignedBox3d {\n const range = new Range3d();\n const tree = this.treeOwner.tileTree;\n if (undefined !== tree && !tree.rootTile.contentRange.isNull)\n this.computeTransform(tree).multiplyRange(tree.rootTile.contentRange, range);\n\n return range;\n }\n\n /** Return the clip volume applied to this reference's tile tree, if any. */\n protected getClipVolume(tree: TileTree): RenderClipVolume | undefined {\n return tree.clipVolume;\n }\n\n /** Supply overrides that should be applied to the [[ViewState]]'s [ViewFlags]($common) when drawing this tile tree reference. */\n protected getViewFlagOverrides(tree: TileTree): ViewFlagOverrides {\n return tree.viewFlagOverrides;\n }\n\n /** Return overrides that *replace* any defined for the view. */\n protected getSymbologyOverrides(_tree: TileTree): FeatureSymbology.Overrides | undefined {\n return undefined;\n }\n\n /** Return a provider that can supplement the view's symbology overrides. */\n protected getAppearanceProvider(_tree: TileTree): FeatureAppearanceProvider | undefined {\n return undefined;\n }\n\n /** Return hidden line settings to replace those defined for the view. */\n protected getHiddenLineSettings(_tree: TileTree): HiddenLine.Settings | undefined {\n return undefined;\n }\n\n /* Extend range to include transformed range of this tile tree.\n * @internal\n */\n public accumulateTransformedRange(range: Range3d, matrix: Matrix4d, frustumPlanes?: FrustumPlanes) {\n const tree = this.treeOwner.tileTree;\n if (undefined === tree)\n return;\n\n const location = this.computeTransform(tree);\n tree.accumulateTransformedRange(range, matrix, location, frustumPlanes);\n }\n\n /** @internal */\n public getTerrainHeight(_terrainHeights: Range1d): void { }\n\n /** Return whether the geometry exposed by this tile tree reference should cast shadows on other geometry. */\n public get castsShadows(): boolean {\n return true;\n }\n\n /** Return whether this reference has global coverage. Mapping data is global and some non-primary models such as the OSM building layer have global coverage */\n public get isGlobal(): boolean { return false; }\n\n /** The [PlanarClipMaskPriority]($common) of this tile tree used to determine which tile trees contribute to a clip mask when\n * using [PlanarClipMaskMode.Priority]($common).\n * @beta\n */\n public get planarClipMaskPriority(): number { return PlanarClipMaskPriority.DesignModel; }\n\n /** @deprecated in 5.0 Use [addAttributions] instead. */\n public addLogoCards(_cards: HTMLTableElement, _vp: ScreenViewport): void { }\n\n /** Add attribution logo cards for the tile tree source logo cards to the viewport's logo div.\n * @beta\n */\n public async addAttributions(cards: HTMLTableElement, vp: ScreenViewport): Promise<void> {\n // eslint-disable-next-line @typescript-eslint/no-deprecated\n return Promise.resolve(this.addLogoCards(cards, vp));\n }\n\n /** Create a tile tree reference equivalent to this one that also supplies an implementation of [[GeometryTileTreeReference.collectTileGeometry]].\n * Return `undefined` if geometry collection is not supported.\n * @see [[createGeometryTreeReference]].\n */\n protected _createGeometryTreeReference(): GeometryTileTreeReference | undefined {\n return undefined;\n }\n\n /** If defined, supplies the implementation of [[GeometryTileTreeReference.collectTileGeometry]].\n */\n public collectTileGeometry?: (collector: TileGeometryCollector) => void;\n\n /** A function that can be assigned to [[collectTileGeometry]] to enable geometry collection for references to tile trees that support geometry collection.\n */\n protected _collectTileGeometry(collector: TileGeometryCollector): void {\n const tree = this.treeOwner.load();\n switch (this.treeOwner.loadStatus) {\n case TileTreeLoadStatus.Loaded:\n assert(undefined !== tree);\n tree.collectTileGeometry(collector);\n break;\n case TileTreeLoadStatus.Loading:\n collector.markLoading();\n break;\n }\n }\n\n /** Obtain a tile tree reference equivalent to this one that also supplies an implementation of [[GeometryTileTreeReference.collectTileGeometry]], or\n * undefined if geometry collection is not supported.\n * Currently, only terrain and reality model tiles support geometry collection.\n * @note Do not override this method - override [[_createGeometryTreeReference]] instead.\n */\n public createGeometryTreeReference(): GeometryTileTreeReference | undefined {\n if (this.collectTileGeometry) {\n // Unclear why compiler doesn't detect that `this` satisfies the GeometryTileTreeReference interface...it must be looking only at the types, not this particular instance.\n return this as GeometryTileTreeReference;\n }\n\n return this._createGeometryTreeReference();\n }\n\n /** Create a [[TileTreeReference]] that displays a pre-defined [[RenderGraphic]].\n * The reference can be used to add dynamic content to a [[Viewport]]'s scene as a [[TiledGraphicsProvider]], as in the following example:\n * ```ts\n * [[include:TileTreeReference_createFromRenderGraphic]]\n *```\n * Or, it can be used as a [[DynamicSpatialClassifier]] to contextualize a reality model, like so:\n * ```ts\n * [[include:TileTreeReference_DynamicClassifier]]\n * ```\n * It can also be used to mask out portions of the background map or terrain via [PlanarClipMaskSettings]($common), as shown below:\n * ```ts\n * [[include:TileTreeReference_DynamicClipMask]]\n * ```\n * @beta\n */\n public static createFromRenderGraphic(args: RenderGraphicTileTreeArgs): TileTreeReference {\n return tileTreeReferenceFromRenderGraphic(args);\n }\n}\n"]}
|
|
1
|
+
{"version":3,"file":"TileTreeReference.js","sourceRoot":"","sources":["../../../src/tile/TileTreeReference.ts"],"names":[],"mappings":"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","sourcesContent":["/*---------------------------------------------------------------------------------------------\n* Copyright (c) Bentley Systems, Incorporated. All rights reserved.\n* See LICENSE.md in the project root for license terms and full copyright notice.\n*--------------------------------------------------------------------------------------------*/\n/** @packageDocumentation\n * @module Tiles\n */\n\nimport { assert, BeTimePoint } from \"@itwin/core-bentley\";\nimport { Matrix4d, Range1d, Range3d, Transform } from \"@itwin/core-geometry\";\nimport { ElementAlignedBox3d, FeatureAppearanceProvider, FrustumPlanes, HiddenLine, PlanarClipMaskPriority, ViewFlagOverrides } from \"@itwin/core-common\";\nimport { HitDetail } from \"../HitDetail\";\nimport { FeatureSymbology } from \"../render/FeatureSymbology\";\nimport { RenderClipVolume } from \"../render/RenderClipVolume\";\nimport { RenderMemory } from \"../render/RenderMemory\";\nimport { DecorateContext, SceneContext } from \"../ViewContext\";\nimport { ScreenViewport } from \"../Viewport\";\nimport {\n DisclosedTileTreeSet, GeometryTileTreeReference, MapFeatureInfoOptions, MapLayerFeatureInfo, RenderGraphicTileTreeArgs, TileDrawArgs, TileGeometryCollector, TileTree, TileTreeLoadStatus, TileTreeOwner, tileTreeReferenceFromRenderGraphic,\n} from \"./internal\";\n\n/** Describes the type of graphics produced by a [[TileTreeReference]].\n * @public\n * @extensions\n */\nexport enum TileGraphicType {\n /** Rendered behind all other geometry without depth. */\n BackgroundMap = 0,\n /** Rendered with normal scene graphics. */\n Scene = 1,\n /** Rendered in front of all other geometry. */\n Overlay = 2,\n}\n\n/** A reference to a [[TileTree]] suitable for drawing within a [[Viewport]]. The reference does not *own* its tile tree - it merely refers to it by\n * way of the tree's [[TileTreeOwner]].\n * The specific [[TileTree]] referenced by this object may change based on the current state of the Viewport in which it is drawn - for example,\n * as a result of changing the RenderMode, or animation settings, or classification settings, etc.\n * A reference to a TileTree is typically associated with a [[ViewState]], a [[DisplayStyleState]], or a [[Viewport]].\n * Multiple TileTreeReferences can refer to the same TileTree with different parameters and logic - for example, the same background map tiles can be displayed in two viewports with\n * differing levels of transparency.\n * @see [[TiledGraphicsProvider]] to supply custom [[TileTreeReference]]s to be drawn within a [[Viewport]].\n * @public\n * @extensions\n */\nexport abstract class TileTreeReference /* implements RenderMemory.Consumer */ {\n /** The owner of the currently-referenced [[TileTree]]. Do not store a direct reference to it, because it may change or become disposed at any time. */\n public abstract get treeOwner(): TileTreeOwner;\n\n /** Force a new tree owner / tile tree to be created for the current tile tree reference\n * @internal\n */\n public resetTreeOwner() {}\n\n /** Disclose *all* TileTrees use by this reference. This may include things like map tiles used for draping on terrain.\n * Override this and call super if you have such auxiliary trees.\n * @note Any tree *NOT* disclosed becomes a candidate for *purging* (being unloaded from memory along with all of its tiles and graphics).\n */\n public discloseTileTrees(trees: DisclosedTileTreeSet): void {\n const tree = this.treeOwner.tileTree;\n if (undefined !== tree)\n trees.add(tree);\n }\n\n /** Adds this reference's graphics to the scene. By default this invokes [[draw]]. */\n public addToScene(context: SceneContext): void {\n const args = this.createDrawArgs(context);\n if (undefined !== args)\n this.draw(args);\n }\n\n /** Adds this reference's graphics to the scene. By default this invokes [[TileTree.draw]] on the referenced TileTree, if it is loaded. */\n public draw(args: TileDrawArgs): void {\n args.tree.draw(args);\n }\n\n /** Return a tooltip describing the hit, or `undefined` if no tooltip can be supplied.\n * If you override this method, make sure to check that `hit` represents an entity belonging to your tile tree, e.g., by checking `hit.modelId` and `hit.sourceId`.\n * If you *don't* override this method, override [[canSupplyToolTip]] to return false.\n * Callers who want to obtain a tooltip should prefer [[getToolTipPromise]].\n */\n public async getToolTip(_hit: HitDetail): Promise<HTMLElement | string | undefined> { return undefined; }\n\n /** Return whether this TileTreeReference can supply a tooltip describing the entity represented by the specified hit.\n * [[getToolTipPromise]] calls [[getToolTip]] if and only if `canSupplyToolTip` returns `true`.\n * If your tile tree never supplies tooltips, override this to return `false`.\n */\n public canSupplyToolTip(_hit: HitDetail): boolean {\n return true;\n }\n\n /** Obtain a tooltip describing the specified `hit`, or `undefined` if this tile tree reference cannot supply a tooltip for the hit. */\n public getToolTipPromise(hit: HitDetail): Promise<HTMLElement | string | undefined> | undefined {\n return this.canSupplyToolTip(hit) ? this.getToolTip(hit).catch(() => undefined) : undefined;\n }\n\n /** Optionally return a MapLayerFeatureInfo object describing the hit.].\n * @alpha\n */\n public async getMapFeatureInfo(_hit: HitDetail, _options?: MapFeatureInfoOptions): Promise<MapLayerFeatureInfo[] | undefined> { return undefined; }\n\n /** Optionally add any decorations specific to this reference. For example, map tile trees may add a logo image and/or copyright attributions.\n * @note This is currently only invoked for background maps and TiledGraphicsProviders - others have no decorations, but if they did implement this it would not be called.\n */\n public decorate(_context: DecorateContext): void { }\n\n /** Unions this reference's range with the supplied range to help compute a volume in world space for fitting a viewport to its contents.\n * Override this function if a reference's range should not be included in the fit range, or a range different from its tile tree's range should be used.\n */\n public unionFitRange(union: Range3d): void {\n const contentRange = this.computeWorldContentRange();\n if (!contentRange.isNull)\n union.extendRange(contentRange);\n }\n\n /** Record graphics memory consumed by this tile tree reference. */\n public collectStatistics(stats: RenderMemory.Statistics): void {\n const tree = this.treeOwner.tileTree;\n if (undefined !== tree)\n tree.collectStatistics(stats);\n }\n\n /** Return true if the tile tree is fully loaded and ready to draw.\n * The default implementation returns true if the tile tree loading process completed (whether it resulted in success or failure).\n * @note Do *not* override this property - override [[_isLoadingComplete]] instead..\n * @public\n */\n public get isLoadingComplete(): boolean {\n switch (this.treeOwner.loadStatus) {\n case TileTreeLoadStatus.NotLoaded:\n case TileTreeLoadStatus.Loading:\n return false;\n case TileTreeLoadStatus.NotFound:\n return true; // we tried, and failed, to load.\n case TileTreeLoadStatus.Loaded:\n return this._isLoadingComplete;\n }\n }\n\n /** Override if additional asynchronous loading is required after the tile tree is successfully loaded, to indicate when that loading has completed.\n * @public\n */\n protected get _isLoadingComplete(): boolean {\n return true;\n }\n\n /** Create context for drawing the tile tree, if it is ready for drawing.\n * TileTreeReferences can override individual portions of the context, e.g. apply their own transform.\n * Returns undefined if, e.g., the tile tree is not yet loaded.\n */\n public createDrawArgs(context: SceneContext): TileDrawArgs | undefined {\n const tree = this.treeOwner.load();\n if (undefined === tree)\n return undefined;\n\n return new TileDrawArgs({\n context,\n tree,\n now: BeTimePoint.now(),\n location: this.computeTransform(tree),\n viewFlagOverrides: this.getViewFlagOverrides(tree),\n clipVolume: this.getClipVolume(tree),\n parentsAndChildrenExclusive: tree.parentsAndChildrenExclusive,\n symbologyOverrides: this.getSymbologyOverrides(tree),\n appearanceProvider: this.getAppearanceProvider(tree),\n hiddenLineSettings: this.getHiddenLineSettings(tree),\n animationTransformNodeId: this.getAnimationTransformNodeId(tree),\n groupNodeId: this.getGroupNodeId(tree),\n transformFromIModel: this.getTransformFromIModel(),\n });\n }\n\n /** @beta */\n public getTransformFromIModel(): Transform | undefined { return undefined; }\n\n /** @internal */\n protected getAnimationTransformNodeId(_tree: TileTree): number | undefined {\n return undefined;\n }\n /** @internal */\n protected getGroupNodeId(_tree: TileTree): number | undefined {\n return undefined;\n }\n\n /** Supply transform from this tile tree reference's location to iModel coordinate space.\n * @returns undefined if the TileTree is not yet loaded.\n */\n public getLocation(): Transform | undefined {\n const tree = this.treeOwner.load();\n return undefined !== tree ? this.computeTransform(tree) : undefined;\n }\n\n /** Compute a transform from this tile tree reference's coordinate space to the [[IModelConnection]]'s coordinate space. */\n protected computeTransform(tree: TileTree): Transform {\n return tree.iModelTransform.clone();\n }\n\n /** Compute the range of this tile tree's contents in world coordinates.\n * @returns The content range in world coodinates, or a null range if the tile tree is not loaded or has a null content range.\n */\n public computeWorldContentRange(): ElementAlignedBox3d {\n const range = new Range3d();\n const tree = this.treeOwner.tileTree;\n if (undefined !== tree && !tree.rootTile.contentRange.isNull)\n this.computeTransform(tree).multiplyRange(tree.rootTile.contentRange, range);\n\n return range;\n }\n\n /** Return the clip volume applied to this reference's tile tree, if any. */\n protected getClipVolume(tree: TileTree): RenderClipVolume | undefined {\n return tree.clipVolume;\n }\n\n /** Supply overrides that should be applied to the [[ViewState]]'s [ViewFlags]($common) when drawing this tile tree reference. */\n protected getViewFlagOverrides(tree: TileTree): ViewFlagOverrides {\n return tree.viewFlagOverrides;\n }\n\n /** Return overrides that *replace* any defined for the view. */\n protected getSymbologyOverrides(_tree: TileTree): FeatureSymbology.Overrides | undefined {\n return undefined;\n }\n\n /** Return a provider that can supplement the view's symbology overrides. */\n protected getAppearanceProvider(_tree: TileTree): FeatureAppearanceProvider | undefined {\n return undefined;\n }\n\n /** Return hidden line settings to replace those defined for the view. */\n protected getHiddenLineSettings(_tree: TileTree): HiddenLine.Settings | undefined {\n return undefined;\n }\n\n /* Extend range to include transformed range of this tile tree.\n * @internal\n */\n public accumulateTransformedRange(range: Range3d, matrix: Matrix4d, frustumPlanes?: FrustumPlanes) {\n const tree = this.treeOwner.tileTree;\n if (undefined === tree)\n return;\n\n const location = this.computeTransform(tree);\n tree.accumulateTransformedRange(range, matrix, location, frustumPlanes);\n }\n\n /** @internal */\n public getTerrainHeight(_terrainHeights: Range1d): void { }\n\n /** Return whether the geometry exposed by this tile tree reference should cast shadows on other geometry. */\n public get castsShadows(): boolean {\n return true;\n }\n\n /** Return whether this reference has global coverage. Mapping data is global and some non-primary models such as the OSM building layer have global coverage */\n public get isGlobal(): boolean { return false; }\n\n /** The [PlanarClipMaskPriority]($common) of this tile tree used to determine which tile trees contribute to a clip mask when\n * using [PlanarClipMaskMode.Priority]($common).\n * @beta\n */\n public get planarClipMaskPriority(): number { return PlanarClipMaskPriority.DesignModel; }\n\n /** @deprecated in 5.0 - will not be removed until after 2026-06-13. Use [addAttributions] instead. */\n public addLogoCards(_cards: HTMLTableElement, _vp: ScreenViewport): void { }\n\n /** Add attribution logo cards for the tile tree source logo cards to the viewport's logo div.\n * @beta\n */\n public async addAttributions(cards: HTMLTableElement, vp: ScreenViewport): Promise<void> {\n // eslint-disable-next-line @typescript-eslint/no-deprecated\n return Promise.resolve(this.addLogoCards(cards, vp));\n }\n\n /** Create a tile tree reference equivalent to this one that also supplies an implementation of [[GeometryTileTreeReference.collectTileGeometry]].\n * Return `undefined` if geometry collection is not supported.\n * @see [[createGeometryTreeReference]].\n */\n protected _createGeometryTreeReference(): GeometryTileTreeReference | undefined {\n return undefined;\n }\n\n /** If defined, supplies the implementation of [[GeometryTileTreeReference.collectTileGeometry]].\n */\n public collectTileGeometry?: (collector: TileGeometryCollector) => void;\n\n /** A function that can be assigned to [[collectTileGeometry]] to enable geometry collection for references to tile trees that support geometry collection.\n */\n protected _collectTileGeometry(collector: TileGeometryCollector): void {\n const tree = this.treeOwner.load();\n switch (this.treeOwner.loadStatus) {\n case TileTreeLoadStatus.Loaded:\n assert(undefined !== tree);\n tree.collectTileGeometry(collector);\n break;\n case TileTreeLoadStatus.Loading:\n collector.markLoading();\n break;\n }\n }\n\n /** Obtain a tile tree reference equivalent to this one that also supplies an implementation of [[GeometryTileTreeReference.collectTileGeometry]], or\n * undefined if geometry collection is not supported.\n * Currently, only terrain and reality model tiles support geometry collection.\n * @note Do not override this method - override [[_createGeometryTreeReference]] instead.\n */\n public createGeometryTreeReference(): GeometryTileTreeReference | undefined {\n if (this.collectTileGeometry) {\n // Unclear why compiler doesn't detect that `this` satisfies the GeometryTileTreeReference interface...it must be looking only at the types, not this particular instance.\n return this as GeometryTileTreeReference;\n }\n\n return this._createGeometryTreeReference();\n }\n\n /** Create a [[TileTreeReference]] that displays a pre-defined [[RenderGraphic]].\n * The reference can be used to add dynamic content to a [[Viewport]]'s scene as a [[TiledGraphicsProvider]], as in the following example:\n * ```ts\n * [[include:TileTreeReference_createFromRenderGraphic]]\n *```\n * Or, it can be used as a [[DynamicSpatialClassifier]] to contextualize a reality model, like so:\n * ```ts\n * [[include:TileTreeReference_DynamicClassifier]]\n * ```\n * It can also be used to mask out portions of the background map or terrain via [PlanarClipMaskSettings]($common), as shown below:\n * ```ts\n * [[include:TileTreeReference_DynamicClipMask]]\n * ```\n * @beta\n */\n public static createFromRenderGraphic(args: RenderGraphicTileTreeArgs): TileTreeReference {\n return tileTreeReferenceFromRenderGraphic(args);\n }\n}\n"]}
|
|
@@ -168,7 +168,7 @@ class CesiumTerrainProvider extends TerrainMeshProvider {
|
|
|
168
168
|
this._assetId = opts.dataSource || CesiumTerrainAssetId.Default;
|
|
169
169
|
this._tokenTimeOut = BeTimePoint.now().plus(CesiumTerrainProvider._tokenTimeoutInterval);
|
|
170
170
|
}
|
|
171
|
-
/** @deprecated in 5.0 Use [addAttributions] instead. */
|
|
171
|
+
/** @deprecated in 5.0 - will not be removed until after 2026-06-13. Use [addAttributions] instead. */
|
|
172
172
|
addLogoCards(cards) {
|
|
173
173
|
if (cards.dataset.cesiumIonLogoCard)
|
|
174
174
|
return;
|