@itwin/core-frontend 4.0.0-dev.46 → 4.0.0-dev.50

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 (122) hide show
  1. package/lib/cjs/ElementLocateManager.js +1 -1
  2. package/lib/cjs/ElementLocateManager.js.map +1 -1
  3. package/lib/cjs/SpatialViewState.d.ts.map +1 -1
  4. package/lib/cjs/SpatialViewState.js +2 -0
  5. package/lib/cjs/SpatialViewState.js.map +1 -1
  6. package/lib/cjs/ViewState.d.ts +2 -0
  7. package/lib/cjs/ViewState.d.ts.map +1 -1
  8. package/lib/cjs/ViewState.js.map +1 -1
  9. package/lib/cjs/Viewport.d.ts +2 -0
  10. package/lib/cjs/Viewport.d.ts.map +1 -1
  11. package/lib/cjs/Viewport.js +8 -4
  12. package/lib/cjs/Viewport.js.map +1 -1
  13. package/lib/cjs/render/MockRender.d.ts +4 -4
  14. package/lib/cjs/render/MockRender.js.map +1 -1
  15. package/lib/cjs/render/Pixel.d.ts +13 -4
  16. package/lib/cjs/render/Pixel.d.ts.map +1 -1
  17. package/lib/cjs/render/Pixel.js +16 -13
  18. package/lib/cjs/render/Pixel.js.map +1 -1
  19. package/lib/cjs/render/RenderSystem.d.ts +2 -2
  20. package/lib/cjs/render/RenderSystem.d.ts.map +1 -1
  21. package/lib/cjs/render/RenderSystem.js.map +1 -1
  22. package/lib/cjs/render/VisibleFeature.js +2 -2
  23. package/lib/cjs/render/VisibleFeature.js.map +1 -1
  24. package/lib/cjs/render/webgl/BatchState.d.ts +3 -2
  25. package/lib/cjs/render/webgl/BatchState.d.ts.map +1 -1
  26. package/lib/cjs/render/webgl/BatchState.js +4 -3
  27. package/lib/cjs/render/webgl/BatchState.js.map +1 -1
  28. package/lib/cjs/render/webgl/DrawCommand.d.ts.map +1 -1
  29. package/lib/cjs/render/webgl/DrawCommand.js +4 -2
  30. package/lib/cjs/render/webgl/DrawCommand.js.map +1 -1
  31. package/lib/cjs/render/webgl/FeatureOverrides.d.ts +3 -3
  32. package/lib/cjs/render/webgl/FeatureOverrides.d.ts.map +1 -1
  33. package/lib/cjs/render/webgl/FeatureOverrides.js +24 -28
  34. package/lib/cjs/render/webgl/FeatureOverrides.js.map +1 -1
  35. package/lib/cjs/render/webgl/Graphic.d.ts +3 -3
  36. package/lib/cjs/render/webgl/Graphic.js.map +1 -1
  37. package/lib/cjs/render/webgl/RenderCommands.js +1 -1
  38. package/lib/cjs/render/webgl/RenderCommands.js.map +1 -1
  39. package/lib/cjs/render/webgl/SceneCompositor.d.ts.map +1 -1
  40. package/lib/cjs/render/webgl/SceneCompositor.js +13 -4
  41. package/lib/cjs/render/webgl/SceneCompositor.js.map +1 -1
  42. package/lib/cjs/render/webgl/System.d.ts +2 -2
  43. package/lib/cjs/render/webgl/System.js.map +1 -1
  44. package/lib/cjs/render/webgl/VisibleTileFeatures.js +6 -7
  45. package/lib/cjs/render/webgl/VisibleTileFeatures.js.map +1 -1
  46. package/lib/cjs/tile/GltfReader.d.ts +24 -1
  47. package/lib/cjs/tile/GltfReader.d.ts.map +1 -1
  48. package/lib/cjs/tile/GltfReader.js +27 -3
  49. package/lib/cjs/tile/GltfReader.js.map +1 -1
  50. package/lib/cjs/tile/ImdlReader.d.ts +3 -2
  51. package/lib/cjs/tile/ImdlReader.d.ts.map +1 -1
  52. package/lib/cjs/tile/ImdlReader.js +34 -25
  53. package/lib/cjs/tile/ImdlReader.js.map +1 -1
  54. package/lib/cjs/tile/PrimaryTileTree.d.ts +5 -1
  55. package/lib/cjs/tile/PrimaryTileTree.d.ts.map +1 -1
  56. package/lib/cjs/tile/PrimaryTileTree.js +2 -0
  57. package/lib/cjs/tile/PrimaryTileTree.js.map +1 -1
  58. package/lib/cjs/tools/ClipViewTool.d.ts.map +1 -1
  59. package/lib/cjs/tools/ClipViewTool.js +5 -1
  60. package/lib/cjs/tools/ClipViewTool.js.map +1 -1
  61. package/lib/esm/ElementLocateManager.js +1 -1
  62. package/lib/esm/ElementLocateManager.js.map +1 -1
  63. package/lib/esm/SpatialViewState.d.ts.map +1 -1
  64. package/lib/esm/SpatialViewState.js +2 -0
  65. package/lib/esm/SpatialViewState.js.map +1 -1
  66. package/lib/esm/ViewState.d.ts +2 -0
  67. package/lib/esm/ViewState.d.ts.map +1 -1
  68. package/lib/esm/ViewState.js.map +1 -1
  69. package/lib/esm/Viewport.d.ts +2 -0
  70. package/lib/esm/Viewport.d.ts.map +1 -1
  71. package/lib/esm/Viewport.js +8 -4
  72. package/lib/esm/Viewport.js.map +1 -1
  73. package/lib/esm/render/MockRender.d.ts +4 -4
  74. package/lib/esm/render/MockRender.js.map +1 -1
  75. package/lib/esm/render/Pixel.d.ts +13 -4
  76. package/lib/esm/render/Pixel.d.ts.map +1 -1
  77. package/lib/esm/render/Pixel.js +17 -14
  78. package/lib/esm/render/Pixel.js.map +1 -1
  79. package/lib/esm/render/RenderSystem.d.ts +2 -2
  80. package/lib/esm/render/RenderSystem.d.ts.map +1 -1
  81. package/lib/esm/render/RenderSystem.js.map +1 -1
  82. package/lib/esm/render/VisibleFeature.js +2 -2
  83. package/lib/esm/render/VisibleFeature.js.map +1 -1
  84. package/lib/esm/render/webgl/BatchState.d.ts +3 -2
  85. package/lib/esm/render/webgl/BatchState.d.ts.map +1 -1
  86. package/lib/esm/render/webgl/BatchState.js +4 -3
  87. package/lib/esm/render/webgl/BatchState.js.map +1 -1
  88. package/lib/esm/render/webgl/DrawCommand.d.ts.map +1 -1
  89. package/lib/esm/render/webgl/DrawCommand.js +4 -2
  90. package/lib/esm/render/webgl/DrawCommand.js.map +1 -1
  91. package/lib/esm/render/webgl/FeatureOverrides.d.ts +3 -3
  92. package/lib/esm/render/webgl/FeatureOverrides.d.ts.map +1 -1
  93. package/lib/esm/render/webgl/FeatureOverrides.js +24 -28
  94. package/lib/esm/render/webgl/FeatureOverrides.js.map +1 -1
  95. package/lib/esm/render/webgl/Graphic.d.ts +3 -3
  96. package/lib/esm/render/webgl/Graphic.js.map +1 -1
  97. package/lib/esm/render/webgl/RenderCommands.js +1 -1
  98. package/lib/esm/render/webgl/RenderCommands.js.map +1 -1
  99. package/lib/esm/render/webgl/SceneCompositor.d.ts.map +1 -1
  100. package/lib/esm/render/webgl/SceneCompositor.js +14 -5
  101. package/lib/esm/render/webgl/SceneCompositor.js.map +1 -1
  102. package/lib/esm/render/webgl/System.d.ts +2 -2
  103. package/lib/esm/render/webgl/System.js.map +1 -1
  104. package/lib/esm/render/webgl/VisibleTileFeatures.js +7 -8
  105. package/lib/esm/render/webgl/VisibleTileFeatures.js.map +1 -1
  106. package/lib/esm/tile/GltfReader.d.ts +24 -1
  107. package/lib/esm/tile/GltfReader.d.ts.map +1 -1
  108. package/lib/esm/tile/GltfReader.js +24 -1
  109. package/lib/esm/tile/GltfReader.js.map +1 -1
  110. package/lib/esm/tile/ImdlReader.d.ts +3 -2
  111. package/lib/esm/tile/ImdlReader.d.ts.map +1 -1
  112. package/lib/esm/tile/ImdlReader.js +35 -26
  113. package/lib/esm/tile/ImdlReader.js.map +1 -1
  114. package/lib/esm/tile/PrimaryTileTree.d.ts +5 -1
  115. package/lib/esm/tile/PrimaryTileTree.d.ts.map +1 -1
  116. package/lib/esm/tile/PrimaryTileTree.js +2 -0
  117. package/lib/esm/tile/PrimaryTileTree.js.map +1 -1
  118. package/lib/esm/tools/ClipViewTool.d.ts.map +1 -1
  119. package/lib/esm/tools/ClipViewTool.js +5 -1
  120. package/lib/esm/tools/ClipViewTool.js.map +1 -1
  121. package/lib/public/locales/en/CoreTools.json +4 -0
  122. package/package.json +19 -19
@@ -243,7 +243,7 @@ class ElementPicker {
243
243
  });
244
244
  if (!hitPointWorld)
245
245
  continue;
246
- const modelId = undefined !== pixel.featureTable ? pixel.featureTable.modelId : undefined;
246
+ const modelId = pixel.modelId;
247
247
  const hit = new HitDetail_1.HitDetail(pickPointWorld, vp, options.hitSource, hitPointWorld, pixel.elementId, this.getPixelPriority(pixel), testPointView.distance(elmPoint), pixel.distanceFraction, pixel.subCategoryId, pixel.geometryClass, modelId, pixel.iModel, pixel.tileId, pixel.isClassifier);
248
248
  this.hitList.addHit(hit);
249
249
  if (this.hitList.hits.length > options.maxHits)
