@itwin/core-frontend 5.0.0-dev.90 → 5.0.0-dev.92
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/lib/cjs/ContextRealityModelState.d.ts.map +1 -1
- package/lib/cjs/ContextRealityModelState.js +2 -0
- package/lib/cjs/ContextRealityModelState.js.map +1 -1
- package/lib/cjs/ModelState.d.ts.map +1 -1
- package/lib/cjs/ModelState.js +4 -0
- package/lib/cjs/ModelState.js.map +1 -1
- package/lib/cjs/NoRenderApp.d.ts +1 -1
- package/lib/cjs/NoRenderApp.d.ts.map +1 -1
- package/lib/cjs/NoRenderApp.js +1 -1
- package/lib/cjs/NoRenderApp.js.map +1 -1
- package/lib/cjs/Viewport.d.ts +1 -0
- package/lib/cjs/Viewport.d.ts.map +1 -1
- package/lib/cjs/Viewport.js +4 -1
- package/lib/cjs/Viewport.js.map +1 -1
- package/lib/cjs/common/internal/render/MeshParams.d.ts +2 -0
- package/lib/cjs/common/internal/render/MeshParams.d.ts.map +1 -1
- package/lib/cjs/common/internal/render/MeshParams.js.map +1 -1
- package/lib/cjs/internal/render/{RealityMeshGraphicParams.d.ts → MeshMapLayerGraphicParams.d.ts} +4 -4
- package/lib/cjs/internal/render/MeshMapLayerGraphicParams.d.ts.map +1 -0
- package/lib/cjs/internal/render/{RealityMeshGraphicParams.js → MeshMapLayerGraphicParams.js} +1 -1
- package/lib/cjs/internal/render/MeshMapLayerGraphicParams.js.map +1 -0
- package/lib/cjs/internal/render/webgl/BackgroundMapDrape.js +1 -1
- package/lib/cjs/internal/render/webgl/BackgroundMapDrape.js.map +1 -1
- package/lib/cjs/internal/render/webgl/MapLayerParams.d.ts +54 -0
- package/lib/cjs/internal/render/webgl/MapLayerParams.d.ts.map +1 -0
- package/lib/cjs/internal/render/webgl/MapLayerParams.js +198 -0
- package/lib/cjs/internal/render/webgl/MapLayerParams.js.map +1 -0
- package/lib/cjs/internal/render/webgl/Mesh.js +1 -1
- package/lib/cjs/internal/render/webgl/Mesh.js.map +1 -1
- package/lib/cjs/internal/render/webgl/PlanarClassifier.d.ts.map +1 -1
- package/lib/cjs/internal/render/webgl/PlanarClassifier.js.map +1 -1
- package/lib/cjs/internal/render/webgl/RealityMesh.d.ts +6 -35
- package/lib/cjs/internal/render/webgl/RealityMesh.d.ts.map +1 -1
- package/lib/cjs/internal/render/webgl/RealityMesh.js +41 -154
- package/lib/cjs/internal/render/webgl/RealityMesh.js.map +1 -1
- package/lib/cjs/internal/render/webgl/RenderFlags.d.ts +7 -1
- package/lib/cjs/internal/render/webgl/RenderFlags.d.ts.map +1 -1
- package/lib/cjs/internal/render/webgl/RenderFlags.js +7 -0
- package/lib/cjs/internal/render/webgl/RenderFlags.js.map +1 -1
- package/lib/cjs/internal/render/webgl/ShaderBuilder.d.ts +12 -11
- package/lib/cjs/internal/render/webgl/ShaderBuilder.d.ts.map +1 -1
- package/lib/cjs/internal/render/webgl/ShaderBuilder.js +13 -8
- package/lib/cjs/internal/render/webgl/ShaderBuilder.js.map +1 -1
- package/lib/cjs/internal/render/webgl/SurfaceGeometry.d.ts +5 -2
- package/lib/cjs/internal/render/webgl/SurfaceGeometry.d.ts.map +1 -1
- package/lib/cjs/internal/render/webgl/SurfaceGeometry.js +49 -3
- package/lib/cjs/internal/render/webgl/SurfaceGeometry.js.map +1 -1
- package/lib/cjs/internal/render/webgl/System.d.ts +2 -2
- package/lib/cjs/internal/render/webgl/System.d.ts.map +1 -1
- package/lib/cjs/internal/render/webgl/System.js.map +1 -1
- package/lib/cjs/internal/render/webgl/Target.d.ts +1 -1
- package/lib/cjs/internal/render/webgl/Target.d.ts.map +1 -1
- package/lib/cjs/internal/render/webgl/Target.js +11 -2
- package/lib/cjs/internal/render/webgl/Target.js.map +1 -1
- package/lib/cjs/internal/render/webgl/glsl/AmbientOcclusion.js +1 -1
- package/lib/cjs/internal/render/webgl/glsl/Atmosphere.js +1 -1
- package/lib/cjs/internal/render/webgl/glsl/Blur.js +1 -1
- package/lib/cjs/internal/render/webgl/glsl/ClearPickAndColor.js +1 -1
- package/lib/cjs/internal/render/webgl/glsl/ClearTranslucent.js +1 -1
- package/lib/cjs/internal/render/webgl/glsl/Clipping.js +1 -1
- package/lib/cjs/internal/render/webgl/glsl/Combine3Textures.js +1 -1
- package/lib/cjs/internal/render/webgl/glsl/CombineTextures.js +1 -1
- package/lib/cjs/internal/render/webgl/glsl/Composite.js +1 -1
- package/lib/cjs/internal/render/webgl/glsl/CopyColor.js +1 -1
- package/lib/cjs/internal/render/webgl/glsl/CopyPickBuffers.js +1 -1
- package/lib/cjs/internal/render/webgl/glsl/CopyStencil.js +5 -5
- package/lib/cjs/internal/render/webgl/glsl/EDL.js +4 -4
- package/lib/cjs/internal/render/webgl/glsl/EVSMFromDepth.js +1 -1
- package/lib/cjs/internal/render/webgl/glsl/Edge.js +1 -1
- package/lib/cjs/internal/render/webgl/glsl/FeatureSymbology.js +2 -2
- package/lib/cjs/internal/render/webgl/glsl/Fragment.js +9 -9
- package/lib/cjs/internal/render/webgl/glsl/LogarithmicDepthBuffer.js +1 -1
- package/lib/cjs/internal/render/webgl/glsl/MaplayerDraping.d.ts +12 -0
- package/lib/cjs/internal/render/webgl/glsl/MaplayerDraping.d.ts.map +1 -0
- package/lib/cjs/internal/render/webgl/glsl/MaplayerDraping.js +116 -0
- package/lib/cjs/internal/render/webgl/glsl/MaplayerDraping.js.map +1 -0
- package/lib/cjs/internal/render/webgl/glsl/PlanarClassification.js +3 -3
- package/lib/cjs/internal/render/webgl/glsl/PointCloud.js +2 -2
- package/lib/cjs/internal/render/webgl/glsl/PointCloud.js.map +1 -1
- package/lib/cjs/internal/render/webgl/glsl/RealityMesh.d.ts.map +1 -1
- package/lib/cjs/internal/render/webgl/glsl/RealityMesh.js +6 -91
- package/lib/cjs/internal/render/webgl/glsl/RealityMesh.js.map +1 -1
- package/lib/cjs/internal/render/webgl/glsl/ScreenSpaceEffect.js +1 -1
- package/lib/cjs/internal/render/webgl/glsl/SkyBox.js +1 -1
- package/lib/cjs/internal/render/webgl/glsl/SkySphere.js +1 -1
- package/lib/cjs/internal/render/webgl/glsl/SolarShadowMapping.js +1 -1
- package/lib/cjs/internal/render/webgl/glsl/Surface.d.ts +1 -1
- package/lib/cjs/internal/render/webgl/glsl/Surface.d.ts.map +1 -1
- package/lib/cjs/internal/render/webgl/glsl/Surface.js +73 -7
- package/lib/cjs/internal/render/webgl/glsl/Surface.js.map +1 -1
- package/lib/cjs/internal/render/webgl/glsl/Translucency.js +1 -1
- package/lib/cjs/internal/render/webgl/glsl/Wiremesh.js +1 -1
- package/lib/cjs/internal/tile/B3dmReader.d.ts +2 -1
- package/lib/cjs/internal/tile/B3dmReader.d.ts.map +1 -1
- package/lib/cjs/internal/tile/B3dmReader.js +5 -5
- package/lib/cjs/internal/tile/B3dmReader.js.map +1 -1
- package/lib/cjs/internal/tile/I3dmReader.d.ts +2 -1
- package/lib/cjs/internal/tile/I3dmReader.d.ts.map +1 -1
- package/lib/cjs/internal/tile/I3dmReader.js +4 -4
- package/lib/cjs/internal/tile/I3dmReader.js.map +1 -1
- package/lib/cjs/internal/tile/IModelTileTree.d.ts.map +1 -1
- package/lib/cjs/internal/tile/IModelTileTree.js.map +1 -1
- package/lib/cjs/internal/tile/ImdlGraphicsCreator.d.ts +2 -0
- package/lib/cjs/internal/tile/ImdlGraphicsCreator.d.ts.map +1 -1
- package/lib/cjs/internal/tile/ImdlGraphicsCreator.js +1 -0
- package/lib/cjs/internal/tile/ImdlGraphicsCreator.js.map +1 -1
- package/lib/cjs/internal/tile/PrimaryTileTree.js.map +1 -1
- package/lib/cjs/internal/tile/RealityModelTileTree.d.ts +14 -3
- package/lib/cjs/internal/tile/RealityModelTileTree.d.ts.map +1 -1
- package/lib/cjs/internal/tile/RealityModelTileTree.js +51 -11
- package/lib/cjs/internal/tile/RealityModelTileTree.js.map +1 -1
- package/lib/cjs/internal/tile/RealityTileLoader.d.ts.map +1 -1
- package/lib/cjs/internal/tile/RealityTileLoader.js +8 -2
- package/lib/cjs/internal/tile/RealityTileLoader.js.map +1 -1
- package/lib/cjs/render/RealityMeshParams.d.ts +3 -0
- package/lib/cjs/render/RealityMeshParams.d.ts.map +1 -1
- package/lib/cjs/render/RealityMeshParams.js.map +1 -1
- package/lib/cjs/render/RenderSystem.d.ts +4 -3
- package/lib/cjs/render/RenderSystem.d.ts.map +1 -1
- package/lib/cjs/render/RenderSystem.js +2 -1
- package/lib/cjs/render/RenderSystem.js.map +1 -1
- package/lib/cjs/render/RenderTarget.d.ts +1 -1
- package/lib/cjs/render/RenderTarget.d.ts.map +1 -1
- package/lib/cjs/render/RenderTarget.js +1 -1
- package/lib/cjs/render/RenderTarget.js.map +1 -1
- package/lib/cjs/tile/GltfReader.d.ts +8 -2
- package/lib/cjs/tile/GltfReader.d.ts.map +1 -1
- package/lib/cjs/tile/GltfReader.js +11 -2
- package/lib/cjs/tile/GltfReader.js.map +1 -1
- package/lib/cjs/tile/ImdlReader.d.ts +2 -1
- package/lib/cjs/tile/ImdlReader.d.ts.map +1 -1
- package/lib/cjs/tile/ImdlReader.js.map +1 -1
- package/lib/cjs/tile/LayerTileTreeHandler.d.ts +47 -0
- package/lib/cjs/tile/LayerTileTreeHandler.d.ts.map +1 -0
- package/lib/cjs/tile/LayerTileTreeHandler.js +54 -0
- package/lib/cjs/tile/LayerTileTreeHandler.js.map +1 -0
- package/lib/cjs/tile/LayerTileTreeReferenceHandler.d.ts +36 -0
- package/lib/cjs/tile/LayerTileTreeReferenceHandler.d.ts.map +1 -0
- package/lib/cjs/tile/LayerTileTreeReferenceHandler.js +150 -0
- package/lib/cjs/tile/LayerTileTreeReferenceHandler.js.map +1 -0
- package/lib/cjs/tile/Tile.d.ts +2 -0
- package/lib/cjs/tile/Tile.d.ts.map +1 -1
- package/lib/cjs/tile/Tile.js +7 -0
- package/lib/cjs/tile/Tile.js.map +1 -1
- package/lib/cjs/tile/TileTree.d.ts +3 -1
- package/lib/cjs/tile/TileTree.d.ts.map +1 -1
- package/lib/cjs/tile/TileTree.js +2 -0
- package/lib/cjs/tile/TileTree.js.map +1 -1
- package/lib/cjs/tile/internal.d.ts +2 -0
- package/lib/cjs/tile/internal.d.ts.map +1 -1
- package/lib/cjs/tile/internal.js +2 -0
- package/lib/cjs/tile/internal.js.map +1 -1
- package/lib/cjs/tile/map/MapTile.d.ts +8 -2
- package/lib/cjs/tile/map/MapTile.d.ts.map +1 -1
- package/lib/cjs/tile/map/MapTile.js +10 -16
- package/lib/cjs/tile/map/MapTile.js.map +1 -1
- package/lib/cjs/tile/map/MapTileTree.d.ts +8 -36
- package/lib/cjs/tile/map/MapTileTree.d.ts.map +1 -1
- package/lib/cjs/tile/map/MapTileTree.js +47 -176
- package/lib/cjs/tile/map/MapTileTree.js.map +1 -1
- package/lib/cjs/tile/map/MapTiledGraphicsProvider.js +9 -9
- package/lib/cjs/tile/map/MapTiledGraphicsProvider.js.map +1 -1
- package/lib/esm/ContextRealityModelState.d.ts.map +1 -1
- package/lib/esm/ContextRealityModelState.js +2 -0
- package/lib/esm/ContextRealityModelState.js.map +1 -1
- package/lib/esm/ModelState.d.ts.map +1 -1
- package/lib/esm/ModelState.js +4 -0
- package/lib/esm/ModelState.js.map +1 -1
- package/lib/esm/NoRenderApp.d.ts +1 -1
- package/lib/esm/NoRenderApp.d.ts.map +1 -1
- package/lib/esm/NoRenderApp.js +1 -1
- package/lib/esm/NoRenderApp.js.map +1 -1
- package/lib/esm/Viewport.d.ts +1 -0
- package/lib/esm/Viewport.d.ts.map +1 -1
- package/lib/esm/Viewport.js +4 -1
- package/lib/esm/Viewport.js.map +1 -1
- package/lib/esm/common/internal/render/MeshParams.d.ts +2 -0
- package/lib/esm/common/internal/render/MeshParams.d.ts.map +1 -1
- package/lib/esm/common/internal/render/MeshParams.js.map +1 -1
- package/lib/esm/internal/render/{RealityMeshGraphicParams.d.ts → MeshMapLayerGraphicParams.d.ts} +4 -4
- package/lib/esm/internal/render/MeshMapLayerGraphicParams.d.ts.map +1 -0
- package/lib/esm/internal/render/{RealityMeshGraphicParams.js → MeshMapLayerGraphicParams.js} +1 -1
- package/lib/esm/internal/render/MeshMapLayerGraphicParams.js.map +1 -0
- package/lib/esm/internal/render/webgl/BackgroundMapDrape.js +1 -1
- package/lib/esm/internal/render/webgl/BackgroundMapDrape.js.map +1 -1
- package/lib/esm/internal/render/webgl/MapLayerParams.d.ts +54 -0
- package/lib/esm/internal/render/webgl/MapLayerParams.d.ts.map +1 -0
- package/lib/esm/internal/render/webgl/MapLayerParams.js +192 -0
- package/lib/esm/internal/render/webgl/MapLayerParams.js.map +1 -0
- package/lib/esm/internal/render/webgl/Mesh.js +1 -1
- package/lib/esm/internal/render/webgl/Mesh.js.map +1 -1
- package/lib/esm/internal/render/webgl/PlanarClassifier.d.ts.map +1 -1
- package/lib/esm/internal/render/webgl/PlanarClassifier.js.map +1 -1
- package/lib/esm/internal/render/webgl/RealityMesh.d.ts +6 -35
- package/lib/esm/internal/render/webgl/RealityMesh.d.ts.map +1 -1
- package/lib/esm/internal/render/webgl/RealityMesh.js +41 -153
- package/lib/esm/internal/render/webgl/RealityMesh.js.map +1 -1
- package/lib/esm/internal/render/webgl/RenderFlags.d.ts +7 -1
- package/lib/esm/internal/render/webgl/RenderFlags.d.ts.map +1 -1
- package/lib/esm/internal/render/webgl/RenderFlags.js +7 -0
- package/lib/esm/internal/render/webgl/RenderFlags.js.map +1 -1
- package/lib/esm/internal/render/webgl/ShaderBuilder.d.ts +12 -11
- package/lib/esm/internal/render/webgl/ShaderBuilder.d.ts.map +1 -1
- package/lib/esm/internal/render/webgl/ShaderBuilder.js +13 -8
- package/lib/esm/internal/render/webgl/ShaderBuilder.js.map +1 -1
- package/lib/esm/internal/render/webgl/SurfaceGeometry.d.ts +5 -2
- package/lib/esm/internal/render/webgl/SurfaceGeometry.d.ts.map +1 -1
- package/lib/esm/internal/render/webgl/SurfaceGeometry.js +50 -4
- package/lib/esm/internal/render/webgl/SurfaceGeometry.js.map +1 -1
- package/lib/esm/internal/render/webgl/System.d.ts +2 -2
- package/lib/esm/internal/render/webgl/System.d.ts.map +1 -1
- package/lib/esm/internal/render/webgl/System.js.map +1 -1
- package/lib/esm/internal/render/webgl/Target.d.ts +1 -1
- package/lib/esm/internal/render/webgl/Target.d.ts.map +1 -1
- package/lib/esm/internal/render/webgl/Target.js +11 -2
- package/lib/esm/internal/render/webgl/Target.js.map +1 -1
- package/lib/esm/internal/render/webgl/glsl/AmbientOcclusion.js +1 -1
- package/lib/esm/internal/render/webgl/glsl/Atmosphere.js +1 -1
- package/lib/esm/internal/render/webgl/glsl/Blur.js +1 -1
- package/lib/esm/internal/render/webgl/glsl/ClearPickAndColor.js +1 -1
- package/lib/esm/internal/render/webgl/glsl/ClearTranslucent.js +1 -1
- package/lib/esm/internal/render/webgl/glsl/Clipping.js +1 -1
- package/lib/esm/internal/render/webgl/glsl/Combine3Textures.js +1 -1
- package/lib/esm/internal/render/webgl/glsl/CombineTextures.js +1 -1
- package/lib/esm/internal/render/webgl/glsl/Composite.js +1 -1
- package/lib/esm/internal/render/webgl/glsl/CopyColor.js +1 -1
- package/lib/esm/internal/render/webgl/glsl/CopyPickBuffers.js +1 -1
- package/lib/esm/internal/render/webgl/glsl/CopyStencil.js +5 -5
- package/lib/esm/internal/render/webgl/glsl/EDL.js +4 -4
- package/lib/esm/internal/render/webgl/glsl/EVSMFromDepth.js +1 -1
- package/lib/esm/internal/render/webgl/glsl/Edge.js +1 -1
- package/lib/esm/internal/render/webgl/glsl/FeatureSymbology.js +2 -2
- package/lib/esm/internal/render/webgl/glsl/Fragment.js +9 -9
- package/lib/esm/internal/render/webgl/glsl/LogarithmicDepthBuffer.js +1 -1
- package/lib/esm/internal/render/webgl/glsl/MaplayerDraping.d.ts +12 -0
- package/lib/esm/internal/render/webgl/glsl/MaplayerDraping.d.ts.map +1 -0
- package/lib/esm/internal/render/webgl/glsl/MaplayerDraping.js +111 -0
- package/lib/esm/internal/render/webgl/glsl/MaplayerDraping.js.map +1 -0
- package/lib/esm/internal/render/webgl/glsl/PlanarClassification.js +3 -3
- package/lib/esm/internal/render/webgl/glsl/PointCloud.js +2 -2
- package/lib/esm/internal/render/webgl/glsl/PointCloud.js.map +1 -1
- package/lib/esm/internal/render/webgl/glsl/RealityMesh.d.ts.map +1 -1
- package/lib/esm/internal/render/webgl/glsl/RealityMesh.js +5 -90
- package/lib/esm/internal/render/webgl/glsl/RealityMesh.js.map +1 -1
- package/lib/esm/internal/render/webgl/glsl/ScreenSpaceEffect.js +1 -1
- package/lib/esm/internal/render/webgl/glsl/SkyBox.js +1 -1
- package/lib/esm/internal/render/webgl/glsl/SkySphere.js +1 -1
- package/lib/esm/internal/render/webgl/glsl/SolarShadowMapping.js +1 -1
- package/lib/esm/internal/render/webgl/glsl/Surface.d.ts +1 -1
- package/lib/esm/internal/render/webgl/glsl/Surface.d.ts.map +1 -1
- package/lib/esm/internal/render/webgl/glsl/Surface.js +73 -7
- package/lib/esm/internal/render/webgl/glsl/Surface.js.map +1 -1
- package/lib/esm/internal/render/webgl/glsl/Translucency.js +1 -1
- package/lib/esm/internal/render/webgl/glsl/Wiremesh.js +1 -1
- package/lib/esm/internal/tile/B3dmReader.d.ts +2 -1
- package/lib/esm/internal/tile/B3dmReader.d.ts.map +1 -1
- package/lib/esm/internal/tile/B3dmReader.js +5 -5
- package/lib/esm/internal/tile/B3dmReader.js.map +1 -1
- package/lib/esm/internal/tile/I3dmReader.d.ts +2 -1
- package/lib/esm/internal/tile/I3dmReader.d.ts.map +1 -1
- package/lib/esm/internal/tile/I3dmReader.js +4 -4
- package/lib/esm/internal/tile/I3dmReader.js.map +1 -1
- package/lib/esm/internal/tile/IModelTileTree.d.ts.map +1 -1
- package/lib/esm/internal/tile/IModelTileTree.js +2 -2
- package/lib/esm/internal/tile/IModelTileTree.js.map +1 -1
- package/lib/esm/internal/tile/ImdlGraphicsCreator.d.ts +2 -0
- package/lib/esm/internal/tile/ImdlGraphicsCreator.d.ts.map +1 -1
- package/lib/esm/internal/tile/ImdlGraphicsCreator.js +1 -0
- package/lib/esm/internal/tile/ImdlGraphicsCreator.js.map +1 -1
- package/lib/esm/internal/tile/PrimaryTileTree.js.map +1 -1
- package/lib/esm/internal/tile/RealityModelTileTree.d.ts +14 -3
- package/lib/esm/internal/tile/RealityModelTileTree.d.ts.map +1 -1
- package/lib/esm/internal/tile/RealityModelTileTree.js +53 -13
- package/lib/esm/internal/tile/RealityModelTileTree.js.map +1 -1
- package/lib/esm/internal/tile/RealityTileLoader.d.ts.map +1 -1
- package/lib/esm/internal/tile/RealityTileLoader.js +8 -2
- package/lib/esm/internal/tile/RealityTileLoader.js.map +1 -1
- package/lib/esm/render/RealityMeshParams.d.ts +3 -0
- package/lib/esm/render/RealityMeshParams.d.ts.map +1 -1
- package/lib/esm/render/RealityMeshParams.js.map +1 -1
- package/lib/esm/render/RenderSystem.d.ts +4 -3
- package/lib/esm/render/RenderSystem.d.ts.map +1 -1
- package/lib/esm/render/RenderSystem.js +2 -1
- package/lib/esm/render/RenderSystem.js.map +1 -1
- package/lib/esm/render/RenderTarget.d.ts +1 -1
- package/lib/esm/render/RenderTarget.d.ts.map +1 -1
- package/lib/esm/render/RenderTarget.js +1 -1
- package/lib/esm/render/RenderTarget.js.map +1 -1
- package/lib/esm/tile/GltfReader.d.ts +8 -2
- package/lib/esm/tile/GltfReader.d.ts.map +1 -1
- package/lib/esm/tile/GltfReader.js +11 -2
- package/lib/esm/tile/GltfReader.js.map +1 -1
- package/lib/esm/tile/ImdlReader.d.ts +2 -1
- package/lib/esm/tile/ImdlReader.d.ts.map +1 -1
- package/lib/esm/tile/ImdlReader.js.map +1 -1
- package/lib/esm/tile/LayerTileTreeHandler.d.ts +47 -0
- package/lib/esm/tile/LayerTileTreeHandler.d.ts.map +1 -0
- package/lib/esm/tile/LayerTileTreeHandler.js +50 -0
- package/lib/esm/tile/LayerTileTreeHandler.js.map +1 -0
- package/lib/esm/tile/LayerTileTreeReferenceHandler.d.ts +36 -0
- package/lib/esm/tile/LayerTileTreeReferenceHandler.d.ts.map +1 -0
- package/lib/esm/tile/LayerTileTreeReferenceHandler.js +146 -0
- package/lib/esm/tile/LayerTileTreeReferenceHandler.js.map +1 -0
- package/lib/esm/tile/Tile.d.ts +2 -0
- package/lib/esm/tile/Tile.d.ts.map +1 -1
- package/lib/esm/tile/Tile.js +7 -0
- package/lib/esm/tile/Tile.js.map +1 -1
- package/lib/esm/tile/TileTree.d.ts +3 -1
- package/lib/esm/tile/TileTree.d.ts.map +1 -1
- package/lib/esm/tile/TileTree.js +2 -0
- package/lib/esm/tile/TileTree.js.map +1 -1
- package/lib/esm/tile/internal.d.ts +2 -0
- package/lib/esm/tile/internal.d.ts.map +1 -1
- package/lib/esm/tile/internal.js +2 -0
- package/lib/esm/tile/internal.js.map +1 -1
- package/lib/esm/tile/map/MapTile.d.ts +8 -2
- package/lib/esm/tile/map/MapTile.d.ts.map +1 -1
- package/lib/esm/tile/map/MapTile.js +9 -16
- package/lib/esm/tile/map/MapTile.js.map +1 -1
- package/lib/esm/tile/map/MapTileTree.d.ts +8 -36
- package/lib/esm/tile/map/MapTileTree.d.ts.map +1 -1
- package/lib/esm/tile/map/MapTileTree.js +49 -178
- package/lib/esm/tile/map/MapTileTree.js.map +1 -1
- package/lib/esm/tile/map/MapTiledGraphicsProvider.js +9 -9
- package/lib/esm/tile/map/MapTiledGraphicsProvider.js.map +1 -1
- package/package.json +16 -16
- package/lib/cjs/internal/render/RealityMeshGraphicParams.d.ts.map +0 -1
- package/lib/cjs/internal/render/RealityMeshGraphicParams.js.map +0 -1
- package/lib/esm/internal/render/RealityMeshGraphicParams.d.ts.map +0 -1
- package/lib/esm/internal/render/RealityMeshGraphicParams.js.map +0 -1
|
@@ -28,6 +28,6 @@ const applyWiremesh = `
|
|
|
28
28
|
*/
|
|
29
29
|
export function addWiremesh(builder) {
|
|
30
30
|
builder.addInlineComputedVarying("v_barycentric", 4 /* VariableType.Vec3 */, computeBarycentric);
|
|
31
|
-
builder.frag.set(
|
|
31
|
+
builder.frag.set(16 /* FragmentShaderComponent.ApplyWiremesh */, applyWiremesh);
|
|
32
32
|
}
|
|
33
33
|
//# sourceMappingURL=Wiremesh.js.map
|
|
@@ -9,6 +9,7 @@ import { Mesh } from "../../common/internal/render/MeshPrimitives";
|
|
|
9
9
|
import { RenderSystem } from "../../render/RenderSystem";
|
|
10
10
|
import { GltfMeshPrimitive } from "../../common/gltf/GltfSchema";
|
|
11
11
|
import { BatchedTileIdMap, GltfReader, GltfReaderResult, ShouldAbortReadGltf } from "../../tile/internal";
|
|
12
|
+
import { LayerTileData } from "../render/webgl/MapLayerParams";
|
|
12
13
|
/**
|
|
13
14
|
* Deserializes a tile in [b3dm](https://github.com/AnalyticalGraphicsInc/3d-tiles/tree/master/specification/TileFormats/Batched3DModel) format.
|
|
14
15
|
*/
|
|
@@ -22,7 +23,7 @@ export declare class B3dmReader extends GltfReader {
|
|
|
22
23
|
private _batchIdRemap;
|
|
23
24
|
private _colors?;
|
|
24
25
|
private readonly _modelId;
|
|
25
|
-
static create(stream: ByteStream, iModel: IModelConnection, modelId: Id64String, is3d: boolean, range: ElementAlignedBox3d, system: RenderSystem, yAxisUp: boolean, isLeaf: boolean, tileCenter: Point3d, transformToRoot?: Transform, isCanceled?: ShouldAbortReadGltf, idMap?: BatchedTileIdMap, deduplicateVertices?: boolean): B3dmReader | undefined;
|
|
26
|
+
static create(stream: ByteStream, iModel: IModelConnection, modelId: Id64String, is3d: boolean, range: ElementAlignedBox3d, system: RenderSystem, yAxisUp: boolean, isLeaf: boolean, tileCenter: Point3d, transformToRoot?: Transform, isCanceled?: ShouldAbortReadGltf, idMap?: BatchedTileIdMap, deduplicateVertices?: boolean, tileData?: LayerTileData): B3dmReader | undefined;
|
|
26
27
|
private constructor();
|
|
27
28
|
read(): Promise<GltfReaderResult>;
|
|
28
29
|
protected readBatchTable(mesh: Mesh, json: GltfMeshPrimitive): void;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"B3dmReader.d.ts","sourceRoot":"","sources":["../../../../src/internal/tile/B3dmReader.ts"],"names":[],"mappings":"AAIA;;GAEG;AAEH,OAAO,EAAE,UAAU,EAAE,UAAU,EAAa,MAAM,qBAAqB,CAAC;AACxE,OAAO,EAAE,OAAO,EAAE,SAAS,EAAY,MAAM,sBAAsB,CAAC;AACpE,OAAO,EAAwB,mBAAmB,EAAyC,MAAM,oBAAoB,CAAC;AACtH,OAAO,EAAE,gBAAgB,EAAE,MAAM,wBAAwB,CAAC;AAC1D,OAAO,EAAE,IAAI,EAAE,MAAM,6CAA6C,CAAC;AACnE,OAAO,EAAE,YAAY,EAAE,MAAM,2BAA2B,CAAC;AACzD,OAAO,EAAgB,iBAAiB,EAAE,MAAM,8BAA8B,CAAC;AAC/E,OAAO,EACL,gBAAgB,EAAkB,UAAU,EAAmB,gBAAgB,EAAE,mBAAmB,EACrG,MAAM,qBAAqB,CAAC;
|
|
1
|
+
{"version":3,"file":"B3dmReader.d.ts","sourceRoot":"","sources":["../../../../src/internal/tile/B3dmReader.ts"],"names":[],"mappings":"AAIA;;GAEG;AAEH,OAAO,EAAE,UAAU,EAAE,UAAU,EAAa,MAAM,qBAAqB,CAAC;AACxE,OAAO,EAAE,OAAO,EAAE,SAAS,EAAY,MAAM,sBAAsB,CAAC;AACpE,OAAO,EAAwB,mBAAmB,EAAyC,MAAM,oBAAoB,CAAC;AACtH,OAAO,EAAE,gBAAgB,EAAE,MAAM,wBAAwB,CAAC;AAC1D,OAAO,EAAE,IAAI,EAAE,MAAM,6CAA6C,CAAC;AACnE,OAAO,EAAE,YAAY,EAAE,MAAM,2BAA2B,CAAC;AACzD,OAAO,EAAgB,iBAAiB,EAAE,MAAM,8BAA8B,CAAC;AAC/E,OAAO,EACL,gBAAgB,EAAkB,UAAU,EAAmB,gBAAgB,EAAE,mBAAmB,EACrG,MAAM,qBAAqB,CAAC;AAC7B,OAAO,EAAE,aAAa,EAAE,MAAM,gCAAgC,CAAC;AAG/D;;GAEG;AACH,qBAAa,UAAW,SAAQ,UAAU;IAsCtC,OAAO,CAAC,MAAM;IAAuB,OAAO,CAAC,OAAO;IAAW,OAAO,CAAC,iBAAiB;IAAU,OAAO,CAAC,gBAAgB,CAAC;IAAa,OAAO,CAAC,eAAe,CAAC;IAChG,OAAO,CAAC,cAAc,CAAC;IAtCzF,OAAO,CAAC,aAAa,CAA6B;IAClD,OAAO,CAAC,OAAO,CAAC,CAAgB;IAChC,OAAO,CAAC,QAAQ,CAAC,QAAQ,CAAa;WAExB,MAAM,CAAC,MAAM,EAAE,UAAU,EAAE,MAAM,EAAE,gBAAgB,EAAE,OAAO,EAAE,UAAU,EAAE,IAAI,EAAE,OAAO,EAAE,KAAK,EAAE,mBAAmB,EAC/H,MAAM,EAAE,YAAY,EAAE,OAAO,EAAE,OAAO,EAAE,MAAM,EAAE,OAAO,EAAE,UAAU,EAAE,OAAO,EAAE,eAAe,CAAC,EAAE,SAAS,EACzG,UAAU,CAAC,EAAE,mBAAmB,EAAE,KAAK,CAAC,EAAE,gBAAgB,EAAE,mBAAmB,UAAM,EAAE,QAAQ,CAAC,EAAE,aAAa,GAAG,UAAU,GAAG,SAAS;IA8B1I,OAAO;IAUM,IAAI,IAAI,OAAO,CAAC,gBAAgB,CAAC;cAiF3B,cAAc,CAAC,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,iBAAiB;CA+BtE"}
|
|
@@ -23,7 +23,7 @@ export class B3dmReader extends GltfReader {
|
|
|
23
23
|
_batchIdRemap = new Map();
|
|
24
24
|
_colors;
|
|
25
25
|
_modelId;
|
|
26
|
-
static create(stream, iModel, modelId, is3d, range, system, yAxisUp, isLeaf, tileCenter, transformToRoot, isCanceled, idMap, deduplicateVertices = false) {
|
|
26
|
+
static create(stream, iModel, modelId, is3d, range, system, yAxisUp, isLeaf, tileCenter, transformToRoot, isCanceled, idMap, deduplicateVertices = false, tileData) {
|
|
27
27
|
const header = new B3dmHeader(stream);
|
|
28
28
|
if (!header.isValid)
|
|
29
29
|
return undefined;
|
|
@@ -46,12 +46,12 @@ export class B3dmReader extends GltfReader {
|
|
|
46
46
|
transformToRoot = transformToRoot ? transformToRoot.multiplyTransformTransform(returnToCenterTransform) : returnToCenterTransform;
|
|
47
47
|
const props = GltfReaderProps.create(stream.nextBytes(header.length - stream.curPos), yAxisUp);
|
|
48
48
|
const batchTableLength = header.featureTableJson ? JsonUtils.asInt(header.featureTableJson.BATCH_LENGTH, 0) : 0;
|
|
49
|
-
return undefined !== props ? new B3dmReader(props, iModel, modelId, is3d, system, range, isLeaf, batchTableLength, transformToRoot, header.batchTableJson, isCanceled, idMap, pseudoRtcBias, deduplicateVertices) : undefined;
|
|
49
|
+
return undefined !== props ? new B3dmReader(props, iModel, modelId, is3d, system, range, isLeaf, batchTableLength, transformToRoot, header.batchTableJson, isCanceled, idMap, pseudoRtcBias, deduplicateVertices, tileData) : undefined;
|
|
50
50
|
}
|
|
51
|
-
constructor(props, iModel, modelId, is3d, system, _range, _isLeaf, _batchTableLength, _transformToRoot, _batchTableJson, shouldAbort, _idMap, _pseudoRtcBias, deduplicateVertices = false) {
|
|
51
|
+
constructor(props, iModel, modelId, is3d, system, _range, _isLeaf, _batchTableLength, _transformToRoot, _batchTableJson, shouldAbort, _idMap, _pseudoRtcBias, deduplicateVertices = false, tileData) {
|
|
52
52
|
super({
|
|
53
53
|
props, iModel, system, shouldAbort, deduplicateVertices,
|
|
54
|
-
is2d: !is3d, idMap: _idMap,
|
|
54
|
+
is2d: !is3d, idMap: _idMap, tileData
|
|
55
55
|
});
|
|
56
56
|
this._range = _range;
|
|
57
57
|
this._isLeaf = _isLeaf;
|
|
@@ -134,7 +134,7 @@ export class B3dmReader extends GltfReader {
|
|
|
134
134
|
await this.resolveResources();
|
|
135
135
|
if (this._isCanceled)
|
|
136
136
|
return { readStatus: TileReadStatus.Canceled, isLeaf: this._isLeaf };
|
|
137
|
-
return this.readGltfAndCreateGraphics(this._isLeaf, featureTable, this._range, this._transformToRoot, this._pseudoRtcBias);
|
|
137
|
+
return this.readGltfAndCreateGraphics(this._isLeaf, featureTable, this._range, this._transformToRoot, this._pseudoRtcBias, undefined);
|
|
138
138
|
}
|
|
139
139
|
readBatchTable(mesh, json) {
|
|
140
140
|
if (mesh.features !== undefined) {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"B3dmReader.js","sourceRoot":"","sources":["../../../../src/internal/tile/B3dmReader.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, JsonUtils } from \"@itwin/core-bentley\";\nimport { Point3d, Transform, Vector3d } from \"@itwin/core-geometry\";\nimport { B3dmHeader, ColorDef, ElementAlignedBox3d, Feature, FeatureTable, TileReadStatus } from \"@itwin/core-common\";\nimport { IModelConnection } from \"../../IModelConnection\";\nimport { Mesh } from \"../../common/internal/render/MeshPrimitives\";\nimport { RenderSystem } from \"../../render/RenderSystem\";\nimport { GltfDataType, GltfMeshPrimitive } from \"../../common/gltf/GltfSchema\";\nimport {\n BatchedTileIdMap, GltfBufferData, GltfReader, GltfReaderProps, GltfReaderResult, ShouldAbortReadGltf,\n} from \"../../tile/internal\";\n\n/**\n * Deserializes a tile in [b3dm](https://github.com/AnalyticalGraphicsInc/3d-tiles/tree/master/specification/TileFormats/Batched3DModel) format.\n */\nexport class B3dmReader extends GltfReader {\n private _batchIdRemap = new Map<number, number>();\n private _colors?: Array<number>;\n private readonly _modelId: Id64String;\n\n public static create(stream: ByteStream, iModel: IModelConnection, modelId: Id64String, is3d: boolean, range: ElementAlignedBox3d,\n system: RenderSystem, yAxisUp: boolean, isLeaf: boolean, tileCenter: Point3d, transformToRoot?: Transform,\n isCanceled?: ShouldAbortReadGltf, idMap?: BatchedTileIdMap, deduplicateVertices=false): B3dmReader | undefined {\n const header = new B3dmHeader(stream);\n if (!header.isValid)\n return undefined;\n\n let returnToCenterTransform, pseudoRtcBias;\n if (header.featureTableJson && Array.isArray(header.featureTableJson.RTC_CENTER)) {\n returnToCenterTransform = Transform.createTranslationXYZ(header.featureTableJson.RTC_CENTER[0], header.featureTableJson.RTC_CENTER[1], header.featureTableJson.RTC_CENTER[2]);\n } else {\n /**\n * This is a workaround for tiles generated by\n * context capture which have a large offset from the tileset origin that exceeds the\n * capacity of 32 bit integers. It is essentially an ad hoc RTC applied at read time only if the tile is far from the\n * origin and there is no RTC supplied either with the B3DM of the GLTF.\n * as the vertices are supplied in a quantized format, applying the RTC bias to\n * quantization origin will make these tiles work correctly.\n */\n pseudoRtcBias = Vector3d.create(tileCenter.x, tileCenter.y, tileCenter.z);\n }\n\n if (undefined !== returnToCenterTransform)\n transformToRoot = transformToRoot ? transformToRoot.multiplyTransformTransform(returnToCenterTransform) : returnToCenterTransform;\n\n const props = GltfReaderProps.create(stream.nextBytes(header.length - stream.curPos), yAxisUp);\n const batchTableLength = header.featureTableJson ? JsonUtils.asInt(header.featureTableJson.BATCH_LENGTH, 0) : 0;\n\n return undefined !== props ? new B3dmReader(props, iModel, modelId, is3d, system, range, isLeaf, batchTableLength,\n transformToRoot, header.batchTableJson, isCanceled, idMap, pseudoRtcBias, deduplicateVertices) : undefined;\n }\n\n private constructor(props: GltfReaderProps, iModel: IModelConnection, modelId: Id64String, is3d: boolean, system: RenderSystem,\n private _range: ElementAlignedBox3d, private _isLeaf: boolean, private _batchTableLength: number, private _transformToRoot?: Transform, private _batchTableJson?: any\n , shouldAbort?: ShouldAbortReadGltf, _idMap?: BatchedTileIdMap, private _pseudoRtcBias?: Vector3d, deduplicateVertices=false) {\n super({\n props, iModel, system, shouldAbort, deduplicateVertices,\n is2d: !is3d, idMap: _idMap,\n });\n this._modelId = modelId;\n }\n\n public async read(): Promise<GltfReaderResult> {\n // NB: For reality models with no batch table, we want the model ID in the feature table\n const featureTable: FeatureTable = new FeatureTable(this._batchTableLength ? this._batchTableLength : 1, this._modelId, this._type);\n if (this._batchTableLength > 0 && this._idMap !== undefined && this._batchTableJson !== undefined) {\n if (this._batchTableJson.extensions && this._batchTableJson.extensions[\"3DTILES_batch_table_hierarchy\"]) {\n const hierarchy = this._batchTableJson.extensions[\"3DTILES_batch_table_hierarchy\"];\n const { classIds, classes, parentIds, parentCounts, instancesLength } = hierarchy;\n if (classes !== undefined && classIds !== undefined && instancesLength !== 0) {\n const classCounts = new Array<number>(classes.length);\n classCounts.fill(0);\n const classIndexes = new Uint16Array(instancesLength);\n for (let i = 0; i < instancesLength; ++i) {\n const classId = classIds[i];\n classIndexes[i] = classCounts[classId]++;\n }\n\n let parentMap: [][] | undefined;\n if (parentIds) {\n parentMap = new Array<[]>();\n for (let i = 0, parentIndex = 0; i < instancesLength; i++) {\n const parentCount = parentCounts === undefined ? 1 : parentCounts[i];\n parentMap[i] = parentIds.slice(parentIndex, parentIndex += parentCount);\n }\n }\n\n const getProperties = (instance: any, instanceIndex: number) => {\n const classId = classIds[instanceIndex];\n const instanceClass = classes[classId];\n const instances = instanceClass.instances;\n const indexInClass = classIndexes[instanceIndex];\n for (const key in instances) { // eslint-disable-line guard-for-in\n const value = instances[key][indexInClass];\n if (value !== undefined && value !== null)\n instance[key] = value;\n }\n if (parentIds !== undefined) {\n const thisParents = parentMap![instanceIndex];\n for (const parentId of thisParents) {\n if (parentId !== instanceIndex)\n getProperties(instance, parentId);\n }\n }\n };\n for (let batchId = 0; batchId < instancesLength; batchId++) {\n const instance: any = {};\n getProperties(instance, batchId);\n this._batchIdRemap.set(batchId, featureTable.insert(new Feature(this._idMap.getBatchId(instance))));\n const cesiumColor = instance[\"cesium#color\"];\n if (undefined !== cesiumColor) {\n if (!this._colors) {\n this._colors = new Array<number>(instancesLength);\n this._colors.fill(ColorDef.white.tbgr);\n }\n this._colors[batchId] = ColorDef.create(cesiumColor).tbgr;\n }\n }\n }\n } else {\n for (let i = 0; i < this._batchTableLength; i++) {\n const feature: any = {};\n for (const key in this._batchTableJson) // eslint-disable-line guard-for-in\n feature[key] = this._batchTableJson[key][i];\n\n this._batchIdRemap.set(i, featureTable.insert(new Feature(this._idMap.getBatchId(feature))));\n }\n }\n }\n\n if (featureTable.isEmpty) {\n this._batchIdRemap.set(0, 0);\n const feature = new Feature(this._modelId);\n featureTable.insert(feature);\n }\n\n await this.resolveResources();\n if (this._isCanceled)\n return { readStatus: TileReadStatus.Canceled, isLeaf: this._isLeaf };\n\n return this.readGltfAndCreateGraphics(this._isLeaf, featureTable, this._range, this._transformToRoot, this._pseudoRtcBias);\n }\n\n protected override readBatchTable(mesh: Mesh, json: GltfMeshPrimitive) {\n if (mesh.features !== undefined) {\n if (this._batchTableLength > 0 && undefined !== this._batchTableJson && undefined !== json.attributes) {\n const view = this.getBufferView(json.attributes, \"_BATCHID\");\n let batchIds: undefined | GltfBufferData;\n if (undefined !== view && (undefined !== (batchIds = view.toBufferData(GltfDataType.UInt32)) || undefined !== (batchIds = view.toBufferData(GltfDataType.Float)))) {\n const indices = [];\n const { colors, colorMap } = mesh;\n let colorRemap: Uint32Array | undefined;\n if (this._colors && this._colors.length === this._batchTableLength) {\n colorRemap = new Uint32Array(this._batchTableLength);\n\n for (let i = 0; i < this._batchTableLength; i++)\n colorRemap[i] = colorMap.insert(this._colors[i]);\n }\n\n for (let i = 0; i < batchIds.count; i++) {\n const batchId = batchIds.buffer[i * view.stride];\n const remapId = this._batchIdRemap.get(batchId);\n indices.push(remapId === undefined ? 0 : remapId);\n if (colorRemap)\n colors.push(colorRemap[batchId]);\n }\n mesh.features.setIndices(indices);\n\n }\n } else {\n mesh.features.add(new Feature(this._modelId), 1);\n }\n }\n }\n}\n"]}
|
|
1
|
+
{"version":3,"file":"B3dmReader.js","sourceRoot":"","sources":["../../../../src/internal/tile/B3dmReader.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, JsonUtils } from \"@itwin/core-bentley\";\nimport { Point3d, Transform, Vector3d } from \"@itwin/core-geometry\";\nimport { B3dmHeader, ColorDef, ElementAlignedBox3d, Feature, FeatureTable, TileReadStatus } from \"@itwin/core-common\";\nimport { IModelConnection } from \"../../IModelConnection\";\nimport { Mesh } from \"../../common/internal/render/MeshPrimitives\";\nimport { RenderSystem } from \"../../render/RenderSystem\";\nimport { GltfDataType, GltfMeshPrimitive } from \"../../common/gltf/GltfSchema\";\nimport {\n BatchedTileIdMap, GltfBufferData, GltfReader, GltfReaderProps, GltfReaderResult, ShouldAbortReadGltf,\n} from \"../../tile/internal\";\nimport { LayerTileData } from \"../render/webgl/MapLayerParams\";\n\n\n/**\n * Deserializes a tile in [b3dm](https://github.com/AnalyticalGraphicsInc/3d-tiles/tree/master/specification/TileFormats/Batched3DModel) format.\n */\nexport class B3dmReader extends GltfReader {\n private _batchIdRemap = new Map<number, number>();\n private _colors?: Array<number>;\n private readonly _modelId: Id64String;\n\n public static create(stream: ByteStream, iModel: IModelConnection, modelId: Id64String, is3d: boolean, range: ElementAlignedBox3d,\n system: RenderSystem, yAxisUp: boolean, isLeaf: boolean, tileCenter: Point3d, transformToRoot?: Transform,\n isCanceled?: ShouldAbortReadGltf, idMap?: BatchedTileIdMap, deduplicateVertices=false, tileData?: LayerTileData): B3dmReader | undefined {\n const header = new B3dmHeader(stream);\n if (!header.isValid)\n return undefined;\n\n let returnToCenterTransform, pseudoRtcBias;\n if (header.featureTableJson && Array.isArray(header.featureTableJson.RTC_CENTER)) {\n returnToCenterTransform = Transform.createTranslationXYZ(header.featureTableJson.RTC_CENTER[0], header.featureTableJson.RTC_CENTER[1], header.featureTableJson.RTC_CENTER[2]);\n } else {\n /**\n * This is a workaround for tiles generated by\n * context capture which have a large offset from the tileset origin that exceeds the\n * capacity of 32 bit integers. It is essentially an ad hoc RTC applied at read time only if the tile is far from the\n * origin and there is no RTC supplied either with the B3DM of the GLTF.\n * as the vertices are supplied in a quantized format, applying the RTC bias to\n * quantization origin will make these tiles work correctly.\n */\n pseudoRtcBias = Vector3d.create(tileCenter.x, tileCenter.y, tileCenter.z);\n }\n\n if (undefined !== returnToCenterTransform)\n transformToRoot = transformToRoot ? transformToRoot.multiplyTransformTransform(returnToCenterTransform) : returnToCenterTransform;\n\n const props = GltfReaderProps.create(stream.nextBytes(header.length - stream.curPos), yAxisUp);\n const batchTableLength = header.featureTableJson ? JsonUtils.asInt(header.featureTableJson.BATCH_LENGTH, 0) : 0;\n\n return undefined !== props ? new B3dmReader(props, iModel, modelId, is3d, system, range, isLeaf, batchTableLength,\n transformToRoot, header.batchTableJson, isCanceled, idMap, pseudoRtcBias, deduplicateVertices, tileData) : undefined;\n }\n\n private constructor(props: GltfReaderProps, iModel: IModelConnection, modelId: Id64String, is3d: boolean, system: RenderSystem,\n private _range: ElementAlignedBox3d, private _isLeaf: boolean, private _batchTableLength: number, private _transformToRoot?: Transform, private _batchTableJson?: any\n , shouldAbort?: ShouldAbortReadGltf, _idMap?: BatchedTileIdMap, private _pseudoRtcBias?: Vector3d, deduplicateVertices=false, tileData?: LayerTileData) {\n super({\n props, iModel, system, shouldAbort, deduplicateVertices,\n is2d: !is3d, idMap: _idMap, tileData\n });\n this._modelId = modelId;\n }\n\n public async read(): Promise<GltfReaderResult> {\n // NB: For reality models with no batch table, we want the model ID in the feature table\n const featureTable: FeatureTable = new FeatureTable(this._batchTableLength ? this._batchTableLength : 1, this._modelId, this._type);\n if (this._batchTableLength > 0 && this._idMap !== undefined && this._batchTableJson !== undefined) {\n if (this._batchTableJson.extensions && this._batchTableJson.extensions[\"3DTILES_batch_table_hierarchy\"]) {\n const hierarchy = this._batchTableJson.extensions[\"3DTILES_batch_table_hierarchy\"];\n const { classIds, classes, parentIds, parentCounts, instancesLength } = hierarchy;\n if (classes !== undefined && classIds !== undefined && instancesLength !== 0) {\n const classCounts = new Array<number>(classes.length);\n classCounts.fill(0);\n const classIndexes = new Uint16Array(instancesLength);\n for (let i = 0; i < instancesLength; ++i) {\n const classId = classIds[i];\n classIndexes[i] = classCounts[classId]++;\n }\n\n let parentMap: [][] | undefined;\n if (parentIds) {\n parentMap = new Array<[]>();\n for (let i = 0, parentIndex = 0; i < instancesLength; i++) {\n const parentCount = parentCounts === undefined ? 1 : parentCounts[i];\n parentMap[i] = parentIds.slice(parentIndex, parentIndex += parentCount);\n }\n }\n\n const getProperties = (instance: any, instanceIndex: number) => {\n const classId = classIds[instanceIndex];\n const instanceClass = classes[classId];\n const instances = instanceClass.instances;\n const indexInClass = classIndexes[instanceIndex];\n for (const key in instances) { // eslint-disable-line guard-for-in\n const value = instances[key][indexInClass];\n if (value !== undefined && value !== null)\n instance[key] = value;\n }\n if (parentIds !== undefined) {\n const thisParents = parentMap![instanceIndex];\n for (const parentId of thisParents) {\n if (parentId !== instanceIndex)\n getProperties(instance, parentId);\n }\n }\n };\n for (let batchId = 0; batchId < instancesLength; batchId++) {\n const instance: any = {};\n getProperties(instance, batchId);\n this._batchIdRemap.set(batchId, featureTable.insert(new Feature(this._idMap.getBatchId(instance))));\n const cesiumColor = instance[\"cesium#color\"];\n if (undefined !== cesiumColor) {\n if (!this._colors) {\n this._colors = new Array<number>(instancesLength);\n this._colors.fill(ColorDef.white.tbgr);\n }\n this._colors[batchId] = ColorDef.create(cesiumColor).tbgr;\n }\n }\n }\n } else {\n for (let i = 0; i < this._batchTableLength; i++) {\n const feature: any = {};\n for (const key in this._batchTableJson) // eslint-disable-line guard-for-in\n feature[key] = this._batchTableJson[key][i];\n\n this._batchIdRemap.set(i, featureTable.insert(new Feature(this._idMap.getBatchId(feature))));\n }\n }\n }\n\n if (featureTable.isEmpty) {\n this._batchIdRemap.set(0, 0);\n const feature = new Feature(this._modelId);\n featureTable.insert(feature);\n }\n\n await this.resolveResources();\n if (this._isCanceled)\n return { readStatus: TileReadStatus.Canceled, isLeaf: this._isLeaf };\n\n return this.readGltfAndCreateGraphics(this._isLeaf, featureTable, this._range, this._transformToRoot, this._pseudoRtcBias, undefined);\n }\n\n protected override readBatchTable(mesh: Mesh, json: GltfMeshPrimitive) {\n if (mesh.features !== undefined) {\n if (this._batchTableLength > 0 && undefined !== this._batchTableJson && undefined !== json.attributes) {\n const view = this.getBufferView(json.attributes, \"_BATCHID\");\n let batchIds: undefined | GltfBufferData;\n if (undefined !== view && (undefined !== (batchIds = view.toBufferData(GltfDataType.UInt32)) || undefined !== (batchIds = view.toBufferData(GltfDataType.Float)))) {\n const indices = [];\n const { colors, colorMap } = mesh;\n let colorRemap: Uint32Array | undefined;\n if (this._colors && this._colors.length === this._batchTableLength) {\n colorRemap = new Uint32Array(this._batchTableLength);\n\n for (let i = 0; i < this._batchTableLength; i++)\n colorRemap[i] = colorMap.insert(this._colors[i]);\n }\n\n for (let i = 0; i < batchIds.count; i++) {\n const batchId = batchIds.buffer[i * view.stride];\n const remapId = this._batchIdRemap.get(batchId);\n indices.push(remapId === undefined ? 0 : remapId);\n if (colorRemap)\n colors.push(colorRemap[batchId]);\n }\n mesh.features.setIndices(indices);\n\n }\n } else {\n mesh.features.add(new Feature(this._modelId), 1);\n }\n }\n }\n}\n"]}
|
|
@@ -7,6 +7,7 @@ import { IModelConnection } from "../../IModelConnection";
|
|
|
7
7
|
import { Mesh } from "../../common/internal/render/MeshPrimitives";
|
|
8
8
|
import { RenderSystem } from "../../render/RenderSystem";
|
|
9
9
|
import { BatchedTileIdMap, GltfReader, GltfReaderResult, ShouldAbortReadGltf } from "../../tile/internal";
|
|
10
|
+
import { LayerTileData } from "../render/webgl/MapLayerParams";
|
|
10
11
|
/**
|
|
11
12
|
* Deserializes a tile in [i3dm](https://github.com/AnalyticalGraphicsInc/3d-tiles/tree/master/specification/TileFormats/Instanced3DModel) format.
|
|
12
13
|
*/
|
|
@@ -19,7 +20,7 @@ export declare class I3dmReader extends GltfReader {
|
|
|
19
20
|
private _instanceCount;
|
|
20
21
|
private _featureTable?;
|
|
21
22
|
private readonly _modelId;
|
|
22
|
-
static create(stream: ByteStream, iModel: IModelConnection, modelId: Id64String, is3d: boolean, range: ElementAlignedBox3d, system: RenderSystem, yAxisUp: boolean, isLeaf: boolean, isCanceled?: ShouldAbortReadGltf, idMap?: BatchedTileIdMap, deduplicateVertices?: boolean): I3dmReader | undefined;
|
|
23
|
+
static create(stream: ByteStream, iModel: IModelConnection, modelId: Id64String, is3d: boolean, range: ElementAlignedBox3d, system: RenderSystem, yAxisUp: boolean, isLeaf: boolean, isCanceled?: ShouldAbortReadGltf, idMap?: BatchedTileIdMap, deduplicateVertices?: boolean, tileData?: LayerTileData): I3dmReader | undefined;
|
|
23
24
|
private constructor();
|
|
24
25
|
read(): Promise<GltfReaderResult>;
|
|
25
26
|
protected readFeatures(_features: Mesh.Features, _json: any): boolean;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"I3dmReader.d.ts","sourceRoot":"","sources":["../../../../src/internal/tile/I3dmReader.ts"],"names":[],"mappings":"AAIA;;GAEG;AACH,OAAO,EAAE,UAAU,EAAE,UAAU,EAA2B,MAAM,qBAAqB,CAAC;AAEtF,OAAO,EAAE,mBAAmB,EAAqD,MAAM,oBAAoB,CAAC;AAC5G,OAAO,EAAE,gBAAgB,EAAE,MAAM,wBAAwB,CAAC;AAE1D,OAAO,EAAE,IAAI,EAAE,MAAM,6CAA6C,CAAC;AACnE,OAAO,EAAE,YAAY,EAAE,MAAM,2BAA2B,CAAC;AACzD,OAAO,EAAE,gBAAgB,EAAE,UAAU,EAAmB,gBAAgB,EAAE,mBAAmB,EAAE,MAAM,qBAAqB,CAAC;
|
|
1
|
+
{"version":3,"file":"I3dmReader.d.ts","sourceRoot":"","sources":["../../../../src/internal/tile/I3dmReader.ts"],"names":[],"mappings":"AAIA;;GAEG;AACH,OAAO,EAAE,UAAU,EAAE,UAAU,EAA2B,MAAM,qBAAqB,CAAC;AAEtF,OAAO,EAAE,mBAAmB,EAAqD,MAAM,oBAAoB,CAAC;AAC5G,OAAO,EAAE,gBAAgB,EAAE,MAAM,wBAAwB,CAAC;AAE1D,OAAO,EAAE,IAAI,EAAE,MAAM,6CAA6C,CAAC;AACnE,OAAO,EAAE,YAAY,EAAE,MAAM,2BAA2B,CAAC;AACzD,OAAO,EAAE,gBAAgB,EAAE,UAAU,EAAmB,gBAAgB,EAAE,mBAAmB,EAAE,MAAM,qBAAqB,CAAC;AAC3H,OAAO,EAAE,aAAa,EAAE,MAAM,gCAAgC,CAAC;AA8B/D;;GAEG;AACH,qBAAa,UAAW,SAAQ,UAAU;IAyBpB,OAAO,CAAC,cAAc;IAAc,OAAO,CAAC,YAAY;IAAO,OAAO,CAAC,eAAe;IACpB,OAAO,CAAC,MAAM;IAClG,OAAO,CAAC,OAAO;IA1BjB,OAAO,CAAC,cAAc,CAAK;IAC3B,OAAO,CAAC,aAAa,CAAC,CAAe;IACrC,OAAO,CAAC,QAAQ,CAAC,QAAQ,CAAa;WAExB,MAAM,CAAC,MAAM,EAAE,UAAU,EAAE,MAAM,EAAE,gBAAgB,EAAE,OAAO,EAAE,UAAU,EAAE,IAAI,EAAE,OAAO,EAAE,KAAK,EAAE,mBAAmB,EAC/H,MAAM,EAAE,YAAY,EAAE,OAAO,EAAE,OAAO,EAAE,MAAM,EAAE,OAAO,EAAE,UAAU,CAAC,EAAE,mBAAmB,EAAE,KAAK,CAAC,EAAE,gBAAgB,EAAE,mBAAmB,UAAM,EAAE,QAAQ,CAAC,EAAE,aAAa,GAAG,UAAU,GAAG,SAAS;IAmBnM,OAAO;IAUM,IAAI,IAAI,OAAO,CAAC,gBAAgB,CAAC;IA8B9C,SAAS,CAAC,YAAY,CAAC,SAAS,EAAE,IAAI,CAAC,QAAQ,EAAE,KAAK,EAAE,GAAG,GAAG,OAAO;IAIrE,OAAO,CAAC,aAAa;CAkEtB"}
|
|
@@ -43,7 +43,7 @@ export class I3dmReader extends GltfReader {
|
|
|
43
43
|
_instanceCount = 0;
|
|
44
44
|
_featureTable;
|
|
45
45
|
_modelId;
|
|
46
|
-
static create(stream, iModel, modelId, is3d, range, system, yAxisUp, isLeaf, isCanceled, idMap, deduplicateVertices = false) {
|
|
46
|
+
static create(stream, iModel, modelId, is3d, range, system, yAxisUp, isLeaf, isCanceled, idMap, deduplicateVertices = false, tileData) {
|
|
47
47
|
const header = new I3dmHeader(stream);
|
|
48
48
|
if (!header.isValid)
|
|
49
49
|
return undefined;
|
|
@@ -55,12 +55,12 @@ export class I3dmReader extends GltfReader {
|
|
|
55
55
|
if (undefined === featureStr)
|
|
56
56
|
return undefined;
|
|
57
57
|
const featureBinary = new Uint8Array(stream.arrayBuffer, header.featureTableJsonPosition + header.featureTableJsonLength, header.featureTableBinaryLength);
|
|
58
|
-
return new I3dmReader(featureBinary, JSON.parse(featureStr), header.batchTableJson, props, iModel, modelId, is3d, system, range, isLeaf, isCanceled, idMap, deduplicateVertices);
|
|
58
|
+
return new I3dmReader(featureBinary, JSON.parse(featureStr), header.batchTableJson, props, iModel, modelId, is3d, system, range, isLeaf, isCanceled, idMap, deduplicateVertices, tileData);
|
|
59
59
|
}
|
|
60
|
-
constructor(_featureBinary, _featureJson, _batchTableJson, props, iModel, modelId, is3d, system, _range, _isLeaf, shouldAbort, _idMap, deduplicateVertices = false) {
|
|
60
|
+
constructor(_featureBinary, _featureJson, _batchTableJson, props, iModel, modelId, is3d, system, _range, _isLeaf, shouldAbort, _idMap, deduplicateVertices = false, tileData) {
|
|
61
61
|
super({
|
|
62
62
|
props, iModel, system, shouldAbort, deduplicateVertices,
|
|
63
|
-
is2d: !is3d, idMap: _idMap,
|
|
63
|
+
is2d: !is3d, idMap: _idMap, tileData
|
|
64
64
|
});
|
|
65
65
|
this._featureBinary = _featureBinary;
|
|
66
66
|
this._featureJson = _featureJson;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"I3dmReader.js","sourceRoot":"","sources":["../../../../src/internal/tile/I3dmReader.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 */\nimport { ByteStream, Id64String, JsonUtils, utf8ToString } from \"@itwin/core-bentley\";\nimport { AxisOrder, Matrix3d, Point3d, Vector3d } from \"@itwin/core-geometry\";\nimport { ElementAlignedBox3d, Feature, FeatureTable, I3dmHeader, TileReadStatus } from \"@itwin/core-common\";\nimport { IModelConnection } from \"../../IModelConnection\";\nimport { InstancedGraphicParams } from \"../../common/render/InstancedGraphicParams\";\nimport { Mesh } from \"../../common/internal/render/MeshPrimitives\";\nimport { RenderSystem } from \"../../render/RenderSystem\";\nimport { BatchedTileIdMap, GltfReader, GltfReaderProps, GltfReaderResult, ShouldAbortReadGltf } from \"../../tile/internal\";\n\nfunction setTransform(transforms: Float32Array, index: number, rotation: Matrix3d, origin: Point3d): void {\n const i = index * 12;\n let rot = rotation.coffs;\n\n const ignoreRotation = false;\n if (ignoreRotation)\n rot = new Float64Array([1, 0, 0, 0, 1, 0, 0, 0, 1]);\n\n const ignoreOrigin = false;\n if (ignoreOrigin)\n origin.x = origin.y = origin.z = 0;\n\n transforms[i + 0] = rot[0];\n transforms[i + 1] = rot[1];\n transforms[i + 2] = rot[2];\n transforms[i + 3] = origin.x;\n\n transforms[i + 4] = rot[3];\n transforms[i + 5] = rot[4];\n transforms[i + 6] = rot[5];\n transforms[i + 7] = origin.y;\n\n transforms[i + 8] = rot[6];\n transforms[i + 9] = rot[7];\n transforms[i + 10] = rot[8];\n transforms[i + 11] = origin.z;\n}\n\n/**\n * Deserializes a tile in [i3dm](https://github.com/AnalyticalGraphicsInc/3d-tiles/tree/master/specification/TileFormats/Instanced3DModel) format.\n */\nexport class I3dmReader extends GltfReader {\n private _instanceCount = 0;\n private _featureTable?: FeatureTable;\n private readonly _modelId: Id64String;\n\n public static create(stream: ByteStream, iModel: IModelConnection, modelId: Id64String, is3d: boolean, range: ElementAlignedBox3d,\n system: RenderSystem, yAxisUp: boolean, isLeaf: boolean, isCanceled?: ShouldAbortReadGltf, idMap?: BatchedTileIdMap, deduplicateVertices=false): I3dmReader | undefined {\n const header = new I3dmHeader(stream);\n if (!header.isValid)\n return undefined;\n\n const props = GltfReaderProps.create(stream.nextBytes(header.length - stream.curPos), yAxisUp);\n if (undefined === props)\n return undefined;\n\n stream.curPos = header.featureTableJsonPosition;\n const featureStr = utf8ToString(stream.nextBytes(header.featureTableJsonLength));\n if (undefined === featureStr)\n return undefined;\n\n const featureBinary = new Uint8Array(stream.arrayBuffer, header.featureTableJsonPosition + header.featureTableJsonLength, header.featureTableBinaryLength);\n return new I3dmReader(featureBinary, JSON.parse(featureStr), header.batchTableJson, props, iModel, modelId, is3d, system,\n range, isLeaf, isCanceled, idMap, deduplicateVertices);\n }\n\n private constructor(private _featureBinary: Uint8Array, private _featureJson: any, private _batchTableJson: any, props: GltfReaderProps,\n iModel: IModelConnection, modelId: Id64String, is3d: boolean, system: RenderSystem, private _range: ElementAlignedBox3d,\n private _isLeaf: boolean, shouldAbort?: ShouldAbortReadGltf, _idMap?: BatchedTileIdMap, deduplicateVertices=false) {\n super({\n props, iModel, system, shouldAbort, deduplicateVertices,\n is2d: !is3d, idMap: _idMap,\n });\n this._modelId = modelId;\n }\n\n public async read(): Promise<GltfReaderResult> {\n this._instanceCount = JsonUtils.asInt(this._featureJson.INSTANCES_LENGTH, 0);\n\n // NB: For reality models with no batch table, we want the model ID in the feature table\n this._featureTable = new FeatureTable(undefined === this._batchTableJson ? this._instanceCount : 1, this._modelId, this._type);\n if (this._idMap !== undefined && this._batchTableJson !== undefined) {\n for (let i = 0; i < this._instanceCount; i++) {\n const feature: any = {};\n for (const key in this._batchTableJson) // eslint-disable-line guard-for-in\n feature[key] = this._batchTableJson[key][i];\n\n this._featureTable.insert(new Feature(this._idMap.getBatchId(feature)));\n }\n } else {\n // NB: For reality models with no batch table, we want the model ID in the feature table\n const feature = new Feature(this._modelId);\n this._featureTable.insert(feature);\n }\n\n await this.resolveResources();\n if (this._isCanceled)\n return { readStatus: TileReadStatus.Canceled, isLeaf: this._isLeaf };\n\n const instances = this.readInstances();\n if (undefined === instances)\n return { readStatus: TileReadStatus.InvalidTileData, isLeaf: this._isLeaf };\n\n return this.readGltfAndCreateGraphics(this._isLeaf, this._featureTable, this._range, undefined, undefined, instances);\n }\n\n protected readFeatures(_features: Mesh.Features, _json: any): boolean {\n return false;\n }\n\n private readInstances(): InstancedGraphicParams | undefined {\n const count = JsonUtils.asInt(this._featureJson.INSTANCES_LENGTH, 0);\n if (count <= 0)\n return undefined;\n\n const json = this._featureJson;\n const binary = this._featureBinary;\n\n const batchIds = json.BATCH_ID ? new Int32Array(binary.buffer, binary.byteOffset + json.BATCH_ID.byteOffset, count) : undefined;\n const positions = json.POSITION ? new Float32Array(binary.buffer, binary.byteOffset + json.POSITION.byteOffset, count * 3) : undefined;\n const upNormals = json.NORMAL_UP ? new Float32Array(binary.buffer, binary.byteOffset + json.NORMAL_UP.byteOffset, count * 3) : undefined;\n const rightNormals = json.NORMAL_RIGHT ? new Float32Array(binary.buffer, binary.byteOffset + json.NORMAL_RIGHT.byteOffset, count * 3) : undefined;\n const scales = json.SCALE ? new Float32Array(binary.buffer, binary.byteOffset + json.SCALE.byteOffset, count) : undefined;\n const nonUniformScales = json.SCALE_NON_UNIFORM ? new Float32Array(binary.buffer, binary.byteOffset + json.SCALE_NON_UNIFORM.byteOffset, count * 3) : undefined;\n\n const matrix = Matrix3d.createIdentity();\n const position = Point3d.createZero();\n const upNormal = Vector3d.create(0, 0, 1);\n const rightNormal = Vector3d.create(1, 0, 0);\n const scale = Vector3d.create(1, 1, 1);\n\n const transformCenter = this._range.center;\n const transforms = new Float32Array(12 * count);\n for (let i = 0; i < count; i++) {\n const index = i * 3;\n if (positions)\n position.set(positions[index] - transformCenter.x, positions[index + 1] - transformCenter.y, positions[index + 2] - transformCenter.z);\n\n if (upNormals || rightNormals) {\n if (upNormals)\n upNormal.set(upNormals[index], upNormals[index + 1], upNormals[index + 2]);\n\n if (rightNormals)\n rightNormal.set(rightNormals[index], rightNormals[index + 1], rightNormals[index + 2]);\n\n if (scales)\n scale.x = scale.y = scale.z = scales[i];\n\n if (nonUniformScales) {\n scale.x *= nonUniformScales[index + 0];\n scale.y *= nonUniformScales[index + 1];\n scale.z *= nonUniformScales[index + 2];\n }\n\n Matrix3d.createRigidFromColumns(rightNormal, upNormal, AxisOrder.XYZ, matrix);\n if (scales || nonUniformScales)\n matrix.scaleColumnsInPlace(scale.x, scale.y, scale.z);\n\n setTransform(transforms, i, matrix, position);\n }\n }\n\n let featureIds;\n if (undefined !== batchIds) {\n featureIds = new Uint8Array(3 * batchIds.length);\n for (let i = 0, j = 0; i < batchIds.length; i++) {\n const batchId = batchIds[i];\n featureIds[j++] = batchId & 0x000000ff;\n featureIds[j++] = (batchId & 0x0000ff00) >> 8;\n featureIds[j++] = (batchId & 0x00ff0000) >> 16;\n }\n }\n const symbologyOverrides = undefined;\n\n return { count, transforms, symbologyOverrides, featureIds, transformCenter };\n }\n}\n"]}
|
|
1
|
+
{"version":3,"file":"I3dmReader.js","sourceRoot":"","sources":["../../../../src/internal/tile/I3dmReader.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 */\nimport { ByteStream, Id64String, JsonUtils, utf8ToString } from \"@itwin/core-bentley\";\nimport { AxisOrder, Matrix3d, Point3d, Vector3d } from \"@itwin/core-geometry\";\nimport { ElementAlignedBox3d, Feature, FeatureTable, I3dmHeader, TileReadStatus } from \"@itwin/core-common\";\nimport { IModelConnection } from \"../../IModelConnection\";\nimport { InstancedGraphicParams } from \"../../common/render/InstancedGraphicParams\";\nimport { Mesh } from \"../../common/internal/render/MeshPrimitives\";\nimport { RenderSystem } from \"../../render/RenderSystem\";\nimport { BatchedTileIdMap, GltfReader, GltfReaderProps, GltfReaderResult, ShouldAbortReadGltf } from \"../../tile/internal\";\nimport { LayerTileData } from \"../render/webgl/MapLayerParams\";\n\nfunction setTransform(transforms: Float32Array, index: number, rotation: Matrix3d, origin: Point3d): void {\n const i = index * 12;\n let rot = rotation.coffs;\n\n const ignoreRotation = false;\n if (ignoreRotation)\n rot = new Float64Array([1, 0, 0, 0, 1, 0, 0, 0, 1]);\n\n const ignoreOrigin = false;\n if (ignoreOrigin)\n origin.x = origin.y = origin.z = 0;\n\n transforms[i + 0] = rot[0];\n transforms[i + 1] = rot[1];\n transforms[i + 2] = rot[2];\n transforms[i + 3] = origin.x;\n\n transforms[i + 4] = rot[3];\n transforms[i + 5] = rot[4];\n transforms[i + 6] = rot[5];\n transforms[i + 7] = origin.y;\n\n transforms[i + 8] = rot[6];\n transforms[i + 9] = rot[7];\n transforms[i + 10] = rot[8];\n transforms[i + 11] = origin.z;\n}\n\n/**\n * Deserializes a tile in [i3dm](https://github.com/AnalyticalGraphicsInc/3d-tiles/tree/master/specification/TileFormats/Instanced3DModel) format.\n */\nexport class I3dmReader extends GltfReader {\n private _instanceCount = 0;\n private _featureTable?: FeatureTable;\n private readonly _modelId: Id64String;\n\n public static create(stream: ByteStream, iModel: IModelConnection, modelId: Id64String, is3d: boolean, range: ElementAlignedBox3d,\n system: RenderSystem, yAxisUp: boolean, isLeaf: boolean, isCanceled?: ShouldAbortReadGltf, idMap?: BatchedTileIdMap, deduplicateVertices=false, tileData?: LayerTileData): I3dmReader | undefined {\n const header = new I3dmHeader(stream);\n if (!header.isValid)\n return undefined;\n\n const props = GltfReaderProps.create(stream.nextBytes(header.length - stream.curPos), yAxisUp);\n if (undefined === props)\n return undefined;\n\n stream.curPos = header.featureTableJsonPosition;\n const featureStr = utf8ToString(stream.nextBytes(header.featureTableJsonLength));\n if (undefined === featureStr)\n return undefined;\n\n const featureBinary = new Uint8Array(stream.arrayBuffer, header.featureTableJsonPosition + header.featureTableJsonLength, header.featureTableBinaryLength);\n return new I3dmReader(featureBinary, JSON.parse(featureStr), header.batchTableJson, props, iModel, modelId, is3d, system,\n range, isLeaf, isCanceled, idMap, deduplicateVertices, tileData);\n }\n\n private constructor(private _featureBinary: Uint8Array, private _featureJson: any, private _batchTableJson: any, props: GltfReaderProps,\n iModel: IModelConnection, modelId: Id64String, is3d: boolean, system: RenderSystem, private _range: ElementAlignedBox3d,\n private _isLeaf: boolean, shouldAbort?: ShouldAbortReadGltf, _idMap?: BatchedTileIdMap, deduplicateVertices=false, tileData?: LayerTileData) {\n super({\n props, iModel, system, shouldAbort, deduplicateVertices,\n is2d: !is3d, idMap: _idMap, tileData\n });\n this._modelId = modelId;\n }\n\n public async read(): Promise<GltfReaderResult> {\n this._instanceCount = JsonUtils.asInt(this._featureJson.INSTANCES_LENGTH, 0);\n\n // NB: For reality models with no batch table, we want the model ID in the feature table\n this._featureTable = new FeatureTable(undefined === this._batchTableJson ? this._instanceCount : 1, this._modelId, this._type);\n if (this._idMap !== undefined && this._batchTableJson !== undefined) {\n for (let i = 0; i < this._instanceCount; i++) {\n const feature: any = {};\n for (const key in this._batchTableJson) // eslint-disable-line guard-for-in\n feature[key] = this._batchTableJson[key][i];\n\n this._featureTable.insert(new Feature(this._idMap.getBatchId(feature)));\n }\n } else {\n // NB: For reality models with no batch table, we want the model ID in the feature table\n const feature = new Feature(this._modelId);\n this._featureTable.insert(feature);\n }\n\n await this.resolveResources();\n if (this._isCanceled)\n return { readStatus: TileReadStatus.Canceled, isLeaf: this._isLeaf };\n\n const instances = this.readInstances();\n if (undefined === instances)\n return { readStatus: TileReadStatus.InvalidTileData, isLeaf: this._isLeaf };\n\n return this.readGltfAndCreateGraphics(this._isLeaf, this._featureTable, this._range, undefined, undefined, instances);\n }\n\n protected readFeatures(_features: Mesh.Features, _json: any): boolean {\n return false;\n }\n\n private readInstances(): InstancedGraphicParams | undefined {\n const count = JsonUtils.asInt(this._featureJson.INSTANCES_LENGTH, 0);\n if (count <= 0)\n return undefined;\n\n const json = this._featureJson;\n const binary = this._featureBinary;\n\n const batchIds = json.BATCH_ID ? new Int32Array(binary.buffer, binary.byteOffset + json.BATCH_ID.byteOffset, count) : undefined;\n const positions = json.POSITION ? new Float32Array(binary.buffer, binary.byteOffset + json.POSITION.byteOffset, count * 3) : undefined;\n const upNormals = json.NORMAL_UP ? new Float32Array(binary.buffer, binary.byteOffset + json.NORMAL_UP.byteOffset, count * 3) : undefined;\n const rightNormals = json.NORMAL_RIGHT ? new Float32Array(binary.buffer, binary.byteOffset + json.NORMAL_RIGHT.byteOffset, count * 3) : undefined;\n const scales = json.SCALE ? new Float32Array(binary.buffer, binary.byteOffset + json.SCALE.byteOffset, count) : undefined;\n const nonUniformScales = json.SCALE_NON_UNIFORM ? new Float32Array(binary.buffer, binary.byteOffset + json.SCALE_NON_UNIFORM.byteOffset, count * 3) : undefined;\n\n const matrix = Matrix3d.createIdentity();\n const position = Point3d.createZero();\n const upNormal = Vector3d.create(0, 0, 1);\n const rightNormal = Vector3d.create(1, 0, 0);\n const scale = Vector3d.create(1, 1, 1);\n\n const transformCenter = this._range.center;\n const transforms = new Float32Array(12 * count);\n for (let i = 0; i < count; i++) {\n const index = i * 3;\n if (positions)\n position.set(positions[index] - transformCenter.x, positions[index + 1] - transformCenter.y, positions[index + 2] - transformCenter.z);\n\n if (upNormals || rightNormals) {\n if (upNormals)\n upNormal.set(upNormals[index], upNormals[index + 1], upNormals[index + 2]);\n\n if (rightNormals)\n rightNormal.set(rightNormals[index], rightNormals[index + 1], rightNormals[index + 2]);\n\n if (scales)\n scale.x = scale.y = scale.z = scales[i];\n\n if (nonUniformScales) {\n scale.x *= nonUniformScales[index + 0];\n scale.y *= nonUniformScales[index + 1];\n scale.z *= nonUniformScales[index + 2];\n }\n\n Matrix3d.createRigidFromColumns(rightNormal, upNormal, AxisOrder.XYZ, matrix);\n if (scales || nonUniformScales)\n matrix.scaleColumnsInPlace(scale.x, scale.y, scale.z);\n\n setTransform(transforms, i, matrix, position);\n }\n }\n\n let featureIds;\n if (undefined !== batchIds) {\n featureIds = new Uint8Array(3 * batchIds.length);\n for (let i = 0, j = 0; i < batchIds.length; i++) {\n const batchId = batchIds[i];\n featureIds[j++] = batchId & 0x000000ff;\n featureIds[j++] = (batchId & 0x0000ff00) >> 8;\n featureIds[j++] = (batchId & 0x00ff0000) >> 16;\n }\n }\n const symbologyOverrides = undefined;\n\n return { count, transforms, symbologyOverrides, featureIds, transformCenter };\n }\n}\n"]}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"IModelTileTree.d.ts","sourceRoot":"","sources":["../../../../src/internal/tile/IModelTileTree.ts"],"names":[],"mappings":"AAIA;;GAEG;AAEH,OAAO,EAAuB,UAAU,EAAE,SAAS,EAAE,UAAU,EAAE,MAAM,qBAAqB,CAAC;AAC7F,OAAO,EAAE,OAAO,EAAa,MAAM,sBAAsB,CAAC;AAC1D,OAAO,EACL,SAAS,EAAE,iBAAiB,EAAE,WAAW,EACzC,gBAAgB,EAAE,mBAAmB,EAAwB,cAAc,EAAE,SAAS,EACvF,MAAM,oBAAoB,CAAC;AAE5B,OAAO,EAAE,gBAAgB,EAAE,MAAM,wBAAwB,CAAC;AAI1D,OAAO,EACkC,WAAW,EAAE,UAAU,EAA8C,IAAI,
|
|
1
|
+
{"version":3,"file":"IModelTileTree.d.ts","sourceRoot":"","sources":["../../../../src/internal/tile/IModelTileTree.ts"],"names":[],"mappings":"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"}
|
|
@@ -7,11 +7,11 @@
|
|
|
7
7
|
*/
|
|
8
8
|
import { assert, BeTimePoint } from "@itwin/core-bentley";
|
|
9
9
|
import { Range3d, Transform } from "@itwin/core-geometry";
|
|
10
|
-
import { BatchType, ContentIdProvider, FeatureAppearanceProvider
|
|
10
|
+
import { BatchType, ContentIdProvider, FeatureAppearanceProvider } from "@itwin/core-common";
|
|
11
11
|
import { IModelApp } from "../../IModelApp";
|
|
12
12
|
import { GraphicalEditingScope } from "../../GraphicalEditingScope";
|
|
13
13
|
import { GraphicBranch } from "../../render/GraphicBranch";
|
|
14
|
-
import { acquireImdlDecoder, DynamicIModelTile, IModelTile, iModelTileParamsFromJSON, Tile, TileLoadPriority, TileTree
|
|
14
|
+
import { acquireImdlDecoder, DynamicIModelTile, IModelTile, iModelTileParamsFromJSON, Tile, TileLoadPriority, TileTree } from "../../tile/internal";
|
|
15
15
|
// Overrides nothing.
|
|
16
16
|
const viewFlagOverrides = {};
|
|
17
17
|
export function iModelTileTreeParamsFromJSON(props, iModel, modelId, options) {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"IModelTileTree.js","sourceRoot":"","sources":["../../../../src/internal/tile/IModelTileTree.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 { assert, BeTimePoint, GuidString, Id64Array, Id64String } from \"@itwin/core-bentley\";\nimport { Range3d, Transform } from \"@itwin/core-geometry\";\nimport {\n BatchType, ContentIdProvider, EdgeOptions, ElementAlignedBox3d, ElementGeometryChange, FeatureAppearanceProvider,\n IModelTileTreeId, IModelTileTreeProps, ModelGeometryChanges, RenderSchedule, TileProps,\n} from \"@itwin/core-common\";\nimport { IModelApp } from \"../../IModelApp\";\nimport { IModelConnection } from \"../../IModelConnection\";\nimport { GraphicalEditingScope } from \"../../GraphicalEditingScope\";\nimport { RenderSystem } from \"../../render/RenderSystem\";\nimport { GraphicBranch } from \"../../render/GraphicBranch\";\nimport {\n acquireImdlDecoder, DynamicIModelTile, ImdlDecoder, IModelTile, IModelTileParams, iModelTileParamsFromJSON, Tile, TileContent, TileDrawArgs, TileLoadPriority, TileParams, TileRequest,\n TileRequestChannel, TileTree, TileTreeParams,\n} from \"../../tile/internal\";\n\nexport interface IModelTileTreeOptions {\n readonly allowInstancing: boolean;\n readonly edges: EdgeOptions | false;\n readonly batchType: BatchType;\n readonly is3d: boolean;\n readonly timeline: RenderSchedule.ModelTimeline | undefined;\n}\n\n// Overrides nothing.\nconst viewFlagOverrides = {};\n\n/** Parameters used to construct an [[IModelTileTree]]\n */\nexport interface IModelTileTreeParams extends TileTreeParams {\n rootTile: TileProps;\n contentIdQualifier?: string;\n geometryGuid?: GuidString;\n maxInitialTilesToSkip?: number;\n formatVersion?: number;\n tileScreenSize: number;\n options: IModelTileTreeOptions;\n transformNodeRanges?: Map<number, Range3d>;\n}\n\nexport function iModelTileTreeParamsFromJSON(props: IModelTileTreeProps, iModel: IModelConnection, modelId: Id64String, options: IModelTileTreeOptions): IModelTileTreeParams {\n const location = Transform.fromJSON(props.location);\n const { formatVersion, id, rootTile, contentIdQualifier, maxInitialTilesToSkip, geometryGuid } = props;\n const tileScreenSize = props.tileScreenSize ?? 512;\n\n let contentRange;\n if (undefined !== props.contentRange)\n contentRange = Range3d.fromJSON<ElementAlignedBox3d>(props.contentRange);\n\n let transformNodeRanges;\n if (props.transformNodeRanges) {\n transformNodeRanges = new Map<number, Range3d>();\n for (const entry of props.transformNodeRanges)\n transformNodeRanges.set(entry.id, Range3d.fromJSON(entry));\n }\n\n const priority = BatchType.Primary === options.batchType ? TileLoadPriority.Primary : TileLoadPriority.Classifier;\n return {\n formatVersion,\n id,\n rootTile,\n iModel,\n location,\n modelId,\n contentRange,\n geometryGuid,\n contentIdQualifier,\n maxInitialTilesToSkip,\n priority,\n options,\n tileScreenSize,\n transformNodeRanges,\n };\n}\n\nfunction findElementChangesForModel(changes: Iterable<ModelGeometryChanges>, modelId: Id64String): Iterable<ElementGeometryChange> | undefined {\n for (const change of changes)\n if (change.id === modelId)\n return change.elements;\n\n return undefined;\n}\n\n/** No graphical editing scope is currently active. */\nclass StaticState {\n public readonly type = \"static\";\n public readonly [Symbol.dispose]!: () => void;\n\n public constructor(root: RootTile) {\n this[Symbol.dispose] = GraphicalEditingScope.onEnter.addOnce((scope: GraphicalEditingScope) => {\n root.transition(new InteractiveState(scope, root));\n });\n }\n}\n\n/** A graphical editing scope is currently active, but no elements in the tile tree's model have been modified. */\nclass InteractiveState {\n public readonly type = \"interactive\";\n public readonly [Symbol.dispose]!: () => void;\n\n public constructor(scope: GraphicalEditingScope, root: RootTile) {\n const removeEndingListener = scope.onExiting.addOnce((_) => {\n root.transition(new StaticState(root));\n });\n\n const removeGeomListener = scope.onGeometryChanges.addListener((changes: Iterable<ModelGeometryChanges>, _scope: GraphicalEditingScope) => {\n assert(scope === _scope);\n const elemChanges = findElementChangesForModel(changes, root.tree.modelId);\n if (elemChanges)\n root.transition(new DynamicState(root, elemChanges, scope));\n });\n\n this[Symbol.dispose] = () => {\n removeEndingListener();\n removeGeomListener();\n };\n }\n}\n\n/** Elements in the tile tree's model have been modified during the current editing scope. */\nclass DynamicState {\n public readonly type = \"dynamic\";\n public readonly rootTile: DynamicIModelTile;\n private readonly _dispose: () => void;\n\n public [Symbol.dispose](): void {\n this._dispose();\n this.rootTile[Symbol.dispose]();\n }\n\n public constructor(root: RootTile, elemChanges: Iterable<ElementGeometryChange>, scope: GraphicalEditingScope) {\n this.rootTile = DynamicIModelTile.create(root, elemChanges);\n\n const removeEndingListener = scope.onExiting.addOnce((_) => {\n root.transition(new StaticState(root));\n });\n\n const removeGeomListener = scope.onGeometryChanges.addListener((changes: Iterable<ModelGeometryChanges>, _scope: GraphicalEditingScope) => {\n assert(scope === _scope);\n const elems = findElementChangesForModel(changes, root.tree.modelId);\n if (elems)\n this.rootTile.handleGeometryChanges(elems);\n });\n\n this._dispose = () => {\n removeEndingListener();\n removeGeomListener();\n };\n }\n}\n\n/** The tile tree has been disposed. */\nclass DisposedState {\n public readonly type = \"disposed\";\n public [Symbol.dispose](): void { }\n}\n\nconst disposedState = new DisposedState();\n\n/** The current state of an [[IModelTileTree]]'s [[RootTile]]. The tile transitions between these states primarily in response to GraphicalEditingScope events. */\ntype RootTileState = StaticState | InteractiveState | DynamicState | DisposedState;\n\n/** The root tile for an [[IModelTileTree]].\n */\nexport type RootIModelTile = Tile & { tileScreenSize: number, updateDynamicRange: (childTile: Tile) => void };\n\n/** Represents the root [[Tile]] of an [[IModelTileTree]]. The root tile has one or two direct child tiles which represent different branches of the tree:\n * - The static branch, containing tiles that represent the state of the model's geometry as of the beginning of the current [[GraphicalEditingScope]].\n * - The dynamic branch, containing tiles representing the geometry of elements that have been modified during the current [[GraphicalEditingScope]].\n * If no editing scope is currently active, the dynamic branch does not exist, and the static branch represents the current state of all elements in the model.\n */\nclass RootTile extends Tile {\n public readonly staticBranch: IModelTile;\n private _tileState: RootTileState;\n private readonly _staticTreeContentRange?: Range3d;\n\n public get tileState(): RootTileState {\n return this._tileState;\n }\n\n public constructor(params: IModelTileParams, tree: IModelTileTree) {\n const rootParams: TileParams = {\n ...params,\n range: params.range.clone(),\n contentRange: params.contentRange?.clone(),\n isLeaf: false,\n contentId: \"\",\n };\n\n super(rootParams, tree);\n this.staticBranch = new IModelTile(params, tree);\n this._staticTreeContentRange = tree.contentRange?.clone();\n\n if (!this._contentRange)\n this._contentRange = this.staticBranch.contentRange.clone();\n\n // Determine initial state.\n const scope = tree.iModel.isBriefcaseConnection() ? tree.iModel.editingScope : undefined;\n if (undefined === scope) {\n this._tileState = new StaticState(this);\n } else {\n const changes = scope.getGeometryChangesForModel(tree.modelId);\n this._tileState = changes ? new DynamicState(this, changes, scope) : new InteractiveState(scope, this);\n }\n\n // Load the children immediately.\n this.setIsReady();\n this.loadChildren();\n }\n\n public override[Symbol.dispose](): void {\n this.transition(disposedState);\n super[Symbol.dispose]();\n }\n\n protected _loadChildren(resolve: (children: Tile[] | undefined) => void, _reject: (error: Error) => void): void {\n const children: Tile[] = [this.staticBranch];\n if (this._tileState.type === \"dynamic\")\n children.push(this._tileState.rootTile);\n\n resolve(children);\n }\n\n public get channel(): TileRequestChannel {\n throw new Error(\"Root iModel tile has no content\");\n }\n\n public async requestContent(_isCanceled: () => boolean): Promise<TileRequest.Response> {\n assert(false, \"Root iModel tile has no content\");\n return undefined;\n }\n\n public async readContent(_data: TileRequest.ResponseData, _system: RenderSystem, _isCanceled: () => boolean): Promise<TileContent> {\n throw new Error(\"Root iModel tile has no content\");\n }\n\n public draw(args: TileDrawArgs, tiles: Tile[], numStaticTiles: number): void {\n assert(numStaticTiles >= 0 && numStaticTiles <= tiles.length);\n\n // Draw the static tiles.\n for (let i = 0; i < numStaticTiles; i++)\n tiles[i].drawGraphics(args);\n\n if (\"dynamic\" !== this._tileState.type || numStaticTiles === tiles.length) {\n if (\"dynamic\" === this._tileState.type)\n args.addAppearanceProvider(this._tileState.rootTile.appearanceProvider);\n\n args.drawGraphics();\n return;\n }\n\n // We need to hide any modified elements in the static tiles. Pull their graphics into a separate branch.\n if (!args.graphics.isEmpty) {\n const staticBranch = new GraphicBranch();\n for (const staticGraphic of args.graphics.entries)\n staticBranch.add(staticGraphic);\n\n let appearanceProvider = this._tileState.rootTile.appearanceProvider;\n if (args.appearanceProvider)\n appearanceProvider = FeatureAppearanceProvider.chain(args.appearanceProvider, appearanceProvider);\n\n args.graphics.clear();\n args.graphics.add(args.context.createGraphicBranch(staticBranch, Transform.createIdentity(), { appearanceProvider }));\n }\n\n // Draw the dynamic tiles.\n for (let i = numStaticTiles; i < tiles.length; i++)\n tiles[i].drawGraphics(args);\n\n args.drawGraphics();\n }\n\n public prune(olderThan: BeTimePoint): void {\n this.staticBranch.pruneChildren(olderThan);\n if (\"dynamic\" === this._tileState.type)\n this._tileState.rootTile.pruneChildren(olderThan);\n }\n\n public transition(newState: RootTileState): void {\n assert(newState.type !== this._tileState.type);\n const resetRange = \"dynamic\" === this._tileState.type;\n\n assert(undefined !== this.children);\n if (\"dynamic\" === this._tileState.type) {\n assert(2 === this.children.length);\n this.children.pop();\n } else if (\"dynamic\" === newState.type) {\n assert(1 === this.children.length);\n this.children.push(newState.rootTile);\n }\n\n this._tileState[Symbol.dispose]();\n this._tileState = newState;\n\n if (resetRange)\n this.resetRange();\n }\n\n private resetRange(): void {\n this.staticBranch.range.clone(this.range);\n this.staticBranch.contentRange.clone(this._contentRange);\n\n if (this._staticTreeContentRange && this.tree.contentRange)\n this._staticTreeContentRange.clone(this.tree.contentRange);\n\n }\n\n public get tileScreenSize(): number {\n return this.staticBranch.iModelTree.tileScreenSize;\n }\n\n public updateDynamicRange(tile: Tile): void {\n this.resetRange();\n if (this._staticTreeContentRange && this.tree.contentRange && !tile.contentRange.isNull)\n this.tree.contentRange.extendRange(tile.contentRange);\n\n if (!tile.range.isNull)\n this.range.extendRange(tile.range);\n\n assert(undefined !== this._contentRange);\n if (!tile.contentRange.isNull)\n this._contentRange.extendRange(tile.contentRange);\n }\n}\n\n/** A TileTree whose contents are derived from geometry stored in a Model in an IModelDb.\n * @internal exported strictly for display-test-app until we remove CommonJS support.\n */\nexport class IModelTileTree extends TileTree {\n public readonly decoder: ImdlDecoder;\n private readonly _rootTile: RootTile;\n private readonly _options: IModelTileTreeOptions;\n private readonly _transformNodeRanges?: Map<number, Range3d>;\n public readonly contentIdQualifier?: string;\n public readonly geometryGuid?: string;\n public readonly maxTilesToSkip: number;\n public readonly maxInitialTilesToSkip: number;\n public readonly contentIdProvider: ContentIdProvider;\n public readonly stringifiedSectionClip?: string;\n public readonly tileScreenSize: number;\n public readonly iModelTileTreeId: IModelTileTreeId;\n /** Strictly for debugging/testing - forces tile selection to halt at the specified depth. */\n public debugMaxDepth?: number;\n /** A little hacky...we must not override selectTiles(), but draw() needs to distinguish between static and dynamic tiles.\n * So _selectTiles() puts the static tiles first in the Tile[] array, and records the number of static tiles selected, to be\n * used by draw().\n */\n private _numStaticTilesSelected = 0;\n\n public constructor(params: IModelTileTreeParams, treeId: IModelTileTreeId) {\n super(params);\n this.iModelTileTreeId = treeId;\n this.contentIdQualifier = params.contentIdQualifier;\n this.geometryGuid = params.geometryGuid;\n this.tileScreenSize = params.tileScreenSize;\n\n if (BatchType.Primary === treeId.type)\n this.stringifiedSectionClip = treeId.sectionCut;\n\n this.maxInitialTilesToSkip = params.maxInitialTilesToSkip ?? 0;\n this.maxTilesToSkip = IModelApp.tileAdmin.maximumLevelsToSkip;\n\n this._options = params.options;\n this._transformNodeRanges = params.transformNodeRanges;\n\n this.contentIdProvider = ContentIdProvider.create(params.options.allowInstancing, IModelApp.tileAdmin, params.formatVersion);\n\n params.rootTile.contentId = this.contentIdProvider.rootContentId;\n this._rootTile = new RootTile(iModelTileParamsFromJSON(params.rootTile, undefined), this);\n\n this.decoder = acquireImdlDecoder({\n type: this.batchType,\n omitEdges: false === this.edgeOptions,\n timeline: this.timeline,\n iModel: this.iModel,\n batchModelId: this.modelId,\n is3d: this.is3d,\n containsTransformNodes: this.containsTransformNodes,\n noWorker: !IModelApp.tileAdmin.decodeImdlInWorker,\n });\n }\n\n public override[Symbol.dispose](): void {\n this.decoder.release();\n super[Symbol.dispose]();\n }\n\n public get maxDepth() { return 32; }\n public get rootTile(): Tile { return this._rootTile; }\n /** Exposed chiefly for tests. */\n public get staticBranch(): IModelTile { return this._rootTile.staticBranch; }\n public get is3d() { return this._options.is3d; }\n public override get isContentUnbounded() { return false; }\n public get viewFlagOverrides() { return viewFlagOverrides; }\n\n public get batchType(): BatchType { return this._options.batchType; }\n public get edgeOptions(): EdgeOptions | false { return this._options.edges; }\n public get timeline(): RenderSchedule.ModelTimeline | undefined { return this._options.timeline; }\n\n public override get loadPriority(): TileLoadPriority {\n // If the model has been modified, we want to prioritize keeping its graphics up to date.\n return this.tileState === \"dynamic\" ? TileLoadPriority.Dynamic : super.loadPriority;\n }\n\n protected _selectTiles(args: TileDrawArgs): Tile[] {\n args.markUsed(this._rootTile);\n const tiles: Tile[] = [];\n this._rootTile.staticBranch.selectTiles(tiles, args, 0);\n this._numStaticTilesSelected = tiles.length;\n\n if (this._rootTile.tileState.type === \"dynamic\")\n this._rootTile.tileState.rootTile.selectTiles(tiles, args);\n\n return tiles;\n }\n\n public draw(args: TileDrawArgs): void {\n const tiles = this.selectTiles(args);\n this._rootTile.draw(args, tiles, this._numStaticTilesSelected);\n }\n\n public prune(): void {\n const olderThan = BeTimePoint.now().minus(this.expirationTime);\n this._rootTile.prune(olderThan);\n }\n\n /** Exposed strictly for tests. */\n public get tileState(): \"static\" | \"dynamic\" | \"interactive\" | \"disposed\" {\n return this._rootTile.tileState.type;\n }\n\n /** Exposed strictly for tests. */\n public get hiddenElements(): Id64Array {\n const state = this._rootTile.tileState;\n return \"dynamic\" === state.type ? state.rootTile.hiddenElements : [];\n }\n\n public getTransformNodeRange(nodeId: number): Range3d | undefined {\n return this._transformNodeRanges?.get(nodeId);\n }\n\n public get containsTransformNodes(): boolean {\n return undefined !== this._transformNodeRanges;\n }\n}\n"]}
|
|
1
|
+
{"version":3,"file":"IModelTileTree.js","sourceRoot":"","sources":["../../../../src/internal/tile/IModelTileTree.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 { assert, BeTimePoint, GuidString, Id64Array, Id64String } from \"@itwin/core-bentley\";\nimport { Range3d, Transform } from \"@itwin/core-geometry\";\nimport {\n BatchType, ContentIdProvider, EdgeOptions, ElementAlignedBox3d, ElementGeometryChange, FeatureAppearanceProvider,\n IModelTileTreeId, IModelTileTreeProps, ModelGeometryChanges, RenderSchedule, TileProps\n} from \"@itwin/core-common\";\nimport { IModelApp } from \"../../IModelApp\";\nimport { IModelConnection } from \"../../IModelConnection\";\nimport { GraphicalEditingScope } from \"../../GraphicalEditingScope\";\nimport { RenderSystem } from \"../../render/RenderSystem\";\nimport { GraphicBranch } from \"../../render/GraphicBranch\";\nimport {\n acquireImdlDecoder, DynamicIModelTile, ImdlDecoder, IModelTile, IModelTileParams, iModelTileParamsFromJSON, Tile,\n TileContent, TileDrawArgs, TileLoadPriority, TileParams, TileRequest, TileRequestChannel, TileTree, TileTreeParams\n} from \"../../tile/internal\";\n\nexport interface IModelTileTreeOptions {\n readonly allowInstancing: boolean;\n readonly edges: EdgeOptions | false;\n readonly batchType: BatchType;\n readonly is3d: boolean;\n readonly timeline: RenderSchedule.ModelTimeline | undefined;\n}\n\n// Overrides nothing.\nconst viewFlagOverrides = {};\n\n/** Parameters used to construct an [[IModelTileTree]]\n */\nexport interface IModelTileTreeParams extends TileTreeParams {\n rootTile: TileProps;\n contentIdQualifier?: string;\n geometryGuid?: GuidString;\n maxInitialTilesToSkip?: number;\n formatVersion?: number;\n tileScreenSize: number;\n options: IModelTileTreeOptions;\n transformNodeRanges?: Map<number, Range3d>;\n}\n\nexport function iModelTileTreeParamsFromJSON(props: IModelTileTreeProps, iModel: IModelConnection, modelId: Id64String, options: IModelTileTreeOptions): IModelTileTreeParams {\n const location = Transform.fromJSON(props.location);\n const { formatVersion, id, rootTile, contentIdQualifier, maxInitialTilesToSkip, geometryGuid } = props;\n const tileScreenSize = props.tileScreenSize ?? 512;\n\n let contentRange;\n if (undefined !== props.contentRange)\n contentRange = Range3d.fromJSON<ElementAlignedBox3d>(props.contentRange);\n\n let transformNodeRanges;\n if (props.transformNodeRanges) {\n transformNodeRanges = new Map<number, Range3d>();\n for (const entry of props.transformNodeRanges)\n transformNodeRanges.set(entry.id, Range3d.fromJSON(entry));\n }\n\n const priority = BatchType.Primary === options.batchType ? TileLoadPriority.Primary : TileLoadPriority.Classifier;\n return {\n formatVersion,\n id,\n rootTile,\n iModel,\n location,\n modelId,\n contentRange,\n geometryGuid,\n contentIdQualifier,\n maxInitialTilesToSkip,\n priority,\n options,\n tileScreenSize,\n transformNodeRanges,\n };\n}\n\nfunction findElementChangesForModel(changes: Iterable<ModelGeometryChanges>, modelId: Id64String): Iterable<ElementGeometryChange> | undefined {\n for (const change of changes)\n if (change.id === modelId)\n return change.elements;\n\n return undefined;\n}\n\n/** No graphical editing scope is currently active. */\nclass StaticState {\n public readonly type = \"static\";\n public readonly [Symbol.dispose]!: () => void;\n\n public constructor(root: RootTile) {\n this[Symbol.dispose] = GraphicalEditingScope.onEnter.addOnce((scope: GraphicalEditingScope) => {\n root.transition(new InteractiveState(scope, root));\n });\n }\n}\n\n/** A graphical editing scope is currently active, but no elements in the tile tree's model have been modified. */\nclass InteractiveState {\n public readonly type = \"interactive\";\n public readonly [Symbol.dispose]!: () => void;\n\n public constructor(scope: GraphicalEditingScope, root: RootTile) {\n const removeEndingListener = scope.onExiting.addOnce((_) => {\n root.transition(new StaticState(root));\n });\n\n const removeGeomListener = scope.onGeometryChanges.addListener((changes: Iterable<ModelGeometryChanges>, _scope: GraphicalEditingScope) => {\n assert(scope === _scope);\n const elemChanges = findElementChangesForModel(changes, root.tree.modelId);\n if (elemChanges)\n root.transition(new DynamicState(root, elemChanges, scope));\n });\n\n this[Symbol.dispose] = () => {\n removeEndingListener();\n removeGeomListener();\n };\n }\n}\n\n/** Elements in the tile tree's model have been modified during the current editing scope. */\nclass DynamicState {\n public readonly type = \"dynamic\";\n public readonly rootTile: DynamicIModelTile;\n private readonly _dispose: () => void;\n\n public [Symbol.dispose](): void {\n this._dispose();\n this.rootTile[Symbol.dispose]();\n }\n\n public constructor(root: RootTile, elemChanges: Iterable<ElementGeometryChange>, scope: GraphicalEditingScope) {\n this.rootTile = DynamicIModelTile.create(root, elemChanges);\n\n const removeEndingListener = scope.onExiting.addOnce((_) => {\n root.transition(new StaticState(root));\n });\n\n const removeGeomListener = scope.onGeometryChanges.addListener((changes: Iterable<ModelGeometryChanges>, _scope: GraphicalEditingScope) => {\n assert(scope === _scope);\n const elems = findElementChangesForModel(changes, root.tree.modelId);\n if (elems)\n this.rootTile.handleGeometryChanges(elems);\n });\n\n this._dispose = () => {\n removeEndingListener();\n removeGeomListener();\n };\n }\n}\n\n/** The tile tree has been disposed. */\nclass DisposedState {\n public readonly type = \"disposed\";\n public [Symbol.dispose](): void { }\n}\n\nconst disposedState = new DisposedState();\n\n/** The current state of an [[IModelTileTree]]'s [[RootTile]]. The tile transitions between these states primarily in response to GraphicalEditingScope events. */\ntype RootTileState = StaticState | InteractiveState | DynamicState | DisposedState;\n\n/** The root tile for an [[IModelTileTree]].\n */\nexport type RootIModelTile = Tile & { tileScreenSize: number, updateDynamicRange: (childTile: Tile) => void };\n\n/** Represents the root [[Tile]] of an [[IModelTileTree]]. The root tile has one or two direct child tiles which represent different branches of the tree:\n * - The static branch, containing tiles that represent the state of the model's geometry as of the beginning of the current [[GraphicalEditingScope]].\n * - The dynamic branch, containing tiles representing the geometry of elements that have been modified during the current [[GraphicalEditingScope]].\n * If no editing scope is currently active, the dynamic branch does not exist, and the static branch represents the current state of all elements in the model.\n */\nclass RootTile extends Tile {\n public readonly staticBranch: IModelTile;\n private _tileState: RootTileState;\n private readonly _staticTreeContentRange?: Range3d;\n\n public get tileState(): RootTileState {\n return this._tileState;\n }\n\n public constructor(params: IModelTileParams, tree: IModelTileTree) {\n const rootParams: TileParams = {\n ...params,\n range: params.range.clone(),\n contentRange: params.contentRange?.clone(),\n isLeaf: false,\n contentId: \"\",\n };\n\n super(rootParams, tree);\n this.staticBranch = new IModelTile(params, tree);\n this._staticTreeContentRange = tree.contentRange?.clone();\n\n if (!this._contentRange)\n this._contentRange = this.staticBranch.contentRange.clone();\n\n // Determine initial state.\n const scope = tree.iModel.isBriefcaseConnection() ? tree.iModel.editingScope : undefined;\n if (undefined === scope) {\n this._tileState = new StaticState(this);\n } else {\n const changes = scope.getGeometryChangesForModel(tree.modelId);\n this._tileState = changes ? new DynamicState(this, changes, scope) : new InteractiveState(scope, this);\n }\n\n // Load the children immediately.\n this.setIsReady();\n this.loadChildren();\n }\n\n public override[Symbol.dispose](): void {\n this.transition(disposedState);\n super[Symbol.dispose]();\n }\n\n protected _loadChildren(resolve: (children: Tile[] | undefined) => void, _reject: (error: Error) => void): void {\n const children: Tile[] = [this.staticBranch];\n if (this._tileState.type === \"dynamic\")\n children.push(this._tileState.rootTile);\n\n resolve(children);\n }\n\n public get channel(): TileRequestChannel {\n throw new Error(\"Root iModel tile has no content\");\n }\n\n public async requestContent(_isCanceled: () => boolean): Promise<TileRequest.Response> {\n assert(false, \"Root iModel tile has no content\");\n return undefined;\n }\n\n public async readContent(_data: TileRequest.ResponseData, _system: RenderSystem, _isCanceled: () => boolean): Promise<TileContent> {\n throw new Error(\"Root iModel tile has no content\");\n }\n\n public draw(args: TileDrawArgs, tiles: Tile[], numStaticTiles: number): void {\n assert(numStaticTiles >= 0 && numStaticTiles <= tiles.length);\n\n // Draw the static tiles.\n for (let i = 0; i < numStaticTiles; i++)\n tiles[i].drawGraphics(args);\n\n if (\"dynamic\" !== this._tileState.type || numStaticTiles === tiles.length) {\n if (\"dynamic\" === this._tileState.type)\n args.addAppearanceProvider(this._tileState.rootTile.appearanceProvider);\n\n args.drawGraphics();\n return;\n }\n\n // We need to hide any modified elements in the static tiles. Pull their graphics into a separate branch.\n if (!args.graphics.isEmpty) {\n const staticBranch = new GraphicBranch();\n for (const staticGraphic of args.graphics.entries)\n staticBranch.add(staticGraphic);\n\n let appearanceProvider = this._tileState.rootTile.appearanceProvider;\n if (args.appearanceProvider)\n appearanceProvider = FeatureAppearanceProvider.chain(args.appearanceProvider, appearanceProvider);\n\n args.graphics.clear();\n args.graphics.add(args.context.createGraphicBranch(staticBranch, Transform.createIdentity(), { appearanceProvider }));\n }\n\n // Draw the dynamic tiles.\n for (let i = numStaticTiles; i < tiles.length; i++)\n tiles[i].drawGraphics(args);\n\n args.drawGraphics();\n }\n\n public prune(olderThan: BeTimePoint): void {\n this.staticBranch.pruneChildren(olderThan);\n if (\"dynamic\" === this._tileState.type)\n this._tileState.rootTile.pruneChildren(olderThan);\n }\n\n public transition(newState: RootTileState): void {\n assert(newState.type !== this._tileState.type);\n const resetRange = \"dynamic\" === this._tileState.type;\n\n assert(undefined !== this.children);\n if (\"dynamic\" === this._tileState.type) {\n assert(2 === this.children.length);\n this.children.pop();\n } else if (\"dynamic\" === newState.type) {\n assert(1 === this.children.length);\n this.children.push(newState.rootTile);\n }\n\n this._tileState[Symbol.dispose]();\n this._tileState = newState;\n\n if (resetRange)\n this.resetRange();\n }\n\n private resetRange(): void {\n this.staticBranch.range.clone(this.range);\n this.staticBranch.contentRange.clone(this._contentRange);\n\n if (this._staticTreeContentRange && this.tree.contentRange)\n this._staticTreeContentRange.clone(this.tree.contentRange);\n\n }\n\n public get tileScreenSize(): number {\n return this.staticBranch.iModelTree.tileScreenSize;\n }\n\n public updateDynamicRange(tile: Tile): void {\n this.resetRange();\n if (this._staticTreeContentRange && this.tree.contentRange && !tile.contentRange.isNull)\n this.tree.contentRange.extendRange(tile.contentRange);\n\n if (!tile.range.isNull)\n this.range.extendRange(tile.range);\n\n assert(undefined !== this._contentRange);\n if (!tile.contentRange.isNull)\n this._contentRange.extendRange(tile.contentRange);\n }\n}\n\n/** A TileTree whose contents are derived from geometry stored in a Model in an IModelDb.\n * @internal exported strictly for display-test-app until we remove CommonJS support.\n */\nexport class IModelTileTree extends TileTree {\n public readonly decoder: ImdlDecoder;\n private readonly _rootTile: RootTile;\n private readonly _options: IModelTileTreeOptions;\n private readonly _transformNodeRanges?: Map<number, Range3d>;\n public readonly contentIdQualifier?: string;\n public readonly geometryGuid?: string;\n public readonly maxTilesToSkip: number;\n public readonly maxInitialTilesToSkip: number;\n public readonly contentIdProvider: ContentIdProvider;\n public readonly stringifiedSectionClip?: string;\n public readonly tileScreenSize: number;\n public readonly iModelTileTreeId: IModelTileTreeId;\n /** Strictly for debugging/testing - forces tile selection to halt at the specified depth. */\n public debugMaxDepth?: number;\n /** A little hacky...we must not override selectTiles(), but draw() needs to distinguish between static and dynamic tiles.\n * So _selectTiles() puts the static tiles first in the Tile[] array, and records the number of static tiles selected, to be\n * used by draw().\n */\n private _numStaticTilesSelected = 0;\n\n public constructor(params: IModelTileTreeParams, treeId: IModelTileTreeId) {\n super(params);\n this.iModelTileTreeId = treeId;\n this.contentIdQualifier = params.contentIdQualifier;\n this.geometryGuid = params.geometryGuid;\n this.tileScreenSize = params.tileScreenSize;\n\n if (BatchType.Primary === treeId.type)\n this.stringifiedSectionClip = treeId.sectionCut;\n\n this.maxInitialTilesToSkip = params.maxInitialTilesToSkip ?? 0;\n this.maxTilesToSkip = IModelApp.tileAdmin.maximumLevelsToSkip;\n\n this._options = params.options;\n this._transformNodeRanges = params.transformNodeRanges;\n\n this.contentIdProvider = ContentIdProvider.create(params.options.allowInstancing, IModelApp.tileAdmin, params.formatVersion);\n\n params.rootTile.contentId = this.contentIdProvider.rootContentId;\n this._rootTile = new RootTile(iModelTileParamsFromJSON(params.rootTile, undefined), this);\n\n this.decoder = acquireImdlDecoder({\n type: this.batchType,\n omitEdges: false === this.edgeOptions,\n timeline: this.timeline,\n iModel: this.iModel,\n batchModelId: this.modelId,\n is3d: this.is3d,\n containsTransformNodes: this.containsTransformNodes,\n noWorker: !IModelApp.tileAdmin.decodeImdlInWorker,\n });\n }\n\n public override[Symbol.dispose](): void {\n this.decoder.release();\n super[Symbol.dispose]();\n }\n\n public get maxDepth() { return 32; }\n public get rootTile(): Tile { return this._rootTile; }\n /** Exposed chiefly for tests. */\n public get staticBranch(): IModelTile { return this._rootTile.staticBranch; }\n public get is3d() { return this._options.is3d; }\n public override get isContentUnbounded() { return false; }\n public get viewFlagOverrides() { return viewFlagOverrides; }\n\n public get batchType(): BatchType { return this._options.batchType; }\n public get edgeOptions(): EdgeOptions | false { return this._options.edges; }\n public get timeline(): RenderSchedule.ModelTimeline | undefined { return this._options.timeline; }\n\n public override get loadPriority(): TileLoadPriority {\n // If the model has been modified, we want to prioritize keeping its graphics up to date.\n return this.tileState === \"dynamic\" ? TileLoadPriority.Dynamic : super.loadPriority;\n }\n\n protected _selectTiles(args: TileDrawArgs): Tile[] {\n args.markUsed(this._rootTile);\n const tiles: Tile[] = [];\n this._rootTile.staticBranch.selectTiles(tiles, args, 0);\n this._numStaticTilesSelected = tiles.length;\n\n if (this._rootTile.tileState.type === \"dynamic\")\n this._rootTile.tileState.rootTile.selectTiles(tiles, args);\n\n return tiles;\n }\n\n public draw(args: TileDrawArgs): void {\n const tiles = this.selectTiles(args);\n this._rootTile.draw(args, tiles, this._numStaticTilesSelected);\n }\n\n public prune(): void {\n const olderThan = BeTimePoint.now().minus(this.expirationTime);\n this._rootTile.prune(olderThan);\n }\n\n /** Exposed strictly for tests. */\n public get tileState(): \"static\" | \"dynamic\" | \"interactive\" | \"disposed\" {\n return this._rootTile.tileState.type;\n }\n\n /** Exposed strictly for tests. */\n public get hiddenElements(): Id64Array {\n const state = this._rootTile.tileState;\n return \"dynamic\" === state.type ? state.rootTile.hiddenElements : [];\n }\n\n public getTransformNodeRange(nodeId: number): Range3d | undefined {\n return this._transformNodeRanges?.get(nodeId);\n }\n\n public get containsTransformNodes(): boolean {\n return undefined !== this._transformNodeRanges;\n }\n}\n"]}
|
|
@@ -8,6 +8,7 @@ import type { IModelConnection } from "../../IModelConnection";
|
|
|
8
8
|
import { GraphicDescription } from "../../common/render/GraphicDescriptionBuilder";
|
|
9
9
|
import { GraphicDescriptionContext } from "../../common/render/GraphicDescriptionContext";
|
|
10
10
|
import { GraphicTemplate } from "../../render/GraphicTemplate";
|
|
11
|
+
import { Tile } from "../../tile/internal";
|
|
11
12
|
/** Options provided to [[decodeImdlContent]].
|
|
12
13
|
*/
|
|
13
14
|
export interface ImdlDecodeOptions {
|
|
@@ -15,6 +16,7 @@ export interface ImdlDecodeOptions {
|
|
|
15
16
|
system: RenderSystem;
|
|
16
17
|
iModel: IModelConnection;
|
|
17
18
|
isCanceled?: () => boolean;
|
|
19
|
+
tile?: Tile;
|
|
18
20
|
}
|
|
19
21
|
export declare function decodeImdlGraphics(options: ImdlDecodeOptions): Promise<RenderGraphic | undefined>;
|
|
20
22
|
export declare function createGraphicTemplateFromDescription(descr: GraphicDescription, context: GraphicDescriptionContext, system: RenderSystem): GraphicTemplate;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ImdlGraphicsCreator.d.ts","sourceRoot":"","sources":["../../../../src/internal/tile/ImdlGraphicsCreator.ts"],"names":[],"mappings":"AAIA;;GAEG;AASH,OAAO,EAAE,SAAS,IAAI,IAAI,EAAE,MAAM,6BAA6B,CAAC;AAIhE,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,4BAA4B,CAAC;AAEhE,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,2BAA2B,CAAC;AAE9D,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,wBAAwB,CAAC;AAC/D,OAAO,EAAE,kBAAkB,EAAE,MAAM,+CAA+C,CAAC;AAEnF,OAAO,EAAE,yBAAyB,EAAE,MAAM,+CAA+C,CAAC;AAI1F,OAAO,EAAE,eAAe,EAAE,MAAM,8BAA8B,CAAC;
|
|
1
|
+
{"version":3,"file":"ImdlGraphicsCreator.d.ts","sourceRoot":"","sources":["../../../../src/internal/tile/ImdlGraphicsCreator.ts"],"names":[],"mappings":"AAIA;;GAEG;AASH,OAAO,EAAE,SAAS,IAAI,IAAI,EAAE,MAAM,6BAA6B,CAAC;AAIhE,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,4BAA4B,CAAC;AAEhE,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,2BAA2B,CAAC;AAE9D,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,wBAAwB,CAAC;AAC/D,OAAO,EAAE,kBAAkB,EAAE,MAAM,+CAA+C,CAAC;AAEnF,OAAO,EAAE,yBAAyB,EAAE,MAAM,+CAA+C,CAAC;AAI1F,OAAO,EAAE,eAAe,EAAE,MAAM,8BAA8B,CAAC;AAC/D,OAAO,EAAE,IAAI,EAAE,MAAM,qBAAqB,CAAC;AAE3C;GACG;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;IAC3B,IAAI,CAAC,EAAE,IAAI,CAAC;CACb;AAyWD,wBAAsB,kBAAkB,CAAC,OAAO,EAAE,iBAAiB,GAAG,OAAO,CAAC,aAAa,GAAG,SAAS,CAAC,CAuBvG;AAsDD,wBAAgB,oCAAoC,CAAC,KAAK,EAAE,kBAAkB,EAAE,OAAO,EAAE,yBAAyB,EAAE,MAAM,EAAE,YAAY,GAAG,eAAe,CA+CzJ;AAED,wBAAgB,4BAA4B,CAAC,KAAK,EAAE,kBAAkB,EAAE,OAAO,EAAE,yBAAyB,EAAE,MAAM,EAAE,YAAY,GAAG,aAAa,GAAG,SAAS,CAG3J"}
|
|
@@ -322,6 +322,7 @@ export async function decodeImdlGraphics(options) {
|
|
|
322
322
|
return undefined;
|
|
323
323
|
const patterns = new Map();
|
|
324
324
|
const graphicsOptions = { ...options, textures, patterns };
|
|
325
|
+
graphicsOptions.tile = options.tile;
|
|
325
326
|
for (const [name, primitives] of options.document.patterns)
|
|
326
327
|
patterns.set(name, createPatternGeometries(primitives, graphicsOptions));
|
|
327
328
|
const system = options.system;
|