@itwin/frontend-tiles 4.0.0-dev.93 → 4.0.0-dev.95

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 (55) hide show
  1. package/.rush/temp/operation/build/state.json +1 -1
  2. package/.rush/temp/package-deps_build.json +7 -6
  3. package/lib/cjs/BatchedModels.d.ts +16 -0
  4. package/lib/cjs/BatchedModels.d.ts.map +1 -0
  5. package/lib/cjs/BatchedModels.js +48 -0
  6. package/lib/cjs/BatchedModels.js.map +1 -0
  7. package/lib/cjs/BatchedSpatialTileTreeRefs.d.ts.map +1 -1
  8. package/lib/cjs/BatchedSpatialTileTreeRefs.js +59 -11
  9. package/lib/cjs/BatchedSpatialTileTreeRefs.js.map +1 -1
  10. package/lib/cjs/BatchedTile.d.ts.map +1 -1
  11. package/lib/cjs/BatchedTile.js +1 -0
  12. package/lib/cjs/BatchedTile.js.map +1 -1
  13. package/lib/cjs/BatchedTileTree.d.ts +3 -1
  14. package/lib/cjs/BatchedTileTree.d.ts.map +1 -1
  15. package/lib/cjs/BatchedTileTree.js +1 -0
  16. package/lib/cjs/BatchedTileTree.js.map +1 -1
  17. package/lib/cjs/BatchedTileTreeReference.d.ts +28 -16
  18. package/lib/cjs/BatchedTileTreeReference.d.ts.map +1 -1
  19. package/lib/cjs/BatchedTileTreeReference.js +48 -47
  20. package/lib/cjs/BatchedTileTreeReference.js.map +1 -1
  21. package/lib/cjs/BatchedTileTreeSupplier.d.ts +6 -2
  22. package/lib/cjs/BatchedTileTreeSupplier.d.ts.map +1 -1
  23. package/lib/cjs/BatchedTileTreeSupplier.js +7 -5
  24. package/lib/cjs/BatchedTileTreeSupplier.js.map +1 -1
  25. package/lib/cjs/tsconfig.tsbuildinfo +1 -1
  26. package/lib/esm/BatchedModels.d.ts +16 -0
  27. package/lib/esm/BatchedModels.d.ts.map +1 -0
  28. package/lib/esm/BatchedModels.js +44 -0
  29. package/lib/esm/BatchedModels.js.map +1 -0
  30. package/lib/esm/BatchedSpatialTileTreeRefs.d.ts.map +1 -1
  31. package/lib/esm/BatchedSpatialTileTreeRefs.js +60 -12
  32. package/lib/esm/BatchedSpatialTileTreeRefs.js.map +1 -1
  33. package/lib/esm/BatchedTile.d.ts.map +1 -1
  34. package/lib/esm/BatchedTile.js +1 -0
  35. package/lib/esm/BatchedTile.js.map +1 -1
  36. package/lib/esm/BatchedTileTree.d.ts +3 -1
  37. package/lib/esm/BatchedTileTree.d.ts.map +1 -1
  38. package/lib/esm/BatchedTileTree.js +1 -0
  39. package/lib/esm/BatchedTileTree.js.map +1 -1
  40. package/lib/esm/BatchedTileTreeReference.d.ts +28 -16
  41. package/lib/esm/BatchedTileTreeReference.d.ts.map +1 -1
  42. package/lib/esm/BatchedTileTreeReference.js +45 -46
  43. package/lib/esm/BatchedTileTreeReference.js.map +1 -1
  44. package/lib/esm/BatchedTileTreeSupplier.d.ts +6 -2
  45. package/lib/esm/BatchedTileTreeSupplier.d.ts.map +1 -1
  46. package/lib/esm/BatchedTileTreeSupplier.js +8 -6
  47. package/lib/esm/BatchedTileTreeSupplier.js.map +1 -1
  48. package/lib/esm/tsconfig.tsbuildinfo +1 -1
  49. package/package.json +10 -10
  50. package/src/BatchedModels.ts +58 -0
  51. package/src/BatchedSpatialTileTreeRefs.ts +79 -13
  52. package/src/BatchedTile.ts +1 -0
  53. package/src/BatchedTileTree.ts +4 -1
  54. package/src/BatchedTileTreeReference.ts +69 -58
  55. package/src/BatchedTileTreeSupplier.ts +15 -8