@@ -1 +1 @@
1
- {"version":3,"file":"ElementLocateManager.js","sourceRoot":"","sources":["../../src/ElementLocateManager.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 LocatingElements\r\n */\r\n\r\nimport { Id64 } from \"@itwin/core-bentley\";\r\nimport { Point2d, Point3d } from \"@itwin/core-geometry\";\r\nimport { HitDetail, HitList, HitPriority, HitSource } from \"./HitDetail\";\r\nimport { IModelApp } from \"./IModelApp\";\r\nimport { Pixel } from \"./render/Pixel\";\r\nimport { InputSource, InteractiveTool } from \"./tools/Tool\";\r\nimport { ScreenViewport, Viewport } from \"./Viewport\";\r\nimport { ViewRect } from \"./ViewRect\";\r\n\r\n/** The possible actions for which a locate filter can be called.\r\n * @public\r\n * @extensions\r\n */\r\nexport enum LocateAction {\r\n Identify = 0,\r\n AutoLocate = 1,\r\n}\r\n\r\n/** Values to return from a locate filter.\r\n * Return `Reject` to indicate the element is unacceptable.\r\n * @public\r\n * @extensions\r\n */\r\nexport enum LocateFilterStatus {\r\n Accept = 0,\r\n Reject = 1,\r\n}\r\n\r\n/**\r\n * @public\r\n * @extensions\r\n */\r\nexport enum SnapStatus {\r\n Success = 0,\r\n Aborted = 1,\r\n NoElements = 2,\r\n Disabled = 100,\r\n NoSnapPossible = 200,\r\n NotSnappable = 300,\r\n FilteredByApp = 600,\r\n FilteredByAppQuietly = 700,\r\n}\r\n\r\n/** Options that customize the way element location (i.e. *picking*) works.\r\n * @public\r\n * @extensions\r\n */\r\nexport class LocateOptions {\r\n /** If true, also test graphics from view decorations. */\r\n public allowDecorations = false;\r\n /** If true, also test graphics with non-locatable flag set. */\r\n public allowNonLocatable = false;\r\n /** Maximum number of hits to return. */\r\n public maxHits = 20;\r\n /** The [[HitSource]] identifying the caller. */\r\n public hitSource = HitSource.DataPoint;\r\n /** If true, also test graphics from an IModelConnection other than the one associated with the Viewport. This can occur if, e.g., a\r\n * [[TiledGraphicsProvider]] is used to display graphics from a different iModel into the [[Viewport]].\r\n * @note If you override this, you must be prepared to properly handle [[HitDetail]]s originating from other IModelConnections.\r\n * @see [[HitDetail.iModel]] and [[HitDetail.isExternalIModelHit]]\r\n */\r\n public allowExternalIModels = false;\r\n /** If true, then the world point of a hit on a model will preserve any transforms applied to the model at display time,\r\n * such as those supplied by a [[ModelDisplayTransformProvider]] or [PlanProjectionSettings.elevation]($common).\r\n * Otherwise, the world point will be multiplied by the inverse of any such transforms to correlate it with the model's true coordinate space.\r\n */\r\n public preserveModelDisplayTransforms = false;\r\n\r\n /** Make a copy of this LocateOptions. */\r\n public clone(): LocateOptions {\r\n const other = new LocateOptions();\r\n other.allowDecorations = this.allowDecorations;\r\n other.allowNonLocatable = this.allowNonLocatable;\r\n other.maxHits = this.maxHits;\r\n other.hitSource = this.hitSource;\r\n other.allowExternalIModels = this.allowExternalIModels;\r\n return other;\r\n }\r\n public setFrom(other: LocateOptions): void {\r\n this.allowDecorations = other.allowDecorations;\r\n this.allowNonLocatable = other.allowNonLocatable;\r\n this.maxHits = other.maxHits;\r\n this.hitSource = other.hitSource;\r\n this.allowExternalIModels = other.allowExternalIModels;\r\n }\r\n public init() {\r\n this.allowDecorations = this.allowNonLocatable = this.allowExternalIModels = false;\r\n this.maxHits = 20;\r\n this.hitSource = HitSource.DataPoint;\r\n }\r\n}\r\n\r\n/**\r\n * @public\r\n * @extensions\r\n */\r\nexport class LocateResponse {\r\n public snapStatus = SnapStatus.Success;\r\n public reason?: string;\r\n public explanation = \"\";\r\n\r\n /** @internal */\r\n public clone(): LocateResponse {\r\n const other = new LocateResponse();\r\n other.snapStatus = this.snapStatus;\r\n other.reason = this.reason;\r\n other.explanation = this.explanation;\r\n return other;\r\n }\r\n\r\n /** @internal */\r\n public setFrom(other: LocateResponse): void {\r\n this.snapStatus = other.snapStatus;\r\n this.reason = other.reason;\r\n this.explanation = other.explanation;\r\n }\r\n}\r\n\r\n/**\r\n * @public\r\n * @extensions\r\n */\r\nexport interface HitListHolder {\r\n setHitList(list: HitList<HitDetail> | undefined): void;\r\n}\r\n\r\n/**\r\n * @public\r\n * @extensions\r\n */\r\nexport class ElementPicker {\r\n public viewport?: Viewport;\r\n public readonly pickPointWorld = new Point3d();\r\n public hitList?: HitList<HitDetail>;\r\n\r\n public empty() {\r\n this.pickPointWorld.setZero();\r\n this.viewport = undefined;\r\n if (this.hitList)\r\n this.hitList.empty();\r\n else\r\n this.hitList = new HitList<HitDetail>();\r\n }\r\n\r\n /** return the HitList for the last Pick performed. Optionally allows the caller to take ownership of the list. */\r\n public getHitList(takeOwnership: boolean): HitList<HitDetail> {\r\n const list = this.hitList!;\r\n if (takeOwnership)\r\n this.hitList = undefined;\r\n return list;\r\n }\r\n\r\n public getNextHit(): HitDetail | undefined { return this.hitList ? this.hitList.getNextHit() : undefined; }\r\n\r\n /** Return a hit from the list of hits created the last time pickElements was called. */\r\n public getHit(i: number): HitDetail | undefined { return this.hitList ? this.hitList.getHit(i) : undefined; }\r\n\r\n public resetCurrentHit(): void {\r\n if (this.hitList)\r\n this.hitList.resetCurrentHit();\r\n }\r\n\r\n private getPixelPriority(pixel: Pixel.Data) {\r\n switch (pixel.type) {\r\n case Pixel.GeometryType.Surface:\r\n return Pixel.Planarity.Planar === pixel.planarity ? HitPriority.PlanarSurface : HitPriority.NonPlanarSurface;\r\n case Pixel.GeometryType.Linear:\r\n return HitPriority.WireEdge;\r\n case Pixel.GeometryType.Edge:\r\n return Pixel.Planarity.Planar === pixel.planarity ? HitPriority.PlanarEdge : HitPriority.NonPlanarEdge;\r\n case Pixel.GeometryType.Silhouette:\r\n return HitPriority.SilhouetteEdge;\r\n default:\r\n return HitPriority.Unknown;\r\n }\r\n }\r\n\r\n private comparePixel(pixel1: Pixel.Data, pixel2: Pixel.Data, distXY1: number, distXY2: number) {\r\n const priority1 = this.getPixelPriority(pixel1);\r\n const priority2 = this.getPixelPriority(pixel2);\r\n if (priority1 < priority2)\r\n return -1;\r\n if (priority1 > priority2)\r\n return 1;\r\n if (distXY1 < distXY2)\r\n return -1;\r\n if (distXY1 > distXY2)\r\n return 1;\r\n if (pixel1.distanceFraction > pixel2.distanceFraction)\r\n return -1;\r\n if (pixel1.distanceFraction < pixel2.distanceFraction)\r\n return 1;\r\n\r\n return 0;\r\n }\r\n\r\n /** Generate a list of elements that are close to a given point.\r\n * @returns The number of hits in the hitList of this object.\r\n */\r\n public doPick(vp: ScreenViewport, pickPointWorld: Point3d, pickRadiusView: number, options: LocateOptions): number {\r\n if (this.hitList && this.hitList.length > 0 && vp === this.viewport && pickPointWorld.isAlmostEqual(this.pickPointWorld)) {\r\n this.hitList.resetCurrentHit();\r\n return this.hitList.length;\r\n }\r\n\r\n this.empty(); // empty the hit list\r\n this.viewport = vp;\r\n this.pickPointWorld.setFrom(pickPointWorld);\r\n\r\n const pickPointView = vp.worldToView(pickPointWorld);\r\n const testPointView = new Point2d(Math.floor(pickPointView.x + 0.5), Math.floor(pickPointView.y + 0.5));\r\n let pixelRadius = Math.floor(pickRadiusView + 0.5);\r\n const rect = new ViewRect(testPointView.x - pixelRadius, testPointView.y - pixelRadius, testPointView.x + pixelRadius, testPointView.y + pixelRadius);\r\n if (rect.isNull)\r\n return 0;\r\n let result: number = 0;\r\n vp.readPixels(rect, Pixel.Selector.All, (pixels) => {\r\n if (undefined === pixels)\r\n return;\r\n\r\n testPointView.x = vp.cssPixelsToDevicePixels(testPointView.x);\r\n testPointView.y = vp.cssPixelsToDevicePixels(testPointView.y);\r\n pixelRadius = vp.cssPixelsToDevicePixels(pixelRadius);\r\n\r\n const elmHits = new Map<string, Point2d>();\r\n const testPoint = Point2d.createZero();\r\n for (testPoint.x = testPointView.x - pixelRadius; testPoint.x <= testPointView.x + pixelRadius; ++testPoint.x) {\r\n for (testPoint.y = testPointView.y - pixelRadius; testPoint.y <= testPointView.y + pixelRadius; ++testPoint.y) {\r\n const pixel = pixels.getPixel(testPoint.x, testPoint.y);\r\n if (undefined === pixel || undefined === pixel.elementId || Id64.isInvalid(pixel.elementId))\r\n continue; // no geometry at this location...\r\n\r\n const distXY = testPointView.distance(testPoint);\r\n if (distXY > pixelRadius)\r\n continue; // ignore corners. it's a locate circle not square...\r\n\r\n const oldPoint = elmHits.get(pixel.elementId);\r\n if (undefined !== oldPoint) {\r\n if (this.comparePixel(pixel, pixels.getPixel(oldPoint.x, oldPoint.y), distXY, testPointView.distance(oldPoint)) < 0)\r\n oldPoint.setFrom(testPoint); // new hit is better, update location...\r\n } else {\r\n elmHits.set(pixel.elementId, testPoint.clone());\r\n }\r\n }\r\n }\r\n if (0 === elmHits.size)\r\n return;\r\n\r\n for (const elmPoint of elmHits.values()) {\r\n const pixel = pixels.getPixel(elmPoint.x, elmPoint.y);\r\n if (undefined === pixel || undefined === pixel.elementId)\r\n continue;\r\n\r\n const hitPointWorld = vp.getPixelDataWorldPoint({\r\n pixels,\r\n x: elmPoint.x,\r\n y: elmPoint.y,\r\n preserveModelDisplayTransforms: options.preserveModelDisplayTransforms,\r\n });\r\n\r\n if (!hitPointWorld)\r\n continue;\r\n\r\n const modelId = undefined !== pixel.featureTable ? pixel.featureTable.modelId : undefined;\r\n const hit = new HitDetail(pickPointWorld, vp, options.hitSource, hitPointWorld, pixel.elementId, this.getPixelPriority(pixel), testPointView.distance(elmPoint), pixel.distanceFraction, pixel.subCategoryId, pixel.geometryClass, modelId, pixel.iModel, pixel.tileId, pixel.isClassifier);\r\n this.hitList!.addHit(hit);\r\n\r\n if (this.hitList!.hits.length > options.maxHits)\r\n this.hitList!.hits.length = options.maxHits; // truncate array...\r\n }\r\n\r\n result = this.hitList!.length;\r\n }, !options.allowNonLocatable);\r\n\r\n return result;\r\n }\r\n\r\n public testHit(hit: HitDetail, vp: ScreenViewport, pickPointWorld: Point3d, pickRadiusView: number, options: LocateOptions): boolean {\r\n if (0 === this.doPick(vp, pickPointWorld, pickRadiusView, options))\r\n return false;\r\n\r\n return this.hitList!.hits.some((thisHit) => hit.isSameHit(thisHit));\r\n }\r\n}\r\n\r\n/**\r\n * @public\r\n * @extensions\r\n */\r\nexport class ElementLocateManager {\r\n public hitList?: HitList<HitDetail>;\r\n public currHit?: HitDetail;\r\n public readonly options = new LocateOptions();\r\n public readonly picker = new ElementPicker();\r\n\r\n /** get the full message key for a locate failure */\r\n public static getFailureMessageKey(key: string) { return `LocateFailure.${key}`; }\r\n public onInitialized() { }\r\n public get apertureInches() { return 0.11; }\r\n public get touchApertureInches() { return 0.22; }\r\n\r\n public clear(): void { this.setCurrHit(undefined); }\r\n public setHitList(list?: HitList<HitDetail>) { this.hitList = list; }\r\n public setCurrHit(hit?: HitDetail): void { this.currHit = hit; }\r\n public getNextHit(): HitDetail | undefined { return this.hitList ? this.hitList.getNextHit() : undefined; }\r\n\r\n /** return the current path from either the snapping logic or the pre-locating systems. */\r\n public getPreLocatedHit(): HitDetail | undefined {\r\n // NOTE: Check AccuSnap first as Tentative is used to build intersect snap. For normal snaps when a Tentative is active there should be no AccuSnap.\r\n let preLocated = IModelApp.accuSnap.getHitAndList(this);\r\n\r\n if (!preLocated && !!(preLocated = IModelApp.tentativePoint.getHitAndList(this))) {\r\n const vp = preLocated.viewport;\r\n this.picker.empty(); // Get new hit list at hit point; want reset to cycle hits using adjusted point location...\r\n this.picker.doPick(vp, preLocated.getPoint(), (vp.pixelsFromInches(this.apertureInches) / 2.0) + 1.5, this.options);\r\n this.setHitList(this.picker.getHitList(true));\r\n }\r\n\r\n if (this.hitList)\r\n this.hitList.resetCurrentHit();\r\n\r\n return preLocated;\r\n }\r\n\r\n public async filterHit(hit: HitDetail, _action: LocateAction, out: LocateResponse): Promise<LocateFilterStatus> {\r\n // Tools must opt-in to locate of transient geometry as it requires special treatment.\r\n if (!this.options.allowDecorations && !hit.isElementHit) {\r\n if (hit.isModelHit)\r\n out.reason = ElementLocateManager.getFailureMessageKey(\"RealityModel\");\r\n else if (hit.isMapHit)\r\n out.reason = ElementLocateManager.getFailureMessageKey(\"Map\");\r\n else\r\n out.reason = ElementLocateManager.getFailureMessageKey(\"Transient\");\r\n return LocateFilterStatus.Reject;\r\n }\r\n\r\n // Tools must opt-in to locate geometry from external iModels.\r\n if (!this.options.allowExternalIModels && hit.isExternalIModelHit) {\r\n out.reason = ElementLocateManager.getFailureMessageKey(\"ExternalIModel\");\r\n return LocateFilterStatus.Reject;\r\n }\r\n\r\n if (undefined !== hit.subCategoryId && !hit.isExternalIModelHit) {\r\n const appearance = hit.viewport.getSubCategoryAppearance(hit.subCategoryId);\r\n if (appearance.dontLocate) {\r\n out.reason = ElementLocateManager.getFailureMessageKey(\"NotLocatableSubCategory\");\r\n return LocateFilterStatus.Reject;\r\n }\r\n }\r\n\r\n const tool = IModelApp.toolAdmin.activeTool;\r\n if (!(tool && tool instanceof InteractiveTool))\r\n return LocateFilterStatus.Accept;\r\n\r\n const status = await tool.filterHit(hit, out);\r\n if (LocateFilterStatus.Reject === status)\r\n out.reason = ElementLocateManager.getFailureMessageKey(\"ByApp\");\r\n\r\n return status;\r\n }\r\n\r\n public initLocateOptions() { this.options.init(); }\r\n public initToolLocate() {\r\n this.initLocateOptions();\r\n this.clear();\r\n this.picker.empty();\r\n IModelApp.tentativePoint.clear(true);\r\n }\r\n\r\n private async _doLocate(response: LocateResponse, newSearch: boolean, testPoint: Point3d, vp: ScreenViewport | undefined, source: InputSource, filterHits: boolean): Promise<HitDetail | undefined> {\r\n if (!vp)\r\n return;\r\n\r\n // the \"newSearch\" flag indicates whether the caller wants us to conduct a new search at the testPoint, or just continue returning paths from the previous search.\r\n if (newSearch) {\r\n const hit = this.getPreLocatedHit();\r\n\r\n // if we're snapped to something, that path has the highest priority and becomes the active hit.\r\n if (hit) {\r\n if (!filterHits || LocateFilterStatus.Accept === await this.filterHit(hit, LocateAction.Identify, response))\r\n return hit;\r\n\r\n response = new LocateResponse(); // we have the reason and explanation we want.\r\n }\r\n\r\n this.picker.empty();\r\n this.picker.doPick(vp, testPoint, (vp.pixelsFromInches(InputSource.Touch === source ? this.touchApertureInches : this.apertureInches) / 2.0) + 1.5, this.options);\r\n\r\n const hitList = this.picker.getHitList(true);\r\n this.setHitList(hitList);\r\n }\r\n\r\n let newHit: HitDetail | undefined;\r\n while (undefined !== (newHit = this.getNextHit())) {\r\n if (!filterHits || LocateFilterStatus.Accept === await this.filterHit(newHit, LocateAction.Identify, response))\r\n return newHit;\r\n response = new LocateResponse(); // we have the reason and explanation we want.\r\n }\r\n\r\n return undefined;\r\n }\r\n\r\n public async doLocate(response: LocateResponse, newSearch: boolean, testPoint: Point3d, view: ScreenViewport | undefined, source: InputSource, filterHits = true): Promise<HitDetail | undefined> {\r\n response.reason = ElementLocateManager.getFailureMessageKey(\"NoElements\");\r\n response.explanation = \"\";\r\n\r\n const hit = await this._doLocate(response, newSearch, testPoint, view, source, filterHits);\r\n this.setCurrHit(hit);\r\n\r\n // if we found a hit, remove it from the list of remaining hits near the current search point.\r\n if (hit && this.hitList)\r\n this.hitList.removeHitsFrom(hit.sourceId);\r\n return hit;\r\n }\r\n}\r\n"]}
1
+ {"version":3,"file":"ElementLocateManager.js","sourceRoot":"","sources":["../../src/ElementLocateManager.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 LocatingElements\r\n */\r\n\r\nimport { Id64 } from \"@itwin/core-bentley\";\r\nimport { Point2d, Point3d } from \"@itwin/core-geometry\";\r\nimport { HitDetail, HitList, HitPriority, HitSource } from \"./HitDetail\";\r\nimport { IModelApp } from \"./IModelApp\";\r\nimport { Pixel } from \"./render/Pixel\";\r\nimport { InputSource, InteractiveTool } from \"./tools/Tool\";\r\nimport { ScreenViewport, Viewport } from \"./Viewport\";\r\nimport { ViewRect } from \"./ViewRect\";\r\n\r\n/** The possible actions for which a locate filter can be called.\r\n * @public\r\n * @extensions\r\n */\r\nexport enum LocateAction {\r\n Identify = 0,\r\n AutoLocate = 1,\r\n}\r\n\r\n/** Values to return from a locate filter.\r\n * Return `Reject` to indicate the element is unacceptable.\r\n * @public\r\n * @extensions\r\n */\r\nexport enum LocateFilterStatus {\r\n Accept = 0,\r\n Reject = 1,\r\n}\r\n\r\n/**\r\n * @public\r\n * @extensions\r\n */\r\nexport enum SnapStatus {\r\n Success = 0,\r\n Aborted = 1,\r\n NoElements = 2,\r\n Disabled = 100,\r\n NoSnapPossible = 200,\r\n NotSnappable = 300,\r\n FilteredByApp = 600,\r\n FilteredByAppQuietly = 700,\r\n}\r\n\r\n/** Options that customize the way element location (i.e. *picking*) works.\r\n * @public\r\n * @extensions\r\n */\r\nexport class LocateOptions {\r\n /** If true, also test graphics from view decorations. */\r\n public allowDecorations = false;\r\n /** If true, also test graphics with non-locatable flag set. */\r\n public allowNonLocatable = false;\r\n /** Maximum number of hits to return. */\r\n public maxHits = 20;\r\n /** The [[HitSource]] identifying the caller. */\r\n public hitSource = HitSource.DataPoint;\r\n /** If true, also test graphics from an IModelConnection other than the one associated with the Viewport. This can occur if, e.g., a\r\n * [[TiledGraphicsProvider]] is used to display graphics from a different iModel into the [[Viewport]].\r\n * @note If you override this, you must be prepared to properly handle [[HitDetail]]s originating from other IModelConnections.\r\n * @see [[HitDetail.iModel]] and [[HitDetail.isExternalIModelHit]]\r\n */\r\n public allowExternalIModels = false;\r\n /** If true, then the world point of a hit on a model will preserve any transforms applied to the model at display time,\r\n * such as those supplied by a [[ModelDisplayTransformProvider]] or [PlanProjectionSettings.elevation]($common).\r\n * Otherwise, the world point will be multiplied by the inverse of any such transforms to correlate it with the model's true coordinate space.\r\n */\r\n public preserveModelDisplayTransforms = false;\r\n\r\n /** Make a copy of this LocateOptions. */\r\n public clone(): LocateOptions {\r\n const other = new LocateOptions();\r\n other.allowDecorations = this.allowDecorations;\r\n other.allowNonLocatable = this.allowNonLocatable;\r\n other.maxHits = this.maxHits;\r\n other.hitSource = this.hitSource;\r\n other.allowExternalIModels = this.allowExternalIModels;\r\n return other;\r\n }\r\n public setFrom(other: LocateOptions): void {\r\n this.allowDecorations = other.allowDecorations;\r\n this.allowNonLocatable = other.allowNonLocatable;\r\n this.maxHits = other.maxHits;\r\n this.hitSource = other.hitSource;\r\n this.allowExternalIModels = other.allowExternalIModels;\r\n }\r\n public init() {\r\n this.allowDecorations = this.allowNonLocatable = this.allowExternalIModels = false;\r\n this.maxHits = 20;\r\n this.hitSource = HitSource.DataPoint;\r\n }\r\n}\r\n\r\n/**\r\n * @public\r\n * @extensions\r\n */\r\nexport class LocateResponse {\r\n public snapStatus = SnapStatus.Success;\r\n public reason?: string;\r\n public explanation = \"\";\r\n\r\n /** @internal */\r\n public clone(): LocateResponse {\r\n const other = new LocateResponse();\r\n other.snapStatus = this.snapStatus;\r\n other.reason = this.reason;\r\n other.explanation = this.explanation;\r\n return other;\r\n }\r\n\r\n /** @internal */\r\n public setFrom(other: LocateResponse): void {\r\n this.snapStatus = other.snapStatus;\r\n this.reason = other.reason;\r\n this.explanation = other.explanation;\r\n }\r\n}\r\n\r\n/**\r\n * @public\r\n * @extensions\r\n */\r\nexport interface HitListHolder {\r\n setHitList(list: HitList<HitDetail> | undefined): void;\r\n}\r\n\r\n/**\r\n * @public\r\n * @extensions\r\n */\r\nexport class ElementPicker {\r\n public viewport?: Viewport;\r\n public readonly pickPointWorld = new Point3d();\r\n public hitList?: HitList<HitDetail>;\r\n\r\n public empty() {\r\n this.pickPointWorld.setZero();\r\n this.viewport = undefined;\r\n if (this.hitList)\r\n this.hitList.empty();\r\n else\r\n this.hitList = new HitList<HitDetail>();\r\n }\r\n\r\n /** return the HitList for the last Pick performed. Optionally allows the caller to take ownership of the list. */\r\n public getHitList(takeOwnership: boolean): HitList<HitDetail> {\r\n const list = this.hitList!;\r\n if (takeOwnership)\r\n this.hitList = undefined;\r\n return list;\r\n }\r\n\r\n public getNextHit(): HitDetail | undefined { return this.hitList ? this.hitList.getNextHit() : undefined; }\r\n\r\n /** Return a hit from the list of hits created the last time pickElements was called. */\r\n public getHit(i: number): HitDetail | undefined { return this.hitList ? this.hitList.getHit(i) : undefined; }\r\n\r\n public resetCurrentHit(): void {\r\n if (this.hitList)\r\n this.hitList.resetCurrentHit();\r\n }\r\n\r\n private getPixelPriority(pixel: Pixel.Data) {\r\n switch (pixel.type) {\r\n case Pixel.GeometryType.Surface:\r\n return Pixel.Planarity.Planar === pixel.planarity ? HitPriority.PlanarSurface : HitPriority.NonPlanarSurface;\r\n case Pixel.GeometryType.Linear:\r\n return HitPriority.WireEdge;\r\n case Pixel.GeometryType.Edge:\r\n return Pixel.Planarity.Planar === pixel.planarity ? HitPriority.PlanarEdge : HitPriority.NonPlanarEdge;\r\n case Pixel.GeometryType.Silhouette:\r\n return HitPriority.SilhouetteEdge;\r\n default:\r\n return HitPriority.Unknown;\r\n }\r\n }\r\n\r\n private comparePixel(pixel1: Pixel.Data, pixel2: Pixel.Data, distXY1: number, distXY2: number) {\r\n const priority1 = this.getPixelPriority(pixel1);\r\n const priority2 = this.getPixelPriority(pixel2);\r\n if (priority1 < priority2)\r\n return -1;\r\n if (priority1 > priority2)\r\n return 1;\r\n if (distXY1 < distXY2)\r\n return -1;\r\n if (distXY1 > distXY2)\r\n return 1;\r\n if (pixel1.distanceFraction > pixel2.distanceFraction)\r\n return -1;\r\n if (pixel1.distanceFraction < pixel2.distanceFraction)\r\n return 1;\r\n\r\n return 0;\r\n }\r\n\r\n /** Generate a list of elements that are close to a given point.\r\n * @returns The number of hits in the hitList of this object.\r\n */\r\n public doPick(vp: ScreenViewport, pickPointWorld: Point3d, pickRadiusView: number, options: LocateOptions): number {\r\n if (this.hitList && this.hitList.length > 0 && vp === this.viewport && pickPointWorld.isAlmostEqual(this.pickPointWorld)) {\r\n this.hitList.resetCurrentHit();\r\n return this.hitList.length;\r\n }\r\n\r\n this.empty(); // empty the hit list\r\n this.viewport = vp;\r\n this.pickPointWorld.setFrom(pickPointWorld);\r\n\r\n const pickPointView = vp.worldToView(pickPointWorld);\r\n const testPointView = new Point2d(Math.floor(pickPointView.x + 0.5), Math.floor(pickPointView.y + 0.5));\r\n let pixelRadius = Math.floor(pickRadiusView + 0.5);\r\n const rect = new ViewRect(testPointView.x - pixelRadius, testPointView.y - pixelRadius, testPointView.x + pixelRadius, testPointView.y + pixelRadius);\r\n if (rect.isNull)\r\n return 0;\r\n let result: number = 0;\r\n vp.readPixels(rect, Pixel.Selector.All, (pixels) => {\r\n if (undefined === pixels)\r\n return;\r\n\r\n testPointView.x = vp.cssPixelsToDevicePixels(testPointView.x);\r\n testPointView.y = vp.cssPixelsToDevicePixels(testPointView.y);\r\n pixelRadius = vp.cssPixelsToDevicePixels(pixelRadius);\r\n\r\n const elmHits = new Map<string, Point2d>();\r\n const testPoint = Point2d.createZero();\r\n for (testPoint.x = testPointView.x - pixelRadius; testPoint.x <= testPointView.x + pixelRadius; ++testPoint.x) {\r\n for (testPoint.y = testPointView.y - pixelRadius; testPoint.y <= testPointView.y + pixelRadius; ++testPoint.y) {\r\n const pixel = pixels.getPixel(testPoint.x, testPoint.y);\r\n if (undefined === pixel || undefined === pixel.elementId || Id64.isInvalid(pixel.elementId))\r\n continue; // no geometry at this location...\r\n\r\n const distXY = testPointView.distance(testPoint);\r\n if (distXY > pixelRadius)\r\n continue; // ignore corners. it's a locate circle not square...\r\n\r\n const oldPoint = elmHits.get(pixel.elementId);\r\n if (undefined !== oldPoint) {\r\n if (this.comparePixel(pixel, pixels.getPixel(oldPoint.x, oldPoint.y), distXY, testPointView.distance(oldPoint)) < 0)\r\n oldPoint.setFrom(testPoint); // new hit is better, update location...\r\n } else {\r\n elmHits.set(pixel.elementId, testPoint.clone());\r\n }\r\n }\r\n }\r\n if (0 === elmHits.size)\r\n return;\r\n\r\n for (const elmPoint of elmHits.values()) {\r\n const pixel = pixels.getPixel(elmPoint.x, elmPoint.y);\r\n if (undefined === pixel || undefined === pixel.elementId)\r\n continue;\r\n\r\n const hitPointWorld = vp.getPixelDataWorldPoint({\r\n pixels,\r\n x: elmPoint.x,\r\n y: elmPoint.y,\r\n preserveModelDisplayTransforms: options.preserveModelDisplayTransforms,\r\n });\r\n\r\n if (!hitPointWorld)\r\n continue;\r\n\r\n const modelId = pixel.modelId;\r\n const hit = new HitDetail(pickPointWorld, vp, options.hitSource, hitPointWorld, pixel.elementId, this.getPixelPriority(pixel), testPointView.distance(elmPoint), pixel.distanceFraction, pixel.subCategoryId, pixel.geometryClass, modelId, pixel.iModel, pixel.tileId, pixel.isClassifier);\r\n this.hitList!.addHit(hit);\r\n\r\n if (this.hitList!.hits.length > options.maxHits)\r\n this.hitList!.hits.length = options.maxHits; // truncate array...\r\n }\r\n\r\n result = this.hitList!.length;\r\n }, !options.allowNonLocatable);\r\n\r\n return result;\r\n }\r\n\r\n public testHit(hit: HitDetail, vp: ScreenViewport, pickPointWorld: Point3d, pickRadiusView: number, options: LocateOptions): boolean {\r\n if (0 === this.doPick(vp, pickPointWorld, pickRadiusView, options))\r\n return false;\r\n\r\n return this.hitList!.hits.some((thisHit) => hit.isSameHit(thisHit));\r\n }\r\n}\r\n\r\n/**\r\n * @public\r\n * @extensions\r\n */\r\nexport class ElementLocateManager {\r\n public hitList?: HitList<HitDetail>;\r\n public currHit?: HitDetail;\r\n public readonly options = new LocateOptions();\r\n public readonly picker = new ElementPicker();\r\n\r\n /** get the full message key for a locate failure */\r\n public static getFailureMessageKey(key: string) { return `LocateFailure.${key}`; }\r\n public onInitialized() { }\r\n public get apertureInches() { return 0.11; }\r\n public get touchApertureInches() { return 0.22; }\r\n\r\n public clear(): void { this.setCurrHit(undefined); }\r\n public setHitList(list?: HitList<HitDetail>) { this.hitList = list; }\r\n public setCurrHit(hit?: HitDetail): void { this.currHit = hit; }\r\n public getNextHit(): HitDetail | undefined { return this.hitList ? this.hitList.getNextHit() : undefined; }\r\n\r\n /** return the current path from either the snapping logic or the pre-locating systems. */\r\n public getPreLocatedHit(): HitDetail | undefined {\r\n // NOTE: Check AccuSnap first as Tentative is used to build intersect snap. For normal snaps when a Tentative is active there should be no AccuSnap.\r\n let preLocated = IModelApp.accuSnap.getHitAndList(this);\r\n\r\n if (!preLocated && !!(preLocated = IModelApp.tentativePoint.getHitAndList(this))) {\r\n const vp = preLocated.viewport;\r\n this.picker.empty(); // Get new hit list at hit point; want reset to cycle hits using adjusted point location...\r\n this.picker.doPick(vp, preLocated.getPoint(), (vp.pixelsFromInches(this.apertureInches) / 2.0) + 1.5, this.options);\r\n this.setHitList(this.picker.getHitList(true));\r\n }\r\n\r\n if (this.hitList)\r\n this.hitList.resetCurrentHit();\r\n\r\n return preLocated;\r\n }\r\n\r\n public async filterHit(hit: HitDetail, _action: LocateAction, out: LocateResponse): Promise<LocateFilterStatus> {\r\n // Tools must opt-in to locate of transient geometry as it requires special treatment.\r\n if (!this.options.allowDecorations && !hit.isElementHit) {\r\n if (hit.isModelHit)\r\n out.reason = ElementLocateManager.getFailureMessageKey(\"RealityModel\");\r\n else if (hit.isMapHit)\r\n out.reason = ElementLocateManager.getFailureMessageKey(\"Map\");\r\n else\r\n out.reason = ElementLocateManager.getFailureMessageKey(\"Transient\");\r\n return LocateFilterStatus.Reject;\r\n }\r\n\r\n // Tools must opt-in to locate geometry from external iModels.\r\n if (!this.options.allowExternalIModels && hit.isExternalIModelHit) {\r\n out.reason = ElementLocateManager.getFailureMessageKey(\"ExternalIModel\");\r\n return LocateFilterStatus.Reject;\r\n }\r\n\r\n if (undefined !== hit.subCategoryId && !hit.isExternalIModelHit) {\r\n const appearance = hit.viewport.getSubCategoryAppearance(hit.subCategoryId);\r\n if (appearance.dontLocate) {\r\n out.reason = ElementLocateManager.getFailureMessageKey(\"NotLocatableSubCategory\");\r\n return LocateFilterStatus.Reject;\r\n }\r\n }\r\n\r\n const tool = IModelApp.toolAdmin.activeTool;\r\n if (!(tool && tool instanceof InteractiveTool))\r\n return LocateFilterStatus.Accept;\r\n\r\n const status = await tool.filterHit(hit, out);\r\n if (LocateFilterStatus.Reject === status)\r\n out.reason = ElementLocateManager.getFailureMessageKey(\"ByApp\");\r\n\r\n return status;\r\n }\r\n\r\n public initLocateOptions() { this.options.init(); }\r\n public initToolLocate() {\r\n this.initLocateOptions();\r\n this.clear();\r\n this.picker.empty();\r\n IModelApp.tentativePoint.clear(true);\r\n }\r\n\r\n private async _doLocate(response: LocateResponse, newSearch: boolean, testPoint: Point3d, vp: ScreenViewport | undefined, source: InputSource, filterHits: boolean): Promise<HitDetail | undefined> {\r\n if (!vp)\r\n return;\r\n\r\n // the \"newSearch\" flag indicates whether the caller wants us to conduct a new search at the testPoint, or just continue returning paths from the previous search.\r\n if (newSearch) {\r\n const hit = this.getPreLocatedHit();\r\n\r\n // if we're snapped to something, that path has the highest priority and becomes the active hit.\r\n if (hit) {\r\n if (!filterHits || LocateFilterStatus.Accept === await this.filterHit(hit, LocateAction.Identify, response))\r\n return hit;\r\n\r\n response = new LocateResponse(); // we have the reason and explanation we want.\r\n }\r\n\r\n this.picker.empty();\r\n this.picker.doPick(vp, testPoint, (vp.pixelsFromInches(InputSource.Touch === source ? this.touchApertureInches : this.apertureInches) / 2.0) + 1.5, this.options);\r\n\r\n const hitList = this.picker.getHitList(true);\r\n this.setHitList(hitList);\r\n }\r\n\r\n let newHit: HitDetail | undefined;\r\n while (undefined !== (newHit = this.getNextHit())) {\r\n if (!filterHits || LocateFilterStatus.Accept === await this.filterHit(newHit, LocateAction.Identify, response))\r\n return newHit;\r\n response = new LocateResponse(); // we have the reason and explanation we want.\r\n }\r\n\r\n return undefined;\r\n }\r\n\r\n public async doLocate(response: LocateResponse, newSearch: boolean, testPoint: Point3d, view: ScreenViewport | undefined, source: InputSource, filterHits = true): Promise<HitDetail | undefined> {\r\n response.reason = ElementLocateManager.getFailureMessageKey(\"NoElements\");\r\n response.explanation = \"\";\r\n\r\n const hit = await this._doLocate(response, newSearch, testPoint, view, source, filterHits);\r\n this.setCurrHit(hit);\r\n\r\n // if we found a hit, remove it from the list of remaining hits near the current search point.\r\n if (hit && this.hitList)\r\n this.hitList.removeHitsFrom(hit.sourceId);\r\n return hit;\r\n }\r\n}\r\n"]}
@@ -1 +1 @@
1
- {"version":3,"file":"SpatialViewState.d.ts","sourceRoot":"","sources":["../../src/SpatialViewState.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"SpatialViewState.d.ts","sourceRoot":"","sources":["../../src/SpatialViewState.ts"],"names":[],"mappings":"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"}
@@ -177,10 +177,12 @@ class SpatialViewState extends ViewState_1.ViewState3d {
177
177
  attachToViewport(args) {
178
178
  super.attachToViewport(args);
179
179
  this.registerModelSelectorListeners();
180
+ this._treeRefs.attachToViewport(args);
180
181
  }
181
182
  /** @internal */
182
183
  detachFromViewport() {
183
184
  super.detachFromViewport();
185
+ this._treeRefs.detachFromViewport();
184
186
  this.unregisterModelSelectorListeners();
185
187
  }
186
188
  /** Chiefly for debugging: change the "deactivated" state of one or more tile tree references. Deactivated references are
@@ -1 +1 @@
1
- {"version":3,"file":"SpatialViewState.js","sourceRoot":"","sources":["../../src/SpatialViewState.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 Views\r\n */\r\n\r\nimport { BeEvent, CompressedId64Set, Id64String } from \"@itwin/core-bentley\";\r\nimport { Constant, Matrix3d, Range3d, XYAndZ } from \"@itwin/core-geometry\";\r\nimport { AxisAlignedBox3d, HydrateViewStateRequestProps, HydrateViewStateResponseProps, SpatialViewDefinitionProps, ViewStateProps } from \"@itwin/core-common\";\r\nimport { AuxCoordSystemSpatialState, AuxCoordSystemState } from \"./AuxCoordSys\";\r\nimport { ModelSelectorState } from \"./ModelSelectorState\";\r\nimport { CategorySelectorState } from \"./CategorySelectorState\";\r\nimport { DisplayStyle3dState } from \"./DisplayStyleState\";\r\nimport { GeometricModel3dState, GeometricModelState } from \"./ModelState\";\r\nimport { SceneContext } from \"./ViewContext\";\r\nimport { IModelConnection } from \"./IModelConnection\";\r\nimport { AttachToViewportArgs, ViewState3d } from \"./ViewState\";\r\nimport { SpatialTileTreeReferences, TileTreeReference } from \"./tile/internal\";\r\n\r\n/** Defines a view of one or more SpatialModels.\r\n * The list of viewed models is stored in the ModelSelector.\r\n * @public\r\n * @extensions\r\n */\r\nexport class SpatialViewState extends ViewState3d {\r\n /** @internal */\r\n public static override get className() { return \"SpatialViewDefinition\"; }\r\n\r\n private readonly _treeRefs: SpatialTileTreeReferences;\r\n private _modelSelector: ModelSelectorState;\r\n private readonly _unregisterModelSelectorListeners: VoidFunction[] = [];\r\n\r\n /** An event raised when the set of models viewed by this view changes, *only* if the view is attached to a [[Viewport]].\r\n * @public\r\n */\r\n public readonly onViewedModelsChanged = new BeEvent<() => void>();\r\n\r\n public get modelSelector(): ModelSelectorState {\r\n return this._modelSelector;\r\n }\r\n\r\n public set modelSelector(selector: ModelSelectorState) {\r\n if (selector === this.modelSelector)\r\n return;\r\n\r\n const isAttached = this.isAttachedToViewport;\r\n this.unregisterModelSelectorListeners();\r\n\r\n this._modelSelector = selector;\r\n\r\n if (isAttached) {\r\n this.registerModelSelectorListeners();\r\n this.onViewedModelsChanged.raiseEvent();\r\n }\r\n }\r\n\r\n /** Create a new *blank* SpatialViewState. The returned SpatialViewState will nave non-persistent empty [[CategorySelectorState]] and [[ModelSelectorState]],\r\n * and a non-persistent [[DisplayStyle3dState]] with default values for all of its components. Generally after creating a blank SpatialViewState,\r\n * callers will modify the state to suit specific needs.\r\n * @param iModel The IModelConnection for the new SpatialViewState\r\n * @param origin The origin for the new SpatialViewState\r\n * @param extents The extents for the new SpatialViewState\r\n * @param rotation The rotation of the new SpatialViewState. If undefined, use top view.\r\n * @public\r\n */\r\n public static createBlank(iModel: IModelConnection, origin: XYAndZ, extents: XYAndZ, rotation?: Matrix3d): SpatialViewState {\r\n const blank = {} as any;\r\n const cat = new CategorySelectorState(blank, iModel);\r\n const modelSelectorState = new ModelSelectorState(blank, iModel);\r\n const displayStyleState = new DisplayStyle3dState(blank, iModel);\r\n const view = new this(blank, iModel, cat, displayStyleState, modelSelectorState);\r\n view.setOrigin(origin);\r\n view.setExtents(extents);\r\n if (undefined !== rotation)\r\n view.setRotation(rotation);\r\n return view;\r\n }\r\n\r\n public static override createFromProps(props: ViewStateProps, iModel: IModelConnection): SpatialViewState {\r\n const cat = new CategorySelectorState(props.categorySelectorProps, iModel);\r\n const displayStyleState = new DisplayStyle3dState(props.displayStyleProps, iModel);\r\n const modelSelectorState = new ModelSelectorState(props.modelSelectorProps!, iModel);\r\n return new this(props.viewDefinitionProps as SpatialViewDefinitionProps, iModel, cat, displayStyleState, modelSelectorState);\r\n }\r\n\r\n public override toProps(): ViewStateProps {\r\n const props = super.toProps();\r\n props.modelSelectorProps = this.modelSelector.toJSON();\r\n return props;\r\n }\r\n\r\n constructor(props: SpatialViewDefinitionProps, iModel: IModelConnection, arg3: CategorySelectorState, displayStyle: DisplayStyle3dState, modelSelector: ModelSelectorState) {\r\n super(props, iModel, arg3, displayStyle);\r\n this._modelSelector = modelSelector;\r\n if (arg3 instanceof SpatialViewState) // from clone\r\n this._modelSelector = arg3.modelSelector.clone();\r\n\r\n this._treeRefs = SpatialTileTreeReferences.create(this);\r\n }\r\n\r\n /** @internal */\r\n public override isSpatialView(): this is SpatialViewState { return true; }\r\n\r\n public override equals(other: this): boolean { return super.equals(other) && this.modelSelector.equals(other.modelSelector); }\r\n\r\n public override createAuxCoordSystem(acsName: string): AuxCoordSystemState { return AuxCoordSystemSpatialState.createNew(acsName, this.iModel); }\r\n public get defaultExtentLimits() { return { min: Constant.oneMillimeter, max: 3 * Constant.diameterOfEarth }; } // Increased max by 3X to support globe mode.\r\n\r\n /** @internal */\r\n public markModelSelectorChanged(): void {\r\n this._treeRefs.update();\r\n }\r\n\r\n /** Get world-space viewed extents based on the iModel's project extents.\r\n * @deprecated in 3.6. These extents are based on [[IModelConnection.displayedExtents]], which is deprecated. Consider using [[computeFitRange]] or [[getViewedExtents]] instead.\r\n */\r\n protected getDisplayedExtents(): AxisAlignedBox3d {\r\n /* eslint-disable-next-line deprecation/deprecation */\r\n const extents = Range3d.fromJSON<AxisAlignedBox3d>(this.iModel.displayedExtents);\r\n extents.scaleAboutCenterInPlace(1.0001); // projectExtents. lying smack up against the extents is not excluded by frustum...\r\n extents.extendRange(this.getGroundExtents());\r\n return extents;\r\n }\r\n\r\n private computeBaseExtents(): AxisAlignedBox3d {\r\n const extents = Range3d.fromJSON<AxisAlignedBox3d>(this.iModel.projectExtents);\r\n\r\n // Ensure geometry coincident with planes of the project extents is not clipped.\r\n extents.scaleAboutCenterInPlace(1.0001);\r\n\r\n // Ensure ground plane is not clipped, if it's being drawn.\r\n extents.extendRange(this.getGroundExtents());\r\n\r\n return extents;\r\n }\r\n\r\n /** Compute world-space range appropriate for fitting the view. If that range is null, use the displayed extents. */\r\n public computeFitRange(): AxisAlignedBox3d {\r\n // Fit to the union of the ranges of all loaded tile trees.\r\n const range = new Range3d();\r\n this.forEachTileTreeRef((ref) => {\r\n ref.unionFitRange(range);\r\n });\r\n\r\n // Fall back to the project extents if necessary.\r\n if (range.isNull)\r\n range.setFrom(this.computeBaseExtents());\r\n\r\n // Avoid ridiculously small extents.\r\n range.ensureMinLengths(1.0);\r\n\r\n return range;\r\n }\r\n\r\n public getViewedExtents(): AxisAlignedBox3d {\r\n // Encompass the project extents and ground plane.\r\n const extents = this.computeBaseExtents();\r\n\r\n // Include any tile trees that extend outside the project extents.\r\n extents.extendRange(this.computeFitRange());\r\n\r\n return extents;\r\n }\r\n\r\n public override toJSON(): SpatialViewDefinitionProps {\r\n const val = super.toJSON() as SpatialViewDefinitionProps;\r\n val.modelSelectorId = this.modelSelector.id;\r\n return val;\r\n }\r\n\r\n /** @internal */\r\n protected override preload(hydrateRequest: HydrateViewStateRequestProps): void {\r\n super.preload(hydrateRequest);\r\n const notLoaded = this.iModel.models.filterLoaded(this.modelSelector.models);\r\n if (undefined === notLoaded)\r\n return; // all requested models are already loaded\r\n hydrateRequest.notLoadedModelSelectorStateModels = CompressedId64Set.sortAndCompress(notLoaded);\r\n }\r\n\r\n /** @internal */\r\n protected override async postload(hydrateResponse: HydrateViewStateResponseProps): Promise<void> {\r\n const promises = [];\r\n promises.push(super.postload(hydrateResponse));\r\n if (hydrateResponse.modelSelectorStateModels !== undefined)\r\n promises.push(this.iModel.models.updateLoadedWithModelProps(hydrateResponse.modelSelectorStateModels));\r\n await Promise.all(promises);\r\n }\r\n\r\n public viewsModel(modelId: Id64String): boolean { return this.modelSelector.containsModel(modelId); }\r\n public clearViewedModels() { this.modelSelector.models.clear(); }\r\n public addViewedModel(id: Id64String) { this.modelSelector.addModels(id); }\r\n public removeViewedModel(id: Id64String) { this.modelSelector.dropModels(id); }\r\n\r\n public forEachModel(func: (model: GeometricModelState) => void) {\r\n for (const modelId of this.modelSelector.models) {\r\n const model = this.iModel.models.getLoaded(modelId);\r\n if (undefined !== model && undefined !== model.asGeometricModel3d)\r\n func(model as GeometricModel3dState);\r\n }\r\n }\r\n\r\n /** @internal */\r\n public override forEachModelTreeRef(func: (treeRef: TileTreeReference) => void): void {\r\n for (const ref of this._treeRefs)\r\n func(ref);\r\n }\r\n\r\n /** @internal */\r\n public override createScene(context: SceneContext): void {\r\n super.createScene(context);\r\n context.textureDrapes.forEach((drape) => drape.collectGraphics(context));\r\n context.viewport.target.updateSolarShadows(this.getDisplayStyle3d().wantShadows ? context : undefined);\r\n }\r\n\r\n /** @internal */\r\n public override attachToViewport(args: AttachToViewportArgs): void {\r\n super.attachToViewport(args);\r\n this.registerModelSelectorListeners();\r\n }\r\n\r\n /** @internal */\r\n public override detachFromViewport(): void {\r\n super.detachFromViewport();\r\n this.unregisterModelSelectorListeners();\r\n }\r\n\r\n /** Chiefly for debugging: change the \"deactivated\" state of one or more tile tree references. Deactivated references are\r\n * omitted when iterating the references, so e.g. their graphics are omitted from the scene.\r\n * @param modelIds The Ids of one or more models whose tile tree references are to be affected. If omitted, all models are affected.\r\n * @param deactivated True to deactivate the specified references, false to reactivate them, undefined to invert each one's current state.\r\n * @param which The references to be affected as either a broad category or one or more indices of animated references.\r\n * @internal\r\n */\r\n public setTileTreeReferencesDeactivated(modelIds: Id64String | Id64String[] | undefined, deactivated: boolean | undefined, which: \"all\" | \"animated\" | \"primary\" | \"section\" | number[]): void {\r\n this._treeRefs.setDeactivated(modelIds, deactivated, which);\r\n }\r\n\r\n private registerModelSelectorListeners(): void {\r\n const models = this.modelSelector.observableModels;\r\n const func = () => {\r\n this.markModelSelectorChanged();\r\n this.onViewedModelsChanged.raiseEvent();\r\n };\r\n\r\n this._unregisterModelSelectorListeners.push(models.onAdded.addListener(func));\r\n this._unregisterModelSelectorListeners.push(models.onDeleted.addListener(func));\r\n this._unregisterModelSelectorListeners.push(models.onCleared.addListener(func));\r\n }\r\n\r\n private unregisterModelSelectorListeners(): void {\r\n this._unregisterModelSelectorListeners.forEach((f) => f());\r\n this._unregisterModelSelectorListeners.length = 0;\r\n }\r\n}\r\n/** Defines a spatial view that displays geometry on the image plane using a parallel orthographic projection.\r\n * @public\r\n * @extensions\r\n */\r\nexport class OrthographicViewState extends SpatialViewState {\r\n /** @internal */\r\n public static override get className() { return \"OrthographicViewDefinition\"; }\r\n\r\n constructor(props: SpatialViewDefinitionProps, iModel: IModelConnection, categories: CategorySelectorState, displayStyle: DisplayStyle3dState, modelSelector: ModelSelectorState) { super(props, iModel, categories, displayStyle, modelSelector); }\r\n\r\n public override supportsCamera(): boolean { return false; }\r\n}\r\n"]}
1
+ {"version":3,"file":"SpatialViewState.js","sourceRoot":"","sources":["../../src/SpatialViewState.ts"],"names":[],"mappings":";AAAA;;;+FAG+F;AAC/F;;GAEG;;;AAEH,sDAA6E;AAC7E,wDAA2E;AAE3E,+CAAgF;AAChF,6DAA0D;AAC1D,mEAAgE;AAChE,2DAA0D;AAI1D,2CAAgE;AAChE,8CAA+E;AAE/E;;;;GAIG;AACH,MAAa,gBAAiB,SAAQ,uBAAW;IAmE/C,YAAY,KAAiC,EAAE,MAAwB,EAAE,IAA2B,EAAE,YAAiC,EAAE,aAAiC;QACxK,KAAK,CAAC,KAAK,EAAE,MAAM,EAAE,IAAI,EAAE,YAAY,CAAC,CAAC;QA9D1B,sCAAiC,GAAmB,EAAE,CAAC;QAExE;;WAEG;QACa,0BAAqB,GAAG,IAAI,sBAAO,EAAc,CAAC;QA0DhE,IAAI,CAAC,cAAc,GAAG,aAAa,CAAC;QACpC,IAAI,IAAI,YAAY,gBAAgB,EAAE,aAAa;YACjD,IAAI,CAAC,cAAc,GAAG,IAAI,CAAC,aAAa,CAAC,KAAK,EAAE,CAAC;QAEnD,IAAI,CAAC,SAAS,GAAG,oCAAyB,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC;IAC1D,CAAC;IAzED,gBAAgB;IACT,MAAM,KAAc,SAAS,KAAK,OAAO,uBAAuB,CAAC,CAAC,CAAC;IAW1E,IAAW,aAAa;QACtB,OAAO,IAAI,CAAC,cAAc,CAAC;IAC7B,CAAC;IAED,IAAW,aAAa,CAAC,QAA4B;QACnD,IAAI,QAAQ,KAAK,IAAI,CAAC,aAAa;YACjC,OAAO;QAET,MAAM,UAAU,GAAG,IAAI,CAAC,oBAAoB,CAAC;QAC7C,IAAI,CAAC,gCAAgC,EAAE,CAAC;QAExC,IAAI,CAAC,cAAc,GAAG,QAAQ,CAAC;QAE/B,IAAI,UAAU,EAAE;YACd,IAAI,CAAC,8BAA8B,EAAE,CAAC;YACtC,IAAI,CAAC,qBAAqB,CAAC,UAAU,EAAE,CAAC;SACzC;IACH,CAAC;IAED;;;;;;;;OAQG;IACI,MAAM,CAAC,WAAW,CAAC,MAAwB,EAAE,MAAc,EAAE,OAAe,EAAE,QAAmB;QACtG,MAAM,KAAK,GAAG,EAAS,CAAC;QACxB,MAAM,GAAG,GAAG,IAAI,6CAAqB,CAAC,KAAK,EAAE,MAAM,CAAC,CAAC;QACrD,MAAM,kBAAkB,GAAG,IAAI,uCAAkB,CAAC,KAAK,EAAE,MAAM,CAAC,CAAC;QACjE,MAAM,iBAAiB,GAAG,IAAI,uCAAmB,CAAC,KAAK,EAAE,MAAM,CAAC,CAAC;QACjE,MAAM,IAAI,GAAG,IAAI,IAAI,CAAC,KAAK,EAAE,MAAM,EAAE,GAAG,EAAE,iBAAiB,EAAE,kBAAkB,CAAC,CAAC;QACjF,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC;QACvB,IAAI,CAAC,UAAU,CAAC,OAAO,CAAC,CAAC;QACzB,IAAI,SAAS,KAAK,QAAQ;YACxB,IAAI,CAAC,WAAW,CAAC,QAAQ,CAAC,CAAC;QAC7B,OAAO,IAAI,CAAC;IACd,CAAC;IAEM,MAAM,CAAU,eAAe,CAAC,KAAqB,EAAE,MAAwB;QACpF,MAAM,GAAG,GAAG,IAAI,6CAAqB,CAAC,KAAK,CAAC,qBAAqB,EAAE,MAAM,CAAC,CAAC;QAC3E,MAAM,iBAAiB,GAAG,IAAI,uCAAmB,CAAC,KAAK,CAAC,iBAAiB,EAAE,MAAM,CAAC,CAAC;QACnF,MAAM,kBAAkB,GAAG,IAAI,uCAAkB,CAAC,KAAK,CAAC,kBAAmB,EAAE,MAAM,CAAC,CAAC;QACrF,OAAO,IAAI,IAAI,CAAC,KAAK,CAAC,mBAAiD,EAAE,MAAM,EAAE,GAAG,EAAE,iBAAiB,EAAE,kBAAkB,CAAC,CAAC;IAC/H,CAAC;IAEe,OAAO;QACrB,MAAM,KAAK,GAAG,KAAK,CAAC,OAAO,EAAE,CAAC;QAC9B,KAAK,CAAC,kBAAkB,GAAG,IAAI,CAAC,aAAa,CAAC,MAAM,EAAE,CAAC;QACvD,OAAO,KAAK,CAAC;IACf,CAAC;IAWD,gBAAgB;IACA,aAAa,KAA+B,OAAO,IAAI,CAAC,CAAC,CAAC;IAE1D,MAAM,CAAC,KAAW,IAAa,OAAO,KAAK,CAAC,MAAM,CAAC,KAAK,CAAC,IAAI,IAAI,CAAC,aAAa,CAAC,MAAM,CAAC,KAAK,CAAC,aAAa,CAAC,CAAC,CAAC,CAAC;IAE9G,oBAAoB,CAAC,OAAe,IAAyB,OAAO,wCAA0B,CAAC,SAAS,CAAC,OAAO,EAAE,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC;IACjJ,IAAW,mBAAmB,KAAK,OAAO,EAAE,GAAG,EAAE,wBAAQ,CAAC,aAAa,EAAE,GAAG,EAAE,CAAC,GAAG,wBAAQ,CAAC,eAAe,EAAE,CAAC,CAAC,CAAC,CAAC,6CAA6C;IAE7J,gBAAgB;IACT,wBAAwB;QAC7B,IAAI,CAAC,SAAS,CAAC,MAAM,EAAE,CAAC;IAC1B,CAAC;IAED;;OAEG;IACO,mBAAmB;QAC3B,sDAAsD;QACtD,MAAM,OAAO,GAAG,uBAAO,CAAC,QAAQ,CAAmB,IAAI,CAAC,MAAM,CAAC,gBAAgB,CAAC,CAAC;QACjF,OAAO,CAAC,uBAAuB,CAAC,MAAM,CAAC,CAAC,CAAC,mFAAmF;QAC5H,OAAO,CAAC,WAAW,CAAC,IAAI,CAAC,gBAAgB,EAAE,CAAC,CAAC;QAC7C,OAAO,OAAO,CAAC;IACjB,CAAC;IAEO,kBAAkB;QACxB,MAAM,OAAO,GAAG,uBAAO,CAAC,QAAQ,CAAmB,IAAI,CAAC,MAAM,CAAC,cAAc,CAAC,CAAC;QAE/E,gFAAgF;QAChF,OAAO,CAAC,uBAAuB,CAAC,MAAM,CAAC,CAAC;QAExC,2DAA2D;QAC3D,OAAO,CAAC,WAAW,CAAC,IAAI,CAAC,gBAAgB,EAAE,CAAC,CAAC;QAE7C,OAAO,OAAO,CAAC;IACjB,CAAC;IAED,oHAAoH;IAC7G,eAAe;QACpB,2DAA2D;QAC3D,MAAM,KAAK,GAAG,IAAI,uBAAO,EAAE,CAAC;QAC5B,IAAI,CAAC,kBAAkB,CAAC,CAAC,GAAG,EAAE,EAAE;YAC9B,GAAG,CAAC,aAAa,CAAC,KAAK,CAAC,CAAC;QAC3B,CAAC,CAAC,CAAC;QAEH,iDAAiD;QACjD,IAAI,KAAK,CAAC,MAAM;YACd,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,kBAAkB,EAAE,CAAC,CAAC;QAE3C,oCAAoC;QACpC,KAAK,CAAC,gBAAgB,CAAC,GAAG,CAAC,CAAC;QAE5B,OAAO,KAAK,CAAC;IACf,CAAC;IAEM,gBAAgB;QACrB,kDAAkD;QAClD,MAAM,OAAO,GAAG,IAAI,CAAC,kBAAkB,EAAE,CAAC;QAE1C,kEAAkE;QAClE,OAAO,CAAC,WAAW,CAAC,IAAI,CAAC,eAAe,EAAE,CAAC,CAAC;QAE5C,OAAO,OAAO,CAAC;IACjB,CAAC;IAEe,MAAM;QACpB,MAAM,GAAG,GAAG,KAAK,CAAC,MAAM,EAAgC,CAAC;QACzD,GAAG,CAAC,eAAe,GAAG,IAAI,CAAC,aAAa,CAAC,EAAE,CAAC;QAC5C,OAAO,GAAG,CAAC;IACb,CAAC;IAED,gBAAgB;IACG,OAAO,CAAC,cAA4C;QACrE,KAAK,CAAC,OAAO,CAAC,cAAc,CAAC,CAAC;QAC9B,MAAM,SAAS,GAAG,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,YAAY,CAAC,IAAI,CAAC,aAAa,CAAC,MAAM,CAAC,CAAC;QAC7E,IAAI,SAAS,KAAK,SAAS;YACzB,OAAO,CAAC,0CAA0C;QACpD,cAAc,CAAC,iCAAiC,GAAG,gCAAiB,CAAC,eAAe,CAAC,SAAS,CAAC,CAAC;IAClG,CAAC;IAED,gBAAgB;IACG,KAAK,CAAC,QAAQ,CAAC,eAA8C;QAC9E,MAAM,QAAQ,GAAG,EAAE,CAAC;QACpB,QAAQ,CAAC,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,eAAe,CAAC,CAAC,CAAC;QAC/C,IAAI,eAAe,CAAC,wBAAwB,KAAK,SAAS;YACxD,QAAQ,CAAC,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,0BAA0B,CAAC,eAAe,CAAC,wBAAwB,CAAC,CAAC,CAAC;QACzG,MAAM,OAAO,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC;IAC9B,CAAC;IAEM,UAAU,CAAC,OAAmB,IAAa,OAAO,IAAI,CAAC,aAAa,CAAC,aAAa,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC;IAC9F,iBAAiB,KAAK,IAAI,CAAC,aAAa,CAAC,MAAM,CAAC,KAAK,EAAE,CAAC,CAAC,CAAC;IAC1D,cAAc,CAAC,EAAc,IAAI,IAAI,CAAC,aAAa,CAAC,SAAS,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC;IACpE,iBAAiB,CAAC,EAAc,IAAI,IAAI,CAAC,aAAa,CAAC,UAAU,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC;IAExE,YAAY,CAAC,IAA0C;QAC5D,KAAK,MAAM,OAAO,IAAI,IAAI,CAAC,aAAa,CAAC,MAAM,EAAE;YAC/C,MAAM,KAAK,GAAG,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,SAAS,CAAC,OAAO,CAAC,CAAC;YACpD,IAAI,SAAS,KAAK,KAAK,IAAI,SAAS,KAAK,KAAK,CAAC,kBAAkB;gBAC/D,IAAI,CAAC,KAA8B,CAAC,CAAC;SACxC;IACH,CAAC;IAED,gBAAgB;IACA,mBAAmB,CAAC,IAA0C;QAC5E,KAAK,MAAM,GAAG,IAAI,IAAI,CAAC,SAAS;YAC9B,IAAI,CAAC,GAAG,CAAC,CAAC;IACd,CAAC;IAED,gBAAgB;IACA,WAAW,CAAC,OAAqB;QAC/C,KAAK,CAAC,WAAW,CAAC,OAAO,CAAC,CAAC;QAC3B,OAAO,CAAC,aAAa,CAAC,OAAO,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,KAAK,CAAC,eAAe,CAAC,OAAO,CAAC,CAAC,CAAC;QACzE,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAC,kBAAkB,CAAC,IAAI,CAAC,iBAAiB,EAAE,CAAC,WAAW,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC;IACzG,CAAC;IAED,gBAAgB;IACA,gBAAgB,CAAC,IAA0B;QACzD,KAAK,CAAC,gBAAgB,CAAC,IAAI,CAAC,CAAC;QAC7B,IAAI,CAAC,8BAA8B,EAAE,CAAC;QACtC,IAAI,CAAC,SAAS,CAAC,gBAAgB,CAAC,IAAI,CAAC,CAAC;IACxC,CAAC;IAED,gBAAgB;IACA,kBAAkB;QAChC,KAAK,CAAC,kBAAkB,EAAE,CAAC;QAC3B,IAAI,CAAC,SAAS,CAAC,kBAAkB,EAAE,CAAC;QACpC,IAAI,CAAC,gCAAgC,EAAE,CAAC;IAC1C,CAAC;IAED;;;;;;OAMG;IACI,gCAAgC,CAAC,QAA+C,EAAE,WAAgC,EAAE,KAA4D;QACrL,IAAI,CAAC,SAAS,CAAC,cAAc,CAAC,QAAQ,EAAE,WAAW,EAAE,KAAK,CAAC,CAAC;IAC9D,CAAC;IAEO,8BAA8B;QACpC,MAAM,MAAM,GAAG,IAAI,CAAC,aAAa,CAAC,gBAAgB,CAAC;QACnD,MAAM,IAAI,GAAG,GAAG,EAAE;YAChB,IAAI,CAAC,wBAAwB,EAAE,CAAC;YAChC,IAAI,CAAC,qBAAqB,CAAC,UAAU,EAAE,CAAC;QAC1C,CAAC,CAAC;QAEF,IAAI,CAAC,iCAAiC,CAAC,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC,WAAW,CAAC,IAAI,CAAC,CAAC,CAAC;QAC9E,IAAI,CAAC,iCAAiC,CAAC,IAAI,CAAC,MAAM,CAAC,SAAS,CAAC,WAAW,CAAC,IAAI,CAAC,CAAC,CAAC;QAChF,IAAI,CAAC,iCAAiC,CAAC,IAAI,CAAC,MAAM,CAAC,SAAS,CAAC,WAAW,CAAC,IAAI,CAAC,CAAC,CAAC;IAClF,CAAC;IAEO,gCAAgC;QACtC,IAAI,CAAC,iCAAiC,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC;QAC3D,IAAI,CAAC,iCAAiC,CAAC,MAAM,GAAG,CAAC,CAAC;IACpD,CAAC;CACF;AAvOD,4CAuOC;AACD;;;GAGG;AACH,MAAa,qBAAsB,SAAQ,gBAAgB;IACzD,gBAAgB;IACT,MAAM,KAAc,SAAS,KAAK,OAAO,4BAA4B,CAAC,CAAC,CAAC;IAE/E,YAAY,KAAiC,EAAE,MAAwB,EAAE,UAAiC,EAAE,YAAiC,EAAE,aAAiC,IAAI,KAAK,CAAC,KAAK,EAAE,MAAM,EAAE,UAAU,EAAE,YAAY,EAAE,aAAa,CAAC,CAAC,CAAC,CAAC;IAEpO,cAAc,KAAc,OAAO,KAAK,CAAC,CAAC,CAAC;CAC5D;AAPD,sDAOC","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 Views\r\n */\r\n\r\nimport { BeEvent, CompressedId64Set, Id64String } from \"@itwin/core-bentley\";\r\nimport { Constant, Matrix3d, Range3d, XYAndZ } from \"@itwin/core-geometry\";\r\nimport { AxisAlignedBox3d, HydrateViewStateRequestProps, HydrateViewStateResponseProps, SpatialViewDefinitionProps, ViewStateProps } from \"@itwin/core-common\";\r\nimport { AuxCoordSystemSpatialState, AuxCoordSystemState } from \"./AuxCoordSys\";\r\nimport { ModelSelectorState } from \"./ModelSelectorState\";\r\nimport { CategorySelectorState } from \"./CategorySelectorState\";\r\nimport { DisplayStyle3dState } from \"./DisplayStyleState\";\r\nimport { GeometricModel3dState, GeometricModelState } from \"./ModelState\";\r\nimport { SceneContext } from \"./ViewContext\";\r\nimport { IModelConnection } from \"./IModelConnection\";\r\nimport { AttachToViewportArgs, ViewState3d } from \"./ViewState\";\r\nimport { SpatialTileTreeReferences, TileTreeReference } from \"./tile/internal\";\r\n\r\n/** Defines a view of one or more SpatialModels.\r\n * The list of viewed models is stored in the ModelSelector.\r\n * @public\r\n * @extensions\r\n */\r\nexport class SpatialViewState extends ViewState3d {\r\n /** @internal */\r\n public static override get className() { return \"SpatialViewDefinition\"; }\r\n\r\n private readonly _treeRefs: SpatialTileTreeReferences;\r\n private _modelSelector: ModelSelectorState;\r\n private readonly _unregisterModelSelectorListeners: VoidFunction[] = [];\r\n\r\n /** An event raised when the set of models viewed by this view changes, *only* if the view is attached to a [[Viewport]].\r\n * @public\r\n */\r\n public readonly onViewedModelsChanged = new BeEvent<() => void>();\r\n\r\n public get modelSelector(): ModelSelectorState {\r\n return this._modelSelector;\r\n }\r\n\r\n public set modelSelector(selector: ModelSelectorState) {\r\n if (selector === this.modelSelector)\r\n return;\r\n\r\n const isAttached = this.isAttachedToViewport;\r\n this.unregisterModelSelectorListeners();\r\n\r\n this._modelSelector = selector;\r\n\r\n if (isAttached) {\r\n this.registerModelSelectorListeners();\r\n this.onViewedModelsChanged.raiseEvent();\r\n }\r\n }\r\n\r\n /** Create a new *blank* SpatialViewState. The returned SpatialViewState will nave non-persistent empty [[CategorySelectorState]] and [[ModelSelectorState]],\r\n * and a non-persistent [[DisplayStyle3dState]] with default values for all of its components. Generally after creating a blank SpatialViewState,\r\n * callers will modify the state to suit specific needs.\r\n * @param iModel The IModelConnection for the new SpatialViewState\r\n * @param origin The origin for the new SpatialViewState\r\n * @param extents The extents for the new SpatialViewState\r\n * @param rotation The rotation of the new SpatialViewState. If undefined, use top view.\r\n * @public\r\n */\r\n public static createBlank(iModel: IModelConnection, origin: XYAndZ, extents: XYAndZ, rotation?: Matrix3d): SpatialViewState {\r\n const blank = {} as any;\r\n const cat = new CategorySelectorState(blank, iModel);\r\n const modelSelectorState = new ModelSelectorState(blank, iModel);\r\n const displayStyleState = new DisplayStyle3dState(blank, iModel);\r\n const view = new this(blank, iModel, cat, displayStyleState, modelSelectorState);\r\n view.setOrigin(origin);\r\n view.setExtents(extents);\r\n if (undefined !== rotation)\r\n view.setRotation(rotation);\r\n return view;\r\n }\r\n\r\n public static override createFromProps(props: ViewStateProps, iModel: IModelConnection): SpatialViewState {\r\n const cat = new CategorySelectorState(props.categorySelectorProps, iModel);\r\n const displayStyleState = new DisplayStyle3dState(props.displayStyleProps, iModel);\r\n const modelSelectorState = new ModelSelectorState(props.modelSelectorProps!, iModel);\r\n return new this(props.viewDefinitionProps as SpatialViewDefinitionProps, iModel, cat, displayStyleState, modelSelectorState);\r\n }\r\n\r\n public override toProps(): ViewStateProps {\r\n const props = super.toProps();\r\n props.modelSelectorProps = this.modelSelector.toJSON();\r\n return props;\r\n }\r\n\r\n constructor(props: SpatialViewDefinitionProps, iModel: IModelConnection, arg3: CategorySelectorState, displayStyle: DisplayStyle3dState, modelSelector: ModelSelectorState) {\r\n super(props, iModel, arg3, displayStyle);\r\n this._modelSelector = modelSelector;\r\n if (arg3 instanceof SpatialViewState) // from clone\r\n this._modelSelector = arg3.modelSelector.clone();\r\n\r\n this._treeRefs = SpatialTileTreeReferences.create(this);\r\n }\r\n\r\n /** @internal */\r\n public override isSpatialView(): this is SpatialViewState { return true; }\r\n\r\n public override equals(other: this): boolean { return super.equals(other) && this.modelSelector.equals(other.modelSelector); }\r\n\r\n public override createAuxCoordSystem(acsName: string): AuxCoordSystemState { return AuxCoordSystemSpatialState.createNew(acsName, this.iModel); }\r\n public get defaultExtentLimits() { return { min: Constant.oneMillimeter, max: 3 * Constant.diameterOfEarth }; } // Increased max by 3X to support globe mode.\r\n\r\n /** @internal */\r\n public markModelSelectorChanged(): void {\r\n this._treeRefs.update();\r\n }\r\n\r\n /** Get world-space viewed extents based on the iModel's project extents.\r\n * @deprecated in 3.6. These extents are based on [[IModelConnection.displayedExtents]], which is deprecated. Consider using [[computeFitRange]] or [[getViewedExtents]] instead.\r\n */\r\n protected getDisplayedExtents(): AxisAlignedBox3d {\r\n /* eslint-disable-next-line deprecation/deprecation */\r\n const extents = Range3d.fromJSON<AxisAlignedBox3d>(this.iModel.displayedExtents);\r\n extents.scaleAboutCenterInPlace(1.0001); // projectExtents. lying smack up against the extents is not excluded by frustum...\r\n extents.extendRange(this.getGroundExtents());\r\n return extents;\r\n }\r\n\r\n private computeBaseExtents(): AxisAlignedBox3d {\r\n const extents = Range3d.fromJSON<AxisAlignedBox3d>(this.iModel.projectExtents);\r\n\r\n // Ensure geometry coincident with planes of the project extents is not clipped.\r\n extents.scaleAboutCenterInPlace(1.0001);\r\n\r\n // Ensure ground plane is not clipped, if it's being drawn.\r\n extents.extendRange(this.getGroundExtents());\r\n\r\n return extents;\r\n }\r\n\r\n /** Compute world-space range appropriate for fitting the view. If that range is null, use the displayed extents. */\r\n public computeFitRange(): AxisAlignedBox3d {\r\n // Fit to the union of the ranges of all loaded tile trees.\r\n const range = new Range3d();\r\n this.forEachTileTreeRef((ref) => {\r\n ref.unionFitRange(range);\r\n });\r\n\r\n // Fall back to the project extents if necessary.\r\n if (range.isNull)\r\n range.setFrom(this.computeBaseExtents());\r\n\r\n // Avoid ridiculously small extents.\r\n range.ensureMinLengths(1.0);\r\n\r\n return range;\r\n }\r\n\r\n public getViewedExtents(): AxisAlignedBox3d {\r\n // Encompass the project extents and ground plane.\r\n const extents = this.computeBaseExtents();\r\n\r\n // Include any tile trees that extend outside the project extents.\r\n extents.extendRange(this.computeFitRange());\r\n\r\n return extents;\r\n }\r\n\r\n public override toJSON(): SpatialViewDefinitionProps {\r\n const val = super.toJSON() as SpatialViewDefinitionProps;\r\n val.modelSelectorId = this.modelSelector.id;\r\n return val;\r\n }\r\n\r\n /** @internal */\r\n protected override preload(hydrateRequest: HydrateViewStateRequestProps): void {\r\n super.preload(hydrateRequest);\r\n const notLoaded = this.iModel.models.filterLoaded(this.modelSelector.models);\r\n if (undefined === notLoaded)\r\n return; // all requested models are already loaded\r\n hydrateRequest.notLoadedModelSelectorStateModels = CompressedId64Set.sortAndCompress(notLoaded);\r\n }\r\n\r\n /** @internal */\r\n protected override async postload(hydrateResponse: HydrateViewStateResponseProps): Promise<void> {\r\n const promises = [];\r\n promises.push(super.postload(hydrateResponse));\r\n if (hydrateResponse.modelSelectorStateModels !== undefined)\r\n promises.push(this.iModel.models.updateLoadedWithModelProps(hydrateResponse.modelSelectorStateModels));\r\n await Promise.all(promises);\r\n }\r\n\r\n public viewsModel(modelId: Id64String): boolean { return this.modelSelector.containsModel(modelId); }\r\n public clearViewedModels() { this.modelSelector.models.clear(); }\r\n public addViewedModel(id: Id64String) { this.modelSelector.addModels(id); }\r\n public removeViewedModel(id: Id64String) { this.modelSelector.dropModels(id); }\r\n\r\n public forEachModel(func: (model: GeometricModelState) => void) {\r\n for (const modelId of this.modelSelector.models) {\r\n const model = this.iModel.models.getLoaded(modelId);\r\n if (undefined !== model && undefined !== model.asGeometricModel3d)\r\n func(model as GeometricModel3dState);\r\n }\r\n }\r\n\r\n /** @internal */\r\n public override forEachModelTreeRef(func: (treeRef: TileTreeReference) => void): void {\r\n for (const ref of this._treeRefs)\r\n func(ref);\r\n }\r\n\r\n /** @internal */\r\n public override createScene(context: SceneContext): void {\r\n super.createScene(context);\r\n context.textureDrapes.forEach((drape) => drape.collectGraphics(context));\r\n context.viewport.target.updateSolarShadows(this.getDisplayStyle3d().wantShadows ? context : undefined);\r\n }\r\n\r\n /** @internal */\r\n public override attachToViewport(args: AttachToViewportArgs): void {\r\n super.attachToViewport(args);\r\n this.registerModelSelectorListeners();\r\n this._treeRefs.attachToViewport(args);\r\n }\r\n\r\n /** @internal */\r\n public override detachFromViewport(): void {\r\n super.detachFromViewport();\r\n this._treeRefs.detachFromViewport();\r\n this.unregisterModelSelectorListeners();\r\n }\r\n\r\n /** Chiefly for debugging: change the \"deactivated\" state of one or more tile tree references. Deactivated references are\r\n * omitted when iterating the references, so e.g. their graphics are omitted from the scene.\r\n * @param modelIds The Ids of one or more models whose tile tree references are to be affected. If omitted, all models are affected.\r\n * @param deactivated True to deactivate the specified references, false to reactivate them, undefined to invert each one's current state.\r\n * @param which The references to be affected as either a broad category or one or more indices of animated references.\r\n * @internal\r\n */\r\n public setTileTreeReferencesDeactivated(modelIds: Id64String | Id64String[] | undefined, deactivated: boolean | undefined, which: \"all\" | \"animated\" | \"primary\" | \"section\" | number[]): void {\r\n this._treeRefs.setDeactivated(modelIds, deactivated, which);\r\n }\r\n\r\n private registerModelSelectorListeners(): void {\r\n const models = this.modelSelector.observableModels;\r\n const func = () => {\r\n this.markModelSelectorChanged();\r\n this.onViewedModelsChanged.raiseEvent();\r\n };\r\n\r\n this._unregisterModelSelectorListeners.push(models.onAdded.addListener(func));\r\n this._unregisterModelSelectorListeners.push(models.onDeleted.addListener(func));\r\n this._unregisterModelSelectorListeners.push(models.onCleared.addListener(func));\r\n }\r\n\r\n private unregisterModelSelectorListeners(): void {\r\n this._unregisterModelSelectorListeners.forEach((f) => f());\r\n this._unregisterModelSelectorListeners.length = 0;\r\n }\r\n}\r\n/** Defines a spatial view that displays geometry on the image plane using a parallel orthographic projection.\r\n * @public\r\n * @extensions\r\n */\r\nexport class OrthographicViewState extends SpatialViewState {\r\n /** @internal */\r\n public static override get className() { return \"OrthographicViewDefinition\"; }\r\n\r\n constructor(props: SpatialViewDefinitionProps, iModel: IModelConnection, categories: CategorySelectorState, displayStyle: DisplayStyle3dState, modelSelector: ModelSelectorState) { super(props, iModel, categories, displayStyle, modelSelector); }\r\n\r\n public override supportsCamera(): boolean { return false; }\r\n}\r\n"]}
@@ -121,6 +121,8 @@ export interface AttachToViewportArgs {
121
121
  * and likely to break existing code -- so instead the SheetViewState specifies this transform to be consumed by DrawingViewState.attachToViewport.
122
122
  */
123
123
  drawingToSheetTransform?: Transform;
124
+ /** A function that can be invoked to notify the viewport that its feature symbology overrides should be recreated. */
125
+ invalidateSymbologyOverrides: () => void;
124
126
  }
125
127
  /** The front-end state of a [[ViewDefinition]] element.
126
128
  * A ViewState is typically associated with a [[Viewport]] to display the contents of the view on the screen. A ViewState being displayed by a Viewport is considered to be
@@ -1 +1 @@
1
- {"version":3,"file":"ViewState.d.ts","sourceRoot":"","sources":["../../src/ViewState.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"ViewState.d.ts","sourceRoot":"","sources":["../../src/ViewState.ts"],"names":[],"mappings":"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"}