@itwin/core-frontend 3.1.0-dev.28 → 3.1.0-dev.33
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/AccuSnap.js +2 -2
- package/lib/cjs/AccuSnap.js.map +1 -1
- package/lib/cjs/DisplayStyleState.d.ts +3 -3
- package/lib/cjs/DisplayStyleState.d.ts.map +1 -1
- package/lib/cjs/DisplayStyleState.js +32 -8
- package/lib/cjs/DisplayStyleState.js.map +1 -1
- package/lib/cjs/IModelApp.js +2 -2
- package/lib/cjs/IModelApp.js.map +1 -1
- package/lib/cjs/RealityDataSource.d.ts +9 -1
- package/lib/cjs/RealityDataSource.d.ts.map +1 -1
- package/lib/cjs/RealityDataSource.js +11 -1
- package/lib/cjs/RealityDataSource.js.map +1 -1
- package/lib/cjs/ViewState.js +1 -1
- package/lib/cjs/ViewState.js.map +1 -1
- package/lib/cjs/render/GraphicBranch.d.ts +2 -0
- package/lib/cjs/render/GraphicBranch.d.ts.map +1 -1
- package/lib/cjs/render/GraphicBranch.js.map +1 -1
- package/lib/cjs/render/RenderPlanarClassifier.d.ts +1 -1
- package/lib/cjs/render/RenderPlanarClassifier.d.ts.map +1 -1
- package/lib/cjs/render/RenderPlanarClassifier.js.map +1 -1
- package/lib/cjs/render/RenderSystem.d.ts +9 -5
- package/lib/cjs/render/RenderSystem.d.ts.map +1 -1
- package/lib/cjs/render/RenderSystem.js +5 -2
- package/lib/cjs/render/RenderSystem.js.map +1 -1
- package/lib/cjs/render/RenderTarget.d.ts +4 -4
- package/lib/cjs/render/RenderTarget.d.ts.map +1 -1
- package/lib/cjs/render/RenderTarget.js.map +1 -1
- package/lib/cjs/render/Scene.d.ts.map +1 -1
- package/lib/cjs/render/Scene.js.map +1 -1
- package/lib/cjs/render/primitives/mesh/RealityMeshPrimitive.d.ts +15 -2
- package/lib/cjs/render/primitives/mesh/RealityMeshPrimitive.d.ts.map +1 -1
- package/lib/cjs/render/primitives/mesh/RealityMeshPrimitive.js.map +1 -1
- package/lib/cjs/render/webgl/BackgroundMapDrape.js +1 -1
- package/lib/cjs/render/webgl/BackgroundMapDrape.js.map +1 -1
- package/lib/cjs/render/webgl/BranchState.d.ts +2 -0
- package/lib/cjs/render/webgl/BranchState.d.ts.map +1 -1
- package/lib/cjs/render/webgl/BranchState.js +5 -3
- package/lib/cjs/render/webgl/BranchState.js.map +1 -1
- package/lib/cjs/render/webgl/Graphic.d.ts +5 -3
- package/lib/cjs/render/webgl/Graphic.d.ts.map +1 -1
- package/lib/cjs/render/webgl/Graphic.js +7 -2
- package/lib/cjs/render/webgl/Graphic.js.map +1 -1
- package/lib/cjs/render/webgl/PlanarClassifier.d.ts +4 -1
- package/lib/cjs/render/webgl/PlanarClassifier.d.ts.map +1 -1
- package/lib/cjs/render/webgl/PlanarClassifier.js +22 -9
- package/lib/cjs/render/webgl/PlanarClassifier.js.map +1 -1
- package/lib/cjs/render/webgl/PlanarTextureProjection.d.ts +2 -2
- package/lib/cjs/render/webgl/PlanarTextureProjection.d.ts.map +1 -1
- package/lib/cjs/render/webgl/PlanarTextureProjection.js +5 -3
- package/lib/cjs/render/webgl/PlanarTextureProjection.js.map +1 -1
- package/lib/cjs/render/webgl/RealityMesh.d.ts +30 -11
- package/lib/cjs/render/webgl/RealityMesh.d.ts.map +1 -1
- package/lib/cjs/render/webgl/RealityMesh.js +154 -52
- package/lib/cjs/render/webgl/RealityMesh.js.map +1 -1
- package/lib/cjs/render/webgl/RenderCommands.d.ts.map +1 -1
- package/lib/cjs/render/webgl/RenderCommands.js +4 -0
- package/lib/cjs/render/webgl/RenderCommands.js.map +1 -1
- package/lib/cjs/render/webgl/System.d.ts +9 -9
- package/lib/cjs/render/webgl/System.d.ts.map +1 -1
- package/lib/cjs/render/webgl/System.js +5 -5
- package/lib/cjs/render/webgl/System.js.map +1 -1
- package/lib/cjs/render/webgl/Target.d.ts.map +1 -1
- package/lib/cjs/render/webgl/Target.js.map +1 -1
- package/lib/cjs/render/webgl/glsl/PlanarClassification.js +1 -1
- package/lib/cjs/render/webgl/glsl/PlanarClassification.js.map +1 -1
- package/lib/cjs/render/webgl/glsl/RealityMesh.d.ts.map +1 -1
- package/lib/cjs/render/webgl/glsl/RealityMesh.js +102 -27
- package/lib/cjs/render/webgl/glsl/RealityMesh.js.map +1 -1
- package/lib/cjs/tile/ClassifierTileTree.d.ts +4 -2
- package/lib/cjs/tile/ClassifierTileTree.d.ts.map +1 -1
- package/lib/cjs/tile/ClassifierTileTree.js +31 -16
- package/lib/cjs/tile/ClassifierTileTree.js.map +1 -1
- package/lib/cjs/tile/OPCFormatInterpreter.d.ts +1 -0
- package/lib/cjs/tile/OPCFormatInterpreter.d.ts.map +1 -1
- package/lib/cjs/tile/OPCFormatInterpreter.js +25 -14
- package/lib/cjs/tile/OPCFormatInterpreter.js.map +1 -1
- package/lib/cjs/tile/PrimaryTileTree.d.ts +18 -2
- package/lib/cjs/tile/PrimaryTileTree.d.ts.map +1 -1
- package/lib/cjs/tile/PrimaryTileTree.js +53 -2
- package/lib/cjs/tile/PrimaryTileTree.js.map +1 -1
- package/lib/cjs/tile/RealityModelTileTree.d.ts +0 -1
- package/lib/cjs/tile/RealityModelTileTree.d.ts.map +1 -1
- package/lib/cjs/tile/RealityModelTileTree.js +1 -1
- package/lib/cjs/tile/RealityModelTileTree.js.map +1 -1
- package/lib/cjs/tile/RealityTileDrawArgs.d.ts +4 -1
- package/lib/cjs/tile/RealityTileDrawArgs.d.ts.map +1 -1
- package/lib/cjs/tile/RealityTileDrawArgs.js +3 -1
- package/lib/cjs/tile/RealityTileDrawArgs.js.map +1 -1
- package/lib/cjs/tile/RealityTileTree.d.ts +1 -0
- package/lib/cjs/tile/RealityTileTree.d.ts.map +1 -1
- package/lib/cjs/tile/RealityTileTree.js +7 -3
- package/lib/cjs/tile/RealityTileTree.js.map +1 -1
- package/lib/cjs/tile/ThreeDTileFormatInterpreter.d.ts +1 -0
- package/lib/cjs/tile/ThreeDTileFormatInterpreter.d.ts.map +1 -1
- package/lib/cjs/tile/ThreeDTileFormatInterpreter.js +66 -47
- package/lib/cjs/tile/ThreeDTileFormatInterpreter.js.map +1 -1
- package/lib/cjs/tile/TileDrawArgs.d.ts +2 -0
- package/lib/cjs/tile/TileDrawArgs.d.ts.map +1 -1
- package/lib/cjs/tile/TileDrawArgs.js +5 -0
- package/lib/cjs/tile/TileDrawArgs.js.map +1 -1
- package/lib/cjs/tile/map/CesiumTerrainProvider.js +2 -2
- package/lib/cjs/tile/map/CesiumTerrainProvider.js.map +1 -1
- package/lib/cjs/tile/map/ImageryProviders/ArcGISMapLayerImageryProvider.d.ts +2 -2
- package/lib/cjs/tile/map/ImageryProviders/ArcGISMapLayerImageryProvider.d.ts.map +1 -1
- package/lib/cjs/tile/map/ImageryProviders/ArcGISMapLayerImageryProvider.js +1 -1
- package/lib/cjs/tile/map/ImageryProviders/ArcGISMapLayerImageryProvider.js.map +1 -1
- package/lib/cjs/tile/map/ImageryProviders/AzureMapsLayerImageryProvider.d.ts +2 -2
- package/lib/cjs/tile/map/ImageryProviders/AzureMapsLayerImageryProvider.d.ts.map +1 -1
- package/lib/cjs/tile/map/ImageryProviders/AzureMapsLayerImageryProvider.js.map +1 -1
- package/lib/cjs/tile/map/ImageryProviders/BingImageryProvider.d.ts +2 -2
- package/lib/cjs/tile/map/ImageryProviders/BingImageryProvider.d.ts.map +1 -1
- package/lib/cjs/tile/map/ImageryProviders/BingImageryProvider.js.map +1 -1
- package/lib/cjs/tile/map/ImageryProviders/MapBoxLayerImageryProvider.d.ts +2 -2
- package/lib/cjs/tile/map/ImageryProviders/MapBoxLayerImageryProvider.d.ts.map +1 -1
- package/lib/cjs/tile/map/ImageryProviders/MapBoxLayerImageryProvider.js.map +1 -1
- package/lib/cjs/tile/map/ImageryProviders/TileUrlImageryProvider.d.ts +2 -2
- package/lib/cjs/tile/map/ImageryProviders/TileUrlImageryProvider.d.ts.map +1 -1
- package/lib/cjs/tile/map/ImageryProviders/TileUrlImageryProvider.js.map +1 -1
- package/lib/cjs/tile/map/ImageryProviders/WmsMapLayerImageryProvider.d.ts +2 -2
- package/lib/cjs/tile/map/ImageryProviders/WmsMapLayerImageryProvider.d.ts.map +1 -1
- package/lib/cjs/tile/map/ImageryProviders/WmsMapLayerImageryProvider.js +1 -1
- package/lib/cjs/tile/map/ImageryProviders/WmsMapLayerImageryProvider.js.map +1 -1
- package/lib/cjs/tile/map/ImageryProviders/WmtsMapLayerImageryProvider.d.ts +2 -2
- package/lib/cjs/tile/map/ImageryProviders/WmtsMapLayerImageryProvider.d.ts.map +1 -1
- package/lib/cjs/tile/map/ImageryProviders/WmtsMapLayerImageryProvider.js.map +1 -1
- package/lib/cjs/tile/map/ImageryTileTree.d.ts +0 -2
- package/lib/cjs/tile/map/ImageryTileTree.d.ts.map +1 -1
- package/lib/cjs/tile/map/ImageryTileTree.js +1 -3
- package/lib/cjs/tile/map/ImageryTileTree.js.map +1 -1
- package/lib/cjs/tile/map/MapLayerFormatRegistry.d.ts +3 -3
- package/lib/cjs/tile/map/MapLayerFormatRegistry.d.ts.map +1 -1
- package/lib/cjs/tile/map/MapLayerFormatRegistry.js.map +1 -1
- package/lib/cjs/tile/map/MapLayerImageryFormats.d.ts +3 -3
- package/lib/cjs/tile/map/MapLayerImageryFormats.d.ts.map +1 -1
- package/lib/cjs/tile/map/MapLayerImageryFormats.js.map +1 -1
- package/lib/cjs/tile/map/MapLayerImageryProvider.d.ts +3 -3
- package/lib/cjs/tile/map/MapLayerImageryProvider.d.ts.map +1 -1
- package/lib/cjs/tile/map/MapLayerImageryProvider.js +1 -1
- package/lib/cjs/tile/map/MapLayerImageryProvider.js.map +1 -1
- package/lib/cjs/tile/map/MapLayerSources.d.ts +2 -2
- package/lib/cjs/tile/map/MapLayerSources.d.ts.map +1 -1
- package/lib/cjs/tile/map/MapLayerSources.js +6 -4
- package/lib/cjs/tile/map/MapLayerSources.js.map +1 -1
- package/lib/cjs/tile/map/MapLayerTileTreeReference.d.ts +10 -2
- package/lib/cjs/tile/map/MapLayerTileTreeReference.d.ts.map +1 -1
- package/lib/cjs/tile/map/MapLayerTileTreeReference.js +26 -3
- package/lib/cjs/tile/map/MapLayerTileTreeReference.js.map +1 -1
- package/lib/cjs/tile/map/MapTile.d.ts +5 -4
- package/lib/cjs/tile/map/MapTile.d.ts.map +1 -1
- package/lib/cjs/tile/map/MapTile.js +13 -5
- package/lib/cjs/tile/map/MapTile.js.map +1 -1
- package/lib/cjs/tile/map/MapTileTree.d.ts +12 -7
- package/lib/cjs/tile/map/MapTileTree.d.ts.map +1 -1
- package/lib/cjs/tile/map/MapTileTree.js +60 -48
- package/lib/cjs/tile/map/MapTileTree.js.map +1 -1
- package/lib/cjs/tile/map/MapTiledGraphicsProvider.d.ts.map +1 -1
- package/lib/cjs/tile/map/MapTiledGraphicsProvider.js +1 -1
- package/lib/cjs/tile/map/MapTiledGraphicsProvider.js.map +1 -1
- package/lib/cjs/tools/ViewTool.js +1 -1
- package/lib/cjs/tools/ViewTool.js.map +1 -1
- package/lib/esm/AccuSnap.js +2 -2
- package/lib/esm/AccuSnap.js.map +1 -1
- package/lib/esm/DisplayStyleState.d.ts +3 -3
- package/lib/esm/DisplayStyleState.d.ts.map +1 -1
- package/lib/esm/DisplayStyleState.js +34 -10
- package/lib/esm/DisplayStyleState.js.map +1 -1
- package/lib/esm/IModelApp.js +2 -2
- package/lib/esm/IModelApp.js.map +1 -1
- package/lib/esm/RealityDataSource.d.ts +9 -1
- package/lib/esm/RealityDataSource.d.ts.map +1 -1
- package/lib/esm/RealityDataSource.js +10 -1
- package/lib/esm/RealityDataSource.js.map +1 -1
- package/lib/esm/ViewState.js +1 -1
- package/lib/esm/ViewState.js.map +1 -1
- package/lib/esm/render/GraphicBranch.d.ts +2 -0
- package/lib/esm/render/GraphicBranch.d.ts.map +1 -1
- package/lib/esm/render/GraphicBranch.js.map +1 -1
- package/lib/esm/render/RenderPlanarClassifier.d.ts +1 -1
- package/lib/esm/render/RenderPlanarClassifier.d.ts.map +1 -1
- package/lib/esm/render/RenderPlanarClassifier.js.map +1 -1
- package/lib/esm/render/RenderSystem.d.ts +9 -5
- package/lib/esm/render/RenderSystem.d.ts.map +1 -1
- package/lib/esm/render/RenderSystem.js +5 -2
- package/lib/esm/render/RenderSystem.js.map +1 -1
- package/lib/esm/render/RenderTarget.d.ts +4 -4
- package/lib/esm/render/RenderTarget.d.ts.map +1 -1
- package/lib/esm/render/RenderTarget.js.map +1 -1
- package/lib/esm/render/Scene.d.ts.map +1 -1
- package/lib/esm/render/Scene.js.map +1 -1
- package/lib/esm/render/primitives/mesh/RealityMeshPrimitive.d.ts +15 -2
- package/lib/esm/render/primitives/mesh/RealityMeshPrimitive.d.ts.map +1 -1
- package/lib/esm/render/primitives/mesh/RealityMeshPrimitive.js.map +1 -1
- package/lib/esm/render/webgl/BackgroundMapDrape.js +1 -1
- package/lib/esm/render/webgl/BackgroundMapDrape.js.map +1 -1
- package/lib/esm/render/webgl/BranchState.d.ts +2 -0
- package/lib/esm/render/webgl/BranchState.d.ts.map +1 -1
- package/lib/esm/render/webgl/BranchState.js +5 -3
- package/lib/esm/render/webgl/BranchState.js.map +1 -1
- package/lib/esm/render/webgl/Graphic.d.ts +5 -3
- package/lib/esm/render/webgl/Graphic.d.ts.map +1 -1
- package/lib/esm/render/webgl/Graphic.js +7 -2
- package/lib/esm/render/webgl/Graphic.js.map +1 -1
- package/lib/esm/render/webgl/PlanarClassifier.d.ts +4 -1
- package/lib/esm/render/webgl/PlanarClassifier.d.ts.map +1 -1
- package/lib/esm/render/webgl/PlanarClassifier.js +22 -9
- package/lib/esm/render/webgl/PlanarClassifier.js.map +1 -1
- package/lib/esm/render/webgl/PlanarTextureProjection.d.ts +2 -2
- package/lib/esm/render/webgl/PlanarTextureProjection.d.ts.map +1 -1
- package/lib/esm/render/webgl/PlanarTextureProjection.js +5 -3
- package/lib/esm/render/webgl/PlanarTextureProjection.js.map +1 -1
- package/lib/esm/render/webgl/RealityMesh.d.ts +30 -11
- package/lib/esm/render/webgl/RealityMesh.d.ts.map +1 -1
- package/lib/esm/render/webgl/RealityMesh.js +154 -52
- package/lib/esm/render/webgl/RealityMesh.js.map +1 -1
- package/lib/esm/render/webgl/RenderCommands.d.ts.map +1 -1
- package/lib/esm/render/webgl/RenderCommands.js +4 -0
- package/lib/esm/render/webgl/RenderCommands.js.map +1 -1
- package/lib/esm/render/webgl/System.d.ts +9 -9
- package/lib/esm/render/webgl/System.d.ts.map +1 -1
- package/lib/esm/render/webgl/System.js +6 -6
- package/lib/esm/render/webgl/System.js.map +1 -1
- package/lib/esm/render/webgl/Target.d.ts.map +1 -1
- package/lib/esm/render/webgl/Target.js.map +1 -1
- package/lib/esm/render/webgl/glsl/PlanarClassification.js +1 -1
- package/lib/esm/render/webgl/glsl/PlanarClassification.js.map +1 -1
- package/lib/esm/render/webgl/glsl/RealityMesh.d.ts.map +1 -1
- package/lib/esm/render/webgl/glsl/RealityMesh.js +103 -28
- package/lib/esm/render/webgl/glsl/RealityMesh.js.map +1 -1
- package/lib/esm/tile/ClassifierTileTree.d.ts +4 -2
- package/lib/esm/tile/ClassifierTileTree.d.ts.map +1 -1
- package/lib/esm/tile/ClassifierTileTree.js +32 -17
- package/lib/esm/tile/ClassifierTileTree.js.map +1 -1
- package/lib/esm/tile/OPCFormatInterpreter.d.ts +1 -0
- package/lib/esm/tile/OPCFormatInterpreter.d.ts.map +1 -1
- package/lib/esm/tile/OPCFormatInterpreter.js +26 -15
- package/lib/esm/tile/OPCFormatInterpreter.js.map +1 -1
- package/lib/esm/tile/PrimaryTileTree.d.ts +18 -2
- package/lib/esm/tile/PrimaryTileTree.d.ts.map +1 -1
- package/lib/esm/tile/PrimaryTileTree.js +51 -2
- package/lib/esm/tile/PrimaryTileTree.js.map +1 -1
- package/lib/esm/tile/RealityModelTileTree.d.ts +0 -1
- package/lib/esm/tile/RealityModelTileTree.d.ts.map +1 -1
- package/lib/esm/tile/RealityModelTileTree.js +1 -1
- package/lib/esm/tile/RealityModelTileTree.js.map +1 -1
- package/lib/esm/tile/RealityTileDrawArgs.d.ts +4 -1
- package/lib/esm/tile/RealityTileDrawArgs.d.ts.map +1 -1
- package/lib/esm/tile/RealityTileDrawArgs.js +3 -1
- package/lib/esm/tile/RealityTileDrawArgs.js.map +1 -1
- package/lib/esm/tile/RealityTileTree.d.ts +1 -0
- package/lib/esm/tile/RealityTileTree.d.ts.map +1 -1
- package/lib/esm/tile/RealityTileTree.js +7 -3
- package/lib/esm/tile/RealityTileTree.js.map +1 -1
- package/lib/esm/tile/ThreeDTileFormatInterpreter.d.ts +1 -0
- package/lib/esm/tile/ThreeDTileFormatInterpreter.d.ts.map +1 -1
- package/lib/esm/tile/ThreeDTileFormatInterpreter.js +67 -48
- package/lib/esm/tile/ThreeDTileFormatInterpreter.js.map +1 -1
- package/lib/esm/tile/TileDrawArgs.d.ts +2 -0
- package/lib/esm/tile/TileDrawArgs.d.ts.map +1 -1
- package/lib/esm/tile/TileDrawArgs.js +5 -0
- package/lib/esm/tile/TileDrawArgs.js.map +1 -1
- package/lib/esm/tile/map/CesiumTerrainProvider.js +2 -2
- package/lib/esm/tile/map/CesiumTerrainProvider.js.map +1 -1
- package/lib/esm/tile/map/ImageryProviders/ArcGISMapLayerImageryProvider.d.ts +2 -2
- package/lib/esm/tile/map/ImageryProviders/ArcGISMapLayerImageryProvider.d.ts.map +1 -1
- package/lib/esm/tile/map/ImageryProviders/ArcGISMapLayerImageryProvider.js +1 -1
- package/lib/esm/tile/map/ImageryProviders/ArcGISMapLayerImageryProvider.js.map +1 -1
- package/lib/esm/tile/map/ImageryProviders/AzureMapsLayerImageryProvider.d.ts +2 -2
- package/lib/esm/tile/map/ImageryProviders/AzureMapsLayerImageryProvider.d.ts.map +1 -1
- package/lib/esm/tile/map/ImageryProviders/AzureMapsLayerImageryProvider.js.map +1 -1
- package/lib/esm/tile/map/ImageryProviders/BingImageryProvider.d.ts +2 -2
- package/lib/esm/tile/map/ImageryProviders/BingImageryProvider.d.ts.map +1 -1
- package/lib/esm/tile/map/ImageryProviders/BingImageryProvider.js.map +1 -1
- package/lib/esm/tile/map/ImageryProviders/MapBoxLayerImageryProvider.d.ts +2 -2
- package/lib/esm/tile/map/ImageryProviders/MapBoxLayerImageryProvider.d.ts.map +1 -1
- package/lib/esm/tile/map/ImageryProviders/MapBoxLayerImageryProvider.js.map +1 -1
- package/lib/esm/tile/map/ImageryProviders/TileUrlImageryProvider.d.ts +2 -2
- package/lib/esm/tile/map/ImageryProviders/TileUrlImageryProvider.d.ts.map +1 -1
- package/lib/esm/tile/map/ImageryProviders/TileUrlImageryProvider.js.map +1 -1
- package/lib/esm/tile/map/ImageryProviders/WmsMapLayerImageryProvider.d.ts +2 -2
- package/lib/esm/tile/map/ImageryProviders/WmsMapLayerImageryProvider.d.ts.map +1 -1
- package/lib/esm/tile/map/ImageryProviders/WmsMapLayerImageryProvider.js +1 -1
- package/lib/esm/tile/map/ImageryProviders/WmsMapLayerImageryProvider.js.map +1 -1
- package/lib/esm/tile/map/ImageryProviders/WmtsMapLayerImageryProvider.d.ts +2 -2
- package/lib/esm/tile/map/ImageryProviders/WmtsMapLayerImageryProvider.d.ts.map +1 -1
- package/lib/esm/tile/map/ImageryProviders/WmtsMapLayerImageryProvider.js.map +1 -1
- package/lib/esm/tile/map/ImageryTileTree.d.ts +0 -2
- package/lib/esm/tile/map/ImageryTileTree.d.ts.map +1 -1
- package/lib/esm/tile/map/ImageryTileTree.js +1 -3
- package/lib/esm/tile/map/ImageryTileTree.js.map +1 -1
- package/lib/esm/tile/map/MapLayerFormatRegistry.d.ts +3 -3
- package/lib/esm/tile/map/MapLayerFormatRegistry.d.ts.map +1 -1
- package/lib/esm/tile/map/MapLayerFormatRegistry.js.map +1 -1
- package/lib/esm/tile/map/MapLayerImageryFormats.d.ts +3 -3
- package/lib/esm/tile/map/MapLayerImageryFormats.d.ts.map +1 -1
- package/lib/esm/tile/map/MapLayerImageryFormats.js.map +1 -1
- package/lib/esm/tile/map/MapLayerImageryProvider.d.ts +3 -3
- package/lib/esm/tile/map/MapLayerImageryProvider.d.ts.map +1 -1
- package/lib/esm/tile/map/MapLayerImageryProvider.js +1 -1
- package/lib/esm/tile/map/MapLayerImageryProvider.js.map +1 -1
- package/lib/esm/tile/map/MapLayerSources.d.ts +2 -2
- package/lib/esm/tile/map/MapLayerSources.d.ts.map +1 -1
- package/lib/esm/tile/map/MapLayerSources.js +6 -4
- package/lib/esm/tile/map/MapLayerSources.js.map +1 -1
- package/lib/esm/tile/map/MapLayerTileTreeReference.d.ts +10 -2
- package/lib/esm/tile/map/MapLayerTileTreeReference.d.ts.map +1 -1
- package/lib/esm/tile/map/MapLayerTileTreeReference.js +25 -3
- package/lib/esm/tile/map/MapLayerTileTreeReference.js.map +1 -1
- package/lib/esm/tile/map/MapTile.d.ts +5 -4
- package/lib/esm/tile/map/MapTile.d.ts.map +1 -1
- package/lib/esm/tile/map/MapTile.js +13 -5
- package/lib/esm/tile/map/MapTile.js.map +1 -1
- package/lib/esm/tile/map/MapTileTree.d.ts +12 -7
- package/lib/esm/tile/map/MapTileTree.d.ts.map +1 -1
- package/lib/esm/tile/map/MapTileTree.js +61 -49
- package/lib/esm/tile/map/MapTileTree.js.map +1 -1
- package/lib/esm/tile/map/MapTiledGraphicsProvider.d.ts.map +1 -1
- package/lib/esm/tile/map/MapTiledGraphicsProvider.js +2 -2
- package/lib/esm/tile/map/MapTiledGraphicsProvider.js.map +1 -1
- package/lib/esm/tools/ViewTool.js +1 -1
- package/lib/esm/tools/ViewTool.js.map +1 -1
- package/package.json +20 -20
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ClassifierTileTree.js","sourceRoot":"","sources":["../../../src/tile/ClassifierTileTree.ts"],"names":[],"mappings":"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","sourcesContent":["/*---------------------------------------------------------------------------------------------\r\n* Copyright (c) Bentley Systems, Incorporated. All rights reserved.\r\n* See LICENSE.md in the project root for license terms and full copyright notice.\r\n*--------------------------------------------------------------------------------------------*/\r\n/** @packageDocumentation\r\n * @module Tiles\r\n */\r\nimport { compareStrings, compareStringsOrUndefined, Id64, Id64String } from \"@itwin/core-bentley\";\r\nimport { BatchType, ClassifierTileTreeId, compareIModelTileTreeIds, iModelTileTreeIdToString, SpatialClassifier, SpatialClassifiers } from \"@itwin/core-common\";\r\nimport { DisplayStyleState } from \"../DisplayStyleState\";\r\nimport { IModelApp } from \"../IModelApp\";\r\nimport { IModelConnection } from \"../IModelConnection\";\r\nimport { GeometricModelState } from \"../ModelState\";\r\nimport { SceneContext } from \"../ViewContext\";\r\nimport { ViewState } from \"../ViewState\";\r\nimport {\r\n DisclosedTileTreeSet, IModelTileTree, iModelTileTreeParamsFromJSON, TileTree, TileTreeLoadStatus, TileTreeOwner, TileTreeReference, TileTreeSupplier,\r\n} from \"./internal\";\r\n\r\ninterface ClassifierTreeId extends ClassifierTileTreeId {\r\n modelId: Id64String;\r\n}\r\n\r\nfunction compareIds(lhs: ClassifierTreeId, rhs: ClassifierTreeId): number {\r\n let cmp = compareStrings(lhs.modelId, rhs.modelId);\r\n if (0 === cmp)\r\n cmp = compareStringsOrUndefined(lhs.animationId, rhs.animationId);\r\n\r\n return 0 === cmp ? compareIModelTileTreeIds(lhs, rhs) : cmp;\r\n}\r\n\r\nclass ClassifierTreeSupplier implements TileTreeSupplier {\r\n private readonly _nonexistentTreeOwner = {\r\n tileTree: undefined,\r\n loadStatus: TileTreeLoadStatus.NotFound,\r\n load: () => undefined,\r\n dispose: () => undefined,\r\n loadTree: async () => undefined,\r\n iModel: undefined as unknown as IModelConnection,\r\n };\r\n\r\n public compareTileTreeIds(lhs: ClassifierTreeId, rhs: ClassifierTreeId): number {\r\n return compareIds(lhs, rhs);\r\n }\r\n\r\n public async createTileTree(id: ClassifierTreeId, iModel: IModelConnection): Promise<TileTree | undefined> {\r\n await iModel.models.load(id.modelId);\r\n const model = iModel.models.getLoaded(id.modelId);\r\n if (undefined === model || !(model instanceof GeometricModelState))\r\n return undefined;\r\n\r\n const idStr = iModelTileTreeIdToString(id.modelId, id, IModelApp.tileAdmin);\r\n const props = await IModelApp.tileAdmin.requestTileTreeProps(iModel, idStr);\r\n\r\n const options = {\r\n edgesRequired: false,\r\n allowInstancing: false,\r\n is3d: true,\r\n batchType: id.type,\r\n };\r\n\r\n const params = iModelTileTreeParamsFromJSON(props, iModel, id.modelId, options);\r\n return new IModelTileTree(params, id);\r\n }\r\n\r\n public getOwner(id: ClassifierTreeId, iModel: IModelConnection): TileTreeOwner {\r\n return Id64.isValid(id.modelId) ? iModel.tiles.getTileTreeOwner(id, this) : this._nonexistentTreeOwner;\r\n }\r\n\r\n public addModelsAnimatedByScript(modelIds: Set<Id64String>, scriptSourceId: Id64String, trees: Iterable<{ id: ClassifierTreeId, owner: TileTreeOwner }>): void {\r\n for (const tree of trees)\r\n if (tree.id.animationId === scriptSourceId)\r\n modelIds.add(tree.id.modelId);\r\n }\r\n\r\n public addSpatialModels(modelIds: Set<Id64String>, trees: Iterable<{ id: ClassifierTreeId, owner: TileTreeOwner }>): void {\r\n for (const tree of trees)\r\n modelIds.add(tree.id.modelId);\r\n }\r\n}\r\n\r\nconst classifierTreeSupplier = new ClassifierTreeSupplier();\r\n\r\n/** @internal */\r\nexport abstract class SpatialClassifierTileTreeReference extends TileTreeReference {\r\n public abstract get classifiers(): SpatialClassifiers;\r\n public abstract get isPlanar(): boolean;\r\n public abstract get activeClassifier(): SpatialClassifier | undefined;\r\n}\r\n\r\n/** @internal */\r\nclass ClassifierTreeReference extends SpatialClassifierTileTreeReference {\r\n private _id: ClassifierTreeId;\r\n private readonly _classifiers: SpatialClassifiers;\r\n private readonly _source: ViewState | DisplayStyleState;\r\n private readonly _iModel: IModelConnection;\r\n private readonly _classifiedTree: TileTreeReference;\r\n private _owner: TileTreeOwner;\r\n\r\n public constructor(classifiers: SpatialClassifiers, classifiedTree: TileTreeReference, iModel: IModelConnection, source: ViewState | DisplayStyleState) {\r\n super();\r\n this._id = this.createId(classifiers, source);\r\n this._source = source;\r\n this._iModel = iModel;\r\n this._classifiers = classifiers;\r\n this._classifiedTree = classifiedTree;\r\n this._owner = classifierTreeSupplier.getOwner(this._id, iModel);\r\n }\r\n\r\n public get classifiers(): SpatialClassifiers { return this._classifiers; }\r\n public get activeClassifier(): SpatialClassifier | undefined { return this.classifiers.active; }\r\n\r\n public override get castsShadows() {\r\n return false;\r\n }\r\n\r\n public get treeOwner(): TileTreeOwner {\r\n const newId = this.createId(this._classifiers, this._source);\r\n if (0 !== compareIds(this._id, newId)) {\r\n this._id = newId;\r\n this._owner = classifierTreeSupplier.getOwner(this._id, this._iModel);\r\n }\r\n\r\n return this._owner;\r\n }\r\n\r\n public override discloseTileTrees(trees: DisclosedTileTreeSet): void {\r\n // NB: We do NOT call super because we don't use our tree if no classifier is active.\r\n trees.disclose(this._classifiedTree);\r\n\r\n const classifier = this.activeClassifier;\r\n const classifierTree = undefined !== classifier ? this.treeOwner.tileTree : undefined;\r\n if (undefined !== classifierTree)\r\n trees.add(classifierTree);\r\n }\r\n public get isPlanar() { return BatchType.PlanarClassifier === this._id.type; }\r\n\r\n // Add volume classifiers to scene (planar classifiers are added seperately.)\r\n public override addToScene(context: SceneContext): void {\r\n if (this.isPlanar)\r\n return;\r\n\r\n const classifiedTree = this._classifiedTree.treeOwner.load();\r\n if (undefined === classifiedTree)\r\n return;\r\n\r\n const classifier = this._classifiers.active;\r\n if (undefined === classifier)\r\n return;\r\n\r\n const classifierTree = this.treeOwner.load();\r\n if (undefined === classifierTree)\r\n return;\r\n\r\n context.setVolumeClassifier(classifier, classifiedTree.modelId);\r\n super.addToScene(context);\r\n }\r\n\r\n private createId(classifiers: SpatialClassifiers, source: ViewState | DisplayStyleState): ClassifierTreeId {\r\n const active = classifiers.active;\r\n if (undefined === active)\r\n return { modelId: Id64.invalid, type: BatchType.PlanarClassifier, expansion: 0, animationId: undefined };\r\n\r\n const type = active.flags.isVolumeClassifier ? BatchType.VolumeClassifier : BatchType.PlanarClassifier;\r\n const script = source.scheduleState;\r\n const animationId = (undefined !== script) ? script.getModelAnimationId(active.modelId) : undefined;\r\n return {\r\n modelId: active.modelId,\r\n type,\r\n expansion: active.expand,\r\n animationId,\r\n };\r\n }\r\n}\r\n\r\n/** @internal */\r\nexport function createClassifierTileTreeReference(classifiers: SpatialClassifiers, classifiedTree: TileTreeReference, iModel: IModelConnection, source: ViewState | DisplayStyleState): SpatialClassifierTileTreeReference {\r\n return new ClassifierTreeReference(classifiers, classifiedTree, iModel, source);\r\n}\r\n"]}
|
|
1
|
+
{"version":3,"file":"ClassifierTileTree.js","sourceRoot":"","sources":["../../../src/tile/ClassifierTileTree.ts"],"names":[],"mappings":"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","sourcesContent":["/*---------------------------------------------------------------------------------------------\r\n* Copyright (c) Bentley Systems, Incorporated. All rights reserved.\r\n* See LICENSE.md in the project root for license terms and full copyright notice.\r\n*--------------------------------------------------------------------------------------------*/\r\n/** @packageDocumentation\r\n * @module Tiles\r\n */\r\nimport { compareStrings, compareStringsOrUndefined, Id64, Id64String } from \"@itwin/core-bentley\";\r\nimport { BatchType, ClassifierTileTreeId, compareIModelTileTreeIds, iModelTileTreeIdToString, RenderMode, SpatialClassifier, SpatialClassifiers, ViewFlagsProperties } from \"@itwin/core-common\";\r\nimport { DisplayStyleState } from \"../DisplayStyleState\";\r\nimport { IModelApp } from \"../IModelApp\";\r\nimport { IModelConnection } from \"../IModelConnection\";\r\nimport { GeometricModelState } from \"../ModelState\";\r\nimport { SceneContext } from \"../ViewContext\";\r\nimport { ViewState } from \"../ViewState\";\r\nimport {\r\n DisclosedTileTreeSet, IModelTileTree, iModelTileTreeParamsFromJSON, TileTree, TileTreeLoadStatus, TileTreeOwner, TileTreeReference, TileTreeSupplier,\r\n} from \"./internal\";\r\n\r\ninterface ClassifierTreeId extends ClassifierTileTreeId {\r\n modelId: Id64String;\r\n}\r\n\r\nfunction compareIds(lhs: ClassifierTreeId, rhs: ClassifierTreeId): number {\r\n let cmp = compareStrings(lhs.modelId, rhs.modelId);\r\n if (0 === cmp)\r\n cmp = compareStringsOrUndefined(lhs.animationId, rhs.animationId);\r\n\r\n return 0 === cmp ? compareIModelTileTreeIds(lhs, rhs) : cmp;\r\n}\r\n\r\nclass ClassifierTreeSupplier implements TileTreeSupplier {\r\n private readonly _nonexistentTreeOwner = {\r\n tileTree: undefined,\r\n loadStatus: TileTreeLoadStatus.NotFound,\r\n load: () => undefined,\r\n dispose: () => undefined,\r\n loadTree: async () => undefined,\r\n iModel: undefined as unknown as IModelConnection,\r\n };\r\n\r\n public compareTileTreeIds(lhs: ClassifierTreeId, rhs: ClassifierTreeId): number {\r\n return compareIds(lhs, rhs);\r\n }\r\n\r\n public async createTileTree(id: ClassifierTreeId, iModel: IModelConnection): Promise<TileTree | undefined> {\r\n await iModel.models.load(id.modelId);\r\n const model = iModel.models.getLoaded(id.modelId);\r\n if (undefined === model || !(model instanceof GeometricModelState))\r\n return undefined;\r\n\r\n const idStr = iModelTileTreeIdToString(id.modelId, id, IModelApp.tileAdmin);\r\n const props = await IModelApp.tileAdmin.requestTileTreeProps(iModel, idStr);\r\n\r\n const options = {\r\n edgesRequired: false,\r\n allowInstancing: false,\r\n is3d: true,\r\n batchType: id.type,\r\n };\r\n\r\n const params = iModelTileTreeParamsFromJSON(props, iModel, id.modelId, options);\r\n return new IModelTileTree(params, id);\r\n }\r\n\r\n public getOwner(id: ClassifierTreeId, iModel: IModelConnection): TileTreeOwner {\r\n return Id64.isValid(id.modelId) ? iModel.tiles.getTileTreeOwner(id, this) : this._nonexistentTreeOwner;\r\n }\r\n\r\n public addModelsAnimatedByScript(modelIds: Set<Id64String>, scriptSourceId: Id64String, trees: Iterable<{ id: ClassifierTreeId, owner: TileTreeOwner }>): void {\r\n for (const tree of trees)\r\n if (tree.id.animationId === scriptSourceId)\r\n modelIds.add(tree.id.modelId);\r\n }\r\n\r\n public addSpatialModels(modelIds: Set<Id64String>, trees: Iterable<{ id: ClassifierTreeId, owner: TileTreeOwner }>): void {\r\n for (const tree of trees)\r\n modelIds.add(tree.id.modelId);\r\n }\r\n}\r\n\r\nconst classifierTreeSupplier = new ClassifierTreeSupplier();\r\n\r\n/** @internal */\r\nexport abstract class SpatialClassifierTileTreeReference extends TileTreeReference {\r\n public abstract get isPlanar(): boolean;\r\n public abstract get activeClassifier(): SpatialClassifier | undefined;\r\n public get isOpaque() { return false; } /** When referenced as a map layer reference, BIM models are never opaque. */\r\n public abstract get viewFlags(): Partial<ViewFlagsProperties>;\r\n public get transparency(): number | undefined { return undefined; }\r\n}\r\n\r\n/** @internal */\r\nclass ClassifierTreeReference extends SpatialClassifierTileTreeReference {\r\n private _id: ClassifierTreeId;\r\n private readonly _classifiers: SpatialClassifiers;\r\n private readonly _source: ViewState | DisplayStyleState;\r\n private readonly _iModel: IModelConnection;\r\n private readonly _classifiedTree: TileTreeReference;\r\n private _owner: TileTreeOwner;\r\n\r\n public constructor(classifiers: SpatialClassifiers, classifiedTree: TileTreeReference, iModel: IModelConnection, source: ViewState | DisplayStyleState) {\r\n super();\r\n this._id = createClassifierId(classifiers.active, source);\r\n this._source = source;\r\n this._iModel = iModel;\r\n this._classifiers = classifiers;\r\n this._classifiedTree = classifiedTree;\r\n this._owner = classifierTreeSupplier.getOwner(this._id, iModel);\r\n }\r\n\r\n public get classifiers(): SpatialClassifiers { return this._classifiers; }\r\n public get activeClassifier(): SpatialClassifier | undefined { return this.classifiers.active; }\r\n\r\n public override get castsShadows() {\r\n return false;\r\n }\r\n\r\n public get treeOwner(): TileTreeOwner {\r\n const newId = createClassifierId(this._classifiers.active, this._source);\r\n if (0 !== compareIds(this._id, newId)) {\r\n this._id = newId;\r\n this._owner = classifierTreeSupplier.getOwner(this._id, this._iModel);\r\n }\r\n\r\n return this._owner;\r\n }\r\n\r\n public override discloseTileTrees(trees: DisclosedTileTreeSet): void {\r\n // NB: We do NOT call super because we don't use our tree if no classifier is active.\r\n trees.disclose(this._classifiedTree);\r\n\r\n const classifier = this.activeClassifier;\r\n const classifierTree = undefined !== classifier ? this.treeOwner.tileTree : undefined;\r\n if (undefined !== classifierTree)\r\n trees.add(classifierTree);\r\n }\r\n public get isPlanar() { return BatchType.PlanarClassifier === this._id.type; }\r\n\r\n public get viewFlags(): Partial<ViewFlagsProperties> {\r\n return {\r\n renderMode: RenderMode.SmoothShade,\r\n transparency: true, // Igored for point clouds as they don't support transparency.\r\n textures: false,\r\n lighting: false,\r\n shadows: false,\r\n monochrome: false,\r\n materials: false,\r\n ambientOcclusion: false,\r\n visibleEdges: false,\r\n hiddenEdges: false,\r\n };\r\n }\r\n\r\n // Add volume classifiers to scene (planar classifiers are added seperately.)\r\n public override addToScene(context: SceneContext): void {\r\n if (this.isPlanar)\r\n return;\r\n\r\n const classifiedTree = this._classifiedTree.treeOwner.load();\r\n if (undefined === classifiedTree)\r\n return;\r\n\r\n const classifier = this._classifiers.active;\r\n if (undefined === classifier)\r\n return;\r\n\r\n const classifierTree = this.treeOwner.load();\r\n if (undefined === classifierTree)\r\n return;\r\n\r\n context.setVolumeClassifier(classifier, classifiedTree.modelId);\r\n super.addToScene(context);\r\n }\r\n\r\n}\r\n\r\n/** @internal */\r\nexport function createClassifierTileTreeReference(classifiers: SpatialClassifiers, classifiedTree: TileTreeReference, iModel: IModelConnection, source: ViewState | DisplayStyleState): SpatialClassifierTileTreeReference {\r\n return new ClassifierTreeReference(classifiers, classifiedTree, iModel, source);\r\n}\r\n\r\nfunction createClassifierId(classifier: SpatialClassifier | undefined, source: ViewState | DisplayStyleState | undefined): ClassifierTreeId {\r\n if (undefined === classifier)\r\n return { modelId: Id64.invalid, type: BatchType.PlanarClassifier, expansion: 0, animationId: undefined };\r\n\r\n const type = classifier.flags.isVolumeClassifier ? BatchType.VolumeClassifier : BatchType.PlanarClassifier;\r\n const script = source?.scheduleState;\r\n const animationId = (undefined !== script) ? script.getModelAnimationId(classifier.modelId) : undefined;\r\n return {\r\n modelId: classifier.modelId,\r\n type,\r\n expansion: classifier.expand,\r\n animationId,\r\n };\r\n}\r\n"]}
|
|
@@ -14,6 +14,7 @@ export declare class OPCFormatInterpreter {
|
|
|
14
14
|
/** Gets reality data spatial location and extents
|
|
15
15
|
* @param fileReader a file reader instance obtains from call to getFileReaderFromBlobFileURL
|
|
16
16
|
* @returns spatial location and volume of interest, in meters, centered around `spatial location`
|
|
17
|
+
* @throws [[RealityDataError]] if source is invalid or cannot be read
|
|
17
18
|
* @internal
|
|
18
19
|
*/
|
|
19
20
|
static getSpatialLocationAndExtents(fileReader: PointCloudReader): Promise<SpatialLocationAndExtents>;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"OPCFormatInterpreter.d.ts","sourceRoot":"","sources":["../../../src/tile/OPCFormatInterpreter.ts"],"names":[],"mappings":"AAOA,OAAO,EAAyF,gBAAgB,EAAS,MAAM,qBAAqB,CAAC;AAIrJ,OAAO,
|
|
1
|
+
{"version":3,"file":"OPCFormatInterpreter.d.ts","sourceRoot":"","sources":["../../../src/tile/OPCFormatInterpreter.ts"],"names":[],"mappings":"AAOA,OAAO,EAAyF,gBAAgB,EAAS,MAAM,qBAAqB,CAAC;AAIrJ,OAAO,EAAoB,yBAAyB,EAAE,MAAM,sBAAsB,CAAC;AAInF;;;GAGG;AACH,qBAAa,oBAAoB;IAC/B;;;;OAIG;WACiB,4BAA4B,CAAC,WAAW,EAAE,MAAM,GAAG,OAAO,CAAC,gBAAgB,CAAC;IAiBhG;;;;;OAKG;WACiB,4BAA4B,CAAC,UAAU,EAAE,gBAAgB,GAAG,OAAO,CAAC,yBAAyB,CAAC;CA2CnH"}
|
|
@@ -7,7 +7,8 @@ import { Range3d } from "@itwin/core-geometry";
|
|
|
7
7
|
import { CRSManager, Downloader, OnlineEngine, OPCReader, OrbitGtBounds, PageCachedFile, UrlFS } from "@itwin/core-orbitgt";
|
|
8
8
|
import { FrontendLoggerCategory } from "../FrontendLoggerCategory";
|
|
9
9
|
import { DownloaderNode } from "@itwin/core-orbitgt/lib/cjs/system/runtime/DownloaderNode";
|
|
10
|
-
import { Logger } from "@itwin/core-bentley";
|
|
10
|
+
import { BentleyError, Logger, RealityDataStatus } from "@itwin/core-bentley";
|
|
11
|
+
import { RealityDataError } from "../RealityDataSource";
|
|
11
12
|
const loggerCategory = FrontendLoggerCategory.RealityData;
|
|
12
13
|
/**
|
|
13
14
|
* This class provide methods used to interpret Orbit Point Cloud (OPC) format
|
|
@@ -37,6 +38,7 @@ export class OPCFormatInterpreter {
|
|
|
37
38
|
/** Gets reality data spatial location and extents
|
|
38
39
|
* @param fileReader a file reader instance obtains from call to getFileReaderFromBlobFileURL
|
|
39
40
|
* @returns spatial location and volume of interest, in meters, centered around `spatial location`
|
|
41
|
+
* @throws [[RealityDataError]] if source is invalid or cannot be read
|
|
40
42
|
* @internal
|
|
41
43
|
*/
|
|
42
44
|
static async getSpatialLocationAndExtents(fileReader) {
|
|
@@ -48,20 +50,29 @@ export class OPCFormatInterpreter {
|
|
|
48
50
|
isGeolocated = false;
|
|
49
51
|
const fileCrs = fileReader.getFileCRS();
|
|
50
52
|
if (fileCrs) {
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
53
|
+
try {
|
|
54
|
+
await CRSManager.ENGINE.prepareForArea(fileCrs, bounds);
|
|
55
|
+
const wgs84ECEFCrs = "4978";
|
|
56
|
+
await CRSManager.ENGINE.prepareForArea(wgs84ECEFCrs, new OrbitGtBounds());
|
|
57
|
+
const ecefBounds = CRSManager.transformBounds(bounds, fileCrs, wgs84ECEFCrs);
|
|
58
|
+
const ecefRange = Range3d.createXYZXYZ(ecefBounds.getMinX(), ecefBounds.getMinY(), ecefBounds.getMinZ(), ecefBounds.getMaxX(), ecefBounds.getMaxY(), ecefBounds.getMaxZ());
|
|
59
|
+
const ecefCenter = ecefRange.localXYZToWorld(.5, .5, .5);
|
|
60
|
+
const cartoCenter = Cartographic.fromEcef(ecefCenter);
|
|
61
|
+
cartoCenter.height = 0;
|
|
62
|
+
const ecefLocation = EcefLocation.createFromCartographicOrigin(cartoCenter);
|
|
63
|
+
location = ecefLocation;
|
|
64
|
+
// this.iModelDb.setEcefLocation(ecefLocation);
|
|
65
|
+
const ecefToWorld = ecefLocation.getTransform().inverse();
|
|
66
|
+
worldRange = ecefToWorld.multiplyRange(ecefRange);
|
|
67
|
+
isGeolocated = true;
|
|
68
|
+
}
|
|
69
|
+
catch (e) {
|
|
70
|
+
Logger.logWarning(loggerCategory, `Error getSpatialLocationAndExtents - cannot interpret point cloud`);
|
|
71
|
+
const errorProps = BentleyError.getErrorProps(e);
|
|
72
|
+
const getMetaData = () => { return { errorProps }; };
|
|
73
|
+
const error = new RealityDataError(RealityDataStatus.InvalidData, "Invalid or unknown data", getMetaData);
|
|
74
|
+
throw error;
|
|
75
|
+
}
|
|
65
76
|
}
|
|
66
77
|
else {
|
|
67
78
|
// NoGCS case
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"OPCFormatInterpreter.js","sourceRoot":"","sources":["../../../src/tile/OPCFormatInterpreter.ts"],"names":[],"mappings":"AAAA;;;+FAG+F;AAE/F,OAAO,EAAE,YAAY,EAAE,YAAY,EAAE,MAAM,oBAAoB,CAAC;AAChE,OAAO,EAAE,OAAO,EAAE,MAAM,sBAAsB,CAAC;AAC/C,OAAO,EAAS,UAAU,EAAE,UAAU,EAAE,YAAY,EAAE,SAAS,EAAE,aAAa,EAAE,cAAc,EAAoB,KAAK,EAAE,MAAM,qBAAqB,CAAC;AACrJ,OAAO,EAAE,sBAAsB,EAAE,MAAM,2BAA2B,CAAC;AACnE,OAAO,EAAE,cAAc,EAAE,MAAM,2DAA2D,CAAC;AAC3F,OAAO,EAAE,MAAM,EAAE,MAAM,qBAAqB,CAAC;
|
|
1
|
+
{"version":3,"file":"OPCFormatInterpreter.js","sourceRoot":"","sources":["../../../src/tile/OPCFormatInterpreter.ts"],"names":[],"mappings":"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","sourcesContent":["/*---------------------------------------------------------------------------------------------\r\n* Copyright (c) Bentley Systems, Incorporated. All rights reserved.\r\n* See LICENSE.md in the project root for license terms and full copyright notice.\r\n*--------------------------------------------------------------------------------------------*/\r\n\r\nimport { Cartographic, EcefLocation } from \"@itwin/core-common\";\r\nimport { Range3d } from \"@itwin/core-geometry\";\r\nimport { ALong, CRSManager, Downloader, OnlineEngine, OPCReader, OrbitGtBounds, PageCachedFile, PointCloudReader, UrlFS } from \"@itwin/core-orbitgt\";\r\nimport { FrontendLoggerCategory } from \"../FrontendLoggerCategory\";\r\nimport { DownloaderNode } from \"@itwin/core-orbitgt/lib/cjs/system/runtime/DownloaderNode\";\r\nimport { BentleyError, Logger, LoggingMetaData, RealityDataStatus } from \"@itwin/core-bentley\";\r\nimport { RealityDataError, SpatialLocationAndExtents } from \"../RealityDataSource\";\r\n\r\nconst loggerCategory: string = FrontendLoggerCategory.RealityData;\r\n\r\n/**\r\n * This class provide methods used to interpret Orbit Point Cloud (OPC) format\r\n * @internal\r\n */\r\nexport class OPCFormatInterpreter {\r\n /** Gets an OPC file reader from a blobFileUrl\r\n * @param blobFileURL the name of the file.\r\n * @returns return a file reader open to read provided blob file\r\n * @internal\r\n */\r\n public static async getFileReaderFromBlobFileURL(blobFileURL: string): Promise<PointCloudReader> {\r\n if (Downloader.INSTANCE == null)\r\n Downloader.INSTANCE = new DownloaderNode();\r\n if (CRSManager.ENGINE == null)\r\n CRSManager.ENGINE = await OnlineEngine.create();\r\n\r\n // let blobFileURL: string = rdUrl;\r\n // if (accountName.length > 0) blobFileURL = UrlFS.getAzureBlobSasUrl(opcConfig.accountName, opcConfig.containerName, opcConfig.blobFileName, opcConfig.sasToken);\r\n const urlFS: UrlFS = new UrlFS();\r\n // wrap a caching layer (16 MB) around the blob file\r\n const blobFileSize: ALong = await urlFS.getFileLength(blobFileURL);\r\n Logger.logTrace(loggerCategory, `OPC File Size is ${blobFileSize}`);\r\n const blobFile: PageCachedFile = new PageCachedFile(urlFS, blobFileURL, blobFileSize, 128 * 1024 /* pageSize */, 128 /* maxPageCount */);\r\n const fileReader: PointCloudReader = await OPCReader.openFile(blobFile, blobFileURL, true/* lazyLoading */);\r\n return fileReader;\r\n }\r\n\r\n /** Gets reality data spatial location and extents\r\n * @param fileReader a file reader instance obtains from call to getFileReaderFromBlobFileURL\r\n * @returns spatial location and volume of interest, in meters, centered around `spatial location`\r\n * @throws [[RealityDataError]] if source is invalid or cannot be read\r\n * @internal\r\n */\r\n public static async getSpatialLocationAndExtents(fileReader: PointCloudReader): Promise<SpatialLocationAndExtents> {\r\n let worldRange = new Range3d();\r\n let location: Cartographic | EcefLocation;\r\n let isGeolocated = true;\r\n\r\n const bounds = fileReader.getFileBounds();\r\n worldRange = Range3d.createXYZXYZ(bounds.getMinX(), bounds.getMinY(), bounds.getMinZ(), bounds.getMaxX(), bounds.getMaxY(), bounds.getMaxZ());\r\n isGeolocated = false;\r\n const fileCrs = fileReader.getFileCRS();\r\n if (fileCrs) {\r\n try {\r\n await CRSManager.ENGINE.prepareForArea(fileCrs, bounds);\r\n const wgs84ECEFCrs = \"4978\";\r\n await CRSManager.ENGINE.prepareForArea(wgs84ECEFCrs, new OrbitGtBounds());\r\n\r\n const ecefBounds = CRSManager.transformBounds(bounds, fileCrs, wgs84ECEFCrs);\r\n const ecefRange = Range3d.createXYZXYZ(ecefBounds.getMinX(), ecefBounds.getMinY(), ecefBounds.getMinZ(), ecefBounds.getMaxX(), ecefBounds.getMaxY(), ecefBounds.getMaxZ());\r\n const ecefCenter = ecefRange.localXYZToWorld(.5, .5, .5)!;\r\n const cartoCenter = Cartographic.fromEcef(ecefCenter)!;\r\n cartoCenter.height = 0;\r\n const ecefLocation = EcefLocation.createFromCartographicOrigin(cartoCenter);\r\n location = ecefLocation;\r\n // this.iModelDb.setEcefLocation(ecefLocation);\r\n const ecefToWorld = ecefLocation.getTransform().inverse()!;\r\n worldRange = ecefToWorld.multiplyRange(ecefRange);\r\n isGeolocated = true;\r\n } catch (e) {\r\n Logger.logWarning(loggerCategory, `Error getSpatialLocationAndExtents - cannot interpret point cloud`);\r\n const errorProps = BentleyError.getErrorProps(e);\r\n const getMetaData: LoggingMetaData = () => {return { errorProps };};\r\n const error = new RealityDataError(RealityDataStatus.InvalidData, \"Invalid or unknown data\", getMetaData);\r\n throw error;\r\n }\r\n } else {\r\n // NoGCS case\r\n isGeolocated = false;\r\n const centerOfEarth = new EcefLocation({ origin: { x: 0.0, y: 0.0, z: 0.0 }, orientation: { yaw: 0.0, pitch: 0.0, roll: 0.0 } });\r\n location = centerOfEarth;\r\n Logger.logTrace(loggerCategory, \"OPC RealityData NOT Geolocated\", () => ({ ...location }));\r\n }\r\n const spatialLocation: SpatialLocationAndExtents = { location, worldRange, isGeolocated };\r\n return spatialLocation;\r\n }\r\n}\r\n\r\n"]}
|
|
@@ -2,15 +2,16 @@
|
|
|
2
2
|
* @module Tiles
|
|
3
3
|
*/
|
|
4
4
|
import { Id64String } from "@itwin/core-bentley";
|
|
5
|
+
import { FeatureAppearanceProvider, HiddenLine, MapLayerSettings, ModelMapLayerSettings, PrimaryTileTreeId, SpatialClassifier, ViewFlagOverrides, ViewFlagsProperties } from "@itwin/core-common";
|
|
5
6
|
import { StringifiedClipVector, Transform } from "@itwin/core-geometry";
|
|
6
|
-
import {
|
|
7
|
+
import { DisplayStyleState } from "../DisplayStyleState";
|
|
7
8
|
import { IModelConnection } from "../IModelConnection";
|
|
8
9
|
import { GeometricModelState } from "../ModelState";
|
|
9
10
|
import { RenderClipVolume } from "../render/RenderClipVolume";
|
|
10
11
|
import { SpatialViewState } from "../SpatialViewState";
|
|
11
12
|
import { SceneContext } from "../ViewContext";
|
|
12
13
|
import { ViewState } from "../ViewState";
|
|
13
|
-
import { TileDrawArgs, TileTree, TileTreeOwner, TileTreeReference } from "./internal";
|
|
14
|
+
import { MapLayerTileTreeReference, TileDrawArgs, TileTree, TileTreeOwner, TileTreeReference } from "./internal";
|
|
14
15
|
interface PrimaryTreeId {
|
|
15
16
|
readonly treeId: PrimaryTileTreeId;
|
|
16
17
|
readonly modelId: Id64String;
|
|
@@ -62,6 +63,21 @@ export declare class AnimatedTreeReference extends PrimaryTreeReference {
|
|
|
62
63
|
export declare function createPrimaryTileTreeReference(view: ViewState, model: GeometricModelState): PrimaryTreeReference;
|
|
63
64
|
/** @internal */
|
|
64
65
|
export declare function createMaskTreeReference(view: ViewState, model: GeometricModelState): TileTreeReference;
|
|
66
|
+
/** @internal */
|
|
67
|
+
export declare class ModelMapLayerTileTreeReference extends MapLayerTileTreeReference {
|
|
68
|
+
private _classifier;
|
|
69
|
+
private _source?;
|
|
70
|
+
private _id;
|
|
71
|
+
private _owner;
|
|
72
|
+
get isPlanar(): boolean;
|
|
73
|
+
get activeClassifier(): SpatialClassifier;
|
|
74
|
+
constructor(layerSettings: MapLayerSettings, _classifier: SpatialClassifier, layerIndex: number, iModel: IModelConnection, _source?: DisplayStyleState | undefined);
|
|
75
|
+
protected createTreeId(): PrimaryTileTreeId;
|
|
76
|
+
get treeOwner(): TileTreeOwner;
|
|
77
|
+
get viewFlags(): Partial<ViewFlagsProperties>;
|
|
78
|
+
}
|
|
79
|
+
/** @internal */
|
|
80
|
+
export declare function createModelMapLayerTileTreeReference(layerSettings: ModelMapLayerSettings, layerIndex: number, iModel: IModelConnection): ModelMapLayerTileTreeReference | undefined;
|
|
65
81
|
/** Provides [[TileTreeReference]]s for the loaded models present in a [[SpatialViewState]]'s [[ModelSelectorState]].
|
|
66
82
|
* @internal
|
|
67
83
|
*/
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"PrimaryTileTree.d.ts","sourceRoot":"","sources":["../../../src/tile/PrimaryTileTree.ts"],"names":[],"mappings":"AAIA;;GAEG;AAEH,OAAO,EAA2C,UAAU,EAAE,MAAM,qBAAqB,CAAC;AAC1F,OAAO,
|
|
1
|
+
{"version":3,"file":"PrimaryTileTree.d.ts","sourceRoot":"","sources":["../../../src/tile/PrimaryTileTree.ts"],"names":[],"mappings":"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"}
|
|
@@ -6,12 +6,12 @@
|
|
|
6
6
|
* @module Tiles
|
|
7
7
|
*/
|
|
8
8
|
import { assert, compareBooleans, compareStrings } from "@itwin/core-bentley";
|
|
9
|
+
import { BatchType, compareIModelTileTreeIds, EdgeType, FeatureAppearanceProvider, iModelTileTreeIdToString, RenderMode, SpatialClassifier, } from "@itwin/core-common";
|
|
9
10
|
import { Geometry, Range3d, StringifiedClipVector, Transform } from "@itwin/core-geometry";
|
|
10
|
-
import { BatchType, compareIModelTileTreeIds, EdgeType, FeatureAppearanceProvider, iModelTileTreeIdToString, RenderMode, } from "@itwin/core-common";
|
|
11
11
|
import { IModelApp } from "../IModelApp";
|
|
12
12
|
import { AnimationNodeId } from "../render/GraphicBranch";
|
|
13
13
|
import { formatAnimationBranchId } from "../RenderScheduleState";
|
|
14
|
-
import { IModelTileTree, iModelTileTreeParamsFromJSON, TileGraphicType, TileTreeReference, } from "./internal";
|
|
14
|
+
import { IModelTileTree, iModelTileTreeParamsFromJSON, MapLayerTileTreeReference, TileGraphicType, TileTreeReference, } from "./internal";
|
|
15
15
|
class PlanProjectionTileTree extends IModelTileTree {
|
|
16
16
|
constructor(params, treeId, baseElevation) {
|
|
17
17
|
super(params, treeId);
|
|
@@ -350,6 +350,55 @@ class MaskTreeReference extends TileTreeReference {
|
|
|
350
350
|
export function createMaskTreeReference(view, model) {
|
|
351
351
|
return new MaskTreeReference(view, model);
|
|
352
352
|
}
|
|
353
|
+
/** @internal */
|
|
354
|
+
export class ModelMapLayerTileTreeReference extends MapLayerTileTreeReference {
|
|
355
|
+
constructor(layerSettings, _classifier, layerIndex, iModel, _source) {
|
|
356
|
+
super(layerSettings, layerIndex, iModel);
|
|
357
|
+
this._classifier = _classifier;
|
|
358
|
+
this._source = _source;
|
|
359
|
+
this._id = {
|
|
360
|
+
modelId: _classifier.modelId,
|
|
361
|
+
is3d: true,
|
|
362
|
+
treeId: this.createTreeId(),
|
|
363
|
+
isPlanProjection: false,
|
|
364
|
+
forceNoInstancing: false,
|
|
365
|
+
};
|
|
366
|
+
this._owner = primaryTreeSupplier.getOwner(this._id, this.iModel);
|
|
367
|
+
}
|
|
368
|
+
get isPlanar() { return true; }
|
|
369
|
+
get activeClassifier() { return this._classifier; }
|
|
370
|
+
createTreeId() {
|
|
371
|
+
return { type: BatchType.Primary, edges: EdgeType.None };
|
|
372
|
+
}
|
|
373
|
+
get treeOwner() {
|
|
374
|
+
const newId = this.createTreeId();
|
|
375
|
+
if (0 !== compareIModelTileTreeIds(newId, this._id.treeId)) {
|
|
376
|
+
this._id = { modelId: this._id.modelId, is3d: this._id.is3d, treeId: newId, isPlanProjection: false, forceNoInstancing: false };
|
|
377
|
+
this._owner = primaryTreeSupplier.getOwner(this._id, this.iModel);
|
|
378
|
+
}
|
|
379
|
+
return this._owner;
|
|
380
|
+
}
|
|
381
|
+
get viewFlags() {
|
|
382
|
+
return {
|
|
383
|
+
renderMode: RenderMode.SmoothShade,
|
|
384
|
+
transparency: true,
|
|
385
|
+
textures: true,
|
|
386
|
+
lighting: false,
|
|
387
|
+
shadows: false,
|
|
388
|
+
monochrome: false,
|
|
389
|
+
materials: false,
|
|
390
|
+
ambientOcclusion: false,
|
|
391
|
+
visibleEdges: true,
|
|
392
|
+
hiddenEdges: false,
|
|
393
|
+
fill: true,
|
|
394
|
+
};
|
|
395
|
+
}
|
|
396
|
+
}
|
|
397
|
+
/** @internal */
|
|
398
|
+
export function createModelMapLayerTileTreeReference(layerSettings, layerIndex, iModel) {
|
|
399
|
+
const classifier = SpatialClassifier.fromModelMapLayer(layerSettings);
|
|
400
|
+
return classifier ? new ModelMapLayerTileTreeReference(layerSettings, classifier, layerIndex, iModel) : undefined;
|
|
401
|
+
}
|
|
353
402
|
/** Provides [[TileTreeReference]]s for the loaded models present in a [[SpatialViewState]]'s [[ModelSelectorState]].
|
|
354
403
|
* @internal
|
|
355
404
|
*/
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"PrimaryTileTree.js","sourceRoot":"","sources":["../../../src/tile/PrimaryTileTree.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, compareBooleans, compareStrings, Id64String } from \"@itwin/core-bentley\";\nimport { Geometry, Range3d, StringifiedClipVector, Transform } from \"@itwin/core-geometry\";\nimport {\n BatchType, compareIModelTileTreeIds, EdgeType, FeatureAppearance, FeatureAppearanceProvider, HiddenLine, iModelTileTreeIdToString,\n PrimaryTileTreeId, RenderMode, ViewFlagOverrides,\n} from \"@itwin/core-common\";\nimport { IModelApp } from \"../IModelApp\";\nimport { IModelConnection } from \"../IModelConnection\";\nimport { AnimationNodeId } from \"../render/GraphicBranch\";\nimport { GeometricModel3dState, GeometricModelState } from \"../ModelState\";\nimport { RenderClipVolume } from \"../render/RenderClipVolume\";\nimport { formatAnimationBranchId, RenderScheduleState } from \"../RenderScheduleState\";\nimport { SpatialViewState } from \"../SpatialViewState\";\nimport { SceneContext } from \"../ViewContext\";\nimport { ModelDisplayTransformProvider, ViewState, ViewState3d } from \"../ViewState\";\nimport {\n IModelTileTree, IModelTileTreeParams, iModelTileTreeParamsFromJSON, TileDrawArgs, TileGraphicType, TileTree, TileTreeOwner, TileTreeReference,\n TileTreeSupplier,\n} from \"./internal\";\n\ninterface PrimaryTreeId {\n readonly treeId: PrimaryTileTreeId;\n readonly modelId: Id64String;\n readonly is3d: boolean;\n readonly isPlanProjection: boolean;\n readonly forceNoInstancing: boolean;\n}\n\nclass PlanProjectionTileTree extends IModelTileTree {\n public readonly baseElevation: number;\n\n public constructor(params: IModelTileTreeParams, treeId: PrimaryTileTreeId, baseElevation: number) {\n super(params, treeId);\n this.baseElevation = baseElevation;\n }\n}\n\nclass PrimaryTreeSupplier implements TileTreeSupplier {\n public constructor() {\n }\n\n public compareTileTreeIds(lhs: PrimaryTreeId, rhs: PrimaryTreeId): number {\n // NB: we don't compare isPlanProjection or is3d - they should always have the same value for a given modelId.\n let cmp = compareStrings(lhs.modelId, rhs.modelId);\n if (0 === cmp) {\n cmp = compareIModelTileTreeIds(lhs.treeId, rhs.treeId);\n if (0 === cmp)\n cmp = compareBooleans(lhs.forceNoInstancing, rhs.forceNoInstancing);\n }\n\n return cmp;\n }\n\n public async createTileTree(id: PrimaryTreeId, iModel: IModelConnection): Promise<TileTree | undefined> {\n const treeId = id.treeId;\n const idStr = iModelTileTreeIdToString(id.modelId, treeId, IModelApp.tileAdmin);\n const props = await IModelApp.tileAdmin.requestTileTreeProps(iModel, idStr);\n\n const options = {\n edgesRequired: EdgeType.None !== treeId.edges,\n allowInstancing: undefined === treeId.animationId && !treeId.enforceDisplayPriority && !treeId.sectionCut && !id.forceNoInstancing,\n is3d: id.is3d,\n batchType: BatchType.Primary,\n };\n\n const params = iModelTileTreeParamsFromJSON(props, iModel, id.modelId, options);\n if (!id.isPlanProjection)\n return new IModelTileTree(params, id.treeId);\n\n let elevation = 0;\n try {\n const ranges = await iModel.models.queryModelRanges(id.modelId);\n if (1 === ranges.length) {\n const range = Range3d.fromJSON(ranges[0]);\n const lo = range.low.z;\n const hi = range.high.z;\n if (lo <= hi)\n elevation = (lo + hi) / 2;\n }\n } catch (_err) {\n //\n }\n\n return new PlanProjectionTileTree(params, id.treeId, elevation);\n }\n\n public getOwner(id: PrimaryTreeId, iModel: IModelConnection): TileTreeOwner {\n return iModel.tiles.getTileTreeOwner(id, this);\n }\n\n public addModelsAnimatedByScript(modelIds: Set<Id64String>, scriptSourceId: Id64String, trees: Iterable<{ id: PrimaryTreeId, owner: TileTreeOwner }>): void {\n for (const tree of trees)\n if (tree.id.treeId.animationId === scriptSourceId)\n modelIds.add(tree.id.modelId);\n }\n\n public addSpatialModels(modelIds: Set<Id64String>, trees: Iterable<{ id: PrimaryTreeId, owner: TileTreeOwner }>): void {\n for (const tree of trees)\n if (tree.id.is3d)\n modelIds.add(tree.id.modelId);\n }\n}\n\nconst primaryTreeSupplier = new PrimaryTreeSupplier();\n\n/** Find all extant tile trees associated with the specified model Ids and dispose of them.\n * This is used by BriefcaseConnection when a GraphicalEditingScope is exited or after a change to the models' geometry guids\n * is committed, undone, redone, or merged.\n * @internal\n */\nexport function disposeTileTreesForGeometricModels(modelIds: Set<Id64String>, iModel: IModelConnection): void {\n const trees = iModel.tiles.getTreeOwnersForSupplier(primaryTreeSupplier);\n for (const kvp of trees) {\n const id = kvp.id as PrimaryTreeId;\n assert(undefined !== id.modelId);\n if (modelIds.has(id.modelId))\n kvp.owner.dispose();\n }\n}\n\nclass PrimaryTreeReference extends TileTreeReference {\n public readonly view: ViewState;\n public readonly model: GeometricModelState;\n /** Chiefly for debugging - disables iteration of this reference in SpatialModelRefs to e.g. omit the reference from the scene. */\r\n public deactivated = false;\r\n protected _viewFlagOverrides: ViewFlagOverrides;\r\n protected _id: PrimaryTreeId;\n private _owner: TileTreeOwner;\n private readonly _sectionClip?: StringifiedClipVector;\n private readonly _sectionCutAppearanceProvider?: FeatureAppearanceProvider;\n private _forceNoInstancing: boolean;\n protected readonly _animationTransformNodeId?: number;\n\n public constructor(view: ViewState, model: GeometricModelState, planProjection: boolean, transformNodeId: number | undefined, sectionClip?: StringifiedClipVector) {\n super();\n this.view = view;\n this.model = model;\n this._animationTransformNodeId = transformNodeId;\n\n this._sectionClip = sectionClip;\n this._viewFlagOverrides = { ...model.jsonProperties.viewFlagOverrides };\n if (sectionClip) {\n // Clipping will be applied on backend; don't clip out cut geometry.\n this._viewFlagOverrides.clipVolume = false;\n this._sectionCutAppearanceProvider = FeatureAppearanceProvider.supplement((app: FeatureAppearance) => {\n const cutApp = this.view.displayStyle.settings.clipStyle.cutStyle.appearance;\n return cutApp ? app.extendAppearance(cutApp) : app;\n });\n }\n\n this._forceNoInstancing = false;\n if (!IModelApp.renderSystem.supportsNonuniformScaledInstancing) {\n this.checkForceNoInstancing(view.modelDisplayTransformProvider);\n view.onModelDisplayTransformProviderChanged.addListener((provider: ModelDisplayTransformProvider | undefined) => this.checkForceNoInstancing(provider));\n }\n\n this._id = {\n modelId: model.id,\n is3d: model.is3d,\n treeId: this.createTreeId(view, model.id),\n isPlanProjection: planProjection,\n forceNoInstancing: this._forceNoInstancing,\n };\n\n this._owner = primaryTreeSupplier.getOwner(this._id, model.iModel);\n }\n\n private checkForceNoInstancing(provider: ModelDisplayTransformProvider | undefined) {\n this._forceNoInstancing = false;\n // If this model has a display transform with a non-uniform scale then instancing needs to be forced off when using WebGL1.\n if (undefined !== provider) {\n const tf = provider.getModelDisplayTransform(this.model.id, Transform.createIdentity());\n const sx = tf.matrix.getColumn(0).magnitudeSquared();\n const sy = tf.matrix.getColumn(1).magnitudeSquared();\n const sz = tf.matrix.getColumn(2).magnitudeSquared();\n if (Math.abs(sx - sy) > Geometry.smallMetricDistance || Math.abs(sx - sz) > Geometry.smallMetricDistance)\n this._forceNoInstancing = true;\n }\n }\n\n protected override getAnimationTransformNodeId() {\n return this._animationTransformNodeId ?? AnimationNodeId.Untransformed;\n }\n\n protected override getViewFlagOverrides(_tree: TileTree) {\n return this._viewFlagOverrides;\n }\n\n protected override getAppearanceProvider(_tree: TileTree): FeatureAppearanceProvider | undefined {\n if (this._sectionCutAppearanceProvider && this.view.displayStyle.settings.clipStyle.cutStyle.appearance)\n return this._sectionCutAppearanceProvider;\n\n return undefined;\n }\n\n protected override getHiddenLineSettings(_tree: TileTree): HiddenLine.Settings | undefined {\n return this._sectionClip ? this.view.displayStyle.settings.clipStyle.cutStyle.hiddenLine : undefined;\n }\n\n public override get castsShadows() {\n return true;\n }\n\n protected get isPlanProjection(): boolean {\n return false;\n }\n\n protected override getClipVolume(_tree: TileTree): RenderClipVolume | undefined {\n // ###TODO: reduce frequency with which getModelClip() is called\n return this.view.is3d() && !this._sectionClip ? this.view.getModelClip(this.model.id) : undefined;\n }\n\n public override createDrawArgs(context: SceneContext): TileDrawArgs | undefined {\n const args = super.createDrawArgs(context);\n if (args)\n args.intersectionClip = this._sectionClip;\n\n return args;\n }\n\n public get treeOwner(): TileTreeOwner {\n const newId = this.createTreeId(this.view, this._id.modelId);\n if (0 !== compareIModelTileTreeIds(newId, this._id.treeId) || this._forceNoInstancing !== this._id.forceNoInstancing) {\n this._id = {\n modelId: this._id.modelId,\n is3d: this._id.is3d,\n treeId: newId,\n isPlanProjection: this._id.isPlanProjection,\n forceNoInstancing: this._forceNoInstancing,\n };\n\n this._owner = primaryTreeSupplier.getOwner(this._id, this.model.iModel);\n }\n\n return this._owner;\n }\n\n protected createTreeId(view: ViewState, modelId: Id64String): PrimaryTileTreeId {\n if (this._sectionClip) {\n // We do this each time in case the ClipStyle's overrides are modified.\n // ###TODO: can we avoid that? Event listeners maybe?\n this._viewFlagOverrides = {\n ...this.view.displayStyle.settings.clipStyle.cutStyle.viewflags,\n // Do not clip out the cut geometry intersecting the clip planes.\n clipVolume: false,\n // The cut geometry is planar - it should win a z-fight.\n // Also we need to preserve this flag if this is a plan projection tile tree reference.\n forceSurfaceDiscard: true,\n };\n }\n\n const script = view.displayStyle.scheduleState;\n const animationId = undefined !== script ? script.getModelAnimationId(modelId) : undefined;\n\n const renderMode = this._viewFlagOverrides.renderMode ?? view.viewFlags.renderMode;\n const visibleEdges = this._viewFlagOverrides.visibleEdges ?? view.viewFlags.visibleEdges;\n const edgesRequired = visibleEdges || RenderMode.SmoothShade !== renderMode || IModelApp.tileAdmin.alwaysRequestEdges;\n const edges = edgesRequired ? (IModelApp.tileAdmin.enableIndexedEdges ? EdgeType.Indexed : EdgeType.NonIndexed) : EdgeType.None;\n const sectionCut = this._sectionClip?.clipString;\n return { type: BatchType.Primary, edges, animationId, sectionCut };\n }\n\n protected computeBaseTransform(tree: TileTree): Transform {\n return super.computeTransform(tree);\n }\n\n protected override computeTransform(tree: TileTree): Transform {\n const tf = this.computeBaseTransform(tree);\n return this.view.getModelDisplayTransform(this.model.id, tf);\n }\n}\n\n/** @internal */\nexport class AnimatedTreeReference extends PrimaryTreeReference {\n private readonly _branchId: string;\n\n public constructor(view: ViewState, model: GeometricModelState, transformNodeId: number) {\n super(view, model, false, transformNodeId);\n this._branchId = formatAnimationBranchId(model.id, transformNodeId);\n }\n\n protected override computeBaseTransform(tree: TileTree): Transform {\n const tf = super.computeBaseTransform(tree);\n const style = this.view.displayStyle;\n const script = style.scheduleScript;\n if (undefined === script || undefined === this._animationTransformNodeId)\n return tf;\n\n const timePoint = style.settings.timePoint ?? script.duration.low;\n const animTf = script.getTransform(this._id.modelId, this._animationTransformNodeId, timePoint);\n if (animTf)\n animTf.multiplyTransformTransform(tf, tf);\n\n return tf;\n }\n\n public override createDrawArgs(context: SceneContext): TileDrawArgs | undefined {\n const animBranch = context.viewport.target.animationBranches?.branchStates.get(this._branchId);\n if (animBranch && animBranch.omit)\n return undefined;\n\n const args = super.createDrawArgs(context);\n if (args?.tree && undefined !== this._animationTransformNodeId) {\n assert(args.tree instanceof IModelTileTree);\n args.boundingRange = args.tree.getTransformNodeRange(this._animationTransformNodeId);\n }\n\n return args;\n }\n}\n\nclass PlanProjectionTreeReference extends PrimaryTreeReference {\n private get _view3d() { return this.view as ViewState3d; }\n private readonly _baseTransform = Transform.createIdentity();\n\n public constructor(view: ViewState3d, model: GeometricModelState, sectionCut?: StringifiedClipVector) {\n super(view, model, true, undefined, sectionCut);\n this._viewFlagOverrides.forceSurfaceDiscard = true;\n }\n\n public override get castsShadows() {\n return false;\n }\n\n protected override get isPlanProjection(): boolean {\n return true;\n }\n\n public override createDrawArgs(context: SceneContext): TileDrawArgs | undefined {\n const args = super.createDrawArgs(context);\n if (undefined !== args && this._id.treeId.enforceDisplayPriority) {\n args.drawGraphics = () => { // eslint-disable-line @typescript-eslint/unbound-method\n const graphics = args.produceGraphics();\n if (undefined !== graphics) {\n const settings = this.getSettings();\n const asOverlay = undefined !== settings && settings.overlay;\n const transparency = settings?.transparency || 0;\n\n let elevation = settings?.elevation;\n if (undefined === elevation) {\n const tree = this.treeOwner.tileTree;\n if (tree) {\n assert(tree instanceof PlanProjectionTileTree);\n elevation = tree.baseElevation;\n } else {\n elevation = 0;\n }\n }\n\n context.outputGraphic(context.target.renderSystem.createGraphicLayerContainer(graphics, asOverlay, transparency, elevation));\n }\n };\n }\n\n return args;\n }\n\n protected override computeBaseTransform(tree: TileTree): Transform {\n assert(tree instanceof PlanProjectionTileTree);\n const transform = tree.iModelTransform.clone(this._baseTransform);\n\n const elevation = this.getSettings()?.elevation;\n if (undefined !== elevation)\n transform.origin.z = elevation;\n\n return transform;\n }\n\n public override draw(args: TileDrawArgs): void {\n const settings = this.getSettings();\n if (undefined === settings || settings.enforceDisplayPriority || !settings.overlay)\n super.draw(args);\n else\n args.context.withGraphicType(TileGraphicType.Overlay, () => args.tree.draw(args));\n }\n\n private getSettings() {\n return this._view3d.getDisplayStyle3d().settings.getPlanProjectionSettings(this.model.id);\n }\n\n protected override createTreeId(view: ViewState, modelId: Id64String): PrimaryTileTreeId {\n const id = super.createTreeId(view, modelId);\n const settings = this.getSettings();\n if (undefined !== settings && settings.enforceDisplayPriority)\n id.enforceDisplayPriority = true;\n\n return id;\n }\n}\n\nfunction isPlanProjection(view: ViewState, model: GeometricModelState): boolean {\n const model3d = view.is3d() ? model.asGeometricModel3d : undefined;\n return undefined !== model3d && model3d.isPlanProjection;\n}\n\nfunction createTreeRef(view: ViewState, model: GeometricModelState, sectionCut: StringifiedClipVector | undefined): PrimaryTreeReference {\n if (false !== IModelApp.renderSystem.options.planProjections && isPlanProjection(view, model))\n return new PlanProjectionTreeReference(view as ViewState3d, model, sectionCut);\n\n return new PrimaryTreeReference(view, model, false, undefined, sectionCut);\n}\n\n/** @internal */\nexport function createPrimaryTileTreeReference(view: ViewState, model: GeometricModelState): PrimaryTreeReference {\n return createTreeRef(view, model, undefined);\n}\n\nclass MaskTreeReference extends TileTreeReference {\n protected _id: PrimaryTreeId;\n private _owner: TileTreeOwner;\n public readonly model: GeometricModelState;\n public override get castsShadows() { return false; }\n public constructor(view: ViewState, model: GeometricModelState) {\n super();\n this.model = model;\n this._id = {\n modelId: model.id,\n is3d: model.is3d,\n treeId: this.createTreeId(),\n isPlanProjection: isPlanProjection(view, model),\n forceNoInstancing: false,\n };\n\n this._owner = primaryTreeSupplier.getOwner(this._id, model.iModel);\n }\n\n public get treeOwner(): TileTreeOwner {\n const newId = this.createTreeId();\n if (0 !== compareIModelTileTreeIds(newId, this._id.treeId)) {\n this._id = { modelId: this._id.modelId, is3d: this._id.is3d, treeId: newId, isPlanProjection: false, forceNoInstancing: false };\n this._owner = primaryTreeSupplier.getOwner(this._id, this.model.iModel);\n }\n\n return this._owner;\n }\n protected createTreeId(): PrimaryTileTreeId {\n return { type: BatchType.Primary, edges: EdgeType.None };\n }\n}\n\n/** @internal */\nexport function createMaskTreeReference(view: ViewState, model: GeometricModelState): TileTreeReference {\n return new MaskTreeReference(view, model);\n}\n\n/** Provides [[TileTreeReference]]s for the loaded models present in a [[SpatialViewState]]'s [[ModelSelectorState]].\n * @internal\n */\nexport interface SpatialTileTreeReferences extends Iterable<TileTreeReference> {\n /** Supplies an iterator over all of the [[TileTreeReference]]s. */\n [Symbol.iterator](): Iterator<TileTreeReference>;\n /** Requests that the set of [[TileTreeReference]]s be updated to match the current state of the view, e.g., after the model selector's contents have changed. */\n update(): void;\n /** @see SpatialViewState.setTileTreeReferencesDeactivated. */\n setDeactivated(modelIds: Id64String | Id64String[] | undefined, deactivated: boolean | undefined, refs: \"all\" | \"animated\" | \"primary\" | \"section\" | number[]): void;\n}\n\n/** Provides [[TileTreeReference]]s for the loaded models present in a [[SpatialViewState]]'s [[ModelSelectorState]].\n * @internal\n */\nexport namespace SpatialTileTreeReferences {\n /** Create a SpatialTileTreeReferences object reflecting the contents of the specified view. */\n export function create(view: SpatialViewState): SpatialTileTreeReferences {\n return new SpatialRefs(view);\n }\n}\n\n/** Represents the [[TileTreeReference]]s associated with one model in a [[SpatialTileTreeReferences]]. */\nclass SpatialModelRefs implements Iterable<TileTreeReference> {\n /** The TileTreeReference representing the model's primary content. */\n private readonly _modelRef: TileTreeReference;\n /** TileTreeReferences representing nodes transformed by the view's schedule script. */\n private readonly _animatedRefs: PrimaryTreeReference[] = [];\n /** TileTreeReference providing cut geometry intersecting the view's clip volume. */\n private _sectionCutRef?: PrimaryTreeReference;\n /** Whether `this._modelRef` is a [[PrimaryTreeReference]] (as opposed to, e.g., a reality model tree reference). */\n private readonly _isPrimaryRef: boolean;\n\n public constructor(model: GeometricModel3dState, view: SpatialViewState) {\n this._modelRef = model.createTileTreeReference(view);\n this._isPrimaryRef = this._modelRef instanceof PrimaryTreeReference;\n }\n\n public *[Symbol.iterator](): Iterator<TileTreeReference> {\n if (!this._primaryRef || !this._primaryRef.deactivated)\n yield this._modelRef;\n\n for (const animated of this._animatedRefs)\n if (!animated.deactivated)\n yield animated;\n\n if (this._sectionCutRef && !this._sectionCutRef.deactivated)\n yield this._sectionCutRef;\n }\n\n public updateAnimated(script: RenderScheduleState | undefined): void {\n const ref = this._primaryRef;\n if (!ref)\n return;\n\n this._animatedRefs.length = 0;\n const nodeIds = script?.getTransformNodeIds(ref.model.id);\n if (nodeIds)\n for (const nodeId of nodeIds)\n this._animatedRefs.push(new AnimatedTreeReference(ref.view, ref.model, nodeId));\n }\n\n public updateSectionCut(clip: StringifiedClipVector | undefined): void {\n const ref = this._primaryRef;\n if (!ref) {\n assert(undefined === this._sectionCutRef);\n return;\n }\n\n // If the clip isn't supposed to apply to this model, don't produce cut geometry.\n const vfJson = clip ? ref.model.jsonProperties.viewFlagOverrides : undefined;\n const vfOvrs = vfJson ? { ...vfJson } : undefined;\n if (vfOvrs && !vfOvrs.clipVolume)\n clip = undefined;\n\n this._sectionCutRef = clip ? createTreeRef(ref.view, ref.model, clip) : undefined;\n }\n\n public setDeactivated(deactivated: boolean | undefined, which: \"all\" | \"animated\" | \"primary\" | \"section\" | number[]): void {\n if (typeof which !== \"string\") {\n for (const index of which)\n if (this._animatedRefs[index])\n this._animatedRefs[index].deactivated = deactivated ?? !this._animatedRefs[index].deactivated;\n\n return;\n }\n\n if ((\"all\" === which || \"primary\" === which) && this._primaryRef)\n this._primaryRef.deactivated = deactivated ?? !this._primaryRef.deactivated;\n\n if ((\"all\" === which || \"section\" === which) && this._sectionCutRef)\n this._sectionCutRef.deactivated = deactivated ?? !this._sectionCutRef.deactivated;\n\n if ((\"all\" === which || \"animated\" === which))\n for (const ref of this._animatedRefs)\n ref.deactivated = deactivated ?? !ref.deactivated;\n }\n\n private get _primaryRef(): PrimaryTreeReference | undefined {\n if (!this._isPrimaryRef)\n return undefined;\n\n assert(this._modelRef instanceof PrimaryTreeReference);\n return this._modelRef;\n }\n}\n\n/** Provides [[TileTreeReference]]s for the loaded models present in a [[SpatialViewState]]'s [[ModelSelectorState]]. */\nclass SpatialRefs implements SpatialTileTreeReferences {\n private _allLoaded = false;\n private readonly _view: SpatialViewState;\n private _refs = new Map<Id64String, SpatialModelRefs>();\n private _swapRefs = new Map<Id64String, SpatialModelRefs>();\n private _scheduleScript?: RenderScheduleState;\n private _sectionCut?: StringifiedClipVector;\n\n public constructor(view: SpatialViewState) {\n this._view = view;\n this._scheduleScript = view.displayStyle.scheduleState;\n this._sectionCut = this.getSectionCutFromView();\n }\n\n public update(): void {\n this._allLoaded = false;\n }\n\n public *[Symbol.iterator](): Iterator<TileTreeReference> {\n this.load();\n for (const modelRef of this._refs.values())\n for (const ref of modelRef)\n yield ref;\n }\n\n public setDeactivated(modelIds: Id64String | Id64String[] | undefined, deactivated: boolean, refs: \"all\" | \"animated\" | \"primary\" | \"section\" | number[]): void {\n if (undefined === modelIds) {\n for (const model of this._refs.values())\n model.setDeactivated(deactivated, refs);\n\n return;\n }\n\n if (typeof modelIds === \"string\")\n modelIds = [modelIds];\n\n for (const modelId of modelIds)\n this._refs.get(modelId)?.setDeactivated(deactivated, refs);\n }\n\n private load(): void {\n if (!this._allLoaded) {\n this._allLoaded = true;\n this.updateModels();\n }\n\n const script = this._view.displayStyle.scheduleState;\n if (script !== this._scheduleScript) {\n this._scheduleScript = script;\n for (const ref of this._refs.values())\n ref.updateAnimated(script);\n }\n\n const sectionCut = this.getSectionCutFromView();\n if (sectionCut?.clipString !== this._sectionCut?.clipString) {\n this._sectionCut = sectionCut;\n for (const ref of this._refs.values())\n ref.updateSectionCut(sectionCut);\n }\n }\n\n private getSectionCutFromView(): StringifiedClipVector | undefined {\n const wantCut = this._view.viewFlags.clipVolume && this._view.displayStyle.settings.clipStyle.produceCutGeometry;\n const clip = wantCut ? this._view.getViewClip() : undefined;\n return StringifiedClipVector.fromClipVector(clip);\n }\n\n /** Ensure this._refs contains a SpatialModelRefs for all loaded models in the model selector. */\n private updateModels(): void {\n const prev = this._refs;\n const cur = this._swapRefs;\n this._refs = cur;\n this._swapRefs = prev;\n cur.clear();\n\n for (const modelId of this._view.modelSelector.models) {\n let modelRefs = prev.get(modelId);\n if (!modelRefs) {\n const model = this._view.iModel.models.getLoaded(modelId)?.asGeometricModel3d;\n if (model) {\n modelRefs = new SpatialModelRefs(model, this._view);\n modelRefs.updateAnimated(this._scheduleScript);\n modelRefs.updateSectionCut(this._sectionCut);\n }\n }\n\n if (modelRefs)\n cur.set(modelId, modelRefs);\n }\n }\n}\n"]}
|
|
1
|
+
{"version":3,"file":"PrimaryTileTree.js","sourceRoot":"","sources":["../../../src/tile/PrimaryTileTree.ts"],"names":[],"mappings":"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","sourcesContent":["/*---------------------------------------------------------------------------------------------\r\n* Copyright (c) Bentley Systems, Incorporated. All rights reserved.\r\n* See LICENSE.md in the project root for license terms and full copyright notice.\r\n*--------------------------------------------------------------------------------------------*/\r\n/** @packageDocumentation\r\n * @module Tiles\r\n */\r\n\r\nimport { assert, compareBooleans, compareStrings, Id64String } from \"@itwin/core-bentley\";\r\nimport {\r\n BatchType, compareIModelTileTreeIds, EdgeType, FeatureAppearance, FeatureAppearanceProvider, HiddenLine, iModelTileTreeIdToString, MapLayerSettings, ModelMapLayerSettings, PrimaryTileTreeId, RenderMode, SpatialClassifier, ViewFlagOverrides, ViewFlagsProperties,\r\n} from \"@itwin/core-common\";\r\nimport { Geometry, Range3d, StringifiedClipVector, Transform } from \"@itwin/core-geometry\";\r\nimport { DisplayStyleState } from \"../DisplayStyleState\";\r\nimport { IModelApp } from \"../IModelApp\";\r\nimport { IModelConnection } from \"../IModelConnection\";\r\nimport { GeometricModel3dState, GeometricModelState } from \"../ModelState\";\r\nimport { AnimationNodeId } from \"../render/GraphicBranch\";\r\nimport { RenderClipVolume } from \"../render/RenderClipVolume\";\r\nimport { formatAnimationBranchId, RenderScheduleState } from \"../RenderScheduleState\";\r\nimport { SpatialViewState } from \"../SpatialViewState\";\r\nimport { SceneContext } from \"../ViewContext\";\r\nimport { ModelDisplayTransformProvider, ViewState, ViewState3d } from \"../ViewState\";\r\nimport {\r\n IModelTileTree, IModelTileTreeParams, iModelTileTreeParamsFromJSON, MapLayerTileTreeReference, TileDrawArgs, TileGraphicType, TileTree, TileTreeOwner, TileTreeReference,\r\n TileTreeSupplier,\r\n} from \"./internal\";\r\n\r\ninterface PrimaryTreeId {\r\n readonly treeId: PrimaryTileTreeId;\r\n readonly modelId: Id64String;\r\n readonly is3d: boolean;\r\n readonly isPlanProjection: boolean;\r\n readonly forceNoInstancing: boolean;\r\n}\r\n\r\nclass PlanProjectionTileTree extends IModelTileTree {\r\n public readonly baseElevation: number;\r\n\r\n public constructor(params: IModelTileTreeParams, treeId: PrimaryTileTreeId, baseElevation: number) {\r\n super(params, treeId);\r\n this.baseElevation = baseElevation;\r\n }\r\n}\r\n\r\nclass PrimaryTreeSupplier implements TileTreeSupplier {\r\n public constructor() {\r\n }\r\n\r\n public compareTileTreeIds(lhs: PrimaryTreeId, rhs: PrimaryTreeId): number {\r\n // NB: we don't compare isPlanProjection or is3d - they should always have the same value for a given modelId.\r\n let cmp = compareStrings(lhs.modelId, rhs.modelId);\r\n if (0 === cmp) {\r\n cmp = compareIModelTileTreeIds(lhs.treeId, rhs.treeId);\r\n if (0 === cmp)\r\n cmp = compareBooleans(lhs.forceNoInstancing, rhs.forceNoInstancing);\r\n }\r\n\r\n return cmp;\r\n }\r\n\r\n public async createTileTree(id: PrimaryTreeId, iModel: IModelConnection): Promise<TileTree | undefined> {\r\n const treeId = id.treeId;\r\n const idStr = iModelTileTreeIdToString(id.modelId, treeId, IModelApp.tileAdmin);\r\n const props = await IModelApp.tileAdmin.requestTileTreeProps(iModel, idStr);\r\n\r\n const options = {\r\n edgesRequired: EdgeType.None !== treeId.edges,\r\n allowInstancing: undefined === treeId.animationId && !treeId.enforceDisplayPriority && !treeId.sectionCut && !id.forceNoInstancing,\r\n is3d: id.is3d,\r\n batchType: BatchType.Primary,\r\n };\r\n\r\n const params = iModelTileTreeParamsFromJSON(props, iModel, id.modelId, options);\r\n if (!id.isPlanProjection)\r\n return new IModelTileTree(params, id.treeId);\r\n\r\n let elevation = 0;\r\n try {\r\n const ranges = await iModel.models.queryModelRanges(id.modelId);\r\n if (1 === ranges.length) {\r\n const range = Range3d.fromJSON(ranges[0]);\r\n const lo = range.low.z;\r\n const hi = range.high.z;\r\n if (lo <= hi)\r\n elevation = (lo + hi) / 2;\r\n }\r\n } catch (_err) {\r\n //\r\n }\r\n\r\n return new PlanProjectionTileTree(params, id.treeId, elevation);\r\n }\r\n\r\n public getOwner(id: PrimaryTreeId, iModel: IModelConnection): TileTreeOwner {\r\n return iModel.tiles.getTileTreeOwner(id, this);\r\n }\r\n\r\n public addModelsAnimatedByScript(modelIds: Set<Id64String>, scriptSourceId: Id64String, trees: Iterable<{ id: PrimaryTreeId, owner: TileTreeOwner }>): void {\r\n for (const tree of trees)\r\n if (tree.id.treeId.animationId === scriptSourceId)\r\n modelIds.add(tree.id.modelId);\r\n }\r\n\r\n public addSpatialModels(modelIds: Set<Id64String>, trees: Iterable<{ id: PrimaryTreeId, owner: TileTreeOwner }>): void {\r\n for (const tree of trees)\r\n if (tree.id.is3d)\r\n modelIds.add(tree.id.modelId);\r\n }\r\n}\r\n\r\nconst primaryTreeSupplier = new PrimaryTreeSupplier();\r\n\r\n/** Find all extant tile trees associated with the specified model Ids and dispose of them.\r\n * This is used by BriefcaseConnection when a GraphicalEditingScope is exited or after a change to the models' geometry guids\r\n * is committed, undone, redone, or merged.\r\n * @internal\r\n */\r\nexport function disposeTileTreesForGeometricModels(modelIds: Set<Id64String>, iModel: IModelConnection): void {\r\n const trees = iModel.tiles.getTreeOwnersForSupplier(primaryTreeSupplier);\r\n for (const kvp of trees) {\r\n const id = kvp.id as PrimaryTreeId;\r\n assert(undefined !== id.modelId);\r\n if (modelIds.has(id.modelId))\r\n kvp.owner.dispose();\r\n }\r\n}\r\n\r\nclass PrimaryTreeReference extends TileTreeReference {\r\n public readonly view: ViewState;\r\n public readonly model: GeometricModelState;\r\n /** Chiefly for debugging - disables iteration of this reference in SpatialModelRefs to e.g. omit the reference from the scene. */\r\n public deactivated = false;\r\n protected _viewFlagOverrides: ViewFlagOverrides;\r\n protected _id: PrimaryTreeId;\r\n private _owner: TileTreeOwner;\r\n private readonly _sectionClip?: StringifiedClipVector;\r\n private readonly _sectionCutAppearanceProvider?: FeatureAppearanceProvider;\r\n private _forceNoInstancing: boolean;\r\n protected readonly _animationTransformNodeId?: number;\r\n\r\n public constructor(view: ViewState, model: GeometricModelState, planProjection: boolean, transformNodeId: number | undefined, sectionClip?: StringifiedClipVector) {\r\n super();\r\n this.view = view;\r\n this.model = model;\r\n this._animationTransformNodeId = transformNodeId;\r\n\r\n this._sectionClip = sectionClip;\r\n this._viewFlagOverrides = { ...model.jsonProperties.viewFlagOverrides };\r\n if (sectionClip) {\r\n // Clipping will be applied on backend; don't clip out cut geometry.\r\n this._viewFlagOverrides.clipVolume = false;\r\n this._sectionCutAppearanceProvider = FeatureAppearanceProvider.supplement((app: FeatureAppearance) => {\r\n const cutApp = this.view.displayStyle.settings.clipStyle.cutStyle.appearance;\r\n return cutApp ? app.extendAppearance(cutApp) : app;\r\n });\r\n }\r\n\r\n this._forceNoInstancing = false;\r\n if (!IModelApp.renderSystem.supportsNonuniformScaledInstancing) {\r\n this.checkForceNoInstancing(view.modelDisplayTransformProvider);\r\n view.onModelDisplayTransformProviderChanged.addListener((provider: ModelDisplayTransformProvider | undefined) => this.checkForceNoInstancing(provider));\r\n }\r\n\r\n this._id = {\r\n modelId: model.id,\r\n is3d: model.is3d,\r\n treeId: this.createTreeId(view, model.id),\r\n isPlanProjection: planProjection,\r\n forceNoInstancing: this._forceNoInstancing,\r\n };\r\n\r\n this._owner = primaryTreeSupplier.getOwner(this._id, model.iModel);\r\n }\r\n\r\n private checkForceNoInstancing(provider: ModelDisplayTransformProvider | undefined) {\r\n this._forceNoInstancing = false;\r\n // If this model has a display transform with a non-uniform scale then instancing needs to be forced off when using WebGL1.\r\n if (undefined !== provider) {\r\n const tf = provider.getModelDisplayTransform(this.model.id, Transform.createIdentity());\r\n const sx = tf.matrix.getColumn(0).magnitudeSquared();\r\n const sy = tf.matrix.getColumn(1).magnitudeSquared();\r\n const sz = tf.matrix.getColumn(2).magnitudeSquared();\r\n if (Math.abs(sx - sy) > Geometry.smallMetricDistance || Math.abs(sx - sz) > Geometry.smallMetricDistance)\r\n this._forceNoInstancing = true;\r\n }\r\n }\r\n\r\n protected override getAnimationTransformNodeId() {\r\n return this._animationTransformNodeId ?? AnimationNodeId.Untransformed;\r\n }\r\n\r\n protected override getViewFlagOverrides(_tree: TileTree) {\r\n return this._viewFlagOverrides;\r\n }\r\n\r\n protected override getAppearanceProvider(_tree: TileTree): FeatureAppearanceProvider | undefined {\r\n if (this._sectionCutAppearanceProvider && this.view.displayStyle.settings.clipStyle.cutStyle.appearance)\r\n return this._sectionCutAppearanceProvider;\r\n\r\n return undefined;\r\n }\r\n\r\n protected override getHiddenLineSettings(_tree: TileTree): HiddenLine.Settings | undefined {\r\n return this._sectionClip ? this.view.displayStyle.settings.clipStyle.cutStyle.hiddenLine : undefined;\r\n }\r\n\r\n public override get castsShadows() {\r\n return true;\r\n }\r\n\r\n protected get isPlanProjection(): boolean {\r\n return false;\r\n }\r\n\r\n protected override getClipVolume(_tree: TileTree): RenderClipVolume | undefined {\r\n // ###TODO: reduce frequency with which getModelClip() is called\r\n return this.view.is3d() && !this._sectionClip ? this.view.getModelClip(this.model.id) : undefined;\r\n }\r\n\r\n public override createDrawArgs(context: SceneContext): TileDrawArgs | undefined {\r\n const args = super.createDrawArgs(context);\r\n if (args)\r\n args.intersectionClip = this._sectionClip;\r\n\r\n return args;\r\n }\r\n\r\n public get treeOwner(): TileTreeOwner {\r\n const newId = this.createTreeId(this.view, this._id.modelId);\r\n if (0 !== compareIModelTileTreeIds(newId, this._id.treeId) || this._forceNoInstancing !== this._id.forceNoInstancing) {\r\n this._id = {\r\n modelId: this._id.modelId,\r\n is3d: this._id.is3d,\r\n treeId: newId,\r\n isPlanProjection: this._id.isPlanProjection,\r\n forceNoInstancing: this._forceNoInstancing,\r\n };\r\n\r\n this._owner = primaryTreeSupplier.getOwner(this._id, this.model.iModel);\r\n }\r\n\r\n return this._owner;\r\n }\r\n\r\n protected createTreeId(view: ViewState, modelId: Id64String): PrimaryTileTreeId {\r\n if (this._sectionClip) {\r\n // We do this each time in case the ClipStyle's overrides are modified.\r\n // ###TODO: can we avoid that? Event listeners maybe?\r\n this._viewFlagOverrides = {\r\n ...this.view.displayStyle.settings.clipStyle.cutStyle.viewflags,\r\n // Do not clip out the cut geometry intersecting the clip planes.\r\n clipVolume: false,\r\n // The cut geometry is planar - it should win a z-fight.\r\n // Also we need to preserve this flag if this is a plan projection tile tree reference.\r\n forceSurfaceDiscard: true,\r\n };\r\n }\r\n\r\n const script = view.displayStyle.scheduleState;\r\n const animationId = undefined !== script ? script.getModelAnimationId(modelId) : undefined;\r\n\r\n const renderMode = this._viewFlagOverrides.renderMode ?? view.viewFlags.renderMode;\r\n const visibleEdges = this._viewFlagOverrides.visibleEdges ?? view.viewFlags.visibleEdges;\r\n const edgesRequired = visibleEdges || RenderMode.SmoothShade !== renderMode || IModelApp.tileAdmin.alwaysRequestEdges;\r\n const edges = edgesRequired ? (IModelApp.tileAdmin.enableIndexedEdges ? EdgeType.Indexed : EdgeType.NonIndexed) : EdgeType.None;\r\n const sectionCut = this._sectionClip?.clipString;\r\n return { type: BatchType.Primary, edges, animationId, sectionCut };\r\n }\r\n\r\n protected computeBaseTransform(tree: TileTree): Transform {\r\n return super.computeTransform(tree);\r\n }\r\n\r\n protected override computeTransform(tree: TileTree): Transform {\r\n const tf = this.computeBaseTransform(tree);\r\n return this.view.getModelDisplayTransform(this.model.id, tf);\r\n }\r\n}\r\n\r\n/** @internal */\r\nexport class AnimatedTreeReference extends PrimaryTreeReference {\r\n private readonly _branchId: string;\r\n\r\n public constructor(view: ViewState, model: GeometricModelState, transformNodeId: number) {\r\n super(view, model, false, transformNodeId);\r\n this._branchId = formatAnimationBranchId(model.id, transformNodeId);\r\n }\r\n\r\n protected override computeBaseTransform(tree: TileTree): Transform {\r\n const tf = super.computeBaseTransform(tree);\r\n const style = this.view.displayStyle;\r\n const script = style.scheduleScript;\r\n if (undefined === script || undefined === this._animationTransformNodeId)\r\n return tf;\r\n\r\n const timePoint = style.settings.timePoint ?? script.duration.low;\r\n const animTf = script.getTransform(this._id.modelId, this._animationTransformNodeId, timePoint);\r\n if (animTf)\r\n animTf.multiplyTransformTransform(tf, tf);\r\n\r\n return tf;\r\n }\r\n\r\n public override createDrawArgs(context: SceneContext): TileDrawArgs | undefined {\r\n const animBranch = context.viewport.target.animationBranches?.branchStates.get(this._branchId);\r\n if (animBranch && animBranch.omit)\r\n return undefined;\r\n\r\n const args = super.createDrawArgs(context);\r\n if (args?.tree && undefined !== this._animationTransformNodeId) {\r\n assert(args.tree instanceof IModelTileTree);\r\n args.boundingRange = args.tree.getTransformNodeRange(this._animationTransformNodeId);\r\n }\r\n\r\n return args;\r\n }\r\n}\r\n\r\nclass PlanProjectionTreeReference extends PrimaryTreeReference {\r\n private get _view3d() { return this.view as ViewState3d; }\r\n private readonly _baseTransform = Transform.createIdentity();\r\n\r\n public constructor(view: ViewState3d, model: GeometricModelState, sectionCut?: StringifiedClipVector) {\r\n super(view, model, true, undefined, sectionCut);\r\n this._viewFlagOverrides.forceSurfaceDiscard = true;\r\n }\r\n\r\n public override get castsShadows() {\r\n return false;\r\n }\r\n\r\n protected override get isPlanProjection(): boolean {\r\n return true;\r\n }\r\n\r\n public override createDrawArgs(context: SceneContext): TileDrawArgs | undefined {\r\n const args = super.createDrawArgs(context);\r\n if (undefined !== args && this._id.treeId.enforceDisplayPriority) {\r\n args.drawGraphics = () => { // eslint-disable-line @typescript-eslint/unbound-method\r\n const graphics = args.produceGraphics();\r\n if (undefined !== graphics) {\r\n const settings = this.getSettings();\r\n const asOverlay = undefined !== settings && settings.overlay;\r\n const transparency = settings?.transparency || 0;\r\n\r\n let elevation = settings?.elevation;\r\n if (undefined === elevation) {\r\n const tree = this.treeOwner.tileTree;\r\n if (tree) {\r\n assert(tree instanceof PlanProjectionTileTree);\r\n elevation = tree.baseElevation;\r\n } else {\r\n elevation = 0;\r\n }\r\n }\r\n\r\n context.outputGraphic(context.target.renderSystem.createGraphicLayerContainer(graphics, asOverlay, transparency, elevation));\r\n }\r\n };\r\n }\r\n\r\n return args;\r\n }\r\n\r\n protected override computeBaseTransform(tree: TileTree): Transform {\r\n assert(tree instanceof PlanProjectionTileTree);\r\n const transform = tree.iModelTransform.clone(this._baseTransform);\r\n\r\n const elevation = this.getSettings()?.elevation;\r\n if (undefined !== elevation)\r\n transform.origin.z = elevation;\r\n\r\n return transform;\r\n }\r\n\r\n public override draw(args: TileDrawArgs): void {\r\n const settings = this.getSettings();\r\n if (undefined === settings || settings.enforceDisplayPriority || !settings.overlay)\r\n super.draw(args);\r\n else\r\n args.context.withGraphicType(TileGraphicType.Overlay, () => args.tree.draw(args));\r\n }\r\n\r\n private getSettings() {\r\n return this._view3d.getDisplayStyle3d().settings.getPlanProjectionSettings(this.model.id);\r\n }\r\n\r\n protected override createTreeId(view: ViewState, modelId: Id64String): PrimaryTileTreeId {\r\n const id = super.createTreeId(view, modelId);\r\n const settings = this.getSettings();\r\n if (undefined !== settings && settings.enforceDisplayPriority)\r\n id.enforceDisplayPriority = true;\r\n\r\n return id;\r\n }\r\n}\r\n\r\nfunction isPlanProjection(view: ViewState, model: GeometricModelState): boolean {\r\n const model3d = view.is3d() ? model.asGeometricModel3d : undefined;\r\n return undefined !== model3d && model3d.isPlanProjection;\r\n}\r\n\r\nfunction createTreeRef(view: ViewState, model: GeometricModelState, sectionCut: StringifiedClipVector | undefined): PrimaryTreeReference {\r\n if (false !== IModelApp.renderSystem.options.planProjections && isPlanProjection(view, model))\r\n return new PlanProjectionTreeReference(view as ViewState3d, model, sectionCut);\r\n\r\n return new PrimaryTreeReference(view, model, false, undefined, sectionCut);\r\n}\r\n\r\n/** @internal */\r\nexport function createPrimaryTileTreeReference(view: ViewState, model: GeometricModelState): PrimaryTreeReference {\r\n return createTreeRef(view, model, undefined);\r\n}\r\n\r\nclass MaskTreeReference extends TileTreeReference {\r\n protected _id: PrimaryTreeId;\r\n private _owner: TileTreeOwner;\r\n public readonly model: GeometricModelState;\r\n public override get castsShadows() { return false; }\r\n public constructor(view: ViewState, model: GeometricModelState) {\r\n super();\r\n this.model = model;\r\n this._id = {\r\n modelId: model.id,\r\n is3d: model.is3d,\r\n treeId: this.createTreeId(),\r\n isPlanProjection: isPlanProjection(view, model),\r\n forceNoInstancing: false,\r\n };\r\n\r\n this._owner = primaryTreeSupplier.getOwner(this._id, model.iModel);\r\n }\r\n\r\n public get treeOwner(): TileTreeOwner {\r\n const newId = this.createTreeId();\r\n if (0 !== compareIModelTileTreeIds(newId, this._id.treeId)) {\r\n this._id = { modelId: this._id.modelId, is3d: this._id.is3d, treeId: newId, isPlanProjection: false, forceNoInstancing: false };\r\n this._owner = primaryTreeSupplier.getOwner(this._id, this.model.iModel);\r\n }\r\n\r\n return this._owner;\r\n }\r\n protected createTreeId(): PrimaryTileTreeId {\r\n return { type: BatchType.Primary, edges: EdgeType.None };\r\n }\r\n}\r\n\r\n/** @internal */\r\nexport function createMaskTreeReference(view: ViewState, model: GeometricModelState): TileTreeReference {\r\n return new MaskTreeReference(view, model);\r\n}\r\n\r\n/** @internal */\r\nexport class ModelMapLayerTileTreeReference extends MapLayerTileTreeReference {\r\n private _id: PrimaryTreeId;\r\n private _owner: TileTreeOwner;\r\n public get isPlanar() { return true; }\r\n public get activeClassifier() { return this._classifier; }\r\n public constructor(layerSettings: MapLayerSettings, private _classifier: SpatialClassifier, layerIndex: number, iModel: IModelConnection, private _source?: DisplayStyleState) {\r\n super(layerSettings, layerIndex, iModel);\r\n this._id = {\r\n modelId: _classifier.modelId,\r\n is3d: true, // model.is3d,\r\n treeId: this.createTreeId(),\r\n isPlanProjection: false, // isPlanProjection(view, model),\r\n forceNoInstancing: false,\r\n };\r\n\r\n this._owner = primaryTreeSupplier.getOwner(this._id, this.iModel);\r\n }\r\n\r\n protected createTreeId(): PrimaryTileTreeId {\r\n return { type: BatchType.Primary, edges: EdgeType.None };\r\n }\r\n\r\n public get treeOwner(): TileTreeOwner {\r\n const newId = this.createTreeId();\r\n if (0 !== compareIModelTileTreeIds(newId, this._id.treeId)) {\r\n this._id = { modelId: this._id.modelId, is3d: this._id.is3d, treeId: newId, isPlanProjection: false, forceNoInstancing: false };\r\n this._owner = primaryTreeSupplier.getOwner(this._id, this.iModel);\r\n }\r\n\r\n return this._owner;\r\n }\r\n public get viewFlags(): Partial<ViewFlagsProperties> {\r\n return {\r\n renderMode: RenderMode.SmoothShade,\r\n transparency: true, // Igored for point clouds as they don't support transparency.\r\n textures: true,\r\n lighting: false,\r\n shadows: false,\r\n monochrome: false,\r\n materials: false,\r\n ambientOcclusion: false,\r\n visibleEdges: true,\r\n hiddenEdges: false,\r\n fill: true,\r\n };\r\n }\r\n}\r\n/** @internal */\r\nexport function createModelMapLayerTileTreeReference(layerSettings: ModelMapLayerSettings, layerIndex: number, iModel: IModelConnection): ModelMapLayerTileTreeReference | undefined {\r\n const classifier = SpatialClassifier.fromModelMapLayer(layerSettings);\r\n return classifier ? new ModelMapLayerTileTreeReference(layerSettings, classifier, layerIndex, iModel) : undefined;\r\n}\r\n\r\n/** Provides [[TileTreeReference]]s for the loaded models present in a [[SpatialViewState]]'s [[ModelSelectorState]].\r\n * @internal\r\n */\r\nexport interface SpatialTileTreeReferences extends Iterable<TileTreeReference> {\r\n /** Supplies an iterator over all of the [[TileTreeReference]]s. */\r\n [Symbol.iterator](): Iterator<TileTreeReference>;\r\n /** Requests that the set of [[TileTreeReference]]s be updated to match the current state of the view, e.g., after the model selector's contents have changed. */\r\n update(): void;\r\n /** @see SpatialViewState.setTileTreeReferencesDeactivated. */\r\n setDeactivated(modelIds: Id64String | Id64String[] | undefined, deactivated: boolean | undefined, refs: \"all\" | \"animated\" | \"primary\" | \"section\" | number[]): void;\r\n}\r\n\r\n/** Provides [[TileTreeReference]]s for the loaded models present in a [[SpatialViewState]]'s [[ModelSelectorState]].\r\n * @internal\r\n */\r\nexport namespace SpatialTileTreeReferences {\r\n /** Create a SpatialTileTreeReferences object reflecting the contents of the specified view. */\r\n export function create(view: SpatialViewState): SpatialTileTreeReferences {\r\n return new SpatialRefs(view);\r\n }\r\n}\r\n\r\n/** Represents the [[TileTreeReference]]s associated with one model in a [[SpatialTileTreeReferences]]. */\r\nclass SpatialModelRefs implements Iterable<TileTreeReference> {\r\n /** The TileTreeReference representing the model's primary content. */\r\n private readonly _modelRef: TileTreeReference;\r\n /** TileTreeReferences representing nodes transformed by the view's schedule script. */\r\n private readonly _animatedRefs: PrimaryTreeReference[] = [];\r\n /** TileTreeReference providing cut geometry intersecting the view's clip volume. */\r\n private _sectionCutRef?: PrimaryTreeReference;\r\n /** Whether `this._modelRef` is a [[PrimaryTreeReference]] (as opposed to, e.g., a reality model tree reference). */\r\n private readonly _isPrimaryRef: boolean;\r\n\r\n public constructor(model: GeometricModel3dState, view: SpatialViewState) {\r\n this._modelRef = model.createTileTreeReference(view);\r\n this._isPrimaryRef = this._modelRef instanceof PrimaryTreeReference;\r\n }\r\n\r\n public *[Symbol.iterator](): Iterator<TileTreeReference> {\r\n if (!this._primaryRef || !this._primaryRef.deactivated)\r\n yield this._modelRef;\r\n\r\n for (const animated of this._animatedRefs)\r\n if (!animated.deactivated)\r\n yield animated;\r\n\r\n if (this._sectionCutRef && !this._sectionCutRef.deactivated)\r\n yield this._sectionCutRef;\r\n }\r\n\r\n public updateAnimated(script: RenderScheduleState | undefined): void {\r\n const ref = this._primaryRef;\r\n if (!ref)\r\n return;\r\n\r\n this._animatedRefs.length = 0;\r\n const nodeIds = script?.getTransformNodeIds(ref.model.id);\r\n if (nodeIds)\r\n for (const nodeId of nodeIds)\r\n this._animatedRefs.push(new AnimatedTreeReference(ref.view, ref.model, nodeId));\r\n }\r\n\r\n public updateSectionCut(clip: StringifiedClipVector | undefined): void {\r\n const ref = this._primaryRef;\r\n if (!ref) {\r\n assert(undefined === this._sectionCutRef);\r\n return;\r\n }\r\n\r\n // If the clip isn't supposed to apply to this model, don't produce cut geometry.\r\n const vfJson = clip ? ref.model.jsonProperties.viewFlagOverrides : undefined;\r\n const vfOvrs = vfJson ? { ...vfJson } : undefined;\r\n if (vfOvrs && !vfOvrs.clipVolume)\r\n clip = undefined;\r\n\r\n this._sectionCutRef = clip ? createTreeRef(ref.view, ref.model, clip) : undefined;\r\n }\r\n\r\n public setDeactivated(deactivated: boolean | undefined, which: \"all\" | \"animated\" | \"primary\" | \"section\" | number[]): void {\r\n if (typeof which !== \"string\") {\r\n for (const index of which)\r\n if (this._animatedRefs[index])\r\n this._animatedRefs[index].deactivated = deactivated ?? !this._animatedRefs[index].deactivated;\r\n\r\n return;\r\n }\r\n\r\n if ((\"all\" === which || \"primary\" === which) && this._primaryRef)\r\n this._primaryRef.deactivated = deactivated ?? !this._primaryRef.deactivated;\r\n\r\n if ((\"all\" === which || \"section\" === which) && this._sectionCutRef)\r\n this._sectionCutRef.deactivated = deactivated ?? !this._sectionCutRef.deactivated;\r\n\r\n if ((\"all\" === which || \"animated\" === which))\r\n for (const ref of this._animatedRefs)\r\n ref.deactivated = deactivated ?? !ref.deactivated;\r\n }\r\n\r\n private get _primaryRef(): PrimaryTreeReference | undefined {\r\n if (!this._isPrimaryRef)\r\n return undefined;\r\n\r\n assert(this._modelRef instanceof PrimaryTreeReference);\r\n return this._modelRef;\r\n }\r\n}\r\n\r\n/** Provides [[TileTreeReference]]s for the loaded models present in a [[SpatialViewState]]'s [[ModelSelectorState]]. */\r\nclass SpatialRefs implements SpatialTileTreeReferences {\r\n private _allLoaded = false;\r\n private readonly _view: SpatialViewState;\r\n private _refs = new Map<Id64String, SpatialModelRefs>();\r\n private _swapRefs = new Map<Id64String, SpatialModelRefs>();\r\n private _scheduleScript?: RenderScheduleState;\r\n private _sectionCut?: StringifiedClipVector;\r\n\r\n public constructor(view: SpatialViewState) {\r\n this._view = view;\r\n this._scheduleScript = view.displayStyle.scheduleState;\r\n this._sectionCut = this.getSectionCutFromView();\r\n }\r\n\r\n public update(): void {\r\n this._allLoaded = false;\r\n }\r\n\r\n public *[Symbol.iterator](): Iterator<TileTreeReference> {\r\n this.load();\r\n for (const modelRef of this._refs.values())\r\n for (const ref of modelRef)\r\n yield ref;\r\n }\r\n\r\n public setDeactivated(modelIds: Id64String | Id64String[] | undefined, deactivated: boolean, refs: \"all\" | \"animated\" | \"primary\" | \"section\" | number[]): void {\r\n if (undefined === modelIds) {\r\n for (const model of this._refs.values())\r\n model.setDeactivated(deactivated, refs);\r\n\r\n return;\r\n }\r\n\r\n if (typeof modelIds === \"string\")\r\n modelIds = [modelIds];\r\n\r\n for (const modelId of modelIds)\r\n this._refs.get(modelId)?.setDeactivated(deactivated, refs);\r\n }\r\n\r\n private load(): void {\r\n if (!this._allLoaded) {\r\n this._allLoaded = true;\r\n this.updateModels();\r\n }\r\n\r\n const script = this._view.displayStyle.scheduleState;\r\n if (script !== this._scheduleScript) {\r\n this._scheduleScript = script;\r\n for (const ref of this._refs.values())\r\n ref.updateAnimated(script);\r\n }\r\n\r\n const sectionCut = this.getSectionCutFromView();\r\n if (sectionCut?.clipString !== this._sectionCut?.clipString) {\r\n this._sectionCut = sectionCut;\r\n for (const ref of this._refs.values())\r\n ref.updateSectionCut(sectionCut);\r\n }\r\n }\r\n\r\n private getSectionCutFromView(): StringifiedClipVector | undefined {\r\n const wantCut = this._view.viewFlags.clipVolume && this._view.displayStyle.settings.clipStyle.produceCutGeometry;\r\n const clip = wantCut ? this._view.getViewClip() : undefined;\r\n return StringifiedClipVector.fromClipVector(clip);\r\n }\r\n\r\n /** Ensure this._refs contains a SpatialModelRefs for all loaded models in the model selector. */\r\n private updateModels(): void {\r\n const prev = this._refs;\r\n const cur = this._swapRefs;\r\n this._refs = cur;\r\n this._swapRefs = prev;\r\n cur.clear();\r\n\r\n for (const modelId of this._view.modelSelector.models) {\r\n let modelRefs = prev.get(modelId);\r\n if (!modelRefs) {\r\n const model = this._view.iModel.models.getLoaded(modelId)?.asGeometricModel3d;\r\n if (model) {\r\n modelRefs = new SpatialModelRefs(model, this._view);\r\n modelRefs.updateAnimated(this._scheduleScript);\r\n modelRefs.updateSectionCut(this._sectionCut);\r\n }\r\n }\r\n\r\n if (modelRefs)\r\n cur.set(modelId, modelRefs);\r\n }\r\n }\r\n}\r\n"]}
|
|
@@ -84,7 +84,6 @@ export declare namespace RealityModelTileTree {
|
|
|
84
84
|
protected _classifier?: SpatialClassifierTileTreeReference;
|
|
85
85
|
protected _mapDrapeTree?: TileTreeReference;
|
|
86
86
|
get modelId(): string;
|
|
87
|
-
get classifiers(): SpatialClassifiers | undefined;
|
|
88
87
|
get planarClipMask(): PlanarClipMaskState | undefined;
|
|
89
88
|
set planarClipMask(planarClipMask: PlanarClipMaskState | undefined);
|
|
90
89
|
get planarClipMaskPriority(): number;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"RealityModelTileTree.d.ts","sourceRoot":"","sources":["../../../src/tile/RealityModelTileTree.ts"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"RealityModelTileTree.d.ts","sourceRoot":"","sources":["../../../src/tile/RealityModelTileTree.ts"],"names":[],"mappings":"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"}
|
|
@@ -423,7 +423,7 @@ export class RealityModelTileTree extends RealityTileTree {
|
|
|
423
423
|
this._classifier = createClassifierTileTreeReference(props.classifiers, this, props.iModel, props.source);
|
|
424
424
|
}
|
|
425
425
|
get modelId() { return this._modelId; }
|
|
426
|
-
get classifiers() { return undefined !== this._classifier ? this._classifier.classifiers : undefined; }
|
|
426
|
+
// public get classifiers(): SpatialClassifiers | undefined { return undefined !== this._classifier ? this._classifier.classifiers : undefined; }
|
|
427
427
|
get planarClipMask() { return this._planarClipMask; }
|
|
428
428
|
set planarClipMask(planarClipMask) { this._planarClipMask = planarClipMask; }
|
|
429
429
|
get planarClipMaskPriority() {
|