@@ -1 +1 @@
1
- {"version":3,"file":"BatchedTileTreeReference.js","sourceRoot":"","sources":["../../src/BatchedTileTreeReference.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\r\nimport { Id64, Id64String } from \"@itwin/core-bentley\";\r\nimport { Range3d } from \"@itwin/core-geometry\";\r\nimport {\r\n BatchType, FeatureAppearance, FeatureAppearanceProvider, FeatureAppearanceSource, GeometryClass, ModelExtentsProps,\r\n} from \"@itwin/core-common\";\r\nimport {\r\n AttachToViewportArgs, SpatialViewState, TileTreeOwner, TileTreeReference,\r\n} from \"@itwin/core-frontend\";\r\nimport { getBatchedTileTreeOwner } from \"./BatchedTileTreeSupplier\";\r\n\r\n/** @internal */\r\nexport class BatchedTileTreeReference extends TileTreeReference implements FeatureAppearanceProvider {\r\n private readonly _treeOwner: TileTreeOwner;\r\n private readonly _view: SpatialViewState;\r\n private readonly _viewedModels = new Id64.Uint32Set();\r\n private readonly _modelRanges = new Map<Id64String, Range3d>();\r\n private _modelRangePromise?: Promise<void>;\r\n private _onModelSelectorChanged?: () => void;\r\n\r\n private constructor(treeOwner: TileTreeOwner, view: SpatialViewState) {\r\n super();\r\n this._treeOwner = treeOwner;\r\n this._view = view;\r\n }\r\n\r\n public static create(view: SpatialViewState, baseUrl: URL): BatchedTileTreeReference {\r\n const owner = getBatchedTileTreeOwner(view.iModel, baseUrl);\r\n return new BatchedTileTreeReference(owner, view);\r\n }\r\n\r\n public override get treeOwner(): TileTreeOwner {\r\n return this._treeOwner;\r\n }\r\n\r\n public attachToViewport(args: AttachToViewportArgs): void {\r\n this._onModelSelectorChanged = () => args.invalidateSymbologyOverrides();\r\n this.updateViewedModels();\r\n }\r\n\r\n public detachFromViewport(): void {\r\n this._onModelSelectorChanged = undefined;\r\n }\r\n\r\n public updateViewedModels(): void {\r\n this._viewedModels.clear();\r\n this._viewedModels.addIds(this._view.modelSelector.models);\r\n if (!this._onModelSelectorChanged) {\r\n // Don't bother updating model ranges if we're not attached to a viewport.\r\n return;\r\n }\r\n\r\n this._onModelSelectorChanged();\r\n\r\n this._modelRangePromise = undefined;\r\n const modelIds = Array.from(this._view.modelSelector.models).filter((modelId) => !this._modelRanges.has(modelId));\r\n if (modelIds.length === 0)\r\n return;\r\n\r\n const modelRangePromise = this._modelRangePromise = this._treeOwner.iModel.models.queryExtents(modelIds).then((extents: ModelExtentsProps[]) => {\r\n if (modelRangePromise !== this._modelRangePromise)\r\n return;\r\n\r\n this._modelRangePromise = undefined;\r\n for (const extent of extents)\r\n this._modelRanges.set(extent.id, Range3d.fromJSON(extent.extents));\r\n }).catch(() => { });\r\n }\r\n\r\n public override unionFitRange(union: Range3d): void {\r\n this._viewedModels.forEach((low: number, high: number) => {\r\n const id = Id64.fromUint32Pair(low, high);\r\n const extent = this._modelRanges.get(id);\r\n if (extent)\r\n union.extendRange(extent);\r\n });\r\n }\r\n\r\n public override getAppearanceProvider(): FeatureAppearanceProvider | undefined {\r\n return this._onModelSelectorChanged ? this : undefined;\r\n }\r\n\r\n public getFeatureAppearance(\r\n source: FeatureAppearanceSource,\r\n elemLo: number, elemHi: number,\r\n subcatLo: number, subcatHi: number,\r\n geomClass: GeometryClass,\r\n modelLo: number, modelHi: number,\r\n type: BatchType,\r\n animationNodeId: number\r\n ): FeatureAppearance | undefined {\r\n // ###TODO: Until MultiModelPackedFeatureTable is hooked up we'll always get the transient model Id - remove check after that.\r\n if (modelHi !== 0xffffff00 && !this._viewedModels.has(modelLo, modelHi))\r\n return undefined;\r\n\r\n return source.getAppearance(elemLo, elemHi, subcatLo, subcatHi, geomClass, modelLo, modelHi, type, animationNodeId);\r\n }\r\n}\r\n"]}
1
+ {"version":3,"file":"BatchedTileTreeReference.js","sourceRoot":"","sources":["../../src/BatchedTileTreeReference.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\r\nimport { Range3d, Transform } from \"@itwin/core-geometry\";\r\nimport {\r\n BatchType, FeatureAppearance, FeatureAppearanceProvider, FeatureAppearanceSource, GeometryClass, RenderSchedule,\r\n} from \"@itwin/core-common\";\r\nimport {\r\n AnimationNodeId, formatAnimationBranchId, SceneContext, TileDrawArgs, TileTree, TileTreeOwner, TileTreeReference,\r\n} from \"@itwin/core-frontend\";\r\nimport { BatchedModels } from \"./BatchedModels\";\r\n\r\n/** @internal */\r\nexport abstract class BatchedTileTreeReference extends TileTreeReference {\r\n protected readonly _treeOwner: TileTreeOwner;\r\n\r\n protected constructor(treeOwner: TileTreeOwner) {\r\n super();\r\n this._treeOwner = treeOwner;\r\n }\r\n\r\n public override get treeOwner(): TileTreeOwner {\r\n return this._treeOwner;\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 // ###TODO this.view.modelDisplayTransformProvider?.getModelDisplayTransform(modelId...)\r\n return baseTf;\r\n }\r\n}\r\n\r\nexport class PrimaryBatchedTileTreeReference extends BatchedTileTreeReference implements FeatureAppearanceProvider {\r\n private readonly _models: BatchedModels;\r\n\r\n public constructor(treeOwner: TileTreeOwner, models: BatchedModels) {\r\n super(treeOwner);\r\n this._models = models;\r\n }\r\n\r\n public override unionFitRange(range: Range3d): void {\r\n this._models.unionRange(range);\r\n }\r\n\r\n public override getAppearanceProvider(): FeatureAppearanceProvider | undefined {\r\n return this;\r\n }\r\n\r\n public getFeatureAppearance(\r\n source: FeatureAppearanceSource,\r\n elemLo: number, elemHi: number,\r\n subcatLo: number, subcatHi: number,\r\n geomClass: GeometryClass,\r\n modelLo: number, modelHi: number,\r\n type: BatchType,\r\n animationNodeId: number\r\n ): FeatureAppearance | undefined {\r\n if (!this._models.isViewed(modelLo, modelHi))\r\n return undefined;\r\n\r\n return source.getAppearance(elemLo, elemHi, subcatLo, subcatHi, geomClass, modelLo, modelHi, type, animationNodeId);\r\n }\r\n\r\n public override getAnimationTransformNodeId() {\r\n return AnimationNodeId.Untransformed;\r\n }\r\n}\r\n\r\nexport interface AnimationNode {\r\n readonly timeline: RenderSchedule.ModelTimeline;\r\n readonly nodeId: number;\r\n getCurrentTimePoint(): number;\r\n}\r\n\r\nexport class AnimatedBatchedTileTreeReference extends BatchedTileTreeReference {\r\n private readonly _node: AnimationNode;\r\n private readonly _branchId: string;\r\n\r\n public constructor(treeOwner: TileTreeOwner, node: AnimationNode) {\r\n super(treeOwner);\r\n this._node = node;\r\n this._branchId = formatAnimationBranchId(node.timeline.modelId, node.nodeId);\r\n }\r\n\r\n public override getAnimationTransformNodeId(): number {\r\n return this._node.nodeId;\r\n }\r\n\r\n public override computeBaseTransform(tree: TileTree): Transform {\r\n const tf = super.computeBaseTransform(tree);\r\n const animTf = this._node.timeline.getTransform(this._node.nodeId, this._node.getCurrentTimePoint());\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 // ###TODO args.boundingRange = args.tree.getTransformNodeRange(this._animationTransformNodeId);\r\n return args;\r\n }\r\n}\r\n"]}
@@ -1,6 +1,10 @@
1
+ import { RenderSchedule } from "@itwin/core-common";
1
2
  import { IModelConnection, TileTreeOwner } from "@itwin/core-frontend";
