@itwin/core-frontend 4.4.0-dev.8 → 4.5.0-dev.0

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 (204) hide show
  1. package/CHANGELOG.md +8 -1
  2. package/lib/cjs/DisplayStyleState.d.ts +3 -0
  3. package/lib/cjs/DisplayStyleState.d.ts.map +1 -1
  4. package/lib/cjs/DisplayStyleState.js +10 -0
  5. package/lib/cjs/DisplayStyleState.js.map +1 -1
  6. package/lib/cjs/Viewport.d.ts +5 -0
  7. package/lib/cjs/Viewport.d.ts.map +1 -1
  8. package/lib/cjs/Viewport.js +6 -0
  9. package/lib/cjs/Viewport.js.map +1 -1
  10. package/lib/cjs/common/gltf/GltfSchema.d.ts +20 -3
  11. package/lib/cjs/common/gltf/GltfSchema.d.ts.map +1 -1
  12. package/lib/cjs/common/gltf/GltfSchema.js.map +1 -1
  13. package/lib/cjs/common/imdl/ImdlModel.d.ts +15 -1
  14. package/lib/cjs/common/imdl/ImdlModel.d.ts.map +1 -1
  15. package/lib/cjs/common/imdl/ImdlModel.js +11 -3
  16. package/lib/cjs/common/imdl/ImdlModel.js.map +1 -1
  17. package/lib/cjs/common/imdl/ParseImdlDocument.d.ts +3 -1
  18. package/lib/cjs/common/imdl/ParseImdlDocument.d.ts.map +1 -1
  19. package/lib/cjs/common/imdl/ParseImdlDocument.js +66 -11
  20. package/lib/cjs/common/imdl/ParseImdlDocument.js.map +1 -1
  21. package/lib/cjs/render/GraphicBranch.d.ts +10 -0
  22. package/lib/cjs/render/GraphicBranch.d.ts.map +1 -1
  23. package/lib/cjs/render/GraphicBranch.js.map +1 -1
  24. package/lib/cjs/render/webgl/BranchState.d.ts +2 -0
  25. package/lib/cjs/render/webgl/BranchState.d.ts.map +1 -1
  26. package/lib/cjs/render/webgl/BranchState.js +2 -0
  27. package/lib/cjs/render/webgl/BranchState.js.map +1 -1
  28. package/lib/cjs/render/webgl/Graphic.d.ts.map +1 -1
  29. package/lib/cjs/render/webgl/Graphic.js +3 -0
  30. package/lib/cjs/render/webgl/Graphic.js.map +1 -1
  31. package/lib/cjs/render/webgl/InstancedGeometry.d.ts +1 -0
  32. package/lib/cjs/render/webgl/InstancedGeometry.d.ts.map +1 -1
  33. package/lib/cjs/render/webgl/InstancedGeometry.js +1 -0
  34. package/lib/cjs/render/webgl/InstancedGeometry.js.map +1 -1
  35. package/lib/cjs/request/utils.d.ts +18 -0
  36. package/lib/cjs/request/utils.d.ts.map +1 -0
  37. package/lib/cjs/request/utils.js +45 -0
  38. package/lib/cjs/request/utils.js.map +1 -0
  39. package/lib/cjs/tile/BatchedTileIdMap.d.ts +1 -2
  40. package/lib/cjs/tile/BatchedTileIdMap.d.ts.map +1 -1
  41. package/lib/cjs/tile/BatchedTileIdMap.js +3 -3
  42. package/lib/cjs/tile/BatchedTileIdMap.js.map +1 -1
  43. package/lib/cjs/tile/GltfReader.d.ts +4 -1
  44. package/lib/cjs/tile/GltfReader.d.ts.map +1 -1
  45. package/lib/cjs/tile/GltfReader.js +125 -26
  46. package/lib/cjs/tile/GltfReader.js.map +1 -1
  47. package/lib/cjs/tile/ImdlDecoder.d.ts +7 -1
  48. package/lib/cjs/tile/ImdlDecoder.d.ts.map +1 -1
  49. package/lib/cjs/tile/ImdlDecoder.js.map +1 -1
  50. package/lib/cjs/tile/ImdlGraphicsCreator.d.ts.map +1 -1
  51. package/lib/cjs/tile/ImdlGraphicsCreator.js +28 -17
  52. package/lib/cjs/tile/ImdlGraphicsCreator.js.map +1 -1
  53. package/lib/cjs/tile/ImdlReader.d.ts +2 -1
  54. package/lib/cjs/tile/ImdlReader.d.ts.map +1 -1
  55. package/lib/cjs/tile/ImdlReader.js +1 -0
  56. package/lib/cjs/tile/ImdlReader.js.map +1 -1
  57. package/lib/cjs/tile/RealityModelTileTree.d.ts.map +1 -1
  58. package/lib/cjs/tile/RealityModelTileTree.js +2 -3
  59. package/lib/cjs/tile/RealityModelTileTree.js.map +1 -1
  60. package/lib/cjs/tile/RealityTileTree.d.ts +31 -0
  61. package/lib/cjs/tile/RealityTileTree.d.ts.map +1 -1
  62. package/lib/cjs/tile/RealityTileTree.js +6 -0
  63. package/lib/cjs/tile/RealityTileTree.js.map +1 -1
  64. package/lib/cjs/tile/TileDrawArgs.d.ts +6 -0
  65. package/lib/cjs/tile/TileDrawArgs.d.ts.map +1 -1
  66. package/lib/cjs/tile/TileDrawArgs.js +7 -0
  67. package/lib/cjs/tile/TileDrawArgs.js.map +1 -1
  68. package/lib/cjs/tile/TileTreeReference.d.ts +2 -0
  69. package/lib/cjs/tile/TileTreeReference.d.ts.map +1 -1
  70. package/lib/cjs/tile/TileTreeReference.js +5 -0
  71. package/lib/cjs/tile/TileTreeReference.js.map +1 -1
  72. package/lib/cjs/tile/map/ArcGISTileMap.d.ts +6 -2
  73. package/lib/cjs/tile/map/ArcGISTileMap.d.ts.map +1 -1
  74. package/lib/cjs/tile/map/ArcGISTileMap.js +127 -69
  75. package/lib/cjs/tile/map/ArcGISTileMap.js.map +1 -1
  76. package/lib/cjs/tile/map/ArcGisUtilities.d.ts.map +1 -1
  77. package/lib/cjs/tile/map/ArcGisUtilities.js +5 -0
  78. package/lib/cjs/tile/map/ArcGisUtilities.js.map +1 -1
  79. package/lib/cjs/tile/map/ImageryProviders/ArcGISImageryProvider.d.ts.map +1 -1
  80. package/lib/cjs/tile/map/ImageryProviders/ArcGISImageryProvider.js +61 -39
  81. package/lib/cjs/tile/map/ImageryProviders/ArcGISImageryProvider.js.map +1 -1
  82. package/lib/cjs/tile/map/ImageryProviders/ArcGISMapLayerImageryProvider.js +1 -1
  83. package/lib/cjs/tile/map/ImageryProviders/ArcGISMapLayerImageryProvider.js.map +1 -1
  84. package/lib/cjs/tile/map/MapLayerImageryProvider.d.ts +6 -0
  85. package/lib/cjs/tile/map/MapLayerImageryProvider.d.ts.map +1 -1
  86. package/lib/cjs/tile/map/MapLayerImageryProvider.js +47 -7
  87. package/lib/cjs/tile/map/MapLayerImageryProvider.js.map +1 -1
  88. package/lib/cjs/tile/map/WmsCapabilities.d.ts.map +1 -1
  89. package/lib/cjs/tile/map/WmsCapabilities.js +1 -15
  90. package/lib/cjs/tile/map/WmsCapabilities.js.map +1 -1
  91. package/lib/cjs/tile/map/WmsUtilities.d.ts +7 -0
  92. package/lib/cjs/tile/map/WmsUtilities.d.ts.map +1 -1
  93. package/lib/cjs/tile/map/WmsUtilities.js +22 -0
  94. package/lib/cjs/tile/map/WmsUtilities.js.map +1 -1
  95. package/lib/cjs/tile/map/WmtsCapabilities.d.ts.map +1 -1
  96. package/lib/cjs/tile/map/WmtsCapabilities.js +2 -16
  97. package/lib/cjs/tile/map/WmtsCapabilities.js.map +1 -1
  98. package/lib/cjs/tools/SelectTool.d.ts +1 -0
  99. package/lib/cjs/tools/SelectTool.d.ts.map +1 -1
  100. package/lib/cjs/tools/SelectTool.js +19 -13
  101. package/lib/cjs/tools/SelectTool.js.map +1 -1
  102. package/lib/esm/DisplayStyleState.d.ts +3 -0
  103. package/lib/esm/DisplayStyleState.d.ts.map +1 -1
  104. package/lib/esm/DisplayStyleState.js +10 -0
  105. package/lib/esm/DisplayStyleState.js.map +1 -1
  106. package/lib/esm/Viewport.d.ts +5 -0
  107. package/lib/esm/Viewport.d.ts.map +1 -1
  108. package/lib/esm/Viewport.js +6 -0
  109. package/lib/esm/Viewport.js.map +1 -1
  110. package/lib/esm/common/gltf/GltfSchema.d.ts +20 -3
  111. package/lib/esm/common/gltf/GltfSchema.d.ts.map +1 -1
  112. package/lib/esm/common/gltf/GltfSchema.js.map +1 -1
  113. package/lib/esm/common/imdl/ImdlModel.d.ts +15 -1
  114. package/lib/esm/common/imdl/ImdlModel.d.ts.map +1 -1
  115. package/lib/esm/common/imdl/ImdlModel.js +11 -3
  116. package/lib/esm/common/imdl/ImdlModel.js.map +1 -1
  117. package/lib/esm/common/imdl/ParseImdlDocument.d.ts +3 -1
  118. package/lib/esm/common/imdl/ParseImdlDocument.d.ts.map +1 -1
  119. package/lib/esm/common/imdl/ParseImdlDocument.js +67 -12
  120. package/lib/esm/common/imdl/ParseImdlDocument.js.map +1 -1
  121. package/lib/esm/render/GraphicBranch.d.ts +10 -0
  122. package/lib/esm/render/GraphicBranch.d.ts.map +1 -1
  123. package/lib/esm/render/GraphicBranch.js.map +1 -1
  124. package/lib/esm/render/webgl/BranchState.d.ts +2 -0
  125. package/lib/esm/render/webgl/BranchState.d.ts.map +1 -1
  126. package/lib/esm/render/webgl/BranchState.js +2 -0
  127. package/lib/esm/render/webgl/BranchState.js.map +1 -1
  128. package/lib/esm/render/webgl/Graphic.d.ts.map +1 -1
  129. package/lib/esm/render/webgl/Graphic.js +3 -0
  130. package/lib/esm/render/webgl/Graphic.js.map +1 -1
  131. package/lib/esm/render/webgl/InstancedGeometry.d.ts +1 -0
  132. package/lib/esm/render/webgl/InstancedGeometry.d.ts.map +1 -1
  133. package/lib/esm/render/webgl/InstancedGeometry.js +1 -0
  134. package/lib/esm/render/webgl/InstancedGeometry.js.map +1 -1
  135. package/lib/esm/request/utils.d.ts +18 -0
  136. package/lib/esm/request/utils.d.ts.map +1 -0
  137. package/lib/esm/request/utils.js +40 -0
  138. package/lib/esm/request/utils.js.map +1 -0
  139. package/lib/esm/tile/BatchedTileIdMap.d.ts +1 -2
  140. package/lib/esm/tile/BatchedTileIdMap.d.ts.map +1 -1
  141. package/lib/esm/tile/BatchedTileIdMap.js +3 -3
  142. package/lib/esm/tile/BatchedTileIdMap.js.map +1 -1
  143. package/lib/esm/tile/GltfReader.d.ts +4 -1
  144. package/lib/esm/tile/GltfReader.d.ts.map +1 -1
  145. package/lib/esm/tile/GltfReader.js +126 -27
  146. package/lib/esm/tile/GltfReader.js.map +1 -1
  147. package/lib/esm/tile/ImdlDecoder.d.ts +7 -1
  148. package/lib/esm/tile/ImdlDecoder.d.ts.map +1 -1
  149. package/lib/esm/tile/ImdlDecoder.js.map +1 -1
  150. package/lib/esm/tile/ImdlGraphicsCreator.d.ts.map +1 -1
  151. package/lib/esm/tile/ImdlGraphicsCreator.js +28 -17
  152. package/lib/esm/tile/ImdlGraphicsCreator.js.map +1 -1
  153. package/lib/esm/tile/ImdlReader.d.ts +2 -1
  154. package/lib/esm/tile/ImdlReader.d.ts.map +1 -1
  155. package/lib/esm/tile/ImdlReader.js +1 -0
  156. package/lib/esm/tile/ImdlReader.js.map +1 -1
  157. package/lib/esm/tile/RealityModelTileTree.d.ts.map +1 -1
  158. package/lib/esm/tile/RealityModelTileTree.js +2 -3
  159. package/lib/esm/tile/RealityModelTileTree.js.map +1 -1
  160. package/lib/esm/tile/RealityTileTree.d.ts +31 -0
  161. package/lib/esm/tile/RealityTileTree.d.ts.map +1 -1
  162. package/lib/esm/tile/RealityTileTree.js +6 -0
  163. package/lib/esm/tile/RealityTileTree.js.map +1 -1
  164. package/lib/esm/tile/TileDrawArgs.d.ts +6 -0
  165. package/lib/esm/tile/TileDrawArgs.d.ts.map +1 -1
  166. package/lib/esm/tile/TileDrawArgs.js +8 -1
  167. package/lib/esm/tile/TileDrawArgs.js.map +1 -1
  168. package/lib/esm/tile/TileTreeReference.d.ts +2 -0
  169. package/lib/esm/tile/TileTreeReference.d.ts.map +1 -1
  170. package/lib/esm/tile/TileTreeReference.js +5 -0
  171. package/lib/esm/tile/TileTreeReference.js.map +1 -1
  172. package/lib/esm/tile/map/ArcGISTileMap.d.ts +6 -2
  173. package/lib/esm/tile/map/ArcGISTileMap.d.ts.map +1 -1
  174. package/lib/esm/tile/map/ArcGISTileMap.js +130 -71
  175. package/lib/esm/tile/map/ArcGISTileMap.js.map +1 -1
  176. package/lib/esm/tile/map/ArcGisUtilities.d.ts.map +1 -1
  177. package/lib/esm/tile/map/ArcGisUtilities.js +5 -0
  178. package/lib/esm/tile/map/ArcGisUtilities.js.map +1 -1
  179. package/lib/esm/tile/map/ImageryProviders/ArcGISImageryProvider.d.ts.map +1 -1
  180. package/lib/esm/tile/map/ImageryProviders/ArcGISImageryProvider.js +61 -39
  181. package/lib/esm/tile/map/ImageryProviders/ArcGISImageryProvider.js.map +1 -1
  182. package/lib/esm/tile/map/ImageryProviders/ArcGISMapLayerImageryProvider.js +1 -1
  183. package/lib/esm/tile/map/ImageryProviders/ArcGISMapLayerImageryProvider.js.map +1 -1
  184. package/lib/esm/tile/map/MapLayerImageryProvider.d.ts +6 -0
  185. package/lib/esm/tile/map/MapLayerImageryProvider.d.ts.map +1 -1
  186. package/lib/esm/tile/map/MapLayerImageryProvider.js +48 -8
  187. package/lib/esm/tile/map/MapLayerImageryProvider.js.map +1 -1
  188. package/lib/esm/tile/map/WmsCapabilities.d.ts.map +1 -1
  189. package/lib/esm/tile/map/WmsCapabilities.js +1 -15
  190. package/lib/esm/tile/map/WmsCapabilities.js.map +1 -1
  191. package/lib/esm/tile/map/WmsUtilities.d.ts +7 -0
  192. package/lib/esm/tile/map/WmsUtilities.d.ts.map +1 -1
  193. package/lib/esm/tile/map/WmsUtilities.js +22 -0
  194. package/lib/esm/tile/map/WmsUtilities.js.map +1 -1
  195. package/lib/esm/tile/map/WmtsCapabilities.d.ts.map +1 -1
  196. package/lib/esm/tile/map/WmtsCapabilities.js +2 -16
  197. package/lib/esm/tile/map/WmtsCapabilities.js.map +1 -1
  198. package/lib/esm/tools/SelectTool.d.ts +1 -0
  199. package/lib/esm/tools/SelectTool.d.ts.map +1 -1
  200. package/lib/esm/tools/SelectTool.js +19 -13
  201. package/lib/esm/tools/SelectTool.js.map +1 -1
  202. package/lib/public/scripts/parse-imdl-worker.js +1 -1
  203. package/lib/workers/webpack/parse-imdl-worker.js +1 -1
  204. package/package.json +20 -19
