@itwin/core-frontend 4.5.0-dev.38 → 4.5.0-dev.39

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 (151) hide show
  1. package/lib/cjs/ContextRealityModelState.d.ts +3 -0
  2. package/lib/cjs/ContextRealityModelState.d.ts.map +1 -1
  3. package/lib/cjs/ContextRealityModelState.js +8 -1
  4. package/lib/cjs/ContextRealityModelState.js.map +1 -1
  5. package/lib/cjs/ModelState.d.ts +3 -2
  6. package/lib/cjs/ModelState.d.ts.map +1 -1
  7. package/lib/cjs/ModelState.js +2 -1
  8. package/lib/cjs/ModelState.js.map +1 -1
  9. package/lib/cjs/SpatialClassifiersState.d.ts +55 -0
  10. package/lib/cjs/SpatialClassifiersState.d.ts.map +1 -0
  11. package/lib/cjs/SpatialClassifiersState.js +47 -0
  12. package/lib/cjs/SpatialClassifiersState.js.map +1 -0
  13. package/lib/cjs/ViewContext.d.ts +3 -2
  14. package/lib/cjs/ViewContext.d.ts.map +1 -1
  15. package/lib/cjs/ViewContext.js.map +1 -1
  16. package/lib/cjs/Viewport.d.ts.map +1 -1
  17. package/lib/cjs/Viewport.js +16 -11
  18. package/lib/cjs/Viewport.js.map +1 -1
  19. package/lib/cjs/core-frontend.d.ts +1 -0
  20. package/lib/cjs/core-frontend.d.ts.map +1 -1
  21. package/lib/cjs/core-frontend.js +1 -0
  22. package/lib/cjs/core-frontend.js.map +1 -1
  23. package/lib/cjs/render/GraphicBuilder.d.ts +2 -0
  24. package/lib/cjs/render/GraphicBuilder.d.ts.map +1 -1
  25. package/lib/cjs/render/GraphicBuilder.js.map +1 -1
  26. package/lib/cjs/render/RenderTarget.d.ts +3 -2
  27. package/lib/cjs/render/RenderTarget.d.ts.map +1 -1
  28. package/lib/cjs/render/RenderTarget.js.map +1 -1
  29. package/lib/cjs/render/Scene.d.ts +2 -2
  30. package/lib/cjs/render/Scene.d.ts.map +1 -1
  31. package/lib/cjs/render/Scene.js.map +1 -1
  32. package/lib/cjs/render/primitives/geometry/GeometryAccumulator.d.ts +3 -0
  33. package/lib/cjs/render/primitives/geometry/GeometryAccumulator.d.ts.map +1 -1
  34. package/lib/cjs/render/primitives/geometry/GeometryAccumulator.js.map +1 -1
  35. package/lib/cjs/render/primitives/mesh/MeshBuilderMap.d.ts +3 -0
  36. package/lib/cjs/render/primitives/mesh/MeshBuilderMap.d.ts.map +1 -1
  37. package/lib/cjs/render/primitives/mesh/MeshBuilderMap.js +2 -0
  38. package/lib/cjs/render/primitives/mesh/MeshBuilderMap.js.map +1 -1
  39. package/lib/cjs/render/webgl/PlanarClassifier.d.ts +3 -2
  40. package/lib/cjs/render/webgl/PlanarClassifier.d.ts.map +1 -1
  41. package/lib/cjs/render/webgl/PlanarClassifier.js.map +1 -1
  42. package/lib/cjs/render/webgl/Target.d.ts +4 -3
  43. package/lib/cjs/render/webgl/Target.d.ts.map +1 -1
  44. package/lib/cjs/render/webgl/Target.js.map +1 -1
  45. package/lib/cjs/tile/ClassifierTileTree.d.ts +4 -4
  46. package/lib/cjs/tile/ClassifierTileTree.d.ts.map +1 -1
  47. package/lib/cjs/tile/ClassifierTileTree.js +11 -6
  48. package/lib/cjs/tile/ClassifierTileTree.js.map +1 -1
  49. package/lib/cjs/tile/OrbitGtTileTree.d.ts +1 -0
  50. package/lib/cjs/tile/OrbitGtTileTree.d.ts.map +1 -1
  51. package/lib/cjs/tile/OrbitGtTileTree.js +4 -0
  52. package/lib/cjs/tile/OrbitGtTileTree.js.map +1 -1
  53. package/lib/cjs/tile/PrimaryTileTree.d.ts +1 -0
  54. package/lib/cjs/tile/PrimaryTileTree.d.ts.map +1 -1
  55. package/lib/cjs/tile/PrimaryTileTree.js +3 -0
  56. package/lib/cjs/tile/PrimaryTileTree.js.map +1 -1
  57. package/lib/cjs/tile/RealityModelTileTree.d.ts +5 -2
  58. package/lib/cjs/tile/RealityModelTileTree.d.ts.map +1 -1
  59. package/lib/cjs/tile/RealityModelTileTree.js +19 -0
  60. package/lib/cjs/tile/RealityModelTileTree.js.map +1 -1
  61. package/lib/cjs/tile/RenderGraphicTileTree.d.ts.map +1 -1
  62. package/lib/cjs/tile/RenderGraphicTileTree.js +3 -0
  63. package/lib/cjs/tile/RenderGraphicTileTree.js.map +1 -1
  64. package/lib/cjs/tile/TileTreeReference.d.ts +13 -2
  65. package/lib/cjs/tile/TileTreeReference.d.ts.map +1 -1
  66. package/lib/cjs/tile/TileTreeReference.js +17 -2
  67. package/lib/cjs/tile/TileTreeReference.js.map +1 -1
  68. package/lib/cjs/tile/map/MapLayerTileTreeReference.d.ts +1 -0
  69. package/lib/cjs/tile/map/MapLayerTileTreeReference.d.ts.map +1 -1
  70. package/lib/cjs/tile/map/MapLayerTileTreeReference.js +4 -0
  71. package/lib/cjs/tile/map/MapLayerTileTreeReference.js.map +1 -1
  72. package/lib/cjs/tile/map/MapTileTree.d.ts +1 -0
  73. package/lib/cjs/tile/map/MapTileTree.d.ts.map +1 -1
  74. package/lib/cjs/tile/map/MapTileTree.js +5 -1
  75. package/lib/cjs/tile/map/MapTileTree.js.map +1 -1
  76. package/lib/esm/ContextRealityModelState.d.ts +3 -0
  77. package/lib/esm/ContextRealityModelState.d.ts.map +1 -1
  78. package/lib/esm/ContextRealityModelState.js +8 -1
  79. package/lib/esm/ContextRealityModelState.js.map +1 -1
  80. package/lib/esm/ModelState.d.ts +3 -2
  81. package/lib/esm/ModelState.d.ts.map +1 -1
  82. package/lib/esm/ModelState.js +3 -2
  83. package/lib/esm/ModelState.js.map +1 -1
  84. package/lib/esm/SpatialClassifiersState.d.ts +55 -0
  85. package/lib/esm/SpatialClassifiersState.d.ts.map +1 -0
  86. package/lib/esm/SpatialClassifiersState.js +43 -0
  87. package/lib/esm/SpatialClassifiersState.js.map +1 -0
  88. package/lib/esm/ViewContext.d.ts +3 -2
  89. package/lib/esm/ViewContext.d.ts.map +1 -1
  90. package/lib/esm/ViewContext.js.map +1 -1
  91. package/lib/esm/Viewport.d.ts.map +1 -1
  92. package/lib/esm/Viewport.js +16 -11
  93. package/lib/esm/Viewport.js.map +1 -1
  94. package/lib/esm/core-frontend.d.ts +1 -0
  95. package/lib/esm/core-frontend.d.ts.map +1 -1
  96. package/lib/esm/core-frontend.js +1 -0
  97. package/lib/esm/core-frontend.js.map +1 -1
  98. package/lib/esm/render/GraphicBuilder.d.ts +2 -0
  99. package/lib/esm/render/GraphicBuilder.d.ts.map +1 -1
  100. package/lib/esm/render/GraphicBuilder.js.map +1 -1
  101. package/lib/esm/render/RenderTarget.d.ts +3 -2
  102. package/lib/esm/render/RenderTarget.d.ts.map +1 -1
  103. package/lib/esm/render/RenderTarget.js.map +1 -1
  104. package/lib/esm/render/Scene.d.ts +2 -2
  105. package/lib/esm/render/Scene.d.ts.map +1 -1
  106. package/lib/esm/render/Scene.js.map +1 -1
  107. package/lib/esm/render/primitives/geometry/GeometryAccumulator.d.ts +3 -0
  108. package/lib/esm/render/primitives/geometry/GeometryAccumulator.d.ts.map +1 -1
  109. package/lib/esm/render/primitives/geometry/GeometryAccumulator.js.map +1 -1
  110. package/lib/esm/render/primitives/mesh/MeshBuilderMap.d.ts +3 -0
  111. package/lib/esm/render/primitives/mesh/MeshBuilderMap.d.ts.map +1 -1
  112. package/lib/esm/render/primitives/mesh/MeshBuilderMap.js +2 -0
  113. package/lib/esm/render/primitives/mesh/MeshBuilderMap.js.map +1 -1
  114. package/lib/esm/render/webgl/PlanarClassifier.d.ts +3 -2
  115. package/lib/esm/render/webgl/PlanarClassifier.d.ts.map +1 -1
  116. package/lib/esm/render/webgl/PlanarClassifier.js.map +1 -1
  117. package/lib/esm/render/webgl/Target.d.ts +4 -3
  118. package/lib/esm/render/webgl/Target.d.ts.map +1 -1
  119. package/lib/esm/render/webgl/Target.js.map +1 -1
  120. package/lib/esm/tile/ClassifierTileTree.d.ts +4 -4
  121. package/lib/esm/tile/ClassifierTileTree.d.ts.map +1 -1
  122. package/lib/esm/tile/ClassifierTileTree.js +12 -7
  123. package/lib/esm/tile/ClassifierTileTree.js.map +1 -1
  124. package/lib/esm/tile/OrbitGtTileTree.d.ts +1 -0
  125. package/lib/esm/tile/OrbitGtTileTree.d.ts.map +1 -1
  126. package/lib/esm/tile/OrbitGtTileTree.js +4 -0
  127. package/lib/esm/tile/OrbitGtTileTree.js.map +1 -1
  128. package/lib/esm/tile/PrimaryTileTree.d.ts +1 -0
  129. package/lib/esm/tile/PrimaryTileTree.d.ts.map +1 -1
  130. package/lib/esm/tile/PrimaryTileTree.js +3 -0
  131. package/lib/esm/tile/PrimaryTileTree.js.map +1 -1
  132. package/lib/esm/tile/RealityModelTileTree.d.ts +5 -2
  133. package/lib/esm/tile/RealityModelTileTree.d.ts.map +1 -1
  134. package/lib/esm/tile/RealityModelTileTree.js +19 -0
  135. package/lib/esm/tile/RealityModelTileTree.js.map +1 -1
  136. package/lib/esm/tile/RenderGraphicTileTree.d.ts.map +1 -1
  137. package/lib/esm/tile/RenderGraphicTileTree.js +3 -0
  138. package/lib/esm/tile/RenderGraphicTileTree.js.map +1 -1
  139. package/lib/esm/tile/TileTreeReference.d.ts +13 -2
  140. package/lib/esm/tile/TileTreeReference.d.ts.map +1 -1
  141. package/lib/esm/tile/TileTreeReference.js +17 -2
  142. package/lib/esm/tile/TileTreeReference.js.map +1 -1
  143. package/lib/esm/tile/map/MapLayerTileTreeReference.d.ts +1 -0
  144. package/lib/esm/tile/map/MapLayerTileTreeReference.d.ts.map +1 -1
  145. package/lib/esm/tile/map/MapLayerTileTreeReference.js +4 -0
  146. package/lib/esm/tile/map/MapLayerTileTreeReference.js.map +1 -1
  147. package/lib/esm/tile/map/MapTileTree.d.ts +1 -0
  148. package/lib/esm/tile/map/MapTileTree.d.ts.map +1 -1
  149. package/lib/esm/tile/map/MapTileTree.js +5 -1
  150. package/lib/esm/tile/map/MapTileTree.js.map +1 -1
  151. package/package.json +18 -18
@@ -5,13 +5,14 @@
5
5
  /** @packageDocumentation
6
6
  * @module Tiles
7
7
  */
8
- import { comparePossiblyUndefined, compareStrings, compareStringsOrUndefined, Id64 } from "@itwin/core-bentley";
8
+ import { compareNumbers, comparePossiblyUndefined, compareStrings, compareStringsOrUndefined, Id64 } from "@itwin/core-bentley";
9
9
  import { BatchType, iModelTileTreeIdToString, RenderMode, } from "@itwin/core-common";
10
10
  import { IModelApp } from "../IModelApp";
11
11
  import { GeometricModelState } from "../ModelState";
12
12
  import { IModelTileTree, iModelTileTreeParamsFromJSON, TileTreeLoadStatus, TileTreeReference, } from "./internal";
13
13
  function compareIds(lhs, rhs) {
14
- return compareStrings(lhs.modelId, rhs.modelId) || compareStringsOrUndefined(lhs.animationId, rhs.animationId)
14
+ return compareNumbers(lhs.type, rhs.type) || compareNumbers(lhs.expansion, rhs.expansion)
15
+ || compareStrings(lhs.modelId, rhs.modelId) || compareStringsOrUndefined(lhs.animationId, rhs.animationId)
15
16
  || comparePossiblyUndefined((x, y) => x.compareTo(y), lhs.timeline, rhs.timeline);
16
17
  }
