@itwin/core-frontend 4.1.0-dev.11 → 4.1.0-dev.12
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 +44 -1
- package/lib/cjs/CheckpointConnection.js +1 -1
- package/lib/cjs/CheckpointConnection.js.map +1 -1
- package/lib/cjs/DrawingViewState.js +1 -1
- package/lib/cjs/DrawingViewState.js.map +1 -1
- package/lib/cjs/ElementLocateManager.js +1 -1
- package/lib/cjs/ElementLocateManager.js.map +1 -1
- package/lib/cjs/EnvironmentDecorations.js +1 -1
- package/lib/cjs/EnvironmentDecorations.js.map +1 -1
- package/lib/cjs/GeoServices.js +1 -1
- package/lib/cjs/GeoServices.js.map +1 -1
- package/lib/cjs/IModelApp.js +1 -1
- package/lib/cjs/IModelApp.js.map +1 -1
- package/lib/cjs/IModelConnection.js +1 -1
- package/lib/cjs/IModelConnection.js.map +1 -1
- package/lib/cjs/Marker.d.ts +1 -1
- package/lib/cjs/Marker.d.ts.map +1 -1
- package/lib/cjs/Marker.js +3 -3
- package/lib/cjs/Marker.js.map +1 -1
- package/lib/cjs/NativeApp.js +1 -1
- package/lib/cjs/NativeApp.js.map +1 -1
- package/lib/cjs/NoRenderApp.d.ts +1 -1
- package/lib/cjs/NoRenderApp.d.ts.map +1 -1
- package/lib/cjs/NoRenderApp.js +1 -1
- package/lib/cjs/NoRenderApp.js.map +1 -1
- package/lib/cjs/RealityDataSource.js +1 -1
- package/lib/cjs/RealityDataSource.js.map +1 -1
- package/lib/cjs/RealityDataSourceContextShareImpl.js +1 -1
- package/lib/cjs/RealityDataSourceContextShareImpl.js.map +1 -1
- package/lib/cjs/SheetViewState.d.ts.map +1 -1
- package/lib/cjs/SheetViewState.js +2 -2
- package/lib/cjs/SheetViewState.js.map +1 -1
- package/lib/cjs/Sprites.js +2 -2
- package/lib/cjs/Sprites.js.map +1 -1
- package/lib/cjs/ViewingSpace.js +1 -1
- package/lib/cjs/ViewingSpace.js.map +1 -1
- package/lib/cjs/Viewport.d.ts +1 -1
- package/lib/cjs/Viewport.d.ts.map +1 -1
- package/lib/cjs/Viewport.js +1 -1
- package/lib/cjs/Viewport.js.map +1 -1
- package/lib/cjs/common/FrontendLoggerCategory.d.ts.map +1 -0
- package/lib/cjs/common/FrontendLoggerCategory.js.map +1 -0
- package/lib/cjs/common/ImageUtil.d.ts.map +1 -0
- package/lib/cjs/common/ImageUtil.js.map +1 -0
- package/lib/cjs/common/ViewRect.d.ts.map +1 -0
- package/lib/cjs/common/ViewRect.js.map +1 -0
- package/lib/cjs/common/WorkerProxy.d.ts +73 -0
- package/lib/cjs/common/WorkerProxy.d.ts.map +1 -0
- package/lib/cjs/common/WorkerProxy.js +54 -0
- package/lib/cjs/common/WorkerProxy.js.map +1 -0
- package/lib/{esm → cjs/common}/gltf/GltfModel.d.ts +1 -1
- package/lib/cjs/common/gltf/GltfModel.d.ts.map +1 -0
- package/lib/cjs/common/gltf/GltfModel.js.map +1 -0
- package/lib/cjs/common/gltf/GltfParser.d.ts.map +1 -0
- package/lib/cjs/common/gltf/GltfParser.js.map +1 -0
- package/lib/cjs/common/gltf/GltfSchema.d.ts.map +1 -0
- package/lib/cjs/common/gltf/GltfSchema.js.map +1 -0
- package/lib/cjs/{imdl → common/imdl}/ImdlModel.d.ts +5 -0
- package/lib/cjs/common/imdl/ImdlModel.d.ts.map +1 -0
- package/lib/cjs/common/imdl/ImdlModel.js +71 -0
- package/lib/cjs/common/imdl/ImdlModel.js.map +1 -0
- package/lib/{esm → cjs/common}/imdl/ImdlSchema.d.ts +32 -32
- package/lib/cjs/common/imdl/ImdlSchema.d.ts.map +1 -0
- package/lib/cjs/common/imdl/ImdlSchema.js.map +1 -0
- package/lib/cjs/{imdl/ImdlParser.d.ts → common/imdl/ParseImdlDocument.d.ts} +13 -8
- package/lib/cjs/common/imdl/ParseImdlDocument.d.ts.map +1 -0
- package/lib/cjs/{imdl/ImdlParser.js → common/imdl/ParseImdlDocument.js} +33 -34
- package/lib/cjs/common/imdl/ParseImdlDocument.js.map +1 -0
- package/lib/cjs/common/render/AnimationNodeId.d.ts +11 -0
- package/lib/cjs/common/render/AnimationNodeId.d.ts.map +1 -0
- package/lib/cjs/common/render/AnimationNodeId.js +19 -0
- package/lib/cjs/common/render/AnimationNodeId.js.map +1 -0
- package/lib/{esm/render/RenderMaterial.d.ts → cjs/common/render/MaterialParams.d.ts} +7 -20
- package/lib/cjs/common/render/MaterialParams.d.ts.map +1 -0
- package/lib/cjs/{render/RenderMaterial.js → common/render/MaterialParams.js} +1 -1
- package/lib/cjs/common/render/MaterialParams.js.map +1 -0
- package/lib/cjs/common/render/TextureParams.d.ts +30 -0
- package/lib/cjs/common/render/TextureParams.d.ts.map +1 -0
- package/lib/cjs/{render/RenderTexture.js → common/render/TextureParams.js} +1 -1
- package/lib/cjs/common/render/TextureParams.js.map +1 -0
- package/lib/{esm → cjs/common}/render/primitives/AuxChannelTable.d.ts +8 -8
- package/lib/cjs/common/render/primitives/AuxChannelTable.d.ts.map +1 -0
- package/lib/cjs/{render → common/render}/primitives/AuxChannelTable.js +9 -9
- package/lib/cjs/common/render/primitives/AuxChannelTable.js.map +1 -0
- package/lib/cjs/common/render/primitives/DisplayParams.d.ts.map +1 -0
- package/lib/cjs/common/render/primitives/DisplayParams.js.map +1 -0
- package/lib/cjs/common/render/primitives/EdgeParams.d.ts +94 -0
- package/lib/cjs/common/render/primitives/EdgeParams.d.ts.map +1 -0
- package/lib/cjs/common/render/primitives/EdgeParams.js +46 -0
- package/lib/cjs/common/render/primitives/EdgeParams.js.map +1 -0
- package/lib/cjs/common/render/primitives/MeshParams.d.ts +20 -0
- package/lib/cjs/common/render/primitives/MeshParams.d.ts.map +1 -0
- package/lib/cjs/{imdl/ImdlModel.js → common/render/primitives/MeshParams.js} +2 -2
- package/lib/cjs/common/render/primitives/MeshParams.js.map +1 -0
- package/lib/cjs/common/render/primitives/MeshPrimitive.d.ts +29 -0
- package/lib/cjs/common/render/primitives/MeshPrimitive.d.ts.map +1 -0
- package/lib/cjs/common/render/primitives/MeshPrimitive.js +18 -0
- package/lib/cjs/common/render/primitives/MeshPrimitive.js.map +1 -0
- package/lib/cjs/common/render/primitives/PointStringParams.d.ts +14 -0
- package/lib/cjs/common/render/primitives/PointStringParams.d.ts.map +1 -0
- package/lib/cjs/common/render/primitives/PointStringParams.js +10 -0
- package/lib/cjs/common/render/primitives/PointStringParams.js.map +1 -0
- package/lib/cjs/common/render/primitives/PolylineParams.d.ts +29 -0
- package/lib/cjs/common/render/primitives/PolylineParams.d.ts.map +1 -0
- package/lib/cjs/common/render/primitives/PolylineParams.js +10 -0
- package/lib/cjs/common/render/primitives/PolylineParams.js.map +1 -0
- package/lib/{esm → cjs/common}/render/primitives/SurfaceParams.d.ts +1 -1
- package/lib/cjs/common/render/primitives/SurfaceParams.d.ts.map +1 -0
- package/lib/cjs/common/render/primitives/SurfaceParams.js.map +1 -0
- package/lib/cjs/common/render/primitives/VertexIndices.d.ts +26 -0
- package/lib/cjs/common/render/primitives/VertexIndices.d.ts.map +1 -0
- package/lib/cjs/common/render/primitives/VertexIndices.js +64 -0
- package/lib/cjs/common/render/primitives/VertexIndices.js.map +1 -0
- package/lib/cjs/common/render/primitives/VertexTable.d.ts +45 -0
- package/lib/cjs/common/render/primitives/VertexTable.d.ts.map +1 -0
- package/lib/cjs/common/render/primitives/VertexTable.js +38 -0
- package/lib/cjs/common/render/primitives/VertexTable.js.map +1 -0
- package/lib/{esm → cjs/common}/render/primitives/VertexTableSplitter.d.ts +20 -3
- package/lib/cjs/common/render/primitives/VertexTableSplitter.d.ts.map +1 -0
- package/lib/cjs/{render → common/render}/primitives/VertexTableSplitter.js +33 -23
- package/lib/cjs/common/render/primitives/VertexTableSplitter.js.map +1 -0
- package/lib/cjs/core-frontend.d.ts +26 -9
- package/lib/cjs/core-frontend.d.ts.map +1 -1
- package/lib/cjs/core-frontend.js +26 -9
- package/lib/cjs/core-frontend.js.map +1 -1
- package/lib/cjs/extension/ExtensionAdmin.js +1 -1
- package/lib/cjs/extension/ExtensionAdmin.js.map +1 -1
- package/lib/cjs/quantity-formatting/QuantityFormatter.js +1 -1
- package/lib/cjs/quantity-formatting/QuantityFormatter.js.map +1 -1
- package/lib/cjs/render/CreateRenderMaterialArgs.d.ts +24 -0
- package/lib/cjs/render/CreateRenderMaterialArgs.d.ts.map +1 -0
- package/lib/cjs/render/CreateRenderMaterialArgs.js +10 -0
- package/lib/cjs/render/CreateRenderMaterialArgs.js.map +1 -0
- package/lib/{esm/render/RenderTexture.d.ts → cjs/render/CreateTextureArgs.d.ts} +4 -28
- package/lib/cjs/render/CreateTextureArgs.d.ts.map +1 -0
- package/lib/cjs/render/CreateTextureArgs.js +10 -0
- package/lib/cjs/render/CreateTextureArgs.js.map +1 -0
- package/lib/cjs/render/GraphicBranch.d.ts +1 -7
- package/lib/cjs/render/GraphicBranch.d.ts.map +1 -1
- package/lib/cjs/render/GraphicBranch.js +1 -9
- package/lib/cjs/render/GraphicBranch.js.map +1 -1
- package/lib/cjs/render/MockRender.d.ts +4 -4
- package/lib/cjs/render/MockRender.d.ts.map +1 -1
- package/lib/cjs/render/MockRender.js +1 -1
- package/lib/cjs/render/MockRender.js.map +1 -1
- package/lib/cjs/render/ParticleCollectionBuilder.d.ts.map +1 -1
- package/lib/cjs/render/ParticleCollectionBuilder.js +5 -5
- package/lib/cjs/render/ParticleCollectionBuilder.js.map +1 -1
- package/lib/cjs/render/RealityMeshParams.js +2 -2
- package/lib/cjs/render/RealityMeshParams.js.map +1 -1
- package/lib/cjs/render/RenderSystem.d.ts +7 -6
- package/lib/cjs/render/RenderSystem.d.ts.map +1 -1
- package/lib/cjs/render/RenderSystem.js +6 -6
- package/lib/cjs/render/RenderSystem.js.map +1 -1
- package/lib/cjs/render/RenderTarget.d.ts +1 -1
- package/lib/cjs/render/RenderTarget.d.ts.map +1 -1
- package/lib/cjs/render/RenderTarget.js.map +1 -1
- package/lib/cjs/render/VisibleFeature.d.ts +1 -1
- package/lib/cjs/render/VisibleFeature.d.ts.map +1 -1
- package/lib/cjs/render/VisibleFeature.js.map +1 -1
- package/lib/cjs/render/primitives/EdgeParams.d.ts +2 -89
- package/lib/cjs/render/primitives/EdgeParams.d.ts.map +1 -1
- package/lib/cjs/render/primitives/EdgeParams.js +35 -71
- package/lib/cjs/render/primitives/EdgeParams.js.map +1 -1
- package/lib/cjs/render/primitives/PointStringParams.d.ts +2 -11
- package/lib/cjs/render/primitives/PointStringParams.d.ts.map +1 -1
- package/lib/cjs/render/primitives/PointStringParams.js +26 -30
- package/lib/cjs/render/primitives/PointStringParams.js.map +1 -1
- package/lib/cjs/render/primitives/Polyface.d.ts +1 -1
- package/lib/cjs/render/primitives/Polyface.d.ts.map +1 -1
- package/lib/cjs/render/primitives/Polyface.js.map +1 -1
- package/lib/cjs/render/primitives/PolylineParams.d.ts +4 -36
- package/lib/cjs/render/primitives/PolylineParams.d.ts.map +1 -1
- package/lib/cjs/render/primitives/PolylineParams.js +29 -40
- package/lib/cjs/render/primitives/PolylineParams.js.map +1 -1
- package/lib/cjs/render/primitives/Strokes.d.ts +1 -1
- package/lib/cjs/render/primitives/Strokes.d.ts.map +1 -1
- package/lib/cjs/render/primitives/Strokes.js.map +1 -1
- package/lib/cjs/render/primitives/VertexTableBuilder.d.ts +28 -0
- package/lib/cjs/render/primitives/VertexTableBuilder.d.ts.map +1 -0
- package/lib/cjs/render/primitives/{VertexTable.js → VertexTableBuilder.js} +61 -175
- package/lib/cjs/render/primitives/VertexTableBuilder.js.map +1 -0
- package/lib/cjs/render/primitives/geometry/GeometryAccumulator.d.ts +1 -1
- package/lib/cjs/render/primitives/geometry/GeometryAccumulator.d.ts.map +1 -1
- package/lib/cjs/render/primitives/geometry/GeometryAccumulator.js.map +1 -1
- package/lib/cjs/render/primitives/geometry/GeometryListBuilder.d.ts +1 -1
- package/lib/cjs/render/primitives/geometry/GeometryListBuilder.d.ts.map +1 -1
- package/lib/cjs/render/primitives/geometry/GeometryListBuilder.js +1 -1
- package/lib/cjs/render/primitives/geometry/GeometryListBuilder.js.map +1 -1
- package/lib/cjs/render/primitives/geometry/GeometryPrimitives.d.ts +1 -1
- package/lib/cjs/render/primitives/geometry/GeometryPrimitives.d.ts.map +1 -1
- package/lib/cjs/render/primitives/geometry/GeometryPrimitives.js +1 -1
- package/lib/cjs/render/primitives/geometry/GeometryPrimitives.js.map +1 -1
- package/lib/cjs/render/primitives/mesh/MeshBuilder.d.ts +1 -1
- package/lib/cjs/render/primitives/mesh/MeshBuilder.d.ts.map +1 -1
- package/lib/cjs/render/primitives/mesh/MeshBuilder.js.map +1 -1
- package/lib/cjs/render/primitives/mesh/MeshBuilderMap.d.ts +6 -5
- package/lib/cjs/render/primitives/mesh/MeshBuilderMap.d.ts.map +1 -1
- package/lib/cjs/render/primitives/mesh/MeshBuilderMap.js +3 -2
- package/lib/cjs/render/primitives/mesh/MeshBuilderMap.js.map +1 -1
- package/lib/cjs/render/primitives/mesh/MeshPrimitives.d.ts +4 -25
- package/lib/cjs/render/primitives/mesh/MeshPrimitives.d.ts.map +1 -1
- package/lib/cjs/render/primitives/mesh/MeshPrimitives.js +9 -14
- package/lib/cjs/render/primitives/mesh/MeshPrimitives.js.map +1 -1
- package/lib/cjs/render/webgl/CachedGeometry.d.ts +1 -1
- package/lib/cjs/render/webgl/CachedGeometry.d.ts.map +1 -1
- package/lib/cjs/render/webgl/CachedGeometry.js.map +1 -1
- package/lib/cjs/render/webgl/ColorInfo.d.ts +1 -1
- package/lib/cjs/render/webgl/ColorInfo.d.ts.map +1 -1
- package/lib/cjs/render/webgl/ColorInfo.js.map +1 -1
- package/lib/cjs/render/webgl/EdgeGeometry.d.ts +2 -2
- package/lib/cjs/render/webgl/EdgeGeometry.d.ts.map +1 -1
- package/lib/cjs/render/webgl/EdgeGeometry.js.map +1 -1
- package/lib/cjs/render/webgl/FeatureOverrides.js +1 -1
- package/lib/cjs/render/webgl/FeatureOverrides.js.map +1 -1
- package/lib/cjs/render/webgl/IndexedEdgeGeometry.d.ts +1 -1
- package/lib/cjs/render/webgl/IndexedEdgeGeometry.d.ts.map +1 -1
- package/lib/cjs/render/webgl/IndexedEdgeGeometry.js.map +1 -1
- package/lib/cjs/render/webgl/Material.d.ts +1 -1
- package/lib/cjs/render/webgl/Material.d.ts.map +1 -1
- package/lib/cjs/render/webgl/Material.js.map +1 -1
- package/lib/cjs/render/webgl/Mesh.d.ts +2 -2
- package/lib/cjs/render/webgl/Mesh.d.ts.map +1 -1
- package/lib/cjs/render/webgl/Mesh.js +1 -1
- package/lib/cjs/render/webgl/Mesh.js.map +1 -1
- package/lib/cjs/render/webgl/MeshData.d.ts +2 -2
- package/lib/cjs/render/webgl/MeshData.d.ts.map +1 -1
- package/lib/cjs/render/webgl/MeshData.js.map +1 -1
- package/lib/cjs/render/webgl/MeshGeometry.d.ts +1 -1
- package/lib/cjs/render/webgl/MeshGeometry.d.ts.map +1 -1
- package/lib/cjs/render/webgl/PointString.d.ts +1 -1
- package/lib/cjs/render/webgl/PointString.d.ts.map +1 -1
- package/lib/cjs/render/webgl/PointString.js.map +1 -1
- package/lib/cjs/render/webgl/Polyline.d.ts +1 -1
- package/lib/cjs/render/webgl/Polyline.d.ts.map +1 -1
- package/lib/cjs/render/webgl/Polyline.js.map +1 -1
- package/lib/cjs/render/webgl/RenderCommands.js +1 -1
- package/lib/cjs/render/webgl/RenderCommands.js.map +1 -1
- package/lib/cjs/render/webgl/SceneCompositor.d.ts +1 -1
- package/lib/cjs/render/webgl/SceneCompositor.d.ts.map +1 -1
- package/lib/cjs/render/webgl/SceneCompositor.js.map +1 -1
- package/lib/cjs/render/webgl/SurfaceGeometry.d.ts +1 -1
- package/lib/cjs/render/webgl/SurfaceGeometry.d.ts.map +1 -1
- package/lib/cjs/render/webgl/SurfaceGeometry.js +1 -1
- package/lib/cjs/render/webgl/SurfaceGeometry.js.map +1 -1
- package/lib/cjs/render/webgl/System.d.ts +7 -6
- package/lib/cjs/render/webgl/System.d.ts.map +1 -1
- package/lib/cjs/render/webgl/System.js +1 -1
- package/lib/cjs/render/webgl/System.js.map +1 -1
- package/lib/cjs/render/webgl/Target.d.ts +1 -1
- package/lib/cjs/render/webgl/Target.d.ts.map +1 -1
- package/lib/cjs/render/webgl/Target.js +4 -4
- package/lib/cjs/render/webgl/Target.js.map +1 -1
- package/lib/cjs/render/webgl/Texture.d.ts +1 -1
- package/lib/cjs/render/webgl/Texture.d.ts.map +1 -1
- package/lib/cjs/render/webgl/Texture.js +1 -1
- package/lib/cjs/render/webgl/Texture.js.map +1 -1
- package/lib/cjs/render/webgl/UniformHandle.js +1 -1
- package/lib/cjs/render/webgl/UniformHandle.js.map +1 -1
- package/lib/cjs/render/webgl/VertexLUT.d.ts +2 -2
- package/lib/cjs/render/webgl/VertexLUT.d.ts.map +1 -1
- package/lib/cjs/render/webgl/VertexLUT.js.map +1 -1
- package/lib/cjs/render/webgl/glsl/Animation.js.map +1 -1
- package/lib/cjs/render-primitives.d.ts +1 -4
- package/lib/cjs/render-primitives.d.ts.map +1 -1
- package/lib/cjs/render-primitives.js +1 -4
- package/lib/cjs/render-primitives.js.map +1 -1
- package/lib/cjs/tile/B3dmReader.d.ts +1 -1
- package/lib/cjs/tile/B3dmReader.d.ts.map +1 -1
- package/lib/cjs/tile/B3dmReader.js +1 -1
- package/lib/cjs/tile/B3dmReader.js.map +1 -1
- package/lib/cjs/tile/GltfReader.d.ts +3 -3
- package/lib/cjs/tile/GltfReader.d.ts.map +1 -1
- package/lib/cjs/tile/GltfReader.js +12 -21
- package/lib/cjs/tile/GltfReader.js.map +1 -1
- package/lib/cjs/tile/IModelTile.d.ts.map +1 -1
- package/lib/cjs/tile/IModelTile.js +4 -9
- 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 +14 -0
- package/lib/cjs/tile/IModelTileTree.js.map +1 -1
- package/lib/cjs/tile/ImdlDecoder.d.ts +52 -0
- package/lib/cjs/tile/ImdlDecoder.d.ts.map +1 -0
- package/lib/cjs/tile/ImdlDecoder.js +35 -0
- package/lib/cjs/tile/ImdlDecoder.js.map +1 -0
- package/lib/{esm/imdl → cjs/tile}/ImdlGraphicsCreator.d.ts +1 -1
- package/lib/cjs/tile/ImdlGraphicsCreator.d.ts.map +1 -0
- package/lib/cjs/{imdl → tile}/ImdlGraphicsCreator.js +13 -13
- package/lib/cjs/tile/ImdlGraphicsCreator.js.map +1 -0
- package/lib/cjs/tile/ImdlParser.d.ts +26 -0
- package/lib/cjs/tile/ImdlParser.d.ts.map +1 -0
- package/lib/cjs/tile/ImdlParser.js +72 -0
- package/lib/cjs/tile/ImdlParser.js.map +1 -0
- package/lib/cjs/tile/ImdlReader.d.ts +6 -1
- package/lib/cjs/tile/ImdlReader.d.ts.map +1 -1
- package/lib/cjs/tile/ImdlReader.js +16 -11
- package/lib/cjs/tile/ImdlReader.js.map +1 -1
- package/lib/cjs/tile/OPCFormatInterpreter.js +1 -1
- package/lib/cjs/tile/OPCFormatInterpreter.js.map +1 -1
- package/lib/cjs/tile/PntsReader.js +1 -1
- package/lib/cjs/tile/PntsReader.js.map +1 -1
- package/lib/cjs/tile/PrimaryTileTree.d.ts.map +1 -1
- package/lib/cjs/tile/PrimaryTileTree.js +2 -1
- package/lib/cjs/tile/PrimaryTileTree.js.map +1 -1
- package/lib/cjs/tile/RealityTileLoader.js +1 -1
- package/lib/cjs/tile/RealityTileLoader.js.map +1 -1
- package/lib/cjs/tile/ThreeDTileFormatInterpreter.js +1 -1
- package/lib/cjs/tile/ThreeDTileFormatInterpreter.js.map +1 -1
- package/lib/cjs/tile/TileAdmin.d.ts +7 -0
- package/lib/cjs/tile/TileAdmin.d.ts.map +1 -1
- package/lib/cjs/tile/TileAdmin.js +1 -0
- package/lib/cjs/tile/TileAdmin.js.map +1 -1
- package/lib/cjs/tile/internal.d.ts +3 -0
- package/lib/cjs/tile/internal.d.ts.map +1 -1
- package/lib/cjs/tile/internal.js +3 -0
- package/lib/cjs/tile/internal.js.map +1 -1
- package/lib/cjs/tools/ElementSetTool.js +1 -1
- package/lib/cjs/tools/ElementSetTool.js.map +1 -1
- package/lib/cjs/tools/SelectTool.js +1 -1
- package/lib/cjs/tools/SelectTool.js.map +1 -1
- package/lib/cjs/tools/ToolAdmin.js +1 -1
- package/lib/cjs/tools/ToolAdmin.js.map +1 -1
- package/lib/cjs/tools/ViewTool.js +1 -1
- package/lib/cjs/tools/ViewTool.js.map +1 -1
- package/lib/cjs/workers/ImdlParser/Worker.d.ts +20 -0
- package/lib/cjs/workers/ImdlParser/Worker.d.ts.map +1 -0
- package/lib/cjs/workers/ImdlParser/Worker.js +32 -0
- package/lib/cjs/workers/ImdlParser/Worker.js.map +1 -0
- package/lib/cjs/workers/ImdlParser/webpack.config.js +40 -0
- package/lib/cjs/workers/RegisterWorker.d.ts +9 -0
- package/lib/cjs/workers/RegisterWorker.d.ts.map +1 -0
- package/lib/cjs/workers/RegisterWorker.js +36 -0
- package/lib/cjs/workers/RegisterWorker.js.map +1 -0
- package/lib/esm/CheckpointConnection.js +1 -1
- package/lib/esm/CheckpointConnection.js.map +1 -1
- package/lib/esm/DrawingViewState.js +1 -1
- package/lib/esm/DrawingViewState.js.map +1 -1
- package/lib/esm/ElementLocateManager.js +1 -1
- package/lib/esm/ElementLocateManager.js.map +1 -1
- package/lib/esm/EnvironmentDecorations.js +1 -1
- package/lib/esm/EnvironmentDecorations.js.map +1 -1
- package/lib/esm/GeoServices.js +1 -1
- package/lib/esm/GeoServices.js.map +1 -1
- package/lib/esm/IModelApp.js +1 -1
- package/lib/esm/IModelApp.js.map +1 -1
- package/lib/esm/IModelConnection.js +1 -1
- package/lib/esm/IModelConnection.js.map +1 -1
- package/lib/esm/Marker.d.ts +1 -1
- package/lib/esm/Marker.d.ts.map +1 -1
- package/lib/esm/Marker.js +3 -3
- package/lib/esm/Marker.js.map +1 -1
- package/lib/esm/NativeApp.js +1 -1
- package/lib/esm/NativeApp.js.map +1 -1
- package/lib/esm/NoRenderApp.d.ts +1 -1
- package/lib/esm/NoRenderApp.d.ts.map +1 -1
- package/lib/esm/NoRenderApp.js +1 -1
- package/lib/esm/NoRenderApp.js.map +1 -1
- package/lib/esm/RealityDataSource.js +1 -1
- package/lib/esm/RealityDataSource.js.map +1 -1
- package/lib/esm/RealityDataSourceContextShareImpl.js +1 -1
- package/lib/esm/RealityDataSourceContextShareImpl.js.map +1 -1
- package/lib/esm/SheetViewState.d.ts.map +1 -1
- package/lib/esm/SheetViewState.js +2 -2
- package/lib/esm/SheetViewState.js.map +1 -1
- package/lib/esm/Sprites.js +2 -2
- package/lib/esm/Sprites.js.map +1 -1
- package/lib/esm/ViewingSpace.js +1 -1
- package/lib/esm/ViewingSpace.js.map +1 -1
- package/lib/esm/Viewport.d.ts +1 -1
- package/lib/esm/Viewport.d.ts.map +1 -1
- package/lib/esm/Viewport.js +1 -1
- package/lib/esm/Viewport.js.map +1 -1
- package/lib/esm/common/FrontendLoggerCategory.d.ts.map +1 -0
- package/lib/esm/common/FrontendLoggerCategory.js.map +1 -0
- package/lib/esm/common/ImageUtil.d.ts.map +1 -0
- package/lib/esm/common/ImageUtil.js.map +1 -0
- package/lib/esm/common/ViewRect.d.ts.map +1 -0
- package/lib/esm/common/ViewRect.js.map +1 -0
- package/lib/esm/common/WorkerProxy.d.ts +73 -0
- package/lib/esm/common/WorkerProxy.d.ts.map +1 -0
- package/lib/esm/common/WorkerProxy.js +50 -0
- package/lib/esm/common/WorkerProxy.js.map +1 -0
- package/lib/{cjs → esm/common}/gltf/GltfModel.d.ts +1 -1
- package/lib/esm/common/gltf/GltfModel.d.ts.map +1 -0
- package/lib/esm/common/gltf/GltfModel.js.map +1 -0
- package/lib/esm/common/gltf/GltfParser.d.ts.map +1 -0
- package/lib/esm/common/gltf/GltfParser.js.map +1 -0
- package/lib/esm/common/gltf/GltfSchema.d.ts.map +1 -0
- package/lib/esm/common/gltf/GltfSchema.js.map +1 -0
- package/lib/esm/{imdl → common/imdl}/ImdlModel.d.ts +5 -0
- package/lib/esm/common/imdl/ImdlModel.d.ts.map +1 -0
- package/lib/esm/common/imdl/ImdlModel.js +67 -0
- package/lib/esm/common/imdl/ImdlModel.js.map +1 -0
- package/lib/{cjs → esm/common}/imdl/ImdlSchema.d.ts +32 -32
- package/lib/esm/common/imdl/ImdlSchema.d.ts.map +1 -0
- package/lib/esm/common/imdl/ImdlSchema.js.map +1 -0
- package/lib/esm/{imdl/ImdlParser.d.ts → common/imdl/ParseImdlDocument.d.ts} +13 -8
- package/lib/esm/common/imdl/ParseImdlDocument.d.ts.map +1 -0
- package/lib/esm/{imdl/ImdlParser.js → common/imdl/ParseImdlDocument.js} +21 -22
- package/lib/esm/common/imdl/ParseImdlDocument.js.map +1 -0
- package/lib/esm/common/render/AnimationNodeId.d.ts +11 -0
- package/lib/esm/common/render/AnimationNodeId.d.ts.map +1 -0
- package/lib/esm/common/render/AnimationNodeId.js +16 -0
- package/lib/esm/common/render/AnimationNodeId.js.map +1 -0
- package/lib/{cjs/render/RenderMaterial.d.ts → esm/common/render/MaterialParams.d.ts} +7 -20
- package/lib/esm/common/render/MaterialParams.d.ts.map +1 -0
- package/lib/esm/{render/RenderMaterial.js → common/render/MaterialParams.js} +1 -1
- package/lib/esm/common/render/MaterialParams.js.map +1 -0
- package/lib/esm/common/render/TextureParams.d.ts +30 -0
- package/lib/esm/common/render/TextureParams.d.ts.map +1 -0
- package/lib/esm/{render/RenderTexture.js → common/render/TextureParams.js} +1 -1
- package/lib/esm/common/render/TextureParams.js.map +1 -0
- package/lib/{cjs → esm/common}/render/primitives/AuxChannelTable.d.ts +8 -8
- package/lib/esm/common/render/primitives/AuxChannelTable.d.ts.map +1 -0
- package/lib/esm/{render → common/render}/primitives/AuxChannelTable.js +9 -9
- package/lib/esm/common/render/primitives/AuxChannelTable.js.map +1 -0
- package/lib/esm/common/render/primitives/DisplayParams.d.ts.map +1 -0
- package/lib/esm/common/render/primitives/DisplayParams.js.map +1 -0
- package/lib/esm/common/render/primitives/EdgeParams.d.ts +94 -0
- package/lib/esm/common/render/primitives/EdgeParams.d.ts.map +1 -0
- package/lib/esm/common/render/primitives/EdgeParams.js +42 -0
- package/lib/esm/common/render/primitives/EdgeParams.js.map +1 -0
- package/lib/esm/common/render/primitives/MeshParams.d.ts +20 -0
- package/lib/esm/common/render/primitives/MeshParams.d.ts.map +1 -0
- package/lib/esm/common/render/primitives/MeshParams.js +9 -0
- package/lib/esm/common/render/primitives/MeshParams.js.map +1 -0
- package/lib/esm/common/render/primitives/MeshPrimitive.d.ts +29 -0
- package/lib/esm/common/render/primitives/MeshPrimitive.d.ts.map +1 -0
- package/lib/esm/common/render/primitives/MeshPrimitive.js +15 -0
- package/lib/esm/common/render/primitives/MeshPrimitive.js.map +1 -0
- package/lib/esm/common/render/primitives/PointStringParams.d.ts +14 -0
- package/lib/esm/common/render/primitives/PointStringParams.d.ts.map +1 -0
- package/lib/esm/common/render/primitives/PointStringParams.js +9 -0
- package/lib/esm/common/render/primitives/PointStringParams.js.map +1 -0
- package/lib/esm/common/render/primitives/PolylineParams.d.ts +29 -0
- package/lib/esm/common/render/primitives/PolylineParams.d.ts.map +1 -0
- package/lib/esm/common/render/primitives/PolylineParams.js +9 -0
- package/lib/esm/common/render/primitives/PolylineParams.js.map +1 -0
- package/lib/{cjs → esm/common}/render/primitives/SurfaceParams.d.ts +1 -1
- package/lib/esm/common/render/primitives/SurfaceParams.d.ts.map +1 -0
- package/lib/esm/common/render/primitives/SurfaceParams.js.map +1 -0
- package/lib/esm/common/render/primitives/VertexIndices.d.ts +26 -0
- package/lib/esm/common/render/primitives/VertexIndices.d.ts.map +1 -0
- package/lib/esm/common/render/primitives/VertexIndices.js +60 -0
- package/lib/esm/common/render/primitives/VertexIndices.js.map +1 -0
- package/lib/esm/common/render/primitives/VertexTable.d.ts +45 -0
- package/lib/esm/common/render/primitives/VertexTable.d.ts.map +1 -0
- package/lib/esm/common/render/primitives/VertexTable.js +34 -0
- package/lib/esm/common/render/primitives/VertexTable.js.map +1 -0
- package/lib/{cjs → esm/common}/render/primitives/VertexTableSplitter.d.ts +20 -3
- package/lib/esm/common/render/primitives/VertexTableSplitter.d.ts.map +1 -0
- package/lib/esm/{render → common/render}/primitives/VertexTableSplitter.js +31 -21
- package/lib/esm/common/render/primitives/VertexTableSplitter.js.map +1 -0
- package/lib/esm/core-frontend.d.ts +26 -9
- package/lib/esm/core-frontend.d.ts.map +1 -1
- package/lib/esm/core-frontend.js +26 -9
- package/lib/esm/core-frontend.js.map +1 -1
- package/lib/esm/extension/ExtensionAdmin.js +1 -1
- package/lib/esm/extension/ExtensionAdmin.js.map +1 -1
- package/lib/esm/quantity-formatting/QuantityFormatter.js +1 -1
- package/lib/esm/quantity-formatting/QuantityFormatter.js.map +1 -1
- package/lib/esm/render/CreateRenderMaterialArgs.d.ts +24 -0
- package/lib/esm/render/CreateRenderMaterialArgs.d.ts.map +1 -0
- package/lib/esm/render/CreateRenderMaterialArgs.js +9 -0
- package/lib/esm/render/CreateRenderMaterialArgs.js.map +1 -0
- package/lib/{cjs/render/RenderTexture.d.ts → esm/render/CreateTextureArgs.d.ts} +4 -28
- package/lib/esm/render/CreateTextureArgs.d.ts.map +1 -0
- package/lib/esm/render/CreateTextureArgs.js +9 -0
- package/lib/esm/render/CreateTextureArgs.js.map +1 -0
- package/lib/esm/render/GraphicBranch.d.ts +1 -7
- package/lib/esm/render/GraphicBranch.d.ts.map +1 -1
- package/lib/esm/render/GraphicBranch.js +0 -8
- package/lib/esm/render/GraphicBranch.js.map +1 -1
- package/lib/esm/render/MockRender.d.ts +4 -4
- package/lib/esm/render/MockRender.d.ts.map +1 -1
- package/lib/esm/render/MockRender.js +1 -1
- package/lib/esm/render/MockRender.js.map +1 -1
- package/lib/esm/render/ParticleCollectionBuilder.d.ts.map +1 -1
- package/lib/esm/render/ParticleCollectionBuilder.js +5 -5
- package/lib/esm/render/ParticleCollectionBuilder.js.map +1 -1
- package/lib/esm/render/RealityMeshParams.js +2 -2
- package/lib/esm/render/RealityMeshParams.js.map +1 -1
- package/lib/esm/render/RenderSystem.d.ts +7 -6
- package/lib/esm/render/RenderSystem.d.ts.map +1 -1
- package/lib/esm/render/RenderSystem.js +7 -7
- package/lib/esm/render/RenderSystem.js.map +1 -1
- package/lib/esm/render/RenderTarget.d.ts +1 -1
- package/lib/esm/render/RenderTarget.d.ts.map +1 -1
- package/lib/esm/render/RenderTarget.js.map +1 -1
- package/lib/esm/render/VisibleFeature.d.ts +1 -1
- package/lib/esm/render/VisibleFeature.d.ts.map +1 -1
- package/lib/esm/render/VisibleFeature.js.map +1 -1
- package/lib/esm/render/primitives/EdgeParams.d.ts +2 -89
- package/lib/esm/render/primitives/EdgeParams.d.ts.map +1 -1
- package/lib/esm/render/primitives/EdgeParams.js +29 -65
- package/lib/esm/render/primitives/EdgeParams.js.map +1 -1
- package/lib/esm/render/primitives/PointStringParams.d.ts +2 -11
- package/lib/esm/render/primitives/PointStringParams.d.ts.map +1 -1
- package/lib/esm/render/primitives/PointStringParams.js +24 -28
- package/lib/esm/render/primitives/PointStringParams.js.map +1 -1
- package/lib/esm/render/primitives/Polyface.d.ts +1 -1
- package/lib/esm/render/primitives/Polyface.d.ts.map +1 -1
- package/lib/esm/render/primitives/Polyface.js.map +1 -1
- package/lib/esm/render/primitives/PolylineParams.d.ts +4 -36
- package/lib/esm/render/primitives/PolylineParams.d.ts.map +1 -1
- package/lib/esm/render/primitives/PolylineParams.js +24 -36
- package/lib/esm/render/primitives/PolylineParams.js.map +1 -1
- package/lib/esm/render/primitives/Strokes.d.ts +1 -1
- package/lib/esm/render/primitives/Strokes.d.ts.map +1 -1
- package/lib/esm/render/primitives/Strokes.js.map +1 -1
- package/lib/esm/render/primitives/VertexTableBuilder.d.ts +28 -0
- package/lib/esm/render/primitives/VertexTableBuilder.d.ts.map +1 -0
- package/lib/esm/render/primitives/{VertexTable.js → VertexTableBuilder.js} +60 -171
- package/lib/esm/render/primitives/VertexTableBuilder.js.map +1 -0
- package/lib/esm/render/primitives/geometry/GeometryAccumulator.d.ts +1 -1
- package/lib/esm/render/primitives/geometry/GeometryAccumulator.d.ts.map +1 -1
- package/lib/esm/render/primitives/geometry/GeometryAccumulator.js.map +1 -1
- package/lib/esm/render/primitives/geometry/GeometryListBuilder.d.ts +1 -1
- package/lib/esm/render/primitives/geometry/GeometryListBuilder.d.ts.map +1 -1
- package/lib/esm/render/primitives/geometry/GeometryListBuilder.js +1 -1
- package/lib/esm/render/primitives/geometry/GeometryListBuilder.js.map +1 -1
- package/lib/esm/render/primitives/geometry/GeometryPrimitives.d.ts +1 -1
- package/lib/esm/render/primitives/geometry/GeometryPrimitives.d.ts.map +1 -1
- package/lib/esm/render/primitives/geometry/GeometryPrimitives.js +1 -1
- package/lib/esm/render/primitives/geometry/GeometryPrimitives.js.map +1 -1
- package/lib/esm/render/primitives/mesh/MeshBuilder.d.ts +1 -1
- package/lib/esm/render/primitives/mesh/MeshBuilder.d.ts.map +1 -1
- package/lib/esm/render/primitives/mesh/MeshBuilder.js.map +1 -1
- package/lib/esm/render/primitives/mesh/MeshBuilderMap.d.ts +6 -5
- package/lib/esm/render/primitives/mesh/MeshBuilderMap.d.ts.map +1 -1
- package/lib/esm/render/primitives/mesh/MeshBuilderMap.js +4 -3
- package/lib/esm/render/primitives/mesh/MeshBuilderMap.js.map +1 -1
- package/lib/esm/render/primitives/mesh/MeshPrimitives.d.ts +4 -25
- package/lib/esm/render/primitives/mesh/MeshPrimitives.d.ts.map +1 -1
- package/lib/esm/render/primitives/mesh/MeshPrimitives.js +9 -14
- package/lib/esm/render/primitives/mesh/MeshPrimitives.js.map +1 -1
- package/lib/esm/render/webgl/CachedGeometry.d.ts +1 -1
- package/lib/esm/render/webgl/CachedGeometry.d.ts.map +1 -1
- package/lib/esm/render/webgl/CachedGeometry.js.map +1 -1
- package/lib/esm/render/webgl/ColorInfo.d.ts +1 -1
- package/lib/esm/render/webgl/ColorInfo.d.ts.map +1 -1
- package/lib/esm/render/webgl/ColorInfo.js.map +1 -1
- package/lib/esm/render/webgl/EdgeGeometry.d.ts +2 -2
- package/lib/esm/render/webgl/EdgeGeometry.d.ts.map +1 -1
- package/lib/esm/render/webgl/EdgeGeometry.js.map +1 -1
- package/lib/esm/render/webgl/FeatureOverrides.js +1 -1
- package/lib/esm/render/webgl/FeatureOverrides.js.map +1 -1
- package/lib/esm/render/webgl/IndexedEdgeGeometry.d.ts +1 -1
- package/lib/esm/render/webgl/IndexedEdgeGeometry.d.ts.map +1 -1
- package/lib/esm/render/webgl/IndexedEdgeGeometry.js.map +1 -1
- package/lib/esm/render/webgl/Material.d.ts +1 -1
- package/lib/esm/render/webgl/Material.d.ts.map +1 -1
- package/lib/esm/render/webgl/Material.js.map +1 -1
- package/lib/esm/render/webgl/Mesh.d.ts +2 -2
- package/lib/esm/render/webgl/Mesh.d.ts.map +1 -1
- package/lib/esm/render/webgl/Mesh.js +1 -1
- package/lib/esm/render/webgl/Mesh.js.map +1 -1
- package/lib/esm/render/webgl/MeshData.d.ts +2 -2
- package/lib/esm/render/webgl/MeshData.d.ts.map +1 -1
- package/lib/esm/render/webgl/MeshData.js.map +1 -1
- package/lib/esm/render/webgl/MeshGeometry.d.ts +1 -1
- package/lib/esm/render/webgl/MeshGeometry.d.ts.map +1 -1
- package/lib/esm/render/webgl/PointString.d.ts +1 -1
- package/lib/esm/render/webgl/PointString.d.ts.map +1 -1
- package/lib/esm/render/webgl/PointString.js.map +1 -1
- package/lib/esm/render/webgl/Polyline.d.ts +1 -1
- package/lib/esm/render/webgl/Polyline.d.ts.map +1 -1
- package/lib/esm/render/webgl/Polyline.js.map +1 -1
- package/lib/esm/render/webgl/RenderCommands.js +1 -1
- package/lib/esm/render/webgl/RenderCommands.js.map +1 -1
- package/lib/esm/render/webgl/SceneCompositor.d.ts +1 -1
- package/lib/esm/render/webgl/SceneCompositor.d.ts.map +1 -1
- package/lib/esm/render/webgl/SceneCompositor.js.map +1 -1
- package/lib/esm/render/webgl/SurfaceGeometry.d.ts +1 -1
- package/lib/esm/render/webgl/SurfaceGeometry.d.ts.map +1 -1
- package/lib/esm/render/webgl/SurfaceGeometry.js +1 -1
- package/lib/esm/render/webgl/SurfaceGeometry.js.map +1 -1
- package/lib/esm/render/webgl/System.d.ts +7 -6
- package/lib/esm/render/webgl/System.d.ts.map +1 -1
- package/lib/esm/render/webgl/System.js +1 -1
- package/lib/esm/render/webgl/System.js.map +1 -1
- package/lib/esm/render/webgl/Target.d.ts +1 -1
- package/lib/esm/render/webgl/Target.d.ts.map +1 -1
- package/lib/esm/render/webgl/Target.js +3 -3
- package/lib/esm/render/webgl/Target.js.map +1 -1
- package/lib/esm/render/webgl/Texture.d.ts +1 -1
- package/lib/esm/render/webgl/Texture.d.ts.map +1 -1
- package/lib/esm/render/webgl/Texture.js +1 -1
- package/lib/esm/render/webgl/Texture.js.map +1 -1
- package/lib/esm/render/webgl/UniformHandle.js +1 -1
- package/lib/esm/render/webgl/UniformHandle.js.map +1 -1
- package/lib/esm/render/webgl/VertexLUT.d.ts +2 -2
- package/lib/esm/render/webgl/VertexLUT.d.ts.map +1 -1
- package/lib/esm/render/webgl/VertexLUT.js.map +1 -1
- package/lib/esm/render/webgl/glsl/Animation.js.map +1 -1
- package/lib/esm/render-primitives.d.ts +1 -4
- package/lib/esm/render-primitives.d.ts.map +1 -1
- package/lib/esm/render-primitives.js +1 -4
- package/lib/esm/render-primitives.js.map +1 -1
- package/lib/esm/tile/B3dmReader.d.ts +1 -1
- package/lib/esm/tile/B3dmReader.d.ts.map +1 -1
- package/lib/esm/tile/B3dmReader.js +1 -1
- package/lib/esm/tile/B3dmReader.js.map +1 -1
- package/lib/esm/tile/GltfReader.d.ts +3 -3
- package/lib/esm/tile/GltfReader.d.ts.map +1 -1
- package/lib/esm/tile/GltfReader.js +12 -21
- package/lib/esm/tile/GltfReader.js.map +1 -1
- package/lib/esm/tile/IModelTile.d.ts.map +1 -1
- package/lib/esm/tile/IModelTile.js +5 -10
- 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 +15 -1
- package/lib/esm/tile/IModelTileTree.js.map +1 -1
- package/lib/esm/tile/ImdlDecoder.d.ts +52 -0
- package/lib/esm/tile/ImdlDecoder.d.ts.map +1 -0
- package/lib/esm/tile/ImdlDecoder.js +31 -0
- package/lib/esm/tile/ImdlDecoder.js.map +1 -0
- package/lib/{cjs/imdl → esm/tile}/ImdlGraphicsCreator.d.ts +1 -1
- package/lib/esm/tile/ImdlGraphicsCreator.d.ts.map +1 -0
- package/lib/esm/{imdl → tile}/ImdlGraphicsCreator.js +5 -5
- package/lib/esm/tile/ImdlGraphicsCreator.js.map +1 -0
- package/lib/esm/tile/ImdlParser.d.ts +26 -0
- package/lib/esm/tile/ImdlParser.d.ts.map +1 -0
- package/lib/esm/tile/ImdlParser.js +68 -0
- package/lib/esm/tile/ImdlParser.js.map +1 -0
- package/lib/esm/tile/ImdlReader.d.ts +6 -1
- package/lib/esm/tile/ImdlReader.d.ts.map +1 -1
- package/lib/esm/tile/ImdlReader.js +13 -9
- package/lib/esm/tile/ImdlReader.js.map +1 -1
- package/lib/esm/tile/OPCFormatInterpreter.js +1 -1
- package/lib/esm/tile/OPCFormatInterpreter.js.map +1 -1
- package/lib/esm/tile/PntsReader.js +1 -1
- package/lib/esm/tile/PntsReader.js.map +1 -1
- package/lib/esm/tile/PrimaryTileTree.d.ts.map +1 -1
- package/lib/esm/tile/PrimaryTileTree.js +2 -1
- package/lib/esm/tile/PrimaryTileTree.js.map +1 -1
- package/lib/esm/tile/RealityTileLoader.js +1 -1
- package/lib/esm/tile/RealityTileLoader.js.map +1 -1
- package/lib/esm/tile/ThreeDTileFormatInterpreter.js +1 -1
- package/lib/esm/tile/ThreeDTileFormatInterpreter.js.map +1 -1
- package/lib/esm/tile/TileAdmin.d.ts +7 -0
- package/lib/esm/tile/TileAdmin.d.ts.map +1 -1
- package/lib/esm/tile/TileAdmin.js +1 -0
- package/lib/esm/tile/TileAdmin.js.map +1 -1
- package/lib/esm/tile/internal.d.ts +3 -0
- package/lib/esm/tile/internal.d.ts.map +1 -1
- package/lib/esm/tile/internal.js +3 -0
- package/lib/esm/tile/internal.js.map +1 -1
- package/lib/esm/tools/ElementSetTool.js +1 -1
- package/lib/esm/tools/ElementSetTool.js.map +1 -1
- package/lib/esm/tools/SelectTool.js +1 -1
- package/lib/esm/tools/SelectTool.js.map +1 -1
- package/lib/esm/tools/ToolAdmin.js +1 -1
- package/lib/esm/tools/ToolAdmin.js.map +1 -1
- package/lib/esm/tools/ViewTool.js +1 -1
- package/lib/esm/tools/ViewTool.js.map +1 -1
- package/lib/esm/workers/ImdlParser/Worker.d.ts +20 -0
- package/lib/esm/workers/ImdlParser/Worker.d.ts.map +1 -0
- package/lib/esm/workers/ImdlParser/Worker.js +30 -0
- package/lib/esm/workers/ImdlParser/Worker.js.map +1 -0
- package/lib/esm/workers/ImdlParser/webpack.config.js +40 -0
- package/lib/esm/workers/RegisterWorker.d.ts +9 -0
- package/lib/esm/workers/RegisterWorker.d.ts.map +1 -0
- package/lib/esm/workers/RegisterWorker.js +32 -0
- package/lib/esm/workers/RegisterWorker.js.map +1 -0
- package/lib/public/scripts/parse-imdl-worker.js +1 -0
- package/lib/workers/webpack/parse-imdl-worker.js +1 -0
- package/package.json +23 -20
- package/lib/cjs/FrontendLoggerCategory.d.ts.map +0 -1
- package/lib/cjs/FrontendLoggerCategory.js.map +0 -1
- package/lib/cjs/ImageUtil.d.ts.map +0 -1
- package/lib/cjs/ImageUtil.js.map +0 -1
- package/lib/cjs/ViewRect.d.ts.map +0 -1
- package/lib/cjs/ViewRect.js.map +0 -1
- package/lib/cjs/WebWorkerManager.d.ts +0 -49
- package/lib/cjs/WebWorkerManager.d.ts.map +0 -1
- package/lib/cjs/WebWorkerManager.js +0 -155
- package/lib/cjs/WebWorkerManager.js.map +0 -1
- package/lib/cjs/gltf/GltfModel.d.ts.map +0 -1
- package/lib/cjs/gltf/GltfModel.js.map +0 -1
- package/lib/cjs/gltf/GltfParser.d.ts.map +0 -1
- package/lib/cjs/gltf/GltfParser.js.map +0 -1
- package/lib/cjs/gltf/GltfSchema.d.ts.map +0 -1
- package/lib/cjs/gltf/GltfSchema.js.map +0 -1
- package/lib/cjs/imdl/ImdlGraphicsCreator.d.ts.map +0 -1
- package/lib/cjs/imdl/ImdlGraphicsCreator.js.map +0 -1
- package/lib/cjs/imdl/ImdlModel.d.ts.map +0 -1
- package/lib/cjs/imdl/ImdlModel.js.map +0 -1
- package/lib/cjs/imdl/ImdlParser.d.ts.map +0 -1
- package/lib/cjs/imdl/ImdlParser.js.map +0 -1
- package/lib/cjs/imdl/ImdlSchema.d.ts.map +0 -1
- package/lib/cjs/imdl/ImdlSchema.js.map +0 -1
- package/lib/cjs/render/RenderMaterial.d.ts.map +0 -1
- package/lib/cjs/render/RenderMaterial.js.map +0 -1
- package/lib/cjs/render/RenderTexture.d.ts.map +0 -1
- package/lib/cjs/render/RenderTexture.js.map +0 -1
- package/lib/cjs/render/primitives/AuxChannelTable.d.ts.map +0 -1
- package/lib/cjs/render/primitives/AuxChannelTable.js.map +0 -1
- package/lib/cjs/render/primitives/DisplayParams.d.ts.map +0 -1
- package/lib/cjs/render/primitives/DisplayParams.js.map +0 -1
- package/lib/cjs/render/primitives/SurfaceParams.d.ts.map +0 -1
- package/lib/cjs/render/primitives/SurfaceParams.js.map +0 -1
- package/lib/cjs/render/primitives/VertexTable.d.ts +0 -152
- package/lib/cjs/render/primitives/VertexTable.d.ts.map +0 -1
- package/lib/cjs/render/primitives/VertexTable.js.map +0 -1
- package/lib/cjs/render/primitives/VertexTableSplitter.d.ts.map +0 -1
- package/lib/cjs/render/primitives/VertexTableSplitter.js.map +0 -1
- package/lib/esm/FrontendLoggerCategory.d.ts.map +0 -1
- package/lib/esm/FrontendLoggerCategory.js.map +0 -1
- package/lib/esm/ImageUtil.d.ts.map +0 -1
- package/lib/esm/ImageUtil.js.map +0 -1
- package/lib/esm/ViewRect.d.ts.map +0 -1
- package/lib/esm/ViewRect.js.map +0 -1
- package/lib/esm/WebWorkerManager.d.ts +0 -49
- package/lib/esm/WebWorkerManager.d.ts.map +0 -1
- package/lib/esm/WebWorkerManager.js +0 -150
- package/lib/esm/WebWorkerManager.js.map +0 -1
- package/lib/esm/gltf/GltfModel.d.ts.map +0 -1
- package/lib/esm/gltf/GltfModel.js.map +0 -1
- package/lib/esm/gltf/GltfParser.d.ts.map +0 -1
- package/lib/esm/gltf/GltfParser.js.map +0 -1
- package/lib/esm/gltf/GltfSchema.d.ts.map +0 -1
- package/lib/esm/gltf/GltfSchema.js.map +0 -1
- package/lib/esm/imdl/ImdlGraphicsCreator.d.ts.map +0 -1
- package/lib/esm/imdl/ImdlGraphicsCreator.js.map +0 -1
- package/lib/esm/imdl/ImdlModel.d.ts.map +0 -1
- package/lib/esm/imdl/ImdlModel.js +0 -9
- package/lib/esm/imdl/ImdlModel.js.map +0 -1
- package/lib/esm/imdl/ImdlParser.d.ts.map +0 -1
- package/lib/esm/imdl/ImdlParser.js.map +0 -1
- package/lib/esm/imdl/ImdlSchema.d.ts.map +0 -1
- package/lib/esm/imdl/ImdlSchema.js.map +0 -1
- package/lib/esm/render/RenderMaterial.d.ts.map +0 -1
- package/lib/esm/render/RenderMaterial.js.map +0 -1
- package/lib/esm/render/RenderTexture.d.ts.map +0 -1
- package/lib/esm/render/RenderTexture.js.map +0 -1
- package/lib/esm/render/primitives/AuxChannelTable.d.ts.map +0 -1
- package/lib/esm/render/primitives/AuxChannelTable.js.map +0 -1
- package/lib/esm/render/primitives/DisplayParams.d.ts.map +0 -1
- package/lib/esm/render/primitives/DisplayParams.js.map +0 -1
- package/lib/esm/render/primitives/SurfaceParams.d.ts.map +0 -1
- package/lib/esm/render/primitives/SurfaceParams.js.map +0 -1
- package/lib/esm/render/primitives/VertexTable.d.ts +0 -152
- package/lib/esm/render/primitives/VertexTable.d.ts.map +0 -1
- package/lib/esm/render/primitives/VertexTable.js.map +0 -1
- package/lib/esm/render/primitives/VertexTableSplitter.d.ts.map +0 -1
- package/lib/esm/render/primitives/VertexTableSplitter.js.map +0 -1
- /package/lib/cjs/{FrontendLoggerCategory.d.ts → common/FrontendLoggerCategory.d.ts} +0 -0
- /package/lib/cjs/{FrontendLoggerCategory.js → common/FrontendLoggerCategory.js} +0 -0
- /package/lib/cjs/{ImageUtil.d.ts → common/ImageUtil.d.ts} +0 -0
- /package/lib/cjs/{ImageUtil.js → common/ImageUtil.js} +0 -0
- /package/lib/cjs/{ViewRect.d.ts → common/ViewRect.d.ts} +0 -0
- /package/lib/cjs/{ViewRect.js → common/ViewRect.js} +0 -0
- /package/lib/cjs/{gltf → common/gltf}/GltfModel.js +0 -0
- /package/lib/cjs/{gltf → common/gltf}/GltfParser.d.ts +0 -0
- /package/lib/cjs/{gltf → common/gltf}/GltfParser.js +0 -0
- /package/lib/cjs/{gltf → common/gltf}/GltfSchema.d.ts +0 -0
- /package/lib/cjs/{gltf → common/gltf}/GltfSchema.js +0 -0
- /package/lib/cjs/{imdl → common/imdl}/ImdlSchema.js +0 -0
- /package/lib/cjs/{render → common/render}/primitives/DisplayParams.d.ts +0 -0
- /package/lib/cjs/{render → common/render}/primitives/DisplayParams.js +0 -0
- /package/lib/cjs/{render → common/render}/primitives/SurfaceParams.js +0 -0
- /package/lib/esm/{FrontendLoggerCategory.d.ts → common/FrontendLoggerCategory.d.ts} +0 -0
- /package/lib/esm/{FrontendLoggerCategory.js → common/FrontendLoggerCategory.js} +0 -0
- /package/lib/esm/{ImageUtil.d.ts → common/ImageUtil.d.ts} +0 -0
- /package/lib/esm/{ImageUtil.js → common/ImageUtil.js} +0 -0
- /package/lib/esm/{ViewRect.d.ts → common/ViewRect.d.ts} +0 -0
- /package/lib/esm/{ViewRect.js → common/ViewRect.js} +0 -0
- /package/lib/esm/{gltf → common/gltf}/GltfModel.js +0 -0
- /package/lib/esm/{gltf → common/gltf}/GltfParser.d.ts +0 -0
- /package/lib/esm/{gltf → common/gltf}/GltfParser.js +0 -0
- /package/lib/esm/{gltf → common/gltf}/GltfSchema.d.ts +0 -0
- /package/lib/esm/{gltf → common/gltf}/GltfSchema.js +0 -0
- /package/lib/esm/{imdl → common/imdl}/ImdlSchema.js +0 -0
- /package/lib/esm/{render → common/render}/primitives/DisplayParams.d.ts +0 -0
- /package/lib/esm/{render → common/render}/primitives/DisplayParams.js +0 -0
- /package/lib/esm/{render → common/render}/primitives/SurfaceParams.js +0 -0
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"PolylineParams.js","sourceRoot":"","sources":["../../../../src/render/primitives/PolylineParams.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 Rendering\r\n */\r\n\r\nimport { assert } from \"@itwin/core-bentley\";\r\nimport { Point3d, Vector3d } from \"@itwin/core-geometry\";\r\nimport { LinePixels, PolylineData, PolylineTypeFlags, QPoint3dList } from \"@itwin/core-common\";\r\nimport { MeshArgs, PolylineArgs } from \"./mesh/MeshPrimitives\";\r\nimport { VertexIndices, VertexTable } from \"./VertexTable\";\r\n\r\n/** Parameter associated with each vertex index of a tesselated polyline. */\r\nconst enum PolylineParam { // eslint-disable-line no-restricted-syntax\r\n kNone = 0,\r\n kSquare = 1 * 3,\r\n kMiter = 2 * 3,\r\n kMiterInsideOnly = 3 * 3,\r\n kJointBase = 4 * 3,\r\n kNegatePerp = 8 * 3,\r\n kNegateAlong = 16 * 3,\r\n kNoneAdjustWeight = 32 * 3,\r\n}\r\n\r\n/**\r\n * Represents a tesselated polyline.\r\n * Given a polyline as a line string, each segment of the line string is triangulated into a quad.\r\n * Based on the angle between two segments, additional joint triangles may be inserted in between to enable smoothly-rounded corners.\r\n * @internal\r\n */\r\nexport interface TesselatedPolyline {\r\n /** 24-bit index of each vertex. */\r\n readonly indices: VertexIndices;\r\n /** 24-bit index of the previous vertex in the polyline. */\r\n readonly prevIndices: VertexIndices;\r\n /** 24-bit index of the next vertex in the polyline, plus 8-bit parameter describing the semantics of this vertex. */\r\n readonly nextIndicesAndParams: Uint8Array;\r\n}\r\n\r\nexport namespace TesselatedPolyline {\r\n export function fromMesh(args: MeshArgs): TesselatedPolyline | undefined {\r\n const tesselator = PolylineTesselator.fromMesh(args);\r\n return tesselator?.tesselate();\r\n }\r\n}\r\n\r\nclass PolylineVertex {\r\n public isSegmentStart: boolean = false;\r\n public isPolylineStartOrEnd: boolean = false;\r\n public vertexIndex: number = 0;\r\n public prevIndex: number = 0;\r\n public nextIndex: number = 0;\r\n\r\n public constructor() { }\r\n\r\n public init(isSegmentStart: boolean, isPolylineStartOrEnd: boolean, vertexIndex: number, prevIndex: number, nextIndex: number) {\r\n this.isSegmentStart = isSegmentStart;\r\n this.isPolylineStartOrEnd = isPolylineStartOrEnd;\r\n this.vertexIndex = vertexIndex;\r\n this.prevIndex = prevIndex;\r\n this.nextIndex = nextIndex;\r\n }\r\n\r\n public computeParam(negatePerp: boolean, adjacentToJoint: boolean = false, joint: boolean = false, noDisplacement: boolean = false): number {\r\n if (joint)\r\n return PolylineParam.kJointBase;\r\n\r\n let param: PolylineParam;\r\n if (noDisplacement)\r\n param = PolylineParam.kNoneAdjustWeight; // prevent getting tossed before width adjustment\r\n else if (adjacentToJoint)\r\n param = PolylineParam.kMiterInsideOnly;\r\n else\r\n param = this.isPolylineStartOrEnd ? PolylineParam.kSquare : PolylineParam.kMiter;\r\n\r\n let adjust = 0;\r\n if (negatePerp)\r\n adjust = PolylineParam.kNegatePerp;\r\n if (!this.isSegmentStart)\r\n adjust += PolylineParam.kNegateAlong;\r\n\r\n return param + adjust;\r\n }\r\n}\r\n\r\nclass PolylineTesselator {\r\n private _polylines: PolylineData[];\r\n private _doJoints: boolean;\r\n private _numIndices = 0;\r\n private _vertIndex: number[] = [];\r\n private _prevIndex: number[] = [];\r\n private _nextIndex: number[] = [];\r\n private _nextParam: number[] = [];\r\n private _position: Point3d[] = [];\r\n\r\n public constructor(polylines: PolylineData[], points: QPoint3dList | Point3d[], doJointTriangles: boolean) {\r\n this._polylines = polylines;\r\n if (points instanceof QPoint3dList) {\r\n for (const p of points.list)\r\n this._position.push(p.unquantize(points.params));\r\n } else {\r\n this._position = points;\r\n }\r\n\r\n this._doJoints = doJointTriangles;\r\n }\r\n\r\n public static fromPolyline(args: PolylineArgs): PolylineTesselator {\r\n return new PolylineTesselator(args.polylines, args.points, wantJointTriangles(args.width, args.flags.is2d));\r\n }\r\n\r\n public static fromMesh(args: MeshArgs): PolylineTesselator | undefined {\r\n if (undefined !== args.edges?.polylines.lines && undefined !== args.points)\r\n return new PolylineTesselator(args.edges.polylines.lines, args.points, wantJointTriangles(args.edges.width, true === args.is2d));\r\n\r\n return undefined;\r\n }\r\n\r\n public tesselate(): TesselatedPolyline {\r\n this._tesselate();\r\n\r\n const vertIndex = VertexIndices.fromArray(this._vertIndex);\r\n const prevIndex = VertexIndices.fromArray(this._prevIndex);\r\n\r\n const nextIndexAndParam = new Uint8Array(this._numIndices * 4);\r\n for (let i = 0; i < this._numIndices; i++) {\r\n const index = this._nextIndex[i];\r\n const j = i * 4;\r\n VertexIndices.encodeIndex(index, nextIndexAndParam, j);\r\n nextIndexAndParam[j + 3] = this._nextParam[i] & 0x000000ff;\r\n }\r\n\r\n return {\r\n indices: vertIndex,\r\n prevIndices: prevIndex,\r\n nextIndicesAndParams: nextIndexAndParam,\r\n };\r\n }\r\n\r\n private _tesselate() {\r\n const v0 = new PolylineVertex(), v1 = new PolylineVertex();\r\n const maxJointDot = -0.7;\r\n\r\n for (const line of this._polylines) {\r\n if (line.numIndices < 2)\r\n continue;\r\n\r\n const last = line.numIndices - 1;\r\n const isClosed: boolean = line.vertIndices[0] === line.vertIndices[last];\r\n\r\n for (let i = 0; i < last; ++i) {\r\n const idx0 = line.vertIndices[i];\r\n const idx1 = line.vertIndices[i + 1];\r\n const isStart: boolean = (0 === i);\r\n const isEnd: boolean = (last - 1 === i);\r\n const prevIdx0 = isStart ? (isClosed ? line.vertIndices[last - 1] : idx0) : line.vertIndices[i - 1];\r\n const nextIdx1 = isEnd ? (isClosed ? line.vertIndices[1] : idx1) : line.vertIndices[i + 2];\r\n\r\n v0.init(true, isStart && !isClosed, idx0, prevIdx0, idx1);\r\n v1.init(false, isEnd && !isClosed, idx1, nextIdx1, idx0);\r\n\r\n const jointAt0: boolean = this._doJoints && (isClosed || !isStart) && this._dotProduct(v0) > maxJointDot;\r\n const jointAt1: boolean = this._doJoints && (isClosed || !isEnd) && this._dotProduct(v1) > maxJointDot;\r\n\r\n if (jointAt0 || jointAt1) {\r\n this._addVertex(v0, v0.computeParam(true, jointAt0, false, false));\r\n this._addVertex(v1, v1.computeParam(false, jointAt1, false, false));\r\n this._addVertex(v0, v0.computeParam(false, jointAt0, false, true));\r\n this._addVertex(v0, v0.computeParam(false, jointAt0, false, true));\r\n this._addVertex(v1, v1.computeParam(false, jointAt1, false, false));\r\n this._addVertex(v1, v1.computeParam(false, jointAt1, false, true));\r\n this._addVertex(v0, v0.computeParam(false, jointAt0, false, true));\r\n this._addVertex(v1, v1.computeParam(false, jointAt1, false, true));\r\n this._addVertex(v0, v0.computeParam(false, jointAt0, false, false));\r\n this._addVertex(v0, v0.computeParam(false, jointAt0, false, false));\r\n this._addVertex(v1, v1.computeParam(false, jointAt1, false, true));\r\n this._addVertex(v1, v1.computeParam(true, jointAt1, false, false));\r\n\r\n if (jointAt0)\r\n this.addJointTriangles(v0, v0.computeParam(false, true, false, true), v0);\r\n\r\n if (jointAt1)\r\n this.addJointTriangles(v1, v1.computeParam(false, true, false, true), v1);\r\n } else {\r\n this._addVertex(v0, v0.computeParam(true));\r\n this._addVertex(v1, v1.computeParam(false));\r\n this._addVertex(v0, v0.computeParam(false));\r\n this._addVertex(v0, v0.computeParam(false));\r\n this._addVertex(v1, v1.computeParam(false));\r\n this._addVertex(v1, v1.computeParam(true));\r\n }\r\n }\r\n }\r\n }\r\n\r\n private addJointTriangles(v0: PolylineVertex, p0: number, v1: PolylineVertex): void {\r\n const param = v1.computeParam(false, false, true);\r\n for (let i = 0; i < 3; i++) {\r\n this._addVertex(v0, p0);\r\n this._addVertex(v1, param + i + 1);\r\n this._addVertex(v1, param + i);\r\n }\r\n }\r\n\r\n private _dotProduct(v: PolylineVertex): number {\r\n const pos: Point3d = this._position[v.vertexIndex];\r\n const prevDir: Vector3d = Vector3d.createStartEnd(this._position[v.prevIndex], pos);\r\n const nextDir: Vector3d = Vector3d.createStartEnd(this._position[v.nextIndex], pos);\r\n return prevDir.dotProduct(nextDir);\r\n }\r\n\r\n private _addVertex(vertex: PolylineVertex, param: number): void {\r\n this._vertIndex[this._numIndices] = vertex.vertexIndex;\r\n this._prevIndex[this._numIndices] = vertex.prevIndex;\r\n this._nextIndex[this._numIndices] = vertex.nextIndex;\r\n this._nextParam[this._numIndices] = param;\r\n this._numIndices++;\r\n }\r\n}\r\n\r\n/** Strictly for tests. @internal */\r\nexport function tesselatePolyline(polylines: PolylineData[], points: QPoint3dList, doJointTriangles: boolean): TesselatedPolyline {\r\n const tesselator = new PolylineTesselator(polylines, points, doJointTriangles);\r\n return tesselator.tesselate();\r\n}\r\n\r\n/**\r\n * Describes a set of tesselated polylines.\r\n * Each segment of each polyline is triangulated into a quad. Additional triangles may be inserted\r\n * between segments to enable rounded corners.\r\n */\r\nexport class PolylineParams {\r\n public readonly vertices: VertexTable;\r\n public readonly polyline: TesselatedPolyline;\r\n public readonly isPlanar: boolean;\r\n public readonly type: PolylineTypeFlags;\r\n public readonly weight: number;\r\n public readonly linePixels: LinePixels;\r\n\r\n /** Directly construct a PolylineParams. The PolylineParams takes ownership of all input data. */\r\n public constructor(vertices: VertexTable, polyline: TesselatedPolyline, weight: number, linePixels: LinePixels, isPlanar: boolean, type: PolylineTypeFlags = PolylineTypeFlags.Normal) {\r\n this.vertices = vertices;\r\n this.polyline = polyline;\r\n this.isPlanar = isPlanar;\r\n this.weight = weight;\r\n this.linePixels = linePixels;\r\n this.type = type;\r\n }\r\n\r\n /** Construct from an PolylineArgs. */\r\n public static create(args: PolylineArgs): PolylineParams | undefined {\r\n assert(!args.flags.isDisjoint);\r\n const vertices = VertexTable.createForPolylines(args);\r\n if (undefined === vertices)\r\n return undefined;\r\n\r\n const tesselator = PolylineTesselator.fromPolyline(args);\r\n if (undefined === tesselator)\r\n return undefined;\r\n\r\n return new PolylineParams(vertices, tesselator.tesselate(), args.width, args.linePixels, args.flags.isPlanar, args.flags.type);\r\n }\r\n}\r\n\r\nexport function wantJointTriangles(weight: number, is2d: boolean): boolean {\r\n // Joints are incredibly expensive. In 3d, only generate them if the line is sufficiently wide for them to be noticeable.\r\n const jointWidthThreshold = 3;\r\n return is2d || weight >= jointWidthThreshold;\r\n}\r\n"]}
|
|
1
|
+
{"version":3,"file":"PolylineParams.js","sourceRoot":"","sources":["../../../../src/render/primitives/PolylineParams.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 Rendering\r\n */\r\n\r\nimport { assert } from \"@itwin/core-bentley\";\r\nimport { Point3d, Vector3d } from \"@itwin/core-geometry\";\r\nimport { PolylineData, QPoint3dList } from \"@itwin/core-common\";\r\nimport { MeshArgs, PolylineArgs } from \"./mesh/MeshPrimitives\";\r\nimport { VertexTableBuilder } from \"./VertexTableBuilder\";\r\nimport { PolylineParams, TesselatedPolyline } from \"../../common/render/primitives/PolylineParams\";\r\nimport { VertexIndices } from \"../../common/render/primitives/VertexIndices\";\r\nimport { IModelApp } from \"../../IModelApp\";\r\n\r\n/** Parameter associated with each vertex index of a tesselated polyline. */\r\nconst enum PolylineParam { // eslint-disable-line no-restricted-syntax\r\n kNone = 0,\r\n kSquare = 1 * 3,\r\n kMiter = 2 * 3,\r\n kMiterInsideOnly = 3 * 3,\r\n kJointBase = 4 * 3,\r\n kNegatePerp = 8 * 3,\r\n kNegateAlong = 16 * 3,\r\n kNoneAdjustWeight = 32 * 3,\r\n}\r\n\r\nexport function tesselatePolylineFromMesh(args: MeshArgs): TesselatedPolyline | undefined {\r\n const tesselator = PolylineTesselator.fromMesh(args);\r\n return tesselator?.tesselate();\r\n}\r\n\r\nclass PolylineVertex {\r\n public isSegmentStart: boolean = false;\r\n public isPolylineStartOrEnd: boolean = false;\r\n public vertexIndex: number = 0;\r\n public prevIndex: number = 0;\r\n public nextIndex: number = 0;\r\n\r\n public constructor() { }\r\n\r\n public init(isSegmentStart: boolean, isPolylineStartOrEnd: boolean, vertexIndex: number, prevIndex: number, nextIndex: number) {\r\n this.isSegmentStart = isSegmentStart;\r\n this.isPolylineStartOrEnd = isPolylineStartOrEnd;\r\n this.vertexIndex = vertexIndex;\r\n this.prevIndex = prevIndex;\r\n this.nextIndex = nextIndex;\r\n }\r\n\r\n public computeParam(negatePerp: boolean, adjacentToJoint: boolean = false, joint: boolean = false, noDisplacement: boolean = false): number {\r\n if (joint)\r\n return PolylineParam.kJointBase;\r\n\r\n let param: PolylineParam;\r\n if (noDisplacement)\r\n param = PolylineParam.kNoneAdjustWeight; // prevent getting tossed before width adjustment\r\n else if (adjacentToJoint)\r\n param = PolylineParam.kMiterInsideOnly;\r\n else\r\n param = this.isPolylineStartOrEnd ? PolylineParam.kSquare : PolylineParam.kMiter;\r\n\r\n let adjust = 0;\r\n if (negatePerp)\r\n adjust = PolylineParam.kNegatePerp;\r\n if (!this.isSegmentStart)\r\n adjust += PolylineParam.kNegateAlong;\r\n\r\n return param + adjust;\r\n }\r\n}\r\n\r\nclass PolylineTesselator {\r\n private _polylines: PolylineData[];\r\n private _doJoints: boolean;\r\n private _numIndices = 0;\r\n private _vertIndex: number[] = [];\r\n private _prevIndex: number[] = [];\r\n private _nextIndex: number[] = [];\r\n private _nextParam: number[] = [];\r\n private _position: Point3d[] = [];\r\n\r\n public constructor(polylines: PolylineData[], points: QPoint3dList | Point3d[], doJointTriangles: boolean) {\r\n this._polylines = polylines;\r\n if (points instanceof QPoint3dList) {\r\n for (const p of points.list)\r\n this._position.push(p.unquantize(points.params));\r\n } else {\r\n this._position = points;\r\n }\r\n\r\n this._doJoints = doJointTriangles;\r\n }\r\n\r\n public static fromPolyline(args: PolylineArgs): PolylineTesselator {\r\n return new PolylineTesselator(args.polylines, args.points, wantJointTriangles(args.width, args.flags.is2d));\r\n }\r\n\r\n public static fromMesh(args: MeshArgs): PolylineTesselator | undefined {\r\n if (undefined !== args.edges?.polylines.lines && undefined !== args.points)\r\n return new PolylineTesselator(args.edges.polylines.lines, args.points, wantJointTriangles(args.edges.width, true === args.is2d));\r\n\r\n return undefined;\r\n }\r\n\r\n public tesselate(): TesselatedPolyline {\r\n this._tesselate();\r\n\r\n const vertIndex = VertexIndices.fromArray(this._vertIndex);\r\n const prevIndex = VertexIndices.fromArray(this._prevIndex);\r\n\r\n const nextIndexAndParam = new Uint8Array(this._numIndices * 4);\r\n for (let i = 0; i < this._numIndices; i++) {\r\n const index = this._nextIndex[i];\r\n const j = i * 4;\r\n VertexIndices.encodeIndex(index, nextIndexAndParam, j);\r\n nextIndexAndParam[j + 3] = this._nextParam[i] & 0x000000ff;\r\n }\r\n\r\n return {\r\n indices: vertIndex,\r\n prevIndices: prevIndex,\r\n nextIndicesAndParams: nextIndexAndParam,\r\n };\r\n }\r\n\r\n private _tesselate() {\r\n const v0 = new PolylineVertex(), v1 = new PolylineVertex();\r\n const maxJointDot = -0.7;\r\n\r\n for (const line of this._polylines) {\r\n if (line.numIndices < 2)\r\n continue;\r\n\r\n const last = line.numIndices - 1;\r\n const isClosed: boolean = line.vertIndices[0] === line.vertIndices[last];\r\n\r\n for (let i = 0; i < last; ++i) {\r\n const idx0 = line.vertIndices[i];\r\n const idx1 = line.vertIndices[i + 1];\r\n const isStart: boolean = (0 === i);\r\n const isEnd: boolean = (last - 1 === i);\r\n const prevIdx0 = isStart ? (isClosed ? line.vertIndices[last - 1] : idx0) : line.vertIndices[i - 1];\r\n const nextIdx1 = isEnd ? (isClosed ? line.vertIndices[1] : idx1) : line.vertIndices[i + 2];\r\n\r\n v0.init(true, isStart && !isClosed, idx0, prevIdx0, idx1);\r\n v1.init(false, isEnd && !isClosed, idx1, nextIdx1, idx0);\r\n\r\n const jointAt0: boolean = this._doJoints && (isClosed || !isStart) && this._dotProduct(v0) > maxJointDot;\r\n const jointAt1: boolean = this._doJoints && (isClosed || !isEnd) && this._dotProduct(v1) > maxJointDot;\r\n\r\n if (jointAt0 || jointAt1) {\r\n this._addVertex(v0, v0.computeParam(true, jointAt0, false, false));\r\n this._addVertex(v1, v1.computeParam(false, jointAt1, false, false));\r\n this._addVertex(v0, v0.computeParam(false, jointAt0, false, true));\r\n this._addVertex(v0, v0.computeParam(false, jointAt0, false, true));\r\n this._addVertex(v1, v1.computeParam(false, jointAt1, false, false));\r\n this._addVertex(v1, v1.computeParam(false, jointAt1, false, true));\r\n this._addVertex(v0, v0.computeParam(false, jointAt0, false, true));\r\n this._addVertex(v1, v1.computeParam(false, jointAt1, false, true));\r\n this._addVertex(v0, v0.computeParam(false, jointAt0, false, false));\r\n this._addVertex(v0, v0.computeParam(false, jointAt0, false, false));\r\n this._addVertex(v1, v1.computeParam(false, jointAt1, false, true));\r\n this._addVertex(v1, v1.computeParam(true, jointAt1, false, false));\r\n\r\n if (jointAt0)\r\n this.addJointTriangles(v0, v0.computeParam(false, true, false, true), v0);\r\n\r\n if (jointAt1)\r\n this.addJointTriangles(v1, v1.computeParam(false, true, false, true), v1);\r\n } else {\r\n this._addVertex(v0, v0.computeParam(true));\r\n this._addVertex(v1, v1.computeParam(false));\r\n this._addVertex(v0, v0.computeParam(false));\r\n this._addVertex(v0, v0.computeParam(false));\r\n this._addVertex(v1, v1.computeParam(false));\r\n this._addVertex(v1, v1.computeParam(true));\r\n }\r\n }\r\n }\r\n }\r\n\r\n private addJointTriangles(v0: PolylineVertex, p0: number, v1: PolylineVertex): void {\r\n const param = v1.computeParam(false, false, true);\r\n for (let i = 0; i < 3; i++) {\r\n this._addVertex(v0, p0);\r\n this._addVertex(v1, param + i + 1);\r\n this._addVertex(v1, param + i);\r\n }\r\n }\r\n\r\n private _dotProduct(v: PolylineVertex): number {\r\n const pos: Point3d = this._position[v.vertexIndex];\r\n const prevDir: Vector3d = Vector3d.createStartEnd(this._position[v.prevIndex], pos);\r\n const nextDir: Vector3d = Vector3d.createStartEnd(this._position[v.nextIndex], pos);\r\n return prevDir.dotProduct(nextDir);\r\n }\r\n\r\n private _addVertex(vertex: PolylineVertex, param: number): void {\r\n this._vertIndex[this._numIndices] = vertex.vertexIndex;\r\n this._prevIndex[this._numIndices] = vertex.prevIndex;\r\n this._nextIndex[this._numIndices] = vertex.nextIndex;\r\n this._nextParam[this._numIndices] = param;\r\n this._numIndices++;\r\n }\r\n}\r\n\r\n/** Strictly for tests. @internal */\r\nexport function tesselatePolyline(polylines: PolylineData[], points: QPoint3dList, doJointTriangles: boolean): TesselatedPolyline {\r\n const tesselator = new PolylineTesselator(polylines, points, doJointTriangles);\r\n return tesselator.tesselate();\r\n}\r\n\r\nexport function createPolylineParams(args: PolylineArgs): PolylineParams | undefined {\r\n assert(!args.flags.isDisjoint);\r\n const vertices = VertexTableBuilder.buildFromPolylines(args, IModelApp.renderSystem.maxTextureSize);\r\n if (undefined === vertices)\r\n return undefined;\r\n\r\n const tesselator = PolylineTesselator.fromPolyline(args);\r\n if (undefined === tesselator)\r\n return undefined;\r\n\r\n return {\r\n vertices,\r\n polyline: tesselator.tesselate(),\r\n isPlanar: args.flags.isPlanar,\r\n type: args.flags.type,\r\n weight: args.width,\r\n linePixels: args.linePixels,\r\n };\r\n}\r\n\r\nexport function wantJointTriangles(weight: number, is2d: boolean): boolean {\r\n // Joints are incredibly expensive. In 3d, only generate them if the line is sufficiently wide for them to be noticeable.\r\n const jointWidthThreshold = 3;\r\n return is2d || weight >= jointWidthThreshold;\r\n}\r\n"]}
|
|
@@ -2,7 +2,7 @@
|
|
|
2
2
|
* @module Rendering
|
|
3
3
|
*/
|
|
4
4
|
import { Point3d, Transform } from "@itwin/core-geometry";
|
|
5
|
-
import { DisplayParams } from "
|
|
5
|
+
import { DisplayParams } from "../../common/render/primitives/DisplayParams";
|
|
6
6
|
/** @internal */
|
|
7
7
|
export declare class StrokesPrimitivePointList {
|
|
8
8
|
points: Point3d[];
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Strokes.d.ts","sourceRoot":"","sources":["../../../../src/render/primitives/Strokes.ts"],"names":[],"mappings":"AAIA;;GAEG;AAEH,OAAO,EAAE,OAAO,EAAE,SAAS,EAAE,MAAM,sBAAsB,CAAC;AAC1D,OAAO,EAAE,aAAa,EAAE,MAAM,
|
|
1
|
+
{"version":3,"file":"Strokes.d.ts","sourceRoot":"","sources":["../../../../src/render/primitives/Strokes.ts"],"names":[],"mappings":"AAIA;;GAEG;AAEH,OAAO,EAAE,OAAO,EAAE,SAAS,EAAE,MAAM,sBAAsB,CAAC;AAC1D,OAAO,EAAE,aAAa,EAAE,MAAM,8CAA8C,CAAC;AAE7E,gBAAgB;AAChB,qBAAa,yBAAyB;IAC7B,MAAM,EAAE,OAAO,EAAE,CAAC;gBACb,MAAM,GAAE,OAAO,EAAO;CACnC;AAED,gBAAgB;AAChB,qBAAa,0BAA2B,SAAQ,KAAK,CAAC,yBAAyB,CAAC;gBAClE,GAAG,IAAI,EAAE,yBAAyB,EAAE;CAGjD;AAED,gBAAgB;AAChB,qBAAa,gBAAgB;IAC3B,SAAgB,aAAa,EAAE,aAAa,CAAC;IAC7C,SAAgB,UAAU,EAAE,OAAO,CAAC;IACpC,SAAgB,QAAQ,EAAE,OAAO,CAAC;IAC3B,OAAO,EAAE,0BAA0B,CAAC;WAE7B,MAAM,CAAC,MAAM,EAAE,aAAa,EAAE,UAAU,EAAE,OAAO,EAAE,QAAQ,EAAE,OAAO;IAIlF,OAAO;IAOA,SAAS,CAAC,KAAK,EAAE,SAAS;CAKlC;AAED,gBAAgB;AAChB,qBAAa,oBAAqB,SAAQ,KAAK,CAAC,gBAAgB,CAAC;gBACnD,GAAG,IAAI,EAAE,gBAAgB,EAAE;CAGxC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Strokes.js","sourceRoot":"","sources":["../../../../src/render/primitives/Strokes.ts"],"names":[],"mappings":"AAAA;;;+FAG+F;AAC/F;;GAEG;AAKH,gBAAgB;AAChB,MAAM,OAAO,yBAAyB;IAEpC,YAAY,SAAoB,EAAE,IAAI,IAAI,CAAC,MAAM,GAAG,CAAC,GAAG,MAAM,CAAC,CAAC,CAAC,CAAC;CACnE;AAED,gBAAgB;AAChB,MAAM,OAAO,0BAA2B,SAAQ,KAAgC;IAC9E,YAAY,GAAG,IAAiC;QAC9C,KAAK,CAAC,GAAG,IAAI,CAAC,CAAC;IACjB,CAAC;CACF;AAED,gBAAgB;AAChB,MAAM,OAAO,gBAAgB;IAMpB,MAAM,CAAC,MAAM,CAAC,MAAqB,EAAE,UAAmB,EAAE,QAAiB;QAChF,OAAO,IAAI,gBAAgB,CAAC,MAAM,EAAE,UAAU,EAAE,QAAQ,CAAC,CAAC;IAC5D,CAAC;IAED,YAAoB,MAAqB,EAAE,UAAmB,EAAE,QAAiB;QAC/E,IAAI,CAAC,aAAa,GAAG,MAAM,CAAC;QAC5B,IAAI,CAAC,OAAO,GAAG,IAAI,0BAA0B,EAAE,CAAC;QAChD,IAAI,CAAC,UAAU,GAAG,UAAU,CAAC;QAC7B,IAAI,CAAC,QAAQ,GAAG,QAAQ,CAAC;IAC3B,CAAC;IAEM,SAAS,CAAC,KAAgB;QAC/B,KAAK,MAAM,IAAI,IAAI,IAAI,CAAC,OAAO,EAAE;YAC/B,KAAK,CAAC,2BAA2B,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;SAChD;IACH,CAAC;CACF;AAED,gBAAgB;AAChB,MAAM,OAAO,oBAAqB,SAAQ,KAAuB;IAC/D,YAAY,GAAG,IAAwB;QACrC,KAAK,CAAC,GAAG,IAAI,CAAC,CAAC;IACjB,CAAC;CACF","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 Rendering\r\n */\r\n\r\nimport { Point3d, Transform } from \"@itwin/core-geometry\";\r\nimport { DisplayParams } from \"
|
|
1
|
+
{"version":3,"file":"Strokes.js","sourceRoot":"","sources":["../../../../src/render/primitives/Strokes.ts"],"names":[],"mappings":"AAAA;;;+FAG+F;AAC/F;;GAEG;AAKH,gBAAgB;AAChB,MAAM,OAAO,yBAAyB;IAEpC,YAAY,SAAoB,EAAE,IAAI,IAAI,CAAC,MAAM,GAAG,CAAC,GAAG,MAAM,CAAC,CAAC,CAAC,CAAC;CACnE;AAED,gBAAgB;AAChB,MAAM,OAAO,0BAA2B,SAAQ,KAAgC;IAC9E,YAAY,GAAG,IAAiC;QAC9C,KAAK,CAAC,GAAG,IAAI,CAAC,CAAC;IACjB,CAAC;CACF;AAED,gBAAgB;AAChB,MAAM,OAAO,gBAAgB;IAMpB,MAAM,CAAC,MAAM,CAAC,MAAqB,EAAE,UAAmB,EAAE,QAAiB;QAChF,OAAO,IAAI,gBAAgB,CAAC,MAAM,EAAE,UAAU,EAAE,QAAQ,CAAC,CAAC;IAC5D,CAAC;IAED,YAAoB,MAAqB,EAAE,UAAmB,EAAE,QAAiB;QAC/E,IAAI,CAAC,aAAa,GAAG,MAAM,CAAC;QAC5B,IAAI,CAAC,OAAO,GAAG,IAAI,0BAA0B,EAAE,CAAC;QAChD,IAAI,CAAC,UAAU,GAAG,UAAU,CAAC;QAC7B,IAAI,CAAC,QAAQ,GAAG,QAAQ,CAAC;IAC3B,CAAC;IAEM,SAAS,CAAC,KAAgB;QAC/B,KAAK,MAAM,IAAI,IAAI,IAAI,CAAC,OAAO,EAAE;YAC/B,KAAK,CAAC,2BAA2B,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;SAChD;IACH,CAAC;CACF;AAED,gBAAgB;AAChB,MAAM,OAAO,oBAAqB,SAAQ,KAAuB;IAC/D,YAAY,GAAG,IAAwB;QACrC,KAAK,CAAC,GAAG,IAAI,CAAC,CAAC;IACjB,CAAC;CACF","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 Rendering\r\n */\r\n\r\nimport { Point3d, Transform } from \"@itwin/core-geometry\";\r\nimport { DisplayParams } from \"../../common/render/primitives/DisplayParams\";\r\n\r\n/** @internal */\r\nexport class StrokesPrimitivePointList {\r\n public points: Point3d[];\r\n constructor(points: Point3d[] = []) { this.points = [...points]; }\r\n}\r\n\r\n/** @internal */\r\nexport class StrokesPrimitivePointLists extends Array<StrokesPrimitivePointList> {\r\n constructor(...args: StrokesPrimitivePointList[]) {\r\n super(...args);\r\n }\r\n}\r\n\r\n/** @internal */\r\nexport class StrokesPrimitive {\r\n public readonly displayParams: DisplayParams;\r\n public readonly isDisjoint: boolean;\r\n public readonly isPlanar: boolean;\r\n public strokes: StrokesPrimitivePointLists;\r\n\r\n public static create(params: DisplayParams, isDisjoint: boolean, isPlanar: boolean) {\r\n return new StrokesPrimitive(params, isDisjoint, isPlanar);\r\n }\r\n\r\n private constructor(params: DisplayParams, isDisjoint: boolean, isPlanar: boolean) {\r\n this.displayParams = params;\r\n this.strokes = new StrokesPrimitivePointLists();\r\n this.isDisjoint = isDisjoint;\r\n this.isPlanar = isPlanar;\r\n }\r\n\r\n public transform(trans: Transform) {\r\n for (const strk of this.strokes) {\r\n trans.multiplyPoint3dArrayInPlace(strk.points);\r\n }\r\n }\r\n}\r\n\r\n/** @internal */\r\nexport class StrokesPrimitiveList extends Array<StrokesPrimitive> {\r\n constructor(...args: StrokesPrimitive[]) {\r\n super(...args);\r\n }\r\n}\r\n"]}
|
|
@@ -0,0 +1,28 @@
|
|
|
1
|
+
/** @packageDocumentation
|
|
2
|
+
* @module Rendering
|
|
3
|
+
*/
|
|
4
|
+
import { ColorIndex, FeatureIndex, QParams2d, QParams3d } from "@itwin/core-common";
|
|
5
|
+
import { VertexTable } from "../../common/render/primitives/VertexTable";
|
|
6
|
+
import { MeshParams } from "../../common/render/primitives/MeshParams";
|
|
7
|
+
import { MeshArgs, PolylineArgs } from "./mesh/MeshPrimitives";
|
|
8
|
+
export declare function createMeshParams(args: MeshArgs, maxDimension: number): MeshParams;
|
|
9
|
+
/** Builds a VertexTable from some data type supplying the vertex data. */
|
|
10
|
+
export declare abstract class VertexTableBuilder {
|
|
11
|
+
data?: Uint8Array;
|
|
12
|
+
private _curIndex;
|
|
13
|
+
abstract get numVertices(): number;
|
|
14
|
+
abstract get numRgbaPerVertex(): number;
|
|
15
|
+
abstract get qparams(): QParams3d;
|
|
16
|
+
abstract get usesUnquantizedPositions(): boolean;
|
|
17
|
+
get uvParams(): QParams2d | undefined;
|
|
18
|
+
abstract appendVertex(vertIndex: number): void;
|
|
19
|
+
appendColorTable(colorIndex: ColorIndex): void;
|
|
20
|
+
protected advance(nBytes: number): void;
|
|
21
|
+
protected append8(val: number): void;
|
|
22
|
+
protected append16(val: number): void;
|
|
23
|
+
protected append32(val: number): void;
|
|
24
|
+
private appendColor;
|
|
25
|
+
build(colorIndex: ColorIndex, featureIndex: FeatureIndex, maxDimension: number): VertexTable;
|
|
26
|
+
static buildFromPolylines(args: PolylineArgs, maxDimension: number): VertexTable | undefined;
|
|
27
|
+
}
|
|
28
|
+
//# sourceMappingURL=VertexTableBuilder.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"VertexTableBuilder.d.ts","sourceRoot":"","sources":["../../../../src/render/primitives/VertexTableBuilder.ts"],"names":[],"mappings":"AAIA;;GAEG;AAIH,OAAO,EACK,UAAU,EAAE,YAAY,EAAoB,SAAS,EAAE,SAAS,EAC3E,MAAM,oBAAoB,CAAC;AAE5B,OAAO,EAAqB,WAAW,EAAE,MAAM,4CAA4C,CAAC;AAE5F,OAAO,EAAE,UAAU,EAAE,MAAM,2CAA2C,CAAC;AAGvE,OAAO,EAAE,QAAQ,EAAE,YAAY,EAAE,MAAM,uBAAuB,CAAC;AAG/D,wBAAgB,gBAAgB,CAAC,IAAI,EAAE,QAAQ,EAAE,YAAY,EAAE,MAAM,GAAG,UAAU,CAwBjF;AAED,0EAA0E;AAC1E,8BAAsB,kBAAkB;IAC/B,IAAI,CAAC,EAAE,UAAU,CAAC;IACzB,OAAO,CAAC,SAAS,CAAa;IAE9B,aAAoB,WAAW,IAAI,MAAM,CAAC;IAC1C,aAAoB,gBAAgB,IAAI,MAAM,CAAC;IAC/C,aAAoB,OAAO,IAAI,SAAS,CAAC;IACzC,aAAoB,wBAAwB,IAAI,OAAO,CAAC;IACxD,IAAW,QAAQ,IAAI,SAAS,GAAG,SAAS,CAAsB;aAClD,YAAY,CAAC,SAAS,EAAE,MAAM,GAAG,IAAI;IAE9C,gBAAgB,CAAC,UAAU,EAAE,UAAU;IAQ9C,SAAS,CAAC,OAAO,CAAC,MAAM,EAAE,MAAM;IAKhC,SAAS,CAAC,OAAO,CAAC,GAAG,EAAE,MAAM;IAQ7B,SAAS,CAAC,QAAQ,CAAC,GAAG,EAAE,MAAM;IAI9B,SAAS,CAAC,QAAQ,CAAC,GAAG,EAAE,MAAM;IAK9B,OAAO,CAAC,WAAW;IA6BZ,KAAK,CAAC,UAAU,EAAE,UAAU,EAAE,YAAY,EAAE,YAAY,EAAE,YAAY,EAAE,MAAM,GAAG,WAAW;WAgCrF,kBAAkB,CAAC,IAAI,EAAE,YAAY,EAAE,YAAY,EAAE,MAAM,GAAG,WAAW,GAAG,SAAS;CAQpG"}
|
|
@@ -8,176 +8,32 @@
|
|
|
8
8
|
import { assert } from "@itwin/core-bentley";
|
|
9
9
|
import { Point2d, Range2d } from "@itwin/core-geometry";
|
|
10
10
|
import { ColorDef, FeatureIndexType, QParams2d, QParams3d, QPoint2d, QPoint3dList, } from "@itwin/core-common";
|
|
11
|
-
import {
|
|
12
|
-
import {
|
|
13
|
-
import { createSurfaceMaterial, SurfaceType } from "
|
|
14
|
-
import {
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
}
|
|
38
|
-
static encodeIndex(index, bytes, byteIndex) {
|
|
39
|
-
assert(byteIndex + 2 < bytes.length);
|
|
40
|
-
bytes[byteIndex + 0] = index & 0x000000ff;
|
|
41
|
-
bytes[byteIndex + 1] = (index & 0x0000ff00) >> 8;
|
|
42
|
-
bytes[byteIndex + 2] = (index & 0x00ff0000) >> 16;
|
|
43
|
-
}
|
|
44
|
-
setNthIndex(n, value) {
|
|
45
|
-
VertexIndices.encodeIndex(value, this.data, n * 3);
|
|
46
|
-
}
|
|
47
|
-
decodeIndex(index) {
|
|
48
|
-
assert(index < this.length);
|
|
49
|
-
const byteIndex = index * 3;
|
|
50
|
-
return this.data[byteIndex] | (this.data[byteIndex + 1] << 8) | (this.data[byteIndex + 2] << 16);
|
|
51
|
-
}
|
|
52
|
-
decodeIndices() {
|
|
53
|
-
const indices = [];
|
|
54
|
-
for (let i = 0; i < this.length; i++)
|
|
55
|
-
indices.push(this.decodeIndex(i));
|
|
56
|
-
return indices;
|
|
57
|
-
}
|
|
58
|
-
[Symbol.iterator]() {
|
|
59
|
-
function* iterator(indices) {
|
|
60
|
-
for (let i = 0; i < indices.length; i++)
|
|
61
|
-
yield indices.decodeIndex(i);
|
|
62
|
-
}
|
|
63
|
-
return iterator(this);
|
|
64
|
-
}
|
|
65
|
-
}
|
|
66
|
-
/** @internal */
|
|
67
|
-
export function computeDimensions(nEntries, nRgbaPerEntry, nExtraRgba, maxSize) {
|
|
68
|
-
maxSize = maxSize ?? IModelApp.renderSystem.maxTextureSize;
|
|
69
|
-
const nRgba = nEntries * nRgbaPerEntry + nExtraRgba;
|
|
70
|
-
if (nRgba < maxSize)
|
|
71
|
-
return { width: nRgba, height: 1 };
|
|
72
|
-
// Make roughly square to reduce unused space in last row
|
|
73
|
-
let width = Math.ceil(Math.sqrt(nRgba));
|
|
74
|
-
// Ensure a given entry's RGBA values all fit on the same row.
|
|
75
|
-
const remainder = width % nRgbaPerEntry;
|
|
76
|
-
if (0 !== remainder) {
|
|
77
|
-
width += nRgbaPerEntry - remainder;
|
|
78
|
-
}
|
|
79
|
-
// Compute height
|
|
80
|
-
let height = Math.ceil(nRgba / width);
|
|
81
|
-
if (width * height < nRgba)
|
|
82
|
-
++height;
|
|
83
|
-
assert(height <= maxSize);
|
|
84
|
-
assert(width <= maxSize);
|
|
85
|
-
assert(width * height >= nRgba);
|
|
86
|
-
assert(Math.floor(height) === height);
|
|
87
|
-
assert(Math.floor(width) === width);
|
|
88
|
-
// Row padding should never be necessary...
|
|
89
|
-
assert(0 === width % nRgbaPerEntry);
|
|
90
|
-
return { width, height };
|
|
91
|
-
}
|
|
92
|
-
/**
|
|
93
|
-
* Represents vertex data (position, color, normal, UV params, etc) in a rectangular array.
|
|
94
|
-
* Each vertex is described by one or more contiguous 4-byte ('RGBA') values.
|
|
95
|
-
* This allows vertex data to be uploaded to the GPU as a texture and vertex data to be sampled
|
|
96
|
-
* from that texture using a single vertex ID representing an index into the array.
|
|
97
|
-
* Vertex color is identified by a 16-bit index into a color table appended to the vertex data.
|
|
98
|
-
* @internal
|
|
99
|
-
*/
|
|
100
|
-
export class VertexTable {
|
|
101
|
-
/** Construct a VertexTable. The VertexTable takes ownership of all input data - it must not be later modified by the caller. */
|
|
102
|
-
constructor(props) {
|
|
103
|
-
this.data = props.data;
|
|
104
|
-
this.qparams = props.qparams;
|
|
105
|
-
this.usesUnquantizedPositions = !!props.usesUnquantizedPositions;
|
|
106
|
-
this.width = props.width;
|
|
107
|
-
this.height = props.height;
|
|
108
|
-
this.hasTranslucency = true === props.hasTranslucency;
|
|
109
|
-
this.uniformColor = props.uniformColor;
|
|
110
|
-
this.featureIndexType = props.featureIndexType;
|
|
111
|
-
this.uniformFeatureID = props.uniformFeatureID;
|
|
112
|
-
this.numVertices = props.numVertices;
|
|
113
|
-
this.numRgbaPerVertex = props.numRgbaPerVertex;
|
|
114
|
-
this.uvParams = props.uvParams;
|
|
115
|
-
}
|
|
116
|
-
static buildFrom(builder, colorIndex, featureIndex) {
|
|
117
|
-
const { numVertices, numRgbaPerVertex } = builder;
|
|
118
|
-
const numColors = colorIndex.isUniform ? 0 : colorIndex.numColors;
|
|
119
|
-
const dimensions = computeDimensions(numVertices, numRgbaPerVertex, numColors);
|
|
120
|
-
assert(0 === dimensions.width % numRgbaPerVertex || (0 < numColors && 1 === dimensions.height));
|
|
121
|
-
const data = new Uint8Array(dimensions.width * dimensions.height * 4);
|
|
122
|
-
builder.data = data;
|
|
123
|
-
for (let i = 0; i < numVertices; i++)
|
|
124
|
-
builder.appendVertex(i);
|
|
125
|
-
builder.appendColorTable(colorIndex);
|
|
126
|
-
builder.data = undefined;
|
|
127
|
-
return new VertexTable({
|
|
128
|
-
data,
|
|
129
|
-
qparams: builder.qparams,
|
|
130
|
-
usesUnquantizedPositions: builder.usesUnquantizedPositions,
|
|
131
|
-
width: dimensions.width,
|
|
132
|
-
height: dimensions.height,
|
|
133
|
-
hasTranslucency: colorIndex.hasAlpha,
|
|
134
|
-
uniformColor: colorIndex.uniform,
|
|
135
|
-
numVertices,
|
|
136
|
-
numRgbaPerVertex,
|
|
137
|
-
uvParams: builder.uvParams,
|
|
138
|
-
featureIndexType: featureIndex.type,
|
|
139
|
-
uniformFeatureID: featureIndex.type === FeatureIndexType.Uniform ? featureIndex.featureID : undefined,
|
|
140
|
-
});
|
|
141
|
-
}
|
|
142
|
-
static createForPolylines(args) {
|
|
143
|
-
const polylines = args.polylines;
|
|
144
|
-
if (0 < polylines.length)
|
|
145
|
-
return this.buildFrom(createPolylineBuilder(args), args.colors, args.features);
|
|
146
|
-
else
|
|
147
|
-
return undefined;
|
|
148
|
-
}
|
|
149
|
-
}
|
|
150
|
-
/**
|
|
151
|
-
* Describes mesh geometry to be submitted to the rendering system.
|
|
152
|
-
* A mesh consists of a surface and its edges, which may include any combination of silhouettes, polylines, and single segments.
|
|
153
|
-
* The surface and edges all refer to the same vertex table.
|
|
154
|
-
*/
|
|
155
|
-
export class MeshParams {
|
|
156
|
-
/** Directly construct a MeshParams. The MeshParams takes ownership of all input data. */
|
|
157
|
-
constructor(vertices, surface, edges, isPlanar, auxChannels) {
|
|
158
|
-
this.vertices = vertices;
|
|
159
|
-
this.surface = surface;
|
|
160
|
-
this.edges = edges;
|
|
161
|
-
this.isPlanar = !!isPlanar;
|
|
162
|
-
this.auxChannels = auxChannels;
|
|
163
|
-
}
|
|
164
|
-
/** Construct from a MeshArgs. */
|
|
165
|
-
static create(args) {
|
|
166
|
-
const builder = createMeshBuilder(args);
|
|
167
|
-
const vertices = VertexTable.buildFrom(builder, args.colors, args.features);
|
|
168
|
-
const surfaceIndices = VertexIndices.fromArray(args.vertIndices);
|
|
169
|
-
const surface = {
|
|
170
|
-
type: builder.type,
|
|
171
|
-
indices: surfaceIndices,
|
|
172
|
-
fillFlags: args.fillFlags,
|
|
173
|
-
hasBakedLighting: true === args.hasBakedLighting,
|
|
174
|
-
textureMapping: undefined !== args.textureMapping ? { texture: args.textureMapping.texture, alwaysDisplayed: false } : undefined,
|
|
175
|
-
material: createSurfaceMaterial(args.material),
|
|
176
|
-
};
|
|
177
|
-
const channels = undefined !== args.auxChannels ? AuxChannelTable.fromChannels(args.auxChannels, vertices.numVertices) : undefined;
|
|
178
|
-
const edges = EdgeParams.fromMeshArgs(args);
|
|
179
|
-
return new MeshParams(vertices, surface, edges, args.isPlanar, channels);
|
|
180
|
-
}
|
|
11
|
+
import { AuxChannelTable } from "../../common/render/primitives/AuxChannelTable";
|
|
12
|
+
import { computeDimensions } from "../../common/render/primitives/VertexTable";
|
|
13
|
+
import { createSurfaceMaterial, SurfaceType } from "../../common/render/primitives/SurfaceParams";
|
|
14
|
+
import { VertexIndices } from "../../common/render/primitives/VertexIndices";
|
|
15
|
+
import { createEdgeParams } from "./EdgeParams";
|
|
16
|
+
export function createMeshParams(args, maxDimension) {
|
|
17
|
+
const builder = createMeshBuilder(args);
|
|
18
|
+
const vertices = builder.build(args.colors, args.features, maxDimension);
|
|
19
|
+
const surfaceIndices = VertexIndices.fromArray(args.vertIndices);
|
|
20
|
+
const surface = {
|
|
21
|
+
type: builder.type,
|
|
22
|
+
indices: surfaceIndices,
|
|
23
|
+
fillFlags: args.fillFlags,
|
|
24
|
+
hasBakedLighting: true === args.hasBakedLighting,
|
|
25
|
+
textureMapping: undefined !== args.textureMapping ? { texture: args.textureMapping.texture, alwaysDisplayed: false } : undefined,
|
|
26
|
+
material: createSurfaceMaterial(args.material),
|
|
27
|
+
};
|
|
28
|
+
const channels = undefined !== args.auxChannels ? AuxChannelTable.fromChannels(args.auxChannels, vertices.numVertices, maxDimension) : undefined;
|
|
29
|
+
const edges = createEdgeParams(args);
|
|
30
|
+
return {
|
|
31
|
+
vertices,
|
|
32
|
+
surface,
|
|
33
|
+
edges,
|
|
34
|
+
isPlanar: !!args.isPlanar,
|
|
35
|
+
auxChannels: channels,
|
|
36
|
+
};
|
|
181
37
|
}
|
|
182
38
|
/** Builds a VertexTable from some data type supplying the vertex data. */
|
|
183
39
|
export class VertexTableBuilder {
|
|
@@ -236,6 +92,39 @@ export class VertexTableBuilder {
|
|
|
236
92
|
this.append8(colors.b);
|
|
237
93
|
this.append8(colors.t);
|
|
238
94
|
}
|
|
95
|
+
build(colorIndex, featureIndex, maxDimension) {
|
|
96
|
+
const { numVertices, numRgbaPerVertex } = this;
|
|
97
|
+
const numColors = colorIndex.isUniform ? 0 : colorIndex.numColors;
|
|
98
|
+
const dimensions = computeDimensions(numVertices, numRgbaPerVertex, numColors, maxDimension);
|
|
99
|
+
assert(0 === dimensions.width % numRgbaPerVertex || (0 < numColors && 1 === dimensions.height));
|
|
100
|
+
const data = new Uint8Array(dimensions.width * dimensions.height * 4);
|
|
101
|
+
this.data = data;
|
|
102
|
+
for (let i = 0; i < numVertices; i++)
|
|
103
|
+
this.appendVertex(i);
|
|
104
|
+
this.appendColorTable(colorIndex);
|
|
105
|
+
this.data = undefined;
|
|
106
|
+
return {
|
|
107
|
+
data,
|
|
108
|
+
qparams: this.qparams,
|
|
109
|
+
usesUnquantizedPositions: this.usesUnquantizedPositions,
|
|
110
|
+
width: dimensions.width,
|
|
111
|
+
height: dimensions.height,
|
|
112
|
+
hasTranslucency: colorIndex.hasAlpha,
|
|
113
|
+
uniformColor: colorIndex.uniform,
|
|
114
|
+
numVertices,
|
|
115
|
+
numRgbaPerVertex,
|
|
116
|
+
uvParams: this.uvParams,
|
|
117
|
+
featureIndexType: featureIndex.type,
|
|
118
|
+
uniformFeatureID: featureIndex.type === FeatureIndexType.Uniform ? featureIndex.featureID : undefined,
|
|
119
|
+
};
|
|
120
|
+
}
|
|
121
|
+
static buildFromPolylines(args, maxDimension) {
|
|
122
|
+
const polylines = args.polylines;
|
|
123
|
+
if (polylines.length === 0)
|
|
124
|
+
return undefined;
|
|
125
|
+
const builder = createPolylineBuilder(args);
|
|
126
|
+
return builder.build(args.colors, args.features, maxDimension);
|
|
127
|
+
}
|
|
239
128
|
}
|
|
240
129
|
var Quantized;
|
|
241
130
|
(function (Quantized) {
|
|
@@ -547,4 +436,4 @@ function createPolylineBuilder(args) {
|
|
|
547
436
|
else
|
|
548
437
|
return new Unquantized.SimpleBuilder(args);
|
|
549
438
|
}
|
|
550
|
-
//# sourceMappingURL=
|
|
439
|
+
//# sourceMappingURL=VertexTableBuilder.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"VertexTableBuilder.js","sourceRoot":"","sources":["../../../../src/render/primitives/VertexTableBuilder.ts"],"names":[],"mappings":"AAAA;;;+FAG+F;AAC/F;;GAEG;AAEH,OAAO,EAAE,MAAM,EAAE,MAAM,qBAAqB,CAAC;AAC7C,OAAO,EAAE,OAAO,EAAW,OAAO,EAAE,MAAM,sBAAsB,CAAC;AACjE,OAAO,EACL,QAAQ,EAA4B,gBAAgB,EAAE,SAAS,EAAE,SAAS,EAAE,QAAQ,EAAE,YAAY,GACnG,MAAM,oBAAoB,CAAC;AAC5B,OAAO,EAAE,eAAe,EAAE,MAAM,gDAAgD,CAAC;AACjF,OAAO,EAAE,iBAAiB,EAAe,MAAM,4CAA4C,CAAC;AAC5F,OAAO,EAAE,qBAAqB,EAAiB,WAAW,EAAE,MAAM,8CAA8C,CAAC;AAGjH,OAAO,EAAE,aAAa,EAAE,MAAM,8CAA8C,CAAC;AAE7E,OAAO,EAAE,gBAAgB,EAAE,MAAM,cAAc,CAAC;AAEhD,MAAM,UAAU,gBAAgB,CAAC,IAAc,EAAE,YAAoB;IACnE,MAAM,OAAO,GAAG,iBAAiB,CAAC,IAAI,CAAC,CAAC;IACxC,MAAM,QAAQ,GAAG,OAAO,CAAC,KAAK,CAAC,IAAI,CAAC,MAAM,EAAE,IAAI,CAAC,QAAQ,EAAE,YAAY,CAAC,CAAC;IAEzE,MAAM,cAAc,GAAG,aAAa,CAAC,SAAS,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC;IAEjE,MAAM,OAAO,GAAkB;QAC7B,IAAI,EAAE,OAAO,CAAC,IAAI;QAClB,OAAO,EAAE,cAAc;QACvB,SAAS,EAAE,IAAI,CAAC,SAAS;QACzB,gBAAgB,EAAE,IAAI,KAAK,IAAI,CAAC,gBAAgB;QAChD,cAAc,EAAE,SAAS,KAAK,IAAI,CAAC,cAAc,CAAC,CAAC,CAAC,EAAE,OAAO,EAAE,IAAI,CAAC,cAAc,CAAC,OAAO,EAAE,eAAe,EAAE,KAAK,EAAE,CAAC,CAAC,CAAC,SAAS;QAChI,QAAQ,EAAE,qBAAqB,CAAC,IAAI,CAAC,QAAQ,CAAC;KAC/C,CAAC;IAEF,MAAM,QAAQ,GAAG,SAAS,KAAK,IAAI,CAAC,WAAW,CAAC,CAAC,CAAC,eAAe,CAAC,YAAY,CAAC,IAAI,CAAC,WAAW,EAAE,QAAQ,CAAC,WAAW,EAAE,YAAY,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC;IACjJ,MAAM,KAAK,GAAG,gBAAgB,CAAC,IAAI,CAAC,CAAC;IACrC,OAAO;QACL,QAAQ;QACR,OAAO;QACP,KAAK;QACL,QAAQ,EAAE,CAAC,CAAC,IAAI,CAAC,QAAQ;QACzB,WAAW,EAAE,QAAQ;KACtB,CAAC;AACJ,CAAC;AAED,0EAA0E;AAC1E,MAAM,OAAgB,kBAAkB;IAAxC;QAEU,cAAS,GAAW,CAAC,CAAC;IA4GhC,CAAC;IAtGC,IAAW,QAAQ,KAA4B,OAAO,SAAS,CAAC,CAAC,CAAC;IAG3D,gBAAgB,CAAC,UAAsB;QAC5C,IAAI,SAAS,KAAK,UAAU,CAAC,UAAU,EAAE;YACvC,KAAK,MAAM,KAAK,IAAI,UAAU,CAAC,UAAU,CAAC,MAAM,EAAE;gBAChD,IAAI,CAAC,WAAW,CAAC,KAAK,CAAC,CAAC;aACzB;SACF;IACH,CAAC;IAES,OAAO,CAAC,MAAc;QAC9B,IAAI,CAAC,SAAS,IAAI,MAAM,CAAC;QACzB,MAAM,CAAC,IAAI,CAAC,SAAS,IAAI,IAAI,CAAC,IAAK,CAAC,MAAM,CAAC,CAAC;IAC9C,CAAC;IAES,OAAO,CAAC,GAAW;QAC3B,MAAM,CAAC,CAAC,IAAI,GAAG,CAAC,CAAC;QACjB,MAAM,CAAC,GAAG,IAAI,IAAI,CAAC,CAAC;QACpB,MAAM,CAAC,GAAG,KAAK,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC;QAEhC,IAAI,CAAC,IAAK,CAAC,IAAI,CAAC,SAAS,CAAC,GAAG,GAAG,CAAC;QACjC,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC;IAClB,CAAC;IACS,QAAQ,CAAC,GAAW;QAC5B,IAAI,CAAC,OAAO,CAAC,GAAG,GAAG,MAAM,CAAC,CAAC;QAC3B,IAAI,CAAC,OAAO,CAAC,GAAG,KAAK,CAAC,CAAC,CAAC;IAC1B,CAAC;IACS,QAAQ,CAAC,GAAW;QAC5B,IAAI,CAAC,QAAQ,CAAC,GAAG,GAAG,UAAU,CAAC,CAAC;QAChC,IAAI,CAAC,QAAQ,CAAC,GAAG,KAAK,EAAE,CAAC,CAAC;IAC5B,CAAC;IAEO,WAAW,CAAC,IAAY;QAC9B,MAAM,MAAM,GAAG,QAAQ,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC;QAExC,+BAA+B;QAC/B,MAAM,CAAC,CAAC,GAAG,GAAG,GAAG,MAAM,CAAC,CAAC,CAAC;QAE1B,uBAAuB;QACvB,QAAQ,MAAM,CAAC,CAAC,EAAE;YAChB,KAAK,CAAC;gBACJ,MAAM,CAAC,CAAC,GAAG,MAAM,CAAC,CAAC,GAAG,MAAM,CAAC,CAAC,GAAG,CAAC,CAAC;gBACnC,MAAM;YACR,KAAK,GAAG;gBACN,MAAM;YACR,OAAO,CAAC,CAAC;gBACP,MAAM,CAAC,GAAG,MAAM,CAAC,CAAC,GAAG,KAAK,CAAC;gBAC3B,MAAM,CAAC,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC,GAAG,CAAC,GAAG,GAAG,CAAC,CAAC;gBAC1C,MAAM,CAAC,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC,GAAG,CAAC,GAAG,GAAG,CAAC,CAAC;gBAC1C,MAAM,CAAC,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC,GAAG,CAAC,GAAG,GAAG,CAAC,CAAC;gBAC1C,MAAM;aACP;SACF;QAED,wDAAwD;QACxD,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC;QACvB,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC;QACvB,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC;QACvB,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC;IACzB,CAAC;IAEM,KAAK,CAAC,UAAsB,EAAE,YAA0B,EAAE,YAAoB;QACnF,MAAM,EAAE,WAAW,EAAE,gBAAgB,EAAE,GAAG,IAAI,CAAC;QAC/C,MAAM,SAAS,GAAG,UAAU,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,UAAU,CAAC,SAAS,CAAC;QAClE,MAAM,UAAU,GAAG,iBAAiB,CAAC,WAAW,EAAE,gBAAgB,EAAE,SAAS,EAAE,YAAY,CAAC,CAAC;QAC7F,MAAM,CAAC,CAAC,KAAK,UAAU,CAAC,KAAK,GAAG,gBAAgB,IAAI,CAAC,CAAC,GAAG,SAAS,IAAI,CAAC,KAAK,UAAU,CAAC,MAAM,CAAC,CAAC,CAAC;QAEhG,MAAM,IAAI,GAAG,IAAI,UAAU,CAAC,UAAU,CAAC,KAAK,GAAG,UAAU,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC;QAEtE,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC;QACjB,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,WAAW,EAAE,CAAC,EAAE;YAClC,IAAI,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC;QAEvB,IAAI,CAAC,gBAAgB,CAAC,UAAU,CAAC,CAAC;QAElC,IAAI,CAAC,IAAI,GAAG,SAAS,CAAC;QAEtB,OAAO;YACL,IAAI;YACJ,OAAO,EAAE,IAAI,CAAC,OAAO;YACrB,wBAAwB,EAAE,IAAI,CAAC,wBAAwB;YACvD,KAAK,EAAE,UAAU,CAAC,KAAK;YACvB,MAAM,EAAE,UAAU,CAAC,MAAM;YACzB,eAAe,EAAE,UAAU,CAAC,QAAQ;YACpC,YAAY,EAAE,UAAU,CAAC,OAAO;YAChC,WAAW;YACX,gBAAgB;YAChB,QAAQ,EAAE,IAAI,CAAC,QAAQ;YACvB,gBAAgB,EAAE,YAAY,CAAC,IAAI;YACnC,gBAAgB,EAAE,YAAY,CAAC,IAAI,KAAK,gBAAgB,CAAC,OAAO,CAAC,CAAC,CAAC,YAAY,CAAC,SAAS,CAAC,CAAC,CAAC,SAAS;SACtG,CAAC;IACJ,CAAC;IAEM,MAAM,CAAC,kBAAkB,CAAC,IAAkB,EAAE,YAAoB;QACvE,MAAM,SAAS,GAAG,IAAI,CAAC,SAAS,CAAC;QACjC,IAAI,SAAS,CAAC,MAAM,KAAK,CAAC;YACxB,OAAO,SAAS,CAAC;QAEnB,MAAM,OAAO,GAAG,qBAAqB,CAAC,IAAI,CAAC,CAAC;QAC5C,OAAO,OAAO,CAAC,KAAK,CAAC,IAAI,CAAC,MAAM,EAAE,IAAI,CAAC,QAAQ,EAAE,YAAY,CAAC,CAAC;IACjE,CAAC;CACF;AAMD,IAAU,SAAS,CAuJlB;AAvJD,WAAU,SAAS;IACjB;;;;;;;;OAQG;IACH,MAAa,aAA+C,SAAQ,kBAAkB;QAIpF,YAAmB,IAAO;YACxB,KAAK,EAAE,CAAC;YACR,IAAI,CAAC,QAAQ,GAAG,IAAI,CAAC,MAAM,CAAC;YAC5B,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC;YACjB,MAAM,CAAC,SAAS,KAAK,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;QACzC,CAAC;QAED,IAAW,WAAW,KAAK,OAAO,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,CAAC;QAC5D,IAAW,gBAAgB,KAAK,OAAO,CAAC,CAAC,CAAC,CAAC;QAC3C,IAAW,wBAAwB,KAAK,OAAO,KAAK,CAAC,CAAC,CAAC;QACvD,IAAW,OAAO;YAChB,OAAO,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC;QAC9B,CAAC;QAEM,YAAY,CAAC,SAAiB;YACnC,IAAI,CAAC,cAAc,CAAC,SAAS,CAAC,CAAC;YAC/B,IAAI,CAAC,gBAAgB,CAAC,SAAS,CAAC,CAAC;YACjC,IAAI,CAAC,kBAAkB,CAAC,SAAS,CAAC,CAAC;QACrC,CAAC;QAES,cAAc,CAAC,SAAiB;YACxC,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC;YAC/C,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC;YAC/C,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC;QACjD,CAAC;QAES,gBAAgB,CAAC,SAAiB;YAC1C,IAAI,SAAS,KAAK,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,UAAU,EAAE;gBAC7C,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,UAAU,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC,CAAC;aAC/D;iBAAM;gBACL,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC;aACjB;QACH,CAAC;QAES,kBAAkB,CAAC,SAAiB;YAC5C,IAAI,SAAS,KAAK,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,UAAU,EAAE;gBAC/C,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,UAAU,CAAC,SAAS,CAAC,CAAC,CAAC;aACzD;iBAAM;gBACL,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC;aACjB;QACH,CAAC;KACF;IA7CY,uBAAa,gBA6CzB,CAAA;IAED,4CAA4C;IAC5C,MAAa,WAAY,SAAQ,aAAkC;QAGjE,YAAsB,IAAyB,EAAE,IAAiB;YAChE,KAAK,CAAC,IAAI,CAAC,CAAC;YACZ,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC;QACnB,CAAC;QAEM,MAAM,CAAC,MAAM,CAAC,IAAyB;YAC5C,IAAI,IAAI,CAAC,kBAAkB;gBACzB,OAAO,IAAI,WAAW,CAAC,IAAI,EAAE,WAAW,CAAC,gBAAgB,CAAC,CAAC;YAE7D,MAAM,KAAK,GAAG,SAAS,KAAK,IAAI,CAAC,OAAO,IAAI,CAAC,GAAG,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC;YACpE,MAAM,UAAU,GAAG,SAAS,KAAK,IAAI,CAAC,cAAc,CAAC;YAErD,IAAI,QAA+B,CAAC;YAEpC,IAAI,IAAI,CAAC,cAAc,EAAE;gBACvB,MAAM,OAAO,GAAG,OAAO,CAAC,UAAU,EAAE,CAAC;gBACrC,MAAM,IAAI,GAAG,IAAI,CAAC,cAAc,CAAC,QAAQ,CAAC;gBAC1C,MAAM,IAAI,GAAG,IAAI,OAAO,EAAE,CAAC;gBAC3B,IAAI,SAAS,KAAK,IAAI,IAAI,IAAI,CAAC,MAAM,GAAG,CAAC;oBACvC,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,IAAI,CAAC,MAAM,CAAC,MAAM,EAAE,CAAC,EAAE;wBACzC,OAAO,CAAC,WAAW,CAAC,OAAO,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC,CAAC;gBAEpE,QAAQ,GAAG,SAAS,CAAC,SAAS,CAAC,OAAO,CAAC,CAAC;aACzC;YAED,IAAI,KAAK;gBACP,OAAO,UAAU,CAAC,CAAC,CAAC,IAAI,sBAAsB,CAAC,IAAI,EAAE,QAAS,CAAC,CAAC,CAAC,CAAC,IAAI,cAAc,CAAC,IAAI,CAAC,CAAC;;gBAE3F,OAAO,UAAU,CAAC,CAAC,CAAC,IAAI,mBAAmB,CAAC,IAAI,EAAE,QAAS,CAAC,CAAC,CAAC,CAAC,IAAI,WAAW,CAAC,IAAI,EAAE,WAAW,CAAC,KAAK,CAAC,CAAC;QAC5G,CAAC;KACF;IAjCY,qBAAW,cAiCvB,CAAA;IAED;;;OAGG;IACH,MAAM,mBAAoB,SAAQ,WAAW;QAI3C,YAAmB,IAAyB,EAAE,OAAkB,EAAE,OAAoB,WAAW,CAAC,QAAQ;YACxG,KAAK,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC;YAHZ,YAAO,GAAG,IAAI,QAAQ,EAAE,CAAC;YAI/B,IAAI,CAAC,QAAQ,GAAG,OAAO,CAAC;YACxB,MAAM,CAAC,SAAS,KAAK,IAAI,CAAC,cAAc,CAAC,CAAC;QAC5C,CAAC;QAED,IAAoB,gBAAgB,KAAK,OAAO,CAAC,CAAC,CAAC,CAAC;QACpD,IAAoB,QAAQ,KAAK,OAAO,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC;QAExC,YAAY,CAAC,SAAiB;YAC5C,IAAI,CAAC,cAAc,CAAC,SAAS,CAAC,CAAC;YAC/B,IAAI,CAAC,YAAY,CAAC,SAAS,CAAC,CAAC;YAC7B,IAAI,CAAC,kBAAkB,CAAC,SAAS,CAAC,CAAC;YACnC,IAAI,CAAC,cAAc,CAAC,SAAS,CAAC,CAAC;QACjC,CAAC;QAES,YAAY,CAAC,UAAkB,IAAU,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,6BAA6B;QAEzF,cAAc,CAAC,SAAiB;YACxC,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,cAAe,CAAC,QAAQ,CAAC,SAAS,CAAC,EAAE,IAAI,CAAC,QAAQ,CAAC,CAAC;YAChF,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC;YAC9B,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC;QAChC,CAAC;KACF;IAED,sGAAsG;IACtG,MAAM,sBAAuB,SAAQ,mBAAmB;QACtD,YAAmB,IAAyB,EAAE,OAAkB;YAC9D,KAAK,CAAC,IAAI,EAAE,OAAO,EAAE,WAAW,CAAC,WAAW,CAAC,CAAC;YAC9C,MAAM,CAAC,SAAS,KAAK,IAAI,CAAC,OAAO,CAAC,CAAC;QACrC,CAAC;QAEkB,YAAY,CAAC,SAAiB,IAAI,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,IAAI,CAAC,OAAQ,CAAC,SAAS,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;KAC3G;IAED,+GAA+G;IAC/G,MAAM,cAAe,SAAQ,WAAW;QACtC,YAAmB,IAAyB;YAC1C,KAAK,CAAC,IAAI,EAAE,WAAW,CAAC,GAAG,CAAC,CAAC;YAC7B,MAAM,CAAC,SAAS,KAAK,IAAI,CAAC,OAAO,CAAC,CAAC;QACrC,CAAC;QAED,IAAoB,gBAAgB,KAAK,OAAO,CAAC,CAAC,CAAC,CAAC;QAEpC,YAAY,CAAC,SAAiB;YAC5C,KAAK,CAAC,YAAY,CAAC,SAAS,CAAC,CAAC;YAC9B,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,IAAI,CAAC,OAAQ,CAAC,SAAS,CAAC,CAAC,KAAK,CAAC,CAAC;YACnD,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC,iBAAiB;QACpC,CAAC;KACF;AACH,CAAC,EAvJS,SAAS,KAAT,SAAS,QAuJlB;AAED;;;;;;;;;;;;;GAaG;AACH,IAAU,WAAW,CA4LpB;AA5LD,WAAU,WAAW;IACnB,MAAM,QAAQ,GAAG,IAAI,WAAW,CAAC,CAAC,CAAC,CAAC;IACpC,MAAM,QAAQ,GAAG,IAAI,YAAY,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC;IAEnD,kBAAkB;IAClB,kBAAkB;IAClB,MAAa,aAAiD,SAAQ,kBAAkB;QAKtF,YAAmB,IAAO;YACxB,KAAK,EAAE,CAAC;YACR,MAAM,CAAC,CAAC,CAAC,IAAI,CAAC,MAAM,YAAY,YAAY,CAAC,CAAC,CAAC;YAC/C,IAAI,CAAC,UAAU,GAAG,SAAS,CAAC,SAAS,CAAC,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;YACzD,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC;YACjB,IAAI,CAAC,OAAO,GAAG,IAAI,CAAC,MAAM,CAAC;QAC7B,CAAC;QAED,IAAW,WAAW,KAAK,OAAO,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC;QACxD,IAAW,gBAAgB,KAAK,OAAO,CAAC,CAAC,CAAC,CAAC;QAC3C,IAAW,wBAAwB,KAAK,OAAO,IAAI,CAAC,CAAC,CAAC;QACtD,IAAW,OAAO,KAAK,OAAO,IAAI,CAAC,UAAU,CAAC,CAAC,CAAC;QAEzC,YAAY,CAAC,SAAiB;YACnC,IAAI,CAAC,+BAA+B,CAAC,SAAS,CAAC,CAAC;YAChD,IAAI,CAAC,gBAAgB,CAAC,SAAS,CAAC,CAAC;QACnC,CAAC;QAEO,aAAa,CAAC,GAAW;YAC/B,QAAQ,CAAC,CAAC,CAAC,GAAG,GAAG,CAAC;YAClB,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC;QAC7B,CAAC;QAEO,cAAc,CAAC,GAAW;YAChC,QAAQ,CAAC,CAAC,CAAC,GAAG,GAAG,CAAC;YAClB,OAAO,QAAQ,CAAC,CAAC,CAAC,CAAC;QACrB,CAAC;QAES,+BAA+B,CAAC,SAAiB;YACzD,kFAAkF;YAClF,0EAA0E;YAC1E,MAAM,EAAE,GAAG,IAAI,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC;YACnC,MAAM,CAAC,GAAG,IAAI,CAAC,cAAc,CAAE,EAAE,CAAC,CAAC,CAAC,CAAC;YACrC,MAAM,CAAC,GAAG,IAAI,CAAC,cAAc,CAAE,EAAE,CAAC,CAAC,CAAC,CAAC;YACrC,MAAM,CAAC,GAAG,IAAI,CAAC,cAAc,CAAE,EAAE,CAAC,CAAC,CAAC,CAAC;YACrC,MAAM,MAAM,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,UAAU,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;YAC9F,IAAI,CAAC,OAAO,CAAC,CAAC,GAAG,UAAU,CAAC,CAAC;YAC7B,IAAI,CAAC,OAAO,CAAC,CAAC,GAAG,UAAU,CAAC,CAAC;YAC7B,IAAI,CAAC,OAAO,CAAC,CAAC,GAAG,UAAU,CAAC,CAAC;YAC7B,IAAI,CAAC,OAAO,CAAC,MAAM,GAAG,UAAU,CAAC,CAAC;YAClC,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,GAAG,UAAU,CAAC,CAAC;YACrC,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,GAAG,UAAU,CAAC,CAAC;YACrC,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,GAAG,UAAU,CAAC,CAAC;YACrC,IAAI,CAAC,OAAO,CAAC,CAAC,MAAM,KAAK,CAAC,CAAC,GAAG,UAAU,CAAC,CAAC;YAC1C,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC,KAAK,EAAE,CAAC,GAAG,UAAU,CAAC,CAAC;YACtC,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC,KAAK,EAAE,CAAC,GAAG,UAAU,CAAC,CAAC;YACtC,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC,KAAK,EAAE,CAAC,GAAG,UAAU,CAAC,CAAC;YACtC,IAAI,CAAC,OAAO,CAAC,CAAC,MAAM,KAAK,EAAE,CAAC,GAAG,UAAU,CAAC,CAAC;YAC3C,IAAI,CAAC,OAAO,CAAC,CAAC,KAAK,EAAE,CAAC,CAAC;YACvB,IAAI,CAAC,OAAO,CAAC,CAAC,KAAK,EAAE,CAAC,CAAC;YACvB,IAAI,CAAC,OAAO,CAAC,CAAC,KAAK,EAAE,CAAC,CAAC;YACvB,IAAI,CAAC,OAAO,CAAC,MAAM,KAAK,EAAE,CAAC,CAAC;QAC9B,CAAC;QAES,cAAc,CAAC,SAAiB;YACxC,MAAM,EAAE,GAAG,IAAI,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC;YACnC,IAAI,CAAC,aAAa,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC;YACzB,IAAI,CAAC,aAAa,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC;YACzB,IAAI,CAAC,aAAa,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC;QAC3B,CAAC;QAES,kBAAkB,CAAC,SAAiB;YAC5C,IAAI,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,UAAU;gBAC/B,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,UAAU,CAAC,SAAS,CAAC,CAAC,CAAC;;gBAExD,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC;QACpB,CAAC;QAES,iBAAiB,CAAC,SAAiB;YAC3C,IAAI,SAAS,KAAK,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,UAAU;gBAC3C,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,UAAU,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC,CAAC;;gBAE9D,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC;QACpB,CAAC;QAES,gBAAgB,CAAC,SAAiB;YAC1C,IAAI,CAAC,iBAAiB,CAAC,SAAS,CAAC,CAAC;YAClC,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC;QAClB,CAAC;KACF;IApFY,yBAAa,gBAoFzB,CAAA;IAED,MAAa,WAAY,SAAQ,aAAoC;QAGnE,YAAsB,IAA2B,EAAE,IAAiB;YAClE,KAAK,CAAC,IAAI,CAAC,CAAC;YACZ,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC;QACnB,CAAC;QAEM,MAAM,CAAC,MAAM,CAAC,IAA2B;YAC9C,IAAI,IAAI,CAAC,kBAAkB;gBACzB,OAAO,IAAI,WAAW,CAAC,IAAI,EAAE,WAAW,CAAC,gBAAgB,CAAC,CAAC;YAE7D,MAAM,KAAK,GAAG,SAAS,KAAK,IAAI,CAAC,OAAO,IAAI,CAAC,GAAG,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC;YACpE,MAAM,UAAU,GAAG,SAAS,KAAK,IAAI,CAAC,cAAc,CAAC;YAErD,IAAI,QAA+B,CAAC;YAEpC,IAAI,IAAI,CAAC,cAAc,EAAE;gBACvB,MAAM,OAAO,GAAG,OAAO,CAAC,UAAU,EAAE,CAAC;gBACrC,MAAM,IAAI,GAAG,IAAI,CAAC,cAAc,CAAC,QAAQ,CAAC;gBAC1C,MAAM,IAAI,GAAG,IAAI,OAAO,EAAE,CAAC;gBAC3B,IAAI,SAAS,KAAK,IAAI,IAAI,IAAI,CAAC,MAAM,GAAG,CAAC;oBACvC,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,IAAI,CAAC,MAAM,CAAC,MAAM,EAAE,CAAC,EAAE;wBACzC,OAAO,CAAC,WAAW,CAAC,OAAO,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC,CAAC;gBAEpE,QAAQ,GAAG,SAAS,CAAC,SAAS,CAAC,OAAO,CAAC,CAAC;aACzC;YAED,IAAI,KAAK;gBACP,OAAO,UAAU,CAAC,CAAC,CAAC,IAAI,sBAAsB,CAAC,IAAI,EAAE,QAAS,CAAC,CAAC,CAAC,CAAC,IAAI,cAAc,CAAC,IAAI,CAAC,CAAC;;gBAE3F,OAAO,UAAU,CAAC,CAAC,CAAC,IAAI,mBAAmB,CAAC,IAAI,EAAE,QAAS,CAAC,CAAC,CAAC,CAAC,IAAI,WAAW,CAAC,IAAI,EAAE,WAAW,CAAC,KAAK,CAAC,CAAC;QAC5G,CAAC;KACF;IAjCY,uBAAW,cAiCvB,CAAA;IAED,QAAQ;IACR,QAAQ;IACR,MAAM,mBAAoB,SAAQ,WAAW;QAI3C,YAAmB,IAA2B,EAAE,OAAkB,EAAE,IAAI,GAAG,WAAW,CAAC,QAAQ;YAC7F,KAAK,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC;YAHZ,YAAO,GAAG,IAAI,QAAQ,EAAE,CAAC;YAI/B,IAAI,CAAC,QAAQ,GAAG,OAAO,CAAC;YACxB,MAAM,CAAC,SAAS,KAAK,IAAI,CAAC,cAAc,CAAC,CAAC;QAC5C,CAAC;QAED,IAAoB,QAAQ,KAAK,OAAO,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC;QAExC,YAAY,CAAC,SAAiB;YAC5C,KAAK,CAAC,YAAY,CAAC,SAAS,CAAC,CAAC;YAE9B,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,cAAe,CAAC,QAAQ,CAAC,SAAS,CAAC,EAAE,IAAI,CAAC,QAAQ,CAAC,CAAC;YAChF,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC;YAC9B,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC;QAChC,CAAC;QAEkB,gBAAgB,KAAK,CAAC;KAC1C;IAED,QAAQ;IACR,QAAQ;IACR,aAAa;IACb,aAAa;IACb,MAAM,sBAAuB,SAAQ,mBAAmB;QACtD,YAAmB,IAA2B,EAAE,OAAkB;YAChE,KAAK,CAAC,IAAI,EAAE,OAAO,EAAE,WAAW,CAAC,WAAW,CAAC,CAAC;YAC9C,MAAM,CAAC,SAAS,KAAK,IAAI,CAAC,OAAO,CAAC,CAAC;QACrC,CAAC;QAED,IAAoB,gBAAgB,KAAK,OAAO,CAAC,CAAC,CAAC,CAAC;QAEpC,YAAY,CAAC,SAAiB;YAC5C,KAAK,CAAC,YAAY,CAAC,SAAS,CAAC,CAAC;YAC9B,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,IAAI,CAAC,OAAQ,CAAC,SAAS,CAAC,CAAC,KAAK,CAAC,CAAC;YACnD,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC;QAClB,CAAC;KACF;IAED,YAAY;IACZ,aAAa;IACb,MAAM,cAAe,SAAQ,WAAW;QACtC,YAAmB,IAA2B;YAC5C,KAAK,CAAC,IAAI,EAAE,WAAW,CAAC,GAAG,CAAC,CAAC;YAC7B,MAAM,CAAC,SAAS,KAAK,IAAI,CAAC,OAAO,CAAC,CAAC;QACrC,CAAC;QAEkB,gBAAgB,CAAC,SAAiB;YACnD,KAAK,CAAC,iBAAiB,CAAC,SAAS,CAAC,CAAC;QACrC,CAAC;QAEe,YAAY,CAAC,SAAiB;YAC5C,KAAK,CAAC,YAAY,CAAC,SAAS,CAAC,CAAC;YAC9B,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,IAAI,CAAC,OAAQ,CAAC,SAAS,CAAC,CAAC,KAAK,CAAC,CAAC;QACrD,CAAC;KACF;AACH,CAAC,EA5LS,WAAW,KAAX,WAAW,QA4LpB;AAED,SAAS,iBAAiB,CAAC,IAAc;IACvC,IAAI,IAAI,CAAC,MAAM,YAAY,YAAY;QACrC,OAAO,SAAS,CAAC,WAAW,CAAC,MAAM,CAAC,IAA2B,CAAC,CAAC;;QAEjE,OAAO,WAAW,CAAC,WAAW,CAAC,MAAM,CAAC,IAA6B,CAAC,CAAC;AACzE,CAAC;AAED,SAAS,qBAAqB,CAAC,IAAkB;IAC/C,IAAI,IAAI,CAAC,MAAM,YAAY,YAAY;QACrC,OAAO,IAAI,SAAS,CAAC,aAAa,CAAC,IAA+B,CAAC,CAAC;;QAEpE,OAAO,IAAI,WAAW,CAAC,aAAa,CAAC,IAAiC,CAAC,CAAC;AAC5E,CAAC","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 Rendering\r\n */\r\n\r\nimport { assert } from \"@itwin/core-bentley\";\r\nimport { Point2d, Point3d, Range2d } from \"@itwin/core-geometry\";\r\nimport {\r\n ColorDef, ColorIndex, FeatureIndex, FeatureIndexType, QParams2d, QParams3d, QPoint2d, QPoint3dList,\r\n} from \"@itwin/core-common\";\r\nimport { AuxChannelTable } from \"../../common/render/primitives/AuxChannelTable\";\r\nimport { computeDimensions, VertexTable } from \"../../common/render/primitives/VertexTable\";\r\nimport { createSurfaceMaterial, SurfaceParams, SurfaceType } from \"../../common/render/primitives/SurfaceParams\";\r\nimport { MeshParams } from \"../../common/render/primitives/MeshParams\";\r\nimport { Point3dList } from \"../../common/render/primitives/MeshPrimitive\";\r\nimport { VertexIndices } from \"../../common/render/primitives/VertexIndices\";\r\nimport { MeshArgs, PolylineArgs } from \"./mesh/MeshPrimitives\";\r\nimport { createEdgeParams } from \"./EdgeParams\";\r\n\r\nexport function createMeshParams(args: MeshArgs, maxDimension: number): MeshParams {\r\n const builder = createMeshBuilder(args);\r\n const vertices = builder.build(args.colors, args.features, maxDimension);\r\n\r\n const surfaceIndices = VertexIndices.fromArray(args.vertIndices);\r\n\r\n const surface: SurfaceParams = {\r\n type: builder.type,\r\n indices: surfaceIndices,\r\n fillFlags: args.fillFlags,\r\n hasBakedLighting: true === args.hasBakedLighting,\r\n textureMapping: undefined !== args.textureMapping ? { texture: args.textureMapping.texture, alwaysDisplayed: false } : undefined,\r\n material: createSurfaceMaterial(args.material),\r\n };\r\n\r\n const channels = undefined !== args.auxChannels ? AuxChannelTable.fromChannels(args.auxChannels, vertices.numVertices, maxDimension) : undefined;\r\n const edges = createEdgeParams(args);\r\n return {\r\n vertices,\r\n surface,\r\n edges,\r\n isPlanar: !!args.isPlanar,\r\n auxChannels: channels,\r\n };\r\n}\r\n\r\n/** Builds a VertexTable from some data type supplying the vertex data. */\r\nexport abstract class VertexTableBuilder {\r\n public data?: Uint8Array;\r\n private _curIndex: number = 0;\r\n\r\n public abstract get numVertices(): number;\r\n public abstract get numRgbaPerVertex(): number;\r\n public abstract get qparams(): QParams3d;\r\n public abstract get usesUnquantizedPositions(): boolean;\r\n public get uvParams(): QParams2d | undefined { return undefined; }\r\n public abstract appendVertex(vertIndex: number): void;\r\n\r\n public appendColorTable(colorIndex: ColorIndex) {\r\n if (undefined !== colorIndex.nonUniform) {\r\n for (const color of colorIndex.nonUniform.colors) {\r\n this.appendColor(color);\r\n }\r\n }\r\n }\r\n\r\n protected advance(nBytes: number) {\r\n this._curIndex += nBytes;\r\n assert(this._curIndex <= this.data!.length);\r\n }\r\n\r\n protected append8(val: number) {\r\n assert(0 <= val);\r\n assert(val <= 0xff);\r\n assert(val === Math.floor(val));\r\n\r\n this.data![this._curIndex] = val;\r\n this.advance(1);\r\n }\r\n protected append16(val: number) {\r\n this.append8(val & 0x00ff);\r\n this.append8(val >>> 8);\r\n }\r\n protected append32(val: number) {\r\n this.append16(val & 0x0000ffff);\r\n this.append16(val >>> 16);\r\n }\r\n\r\n private appendColor(tbgr: number) {\r\n const colors = ColorDef.getColors(tbgr);\r\n\r\n // invert transparency => alpha\r\n colors.t = 255 - colors.t;\r\n\r\n // premultiply alpha...\r\n switch (colors.t) {\r\n case 0:\r\n colors.r = colors.g = colors.b = 0;\r\n break;\r\n case 255:\r\n break;\r\n default: {\r\n const f = colors.t / 255.0;\r\n colors.r = Math.floor(colors.r * f + 0.5);\r\n colors.g = Math.floor(colors.g * f + 0.5);\r\n colors.b = Math.floor(colors.b * f + 0.5);\r\n break;\r\n }\r\n }\r\n\r\n // Store 32-bit value in little-endian order (red first)\r\n this.append8(colors.r);\r\n this.append8(colors.g);\r\n this.append8(colors.b);\r\n this.append8(colors.t);\r\n }\r\n\r\n public build(colorIndex: ColorIndex, featureIndex: FeatureIndex, maxDimension: number): VertexTable {\r\n const { numVertices, numRgbaPerVertex } = this;\r\n const numColors = colorIndex.isUniform ? 0 : colorIndex.numColors;\r\n const dimensions = computeDimensions(numVertices, numRgbaPerVertex, numColors, maxDimension);\r\n assert(0 === dimensions.width % numRgbaPerVertex || (0 < numColors && 1 === dimensions.height));\r\n\r\n const data = new Uint8Array(dimensions.width * dimensions.height * 4);\r\n\r\n this.data = data;\r\n for (let i = 0; i < numVertices; i++)\r\n this.appendVertex(i);\r\n\r\n this.appendColorTable(colorIndex);\r\n\r\n this.data = undefined;\r\n\r\n return {\r\n data,\r\n qparams: this.qparams,\r\n usesUnquantizedPositions: this.usesUnquantizedPositions,\r\n width: dimensions.width,\r\n height: dimensions.height,\r\n hasTranslucency: colorIndex.hasAlpha,\r\n uniformColor: colorIndex.uniform,\r\n numVertices,\r\n numRgbaPerVertex,\r\n uvParams: this.uvParams,\r\n featureIndexType: featureIndex.type,\r\n uniformFeatureID: featureIndex.type === FeatureIndexType.Uniform ? featureIndex.featureID : undefined,\r\n };\r\n }\r\n\r\n public static buildFromPolylines(args: PolylineArgs, maxDimension: number): VertexTable | undefined {\r\n const polylines = args.polylines;\r\n if (polylines.length === 0)\r\n return undefined;\r\n\r\n const builder = createPolylineBuilder(args);\r\n return builder.build(args.colors, args.features, maxDimension);\r\n }\r\n}\r\n\r\ntype VertexData = PolylineArgs | MeshArgs;\r\ntype Quantized<T extends VertexData> = Omit<T, \"points\"> & { points: QPoint3dList };\r\ntype Unquantized<T extends VertexData> = Omit<T, \"points\"> & { points: Omit<Point3dList, \"add\"> };\r\n\r\nnamespace Quantized { // eslint-disable-line @typescript-eslint/no-redeclare\r\n /**\r\n * Supplies vertex data from a PolylineArgs or MeshArgs. Each vertex consists of 12 bytes:\r\n * pos.x 00\r\n * pos.y 02\r\n * pos.z 04\r\n * colorIndex 06\r\n * featureIndex 08 (24 bits)\r\n * materialIndex 0B (for meshes that use a material atlas; otherwise unused). NOTE: Currently front-end code does not produce material atlases.\r\n */\r\n export class SimpleBuilder<T extends Quantized<VertexData>> extends VertexTableBuilder {\r\n public args: T;\r\n protected _qpoints: QPoint3dList;\r\n\r\n public constructor(args: T) {\r\n super();\r\n this._qpoints = args.points;\r\n this.args = args;\r\n assert(undefined !== this.args.points);\r\n }\r\n\r\n public get numVertices() { return this.args.points.length; }\r\n public get numRgbaPerVertex() { return 3; }\r\n public get usesUnquantizedPositions() { return false; }\r\n public get qparams() {\r\n return this._qpoints.params;\r\n }\r\n\r\n public appendVertex(vertIndex: number): void {\r\n this.appendPosition(vertIndex);\r\n this.appendColorIndex(vertIndex);\r\n this.appendFeatureIndex(vertIndex);\r\n }\r\n\r\n protected appendPosition(vertIndex: number) {\r\n this.append16(this._qpoints.list[vertIndex].x);\r\n this.append16(this._qpoints.list[vertIndex].y);\r\n this.append16(this._qpoints.list[vertIndex].z);\r\n }\r\n\r\n protected appendColorIndex(vertIndex: number) {\r\n if (undefined !== this.args.colors.nonUniform) {\r\n this.append16(this.args.colors.nonUniform.indices[vertIndex]);\r\n } else {\r\n this.advance(2);\r\n }\r\n }\r\n\r\n protected appendFeatureIndex(vertIndex: number) {\r\n if (undefined !== this.args.features.featureIDs) {\r\n this.append32(this.args.features.featureIDs[vertIndex]);\r\n } else {\r\n this.advance(4);\r\n }\r\n }\r\n }\r\n\r\n /** Supplies vertex data from a MeshArgs. */\r\n export class MeshBuilder extends SimpleBuilder<Quantized<MeshArgs>> {\r\n public readonly type: SurfaceType;\r\n\r\n protected constructor(args: Quantized<MeshArgs>, type: SurfaceType) {\r\n super(args);\r\n this.type = type;\r\n }\r\n\r\n public static create(args: Quantized<MeshArgs>): MeshBuilder {\r\n if (args.isVolumeClassifier)\r\n return new MeshBuilder(args, SurfaceType.VolumeClassifier);\r\n\r\n const isLit = undefined !== args.normals && 0 < args.normals.length;\r\n const isTextured = undefined !== args.textureMapping;\r\n\r\n let uvParams: QParams2d | undefined;\r\n\r\n if (args.textureMapping) {\r\n const uvRange = Range2d.createNull();\r\n const fpts = args.textureMapping.uvParams;\r\n const pt2d = new Point2d();\r\n if (undefined !== fpts && fpts.length > 0)\r\n for (let i = 0; i < args.points.length; i++)\r\n uvRange.extendPoint(Point2d.create(fpts[i].x, fpts[i].y, pt2d));\r\n\r\n uvParams = QParams2d.fromRange(uvRange);\r\n }\r\n\r\n if (isLit)\r\n return isTextured ? new TexturedLitMeshBuilder(args, uvParams!) : new LitMeshBuilder(args);\r\n else\r\n return isTextured ? new TexturedMeshBuilder(args, uvParams!) : new MeshBuilder(args, SurfaceType.Unlit);\r\n }\r\n }\r\n\r\n /** Supplies vertex data from a MeshArgs where each vertex consists of 16 bytes.\r\n * In addition to the SimpleBuilder data, the final 4 bytes hold the quantized UV params\r\n * The color index is left uninitialized as it is unused.\r\n */\r\n class TexturedMeshBuilder extends MeshBuilder {\r\n private _qparams: QParams2d;\r\n private _qpoint = new QPoint2d();\r\n\r\n public constructor(args: Quantized<MeshArgs>, qparams: QParams2d, type: SurfaceType = SurfaceType.Textured) {\r\n super(args, type);\r\n this._qparams = qparams;\r\n assert(undefined !== args.textureMapping);\r\n }\r\n\r\n public override get numRgbaPerVertex() { return 4; }\r\n public override get uvParams() { return this._qparams; }\r\n\r\n public override appendVertex(vertIndex: number) {\r\n this.appendPosition(vertIndex);\r\n this.appendNormal(vertIndex);\r\n this.appendFeatureIndex(vertIndex);\r\n this.appendUVParams(vertIndex);\r\n }\r\n\r\n protected appendNormal(_vertIndex: number): void { this.advance(2); } // no normal for unlit meshes\r\n\r\n protected appendUVParams(vertIndex: number) {\r\n this._qpoint.init(this.args.textureMapping!.uvParams[vertIndex], this._qparams);\r\n this.append16(this._qpoint.x);\r\n this.append16(this._qpoint.y);\r\n }\r\n }\r\n\r\n /** As with TexturedMeshBuilder, but the color index is replaced with the oct-encoded normal value. */\r\n class TexturedLitMeshBuilder extends TexturedMeshBuilder {\r\n public constructor(args: Quantized<MeshArgs>, qparams: QParams2d) {\r\n super(args, qparams, SurfaceType.TexturedLit);\r\n assert(undefined !== args.normals);\r\n }\r\n\r\n protected override appendNormal(vertIndex: number) { this.append16(this.args.normals![vertIndex].value); }\r\n }\r\n\r\n /** 16 bytes. The last 2 bytes are unused; the 2 immediately preceding it hold the oct-encoded normal value. */\r\n class LitMeshBuilder extends MeshBuilder {\r\n public constructor(args: Quantized<MeshArgs>) {\r\n super(args, SurfaceType.Lit);\r\n assert(undefined !== args.normals);\r\n }\r\n\r\n public override get numRgbaPerVertex() { return 4; }\r\n\r\n public override appendVertex(vertIndex: number) {\r\n super.appendVertex(vertIndex);\r\n this.append16(this.args.normals![vertIndex].value);\r\n this.advance(2); // 2 unused bytes\r\n }\r\n }\r\n}\r\n\r\n/** Builders in this namespace store vertex positions as 32-bit floats instead of quantizing to 16-bit unsigned integers.\r\n * This is preferred for decoration graphics, which might contain ranges of positions that exceed the limits for quantization; if quantized,\r\n * they could produce visual artifacts.\r\n * Each builder produces a VertexTable that starts with the following layout:\r\n * pos.x: 00\r\n * pos.y: 04\r\n * pos.z: 08\r\n * featureIndex: 0C\r\n * materialIndex:0F (NOTE: frontend code currently doesn't produce material atlases, so this is always zero).\r\n * Followed (by default) by:\r\n * colorIndex: 10\r\n * unused: 12\r\n * Subclasses may add 4 more bytes and/or overwrite the final 4 bytes above.\r\n */\r\nnamespace Unquantized { // eslint-disable-line @typescript-eslint/no-redeclare\r\n const u32Array = new Uint32Array(1);\r\n const f32Array = new Float32Array(u32Array.buffer);\r\n\r\n // colorIndex: 10\r\n // unused: 12\r\n export class SimpleBuilder<T extends Unquantized<VertexData>> extends VertexTableBuilder {\r\n public args: T;\r\n protected _points: Point3d[];\r\n private _qparams3d: QParams3d;\r\n\r\n public constructor(args: T) {\r\n super();\r\n assert(!(args.points instanceof QPoint3dList));\r\n this._qparams3d = QParams3d.fromRange(args.points.range);\r\n this.args = args;\r\n this._points = args.points;\r\n }\r\n\r\n public get numVertices() { return this._points.length; }\r\n public get numRgbaPerVertex() { return 5; }\r\n public get usesUnquantizedPositions() { return true; }\r\n public get qparams() { return this._qparams3d; }\r\n\r\n public appendVertex(vertIndex: number): void {\r\n this.appendTransposePosAndFeatureNdx(vertIndex);\r\n this.appendColorIndex(vertIndex);\r\n }\r\n\r\n private appendFloat32(val: number) {\r\n f32Array[0] = val;\r\n this.append32(u32Array[0]);\r\n }\r\n\r\n private convertFloat32(val: number): number {\r\n f32Array[0] = val;\r\n return u32Array[0];\r\n }\r\n\r\n protected appendTransposePosAndFeatureNdx(vertIndex: number) {\r\n // transpose position xyz vals into [0].xyz - [3].xyz, and add feature index at .w\r\n // this is to order things to let shader code access much more efficiently\r\n const pt = this._points[vertIndex];\r\n const x = this.convertFloat32 (pt.x);\r\n const y = this.convertFloat32 (pt.y);\r\n const z = this.convertFloat32 (pt.z);\r\n const featID = (this.args.features.featureIDs) ? this.args.features.featureIDs[vertIndex] : 0;\r\n this.append8(x & 0x000000ff);\r\n this.append8(y & 0x000000ff);\r\n this.append8(z & 0x000000ff);\r\n this.append8(featID & 0x000000ff);\r\n this.append8((x >>> 8) & 0x000000ff);\r\n this.append8((y >>> 8) & 0x000000ff);\r\n this.append8((z >>> 8) & 0x000000ff);\r\n this.append8((featID >>> 8) & 0x000000ff);\r\n this.append8((x >>> 16) & 0x000000ff);\r\n this.append8((y >>> 16) & 0x000000ff);\r\n this.append8((z >>> 16) & 0x000000ff);\r\n this.append8((featID >>> 16) & 0x000000ff);\r\n this.append8(x >>> 24);\r\n this.append8(y >>> 24);\r\n this.append8(z >>> 24);\r\n this.append8(featID >>> 24);\r\n }\r\n\r\n protected appendPosition(vertIndex: number) {\r\n const pt = this._points[vertIndex];\r\n this.appendFloat32(pt.x);\r\n this.appendFloat32(pt.y);\r\n this.appendFloat32(pt.z);\r\n }\r\n\r\n protected appendFeatureIndex(vertIndex: number) {\r\n if (this.args.features.featureIDs)\r\n this.append32(this.args.features.featureIDs[vertIndex]);\r\n else\r\n this.advance(4);\r\n }\r\n\r\n protected _appendColorIndex(vertIndex: number) {\r\n if (undefined !== this.args.colors.nonUniform)\r\n this.append16(this.args.colors.nonUniform.indices[vertIndex]);\r\n else\r\n this.advance(2);\r\n }\r\n\r\n protected appendColorIndex(vertIndex: number) {\r\n this._appendColorIndex(vertIndex);\r\n this.advance(2);\r\n }\r\n }\r\n\r\n export class MeshBuilder extends SimpleBuilder<Unquantized<MeshArgs>> {\r\n public readonly type: SurfaceType;\r\n\r\n protected constructor(args: Unquantized<MeshArgs>, type: SurfaceType) {\r\n super(args);\r\n this.type = type;\r\n }\r\n\r\n public static create(args: Unquantized<MeshArgs>): MeshBuilder {\r\n if (args.isVolumeClassifier)\r\n return new MeshBuilder(args, SurfaceType.VolumeClassifier);\r\n\r\n const isLit = undefined !== args.normals && 0 < args.normals.length;\r\n const isTextured = undefined !== args.textureMapping;\r\n\r\n let uvParams: QParams2d | undefined;\r\n\r\n if (args.textureMapping) {\r\n const uvRange = Range2d.createNull();\r\n const fpts = args.textureMapping.uvParams;\r\n const pt2d = new Point2d();\r\n if (undefined !== fpts && fpts.length > 0)\r\n for (let i = 0; i < args.points.length; i++)\r\n uvRange.extendPoint(Point2d.create(fpts[i].x, fpts[i].y, pt2d));\r\n\r\n uvParams = QParams2d.fromRange(uvRange);\r\n }\r\n\r\n if (isLit)\r\n return isTextured ? new TexturedLitMeshBuilder(args, uvParams!) : new LitMeshBuilder(args);\r\n else\r\n return isTextured ? new TexturedMeshBuilder(args, uvParams!) : new MeshBuilder(args, SurfaceType.Unlit);\r\n }\r\n }\r\n\r\n // u: 10\r\n // v: 12\r\n class TexturedMeshBuilder extends MeshBuilder {\r\n private _qparams: QParams2d;\r\n private _qpoint = new QPoint2d();\r\n\r\n public constructor(args: Unquantized<MeshArgs>, qparams: QParams2d, type = SurfaceType.Textured) {\r\n super(args, type);\r\n this._qparams = qparams;\r\n assert(undefined !== args.textureMapping);\r\n }\r\n\r\n public override get uvParams() { return this._qparams; }\r\n\r\n public override appendVertex(vertIndex: number) {\r\n super.appendVertex(vertIndex);\r\n\r\n this._qpoint.init(this.args.textureMapping!.uvParams[vertIndex], this._qparams);\r\n this.append16(this._qpoint.x);\r\n this.append16(this._qpoint.y);\r\n }\r\n\r\n protected override appendColorIndex() { }\r\n }\r\n\r\n // u: 10\r\n // v: 12\r\n // normal: 14\r\n // unused: 16\r\n class TexturedLitMeshBuilder extends TexturedMeshBuilder {\r\n public constructor(args: Unquantized<MeshArgs>, qparams: QParams2d) {\r\n super(args, qparams, SurfaceType.TexturedLit);\r\n assert(undefined !== args.normals);\r\n }\r\n\r\n public override get numRgbaPerVertex() { return 6; }\r\n\r\n public override appendVertex(vertIndex: number) {\r\n super.appendVertex(vertIndex);\r\n this.append16(this.args.normals![vertIndex].value);\r\n this.advance(2);\r\n }\r\n }\r\n\r\n // color: 10\r\n // normal: 12\r\n class LitMeshBuilder extends MeshBuilder {\r\n public constructor(args: Unquantized<MeshArgs>) {\r\n super(args, SurfaceType.Lit);\r\n assert(undefined !== args.normals);\r\n }\r\n\r\n protected override appendColorIndex(vertIndex: number) {\r\n super._appendColorIndex(vertIndex);\r\n }\r\n\r\n public override appendVertex(vertIndex: number) {\r\n super.appendVertex(vertIndex);\r\n this.append16(this.args.normals![vertIndex].value);\r\n }\r\n }\r\n}\r\n\r\nfunction createMeshBuilder(args: MeshArgs): VertexTableBuilder & { type: SurfaceType } {\r\n if (args.points instanceof QPoint3dList)\r\n return Quantized.MeshBuilder.create(args as Quantized<MeshArgs>);\r\n else\r\n return Unquantized.MeshBuilder.create(args as Unquantized<MeshArgs>);\r\n}\r\n\r\nfunction createPolylineBuilder(args: PolylineArgs): VertexTableBuilder {\r\n if (args.points instanceof QPoint3dList)\r\n return new Quantized.SimpleBuilder(args as Quantized<PolylineArgs>);\r\n else\r\n return new Unquantized.SimpleBuilder(args as Unquantized<PolylineArgs>);\r\n}\r\n"]}
|
|
@@ -5,7 +5,7 @@ import { IndexedPolyface, Loop, Path, Point3d, Range3d, SolidPrimitive, Transfor
|
|
|
5
5
|
import { AnalysisStyleDisplacement, Feature } from "@itwin/core-common";
|
|
6
6
|
import { RenderGraphic } from "../../RenderGraphic";
|
|
7
7
|
import { RenderSystem } from "../../RenderSystem";
|
|
8
|
-
import { DisplayParams } from "
|
|
8
|
+
import { DisplayParams } from "../../../common/render/primitives/DisplayParams";
|
|
9
9
|
import { MeshBuilderMap } from "../mesh/MeshBuilderMap";
|
|
10
10
|
import { MeshList } from "../mesh/MeshPrimitives";
|
|
11
11
|
import { GeometryOptions } from "../Primitives";
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"GeometryAccumulator.d.ts","sourceRoot":"","sources":["../../../../../src/render/primitives/geometry/GeometryAccumulator.ts"],"names":[],"mappings":"AAIA;;GAEG;AAGH,OAAO,EAAE,eAAe,EAAE,IAAI,EAAE,IAAI,EAAE,OAAO,EAAE,OAAO,EAAE,cAAc,EAAE,SAAS,EAAE,MAAM,sBAAsB,CAAC;AAChH,OAAO,EAAE,yBAAyB,EAAE,OAAO,EAAgB,MAAM,oBAAoB,CAAC;AAEtF,OAAO,EAAE,aAAa,EAAE,MAAM,qBAAqB,CAAC;AACpD,OAAO,EAAE,YAAY,EAAE,MAAM,oBAAoB,CAAC;AAClD,OAAO,EAAE,aAAa,EAAE,MAAM,
|
|
1
|
+
{"version":3,"file":"GeometryAccumulator.d.ts","sourceRoot":"","sources":["../../../../../src/render/primitives/geometry/GeometryAccumulator.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"GeometryAccumulator.js","sourceRoot":"","sources":["../../../../../src/render/primitives/geometry/GeometryAccumulator.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 Rendering\r\n */\r\n\r\nimport { assert } from \"@itwin/core-bentley\";\r\nimport { IndexedPolyface, Loop, Path, Point3d, Range3d, SolidPrimitive, Transform } from \"@itwin/core-geometry\";\r\nimport { AnalysisStyleDisplacement, Feature, QPoint3dList } from \"@itwin/core-common\";\r\nimport { GraphicBranch } from \"../../GraphicBranch\";\r\nimport { RenderGraphic } from \"../../RenderGraphic\";\r\nimport { RenderSystem } from \"../../RenderSystem\";\r\nimport { DisplayParams } from \"../DisplayParams\";\r\nimport { MeshBuilderMap } from \"../mesh/MeshBuilderMap\";\r\nimport { MeshList } from \"../mesh/MeshPrimitives\";\r\nimport { GeometryOptions } from \"../Primitives\";\r\nimport { GeometryList } from \"./GeometryList\";\r\nimport { Geometry, PrimitiveGeometryType } from \"./GeometryPrimitives\";\r\nimport { IModelApp } from \"../../../IModelApp\";\r\n\r\n/** @internal */\r\nexport class GeometryAccumulator {\r\n private _transform: Transform;\r\n private _surfacesOnly: boolean;\r\n private readonly _analysisDisplacement?: AnalysisStyleDisplacement;\r\n private readonly _viewIndependentOrigin?: Point3d;\r\n\r\n public readonly tileRange: Range3d;\r\n public readonly geometries: GeometryList = new GeometryList();\r\n public readonly system: RenderSystem;\r\n public currentFeature?: Feature;\r\n\r\n public get surfacesOnly(): boolean { return this._surfacesOnly; }\r\n public get transform(): Transform { return this._transform; }\r\n public get isEmpty(): boolean { return this.geometries.isEmpty; }\r\n public get haveTransform(): boolean { return !this._transform.isIdentity; }\r\n\r\n public constructor(options?: {\r\n system?: RenderSystem;\r\n surfacesOnly?: boolean;\r\n transform?: Transform;\r\n tileRange?: Range3d;\r\n analysisStyleDisplacement?: AnalysisStyleDisplacement;\r\n viewIndependentOrigin?: Point3d;\r\n feature?: Feature;\r\n }) {\r\n this.system = options?.system ?? IModelApp.renderSystem;\r\n this.tileRange = options?.tileRange ?? Range3d.createNull();\r\n this._surfacesOnly = true === options?.surfacesOnly;\r\n this._transform = options?.transform ?? Transform.createIdentity();\r\n this._analysisDisplacement = options?.analysisStyleDisplacement;\r\n this._viewIndependentOrigin = options?.viewIndependentOrigin;\r\n this.currentFeature = options?.feature;\r\n }\r\n\r\n private getPrimitiveRange(geom: PrimitiveGeometryType): Range3d | undefined {\r\n const range = new Range3d();\r\n geom.range(undefined, range);\r\n return range.isNull ? undefined : range;\r\n }\r\n\r\n private calculateTransform(transform: Transform, range: Range3d): Transform {\r\n if (this.haveTransform)\r\n transform = this._transform.multiplyTransformTransform(transform);\r\n\r\n transform.multiplyRange(range, range);\r\n return transform;\r\n }\r\n\r\n public addLoop(loop: Loop, displayParams: DisplayParams, transform: Transform, disjoint: boolean): boolean {\r\n const range = this.getPrimitiveRange(loop);\r\n if (!range)\r\n return false;\r\n\r\n const xform = this.calculateTransform(transform, range);\r\n return this.addGeometry(Geometry.createFromLoop(loop, xform, range, displayParams, disjoint, this.currentFeature));\r\n }\r\n\r\n public addLineString(pts: Point3d[], displayParams: DisplayParams, transform: Transform): boolean {\r\n // Do this.getPrimitiveRange() manually, so there is no need to create a PointString3d object just to find the range\r\n const range = Range3d.createNull();\r\n range.extendArray(pts, undefined);\r\n if (range.isNull)\r\n return false;\r\n\r\n const xform = this.calculateTransform(transform, range);\r\n return this.addGeometry(Geometry.createFromLineString(pts, xform, range, displayParams, this.currentFeature));\r\n }\r\n\r\n public addPointString(pts: Point3d[], displayParams: DisplayParams, transform: Transform): boolean {\r\n // Do this.getPrimitiveRange() manually, so there is no need to create a PointString3d object just to find the range\r\n const range = Range3d.createNull();\r\n range.extendArray(pts, undefined);\r\n if (range.isNull)\r\n return false;\r\n\r\n const xform = this.calculateTransform(transform, range);\r\n return this.addGeometry(Geometry.createFromPointString(pts, xform, range, displayParams, this.currentFeature));\r\n }\r\n\r\n public addPath(path: Path, displayParams: DisplayParams, transform: Transform, disjoint: boolean): boolean {\r\n const range = this.getPrimitiveRange(path);\r\n if (!range)\r\n return false;\r\n\r\n const xform = this.calculateTransform(transform, range);\r\n return this.addGeometry(Geometry.createFromPath(path, xform, range, displayParams, disjoint, this.currentFeature));\r\n }\r\n\r\n public addPolyface(pf: IndexedPolyface, displayParams: DisplayParams, transform: Transform): boolean {\r\n // Adjust the mesh range based on displacements applied to vertices by analysis style, if applicable.\r\n let range;\r\n if (this._analysisDisplacement) {\r\n const channel = pf.data.auxData?.channels.find((x) => x.name === this._analysisDisplacement!.channelName);\r\n const displacementRange = channel?.computeDisplacementRange(this._analysisDisplacement.scale);\r\n if (displacementRange && !displacementRange.isNull) {\r\n range = Range3d.createNull();\r\n const pt = new Point3d();\r\n for (let i = 0; i < pf.data.point.length; i++) {\r\n pf.data.point.getPoint3dAtUncheckedPointIndex(i, pt);\r\n range.extendXYZ(pt.x + displacementRange.low.x, pt.y + displacementRange.low.y, pt.z + displacementRange.low.z);\r\n range.extendXYZ(pt.x + displacementRange.high.x, pt.y + displacementRange.high.y, pt.z + displacementRange.high.z);\r\n }\r\n }\r\n }\r\n\r\n if (!range && !(range = this.getPrimitiveRange(pf)))\r\n return false;\r\n\r\n const xform = this.calculateTransform(transform, range);\r\n return this.addGeometry(Geometry.createFromPolyface(pf, xform, range, displayParams, this.currentFeature));\r\n }\r\n\r\n public addSolidPrimitive(primitive: SolidPrimitive, displayParams: DisplayParams, transform: Transform): boolean {\r\n const range = this.getPrimitiveRange(primitive);\r\n if (!range)\r\n return false;\r\n\r\n const xform = this.calculateTransform(transform, range);\r\n return this.addGeometry(Geometry.createFromSolidPrimitive(primitive, xform, range, displayParams, this.currentFeature));\r\n }\r\n\r\n public addGeometry(geom: Geometry): boolean {\r\n this.geometries.push(geom);\r\n return true;\r\n }\r\n\r\n public clear(): void { this.geometries.clear(); }\r\n\r\n /**\r\n * Generates a MeshBuilderMap\r\n * native: GeometryAccumulator::ToMeshBuilderMap(GeometryOptionsCR options, double tolerance, FeatureTableP featureTable, ViewContextR context) const\r\n * note : removed featureTable, ViewContext\r\n * @param tolerance should derive from Viewport.getPixelSizeAtPoint\r\n */\r\n public toMeshBuilderMap(options: GeometryOptions, tolerance: number, pickable: { modelId?: string } | undefined): MeshBuilderMap {\r\n const { geometries } = this; // declare internal dependencies\r\n\r\n const range = geometries.computeRange();\r\n const is2d = !range.isNull && range.isAlmostZeroZ;\r\n\r\n return MeshBuilderMap.createFromGeometries(geometries, tolerance, range, is2d, options, pickable);\r\n }\r\n\r\n public toMeshes(options: GeometryOptions, tolerance: number, pickable: { modelId?: string } | undefined): MeshList {\r\n if (this.geometries.isEmpty)\r\n return new MeshList();\r\n\r\n const builderMap = this.toMeshBuilderMap(options, tolerance, pickable);\r\n return builderMap.toMeshes();\r\n }\r\n\r\n /**\r\n * Populate a list of Graphic objects from the accumulated Geometry objects.\r\n * removed ViewContext\r\n */\r\n public saveToGraphicList(graphics: RenderGraphic[], options: GeometryOptions, tolerance: number, pickable: { modelId?: string } | undefined): MeshList | undefined {\r\n const meshes = this.toMeshes(options, tolerance, pickable);\r\n if (0 === meshes.length)\r\n return undefined;\r\n\r\n // If the meshes contain quantized positions, they are all quantized to the same range. If that range is small relative to the distance\r\n // from the origin, quantization errors can produce display artifacts. Remove the translation from the quantization parameters and apply\r\n // it in the transform instead.\r\n //\r\n // If the positions are not quantized, they have already been transformed to be relative to the center of the meshes' range.\r\n // Apply the inverse translation to put them back into model space.\r\n const branch = new GraphicBranch(true);\r\n let transformOrigin: Point3d | undefined;\r\n let meshesRangeOffset = false;\r\n\r\n for (const mesh of meshes) {\r\n const verts = mesh.points;\r\n if (branch.isEmpty) {\r\n if (verts instanceof QPoint3dList) {\r\n transformOrigin = verts.params.origin.clone();\r\n verts.params.origin.setZero();\r\n } else {\r\n transformOrigin = verts.range.center;\r\n // In this case we need to modify the qOrigin of the graphic that will get created later since we have translated the origin.\r\n // We can't modify it directly, but if we temporarily modify the range of the mesh used to create it the qOrigin will get created properly.\r\n // Range is shared (not cloned) by all meshes and the mesh list itself, so modifying the range of the meshlist will modify it for all meshes.\r\n // We will then later add this offset back to the range once all of the graphics have been created because it is needed unmodified for locate.\r\n if (!meshesRangeOffset) {\r\n meshes.range?.low.subtractInPlace(transformOrigin);\r\n meshes.range?.high.subtractInPlace(transformOrigin);\r\n meshesRangeOffset = true;\r\n }\r\n }\r\n } else {\r\n assert(undefined !== transformOrigin);\r\n if (verts instanceof QPoint3dList) {\r\n assert(transformOrigin.isAlmostEqual(verts.params.origin));\r\n verts.params.origin.setZero();\r\n } else {\r\n assert(verts.range.center.isAlmostZero);\r\n }\r\n }\r\n\r\n const graphic = mesh.getGraphics(this.system, this._viewIndependentOrigin);\r\n if (undefined !== graphic)\r\n branch.add(graphic);\r\n }\r\n\r\n if (!branch.isEmpty) {\r\n assert(undefined !== transformOrigin);\r\n const transform = Transform.createTranslation(transformOrigin);\r\n graphics.push(this.system.createBranch(branch, transform));\r\n if (meshesRangeOffset) { // restore the meshes range that we modified earlier.\r\n meshes.range?.low.addInPlace(transformOrigin);\r\n meshes.range?.high.addInPlace(transformOrigin);\r\n }\r\n }\r\n\r\n return meshes;\r\n }\r\n}\r\n"]}
|
|
1
|
+
{"version":3,"file":"GeometryAccumulator.js","sourceRoot":"","sources":["../../../../../src/render/primitives/geometry/GeometryAccumulator.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 Rendering\r\n */\r\n\r\nimport { assert } from \"@itwin/core-bentley\";\r\nimport { IndexedPolyface, Loop, Path, Point3d, Range3d, SolidPrimitive, Transform } from \"@itwin/core-geometry\";\r\nimport { AnalysisStyleDisplacement, Feature, QPoint3dList } from \"@itwin/core-common\";\r\nimport { GraphicBranch } from \"../../GraphicBranch\";\r\nimport { RenderGraphic } from \"../../RenderGraphic\";\r\nimport { RenderSystem } from \"../../RenderSystem\";\r\nimport { DisplayParams } from \"../../../common/render/primitives/DisplayParams\";\r\nimport { MeshBuilderMap } from \"../mesh/MeshBuilderMap\";\r\nimport { MeshList } from \"../mesh/MeshPrimitives\";\r\nimport { GeometryOptions } from \"../Primitives\";\r\nimport { GeometryList } from \"./GeometryList\";\r\nimport { Geometry, PrimitiveGeometryType } from \"./GeometryPrimitives\";\r\nimport { IModelApp } from \"../../../IModelApp\";\r\n\r\n/** @internal */\r\nexport class GeometryAccumulator {\r\n private _transform: Transform;\r\n private _surfacesOnly: boolean;\r\n private readonly _analysisDisplacement?: AnalysisStyleDisplacement;\r\n private readonly _viewIndependentOrigin?: Point3d;\r\n\r\n public readonly tileRange: Range3d;\r\n public readonly geometries: GeometryList = new GeometryList();\r\n public readonly system: RenderSystem;\r\n public currentFeature?: Feature;\r\n\r\n public get surfacesOnly(): boolean { return this._surfacesOnly; }\r\n public get transform(): Transform { return this._transform; }\r\n public get isEmpty(): boolean { return this.geometries.isEmpty; }\r\n public get haveTransform(): boolean { return !this._transform.isIdentity; }\r\n\r\n public constructor(options?: {\r\n system?: RenderSystem;\r\n surfacesOnly?: boolean;\r\n transform?: Transform;\r\n tileRange?: Range3d;\r\n analysisStyleDisplacement?: AnalysisStyleDisplacement;\r\n viewIndependentOrigin?: Point3d;\r\n feature?: Feature;\r\n }) {\r\n this.system = options?.system ?? IModelApp.renderSystem;\r\n this.tileRange = options?.tileRange ?? Range3d.createNull();\r\n this._surfacesOnly = true === options?.surfacesOnly;\r\n this._transform = options?.transform ?? Transform.createIdentity();\r\n this._analysisDisplacement = options?.analysisStyleDisplacement;\r\n this._viewIndependentOrigin = options?.viewIndependentOrigin;\r\n this.currentFeature = options?.feature;\r\n }\r\n\r\n private getPrimitiveRange(geom: PrimitiveGeometryType): Range3d | undefined {\r\n const range = new Range3d();\r\n geom.range(undefined, range);\r\n return range.isNull ? undefined : range;\r\n }\r\n\r\n private calculateTransform(transform: Transform, range: Range3d): Transform {\r\n if (this.haveTransform)\r\n transform = this._transform.multiplyTransformTransform(transform);\r\n\r\n transform.multiplyRange(range, range);\r\n return transform;\r\n }\r\n\r\n public addLoop(loop: Loop, displayParams: DisplayParams, transform: Transform, disjoint: boolean): boolean {\r\n const range = this.getPrimitiveRange(loop);\r\n if (!range)\r\n return false;\r\n\r\n const xform = this.calculateTransform(transform, range);\r\n return this.addGeometry(Geometry.createFromLoop(loop, xform, range, displayParams, disjoint, this.currentFeature));\r\n }\r\n\r\n public addLineString(pts: Point3d[], displayParams: DisplayParams, transform: Transform): boolean {\r\n // Do this.getPrimitiveRange() manually, so there is no need to create a PointString3d object just to find the range\r\n const range = Range3d.createNull();\r\n range.extendArray(pts, undefined);\r\n if (range.isNull)\r\n return false;\r\n\r\n const xform = this.calculateTransform(transform, range);\r\n return this.addGeometry(Geometry.createFromLineString(pts, xform, range, displayParams, this.currentFeature));\r\n }\r\n\r\n public addPointString(pts: Point3d[], displayParams: DisplayParams, transform: Transform): boolean {\r\n // Do this.getPrimitiveRange() manually, so there is no need to create a PointString3d object just to find the range\r\n const range = Range3d.createNull();\r\n range.extendArray(pts, undefined);\r\n if (range.isNull)\r\n return false;\r\n\r\n const xform = this.calculateTransform(transform, range);\r\n return this.addGeometry(Geometry.createFromPointString(pts, xform, range, displayParams, this.currentFeature));\r\n }\r\n\r\n public addPath(path: Path, displayParams: DisplayParams, transform: Transform, disjoint: boolean): boolean {\r\n const range = this.getPrimitiveRange(path);\r\n if (!range)\r\n return false;\r\n\r\n const xform = this.calculateTransform(transform, range);\r\n return this.addGeometry(Geometry.createFromPath(path, xform, range, displayParams, disjoint, this.currentFeature));\r\n }\r\n\r\n public addPolyface(pf: IndexedPolyface, displayParams: DisplayParams, transform: Transform): boolean {\r\n // Adjust the mesh range based on displacements applied to vertices by analysis style, if applicable.\r\n let range;\r\n if (this._analysisDisplacement) {\r\n const channel = pf.data.auxData?.channels.find((x) => x.name === this._analysisDisplacement!.channelName);\r\n const displacementRange = channel?.computeDisplacementRange(this._analysisDisplacement.scale);\r\n if (displacementRange && !displacementRange.isNull) {\r\n range = Range3d.createNull();\r\n const pt = new Point3d();\r\n for (let i = 0; i < pf.data.point.length; i++) {\r\n pf.data.point.getPoint3dAtUncheckedPointIndex(i, pt);\r\n range.extendXYZ(pt.x + displacementRange.low.x, pt.y + displacementRange.low.y, pt.z + displacementRange.low.z);\r\n range.extendXYZ(pt.x + displacementRange.high.x, pt.y + displacementRange.high.y, pt.z + displacementRange.high.z);\r\n }\r\n }\r\n }\r\n\r\n if (!range && !(range = this.getPrimitiveRange(pf)))\r\n return false;\r\n\r\n const xform = this.calculateTransform(transform, range);\r\n return this.addGeometry(Geometry.createFromPolyface(pf, xform, range, displayParams, this.currentFeature));\r\n }\r\n\r\n public addSolidPrimitive(primitive: SolidPrimitive, displayParams: DisplayParams, transform: Transform): boolean {\r\n const range = this.getPrimitiveRange(primitive);\r\n if (!range)\r\n return false;\r\n\r\n const xform = this.calculateTransform(transform, range);\r\n return this.addGeometry(Geometry.createFromSolidPrimitive(primitive, xform, range, displayParams, this.currentFeature));\r\n }\r\n\r\n public addGeometry(geom: Geometry): boolean {\r\n this.geometries.push(geom);\r\n return true;\r\n }\r\n\r\n public clear(): void { this.geometries.clear(); }\r\n\r\n /**\r\n * Generates a MeshBuilderMap\r\n * native: GeometryAccumulator::ToMeshBuilderMap(GeometryOptionsCR options, double tolerance, FeatureTableP featureTable, ViewContextR context) const\r\n * note : removed featureTable, ViewContext\r\n * @param tolerance should derive from Viewport.getPixelSizeAtPoint\r\n */\r\n public toMeshBuilderMap(options: GeometryOptions, tolerance: number, pickable: { modelId?: string } | undefined): MeshBuilderMap {\r\n const { geometries } = this; // declare internal dependencies\r\n\r\n const range = geometries.computeRange();\r\n const is2d = !range.isNull && range.isAlmostZeroZ;\r\n\r\n return MeshBuilderMap.createFromGeometries(geometries, tolerance, range, is2d, options, pickable);\r\n }\r\n\r\n public toMeshes(options: GeometryOptions, tolerance: number, pickable: { modelId?: string } | undefined): MeshList {\r\n if (this.geometries.isEmpty)\r\n return new MeshList();\r\n\r\n const builderMap = this.toMeshBuilderMap(options, tolerance, pickable);\r\n return builderMap.toMeshes();\r\n }\r\n\r\n /**\r\n * Populate a list of Graphic objects from the accumulated Geometry objects.\r\n * removed ViewContext\r\n */\r\n public saveToGraphicList(graphics: RenderGraphic[], options: GeometryOptions, tolerance: number, pickable: { modelId?: string } | undefined): MeshList | undefined {\r\n const meshes = this.toMeshes(options, tolerance, pickable);\r\n if (0 === meshes.length)\r\n return undefined;\r\n\r\n // If the meshes contain quantized positions, they are all quantized to the same range. If that range is small relative to the distance\r\n // from the origin, quantization errors can produce display artifacts. Remove the translation from the quantization parameters and apply\r\n // it in the transform instead.\r\n //\r\n // If the positions are not quantized, they have already been transformed to be relative to the center of the meshes' range.\r\n // Apply the inverse translation to put them back into model space.\r\n const branch = new GraphicBranch(true);\r\n let transformOrigin: Point3d | undefined;\r\n let meshesRangeOffset = false;\r\n\r\n for (const mesh of meshes) {\r\n const verts = mesh.points;\r\n if (branch.isEmpty) {\r\n if (verts instanceof QPoint3dList) {\r\n transformOrigin = verts.params.origin.clone();\r\n verts.params.origin.setZero();\r\n } else {\r\n transformOrigin = verts.range.center;\r\n // In this case we need to modify the qOrigin of the graphic that will get created later since we have translated the origin.\r\n // We can't modify it directly, but if we temporarily modify the range of the mesh used to create it the qOrigin will get created properly.\r\n // Range is shared (not cloned) by all meshes and the mesh list itself, so modifying the range of the meshlist will modify it for all meshes.\r\n // We will then later add this offset back to the range once all of the graphics have been created because it is needed unmodified for locate.\r\n if (!meshesRangeOffset) {\r\n meshes.range?.low.subtractInPlace(transformOrigin);\r\n meshes.range?.high.subtractInPlace(transformOrigin);\r\n meshesRangeOffset = true;\r\n }\r\n }\r\n } else {\r\n assert(undefined !== transformOrigin);\r\n if (verts instanceof QPoint3dList) {\r\n assert(transformOrigin.isAlmostEqual(verts.params.origin));\r\n verts.params.origin.setZero();\r\n } else {\r\n assert(verts.range.center.isAlmostZero);\r\n }\r\n }\r\n\r\n const graphic = mesh.getGraphics(this.system, this._viewIndependentOrigin);\r\n if (undefined !== graphic)\r\n branch.add(graphic);\r\n }\r\n\r\n if (!branch.isEmpty) {\r\n assert(undefined !== transformOrigin);\r\n const transform = Transform.createTranslation(transformOrigin);\r\n graphics.push(this.system.createBranch(branch, transform));\r\n if (meshesRangeOffset) { // restore the meshes range that we modified earlier.\r\n meshes.range?.low.addInPlace(transformOrigin);\r\n meshes.range?.high.addInPlace(transformOrigin);\r\n }\r\n }\r\n\r\n return meshes;\r\n }\r\n}\r\n"]}
|