@vertexvis/viewer 1.0.2-canary.1 → 1.0.2-canary.2
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/cjs/index.cjs.js +1 -1
- package/dist/cjs/{multiElementInteractionHandler-DCKBIy58.js → multiElementInteractionHandler-BHvRKVIp.js} +20 -21
- package/dist/cjs/multiElementInteractionHandler-BHvRKVIp.js.map +1 -0
- package/dist/cjs/{queries-XG1IeRYE.js → queries-Da9I-xMf.js} +12 -12
- package/dist/cjs/queries-Da9I-xMf.js.map +1 -0
- package/dist/cjs/vertex-viewer-dom-element_2.cjs.entry.js +1 -1
- package/dist/cjs/vertex-viewer-teleport-tool.cjs.entry.js +1 -1
- package/dist/cjs/vertex-viewer-teleport-tool.cjs.entry.js.map +1 -1
- package/dist/cjs/vertex-viewer.cjs.entry.js +27 -18
- package/dist/cjs/vertex-viewer.cjs.entry.js.map +1 -1
- package/dist/collection/lib/interactions/baseInteractionHandler.js +18 -19
- package/dist/collection/lib/interactions/baseInteractionHandler.js.map +1 -1
- package/dist/collection/lib/interactions/interactionApi.js +17 -8
- package/dist/collection/lib/interactions/interactionApi.js.map +1 -1
- package/dist/collection/lib/interactions/mouseInteractions.js +8 -8
- package/dist/collection/lib/interactions/mouseInteractions.js.map +1 -1
- package/dist/collection/lib/scenes/camera.js +10 -10
- package/dist/collection/lib/scenes/camera.js.map +1 -1
- package/dist/collection/lib/teleportation/interactions.js +1 -1
- package/dist/collection/lib/teleportation/interactions.js.map +1 -1
- package/dist/components/index.js +1 -1
- package/dist/components/{p-BR7cFxzj.js → p-3DqRAYgO.js} +2 -2
- package/dist/components/p-3DqRAYgO.js.map +1 -0
- package/dist/components/{p-Bkhr6gno.js → p-BCOD9yfw.js} +2 -2
- package/dist/components/p-CAugdB_8.js +5 -0
- package/dist/components/p-CAugdB_8.js.map +1 -0
- package/dist/components/p-CGCJ5hbJ.js +5 -0
- package/dist/components/p-CGCJ5hbJ.js.map +1 -0
- package/dist/components/vertex-viewer-dom-renderer.js +1 -1
- package/dist/components/vertex-viewer-pin-tool.js +1 -1
- package/dist/components/vertex-viewer-teleport-tool.js +1 -1
- package/dist/components/vertex-viewer-view-cube.js +1 -1
- package/dist/components/vertex-viewer-walk-mode-tool.js +1 -1
- package/dist/components/vertex-viewer.js +1 -1
- package/dist/components/vertex-viewer.js.map +1 -1
- package/dist/esm/index.js +1 -1
- package/dist/esm/index.mjs +1 -1
- package/dist/esm/{multiElementInteractionHandler-C3A6SPxu.js → multiElementInteractionHandler-DwjL-r55.js} +20 -21
- package/dist/esm/multiElementInteractionHandler-DwjL-r55.js.map +1 -0
- package/dist/esm/{queries-CsBLqW1v.js → queries-DEzCmbTD.js} +12 -12
- package/dist/esm/queries-DEzCmbTD.js.map +1 -0
- package/dist/esm/vertex-viewer-dom-element_2.entry.js +1 -1
- package/dist/esm/vertex-viewer-teleport-tool.entry.js +1 -1
- package/dist/esm/vertex-viewer-teleport-tool.entry.js.map +1 -1
- package/dist/esm/vertex-viewer.entry.js +27 -18
- package/dist/esm/vertex-viewer.entry.js.map +1 -1
- package/dist/types/lib/interactions/baseInteractionHandler.d.ts +1 -1
- package/dist/types/lib/interactions/interactionApi.d.ts +2 -2
- package/dist/types/lib/interactions/mouseInteractions.d.ts +2 -2
- package/dist/types/lib/scenes/camera.d.ts +1 -0
- package/dist/viewer/index.esm.js +1 -1
- package/dist/viewer/p-07b99ac9.entry.js +5 -0
- package/dist/viewer/p-07b99ac9.entry.js.map +1 -0
- package/dist/viewer/{p-5ced98d5.entry.js → p-29d14611.entry.js} +2 -2
- package/dist/viewer/{p-72a0588f.entry.js → p-89544066.entry.js} +2 -2
- package/dist/viewer/p-89544066.entry.js.map +1 -0
- package/dist/viewer/p-D6eJC1q4.js +5 -0
- package/dist/viewer/p-D6eJC1q4.js.map +1 -0
- package/dist/viewer/{p-5U-3M0jx.js → p-EsKoKfmx.js} +2 -2
- package/dist/viewer/p-EsKoKfmx.js.map +1 -0
- package/dist/viewer/viewer.esm.js +1 -1
- package/package.json +7 -7
- package/dist/cjs/multiElementInteractionHandler-DCKBIy58.js.map +0 -1
- package/dist/cjs/queries-XG1IeRYE.js.map +0 -1
- package/dist/components/p-BQrJ-Yrs.js +0 -5
- package/dist/components/p-BQrJ-Yrs.js.map +0 -1
- package/dist/components/p-BR7cFxzj.js.map +0 -1
- package/dist/components/p-DizXmW54.js +0 -5
- package/dist/components/p-DizXmW54.js.map +0 -1
- package/dist/esm/multiElementInteractionHandler-C3A6SPxu.js.map +0 -1
- package/dist/esm/queries-CsBLqW1v.js.map +0 -1
- package/dist/viewer/p-5U-3M0jx.js.map +0 -1
- package/dist/viewer/p-72a0588f.entry.js.map +0 -1
- package/dist/viewer/p-77a0c7b7.entry.js +0 -5
- package/dist/viewer/p-77a0c7b7.entry.js.map +0 -1
- package/dist/viewer/p-CxLXWk2n.js +0 -5
- package/dist/viewer/p-CxLXWk2n.js.map +0 -1
- /package/dist/components/{p-Bkhr6gno.js.map → p-BCOD9yfw.js.map} +0 -0
- /package/dist/viewer/{p-5ced98d5.entry.js.map → p-29d14611.entry.js.map} +0 -0
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"vertex-viewer-teleport-tool.entry.js","sources":["src/lib/teleportation/interactions.ts","src/components/viewer-teleport-tool/viewer-teleport-tool.css?tag=vertex-viewer-teleport-tool&encapsulation=shadow","src/components/viewer-teleport-tool/viewer-teleport-tool.tsx"],"sourcesContent":["import { BoundingBox, Plane, Point, Ray, Vector3 } from '@vertexvis/geometry';\nimport { Disposable } from '@vertexvis/utils';\n\nimport { getMouseClientPosition } from '../dom';\nimport { ElementRectObserver } from '../elementRectObserver';\nimport {\n CameraTransform,\n InteractionApi,\n InteractionHandler,\n} from '../interactions';\nimport { Camera, CameraRenderOptions } from '../scenes';\nimport { ViewerTeleportMode, WalkModeModel } from '../walk-mode/model';\n\nexport interface AnimationConfiguration {\n durationMs: number;\n}\n\nexport class TeleportInteractionHandler implements InteractionHandler {\n private api?: InteractionApi;\n private element?: HTMLElement;\n\n private rectObserver = new ElementRectObserver();\n\n private downPosition?: Point.Point;\n private downButtons?: number;\n\n private enabledChangeDisposable?: Disposable;\n private teleportModeChangeDisposable?: Disposable;\n private cursorDisposable?: Disposable;\n\n public constructor(\n private model: WalkModeModel,\n private animationConfiguration?: AnimationConfiguration\n ) {\n this.handlePointerDown = this.handlePointerDown.bind(this);\n this.handlePointerUp = this.handlePointerUp.bind(this);\n this.handleEnabledChange = this.handleEnabledChange.bind(this);\n this.handleTeleportModeChange = this.handleTeleportModeChange.bind(this);\n\n this.enabledChangeDisposable = this.model.onEnabledChange(\n this.handleEnabledChange\n );\n }\n\n public dispose(): void {\n this.disable();\n this.enabledChangeDisposable?.dispose();\n\n this.element = undefined;\n this.api = undefined;\n\n this.rectObserver.disconnect();\n }\n\n public initialize(element: HTMLElement, api: InteractionApi): void {\n this.element = element;\n this.api = api;\n\n this.rectObserver.observe(element);\n\n this.handleEnabledChange(this.model.getEnabled());\n }\n\n public setAnimations(config?: AnimationConfiguration): void {\n this.animationConfiguration = config;\n }\n\n public enable(): void {\n this.disable();\n\n this.teleportModeChangeDisposable = this.model.onTeleportModeChange(\n this.handleTeleportModeChange\n );\n this.element?.addEventListener('pointerdown', this.handlePointerDown);\n\n this.handleTeleportModeChange(this.model.getTeleportMode());\n }\n\n public disable(): void {\n this.teleportModeChangeDisposable?.dispose();\n this.cursorDisposable?.dispose();\n\n this.element?.removeEventListener('pointerdown', this.handlePointerDown);\n }\n\n private async handlePointerDown(event: PointerEvent): Promise<void> {\n this.downPosition = getMouseClientPosition(event, this.rectObserver.rect);\n this.downButtons = event.buttons;\n\n window.addEventListener('pointerup', this.handlePointerUp);\n }\n\n private async handlePointerUp(event: PointerEvent): Promise<void> {\n const mode = this.model.getTeleportMode();\n const threshold = this.api?.pixelThreshold() ?? 2;\n const point = getMouseClientPosition(event, this.rectObserver.rect);\n const isRightClick = this.downButtons === 2;\n const hasModifier =\n event.shiftKey || event.altKey || event.metaKey || event.ctrlKey;\n\n if (\n mode != null &&\n this.downPosition != null &&\n Point.distance(this.downPosition, point) <= threshold &&\n !isRightClick &&\n !hasModifier\n ) {\n switch (mode) {\n case 'teleport':\n return this.teleportToHit(point);\n case 'teleport-toward':\n return this.teleportTowardHit(point);\n case 'teleport-and-align':\n return this.teleportAndAlign(point);\n }\n }\n\n this.downPosition = undefined;\n\n window.removeEventListener('pointerup', this.handlePointerUp);\n }\n\n private async beginInteraction(): Promise<void> {\n if (!this.api?.isInteracting()) {\n await this.api?.beginInteraction();\n }\n }\n\n private async endInteraction(): Promise<void> {\n await this.api?.endInteraction();\n }\n\n private async teleportTowardHit(point: Point.Point): Promise<void> {\n const worldPoint = await this.api?.getWorldPointFromViewport(point);\n const mouseRay = this.api?.getRayFromPoint(point);\n\n if (mouseRay != null) {\n const { teleportDistancePercentage, teleportCollisionDistance } =\n this.model.getConfiguration();\n const teleportDistanceScalar = teleportDistancePercentage / 100;\n\n return this.performInteraction(({ camera, boundingBox }) => {\n const stepDistance =\n Math.max(...Vector3.toArray(BoundingBox.lengths(boundingBox))) *\n teleportDistanceScalar;\n\n const positionPlane = Plane.fromNormalAndCoplanarPoint(\n camera.up,\n camera.position\n );\n const projectedWorldPoint = Plane.projectPoint(\n positionPlane,\n worldPoint ?? camera.position\n );\n const distanceToWorldPoint = Vector3.distance(\n camera.position,\n projectedWorldPoint\n );\n\n if (\n distanceToWorldPoint < stepDistance &&\n distanceToWorldPoint > teleportCollisionDistance * 1.1\n ) {\n const mouseRayAtWorldPoint = Ray.create({\n ...mouseRay,\n origin: projectedWorldPoint,\n });\n const nextPosition = Plane.projectPoint(\n positionPlane,\n Ray.at(mouseRayAtWorldPoint, -teleportCollisionDistance)\n );\n\n return camera.update({\n position: nextPosition,\n lookAt: Vector3.add(\n camera.lookAt,\n Vector3.subtract(nextPosition, camera.position)\n ),\n });\n } else {\n const projectedNextStep = Plane.projectPoint(\n positionPlane,\n Ray.at(mouseRay, stepDistance)\n );\n\n return camera.update({\n position: projectedNextStep,\n lookAt: Vector3.add(\n camera.lookAt,\n Vector3.subtract(projectedNextStep, camera.position)\n ),\n });\n }\n });\n }\n }\n\n private async teleportToHit(point: Point.Point): Promise<void> {\n const worldPoint = await this.getWorldPointWithFallback(point);\n\n if (worldPoint != null) {\n return this.performInteraction(({ camera, boundingBox }) => {\n const shortestBoundingBoxLength = this.shortestLength(boundingBox);\n const heightScalar = this.model.getTeleportHeightPercentage() / 100;\n\n const cameraPlane = Plane.fromNormalAndCoplanarPoint(\n camera.up,\n camera.position\n );\n const projectedHitPosition = Plane.projectPoint(\n cameraPlane,\n worldPoint\n );\n\n const rayToHitPosition = Ray.create({\n origin: camera.position,\n direction: Vector3.normalize(\n Vector3.subtract(projectedHitPosition, camera.position)\n ),\n });\n const distanceToHitPosition = Vector3.distance(\n camera.position,\n projectedHitPosition\n );\n const distanceToLookAt = Vector3.distance(\n camera.position,\n camera.lookAt\n );\n\n const newPosition = Ray.at(\n rayToHitPosition,\n distanceToHitPosition - shortestBoundingBoxLength * heightScalar\n );\n const newPositionViewVectorRay = Ray.create({\n origin: newPosition,\n direction: Vector3.normalize(camera.viewVector),\n });\n\n return camera.update({\n position: newPosition,\n lookAt: Ray.at(newPositionViewVectorRay, distanceToLookAt),\n });\n });\n }\n }\n\n private async teleportAndAlign(point: Point.Point): Promise<void> {\n const hits = await this.api?.hitItems(point);\n const hit = hits != null ? hits[0] : undefined;\n\n if (hit?.hitNormal != null && hit?.hitPoint) {\n await this.performInteraction(({ camera, boundingBox }) => {\n const shortestBoundingBoxLength = this.shortestLength(boundingBox);\n const heightScalar = this.model.getTeleportHeightPercentage() / 100;\n\n const upRay = Ray.create({\n origin: hit.hitPoint as Vector3.Vector3,\n direction: hit.hitNormal as Vector3.Vector3,\n });\n\n return camera.alignTo(\n Ray.at(upRay, shortestBoundingBoxLength * heightScalar),\n hit.hitNormal as Vector3.Vector3\n );\n });\n }\n }\n\n private async performInteraction(fn: CameraTransform<Camera>): Promise<void> {\n await this.beginInteraction();\n await this.api?.transformCamera(fn, this.renderConfiguration());\n await this.endInteraction();\n }\n\n private async getWorldPointWithFallback(\n point: Point.Point\n ): Promise<Vector3.Vector3 | undefined> {\n const worldPoint = await this.api?.getWorldPointFromViewport(point);\n\n if (worldPoint == null) {\n const hits = await this.api?.hitItems(point);\n const hit = hits != null ? hits[0] : undefined;\n\n return hit?.hitPoint != null\n ? (hit.hitPoint as Vector3.Vector3)\n : worldPoint;\n }\n return worldPoint;\n }\n\n private handleEnabledChange(enabled: boolean): void {\n if (enabled) {\n this.enable();\n } else {\n this.disable();\n }\n }\n\n private handleTeleportModeChange(mode?: ViewerTeleportMode): void {\n this.cursorDisposable?.dispose();\n\n if (mode != null) {\n this.cursorDisposable = this.api?.addCursor('crosshair');\n }\n }\n\n private shortestLength(boundingBox: BoundingBox.BoundingBox): number {\n return Math.min(...Vector3.toArray(BoundingBox.lengths(boundingBox)));\n }\n\n private renderConfiguration(): CameraRenderOptions | undefined {\n return this.animationConfiguration != null\n ? { animation: { milliseconds: this.animationConfiguration.durationMs } }\n : undefined;\n }\n}\n",":host {\n position: absolute;\n top: 0;\n bottom: 0;\n left: 0;\n right: 0;\n pointer-events: none;\n}\n","import {\n Component,\n Event,\n EventEmitter,\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n h,\n Host,\n JSX,\n Prop,\n Watch,\n} from '@stencil/core';\nimport { Disposable } from '@vertexvis/utils';\n\nimport { TeleportInteractionHandler } from '../../lib/teleportation/interactions';\nimport { WalkModeController } from '../../lib/walk-mode/controller';\nimport { ViewerTeleportMode, WalkModeModel } from '../../lib/walk-mode/model';\n\ninterface StateMap {\n shouldClearDepthBuffers?: boolean;\n}\n\n/**\n * The `<vertex-viewer-teleport-tool>` allows for click-based \"teleportation\"\n * around a model, which is particularly useful for walking through a model.\n * This tool is automatically included as part of the <vertex-viewer-walk-mode-tool>.\n */\n@Component({\n tag: 'vertex-viewer-teleport-tool',\n styleUrl: 'viewer-teleport-tool.css',\n shadow: true,\n})\nexport class ViewerTeleportTool {\n /**\n * The viewer that this component is bound to. This is automatically assigned\n * if added to the light-dom of a parent viewer element.\n */\n @Prop()\n public viewer?: HTMLVertexViewerElement;\n\n /**\n * The type of teleportation to perform when clicking.\n *\n * `teleport` - the camera's `position` is moved to the location of the hit result\n * constrained by the plane represented by the camera's current `position` and `up`\n * vectors.\n *\n * `teleport-and-align` - the camera's `position`, `lookAt`, and `up` vectors are updated\n * to align to the plane represented by the hit result's position and normal.\n *\n * `teleport-toward` - the camera's `position` is moved a fixed distance toward the location of the\n * hit result constrained by the plane represented by the camera's current `position` and `up`\n * vectors.\n *\n * `undefined` - no teleportation will occur when clicking.\n *\n * Defaults to `undefined`.\n */\n @Prop({ mutable: true })\n public mode?: ViewerTeleportMode;\n\n /**\n * Indicates whether animations will be used when performing camera\n * operations. Defaults to `false`.\n */\n @Prop()\n public animationsDisabled = false;\n\n /**\n * The duration of animations, in milliseconds. Defaults to `500`.\n */\n @Prop()\n public animationMs?: number = 500;\n\n @Prop({ mutable: true })\n public controller?: WalkModeController;\n\n @Prop({ mutable: true })\n public model: WalkModeModel = new WalkModeModel();\n\n /**\n * Event emitted when the `WalkModeController` associated with this tool changes.\n */\n @Event()\n public controllerChanged!: EventEmitter<WalkModeController>;\n\n private interactionHandlerDisposable?: Disposable;\n private interactionHandler?: TeleportInteractionHandler;\n\n private stateMap: StateMap = {};\n\n /**\n * @ignore\n */\n protected componentWillLoad(): void {\n this.setupController();\n this.setupInteractionHandler();\n this.setDepthBuffers();\n }\n\n /**\n * @ignore\n */\n protected connectedCallback(): void {\n this.setupInteractionHandler();\n this.setDepthBuffers();\n }\n\n /**\n * @ignore\n */\n protected disconnectedCallback(): void {\n this.clearInteractionHandler();\n this.resetDepthBuffers();\n }\n\n /**\n * @ignore\n */\n @Watch('mode')\n protected handleModeChange(): void {\n this.controller?.setTeleportMode(this.mode);\n\n if (this.mode != null) {\n this.setDepthBuffers();\n } else {\n this.resetDepthBuffers();\n }\n }\n\n /**\n * @ignore\n */\n @Watch('viewer')\n protected handleViewerChanged(): void {\n this.clearInteractionHandler();\n this.setupInteractionHandler();\n this.setDepthBuffers();\n }\n\n /**\n * @ignore\n */\n @Watch('animationMs')\n protected handleAnimationMsChanged(): void {\n if (this.animationMs != null) {\n this.interactionHandler?.setAnimations({ durationMs: this.animationMs });\n }\n }\n\n /**\n * @ignore\n */\n @Watch('animationsDisabled')\n protected handleAnimationsDisabledChanged(): void {\n if (this.animationsDisabled) {\n this.interactionHandler?.setAnimations(undefined);\n } else if (this.animationMs != null) {\n this.interactionHandler?.setAnimations({ durationMs: this.animationMs });\n }\n }\n\n /**\n * @ignore\n */\n @Watch('controller')\n protected handleControllerChanged(): void {\n this.setupInteractionHandler();\n this.setupController();\n this.controllerChanged.emit(this.controller);\n }\n\n @Watch('model')\n protected handleModelChanged(): void {\n this.setupController();\n this.clearInteractionHandler();\n this.setupInteractionHandler();\n }\n\n protected render(): JSX.Element {\n return <Host></Host>;\n }\n\n private setupController(): void {\n if (this.controller == null) {\n this.controller = new WalkModeController(this.model);\n this.controller.setTeleportMode(this.mode);\n this.controllerChanged.emit(this.controller);\n } else {\n this.controller.setTeleportMode(this.mode);\n this.controller.updateModel(this.model);\n }\n }\n\n private setDepthBuffers(): void {\n if (\n this.mode != null &&\n this.viewer != null &&\n this.viewer.depthBuffers == null\n ) {\n this.stateMap.shouldClearDepthBuffers = true;\n this.viewer.depthBuffers = 'final';\n }\n }\n\n private resetDepthBuffers(): void {\n if (this.stateMap.shouldClearDepthBuffers && this.viewer != null) {\n this.viewer.depthBuffers = undefined;\n this.stateMap.shouldClearDepthBuffers = undefined;\n }\n }\n\n private clearInteractionHandler(): void {\n this.interactionHandlerDisposable?.dispose();\n this.interactionHandlerDisposable = undefined;\n this.interactionHandler?.dispose();\n this.interactionHandler = undefined;\n }\n\n private async setupInteractionHandler(): Promise<void> {\n if (this.interactionHandler == null) {\n this.interactionHandler = new TeleportInteractionHandler(\n this.model,\n !this.animationsDisabled && this.animationMs != null\n ? { durationMs: this.animationMs }\n : undefined\n );\n\n this.interactionHandlerDisposable =\n await this.viewer?.registerInteractionHandler(this.interactionHandler);\n }\n }\n}\n"],"names":["point","Point","boundingBox","Vector3","BoundingBox","Plane","Ray"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"vertex-viewer-teleport-tool.entry.js","sources":["src/lib/teleportation/interactions.ts","src/components/viewer-teleport-tool/viewer-teleport-tool.css?tag=vertex-viewer-teleport-tool&encapsulation=shadow","src/components/viewer-teleport-tool/viewer-teleport-tool.tsx"],"sourcesContent":["import { BoundingBox, Plane, Point, Ray, Vector3 } from '@vertexvis/geometry';\nimport { Disposable } from '@vertexvis/utils';\n\nimport { getMouseClientPosition } from '../dom';\nimport { ElementRectObserver } from '../elementRectObserver';\nimport {\n CameraTransform,\n InteractionApi,\n InteractionHandler,\n} from '../interactions';\nimport { Camera, CameraRenderOptions } from '../scenes';\nimport { ViewerTeleportMode, WalkModeModel } from '../walk-mode/model';\n\nexport interface AnimationConfiguration {\n durationMs: number;\n}\n\nexport class TeleportInteractionHandler implements InteractionHandler {\n private api?: InteractionApi;\n private element?: HTMLElement;\n\n private rectObserver = new ElementRectObserver();\n\n private downPosition?: Point.Point;\n private downButtons?: number;\n\n private enabledChangeDisposable?: Disposable;\n private teleportModeChangeDisposable?: Disposable;\n private cursorDisposable?: Disposable;\n\n public constructor(\n private model: WalkModeModel,\n private animationConfiguration?: AnimationConfiguration\n ) {\n this.handlePointerDown = this.handlePointerDown.bind(this);\n this.handlePointerUp = this.handlePointerUp.bind(this);\n this.handleEnabledChange = this.handleEnabledChange.bind(this);\n this.handleTeleportModeChange = this.handleTeleportModeChange.bind(this);\n\n this.enabledChangeDisposable = this.model.onEnabledChange(\n this.handleEnabledChange\n );\n }\n\n public dispose(): void {\n this.disable();\n this.enabledChangeDisposable?.dispose();\n\n this.element = undefined;\n this.api = undefined;\n\n this.rectObserver.disconnect();\n }\n\n public initialize(element: HTMLElement, api: InteractionApi): void {\n this.element = element;\n this.api = api;\n\n this.rectObserver.observe(element);\n\n this.handleEnabledChange(this.model.getEnabled());\n }\n\n public setAnimations(config?: AnimationConfiguration): void {\n this.animationConfiguration = config;\n }\n\n public enable(): void {\n this.disable();\n\n this.teleportModeChangeDisposable = this.model.onTeleportModeChange(\n this.handleTeleportModeChange\n );\n this.element?.addEventListener('pointerdown', this.handlePointerDown);\n\n this.handleTeleportModeChange(this.model.getTeleportMode());\n }\n\n public disable(): void {\n this.teleportModeChangeDisposable?.dispose();\n this.cursorDisposable?.dispose();\n\n this.element?.removeEventListener('pointerdown', this.handlePointerDown);\n }\n\n private async handlePointerDown(event: PointerEvent): Promise<void> {\n this.downPosition = getMouseClientPosition(event, this.rectObserver.rect);\n this.downButtons = event.buttons;\n\n window.addEventListener('pointerup', this.handlePointerUp);\n }\n\n private async handlePointerUp(event: PointerEvent): Promise<void> {\n const mode = this.model.getTeleportMode();\n const threshold = this.api?.pixelThreshold() ?? 2;\n const point = getMouseClientPosition(event, this.rectObserver.rect);\n const isRightClick = this.downButtons === 2;\n const hasModifier =\n event.shiftKey || event.altKey || event.metaKey || event.ctrlKey;\n\n if (\n mode != null &&\n this.downPosition != null &&\n Point.distance(this.downPosition, point) <= threshold &&\n !isRightClick &&\n !hasModifier\n ) {\n switch (mode) {\n case 'teleport':\n return this.teleportToHit(point);\n case 'teleport-toward':\n return this.teleportTowardHit(point);\n case 'teleport-and-align':\n return this.teleportAndAlign(point);\n }\n }\n\n this.downPosition = undefined;\n\n window.removeEventListener('pointerup', this.handlePointerUp);\n }\n\n private async beginInteraction(): Promise<void> {\n if (!this.api?.isInteracting()) {\n await this.api?.beginInteraction();\n }\n }\n\n private async endInteraction(): Promise<void> {\n await this.api?.endInteraction();\n }\n\n private async teleportTowardHit(point: Point.Point): Promise<void> {\n const worldPoint = await this.api?.getWorldPointFromViewport(point);\n const mouseRay = this.api?.getRayFromPoint(point);\n\n if (mouseRay != null) {\n const { teleportDistancePercentage, teleportCollisionDistance } =\n this.model.getConfiguration();\n const teleportDistanceScalar = teleportDistancePercentage / 100;\n\n return this.performInteraction(({ camera, boundingBox }) => {\n const stepDistance =\n Math.max(...Vector3.toArray(BoundingBox.lengths(boundingBox))) *\n teleportDistanceScalar;\n\n const positionPlane = Plane.fromNormalAndCoplanarPoint(\n camera.up,\n camera.position\n );\n const projectedWorldPoint = Plane.projectPoint(\n positionPlane,\n worldPoint ?? camera.position\n );\n const distanceToWorldPoint = Vector3.distance(\n camera.position,\n projectedWorldPoint\n );\n\n if (\n distanceToWorldPoint < stepDistance &&\n distanceToWorldPoint > teleportCollisionDistance * 1.1\n ) {\n const mouseRayAtWorldPoint = Ray.create({\n ...mouseRay,\n origin: projectedWorldPoint,\n });\n const nextPosition = Plane.projectPoint(\n positionPlane,\n Ray.at(mouseRayAtWorldPoint, -teleportCollisionDistance)\n );\n\n return camera.update({\n position: nextPosition,\n lookAt: Vector3.add(\n camera.lookAt,\n Vector3.subtract(nextPosition, camera.position)\n ),\n });\n } else {\n const projectedNextStep = Plane.projectPoint(\n positionPlane,\n Ray.at(mouseRay, stepDistance)\n );\n\n return camera.update({\n position: projectedNextStep,\n lookAt: Vector3.add(\n camera.lookAt,\n Vector3.subtract(projectedNextStep, camera.position)\n ),\n });\n }\n });\n }\n }\n\n private async teleportToHit(point: Point.Point): Promise<void> {\n const worldPoint = await this.getWorldPointWithFallback(point);\n\n if (worldPoint != null) {\n return this.performInteraction(({ camera, boundingBox }) => {\n const shortestBoundingBoxLength = this.shortestLength(boundingBox);\n const heightScalar = this.model.getTeleportHeightPercentage() / 100;\n\n const cameraPlane = Plane.fromNormalAndCoplanarPoint(\n camera.up,\n camera.position\n );\n const projectedHitPosition = Plane.projectPoint(\n cameraPlane,\n worldPoint\n );\n\n const rayToHitPosition = Ray.create({\n origin: camera.position,\n direction: Vector3.normalize(\n Vector3.subtract(projectedHitPosition, camera.position)\n ),\n });\n const distanceToHitPosition = Vector3.distance(\n camera.position,\n projectedHitPosition\n );\n const distanceToLookAt = Vector3.distance(\n camera.position,\n camera.lookAt\n );\n\n const newPosition = Ray.at(\n rayToHitPosition,\n distanceToHitPosition - shortestBoundingBoxLength * heightScalar\n );\n const newPositionViewVectorRay = Ray.create({\n origin: newPosition,\n direction: Vector3.normalize(camera.viewVector),\n });\n\n return camera.update({\n position: newPosition,\n lookAt: Ray.at(newPositionViewVectorRay, distanceToLookAt),\n });\n });\n }\n }\n\n private async teleportAndAlign(point: Point.Point): Promise<void> {\n const hits = await this.api?.hitItems(point);\n const hit = hits != null ? hits[0] : undefined;\n\n if (hit?.hitNormal != null && hit?.hitPoint) {\n await this.performInteraction(({ camera, boundingBox }) => {\n const shortestBoundingBoxLength = this.shortestLength(boundingBox);\n const heightScalar = this.model.getTeleportHeightPercentage() / 100;\n\n const upRay = Ray.create({\n origin: hit.hitPoint as Vector3.Vector3,\n direction: hit.hitNormal as Vector3.Vector3,\n });\n\n return camera.alignTo(\n Ray.at(upRay, shortestBoundingBoxLength * heightScalar),\n hit.hitNormal as Vector3.Vector3\n );\n });\n }\n }\n\n private async performInteraction(fn: CameraTransform<Camera>): Promise<void> {\n await this.beginInteraction();\n await this.api?.transformCamera(fn, this.renderConfiguration());\n await this.endInteraction();\n }\n\n private async getWorldPointWithFallback(\n point: Point.Point\n ): Promise<Vector3.Vector3 | undefined> {\n const worldPoint = await this.api?.getWorldPointFromViewport(point);\n\n if (worldPoint == null) {\n const hits = await this.api?.hitItems(point);\n const hit = hits != null ? hits[0] : undefined;\n\n return hit?.hitPoint != null\n ? (hit.hitPoint as Vector3.Vector3)\n : worldPoint;\n }\n return worldPoint;\n }\n\n private handleEnabledChange(enabled: boolean): void {\n if (enabled) {\n this.enable();\n } else {\n this.disable();\n }\n }\n\n private handleTeleportModeChange(mode?: ViewerTeleportMode): void {\n this.cursorDisposable?.dispose();\n\n if (mode != null) {\n this.cursorDisposable = this.api?.addCursor('crosshair');\n }\n }\n\n private shortestLength(boundingBox: BoundingBox.BoundingBox): number {\n return Math.min(...Vector3.toArray(BoundingBox.lengths(boundingBox)));\n }\n\n private renderConfiguration(): CameraRenderOptions {\n return this.animationConfiguration != null\n ? { animation: { milliseconds: this.animationConfiguration.durationMs } }\n : {};\n }\n}\n",":host {\n position: absolute;\n top: 0;\n bottom: 0;\n left: 0;\n right: 0;\n pointer-events: none;\n}\n","import {\n Component,\n Event,\n EventEmitter,\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n h,\n Host,\n JSX,\n Prop,\n Watch,\n} from '@stencil/core';\nimport { Disposable } from '@vertexvis/utils';\n\nimport { TeleportInteractionHandler } from '../../lib/teleportation/interactions';\nimport { WalkModeController } from '../../lib/walk-mode/controller';\nimport { ViewerTeleportMode, WalkModeModel } from '../../lib/walk-mode/model';\n\ninterface StateMap {\n shouldClearDepthBuffers?: boolean;\n}\n\n/**\n * The `<vertex-viewer-teleport-tool>` allows for click-based \"teleportation\"\n * around a model, which is particularly useful for walking through a model.\n * This tool is automatically included as part of the <vertex-viewer-walk-mode-tool>.\n */\n@Component({\n tag: 'vertex-viewer-teleport-tool',\n styleUrl: 'viewer-teleport-tool.css',\n shadow: true,\n})\nexport class ViewerTeleportTool {\n /**\n * The viewer that this component is bound to. This is automatically assigned\n * if added to the light-dom of a parent viewer element.\n */\n @Prop()\n public viewer?: HTMLVertexViewerElement;\n\n /**\n * The type of teleportation to perform when clicking.\n *\n * `teleport` - the camera's `position` is moved to the location of the hit result\n * constrained by the plane represented by the camera's current `position` and `up`\n * vectors.\n *\n * `teleport-and-align` - the camera's `position`, `lookAt`, and `up` vectors are updated\n * to align to the plane represented by the hit result's position and normal.\n *\n * `teleport-toward` - the camera's `position` is moved a fixed distance toward the location of the\n * hit result constrained by the plane represented by the camera's current `position` and `up`\n * vectors.\n *\n * `undefined` - no teleportation will occur when clicking.\n *\n * Defaults to `undefined`.\n */\n @Prop({ mutable: true })\n public mode?: ViewerTeleportMode;\n\n /**\n * Indicates whether animations will be used when performing camera\n * operations. Defaults to `false`.\n */\n @Prop()\n public animationsDisabled = false;\n\n /**\n * The duration of animations, in milliseconds. Defaults to `500`.\n */\n @Prop()\n public animationMs?: number = 500;\n\n @Prop({ mutable: true })\n public controller?: WalkModeController;\n\n @Prop({ mutable: true })\n public model: WalkModeModel = new WalkModeModel();\n\n /**\n * Event emitted when the `WalkModeController` associated with this tool changes.\n */\n @Event()\n public controllerChanged!: EventEmitter<WalkModeController>;\n\n private interactionHandlerDisposable?: Disposable;\n private interactionHandler?: TeleportInteractionHandler;\n\n private stateMap: StateMap = {};\n\n /**\n * @ignore\n */\n protected componentWillLoad(): void {\n this.setupController();\n this.setupInteractionHandler();\n this.setDepthBuffers();\n }\n\n /**\n * @ignore\n */\n protected connectedCallback(): void {\n this.setupInteractionHandler();\n this.setDepthBuffers();\n }\n\n /**\n * @ignore\n */\n protected disconnectedCallback(): void {\n this.clearInteractionHandler();\n this.resetDepthBuffers();\n }\n\n /**\n * @ignore\n */\n @Watch('mode')\n protected handleModeChange(): void {\n this.controller?.setTeleportMode(this.mode);\n\n if (this.mode != null) {\n this.setDepthBuffers();\n } else {\n this.resetDepthBuffers();\n }\n }\n\n /**\n * @ignore\n */\n @Watch('viewer')\n protected handleViewerChanged(): void {\n this.clearInteractionHandler();\n this.setupInteractionHandler();\n this.setDepthBuffers();\n }\n\n /**\n * @ignore\n */\n @Watch('animationMs')\n protected handleAnimationMsChanged(): void {\n if (this.animationMs != null) {\n this.interactionHandler?.setAnimations({ durationMs: this.animationMs });\n }\n }\n\n /**\n * @ignore\n */\n @Watch('animationsDisabled')\n protected handleAnimationsDisabledChanged(): void {\n if (this.animationsDisabled) {\n this.interactionHandler?.setAnimations(undefined);\n } else if (this.animationMs != null) {\n this.interactionHandler?.setAnimations({ durationMs: this.animationMs });\n }\n }\n\n /**\n * @ignore\n */\n @Watch('controller')\n protected handleControllerChanged(): void {\n this.setupInteractionHandler();\n this.setupController();\n this.controllerChanged.emit(this.controller);\n }\n\n @Watch('model')\n protected handleModelChanged(): void {\n this.setupController();\n this.clearInteractionHandler();\n this.setupInteractionHandler();\n }\n\n protected render(): JSX.Element {\n return <Host></Host>;\n }\n\n private setupController(): void {\n if (this.controller == null) {\n this.controller = new WalkModeController(this.model);\n this.controller.setTeleportMode(this.mode);\n this.controllerChanged.emit(this.controller);\n } else {\n this.controller.setTeleportMode(this.mode);\n this.controller.updateModel(this.model);\n }\n }\n\n private setDepthBuffers(): void {\n if (\n this.mode != null &&\n this.viewer != null &&\n this.viewer.depthBuffers == null\n ) {\n this.stateMap.shouldClearDepthBuffers = true;\n this.viewer.depthBuffers = 'final';\n }\n }\n\n private resetDepthBuffers(): void {\n if (this.stateMap.shouldClearDepthBuffers && this.viewer != null) {\n this.viewer.depthBuffers = undefined;\n this.stateMap.shouldClearDepthBuffers = undefined;\n }\n }\n\n private clearInteractionHandler(): void {\n this.interactionHandlerDisposable?.dispose();\n this.interactionHandlerDisposable = undefined;\n this.interactionHandler?.dispose();\n this.interactionHandler = undefined;\n }\n\n private async setupInteractionHandler(): Promise<void> {\n if (this.interactionHandler == null) {\n this.interactionHandler = new TeleportInteractionHandler(\n this.model,\n !this.animationsDisabled && this.animationMs != null\n ? { durationMs: this.animationMs }\n : undefined\n );\n\n this.interactionHandlerDisposable =\n await this.viewer?.registerInteractionHandler(this.interactionHandler);\n }\n }\n}\n"],"names":["point","Point","boundingBox","Vector3","BoundingBox","Plane","Ray"],"mappings":"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"}
|
|
@@ -12,13 +12,13 @@ import { p as paging_pbExports } from './representation_pb-g4f0WC4k.js';
|
|
|
12
12
|
import { s as scene_view_api_pbExports, r as requireField_mask_pb } from './wrappers_pb-aFAwKqIf.js';
|
|
13
13
|
import { r as requestUnary, c as createMetadata, a as requestPaged } from './grpc-CZAYqbTu.js';
|
|
14
14
|
import { h as fromPbStencilBufferOrThrow, i as decodePng, j as DepthBuffer, k as fromPbUuid2l, l as fromPbTimestamp, m as fromPbStringValue, n as fromPbVector3f, o as fromPbRGBAi, p as fromPbVector2d, u as updateLookAtRelativeToBoundingBoxCenter, t as toProtobuf, q as fromPbRGBi, r as mapCursor, s as fromPbInstant, v as fromPbMatrix4f, w as fromPbBoolValue, x as fromPbBoundingBox3f, y as toPbStreamAttributes, z as toPbRGBi, B as toPbCameraType, C as fromPbFrameOrThrow, E as fromPbStartStreamResponseOrThrow, G as fromPbReconnectResponseOrThrow, H as fromPbSyncTimeResponseOrThrow, I as fromPbRefreshTokenResponseOrThrow, J as copySummaryIfInvalid, K as toPbCameraTypeOrThrow$1, L as toOrthographic, M as toPerspective } from './streamAttributes-Cp8PEH9A.js';
|
|
15
|
-
import { t as toUuid2l, m as defaultColor, n as fromUrn, j as SynchronizedClock, M as ModelViewController, k as PmiController, S as Scene } from './queries-
|
|
15
|
+
import { t as toUuid2l, m as defaultColor, n as fromUrn, j as SynchronizedClock, M as ModelViewController, k as PmiController, S as Scene } from './queries-DEzCmbTD.js';
|
|
16
16
|
import { p as parseAndValidateConfig } from './config-lglER3mU.js';
|
|
17
17
|
import { C as CursorManager } from './cursors-BbBDEutb.js';
|
|
18
18
|
import { g as getMouseClientPosition, c as cssCursor } from './dom-B3m2VjbN.js';
|
|
19
19
|
import { E as EntityType } from './entities-BAhfr1Nx.js';
|
|
20
20
|
import { V as Viewport } from './viewport-C8WQZxvx.js';
|
|
21
|
-
import { B as BaseInteractionHandler, M as MultiElementInteractionHandler } from './multiElementInteractionHandler-
|
|
21
|
+
import { B as BaseInteractionHandler, M as MultiElementInteractionHandler } from './multiElementInteractionHandler-DwjL-r55.js';
|
|
22
22
|
import { w as writeDOM } from './stencil-BV-7pO4q.js';
|
|
23
23
|
import './wrappers_pb-Xw_x1jYm.js';
|
|
24
24
|
import './_commonjsHelpers-CG9AChtV.js';
|
|
@@ -655,8 +655,9 @@ class InteractionApi {
|
|
|
655
655
|
* performing any additional interaction operations. Use `endInteraction()` to
|
|
656
656
|
* mark the end of an interaction.
|
|
657
657
|
*/
|
|
658
|
-
async beginInteraction() {
|
|
658
|
+
async beginInteraction(renderOptions = {}) {
|
|
659
659
|
if (!this.isInteracting()) {
|
|
660
|
+
this.activeRenderOptions = renderOptions;
|
|
660
661
|
this.interactionStartedEmitter.emit();
|
|
661
662
|
this.sceneLoadingPromise = this.getScene();
|
|
662
663
|
this.currentCamera = (await this.sceneLoadingPromise).camera();
|
|
@@ -664,11 +665,18 @@ class InteractionApi {
|
|
|
664
665
|
await this.stream.beginInteraction();
|
|
665
666
|
}
|
|
666
667
|
}
|
|
667
|
-
|
|
668
|
-
|
|
669
|
-
|
|
670
|
-
|
|
671
|
-
|
|
668
|
+
/**
|
|
669
|
+
* Invokes a function to transform the scene's camera and request a new image
|
|
670
|
+
* for the updated scene.
|
|
671
|
+
*
|
|
672
|
+
* @param t A function to transform the camera. Function will be passed the
|
|
673
|
+
* camera and scene viewport and is expected to return an updated camera.
|
|
674
|
+
*/
|
|
675
|
+
async transformCamera(t, renderOptions) {
|
|
676
|
+
var _a, _b;
|
|
677
|
+
if (renderOptions === void 0) {
|
|
678
|
+
renderOptions = (_a = this.activeRenderOptions) !== null && _a !== void 0 ? _a : {};
|
|
679
|
+
}
|
|
672
680
|
if (this.isInteracting()) {
|
|
673
681
|
const scene = await this.getScene();
|
|
674
682
|
const viewport = this.getViewport();
|
|
@@ -685,7 +693,7 @@ class InteractionApi {
|
|
|
685
693
|
depthBuffer,
|
|
686
694
|
})
|
|
687
695
|
: undefined;
|
|
688
|
-
await ((
|
|
696
|
+
await ((_b = this.currentCamera) === null || _b === void 0 ? void 0 : _b.render(renderOptions));
|
|
689
697
|
}
|
|
690
698
|
}
|
|
691
699
|
async twistCamera(...args) {
|
|
@@ -758,7 +766,7 @@ class InteractionApi {
|
|
|
758
766
|
* new image for the updated scene.
|
|
759
767
|
*/
|
|
760
768
|
async viewAll() {
|
|
761
|
-
await (await this.getScene()).camera().viewAll().render();
|
|
769
|
+
await (await this.getScene()).camera().viewAll().render({});
|
|
762
770
|
}
|
|
763
771
|
/**
|
|
764
772
|
* Performs a rotate operation of the scene around the camera's look at point,
|
|
@@ -927,6 +935,7 @@ class InteractionApi {
|
|
|
927
935
|
this.interactionFinishedEmitter.emit();
|
|
928
936
|
await this.stream.endInteraction();
|
|
929
937
|
}
|
|
938
|
+
this.activeRenderOptions = undefined;
|
|
930
939
|
}
|
|
931
940
|
/**
|
|
932
941
|
* resets the last recorded angle for a twist op
|
|
@@ -1476,7 +1485,7 @@ class ZoomInteraction extends MouseInteraction {
|
|
|
1476
1485
|
super();
|
|
1477
1486
|
this.interactionConfigProvider = interactionConfigProvider;
|
|
1478
1487
|
this.type = 'zoom';
|
|
1479
|
-
this.
|
|
1488
|
+
this.isTransforming = false;
|
|
1480
1489
|
}
|
|
1481
1490
|
async beginDrag(event, canvasPosition, api, element) {
|
|
1482
1491
|
if (this.currentPosition == null) {
|
|
@@ -1500,21 +1509,21 @@ class ZoomInteraction extends MouseInteraction {
|
|
|
1500
1509
|
endDrag(event, api) {
|
|
1501
1510
|
super.endDrag(event, api);
|
|
1502
1511
|
this.stopInteractionTimer();
|
|
1503
|
-
this.
|
|
1512
|
+
this.isTransforming = false;
|
|
1504
1513
|
this.startPt = undefined;
|
|
1505
1514
|
}
|
|
1506
1515
|
async zoom(delta, api, extraDelayMs) {
|
|
1507
|
-
await this.
|
|
1516
|
+
await this.runWheelZoomInteraction(api, () => api.zoomCamera(this.getDirectionalDelta(delta)), extraDelayMs);
|
|
1508
1517
|
}
|
|
1509
1518
|
async zoomToPoint(pt, delta, api, extraDelayMs) {
|
|
1510
|
-
await this.
|
|
1519
|
+
await this.runWheelZoomInteraction(api, () => api.zoomCameraToPoint(pt, this.getDirectionalDelta(delta)), extraDelayMs);
|
|
1511
1520
|
}
|
|
1512
1521
|
async beginInteraction(api) {
|
|
1513
|
-
this.
|
|
1522
|
+
this.isTransforming = true;
|
|
1514
1523
|
await api.beginInteraction();
|
|
1515
1524
|
}
|
|
1516
1525
|
async endInteraction(api) {
|
|
1517
|
-
this.
|
|
1526
|
+
this.isTransforming = false;
|
|
1518
1527
|
await api.endInteraction();
|
|
1519
1528
|
}
|
|
1520
1529
|
resetInteractionTimer(api, extraDelayMs) {
|
|
@@ -1547,8 +1556,8 @@ class ZoomInteraction extends MouseInteraction {
|
|
|
1547
1556
|
this.interactionTimer = undefined;
|
|
1548
1557
|
}
|
|
1549
1558
|
}
|
|
1550
|
-
async
|
|
1551
|
-
if (!this.
|
|
1559
|
+
async runWheelZoomInteraction(api, f, extraDelayMs) {
|
|
1560
|
+
if (!this.isTransforming) {
|
|
1552
1561
|
await this.beginInteraction(api);
|
|
1553
1562
|
}
|
|
1554
1563
|
this.resetInteractionTimer(api, extraDelayMs);
|