@@ -1,7 +1,7 @@
1
1
  /** @packageDocumentation
2
2
  * @module Tiles
3
3
  */
4
- import type { ByteStream, Id64String } from "@itwin/core-bentley";
4
+ import type { ByteStream, Id64Set, Id64String } from "@itwin/core-bentley";
5
5
  import { BatchType } from "@itwin/core-common";
6
6
  import type { IModelConnection } from "../IModelConnection";
7
7
  import { BatchOptions } from "../render/GraphicBuilder";
@@ -12,12 +12,18 @@ import { ImdlReaderResult } from "./internal";
12
12
  * @internal
13
13
  */
14
14
  export interface ImdlDecodeArgs {
15
+ /** The encoded tile content. */
15
16
  stream: ByteStream;
17
+ /** The render system used to create graphics from the tile content. */
16
18
  system: RenderSystem;
17
19
  isLeaf?: boolean;
18
20
  sizeMultiplier?: number;
19
21
  options?: BatchOptions | false;
20
22
  isCanceled?: () => boolean;
23
+ /** An array of model groups. If supplied, the graphics associated with each group of models will be decoded into a separate GraphciBranch
24
+ * with [[GraphicBranch.groupNodeId]] set to the index of the group to which the model belongs.
25
+ */
26
+ modelGroups?: Id64Set[];
21
27
  }
