@itwin/core-frontend 5.9.0-dev.1 → 5.9.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.
- package/CHANGELOG.md +29 -1
- package/lib/cjs/BriefcaseConnection.d.ts +4 -1
- package/lib/cjs/BriefcaseConnection.d.ts.map +1 -1
- package/lib/cjs/BriefcaseConnection.js +6 -3
- package/lib/cjs/BriefcaseConnection.js.map +1 -1
- package/lib/cjs/BriefcaseTxns.d.ts +58 -1
- package/lib/cjs/BriefcaseTxns.d.ts.map +1 -1
- package/lib/cjs/BriefcaseTxns.js +65 -0
- package/lib/cjs/BriefcaseTxns.js.map +1 -1
- package/lib/cjs/ContextRealityModelState.d.ts +2 -0
- package/lib/cjs/ContextRealityModelState.d.ts.map +1 -1
- package/lib/cjs/ContextRealityModelState.js +4 -0
- package/lib/cjs/ContextRealityModelState.js.map +1 -1
- package/lib/cjs/SheetViewState.d.ts.map +1 -1
- package/lib/cjs/SheetViewState.js +4 -3
- package/lib/cjs/SheetViewState.js.map +1 -1
- package/lib/cjs/Viewport.d.ts.map +1 -1
- package/lib/cjs/Viewport.js +14 -1
- package/lib/cjs/Viewport.js.map +1 -1
- package/lib/cjs/internal/SheetViewAttachments.d.ts +1 -1
- package/lib/cjs/internal/SheetViewAttachments.d.ts.map +1 -1
- package/lib/cjs/internal/SheetViewAttachments.js +2 -0
- package/lib/cjs/internal/SheetViewAttachments.js.map +1 -1
- package/lib/cjs/internal/tile/LayerTileTreeReferenceHandler.d.ts +1 -0
- package/lib/cjs/internal/tile/LayerTileTreeReferenceHandler.d.ts.map +1 -1
- package/lib/cjs/internal/tile/LayerTileTreeReferenceHandler.js +19 -15
- package/lib/cjs/internal/tile/LayerTileTreeReferenceHandler.js.map +1 -1
- package/lib/cjs/internal/tile/PrimaryTileTree.d.ts +1 -0
- package/lib/cjs/internal/tile/PrimaryTileTree.d.ts.map +1 -1
- package/lib/cjs/internal/tile/PrimaryTileTree.js +32 -2
- package/lib/cjs/internal/tile/PrimaryTileTree.js.map +1 -1
- package/lib/cjs/internal/tile/RealityModelTileTree.d.ts +1 -0
- package/lib/cjs/internal/tile/RealityModelTileTree.d.ts.map +1 -1
- package/lib/cjs/internal/tile/RealityModelTileTree.js +3 -0
- package/lib/cjs/internal/tile/RealityModelTileTree.js.map +1 -1
- package/lib/cjs/quantity-formatting/QuantityFormatter.d.ts +119 -22
- package/lib/cjs/quantity-formatting/QuantityFormatter.d.ts.map +1 -1
- package/lib/cjs/quantity-formatting/QuantityFormatter.js +261 -59
- package/lib/cjs/quantity-formatting/QuantityFormatter.js.map +1 -1
- package/lib/cjs/tools/PrimitiveTool.d.ts +4 -1
- package/lib/cjs/tools/PrimitiveTool.d.ts.map +1 -1
- package/lib/cjs/tools/PrimitiveTool.js +5 -2
- package/lib/cjs/tools/PrimitiveTool.js.map +1 -1
- package/lib/cjs/tools/ToolAdmin.d.ts.map +1 -1
- package/lib/cjs/tools/ToolAdmin.js +2 -2
- package/lib/cjs/tools/ToolAdmin.js.map +1 -1
- package/lib/esm/BriefcaseConnection.d.ts +4 -1
- package/lib/esm/BriefcaseConnection.d.ts.map +1 -1
- package/lib/esm/BriefcaseConnection.js +6 -3
- package/lib/esm/BriefcaseConnection.js.map +1 -1
- package/lib/esm/BriefcaseTxns.d.ts +58 -1
- package/lib/esm/BriefcaseTxns.d.ts.map +1 -1
- package/lib/esm/BriefcaseTxns.js +65 -0
- package/lib/esm/BriefcaseTxns.js.map +1 -1
- package/lib/esm/ContextRealityModelState.d.ts +2 -0
- package/lib/esm/ContextRealityModelState.d.ts.map +1 -1
- package/lib/esm/ContextRealityModelState.js +4 -0
- package/lib/esm/ContextRealityModelState.js.map +1 -1
- package/lib/esm/SheetViewState.d.ts.map +1 -1
- package/lib/esm/SheetViewState.js +4 -3
- package/lib/esm/SheetViewState.js.map +1 -1
- package/lib/esm/Viewport.d.ts.map +1 -1
- package/lib/esm/Viewport.js +14 -1
- package/lib/esm/Viewport.js.map +1 -1
- package/lib/esm/internal/SheetViewAttachments.d.ts +1 -1
- package/lib/esm/internal/SheetViewAttachments.d.ts.map +1 -1
- package/lib/esm/internal/SheetViewAttachments.js +2 -0
- package/lib/esm/internal/SheetViewAttachments.js.map +1 -1
- package/lib/esm/internal/tile/LayerTileTreeReferenceHandler.d.ts +1 -0
- package/lib/esm/internal/tile/LayerTileTreeReferenceHandler.d.ts.map +1 -1
- package/lib/esm/internal/tile/LayerTileTreeReferenceHandler.js +19 -15
- package/lib/esm/internal/tile/LayerTileTreeReferenceHandler.js.map +1 -1
- package/lib/esm/internal/tile/PrimaryTileTree.d.ts +1 -0
- package/lib/esm/internal/tile/PrimaryTileTree.d.ts.map +1 -1
- package/lib/esm/internal/tile/PrimaryTileTree.js +33 -3
- package/lib/esm/internal/tile/PrimaryTileTree.js.map +1 -1
- package/lib/esm/internal/tile/RealityModelTileTree.d.ts +1 -0
- package/lib/esm/internal/tile/RealityModelTileTree.d.ts.map +1 -1
- package/lib/esm/internal/tile/RealityModelTileTree.js +3 -0
- package/lib/esm/internal/tile/RealityModelTileTree.js.map +1 -1
- package/lib/esm/quantity-formatting/QuantityFormatter.d.ts +119 -22
- package/lib/esm/quantity-formatting/QuantityFormatter.d.ts.map +1 -1
- package/lib/esm/quantity-formatting/QuantityFormatter.js +263 -61
- package/lib/esm/quantity-formatting/QuantityFormatter.js.map +1 -1
- package/lib/esm/tools/PrimitiveTool.d.ts +4 -1
- package/lib/esm/tools/PrimitiveTool.d.ts.map +1 -1
- package/lib/esm/tools/PrimitiveTool.js +5 -2
- package/lib/esm/tools/PrimitiveTool.js.map +1 -1
- package/lib/esm/tools/ToolAdmin.d.ts.map +1 -1
- package/lib/esm/tools/ToolAdmin.js +3 -3
- package/lib/esm/tools/ToolAdmin.js.map +1 -1
- package/lib/public/scripts/parse-imdl-worker.js +1 -1
- package/lib/workers/webpack/parse-imdl-worker.js +1 -1
- package/package.json +22 -22
|
@@ -28,7 +28,7 @@ export declare class SheetViewAttachments implements Disposable {
|
|
|
28
28
|
clone(iModel: IModelConnection): SheetViewAttachments;
|
|
29
29
|
preload(request: HydrateViewStateRequestProps): void;
|
|
30
30
|
postload(response: HydrateViewStateResponseProps, iModel: IModelConnection): Promise<void>;
|
|
31
|
-
reload(sheetModelId: Id64String, iModel: IModelConnection): Promise<
|
|
31
|
+
reload(sheetModelId: Id64String, iModel: IModelConnection): Promise<boolean>;
|
|
32
32
|
attachToViewport(args: {
|
|
33
33
|
backgroundColor: ColorDef;
|
|
34
34
|
sheetModelId: Id64String;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"SheetViewAttachments.d.ts","sourceRoot":"","sources":["../../../src/internal/SheetViewAttachments.ts"],"names":[],"mappings":"AAIA;;GAEG;AAEH,OAAO,EAAE,QAAQ,EAAE,4BAA4B,EAAE,6BAA6B,EAAe,mBAAmB,EAAE,MAAM,oBAAoB,CAAC;AAC7I,OAAO,EAAE,2BAA2B,EAAE,yBAAyB,EAAE,SAAS,EAAE,MAAM,cAAc,CAAC;AACjG,OAAO,EAA4C,UAAU,EAAE,MAAM,qBAAqB,CAAC;AAC3F,OAAO,EAAE,gBAAgB,EAAE,MAAM,qBAAqB,CAAC;AAIvD,OAAO,EAAE,OAAO,EAAE,SAAS,EAAE,MAAM,sBAAsB,CAAC;AAC1D,OAAO,EAAE,YAAY,EAAE,MAAM,gBAAgB,CAAC;AAC9C,OAAO,EAAE,QAAQ,EAAE,MAAM,aAAa,CAAC;AACvC,OAAO,EAAE,YAAY,EAAE,MAAM,wBAAwB,CAAC;AACtD,OAAO,EAAE,oBAAoB,EAAE,MAAM,kBAAkB,CAAC;AA2LxD;;GAEG;AACH,qBAAa,oBAAqB,YAAW,UAAU;IACrD,OAAO,CAAC,KAAK,CAAc;IAC3B,OAAO,CAAC,OAAO,CAAC,CAAuB;IACvC,OAAO,CAAC,SAAS,CAA8B;IAC/C,OAAO,CAAC,aAAa,CAAC,CAA0D;IAChF,OAAO,CAAC,UAAU,CAAC,CAA2B;IAE9C,IAAW,QAAQ,IAAI,MAAM,CAE5B;IAEO,qBAAqB,IAAI,QAAQ,CAAC,QAAQ,CAAC;IAUnD,OAAO;IAIA,CAAC,MAAM,CAAC,OAAO,CAAC,IAAI,IAAI;WAMjB,MAAM,CAAC,aAAa,EAAE,UAAU,EAAE,GAAG,oBAAoB;IAKvE,IAAW,aAAa,IAAI,SAAS,MAAM,EAAE,CAE5C;IAEM,KAAK,CAAC,MAAM,EAAE,gBAAgB,GAAG,oBAAoB;IAIrD,OAAO,CAAC,OAAO,EAAE,4BAA4B,GAAG,IAAI;IAI9C,QAAQ,CAAC,QAAQ,EAAE,6BAA6B,EAAE,MAAM,EAAE,gBAAgB,GAAG,OAAO,CAAC,IAAI,CAAC;IAI1F,MAAM,CAAC,YAAY,EAAE,UAAU,EAAE,MAAM,EAAE,gBAAgB,GAAG,OAAO,CAAC,
|
|
1
|
+
{"version":3,"file":"SheetViewAttachments.d.ts","sourceRoot":"","sources":["../../../src/internal/SheetViewAttachments.ts"],"names":[],"mappings":"AAIA;;GAEG;AAEH,OAAO,EAAE,QAAQ,EAAE,4BAA4B,EAAE,6BAA6B,EAAe,mBAAmB,EAAE,MAAM,oBAAoB,CAAC;AAC7I,OAAO,EAAE,2BAA2B,EAAE,yBAAyB,EAAE,SAAS,EAAE,MAAM,cAAc,CAAC;AACjG,OAAO,EAA4C,UAAU,EAAE,MAAM,qBAAqB,CAAC;AAC3F,OAAO,EAAE,gBAAgB,EAAE,MAAM,qBAAqB,CAAC;AAIvD,OAAO,EAAE,OAAO,EAAE,SAAS,EAAE,MAAM,sBAAsB,CAAC;AAC1D,OAAO,EAAE,YAAY,EAAE,MAAM,gBAAgB,CAAC;AAC9C,OAAO,EAAE,QAAQ,EAAE,MAAM,aAAa,CAAC;AACvC,OAAO,EAAE,YAAY,EAAE,MAAM,wBAAwB,CAAC;AACtD,OAAO,EAAE,oBAAoB,EAAE,MAAM,kBAAkB,CAAC;AA2LxD;;GAEG;AACH,qBAAa,oBAAqB,YAAW,UAAU;IACrD,OAAO,CAAC,KAAK,CAAc;IAC3B,OAAO,CAAC,OAAO,CAAC,CAAuB;IACvC,OAAO,CAAC,SAAS,CAA8B;IAC/C,OAAO,CAAC,aAAa,CAAC,CAA0D;IAChF,OAAO,CAAC,UAAU,CAAC,CAA2B;IAE9C,IAAW,QAAQ,IAAI,MAAM,CAE5B;IAEO,qBAAqB,IAAI,QAAQ,CAAC,QAAQ,CAAC;IAUnD,OAAO;IAIA,CAAC,MAAM,CAAC,OAAO,CAAC,IAAI,IAAI;WAMjB,MAAM,CAAC,aAAa,EAAE,UAAU,EAAE,GAAG,oBAAoB;IAKvE,IAAW,aAAa,IAAI,SAAS,MAAM,EAAE,CAE5C;IAEM,KAAK,CAAC,MAAM,EAAE,gBAAgB,GAAG,oBAAoB;IAIrD,OAAO,CAAC,OAAO,EAAE,4BAA4B,GAAG,IAAI;IAI9C,QAAQ,CAAC,QAAQ,EAAE,6BAA6B,EAAE,MAAM,EAAE,gBAAgB,GAAG,OAAO,CAAC,IAAI,CAAC;IAI1F,MAAM,CAAC,YAAY,EAAE,UAAU,EAAE,MAAM,EAAE,gBAAgB,GAAG,OAAO,CAAC,OAAO,CAAC;IAyBlF,gBAAgB,CAAC,IAAI,EAAE;QAC5B,eAAe,EAAE,QAAQ,CAAC;QAC1B,YAAY,EAAE,UAAU,CAAC;KAC1B,GAAG,IAAI;IAQD,kBAAkB,IAAI,IAAI;IAQ1B,qBAAqB,CAAC,gBAAgB,EAAE,OAAO,GAAG,OAAO;IAazD,iBAAiB,CAAC,KAAK,EAAE,oBAAoB,GAAG,IAAI;IAMpD,iBAAiB,CAAC,KAAK,EAAE,YAAY,CAAC,UAAU,GAAG,IAAI;IAMvD,UAAU,CAAC,OAAO,EAAE,YAAY,GAAG,IAAI;IAMvC,qBAAqB,CAAC,IAAI,EAAE,yBAAyB,GAAG,QAAQ,GAAG,SAAS;IAS5E,uBAAuB,CAAC,IAAI,EAAE,2BAA2B,GAAG,SAAS,GAAG,SAAS;IAgBxF,0BAA0B;IACnB,uBAAuB,IAAI,OAAO;IAIzC,0BAA0B;IAC1B,IAAW,WAAW,IAAI,MAAM,EAAE,GAAG,SAAS,CAE7C;IAED,0BAA0B;IAC1B,IAAW,eAAe,IAAI,KAAK,CAAC,QAAQ,CAAC,mBAAmB,CAAC,CAAC,CAYjE;IAED,0BAA0B;IAC1B,IAAW,eAAe,IAAI,SAAS,UAAU,EAAE,GAAG,KAAK,CAAC;QAAE,YAAY,EAAE,SAAS,CAAA;KAAE,CAAC,CAGvF;IAED,OAAO,CAAC,aAAa;IAuBrB,OAAO,CAAE,SAAS;IAQlB,OAAO,CAAC,gBAAgB;CAGzB"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"SheetViewAttachments.js","sourceRoot":"","sources":["../../../src/internal/SheetViewAttachments.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 Views\n */\n\nimport { ColorDef, HydrateViewStateRequestProps, HydrateViewStateResponseProps, Placement2d, ViewAttachmentProps } from \"@itwin/core-common\";\nimport { ComputeDisplayTransformArgs, GetAttachmentViewportArgs, ViewState } from \"../ViewState\";\nimport { assert, CompressedId64Set, expectDefined, Id64String } from \"@itwin/core-bentley\";\nimport { IModelConnection } from \"../IModelConnection\";\nimport { IModelApp } from \"../IModelApp\";\nimport { createViewAttachmentRenderer, ViewAttachmentRenderer } from \"./ViewAttachmentRenderer\";\nimport { Frustum2d } from \"../Frustum2d\";\nimport { Range3d, Transform } from \"@itwin/core-geometry\";\nimport { SceneContext } from \"../ViewContext\";\nimport { Viewport } from \"../Viewport\";\nimport { RenderMemory } from \"../render/RenderMemory\";\nimport { DisclosedTileTreeSet } from \"../tile/internal\";\n\n/** Represents the current state of the view attachments to be displayed by a SheetViewAttachments. */\ninterface Attachments {\n clone(iModel: IModelConnection): Attachments;\n preload(request: HydrateViewStateRequestProps): void;\n postload(response: HydrateViewStateResponseProps, iModel: IModelConnection): Promise<Attachments>;\n readonly infos?: ViewAttachmentInfo[];\n readonly attachmentIds: readonly string[];\n}\n\n/** The properties describing a view attachment, plus the ViewState created from them. */\ninterface ViewAttachmentInfo extends ViewAttachmentProps {\n attachedView: ViewState;\n}\n\n/** Stateless state for a sheet that has no view attachments. */\nclass EmptyAttachments implements Attachments {\n // We only need one instance of this stateless class.\n private static _instance?: Attachments;\n\n public static get(): Attachments {\n return this._instance ?? (this._instance = new EmptyAttachments());\n }\n\n private constructor() { }\n\n public clone(): Attachments {\n return this;\n }\n\n public preload(): void { }\n\n public async postload(): Promise<Attachments> {\n return this;\n }\n\n public get attachmentIds() {\n return [];\n }\n}\n\n/** Holds the element Ids of the view attachments to be loaded for display. */\nclass AttachmentIds implements Attachments {\n private readonly _ids: Id64String[];\n\n public constructor(ids: Id64String[]) {\n this._ids = ids;\n }\n\n public get attachmentIds() {\n return this._ids;\n }\n\n public clone(): Attachments {\n return new AttachmentIds([...this._ids]);\n }\n\n public preload(request: HydrateViewStateRequestProps): void {\n request.sheetViewAttachmentIds = CompressedId64Set.sortAndCompress(this._ids);\n request.viewStateLoadProps = {\n displayStyle: {\n omitScheduleScriptElementIds: !IModelApp.tileAdmin.enableFrontendScheduleScripts,\n compressExcludedElementIds: true,\n },\n };\n }\n\n public async postload(response: HydrateViewStateResponseProps, iModel: IModelConnection): Promise<Attachments> {\n if (undefined === response.sheetViewViews || undefined === response.sheetViewAttachmentProps) {\n return this;\n }\n\n const viewStateProps = response.sheetViewViews;\n const promises = [];\n for (const viewProps of viewStateProps) {\n const loadView = async () => {\n try {\n if (viewProps === undefined)\n return undefined;\n const view = await iModel.views.convertViewStatePropsToViewState(viewProps);\n return view;\n } catch {\n return undefined;\n }\n };\n promises.push(loadView());\n }\n\n const views = await Promise.all(promises);\n\n const attachmentProps = response.sheetViewAttachmentProps as ViewAttachmentInfo[];\n assert(views.length === attachmentProps.length);\n const infos = [];\n for (let i = 0; i < views.length; i++) {\n const view = views[i];\n if (view && !(view.isSheetView())) {\n const props = attachmentProps[i];\n props.attachedView = view;\n infos.push(props);\n }\n }\n\n return new AttachmentInfos(infos);\n }\n}\n\n/** Fully loaded view attachments. */\nclass AttachmentInfos implements Attachments {\n public readonly infos: ViewAttachmentInfo[];\n\n public constructor(infos: ViewAttachmentInfo[]) {\n this.infos = infos;\n }\n\n public get attachmentIds() {\n return this.infos.map((x) => expectDefined(x.id));\n }\n\n public clone(iModel: IModelConnection): Attachments {\n const infos = this.infos.map((info) => {\n return {\n ...info,\n attachedView: info.attachedView.clone(iModel),\n };\n });\n\n return new AttachmentInfos(infos);\n }\n\n public preload(): void {\n // already loaded.\n }\n\n public async postload(): Promise<Attachments> {\n // already loaded.\n return this;\n }\n}\n\n/** Reloads the attachments after a change to the database. */\nasync function reloadAttachments(sheetModelId: Id64String, iModel: IModelConnection): Promise<Attachments> {\n const ecsql = `SELECT ECInstanceId as attachmentId FROM bis.ViewAttachment WHERE model.Id=${sheetModelId}`;\n const ids: string[] = [];\n for await (const row of iModel.createQueryReader(ecsql)) {\n ids.push(row[0]);\n }\n\n const attachmentProps = await iModel.elements.getProps(ids) as ViewAttachmentInfo[];\n const promises = [];\n for (const attachment of attachmentProps) {\n const loadView = async () => {\n try {\n const view = await iModel.views.load(attachment.view.id);\n return view;\n } catch {\n return undefined;\n }\n };\n\n promises.push(loadView());\n }\n\n const views = await Promise.all(promises);\n assert(views.length === attachmentProps.length);\n\n const infos = [];\n for (let i = 0; i < views.length; i++) {\n const view = views[i];\n if (view && !view.isSheetView()) {\n const props = attachmentProps[i];\n props.attachedView = view;\n infos.push(props);\n }\n }\n\n return new AttachmentInfos(infos);\n}\n\nfunction disposeRenderers(renderers: ViewAttachmentRenderer[] | undefined) {\n if (renderers) {\n for (const renderer of renderers) {\n renderer[Symbol.dispose]();\n }\n }\n}\n\n/** Manages the set of ViewAttachment elements to be rendered by a SheetViewState.\n * Takes care of reloading them after ViewAttachment elements are modified, deleted, or inserted.\n */\nexport class SheetViewAttachments implements Disposable {\n private _impl: Attachments;\n private _reload?: Promise<Attachments>;\n private _maxDepth = Frustum2d.minimumZDistance;\n private _rendererArgs?: { sheetModelId: Id64String, backgroundColor: ColorDef };\n private _renderers?: ViewAttachmentRenderer[];\n\n public get maxDepth(): number {\n return this._maxDepth;\n }\n\n public *getSecondaryViewports(): Iterable<Viewport> {\n if (this._renderers) {\n for (const renderer of this._renderers) {\n if (renderer.viewport) {\n yield renderer.viewport;\n }\n }\n }\n }\n\n private constructor(impl: Attachments) {\n this._impl = impl;\n }\n\n public [Symbol.dispose](): void {\n disposeRenderers(this._renderers);\n this._renderers = this._rendererArgs = undefined;\n this._reload = undefined;\n }\n\n public static create(attachmentIds: Id64String[]): SheetViewAttachments {\n const impl = attachmentIds.length === 0 ? EmptyAttachments.get() : new AttachmentIds([...attachmentIds]);\n return new this(impl);\n }\n\n public get attachmentIds(): readonly string[] {\n return this._impl.attachmentIds;\n }\n\n public clone(iModel: IModelConnection): SheetViewAttachments {\n return new SheetViewAttachments(this._impl.clone(iModel));\n }\n\n public preload(request: HydrateViewStateRequestProps): void {\n this._impl.preload(request);\n }\n\n public async postload(response: HydrateViewStateResponseProps, iModel: IModelConnection): Promise<void> {\n this._impl = await this._impl.postload(response, iModel);\n }\n\n public async reload(sheetModelId: Id64String, iModel: IModelConnection): Promise<void> {\n const renderers = this._renderers;\n const reload = this._reload = reloadAttachments(sheetModelId, iModel);\n const impl = await this._reload;\n\n // We keep the previous renderers until reloading completes, to avoid drawing a blank view while waiting.\n // Afterward, always destroy the previous renderers.\n disposeRenderers(renderers);\n\n // If reload was not called again while we waited...\n if (this._reload === reload) {\n this._impl = impl;\n this._reload = this._renderers = undefined;\n\n if (this._rendererArgs) {\n // We are attached to a Viewport - reload the renderers.\n this.loadRenderers();\n }\n }\n }\n\n public attachToViewport(args: {\n backgroundColor: ColorDef,\n sheetModelId: Id64String,\n }): void {\n assert(undefined === this._renderers);\n assert(undefined === this._rendererArgs);\n\n this._rendererArgs = args;\n this.loadRenderers();\n }\n\n public detachFromViewport(): void {\n assert(undefined !== this._rendererArgs);\n this._rendererArgs = undefined;\n\n disposeRenderers(this._renderers);\n this._renderers = undefined;\n }\n\n public areAllTileTreesLoaded(displayedExtents: Range3d): boolean {\n if (this._reload) {\n return false;\n } else if (!this._renderers) {\n return true;\n }\n\n return this._renderers.every((renderer) => {\n const attachmentRange = Placement2d.fromJSON(renderer.viewAttachmentProps.placement).calculateRange();\n return !attachmentRange.intersectsRangeXY(displayedExtents) || renderer.areAllTileTreesLoaded;\n });\n }\n\n public discloseTileTrees(trees: DisclosedTileTreeSet): void {\n for (const renderer of this.renderers()) {\n trees.disclose(renderer);\n }\n }\n\n public collectStatistics(stats: RenderMemory.Statistics): void {\n for (const renderer of this.renderers()) {\n renderer.collectStatistics(stats);\n }\n }\n\n public addToScene(context: SceneContext): void {\n for (const renderer of this.renderers()) {\n renderer.addToScene(context);\n }\n }\n\n public getAttachmentViewport(args: GetAttachmentViewportArgs): Viewport | undefined {\n const renderer = args.viewAttachmentId ? this.findRendererById(args.viewAttachmentId) : undefined;\n if (!renderer) {\n return undefined;\n }\n\n return args.inSectionDrawingAttachment ? renderer.viewport?.view.getAttachmentViewport({ inSectionDrawingAttachment: true }) : renderer.viewport;\n }\n\n public computeDisplayTransform(args: ComputeDisplayTransformArgs): Transform | undefined {\n const renderer = undefined !== args.viewAttachmentId ? this.findRendererById(args.viewAttachmentId) : undefined;\n const ortho = renderer?.ortho;\n const sheetTransform = ortho?.toSheet;\n if (!sheetTransform) {\n return undefined;\n }\n\n const sectionTransform = args.inSectionDrawingAttachment ? ortho.view.computeDisplayTransform(args) : undefined;\n if (!sectionTransform) {\n return sheetTransform.clone(args.output);\n }\n\n return sheetTransform.multiplyTransformTransform(sectionTransform, args.output);\n }\n\n /** Strictly for tests. */\n public areAllAttachmentsLoaded(): boolean {\n return !this._reload && (!this._renderers || this._renderers.every((x) => x.areAllTileTreesLoaded));\n }\n\n /** Strictly for tests. */\n public get attachments(): object[] | undefined {\n return this._renderers;\n }\n\n /** Strictly for tests. */\n public get attachmentProps(): Array<Readonly<ViewAttachmentProps>> {\n const infos = this._impl.infos;\n if (!infos) {\n return [];\n }\n\n return infos.map((x) => {\n return {\n ...x,\n attachedView: undefined,\n };\n });\n }\n\n /** Strictly for tests. */\n public get attachmentInfos(): readonly Id64String[] | Array<{ attachedView: ViewState }> {\n const infos = this._impl.infos;\n return infos ?? this._impl.attachmentIds;\n }\n\n private loadRenderers(): void {\n const args = this._rendererArgs;\n assert(undefined !== args);\n assert(undefined === this._renderers);\n\n this._maxDepth = Frustum2d.minimumZDistance;\n\n const infos = this._impl.infos;\n if (!infos) {\n return;\n }\n\n this._renderers = infos.map((info) => {\n const renderer = createViewAttachmentRenderer({\n ...args,\n props: info,\n view: info.attachedView,\n });\n this._maxDepth = Math.max(this._maxDepth, renderer.zDepth);\n return renderer;\n });\n }\n\n private *renderers(): Iterable<ViewAttachmentRenderer> {\n if (this._renderers) {\n for (const renderer of this._renderers) {\n yield renderer;\n }\n }\n }\n\n private findRendererById(id: Id64String): ViewAttachmentRenderer | undefined {\n return this._renderers?.find((x) => x.viewAttachmentProps.id === id);\n }\n}\n"]}
|
|
1
|
+
{"version":3,"file":"SheetViewAttachments.js","sourceRoot":"","sources":["../../../src/internal/SheetViewAttachments.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 Views\n */\n\nimport { ColorDef, HydrateViewStateRequestProps, HydrateViewStateResponseProps, Placement2d, ViewAttachmentProps } from \"@itwin/core-common\";\nimport { ComputeDisplayTransformArgs, GetAttachmentViewportArgs, ViewState } from \"../ViewState\";\nimport { assert, CompressedId64Set, expectDefined, Id64String } from \"@itwin/core-bentley\";\nimport { IModelConnection } from \"../IModelConnection\";\nimport { IModelApp } from \"../IModelApp\";\nimport { createViewAttachmentRenderer, ViewAttachmentRenderer } from \"./ViewAttachmentRenderer\";\nimport { Frustum2d } from \"../Frustum2d\";\nimport { Range3d, Transform } from \"@itwin/core-geometry\";\nimport { SceneContext } from \"../ViewContext\";\nimport { Viewport } from \"../Viewport\";\nimport { RenderMemory } from \"../render/RenderMemory\";\nimport { DisclosedTileTreeSet } from \"../tile/internal\";\n\n/** Represents the current state of the view attachments to be displayed by a SheetViewAttachments. */\ninterface Attachments {\n clone(iModel: IModelConnection): Attachments;\n preload(request: HydrateViewStateRequestProps): void;\n postload(response: HydrateViewStateResponseProps, iModel: IModelConnection): Promise<Attachments>;\n readonly infos?: ViewAttachmentInfo[];\n readonly attachmentIds: readonly string[];\n}\n\n/** The properties describing a view attachment, plus the ViewState created from them. */\ninterface ViewAttachmentInfo extends ViewAttachmentProps {\n attachedView: ViewState;\n}\n\n/** Stateless state for a sheet that has no view attachments. */\nclass EmptyAttachments implements Attachments {\n // We only need one instance of this stateless class.\n private static _instance?: Attachments;\n\n public static get(): Attachments {\n return this._instance ?? (this._instance = new EmptyAttachments());\n }\n\n private constructor() { }\n\n public clone(): Attachments {\n return this;\n }\n\n public preload(): void { }\n\n public async postload(): Promise<Attachments> {\n return this;\n }\n\n public get attachmentIds() {\n return [];\n }\n}\n\n/** Holds the element Ids of the view attachments to be loaded for display. */\nclass AttachmentIds implements Attachments {\n private readonly _ids: Id64String[];\n\n public constructor(ids: Id64String[]) {\n this._ids = ids;\n }\n\n public get attachmentIds() {\n return this._ids;\n }\n\n public clone(): Attachments {\n return new AttachmentIds([...this._ids]);\n }\n\n public preload(request: HydrateViewStateRequestProps): void {\n request.sheetViewAttachmentIds = CompressedId64Set.sortAndCompress(this._ids);\n request.viewStateLoadProps = {\n displayStyle: {\n omitScheduleScriptElementIds: !IModelApp.tileAdmin.enableFrontendScheduleScripts,\n compressExcludedElementIds: true,\n },\n };\n }\n\n public async postload(response: HydrateViewStateResponseProps, iModel: IModelConnection): Promise<Attachments> {\n if (undefined === response.sheetViewViews || undefined === response.sheetViewAttachmentProps) {\n return this;\n }\n\n const viewStateProps = response.sheetViewViews;\n const promises = [];\n for (const viewProps of viewStateProps) {\n const loadView = async () => {\n try {\n if (viewProps === undefined)\n return undefined;\n const view = await iModel.views.convertViewStatePropsToViewState(viewProps);\n return view;\n } catch {\n return undefined;\n }\n };\n promises.push(loadView());\n }\n\n const views = await Promise.all(promises);\n\n const attachmentProps = response.sheetViewAttachmentProps as ViewAttachmentInfo[];\n assert(views.length === attachmentProps.length);\n const infos = [];\n for (let i = 0; i < views.length; i++) {\n const view = views[i];\n if (view && !(view.isSheetView())) {\n const props = attachmentProps[i];\n props.attachedView = view;\n infos.push(props);\n }\n }\n\n return new AttachmentInfos(infos);\n }\n}\n\n/** Fully loaded view attachments. */\nclass AttachmentInfos implements Attachments {\n public readonly infos: ViewAttachmentInfo[];\n\n public constructor(infos: ViewAttachmentInfo[]) {\n this.infos = infos;\n }\n\n public get attachmentIds() {\n return this.infos.map((x) => expectDefined(x.id));\n }\n\n public clone(iModel: IModelConnection): Attachments {\n const infos = this.infos.map((info) => {\n return {\n ...info,\n attachedView: info.attachedView.clone(iModel),\n };\n });\n\n return new AttachmentInfos(infos);\n }\n\n public preload(): void {\n // already loaded.\n }\n\n public async postload(): Promise<Attachments> {\n // already loaded.\n return this;\n }\n}\n\n/** Reloads the attachments after a change to the database. */\nasync function reloadAttachments(sheetModelId: Id64String, iModel: IModelConnection): Promise<Attachments> {\n const ecsql = `SELECT ECInstanceId as attachmentId FROM bis.ViewAttachment WHERE model.Id=${sheetModelId}`;\n const ids: string[] = [];\n for await (const row of iModel.createQueryReader(ecsql)) {\n ids.push(row[0]);\n }\n\n const attachmentProps = await iModel.elements.getProps(ids) as ViewAttachmentInfo[];\n const promises = [];\n for (const attachment of attachmentProps) {\n const loadView = async () => {\n try {\n const view = await iModel.views.load(attachment.view.id);\n return view;\n } catch {\n return undefined;\n }\n };\n\n promises.push(loadView());\n }\n\n const views = await Promise.all(promises);\n assert(views.length === attachmentProps.length);\n\n const infos = [];\n for (let i = 0; i < views.length; i++) {\n const view = views[i];\n if (view && !view.isSheetView()) {\n const props = attachmentProps[i];\n props.attachedView = view;\n infos.push(props);\n }\n }\n\n return new AttachmentInfos(infos);\n}\n\nfunction disposeRenderers(renderers: ViewAttachmentRenderer[] | undefined) {\n if (renderers) {\n for (const renderer of renderers) {\n renderer[Symbol.dispose]();\n }\n }\n}\n\n/** Manages the set of ViewAttachment elements to be rendered by a SheetViewState.\n * Takes care of reloading them after ViewAttachment elements are modified, deleted, or inserted.\n */\nexport class SheetViewAttachments implements Disposable {\n private _impl: Attachments;\n private _reload?: Promise<Attachments>;\n private _maxDepth = Frustum2d.minimumZDistance;\n private _rendererArgs?: { sheetModelId: Id64String, backgroundColor: ColorDef };\n private _renderers?: ViewAttachmentRenderer[];\n\n public get maxDepth(): number {\n return this._maxDepth;\n }\n\n public *getSecondaryViewports(): Iterable<Viewport> {\n if (this._renderers) {\n for (const renderer of this._renderers) {\n if (renderer.viewport) {\n yield renderer.viewport;\n }\n }\n }\n }\n\n private constructor(impl: Attachments) {\n this._impl = impl;\n }\n\n public [Symbol.dispose](): void {\n disposeRenderers(this._renderers);\n this._renderers = this._rendererArgs = undefined;\n this._reload = undefined;\n }\n\n public static create(attachmentIds: Id64String[]): SheetViewAttachments {\n const impl = attachmentIds.length === 0 ? EmptyAttachments.get() : new AttachmentIds([...attachmentIds]);\n return new this(impl);\n }\n\n public get attachmentIds(): readonly string[] {\n return this._impl.attachmentIds;\n }\n\n public clone(iModel: IModelConnection): SheetViewAttachments {\n return new SheetViewAttachments(this._impl.clone(iModel));\n }\n\n public preload(request: HydrateViewStateRequestProps): void {\n this._impl.preload(request);\n }\n\n public async postload(response: HydrateViewStateResponseProps, iModel: IModelConnection): Promise<void> {\n this._impl = await this._impl.postload(response, iModel);\n }\n\n public async reload(sheetModelId: Id64String, iModel: IModelConnection): Promise<boolean> {\n const renderers = this._renderers;\n const reload = this._reload = reloadAttachments(sheetModelId, iModel);\n const impl = await this._reload;\n\n // We keep the previous renderers until reloading completes, to avoid drawing a blank view while waiting.\n // Afterward, always destroy the previous renderers.\n disposeRenderers(renderers);\n\n // If reload was not called again while we waited...\n if (this._reload === reload) {\n this._impl = impl;\n this._reload = this._renderers = undefined;\n\n if (this._rendererArgs) {\n // We are attached to a Viewport - reload the renderers.\n this.loadRenderers();\n }\n\n return true;\n }\n\n return false;\n }\n\n public attachToViewport(args: {\n backgroundColor: ColorDef,\n sheetModelId: Id64String,\n }): void {\n assert(undefined === this._renderers);\n assert(undefined === this._rendererArgs);\n\n this._rendererArgs = args;\n this.loadRenderers();\n }\n\n public detachFromViewport(): void {\n assert(undefined !== this._rendererArgs);\n this._rendererArgs = undefined;\n\n disposeRenderers(this._renderers);\n this._renderers = undefined;\n }\n\n public areAllTileTreesLoaded(displayedExtents: Range3d): boolean {\n if (this._reload) {\n return false;\n } else if (!this._renderers) {\n return true;\n }\n\n return this._renderers.every((renderer) => {\n const attachmentRange = Placement2d.fromJSON(renderer.viewAttachmentProps.placement).calculateRange();\n return !attachmentRange.intersectsRangeXY(displayedExtents) || renderer.areAllTileTreesLoaded;\n });\n }\n\n public discloseTileTrees(trees: DisclosedTileTreeSet): void {\n for (const renderer of this.renderers()) {\n trees.disclose(renderer);\n }\n }\n\n public collectStatistics(stats: RenderMemory.Statistics): void {\n for (const renderer of this.renderers()) {\n renderer.collectStatistics(stats);\n }\n }\n\n public addToScene(context: SceneContext): void {\n for (const renderer of this.renderers()) {\n renderer.addToScene(context);\n }\n }\n\n public getAttachmentViewport(args: GetAttachmentViewportArgs): Viewport | undefined {\n const renderer = args.viewAttachmentId ? this.findRendererById(args.viewAttachmentId) : undefined;\n if (!renderer) {\n return undefined;\n }\n\n return args.inSectionDrawingAttachment ? renderer.viewport?.view.getAttachmentViewport({ inSectionDrawingAttachment: true }) : renderer.viewport;\n }\n\n public computeDisplayTransform(args: ComputeDisplayTransformArgs): Transform | undefined {\n const renderer = undefined !== args.viewAttachmentId ? this.findRendererById(args.viewAttachmentId) : undefined;\n const ortho = renderer?.ortho;\n const sheetTransform = ortho?.toSheet;\n if (!sheetTransform) {\n return undefined;\n }\n\n const sectionTransform = args.inSectionDrawingAttachment ? ortho.view.computeDisplayTransform(args) : undefined;\n if (!sectionTransform) {\n return sheetTransform.clone(args.output);\n }\n\n return sheetTransform.multiplyTransformTransform(sectionTransform, args.output);\n }\n\n /** Strictly for tests. */\n public areAllAttachmentsLoaded(): boolean {\n return !this._reload && (!this._renderers || this._renderers.every((x) => x.areAllTileTreesLoaded));\n }\n\n /** Strictly for tests. */\n public get attachments(): object[] | undefined {\n return this._renderers;\n }\n\n /** Strictly for tests. */\n public get attachmentProps(): Array<Readonly<ViewAttachmentProps>> {\n const infos = this._impl.infos;\n if (!infos) {\n return [];\n }\n\n return infos.map((x) => {\n return {\n ...x,\n attachedView: undefined,\n };\n });\n }\n\n /** Strictly for tests. */\n public get attachmentInfos(): readonly Id64String[] | Array<{ attachedView: ViewState }> {\n const infos = this._impl.infos;\n return infos ?? this._impl.attachmentIds;\n }\n\n private loadRenderers(): void {\n const args = this._rendererArgs;\n assert(undefined !== args);\n assert(undefined === this._renderers);\n\n this._maxDepth = Frustum2d.minimumZDistance;\n\n const infos = this._impl.infos;\n if (!infos) {\n return;\n }\n\n this._renderers = infos.map((info) => {\n const renderer = createViewAttachmentRenderer({\n ...args,\n props: info,\n view: info.attachedView,\n });\n this._maxDepth = Math.max(this._maxDepth, renderer.zDepth);\n return renderer;\n });\n }\n\n private *renderers(): Iterable<ViewAttachmentRenderer> {\n if (this._renderers) {\n for (const renderer of this._renderers) {\n yield renderer;\n }\n }\n }\n\n private findRendererById(id: Id64String): ViewAttachmentRenderer | undefined {\n return this._renderers?.find((x) => x.viewAttachmentProps.id === id);\n }\n}\n"]}
|
|
@@ -30,6 +30,7 @@ export declare class LayerTileTreeReferenceHandler {
|
|
|
30
30
|
get layerSettings(): MapLayerSettings[];
|
|
31
31
|
discloseTileTrees(trees: DisclosedTileTreeSet): void;
|
|
32
32
|
constructor(ref: LayerTileTreeReference, pIsOverlay: boolean, baseLayerSettings?: BaseLayerSettings, layerSettings?: MapLayerSettings[], mapTile?: boolean);
|
|
33
|
+
detachFromDisplayStyle(): void;
|
|
33
34
|
initializeLayers(context: SceneContext): boolean;
|
|
34
35
|
setBaseLayerSettings(baseLayerSettings: BaseLayerSettings): void;
|
|
35
36
|
clearLayers(): void;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"LayerTileTreeReferenceHandler.d.ts","sourceRoot":"","sources":["../../../../src/internal/tile/LayerTileTreeReferenceHandler.ts"],"names":[],"mappings":"AAIA;;GAEG;AAGH,OAAO,EAAE,iBAAiB,EAAE,QAAQ,EAAsB,gBAAgB,EAAE,MAAM,oBAAoB,CAAC;AACvG,OAAO,EAAE,YAAY,EAAE,MAAM,mBAAmB,CAAC;AACjD,OAAO,EAAgD,oBAAoB,EAAoD,yBAAyB,EAAsD,aAAa,EAAE,MAAM,qBAAqB,CAAC;AACzP,OAAO,EAAE,gBAAgB,EAAE,MAAM,wBAAwB,CAAC;AAE1D,gBAAgB;AAChB,MAAM,WAAW,sBAAsB;IACrC,MAAM,EAAE,gBAAgB,CAAC;IACzB,SAAS,EAAE,aAAa,CAAC;IACzB,gBAAgB,EAAE,CAAC,YAAY,CAAC,EAAE,yBAAyB,KAAK,OAAO,CAAC;CACzE;AAED,gBAAgB;AAChB,qBAAa,6BAA6B;IACxC,SAAS,CAAC,QAAQ,CAAC,WAAW,4CAAsD;IAC7E,SAAS,EAAE,OAAO,CAAC;IAC1B,SAAS,CAAC,yBAAyB,UAAS;IAC5C,SAAS,CAAC,kBAAkB,CAAC,EAAE,iBAAiB,CAAC;IACjD,SAAS,CAAC,gBAAgB,UAAS;IACnC,SAAS,CAAC,UAAU,CAAC,EAAE,QAAQ,CAAC;IAChC,SAAS,CAAC,cAAc,EAAE,gBAAgB,EAAE,CAAC;IAC7C,OAAO,CAAC,IAAI,CAAyB;IACrC,OAAO,CAAC,QAAQ,CAAC,QAAQ,CAAU;IACnC,OAAO,CAAC,QAAQ,CAAC,uBAAuB,CAAsB;IAE9D,IAAW,UAAU,8CAA+B;IACpD,IAAW,SAAS,yBAA8B;IAClD,IAAW,eAAe,YAAoC;IAC9D,IAAW,wBAAwB,YAA6C;IAChF,IAAW,aAAa,uBAAkC;IAEnD,iBAAiB,CAAC,KAAK,EAAE,oBAAoB,GAAG,IAAI;gBAMxC,GAAG,EAAE,sBAAsB,EAAE,UAAU,EAAE,OAAO,EAAE,iBAAiB,CAAC,EAAE,iBAAiB,EAAE,aAAa,CAAC,EAAE,gBAAgB,EAAE,EAAE,OAAO,GAAE,OAAe;IA4BjK,gBAAgB,CAAC,OAAO,EAAE,YAAY,GAAG,OAAO;IAoFhD,oBAAoB,CAAC,iBAAiB,EAAE,iBAAiB;IA0BzD,WAAW;IAOX,gBAAgB,CAAC,aAAa,EAAE,gBAAgB,EAAE;CAY1D"}
|
|
1
|
+
{"version":3,"file":"LayerTileTreeReferenceHandler.d.ts","sourceRoot":"","sources":["../../../../src/internal/tile/LayerTileTreeReferenceHandler.ts"],"names":[],"mappings":"AAIA;;GAEG;AAGH,OAAO,EAAE,iBAAiB,EAAE,QAAQ,EAAsB,gBAAgB,EAAE,MAAM,oBAAoB,CAAC;AACvG,OAAO,EAAE,YAAY,EAAE,MAAM,mBAAmB,CAAC;AACjD,OAAO,EAAgD,oBAAoB,EAAoD,yBAAyB,EAAsD,aAAa,EAAE,MAAM,qBAAqB,CAAC;AACzP,OAAO,EAAE,gBAAgB,EAAE,MAAM,wBAAwB,CAAC;AAE1D,gBAAgB;AAChB,MAAM,WAAW,sBAAsB;IACrC,MAAM,EAAE,gBAAgB,CAAC;IACzB,SAAS,EAAE,aAAa,CAAC;IACzB,gBAAgB,EAAE,CAAC,YAAY,CAAC,EAAE,yBAAyB,KAAK,OAAO,CAAC;CACzE;AAED,gBAAgB;AAChB,qBAAa,6BAA6B;IACxC,SAAS,CAAC,QAAQ,CAAC,WAAW,4CAAsD;IAC7E,SAAS,EAAE,OAAO,CAAC;IAC1B,SAAS,CAAC,yBAAyB,UAAS;IAC5C,SAAS,CAAC,kBAAkB,CAAC,EAAE,iBAAiB,CAAC;IACjD,SAAS,CAAC,gBAAgB,UAAS;IACnC,SAAS,CAAC,UAAU,CAAC,EAAE,QAAQ,CAAC;IAChC,SAAS,CAAC,cAAc,EAAE,gBAAgB,EAAE,CAAC;IAC7C,OAAO,CAAC,IAAI,CAAyB;IACrC,OAAO,CAAC,QAAQ,CAAC,QAAQ,CAAU;IACnC,OAAO,CAAC,QAAQ,CAAC,uBAAuB,CAAsB;IAE9D,IAAW,UAAU,8CAA+B;IACpD,IAAW,SAAS,yBAA8B;IAClD,IAAW,eAAe,YAAoC;IAC9D,IAAW,wBAAwB,YAA6C;IAChF,IAAW,aAAa,uBAAkC;IAEnD,iBAAiB,CAAC,KAAK,EAAE,oBAAoB,GAAG,IAAI;gBAMxC,GAAG,EAAE,sBAAsB,EAAE,UAAU,EAAE,OAAO,EAAE,iBAAiB,CAAC,EAAE,iBAAiB,EAAE,aAAa,CAAC,EAAE,gBAAgB,EAAE,EAAE,OAAO,GAAE,OAAe;IA4BjK,sBAAsB,IAAI,IAAI;IAK9B,gBAAgB,CAAC,OAAO,EAAE,YAAY,GAAG,OAAO;IAoFhD,oBAAoB,CAAC,iBAAiB,EAAE,iBAAiB;IA0BzD,WAAW;IAOX,gBAAgB,CAAC,aAAa,EAAE,gBAAgB,EAAE;CAY1D"}
|
|
@@ -55,31 +55,35 @@ export class LayerTileTreeReferenceHandler {
|
|
|
55
55
|
this._layerTrees.push(tree);
|
|
56
56
|
}
|
|
57
57
|
}
|
|
58
|
+
detachFromDisplayStyle() {
|
|
59
|
+
this._detachFromDisplayStyle.forEach((f) => f());
|
|
60
|
+
this._detachFromDisplayStyle.length = 0;
|
|
61
|
+
}
|
|
58
62
|
initializeLayers(context) {
|
|
59
63
|
// Map tiles handle refresh logic differently
|
|
60
64
|
if (!this._mapTile) {
|
|
61
65
|
const removals = this._detachFromDisplayStyle;
|
|
62
|
-
const mapImagery = context.viewport.displayStyle.settings.mapImagery;
|
|
63
66
|
if (0 === removals.length) {
|
|
64
67
|
removals.push(context.viewport.displayStyle.settings.onMapImageryChanged.addListener((imagery) => {
|
|
65
68
|
this.setBaseLayerSettings(imagery.backgroundBase);
|
|
66
69
|
this.setLayerSettings(imagery.backgroundLayers);
|
|
67
70
|
}));
|
|
71
|
+
removals.push(context.viewport.onChangeView.addListener((vp, previousViewState) => {
|
|
72
|
+
if (compareMapLayer(previousViewState, vp.view)) {
|
|
73
|
+
const currentImagery = vp.displayStyle.settings.mapImagery;
|
|
74
|
+
this.setBaseLayerSettings(currentImagery.backgroundBase);
|
|
75
|
+
this.setLayerSettings(currentImagery.backgroundLayers);
|
|
76
|
+
}
|
|
77
|
+
}));
|
|
78
|
+
removals.push(context.viewport.onViewedModelsChanged.addListener((viewport) => {
|
|
79
|
+
const currentImagery = viewport.displayStyle.settings.mapImagery;
|
|
80
|
+
if (currentImagery.backgroundLayers.length > 0) {
|
|
81
|
+
this.setBaseLayerSettings(currentImagery.backgroundBase);
|
|
82
|
+
this.setLayerSettings(currentImagery.backgroundLayers);
|
|
83
|
+
viewport.invalidateScene();
|
|
84
|
+
}
|
|
85
|
+
}));
|
|
68
86
|
}
|
|
69
|
-
removals.push(context.viewport.onChangeView.addListener((vp, previousViewState) => {
|
|
70
|
-
if (compareMapLayer(previousViewState, vp.view)) {
|
|
71
|
-
this.setBaseLayerSettings(mapImagery.backgroundBase);
|
|
72
|
-
this.setLayerSettings(mapImagery.backgroundLayers);
|
|
73
|
-
}
|
|
74
|
-
}));
|
|
75
|
-
removals.push(context.viewport.onViewedModelsChanged.addListener((viewport) => {
|
|
76
|
-
const layers = viewport.displayStyle.settings.mapImagery.backgroundLayers;
|
|
77
|
-
if (layers.length > 0) {
|
|
78
|
-
this.setBaseLayerSettings(mapImagery.backgroundBase);
|
|
79
|
-
this.setLayerSettings(mapImagery.backgroundLayers);
|
|
80
|
-
viewport.invalidateScene();
|
|
81
|
-
}
|
|
82
|
-
}));
|
|
83
87
|
}
|
|
84
88
|
let hasLoadedTileTree = false;
|
|
85
89
|
const layerHandler = this._ref.treeOwner.load()?.layerHandler;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"LayerTileTreeReferenceHandler.js","sourceRoot":"","sources":["../../../../src/internal/tile/LayerTileTreeReferenceHandler.ts"],"names":[],"mappings":"AAAA;;;+FAG+F;AAC/F;;GAEG;AAEH,OAAO,EAAE,aAAa,EAAE,MAAM,qBAAqB,CAAC;AACpD,OAAO,EAAmD,gBAAgB,EAAE,MAAM,oBAAoB,CAAC;AAEvG,OAAO,EAAE,eAAe,EAAE,2BAA2B,EAAwB,4BAA4B,EAAE,kBAAkB,EAA6B,8BAA8B,EAAE,kBAAkB,EAAiB,MAAM,qBAAqB,CAAC;AAUzP,gBAAgB;AAChB,MAAM,OAAO,6BAA6B;IACrB,WAAW,GAAG,IAAI,KAAK,EAAyC,CAAC;IAC7E,SAAS,CAAU;IAChB,yBAAyB,GAAG,KAAK,CAAC;IAClC,kBAAkB,CAAqB;IACvC,gBAAgB,GAAG,KAAK,CAAC;IACzB,UAAU,CAAY;IACtB,cAAc,CAAqB;IACrC,IAAI,CAAyB;IACpB,QAAQ,CAAU;IAClB,uBAAuB,GAAmB,EAAE,CAAC;IAE9D,IAAW,UAAU,KAAK,OAAO,IAAI,CAAC,WAAW,CAAC,CAAC,CAAC;IACpD,IAAW,SAAS,KAAK,OAAO,IAAI,CAAC,UAAU,CAAC,CAAC,CAAC;IAClD,IAAW,eAAe,KAAK,OAAO,IAAI,CAAC,gBAAgB,CAAC,CAAC,CAAC;IAC9D,IAAW,wBAAwB,KAAK,OAAO,IAAI,CAAC,yBAAyB,CAAC,CAAC,CAAC;IAChF,IAAW,aAAa,KAAK,OAAO,IAAI,CAAC,cAAc,CAAC,CAAC,CAAC;IAEnD,iBAAiB,CAAC,KAA2B;QAClD,KAAK,MAAM,WAAW,IAAI,IAAI,CAAC,UAAU;YACvC,IAAI,WAAW;gBACb,KAAK,CAAC,QAAQ,CAAC,WAAW,CAAC,CAAC;IAClC,CAAC;IAED,YAAmB,GAA2B,EAAE,UAAmB,EAAE,iBAAqC,EAAE,aAAkC,EAAE,UAAmB,KAAK;QACtK,IAAI,CAAC,IAAI,GAAG,GAAG,CAAC;QAChB,IAAI,CAAC,kBAAkB,GAAG,iBAAiB,CAAC;QAC5C,IAAI,CAAC,cAAc,GAAG,aAAa,CAAC,CAAC,CAAC,aAAa,CAAC,CAAC,CAAC,EAAE,CAAC;QACzD,IAAI,CAAC,SAAS,GAAG,UAAU,CAAC;QAC5B,IAAI,CAAC,QAAQ,GAAG,OAAO,CAAC;QAExB,IAAI,IAAI,CAAC;QACT,IAAI,CAAC,IAAI,CAAC,SAAS,IAAI,IAAI,CAAC,kBAAkB,KAAK,SAAS,EAAE,CAAC;YAC7D,IAAI,IAAI,CAAC,kBAAkB,YAAY,gBAAgB,EAAE,CAAC;gBACxD,IAAI,GAAG,2BAA2B,CAAC,IAAI,CAAC,kBAAkB,EAAE,CAAC,EAAE,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;gBACjF,IAAI,CAAC,gBAAgB,GAAG,IAAI,CAAC,kBAAkB,CAAC,YAAY,GAAG,CAAC,CAAC;YACnE,CAAC;iBAAM,CAAC;gBACN,IAAI,CAAC,UAAU,GAAG,IAAI,CAAC,kBAAkB,CAAC;gBAC1C,IAAI,CAAC,gBAAgB,GAAG,IAAI,CAAC,UAAU,EAAE,eAAe,EAAE,GAAG,CAAC,CAAC;YACjE,CAAC;QACH,CAAC;QAED,IAAI,IAAI,CAAC,yBAAyB,GAAG,CAAC,SAAS,KAAK,IAAI,CAAC;YACvD,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QAE9B,IAAI,SAAS,KAAK,IAAI,CAAC,cAAc,EAAE,CAAC;YACtC,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,IAAI,CAAC,cAAc,CAAC,MAAM,EAAE,CAAC,EAAE;gBACjD,IAAI,SAAS,KAAK,CAAC,IAAI,GAAG,2BAA2B,CAAC,IAAI,CAAC,cAAc,CAAC,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;oBACrG,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QAClC,CAAC;IACH,CAAC;IAEM,gBAAgB,CAAC,OAAqB;QAC3C,6CAA6C;QAC7C,IAAG,CAAC,IAAI,CAAC,QAAQ,EAAC,CAAC;YACjB,MAAM,QAAQ,GAAG,IAAI,CAAC,uBAAuB,CAAC;YAC9C,MAAM,UAAU,GAAG,OAAO,CAAC,QAAQ,CAAC,YAAY,CAAC,QAAQ,CAAC,UAAU,CAAC;YACrE,IAAI,CAAC,KAAK,QAAQ,CAAC,MAAM,EAAE,CAAC;gBAC1B,QAAQ,CAAC,IAAI,CAAC,OAAO,CAAC,QAAQ,CAAC,YAAY,CAAC,QAAQ,CAAC,mBAAmB,CAAC,WAAW,CAAC,CAAC,OAAqC,EAAE,EAAE;oBAC7H,IAAI,CAAC,oBAAoB,CAAC,OAAO,CAAC,cAAc,CAAC,CAAC;oBAClD,IAAI,CAAC,gBAAgB,CAAC,OAAO,CAAC,gBAAgB,CAAC,CAAC;gBAClD,CAAC,CAAC,CAAC,CAAC;YACN,CAAC;YACD,QAAQ,CAAC,IAAI,CAAC,OAAO,CAAC,QAAQ,CAAC,YAAY,CAAC,WAAW,CAAC,CAAC,EAAE,EAAE,iBAAiB,EAAE,EAAE;gBAChF,IAAG,eAAe,CAAC,iBAAiB,EAAE,EAAE,CAAC,IAAI,CAAC,EAAC,CAAC;oBAC9C,IAAI,CAAC,oBAAoB,CAAC,UAAU,CAAC,cAAc,CAAC,CAAC;oBACrD,IAAI,CAAC,gBAAgB,CAAC,UAAU,CAAC,gBAAgB,CAAC,CAAC;gBACrD,CAAC;YACH,CAAC,CAAC,CAAC,CAAC;YACJ,QAAQ,CAAC,IAAI,CAAC,OAAO,CAAC,QAAQ,CAAC,qBAAqB,CAAC,WAAW,CAAC,CAAC,QAAQ,EAAE,EAAE;gBAC5E,MAAM,MAAM,GAAG,QAAQ,CAAC,YAAY,CAAC,QAAQ,CAAC,UAAU,CAAC,gBAAgB,CAAC;gBAC1E,IAAI,MAAM,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;oBACtB,IAAI,CAAC,oBAAoB,CAAC,UAAU,CAAC,cAAc,CAAC,CAAC;oBACrD,IAAI,CAAC,gBAAgB,CAAC,UAAU,CAAC,gBAAgB,CAAC,CAAC;oBACnD,QAAQ,CAAC,eAAe,EAAE,CAAC;gBAC7B,CAAC;YACH,CAAC,CAAC,CAAC,CAAC;QACN,CAAC;QAED,IAAI,iBAAiB,GAAG,KAAK,CAAC;QAC9B,MAAM,YAAY,GAAG,IAAI,CAAC,IAAI,CAAC,SAAS,CAAC,IAAI,EAAE,EAAE,YAAY,CAAC;QAC9D,IAAI,SAAS,KAAK,YAAY,EAAE,CAAC;YAC/B,OAAO,iBAAiB,CAAC,CAAK,+CAA+C;QAC/E,CAAC;QAED,YAAY,CAAC,iBAAiB,CAAC,MAAM,GAAG,CAAC,CAAC;QAC1C,IAAI,CAAC,KAAK,IAAI,CAAC,WAAW,CAAC,MAAM,EAAE,CAAC;YAClC,OAAO,CAAC,IAAI,CAAC,SAAS,CAAC;QACzB,CAAC;QAED,IAAI,SAAS,GAAG,IAAI,CAAC,WAAW,CAAC,MAAM,GAAG,CAAC,CAAC;QAC5C,6DAA6D;QAC7D,OAAO,SAAS,IAAI,CAAC,EAAE,SAAS,EAAE,EAAE,CAAC;YACnC,MAAM,YAAY,GAAG,IAAI,CAAC,WAAW,CAAC,SAAS,CAAC,CAAC;YACjD,IAAI,YAAY,EAAE,QAAQ;gBACxB,MAAM,CAAI,oFAAoF;QAClG,CAAC;QAED,OAAO,SAAS,GAAG,IAAI,CAAC,WAAW,CAAC,MAAM,EAAE,SAAS,EAAE,EAAE,CAAC;YACxD,MAAM,YAAY,GAAG,IAAI,CAAC,WAAW,CAAC,SAAS,CAAC,CAAC;YACjD,MAAM,gBAAgB,GAAG,YAAY,IAAI,kBAAkB,CAAC,QAAQ,KAAK,YAAY,CAAC,SAAS,CAAC,UAAU,CAAC;YAC3G,MAAM,iBAAiB,GAAG,YAAY,YAAY,4BAA4B,CAAC;YAC/E,MAAM,cAAc,GAAG,CAAC,iBAAiB,IAAI,CAAC,CAAC,iBAAiB,IAAI,YAAY,EAAE,aAAa,CAAC,OAAO,CAAC,CAAC,CAAC;YAE1G,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,gBAAgB,CAAC,YAAY,CAAC,EAAE,CAAC;gBAC9C,uFAAuF;gBACvF,gGAAgG;gBAChG,iBAAiB,GAAG,IAAI,CAAC,CAAC,6EAA6E;gBACvG,SAAS;YACX,CAAC;YAED,4CAA4C;YAC5C,+GAA+G;YAC/G,IAAI,gBAAgB;mBACf,cAAc;mBACd,CAAC,YAAY,CAAC,aAAa,CAAC,qBAAqB,EAAE,CAAC;gBACvD,MAAM,SAAS,GAAG,YAAY,CAAC,SAAS,CAAC,IAAI,EAAE,CAAC;gBAChD,IAAI,SAAS,KAAK,SAAS,EAAE,CAAC;oBAC5B,iBAAiB,GAAG,IAAI,CAAC;gBAC3B,CAAC;qBAAM,CAAC;oBACN,8DAA8D;oBAC9D,SAAS;gBACX,CAAC;gBAED,sBAAsB;gBACtB,MAAM,gBAAgB,GAAG,IAAI,CAAC,yBAAyB,IAAI,CAAC,SAAS,KAAK,CAAC,CAAC,CAAC;gBAC7E,IAAI,SAAS,YAAY,kBAAkB,EAAE,CAAC;oBAC5C,YAAY,CAAC,eAAe,CAAC,SAAS,EAAE,YAAY,CAAC,aAAa,EAAE,SAAS,EAAE,gBAAgB,CAAC,CAAC;gBACnG,CAAC;qBAAM,IAAI,YAAY,YAAY,8BAA8B;oBAC/D,YAAY,CAAC,aAAa,CAAC,YAAY,EAAE,OAAO,CAAC,CAAC;YACtD,CAAC;QACH,CAAC;QAED,OAAO,iBAAiB,CAAC;IAC3B,CAAC;IAEM,oBAAoB,CAAC,iBAAoC;QAC9D,IAAI,IAAI,CAAC;QACT,IAAI,CAAC,kBAAkB,GAAG,iBAAiB,CAAC;QAE5C,IAAI,iBAAiB,YAAY,gBAAgB,EAAE,CAAC;YAClD,IAAI,GAAG,2BAA2B,CAAC,iBAAiB,EAAE,CAAC,EAAE,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;YAC3E,IAAI,CAAC,UAAU,GAAG,SAAS,CAAC;YAC5B,IAAI,CAAC,gBAAgB,GAAG,iBAAiB,CAAC,YAAY,GAAG,CAAC,CAAC;QAC7D,CAAC;aAAM,CAAC;YACN,IAAI,CAAC,UAAU,GAAG,iBAAiB,CAAC;YACpC,IAAI,CAAC,gBAAgB,GAAG,IAAI,CAAC,UAAU,CAAC,eAAe,EAAE,GAAG,CAAC,CAAC;QAChE,CAAC;QAED,IAAI,IAAI,EAAE,CAAC;YACT,IAAI,IAAI,CAAC,yBAAyB;gBAChC,IAAI,CAAC,WAAW,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC;;gBAE3B,IAAI,CAAC,WAAW,CAAC,MAAM,CAAC,CAAC,EAAE,CAAC,EAAE,IAAI,CAAC,CAAC;QACxC,CAAC;aAAM,CAAC;YACN,IAAI,IAAI,CAAC,yBAAyB;gBAChC,IAAI,CAAC,WAAW,CAAC,KAAK,EAAE,CAAC;QAC7B,CAAC;QACD,IAAI,CAAC,yBAAyB,GAAG,IAAI,KAAK,SAAS,CAAC;QACpD,IAAI,CAAC,WAAW,EAAE,CAAC;IACrB,CAAC;IAEM,WAAW;QAChB,MAAM,YAAY,GAAG,IAAI,CAAC,IAAI,CAAC,SAAS,CAAC,QAAQ,EAAE,YAAY,CAAC;QAChE,IAAI,SAAS,KAAK,YAAY,EAAE,CAAC;YAC/B,YAAY,CAAC,WAAW,EAAE,CAAC;QAC7B,CAAC;IACH,CAAC;IAEM,gBAAgB,CAAC,aAAiC;QACvD,IAAI,CAAC,cAAc,GAAG,aAAa,CAAC;QACpC,MAAM,cAAc,GAAG,IAAI,CAAC,yBAAyB,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;QAE9D,IAAI,CAAC,WAAW,CAAC,MAAM,GAAG,IAAI,CAAC,GAAG,CAAC,aAAa,CAAC,MAAM,GAAG,cAAc,EAAE,IAAI,CAAC,WAAW,CAAC,MAAM,CAAC,CAAC,CAAI,wCAAwC;QAC/I,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,aAAa,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE,CAAC;YAC9C,MAAM,SAAS,GAAG,CAAC,GAAG,cAAc,CAAC;YACrC,IAAI,SAAS,IAAI,IAAI,CAAC,WAAW,CAAC,MAAM,IAAI,CAAC,IAAI,CAAC,WAAW,CAAC,SAAS,CAAC,EAAE,aAAa,CAAC,cAAc,CAAC,aAAa,CAAC,CAAC,CAAC,CAAC;gBACtH,IAAI,CAAC,WAAW,CAAC,SAAS,CAAC,GAAG,aAAa,CAAC,2BAA2B,CAAC,aAAa,CAAC,CAAC,CAAC,EAAE,SAAS,EAAE,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC;QAC5H,CAAC;QACD,IAAI,CAAC,WAAW,EAAE,CAAC;IACrB,CAAC;CACF","sourcesContent":["/*---------------------------------------------------------------------------------------------\n* Copyright (c) Bentley Systems, Incorporated. All rights reserved.\n* See LICENSE.md in the project root for license terms and full copyright notice.\n*--------------------------------------------------------------------------------------------*/\n/** @packageDocumentation\n * @module Tiles\n */\n\nimport { expectDefined } from \"@itwin/core-bentley\";\nimport { BaseLayerSettings, ColorDef, MapImagerySettings, MapLayerSettings } from \"@itwin/core-common\";\nimport { SceneContext } from \"../../ViewContext\";\nimport { compareMapLayer, createMapLayerTreeReference, DisclosedTileTreeSet, ImageryMapLayerTreeReference, ImageryMapTileTree, MapLayerTileTreeReference, ModelMapLayerTileTreeReference, TileTreeLoadStatus, TileTreeOwner } from \"../../tile/internal\";\nimport { IModelConnection } from \"../../IModelConnection\";\n\n/** @internal */\nexport interface LayerTileTreeReference {\n iModel: IModelConnection;\n treeOwner: TileTreeOwner;\n shouldDrapeLayer: (layerTreeRef?: MapLayerTileTreeReference) => boolean;\n}\n\n/** @internal */\nexport class LayerTileTreeReferenceHandler {\n protected readonly _layerTrees = new Array<MapLayerTileTreeReference | undefined>();\n public isOverlay: boolean;\n protected _baseImageryLayerIncluded = false;\n protected _baseLayerSettings?: BaseLayerSettings;\n protected _baseTransparent = false;\n protected _baseColor?: ColorDef;\n protected _layerSettings: MapLayerSettings[];\n private _ref: LayerTileTreeReference;\n private readonly _mapTile: boolean;\n private readonly _detachFromDisplayStyle: VoidFunction[] = [];\n\n public get layerTrees() { return this._layerTrees; }\n public get baseColor() { return this._baseColor; }\n public get baseTransparent() { return this._baseTransparent; }\n public get baseImageryLayerIncluded() { return this._baseImageryLayerIncluded; }\n public get layerSettings() { return this._layerSettings; }\n\n public discloseTileTrees(trees: DisclosedTileTreeSet): void {\n for (const imageryTree of this.layerTrees)\n if (imageryTree)\n trees.disclose(imageryTree);\n }\n\n public constructor(ref: LayerTileTreeReference, pIsOverlay: boolean, baseLayerSettings?: BaseLayerSettings, layerSettings?: MapLayerSettings[], mapTile: boolean = false) {\n this._ref = ref;\n this._baseLayerSettings = baseLayerSettings;\n this._layerSettings = layerSettings ? layerSettings : [];\n this.isOverlay = pIsOverlay;\n this._mapTile = mapTile;\n\n let tree;\n if (!this.isOverlay && this._baseLayerSettings !== undefined) {\n if (this._baseLayerSettings instanceof MapLayerSettings) {\n tree = createMapLayerTreeReference(this._baseLayerSettings, 0, this._ref.iModel);\n this._baseTransparent = this._baseLayerSettings.transparency > 0;\n } else {\n this._baseColor = this._baseLayerSettings;\n this._baseTransparent = this._baseColor?.getTransparency() > 0;\n }\n }\n\n if (this._baseImageryLayerIncluded = (undefined !== tree))\n this._layerTrees.push(tree);\n\n if (undefined !== this._layerSettings) {\n for (let i = 0; i < this._layerSettings.length; i++)\n if (undefined !== (tree = createMapLayerTreeReference(this._layerSettings[i], i + 1, this._ref.iModel)))\n this._layerTrees.push(tree);\n }\n }\n\n public initializeLayers(context: SceneContext): boolean {\n // Map tiles handle refresh logic differently\n if(!this._mapTile){\n const removals = this._detachFromDisplayStyle;\n const mapImagery = context.viewport.displayStyle.settings.mapImagery;\n if (0 === removals.length) {\n removals.push(context.viewport.displayStyle.settings.onMapImageryChanged.addListener((imagery: Readonly<MapImagerySettings>) => {\n this.setBaseLayerSettings(imagery.backgroundBase);\n this.setLayerSettings(imagery.backgroundLayers);\n }));\n }\n removals.push(context.viewport.onChangeView.addListener((vp, previousViewState) => {\n if(compareMapLayer(previousViewState, vp.view)){\n this.setBaseLayerSettings(mapImagery.backgroundBase);\n this.setLayerSettings(mapImagery.backgroundLayers);\n }\n }));\n removals.push(context.viewport.onViewedModelsChanged.addListener((viewport) => {\n const layers = viewport.displayStyle.settings.mapImagery.backgroundLayers;\n if (layers.length > 0) {\n this.setBaseLayerSettings(mapImagery.backgroundBase);\n this.setLayerSettings(mapImagery.backgroundLayers);\n viewport.invalidateScene();\n }\n }));\n }\n\n let hasLoadedTileTree = false;\n const layerHandler = this._ref.treeOwner.load()?.layerHandler;\n if (undefined === layerHandler) {\n return hasLoadedTileTree; // Not loaded yet - or no layerHandler on tree.\n }\n\n layerHandler.layerImageryTrees.length = 0;\n if (0 === this._layerTrees.length) {\n return !this.isOverlay;\n }\n\n let treeIndex = this._layerTrees.length - 1;\n // Start displaying at the highest completely opaque layer...\n for (; treeIndex >= 1; treeIndex--) {\n const layerTreeRef = this._layerTrees[treeIndex];\n if (layerTreeRef?.isOpaque)\n break; // This layer is completely opaque and will obscure all others so ignore lower ones.\n }\n\n for (; treeIndex < this._layerTrees.length; treeIndex++) {\n const layerTreeRef = this._layerTrees[treeIndex];\n const hasValidTileTree = layerTreeRef && TileTreeLoadStatus.NotFound !== layerTreeRef.treeOwner.loadStatus;\n const isImageryMapLayer = layerTreeRef instanceof ImageryMapLayerTreeReference;\n const isLayerVisible = (isImageryMapLayer || (!isImageryMapLayer && layerTreeRef?.layerSettings.visible));\n\n if (!this._ref.shouldDrapeLayer(layerTreeRef)) {\n // If the layer is not to be displayed, then we should skip adding it to the tile tree.\n // The _shouldDrapeLayerFunc() function is sent in from MapTileTreeReference or RealityTileTree.\n hasLoadedTileTree = true; // ###TODO had to set this to true so addToScene actually works. alternative?\n continue;\n }\n\n // Load tile tree for each configured layer.\n // Note: Non-visible imagery layer are always added to allow proper tile tree scale range visibility reporting.\n if (hasValidTileTree\n && isLayerVisible\n && !layerTreeRef.layerSettings.allSubLayersInvisible) {\n const layerTree = layerTreeRef.treeOwner.load();\n if (layerTree !== undefined) {\n hasLoadedTileTree = true;\n } else {\n // Let's continue, there might be loaded tile tree in the list\n continue;\n }\n\n // Add loaded TileTree\n const baseImageryLayer = this._baseImageryLayerIncluded && (treeIndex === 0);\n if (layerTree instanceof ImageryMapTileTree) {\n layerHandler.addImageryLayer(layerTree, layerTreeRef.layerSettings, treeIndex, baseImageryLayer);\n } else if (layerTreeRef instanceof ModelMapLayerTileTreeReference)\n layerHandler.addModelLayer(layerTreeRef, context);\n }\n }\n\n return hasLoadedTileTree;\n }\n\n public setBaseLayerSettings(baseLayerSettings: BaseLayerSettings) {\n let tree;\n this._baseLayerSettings = baseLayerSettings;\n\n if (baseLayerSettings instanceof MapLayerSettings) {\n tree = createMapLayerTreeReference(baseLayerSettings, 0, this._ref.iModel);\n this._baseColor = undefined;\n this._baseTransparent = baseLayerSettings.transparency > 0;\n } else {\n this._baseColor = baseLayerSettings;\n this._baseTransparent = this._baseColor.getTransparency() > 0;\n }\n\n if (tree) {\n if (this._baseImageryLayerIncluded)\n this._layerTrees[0] = tree;\n else\n this._layerTrees.splice(0, 0, tree);\n } else {\n if (this._baseImageryLayerIncluded)\n this._layerTrees.shift();\n }\n this._baseImageryLayerIncluded = tree !== undefined;\n this.clearLayers();\n }\n\n public clearLayers() {\n const layerHandler = this._ref.treeOwner.tileTree?.layerHandler;\n if (undefined !== layerHandler) {\n layerHandler.clearLayers();\n }\n }\n\n public setLayerSettings(layerSettings: MapLayerSettings[]) {\n this._layerSettings = layerSettings;\n const baseLayerIndex = this._baseImageryLayerIncluded ? 1 : 0;\n\n this._layerTrees.length = Math.min(layerSettings.length + baseLayerIndex, this._layerTrees.length); // Truncate if number of layers reduced.\n for (let i = 0; i < layerSettings.length; i++) {\n const treeIndex = i + baseLayerIndex;\n if (treeIndex >= this._layerTrees.length || !this._layerTrees[treeIndex]?.layerSettings.displayMatches(layerSettings[i]))\n this._layerTrees[treeIndex] = expectDefined(createMapLayerTreeReference(layerSettings[i], treeIndex, this._ref.iModel));\n }\n this.clearLayers();\n }\n}\n"]}
|
|
1
|
+
{"version":3,"file":"LayerTileTreeReferenceHandler.js","sourceRoot":"","sources":["../../../../src/internal/tile/LayerTileTreeReferenceHandler.ts"],"names":[],"mappings":"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","sourcesContent":["/*---------------------------------------------------------------------------------------------\n* Copyright (c) Bentley Systems, Incorporated. All rights reserved.\n* See LICENSE.md in the project root for license terms and full copyright notice.\n*--------------------------------------------------------------------------------------------*/\n/** @packageDocumentation\n * @module Tiles\n */\n\nimport { expectDefined } from \"@itwin/core-bentley\";\nimport { BaseLayerSettings, ColorDef, MapImagerySettings, MapLayerSettings } from \"@itwin/core-common\";\nimport { SceneContext } from \"../../ViewContext\";\nimport { compareMapLayer, createMapLayerTreeReference, DisclosedTileTreeSet, ImageryMapLayerTreeReference, ImageryMapTileTree, MapLayerTileTreeReference, ModelMapLayerTileTreeReference, TileTreeLoadStatus, TileTreeOwner } from \"../../tile/internal\";\nimport { IModelConnection } from \"../../IModelConnection\";\n\n/** @internal */\nexport interface LayerTileTreeReference {\n iModel: IModelConnection;\n treeOwner: TileTreeOwner;\n shouldDrapeLayer: (layerTreeRef?: MapLayerTileTreeReference) => boolean;\n}\n\n/** @internal */\nexport class LayerTileTreeReferenceHandler {\n protected readonly _layerTrees = new Array<MapLayerTileTreeReference | undefined>();\n public isOverlay: boolean;\n protected _baseImageryLayerIncluded = false;\n protected _baseLayerSettings?: BaseLayerSettings;\n protected _baseTransparent = false;\n protected _baseColor?: ColorDef;\n protected _layerSettings: MapLayerSettings[];\n private _ref: LayerTileTreeReference;\n private readonly _mapTile: boolean;\n private readonly _detachFromDisplayStyle: VoidFunction[] = [];\n\n public get layerTrees() { return this._layerTrees; }\n public get baseColor() { return this._baseColor; }\n public get baseTransparent() { return this._baseTransparent; }\n public get baseImageryLayerIncluded() { return this._baseImageryLayerIncluded; }\n public get layerSettings() { return this._layerSettings; }\n\n public discloseTileTrees(trees: DisclosedTileTreeSet): void {\n for (const imageryTree of this.layerTrees)\n if (imageryTree)\n trees.disclose(imageryTree);\n }\n\n public constructor(ref: LayerTileTreeReference, pIsOverlay: boolean, baseLayerSettings?: BaseLayerSettings, layerSettings?: MapLayerSettings[], mapTile: boolean = false) {\n this._ref = ref;\n this._baseLayerSettings = baseLayerSettings;\n this._layerSettings = layerSettings ? layerSettings : [];\n this.isOverlay = pIsOverlay;\n this._mapTile = mapTile;\n\n let tree;\n if (!this.isOverlay && this._baseLayerSettings !== undefined) {\n if (this._baseLayerSettings instanceof MapLayerSettings) {\n tree = createMapLayerTreeReference(this._baseLayerSettings, 0, this._ref.iModel);\n this._baseTransparent = this._baseLayerSettings.transparency > 0;\n } else {\n this._baseColor = this._baseLayerSettings;\n this._baseTransparent = this._baseColor?.getTransparency() > 0;\n }\n }\n\n if (this._baseImageryLayerIncluded = (undefined !== tree))\n this._layerTrees.push(tree);\n\n if (undefined !== this._layerSettings) {\n for (let i = 0; i < this._layerSettings.length; i++)\n if (undefined !== (tree = createMapLayerTreeReference(this._layerSettings[i], i + 1, this._ref.iModel)))\n this._layerTrees.push(tree);\n }\n }\n\n public detachFromDisplayStyle(): void {\n this._detachFromDisplayStyle.forEach((f) => f());\n this._detachFromDisplayStyle.length = 0;\n }\n\n public initializeLayers(context: SceneContext): boolean {\n // Map tiles handle refresh logic differently\n if(!this._mapTile){\n const removals = this._detachFromDisplayStyle;\n if (0 === removals.length) {\n removals.push(context.viewport.displayStyle.settings.onMapImageryChanged.addListener((imagery: Readonly<MapImagerySettings>) => {\n this.setBaseLayerSettings(imagery.backgroundBase);\n this.setLayerSettings(imagery.backgroundLayers);\n }));\n removals.push(context.viewport.onChangeView.addListener((vp, previousViewState) => {\n if(compareMapLayer(previousViewState, vp.view)){\n const currentImagery = vp.displayStyle.settings.mapImagery;\n this.setBaseLayerSettings(currentImagery.backgroundBase);\n this.setLayerSettings(currentImagery.backgroundLayers);\n }\n }));\n removals.push(context.viewport.onViewedModelsChanged.addListener((viewport) => {\n const currentImagery = viewport.displayStyle.settings.mapImagery;\n if (currentImagery.backgroundLayers.length > 0) {\n this.setBaseLayerSettings(currentImagery.backgroundBase);\n this.setLayerSettings(currentImagery.backgroundLayers);\n viewport.invalidateScene();\n }\n }));\n }\n }\n\n let hasLoadedTileTree = false;\n const layerHandler = this._ref.treeOwner.load()?.layerHandler;\n if (undefined === layerHandler) {\n return hasLoadedTileTree; // Not loaded yet - or no layerHandler on tree.\n }\n\n layerHandler.layerImageryTrees.length = 0;\n if (0 === this._layerTrees.length) {\n return !this.isOverlay;\n }\n\n let treeIndex = this._layerTrees.length - 1;\n // Start displaying at the highest completely opaque layer...\n for (; treeIndex >= 1; treeIndex--) {\n const layerTreeRef = this._layerTrees[treeIndex];\n if (layerTreeRef?.isOpaque)\n break; // This layer is completely opaque and will obscure all others so ignore lower ones.\n }\n\n for (; treeIndex < this._layerTrees.length; treeIndex++) {\n const layerTreeRef = this._layerTrees[treeIndex];\n const hasValidTileTree = layerTreeRef && TileTreeLoadStatus.NotFound !== layerTreeRef.treeOwner.loadStatus;\n const isImageryMapLayer = layerTreeRef instanceof ImageryMapLayerTreeReference;\n const isLayerVisible = (isImageryMapLayer || (!isImageryMapLayer && layerTreeRef?.layerSettings.visible));\n\n if (!this._ref.shouldDrapeLayer(layerTreeRef)) {\n // If the layer is not to be displayed, then we should skip adding it to the tile tree.\n // The _shouldDrapeLayerFunc() function is sent in from MapTileTreeReference or RealityTileTree.\n hasLoadedTileTree = true; // ###TODO had to set this to true so addToScene actually works. alternative?\n continue;\n }\n\n // Load tile tree for each configured layer.\n // Note: Non-visible imagery layer are always added to allow proper tile tree scale range visibility reporting.\n if (hasValidTileTree\n && isLayerVisible\n && !layerTreeRef.layerSettings.allSubLayersInvisible) {\n const layerTree = layerTreeRef.treeOwner.load();\n if (layerTree !== undefined) {\n hasLoadedTileTree = true;\n } else {\n // Let's continue, there might be loaded tile tree in the list\n continue;\n }\n\n // Add loaded TileTree\n const baseImageryLayer = this._baseImageryLayerIncluded && (treeIndex === 0);\n if (layerTree instanceof ImageryMapTileTree) {\n layerHandler.addImageryLayer(layerTree, layerTreeRef.layerSettings, treeIndex, baseImageryLayer);\n } else if (layerTreeRef instanceof ModelMapLayerTileTreeReference)\n layerHandler.addModelLayer(layerTreeRef, context);\n }\n }\n\n return hasLoadedTileTree;\n }\n\n public setBaseLayerSettings(baseLayerSettings: BaseLayerSettings) {\n let tree;\n this._baseLayerSettings = baseLayerSettings;\n\n if (baseLayerSettings instanceof MapLayerSettings) {\n tree = createMapLayerTreeReference(baseLayerSettings, 0, this._ref.iModel);\n this._baseColor = undefined;\n this._baseTransparent = baseLayerSettings.transparency > 0;\n } else {\n this._baseColor = baseLayerSettings;\n this._baseTransparent = this._baseColor.getTransparency() > 0;\n }\n\n if (tree) {\n if (this._baseImageryLayerIncluded)\n this._layerTrees[0] = tree;\n else\n this._layerTrees.splice(0, 0, tree);\n } else {\n if (this._baseImageryLayerIncluded)\n this._layerTrees.shift();\n }\n this._baseImageryLayerIncluded = tree !== undefined;\n this.clearLayers();\n }\n\n public clearLayers() {\n const layerHandler = this._ref.treeOwner.tileTree?.layerHandler;\n if (undefined !== layerHandler) {\n layerHandler.clearLayers();\n }\n }\n\n public setLayerSettings(layerSettings: MapLayerSettings[]) {\n this._layerSettings = layerSettings;\n const baseLayerIndex = this._baseImageryLayerIncluded ? 1 : 0;\n\n this._layerTrees.length = Math.min(layerSettings.length + baseLayerIndex, this._layerTrees.length); // Truncate if number of layers reduced.\n for (let i = 0; i < layerSettings.length; i++) {\n const treeIndex = i + baseLayerIndex;\n if (treeIndex >= this._layerTrees.length || !this._layerTrees[treeIndex]?.layerSettings.displayMatches(layerSettings[i]))\n this._layerTrees[treeIndex] = expectDefined(createMapLayerTreeReference(layerSettings[i], treeIndex, this._ref.iModel));\n }\n this.clearLayers();\n }\n}\n"]}
|
|
@@ -45,6 +45,7 @@ declare class PrimaryTreeReference extends TileTreeReference {
|
|
|
45
45
|
protected getHiddenLineSettings(_tree: TileTree): HiddenLine.Settings | undefined;
|
|
46
46
|
get castsShadows(): boolean;
|
|
47
47
|
protected get isPlanProjection(): boolean;
|
|
48
|
+
detachLayerListeners(): void;
|
|
48
49
|
discloseTileTrees(trees: DisclosedTileTreeSet): void;
|
|
49
50
|
protected getClipVolume(_tree: TileTree): RenderClipVolume | undefined;
|
|
50
51
|
canSupplyToolTip(): boolean;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"PrimaryTileTree.d.ts","sourceRoot":"","sources":["../../../../src/internal/tile/PrimaryTileTree.ts"],"names":[],"mappings":"AAIA;;GAEG;AAEH,OAAO,EAC6C,UAAU,EAC5D,mBAAmB,EACpB,MAAM,qBAAqB,CAAC;AAC7B,OAAO,EACL,iBAAiB,EACuC,yBAAyB,EAAE,UAAU,EAA4B,gBAAgB,EAA4B,qBAAqB,EAC1L,iBAAiB,EAAc,cAAc,EAAE,iBAAiB,EAAE,iBAAiB,EAAE,mBAAmB,EACzG,MAAM,oBAAoB,CAAC;AAC5B,OAAO,EAAE,OAAO,EAAE,qBAAqB,EAAE,SAAS,EAAE,MAAM,sBAAsB,CAAC;AACjF,OAAO,EAAE,iBAAiB,EAAE,MAAM,yBAAyB,CAAC;AAE5D,OAAO,EAAE,gBAAgB,EAAE,MAAM,wBAAwB,CAAC;AAC1D,OAAO,EAAyB,mBAAmB,EAAE,MAAM,kBAAkB,CAAC;AAG9E,OAAO,EAAE,gBAAgB,EAAE,MAAM,+BAA+B,CAAC;AACjE,OAAO,EAAE,gBAAgB,EAAE,MAAM,wBAAwB,CAAC;AAC1D,OAAO,EAAE,YAAY,EAAE,MAAM,mBAAmB,CAAC;AACjD,OAAO,EAAE,oBAAoB,EAAE,SAAS,EAAe,MAAM,iBAAiB,CAAC;AAC/E,OAAO,EACL,oBAAoB,EAC+E,yBAAyB,
|
|
1
|
+
{"version":3,"file":"PrimaryTileTree.d.ts","sourceRoot":"","sources":["../../../../src/internal/tile/PrimaryTileTree.ts"],"names":[],"mappings":"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"}
|
|
@@ -11,7 +11,7 @@ import { Range3d, StringifiedClipVector, Transform } from "@itwin/core-geometry"
|
|
|
11
11
|
import { IModelApp } from "../../IModelApp";
|
|
12
12
|
import { formatAnimationBranchId } from "../../internal/render/AnimationBranchState";
|
|
13
13
|
import { AnimationNodeId } from "../../common/internal/render/AnimationNodeId";
|
|
14
|
-
import { IModelTileTree, iModelTileTreeParamsFromJSON, LayerTileTreeReferenceHandler, MapLayerTileTreeReference, TileGraphicType, TileTreeReference, } from "../../tile/internal";
|
|
14
|
+
import { IModelTileTree, iModelTileTreeParamsFromJSON, LayerTileTreeReferenceHandler, MapLayerTileTreeReference, RealityModelTileTree, TileGraphicType, TileTreeReference, } from "../../tile/internal";
|
|
15
15
|
import { _scheduleScriptReference } from "../../common/internal/Symbols";
|
|
16
16
|
class PlanProjectionTileTree extends IModelTileTree {
|
|
17
17
|
baseElevation;
|
|
@@ -156,6 +156,9 @@ class PrimaryTreeReference extends TileTreeReference {
|
|
|
156
156
|
get isPlanProjection() {
|
|
157
157
|
return false;
|
|
158
158
|
}
|
|
159
|
+
detachLayerListeners() {
|
|
160
|
+
this._layerRefHandler.detachFromDisplayStyle();
|
|
161
|
+
}
|
|
159
162
|
discloseTileTrees(trees) {
|
|
160
163
|
super.discloseTileTrees(trees);
|
|
161
164
|
this._layerRefHandler.discloseTileTrees(trees);
|
|
@@ -514,6 +517,16 @@ class SpatialModelRefs {
|
|
|
514
517
|
for (const ref of this._animatedRefs)
|
|
515
518
|
ref.deactivated = deactivated ?? !ref.deactivated;
|
|
516
519
|
}
|
|
520
|
+
detachLayerListeners() {
|
|
521
|
+
if (this._primaryRef)
|
|
522
|
+
this._primaryRef.detachLayerListeners();
|
|
523
|
+
else if (this._modelRef instanceof RealityModelTileTree.Reference)
|
|
524
|
+
this._modelRef.detachLayerListeners();
|
|
525
|
+
for (const ref of this._animatedRefs)
|
|
526
|
+
ref.detachLayerListeners();
|
|
527
|
+
if (this._sectionCutRef)
|
|
528
|
+
this._sectionCutRef.detachLayerListeners();
|
|
529
|
+
}
|
|
517
530
|
get _primaryRef() {
|
|
518
531
|
if (!this._isPrimaryRef)
|
|
519
532
|
return undefined;
|
|
@@ -543,7 +556,16 @@ class SpatialRefs {
|
|
|
543
556
|
this._allLoaded = false;
|
|
544
557
|
}
|
|
545
558
|
attachToViewport() { }
|
|
546
|
-
detachFromViewport() {
|
|
559
|
+
detachFromViewport() {
|
|
560
|
+
for (const refs of this._refs.values())
|
|
561
|
+
refs.detachLayerListeners();
|
|
562
|
+
for (const refs of this._swapRefs.values())
|
|
563
|
+
refs.detachLayerListeners();
|
|
564
|
+
for (const refs of this._sectionCutOnlyRefs.values())
|
|
565
|
+
refs.detachLayerListeners();
|
|
566
|
+
for (const refs of this._swapSectionCutOnlyRefs.values())
|
|
567
|
+
refs.detachLayerListeners();
|
|
568
|
+
}
|
|
547
569
|
*[Symbol.iterator]() {
|
|
548
570
|
this.load();
|
|
549
571
|
for (const modelRef of this._refs.values())
|
|
@@ -629,7 +651,10 @@ class SpatialRefs {
|
|
|
629
651
|
prev = this._swapRefs;
|
|
630
652
|
}
|
|
631
653
|
let modelRefs = prev.get(modelId);
|
|
632
|
-
if (
|
|
654
|
+
if (modelRefs) {
|
|
655
|
+
prev.delete(modelId);
|
|
656
|
+
}
|
|
657
|
+
else {
|
|
633
658
|
const model = this._view.iModel.models.getLoaded(modelId)?.asGeometricModel3d;
|
|
634
659
|
if (model) {
|
|
635
660
|
modelRefs = new SpatialModelRefs(model, this._view, excluded);
|
|
@@ -640,6 +665,11 @@ class SpatialRefs {
|
|
|
640
665
|
if (modelRefs)
|
|
641
666
|
cur.set(modelId, modelRefs);
|
|
642
667
|
}
|
|
668
|
+
// Detach event listeners from model refs that are no longer in the selector.
|
|
669
|
+
for (const dropped of this._swapRefs.values())
|
|
670
|
+
dropped.detachLayerListeners();
|
|
671
|
+
for (const dropped of this._swapSectionCutOnlyRefs.values())
|
|
672
|
+
dropped.detachLayerListeners();
|
|
643
673
|
}
|
|
644
674
|
}
|
|
645
675
|
//# sourceMappingURL=PrimaryTileTree.js.map
|