@itwin/core-frontend 4.3.2 → 4.4.0-dev.10

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.
Files changed (30) hide show
  1. package/CHANGELOG.md +1 -1
  2. package/lib/cjs/extension/ExtensionRuntime.js +1 -0
  3. package/lib/cjs/extension/ExtensionRuntime.js.map +1 -1
  4. package/lib/cjs/render/ParticleCollectionBuilder.d.ts +4 -1
  5. package/lib/cjs/render/ParticleCollectionBuilder.d.ts.map +1 -1
  6. package/lib/cjs/render/ParticleCollectionBuilder.js +4 -1
  7. package/lib/cjs/render/ParticleCollectionBuilder.js.map +1 -1
  8. package/lib/cjs/tile/PrimaryTileTree.d.ts +5 -0
  9. package/lib/cjs/tile/PrimaryTileTree.d.ts.map +1 -1
  10. package/lib/cjs/tile/PrimaryTileTree.js +15 -3
  11. package/lib/cjs/tile/PrimaryTileTree.js.map +1 -1
  12. package/lib/cjs/tile/ThreeDTileFormatInterpreter.d.ts.map +1 -1
  13. package/lib/cjs/tile/ThreeDTileFormatInterpreter.js +8 -6
  14. package/lib/cjs/tile/ThreeDTileFormatInterpreter.js.map +1 -1
  15. package/lib/esm/extension/ExtensionRuntime.js +2 -1
  16. package/lib/esm/extension/ExtensionRuntime.js.map +1 -1
  17. package/lib/esm/render/ParticleCollectionBuilder.d.ts +4 -1
  18. package/lib/esm/render/ParticleCollectionBuilder.d.ts.map +1 -1
  19. package/lib/esm/render/ParticleCollectionBuilder.js +4 -1
  20. package/lib/esm/render/ParticleCollectionBuilder.js.map +1 -1
  21. package/lib/esm/tile/PrimaryTileTree.d.ts +5 -0
  22. package/lib/esm/tile/PrimaryTileTree.d.ts.map +1 -1
  23. package/lib/esm/tile/PrimaryTileTree.js +13 -2
  24. package/lib/esm/tile/PrimaryTileTree.js.map +1 -1
  25. package/lib/esm/tile/ThreeDTileFormatInterpreter.d.ts.map +1 -1
  26. package/lib/esm/tile/ThreeDTileFormatInterpreter.js +9 -7
  27. package/lib/esm/tile/ThreeDTileFormatInterpreter.js.map +1 -1
  28. package/lib/public/scripts/parse-imdl-worker.js +1 -1
  29. package/lib/workers/webpack/parse-imdl-worker.js +1 -1
  30. package/package.json +23 -23
