@vertexvis/viewer 1.0.2-canary.2 → 1.0.2-canary.4
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/dist/cjs/config-20ozv4y8.js.map +1 -1
- package/dist/cjs/controller-BhcNbaX_.js.map +1 -1
- package/dist/cjs/controller-CSwG6gbQ.js.map +1 -1
- package/dist/cjs/cursors-BZmDRtaZ.js.map +1 -1
- package/dist/cjs/dom-BBil4aN3.js.map +1 -1
- package/dist/cjs/dom-CvGkFQon.js.map +1 -1
- package/dist/cjs/entities-D6kgGria.js.map +1 -1
- package/dist/cjs/geometry_pb-BTko2Wi0.js.map +1 -1
- package/dist/cjs/grpc-BsWFEUrc.js.map +1 -1
- package/dist/cjs/index.cjs.js.map +1 -1
- package/dist/cjs/model-C9WvOKYT.js.map +1 -1
- package/dist/cjs/model-D17EQTIh.js.map +1 -1
- package/dist/cjs/model-DAB4oD5n.js.map +1 -1
- package/dist/cjs/model-DkXCzhs_.js.map +1 -1
- package/dist/cjs/multiElementInteractionHandler-BHvRKVIp.js.map +1 -1
- package/dist/cjs/overlays-B-06bUbI.js.map +1 -1
- package/dist/cjs/queries-Da9I-xMf.js.map +1 -1
- package/dist/cjs/regl-component-HhKCyGQ3.js.map +1 -1
- package/dist/cjs/representation_pb-CrCGjlyP.js.map +1 -1
- package/dist/cjs/results-1wRRZiYG.js.map +1 -1
- package/dist/cjs/row-Cet6xXup.js.map +1 -1
- package/dist/cjs/stencil-Hsr_8Chs.js.map +1 -1
- package/dist/cjs/streamAttributes-D_J-W8-2.js.map +1 -1
- package/dist/cjs/templates-DvjgjnlO.js.map +1 -1
- package/dist/cjs/util-DIJSIQXH.js.map +1 -1
- package/dist/cjs/utils-CibrnHQ4.js.map +1 -1
- package/dist/cjs/utils-D8MbXbwO.js.map +1 -1
- package/dist/cjs/utils-qErVs2Vt.js.map +1 -1
- package/dist/cjs/vertex-scene-tree-notification-banner_4.cjs.entry.js +6 -8
- package/dist/cjs/vertex-scene-tree-notification-banner_4.cjs.entry.js.map +1 -1
- package/dist/cjs/vertex-scene-tree-table-cell.cjs.entry.js +1 -1
- package/dist/cjs/vertex-scene-tree-table-cell.cjs.entry.js.map +1 -1
- package/dist/cjs/vertex-scene-tree.cjs.entry.js +2 -2
- package/dist/cjs/vertex-scene-tree.cjs.entry.js.map +1 -1
- package/dist/cjs/vertex-viewer-box-query-tool.cjs.entry.js +2 -2
- package/dist/cjs/vertex-viewer-box-query-tool.cjs.entry.js.map +1 -1
- package/dist/cjs/vertex-viewer-dom-element_2.cjs.entry.js +1 -1
- package/dist/cjs/vertex-viewer-dom-element_2.cjs.entry.js.map +1 -1
- package/dist/cjs/vertex-viewer-dom-group.cjs.entry.js +1 -1
- package/dist/cjs/vertex-viewer-dom-group.cjs.entry.js.map +1 -1
- package/dist/cjs/vertex-viewer-hit-result-indicator.cjs.entry.js +1 -1
- package/dist/cjs/vertex-viewer-hit-result-indicator.cjs.entry.js.map +1 -1
- package/dist/cjs/vertex-viewer-icon.cjs.entry.js.map +1 -1
- package/dist/cjs/vertex-viewer-markup-arrow_3.cjs.entry.js.map +1 -1
- package/dist/cjs/vertex-viewer-markup-tool.cjs.entry.js.map +1 -1
- package/dist/cjs/vertex-viewer-markup.cjs.entry.js +1 -1
- package/dist/cjs/vertex-viewer-markup.cjs.entry.js.map +1 -1
- package/dist/cjs/vertex-viewer-measurement-details.cjs.entry.js.map +1 -1
- package/dist/cjs/vertex-viewer-measurement-distance.cjs.entry.js.map +1 -1
- package/dist/cjs/vertex-viewer-measurement-line_2.cjs.entry.js +2 -2
- package/dist/cjs/vertex-viewer-measurement-line_2.cjs.entry.js.map +1 -1
- package/dist/cjs/vertex-viewer-measurement-precise.cjs.entry.js.map +1 -1
- package/dist/cjs/vertex-viewer-pin-group.cjs.entry.js +2 -2
- package/dist/cjs/vertex-viewer-pin-group.cjs.entry.js.map +1 -1
- package/dist/cjs/vertex-viewer-pin-label_2.cjs.entry.js.map +1 -1
- package/dist/cjs/vertex-viewer-pin-tool.cjs.entry.js +1 -1
- package/dist/cjs/vertex-viewer-pin-tool.cjs.entry.js.map +1 -1
- package/dist/cjs/vertex-viewer-teleport-tool.cjs.entry.js.map +1 -1
- package/dist/cjs/vertex-viewer-transform-widget.cjs.entry.js +4 -5
- package/dist/cjs/vertex-viewer-transform-widget.cjs.entry.js.map +1 -1
- package/dist/cjs/vertex-viewer-view-cube.cjs.entry.js +1 -1
- package/dist/cjs/vertex-viewer-view-cube.cjs.entry.js.map +1 -1
- package/dist/cjs/vertex-viewer-walk-mode-tool.cjs.entry.js.map +1 -1
- package/dist/cjs/vertex-viewer.cjs.entry.js +9 -5
- package/dist/cjs/vertex-viewer.cjs.entry.js.map +1 -1
- package/dist/cjs/viewport-CG1VYkIU.js.map +1 -1
- package/dist/collection/components/scene-tree/errors.js.map +1 -1
- package/dist/collection/components/scene-tree/lib/controller.js.map +1 -1
- package/dist/collection/components/scene-tree/lib/dom.js.map +1 -1
- package/dist/collection/components/scene-tree/lib/errors.js.map +1 -1
- package/dist/collection/components/scene-tree/lib/grpc.js.map +1 -1
- package/dist/collection/components/scene-tree/lib/handlers.js.map +1 -1
- package/dist/collection/components/scene-tree/lib/row.js.map +1 -1
- package/dist/collection/components/scene-tree/lib/viewer-ops.js.map +1 -1
- package/dist/collection/components/scene-tree/scene-tree.js +2 -2
- package/dist/collection/components/scene-tree/scene-tree.js.map +1 -1
- package/dist/collection/components/scene-tree-search/scene-tree-search.js.map +1 -1
- package/dist/collection/components/scene-tree-table-cell/scene-tree-table-cell.js +1 -1
- package/dist/collection/components/scene-tree-table-cell/scene-tree-table-cell.js.map +1 -1
- package/dist/collection/components/scene-tree-table-cell/utils.js.map +1 -1
- package/dist/collection/components/scene-tree-table-layout/lib/dom.js.map +1 -1
- package/dist/collection/components/scene-tree-table-layout/lib/window.js.map +1 -1
- package/dist/collection/components/scene-tree-table-layout/scene-tree-table-layout.js +5 -5
- package/dist/collection/components/scene-tree-table-layout/scene-tree-table-layout.js.map +1 -1
- package/dist/collection/components/viewer/utils.js.map +1 -1
- package/dist/collection/components/viewer/viewer.js +9 -5
- package/dist/collection/components/viewer/viewer.js.map +1 -1
- package/dist/collection/components/viewer-box-query-tool/viewer-box-query-tool.js +2 -2
- package/dist/collection/components/viewer-box-query-tool/viewer-box-query-tool.js.map +1 -1
- package/dist/collection/components/viewer-dom-element/utils.js.map +1 -1
- package/dist/collection/components/viewer-dom-element/viewer-dom-element.js +1 -1
- package/dist/collection/components/viewer-dom-element/viewer-dom-element.js.map +1 -1
- package/dist/collection/components/viewer-dom-group/utils.js.map +1 -1
- package/dist/collection/components/viewer-dom-group/viewer-dom-group.js +1 -1
- package/dist/collection/components/viewer-dom-group/viewer-dom-group.js.map +1 -1
- package/dist/collection/components/viewer-dom-renderer/renderer2d.js.map +1 -1
- package/dist/collection/components/viewer-dom-renderer/renderer3d.js.map +1 -1
- package/dist/collection/components/viewer-dom-renderer/viewer-dom-renderer.js.map +1 -1
- package/dist/collection/components/viewer-hit-result-indicator/lib/dom.js.map +1 -1
- package/dist/collection/components/viewer-hit-result-indicator/lib/indicator.js.map +1 -1
- package/dist/collection/components/viewer-hit-result-indicator/lib/plane.js.map +1 -1
- package/dist/collection/components/viewer-hit-result-indicator/lib/point.js.map +1 -1
- package/dist/collection/components/viewer-hit-result-indicator/viewer-hit-result-indicator.js +1 -1
- package/dist/collection/components/viewer-hit-result-indicator/viewer-hit-result-indicator.js.map +1 -1
- package/dist/collection/components/viewer-icon/viewer-icon.js.map +1 -1
- package/dist/collection/components/viewer-markup/markup-utils.js.map +1 -1
- package/dist/collection/components/viewer-markup/viewer-markup-components.js.map +1 -1
- package/dist/collection/components/viewer-markup/viewer-markup.js +1 -1
- package/dist/collection/components/viewer-markup/viewer-markup.js.map +1 -1
- package/dist/collection/components/viewer-markup-arrow/interactions.js.map +1 -1
- package/dist/collection/components/viewer-markup-arrow/utils.js.map +1 -1
- package/dist/collection/components/viewer-markup-arrow/viewer-markup-arrow-components.js.map +1 -1
- package/dist/collection/components/viewer-markup-arrow/viewer-markup-arrow.js.map +1 -1
- package/dist/collection/components/viewer-markup-circle/interactions.js.map +1 -1
- package/dist/collection/components/viewer-markup-circle/utils.js.map +1 -1
- package/dist/collection/components/viewer-markup-circle/viewer-markup-circle.js.map +1 -1
- package/dist/collection/components/viewer-markup-freeform/interactions.js.map +1 -1
- package/dist/collection/components/viewer-markup-freeform/utils.js.map +1 -1
- package/dist/collection/components/viewer-markup-freeform/viewer-markup-freeform.js.map +1 -1
- package/dist/collection/components/viewer-markup-tool/viewer-markup-tool.js.map +1 -1
- package/dist/collection/components/viewer-measurement-details/viewer-measurement-details.js.map +1 -1
- package/dist/collection/components/viewer-measurement-distance/hitTest.js.map +1 -1
- package/dist/collection/components/viewer-measurement-distance/interactions.js.map +1 -1
- package/dist/collection/components/viewer-measurement-distance/utils.js.map +1 -1
- package/dist/collection/components/viewer-measurement-distance/viewer-measurement-distance.js.map +1 -1
- package/dist/collection/components/viewer-measurement-line/viewer-measurement-line.js +1 -1
- package/dist/collection/components/viewer-measurement-line/viewer-measurement-line.js.map +1 -1
- package/dist/collection/components/viewer-measurement-overlays/viewer-measurement-overlays.js +1 -1
- package/dist/collection/components/viewer-measurement-overlays/viewer-measurement-overlays.js.map +1 -1
- package/dist/collection/components/viewer-measurement-precise/viewer-measurement-precise.js.map +1 -1
- package/dist/collection/components/viewer-pin-group/utils.js.map +1 -1
- package/dist/collection/components/viewer-pin-group/viewer-pin-group.js +2 -2
- package/dist/collection/components/viewer-pin-group/viewer-pin-group.js.map +1 -1
- package/dist/collection/components/viewer-pin-label/viewer-pin-label.js.map +1 -1
- package/dist/collection/components/viewer-pin-tool/utils.js.map +1 -1
- package/dist/collection/components/viewer-pin-tool/viewer-pin-tool.js +1 -1
- package/dist/collection/components/viewer-pin-tool/viewer-pin-tool.js.map +1 -1
- package/dist/collection/components/viewer-teleport-tool/viewer-teleport-tool.js.map +1 -1
- package/dist/collection/components/viewer-transform-widget/util.js +1 -2
- package/dist/collection/components/viewer-transform-widget/util.js.map +1 -1
- package/dist/collection/components/viewer-transform-widget/viewer-transform-widget-components.js.map +1 -1
- package/dist/collection/components/viewer-transform-widget/viewer-transform-widget.js +3 -3
- package/dist/collection/components/viewer-transform-widget/viewer-transform-widget.js.map +1 -1
- package/dist/collection/components/viewer-transform-widget/widget.js.map +1 -1
- package/dist/collection/components/viewer-view-cube/viewer-view-cube.js +1 -1
- package/dist/collection/components/viewer-view-cube/viewer-view-cube.js.map +1 -1
- package/dist/collection/components/viewer-walk-mode-tool/viewer-walk-mode-tool.js.map +1 -1
- package/dist/collection/lib/annotations/controller.js.map +1 -1
- package/dist/collection/lib/canvases/controller.js.map +1 -1
- package/dist/collection/lib/canvases/mapper.js.map +1 -1
- package/dist/collection/lib/config.js.map +1 -1
- package/dist/collection/lib/cursors.js.map +1 -1
- package/dist/collection/lib/dom.js.map +1 -1
- package/dist/collection/lib/grpc.js.map +1 -1
- package/dist/collection/lib/interactions/baseInteractionHandler.js.map +1 -1
- package/dist/collection/lib/interactions/flyToPartKeyInteraction.js.map +1 -1
- package/dist/collection/lib/interactions/flyToPositionKeyInteraction.js.map +1 -1
- package/dist/collection/lib/interactions/interactionApi.js.map +1 -1
- package/dist/collection/lib/interactions/interactionApiOrthographic.js.map +1 -1
- package/dist/collection/lib/interactions/interactionApiPerspective.js.map +1 -1
- package/dist/collection/lib/interactions/mouseInteractionHandler.js.map +1 -1
- package/dist/collection/lib/interactions/mouseInteractions.js.map +1 -1
- package/dist/collection/lib/interactions/multiElementInteractionHandler.js.map +1 -1
- package/dist/collection/lib/interactions/multiPointerInteractionHandler.js.map +1 -1
- package/dist/collection/lib/interactions/multiTouchInteractionHandler.js.map +1 -1
- package/dist/collection/lib/interactions/pointerInteractionHandler.js.map +1 -1
- package/dist/collection/lib/interactions/tapInteractionHandler.js.map +1 -1
- package/dist/collection/lib/interactions/touchInteractionHandler.js.map +1 -1
- package/dist/collection/lib/keyBinding.js.map +1 -1
- package/dist/collection/lib/mappers/annotation.js.map +1 -1
- package/dist/collection/lib/mappers/camera.js.map +1 -1
- package/dist/collection/lib/mappers/color.js.map +1 -1
- package/dist/collection/lib/mappers/colorMaterial.js.map +1 -1
- package/dist/collection/lib/mappers/corePb.js.map +1 -1
- package/dist/collection/lib/mappers/corePbJs.js.map +1 -1
- package/dist/collection/lib/mappers/frameStreaming.js.map +1 -1
- package/dist/collection/lib/mappers/geometry.js.map +1 -1
- package/dist/collection/lib/mappers/material.js.map +1 -1
- package/dist/collection/lib/mappers/pagination.js.map +1 -1
- package/dist/collection/lib/mappers/scalar.js.map +1 -1
- package/dist/collection/lib/mappers/streamAttributes.js.map +1 -1
- package/dist/collection/lib/markup/interactions.js.map +1 -1
- package/dist/collection/lib/measurement/controller.js.map +1 -1
- package/dist/collection/lib/measurement/entities.js.map +1 -1
- package/dist/collection/lib/measurement/interactions.js.map +1 -1
- package/dist/collection/lib/measurement/mapper.js.map +1 -1
- package/dist/collection/lib/measurement/model.js.map +1 -1
- package/dist/collection/lib/measurement/overlays.js.map +1 -1
- package/dist/collection/lib/measurement/results.js.map +1 -1
- package/dist/collection/lib/meters.js.map +1 -1
- package/dist/collection/lib/model-views/controller.js.map +1 -1
- package/dist/collection/lib/model-views/mapper.js.map +1 -1
- package/dist/collection/lib/pins/controller.js.map +1 -1
- package/dist/collection/lib/pins/interactions.js.map +1 -1
- package/dist/collection/lib/pmi/controller.js.map +1 -1
- package/dist/collection/lib/pmi/mapper.js.map +1 -1
- package/dist/collection/lib/rendering/canvas.js.map +1 -1
- package/dist/collection/lib/rendering/imageLoaders.js.map +1 -1
- package/dist/collection/lib/rendering/matrices.js.map +1 -1
- package/dist/collection/lib/rendering/timing.js.map +1 -1
- package/dist/collection/lib/rendering/utils.js.map +1 -1
- package/dist/collection/lib/rendering/vectors.js.map +1 -1
- package/dist/collection/lib/scene-items/controller.js.map +1 -1
- package/dist/collection/lib/scene-items/mapper.js.map +1 -1
- package/dist/collection/lib/scenes/camera.js.map +1 -1
- package/dist/collection/lib/scenes/cameraRenderResult.js.map +1 -1
- package/dist/collection/lib/scenes/colorMaterial.js.map +1 -1
- package/dist/collection/lib/scenes/crossSectioner.js.map +1 -1
- package/dist/collection/lib/scenes/mapper.js.map +1 -1
- package/dist/collection/lib/scenes/operations.js.map +1 -1
- package/dist/collection/lib/scenes/queries.js.map +1 -1
- package/dist/collection/lib/scenes/raycaster.js.map +1 -1
- package/dist/collection/lib/scenes/scene.js.map +1 -1
- package/dist/collection/lib/scenes/sceneOperationExecuteResult.js.map +1 -1
- package/dist/collection/lib/scenes/sceneViewStateLoader.js.map +1 -1
- package/dist/collection/lib/stencil.js.map +1 -1
- package/dist/collection/lib/storage.js.map +1 -1
- package/dist/collection/lib/stream/dispatcher.js.map +1 -1
- package/dist/collection/lib/stream/stream.js.map +1 -1
- package/dist/collection/lib/stream/utils.js.map +1 -1
- package/dist/collection/lib/teleportation/interactions.js.map +1 -1
- package/dist/collection/lib/templates.js.map +1 -1
- package/dist/collection/lib/token.js.map +1 -1
- package/dist/collection/lib/transforms/axis-lines.js.map +1 -1
- package/dist/collection/lib/transforms/axis-rotation.js.map +1 -1
- package/dist/collection/lib/transforms/axis-translation.js.map +1 -1
- package/dist/collection/lib/transforms/controller.js.map +1 -1
- package/dist/collection/lib/transforms/drawable.js.map +1 -1
- package/dist/collection/lib/transforms/hits.js.map +1 -1
- package/dist/collection/lib/transforms/line.js.map +1 -1
- package/dist/collection/lib/transforms/mesh.js.map +1 -1
- package/dist/collection/lib/transforms/shape.js.map +1 -1
- package/dist/collection/lib/transforms/transformation-delta.js.map +1 -1
- package/dist/collection/lib/transforms/util.js.map +1 -1
- package/dist/collection/lib/types/clippingPlanes.js.map +1 -1
- package/dist/collection/lib/types/depthBuffer.js.map +1 -1
- package/dist/collection/lib/types/featureMap.js.map +1 -1
- package/dist/collection/lib/types/flags.js.map +1 -1
- package/dist/collection/lib/types/frame.js.map +1 -1
- package/dist/collection/lib/types/frameCamera.js.map +1 -1
- package/dist/collection/lib/types/loadableResource.js.map +1 -1
- package/dist/collection/lib/types/orientation.js.map +1 -1
- package/dist/collection/lib/types/sceneViewStateIdentifier.js.map +1 -1
- package/dist/collection/lib/types/standardView.js.map +1 -1
- package/dist/collection/lib/types/stencilBuffer.js.map +1 -1
- package/dist/collection/lib/types/synchronizedClock.js.map +1 -1
- package/dist/collection/lib/types/viewport.js.map +1 -1
- package/dist/collection/lib/visibilityObserver.js.map +1 -1
- package/dist/collection/lib/volume-intersection/controller.js.map +1 -1
- package/dist/collection/lib/volume-intersection/interactions.js.map +1 -1
- package/dist/collection/lib/volume-intersection/model.js.map +1 -1
- package/dist/collection/lib/walk-mode/controller.js.map +1 -1
- package/dist/collection/lib/walk-mode/interactions.js.map +1 -1
- package/dist/collection/lib/walk-mode/model.js.map +1 -1
- package/dist/collection/lib/webgl/regl-component.js.map +1 -1
- package/dist/collection/testing/annotations.js.map +1 -1
- package/dist/collection/testing/canvases.js.map +1 -1
- package/dist/collection/testing/colors.js.map +1 -1
- package/dist/collection/testing/eventually.js.map +1 -1
- package/dist/collection/testing/fixtures.js.map +1 -1
- package/dist/collection/testing/grpc.js +3 -9
- package/dist/collection/testing/grpc.js.map +1 -1
- package/dist/collection/testing/modelViews.js.map +1 -1
- package/dist/collection/testing/pmi.js.map +1 -1
- package/dist/collection/testing/random.js.map +1 -1
- package/dist/collection/testing/resizeObserver.js.map +1 -1
- package/dist/collection/testing/scene-items-helper.js.map +1 -1
- package/dist/collection/testing/sceneTree.js.map +1 -1
- package/dist/collection/testing/viewer.js.map +1 -1
- package/dist/collection/testing/webgl.js.map +1 -1
- package/dist/components/index.js.map +1 -1
- package/dist/components/{p-St4ctu2K.js → p-3-bKfpqr.js} +2 -2
- package/dist/components/{p-St4ctu2K.js.map → p-3-bKfpqr.js.map} +1 -1
- package/dist/components/p-3DqRAYgO.js.map +1 -1
- package/dist/components/p-B-ToCp8-.js.map +1 -1
- package/dist/components/p-B156bTbY.js +5 -0
- package/dist/components/p-B156bTbY.js.map +1 -0
- package/dist/components/p-B9R0QWr4.js.map +1 -1
- package/dist/components/p-BCOD9yfw.js.map +1 -1
- package/dist/components/p-BHAaIoH5.js.map +1 -1
- package/dist/components/{p-Doltf1wO.js → p-BOJJZ1cN.js} +2 -2
- package/dist/components/p-BOJJZ1cN.js.map +1 -0
- package/dist/components/p-BkHp-aAR.js.map +1 -1
- package/dist/components/p-Bkm6H5uq.js.map +1 -1
- package/dist/components/p-C-VWDW9n.js.map +1 -1
- package/dist/components/p-C79PxobX.js.map +1 -1
- package/dist/components/p-CAugdB_8.js.map +1 -1
- package/dist/components/p-CEzVEgdQ.js.map +1 -1
- package/dist/components/p-CGCJ5hbJ.js.map +1 -1
- package/dist/components/p-COlcifvm.js.map +1 -1
- package/dist/components/p-CXTH3zrN.js.map +1 -1
- package/dist/components/p-CZCXdo3t.js.map +1 -1
- package/dist/components/p-Cd7kap5W.js.map +1 -1
- package/dist/components/p-CiSHWNC4.js.map +1 -1
- package/dist/components/p-CjG1fMh1.js.map +1 -1
- package/dist/components/p-CkjXRDNL.js.map +1 -1
- package/dist/components/p-D0KZu516.js.map +1 -1
- package/dist/components/p-D12q-fpW.js.map +1 -1
- package/dist/components/p-D33gVA2W.js.map +1 -1
- package/dist/components/p-DC86ZXai.js.map +1 -1
- package/dist/components/{p-B80hfIq6.js → p-DF4kEsJU.js} +2 -2
- package/dist/components/p-DF4kEsJU.js.map +1 -0
- package/dist/components/p-DRh4_Z-g.js.map +1 -1
- package/dist/components/p-DRnMrHWY.js.map +1 -1
- package/dist/components/{p-b0ZzPHz8.js → p-DUC59SSO.js} +2 -2
- package/dist/components/p-DUC59SSO.js.map +1 -0
- package/dist/components/p-DVW2WZTq.js.map +1 -1
- package/dist/components/p-DZI8pnGz.js.map +1 -1
- package/dist/components/p-Dbz9yUqC.js.map +1 -1
- package/dist/components/p-Yfi0i5Kj.js.map +1 -1
- package/dist/components/p-abSJ29r7.js.map +1 -1
- package/dist/components/p-ahjMltGJ.js.map +1 -1
- package/dist/components/p-bal2RLiw.js.map +1 -1
- package/dist/components/{p-BopQW1sA.js → p-oK38ynrd.js} +2 -2
- package/dist/components/p-oK38ynrd.js.map +1 -0
- package/dist/components/vertex-scene-tree-table-cell.js +1 -1
- package/dist/components/vertex-scene-tree-table-cell.js.map +1 -1
- package/dist/components/vertex-scene-tree-table-layout.js +1 -1
- package/dist/components/vertex-scene-tree.js +1 -1
- package/dist/components/vertex-scene-tree.js.map +1 -1
- package/dist/components/vertex-viewer-box-query-tool.js +1 -1
- package/dist/components/vertex-viewer-box-query-tool.js.map +1 -1
- package/dist/components/vertex-viewer-dom-element.js +1 -1
- package/dist/components/vertex-viewer-dom-group.js +1 -1
- package/dist/components/vertex-viewer-hit-result-indicator.js +1 -1
- package/dist/components/vertex-viewer-hit-result-indicator.js.map +1 -1
- package/dist/components/vertex-viewer-markup-tool.js.map +1 -1
- package/dist/components/vertex-viewer-markup.js +1 -1
- package/dist/components/vertex-viewer-markup.js.map +1 -1
- package/dist/components/vertex-viewer-measurement-details.js.map +1 -1
- package/dist/components/vertex-viewer-measurement-distance.js +1 -1
- package/dist/components/vertex-viewer-measurement-distance.js.map +1 -1
- package/dist/components/vertex-viewer-measurement-line.js +1 -1
- package/dist/components/vertex-viewer-measurement-overlays.js +1 -1
- package/dist/components/vertex-viewer-measurement-precise.js +1 -1
- package/dist/components/vertex-viewer-measurement-precise.js.map +1 -1
- package/dist/components/vertex-viewer-pin-group.js +1 -1
- package/dist/components/vertex-viewer-pin-tool.js +1 -1
- package/dist/components/vertex-viewer-pin-tool.js.map +1 -1
- package/dist/components/vertex-viewer-transform-widget.js +1 -1
- package/dist/components/vertex-viewer-transform-widget.js.map +1 -1
- package/dist/components/vertex-viewer-view-cube.js +1 -1
- package/dist/components/vertex-viewer-view-cube.js.map +1 -1
- package/dist/components/vertex-viewer-walk-mode-tool.js.map +1 -1
- package/dist/components/vertex-viewer.js +1 -1
- package/dist/components/vertex-viewer.js.map +1 -1
- package/dist/esm/config-lglER3mU.js.map +1 -1
- package/dist/esm/controller-BMWGs-I6.js.map +1 -1
- package/dist/esm/controller-Iymb_J2R.js.map +1 -1
- package/dist/esm/cursors-BbBDEutb.js.map +1 -1
- package/dist/esm/dom-B3m2VjbN.js.map +1 -1
- package/dist/esm/dom-DX6pEG54.js.map +1 -1
- package/dist/esm/entities-zRken6VS.js.map +1 -1
- package/dist/esm/geometry_pb-BiZRfctN.js.map +1 -1
- package/dist/esm/grpc-CZAYqbTu.js.map +1 -1
- package/dist/esm/index.js.map +1 -1
- package/dist/esm/model-BYW5YIye.js.map +1 -1
- package/dist/esm/model-CLtwOS0o.js.map +1 -1
- package/dist/esm/model-D0EJdHmW.js.map +1 -1
- package/dist/esm/model-DHJ5aE4y.js.map +1 -1
- package/dist/esm/multiElementInteractionHandler-DwjL-r55.js.map +1 -1
- package/dist/esm/overlays-BE1oqniA.js.map +1 -1
- package/dist/esm/queries-DEzCmbTD.js.map +1 -1
- package/dist/esm/regl-component-DmkowWhg.js.map +1 -1
- package/dist/esm/representation_pb-g4f0WC4k.js.map +1 -1
- package/dist/esm/results-CFB6nKu8.js.map +1 -1
- package/dist/esm/row-CiSHWNC4.js.map +1 -1
- package/dist/esm/stencil-BV-7pO4q.js.map +1 -1
- package/dist/esm/streamAttributes-Cp8PEH9A.js.map +1 -1
- package/dist/esm/templates-DRh4_Z-g.js.map +1 -1
- package/dist/esm/util-BCZZYmp4.js.map +1 -1
- package/dist/esm/utils-BvZ9-fs0.js.map +1 -1
- package/dist/esm/utils-DC86ZXai.js.map +1 -1
- package/dist/esm/utils-D_pIldrS.js.map +1 -1
- package/dist/esm/vertex-scene-tree-notification-banner_4.entry.js +6 -8
- package/dist/esm/vertex-scene-tree-notification-banner_4.entry.js.map +1 -1
- package/dist/esm/vertex-scene-tree-table-cell.entry.js +1 -1
- package/dist/esm/vertex-scene-tree-table-cell.entry.js.map +1 -1
- package/dist/esm/vertex-scene-tree.entry.js +2 -2
- package/dist/esm/vertex-scene-tree.entry.js.map +1 -1
- package/dist/esm/vertex-viewer-box-query-tool.entry.js +2 -2
- package/dist/esm/vertex-viewer-box-query-tool.entry.js.map +1 -1
- package/dist/esm/vertex-viewer-dom-element_2.entry.js +1 -1
- package/dist/esm/vertex-viewer-dom-element_2.entry.js.map +1 -1
- package/dist/esm/vertex-viewer-dom-group.entry.js +1 -1
- package/dist/esm/vertex-viewer-dom-group.entry.js.map +1 -1
- package/dist/esm/vertex-viewer-hit-result-indicator.entry.js +1 -1
- package/dist/esm/vertex-viewer-hit-result-indicator.entry.js.map +1 -1
- package/dist/esm/vertex-viewer-icon.entry.js.map +1 -1
- package/dist/esm/vertex-viewer-markup-arrow_3.entry.js.map +1 -1
- package/dist/esm/vertex-viewer-markup-tool.entry.js.map +1 -1
- package/dist/esm/vertex-viewer-markup.entry.js +1 -1
- package/dist/esm/vertex-viewer-markup.entry.js.map +1 -1
- package/dist/esm/vertex-viewer-measurement-details.entry.js.map +1 -1
- package/dist/esm/vertex-viewer-measurement-distance.entry.js.map +1 -1
- package/dist/esm/vertex-viewer-measurement-line_2.entry.js +2 -2
- package/dist/esm/vertex-viewer-measurement-line_2.entry.js.map +1 -1
- package/dist/esm/vertex-viewer-measurement-precise.entry.js.map +1 -1
- package/dist/esm/vertex-viewer-pin-group.entry.js +2 -2
- package/dist/esm/vertex-viewer-pin-group.entry.js.map +1 -1
- package/dist/esm/vertex-viewer-pin-label_2.entry.js.map +1 -1
- package/dist/esm/vertex-viewer-pin-tool.entry.js +1 -1
- package/dist/esm/vertex-viewer-pin-tool.entry.js.map +1 -1
- package/dist/esm/vertex-viewer-teleport-tool.entry.js.map +1 -1
- package/dist/esm/vertex-viewer-transform-widget.entry.js +4 -5
- package/dist/esm/vertex-viewer-transform-widget.entry.js.map +1 -1
- package/dist/esm/vertex-viewer-view-cube.entry.js +1 -1
- package/dist/esm/vertex-viewer-view-cube.entry.js.map +1 -1
- package/dist/esm/vertex-viewer-walk-mode-tool.entry.js.map +1 -1
- package/dist/esm/vertex-viewer.entry.js +9 -5
- package/dist/esm/vertex-viewer.entry.js.map +1 -1
- package/dist/esm/viewport-C8WQZxvx.js.map +1 -1
- package/dist/types/regl-shape.d.ts +1 -1
- package/dist/viewer/index.esm.js.map +1 -1
- package/dist/viewer/{p-eac63070.entry.js → p-051b5154.entry.js} +2 -2
- package/dist/viewer/p-051b5154.entry.js.map +1 -0
- package/dist/viewer/{p-3d3a7eeb.entry.js → p-0984c51f.entry.js} +2 -2
- package/dist/viewer/{p-3d3a7eeb.entry.js.map → p-0984c51f.entry.js.map} +1 -1
- package/dist/viewer/{p-864f40c7.entry.js → p-11cf755a.entry.js} +2 -2
- package/dist/viewer/p-11cf755a.entry.js.map +1 -0
- package/dist/viewer/{p-29d14611.entry.js → p-16775f7d.entry.js} +2 -2
- package/dist/viewer/p-16775f7d.entry.js.map +1 -0
- package/dist/viewer/{p-5a85cae5.entry.js → p-1eb636f8.entry.js} +2 -2
- package/dist/viewer/p-1eb636f8.entry.js.map +1 -0
- package/dist/viewer/{p-e993f300.entry.js → p-228d1d43.entry.js} +2 -2
- package/dist/viewer/p-228d1d43.entry.js.map +1 -0
- package/dist/viewer/p-33f44cc1.entry.js.map +1 -1
- package/dist/viewer/{p-3300d3dc.entry.js → p-35601c85.entry.js} +2 -2
- package/dist/viewer/p-35601c85.entry.js.map +1 -0
- package/dist/viewer/p-47766566.entry.js.map +1 -1
- package/dist/viewer/p-6e3a6bbd.entry.js.map +1 -1
- package/dist/viewer/p-7f388b45.entry.js.map +1 -1
- package/dist/viewer/p-89544066.entry.js.map +1 -1
- package/dist/viewer/{p-07b99ac9.entry.js → p-8c369777.entry.js} +2 -2
- package/dist/viewer/p-8c369777.entry.js.map +1 -0
- package/dist/viewer/{p-e59983dc.entry.js → p-9835c5e2.entry.js} +2 -2
- package/dist/viewer/p-9835c5e2.entry.js.map +1 -0
- package/dist/viewer/{p-aa95e21a.entry.js → p-9d8ff406.entry.js} +2 -2
- package/dist/viewer/p-9d8ff406.entry.js.map +1 -0
- package/dist/viewer/p-BDvACHun.js.map +1 -1
- package/dist/viewer/p-BIkuvTVH.js.map +1 -1
- package/dist/viewer/p-BRPkbTVP.js.map +1 -1
- package/dist/viewer/p-BsBIynwj.js.map +1 -1
- package/dist/viewer/p-BxtKMwBH.js.map +1 -1
- package/dist/viewer/p-C4y4Noe-.js.map +1 -1
- package/dist/viewer/p-C6KrfydC.js.map +1 -1
- package/dist/viewer/p-C7dYsPFU.js.map +1 -1
- package/dist/viewer/p-C9Cqbq6H.js.map +1 -1
- package/dist/viewer/p-CVWO4w6b.js.map +1 -1
- package/dist/viewer/p-ChqXy0cG.js.map +1 -1
- package/dist/viewer/p-CiSHWNC4.js.map +1 -1
- package/dist/viewer/p-CjG1fMh1.js.map +1 -1
- package/dist/viewer/p-Cs5KOvOQ.js.map +1 -1
- package/dist/viewer/p-CyGlYje2.js.map +1 -1
- package/dist/viewer/p-D6eJC1q4.js.map +1 -1
- package/dist/viewer/p-DC86ZXai.js.map +1 -1
- package/dist/viewer/p-DRh4_Z-g.js.map +1 -1
- package/dist/viewer/p-DUX5FvBC.js.map +1 -1
- package/dist/viewer/p-DX6pEG54.js.map +1 -1
- package/dist/viewer/p-D_ixWHO7.js.map +1 -1
- package/dist/viewer/p-DacE-wPp.js.map +1 -1
- package/dist/viewer/p-Dp56p_jX.js.map +1 -1
- package/dist/viewer/p-EsKoKfmx.js.map +1 -1
- package/dist/viewer/p-F8e15or2.js.map +1 -1
- package/dist/viewer/p-Jfxh0jq9.js.map +1 -1
- package/dist/viewer/p-WPRMWirY.js.map +1 -1
- package/dist/viewer/p-_93RRNxT.js.map +1 -1
- package/dist/viewer/p-a8a81cba.entry.js +5 -0
- package/dist/viewer/p-a8a81cba.entry.js.map +1 -0
- package/dist/viewer/p-a9282481.entry.js.map +1 -1
- package/dist/viewer/{p-63f4f702.entry.js → p-c7e62d66.entry.js} +2 -2
- package/dist/viewer/p-c7e62d66.entry.js.map +1 -0
- package/dist/viewer/p-d37e647b.entry.js.map +1 -1
- package/dist/viewer/{p-302f2078.entry.js → p-d9fe788f.entry.js} +2 -2
- package/dist/viewer/p-d9fe788f.entry.js.map +1 -0
- package/dist/viewer/p-e9b83dae.entry.js.map +1 -1
- package/dist/viewer/{p-70f3629d.entry.js → p-f271dc4a.entry.js} +2 -2
- package/dist/viewer/p-f271dc4a.entry.js.map +1 -0
- package/dist/viewer/p-f65c0769.entry.js.map +1 -1
- package/dist/viewer/viewer.esm.js +1 -1
- package/package.json +7 -7
- package/dist/components/p-B80hfIq6.js.map +0 -1
- package/dist/components/p-BopQW1sA.js.map +0 -1
- package/dist/components/p-DNtS2F8J.js +0 -5
- package/dist/components/p-DNtS2F8J.js.map +0 -1
- package/dist/components/p-Doltf1wO.js.map +0 -1
- package/dist/components/p-b0ZzPHz8.js.map +0 -1
- package/dist/viewer/p-07b99ac9.entry.js.map +0 -1
- package/dist/viewer/p-29d14611.entry.js.map +0 -1
- package/dist/viewer/p-302f2078.entry.js.map +0 -1
- package/dist/viewer/p-3300d3dc.entry.js.map +0 -1
- package/dist/viewer/p-5a85cae5.entry.js.map +0 -1
- package/dist/viewer/p-60c915e3.entry.js +0 -5
- package/dist/viewer/p-60c915e3.entry.js.map +0 -1
- package/dist/viewer/p-63f4f702.entry.js.map +0 -1
- package/dist/viewer/p-70f3629d.entry.js.map +0 -1
- package/dist/viewer/p-864f40c7.entry.js.map +0 -1
- package/dist/viewer/p-aa95e21a.entry.js.map +0 -1
- package/dist/viewer/p-e59983dc.entry.js.map +0 -1
- package/dist/viewer/p-e993f300.entry.js.map +0 -1
- package/dist/viewer/p-eac63070.entry.js.map +0 -1
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"drawable.js","sourceRoot":"","sources":["../../../../../src/lib/transforms/drawable.ts"],"names":[],"mappings":"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","sourcesContent":["import { Point, Rectangle, Vector3 } from '@vertexvis/geometry';\nimport { Color } from '@vertexvis/utils';\nimport { JoinStyle, ShapeProps } from 'regl-shape';\n\nimport { CreateShape, DrawShape } from '../../lib/transforms/shape';\nimport { Viewport } from '../types';\nimport { flattenPointArray } from './util';\n\nexport interface DrawablePoints {\n valid: boolean;\n\n shortestDistanceFrom(vector: Vector3.Vector3): number;\n\n toWorldArray(): Vector3.Vector3[];\n toArray(): Point.Point[];\n}\n\nexport abstract class Drawable<T extends DrawablePoints = DrawablePoints> {\n protected pointsArray: Float64Array;\n\n public initialFillColor?: string;\n\n public draw: DrawShape;\n\n public constructor(\n protected createShape: CreateShape,\n public identifier: string,\n public points: T,\n public outlineColor: string,\n public fillColor?: string,\n public shapeProps: Partial<ShapeProps> = {},\n public disabled: boolean = false
|
|
1
|
+
{"version":3,"file":"drawable.js","sourceRoot":"","sources":["../../../../../src/lib/transforms/drawable.ts"],"names":[],"mappings":"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","sourcesContent":["import { Point, Rectangle, Vector3 } from '@vertexvis/geometry';\nimport { Color } from '@vertexvis/utils';\nimport { JoinStyle, ShapeProps } from 'regl-shape';\n\nimport { CreateShape, DrawShape } from '../../lib/transforms/shape';\nimport { Viewport } from '../types';\nimport { flattenPointArray } from './util';\n\nexport interface DrawablePoints {\n valid: boolean;\n\n shortestDistanceFrom(vector: Vector3.Vector3): number;\n\n toWorldArray(): Vector3.Vector3[];\n toArray(): Point.Point[];\n}\n\nexport abstract class Drawable<T extends DrawablePoints = DrawablePoints> {\n protected pointsArray: Float64Array;\n\n public initialFillColor?: string;\n\n public draw: DrawShape;\n\n public constructor(\n protected createShape: CreateShape,\n public identifier: string,\n public points: T,\n public outlineColor: string,\n public fillColor?: string,\n public shapeProps: Partial<ShapeProps> = {},\n public disabled: boolean = false,\n ) {\n const pointsAsArray = points.toArray();\n\n this.pointsArray = new Float64Array(pointsAsArray.length * 2 + 4);\n flattenPointArray(pointsAsArray).forEach(\n (v, i) => (this.pointsArray[i] = v),\n );\n\n this.initialFillColor = fillColor;\n\n this.draw = createShape(this.pointsArray, {\n count: pointsAsArray.length,\n thickness: 2,\n join: 'rect' as JoinStyle,\n fill: this.fillColor,\n color: this.outlineColor,\n ...shapeProps,\n });\n }\n\n public updateFillColor(\n color?: Color.Color | string,\n isInitialColor = false,\n ): void {\n if (color != null) {\n this.fillColor =\n typeof color === 'string' ? color : Color.toHexString(color);\n this.initialFillColor = isInitialColor\n ? this.fillColor\n : this.initialFillColor;\n }\n }\n\n public updateOutlineColor(color?: Color.Color | string): void {\n if (color != null) {\n this.outlineColor =\n typeof color === 'string' ? color : Color.toHexString(color);\n }\n }\n\n public updatePoints(points?: T): void {\n if (points != null) {\n this.points = points;\n flattenPointArray(points.toArray()).forEach(\n (v, i) => (this.pointsArray[i] = v),\n );\n }\n }\n}\n\nexport function computeDrawable2dBounds(\n viewport: Viewport,\n ...elements: Drawable[]\n): Rectangle.Rectangle {\n let min = Point.create(Number.MAX_SAFE_INTEGER, Number.MAX_SAFE_INTEGER);\n let max = Point.create();\n\n elements\n .filter((m) => m.points.valid)\n .forEach((m) => {\n m.points\n .toArray()\n .map((pt) => viewport.transformNdcPointToViewport(pt))\n .forEach((pt) => {\n min = Point.create(Math.min(pt.x, min.x), Math.min(pt.y, min.y));\n max = Point.create(Math.max(pt.x, max.x), Math.max(pt.y, max.y));\n });\n });\n\n return Rectangle.fromPoints(min, max);\n}\n"]}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"hits.js","sourceRoot":"","sources":["../../../../../src/lib/transforms/hits.ts"],"names":[],"mappings":"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","sourcesContent":["import { BoundingBox, Point, Vector3 } from '@vertexvis/geometry';\n\nimport { Frame, Viewport } from '../../lib/types';\nimport { Drawable } from './drawable';\nimport { TriangleMesh } from './mesh';\n\nexport function testDrawable(\n drawable: Drawable,\n frame: Frame,\n viewport: Viewport,\n point: Point.Point
|
|
1
|
+
{"version":3,"file":"hits.js","sourceRoot":"","sources":["../../../../../src/lib/transforms/hits.ts"],"names":[],"mappings":"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","sourcesContent":["import { BoundingBox, Point, Vector3 } from '@vertexvis/geometry';\n\nimport { Frame, Viewport } from '../../lib/types';\nimport { Drawable } from './drawable';\nimport { TriangleMesh } from './mesh';\n\nexport function testDrawable(\n drawable: Drawable,\n frame: Frame,\n viewport: Viewport,\n point: Point.Point,\n): boolean {\n if (drawable instanceof TriangleMesh) {\n return testTriangleMesh(drawable, frame, viewport, point);\n }\n return false;\n}\n\nexport function testTriangleMesh(\n mesh: TriangleMesh,\n frame: Frame,\n viewport: Viewport,\n point: Point.Point,\n): boolean {\n return (\n testTriangle(\n [mesh.points.worldLeft, mesh.points.worldRight, mesh.points.worldTip],\n frame,\n viewport,\n point,\n ) ||\n testTriangle(\n [mesh.points.worldLeft, mesh.points.worldRight, mesh.points.worldBase],\n frame,\n viewport,\n point,\n )\n );\n}\n\n/**\n * Adapted from https://en.wikipedia.org/wiki/M%C3%B6ller%E2%80%93Trumbore_intersection_algorithm.\n */\nexport function testTriangle(\n points: Vector3.Vector3[],\n frame: Frame,\n viewport: Viewport,\n point: Point.Point,\n): boolean {\n if (points.length === 3) {\n const ray = viewport.transformPointToRay(\n point,\n frame.image,\n frame.scene.camera,\n );\n\n const edge1 = Vector3.subtract(points[1], points[0]);\n const edge2 = Vector3.subtract(points[2], points[0]);\n\n const epsilon = BoundingBox.epsilon(\n BoundingBox.fromVectors([ray.direction, ray.origin, edge1, edge2]) ??\n BoundingBox.create(edge1, edge2),\n );\n\n const p = Vector3.cross(ray.direction, edge2);\n const det = Vector3.dot(edge1, p);\n\n // This check causes a `det` of NaN or 0 to return false\n // without needing to perform the subsequent calculations.\n if (!(Math.abs(det) >= epsilon)) {\n return false;\n }\n\n const t = Vector3.subtract(ray.origin, points[0]);\n const u = Vector3.dot(t, p) / det;\n\n if (u < 0 || u > 1) {\n return false;\n }\n\n const q = Vector3.cross(t, edge1);\n const v = Vector3.dot(ray.direction, q) / det;\n\n if (v < 0 || u + v > 1) {\n return false;\n }\n\n const r = Vector3.dot(edge2, q) / det;\n\n // Ignore the case where the computed hit position is negative\n // if in orthographic to correctly return hit results when close\n // to the camera.\n // TODO: revisit with https://vertexvis.atlassian.net/browse/PLAT-1549\n return !isNaN(r) && (r > 0 || frame.scene.camera.isOrthographic());\n }\n return false;\n}\n"]}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"line.js","sourceRoot":"","sources":["../../../../../src/lib/transforms/line.ts"],"names":[],"mappings":"AAAA,OAAO,EAAS,OAAO,EAAE,MAAM,qBAAqB,CAAC;AACrD,OAAO,EAAE,KAAK,EAAE,MAAM,kBAAkB,CAAC;AAIzC,OAAO,EAAE,QAAQ,EAAkB,MAAM,YAAY,CAAC;AAEtD,MAAM,OAAO,cAAc;IACzB,YACS,KAAc,EACd,WAA4B,EAC5B,QAAyB,EACzB,MAAmB,EACnB,GAAgB;QAJhB,UAAK,GAAL,KAAK,CAAS;QACd,gBAAW,GAAX,WAAW,CAAiB;QAC5B,aAAQ,GAAR,QAAQ,CAAiB;QACzB,WAAM,GAAN,MAAM,CAAa;QACnB,QAAG,GAAH,GAAG,CAAa;IACtB,CAAC;IAEG,oBAAoB,CAAC,MAAuB;QACjD,OAAO,IAAI,CAAC,YAAY,EAAE;aACvB,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC,EAAE,MAAM,CAAC,CAAC;aACvC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;IAC9B,CAAC;IAEM,YAAY;QACjB,OAAO,CAAC,IAAI,CAAC,WAAW,EAAE,IAAI,CAAC,QAAQ,CAAC,CAAC;IAC3C,CAAC;IAEM,OAAO;QACZ,OAAO,CAAC,IAAI,CAAC,MAAM,EAAE,IAAI,CAAC,GAAG,CAAC,CAAC;IACjC,CAAC;CACF;AAED,MAAM,OAAO,QAAS,SAAQ,QAAwB;IACpD,YACE,WAAwB,EACxB,UAAkB,EAClB,MAAsB,EACtB,eAAqC,SAAS,EAC9C,YAAkC,SAAS,EAC3C,aAAkC,EAAE,SAAS,EAAE,CAAC,EAAE;QAElD,KAAK,CACH,WAAW,EACX,UAAU,EACV,MAAM,EACN,OAAO,YAAY,KAAK,QAAQ;YAC9B,CAAC,CAAC,YAAY;YACd,CAAC,CAAC,KAAK,CAAC,WAAW,CAAC,YAAY,CAAC,EACnC,OAAO,SAAS,KAAK,QAAQ,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,KAAK,CAAC,WAAW,CAAC,SAAS,CAAC,EACxE,UAAU,CACX,CAAC;IACJ,CAAC;CACF;AAED,MAAM,OAAO,kBAAkB;IAC7B,YACS,KAAc,EACd,KAAwB,EACxB,GAAsB;QAFtB,UAAK,GAAL,KAAK,CAAS;QACd,UAAK,GAAL,KAAK,CAAmB;QACxB,QAAG,GAAH,GAAG,CAAmB;IAC5B,CAAC;IAEG,oBAAoB,CAAC,MAAuB;QACjD,OAAO,IAAI,CAAC,YAAY,EAAE;aACvB,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC,EAAE,MAAM,CAAC,CAAC;aACvC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;IAC9B,CAAC;IAEM,YAAY;QACjB,OAAO,IAAI,CAAC,KAAK,CAAC;IACpB,CAAC;IAEM,OAAO;QACZ,OAAO,IAAI,CAAC,GAAG,CAAC;IAClB,CAAC;CACF;AAED,MAAM,OAAO,YAAa,SAAQ,QAA4B;IAC5D,YACE,WAAwB,EACxB,UAAkB,EAClB,MAA0B,EAC1B,eAAqC,SAAS,EAC9C,aAAkC;QAChC,IAAI,EAAE,OAAoB;KAC3B,EACM,WAAoB,KAAK;QAEhC,KAAK,CACH,WAAW,EACX,UAAU,EACV,MAAM,EACN,OAAO,YAAY,KAAK,QAAQ;YAC9B,CAAC,CAAC,YAAY;YACd,CAAC,CAAC,KAAK,CAAC,WAAW,CAAC,YAAY,CAAC,EACnC,SAAS,EACT,UAAU,CACX,CAAC;QAXK,aAAQ,GAAR,QAAQ,CAAiB;IAYlC,CAAC;IAEM,WAAW,CAAC,QAAiB;QAClC,IAAI,CAAC,QAAQ,GAAG,QAAQ,CAAC;IAC3B,CAAC;CACF","sourcesContent":["import { Point, Vector3 } from '@vertexvis/geometry';\nimport { Color } from '@vertexvis/utils';\nimport { JoinStyle, ShapeProps } from 'regl-shape';\n\nimport { CreateShape } from '../../lib/transforms/shape';\nimport { Drawable, DrawablePoints } from './drawable';\n\nexport class AxisLinePoints implements DrawablePoints {\n public constructor(\n public valid: boolean,\n public worldOrigin: Vector3.Vector3,\n public worldEnd: Vector3.Vector3,\n public origin: Point.Point,\n public end: Point.Point
|
|
1
|
+
{"version":3,"file":"line.js","sourceRoot":"","sources":["../../../../../src/lib/transforms/line.ts"],"names":[],"mappings":"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","sourcesContent":["import { Point, Vector3 } from '@vertexvis/geometry';\nimport { Color } from '@vertexvis/utils';\nimport { JoinStyle, ShapeProps } from 'regl-shape';\n\nimport { CreateShape } from '../../lib/transforms/shape';\nimport { Drawable, DrawablePoints } from './drawable';\n\nexport class AxisLinePoints implements DrawablePoints {\n public constructor(\n public valid: boolean,\n public worldOrigin: Vector3.Vector3,\n public worldEnd: Vector3.Vector3,\n public origin: Point.Point,\n public end: Point.Point,\n ) {}\n\n public shortestDistanceFrom(vector: Vector3.Vector3): number {\n return this.toWorldArray()\n .map((v) => Vector3.distance(v, vector))\n .sort((a, b) => a - b)[0];\n }\n\n public toWorldArray(): Vector3.Vector3[] {\n return [this.worldOrigin, this.worldEnd];\n }\n\n public toArray(): Point.Point[] {\n return [this.origin, this.end];\n }\n}\n\nexport class AxisLine extends Drawable<AxisLinePoints> {\n public constructor(\n createShape: CreateShape,\n identifier: string,\n points: AxisLinePoints,\n outlineColor: Color.Color | string = '#000000',\n fillColor: Color.Color | string = '#000000',\n shapeProps: Partial<ShapeProps> = { thickness: 3 },\n ) {\n super(\n createShape,\n identifier,\n points,\n typeof outlineColor === 'string'\n ? outlineColor\n : Color.toHexString(outlineColor),\n typeof fillColor === 'string' ? fillColor : Color.toHexString(fillColor),\n shapeProps,\n );\n }\n}\n\nexport class RotationLinePoints implements DrawablePoints {\n public constructor(\n public valid: boolean,\n public world: Vector3.Vector3[],\n public ndc: Vector3.Vector3[],\n ) {}\n\n public shortestDistanceFrom(vector: Vector3.Vector3): number {\n return this.toWorldArray()\n .map((v) => Vector3.distance(v, vector))\n .sort((a, b) => a - b)[0];\n }\n\n public toWorldArray(): Vector3.Vector3[] {\n return this.world;\n }\n\n public toArray(): Point.Point[] {\n return this.ndc;\n }\n}\n\nexport class RotationLine extends Drawable<RotationLinePoints> {\n public constructor(\n createShape: CreateShape,\n identifier: string,\n points: RotationLinePoints,\n outlineColor: Color.Color | string = '#000000',\n shapeProps: Partial<ShapeProps> = {\n join: 'round' as JoinStyle,\n },\n public disabled: boolean = false,\n ) {\n super(\n createShape,\n identifier,\n points,\n typeof outlineColor === 'string'\n ? outlineColor\n : Color.toHexString(outlineColor),\n undefined,\n shapeProps,\n );\n }\n\n public setDisabled(disabled: boolean): void {\n this.disabled = disabled;\n }\n}\n"]}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"mesh.js","sourceRoot":"","sources":["../../../../../src/lib/transforms/mesh.ts"],"names":[],"mappings":"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","sourcesContent":["import { Point, Vector3 } from '@vertexvis/geometry';\nimport { Color } from '@vertexvis/utils';\nimport { ShapeProps } from 'regl-shape';\n\nimport { CreateShape } from '../../lib/transforms/shape';\nimport { Drawable, DrawablePoints } from './drawable';\n\nexport class MeshPoints implements DrawablePoints {\n public constructor(\n public valid: boolean,\n public world: Vector3.Vector3[],\n public screen: Point.Point[],\n private computeShortestDistance?: (vector: Vector3.Vector3) => number
|
|
1
|
+
{"version":3,"file":"mesh.js","sourceRoot":"","sources":["../../../../../src/lib/transforms/mesh.ts"],"names":[],"mappings":"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","sourcesContent":["import { Point, Vector3 } from '@vertexvis/geometry';\nimport { Color } from '@vertexvis/utils';\nimport { ShapeProps } from 'regl-shape';\n\nimport { CreateShape } from '../../lib/transforms/shape';\nimport { Drawable, DrawablePoints } from './drawable';\n\nexport class MeshPoints implements DrawablePoints {\n public constructor(\n public valid: boolean,\n public world: Vector3.Vector3[],\n public screen: Point.Point[],\n private computeShortestDistance?: (vector: Vector3.Vector3) => number,\n ) {}\n\n public shortestDistanceFrom(vector: Vector3.Vector3): number {\n return this.computeShortestDistance != null\n ? this.computeShortestDistance(vector)\n : this.toWorldArray()\n .map((v) => Vector3.distance(v, vector))\n .sort((a, b) => a - b)[0];\n }\n\n public toWorldArray(): Vector3.Vector3[] {\n return [...this.world, this.world[0]];\n }\n\n public toArray(): Point.Point[] {\n return [...this.screen, this.screen[0]];\n }\n}\n\nexport class Mesh extends Drawable<MeshPoints> {\n public constructor(\n createShape: CreateShape,\n identifier: string,\n points: MeshPoints,\n outlineColor: Color.Color | string = '#000000',\n fillColor: Color.Color | string = '#000000',\n shapeProps: Partial<ShapeProps> = {},\n ) {\n super(\n createShape,\n identifier,\n points,\n typeof outlineColor === 'string'\n ? outlineColor\n : Color.toHexString(outlineColor),\n typeof fillColor === 'string' ? fillColor : Color.toHexString(fillColor),\n shapeProps,\n );\n }\n}\n\nexport class TriangleMeshPoints implements DrawablePoints {\n public constructor(\n public valid: boolean,\n public worldBase: Vector3.Vector3,\n public worldLeft: Vector3.Vector3,\n public worldRight: Vector3.Vector3,\n public worldTip: Vector3.Vector3,\n public base: Point.Point,\n public left: Point.Point,\n public right: Point.Point,\n public tip: Point.Point,\n ) {}\n\n public shortestDistanceFrom(vector: Vector3.Vector3): number {\n return this.toWorldArray()\n .map((v) => Vector3.distance(v, vector))\n .sort((a, b) => a - b)[0];\n }\n\n public toWorldArray(): Vector3.Vector3[] {\n return [this.worldBase, this.worldLeft, this.worldRight, this.worldTip];\n }\n\n public toArray(): Point.Point[] {\n return [this.base, this.left, this.tip, this.right, this.base];\n }\n}\n\nexport class TriangleMesh extends Drawable<TriangleMeshPoints> {\n public constructor(\n createShape: CreateShape,\n identifier: string,\n points: TriangleMeshPoints,\n outlineColor: Color.Color | string = '#000000',\n fillColor: Color.Color | string = '#000000',\n shapeProps: Partial<ShapeProps> = {},\n public disabled: boolean = false,\n ) {\n super(\n createShape,\n identifier,\n points,\n typeof outlineColor === 'string'\n ? outlineColor\n : Color.toHexString(outlineColor),\n typeof fillColor === 'string' ? fillColor : Color.toHexString(fillColor),\n shapeProps,\n );\n }\n\n public setDisabled(disabled: boolean): void {\n this.disabled = disabled;\n }\n\n public isDisabled(): boolean {\n return !!this.disabled;\n }\n}\n"]}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"shape.js","sourceRoot":"","sources":["../../../../../src/lib/transforms/shape.ts"],"names":[],"mappings":"","sourcesContent":["import { ShapeProps } from 'regl-shape';\n\nexport type DrawShape = (\n partialProps?: Partial<ShapeProps> | undefined
|
|
1
|
+
{"version":3,"file":"shape.js","sourceRoot":"","sources":["../../../../../src/lib/transforms/shape.ts"],"names":[],"mappings":"","sourcesContent":["import { ShapeProps } from 'regl-shape';\n\nexport type DrawShape = (\n partialProps?: Partial<ShapeProps> | undefined,\n) => void;\n\nexport type CreateShape = (\n points: Float64Array,\n initialPartialProps?: Partial<ShapeProps> | undefined,\n) => DrawShape;\n"]}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"transformation-delta.js","sourceRoot":"","sources":["../../../../../src/lib/transforms/transformation-delta.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,UAAU,EAAE,OAAO,EAAE,MAAM,qBAAqB,CAAC;AAEnE,MAAM,CAAC,MAAM,UAAU,GAAG,MAAM,CAAC;AAEjC;;;;;GAKG;AACH,MAAM,UAAU,6BAA6B,CAC3C,IAAqB;IAErB,MAAM,oBAAoB,GAAG,OAAO,CAAC,MAAM,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IAChE,MAAM,oBAAoB,GAAG,OAAO,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,CAAC,EAAE,CAAC,EAAE,IAAI,CAAC,CAAC,CAAC,CAAC;IAEhE,MAAM,YAAY,GAChB,OAAO,CAAC,gBAAgB,CAAC,oBAAoB,CAAC;QAC9C,OAAO,CAAC,gBAAgB,CAAC,oBAAoB,CAAC;QAC5C,CAAC,CAAC,oBAAoB;QACtB,CAAC,CAAC,oBAAoB,CAAC;IAE3B,OAAO,OAAO,CAAC,SAAS,CAAC,OAAO,CAAC,KAAK,CAAC,IAAI,EAAE,YAAY,CAAC,CAAC,CAAC;AAC9D,CAAC;AAED;;;;;;;;;GASG;AACH,MAAM,UAAU,qBAAqB,CACnC,OAAwB,EACxB,OAAwB;IAExB,MAAM,GAAG,GAAG,OAAO,CAAC,GAAG,CAAC,OAAO,EAAE,OAAO,CAAC,CAAC;IAC1C,sCAAsC;IACtC,IAAI,GAAG,GAAG,UAAU,EAAE,CAAC;QACrB,MAAM,aAAa,GAAG,6BAA6B,CAAC,OAAO,CAAC,CAAC;QAE7D,MAAM,UAAU,GAAG,UAAU,CAAC,aAAa,CAAC,aAAa,EAAE,IAAI,CAAC,EAAE,CAAC,CAAC;QACpE,OAAO,OAAO,CAAC,YAAY,CAAC,UAAU,CAAC,CAAC;IAC1C,CAAC;IACD,wCAAwC;SACnC,IAAI,GAAG,IAAI,CAAC,UAAU,EAAE,CAAC;QAC5B,OAAO,OAAO,CAAC,YAAY,EAAE,CAAC;IAChC,CAAC;IACD,+BAA+B;SAC1B,CAAC;QACJ,MAAM,KAAK,GAAG,OAAO,CAAC,OAAO,CAAC,OAAO,EAAE,OAAO,CAAC,CAAC;QAChD,MAAM,aAAa,GAAG,OAAO,CAAC,SAAS,CAAC,OAAO,CAAC,KAAK,CAAC,OAAO,EAAE,OAAO,CAAC,CAAC,CAAC;QACzE,OAAO,OAAO,CAAC,YAAY,CACzB,UAAU,CAAC,aAAa,CAAC,aAAa,EAAE,KAAK,GAAG,IAAI,CAAC,EAAE,CAAC,CACzD,CAAC;IACJ,CAAC;AACH,CAAC;AAED;;;;;;;;;;;;GAYG;AACH,MAAM,UAAU,0BAA0B,CACxC,OAAwB,EACxB,SAA0B,EAC1B,OAAwB,EACxB,SAA0B;IAE1B,MAAM,cAAc,GAAG,qBAAqB,CAAC,OAAO,EAAE,OAAO,CAAC,CAAC;IAE/D,MAAM,sBAAsB,GAAG,OAAO,CAAC,eAAe,CAAC,SAAS,CAAC,CAAC;IAClE,OAAO,OAAO,CAAC,QAAQ,CACrB,OAAO,CAAC,QAAQ,CAAC,sBAAsB,EAAE,cAAc,CAAC,EACxD,OAAO,CAAC,eAAe,CAAC,OAAO,CAAC,MAAM,CAAC,SAAS,CAAC,CAAC,CACnD,CAAC;AACJ,CAAC","sourcesContent":["import { Matrix4, Quaternion, Vector3 } from '@vertexvis/geometry';\n\nexport const ALMOST_ONE = 0.9999;\n\n/**\n * For any single normal vector, there are an infinite number of potential orthogonal vectors. This function will\n * calculate a single vector evaluating the length of two candidates, and picking the one with the higher squared magnitude\n * @param normal\n * @returns\n */\nexport function calculateOrthogonalCoordinate(\n norm: Vector3.Vector3
|
|
1
|
+
{"version":3,"file":"transformation-delta.js","sourceRoot":"","sources":["../../../../../src/lib/transforms/transformation-delta.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,UAAU,EAAE,OAAO,EAAE,MAAM,qBAAqB,CAAC;AAEnE,MAAM,CAAC,MAAM,UAAU,GAAG,MAAM,CAAC;AAEjC;;;;;GAKG;AACH,MAAM,UAAU,6BAA6B,CAC3C,IAAqB;IAErB,MAAM,oBAAoB,GAAG,OAAO,CAAC,MAAM,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IAChE,MAAM,oBAAoB,GAAG,OAAO,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,CAAC,EAAE,CAAC,EAAE,IAAI,CAAC,CAAC,CAAC,CAAC;IAEhE,MAAM,YAAY,GAChB,OAAO,CAAC,gBAAgB,CAAC,oBAAoB,CAAC;QAC9C,OAAO,CAAC,gBAAgB,CAAC,oBAAoB,CAAC;QAC5C,CAAC,CAAC,oBAAoB;QACtB,CAAC,CAAC,oBAAoB,CAAC;IAE3B,OAAO,OAAO,CAAC,SAAS,CAAC,OAAO,CAAC,KAAK,CAAC,IAAI,EAAE,YAAY,CAAC,CAAC,CAAC;AAC9D,CAAC;AAED;;;;;;;;;GASG;AACH,MAAM,UAAU,qBAAqB,CACnC,OAAwB,EACxB,OAAwB;IAExB,MAAM,GAAG,GAAG,OAAO,CAAC,GAAG,CAAC,OAAO,EAAE,OAAO,CAAC,CAAC;IAC1C,sCAAsC;IACtC,IAAI,GAAG,GAAG,UAAU,EAAE,CAAC;QACrB,MAAM,aAAa,GAAG,6BAA6B,CAAC,OAAO,CAAC,CAAC;QAE7D,MAAM,UAAU,GAAG,UAAU,CAAC,aAAa,CAAC,aAAa,EAAE,IAAI,CAAC,EAAE,CAAC,CAAC;QACpE,OAAO,OAAO,CAAC,YAAY,CAAC,UAAU,CAAC,CAAC;IAC1C,CAAC;IACD,wCAAwC;SACnC,IAAI,GAAG,IAAI,CAAC,UAAU,EAAE,CAAC;QAC5B,OAAO,OAAO,CAAC,YAAY,EAAE,CAAC;IAChC,CAAC;IACD,+BAA+B;SAC1B,CAAC;QACJ,MAAM,KAAK,GAAG,OAAO,CAAC,OAAO,CAAC,OAAO,EAAE,OAAO,CAAC,CAAC;QAChD,MAAM,aAAa,GAAG,OAAO,CAAC,SAAS,CAAC,OAAO,CAAC,KAAK,CAAC,OAAO,EAAE,OAAO,CAAC,CAAC,CAAC;QACzE,OAAO,OAAO,CAAC,YAAY,CACzB,UAAU,CAAC,aAAa,CAAC,aAAa,EAAE,KAAK,GAAG,IAAI,CAAC,EAAE,CAAC,CACzD,CAAC;IACJ,CAAC;AACH,CAAC;AAED;;;;;;;;;;;;GAYG;AACH,MAAM,UAAU,0BAA0B,CACxC,OAAwB,EACxB,SAA0B,EAC1B,OAAwB,EACxB,SAA0B;IAE1B,MAAM,cAAc,GAAG,qBAAqB,CAAC,OAAO,EAAE,OAAO,CAAC,CAAC;IAE/D,MAAM,sBAAsB,GAAG,OAAO,CAAC,eAAe,CAAC,SAAS,CAAC,CAAC;IAClE,OAAO,OAAO,CAAC,QAAQ,CACrB,OAAO,CAAC,QAAQ,CAAC,sBAAsB,EAAE,cAAc,CAAC,EACxD,OAAO,CAAC,eAAe,CAAC,OAAO,CAAC,MAAM,CAAC,SAAS,CAAC,CAAC,CACnD,CAAC;AACJ,CAAC","sourcesContent":["import { Matrix4, Quaternion, Vector3 } from '@vertexvis/geometry';\n\nexport const ALMOST_ONE = 0.9999;\n\n/**\n * For any single normal vector, there are an infinite number of potential orthogonal vectors. This function will\n * calculate a single vector evaluating the length of two candidates, and picking the one with the higher squared magnitude\n * @param normal\n * @returns\n */\nexport function calculateOrthogonalCoordinate(\n norm: Vector3.Vector3,\n): Vector3.Vector3 {\n const orthogonalCandidate0 = Vector3.create(0, norm.z, -norm.y);\n const orthogonalCandidate1 = Vector3.create(-norm.z, 0, norm.x);\n\n const theChosenOne =\n Vector3.magnitudeSquared(orthogonalCandidate0) >\n Vector3.magnitudeSquared(orthogonalCandidate1)\n ? orthogonalCandidate0\n : orthogonalCandidate1;\n\n return Vector3.normalize(Vector3.cross(norm, theChosenOne));\n}\n\n/**\n * Computes the rotation matrix for two normals. If both normals are neither parallel nor anti-parallel,\n * this will compute the rotation matrix delta based on the angle from both normals.\n * If the normals are anti-parallel, the identity matrix will be returned, as no rotation is necessary in this case.\n * If the normals are parallel, an axis direction based on a chosen orthogonal vector will be used\n * to compute the rotation matrix to rotate the plane 180 degrees.\n * @param normal1\n * @param normal2\n * @returns an anti-parallel rotation Matrix4 between the given normals\n */\nexport function computeRotationMatrix(\n normal1: Vector3.Vector3,\n normal2: Vector3.Vector3,\n): Matrix4.Matrix4 {\n const dot = Vector3.dot(normal1, normal2);\n // the angle is almost 0 in this case.\n if (dot > ALMOST_ONE) {\n const axisDirection = calculateOrthogonalCoordinate(normal1);\n\n const quaternion = Quaternion.fromAxisAngle(axisDirection, Math.PI);\n return Matrix4.makeRotation(quaternion);\n }\n // the angle is almost 180 in this case.\n else if (dot <= -ALMOST_ONE) {\n return Matrix4.makeIdentity();\n }\n // the angle is between 0 & 180\n else {\n const angle = Vector3.angleTo(normal2, normal1);\n const axisDirection = Vector3.normalize(Vector3.cross(normal1, normal2));\n return Matrix4.makeRotation(\n Quaternion.fromAxisAngle(axisDirection, angle + Math.PI),\n );\n }\n}\n\n/**\n * Computes the translation & rotation matrix delta between two world positions and two normals.\n * such that the computed translation matrix will be the delta between position 1 and position 2,\n * and the rotation will be rotated to be anti-parallel.\n *\n * @param normal1\n * @param position1\n * @param normal2\n * @param position2\n *\n * @returns Matrix4 translation matrix delta from position1 to\n * position2 & an anti-parallel rotation delta.\n */\nexport function computeTransformationDelta(\n normal1: Vector3.Vector3,\n position1: Vector3.Vector3,\n normal2: Vector3.Vector3,\n position2: Vector3.Vector3,\n): Matrix4.Matrix4 {\n const rotationMatrix = computeRotationMatrix(normal1, normal2);\n\n const translationDeltaMatrix = Matrix4.makeTranslation(position2);\n return Matrix4.multiply(\n Matrix4.multiply(translationDeltaMatrix, rotationMatrix),\n Matrix4.makeTranslation(Vector3.negate(position1)),\n );\n}\n"]}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"util.js","sourceRoot":"","sources":["../../../../../src/lib/transforms/util.ts"],"names":[],"mappings":"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","sourcesContent":["import {\n Angle,\n Euler,\n Matrix4,\n Point,\n Quaternion,\n Vector3,\n} from '@vertexvis/geometry';\n\n/**\n * A type that wraps the local and world transforms for an item.\n */\nexport interface Transform {\n position: Vector3.Vector3;\n rotation: Vector3.Vector3;\n scale: number;\n}\n\n/**\n * Converts an array of points to an array of numbers\n * @param arr The array to convert\n * @returns The given array as an array of numbers\n */\nexport function flattenPointArray(arr: Point.Point[]): number[] {\n return arr.reduce((res, pt) => [...res, pt.x, pt.y], [] as number[]);\n}\n\n/**\n * Converts the rotation vector of a Transform from degrees to radians\n * @param transform The Transform to convert\n * @returns The Transform where the rotation matrix is in terms of radians\n */\nexport function toRadiansTransform(transform: Transform): Transform {\n const { position, rotation: r, scale } = transform;\n const rotation = Vector3.create(\n Angle.toRadians(r.x),\n Angle.toRadians(r.y),\n Angle.toRadians(r.z)
|
|
1
|
+
{"version":3,"file":"util.js","sourceRoot":"","sources":["../../../../../src/lib/transforms/util.ts"],"names":[],"mappings":"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","sourcesContent":["import {\n Angle,\n Euler,\n Matrix4,\n Point,\n Quaternion,\n Vector3,\n} from '@vertexvis/geometry';\n\n/**\n * A type that wraps the local and world transforms for an item.\n */\nexport interface Transform {\n position: Vector3.Vector3;\n rotation: Vector3.Vector3;\n scale: number;\n}\n\n/**\n * Converts an array of points to an array of numbers\n * @param arr The array to convert\n * @returns The given array as an array of numbers\n */\nexport function flattenPointArray(arr: Point.Point[]): number[] {\n return arr.reduce((res, pt) => [...res, pt.x, pt.y], [] as number[]);\n}\n\n/**\n * Converts the rotation vector of a Transform from degrees to radians\n * @param transform The Transform to convert\n * @returns The Transform where the rotation matrix is in terms of radians\n */\nexport function toRadiansTransform(transform: Transform): Transform {\n const { position, rotation: r, scale } = transform;\n const rotation = Vector3.create(\n Angle.toRadians(r.x),\n Angle.toRadians(r.y),\n Angle.toRadians(r.z),\n );\n\n return { position, rotation, scale };\n}\n\n/**\n * Converts the rotation vector of a Transform from radians to degrees\n * @param transform The Transform to convert\n * @returns The Transform where the rotation matrix is in terms of degrees\n */\nexport function toDegreesTransform(transform: Transform): Transform {\n const { position, rotation: r, scale } = transform;\n const rotation = Vector3.create(\n Angle.toDegrees(r.x),\n Angle.toDegrees(r.y),\n Angle.toDegrees(r.z),\n );\n return { position, rotation, scale };\n}\n\n/**\n * Converts a Transform to a Matrix4 transform\n * @param transform The Transform to convert\n * @returns The transform as a Matrix4\n */\nexport function toMatrix(transform: Transform): Matrix4.Matrix4 {\n const { position: t, rotation, scale } = transform;\n const r = Quaternion.fromEuler(Euler.create(rotation));\n const s = Vector3.create(scale, scale, scale);\n return Matrix4.makeTRS(t, r, s);\n}\n\n/**\n * Converts a Matrix4 transform to a Transform\n * @param matrix The Matrix4 transform to convert\n * @returns The transform as a Transform\n */\nexport function toTransform(matrix: Matrix4.Matrix4): Transform {\n const position = Vector3.fromMatrixPosition(matrix);\n const rotation = Euler.fromRotationMatrix(matrix);\n const { x: scale } = Vector3.fromMatrixScale(matrix);\n return { position, rotation, scale };\n}\n\n/**\n * Converts a local transform to a world transform relative to the given parent world matrix.\n * @param localT The local transform to convert\n * @param parentWM The world matrix of the item's parent\n * @returns The world transform of the item\n */\nexport function toWorldTransform(\n localT: Transform,\n parentWM: Matrix4.Matrix4,\n): Transform {\n const localM = toMatrix(toRadiansTransform(localT));\n const worldM = Matrix4.multiply(parentWM, localM);\n return toDegreesTransform(toTransform(worldM));\n}\n\n/**\n * Converts a world transform to a local transform relative to the given parent world matrix.\n * @param worldT The world transform to convert\n * @param parentWM The world matrix of the item's parent\n * @returns The local transform of the item\n */\nexport function toLocalTransform(\n worldT: Transform,\n parentWM: Matrix4.Matrix4,\n): Transform {\n const worldM = toMatrix(toRadiansTransform(worldT));\n const localM = Matrix4.multiply(Matrix4.invert(parentWM), worldM);\n return toDegreesTransform(toTransform(localM));\n}\n"]}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"clippingPlanes.js","sourceRoot":"","sources":["../../../../../src/lib/types/clippingPlanes.ts"],"names":[],"mappings":"AAAA,OAAO,EAAe,cAAc,EAAE,OAAO,EAAE,MAAM,qBAAqB,CAAC;AAE3E,OAAO,EAEL,yBAAyB,GAG1B,MAAM,eAAe,CAAC;AAOvB,MAAM,UAAU,8BAA8B,CAC5C,WAAoC,EACpC,MAAmB;IAEnB,OAAO,yBAAyB,CAAC,MAAM,CAAC;QACtC,CAAC,CAAC,oCAAoC,CAAC,WAAW,EAAE,MAAM,CAAC;QAC3D,CAAC,CAAC,mCAAmC,CAAC,WAAW,EAAE,MAAM,CAAC,CAAC;AAC/D,CAAC;AAED,iKAAiK;AACjK,qDAAqD;AACrD,iEAAiE;AACjE,MAAM,UAAU,mCAAmC,CACjD,WAAoC,EACpC,MAA8B;IAE9B,MAAM,cAAc,GAAG,cAAc,CAAC,MAAM,CAAC,WAAW,CAAC,CAAC;IAC1D,MAAM,QAAQ,GAAG,cAAc,CAAC,OAAO,GAAG,GAAG,CAAC;IAE9C,MAAM,eAAe,GAAG,OAAO,CAAC,GAAG,CACjC,OAAO,CAAC,QAAQ,CAAC,cAAc,CAAC,MAAM,EAAE,MAAM,CAAC,QAAQ,CAAC,EACxD,OAAO,CAAC,SAAS,CAAC,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,QAAQ,CAAC,CAAC,CACpE,CAAC;IAEF,MAAM,OAAO,GAAG,IAAI,CAAC,GAAG,CAAC,cAAc,CAAC,MAAM,EAAE,QAAQ,CAAC,CAAC;IAE1D,IAAI,MAAM,GACR,OAAO,GAAG,eAAe,GAAG,QAAQ;QAClC,CAAC,CAAC,OAAO,GAAG,GAAG;QACf,CAAC,CAAC,OAAO,GAAG,eAAe,CAAC;IAEhC,IAAI,OAAO,GACT,MAAM,GAAG,OAAO,GAAG,GAAG,GAAG,QAAQ;QAC/B,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,QAAQ,EAAE,MAAM,CAAC;QAC5B,CAAC,CAAC,MAAM,GAAG,OAAO,GAAG,GAAG,CAAC;IAE7B,IAAI,MAAM,GAAG,OAAO,GAAG,QAAQ,EAAE,CAAC;QAChC,OAAO,GAAG,IAAI,CAAC,GAAG,CAAC,OAAO,EAAE,QAAQ,CAAC,CAAC;QACtC,MAAM,IAAI,OAAO,GAAG,QAAQ,CAAC;IAC/B,CAAC;SAAM,IAAI,OAAO,GAAG,MAAM,GAAG,MAAM,EAAE,CAAC;QACrC,OAAO,GAAG,MAAM,GAAG,MAAM,CAAC;IAC5B,CAAC;IAED,IAAI,OAAO,GAAG,MAAM,GAAG,OAAO,GAAG,GAAG,EAAE,CAAC;QACrC,IAAI,OAAO,GAAG,IAAI,GAAG,QAAQ,EAAE,CAAC;YAC9B,MAAM,IAAI,OAAO,GAAG,IAAI,CAAC;YACzB,OAAO,GAAG,IAAI,CAAC;QACjB,CAAC;IACH,CAAC;IAED,OAAO;QACL,IAAI,EAAE,OAAO;QACb,GAAG,EAAE,MAAM;KACZ,CAAC;AACJ,CAAC;AAED,kKAAkK;AAClK,qDAAqD;AACrD,iEAAiE;AACjE,MAAM,UAAU,oCAAoC,CAClD,WAAoC,EACpC,MAA+B;IAE/B,MAAM,cAAc,GAAG,cAAc,CAAC,MAAM,CAAC,WAAW,CAAC,CAAC;IAC1D,MAAM,QAAQ,GAAG,cAAc,CAAC,OAAO,GAAG,GAAG,CAAC;IAE9C,MAAM,OAAO,GAAG,IAAI,CAAC,GAAG,CAAC,cAAc,CAAC,MAAM,EAAE,QAAQ,CAAC,CAAC;IAE1D,OAAO;QACL,IAAI,EAAE,CAAC,OAAO;QACd,GAAG,EAAE,OAAO;KACb,CAAC;AACJ,CAAC","sourcesContent":["import { BoundingBox, BoundingSphere, Vector3 } from '@vertexvis/geometry';\n\nimport {\n FrameCamera,\n isOrthographicFrameCamera,\n OrthographicFrameCamera,\n PerspectiveFrameCamera,\n} from './frameCamera';\n\nexport interface ClippingPlanes {\n near: number;\n far: number;\n}\n\nexport function fromBoundingBoxAndLookAtCamera(\n boundingBox: BoundingBox.BoundingBox,\n camera: FrameCamera
|
|
1
|
+
{"version":3,"file":"clippingPlanes.js","sourceRoot":"","sources":["../../../../../src/lib/types/clippingPlanes.ts"],"names":[],"mappings":"AAAA,OAAO,EAAe,cAAc,EAAE,OAAO,EAAE,MAAM,qBAAqB,CAAC;AAE3E,OAAO,EAEL,yBAAyB,GAG1B,MAAM,eAAe,CAAC;AAOvB,MAAM,UAAU,8BAA8B,CAC5C,WAAoC,EACpC,MAAmB;IAEnB,OAAO,yBAAyB,CAAC,MAAM,CAAC;QACtC,CAAC,CAAC,oCAAoC,CAAC,WAAW,EAAE,MAAM,CAAC;QAC3D,CAAC,CAAC,mCAAmC,CAAC,WAAW,EAAE,MAAM,CAAC,CAAC;AAC/D,CAAC;AAED,iKAAiK;AACjK,qDAAqD;AACrD,iEAAiE;AACjE,MAAM,UAAU,mCAAmC,CACjD,WAAoC,EACpC,MAA8B;IAE9B,MAAM,cAAc,GAAG,cAAc,CAAC,MAAM,CAAC,WAAW,CAAC,CAAC;IAC1D,MAAM,QAAQ,GAAG,cAAc,CAAC,OAAO,GAAG,GAAG,CAAC;IAE9C,MAAM,eAAe,GAAG,OAAO,CAAC,GAAG,CACjC,OAAO,CAAC,QAAQ,CAAC,cAAc,CAAC,MAAM,EAAE,MAAM,CAAC,QAAQ,CAAC,EACxD,OAAO,CAAC,SAAS,CAAC,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,QAAQ,CAAC,CAAC,CACpE,CAAC;IAEF,MAAM,OAAO,GAAG,IAAI,CAAC,GAAG,CAAC,cAAc,CAAC,MAAM,EAAE,QAAQ,CAAC,CAAC;IAE1D,IAAI,MAAM,GACR,OAAO,GAAG,eAAe,GAAG,QAAQ;QAClC,CAAC,CAAC,OAAO,GAAG,GAAG;QACf,CAAC,CAAC,OAAO,GAAG,eAAe,CAAC;IAEhC,IAAI,OAAO,GACT,MAAM,GAAG,OAAO,GAAG,GAAG,GAAG,QAAQ;QAC/B,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,QAAQ,EAAE,MAAM,CAAC;QAC5B,CAAC,CAAC,MAAM,GAAG,OAAO,GAAG,GAAG,CAAC;IAE7B,IAAI,MAAM,GAAG,OAAO,GAAG,QAAQ,EAAE,CAAC;QAChC,OAAO,GAAG,IAAI,CAAC,GAAG,CAAC,OAAO,EAAE,QAAQ,CAAC,CAAC;QACtC,MAAM,IAAI,OAAO,GAAG,QAAQ,CAAC;IAC/B,CAAC;SAAM,IAAI,OAAO,GAAG,MAAM,GAAG,MAAM,EAAE,CAAC;QACrC,OAAO,GAAG,MAAM,GAAG,MAAM,CAAC;IAC5B,CAAC;IAED,IAAI,OAAO,GAAG,MAAM,GAAG,OAAO,GAAG,GAAG,EAAE,CAAC;QACrC,IAAI,OAAO,GAAG,IAAI,GAAG,QAAQ,EAAE,CAAC;YAC9B,MAAM,IAAI,OAAO,GAAG,IAAI,CAAC;YACzB,OAAO,GAAG,IAAI,CAAC;QACjB,CAAC;IACH,CAAC;IAED,OAAO;QACL,IAAI,EAAE,OAAO;QACb,GAAG,EAAE,MAAM;KACZ,CAAC;AACJ,CAAC;AAED,kKAAkK;AAClK,qDAAqD;AACrD,iEAAiE;AACjE,MAAM,UAAU,oCAAoC,CAClD,WAAoC,EACpC,MAA+B;IAE/B,MAAM,cAAc,GAAG,cAAc,CAAC,MAAM,CAAC,WAAW,CAAC,CAAC;IAC1D,MAAM,QAAQ,GAAG,cAAc,CAAC,OAAO,GAAG,GAAG,CAAC;IAE9C,MAAM,OAAO,GAAG,IAAI,CAAC,GAAG,CAAC,cAAc,CAAC,MAAM,EAAE,QAAQ,CAAC,CAAC;IAE1D,OAAO;QACL,IAAI,EAAE,CAAC,OAAO;QACd,GAAG,EAAE,OAAO;KACb,CAAC;AACJ,CAAC","sourcesContent":["import { BoundingBox, BoundingSphere, Vector3 } from '@vertexvis/geometry';\n\nimport {\n FrameCamera,\n isOrthographicFrameCamera,\n OrthographicFrameCamera,\n PerspectiveFrameCamera,\n} from './frameCamera';\n\nexport interface ClippingPlanes {\n near: number;\n far: number;\n}\n\nexport function fromBoundingBoxAndLookAtCamera(\n boundingBox: BoundingBox.BoundingBox,\n camera: FrameCamera,\n): ClippingPlanes {\n return isOrthographicFrameCamera(camera)\n ? fromBoundingBoxAndOrthographicCamera(boundingBox, camera)\n : fromBoundingBoxAndPerspectiveCamera(boundingBox, camera);\n}\n\n// Logic pulled from https://github.com/Vertexvis/rendering-client-lib-java/blob/master/src/main/java/com/vertexvis/rendering/graphics/PerspectiveCamera.java#L65\n// and needs to remain in sync with that computation.\n// TODO: revisit computation of these values in a single location\nexport function fromBoundingBoxAndPerspectiveCamera(\n boundingBox: BoundingBox.BoundingBox,\n camera: PerspectiveFrameCamera,\n): ClippingPlanes {\n const boundingSphere = BoundingSphere.create(boundingBox);\n const minRange = boundingSphere.epsilon * 1e2;\n\n const signedDistToEye = Vector3.dot(\n Vector3.subtract(boundingSphere.center, camera.position),\n Vector3.normalize(Vector3.subtract(camera.lookAt, camera.position)),\n );\n\n const bRadius = Math.max(boundingSphere.radius, minRange);\n\n let newFar =\n bRadius + signedDistToEye < minRange\n ? bRadius * 3.0\n : bRadius + signedDistToEye;\n\n let newNear =\n newFar - bRadius * 2.0 < minRange\n ? Math.min(minRange, newFar)\n : newFar - bRadius * 2.0;\n\n if (newFar - newNear < minRange) {\n newNear = Math.max(newNear, minRange);\n newFar += newNear + minRange;\n } else if (newNear / newFar < 0.0001) {\n newNear = newFar * 0.0001;\n }\n\n if (newNear > newFar - bRadius * 2.0) {\n if (newNear > 1000 + minRange) {\n newFar -= newNear - 1000;\n newNear = 1000;\n }\n }\n\n return {\n near: newNear,\n far: newFar,\n };\n}\n\n// Logic pulled from https://github.com/Vertexvis/rendering-client-lib-java/blob/master/src/main/java/com/vertexvis/rendering/graphics/OrthographicCamera.java#L35\n// and needs to remain in sync with that computation.\n// TODO: revisit computation of these values in a single location\nexport function fromBoundingBoxAndOrthographicCamera(\n boundingBox: BoundingBox.BoundingBox,\n camera: OrthographicFrameCamera,\n): ClippingPlanes {\n const boundingSphere = BoundingSphere.create(boundingBox);\n const minRange = boundingSphere.epsilon * 1e2;\n\n const bRadius = Math.max(boundingSphere.radius, minRange);\n\n return {\n near: -bRadius,\n far: bRadius,\n };\n}\n"]}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"depthBuffer.js","sourceRoot":"","sources":["../../../../../src/lib/types/depthBuffer.ts"],"names":[],"mappings":"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","sourcesContent":["import { Point, Ray } from '@vertexvis/geometry';\nimport { Vector3 } from '@vertexvis/geometry';\nimport type { DecodedPng } from 'fast-png';\n\nimport { FrameCameraBase, FrameImageLike, ImageAttributesLike } from './frame';\nimport { Viewport } from './viewport';\n\n/**\n * A `DepthBuffer` represents the depth information for a rendered frame. This\n * depth information can be used for checking if a world point is occluded by\n * geometry or getting a world position from a 2D viewport point without having\n * to do a server call.\n *\n * A depth buffer is represented by a 16-bit typed array, where each value is\n * a relative distance between the camera's near and far planes.\n */\nexport class DepthBuffer implements FrameImageLike {\n /**\n * A constant that specifies the maximum depth value that can be represented\n * by a depth buffer.\n */\n public static MAX_DEPTH_VALUE = 2 ** 16 - 1;\n\n /**\n * Constructs a new depth buffer.\n *\n * @param camera The camera data that generated this depth buffer.\n * @param imageAttr The attributes of the depth buffer image.\n * @param pixels A 16-bit typed array of depth values.\n */\n public constructor(\n public readonly camera: FrameCameraBase,\n public readonly imageAttr: ImageAttributesLike,\n public readonly pixels: Uint16Array\n ) {}\n\n /**\n * Creates a `DepthBuffer` from a decoded PNG.\n *\n * @param png An object containing the width, height and raw PNG data.\n * @param camera The camera that generated the depth buffer image.\n * @param imageAttr The attributes of the depth buffer image.\n * @throws If the PNG is not a single channel, 16-bit image.\n * @returns A depth buffer.\n */\n public static fromPng(\n png: Pick<DecodedPng, 'data'>,\n camera: FrameCameraBase,\n imageAttr: ImageAttributesLike\n ): DepthBuffer {\n if (png.data instanceof Uint16Array) {\n return new DepthBuffer(camera, imageAttr, png.data);\n } else {\n throw new Error('Expected depth PNG to have depth of 16-bit');\n }\n }\n\n /**\n * Computes the depth from a 2D point within the coordinate space of the depth\n * buffer.\n *\n * For perspective cameras, the returned depth is a value that's between\n * the near and far planes of the camera.\n\n * For orthographic cameras, the returned depth is a value that's between\n * 0 and the distance between the near and far planes of the camera.\n *\n * @param point A 2D point within the viewport.\n * @param fallbackNormalizedDepth A fallback value if the depth is the max\n * depth value, or cannot be determined.\n * @returns The depth at the point.\n */\n public getDepthAtPoint(\n point: Point.Point,\n fallbackNormalizedDepth?: number\n ): number {\n const { near, far } = this.camera;\n const isPerspectiveCamera = this.camera.isPerspective();\n\n const depth = this.getNormalizedDepthAtPoint(\n point,\n fallbackNormalizedDepth\n );\n\n if (isPerspectiveCamera) {\n return depth * (far - near) + near;\n } else {\n return depth * (far - near);\n }\n }\n\n /**\n * Computes the maximum depth of visible geometry within the coordinate\n * space of the depth buffer.\n *\n * For perspective cameras, the maximum depth is the magnitude\n * of the far plane of the camera.\n *\n * For orthographic cameras, the maximum depth is the distance between\n * the near and far planes of the camera.\n *\n * @returns The maximum depth of visible geometry.\n */\n public getMaxDepthOfGeometry(): number {\n const { near, far } = this.camera;\n const isPerspectiveCamera = this.camera.isPerspective();\n\n if (isPerspectiveCamera) {\n return far;\n } else {\n return far - near;\n }\n }\n\n /**\n * Computes a depth from a 2D point within the coordinate space of the frame.\n * The returned depth is a normalized value (`[0, 1]`) between the near and\n * far plane.\n *\n * @param point A 2D point within the frame.\n * @param fallbackNormalizedDepth A fallback value if the depth is the max\n * depth value, or cannot be determined.\n * @returns A depth between 0 and 1.\n */\n public getNormalizedDepthAtPoint(\n point: Point.Point,\n fallbackNormalizedDepth?: number\n ): number {\n const { width, height } = this.imageAttr.imageRect;\n\n const offset = Point.subtract(point, this.imageAttr.imageRect);\n const scale = 1 / this.imageAttr.imageScale;\n const pixel = Point.scale(offset, scale, scale);\n\n if (pixel.x >= 0 && pixel.y >= 0 && pixel.x < width && pixel.y < height) {\n const index = Math.floor(pixel.x) + Math.floor(pixel.y) * width;\n const depth = this.pixels[index];\n\n const depthOrFallback =\n depth === DepthBuffer.MAX_DEPTH_VALUE\n ? (fallbackNormalizedDepth ?? depth)\n : depth;\n return (\n (depthOrFallback ?? DepthBuffer.MAX_DEPTH_VALUE) /\n DepthBuffer.MAX_DEPTH_VALUE\n );\n } else {\n return fallbackNormalizedDepth ?? 1;\n }\n }\n\n /**\n * Returns `true` if the point is in front of the far plane and the point is\n * inside the frame. This method is useful for checking if geometry exists at\n * a given 2D coordinate.\n *\n * @param point A 2D point within the frame.\n * @returns `true` if point is in front of far plane.\n */\n public hitTest(point: Point.Point): boolean {\n return this.getNormalizedDepthAtPoint(point) < 1;\n }\n\n /**\n * Computes a 3D point in world space coordinates from the depth value at the\n * given pixel and ray.\n *\n * @param point A pixel to use for reading a depth value.\n * @param ray A ray that specifies the origin and direction.\n * @param fallbackNormalizedDepth A fallback value if the depth is the max\n * depth value, or cannot be determined.\n * @returns A point in world space coordinates.\n */\n public getWorldPoint(\n point: Point.Point,\n ray: Ray.Ray,\n fallbackNormalizedDepth?: number\n ): Vector3.Vector3 {\n const distance = this.getDepthAtPoint(point, fallbackNormalizedDepth);\n\n const isPerspectiveCamera = this.camera.isPerspective();\n if (isPerspectiveCamera) {\n const { position, viewVector: vv, far } = this.camera;\n\n // Compute the world position along the ray at the far plane.\n // This is used to determine the angle with the view vector.\n const worldPt = Ray.at(ray, far);\n const eyeToWorldPt = Vector3.subtract(worldPt, position);\n\n const angle =\n Vector3.dot(vv, eyeToWorldPt) /\n (Vector3.magnitude(vv) * Vector3.magnitude(eyeToWorldPt));\n return Ray.at(ray, distance / angle);\n } else {\n return Ray.at(ray, distance);\n }\n }\n\n /**\n * Returns the distance from the camera to the given world point.\n *\n * @param worldPt A point in world space to determine the distance to.\n * @returns distance from the camera to the given world point.\n */\n public distanceToPoint(worldPt: Vector3.Vector3): number {\n const { position, direction } = this.camera;\n\n // Calculate the distance from the camera to the given world point\n // Use the dot product to find the magnitude of the orthogonal component\n const eyeToPoint = Vector3.subtract(worldPt, position);\n return Math.abs(Vector3.dot(eyeToPoint, direction));\n }\n\n /**\n * Returns the depth of the closest geometry at the point in the\n * viewport (2D) corresponding to the given world point (3D).\n *\n * @param worldPt A point in world space to check.\n * @param viewport A viewport of the viewer.\n * @returns depth of the closest geometry at the corresponding point in the viewport.\n */\n public depthOfClosestGeometry(\n worldPt: Vector3.Vector3,\n viewport: Viewport\n ): number {\n const { projectionViewMatrix } = this.camera;\n\n // Find the screen point corresponding to the world point for the current camera\n const screenPt = viewport.transformWorldToViewport(\n worldPt,\n projectionViewMatrix\n );\n const scaledPt = viewport.transformPointToFrame(screenPt, this);\n\n // Find the depth of the closest geometry at the same point on the screen\n return this.getDepthAtPoint(scaledPt);\n }\n\n /**\n * Returns `true` if the given point in world space is occluded by any\n * geometry.\n *\n * @param worldPt A point in world space to check.\n * @param viewport A viewport of the viewer.\n * @returns `true` if the world point is occluded. `false` otherwise.\n */\n public isOccluded(worldPt: Vector3.Vector3, viewport: Viewport): boolean {\n // Calculate the distance from the camera to the given world point\n const distanceToPoint = this.distanceToPoint(worldPt);\n\n // Find the depth of the closest geometry at the same point on the screen\n const depthOfClosestGeometry = this.depthOfClosestGeometry(\n worldPt,\n viewport\n );\n\n // Allow for a small rounding error\n // Note that if the world point is coincident with the geometry,\n // we want to err on the side of returning not occluded\n const allowableDifference = Math.abs(0.02 * distanceToPoint);\n const depthDifference = Math.abs(depthOfClosestGeometry - distanceToPoint);\n\n return (\n distanceToPoint > depthOfClosestGeometry &&\n depthDifference > allowableDifference\n );\n }\n\n /**\n * Returns `true` if the given point in world space is detached from geometry.\n *\n * @param worldPt A point in world space to check.\n * @param viewport A viewport of the viewer.\n * @returns `true` if the world point is detached from geometry. `false` otherwise.\n */\n public isDetached(worldPt: Vector3.Vector3, viewport: Viewport): boolean {\n // Calculate the distance from the camera to the given world point\n const distanceToPoint = this.distanceToPoint(worldPt);\n\n // Find the depth of the closest geometry at the same point on the screen\n const depthOfClosestGeometry = this.depthOfClosestGeometry(\n worldPt,\n viewport\n );\n\n // If distanceFromClosestGeometryToPoint is 0, then the point is directly on the surface of the\n // closest geometry and is not detached. This method allows for a small rounding\n // error when the point is slightly closer to the camera than the geometry.\n const distanceFromClosestGeometryToPoint =\n depthOfClosestGeometry - distanceToPoint;\n const allowableDifferenceToStillBeOnSurface = 0.02 * distanceToPoint;\n const pointIsOnSurface =\n distanceFromClosestGeometryToPoint <\n allowableDifferenceToStillBeOnSurface;\n\n // Check to see if the given world point is behind the far plane,\n // or that the depth of the point is greater than the maximum depth of visible geometry\n const maximumDepthOfVisibleGeometry = this.getMaxDepthOfGeometry();\n const pointIsBehindFarPlane =\n distanceToPoint > maximumDepthOfVisibleGeometry;\n\n const isDetachedFromGeometry = !pointIsOnSurface || pointIsBehindFarPlane;\n return isDetachedFromGeometry;\n }\n}\n"]}
|
|
1
|
+
{"version":3,"file":"depthBuffer.js","sourceRoot":"","sources":["../../../../../src/lib/types/depthBuffer.ts"],"names":[],"mappings":"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","sourcesContent":["import { Point, Ray } from '@vertexvis/geometry';\nimport { Vector3 } from '@vertexvis/geometry';\nimport type { DecodedPng } from 'fast-png';\n\nimport { FrameCameraBase, FrameImageLike, ImageAttributesLike } from './frame';\nimport { Viewport } from './viewport';\n\n/**\n * A `DepthBuffer` represents the depth information for a rendered frame. This\n * depth information can be used for checking if a world point is occluded by\n * geometry or getting a world position from a 2D viewport point without having\n * to do a server call.\n *\n * A depth buffer is represented by a 16-bit typed array, where each value is\n * a relative distance between the camera's near and far planes.\n */\nexport class DepthBuffer implements FrameImageLike {\n /**\n * A constant that specifies the maximum depth value that can be represented\n * by a depth buffer.\n */\n public static MAX_DEPTH_VALUE = 2 ** 16 - 1;\n\n /**\n * Constructs a new depth buffer.\n *\n * @param camera The camera data that generated this depth buffer.\n * @param imageAttr The attributes of the depth buffer image.\n * @param pixels A 16-bit typed array of depth values.\n */\n public constructor(\n public readonly camera: FrameCameraBase,\n public readonly imageAttr: ImageAttributesLike,\n public readonly pixels: Uint16Array,\n ) {}\n\n /**\n * Creates a `DepthBuffer` from a decoded PNG.\n *\n * @param png An object containing the width, height and raw PNG data.\n * @param camera The camera that generated the depth buffer image.\n * @param imageAttr The attributes of the depth buffer image.\n * @throws If the PNG is not a single channel, 16-bit image.\n * @returns A depth buffer.\n */\n public static fromPng(\n png: Pick<DecodedPng, 'data'>,\n camera: FrameCameraBase,\n imageAttr: ImageAttributesLike,\n ): DepthBuffer {\n if (png.data instanceof Uint16Array) {\n return new DepthBuffer(camera, imageAttr, png.data);\n } else {\n throw new Error('Expected depth PNG to have depth of 16-bit');\n }\n }\n\n /**\n * Computes the depth from a 2D point within the coordinate space of the depth\n * buffer.\n *\n * For perspective cameras, the returned depth is a value that's between\n * the near and far planes of the camera.\n\n * For orthographic cameras, the returned depth is a value that's between\n * 0 and the distance between the near and far planes of the camera.\n *\n * @param point A 2D point within the viewport.\n * @param fallbackNormalizedDepth A fallback value if the depth is the max\n * depth value, or cannot be determined.\n * @returns The depth at the point.\n */\n public getDepthAtPoint(\n point: Point.Point,\n fallbackNormalizedDepth?: number,\n ): number {\n const { near, far } = this.camera;\n const isPerspectiveCamera = this.camera.isPerspective();\n\n const depth = this.getNormalizedDepthAtPoint(\n point,\n fallbackNormalizedDepth,\n );\n\n if (isPerspectiveCamera) {\n return depth * (far - near) + near;\n } else {\n return depth * (far - near);\n }\n }\n\n /**\n * Computes the maximum depth of visible geometry within the coordinate\n * space of the depth buffer.\n *\n * For perspective cameras, the maximum depth is the magnitude\n * of the far plane of the camera.\n *\n * For orthographic cameras, the maximum depth is the distance between\n * the near and far planes of the camera.\n *\n * @returns The maximum depth of visible geometry.\n */\n public getMaxDepthOfGeometry(): number {\n const { near, far } = this.camera;\n const isPerspectiveCamera = this.camera.isPerspective();\n\n if (isPerspectiveCamera) {\n return far;\n } else {\n return far - near;\n }\n }\n\n /**\n * Computes a depth from a 2D point within the coordinate space of the frame.\n * The returned depth is a normalized value (`[0, 1]`) between the near and\n * far plane.\n *\n * @param point A 2D point within the frame.\n * @param fallbackNormalizedDepth A fallback value if the depth is the max\n * depth value, or cannot be determined.\n * @returns A depth between 0 and 1.\n */\n public getNormalizedDepthAtPoint(\n point: Point.Point,\n fallbackNormalizedDepth?: number,\n ): number {\n const { width, height } = this.imageAttr.imageRect;\n\n const offset = Point.subtract(point, this.imageAttr.imageRect);\n const scale = 1 / this.imageAttr.imageScale;\n const pixel = Point.scale(offset, scale, scale);\n\n if (pixel.x >= 0 && pixel.y >= 0 && pixel.x < width && pixel.y < height) {\n const index = Math.floor(pixel.x) + Math.floor(pixel.y) * width;\n const depth = this.pixels[index];\n\n const depthOrFallback =\n depth === DepthBuffer.MAX_DEPTH_VALUE\n ? (fallbackNormalizedDepth ?? depth)\n : depth;\n return (\n (depthOrFallback ?? DepthBuffer.MAX_DEPTH_VALUE) /\n DepthBuffer.MAX_DEPTH_VALUE\n );\n } else {\n return fallbackNormalizedDepth ?? 1;\n }\n }\n\n /**\n * Returns `true` if the point is in front of the far plane and the point is\n * inside the frame. This method is useful for checking if geometry exists at\n * a given 2D coordinate.\n *\n * @param point A 2D point within the frame.\n * @returns `true` if point is in front of far plane.\n */\n public hitTest(point: Point.Point): boolean {\n return this.getNormalizedDepthAtPoint(point) < 1;\n }\n\n /**\n * Computes a 3D point in world space coordinates from the depth value at the\n * given pixel and ray.\n *\n * @param point A pixel to use for reading a depth value.\n * @param ray A ray that specifies the origin and direction.\n * @param fallbackNormalizedDepth A fallback value if the depth is the max\n * depth value, or cannot be determined.\n * @returns A point in world space coordinates.\n */\n public getWorldPoint(\n point: Point.Point,\n ray: Ray.Ray,\n fallbackNormalizedDepth?: number,\n ): Vector3.Vector3 {\n const distance = this.getDepthAtPoint(point, fallbackNormalizedDepth);\n\n const isPerspectiveCamera = this.camera.isPerspective();\n if (isPerspectiveCamera) {\n const { position, viewVector: vv, far } = this.camera;\n\n // Compute the world position along the ray at the far plane.\n // This is used to determine the angle with the view vector.\n const worldPt = Ray.at(ray, far);\n const eyeToWorldPt = Vector3.subtract(worldPt, position);\n\n const angle =\n Vector3.dot(vv, eyeToWorldPt) /\n (Vector3.magnitude(vv) * Vector3.magnitude(eyeToWorldPt));\n return Ray.at(ray, distance / angle);\n } else {\n return Ray.at(ray, distance);\n }\n }\n\n /**\n * Returns the distance from the camera to the given world point.\n *\n * @param worldPt A point in world space to determine the distance to.\n * @returns distance from the camera to the given world point.\n */\n public distanceToPoint(worldPt: Vector3.Vector3): number {\n const { position, direction } = this.camera;\n\n // Calculate the distance from the camera to the given world point\n // Use the dot product to find the magnitude of the orthogonal component\n const eyeToPoint = Vector3.subtract(worldPt, position);\n return Math.abs(Vector3.dot(eyeToPoint, direction));\n }\n\n /**\n * Returns the depth of the closest geometry at the point in the\n * viewport (2D) corresponding to the given world point (3D).\n *\n * @param worldPt A point in world space to check.\n * @param viewport A viewport of the viewer.\n * @returns depth of the closest geometry at the corresponding point in the viewport.\n */\n public depthOfClosestGeometry(\n worldPt: Vector3.Vector3,\n viewport: Viewport,\n ): number {\n const { projectionViewMatrix } = this.camera;\n\n // Find the screen point corresponding to the world point for the current camera\n const screenPt = viewport.transformWorldToViewport(\n worldPt,\n projectionViewMatrix,\n );\n const scaledPt = viewport.transformPointToFrame(screenPt, this);\n\n // Find the depth of the closest geometry at the same point on the screen\n return this.getDepthAtPoint(scaledPt);\n }\n\n /**\n * Returns `true` if the given point in world space is occluded by any\n * geometry.\n *\n * @param worldPt A point in world space to check.\n * @param viewport A viewport of the viewer.\n * @returns `true` if the world point is occluded. `false` otherwise.\n */\n public isOccluded(worldPt: Vector3.Vector3, viewport: Viewport): boolean {\n // Calculate the distance from the camera to the given world point\n const distanceToPoint = this.distanceToPoint(worldPt);\n\n // Find the depth of the closest geometry at the same point on the screen\n const depthOfClosestGeometry = this.depthOfClosestGeometry(\n worldPt,\n viewport,\n );\n\n // Allow for a small rounding error\n // Note that if the world point is coincident with the geometry,\n // we want to err on the side of returning not occluded\n const allowableDifference = Math.abs(0.02 * distanceToPoint);\n const depthDifference = Math.abs(depthOfClosestGeometry - distanceToPoint);\n\n return (\n distanceToPoint > depthOfClosestGeometry &&\n depthDifference > allowableDifference\n );\n }\n\n /**\n * Returns `true` if the given point in world space is detached from geometry.\n *\n * @param worldPt A point in world space to check.\n * @param viewport A viewport of the viewer.\n * @returns `true` if the world point is detached from geometry. `false` otherwise.\n */\n public isDetached(worldPt: Vector3.Vector3, viewport: Viewport): boolean {\n // Calculate the distance from the camera to the given world point\n const distanceToPoint = this.distanceToPoint(worldPt);\n\n // Find the depth of the closest geometry at the same point on the screen\n const depthOfClosestGeometry = this.depthOfClosestGeometry(\n worldPt,\n viewport,\n );\n\n // If distanceFromClosestGeometryToPoint is 0, then the point is directly on the surface of the\n // closest geometry and is not detached. This method allows for a small rounding\n // error when the point is slightly closer to the camera than the geometry.\n const distanceFromClosestGeometryToPoint =\n depthOfClosestGeometry - distanceToPoint;\n const allowableDifferenceToStillBeOnSurface = 0.02 * distanceToPoint;\n const pointIsOnSurface =\n distanceFromClosestGeometryToPoint <\n allowableDifferenceToStillBeOnSurface;\n\n // Check to see if the given world point is behind the far plane,\n // or that the depth of the point is greater than the maximum depth of visible geometry\n const maximumDepthOfVisibleGeometry = this.getMaxDepthOfGeometry();\n const pointIsBehindFarPlane =\n distanceToPoint > maximumDepthOfVisibleGeometry;\n\n const isDetachedFromGeometry = !pointIsOnSurface || pointIsBehindFarPlane;\n return isDetachedFromGeometry;\n }\n}\n"]}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"featureMap.js","sourceRoot":"","sources":["../../../../../src/lib/types/featureMap.ts"],"names":[],"mappings":"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","sourcesContent":["import { Point, Rectangle } from '@vertexvis/geometry';\nimport { Color } from '@vertexvis/utils';\nimport type { DecodedPng } from 'fast-png';\n\nimport { EntityType } from './entities';\nimport { FrameImageLike, ImageAttributesLike } from './frame';\n\n/**\n * A `FeatureMap` contains metadata about the location of entities and features\n * rendered in a scene. This metadata includes any surfaces, edges, cross\n * sections and BREP.\n */\nexport class FeatureMap implements FrameImageLike {\n /**\n * Constructor.\n *\n * @param pixels The PNG containing feature information of a frame.\n * @param imageAttr The attributes of the feature map image.\n */\n public constructor(\n private readonly pixels: Uint8Array,\n public readonly imageAttr: ImageAttributesLike
|
|
1
|
+
{"version":3,"file":"featureMap.js","sourceRoot":"","sources":["../../../../../src/lib/types/featureMap.ts"],"names":[],"mappings":"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","sourcesContent":["import { Point, Rectangle } from '@vertexvis/geometry';\nimport { Color } from '@vertexvis/utils';\nimport type { DecodedPng } from 'fast-png';\n\nimport { EntityType } from './entities';\nimport { FrameImageLike, ImageAttributesLike } from './frame';\n\n/**\n * A `FeatureMap` contains metadata about the location of entities and features\n * rendered in a scene. This metadata includes any surfaces, edges, cross\n * sections and BREP.\n */\nexport class FeatureMap implements FrameImageLike {\n /**\n * Constructor.\n *\n * @param pixels The PNG containing feature information of a frame.\n * @param imageAttr The attributes of the feature map image.\n */\n public constructor(\n private readonly pixels: Uint8Array,\n public readonly imageAttr: ImageAttributesLike,\n ) {}\n\n /**\n * Constructs a new `FeatureMap` from a decoded PNG.\n *\n * @param png The decoded PNG data.\n * @param imageAttr The image attributes of the frame.\n * @returns A new feature map.\n */\n public static fromPng(\n png: Pick<DecodedPng, 'data' | 'width' | 'height' | 'channels'>,\n imageAttr: ImageAttributesLike,\n ): FeatureMap {\n if (!(png.data instanceof Uint8Array)) {\n throw new Error(\n 'Cannot create FeatureMap. Expected decoded PNG to be a Uint8Array.',\n );\n } else if (png.channels !== 4) {\n throw new Error('Cannot create FeatureMap. Missing alpha channel.');\n } else {\n return new FeatureMap(png.data, {\n ...imageAttr,\n // TODO(dan): Need to change frame protos to include image attributes\n // per image artifact.\n imageRect: Rectangle.fromPointAndDimensions(imageAttr.imageRect, png),\n });\n }\n }\n\n /**\n * Returns the type of entity at the given frame location. If no entity is\n * found, then `undefined` is returned.\n *\n * @param point The point to query.\n * @returns The type of entity at the given location, or `undefined` if no\n * entity exists.\n */\n public getEntityType(point: Point.Point): EntityType {\n const color = this.getColor(point);\n\n if (color?.a === EntityType.CROSS_SECTION) {\n return EntityType.CROSS_SECTION;\n } else if (color?.a === EntityType.GENERIC_GEOMETRY) {\n return EntityType.GENERIC_GEOMETRY;\n } else if (color?.a === EntityType.IMPRECISE_EDGE) {\n return EntityType.IMPRECISE_EDGE;\n } else if (color?.a === EntityType.IMPRECISE_SURFACE) {\n return EntityType.IMPRECISE_SURFACE;\n } else if (color?.a === EntityType.PRECISE_EDGE) {\n return EntityType.PRECISE_EDGE;\n } else if (color?.a === EntityType.PRECISE_SURFACE) {\n return EntityType.PRECISE_SURFACE;\n } else {\n return EntityType.NO_GEOMETRY;\n }\n }\n\n private getColor(point: Point.Point): Color.Color | undefined {\n const { width, height } = this.imageAttr.imageRect;\n\n const offset = Point.subtract(point, this.imageAttr.imageRect);\n const scale = 1 / this.imageAttr.imageScale;\n const pixel = Point.scale(offset, scale, scale);\n\n if (pixel.x >= 0 && pixel.y >= 0 && pixel.x < width && pixel.y < height) {\n const index = Math.floor(pixel.x) * 4 + Math.floor(pixel.y) * 4 * width;\n\n const r = this.pixels[index];\n const g = this.pixels[index + 1];\n const b = this.pixels[index + 2];\n const a = this.pixels[index + 3];\n\n return Color.create(r, g, b, a);\n } else return undefined;\n }\n}\n"]}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"flags.js","sourceRoot":"","sources":["../../../../../src/lib/types/flags.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,kBAAkB,CAAC;AA6C3C,MAAM,CAAC,MAAM,YAAY,GAAU;IACjC,qBAAqB,EAAE,IAAI;IAC3B,iBAAiB,EAAE,IAAI;IACvB,aAAa,EAAE,KAAK;IACpB,YAAY,EAAE,KAAK;IACnB,eAAe,EAAE,KAAK;IACtB,kCAAkC,EAAE,IAAI;CACzC,CAAC;AAEF,MAAM,UAAU,WAAW,CACzB,QAAwB,EACxB,YAA4B,YAAY;IAExC,OAAO,OAAO,CAAC,QAAQ,CAAC,QAAQ,EAAE,SAAS,EAAE,YAAY,CAAC,CAAC;AAC7D,CAAC","sourcesContent":["import { Objects } from '@vertexvis/utils';\n\ntype Flag =\n /**\n * Enables or disables a throttling of image delivery based on detected\n * network conditions.\n */\n | 'throttleFrameDelivery'\n\n /**\n * Enables or disables automatic quality adjustments of rendered frames to\n * improve the performance of delivering frames to the client.\n */\n | 'adaptiveRendering'\n\n /**\n * Enables or disables logging of WS message payloads.\n */\n | 'logWsMessages'\n\n /**\n * Toggles the logging of frame rates.\n */\n | 'logFrameRate'\n\n /**\n * Enables or disables the letterboxing of frames when the host dimensions\n * are larger than the supported maximum image size (1080p). By default\n * this option is disabled, and images will be scaled up to match the host.\n */\n | 'letterboxFrames'\n\n /**\n * Enables or disables the use of the `grpc.WebsocketTransport` for streaming\n * RPCs. By default this transport will be used, and streaming messages will\n * be sent over WebSocket.\n */\n | 'grpcUseStreamingWebSocketTransport';\n\n/**\n * A set of experimental features that can be enabled through the viewer's\n * config.\n */\nexport type Flags = { [K in Flag]: boolean };\n\nexport const defaultFlags: Flags = {\n throttleFrameDelivery: true,\n adaptiveRendering: true,\n logWsMessages: false,\n logFrameRate: false,\n letterboxFrames: false,\n grpcUseStreamingWebSocketTransport: true,\n};\n\nexport function createFlags(\n features: Partial<Flags>,\n fallbacks: Partial<Flags> = defaultFlags
|
|
1
|
+
{"version":3,"file":"flags.js","sourceRoot":"","sources":["../../../../../src/lib/types/flags.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,kBAAkB,CAAC;AA6C3C,MAAM,CAAC,MAAM,YAAY,GAAU;IACjC,qBAAqB,EAAE,IAAI;IAC3B,iBAAiB,EAAE,IAAI;IACvB,aAAa,EAAE,KAAK;IACpB,YAAY,EAAE,KAAK;IACnB,eAAe,EAAE,KAAK;IACtB,kCAAkC,EAAE,IAAI;CACzC,CAAC;AAEF,MAAM,UAAU,WAAW,CACzB,QAAwB,EACxB,YAA4B,YAAY;IAExC,OAAO,OAAO,CAAC,QAAQ,CAAC,QAAQ,EAAE,SAAS,EAAE,YAAY,CAAC,CAAC;AAC7D,CAAC","sourcesContent":["import { Objects } from '@vertexvis/utils';\n\ntype Flag =\n /**\n * Enables or disables a throttling of image delivery based on detected\n * network conditions.\n */\n | 'throttleFrameDelivery'\n\n /**\n * Enables or disables automatic quality adjustments of rendered frames to\n * improve the performance of delivering frames to the client.\n */\n | 'adaptiveRendering'\n\n /**\n * Enables or disables logging of WS message payloads.\n */\n | 'logWsMessages'\n\n /**\n * Toggles the logging of frame rates.\n */\n | 'logFrameRate'\n\n /**\n * Enables or disables the letterboxing of frames when the host dimensions\n * are larger than the supported maximum image size (1080p). By default\n * this option is disabled, and images will be scaled up to match the host.\n */\n | 'letterboxFrames'\n\n /**\n * Enables or disables the use of the `grpc.WebsocketTransport` for streaming\n * RPCs. By default this transport will be used, and streaming messages will\n * be sent over WebSocket.\n */\n | 'grpcUseStreamingWebSocketTransport';\n\n/**\n * A set of experimental features that can be enabled through the viewer's\n * config.\n */\nexport type Flags = { [K in Flag]: boolean };\n\nexport const defaultFlags: Flags = {\n throttleFrameDelivery: true,\n adaptiveRendering: true,\n logWsMessages: false,\n logFrameRate: false,\n letterboxFrames: false,\n grpcUseStreamingWebSocketTransport: true,\n};\n\nexport function createFlags(\n features: Partial<Flags>,\n fallbacks: Partial<Flags> = defaultFlags,\n): Flags {\n return Objects.defaults(features, fallbacks, defaultFlags);\n}\n"]}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"frame.js","sourceRoot":"","sources":["../../../../../src/lib/types/frame.ts"],"names":[],"mappings":"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","sourcesContent":["import {\n BoundingBox,\n BoundingSphere,\n Dimensions,\n Line3,\n Matrix4,\n Plane,\n Rectangle,\n Vector3,\n} from '@vertexvis/geometry';\nimport { UUID } from '@vertexvis/utils';\n\nimport { decodePng } from '../../workers/png-decoder-pool';\nimport {\n constrainViewVector,\n updateLookAtRelativeToBoundingBoxCenter,\n} from '../rendering/vectors';\nimport * as ClippingPlanes from './clippingPlanes';\nimport * as CrossSectioning from './crossSectioning';\nimport { DepthBuffer } from './depthBuffer';\nimport { FeatureMap } from './featureMap';\nimport * as FrameCamera from './frameCamera';\nimport * as ItemModelView from './itemModelView';\nimport { Orientation } from './orientation';\nimport * as SceneViewSummary from './sceneViewSummary';\n\nexport class Frame {\n private cachedDepthBuffer?: Promise<DepthBuffer | undefined>;\n private cachedFeatureMap?: Promise<FeatureMap | undefined>;\n\n public constructor(\n public readonly correlationIds: string[],\n public readonly temporalRefinementCorrelationId: string,\n public readonly sequenceNumber: number,\n public readonly dimensions: Dimensions.Dimensions,\n public readonly image: FrameImage,\n public readonly scene: FrameScene,\n public readonly depthBufferBytes: Uint8Array | undefined,\n private readonly featureMapBytes: Uint8Array | undefined,\n public readonly partialFrame: boolean,\n private readonly id = UUID.create()\n ) {}\n\n public getId(): UUID.UUID {\n return this.id;\n }\n\n public async depthBuffer(): Promise<DepthBuffer | undefined> {\n if (this.cachedDepthBuffer == null) {\n this.cachedDepthBuffer =\n this.depthBufferBytes != null\n ? this.decodeDepthBuffer(new Uint8Array(this.depthBufferBytes))\n : Promise.resolve(undefined);\n }\n return this.cachedDepthBuffer;\n }\n\n private async decodeDepthBuffer(bytes: Uint8Array): Promise<DepthBuffer> {\n const png = await decodePng(bytes);\n return DepthBuffer.fromPng(png, this.scene.camera, this.image.imageAttr);\n }\n\n public async featureMap(): Promise<FeatureMap | undefined> {\n if (this.cachedFeatureMap == null) {\n this.cachedFeatureMap =\n this.featureMapBytes != null\n ? this.decodeFeatureMap(new Uint8Array(this.featureMapBytes))\n : Promise.resolve(undefined);\n }\n return this.cachedFeatureMap;\n }\n\n private async decodeFeatureMap(bytes: Uint8Array): Promise<FeatureMap> {\n const png = await decodePng(bytes);\n return FeatureMap.fromPng(png, this.image.imageAttr);\n }\n\n public copy({\n correlationIds,\n temporalRefinementCorrelationId,\n sequenceNumber,\n dimensions,\n image,\n scene,\n depthBufferBytes,\n featureMapBytes,\n partialFrame,\n }: {\n correlationIds?: string[];\n temporalRefinementCorrelationId?: string;\n sequenceNumber?: number;\n dimensions?: Dimensions.Dimensions;\n image?: FrameImage;\n scene?: FrameScene;\n depthBufferBytes?: Uint8Array;\n featureMapBytes?: Uint8Array;\n partialFrame?: boolean;\n }): Frame {\n return new Frame(\n correlationIds ?? this.correlationIds,\n temporalRefinementCorrelationId ?? this.temporalRefinementCorrelationId,\n sequenceNumber ?? this.sequenceNumber,\n dimensions ?? this.dimensions,\n image ?? this.image,\n scene ?? this.scene,\n depthBufferBytes ?? this.depthBufferBytes,\n featureMapBytes ?? this.featureMapBytes,\n partialFrame ?? this.partialFrame,\n this.id\n );\n }\n}\n\nexport interface FrameImageLike {\n readonly imageAttr: ImageAttributesLike;\n}\n\nexport interface ImageAttributesLike {\n readonly frameDimensions: Dimensions.Dimensions;\n readonly imageRect: Rectangle.Rectangle;\n readonly imageScale: number;\n}\n\nexport class FrameImage implements FrameImageLike {\n public constructor(\n public readonly imageAttr: ImageAttributesLike,\n public readonly imageBytes: Uint8Array\n ) {}\n}\n\nexport class FrameScene {\n public constructor(\n public readonly camera: FrameCameraBase,\n public readonly boundingBox: BoundingBox.BoundingBox,\n public readonly crossSection: CrossSectioning.CrossSectioning,\n public readonly worldOrientation: Orientation,\n public readonly hasChanged: boolean,\n public readonly sceneViewSummary: SceneViewSummary.SceneViewSummary,\n public readonly modelViewId: UUID.UUID | undefined,\n public readonly itemModelView: ItemModelView.ItemModelView | undefined\n ) {}\n\n public copy({\n camera,\n boundingBox,\n crossSection,\n worldOrientation,\n hasChanged,\n sceneViewSummary,\n modelViewId,\n itemModelView,\n }: Partial<{\n camera: FrameCameraBase;\n boundingBox: BoundingBox.BoundingBox;\n crossSection: CrossSectioning.CrossSectioning;\n worldOrientation: Orientation;\n hasChanged: boolean;\n sceneViewSummary: SceneViewSummary.SceneViewSummary;\n modelViewId: UUID.UUID | undefined;\n itemModelView: ItemModelView.ItemModelView;\n }>): FrameScene {\n return new FrameScene(\n camera ?? this.camera,\n boundingBox ?? this.boundingBox,\n crossSection ?? this.crossSection,\n worldOrientation ?? this.worldOrientation,\n hasChanged ?? this.hasChanged,\n sceneViewSummary ?? this.sceneViewSummary,\n modelViewId ?? this.modelViewId,\n itemModelView ?? this.itemModelView\n );\n }\n}\n\ninterface FrameCameraMatrices {\n readonly projectionMatrix: Matrix4.Matrix4;\n readonly projectionMatrixInverse: Matrix4.Matrix4;\n readonly projectionViewMatrix: Matrix4.Matrix4;\n readonly viewMatrix: Matrix4.Matrix4;\n readonly worldMatrix: Matrix4.Matrix4;\n}\n\nexport class FrameCameraBase {\n protected cameraMatrices?: FrameCameraMatrices;\n\n public constructor(\n public readonly position: Vector3.Vector3,\n public readonly lookAt: Vector3.Vector3,\n public readonly up: Vector3.Vector3,\n public readonly near: number,\n public readonly far: number,\n public readonly aspectRatio: number\n ) {}\n\n public get direction(): Vector3.Vector3 {\n return Vector3.normalize(this.viewVector);\n }\n\n public get viewVector(): Vector3.Vector3 {\n return Vector3.subtract(this.lookAt, this.position);\n }\n\n public get worldMatrix(): Matrix4.Matrix4 {\n return this.computeCameraMatrices().worldMatrix;\n }\n\n public get viewMatrix(): Matrix4.Matrix4 {\n return this.computeCameraMatrices().viewMatrix;\n }\n\n public get projectionMatrix(): Matrix4.Matrix4 {\n return this.computeCameraMatrices().projectionMatrix;\n }\n\n public get projectionMatrixInverse(): Matrix4.Matrix4 {\n return this.computeCameraMatrices().projectionMatrixInverse;\n }\n\n public get projectionViewMatrix(): Matrix4.Matrix4 {\n return this.computeCameraMatrices().projectionViewMatrix;\n }\n\n public get frustumProjectionViewMatrix(): Matrix4.Matrix4 {\n return this.computeCameraMatrices().projectionViewMatrix;\n }\n\n public static fromBoundingBox(\n camera: FrameCamera.FrameCamera,\n boundingBox: BoundingBox.BoundingBox,\n aspectRatio: number\n ): FrameCameraBase {\n const { near, far } = ClippingPlanes.fromBoundingBoxAndLookAtCamera(\n boundingBox,\n camera\n );\n\n if (FrameCamera.isOrthographicFrameCamera(camera)) {\n const boundingSphere = BoundingSphere.create(boundingBox);\n const viewVector = constrainViewVector(camera.viewVector, boundingSphere);\n const lookAt = updateLookAtRelativeToBoundingBoxCenter(\n camera.lookAt,\n viewVector,\n boundingSphere.center\n );\n\n return new FrameOrthographicCamera(\n viewVector,\n lookAt,\n camera.up,\n near,\n far,\n aspectRatio,\n camera.fovHeight,\n camera.rotationPoint\n );\n } else {\n return new FramePerspectiveCamera(\n camera.position,\n camera.lookAt,\n camera.up,\n near,\n far,\n aspectRatio,\n camera.fovY ?? 45\n );\n }\n }\n\n /**\n * Returns whether this `FrameCameraBase` is an orthographic camera.\n */\n public isOrthographic(): this is FrameOrthographicCamera {\n return false;\n }\n\n /**\n * Returns whether this `FrameCameraBase` is a perspective camera.\n */\n public isPerspective(): this is FramePerspectiveCamera {\n return false;\n }\n\n /**\n * Checks if the given point, in world space, is behind the near plane\n * of the camera.\n *\n * @param world A point in world space.\n * @returns `true` if the point is behind the camera.\n */\n public isPointBehindNear(world: Vector3.Vector3): boolean {\n const { position, direction, near } = this;\n const dist = Vector3.dot(Vector3.subtract(world, position), direction);\n return dist < near;\n }\n\n /**\n * Returns a point on the near plane that intersects with `line`. If `line`\n * does not intersect, then `undefined` is returned.\n *\n * @param line The line to intersect.\n * @returns A point in world space, or `undefined` if the line does not\n * intersect with the near plane.\n */\n public intersectLineWithNear(line: Line3.Line3): Vector3.Vector3 | undefined {\n const { position, direction, near } = this;\n\n const vs = Vector3.subtract(line.start, position);\n const ve = Vector3.subtract(line.end, position);\n const vl = Line3.create({ start: vs, end: ve });\n\n const nearP = Plane.create({ normal: direction, constant: -near });\n const pt = Plane.intersectLine(nearP, vl);\n\n return pt != null ? Vector3.add(pt, position) : undefined;\n }\n\n protected computeCameraMatrices(): FrameCameraMatrices {\n if (this.cameraMatrices == null) {\n return {\n viewMatrix: Matrix4.makeIdentity(),\n worldMatrix: Matrix4.makeIdentity(),\n projectionMatrix: Matrix4.makeIdentity(),\n projectionMatrixInverse: Matrix4.makeIdentity(),\n projectionViewMatrix: Matrix4.makeIdentity(),\n };\n }\n return this.cameraMatrices;\n }\n\n protected updateCameraMatrices(\n cameraMatrices: FrameCameraMatrices\n ): FrameCameraMatrices {\n this.cameraMatrices = cameraMatrices;\n\n return this.cameraMatrices;\n }\n}\n\nexport interface FrameCameraWithMatrices extends FrameCameraBase {\n readonly direction: Vector3.Vector3;\n readonly viewVector: Vector3.Vector3;\n readonly worldMatrix: Matrix4.Matrix4;\n readonly viewMatrix: Matrix4.Matrix4;\n readonly projectionMatrix: Matrix4.Matrix4;\n readonly projectionMatrixInverse: Matrix4.Matrix4;\n readonly projectionViewMatrix: Matrix4.Matrix4;\n}\n\nexport class FramePerspectiveCamera extends FrameCameraBase {\n public constructor(\n public readonly position: Vector3.Vector3,\n public readonly lookAt: Vector3.Vector3,\n public readonly up: Vector3.Vector3,\n public readonly near: number,\n public readonly far: number,\n public readonly aspectRatio: number,\n public readonly fovY: number\n ) {\n super(position, lookAt, up, near, far, aspectRatio);\n }\n\n /**\n * Converts this `FramePerspectiveCamera` to a `FrameOrthographicCamera` using\n * the provided `boundingBox` to compute the viewing frustum.\n *\n * @param boundingBox The visible bounding box.\n */\n public toOrthographic(boundingBox: BoundingBox.BoundingBox): FrameCameraBase {\n return FrameCameraBase.fromBoundingBox(\n FrameCamera.toOrthographic(this, boundingBox),\n boundingBox,\n this.aspectRatio\n );\n }\n\n public override isPerspective(): this is FramePerspectiveCamera {\n return true;\n }\n\n protected override computeCameraMatrices(): FrameCameraMatrices {\n if (this.cameraMatrices == null) {\n const viewMatrix = Matrix4.makeLookAtView(\n this.position,\n this.lookAt,\n this.up\n );\n const worldMatrix = Matrix4.invert(viewMatrix);\n const projectionMatrix = Matrix4.makePerspective(\n this.near,\n this.far,\n this.fovY,\n this.aspectRatio\n );\n const projectionMatrixInverse = Matrix4.invert(projectionMatrix);\n const projectionViewMatrix = Matrix4.multiply(\n projectionMatrix,\n viewMatrix\n );\n\n return super.updateCameraMatrices({\n viewMatrix,\n worldMatrix,\n projectionMatrix,\n projectionMatrixInverse,\n projectionViewMatrix,\n });\n }\n return this.cameraMatrices;\n }\n}\n\nexport class FrameOrthographicCamera extends FrameCameraBase {\n public readonly top: number;\n public readonly bottom: number;\n public readonly right: number;\n public readonly left: number;\n\n public constructor(\n viewVector: Vector3.Vector3,\n public readonly lookAt: Vector3.Vector3,\n public readonly up: Vector3.Vector3,\n public readonly near: number,\n public readonly far: number,\n public readonly aspectRatio: number,\n public readonly fovHeight: number,\n public readonly rotationPoint?: Vector3.Vector3\n ) {\n super(\n Vector3.add(lookAt, Vector3.negate(viewVector)),\n lookAt,\n up,\n near,\n far,\n aspectRatio\n );\n this.top = fovHeight * 0.5;\n this.bottom = -this.top;\n this.right = this.top * aspectRatio;\n this.left = -this.right;\n }\n\n /**\n * Converts this `FrameOrthographicCamera` to a `FramePerspectiveCamera` using\n * the provided `boundingBox` to compute the near and far clipping planes.\n *\n * @param boundingBox The visible bounding box.\n */\n public toPerspective(boundingBox: BoundingBox.BoundingBox): FrameCameraBase {\n return FrameCameraBase.fromBoundingBox(\n FrameCamera.toPerspective(this),\n boundingBox,\n this.aspectRatio\n );\n }\n\n public override isOrthographic(): this is FrameOrthographicCamera {\n return true;\n }\n\n public override get frustumProjectionViewMatrix(): Matrix4.Matrix4 {\n const frustumProjectionMatrix = Matrix4.makeFrustum(\n this.left,\n this.right,\n this.top,\n this.bottom,\n this.near,\n this.far\n );\n return Matrix4.multiply(\n frustumProjectionMatrix,\n this.computeCameraMatrices().viewMatrix\n );\n }\n\n protected override computeCameraMatrices(): FrameCameraMatrices {\n if (this.cameraMatrices == null) {\n const viewMatrix = Matrix4.makeLookAtView(\n this.position,\n this.lookAt,\n this.up\n );\n const worldMatrix = Matrix4.invert(viewMatrix);\n const projectionMatrix = Matrix4.makeOrthographic(\n this.left,\n this.right,\n this.bottom,\n this.top,\n this.near,\n this.far\n );\n const projectionMatrixInverse = Matrix4.invert(projectionMatrix);\n const projectionViewMatrix = Matrix4.multiply(\n projectionMatrix,\n viewMatrix\n );\n\n return super.updateCameraMatrices({\n viewMatrix,\n worldMatrix,\n projectionMatrix,\n projectionMatrixInverse,\n projectionViewMatrix,\n });\n }\n return this.cameraMatrices;\n }\n}\n"]}
|
|
1
|
+
{"version":3,"file":"frame.js","sourceRoot":"","sources":["../../../../../src/lib/types/frame.ts"],"names":[],"mappings":"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","sourcesContent":["import {\n BoundingBox,\n BoundingSphere,\n Dimensions,\n Line3,\n Matrix4,\n Plane,\n Rectangle,\n Vector3,\n} from '@vertexvis/geometry';\nimport { UUID } from '@vertexvis/utils';\n\nimport { decodePng } from '../../workers/png-decoder-pool';\nimport {\n constrainViewVector,\n updateLookAtRelativeToBoundingBoxCenter,\n} from '../rendering/vectors';\nimport * as ClippingPlanes from './clippingPlanes';\nimport * as CrossSectioning from './crossSectioning';\nimport { DepthBuffer } from './depthBuffer';\nimport { FeatureMap } from './featureMap';\nimport * as FrameCamera from './frameCamera';\nimport * as ItemModelView from './itemModelView';\nimport { Orientation } from './orientation';\nimport * as SceneViewSummary from './sceneViewSummary';\n\nexport class Frame {\n private cachedDepthBuffer?: Promise<DepthBuffer | undefined>;\n private cachedFeatureMap?: Promise<FeatureMap | undefined>;\n\n public constructor(\n public readonly correlationIds: string[],\n public readonly temporalRefinementCorrelationId: string,\n public readonly sequenceNumber: number,\n public readonly dimensions: Dimensions.Dimensions,\n public readonly image: FrameImage,\n public readonly scene: FrameScene,\n public readonly depthBufferBytes: Uint8Array | undefined,\n private readonly featureMapBytes: Uint8Array | undefined,\n public readonly partialFrame: boolean,\n private readonly id = UUID.create(),\n ) {}\n\n public getId(): UUID.UUID {\n return this.id;\n }\n\n public async depthBuffer(): Promise<DepthBuffer | undefined> {\n if (this.cachedDepthBuffer == null) {\n this.cachedDepthBuffer =\n this.depthBufferBytes != null\n ? this.decodeDepthBuffer(new Uint8Array(this.depthBufferBytes))\n : Promise.resolve(undefined);\n }\n return this.cachedDepthBuffer;\n }\n\n private async decodeDepthBuffer(bytes: Uint8Array): Promise<DepthBuffer> {\n const png = await decodePng(bytes);\n return DepthBuffer.fromPng(png, this.scene.camera, this.image.imageAttr);\n }\n\n public async featureMap(): Promise<FeatureMap | undefined> {\n if (this.cachedFeatureMap == null) {\n this.cachedFeatureMap =\n this.featureMapBytes != null\n ? this.decodeFeatureMap(new Uint8Array(this.featureMapBytes))\n : Promise.resolve(undefined);\n }\n return this.cachedFeatureMap;\n }\n\n private async decodeFeatureMap(bytes: Uint8Array): Promise<FeatureMap> {\n const png = await decodePng(bytes);\n return FeatureMap.fromPng(png, this.image.imageAttr);\n }\n\n public copy({\n correlationIds,\n temporalRefinementCorrelationId,\n sequenceNumber,\n dimensions,\n image,\n scene,\n depthBufferBytes,\n featureMapBytes,\n partialFrame,\n }: {\n correlationIds?: string[];\n temporalRefinementCorrelationId?: string;\n sequenceNumber?: number;\n dimensions?: Dimensions.Dimensions;\n image?: FrameImage;\n scene?: FrameScene;\n depthBufferBytes?: Uint8Array;\n featureMapBytes?: Uint8Array;\n partialFrame?: boolean;\n }): Frame {\n return new Frame(\n correlationIds ?? this.correlationIds,\n temporalRefinementCorrelationId ?? this.temporalRefinementCorrelationId,\n sequenceNumber ?? this.sequenceNumber,\n dimensions ?? this.dimensions,\n image ?? this.image,\n scene ?? this.scene,\n depthBufferBytes ?? this.depthBufferBytes,\n featureMapBytes ?? this.featureMapBytes,\n partialFrame ?? this.partialFrame,\n this.id,\n );\n }\n}\n\nexport interface FrameImageLike {\n readonly imageAttr: ImageAttributesLike;\n}\n\nexport interface ImageAttributesLike {\n readonly frameDimensions: Dimensions.Dimensions;\n readonly imageRect: Rectangle.Rectangle;\n readonly imageScale: number;\n}\n\nexport class FrameImage implements FrameImageLike {\n public constructor(\n public readonly imageAttr: ImageAttributesLike,\n public readonly imageBytes: Uint8Array,\n ) {}\n}\n\nexport class FrameScene {\n public constructor(\n public readonly camera: FrameCameraBase,\n public readonly boundingBox: BoundingBox.BoundingBox,\n public readonly crossSection: CrossSectioning.CrossSectioning,\n public readonly worldOrientation: Orientation,\n public readonly hasChanged: boolean,\n public readonly sceneViewSummary: SceneViewSummary.SceneViewSummary,\n public readonly modelViewId: UUID.UUID | undefined,\n public readonly itemModelView: ItemModelView.ItemModelView | undefined,\n ) {}\n\n public copy({\n camera,\n boundingBox,\n crossSection,\n worldOrientation,\n hasChanged,\n sceneViewSummary,\n modelViewId,\n itemModelView,\n }: Partial<{\n camera: FrameCameraBase;\n boundingBox: BoundingBox.BoundingBox;\n crossSection: CrossSectioning.CrossSectioning;\n worldOrientation: Orientation;\n hasChanged: boolean;\n sceneViewSummary: SceneViewSummary.SceneViewSummary;\n modelViewId: UUID.UUID | undefined;\n itemModelView: ItemModelView.ItemModelView;\n }>): FrameScene {\n return new FrameScene(\n camera ?? this.camera,\n boundingBox ?? this.boundingBox,\n crossSection ?? this.crossSection,\n worldOrientation ?? this.worldOrientation,\n hasChanged ?? this.hasChanged,\n sceneViewSummary ?? this.sceneViewSummary,\n modelViewId ?? this.modelViewId,\n itemModelView ?? this.itemModelView,\n );\n }\n}\n\ninterface FrameCameraMatrices {\n readonly projectionMatrix: Matrix4.Matrix4;\n readonly projectionMatrixInverse: Matrix4.Matrix4;\n readonly projectionViewMatrix: Matrix4.Matrix4;\n readonly viewMatrix: Matrix4.Matrix4;\n readonly worldMatrix: Matrix4.Matrix4;\n}\n\nexport class FrameCameraBase {\n protected cameraMatrices?: FrameCameraMatrices;\n\n public constructor(\n public readonly position: Vector3.Vector3,\n public readonly lookAt: Vector3.Vector3,\n public readonly up: Vector3.Vector3,\n public readonly near: number,\n public readonly far: number,\n public readonly aspectRatio: number,\n ) {}\n\n public get direction(): Vector3.Vector3 {\n return Vector3.normalize(this.viewVector);\n }\n\n public get viewVector(): Vector3.Vector3 {\n return Vector3.subtract(this.lookAt, this.position);\n }\n\n public get worldMatrix(): Matrix4.Matrix4 {\n return this.computeCameraMatrices().worldMatrix;\n }\n\n public get viewMatrix(): Matrix4.Matrix4 {\n return this.computeCameraMatrices().viewMatrix;\n }\n\n public get projectionMatrix(): Matrix4.Matrix4 {\n return this.computeCameraMatrices().projectionMatrix;\n }\n\n public get projectionMatrixInverse(): Matrix4.Matrix4 {\n return this.computeCameraMatrices().projectionMatrixInverse;\n }\n\n public get projectionViewMatrix(): Matrix4.Matrix4 {\n return this.computeCameraMatrices().projectionViewMatrix;\n }\n\n public get frustumProjectionViewMatrix(): Matrix4.Matrix4 {\n return this.computeCameraMatrices().projectionViewMatrix;\n }\n\n public static fromBoundingBox(\n camera: FrameCamera.FrameCamera,\n boundingBox: BoundingBox.BoundingBox,\n aspectRatio: number,\n ): FrameCameraBase {\n const { near, far } = ClippingPlanes.fromBoundingBoxAndLookAtCamera(\n boundingBox,\n camera,\n );\n\n if (FrameCamera.isOrthographicFrameCamera(camera)) {\n const boundingSphere = BoundingSphere.create(boundingBox);\n const viewVector = constrainViewVector(camera.viewVector, boundingSphere);\n const lookAt = updateLookAtRelativeToBoundingBoxCenter(\n camera.lookAt,\n viewVector,\n boundingSphere.center,\n );\n\n return new FrameOrthographicCamera(\n viewVector,\n lookAt,\n camera.up,\n near,\n far,\n aspectRatio,\n camera.fovHeight,\n camera.rotationPoint,\n );\n } else {\n return new FramePerspectiveCamera(\n camera.position,\n camera.lookAt,\n camera.up,\n near,\n far,\n aspectRatio,\n camera.fovY ?? 45,\n );\n }\n }\n\n /**\n * Returns whether this `FrameCameraBase` is an orthographic camera.\n */\n public isOrthographic(): this is FrameOrthographicCamera {\n return false;\n }\n\n /**\n * Returns whether this `FrameCameraBase` is a perspective camera.\n */\n public isPerspective(): this is FramePerspectiveCamera {\n return false;\n }\n\n /**\n * Checks if the given point, in world space, is behind the near plane\n * of the camera.\n *\n * @param world A point in world space.\n * @returns `true` if the point is behind the camera.\n */\n public isPointBehindNear(world: Vector3.Vector3): boolean {\n const { position, direction, near } = this;\n const dist = Vector3.dot(Vector3.subtract(world, position), direction);\n return dist < near;\n }\n\n /**\n * Returns a point on the near plane that intersects with `line`. If `line`\n * does not intersect, then `undefined` is returned.\n *\n * @param line The line to intersect.\n * @returns A point in world space, or `undefined` if the line does not\n * intersect with the near plane.\n */\n public intersectLineWithNear(line: Line3.Line3): Vector3.Vector3 | undefined {\n const { position, direction, near } = this;\n\n const vs = Vector3.subtract(line.start, position);\n const ve = Vector3.subtract(line.end, position);\n const vl = Line3.create({ start: vs, end: ve });\n\n const nearP = Plane.create({ normal: direction, constant: -near });\n const pt = Plane.intersectLine(nearP, vl);\n\n return pt != null ? Vector3.add(pt, position) : undefined;\n }\n\n protected computeCameraMatrices(): FrameCameraMatrices {\n if (this.cameraMatrices == null) {\n return {\n viewMatrix: Matrix4.makeIdentity(),\n worldMatrix: Matrix4.makeIdentity(),\n projectionMatrix: Matrix4.makeIdentity(),\n projectionMatrixInverse: Matrix4.makeIdentity(),\n projectionViewMatrix: Matrix4.makeIdentity(),\n };\n }\n return this.cameraMatrices;\n }\n\n protected updateCameraMatrices(\n cameraMatrices: FrameCameraMatrices,\n ): FrameCameraMatrices {\n this.cameraMatrices = cameraMatrices;\n\n return this.cameraMatrices;\n }\n}\n\nexport interface FrameCameraWithMatrices extends FrameCameraBase {\n readonly direction: Vector3.Vector3;\n readonly viewVector: Vector3.Vector3;\n readonly worldMatrix: Matrix4.Matrix4;\n readonly viewMatrix: Matrix4.Matrix4;\n readonly projectionMatrix: Matrix4.Matrix4;\n readonly projectionMatrixInverse: Matrix4.Matrix4;\n readonly projectionViewMatrix: Matrix4.Matrix4;\n}\n\nexport class FramePerspectiveCamera extends FrameCameraBase {\n public constructor(\n public readonly position: Vector3.Vector3,\n public readonly lookAt: Vector3.Vector3,\n public readonly up: Vector3.Vector3,\n public readonly near: number,\n public readonly far: number,\n public readonly aspectRatio: number,\n public readonly fovY: number,\n ) {\n super(position, lookAt, up, near, far, aspectRatio);\n }\n\n /**\n * Converts this `FramePerspectiveCamera` to a `FrameOrthographicCamera` using\n * the provided `boundingBox` to compute the viewing frustum.\n *\n * @param boundingBox The visible bounding box.\n */\n public toOrthographic(boundingBox: BoundingBox.BoundingBox): FrameCameraBase {\n return FrameCameraBase.fromBoundingBox(\n FrameCamera.toOrthographic(this, boundingBox),\n boundingBox,\n this.aspectRatio,\n );\n }\n\n public override isPerspective(): this is FramePerspectiveCamera {\n return true;\n }\n\n protected override computeCameraMatrices(): FrameCameraMatrices {\n if (this.cameraMatrices == null) {\n const viewMatrix = Matrix4.makeLookAtView(\n this.position,\n this.lookAt,\n this.up,\n );\n const worldMatrix = Matrix4.invert(viewMatrix);\n const projectionMatrix = Matrix4.makePerspective(\n this.near,\n this.far,\n this.fovY,\n this.aspectRatio,\n );\n const projectionMatrixInverse = Matrix4.invert(projectionMatrix);\n const projectionViewMatrix = Matrix4.multiply(\n projectionMatrix,\n viewMatrix,\n );\n\n return super.updateCameraMatrices({\n viewMatrix,\n worldMatrix,\n projectionMatrix,\n projectionMatrixInverse,\n projectionViewMatrix,\n });\n }\n return this.cameraMatrices;\n }\n}\n\nexport class FrameOrthographicCamera extends FrameCameraBase {\n public readonly top: number;\n public readonly bottom: number;\n public readonly right: number;\n public readonly left: number;\n\n public constructor(\n viewVector: Vector3.Vector3,\n public readonly lookAt: Vector3.Vector3,\n public readonly up: Vector3.Vector3,\n public readonly near: number,\n public readonly far: number,\n public readonly aspectRatio: number,\n public readonly fovHeight: number,\n public readonly rotationPoint?: Vector3.Vector3,\n ) {\n super(\n Vector3.add(lookAt, Vector3.negate(viewVector)),\n lookAt,\n up,\n near,\n far,\n aspectRatio,\n );\n this.top = fovHeight * 0.5;\n this.bottom = -this.top;\n this.right = this.top * aspectRatio;\n this.left = -this.right;\n }\n\n /**\n * Converts this `FrameOrthographicCamera` to a `FramePerspectiveCamera` using\n * the provided `boundingBox` to compute the near and far clipping planes.\n *\n * @param boundingBox The visible bounding box.\n */\n public toPerspective(boundingBox: BoundingBox.BoundingBox): FrameCameraBase {\n return FrameCameraBase.fromBoundingBox(\n FrameCamera.toPerspective(this),\n boundingBox,\n this.aspectRatio,\n );\n }\n\n public override isOrthographic(): this is FrameOrthographicCamera {\n return true;\n }\n\n public override get frustumProjectionViewMatrix(): Matrix4.Matrix4 {\n const frustumProjectionMatrix = Matrix4.makeFrustum(\n this.left,\n this.right,\n this.top,\n this.bottom,\n this.near,\n this.far,\n );\n return Matrix4.multiply(\n frustumProjectionMatrix,\n this.computeCameraMatrices().viewMatrix,\n );\n }\n\n protected override computeCameraMatrices(): FrameCameraMatrices {\n if (this.cameraMatrices == null) {\n const viewMatrix = Matrix4.makeLookAtView(\n this.position,\n this.lookAt,\n this.up,\n );\n const worldMatrix = Matrix4.invert(viewMatrix);\n const projectionMatrix = Matrix4.makeOrthographic(\n this.left,\n this.right,\n this.bottom,\n this.top,\n this.near,\n this.far,\n );\n const projectionMatrixInverse = Matrix4.invert(projectionMatrix);\n const projectionViewMatrix = Matrix4.multiply(\n projectionMatrix,\n viewMatrix,\n );\n\n return super.updateCameraMatrices({\n viewMatrix,\n worldMatrix,\n projectionMatrix,\n projectionMatrixInverse,\n projectionViewMatrix,\n });\n }\n return this.cameraMatrices;\n }\n}\n"]}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"frameCamera.js","sourceRoot":"","sources":["../../../../../src/lib/types/frameCamera.ts"],"names":[],"mappings":"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","sourcesContent":["import { vertexvis } from '@vertexvis/frame-streaming-protos';\nimport {\n Angle,\n BoundingBox,\n BoundingSphere,\n Vector3,\n} from '@vertexvis/geometry';\n\nexport type FrameCameraType = 'perspective' | 'orthographic';\n\nexport interface PerspectiveFrameCamera {\n position: Vector3.Vector3;\n lookAt: Vector3.Vector3;\n up: Vector3.Vector3;\n fovY?: number;\n}\n\nexport interface OrthographicFrameCamera {\n viewVector: Vector3.Vector3;\n lookAt: Vector3.Vector3;\n up: Vector3.Vector3;\n fovHeight: number;\n rotationPoint?: Vector3.Vector3;\n}\n\nexport type FrameCamera = PerspectiveFrameCamera | OrthographicFrameCamera;\n\nexport function isValidFrameCamera(camera: Partial<FrameCamera>): boolean {\n if (isPerspectiveFrameCamera(camera)) {\n const lookAtValid = Vector3.isValid(camera.lookAt);\n const positionValid = Vector3.isValid(camera.position);\n const upValid = Vector3.isValid(camera.up);\n\n return lookAtValid && positionValid && upValid;\n } else {\n const asOrthographic = camera as OrthographicFrameCamera;\n\n const viewVectorValid = Vector3.isValid(asOrthographic.viewVector);\n const lookAtValid = Vector3.isValid(asOrthographic.lookAt);\n const upValid = Vector3.isValid(asOrthographic.up);\n const fovHeightValid = Number.isFinite(asOrthographic.fovHeight);\n\n return viewVectorValid && lookAtValid && upValid && fovHeightValid;\n }\n}\n\nexport function isPerspectiveFrameCamera(\n camera: Partial<FrameCamera
|
|
1
|
+
{"version":3,"file":"frameCamera.js","sourceRoot":"","sources":["../../../../../src/lib/types/frameCamera.ts"],"names":[],"mappings":"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","sourcesContent":["import { vertexvis } from '@vertexvis/frame-streaming-protos';\nimport {\n Angle,\n BoundingBox,\n BoundingSphere,\n Vector3,\n} from '@vertexvis/geometry';\n\nexport type FrameCameraType = 'perspective' | 'orthographic';\n\nexport interface PerspectiveFrameCamera {\n position: Vector3.Vector3;\n lookAt: Vector3.Vector3;\n up: Vector3.Vector3;\n fovY?: number;\n}\n\nexport interface OrthographicFrameCamera {\n viewVector: Vector3.Vector3;\n lookAt: Vector3.Vector3;\n up: Vector3.Vector3;\n fovHeight: number;\n rotationPoint?: Vector3.Vector3;\n}\n\nexport type FrameCamera = PerspectiveFrameCamera | OrthographicFrameCamera;\n\nexport function isValidFrameCamera(camera: Partial<FrameCamera>): boolean {\n if (isPerspectiveFrameCamera(camera)) {\n const lookAtValid = Vector3.isValid(camera.lookAt);\n const positionValid = Vector3.isValid(camera.position);\n const upValid = Vector3.isValid(camera.up);\n\n return lookAtValid && positionValid && upValid;\n } else {\n const asOrthographic = camera as OrthographicFrameCamera;\n\n const viewVectorValid = Vector3.isValid(asOrthographic.viewVector);\n const lookAtValid = Vector3.isValid(asOrthographic.lookAt);\n const upValid = Vector3.isValid(asOrthographic.up);\n const fovHeightValid = Number.isFinite(asOrthographic.fovHeight);\n\n return viewVectorValid && lookAtValid && upValid && fovHeightValid;\n }\n}\n\nexport function isPerspectiveFrameCamera(\n camera: Partial<FrameCamera>,\n): camera is PerspectiveFrameCamera {\n return (\n (camera as PerspectiveFrameCamera).position != null &&\n (camera as OrthographicFrameCamera).fovHeight == null\n );\n}\n\nexport function isOrthographicFrameCamera(\n camera: Partial<FrameCamera>,\n): camera is OrthographicFrameCamera {\n const asOrtho = camera as OrthographicFrameCamera;\n return asOrtho.viewVector != null && asOrtho.fovHeight != null;\n}\n\nexport function withPositionAndViewVector(camera: FrameCamera): FrameCamera & {\n position: Vector3.Vector3;\n viewVector: Vector3.Vector3;\n} {\n if (isOrthographicFrameCamera(camera)) {\n return {\n ...camera,\n position: Vector3.add(camera.lookAt, Vector3.negate(camera.viewVector)),\n };\n } else {\n return {\n ...camera,\n viewVector: Vector3.subtract(camera.lookAt, camera.position),\n };\n }\n}\n\nexport function createPerspective(\n data: Partial<PerspectiveFrameCamera> = {},\n): PerspectiveFrameCamera {\n return {\n position: data.position ?? Vector3.forward(),\n lookAt: data.lookAt ?? Vector3.origin(),\n up: data.up ?? Vector3.up(),\n fovY: data.fovY ?? 45,\n };\n}\n\nexport function createOrthographic(\n data: Partial<OrthographicFrameCamera> = {},\n): OrthographicFrameCamera {\n return {\n viewVector: data.viewVector ?? Vector3.back(),\n lookAt: data.lookAt ?? Vector3.origin(),\n up: data.up ?? Vector3.up(),\n fovHeight: data.fovHeight ?? 1.0,\n rotationPoint: data.rotationPoint ?? data.lookAt ?? Vector3.origin(),\n };\n}\n\nexport function toOrthographic(\n data: PerspectiveFrameCamera,\n boundingBox: BoundingBox.BoundingBox,\n): OrthographicFrameCamera {\n const viewVector = Vector3.subtract(data.lookAt, data.position);\n const boundingSphere = BoundingSphere.create(boundingBox);\n const scale = boundingSphere.radius / Vector3.magnitude(viewVector);\n\n return {\n viewVector: Vector3.scale(scale, viewVector),\n up: data.up,\n lookAt: data.lookAt,\n fovHeight:\n 2 *\n Vector3.magnitude(viewVector) *\n Math.tan(Angle.toRadians((data.fovY ?? 45) / 2.0)),\n };\n}\n\nexport function toPerspective(\n data: OrthographicFrameCamera,\n fovY = 45,\n): PerspectiveFrameCamera {\n const expectedMagnitude =\n data.fovHeight / (2 * Math.tan(Angle.toRadians(fovY / 2.0)));\n const receivedMagnitude = Vector3.magnitude(data.viewVector);\n const magnitudeScale = expectedMagnitude / receivedMagnitude;\n\n return {\n position: Vector3.add(\n data.lookAt,\n Vector3.negate(Vector3.scale(magnitudeScale, data.viewVector)),\n ),\n up: data.up,\n lookAt: data.lookAt,\n fovY,\n };\n}\n\nexport function toProtobuf(\n camera: Partial<FrameCamera>,\n): vertexvis.protobuf.stream.ICamera {\n if (isOrthographicFrameCamera(camera)) {\n return {\n orthographic: {\n viewVector: { ...camera.viewVector },\n lookAt: { ...camera.lookAt },\n up: { ...camera.up },\n fovHeight: camera.fovHeight,\n },\n };\n } else if (isPerspectiveFrameCamera(camera)) {\n return {\n perspective: {\n position: { ...camera.position },\n lookAt: { ...camera.lookAt },\n up: { ...camera.up },\n fovY: camera.fovY\n ? {\n value: camera.fovY,\n }\n : null,\n },\n position: { ...camera.position },\n lookAt: { ...camera.lookAt },\n up: { ...camera.up },\n };\n } else {\n return {\n ...camera,\n };\n }\n}\n"]}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"loadableResource.js","sourceRoot":"","sources":["../../../../../src/lib/types/loadableResource.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,GAAG,EAAE,MAAM,kBAAkB,CAAC;AAEvC,OAAO,EAAE,uBAAuB,EAAE,MAAM,WAAW,CAAC;AAepD,MAAM,UAAU,OAAO,CAAC,GAAW;;IACjC,MAAM,GAAG,GAAG,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;IAE3B,IAAI,GAAG,CAAC,MAAM,KAAK,KAAK,IAAI,GAAG,CAAC,IAAI,IAAI,IAAI,EAAE,CAAC;QAC7C,MAAM,IAAI,KAAK,CAAC,mCAAmC,CAAC,CAAC;IACvD,CAAC;IAED,MAAM,CAAC,GAAG,EAAE,YAAY,EAAE,UAAU,EAAE,GAAG,eAAe,CAAC,GACvD,GAAG,CAAC,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC;IAEzB,IAAI,GAAG,KAAK,WAAW,IAAI,GAAG,KAAK,QAAQ,EAAE,CAAC;QAC5C,MAAM,IAAI,KAAK,CAAC,kDAAkD,CAAC,CAAC;IACtE,CAAC;IAED,IAAI,GAAG,KAAK,WAAW,EAAE,CAAC;QACxB,OAAO,CAAC,IAAI,CACV,+EAA+E,CAChF,CAAC;IACJ,CAAC;IAED,QAAQ,YAAY,EAAE,CAAC;QACrB,KAAK,YAAY;YACf,MAAM,OAAO,GAAG,SAAS,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC;YACrC,MAAM,WAAW,GACf,MAAA,mBAAmB,CAAC,eAAe,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,mCAC7C,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,KAAK,kBAAkB,CAEpC,CAAC;YAEjB,OAAO;gBACL,QAAQ,EAAE,EAAE,IAAI,EAAE,YAAY,EAAE,EAAE,EAAE,UAAU,EAAE;gBAChD,WAAW;gBACX,OAAO,EAAE,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,KAAK,kBAAkB,CAAC;aAC9D,CAAC;QACJ;YACE,MAAM,IAAI,uBAAuB,CAC/B,sCAAsC,YAAY,EAAE,CACrD,CAAC;IACN,CAAC;AACH,CAAC;AASD,SAAS,mBAAmB,CAAC,IAAa;IACxC,IAAI,IAAI,IAAI,IAAI,EAAE,CAAC;QACjB,MAAM,CAAC,eAAe,EAAE,aAAa,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;QAEzD,QAAQ,eAAe,EAAE,CAAC;YACxB,KAAK,mBAAmB;gBACtB,OAAO;oBACL,IAAI,EAAE,kBAAkB;oBACxB,EAAE,EAAE,aAAa;iBAClB,CAAC;YACJ;gBACE,OAAO,SAAS,CAAC;QACrB,CAAC;IACH,CAAC;AACH,CAAC;AASD,SAAS,SAAS,CAAC,KAAc;IAC/B,IAAI,KAAK,IAAI,IAAI,EAAE,CAAC;QAClB,OAAO,KAAK,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC,aAAa,EAAE,EAAE;YAC5C,MAAM,CAAC,YAAY,EAAE,UAAU,CAAC,GAAG,aAAa,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;YAE5D,QAAQ,YAAY,EAAE,CAAC;gBACrB,KAAK,aAAa;oBAChB,OAAO,EAAE,IAAI,EAAE,aAAa,EAAE,EAAE,EAAE,UAAU,EAAE,CAAC;gBACjD,KAAK,kBAAkB;oBACrB,OAAO,EAAE,IAAI,EAAE,kBAAkB,EAAE,EAAE,EAAE,UAAU,EAAE,CAAC;gBACtD;oBACE,MAAM,IAAI,KAAK,CAAC,uCAAuC,CAAC,CAAC;YAC7D,CAAC;QACH,CAAC,CAAC,CAAC;IACL,CAAC;SAAM,CAAC;QACN,OAAO,EAAE,CAAC;IACZ,CAAC;AACH,CAAC","sourcesContent":["import { Uri } from '@vertexvis/utils';\n\nimport { InvalidResourceUrnError } from '../errors';\n\ninterface StreamKeyResource {\n type: 'stream-key';\n id: string;\n}\n\nexport type LoadableResource = StreamKeyResource;\n\nexport interface Resource {\n resource: LoadableResource;\n subResource?: PathResource;\n queries: QueryValue[];\n}\n\nexport function fromUrn(urn: string): Resource {\n const uri = Uri.parse(urn);\n\n if (uri.scheme !== 'urn' || uri.path == null) {\n throw new Error('Invalid URN. Expected URN scheme.');\n }\n\n const [nid, resourceType, resourceId, ...subResourcePath] =\n uri.path.split(/[:/]/);\n\n if (nid !== 'vertexvis' && nid !== 'vertex') {\n throw new Error('Invalid URN. Expected URN to be vertex namespace');\n }\n\n if (nid === 'vertexvis') {\n console.warn(\n \"vertexvis namespace is deprecated. Use 'vertex' for the namespace urn instead\"
|
|
1
|
+
{"version":3,"file":"loadableResource.js","sourceRoot":"","sources":["../../../../../src/lib/types/loadableResource.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,GAAG,EAAE,MAAM,kBAAkB,CAAC;AAEvC,OAAO,EAAE,uBAAuB,EAAE,MAAM,WAAW,CAAC;AAepD,MAAM,UAAU,OAAO,CAAC,GAAW;;IACjC,MAAM,GAAG,GAAG,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;IAE3B,IAAI,GAAG,CAAC,MAAM,KAAK,KAAK,IAAI,GAAG,CAAC,IAAI,IAAI,IAAI,EAAE,CAAC;QAC7C,MAAM,IAAI,KAAK,CAAC,mCAAmC,CAAC,CAAC;IACvD,CAAC;IAED,MAAM,CAAC,GAAG,EAAE,YAAY,EAAE,UAAU,EAAE,GAAG,eAAe,CAAC,GACvD,GAAG,CAAC,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC;IAEzB,IAAI,GAAG,KAAK,WAAW,IAAI,GAAG,KAAK,QAAQ,EAAE,CAAC;QAC5C,MAAM,IAAI,KAAK,CAAC,kDAAkD,CAAC,CAAC;IACtE,CAAC;IAED,IAAI,GAAG,KAAK,WAAW,EAAE,CAAC;QACxB,OAAO,CAAC,IAAI,CACV,+EAA+E,CAChF,CAAC;IACJ,CAAC;IAED,QAAQ,YAAY,EAAE,CAAC;QACrB,KAAK,YAAY;YACf,MAAM,OAAO,GAAG,SAAS,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC;YACrC,MAAM,WAAW,GACf,MAAA,mBAAmB,CAAC,eAAe,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,mCAC7C,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,KAAK,kBAAkB,CAEpC,CAAC;YAEjB,OAAO;gBACL,QAAQ,EAAE,EAAE,IAAI,EAAE,YAAY,EAAE,EAAE,EAAE,UAAU,EAAE;gBAChD,WAAW;gBACX,OAAO,EAAE,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,KAAK,kBAAkB,CAAC;aAC9D,CAAC;QACJ;YACE,MAAM,IAAI,uBAAuB,CAC/B,sCAAsC,YAAY,EAAE,CACrD,CAAC;IACN,CAAC;AACH,CAAC;AASD,SAAS,mBAAmB,CAAC,IAAa;IACxC,IAAI,IAAI,IAAI,IAAI,EAAE,CAAC;QACjB,MAAM,CAAC,eAAe,EAAE,aAAa,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;QAEzD,QAAQ,eAAe,EAAE,CAAC;YACxB,KAAK,mBAAmB;gBACtB,OAAO;oBACL,IAAI,EAAE,kBAAkB;oBACxB,EAAE,EAAE,aAAa;iBAClB,CAAC;YACJ;gBACE,OAAO,SAAS,CAAC;QACrB,CAAC;IACH,CAAC;AACH,CAAC;AASD,SAAS,SAAS,CAAC,KAAc;IAC/B,IAAI,KAAK,IAAI,IAAI,EAAE,CAAC;QAClB,OAAO,KAAK,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC,aAAa,EAAE,EAAE;YAC5C,MAAM,CAAC,YAAY,EAAE,UAAU,CAAC,GAAG,aAAa,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;YAE5D,QAAQ,YAAY,EAAE,CAAC;gBACrB,KAAK,aAAa;oBAChB,OAAO,EAAE,IAAI,EAAE,aAAa,EAAE,EAAE,EAAE,UAAU,EAAE,CAAC;gBACjD,KAAK,kBAAkB;oBACrB,OAAO,EAAE,IAAI,EAAE,kBAAkB,EAAE,EAAE,EAAE,UAAU,EAAE,CAAC;gBACtD;oBACE,MAAM,IAAI,KAAK,CAAC,uCAAuC,CAAC,CAAC;YAC7D,CAAC;QACH,CAAC,CAAC,CAAC;IACL,CAAC;SAAM,CAAC;QACN,OAAO,EAAE,CAAC;IACZ,CAAC;AACH,CAAC","sourcesContent":["import { Uri } from '@vertexvis/utils';\n\nimport { InvalidResourceUrnError } from '../errors';\n\ninterface StreamKeyResource {\n type: 'stream-key';\n id: string;\n}\n\nexport type LoadableResource = StreamKeyResource;\n\nexport interface Resource {\n resource: LoadableResource;\n subResource?: PathResource;\n queries: QueryValue[];\n}\n\nexport function fromUrn(urn: string): Resource {\n const uri = Uri.parse(urn);\n\n if (uri.scheme !== 'urn' || uri.path == null) {\n throw new Error('Invalid URN. Expected URN scheme.');\n }\n\n const [nid, resourceType, resourceId, ...subResourcePath] =\n uri.path.split(/[:/]/);\n\n if (nid !== 'vertexvis' && nid !== 'vertex') {\n throw new Error('Invalid URN. Expected URN to be vertex namespace');\n }\n\n if (nid === 'vertexvis') {\n console.warn(\n \"vertexvis namespace is deprecated. Use 'vertex' for the namespace urn instead\",\n );\n }\n\n switch (resourceType) {\n case 'stream-key':\n const queries = fromQuery(uri.query);\n const subResource =\n fromSubResourcePath(subResourcePath.join('/')) ??\n (queries.find((q) => q.type === 'scene-view-state') as\n | SceneViewStateResource\n | undefined);\n\n return {\n resource: { type: 'stream-key', id: resourceId },\n subResource,\n queries: queries.filter((q) => q.type !== 'scene-view-state'),\n };\n default:\n throw new InvalidResourceUrnError(\n `Invalid URN. Unknown resource type ${resourceType}`,\n );\n }\n}\n\nexport interface SceneViewStateResource {\n type: 'scene-view-state';\n id?: string;\n}\n\nexport type PathResource = SceneViewStateResource;\n\nfunction fromSubResourcePath(path?: string): PathResource | undefined {\n if (path != null) {\n const [subResourceType, subResourceId] = path.split('/');\n\n switch (subResourceType) {\n case 'scene-view-states':\n return {\n type: 'scene-view-state',\n id: subResourceId,\n };\n default:\n return undefined;\n }\n }\n}\n\nexport interface SuppliedIdQueryValue {\n type: 'supplied-id';\n id: string;\n}\n\nexport type QueryValue = SceneViewStateResource | SuppliedIdQueryValue;\n\nfunction fromQuery(query?: string): QueryValue[] {\n if (query != null) {\n return query.split('&').map((queryFragment) => {\n const [resourceType, resourceId] = queryFragment.split('=');\n\n switch (resourceType) {\n case 'supplied-id':\n return { type: 'supplied-id', id: resourceId };\n case 'scene-view-state':\n return { type: 'scene-view-state', id: resourceId };\n default:\n throw new Error('Invalid URN. Unknown query value type');\n }\n });\n } else {\n return [];\n }\n}\n"]}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"orientation.js","sourceRoot":"","sources":["../../../../../src/lib/types/orientation.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,MAAM,qBAAqB,CAAC;AAEvD;;GAEG;AACH,MAAM,OAAO,WAAW;IAOtB;IACE;;OAEG;IACa,CAAkB;IAElC;;OAEG;IACa,CAAkB;QALlB,MAAC,GAAD,CAAC,CAAiB;QAKlB,MAAC,GAAD,CAAC,CAAiB;IACjC,CAAC;IAEJ;;OAEG;IACH,IAAW,MAAM;QACf,MAAM,CAAC,GAAG,IAAI,CAAC,CAAC,CAAC;QACjB,MAAM,CAAC,GAAG,IAAI,CAAC,CAAC,CAAC;QACjB,MAAM,CAAC,GAAG,OAAO,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;QAC9B,OAAO,OAAO,CAAC,SAAS,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC;IACpC,CAAC;;AA1BD;;;GAGG;AACW,mBAAO,GAAG,IAAI,WAAW,CAAC,OAAO,CAAC,EAAE,EAAE,EAAE,OAAO,CAAC,IAAI,EAAE,CAAC,CAAC","sourcesContent":["import { Matrix4, Vector3 } from '@vertexvis/geometry';\n\n/**\n * Represents an orientation using an `up` and `forward` vector.\n */\nexport class Orientation {\n /**\n * A default orientation where the up vector points up is represented as `[0, 1, 0]` and\n * forward is represented as `[0, 0, -1]`.\n */\n public static DEFAULT = new Orientation(Vector3.up(), Vector3.back());\n\n public constructor(\n /**\n * The up orientation vector.\n */\n public readonly y: Vector3.Vector3,\n\n /**\n * The forward orientation vector.\n */\n public readonly z: Vector3.Vector3
|
|
1
|
+
{"version":3,"file":"orientation.js","sourceRoot":"","sources":["../../../../../src/lib/types/orientation.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,MAAM,qBAAqB,CAAC;AAEvD;;GAEG;AACH,MAAM,OAAO,WAAW;IAOtB;IACE;;OAEG;IACa,CAAkB;IAElC;;OAEG;IACa,CAAkB;QALlB,MAAC,GAAD,CAAC,CAAiB;QAKlB,MAAC,GAAD,CAAC,CAAiB;IACjC,CAAC;IAEJ;;OAEG;IACH,IAAW,MAAM;QACf,MAAM,CAAC,GAAG,IAAI,CAAC,CAAC,CAAC;QACjB,MAAM,CAAC,GAAG,IAAI,CAAC,CAAC,CAAC;QACjB,MAAM,CAAC,GAAG,OAAO,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;QAC9B,OAAO,OAAO,CAAC,SAAS,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC;IACpC,CAAC;;AA1BD;;;GAGG;AACW,mBAAO,GAAG,IAAI,WAAW,CAAC,OAAO,CAAC,EAAE,EAAE,EAAE,OAAO,CAAC,IAAI,EAAE,CAAC,CAAC","sourcesContent":["import { Matrix4, Vector3 } from '@vertexvis/geometry';\n\n/**\n * Represents an orientation using an `up` and `forward` vector.\n */\nexport class Orientation {\n /**\n * A default orientation where the up vector points up is represented as `[0, 1, 0]` and\n * forward is represented as `[0, 0, -1]`.\n */\n public static DEFAULT = new Orientation(Vector3.up(), Vector3.back());\n\n public constructor(\n /**\n * The up orientation vector.\n */\n public readonly y: Vector3.Vector3,\n\n /**\n * The forward orientation vector.\n */\n public readonly z: Vector3.Vector3,\n ) {}\n\n /**\n * A rotation matrix for this orientation.\n */\n public get matrix(): Matrix4.Matrix4 {\n const z = this.z;\n const y = this.y;\n const x = Vector3.cross(y, z);\n return Matrix4.makeBasis(x, y, z);\n }\n}\n"]}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"sceneViewStateIdentifier.js","sourceRoot":"","sources":["../../../../../src/lib/types/sceneViewStateIdentifier.ts"],"names":[],"mappings":"AAmBA,MAAM,UAAU,kBAAkB,CAChC,UAAoC;IAEpC,OAAQ,UAA+B,CAAC,EAAE,IAAI,IAAI,CAAC;AACrD,CAAC;AAED,MAAM,UAAU,0BAA0B,CACxC,UAAoC;IAEpC,OAAQ,UAAuC,CAAC,UAAU,IAAI,IAAI,CAAC;AACrE,CAAC","sourcesContent":["import { UUID } from '@vertexvis/utils';\n\nexport interface SceneViewStateId {\n id: UUID.UUID;\n}\n\nexport interface SceneViewStateSuppliedId {\n suppliedId: string;\n}\n\n/**\n * An object describing an ID for the scene view state. Can either be an\n * object containing the ID generated on creation, or an object containing\n * a supplied id provided during creation.\n */\nexport type SceneViewStateIdentifier =\n | SceneViewStateId\n | SceneViewStateSuppliedId;\n\nexport function isSceneViewStateId(\n identifier: SceneViewStateIdentifier
|
|
1
|
+
{"version":3,"file":"sceneViewStateIdentifier.js","sourceRoot":"","sources":["../../../../../src/lib/types/sceneViewStateIdentifier.ts"],"names":[],"mappings":"AAmBA,MAAM,UAAU,kBAAkB,CAChC,UAAoC;IAEpC,OAAQ,UAA+B,CAAC,EAAE,IAAI,IAAI,CAAC;AACrD,CAAC;AAED,MAAM,UAAU,0BAA0B,CACxC,UAAoC;IAEpC,OAAQ,UAAuC,CAAC,UAAU,IAAI,IAAI,CAAC;AACrE,CAAC","sourcesContent":["import { UUID } from '@vertexvis/utils';\n\nexport interface SceneViewStateId {\n id: UUID.UUID;\n}\n\nexport interface SceneViewStateSuppliedId {\n suppliedId: string;\n}\n\n/**\n * An object describing an ID for the scene view state. Can either be an\n * object containing the ID generated on creation, or an object containing\n * a supplied id provided during creation.\n */\nexport type SceneViewStateIdentifier =\n | SceneViewStateId\n | SceneViewStateSuppliedId;\n\nexport function isSceneViewStateId(\n identifier: SceneViewStateIdentifier,\n): identifier is SceneViewStateId {\n return (identifier as SceneViewStateId).id != null;\n}\n\nexport function isSceneViewStateSuppliedId(\n identifier: SceneViewStateIdentifier,\n): identifier is SceneViewStateSuppliedId {\n return (identifier as SceneViewStateSuppliedId).suppliedId != null;\n}\n"]}
|