22
28
  /** An object that can decode graphics in iMdl format.
23
29
  * @note decoders are reference-counted. When you are finished using one, call [[release]].
@@ -1 +1 @@
1
- {"version":3,"file":"ImdlDecoder.d.ts","sourceRoot":"","sources":["../../../src/tile/ImdlDecoder.ts"],"names":[],"mappings":"AAIA;;GAEG;AAEH,OAAO,KAAK,EAAE,UAAU,EAAE,UAAU,EAAE,MAAM,qBAAqB,CAAC;AAClE,OAAO,EAAE,SAAS,EAAE,MAAM,oBAAoB,CAAC;AAC/C,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,qBAAqB,CAAC;AAC5D,OAAO,EAAE,YAAY,EAAE,MAAM,0BAA0B,CAAC;AACxD,OAAO,EAAE,YAAY,EAAE,MAAM,wBAAwB,CAAC;AACtD,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,kCAAkC,CAAC;AACrE,OAAO,EAAqB,gBAAgB,EAAmB,MAAM,YAAY,CAAC;AAElF;;GAEG;AACH,MAAM,WAAW,cAAc;IAC7B,MAAM,EAAE,UAAU,CAAC;IACnB,MAAM,EAAE,YAAY,CAAC;IACrB,MAAM,CAAC,EAAE,OAAO,CAAC;IACjB,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB,OAAO,CAAC,EAAE,YAAY,GAAG,KAAK,CAAC;IAC/B,UAAU,CAAC,EAAE,MAAM,OAAO,CAAC;CAC5B;AAED;;;;GAIG;AACH,MAAM,WAAW,WAAW;IAC1B,MAAM,CAAC,IAAI,EAAE,cAAc,GAAG,OAAO,CAAC,gBAAgB,CAAC,CAAC;IACxD,OAAO,IAAI,IAAI,CAAC;CACjB;AAED;;GAEG;AACH,MAAM,WAAW,sBAAsB;IACrC,MAAM,EAAE,gBAAgB,CAAC;IACzB,YAAY,EAAE,UAAU,CAAC;IACzB,IAAI,EAAE,OAAO,CAAC;IACd,IAAI,CAAC,EAAE,SAAS,CAAC;IACjB,SAAS,CAAC,EAAE,OAAO,CAAC;IACpB,sBAAsB,CAAC,EAAE,OAAO,CAAC;IACjC,QAAQ,CAAC,EAAE,YAAY,CAAC;IACxB,QAAQ,CAAC,EAAE,OAAO,CAAC;CACpB;AAED;;;;;;GAMG;AACH,wBAAgB,kBAAkB,CAAC,IAAI,EAAE,sBAAsB,GAAG,WAAW,CAc5E"}
1
+ {"version":3,"file":"ImdlDecoder.d.ts","sourceRoot":"","sources":["../../../src/tile/ImdlDecoder.ts"],"names":[],"mappings":"AAIA;;GAEG;AAEH,OAAO,KAAK,EAAE,UAAU,EAAE,OAAO,EAAE,UAAU,EAAE,MAAM,qBAAqB,CAAC;AAC3E,OAAO,EAAE,SAAS,EAAE,MAAM,oBAAoB,CAAC;AAC/C,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,qBAAqB,CAAC;AAC5D,OAAO,EAAE,YAAY,EAAE,MAAM,0BAA0B,CAAC;AACxD,OAAO,EAAE,YAAY,EAAE,MAAM,wBAAwB,CAAC;AACtD,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,kCAAkC,CAAC;AACrE,OAAO,EAAqB,gBAAgB,EAAmB,MAAM,YAAY,CAAC;AAElF;;GAEG;AACH,MAAM,WAAW,cAAc;IAC7B,gCAAgC;IAChC,MAAM,EAAE,UAAU,CAAC;IACnB,uEAAuE;IACvE,MAAM,EAAE,YAAY,CAAC;IACrB,MAAM,CAAC,EAAE,OAAO,CAAC;IACjB,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB,OAAO,CAAC,EAAE,YAAY,GAAG,KAAK,CAAC;IAC/B,UAAU,CAAC,EAAE,MAAM,OAAO,CAAC;IAC3B;;OAEG;IACH,WAAW,CAAC,EAAE,OAAO,EAAE,CAAC;CACzB;AAED;;;;GAIG;AACH,MAAM,WAAW,WAAW;IAC1B,MAAM,CAAC,IAAI,EAAE,cAAc,GAAG,OAAO,CAAC,gBAAgB,CAAC,CAAC;IACxD,OAAO,IAAI,IAAI,CAAC;CACjB;AAED;;GAEG;AACH,MAAM,WAAW,sBAAsB;IACrC,MAAM,EAAE,gBAAgB,CAAC;IACzB,YAAY,EAAE,UAAU,CAAC;IACzB,IAAI,EAAE,OAAO,CAAC;IACd,IAAI,CAAC,EAAE,SAAS,CAAC;IACjB,SAAS,CAAC,EAAE,OAAO,CAAC;IACpB,sBAAsB,CAAC,EAAE,OAAO,CAAC;IACjC,QAAQ,CAAC,EAAE,YAAY,CAAC;IACxB,QAAQ,CAAC,EAAE,OAAO,CAAC;CACpB;AAED;;;;;;GAMG;AACH,wBAAgB,kBAAkB,CAAC,IAAI,EAAE,sBAAsB,GAAG,WAAW,CAc5E"}
@@ -1 +1 @@
1
- {"version":3,"file":"ImdlDecoder.js","sourceRoot":"","sources":["../../../src/tile/ImdlDecoder.ts"],"names":[],"mappings":";AAAA;;;+FAG+F;AAC/F;;GAEG;;;AAQH,yCAAkF;AAsClF;;;;;;GAMG;AACH,SAAgB,kBAAkB,CAAC,IAA4B;IAC7D,MAAM,MAAM,GAAG,IAAA,4BAAiB,EAAC,IAAI,CAAC,CAAC;IACvC,OAAO;QACL,OAAO,EAAE,GAAG,EAAE,CAAC,MAAM,CAAC,OAAO,EAAE;QAC/B,MAAM,EAAE,KAAK,EAAE,UAAU,EAAE,EAAE;YAC3B,OAAO,IAAA,0BAAe,EAAC;gBACrB,GAAG,IAAI;gBACP,GAAG,UAAU;gBACb,OAAO,EAAE,IAAI,CAAC,YAAY;gBAC1B,SAAS,EAAE,CAAC,IAAI,CAAC,SAAS;gBAC1B,aAAa,EAAE,KAAK,EAAE,UAAU,EAAE,EAAE,CAAC,MAAM,CAAC,KAAK,CAAC,UAAU,CAAC;aAC9D,CAAC,CAAC;QACL,CAAC;KACF,CAAC;AACJ,CAAC;AAdD,gDAcC","sourcesContent":["/*---------------------------------------------------------------------------------------------\n* Copyright (c) Bentley Systems, Incorporated. All rights reserved.\n* See LICENSE.md in the project root for license terms and full copyright notice.\n*--------------------------------------------------------------------------------------------*/\n/** @packageDocumentation\n * @module Tiles\n */\n\nimport type { ByteStream, Id64String } from \"@itwin/core-bentley\";\nimport { BatchType } from \"@itwin/core-common\";\nimport type { IModelConnection } from \"../IModelConnection\";\nimport { BatchOptions } from \"../render/GraphicBuilder\";\nimport { RenderSystem } from \"../render/RenderSystem\";\nimport type { ImdlTimeline } from \"../common/imdl/ParseImdlDocument\";\nimport { acquireImdlParser, ImdlReaderResult, readImdlContent } from \"./internal\";\n\n/** Arguments supplied to [[ImdlDecoder.decode]].\n * @internal\n */\nexport interface ImdlDecodeArgs {\n stream: ByteStream;\n system: RenderSystem;\n isLeaf?: boolean;\n sizeMultiplier?: number;\n options?: BatchOptions | false;\n isCanceled?: () => boolean;\n}\n\n/** An object that can decode graphics in iMdl format.\n * @note decoders are reference-counted. When you are finished using one, call [[release]].\n * @see [[acquireImdlDecoder]] to acquire a decoder.\n * @internal\n */\nexport interface ImdlDecoder {\n decode(args: ImdlDecodeArgs): Promise<ImdlReaderResult>;\n release(): void;\n}\n\n/** Arguments supplied to [[acquireImdlDecoder]].\n * @internal\n */\nexport interface AcquireImdlDecoderArgs {\n iModel: IModelConnection;\n batchModelId: Id64String;\n is3d: boolean;\n type?: BatchType;\n omitEdges?: boolean;\n containsTransformNodes?: boolean;\n timeline?: ImdlTimeline;\n noWorker?: boolean;\n}\n\n/** Acquire shared ownership of an [[ImdlDecoder]].\n * Decoders are reference-counted, because they make use of reference-counted [[ImdlParser]]s internally.\n * The caller of this function increments the reference count of the decoder and is responsible\n * for decrementing it by calling [[ImdlDecoder.release]] when it is no longer needed. Typically, a decoder's lifetime is tied to the\n * lifetime of some [IDisposable]($bentley) object like a [[TileTree]] - acquired in the constructor, and released in the `dispose` method.\n * @internal\n */\nexport function acquireImdlDecoder(args: AcquireImdlDecoderArgs): ImdlDecoder {\n const parser = acquireImdlParser(args);\n return {\n release: () => parser.release(),\n decode: async (decodeArgs) => {\n return readImdlContent({\n ...args,\n ...decodeArgs,\n modelId: args.batchModelId,\n loadEdges: !args.omitEdges,\n parseDocument: async (parserOpts) => parser.parse(parserOpts),\n });\n },\n };\n}\n"]}
1
+ {"version":3,"file":"ImdlDecoder.js","sourceRoot":"","sources":["../../../src/tile/ImdlDecoder.ts"],"names":[],"mappings":";AAAA;;;+FAG+F;AAC/F;;GAEG;;;AAQH,yCAAkF;AA4ClF;;;;;;GAMG;AACH,SAAgB,kBAAkB,CAAC,IAA4B;IAC7D,MAAM,MAAM,GAAG,IAAA,4BAAiB,EAAC,IAAI,CAAC,CAAC;IACvC,OAAO;QACL,OAAO,EAAE,GAAG,EAAE,CAAC,MAAM,CAAC,OAAO,EAAE;QAC/B,MAAM,EAAE,KAAK,EAAE,UAAU,EAAE,EAAE;YAC3B,OAAO,IAAA,0BAAe,EAAC;gBACrB,GAAG,IAAI;gBACP,GAAG,UAAU;gBACb,OAAO,EAAE,IAAI,CAAC,YAAY;gBAC1B,SAAS,EAAE,CAAC,IAAI,CAAC,SAAS;gBAC1B,aAAa,EAAE,KAAK,EAAE,UAAU,EAAE,EAAE,CAAC,MAAM,CAAC,KAAK,CAAC,UAAU,CAAC;aAC9D,CAAC,CAAC;QACL,CAAC;KACF,CAAC;AACJ,CAAC;AAdD,gDAcC","sourcesContent":["/*---------------------------------------------------------------------------------------------\n* Copyright (c) Bentley Systems, Incorporated. All rights reserved.\n* See LICENSE.md in the project root for license terms and full copyright notice.\n*--------------------------------------------------------------------------------------------*/\n/** @packageDocumentation\n * @module Tiles\n */\n\nimport type { ByteStream, Id64Set, Id64String } from \"@itwin/core-bentley\";\nimport { BatchType } from \"@itwin/core-common\";\nimport type { IModelConnection } from \"../IModelConnection\";\nimport { BatchOptions } from \"../render/GraphicBuilder\";\nimport { RenderSystem } from \"../render/RenderSystem\";\nimport type { ImdlTimeline } from \"../common/imdl/ParseImdlDocument\";\nimport { acquireImdlParser, ImdlReaderResult, readImdlContent } from \"./internal\";\n\n/** Arguments supplied to [[ImdlDecoder.decode]].\n * @internal\n */\nexport interface ImdlDecodeArgs {\n /** The encoded tile content. */\n stream: ByteStream;\n /** The render system used to create graphics from the tile content. */\n system: RenderSystem;\n isLeaf?: boolean;\n sizeMultiplier?: number;\n options?: BatchOptions | false;\n isCanceled?: () => boolean;\n /** An array of model groups. If supplied, the graphics associated with each group of models will be decoded into a separate GraphciBranch\n * with [[GraphicBranch.groupNodeId]] set to the index of the group to which the model belongs.\n */\n modelGroups?: Id64Set[];\n}\n\n/** An object that can decode graphics in iMdl format.\n * @note decoders are reference-counted. When you are finished using one, call [[release]].\n * @see [[acquireImdlDecoder]] to acquire a decoder.\n * @internal\n */\nexport interface ImdlDecoder {\n decode(args: ImdlDecodeArgs): Promise<ImdlReaderResult>;\n release(): void;\n}\n\n/** Arguments supplied to [[acquireImdlDecoder]].\n * @internal\n */\nexport interface AcquireImdlDecoderArgs {\n iModel: IModelConnection;\n batchModelId: Id64String;\n is3d: boolean;\n type?: BatchType;\n omitEdges?: boolean;\n containsTransformNodes?: boolean;\n timeline?: ImdlTimeline;\n noWorker?: boolean;\n}\n\n/** Acquire shared ownership of an [[ImdlDecoder]].\n * Decoders are reference-counted, because they make use of reference-counted [[ImdlParser]]s internally.\n * The caller of this function increments the reference count of the decoder and is responsible\n * for decrementing it by calling [[ImdlDecoder.release]] when it is no longer needed. Typically, a decoder's lifetime is tied to the\n * lifetime of some [IDisposable]($bentley) object like a [[TileTree]] - acquired in the constructor, and released in the `dispose` method.\n * @internal\n */\nexport function acquireImdlDecoder(args: AcquireImdlDecoderArgs): ImdlDecoder {\n const parser = acquireImdlParser(args);\n return {\n release: () => parser.release(),\n decode: async (decodeArgs) => {\n return readImdlContent({\n ...args,\n ...decodeArgs,\n modelId: args.batchModelId,\n loadEdges: !args.omitEdges,\n parseDocument: async (parserOpts) => parser.parse(parserOpts),\n });\n },\n };\n}\n"]}
@@ -1 +1 @@
1
- {"version":3,"file":"ImdlGraphicsCreator.d.ts","sourceRoot":"","sources":["../../../src/tile/ImdlGraphicsCreator.ts"],"names":[],"mappings":"AAIA;;GAEG;AASH,OAAO,EAAE,SAAS,IAAI,IAAI,EAAE,MAAM,0BAA0B,CAAC;AAI7D,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,yBAAyB,CAAC;AAE7D,OAAO,KAAK,EAAkB,YAAY,EAAE,MAAM,wBAAwB,CAAC;AAE3E,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,qBAAqB,CAAC;AAE5D;;GAEG;AACH,MAAM,WAAW,iBAAiB;IAChC,QAAQ,EAAE,IAAI,CAAC,QAAQ,CAAC;IACxB,MAAM,EAAE,YAAY,CAAC;IACrB,MAAM,EAAE,gBAAgB,CAAC;IACzB,UAAU,CAAC,EAAE,MAAM,OAAO,CAAC;CAC5B;AAoUD,gBAAgB;AAChB,wBAAsB,kBAAkB,CAAC,OAAO,EAAE,iBAAiB,GAAG,OAAO,CAAC,aAAa,GAAG,SAAS,CAAC,CAqCvG"}
1
+ {"version":3,"file":"ImdlGraphicsCreator.d.ts","sourceRoot":"","sources":["../../../src/tile/ImdlGraphicsCreator.ts"],"names":[],"mappings":"AAIA;;GAEG;AASH,OAAO,EAAE,SAAS,IAAI,IAAI,EAAE,MAAM,0BAA0B,CAAC;AAI7D,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,yBAAyB,CAAC;AAE7D,OAAO,KAAK,EAAkB,YAAY,EAAE,MAAM,wBAAwB,CAAC;AAE3E,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,qBAAqB,CAAC;AAE5D;;GAEG;AACH,MAAM,WAAW,iBAAiB;IAChC,QAAQ,EAAE,IAAI,CAAC,QAAQ,CAAC;IACxB,MAAM,EAAE,YAAY,CAAC;IACrB,MAAM,EAAE,gBAAgB,CAAC;IACzB,UAAU,CAAC,EAAE,MAAM,OAAO,CAAC;CAC5B;AAoWD,gBAAgB;AAChB,wBAAsB,kBAAkB,CAAC,OAAO,EAAE,iBAAiB,GAAG,OAAO,CAAC,aAAa,GAAG,SAAS,CAAC,CAsBvG"}
@@ -280,12 +280,39 @@ function createPatternGraphic(params, options) {
280
280
  return branch.isEmpty ? undefined : options.system.createGraphicBranch(branch, core_geometry_1.Transform.createIdentity(), { clipVolume });
281
281
  }
282
282
  function createNodeGraphics(node, options) {
283
+ if (undefined === node.groupId)
284
+ return createPrimitivesNodeGraphics(node, options);
283
285
  const graphics = [];
286
+ for (const child of node.nodes) {
287
+ graphics.push(...createPrimitivesNodeGraphics(child, options));
288
+ }
289
+ if (graphics.length === 0)
290
+ return graphics;
291
+ const branch = new GraphicBranch_1.GraphicBranch(true);
292
+ branch.groupNodeId = node.groupId;
293
+ branch.entries.push(...graphics);
294
+ return [options.system.createBranch(branch, core_geometry_1.Transform.createIdentity())];
295
+ }
296
+ function createPrimitivesNodeGraphics(node, options) {
297
+ let graphics = [];
284
298
  for (const primitive of node.primitives) {
285
299
  const graphic = primitive.type === "pattern" ? createPatternGraphic(primitive.params, options) : createPrimitiveGraphic(primitive, options);
286
300
  if (graphic)
287
301
  graphics.push(graphic);
288
302
  }
303
+ if (!graphics.length)
304
+ return graphics;
305
+ if (undefined !== node.layerId) {
306
+ const layerGraphic = 1 === graphics.length ? graphics[0] : options.system.createGraphicList(graphics);
307
+ graphics = [options.system.createGraphicLayer(layerGraphic, node.layerId)];
308
+ }
309
+ else if (undefined !== node.animationNodeId) {
310
+ const branch = new GraphicBranch_1.GraphicBranch(true);
311
+ branch.animationId = node.animationId;
312
+ branch.animationNodeId = node.animationNodeId;
313
+ branch.entries.push(...graphics);
314
+ graphics = [options.system.createBranch(branch, core_geometry_1.Transform.createIdentity())];
315
+ }
289
316
  return graphics;
290
317
  }
291
318
  /** @internal */