@@ -1 +1 @@
1
- {"version":3,"file":"PrimaryTileTree.js","sourceRoot":"","sources":["../../../src/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} from \"@itwin/core-bentley\";\r\nimport {\r\n BatchType, compareIModelTileTreeIds, FeatureAppearance, FeatureAppearanceProvider, HiddenLine, iModelTileTreeIdToString, MapLayerSettings, 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 \"../render/GraphicBranch\";\r\nimport { AnimationNodeId } from \"../common/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 IModelTileTree, IModelTileTreeParams, iModelTileTreeParamsFromJSON, MapLayerTileTreeReference, TileDrawArgs, TileGraphicType, TileTree, TileTreeOwner, TileTreeReference,\r\n TileTreeSupplier,\r\n} from \"./internal\";\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 (_err) {\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 * @internal\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.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\r\n public constructor(view: ViewState, model: GeometricModelState, planProjection: boolean, transformNodeId: number | undefined, sectionClip?: StringifiedClipVector) {\r\n super();\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); // eslint-disable-line deprecation/deprecation\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 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 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; // eslint-disable-line deprecation/deprecation\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; // eslint-disable-line deprecation/deprecation\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 return { type: BatchType.Primary, edges, animationId, sectionCut };\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\r\n/** @internal */\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(view: ViewState3d, model: GeometricModelState, sectionCut?: StringifiedClipVector) {\r\n super(view, model, true, undefined, sectionCut);\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 = () => { // eslint-disable-line @typescript-eslint/unbound-method\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(view: ViewState, model: GeometricModelState, sectionCut: StringifiedClipVector | undefined): PrimaryTreeReference {\r\n if (false !== IModelApp.renderSystem.options.planProjections && isPlanProjection(view, model))\r\n return new PlanProjectionTreeReference(view as ViewState3d, model, sectionCut);\r\n\r\n return new PrimaryTreeReference(view, model, false, undefined, sectionCut);\r\n}\r\n\r\n/** @internal */\r\nexport function createPrimaryTileTreeReference(view: ViewState, model: GeometricModelState): PrimaryTreeReference {\r\n return createTreeRef(view, model, undefined);\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 };\r\n }\r\n}\r\n\r\n/** @internal */\r\nexport function createMaskTreeReference(view: ViewState, model: GeometricModelState): TileTreeReference {\r\n return new MaskTreeReference(view, model);\r\n}\r\n\r\n/** @internal */\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 };\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\n/** @internal */\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}\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 new SpatialRefs(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\r\n public constructor(model: GeometricModel3dState, view: SpatialViewState) {\r\n this._modelRef = model.createTileTreeReference(view);\r\n this._isPrimaryRef = this._modelRef instanceof PrimaryTreeReference;\r\n }\r\n\r\n public *[Symbol.iterator](): Iterator<TileTreeReference> {\r\n if (!this._primaryRef || !this._primaryRef.deactivated)\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)\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 _refs = new Map<Id64String, SpatialModelRefs>();\r\n private _swapRefs = new Map<Id64String, SpatialModelRefs>();\r\n private _scheduleScript?: RenderSchedule.ScriptReference;\r\n private _sectionCut?: StringifiedClipVector;\r\n\r\n public constructor(view: SpatialViewState) {\r\n this._view = view;\r\n this._scheduleScript = view.displayStyle.scheduleScriptReference; // eslint-disable-line deprecation/deprecation\r\n this._sectionCut = this.getSectionCutFromView();\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 }\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 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; // eslint-disable-line deprecation/deprecation\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 }\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 const prev = this._refs;\r\n const cur = this._swapRefs;\r\n this._refs = cur;\r\n this._swapRefs = prev;\r\n cur.clear();\r\n\r\n for (const modelId of this._view.modelSelector.models) {\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);\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/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} from \"@itwin/core-bentley\";\r\nimport {\r\n BatchType, compareIModelTileTreeIds, FeatureAppearance, FeatureAppearanceProvider, HiddenLine, iModelTileTreeIdToString, MapLayerSettings, 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 \"../render/GraphicBranch\";\r\nimport { AnimationNodeId } from \"../common/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 IModelTileTree, IModelTileTreeParams, iModelTileTreeParamsFromJSON, MapLayerTileTreeReference, TileDrawArgs, TileGraphicType, TileTree, TileTreeOwner, TileTreeReference,\r\n TileTreeSupplier,\r\n} from \"./internal\";\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 (_err) {\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 * @internal\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.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\r\n public constructor(view: ViewState, model: GeometricModelState, planProjection: boolean, transformNodeId: number | undefined, sectionClip?: StringifiedClipVector) {\r\n super();\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); // eslint-disable-line deprecation/deprecation\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 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 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; // eslint-disable-line deprecation/deprecation\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; // eslint-disable-line deprecation/deprecation\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 return { type: BatchType.Primary, edges, animationId, sectionCut };\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\r\n/** @internal */\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(view: ViewState3d, model: GeometricModelState, sectionCut?: StringifiedClipVector) {\r\n super(view, model, true, undefined, sectionCut);\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 = () => { // eslint-disable-line @typescript-eslint/unbound-method\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(view: ViewState, model: GeometricModelState, sectionCut: StringifiedClipVector | undefined): PrimaryTreeReference {\r\n if (false !== IModelApp.renderSystem.options.planProjections && isPlanProjection(view, model))\r\n return new PlanProjectionTreeReference(view as ViewState3d, model, sectionCut);\r\n\r\n return new PrimaryTreeReference(view, model, false, undefined, sectionCut);\r\n}\r\n\r\n/** @internal */\r\nexport function createPrimaryTileTreeReference(view: ViewState, model: GeometricModelState): PrimaryTreeReference {\r\n return createTreeRef(view, model, undefined);\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 };\r\n }\r\n}\r\n\r\n/** @internal */\r\nexport function createMaskTreeReference(view: ViewState, model: GeometricModelState): TileTreeReference {\r\n return new MaskTreeReference(view, model);\r\n}\r\n\r\n/** @internal */\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 };\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\n/** @internal */\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}\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\r\n public constructor(model: GeometricModel3dState, view: SpatialViewState) {\r\n this._modelRef = model.createTileTreeReference(view);\r\n this._isPrimaryRef = this._modelRef instanceof PrimaryTreeReference;\r\n }\r\n\r\n public *[Symbol.iterator](): Iterator<TileTreeReference> {\r\n if (!this._primaryRef || !this._primaryRef.deactivated)\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)\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 _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; // eslint-disable-line deprecation/deprecation\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 }\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 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; // eslint-disable-line deprecation/deprecation\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 }\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 const prev = this._refs;\r\n const cur = this._swapRefs;\r\n this._refs = cur;\r\n this._swapRefs = prev;\r\n cur.clear();\r\n\r\n for (const modelId of this._view.modelSelector.models) {\r\n if (this._excludedModels && this._excludedModels.has(modelId))\r\n continue;\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);\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":"ThreeDTileFormatInterpreter.d.ts","sourceRoot":"","sources":["../../../src/tile/ThreeDTileFormatInterpreter.ts"],"names":[],"mappings":"AAOA,OAAO,EAAqB,OAAO,EAAE,SAAS,EAAgC,MAAM,sBAAsB,CAAC;AAE3G,OAAO,EAAE,oBAAoB,EAAoB,yBAAyB,EAAE,MAAM,sBAAsB,CAAC;AAGzG;;;GAGG;AACH,MAAM,WAAW,kBAAkB;IACjC,8DAA8D;IAC9D,YAAY,CAAC,EAAE,MAAM,CAAC;CACvB;AACD;;;GAGG;AACH,qBAAa,2BAA2B;IACtC;;;;;OAKG;WACW,4BAA4B,CAAC,IAAI,EAAE,GAAG,GAAG,yBAAyB;IAkFhF;;;;;OAKG;WACW,uBAAuB,CAAC,WAAW,EAAE,GAAG,GAAG,oBAAoB;IAW7E;;;;;OAKG;WACW,WAAW,CAAC,WAAW,EAAE,GAAG,GAAG,kBAAkB;IAM/D;;;;OAIG;WACW,uBAAuB,CAAC,cAAc,EAAE,GAAG,GAAG,OAAO,GAAG,SAAS;IA0B/E;;OAEG;WACW,iCAAiC,CAAC,KAAK,EAAE,OAAO,EAAE,cAAc,EAAE,MAAM,GAAG,MAAM;IAI/F;;OAEG;WACW,iBAAiB,CAAC,MAAM,EAAE,MAAM,EAAE,GAAG,SAAS,GAAG,SAAS,GAAG,SAAS;CAGrF"}
1
+ {"version":3,"file":"ThreeDTileFormatInterpreter.d.ts","sourceRoot":"","sources":["../../../src/tile/ThreeDTileFormatInterpreter.ts"],"names":[],"mappings":"AAOA,OAAO,EAAqB,OAAO,EAAE,SAAS,EAAY,MAAM,sBAAsB,CAAC;AAEvF,OAAO,EAAE,oBAAoB,EAAoB,yBAAyB,EAAE,MAAM,sBAAsB,CAAC;AAGzG;;;GAGG;AACH,MAAM,WAAW,kBAAkB;IACjC,8DAA8D;IAC9D,YAAY,CAAC,EAAE,MAAM,CAAC;CACvB;AACD;;;GAGG;AACH,qBAAa,2BAA2B;IACtC;;;;;OAKG;WACW,4BAA4B,CAAC,IAAI,EAAE,GAAG,GAAG,yBAAyB;IAqFhF;;;;;OAKG;WACW,uBAAuB,CAAC,WAAW,EAAE,GAAG,GAAG,oBAAoB;IAW7E;;;;;OAKG;WACW,WAAW,CAAC,WAAW,EAAE,GAAG,GAAG,kBAAkB;IAM/D;;;;OAIG;WACW,uBAAuB,CAAC,cAAc,EAAE,GAAG,GAAG,OAAO,GAAG,SAAS;IA0B/E;;OAEG;WACW,iCAAiC,CAAC,KAAK,EAAE,OAAO,EAAE,cAAc,EAAE,MAAM,GAAG,MAAM;IAI/F;;OAEG;WACW,iBAAiB,CAAC,MAAM,EAAE,MAAM,EAAE,GAAG,SAAS,GAAG,SAAS,GAAG,SAAS;CAGrF"}
@@ -73,14 +73,16 @@ class ThreeDTileFormatInterpreter {
73
73
  core_bentley_1.Logger.logTrace(loggerCategory, "RealityData NOT Geolocated", () => ({ ...location }));
74
74
  }
75
75
  else {
76
- let ecefLocation;
77
- const locationOrientation = core_geometry_1.YawPitchRollAngles.tryFromTransform(worldToEcefTransform);
76
+ let ecefLocation = core_common_1.EcefLocation.createFromTransform(worldToEcefTransform);
78
77
  // Fix Bug 445630: [RDV][Regression] Orientation of georeferenced Reality Mesh is wrong.
79
78
  // Use json.root.transform only if defined and not identity -> otherwise will use a transform computed from cartographic center.
80
- if (!worldToEcefTransform.matrix.isIdentity && locationOrientation !== undefined && locationOrientation.angles !== undefined)
81
- ecefLocation = new core_common_1.EcefLocation({ origin: locationOrientation.origin, orientation: locationOrientation.angles.toJSON() });
82
- else
83
- ecefLocation = core_common_1.EcefLocation.createFromCartographicOrigin(cartoCenter);
79
+ if (worldToEcefTransform.matrix.isIdentity) {
80
+ // For georeferenced Reality Meshes, its origin is translated to model origin (0,0,0).
81
+ // Apply range center to translate it back to its original position.
82
+ const worldCenter = !worldToEcefTransform.matrix.isIdentity ? range.center : undefined;
83
+ if (cartoCenter)
84
+ ecefLocation = core_common_1.EcefLocation.createFromCartographicOrigin(cartoCenter, worldCenter);
85
+ }
84
86
  location = ecefLocation;
85
87
  core_bentley_1.Logger.logTrace(loggerCategory, "RealityData is worldToEcefTransform.matrix.isIdentity", () => ({ isIdentity: worldToEcefTransform.matrix.isIdentity }));
86
88
  // iModelDb.setEcefLocation(ecefLocation);
@@ -1 +1 @@
1
- {"version":3,"file":"ThreeDTileFormatInterpreter.js","sourceRoot":"","sources":["../../../src/tile/ThreeDTileFormatInterpreter.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\nimport { JsonUtils, Logger, LoggingMetaData, RealityDataStatus } from \"@itwin/core-bentley\";\nimport { Cartographic, EcefLocation } from \"@itwin/core-common\";\nimport { Matrix3d, Point3d, Range3d, Transform, Vector3d, YawPitchRollAngles } from \"@itwin/core-geometry\";\nimport { FrontendLoggerCategory } from \"../common/FrontendLoggerCategory\";\nimport { PublisherProductInfo, RealityDataError, SpatialLocationAndExtents } from \"../RealityDataSource\";\n\nconst loggerCategory: string = FrontendLoggerCategory.RealityData;\n/** This interface provides information about 3dTile files for this reality data\n * Currently only used for debbugging\n * @internal\n */\nexport interface ThreeDTileFileInfo {\n /** the number of children at the root of this reality data */\n rootChildren?: number;\n}\n/**\n * This class provide methods used to interpret Cesium 3dTile format\n * @internal\n */\nexport class ThreeDTileFormatInterpreter {\n /** Gets reality data spatial location and extents\n * @param json root document file in json format\n * @returns spatial location and volume of interest, in meters, centered around `spatial location`\n * @throws [[RealityDataError]] if source is invalid or cannot be read\n * @internal\n */\n public static getSpatialLocationAndExtents(json: any): SpatialLocationAndExtents {\n const worldRange = new Range3d();\n let isGeolocated = true;\n let location: Cartographic | EcefLocation;\n Logger.logTrace(loggerCategory, \"RealityData getSpatialLocationAndExtents\");\n if (undefined === json?.root) {\n Logger.logWarning(loggerCategory, `Error getSpatialLocationAndExtents - no root in json`);\n // return first 1024 char from the json\n const getMetaData: LoggingMetaData = () => {\n return {json: JSON.stringify(json).substring(0,1024)};\n };\n const error = new RealityDataError(RealityDataStatus.InvalidData, \"Invalid or unknown data - no root in json\", getMetaData);\n throw error;\n }\n try {\n if (undefined !== json?.root?.boundingVolume?.region) {\n const region = JsonUtils.asArray(json.root.boundingVolume.region);\n\n Logger.logTrace(loggerCategory, \"RealityData json.root.boundingVolume.region\", () => ({ ...region }));\n if (undefined === region) {\n Logger.logError(loggerCategory, `Error getSpatialLocationAndExtents - region undefined`);\n throw new TypeError(\"Unable to determine GeoLocation - no root Transform or Region on root.\");\n }\n const ecefLow = (Cartographic.fromRadians({ longitude: region[0], latitude: region[1], height: region[4] })).toEcef();\n const ecefHigh = (Cartographic.fromRadians({ longitude: region[2], latitude: region[3], height: region[5] })).toEcef();\n const ecefRange = Range3d.create(ecefLow, ecefHigh);\n const cartoCenter = Cartographic.fromRadians({ longitude: (region[0] + region[2]) / 2.0, latitude: (region[1] + region[3]) / 2.0, height: (region[4] + region[5]) / 2.0 });\n location = cartoCenter;\n const ecefLocation = EcefLocation.createFromCartographicOrigin(cartoCenter);\n // iModelDb.setEcefLocation(ecefLocation);\n const ecefToWorld = ecefLocation.getTransform().inverse()!;\n worldRange.extendRange(Range3d.fromJSON(ecefToWorld.multiplyRange(ecefRange)));\n } else {\n let worldToEcefTransform = ThreeDTileFormatInterpreter.transformFromJson(json.root.transform);\n\n Logger.logTrace(loggerCategory, \"RealityData json.root.transform\", () => ({ ...worldToEcefTransform }));\n const range = ThreeDTileFormatInterpreter.rangeFromBoundingVolume(json.root.boundingVolume)!;\n if (undefined === worldToEcefTransform)\n worldToEcefTransform = Transform.createIdentity();\n\n const ecefRange = worldToEcefTransform.multiplyRange(range); // range in model -> range in ecef\n const ecefCenter = worldToEcefTransform.multiplyPoint3d(range.center); // range center in model -> range center in ecef\n const cartoCenter = Cartographic.fromEcef(ecefCenter); // ecef center to cartographic center\n const isNotNearEarthSurface = cartoCenter && (cartoCenter.height < -5000); // 5 km under ground!\n const earthCenterToRangeCenterRayLenght = range.center.magnitude();\n\n if (worldToEcefTransform.matrix.isIdentity && (earthCenterToRangeCenterRayLenght < 1.0E5 || isNotNearEarthSurface)) {\n isGeolocated = false;\n worldRange.extendRange(Range3d.fromJSON(ecefRange));\n const centerOfEarth = new EcefLocation({ origin: { x: 0.0, y: 0.0, z: 0.0 }, orientation: { yaw: 0.0, pitch: 0.0, roll: 0.0 } });\n location = centerOfEarth;\n Logger.logTrace(loggerCategory, \"RealityData NOT Geolocated\", () => ({ ...location }));\n } else {\n let ecefLocation: EcefLocation;\n const locationOrientation = YawPitchRollAngles.tryFromTransform(worldToEcefTransform);\n // Fix Bug 445630: [RDV][Regression] Orientation of georeferenced Reality Mesh is wrong.\n // Use json.root.transform only if defined and not identity -> otherwise will use a transform computed from cartographic center.\n if (!worldToEcefTransform.matrix.isIdentity && locationOrientation !== undefined && locationOrientation.angles !== undefined)\n ecefLocation = new EcefLocation({ origin: locationOrientation.origin, orientation: locationOrientation.angles.toJSON() });\n else\n ecefLocation = EcefLocation.createFromCartographicOrigin(cartoCenter!);\n location = ecefLocation;\n Logger.logTrace(loggerCategory, \"RealityData is worldToEcefTransform.matrix.isIdentity\", () => ({ isIdentity: worldToEcefTransform!.matrix.isIdentity }));\n // iModelDb.setEcefLocation(ecefLocation);\n const ecefToWorld = ecefLocation.getTransform().inverse()!;\n worldRange.extendRange(Range3d.fromJSON(ecefToWorld.multiplyRange(ecefRange)));\n Logger.logTrace(loggerCategory, \"RealityData ecefToWorld\", () => ({ ...ecefToWorld }));\n }\n }\n } catch (e) {\n Logger.logWarning(loggerCategory, `Error getSpatialLocationAndExtents - cannot interpret json`);\n // return first 1024 char from the json\n const getMetaData: LoggingMetaData = () => {\n return {json: JSON.stringify(json).substring(0,1024)};\n };\n const error = new RealityDataError(RealityDataStatus.InvalidData, \"Invalid or unknown data\", getMetaData);\n throw error;\n }\n\n const spatialLocation: SpatialLocationAndExtents = { location, worldRange, isGeolocated };\n return spatialLocation;\n }\n /** Gets information to identify the product and engine that create this reality data\n * Will return undefined if cannot be resolved\n * @param rootDocjson root document file in json format\n * @returns information to identify the product and engine that create this reality data\n * @alpha\n */\n public static getPublisherProductInfo(rootDocjson: any): PublisherProductInfo {\n const info: PublisherProductInfo = {product: \"\", engine: \"\", version: \"\"};\n if (rootDocjson && rootDocjson.root) {\n if (rootDocjson.root.SMPublisherInfo) {\n info.product = rootDocjson.root.SMPublisherInfo.Product ? rootDocjson.root.SMPublisherInfo.Product : \"\";\n info.engine = rootDocjson.root.SMPublisherInfo.Publisher ? rootDocjson.root.SMPublisherInfo.Publisher : \"\";\n info.version = rootDocjson.root.SMPublisherInfo[\"Publisher Version\"] ? rootDocjson.root.SMPublisherInfo[\"Publisher Version\"] : \"\" ;\n }\n }\n return info;\n }\n /** Gets information about 3dTile file for this reality data\n * Will return undefined if cannot be resolved\n * @param rootDocjson root document file in json format\n * @returns information about 3dTile file for this reality data\n * @internal\n */\n public static getFileInfo(rootDocjson: any): ThreeDTileFileInfo {\n const info: ThreeDTileFileInfo = {\n rootChildren: rootDocjson?.root?.children?.length ?? 0,\n };\n return info;\n }\n /** Convert a boundingVolume into a range\n * @param boundingVolume the bounding volume to convert\n * @returns the range or undefined if cannot convert\n * @internal\n */\n public static rangeFromBoundingVolume(boundingVolume: any): Range3d | undefined {\n if (undefined === boundingVolume)\n return undefined;\n if (Array.isArray(boundingVolume.box)) {\n const box: number[] = boundingVolume.box;\n const center = Point3d.create(box[0], box[1], box[2]);\n const ux = Vector3d.create(box[3], box[4], box[5]);\n const uy = Vector3d.create(box[6], box[7], box[8]);\n const uz = Vector3d.create(box[9], box[10], box[11]);\n const corners: Point3d[] = [];\n for (let j = 0; j < 2; j++) {\n for (let k = 0; k < 2; k++) {\n for (let l = 0; l < 2; l++) {\n corners.push(center.plus3Scaled(ux, (j ? -1.0 : 1.0), uy, (k ? -1.0 : 1.0), uz, (l ? -1.0 : 1.0)));\n }\n }\n }\n return Range3d.createArray(corners);\n } else if (Array.isArray(boundingVolume.sphere)) {\n const sphere: number[] = boundingVolume.sphere;\n const center = Point3d.create(sphere[0], sphere[1], sphere[2]);\n const radius = sphere[3];\n return Range3d.createXYZXYZ(center.x - radius, center.y - radius, center.z - radius, center.x + radius, center.y + radius, center.z + radius);\n }\n return undefined;\n }\n /** Convert a boundingVolume into a range\n * @internal\n */\n public static maximumSizeFromGeometricTolerance(range: Range3d, geometricError: number): number {\n const minToleranceRatio = .5; // Nominally the error on screen size of a tile. Increasing generally increases performance (fewer draw calls) at expense of higher load times.\n return minToleranceRatio * range.diagonal().magnitude() / geometricError;\n }\n /** Convert a boundingVolume into a range\n * @internal\n */\n public static transformFromJson(jTrans: number[] | undefined): Transform | undefined {\n return (jTrans === undefined) ? undefined : Transform.createOriginAndMatrix(Point3d.create(jTrans[12], jTrans[13], jTrans[14]), Matrix3d.createRowValues(jTrans[0], jTrans[4], jTrans[8], jTrans[1], jTrans[5], jTrans[9], jTrans[2], jTrans[6], jTrans[10]));\n }\n}\n"]}
1
+ {"version":3,"file":"ThreeDTileFormatInterpreter.js","sourceRoot":"","sources":["../../../src/tile/ThreeDTileFormatInterpreter.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\nimport { JsonUtils, Logger, LoggingMetaData, RealityDataStatus } from \"@itwin/core-bentley\";\nimport { Cartographic, EcefLocation } from \"@itwin/core-common\";\nimport { Matrix3d, Point3d, Range3d, Transform, Vector3d } from \"@itwin/core-geometry\";\nimport { FrontendLoggerCategory } from \"../common/FrontendLoggerCategory\";\nimport { PublisherProductInfo, RealityDataError, SpatialLocationAndExtents } from \"../RealityDataSource\";\n\nconst loggerCategory: string = FrontendLoggerCategory.RealityData;\n/** This interface provides information about 3dTile files for this reality data\n * Currently only used for debbugging\n * @internal\n */\nexport interface ThreeDTileFileInfo {\n /** the number of children at the root of this reality data */\n rootChildren?: number;\n}\n/**\n * This class provide methods used to interpret Cesium 3dTile format\n * @internal\n */\nexport class ThreeDTileFormatInterpreter {\n /** Gets reality data spatial location and extents\n * @param json root document file in json format\n * @returns spatial location and volume of interest, in meters, centered around `spatial location`\n * @throws [[RealityDataError]] if source is invalid or cannot be read\n * @internal\n */\n public static getSpatialLocationAndExtents(json: any): SpatialLocationAndExtents {\n const worldRange = new Range3d();\n let isGeolocated = true;\n let location: Cartographic | EcefLocation;\n Logger.logTrace(loggerCategory, \"RealityData getSpatialLocationAndExtents\");\n if (undefined === json?.root) {\n Logger.logWarning(loggerCategory, `Error getSpatialLocationAndExtents - no root in json`);\n // return first 1024 char from the json\n const getMetaData: LoggingMetaData = () => {\n return {json: JSON.stringify(json).substring(0,1024)};\n };\n const error = new RealityDataError(RealityDataStatus.InvalidData, \"Invalid or unknown data - no root in json\", getMetaData);\n throw error;\n }\n try {\n if (undefined !== json?.root?.boundingVolume?.region) {\n const region = JsonUtils.asArray(json.root.boundingVolume.region);\n\n Logger.logTrace(loggerCategory, \"RealityData json.root.boundingVolume.region\", () => ({ ...region }));\n if (undefined === region) {\n Logger.logError(loggerCategory, `Error getSpatialLocationAndExtents - region undefined`);\n throw new TypeError(\"Unable to determine GeoLocation - no root Transform or Region on root.\");\n }\n const ecefLow = (Cartographic.fromRadians({ longitude: region[0], latitude: region[1], height: region[4] })).toEcef();\n const ecefHigh = (Cartographic.fromRadians({ longitude: region[2], latitude: region[3], height: region[5] })).toEcef();\n const ecefRange = Range3d.create(ecefLow, ecefHigh);\n const cartoCenter = Cartographic.fromRadians({ longitude: (region[0] + region[2]) / 2.0, latitude: (region[1] + region[3]) / 2.0, height: (region[4] + region[5]) / 2.0 });\n location = cartoCenter;\n const ecefLocation = EcefLocation.createFromCartographicOrigin(cartoCenter);\n // iModelDb.setEcefLocation(ecefLocation);\n const ecefToWorld = ecefLocation.getTransform().inverse()!;\n worldRange.extendRange(Range3d.fromJSON(ecefToWorld.multiplyRange(ecefRange)));\n } else {\n let worldToEcefTransform = ThreeDTileFormatInterpreter.transformFromJson(json.root.transform);\n\n Logger.logTrace(loggerCategory, \"RealityData json.root.transform\", () => ({ ...worldToEcefTransform }));\n const range = ThreeDTileFormatInterpreter.rangeFromBoundingVolume(json.root.boundingVolume)!;\n if (undefined === worldToEcefTransform)\n worldToEcefTransform = Transform.createIdentity();\n\n const ecefRange = worldToEcefTransform.multiplyRange(range); // range in model -> range in ecef\n const ecefCenter = worldToEcefTransform.multiplyPoint3d(range.center); // range center in model -> range center in ecef\n const cartoCenter = Cartographic.fromEcef(ecefCenter); // ecef center to cartographic center\n const isNotNearEarthSurface = cartoCenter && (cartoCenter.height < -5000); // 5 km under ground!\n const earthCenterToRangeCenterRayLenght = range.center.magnitude();\n\n if (worldToEcefTransform.matrix.isIdentity && (earthCenterToRangeCenterRayLenght < 1.0E5 || isNotNearEarthSurface)) {\n isGeolocated = false;\n worldRange.extendRange(Range3d.fromJSON(ecefRange));\n const centerOfEarth = new EcefLocation({ origin: { x: 0.0, y: 0.0, z: 0.0 }, orientation: { yaw: 0.0, pitch: 0.0, roll: 0.0 } });\n location = centerOfEarth;\n Logger.logTrace(loggerCategory, \"RealityData NOT Geolocated\", () => ({ ...location }));\n } else {\n let ecefLocation = EcefLocation.createFromTransform(worldToEcefTransform);\n // Fix Bug 445630: [RDV][Regression] Orientation of georeferenced Reality Mesh is wrong.\n // Use json.root.transform only if defined and not identity -> otherwise will use a transform computed from cartographic center.\n if (worldToEcefTransform.matrix.isIdentity) {\n // For georeferenced Reality Meshes, its origin is translated to model origin (0,0,0).\n // Apply range center to translate it back to its original position.\n const worldCenter = !worldToEcefTransform.matrix.isIdentity ? range.center : undefined;\n if (cartoCenter)\n ecefLocation = EcefLocation.createFromCartographicOrigin(cartoCenter, worldCenter);\n }\n\n location = ecefLocation;\n Logger.logTrace(loggerCategory, \"RealityData is worldToEcefTransform.matrix.isIdentity\", () => ({ isIdentity: worldToEcefTransform!.matrix.isIdentity }));\n // iModelDb.setEcefLocation(ecefLocation);\n const ecefToWorld = ecefLocation.getTransform().inverse()!;\n worldRange.extendRange(Range3d.fromJSON(ecefToWorld.multiplyRange(ecefRange)));\n Logger.logTrace(loggerCategory, \"RealityData ecefToWorld\", () => ({ ...ecefToWorld }));\n }\n }\n } catch (e) {\n Logger.logWarning(loggerCategory, `Error getSpatialLocationAndExtents - cannot interpret json`);\n // return first 1024 char from the json\n const getMetaData: LoggingMetaData = () => {\n return {json: JSON.stringify(json).substring(0,1024)};\n };\n const error = new RealityDataError(RealityDataStatus.InvalidData, \"Invalid or unknown data\", getMetaData);\n throw error;\n }\n\n const spatialLocation: SpatialLocationAndExtents = { location, worldRange, isGeolocated };\n return spatialLocation;\n }\n /** Gets information to identify the product and engine that create this reality data\n * Will return undefined if cannot be resolved\n * @param rootDocjson root document file in json format\n * @returns information to identify the product and engine that create this reality data\n * @alpha\n */\n public static getPublisherProductInfo(rootDocjson: any): PublisherProductInfo {\n const info: PublisherProductInfo = {product: \"\", engine: \"\", version: \"\"};\n if (rootDocjson && rootDocjson.root) {\n if (rootDocjson.root.SMPublisherInfo) {\n info.product = rootDocjson.root.SMPublisherInfo.Product ? rootDocjson.root.SMPublisherInfo.Product : \"\";\n info.engine = rootDocjson.root.SMPublisherInfo.Publisher ? rootDocjson.root.SMPublisherInfo.Publisher : \"\";\n info.version = rootDocjson.root.SMPublisherInfo[\"Publisher Version\"] ? rootDocjson.root.SMPublisherInfo[\"Publisher Version\"] : \"\" ;\n }\n }\n return info;\n }\n /** Gets information about 3dTile file for this reality data\n * Will return undefined if cannot be resolved\n * @param rootDocjson root document file in json format\n * @returns information about 3dTile file for this reality data\n * @internal\n */\n public static getFileInfo(rootDocjson: any): ThreeDTileFileInfo {\n const info: ThreeDTileFileInfo = {\n rootChildren: rootDocjson?.root?.children?.length ?? 0,\n };\n return info;\n }\n /** Convert a boundingVolume into a range\n * @param boundingVolume the bounding volume to convert\n * @returns the range or undefined if cannot convert\n * @internal\n */\n public static rangeFromBoundingVolume(boundingVolume: any): Range3d | undefined {\n if (undefined === boundingVolume)\n return undefined;\n if (Array.isArray(boundingVolume.box)) {\n const box: number[] = boundingVolume.box;\n const center = Point3d.create(box[0], box[1], box[2]);\n const ux = Vector3d.create(box[3], box[4], box[5]);\n const uy = Vector3d.create(box[6], box[7], box[8]);\n const uz = Vector3d.create(box[9], box[10], box[11]);\n const corners: Point3d[] = [];\n for (let j = 0; j < 2; j++) {\n for (let k = 0; k < 2; k++) {\n for (let l = 0; l < 2; l++) {\n corners.push(center.plus3Scaled(ux, (j ? -1.0 : 1.0), uy, (k ? -1.0 : 1.0), uz, (l ? -1.0 : 1.0)));\n }\n }\n }\n return Range3d.createArray(corners);\n } else if (Array.isArray(boundingVolume.sphere)) {\n const sphere: number[] = boundingVolume.sphere;\n const center = Point3d.create(sphere[0], sphere[1], sphere[2]);\n const radius = sphere[3];\n return Range3d.createXYZXYZ(center.x - radius, center.y - radius, center.z - radius, center.x + radius, center.y + radius, center.z + radius);\n }\n return undefined;\n }\n /** Convert a boundingVolume into a range\n * @internal\n */\n public static maximumSizeFromGeometricTolerance(range: Range3d, geometricError: number): number {\n const minToleranceRatio = .5; // Nominally the error on screen size of a tile. Increasing generally increases performance (fewer draw calls) at expense of higher load times.\n return minToleranceRatio * range.diagonal().magnitude() / geometricError;\n }\n /** Convert a boundingVolume into a range\n * @internal\n */\n public static transformFromJson(jTrans: number[] | undefined): Transform | undefined {\n return (jTrans === undefined) ? undefined : Transform.createOriginAndMatrix(Point3d.create(jTrans[12], jTrans[13], jTrans[14]), Matrix3d.createRowValues(jTrans[0], jTrans[4], jTrans[8], jTrans[1], jTrans[5], jTrans[9], jTrans[2], jTrans[6], jTrans[10]));\n }\n}\n"]}
@@ -17,7 +17,7 @@ import {
17
17
  // @public enum(s) from @itwin/core-frontend
18
18
  ACSDisplayOptions, ACSType, ActivityMessageEndReason, BeButton, BeModifierKeys, ClipEventType, ContextRotationId, CoordSource, CoordSystem, CoordinateLockOverrides, EventHandled, FlashMode, FrontendLoggerCategory, GraphicType, HitDetailType, HitGeomType, HitParentGeomType, HitPriority, HitSource, InputSource, KeyinParseError, LocateAction, LocateFilterStatus, ManipulatorToolEvent, MessageBoxIconType, MessageBoxType, MessageBoxValue, OutputMessageAlert, OutputMessagePriority, OutputMessageType, ParseAndRunResult, SelectionMethod, SelectionMode, SelectionProcessing, SelectionSetEventType, SnapHeat, SnapMode, SnapStatus, StandardViewId, StartOrResume, TileBoundingBoxes, TileGraphicType, TileLoadPriority, TileLoadStatus, TileTreeLoadStatus, TileVisibility, ToolAssistanceImage, ToolAssistanceInputMethod, UniformType, VaryingType, ViewStatus,
19
19
  // @public real(s) from @itwin/core-frontend
20
- AccuDrawHintBuilder, AccuSnap, ActivityMessageDetails, AuxCoordSystem2dState, AuxCoordSystem3dState, AuxCoordSystemSpatialState, AuxCoordSystemState, BeButtonEvent, BeButtonState, BeTouchEvent, BeWheelEvent, BingElevationProvider, BingLocationProvider, CategorySelectorState, ChangeFlags, Cluster, ContextRealityModelState, DecorateContext, Decorations, DisclosedTileTreeSet, DisplayStyle2dState, DisplayStyle3dState, DisplayStyleState, DrawingModelState, DrawingViewState, EditManipulator, ElementLocateManager, ElementPicker, ElementState, EmphasizeElements, EntityState, EventController, FeatureSymbology, FlashSettings, FrustumAnimator, GeometricModel2dState, GeometricModel3dState, GeometricModelState, GlobeAnimator, GraphicBranch, GraphicBuilder, HiliteSet, HitDetail, HitList, IModelConnection, IconSprites, InputCollector, InteractiveTool, IntersectDetail, LocateOptions, LocateResponse, MarginPercent, Marker, MarkerSet, ModelSelectorState, ModelState, NotificationHandler, NotificationManager, NotifyMessageDetails, OffScreenViewport, OrthographicViewState, PerModelCategoryVisibility, PhysicalModelState, Pixel, PrimitiveTool, RenderClipVolume, RenderContext, RenderGraphic, RenderGraphicOwner, RenderSystem, Scene, ScreenViewport, SectionDrawingModelState, SelectionSet, SheetModelState, SheetViewState, SnapDetail, SpatialLocationModelState, SpatialModelState, SpatialViewState, Sprite, SpriteLocation, TentativePoint, Tile, TileAdmin, TileDrawArgs, TileRequest, TileRequestChannel, TileRequestChannelStatistics, TileRequestChannels, TileTree, TileTreeReference, TileUsageMarker, Tiles, Tool, ToolAdmin, ToolAssistance, ToolSettings, TwoWayViewportFrustumSync, TwoWayViewportSync, ViewClipClearTool, ViewClipDecoration, ViewClipDecorationProvider, ViewClipTool, ViewCreator2d, ViewCreator3d, ViewManager, ViewManip, ViewPose, ViewPose2d, ViewPose3d, ViewRect, ViewState, ViewState2d, ViewState3d, ViewTool, ViewingSpace, Viewport, canvasToImageBuffer, canvasToResizedCanvasWithBars, connectViewportFrusta, connectViewportViews, connectViewports, extractImageSourceDimensions, getCompressedJpegFromCanvas, getImageSourceFormatForMimeType, getImageSourceMimeType, imageBufferToBase64EncodedPng, imageBufferToCanvas, imageBufferToPngDataUrl, imageElementFromImageSource, imageElementFromUrl, queryTerrainElevationOffset, readElementGraphics, readGltfGraphics, synchronizeViewportFrusta, synchronizeViewportViews, } from "../core-frontend";
20
+ AccuDrawHintBuilder, AccuSnap, ActivityMessageDetails, AuxCoordSystem2dState, AuxCoordSystem3dState, AuxCoordSystemSpatialState, AuxCoordSystemState, BeButtonEvent, BeButtonState, BeTouchEvent, BeWheelEvent, BingElevationProvider, BingLocationProvider, CategorySelectorState, ChangeFlags, Cluster, ContextRealityModelState, DecorateContext, Decorations, DisclosedTileTreeSet, DisplayStyle2dState, DisplayStyle3dState, DisplayStyleState, DrawingModelState, DrawingViewState, EditManipulator, ElementLocateManager, ElementPicker, ElementState, EmphasizeElements, EntityState, EventController, FeatureSymbology, FlashSettings, FrustumAnimator, GeometricModel2dState, GeometricModel3dState, GeometricModelState, GlobeAnimator, GraphicBranch, GraphicBuilder, HiliteSet, HitDetail, HitList, IModelConnection, IconSprites, InputCollector, InteractiveTool, IntersectDetail, LocateOptions, LocateResponse, MarginPercent, Marker, MarkerSet, ModelSelectorState, ModelState, NotificationHandler, NotificationManager, NotifyMessageDetails, OffScreenViewport, OrthographicViewState, ParticleCollectionBuilder, PerModelCategoryVisibility, PhysicalModelState, Pixel, PrimitiveTool, RenderClipVolume, RenderContext, RenderGraphic, RenderGraphicOwner, RenderSystem, Scene, ScreenViewport, SectionDrawingModelState, SelectionSet, SheetModelState, SheetViewState, SnapDetail, SpatialLocationModelState, SpatialModelState, SpatialViewState, Sprite, SpriteLocation, TentativePoint, Tile, TileAdmin, TileDrawArgs, TileRequest, TileRequestChannel, TileRequestChannelStatistics, TileRequestChannels, TileTree, TileTreeReference, TileUsageMarker, Tiles, Tool, ToolAdmin, ToolAssistance, ToolSettings, TwoWayViewportFrustumSync, TwoWayViewportSync, ViewClipClearTool, ViewClipDecoration, ViewClipDecorationProvider, ViewClipTool, ViewCreator2d, ViewCreator3d, ViewManager, ViewManip, ViewPose, ViewPose2d, ViewPose3d, ViewRect, ViewState, ViewState2d, ViewState3d, ViewTool, ViewingSpace, Viewport, canvasToImageBuffer, canvasToResizedCanvasWithBars, connectViewportFrusta, connectViewportViews, connectViewports, extractImageSourceDimensions, getCompressedJpegFromCanvas, getImageSourceFormatForMimeType, getImageSourceMimeType, imageBufferToBase64EncodedPng, imageBufferToCanvas, imageBufferToPngDataUrl, imageElementFromImageSource, imageElementFromUrl, queryTerrainElevationOffset, readElementGraphics, readGltfGraphics, synchronizeViewportFrusta, synchronizeViewportViews, } from "../core-frontend";
21
21
  import {
22
22
  // @public enum(s) from @itwin/core-common
23
23
  BackgroundFill, BackgroundMapType, BatchType, BisCodeSpec, BriefcaseIdValue, ChangeOpCode, ChangedValueState, ChangesetType, CommonLoggerCategory, ECSqlSystemProperty, ECSqlValueType, ElementGeometryOpcode, FeatureOverrideType, FillDisplay, FillFlags, FontType, GeoCoordStatus, GeometryClass, GeometryStreamFlags, GeometrySummaryVerbosity, GlobeMode, GridOrientationType, HSVConstants, ImageBufferFormat, ImageSourceFormat, LinePixels, MassPropertiesOperation, MonochromeMode, Npc, PlanarClipMaskMode, PlanarClipMaskPriority, QueryRowFormat, Rank, RenderMode, SectionType, SkyBoxImageType, SpatialClassifierInsideDisplay, SpatialClassifierOutsideDisplay, SyncMode, TerrainHeightOriginMode, TextureMapUnits, ThematicDisplayMode, ThematicGradientColorScheme, ThematicGradientMode, ThematicGradientTransparencyMode, TxnAction, TypeOfChange,
@@ -149,6 +149,7 @@ const extensionExports = {
149
149
  OutputMessagePriority,
150
150
  OutputMessageType,
151
151
  ParseAndRunResult,
152
+ ParticleCollectionBuilder,
152
153
  PerModelCategoryVisibility,
153
154
  PhysicalModelState,
154
155
  Pixel,
@@ -1 +1 @@
1
- {"version":3,"file":"ExtensionRuntime.js","sourceRoot":"","sources":["../../../src/extension/ExtensionRuntime.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 Extensions\n */\n\n/* eslint-disable @typescript-eslint/naming-convention */\n/* eslint-disable @itwin/no-internal-barrel-imports */\n/* eslint-disable sort-imports */\n\nimport { ExtensionHost } from \"./ExtensionHost\";\n\nconst globalSymbol = Symbol.for(\"itwin.core.frontend.globals\");\nif ((globalThis as any)[globalSymbol])\n throw new Error(\"Multiple @itwin/core-frontend imports detected!\");\n\n// BEGIN GENERATED CODE\nimport {\n // @public enum(s) from @itwin/core-frontend\n ACSDisplayOptions,\n ACSType,\n ActivityMessageEndReason,\n BeButton,\n BeModifierKeys,\n ClipEventType,\n ContextRotationId,\n CoordSource,\n CoordSystem,\n CoordinateLockOverrides,\n EventHandled,\n FlashMode,\n FrontendLoggerCategory,\n GraphicType,\n HitDetailType,\n HitGeomType,\n HitParentGeomType,\n HitPriority,\n HitSource,\n InputSource,\n KeyinParseError,\n LocateAction,\n LocateFilterStatus,\n ManipulatorToolEvent,\n MessageBoxIconType,\n MessageBoxType,\n MessageBoxValue,\n OutputMessageAlert,\n OutputMessagePriority,\n OutputMessageType,\n ParseAndRunResult,\n SelectionMethod,\n SelectionMode,\n SelectionProcessing,\n SelectionSetEventType,\n SnapHeat,\n SnapMode,\n SnapStatus,\n StandardViewId,\n StartOrResume,\n TileBoundingBoxes,\n TileGraphicType,\n TileLoadPriority,\n TileLoadStatus,\n TileTreeLoadStatus,\n TileVisibility,\n ToolAssistanceImage,\n ToolAssistanceInputMethod,\n UniformType,\n VaryingType,\n ViewStatus,\n // @public real(s) from @itwin/core-frontend\n AccuDrawHintBuilder,\n AccuSnap,\n ActivityMessageDetails,\n AuxCoordSystem2dState,\n AuxCoordSystem3dState,\n AuxCoordSystemSpatialState,\n AuxCoordSystemState,\n BeButtonEvent,\n BeButtonState,\n BeTouchEvent,\n BeWheelEvent,\n BingElevationProvider,\n BingLocationProvider,\n CategorySelectorState,\n ChangeFlags,\n Cluster,\n ContextRealityModelState,\n DecorateContext,\n Decorations,\n DisclosedTileTreeSet,\n DisplayStyle2dState,\n DisplayStyle3dState,\n DisplayStyleState,\n DrawingModelState,\n DrawingViewState,\n EditManipulator,\n ElementLocateManager,\n ElementPicker,\n ElementState,\n EmphasizeElements,\n EntityState,\n EventController,\n FeatureSymbology,\n FlashSettings,\n FrustumAnimator,\n GeometricModel2dState,\n GeometricModel3dState,\n GeometricModelState,\n GlobeAnimator,\n GraphicBranch,\n GraphicBuilder,\n HiliteSet,\n HitDetail,\n HitList,\n IModelConnection,\n IconSprites,\n InputCollector,\n InteractiveTool,\n IntersectDetail,\n LocateOptions,\n LocateResponse,\n MarginPercent,\n Marker,\n MarkerSet,\n ModelSelectorState,\n ModelState,\n NotificationHandler,\n NotificationManager,\n NotifyMessageDetails,\n OffScreenViewport,\n OrthographicViewState,\n PerModelCategoryVisibility,\n PhysicalModelState,\n Pixel,\n PrimitiveTool,\n RenderClipVolume,\n RenderContext,\n RenderGraphic,\n RenderGraphicOwner,\n RenderSystem,\n Scene,\n ScreenViewport,\n SectionDrawingModelState,\n SelectionSet,\n SheetModelState,\n SheetViewState,\n SnapDetail,\n SpatialLocationModelState,\n SpatialModelState,\n SpatialViewState,\n Sprite,\n SpriteLocation,\n TentativePoint,\n Tile,\n TileAdmin,\n TileDrawArgs,\n TileRequest,\n TileRequestChannel,\n TileRequestChannelStatistics,\n TileRequestChannels,\n TileTree,\n TileTreeReference,\n TileUsageMarker,\n Tiles,\n Tool,\n ToolAdmin,\n ToolAssistance,\n ToolSettings,\n TwoWayViewportFrustumSync,\n TwoWayViewportSync,\n ViewClipClearTool,\n ViewClipDecoration,\n ViewClipDecorationProvider,\n ViewClipTool,\n ViewCreator2d,\n ViewCreator3d,\n ViewManager,\n ViewManip,\n ViewPose,\n ViewPose2d,\n ViewPose3d,\n ViewRect,\n ViewState,\n ViewState2d,\n ViewState3d,\n ViewTool,\n ViewingSpace,\n Viewport,\n canvasToImageBuffer,\n canvasToResizedCanvasWithBars,\n connectViewportFrusta,\n connectViewportViews,\n connectViewports,\n extractImageSourceDimensions,\n getCompressedJpegFromCanvas,\n getImageSourceFormatForMimeType,\n getImageSourceMimeType,\n imageBufferToBase64EncodedPng,\n imageBufferToCanvas,\n imageBufferToPngDataUrl,\n imageElementFromImageSource,\n imageElementFromUrl,\n queryTerrainElevationOffset,\n readElementGraphics,\n readGltfGraphics,\n synchronizeViewportFrusta,\n synchronizeViewportViews,\n} from \"../core-frontend\";\n\nimport {\n // @public enum(s) from @itwin/core-common\n BackgroundFill,\n BackgroundMapType,\n BatchType,\n BisCodeSpec,\n BriefcaseIdValue,\n ChangeOpCode,\n ChangedValueState,\n ChangesetType,\n CommonLoggerCategory,\n ECSqlSystemProperty,\n ECSqlValueType,\n ElementGeometryOpcode,\n FeatureOverrideType,\n FillDisplay,\n FillFlags,\n FontType,\n GeoCoordStatus,\n GeometryClass,\n GeometryStreamFlags,\n GeometrySummaryVerbosity,\n GlobeMode,\n GridOrientationType,\n HSVConstants,\n ImageBufferFormat,\n ImageSourceFormat,\n LinePixels,\n MassPropertiesOperation,\n MonochromeMode,\n Npc,\n PlanarClipMaskMode,\n PlanarClipMaskPriority,\n QueryRowFormat,\n Rank,\n RenderMode,\n SectionType,\n SkyBoxImageType,\n SpatialClassifierInsideDisplay,\n SpatialClassifierOutsideDisplay,\n SyncMode,\n TerrainHeightOriginMode,\n TextureMapUnits,\n ThematicDisplayMode,\n ThematicGradientColorScheme,\n ThematicGradientMode,\n ThematicGradientTransparencyMode,\n TxnAction,\n TypeOfChange,\n // @public real(s) from @itwin/core-common\n ClipIntersectionStyle,\n ColorByName,\n ColorDef,\n FrustumPlanes,\n QParams2d,\n QParams3d,\n QPoint2d,\n QPoint2dBuffer,\n QPoint2dBufferBuilder,\n QPoint2dList,\n QPoint3d,\n QPoint3dBuffer,\n QPoint3dBufferBuilder,\n QPoint3dList,\n Quantization,\n} from \"@itwin/core-common\";\n\nconst extensionExports = {\n ACSDisplayOptions,\n ACSType,\n AccuDrawHintBuilder,\n AccuSnap,\n ActivityMessageDetails,\n ActivityMessageEndReason,\n AuxCoordSystem2dState,\n AuxCoordSystem3dState,\n AuxCoordSystemSpatialState,\n AuxCoordSystemState,\n BackgroundFill,\n BackgroundMapType,\n BatchType,\n BeButton,\n BeButtonEvent,\n BeButtonState,\n BeModifierKeys,\n BeTouchEvent,\n BeWheelEvent,\n BingElevationProvider,\n BingLocationProvider,\n BisCodeSpec,\n BriefcaseIdValue,\n CategorySelectorState,\n ChangeFlags,\n ChangeOpCode,\n ChangedValueState,\n ChangesetType,\n ClipEventType,\n ClipIntersectionStyle,\n Cluster,\n ColorByName,\n ColorDef,\n CommonLoggerCategory,\n ContextRealityModelState,\n ContextRotationId,\n CoordSource,\n CoordSystem,\n CoordinateLockOverrides,\n DecorateContext,\n Decorations,\n DisclosedTileTreeSet,\n DisplayStyle2dState,\n DisplayStyle3dState,\n DisplayStyleState,\n DrawingModelState,\n DrawingViewState,\n ECSqlSystemProperty,\n ECSqlValueType,\n EditManipulator,\n ElementGeometryOpcode,\n ElementLocateManager,\n ElementPicker,\n ElementState,\n EmphasizeElements,\n EntityState,\n EventController,\n EventHandled,\n FeatureOverrideType,\n FeatureSymbology,\n FillDisplay,\n FillFlags,\n FlashMode,\n FlashSettings,\n FontType,\n FrontendLoggerCategory,\n FrustumAnimator,\n FrustumPlanes,\n GeoCoordStatus,\n GeometricModel2dState,\n GeometricModel3dState,\n GeometricModelState,\n GeometryClass,\n GeometryStreamFlags,\n GeometrySummaryVerbosity,\n GlobeAnimator,\n GlobeMode,\n GraphicBranch,\n GraphicBuilder,\n GraphicType,\n GridOrientationType,\n HSVConstants,\n HiliteSet,\n HitDetail,\n HitDetailType,\n HitGeomType,\n HitList,\n HitParentGeomType,\n HitPriority,\n HitSource,\n IModelConnection,\n IconSprites,\n ImageBufferFormat,\n ImageSourceFormat,\n InputCollector,\n InputSource,\n InteractiveTool,\n IntersectDetail,\n KeyinParseError,\n LinePixels,\n LocateAction,\n LocateFilterStatus,\n LocateOptions,\n LocateResponse,\n ManipulatorToolEvent,\n MarginPercent,\n Marker,\n MarkerSet,\n MassPropertiesOperation,\n MessageBoxIconType,\n MessageBoxType,\n MessageBoxValue,\n ModelSelectorState,\n ModelState,\n MonochromeMode,\n NotificationHandler,\n NotificationManager,\n NotifyMessageDetails,\n Npc,\n OffScreenViewport,\n OrthographicViewState,\n OutputMessageAlert,\n OutputMessagePriority,\n OutputMessageType,\n ParseAndRunResult,\n PerModelCategoryVisibility,\n PhysicalModelState,\n Pixel,\n PlanarClipMaskMode,\n PlanarClipMaskPriority,\n PrimitiveTool,\n QParams2d,\n QParams3d,\n QPoint2d,\n QPoint2dBuffer,\n QPoint2dBufferBuilder,\n QPoint2dList,\n QPoint3d,\n QPoint3dBuffer,\n QPoint3dBufferBuilder,\n QPoint3dList,\n Quantization,\n QueryRowFormat,\n Rank,\n RenderClipVolume,\n RenderContext,\n RenderGraphic,\n RenderGraphicOwner,\n RenderMode,\n RenderSystem,\n Scene,\n ScreenViewport,\n SectionDrawingModelState,\n SectionType,\n SelectionMethod,\n SelectionMode,\n SelectionProcessing,\n SelectionSet,\n SelectionSetEventType,\n SheetModelState,\n SheetViewState,\n SkyBoxImageType,\n SnapDetail,\n SnapHeat,\n SnapMode,\n SnapStatus,\n SpatialClassifierInsideDisplay,\n SpatialClassifierOutsideDisplay,\n SpatialLocationModelState,\n SpatialModelState,\n SpatialViewState,\n Sprite,\n SpriteLocation,\n StandardViewId,\n StartOrResume,\n SyncMode,\n TentativePoint,\n TerrainHeightOriginMode,\n TextureMapUnits,\n ThematicDisplayMode,\n ThematicGradientColorScheme,\n ThematicGradientMode,\n ThematicGradientTransparencyMode,\n Tile,\n TileAdmin,\n TileBoundingBoxes,\n TileDrawArgs,\n TileGraphicType,\n TileLoadPriority,\n TileLoadStatus,\n TileRequest,\n TileRequestChannel,\n TileRequestChannelStatistics,\n TileRequestChannels,\n TileTree,\n TileTreeLoadStatus,\n TileTreeReference,\n TileUsageMarker,\n TileVisibility,\n Tiles,\n Tool,\n ToolAdmin,\n ToolAssistance,\n ToolAssistanceImage,\n ToolAssistanceInputMethod,\n ToolSettings,\n TwoWayViewportFrustumSync,\n TwoWayViewportSync,\n TxnAction,\n TypeOfChange,\n UniformType,\n VaryingType,\n ViewClipClearTool,\n ViewClipDecoration,\n ViewClipDecorationProvider,\n ViewClipTool,\n ViewCreator2d,\n ViewCreator3d,\n ViewManager,\n ViewManip,\n ViewPose,\n ViewPose2d,\n ViewPose3d,\n ViewRect,\n ViewState,\n ViewState2d,\n ViewState3d,\n ViewStatus,\n ViewTool,\n ViewingSpace,\n Viewport,\n canvasToImageBuffer,\n canvasToResizedCanvasWithBars,\n connectViewportFrusta,\n connectViewportViews,\n connectViewports,\n extractImageSourceDimensions,\n getCompressedJpegFromCanvas,\n getImageSourceFormatForMimeType,\n getImageSourceMimeType,\n imageBufferToBase64EncodedPng,\n imageBufferToCanvas,\n imageBufferToPngDataUrl,\n imageElementFromImageSource,\n imageElementFromUrl,\n queryTerrainElevationOffset,\n readElementGraphics,\n readGltfGraphics,\n synchronizeViewportFrusta,\n synchronizeViewportViews,\n};\n\n// END GENERATED CODE\n\nconst getExtensionApi = (_id: string) => {\n return {\n exports: {\n // exceptions\n ExtensionHost,\n // automated\n ...extensionExports,\n },\n };\n};\n\n(globalThis as any)[globalSymbol] = {\n getExtensionApi,\n};\n"]}
1
+ {"version":3,"file":"ExtensionRuntime.js","sourceRoot":"","sources":["../../../src/extension/ExtensionRuntime.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 Extensions\n */\n\n/* eslint-disable @typescript-eslint/naming-convention */\n/* eslint-disable @itwin/no-internal-barrel-imports */\n/* eslint-disable sort-imports */\n\nimport { ExtensionHost } from \"./ExtensionHost\";\n\nconst globalSymbol = Symbol.for(\"itwin.core.frontend.globals\");\nif ((globalThis as any)[globalSymbol])\n throw new Error(\"Multiple @itwin/core-frontend imports detected!\");\n\n// BEGIN GENERATED CODE\nimport {\n // @public enum(s) from @itwin/core-frontend\n ACSDisplayOptions,\n ACSType,\n ActivityMessageEndReason,\n BeButton,\n BeModifierKeys,\n ClipEventType,\n ContextRotationId,\n CoordSource,\n CoordSystem,\n CoordinateLockOverrides,\n EventHandled,\n FlashMode,\n FrontendLoggerCategory,\n GraphicType,\n HitDetailType,\n HitGeomType,\n HitParentGeomType,\n HitPriority,\n HitSource,\n InputSource,\n KeyinParseError,\n LocateAction,\n LocateFilterStatus,\n ManipulatorToolEvent,\n MessageBoxIconType,\n MessageBoxType,\n MessageBoxValue,\n OutputMessageAlert,\n OutputMessagePriority,\n OutputMessageType,\n ParseAndRunResult,\n SelectionMethod,\n SelectionMode,\n SelectionProcessing,\n SelectionSetEventType,\n SnapHeat,\n SnapMode,\n SnapStatus,\n StandardViewId,\n StartOrResume,\n TileBoundingBoxes,\n TileGraphicType,\n TileLoadPriority,\n TileLoadStatus,\n TileTreeLoadStatus,\n TileVisibility,\n ToolAssistanceImage,\n ToolAssistanceInputMethod,\n UniformType,\n VaryingType,\n ViewStatus,\n // @public real(s) from @itwin/core-frontend\n AccuDrawHintBuilder,\n AccuSnap,\n ActivityMessageDetails,\n AuxCoordSystem2dState,\n AuxCoordSystem3dState,\n AuxCoordSystemSpatialState,\n AuxCoordSystemState,\n BeButtonEvent,\n BeButtonState,\n BeTouchEvent,\n BeWheelEvent,\n BingElevationProvider,\n BingLocationProvider,\n CategorySelectorState,\n ChangeFlags,\n Cluster,\n ContextRealityModelState,\n DecorateContext,\n Decorations,\n DisclosedTileTreeSet,\n DisplayStyle2dState,\n DisplayStyle3dState,\n DisplayStyleState,\n DrawingModelState,\n DrawingViewState,\n EditManipulator,\n ElementLocateManager,\n ElementPicker,\n ElementState,\n EmphasizeElements,\n EntityState,\n EventController,\n FeatureSymbology,\n FlashSettings,\n FrustumAnimator,\n GeometricModel2dState,\n GeometricModel3dState,\n GeometricModelState,\n GlobeAnimator,\n GraphicBranch,\n GraphicBuilder,\n HiliteSet,\n HitDetail,\n HitList,\n IModelConnection,\n IconSprites,\n InputCollector,\n InteractiveTool,\n IntersectDetail,\n LocateOptions,\n LocateResponse,\n MarginPercent,\n Marker,\n MarkerSet,\n ModelSelectorState,\n ModelState,\n NotificationHandler,\n NotificationManager,\n NotifyMessageDetails,\n OffScreenViewport,\n OrthographicViewState,\n ParticleCollectionBuilder,\n PerModelCategoryVisibility,\n PhysicalModelState,\n Pixel,\n PrimitiveTool,\n RenderClipVolume,\n RenderContext,\n RenderGraphic,\n RenderGraphicOwner,\n RenderSystem,\n Scene,\n ScreenViewport,\n SectionDrawingModelState,\n SelectionSet,\n SheetModelState,\n SheetViewState,\n SnapDetail,\n SpatialLocationModelState,\n SpatialModelState,\n SpatialViewState,\n Sprite,\n SpriteLocation,\n TentativePoint,\n Tile,\n TileAdmin,\n TileDrawArgs,\n TileRequest,\n TileRequestChannel,\n TileRequestChannelStatistics,\n TileRequestChannels,\n TileTree,\n TileTreeReference,\n TileUsageMarker,\n Tiles,\n Tool,\n ToolAdmin,\n ToolAssistance,\n ToolSettings,\n TwoWayViewportFrustumSync,\n TwoWayViewportSync,\n ViewClipClearTool,\n ViewClipDecoration,\n ViewClipDecorationProvider,\n ViewClipTool,\n ViewCreator2d,\n ViewCreator3d,\n ViewManager,\n ViewManip,\n ViewPose,\n ViewPose2d,\n ViewPose3d,\n ViewRect,\n ViewState,\n ViewState2d,\n ViewState3d,\n ViewTool,\n ViewingSpace,\n Viewport,\n canvasToImageBuffer,\n canvasToResizedCanvasWithBars,\n connectViewportFrusta,\n connectViewportViews,\n connectViewports,\n extractImageSourceDimensions,\n getCompressedJpegFromCanvas,\n getImageSourceFormatForMimeType,\n getImageSourceMimeType,\n imageBufferToBase64EncodedPng,\n imageBufferToCanvas,\n imageBufferToPngDataUrl,\n imageElementFromImageSource,\n imageElementFromUrl,\n queryTerrainElevationOffset,\n readElementGraphics,\n readGltfGraphics,\n synchronizeViewportFrusta,\n synchronizeViewportViews,\n} from \"../core-frontend\";\n\nimport {\n // @public enum(s) from @itwin/core-common\n BackgroundFill,\n BackgroundMapType,\n BatchType,\n BisCodeSpec,\n BriefcaseIdValue,\n ChangeOpCode,\n ChangedValueState,\n ChangesetType,\n CommonLoggerCategory,\n ECSqlSystemProperty,\n ECSqlValueType,\n ElementGeometryOpcode,\n FeatureOverrideType,\n FillDisplay,\n FillFlags,\n FontType,\n GeoCoordStatus,\n GeometryClass,\n GeometryStreamFlags,\n GeometrySummaryVerbosity,\n GlobeMode,\n GridOrientationType,\n HSVConstants,\n ImageBufferFormat,\n ImageSourceFormat,\n LinePixels,\n MassPropertiesOperation,\n MonochromeMode,\n Npc,\n PlanarClipMaskMode,\n PlanarClipMaskPriority,\n QueryRowFormat,\n Rank,\n RenderMode,\n SectionType,\n SkyBoxImageType,\n SpatialClassifierInsideDisplay,\n SpatialClassifierOutsideDisplay,\n SyncMode,\n TerrainHeightOriginMode,\n TextureMapUnits,\n ThematicDisplayMode,\n ThematicGradientColorScheme,\n ThematicGradientMode,\n ThematicGradientTransparencyMode,\n TxnAction,\n TypeOfChange,\n // @public real(s) from @itwin/core-common\n ClipIntersectionStyle,\n ColorByName,\n ColorDef,\n FrustumPlanes,\n QParams2d,\n QParams3d,\n QPoint2d,\n QPoint2dBuffer,\n QPoint2dBufferBuilder,\n QPoint2dList,\n QPoint3d,\n QPoint3dBuffer,\n QPoint3dBufferBuilder,\n QPoint3dList,\n Quantization,\n} from \"@itwin/core-common\";\n\nconst extensionExports = {\n ACSDisplayOptions,\n ACSType,\n AccuDrawHintBuilder,\n AccuSnap,\n ActivityMessageDetails,\n ActivityMessageEndReason,\n AuxCoordSystem2dState,\n AuxCoordSystem3dState,\n AuxCoordSystemSpatialState,\n AuxCoordSystemState,\n BackgroundFill,\n BackgroundMapType,\n BatchType,\n BeButton,\n BeButtonEvent,\n BeButtonState,\n BeModifierKeys,\n BeTouchEvent,\n BeWheelEvent,\n BingElevationProvider,\n BingLocationProvider,\n BisCodeSpec,\n BriefcaseIdValue,\n CategorySelectorState,\n ChangeFlags,\n ChangeOpCode,\n ChangedValueState,\n ChangesetType,\n ClipEventType,\n ClipIntersectionStyle,\n Cluster,\n ColorByName,\n ColorDef,\n CommonLoggerCategory,\n ContextRealityModelState,\n ContextRotationId,\n CoordSource,\n CoordSystem,\n CoordinateLockOverrides,\n DecorateContext,\n Decorations,\n DisclosedTileTreeSet,\n DisplayStyle2dState,\n DisplayStyle3dState,\n DisplayStyleState,\n DrawingModelState,\n DrawingViewState,\n ECSqlSystemProperty,\n ECSqlValueType,\n EditManipulator,\n ElementGeometryOpcode,\n ElementLocateManager,\n ElementPicker,\n ElementState,\n EmphasizeElements,\n EntityState,\n EventController,\n EventHandled,\n FeatureOverrideType,\n FeatureSymbology,\n FillDisplay,\n FillFlags,\n FlashMode,\n FlashSettings,\n FontType,\n FrontendLoggerCategory,\n FrustumAnimator,\n FrustumPlanes,\n GeoCoordStatus,\n GeometricModel2dState,\n GeometricModel3dState,\n GeometricModelState,\n GeometryClass,\n GeometryStreamFlags,\n GeometrySummaryVerbosity,\n GlobeAnimator,\n GlobeMode,\n GraphicBranch,\n GraphicBuilder,\n GraphicType,\n GridOrientationType,\n HSVConstants,\n HiliteSet,\n HitDetail,\n HitDetailType,\n HitGeomType,\n HitList,\n HitParentGeomType,\n HitPriority,\n HitSource,\n IModelConnection,\n IconSprites,\n ImageBufferFormat,\n ImageSourceFormat,\n InputCollector,\n InputSource,\n InteractiveTool,\n IntersectDetail,\n KeyinParseError,\n LinePixels,\n LocateAction,\n LocateFilterStatus,\n LocateOptions,\n LocateResponse,\n ManipulatorToolEvent,\n MarginPercent,\n Marker,\n MarkerSet,\n MassPropertiesOperation,\n MessageBoxIconType,\n MessageBoxType,\n MessageBoxValue,\n ModelSelectorState,\n ModelState,\n MonochromeMode,\n NotificationHandler,\n NotificationManager,\n NotifyMessageDetails,\n Npc,\n OffScreenViewport,\n OrthographicViewState,\n OutputMessageAlert,\n OutputMessagePriority,\n OutputMessageType,\n ParseAndRunResult,\n ParticleCollectionBuilder,\n PerModelCategoryVisibility,\n PhysicalModelState,\n Pixel,\n PlanarClipMaskMode,\n PlanarClipMaskPriority,\n PrimitiveTool,\n QParams2d,\n QParams3d,\n QPoint2d,\n QPoint2dBuffer,\n QPoint2dBufferBuilder,\n QPoint2dList,\n QPoint3d,\n QPoint3dBuffer,\n QPoint3dBufferBuilder,\n QPoint3dList,\n Quantization,\n QueryRowFormat,\n Rank,\n RenderClipVolume,\n RenderContext,\n RenderGraphic,\n RenderGraphicOwner,\n RenderMode,\n RenderSystem,\n Scene,\n ScreenViewport,\n SectionDrawingModelState,\n SectionType,\n SelectionMethod,\n SelectionMode,\n SelectionProcessing,\n SelectionSet,\n SelectionSetEventType,\n SheetModelState,\n SheetViewState,\n SkyBoxImageType,\n SnapDetail,\n SnapHeat,\n SnapMode,\n SnapStatus,\n SpatialClassifierInsideDisplay,\n SpatialClassifierOutsideDisplay,\n SpatialLocationModelState,\n SpatialModelState,\n SpatialViewState,\n Sprite,\n SpriteLocation,\n StandardViewId,\n StartOrResume,\n SyncMode,\n TentativePoint,\n TerrainHeightOriginMode,\n TextureMapUnits,\n ThematicDisplayMode,\n ThematicGradientColorScheme,\n ThematicGradientMode,\n ThematicGradientTransparencyMode,\n Tile,\n TileAdmin,\n TileBoundingBoxes,\n TileDrawArgs,\n TileGraphicType,\n TileLoadPriority,\n TileLoadStatus,\n TileRequest,\n TileRequestChannel,\n TileRequestChannelStatistics,\n TileRequestChannels,\n TileTree,\n TileTreeLoadStatus,\n TileTreeReference,\n TileUsageMarker,\n TileVisibility,\n Tiles,\n Tool,\n ToolAdmin,\n ToolAssistance,\n ToolAssistanceImage,\n ToolAssistanceInputMethod,\n ToolSettings,\n TwoWayViewportFrustumSync,\n TwoWayViewportSync,\n TxnAction,\n TypeOfChange,\n UniformType,\n VaryingType,\n ViewClipClearTool,\n ViewClipDecoration,\n ViewClipDecorationProvider,\n ViewClipTool,\n ViewCreator2d,\n ViewCreator3d,\n ViewManager,\n ViewManip,\n ViewPose,\n ViewPose2d,\n ViewPose3d,\n ViewRect,\n ViewState,\n ViewState2d,\n ViewState3d,\n ViewStatus,\n ViewTool,\n ViewingSpace,\n Viewport,\n canvasToImageBuffer,\n canvasToResizedCanvasWithBars,\n connectViewportFrusta,\n connectViewportViews,\n connectViewports,\n extractImageSourceDimensions,\n getCompressedJpegFromCanvas,\n getImageSourceFormatForMimeType,\n getImageSourceMimeType,\n imageBufferToBase64EncodedPng,\n imageBufferToCanvas,\n imageBufferToPngDataUrl,\n imageElementFromImageSource,\n imageElementFromUrl,\n queryTerrainElevationOffset,\n readElementGraphics,\n readGltfGraphics,\n synchronizeViewportFrusta,\n synchronizeViewportViews,\n};\n\n// END GENERATED CODE\n\nconst getExtensionApi = (_id: string) => {\n return {\n exports: {\n // exceptions\n ExtensionHost,\n // automated\n ...extensionExports,\n },\n };\n};\n\n(globalThis as any)[globalSymbol] = {\n getExtensionApi,\n};\n"]}
@@ -83,7 +83,10 @@ export interface ParticleCollectionBuilder {
83
83
  */
84
84
  finish: () => RenderGraphic | undefined;
85
85
  }
86
- /** @public */
86
+ /**
87
+ * @public
88
+ * @extensions
89
+ */
87
90
  export declare namespace ParticleCollectionBuilder {
88
91
  /** Creates a new ParticleCollectionBuilder.
89
92
  * @throws Error if size is not greater than zero.
@@ -1 +1 @@
1
- {"version":3,"file":"ParticleCollectionBuilder.d.ts","sourceRoot":"","sources":["../../../src/render/ParticleCollectionBuilder.ts"],"names":[],"mappings":"AAIA;;GAEG;AAEH,OAAO,EAAE,UAAU,EAAE,MAAM,qBAAqB,CAAC;AACjD,OAAO,EAAE,QAAQ,EAAkD,KAAK,EAAE,MAAM,EAAE,MAAM,sBAAsB,CAAC;AAC/G,OAAO,EAC8G,aAAa,EACjI,MAAM,oBAAoB,CAAC;AAC5B,OAAO,EAAE,QAAQ,EAAE,MAAM,aAAa,CAAC;AACvC,OAAO,EAAE,aAAa,EAAE,MAAM,iBAAiB,CAAC;AAOhD;;;GAGG;AACH,MAAM,WAAW,+BAA+B;IAC9C;;;OAGG;IACH,OAAO,EAAE,aAAa,CAAC;IAEvB;;OAEG;IACH,IAAI,EAAE,KAAK,GAAG,MAAM,CAAC;IAErB,uGAAuG;IACvG,YAAY,CAAC,EAAE,MAAM,CAAC;IAEtB,yFAAyF;IACzF,MAAM,CAAC,EAAE,MAAM,CAAC;IAEhB;;OAEG;IACH,UAAU,CAAC,EAAE,UAAU,CAAC;IAExB,yDAAyD;IACzD,QAAQ,EAAE,QAAQ,CAAC;IAEnB;;;OAGG;IACH,YAAY,CAAC,EAAE,OAAO,CAAC;CACxB;AAED;;;;GAIG;AACH,MAAM,WAAW,aAAc,SAAQ,MAAM;IAC3C;;OAEG;IACH,IAAI,CAAC,EAAE,KAAK,GAAG,MAAM,CAAC;IAEtB,6KAA6K;IAC7K,YAAY,CAAC,EAAE,MAAM,CAAC;IAEtB,sIAAsI;IACtI,cAAc,CAAC,EAAE,QAAQ,CAAC;CAC3B;AAED;;;;;;;;;;;;GAYG;AACH,MAAM,WAAW,yBAAyB;IACxC;;OAEG;IACH,YAAY,EAAE,MAAM,CAAC;IAErB,iIAAiI;IACjI,IAAI,EAAE,KAAK,CAAC;IAEZ;;;;OAIG;IACH,WAAW,EAAE,CAAC,QAAQ,EAAE,aAAa,KAAK,IAAI,CAAC;IAE/C;;;OAGG;IACH,MAAM,EAAE,MAAM,aAAa,GAAG,SAAS,CAAC;CACzC;AAED,cAAc;AACd,yBAAiB,yBAAyB,CAAC;IACzC;;OAEG;IACH,SAAgB,MAAM,CAAC,MAAM,EAAE,+BAA+B,GAAG,yBAAyB,CAEzF;CACF"}
1
+ {"version":3,"file":"ParticleCollectionBuilder.d.ts","sourceRoot":"","sources":["../../../src/render/ParticleCollectionBuilder.ts"],"names":[],"mappings":"AAIA;;GAEG;AAEH,OAAO,EAAE,UAAU,EAAE,MAAM,qBAAqB,CAAC;AACjD,OAAO,EAAE,QAAQ,EAAkD,KAAK,EAAE,MAAM,EAAE,MAAM,sBAAsB,CAAC;AAC/G,OAAO,EAC8G,aAAa,EACjI,MAAM,oBAAoB,CAAC;AAC5B,OAAO,EAAE,QAAQ,EAAE,MAAM,aAAa,CAAC;AACvC,OAAO,EAAE,aAAa,EAAE,MAAM,iBAAiB,CAAC;AAOhD;;;GAGG;AACH,MAAM,WAAW,+BAA+B;IAC9C;;;OAGG;IACH,OAAO,EAAE,aAAa,CAAC;IAEvB;;OAEG;IACH,IAAI,EAAE,KAAK,GAAG,MAAM,CAAC;IAErB,uGAAuG;IACvG,YAAY,CAAC,EAAE,MAAM,CAAC;IAEtB,yFAAyF;IACzF,MAAM,CAAC,EAAE,MAAM,CAAC;IAEhB;;OAEG;IACH,UAAU,CAAC,EAAE,UAAU,CAAC;IAExB,yDAAyD;IACzD,QAAQ,EAAE,QAAQ,CAAC;IAEnB;;;OAGG;IACH,YAAY,CAAC,EAAE,OAAO,CAAC;CACxB;AAED;;;;GAIG;AACH,MAAM,WAAW,aAAc,SAAQ,MAAM;IAC3C;;OAEG;IACH,IAAI,CAAC,EAAE,KAAK,GAAG,MAAM,CAAC;IAEtB,6KAA6K;IAC7K,YAAY,CAAC,EAAE,MAAM,CAAC;IAEtB,sIAAsI;IACtI,cAAc,CAAC,EAAE,QAAQ,CAAC;CAC3B;AAED;;;;;;;;;;;;GAYG;AACH,MAAM,WAAW,yBAAyB;IACxC;;OAEG;IACH,YAAY,EAAE,MAAM,CAAC;IAErB,iIAAiI;IACjI,IAAI,EAAE,KAAK,CAAC;IAEZ;;;;OAIG;IACH,WAAW,EAAE,CAAC,QAAQ,EAAE,aAAa,KAAK,IAAI,CAAC;IAE/C;;;OAGG;IACH,MAAM,EAAE,MAAM,aAAa,GAAG,SAAS,CAAC;CACzC;AAED;;;GAGG;AACH,yBAAiB,yBAAyB,CAAC;IACzC;;OAEG;IACH,SAAgB,MAAM,CAAC,MAAM,EAAE,+BAA+B,GAAG,yBAAyB,CAEzF;CACF"}
@@ -10,7 +10,10 @@ import { ColorDef, ColorIndex, Feature, FeatureIndex, FeatureTable, FillFlags, P
10
10
  import { GraphicBranch } from "./GraphicBranch";
11
11
  import { DisplayParams } from "../common/render/primitives/DisplayParams";
12
12
  import { createMeshParams } from "./primitives/VertexTableBuilder";
13
- /** @public */
13
+ /**
14
+ * @public
15
+ * @extensions
16
+ */
14
17
  export var ParticleCollectionBuilder;
15
18
  (function (ParticleCollectionBuilder) {
16
19
  /** Creates a new ParticleCollectionBuilder.