2
3
  /** @internal */
3
- export type TreeId = URL;
4
+ export interface BatchedTileTreeId {
5
+ baseUrl: URL;
6
+ script?: RenderSchedule.Script;
7
+ }
4
8
  /** @internal */
5
- export declare function getBatchedTileTreeOwner(iModel: IModelConnection, baseUrl: URL): TileTreeOwner;
9
+ export declare function getBatchedTileTreeOwner(iModel: IModelConnection, treeId: BatchedTileTreeId): TileTreeOwner;
6
10
  //# sourceMappingURL=BatchedTileTreeSupplier.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"BatchedTileTreeSupplier.d.ts","sourceRoot":"","sources":["../../src/BatchedTileTreeSupplier.ts"],"names":[],"mappings":"AAMA,OAAO,EACL,gBAAgB,EAAY,aAAa,EAC1C,MAAM,sBAAsB,CAAC;AAK9B,gBAAgB;AAChB,MAAM,MAAM,MAAM,GAAG,GAAG,CAAC;AA2BzB,gBAAgB;AAChB,wBAAgB,uBAAuB,CAAC,MAAM,EAAE,gBAAgB,EAAE,OAAO,EAAE,GAAG,GAAG,aAAa,CAE7F"}
1
+ {"version":3,"file":"BatchedTileTreeSupplier.d.ts","sourceRoot":"","sources":["../../src/BatchedTileTreeSupplier.ts"],"names":[],"mappings":"AAMA,OAAO,EAAE,cAAc,EAAE,MAAM,oBAAoB,CAAC;AACpD,OAAO,EACL,gBAAgB,EAAY,aAAa,EAC1C,MAAM,sBAAsB,CAAC;AAK9B,gBAAgB;AAChB,MAAM,WAAW,iBAAiB;IAChC,OAAO,EAAE,GAAG,CAAC;IACb,MAAM,CAAC,EAAE,cAAc,CAAC,MAAM,CAAC;CAChC;AA8BD,gBAAgB;AAChB,wBAAgB,uBAAuB,CAAC,MAAM,EAAE,gBAAgB,EAAE,MAAM,EAAE,iBAAiB,GAAG,aAAa,CAE1G"}
@@ -11,10 +11,11 @@ const BatchedTilesetReader_1 = require("./BatchedTilesetReader");
11
11
  const BatchedTileTree_1 = require("./BatchedTileTree");