@@ -300,23 +327,7 @@ async function decodeImdlGraphics(options) {
300
327
  const system = options.system;
301
328
  const graphics = [];
302
329
  for (const node of options.document.nodes) {
303
- const nodeGraphics = createNodeGraphics(node, graphicsOptions);
304
- if (nodeGraphics.length === 0)
305
- continue;
306
- if (undefined !== node.layerId) {
307
- const layerGraphic = 1 === nodeGraphics.length ? nodeGraphics[0] : system.createGraphicList(nodeGraphics);
308
- graphics.push(system.createGraphicLayer(layerGraphic, node.layerId));
309
- }
310
- else if (undefined !== node.animationNodeId) {
311
- const branch = new GraphicBranch_1.GraphicBranch(true);
312
- branch.animationId = node.animationId;
313
- branch.animationNodeId = node.animationNodeId;
314
- branch.entries.push(...nodeGraphics);
315
- graphics.push(system.createBranch(branch, core_geometry_1.Transform.createIdentity()));
316
- }
317
- else {
318
- graphics.push(...nodeGraphics);
319
- }
330
+ graphics.push(...createNodeGraphics(node, graphicsOptions));
320
331
  }
321
332
  switch (graphics.length) {
322
333
  case 0: return undefined;
@@ -1 +1 @@
1
- {"version":3,"file":"ImdlGraphicsCreator.js","sourceRoot":"","sources":["../../../src/tile/ImdlGraphicsCreator.ts"],"names":[],"mappings":"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","sourcesContent":["/*---------------------------------------------------------------------------------------------\n* Copyright (c) Bentley Systems, Incorporated. All rights reserved.\n* See LICENSE.md in the project root for license terms and full copyright notice.\n*--------------------------------------------------------------------------------------------*/\n/** @packageDocumentation\n * @module Tiles\n */\n\nimport { JsonUtils } from \"@itwin/core-bentley\";\nimport { ClipVector, Point2d, Point3d, Range3d, Transform } from \"@itwin/core-geometry\";\nimport {\n ColorDef, Gradient, ImageSource, RenderMaterial, RenderTexture, TextureMapping,\n} from \"@itwin/core-common\";\nimport { AuxChannelTable } from \"../common/render/primitives/AuxChannelTable\";\nimport { createSurfaceMaterial } from \"../common//render/primitives/SurfaceParams\";\nimport { ImdlModel as Imdl } from \"../common/imdl/ImdlModel\";\nimport { ImdlColorDef, ImdlNamedTexture, ImdlTextureMapping } from \"../common/imdl/ImdlSchema\";\nimport { edgeParamsFromImdl, toMaterialParams, toVertexTable } from \"../common/imdl/ParseImdlDocument\";\nimport { VertexIndices } from \"../common/render/primitives/VertexIndices\";\nimport type { RenderGraphic } from \"../render/RenderGraphic\";\nimport { GraphicBranch } from \"../render/GraphicBranch\";\nimport type { RenderGeometry, RenderSystem } from \"../render/RenderSystem\";\nimport type { InstancedGraphicParams } from \"../render/InstancedGraphicParams\";\nimport type { IModelConnection } from \"../IModelConnection\";\n\n/** Options provided to [[decodeImdlContent]].\n * @internal\n */\nexport interface ImdlDecodeOptions {\n document: Imdl.Document;\n system: RenderSystem;\n iModel: IModelConnection;\n isCanceled?: () => boolean;\n}\n\nasync function loadNamedTexture(name: string, namedTex: ImdlNamedTexture, options: ImdlDecodeOptions): Promise<RenderTexture | undefined> {\n // Reasons a texture could be embedded in the tile content instead of requested separately from the backend:\n // - external textures are disabled\n // - the texture name is not a valid Id64 string\n // - the texture is below a certain backend-hardcoded size threshold\n // The bufferViewJson being defined signifies any of the above conditions. In that case, the image content\n // has been embedded in the tile contents. Otherwise, we will attempt to request the image content separately\n // from the backend.\n\n try {\n let textureType = RenderTexture.Type.Normal;\n const isGlyph = JsonUtils.asBool(namedTex.isGlyph);\n const isTileSection = !isGlyph && JsonUtils.asBool(namedTex.isTileSection);\n if (isGlyph)\n textureType = RenderTexture.Type.Glyph;\n else if (isTileSection)\n textureType = RenderTexture.Type.TileSection;\n\n // We produce unique tile sections for very large (> 8 megapixel) textures, and unique glyph atlases for raster text.\n // Neither should be cached.\n const cacheable = !isGlyph && !isTileSection;\n const ownership = cacheable ? { iModel: options.iModel, key: name } : undefined;\n\n const bufferViewId = JsonUtils.asString(namedTex.bufferView);\n const bufferViewJson = 0 !== bufferViewId.length ? options.document.json.bufferViews[bufferViewId] : undefined;\n\n if (undefined !== bufferViewJson) { // presence of bufferViewJson signifies we should read the texture from the tile content\n const byteOffset = JsonUtils.asInt(bufferViewJson.byteOffset);\n const byteLength = JsonUtils.asInt(bufferViewJson.byteLength);\n if (0 === byteLength)\n return undefined;\n\n const texBytes = options.document.binaryData.subarray(byteOffset, byteOffset + byteLength);\n const format = namedTex.format;\n const source = new ImageSource(texBytes, format);\n return await options.system.createTextureFromSource({ source, ownership, type: textureType, transparency: namedTex.transparency });\n }\n\n // bufferViewJson was undefined, so attempt to request the texture directly from the backend\n // eslint-disable-next-line deprecation/deprecation\n const params = new RenderTexture.Params(cacheable ? name : undefined, textureType);\n return options.system.createTextureFromElement(name, options.iModel, params, namedTex.format);\n } catch (_) {\n return undefined;\n }\n}\n\nasync function loadNamedTextures(options: ImdlDecodeOptions): Promise<Map<string, RenderTexture>> {\n const result = new Map<string, RenderTexture>();\n const namedTextures = options.document.json.namedTextures;\n if (!namedTextures)\n return result;\n\n const promises = new Array<Promise<void>>();\n for (const [name, namedTexture] of Object.entries(namedTextures)) {\n const texture = options.system.findTexture(name, options.iModel);\n if (texture) {\n result.set(name, texture);\n continue;\n } else if (namedTexture) {\n promises.push(loadNamedTexture(name, namedTexture, options).then((tx) => {\n if (tx)\n result.set(name, tx);\n }));\n }\n }\n\n if (promises.length > 0)\n await Promise.all(promises);\n\n return result;\n}\n\ninterface GraphicsOptions extends ImdlDecodeOptions {\n textures: Map<string, RenderTexture>;\n patterns: Map<string, RenderGeometry[]>;\n}\n\nfunction constantLodParamPropsFromJson(propsJson: { repetitions?: number, offset?: number[], minDistClamp?: number, maxDistClamp?: number } | undefined): TextureMapping.ConstantLodParamProps | undefined {\n if (undefined === propsJson)\n return undefined;\n\n const constantLodPops: TextureMapping.ConstantLodParamProps = {\n repetitions: JsonUtils.asDouble(propsJson.repetitions, 1.0),\n offset: { x: propsJson.offset ? JsonUtils.asDouble(propsJson.offset[0]) : 0.0, y: propsJson.offset ? JsonUtils.asDouble(propsJson.offset[1]) : 0.0 },\n minDistClamp: JsonUtils.asDouble(propsJson.minDistClamp, 1.0),\n maxDistClamp: JsonUtils.asDouble(propsJson.maxDistClamp, 4096.0 * 1024.0 * 1024.0),\n };\n return constantLodPops;\n}\n\nfunction textureMappingFromJson(json: ImdlTextureMapping | undefined, options: GraphicsOptions): TextureMapping | undefined {\n if (!json)\n return undefined;\n\n const texture = options.textures.get(JsonUtils.asString(json.name));\n if (!texture)\n return undefined;\n\n const paramsJson = json.params;\n const tf = paramsJson.transform;\n\n const paramProps: TextureMapping.ParamProps = {\n textureMat2x3: new TextureMapping.Trans2x3(tf[0][0], tf[0][1], tf[0][2], tf[1][0], tf[1][1], tf[1][2]),\n textureWeight: JsonUtils.asDouble(paramsJson.weight, 1.0),\n mapMode: JsonUtils.asInt(paramsJson.mode),\n worldMapping: JsonUtils.asBool(paramsJson.worldMapping),\n useConstantLod: JsonUtils.asBool(paramsJson.useConstantLod),\n constantLodProps: constantLodParamPropsFromJson(paramsJson.constantLodParams),\n };\n\n const textureMapping = new TextureMapping(texture, new TextureMapping.Params(paramProps));\n\n const normalMapJson = json.normalMapParams;\n if (normalMapJson) {\n let normalMap;\n const normalTexName = JsonUtils.asString(normalMapJson.textureName);\n if (normalTexName.length === 0 || undefined !== (normalMap = options.textures.get(normalTexName))) {\n textureMapping.normalMapParams = {\n normalMap,\n greenUp: JsonUtils.asBool(normalMapJson.greenUp),\n scale: JsonUtils.asDouble(normalMapJson.scale, 1),\n useConstantLod: JsonUtils.asBool(normalMapJson.useConstantLod),\n };\n }\n }\n\n return textureMapping;\n}\n\nfunction getMaterial(mat: string | Imdl.SurfaceMaterialParams, options: GraphicsOptions): RenderMaterial | undefined {\n if (typeof mat !== \"string\") {\n const args = toMaterialParams(mat);\n return options.system.createRenderMaterial(args);\n }\n\n const material = options.system.findMaterial(mat, options.iModel);\n if (material || !options.document.json.renderMaterials)\n return material;\n\n const json = options.document.json.renderMaterials[mat];\n if (!json)\n return undefined;\n\n function colorDefFromJson(col: ImdlColorDef | undefined): ColorDef | undefined {\n return col ? ColorDef.from(col[0] * 255 + 0.5, col[1] * 255 + 0.5, col[2] * 255 + 0.5) : undefined;\n }\n\n // eslint-disable-next-line deprecation/deprecation\n const params = new RenderMaterial.Params(mat);\n params.diffuseColor = colorDefFromJson(json.diffuseColor);\n if (json.diffuse !== undefined)\n params.diffuse = JsonUtils.asDouble(json.diffuse);\n\n params.specularColor = colorDefFromJson(json.specularColor);\n if (json.specular !== undefined)\n params.specular = JsonUtils.asDouble(json.specular);\n\n params.reflectColor = colorDefFromJson(json.reflectColor);\n if (json.reflect !== undefined)\n params.reflect = JsonUtils.asDouble(json.reflect);\n\n if (json.specularExponent !== undefined)\n params.specularExponent = json.specularExponent;\n\n if (undefined !== json.transparency)\n params.alpha = 1.0 - json.transparency;\n\n params.refract = JsonUtils.asDouble(json.refract);\n params.shadows = JsonUtils.asBool(json.shadows);\n params.ambient = JsonUtils.asDouble(json.ambient);\n\n if (undefined !== json.textureMapping)\n params.textureMapping = textureMappingFromJson(json.textureMapping.texture, options);\n\n // eslint-disable-next-line deprecation/deprecation\n return options.system.createMaterial(params, options.iModel);\n}\n\nfunction getModifiers(primitive: Imdl.Primitive): { viOrigin?: Point3d, instances?: InstancedGraphicParams } {\n const mod = primitive.modifier;\n switch (mod?.type) {\n case \"instances\":\n return {\n instances: {\n ...mod,\n transformCenter: Point3d.fromJSON(mod.transformCenter),\n range: mod.range ? Range3d.fromJSON(mod.range) : undefined,\n },\n };\n case \"viewIndependentOrigin\":\n return {\n viOrigin: Point3d.fromJSON(mod.origin),\n };\n default:\n return { };\n }\n}\n\nfunction createPrimitiveGeometry(primitive: Imdl.Primitive, options: GraphicsOptions, viOrigin: Point3d | undefined): RenderGeometry | undefined {\n switch (primitive.type) {\n case \"point\":\n return options.system.createPointStringGeometry({\n ...primitive.params,\n vertices: toVertexTable(primitive.params.vertices),\n indices: new VertexIndices(primitive.params.indices),\n }, viOrigin);\n case \"polyline\":\n return options.system.createPolylineGeometry({\n ...primitive.params,\n vertices: toVertexTable(primitive.params.vertices),\n polyline: {\n ...primitive.params.polyline,\n indices: new VertexIndices(primitive.params.polyline.indices),\n prevIndices: new VertexIndices(primitive.params.polyline.prevIndices),\n },\n }, viOrigin);\n case \"mesh\": {\n const surf = primitive.params.surface;\n let material;\n if (surf.material) {\n if (!surf.material.isAtlas)\n material = createSurfaceMaterial(getMaterial(surf.material.material, options));\n else\n material = surf.material;\n }\n\n let textureMapping;\n if (surf.textureMapping) {\n let texture;\n if (typeof surf.textureMapping.texture === \"string\") {\n texture = options.textures.get(surf.textureMapping.texture);\n } else {\n const gradient = Gradient.Symb.fromJSON(surf.textureMapping.texture);\n texture = options.system.getGradientTexture(gradient, options.iModel);\n }\n\n if (texture)\n textureMapping = { texture, alwaysDisplayed: surf.textureMapping.alwaysDisplayed };\n }\n\n return options.system.createMeshGeometry({\n ...primitive.params,\n edges: primitive.params.edges ? edgeParamsFromImdl(primitive.params.edges) : undefined,\n vertices: toVertexTable(primitive.params.vertices),\n auxChannels: primitive.params.auxChannels ? AuxChannelTable.fromJSON(primitive.params.auxChannels) : undefined,\n surface: {\n ...primitive.params.surface,\n material,\n textureMapping,\n indices: new VertexIndices(primitive.params.surface.indices),\n },\n }, viOrigin);\n }\n }\n}\n\nfunction createPrimitiveGraphic(primitive: Imdl.Primitive, options: GraphicsOptions): RenderGraphic | undefined {\n const mods = getModifiers(primitive);\n const geometry = createPrimitiveGeometry(primitive, options, mods.viOrigin);\n return geometry ? options.system.createRenderGraphic(geometry, mods.instances) : undefined;\n}\n\nfunction createPatternGeometries(primitives: Imdl.Primitive[], options: GraphicsOptions): RenderGeometry[] {\n const geometries = [];\n for (const primitive of primitives) {\n const geometry = createPrimitiveGeometry(primitive, options, undefined);\n if (geometry)\n geometries.push(geometry);\n }\n\n return geometries;\n}\n\nfunction createPatternGraphic(params: Imdl.AreaPatternParams, options: GraphicsOptions): RenderGraphic | undefined {\n const geometries = options.patterns.get(params.symbolName);\n if (!geometries || geometries.length === 0)\n return undefined;\n\n const clip = ClipVector.fromJSON(params.clip);\n const clipVolume = clip?.isValid ? options.system.createClipVolume(clip) : undefined;\n if (!clipVolume)\n return undefined;\n\n const viewIndependentOrigin = params.viewIndependentOrigin ? Point3d.fromJSON(params.viewIndependentOrigin) : undefined;\n const pattern = options.system.createAreaPattern({\n xyOffsets: params.xyOffsets,\n featureId: params.featureId,\n orgTransform: Transform.fromJSON(params.orgTransform),\n origin: Point2d.fromJSON(params.origin),\n scale: params.scale,\n spacing: Point2d.fromJSON(params.spacing),\n patternToModel: Transform.fromJSON(params.modelTransform),\n range: Range3d.fromJSON(params.range),\n symbolTranslation: Point3d.fromJSON(params.symbolTranslation),\n viewIndependentOrigin,\n });\n\n if (!pattern)\n return undefined;\n\n const branch = new GraphicBranch(true);\n for (const geometry of geometries) {\n const graphic = options.system.createRenderGraphic(geometry, pattern);\n if (graphic)\n branch.add(graphic);\n }\n\n return branch.isEmpty ? undefined : options.system.createGraphicBranch(branch, Transform.createIdentity(), { clipVolume });\n}\n\nfunction createNodeGraphics(node: Imdl.Node, options: GraphicsOptions): RenderGraphic[] {\n const graphics = [];\n for (const primitive of node.primitives) {\n const graphic = primitive.type === \"pattern\" ? createPatternGraphic(primitive.params, options) : createPrimitiveGraphic(primitive, options);\n if (graphic)\n graphics.push(graphic);\n }\n\n return graphics;\n}\n\n/** @internal */\nexport async function decodeImdlGraphics(options: ImdlDecodeOptions): Promise<RenderGraphic | undefined> {\n const textures = await loadNamedTextures(options);\n if (options.isCanceled && options.isCanceled())\n return undefined;\n\n const patterns = new Map<string, RenderGeometry[]>();\n const graphicsOptions = { ...options, textures, patterns };\n\n for (const [name, primitives] of options.document.patterns)\n patterns.set(name, createPatternGeometries(primitives, graphicsOptions));\n\n const system = options.system;\n const graphics: RenderGraphic[] = [];\n for (const node of options.document.nodes) {\n const nodeGraphics = createNodeGraphics(node, graphicsOptions);\n if (nodeGraphics.length === 0)\n continue;\n\n if (undefined !== node.layerId) {\n const layerGraphic = 1 === nodeGraphics.length ? nodeGraphics[0] : system.createGraphicList(nodeGraphics);\n graphics.push(system.createGraphicLayer(layerGraphic, node.layerId));\n } else if (undefined !== node.animationNodeId) {\n const branch = new GraphicBranch(true);\n branch.animationId = node.animationId;\n branch.animationNodeId = node.animationNodeId;\n branch.entries.push(...nodeGraphics);\n graphics.push(system.createBranch(branch, Transform.createIdentity()));\n } else {\n graphics.push(...nodeGraphics);\n }\n }\n\n switch (graphics.length) {\n case 0: return undefined;\n case 1: return graphics[0];\n default: return system.createGraphicList(graphics);\n }\n}\n"]}
1
+ {"version":3,"file":"ImdlGraphicsCreator.js","sourceRoot":"","sources":["../../../src/tile/ImdlGraphicsCreator.ts"],"names":[],"mappings":"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","sourcesContent":["/*---------------------------------------------------------------------------------------------\n* Copyright (c) Bentley Systems, Incorporated. All rights reserved.\n* See LICENSE.md in the project root for license terms and full copyright notice.\n*--------------------------------------------------------------------------------------------*/\n/** @packageDocumentation\n * @module Tiles\n */\n\nimport { JsonUtils } from \"@itwin/core-bentley\";\nimport { ClipVector, Point2d, Point3d, Range3d, Transform } from \"@itwin/core-geometry\";\nimport {\n ColorDef, Gradient, ImageSource, RenderMaterial, RenderTexture, TextureMapping,\n} from \"@itwin/core-common\";\nimport { AuxChannelTable } from \"../common/render/primitives/AuxChannelTable\";\nimport { createSurfaceMaterial } from \"../common//render/primitives/SurfaceParams\";\nimport { ImdlModel as Imdl } from \"../common/imdl/ImdlModel\";\nimport { ImdlColorDef, ImdlNamedTexture, ImdlTextureMapping } from \"../common/imdl/ImdlSchema\";\nimport { edgeParamsFromImdl, toMaterialParams, toVertexTable } from \"../common/imdl/ParseImdlDocument\";\nimport { VertexIndices } from \"../common/render/primitives/VertexIndices\";\nimport type { RenderGraphic } from \"../render/RenderGraphic\";\nimport { GraphicBranch } from \"../render/GraphicBranch\";\nimport type { RenderGeometry, RenderSystem } from \"../render/RenderSystem\";\nimport type { InstancedGraphicParams } from \"../render/InstancedGraphicParams\";\nimport type { IModelConnection } from \"../IModelConnection\";\n\n/** Options provided to [[decodeImdlContent]].\n * @internal\n */\nexport interface ImdlDecodeOptions {\n document: Imdl.Document;\n system: RenderSystem;\n iModel: IModelConnection;\n isCanceled?: () => boolean;\n}\n\nasync function loadNamedTexture(name: string, namedTex: ImdlNamedTexture, options: ImdlDecodeOptions): Promise<RenderTexture | undefined> {\n // Reasons a texture could be embedded in the tile content instead of requested separately from the backend:\n // - external textures are disabled\n // - the texture name is not a valid Id64 string\n // - the texture is below a certain backend-hardcoded size threshold\n // The bufferViewJson being defined signifies any of the above conditions. In that case, the image content\n // has been embedded in the tile contents. Otherwise, we will attempt to request the image content separately\n // from the backend.\n\n try {\n let textureType = RenderTexture.Type.Normal;\n const isGlyph = JsonUtils.asBool(namedTex.isGlyph);\n const isTileSection = !isGlyph && JsonUtils.asBool(namedTex.isTileSection);\n if (isGlyph)\n textureType = RenderTexture.Type.Glyph;\n else if (isTileSection)\n textureType = RenderTexture.Type.TileSection;\n\n // We produce unique tile sections for very large (> 8 megapixel) textures, and unique glyph atlases for raster text.\n // Neither should be cached.\n const cacheable = !isGlyph && !isTileSection;\n const ownership = cacheable ? { iModel: options.iModel, key: name } : undefined;\n\n const bufferViewId = JsonUtils.asString(namedTex.bufferView);\n const bufferViewJson = 0 !== bufferViewId.length ? options.document.json.bufferViews[bufferViewId] : undefined;\n\n if (undefined !== bufferViewJson) { // presence of bufferViewJson signifies we should read the texture from the tile content\n const byteOffset = JsonUtils.asInt(bufferViewJson.byteOffset);\n const byteLength = JsonUtils.asInt(bufferViewJson.byteLength);\n if (0 === byteLength)\n return undefined;\n\n const texBytes = options.document.binaryData.subarray(byteOffset, byteOffset + byteLength);\n const format = namedTex.format;\n const source = new ImageSource(texBytes, format);\n return await options.system.createTextureFromSource({ source, ownership, type: textureType, transparency: namedTex.transparency });\n }\n\n // bufferViewJson was undefined, so attempt to request the texture directly from the backend\n // eslint-disable-next-line deprecation/deprecation\n const params = new RenderTexture.Params(cacheable ? name : undefined, textureType);\n return options.system.createTextureFromElement(name, options.iModel, params, namedTex.format);\n } catch (_) {\n return undefined;\n }\n}\n\nasync function loadNamedTextures(options: ImdlDecodeOptions): Promise<Map<string, RenderTexture>> {\n const result = new Map<string, RenderTexture>();\n const namedTextures = options.document.json.namedTextures;\n if (!namedTextures)\n return result;\n\n const promises = new Array<Promise<void>>();\n for (const [name, namedTexture] of Object.entries(namedTextures)) {\n const texture = options.system.findTexture(name, options.iModel);\n if (texture) {\n result.set(name, texture);\n continue;\n } else if (namedTexture) {\n promises.push(loadNamedTexture(name, namedTexture, options).then((tx) => {\n if (tx)\n result.set(name, tx);\n }));\n }\n }\n\n if (promises.length > 0)\n await Promise.all(promises);\n\n return result;\n}\n\ninterface GraphicsOptions extends ImdlDecodeOptions {\n textures: Map<string, RenderTexture>;\n patterns: Map<string, RenderGeometry[]>;\n}\n\nfunction constantLodParamPropsFromJson(propsJson: { repetitions?: number, offset?: number[], minDistClamp?: number, maxDistClamp?: number } | undefined): TextureMapping.ConstantLodParamProps | undefined {\n if (undefined === propsJson)\n return undefined;\n\n const constantLodPops: TextureMapping.ConstantLodParamProps = {\n repetitions: JsonUtils.asDouble(propsJson.repetitions, 1.0),\n offset: { x: propsJson.offset ? JsonUtils.asDouble(propsJson.offset[0]) : 0.0, y: propsJson.offset ? JsonUtils.asDouble(propsJson.offset[1]) : 0.0 },\n minDistClamp: JsonUtils.asDouble(propsJson.minDistClamp, 1.0),\n maxDistClamp: JsonUtils.asDouble(propsJson.maxDistClamp, 4096.0 * 1024.0 * 1024.0),\n };\n return constantLodPops;\n}\n\nfunction textureMappingFromJson(json: ImdlTextureMapping | undefined, options: GraphicsOptions): TextureMapping | undefined {\n if (!json)\n return undefined;\n\n const texture = options.textures.get(JsonUtils.asString(json.name));\n if (!texture)\n return undefined;\n\n const paramsJson = json.params;\n const tf = paramsJson.transform;\n\n const paramProps: TextureMapping.ParamProps = {\n textureMat2x3: new TextureMapping.Trans2x3(tf[0][0], tf[0][1], tf[0][2], tf[1][0], tf[1][1], tf[1][2]),\n textureWeight: JsonUtils.asDouble(paramsJson.weight, 1.0),\n mapMode: JsonUtils.asInt(paramsJson.mode),\n worldMapping: JsonUtils.asBool(paramsJson.worldMapping),\n useConstantLod: JsonUtils.asBool(paramsJson.useConstantLod),\n constantLodProps: constantLodParamPropsFromJson(paramsJson.constantLodParams),\n };\n\n const textureMapping = new TextureMapping(texture, new TextureMapping.Params(paramProps));\n\n const normalMapJson = json.normalMapParams;\n if (normalMapJson) {\n let normalMap;\n const normalTexName = JsonUtils.asString(normalMapJson.textureName);\n if (normalTexName.length === 0 || undefined !== (normalMap = options.textures.get(normalTexName))) {\n textureMapping.normalMapParams = {\n normalMap,\n greenUp: JsonUtils.asBool(normalMapJson.greenUp),\n scale: JsonUtils.asDouble(normalMapJson.scale, 1),\n useConstantLod: JsonUtils.asBool(normalMapJson.useConstantLod),\n };\n }\n }\n\n return textureMapping;\n}\n\nfunction getMaterial(mat: string | Imdl.SurfaceMaterialParams, options: GraphicsOptions): RenderMaterial | undefined {\n if (typeof mat !== \"string\") {\n const args = toMaterialParams(mat);\n return options.system.createRenderMaterial(args);\n }\n\n const material = options.system.findMaterial(mat, options.iModel);\n if (material || !options.document.json.renderMaterials)\n return material;\n\n const json = options.document.json.renderMaterials[mat];\n if (!json)\n return undefined;\n\n function colorDefFromJson(col: ImdlColorDef | undefined): ColorDef | undefined {\n return col ? ColorDef.from(col[0] * 255 + 0.5, col[1] * 255 + 0.5, col[2] * 255 + 0.5) : undefined;\n }\n\n // eslint-disable-next-line deprecation/deprecation\n const params = new RenderMaterial.Params(mat);\n params.diffuseColor = colorDefFromJson(json.diffuseColor);\n if (json.diffuse !== undefined)\n params.diffuse = JsonUtils.asDouble(json.diffuse);\n\n params.specularColor = colorDefFromJson(json.specularColor);\n if (json.specular !== undefined)\n params.specular = JsonUtils.asDouble(json.specular);\n\n params.reflectColor = colorDefFromJson(json.reflectColor);\n if (json.reflect !== undefined)\n params.reflect = JsonUtils.asDouble(json.reflect);\n\n if (json.specularExponent !== undefined)\n params.specularExponent = json.specularExponent;\n\n if (undefined !== json.transparency)\n params.alpha = 1.0 - json.transparency;\n\n params.refract = JsonUtils.asDouble(json.refract);\n params.shadows = JsonUtils.asBool(json.shadows);\n params.ambient = JsonUtils.asDouble(json.ambient);\n\n if (undefined !== json.textureMapping)\n params.textureMapping = textureMappingFromJson(json.textureMapping.texture, options);\n\n // eslint-disable-next-line deprecation/deprecation\n return options.system.createMaterial(params, options.iModel);\n}\n\nfunction getModifiers(primitive: Imdl.Primitive): { viOrigin?: Point3d, instances?: InstancedGraphicParams } {\n const mod = primitive.modifier;\n switch (mod?.type) {\n case \"instances\":\n return {\n instances: {\n ...mod,\n transformCenter: Point3d.fromJSON(mod.transformCenter),\n range: mod.range ? Range3d.fromJSON(mod.range) : undefined,\n },\n };\n case \"viewIndependentOrigin\":\n return {\n viOrigin: Point3d.fromJSON(mod.origin),\n };\n default:\n return { };\n }\n}\n\nfunction createPrimitiveGeometry(primitive: Imdl.Primitive, options: GraphicsOptions, viOrigin: Point3d | undefined): RenderGeometry | undefined {\n switch (primitive.type) {\n case \"point\":\n return options.system.createPointStringGeometry({\n ...primitive.params,\n vertices: toVertexTable(primitive.params.vertices),\n indices: new VertexIndices(primitive.params.indices),\n }, viOrigin);\n case \"polyline\":\n return options.system.createPolylineGeometry({\n ...primitive.params,\n vertices: toVertexTable(primitive.params.vertices),\n polyline: {\n ...primitive.params.polyline,\n indices: new VertexIndices(primitive.params.polyline.indices),\n prevIndices: new VertexIndices(primitive.params.polyline.prevIndices),\n },\n }, viOrigin);\n case \"mesh\": {\n const surf = primitive.params.surface;\n let material;\n if (surf.material) {\n if (!surf.material.isAtlas)\n material = createSurfaceMaterial(getMaterial(surf.material.material, options));\n else\n material = surf.material;\n }\n\n let textureMapping;\n if (surf.textureMapping) {\n let texture;\n if (typeof surf.textureMapping.texture === \"string\") {\n texture = options.textures.get(surf.textureMapping.texture);\n } else {\n const gradient = Gradient.Symb.fromJSON(surf.textureMapping.texture);\n texture = options.system.getGradientTexture(gradient, options.iModel);\n }\n\n if (texture)\n textureMapping = { texture, alwaysDisplayed: surf.textureMapping.alwaysDisplayed };\n }\n\n return options.system.createMeshGeometry({\n ...primitive.params,\n edges: primitive.params.edges ? edgeParamsFromImdl(primitive.params.edges) : undefined,\n vertices: toVertexTable(primitive.params.vertices),\n auxChannels: primitive.params.auxChannels ? AuxChannelTable.fromJSON(primitive.params.auxChannels) : undefined,\n surface: {\n ...primitive.params.surface,\n material,\n textureMapping,\n indices: new VertexIndices(primitive.params.surface.indices),\n },\n }, viOrigin);\n }\n }\n}\n\nfunction createPrimitiveGraphic(primitive: Imdl.Primitive, options: GraphicsOptions): RenderGraphic | undefined {\n const mods = getModifiers(primitive);\n const geometry = createPrimitiveGeometry(primitive, options, mods.viOrigin);\n return geometry ? options.system.createRenderGraphic(geometry, mods.instances) : undefined;\n}\n\nfunction createPatternGeometries(primitives: Imdl.Primitive[], options: GraphicsOptions): RenderGeometry[] {\n const geometries = [];\n for (const primitive of primitives) {\n const geometry = createPrimitiveGeometry(primitive, options, undefined);\n if (geometry)\n geometries.push(geometry);\n }\n\n return geometries;\n}\n\nfunction createPatternGraphic(params: Imdl.AreaPatternParams, options: GraphicsOptions): RenderGraphic | undefined {\n const geometries = options.patterns.get(params.symbolName);\n if (!geometries || geometries.length === 0)\n return undefined;\n\n const clip = ClipVector.fromJSON(params.clip);\n const clipVolume = clip?.isValid ? options.system.createClipVolume(clip) : undefined;\n if (!clipVolume)\n return undefined;\n\n const viewIndependentOrigin = params.viewIndependentOrigin ? Point3d.fromJSON(params.viewIndependentOrigin) : undefined;\n const pattern = options.system.createAreaPattern({\n xyOffsets: params.xyOffsets,\n featureId: params.featureId,\n orgTransform: Transform.fromJSON(params.orgTransform),\n origin: Point2d.fromJSON(params.origin),\n scale: params.scale,\n spacing: Point2d.fromJSON(params.spacing),\n patternToModel: Transform.fromJSON(params.modelTransform),\n range: Range3d.fromJSON(params.range),\n symbolTranslation: Point3d.fromJSON(params.symbolTranslation),\n viewIndependentOrigin,\n });\n\n if (!pattern)\n return undefined;\n\n const branch = new GraphicBranch(true);\n for (const geometry of geometries) {\n const graphic = options.system.createRenderGraphic(geometry, pattern);\n if (graphic)\n branch.add(graphic);\n }\n\n return branch.isEmpty ? undefined : options.system.createGraphicBranch(branch, Transform.createIdentity(), { clipVolume });\n}\n\nfunction createNodeGraphics(node: Imdl.Node, options: GraphicsOptions): RenderGraphic[] {\n if (undefined === node.groupId)\n return createPrimitivesNodeGraphics(node, options);\n\n const graphics: RenderGraphic[] = [];\n for (const child of node.nodes) {\n graphics.push(...createPrimitivesNodeGraphics(child, options));\n }\n\n if (graphics.length === 0)\n return graphics;\n\n const branch = new GraphicBranch(true);\n branch.groupNodeId = node.groupId;\n branch.entries.push(...graphics);\n return [options.system.createBranch(branch, Transform.createIdentity())];\n}\n\nfunction createPrimitivesNodeGraphics(node: Imdl.PrimitivesNode, options: GraphicsOptions): RenderGraphic[] {\n let graphics = [];\n for (const primitive of node.primitives) {\n const graphic = primitive.type === \"pattern\" ? createPatternGraphic(primitive.params, options) : createPrimitiveGraphic(primitive, options);\n if (graphic)\n graphics.push(graphic);\n }\n\n if (!graphics.length)\n return graphics;\n\n if (undefined !== node.layerId) {\n const layerGraphic = 1 === graphics.length ? graphics[0] : options.system.createGraphicList(graphics);\n graphics = [options.system.createGraphicLayer(layerGraphic, node.layerId)];\n } else if (undefined !== node.animationNodeId) {\n const branch = new GraphicBranch(true);\n branch.animationId = node.animationId;\n branch.animationNodeId = node.animationNodeId;\n branch.entries.push(...graphics);\n graphics = [options.system.createBranch(branch, Transform.createIdentity())];\n }\n\n return graphics;\n}\n\n/** @internal */\nexport async function decodeImdlGraphics(options: ImdlDecodeOptions): Promise<RenderGraphic | undefined> {\n const textures = await loadNamedTextures(options);\n if (options.isCanceled && options.isCanceled())\n return undefined;\n\n const patterns = new Map<string, RenderGeometry[]>();\n const graphicsOptions = { ...options, textures, patterns };\n\n for (const [name, primitives] of options.document.patterns)\n patterns.set(name, createPatternGeometries(primitives, graphicsOptions));\n\n const system = options.system;\n const graphics: RenderGraphic[] = [];\n for (const node of options.document.nodes) {\n graphics.push(...createNodeGraphics(node, graphicsOptions));\n }\n\n switch (graphics.length) {\n case 0: return undefined;\n case 1: return graphics[0];\n default: return system.createGraphicList(graphics);\n }\n}\n"]}
@@ -1,7 +1,7 @@
1
1
  /** @packageDocumentation
2
2
  * @module Tiles
3
3
  */
4
- import { ByteStream, Id64String } from "@itwin/core-bentley";
4
+ import { ByteStream, Id64Set, Id64String } from "@itwin/core-bentley";
5
5
  import { BatchType, TileReadStatus } from "@itwin/core-common";
6
6
  import { IModelConnection } from "../IModelConnection";
7
7
  import { RenderGraphic } from "../render/RenderGraphic";
@@ -43,6 +43,7 @@ export interface ImdlReaderCreateArgs {
43
43
  containsTransformNodes?: boolean;
44
44
  /** Supplied if the graphics in the tile are to be split up based on the nodes in the timeline. */
45
45
  timeline?: ImdlTimeline;
46
+ modelGroups?: Id64Set[];
46
47
  }
47
48
  /** @internal */
48
49
  export declare function readImdlContent(args: ImdlReaderCreateArgs & {
@@ -1 +1 @@
1
- {"version":3,"file":"ImdlReader.d.ts","sourceRoot":"","sources":["../../../src/tile/ImdlReader.ts"],"names":[],"mappings":"AAIA;;GAEG;AAEH,OAAO,EAAE,UAAU,EAAE,UAAU,EAAE,MAAM,qBAAqB,CAAC;AAE7D,OAAO,EACL,SAAS,EAA+C,cAAc,EACvE,MAAM,oBAAoB,CAAC;AAE5B,OAAO,EAAE,gBAAgB,EAAE,MAAM,qBAAqB,CAAC;AAEvD,OAAO,EAAE,aAAa,EAAE,MAAM,yBAAyB,CAAC;AACxD,OAAO,EAAE,YAAY,EAAE,MAAM,0BAA0B,CAAC;AACxD,OAAO,EAAE,YAAY,EAAE,MAAM,wBAAwB,CAAC;AACtD,OAAO,EAAE,SAAS,EAAE,MAAM,0BAA0B,CAAC;AACrD,OAAO,EAAuB,cAAc,EAAE,iBAAiB,EAAE,YAAY,EAAqB,MAAM,kCAAkC,CAAC;AAC3I,OAAO,EAAsB,iBAAiB,EAAE,MAAM,YAAY,CAAC;AAInE,gBAAgB;AAChB,MAAM,WAAW,gBAAiB,SAAQ,iBAAiB;IACzD,UAAU,EAAE,cAAc,CAAC;CAC5B;AAED;;;;;;;;GAQG;AACH,wBAAsB,mBAAmB,CAAC,KAAK,EAAE,UAAU,EAAE,MAAM,EAAE,gBAAgB,EAAE,OAAO,EAAE,UAAU,EAAE,IAAI,EAAE,OAAO,EAAE,OAAO,CAAC,EAAE,YAAY,GAAG,KAAK,GAAG,OAAO,CAAC,aAAa,GAAG,SAAS,CAAC,CAS7L;AAED;;GAEG;AACH,MAAM,WAAW,oBAAoB;IACnC,MAAM,EAAE,UAAU,CAAC;IACnB,MAAM,EAAE,gBAAgB,CAAC;IACzB,OAAO,EAAE,UAAU,CAAC;IACpB,IAAI,EAAE,OAAO,CAAC;IACd,yFAAyF;IACzF,MAAM,CAAC,EAAE,OAAO,CAAC;IACjB,MAAM,EAAE,YAAY,CAAC;IACrB,IAAI,CAAC,EAAE,SAAS,CAAC;IACjB,SAAS,CAAC,EAAE,OAAO,CAAC;IACpB,UAAU,CAAC,EAAE,MAAM,OAAO,CAAC;IAC3B,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB,OAAO,CAAC,EAAE,YAAY,GAAG,KAAK,CAAC;IAC/B,sBAAsB,CAAC,EAAE,OAAO,CAAC;IACjC,kGAAkG;IAClG,QAAQ,CAAC,EAAE,YAAY,CAAC;CACzB;AAED,gBAAgB;AAChB,wBAAsB,eAAe,CAAC,IAAI,EAAE,oBAAoB,GAAG;IAAE,aAAa,CAAC,EAAE,CAAC,SAAS,EAAE,iBAAiB,KAAK,OAAO,CAAC,SAAS,CAAC,QAAQ,GAAG,cAAc,CAAC,CAAA;CAAE,GAAG,OAAO,CAAC,gBAAgB,CAAC,CAgEhM;AAED,gBAAgB;AAChB,MAAM,WAAW,UAAU;IACzB,IAAI,EAAE,MAAM,OAAO,CAAC,gBAAgB,CAAC,CAAC;CACvC;AAED,gBAAgB;AAChB,yBAAiB,UAAU,CAAC;IAC1B,SAAgB,MAAM,CAAC,IAAI,EAAE,oBAAoB,GAAG,UAAU,CAI7D;CACF"}
1
+ {"version":3,"file":"ImdlReader.d.ts","sourceRoot":"","sources":["../../../src/tile/ImdlReader.ts"],"names":[],"mappings":"AAIA;;GAEG;AAEH,OAAO,EAAE,UAAU,EAAE,OAAO,EAAE,UAAU,EAAE,MAAM,qBAAqB,CAAC;AAEtE,OAAO,EACL,SAAS,EAA+C,cAAc,EACvE,MAAM,oBAAoB,CAAC;AAE5B,OAAO,EAAE,gBAAgB,EAAE,MAAM,qBAAqB,CAAC;AAEvD,OAAO,EAAE,aAAa,EAAE,MAAM,yBAAyB,CAAC;AACxD,OAAO,EAAE,YAAY,EAAE,MAAM,0BAA0B,CAAC;AACxD,OAAO,EAAE,YAAY,EAAE,MAAM,wBAAwB,CAAC;AACtD,OAAO,EAAE,SAAS,EAAE,MAAM,0BAA0B,CAAC;AACrD,OAAO,EAAuB,cAAc,EAAE,iBAAiB,EAAE,YAAY,EAAqB,MAAM,kCAAkC,CAAC;AAC3I,OAAO,EAAsB,iBAAiB,EAAE,MAAM,YAAY,CAAC;AAInE,gBAAgB;AAChB,MAAM,WAAW,gBAAiB,SAAQ,iBAAiB;IACzD,UAAU,EAAE,cAAc,CAAC;CAC5B;AAED;;;;;;;;GAQG;AACH,wBAAsB,mBAAmB,CAAC,KAAK,EAAE,UAAU,EAAE,MAAM,EAAE,gBAAgB,EAAE,OAAO,EAAE,UAAU,EAAE,IAAI,EAAE,OAAO,EAAE,OAAO,CAAC,EAAE,YAAY,GAAG,KAAK,GAAG,OAAO,CAAC,aAAa,GAAG,SAAS,CAAC,CAS7L;AAED;;GAEG;AACH,MAAM,WAAW,oBAAoB;IACnC,MAAM,EAAE,UAAU,CAAC;IACnB,MAAM,EAAE,gBAAgB,CAAC;IACzB,OAAO,EAAE,UAAU,CAAC;IACpB,IAAI,EAAE,OAAO,CAAC;IACd,yFAAyF;IACzF,MAAM,CAAC,EAAE,OAAO,CAAC;IACjB,MAAM,EAAE,YAAY,CAAC;IACrB,IAAI,CAAC,EAAE,SAAS,CAAC;IACjB,SAAS,CAAC,EAAE,OAAO,CAAC;IACpB,UAAU,CAAC,EAAE,MAAM,OAAO,CAAC;IAC3B,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB,OAAO,CAAC,EAAE,YAAY,GAAG,KAAK,CAAC;IAC/B,sBAAsB,CAAC,EAAE,OAAO,CAAC;IACjC,kGAAkG;IAClG,QAAQ,CAAC,EAAE,YAAY,CAAC;IACxB,WAAW,CAAC,EAAE,OAAO,EAAE,CAAC;CACzB;AAED,gBAAgB;AAChB,wBAAsB,eAAe,CAAC,IAAI,EAAE,oBAAoB,GAAG;IAAE,aAAa,CAAC,EAAE,CAAC,SAAS,EAAE,iBAAiB,KAAK,OAAO,CAAC,SAAS,CAAC,QAAQ,GAAG,cAAc,CAAC,CAAA;CAAE,GAAG,OAAO,CAAC,gBAAgB,CAAC,CAiEhM;AAED,gBAAgB;AAChB,MAAM,WAAW,UAAU;IACzB,IAAI,EAAE,MAAM,OAAO,CAAC,gBAAgB,CAAC,CAAC;CACvC;AAED,gBAAgB;AAChB,yBAAiB,UAAU,CAAC;IAC1B,SAAgB,MAAM,CAAC,IAAI,EAAE,oBAAoB,GAAG,UAAU,CAI7D;CACF"}
@@ -62,6 +62,7 @@ async function readImdlContent(args) {
62
62
  maxVertexTableSize: IModelApp_1.IModelApp.renderSystem.maxTextureSize,
63
63
  omitEdges: false === args.loadEdges,
64
64
  createUntransformedRootNode: args.containsTransformNodes,
65
+ modelGroups: args.modelGroups,
65
66
  };
66
67
  const document = args.parseDocument ? (await args.parseDocument(parseOpts)) : (0, ParseImdlDocument_1.parseImdlDocument)({ ...parseOpts, timeline: args.timeline });
67
68
  if (isCanceled())
@@ -1 +1 @@
1
- {"version":3,"file":"ImdlReader.js","sourceRoot":"","sources":["../../../src/tile/ImdlReader.ts"],"names":[],"mappings":"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","sourcesContent":["/*---------------------------------------------------------------------------------------------\n* Copyright (c) Bentley Systems, Incorporated. All rights reserved.\n* See LICENSE.md in the project root for license terms and full copyright notice.\n*--------------------------------------------------------------------------------------------*/\n/** @packageDocumentation\n * @module Tiles\n */\n\nimport { ByteStream, Id64String } from \"@itwin/core-bentley\";\nimport { Point3d, Transform } from \"@itwin/core-geometry\";\nimport {\n BatchType, decodeTileContentDescription, TileReadError, TileReadStatus,\n} from \"@itwin/core-common\";\nimport { IModelApp } from \"../IModelApp\";\nimport { IModelConnection } from \"../IModelConnection\";\nimport { GraphicBranch } from \"../render/GraphicBranch\";\nimport { RenderGraphic } from \"../render/RenderGraphic\";\nimport { BatchOptions } from \"../render/GraphicBuilder\";\nimport { RenderSystem } from \"../render/RenderSystem\";\nimport { ImdlModel } from \"../common/imdl/ImdlModel\";\nimport { convertFeatureTable, ImdlParseError, ImdlParserOptions, ImdlTimeline, parseImdlDocument } from \"../common/imdl/ParseImdlDocument\";\nimport { decodeImdlGraphics, IModelTileContent } from \"./internal\";\n\n/* eslint-disable no-restricted-syntax */\n\n/** @internal */\nexport interface ImdlReaderResult extends IModelTileContent {\n readStatus: TileReadStatus;\n}\n\n/** Convert the byte array returned by [[TileAdmin.requestElementGraphics]] into a [[RenderGraphic]].\n * @param bytes The binary graphics data obtained from `requestElementGraphics`.\n * @param iModel The iModel with which the graphics are associated.\n * @param modelId The Id of the [[GeometricModelState]] with which the graphics are associated. Can be an invalid Id.\n * @param is3d True if the graphics are 3d.\n * @param options Options customizing how [Feature]($common)s within the graphic can be resymbolized; or false if you don't want to produce a batch.\n * @public\n * @extensions\n */\nexport async function readElementGraphics(bytes: Uint8Array, iModel: IModelConnection, modelId: Id64String, is3d: boolean, options?: BatchOptions | false): Promise<RenderGraphic | undefined> {\n const stream = ByteStream.fromUint8Array(bytes);\n const reader = ImdlReader.create({\n stream, iModel, modelId, is3d, options,\n system: IModelApp.renderSystem,\n });\n\n const result = await reader.read();\n return result.graphic;\n}\n\n/** Arguments supplied to [[ImdlReader.create]]\n * @internal\n */\nexport interface ImdlReaderCreateArgs {\n stream: ByteStream;\n iModel: IModelConnection;\n modelId: Id64String;\n is3d: boolean;\n /** If undefined, the tile's leafness will be deduced by decodeTileContentDescription. */\n isLeaf?: boolean;\n system: RenderSystem;\n type?: BatchType; // default Primary\n loadEdges?: boolean; // default true\n isCanceled?: () => boolean;\n sizeMultiplier?: number;\n options?: BatchOptions | false;\n containsTransformNodes?: boolean; // default false\n /** Supplied if the graphics in the tile are to be split up based on the nodes in the timeline. */\n timeline?: ImdlTimeline;\n}\n\n/** @internal */\nexport async function readImdlContent(args: ImdlReaderCreateArgs & { parseDocument?: (parseOpts: ImdlParserOptions) => Promise<ImdlModel.Document | ImdlParseError> }): Promise<ImdlReaderResult> {\n const isCanceled = args.isCanceled ?? (() => false);\n let content;\n try {\n content = decodeTileContentDescription({\n stream: args.stream,\n sizeMultiplier: args.sizeMultiplier,\n is2d: !args.is3d,\n options: IModelApp.tileAdmin,\n isVolumeClassifier: BatchType.VolumeClassifier === args.type,\n isLeaf: args.isLeaf,\n });\n } catch (e) {\n if (e instanceof TileReadError)\n return { isLeaf: true, readStatus: e.errorNumber };\n else\n throw e;\n }\n\n args.stream.reset();\n const parseOpts: ImdlParserOptions = {\n data: args.stream.readBytes(0, args.stream.length),\n batchModelId: args.modelId,\n is3d: args.is3d,\n maxVertexTableSize: IModelApp.renderSystem.maxTextureSize,\n omitEdges: false === args.loadEdges,\n createUntransformedRootNode: args.containsTransformNodes,\n };\n\n const document = args.parseDocument ? (await args.parseDocument(parseOpts)) : parseImdlDocument({ ...parseOpts, timeline: args.timeline });\n if (isCanceled())\n return { isLeaf: true, readStatus: TileReadStatus.Canceled };\n else if (typeof document === \"number\")\n return { isLeaf: true, readStatus: document };\n\n let graphic = await decodeImdlGraphics({\n system: args.system,\n iModel: args.iModel,\n document,\n isCanceled: args.isCanceled,\n });\n\n if (isCanceled())\n return { isLeaf: true, readStatus: TileReadStatus.Canceled };\n\n if (graphic && false !== args.options) {\n const featureTable = convertFeatureTable(document.featureTable, args.modelId);\n graphic = args.system.createBatch(graphic, featureTable, content.contentRange, args.options);\n }\n\n if (graphic && document.rtcCenter) {\n const rtcBranch = new GraphicBranch(true);\n rtcBranch.add(graphic);\n graphic = args.system.createBranch(rtcBranch, Transform.createTranslation(Point3d.fromJSON(document.rtcCenter)));\n }\n\n return {\n readStatus: TileReadStatus.Success,\n isLeaf: content.isLeaf,\n sizeMultiplier: content.sizeMultiplier,\n contentRange: content.contentRange.isNull ? undefined : content.contentRange,\n graphic,\n emptySubRangeMask: content.emptySubRangeMask,\n };\n}\n\n/** @internal */\nexport interface ImdlReader {\n read: () => Promise<ImdlReaderResult>;\n}\n\n/** @internal */\nexport namespace ImdlReader {\n export function create(args: ImdlReaderCreateArgs): ImdlReader {\n return {\n read: async () => readImdlContent(args),\n };\n }\n}\n"]}
1
+ {"version":3,"file":"ImdlReader.js","sourceRoot":"","sources":["../../../src/tile/ImdlReader.ts"],"names":[],"mappings":";AAAA;;;+FAG+F;AAC/F;;GAEG;;;AAEH,sDAAsE;AACtE,wDAA0D;AAC1D,oDAE4B;AAC5B,4CAAyC;AAEzC,2DAAwD;AAKxD,wEAA2I;AAC3I,yCAAmE;AASnE;;;;;;;;GAQG;AACI,KAAK,UAAU,mBAAmB,CAAC,KAAiB,EAAE,MAAwB,EAAE,OAAmB,EAAE,IAAa,EAAE,OAA8B;IACvJ,MAAM,MAAM,GAAG,yBAAU,CAAC,cAAc,CAAC,KAAK,CAAC,CAAC;IAChD,MAAM,MAAM,GAAG,UAAU,CAAC,MAAM,CAAC;QAC/B,MAAM,EAAE,MAAM,EAAE,OAAO,EAAE,IAAI,EAAE,OAAO;QACtC,MAAM,EAAE,qBAAS,CAAC,YAAY;KAC/B,CAAC,CAAC;IAEH,MAAM,MAAM,GAAG,MAAM,MAAM,CAAC,IAAI,EAAE,CAAC;IACnC,OAAO,MAAM,CAAC,OAAO,CAAC;AACxB,CAAC;AATD,kDASC;AAwBD,gBAAgB;AACT,KAAK,UAAU,eAAe,CAAC,IAA+H;IACnK,MAAM,UAAU,GAAG,IAAI,CAAC,UAAU,IAAI,CAAC,GAAG,EAAE,CAAC,KAAK,CAAC,CAAC;IACpD,IAAI,OAAO,CAAC;IACZ,IAAI;QACF,OAAO,GAAG,IAAA,0CAA4B,EAAC;YACrC,MAAM,EAAE,IAAI,CAAC,MAAM;YACnB,cAAc,EAAE,IAAI,CAAC,cAAc;YACnC,IAAI,EAAE,CAAC,IAAI,CAAC,IAAI;YAChB,OAAO,EAAE,qBAAS,CAAC,SAAS;YAC5B,kBAAkB,EAAE,uBAAS,CAAC,gBAAgB,KAAK,IAAI,CAAC,IAAI;YAC5D,MAAM,EAAE,IAAI,CAAC,MAAM;SACpB,CAAC,CAAC;KACJ;IAAC,OAAO,CAAC,EAAE;QACV,IAAI,CAAC,YAAY,2BAAa;YAC5B,OAAO,EAAE,MAAM,EAAE,IAAI,EAAE,UAAU,EAAE,CAAC,CAAC,WAAW,EAAE,CAAC;;YAEnD,MAAM,CAAC,CAAC;KACX;IAED,IAAI,CAAC,MAAM,CAAC,KAAK,EAAE,CAAC;IACpB,MAAM,SAAS,GAAsB;QACnC,IAAI,EAAE,IAAI,CAAC,MAAM,CAAC,SAAS,CAAC,CAAC,EAAE,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC;QAClD,YAAY,EAAE,IAAI,CAAC,OAAO;QAC1B,IAAI,EAAE,IAAI,CAAC,IAAI;QACf,kBAAkB,EAAE,qBAAS,CAAC,YAAY,CAAC,cAAc;QACzD,SAAS,EAAE,KAAK,KAAK,IAAI,CAAC,SAAS;QACnC,2BAA2B,EAAE,IAAI,CAAC,sBAAsB;QACxD,WAAW,EAAE,IAAI,CAAC,WAAW;KAC9B,CAAC;IAEF,MAAM,QAAQ,GAAG,IAAI,CAAC,aAAa,CAAC,CAAC,CAAC,CAAC,MAAM,IAAI,CAAC,aAAa,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,IAAA,qCAAiB,EAAC,EAAE,GAAG,SAAS,EAAE,QAAQ,EAAE,IAAI,CAAC,QAAQ,EAAE,CAAC,CAAC;IAC3I,IAAI,UAAU,EAAE;QACd,OAAO,EAAE,MAAM,EAAE,IAAI,EAAE,UAAU,EAAE,4BAAc,CAAC,QAAQ,EAAE,CAAC;SAC1D,IAAI,OAAO,QAAQ,KAAK,QAAQ;QACnC,OAAO,EAAE,MAAM,EAAE,IAAI,EAAE,UAAU,EAAE,QAAQ,EAAE,CAAC;IAEhD,IAAI,OAAO,GAAG,MAAM,IAAA,6BAAkB,EAAC;QACrC,MAAM,EAAE,IAAI,CAAC,MAAM;QACnB,MAAM,EAAE,IAAI,CAAC,MAAM;QACnB,QAAQ;QACR,UAAU,EAAE,IAAI,CAAC,UAAU;KAC5B,CAAC,CAAC;IAEH,IAAI,UAAU,EAAE;QACd,OAAO,EAAE,MAAM,EAAE,IAAI,EAAE,UAAU,EAAE,4BAAc,CAAC,QAAQ,EAAE,CAAC;IAE/D,IAAI,OAAO,IAAI,KAAK,KAAK,IAAI,CAAC,OAAO,EAAE;QACrC,MAAM,YAAY,GAAG,IAAA,uCAAmB,EAAC,QAAQ,CAAC,YAAY,EAAE,IAAI,CAAC,OAAO,CAAC,CAAC;QAC9E,OAAO,GAAG,IAAI,CAAC,MAAM,CAAC,WAAW,CAAC,OAAO,EAAE,YAAY,EAAE,OAAO,CAAC,YAAY,EAAE,IAAI,CAAC,OAAO,CAAC,CAAC;KAC9F;IAED,IAAI,OAAO,IAAI,QAAQ,CAAC,SAAS,EAAE;QACjC,MAAM,SAAS,GAAG,IAAI,6BAAa,CAAC,IAAI,CAAC,CAAC;QAC1C,SAAS,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC;QACvB,OAAO,GAAG,IAAI,CAAC,MAAM,CAAC,YAAY,CAAC,SAAS,EAAE,yBAAS,CAAC,iBAAiB,CAAC,uBAAO,CAAC,QAAQ,CAAC,QAAQ,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC;KAClH;IAED,OAAO;QACL,UAAU,EAAE,4BAAc,CAAC,OAAO;QAClC,MAAM,EAAE,OAAO,CAAC,MAAM;QACtB,cAAc,EAAE,OAAO,CAAC,cAAc;QACtC,YAAY,EAAE,OAAO,CAAC,YAAY,CAAC,MAAM,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,OAAO,CAAC,YAAY;QAC5E,OAAO;QACP,iBAAiB,EAAE,OAAO,CAAC,iBAAiB;KAC7C,CAAC;AACJ,CAAC;AAjED,0CAiEC;AAOD,gBAAgB;AAChB,IAAiB,UAAU,CAM1B;AAND,WAAiB,UAAU;IACzB,SAAgB,MAAM,CAAC,IAA0B;QAC/C,OAAO;YACL,IAAI,EAAE,KAAK,IAAI,EAAE,CAAC,eAAe,CAAC,IAAI,CAAC;SACxC,CAAC;IACJ,CAAC;IAJe,iBAAM,SAIrB,CAAA;AACH,CAAC,EANgB,UAAU,GAAV,kBAAU,KAAV,kBAAU,QAM1B","sourcesContent":["/*---------------------------------------------------------------------------------------------\n* Copyright (c) Bentley Systems, Incorporated. All rights reserved.\n* See LICENSE.md in the project root for license terms and full copyright notice.\n*--------------------------------------------------------------------------------------------*/\n/** @packageDocumentation\n * @module Tiles\n */\n\nimport { ByteStream, Id64Set, Id64String } from \"@itwin/core-bentley\";\nimport { Point3d, Transform } from \"@itwin/core-geometry\";\nimport {\n BatchType, decodeTileContentDescription, TileReadError, TileReadStatus,\n} from \"@itwin/core-common\";\nimport { IModelApp } from \"../IModelApp\";\nimport { IModelConnection } from \"../IModelConnection\";\nimport { GraphicBranch } from \"../render/GraphicBranch\";\nimport { RenderGraphic } from \"../render/RenderGraphic\";\nimport { BatchOptions } from \"../render/GraphicBuilder\";\nimport { RenderSystem } from \"../render/RenderSystem\";\nimport { ImdlModel } from \"../common/imdl/ImdlModel\";\nimport { convertFeatureTable, ImdlParseError, ImdlParserOptions, ImdlTimeline, parseImdlDocument } from \"../common/imdl/ParseImdlDocument\";\nimport { decodeImdlGraphics, IModelTileContent } from \"./internal\";\n\n/* eslint-disable no-restricted-syntax */\n\n/** @internal */\nexport interface ImdlReaderResult extends IModelTileContent {\n readStatus: TileReadStatus;\n}\n\n/** Convert the byte array returned by [[TileAdmin.requestElementGraphics]] into a [[RenderGraphic]].\n * @param bytes The binary graphics data obtained from `requestElementGraphics`.\n * @param iModel The iModel with which the graphics are associated.\n * @param modelId The Id of the [[GeometricModelState]] with which the graphics are associated. Can be an invalid Id.\n * @param is3d True if the graphics are 3d.\n * @param options Options customizing how [Feature]($common)s within the graphic can be resymbolized; or false if you don't want to produce a batch.\n * @public\n * @extensions\n */\nexport async function readElementGraphics(bytes: Uint8Array, iModel: IModelConnection, modelId: Id64String, is3d: boolean, options?: BatchOptions | false): Promise<RenderGraphic | undefined> {\n const stream = ByteStream.fromUint8Array(bytes);\n const reader = ImdlReader.create({\n stream, iModel, modelId, is3d, options,\n system: IModelApp.renderSystem,\n });\n\n const result = await reader.read();\n return result.graphic;\n}\n\n/** Arguments supplied to [[ImdlReader.create]]\n * @internal\n */\nexport interface ImdlReaderCreateArgs {\n stream: ByteStream;\n iModel: IModelConnection;\n modelId: Id64String;\n is3d: boolean;\n /** If undefined, the tile's leafness will be deduced by decodeTileContentDescription. */\n isLeaf?: boolean;\n system: RenderSystem;\n type?: BatchType; // default Primary\n loadEdges?: boolean; // default true\n isCanceled?: () => boolean;\n sizeMultiplier?: number;\n options?: BatchOptions | false;\n containsTransformNodes?: boolean; // default false\n /** Supplied if the graphics in the tile are to be split up based on the nodes in the timeline. */\n timeline?: ImdlTimeline;\n modelGroups?: Id64Set[];\n}\n\n/** @internal */\nexport async function readImdlContent(args: ImdlReaderCreateArgs & { parseDocument?: (parseOpts: ImdlParserOptions) => Promise<ImdlModel.Document | ImdlParseError> }): Promise<ImdlReaderResult> {\n const isCanceled = args.isCanceled ?? (() => false);\n let content;\n try {\n content = decodeTileContentDescription({\n stream: args.stream,\n sizeMultiplier: args.sizeMultiplier,\n is2d: !args.is3d,\n options: IModelApp.tileAdmin,\n isVolumeClassifier: BatchType.VolumeClassifier === args.type,\n isLeaf: args.isLeaf,\n });\n } catch (e) {\n if (e instanceof TileReadError)\n return { isLeaf: true, readStatus: e.errorNumber };\n else\n throw e;\n }\n\n args.stream.reset();\n const parseOpts: ImdlParserOptions = {\n data: args.stream.readBytes(0, args.stream.length),\n batchModelId: args.modelId,\n is3d: args.is3d,\n maxVertexTableSize: IModelApp.renderSystem.maxTextureSize,\n omitEdges: false === args.loadEdges,\n createUntransformedRootNode: args.containsTransformNodes,\n modelGroups: args.modelGroups,\n };\n\n const document = args.parseDocument ? (await args.parseDocument(parseOpts)) : parseImdlDocument({ ...parseOpts, timeline: args.timeline });\n if (isCanceled())\n return { isLeaf: true, readStatus: TileReadStatus.Canceled };\n else if (typeof document === \"number\")\n return { isLeaf: true, readStatus: document };\n\n let graphic = await decodeImdlGraphics({\n system: args.system,\n iModel: args.iModel,\n document,\n isCanceled: args.isCanceled,\n });\n\n if (isCanceled())\n return { isLeaf: true, readStatus: TileReadStatus.Canceled };\n\n if (graphic && false !== args.options) {\n const featureTable = convertFeatureTable(document.featureTable, args.modelId);\n graphic = args.system.createBatch(graphic, featureTable, content.contentRange, args.options);\n }\n\n if (graphic && document.rtcCenter) {\n const rtcBranch = new GraphicBranch(true);\n rtcBranch.add(graphic);\n graphic = args.system.createBranch(rtcBranch, Transform.createTranslation(Point3d.fromJSON(document.rtcCenter)));\n }\n\n return {\n readStatus: TileReadStatus.Success,\n isLeaf: content.isLeaf,\n sizeMultiplier: content.sizeMultiplier,\n contentRange: content.contentRange.isNull ? undefined : content.contentRange,\n graphic,\n emptySubRangeMask: content.emptySubRangeMask,\n };\n}\n\n/** @internal */\nexport interface ImdlReader {\n read: () => Promise<ImdlReaderResult>;\n}\n\n/** @internal */\nexport namespace ImdlReader {\n export function create(args: ImdlReaderCreateArgs): ImdlReader {\n return {\n read: async () => readImdlContent(args),\n };\n }\n}\n"]}
@@ -1 +1 @@
1
- {"version":3,"file":"RealityModelTileTree.d.ts","sourceRoot":"","sources":["../../../src/tile/RealityModelTileTree.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"RealityModelTileTree.d.ts","sourceRoot":"","sources":["../../../src/tile/RealityModelTileTree.ts"],"names":[],"mappings":"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"}
@@ -671,10 +671,9 @@ class RealityTreeReference extends RealityModelTileTree.Reference {
671
671
  }
672
672
  async getToolTip(hit) {
673
673
  const tree = this.treeOwner.tileTree;
674
- if (undefined === tree || hit.iModel !== tree.iModel)
674
+ if (!(tree instanceof internal_1.RealityTileTree) || hit.iModel !== tree.iModel)
675
675
  return undefined;
676
- const map = tree.loader.getBatchIdMap();
677
- const batch = undefined !== map ? map.getBatchProperties(hit.sourceId) : undefined;
676
+ const batch = tree.batchTableProperties?.getFeatureProperties(hit.sourceId);
678
677
  if (undefined === batch && tree.modelId !== hit.sourceId)
679
678
  return undefined;
680
679
  const strings = [];