@itwin/core-frontend 5.1.0-dev.55 → 5.1.0-dev.56
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/lib/cjs/DisplayStyleState.d.ts +37 -0
- package/lib/cjs/DisplayStyleState.d.ts.map +1 -1
- package/lib/cjs/DisplayStyleState.js +65 -0
- package/lib/cjs/DisplayStyleState.js.map +1 -1
- package/lib/cjs/Viewport.d.ts.map +1 -1
- package/lib/cjs/Viewport.js +16 -0
- package/lib/cjs/Viewport.js.map +1 -1
- package/lib/cjs/core-frontend.d.ts +1 -1
- package/lib/cjs/core-frontend.js +1 -1
- package/lib/cjs/core-frontend.js.map +1 -1
- package/lib/cjs/internal/ScriptUtils.d.ts +5 -0
- package/lib/cjs/internal/ScriptUtils.d.ts.map +1 -0
- package/lib/cjs/internal/ScriptUtils.js +120 -0
- package/lib/cjs/internal/ScriptUtils.js.map +1 -0
- package/lib/cjs/internal/tile/IModelTile.js.map +1 -1
- package/lib/cjs/internal/tile/IModelTileTree.d.ts +4 -2
- package/lib/cjs/internal/tile/IModelTileTree.d.ts.map +1 -1
- package/lib/cjs/internal/tile/IModelTileTree.js +58 -0
- package/lib/cjs/internal/tile/IModelTileTree.js.map +1 -1
- package/lib/cjs/internal/tile/PrimaryTileTree.js +1 -1
- package/lib/cjs/internal/tile/PrimaryTileTree.js.map +1 -1
- package/lib/cjs/tile/ImdlReader.js.map +1 -1
- package/lib/cjs/tile/TileTree.d.ts +14 -1
- package/lib/cjs/tile/TileTree.d.ts.map +1 -1
- package/lib/cjs/tile/TileTree.js +13 -0
- package/lib/cjs/tile/TileTree.js.map +1 -1
- package/lib/esm/DisplayStyleState.d.ts +37 -0
- package/lib/esm/DisplayStyleState.d.ts.map +1 -1
- package/lib/esm/DisplayStyleState.js +65 -0
- package/lib/esm/DisplayStyleState.js.map +1 -1
- package/lib/esm/Viewport.d.ts.map +1 -1
- package/lib/esm/Viewport.js +16 -0
- package/lib/esm/Viewport.js.map +1 -1
- package/lib/esm/core-frontend.d.ts +1 -1
- package/lib/esm/core-frontend.js +1 -1
- package/lib/esm/core-frontend.js.map +1 -1
- package/lib/esm/internal/ScriptUtils.d.ts +5 -0
- package/lib/esm/internal/ScriptUtils.d.ts.map +1 -0
- package/lib/esm/internal/ScriptUtils.js +117 -0
- package/lib/esm/internal/ScriptUtils.js.map +1 -0
- package/lib/esm/internal/tile/IModelTile.js.map +1 -1
- package/lib/esm/internal/tile/IModelTileTree.d.ts +4 -2
- package/lib/esm/internal/tile/IModelTileTree.d.ts.map +1 -1
- package/lib/esm/internal/tile/IModelTileTree.js +60 -2
- package/lib/esm/internal/tile/IModelTileTree.js.map +1 -1
- package/lib/esm/internal/tile/PrimaryTileTree.js +1 -1
- package/lib/esm/internal/tile/PrimaryTileTree.js.map +1 -1
- package/lib/esm/tile/ImdlReader.js.map +1 -1
- package/lib/esm/tile/TileTree.d.ts +14 -1
- package/lib/esm/tile/TileTree.d.ts.map +1 -1
- package/lib/esm/tile/TileTree.js +13 -0
- package/lib/esm/tile/TileTree.js.map +1 -1
- package/lib/public/scripts/parse-imdl-worker.js +1 -1
- package/lib/workers/webpack/parse-imdl-worker.js +1 -1
- package/package.json +20 -20
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"IModelTileTree.js","sourceRoot":"","sources":["../../../../src/internal/tile/IModelTileTree.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, GuidString, Id64Array, Id64String } from \"@itwin/core-bentley\";\nimport { Range3d, Transform } from \"@itwin/core-geometry\";\nimport {\n BatchType, ContentIdProvider, EdgeOptions, ElementAlignedBox3d, ElementGeometryChange, FeatureAppearanceProvider,\n IModelTileTreeId, IModelTileTreeProps, ModelGeometryChanges, RenderSchedule, TileProps\n} from \"@itwin/core-common\";\nimport { IModelApp } from \"../../IModelApp\";\nimport { IModelConnection } from \"../../IModelConnection\";\nimport { GraphicalEditingScope } from \"../../GraphicalEditingScope\";\nimport { RenderSystem } from \"../../render/RenderSystem\";\nimport { GraphicBranch } from \"../../render/GraphicBranch\";\nimport {\n acquireImdlDecoder, DynamicIModelTile, ImdlDecoder, IModelTile, IModelTileParams, iModelTileParamsFromJSON, LayerTileTreeHandler, MapLayerTreeSetting, Tile,\n TileContent, TileDrawArgs, TileLoadPriority, TileParams, TileRequest, TileRequestChannel, TileTree, TileTreeParams\n} from \"../../tile/internal\";\n\nexport interface IModelTileTreeOptions {\n readonly allowInstancing: boolean;\n readonly edges: EdgeOptions | false;\n readonly batchType: BatchType;\n readonly is3d: boolean;\n readonly timeline: RenderSchedule.ModelTimeline | undefined;\n}\n\n// Overrides nothing.\nconst viewFlagOverrides = {};\n\n/** Parameters used to construct an [[IModelTileTree]]\n */\nexport interface IModelTileTreeParams extends TileTreeParams {\n rootTile: TileProps;\n contentIdQualifier?: string;\n geometryGuid?: GuidString;\n maxInitialTilesToSkip?: number;\n formatVersion?: number;\n tileScreenSize: number;\n options: IModelTileTreeOptions;\n transformNodeRanges?: Map<number, Range3d>;\n}\n\nexport function iModelTileTreeParamsFromJSON(props: IModelTileTreeProps, iModel: IModelConnection, modelId: Id64String, options: IModelTileTreeOptions): IModelTileTreeParams {\n const location = Transform.fromJSON(props.location);\n const { formatVersion, id, rootTile, contentIdQualifier, maxInitialTilesToSkip, geometryGuid } = props;\n const tileScreenSize = props.tileScreenSize ?? 512;\n\n let contentRange;\n if (undefined !== props.contentRange)\n contentRange = Range3d.fromJSON<ElementAlignedBox3d>(props.contentRange);\n\n let transformNodeRanges;\n if (props.transformNodeRanges) {\n transformNodeRanges = new Map<number, Range3d>();\n for (const entry of props.transformNodeRanges)\n transformNodeRanges.set(entry.id, Range3d.fromJSON(entry));\n }\n\n const priority = BatchType.Primary === options.batchType ? TileLoadPriority.Primary : TileLoadPriority.Classifier;\n return {\n formatVersion,\n id,\n rootTile,\n iModel,\n location,\n modelId,\n contentRange,\n geometryGuid,\n contentIdQualifier,\n maxInitialTilesToSkip,\n priority,\n options,\n tileScreenSize,\n transformNodeRanges,\n };\n}\n\nfunction findElementChangesForModel(changes: Iterable<ModelGeometryChanges>, modelId: Id64String): Iterable<ElementGeometryChange> | undefined {\n for (const change of changes)\n if (change.id === modelId)\n return change.elements;\n\n return undefined;\n}\n\n/** No graphical editing scope is currently active. */\nclass StaticState {\n public readonly type = \"static\";\n public readonly [Symbol.dispose]!: () => void;\n\n public constructor(root: RootTile) {\n this[Symbol.dispose] = GraphicalEditingScope.onEnter.addOnce((scope: GraphicalEditingScope) => {\n root.transition(new InteractiveState(scope, root));\n });\n }\n}\n\n/** A graphical editing scope is currently active, but no elements in the tile tree's model have been modified. */\nclass InteractiveState {\n public readonly type = \"interactive\";\n public readonly [Symbol.dispose]!: () => void;\n\n public constructor(scope: GraphicalEditingScope, root: RootTile) {\n const removeEndingListener = scope.onExiting.addOnce((_) => {\n root.transition(new StaticState(root));\n });\n\n const removeGeomListener = scope.onGeometryChanges.addListener((changes: Iterable<ModelGeometryChanges>, _scope: GraphicalEditingScope) => {\n assert(scope === _scope);\n const elemChanges = findElementChangesForModel(changes, root.tree.modelId);\n if (elemChanges)\n root.transition(new DynamicState(root, elemChanges, scope));\n });\n\n this[Symbol.dispose] = () => {\n removeEndingListener();\n removeGeomListener();\n };\n }\n}\n\n/** Elements in the tile tree's model have been modified during the current editing scope. */\nclass DynamicState {\n public readonly type = \"dynamic\";\n public readonly rootTile: DynamicIModelTile;\n private readonly _dispose: () => void;\n\n public [Symbol.dispose](): void {\n this._dispose();\n this.rootTile[Symbol.dispose]();\n }\n\n public constructor(root: RootTile, elemChanges: Iterable<ElementGeometryChange>, scope: GraphicalEditingScope) {\n this.rootTile = DynamicIModelTile.create(root, elemChanges);\n\n const removeEndingListener = scope.onExiting.addOnce((_) => {\n root.transition(new StaticState(root));\n });\n\n const removeGeomListener = scope.onGeometryChanges.addListener((changes: Iterable<ModelGeometryChanges>, _scope: GraphicalEditingScope) => {\n assert(scope === _scope);\n const elems = findElementChangesForModel(changes, root.tree.modelId);\n if (elems)\n this.rootTile.handleGeometryChanges(elems);\n });\n\n this._dispose = () => {\n removeEndingListener();\n removeGeomListener();\n };\n }\n}\n\n/** The tile tree has been disposed. */\nclass DisposedState {\n public readonly type = \"disposed\";\n public [Symbol.dispose](): void { }\n}\n\nconst disposedState = new DisposedState();\n\n/** The current state of an [[IModelTileTree]]'s [[RootTile]]. The tile transitions between these states primarily in response to GraphicalEditingScope events. */\ntype RootTileState = StaticState | InteractiveState | DynamicState | DisposedState;\n\n/** The root tile for an [[IModelTileTree]].\n */\nexport type RootIModelTile = Tile & { tileScreenSize: number, updateDynamicRange: (childTile: Tile) => void };\n\n/** Represents the root [[Tile]] of an [[IModelTileTree]]. The root tile has one or two direct child tiles which represent different branches of the tree:\n * - The static branch, containing tiles that represent the state of the model's geometry as of the beginning of the current [[GraphicalEditingScope]].\n * - The dynamic branch, containing tiles representing the geometry of elements that have been modified during the current [[GraphicalEditingScope]].\n * If no editing scope is currently active, the dynamic branch does not exist, and the static branch represents the current state of all elements in the model.\n */\nclass RootTile extends Tile {\n public readonly staticBranch: IModelTile;\n private _tileState: RootTileState;\n private readonly _staticTreeContentRange?: Range3d;\n\n public get tileState(): RootTileState {\n return this._tileState;\n }\n\n public constructor(params: IModelTileParams, tree: IModelTileTree) {\n const rootParams: TileParams = {\n ...params,\n range: params.range.clone(),\n contentRange: params.contentRange?.clone(),\n isLeaf: false,\n contentId: \"\",\n };\n\n super(rootParams, tree);\n this.staticBranch = new IModelTile(params, tree);\n this._staticTreeContentRange = tree.contentRange?.clone();\n\n if (!this._contentRange)\n this._contentRange = this.staticBranch.contentRange.clone();\n\n // Determine initial state.\n const scope = tree.iModel.isBriefcaseConnection() ? tree.iModel.editingScope : undefined;\n if (undefined === scope) {\n this._tileState = new StaticState(this);\n } else {\n const changes = scope.getGeometryChangesForModel(tree.modelId);\n this._tileState = changes ? new DynamicState(this, changes, scope) : new InteractiveState(scope, this);\n }\n\n // Load the children immediately.\n this.setIsReady();\n this.loadChildren();\n }\n\n public override[Symbol.dispose](): void {\n this.transition(disposedState);\n super[Symbol.dispose]();\n }\n\n protected _loadChildren(resolve: (children: Tile[] | undefined) => void, _reject: (error: Error) => void): void {\n const children: Tile[] = [this.staticBranch];\n if (this._tileState.type === \"dynamic\")\n children.push(this._tileState.rootTile);\n\n resolve(children);\n }\n\n public get channel(): TileRequestChannel {\n throw new Error(\"Root iModel tile has no content\");\n }\n\n public async requestContent(_isCanceled: () => boolean): Promise<TileRequest.Response> {\n assert(false, \"Root iModel tile has no content\");\n return undefined;\n }\n\n public async readContent(_data: TileRequest.ResponseData, _system: RenderSystem, _isCanceled: () => boolean): Promise<TileContent> {\n throw new Error(\"Root iModel tile has no content\");\n }\n\n public draw(args: TileDrawArgs, tiles: Tile[], numStaticTiles: number): void {\n assert(numStaticTiles >= 0 && numStaticTiles <= tiles.length);\n\n // Draw the static tiles.\n for (let i = 0; i < numStaticTiles; i++)\n tiles[i].drawGraphics(args);\n\n if (\"dynamic\" !== this._tileState.type || numStaticTiles === tiles.length) {\n if (\"dynamic\" === this._tileState.type)\n args.addAppearanceProvider(this._tileState.rootTile.appearanceProvider);\n\n args.drawGraphics();\n return;\n }\n\n // We need to hide any modified elements in the static tiles. Pull their graphics into a separate branch.\n if (!args.graphics.isEmpty) {\n const staticBranch = new GraphicBranch();\n for (const staticGraphic of args.graphics.entries)\n staticBranch.add(staticGraphic);\n\n let appearanceProvider = this._tileState.rootTile.appearanceProvider;\n if (args.appearanceProvider)\n appearanceProvider = FeatureAppearanceProvider.chain(args.appearanceProvider, appearanceProvider);\n\n args.graphics.clear();\n args.graphics.add(args.context.createGraphicBranch(staticBranch, Transform.createIdentity(), { appearanceProvider }));\n }\n\n // Draw the dynamic tiles.\n for (let i = numStaticTiles; i < tiles.length; i++)\n tiles[i].drawGraphics(args);\n\n args.drawGraphics();\n }\n\n public prune(olderThan: BeTimePoint): void {\n this.staticBranch.pruneChildren(olderThan);\n if (\"dynamic\" === this._tileState.type)\n this._tileState.rootTile.pruneChildren(olderThan);\n }\n\n public transition(newState: RootTileState): void {\n assert(newState.type !== this._tileState.type);\n const resetRange = \"dynamic\" === this._tileState.type;\n\n assert(undefined !== this.children);\n if (\"dynamic\" === this._tileState.type) {\n assert(2 === this.children.length);\n this.children.pop();\n } else if (\"dynamic\" === newState.type) {\n assert(1 === this.children.length);\n this.children.push(newState.rootTile);\n }\n\n this._tileState[Symbol.dispose]();\n this._tileState = newState;\n\n if (resetRange)\n this.resetRange();\n }\n\n private resetRange(): void {\n this.staticBranch.range.clone(this.range);\n this.staticBranch.contentRange.clone(this._contentRange);\n\n if (this._staticTreeContentRange && this.tree.contentRange)\n this._staticTreeContentRange.clone(this.tree.contentRange);\n\n }\n\n public get tileScreenSize(): number {\n return this.staticBranch.iModelTree.tileScreenSize;\n }\n\n public updateDynamicRange(tile: Tile): void {\n this.resetRange();\n if (this._staticTreeContentRange && this.tree.contentRange && !tile.contentRange.isNull)\n this.tree.contentRange.extendRange(tile.contentRange);\n\n if (!tile.range.isNull)\n this.range.extendRange(tile.range);\n\n assert(undefined !== this._contentRange);\n if (!tile.contentRange.isNull)\n this._contentRange.extendRange(tile.contentRange);\n }\n}\n\n/** A TileTree whose contents are derived from geometry stored in a Model in an IModelDb.\n * @internal exported strictly for display-test-app until we remove CommonJS support.\n */\nexport class IModelTileTree extends TileTree {\n public readonly decoder: ImdlDecoder;\n private readonly _rootTile: RootTile;\n private readonly _options: IModelTileTreeOptions;\n private readonly _transformNodeRanges?: Map<number, Range3d>;\n public readonly contentIdQualifier?: string;\n public readonly geometryGuid?: string;\n public readonly maxTilesToSkip: number;\n public readonly maxInitialTilesToSkip: number;\n public readonly contentIdProvider: ContentIdProvider;\n public readonly stringifiedSectionClip?: string;\n public readonly tileScreenSize: number;\n public readonly iModelTileTreeId: IModelTileTreeId;\n /** Strictly for debugging/testing - forces tile selection to halt at the specified depth. */\n public debugMaxDepth?: number;\n /** A little hacky...we must not override selectTiles(), but draw() needs to distinguish between static and dynamic tiles.\n * So _selectTiles() puts the static tiles first in the Tile[] array, and records the number of static tiles selected, to be\n * used by draw().\n */\n private _numStaticTilesSelected = 0;\n public layerImageryTrees: MapLayerTreeSetting[] = [];\n\n private readonly _layerHandler: LayerTileTreeHandler;\n public override get layerHandler() { return this._layerHandler; }\n\n public constructor(params: IModelTileTreeParams, treeId: IModelTileTreeId) {\n super(params);\n this.iModelTileTreeId = treeId;\n this.contentIdQualifier = params.contentIdQualifier;\n this.geometryGuid = params.geometryGuid;\n this.tileScreenSize = params.tileScreenSize;\n this._layerHandler = new LayerTileTreeHandler(this);\n\n if (BatchType.Primary === treeId.type)\n this.stringifiedSectionClip = treeId.sectionCut;\n\n this.maxInitialTilesToSkip = params.maxInitialTilesToSkip ?? 0;\n this.maxTilesToSkip = IModelApp.tileAdmin.maximumLevelsToSkip;\n\n this._options = params.options;\n this._transformNodeRanges = params.transformNodeRanges;\n\n this.contentIdProvider = ContentIdProvider.create(params.options.allowInstancing, IModelApp.tileAdmin, params.formatVersion);\n\n params.rootTile.contentId = this.contentIdProvider.rootContentId;\n this._rootTile = new RootTile(iModelTileParamsFromJSON(params.rootTile, undefined), this);\n\n this.decoder = acquireImdlDecoder({\n type: this.batchType,\n omitEdges: false === this.edgeOptions,\n timeline: this.timeline,\n iModel: this.iModel,\n batchModelId: this.modelId,\n is3d: this.is3d,\n containsTransformNodes: this.containsTransformNodes,\n noWorker: !IModelApp.tileAdmin.decodeImdlInWorker,\n });\n }\n\n public override[Symbol.dispose](): void {\n this.decoder.release();\n super[Symbol.dispose]();\n }\n\n public get maxDepth() { return 32; }\n public get rootTile(): Tile { return this._rootTile; }\n /** Exposed chiefly for tests. */\n public get staticBranch(): IModelTile { return this._rootTile.staticBranch; }\n public get is3d() { return this._options.is3d; }\n public override get isContentUnbounded() { return false; }\n public get viewFlagOverrides() { return viewFlagOverrides; }\n\n public get batchType(): BatchType { return this._options.batchType; }\n public get edgeOptions(): EdgeOptions | false { return this._options.edges; }\n public get timeline(): RenderSchedule.ModelTimeline | undefined { return this._options.timeline; }\n\n public override get loadPriority(): TileLoadPriority {\n // If the model has been modified, we want to prioritize keeping its graphics up to date.\n return this.tileState === \"dynamic\" ? TileLoadPriority.Dynamic : super.loadPriority;\n }\n\n protected _selectTiles(args: TileDrawArgs): Tile[] {\n args.markUsed(this._rootTile);\n const tiles: Tile[] = [];\n this._rootTile.staticBranch.selectTiles(tiles, args, 0);\n this._numStaticTilesSelected = tiles.length;\n\n if (this._rootTile.tileState.type === \"dynamic\")\n this._rootTile.tileState.rootTile.selectTiles(tiles, args);\n\n return tiles;\n }\n\n public draw(args: TileDrawArgs): void {\n const tiles = this.selectTiles(args);\n this._rootTile.draw(args, tiles, this._numStaticTilesSelected);\n if (args.shouldCollectClassifierGraphics)\n this._layerHandler.collectClassifierGraphics(args, tiles);\n }\n\n public prune(): void {\n const olderThan = BeTimePoint.now().minus(this.expirationTime);\n this._rootTile.prune(olderThan);\n }\n\n /** Exposed strictly for tests. */\n public get tileState(): \"static\" | \"dynamic\" | \"interactive\" | \"disposed\" {\n return this._rootTile.tileState.type;\n }\n\n /** Exposed strictly for tests. */\n public get hiddenElements(): Id64Array {\n const state = this._rootTile.tileState;\n return \"dynamic\" === state.type ? state.rootTile.hiddenElements : [];\n }\n\n public getTransformNodeRange(nodeId: number): Range3d | undefined {\n return this._transformNodeRanges?.get(nodeId);\n }\n\n public get containsTransformNodes(): boolean {\n return undefined !== this._transformNodeRanges;\n }\n}"]}
|
|
1
|
+
{"version":3,"file":"IModelTileTree.js","sourceRoot":"","sources":["../../../../src/internal/tile/IModelTileTree.ts"],"names":[],"mappings":";AAAA;;;+FAG+F;AAC/F;;GAEG;;;AA0CH,oEAiCC;AAzED,sDAAuG;AACvG,wDAA0D;AAC1D,oDAG4B;AAC5B,+CAA4C;AAE5C,uEAAoE;AAEpE,8DAA2D;AAC3D,kDAG6B;AAU7B,qBAAqB;AACrB,MAAM,iBAAiB,GAAG,EAAE,CAAC;AAe7B,SAAgB,4BAA4B,CAAC,KAA0B,EAAE,MAAwB,EAAE,OAAmB,EAAE,OAA8B;IACpJ,MAAM,QAAQ,GAAG,yBAAS,CAAC,QAAQ,CAAC,KAAK,CAAC,QAAQ,CAAC,CAAC;IACpD,MAAM,EAAE,aAAa,EAAE,EAAE,EAAE,QAAQ,EAAE,kBAAkB,EAAE,qBAAqB,EAAE,YAAY,EAAE,GAAG,KAAK,CAAC;IACvG,MAAM,cAAc,GAAG,KAAK,CAAC,cAAc,IAAI,GAAG,CAAC;IAEnD,IAAI,YAAY,CAAC;IACjB,IAAI,SAAS,KAAK,KAAK,CAAC,YAAY;QAClC,YAAY,GAAG,uBAAO,CAAC,QAAQ,CAAsB,KAAK,CAAC,YAAY,CAAC,CAAC;IAE3E,IAAI,mBAAmB,CAAC;IACxB,IAAI,KAAK,CAAC,mBAAmB,EAAE,CAAC;QAC9B,mBAAmB,GAAG,IAAI,GAAG,EAAmB,CAAC;QACjD,KAAK,MAAM,KAAK,IAAI,KAAK,CAAC,mBAAmB;YAC3C,mBAAmB,CAAC,GAAG,CAAC,KAAK,CAAC,EAAE,EAAE,uBAAO,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC,CAAC;IAC/D,CAAC;IAED,MAAM,QAAQ,GAAG,uBAAS,CAAC,OAAO,KAAK,OAAO,CAAC,SAAS,CAAC,CAAC,CAAC,2BAAgB,CAAC,OAAO,CAAC,CAAC,CAAC,2BAAgB,CAAC,UAAU,CAAC;IAClH,OAAO;QACL,aAAa;QACb,EAAE;QACF,QAAQ;QACR,MAAM;QACN,QAAQ;QACR,OAAO;QACP,YAAY;QACZ,YAAY;QACZ,kBAAkB;QAClB,qBAAqB;QACrB,QAAQ;QACR,OAAO;QACP,cAAc;QACd,mBAAmB;KACpB,CAAC;AACJ,CAAC;AAED,SAAS,0BAA0B,CAAC,OAAuC,EAAE,OAAmB;IAC9F,KAAK,MAAM,MAAM,IAAI,OAAO;QAC1B,IAAI,MAAM,CAAC,EAAE,KAAK,OAAO;YACvB,OAAO,MAAM,CAAC,QAAQ,CAAC;IAE3B,OAAO,SAAS,CAAC;AACnB,CAAC;AAED,sDAAsD;AACtD,MAAM,WAAW;IACC,IAAI,GAAG,QAAQ,CAAC;IAChB,CAAC,MAAM,CAAC,OAAO,CAAC,CAAc;IAE9C,YAAmB,IAAc;QAC/B,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC,GAAG,6CAAqB,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC,KAA4B,EAAE,EAAE;YAC5F,IAAI,CAAC,UAAU,CAAC,IAAI,gBAAgB,CAAC,KAAK,EAAE,IAAI,CAAC,CAAC,CAAC;QACrD,CAAC,CAAC,CAAC;IACL,CAAC;CACF;AAED,kHAAkH;AAClH,MAAM,gBAAgB;IACJ,IAAI,GAAG,aAAa,CAAC;IACrB,CAAC,MAAM,CAAC,OAAO,CAAC,CAAc;IAE9C,YAAmB,KAA4B,EAAE,IAAc;QAC7D,MAAM,oBAAoB,GAAG,KAAK,CAAC,SAAS,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,EAAE;YACzD,IAAI,CAAC,UAAU,CAAC,IAAI,WAAW,CAAC,IAAI,CAAC,CAAC,CAAC;QACzC,CAAC,CAAC,CAAC;QAEH,MAAM,kBAAkB,GAAG,KAAK,CAAC,iBAAiB,CAAC,WAAW,CAAC,CAAC,OAAuC,EAAE,MAA6B,EAAE,EAAE;YACxI,IAAA,qBAAM,EAAC,KAAK,KAAK,MAAM,CAAC,CAAC;YACzB,MAAM,WAAW,GAAG,0BAA0B,CAAC,OAAO,EAAE,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;YAC3E,IAAI,WAAW;gBACb,IAAI,CAAC,UAAU,CAAC,IAAI,YAAY,CAAC,IAAI,EAAE,WAAW,EAAE,KAAK,CAAC,CAAC,CAAC;QAChE,CAAC,CAAC,CAAC;QAEH,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC,GAAG,GAAG,EAAE;YAC1B,oBAAoB,EAAE,CAAC;YACvB,kBAAkB,EAAE,CAAC;QACvB,CAAC,CAAC;IACJ,CAAC;CACF;AAED,6FAA6F;AAC7F,MAAM,YAAY;IACA,IAAI,GAAG,SAAS,CAAC;IACjB,QAAQ,CAAoB;IAC3B,QAAQ,CAAa;IAE/B,CAAC,MAAM,CAAC,OAAO,CAAC;QACrB,IAAI,CAAC,QAAQ,EAAE,CAAC;QAChB,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC,OAAO,CAAC,EAAE,CAAC;IAClC,CAAC;IAED,YAAmB,IAAc,EAAE,WAA4C,EAAE,KAA4B;QAC3G,IAAI,CAAC,QAAQ,GAAG,4BAAiB,CAAC,MAAM,CAAC,IAAI,EAAE,WAAW,CAAC,CAAC;QAE5D,MAAM,oBAAoB,GAAG,KAAK,CAAC,SAAS,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,EAAE;YACzD,IAAI,CAAC,UAAU,CAAC,IAAI,WAAW,CAAC,IAAI,CAAC,CAAC,CAAC;QACzC,CAAC,CAAC,CAAC;QAEH,MAAM,kBAAkB,GAAG,KAAK,CAAC,iBAAiB,CAAC,WAAW,CAAC,CAAC,OAAuC,EAAE,MAA6B,EAAE,EAAE;YACxI,IAAA,qBAAM,EAAC,KAAK,KAAK,MAAM,CAAC,CAAC;YACzB,MAAM,KAAK,GAAG,0BAA0B,CAAC,OAAO,EAAE,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;YACrE,IAAI,KAAK;gBACP,IAAI,CAAC,QAAQ,CAAC,qBAAqB,CAAC,KAAK,CAAC,CAAC;QAC/C,CAAC,CAAC,CAAC;QAEH,IAAI,CAAC,QAAQ,GAAG,GAAG,EAAE;YACnB,oBAAoB,EAAE,CAAC;YACvB,kBAAkB,EAAE,CAAC;QACvB,CAAC,CAAC;IACJ,CAAC;CACF;AAED,MAAM,0BAA0B;IACd,IAAI,GAAG,SAAS,CAAC;IACjB,QAAQ,CAAoB;IACpC,QAAQ,CAAa;IAEtB,CAAC,MAAM,CAAC,OAAO,CAAC;QACrB,IAAI,CAAC,QAAQ,EAAE,CAAC;QAChB,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC,OAAO,CAAC,EAAE,CAAC;IAClC,CAAC;IAED,YAAmB,IAAc,EAAE,WAA4C;QAC7E,IAAI,CAAC,QAAQ,GAAG,4BAAiB,CAAC,MAAM,CAAC,IAAI,EAAE,WAAW,CAAC,CAAC;QAC5D,IAAI,CAAC,QAAQ,GAAG,GAAG,EAAE,GAAE,CAAC,CAAC;IAC3B,CAAC;CACF;AAED,uCAAuC;AACvC,MAAM,aAAa;IACD,IAAI,GAAG,UAAU,CAAC;IAC3B,CAAC,MAAM,CAAC,OAAO,CAAC,KAAW,CAAC;CACpC;AAED,MAAM,aAAa,GAAG,IAAI,aAAa,EAAE,CAAC;AAS1C;;;;GAIG;AACH,MAAM,QAAS,SAAQ,eAAI;IACT,YAAY,CAAa;IACjC,UAAU,CAAgB;IACjB,uBAAuB,CAAW;IAEnD,IAAW,SAAS;QAClB,OAAO,IAAI,CAAC,UAAU,CAAC;IACzB,CAAC;IAED,YAAmB,MAAwB,EAAE,IAAoB;QAC/D,MAAM,UAAU,GAAe;YAC7B,GAAG,MAAM;YACT,KAAK,EAAE,MAAM,CAAC,KAAK,CAAC,KAAK,EAAE;YAC3B,YAAY,EAAE,MAAM,CAAC,YAAY,EAAE,KAAK,EAAE;YAC1C,MAAM,EAAE,KAAK;YACb,SAAS,EAAE,EAAE;SACd,CAAC;QAEF,KAAK,CAAC,UAAU,EAAE,IAAI,CAAC,CAAC;QACxB,IAAI,CAAC,YAAY,GAAG,IAAI,qBAAU,CAAC,MAAM,EAAE,IAAI,CAAC,CAAC;QACjD,IAAI,CAAC,uBAAuB,GAAG,IAAI,CAAC,YAAY,EAAE,KAAK,EAAE,CAAC;QAE1D,IAAI,CAAC,IAAI,CAAC,aAAa;YACrB,IAAI,CAAC,aAAa,GAAG,IAAI,CAAC,YAAY,CAAC,YAAY,CAAC,KAAK,EAAE,CAAC;QAE9D,2BAA2B;QAC3B,MAAM,KAAK,GAAG,IAAI,CAAC,MAAM,CAAC,qBAAqB,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,YAAY,CAAC,CAAC,CAAC,SAAS,CAAC;QACzF,IAAI,SAAS,KAAK,KAAK,EAAE,CAAC;YACxB,IAAI,CAAC,UAAU,GAAG,IAAI,WAAW,CAAC,IAAI,CAAC,CAAC;QAC1C,CAAC;aAAM,CAAC;YACN,MAAM,OAAO,GAAG,KAAK,CAAC,0BAA0B,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;YAC/D,IAAI,CAAC,UAAU,GAAG,OAAO,CAAC,CAAC,CAAC,IAAI,YAAY,CAAC,IAAI,EAAE,OAAO,EAAE,KAAK,CAAC,CAAC,CAAC,CAAC,IAAI,gBAAgB,CAAC,KAAK,EAAE,IAAI,CAAC,CAAC;QACzG,CAAC;QAED,iCAAiC;QACjC,IAAI,CAAC,UAAU,EAAE,CAAC;QAClB,IAAI,CAAC,YAAY,EAAE,CAAC;IACtB,CAAC;IAEc,CAAC,MAAM,CAAC,OAAO,CAAC;QAC7B,IAAI,CAAC,UAAU,CAAC,aAAa,CAAC,CAAC;QAC/B,KAAK,CAAC,MAAM,CAAC,OAAO,CAAC,EAAE,CAAC;IAC1B,CAAC;IAES,aAAa,CAAC,OAA+C,EAAE,OAA+B;QACtG,MAAM,QAAQ,GAAW,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC;QAC7C,IAAI,IAAI,CAAC,UAAU,CAAC,IAAI,KAAK,SAAS;YACpC,QAAQ,CAAC,IAAI,CAAC,IAAI,CAAC,UAAU,CAAC,QAAQ,CAAC,CAAC;QAE1C,OAAO,CAAC,QAAQ,CAAC,CAAC;IACpB,CAAC;IAED,IAAW,OAAO;QAChB,MAAM,IAAI,KAAK,CAAC,iCAAiC,CAAC,CAAC;IACrD,CAAC;IAEM,KAAK,CAAC,cAAc,CAAC,WAA0B;QACpD,IAAA,qBAAM,EAAC,KAAK,EAAE,iCAAiC,CAAC,CAAC;QACjD,OAAO,SAAS,CAAC;IACnB,CAAC;IAEM,KAAK,CAAC,WAAW,CAAC,KAA+B,EAAE,OAAqB,EAAE,WAA0B;QACzG,MAAM,IAAI,KAAK,CAAC,iCAAiC,CAAC,CAAC;IACrD,CAAC;IAEM,IAAI,CAAC,IAAkB,EAAE,KAAa,EAAE,cAAsB;QACnE,IAAA,qBAAM,EAAC,cAAc,IAAI,CAAC,IAAI,cAAc,IAAI,KAAK,CAAC,MAAM,CAAC,CAAC;QAE9D,yBAAyB;QACzB,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,cAAc,EAAE,CAAC,EAAE;YACrC,KAAK,CAAC,CAAC,CAAC,CAAC,YAAY,CAAC,IAAI,CAAC,CAAC;QAE9B,IAAI,SAAS,KAAK,IAAI,CAAC,UAAU,CAAC,IAAI,IAAI,cAAc,KAAK,KAAK,CAAC,MAAM,EAAE,CAAC;YAC1E,IAAI,SAAS,KAAK,IAAI,CAAC,UAAU,CAAC,IAAI;gBACpC,IAAI,CAAC,qBAAqB,CAAC,IAAI,CAAC,UAAU,CAAC,QAAQ,CAAC,kBAAkB,CAAC,CAAC;YAE1E,IAAI,CAAC,YAAY,EAAE,CAAC;YACpB,OAAO;QACT,CAAC;QAED,yGAAyG;QACzG,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,OAAO,EAAE,CAAC;YAC3B,MAAM,YAAY,GAAG,IAAI,6BAAa,EAAE,CAAC;YACzC,KAAK,MAAM,aAAa,IAAI,IAAI,CAAC,QAAQ,CAAC,OAAO;gBAC/C,YAAY,CAAC,GAAG,CAAC,aAAa,CAAC,CAAC;YAElC,IAAI,kBAAkB,GAAG,IAAI,CAAC,UAAU,CAAC,QAAQ,CAAC,kBAAkB,CAAC;YACrE,IAAI,IAAI,CAAC,kBAAkB;gBACzB,kBAAkB,GAAG,uCAAyB,CAAC,KAAK,CAAC,IAAI,CAAC,kBAAkB,EAAE,kBAAkB,CAAC,CAAC;YACpG,IAAI,CAAC,QAAQ,CAAC,KAAK,EAAE,CAAC;YACtB,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,IAAI,CAAC,OAAO,CAAC,mBAAmB,CAAC,YAAY,EAAE,yBAAS,CAAC,cAAc,EAAE,EAAE,EAAE,kBAAkB,EAAE,CAAC,CAAC,CAAC;QACxH,CAAC;QAED,0BAA0B;QAC1B,KAAK,IAAI,CAAC,GAAG,cAAc,EAAE,CAAC,GAAG,KAAK,CAAC,MAAM,EAAE,CAAC,EAAE;YAChD,KAAK,CAAC,CAAC,CAAC,CAAC,YAAY,CAAC,IAAI,CAAC,CAAC;QAE9B,IAAI,CAAC,YAAY,EAAE,CAAC;IACtB,CAAC;IAEM,KAAK,CAAC,SAAsB;QACjC,IAAI,CAAC,YAAY,CAAC,aAAa,CAAC,SAAS,CAAC,CAAC;QAC3C,IAAI,SAAS,KAAK,IAAI,CAAC,UAAU,CAAC,IAAI;YACpC,IAAI,CAAC,UAAU,CAAC,QAAQ,CAAC,aAAa,CAAC,SAAS,CAAC,CAAC;IACtD,CAAC;IAEM,UAAU,CAAC,QAAuB;QACvC,IAAA,qBAAM,EAAC,QAAQ,CAAC,IAAI,KAAK,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,CAAC;QAC/C,MAAM,UAAU,GAAG,SAAS,KAAK,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC;QAEtD,IAAA,qBAAM,EAAC,SAAS,KAAK,IAAI,CAAC,QAAQ,CAAC,CAAC;QACpC,IAAI,SAAS,KAAK,IAAI,CAAC,UAAU,CAAC,IAAI,EAAE,CAAC;YACvC,IAAA,qBAAM,EAAC,CAAC,KAAK,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC;YACnC,IAAI,CAAC,QAAQ,CAAC,GAAG,EAAE,CAAC;QACtB,CAAC;aAAM,IAAI,SAAS,KAAK,QAAQ,CAAC,IAAI,EAAE,CAAC;YACvC,IAAA,qBAAM,EAAC,CAAC,KAAK,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC;YACnC,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,CAAC;QACxC,CAAC;QAED,IAAI,CAAC,UAAU,CAAC,MAAM,CAAC,OAAO,CAAC,EAAE,CAAC;QAClC,IAAI,CAAC,UAAU,GAAG,QAAQ,CAAC;QAE3B,IAAI,UAAU;YACZ,IAAI,CAAC,UAAU,EAAE,CAAC;IACtB,CAAC;IAEO,UAAU;QAChB,IAAI,CAAC,YAAY,CAAC,KAAK,CAAC,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;QAC1C,IAAI,CAAC,YAAY,CAAC,YAAY,CAAC,KAAK,CAAC,IAAI,CAAC,aAAa,CAAC,CAAC;QAEzD,IAAI,IAAI,CAAC,uBAAuB,IAAI,IAAI,CAAC,IAAI,CAAC,YAAY;YACxD,IAAI,CAAC,uBAAuB,CAAC,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC;IAE/D,CAAC;IAED,IAAW,cAAc;QACvB,OAAO,IAAI,CAAC,YAAY,CAAC,UAAU,CAAC,cAAc,CAAC;IACrD,CAAC;IAEM,kBAAkB,CAAC,IAAU;QAClC,IAAI,CAAC,UAAU,EAAE,CAAC;QAClB,IAAI,IAAI,CAAC,uBAAuB,IAAI,IAAI,CAAC,IAAI,CAAC,YAAY,IAAI,CAAC,IAAI,CAAC,YAAY,CAAC,MAAM;YACrF,IAAI,CAAC,IAAI,CAAC,YAAY,CAAC,WAAW,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC;QAExD,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,MAAM;YACpB,IAAI,CAAC,KAAK,CAAC,WAAW,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;QAErC,IAAA,qBAAM,EAAC,SAAS,KAAK,IAAI,CAAC,aAAa,CAAC,CAAC;QACzC,IAAI,CAAC,IAAI,CAAC,YAAY,CAAC,MAAM;YAC3B,IAAI,CAAC,aAAa,CAAC,WAAW,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC;IACtD,CAAC;CACF;AAED;;GAEG;AACH,MAAa,cAAe,SAAQ,mBAAQ;IACnC,OAAO,CAAc;IACX,SAAS,CAAW;IACpB,QAAQ,CAAwB;IAChC,oBAAoB,CAAwB;IAC7C,kBAAkB,CAAU;IAC5B,YAAY,CAAU;IACtB,cAAc,CAAS;IACvB,qBAAqB,CAAS;IAC9B,iBAAiB,CAAoB;IACrC,sBAAsB,CAAU;IAChC,cAAc,CAAS;IACvB,gBAAgB,CAAmB;IACnD,6FAA6F;IACtF,aAAa,CAAU;IAC9B;;;OAGG;IACK,uBAAuB,GAAG,CAAC,CAAC;IAC7B,iBAAiB,GAA0B,EAAE,CAAC;IAEpC,aAAa,CAAuB;IACrD,IAAoB,YAAY,KAAK,OAAO,IAAI,CAAC,aAAa,CAAC,CAAC,CAAC;IAEjE,YAAmB,MAA4B,EAAE,MAAwB;QACvE,KAAK,CAAC,MAAM,CAAC,CAAC;QACd,IAAI,CAAC,gBAAgB,GAAG,MAAM,CAAC;QAC/B,IAAI,CAAC,kBAAkB,GAAG,MAAM,CAAC,kBAAkB,CAAC;QACpD,IAAI,CAAC,YAAY,GAAG,MAAM,CAAC,YAAY,CAAC;QACxC,IAAI,CAAC,cAAc,GAAG,MAAM,CAAC,cAAc,CAAC;QAC5C,IAAI,CAAC,aAAa,GAAG,IAAI,+BAAoB,CAAC,IAAI,CAAC,CAAC;QAEpD,IAAI,uBAAS,CAAC,OAAO,KAAK,MAAM,CAAC,IAAI;YACnC,IAAI,CAAC,sBAAsB,GAAG,MAAM,CAAC,UAAU,CAAC;QAElD,IAAI,CAAC,qBAAqB,GAAG,MAAM,CAAC,qBAAqB,IAAI,CAAC,CAAC;QAC/D,IAAI,CAAC,cAAc,GAAG,qBAAS,CAAC,SAAS,CAAC,mBAAmB,CAAC;QAE9D,IAAI,CAAC,QAAQ,GAAG,MAAM,CAAC,OAAO,CAAC;QAC/B,IAAI,CAAC,oBAAoB,GAAG,MAAM,CAAC,mBAAmB,CAAC;QAEvD,IAAI,CAAC,iBAAiB,GAAG,+BAAiB,CAAC,MAAM,CAAC,MAAM,CAAC,OAAO,CAAC,eAAe,EAAE,qBAAS,CAAC,SAAS,EAAE,MAAM,CAAC,aAAa,CAAC,CAAC;QAE7H,MAAM,CAAC,QAAQ,CAAC,SAAS,GAAG,IAAI,CAAC,iBAAiB,CAAC,aAAa,CAAC;QACjE,IAAI,CAAC,SAAS,GAAG,IAAI,QAAQ,CAAC,IAAA,mCAAwB,EAAC,MAAM,CAAC,QAAQ,EAAE,SAAS,CAAC,EAAE,IAAI,CAAC,CAAC;QAE1F,IAAI,CAAC,OAAO,GAAG,IAAA,6BAAkB,EAAC;YAChC,IAAI,EAAE,IAAI,CAAC,SAAS;YACpB,SAAS,EAAE,KAAK,KAAK,IAAI,CAAC,WAAW;YACrC,QAAQ,EAAE,IAAI,CAAC,QAAQ;YACvB,MAAM,EAAE,IAAI,CAAC,MAAM;YACnB,YAAY,EAAE,IAAI,CAAC,OAAO;YAC1B,IAAI,EAAE,IAAI,CAAC,IAAI;YACf,sBAAsB,EAAE,IAAI,CAAC,sBAAsB;YACnD,QAAQ,EAAE,CAAC,qBAAS,CAAC,SAAS,CAAC,kBAAkB;SAClD,CAAC,CAAC;IACL,CAAC;IAEc,CAAC,MAAM,CAAC,OAAO,CAAC;QAC7B,IAAI,CAAC,OAAO,CAAC,OAAO,EAAE,CAAC;QACvB,KAAK,CAAC,MAAM,CAAC,OAAO,CAAC,EAAE,CAAC;IAC1B,CAAC;IAED,IAAW,QAAQ,KAAK,OAAO,EAAE,CAAC,CAAC,CAAC;IACpC,IAAW,QAAQ,KAAW,OAAO,IAAI,CAAC,SAAS,CAAC,CAAC,CAAC;IACtD,iCAAiC;IACjC,IAAW,YAAY,KAAiB,OAAO,IAAI,CAAC,SAAS,CAAC,YAAY,CAAC,CAAC,CAAC;IAC7E,IAAW,IAAI,KAAK,OAAO,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC,CAAC;IAChD,IAAoB,kBAAkB,KAAK,OAAO,KAAK,CAAC,CAAC,CAAC;IAC1D,IAAW,iBAAiB,KAAK,OAAO,iBAAiB,CAAC,CAAC,CAAC;IAE5D,IAAW,SAAS,KAAgB,OAAO,IAAI,CAAC,QAAQ,CAAC,SAAS,CAAC,CAAC,CAAC;IACrE,IAAW,WAAW,KAA0B,OAAO,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC,CAAC;IAC7E,IAAW,QAAQ,KAA+C,OAAO,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,CAAC,CAAC;IAElG,IAAoB,YAAY;QAC9B,yFAAyF;QACzF,OAAO,IAAI,CAAC,SAAS,KAAK,SAAS,CAAC,CAAC,CAAC,2BAAgB,CAAC,OAAO,CAAC,CAAC,CAAC,KAAK,CAAC,YAAY,CAAC;IACtF,CAAC;IAES,YAAY,CAAC,IAAkB;QACvC,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;QAC9B,MAAM,KAAK,GAAW,EAAE,CAAC;QACzB,IAAI,CAAC,SAAS,CAAC,YAAY,CAAC,WAAW,CAAC,KAAK,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC;QACxD,IAAI,CAAC,uBAAuB,GAAG,KAAK,CAAC,MAAM,CAAC;QAE5C,IAAI,IAAI,CAAC,SAAS,CAAC,SAAS,CAAC,IAAI,KAAK,SAAS;YAC7C,IAAI,CAAC,SAAS,CAAC,SAAS,CAAC,QAAQ,CAAC,WAAW,CAAC,KAAK,EAAE,IAAI,CAAC,CAAC;QAE7D,OAAO,KAAK,CAAC;IACf,CAAC;IAEM,IAAI,CAAC,IAAkB;QAC5B,MAAM,KAAK,GAAG,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,CAAC;QACrC,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,IAAI,EAAE,KAAK,EAAE,IAAI,CAAC,uBAAuB,CAAC,CAAC;QAC/D,IAAI,IAAI,CAAC,+BAA+B;YACtC,IAAI,CAAC,aAAa,CAAC,yBAAyB,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC;IAC9D,CAAC;IAEM,KAAK;QACV,MAAM,SAAS,GAAG,0BAAW,CAAC,GAAG,EAAE,CAAC,KAAK,CAAC,IAAI,CAAC,cAAc,CAAC,CAAC;QAC/D,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,SAAS,CAAC,CAAC;IAClC,CAAC;IAED,kCAAkC;IAClC,IAAW,SAAS;QAClB,OAAO,IAAI,CAAC,SAAS,CAAC,SAAS,CAAC,IAAI,CAAC;IACvC,CAAC;IAED,kCAAkC;IAClC,IAAW,cAAc;QACvB,MAAM,KAAK,GAAG,IAAI,CAAC,SAAS,CAAC,SAAS,CAAC;QACvC,OAAO,SAAS,KAAK,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,KAAK,CAAC,QAAQ,CAAC,cAAc,CAAC,CAAC,CAAC,EAAE,CAAC;IACvE,CAAC;IAEM,qBAAqB,CAAC,MAAc;QACzC,OAAO,IAAI,CAAC,oBAAoB,EAAE,GAAG,CAAC,MAAM,CAAC,CAAC;IAChD,CAAC;IAED,IAAW,sBAAsB;QAC/B,OAAO,SAAS,KAAK,IAAI,CAAC,oBAAoB,CAAC;IACjD,CAAC;IAEe,KAAK,CAAC,wBAAwB,CAAC,OAAwC;QACrF,MAAM,YAAY,GAAG,qBAAS,CAAC,WAAW,CAAC,YAAY,EAAE,YAAY,CAAC;QACtE,MAAM,SAAS,GAAG,YAAY,EAAE,cAAc,CAAC;QAC/C,MAAM,SAAS,GAAG,SAAS,CAAC,CAAC,CAAC,IAAI,4BAAc,CAAC,eAAe,CAAC,YAAY,CAAC,EAAE,EAAE,SAAS,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC;QACzG,MAAM,UAAU,GAAG,qBAAS,CAAC,SAAS,CAAC,sBAAsB,CAAC,IAAI,CAAC,OAAO,EAAE,SAAS,CAAC,CAAC;QAEvF,IAAI,UAAU,EAAE,QAAQ,IAAI,IAAI,CAAC,QAAQ,KAAK,UAAU,CAAC,QAAQ,EAAE,CAAC;YAClE,IAAI,CAAC,OAAO,GAAG,IAAA,6BAAkB,EAAC;gBAChC,IAAI,EAAE,IAAI,CAAC,SAAS;gBACpB,SAAS,EAAE,IAAI,CAAC,WAAW,KAAK,KAAK;gBACrC,QAAQ,EAAE,UAAU,CAAC,QAAQ;gBAC7B,MAAM,EAAE,IAAI,CAAC,MAAM;gBACnB,YAAY,EAAE,IAAI,CAAC,OAAO;gBAC1B,IAAI,EAAE,IAAI,CAAC,IAAI;gBACf,sBAAsB,EAAE,IAAI,CAAC,sBAAsB;gBACnD,QAAQ,EAAE,CAAC,qBAAS,CAAC,SAAS,CAAC,kBAAkB;aAClD,CAAC,CAAC;YACH,IAAI,CAAC,QAAQ,CAAC,QAAQ,GAAG,UAAU,CAAC,QAAQ,CAAC;QAC/C,CAAC;QAED,MAAM,cAAc,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,QAAQ,CAAC,OAAO,KAAK,IAAI,CAAC,OAAO,CAAC,CAAC;QAChF,IAAI,CAAC,cAAc,IAAI,cAAc,CAAC,QAAQ,CAAC,IAAI,KAAK,CAAC;YACvD,OAAO;QAET,MAAM,UAAU,GAAG,KAAK,CAAC,IAAI,CAAC,cAAc,CAAC,QAAQ,CAAC,CAAC;QACvD,MAAM,UAAU,GAAG,MAAM,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,aAAa,CAAC,UAAU,EAAE;YACtE,IAAI,EAAE,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI;SAC9B,CAAC,CAAC;QAEH,IAAI,UAAU,CAAC,MAAM,KAAK,CAAC;YACzB,OAAO;QAET,MAAM,eAAe,GAAG,UAAU,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE;YAC3C,OAAO;gBACL,EAAE,EAAE,CAAC,CAAC,SAAS;gBACf,IAAI,EAAE,uBAAQ,CAAC,MAAM;gBACrB,KAAK,EAAE,CAAC,CAAC,cAAc,EAAE;aAC1B,CAAA;QACH,CAAC,CAAC,CAAC;QAEH,IAAI,eAAe,CAAC,MAAM,KAAK,CAAC;YAC9B,OAAO;QAET,IAAI,IAAI,CAAC,SAAS,CAAC,SAAS,CAAC,IAAI,KAAK,SAAS,EAAE,CAAC;YAChD,IAAI,CAAC,SAAS,CAAC,UAAU,CAAC,IAAI,WAAW,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC,CAAC;QAC7D,CAAC;QACD,IAAI,CAAC,SAAS,CAAC,UAAU,CAAC,IAAI,0BAA0B,CAAC,IAAI,CAAC,SAAS,EAAE,eAAe,CAAC,CAAC,CAAC;IAC7F,CAAC;IAEe,0BAA0B;QACxC,IAAI,IAAI,CAAC,SAAS,CAAC,SAAS,CAAC,IAAI,KAAK,QAAQ;YAC5C,IAAI,CAAC,SAAS,CAAC,UAAU,CAAC,IAAI,WAAW,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC,CAAC;IAC/D,CAAC;CACF;AAjLD,wCAiLC","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, DbOpcode, GuidString, Id64Array, Id64String } from \"@itwin/core-bentley\";\nimport { Range3d, Transform } from \"@itwin/core-geometry\";\nimport {\n BatchType, ContentIdProvider, EdgeOptions, ElementAlignedBox3d, ElementGeometryChange, FeatureAppearanceProvider,\n IModelTileTreeId, IModelTileTreeProps, ModelGeometryChanges, RenderSchedule, TileProps\n} from \"@itwin/core-common\";\nimport { IModelApp } from \"../../IModelApp\";\nimport { IModelConnection } from \"../../IModelConnection\";\nimport { GraphicalEditingScope } from \"../../GraphicalEditingScope\";\nimport { RenderSystem } from \"../../render/RenderSystem\";\nimport { GraphicBranch } from \"../../render/GraphicBranch\";\nimport {\n acquireImdlDecoder, DynamicIModelTile, ImdlDecoder, IModelTile, IModelTileParams, iModelTileParamsFromJSON, LayerTileTreeHandler, MapLayerTreeSetting, Tile,\n TileContent, TileDrawArgs, TileLoadPriority, TileParams, TileRequest, TileRequestChannel, TileTree, TileTreeParams\n} from \"../../tile/internal\";\n\nexport interface IModelTileTreeOptions {\n readonly allowInstancing: boolean;\n readonly edges: EdgeOptions | false;\n readonly batchType: BatchType;\n readonly is3d: boolean;\n timeline: RenderSchedule.ModelTimeline | undefined;\n}\n\n// Overrides nothing.\nconst viewFlagOverrides = {};\n\n/** Parameters used to construct an [[IModelTileTree]]\n */\nexport interface IModelTileTreeParams extends TileTreeParams {\n rootTile: TileProps;\n contentIdQualifier?: string;\n geometryGuid?: GuidString;\n maxInitialTilesToSkip?: number;\n formatVersion?: number;\n tileScreenSize: number;\n options: IModelTileTreeOptions;\n transformNodeRanges?: Map<number, Range3d>;\n}\n\nexport function iModelTileTreeParamsFromJSON(props: IModelTileTreeProps, iModel: IModelConnection, modelId: Id64String, options: IModelTileTreeOptions): IModelTileTreeParams {\n const location = Transform.fromJSON(props.location);\n const { formatVersion, id, rootTile, contentIdQualifier, maxInitialTilesToSkip, geometryGuid } = props;\n const tileScreenSize = props.tileScreenSize ?? 512;\n\n let contentRange;\n if (undefined !== props.contentRange)\n contentRange = Range3d.fromJSON<ElementAlignedBox3d>(props.contentRange);\n\n let transformNodeRanges;\n if (props.transformNodeRanges) {\n transformNodeRanges = new Map<number, Range3d>();\n for (const entry of props.transformNodeRanges)\n transformNodeRanges.set(entry.id, Range3d.fromJSON(entry));\n }\n\n const priority = BatchType.Primary === options.batchType ? TileLoadPriority.Primary : TileLoadPriority.Classifier;\n return {\n formatVersion,\n id,\n rootTile,\n iModel,\n location,\n modelId,\n contentRange,\n geometryGuid,\n contentIdQualifier,\n maxInitialTilesToSkip,\n priority,\n options,\n tileScreenSize,\n transformNodeRanges,\n };\n}\n\nfunction findElementChangesForModel(changes: Iterable<ModelGeometryChanges>, modelId: Id64String): Iterable<ElementGeometryChange> | undefined {\n for (const change of changes)\n if (change.id === modelId)\n return change.elements;\n\n return undefined;\n}\n\n/** No graphical editing scope is currently active. */\nclass StaticState {\n public readonly type = \"static\";\n public readonly [Symbol.dispose]!: () => void;\n\n public constructor(root: RootTile) {\n this[Symbol.dispose] = GraphicalEditingScope.onEnter.addOnce((scope: GraphicalEditingScope) => {\n root.transition(new InteractiveState(scope, root));\n });\n }\n}\n\n/** A graphical editing scope is currently active, but no elements in the tile tree's model have been modified. */\nclass InteractiveState {\n public readonly type = \"interactive\";\n public readonly [Symbol.dispose]!: () => void;\n\n public constructor(scope: GraphicalEditingScope, root: RootTile) {\n const removeEndingListener = scope.onExiting.addOnce((_) => {\n root.transition(new StaticState(root));\n });\n\n const removeGeomListener = scope.onGeometryChanges.addListener((changes: Iterable<ModelGeometryChanges>, _scope: GraphicalEditingScope) => {\n assert(scope === _scope);\n const elemChanges = findElementChangesForModel(changes, root.tree.modelId);\n if (elemChanges)\n root.transition(new DynamicState(root, elemChanges, scope));\n });\n\n this[Symbol.dispose] = () => {\n removeEndingListener();\n removeGeomListener();\n };\n }\n}\n\n/** Elements in the tile tree's model have been modified during the current editing scope. */\nclass DynamicState {\n public readonly type = \"dynamic\";\n public readonly rootTile: DynamicIModelTile;\n private readonly _dispose: () => void;\n\n public [Symbol.dispose](): void {\n this._dispose();\n this.rootTile[Symbol.dispose]();\n }\n\n public constructor(root: RootTile, elemChanges: Iterable<ElementGeometryChange>, scope: GraphicalEditingScope) {\n this.rootTile = DynamicIModelTile.create(root, elemChanges);\n\n const removeEndingListener = scope.onExiting.addOnce((_) => {\n root.transition(new StaticState(root));\n });\n\n const removeGeomListener = scope.onGeometryChanges.addListener((changes: Iterable<ModelGeometryChanges>, _scope: GraphicalEditingScope) => {\n assert(scope === _scope);\n const elems = findElementChangesForModel(changes, root.tree.modelId);\n if (elems)\n this.rootTile.handleGeometryChanges(elems);\n });\n\n this._dispose = () => {\n removeEndingListener();\n removeGeomListener();\n };\n }\n}\n\nclass ScheduleScriptDynamicState {\n public readonly type = \"dynamic\";\n public readonly rootTile: DynamicIModelTile;\n private _dispose: () => void;\n\n public [Symbol.dispose](): void {\n this._dispose();\n this.rootTile[Symbol.dispose]();\n }\n\n public constructor(root: RootTile, elemChanges: Iterable<ElementGeometryChange>) {\n this.rootTile = DynamicIModelTile.create(root, elemChanges);\n this._dispose = () => {};\n }\n}\n\n/** The tile tree has been disposed. */\nclass DisposedState {\n public readonly type = \"disposed\";\n public [Symbol.dispose](): void { }\n}\n\nconst disposedState = new DisposedState();\n\n/** The current state of an [[IModelTileTree]]'s [[RootTile]]. The tile transitions between these states primarily in response to GraphicalEditingScope events. */\ntype RootTileState = StaticState | InteractiveState | DynamicState | DisposedState | ScheduleScriptDynamicState ;\n\n/** The root tile for an [[IModelTileTree]].\n */\nexport type RootIModelTile = Tile & { tileScreenSize: number, updateDynamicRange: (childTile: Tile) => void };\n\n/** Represents the root [[Tile]] of an [[IModelTileTree]]. The root tile has one or two direct child tiles which represent different branches of the tree:\n * - The static branch, containing tiles that represent the state of the model's geometry as of the beginning of the current [[GraphicalEditingScope]].\n * - The dynamic branch, containing tiles representing the geometry of elements that have been modified during the current [[GraphicalEditingScope]].\n * If no editing scope is currently active, the dynamic branch does not exist, and the static branch represents the current state of all elements in the model.\n */\nclass RootTile extends Tile {\n public readonly staticBranch: IModelTile;\n private _tileState: RootTileState;\n private readonly _staticTreeContentRange?: Range3d;\n\n public get tileState(): RootTileState {\n return this._tileState;\n }\n\n public constructor(params: IModelTileParams, tree: IModelTileTree) {\n const rootParams: TileParams = {\n ...params,\n range: params.range.clone(),\n contentRange: params.contentRange?.clone(),\n isLeaf: false,\n contentId: \"\",\n };\n\n super(rootParams, tree);\n this.staticBranch = new IModelTile(params, tree);\n this._staticTreeContentRange = tree.contentRange?.clone();\n\n if (!this._contentRange)\n this._contentRange = this.staticBranch.contentRange.clone();\n\n // Determine initial state.\n const scope = tree.iModel.isBriefcaseConnection() ? tree.iModel.editingScope : undefined;\n if (undefined === scope) {\n this._tileState = new StaticState(this);\n } else {\n const changes = scope.getGeometryChangesForModel(tree.modelId);\n this._tileState = changes ? new DynamicState(this, changes, scope) : new InteractiveState(scope, this);\n }\n\n // Load the children immediately.\n this.setIsReady();\n this.loadChildren();\n }\n\n public override[Symbol.dispose](): void {\n this.transition(disposedState);\n super[Symbol.dispose]();\n }\n\n protected _loadChildren(resolve: (children: Tile[] | undefined) => void, _reject: (error: Error) => void): void {\n const children: Tile[] = [this.staticBranch];\n if (this._tileState.type === \"dynamic\")\n children.push(this._tileState.rootTile);\n\n resolve(children);\n }\n\n public get channel(): TileRequestChannel {\n throw new Error(\"Root iModel tile has no content\");\n }\n\n public async requestContent(_isCanceled: () => boolean): Promise<TileRequest.Response> {\n assert(false, \"Root iModel tile has no content\");\n return undefined;\n }\n\n public async readContent(_data: TileRequest.ResponseData, _system: RenderSystem, _isCanceled: () => boolean): Promise<TileContent> {\n throw new Error(\"Root iModel tile has no content\");\n }\n\n public draw(args: TileDrawArgs, tiles: Tile[], numStaticTiles: number): void {\n assert(numStaticTiles >= 0 && numStaticTiles <= tiles.length);\n\n // Draw the static tiles.\n for (let i = 0; i < numStaticTiles; i++)\n tiles[i].drawGraphics(args);\n\n if (\"dynamic\" !== this._tileState.type || numStaticTiles === tiles.length) {\n if (\"dynamic\" === this._tileState.type)\n args.addAppearanceProvider(this._tileState.rootTile.appearanceProvider);\n\n args.drawGraphics();\n return;\n }\n\n // We need to hide any modified elements in the static tiles. Pull their graphics into a separate branch.\n if (!args.graphics.isEmpty) {\n const staticBranch = new GraphicBranch();\n for (const staticGraphic of args.graphics.entries)\n staticBranch.add(staticGraphic);\n\n let appearanceProvider = this._tileState.rootTile.appearanceProvider;\n if (args.appearanceProvider)\n appearanceProvider = FeatureAppearanceProvider.chain(args.appearanceProvider, appearanceProvider);\n args.graphics.clear();\n args.graphics.add(args.context.createGraphicBranch(staticBranch, Transform.createIdentity(), { appearanceProvider }));\n }\n\n // Draw the dynamic tiles.\n for (let i = numStaticTiles; i < tiles.length; i++)\n tiles[i].drawGraphics(args);\n\n args.drawGraphics();\n }\n\n public prune(olderThan: BeTimePoint): void {\n this.staticBranch.pruneChildren(olderThan);\n if (\"dynamic\" === this._tileState.type)\n this._tileState.rootTile.pruneChildren(olderThan);\n }\n\n public transition(newState: RootTileState): void {\n assert(newState.type !== this._tileState.type);\n const resetRange = \"dynamic\" === this._tileState.type;\n\n assert(undefined !== this.children);\n if (\"dynamic\" === this._tileState.type) {\n assert(2 === this.children.length);\n this.children.pop();\n } else if (\"dynamic\" === newState.type) {\n assert(1 === this.children.length);\n this.children.push(newState.rootTile);\n }\n\n this._tileState[Symbol.dispose]();\n this._tileState = newState;\n\n if (resetRange)\n this.resetRange();\n }\n\n private resetRange(): void {\n this.staticBranch.range.clone(this.range);\n this.staticBranch.contentRange.clone(this._contentRange);\n\n if (this._staticTreeContentRange && this.tree.contentRange)\n this._staticTreeContentRange.clone(this.tree.contentRange);\n\n }\n\n public get tileScreenSize(): number {\n return this.staticBranch.iModelTree.tileScreenSize;\n }\n\n public updateDynamicRange(tile: Tile): void {\n this.resetRange();\n if (this._staticTreeContentRange && this.tree.contentRange && !tile.contentRange.isNull)\n this.tree.contentRange.extendRange(tile.contentRange);\n\n if (!tile.range.isNull)\n this.range.extendRange(tile.range);\n\n assert(undefined !== this._contentRange);\n if (!tile.contentRange.isNull)\n this._contentRange.extendRange(tile.contentRange);\n }\n}\n\n/** A TileTree whose contents are derived from geometry stored in a Model in an IModelDb.\n * @internal exported strictly for display-test-app until we remove CommonJS support.\n */\nexport class IModelTileTree extends TileTree {\n public decoder: ImdlDecoder;\n private readonly _rootTile: RootTile;\n private readonly _options: IModelTileTreeOptions;\n private readonly _transformNodeRanges?: Map<number, Range3d>;\n public readonly contentIdQualifier?: string;\n public readonly geometryGuid?: string;\n public readonly maxTilesToSkip: number;\n public readonly maxInitialTilesToSkip: number;\n public readonly contentIdProvider: ContentIdProvider;\n public readonly stringifiedSectionClip?: string;\n public readonly tileScreenSize: number;\n public readonly iModelTileTreeId: IModelTileTreeId;\n /** Strictly for debugging/testing - forces tile selection to halt at the specified depth. */\n public debugMaxDepth?: number;\n /** A little hacky...we must not override selectTiles(), but draw() needs to distinguish between static and dynamic tiles.\n * So _selectTiles() puts the static tiles first in the Tile[] array, and records the number of static tiles selected, to be\n * used by draw().\n */\n private _numStaticTilesSelected = 0;\n public layerImageryTrees: MapLayerTreeSetting[] = [];\n\n private readonly _layerHandler: LayerTileTreeHandler;\n public override get layerHandler() { return this._layerHandler; }\n\n public constructor(params: IModelTileTreeParams, treeId: IModelTileTreeId) {\n super(params);\n this.iModelTileTreeId = treeId;\n this.contentIdQualifier = params.contentIdQualifier;\n this.geometryGuid = params.geometryGuid;\n this.tileScreenSize = params.tileScreenSize;\n this._layerHandler = new LayerTileTreeHandler(this);\n\n if (BatchType.Primary === treeId.type)\n this.stringifiedSectionClip = treeId.sectionCut;\n\n this.maxInitialTilesToSkip = params.maxInitialTilesToSkip ?? 0;\n this.maxTilesToSkip = IModelApp.tileAdmin.maximumLevelsToSkip;\n\n this._options = params.options;\n this._transformNodeRanges = params.transformNodeRanges;\n\n this.contentIdProvider = ContentIdProvider.create(params.options.allowInstancing, IModelApp.tileAdmin, params.formatVersion);\n\n params.rootTile.contentId = this.contentIdProvider.rootContentId;\n this._rootTile = new RootTile(iModelTileParamsFromJSON(params.rootTile, undefined), this);\n\n this.decoder = acquireImdlDecoder({\n type: this.batchType,\n omitEdges: false === this.edgeOptions,\n timeline: this.timeline,\n iModel: this.iModel,\n batchModelId: this.modelId,\n is3d: this.is3d,\n containsTransformNodes: this.containsTransformNodes,\n noWorker: !IModelApp.tileAdmin.decodeImdlInWorker,\n });\n }\n\n public override[Symbol.dispose](): void {\n this.decoder.release();\n super[Symbol.dispose]();\n }\n\n public get maxDepth() { return 32; }\n public get rootTile(): Tile { return this._rootTile; }\n /** Exposed chiefly for tests. */\n public get staticBranch(): IModelTile { return this._rootTile.staticBranch; }\n public get is3d() { return this._options.is3d; }\n public override get isContentUnbounded() { return false; }\n public get viewFlagOverrides() { return viewFlagOverrides; }\n\n public get batchType(): BatchType { return this._options.batchType; }\n public get edgeOptions(): EdgeOptions | false { return this._options.edges; }\n public get timeline(): RenderSchedule.ModelTimeline | undefined { return this._options.timeline; }\n\n public override get loadPriority(): TileLoadPriority {\n // If the model has been modified, we want to prioritize keeping its graphics up to date.\n return this.tileState === \"dynamic\" ? TileLoadPriority.Dynamic : super.loadPriority;\n }\n\n protected _selectTiles(args: TileDrawArgs): Tile[] {\n args.markUsed(this._rootTile);\n const tiles: Tile[] = [];\n this._rootTile.staticBranch.selectTiles(tiles, args, 0);\n this._numStaticTilesSelected = tiles.length;\n\n if (this._rootTile.tileState.type === \"dynamic\")\n this._rootTile.tileState.rootTile.selectTiles(tiles, args);\n\n return tiles;\n }\n\n public draw(args: TileDrawArgs): void {\n const tiles = this.selectTiles(args);\n this._rootTile.draw(args, tiles, this._numStaticTilesSelected);\n if (args.shouldCollectClassifierGraphics)\n this._layerHandler.collectClassifierGraphics(args, tiles);\n }\n\n public prune(): void {\n const olderThan = BeTimePoint.now().minus(this.expirationTime);\n this._rootTile.prune(olderThan);\n }\n\n /** Exposed strictly for tests. */\n public get tileState(): \"static\" | \"dynamic\" | \"interactive\" | \"disposed\" {\n return this._rootTile.tileState.type;\n }\n\n /** Exposed strictly for tests. */\n public get hiddenElements(): Id64Array {\n const state = this._rootTile.tileState;\n return \"dynamic\" === state.type ? state.rootTile.hiddenElements : [];\n }\n\n public getTransformNodeRange(nodeId: number): Range3d | undefined {\n return this._transformNodeRanges?.get(nodeId);\n }\n\n public get containsTransformNodes(): boolean {\n return undefined !== this._transformNodeRanges;\n }\n\n public override async onScheduleEditingChanged(changes: RenderSchedule.EditingChanges[]): Promise<void> {\n const displayStyle = IModelApp.viewManager.selectedView?.displayStyle;\n const newScript = displayStyle?.scheduleScript;\n const scriptRef = newScript ? new RenderSchedule.ScriptReference(displayStyle.id, newScript) : undefined;\n const scriptInfo = IModelApp.tileAdmin.getScriptInfoForTreeId(this.modelId, scriptRef);\n\n if (scriptInfo?.timeline && this.timeline !== scriptInfo.timeline) {\n this.decoder = acquireImdlDecoder({\n type: this.batchType,\n omitEdges: this.edgeOptions === false,\n timeline: scriptInfo.timeline,\n iModel: this.iModel,\n batchModelId: this.modelId,\n is3d: this.is3d,\n containsTransformNodes: this.containsTransformNodes,\n noWorker: !IModelApp.tileAdmin.decodeImdlInWorker,\n });\n this._options.timeline = scriptInfo.timeline;\n }\n\n const relevantChange = changes.find((c) => c.timeline.modelId === this.modelId);\n if (!relevantChange || relevantChange.elements.size === 0)\n return;\n\n const elementIds = Array.from(relevantChange.elements);\n const placements = await this.iModel.elements.getPlacements(elementIds, {\n type: this.is3d ? \"3d\" : \"2d\",\n });\n\n if (placements.length === 0)\n return;\n\n const changedElements = placements.map((x) => {\n return {\n id: x.elementId,\n type: DbOpcode.Update,\n range: x.calculateRange(),\n }\n });\n\n if (changedElements.length === 0)\n return;\n\n if (this._rootTile.tileState.type === \"dynamic\") {\n this._rootTile.transition(new StaticState(this._rootTile));\n }\n this._rootTile.transition(new ScheduleScriptDynamicState(this._rootTile, changedElements));\n }\n\n public override onScheduleEditingCommitted() {\n if (this._rootTile.tileState.type !== \"static\")\n this._rootTile.transition(new StaticState(this._rootTile));\n }\n}\n"]}
|
|
@@ -184,7 +184,7 @@ class PrimaryTreeReference extends internal_1.TileTreeReference {
|
|
|
184
184
|
get treeOwner() {
|
|
185
185
|
const newId = this.createTreeId(this.view, this._id.modelId);
|
|
186
186
|
const timeline = IModelApp_1.IModelApp.tileAdmin.getScriptInfoForTreeId(this._id.modelId, this.view.displayStyle[Symbols_1._scheduleScriptReference])?.timeline;
|
|
187
|
-
if (0 !== (0, core_common_1.compareIModelTileTreeIds)(newId, this._id.treeId) || timeline
|
|
187
|
+
if (0 !== (0, core_common_1.compareIModelTileTreeIds)(newId, this._id.treeId) || timeline?.isEditingCommitted) {
|
|
188
188
|
this._id = {
|
|
189
189
|
modelId: this._id.modelId,
|
|
190
190
|
is3d: this._id.is3d,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"PrimaryTileTree.js","sourceRoot":"","sources":["../../../../src/internal/tile/PrimaryTileTree.ts"],"names":[],"mappings":"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","sourcesContent":["/*---------------------------------------------------------------------------------------------\r\n* Copyright (c) Bentley Systems, Incorporated. All rights reserved.\r\n* See LICENSE.md in the project root for license terms and full copyright notice.\r\n*--------------------------------------------------------------------------------------------*/\r\n/** @packageDocumentation\r\n * @module Tiles\r\n */\r\n\r\nimport {\r\n assert, comparePossiblyUndefined, compareStrings, Id64String,\r\n OrderedId64Iterable,\r\n} from \"@itwin/core-bentley\";\r\nimport {\r\n BaseLayerSettings,\r\n BatchType, compareIModelTileTreeIds, FeatureAppearance, FeatureAppearanceProvider, HiddenLine, iModelTileTreeIdToString, MapLayerSettings, ModelMapLayerDrapeTarget, ModelMapLayerSettings,\r\n PrimaryTileTreeId, RenderMode, RenderSchedule, SpatialClassifier, ViewFlagOverrides, ViewFlagsProperties,\r\n} from \"@itwin/core-common\";\r\nimport { Range3d, StringifiedClipVector, Transform } from \"@itwin/core-geometry\";\r\nimport { DisplayStyleState } from \"../../DisplayStyleState\";\r\nimport { IModelApp } from \"../../IModelApp\";\r\nimport { IModelConnection } from \"../../IModelConnection\";\r\nimport { GeometricModel3dState, GeometricModelState } from \"../../ModelState\";\r\nimport { formatAnimationBranchId } from \"../../internal/render/AnimationBranchState\";\r\nimport { AnimationNodeId } from \"../../common/internal/render/AnimationNodeId\";\r\nimport { RenderClipVolume } from \"../../render/RenderClipVolume\";\r\nimport { SpatialViewState } from \"../../SpatialViewState\";\r\nimport { SceneContext } from \"../../ViewContext\";\r\nimport { AttachToViewportArgs, ViewState, ViewState3d } from \"../../ViewState\";\r\nimport {\r\n DisclosedTileTreeSet,\r\n IModelTileTree, IModelTileTreeParams, iModelTileTreeParamsFromJSON, LayerTileTreeReferenceHandler, MapLayerTileTreeReference, TileDrawArgs, TileGraphicType, TileTree, TileTreeOwner, TileTreeReference,\r\n TileTreeSupplier,\r\n} from \"../../tile/internal\";\r\nimport { _scheduleScriptReference } from \"../../common/internal/Symbols\";\r\n\r\ninterface PrimaryTreeId {\r\n treeId: PrimaryTileTreeId;\r\n modelId: Id64String;\r\n is3d: boolean;\r\n isPlanProjection: boolean;\r\n timeline?: RenderSchedule.ModelTimeline;\r\n}\r\n\r\nclass PlanProjectionTileTree extends IModelTileTree {\r\n public readonly baseElevation: number;\r\n\r\n public constructor(params: IModelTileTreeParams, treeId: PrimaryTileTreeId, baseElevation: number) {\r\n super(params, treeId);\r\n this.baseElevation = baseElevation;\r\n }\r\n}\r\n\r\nclass PrimaryTreeSupplier implements TileTreeSupplier {\r\n public constructor() {\r\n }\r\n\r\n public compareTileTreeIds(lhs: PrimaryTreeId, rhs: PrimaryTreeId): number {\r\n // NB: we don't compare isPlanProjection or is3d - they should always have the same value for a given modelId.\r\n return compareStrings(lhs.modelId, rhs.modelId) || compareIModelTileTreeIds(lhs.treeId, rhs.treeId)\r\n || comparePossiblyUndefined((x, y) => x.compareTo(y), lhs.timeline, rhs.timeline);\r\n }\r\n\r\n public async createTileTree(id: PrimaryTreeId, iModel: IModelConnection): Promise<TileTree | undefined> {\r\n const treeId = id.treeId;\r\n const idStr = iModelTileTreeIdToString(id.modelId, treeId, IModelApp.tileAdmin);\r\n const props = await IModelApp.tileAdmin.requestTileTreeProps(iModel, idStr);\r\n\r\n // ###TODO remove restriction that animated tile trees can't contained instanced geometry.\r\n const isAnimated = undefined !== treeId.animationId || undefined !== id.timeline;\r\n const allowInstancing = !isAnimated && !treeId.enforceDisplayPriority && !treeId.sectionCut;\r\n const options = {\r\n edges: treeId.edges,\r\n allowInstancing,\r\n is3d: id.is3d,\r\n batchType: BatchType.Primary,\r\n timeline: id.timeline,\r\n };\r\n\r\n const params = iModelTileTreeParamsFromJSON(props, iModel, id.modelId, options);\r\n if (!id.isPlanProjection)\r\n return new IModelTileTree(params, id.treeId);\r\n\r\n let elevation = 0;\r\n try {\r\n const ranges = await iModel.models.queryExtents(id.modelId);\r\n if (1 === ranges.length) {\r\n const range = Range3d.fromJSON(ranges[0].extents);\r\n const lo = range.low.z;\r\n const hi = range.high.z;\r\n if (lo <= hi)\r\n elevation = (lo + hi) / 2;\r\n }\r\n } catch {\r\n //\r\n }\r\n\r\n return new PlanProjectionTileTree(params, id.treeId, elevation);\r\n }\r\n\r\n public getOwner(id: PrimaryTreeId, iModel: IModelConnection): TileTreeOwner {\r\n return iModel.tiles.getTileTreeOwner(id, this);\r\n }\r\n\r\n public addModelsAnimatedByScript(modelIds: Set<Id64String>, scriptSourceId: Id64String, trees: Iterable<{ id: PrimaryTreeId, owner: TileTreeOwner }>): void {\r\n // Note: This is invoked when an element hosting a schedule script is updated - it doesn't care about frontend schedule scripts.\r\n for (const tree of trees)\r\n if (scriptSourceId === tree.id.treeId.animationId)\r\n modelIds.add(tree.id.modelId);\r\n }\r\n\r\n public addSpatialModels(modelIds: Set<Id64String>, trees: Iterable<{ id: PrimaryTreeId, owner: TileTreeOwner }>): void {\r\n for (const tree of trees)\r\n if (tree.id.is3d)\r\n modelIds.add(tree.id.modelId);\r\n }\r\n}\r\n\r\nconst primaryTreeSupplier = new PrimaryTreeSupplier();\r\n\r\n/** Find all extant tile trees associated with the specified model Ids and dispose of them.\r\n * This is used by BriefcaseConnection when a GraphicalEditingScope is exited or after a change to the models' geometry guids\r\n * is committed, undone, redone, or merged.\r\n */\r\nexport function disposeTileTreesForGeometricModels(modelIds: Set<Id64String>, iModel: IModelConnection): void {\r\n const trees = iModel.tiles.getTreeOwnersForSupplier(primaryTreeSupplier);\r\n for (const kvp of trees) {\r\n const id = kvp.id as PrimaryTreeId;\r\n assert(undefined !== id.modelId);\r\n if (modelIds.has(id.modelId))\r\n kvp.owner[Symbol.dispose]();\r\n }\r\n}\r\n\r\nclass PrimaryTreeReference extends TileTreeReference {\r\n public readonly view: ViewState;\r\n public readonly model: GeometricModelState;\r\n /** Chiefly for debugging - disables iteration of this reference in SpatialModelRefs to e.g. omit the reference from the scene. */\r\n public deactivated = false;\r\n protected _viewFlagOverrides: ViewFlagOverrides;\r\n protected _id: PrimaryTreeId;\r\n private _owner: TileTreeOwner;\r\n private readonly _sectionClip?: StringifiedClipVector;\r\n private readonly _sectionCutAppearanceProvider?: FeatureAppearanceProvider;\r\n protected readonly _animationTransformNodeId?: number;\r\n private _layerRefHandler: LayerTileTreeReferenceHandler;\r\n public readonly iModel: IModelConnection;\r\n\r\n public shouldDrapeLayer(layerTreeRef?: MapLayerTileTreeReference): boolean {\r\n const mapLayerSettings = layerTreeRef?.layerSettings;\r\n if (mapLayerSettings && mapLayerSettings instanceof ModelMapLayerSettings)\r\n return ModelMapLayerDrapeTarget.IModel === mapLayerSettings.drapeTarget;\r\n return false;\r\n }\r\n\r\n public constructor(\r\n view: ViewState,\r\n model: GeometricModelState,\r\n planProjection: boolean,\r\n transformNodeId: number | undefined,\r\n sectionClip?: StringifiedClipVector,\r\n backgroundBase?: BaseLayerSettings,\r\n backgroundLayers?: MapLayerSettings[]\r\n ) {\r\n super();\r\n\r\n this.iModel = model.iModel;\r\n\r\n this._layerRefHandler = new LayerTileTreeReferenceHandler(this, false, backgroundBase, backgroundLayers, false);\r\n this.view = view;\r\n this.model = model;\r\n this._animationTransformNodeId = transformNodeId;\r\n\r\n this._sectionClip = sectionClip;\r\n this._viewFlagOverrides = { ...model.jsonProperties.viewFlagOverrides };\r\n if (sectionClip) {\r\n // Clipping will be applied on backend; don't clip out cut geometry.\r\n this._viewFlagOverrides.clipVolume = false;\r\n this._sectionCutAppearanceProvider = FeatureAppearanceProvider.supplement((app: FeatureAppearance) => {\r\n const cutApp = this.view.displayStyle.settings.clipStyle.cutStyle.appearance;\r\n return cutApp ? app.extendAppearance(cutApp) : app;\r\n });\r\n }\r\n\r\n const scriptInfo = IModelApp.tileAdmin.getScriptInfoForTreeId(model.id, view.displayStyle[_scheduleScriptReference]);\r\n\r\n this._id = {\r\n modelId: model.id,\r\n is3d: model.is3d,\r\n treeId: this.createTreeId(view, model.id),\r\n isPlanProjection: planProjection,\r\n timeline: scriptInfo?.timeline,\r\n };\r\n\r\n this._owner = primaryTreeSupplier.getOwner(this._id, model.iModel);\r\n }\r\n\r\n protected override getAnimationTransformNodeId() {\r\n return this._animationTransformNodeId ?? AnimationNodeId.Untransformed;\r\n }\r\n\r\n protected override getViewFlagOverrides(_tree: TileTree) {\r\n return this._viewFlagOverrides;\r\n }\r\n\r\n protected override getAppearanceProvider(_tree: TileTree): FeatureAppearanceProvider | undefined {\r\n if (this._sectionCutAppearanceProvider && this.view.displayStyle.settings.clipStyle.cutStyle.appearance)\r\n return this._sectionCutAppearanceProvider;\r\n\r\n return undefined;\r\n }\r\n\r\n protected override getHiddenLineSettings(_tree: TileTree): HiddenLine.Settings | undefined {\r\n return this._sectionClip ? this.view.displayStyle.settings.clipStyle.cutStyle.hiddenLine : undefined;\r\n }\r\n\r\n public override get castsShadows() {\r\n return true;\r\n }\r\n\r\n protected get isPlanProjection(): boolean {\r\n return false;\r\n }\r\n\r\n public override discloseTileTrees(trees: DisclosedTileTreeSet): void {\r\n super.discloseTileTrees(trees);\r\n this._layerRefHandler.discloseTileTrees(trees);\r\n }\r\n\r\n protected override getClipVolume(_tree: TileTree): RenderClipVolume | undefined {\r\n // ###TODO: reduce frequency with which getModelClip() is called\r\n return this.view.is3d() && !this._sectionClip ? this.view.getModelClip(this.model.id) : undefined;\r\n }\r\n\r\n public override canSupplyToolTip() {\r\n return false;\r\n }\r\n\r\n public override createDrawArgs(context: SceneContext): TileDrawArgs | undefined {\r\n const args = super.createDrawArgs(context);\r\n if (args)\r\n args.intersectionClip = this._sectionClip;\r\n\r\n return args;\r\n }\r\n\r\n public get treeOwner(): TileTreeOwner {\r\n const newId = this.createTreeId(this.view, this._id.modelId);\r\n const timeline = IModelApp.tileAdmin.getScriptInfoForTreeId(this._id.modelId, this.view.displayStyle[_scheduleScriptReference])?.timeline;\r\n if (0 !== compareIModelTileTreeIds(newId, this._id.treeId) || timeline !== this._id.timeline) {\r\n this._id = {\r\n modelId: this._id.modelId,\r\n is3d: this._id.is3d,\r\n treeId: newId,\r\n isPlanProjection: this._id.isPlanProjection,\r\n timeline,\r\n };\r\n\r\n this._owner = primaryTreeSupplier.getOwner(this._id, this.model.iModel);\r\n }\r\n\r\n return this._owner;\r\n }\r\n\r\n protected createTreeId(view: ViewState, modelId: Id64String): PrimaryTileTreeId {\r\n if (this._sectionClip) {\r\n // We do this each time in case the ClipStyle's overrides are modified.\r\n // ###TODO: can we avoid that? Event listeners maybe?\r\n this._viewFlagOverrides = {\r\n ...this.view.displayStyle.settings.clipStyle.cutStyle.viewflags,\r\n // Do not clip out the cut geometry intersecting the clip planes.\r\n clipVolume: false,\r\n // The cut geometry is planar - it should win a z-fight.\r\n // Also we need to preserve this flag if this is a plan projection tile tree reference.\r\n forceSurfaceDiscard: true,\r\n };\r\n }\r\n\r\n const animationId = IModelApp.tileAdmin.getScriptInfoForTreeId(modelId, view.displayStyle[_scheduleScriptReference])?.animationId;\r\n const renderMode = this._viewFlagOverrides.renderMode ?? view.viewFlags.renderMode;\r\n const visibleEdges = this._viewFlagOverrides.visibleEdges ?? view.viewFlags.visibleEdges;\r\n const edgesRequired = visibleEdges || RenderMode.SmoothShade !== renderMode || IModelApp.tileAdmin.alwaysRequestEdges;\r\n const edges = edgesRequired ? IModelApp.tileAdmin.edgeOptions : false;\r\n const sectionCut = this._sectionClip?.clipString;\r\n const disablePolyfaceDecimation = IModelApp.tileAdmin.disablePolyfaceDecimation;\r\n return { type: BatchType.Primary, edges, animationId, sectionCut, disablePolyfaceDecimation };\r\n }\r\n\r\n protected computeBaseTransform(tree: TileTree): Transform {\r\n return super.computeTransform(tree);\r\n }\r\n\r\n protected override computeTransform(tree: TileTree): Transform {\r\n const baseTf = this.computeBaseTransform(tree);\r\n const displayTf = this.view.modelDisplayTransformProvider?.getModelDisplayTransform(this.model.id);\r\n if (!displayTf)\r\n return baseTf;\r\n\r\n return displayTf.premultiply ? displayTf.transform.multiplyTransformTransform(baseTf) : baseTf.multiplyTransformTransform(displayTf.transform);\r\n }\r\n\r\n public override addToScene(context: SceneContext): void {\r\n const tree = this.treeOwner.load() as IModelTileTree;\r\n if (undefined === tree || !this._layerRefHandler.initializeLayers(context))\r\n return; // Not loaded yet.\r\n\r\n super.addToScene(context);\r\n }\r\n}\r\n\r\nexport class AnimatedTreeReference extends PrimaryTreeReference {\r\n private readonly _branchId: string;\r\n\r\n public constructor(view: ViewState, model: GeometricModelState, transformNodeId: number) {\r\n super(view, model, false, transformNodeId);\r\n this._branchId = formatAnimationBranchId(model.id, transformNodeId);\r\n }\r\n\r\n protected override computeBaseTransform(tree: TileTree): Transform {\r\n const tf = super.computeBaseTransform(tree);\r\n const style = this.view.displayStyle;\r\n const script = style.scheduleScript;\r\n if (undefined === script || undefined === this._animationTransformNodeId)\r\n return tf;\r\n\r\n const timePoint = style.settings.timePoint ?? script.duration.low;\r\n const animTf = script.getTransform(this._id.modelId, this._animationTransformNodeId, timePoint);\r\n if (animTf)\r\n animTf.multiplyTransformTransform(tf, tf);\r\n\r\n return tf;\r\n }\r\n\r\n public override createDrawArgs(context: SceneContext): TileDrawArgs | undefined {\r\n const animBranch = context.viewport.target.animationBranches?.branchStates.get(this._branchId);\r\n if (animBranch && animBranch.omit)\r\n return undefined;\r\n\r\n const args = super.createDrawArgs(context);\r\n if (args?.tree && undefined !== this._animationTransformNodeId) {\r\n assert(args.tree instanceof IModelTileTree);\r\n args.boundingRange = args.tree.getTransformNodeRange(this._animationTransformNodeId);\r\n }\r\n\r\n return args;\r\n }\r\n}\r\n\r\nclass PlanProjectionTreeReference extends PrimaryTreeReference {\r\n private get _view3d() { return this.view as ViewState3d; }\r\n private readonly _baseTransform = Transform.createIdentity();\r\n\r\n public constructor(\r\n view: ViewState3d,\r\n model: GeometricModelState,\r\n sectionCut?: StringifiedClipVector,\r\n backgroundBase?: BaseLayerSettings,\r\n backgroundLayers?: MapLayerSettings[]\r\n ) {\r\n super(view, model, true, undefined, sectionCut, backgroundBase, backgroundLayers);\r\n this._viewFlagOverrides.forceSurfaceDiscard = true;\r\n }\r\n\r\n public override get castsShadows() {\r\n return false;\r\n }\r\n\r\n protected override get isPlanProjection(): boolean {\r\n return true;\r\n }\r\n\r\n public override createDrawArgs(context: SceneContext): TileDrawArgs | undefined {\r\n const args = super.createDrawArgs(context);\r\n if (undefined !== args && this._id.treeId.enforceDisplayPriority) {\r\n args.drawGraphics = () => {\r\n const graphics = args.produceGraphics();\r\n if (undefined !== graphics) {\r\n const settings = this.getSettings();\r\n const asOverlay = undefined !== settings && settings.overlay;\r\n const transparency = settings?.transparency || 0;\r\n\r\n let elevation = settings?.elevation;\r\n if (undefined === elevation) {\r\n const tree = this.treeOwner.tileTree;\r\n if (tree) {\r\n assert(tree instanceof PlanProjectionTileTree);\r\n elevation = tree.baseElevation;\r\n } else {\r\n elevation = 0;\r\n }\r\n }\r\n\r\n context.outputGraphic(context.target.renderSystem.createGraphicLayerContainer(graphics, asOverlay, transparency, elevation));\r\n }\r\n };\r\n }\r\n\r\n return args;\r\n }\r\n\r\n protected override computeBaseTransform(tree: TileTree): Transform {\r\n assert(tree instanceof PlanProjectionTileTree);\r\n const transform = tree.iModelTransform.clone(this._baseTransform);\r\n\r\n const elevation = this.getSettings()?.elevation;\r\n if (undefined !== elevation)\r\n transform.origin.z = elevation;\r\n\r\n return transform;\r\n }\r\n\r\n public override draw(args: TileDrawArgs): void {\r\n const settings = this.getSettings();\r\n if (undefined === settings || settings.enforceDisplayPriority || !settings.overlay)\r\n super.draw(args);\r\n else\r\n args.context.withGraphicType(TileGraphicType.Overlay, () => args.tree.draw(args));\r\n }\r\n\r\n private getSettings() {\r\n return this._view3d.getDisplayStyle3d().settings.getPlanProjectionSettings(this.model.id);\r\n }\r\n\r\n protected override createTreeId(view: ViewState, modelId: Id64String): PrimaryTileTreeId {\r\n const id = super.createTreeId(view, modelId);\r\n const settings = this.getSettings();\r\n if (undefined !== settings && settings.enforceDisplayPriority)\r\n id.enforceDisplayPriority = true;\r\n\r\n return id;\r\n }\r\n}\r\n\r\nfunction isPlanProjection(view: ViewState, model: GeometricModelState): boolean {\r\n const model3d = view.is3d() ? model.asGeometricModel3d : undefined;\r\n return undefined !== model3d && model3d.isPlanProjection;\r\n}\r\n\r\nfunction createTreeRef(\r\n view: ViewState,\r\n model: GeometricModelState,\r\n sectionCut: StringifiedClipVector | undefined,\r\n backgroundBase?: BaseLayerSettings,\r\n backgroundLayers?: MapLayerSettings[]\r\n): PrimaryTreeReference {\r\n if (false !== IModelApp.renderSystem.options.planProjections && isPlanProjection(view, model))\r\n return new PlanProjectionTreeReference(view as ViewState3d, model, sectionCut, backgroundBase, backgroundLayers);\r\n\r\n return new PrimaryTreeReference(view, model, false, undefined, sectionCut, backgroundBase, backgroundLayers);\r\n}\r\n\r\nexport function createPrimaryTileTreeReference(\r\n view: ViewState,\r\n model: GeometricModelState,\r\n getBackgroundBase?: () => BaseLayerSettings,\r\n getBackgroundLayers?: () => MapLayerSettings[]\r\n): PrimaryTreeReference {\r\n const backgroundBase = getBackgroundBase?.();\r\n const backgroundLayers = getBackgroundLayers?.();\r\n\r\n return createTreeRef(view, model, undefined, backgroundBase, backgroundLayers);\r\n}\r\n\r\nclass MaskTreeReference extends TileTreeReference {\r\n protected _id: PrimaryTreeId;\r\n private _owner: TileTreeOwner;\r\n public readonly model: GeometricModelState;\r\n public override get castsShadows() { return false; }\r\n public constructor(view: ViewState, model: GeometricModelState) {\r\n super();\r\n this.model = model;\r\n this._id = {\r\n modelId: model.id,\r\n is3d: model.is3d,\r\n treeId: this.createTreeId(),\r\n isPlanProjection: isPlanProjection(view, model),\r\n };\r\n\r\n this._owner = primaryTreeSupplier.getOwner(this._id, model.iModel);\r\n }\r\n\r\n public get treeOwner(): TileTreeOwner {\r\n const newId = this.createTreeId();\r\n if (0 !== compareIModelTileTreeIds(newId, this._id.treeId)) {\r\n this._id = { modelId: this._id.modelId, is3d: this._id.is3d, treeId: newId, isPlanProjection: false };\r\n this._owner = primaryTreeSupplier.getOwner(this._id, this.model.iModel);\r\n }\r\n\r\n return this._owner;\r\n }\r\n protected createTreeId(): PrimaryTileTreeId {\r\n return { type: BatchType.Primary, edges: false, disablePolyfaceDecimation: IModelApp.tileAdmin.disablePolyfaceDecimation };\r\n }\r\n}\r\n\r\nexport function createMaskTreeReference(view: ViewState, model: GeometricModelState): TileTreeReference {\r\n return new MaskTreeReference(view, model);\r\n}\r\n\r\nexport class ModelMapLayerTileTreeReference extends MapLayerTileTreeReference {\r\n private _id: PrimaryTreeId;\r\n private _owner: TileTreeOwner;\r\n public get isPlanar() { return true; }\r\n public get activeClassifier() { return this._classifier; }\r\n public constructor(layerSettings: MapLayerSettings, private _classifier: SpatialClassifier, layerIndex: number, iModel: IModelConnection, private _source?: DisplayStyleState) {\r\n super(layerSettings, layerIndex, iModel);\r\n this._id = {\r\n modelId: _classifier.modelId,\r\n is3d: true, // model.is3d,\r\n treeId: this.createTreeId(),\r\n isPlanProjection: false, // isPlanProjection(view, model),\r\n };\r\n\r\n this._owner = primaryTreeSupplier.getOwner(this._id, this.iModel);\r\n }\r\n\r\n protected createTreeId(): PrimaryTileTreeId {\r\n return { type: BatchType.Primary, edges: false, disablePolyfaceDecimation: IModelApp.tileAdmin.disablePolyfaceDecimation };\r\n }\r\n\r\n public get treeOwner(): TileTreeOwner {\r\n const newId = this.createTreeId();\r\n if (0 !== compareIModelTileTreeIds(newId, this._id.treeId)) {\r\n this._id = { modelId: this._id.modelId, is3d: this._id.is3d, treeId: newId, isPlanProjection: false };\r\n this._owner = primaryTreeSupplier.getOwner(this._id, this.iModel);\r\n }\r\n\r\n return this._owner;\r\n }\r\n public get viewFlags(): Partial<ViewFlagsProperties> {\r\n return {\r\n renderMode: RenderMode.SmoothShade,\r\n transparency: true, // Igored for point clouds as they don't support transparency.\r\n textures: true,\r\n lighting: false,\r\n shadows: false,\r\n monochrome: false,\r\n materials: false,\r\n ambientOcclusion: false,\r\n visibleEdges: true,\r\n hiddenEdges: false,\r\n fill: true,\r\n };\r\n }\r\n}\r\nexport function createModelMapLayerTileTreeReference(layerSettings: ModelMapLayerSettings, layerIndex: number, iModel: IModelConnection): ModelMapLayerTileTreeReference | undefined {\r\n const classifier = SpatialClassifier.fromModelMapLayer(layerSettings);\r\n return classifier ? new ModelMapLayerTileTreeReference(layerSettings, classifier, layerIndex, iModel) : undefined;\r\n}\r\n\r\n/** Provides [[TileTreeReference]]s for the loaded models present in a [[SpatialViewState]]'s [[ModelSelectorState]].\r\n * @internal\r\n */\r\nexport interface SpatialTileTreeReferences extends Iterable<TileTreeReference> {\r\n /** Supplies an iterator over all of the [[TileTreeReference]]s. */\r\n [Symbol.iterator](): Iterator<TileTreeReference>;\r\n /** Requests that the set of [[TileTreeReference]]s be updated to match the current state of the view, e.g., after the model selector's contents have changed. */\r\n update(): void;\r\n /** See SpatialViewState.setTileTreeReferencesDeactivated. */\r\n setDeactivated(modelIds: Id64String | Id64String[] | undefined, deactivated: boolean | undefined, refs: \"all\" | \"animated\" | \"primary\" | \"section\" | number[]): void;\r\n /** See SpatialViewState.attachToViewport. */\r\n attachToViewport(args: AttachToViewportArgs): void;\r\n /** See SpatialViewState.detachFromViewport. */\r\n detachFromViewport(): void;\r\n /** See SpatialViewState.collectMaskRefs */\r\n collectMaskRefs(modelIds: OrderedId64Iterable, maskTreeRefs: TileTreeReference[], maskRange: Range3d): void;\r\n /** See SpatialViewState.getModelsNotInMask */\r\n getModelsNotInMask(maskModels: OrderedId64Iterable | undefined, useVisible: boolean): Id64String[] | undefined;\r\n}\r\n\r\n/** Provides [[TileTreeReference]]s for the loaded models present in a [[SpatialViewState]]'s [[ModelSelectorState]] and\r\n * not present in the optionally-supplied exclusion list.\r\n * @internal\r\n */\r\nexport function createSpatialTileTreeReferences(view: SpatialViewState, excludedModels?: Set<Id64String>): SpatialTileTreeReferences {\r\n return new SpatialRefs(view, excludedModels);\r\n}\r\n\r\n/** Provides [[TileTreeReference]]s for the loaded models present in a [[SpatialViewState]]'s [[ModelSelectorState]].\r\n * @internal\r\n */\r\nexport namespace SpatialTileTreeReferences {\r\n /** Create a SpatialTileTreeReferences object reflecting the contents of the specified view. */\r\n export function create(view: SpatialViewState): SpatialTileTreeReferences {\r\n return createSpatialTileTreeReferences(view);\r\n }\r\n}\r\n\r\n/** Represents the [[TileTreeReference]]s associated with one model in a [[SpatialTileTreeReferences]]. */\r\nclass SpatialModelRefs implements Iterable<TileTreeReference> {\r\n /** The TileTreeReference representing the model's primary content. */\r\n private readonly _modelRef: TileTreeReference;\r\n /** TileTreeReferences representing nodes transformed by the view's schedule script. */\r\n private readonly _animatedRefs: PrimaryTreeReference[] = [];\r\n /** TileTreeReference providing cut geometry intersecting the view's clip volume. */\r\n private _sectionCutRef?: PrimaryTreeReference;\r\n /** Whether `this._modelRef` is a [[PrimaryTreeReference]] (as opposed to, e.g., a reality model tree reference). */\r\n private readonly _isPrimaryRef: boolean;\r\n /** Used to mark refs as excluded so that only their _sectionCutRef is returned by the iterator. */\r\n private readonly _isExcluded: boolean;\r\n\r\n public constructor(model: GeometricModel3dState, view: SpatialViewState, excluded: boolean) {\r\n this._modelRef = model.createTileTreeReference(view);\r\n this._isPrimaryRef = this._modelRef instanceof PrimaryTreeReference;\r\n this._isExcluded = excluded;\r\n }\r\n\r\n public *[Symbol.iterator](): Iterator<TileTreeReference> {\r\n if ((!this._primaryRef || !this._primaryRef.deactivated) && !this._isExcluded)\r\n yield this._modelRef;\r\n\r\n for (const animated of this._animatedRefs)\r\n if (!animated.deactivated)\r\n yield animated;\r\n\r\n if (this._sectionCutRef && !this._sectionCutRef.deactivated)\r\n yield this._sectionCutRef;\r\n }\r\n\r\n public updateAnimated(script: RenderSchedule.ScriptReference | undefined): void {\r\n const ref = this._primaryRef;\r\n if (!ref || this._isExcluded)\r\n return;\r\n\r\n this._animatedRefs.length = 0;\r\n const nodeIds = script?.script.getTransformBatchIds(ref.model.id);\r\n if (nodeIds)\r\n for (const nodeId of nodeIds)\r\n this._animatedRefs.push(new AnimatedTreeReference(ref.view, ref.model, nodeId));\r\n }\r\n\r\n public updateSectionCut(clip: StringifiedClipVector | undefined): void {\r\n const ref = this._primaryRef;\r\n if (!ref) {\r\n assert(undefined === this._sectionCutRef);\r\n return;\r\n }\r\n\r\n // If the clip isn't supposed to apply to this model, don't produce cut geometry.\r\n const vfJson = clip ? ref.model.jsonProperties.viewFlagOverrides : undefined;\r\n const vfOvrs = vfJson ? { ...vfJson } : undefined;\r\n if (vfOvrs && !vfOvrs.clipVolume)\r\n clip = undefined;\r\n\r\n this._sectionCutRef = clip ? createTreeRef(ref.view, ref.model, clip) : undefined;\r\n }\r\n\r\n public setDeactivated(deactivated: boolean | undefined, which: \"all\" | \"animated\" | \"primary\" | \"section\" | number[]): void {\r\n if (typeof which !== \"string\") {\r\n for (const index of which)\r\n if (this._animatedRefs[index])\r\n this._animatedRefs[index].deactivated = deactivated ?? !this._animatedRefs[index].deactivated;\r\n\r\n return;\r\n }\r\n\r\n if ((\"all\" === which || \"primary\" === which) && this._primaryRef)\r\n this._primaryRef.deactivated = deactivated ?? !this._primaryRef.deactivated;\r\n\r\n if ((\"all\" === which || \"section\" === which) && this._sectionCutRef)\r\n this._sectionCutRef.deactivated = deactivated ?? !this._sectionCutRef.deactivated;\r\n\r\n if ((\"all\" === which || \"animated\" === which))\r\n for (const ref of this._animatedRefs)\r\n ref.deactivated = deactivated ?? !ref.deactivated;\r\n }\r\n\r\n private get _primaryRef(): PrimaryTreeReference | undefined {\r\n if (!this._isPrimaryRef)\r\n return undefined;\r\n\r\n assert(this._modelRef instanceof PrimaryTreeReference);\r\n return this._modelRef;\r\n }\r\n}\r\n\r\n/** Provides [[TileTreeReference]]s for the loaded models present in a [[SpatialViewState]]'s [[ModelSelectorState]]. */\r\nclass SpatialRefs implements SpatialTileTreeReferences {\r\n private _allLoaded = false;\r\n private readonly _view: SpatialViewState;\r\n private readonly _excludedModels?: Set<Id64String>;\r\n private _refs = new Map<Id64String, SpatialModelRefs>();\r\n private _swapRefs = new Map<Id64String, SpatialModelRefs>();\r\n private _sectionCutOnlyRefs = new Map<Id64String, SpatialModelRefs>();\r\n private _swapSectionCutOnlyRefs = new Map<Id64String, SpatialModelRefs>();\r\n private _scheduleScript?: RenderSchedule.ScriptReference;\r\n private _sectionCut?: StringifiedClipVector;\r\n\r\n public constructor(view: SpatialViewState, excludedModels: Set<Id64String> | undefined) {\r\n this._view = view;\r\n this._scheduleScript = view.displayStyle[_scheduleScriptReference];\r\n this._sectionCut = this.getSectionCutFromView();\r\n if (excludedModels)\r\n this._excludedModels = new Set(excludedModels);\r\n }\r\n\r\n public update(): void {\r\n this._allLoaded = false;\r\n }\r\n\r\n public attachToViewport() { }\r\n public detachFromViewport() { }\r\n\r\n public *[Symbol.iterator](): Iterator<TileTreeReference> {\r\n this.load();\r\n for (const modelRef of this._refs.values())\r\n for (const ref of modelRef)\r\n yield ref;\r\n if (this._sectionCut) {\r\n for (const modelRef of this._sectionCutOnlyRefs.values())\r\n for (const ref of modelRef)\r\n yield ref;\r\n }\r\n }\r\n\r\n public setDeactivated(modelIds: Id64String | Id64String[] | undefined, deactivated: boolean, refs: \"all\" | \"animated\" | \"primary\" | \"section\" | number[]): void {\r\n if (undefined === modelIds) {\r\n for (const model of this._refs.values())\r\n model.setDeactivated(deactivated, refs);\r\n\r\n return;\r\n }\r\n\r\n if (typeof modelIds === \"string\")\r\n modelIds = [modelIds];\r\n\r\n for (const modelId of modelIds)\r\n this._refs.get(modelId)?.setDeactivated(deactivated, refs);\r\n }\r\n\r\n /** For getting the [TileTreeReference]s that are in the modelIds, for planar classification.\r\n * @param modelIds modelIds for which to get the TileTreeReferences\r\n * @param maskTreeRefs where to store the TileTreeReferences\r\n * @param maskRange range to extend for the maskRefs\r\n */\r\n public collectMaskRefs(modelIds: OrderedId64Iterable, maskTreeRefs: TileTreeReference[], maskRange: Range3d): void {\r\n for (const modelId of modelIds) {\r\n if (!this._excludedModels?.has(modelId)) {\r\n const model = this._view.iModel.models.getLoaded(modelId);\r\n assert(model !== undefined); // Models should be loaded by RealityModelTileTree\r\n if (model?.asGeometricModel) {\r\n const treeRef = createMaskTreeReference(this._view, model.asGeometricModel);\r\n maskTreeRefs.push(treeRef);\r\n const range = treeRef.computeWorldContentRange();\r\n maskRange.extendRange(range);\r\n }\r\n }\r\n }\r\n }\r\n\r\n /** For getting a list of modelIds which do not participate in masking, for planar classification.\r\n * For non-batched tile trees this is not needed, so just return undefined.\r\n */\r\n public getModelsNotInMask(_maskModels: OrderedId64Iterable | undefined, _useVisible: boolean): Id64String[] | undefined { return undefined; }\r\n\r\n private load(): void {\r\n if (!this._allLoaded) {\r\n this._allLoaded = true;\r\n this.updateModels();\r\n }\r\n\r\n const curScript = this._view.displayStyle[_scheduleScriptReference];\r\n const prevScript = this._scheduleScript;\r\n if (curScript !== prevScript) {\r\n this._scheduleScript = curScript;\r\n if (!curScript || !prevScript || !curScript.script.equals(prevScript.script))\r\n for (const ref of this._refs.values())\r\n ref.updateAnimated(curScript);\r\n }\r\n\r\n const sectionCut = this.getSectionCutFromView();\r\n if (sectionCut?.clipString !== this._sectionCut?.clipString) {\r\n this._sectionCut = sectionCut;\r\n for (const ref of this._refs.values())\r\n ref.updateSectionCut(sectionCut);\r\n for (const ref of this._sectionCutOnlyRefs.values())\r\n ref.updateSectionCut(sectionCut);\r\n }\r\n }\r\n\r\n private getSectionCutFromView(): StringifiedClipVector | undefined {\r\n const wantCut = this._view.viewFlags.clipVolume && this._view.displayStyle.settings.clipStyle.produceCutGeometry;\r\n const clip = wantCut ? this._view.getViewClip() : undefined;\r\n return StringifiedClipVector.fromClipVector(clip);\r\n }\r\n\r\n /** Ensure this._refs contains a SpatialModelRefs for all loaded models in the model selector. */\r\n private updateModels(): void {\r\n let prev = this._refs;\r\n let cur = this._swapRefs;\r\n this._refs = cur;\r\n this._swapRefs = prev;\r\n cur.clear();\r\n prev = this._sectionCutOnlyRefs;\r\n cur = this._swapSectionCutOnlyRefs;\r\n this._sectionCutOnlyRefs = cur;\r\n this._swapSectionCutOnlyRefs = prev;\r\n cur.clear();\r\n\r\n for (const modelId of this._view.modelSelector.models) {\r\n let excluded = false;\r\n if (undefined !== this._excludedModels && this._excludedModels.has(modelId)) {\r\n excluded = true;\r\n cur = this._sectionCutOnlyRefs;\r\n prev = this._swapSectionCutOnlyRefs;\r\n } else {\r\n cur = this._refs;\r\n prev = this._swapRefs;\r\n }\r\n\r\n let modelRefs = prev.get(modelId);\r\n if (!modelRefs) {\r\n const model = this._view.iModel.models.getLoaded(modelId)?.asGeometricModel3d;\r\n if (model) {\r\n modelRefs = new SpatialModelRefs(model, this._view, excluded);\r\n modelRefs.updateAnimated(this._scheduleScript);\r\n modelRefs.updateSectionCut(this._sectionCut);\r\n }\r\n }\r\n\r\n if (modelRefs)\r\n cur.set(modelId, modelRefs);\r\n }\r\n }\r\n}\r\n"]}
|
|
1
|
+
{"version":3,"file":"PrimaryTileTree.js","sourceRoot":"","sources":["../../../../src/internal/tile/PrimaryTileTree.ts"],"names":[],"mappings":";AAAA;;;+FAG+F;AAC/F;;GAEG;;;AAqHH,gFAQC;AA+TD,wEAUC;AAkCD,0DAEC;AAgDD,oFAGC;AA0BD,0EAEC;AAvjBD,sDAG6B;AAC7B,oDAI4B;AAC5B,wDAAiF;AAEjF,+CAA4C;AAG5C,qFAAqF;AACrF,kFAA+E;AAK/E,kDAI6B;AAC7B,2DAAyE;AAUzE,MAAM,sBAAuB,SAAQ,yBAAc;IACjC,aAAa,CAAS;IAEtC,YAAmB,MAA4B,EAAE,MAAyB,EAAE,aAAqB;QAC/F,KAAK,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;QACtB,IAAI,CAAC,aAAa,GAAG,aAAa,CAAC;IACrC,CAAC;CACF;AAED,MAAM,mBAAmB;IACvB;IACA,CAAC;IAEM,kBAAkB,CAAC,GAAkB,EAAE,GAAkB;QAC9D,8GAA8G;QAC9G,OAAO,IAAA,6BAAc,EAAC,GAAG,CAAC,OAAO,EAAE,GAAG,CAAC,OAAO,CAAC,IAAI,IAAA,sCAAwB,EAAC,GAAG,CAAC,MAAM,EAAE,GAAG,CAAC,MAAM,CAAC;eAC9F,IAAA,uCAAwB,EAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,EAAE,GAAG,CAAC,QAAQ,EAAE,GAAG,CAAC,QAAQ,CAAC,CAAC;IACtF,CAAC;IAEM,KAAK,CAAC,cAAc,CAAC,EAAiB,EAAE,MAAwB;QACrE,MAAM,MAAM,GAAG,EAAE,CAAC,MAAM,CAAC;QACzB,MAAM,KAAK,GAAG,IAAA,sCAAwB,EAAC,EAAE,CAAC,OAAO,EAAE,MAAM,EAAE,qBAAS,CAAC,SAAS,CAAC,CAAC;QAChF,MAAM,KAAK,GAAG,MAAM,qBAAS,CAAC,SAAS,CAAC,oBAAoB,CAAC,MAAM,EAAE,KAAK,CAAC,CAAC;QAE5E,0FAA0F;QAC1F,MAAM,UAAU,GAAG,SAAS,KAAK,MAAM,CAAC,WAAW,IAAI,SAAS,KAAK,EAAE,CAAC,QAAQ,CAAC;QACjF,MAAM,eAAe,GAAG,CAAC,UAAU,IAAI,CAAC,MAAM,CAAC,sBAAsB,IAAI,CAAC,MAAM,CAAC,UAAU,CAAC;QAC5F,MAAM,OAAO,GAAG;YACd,KAAK,EAAE,MAAM,CAAC,KAAK;YACnB,eAAe;YACf,IAAI,EAAE,EAAE,CAAC,IAAI;YACb,SAAS,EAAE,uBAAS,CAAC,OAAO;YAC5B,QAAQ,EAAE,EAAE,CAAC,QAAQ;SACtB,CAAC;QAEF,MAAM,MAAM,GAAG,IAAA,uCAA4B,EAAC,KAAK,EAAE,MAAM,EAAE,EAAE,CAAC,OAAO,EAAE,OAAO,CAAC,CAAC;QAChF,IAAI,CAAC,EAAE,CAAC,gBAAgB;YACtB,OAAO,IAAI,yBAAc,CAAC,MAAM,EAAE,EAAE,CAAC,MAAM,CAAC,CAAC;QAE/C,IAAI,SAAS,GAAG,CAAC,CAAC;QAClB,IAAI,CAAC;YACH,MAAM,MAAM,GAAG,MAAM,MAAM,CAAC,MAAM,CAAC,YAAY,CAAC,EAAE,CAAC,OAAO,CAAC,CAAC;YAC5D,IAAI,CAAC,KAAK,MAAM,CAAC,MAAM,EAAE,CAAC;gBACxB,MAAM,KAAK,GAAG,uBAAO,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC;gBAClD,MAAM,EAAE,GAAG,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC;gBACvB,MAAM,EAAE,GAAG,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC;gBACxB,IAAI,EAAE,IAAI,EAAE;oBACV,SAAS,GAAG,CAAC,EAAE,GAAG,EAAE,CAAC,GAAG,CAAC,CAAC;YAC9B,CAAC;QACH,CAAC;QAAC,MAAM,CAAC;YACP,EAAE;QACJ,CAAC;QAED,OAAO,IAAI,sBAAsB,CAAC,MAAM,EAAE,EAAE,CAAC,MAAM,EAAE,SAAS,CAAC,CAAC;IAClE,CAAC;IAEM,QAAQ,CAAC,EAAiB,EAAE,MAAwB;QACzD,OAAO,MAAM,CAAC,KAAK,CAAC,gBAAgB,CAAC,EAAE,EAAE,IAAI,CAAC,CAAC;IACjD,CAAC;IAEM,yBAAyB,CAAC,QAAyB,EAAE,cAA0B,EAAE,KAA4D;QAClJ,gIAAgI;QAChI,KAAK,MAAM,IAAI,IAAI,KAAK;YACtB,IAAI,cAAc,KAAK,IAAI,CAAC,EAAE,CAAC,MAAM,CAAC,WAAW;gBAC/C,QAAQ,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC,OAAO,CAAC,CAAC;IACpC,CAAC;IAEM,gBAAgB,CAAC,QAAyB,EAAE,KAA4D;QAC7G,KAAK,MAAM,IAAI,IAAI,KAAK;YACtB,IAAI,IAAI,CAAC,EAAE,CAAC,IAAI;gBACd,QAAQ,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC,OAAO,CAAC,CAAC;IACpC,CAAC;CACF;AAED,MAAM,mBAAmB,GAAG,IAAI,mBAAmB,EAAE,CAAC;AAEtD;;;GAGG;AACH,SAAgB,kCAAkC,CAAC,QAAyB,EAAE,MAAwB;IACpG,MAAM,KAAK,GAAG,MAAM,CAAC,KAAK,CAAC,wBAAwB,CAAC,mBAAmB,CAAC,CAAC;IACzE,KAAK,MAAM,GAAG,IAAI,KAAK,EAAE,CAAC;QACxB,MAAM,EAAE,GAAG,GAAG,CAAC,EAAmB,CAAC;QACnC,IAAA,qBAAM,EAAC,SAAS,KAAK,EAAE,CAAC,OAAO,CAAC,CAAC;QACjC,IAAI,QAAQ,CAAC,GAAG,CAAC,EAAE,CAAC,OAAO,CAAC;YAC1B,GAAG,CAAC,KAAK,CAAC,MAAM,CAAC,OAAO,CAAC,EAAE,CAAC;IAChC,CAAC;AACH,CAAC;AAED,MAAM,oBAAqB,SAAQ,4BAAiB;IAClC,IAAI,CAAY;IAChB,KAAK,CAAsB;IAC3C,kIAAkI;IAC3H,WAAW,GAAG,KAAK,CAAC;IACjB,kBAAkB,CAAoB;IACtC,GAAG,CAAgB;IACrB,MAAM,CAAgB;IACb,YAAY,CAAyB;IACrC,6BAA6B,CAA6B;IACxD,yBAAyB,CAAU;IAC9C,gBAAgB,CAAgC;IACxC,MAAM,CAAmB;IAElC,gBAAgB,CAAC,YAAwC;QAC9D,MAAM,gBAAgB,GAAG,YAAY,EAAE,aAAa,CAAC;QACrD,IAAI,gBAAgB,IAAI,gBAAgB,YAAY,mCAAqB;YACvE,OAAO,sCAAwB,CAAC,MAAM,KAAK,gBAAgB,CAAC,WAAW,CAAC;QAC1E,OAAO,KAAK,CAAC;IACf,CAAC;IAED,YACE,IAAe,EACf,KAA0B,EAC1B,cAAuB,EACvB,eAAmC,EACnC,WAAmC,EACnC,cAAkC,EAClC,gBAAqC;QAErC,KAAK,EAAE,CAAC;QAER,IAAI,CAAC,MAAM,GAAG,KAAK,CAAC,MAAM,CAAC;QAE3B,IAAI,CAAC,gBAAgB,GAAG,IAAI,wCAA6B,CAAC,IAAI,EAAE,KAAK,EAAE,cAAc,EAAE,gBAAgB,EAAE,KAAK,CAAC,CAAC;QAChH,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC;QACjB,IAAI,CAAC,KAAK,GAAG,KAAK,CAAC;QACnB,IAAI,CAAC,yBAAyB,GAAG,eAAe,CAAC;QAEjD,IAAI,CAAC,YAAY,GAAG,WAAW,CAAC;QAChC,IAAI,CAAC,kBAAkB,GAAG,EAAE,GAAG,KAAK,CAAC,cAAc,CAAC,iBAAiB,EAAE,CAAC;QACxE,IAAI,WAAW,EAAE,CAAC;YAChB,oEAAoE;YACpE,IAAI,CAAC,kBAAkB,CAAC,UAAU,GAAG,KAAK,CAAC;YAC3C,IAAI,CAAC,6BAA6B,GAAG,uCAAyB,CAAC,UAAU,CAAC,CAAC,GAAsB,EAAE,EAAE;gBACnG,MAAM,MAAM,GAAG,IAAI,CAAC,IAAI,CAAC,YAAY,CAAC,QAAQ,CAAC,SAAS,CAAC,QAAQ,CAAC,UAAU,CAAC;gBAC7E,OAAO,MAAM,CAAC,CAAC,CAAC,GAAG,CAAC,gBAAgB,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC;YACrD,CAAC,CAAC,CAAC;QACL,CAAC;QAED,MAAM,UAAU,GAAG,qBAAS,CAAC,SAAS,CAAC,sBAAsB,CAAC,KAAK,CAAC,EAAE,EAAE,IAAI,CAAC,YAAY,CAAC,kCAAwB,CAAC,CAAC,CAAC;QAErH,IAAI,CAAC,GAAG,GAAG;YACT,OAAO,EAAE,KAAK,CAAC,EAAE;YACjB,IAAI,EAAE,KAAK,CAAC,IAAI;YAChB,MAAM,EAAE,IAAI,CAAC,YAAY,CAAC,IAAI,EAAE,KAAK,CAAC,EAAE,CAAC;YACzC,gBAAgB,EAAE,cAAc;YAChC,QAAQ,EAAE,UAAU,EAAE,QAAQ;SAC/B,CAAC;QAEF,IAAI,CAAC,MAAM,GAAG,mBAAmB,CAAC,QAAQ,CAAC,IAAI,CAAC,GAAG,EAAE,KAAK,CAAC,MAAM,CAAC,CAAC;IACrE,CAAC;IAEkB,2BAA2B;QAC5C,OAAO,IAAI,CAAC,yBAAyB,IAAI,iCAAe,CAAC,aAAa,CAAC;IACzE,CAAC;IAEkB,oBAAoB,CAAC,KAAe;QACrD,OAAO,IAAI,CAAC,kBAAkB,CAAC;IACjC,CAAC;IAEkB,qBAAqB,CAAC,KAAe;QACtD,IAAI,IAAI,CAAC,6BAA6B,IAAI,IAAI,CAAC,IAAI,CAAC,YAAY,CAAC,QAAQ,CAAC,SAAS,CAAC,QAAQ,CAAC,UAAU;YACrG,OAAO,IAAI,CAAC,6BAA6B,CAAC;QAE5C,OAAO,SAAS,CAAC;IACnB,CAAC;IAEkB,qBAAqB,CAAC,KAAe;QACtD,OAAO,IAAI,CAAC,YAAY,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,YAAY,CAAC,QAAQ,CAAC,SAAS,CAAC,QAAQ,CAAC,UAAU,CAAC,CAAC,CAAC,SAAS,CAAC;IACvG,CAAC;IAED,IAAoB,YAAY;QAC9B,OAAO,IAAI,CAAC;IACd,CAAC;IAED,IAAc,gBAAgB;QAC5B,OAAO,KAAK,CAAC;IACf,CAAC;IAEe,iBAAiB,CAAC,KAA2B;QAC3D,KAAK,CAAC,iBAAiB,CAAC,KAAK,CAAC,CAAC;QAC/B,IAAI,CAAC,gBAAgB,CAAC,iBAAiB,CAAC,KAAK,CAAC,CAAC;IACjD,CAAC;IAEkB,aAAa,CAAC,KAAe;QAC9C,gEAAgE;QAChE,OAAO,IAAI,CAAC,IAAI,CAAC,IAAI,EAAE,IAAI,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC;IACpG,CAAC;IAEe,gBAAgB;QAC9B,OAAO,KAAK,CAAC;IACf,CAAC;IAEe,cAAc,CAAC,OAAqB;QAClD,MAAM,IAAI,GAAG,KAAK,CAAC,cAAc,CAAC,OAAO,CAAC,CAAC;QAC3C,IAAI,IAAI;YACN,IAAI,CAAC,gBAAgB,GAAG,IAAI,CAAC,YAAY,CAAC;QAE5C,OAAO,IAAI,CAAC;IACd,CAAC;IAED,IAAW,SAAS;QAClB,MAAM,KAAK,GAAG,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,IAAI,EAAE,IAAI,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC;QAC7D,MAAM,QAAQ,GAAG,qBAAS,CAAC,SAAS,CAAC,sBAAsB,CAAC,IAAI,CAAC,GAAG,CAAC,OAAO,EAAE,IAAI,CAAC,IAAI,CAAC,YAAY,CAAC,kCAAwB,CAAC,CAAC,EAAE,QAAQ,CAAC;QAC1I,IAAI,CAAC,KAAK,IAAA,sCAAwB,EAAC,KAAK,EAAE,IAAI,CAAC,GAAG,CAAC,MAAM,CAAC,IAAI,QAAQ,EAAE,kBAAkB,EAAE,CAAC;YAC3F,IAAI,CAAC,GAAG,GAAG;gBACT,OAAO,EAAE,IAAI,CAAC,GAAG,CAAC,OAAO;gBACzB,IAAI,EAAE,IAAI,CAAC,GAAG,CAAC,IAAI;gBACnB,MAAM,EAAE,KAAK;gBACb,gBAAgB,EAAE,IAAI,CAAC,GAAG,CAAC,gBAAgB;gBAC3C,QAAQ;aACT,CAAC;YAEF,IAAI,CAAC,MAAM,GAAG,mBAAmB,CAAC,QAAQ,CAAC,IAAI,CAAC,GAAG,EAAE,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC;QAC1E,CAAC;QAED,OAAO,IAAI,CAAC,MAAM,CAAC;IACrB,CAAC;IAES,YAAY,CAAC,IAAe,EAAE,OAAmB;QACzD,IAAI,IAAI,CAAC,YAAY,EAAE,CAAC;YACtB,uEAAuE;YACvE,qDAAqD;YACrD,IAAI,CAAC,kBAAkB,GAAG;gBACxB,GAAG,IAAI,CAAC,IAAI,CAAC,YAAY,CAAC,QAAQ,CAAC,SAAS,CAAC,QAAQ,CAAC,SAAS;gBAC/D,iEAAiE;gBACjE,UAAU,EAAE,KAAK;gBACjB,wDAAwD;gBACxD,uFAAuF;gBACvF,mBAAmB,EAAE,IAAI;aAC1B,CAAC;QACJ,CAAC;QAED,MAAM,WAAW,GAAG,qBAAS,CAAC,SAAS,CAAC,sBAAsB,CAAC,OAAO,EAAE,IAAI,CAAC,YAAY,CAAC,kCAAwB,CAAC,CAAC,EAAE,WAAW,CAAC;QAClI,MAAM,UAAU,GAAG,IAAI,CAAC,kBAAkB,CAAC,UAAU,IAAI,IAAI,CAAC,SAAS,CAAC,UAAU,CAAC;QACnF,MAAM,YAAY,GAAG,IAAI,CAAC,kBAAkB,CAAC,YAAY,IAAI,IAAI,CAAC,SAAS,CAAC,YAAY,CAAC;QACzF,MAAM,aAAa,GAAG,YAAY,IAAI,wBAAU,CAAC,WAAW,KAAK,UAAU,IAAI,qBAAS,CAAC,SAAS,CAAC,kBAAkB,CAAC;QACtH,MAAM,KAAK,GAAG,aAAa,CAAC,CAAC,CAAC,qBAAS,CAAC,SAAS,CAAC,WAAW,CAAC,CAAC,CAAC,KAAK,CAAC;QACtE,MAAM,UAAU,GAAG,IAAI,CAAC,YAAY,EAAE,UAAU,CAAC;QACjD,MAAM,yBAAyB,GAAG,qBAAS,CAAC,SAAS,CAAC,yBAAyB,CAAC;QAChF,OAAO,EAAE,IAAI,EAAE,uBAAS,CAAC,OAAO,EAAE,KAAK,EAAE,WAAW,EAAE,UAAU,EAAE,yBAAyB,EAAE,CAAC;IAChG,CAAC;IAES,oBAAoB,CAAC,IAAc;QAC3C,OAAO,KAAK,CAAC,gBAAgB,CAAC,IAAI,CAAC,CAAC;IACtC,CAAC;IAEkB,gBAAgB,CAAC,IAAc;QAChD,MAAM,MAAM,GAAG,IAAI,CAAC,oBAAoB,CAAC,IAAI,CAAC,CAAC;QAC/C,MAAM,SAAS,GAAG,IAAI,CAAC,IAAI,CAAC,6BAA6B,EAAE,wBAAwB,CAAC,IAAI,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC;QACnG,IAAI,CAAC,SAAS;YACZ,OAAO,MAAM,CAAC;QAEhB,OAAO,SAAS,CAAC,WAAW,CAAC,CAAC,CAAC,SAAS,CAAC,SAAS,CAAC,0BAA0B,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,0BAA0B,CAAC,SAAS,CAAC,SAAS,CAAC,CAAC;IACjJ,CAAC;IAEe,UAAU,CAAC,OAAqB;QAC9C,MAAM,IAAI,GAAG,IAAI,CAAC,SAAS,CAAC,IAAI,EAAoB,CAAC;QACrD,IAAI,SAAS,KAAK,IAAI,IAAI,CAAC,IAAI,CAAC,gBAAgB,CAAC,gBAAgB,CAAC,OAAO,CAAC;YACxE,OAAO,CAAK,kBAAkB;QAEhC,KAAK,CAAC,UAAU,CAAC,OAAO,CAAC,CAAC;IAC5B,CAAC;CACF;AAED,MAAa,qBAAsB,SAAQ,oBAAoB;IAC5C,SAAS,CAAS;IAEnC,YAAmB,IAAe,EAAE,KAA0B,EAAE,eAAuB;QACrF,KAAK,CAAC,IAAI,EAAE,KAAK,EAAE,KAAK,EAAE,eAAe,CAAC,CAAC;QAC3C,IAAI,CAAC,SAAS,GAAG,IAAA,8CAAuB,EAAC,KAAK,CAAC,EAAE,EAAE,eAAe,CAAC,CAAC;IACtE,CAAC;IAEkB,oBAAoB,CAAC,IAAc;QACpD,MAAM,EAAE,GAAG,KAAK,CAAC,oBAAoB,CAAC,IAAI,CAAC,CAAC;QAC5C,MAAM,KAAK,GAAG,IAAI,CAAC,IAAI,CAAC,YAAY,CAAC;QACrC,MAAM,MAAM,GAAG,KAAK,CAAC,cAAc,CAAC;QACpC,IAAI,SAAS,KAAK,MAAM,IAAI,SAAS,KAAK,IAAI,CAAC,yBAAyB;YACtE,OAAO,EAAE,CAAC;QAEZ,MAAM,SAAS,GAAG,KAAK,CAAC,QAAQ,CAAC,SAAS,IAAI,MAAM,CAAC,QAAQ,CAAC,GAAG,CAAC;QAClE,MAAM,MAAM,GAAG,MAAM,CAAC,YAAY,CAAC,IAAI,CAAC,GAAG,CAAC,OAAO,EAAE,IAAI,CAAC,yBAAyB,EAAE,SAAS,CAAC,CAAC;QAChG,IAAI,MAAM;YACR,MAAM,CAAC,0BAA0B,CAAC,EAAE,EAAE,EAAE,CAAC,CAAC;QAE5C,OAAO,EAAE,CAAC;IACZ,CAAC;IAEe,cAAc,CAAC,OAAqB;QAClD,MAAM,UAAU,GAAG,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAC,iBAAiB,EAAE,YAAY,CAAC,GAAG,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;QAC/F,IAAI,UAAU,IAAI,UAAU,CAAC,IAAI;YAC/B,OAAO,SAAS,CAAC;QAEnB,MAAM,IAAI,GAAG,KAAK,CAAC,cAAc,CAAC,OAAO,CAAC,CAAC;QAC3C,IAAI,IAAI,EAAE,IAAI,IAAI,SAAS,KAAK,IAAI,CAAC,yBAAyB,EAAE,CAAC;YAC/D,IAAA,qBAAM,EAAC,IAAI,CAAC,IAAI,YAAY,yBAAc,CAAC,CAAC;YAC5C,IAAI,CAAC,aAAa,GAAG,IAAI,CAAC,IAAI,CAAC,qBAAqB,CAAC,IAAI,CAAC,yBAAyB,CAAC,CAAC;QACvF,CAAC;QAED,OAAO,IAAI,CAAC;IACd,CAAC;CACF;AApCD,sDAoCC;AAED,MAAM,2BAA4B,SAAQ,oBAAoB;IAC5D,IAAY,OAAO,KAAK,OAAO,IAAI,CAAC,IAAmB,CAAC,CAAC,CAAC;IACzC,cAAc,GAAG,yBAAS,CAAC,cAAc,EAAE,CAAC;IAE7D,YACE,IAAiB,EACjB,KAA0B,EAC1B,UAAkC,EAClC,cAAkC,EAClC,gBAAqC;QAErC,KAAK,CAAC,IAAI,EAAE,KAAK,EAAE,IAAI,EAAE,SAAS,EAAE,UAAU,EAAE,cAAc,EAAE,gBAAgB,CAAC,CAAC;QAClF,IAAI,CAAC,kBAAkB,CAAC,mBAAmB,GAAG,IAAI,CAAC;IACrD,CAAC;IAED,IAAoB,YAAY;QAC9B,OAAO,KAAK,CAAC;IACf,CAAC;IAED,IAAuB,gBAAgB;QACrC,OAAO,IAAI,CAAC;IACd,CAAC;IAEe,cAAc,CAAC,OAAqB;QAClD,MAAM,IAAI,GAAG,KAAK,CAAC,cAAc,CAAC,OAAO,CAAC,CAAC;QAC3C,IAAI,SAAS,KAAK,IAAI,IAAI,IAAI,CAAC,GAAG,CAAC,MAAM,CAAC,sBAAsB,EAAE,CAAC;YACjE,IAAI,CAAC,YAAY,GAAG,GAAG,EAAE;gBACvB,MAAM,QAAQ,GAAG,IAAI,CAAC,eAAe,EAAE,CAAC;gBACxC,IAAI,SAAS,KAAK,QAAQ,EAAE,CAAC;oBAC3B,MAAM,QAAQ,GAAG,IAAI,CAAC,WAAW,EAAE,CAAC;oBACpC,MAAM,SAAS,GAAG,SAAS,KAAK,QAAQ,IAAI,QAAQ,CAAC,OAAO,CAAC;oBAC7D,MAAM,YAAY,GAAG,QAAQ,EAAE,YAAY,IAAI,CAAC,CAAC;oBAEjD,IAAI,SAAS,GAAG,QAAQ,EAAE,SAAS,CAAC;oBACpC,IAAI,SAAS,KAAK,SAAS,EAAE,CAAC;wBAC5B,MAAM,IAAI,GAAG,IAAI,CAAC,SAAS,CAAC,QAAQ,CAAC;wBACrC,IAAI,IAAI,EAAE,CAAC;4BACT,IAAA,qBAAM,EAAC,IAAI,YAAY,sBAAsB,CAAC,CAAC;4BAC/C,SAAS,GAAG,IAAI,CAAC,aAAa,CAAC;wBACjC,CAAC;6BAAM,CAAC;4BACN,SAAS,GAAG,CAAC,CAAC;wBAChB,CAAC;oBACH,CAAC;oBAED,OAAO,CAAC,aAAa,CAAC,OAAO,CAAC,MAAM,CAAC,YAAY,CAAC,2BAA2B,CAAC,QAAQ,EAAE,SAAS,EAAE,YAAY,EAAE,SAAS,CAAC,CAAC,CAAC;gBAC/H,CAAC;YACH,CAAC,CAAC;QACJ,CAAC;QAED,OAAO,IAAI,CAAC;IACd,CAAC;IAEkB,oBAAoB,CAAC,IAAc;QACpD,IAAA,qBAAM,EAAC,IAAI,YAAY,sBAAsB,CAAC,CAAC;QAC/C,MAAM,SAAS,GAAG,IAAI,CAAC,eAAe,CAAC,KAAK,CAAC,IAAI,CAAC,cAAc,CAAC,CAAC;QAElE,MAAM,SAAS,GAAG,IAAI,CAAC,WAAW,EAAE,EAAE,SAAS,CAAC;QAChD,IAAI,SAAS,KAAK,SAAS;YACzB,SAAS,CAAC,MAAM,CAAC,CAAC,GAAG,SAAS,CAAC;QAEjC,OAAO,SAAS,CAAC;IACnB,CAAC;IAEe,IAAI,CAAC,IAAkB;QACrC,MAAM,QAAQ,GAAG,IAAI,CAAC,WAAW,EAAE,CAAC;QACpC,IAAI,SAAS,KAAK,QAAQ,IAAI,QAAQ,CAAC,sBAAsB,IAAI,CAAC,QAAQ,CAAC,OAAO;YAChF,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;;YAEjB,IAAI,CAAC,OAAO,CAAC,eAAe,CAAC,0BAAe,CAAC,OAAO,EAAE,GAAG,EAAE,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC;IACtF,CAAC;IAEO,WAAW;QACjB,OAAO,IAAI,CAAC,OAAO,CAAC,iBAAiB,EAAE,CAAC,QAAQ,CAAC,yBAAyB,CAAC,IAAI,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC;IAC5F,CAAC;IAEkB,YAAY,CAAC,IAAe,EAAE,OAAmB;QAClE,MAAM,EAAE,GAAG,KAAK,CAAC,YAAY,CAAC,IAAI,EAAE,OAAO,CAAC,CAAC;QAC7C,MAAM,QAAQ,GAAG,IAAI,CAAC,WAAW,EAAE,CAAC;QACpC,IAAI,SAAS,KAAK,QAAQ,IAAI,QAAQ,CAAC,sBAAsB;YAC3D,EAAE,CAAC,sBAAsB,GAAG,IAAI,CAAC;QAEnC,OAAO,EAAE,CAAC;IACZ,CAAC;CACF;AAED,SAAS,gBAAgB,CAAC,IAAe,EAAE,KAA0B;IACnE,MAAM,OAAO,GAAG,IAAI,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC,KAAK,CAAC,kBAAkB,CAAC,CAAC,CAAC,SAAS,CAAC;IACnE,OAAO,SAAS,KAAK,OAAO,IAAI,OAAO,CAAC,gBAAgB,CAAC;AAC3D,CAAC;AAED,SAAS,aAAa,CACpB,IAAe,EACf,KAA0B,EAC1B,UAA6C,EAC7C,cAAkC,EAClC,gBAAqC;IAErC,IAAI,KAAK,KAAK,qBAAS,CAAC,YAAY,CAAC,OAAO,CAAC,eAAe,IAAI,gBAAgB,CAAC,IAAI,EAAE,KAAK,CAAC;QAC3F,OAAO,IAAI,2BAA2B,CAAC,IAAmB,EAAE,KAAK,EAAE,UAAU,EAAE,cAAc,EAAE,gBAAgB,CAAC,CAAC;IAEnH,OAAO,IAAI,oBAAoB,CAAC,IAAI,EAAE,KAAK,EAAE,KAAK,EAAE,SAAS,EAAE,UAAU,EAAE,cAAc,EAAE,gBAAgB,CAAC,CAAC;AAC/G,CAAC;AAED,SAAgB,8BAA8B,CAC5C,IAAe,EACf,KAA0B,EAC1B,iBAA2C,EAC3C,mBAA8C;IAE9C,MAAM,cAAc,GAAG,iBAAiB,EAAE,EAAE,CAAC;IAC7C,MAAM,gBAAgB,GAAG,mBAAmB,EAAE,EAAE,CAAC;IAEjD,OAAO,aAAa,CAAC,IAAI,EAAE,KAAK,EAAE,SAAS,EAAE,cAAc,EAAE,gBAAgB,CAAC,CAAC;AACjF,CAAC;AAED,MAAM,iBAAkB,SAAQ,4BAAiB;IACrC,GAAG,CAAgB;IACrB,MAAM,CAAgB;IACd,KAAK,CAAsB;IAC3C,IAAoB,YAAY,KAAK,OAAO,KAAK,CAAC,CAAC,CAAC;IACpD,YAAmB,IAAe,EAAE,KAA0B;QAC5D,KAAK,EAAE,CAAC;QACR,IAAI,CAAC,KAAK,GAAG,KAAK,CAAC;QACnB,IAAI,CAAC,GAAG,GAAG;YACT,OAAO,EAAE,KAAK,CAAC,EAAE;YACjB,IAAI,EAAE,KAAK,CAAC,IAAI;YAChB,MAAM,EAAE,IAAI,CAAC,YAAY,EAAE;YAC3B,gBAAgB,EAAE,gBAAgB,CAAC,IAAI,EAAE,KAAK,CAAC;SAChD,CAAC;QAEF,IAAI,CAAC,MAAM,GAAG,mBAAmB,CAAC,QAAQ,CAAC,IAAI,CAAC,GAAG,EAAE,KAAK,CAAC,MAAM,CAAC,CAAC;IACrE,CAAC;IAED,IAAW,SAAS;QAClB,MAAM,KAAK,GAAG,IAAI,CAAC,YAAY,EAAE,CAAC;QAClC,IAAI,CAAC,KAAK,IAAA,sCAAwB,EAAC,KAAK,EAAE,IAAI,CAAC,GAAG,CAAC,MAAM,CAAC,EAAE,CAAC;YAC3D,IAAI,CAAC,GAAG,GAAG,EAAE,OAAO,EAAE,IAAI,CAAC,GAAG,CAAC,OAAO,EAAE,IAAI,EAAE,IAAI,CAAC,GAAG,CAAC,IAAI,EAAE,MAAM,EAAE,KAAK,EAAE,gBAAgB,EAAE,KAAK,EAAE,CAAC;YACtG,IAAI,CAAC,MAAM,GAAG,mBAAmB,CAAC,QAAQ,CAAC,IAAI,CAAC,GAAG,EAAE,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC;QAC1E,CAAC;QAED,OAAO,IAAI,CAAC,MAAM,CAAC;IACrB,CAAC;IACS,YAAY;QACpB,OAAO,EAAE,IAAI,EAAE,uBAAS,CAAC,OAAO,EAAE,KAAK,EAAE,KAAK,EAAE,yBAAyB,EAAE,qBAAS,CAAC,SAAS,CAAC,yBAAyB,EAAE,CAAC;IAC7H,CAAC;CACF;AAED,SAAgB,uBAAuB,CAAC,IAAe,EAAE,KAA0B;IACjF,OAAO,IAAI,iBAAiB,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC;AAC5C,CAAC;AAED,MAAa,8BAA+B,SAAQ,oCAAyB;IAKf;IAAsF;IAJ1I,GAAG,CAAgB;IACnB,MAAM,CAAgB;IAC9B,IAAW,QAAQ,KAAK,OAAO,IAAI,CAAC,CAAC,CAAC;IACtC,IAAW,gBAAgB,KAAK,OAAO,IAAI,CAAC,WAAW,CAAC,CAAC,CAAC;IAC1D,YAAmB,aAA+B,EAAU,WAA8B,EAAE,UAAkB,EAAE,MAAwB,EAAU,OAA2B;QAC3K,KAAK,CAAC,aAAa,EAAE,UAAU,EAAE,MAAM,CAAC,CAAC;QADiB,gBAAW,GAAX,WAAW,CAAmB;QAAwD,YAAO,GAAP,OAAO,CAAoB;QAE3K,IAAI,CAAC,GAAG,GAAG;YACT,OAAO,EAAE,WAAW,CAAC,OAAO;YAC5B,IAAI,EAAE,IAAI,EAAE,cAAc;YAC1B,MAAM,EAAE,IAAI,CAAC,YAAY,EAAE;YAC3B,gBAAgB,EAAE,KAAK,EAAE,iCAAiC;SAC3D,CAAC;QAEF,IAAI,CAAC,MAAM,GAAG,mBAAmB,CAAC,QAAQ,CAAC,IAAI,CAAC,GAAG,EAAE,IAAI,CAAC,MAAM,CAAC,CAAC;IACpE,CAAC;IAES,YAAY;QACpB,OAAO,EAAE,IAAI,EAAE,uBAAS,CAAC,OAAO,EAAE,KAAK,EAAE,KAAK,EAAE,yBAAyB,EAAE,qBAAS,CAAC,SAAS,CAAC,yBAAyB,EAAE,CAAC;IAC7H,CAAC;IAED,IAAW,SAAS;QAClB,MAAM,KAAK,GAAG,IAAI,CAAC,YAAY,EAAE,CAAC;QAClC,IAAI,CAAC,KAAK,IAAA,sCAAwB,EAAC,KAAK,EAAE,IAAI,CAAC,GAAG,CAAC,MAAM,CAAC,EAAE,CAAC;YAC3D,IAAI,CAAC,GAAG,GAAG,EAAE,OAAO,EAAE,IAAI,CAAC,GAAG,CAAC,OAAO,EAAE,IAAI,EAAE,IAAI,CAAC,GAAG,CAAC,IAAI,EAAE,MAAM,EAAE,KAAK,EAAE,gBAAgB,EAAE,KAAK,EAAE,CAAC;YACtG,IAAI,CAAC,MAAM,GAAG,mBAAmB,CAAC,QAAQ,CAAC,IAAI,CAAC,GAAG,EAAE,IAAI,CAAC,MAAM,CAAC,CAAC;QACpE,CAAC;QAED,OAAO,IAAI,CAAC,MAAM,CAAC;IACrB,CAAC;IACD,IAAW,SAAS;QAClB,OAAO;YACL,UAAU,EAAE,wBAAU,CAAC,WAAW;YAClC,YAAY,EAAE,IAAI,EAAO,8DAA8D;YACvF,QAAQ,EAAE,IAAI;YACd,QAAQ,EAAE,KAAK;YACf,OAAO,EAAE,KAAK;YACd,UAAU,EAAE,KAAK;YACjB,SAAS,EAAE,KAAK;YAChB,gBAAgB,EAAE,KAAK;YACvB,YAAY,EAAE,IAAI;YAClB,WAAW,EAAE,KAAK;YAClB,IAAI,EAAE,IAAI;SACX,CAAC;IACJ,CAAC;CACF;AA7CD,wEA6CC;AACD,SAAgB,oCAAoC,CAAC,aAAoC,EAAE,UAAkB,EAAE,MAAwB;IACrI,MAAM,UAAU,GAAG,+BAAiB,CAAC,iBAAiB,CAAC,aAAa,CAAC,CAAC;IACtE,OAAO,UAAU,CAAC,CAAC,CAAC,IAAI,8BAA8B,CAAC,aAAa,EAAE,UAAU,EAAE,UAAU,EAAE,MAAM,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC;AACpH,CAAC;AAsBD;;;GAGG;AACH,SAAgB,+BAA+B,CAAC,IAAsB,EAAE,cAAgC;IACtG,OAAO,IAAI,WAAW,CAAC,IAAI,EAAE,cAAc,CAAC,CAAC;AAC/C,CAAC;AAED;;GAEG;AACH,IAAiB,yBAAyB,CAKzC;AALD,WAAiB,yBAAyB;IACxC,+FAA+F;IAC/F,SAAgB,MAAM,CAAC,IAAsB;QAC3C,OAAO,+BAA+B,CAAC,IAAI,CAAC,CAAC;IAC/C,CAAC;IAFe,gCAAM,SAErB,CAAA;AACH,CAAC,EALgB,yBAAyB,yCAAzB,yBAAyB,QAKzC;AAED,0GAA0G;AAC1G,MAAM,gBAAgB;IACpB,sEAAsE;IACrD,SAAS,CAAoB;IAC9C,uFAAuF;IACtE,aAAa,GAA2B,EAAE,CAAC;IAC5D,oFAAoF;IAC5E,cAAc,CAAwB;IAC9C,oHAAoH;IACnG,aAAa,CAAU;IACxC,mGAAmG;IAClF,WAAW,CAAU;IAEtC,YAAmB,KAA4B,EAAE,IAAsB,EAAE,QAAiB;QACxF,IAAI,CAAC,SAAS,GAAG,KAAK,CAAC,uBAAuB,CAAC,IAAI,CAAC,CAAC;QACrD,IAAI,CAAC,aAAa,GAAG,IAAI,CAAC,SAAS,YAAY,oBAAoB,CAAC;QACpE,IAAI,CAAC,WAAW,GAAG,QAAQ,CAAC;IAC9B,CAAC;IAEM,CAAC,CAAC,MAAM,CAAC,QAAQ,CAAC;QACvB,IAAI,CAAC,CAAC,IAAI,CAAC,WAAW,IAAI,CAAC,IAAI,CAAC,WAAW,CAAC,WAAW,CAAC,IAAI,CAAC,IAAI,CAAC,WAAW;YAC3E,MAAM,IAAI,CAAC,SAAS,CAAC;QAEvB,KAAK,MAAM,QAAQ,IAAI,IAAI,CAAC,aAAa;YACvC,IAAI,CAAC,QAAQ,CAAC,WAAW;gBACvB,MAAM,QAAQ,CAAC;QAEnB,IAAI,IAAI,CAAC,cAAc,IAAI,CAAC,IAAI,CAAC,cAAc,CAAC,WAAW;YACzD,MAAM,IAAI,CAAC,cAAc,CAAC;IAC9B,CAAC;IAEM,cAAc,CAAC,MAAmD;QACvE,MAAM,GAAG,GAAG,IAAI,CAAC,WAAW,CAAC;QAC7B,IAAI,CAAC,GAAG,IAAI,IAAI,CAAC,WAAW;YAC1B,OAAO;QAET,IAAI,CAAC,aAAa,CAAC,MAAM,GAAG,CAAC,CAAC;QAC9B,MAAM,OAAO,GAAG,MAAM,EAAE,MAAM,CAAC,oBAAoB,CAAC,GAAG,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC;QAClE,IAAI,OAAO;YACT,KAAK,MAAM,MAAM,IAAI,OAAO;gBAC1B,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,IAAI,qBAAqB,CAAC,GAAG,CAAC,IAAI,EAAE,GAAG,CAAC,KAAK,EAAE,MAAM,CAAC,CAAC,CAAC;IACtF,CAAC;IAEM,gBAAgB,CAAC,IAAuC;QAC7D,MAAM,GAAG,GAAG,IAAI,CAAC,WAAW,CAAC;QAC7B,IAAI,CAAC,GAAG,EAAE,CAAC;YACT,IAAA,qBAAM,EAAC,SAAS,KAAK,IAAI,CAAC,cAAc,CAAC,CAAC;YAC1C,OAAO;QACT,CAAC;QAED,iFAAiF;QACjF,MAAM,MAAM,GAAG,IAAI,CAAC,CAAC,CAAC,GAAG,CAAC,KAAK,CAAC,cAAc,CAAC,iBAAiB,CAAC,CAAC,CAAC,SAAS,CAAC;QAC7E,MAAM,MAAM,GAAG,MAAM,CAAC,CAAC,CAAC,EAAE,GAAG,MAAM,EAAE,CAAC,CAAC,CAAC,SAAS,CAAC;QAClD,IAAI,MAAM,IAAI,CAAC,MAAM,CAAC,UAAU;YAC9B,IAAI,GAAG,SAAS,CAAC;QAEnB,IAAI,CAAC,cAAc,GAAG,IAAI,CAAC,CAAC,CAAC,aAAa,CAAC,GAAG,CAAC,IAAI,EAAE,GAAG,CAAC,KAAK,EAAE,IAAI,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC;IACpF,CAAC;IAEM,cAAc,CAAC,WAAgC,EAAE,KAA4D;QAClH,IAAI,OAAO,KAAK,KAAK,QAAQ,EAAE,CAAC;YAC9B,KAAK,MAAM,KAAK,IAAI,KAAK;gBACvB,IAAI,IAAI,CAAC,aAAa,CAAC,KAAK,CAAC;oBAC3B,IAAI,CAAC,aAAa,CAAC,KAAK,CAAC,CAAC,WAAW,GAAG,WAAW,IAAI,CAAC,IAAI,CAAC,aAAa,CAAC,KAAK,CAAC,CAAC,WAAW,CAAC;YAElG,OAAO;QACT,CAAC;QAED,IAAI,CAAC,KAAK,KAAK,KAAK,IAAI,SAAS,KAAK,KAAK,CAAC,IAAI,IAAI,CAAC,WAAW;YAC9D,IAAI,CAAC,WAAW,CAAC,WAAW,GAAG,WAAW,IAAI,CAAC,IAAI,CAAC,WAAW,CAAC,WAAW,CAAC;QAE9E,IAAI,CAAC,KAAK,KAAK,KAAK,IAAI,SAAS,KAAK,KAAK,CAAC,IAAI,IAAI,CAAC,cAAc;YACjE,IAAI,CAAC,cAAc,CAAC,WAAW,GAAG,WAAW,IAAI,CAAC,IAAI,CAAC,cAAc,CAAC,WAAW,CAAC;QAEpF,IAAI,CAAC,KAAK,KAAK,KAAK,IAAI,UAAU,KAAK,KAAK,CAAC;YAC3C,KAAK,MAAM,GAAG,IAAI,IAAI,CAAC,aAAa;gBAClC,GAAG,CAAC,WAAW,GAAG,WAAW,IAAI,CAAC,GAAG,CAAC,WAAW,CAAC;IACxD,CAAC;IAED,IAAY,WAAW;QACrB,IAAI,CAAC,IAAI,CAAC,aAAa;YACrB,OAAO,SAAS,CAAC;QAEnB,IAAA,qBAAM,EAAC,IAAI,CAAC,SAAS,YAAY,oBAAoB,CAAC,CAAC;QACvD,OAAO,IAAI,CAAC,SAAS,CAAC;IACxB,CAAC;CACF;AAED,wHAAwH;AACxH,MAAM,WAAW;IACP,UAAU,GAAG,KAAK,CAAC;IACV,KAAK,CAAmB;IACxB,eAAe,CAAmB;IAC3C,KAAK,GAAG,IAAI,GAAG,EAAgC,CAAC;IAChD,SAAS,GAAG,IAAI,GAAG,EAAgC,CAAC;IACpD,mBAAmB,GAAG,IAAI,GAAG,EAAgC,CAAC;IAC9D,uBAAuB,GAAG,IAAI,GAAG,EAAgC,CAAC;IAClE,eAAe,CAAkC;IACjD,WAAW,CAAyB;IAE5C,YAAmB,IAAsB,EAAE,cAA2C;QACpF,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC;QAClB,IAAI,CAAC,eAAe,GAAG,IAAI,CAAC,YAAY,CAAC,kCAAwB,CAAC,CAAC;QACnE,IAAI,CAAC,WAAW,GAAG,IAAI,CAAC,qBAAqB,EAAE,CAAC;QAChD,IAAI,cAAc;YAChB,IAAI,CAAC,eAAe,GAAG,IAAI,GAAG,CAAC,cAAc,CAAC,CAAC;IACnD,CAAC;IAEM,MAAM;QACX,IAAI,CAAC,UAAU,GAAG,KAAK,CAAC;IAC1B,CAAC;IAEM,gBAAgB,KAAK,CAAC;IACtB,kBAAkB,KAAK,CAAC;IAExB,CAAC,CAAC,MAAM,CAAC,QAAQ,CAAC;QACvB,IAAI,CAAC,IAAI,EAAE,CAAC;QACZ,KAAK,MAAM,QAAQ,IAAI,IAAI,CAAC,KAAK,CAAC,MAAM,EAAE;YACxC,KAAK,MAAM,GAAG,IAAI,QAAQ;gBACxB,MAAM,GAAG,CAAC;QACd,IAAI,IAAI,CAAC,WAAW,EAAE,CAAC;YACrB,KAAK,MAAM,QAAQ,IAAI,IAAI,CAAC,mBAAmB,CAAC,MAAM,EAAE;gBACtD,KAAK,MAAM,GAAG,IAAI,QAAQ;oBACxB,MAAM,GAAG,CAAC;QAChB,CAAC;IACH,CAAC;IAEM,cAAc,CAAC,QAA+C,EAAE,WAAoB,EAAE,IAA2D;QACtJ,IAAI,SAAS,KAAK,QAAQ,EAAE,CAAC;YAC3B,KAAK,MAAM,KAAK,IAAI,IAAI,CAAC,KAAK,CAAC,MAAM,EAAE;gBACrC,KAAK,CAAC,cAAc,CAAC,WAAW,EAAE,IAAI,CAAC,CAAC;YAE1C,OAAO;QACT,CAAC;QAED,IAAI,OAAO,QAAQ,KAAK,QAAQ;YAC9B,QAAQ,GAAG,CAAC,QAAQ,CAAC,CAAC;QAExB,KAAK,MAAM,OAAO,IAAI,QAAQ;YAC5B,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,OAAO,CAAC,EAAE,cAAc,CAAC,WAAW,EAAE,IAAI,CAAC,CAAC;IAC/D,CAAC;IAED;;;;OAIG;IACI,eAAe,CAAC,QAA6B,EAAE,YAAiC,EAAE,SAAkB;QACzG,KAAK,MAAM,OAAO,IAAI,QAAQ,EAAE,CAAC;YAC/B,IAAI,CAAC,IAAI,CAAC,eAAe,EAAE,GAAG,CAAC,OAAO,CAAC,EAAE,CAAC;gBACxC,MAAM,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,MAAM,CAAC,SAAS,CAAC,OAAO,CAAC,CAAC;gBAC1D,IAAA,qBAAM,EAAC,KAAK,KAAK,SAAS,CAAC,CAAC,CAAG,kDAAkD;gBACjF,IAAI,KAAK,EAAE,gBAAgB,EAAE,CAAC;oBAC5B,MAAM,OAAO,GAAG,uBAAuB,CAAC,IAAI,CAAC,KAAK,EAAE,KAAK,CAAC,gBAAgB,CAAC,CAAC;oBAC5E,YAAY,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;oBAC3B,MAAM,KAAK,GAAG,OAAO,CAAC,wBAAwB,EAAE,CAAC;oBACjD,SAAS,CAAC,WAAW,CAAC,KAAK,CAAC,CAAC;gBAC/B,CAAC;YACH,CAAC;QACH,CAAC;IACH,CAAC;IAED;;OAEG;IACI,kBAAkB,CAAC,WAA4C,EAAE,WAAoB,IAA8B,OAAO,SAAS,CAAC,CAAC,CAAC;IAErI,IAAI;QACV,IAAI,CAAC,IAAI,CAAC,UAAU,EAAE,CAAC;YACrB,IAAI,CAAC,UAAU,GAAG,IAAI,CAAC;YACvB,IAAI,CAAC,YAAY,EAAE,CAAC;QACtB,CAAC;QAED,MAAM,SAAS,GAAG,IAAI,CAAC,KAAK,CAAC,YAAY,CAAC,kCAAwB,CAAC,CAAC;QACpE,MAAM,UAAU,GAAG,IAAI,CAAC,eAAe,CAAC;QACxC,IAAI,SAAS,KAAK,UAAU,EAAE,CAAC;YAC7B,IAAI,CAAC,eAAe,GAAG,SAAS,CAAC;YACjC,IAAI,CAAC,SAAS,IAAI,CAAC,UAAU,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,MAAM,CAAC,UAAU,CAAC,MAAM,CAAC;gBAC1E,KAAK,MAAM,GAAG,IAAI,IAAI,CAAC,KAAK,CAAC,MAAM,EAAE;oBACnC,GAAG,CAAC,cAAc,CAAC,SAAS,CAAC,CAAC;QACpC,CAAC;QAED,MAAM,UAAU,GAAG,IAAI,CAAC,qBAAqB,EAAE,CAAC;QAChD,IAAI,UAAU,EAAE,UAAU,KAAK,IAAI,CAAC,WAAW,EAAE,UAAU,EAAE,CAAC;YAC5D,IAAI,CAAC,WAAW,GAAG,UAAU,CAAC;YAC9B,KAAK,MAAM,GAAG,IAAI,IAAI,CAAC,KAAK,CAAC,MAAM,EAAE;gBACnC,GAAG,CAAC,gBAAgB,CAAC,UAAU,CAAC,CAAC;YACnC,KAAK,MAAM,GAAG,IAAI,IAAI,CAAC,mBAAmB,CAAC,MAAM,EAAE;gBACjD,GAAG,CAAC,gBAAgB,CAAC,UAAU,CAAC,CAAC;QACrC,CAAC;IACH,CAAC;IAEO,qBAAqB;QAC3B,MAAM,OAAO,GAAG,IAAI,CAAC,KAAK,CAAC,SAAS,CAAC,UAAU,IAAI,IAAI,CAAC,KAAK,CAAC,YAAY,CAAC,QAAQ,CAAC,SAAS,CAAC,kBAAkB,CAAC;QACjH,MAAM,IAAI,GAAG,OAAO,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,WAAW,EAAE,CAAC,CAAC,CAAC,SAAS,CAAC;QAC5D,OAAO,qCAAqB,CAAC,cAAc,CAAC,IAAI,CAAC,CAAC;IACpD,CAAC;IAED,iGAAiG;IACzF,YAAY;QAClB,IAAI,IAAI,GAAG,IAAI,CAAC,KAAK,CAAC;QACtB,IAAI,GAAG,GAAG,IAAI,CAAC,SAAS,CAAC;QACzB,IAAI,CAAC,KAAK,GAAG,GAAG,CAAC;QACjB,IAAI,CAAC,SAAS,GAAG,IAAI,CAAC;QACtB,GAAG,CAAC,KAAK,EAAE,CAAC;QACZ,IAAI,GAAG,IAAI,CAAC,mBAAmB,CAAC;QAChC,GAAG,GAAG,IAAI,CAAC,uBAAuB,CAAC;QACnC,IAAI,CAAC,mBAAmB,GAAG,GAAG,CAAC;QAC/B,IAAI,CAAC,uBAAuB,GAAG,IAAI,CAAC;QACpC,GAAG,CAAC,KAAK,EAAE,CAAC;QAEZ,KAAK,MAAM,OAAO,IAAI,IAAI,CAAC,KAAK,CAAC,aAAa,CAAC,MAAM,EAAE,CAAC;YACtD,IAAI,QAAQ,GAAG,KAAK,CAAC;YACrB,IAAI,SAAS,KAAK,IAAI,CAAC,eAAe,IAAI,IAAI,CAAC,eAAe,CAAC,GAAG,CAAC,OAAO,CAAC,EAAE,CAAC;gBAC5E,QAAQ,GAAG,IAAI,CAAC;gBAChB,GAAG,GAAG,IAAI,CAAC,mBAAmB,CAAC;gBAC/B,IAAI,GAAG,IAAI,CAAC,uBAAuB,CAAC;YACtC,CAAC;iBAAM,CAAC;gBACN,GAAG,GAAG,IAAI,CAAC,KAAK,CAAC;gBACjB,IAAI,GAAG,IAAI,CAAC,SAAS,CAAC;YACxB,CAAC;YAED,IAAI,SAAS,GAAG,IAAI,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC;YAClC,IAAI,CAAC,SAAS,EAAE,CAAC;gBACf,MAAM,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,MAAM,CAAC,SAAS,CAAC,OAAO,CAAC,EAAE,kBAAkB,CAAC;gBAC9E,IAAI,KAAK,EAAE,CAAC;oBACV,SAAS,GAAG,IAAI,gBAAgB,CAAC,KAAK,EAAE,IAAI,CAAC,KAAK,EAAE,QAAQ,CAAC,CAAC;oBAC9D,SAAS,CAAC,cAAc,CAAC,IAAI,CAAC,eAAe,CAAC,CAAC;oBAC/C,SAAS,CAAC,gBAAgB,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC;gBAC/C,CAAC;YACH,CAAC;YAED,IAAI,SAAS;gBACX,GAAG,CAAC,GAAG,CAAC,OAAO,EAAE,SAAS,CAAC,CAAC;QAChC,CAAC;IACH,CAAC;CACF","sourcesContent":["/*---------------------------------------------------------------------------------------------\r\n* Copyright (c) Bentley Systems, Incorporated. All rights reserved.\r\n* See LICENSE.md in the project root for license terms and full copyright notice.\r\n*--------------------------------------------------------------------------------------------*/\r\n/** @packageDocumentation\r\n * @module Tiles\r\n */\r\n\r\nimport {\r\n assert, comparePossiblyUndefined, compareStrings, Id64String,\r\n OrderedId64Iterable,\r\n} from \"@itwin/core-bentley\";\r\nimport {\r\n BaseLayerSettings,\r\n BatchType, compareIModelTileTreeIds, FeatureAppearance, FeatureAppearanceProvider, HiddenLine, iModelTileTreeIdToString, MapLayerSettings, ModelMapLayerDrapeTarget, ModelMapLayerSettings,\r\n PrimaryTileTreeId, RenderMode, RenderSchedule, SpatialClassifier, ViewFlagOverrides, ViewFlagsProperties,\r\n} from \"@itwin/core-common\";\r\nimport { Range3d, StringifiedClipVector, Transform } from \"@itwin/core-geometry\";\r\nimport { DisplayStyleState } from \"../../DisplayStyleState\";\r\nimport { IModelApp } from \"../../IModelApp\";\r\nimport { IModelConnection } from \"../../IModelConnection\";\r\nimport { GeometricModel3dState, GeometricModelState } from \"../../ModelState\";\r\nimport { formatAnimationBranchId } from \"../../internal/render/AnimationBranchState\";\r\nimport { AnimationNodeId } from \"../../common/internal/render/AnimationNodeId\";\r\nimport { RenderClipVolume } from \"../../render/RenderClipVolume\";\r\nimport { SpatialViewState } from \"../../SpatialViewState\";\r\nimport { SceneContext } from \"../../ViewContext\";\r\nimport { AttachToViewportArgs, ViewState, ViewState3d } from \"../../ViewState\";\r\nimport {\r\n DisclosedTileTreeSet,\r\n IModelTileTree, IModelTileTreeParams, iModelTileTreeParamsFromJSON, LayerTileTreeReferenceHandler, MapLayerTileTreeReference, TileDrawArgs, TileGraphicType, TileTree, TileTreeOwner, TileTreeReference,\r\n TileTreeSupplier,\r\n} from \"../../tile/internal\";\r\nimport { _scheduleScriptReference } from \"../../common/internal/Symbols\";\r\n\r\ninterface PrimaryTreeId {\r\n treeId: PrimaryTileTreeId;\r\n modelId: Id64String;\r\n is3d: boolean;\r\n isPlanProjection: boolean;\r\n timeline?: RenderSchedule.ModelTimeline;\r\n}\r\n\r\nclass PlanProjectionTileTree extends IModelTileTree {\r\n public readonly baseElevation: number;\r\n\r\n public constructor(params: IModelTileTreeParams, treeId: PrimaryTileTreeId, baseElevation: number) {\r\n super(params, treeId);\r\n this.baseElevation = baseElevation;\r\n }\r\n}\r\n\r\nclass PrimaryTreeSupplier implements TileTreeSupplier {\r\n public constructor() {\r\n }\r\n\r\n public compareTileTreeIds(lhs: PrimaryTreeId, rhs: PrimaryTreeId): number {\r\n // NB: we don't compare isPlanProjection or is3d - they should always have the same value for a given modelId.\r\n return compareStrings(lhs.modelId, rhs.modelId) || compareIModelTileTreeIds(lhs.treeId, rhs.treeId)\r\n || comparePossiblyUndefined((x, y) => x.compareTo(y), lhs.timeline, rhs.timeline);\r\n }\r\n\r\n public async createTileTree(id: PrimaryTreeId, iModel: IModelConnection): Promise<TileTree | undefined> {\r\n const treeId = id.treeId;\r\n const idStr = iModelTileTreeIdToString(id.modelId, treeId, IModelApp.tileAdmin);\r\n const props = await IModelApp.tileAdmin.requestTileTreeProps(iModel, idStr);\r\n\r\n // ###TODO remove restriction that animated tile trees can't contained instanced geometry.\r\n const isAnimated = undefined !== treeId.animationId || undefined !== id.timeline;\r\n const allowInstancing = !isAnimated && !treeId.enforceDisplayPriority && !treeId.sectionCut;\r\n const options = {\r\n edges: treeId.edges,\r\n allowInstancing,\r\n is3d: id.is3d,\r\n batchType: BatchType.Primary,\r\n timeline: id.timeline,\r\n };\r\n\r\n const params = iModelTileTreeParamsFromJSON(props, iModel, id.modelId, options);\r\n if (!id.isPlanProjection)\r\n return new IModelTileTree(params, id.treeId);\r\n\r\n let elevation = 0;\r\n try {\r\n const ranges = await iModel.models.queryExtents(id.modelId);\r\n if (1 === ranges.length) {\r\n const range = Range3d.fromJSON(ranges[0].extents);\r\n const lo = range.low.z;\r\n const hi = range.high.z;\r\n if (lo <= hi)\r\n elevation = (lo + hi) / 2;\r\n }\r\n } catch {\r\n //\r\n }\r\n\r\n return new PlanProjectionTileTree(params, id.treeId, elevation);\r\n }\r\n\r\n public getOwner(id: PrimaryTreeId, iModel: IModelConnection): TileTreeOwner {\r\n return iModel.tiles.getTileTreeOwner(id, this);\r\n }\r\n\r\n public addModelsAnimatedByScript(modelIds: Set<Id64String>, scriptSourceId: Id64String, trees: Iterable<{ id: PrimaryTreeId, owner: TileTreeOwner }>): void {\r\n // Note: This is invoked when an element hosting a schedule script is updated - it doesn't care about frontend schedule scripts.\r\n for (const tree of trees)\r\n if (scriptSourceId === tree.id.treeId.animationId)\r\n modelIds.add(tree.id.modelId);\r\n }\r\n\r\n public addSpatialModels(modelIds: Set<Id64String>, trees: Iterable<{ id: PrimaryTreeId, owner: TileTreeOwner }>): void {\r\n for (const tree of trees)\r\n if (tree.id.is3d)\r\n modelIds.add(tree.id.modelId);\r\n }\r\n}\r\n\r\nconst primaryTreeSupplier = new PrimaryTreeSupplier();\r\n\r\n/** Find all extant tile trees associated with the specified model Ids and dispose of them.\r\n * This is used by BriefcaseConnection when a GraphicalEditingScope is exited or after a change to the models' geometry guids\r\n * is committed, undone, redone, or merged.\r\n */\r\nexport function disposeTileTreesForGeometricModels(modelIds: Set<Id64String>, iModel: IModelConnection): void {\r\n const trees = iModel.tiles.getTreeOwnersForSupplier(primaryTreeSupplier);\r\n for (const kvp of trees) {\r\n const id = kvp.id as PrimaryTreeId;\r\n assert(undefined !== id.modelId);\r\n if (modelIds.has(id.modelId))\r\n kvp.owner[Symbol.dispose]();\r\n }\r\n}\r\n\r\nclass PrimaryTreeReference extends TileTreeReference {\r\n public readonly view: ViewState;\r\n public readonly model: GeometricModelState;\r\n /** Chiefly for debugging - disables iteration of this reference in SpatialModelRefs to e.g. omit the reference from the scene. */\r\n public deactivated = false;\r\n protected _viewFlagOverrides: ViewFlagOverrides;\r\n protected _id: PrimaryTreeId;\r\n private _owner: TileTreeOwner;\r\n private readonly _sectionClip?: StringifiedClipVector;\r\n private readonly _sectionCutAppearanceProvider?: FeatureAppearanceProvider;\r\n protected readonly _animationTransformNodeId?: number;\r\n private _layerRefHandler: LayerTileTreeReferenceHandler;\r\n public readonly iModel: IModelConnection;\r\n\r\n public shouldDrapeLayer(layerTreeRef?: MapLayerTileTreeReference): boolean {\r\n const mapLayerSettings = layerTreeRef?.layerSettings;\r\n if (mapLayerSettings && mapLayerSettings instanceof ModelMapLayerSettings)\r\n return ModelMapLayerDrapeTarget.IModel === mapLayerSettings.drapeTarget;\r\n return false;\r\n }\r\n\r\n public constructor(\r\n view: ViewState,\r\n model: GeometricModelState,\r\n planProjection: boolean,\r\n transformNodeId: number | undefined,\r\n sectionClip?: StringifiedClipVector,\r\n backgroundBase?: BaseLayerSettings,\r\n backgroundLayers?: MapLayerSettings[]\r\n ) {\r\n super();\r\n\r\n this.iModel = model.iModel;\r\n\r\n this._layerRefHandler = new LayerTileTreeReferenceHandler(this, false, backgroundBase, backgroundLayers, false);\r\n this.view = view;\r\n this.model = model;\r\n this._animationTransformNodeId = transformNodeId;\r\n\r\n this._sectionClip = sectionClip;\r\n this._viewFlagOverrides = { ...model.jsonProperties.viewFlagOverrides };\r\n if (sectionClip) {\r\n // Clipping will be applied on backend; don't clip out cut geometry.\r\n this._viewFlagOverrides.clipVolume = false;\r\n this._sectionCutAppearanceProvider = FeatureAppearanceProvider.supplement((app: FeatureAppearance) => {\r\n const cutApp = this.view.displayStyle.settings.clipStyle.cutStyle.appearance;\r\n return cutApp ? app.extendAppearance(cutApp) : app;\r\n });\r\n }\r\n\r\n const scriptInfo = IModelApp.tileAdmin.getScriptInfoForTreeId(model.id, view.displayStyle[_scheduleScriptReference]);\r\n\r\n this._id = {\r\n modelId: model.id,\r\n is3d: model.is3d,\r\n treeId: this.createTreeId(view, model.id),\r\n isPlanProjection: planProjection,\r\n timeline: scriptInfo?.timeline,\r\n };\r\n\r\n this._owner = primaryTreeSupplier.getOwner(this._id, model.iModel);\r\n }\r\n\r\n protected override getAnimationTransformNodeId() {\r\n return this._animationTransformNodeId ?? AnimationNodeId.Untransformed;\r\n }\r\n\r\n protected override getViewFlagOverrides(_tree: TileTree) {\r\n return this._viewFlagOverrides;\r\n }\r\n\r\n protected override getAppearanceProvider(_tree: TileTree): FeatureAppearanceProvider | undefined {\r\n if (this._sectionCutAppearanceProvider && this.view.displayStyle.settings.clipStyle.cutStyle.appearance)\r\n return this._sectionCutAppearanceProvider;\r\n\r\n return undefined;\r\n }\r\n\r\n protected override getHiddenLineSettings(_tree: TileTree): HiddenLine.Settings | undefined {\r\n return this._sectionClip ? this.view.displayStyle.settings.clipStyle.cutStyle.hiddenLine : undefined;\r\n }\r\n\r\n public override get castsShadows() {\r\n return true;\r\n }\r\n\r\n protected get isPlanProjection(): boolean {\r\n return false;\r\n }\r\n\r\n public override discloseTileTrees(trees: DisclosedTileTreeSet): void {\r\n super.discloseTileTrees(trees);\r\n this._layerRefHandler.discloseTileTrees(trees);\r\n }\r\n\r\n protected override getClipVolume(_tree: TileTree): RenderClipVolume | undefined {\r\n // ###TODO: reduce frequency with which getModelClip() is called\r\n return this.view.is3d() && !this._sectionClip ? this.view.getModelClip(this.model.id) : undefined;\r\n }\r\n\r\n public override canSupplyToolTip() {\r\n return false;\r\n }\r\n\r\n public override createDrawArgs(context: SceneContext): TileDrawArgs | undefined {\r\n const args = super.createDrawArgs(context);\r\n if (args)\r\n args.intersectionClip = this._sectionClip;\r\n\r\n return args;\r\n }\r\n\r\n public get treeOwner(): TileTreeOwner {\r\n const newId = this.createTreeId(this.view, this._id.modelId);\r\n const timeline = IModelApp.tileAdmin.getScriptInfoForTreeId(this._id.modelId, this.view.displayStyle[_scheduleScriptReference])?.timeline;\r\n if (0 !== compareIModelTileTreeIds(newId, this._id.treeId) || timeline?.isEditingCommitted) {\r\n this._id = {\r\n modelId: this._id.modelId,\r\n is3d: this._id.is3d,\r\n treeId: newId,\r\n isPlanProjection: this._id.isPlanProjection,\r\n timeline,\r\n };\r\n\r\n this._owner = primaryTreeSupplier.getOwner(this._id, this.model.iModel);\r\n }\r\n\r\n return this._owner;\r\n }\r\n\r\n protected createTreeId(view: ViewState, modelId: Id64String): PrimaryTileTreeId {\r\n if (this._sectionClip) {\r\n // We do this each time in case the ClipStyle's overrides are modified.\r\n // ###TODO: can we avoid that? Event listeners maybe?\r\n this._viewFlagOverrides = {\r\n ...this.view.displayStyle.settings.clipStyle.cutStyle.viewflags,\r\n // Do not clip out the cut geometry intersecting the clip planes.\r\n clipVolume: false,\r\n // The cut geometry is planar - it should win a z-fight.\r\n // Also we need to preserve this flag if this is a plan projection tile tree reference.\r\n forceSurfaceDiscard: true,\r\n };\r\n }\r\n\r\n const animationId = IModelApp.tileAdmin.getScriptInfoForTreeId(modelId, view.displayStyle[_scheduleScriptReference])?.animationId;\r\n const renderMode = this._viewFlagOverrides.renderMode ?? view.viewFlags.renderMode;\r\n const visibleEdges = this._viewFlagOverrides.visibleEdges ?? view.viewFlags.visibleEdges;\r\n const edgesRequired = visibleEdges || RenderMode.SmoothShade !== renderMode || IModelApp.tileAdmin.alwaysRequestEdges;\r\n const edges = edgesRequired ? IModelApp.tileAdmin.edgeOptions : false;\r\n const sectionCut = this._sectionClip?.clipString;\r\n const disablePolyfaceDecimation = IModelApp.tileAdmin.disablePolyfaceDecimation;\r\n return { type: BatchType.Primary, edges, animationId, sectionCut, disablePolyfaceDecimation };\r\n }\r\n\r\n protected computeBaseTransform(tree: TileTree): Transform {\r\n return super.computeTransform(tree);\r\n }\r\n\r\n protected override computeTransform(tree: TileTree): Transform {\r\n const baseTf = this.computeBaseTransform(tree);\r\n const displayTf = this.view.modelDisplayTransformProvider?.getModelDisplayTransform(this.model.id);\r\n if (!displayTf)\r\n return baseTf;\r\n\r\n return displayTf.premultiply ? displayTf.transform.multiplyTransformTransform(baseTf) : baseTf.multiplyTransformTransform(displayTf.transform);\r\n }\r\n\r\n public override addToScene(context: SceneContext): void {\r\n const tree = this.treeOwner.load() as IModelTileTree;\r\n if (undefined === tree || !this._layerRefHandler.initializeLayers(context))\r\n return; // Not loaded yet.\r\n\r\n super.addToScene(context);\r\n }\r\n}\r\n\r\nexport class AnimatedTreeReference extends PrimaryTreeReference {\r\n private readonly _branchId: string;\r\n\r\n public constructor(view: ViewState, model: GeometricModelState, transformNodeId: number) {\r\n super(view, model, false, transformNodeId);\r\n this._branchId = formatAnimationBranchId(model.id, transformNodeId);\r\n }\r\n\r\n protected override computeBaseTransform(tree: TileTree): Transform {\r\n const tf = super.computeBaseTransform(tree);\r\n const style = this.view.displayStyle;\r\n const script = style.scheduleScript;\r\n if (undefined === script || undefined === this._animationTransformNodeId)\r\n return tf;\r\n\r\n const timePoint = style.settings.timePoint ?? script.duration.low;\r\n const animTf = script.getTransform(this._id.modelId, this._animationTransformNodeId, timePoint);\r\n if (animTf)\r\n animTf.multiplyTransformTransform(tf, tf);\r\n\r\n return tf;\r\n }\r\n\r\n public override createDrawArgs(context: SceneContext): TileDrawArgs | undefined {\r\n const animBranch = context.viewport.target.animationBranches?.branchStates.get(this._branchId);\r\n if (animBranch && animBranch.omit)\r\n return undefined;\r\n\r\n const args = super.createDrawArgs(context);\r\n if (args?.tree && undefined !== this._animationTransformNodeId) {\r\n assert(args.tree instanceof IModelTileTree);\r\n args.boundingRange = args.tree.getTransformNodeRange(this._animationTransformNodeId);\r\n }\r\n\r\n return args;\r\n }\r\n}\r\n\r\nclass PlanProjectionTreeReference extends PrimaryTreeReference {\r\n private get _view3d() { return this.view as ViewState3d; }\r\n private readonly _baseTransform = Transform.createIdentity();\r\n\r\n public constructor(\r\n view: ViewState3d,\r\n model: GeometricModelState,\r\n sectionCut?: StringifiedClipVector,\r\n backgroundBase?: BaseLayerSettings,\r\n backgroundLayers?: MapLayerSettings[]\r\n ) {\r\n super(view, model, true, undefined, sectionCut, backgroundBase, backgroundLayers);\r\n this._viewFlagOverrides.forceSurfaceDiscard = true;\r\n }\r\n\r\n public override get castsShadows() {\r\n return false;\r\n }\r\n\r\n protected override get isPlanProjection(): boolean {\r\n return true;\r\n }\r\n\r\n public override createDrawArgs(context: SceneContext): TileDrawArgs | undefined {\r\n const args = super.createDrawArgs(context);\r\n if (undefined !== args && this._id.treeId.enforceDisplayPriority) {\r\n args.drawGraphics = () => {\r\n const graphics = args.produceGraphics();\r\n if (undefined !== graphics) {\r\n const settings = this.getSettings();\r\n const asOverlay = undefined !== settings && settings.overlay;\r\n const transparency = settings?.transparency || 0;\r\n\r\n let elevation = settings?.elevation;\r\n if (undefined === elevation) {\r\n const tree = this.treeOwner.tileTree;\r\n if (tree) {\r\n assert(tree instanceof PlanProjectionTileTree);\r\n elevation = tree.baseElevation;\r\n } else {\r\n elevation = 0;\r\n }\r\n }\r\n\r\n context.outputGraphic(context.target.renderSystem.createGraphicLayerContainer(graphics, asOverlay, transparency, elevation));\r\n }\r\n };\r\n }\r\n\r\n return args;\r\n }\r\n\r\n protected override computeBaseTransform(tree: TileTree): Transform {\r\n assert(tree instanceof PlanProjectionTileTree);\r\n const transform = tree.iModelTransform.clone(this._baseTransform);\r\n\r\n const elevation = this.getSettings()?.elevation;\r\n if (undefined !== elevation)\r\n transform.origin.z = elevation;\r\n\r\n return transform;\r\n }\r\n\r\n public override draw(args: TileDrawArgs): void {\r\n const settings = this.getSettings();\r\n if (undefined === settings || settings.enforceDisplayPriority || !settings.overlay)\r\n super.draw(args);\r\n else\r\n args.context.withGraphicType(TileGraphicType.Overlay, () => args.tree.draw(args));\r\n }\r\n\r\n private getSettings() {\r\n return this._view3d.getDisplayStyle3d().settings.getPlanProjectionSettings(this.model.id);\r\n }\r\n\r\n protected override createTreeId(view: ViewState, modelId: Id64String): PrimaryTileTreeId {\r\n const id = super.createTreeId(view, modelId);\r\n const settings = this.getSettings();\r\n if (undefined !== settings && settings.enforceDisplayPriority)\r\n id.enforceDisplayPriority = true;\r\n\r\n return id;\r\n }\r\n}\r\n\r\nfunction isPlanProjection(view: ViewState, model: GeometricModelState): boolean {\r\n const model3d = view.is3d() ? model.asGeometricModel3d : undefined;\r\n return undefined !== model3d && model3d.isPlanProjection;\r\n}\r\n\r\nfunction createTreeRef(\r\n view: ViewState,\r\n model: GeometricModelState,\r\n sectionCut: StringifiedClipVector | undefined,\r\n backgroundBase?: BaseLayerSettings,\r\n backgroundLayers?: MapLayerSettings[]\r\n): PrimaryTreeReference {\r\n if (false !== IModelApp.renderSystem.options.planProjections && isPlanProjection(view, model))\r\n return new PlanProjectionTreeReference(view as ViewState3d, model, sectionCut, backgroundBase, backgroundLayers);\r\n\r\n return new PrimaryTreeReference(view, model, false, undefined, sectionCut, backgroundBase, backgroundLayers);\r\n}\r\n\r\nexport function createPrimaryTileTreeReference(\r\n view: ViewState,\r\n model: GeometricModelState,\r\n getBackgroundBase?: () => BaseLayerSettings,\r\n getBackgroundLayers?: () => MapLayerSettings[]\r\n): PrimaryTreeReference {\r\n const backgroundBase = getBackgroundBase?.();\r\n const backgroundLayers = getBackgroundLayers?.();\r\n\r\n return createTreeRef(view, model, undefined, backgroundBase, backgroundLayers);\r\n}\r\n\r\nclass MaskTreeReference extends TileTreeReference {\r\n protected _id: PrimaryTreeId;\r\n private _owner: TileTreeOwner;\r\n public readonly model: GeometricModelState;\r\n public override get castsShadows() { return false; }\r\n public constructor(view: ViewState, model: GeometricModelState) {\r\n super();\r\n this.model = model;\r\n this._id = {\r\n modelId: model.id,\r\n is3d: model.is3d,\r\n treeId: this.createTreeId(),\r\n isPlanProjection: isPlanProjection(view, model),\r\n };\r\n\r\n this._owner = primaryTreeSupplier.getOwner(this._id, model.iModel);\r\n }\r\n\r\n public get treeOwner(): TileTreeOwner {\r\n const newId = this.createTreeId();\r\n if (0 !== compareIModelTileTreeIds(newId, this._id.treeId)) {\r\n this._id = { modelId: this._id.modelId, is3d: this._id.is3d, treeId: newId, isPlanProjection: false };\r\n this._owner = primaryTreeSupplier.getOwner(this._id, this.model.iModel);\r\n }\r\n\r\n return this._owner;\r\n }\r\n protected createTreeId(): PrimaryTileTreeId {\r\n return { type: BatchType.Primary, edges: false, disablePolyfaceDecimation: IModelApp.tileAdmin.disablePolyfaceDecimation };\r\n }\r\n}\r\n\r\nexport function createMaskTreeReference(view: ViewState, model: GeometricModelState): TileTreeReference {\r\n return new MaskTreeReference(view, model);\r\n}\r\n\r\nexport class ModelMapLayerTileTreeReference extends MapLayerTileTreeReference {\r\n private _id: PrimaryTreeId;\r\n private _owner: TileTreeOwner;\r\n public get isPlanar() { return true; }\r\n public get activeClassifier() { return this._classifier; }\r\n public constructor(layerSettings: MapLayerSettings, private _classifier: SpatialClassifier, layerIndex: number, iModel: IModelConnection, private _source?: DisplayStyleState) {\r\n super(layerSettings, layerIndex, iModel);\r\n this._id = {\r\n modelId: _classifier.modelId,\r\n is3d: true, // model.is3d,\r\n treeId: this.createTreeId(),\r\n isPlanProjection: false, // isPlanProjection(view, model),\r\n };\r\n\r\n this._owner = primaryTreeSupplier.getOwner(this._id, this.iModel);\r\n }\r\n\r\n protected createTreeId(): PrimaryTileTreeId {\r\n return { type: BatchType.Primary, edges: false, disablePolyfaceDecimation: IModelApp.tileAdmin.disablePolyfaceDecimation };\r\n }\r\n\r\n public get treeOwner(): TileTreeOwner {\r\n const newId = this.createTreeId();\r\n if (0 !== compareIModelTileTreeIds(newId, this._id.treeId)) {\r\n this._id = { modelId: this._id.modelId, is3d: this._id.is3d, treeId: newId, isPlanProjection: false };\r\n this._owner = primaryTreeSupplier.getOwner(this._id, this.iModel);\r\n }\r\n\r\n return this._owner;\r\n }\r\n public get viewFlags(): Partial<ViewFlagsProperties> {\r\n return {\r\n renderMode: RenderMode.SmoothShade,\r\n transparency: true, // Igored for point clouds as they don't support transparency.\r\n textures: true,\r\n lighting: false,\r\n shadows: false,\r\n monochrome: false,\r\n materials: false,\r\n ambientOcclusion: false,\r\n visibleEdges: true,\r\n hiddenEdges: false,\r\n fill: true,\r\n };\r\n }\r\n}\r\nexport function createModelMapLayerTileTreeReference(layerSettings: ModelMapLayerSettings, layerIndex: number, iModel: IModelConnection): ModelMapLayerTileTreeReference | undefined {\r\n const classifier = SpatialClassifier.fromModelMapLayer(layerSettings);\r\n return classifier ? new ModelMapLayerTileTreeReference(layerSettings, classifier, layerIndex, iModel) : undefined;\r\n}\r\n\r\n/** Provides [[TileTreeReference]]s for the loaded models present in a [[SpatialViewState]]'s [[ModelSelectorState]].\r\n * @internal\r\n */\r\nexport interface SpatialTileTreeReferences extends Iterable<TileTreeReference> {\r\n /** Supplies an iterator over all of the [[TileTreeReference]]s. */\r\n [Symbol.iterator](): Iterator<TileTreeReference>;\r\n /** Requests that the set of [[TileTreeReference]]s be updated to match the current state of the view, e.g., after the model selector's contents have changed. */\r\n update(): void;\r\n /** See SpatialViewState.setTileTreeReferencesDeactivated. */\r\n setDeactivated(modelIds: Id64String | Id64String[] | undefined, deactivated: boolean | undefined, refs: \"all\" | \"animated\" | \"primary\" | \"section\" | number[]): void;\r\n /** See SpatialViewState.attachToViewport. */\r\n attachToViewport(args: AttachToViewportArgs): void;\r\n /** See SpatialViewState.detachFromViewport. */\r\n detachFromViewport(): void;\r\n /** See SpatialViewState.collectMaskRefs */\r\n collectMaskRefs(modelIds: OrderedId64Iterable, maskTreeRefs: TileTreeReference[], maskRange: Range3d): void;\r\n /** See SpatialViewState.getModelsNotInMask */\r\n getModelsNotInMask(maskModels: OrderedId64Iterable | undefined, useVisible: boolean): Id64String[] | undefined;\r\n}\r\n\r\n/** Provides [[TileTreeReference]]s for the loaded models present in a [[SpatialViewState]]'s [[ModelSelectorState]] and\r\n * not present in the optionally-supplied exclusion list.\r\n * @internal\r\n */\r\nexport function createSpatialTileTreeReferences(view: SpatialViewState, excludedModels?: Set<Id64String>): SpatialTileTreeReferences {\r\n return new SpatialRefs(view, excludedModels);\r\n}\r\n\r\n/** Provides [[TileTreeReference]]s for the loaded models present in a [[SpatialViewState]]'s [[ModelSelectorState]].\r\n * @internal\r\n */\r\nexport namespace SpatialTileTreeReferences {\r\n /** Create a SpatialTileTreeReferences object reflecting the contents of the specified view. */\r\n export function create(view: SpatialViewState): SpatialTileTreeReferences {\r\n return createSpatialTileTreeReferences(view);\r\n }\r\n}\r\n\r\n/** Represents the [[TileTreeReference]]s associated with one model in a [[SpatialTileTreeReferences]]. */\r\nclass SpatialModelRefs implements Iterable<TileTreeReference> {\r\n /** The TileTreeReference representing the model's primary content. */\r\n private readonly _modelRef: TileTreeReference;\r\n /** TileTreeReferences representing nodes transformed by the view's schedule script. */\r\n private readonly _animatedRefs: PrimaryTreeReference[] = [];\r\n /** TileTreeReference providing cut geometry intersecting the view's clip volume. */\r\n private _sectionCutRef?: PrimaryTreeReference;\r\n /** Whether `this._modelRef` is a [[PrimaryTreeReference]] (as opposed to, e.g., a reality model tree reference). */\r\n private readonly _isPrimaryRef: boolean;\r\n /** Used to mark refs as excluded so that only their _sectionCutRef is returned by the iterator. */\r\n private readonly _isExcluded: boolean;\r\n\r\n public constructor(model: GeometricModel3dState, view: SpatialViewState, excluded: boolean) {\r\n this._modelRef = model.createTileTreeReference(view);\r\n this._isPrimaryRef = this._modelRef instanceof PrimaryTreeReference;\r\n this._isExcluded = excluded;\r\n }\r\n\r\n public *[Symbol.iterator](): Iterator<TileTreeReference> {\r\n if ((!this._primaryRef || !this._primaryRef.deactivated) && !this._isExcluded)\r\n yield this._modelRef;\r\n\r\n for (const animated of this._animatedRefs)\r\n if (!animated.deactivated)\r\n yield animated;\r\n\r\n if (this._sectionCutRef && !this._sectionCutRef.deactivated)\r\n yield this._sectionCutRef;\r\n }\r\n\r\n public updateAnimated(script: RenderSchedule.ScriptReference | undefined): void {\r\n const ref = this._primaryRef;\r\n if (!ref || this._isExcluded)\r\n return;\r\n\r\n this._animatedRefs.length = 0;\r\n const nodeIds = script?.script.getTransformBatchIds(ref.model.id);\r\n if (nodeIds)\r\n for (const nodeId of nodeIds)\r\n this._animatedRefs.push(new AnimatedTreeReference(ref.view, ref.model, nodeId));\r\n }\r\n\r\n public updateSectionCut(clip: StringifiedClipVector | undefined): void {\r\n const ref = this._primaryRef;\r\n if (!ref) {\r\n assert(undefined === this._sectionCutRef);\r\n return;\r\n }\r\n\r\n // If the clip isn't supposed to apply to this model, don't produce cut geometry.\r\n const vfJson = clip ? ref.model.jsonProperties.viewFlagOverrides : undefined;\r\n const vfOvrs = vfJson ? { ...vfJson } : undefined;\r\n if (vfOvrs && !vfOvrs.clipVolume)\r\n clip = undefined;\r\n\r\n this._sectionCutRef = clip ? createTreeRef(ref.view, ref.model, clip) : undefined;\r\n }\r\n\r\n public setDeactivated(deactivated: boolean | undefined, which: \"all\" | \"animated\" | \"primary\" | \"section\" | number[]): void {\r\n if (typeof which !== \"string\") {\r\n for (const index of which)\r\n if (this._animatedRefs[index])\r\n this._animatedRefs[index].deactivated = deactivated ?? !this._animatedRefs[index].deactivated;\r\n\r\n return;\r\n }\r\n\r\n if ((\"all\" === which || \"primary\" === which) && this._primaryRef)\r\n this._primaryRef.deactivated = deactivated ?? !this._primaryRef.deactivated;\r\n\r\n if ((\"all\" === which || \"section\" === which) && this._sectionCutRef)\r\n this._sectionCutRef.deactivated = deactivated ?? !this._sectionCutRef.deactivated;\r\n\r\n if ((\"all\" === which || \"animated\" === which))\r\n for (const ref of this._animatedRefs)\r\n ref.deactivated = deactivated ?? !ref.deactivated;\r\n }\r\n\r\n private get _primaryRef(): PrimaryTreeReference | undefined {\r\n if (!this._isPrimaryRef)\r\n return undefined;\r\n\r\n assert(this._modelRef instanceof PrimaryTreeReference);\r\n return this._modelRef;\r\n }\r\n}\r\n\r\n/** Provides [[TileTreeReference]]s for the loaded models present in a [[SpatialViewState]]'s [[ModelSelectorState]]. */\r\nclass SpatialRefs implements SpatialTileTreeReferences {\r\n private _allLoaded = false;\r\n private readonly _view: SpatialViewState;\r\n private readonly _excludedModels?: Set<Id64String>;\r\n private _refs = new Map<Id64String, SpatialModelRefs>();\r\n private _swapRefs = new Map<Id64String, SpatialModelRefs>();\r\n private _sectionCutOnlyRefs = new Map<Id64String, SpatialModelRefs>();\r\n private _swapSectionCutOnlyRefs = new Map<Id64String, SpatialModelRefs>();\r\n private _scheduleScript?: RenderSchedule.ScriptReference;\r\n private _sectionCut?: StringifiedClipVector;\r\n\r\n public constructor(view: SpatialViewState, excludedModels: Set<Id64String> | undefined) {\r\n this._view = view;\r\n this._scheduleScript = view.displayStyle[_scheduleScriptReference];\r\n this._sectionCut = this.getSectionCutFromView();\r\n if (excludedModels)\r\n this._excludedModels = new Set(excludedModels);\r\n }\r\n\r\n public update(): void {\r\n this._allLoaded = false;\r\n }\r\n\r\n public attachToViewport() { }\r\n public detachFromViewport() { }\r\n\r\n public *[Symbol.iterator](): Iterator<TileTreeReference> {\r\n this.load();\r\n for (const modelRef of this._refs.values())\r\n for (const ref of modelRef)\r\n yield ref;\r\n if (this._sectionCut) {\r\n for (const modelRef of this._sectionCutOnlyRefs.values())\r\n for (const ref of modelRef)\r\n yield ref;\r\n }\r\n }\r\n\r\n public setDeactivated(modelIds: Id64String | Id64String[] | undefined, deactivated: boolean, refs: \"all\" | \"animated\" | \"primary\" | \"section\" | number[]): void {\r\n if (undefined === modelIds) {\r\n for (const model of this._refs.values())\r\n model.setDeactivated(deactivated, refs);\r\n\r\n return;\r\n }\r\n\r\n if (typeof modelIds === \"string\")\r\n modelIds = [modelIds];\r\n\r\n for (const modelId of modelIds)\r\n this._refs.get(modelId)?.setDeactivated(deactivated, refs);\r\n }\r\n\r\n /** For getting the [TileTreeReference]s that are in the modelIds, for planar classification.\r\n * @param modelIds modelIds for which to get the TileTreeReferences\r\n * @param maskTreeRefs where to store the TileTreeReferences\r\n * @param maskRange range to extend for the maskRefs\r\n */\r\n public collectMaskRefs(modelIds: OrderedId64Iterable, maskTreeRefs: TileTreeReference[], maskRange: Range3d): void {\r\n for (const modelId of modelIds) {\r\n if (!this._excludedModels?.has(modelId)) {\r\n const model = this._view.iModel.models.getLoaded(modelId);\r\n assert(model !== undefined); // Models should be loaded by RealityModelTileTree\r\n if (model?.asGeometricModel) {\r\n const treeRef = createMaskTreeReference(this._view, model.asGeometricModel);\r\n maskTreeRefs.push(treeRef);\r\n const range = treeRef.computeWorldContentRange();\r\n maskRange.extendRange(range);\r\n }\r\n }\r\n }\r\n }\r\n\r\n /** For getting a list of modelIds which do not participate in masking, for planar classification.\r\n * For non-batched tile trees this is not needed, so just return undefined.\r\n */\r\n public getModelsNotInMask(_maskModels: OrderedId64Iterable | undefined, _useVisible: boolean): Id64String[] | undefined { return undefined; }\r\n\r\n private load(): void {\r\n if (!this._allLoaded) {\r\n this._allLoaded = true;\r\n this.updateModels();\r\n }\r\n\r\n const curScript = this._view.displayStyle[_scheduleScriptReference];\r\n const prevScript = this._scheduleScript;\r\n if (curScript !== prevScript) {\r\n this._scheduleScript = curScript;\r\n if (!curScript || !prevScript || !curScript.script.equals(prevScript.script))\r\n for (const ref of this._refs.values())\r\n ref.updateAnimated(curScript);\r\n }\r\n\r\n const sectionCut = this.getSectionCutFromView();\r\n if (sectionCut?.clipString !== this._sectionCut?.clipString) {\r\n this._sectionCut = sectionCut;\r\n for (const ref of this._refs.values())\r\n ref.updateSectionCut(sectionCut);\r\n for (const ref of this._sectionCutOnlyRefs.values())\r\n ref.updateSectionCut(sectionCut);\r\n }\r\n }\r\n\r\n private getSectionCutFromView(): StringifiedClipVector | undefined {\r\n const wantCut = this._view.viewFlags.clipVolume && this._view.displayStyle.settings.clipStyle.produceCutGeometry;\r\n const clip = wantCut ? this._view.getViewClip() : undefined;\r\n return StringifiedClipVector.fromClipVector(clip);\r\n }\r\n\r\n /** Ensure this._refs contains a SpatialModelRefs for all loaded models in the model selector. */\r\n private updateModels(): void {\r\n let prev = this._refs;\r\n let cur = this._swapRefs;\r\n this._refs = cur;\r\n this._swapRefs = prev;\r\n cur.clear();\r\n prev = this._sectionCutOnlyRefs;\r\n cur = this._swapSectionCutOnlyRefs;\r\n this._sectionCutOnlyRefs = cur;\r\n this._swapSectionCutOnlyRefs = prev;\r\n cur.clear();\r\n\r\n for (const modelId of this._view.modelSelector.models) {\r\n let excluded = false;\r\n if (undefined !== this._excludedModels && this._excludedModels.has(modelId)) {\r\n excluded = true;\r\n cur = this._sectionCutOnlyRefs;\r\n prev = this._swapSectionCutOnlyRefs;\r\n } else {\r\n cur = this._refs;\r\n prev = this._swapRefs;\r\n }\r\n\r\n let modelRefs = prev.get(modelId);\r\n if (!modelRefs) {\r\n const model = this._view.iModel.models.getLoaded(modelId)?.asGeometricModel3d;\r\n if (model) {\r\n modelRefs = new SpatialModelRefs(model, this._view, excluded);\r\n modelRefs.updateAnimated(this._scheduleScript);\r\n modelRefs.updateSectionCut(this._sectionCut);\r\n }\r\n }\r\n\r\n if (modelRefs)\r\n cur.set(modelId, modelRefs);\r\n }\r\n }\r\n}\r\n"]}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ImdlReader.js","sourceRoot":"","sources":["../../../src/tile/ImdlReader.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 { ByteStream, Id64Set, Id64String } from \"@itwin/core-bentley\";\nimport { Point3d, Transform } from \"@itwin/core-geometry\";\nimport {\n BatchType, decodeTileContentDescription, TileReadError, TileReadStatus,\n} from \"@itwin/core-common\";\nimport { IModelApp } from \"../IModelApp\";\nimport { IModelConnection } from \"../IModelConnection\";\nimport { GraphicBranch } from \"../render/GraphicBranch\";\nimport { RenderGraphic } from \"../render/RenderGraphic\";\nimport { RenderSystem } from \"../render/RenderSystem\";\nimport { ImdlModel } from \"../common/imdl/ImdlModel\";\nimport { convertFeatureTable, ImdlParseError, ImdlParserOptions, ImdlTimeline, parseImdlDocument } from \"../common/imdl/ParseImdlDocument\";\nimport { decodeImdlGraphics, IModelTileContent } from \"./internal\";\nimport { BatchOptions } from \"../common/render/BatchOptions\";\nimport { LayerTileData } from \"../internal/render/webgl/MapLayerParams\";\n\n/** @internal */\nexport interface ImdlReaderResult extends IModelTileContent {\n readStatus: TileReadStatus;\n}\n\n/** Convert the byte array returned by [[TileAdmin.requestElementGraphics]] into a [[RenderGraphic]].\n * @param bytes The binary graphics data obtained from `requestElementGraphics`.\n * @param iModel The iModel with which the graphics are associated.\n * @param modelId The Id of the [[GeometricModelState]] with which the graphics are associated. Can be an invalid Id.\n * @param is3d True if the graphics are 3d.\n * @param options Options customizing how [Feature]($common)s within the graphic can be resymbolized; or false if you don't want to produce a batch.\n * @public\n * @extensions\n */\nexport async function readElementGraphics(bytes: Uint8Array, iModel: IModelConnection, modelId: Id64String, is3d: boolean, options?: BatchOptions | false): Promise<RenderGraphic | undefined> {\n const stream = ByteStream.fromUint8Array(bytes);\n const reader = ImdlReader.create({\n stream, iModel, modelId, is3d, options,\n system: IModelApp.renderSystem,\n });\n\n const result = await reader.read();\n return result.graphic;\n}\n\n/** Arguments supplied to [[ImdlReader.create]]\n * @internal\n */\nexport interface ImdlReaderCreateArgs {\n stream: ByteStream;\n iModel: IModelConnection;\n modelId: Id64String;\n is3d: boolean;\n /** If undefined, the tile's leafness will be deduced by decodeTileContentDescription. */\n isLeaf?: boolean;\n system: RenderSystem;\n type?: BatchType; // default Primary\n loadEdges?: boolean; // default true\n isCanceled?: () => boolean;\n sizeMultiplier?: number;\n options?: BatchOptions | false;\n containsTransformNodes?: boolean; // default false\n /** Supplied if the graphics in the tile are to be split up based on the nodes in the timeline. */\n timeline?: ImdlTimeline;\n modelGroups?: Id64Set[];\n tileData?: LayerTileData;\n}\n\n/** @internal */\nexport async function readImdlContent(args: ImdlReaderCreateArgs & { parseDocument?: (parseOpts: ImdlParserOptions) => Promise<ImdlModel.Document | ImdlParseError> }): Promise<ImdlReaderResult> {\n const isCanceled = args.isCanceled ?? (() => false);\n let content;\n try {\n content = decodeTileContentDescription({\n stream: args.stream,\n sizeMultiplier: args.sizeMultiplier,\n is2d: !args.is3d,\n options: IModelApp.tileAdmin,\n isVolumeClassifier: BatchType.VolumeClassifier === args.type,\n isLeaf: args.isLeaf,\n });\n } catch (e) {\n if (e instanceof TileReadError)\n return { isLeaf: true, readStatus: e.errorNumber };\n else\n throw e;\n }\n\n args.stream.reset();\n const parseOpts: ImdlParserOptions = {\n data: args.stream.readBytes(0, args.stream.length),\n batchModelId: args.modelId,\n is3d: args.is3d,\n maxVertexTableSize: IModelApp.renderSystem.maxTextureSize,\n omitEdges: false === args.loadEdges,\n createUntransformedRootNode: args.containsTransformNodes,\n modelGroups: args.modelGroups,\n };\n\n const document = args.parseDocument ? (await args.parseDocument(parseOpts)) : await parseImdlDocument({ ...parseOpts, timeline: args.timeline });\n if (isCanceled())\n return { isLeaf: true, readStatus: TileReadStatus.Canceled };\n else if (typeof document === \"number\")\n return { isLeaf: true, readStatus: document };\n\n let graphic = await decodeImdlGraphics({\n system: args.system,\n iModel: args.iModel,\n document,\n isCanceled: args.isCanceled,\n tileData: args.tileData,\n });\n\n if (isCanceled())\n return { isLeaf: true, readStatus: TileReadStatus.Canceled };\n\n if (graphic && false !== args.options) {\n const featureTable = convertFeatureTable(document.featureTable, args.modelId);\n graphic = args.system.createBatch(graphic, featureTable, content.contentRange, args.options);\n }\n\n if (graphic && document.rtcCenter) {\n const rtcBranch = new GraphicBranch(true);\n rtcBranch.add(graphic);\n graphic = args.system.createBranch(rtcBranch, Transform.createTranslation(Point3d.fromJSON(document.rtcCenter)));\n }\n\n return {\n readStatus: TileReadStatus.Success,\n isLeaf: content.isLeaf,\n sizeMultiplier: content.sizeMultiplier,\n contentRange: content.contentRange.isNull ? undefined : content.contentRange,\n graphic,\n emptySubRangeMask: content.emptySubRangeMask,\n };\n}\n\n/** @internal */\nexport interface ImdlReader {\n read: () => Promise<ImdlReaderResult>;\n}\n\n/** @internal */\nexport namespace ImdlReader {\n export function create(args: ImdlReaderCreateArgs): ImdlReader {\n return {\n read: async () => readImdlContent(args),\n };\n }\n}
|
|
1
|
+
{"version":3,"file":"ImdlReader.js","sourceRoot":"","sources":["../../../src/tile/ImdlReader.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 { ByteStream, Id64Set, Id64String } from \"@itwin/core-bentley\";\nimport { Point3d, Transform } from \"@itwin/core-geometry\";\nimport {\n BatchType, decodeTileContentDescription, TileReadError, TileReadStatus,\n} from \"@itwin/core-common\";\nimport { IModelApp } from \"../IModelApp\";\nimport { IModelConnection } from \"../IModelConnection\";\nimport { GraphicBranch } from \"../render/GraphicBranch\";\nimport { RenderGraphic } from \"../render/RenderGraphic\";\nimport { RenderSystem } from \"../render/RenderSystem\";\nimport { ImdlModel } from \"../common/imdl/ImdlModel\";\nimport { convertFeatureTable, ImdlParseError, ImdlParserOptions, ImdlTimeline, parseImdlDocument } from \"../common/imdl/ParseImdlDocument\";\nimport { decodeImdlGraphics, IModelTileContent } from \"./internal\";\nimport { BatchOptions } from \"../common/render/BatchOptions\";\nimport { LayerTileData } from \"../internal/render/webgl/MapLayerParams\";\n\n/** @internal */\nexport interface ImdlReaderResult extends IModelTileContent {\n readStatus: TileReadStatus;\n}\n\n/** Convert the byte array returned by [[TileAdmin.requestElementGraphics]] into a [[RenderGraphic]].\n * @param bytes The binary graphics data obtained from `requestElementGraphics`.\n * @param iModel The iModel with which the graphics are associated.\n * @param modelId The Id of the [[GeometricModelState]] with which the graphics are associated. Can be an invalid Id.\n * @param is3d True if the graphics are 3d.\n * @param options Options customizing how [Feature]($common)s within the graphic can be resymbolized; or false if you don't want to produce a batch.\n * @public\n * @extensions\n */\nexport async function readElementGraphics(bytes: Uint8Array, iModel: IModelConnection, modelId: Id64String, is3d: boolean, options?: BatchOptions | false): Promise<RenderGraphic | undefined> {\n const stream = ByteStream.fromUint8Array(bytes);\n const reader = ImdlReader.create({\n stream, iModel, modelId, is3d, options,\n system: IModelApp.renderSystem,\n });\n\n const result = await reader.read();\n return result.graphic;\n}\n\n/** Arguments supplied to [[ImdlReader.create]]\n * @internal\n */\nexport interface ImdlReaderCreateArgs {\n stream: ByteStream;\n iModel: IModelConnection;\n modelId: Id64String;\n is3d: boolean;\n /** If undefined, the tile's leafness will be deduced by decodeTileContentDescription. */\n isLeaf?: boolean;\n system: RenderSystem;\n type?: BatchType; // default Primary\n loadEdges?: boolean; // default true\n isCanceled?: () => boolean;\n sizeMultiplier?: number;\n options?: BatchOptions | false;\n containsTransformNodes?: boolean; // default false\n /** Supplied if the graphics in the tile are to be split up based on the nodes in the timeline. */\n timeline?: ImdlTimeline;\n modelGroups?: Id64Set[];\n tileData?: LayerTileData;\n}\n\n/** @internal */\nexport async function readImdlContent(args: ImdlReaderCreateArgs & { parseDocument?: (parseOpts: ImdlParserOptions) => Promise<ImdlModel.Document | ImdlParseError> }): Promise<ImdlReaderResult> {\n const isCanceled = args.isCanceled ?? (() => false);\n let content;\n try {\n content = decodeTileContentDescription({\n stream: args.stream,\n sizeMultiplier: args.sizeMultiplier,\n is2d: !args.is3d,\n options: IModelApp.tileAdmin,\n isVolumeClassifier: BatchType.VolumeClassifier === args.type,\n isLeaf: args.isLeaf,\n });\n } catch (e) {\n if (e instanceof TileReadError)\n return { isLeaf: true, readStatus: e.errorNumber };\n else\n throw e;\n }\n\n args.stream.reset();\n const parseOpts: ImdlParserOptions = {\n data: args.stream.readBytes(0, args.stream.length),\n batchModelId: args.modelId,\n is3d: args.is3d,\n maxVertexTableSize: IModelApp.renderSystem.maxTextureSize,\n omitEdges: false === args.loadEdges,\n createUntransformedRootNode: args.containsTransformNodes,\n modelGroups: args.modelGroups,\n };\n\n const document = args.parseDocument ? (await args.parseDocument(parseOpts)) : await parseImdlDocument({ ...parseOpts, timeline: args.timeline });\n if (isCanceled())\n return { isLeaf: true, readStatus: TileReadStatus.Canceled };\n else if (typeof document === \"number\")\n return { isLeaf: true, readStatus: document };\n\n let graphic = await decodeImdlGraphics({\n system: args.system,\n iModel: args.iModel,\n document,\n isCanceled: args.isCanceled,\n tileData: args.tileData,\n });\n\n if (isCanceled())\n return { isLeaf: true, readStatus: TileReadStatus.Canceled };\n\n if (graphic && false !== args.options) {\n const featureTable = convertFeatureTable(document.featureTable, args.modelId);\n graphic = args.system.createBatch(graphic, featureTable, content.contentRange, args.options);\n }\n\n if (graphic && document.rtcCenter) {\n const rtcBranch = new GraphicBranch(true);\n rtcBranch.add(graphic);\n graphic = args.system.createBranch(rtcBranch, Transform.createTranslation(Point3d.fromJSON(document.rtcCenter)));\n }\n\n return {\n readStatus: TileReadStatus.Success,\n isLeaf: content.isLeaf,\n sizeMultiplier: content.sizeMultiplier,\n contentRange: content.contentRange.isNull ? undefined : content.contentRange,\n graphic,\n emptySubRangeMask: content.emptySubRangeMask,\n };\n}\n\n/** @internal */\nexport interface ImdlReader {\n read: () => Promise<ImdlReaderResult>;\n}\n\n/** @internal */\nexport namespace ImdlReader {\n export function create(args: ImdlReaderCreateArgs): ImdlReader {\n return {\n read: async () => readImdlContent(args),\n };\n }\n}"]}
|
|
@@ -3,7 +3,7 @@
|
|
|
3
3
|
*/
|
|
4
4
|
import { BeDuration, BeTimePoint, Id64String } from "@itwin/core-bentley";
|
|
5
5
|
import { Matrix4d, Range3d, Transform } from "@itwin/core-geometry";
|
|
6
|
-
import { ElementAlignedBox3d, FrustumPlanes, ViewFlagOverrides } from "@itwin/core-common";
|
|
6
|
+
import { ElementAlignedBox3d, FrustumPlanes, RenderSchedule, ViewFlagOverrides } from "@itwin/core-common";
|
|
7
7
|
import { IModelConnection } from "../IModelConnection";
|
|
8
8
|
import { RenderClipVolume } from "../render/RenderClipVolume";
|
|
9
9
|
import { RenderMemory } from "../render/RenderMemory";
|
|
@@ -124,5 +124,18 @@ export declare abstract class TileTree {
|
|
|
124
124
|
* @beta
|
|
125
125
|
*/
|
|
126
126
|
collectTileGeometry(_collector: TileGeometryCollector): void;
|
|
127
|
+
/**
|
|
128
|
+
* Invoked when a schedule script is edited.
|
|
129
|
+
* Override to handle updates for affected elements or timelines.
|
|
130
|
+
*
|
|
131
|
+
* @internal
|
|
132
|
+
*/
|
|
133
|
+
onScheduleEditingChanged(_changes: RenderSchedule.EditingChanges[]): Promise<void>;
|
|
134
|
+
/**
|
|
135
|
+
* Invoked when a schedule script is committed during editing.
|
|
136
|
+
* Override in specific tile tree types to handle the change.
|
|
137
|
+
* @internal
|
|
138
|
+
*/
|
|
139
|
+
onScheduleEditingCommitted(): void;
|
|
127
140
|
}
|
|
128
141
|
//# sourceMappingURL=TileTree.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"TileTree.d.ts","sourceRoot":"","sources":["../../../src/tile/TileTree.ts"],"names":[],"mappings":"AAIA;;GAEG;AAEH,OAAO,EAAE,UAAU,EAAE,WAAW,EAAW,UAAU,EAAE,MAAM,qBAAqB,CAAC;AACnF,OAAO,EAAE,QAAQ,EAAE,OAAO,EAAE,SAAS,EAAE,MAAM,sBAAsB,CAAC;AACpE,OAAO,EAAE,mBAAmB,EAAE,aAAa,EAAE,iBAAiB,EAAE,MAAM,oBAAoB,CAAC;
|
|
1
|
+
{"version":3,"file":"TileTree.d.ts","sourceRoot":"","sources":["../../../src/tile/TileTree.ts"],"names":[],"mappings":"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"}
|
package/lib/cjs/tile/TileTree.js
CHANGED
|
@@ -161,6 +161,19 @@ class TileTree {
|
|
|
161
161
|
*/
|
|
162
162
|
collectTileGeometry(_collector) {
|
|
163
163
|
}
|
|
164
|
+
/**
|
|
165
|
+
* Invoked when a schedule script is edited.
|
|
166
|
+
* Override to handle updates for affected elements or timelines.
|
|
167
|
+
*
|
|
168
|
+
* @internal
|
|
169
|
+
*/
|
|
170
|
+
async onScheduleEditingChanged(_changes) { }
|
|
171
|
+
/**
|
|
172
|
+
* Invoked when a schedule script is committed during editing.
|
|
173
|
+
* Override in specific tile tree types to handle the change.
|
|
174
|
+
* @internal
|
|
175
|
+
*/
|
|
176
|
+
onScheduleEditingCommitted() { }
|
|
164
177
|
}
|
|
165
178
|
exports.TileTree = TileTree;
|
|
166
179
|
//# sourceMappingURL=TileTree.js.map
|