@itwin/core-frontend 3.3.0-dev.9 → 3.3.2
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/CHANGELOG.md +90 -1
- package/lib/cjs/DisplayStyleState.d.ts +80 -31
- package/lib/cjs/DisplayStyleState.d.ts.map +1 -1
- package/lib/cjs/DisplayStyleState.js +150 -89
- package/lib/cjs/DisplayStyleState.js.map +1 -1
- package/lib/cjs/DrawingViewState.js +1 -1
- package/lib/cjs/DrawingViewState.js.map +1 -1
- package/lib/cjs/EmphasizeElements.d.ts.map +1 -1
- package/lib/cjs/EmphasizeElements.js +5 -0
- package/lib/cjs/EmphasizeElements.js.map +1 -1
- package/lib/cjs/EntityState.d.ts +5 -5
- package/lib/cjs/EntityState.d.ts.map +1 -1
- package/lib/cjs/EntityState.js.map +1 -1
- package/lib/cjs/IModelApp.d.ts +5 -0
- package/lib/cjs/IModelApp.d.ts.map +1 -1
- package/lib/cjs/IModelApp.js +16 -12
- package/lib/cjs/IModelApp.js.map +1 -1
- package/lib/cjs/IModelConnection.d.ts +43 -3
- package/lib/cjs/IModelConnection.d.ts.map +1 -1
- package/lib/cjs/IModelConnection.js +29 -3
- package/lib/cjs/IModelConnection.js.map +1 -1
- package/lib/cjs/LocalhostIpcApp.d.ts.map +1 -1
- package/lib/cjs/LocalhostIpcApp.js +10 -0
- package/lib/cjs/LocalhostIpcApp.js.map +1 -1
- package/lib/cjs/NoRenderApp.d.ts.map +1 -1
- package/lib/cjs/NoRenderApp.js +1 -0
- package/lib/cjs/NoRenderApp.js.map +1 -1
- package/lib/cjs/RealityDataSource.d.ts.map +1 -1
- package/lib/cjs/RealityDataSource.js +6 -2
- package/lib/cjs/RealityDataSource.js.map +1 -1
- package/lib/cjs/SelectionSet.d.ts +30 -4
- package/lib/cjs/SelectionSet.d.ts.map +1 -1
- package/lib/cjs/SelectionSet.js +26 -2
- package/lib/cjs/SelectionSet.js.map +1 -1
- package/lib/cjs/SheetViewState.js +1 -1
- package/lib/cjs/SheetViewState.js.map +1 -1
- package/lib/cjs/SubCategoriesCache.d.ts +3 -0
- package/lib/cjs/SubCategoriesCache.d.ts.map +1 -1
- package/lib/cjs/SubCategoriesCache.js +34 -0
- package/lib/cjs/SubCategoriesCache.js.map +1 -1
- package/lib/cjs/TentativePoint.js +1 -1
- package/lib/cjs/TentativePoint.js.map +1 -1
- package/lib/cjs/ViewState.d.ts +2 -3
- package/lib/cjs/ViewState.d.ts.map +1 -1
- package/lib/cjs/ViewState.js +7 -3
- package/lib/cjs/ViewState.js.map +1 -1
- package/lib/cjs/Viewport.d.ts +10 -10
- package/lib/cjs/Viewport.d.ts.map +1 -1
- package/lib/cjs/Viewport.js +19 -14
- package/lib/cjs/Viewport.js.map +1 -1
- package/lib/cjs/core-frontend.d.ts +0 -2
- package/lib/cjs/core-frontend.d.ts.map +1 -1
- package/lib/cjs/core-frontend.js +0 -2
- package/lib/cjs/core-frontend.js.map +1 -1
- package/lib/cjs/extension/ExtensionAdmin.d.ts +5 -2
- package/lib/cjs/extension/ExtensionAdmin.d.ts.map +1 -1
- package/lib/cjs/extension/ExtensionAdmin.js +24 -6
- package/lib/cjs/extension/ExtensionAdmin.js.map +1 -1
- package/lib/cjs/extension/providers/RemoteExtensionProvider.d.ts +0 -2
- package/lib/cjs/extension/providers/RemoteExtensionProvider.d.ts.map +1 -1
- package/lib/cjs/extension/providers/RemoteExtensionProvider.js +9 -22
- package/lib/cjs/extension/providers/RemoteExtensionProvider.js.map +1 -1
- package/lib/cjs/render/FeatureSymbology.js +2 -2
- package/lib/cjs/render/FeatureSymbology.js.map +1 -1
- package/lib/cjs/render/GraphicBranch.d.ts +15 -9
- package/lib/cjs/render/GraphicBranch.d.ts.map +1 -1
- package/lib/cjs/render/GraphicBranch.js +38 -1
- package/lib/cjs/render/GraphicBranch.js.map +1 -1
- package/lib/cjs/render/RenderSystem.d.ts +5 -0
- package/lib/cjs/render/RenderSystem.d.ts.map +1 -1
- package/lib/cjs/render/RenderSystem.js.map +1 -1
- package/lib/cjs/render/primitives/EdgeParams.d.ts +11 -0
- package/lib/cjs/render/primitives/EdgeParams.d.ts.map +1 -1
- package/lib/cjs/render/primitives/EdgeParams.js +36 -29
- package/lib/cjs/render/primitives/EdgeParams.js.map +1 -1
- package/lib/cjs/render/primitives/VertexTable.d.ts +11 -4
- package/lib/cjs/render/primitives/VertexTable.d.ts.map +1 -1
- package/lib/cjs/render/primitives/VertexTable.js +13 -6
- package/lib/cjs/render/primitives/VertexTable.js.map +1 -1
- package/lib/cjs/render/primitives/VertexTableSplitter.d.ts +41 -0
- package/lib/cjs/render/primitives/VertexTableSplitter.d.ts.map +1 -0
- package/lib/cjs/render/primitives/VertexTableSplitter.js +662 -0
- package/lib/cjs/render/primitives/VertexTableSplitter.js.map +1 -0
- package/lib/cjs/render/primitives/geometry/GeometryListBuilder.d.ts.map +1 -1
- package/lib/cjs/render/primitives/geometry/GeometryListBuilder.js +3 -1
- package/lib/cjs/render/primitives/geometry/GeometryListBuilder.js.map +1 -1
- package/lib/cjs/render/webgl/DrawCommand.js +1 -1
- package/lib/cjs/render/webgl/DrawCommand.js.map +1 -1
- package/lib/cjs/render/webgl/FeatureOverrides.d.ts +4 -1
- package/lib/cjs/render/webgl/FeatureOverrides.d.ts.map +1 -1
- package/lib/cjs/render/webgl/FeatureOverrides.js +56 -26
- package/lib/cjs/render/webgl/FeatureOverrides.js.map +1 -1
- package/lib/cjs/render/webgl/RealityMesh.d.ts +1 -1
- package/lib/cjs/render/webgl/RealityMesh.d.ts.map +1 -1
- package/lib/cjs/render/webgl/RealityMesh.js +0 -2
- package/lib/cjs/render/webgl/RealityMesh.js.map +1 -1
- package/lib/cjs/render/webgl/ShaderProgram.js +1 -1
- package/lib/cjs/render/webgl/ShaderProgram.js.map +1 -1
- package/lib/cjs/render/webgl/Target.d.ts +2 -1
- package/lib/cjs/render/webgl/Target.d.ts.map +1 -1
- package/lib/cjs/render/webgl/Target.js +1 -0
- package/lib/cjs/render/webgl/Target.js.map +1 -1
- package/lib/cjs/render/webgl/UniformHandle.d.ts +2 -1
- package/lib/cjs/render/webgl/UniformHandle.d.ts.map +1 -1
- package/lib/cjs/render/webgl/UniformHandle.js +15 -3
- package/lib/cjs/render/webgl/UniformHandle.js.map +1 -1
- package/lib/cjs/render/webgl/glsl/RealityMesh.d.ts.map +1 -1
- package/lib/cjs/render/webgl/glsl/RealityMesh.js +5 -2
- package/lib/cjs/render/webgl/glsl/RealityMesh.js.map +1 -1
- package/lib/cjs/render-primitives.d.ts +1 -0
- package/lib/cjs/render-primitives.d.ts.map +1 -1
- package/lib/cjs/render-primitives.js +1 -0
- package/lib/cjs/render-primitives.js.map +1 -1
- package/lib/cjs/tile/ClassifierTileTree.d.ts.map +1 -1
- package/lib/cjs/tile/ClassifierTileTree.js +8 -8
- package/lib/cjs/tile/ClassifierTileTree.js.map +1 -1
- package/lib/cjs/tile/IModelTile.d.ts.map +1 -1
- package/lib/cjs/tile/IModelTile.js +1 -0
- package/lib/cjs/tile/IModelTile.js.map +1 -1
- package/lib/cjs/tile/IModelTileTree.d.ts +3 -1
- package/lib/cjs/tile/IModelTileTree.d.ts.map +1 -1
- package/lib/cjs/tile/IModelTileTree.js +1 -0
- package/lib/cjs/tile/IModelTileTree.js.map +1 -1
- package/lib/cjs/tile/ImdlReader.d.ts +9 -4
- package/lib/cjs/tile/ImdlReader.d.ts.map +1 -1
- package/lib/cjs/tile/ImdlReader.js +174 -60
- package/lib/cjs/tile/ImdlReader.js.map +1 -1
- package/lib/cjs/tile/PrimaryTileTree.d.ts +8 -7
- package/lib/cjs/tile/PrimaryTileTree.d.ts.map +1 -1
- package/lib/cjs/tile/PrimaryTileTree.js +30 -25
- package/lib/cjs/tile/PrimaryTileTree.js.map +1 -1
- package/lib/cjs/tile/RealityTileTree.d.ts.map +1 -1
- package/lib/cjs/tile/RealityTileTree.js +1 -0
- package/lib/cjs/tile/RealityTileTree.js.map +1 -1
- package/lib/cjs/tile/TileAdmin.d.ts +21 -2
- package/lib/cjs/tile/TileAdmin.d.ts.map +1 -1
- package/lib/cjs/tile/TileAdmin.js +32 -12
- package/lib/cjs/tile/TileAdmin.js.map +1 -1
- package/lib/cjs/tile/map/ImageryProviders/ArcGISMapLayerImageryProvider.d.ts.map +1 -1
- package/lib/cjs/tile/map/ImageryProviders/ArcGISMapLayerImageryProvider.js +46 -2
- package/lib/cjs/tile/map/ImageryProviders/ArcGISMapLayerImageryProvider.js.map +1 -1
- package/lib/cjs/tile/map/MapCartoRectangle.d.ts +1 -0
- package/lib/cjs/tile/map/MapCartoRectangle.d.ts.map +1 -1
- package/lib/cjs/tile/map/MapCartoRectangle.js +1 -0
- package/lib/cjs/tile/map/MapCartoRectangle.js.map +1 -1
- package/lib/cjs/tile/map/MapLayerFormatRegistry.d.ts +2 -1
- 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/MapLayerImageryProvider.d.ts +2 -0
- package/lib/cjs/tile/map/MapLayerImageryProvider.d.ts.map +1 -1
- package/lib/cjs/tile/map/MapLayerImageryProvider.js +23 -9
- package/lib/cjs/tile/map/MapLayerImageryProvider.js.map +1 -1
- package/lib/cjs/tile/map/MapLayerSources.d.ts +14 -9
- package/lib/cjs/tile/map/MapLayerSources.d.ts.map +1 -1
- package/lib/cjs/tile/map/MapLayerSources.js +14 -6
- package/lib/cjs/tile/map/MapLayerSources.js.map +1 -1
- package/lib/cjs/tools/ClipViewTool.d.ts.map +1 -1
- package/lib/cjs/tools/ClipViewTool.js +25 -2
- package/lib/cjs/tools/ClipViewTool.js.map +1 -1
- package/lib/cjs/tools/PrimitiveTool.js +4 -4
- package/lib/cjs/tools/PrimitiveTool.js.map +1 -1
- package/lib/cjs/tools/Tool.d.ts +7 -7
- package/lib/cjs/tools/Tool.js +7 -7
- package/lib/cjs/tools/Tool.js.map +1 -1
- package/lib/cjs/tools/ToolAdmin.d.ts.map +1 -1
- package/lib/cjs/tools/ToolAdmin.js +25 -10
- package/lib/cjs/tools/ToolAdmin.js.map +1 -1
- package/lib/esm/DisplayStyleState.d.ts +80 -31
- package/lib/esm/DisplayStyleState.d.ts.map +1 -1
- package/lib/esm/DisplayStyleState.js +150 -89
- package/lib/esm/DisplayStyleState.js.map +1 -1
- package/lib/esm/DrawingViewState.js +1 -1
- package/lib/esm/DrawingViewState.js.map +1 -1
- package/lib/esm/EmphasizeElements.d.ts.map +1 -1
- package/lib/esm/EmphasizeElements.js +5 -0
- package/lib/esm/EmphasizeElements.js.map +1 -1
- package/lib/esm/EntityState.d.ts +5 -5
- package/lib/esm/EntityState.d.ts.map +1 -1
- package/lib/esm/EntityState.js.map +1 -1
- package/lib/esm/IModelApp.d.ts +5 -0
- package/lib/esm/IModelApp.d.ts.map +1 -1
- package/lib/esm/IModelApp.js +16 -12
- package/lib/esm/IModelApp.js.map +1 -1
- package/lib/esm/IModelConnection.d.ts +43 -3
- package/lib/esm/IModelConnection.d.ts.map +1 -1
- package/lib/esm/IModelConnection.js +29 -3
- package/lib/esm/IModelConnection.js.map +1 -1
- package/lib/esm/LocalhostIpcApp.d.ts.map +1 -1
- package/lib/esm/LocalhostIpcApp.js +11 -1
- package/lib/esm/LocalhostIpcApp.js.map +1 -1
- package/lib/esm/NoRenderApp.d.ts.map +1 -1
- package/lib/esm/NoRenderApp.js +1 -0
- package/lib/esm/NoRenderApp.js.map +1 -1
- package/lib/esm/RealityDataSource.d.ts.map +1 -1
- package/lib/esm/RealityDataSource.js +6 -2
- package/lib/esm/RealityDataSource.js.map +1 -1
- package/lib/esm/SelectionSet.d.ts +30 -4
- package/lib/esm/SelectionSet.d.ts.map +1 -1
- package/lib/esm/SelectionSet.js +26 -2
- package/lib/esm/SelectionSet.js.map +1 -1
- package/lib/esm/SheetViewState.js +1 -1
- package/lib/esm/SheetViewState.js.map +1 -1
- package/lib/esm/SubCategoriesCache.d.ts +3 -0
- package/lib/esm/SubCategoriesCache.d.ts.map +1 -1
- package/lib/esm/SubCategoriesCache.js +34 -0
- package/lib/esm/SubCategoriesCache.js.map +1 -1
- package/lib/esm/TentativePoint.js +1 -1
- package/lib/esm/TentativePoint.js.map +1 -1
- package/lib/esm/ViewState.d.ts +2 -3
- package/lib/esm/ViewState.d.ts.map +1 -1
- package/lib/esm/ViewState.js +7 -3
- package/lib/esm/ViewState.js.map +1 -1
- package/lib/esm/Viewport.d.ts +10 -10
- package/lib/esm/Viewport.d.ts.map +1 -1
- package/lib/esm/Viewport.js +19 -14
- package/lib/esm/Viewport.js.map +1 -1
- package/lib/esm/core-frontend.d.ts +0 -2
- package/lib/esm/core-frontend.d.ts.map +1 -1
- package/lib/esm/core-frontend.js +0 -2
- package/lib/esm/core-frontend.js.map +1 -1
- package/lib/esm/extension/ExtensionAdmin.d.ts +5 -2
- package/lib/esm/extension/ExtensionAdmin.d.ts.map +1 -1
- package/lib/esm/extension/ExtensionAdmin.js +24 -6
- package/lib/esm/extension/ExtensionAdmin.js.map +1 -1
- package/lib/esm/extension/providers/RemoteExtensionProvider.d.ts +0 -2
- package/lib/esm/extension/providers/RemoteExtensionProvider.d.ts.map +1 -1
- package/lib/esm/extension/providers/RemoteExtensionProvider.js +9 -22
- package/lib/esm/extension/providers/RemoteExtensionProvider.js.map +1 -1
- package/lib/esm/render/FeatureSymbology.js +2 -2
- package/lib/esm/render/FeatureSymbology.js.map +1 -1
- package/lib/esm/render/GraphicBranch.d.ts +15 -9
- package/lib/esm/render/GraphicBranch.d.ts.map +1 -1
- package/lib/esm/render/GraphicBranch.js +36 -0
- package/lib/esm/render/GraphicBranch.js.map +1 -1
- package/lib/esm/render/RenderSystem.d.ts +5 -0
- package/lib/esm/render/RenderSystem.d.ts.map +1 -1
- package/lib/esm/render/RenderSystem.js.map +1 -1
- package/lib/esm/render/primitives/EdgeParams.d.ts +11 -0
- package/lib/esm/render/primitives/EdgeParams.d.ts.map +1 -1
- package/lib/esm/render/primitives/EdgeParams.js +34 -28
- package/lib/esm/render/primitives/EdgeParams.js.map +1 -1
- package/lib/esm/render/primitives/VertexTable.d.ts +11 -4
- package/lib/esm/render/primitives/VertexTable.d.ts.map +1 -1
- package/lib/esm/render/primitives/VertexTable.js +14 -7
- package/lib/esm/render/primitives/VertexTable.js.map +1 -1
- package/lib/esm/render/primitives/VertexTableSplitter.d.ts +41 -0
- package/lib/esm/render/primitives/VertexTableSplitter.d.ts.map +1 -0
- package/lib/esm/render/primitives/VertexTableSplitter.js +655 -0
- package/lib/esm/render/primitives/VertexTableSplitter.js.map +1 -0
- package/lib/esm/render/primitives/geometry/GeometryListBuilder.d.ts.map +1 -1
- package/lib/esm/render/primitives/geometry/GeometryListBuilder.js +3 -1
- package/lib/esm/render/primitives/geometry/GeometryListBuilder.js.map +1 -1
- package/lib/esm/render/webgl/DrawCommand.js +1 -1
- package/lib/esm/render/webgl/DrawCommand.js.map +1 -1
- package/lib/esm/render/webgl/FeatureOverrides.d.ts +4 -1
- package/lib/esm/render/webgl/FeatureOverrides.d.ts.map +1 -1
- package/lib/esm/render/webgl/FeatureOverrides.js +56 -26
- package/lib/esm/render/webgl/FeatureOverrides.js.map +1 -1
- package/lib/esm/render/webgl/RealityMesh.d.ts +1 -1
- package/lib/esm/render/webgl/RealityMesh.d.ts.map +1 -1
- package/lib/esm/render/webgl/RealityMesh.js +0 -2
- package/lib/esm/render/webgl/RealityMesh.js.map +1 -1
- package/lib/esm/render/webgl/ShaderProgram.js +1 -1
- package/lib/esm/render/webgl/ShaderProgram.js.map +1 -1
- package/lib/esm/render/webgl/Target.d.ts +2 -1
- package/lib/esm/render/webgl/Target.d.ts.map +1 -1
- package/lib/esm/render/webgl/Target.js +1 -0
- package/lib/esm/render/webgl/Target.js.map +1 -1
- package/lib/esm/render/webgl/UniformHandle.d.ts +2 -1
- package/lib/esm/render/webgl/UniformHandle.d.ts.map +1 -1
- package/lib/esm/render/webgl/UniformHandle.js +15 -3
- package/lib/esm/render/webgl/UniformHandle.js.map +1 -1
- package/lib/esm/render/webgl/glsl/RealityMesh.d.ts.map +1 -1
- package/lib/esm/render/webgl/glsl/RealityMesh.js +5 -2
- package/lib/esm/render/webgl/glsl/RealityMesh.js.map +1 -1
- package/lib/esm/render-primitives.d.ts +1 -0
- package/lib/esm/render-primitives.d.ts.map +1 -1
- package/lib/esm/render-primitives.js +1 -0
- package/lib/esm/render-primitives.js.map +1 -1
- package/lib/esm/tile/ClassifierTileTree.d.ts.map +1 -1
- package/lib/esm/tile/ClassifierTileTree.js +10 -10
- package/lib/esm/tile/ClassifierTileTree.js.map +1 -1
- package/lib/esm/tile/IModelTile.d.ts.map +1 -1
- package/lib/esm/tile/IModelTile.js +1 -0
- package/lib/esm/tile/IModelTile.js.map +1 -1
- package/lib/esm/tile/IModelTileTree.d.ts +3 -1
- package/lib/esm/tile/IModelTileTree.d.ts.map +1 -1
- package/lib/esm/tile/IModelTileTree.js +1 -0
- package/lib/esm/tile/IModelTileTree.js.map +1 -1
- package/lib/esm/tile/ImdlReader.d.ts +9 -4
- package/lib/esm/tile/ImdlReader.d.ts.map +1 -1
- package/lib/esm/tile/ImdlReader.js +174 -60
- package/lib/esm/tile/ImdlReader.js.map +1 -1
- package/lib/esm/tile/PrimaryTileTree.d.ts +8 -7
- package/lib/esm/tile/PrimaryTileTree.d.ts.map +1 -1
- package/lib/esm/tile/PrimaryTileTree.js +31 -26
- package/lib/esm/tile/PrimaryTileTree.js.map +1 -1
- package/lib/esm/tile/RealityTileTree.d.ts.map +1 -1
- package/lib/esm/tile/RealityTileTree.js +1 -0
- package/lib/esm/tile/RealityTileTree.js.map +1 -1
- package/lib/esm/tile/TileAdmin.d.ts +21 -2
- package/lib/esm/tile/TileAdmin.d.ts.map +1 -1
- package/lib/esm/tile/TileAdmin.js +33 -13
- package/lib/esm/tile/TileAdmin.js.map +1 -1
- package/lib/esm/tile/map/ImageryProviders/ArcGISMapLayerImageryProvider.d.ts.map +1 -1
- package/lib/esm/tile/map/ImageryProviders/ArcGISMapLayerImageryProvider.js +46 -2
- package/lib/esm/tile/map/ImageryProviders/ArcGISMapLayerImageryProvider.js.map +1 -1
- package/lib/esm/tile/map/MapCartoRectangle.d.ts +1 -0
- package/lib/esm/tile/map/MapCartoRectangle.d.ts.map +1 -1
- package/lib/esm/tile/map/MapCartoRectangle.js +1 -0
- package/lib/esm/tile/map/MapCartoRectangle.js.map +1 -1
- package/lib/esm/tile/map/MapLayerFormatRegistry.d.ts +2 -1
- 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/MapLayerImageryProvider.d.ts +2 -0
- package/lib/esm/tile/map/MapLayerImageryProvider.d.ts.map +1 -1
- package/lib/esm/tile/map/MapLayerImageryProvider.js +24 -10
- package/lib/esm/tile/map/MapLayerImageryProvider.js.map +1 -1
- package/lib/esm/tile/map/MapLayerSources.d.ts +14 -9
- package/lib/esm/tile/map/MapLayerSources.d.ts.map +1 -1
- package/lib/esm/tile/map/MapLayerSources.js +14 -6
- package/lib/esm/tile/map/MapLayerSources.js.map +1 -1
- package/lib/esm/tools/ClipViewTool.d.ts.map +1 -1
- package/lib/esm/tools/ClipViewTool.js +25 -2
- package/lib/esm/tools/ClipViewTool.js.map +1 -1
- package/lib/esm/tools/PrimitiveTool.js +4 -4
- package/lib/esm/tools/PrimitiveTool.js.map +1 -1
- package/lib/esm/tools/Tool.d.ts +7 -7
- package/lib/esm/tools/Tool.js +7 -7
- package/lib/esm/tools/Tool.js.map +1 -1
- package/lib/esm/tools/ToolAdmin.d.ts.map +1 -1
- package/lib/esm/tools/ToolAdmin.js +25 -10
- package/lib/esm/tools/ToolAdmin.js.map +1 -1
- package/package.json +27 -27
- package/lib/cjs/RenderScheduleState.d.ts +0 -24
- package/lib/cjs/RenderScheduleState.d.ts.map +0 -1
- package/lib/cjs/RenderScheduleState.js +0 -76
- package/lib/cjs/RenderScheduleState.js.map +0 -1
- package/lib/cjs/extension/providers/ExtensionServiceClient.d.ts +0 -52
- package/lib/cjs/extension/providers/ExtensionServiceClient.d.ts.map +0 -1
- package/lib/cjs/extension/providers/ExtensionServiceClient.js +0 -131
- package/lib/cjs/extension/providers/ExtensionServiceClient.js.map +0 -1
- package/lib/cjs/extension/providers/ServiceExtensionProvider.d.ts +0 -37
- package/lib/cjs/extension/providers/ServiceExtensionProvider.d.ts.map +0 -1
- package/lib/cjs/extension/providers/ServiceExtensionProvider.js +0 -84
- package/lib/cjs/extension/providers/ServiceExtensionProvider.js.map +0 -1
- package/lib/esm/RenderScheduleState.d.ts +0 -24
- package/lib/esm/RenderScheduleState.d.ts.map +0 -1
- package/lib/esm/RenderScheduleState.js +0 -71
- package/lib/esm/RenderScheduleState.js.map +0 -1
- package/lib/esm/extension/providers/ExtensionServiceClient.d.ts +0 -52
- package/lib/esm/extension/providers/ExtensionServiceClient.d.ts.map +0 -1
- package/lib/esm/extension/providers/ExtensionServiceClient.js +0 -127
- package/lib/esm/extension/providers/ExtensionServiceClient.js.map +0 -1
- package/lib/esm/extension/providers/ServiceExtensionProvider.d.ts +0 -37
- package/lib/esm/extension/providers/ServiceExtensionProvider.d.ts.map +0 -1
- package/lib/esm/extension/providers/ServiceExtensionProvider.js +0 -80
- package/lib/esm/extension/providers/ServiceExtensionProvider.js.map +0 -1
|
@@ -0,0 +1,655 @@
|
|
|
1
|
+
/*---------------------------------------------------------------------------------------------
|
|
2
|
+
* Copyright (c) Bentley Systems, Incorporated. All rights reserved.
|
|
3
|
+
* See LICENSE.md in the project root for license terms and full copyright notice.
|
|
4
|
+
*--------------------------------------------------------------------------------------------*/
|
|
5
|
+
/** @packageDocumentation
|
|
6
|
+
* @module Rendering
|
|
7
|
+
*/
|
|
8
|
+
import { assert } from "@itwin/core-bentley";
|
|
9
|
+
import { ColorDef } from "@itwin/core-common";
|
|
10
|
+
import { computeDimensions, MeshParams, VertexIndices, VertexTable, } from "./VertexTable";
|
|
11
|
+
import { PointStringParams } from "./PointStringParams";
|
|
12
|
+
import { PolylineParams } from "./PolylineParams";
|
|
13
|
+
import { calculateEdgeTableParams } from "./EdgeParams";
|
|
14
|
+
import { createSurfaceMaterial } from "./SurfaceParams";
|
|
15
|
+
import { IModelApp } from "../../IModelApp";
|
|
16
|
+
/** Incrementally builds an array of unsigned 8-, 16-, or 32-bit integers.
|
|
17
|
+
* ###TODO move to core-bentley package?
|
|
18
|
+
*/
|
|
19
|
+
class TypedArrayBuilder {
|
|
20
|
+
constructor(constructor, options) {
|
|
21
|
+
var _a, _b;
|
|
22
|
+
this._constructor = constructor;
|
|
23
|
+
this._data = new constructor((_a = options === null || options === void 0 ? void 0 : options.initialCapacity) !== null && _a !== void 0 ? _a : 0);
|
|
24
|
+
this._growthFactor = Math.max(1.0, (_b = options === null || options === void 0 ? void 0 : options.growthFactor) !== null && _b !== void 0 ? _b : 1.5);
|
|
25
|
+
this._length = 0;
|
|
26
|
+
}
|
|
27
|
+
/** The number of integer values currently in the array. */
|
|
28
|
+
get length() {
|
|
29
|
+
return this._length;
|
|
30
|
+
}
|
|
31
|
+
/** The number of integers that can fit in the memory currently allocated for the array. */
|
|
32
|
+
get capacity() {
|
|
33
|
+
return this._data.length;
|
|
34
|
+
}
|
|
35
|
+
/** Ensure that [[capacity]] is at least equal to `newCapacity`. */
|
|
36
|
+
ensureCapacity(newCapacity) {
|
|
37
|
+
if (this.capacity >= newCapacity)
|
|
38
|
+
return this.capacity;
|
|
39
|
+
assert(this._growthFactor >= 1.0);
|
|
40
|
+
newCapacity = Math.ceil(newCapacity * this._growthFactor);
|
|
41
|
+
const prevData = this._data;
|
|
42
|
+
this._data = new this._constructor(newCapacity);
|
|
43
|
+
this._data.set(prevData, 0);
|
|
44
|
+
assert(this.capacity === newCapacity);
|
|
45
|
+
return this.capacity;
|
|
46
|
+
}
|
|
47
|
+
/** Append an integer, resizing if necessary. */
|
|
48
|
+
push(value) {
|
|
49
|
+
this.ensureCapacity(this.length + 1);
|
|
50
|
+
this._data[this.length] = value;
|
|
51
|
+
++this._length;
|
|
52
|
+
}
|
|
53
|
+
/** Append an array of values, resizing (at most once) if necessary. */
|
|
54
|
+
append(values) {
|
|
55
|
+
const newLength = this.length + values.length;
|
|
56
|
+
this.ensureCapacity(newLength);
|
|
57
|
+
this._data.set(values, this.length);
|
|
58
|
+
this._length = newLength;
|
|
59
|
+
}
|
|
60
|
+
/** Obtain the finished array. Note: this may return a direct reference to the underlying typed array, or a copy.
|
|
61
|
+
* If `includeUnusedCapacity` is true then additional memory that was allocated but not used will be included.
|
|
62
|
+
*/
|
|
63
|
+
toTypedArray(includeUnusedCapacity = false) {
|
|
64
|
+
if (includeUnusedCapacity)
|
|
65
|
+
return this._data;
|
|
66
|
+
const subarray = this._data.subarray(0, this.length);
|
|
67
|
+
assert(subarray instanceof this._constructor);
|
|
68
|
+
assert(subarray.buffer === this._data.buffer);
|
|
69
|
+
return subarray;
|
|
70
|
+
}
|
|
71
|
+
}
|
|
72
|
+
class Uint8ArrayBuilder extends TypedArrayBuilder {
|
|
73
|
+
constructor(options) {
|
|
74
|
+
super(Uint8Array, options);
|
|
75
|
+
}
|
|
76
|
+
}
|
|
77
|
+
/* not currently used.
|
|
78
|
+
class Uint16ArrayBuilder extends TypedArrayBuilder<Uint16Array> {
|
|
79
|
+
public constructor(options?: TypedArrayBuilderOptions) {
|
|
80
|
+
super(Uint16Array, options);
|
|
81
|
+
}
|
|
82
|
+
}
|
|
83
|
+
*/
|
|
84
|
+
class Uint32ArrayBuilder extends TypedArrayBuilder {
|
|
85
|
+
constructor(options) {
|
|
86
|
+
super(Uint32Array, options);
|
|
87
|
+
}
|
|
88
|
+
toUint8Array(includeUnusedCapacity = false) {
|
|
89
|
+
if (includeUnusedCapacity)
|
|
90
|
+
return new Uint8Array(this._data.buffer);
|
|
91
|
+
return new Uint8Array(this._data.buffer, 0, this.length * 4);
|
|
92
|
+
}
|
|
93
|
+
}
|
|
94
|
+
/** Builds up a [[VertexIndices]].
|
|
95
|
+
* Exported strictly for tests.
|
|
96
|
+
*/
|
|
97
|
+
export class IndexBuffer {
|
|
98
|
+
constructor(initialCapacity = 3) {
|
|
99
|
+
this._index32 = new Uint32Array(1);
|
|
100
|
+
this._index8 = new Uint8Array(this._index32.buffer, 0, 3);
|
|
101
|
+
this._builder = new Uint8ArrayBuilder({ initialCapacity: initialCapacity * 3 });
|
|
102
|
+
}
|
|
103
|
+
get numIndices() {
|
|
104
|
+
assert((this._builder.length % 3) === 0);
|
|
105
|
+
return this._builder.length / 3;
|
|
106
|
+
}
|
|
107
|
+
push(index) {
|
|
108
|
+
this._index32[0] = index;
|
|
109
|
+
this._builder.append(this._index8);
|
|
110
|
+
}
|
|
111
|
+
toVertexIndices() {
|
|
112
|
+
return new VertexIndices(this._builder.toTypedArray());
|
|
113
|
+
}
|
|
114
|
+
}
|
|
115
|
+
/** Builds up a [[VertexTable]]. */
|
|
116
|
+
class VertexBuffer {
|
|
117
|
+
/** `source` is the original table containing the vertex data from which individual vertices will be obtained. */
|
|
118
|
+
constructor(source) {
|
|
119
|
+
this._source = source;
|
|
120
|
+
this._builder = new Uint32ArrayBuilder({ initialCapacity: 3 * source.numRgbaPerVertex });
|
|
121
|
+
}
|
|
122
|
+
/** The number of vertices currently in the table. */
|
|
123
|
+
get length() {
|
|
124
|
+
assert((this._builder.length % this.vertexSize) === 0);
|
|
125
|
+
return this._builder.length / this.vertexSize;
|
|
126
|
+
}
|
|
127
|
+
/** The number of 32-bit unsigned integers (RGBA values) per vertex. */
|
|
128
|
+
get vertexSize() {
|
|
129
|
+
return this._source.numRgbaPerVertex;
|
|
130
|
+
}
|
|
131
|
+
/** Append a vertex. `vertex` must be of size [[vertexSize]]. */
|
|
132
|
+
push(vertex) {
|
|
133
|
+
assert(vertex.length === this.vertexSize);
|
|
134
|
+
this._builder.append(vertex);
|
|
135
|
+
}
|
|
136
|
+
/** Construct the finished vertex table. */
|
|
137
|
+
buildVertexTable(maxDimension, colorTable, materialAtlasTable) {
|
|
138
|
+
const source = this._source;
|
|
139
|
+
colorTable = colorTable !== null && colorTable !== void 0 ? colorTable : source.uniformColor;
|
|
140
|
+
assert(undefined !== colorTable);
|
|
141
|
+
const colorTableLength = colorTable instanceof Uint32Array ? colorTable.length : 0;
|
|
142
|
+
const materialAtlasTableLength = materialAtlasTable instanceof Uint32Array ? materialAtlasTable.length : 0;
|
|
143
|
+
const dimensions = computeDimensions(this.length, this.vertexSize, colorTableLength + materialAtlasTableLength, maxDimension);
|
|
144
|
+
let rgbaData = this._builder.toTypedArray();
|
|
145
|
+
if (dimensions.width * dimensions.height > rgbaData.length) {
|
|
146
|
+
const prevData = rgbaData;
|
|
147
|
+
rgbaData = new Uint32Array(dimensions.width * dimensions.height);
|
|
148
|
+
rgbaData.set(prevData, 0);
|
|
149
|
+
}
|
|
150
|
+
let tableSize = this.vertexSize * this.length;
|
|
151
|
+
if (colorTable instanceof Uint32Array) {
|
|
152
|
+
rgbaData.set(colorTable, tableSize);
|
|
153
|
+
tableSize += colorTable.length;
|
|
154
|
+
}
|
|
155
|
+
if (materialAtlasTable instanceof Uint32Array)
|
|
156
|
+
rgbaData.set(materialAtlasTable, tableSize);
|
|
157
|
+
const tableProps = {
|
|
158
|
+
data: new Uint8Array(rgbaData.buffer, rgbaData.byteOffset, rgbaData.byteLength),
|
|
159
|
+
usesUnquantizedPositions: source.usesUnquantizedPositions,
|
|
160
|
+
qparams: source.qparams,
|
|
161
|
+
width: dimensions.width,
|
|
162
|
+
height: dimensions.height,
|
|
163
|
+
hasTranslucency: source.hasTranslucency,
|
|
164
|
+
uniformColor: colorTable instanceof ColorDef ? colorTable : undefined,
|
|
165
|
+
featureIndexType: source.featureIndexType,
|
|
166
|
+
uniformFeatureID: source.uniformFeatureID,
|
|
167
|
+
numVertices: this.length,
|
|
168
|
+
numRgbaPerVertex: source.numRgbaPerVertex,
|
|
169
|
+
uvParams: source.uvParams,
|
|
170
|
+
};
|
|
171
|
+
return new VertexTable(tableProps);
|
|
172
|
+
}
|
|
173
|
+
}
|
|
174
|
+
/** Remaps portions of a source color table into a filtered target color table. */
|
|
175
|
+
class ColorTableRemapper {
|
|
176
|
+
constructor(colorTable) {
|
|
177
|
+
this._remappedIndices = new Map();
|
|
178
|
+
this.colors = [];
|
|
179
|
+
this._32 = new Uint32Array(1);
|
|
180
|
+
this._16 = new Uint16Array(this._32.buffer);
|
|
181
|
+
this._colorTable = colorTable;
|
|
182
|
+
}
|
|
183
|
+
/** Extract the color index stored in `vertex`, ensure it is present in the remapped color table, and return its index in that table. */
|
|
184
|
+
remap(vertex, usesUnquantizedPositions) {
|
|
185
|
+
const vertIndex = usesUnquantizedPositions ? 4 : 1;
|
|
186
|
+
const shortIndex = usesUnquantizedPositions ? 0 : 1;
|
|
187
|
+
this._32[0] = vertex[vertIndex];
|
|
188
|
+
const oldIndex = this._16[shortIndex];
|
|
189
|
+
let newIndex = this._remappedIndices.get(oldIndex);
|
|
190
|
+
if (undefined === newIndex) {
|
|
191
|
+
newIndex = this.colors.length;
|
|
192
|
+
this._remappedIndices.set(oldIndex, newIndex);
|
|
193
|
+
const color = this._colorTable[oldIndex];
|
|
194
|
+
this.colors.push(color);
|
|
195
|
+
}
|
|
196
|
+
this._16[shortIndex] = newIndex;
|
|
197
|
+
vertex[vertIndex] = this._32[0];
|
|
198
|
+
}
|
|
199
|
+
/** Construct the finished color table. */
|
|
200
|
+
buildColorTable() {
|
|
201
|
+
assert(this.colors.length > 0);
|
|
202
|
+
return this.colors.length > 1 ? new Uint32Array(this.colors) : ColorDef.fromAbgr(this.colors[0]);
|
|
203
|
+
}
|
|
204
|
+
}
|
|
205
|
+
class MaterialAtlasRemapper {
|
|
206
|
+
constructor(_atlasTable) {
|
|
207
|
+
this._remappedIndices = new Map();
|
|
208
|
+
this.materials = [];
|
|
209
|
+
this._32 = new Uint32Array(1);
|
|
210
|
+
this._8 = new Uint8Array(this._32.buffer);
|
|
211
|
+
this._atlasTable = _atlasTable;
|
|
212
|
+
}
|
|
213
|
+
/** Extract the mat index stored in `vertex`, ensure it is present in the remapped atlas table, and return its index in that table. */
|
|
214
|
+
remap(vertex, usesUnquantizedPositions) {
|
|
215
|
+
const vertIndex = usesUnquantizedPositions ? 3 : 2;
|
|
216
|
+
this._32[0] = vertex[vertIndex];
|
|
217
|
+
const oldIndex = this._8[3];
|
|
218
|
+
let newIndex = this._remappedIndices.get(oldIndex);
|
|
219
|
+
if (undefined === newIndex) {
|
|
220
|
+
newIndex = this.materials.length / 4;
|
|
221
|
+
this._remappedIndices.set(oldIndex, newIndex);
|
|
222
|
+
let index = oldIndex * 4;
|
|
223
|
+
this.materials.push(this._atlasTable[index++]);
|
|
224
|
+
this.materials.push(this._atlasTable[index++]);
|
|
225
|
+
this.materials.push(this._atlasTable[index++]);
|
|
226
|
+
this.materials.push(this._atlasTable[index]);
|
|
227
|
+
}
|
|
228
|
+
this._8[3] = newIndex;
|
|
229
|
+
vertex[vertIndex] = this._32[0];
|
|
230
|
+
}
|
|
231
|
+
unpackFloat(value) {
|
|
232
|
+
this._32[0] = value;
|
|
233
|
+
const valUint32 = this._32[0];
|
|
234
|
+
const bias = 38.0;
|
|
235
|
+
const temp = (valUint32 >>> 24) / 2.0;
|
|
236
|
+
let exponent = Math.floor(temp);
|
|
237
|
+
let sign = (temp - exponent) * 2.0;
|
|
238
|
+
sign = -(sign * 2.0 - 1.0);
|
|
239
|
+
const base = sign * (valUint32 & 0xffffff) / 16777216.0;
|
|
240
|
+
exponent = exponent - bias;
|
|
241
|
+
return base * Math.pow(10.0, exponent);
|
|
242
|
+
}
|
|
243
|
+
materialFromAtlasEntry(entry) {
|
|
244
|
+
const rgbOverridden = (entry[1] & 0x1000000) !== 0;
|
|
245
|
+
const alphaOverridden = (entry[1] & 0x2000000) !== 0;
|
|
246
|
+
const args = {
|
|
247
|
+
alpha: alphaOverridden ? (entry[0] >>> 24) / 255.0 : undefined,
|
|
248
|
+
diffuse: {
|
|
249
|
+
color: rgbOverridden ? ColorDef.fromTbgr(entry[0] & 0xffffff) : undefined,
|
|
250
|
+
weight: (entry[1] >>> 8) / 255.0,
|
|
251
|
+
},
|
|
252
|
+
specular: {
|
|
253
|
+
color: ColorDef.fromTbgr(entry[2]),
|
|
254
|
+
weight: ((entry[1] >>> 16) & 0xff) / 255.0,
|
|
255
|
+
exponent: this.unpackFloat(entry[3]),
|
|
256
|
+
},
|
|
257
|
+
};
|
|
258
|
+
const material = IModelApp.renderSystem.createRenderMaterial(args);
|
|
259
|
+
return createSurfaceMaterial(material);
|
|
260
|
+
}
|
|
261
|
+
/** Construct the finished color table. */
|
|
262
|
+
buildAtlasTable() {
|
|
263
|
+
assert(this.materials.length > 0);
|
|
264
|
+
const m = new Uint32Array(this.materials);
|
|
265
|
+
return this.materials.length > 4 ? m : this.materialFromAtlasEntry(m);
|
|
266
|
+
}
|
|
267
|
+
}
|
|
268
|
+
/** A node in a split vertex table. Each node corresponds to one or more elements. */
|
|
269
|
+
class Node {
|
|
270
|
+
/** `vertexTable` is the source table containing vertex data for all nodes, from which this node will extract the vertices belong to it. */
|
|
271
|
+
constructor(vertexTable, numColorsPrecedingAtlas) {
|
|
272
|
+
this.remappedIndices = new Map();
|
|
273
|
+
this.indices = new IndexBuffer();
|
|
274
|
+
this.vertices = new VertexBuffer(vertexTable);
|
|
275
|
+
if (undefined === vertexTable.uniformColor)
|
|
276
|
+
this.colors = new ColorTableRemapper(new Uint32Array(vertexTable.data.buffer, vertexTable.data.byteOffset + 4 * vertexTable.numVertices * vertexTable.numRgbaPerVertex));
|
|
277
|
+
if (undefined !== numColorsPrecedingAtlas) {
|
|
278
|
+
const atlasOffset = (vertexTable.numVertices * vertexTable.numRgbaPerVertex + numColorsPrecedingAtlas) * 4;
|
|
279
|
+
this.atlas = new MaterialAtlasRemapper(new Uint32Array(vertexTable.data.buffer, vertexTable.data.byteOffset + atlasOffset));
|
|
280
|
+
}
|
|
281
|
+
this.usesUnquantizedPositions = vertexTable.usesUnquantizedPositions;
|
|
282
|
+
}
|
|
283
|
+
addVertex(originalIndex, vertex) {
|
|
284
|
+
var _a, _b;
|
|
285
|
+
let newIndex = this.remappedIndices.get(originalIndex);
|
|
286
|
+
if (undefined === newIndex) {
|
|
287
|
+
newIndex = this.vertices.length;
|
|
288
|
+
this.remappedIndices.set(originalIndex, newIndex);
|
|
289
|
+
(_a = this.colors) === null || _a === void 0 ? void 0 : _a.remap(vertex, this.usesUnquantizedPositions);
|
|
290
|
+
(_b = this.atlas) === null || _b === void 0 ? void 0 : _b.remap(vertex, this.usesUnquantizedPositions);
|
|
291
|
+
this.vertices.push(vertex);
|
|
292
|
+
}
|
|
293
|
+
this.indices.push(newIndex);
|
|
294
|
+
}
|
|
295
|
+
buildOutput(maxDimension) {
|
|
296
|
+
var _a, _b;
|
|
297
|
+
const materialAtlas = (_a = this.atlas) === null || _a === void 0 ? void 0 : _a.buildAtlasTable();
|
|
298
|
+
const material = (materialAtlas instanceof Uint32Array) ? undefined : materialAtlas;
|
|
299
|
+
return {
|
|
300
|
+
indices: this.indices.toVertexIndices(),
|
|
301
|
+
vertices: this.vertices.buildVertexTable(maxDimension, (_b = this.colors) === null || _b === void 0 ? void 0 : _b.buildColorTable(), materialAtlas),
|
|
302
|
+
material,
|
|
303
|
+
};
|
|
304
|
+
}
|
|
305
|
+
}
|
|
306
|
+
class VertexTableSplitter {
|
|
307
|
+
constructor(input, computeNodeId) {
|
|
308
|
+
this._nodes = new Map();
|
|
309
|
+
this._input = input;
|
|
310
|
+
this._computeNodeId = computeNodeId;
|
|
311
|
+
}
|
|
312
|
+
/** Split the source into one or more output nodes, returning a mapping of integer node Id to node. */
|
|
313
|
+
static split(source, computeNodeId) {
|
|
314
|
+
const splitter = new VertexTableSplitter(source, computeNodeId);
|
|
315
|
+
splitter.split();
|
|
316
|
+
return splitter._nodes;
|
|
317
|
+
}
|
|
318
|
+
split() {
|
|
319
|
+
// Track the most recent feature and corresponding node to avoid repeated lookups - vertices for
|
|
320
|
+
// individual features are largely contiguous.
|
|
321
|
+
const curState = {
|
|
322
|
+
featureIndex: -1,
|
|
323
|
+
node: undefined,
|
|
324
|
+
};
|
|
325
|
+
const vertSize = this._input.vertices.numRgbaPerVertex;
|
|
326
|
+
const vertex = new Uint32Array(vertSize);
|
|
327
|
+
const vertexTable = new Uint32Array(this._input.vertices.data.buffer, this._input.vertices.data.byteOffset, this._input.vertices.numVertices * vertSize);
|
|
328
|
+
const elemIdPair = { lower: 0, upper: 0 };
|
|
329
|
+
for (const index of this._input.indices) {
|
|
330
|
+
// Extract the data for this vertex without allocating new typed arrays.
|
|
331
|
+
const vertexOffset = index * vertSize;
|
|
332
|
+
for (let i = 0; i < vertex.length; i++)
|
|
333
|
+
vertex[i] = vertexTable[vertexOffset + i];
|
|
334
|
+
// Determine to which element the vertex belongs and find the corresponding Node.
|
|
335
|
+
const featureIndex = vertex[2] & 0x00ffffff;
|
|
336
|
+
if (curState.featureIndex !== featureIndex) {
|
|
337
|
+
curState.featureIndex = featureIndex;
|
|
338
|
+
this._input.featureTable.getElementIdPair(featureIndex, elemIdPair);
|
|
339
|
+
const nodeId = this._computeNodeId(elemIdPair, featureIndex);
|
|
340
|
+
let node = this._nodes.get(nodeId);
|
|
341
|
+
if (undefined === node)
|
|
342
|
+
this._nodes.set(nodeId, node = new Node(this._input.vertices, this._input.atlasOffset));
|
|
343
|
+
curState.node = node;
|
|
344
|
+
}
|
|
345
|
+
// Add the vertex to the appropriate node.
|
|
346
|
+
curState.node.addVertex(index, vertex);
|
|
347
|
+
}
|
|
348
|
+
}
|
|
349
|
+
}
|
|
350
|
+
/** Given a PointStringParams and a function that can associate a node Id with an element Id, produce a mapping of nodes to PointStringParams, splitting up
|
|
351
|
+
* the input params as needed.
|
|
352
|
+
* @internal
|
|
353
|
+
*/
|
|
354
|
+
export function splitPointStringParams(args) {
|
|
355
|
+
const nodes = VertexTableSplitter.split({
|
|
356
|
+
indices: args.params.indices,
|
|
357
|
+
vertices: args.params.vertices,
|
|
358
|
+
featureTable: args.featureTable,
|
|
359
|
+
}, args.computeNodeId);
|
|
360
|
+
const result = new Map();
|
|
361
|
+
for (const [id, node] of nodes) {
|
|
362
|
+
const { vertices, indices } = node.buildOutput(args.maxDimension);
|
|
363
|
+
result.set(id, new PointStringParams(vertices, indices, args.params.weight));
|
|
364
|
+
}
|
|
365
|
+
return result;
|
|
366
|
+
}
|
|
367
|
+
class RemappedPolylineEdges {
|
|
368
|
+
constructor() {
|
|
369
|
+
this.indices = new IndexBuffer();
|
|
370
|
+
this.prevIndices = new IndexBuffer();
|
|
371
|
+
this.nextIndicesAndParams = new Uint32ArrayBuilder();
|
|
372
|
+
}
|
|
373
|
+
}
|
|
374
|
+
function remapIndex(out, srcIndex, nodes) {
|
|
375
|
+
for (const [id, node] of nodes) {
|
|
376
|
+
const index = node.remappedIndices.get(srcIndex);
|
|
377
|
+
if (undefined !== index) {
|
|
378
|
+
out.index = index;
|
|
379
|
+
out.node = node;
|
|
380
|
+
out.id = id;
|
|
381
|
+
return true;
|
|
382
|
+
}
|
|
383
|
+
}
|
|
384
|
+
assert(false);
|
|
385
|
+
return false;
|
|
386
|
+
}
|
|
387
|
+
function remapSegmentEdges(type, source, nodes, edges) {
|
|
388
|
+
const src = source[type];
|
|
389
|
+
if (!src)
|
|
390
|
+
return;
|
|
391
|
+
const srcEndPts = new Uint32Array(src.endPointAndQuadIndices.buffer, src.endPointAndQuadIndices.byteOffset, src.endPointAndQuadIndices.length / 4);
|
|
392
|
+
let srcNormalPairs;
|
|
393
|
+
if (type === "silhouettes") {
|
|
394
|
+
assert(undefined !== source.silhouettes);
|
|
395
|
+
srcNormalPairs = new Uint32Array(source.silhouettes.normalPairs.buffer, source.silhouettes.normalPairs.byteOffset, source.silhouettes.normalPairs.length / 4);
|
|
396
|
+
}
|
|
397
|
+
let curIndexIndex = 0;
|
|
398
|
+
const remappedIndex = {};
|
|
399
|
+
for (const srcIndex of src.indices) {
|
|
400
|
+
if (remapIndex(remappedIndex, srcIndex, nodes)) {
|
|
401
|
+
let endPointAndQuad = srcEndPts[curIndexIndex];
|
|
402
|
+
const otherIndex = (endPointAndQuad & 0x00ffffff) >>> 0;
|
|
403
|
+
const newOtherIndex = remappedIndex.node.remappedIndices.get(otherIndex);
|
|
404
|
+
assert(undefined !== newOtherIndex);
|
|
405
|
+
endPointAndQuad = (endPointAndQuad & 0xff000000) | newOtherIndex;
|
|
406
|
+
let entry = edges.get(remappedIndex.id);
|
|
407
|
+
if (!entry)
|
|
408
|
+
edges.set(remappedIndex.id, entry = {});
|
|
409
|
+
if (srcNormalPairs) {
|
|
410
|
+
if (!entry.silhouettes)
|
|
411
|
+
entry.silhouettes = { indices: new IndexBuffer(), endPointAndQuadIndices: new Uint32ArrayBuilder(), normalPairs: new Uint32ArrayBuilder() };
|
|
412
|
+
entry.silhouettes.normalPairs.push(srcNormalPairs[curIndexIndex]);
|
|
413
|
+
}
|
|
414
|
+
else if (!entry.segments) {
|
|
415
|
+
entry.segments = { indices: new IndexBuffer(), endPointAndQuadIndices: new Uint32ArrayBuilder() };
|
|
416
|
+
}
|
|
417
|
+
const segments = entry[type];
|
|
418
|
+
assert(undefined !== segments);
|
|
419
|
+
segments.indices.push(remappedIndex.index);
|
|
420
|
+
segments.endPointAndQuadIndices.push(endPointAndQuad);
|
|
421
|
+
}
|
|
422
|
+
++curIndexIndex;
|
|
423
|
+
}
|
|
424
|
+
}
|
|
425
|
+
function remapPolylineEdges(src, nodes, edges) {
|
|
426
|
+
const srcNextAndParam = new Uint32Array(src.nextIndicesAndParams.buffer, src.nextIndicesAndParams.byteOffset, src.nextIndicesAndParams.length / 4);
|
|
427
|
+
const prevIter = src.prevIndices[Symbol.iterator]();
|
|
428
|
+
let curIndexIndex = 0;
|
|
429
|
+
const remappedIndex = {};
|
|
430
|
+
for (const srcIndex of src.indices) {
|
|
431
|
+
if (remapIndex(remappedIndex, srcIndex, nodes)) {
|
|
432
|
+
const prevIndex = prevIter.next().value;
|
|
433
|
+
assert(undefined !== prevIndex);
|
|
434
|
+
const newPrevIndex = remappedIndex.node.remappedIndices.get(prevIndex);
|
|
435
|
+
assert(undefined !== newPrevIndex);
|
|
436
|
+
let nextAndParam = srcNextAndParam[curIndexIndex];
|
|
437
|
+
const nextIndex = (nextAndParam & 0x00ffffff) >>> 0;
|
|
438
|
+
const newNextIndex = remappedIndex.node.remappedIndices.get(nextIndex);
|
|
439
|
+
assert(undefined !== newNextIndex);
|
|
440
|
+
nextAndParam = (nextAndParam & 0xff000000) | newNextIndex;
|
|
441
|
+
let entry = edges.get(remappedIndex.id);
|
|
442
|
+
if (!entry)
|
|
443
|
+
edges.set(remappedIndex.id, entry = {});
|
|
444
|
+
if (!entry.polylines)
|
|
445
|
+
entry.polylines = new RemappedPolylineEdges();
|
|
446
|
+
entry.polylines.indices.push(remappedIndex.index);
|
|
447
|
+
entry.polylines.prevIndices.push(newPrevIndex);
|
|
448
|
+
entry.polylines.nextIndicesAndParams.push(nextAndParam);
|
|
449
|
+
}
|
|
450
|
+
++curIndexIndex;
|
|
451
|
+
}
|
|
452
|
+
}
|
|
453
|
+
function remapIndexedEdges(src, nodes, edges) {
|
|
454
|
+
const srcEdgeData = src.edges.data;
|
|
455
|
+
const numSegments = src.edges.numSegments;
|
|
456
|
+
const silhouetteStartByteIndex = numSegments * 6 + src.edges.silhouettePadding;
|
|
457
|
+
function getUint24EdgePair(byteIndex) {
|
|
458
|
+
return [srcEdgeData[byteIndex + 0] | (srcEdgeData[byteIndex + 1] << 8) | srcEdgeData[byteIndex + 2] << 16,
|
|
459
|
+
srcEdgeData[byteIndex + 3] | (srcEdgeData[byteIndex + 4] << 8) | srcEdgeData[byteIndex + 5] << 16];
|
|
460
|
+
}
|
|
461
|
+
function setUint24EdgePair(indEdges, value1, value2) {
|
|
462
|
+
indEdges.edges.push(value1 & 0x0000ff);
|
|
463
|
+
indEdges.edges.push((value1 & 0x00ff00) >>> 8);
|
|
464
|
+
indEdges.edges.push((value1 & 0xff0000) >>> 16);
|
|
465
|
+
indEdges.edges.push(value2 & 0x0000ff);
|
|
466
|
+
indEdges.edges.push((value2 & 0x00ff00) >>> 8);
|
|
467
|
+
indEdges.edges.push((value2 & 0xff0000) >>> 16);
|
|
468
|
+
}
|
|
469
|
+
function getUint24SilPair(byteIndex) {
|
|
470
|
+
return [srcEdgeData[byteIndex + 0] | (srcEdgeData[byteIndex + 1] << 8) | srcEdgeData[byteIndex + 2] << 16,
|
|
471
|
+
srcEdgeData[byteIndex + 3] | (srcEdgeData[byteIndex + 4] << 8) | srcEdgeData[byteIndex + 5] << 16,
|
|
472
|
+
srcEdgeData[byteIndex + 6] | (srcEdgeData[byteIndex + 7] << 8), srcEdgeData[byteIndex + 8] | (srcEdgeData[byteIndex + 9] << 8)];
|
|
473
|
+
}
|
|
474
|
+
function setUint24SilPair(indSil, value1, value2, norm1, norm2) {
|
|
475
|
+
indSil.silhouettes.push(value1 & 0x0000ff);
|
|
476
|
+
indSil.silhouettes.push((value1 & 0x00ff00) >>> 8);
|
|
477
|
+
indSil.silhouettes.push((value1 & 0xff0000) >>> 16);
|
|
478
|
+
indSil.silhouettes.push(value2 & 0x0000ff);
|
|
479
|
+
indSil.silhouettes.push((value2 & 0x00ff00) >>> 8);
|
|
480
|
+
indSil.silhouettes.push((value2 & 0xff0000) >>> 16);
|
|
481
|
+
indSil.silhouettes.push(norm1 & 0x0000ff);
|
|
482
|
+
indSil.silhouettes.push((norm1 & 0x00ff00) >>> 8);
|
|
483
|
+
indSil.silhouettes.push(norm2 & 0x0000ff);
|
|
484
|
+
indSil.silhouettes.push((norm2 & 0x00ff00) >>> 8);
|
|
485
|
+
}
|
|
486
|
+
let maxIndex = 0;
|
|
487
|
+
for (const srcIndex of src.indices)
|
|
488
|
+
maxIndex = Math.max(srcIndex, maxIndex);
|
|
489
|
+
const remappedIndex = {};
|
|
490
|
+
let es1Index = 0, es2Index = 0, n1 = 0, n2 = 0;
|
|
491
|
+
for (let curSegment = 0, byteIndex = 0; curSegment <= maxIndex; ++curSegment) {
|
|
492
|
+
if (curSegment < numSegments) { // edges
|
|
493
|
+
[es1Index, es2Index] = getUint24EdgePair(byteIndex);
|
|
494
|
+
byteIndex += 6;
|
|
495
|
+
}
|
|
496
|
+
else { // silhouettes
|
|
497
|
+
byteIndex = silhouetteStartByteIndex + (curSegment - numSegments) * 10;
|
|
498
|
+
[es1Index, es2Index, n1, n2] = getUint24SilPair(byteIndex);
|
|
499
|
+
}
|
|
500
|
+
if (remapIndex(remappedIndex, es1Index, nodes)) {
|
|
501
|
+
let entry = edges.get(remappedIndex.id);
|
|
502
|
+
if (!entry)
|
|
503
|
+
edges.set(remappedIndex.id, entry = {});
|
|
504
|
+
if (!entry.indexed)
|
|
505
|
+
entry.indexed = { edges: new Uint8ArrayBuilder(), silhouettes: new Uint8ArrayBuilder() };
|
|
506
|
+
if (curSegment < numSegments) { // edges
|
|
507
|
+
const newE1Index = remappedIndex.node.remappedIndices.get(es1Index);
|
|
508
|
+
assert(undefined !== newE1Index);
|
|
509
|
+
const newE2Index = remappedIndex.node.remappedIndices.get(es2Index);
|
|
510
|
+
assert(undefined !== newE2Index);
|
|
511
|
+
setUint24EdgePair(entry.indexed, newE1Index, newE2Index);
|
|
512
|
+
}
|
|
513
|
+
else { // silhouettes
|
|
514
|
+
const newS1Index = remappedIndex.node.remappedIndices.get(es1Index);
|
|
515
|
+
assert(undefined !== newS1Index);
|
|
516
|
+
const newS2Index = remappedIndex.node.remappedIndices.get(es2Index);
|
|
517
|
+
assert(undefined !== newS2Index);
|
|
518
|
+
setUint24SilPair(entry.indexed, newS1Index, newS2Index, n1, n2);
|
|
519
|
+
}
|
|
520
|
+
}
|
|
521
|
+
}
|
|
522
|
+
}
|
|
523
|
+
function splitEdges(source, nodes) {
|
|
524
|
+
const edges = new Map();
|
|
525
|
+
remapSegmentEdges("segments", source, nodes, edges);
|
|
526
|
+
remapSegmentEdges("silhouettes", source, nodes, edges);
|
|
527
|
+
if (source.polylines)
|
|
528
|
+
remapPolylineEdges(source.polylines, nodes, edges);
|
|
529
|
+
if (source.indexed)
|
|
530
|
+
remapIndexedEdges(source.indexed, nodes, edges);
|
|
531
|
+
const result = new Map();
|
|
532
|
+
for (const [id, remappedEdges] of edges) {
|
|
533
|
+
if (!remappedEdges.segments && !remappedEdges.silhouettes && !remappedEdges.indexed)
|
|
534
|
+
continue;
|
|
535
|
+
let edgeTable = {};
|
|
536
|
+
let edgeIndices = {};
|
|
537
|
+
if (remappedEdges.indexed) {
|
|
538
|
+
const numSegmentEdges = remappedEdges.indexed.edges.length / 6;
|
|
539
|
+
const numSilhouettes = remappedEdges.indexed.silhouettes.length / 10;
|
|
540
|
+
const { width, height, silhouettePadding, silhouetteStartByteIndex } = calculateEdgeTableParams(numSegmentEdges, numSilhouettes, IModelApp.renderSystem.maxTextureSize);
|
|
541
|
+
const data = new Uint8Array(width * height * 4);
|
|
542
|
+
data.set(remappedEdges.indexed.edges.toTypedArray(), 0);
|
|
543
|
+
if (numSilhouettes > 0)
|
|
544
|
+
data.set(remappedEdges.indexed.silhouettes.toTypedArray(), silhouetteStartByteIndex + silhouettePadding);
|
|
545
|
+
const numTotalEdges = numSegmentEdges + numSilhouettes;
|
|
546
|
+
edgeIndices = new VertexIndices(new Uint8Array(numTotalEdges * 6 * 3));
|
|
547
|
+
for (let i = 0; i < numTotalEdges; i++)
|
|
548
|
+
for (let j = 0; j < 6; j++)
|
|
549
|
+
edgeIndices.setNthIndex(i * 6 + j, i);
|
|
550
|
+
edgeTable = {
|
|
551
|
+
data,
|
|
552
|
+
width,
|
|
553
|
+
height,
|
|
554
|
+
numSegments: numSegmentEdges,
|
|
555
|
+
silhouettePadding,
|
|
556
|
+
};
|
|
557
|
+
}
|
|
558
|
+
result.set(id, {
|
|
559
|
+
weight: source.weight,
|
|
560
|
+
linePixels: source.linePixels,
|
|
561
|
+
segments: remappedEdges.segments ? {
|
|
562
|
+
indices: remappedEdges.segments.indices.toVertexIndices(),
|
|
563
|
+
endPointAndQuadIndices: remappedEdges.segments.endPointAndQuadIndices.toUint8Array(),
|
|
564
|
+
} : undefined,
|
|
565
|
+
silhouettes: remappedEdges.silhouettes ? {
|
|
566
|
+
indices: remappedEdges.silhouettes.indices.toVertexIndices(),
|
|
567
|
+
endPointAndQuadIndices: remappedEdges.silhouettes.endPointAndQuadIndices.toUint8Array(),
|
|
568
|
+
normalPairs: remappedEdges.silhouettes.normalPairs.toUint8Array(),
|
|
569
|
+
} : undefined,
|
|
570
|
+
polylines: remappedEdges.polylines ? {
|
|
571
|
+
indices: remappedEdges.polylines.indices.toVertexIndices(),
|
|
572
|
+
prevIndices: remappedEdges.polylines.prevIndices.toVertexIndices(),
|
|
573
|
+
nextIndicesAndParams: remappedEdges.polylines.nextIndicesAndParams.toUint8Array(),
|
|
574
|
+
} : undefined,
|
|
575
|
+
indexed: remappedEdges.indexed ? {
|
|
576
|
+
indices: edgeIndices,
|
|
577
|
+
edges: edgeTable,
|
|
578
|
+
} : undefined,
|
|
579
|
+
});
|
|
580
|
+
}
|
|
581
|
+
return result;
|
|
582
|
+
}
|
|
583
|
+
export function splitMeshParams(args) {
|
|
584
|
+
const result = new Map();
|
|
585
|
+
const mat = args.params.surface.material;
|
|
586
|
+
const atlasOffset = undefined !== mat && mat.isAtlas ? mat.vertexTableOffset : undefined;
|
|
587
|
+
const nodes = VertexTableSplitter.split({
|
|
588
|
+
indices: args.params.surface.indices,
|
|
589
|
+
vertices: args.params.vertices,
|
|
590
|
+
featureTable: args.featureTable,
|
|
591
|
+
atlasOffset,
|
|
592
|
+
}, args.computeNodeId);
|
|
593
|
+
const edges = args.params.edges ? splitEdges(args.params.edges, nodes) : undefined;
|
|
594
|
+
for (const [id, node] of nodes) {
|
|
595
|
+
const { vertices, indices, material } = node.buildOutput(args.maxDimension);
|
|
596
|
+
const params = new MeshParams(vertices, {
|
|
597
|
+
type: args.params.surface.type,
|
|
598
|
+
indices,
|
|
599
|
+
fillFlags: args.params.surface.fillFlags,
|
|
600
|
+
hasBakedLighting: args.params.surface.hasBakedLighting,
|
|
601
|
+
hasFixedNormals: args.params.surface.hasFixedNormals,
|
|
602
|
+
textureMapping: args.params.surface.textureMapping,
|
|
603
|
+
material: material !== undefined ? material : args.params.surface.material,
|
|
604
|
+
}, edges === null || edges === void 0 ? void 0 : edges.get(id), args.params.isPlanar,
|
|
605
|
+
// ###TODO handle aux channels.......
|
|
606
|
+
args.params.auxChannels);
|
|
607
|
+
result.set(id, params);
|
|
608
|
+
}
|
|
609
|
+
return result;
|
|
610
|
+
}
|
|
611
|
+
export function splitPolylineParams(args) {
|
|
612
|
+
const nodes = VertexTableSplitter.split({
|
|
613
|
+
indices: args.params.polyline.indices,
|
|
614
|
+
vertices: args.params.vertices,
|
|
615
|
+
featureTable: args.featureTable,
|
|
616
|
+
}, args.computeNodeId);
|
|
617
|
+
const src = args.params.polyline;
|
|
618
|
+
const srcNextAndParam = new Uint32Array(src.nextIndicesAndParams.buffer, src.nextIndicesAndParams.byteOffset, src.nextIndicesAndParams.length / 4);
|
|
619
|
+
let curIndexIndex = 0;
|
|
620
|
+
const remappedIndex = {};
|
|
621
|
+
for (const prevIndex of src.prevIndices) {
|
|
622
|
+
if (remapIndex(remappedIndex, prevIndex, nodes)) {
|
|
623
|
+
const node = remappedIndex.node;
|
|
624
|
+
if (!node.prevIndices) {
|
|
625
|
+
assert(undefined === node.nextIndicesAndParams);
|
|
626
|
+
node.prevIndices = new IndexBuffer(node.indices.numIndices);
|
|
627
|
+
node.nextIndicesAndParams = new Uint32ArrayBuilder({ initialCapacity: node.indices.numIndices });
|
|
628
|
+
}
|
|
629
|
+
else {
|
|
630
|
+
assert(undefined !== node.nextIndicesAndParams);
|
|
631
|
+
}
|
|
632
|
+
node.prevIndices.push(remappedIndex.index);
|
|
633
|
+
let nextAndParam = srcNextAndParam[curIndexIndex];
|
|
634
|
+
const nextIndex = (nextAndParam & 0x00ffffff) >>> 0;
|
|
635
|
+
const newNextIndex = remappedIndex.node.remappedIndices.get(nextIndex);
|
|
636
|
+
assert(undefined !== newNextIndex);
|
|
637
|
+
nextAndParam = (nextAndParam & 0xff000000) | newNextIndex;
|
|
638
|
+
node.nextIndicesAndParams.push(nextAndParam);
|
|
639
|
+
}
|
|
640
|
+
++curIndexIndex;
|
|
641
|
+
}
|
|
642
|
+
const result = new Map();
|
|
643
|
+
for (const [id, node] of nodes) {
|
|
644
|
+
assert(undefined !== node.prevIndices && undefined !== node.nextIndicesAndParams);
|
|
645
|
+
const { vertices, indices } = node.buildOutput(args.maxDimension);
|
|
646
|
+
const params = new PolylineParams(vertices, {
|
|
647
|
+
indices,
|
|
648
|
+
prevIndices: node.prevIndices.toVertexIndices(),
|
|
649
|
+
nextIndicesAndParams: node.nextIndicesAndParams.toUint8Array(),
|
|
650
|
+
}, args.params.weight, args.params.linePixels, args.params.isPlanar, args.params.type);
|
|
651
|
+
result.set(id, params);
|
|
652
|
+
}
|
|
653
|
+
return result;
|
|
654
|
+
}
|
|
655
|
+
//# sourceMappingURL=VertexTableSplitter.js.map
|