17
18
  class ClassifierTreeSupplier {
@@ -61,7 +62,6 @@ class ClassifierTreeSupplier {
61
62
  const classifierTreeSupplier = new ClassifierTreeSupplier();
62
63
  /** @internal */
63
64
  export class SpatialClassifierTileTreeReference extends TileTreeReference {
64
- get isOpaque() { return false; } /** When referenced as a map layer reference, BIM models are never opaque. */
65
65
  get transparency() { return undefined; }
66
66
  }
67
67
  /** @internal */
@@ -76,7 +76,7 @@ class ClassifierTreeReference extends SpatialClassifierTileTreeReference {
76
76
  this._owner = classifierTreeSupplier.getOwner(this._id, iModel);
77
77
  }
78
78
  get classifiers() { return this._classifiers; }
79
- get activeClassifier() { return this.classifiers.active; }
79
+ get activeClassifier() { return this.classifiers.activeClassifier; }
80
80
  get castsShadows() {
81
81
  return false;
82
82
  }
@@ -86,7 +86,7 @@ class ClassifierTreeReference extends SpatialClassifierTileTreeReference {
86
86
  this._id = newId;
87
87
  this._owner = classifierTreeSupplier.getOwner(this._id, this._iModel);
88
88
  }
89
- return this._owner;
89
+ return this.activeClassifier?.tileTreeReference?.treeOwner ?? this._owner;
90
90
  }
91
91
  discloseTileTrees(trees) {
92
92
  // NB: We do NOT call super because we don't use our tree if no classifier is active.
@@ -96,7 +96,12 @@ class ClassifierTreeReference extends SpatialClassifierTileTreeReference {
96
96
  if (undefined !== classifierTree)
97
97
  trees.add(classifierTree);
98
98
  }
99
- get isPlanar() { return BatchType.PlanarClassifier === this._id.type; }
99
+ get isPlanar() {
100
+ if (this.activeClassifier?.flags.isVolumeClassifier) {
101
+ return false;
102
+ }
103
+ return true;
104
+ }
100
105
  get viewFlags() {
101
106
  return {
102
107
  renderMode: RenderMode.SmoothShade,
@@ -118,7 +123,7 @@ class ClassifierTreeReference extends SpatialClassifierTileTreeReference {
118
123
  const classifiedTree = this._classifiedTree.treeOwner.load();
119
124
  if (undefined === classifiedTree)
120
125
  return;
121
- const classifier = this._classifiers.active;
126
+ const classifier = this._classifiers.activeClassifier;
122
127
  if (undefined === classifier)
123
128
  return;
124
129
  const classifierTree = this.treeOwner.load();
@@ -1 +1 @@
1
- {"version":3,"file":"ClassifierTileTree.js","sourceRoot":"","sources":["../../../src/tile/ClassifierTileTree.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\nimport { comparePossiblyUndefined, compareStrings, compareStringsOrUndefined, Id64, Id64String } from \"@itwin/core-bentley\";\r\nimport {\r\n BatchType, ClassifierTileTreeId, iModelTileTreeIdToString, RenderMode, RenderSchedule, SpatialClassifier, SpatialClassifiers, ViewFlagsProperties,\r\n} from \"@itwin/core-common\";\r\nimport { DisplayStyleState } from \"../DisplayStyleState\";\r\nimport { IModelApp } from \"../IModelApp\";\r\nimport { IModelConnection } from \"../IModelConnection\";\r\nimport { GeometricModelState } from \"../ModelState\";\r\nimport { SceneContext } from \"../ViewContext\";\r\nimport { ViewState } from \"../ViewState\";\r\nimport {\r\n DisclosedTileTreeSet, IModelTileTree, iModelTileTreeParamsFromJSON, TileTree, TileTreeLoadStatus, TileTreeOwner, TileTreeReference, TileTreeSupplier,\r\n} from \"./internal\";\r\n\r\ninterface ClassifierTreeId extends ClassifierTileTreeId {\r\n modelId: Id64String;\r\n timeline?: RenderSchedule.ModelTimeline;\r\n}\r\n\r\nfunction compareIds(lhs: ClassifierTreeId, rhs: ClassifierTreeId): number {\r\n return compareStrings(lhs.modelId, rhs.modelId) || compareStringsOrUndefined(lhs.animationId, rhs.animationId)\r\n || comparePossiblyUndefined((x, y) => x.compareTo(y), lhs.timeline, rhs.timeline);\r\n}\r\n\r\nclass ClassifierTreeSupplier implements TileTreeSupplier {\r\n private readonly _nonexistentTreeOwner = {\r\n tileTree: undefined,\r\n loadStatus: TileTreeLoadStatus.NotFound,\r\n load: () => undefined,\r\n dispose: () => undefined,\r\n loadTree: async () => undefined,\r\n iModel: undefined as unknown as IModelConnection,\r\n };\r\n\r\n public compareTileTreeIds(lhs: ClassifierTreeId, rhs: ClassifierTreeId): number {\r\n return compareIds(lhs, rhs);\r\n }\r\n\r\n public async createTileTree(id: ClassifierTreeId, iModel: IModelConnection): Promise<TileTree | undefined> {\r\n await iModel.models.load(id.modelId);\r\n const model = iModel.models.getLoaded(id.modelId);\r\n if (undefined === model || !(model instanceof GeometricModelState))\r\n return undefined;\r\n\r\n const idStr = iModelTileTreeIdToString(id.modelId, id, IModelApp.tileAdmin);\r\n const props = await IModelApp.tileAdmin.requestTileTreeProps(iModel, idStr);\r\n\r\n const params = iModelTileTreeParamsFromJSON(props, iModel, id.modelId, {\r\n edges: false,\r\n allowInstancing: false,\r\n is3d: true,\r\n batchType: id.type,\r\n timeline: id.timeline,\r\n });\r\n\r\n return new IModelTileTree(params, id);\r\n }\r\n\r\n public getOwner(id: ClassifierTreeId, iModel: IModelConnection): TileTreeOwner {\r\n return Id64.isValid(id.modelId) ? iModel.tiles.getTileTreeOwner(id, this) : this._nonexistentTreeOwner;\r\n }\r\n\r\n public addModelsAnimatedByScript(modelIds: Set<Id64String>, scriptSourceId: Id64String, trees: Iterable<{ id: ClassifierTreeId, 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.animationId)\r\n modelIds.add(tree.id.modelId);\r\n }\r\n\r\n public addSpatialModels(modelIds: Set<Id64String>, trees: Iterable<{ id: ClassifierTreeId, owner: TileTreeOwner }>): void {\r\n for (const tree of trees)\r\n modelIds.add(tree.id.modelId);\r\n }\r\n}\r\n\r\nconst classifierTreeSupplier = new ClassifierTreeSupplier();\r\n\r\n/** @internal */\r\nexport abstract class SpatialClassifierTileTreeReference extends TileTreeReference {\r\n public abstract get isPlanar(): boolean;\r\n public abstract get activeClassifier(): SpatialClassifier | undefined;\r\n public get isOpaque() { return false; } /** When referenced as a map layer reference, BIM models are never opaque. */\r\n public abstract get viewFlags(): Partial<ViewFlagsProperties>;\r\n public get transparency(): number | undefined { return undefined; }\r\n}\r\n\r\n/** @internal */\r\nclass ClassifierTreeReference extends SpatialClassifierTileTreeReference {\r\n private _id: ClassifierTreeId;\r\n private readonly _classifiers: SpatialClassifiers;\r\n private readonly _source: ViewState | DisplayStyleState;\r\n private readonly _iModel: IModelConnection;\r\n private readonly _classifiedTree: TileTreeReference;\r\n private _owner: TileTreeOwner;\r\n\r\n public constructor(classifiers: SpatialClassifiers, classifiedTree: TileTreeReference, iModel: IModelConnection, source: ViewState | DisplayStyleState) {\r\n super();\r\n this._id = createClassifierId(classifiers.active, source);\r\n this._source = source;\r\n this._iModel = iModel;\r\n this._classifiers = classifiers;\r\n this._classifiedTree = classifiedTree;\r\n this._owner = classifierTreeSupplier.getOwner(this._id, iModel);\r\n }\r\n\r\n public get classifiers(): SpatialClassifiers { return this._classifiers; }\r\n public get activeClassifier(): SpatialClassifier | undefined { return this.classifiers.active; }\r\n\r\n public override get castsShadows() {\r\n return false;\r\n }\r\n\r\n public get treeOwner(): TileTreeOwner {\r\n const newId = createClassifierId(this._classifiers.active, this._source);\r\n if (0 !== compareIds(this._id, newId)) {\r\n this._id = newId;\r\n this._owner = classifierTreeSupplier.getOwner(this._id, this._iModel);\r\n }\r\n\r\n return this._owner;\r\n }\r\n\r\n public override discloseTileTrees(trees: DisclosedTileTreeSet): void {\r\n // NB: We do NOT call super because we don't use our tree if no classifier is active.\r\n trees.disclose(this._classifiedTree);\r\n\r\n const classifier = this.activeClassifier;\r\n const classifierTree = undefined !== classifier ? this.treeOwner.tileTree : undefined;\r\n if (undefined !== classifierTree)\r\n trees.add(classifierTree);\r\n }\r\n public get isPlanar() { return BatchType.PlanarClassifier === this._id.type; }\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: false,\r\n lighting: false,\r\n shadows: false,\r\n monochrome: false,\r\n materials: false,\r\n ambientOcclusion: false,\r\n visibleEdges: false,\r\n hiddenEdges: false,\r\n };\r\n }\r\n\r\n // Add volume classifiers to scene (planar classifiers are added seperately.)\r\n public override addToScene(context: SceneContext): void {\r\n if (this.isPlanar)\r\n return;\r\n\r\n const classifiedTree = this._classifiedTree.treeOwner.load();\r\n if (undefined === classifiedTree)\r\n return;\r\n\r\n const classifier = this._classifiers.active;\r\n if (undefined === classifier)\r\n return;\r\n\r\n const classifierTree = this.treeOwner.load();\r\n if (undefined === classifierTree)\r\n return;\r\n\r\n context.setVolumeClassifier(classifier, classifiedTree.modelId);\r\n super.addToScene(context);\r\n }\r\n\r\n}\r\n\r\n/** @internal */\r\nexport function createClassifierTileTreeReference(classifiers: SpatialClassifiers, classifiedTree: TileTreeReference, iModel: IModelConnection, source: ViewState | DisplayStyleState): SpatialClassifierTileTreeReference {\r\n return new ClassifierTreeReference(classifiers, classifiedTree, iModel, source);\r\n}\r\n\r\nfunction createClassifierId(classifier: SpatialClassifier | undefined, source: ViewState | DisplayStyleState | undefined): ClassifierTreeId {\r\n if (undefined === classifier)\r\n return { modelId: Id64.invalid, type: BatchType.PlanarClassifier, expansion: 0, animationId: undefined };\r\n\r\n const type = classifier.flags.isVolumeClassifier ? BatchType.VolumeClassifier : BatchType.PlanarClassifier;\r\n const scriptInfo = IModelApp.tileAdmin.getScriptInfoForTreeId(classifier.modelId, source?.scheduleScriptReference); // eslint-disable-line deprecation/deprecation\r\n return {\r\n modelId: classifier.modelId,\r\n type,\r\n expansion: classifier.expand,\r\n animationId: scriptInfo?.animationId,\r\n timeline: scriptInfo?.timeline,\r\n };\r\n}\r\n"]}
1
+ {"version":3,"file":"ClassifierTileTree.js","sourceRoot":"","sources":["../../../src/tile/ClassifierTileTree.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\nimport { compareNumbers, comparePossiblyUndefined, compareStrings, compareStringsOrUndefined, Id64, Id64String } from \"@itwin/core-bentley\";\r\nimport {\r\n BatchType, ClassifierTileTreeId, iModelTileTreeIdToString, RenderMode, RenderSchedule, SpatialClassifier, ViewFlagsProperties,\r\n} from \"@itwin/core-common\";\r\nimport { DisplayStyleState } from \"../DisplayStyleState\";\r\nimport { IModelApp } from \"../IModelApp\";\r\nimport { IModelConnection } from \"../IModelConnection\";\r\nimport { GeometricModelState } from \"../ModelState\";\r\nimport { SceneContext } from \"../ViewContext\";\r\nimport { ViewState } from \"../ViewState\";\r\nimport { ActiveSpatialClassifier, SpatialClassifiersState } from \"../SpatialClassifiersState\";\r\nimport {\r\n DisclosedTileTreeSet, IModelTileTree, iModelTileTreeParamsFromJSON, TileTree, TileTreeLoadStatus, TileTreeOwner, TileTreeReference, TileTreeSupplier,\r\n} from \"./internal\";\r\n\r\ninterface ClassifierTreeId extends ClassifierTileTreeId {\r\n modelId: Id64String;\r\n timeline?: RenderSchedule.ModelTimeline;\r\n}\r\n\r\nfunction compareIds(lhs: ClassifierTreeId, rhs: ClassifierTreeId): number {\r\n return compareNumbers(lhs.type, rhs.type) || compareNumbers(lhs.expansion, rhs.expansion)\r\n || compareStrings(lhs.modelId, rhs.modelId) || compareStringsOrUndefined(lhs.animationId, rhs.animationId)\r\n || comparePossiblyUndefined((x, y) => x.compareTo(y), lhs.timeline, rhs.timeline);\r\n}\r\n\r\nclass ClassifierTreeSupplier implements TileTreeSupplier {\r\n private readonly _nonexistentTreeOwner = {\r\n tileTree: undefined,\r\n loadStatus: TileTreeLoadStatus.NotFound,\r\n load: () => undefined,\r\n dispose: () => undefined,\r\n loadTree: async () => undefined,\r\n iModel: undefined as unknown as IModelConnection,\r\n };\r\n\r\n public compareTileTreeIds(lhs: ClassifierTreeId, rhs: ClassifierTreeId): number {\r\n return compareIds(lhs, rhs);\r\n }\r\n\r\n public async createTileTree(id: ClassifierTreeId, iModel: IModelConnection): Promise<TileTree | undefined> {\r\n await iModel.models.load(id.modelId);\r\n const model = iModel.models.getLoaded(id.modelId);\r\n if (undefined === model || !(model instanceof GeometricModelState))\r\n return undefined;\r\n\r\n const idStr = iModelTileTreeIdToString(id.modelId, id, IModelApp.tileAdmin);\r\n const props = await IModelApp.tileAdmin.requestTileTreeProps(iModel, idStr);\r\n\r\n const params = iModelTileTreeParamsFromJSON(props, iModel, id.modelId, {\r\n edges: false,\r\n allowInstancing: false,\r\n is3d: true,\r\n batchType: id.type,\r\n timeline: id.timeline,\r\n });\r\n\r\n return new IModelTileTree(params, id);\r\n }\r\n\r\n public getOwner(id: ClassifierTreeId, iModel: IModelConnection): TileTreeOwner {\r\n return Id64.isValid(id.modelId) ? iModel.tiles.getTileTreeOwner(id, this) : this._nonexistentTreeOwner;\r\n }\r\n\r\n public addModelsAnimatedByScript(modelIds: Set<Id64String>, scriptSourceId: Id64String, trees: Iterable<{ id: ClassifierTreeId, 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.animationId)\r\n modelIds.add(tree.id.modelId);\r\n }\r\n\r\n public addSpatialModels(modelIds: Set<Id64String>, trees: Iterable<{ id: ClassifierTreeId, owner: TileTreeOwner }>): void {\r\n for (const tree of trees)\r\n modelIds.add(tree.id.modelId);\r\n }\r\n}\r\n\r\nconst classifierTreeSupplier = new ClassifierTreeSupplier();\r\n\r\n/** @internal */\r\nexport abstract class SpatialClassifierTileTreeReference extends TileTreeReference {\r\n public abstract get isPlanar(): boolean;\r\n public abstract get activeClassifier(): ActiveSpatialClassifier | undefined;\r\n public abstract get viewFlags(): Partial<ViewFlagsProperties>;\r\n public get transparency(): number | undefined { return undefined; }\r\n}\r\n\r\n/** @internal */\r\nclass ClassifierTreeReference extends SpatialClassifierTileTreeReference {\r\n private _id: ClassifierTreeId;\r\n private readonly _classifiers: SpatialClassifiersState;\r\n private readonly _source: ViewState | DisplayStyleState;\r\n private readonly _iModel: IModelConnection;\r\n private readonly _classifiedTree: TileTreeReference;\r\n private _owner: TileTreeOwner;\r\n\r\n public constructor(classifiers: SpatialClassifiersState, classifiedTree: TileTreeReference, iModel: IModelConnection, source: ViewState | DisplayStyleState) {\r\n super();\r\n this._id = createClassifierId(classifiers.active, source);\r\n this._source = source;\r\n this._iModel = iModel;\r\n this._classifiers = classifiers;\r\n this._classifiedTree = classifiedTree;\r\n this._owner = classifierTreeSupplier.getOwner(this._id, iModel);\r\n }\r\n\r\n public get classifiers(): SpatialClassifiersState { return this._classifiers; }\r\n public get activeClassifier(): ActiveSpatialClassifier | undefined { return this.classifiers.activeClassifier; }\r\n\r\n public override get castsShadows() {\r\n return false;\r\n }\r\n\r\n public get treeOwner(): TileTreeOwner {\r\n const newId = createClassifierId(this._classifiers.active, this._source);\r\n if (0 !== compareIds(this._id, newId)) {\r\n this._id = newId;\r\n this._owner = classifierTreeSupplier.getOwner(this._id, this._iModel);\r\n }\r\n\r\n return this.activeClassifier?.tileTreeReference?.treeOwner ?? this._owner;\r\n }\r\n\r\n public override discloseTileTrees(trees: DisclosedTileTreeSet): void {\r\n // NB: We do NOT call super because we don't use our tree if no classifier is active.\r\n trees.disclose(this._classifiedTree);\r\n\r\n const classifier = this.activeClassifier;\r\n const classifierTree = undefined !== classifier ? this.treeOwner.tileTree : undefined;\r\n if (undefined !== classifierTree)\r\n trees.add(classifierTree);\r\n }\r\n\r\n public get isPlanar() {\r\n if (this.activeClassifier?.flags.isVolumeClassifier) {\r\n return false;\r\n }\r\n\r\n return true;\r\n }\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: false,\r\n lighting: false,\r\n shadows: false,\r\n monochrome: false,\r\n materials: false,\r\n ambientOcclusion: false,\r\n visibleEdges: false,\r\n hiddenEdges: false,\r\n };\r\n }\r\n\r\n // Add volume classifiers to scene (planar classifiers are added seperately.)\r\n public override addToScene(context: SceneContext): void {\r\n if (this.isPlanar)\r\n return;\r\n\r\n const classifiedTree = this._classifiedTree.treeOwner.load();\r\n if (undefined === classifiedTree)\r\n return;\r\n\r\n const classifier = this._classifiers.activeClassifier;\r\n if (undefined === classifier)\r\n return;\r\n\r\n const classifierTree = this.treeOwner.load();\r\n if (undefined === classifierTree)\r\n return;\r\n\r\n context.setVolumeClassifier(classifier, classifiedTree.modelId);\r\n super.addToScene(context);\r\n }\r\n\r\n}\r\n\r\n/** @internal */\r\nexport function createClassifierTileTreeReference(classifiers: SpatialClassifiersState, classifiedTree: TileTreeReference, iModel: IModelConnection, source: ViewState | DisplayStyleState): SpatialClassifierTileTreeReference {\r\n return new ClassifierTreeReference(classifiers, classifiedTree, iModel, source);\r\n}\r\n\r\nfunction createClassifierId(classifier: SpatialClassifier | undefined, source: ViewState | DisplayStyleState | undefined): ClassifierTreeId {\r\n if (undefined === classifier)\r\n return { modelId: Id64.invalid, type: BatchType.PlanarClassifier, expansion: 0, animationId: undefined };\r\n\r\n const type = classifier.flags.isVolumeClassifier ? BatchType.VolumeClassifier : BatchType.PlanarClassifier;\r\n const scriptInfo = IModelApp.tileAdmin.getScriptInfoForTreeId(classifier.modelId, source?.scheduleScriptReference); // eslint-disable-line deprecation/deprecation\r\n return {\r\n modelId: classifier.modelId,\r\n type,\r\n expansion: classifier.expand,\r\n animationId: scriptInfo?.animationId,\r\n timeline: scriptInfo?.timeline,\r\n };\r\n}\r\n"]}
@@ -59,6 +59,7 @@ export declare class OrbitGtTreeReference extends RealityModelTileTree.Reference
59
59
  get castsShadows(): boolean;
60
60
  get modelId(): string;
61
61
  constructor(props: OrbitGtTileTree.ReferenceProps);
62
+ canSupplyToolTip(hit: HitDetail): boolean;
62
63
  getToolTip(hit: HitDetail): Promise<HTMLElement | string | undefined>;
63
64
  }
64
65
  export {};
@@ -1 +1 @@
1
- {"version":3,"file":"OrbitGtTileTree.d.ts","sourceRoot":"","sources":["../../../src/tile/OrbitGtTileTree.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"OrbitGtTileTree.d.ts","sourceRoot":"","sources":["../../../src/tile/OrbitGtTileTree.ts"],"names":[],"mappings":"AAIA;;GAEG;AAEH,OAAO,EAAwD,UAAU,EAAE,MAAM,qBAAqB,CAAC;AACvG,OAAO,EAC6F,gBAAgB,EAC5D,oBAAoB,EAAE,iBAAiB,EAC9F,MAAM,oBAAoB,CAAC;AAC5B,OAAO,EAAW,OAAO,EAAE,SAAS,EAAE,QAAQ,EAAE,MAAM,sBAAsB,CAAC;AAC7E,OAAO,EAEL,kBAAkB,EAEnB,MAAM,qBAAqB,CAAC;AAG7B,OAAO,EAAE,SAAS,EAAE,MAAM,cAAc,CAAC;AAEzC,OAAO,EAAE,gBAAgB,EAAE,MAAM,qBAAqB,CAAC;AAIvD,OAAO,EAAE,YAAY,EAAE,MAAM,wBAAwB,CAAC;AACtD,OAAO,EAAE,YAAY,EAAE,MAAM,wBAAwB,CAAC;AAGtD,OAAO,EACL,oBAAoB,EAAE,IAAI,EAAE,WAAW,EAAE,YAAY,EAAoB,UAAU,EAAE,WAAW,EAAE,QAAQ,EAAE,aAAa,EACzH,cAAc,EACf,MAAM,YAAY,CAAC;AAkFpB,gBAAgB;AAChB,wBAAgB,8BAA8B,CAAC,KAAK,EAAE,eAAe,CAAC,cAAc,GAAG,oBAAoB,CAAC,SAAS,CAEpH;AAgBD,cAAM,eAAgB,SAAQ,IAAI;IAChC,SAAS,CAAC,aAAa,CAAC,QAAQ,EAAE,CAAC,QAAQ,EAAE,IAAI,EAAE,GAAG,SAAS,KAAK,IAAI,EAAE,OAAO,EAAE,CAAC,KAAK,EAAE,KAAK,KAAK,IAAI,GAAG,IAAI;IACnG,cAAc,CAAC,WAAW,EAAE,MAAM,OAAO,GAAG,OAAO,CAAC,WAAW,CAAC,QAAQ,CAAC;IACtF,IAAW,OAAO,sDAA0E;IAC/E,WAAW,CAAC,KAAK,EAAE,WAAW,CAAC,YAAY,EAAE,OAAO,EAAE,YAAY,EAAE,WAAW,CAAC,EAAE,MAAM,OAAO,GAAG,OAAO,CAAC,WAAW,CAAC;IACnH,UAAU,IAAI,IAAI;gBAEtB,MAAM,EAAE,UAAU,EAAE,IAAI,EAAE,QAAQ;CAC/C;AAiFD,gBAAgB;AAChB,qBAAa,eAAgB,SAAQ,QAAQ;IAMI,OAAO,CAAC,YAAY;IAA2C,OAAO,CAAC,aAAa;IAAY,OAAO,CAAC,cAAc;IALrK,OAAO,CAAC,WAAW,CAAa;IACzB,QAAQ,EAAE,eAAe,CAAC;IAC1B,iBAAiB,EAAE,iBAAiB,CAAM;IACjD,OAAO,CAAC,aAAa,CAAyC;gBAE3C,UAAU,EAAE,cAAc,EAAU,YAAY,EAAE,kBAAkB,EAAE,UAAU,EAAE,OAAO,EAAU,aAAa,EAAE,QAAQ,EAAU,cAAc,EAAE,SAAS;IAU1J,gBAAgB,IAAI,OAAO,CAAC,SAAS,GAAG,SAAS,CAAC;IAIxD,OAAO,IAAI,IAAI;IAW/B,SAAS,CAAC,YAAY,CAAC,KAAK,EAAE,YAAY,GAAG,IAAI,EAAE;IACnD,IAAW,IAAI,IAAI,OAAO,CAAiB;IAC3C,IAAoB,kBAAkB,IAAI,OAAO,CAAkB;IACnE,IAAW,QAAQ,IAAI,MAAM,GAAG,SAAS,CAAsB;IAE/D,OAAO,CAAC,QAAQ;IAQT,KAAK;IAKI,iBAAiB,CAAC,KAAK,EAAE,YAAY,CAAC,UAAU,GAAG,IAAI;IAKhE,IAAI,CAAC,IAAI,EAAE,YAAY;CA6E/B;AAED,gBAAgB;AAEhB,yBAAiB,eAAe,CAAC;IAC/B,UAAiB,cAAe,SAAQ,oBAAoB,CAAC,kBAAkB;QAC7E,WAAW,CAAC,EAAE,gBAAgB,CAAC;QAC/B,OAAO,CAAC,EAAE,UAAU,CAAC;KACtB;IA8BD,SAAsB,qBAAqB,CAAC,WAAW,EAAE,oBAAoB,EAAE,MAAM,EAAE,gBAAgB,EAAE,OAAO,EAAE,UAAU,GAAG,OAAO,CAAC,QAAQ,GAAG,SAAS,CAAC,CA8F3J;CACF;AAED;;GAEG;AACH,qBAAa,oBAAqB,SAAQ,oBAAoB,CAAC,SAAS;IACtE,SAAgB,SAAS,EAAE,aAAa,CAAC;IACzC,SAAS,CAAC,YAAY,EAAE,oBAAoB,CAAC;IAC7C,OAAO,CAAC,QAAQ,CAAC,QAAQ,CAAa;IAEtC,IAAoB,YAAY,YAAoB;IACpD,IAAoB,OAAO,WAA4B;gBAEpC,KAAK,EAAE,eAAe,CAAC,cAAc;IAuBxC,gBAAgB,CAAC,GAAG,EAAE,SAAS,GAAG,OAAO;IAKnC,UAAU,CAAC,GAAG,EAAE,SAAS,GAAG,OAAO,CAAC,WAAW,GAAG,MAAM,GAAG,SAAS,CAAC;CAe5F"}
@@ -419,6 +419,10 @@ export class OrbitGtTreeReference extends RealityModelTileTree.Reference {
419
419
  const ogtTreeId = { rdSourceKey: this._rdSourceKey, modelId: this.modelId };
420
420
  this.treeOwner = orbitGtTreeSupplier.getOwner(ogtTreeId, props.iModel);
421
421
  }
422
+ canSupplyToolTip(hit) {
423
+ const tree = this.treeOwner.tileTree;
424
+ return undefined !== tree && hit.iModel === tree.iModel;
425
+ }
422
426
  async getToolTip(hit) {
423
427
  const tree = this.treeOwner.tileTree;
424
428
  if (undefined === tree || hit.iModel !== tree.iModel)
@@ -1 +1 @@
1
- {"version":3,"file":"OrbitGtTileTree.js","sourceRoot":"","sources":["../../../src/tile/OrbitGtTileTree.ts"],"names":[],"mappings":"AAAA;;;+FAG+F;AAC/F;;GAEG;AAEH,OAAO,EAAE,MAAM,EAAE,WAAW,EAAE,yBAAyB,EAAE,IAAI,EAAc,MAAM,qBAAqB,CAAC;AACvG,OAAO,EACL,SAAS,EAAE,YAAY,EAAE,QAAQ,EAAE,OAAO,EAAE,YAAY,EAAE,OAAO,EAAE,aAAa,EAAE,cAAc,EAAoB,kBAAkB,EAAE,SAAS,EACjJ,YAAY,EAAE,iBAAiB,EAAE,mBAAmB,GACrD,MAAM,oBAAoB,CAAC;AAC5B,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,SAAS,EAAE,QAAQ,EAAE,MAAM,sBAAsB,CAAC;AAC7E,OAAO,EACE,UAAU,EAAE,UAAU,EAAE,aAAa,EAAE,YAAY,EAAE,SAAS,EAAE,YAAY,EAAqB,aAAa,EAAE,iBAAiB,EACxI,kBAAkB,EAAE,gBAAgB,EAAgC,mBAAmB,EAAkC,qBAAqB,EAC5H,cAAc,EAAE,YAAY,EAAE,KAAK,GACtD,MAAM,qBAAqB,CAAC;AAC7B,OAAO,EAAE,oCAAoC,EAAE,MAAM,0BAA0B,CAAC;AAChF,OAAO,EAAE,iBAAiB,EAAE,MAAM,sBAAsB,CAAC;AAEzD,OAAO,EAAE,SAAS,EAAE,MAAM,cAAc,CAAC;AAEzC,OAAO,EAAE,iBAAiB,EAAE,MAAM,sBAAsB,CAAC;AACzD,OAAO,EAAE,IAAI,EAAE,MAAM,0CAA0C,CAAC;AAMhE,OAAO,EACL,oBAAoB,EAAE,IAAI,EAA6B,gBAAgB,EAA2B,QAAQ,EACxE,eAAe,GAClD,MAAM,YAAY,CAAC;AAEpB,MAAM,YAAY,GAAG,OAAO,CAAC,MAAM,EAAE,CAAC;AACtC,MAAM,mBAAmB,GAAG,IAAI,OAAO,EAAE,CAAC;AAO1C,SAAS,iBAAiB,CAAC,GAAyB,EAAE,GAAyB;IAC7E,OAAO,yBAAyB,CAAC,GAAG,CAAC,EAAE,EAAE,GAAG,CAAC,EAAE,CAAC,IAAI,yBAAyB,CAAC,GAAG,CAAC,MAAM,EAAE,GAAG,CAAC,MAAM,CAAC,IAAI,yBAAyB,CAAC,GAAG,CAAC,OAAO,EAAE,GAAG,CAAC,OAAO,CAAC,CAAC;AAC/J,CAAC;AAED,MAAM,mBAAmB;IAChB,QAAQ,CAAC,MAAqB,EAAE,MAAwB;QAC7D,OAAO,MAAM,CAAC,KAAK,CAAC,gBAAgB,CAAC,MAAM,EAAE,IAAI,CAAC,CAAC;IACrD,CAAC;IAEM,KAAK,CAAC,cAAc,CAAC,MAAqB,EAAE,MAAwB;QACzE,OAAO,eAAe,CAAC,qBAAqB,CAAC,MAAM,CAAC,WAAW,EAAE,MAAM,EAAE,MAAM,CAAC,OAAO,CAAC,CAAC;IAC3F,CAAC;IAEM,kBAAkB,CAAC,GAAkB,EAAE,GAAkB;QAC9D,OAAO,yBAAyB,CAAC,GAAG,CAAC,OAAO,EAAE,GAAG,CAAC,OAAO,CAAC,IAAI,iBAAiB,CAAC,GAAG,CAAC,WAAW,EAAE,GAAG,CAAC,WAAW,CAAC,CAAC;IACpH,CAAC;IAEM,mCAAmC,CAAC,SAA+B,EAAE,KAAwB;QAClG,MAAM,MAAM,GAAG,KAAK,CAAC,MAAM,CAAC,KAAK,CAAC,wBAAwB,CAAC,IAAI,CAAC,CAAC;QACjE,KAAK,MAAM,KAAK,IAAI,MAAM,EAAE;YAC1B,+DAA+D;YAC/D,IAAI,CAAC,KAAK,iBAAiB,CAAC,SAAS,EAAE,KAAK,CAAC,EAAE,CAAC,WAAW,CAAC,EAAE;gBAC5D,MAAM,OAAO,GAAG,KAAK,CAAC,EAAE,CAAC,OAAO,CAAC;gBACjC,MAAM,CAAC,SAAS,KAAK,OAAO,CAAC,CAAC;gBAE9B,qIAAqI;gBACrI,IAAI,IAAI,CAAC,eAAe,CAAC,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,yBAAyB,CAAC,IAAI,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,KAAK,CAAC,OAAO,KAAK,OAAO,CAAC;oBAC9G,OAAO,OAAO,CAAC;aAClB;SACF;QAED,OAAO,SAAS,CAAC;IACnB,CAAC;CACF;AAED,MAAM,mBAAmB,GAAG,IAAI,mBAAmB,EAAE,CAAC;AAEtD,SAAS,oBAAoB,CAAC,YAA8B,EAAE,MAAkB;IAC9E,IAAI,SAAS,KAAK,MAAM;QACtB,MAAM,GAAG,SAAS,CAAC,cAAc,EAAE,CAAC;IAEtC,MAAM,CAAC,MAAM,CAAC,YAAY,CACxB,YAAY,CAAC,UAAU,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,YAAY,CAAC,UAAU,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,YAAY,CAAC,UAAU,CAAC,CAAC,EAAE,CAAC,CAAC,EAC3F,YAAY,CAAC,UAAU,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,YAAY,CAAC,UAAU,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,YAAY,CAAC,UAAU,CAAC,CAAC,EAAE,CAAC,CAAC,EAC3F,YAAY,CAAC,UAAU,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,YAAY,CAAC,UAAU,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,YAAY,CAAC,UAAU,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC;IAE/F,MAAM,CAAC,MAAM,CAAC,CAAC,GAAG,YAAY,CAAC,UAAU,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;IAChD,MAAM,CAAC,MAAM,CAAC,CAAC,GAAG,YAAY,CAAC,UAAU,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;IAChD,MAAM,CAAC,MAAM,CAAC,CAAC,GAAG,YAAY,CAAC,UAAU,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;IAChD,OAAO,MAAM,CAAC;AAChB,CAAC;AAED,SAAS,gBAAgB,CAAC,aAAgC,EAAE,MAAgB;IAC1E,IAAI,SAAS,KAAK,MAAM;QACtB,MAAM,GAAG,OAAO,CAAC,MAAM,EAAE,CAAC;IAE5B,MAAM,CAAC,CAAC,GAAG,aAAa,CAAC,CAAC,CAAC;IAC3B,MAAM,CAAC,CAAC,GAAG,aAAa,CAAC,CAAC,CAAC;IAC3B,MAAM,CAAC,CAAC,GAAG,aAAa,CAAC,CAAC,CAAC;IAE3B,OAAO,MAAM,CAAC;AAChB,CAAC;AAED,SAAS,gBAAgB,CAAC,SAAwB,EAAE,MAAgB;IAClE,IAAI,SAAS,KAAK,MAAM;QACtB,MAAM,GAAG,OAAO,CAAC,MAAM,EAAE,CAAC;IAE5B,gBAAgB,CAAC,SAAS,CAAC,GAAG,EAAE,MAAM,CAAC,GAAG,CAAC,CAAC;IAC5C,gBAAgB,CAAC,SAAS,CAAC,GAAG,EAAE,MAAM,CAAC,IAAI,CAAC,CAAC;IAC7C,OAAO,MAAM,CAAC;AAChB,CAAC;AAED,gBAAgB;AAChB,MAAM,UAAU,8BAA8B,CAAC,KAAqC;IAClF,OAAO,IAAI,oBAAoB,CAAC,KAAK,CAAC,CAAC;AACzC,CAAC;AAED,MAAM,qBAAqB;IAIzB,IAAW,QAAQ,KAAuB,OAAO,gBAAgB,CAAC,OAAO,CAAC,CAAC,CAAC;IAE5E,YAAmB,WAAiC,EAAE,MAAwB,EAAE,OAAmB,EAAS,QAAmB;QAAnB,aAAQ,GAAR,QAAQ,CAAW;QAC7H,MAAM,GAAG,GAAG,WAAW,CAAC;QACxB,IAAI,CAAC,EAAE,GAAG,GAAG,GAAG,CAAC,QAAQ,IAAI,GAAG,CAAC,MAAM,IAAI,GAAG,CAAC,EAAE,IAAI,GAAG,CAAC,OAAO,EAAE,CAAC;QACnE,IAAI,CAAC,OAAO,GAAG,OAAO,CAAC;QACvB,IAAI,CAAC,MAAM,GAAG,MAAM,CAAC;IACvB,CAAC;CACF;AAED,MAAM,eAAgB,SAAQ,IAAI;IACtB,aAAa,CAAC,QAAgD,EAAE,OAA+B,IAAU,CAAC;IAC7G,KAAK,CAAC,cAAc,CAAC,WAA0B,IAAmC,OAAO,SAAS,CAAC,CAAC,CAAC;IAC5G,IAAW,OAAO,KAAK,OAAO,SAAS,CAAC,SAAS,CAAC,QAAQ,CAAC,UAAU,CAAC,kBAAkB,CAAC,CAAC,CAAC,CAAC;IACrF,KAAK,CAAC,WAAW,CAAC,KAA+B,EAAE,OAAqB,EAAE,WAA2B,IAA0B,OAAO,EAAE,CAAC,CAAC,CAAC;IAClI,UAAU,KAAW,CAAC;IAEtC,YAAY,MAAkB,EAAE,IAAc,IAAI,KAAK,CAAC,MAAM,EAAE,IAAI,CAAC,CAAC,CAAC,CAAC;CACzE;AAED,MAAM,kBAAmB,SAAQ,mBAAmB;IAElD,YAAoB,aAA2B,EAAU,aAAuB;QAC9E,KAAK,EAAE,CAAC;QADU,kBAAa,GAAb,aAAa,CAAc;QAAU,kBAAa,GAAb,aAAa,CAAU;QAE9E,IAAI,CAAC,sBAAsB,GAAG,aAAa,CAAC,QAAQ,CAAC,0BAA0B,CAAC,SAAS,CAAC,iBAAiB,CAAC,aAAa,CAAC,CAAC,CAAC;IAC9H,CAAC;IAEM,YAAY,CAAC,MAAqB;QACvC,MAAM,GAAG,GAAG,OAAO,CAAC,SAAS,CAAC,gBAAgB,CAAC,MAAM,EAAE,YAAY,CAAC,CAAC,CAAC;QACtE,MAAM,QAAQ,GAAG,GAAG,CAAC,WAAW,CAAC,IAAI,CAAC,sBAAsB,EAAE,mBAAmB,CAAC,CAAC;QACnF,OAAO,aAAa,CAAC,WAAW,CAAC,OAAO,KAAK,IAAI,CAAC,aAAa,CAAC,aAAa,CAAC,yBAAyB,CAAC,QAAQ,EAAE,SAAS,CAAC,CAAC;IAC/H,CAAC;IACM,YAAY;QACjB,OAAO,IAAI,CAAC,aAAa,CAAC,GAAG,CAAC,YAAY,CAAC;IAC7C,CAAC;IAEM,WAAW,CAAC,KAAmB,EAAE,IAAsB;QAC5D,wCAAwC;QACxC,MAAM,UAAU,GAAsB,KAAK,CAAC,WAAW,EAAE,CAAC,aAAa,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;QACxF,UAAU,CAAC,CAAC,IAAI,IAAI,CAAC,aAAa,CAAC,CAAC,CAAC;QACrC,UAAU,CAAC,CAAC,IAAI,IAAI,CAAC,aAAa,CAAC,CAAC,CAAC;QACrC,UAAU,CAAC,CAAC,IAAI,IAAI,CAAC,aAAa,CAAC,CAAC,CAAC;QACrC,MAAM,WAAW,GAAY,IAAI,CAAC,aAAa,CAAC,QAAQ,CAAC,WAAW,CAAC,UAAU,CAAC,CAAC,EAAE,UAAU,CAAC,CAAC,EAAE,UAAU,CAAC,CAAC,CAAC,CAAC;QAC/G,MAAM,YAAY,GAAY,IAAI,CAAC,aAAa,CAAC,QAAQ,CAAC,WAAW,CAAC,UAAU,CAAC,CAAC,EAAE,UAAU,CAAC,CAAC,EAAE,UAAU,CAAC,CAAC,GAAG,KAAK,CAAC,WAAW,EAAE,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;QAC7I,MAAM,SAAS,GAAW,YAAY,CAAC,QAAQ,CAAC,WAAW,CAAC,GAAG,EAAE,CAAC;QAClE,0DAA0D;QAC1D,MAAM,MAAM,GAAY,IAAI,CAAC,aAAa,CAAC,cAAc,CAAC,UAAU,CAAC,6BAA6B,CAAC,WAAW,CAAC,CAAC;QAChH,MAAM,OAAO,GAAY,IAAI,OAAO,CAAC,MAAM,CAAC,CAAC,GAAG,GAAG,EAAE,MAAM,CAAC,CAAC,EAAE,MAAM,CAAC,CAAC,CAAC,CAAC;QACzE,MAAM,iBAAiB,GAAW,IAAI,CAAC,aAAa,CAAC,cAAc,CAAC,UAAU,CAAC,6BAA6B,CAAC,MAAM,CAAC,CAAC,QAAQ,CAAC,IAAI,CAAC,aAAa,CAAC,cAAc,CAAC,UAAU,CAAC,6BAA6B,CAAC,OAAO,CAAC,CAAC,CAAC;QACnN,wFAAwF;QACxF,MAAM,KAAK,GAAY,CAAC,GAAG,GAAG,SAAS,GAAG,GAAG,GAAG,iBAAiB,CAAC,CAAC;QACnE,OAAO,KAAK,CAAC;IACf,CAAC;CACF;AAED,MAAM,iBAAiB;IAErB,YAAY,eAA0B,EAAE,YAA0B,EAAE,YAAsB;QACxF,MAAM,QAAQ,GAAG,YAAY,CAAC,QAAQ,CAAC;QACvC,IAAI,MAAgB,CAAC;QACrB,IAAI,SAAS,KAAK,YAAY,CAAC,QAAQ,EAAE;YACvC,MAAM,GAAG,QAAQ,CAAC,UAAU,CAAC,YAAY,CAAC,UAAU,CAAC,CAAC;YACtD,MAAM,SAAS,GAAG,YAAY,CAAC,SAAS,CAAC;YACzC,MAAM,QAAQ,GAAG,QAAQ,CAAC,UAAU,CAAC,EAAE,CAAC,EAAE,SAAS,CAAC,CAAC,GAAG,CAAC,EAAE,CAAC,EAAE,SAAS,CAAC,CAAC,GAAG,CAAC,EAAE,CAAC,EAAE,SAAS,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,CAAC;YACtG,QAAQ,CAAC,cAAc,CAAC,QAAQ,EAAE,QAAQ,CAAC,CAAC;YAC5C,MAAM,CAAC,UAAU,CAAC,QAAQ,CAAC,CAAC;SAC7B;aAAM;YACL,MAAM,GAAG,QAAQ,CAAC,UAAU,CAAC,YAAY,CAAC,QAAQ,CAAC,CAAC;SACrD;QAED,QAAQ,CAAC,cAAc,CAAC,MAAM,CAAC,CAAC;QAChC,MAAM,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC,CAAC;QACxB,MAAM,eAAe,GAAG,SAAS,CAAC,qBAAqB,CAAC,MAAM,EAAE,QAAQ,CAAC,CAAC;QAC1E,MAAM,qBAAqB,GAAG,eAAe,CAAC,0BAA0B,CAAC,SAAS,CAAC,iBAAiB,CAAC,YAAY,CAAC,CAAC,CAAC;QACpH,IAAI,CAAC,cAAc,GAAG,eAAe,CAAC,0BAA0B,CAAC,qBAAqB,CAAC,CAAC;IAC1F,CAAC;IACM,oBAAoB,CAAC,UAA6B;QACvD,MAAM,KAAK,GAAG,gBAAgB,CAAC,UAAU,CAAC,CAAC;QAC3C,IAAI,CAAC,cAAc,CAAC,eAAe,CAAC,KAAK,EAAE,KAAK,CAAC,CAAC;QAClD,UAAU,CAAC,CAAC,GAAG,KAAK,CAAC,CAAC,CAAC;QACvB,UAAU,CAAC,CAAC,GAAG,KAAK,CAAC,CAAC,CAAC;QACvB,UAAU,CAAC,CAAC,GAAG,KAAK,CAAC,CAAC,CAAC;IACzB,CAAC;CACF;AAED,MAAM,kBAAmB,SAAQ,eAAe;IAG9C,YAAmB,OAAsB,EAAE,QAAkB,EAAE,IAAiB;QAC9E,KAAK,EAAE,CAAC;QACR,IAAI,CAAC,OAAO,GAAG,OAAO,CAAC;QACvB,IAAI,CAAC,IAAI,CAAC,QAAQ,EAAE,IAAI,CAAC,CAAC;IAC5B,CAAC;IAEM,OAAO;QACZ,IAAI,CAAC,OAAO,CAAC,OAAO,EAAE,CAAC;IACzB,CAAC;CACF;AAED,gBAAgB;AAChB,MAAM,OAAO,eAAgB,SAAQ,QAAQ;IAM3C,YAAmB,UAA0B,EAAU,YAAgC,EAAE,UAAmB,EAAU,aAAuB,EAAU,cAAyB;QAC9K,KAAK,CAAC,UAAU,CAAC,CAAC;QADmC,iBAAY,GAAZ,YAAY,CAAoB;QAA+B,kBAAa,GAAb,aAAa,CAAU;QAAU,mBAAc,GAAd,cAAc,CAAW;QAHzK,sBAAiB,GAAsB,EAAE,CAAC;QACzC,kBAAa,GAAG,IAAI,GAAG,EAA8B,CAAC;QAK5D,MAAM,iBAAiB,GAAG,IAAI,CAAC,eAAe,CAAC,aAAa,CAAC,UAAU,CAAC,CAAC;QACzE,sDAAsD;QACtD,IAAI,CAAC,MAAM,CAAC,sBAAsB,CAAC,iBAAiB,CAAC,CAAC;QACtD,IAAI,CAAC,WAAW,GAAG,EAAE,SAAS,EAAE,GAAG,EAAE,KAAK,EAAE,UAAU,EAAE,WAAW,EAAE,GAAG,EAAE,CAAC;QAC3E,IAAI,CAAC,QAAQ,GAAG,IAAI,eAAe,CAAC,IAAI,CAAC,WAAW,EAAE,IAAI,CAAC,CAAC;IAC9D,CAAC;IAEe,KAAK,CAAC,gBAAgB;QACpC,OAAO,IAAI,CAAC,cAAc,CAAC;IAC7B,CAAC;IAEe,OAAO;QACrB,IAAI,IAAI,CAAC,UAAU;YACjB,OAAO;QAET,KAAK,MAAM,OAAO,IAAI,IAAI,CAAC,aAAa,CAAC,MAAM,EAAE;YAC/C,OAAO,CAAC,OAAO,EAAE,CAAC;QAEpB,IAAI,CAAC,aAAa,CAAC,KAAK,EAAE,CAAC;QAC3B,KAAK,CAAC,OAAO,EAAE,CAAC;IAClB,CAAC;IAES,YAAY,CAAC,KAAmB,IAAY,OAAO,EAAE,CAAC,CAAC,CAAC;IAClE,IAAW,IAAI,KAAc,OAAO,IAAI,CAAC,CAAC,CAAC;IAC3C,IAAoB,kBAAkB,KAAc,OAAO,KAAK,CAAC,CAAC,CAAC;IACnE,IAAW,QAAQ,KAAyB,OAAO,SAAS,CAAC,CAAC,CAAC;IAEvD,QAAQ,CAAC,SAAsB;QACrC,KAAK,MAAM,CAAC,GAAG,EAAE,OAAO,CAAC,IAAI,IAAI,CAAC,aAAa;YAC7C,IAAI,OAAO,CAAC,SAAS,CAAC,SAAS,CAAC,EAAE;gBAChC,OAAO,CAAC,OAAO,EAAE,CAAC;gBAClB,IAAI,CAAC,aAAa,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC;aAChC;IACL,CAAC;IAEM,KAAK;QACV,MAAM,SAAS,GAAG,WAAW,CAAC,GAAG,EAAE,CAAC,KAAK,CAAC,IAAI,CAAC,cAAc,CAAC,CAAC;QAC/D,IAAI,CAAC,QAAQ,CAAC,SAAS,CAAC,CAAC;IAC3B,CAAC;IAEe,iBAAiB,CAAC,KAA8B;QAC9D,KAAK,MAAM,WAAW,IAAI,IAAI,CAAC,aAAa;YAC1C,WAAW,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,iBAAiB,CAAC,KAAK,CAAC,CAAC;IACpD,CAAC;IAEM,IAAI,CAAC,IAAkB;QAC5B,MAAM,YAAY,GAAG,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,YAAY,CAAC;QACtD,MAAM,YAAY,GAAG,CAAC,YAAY,IAAI,YAAY,CAAC,wBAAwB,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,OAAO,CAAC,yBAAyB,EAAE,CAAC,CAAC,CAAC,SAAS,CAAC;QACpI,MAAM,SAAS,GAAG,CAAC,YAAY,IAAI,YAAY,CAAC,eAAe,CAAC,CAAC;QACjE,MAAM,WAAW,GAAG,IAAI,kBAAkB,CAAC,IAAI,EAAE,IAAI,CAAC,aAAa,CAAC,CAAC;QACrE,MAAM,YAAY,GAAG,IAAI,YAAY,EAAgB,CAAC;QACtD,MAAM,YAAY,GAAG,IAAI,YAAY,EAAqB,CAAC;QAC3D,MAAM,WAAW,GAAG,IAAI,YAAY,EAAoB,CAAC;QACzD,MAAM,SAAS,GAAG,IAAI,gBAAgB,EAAE,CAAC;QAEzC,IAAI,CAAC,YAAY,CAAC,WAAW,EAAE,CAAC,YAAY,CAAC,WAAW,EAAE,YAAY,EAAE,YAAY,EAAE,WAAW,EAAE,SAAS,CAAC,aAAa,CAAC,CAAC;QAC5H,IAAI,CAAC,YAAY,CAAC,cAAc,CAAC,YAAY,EAAE,YAAY,EAAE,WAAW,EAAE,SAAS,CAAC,YAAY,EAAE,SAAS,CAAC,YAAY,EAAE,SAAS,CAAC,WAAW,CAAC,CAAC;QACjJ,WAAW,CAAC,IAAI,CAAC,IAAI,qBAAqB,CAAC,IAAI,CAAC,YAAY,CAAC,WAAW,EAAE,EAAE,IAAI,iBAAiB,CAAC,IAAI,CAAC,eAAe,EAAE,IAAI,CAAC,OAAO,CAAC,YAAY,EAAE,IAAI,CAAC,aAAa,CAAC,CAAC,CAAC,CAAC;QAEzK,IAAI,eAAe,GAAG,CAAC,CAAC;QACxB,MAAM,SAAS,GAAG,SAAS,CAAC,aAAa,CAAC,IAAI,EAAE,CAAC;QAEjD,4DAA4D;QAC5D,SAAS,CAAC,SAAS,CAAC,uBAAuB,CAAC,IAAI,CAAC,OAAO,CAAC,QAAQ,EAAE,EAAE,SAAS,EAAE,SAAS,CAAC,WAAW,CAAC,IAAI,EAAE,GAAG,CAAC,SAAS,CAAC,cAAc,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,QAAQ,EAAE,SAAS,EAAE,KAAK,EAAE,SAAS,EAAE,CAAC,CAAC;QAE9L,IAAI,YAAY;YACd,YAAY,CAAC,YAAY,CAAC,QAAQ,CAAC,GAAG,EAAE,QAAQ,CAAC,GAAG,EAAE,CAAC,CAAC,CAAC;QAE3D,IAAI,QAAQ,GAAG,GAAG,EAAE,QAAQ,GAAG,CAAC,GAAG,CAAC;QACpC,KAAK,IAAI,CAAC,GAAW,CAAC,EAAE,CAAC,GAAG,SAAS,EAAE,CAAC,EAAE,EAAE;YAC1C,MAAM,IAAI,GAAiB,SAAS,CAAC,aAAa,CAAC,GAAG,CAAC,CAAC,CAAiB,CAAC;YAC1E,QAAQ,GAAG,IAAI,CAAC,GAAG,CAAC,QAAQ,EAAE,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC;YACpD,QAAQ,GAAG,IAAI,CAAC,GAAG,CAAC,QAAQ,EAAE,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC;YACpD,eAAe,IAAI,IAAI,CAAC,SAAS,CAAC,UAAU,CAAC;YAC7C,MAAM,GAAG,GAAG,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC;YAC/B,MAAM,aAAa,GAAG,IAAI,CAAC,aAAa,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;YAClD,IAAI,SAAS,KAAK,aAAa,EAAE;gBAC/B,aAAa,CAAC,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,QAAQ,EAAE,IAAI,CAAC,GAAG,CAAC,CAAC;gBACpD,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,aAAa,CAAC,OAAO,CAAC,CAAC;aAC1C;iBAAM;gBACL,MAAM,KAAK,GAAG,gBAAgB,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;gBAC5C,KAAK,CAAC,GAAG,CAAC,UAAU,CAAC,IAAI,CAAC,aAAa,CAAC,CAAC;gBACzC,KAAK,CAAC,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,aAAa,CAAC,CAAC;gBAC1C,MAAM,OAAO,GAAG,SAAS,CAAC,SAAS,CAAC,KAAK,EAAE,SAAS,EAAE,CAAC,IAAI,CAAC,OAAO,IAAI,IAAI,CAAC,CAAC,CAAC,CAAC,YAAY,CAAC,WAAW,CAAC,CAAC,CAAC,YAAY,CAAC,YAAY,CAAC,CAAC;gBACrI,MAAM,YAAY,GAAG,IAAI,YAAY,CAAC,CAAC,EAAE,IAAI,CAAC,OAAO,EAAE,SAAS,CAAC,OAAO,CAAC,CAAC;gBAC1E,MAAM,QAAQ,GAAG,IAAI,IAAI,CAAC,QAAQ,CAAC,YAAY,CAAC,CAAC;gBACjD,MAAM,MAAM,GAAG,SAAS,CAAC,YAAY,CAAC;gBACtC,MAAM,SAAS,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,GAAG,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,EAAE,CAAC;gBAEpD,QAAQ,CAAC,GAAG,CAAC,IAAI,OAAO,CAAC,IAAI,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC,CAAC;gBAC3C,MAAM,UAAU,GAAG,CAAC,IAAI,CAAC,OAAO,IAAI,IAAI,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,OAAO,CAAC,cAAc,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,QAAQ,CAAC,cAAc,EAAE,CAAC;gBAC3G,IAAI,aAAa,GAAG,MAAM,CAAC,gBAAgB,CAAC;oBAC1C,SAAS,EAAE,UAAU;oBACrB,OAAO,EAAE,OAAO;oBAChB,MAAM,EAAE,IAAI,CAAC,MAAM,CAAC,cAAc,EAAE;oBACpC,QAAQ,EAAE,QAAQ,CAAC,cAAc,EAAE;oBACnC,SAAS;oBACT,WAAW,EAAE,KAAK;iBACnB,EAAE,IAAI,CAAC,MAAM,CAAC,CAAC;gBAEhB,aAAa,GAAG,MAAM,CAAC,WAAW,CAAC,aAAc,EAAE,kBAAkB,CAAC,IAAI,CAAC,YAAY,CAAC,EAAE,KAAK,CAAC,CAAC;gBACjG,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,aAAa,CAAC,CAAC;gBACjC,IAAI,CAAC,aAAa,CAAC,GAAG,CAAC,GAAG,EAAE,IAAI,kBAAkB,CAAC,aAAa,EAAE,IAAI,CAAC,OAAO,CAAC,QAAQ,EAAE,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC;aACrG;YAED,IAAI,YAAY;gBACd,YAAY,CAAC,WAAW,CAAC,gBAAgB,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC;SAC3D;QAED,IAAI,YAAY;YACd,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,YAAY,CAAC,MAAM,EAAE,CAAC,CAAC;QAE3C,IAAI,SAAS,EAAE;YACb,sCAAsC;YACtC,OAAO,CAAC,GAAG,CAAC,uBAAuB,SAAS,cAAc,QAAQ,cAAc,QAAQ,kBAAkB,eAAe,EAAE,CAAC,CAAC;SAC9H;QAED,IAAI,CAAC,YAAY,EAAE,CAAC;QACpB,IAAI,SAAS,CAAC,cAAc,EAAE,EAAE;YAC9B,IAAI,CAAC,YAAY,CAAC,QAAQ,CAAC,SAAS,CAAC,CAAC,IAAI,CAAC,GAAG,EAAE,CAAC,SAAS,CAAC,SAAS,CAAC,UAAU,CAAC,UAAU,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,IAAS,EAAE,EAAE,CAAC,SAAS,CAAC,CAAC;SAC5I;IACH,CAAC;CACF;AAED,gBAAgB;AAChB,wCAAwC;AACxC,WAAiB,eAAe;IAK9B,SAAS,eAAe,CAAC,WAAmB;QAE1C,sEAAsE;QACtE,IAAG,CAAC,WAAW,CAAC,UAAU,CAAC,MAAM,CAAC;YAChC,WAAW,GAAG,kBAAkB,WAAW,EAAE,CAAC;QAEhD,MAAM,MAAM,GAAG,IAAI,GAAG,CAAC,WAAW,CAAC,CAAC;QAEpC,MAAM,EAAE,GAAG,MAAM,CAAC,YAAY,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;QACzC,IAAI,EAAE,EAAE;YACN,MAAM,SAAS,GAAG,IAAI,IAAI,CAAC,EAAE,CAAC,CAAC;YAC/B,MAAM,GAAG,GAAG,IAAI,IAAI,EAAE,CAAC;YACvB,MAAM,UAAU,GAAG,IAAI,IAAI,CAAC,GAAG,EAAE,WAAW,EAAE,CAAC,CAAC;YAEhD,OAAO,SAAS,IAAI,UAAU,CAAC;SAChC;QAED,OAAO,KAAK,CAAC;IACf,CAAC;IACD,SAAS,uBAAuB,CAAC,KAAuB;QAEtD,iDAAiD;QACjD,IAAG,CAAC,KAAK,CAAC,WAAW,IAAI,CAAC,KAAK,CAAC,aAAa,IAAI,CAAC,KAAK,CAAC,YAAY,IAAI,CAAC,KAAK,CAAC,QAAQ;YACrF,OAAO,KAAK,CAAC;QAEf,2BAA2B;QAC3B,OAAO,eAAe,CAAC,KAAK,CAAC,QAAQ,CAAC,CAAC;IACzC,CAAC;IAEM,KAAK,UAAU,qBAAqB,CAAC,WAAiC,EAAE,MAAwB,EAAE,OAAmB;QAC1H,MAAM,QAAQ,GAAG,MAAM,iBAAiB,CAAC,OAAO,CAAC,WAAW,EAAE,MAAM,CAAC,OAAO,CAAC,CAAC;QAC9E,MAAM,cAAc,GAAG,WAAW,CAAC,QAAQ,KAAK,mBAAmB,CAAC,YAAY,CAAC;QACjF,MAAM,WAAW,GAAG,WAAW,CAAC,QAAQ,KAAK,mBAAmB,CAAC,UAAU,CAAC;QAE5E,IAAI,aAAqB,CAAC;QAC1B,IAAI,cAAc,EAAE;YAClB,MAAM,WAAW,GAAG,QAAQ,CAAC,CAAC,CAAC,QAAQ,CAAC,WAAW,CAAC,CAAC,CAAC,SAAS,CAAC;YAChE,IAAI,QAAQ,KAAK,SAAS,IAAI,WAAW,KAAK,SAAS;gBACrD,OAAO,SAAS,CAAC;YACnB,MAAM,WAAW,GAAG,WAAW,CAAC,YAAY,CAAC;YAC7C,IAAI,CAAC,WAAW;gBACd,OAAO,SAAS,CAAC;YACnB,MAAM,KAAK,GAAG,MAAM,SAAS,CAAC,cAAc,EAAE,CAAC;YAC/C,MAAM,OAAO,GAAG,MAAM,WAAW,CAAC,UAAU,CAAC,KAAK,EAAE,WAAW,CAAC,CAAC;YACjE,aAAa,GAAG,OAAO,CAAC,QAAQ,EAAE,CAAC;SACpC;aAAM,IAAI,WAAW,EAAE;YACtB,aAAa,GAAG,WAAW,CAAC,EAAE,CAAC;SAChC;aAAM;YACL,MAAM,gBAAgB,GAAG,iBAAiB,CAAC,6BAA6B,CAAC,WAAW,CAAC,CAAC;YACtF,IAAI,gBAAgB,KAAK,SAAS;gBAChC,OAAO,SAAS,CAAC;YACnB,IAAG,CAAC,uBAAuB,CAAC,gBAAgB,CAAC;gBAC3C,OAAO,SAAS,CAAC;YACnB,MAAM,EAAE,WAAW,EAAE,aAAa,EAAE,YAAY,EAAE,QAAQ,EAAE,GAAG,gBAAgB,CAAC;YAChF,aAAa,GAAG,YAAY,CAAC;YAC7B,IAAI,WAAW,CAAC,MAAM,GAAG,CAAC;gBACxB,aAAa,GAAG,KAAK,CAAC,kBAAkB,CAAC,WAAW,EAAE,aAAa,EAAE,YAAY,EAAE,QAAQ,CAAC,CAAC;SAChG;QAED,IAAI,UAAU,CAAC,QAAQ,IAAI,IAAI;YAC7B,UAAU,CAAC,QAAQ,GAAG,IAAI,aAAa,EAAE,CAAC;QAE5C,IAAI,UAAU,CAAC,MAAM,IAAI,IAAI;YAC3B,UAAU,CAAC,MAAM,GAAG,MAAM,YAAY,CAAC,MAAM,EAAE,CAAC;QAElD,oDAAoD;QACpD,MAAM,KAAK,GAAU,IAAI,KAAK,EAAE,CAAC;QACjC,MAAM,YAAY,GAAU,MAAM,KAAK,CAAC,aAAa,CAAC,aAAa,CAAC,CAAC;QACrE,MAAM,cAAc,GAAG,GAAG,CAAC;QAC3B,MAAM,cAAc,GAAG,IAAI,cAAc,CAAC,KAAK,EAAE,aAAa,EAAE,YAAY,EAAE,cAAc,GAAG,IAAI,CAAC,aAAa,EAAE,GAAG,CAAA,iBAAiB,CAAC,CAAC;QACzI,MAAM,gBAAgB,GAAG,MAAM,SAAS,CAAC,QAAQ,CAAC,cAAc,EAAE,aAAa,EAAE,IAAI,CAAA,gBAAgB,CAAC,CAAC;QACvG,IAAI,aAAa,GAAG,gBAAgB,CAAC,UAAU,EAAE,CAAC;QAClD,IAAI,aAAa,IAAI,IAAI;YACvB,aAAa,GAAG,EAAE,CAAC;QACrB,MAAM,WAAW,GAAG,IAAI,kBAAkB,CAAC,gBAAgB,EAAE,aAAa,EAAE,YAAY,CAAC,IAAI,CAAC,CAAC;QAC/F,MAAM,gBAAgB,GAAG,WAAW,CAAC,mBAAmB,EAAE,CAAC;QAC3D,MAAM,eAAe,GAAG,gBAAgB,CAAC,gBAAgB,CAAC,CAAC;QAC3D,MAAM,gBAAgB,GAAG,eAAe,CAAC,eAAe,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,CAAE,CAAC;QACtE,MAAM,cAAc,GAAG,SAAS,CAAC,iBAAiB,CAAC,gBAAgB,CAAC,CAAC;QACrE,MAAM,aAAa,GAAG,SAAS,CAAC,cAAc,EAAE,CAAC;QACjD,IAAI,oBAAoB,GAAG,cAAc,CAAC;QAC1C,IAAI,aAAa,CAAC,MAAM,GAAG,CAAC,EAAE;YAC5B,MAAM,UAAU,CAAC,MAAM,CAAC,cAAc,CAAC,aAAa,EAAE,gBAAgB,CAAC,CAAC;YACxE,MAAM,QAAQ,GAAG,MAAM,CAAC;YACxB,MAAM,UAAU,CAAC,MAAM,CAAC,cAAc,CAAC,QAAQ,EAAE,IAAI,aAAa,EAAE,CAAC,CAAC;YACtE,MAAM,gBAAgB,GAAG,oBAAoB,CAAC,UAAU,CAAC,eAAe,CAAC,aAAa,EAAE,IAAI,iBAAiB,CAAC,gBAAgB,CAAC,CAAC,EAAE,gBAAgB,CAAC,CAAC,EAAE,gBAAgB,CAAC,CAAC,CAAC,EAAE,QAAQ,CAAC,CAAC,CAAC;YACtL,MAAM,sBAAsB,GAAG,gBAAgB,CAAC,0BAA0B,CAAC,cAAc,CAAC,CAAC;YAC3F,aAAa,CAAC,OAAO,CAAC,sBAAsB,CAAC,CAAC;YAE9C,IAAI,QAAQ,GAAG,MAAM,CAAC,cAAc,CAAC,CAAC,CAAC,CAAC;YACxC,gGAAgG;YAChG,qHAAqH;YACrH,yHAAyH;YACzH,sCAAsC;YACtC,gJAAgJ;YAChJ,uCAAuC;YACvC,MAAM,UAAU,GAAG,sBAAsB,CAAC,SAAS,EAAE,CAAC;YACtD,MAAM,QAAQ,GAAG,QAAQ,CAAC,eAAe,CAAC,UAAU,CAAC,CAAC;YACtD,MAAM,8BAA8B,GAAG,MAAM,CAAC,cAAc,CAAC,eAAe,CAAC,QAAQ,CAAC,CAAC;YACvF,MAAM,kBAAkB,GAAG,GAAG,CAAC,CAAK,4KAA4K;YAChN,IAAI,8BAA8B,GAAG,kBAAkB,EAAE;gBACvD,MAAM,kBAAkB,GAAG,YAAY,CAAC,QAAQ,CAAC,UAAU,CAAC,CAAC;gBAC7D,MAAM,YAAY,GAAG,MAAM,CAAC,YAAY,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,MAAM,CAAC,WAAW,CAAC,YAAY,CAAC,OAAO,CAAC,CAAC;gBAChG,IAAI,kBAAkB,KAAK,SAAS,IAAI,YAAY,KAAK,SAAS,EAAE;oBAClE,MAAM,SAAS,GAAG,OAAO,CAAC,MAAM,CAAC,kBAAkB,CAAC,gBAAgB,EAAE,kBAAkB,CAAC,eAAe,EAAE,kBAAkB,CAAC,MAAM,CAAC,CAAC;oBACrI,MAAM,QAAQ,GAAG,MAAM,YAAY,CAAC,sCAAsC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC;oBACxF,IAAI,QAAQ,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK,cAAc,CAAC,OAAO,EAAE;wBACzD,MAAM,cAAc,GAAG,MAAM,oCAAoC,CAAC,OAAO,CAAC,QAAQ,CAAC,QAAQ,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,MAAM,CAAC,CAAC;wBACxH,IAAI,cAAc;4BAChB,QAAQ,GAAG,cAAc,CAAC;qBAC7B;iBACF;aACF;YAED,oBAAoB,GAAG,QAAQ,CAAC,0BAA0B,CAAC,sBAAsB,CAAC,CAAC;SACpF;QACD,MAAM,MAAM,GAAG,IAAI,qBAAqB,CAAC,WAAW,EAAE,MAAM,EAAE,OAAO,EAAE,oBAAoB,CAAC,CAAC;QAE7F,uEAAuE;QACvE,MAAM,YAAY,GAAG,QAAQ,CAAC,MAAM,CAAC,CAAC,gBAAgB,CAAC,CAAC,EAAE,CAAC,gBAAgB,CAAC,CAAC,EAAE,CAAC,gBAAgB,CAAC,CAAC,CAAC,CAAC;QACpG,eAAe,CAAC,GAAG,CAAC,UAAU,CAAC,YAAY,CAAC,CAAC;QAC7C,eAAe,CAAC,IAAI,CAAC,UAAU,CAAC,YAAY,CAAC,CAAC;QAC9C,OAAO,IAAI,eAAe,CAAC,MAAM,EAAE,WAAW,EAAE,eAAe,EAAE,YAAY,EAAE,aAAa,CAAC,CAAC;IAChG,CAAC;IA9FqB,qCAAqB,wBA8F1C,CAAA;AACH,CAAC,EAjIgB,eAAe,KAAf,eAAe,QAiI/B;AAED;;GAEG;AACH,MAAM,OAAO,oBAAqB,SAAQ,oBAAoB,CAAC,SAAS;IAKtE,IAAoB,YAAY,KAAK,OAAO,KAAK,CAAC,CAAC,CAAC;IACpD,IAAoB,OAAO,KAAK,OAAO,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC;IAEvD,YAAmB,KAAqC;QACtD,KAAK,CAAC,KAAK,CAAC,CAAC;QACb,qCAAqC;QACrC,IAAI,KAAK,CAAC,WAAW,EAAE;YACrB,IAAI,CAAC,YAAY,GAAG,KAAK,CAAC,WAAW,CAAC;SACvC;aAAM,IAAI,KAAK,CAAC,WAAW,EAAE;YAC5B,IAAI,CAAC,YAAY,GAAG,iBAAiB,CAAC,6BAA6B,CAAC,KAAK,CAAC,WAAW,CAAC,CAAC;SACxF;aAAM;YACL,2CAA2C;YAC3C,IAAI,CAAC,YAAY,GAAG,iBAAiB,CAAC,oBAAoB,CAAC,EAAE,EAAE,mBAAmB,CAAC,WAAW,EAAE,iBAAiB,CAAC,GAAG,CAAC,CAAC;SACxH;QAED,mCAAmC;QACnC,IAAI,OAAO,GAAG,KAAK,CAAC,OAAO,CAAC;QAC5B,IAAI,SAAS,KAAK,OAAO,IAAI,IAAI,CAAC,OAAO,YAAY,iBAAiB;YACpE,OAAO,GAAG,mBAAmB,CAAC,mCAAmC,CAAC,IAAI,CAAC,YAAY,EAAE,IAAI,CAAC,OAAO,CAAC,CAAC;QAErG,IAAI,CAAC,QAAQ,GAAG,OAAO,IAAI,KAAK,CAAC,MAAM,CAAC,YAAY,CAAC,OAAO,EAAE,CAAC;QAE/D,MAAM,SAAS,GAAkB,EAAE,WAAW,EAAE,IAAI,CAAC,YAAY,EAAE,OAAO,EAAE,IAAI,CAAC,OAAO,EAAE,CAAC;QAC3F,IAAI,CAAC,SAAS,GAAG,mBAAmB,CAAC,QAAQ,CAAC,SAAS,EAAE,KAAK,CAAC,MAAM,CAAC,CAAC;IACzE,CAAC;IAEe,KAAK,CAAC,UAAU,CAAC,GAAc;QAC7C,MAAM,IAAI,GAAG,IAAI,CAAC,SAAS,CAAC,QAAQ,CAAC;QACrC,IAAI,SAAS,KAAK,IAAI,IAAI,GAAG,CAAC,MAAM,KAAK,IAAI,CAAC,MAAM;YAClD,OAAO,SAAS,CAAC;QAEnB,MAAM,OAAO,GAAG,EAAE,CAAC;QACnB,OAAO,CAAC,IAAI,CAAC,SAAS,CAAC,YAAY,CAAC,kBAAkB,CAAC,8CAA8C,CAAC,CAAC,CAAC;QAExG,IAAI,IAAI,CAAC,KAAK;YACZ,OAAO,CAAC,IAAI,CAAC,GAAG,SAAS,CAAC,YAAY,CAAC,kBAAkB,CAAC,2BAA2B,CAAC,IAAI,IAAI,CAAC,KAAK,EAAE,CAAC,CAAC;QAE1G,MAAM,GAAG,GAAG,QAAQ,CAAC,aAAa,CAAC,KAAK,CAAC,CAAC;QAC1C,GAAG,CAAC,SAAS,GAAG,OAAO,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;QACrC,OAAO,GAAG,CAAC;IACb,CAAC;CACF","sourcesContent":["/*---------------------------------------------------------------------------------------------\r\n* Copyright (c) Bentley Systems, Incorporated. All rights reserved.\r\n* See LICENSE.md in the project root for license terms and full copyright notice.\r\n*--------------------------------------------------------------------------------------------*/\r\n/** @packageDocumentation\r\n * @module TileTreeSupplier\r\n */\r\n\r\nimport { assert, BeTimePoint, compareStringsOrUndefined, Id64, Id64String } from \"@itwin/core-bentley\";\r\nimport {\r\n BatchType, Cartographic, ColorDef, Feature, FeatureTable, Frustum, FrustumPlanes, GeoCoordStatus, OrbitGtBlobProps, PackedFeatureTable, QParams3d,\r\n Quantization, RealityDataFormat, RealityDataProvider, RealityDataSourceKey, ViewFlagOverrides,\r\n} from \"@itwin/core-common\";\r\nimport { Point3d, Range3d, Transform, Vector3d } from \"@itwin/core-geometry\";\r\nimport {\r\n ALong, CRSManager, Downloader, DownloaderXhr, OnlineEngine, OPCReader, OrbitGtAList, OrbitGtBlockIndex, OrbitGtBounds, OrbitGtCoordinate,\r\n OrbitGtDataManager, OrbitGtFrameData, OrbitGtIProjectToViewForSort, OrbitGtIViewRequest, OrbitGtLevel, OrbitGtTileIndex, OrbitGtTileLoadSorter,\r\n OrbitGtTransform, PageCachedFile, PointDataRaw, UrlFS,\r\n} from \"@itwin/core-orbitgt\";\r\nimport { calculateEcefToDbTransformAtLocation } from \"../BackgroundMapGeometry\";\r\nimport { DisplayStyleState } from \"../DisplayStyleState\";\r\nimport { HitDetail } from \"../HitDetail\";\r\nimport { IModelApp } from \"../IModelApp\";\r\nimport { IModelConnection } from \"../IModelConnection\";\r\nimport { RealityDataSource } from \"../RealityDataSource\";\r\nimport { Mesh } from \"../render/primitives/mesh/MeshPrimitives\";\r\nimport { RenderGraphic } from \"../render/RenderGraphic\";\r\nimport { RenderMemory } from \"../render/RenderMemory\";\r\nimport { RenderSystem } from \"../render/RenderSystem\";\r\nimport { ViewingSpace } from \"../ViewingSpace\";\r\nimport { Viewport } from \"../Viewport\";\r\nimport {\r\n RealityModelTileTree, Tile, TileContent, TileDrawArgs, TileLoadPriority, TileParams, TileRequest, TileTree, TileTreeOwner,\r\n TileTreeParams, TileTreeSupplier, TileUsageMarker,\r\n} from \"./internal\";\r\n\r\nconst scratchRange = Range3d.create();\r\nconst scratchWorldFrustum = new Frustum();\r\n\r\ninterface OrbitGtTreeId {\r\n rdSourceKey: RealityDataSourceKey;\r\n modelId: Id64String;\r\n}\r\n\r\nfunction compareSourceKeys(lhs: RealityDataSourceKey, rhs: RealityDataSourceKey): number {\r\n return compareStringsOrUndefined(lhs.id, rhs.id) || compareStringsOrUndefined(lhs.format, rhs.format) || compareStringsOrUndefined(lhs.iTwinId, rhs.iTwinId);\r\n}\r\n\r\nclass OrbitGtTreeSupplier implements TileTreeSupplier {\r\n public getOwner(treeId: OrbitGtTreeId, iModel: IModelConnection): TileTreeOwner {\r\n return iModel.tiles.getTileTreeOwner(treeId, this);\r\n }\r\n\r\n public async createTileTree(treeId: OrbitGtTreeId, iModel: IModelConnection): Promise<TileTree | undefined> {\r\n return OrbitGtTileTree.createOrbitGtTileTree(treeId.rdSourceKey, iModel, treeId.modelId);\r\n }\r\n\r\n public compareTileTreeIds(lhs: OrbitGtTreeId, rhs: OrbitGtTreeId): number {\r\n return compareStringsOrUndefined(lhs.modelId, rhs.modelId) || compareSourceKeys(lhs.rdSourceKey, rhs.rdSourceKey);\r\n }\r\n\r\n public findCompatibleContextRealityModelId(sourceKey: RealityDataSourceKey, style: DisplayStyleState): Id64String | undefined {\r\n const owners = style.iModel.tiles.getTreeOwnersForSupplier(this);\r\n for (const owner of owners) {\r\n // Find an existing tree with the same reality data source key.\r\n if (0 === compareSourceKeys(sourceKey, owner.id.rdSourceKey)) {\r\n const modelId = owner.id.modelId;\r\n assert(undefined !== modelId);\r\n\r\n // If the model Id is unused by any other context reality model in the view and does not identify a persistent reality model, use it.\r\n if (Id64.isTransientId64(modelId) && !style.contextRealityModelStates.some((model) => model.modelId === modelId))\r\n return modelId;\r\n }\r\n }\r\n\r\n return undefined;\r\n }\r\n}\r\n\r\nconst orbitGtTreeSupplier = new OrbitGtTreeSupplier();\r\n\r\nfunction transformFromOrbitGt(ogtTransform: OrbitGtTransform, result?: Transform): Transform {\r\n if (undefined === result)\r\n result = Transform.createIdentity();\r\n\r\n result.matrix.setRowValues(\r\n ogtTransform.getElement(0, 0), ogtTransform.getElement(0, 1), ogtTransform.getElement(0, 2),\r\n ogtTransform.getElement(1, 0), ogtTransform.getElement(1, 1), ogtTransform.getElement(1, 2),\r\n ogtTransform.getElement(2, 0), ogtTransform.getElement(2, 1), ogtTransform.getElement(2, 2));\r\n\r\n result.origin.x = ogtTransform.getElement(0, 3);\r\n result.origin.y = ogtTransform.getElement(1, 3);\r\n result.origin.z = ogtTransform.getElement(2, 3);\r\n return result;\r\n}\r\n\r\nfunction pointFromOrbitGt(ogtCoordinate: OrbitGtCoordinate, result?: Point3d): Point3d {\r\n if (undefined === result)\r\n result = Point3d.create();\r\n\r\n result.x = ogtCoordinate.x;\r\n result.y = ogtCoordinate.y;\r\n result.z = ogtCoordinate.z;\r\n\r\n return result;\r\n}\r\n\r\nfunction rangeFromOrbitGt(ogtBounds: OrbitGtBounds, result?: Range3d) {\r\n if (undefined === result)\r\n result = Range3d.create();\r\n\r\n pointFromOrbitGt(ogtBounds.min, result.low);\r\n pointFromOrbitGt(ogtBounds.max, result.high);\r\n return result;\r\n}\r\n\r\n/** @internal */\r\nexport function createOrbitGtTileTreeReference(props: OrbitGtTileTree.ReferenceProps): RealityModelTileTree.Reference {\r\n return new OrbitGtTreeReference(props);\r\n}\r\n\r\nclass OrbitGtTileTreeParams implements TileTreeParams {\r\n public id: string;\r\n public modelId: string;\r\n public iModel: IModelConnection;\r\n public get priority(): TileLoadPriority { return TileLoadPriority.Context; }\r\n\r\n public constructor(rdSourceKey: RealityDataSourceKey, iModel: IModelConnection, modelId: Id64String, public location: Transform) {\r\n const key = rdSourceKey;\r\n this.id = `${key.provider}:${key.format}:${key.id}:${key.iTwinId}`;\r\n this.modelId = modelId;\r\n this.iModel = iModel;\r\n }\r\n}\r\n\r\nclass OrbitGtRootTile extends Tile {\r\n protected _loadChildren(_resolve: (children: Tile[] | undefined) => void, _reject: (error: Error) => void): void { }\r\n public async requestContent(_isCanceled: () => boolean): Promise<TileRequest.Response> { return undefined; }\r\n public get channel() { return IModelApp.tileAdmin.channels.getForHttp(\"itwinjs-orbitgit\"); }\r\n public async readContent(_data: TileRequest.ResponseData, _system: RenderSystem, _isCanceled?: () => boolean): Promise<TileContent> { return {}; }\r\n public override freeMemory(): void { }\r\n\r\n constructor(params: TileParams, tree: TileTree) { super(params, tree); }\r\n}\r\n\r\nclass OrbitGtViewRequest extends OrbitGtIViewRequest {\r\n private _tileToIModelTransform: Transform;\r\n constructor(private _tileDrawArgs: TileDrawArgs, private _centerOffset: Vector3d) {\r\n super();\r\n this._tileToIModelTransform = _tileDrawArgs.location.multiplyTransformTransform(Transform.createTranslation(_centerOffset));\r\n }\r\n\r\n public isVisibleBox(bounds: OrbitGtBounds): boolean {\r\n const box = Frustum.fromRange(rangeFromOrbitGt(bounds, scratchRange));\r\n const worldBox = box.transformBy(this._tileToIModelTransform, scratchWorldFrustum);\r\n return FrustumPlanes.Containment.Outside !== this._tileDrawArgs.frustumPlanes.computeFrustumContainment(worldBox, undefined);\r\n }\r\n public getFrameTime(): number {\r\n return this._tileDrawArgs.now.milliseconds;\r\n }\r\n\r\n public shouldSplit(level: OrbitGtLevel, tile: OrbitGtTileIndex) {\r\n // get the world size of the tile voxels\r\n const tileCenter: OrbitGtCoordinate = level.getTileGrid().getCellCenter(tile.gridIndex);\r\n tileCenter.x += this._centerOffset.x;\r\n tileCenter.y += this._centerOffset.y;\r\n tileCenter.z += this._centerOffset.z;\r\n const worldCenter: Point3d = this._tileDrawArgs.location.multiplyXYZ(tileCenter.x, tileCenter.y, tileCenter.z);\r\n const worldCenter2: Point3d = this._tileDrawArgs.location.multiplyXYZ(tileCenter.x, tileCenter.y, tileCenter.z + level.getTileGrid().size.z);\r\n const voxelSize: number = worldCenter2.distance(worldCenter) / 64;\r\n // get the world size of a screen pixel at the tile center\r\n const viewPt: Point3d = this._tileDrawArgs.worldToViewMap.transform0.multiplyPoint3dQuietNormalize(worldCenter);\r\n const viewPt2: Point3d = new Point3d(viewPt.x + 1.0, viewPt.y, viewPt.z);\r\n const pixelSizeAtCenter: number = this._tileDrawArgs.worldToViewMap.transform1.multiplyPoint3dQuietNormalize(viewPt).distance(this._tileDrawArgs.worldToViewMap.transform1.multiplyPoint3dQuietNormalize(viewPt2));\r\n // stop splitting if the voxel size of the children becomes too small to improve quality\r\n const split: boolean = (0.5 * voxelSize > 2.0 * pixelSizeAtCenter);\r\n return split;\r\n }\r\n}\r\n\r\nclass TileSortProjector implements OrbitGtIProjectToViewForSort {\r\n private _sortTransform: Transform;\r\n constructor(iModelTransform: Transform, viewingSpace: ViewingSpace, centerOffset: Vector3d) {\r\n const rotation = viewingSpace.rotation;\r\n let origin: Vector3d;\r\n if (undefined === viewingSpace.eyePoint) {\r\n origin = Vector3d.createFrom(viewingSpace.viewOrigin);\r\n const viewDelta = viewingSpace.viewDelta;\r\n const eyeDelta = Vector3d.createFrom({ x: viewDelta.x / 2, y: viewDelta.y / 2, z: viewDelta.z * 10 });\r\n rotation.multiplyVector(eyeDelta, eyeDelta);\r\n origin.addInPlace(eyeDelta);\r\n } else {\r\n origin = Vector3d.createFrom(viewingSpace.eyePoint);\r\n }\r\n\r\n rotation.multiplyVector(origin);\r\n origin.scaleInPlace(-1);\r\n const toViewTransform = Transform.createOriginAndMatrix(origin, rotation);\r\n const tileToIModelTransform = iModelTransform.multiplyTransformTransform(Transform.createTranslation(centerOffset));\r\n this._sortTransform = toViewTransform.multiplyTransformTransform(tileToIModelTransform);\r\n }\r\n public projectToViewForSort(coordinate: OrbitGtCoordinate) {\r\n const point = pointFromOrbitGt(coordinate);\r\n this._sortTransform.multiplyPoint3d(point, point);\r\n coordinate.x = point.x;\r\n coordinate.y = point.y;\r\n coordinate.z = point.z;\r\n }\r\n}\r\n\r\nclass OrbitGtTileGraphic extends TileUsageMarker {\r\n public readonly graphic: RenderGraphic;\r\n\r\n public constructor(graphic: RenderGraphic, viewport: Viewport, time: BeTimePoint) {\r\n super();\r\n this.graphic = graphic;\r\n this.mark(viewport, time);\r\n }\r\n\r\n public dispose(): void {\r\n this.graphic.dispose();\r\n }\r\n}\r\n\r\n/** @internal */\r\nexport class OrbitGtTileTree extends TileTree {\r\n private _tileParams: TileParams;\r\n public rootTile: OrbitGtRootTile;\r\n public viewFlagOverrides: ViewFlagOverrides = {};\r\n private _tileGraphics = new Map<string, OrbitGtTileGraphic>();\r\n\r\n public constructor(treeParams: TileTreeParams, private _dataManager: OrbitGtDataManager, cloudRange: Range3d, private _centerOffset: Vector3d, private _ecefTransform: Transform) {\r\n super(treeParams);\r\n\r\n const worldContentRange = this.iModelTransform.multiplyRange(cloudRange);\r\n /* eslint-disable-next-line deprecation/deprecation */\r\n this.iModel.expandDisplayedExtents(worldContentRange);\r\n this._tileParams = { contentId: \"0\", range: cloudRange, maximumSize: 256 };\r\n this.rootTile = new OrbitGtRootTile(this._tileParams, this);\r\n }\r\n\r\n public override async getEcefTransform(): Promise<Transform | undefined> {\r\n return this._ecefTransform;\r\n }\r\n\r\n public override dispose(): void {\r\n if (this.isDisposed)\r\n return;\r\n\r\n for (const graphic of this._tileGraphics.values())\r\n graphic.dispose();\r\n\r\n this._tileGraphics.clear();\r\n super.dispose();\r\n }\r\n\r\n protected _selectTiles(_args: TileDrawArgs): Tile[] { return []; }\r\n public get is3d(): boolean { return true; }\r\n public override get isContentUnbounded(): boolean { return false; }\r\n public get maxDepth(): number | undefined { return undefined; }\r\n\r\n private _doPrune(olderThan: BeTimePoint) {\r\n for (const [key, graphic] of this._tileGraphics)\r\n if (graphic.isExpired(olderThan)) {\r\n graphic.dispose();\r\n this._tileGraphics.delete(key);\r\n }\r\n }\r\n\r\n public prune() {\r\n const olderThan = BeTimePoint.now().minus(this.expirationTime);\r\n this._doPrune(olderThan);\r\n }\r\n\r\n public override collectStatistics(stats: RenderMemory.Statistics): void {\r\n for (const tileGraphic of this._tileGraphics)\r\n tileGraphic[1].graphic.collectStatistics(stats);\r\n }\r\n\r\n public draw(args: TileDrawArgs) {\r\n const debugControl = args.context.target.debugControl;\r\n const debugBuilder = (debugControl && debugControl.displayRealityTileRanges) ? args.context.createSceneGraphicBuilder() : undefined;\r\n const doLogging = (debugControl && debugControl.logRealityTiles);\r\n const viewRequest = new OrbitGtViewRequest(args, this._centerOffset);\r\n const levelsInView = new OrbitGtAList<OrbitGtLevel>();\r\n const blocksInView = new OrbitGtAList<OrbitGtBlockIndex>();\r\n const tilesInView = new OrbitGtAList<OrbitGtTileIndex>();\r\n const frameData = new OrbitGtFrameData();\r\n\r\n this._dataManager.getViewTree().renderView3D(viewRequest, levelsInView, blocksInView, tilesInView, frameData.tilesToRender);\r\n this._dataManager.filterLoadList(levelsInView, blocksInView, tilesInView, frameData.levelsToLoad, frameData.blocksToLoad, frameData.tilesToLoad);\r\n tilesInView.sort(new OrbitGtTileLoadSorter(this._dataManager.getViewTree(), new TileSortProjector(this.iModelTransform, args.context.viewingSpace, this._centerOffset)));\r\n\r\n let totalPointCount = 0;\r\n const tileCount = frameData.tilesToRender.size();\r\n\r\n // Inform TileAdmin about tiles we are handling ourselves...\r\n IModelApp.tileAdmin.addExternalTilesForUser(args.context.viewport, { requested: frameData.tilesToLoad.size() + (frameData.hasMissingData() ? 1 : 0), selected: tileCount, ready: tileCount });\r\n\r\n if (debugBuilder)\r\n debugBuilder.setSymbology(ColorDef.red, ColorDef.red, 1);\r\n\r\n let minLevel = 100, maxLevel = -100;\r\n for (let t: number = 0; t < tileCount; t++) {\r\n const tile: PointDataRaw = frameData.tilesToRender.get(t) as PointDataRaw;\r\n minLevel = Math.min(minLevel, tile.tileIndex.level);\r\n maxLevel = Math.max(maxLevel, tile.tileIndex.level);\r\n totalPointCount += tile.tileIndex.pointCount;\r\n const key = tile.tileIndex.key;\r\n const cachedGraphic = this._tileGraphics.get(key);\r\n if (undefined !== cachedGraphic) {\r\n cachedGraphic.mark(args.context.viewport, args.now);\r\n args.graphics.add(cachedGraphic.graphic);\r\n } else {\r\n const range = rangeFromOrbitGt(tile.bounds);\r\n range.low.addInPlace(this._centerOffset);\r\n range.high.addInPlace(this._centerOffset);\r\n const qParams = QParams3d.fromRange(range, undefined, (tile.points8 != null) ? Quantization.rangeScale8 : Quantization.rangeScale16);\r\n const featureTable = new FeatureTable(1, this.modelId, BatchType.Primary);\r\n const features = new Mesh.Features(featureTable);\r\n const system = IModelApp.renderSystem;\r\n const voxelSize = (range.high.x - range.low.x) / 64;\r\n\r\n features.add(new Feature(this.modelId), 1);\r\n const tilePoints = (tile.points8 != null) ? tile.points8.toNativeBuffer() : tile.points16.toNativeBuffer();\r\n let renderGraphic = system.createPointCloud({\r\n positions: tilePoints,\r\n qparams: qParams,\r\n colors: tile.colors.toNativeBuffer(),\r\n features: features.toFeatureIndex(),\r\n voxelSize,\r\n colorFormat: \"bgr\",\r\n }, this.iModel);\r\n\r\n renderGraphic = system.createBatch(renderGraphic!, PackedFeatureTable.pack(featureTable), range);\r\n args.graphics.add(renderGraphic);\r\n this._tileGraphics.set(key, new OrbitGtTileGraphic(renderGraphic, args.context.viewport, args.now));\r\n }\r\n\r\n if (debugBuilder)\r\n debugBuilder.addRangeBox(rangeFromOrbitGt(tile.bounds));\r\n }\r\n\r\n if (debugBuilder)\r\n args.graphics.add(debugBuilder.finish());\r\n\r\n if (doLogging) {\r\n // eslint-disable-next-line no-console\r\n console.log(`Total OrbitGtTiles: ${tileCount} MinLevel: ${minLevel} MaxLevel: ${maxLevel} Total Points: ${totalPointCount}`);\r\n }\r\n\r\n args.drawGraphics();\r\n if (frameData.hasMissingData()) {\r\n this._dataManager.loadData(frameData).then(() => IModelApp.tileAdmin.onTileLoad.raiseEvent(this.rootTile)).catch((_err: any) => undefined);\r\n }\r\n }\r\n}\r\n\r\n/** @internal */\r\n// eslint-disable-next-line no-redeclare\r\nexport namespace OrbitGtTileTree {\r\n export interface ReferenceProps extends RealityModelTileTree.ReferenceBaseProps {\r\n orbitGtBlob?: OrbitGtBlobProps;\r\n modelId?: Id64String;\r\n }\r\n function isValidSASToken(downloadUrl: string): boolean {\r\n\r\n // Create fake URL for and parameter parsing and SAS token URI parsing\r\n if(!downloadUrl.startsWith(\"http\"))\r\n downloadUrl = `http://x.com/x?${downloadUrl}`;\r\n\r\n const sasUrl = new URL(downloadUrl);\r\n\r\n const se = sasUrl.searchParams.get(\"se\");\r\n if (se) {\r\n const expiryUTC = new Date(se);\r\n const now = new Date();\r\n const currentUTC = new Date(now?.toUTCString());\r\n\r\n return expiryUTC >= currentUTC;\r\n }\r\n\r\n return false;\r\n }\r\n function isValidOrbitGtBlobProps(props: OrbitGtBlobProps): boolean {\r\n\r\n // Check main OrbitGtBlobProps fields are defined\r\n if(!props.accountName || !props.containerName || !props.blobFileName || !props.sasToken)\r\n return false;\r\n\r\n // Check SAS token is valid\r\n return isValidSASToken(props.sasToken);\r\n }\r\n\r\n export async function createOrbitGtTileTree(rdSourceKey: RealityDataSourceKey, iModel: IModelConnection, modelId: Id64String): Promise<TileTree | undefined> {\r\n const rdSource = await RealityDataSource.fromKey(rdSourceKey, iModel.iTwinId);\r\n const isContextShare = rdSourceKey.provider === RealityDataProvider.ContextShare;\r\n const isTilestUrl = rdSourceKey.provider === RealityDataProvider.TilesetUrl;\r\n\r\n let blobStringUrl: string;\r\n if (isContextShare) {\r\n const realityData = rdSource ? rdSource.realityData : undefined;\r\n if (rdSource === undefined || realityData === undefined )\r\n return undefined;\r\n const docRootName = realityData.rootDocument;\r\n if (!docRootName)\r\n return undefined;\r\n const token = await IModelApp.getAccessToken();\r\n const blobUrl = await realityData.getBlobUrl(token, docRootName);\r\n blobStringUrl = blobUrl.toString();\r\n } else if (isTilestUrl) {\r\n blobStringUrl = rdSourceKey.id;\r\n } else {\r\n const orbitGtBlobProps = RealityDataSource.createOrbitGtBlobPropsFromKey(rdSourceKey);\r\n if (orbitGtBlobProps === undefined)\r\n return undefined;\r\n if(!isValidOrbitGtBlobProps(orbitGtBlobProps))\r\n return undefined;\r\n const { accountName, containerName, blobFileName, sasToken } = orbitGtBlobProps;\r\n blobStringUrl = blobFileName;\r\n if (accountName.length > 0)\r\n blobStringUrl = UrlFS.getAzureBlobSasUrl(accountName, containerName, blobFileName, sasToken);\r\n }\r\n\r\n if (Downloader.INSTANCE == null)\r\n Downloader.INSTANCE = new DownloaderXhr();\r\n\r\n if (CRSManager.ENGINE == null)\r\n CRSManager.ENGINE = await OnlineEngine.create();\r\n\r\n // wrap a caching layer (16 MB) around the blob file\r\n const urlFS: UrlFS = new UrlFS();\r\n const blobFileSize: ALong = await urlFS.getFileLength(blobStringUrl);\r\n const cacheKilobytes = 128;\r\n const cachedBlobFile = new PageCachedFile(urlFS, blobStringUrl, blobFileSize, cacheKilobytes * 1024 /* pageSize*/, 128/* maxPageCount*/);\r\n const pointCloudReader = await OPCReader.openFile(cachedBlobFile, blobStringUrl, true/* lazyLoading*/);\r\n let pointCloudCRS = pointCloudReader.getFileCRS();\r\n if (pointCloudCRS == null)\r\n pointCloudCRS = \"\";\r\n const dataManager = new OrbitGtDataManager(pointCloudReader, pointCloudCRS, PointDataRaw.TYPE);\r\n const pointCloudBounds = dataManager.getPointCloudBounds();\r\n const pointCloudRange = rangeFromOrbitGt(pointCloudBounds);\r\n const pointCloudCenter = pointCloudRange.localXYZToWorld(.5, .5, .5)!;\r\n const addCloudCenter = Transform.createTranslation(pointCloudCenter);\r\n const ecefTransform = Transform.createIdentity();\r\n let pointCloudCenterToDb = addCloudCenter;\r\n if (pointCloudCRS.length > 0) {\r\n await CRSManager.ENGINE.prepareForArea(pointCloudCRS, pointCloudBounds);\r\n const wgs84CRS = \"4978\";\r\n await CRSManager.ENGINE.prepareForArea(wgs84CRS, new OrbitGtBounds());\r\n const pointCloudToEcef = transformFromOrbitGt(CRSManager.createTransform(pointCloudCRS, new OrbitGtCoordinate(pointCloudCenter.x, pointCloudCenter.y, pointCloudCenter.z), wgs84CRS));\r\n const pointCloudCenterToEcef = pointCloudToEcef.multiplyTransformTransform(addCloudCenter);\r\n ecefTransform.setFrom(pointCloudCenterToEcef);\r\n\r\n let ecefToDb = iModel.getMapEcefToDb(0);\r\n // In initial publishing version the iModel ecef Transform was used to locate the reality model.\r\n // This would work well only for tilesets published from that iModel but for iModels the ecef transform is calculated\r\n // at the center of the project extents and the reality model location may differ greatly, and the curvature of the earth\r\n // could introduce significant errors.\r\n // The publishing was modified to calculate the ecef transform at the reality model range center and at the same time the \"iModelPublishVersion\"\r\n // member was added to the root object.\r\n const ecefOrigin = pointCloudCenterToEcef.getOrigin();\r\n const dbOrigin = ecefToDb.multiplyPoint3d(ecefOrigin);\r\n const realityOriginToProjectDistance = iModel.projectExtents.distanceToPoint(dbOrigin);\r\n const maxProjectDistance = 1E5; // Only use the project GCS projection if within 100KM of the project. Don't attempt to use GCS if global reality model or in another locale - Results will be unreliable.\r\n if (realityOriginToProjectDistance < maxProjectDistance) {\r\n const cartographicOrigin = Cartographic.fromEcef(ecefOrigin);\r\n const geoConverter = iModel.noGcsDefined ? undefined : iModel.geoServices.getConverter(\"WGS84\");\r\n if (cartographicOrigin !== undefined && geoConverter !== undefined) {\r\n const geoOrigin = Point3d.create(cartographicOrigin.longitudeDegrees, cartographicOrigin.latitudeDegrees, cartographicOrigin.height);\r\n const response = await geoConverter.getIModelCoordinatesFromGeoCoordinates([geoOrigin]);\r\n if (response.iModelCoords[0].s === GeoCoordStatus.Success) {\r\n const ecefToDbOrigin = await calculateEcefToDbTransformAtLocation(Point3d.fromJSON(response.iModelCoords[0].p), iModel);\r\n if (ecefToDbOrigin)\r\n ecefToDb = ecefToDbOrigin;\r\n }\r\n }\r\n }\r\n\r\n pointCloudCenterToDb = ecefToDb.multiplyTransformTransform(pointCloudCenterToEcef);\r\n }\r\n const params = new OrbitGtTileTreeParams(rdSourceKey, iModel, modelId, pointCloudCenterToDb);\r\n\r\n // We use a RTC transform to avoid jitter from large cloud coordinates.\r\n const centerOffset = Vector3d.create(-pointCloudCenter.x, -pointCloudCenter.y, -pointCloudCenter.z);\r\n pointCloudRange.low.addInPlace(centerOffset);\r\n pointCloudRange.high.addInPlace(centerOffset);\r\n return new OrbitGtTileTree(params, dataManager, pointCloudRange, centerOffset, ecefTransform);\r\n }\r\n}\r\n\r\n/** Supplies a reality data [[TileTree]] from a URL. May be associated with a persistent [[GeometricModelState]], or attached at run-time via a [[ContextOrbitGtState]].\r\n * @internal exported strictly for tests.\r\n */\r\nexport class OrbitGtTreeReference extends RealityModelTileTree.Reference {\r\n public readonly treeOwner: TileTreeOwner;\r\n protected _rdSourceKey: RealityDataSourceKey;\r\n private readonly _modelId: Id64String;\r\n\r\n public override get castsShadows() { return false; }\r\n public override get modelId() { return this._modelId; }\r\n\r\n public constructor(props: OrbitGtTileTree.ReferenceProps) {\r\n super(props);\r\n // Create rdSourceKey if not provided\r\n if (props.rdSourceKey) {\r\n this._rdSourceKey = props.rdSourceKey;\r\n } else if (props.orbitGtBlob) {\r\n this._rdSourceKey = RealityDataSource.createKeyFromOrbitGtBlobProps(props.orbitGtBlob);\r\n } else {\r\n // TODO: Maybe we should throw an exception\r\n this._rdSourceKey = RealityDataSource.createKeyFromBlobUrl(\"\", RealityDataProvider.OrbitGtBlob, RealityDataFormat.OPC);\r\n }\r\n\r\n // ###TODO find compatible model Id\r\n let modelId = props.modelId;\r\n if (undefined === modelId && this._source instanceof DisplayStyleState)\r\n modelId = orbitGtTreeSupplier.findCompatibleContextRealityModelId(this._rdSourceKey, this._source);\r\n\r\n this._modelId = modelId ?? props.iModel.transientIds.getNext();\r\n\r\n const ogtTreeId: OrbitGtTreeId = { rdSourceKey: this._rdSourceKey, modelId: this.modelId };\r\n this.treeOwner = orbitGtTreeSupplier.getOwner(ogtTreeId, props.iModel);\r\n }\r\n\r\n public override async getToolTip(hit: HitDetail): Promise<HTMLElement | string | undefined> {\r\n const tree = this.treeOwner.tileTree;\r\n if (undefined === tree || hit.iModel !== tree.iModel)\r\n return undefined;\r\n\r\n const strings = [];\r\n strings.push(IModelApp.localization.getLocalizedString(\"iModelJs:RealityModelTypes.OrbitGTPointCloud\"));\r\n\r\n if (this._name)\r\n strings.push(`${IModelApp.localization.getLocalizedString(\"iModelJs:TooltipInfo.Name\")} ${this._name}`);\r\n\r\n const div = document.createElement(\"div\");\r\n div.innerHTML = strings.join(\"<br>\");\r\n return div;\r\n }\r\n}\r\n"]}
1
+ {"version":3,"file":"OrbitGtTileTree.js","sourceRoot":"","sources":["../../../src/tile/OrbitGtTileTree.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 TileTreeSupplier\r\n */\r\n\r\nimport { assert, BeTimePoint, compareStringsOrUndefined, Id64, Id64String } from \"@itwin/core-bentley\";\r\nimport {\r\n BatchType, Cartographic, ColorDef, Feature, FeatureTable, Frustum, FrustumPlanes, GeoCoordStatus, OrbitGtBlobProps, PackedFeatureTable, QParams3d,\r\n Quantization, RealityDataFormat, RealityDataProvider, RealityDataSourceKey, ViewFlagOverrides,\r\n} from \"@itwin/core-common\";\r\nimport { Point3d, Range3d, Transform, Vector3d } from \"@itwin/core-geometry\";\r\nimport {\r\n ALong, CRSManager, Downloader, DownloaderXhr, OnlineEngine, OPCReader, OrbitGtAList, OrbitGtBlockIndex, OrbitGtBounds, OrbitGtCoordinate,\r\n OrbitGtDataManager, OrbitGtFrameData, OrbitGtIProjectToViewForSort, OrbitGtIViewRequest, OrbitGtLevel, OrbitGtTileIndex, OrbitGtTileLoadSorter,\r\n OrbitGtTransform, PageCachedFile, PointDataRaw, UrlFS,\r\n} from \"@itwin/core-orbitgt\";\r\nimport { calculateEcefToDbTransformAtLocation } from \"../BackgroundMapGeometry\";\r\nimport { DisplayStyleState } from \"../DisplayStyleState\";\r\nimport { HitDetail } from \"../HitDetail\";\r\nimport { IModelApp } from \"../IModelApp\";\r\nimport { IModelConnection } from \"../IModelConnection\";\r\nimport { RealityDataSource } from \"../RealityDataSource\";\r\nimport { Mesh } from \"../render/primitives/mesh/MeshPrimitives\";\r\nimport { RenderGraphic } from \"../render/RenderGraphic\";\r\nimport { RenderMemory } from \"../render/RenderMemory\";\r\nimport { RenderSystem } from \"../render/RenderSystem\";\r\nimport { ViewingSpace } from \"../ViewingSpace\";\r\nimport { Viewport } from \"../Viewport\";\r\nimport {\r\n RealityModelTileTree, Tile, TileContent, TileDrawArgs, TileLoadPriority, TileParams, TileRequest, TileTree, TileTreeOwner,\r\n TileTreeParams, TileTreeSupplier, TileUsageMarker,\r\n} from \"./internal\";\r\n\r\nconst scratchRange = Range3d.create();\r\nconst scratchWorldFrustum = new Frustum();\r\n\r\ninterface OrbitGtTreeId {\r\n rdSourceKey: RealityDataSourceKey;\r\n modelId: Id64String;\r\n}\r\n\r\nfunction compareSourceKeys(lhs: RealityDataSourceKey, rhs: RealityDataSourceKey): number {\r\n return compareStringsOrUndefined(lhs.id, rhs.id) || compareStringsOrUndefined(lhs.format, rhs.format) || compareStringsOrUndefined(lhs.iTwinId, rhs.iTwinId);\r\n}\r\n\r\nclass OrbitGtTreeSupplier implements TileTreeSupplier {\r\n public getOwner(treeId: OrbitGtTreeId, iModel: IModelConnection): TileTreeOwner {\r\n return iModel.tiles.getTileTreeOwner(treeId, this);\r\n }\r\n\r\n public async createTileTree(treeId: OrbitGtTreeId, iModel: IModelConnection): Promise<TileTree | undefined> {\r\n return OrbitGtTileTree.createOrbitGtTileTree(treeId.rdSourceKey, iModel, treeId.modelId);\r\n }\r\n\r\n public compareTileTreeIds(lhs: OrbitGtTreeId, rhs: OrbitGtTreeId): number {\r\n return compareStringsOrUndefined(lhs.modelId, rhs.modelId) || compareSourceKeys(lhs.rdSourceKey, rhs.rdSourceKey);\r\n }\r\n\r\n public findCompatibleContextRealityModelId(sourceKey: RealityDataSourceKey, style: DisplayStyleState): Id64String | undefined {\r\n const owners = style.iModel.tiles.getTreeOwnersForSupplier(this);\r\n for (const owner of owners) {\r\n // Find an existing tree with the same reality data source key.\r\n if (0 === compareSourceKeys(sourceKey, owner.id.rdSourceKey)) {\r\n const modelId = owner.id.modelId;\r\n assert(undefined !== modelId);\r\n\r\n // If the model Id is unused by any other context reality model in the view and does not identify a persistent reality model, use it.\r\n if (Id64.isTransientId64(modelId) && !style.contextRealityModelStates.some((model) => model.modelId === modelId))\r\n return modelId;\r\n }\r\n }\r\n\r\n return undefined;\r\n }\r\n}\r\n\r\nconst orbitGtTreeSupplier = new OrbitGtTreeSupplier();\r\n\r\nfunction transformFromOrbitGt(ogtTransform: OrbitGtTransform, result?: Transform): Transform {\r\n if (undefined === result)\r\n result = Transform.createIdentity();\r\n\r\n result.matrix.setRowValues(\r\n ogtTransform.getElement(0, 0), ogtTransform.getElement(0, 1), ogtTransform.getElement(0, 2),\r\n ogtTransform.getElement(1, 0), ogtTransform.getElement(1, 1), ogtTransform.getElement(1, 2),\r\n ogtTransform.getElement(2, 0), ogtTransform.getElement(2, 1), ogtTransform.getElement(2, 2));\r\n\r\n result.origin.x = ogtTransform.getElement(0, 3);\r\n result.origin.y = ogtTransform.getElement(1, 3);\r\n result.origin.z = ogtTransform.getElement(2, 3);\r\n return result;\r\n}\r\n\r\nfunction pointFromOrbitGt(ogtCoordinate: OrbitGtCoordinate, result?: Point3d): Point3d {\r\n if (undefined === result)\r\n result = Point3d.create();\r\n\r\n result.x = ogtCoordinate.x;\r\n result.y = ogtCoordinate.y;\r\n result.z = ogtCoordinate.z;\r\n\r\n return result;\r\n}\r\n\r\nfunction rangeFromOrbitGt(ogtBounds: OrbitGtBounds, result?: Range3d) {\r\n if (undefined === result)\r\n result = Range3d.create();\r\n\r\n pointFromOrbitGt(ogtBounds.min, result.low);\r\n pointFromOrbitGt(ogtBounds.max, result.high);\r\n return result;\r\n}\r\n\r\n/** @internal */\r\nexport function createOrbitGtTileTreeReference(props: OrbitGtTileTree.ReferenceProps): RealityModelTileTree.Reference {\r\n return new OrbitGtTreeReference(props);\r\n}\r\n\r\nclass OrbitGtTileTreeParams implements TileTreeParams {\r\n public id: string;\r\n public modelId: string;\r\n public iModel: IModelConnection;\r\n public get priority(): TileLoadPriority { return TileLoadPriority.Context; }\r\n\r\n public constructor(rdSourceKey: RealityDataSourceKey, iModel: IModelConnection, modelId: Id64String, public location: Transform) {\r\n const key = rdSourceKey;\r\n this.id = `${key.provider}:${key.format}:${key.id}:${key.iTwinId}`;\r\n this.modelId = modelId;\r\n this.iModel = iModel;\r\n }\r\n}\r\n\r\nclass OrbitGtRootTile extends Tile {\r\n protected _loadChildren(_resolve: (children: Tile[] | undefined) => void, _reject: (error: Error) => void): void { }\r\n public async requestContent(_isCanceled: () => boolean): Promise<TileRequest.Response> { return undefined; }\r\n public get channel() { return IModelApp.tileAdmin.channels.getForHttp(\"itwinjs-orbitgit\"); }\r\n public async readContent(_data: TileRequest.ResponseData, _system: RenderSystem, _isCanceled?: () => boolean): Promise<TileContent> { return {}; }\r\n public override freeMemory(): void { }\r\n\r\n constructor(params: TileParams, tree: TileTree) { super(params, tree); }\r\n}\r\n\r\nclass OrbitGtViewRequest extends OrbitGtIViewRequest {\r\n private _tileToIModelTransform: Transform;\r\n constructor(private _tileDrawArgs: TileDrawArgs, private _centerOffset: Vector3d) {\r\n super();\r\n this._tileToIModelTransform = _tileDrawArgs.location.multiplyTransformTransform(Transform.createTranslation(_centerOffset));\r\n }\r\n\r\n public isVisibleBox(bounds: OrbitGtBounds): boolean {\r\n const box = Frustum.fromRange(rangeFromOrbitGt(bounds, scratchRange));\r\n const worldBox = box.transformBy(this._tileToIModelTransform, scratchWorldFrustum);\r\n return FrustumPlanes.Containment.Outside !== this._tileDrawArgs.frustumPlanes.computeFrustumContainment(worldBox, undefined);\r\n }\r\n public getFrameTime(): number {\r\n return this._tileDrawArgs.now.milliseconds;\r\n }\r\n\r\n public shouldSplit(level: OrbitGtLevel, tile: OrbitGtTileIndex) {\r\n // get the world size of the tile voxels\r\n const tileCenter: OrbitGtCoordinate = level.getTileGrid().getCellCenter(tile.gridIndex);\r\n tileCenter.x += this._centerOffset.x;\r\n tileCenter.y += this._centerOffset.y;\r\n tileCenter.z += this._centerOffset.z;\r\n const worldCenter: Point3d = this._tileDrawArgs.location.multiplyXYZ(tileCenter.x, tileCenter.y, tileCenter.z);\r\n const worldCenter2: Point3d = this._tileDrawArgs.location.multiplyXYZ(tileCenter.x, tileCenter.y, tileCenter.z + level.getTileGrid().size.z);\r\n const voxelSize: number = worldCenter2.distance(worldCenter) / 64;\r\n // get the world size of a screen pixel at the tile center\r\n const viewPt: Point3d = this._tileDrawArgs.worldToViewMap.transform0.multiplyPoint3dQuietNormalize(worldCenter);\r\n const viewPt2: Point3d = new Point3d(viewPt.x + 1.0, viewPt.y, viewPt.z);\r\n const pixelSizeAtCenter: number = this._tileDrawArgs.worldToViewMap.transform1.multiplyPoint3dQuietNormalize(viewPt).distance(this._tileDrawArgs.worldToViewMap.transform1.multiplyPoint3dQuietNormalize(viewPt2));\r\n // stop splitting if the voxel size of the children becomes too small to improve quality\r\n const split: boolean = (0.5 * voxelSize > 2.0 * pixelSizeAtCenter);\r\n return split;\r\n }\r\n}\r\n\r\nclass TileSortProjector implements OrbitGtIProjectToViewForSort {\r\n private _sortTransform: Transform;\r\n constructor(iModelTransform: Transform, viewingSpace: ViewingSpace, centerOffset: Vector3d) {\r\n const rotation = viewingSpace.rotation;\r\n let origin: Vector3d;\r\n if (undefined === viewingSpace.eyePoint) {\r\n origin = Vector3d.createFrom(viewingSpace.viewOrigin);\r\n const viewDelta = viewingSpace.viewDelta;\r\n const eyeDelta = Vector3d.createFrom({ x: viewDelta.x / 2, y: viewDelta.y / 2, z: viewDelta.z * 10 });\r\n rotation.multiplyVector(eyeDelta, eyeDelta);\r\n origin.addInPlace(eyeDelta);\r\n } else {\r\n origin = Vector3d.createFrom(viewingSpace.eyePoint);\r\n }\r\n\r\n rotation.multiplyVector(origin);\r\n origin.scaleInPlace(-1);\r\n const toViewTransform = Transform.createOriginAndMatrix(origin, rotation);\r\n const tileToIModelTransform = iModelTransform.multiplyTransformTransform(Transform.createTranslation(centerOffset));\r\n this._sortTransform = toViewTransform.multiplyTransformTransform(tileToIModelTransform);\r\n }\r\n public projectToViewForSort(coordinate: OrbitGtCoordinate) {\r\n const point = pointFromOrbitGt(coordinate);\r\n this._sortTransform.multiplyPoint3d(point, point);\r\n coordinate.x = point.x;\r\n coordinate.y = point.y;\r\n coordinate.z = point.z;\r\n }\r\n}\r\n\r\nclass OrbitGtTileGraphic extends TileUsageMarker {\r\n public readonly graphic: RenderGraphic;\r\n\r\n public constructor(graphic: RenderGraphic, viewport: Viewport, time: BeTimePoint) {\r\n super();\r\n this.graphic = graphic;\r\n this.mark(viewport, time);\r\n }\r\n\r\n public dispose(): void {\r\n this.graphic.dispose();\r\n }\r\n}\r\n\r\n/** @internal */\r\nexport class OrbitGtTileTree extends TileTree {\r\n private _tileParams: TileParams;\r\n public rootTile: OrbitGtRootTile;\r\n public viewFlagOverrides: ViewFlagOverrides = {};\r\n private _tileGraphics = new Map<string, OrbitGtTileGraphic>();\r\n\r\n public constructor(treeParams: TileTreeParams, private _dataManager: OrbitGtDataManager, cloudRange: Range3d, private _centerOffset: Vector3d, private _ecefTransform: Transform) {\r\n super(treeParams);\r\n\r\n const worldContentRange = this.iModelTransform.multiplyRange(cloudRange);\r\n /* eslint-disable-next-line deprecation/deprecation */\r\n this.iModel.expandDisplayedExtents(worldContentRange);\r\n this._tileParams = { contentId: \"0\", range: cloudRange, maximumSize: 256 };\r\n this.rootTile = new OrbitGtRootTile(this._tileParams, this);\r\n }\r\n\r\n public override async getEcefTransform(): Promise<Transform | undefined> {\r\n return this._ecefTransform;\r\n }\r\n\r\n public override dispose(): void {\r\n if (this.isDisposed)\r\n return;\r\n\r\n for (const graphic of this._tileGraphics.values())\r\n graphic.dispose();\r\n\r\n this._tileGraphics.clear();\r\n super.dispose();\r\n }\r\n\r\n protected _selectTiles(_args: TileDrawArgs): Tile[] { return []; }\r\n public get is3d(): boolean { return true; }\r\n public override get isContentUnbounded(): boolean { return false; }\r\n public get maxDepth(): number | undefined { return undefined; }\r\n\r\n private _doPrune(olderThan: BeTimePoint) {\r\n for (const [key, graphic] of this._tileGraphics)\r\n if (graphic.isExpired(olderThan)) {\r\n graphic.dispose();\r\n this._tileGraphics.delete(key);\r\n }\r\n }\r\n\r\n public prune() {\r\n const olderThan = BeTimePoint.now().minus(this.expirationTime);\r\n this._doPrune(olderThan);\r\n }\r\n\r\n public override collectStatistics(stats: RenderMemory.Statistics): void {\r\n for (const tileGraphic of this._tileGraphics)\r\n tileGraphic[1].graphic.collectStatistics(stats);\r\n }\r\n\r\n public draw(args: TileDrawArgs) {\r\n const debugControl = args.context.target.debugControl;\r\n const debugBuilder = (debugControl && debugControl.displayRealityTileRanges) ? args.context.createSceneGraphicBuilder() : undefined;\r\n const doLogging = (debugControl && debugControl.logRealityTiles);\r\n const viewRequest = new OrbitGtViewRequest(args, this._centerOffset);\r\n const levelsInView = new OrbitGtAList<OrbitGtLevel>();\r\n const blocksInView = new OrbitGtAList<OrbitGtBlockIndex>();\r\n const tilesInView = new OrbitGtAList<OrbitGtTileIndex>();\r\n const frameData = new OrbitGtFrameData();\r\n\r\n this._dataManager.getViewTree().renderView3D(viewRequest, levelsInView, blocksInView, tilesInView, frameData.tilesToRender);\r\n this._dataManager.filterLoadList(levelsInView, blocksInView, tilesInView, frameData.levelsToLoad, frameData.blocksToLoad, frameData.tilesToLoad);\r\n tilesInView.sort(new OrbitGtTileLoadSorter(this._dataManager.getViewTree(), new TileSortProjector(this.iModelTransform, args.context.viewingSpace, this._centerOffset)));\r\n\r\n let totalPointCount = 0;\r\n const tileCount = frameData.tilesToRender.size();\r\n\r\n // Inform TileAdmin about tiles we are handling ourselves...\r\n IModelApp.tileAdmin.addExternalTilesForUser(args.context.viewport, { requested: frameData.tilesToLoad.size() + (frameData.hasMissingData() ? 1 : 0), selected: tileCount, ready: tileCount });\r\n\r\n if (debugBuilder)\r\n debugBuilder.setSymbology(ColorDef.red, ColorDef.red, 1);\r\n\r\n let minLevel = 100, maxLevel = -100;\r\n for (let t: number = 0; t < tileCount; t++) {\r\n const tile: PointDataRaw = frameData.tilesToRender.get(t) as PointDataRaw;\r\n minLevel = Math.min(minLevel, tile.tileIndex.level);\r\n maxLevel = Math.max(maxLevel, tile.tileIndex.level);\r\n totalPointCount += tile.tileIndex.pointCount;\r\n const key = tile.tileIndex.key;\r\n const cachedGraphic = this._tileGraphics.get(key);\r\n if (undefined !== cachedGraphic) {\r\n cachedGraphic.mark(args.context.viewport, args.now);\r\n args.graphics.add(cachedGraphic.graphic);\r\n } else {\r\n const range = rangeFromOrbitGt(tile.bounds);\r\n range.low.addInPlace(this._centerOffset);\r\n range.high.addInPlace(this._centerOffset);\r\n const qParams = QParams3d.fromRange(range, undefined, (tile.points8 != null) ? Quantization.rangeScale8 : Quantization.rangeScale16);\r\n const featureTable = new FeatureTable(1, this.modelId, BatchType.Primary);\r\n const features = new Mesh.Features(featureTable);\r\n const system = IModelApp.renderSystem;\r\n const voxelSize = (range.high.x - range.low.x) / 64;\r\n\r\n features.add(new Feature(this.modelId), 1);\r\n const tilePoints = (tile.points8 != null) ? tile.points8.toNativeBuffer() : tile.points16.toNativeBuffer();\r\n let renderGraphic = system.createPointCloud({\r\n positions: tilePoints,\r\n qparams: qParams,\r\n colors: tile.colors.toNativeBuffer(),\r\n features: features.toFeatureIndex(),\r\n voxelSize,\r\n colorFormat: \"bgr\",\r\n }, this.iModel);\r\n\r\n renderGraphic = system.createBatch(renderGraphic!, PackedFeatureTable.pack(featureTable), range);\r\n args.graphics.add(renderGraphic);\r\n this._tileGraphics.set(key, new OrbitGtTileGraphic(renderGraphic, args.context.viewport, args.now));\r\n }\r\n\r\n if (debugBuilder)\r\n debugBuilder.addRangeBox(rangeFromOrbitGt(tile.bounds));\r\n }\r\n\r\n if (debugBuilder)\r\n args.graphics.add(debugBuilder.finish());\r\n\r\n if (doLogging) {\r\n // eslint-disable-next-line no-console\r\n console.log(`Total OrbitGtTiles: ${tileCount} MinLevel: ${minLevel} MaxLevel: ${maxLevel} Total Points: ${totalPointCount}`);\r\n }\r\n\r\n args.drawGraphics();\r\n if (frameData.hasMissingData()) {\r\n this._dataManager.loadData(frameData).then(() => IModelApp.tileAdmin.onTileLoad.raiseEvent(this.rootTile)).catch((_err: any) => undefined);\r\n }\r\n }\r\n}\r\n\r\n/** @internal */\r\n// eslint-disable-next-line no-redeclare\r\nexport namespace OrbitGtTileTree {\r\n export interface ReferenceProps extends RealityModelTileTree.ReferenceBaseProps {\r\n orbitGtBlob?: OrbitGtBlobProps;\r\n modelId?: Id64String;\r\n }\r\n function isValidSASToken(downloadUrl: string): boolean {\r\n\r\n // Create fake URL for and parameter parsing and SAS token URI parsing\r\n if(!downloadUrl.startsWith(\"http\"))\r\n downloadUrl = `http://x.com/x?${downloadUrl}`;\r\n\r\n const sasUrl = new URL(downloadUrl);\r\n\r\n const se = sasUrl.searchParams.get(\"se\");\r\n if (se) {\r\n const expiryUTC = new Date(se);\r\n const now = new Date();\r\n const currentUTC = new Date(now?.toUTCString());\r\n\r\n return expiryUTC >= currentUTC;\r\n }\r\n\r\n return false;\r\n }\r\n function isValidOrbitGtBlobProps(props: OrbitGtBlobProps): boolean {\r\n\r\n // Check main OrbitGtBlobProps fields are defined\r\n if(!props.accountName || !props.containerName || !props.blobFileName || !props.sasToken)\r\n return false;\r\n\r\n // Check SAS token is valid\r\n return isValidSASToken(props.sasToken);\r\n }\r\n\r\n export async function createOrbitGtTileTree(rdSourceKey: RealityDataSourceKey, iModel: IModelConnection, modelId: Id64String): Promise<TileTree | undefined> {\r\n const rdSource = await RealityDataSource.fromKey(rdSourceKey, iModel.iTwinId);\r\n const isContextShare = rdSourceKey.provider === RealityDataProvider.ContextShare;\r\n const isTilestUrl = rdSourceKey.provider === RealityDataProvider.TilesetUrl;\r\n\r\n let blobStringUrl: string;\r\n if (isContextShare) {\r\n const realityData = rdSource ? rdSource.realityData : undefined;\r\n if (rdSource === undefined || realityData === undefined )\r\n return undefined;\r\n const docRootName = realityData.rootDocument;\r\n if (!docRootName)\r\n return undefined;\r\n const token = await IModelApp.getAccessToken();\r\n const blobUrl = await realityData.getBlobUrl(token, docRootName);\r\n blobStringUrl = blobUrl.toString();\r\n } else if (isTilestUrl) {\r\n blobStringUrl = rdSourceKey.id;\r\n } else {\r\n const orbitGtBlobProps = RealityDataSource.createOrbitGtBlobPropsFromKey(rdSourceKey);\r\n if (orbitGtBlobProps === undefined)\r\n return undefined;\r\n if(!isValidOrbitGtBlobProps(orbitGtBlobProps))\r\n return undefined;\r\n const { accountName, containerName, blobFileName, sasToken } = orbitGtBlobProps;\r\n blobStringUrl = blobFileName;\r\n if (accountName.length > 0)\r\n blobStringUrl = UrlFS.getAzureBlobSasUrl(accountName, containerName, blobFileName, sasToken);\r\n }\r\n\r\n if (Downloader.INSTANCE == null)\r\n Downloader.INSTANCE = new DownloaderXhr();\r\n\r\n if (CRSManager.ENGINE == null)\r\n CRSManager.ENGINE = await OnlineEngine.create();\r\n\r\n // wrap a caching layer (16 MB) around the blob file\r\n const urlFS: UrlFS = new UrlFS();\r\n const blobFileSize: ALong = await urlFS.getFileLength(blobStringUrl);\r\n const cacheKilobytes = 128;\r\n const cachedBlobFile = new PageCachedFile(urlFS, blobStringUrl, blobFileSize, cacheKilobytes * 1024 /* pageSize*/, 128/* maxPageCount*/);\r\n const pointCloudReader = await OPCReader.openFile(cachedBlobFile, blobStringUrl, true/* lazyLoading*/);\r\n let pointCloudCRS = pointCloudReader.getFileCRS();\r\n if (pointCloudCRS == null)\r\n pointCloudCRS = \"\";\r\n const dataManager = new OrbitGtDataManager(pointCloudReader, pointCloudCRS, PointDataRaw.TYPE);\r\n const pointCloudBounds = dataManager.getPointCloudBounds();\r\n const pointCloudRange = rangeFromOrbitGt(pointCloudBounds);\r\n const pointCloudCenter = pointCloudRange.localXYZToWorld(.5, .5, .5)!;\r\n const addCloudCenter = Transform.createTranslation(pointCloudCenter);\r\n const ecefTransform = Transform.createIdentity();\r\n let pointCloudCenterToDb = addCloudCenter;\r\n if (pointCloudCRS.length > 0) {\r\n await CRSManager.ENGINE.prepareForArea(pointCloudCRS, pointCloudBounds);\r\n const wgs84CRS = \"4978\";\r\n await CRSManager.ENGINE.prepareForArea(wgs84CRS, new OrbitGtBounds());\r\n const pointCloudToEcef = transformFromOrbitGt(CRSManager.createTransform(pointCloudCRS, new OrbitGtCoordinate(pointCloudCenter.x, pointCloudCenter.y, pointCloudCenter.z), wgs84CRS));\r\n const pointCloudCenterToEcef = pointCloudToEcef.multiplyTransformTransform(addCloudCenter);\r\n ecefTransform.setFrom(pointCloudCenterToEcef);\r\n\r\n let ecefToDb = iModel.getMapEcefToDb(0);\r\n // In initial publishing version the iModel ecef Transform was used to locate the reality model.\r\n // This would work well only for tilesets published from that iModel but for iModels the ecef transform is calculated\r\n // at the center of the project extents and the reality model location may differ greatly, and the curvature of the earth\r\n // could introduce significant errors.\r\n // The publishing was modified to calculate the ecef transform at the reality model range center and at the same time the \"iModelPublishVersion\"\r\n // member was added to the root object.\r\n const ecefOrigin = pointCloudCenterToEcef.getOrigin();\r\n const dbOrigin = ecefToDb.multiplyPoint3d(ecefOrigin);\r\n const realityOriginToProjectDistance = iModel.projectExtents.distanceToPoint(dbOrigin);\r\n const maxProjectDistance = 1E5; // Only use the project GCS projection if within 100KM of the project. Don't attempt to use GCS if global reality model or in another locale - Results will be unreliable.\r\n if (realityOriginToProjectDistance < maxProjectDistance) {\r\n const cartographicOrigin = Cartographic.fromEcef(ecefOrigin);\r\n const geoConverter = iModel.noGcsDefined ? undefined : iModel.geoServices.getConverter(\"WGS84\");\r\n if (cartographicOrigin !== undefined && geoConverter !== undefined) {\r\n const geoOrigin = Point3d.create(cartographicOrigin.longitudeDegrees, cartographicOrigin.latitudeDegrees, cartographicOrigin.height);\r\n const response = await geoConverter.getIModelCoordinatesFromGeoCoordinates([geoOrigin]);\r\n if (response.iModelCoords[0].s === GeoCoordStatus.Success) {\r\n const ecefToDbOrigin = await calculateEcefToDbTransformAtLocation(Point3d.fromJSON(response.iModelCoords[0].p), iModel);\r\n if (ecefToDbOrigin)\r\n ecefToDb = ecefToDbOrigin;\r\n }\r\n }\r\n }\r\n\r\n pointCloudCenterToDb = ecefToDb.multiplyTransformTransform(pointCloudCenterToEcef);\r\n }\r\n const params = new OrbitGtTileTreeParams(rdSourceKey, iModel, modelId, pointCloudCenterToDb);\r\n\r\n // We use a RTC transform to avoid jitter from large cloud coordinates.\r\n const centerOffset = Vector3d.create(-pointCloudCenter.x, -pointCloudCenter.y, -pointCloudCenter.z);\r\n pointCloudRange.low.addInPlace(centerOffset);\r\n pointCloudRange.high.addInPlace(centerOffset);\r\n return new OrbitGtTileTree(params, dataManager, pointCloudRange, centerOffset, ecefTransform);\r\n }\r\n}\r\n\r\n/** Supplies a reality data [[TileTree]] from a URL. May be associated with a persistent [[GeometricModelState]], or attached at run-time via a [[ContextOrbitGtState]].\r\n * @internal exported strictly for tests.\r\n */\r\nexport class OrbitGtTreeReference extends RealityModelTileTree.Reference {\r\n public readonly treeOwner: TileTreeOwner;\r\n protected _rdSourceKey: RealityDataSourceKey;\r\n private readonly _modelId: Id64String;\r\n\r\n public override get castsShadows() { return false; }\r\n public override get modelId() { return this._modelId; }\r\n\r\n public constructor(props: OrbitGtTileTree.ReferenceProps) {\r\n super(props);\r\n // Create rdSourceKey if not provided\r\n if (props.rdSourceKey) {\r\n this._rdSourceKey = props.rdSourceKey;\r\n } else if (props.orbitGtBlob) {\r\n this._rdSourceKey = RealityDataSource.createKeyFromOrbitGtBlobProps(props.orbitGtBlob);\r\n } else {\r\n // TODO: Maybe we should throw an exception\r\n this._rdSourceKey = RealityDataSource.createKeyFromBlobUrl(\"\", RealityDataProvider.OrbitGtBlob, RealityDataFormat.OPC);\r\n }\r\n\r\n // ###TODO find compatible model Id\r\n let modelId = props.modelId;\r\n if (undefined === modelId && this._source instanceof DisplayStyleState)\r\n modelId = orbitGtTreeSupplier.findCompatibleContextRealityModelId(this._rdSourceKey, this._source);\r\n\r\n this._modelId = modelId ?? props.iModel.transientIds.getNext();\r\n\r\n const ogtTreeId: OrbitGtTreeId = { rdSourceKey: this._rdSourceKey, modelId: this.modelId };\r\n this.treeOwner = orbitGtTreeSupplier.getOwner(ogtTreeId, props.iModel);\r\n }\r\n\r\n public override canSupplyToolTip(hit: HitDetail): boolean {\r\n const tree = this.treeOwner.tileTree;\r\n return undefined !== tree && hit.iModel === tree.iModel;\r\n }\r\n\r\n public override async getToolTip(hit: HitDetail): Promise<HTMLElement | string | undefined> {\r\n const tree = this.treeOwner.tileTree;\r\n if (undefined === tree || hit.iModel !== tree.iModel)\r\n return undefined;\r\n\r\n const strings = [];\r\n strings.push(IModelApp.localization.getLocalizedString(\"iModelJs:RealityModelTypes.OrbitGTPointCloud\"));\r\n\r\n if (this._name)\r\n strings.push(`${IModelApp.localization.getLocalizedString(\"iModelJs:TooltipInfo.Name\")} ${this._name}`);\r\n\r\n const div = document.createElement(\"div\");\r\n div.innerHTML = strings.join(\"<br>\");\r\n return div;\r\n }\r\n}\r\n"]}
@@ -44,6 +44,7 @@ declare class PrimaryTreeReference extends TileTreeReference {
44
44
  get castsShadows(): boolean;
45
45
  protected get isPlanProjection(): boolean;
46
46
  protected getClipVolume(_tree: TileTree): RenderClipVolume | undefined;
47
+ canSupplyToolTip(): boolean;
47
48
  createDrawArgs(context: SceneContext): TileDrawArgs | undefined;
48
49
  get treeOwner(): TileTreeOwner;
49
50
  protected createTreeId(view: ViewState, modelId: Id64String): PrimaryTileTreeId;
@@ -1 +1 @@
1
- {"version":3,"file":"PrimaryTileTree.d.ts","sourceRoot":"","sources":["../../../src/tile/PrimaryTileTree.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"PrimaryTileTree.d.ts","sourceRoot":"","sources":["../../../src/tile/PrimaryTileTree.ts"],"names":[],"mappings":"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"}
@@ -141,6 +141,9 @@ class PrimaryTreeReference extends TileTreeReference {
141
141
  // ###TODO: reduce frequency with which getModelClip() is called
142
142
  return this.view.is3d() && !this._sectionClip ? this.view.getModelClip(this.model.id) : undefined;
143
143
  }
144
+ canSupplyToolTip() {
145
+ return false;
146
+ }
144
147
  createDrawArgs(context) {
145
148
  const args = super.createDrawArgs(context);
146
149
  if (args)