12
12
  class BatchedTileTreeSupplier {
13
13
  compareTileTreeIds(lhs, rhs) {
14
- // Currently each iModel has exactly 1 unique tile tree for all spatial models.
15
- return (0, core_bentley_1.compareStrings)(lhs.toString(), rhs.toString());
14
+ return (0, core_bentley_1.compareStrings)(lhs.toString(), rhs.toString())
15
+ || (0, core_bentley_1.comparePossiblyUndefined)((x, y) => x.compareTo(y), lhs.script, rhs.script);
16
16
  }
17
- async createTileTree(baseUrl, iModel) {
17
+ async createTileTree(treeId, iModel) {
18
+ const baseUrl = treeId.baseUrl;
18
19
  const url = new URL("tileset.json", baseUrl);
19
20
  url.search = baseUrl.search;
20
21
  try {
@@ -22,6 +23,7 @@ class BatchedTileTreeSupplier {
22
23
  const json = await response.json();
23
24
  const reader = new BatchedTilesetReader_1.BatchedTilesetReader(json, iModel, baseUrl);
24
25
  const params = await reader.readTileTreeParams();
26
+ params.script = treeId.script;
25
27
  return new BatchedTileTree_1.BatchedTileTree(params);
26
28
  }
27
29
  catch (err) {
@@ -32,8 +34,8 @@ class BatchedTileTreeSupplier {
32
34
  }
33
35
  const batchedTileTreeSupplier = new BatchedTileTreeSupplier();
34
36
  /** @internal */
35
- function getBatchedTileTreeOwner(iModel, baseUrl) {
36
- return iModel.tiles.getTileTreeOwner(baseUrl, batchedTileTreeSupplier);
37
+ function getBatchedTileTreeOwner(iModel, treeId) {
38
+ return iModel.tiles.getTileTreeOwner(treeId, batchedTileTreeSupplier);
37
39
  }
38
40
  exports.getBatchedTileTreeOwner = getBatchedTileTreeOwner;
39
41
  //# sourceMappingURL=BatchedTileTreeSupplier.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"BatchedTileTreeSupplier.js","sourceRoot":"","sources":["../../src/BatchedTileTreeSupplier.ts"],"names":[],"mappings":";AAAA;;;+FAG+F;;;AAE/F,sDAA6D;AAI7D,qDAAkD;AAClD,iEAA8D;AAC9D,uDAAoD;AAKpD,MAAM,uBAAuB;IACpB,kBAAkB,CAAC,GAAW,EAAE,GAAW;QAChD,+EAA+E;QAC/E,OAAO,IAAA,6BAAc,EAAC,GAAG,CAAC,QAAQ,EAAE,EAAE,GAAG,CAAC,QAAQ,EAAE,CAAC,CAAC;IACxD,CAAC;IAEM,KAAK,CAAC,cAAc,CAAC,OAAe,EAAE,MAAwB;QACnE,MAAM,GAAG,GAAG,IAAI,GAAG,CAAC,cAAc,EAAE,OAAO,CAAC,CAAC;QAC7C,GAAG,CAAC,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC;QAC5B,IAAI;YACF,MAAM,QAAQ,GAAG,MAAM,KAAK,CAAC,GAAG,CAAC,QAAQ,EAAE,CAAC,CAAC;YAC7C,MAAM,IAAI,GAAG,MAAM,QAAQ,CAAC,IAAI,EAAE,CAAC;YAEnC,MAAM,MAAM,GAAG,IAAI,2CAAoB,CAAC,IAAI,EAAE,MAAM,EAAE,OAAO,CAAC,CAAC;YAC/D,MAAM,MAAM,GAAG,MAAM,MAAM,CAAC,kBAAkB,EAAE,CAAC;YACjD,OAAO,IAAI,iCAAe,CAAC,MAAM,CAAC,CAAC;SACpC;QAAC,OAAO,GAAG,EAAE;YACZ,qBAAM,CAAC,YAAY,CAAC,+BAAc,EAAE,GAAG,CAAC,CAAC;YACzC,OAAO,SAAS,CAAC;SAClB;IACH,CAAC;CACF;AAED,MAAM,uBAAuB,GAAqB,IAAI,uBAAuB,EAAE,CAAC;AAEhF,gBAAgB;AAChB,SAAgB,uBAAuB,CAAC,MAAwB,EAAE,OAAY;IAC5E,OAAO,MAAM,CAAC,KAAK,CAAC,gBAAgB,CAAC,OAAO,EAAE,uBAAuB,CAAC,CAAC;AACzE,CAAC;AAFD,0DAEC","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\r\nimport { compareStrings, Logger } from \"@itwin/core-bentley\";\r\nimport {\r\n IModelConnection, TileTree, TileTreeOwner, TileTreeSupplier,\r\n} from \"@itwin/core-frontend\";\r\nimport { loggerCategory } from \"./LoggerCategory\";\r\nimport { BatchedTilesetReader } from \"./BatchedTilesetReader\";\r\nimport { BatchedTileTree } from \"./BatchedTileTree\";\r\n\r\n/** @internal */\r\nexport type TreeId = URL;\r\n\r\nclass BatchedTileTreeSupplier implements TileTreeSupplier {\r\n public compareTileTreeIds(lhs: TreeId, rhs: TreeId): number {\r\n // Currently each iModel has exactly 1 unique tile tree for all spatial models.\r\n return compareStrings(lhs.toString(), rhs.toString());\r\n }\r\n\r\n public async createTileTree(baseUrl: TreeId, iModel: IModelConnection): Promise<TileTree | undefined> {\r\n const url = new URL(\"tileset.json\", baseUrl);\r\n url.search = baseUrl.search;\r\n try {\r\n const response = await fetch(url.toString());\r\n const json = await response.json();\r\n\r\n const reader = new BatchedTilesetReader(json, iModel, baseUrl);\r\n const params = await reader.readTileTreeParams();\r\n return new BatchedTileTree(params);\r\n } catch (err) {\r\n Logger.logException(loggerCategory, err);\r\n return undefined;\r\n }\r\n }\r\n}\r\n\r\nconst batchedTileTreeSupplier: TileTreeSupplier = new BatchedTileTreeSupplier();\r\n\r\n/** @internal */\r\nexport function getBatchedTileTreeOwner(iModel: IModelConnection, baseUrl: URL): TileTreeOwner {\r\n return iModel.tiles.getTileTreeOwner(baseUrl, batchedTileTreeSupplier);\r\n}\r\n"]}
1
+ {"version":3,"file":"BatchedTileTreeSupplier.js","sourceRoot":"","sources":["../../src/BatchedTileTreeSupplier.ts"],"names":[],"mappings":";AAAA;;;+FAG+F;;;AAE/F,sDAAuF;AAKvF,qDAAkD;AAClD,iEAA8D;AAC9D,uDAAoD;AAQpD,MAAM,uBAAuB;IACpB,kBAAkB,CAAC,GAAsB,EAAE,GAAsB;QACtE,OAAO,IAAA,6BAAc,EAAC,GAAG,CAAC,QAAQ,EAAE,EAAE,GAAG,CAAC,QAAQ,EAAE,CAAC;eAChD,IAAA,uCAAwB,EAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,EAAE,GAAG,CAAC,MAAM,EAAE,GAAG,CAAC,MAAM,CAAC,CAAC;IAClF,CAAC;IAEM,KAAK,CAAC,cAAc,CAAC,MAAyB,EAAE,MAAwB;QAC7E,MAAM,OAAO,GAAG,MAAM,CAAC,OAAO,CAAC;QAC/B,MAAM,GAAG,GAAG,IAAI,GAAG,CAAC,cAAc,EAAE,OAAO,CAAC,CAAC;QAC7C,GAAG,CAAC,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC;QAC5B,IAAI;YACF,MAAM,QAAQ,GAAG,MAAM,KAAK,CAAC,GAAG,CAAC,QAAQ,EAAE,CAAC,CAAC;YAC7C,MAAM,IAAI,GAAG,MAAM,QAAQ,CAAC,IAAI,EAAE,CAAC;YAEnC,MAAM,MAAM,GAAG,IAAI,2CAAoB,CAAC,IAAI,EAAE,MAAM,EAAE,OAAO,CAAC,CAAC;YAC/D,MAAM,MAAM,GAAG,MAAM,MAAM,CAAC,kBAAkB,EAAE,CAAC;YAEjD,MAAM,CAAC,MAAM,GAAG,MAAM,CAAC,MAAM,CAAC;YAC9B,OAAO,IAAI,iCAAe,CAAC,MAAM,CAAC,CAAC;SACpC;QAAC,OAAO,GAAG,EAAE;YACZ,qBAAM,CAAC,YAAY,CAAC,+BAAc,EAAE,GAAG,CAAC,CAAC;YACzC,OAAO,SAAS,CAAC;SAClB;IACH,CAAC;CACF;AAED,MAAM,uBAAuB,GAAqB,IAAI,uBAAuB,EAAE,CAAC;AAEhF,gBAAgB;AAChB,SAAgB,uBAAuB,CAAC,MAAwB,EAAE,MAAyB;IACzF,OAAO,MAAM,CAAC,KAAK,CAAC,gBAAgB,CAAC,MAAM,EAAE,uBAAuB,CAAC,CAAC;AACxE,CAAC;AAFD,0DAEC","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\r\nimport { comparePossiblyUndefined, compareStrings, Logger } from \"@itwin/core-bentley\";\r\nimport { RenderSchedule } from \"@itwin/core-common\";\r\nimport {\r\n IModelConnection, TileTree, TileTreeOwner, TileTreeSupplier,\r\n} from \"@itwin/core-frontend\";\r\nimport { loggerCategory } from \"./LoggerCategory\";\r\nimport { BatchedTilesetReader } from \"./BatchedTilesetReader\";\r\nimport { BatchedTileTree } from \"./BatchedTileTree\";\r\n\r\n/** @internal */\r\nexport interface BatchedTileTreeId {\r\n baseUrl: URL;\r\n script?: RenderSchedule.Script;\r\n}\r\n\r\nclass BatchedTileTreeSupplier implements TileTreeSupplier {\r\n public compareTileTreeIds(lhs: BatchedTileTreeId, rhs: BatchedTileTreeId): number {\r\n return compareStrings(lhs.toString(), rhs.toString())\r\n || comparePossiblyUndefined((x, y) => x.compareTo(y), lhs.script, rhs.script);\r\n }\r\n\r\n public async createTileTree(treeId: BatchedTileTreeId, iModel: IModelConnection): Promise<TileTree | undefined> {\r\n const baseUrl = treeId.baseUrl;\r\n const url = new URL(\"tileset.json\", baseUrl);\r\n url.search = baseUrl.search;\r\n try {\r\n const response = await fetch(url.toString());\r\n const json = await response.json();\r\n\r\n const reader = new BatchedTilesetReader(json, iModel, baseUrl);\r\n const params = await reader.readTileTreeParams();\r\n\r\n params.script = treeId.script;\r\n return new BatchedTileTree(params);\r\n } catch (err) {\r\n Logger.logException(loggerCategory, err);\r\n return undefined;\r\n }\r\n }\r\n}\r\n\r\nconst batchedTileTreeSupplier: TileTreeSupplier = new BatchedTileTreeSupplier();\r\n\r\n/** @internal */\r\nexport function getBatchedTileTreeOwner(iModel: IModelConnection, treeId: BatchedTileTreeId): TileTreeOwner {\r\n return iModel.tiles.getTileTreeOwner(treeId, batchedTileTreeSupplier);\r\n}\r\n"]}